一种利用SDN技术解决环形网络链路断接的方法与流程

文档序号:13886418阅读:533来源:国知局

本发明涉及网络技术,特别是一种利用sdn技术解决环形网络链路断接的方法。



背景技术:

现有技术中,要实现网络配置的正确更新通常是很困难的,在网络更新的过程中可能会出现网络的转发回路、丢包以及访问控制规则的违背等问题。导致网络更新困难的主要因素是网络是具有成百上千个节点的分布式系统,而网络的更新只能每次在一个节点上执行。

网络环境下验证网络的一系列更新是否正确通常是通过网络管理员手动来完成的,这一过程冗杂并且容易出错。而大多数网络需要经常更新配置,原因有可能是某条链路的突然中断导致无法发送数据,或者也可能是需要修改某些转发路径从而避免网络堵塞,改变网络的安全策略等等。如果只是简单的实现网络配置的更新,网络流量被不同配置的交换机处理,就会产生许多网络问题。



技术实现要素:

为了解决配置更新不一致导致的转发回路现象和网络配置繁琐的问题,本发明提供一种利用sdn技术解决环形网络链路断接的方法。

实现本发明目的的技术方案为:一种利用sdn技术解决环形网络链路断接的方法,系统架构包括mininet模拟环境平台、opendaylight控制器、restapi接口和微型环形网络拓扑结构,所述微型环形网络拓扑结构包括第一sdn智能交换机、第二sdn智能交换机、第三sdn智能交换机、第四sdn智能交换机、第五sdn智能交换机、第一主机、第二主机和第三主机,所述第一sdn智能交换机、第二sdn智能交换机、第三sdn智能交换机、第四sdn智能交换机、第五sdn智能交换机顺次连接,第五sdn智能交换机与第一sdn智能交换机连接,所述第一主机、第二主机和第三主机分别与第一sdn智能交换机、第二sdn智能交换机、第三sdn智能交换机连接;mininet环境平台通过opendaylight控制器全局控制微型环形网络拓扑结构中sdn智能交换机的流表更新;sdn智能交换机解析并执行模拟环境mininet中配置的网络流表;restapi接口通过编写脚本完成网络拓扑结构流表的配置;该方法包括以下步骤:

步骤1,开启mininet模拟环境平台,初始化sdn基础环境;

步骤2,运行/opt/opendaylight-snapshot/run.delayed.sh命令开启opendaylight控制器,根据最短路径和最小网络路径开销的要求,给初始网络拓扑结构安装初始流表;

在初始流表中,第一主机发送数据包至第三主机时,数据包流经第一sdn智能交换机、第二sdn智能交换机、第三sdn智能交换机,将第一sdn智能交换机的第三接口作为数据包的入接口,第一接口作为数据包的出接口,第二sdn智能交换机的第一接口作为数据包的入接口,第二接口作为数据包的出接口,第三sdn智能交换机的第一接口作为数据包的入接口,第三接口作为数据包的出接口;

第二主机发送数据包至第三主机时,数据包流经第二sdn智能交换机、第三sdn智能交换机,将第二sdn智能交换机的第三接口作为数据包的入接口,第二接口作为数据包的出接口,第三sdn智能交换机的第一接口作为数据包的入接口,第三接口作为数据包的出接口;

将第四sdn智能交换机的第一接口设置为数据包的入接口和出接口,将第五sdn智能交换机的第二接口设置为数据包的入接口和出接口;

步骤3,第二sdn智能交换机和第三sdn智能交换机链路出现中断,按照第一sdn智能交换机、第二sdn智能交换机、第三sdn智能交换机、第四sdn智能交换机、第五sdn智能交换机的顺序依次配置;

重新命名流表,并将第二sdn智能交换机、第三sdn智能交换机之间的流删除,提高流表的优先级;

