一种软件定义网络的规则动态下发方法和装置.pdf

上传人:g**** 文档编号:4039116 上传时间:2018-08-12 格式:PDF 页数:19 大小:975.98KB
返回 下载 相关 举报
摘要
申请专利号:

CN201510071176.0

申请日:

2015.02.10

公开号:

CN104715019A

公开日:

2015.06.17

当前法律状态:

授权

有效性:

有权

法律详情:

授权|||实质审查的生效IPC(主分类):G06F 17/30申请日:20150210|||公开

IPC分类号:

G06F17/30; H04L29/08

主分类号:

G06F17/30

申请人:

清华大学

发明人:

李军; 陈昌; 胡效赫; 王翔; 向阳

地址:

100084北京市海淀区清华园100084-82信箱

优先权:

专利代理机构:

北京路浩知识产权代理有限公司11002

代理人:

李相雨

PDF下载: PDF下载
内容摘要

本发明提供了一种软件定义网络的规则动态下发方法,包括S1.将规则全集R构建若干规则子集RS,使每个规则子集RS中的规则均满足完全层次嵌套关系,并将每个规则子集RS生成为一个完全层次嵌套树;S2.根据各规则子集生成的完全层次嵌套树以及上传的网包,构建相应的下发规则;S3.对上述构建的下发规则进行几何空间“相交”操作,得到最终的单个下发规则,再进行规则下发操作。本发明所述的软件定义网络的规则动态下发方法能够在保证控制面与数据面决策一致性的前提下,极大地提高下发规则的流量有效覆盖范围,显著节省设备内存占用、减小规则缺失的发生率。

权利要求书

权利要求书
1.  一种软件定义网络的规则动态下发方法,其特征在于,包括:
S1.将规则全集R构建若干规则子集RS,使每个规则子集RS中的规则均满足完全层次嵌套关系,并将每个规则子集RS生成为一个完全层次嵌套树;
其中,一个规则子集为RS={R1,R2,…,Rn};其中R1,R2,…,Rn为规则子集中的规则;Rn.match={[Rns1,Rne1],[Rns2,Rne2],…,[RnsD,RneD]};Rn.match表示规则Rn的匹配范围,共有D个维度,D≥1,[Rnsd,Rned]表示规则Rn在第d个维度上的匹配范围,1≤d≤D;
对于一个规则子集RS={R1,R2,…,Rn}中的任意两个规则Ri和Rj,对于任意维度d,若满足以下关系,则该规则子集中的规则均满足完全层次嵌套关系,1≤i<j≤n:
[Risd,Ried]⊆[Rjsd,Rjed],]]>即Ri嵌套于Rj中;
S2.根据各规则子集生成的完全层次嵌套树以及上传的网包,构建相应的下发规则;
其中,具体的构建过程包括:
S21.读取上报的网包P,得到P.match,记为Rm;其中,P.value={p1,p2,…,pD},P.value表示网包P包头域的具体取值,共有D个维度,其中第d个维度的取值为pd;P.match表示网包P匹配的规则中的优先级最高的规则;
S22.读取完全层次嵌套树T,判断Rm是否为T的叶子结点;
S23.若Rm为T的叶子结点,则返回Rm;若Rm不是T的叶子结点,令Rout=Rm;将T中Rout的所有子节点送入队列Q;
S24.判断队列Q是否为空,若为空,则返回Rout作为下发规则;若不为空,则从Q中取出规则Robs;按照体积损失最小原则,选取一个维度切分Rout,使切分后的Rout与Robs不交叠;
S3.对上述构建的下发规则进行几何空间“相交”操作,得到最终的单个下发规则,再进行规则下发操作。
所述“相交”操作,为通过计算得到上述构建的所有规则的匹配范围的重叠区域,作为最终规则的匹配范围。

