首页 / 专利库 / 软件 / 软件 / 一种基于软件查表的数据包转发方法

一种基于软件查表的数据包转发方法

阅读:765发布:2021-06-04

专利汇可以提供一种基于软件查表的数据包转发方法专利检索,专利查询,专利分析的服务。并且本 发明 涉及一种基于 软件 查表的数据包转发方法。该方法基于Intel DPDK,采用 硬件 提取数据包头、数据快速传递软件高效批量地传递数据和软件灵活查表的方式实现交换机中的数据包转发功能。查表 算法 通过使用布谷 鸟 哈希表和开放地址法结合,实现能够存储足够多的表项以及提高查表速度。使得网络设备同时具备如下特性:多端口线速转发、灵活的大容量查表、低成本。组合了硬件的高速组包能 力 、数据快速传递软件的大批量数据包处理转发能力以及软件的高速灵活查找能力。相对于传统的硬件交换机具有更好的可扩展性和可编程特性;而相对于传统的软件交换机,可以提供更大的吞吐率和更小的延时。,下面是一种基于软件查表的数据包转发方法专利的具体信息内容。

1.一种基于软件查表的数据包转发方法,基于Intel DPDK,所用的网络交换机的输入接口一路输出接PCIE接口模块,一路输出接输入缓存模块,PCIE接口模块接与网络交换机的CPU连接的内存,PCIE接口模块一路输出接调度模块,调度模块接输入缓存模块,输入缓存模块接交换矩阵,交换矩阵接输出接口模块,具体数据包转发方法包括以下步骤:
步骤①:网络设备输入端口一直处于监测输入端口是否有数据包到来的状态,当正确检测到有数据包到来时,输入端口根据数据包的类型提取包头关键信息组成数据包描述符并上传到PCIE接口模块,同时将完整的数据包发送至输入缓存模块进行暂存,等待后续处理;
步骤②:PCIE接口模块将数据包描述符发送到PCIE总线上;利用数据快速传递软件中的UIO内核驱动内核模块和环境抽象层模块、UIO驱动用户空间模块批量地写入到与CPU相连的内存中去;
步骤③:数据包描述符查表软件进行查表,首先用户空间中的数据包描述符查表软件从内存中读取需要匹配的数据包描述符,提取需要匹配的字段,然后到布谷哈希表中去查找该匹配的字段,布谷鸟哈希表为每个待匹配的字段提供了两个可以存储的哈希桶,到这两个哈希桶中去查找含有待匹配的字段的表项;最后根据查找到的结果生成数据包处理描述符,该描述符格式包括操作指示、缓存地址、数据长度、输入端口和输出端口五个部分,数据包处理描述符决定了数据包的输出动作:输出到某一个端口、丢弃或上传至软件进行进一步分析;
步骤④:数据包描述符查表软件将数据包处理描述符存放到内存中;
步骤⑤:数据快速传递软件将内存中相应的数据包处理描述符发送至PCIE接口模块;
步骤⑥:PCIE接口模块将数据包处理描述符发送至调度模块;
步骤⑦:调度模块根据数据包处理描述符中的信息向对应的输入缓存模块发出相应的操作请求
步骤⑧:数据缓存模块按照数据包处理描述符的规定,将数据包做出:1)若操作指示为Forward ALL,发送到输出端口;或者2)若操作指示为Drop,被丢弃;或者3)若操作指示为Forward CONTROLLER,经过PCIE进入CPU内存,等待进一步分析;若操作类型为1),则进行步骤⑨,否则在本步骤中止;
步骤⑨:数据包经过交换矩阵到达对应的输出端口后发送到链路上。
2.如权利要求1所述基于软件查表的数据包转发方法,其特征在于:所述步骤③中需要匹配的字段为目的IP地址。
3.如权利要求1所述基于软件查表的数据包转发方法,其特征在于:
所述步骤①中:输入接口模块在接收到数据包之后,首先对包头进行提取组成数据包描述符,并上传到PCIE接口模块的缓存中等待后续处理,在本步骤数据包处理过程的最后,形成操作指示-缓存地址-数据长度-输入端口-输出端口的描述符,其中的操作指示暂时不填写,留给查表软件完成查表操作后再进行填写,操作指示项用于指示硬件部分对数据包的处理方式,包括以下三种:1)转发至输出端口;2)丢弃;3)上传至软件进行进一步分析;描述符中的缓存地址表示硬件部分缓存数据包的存储器地址,用于在对数据包进行操作时从缓存中提取;数据长度字段存放着数据的长度信息,同样用于对数据包的提取操作;输入端口表示数据包进入交换机经过的端口,即输入接口模块1~N中的一个;输出端口表示数据包转发出交换机需要经过的端口,即1~N个输出接口模块中的一个;在处理数据包的同时,将完整的数据包发送至输入缓存模块,该模块中的存储器,可以将数据包缓存在该部分,等待后续需要对该数据包进行处理时再从该模块的缓存中提取出然后进行处理,其中N≥2。
4.如权利要求1-3中任一所述基于软件查表的数据包转发方法,其特征在于:
所述步骤③中:数据包描述符查表软件采用轮询的方式不停的读取硬件传送到内存中的数据包描述符,提取需要匹配的字段,即关键字,然后到转发表中相应的哈希桶去查找是否有该关键字;如果有该关键字,则根据查找结果,对数据包状态描述信息中的操作指示以及输出端口字段进行填充;操作指示字段指示硬件对数据包执行动作:转发或丢弃,输出端口表示转发出去的端口;如果没有该关键字,则默认丢弃处理,将操作指示字段填充成丢弃状态;填充完之后,生成数据包处理描述符。

