CN105897493A - 一种sdn规则冲突的检测方法 - Google Patents
一种sdn规则冲突的检测方法 Download PDFInfo
- Publication number
- CN105897493A CN105897493A CN201610494049.6A CN201610494049A CN105897493A CN 105897493 A CN105897493 A CN 105897493A CN 201610494049 A CN201610494049 A CN 201610494049A CN 105897493 A CN105897493 A CN 105897493A
- Authority
- CN
- China
- Prior art keywords
- rule
- request
- conflict
- field
- appid
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L43/00—Arrangements for monitoring or testing data switching networks
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L41/00—Arrangements for maintenance, administration or management of data switching networks, e.g. of packet switching networks
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L43/00—Arrangements for monitoring or testing data switching networks
- H04L43/08—Monitoring or testing based on specific metrics, e.g. QoS, energy consumption or environmental parameters
Landscapes
- Engineering & Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Environmental & Geological Engineering (AREA)
- Data Exchanges In Wide-Area Networks (AREA)
Abstract
本发明公开了一种SDN规则冲突的检测方法,通过规范上层应用向SDN控制器提交的规则下发请求的内容,提出了一种通用化的规则冲突检测方法;同时SDN控制器按时间片接收多个规则下发请求,在时间片内将规则下发请求按照下发到的交换机分发给多个线程处理,提高了冲突检测检测方法的效率。因而,具有扩展性和高效性,能够促进SDN技术在实际网络环境中的应用。
Description
技术领域
本发明属于光通信技术领域,更为具体地讲,涉及一种SDN规则冲突的检测方法。
背景技术
随着网络规模的急剧膨胀和应用类型的不断丰富,因特网作为社会基础设施至关重要的一部分,结构和功能日趋复杂,管控能力日趋减弱。尤其作为网络核心的路由器,承载功能不断扩展,如分组过滤、区分服务、多播、服务质量(QoS)、流量工程等,路由器最初定义的“哑的、简单的”数据转发单元已经变得臃肿不堪。从路由器当前主要厂商的发展趋势来看,性能提升和功能扩展依然是其主要研发目标。为了解决现有TCP/IP体系结构面临的诸多难题,世界各国已经大规模开展未来互联网的研究,如美国的GENI、欧盟的FIRE、日本的JGN2plus和我国的SOFIA等。研究未来互联网体系结构首先考虑的是网络核心设备路由器的重新设计和部署,允许用户自行定义路由器功能模块,实现适应未来互联网发展的新型协议功能。
OpenFlow是斯坦福大学提出的一个实现SDN思想的协议。SDN从被提出开始,就受到了学术界和工业界的广泛关注。
SDN的模式适应了降低网络复杂度、虚拟化及云计算的网络需求,使得传统的网络设备从封闭走向开放,实现了转发平面、控制平面和应用平面的分离,底层转发设备功能专注而简化,控制平面通过规范的接口与转发设备通信,同时为网络应用提供可扩展的接口,便于进行统一、灵活、高效的网络管理和维护。
目前,随着OpenFlow规范的不断更新,支持OpenFlow标准的硬件交换机日益丰富。同时,软件形态的虚拟交换机也越来越丰富成熟。而SDN控制器以开源控制器为主,如FloodLight和OpenDayLight,OpenDayLight的出现极大的促进了SDN开源控制器的发展。在应用平面,部署在控制器的网络应用较少,已有的应用多为学术研究原型,包括网络发现、网络认证、路由计算,因此功能完善的控制器和上层应用有待进一步开发和丰富。尽管SDN可以解决网络管理、运营维护和成本问题,但从目前发展阶段来看,SDN/OpenFlow技术的应用还是需要较长时间的发展和普及。由于每个控制节点和转发节点需要维护大量“数据流表”,控制节点或转发节点的内存及其他资源需求相应提高,大量突发的第一次“数据流”建立会导致控制器瓶颈问题,同时若控制点发生故障,大量“数据流”需要在转发节点重建,突发的“数据流”配置对网络的性能和鲁棒性都会产生很大影响。
SDN技术架构通过把原有封闭的体系解耦为数据平面、控制平面和应用平面,提供了一种可编程的网络实现,从而将革命性地改变现有的网络架构。近来在控制平面方向,SDN网络操作系统越来越多的被业界提及,SDN网络操作系统可以做到简化与转发设备通信接口,从转发设备收集状态信息,下发控制指令到转发设备;简化与上层服务通信接口,为网络应用提供底层抽象资源;创建全局网络信息视图,可以呈现在分布式控制器上。SDN网络操作系统对上层网络应用屏蔽了底层设备以及南向协议的具体实现,通过便捷的北向接口,为上层网络应用提供统一的服务,极大的简化了上层应用的开发,使得网络功能的快速迭代改进成为可能。
但是SDN网络操作系统的真正商用还面临着很多的挑战。
管理集中性使得网络配置、网络服务访问控制、网络安全服务部署等都集中在SDN网络操作系统上。攻击者一旦获得对SDN网络操作系统的控制,将造成网络服务的大面积瘫痪,影响控制器覆盖的整个范围。由于SDN网络的可编程性、开放性,SDN网络操作系统安全防护的重要性远大于传统网络中网管系统的安全。所以围绕网络操作系统的攻防是SDN自身体系安全中的关键节点。
开放性也给SDN带来很多安全隐患。上层网络应用插件都具备一定的规则写入权限,随着应用的复杂化,多个应用之间会出现规则冲突,从而造成网络管理混乱、安全规则被绕过、服务中断等现象;第三方应用或插件可能带有恶意功能、未声明功能、安全漏洞等多种风险。
所以对多个上层网络应用下发的规则实施规则冲突检测,维护网络状态的一致性,避免网络管理的混乱,是SDN网络操作系统实现中重要的一部分。
发明内容
本发明的目的在于克服现有技术的不足,提供一种SDN规则冲突的检测方法,在SDN控制层中对多个上层网络应用下发的规则下发请求进行冲突检测,维持底层网络状态的一致性,避免网络管理的混乱。
为实现上述发明目的,本发明为一种SDN规则冲突的检测方法,其特征在于,包括以下步骤:
(1)、在SDN控制器上申请一个二元组(AppID,Priority),其中,AppID表示应用的编号,Priority表示应用的优先级;
(2)、上层网络应用通过向SDN控制器发送规则下发请求,在网络中部署具体流表规则;
(3)、SDN规则冲突检测
(3.1)、设置时间窗口大小为T,从SDN控制器启动开始每经过时间T为一个时间窗口记为Tn,n=1,2,…;
(3.2)、在时间窗口Tn开始时,清空规则下发请求集合;
(3.3)、在时间窗口Tn运行内,将持续接收上层网络应用下发的多条规则下发请求加入到规则下发请求集合中,再在时间窗口Tn运行结束后,进入步骤(3.4);
(3.4)、判断规则下发请求集合是否为空,如果为空,进入下一个时间窗口Tn+1运行时,返回步骤(3.2);如果不为空,则按SDN控制器接收规则下发请求的顺序取出规则下发请求集合中的一条规则下发请求,并按照该规则下发请求中的SwitchID字段,将该条规则下发请求分配给与SwitchID字段对应的工作线程;
(3.5)、工作线程接收到步骤(3.4)发送的规则下发请求后,设置规则比对集合,并初始化为空;
(3.6)、工作线程读取规则下发请中的AppID字段,同时读取底层网络中编号为SwitchID的交换机上的所有规则,用这些规则生成比对集合;
(3.7)、工作线程检测步骤(3.4)发送的规则下发请求中的匹配项Match是否设置有报文入端口匹配项,如果设置了入端口项,则读取匹配项Match中的InPort字段,再进入步骤(3.8);如果没有设置入端口项,则直接进入步骤(3.9);
(3.8)、遍历比对集合中的每一条规则,如果某一条规则的匹配项Match中没有设置入端口项,并且这条规则的AppID字段和步骤(3.6)中读取的AppID字段值不相同,则把该条规则加入到规则比对集合中;如果某一条规则下的匹配项Match中设置了入端口项,并且该入端口项和步骤(3.6)中读取的InPort字段值相同,同时,这条规则的AppID字段和步骤(3.6)中读取的AppID字段值不相同,则也把该条规则加入到规则比对集合中;直到遍历完所有规则,再进入步骤(3.10);
(3.9)、遍历比对集合中的每一条规则,如果某一条规则的AppID字段和步骤(3.6)中读取的AppID字段值不相同,则把该条规则加入到规则比对集合中;直到遍历完所有规则,再进入步骤(3.10);
(3.10)、设置规则冲突集合,并初始化为空;
(3.11)、判断规则比对集合是否为空,如果为空,则进入步骤(3.12);否则从规则比对集合中任意取出一条规则与步骤(3.4)发送的规则下发请求进行冲突检测,如果发生冲突,则将该条规则加入到规则冲突集合中;如果不发生冲突,则忽略该条规则;待该条规则比对完成后,重新规则比对集合中下一条规则,直到遍历完所有规则后再进入(3.12);
(3.12)、检查规则冲突集合是否为空,如果为空,则进入步骤(3.16);如果不为空,则进入步骤(3.13);
(3.13)、读取步骤(3.4)发送的规则下发请求的AppID字段,查找该AppID字段的优先级Priority;
设置变量ConflictAppID和ConflictPriority;设置集合H,并初始化为空;遍历规则冲突集合中的每一条规则,读取该规则的AppID字段值,并赋值给ConflictAppID,查找ConflictAppID对应的优先级Priority,并赋值给ConflictPriority;
将ConflictPriority与步骤(3.4)发送的规则下发请求的AppID字段对应的优先级Priority进行比较,如果ConflictPriority大于Priority,则将该规则加入到集合H中;如果ConflictPriority小于Priority,则对该条规则不做处理;直到遍历完,规则冲突集合中的所有规则;
判断集合H是否为空,如果集合H为空,则进入步骤(3.15);如果集合H不为空,则进入步骤(3.14)。
(3.14)、发生规则冲突,拒绝当前的规则下发请求,向应用AppID发送规则冲突通知,再进入步骤(3.17);
(3.15)、发生规则冲突,接受当前的规则下发请求,在底层网络中部署该条规则下发请求;同时读取规则冲突集合中每一条规则的AppID字段,向应用AppID发送规则冲突通知,在当前网络中删除规则冲突集合中的所有规则,再进入步骤(3.17);
(3.16)、未发生规则冲突,接受当前的规则下发请求,在底层网络部署该条规则下发请求,再进入步骤(3.17);
(3.17)、从规则下发请求集合中删除步骤(3.4)发送的规则下发请求,再进入步骤(3.4)。
本发明的发明目的是这样实现的:
本发明SDN规则冲突的检测方法,通过规范上层应用向SDN控制器提交的规则下发请求的内容,提出了一种通用化的规则冲突检测方法;同时SDN控制器按时间片接收多个规则下发请求,在时间片内将规则下发请求按照下发到的交换机分发给多个线程处理,提高了冲突检测检测方法的效率。因而,具有扩展性和高效性,能够促进SDN技术在实际网络环境中的应用。
同时,本发明SDN规则冲突的检测方法还具有以下有益效果:
(1)、便利性;上层网络应用请求下发规则下发请求,如果与网络当前状态存在冲突,该规则下发请求会被拒绝,上层网络应用会得到相应通知,维护底层网络状态的一致性,推进SDN网络操作系统的实际部署。
(2)、高效性;本发明通过时间窗口和区分下发的规则下发请求的不同类型,减少规则冲突检测涉及当前网络状态中有效规则的范围,使规则冲突检测可以并行化处理,提高规则冲突检测的性能。
(3)、适用性;本发明不针对具体的南北向协议,在SDN网络中具有普遍的使用性。
附图说明
图1是本发明一种SDN规则冲突的检测原理图;
图2是规则下发请求间的冲突检测流程图。
具体实施方式
下面结合附图对本发明的具体实施方式进行描述,以便本领域的技术人员更好地理解本发明。需要特别提醒注意的是,在以下的描述中,当已知功能和设计的详细描述也许会淡化本发明的主要内容时,这些描述在这里将被忽略。
实施例
为了方便描述,先对具体实施方式中出现的相关专业术语进行说明:
SDN(Software-defined networking):软件定义网络;
AppID:上层应用编号;
Priority:应用优先级;
SwitchID:网络交换机编号;
Match:规则匹配项;
Action:流表动作;
ConflictAppID:规则冲突应用编号;
ConflictPriority:规则冲突应用优先级;
matchNotContains:匹配项不包含。
图1是本发明一种SDN规则冲突的检测原理图。
在本实施例中,如图1所示,本发明一种SDN规则冲突的检测方法,包括以下步骤:
S1、每一个SDN上层网络应用在启动时都必须在SDN控制器上申请一个二元组(AppID,Priority),其中,AppID表示应用的编号,Priority表示应用的优先级。
S2、上层网络应用通过向SDN控制器发送规则下发请求,在网络中部署具体流表规则;
其中,规则下发请求主要包括以下字段:
SwitchID字段,为底层网络中每一个交换机的唯一编号,用于标识该规则下发请求需要部署到底层网络中的哪台交换机;
AppID字段,为请求下发该条规则下发请求的网络上层应用编号;
Match字段,为规则匹配项,包含报文入端口InPort,源目mac地址,源目ip地址,传输层协议,传输层源目端口号;Match中包含很多字段,但具体到某一条规则下发请求,并不是Match中的每一项都需要设置,比如规则下发请求A中,只设置目的IP为192.168.1.1,;规则下发请求B中只设置传输层协议为TCP。那么目的IP为192.168.1.1的报文都会匹配规则下发请求A;所有TCP报文都会匹配规则下发请求B;
Action字段,为流表动作项,包含向目的端口转发output,设置源目mac地址,添加删除vlan加标帧头部,设置源目ip地址,设置传输层源目端口号。
在底层网络中,每个交换机都包含了一系列的规则,这些规则同样包含上述各个字段。
S3、SDN规则冲突检测
随着网络功能的复杂化,上层网络应用可能数目众多,这些上层网络应用可能会在一个突发时间段内向SDN控制器层提交众多的规则下发请求。同时SDN控制器层会在数据库当中保存当前的网络的全局信息。如果在处理每一个规则下发请求时都查询数据库获得当前网络状态,再进行规则冲突检测,通过规则冲突检测之后还需要将新的网络状态写入数据库,会造成整个规则冲突检测过程必须串行化处理,影响规则冲突检测的性能,容易造成冲突检测模块成为SDN控制器层的性能瓶颈。
为此,把时间划分成连续的时间窗口,SDN控制器层在一个时间窗口内接收多条上层网络应用下发的规则请求,并在时间窗口结束时,对这些规则下发请求统一进行规则冲突检测。
S3.1、设置时间窗口大小为T,从SDN控制器启动开始每经过时间T为一个时间窗口记为Tn,n=1,2,…;
S3.2、在时间窗口Tn开始时,清空规则下发请求集合;
S3.3、在时间窗口Tn运行内,将持续接收上层网络应用下发的多条规则下发请求加入到规则下发请求集合中,再在时间窗口Tn运行结束后,进入步骤S3.4;
S3.4、判断规则下发请求集合是否为空,如果为空,进入下一个时间窗口Tn+1运行时,返回步骤S3.2;如果不为空,则按SDN控制器接收规则下发请求的顺序取出规则下发请求集合中的一条规则下发请求,并按照该规则下发请求中的SwitchID字段,将该条规则下发请求分配给与SwitchID字段对应的工作线程;
S3.5、工作线程接收到步骤S3.4发送的规则下发请求后,设置规则比对集合,并初始化为空;
S3.6、工作线程读取规则下发请中的AppID字段,同时读取底层网络中编号为SwitchID的交换机上的所有规则,用这些规则生成比对集合;
S3.7、工作线程检测步骤S3.4发送的规则下发请求中的匹配项Match是否设置有报文入端口匹配项,如果设置了入端口项,则读取匹配项Match中的InPort字段,再进入步骤S3.8;如果没有设置入端口项,则直接进入步骤S3.9;
S3.8、遍历比对集合中的每一条规则,如果某一条规则的匹配项Match中没有设置入端口项,并且这条规则的AppID字段和步骤S3.6中读取的AppID字段值不相同,则把该条规则加入到规则比对集合中;如果某一条规则下的匹配项Match中设置了入端口项,并且该入端口项和步骤S3.6中读取的InPort字段值相同,同时,这条规则的AppID字段和步骤S3.6中读取的AppID字段值不相同,则也把该条规则加入到规则比对集合中;直到遍历完所有规则,再进入步骤S3.10;
S3.9、遍历比对集合中的每一条规则,如果某一条规则的AppID字段和步骤S3.6中读取的AppID字段值不相同,则把该条规则加入到规则比对集合中;直到遍历完所有规则,再进入步骤S3.10;
S3.10、设置规则冲突集合,并初始化为空;
S3.11、判断规则比对集合是否为空,如果为空,则进入步骤S3.12;否则从规则比对集合中任意取出一条规则则与步骤S3.4发送的规则下发请求进行冲突检测,如果发生冲突,则将该条规则加入到规则冲突集合中;如果不发生冲突,则忽略该条规则;待该条规则比对完成后,重新规则比对集合中下一条规则,直到遍历完所有规则后再进入S3.12;
其中,取规则比对集合中的一条规则下发请求与步骤S3.4发送的规则下发请求进行冲突检测的具体方法为:
1)、设置matchNotContains=false;
2)、依次比对该规则和该规则下发请求的Match字段中的对应每一项,如果存在有一项不是包含关系,那么设置matchNotContains=true;如果不存在,则不做处理;
3)、判断matchNotContains,如果macthNotContains为true,则进入步骤4);如果matchNotContains为false,则进入步骤5);
4)、返回结果,两条规则下发请求之间不存在冲突;
5)、比对两条规则下发请求的Action字段,如果Action字段相同,则两条规则下发请求之间不存在冲突;如果Action字段不相同,则两条规则下发请求之间存在冲突;
S3.12、检查规则冲突集合是否为空,如果为空,则进入步骤S3.16;如果不为空,则进入步骤S3.13;
S3.13、读取步骤S3.4发送的规则下发请求的AppID字段,查找该AppID字段的优先级Priority;
设置变量ConflictAppID和ConflictPriority;设置集合H,并初始化为空;遍历规则冲突集合中的每一条规则,读取该规则的AppID字段值,并赋值给ConflictAppID,查找ConflictAppID对应的优先级Priority,并赋值给ConflictPriority;
将ConflictPriority与步骤S3.4发送的规则下发请求的AppID字段对应的优先级Priority进行比较,如果ConflictPriority大于Priority,则将该规则加入到集合H中;如果ConflictPriority小于Priority,则对该条规则不做处理;直到遍历完,规则冲突集合中的所有规则;
判断集合H是否为空,如果集合H为空,则进入步骤S3.15;如果集合H不为空,则进入步骤S3.14。
S3.14、发生规则冲突,拒绝当前的规则下发请求,向应用AppID发送规则冲突通知,再进入步骤3.17;
3.15、发生规则冲突,接受当前的规则下发请求,在底层网络中部署该条规则下发请求;同时读取规则冲突集合中每一条规则的AppID字段,向应用AppID发送规则冲突通知,在当前网络中删除规则冲突集合中的所有规则,再进入步骤3.17;
3.16、未发生规则冲突,接受当前的规则下发请求,在底层网络部署该条规则下发请求,再进入步骤3.17;
3.17、从规则下发请求集合中删除步骤3.4发送的规则下发请求,再进入步骤3.4。
实例
本节选择当前SDN中较为流行的南向协议OpenFlow,并且在OpenFlow的基础上,展示本文提出的SDN规则冲突检测方法的具体实施。
一、网络应用规则字段定义
在OpenFlow的基础上,上层网络应用向SDN控制器层提交的规则下发请求各字段定义如表1所示,各字段具体含义如表2所示,流表匹配项各字段定义如表3所示,流表动作项各字段定义如表4所示。
表1是规则下发请求各字段格式;
字段名称 | 数据类型 | 是否为主键 | 缺省值 | 是否允许为空 |
ID | Bigint | 是 | None | 否 |
command | varchar(30) | 否 | “add” | 是 |
appid | Bigint | 否 | 0 | 是 |
dpid | Bigint | 否 | 0 | 是 |
tableID | Int | 否 | 0 | 是 |
idleTimeOut | Int | 否 | 0 | 是 |
hardTimeOut | Int | 否 | 0 | 是 |
entryMatch | varchar(512) | 否 | “” | 是 |
applyActions | varchar(1024) | 否 | “” | 是 |
gotoTable | Int | 否 | -1 | 是 |
表1
表2是规则下发请求各字段具体含义;
表2
表3是流表匹配项各字段定义;
字段名 | 意义 |
inPort | 报文入端口 |
ethSrc | 源mac地址 |
ethDst | 目的mac地址 |
ethSrcMask | 源mac地址掩码 |
ethDstMask | 目的mac地址掩码 |
vlanID | 报文vlan号 |
ethType | 网络层协议,也就是以太帧类型 |
ipSrc | 源IP地址 |
ipDst | 目的IP地址 |
ipSrcMask | 源IP地址掩码 |
ipDstMask | 目的IP地址掩码 |
ipProto | 传输层协议 |
tpSrc | 传输层源端口号 |
tpDst | 传输层目的端口号 |
表3
表4是流表动作各字段定义;
字段名 | 意义 |
setEthSrc | 设置报文源mac地址 |
setEthDst | 设置报文目的mac地址 |
popVlan | 是否去除最外层vlan加标帧,“true”或者”false” |
pushVlan | 是否增加一层vlan加标帧,“true”或者”false” |
setVlanID | 设置最外层vlan加标帧的vlanID |
setEthType | 设置网络层协议,即以太帧类型 |
setIPSrc | 设置报文源IP地址 |
setIPDst | 设置报文目的IP地址 |
setIPProto | 设置传输层协议 |
setTPSrc | 设置传输层源端口号 |
setTPDst | 设置传输层目的端口号 |
outputs | 报文输出端口号,可以有多个 |
表4
二、当前网络状态
假设当前SDN控制器上部署了四个上层网络应用,其编号分别为AppID 1、AppID 2、AppID 3、AppID 4,应用优先级依次降低。这四个上层网络应用已经在网络中部署了下发规则,当前网络状态如表5所示.
表5是当前网络状态表;
表5
三、OpenFlow下规则间冲突检测
针对具体的南向协议OpenFlow,结合网络应用规则的字段定义,将流表匹配项分为L2层匹配项,L3层匹配项,L4层匹配项。L2层匹配项包括EthType,Vlan ID,源目MAC地址,其中源目MAC地址支持掩码匹配;L3层匹配项包括IpProto,源目IP地址,其中源目IP地址支持掩码匹配。L4层匹配项包括传输层源目端口号。通过一次检测L2层匹配项,L3层匹配项,L4层匹配项,以及流表项动作,结合本发明按照图2所示的步骤,判断两条规则是否发生冲突。
四、下发附着端口规则,没有发生冲突
APP 3向SDN控制器层提交规则下发请求;
ID 1,command“add”,appid 3,dpid 1,
emtryMatch:InPort 2、EthType 0x800、IpPrpto 0x06,TpDst 179
applyActions output 1
向SND控制器层提交该规则下发请求,规则冲突检测运行的具体过程如下:
(1)、SDN控制器层接收到规则下发请求,将规则下发请求加入当前窗口的规则下发请求集合;
(2)、该规则下发请求下发到的交换机为Switch1,将规则下发请求发送给Switch1对应的冲突检测工作线程;
(3)、冲突检测工作线程接收到规则下发请求,读取下发该条规则下发请求的应用为AppID3,设置规则比对集合为空;
(4)、下发的规则下发请求匹配了InPort字段为2;
(5)、将交换机Switch1中的非应用AppID 3下发的未附着端口规则和非应用AppID 3下发的附着端口为Port2的规则加入到规则比对集合。在本例中也就是flow 4、flow 6加入规则比对集合;
(6)、设置比对集合为空。将下发的规则下发请求与比对集合中的每一条规则下发请求进行冲突检测;
下发的规则下发请求与flow 4可以通过TCP目的端口号明确区分,两者不冲突;下发的规则下发请求与flow 6可以通过Vlan ID明确区分,两者不冲突;
(7)、比对集合为空,没有产生冲突,接受该条规则下发请求,向底层网络实际部署该规则。
五、较高优先级应用下发未附着端口规则,发生冲突
APP1向SDN控制器层提交规则下发请求
ID 2,command“add”,appid 1,dpid 1,
emtryMatch:EthType 0x800、IpDst 192.168.2.0/24
applyActions Drop
向SND控制器层提交该规则下发请求,规则冲突检测运行的具体过程如下:
(1)、SDN控制器层接收到规则下发请求,将规则下发请求加入当前窗口的规则下发请求集合;
(2)、该规则下发请求下发到的交换机为Switch1,将规则下发请求发送给Switch1对应的冲突检测工作线程;
(3)、冲突检测工作线程接收到规则下发请求,读取下发该条规则下发请求的应用为AppID1,设置规则比对集合为空;
(4)、下发的规则下发请求没有匹配InPort字段;
(5)、将交换机Switch1中的非应用AppID1下发的规则下发请求加入到规则比对集合;在本例中也就是flow 3、flow 4、flow 5、flow 6加入规则比对集合;
(6)、设置比对集合为空。将下发的规则下发请求与规则下发请求集合中的每一条规则进行冲突检测。
下发的规则下发请求与flow 3可以通过Vlan ID明确区分,两者不冲突;
下发的规则下发请求与flow 4每一项都是包含关系,两条规则下发请求的匹配范围有交叉,并且流表动作项不相同,产生冲突,将flow 4加入比对集合;
下发的规则下发请求与flow 5每一项都是包含关系,两条规则下发请求的匹配范围有交叉,但是流表动作项相同,不产生冲突;
下发的规则下发请求与flow 6可以通过Vlan ID明确区分,两者不冲突。
(7)、比对集合不为空,产生冲突,比对集合中的flow 4由应用AppID 3下发,AppID 1的优先级比AppID 3高;
(8)、从当前网络中删除flow4,通知应用AppID3,其下发的规则下发请求产生冲突,被删除。接受当前规则下发请求,向底层网络实际部署规则。
六、较低优先级应用下发未附着端口规则,发生冲突
APP 3向SDN网络操作系统提交规则下发请求
ID 3,command“add”,appid 3,dpid 2,
emtryMatch:EthType 0x800、IpDst 192.168.2.0/24、IpProto 0x06、TpDst 22
applyActions output 1,2
向SND控制器层提交该规则下发请求,规则冲突检测运行的具体过程如下:
(1)、SDN控制器层接收到规则下发请求,将规则下发请求加入当前窗口的规则下发请求集合;
(2)、该规则下发请求下发到的交换机为Switch3,将规则下发请求发送给Switc3对应的冲突检测工作线程;
(3)、冲突检测工作线程接收到规则下发请求,读取下发该条规则下发请求的的应用为AppID3,设置规则比对集合为空;
(4)、下发的规则下发请求没有匹配InPort字段;
(5)、将交换机Switch3中的非应用AppID3下发的规则下发请求加入到规则比对集合。在本例中也就是flow 7、flow 9、flow 10加入规则比对集合;
(6)、设置比对集合为空。将下发的规则下发请求与规则比对集合中的每
一条规则下发请求进行冲突检测;
下发的规则下发请求与flow 7每一项都是包含关系,两条规则下发请求匹配范围有交叉,并且流表动作不同,产生冲突,将flow 7加入比对集合;
下发的规则下发请求与flow 9每一项都是包含关系,两条规则下发请求匹配范围有交叉,并且流表动作不同,产生冲突,将flow 9加入比对集合;
下发的规则下发请求与flow 10可以通过EthType明确区分,两者不冲突。
(7)、比对集合不为空,产生冲突,比对集合中的flow 7,flow 9分别由应用AppID 1,AppID 2下发,AppID 3的优先级比AppID 2,AppID 3都低。
(8)、拒绝该规则下发请求,通知AppID3其下发规则请求产生冲突。
尽管上面对本发明说明性的具体实施方式进行了描述,以便于本技术领域的技术人员理解本发明,但应该清楚,本发明不限于具体实施方式的范围,对本技术领域的普通技术人员来讲,只要各种变化在所附的权利要求限定和确定的本发明的精神和范围内,这些变化是显而易见的,一切利用本发明构思的发明创造均在保护之列。
Claims (3)
1.一种SDN规则冲突的检测方法,其特征在于,包括以下步骤:
(1)、在SDN控制器上申请一个二元组(AppID,Priority),其中,AppID表示应用的编号,Priority表示应用的优先级;
(2)、上层网络应用通过向SDN控制器发送规则下发请求,在网络中部署具体流表规则;
(3)、SDN规则冲突检测
(3.1)、设置时间窗口大小为T,从SDN控制器启动开始每经过时间T为一个时间窗口记为Tn,n=1,2,…;
(3.2)、在时间窗口Tn开始时,清空规则下发请求集合;
(3.3)、在时间窗口Tn运行内,将持续接收上层网络应用下发的多条规则下发请求加入到规则下发请求集合中,再在时间窗口Tn运行结束后,进入步骤(3.4);
(3.4)、判断规则下发请求集合是否为空,如果为空,进入下一个时间窗口Tn+1运行时,返回步骤(3.2);如果不为空,则按SDN控制器接收规则下发请求的顺序取出规则下发请求集合中的一条规则下发请求,并按照该规则下发请求中的SwitchID字段,将该条规则下发请求分配给与SwitchID字段对应的工作线程;
(3.5)、工作线程接收到步骤(3.4)发送的规则下发请求后,设置规则比对集合,并初始化为空;
(3.6)、工作线程读取规则下发请中的AppID字段,同时读取底层网络中编号为SwitchID的交换机上的所有规则,用这些规则生成比对集合;
(3.7)、工作线程检测步骤(3.4)发送的规则下发请求中的匹配项Match是否设置有报文入端口匹配项,如果设置了入端口项,则读取匹配项Match中的InPort字段,再进入步骤(3.8);如果没有设置入端口项,则直接进入步骤(3.9);
(3.8)、遍历比对集合中的每一条规则,如果某一条规则的匹配项Match中没有设置入端口项,并且这条规则的AppID字段和步骤(3.6)中读取的AppID字段值不相同,则把该条规则加入到规则比对集合中;如果某一条规则下的匹配项Match中设置了入端口项,并且该入端口项和步骤(3.6)中读取的InPort字段值相同,同时,这条规则的AppID字段和步骤(3.6)中读取的AppID字段值不相同,则也把该条规则加入到规则比对集合中;直到遍历完所有规则,再进入步骤(3.10);
(3.9)、遍历比对集合中的每一条规则,如果某一条规则的AppID字段和步骤(3.6)中读取的AppID字段值不相同,则把该条规则加入到规则比对集合中;直到遍历完所有规则,再进入步骤(3.10);
(3.10)、设置规则冲突集合,并初始化为空;
(3.11)、判断规则比对集合是否为空,如果为空,则进入步骤(3.12);否则从规则比对集合中任意取出一条规则则与步骤(3.4)发送的规则下发请求进行冲突检测,如果发生冲突,则将该条规则加入到规则冲突集合中;如果不发生冲突,则忽略该条规则;待该条规则比对完成后,重新规则比对集合中下一条规则,直到遍历完所有规则后再进入(3.12);
(3.12)、检查规则冲突集合是否为空,如果为空,则进入步骤(3.16);如果不为空,则进入步骤(3.13);
(3.13)、读取步骤(3.4)发送的规则下发请求的AppID字段,查找该AppID字段的优先级Priority;
设置变量ConflictAppID和ConflictPriority;设置集合H,并初始化为空;遍历规则冲突集合中的每一条规则,读取该规则的AppID字段值,并赋值给ConflictAppID,查找ConflictAppID对应的优先级Priority,并赋值给ConflictPriority;
将ConflictPriority与步骤(3.4)发送的规则下发请求的AppID字段对应的优先级Priority进行比较,如果ConflictPriority大于Priority,则将该规则加入到集合H中;如果ConflictPriority小于Priority,则对该条规则不做处理;直到遍历完,规则冲突集合中的所有规则;
判断集合H是否为空,如果集合H为空,则进入步骤(3.15);如果集合H不为空,则进入步骤(3.14)。
(3.14)、发生规则冲突,拒绝当前的规则下发请求,向应用AppID发送规则冲突通知,再进入步骤(3.17);
(3.15)、发生规则冲突,接受当前的规则下发请求,在底层网络中部署该条规则下发请求;同时读取规则冲突集合中每一条规则的AppID字段,向应用AppID发送规则冲突通知,在当前网络中删除规则冲突集合中的所有规则,再进入步骤(3.17);
(3.16)、未发生规则冲突,接受当前的规则下发请求,在底层网络部署该条规则下发请求,再进入步骤(3.17);
(3.17)、从规则下发请求集合中删除步骤(3.4)发送的规则下发请求,再进入步骤(3.4)。
2.根据权利要求1所述的一种SDN规则冲突的检测方法,其特征在于,所述的规则下发请求主要包括以下字段:
SwitchID字段,为底层网络中每一个交换机的唯一编号;
AppID字段,为请求下发该条规则下发请求的网络上层应用编号;
Match字段,为规则匹配字段,包含多个字段项,主要包含:报文入端口InPort,源目mac地址,源目ip地址,传输层协议,传输层源目端口号;
Action字段,为流表动作项,包含向目的端口转发output,设置源目mac地址,添加删除vlan加标帧头部,设置源目ip地址,设置传输层源目端口号。
3.根据权利要求1所述的一种SDN规则冲突的检测方法,其特征在于,所述步骤(3.12)中,取规则比对集合中的一条规则与步骤(3.4)发送的规则下发请求进行冲突检测的方法为:
(1)、设置matchNotContains=false;
(2)、依次比对该规则和该规则下发请求的Match字段中的对应每一项,如果存在有一项不是包含关系,那么设置matchNotContains=true;如果不存在,则不做处理;
(3)、判断matchNotContains,如果macthNotContains为true,则进入步骤(4);如果matchNotContains为false,则进入步骤(5);
(4)、返回结果,两条规则下发请求之间不存在冲突;
(5)、比对两条规则下发请求的Action字段,如果Action字段相同,则两条规则下发请求之间不存在冲突;如果Action字段不相同,则两条规则下发请求之间存在冲突。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201610494049.6A CN105897493B (zh) | 2016-06-28 | 2016-06-28 | 一种sdn规则冲突的检测方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201610494049.6A CN105897493B (zh) | 2016-06-28 | 2016-06-28 | 一种sdn规则冲突的检测方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN105897493A true CN105897493A (zh) | 2016-08-24 |
CN105897493B CN105897493B (zh) | 2018-11-09 |
Family
ID=56719257
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201610494049.6A Expired - Fee Related CN105897493B (zh) | 2016-06-28 | 2016-06-28 | 一种sdn规则冲突的检测方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN105897493B (zh) |
Cited By (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106453079A (zh) * | 2016-09-13 | 2017-02-22 | 浙江工商大学 | 一种基于深度学习的sdn流表冲突检测方法 |
CN106656591A (zh) * | 2016-12-15 | 2017-05-10 | 西安电子科技大学 | 一种软件定义网络中多应用间的规则冲突检测与消除方法 |
CN106685689A (zh) * | 2016-10-26 | 2017-05-17 | 浙江工商大学 | 一种基于深度学习的sdn流表冲突检测装置及方法 |
CN106850304A (zh) * | 2017-02-15 | 2017-06-13 | 郑州云海信息技术有限公司 | 一种基于sdn框架的网关组方法及系统 |
CN107800640A (zh) * | 2017-09-19 | 2018-03-13 | 北京邮电大学 | 一种流规则的检测和处理的方法 |
CN110120923A (zh) * | 2019-05-13 | 2019-08-13 | 电子科技大学 | 一种基于Hash-Trie的流规则冲突检测方法 |
CN110537352A (zh) * | 2017-04-13 | 2019-12-03 | 诺基亚技术有限公司 | 用于信任管理的装置、方法和计算机程序产品 |
CN110710159A (zh) * | 2017-05-31 | 2020-01-17 | 思科技术公司 | 针对网络意图形式对等失败的反例的生成 |
WO2021227245A1 (zh) * | 2020-05-11 | 2021-11-18 | 重庆邮电大学 | 一种面向tsn和非tsn互联的工业异构网络调度方法 |
Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103763197A (zh) * | 2014-01-27 | 2014-04-30 | 杭州华三通信技术有限公司 | 一种流表项冲突检测装置和方法 |
CN104202303A (zh) * | 2014-08-11 | 2014-12-10 | 华中科技大学 | 一种sdn应用的策略冲突检测方法及系统 |
CN104601526A (zh) * | 2013-10-31 | 2015-05-06 | 华为技术有限公司 | 一种冲突检测及解决的方法、装置 |
CN104601414A (zh) * | 2015-02-15 | 2015-05-06 | 杭州华三通信技术有限公司 | 一种软件定义网络中的ip地址冲突检测方法和装置 |
US20150381478A1 (en) * | 2014-06-27 | 2015-12-31 | Futurewei Technologies, Inc. | Proxy for port to service instance mapping |
CN105471830A (zh) * | 2014-09-10 | 2016-04-06 | 中国电信股份有限公司 | 用于消解安全策略冲突的方法、装置和系统 |
CN105490936A (zh) * | 2015-12-14 | 2016-04-13 | 国网吉林省电力有限公司信息通信公司 | 一种基于sdn的避免冲突的快速数据传输方法 |
-
2016
- 2016-06-28 CN CN201610494049.6A patent/CN105897493B/zh not_active Expired - Fee Related
Patent Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104601526A (zh) * | 2013-10-31 | 2015-05-06 | 华为技术有限公司 | 一种冲突检测及解决的方法、装置 |
CN103763197A (zh) * | 2014-01-27 | 2014-04-30 | 杭州华三通信技术有限公司 | 一种流表项冲突检测装置和方法 |
US20150381478A1 (en) * | 2014-06-27 | 2015-12-31 | Futurewei Technologies, Inc. | Proxy for port to service instance mapping |
CN104202303A (zh) * | 2014-08-11 | 2014-12-10 | 华中科技大学 | 一种sdn应用的策略冲突检测方法及系统 |
CN105471830A (zh) * | 2014-09-10 | 2016-04-06 | 中国电信股份有限公司 | 用于消解安全策略冲突的方法、装置和系统 |
CN104601414A (zh) * | 2015-02-15 | 2015-05-06 | 杭州华三通信技术有限公司 | 一种软件定义网络中的ip地址冲突检测方法和装置 |
CN105490936A (zh) * | 2015-12-14 | 2016-04-13 | 国网吉林省电力有限公司信息通信公司 | 一种基于sdn的避免冲突的快速数据传输方法 |
Cited By (17)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106453079A (zh) * | 2016-09-13 | 2017-02-22 | 浙江工商大学 | 一种基于深度学习的sdn流表冲突检测方法 |
WO2018049841A1 (zh) * | 2016-09-13 | 2018-03-22 | 浙江工商大学 | 一种基于深度学习的sdn流表冲突检测方法 |
CN106453079B (zh) * | 2016-09-13 | 2019-07-16 | 浙江工商大学 | 一种基于深度学习的sdn流表冲突检测方法 |
CN106685689A (zh) * | 2016-10-26 | 2017-05-17 | 浙江工商大学 | 一种基于深度学习的sdn流表冲突检测装置及方法 |
CN106685689B (zh) * | 2016-10-26 | 2019-08-27 | 浙江工商大学 | 一种基于深度学习的sdn流表冲突检测装置及方法 |
CN106656591A (zh) * | 2016-12-15 | 2017-05-10 | 西安电子科技大学 | 一种软件定义网络中多应用间的规则冲突检测与消除方法 |
CN106850304A (zh) * | 2017-02-15 | 2017-06-13 | 郑州云海信息技术有限公司 | 一种基于sdn框架的网关组方法及系统 |
CN106850304B (zh) * | 2017-02-15 | 2020-02-04 | 苏州浪潮智能科技有限公司 | 一种基于sdn框架的网关组方法及系统 |
CN110537352A (zh) * | 2017-04-13 | 2019-12-03 | 诺基亚技术有限公司 | 用于信任管理的装置、方法和计算机程序产品 |
US11303531B2 (en) | 2017-05-31 | 2022-04-12 | Cisco Technologies, Inc. | Generation of counter examples for network intent formal equivalence failures |
CN110710159B (zh) * | 2017-05-31 | 2022-08-19 | 思科技术公司 | 用于网络配置和故障排除的方法、系统、设备和介质 |
CN110710159A (zh) * | 2017-05-31 | 2020-01-17 | 思科技术公司 | 针对网络意图形式对等失败的反例的生成 |
CN107800640A (zh) * | 2017-09-19 | 2018-03-13 | 北京邮电大学 | 一种流规则的检测和处理的方法 |
CN107800640B (zh) * | 2017-09-19 | 2020-07-28 | 北京邮电大学 | 一种流规则的检测和处理的方法 |
CN110120923A (zh) * | 2019-05-13 | 2019-08-13 | 电子科技大学 | 一种基于Hash-Trie的流规则冲突检测方法 |
WO2021227245A1 (zh) * | 2020-05-11 | 2021-11-18 | 重庆邮电大学 | 一种面向tsn和非tsn互联的工业异构网络调度方法 |
US11736408B2 (en) | 2020-05-11 | 2023-08-22 | Chongqing University Of Posts And Telecommunications | Scheduling method applied in industrial heterogeneous network in which TSN and non-TSN are interconnected |
Also Published As
Publication number | Publication date |
---|---|
CN105897493B (zh) | 2018-11-09 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN105897493A (zh) | 一种sdn规则冲突的检测方法 | |
US9686137B2 (en) | Method and system for identifying an outgoing interface using openflow protocol | |
CN102263774B (zh) | 一种处理源角色信息的方法和装置 | |
EP3200399B1 (en) | Automated mirroring and remote switch port analyzer (rspan)/encapsulated remote switch port analyzer (erspan) functions using fabric attach (fa) signaling | |
US10284471B2 (en) | AIA enhancements to support lag networks | |
CN103795644B (zh) | 策略表表项配置方法、装置及系统 | |
CN105827629B (zh) | 云计算环境下软件定义安全导流装置及其实现方法 | |
CN110674362B (zh) | 搜索推荐方法、装置、电子设备及可读存储介质 | |
US9509610B2 (en) | Forwarding packet in stacking system | |
CN105429879B (zh) | 流表项查询方法、设备及系统 | |
CN104394149B (zh) | 一种基于并行分布式架构的复杂事件处理的方法 | |
CN108833305B (zh) | 主机的虚拟网络装置 | |
US20160234068A1 (en) | Method and system for identifying an incoming interface using openflow protocol | |
CN103475559B (zh) | 一种根据报文内容对报文进行处理并转发的方法和系统 | |
WO2018001020A1 (zh) | 一种基于聚合链路的报文转发方法和装置 | |
CN110619066A (zh) | 一种基于目录树的信息获取方法和装置 | |
CN104734953A (zh) | 基于vlan实现报文二层隔离的方法、装置及交换机 | |
EP2897328B1 (en) | Method, system and apparatus for establishing communication link | |
CN112600752A (zh) | 一种默认策略路由的芯片实现方法、数据报文的芯片处理方法及装置 | |
CN111107008A (zh) | 一种反向路径检查方法和装置 | |
CN115209378A (zh) | 车辆的服务资源动态分配方法、系统、管理服务器及介质 | |
CN113595900A (zh) | 路由控制方法、装置、系统以及边界网关协议对等体 | |
CN112333711B (zh) | 无线网络提供方法、装置及存储介质 | |
CN103780630A (zh) | 虚拟局域网端口隔离方法及系统 | |
CN103179031B (zh) | 基于流方式的多业务转发和处理方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant | ||
CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20181109 Termination date: 20210628 |
|
CF01 | Termination of patent right due to non-payment of annual fee |