当前位置: 首页 > 专利查询>清华大学专利>正文

用于检测多个软件定义网络SDN应用之间的冲突的方法技术

技术编号:21059467 阅读:30 留言:0更新日期:2019-05-08 06:34
本发明专利技术公开了一种用于检测多个软件定义网络SDN应用之间的冲突的方法。该方法通过利用符号执行工具对待测的多个SDN应用中的每个SDN应用的每个输入OpenFlow消息进行处理,并基于处理结果来检测多个SDN应用两两之间是否存在冲突,从而可以实现在部署多个SDN应用之前预先检测多个SDN应用之间是否存在冲突,具有很好的应用前景。

A Method for Detecting Conflicts between Software Definition Network SDN Applications

【技术实现步骤摘要】
用于检测多个软件定义网络SDN应用之间的冲突的方法
本专利技术涉及软件定义网络(SoftwareDefinedNetwork,SDN)验证
,尤其涉及一种用于检测多个软件定义网络SDN应用之间的冲突的方法。
技术介绍
软件定义网络SDN是由Emulex提出的一种新型网络创新架构,其通过将网络设备控制面与数据面解耦,来简化数据面的转发并为控制面提供可编程性,从而大大地方便了新型网络功能的开发与部署。用户可以通过开发部署SDN应用来实现各种各样的策略以保证网络的可用性和安全性。随着各种SDN开源控制器(例如,ONOS,Floodlight)的发展,越来越多的SDN应用被开发部署。OpenFlow协议定义了控制器(Controller)和交换机(Switch)通信过程的消息类型和格式。控制器通过OpenFlow协议与交换机建立安全通道,SDN应用通过控制器对交换机下发或删除用于定义报文转发规则的流表来管理网络的不同方面。为了实现各种各样的网络策略,许多SDN应用(例如,防火墙(Firewall),负载均衡(LoadBalancer)等)被部署到同一个控制器上。事实上,来自不同方的SDN应用将使网络的控制逻辑变得复杂,且可能有意或无意地在同一台交换机上安装具有相同匹配域(match)和冲突的动作域(action)的规则,从而导致多个SDN应用之间产生冲突,致使网络故障或网络性能下降。目前,这个问题在SDN领域比较普遍,一些SDN控制器系统依赖于各SDN应用之间的优先级来避免冲突。然而,即使各SDN应用具有明确的优先级,如何利用优先级处理各SDN应用的输出仍然是棘手的问题。因此,为了避免在部署多个SDN应用之后出现用户所不期待的行为,预先检测多个SDN应用之间的冲突是唯一的解决方案。之前,研究者们提出了一些验证SDN应用的正确性的方案。例如,1)以NICE和Vericon为代表的验证工具,该验证工具是基于模型检测或定理证明等形式化方法来验证网络的正确性属性是否被违反,但是,该验证工具仅针对单一SDN应用进行验证,不能验证多个SDN应用之间的正确性;2)以VMN和HSA为代表的验证工具,该验证工具用于验证数据面的流表是否违反网络的正确性属性,但是,其并不能在部署SDN应用之前预先检测多个SDN应用之间的冲突;3)利用以Netcore和Frenetic为代表的新型控制器进行验证,该控制器在编译器中利用模型检测等形式化方法来避免SDN应用在交换机上安装可能导致冲突的规则,但是,这种验证方法只能支持某一种北向接口语言,无法支持现有控制器(例如,ONOS,Floodlight等)在编译器上的应用。由此可见,以上这些方法都不能预先检测多个SDN应用之间的冲突。为了解决上述技术问题,本专利技术提供了一种用于检测多个软件定义网络SDN应用之间的冲突的方法,该方法无需改动控制器内核即可以在部署多个SDN应用之前预先检测多个SDN应用之间的冲突。
技术实现思路
本专利技术所要解决的技术问题是:现有技术中的方法不能在部署多个SDN应用之前预先检测多个SDN应用之间的冲突。为了解决上述技术问题,本专利技术提供了一种用于检测多个软件定义网络SDN应用之间的冲突的方法,包括:针对待测的多个SDN应用中的每个SDN应用,均执行以下操作:获取该SDN应用的源代码和所有输入OpenFlow消息;根据该SDN应用的源代码包含的各事件处理器的属性信息,确定各事件处理器所要处理的输入OpenFlow消息,其中,各事件处理器所要处理的输入OpenFlow消息的总和构成所有输入OpenFlow消息;针对每个输入OpenFlow消息均执行以下操作:利用与所述源代码的语言类型对应的符号执行工具,对该输入OpenFlow消息进行处理,得到与该输入OpenFlow消息对应的多条可执行路径、与该多条可执行路径中的每条可执行路径对应的路径约束条件、以及与每条可执行路径对应的第一输出OpenFlow消息集,所述第一输出OpenFlow消息集为与每条可执行路径对应的输出OpenFlow消息的集合;利用约束求解器分别对与每条可执行路径对应的路径约束条件进行求解,并基于求解结果,对与每条可执行路径对应的第一输出OpenFlow消息集中的各输出OpenFlow消息进行处理,得到与每条可执行路径对应的第二输出OpenFlow消息集,所述第二输出OpenFlow消息集为对所述第一输出OpenFlow消息集中的各输出OpenFlow消息进行处理后得到的输出OpenFlow消息的集合;对与每条可执行路径对应的第二输出OpenFlow消息集中的各输出OpenFlow消息进行处理,得到与每条可执行路径对应的第三输出OpenFlow消息集,所述第三输出OpenFlow消息集为对所述第二输出OpenFlow消息集中的各输出OpenFlow消息进行处理后得到的输出OpenFlow消息的集合;利用与每个SDN应用的每个输入OpenFlow消息对应的每条可执行路径对应的第三输出OpenFlow消息集中的各输出OpenFlow消息,检测多个SDN应用两两之间是否存在冲突。在本专利技术一优选实施例中,利用与所述源代码的语言类型对应的符号执行工具,对输入OpenFlow消息进行处理,得到与该输入OpenFlow消息对应的多条可执行路径、与该多条可执行路径中的每条可执行路径对应的路径约束条件、以及与每条可执行路径对应的第一输出OpenFlow消息集,包括:利用与SDN应用的源代码的语言类型对应的符号执行工具,将该SDN应用的各输入OpenFlow消息包含的相关变量指定为符号变量,其中,所述相关变量为在检测多个SDN应用之间的冲突的过程中所需使用的变量;利用所述符号执行工具运行该SDN应用的源代码包含的各事件处理器,得到与该SDN应用的各输入OpenFlow消息对应的多条可执行路径、与该多条可执行路径中的每条可执行路径对应的路径约束条件、以及与每条可执行路径对应的第一输出OpenFlow消息集。在本专利技术一优选实施例中,该方法还包括:将SDN应用的各输入OpenFlow消息包含的无关变量赋予具体值,其中,所述无关变量为在检测多个SDN应用之间的冲突的过程中无需使用的变量。在本专利技术一优选实施例中,该方法还包括:根据与SDN应用的各输入OpenFlow消息包含的流表的各个域在软件定义网络SDN中的具体含义,将与该SDN应用的各输入OpenFlow消息包含的各符号变量的取值范围限定在预设范围内。在本专利技术一优选实施例中,利用约束求解器分别对与每条可执行路径对应的路径约束条件进行求解,并基于求解结果,对与每条可执行路径对应的第一输出OpenFlow消息集中的各输出OpenFlow消息进行处理,得到与每条可执行路径对应的第二输出OpenFlow消息集,包括:针对与每个SDN应用的每个输入OpenFlow消息对应的每条可执行路径,均执行以下操作:利用约束求解器对与该条可执行路径对应的路径约束条件进行求解;在约束求解器返回结果为有解的情况下,为与该条可执行路径对应的第一输出OpenFlow消息集中的各输出OpenFlow消息包含的各符号变量赋予求解得到的具体值,得到与该条可执行路径对应的第二输出OpenFlow消息集;在约束求解本文档来自技高网
...

