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

文档序号:9372036阅读:1179来源:国知局
一种基于软件查表的数据包转发方法
【技术领域】
[0001]本发明涉及网络设备,具体涉及到网络设备的一种基于软件查表的数据包转发方法。
【背景技术】
[0002]数据中心网络交换机是数据中心网络中对数据包进行转发的硬件设备。其他的数据中心中的网络设备,如终端主机或者存储系统,与数据中心网络交换机相耦合时,可以通过数据中心网络交换机进行硬件设备之间的数据传输。与交换机相耦合的硬件设备向与该交换机相耦合的另一个硬件设备发送数据时,将进行数据发送的设备称为源设备,将数据中心网络交换机称为中间设备,将进行数据接收的设备称为目标设备。源设备通过数据中心网络交换机向目标设备发送数据时,数据中心网络交换机需要将数据进行缓存,并通过查表操作确定该数据应当如何发送至目标设备,之后按照一定的方式将数据转发到目标设备。
[0003]数据中心网络交换机使用查表操作来确保数据的转发操作正确无误。现有的商用交换机的流表大多使用TCAM来进行存储,而TACM的高功耗和高成本的使得这类交换机的流表规模无法做到很大。例如,盛科公司出产的的CTC6048型号芯片最大MAC流表容量大小仅为512K[1],这是无法达到未来数据中心交换机的需求的。
[0004]与硬件交换机不同,软件交换机可以充分利用服务器的CPU资源,并以成本相对较低而容量相对较大的DRAM存储器来存放流表,同时还可以将复杂的查表算法交由软件而不是硬件去实现。其流表中的表项数量可以达到百万个甚至十亿个,随着未来数据中心业务流量增加,使用软件实现交换机的思路也非常符合其对网络交换机提出的需求。
[0005]而在软件部分的数据处理方式上,Intel公司在2013年发布了一款名为DPDK的数据平面开发套件[2],其具有零拷贝、无中断以及批量处理等优点,非常适合网络数据包分析、处理等操作,对于数据包的转发、多核操作有一定的性能提升。有研究人员如Dong Zhou等人就提出了一种名为CuckooSwitch的软件交换机设计方案[3],但是这类软件交换机需要将数据包通过总线全部送至DRAM存储器,再加上软件查表操作的不确定性,这一操作存在着比较大的延迟。同时,当交换机需要进行处理的数据量变得非常大的时候,软硬件之间的数据通路(PCIE总线)会成为瓶颈,严重影响交换机的吞吐率。
[0006]有一些研究人员已经注意到了软件交换机的这一缺陷,如国防科技大学的杨安就提出硬件部分只提取报文头部发送至软件部分进行查表,之后再指示硬件部分对数据进行进一步操作的思路M,但是缺点在于:1)其设计方案仅支持OpenFlow交换机,不具有通用性;2)查表算法不适合大规模的表项查找;3)查表是在自己专用的CPU上进行实现,无法使用商用的廉价的CPU平台,例如性价比很高的Intel平台。
[0007]参考文献:
[0008][I]盛科,CTC6048SDN 芯片[EB/OL].http://www.centecnetworks.com/cn/ProductList.as p ? ID = 152, February 24,2011
[0009][2] Inte.Data Plane Development Kit [EB/0L].http: //www.1ntel.com/content/www/us/en/intelligent-systems/inteItechnology/packet-processing-1s-enhanced-with-softwarefrom-1ntel-dpdk.ht ml, 2013.
[0010][3]D.Zhou, B.Fan, H.Lim, et al.Scalable, high performance ethernetforwarding with cuckooswitch[C].Proceedings of the ninth ACM conference onEmerging 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(表示高电平)和χ(表示中间电平)来表示数据。
[0014]2.DRAM:Dynamic Random Access Memory,动态随机存储器。
[0015]3.U1:Userspace 1/0,运行在用户空间中的1/0技术。
[0016]4.MAC:Media Access Control,介质访问控制。
[0017]5.MPLS:Mut1-Protocol Label Switching,多协议标签交换。
[0018]6.TCP/IP transmiss1n 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]步骤⑨:数据包经过交换矩阵到达对应的输出端口后发送到链路上。
当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1