一种sdn多模块部署规则冲突的处理方法

文档序号:9455803阅读:400来源:国知局
一种sdn多模块部署规则冲突的处理方法【
技术领域
】[0001]本发明涉及SDN网络
技术领域
,尤其涉及一种SDN多模块部署规则冲突的处理方法。【
背景技术
】[0002]随着网络规模和业务的不断发展,现有的网络架构已经无法满足需求。因此,新兴的网络变革技术--软件定义网络(SDN)受到了极大的关注。SDN将传统网络设备的控制平面从数据平面分离出来,通过软件编程的方式进行集中化的控制与管理。[0003]通过SDN控制器,用户可以进行模块化编程组合的方式构建不同app以完成特定网络的功能,从而实现网络的创新。OpenFlowl.1规范推出之后,SDN的app的编写常常需要多表流水线的形式,其数据包处理流程如图1所示。数据包从第一个流表开始匹配,其整个匹配过程可能需要通过goto指令跳转到另外一个流表继续进行匹配,不同流表间通过64位的metadata进行相关联。数据包在一个流表中只查找到与之相匹配的优先级最高的流表项,然后根据流表项的动作执行进一步操作。[0004]同时,在同一台Openflow交换机上可能部署着来自不同控制平面app的流水线规贝1J,并且这些规则都需要对同一流量进行处理。因此,来自不同的app其构建的规则可能是相互重叠冲突从而导致误匹配。【
发明内容】[0005]本发明所要解决的技术问题是针对【
背景技术
】中所涉及到的缺陷,提供一种SDN多模块部署规则冲突的处理方法,以解决不同app部署在同一台openflow交换机时由于规则的重叠冲突从而导致数据包误匹配的问题。[0006]本发明为解决上述技术问题采用以下技术方案:一种SDN多模块部署规则冲突的处理方法,包含以下具体步骤:步骤1),将SDN规则以OpenFlow流表的形式进行部署,OpenFlow流表按其表项空间的包含关系抽象成以流表项为节点所组成的DAG图;步骤2),需要插入新的流表项时;步骤2.1),将新的流表项构建为DAG节点;步骤2.2),沿DAG图进行遍历,直至找到一个节点,其规则空间与步骤2.1)中构建的DAG节点的规则空间互不包含;步骤2.3),将步骤2.1)中构建的DAG节点与步骤2.2)中找到的节点的规则空间求交,将求交后形成的节点作为公共子节点;步骤2.4),将公共子节点与产生它的两个父节点所对应的下一级流表的表项分别进行关联。[0007]本发明采用以上技术方案与现有技术相比,具有以下技术效果:1.设计简单,使用方便;2.能够处理SDN中多个app部署到同一物理设备上从而产生的规则冲突和重叠,从而保证避免数据包的误匹配。【附图说明】[0008]图1是OpenFlow数据包流水线处理的示意图;图2是规则误匹配的示意图;图3是重叠规则求交的示意图;图4是流表抽象的不意图;图5是流表添加规则的示意图;图6是本发明的流程图。【具体实施方式】[0009]下面结合附图对本发明的技术方案做进一步的详细说明:本发明公开了一种SDN多模块部署规则冲突的处理方法,包含以下具体步骤:步骤1),将SDN规则以OpenFlow流表的形式进行部署,OpenFlow流表按其表项空间的包含关系抽象成以流表项为节点组成的有向无环图(DAG);步骤2),需要插入新的流表项时;步骤2.1),将新的流表项构建为DAG节点;步骤2.2),沿DAG图进行遍历,直至找到一个节点,其规则空间与步骤2.1)中构建的DAG节点的规则空间互不包含;步骤2.3),将步骤2.1)中构建的DAG节点与步骤2.2)中找到的节点的规则空间求交,将求交后形成的节点作为公共子节点;步骤2.4),将公共子节点与产生它的两个父节点所对应的下一级流表的表项分别进行关联。[0010]如图2所示,数据包在flowtable0匹配到%规则,然后执行备:所对应的动作,接着跳转到flowtable1查找metadata值为Oxl的表项进行匹配,但由于其无法匹配到F3匹配域,因此,该数据包会执行默认规则(丢掉或者上传到控制器)。但其实,该数据包能够匹配到flowtable0的规则^,并能够得到具体的转发。[0011]我们通过观察,发现来自apps的规则容易因为重叠而导致误匹配。因此,本发明的主要思想是将规则重叠的部分(各个规则的交)单独作为一个优先级更高的表项。同时,这个新的表项与冲突规则的后续表项都进行关联。通过这种方式,可以避免数据包的误匹配。同时,为了避免由于提出重叠部分而导致规则表的膨胀,本发明将每个流表抽象成一个DAG图,每个图的节点代表一个flowentry。同时,在DAG中,父节点所代表的规则的范围大于其子节点规则的范围。因此,每次有新的流表项加入DAG图时,只需要与DAG中特定的节点求交即可。[0012]本发明的核心思想是将重叠的规则取交,交的结果作为一个优先级更高的表项,同时与取交规则的后续表项相关联,如图3所示,从而避免了数据包误匹配而产生的错误操作。[0013]通过将重叠规则求交产生新的表项可能会使整个流表的规模增大,这样会增大交换机的开销。为了尽可能减少求交的次数(减少新产生的规则),本发明将流表抽象成一个DAG图,图中的父节点的规则所能表示的范围大于子节点规则所能表示的范围,如图4所不。[0014]当新流表项插入时,只需找到最合适的旧规则进行求交,所谓最合适的规则是指规则的范围最小,如图5所示。[0015]整个过程的流程图如图6所示。[0016]本
技术领域
技术人员可以理解的是,除非另外定义,这里使用的所有术语(包括技术术语和科学术语)具有与本发明所属领域中的普通技术人员的一般理解相同的意义。还应该理解的是,诸如通用字典中定义的那些术语应该被理解为具有与现有技术的上下文中的意义一致的意义,并且除非像这里一样定义,不会用理想化或过于正式的含义来解释。[0017]以上所述的【具体实施方式】,对本发明的目的、技术方案和有益效果进行了进一步详细说明,所应理解的是,以上所述仅为本发明的【具体实施方式】而已,并不用于限制本发明,凡在本发明的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。【主权项】1.一种SDN多模块部署规则冲突的处理方法,其特征在于,包含以下具体步骤:步骤1),将SDN规则以OpenFlow流表的形式进行部署,OpenFlow流表按其表项空间的包含关系抽象成以流表项为节点组成的DAG图;步骤2),需要插入新的流表项时;步骤2.1),将新的流表项构建为DAG节点;步骤2.2),沿DAG图进行遍历,直至找到一个节点,其规则空间与步骤2.1)中构建的DAG节点的规则空间互不包含;步骤2.3),将步骤2.1)中构建的DAG节点与步骤2.2)中找到的节点的规则空间求交,将求交后形成的节点作为公共子节点;步骤2.4),将公共子节点与产生它的两个父节点所对应的下一级流表的表项分别进行关联。【专利摘要】本发明公开了一种SDN多模块部署规则冲突的处理方法,将SDN规则以OpenFlow流表的形式进行部署,其中,OpenFlow流表按其表项空间的包含关系抽象成以流表项为节点组成的DAG图;需要插入新的流表项时,首先将新的流表项构建为DAG节点;然后沿DAG图进行遍历,直至找到一个节点,其规则空间与构建的DAG节点的规则空间互不包含;接着,将构建的DAG节点与找到的节点的规则空间求交,将求交后形成的节点作为公共子节点;最后,将公共子节点与产生它的两个父节点所对应的下一级流表的表项分别进行关联。本发明设计简单,使用方便,能够处理SDN中多个app部署到同一物理设备上从而产生的规则冲突和重叠,从而保证避免数据包的误匹配。【IPC分类】H04L12/757,H04L12/753,H04L12/721【公开号】CN105207912【申请号】CN201510590338【发明人】潘恒,温曙光,谢高岗,关洪涛,贺鹏,姜海洋【申请人】江苏省未来网络创新研究院【公开日】2015年12月30日【申请日】2015年9月16日
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1