一种OpenFlow交换机中的报文分类方法

文档序号:8265539阅读:1083来源:国知局
一种OpenFlow交换机中的报文分类方法
【技术领域】
[0001] 本发明属于一种OpenFlow交换机中的报文分类方法,涉及计算机下一代网络技 术领域。
【背景技术】
[0002] 目前,传统的IP包流量识别和QoS控制技术,仅对IP包头中的五元组信息进行分 析,确定流量的基本信息,五元组信息包括:源地址、目的地址、源端口、目的端口以及协议 类型。
[0003] 传统IP路由器也只是通过五元组获得的信息来实现一定程度的流量识别和OoS 保证的,但是随着网络上应用类型的不断丰富,仅仅分析IP包的四层以下的内容,已经不 能真正判断流量中的业务类型,更不能判断基于开放端口、随机端口等方式进行传输的应 用类型,甚至应用的具体内容特征。
[0004] OpenFlow交换机,维护一个FlowTable并且只按照FlowTable进行转发, FlowTable并非指IP五元组,在OpenFlowL 0中,定义了包括端口号、VLAN、L2/L3/L4信息 的12个关键字,在OpenFlowl. 3中,更是定义了 39个关键字。每个字段都是可以通配的,网 络的运行商可以决定使用何种力度的流,比如运营商只需要根据目的IP进行路由,那么流 表中就可以只有目的IP字段是有效的,其它全为通配。OpenFlow交换机中的数据包分类, 通过将数据包中的各个字段和FlowTable中的规则的匹配结果,确定对该数据包的执行动 作。
[0005] 其中,OpenFlow vl. 0在实际部署和应用中面临的问题之一就是TCAM存储器成本 问题。在传统网络设备中,TCAM主要用于FIB、MAC、MPLS Lable和ACL表,因为每个表的 匹配字段长度不一,所以可以分别设计,并且具有最大容量限制以期达到最小的开销。而在 OpenFlow交换中,不再区分匹配长度较短的FIB、MAC、MPLS Lable表以及较长的ACL表,而 一律采用具有最大长度的流表项记录代替。对OpenFlow vl. 0而言,流表的匹配字段长度 长达252位,而一般的IPv4RIB TCAM匹配字段长度只有60至80位,其开销增加了三倍以 上。因此如何减少流表的尺寸是OpenFlow面临的一个难题。
[0006] 为了解决上述问题,OpenFlow vl. 1设计了多级流表来减少流表的开销,将流表进 行特征提取,进而将匹配过程分解成多个步骤,形成流水线的处理形式,从而降低总的流表 记录条数。例如:原始流表共有10000条,如果将其分解成先匹配VLAN和MAC地址,再匹配 IP地址和传输层头部等两个独立的流表,那么每个流表的数量可能均小于1000条,使得流 表总数小于2000条。
[0007] 传统的包分类算法技术,针对传统的五元组,从各种不同的角度进行算法的设计, 如利用前缀构建字典树、利用范围构建决策树、基于维度分解的合并策略,然而这些传统的 算法并不适合这种多维字段的匹配,但是目前并没有针对超过五元组的多域进行数据包分 类的算法。
[0008] 网络流量的不断增长和流量控制粒度不断精细,使得OpenFlow交换机中的关键 字个数不断地增加,现有的OpenFlow比较成熟而内容较为新颖的标准是vl. 3,它的关键字 达到了 39个,这就使得一个大的流表不能满足查找时间的要求,而多级流标目前也只是停 留在设想阶段,目前也没有任何组织提出针对它的具体的实现方式。因此,如何划分多级流 表,划分之后使用什么算法实现数据包与规则特征库的匹配,以满足数据包的查找速度,同 时能较好的实现规则的动态更新,提出一种切实可行的符合OpenFlow交换机的报文分类 算法,成为当前需要解决的重要问题。

【发明内容】

