计算机工程
計算機工程
계산궤공정
COMPUTER ENGINEERING
2013年
12期
35-39,53
,共6页
多核处理器%数据包转发%零拷贝%包缓冲区管理%并发无锁队列
多覈處理器%數據包轉髮%零拷貝%包緩遲區管理%併髮無鎖隊列
다핵처리기%수거포전발%령고패%포완충구관리%병발무쇄대렬
multi-core processor%packet forwarding%zero-copy%packet buffer management%concurrent lock-free queue
为突破高速软件路由器转发路径中存储访问方面的性能瓶颈,分析PacketShader和Netmap 2个软件路由器的转发结构和存在的问题,设计一个基于多核处理器的零拷贝包转发框架MapRouter。采用零拷贝技术去除包转发路径中的包拷贝,并借助并发无锁队列设计一个适合多端口间数据包零拷贝转发的包缓冲区管理方案。将高度优化的包 I/O 驱动、包缓冲区回收机制、无锁队列实现等一系列优化措施相结合,以提高转发速度。实验结果表明,对于不包括IP路由表查找的最小转发,MapRouter在模拟的两端口路由器上可以达到10 Gb/s的转发速度,与PacketShader和Netmap相比,其转发速度更高、CPU利用率更低。
為突破高速軟件路由器轉髮路徑中存儲訪問方麵的性能瓶頸,分析PacketShader和Netmap 2箇軟件路由器的轉髮結構和存在的問題,設計一箇基于多覈處理器的零拷貝包轉髮框架MapRouter。採用零拷貝技術去除包轉髮路徑中的包拷貝,併藉助併髮無鎖隊列設計一箇適閤多耑口間數據包零拷貝轉髮的包緩遲區管理方案。將高度優化的包 I/O 驅動、包緩遲區迴收機製、無鎖隊列實現等一繫列優化措施相結閤,以提高轉髮速度。實驗結果錶明,對于不包括IP路由錶查找的最小轉髮,MapRouter在模擬的兩耑口路由器上可以達到10 Gb/s的轉髮速度,與PacketShader和Netmap相比,其轉髮速度更高、CPU利用率更低。
위돌파고속연건로유기전발로경중존저방문방면적성능병경,분석PacketShader화Netmap 2개연건로유기적전발결구화존재적문제,설계일개기우다핵처리기적령고패포전발광가MapRouter。채용령고패기술거제포전발로경중적포고패,병차조병발무쇄대렬설계일개괄합다단구간수거포령고패전발적포완충구관리방안。장고도우화적포 I/O 구동、포완충구회수궤제、무쇄대렬실현등일계렬우화조시상결합,이제고전발속도。실험결과표명,대우불포괄IP로유표사조적최소전발,MapRouter재모의적량단구로유기상가이체도10 Gb/s적전발속도,여PacketShader화Netmap상비,기전발속도경고、CPU이용솔경저。
To work out performance bottleneck relating to memory accessing in forwarding path of high-speed software router, after introducing the forwarding frameworks of two software routers--PacketShader and Netmap, and analyzing their problems, this paper presents MapRouter, a zero-copy forwarding framework based on multi-core processors. MapRouter eliminates packet copying using zero-copy technology, and solves the problem of packet buffer management among multiple ports based on currently lock-free First In First Out(FIFO). By exploiting a series of optimization techniques including highly-optimized packet I/O driver, efficient packet buffer recycling mechanism, and high-efficient lock-free FIFO queue implementation, MapRouter achieves 10 Gb/s minimal forwarding(without IP address lookup) throughput on a two-port software router, which is higher than that of PacketShader and Netmap, meanwhile it has much lower CPU utilization ratio.