【技术保护点】
1.一种用于检测多个软件定义网络SDN应用之间的冲突的方法,其特征在于,包括:针对待测的多个SDN应用中的每个SDN应用,均执行以下操作:获取该SDN应用的源代码和所有输入OpenFlow消息;根据该SDN应用的源代码包含的各事件处理器的属性信息,确定各事件处理器所要处理的输入OpenFlow消息,其中,各事件处理器所要处理的输入OpenFlow消息的总和构成所有输入OpenFlow消息;针对每个输入OpenFlow消息均执行以下操作:利用与所述源代码的语言类型对应的符号执行工具,对该输入OpenFlow消息进行处理,得到与该输入OpenFlow消息对应的多条可执行路径、与该多条可执行路径中的每条可执行路径对应的路径约束条件、以及与每条可执行路径对应的第一输出OpenFlow消息集,所述第一输出OpenFlow消息集为与每条可执行路径对应的输出OpenFlow消息的集合;利用约束求解器分别对与每条可执行路径对应的路径约束条件进行求解,并基于求解结果,对与每条可执行路径对应的第一输出OpenFlow消息集中的各输出OpenFlow消息进行处理,得到与每条可执行路径对应的第二输出OpenFlow消息集,所述第二输出OpenFlow消息集为对所述第一输出OpenFlow消息集中的各输出OpenFlow消息进行处理后得到的输出OpenFlow消息的集合;对与每条可执行路径对应的第二输出OpenFlow消息集中的各输出OpenFlow消息进行处理,得到与每条可执行路径对应的第三输出OpenFlow消息集,所述第三输出OpenFlow消息集为对所述第二输出OpenFlow消息集中的各输出OpenFlow消息进行处理后得到的输出OpenFlow消息的集合;利用与每个SDN应用的每个输入OpenFlow消息对应的每条可执行路径对应的第三输出OpenFlow消息集中的各输出OpenFlow消息,检测多个SDN应用两两之间是否存在冲突。...