[0009] 本发明所要解决的技术问题是提供一种报文分类方法,通过对关键字进行不同的 分类,划分出三种类型的流表,针对每一级流表,提出一种符合其特性的数据包分类算法, 最终将三种不同的算法进行级联,以实现整个交换机的报文分类。
[0010] 本发明解决上述技术问题所采取的技术方案如下:
[0011] -种OpenFlow交换机中的报文分类方法,包括:
[0012] 步骤1)预先根据交换机中所采取的规则集中各个规则中的关键词,分别按照精 准值、前缀值、范围值进行分类;
[0013] 步骤2)根据分类后的关键词对规则集中的规则构建一个三级级联的流表,用以 作为交换机对报文分类的分类依据,包括:
[0014] 根据精准值形成的第一流表TableO、根据前缀值形成的第二流表Tablel和根据 范围值形成的第二流表Tab I e2,其中,每一级流表的输入是上级流表的输出;
[0015] 步骤3)从交换机源端口接收数据流中的IP包,分别按照精确值、前缀值、范围值 提取相应的字段;
[0016] 步骤4)对接收到的IP包根据第一流表、第二流表和第二流表的顺序逐个流表进 行匹配,以此对IP包中的报文进行分类。
[0017] 进一步地,优选的是,还包括:
[0018] 步骤5)若此IP包在某一个流表中找到了对应的匹配规则,按照相应规则的动作 进行处理,并从交换机源端口接收下一个IP包;
[0019] 若没有找到与该IP包匹配的规则,则向一控制器提交信息,由控制器对上述规则 集或者流表进行后续处理。
[0020] 进一步地,优选的是,所述步骤2)中,具体包括:
[0021] 采取哈希算法、Grid of Trie算法、Hicuts树算法分别对规则集中的精确值、前缀 值、范围值进行预处理,从而根据所有规则集中的不同字段构建对应的数据结构。
[0022] 进一步地,优选的是,采取哈希算法对规则集中的精准值进行预处理,包括:
[0023] 以规则集中的精确字段部分作为输入,参数个数为numl,确定一个hash哈希函数 H(kl, k2,…,knuml),所述哈希函数米用Bloom Filter数据结构,Bloom Filter基于hash 查找,并利用位数组表示一个集合,其基于所述位数组判断一个元素是否属于这个集合;
[0024] 其中K1,K2, Knuml是指每条规则中的每个匹配字段的具体数值,Kl代表VLAN匹 配字段的一个具体数值,作为此Hash函数的参数输入;
[0025] 若不同的规则映射到相同的节点位置,则采用链表的方式进行连接,其中,Hash表 中每个节点位置存储规则的数目和代表规则优先级的id号码。
[0026] 进一步地,优选的是,采用Grid of Trie算法对前缀值进行预处理,包括:
[0027] 遍历所述Hash表中的节点位置,若当前节点中包含的的规则集个数大于给定的 第一阈值,则以该节点为根节点,利用前缀字段建立一 Grid-of-Trie数据结构;
[0028] 其中,Grid-of-Trie数据结构中每个节点都由三个分支,分别为0、1、*,其中0表 示该数值的二进制表示中某一位数值为〇, 1表示该数值的二进制表示中某一位的值为1,* 代表通配,最终匹配的规则都集中在叶节点中。
[0029] 进一步地,优选的是,采用Hicuts算法对范围值进行预处理,包括:
[0030] 遍历Grid-of-Trie树中的叶子节点,若当前节点中包含的规则集个数大于给定 的第二阈值;
[0031] 则以该节点作为根节点,利用范围字段建立对应的Hicuts数据结构,并据此存储 对应的规则,且所述Hicuts数据结构采用了一颗决策树作为快速查找的数据结构,其内部 节点包含适当的分类导向信息,但不存储任何规则,其叶节点存储一个小型的规则子集。
[0032] 进一步地,优选的是,步骤2)中,具体包括:
[0033] 对规则集中的规则进行Hash映射,判断此规则中精确值字段部分是否是通配,若 是通配,则跳至步骤(12);
[0034] 若非通配,按照预先定义的布隆过滤器(Bloom Filter)Hash数据结构,对规则做 一个映射,将其分配到相应的节点;返回到(11)开始的位置、继续处理下一条规则;
[0035] (12)在Hash表中设置一个固定的节点,用来存储内容为通配的规则,将此规则存 储在这一节点中。
[0036] 进一步地,优选的是,步骤4中,具体包括:
[0037] 基于第一流表,利用精确值字段,通过预先建立的哈希函数,定位和此数据包相匹 配的记录;
[0038] 其中,若对应记录的个数少于设定的最大值,则对该记录内的规则进行线性查找, 并找到最佳匹配的规则集,并执行对应的处理动作;
[0039] 若对应的记录个数大于设定的最大值,则进入第二流表,根据第二流表中的维度 进行最大匹配前缀的查找,直到找到最终的叶子节点;
[0040] 若该叶子节点包含的规则集小于限定的最大值,则对该叶子节点内的规则进行线 性查找,并找到最佳匹配的规则集,按照规则集中的规则对应的行为进行转发操作;
[0041] 若第二流表中的叶子节点中包含的规则集个数大于给定的最大值,则进入第三流 表,按照范围进行查找,直到最终的叶子节点,在叶子节点内进行线性查找,并找到最佳匹 配规则,按照相应的行为对IP包进行处理。
[0042] 进一步地,优选的是,步骤4中,具体包括:
[0043] 首先提取IP包的关键词,并读取第一流表TableO,判断该IP包的精确值字段是否 为通配,若为通配,直接进入Tablel ;
[0044] 否则将字段通过Hash函数进行映射,找到哈希表中与该规则匹配的节点;
[0045] 若该节点中包含的规则集的个数大于给定的阈值,此IP包进入Tablel继续匹配, 否则在该节点内对其余字段进行线性匹配,找到与该IP包最佳匹配的规则,跳至步骤5 ;
[0046] 其次进入第二流表Tablel,判断该IP包的前缀字段是否为通配,若为通配,进入 相应的分支;
[0047] 否则按照Trie的流向进入最终匹配的叶子节点,进入叶节点后,判断该叶子节点 包含的规则个数是否大于给定的阈值,若大于给定的阈值,进入第三流表Table2 ;否则在 该叶子节点中对其余的匹配域进行线性匹配,找到最佳的匹配规则,跳至步骤5 ;
[0048] 最后进入第三流表Table2,按照范围值字段进行最后的匹配,通过对范围字段的 查找,找到最佳的匹配叶子节点,在叶子节点中进行线性查找,找到最佳匹配规则。
[0049] 利用本发明,可以为解决OpenFlow交换机中软
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1