第一主机发送数据包至第三主机时,数据包流经第一sdn智能交换机、第五sdn智能交换机、第四sdn智能交换机和第三sdn智能交换机,将第一sdn智能交换机的第三接口作为数据包的入接口,第二接口作为数据包的出接口,第五sdn智能交换机的第二接口作为数据包的入接口,第一接口作为数据包的出接口,第四sdn智能交换机的第二接口作为数据包的入接口,第一接口作为数据包的出接口,第三sdn智能交换机的第二接口作为数据包的入接口,第三接口作为数据包的出接口;

第二主机发送数据包至第三主机时,数据包流经第二sdn智能交换机、第一sdn智能交换机、第五sdn智能交换机、第四sdn智能交换机、第三sdn智能交换机,将第二sdn智能交换机的第三接口作为数据包的入接口,第一接口作为数据包的出接口,第一sdn智能交换机的第一接口作为数据包的入接口,第二接口作为数据包的出接口;

步骤4,输入命令mininet>xtermh1h2h3,开启每个主机的终端检测仿真程序,检测到网络链路中第一sdn智能交换机和第五sdn智能交换机之间存在回路;

步骤5,更新流表并重新命名,提高流表优先级,改变交换机的配置顺序;先设置第五sdn智能交换机,将第五sdn智能交换机的第二接口作为数据包的入接口,第一接口作为数据包的出接口,再设置第二sdn智能交换机,将第二sdn智能交换机的第三接口作为数据包的入接口,第一接口作为数据包的出接口,第三步设置第一sdn智能交换机,与第一主机连接的第三接口和第二sdn智能交换机连接的第一接口作为数据包的入接口,第二接口作为数据包的出接口,第四步设置第四sdn智能交换机,第二接口作为数据包的入接口,第一接口作为数据包的出接口,最后设置第三sdn智能交换机,它的第二接口作为数据包的入接口,第三接口作为数据包的出接口;

步骤6,通过第三主机的xterm屏显查看接收到的数据包标号,判断所有数据是否都已经成功发送,如成功则关闭mininet模拟环境平台,反之继续监测发送直至发送完成。

与现有技术相比,本发明的显著优点为:本发明公开了一种一种利用sdn技术解决环形网络链路断接的方法,利用sdn控制平面软件编程的优势,通过脚本编写实现流表更新,解决了特定环形网络中重要链路出现断接后管理员手动配置有可能出现的回路现象。

附图说明

图1本发明解决链路突然断接问题的流程图。

图2本发明所采用的环形拓扑结构图。

图3本发明链路断接后的网络拓扑图。

具体实施方式

sdn是一种新型网络创新架构,是网络虚拟化的一种实现方式,其核心技术是利用openflow将网络设备控制面与数据面分离开来,从而实现了网络流量的灵活控制,使网络作为管道变得更加智能。

为了便于本领域的技术人员理解本发明的原理和工作过程,首先对本发明中用到的词汇作如下定义和解释:

sdn:softwaredefinednetwork,软件自定义网路。

xterm:终端模拟器,用来提供多个独立的shell输入输出。

opendaylight:是一个以模块化、可插拔、灵活的、基于java的控制器为核心的开源平台。

rest:representationalstatetransfer,表述性状态转移,指的是一组架构约束条件和原则,满足这些约束条件和原则的应用程序或设计就是restful。

mininet:是一个轻量级软件定义网络和测试平台,它采用虚拟化技术使一个单一的系统看起来像一个完整的网络,可以运行内核、系统和用户代码,也可简单理解为sdn网络系统中的一种基于进程虚拟化平台,它支持openflow、openvswith等各种协议。一个mininet的主机的行为同一个真实的机器十分类似,可以ssh登录到它并且运行任意程序。它提供了一些默认的拓扑结构和sdn控制器功能,如使交换机工作在集线器模式或者l2学习交换机模式等。