2.  根据权利要求1所述的软件定义网络的规则动态下发方法,其特征在于,还包括S4.对规则全集进行增量更新,具体包括:
S41.利用S1所述的方法将增加的所有规则划分为若干规则子集,构建相应的完全层次嵌套树;将所有构建的完全层次嵌套树送入队列Q_add;
S42.判断Q_add是否为空,若是,则结束增量更新;否则,从Q_add中取出Branch,取Branch的根结点R;
S43.将规则子集RS中的所有完全层次嵌套树送入队列Q_original;
S44.判断Q_original是否为空,若是,则向规则子集RS添加一个完全层次嵌套树,初始化为Branch,返回执行S42;否则,从Q_original中取出T;
S45.判断R.start.match是否等于R.end.match,其中,R.start={Rs1,Rs2,…,RsD},R.end={Re1,Re2,…,ReD},若不等于,则返回步骤S44;否则,令Rm为R.start.match;将Rm所有子结点入队列Qc,初始化列表subR为空;
S46.判断Qc是否为空;若为空,则R根据subR中规则添加子结点,Rm根据subR中规则删除子结点,Rm添加子结点R,返回执行S42;否则从Qc中取出规则Rc;
S47.判断Rc是否嵌套于R,若是,则将Rc加入subR,返回执行S46;否则判断Rc与R是否交叠,若是,则向规则子集RS添加一个完全层次嵌套树,初始化为Branch,返回执行S42;否则返回执行S46。

3.  一种软件定义网络的规则动态下发装置,其特征在于,包括预处理单元、下发规则构建单元和规则动态下发单元;
所述预处理单元,用于将规则全集R构建若干规则子集RS,使每 个规则子集RS中的规则均满足完全层次嵌套关系,并将每个规则子集RS生成为一个完全层次嵌套树;
其中,一个规则子集为RS={R1,R2,…,Rn};其中R1,R2,…,Rn为规则子集中的规则;Rn.match={[Rns1,Rne1],[Rns2,Rne2],…,[RnsD,RneD]};Rn.match表示规则Rn的匹配范围,共有D个维度,D≥1,[Rnsd,Rned]表示规则Rn在第d个维度上的匹配范围,1≤d≤D;
对于一个规则子集RS={R1,R2,…,Rn}中的任意两个规则Ri和Rj,对于任意维度d,若满足以下关系,则该规则子集中的规则均满足完全层次嵌套关系,1≤i<j≤n:
[Risd,Ried]⊆[Rjsd,Rjed],]]>即Ri嵌套于Rj中;
所述下发规则构建单元,用于根据各规则子集生成的完全层次嵌套树以及上传的网包,构建相应的下发规则;
其中,具体的构建过程包括:
读取上报的网包P,得到P.match,记为Rm;其中,P.value={p1,p2,…,pD},P.value表示网包P包头域的具体取值,共有D个维度,其中第d个维度的取值为pd;P.match表示网包P匹配的规则中的优先级最高的规则;
读取完全层次嵌套树T,判断Rm是否为T的叶子结点;
若Rm为T的叶子结点,则返回Rm;若Rm不是T的叶子结点,令Rout=Rm;将T中Rout的所有子节点送入队列Q;
判断队列Q是否为空,若为空,则返回Rout作为下发规则;若不为空,则从Q中取出规则Robs;按照体积损失最小原则,选取一个维度切分Rout,使切分后的Rout与Robs不交叠;
所述规则动态下发单元用于对上述构建的下发规则进行几何空间“相交”操作,得到最终的单个下发规则,再进行规则下发操作;
所述“相交”操作,为通过计算得到上述构建的所有规则的匹配范围的重叠区域,作为最终规则的匹配范围。

4.  根据权利要求3所述的软件定义网络的规则动态下发装置,其特征在于,还包括规则更新单元,用于对规则全集进行增量更新,具体包括:
A1.利用所述预处理单元将增加的所有规则划分为若干规则子集,构建相应的完全层次嵌套树;将所有构建的完全层次嵌套树送入队列Q_add;
A2.判断Q_add是否为空,若是,则结束增量更新;否则,从Q_add中取出Branch,取Branch的根结点R;
A3.将规则子集RS中的所有完全层次嵌套树送入队列Q_original;
A4.判断Q_original是否为空,若是,则向规则子集RS添加一个完全层次嵌套树,初始化为Branch,返回执行A2;否则,从Q_original中取出T;
A5.判断R.start.match是否等于R.end.match,其中,R.start={Rs1,Rs2,…,RsD},R.end={Re1,Re2,…,ReD},若不等于,则返回步骤A4;否则,令Rm为R.start.match;将Rm所有子结点入队列Qc,初始化列表subR为空;
A6.判断Qc是否为空;若为空,则R根据subR中规则添加子结点,Rm根据subR中规则删除子结点,Rm添加子结点R,返回执行A2;否则从Qc中取出规则Rc;
A7.判断Rc是否嵌套于R,若是,则将Rc加入subR,返回执行A4;否则判断Rc与R是否交叠,若是,则向规则子集RS添加一个完全层次嵌套树,初始化为Branch,返回执行A2;否则返回执行A6。

