论文部分内容阅读
SDN和NFV是近几年来网络世界炙手可热的“新星”,虽然提出的背景和应用场景不完全相同,但是两者在实际应用过程中需要的转发表表项都变得非常巨大。此时,海量表项的存储、处理也就不再适合全部由硬件部分来实现。同时,不断提高的网络速率对网络设备处理时延提出了更高的要求。针对上述情况,我们结合软件和硬件各自的优势,提出了一种高速网络中硬件提取软件查找的处理方案。该方案从下到上整体上分为三部分:FPGA逻辑开发硬件部分,低延时数据传递软件部分,数据处理软件部分。需要特别说明的是,本方案中一个很重要的改进就是:硬件逻辑开发部分和数据处理软件部分之间传递的绝大部分数据不是完整的数据包,而是数据包中一些关键的数据。这样做的好处是能够节省内存和PCI-E带宽。软件实现查找与传统交换机中硬件实现查找相比,经历更多的操作、消耗更多的时间。要在高速网络中使用这种数据处理方案,软件设计时最根本的要求就是尽最大可能减少数据收发、处理过程中的时间消耗。本文的主要工作是设计和实现了低延时数据传递软件部分,具体的说分为三部分:第一、对比传统Linux驱动程序设计和Linux用户空间I/0技术两种驱动设计方式,针对实验室特定的FPGA逻辑开发板,设计了一种无中断、零拷贝、轮询的用户空间驱动。这种方式的驱动,可以使得数据的收发过程绕过Linux内核,数据直接在Linux用户空间和硬件逻辑开发部分之间传递,从多个方面减少数据接收和发送过程中的时间消耗。第二、参考了Intel DPDK框架,对底层具体的硬件环境进行了抽象,实现了一个环境抽象层。该环境抽象层可以为上层的库和数据处理软件提供一个低开销、紧凑的数据处理环境。第三、编写具有转发功能的数据处理软件、和硬件逻辑开发模块进行联合调试和测试。测试内容主要包括低延时数据传递软件的传递时延和整个数据处理方案的吞吐率。出于对比和测试的需要,本文还实现了一个简单的网络设备驱动。