本发明提出一种利用sdn技术解决环形网络链路断接的方法,系统架构包括mininet模拟环境平台、opendaylight控制器、restapi接口和微型环形网络拓扑结构,所述微型环形网络拓扑结构包括第一sdn智能交换机s1、第二sdn智能交换机s2、第三sdn智能交换机s3、第四sdn智能交换机s4、第五sdn智能交换机s5、第一主机h1、第二主机h2和第三主机h3,所述第一sdn智能交换机s1、第二sdn智能交换机s2、第三sdn智能交换机s3、第四sdn智能交换机s4、第五sdn智能交换机s5顺次连接,第五sdn智能交换机s5与第一sdn智能交换机s1连接,所述第一主机h1、第二主机h2和第三主机h3分别与第一sdn智能交换机s1、第二sdn智能交换机s2、第三sdn智能交换机s3连接;mininet环境平台通过opendaylight控制器全局控制微型环形网络拓扑结构中sdn智能交换机的流表更新;sdn智能交换机解析并执行模拟环境mininet中配置的网络流表;restapi接口通过编写脚本完成网络拓扑结构流表的配置;

如图1所示,该方法包括以下步骤:

步骤1,开启mininet模拟环境平台,初始化sdn基础环境;

步骤2,运行/opt/opendaylight-snapshot/run.delayed.sh命令开启opendaylight控制器,根据最短路径和最小网络路径开销的要求,给初始网络拓扑结构安装初始流表;

为了能够实现最短路径,首先是关于链路的权重计算,对于网络,路径的选择依靠链路的权重,准确的权重估计,保证路径选择计算的高效率;将网络中任意两节点的通信过程近似为马尔可夫过程。通过多步概率转移直至任意节点间概率可达,进而求得多步转移概率之和,用以衡量相邻节点间的可达性。相邻节点的可达性越高,则其直接链路的权重越小,即链路的权重越小,即链路权重与可达性成反比关系;图2中第一主机h1与第一sdn智能交换机s1,第二主机h2与第二sdn智能交换机s2,第三主机h3与第三sdn智能交换机s3的链路权重都设置为1,第一sdn智能交换机s1与第二sdn智能交换机s2、第五sdn智能交换机s5相连的链路权重设置为2,第三sdn智能交换机s3与第二sdn智能交换机s2、第四sdn智能交换机s4相连的链路权重设置为2,将第四sdn智能交换机s4与第五sdn智能交换机s5之间的链路权重设置为5;图3中第二sdn智能交换机s2与第三sdn智能交换机s3之间的链路断接,各链路的权重不改变;

在初始流表中,第一主机h1发送数据包至第三主机h3时,数据包流经第一sdn智能交换机s1、第二sdn智能交换机s2、第三sdn智能交换机s3,将第一sdn智能交换机s1的第三接口作为数据包的入接口,第一接口作为数据包的出接口,第二sdn智能交换机s2的第一接口作为数据包的入接口,第二接口作为数据包的出接口,第三sdn智能交换机s3的第一接口作为数据包的入接口,第三接口作为数据包的出接口;

第二主机h2发送数据包至第三主机h3时,数据包流经第二sdn智能交换机s2、第三sdn智能交换机s3,将第二sdn智能交换机s2的第三接口作为数据包的入接口,第二接口作为数据包的出接口,第三sdn智能交换机s3的第一接口作为数据包的入接口,第三接口作为数据包的出接口;

将第四sdn智能交换机s4的第一接口设置为数据包的入接口和出接口,将第五sdn智能交换机s5的第二接口设置为数据包的入接口和出接口;

步骤3,第二sdn智能交换机s2和第三sdn智能交换机s3链路出现中断,按照第一sdn智能交换机s1、第二sdn智能交换机s2、第三sdn智能交换机s3、第四sdn智能交换机s4、第五sdn智能交换机s5的顺序依次配置;

重新命名流表,并将第二sdn智能交换机s2、第三sdn智能交换机s3之间的流删除,提高流表的优先级;

第一主机h1发送数据包至第三主机h3时,数据包流经第一sdn智能交换机s1、第五sdn智能交换机s5、第四sdn智能交换机s4和第三sdn智能交换机s3,将第一sdn智能交换机s1的第三接口作为数据包的入接口,第二接口作为数据包的出接口,第五sdn智能交换机s5的第二接口作为数据包的入接口,第一接口作为数据包的出接口,第四sdn智能交换机s4的第二接口作为数据包的入接口,第一接口作为数据包的出接口,第三sdn智能交换机s3的第二接口作为数据包的入接口,第三接口作为数据包的出接口;

