本发明涉及网络技术领域,更具体的说是涉及一种可编程sdn交换机系统。
背景技术:
随着sdn技术的发展,传统sdn的协议,如openflow在逐渐的完善演化过程中,匹配元组和动作类型不断的增加。交换机在支持openflow协议的版本更新上,面临着和传统交换设备厂商同样的困境——openflow并不支持弹性地更改匹配元组和动作类型。随着网络中新的协议不断出现,openflow协议也必将变得越来越臃肿,匹配-动作表的扩展变得越来越困难。因此,让数据转发平面也具有可编程能力,让数据包的解析和转发流程也能通过编程控制,打破了硬件设备对数据转发平面的限制,成为新一代sdn技术发展的趋势。
以支持p4语言为代表的可编程交换机为用户提供了这种能力,此类交换机采用匹配-动作模型,通过可编程的解析器和匹配-动作表,使交换机能够通过软件化的方式的进行功能的更新。但是,目前控制层对可编程交换机的控制主要是通过南向接口调用p4语言编译生成的api进行。由于已经编译完成的交换机功能和接口已经确定,实际上对于控制层而言,交换机的功能仍是固定的,因此并没有最大程度的实现全软件化的控制优势。本发明通过对交换机包头解析器的改进,使控制器能够通过配置的方式完全的实现对交换机的功能控制,可以最大限度的发挥交换机软件定义的优势,使数据层真正可以实现完全的软件化。
技术实现要素:
为解决上述技术问题,本发明提出一种可编程的sdn交换机系统,通过对解析模块、匹配动作-模块的可配置的软件化设计,使交换机可以根据控制器制定的解析策略进行包头解析、信息提取和数据操作,使交换机具有了软件化可编程的能力,无需更改硬件就可以实现交换机功能的更新。
本发明采用如下技术方案:
一种可编程sdn交换机系统,包括:
包头解析模块,用于对可编程sdn交换机接收到的数据包头进行解析,提取数据包头的匹配元组信息,并将所述匹配元组信息发送到匹配-动作模块;
匹配-动作模块,用于将提取的匹配元组信息与匹配-动作表中的匹配元组内容进行匹配,如果有匹配的表项,则按照所述匹配表项中的动作进行处理;
队列调度模块,用于对缓存在各队列中的发送数据进行调度后从交换机发出。
所述包头解析模块,包括:
包头解析配置接口,用于接收控制器发送来的解析配置信息,并将所述解析配置信息存储到解析表中;
解析表,用于存储包头解析表项,每条表项对应一种包头解析和信息提取策略,包头解析表项包括,解析id和解析元组;
解析执行单元,用于读取数据包的解析id,根据数据包的解析id在解析表中查找匹配的表项,按照匹配表项中的解析元组对数据包进行解析和信息提取,将提取到的包头信息作为匹配元组信息,发送给匹配-动作模块。
所述解析配置信息包括包头解析表项。
所述解析表,包括:
解析id,用于区分数据流的包头解析和信息提取策略;
解析元组,用于指示包头解析和信息提取的内容;解析元组由一个或多个解析元素组成,每个解析元素表示包头中的一项信息;每个解析元素通过tlv(type,length,value)格式表达,type表示解析元组名称,length表示解析元组长度,value表示解析元组在包头的位置。
所述匹配-动作模块,包括:
匹配-动作配置接口,用于接收控制器发送来的匹配-动作配置信息,并存储到匹配-动作表中;
匹配-动作表,用于存储匹配-动作表项,每条表项包括:匹配元组和动作;
匹配-动作执行单元,用于根据包头解析模块发送来的所述匹配元组信息,在匹配-动作表中查找匹配的表项,按照匹配表项中的动作内容对数据包进行处理,发送至队列调度模块。
所述匹配-动作配置信息包括存储匹配-动作表项。
所述匹配-动作表包括:
匹配元组,包括与解析元组中解析元素对应的元素;
动作,用于对数据包的操作。
所述队列调度模块,包括:
队列配置接口,用于接收控制器发送来的队列配置信息,并配置到缓存队列及队列调度单元;
缓存队列,用于缓存端口各个队列的数据包;
调度单元,用于对所述缓存队列中的数据包按照队列配置信息配置的队列调度方式进行发送顺序的排列;
发送单元,用于缓存调度完成后等待发送的数据,并按依次发送出交换机。
所述队列配置信息包括端口名称、队列名称、队列数量、队列调度方式。
一种可编程sdn交换机的解析方法,包括以下步骤:
包头解析模块,对可编程sdn交换机接收到的数据包头进行解析,提取数据包头的匹配元组信息,并将所述匹配元组信息发送到匹配-动作模块;
匹配-动作模块,将提取的匹配元组信息与匹配-动作表中的匹配元组内容进行匹配,如果有匹配的表项,则按照所述匹配表项中的动作进行处理;否则,丢弃或者发送给控制器;
队列调度模块,对缓存在各队列中的发送数据进行调度后从交换机发出。
本发明有益效果和优点如下:
1.本发明的系统,使交换机可以根据控制器制定的解析策略进行包头解析、信息提取和数据操作,使交换机解析模块、匹配-动作模块都具有了软件化可编程的能力,无需更改硬件就可以实现交换机功能的更新。
2.通过本发明系统,交换机包头解析和匹配-动作可以根据传输数据进行定制化的处理,可以提高数据处理转发的效率。
附图说明
图1为本发明一种可编程sdn交换机及所属sdn网络系统的一个实施例的示意图;
图2为本发明一种可编程sdn交换机系统的一个实施例的结构示意图。
图3a为本发明解析表的示意图;
图3b为本发明一种可编程sdn交换机系统的一个实施例的示意图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
参见图1,示出了本发明一种可编程sdn交换机及所属sdn网络系统的一个实施例的示意图,sdn整体网络系统分为两个层面,控制层和数据层。
控制层由一个或多个分布式的控制器组成,根据终端设备的传输需求,制定数据流的传输策略,将传输策略转换成控制域内的边缘设备的配置(如解析id的分配)和数据层设备的配置(如解析配置信息的制定、匹配-动作配置信息的制定);
数据层由多个可编程sdn交换机和终端设备组成,其中,可编程sdn交换机接收管理器的解析配置信息和匹配-动作配置信息,根据解析配置信息对数据包进行解析和包头信息提取,根据匹配-动作配置信息对数据包进行操作处理。
边缘设备负责数据流转换,用于在相应数据流的包头中添加或删除管理器分配的解析id标签。
终端设备是网络数据的产生和接收终端,用于将传输需求发送到控制器,和交换机数据的发送和接收。
参见图2,示出了本发明一种可编程sdn交换机系统的一个实施例的结构示意图,该系统包括:包头解析模块210、匹配-动作模块220、队列调度模块230。
包头解析模块210,用于对可编程sdn交换机接收到的数据包头进行解析,提取数据包头的匹配元组信息,并将所述匹配元组信息发送到匹配-动作模块。具体包括:
解析表,用于存储包头解析表项,每条表项对应一种包头解析和信息提取策略(该策略由控制器根据数据流传输需求制定),参数包括,解析id和解析元组;
包头解析表项状态信息可以包括包头解析表项的有效时间、创建时间等;
解析表状态信息可以包括解析表名称、解析表最大表项容量,解析表中表项包含元素及数据类型等;
解析配置信息包括包头解析表项、包头解析表项状态信息和解析表状态信息。
参见图3a,示出了解析表的示意图。其中:
解析id,用于区分数据流的包头解析和信息提取策略。数据流的解析id由sdn网络控制器分配,当数据流经过网络边缘设备时,将分配的解析id添加到数据流包头中。解析id在包头中的位置可以为包头中的任意位置,如包头前2byte,但该位置需要边缘设备和交换机约定统一。
解析元组,用于指示包头解析和信息提取的内容。解析元组由一个或多个解析元素组成,每个解析元素表示包头中的一项信息,如目的ip地址就是一个解析元素。每个解析元素通过tlv(type,length,value)格式表达,type表示解析元组名称,length表示解析元组长度,value表示解析元组在包头的位置(偏移量)。
参见图3b,示出了解析表的一个实施例的示意图。
第一个表项中,解析id为1,解析元组中包括了4个解析元素{dstmac,6,8};{srcmac,6,14};{srcip,4,26};{dstip,4,30};表示该条解析策略将提取包头的源mac地址、目的mac地址、源ip地址、目的ip地址。对于解析id为1的数据包,都将执行该项解析策略。
控制器可以根据具体的传输需要制定数据包头的解析策略,然后发送到交换机,交换机根据控制器制定的解析策略进行包头解析和信息提取,使交换机解析模块具有了软件化可编程的能力。
解析执行单元,用于读取数据包的解析id,根据所述数据包的解析id在解析表中查找匹配的表项,按照匹配表项中的解析元组对数据包进行解析和信息提取,将提取到的所述包头信息作为匹配元组信息,发送给匹配-动作模块。
当交换机接收数据时,首先提取包头的解析id,根据解析id在解析表中查找匹配的表项。
解析表项的解析元组由sdn网络控制器制定,当交换机根据解析id查找到匹配的表项后,依次根据解析元组中每个元素的tlv表达中的偏移量和长度,在包头中找到指定数据,提取该数据保存为对应名称的数值。解析元组提取信息将作为匹配元组信息在匹配-动作表中进行相应动作的查找。
包头解析配置接口,用于接收控制器发送来的解析配置信息,并将所述解析配置信息存储到解析表中。
控制器发送的解析配置信息至少需要包括数据流的解析id和解析元组信息,其他配置信息可以根据具体的控制需求进行扩展。
匹配-动作模块220,用于将所述提取的匹配元组信息与匹配-动作表中的匹配元组内容进行匹配,如果有匹配的表项,则按照所述匹配表项中的动作进行处理;
匹配-动作表,用于存储匹配-动作表项,每条表项包括:匹配元组和动作;
其中,匹配元组中的各元素应该与解析元组中的各元素对应。
匹配-动作执行单元,用于根据包头解析模块发送来的所述匹配元组信息,在匹配-动作表中查找匹配的表项,按照匹配表项中的动作内容对数据包进行处理。
匹配-动作配置接口,用于接收控制器发送来的匹配-动作配置信息,并将所述配置信息存储到匹配-动作表中。
匹配-动作配置信息包括存储匹配-动作表项、匹配-动作表项状态信息和匹配-动作表状态信息。
匹配-动作表包括:
匹配元组信息,匹配元组中的元素应该与解析元组中元素对应,可以包括mac目的地址(destinationmacaddress)、mac源地址(sourcemacaddress)、协议类型(type)、优先级(prioritycodepoint)、vlan号(vlanid)、ip源地址(sourceipaddress)、ip目的地址(destinationipaddress)、dscp(dscp)、协议字段(protocol)、源端口(sourceport)、目的端口(destinationport)。
动作,对数据包的操作,可以包括转发到队列,转发到端口,包头修改,丢弃、转发到控制器。
队列调度模块230,用于对缓存在各队列中的发送数据进行调度后从交换机发出。
缓存队列,用于缓存端口各个队列的数据包。
调度单元,用于对所述缓存队列中的数据包按照队列配置接口配置的调度方式进行发送顺序的排列。
发送单元,用于缓存调度完成后等待发送的数据,并按依次发送出交换机;
队列配置接口,用于接收控制器发送来的队列配置信息,并配置到缓存队列及队列调度单元。
本说明书中各个实施例采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似部分互相参见即可。
对所公开的实施例的上述说明,使本领域专业技术人员能够实现或使用本发明。对这些实施例的多种修改对本领域的专业技术人员来说将是显而易见的,本文中所定义的一般原理可以在不脱离本发明的精神或范围的情况下,在其它实施例中实现。因此,本发明将不会被限制于本文所示的这些实施例,而是要符合与本文所公开的原理和新颖特点相一致的最宽的范围。