论文部分内容阅读
随着互联网业务需求跨越式增长,移动互联市场规模极速扩大,云概念在各个行业兴起,当前网络数据中心的应用和发展有了更加广阔的前景,也促使机群规模不停的扩大。同时,SDN(Software Defined Network,软件定义网络)、NFV(Network Functions Virtualization,网络功能虚拟化)等新兴技术投入市场,通过软件定义网络的方式来进行技术创新成为潮流,但也给设备的路由技术带来了表项膨胀的问题,业内也给出了一些如何快速地对网络数据进行查表转发处理的方案。 存储大规模的表项通常使用TCAM(Ternary Content Addressable Memory,三态内容寻址存储器)来实现,但TCAM的价格高昂且能耗很高,其速度与内存存取操作不匹配,表项更新很慢,扩展性不佳。传统的软件查表面临中断、数据复制、算法性能等问题带来的开销,不能适应高速处理数据的场景。 本文的主要工作有以下几点:1)通过对Linux内核路由查表和基于TCAM的硬件查表的研究,分析了它们的不足,据此提出了本文的设计架构,并对该架构的各个模块作了简要介绍,该架构是一种结合硬件高速性和软件灵活性的高性能网络数据包查表与转发方案,同时利用了两者的优势。与传统的网络数据处理方式不同,本框架中的硬件模块在多数情况下向上只传递包头描述信息,避免了PCIe带宽瓶颈问题和对内存的高占用率。由于处理更少的数据信息,所以速度更快。2)简要介绍了设备驱动,然后分析比较了Linux传统内核驱动和UIO(Userspace I/O,用户空间I/O)驱动,并实现了自主FPGA板卡的UIO驱动,包括硬件事务处理、内核模块、用户空间模块的设计与实现。3)实现了Cuckoo哈希表来完成数据包的插入与查找,并基于数据面开发套件进行了批处理、预取、迁移路线等优化。然后,实现了对数据包的转发处理模块。4)对本文所设计框架进行了测试,验证了本文所设计的UIO驱动和数据包查表转发方案,主要测试内容为基本功能和利用率、插入时间、吞吐率等性能,并和传统Linux系统路由查表转发进行了比较。