第二主机h2发送数据包至第三主机h3时,数据包流经第二sdn智能交换机s2、第一sdn智能交换机s1、第五sdn智能交换机s5、第四sdn智能交换机s4、第三sdn智能交换机s3,将第二sdn智能交换机s2的第三接口作为数据包的入接口,第一接口作为数据包的出接口,第一sdn智能交换机s1的第一接口作为数据包的入接口,第二接口作为数据包的出接口;

步骤4,输入命令mininet>xtermh1h2h3,开启每个主机的终端检测仿真程序,检测到网络链路中第一sdn智能交换机s1和第五sdn智能交换机s5之间存在回路;

步骤5,更新流表并重新命名,提高流表优先级,改变交换机的配置顺序;先设置第五sdn智能交换机s5,将第五sdn智能交换机s5的第二接口作为数据包的入接口,第一接口作为数据包的出接口,再设置第二sdn智能交换机s2,将第二sdn智能交换机s2的第三接口作为数据包的入接口,第一接口作为数据包的出接口,第三步设置第一sdn智能交换机s1,与第一主机h1连接的第三接口和第二sdn智能交换机s2连接的第一接口作为数据包的入接口,第二接口作为数据包的出接口,第四步设置第四sdn智能交换机s4,第二接口作为数据包的入接口,第一接口作为数据包的出接口,最后设置第三sdn智能交换机s3,它的第二接口作为数据包的入接口,第三接口作为数据包的出接口;

步骤6,通过第三主机h3的xterm屏显查看接收到的数据包标号,判断所有数据是否都已经成功发送,如成功则关闭mininet模拟环境平台,反之继续监测发送直至发送完成。

下面结合具体实施例对本发明作进一步说明。

实施例

一种利用sdn技术解决特定环形网络出现回路现象的方法,包含的系统架构为:mininet模拟环境平台,restapi接口,opendaylight控制器,微型环形网络拓扑结构。

在mininet环境中使用opendaylight控制器全局控制特定环形网络中交换机的流表更新。

sdn智能交换机能够解析并执行模拟环境mininet中配置的网络流表。

restapi接口能够通过编写脚本完成网络拓扑结构流表的配置。

微型环形网络拓扑结构包括5台sdn智能交换机和三台主机。

如图2所示,为满足最短路径以及最小的网络路径开销需要对初始流表进行如下配置:

1)首先将原先在网络中存在的流都删除,以免对结果产生影响;

2)对从第一主机h1发送到第三主机h3的流进行如下配置,统一设置流优先级为10000,流经第一sdn智能交换机s1时的流入口为第三接口,出口为第一接口,流经第二sdn智能交换机s2时的流入口为第一接口,出口为第二接口;

3)对从第二主机h2发送到第三主机h3的流配置如下:优先级设置也为10000,流经第二sdn智能交换机s2时的流入口为第三接口,出口为第二接口;

4)第三sdn智能交换机s3至第三主机h3的流设置则相对简单,此时第三sdn智能交换机s3的流入口为第一接口,出口为第三接口;

5)由于要满足最短路径到达接收节点并使用最小的网络路径开销,需要设置第四sdn智能交换机s4、第五sdn智能交换机s5的流入口和流出口为相同的接口;

通过restapi接口配置的脚本1为:

#removepreviousflowsifthereareany:

curlhttp://localhost:8080/wm/staticflowentrypusher/clear/all/json

#first,setuptheflowsfromh1toh3:

curld

'{"switch":"00:00:00:00:00:00:00:01","name":"init1",

"priority":"10000","ingressport":"3","ethertype":"2048","active":"true",

"actions":"output=1"}'http://localhost:8080/wm/staticflowentrypusher/json

curld