说明书全文

一种基于软件查表的数据包转发方法

技术领域

[0001] 本发明涉及网络设备,具体涉及到网络设备的一种基于软件查表的数据包转发方法。

背景技术

[0002] 数据中心网络交换机是数据中心网络中对数据包进行转发的硬件设备。其他的数据中心中的网络设备,如终端主机或者存储系统,与数据中心网络交换机相耦合时,可以通过数据中心网络交换机进行硬件设备之间的数据传输。与交换机相耦合的硬件设备向与该交换机相耦合的另一个硬件设备发送数据时,将进行数据发送的设备称为源设备,将数据中心网络交换机称为中间设备,将进行数据接收的设备称为目标设备。源设备通过数据中心网络交换机向目标设备发送数据时,数据中心网络交换机需要将数据进行缓存,并通过查表操作确定该数据应当如何发送至目标设备,之后按照一定的方式将数据转发到目标设备。
[0003] 数据中心网络交换机使用查表操作来确保数据的转发操作正确无误。现有的商用交换机的流表大多使用TCAM来进行存储,而TACM的高功耗和高成本的使得这类交换机的流表规模无法做到很大。例如,盛科公司出产的的CTC6048型号芯片最大MAC流表容量大小仅为512K[1],这是无法达到未来数据中心交换机的需求的。
[0004] 与硬件交换机不同,软件交换机可以充分利用服务器的CPU资源,并以成本相对较低而容量相对较大的DRAM存储器来存放流表,同时还可以将复杂的查表算法交由软件而不是硬件去实现。其流表中的表项数量可以达到百万个甚至十亿个,随着未来数据中心业务流量增加,使用软件实现交换机的思路也非常符合其对网络交换机提出的需求。
[0005] 而在软件部分的数据处理方式上,Intel公司在2013年发布了一款名为DPDK的数据平面开发套件[2],其具有零拷贝、无中断以及批量处理等优点,非常适合网络数据包分析、处理等操作,对于数据包的转发、多核操作有一定的性能提升。有研究人员如Dong Zhou等人就提出了一种名为CuckooSwitch的软件交换机设计方案[3],但是这类软件交换机需要将数据包通过总线全部送至DRAM存储器,再加上软件查表操作的不确定性,这一操作存在着比较大的延迟。同时,当交换机需要进行处理的数据量变得非常大的时候,软硬件之间的数据通路(PCIE总线)会成为瓶颈,严重影响交换机的吞吐率。
[0006] 有一些研究人员已经注意到了软件交换机的这一缺陷,如国防科技大学的杨安就提出硬件部分只提取报文头部发送至软件部分进行查表,之后再指示硬件部分对数据进行[4]进一步操作的思路 ,但是缺点在于:1)其设计方案仅支持OpenFlow交换机,不具有通用性;2)查表算法不适合大规模的表项查找;3)查表是在自己专用的CPU上进行实现,无法使用商用的廉价的CPU平台,例如性价比很高的Intel平台。
[0007] 参考文献:
[0008] [1]盛科,CTC6048SDN芯片[EB/OL].http://www.centecnetworks.com/cn/ProductList.as p?ID=152,February 24,2011
[0009] [2]Inte.Data Plane Development Kit[EB/OL].http://www.intel.com/content/www/us/en/intelligent-systems/inteltechnology/packet-processing-is-enhanced-with-softwarefrom-intel-dpdk.ht ml,2013.
[0010] [3]D.Zhou,B.Fan,H.Lim,et al.Scalable,high performance ethernet forwarding with cuckooswitch[C].Proceedings of the ninth ACM conference on Emerging networking experiments and technologies.ACM,2013:97-108[0011] [4]杨安.基于通用多核处理器的Openflow规则转发与控制机制[D].长沙:国防科学技术大学,2012,37-59
[0012] 注释:
[0013] 1.TCAM:Ternary Content Addressable Memory,三元可存执存储器,通过0(表示低电平)、1(表示高电平)和x(表示中间电平)来表示数据。
[0014] 2.DRAM:Dynamic Random Access Memory,动态随机存储器。
[0015] 3.UIO:Userspace I/O,运行在用户空间中的I/O技术。
[0016] 4.MAC:Media Access Control,介质访问控制。
[0017] 5.MPLS:Muti-Protocol Label Switching,多协议标签交换。
[0018] 6.TCP/IP:Transmission Control Protocol/Internet Protocol,传输控制协议/因特网互联协议。

