基于sdn的网络处理器微码和流表实现装置及方法

文档序号:9790946阅读:1165来源:国知局
基于sdn的网络处理器微码和流表实现装置及方法
【技术领域】
[0001]本发明涉及网络通信领域,尤其涉及一种基于软件定义网络(Software DefinedNetworking,SDN)的网络处理器微码和流表实现方法。
【背景技术】
[0002]在云计算时代,数据中心将成为应用和数据交互的关键。大规模部署虚拟化和云计算催生了以工作负载为中心的下一代数据中心网络,复杂的网络需要为工作负载提供端对端的网络资源,如何应对业务快速响应需求成为了下一代数据中心不得不面临的挑战。以新的理念来解决网络在新应用下的挑战,使控制平面和转发平面分离,作为云计算网络中的一种形式,软件定义网络提供了新的思路和方法。
[0003]云计算和虚拟化需要极大的网络扩展性要求,因此网络的转发平面和控制平面都需要横向扩展和性能增强,同时由于网络中软硬件绑定的方式使得网络发展缓慢。SDN—方面主张现有网络中软件和硬件分离,另一方主张数据平面和控制平面分离,各自相对灵活发展,使得网络中的问题得以解决。如何借助SDN的理念来实现微码和流表,使得数据报文在转发时更精确、更高效,是本领域亟待解决的问题。

【发明内容】