5.  根据权利要求3或4所述的软件定义网络的规则动态下发装置,其特征在于,所述软件定义网络的规则动态下发装置可安装于控制面的控制器上,根据数据面的网络设备上传的规则缺失信息动态构建并下发相应规则。

6.  根据权利要求3或4所述的软件定义网络的规则动态下发装置,其特征在于,所述软件定义网络的规则动态下发装置可安装于控制面 的控制器与数据面的网络设备之间,根据数据面的网络设备上传的规则缺失信息动态构建并下发相应规则。

说明书

说明书一种软件定义网络的规则动态下发方法和装置
技术领域
本发明涉及网络过滤和监控技术领域,具体涉及一种软件定义网络的规则动态下发方法和装置。
背景技术
软件定义网络(SDN)是一种新型网络架构。其通过将网络设备的控制面从数据面中剥离,将控制逻辑集中于一个专用的控制器当中,可实现对网络功能更为集中和灵活的管控。在SDN的数据面,每个网络设备根据自身存储的规则集合对流经自身的网包进行分类,即寻找与网包匹配的规则并做出相应的处理决策。其中每个网络设备中的规则集由SDN控制面的控制器下发:即控制器负责处理全局控制逻辑,并通过规则下发算法向各个网络设备下发相应的规则集。
控制器或网络设备中存储的规则可用计算几何学进行模型化描述:规则中每个域的取值范围张成整个多维空间,每个规则对应该多维空间中的一个超长方体,每个网包包头中的相关域取值对应该空间中的一个点。若某个网包对应的点落入某条规则对应的超长方体,则称该网包与该条规则匹配。一个网包可能与多条规则匹配,此时选取其中优先级最高的规则进行相应处理。
控制器向网络设备的规则动态下发方法直接影响网络设备对流量的处理性能:1)网络设备的规则存储空间有限,下发过多的规则会超出其处理能力。2)若网包未在网络设备中找到匹配规则(称为规则缺失),则网络设备会将该网包信息动态上传至控制器,等待控制器下发相应规则再做处理。若控制器下发的规则体积较小,则规则缺失较多,导致网络设备对流量的平均处理速率降低;若控制器下发的规则体积过大,则可能导致网络设备与控制器的决策不一致。因此,保证一致 性并高效的动态规则下发方法在学术界和工业界备受关注。
现有动态规则下发的代表性方法包括:根据上传的网包信息下发精确匹配(即无通配符)的规则,此方法能保证决策一致性但会引发大量规则缺失;根据上传的网包信息将所有与命中规则相依赖的规则悉数下发,此方法往往占用过多设备存储空间,甚至超出设备存储上限。
发明内容
针对现有技术的不足,本发明提供一种软件定义网络的规则动态下发方法和装置,能够在保证控制面与数据面决策一致性的前提下,极大地提高下发规则的流量有效覆盖范围,显著节省设备内存占用、减小规则缺失的发生率。
为实现上述目的,本发明通过以下技术方案予以实现:
第一方面,本发明提供了一种软件定义网络的规则动态下发方法,包括:
S1.将规则全集R构建若干规则子集RS,使每个规则子集RS中的规则均满足完全层次嵌套关系,并将每个规则子集RS生成为一个完全层次嵌套树;
其中,一个规则子集为RS={R1,R2,…,Rn};其中R1,R2,…,Rn为规则子集中的规则;Rn.match={[Rns1,Rne1],[Rns2,Rne2],…,[RnsD,RneD]};Rn.match表示规则Rn的匹配范围,共有D个维度,D≥1,[Rnsd,Rned]表示规则Rn在第d个维度上的匹配范围,1≤d≤D;
对于一个规则子集RS={R1,R2,…,Rn}中的任意两个规则Ri和Rj,对于任意维度d,若满足以下关系,则该规则子集中的规则均满足完全层次嵌套关系,1≤i<j≤n:
[Risd,Ried]⊆[Rjsd,Rjed],]]>即Ri嵌套于Rj中;
S2.根据各规则子集生成的完全层次嵌套树以及上传的网包,构建 相应的下发规则;
其中,具体的构建过程包括:
S21.读取上报的网包P,得到P.match,记为Rm;其中,P.value={p1,p2,…,pD},P.value表示网包P包头域的具体取值,共有D个维度,其中第d个维度的取值为pd;P.match表示网包P匹配的规则中的优先级最高的规则;
S22.读取完全层次嵌套树T,判断Rm是否为T的叶子结点;
S23.若Rm为T的叶子结点,则返回Rm;若Rm不是T的叶子结点,令Rout=Rm;将T中Rout的所有子节点送入队列Q;
S24.判断队列Q是否为空,若为空,则返回Rout作为下发规则;若不为空,则从Q中取出规则Robs;按照体积损失最小原则,选取一个维度切分Rout,使切分后的Rout与Robs不交叠;
S3.对上述构建的下发规则进行几何空间“相交”操作,得到最终的单个下发规则,再进行规则下发操作;
所述“相交”操作,为通过计算得到上述构建的所有规则的匹配范围的重叠区域,作为最终规则的匹配范围。
其中,所述的软件定义网络的规则动态下发方法,还包括S4.对规则全集进行增量更新,具体包括:
S41.利用S1所述的方法将增加的所有规则划分为若干规则子集,构建相应的完全层次嵌套树;将所有构建的完全层次嵌套树送入队列Q_add;
S42.判断Q_add是否为空,若是,则结束增量更新;否则,从Q_add中取出Branch,取Branch的根结点R;
S43.将规则子集RS中的所有完全层次嵌套树送入队列Q_original;
S44.判断Q_original是否为空,若是,则向规则子集RS添加一个完全层次嵌套树,初始化为Branch,返回执行S42;否则,从Q_original中取出T;
S45.判断R.start.match是否等于R.end.match,其中,R.start={Rs1, Rs2,…,RsD},R.end={Re1,Re2,…,ReD},若不等于,则返回步骤S44;否则,令Rm为R.start.match;将Rm所有子结点入队列Qc,初始化列表subR为空;
S46.判断Qc是否为空;若为空,则R根据subR中规则添加子结点,Rm根据subR中规则删除子结点,Rm添加子结点R,返回执行S42;否则从Qc中取出规则Rc;
S47.判断Rc是否嵌套于R,若是,则将Rc加入subR,返回执行S46;否则判断Rc与R是否交叠,若是,则向规则子集RS添加一个完全层次嵌套树,初始化为Branch,返回执行S42;否则返回执行S46。
第二方面,本发明还提供了一种软件定义网络的规则动态下发装置,包括预处理单元、下发规则构建单元和规则动态下发单元;
所述预处理单元,用于将规则全集R构建若干规则子集RS,使每个规则子集RS中的规则均满足完全层次嵌套关系,并将每个规则子集RS生成为一个完全层次嵌套树;
其中,一个规则子集为RS={R1,R2,…,Rn};其中R1,R2,…,Rn为规则子集中的规则;Rn.match={[Rns1,Rne1],[Rns2,Rne2],…,[RnsD,RneD]};Rn.match表示规则Rn的匹配范围,共有D个维度,D≥1,[Rnsd,Rned]表示规则Rn在第d个维度上的匹配范围,1≤d≤D;
对于一个规则子集RS={R1,R2,…,Rn}中的任意两个规则Ri和Rj,对于任意维度d,若满足以下关系,则该规则子集中的规则均满足完全层次嵌套关系,1≤i<j≤n:
[Risd,Ried]⊆[Rjsd,Rjed],]]>即Ri嵌套于Rj中;
所述下发规则构建单元,用于根据各规则子集生成的完全层次嵌套树以及上传的网包,构建相应的下发规则;
其中,具体的构建过程包括:
读取上报的网包P,得到P.match,记为Rm;其中,P.value={p1,p2,…,pD},P.value表示网包P包头域的具体取值,共有D个维度, 其中第d个维度的取值为pd;P.match表示网包P匹配的规则中的优先级最高的规则;
读取完全层次嵌套树T,判断Rm是否为T的叶子结点;
若Rm为T的叶子结点,则返回Rm;若Rm不是T的叶子结点,令Rout=Rm;将T中Rout的所有子节点送入队列Q;
判断队列Q是否为空,若为空,则返回Rout作为下发规则;若不为空,则从Q中取出规则Robs;按照体积损失最小原则,选取一个维度切分Rout,使切分后的Rout与Robs不交叠;
所述规则动态下发单元用于对上述构建的下发规则进行几何空间“相交”操作,得到最终的单个下发规则,再进行规则下发操作;
所述“相交”操作,为通过计算得到上述构建的所有规则的匹配范围的重叠区域,作为最终规则的匹配范围。
其中,所述的软件定义网络的规则动态下发装置,还包括规则更新单元,用于对规则全集进行增量更新,具体包括:
A1.利用所述预处理单元将增加的所有规则划分为若干规则子集,构建相应的完全层次嵌套树;将所有构建的完全层次嵌套树送入队列Q_add;
A2.判断Q_add是否为空,若是,则结束增量更新;否则,从Q_add中取出Branch,取Branch的根结点R;
A3.将规则子集RS中的所有完全层次嵌套树送入队列Q_original;
A4.判断Q_original是否为空,若是,则向规则子集RS添加一个完全层次嵌套树,初始化为Branch,返回执行A2;否则,从Q_original中取出T;
A5.判断R.start.match是否等于R.end.match,其中,R.start={Rs1,Rs2,…,RsD},R.end={Re1,Re2,…,ReD},若不等于,则返回步骤A4;否则,令Rm为R.start.match;将Rm所有子结点入队列Qc,初始化列表subR为空;
A6.判断Qc是否为空;若为空,则R根据subR中规则添加子结点, Rm根据subR中规则删除子结点,Rm添加子结点R,返回执行A2;否则从Qc中取出规则Rc;
A7.判断Rc是否嵌套于R,若是,则将Rc加入subR,返回执行A4;否则判断Rc与R是否交叠,若是,则向规则子集RS添加一个完全层次嵌套树,初始化为Branch,返回执行A2;否则返回执行A6。
其中,所述软件定义网络的规则动态下发装置可安装于控制面的控制器上,根据数据面的网络设备上传的规则缺失信息动态构建并下发相应规则。
其中,所述软件定义网络的规则动态下发装置可安装于控制面的控制器与数据面的网络设备之间,根据数据面的网络设备上传的规则缺失信息动态构建并下发相应规则。
本发明所述的软件定义网络的规则动态下发方法能够在保证控制面与数据面决策一致性的前提下,极大地提高下发规则的流量有效覆盖范围,显著节省设备内存占用、减小规则缺失的发生率。本发明所述的软件定义网络的规则动态下发装置可安装在软件定义网络控制面的控制器上,或安装于控制器与数据面网络设备之间。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1示出了本发明实施例一提供的软件定义网络的规则动态下发方法的流程图;
图2示出了实施例一步骤101预处理过程的流程图;
图3示出了构建下发规则的过程流程图;
图4示出了对规则全集进行增量更新的流程图;
图5描述了表1定义的规则全集的几何模型;
图6描述了一种基于表1定义的规则全集,针对一个规则缺失的上报网包信息动态下发的规则示例图;
图7示出了本发明实施例二提供的软件定义网络的规则动态装置的结构示意图;
图8示出了本发明实施例二所提出的规则动态下发装置的另一种结构示意图;
图9示出了描述了规则动态下发装置的部署位置示意图。
具体实施方式
为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整的描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
本发明实施例一提供了一种软件定义网络的规则动态下发方法,参见图1,包括:
步骤101:将规则全集R构建若干规则子集RS,使每个规则子集RS中的规则均满足完全层次嵌套关系,并将每个规则子集RS生成为一个完全层次嵌套树。
在本步骤中,一个规则子集为RS={R1,R2,…,Rn};其中R1,R2,…,Rn为规则子集中的规则;Rn.match={[Rns1,Rne1],[Rns2,Rne2],…,[RnsD,RneD]};Rn.match表示规则Rn的匹配范围,共有D个维度,D≥1,[Rnsd,Rned]表示规则Rn在第d个维度上的匹配范围,1≤d≤D;
对于一个规则子集RS={R1,R2,…,Rn}中的任意两个规则Ri和Rj,对于任意维度d,若满足以下关系,则该规则子集中的规则均 满足完全层次嵌套关系,1≤i<j≤n:
[Risd,Ried]⊆[Rjsd,Rjed],]]>即Ri嵌套于Rj中;
这里以任意两个规则R1、R2为例介绍规则之间的关系,其中任意两个规则之间的关系共有四种情况。具体如下:
1)不交叠:若存在某维度d,则称R1与R2不交叠(否则,称R1与R2交叠)。
2)嵌套:若对任意维度d,则称R1嵌套于R2中。
3)交叉:若R1与R2交叠,且同时存在维度d1,d2,满足R1ed1]⋐[R2sd1,R2ed1],[R1sd2,R1ed2]⊃[R2sd2,R2ed2],]]>则称R1与R2交叉。
4)偏交叠:若R1、R2的关系不属于以上三种关系中的任意一种,则称二者偏交叠。
本步骤中规则集满足完全层次嵌套关系指的就是规则集中的任意两个规则都满足上述关系2)。
本步骤中的预处理过程具体可参见图2所示的流程图。
另外,本步骤中,还需要将上述所有层次嵌套树数据结构部署到相应的共享存储位置上。
步骤102:根据各规则子集生成的完全层次嵌套树以及上传的网包,构建相应的下发规则。
在本步骤中,可以采用规则构建引擎构建规则,每个下发规则构建引擎的规则构建如图3所示,具体的构建过程包括:
S21.读取上报的网包P,得到P.match,记为Rm;其中,P.value={p1,p2,…,pD},P.value表示网包P包头域的具体取值,共有D个维度,其中第d个维度的取值为pd;P.match表示网包P匹配的规则中的优先级最高的规则;
S22.读取完全层次嵌套树T,判断Rm是否为T的叶子结点;
S23.若Rm为T的叶子结点,则返回Rm;若Rm不是T的叶子结 点,令Rout=Rm;将T中Rout的所有子节点送入队列Q;
S24.判断队列Q是否为空,若为空,则返回Rout作为下发规则;若不为空,则从Q中取出规则Robs;按照体积损失最小原则,选取一个维度切分Rout,使切分后的Rout与Robs不交叠;
步骤103:对上述构建的下发规则进行几何空间“相交”操作,得到最终的单个下发规则,再进行规则下发操作。
在本步骤中,所述“相交”操作,为通过计算得到上述构建的所有规则的匹配范围的重叠区域,作为最终规则的匹配范围。
从步骤102和步骤103的描述可见,规则动态下发实际包含两个步骤:1)根据所有完全层次嵌套树,并行构建各规则子集对应的下发规则。2)对上述各引擎构建的规则进行几何空间“相交”操作,得到最终的单个下发规则,并进行规则下发。
在本发明的一个优选实施例中,所述的软件定义网络的规则动态下发方法,还包括:
步骤104:对规则全集进行增量更新。
在本步骤中,当对规则全集进行增量更新时,在不破坏层次嵌套关系的前提下更新相关的规则子集层次嵌套树,参见图3,增加一组规则的处理流程如图4所示,对规则全集进行增量更新具体包括:
S41.利用步骤101所述的方法将增加的所有规则划分为若干规则子集,构建相应的完全层次嵌套树;将所有构建的完全层次嵌套树送入队列Q_add;
S42.判断Q_add是否为空,若是,则结束增量更新;否则,从Q_add中取出分支Branch,取Branch的根结点R;
S43.将规则子集RS中的所有完全层次嵌套树送入队列Q_original;
S44.判断Q_original是否为空,若是,则向规则子集RS添加一个完全层次嵌套树,初始化为Branch,返回执行S42;否则,从Q_original中取出T;
S45.判断R.start.match是否等于R.end.match,其中,左端点 R.start={Rs1,Rs2,…,RsD},右端点R.end={Re1,Re2,…,ReD},若不等于,则返回步骤S44;否则,令Rm为R.start.match;将Rm所有子结点入队列Qc,初始化列表subR为空;
S46.判断Qc是否为空;若为空,则R根据subR中规则添加子结点,Rm根据subR中规则删除子结点,Rm添加子结点R,返回执行S42;否则从Qc中取出规则Rc;
S47.判断Rc是否嵌套于R,若是,则将Rc加入subR,返回执行S46;否则判断Rc与R是否交叠,若是,则向规则子集RS添加一个完全层次嵌套树,初始化为Branch,返回执行S42;否则返回执行S46。
其中对于删除一组规则的处理:依次删除每一条规则。其中删除每一条规则时,先将该规则的所有子结点交由该规则的父结点作为子结点,再删除该规则结点。
表1描述了控制器上的规则全集,其中所有规则基于X、Y两个域进行描述。
表1
RulePriorityField-XField-YActionR11[0,3][0,13]Action1R25[13,15][10,12]Action2R39[8,15][9,12]Action3R410[10,15][5,6]Action4R536[0,5][3,15]Action5R6120[0,15][0,2]Action6R7200[8,15][5,12]Action7R8999[0,15][0,15]Action8
上述priority一列表示表示规则R的优先级R.priority,数值越低表示该规则优先级越高;上述Action一列表示规则R被匹配后所执行的操作R.action。
上表所述的规则子集为R={R1,R2,…,R8};其中R1,R2,…,R8为规则子集中的规则;如对上表中的规则R1:R1.match={[0,3],[0,13]};R1.priority=1,R1.action=Action1,该规则子集的维度为2。
图5描述了表1定义的规则全集的几何模型。图6描述了一种基于表1定义的规则全集,针对一个规则缺失的上报网包信息动态下发的规则示例图。P点描述了该上报网包信息相关域的取值:X=12,Y=7。阴影部分描述了一种能够保证一致性的下发规则:X属于[8,15],Y属于[7,8]。定义上报网包P:P.value={p1,p2,…,pD},P.match=R。其中P.value表示网包P包头域的具体取值,共有D个维度,其中第i个维度的取值为pi;P.match表示所有网包P匹配的规则(若对每个维度,P的取值都落入R的匹配范围中,则称P匹配R)中优先级最高的规则,即网包P的命中规则,该规则可用网包分类算法快速计算找到。对上述示例,P.value={12,7},P.match=R7。
本发明实施例所述的软件定义网络的规则动态下发方法能够在保证控制面与数据面决策一致性的前提下,极大地提高下发规则的流量有效覆盖范围,显著节省设备内存占用、减小规则缺失的发生率。
本发明实施例二还提供了一种软件定义网络的规则动态下发装置,参见图7,包括预处理单元11、下发规则构建单元22和规则动态下发单元33;
所述预处理单元11,用于将规则全集R构建若干规则子集RS,使每个规则子集RS中的规则均满足完全层次嵌套关系,并将每个规则子集RS生成为一个完全层次嵌套树;
其中,一个规则子集为RS={R1,R2,…,Rn};其中R1,R2,…,Rn为规则子集中的规则;Rn.match={[Rns1,Rne1],[Rns2,Rne2],…,[RnsD,RneD]};Rn.match表示规则Rn的匹配范围,共有D个维度,D≥1,[Rnsd,Rned]表示规则Rn在第d个维度上的匹配范围,1≤d≤D;
对于一个规则子集RS={R1,R2,…,Rn}中的任意两个规则Ri 和Rj,对于任意维度d,若满足以下关系,则该规则子集中的规则均满足完全层次嵌套关系,1≤i<j≤n:
[Risd,Ried]⊆[Rjsd,Rjed],]]>即Ri嵌套于Rj中;
所述下发规则构建单元22,用于根据各规则子集生成的完全层次嵌套树以及上传的网包,构建相应的下发规则;
其中,具体的构建过程包括:
读取上报的网包P,得到P.match,记为Rm;其中,P.value={p1,p2,…,pD},P.value表示网包P包头域的具体取值,共有D个维度,其中第d个维度的取值为pd;P.match表示网包P匹配的规则中的优先级最高的规则;
读取完全层次嵌套树T,判断Rm是否为T的叶子结点;
若Rm为T的叶子结点,则返回Rm;若Rm不是T的叶子结点,令Rout=Rm;将T中Rout的所有子节点送入队列Q;
判断队列Q是否为空,若为空,则返回Rout作为下发规则;若不为空,则从Q中取出规则Robs;按照体积损失最小原则,选取一个维度切分Rout,使切分后的Rout与Robs不交叠;
所述规则动态下发单元33用于对上述构建的下发规则进行几何空间“相交”操作,得到最终的单个下发规则,再进行规则下发操作。
所述“相交”操作,为通过计算得到上述构建的所有规则的匹配范围的重叠区域,作为最终规则的匹配范围。
在本发明的一个优选实施例中,所述的软件定义网络的规则动态下发装置,还包括规则更新单元44,用于对规则全集进行增量更新,具体包括:
A1.利用所述预处理单元将增加的所有规则划分为若干规则子集,构建相应的完全层次嵌套树;将所有构建的完全层次嵌套树送入队列Q_add;
A2.判断Q_add是否为空,若是,则结束增量更新;否则,从Q_add中取出Branch,取Branch的根结点R;
A3.将规则子集RS中的所有完全层次嵌套树送入队列Q_original;
A4.判断Q_original是否为空,若是,则向规则子集RS添加一个完全层次嵌套树,初始化为Branch,返回执行A2;否则,从Q_original中取出T;
A5.判断R.start.match是否等于R.end.match,其中,R.start={Rs1,Rs2,…,RsD},R.end={Re1,Re2,…,ReD},若不等于,则返回步骤A4;否则,令Rm为R.start.match;将Rm所有子结点入队列Qc,初始化列表subR为空;
A6.判断Qc是否为空;若为空,则R根据subR中规则添加子结点,Rm根据subR中规则删除子结点,Rm添加子结点R,返回执行A2;否则从Qc中取出规则Rc;
A7.判断Rc是否嵌套于R,若是,则将Rc加入subR,返回执行A4;否则判断Rc与R是否交叠,若是,则向规则子集RS添加一个完全层次嵌套树,初始化为Branch,返回执行A2;否则返回执行A6。
图8示出了本发明实施例二所提出的规则动态下发装置的另一种结构示意图。
预处理单元:根据规则全集,预处理引擎将所有规则划分为若干子集,对每个子集生成层次嵌套树数据结构,并将上述所有数据结构放置在规则动态下发单元可读取的位置。
规则更新单元:当发生对规则全集的增量更新时,规则更新处理引擎在不破坏层次嵌套关系的前提下更新相关的规则子集层次嵌套树。
下发规则构建单元和规则动态下发单元:每个预处理单元生成的规则子集层次嵌套树对应一个下发规则构建引擎。使用层次嵌套树数据结构,各构建引擎并行构建各规则子集对应的下发规则。之后,结果合并引擎对所有构建引擎得到的规则进行几何空间“相交”操作,得到最终的下发规则。
其中,所述软件定义网络的规则动态下发装置可安装于控制面的 控制器上,根据数据面的网络设备上传的规则缺失信息动态构建并下发相应规则。
另外,所述软件定义网络的规则动态下发装置可安装于控制面的控制器与数据面的网络设备之间,根据数据面的网络设备上传的规则缺失信息动态构建并下发相应规则。
图9描述了规则动态下发装置的部署位置。其与SDN控制器共享存储规则全集,根据网络设备上传的规则缺失信息动态构建并下发相应规则。
本发明实施例所述的软件定义网络的规则动态下发装置可安装在软件定义网络控制面的控制器上,或安装于控制器与数据面网络设备之间。本发明实施例所述的软件定义网络的规则动态下发装置能够在保证控制面与数据面决策一致性的前提下,极大地提高下发规则的流量有效覆盖范围,显著节省设备内存占用、减小规则缺失的发生率。
以上实施例仅用于说明本发明的技术方案,而非对其限制;尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的精神和范围。

一种软件定义网络的规则动态下发方法和装置.pdf_第1页
第1页 / 共19页
一种软件定义网络的规则动态下发方法和装置.pdf_第2页
第2页 / 共19页
一种软件定义网络的规则动态下发方法和装置.pdf_第3页
第3页 / 共19页
点击查看更多>>
资源描述

《一种软件定义网络的规则动态下发方法和装置.pdf》由会员分享,可在线阅读,更多相关《一种软件定义网络的规则动态下发方法和装置.pdf(19页珍藏版)》请在专利查询网上搜索。

本发明提供了一种软件定义网络的规则动态下发方法,包括S1.将规则全集R构建若干规则子集RS,使每个规则子集RS中的规则均满足完全层次嵌套关系,并将每个规则子集RS生成为一个完全层次嵌套树;S2.根据各规则子集生成的完全层次嵌套树以及上传的网包,构建相应的下发规则;S3.对上述构建的下发规则进行几何空间“相交”操作,得到最终的单个下发规则,再进行规则下发操作。本发明所述的软件定义网络的规则动态下发方。

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 物理 > 计算;推算;计数


copyright@ 2017-2020 zhuanlichaxun.net网站版权所有
经营许可证编号:粤ICP备2021068784号-1