一种OpenFlow报文转发方法及设备的制造方法

文档序号:8265624阅读:450来源:国知局
一种OpenFlow报文转发方法及设备的制造方法
【技术领域】
[0001]本发明涉及网络通信技术领域,特别涉及一种OpenFlow报文转发方法及设备。
【背景技术】
[0002]Openflow交换机将传统交换机上的报文转发和转发策略分离开来,采用专门的一台控制设备(controller)通过网线与交换机连接。这样原来同在一台交换机设备上的报文转发功能(硬件芯片实现)和报文转发策略(各种软件协议)就被分开到了不同的硬件设备上。基本的Openflow网络包括:控制面的网络控制器和转发面的Openf low交换机,分别称之为控制设备和数据转发设备。Openflow网络中的转发数据报文的方法为利用流表进行数据报文转发,具体为:控制设备通过标准化的Openflow协议控制数据转发设备并下发流表给数据转发设备;数据转发设备接收并保存流表;当数据转发设备收到网络发来的数据报文后,查看流表中是否有匹配的流表项,若有,则按照流表项中的动作转发数据报文;若没有查找到匹配的流表项,则将数据报文的头信息封装为Packet-1n消息通过安全通道发给控制设备,由控制设备来决策相关行为。
[0003]现有技术中,流表的存储非常混乱,当报文进行匹配流表时,需要对所有流表数据进行匹配,影响转发的效率。对于一个庞大的流表数据,每个报文进入数据转发设备后,根据优先级排序遍历所有流表项。如果流表数据太过庞大,算法的效率将会很降低。

【发明内容】