'{"switch":"00:00:00:00:00:00:00:02","name":"init2",

"priority":"10000","ingressport":"1","ethertype":"2048","active":"true",

"actions":"output=2"}'http://localhost:8080/wm/staticflowentrypusher/json

#second,setuptheflowsfromh2toh3:

curld

'{"switch":"00:00:00:00:00:00:00:02","name":"init3",

"priority":"10000","ingressport":"3","ethertype":"2048","active":"true",

"actions":"output=2"}'http://localhost:8080/wm/staticflowentrypusher/json

#third,setuptheflowfroms3toh3:

curld

'{"switch":"00:00:00:00:00:00:00:03","name":"init4",

"priority":"10000","ingressport":"1","ethertype":"2048","active":"true",

"actions":"output=3"}'http://localhost:8080/wm/staticflowentrypusher/json

#finally,theflowsfors4ands5accordingtotheshortestpathrequirement

curld

'{"switch":"00:00:00:00:00:00:00:04","name":"init5",

"priority":"10000","ingressport":"1","ethertype":"2048","active":"true",

"actions":"output=1"}'http://localhost:8080/wm/staticflowentrypusher/json

curld

'{"switch":"00:00:00:00:00:00:00:05","name":"init6",

"priority":"10000","ingressport":"2","ethertype":"2048","active":"true",

"actions":"output=2"}'http://localhost:8080/wm/staticflowentrypusher/json

如果交换机s2-s3之间的链路突然出现断接,如图3所示,网络断路引起了网络拓扑结构变换,对比没有sdn技术,网络管理员手动配置时由于规则生效不一致的情况,我们按照交换机顺序即第一sdn智能交换机s1、第二sdn智能交换机s2、第三sdn智能交换机s3、第四sdn智能交换机s4、第五sdn智能交换机s5依次来进行配置:

1)由于是链路第二sdn智能交换机s2与第二sdn智能交换机s3之间断掉,我们需要将第二sdn智能交换机s2与第三sdn智能交换机s3之间的流条目删除;

2)为了区别初始流表,我们重新命名了流表名称为为防止之前的流表影响,流表提高优先级至20000;

3)第一主机h1发送数据至第一sdn智能交换机s1的流入口为第三接口,第二主机h2至第一sdn智能交换机s1的流入口为第一接口,此时的第二接口为转发出口;

4)依次设置流经第二sdn智能交换机s2、第三sdn智能交换机s3、第四sdn智能交换机s4的流入口和流出口;

5)设置流经第五sdn智能交换机s5的状态,流入口为第二接口,流出口为第一接口。

通过restapi接口顺序配置的脚本2为:

#wedon'twanttoremove,wewanttoupdate;hencethehigherpriority.

#removepreviousflowsifthereareany:

#curlhttp://localhost:8080/wm/staticflowentrypusher/clear/all/json

#simulatelinkbreakdown;removeflowfroms2tos3:

curlhttp://localhost:8080/wm/staticflowentrypusher/clear/3/json

#first,setuptheflowsfors1:

curld

'{"switch":"00:00:00:00:00:00:00:01","name":"naive1",

"priority":"20000","ingressport":"3","ethertype":"2048","active":"true",

"actions":"output=2"}'http://localhost:8080/wm/staticflowentrypusher/json

curld

'{"switch":"00:00:00:00:00:00:00:01","name":"naive2",

"priority":"20000","ingressport":"1","ethertype":"2048","active":"true",

"actions":"output=2"}'http://localhost:8080/wm/staticflowentrypusher/json

#second,setuptheflowsfors2:

curld

'{"switch":"00:00:00:00:00:00:00:02","name":"naive3",

"priority":"20000","ingressport":"3","ethertype":"2048","active":"true",

"actions":"output=1"}'http://localhost:8080/wm/staticflowentrypusher/json

#third,setuptheflowsfors3:

curld

'{"switch":"00:00:00:00:00:00:00:03","name":"naive4",

"priority":"20000","ingressport":"2","ethertype":"2048","active":"true",