发明内容

[0019] 针对上诉存在问题或不足,本发明提供了一种综合利用Intel DPDK并且能克服软件交换机瓶颈的方案,所用的网络交换机的输入接口一路输出接PCIE接口模块,一路输出接输入缓存模块,PCIE接口模块接与网络交换机的CPU连接的内存,PCIE接口模块一路输出接调度模块,调度模块接输入缓存模块,输入缓存模块接交换矩阵,交换矩阵接输出接口模块。组合了硬件的高速组包能、数据快速传递软件的大批量数据包处理转发能力以及软件的高速灵活查找能力。
[0020] 一种基于软件查表的数据包转发方法,包括以下具体步骤:
[0021] 步骤①:网络设备输入端口一直处于监测输入端口是否有数据包到来的状态,当正确检测到有数据包到来时,输入端口根据数据包的类型提取包头关键信息组成数据包描述符并上传到PCIE接口模块,同时将完整的数据包发送至输入缓存模块进行暂存,等待后续处理;
[0022] 步骤②:PCIE接口模块通过数据快速传递软件将数据包描述符发送到CPU相连内存;
[0023] 步骤③:数据包描述符查表软件进行查表,首先用户空间中的数据包描述符查表软件从内存中读取需要匹配的数据包描述符,提取需要匹配的字段,然后到布谷哈希表中去查找该匹配的字段,布谷鸟哈希表为每个待匹配的字段提供了两个可以存储的哈希桶,到这两个哈希桶中去查找含有待匹配的字段的表项;最后根据查找到的结果生成数据包处理描述符,该描述符格式包括操作指示、缓存地址、数据长度、输入端口和输出端口五个部分,数据包处理描述符决定了数据包的输出动作:输出到某一个端口、丢弃或上传至软件进行进一步分析;
[0024] 步骤④:数据包描述符查表软件将数据包处理描述符存放到内存中;
[0025] 步骤⑤:数据快速传递软件将内存中相应的数据包处理描述符发送至PCIE接口模块;
[0026] 步骤⑥:PCIE接口模块将数据包处理描述符发送至调度模块;
[0027] 步骤⑦:调度模块根据数据包处理描述符中的信息向对应的输入缓存模块发出相应的操作请求
[0028] 步骤⑧:数据缓存模块按照数据包处理描述符的规定,将数据包做出:1)若操作指示为Forward ALL,发送到输出端口;或者2)若操作指示为Drop,被丢弃;或者3)若操作指示为Forward CONTROLLER,经过PCIE进入CPU内存,等待进一步分析。若操作类型为1),则进行步骤⑨,否则在本步骤中止;
[0029] 步骤⑨:数据包经过交换矩阵到达对应的输出端口后发送到链路上。
[0030] 本发明组合了硬件的高速组包能力、数据快速传递软件的大批量数据包处理转发能力以及软件的高速灵活查找能力,采用硬件提取数据包头、数据快速传递软件高效批量地传递数据和软件灵活查表的方式实现交换机中的数据包转发功能,使得网络设备同时具备如下特性:多端口线速转发、灵活的大容量查表、低成本。
[0031] 相比于传统的硬件交换机,由于将占用资源非常大的查表部分交由软件实现,可以降低硬件成本,同时由于软件实现查表算法的灵活性,可以使交换机具有更好的可扩展性及可编程特性,更加有利于网络设计的创新。
[0032] 相比于传统的软件交换机,由于提取数据包头和交换调度功能在硬件部分实现,数据包转发处理时间更短,同时,由于只需将数据包中长度占比较小的包头组成数据包描述符写入内存供软件进行查表处理,而长度占比较大的数据净载荷部分存放在硬件内不需要发送至软件部分,这样可以有效减少PCIE的带宽利用率。在需要进行转发的数据量非常大的情况下可以破除PCIE带宽造成的瓶颈,以提供更大的吞吐率,同时,由于写入内存中的数据量大大减少,内存可以为查表操作提供更多的带宽资源,这样可以进一步减小转发延时。
[0033] 对于查表功能的实现,由于使用软件查表不具备硬件查表的高速性,因此应该尽可能减少数据在硬件部分和查表软件之间传递过程中消耗的时间,这就是数据快速传递软件实现的功能。数据快速传递软件包含两部分内容:UIO(用户空间I/O)和环境抽象层。UIO小部分功能在Linux内核中实现,绝大部分功能放在Linux用户空间实现,它为硬件和查表软件提供无中断、无内存复制、数据批量处理的数据传递功能。环境抽象层是对底层硬件的抽象,为查表软件提供了一个紧凑的数据处理环境。数据快速传递软件与硬件密切配合,可以实现对大批量数据包的转发性能的提升。
[0034] 对于查表算法,一是要能够存储足够多的表项,二是要提高查表速度。传统的哈希表存在这样一个问题,就是表的空间利用率和冲突是一对矛盾:当表的空间利用率比较高的时候,它的冲突的可能性就会越大。为了减小冲突的可能性,通常是将哈希表扩展为原来的两倍,但是这样就会导致哈希表的空间利用率变小。1)为了能够存储足够多的表项,这里我们使用布谷鸟哈希表。布谷鸟哈希表为每个关键字提供了两个可以存储的位置,动态的重定位哈希表中存在的关键字,为新插入的关键字腾出位置,因此表的空间利用率比较高;2)为了提高查表的速度,这里的冲突解决方式采用开放地址法,相比拉链法的哈希表,不容易造成cache miss,查找速度更快。
[0035] 综上所述,本发明具有以下技术效果:相对于传统的硬件交换机具有更好的可扩展性和可编程特性;而相对于传统的软件交换机,可以提供更大的吞吐率和更小的延时。附图说明
[0036] 图1是本发明的实现平台。
[0037] 图2是本发明使用的硬件平台结构。
[0038] 图3是本发明的总体架构示意图。
[0039] 图4是本发明的提取的包头关键信息示意图。
[0040] 图5是数据包处理描述符的结构示意图。
[0041] 图6是写入内存中的数据块的结构示意图。
[0042] 图7是包头查表的流程图
[0043] 图8是UIO内核空间模块流程图。
[0044] 图9是环境抽象层和UIO用户空间模块流程图。
[0045] 图10是交换矩阵示意图。

