基于网络交换芯片的微码和流表的实现方法技术领域
本发明涉及一种可编程网络通信实现方法,特别是涉及一种基于网络交换芯片的
微码和流表的实现方法。
背景技术
在互联网应用快速发展的今天,对灵活高速大吞吐率的网络互联架构的要求也越
来越高。尤其当网络交换技术进入云计算时代,在继承原有数据交换基础上的同时需要灵
活支持新出现的交换标准和应用。大规模部署虚拟化和云计算则催生了以工作负载为中心
的下一代数据中心网络,复杂的网络需要为工作负载提供端对端的网络资源,如何应对业
务快速响应需求成为了下一代数据中心不得不面临的挑战。
云计算和虚拟化等网络交换管理技术需要灵活的网络扩展性,因此网络的转发平
面和控制平面都需要横向扩展和性能增强,同时由于网络中软硬件绑定的方式使得网络发
展缓慢,促使网络交换芯片不光要实现软硬件的分离,同时还要求数据面和控制面能够支
持应用的扩展变化。
本发明专利正是在传统二三层网络交换芯片的基础上,引入了微码可编程引擎和
流表设计的理念,将控制层面转移到Host端,网络交换芯片只控制数据报文的转发,并且由
于微引擎的可编程性使得新功能新应用可以灵活添加。同时本专利实现了多级流表,使得
数据报文在转发时更精确、更高效。
发明内容
本发明所要解决的技术问题是提供一种基于网络交换芯片的微码和流表的实现
方法,在传统的网络交换芯片的基础上引入微码可编程引擎和多级流表来增强灵活性从而
实现对未来网络应用发展的支持。本发明使得网络交换芯片所支持的标准应用在二三层交
换的基础之上能够根据用户的需求支持包括SDN(软件定义网络)在内的新的网络标准和应
用,并且外部控制器(Host)能够对网络交换芯片实时控制,生成修改流表项,从而增强了网
络交换芯片的处理灵活性,以及管理上的实时便捷。
本发明是通过下述技术方案来解决上述技术问题的:一种基于网络交换芯片的微
码和流表的实现方法,其特征在于,其包括流表表项的创建方案和微码实施的技术方案并
采用数据包解析引擎、一级查找引擎、查找分解引擎、二级查找引擎和数据包修改引擎;
所述微码实施的技术方案包括以下步骤:
步骤一:在数据包解析引擎中从硬件译码器中提取报文描述符信息;根据规范对
数据报文的正确性和完整性进行检查;
步骤二:从接收的报文中提取查找关键字信息,并产生相应的查找关键字;
步骤三:用步骤一产生的信息产生消息和查找关键字,传递给一级查找引擎;
步骤四:在一级查找引擎中用步骤二产生的查找关键字进行流表查找,将查找结
果和步骤三产生的消息传递给查找分解引擎;若查找不成功,也要产生一个相应的查找结
果传递给查找分解引擎;Host端根据收发到数据报文选择性下发流表;
步骤五:查找分解引擎步骤三传递过来的查找结果和消息,提取控制字段,并根据
控制字段决定该报文的走向;填写相应的寄存器信息,同时产生消息传递给下一模块,如需
第二级查找,构造查找关键字连同消息一同传递给二级查找引擎;
步骤六:在包修改引擎中根据查找结果信息,提取控制字段,跳转到合适的分支,
并根据需要对报文进行修改,填写发送寄存器,将报文发送到相应的队列;
所述流表表项的创建方案包括以下步骤:将流表进行拆分,形成多级流表,每次从
报文中提取的关键字进行多级匹配;每条流表的匹配结果中都存储相应的转发信息和行为
结合,通过行为字段来控制报文的处理方式。
优选地,所述步骤一中的报文描述符信息包括该报文的长度、类型以及存储的位
置信息。
本发明的积极进步效果在于:本发明技术方案提供了网络交换中微码的创建方
法,该方法将微码的执行分为五个模块,各个模块之间通过发送消息互相通信,在很大程度
上精简了代码量,并使对数据流的处理更加灵活;本发明还提供了流表的创建方法,特别是
多级流表的创建方法,并在每条流表的匹配结果中规定了不同的转发信息和行为集合;多
级流表一方面提高了匹配的效率,另一方面也可以根据设计需要灵活支持不同的应用场
景。
附图说明
图1是数据包解析引擎的微码执行流程图。
图2是一级查找引擎的示例执行过程图。
图3是Host端处理数据报文示例流程图。
图4是查找分解引擎微码执行流程图。
图5是数据包修改引擎微码示例执行流程图。
图6是流表设计思路流程图。
具体实施方式
下面结合附图给出本发明较佳实施例,以详细说明本发明的技术方案。
本发明基于网络交换芯片的微码和流表的实现方法,其特征在于,其包括流表表
项的创建方案和微码实施的技术方案并采用数据包解析引擎、一级查找引擎、查找分解引
擎、二级查找引擎和数据包修改引擎;
所述微码实施的技术方案包括以下步骤:
步骤一:在数据包解析引擎中从硬件译码器中提取报文描述符信息;根据规范对
数据报文的正确性和完整性进行检查;
步骤二:从接收的报文中提取查找关键字信息,并产生相应的查找关键字;
步骤三:用步骤一产生的信息产生消息和查找关键字,传递给一级查找引擎;
步骤四:在一级查找引擎中用步骤二产生的查找关键字进行流表查找,将查找结
果和步骤三产生的消息传递给查找分解引擎;若查找不成功,也要产生一个相应的查找结
果传递给查找分解引擎;Host端根据收发到数据报文选择性下发流表;
步骤五:查找分解引擎步骤三传递过来的查找结果和消息,提取控制字段,并根据
控制字段决定该报文的走向;填写相应的寄存器信息,同时产生消息传递给下一模块,如需
第二级查找,构造查找关键字连同消息一同传递给二级查找引擎;
步骤六:在包修改引擎中根据查找结果信息,提取控制字段,跳转到合适的分支,
并根据需要对报文进行修改,填写发送寄存器,将报文发送到相应的队列;
所述流表表项的创建方案包括以下步骤:将流表进行拆分,形成多级流表,每次从
报文中提取的关键字进行多级匹配;每条流表的匹配结果中都存储相应的转发信息和行为
结合,通过行为字段来控制报文的处理方式。
其中,所述步骤一中的报文描述符信息包括该报文的长度、类型以及存储的位置
信息。
如图1所示,数据包解析引擎作为数据报文的最初处理模块,负责对报文进行解析
域合法性检查;由于网络交换芯片硬件已经对数据报文进行了初步的解析,并把解析后的
内容写入了相应的寄存器中;具体步骤如下:
步骤A01:只需要把硬件解析好的内容写入通用寄存器中,为微码程序后面使用;
步骤A02:需要根据规范对数据报文的正确性和完整性检查,例如IP(网络之间互
联的协议)头的正确性、TTL(生存时间值)的正确性;
在该模块中,数据报文的前64个字节已经预取到帧存储器中;
步骤A03:通过偏移地址,得到该报文的VLAN(虚拟局域网)、MAC(媒体访问控制)和
IP的信息,并写入到查找关键字的存储器中,在示例图中该存储器中存储了三个查找关键
字,对应下一模块的三个流表;
步骤A04:把报文的描述符信息,包括该报文的入端口信息、长度、在缓冲区中的位
置信息写入消息的存储器中,给下一级模块使用;
由于查找关键字和消息在同一存储器中存储,所以需要把它们区分开来;
步骤A05:每一条查找关键字和消息都生成一个头部信息,这些头部信息与每一条
查找关键字和消息一一对应,便于下一级模块进行区分。
图2示例的是一级查找引擎,该模块主要功能是根据上一级传递的查找关键字进
行流表查找,并把查找结果传递给下一级模块;一级查找引擎工作原理的具体步骤如下:
步骤B01:上一级模块生成的消息在该模块中是直接传递个下一级模块,该模块用
不到该消息;
步骤B02:流表的查找关键字模块由端口号和VLAN标签构成;
步骤B03:流表的查找关键字模块由目的MAC地址和VLAN标签构成;
步骤B04:流表的查找关键字模块由目的IP地址构成;
步骤B05、步骤B06:代表的流表存储在Hash(散列)结构中;
步骤B07:代表的流表存储在Tree(树)结构中;
步骤B05、步骤B06、步骤B07提高了查找的时间和查找的效率;
流表的查找结果传递给下一级模块,共有三个查找结果,每个查找结果都有两个
控制位,分别是valid和match位。其中valid位为“1”,如果流表匹配成功,match位为“1”,否
则该位为“0”。
图3表示流表的更新过程,该过程是由网络中的Host端控制的,具体步骤如下:
步骤C02:Host端接收到了某台交换机发送的Arp报文,Host端会对Arp报文中的源
MAC地址进行检查,检查该源MAC地址是否在拓扑结构中;如果不存在,就把该Arp帧丢弃,否
则跳转到C03;
步骤C03:Host端对发送Arp的交换机下发流表;
由于每一个刚刚加入到网络中的交换机都要想邻居发送LLDP报文,所以网络中的
Host端根据LLDP报文中的内容来维护网络的拓扑结构;
步骤C04:Host端收到网络中某一台交换机发来的LLDP报文,并对该报文进行了解
析,确定了该交换机在网络中的位置;
步骤C05:网络的拓扑结构中加入了步骤C04中新加入的交换机,所以对拓扑结构
进行了更新;
步骤C06:为其它的交换机进行流表的下发,增加一条表项,把这台新加入的交换
机添加到其它交换机的流表中;
步骤C07:Host端接收到了普通的数据报文,Host要对该报文的目的MAC地址进行
检查,查看该报文是否是发送至该网络的。如果该报文不是发送到该网络中的,则丢弃该报
文,否则跳转到C08;
步骤C08:报文是发送至该网络的,并且目的交换机在网络拓扑中存在,但是由于
交换机老化流表项等原因,把流表项删除了,所以要重新下发流表,进行流表更新;
步骤C09:流表更新后,该报文就能够正常转发。
图4表示查找分解引擎的流程,该模块的主要功能是从流表查找结果中提取出关
键的信息,写入消息并传递给下一模块;具体步骤如下:
步骤D01、步骤D02:从上一级模块中获取查找结果,并根据查找结果提取出控制报
文转发的关键信息,包括该报文的转发方式、输出端口;
在该模块中要重新生成一条消息,传递给下一级模块,这个消息由步骤D02和步骤
D08中关键信息组合而成;这个消息需要LLDP报文生成头信息来进行索引,该信息包括消息
的长度,并将该投信息写入相应的寄存器;
步骤D08:如果需要进行二级查找,需要构造查找关键字发送到二级查找引擎进行
二级查找;
由于有的报文在发送时需要对报文内部的某些字段进行修改,如果要修改某些字
段,则在步骤D05中相应的寄存器中填入要预取到下一模块的报文长度信息,否则该寄存器
填“0”。
图5表示数据包修改引擎的流程图;数据包修改引擎工作原理的具体步骤如下:
步骤E01:收到上一级模块传递的消息,并提取出消息中的控制字段,并跳转到相
应的处理分支;
步骤E02:收到了ARP,这类报文不需要修改,直接发送到Host端;
步骤E03:收到了LLDP报文,这类报文不需要修改,直接发送到Host端;
在上一模块中,查找结果中的行为集合写入了消息中;
步骤E04:从消息中提取出这些行为集合,这些行为集合包含了对该报文的处理方
式,包括广播、发送至目的端口、发送至Host以及对报文的某些字段进行修改;
步骤E05:根据行为集合里的要求对报文的某些字段进行修改,包括MAC和Vlan标
签字段;
步骤E06:数据报文发送时要填写相应的发送寄存器,这些寄存器内存储了该报文
的描述符信息;
步骤E07:根据发送需求发送到相应的队列中,等待发送。
图6示例通过展示流表的匹配过程,说明流表的设计思路,具体步骤如下:
流表1的匹配关键字为入端口和Vlan标签,匹配结果中的行为域决定了数据报文
是否丢弃;
步骤F01:检查该报文是否丢弃,只有不被丢弃的报文才能进行下一级流表的匹配
结果检查;
流表2的匹配关键字为目的MAC地址和Vlan标签,该流表的匹配结果中不设行为
域,只设目的端口、QoS(服务质量)信息;
步骤F02:检查该流表是否匹配成功,如果不能匹配成功,则在步骤F03中将匹配结
果的match位设置成“0”。如果匹配成功,则进行下一级流表的匹配结果检查。
流表3的匹配关键字为目的IP地址,该流表的匹配结果中设置行为集合;
步骤F04:检查流表是否匹配成功,如果不能匹配成功,则在步骤F03中将匹配结果
的match位设置成“0”。如果匹配成功,微码会从匹配结果中提取出行为集合、转发端口信
息。
综上所述,本发明技术方案提供了网络交换中微码的创建方法,该方法将微码的
执行分为五个模块,各个模块之间通过发送消息互相通信,在很大程度上精简了代码量,并
使对数据流的处理更加灵活;本发明还提供了流表的创建方法,特别是多级流表的创建方
法,并在每条流表的匹配结果中规定了不同的转发信息和行为集合;多级流表一方面提高
了匹配的效率,另一方面也可以根据设计需要灵活支持不同的应用场景。本发明在控制数
据层面和控制层面分离的同时,实现了微码的分模块设计,每个模块之间通过互相发送消
息来进行通信,提高了微码的执行效率和重用性以及灵活性。此外还实现了多级流表,提高
了流表匹配的效率,每一级流表都根据匹配关键字的性质,设计了不同的存储结构,能够支
持包括已有网络交换协议和新增的网络应用场景。
以上所述的具体实施例,对本发明的解决的技术问题、技术方案和有益效果进行
了进一步详细说明,所应理解的是,以上所述仅为本发明的具体实施例而已,并不用于限制
本发明,凡在本发明的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本
发明的保护范围之内。