论文部分内容阅读
路由器是现有IP网络中最重要的网络设备之一,承担着网络互连、数据转发等重要功能。随着计算机硬件系统的发展,多核处理器成为了发展的主流。基于多核通用平台的路由器系统在面对复杂多变的网络环境时相比传统的使用专用软硬件系统的路由器在可扩展性等方面具有更大的优势。但目前针对多核系统的软件设计存在许多制约因素。Intel公司推出的DPDK[1]被广泛用于进行数据包转发功能的开发,它实现了驱动管理等底层优化,但对于协议解析、路由查找等没有做过多支持。同时,随着IPv4地址的耗竭,IPv6的推广速度大大提升。由IPv4到IPv6的过渡,对于路由器来说,不仅是部署新的协议,对于路由查找还带来了性能上的挑战。本文设计了一个基于通用多核系统的多核包转发系统,对于多核协同工作模式进行了分析研究,对于其中的两种模式设计了实现方案,然后在Linux上基于DPDK实现了系统。基于通用平台的实现使得该系统在应用时可以更加自主的定义硬件的配置,在性能与成本之间提供更多的权衡选择。两种多核协同工作模式也为不同负载水平提供了更多选择。实验中,本系统数据包转发功能能够正常工作,其性能可以支撑目前主流的千兆网卡满负载工作而不发生丢包。同时,工作中发现DPDK自带的LPM6库采用的路由查找算法DIR-24-8存在性能问题,本文设计并实现了一种针对IPv6的路由查找算法。通过对现有IPv6路由表的分析,提出了一种结合哈希的分段路由查找算法,在路由表前缀密集的部分采用分段查找提高性能,在稀疏的部分采用哈希查找来降低内存占用,在提高查找性能与降低内存消耗之间给出了两种权衡方案。实验表明算法的平均查找访存次数在2~3次之间,低于DIR-24-8的平均查找访存次数。并且内存占用均在目前主流配置允许范围之内,达到了设计预期。