具体实施方式

[0046] 下面结合附图和具体的实施实例对本发明做详细的说明。
[0047] 为了更好的描述本实施实例,详细步骤描述如下:
[0048] 步骤①:网络设备输入端口一直处于监测输入端口是否有数据包到来的状态,当正确检测到有数据包到来时,输入端口根据数据包的类型提取包头关键信息组成数据包描述符并上传到PCIE接口模块,同时将完整的数据包发送至输入缓存模块进行暂存,等待后续处理;
[0049] 输入接口模块1~N(N≥2)如图3所示在接收到数据包之后,首先对包头进行提取组成数据包描述符,并上传到PCIE接口模块的缓存中等待后续处理,在本步骤数据包处理过程的最后,形成图5所示的描述符,其中的操作指示暂时不填写,留给查表软件完成查表操作后再进行填写,该部分用于指示硬件部分对数据包的处理方式,包括以下三种:1)若操作指示为Forward ALL,转发至输出端口;2)若操作指示为Drop,丢弃;3)若操作指示为Forward CONTROLLER,上传至软件进行进一步分析。描述符中的缓存地址表示硬件部分缓存数据包的存储器地址,用于在对数据包进行操作时从缓存中提取。数据长度字段存放着数据的长度信息,同样用于对数据包的提取操作。输入端口表示数据包进入交换机经过的端口,即图3中输入接口模块1~N中的一个。输出端口表示数据包转发出交换机需要经过的端口,即1~N中输出接口模块中的一个。在处理数据包的同时,将完整的数据包发送至输入缓存模块,该模块中的存储器将数据包缓存在该部分,等待后续需要对该数据包进行处理时再从该模块的缓存中提取出然后进行处理。
[0050] 步骤②:PCIE接口模块通过数据快速传递软件将数据包描述符发送到CPU相连内存;
[0051] PCIE接口模块在接收到一个数据包的包头以及该数据包状态描述信息(如图5所示)之后,将这两部分组成的数据块即数据包描述符,发送到PCIE总线上,最后利用数据快速传递软件中的UIO内核驱动内核模块(流程图如图8所示)和环境抽象层模块、UIO驱动用户空间模块(流程图如图9示)批量地写入到与CPU相连的内存中去,等待查表软件的后续处理,每一个数据包描述符都对应着一个数据块,该数据块存放在内存中的连续地址中。
[0052] 步骤③:查表流程如图7所示,用户空间中的数据包描述符查表软件通过数据快速传递软件从内存中读取相关的数据包描述符,提取需要匹配的字段,如目的IP地址,然后到布谷鸟哈希表中去查找该目的IP地址,布谷鸟哈希表为每个目的IP地址提供了两个可以存储的哈希桶,到这两个哈希桶中去查找含有该目的IP地址的表项,查找流程如图7所示,根据查找到的结果生成数据包处理描述符,该描述符格式如图5所示,数据包处理描述符决定了数据包的输出动作:输出到某一个端口或丢弃或上传至软件进行进一步分析;
[0053] 数据包描述符查表软件采用轮询的方式不停的读取硬件传送到内存中的数据包描述符,提取需要匹配的字段,即关键字,然后到转发表中相应的哈希桶去查找是否有该关键字。如果有该关键字,则根据查找结果,对数据包状态描述信息(如图5所示)中的操作指示以及输出端口字段进行填充。操作指示字段指示硬件对数据包执行的动作(转发、丢弃),输出端口表示转发出去的端口;如果没有该关键字,则默认丢弃处理,将操作指示字段填充成丢弃状态。填充完之后,生成数据包处理描述符。
[0054] 步骤④:数据包描述符查表软件将数据包处理描述符存放到内存中;
[0055] 为了提高效率,查表软件批量地将数据包处理描述符存放到内存。
[0056] 步骤⑤:数据快速传递软件将内存中相应的数据包处理描述符发送至PCIE接口模块;
[0057] 为了提高效率,数据包快速传递软件通过环境抽象层模块、UIO驱动用户空间模块(流程图如图9示)和UIO内核驱动内核模块(流程图如图8所示)批量地将数据包处理描述符发送至PCIE接口模块。
[0058] 步骤⑥:PCIE接口模块将数据包处理描述符发送至调度模块;
[0059] 每一个描述符都对应着对一个数据包的处理结果,因此,PCIE接口模块需要连续不停的将数据包处理描述符发送到调度模块。
[0060] 步骤⑦:调度模块根据数据包处理描述符中的信息向对应的输入缓存模块发出相应的操作请求;
[0061] 调度模块在接收到对某一个数据包处理描述符之后,根据其中的输入端口信息(如图5所示),将描述符再次下发到对应的数据缓存模块中对描述符中指示的数据包进行相应的处理,例如,描述符中的输入端口为1,调度模块便将该描述符下发至输入缓存模块1,然后由缓存模块1进行后续处理。
[0062] 步骤⑧:数据缓存模块按照数据包处理描述符的规定,对数据包做出:1)若操作指示为Forward ALL,发送到输出端口;或者2)若操作指示为Drop,被丢弃;或者3)若操作指示为Forward CONTROLLER,经过PCIE进入CPU内存,等待进一步分析。若操作类型为1),则进行步骤⑨,否则在本步骤中止;
[0063] 输入缓存模块在接收到处理结果描述符之后,根据描述符中的缓存地址和数据长度信息,从对应的存储器地址中读取出相应长度的完整数据包,同时根据描述符中的操作指示说明对其进行处理,处理方式为下列的三种之一:
[0064] 1)、若操作指示为Forward ALL,发送到输出端口。若执行该种处理,则将完整的数据包发送至交换部分进行后续处理,按照步骤⑨进行操作。
[0065] 2)、若操作指示为Drop,丢弃该数据包。若执行该种处理,则不将数据包转发而是直接丢弃,且对该数据包的处理流程到此终止,不进行步骤⑨;
[0066] 3)、若操作指示为Forward CONTROLLER,将该数据包上传至软件部分进行进一步分析。若执行该种处理,则重新将该数据包完整地发送至内存,并由软件对完整的数据包进行分析,对数据包的处理流程到此终止,不进行步骤⑨。
[0067] 步骤⑨:数据包经过交换矩阵到达对应的输出端口后发送到链路上。
[0068] 当原先存放在某一个输入缓存中的数据包到达交换矩阵(如图10所示)中的入口缓存之后,交换矩阵(如图10所示)会根据该数据包的处理结果描述符中的输出端口信息将该数据包发送至相应的出口缓存中,等待输出接口模块从矩阵出口中提出数据包并进行处理,最终经过相应的输出端口发送到链路上。例如,一个存放在输入缓存1中的数据包,其处理结果描述符中的输出端口为2,则该数据包到达交换矩阵(如图10所示)的入口缓存1之后,交换矩阵(如图10所示)根据描述符结果,将其发送至矩阵出口缓存2,最终由输出接口模块2从该缓存中提取出该数据包进行处理,并最终由端口2发送到链路上。
[0069] 本领域的普通技术人员将会意识到,这里所述的实施例是为了帮助读者理解本发明的原理,应被理解为本发明的保护范围并不局限于这样的特别陈述和实施例。本领域的普通技术人员可以根据本发明公开的这些技术启示做出各种不脱离本发明实质的其它各种具体变形和组合,这些变形和组合仍然在本发明的保护范围内。
高效检索全球专利

专利汇是专利免费检索,专利查询,专利分析-国家发明专利查询检索分析平台,是提供专利分析,专利查询,专利检索等数据服务功能的知识产权数据服务商。

我们的产品包含105个国家的1.26亿组数据,免费查、免费专利分析。

申请试用

分析报告

专利汇分析报告产品可以对行业情报数据进行梳理分析,涉及维度包括行业专利基本状况分析、地域分析、技术分析、发明人分析、申请人分析、专利权人分析、失效分析、核心专利分析、法律分析、研发重点分析、企业专利处境分析、技术处境分析、专利寿命分析、企业定位分析、引证分析等超过60个分析角度,系统通过AI智能系统对图表进行解读,只需1分钟,一键生成行业专利分析报告。

申请试用

QQ群二维码
意见反馈