【技术实现步骤摘要】
用于检测多个软件定义网络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应用的输出仍然 ...
【技术保护点】
1.一种用于检测多个软件定义网络SDN应用之间的冲突的方法,其特征在于,包括:针对待测的多个SDN应用中的每个SDN应用,均执行以下操作:获取该SDN应用的源代码和所有输入OpenFlow消息;根据该SDN应用的源代码包含的各事件处理器的属性信息,确定各事件处理器所要处理的输入OpenFlow消息,其中,各事件处理器所要处理的输入OpenFlow消息的总和构成所有输入OpenFlow消息;针对每个输入OpenFlow消息均执行以下操作:利用与所述源代码的语言类型对应的符号执行工具,对该输入OpenFlow消息进行处理,得到与该输入OpenFlow消息对应的多条可执行路径、与该多条可执行路径中的每条可执行路径对应的路径约束条件、以及与每条可执行路径对应的第一输出OpenFlow消息集,所述第一输出OpenFlow消息集为与每条可执行路径对应的输出OpenFlow消息的集合;利用约束求解器分别对与每条可执行路径对应的路径约束条件进行求解,并基于求解结果,对与每条可执行路径对应的第一输出OpenFlow消息集中的各输出OpenFlow消息进行处理,得到与每条可执行路径对应的第二输出OpenF ...
【技术特征摘要】
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
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。