[0004]针对上述现有技术中的问题,本发明的目的是提供一种基于SDN的网络处理器微码和流表实现装置及方法,借助SDN的理念,将控制层面转移到Host端,网络处理器只控制数据报文的转发,达到了控制层面和数据层面分离的目的。实现了微码的分模块设计,每个模块之间通过互相发送消息来进行通信,提高了微码的执行效率和重用性。同时实现了多级流表,提高了流表匹配的效率,每一级流表都根据匹配关键字的性质,设计了不同的存储结构,节省了存储空间,使得数据报文在转发时更精确、更高效。
[0005]为达到上述目的,本发明所采用的技术方案如下:
[0006]—种基于SDN的网络处理器微码和流表实现装置,包括:
[0007]数据报文解析模块,作为数据报文的最初处理模块,负责对报文进行解析域合法性检查;
[0008]流表查找模块,根据上一级传递的查找关键字进行流表查找,并把查找结果传递给下一级模块;
[0009]流表匹配结果解析模块,从流表查找结果中提取出关键的信息,写入消息并传递给下一模块;
[0010]数据报文发送模块,将数据报文发送到相应的队列中。
[0011 ] —种基于SDN的网络处理器微码和流表实现方法,通过上述的装置来实现,基于软件定义网络,即SDN,将网络节点中包含的数据层面和控制层面分离,将控制层面转移到外部控制器端,即HOST端,网络处理器只控制数据报文的转发,HOST能够对节点实时控制,并控制节点生成流表项,无需进行复杂智能分析计算,当新转发节点加入到网络中时,自动从HOST得到最新网络配置信息,完成网络自动化感知。
[0012]微码的实现方法包括如下:
[0013]I)从硬件译码器中提取报文描述符信息;
[0014]2)根据规范对数据报文的正确性和完整性进行检查;
[0015]3)从接收的报文中提取查找关键字信息,并产生相应的查找关键字;
[0016]4)将提取的信息和查找关键字传递给下一级模块;
[0017]5)用查找关键字进行流表查找,将查找结果和查找关键字传递给下一模块,如果查找不成功,也要产生一个相应的查找结果传递给下一模块;
[0018]6)H0ST端根据收发到的数据报文选择性下发流表;
[0019]7)根据步骤4传递过来的信息,提取出控制字段,并根据控制字段决定该报文的走向,此外,还要填写相应的寄存器信息,同时产生信息传递给下一模块;
[0020]8)根据步骤5传递过来的信息,提取出控制字段,跳转到合适的分支,并根据需要对报文进行修改,最后填写发送寄存器,将报文发送到相应的队列。
[0021]流表的实现方法如下:将流表进行拆分,形成多级流表,每次从报文中提取出的关键字都要进行多级匹配,每条流表的匹配结果中都存储相应的转发信息和行为结合,通过行为字段控制报文的处理方式。
[0022]数据报文解析模块对报文进行解析域合法性检查的方法,包括:
[0023]所述数据报文解析模块从译码器中提取报文描述符信息,写入相应的寄存器中;
[0024]对报文进行正确性检查;
[0025]从帧存储器中提取出VLAN、MAC和IP得信息,并生成查找关键字;
[0026]将报文的描述符信息写入消息中;
[0027]生成查找关键字和消息的头信息,并将查找关键字和消息传入下一级。
[0028]流表查找模块根据上一级传递的查找关键字进行流表查找,并把查找结果传递给下一级模块的方法,包括:
[0029]所述流表查找模块采用三级流表查找关键字,分别是:I)由入端口和VLAN标签构成、2)由目的MAC地址和VLAN标签构成、3)由目的IP地址构成;
[0030]其中I)和2)的流表存储在Hash结构中,3)的流表存储在Tree结构中。
[0031]HOST端根据收发到的数据报文选择性下发流表的方法,包括:
[0032]S304: HOST端接收数据报文,并对该报文进行解析,确定该交换机在网络中的位置;
[0033]S305:更新HOST中网络拓扑结构;
[0034]S306:为SDN网络中的交换机下发流表;
[0035]S302: Host端接收到了某台交换机发送的Arp报文,Host端会对Arp报文中的源MAC地址进行检查,检查该源MAC地址是否在拓扑结构中,如果不存在,就把该Arp帧丢弃,否则跳转到S303;
[0036]S303: Host端对发送Arp的交换机下发流表;
[0037]S307:Host端接收到了普通的数据报文,Host要对该报文的目的MAC地址进行检查,查看该报文是否是发送至该SDN网络的,如果该报文不是发送到该SDN网络中的,则丢弃该报文,否则跳转到S308;
[0038]S308:该报文是发送至该SDN网络的,并且目的交换机在网络拓扑中存在,但是由于交换机老化流表项的原因,把流表项删除了,所以要重新下发流表,进行流表更新;
[0039]S309:流表更新后,该报文即能够正常转发。
[0040]流表匹配结果解析模块从流表查找结果中提取出关键的信息,写入消息并传递给下一模块的方法,包括:
[0041]所述流表匹配结果解析模块从上一级模块中获取查找结果,并根据查找结果提取出控制报文转发的关键信息;
[0042]根据关键信息重新生成一条消息,准备传递给下一级模块;
[0043]该条消息需要生成头信息来进行索引,包括消息的长度,并将该头信息写入相应的寄存器;
[0044]对于在发送时需要对内部的某些字段进行修改的报文,如果要修改某些字段,则在相应的寄存器中填入要预取到下一模块的报文长度信息,否则该寄存器填“O”。
[0045]控制报文发送模块的方法,包括:
[0046]所述报文发送模块接收到上一级模块传递的消息,提取出消息中的控制字段,并跳转到相应的处理分支;
[0047]对于接收到的ARP和LLDP报文,这类报文不需要修改,直接发送到Host端;
[0048]在上一级模块中,查找结果中的行为集合写入了消息中,从消息中提取出这些行为集合;
[0049]根据行为集合里的要求对报文的某些字段进行修改;
[0050]在数据报文发送时填写相应的发送寄存器,这些寄存器内存储了该报文的描述符信息;
[0051 ]根据发送需求发送到相应的队列中,等待发送。
[0052]流表的匹配过程如下:
[0053]I)流表I的匹配关键字为入端口和Vlan标签,匹配结果中的行为域决定了数据报文是否丢弃,只有不被丢弃的报文才能进行下一级流表的匹配结果检查;
[0054]2)流表2的匹配关键字为目的MAC地址和Vlan标签,该流表的匹配结果中不设行为域,只设包括目的端口、QoS的信息,首先检查该流表是否匹配成功,如果不能匹配成功,则将匹配结果的match位设
当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1