【技术特征摘要】
1.一种用于检测多个软件定义网络SDN应用之间的冲突的方法,其特征在于,包括:针对待测的多个SDN应用中的每个SDN应用,均执行以下操作:获取该SDN应用的源代码和所有输入OpenFlow消息;根据该SDN应用的源代码包含的各事件处理器的属性信息,确定各事件处理器所要处理的输入OpenFlow消息,其中,各事件处理器所要处理的输入OpenFlow消息的总和构成所有输入OpenFlow消息;针对每个输入OpenFlow消息均执行以下操作:利用与所述源代码的语言类型对应的符号执行工具,对该输入OpenFlow消息进行处理,得到与该输入OpenFlow消息对应的多条可执行路径、与该多条可执行路径中的每条可执行路径对应的路径约束条件、以及与每条可执行路径对应的第一输出OpenFlow消息集,所述第一输出OpenFlow消息集为与每条可执行路径对应的输出OpenFlow消息的集合;利用约束求解器分别对与每条可执行路径对应的路径约束条件进行求解,并基于求解结果,对与每条可执行路径对应的第一输出OpenFlow消息集中的各输出OpenFlow消息进行处理,得到与每条可执行路径对应的第二输出OpenFlow消息集,所述第二输出OpenFlow消息集为对所述第一输出OpenFlow消息集中的各输出OpenFlow消息进行处理后得到的输出OpenFlow消息的集合;对与每条可执行路径对应的第二输出OpenFlow消息集中的各输出OpenFlow消息进行处理,得到与每条可执行路径对应的第三输出OpenFlow消息集,所述第三输出OpenFlow消息集为对所述第二输出OpenFlow消息集中的各输出OpenFlow消息进行处理后得到的输出OpenFlow消息的集合;利用与每个SDN应用的每个输入OpenFlow消息对应的每条可执行路径对应的第三输出OpenFlow消息集中的各输出OpenFlow消息,检测多个SDN应用两两之间是否存在冲突。2.根据权利要求1所述的用于检测多个软件定义网络SDN应用之间的冲突的方法,其特征在于,利用与所述源代码的语言类型对应的符号执行工具,对输入OpenFlow消息进行处理,得到与该输入OpenFlow消息对应的多条可执行路径、与该多条可执行路径中的每条可执行路径对应的路径约束条件、以及与每条可执行路径对应的第一输出OpenFlow消息集,包括:利用与SDN应用的源代码的语言类型对应的符号执行工具,将该SDN应用的各输入OpenFlow消息包含的相关变量指定为符号变量,其中,所述相关变量为在检测多个SDN应用之间的冲突的过程中所需使用的变量;利用所述符号执行工具运行该SDN应用的源代码包含的各事件处理器,得到与该SDN应用的各输入OpenFlow消息对应的多条可执行路径、与该多条可执行路径中的每条可执行路径对应的路径约束条件、以及与每条可执行路径对应的第一输出OpenFlow消息集。3.根据权利要求2所述的用于检测多个软件定义网络SDN应用之间的冲突的方法,其特征在于,还包括:将SDN应用的各输入OpenFlow消息包含的无关变量赋予具体值,其中,所述无关变量为在检测多个SDN应用之间的冲突的过程中无需使用的变量。4.根据权利要求2或3所述的用于检测多个软件定义网络SDN应用之间的冲突的方法,其特征在于,还包括:根据与SDN应用的各输入OpenFlow消息包含的流表的各个域在软件定义网络SDN中的具体含义,将与该SDN应用的各输入OpenFlow消息包含的各符号变量的取值范围限定在预设范围内。5.根据权利要求1所述的用于检测多个软件定义网络SDN应用之间的冲突的方法,其特征在于,利用约束求解器分别对与每条可执行路径对应的路径约束条件进行求解,并基于求解结果,对与每条可执行路径对应的第一输出OpenFlow消息集中的各输出OpenFlow消息进行处理,得到与每条可执行路径对应的第二输出OpenFlow消息集,包括:针对与每个SDN应用的每个输入OpenFlow消息对应的每条可执行路径,均执行以下操作:利用约束求解器对与该条可执行路径对应的路径约束条件进行求解;在约束求解器返回结果为有解的情况下,为与该条可执行路径对应的第一输出OpenFlow消息集中的各输出OpenFlow消息包含的各符号变量赋予求解得到的具体值,得到与该条可执行路径对应的第二输出OpenFlow消息集;在约束求解器返回结果为无解的情况下...

【专利技术属性】
技术研发人员:王之梁李亚慧尹霞施新刚吴建平
申请(专利权)人:清华大学
类型:发明
国别省市:北京,11

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1