[0004]本发明的目的在于提供一种OpenFlow报文转发方法及设备,能够提高流表匹配效率。
[0005]为实现上述发明目的,本发明提供了一种OpenFlow报文转发方法,应用于OpenFlow网络的数据转发设备,该方法包括:
[0006]预先将一具有多个流表表项的流表按类别进行分割,形成依次串行的多级流表;每一级流表对应一类流表;
[0007]接收OpenFlow报文,按照多级流表的先后次序依次查找每一级流表,或者直接跳至指定流表查找匹配的流表表项,对所述OpenFlow报文进行处理。
[0008]为实现上述发明目的,本发明还提供了一种数据转发设备,应用于OpenFlow网络中,该数据转发设备包括:
[0009]多级流表形成单元,用于预先将一具有多个流表表项的流表按类别进行分割,形成依次串行的多级流表;每一级流表对应一类流表;
[0010]报文处理单元,用于接收OpenFlow报文,按照多级流表的先后次序依次查找每一级流表,或者直接跳至指定流表查找匹配的流表表项,对所述OpenFlow报文进行处理。
[0011]综上所述,本发明实施例预先将一具有多个流表表项的流表按类别进行分割,形成依次串行的多级流表;其中,第一类流表以Radix树形式构建,第二类流表以哈希表形式或者AVL树或者排序二叉树形式构建,第三类流表以访问控制列表(ACL)形式构建,每一级流表对应三类流表中的一种;接收OpenFlow报文,按照多级流表的先后次序依次查找每一级流表,或者直接跳至指定流表查找匹配的流表表项,对所述OpenFlow报文进行处理。由于本发明将现有技术中一个庞大的流表分割为多级流表,且每一级流表具有一个类别,报文匹配流表时,不需要像现有技术那样对一个庞大的流表进行遍历匹配,在查找到第一类或者第二类流表时,可以通过Radix树路由表项查找方法,或者哈希算法等实现快速直接匹配查找,所以大大提高了流表匹配效率,优化了流表生成、匹配及管理等机制。
【附图说明】
[0012]图1为本发明实施例OpenFlow报文转发方法的流程示意图。
[0013]图2为本发明实施例将一个流表分割为多级流表的示意图。
[0014]图3为本发明具体实施例中应用于上述方法的数据转发设备的结构示意图。
[0015]图4为本发明又一实施例提供的数据转发设备的组成示意图。
【具体实施方式】
[0016]为使本发明的目的、技术方案及优点更加清楚明白,以下参照附图并举实施例,对本发明所述方案作进一步地详细说明。
[0017]本发明的核心思想是:设计不同的流表分类,每一级流表对应有一个流表分类。在实现上,对于一个具有多个流表表项的流表,将在流表中顺续排列的同一类流表表项划分为一级流表,将整个流表分割形成串行的多级流表。具体地,不同类别的流表对应不同的表项匹配技术,按照目前现有的实现,第一类流表以Radix树形式构建,第二类流表以哈希表形式或者AVL树或者排序二叉树形式构建,第三类流表以ACL形式构建,这里的分类仅作为举例说明,具体实现中依据流表的表项属性决定其属于的分类,可能会不同于上述举例,在此不作为本发明的限定。接收OpenFlow报文后在查找到第一类或者第二类流表时,可以通过Radix树路由表项查找方法,或者哈希算法等实现快速直接匹配查找。由于本发明将现有技术中一个庞大的流表分割为多级流表,且每一级流表具有一个类别,报文匹配流表时,不需要像现有技术那样对一个庞大的流表进行遍历匹配,在查找到第一类或者第二类流表时,可以通过Radix树路由表项查找方法,或者哈希算法等实现快速直接匹配查找。特别是对于第一类流表和第二类流表,虽然没有匹配优先级,但是匹配域唯一,所以能够快速命中,因此大大提高了流表匹配效率,优化了流表生成、匹配及管理等机制。
[0018]本发明实施例提供了一种OpenFlow报文转发方法,应用于OpenFlow网络的数据转发设备;其流程示意图如图1所示,该方法包括:
[0019]步骤11、预先将一具有多个流表表项的流表按类别进行分割,形成依次串行的多级流表;每一级流表对应一类流表;
[0020]具体地,依据流表的表项属性决定其属于的分类,这里列举三类流表进行说明。第一类流表以Radix树形式构建,第二类流表以哈希表形式或者AVL树或者排序二叉树形式构建,第三类流表以ACL形式构建,每一级流表对应三类流表中的一种;
[0021]其中,对于第一类流表,以Radix树形式构建的第一类流表表项无匹配优先级,具有固定匹配域,且匹配域带掩码。这种流表表项的匹配域可以为:带掩码的IP地址。只要是具有带掩码的IP地址,且没有匹配优先级的流表表项都下发到第一类流表中。
[0022]Radix树因其查找高效而成为目前比较常用的路由表组织结构。目前对Radix树路由表项的查找一般是根据待查找的目的IP地址,利用最长前缀匹配原则,选择最精确匹配路由。本发明第一类流表以Radix树形式构建,所以查找方式也是如此。另外,也可以根据具体应用,利用最短前缀匹配原则,选择最粗匹配路由。
[0023]对于第二类流表,以哈希表形式或者自平衡二叉查找树(AVL)或者排序二叉树形式构建的第二类流表表项无匹配优先级,具有固定匹配域,且匹配域不带掩码或者带相同长度掩码。这种流表表项的匹配域可以为:MAC地址。只要是具有MAC地址,且没有匹配优先级的流表表项都下发到第二类流表中。也就是说,第二类流表和第一类流表的匹配域都是唯一的。
[0024]第二类流表表项的匹配域还可以是端口号,还可以是不带掩码的IP地址,还可以是掩码相同的IP地址。由于哈希算法不能计算掩码,但是能够实现快速查找,所以把这类不带掩码的匹配域,或者具有相同掩码的IP地址的匹配域划分为第二类流表。
[0025]对于第三类流表,以ACL形式构建的第三类流表表项有匹配优先级,具有不固定匹配域。这种流表表项与现有ACL表相同,对匹配域不限定,该流表中不同表项可以对应不同的匹配域。例如,第三类流表具有流表1:优先级为1,匹配域为IP,MAC ;流表2:优先级为2,匹配域为IP ;流表3:优先级为3,匹配域为MAC ;流表4:优先级为4,匹配域为端口号。
[0026]步骤12、接收OpenFlow报文,按照多级流表的先后次序依次查找每一级流表,或者直接跳至指定流表查找匹配的流表表项,对所述OpenFlow报文进行处理。
[0027]具体地,接收到OpenFlow报文后对报文的处理,与OpenFlow协议的规定相同,可以按照多级流表的先后次序依次查找每一级流表,也可以直接跳至指定流表查找匹配的流表表项。当查找到每一类流表时,根据各自的构建形式,进行查找。例如,当查找到第一类流表时,通过Radix树路由表项查找方法,可以快速查找到匹配流表项;当查找到第二类流表时,如果是采用哈希表形式构建,则通过哈希算法快速查找到匹配流表项;当查找到第三类流表时,仍然根据优先级进行依次匹配。
[0028]需要说明的是,当匹配到流表项时,根据匹配动作进行转发,如果匹配动作为出接口,则在对应出接口将OpenFlow报文转发出去,匹配结束;如果匹配动作为下一级流表,则需要继续查找后续流表。
[0029]为清楚说明本发明,下面列举实施例对上述方法进行详细说明。
[0030]首先,对于一个具有多个流表表项的流表,将在流表中顺续排列的同一类流表表项划分为一级流表,将整个流表分割形成串行的多级流表。
[0031]图2为本发明实施例将一个流表分割为多级流表的示意图。也就是说,这几个多级流表原来是形成于同一个大的流表中的,而且,在每一级流表中流表表项的排列顺序与原来在大的流表中的排列顺序相同。
[0032]图2中为依次串行的四级流表,第一级流表分类为第三类(用C表示);第二级流表分类为第二类(用B表示);第三级流表分类为第一类(用A表示);第四级流表分类为第三类(用C表示)。本发明实施例中第一类流表和第二类流表插入在第三类流表内。从图2可以看出,具有不同分类的流表以任意顺序组合使用,具体如何组合主要基于原有的大的
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1