"actions":"output=3"}'http://localhost:8080/wm/staticflowentrypusher/json

#fourth,setuptheflowsfors4:

curld

'{"switch":"00:00:00:00:00:00:00:04","name":"naive5",

"priority":"20000","ingressport":"2","ethertype":"2048","active":"true",

"actions":"output=1"}'http://localhost:8080/wm/staticflowentrypusher/json

#finally,setuptheflowsfors5

curld

'{"switch":"00:00:00:00:00:00:00:05","name":"naive6",

"priority":"20000","ingressport":"2","ethertype":"2048","active":"true",

"actions":"output=1"}'http://localhost:8080/wm/staticflowentrypusher/json

由于在交换机中安装流表的延迟,第一sdn智能交换机s1与第五sdn智能交换机s5之间会产生回路并持续很短的一段时间,直到应用新的流表规则后回路现象才回消失。

解决因为网络断路引起的网络拓扑结构重新配置繁琐的方法为:

1)首先仍然需要做的是第二sdn智能交换机s2与第三sdn智能交换机s3之间的数据流删除,并将发往这条路径上的数据包重新导向;

2)为了规避回路的出现,这里首先要对流经第五sdn智能交换机s5的流进行设置,修改流表名称为better,并提高流的优先级为32768;

3)接下来我们需要配置流经第二sdn智能交换机s2的流,将数据包重导向流经第一sdn智能交换机s1,这时的流入口为第三接口,流出口为第一接口;

4)接下来依次对流经第一sdn智能交换机s1、第四sdn智能交换机s4、第三sdn智能交换机s3的流进行配置,其余配置不需再做更改;

利用sdn技术更新网络配置的脚本代码3为:

#wedon'twanttoremove,wewanttoupdate;hencethehigherpriority.

#removepreviousflowsifthereareany:

curlhttp://localhost:8080/wm/staticflowentrypusher/clear/all/json

#simulatelinkbreakdown;removeflowfroms2tos3:

curlhttp://localhost:8080/wm/staticflowentrypusher/clear/3/json

#we'llworkinthepacketflowdirection.

#first,setuptheflowsfors5:

curld

'{"switch":"00:00:00:00:00:00:00:05","name":"better1",

"priority":"32768","ingressport":"2","ethertype":"2048","active":"true",

"actions":"output=1"}'http://localhost:8080/wm/staticflowentrypusher/json

#second,setuptheflowsfors2:

curld

'{"switch":"00:00:00:00:00:00:00:02","name":"better2",

"priority":"32768","ingressport":"3","ethertype":"2048","active":"true",

"actions":"output=1"}'http://localhost:8080/wm/staticflowentrypusher/json

#third,setuptheflowsfors1:

curld

'{"switch":"00:00:00:00:00:00:00:01","name":"better3",

"priority":"32768","ingressport":"3","ethertype":"2048","active":"true",

"actions":"output=2"}'http://localhost:8080/wm/staticflowentrypusher/json

curld

'{"switch":"00:00:00:00:00:00:00:01","name":"better4",

"priority":"32768","ingressport":"1","ethertype":"2048","active":"true",

"actions":"output=2"}'http://localhost:8080/wm/staticflowentrypusher/json

#fourth,setuptheflowsfors4:

curld

'{"switch":"00:00:00:00:00:00:00:04","name":"better5",

"priority":"32768","ingressport":"2","ethertype":"2048","active":"true",

"actions":"output=1"}'http://localhost:8080/wm/staticflowentrypusher/json

#finally,setuptheflowsfors3:

curld

'{"switch":"00:00:00:00:00:00:00:03","name":"better6",

"priority":"32768","ingressport":"2","ethertype":"2048","active":"true",

"actions":"output=3"}'http://localhost:8080/wm/staticflowentrypusher/json

本发明利用sdn控制平面软件编程的优势,通过脚本编写实现流表更新,解决了特定环形网络中重要链路出现断接后管理员手动配置有可能出现的回路现象。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1