SDN网络中STP避环的设计与实现

2024-05-10 06:35正,鲁
通化师范学院学报 2024年4期
关键词:网桥环路交换机

姚 正,鲁 兵

传统的IP网络是为实现端到端的数据传输而设计的[1],IP数据包字段中包含源端主机的IP地址和目标主机的IP地址,网络流量基本都是通过TCP/IP协议传输.伴随网络技术和应用业务的发展,数据流量呈突发式增长,应用业务对网络的服务质量、可靠性、灵活性等提出了更高的要求,传统网络端到端连接和尽力而为的数据转发网络架构难以实现新需求.网络协议从最初的TCP/IP模型发展到现在的TCP/IP协议簇和各种补丁协议,网络越来越复杂,但网络的核心技术只有少数巨头公司掌握,导致网络架构处于封闭状态,制约了新技术发展.软件定义网络是一种新型网络架构[2],它有两个重要的属性,一是控制转发平面分离以实现集中式控制;二是网络可编程实现灵活定义.SDN的开放可编程特性有利于打破巨头生产商对设备、协议和技术的垄断,促使网络更加开放,满足新业务和新应用的需求.传统交换式网络中,交换机对数据包进行解析,并根据MAC地址表对IP数据进行转发;但在SDN网络中,由于控制平面和转发平面分离,控制器对数据包进行解析生成转发流表,将流表下发到交换机,交换机根据转发流表对数据进行转发.

为保障交换网络的可靠性和转发效率,在网络中构建冗余备份链路是一种有效方式,但冗余备份链路会产生网络环路,网络环路会引发广播风暴导致网络瘫痪.为消除SDN交换网络中环路带来的广播风暴,本文通过对SDN交换网络中的STP协议和RYU控制器进行研究、设计、开发和实现,构建逻辑无环交换网络.并对STP协议在SDN中的应用进行了实验验证,结果表明,本文提出的设计和开发切实可行,能有效避免网络环路引发的广播风暴,同时又提供了冗余备份链路,保障了网络的可靠性.

1 软件定义网络

SDN可以通过软件编写的方式灵活定义网络设备的转发功能,将网络设备的控制平面和转发平面分离,并将控制平面集中实现[3].这种新型网络架构的部署只需要在控制节点进行集中的软件升级,即可实现快速、灵活且可靠的网络部署,降低管理和配置的复杂性,提高网络运行效率;另外,SDN网络架构具备很强的开放性,用户可以根据上层应用实现个性化定制功能.SDN基本架构如图1所示.

图1 SDN基本架构

SDN转发层由通用的网络设备(SDN交换机)组成,主要负责数据流量的转发;SDN控制层由SDN控制器组成,主要负责网络拓扑和网络设备的管理,并下发转发策略给网络设备;SDN应用层由云管理平台和SDN应用组成,用户通过应用程序接口开发不同的应用程序,对网络资源进行灵活统一管理.北向接口是应用层与控制器交互的接口,由于上层应用的多样性,SDN北向接口需要满足多样性、合理性和开放性,未形成业界公认的标准,不同控制器的厂商设计不同的北向接口,通过调用开放的北向接口,网络管理员可以自定义网络应用.南向接口协议是控制平面和转发平面之间的通信协议[4],实现控制器对转发设备的集中管理.SDN交换机需要与控制平面协同后才能工作,相关的消息通过南向接口协议传达[5],当前SDN已形成的标准接口协议是OpenFlow协议,用于控制数据平面的转发行为.控制器(RYU)使用Python语言开发,Python的易学易用性为RYU控制器的开发和管理提供便利,且RYU控制器对OpenFlow协议的支持范围也较广[6].

2 生成树协议

2.1 网络环路与生成树协议

在实际网络场景中,为了保证网络的可靠性,会在网络拓扑中设计冗余路径,冗余路径的设计可以防御单条链路故障引起的网络瘫痪.带有环路的交换式网络如图2所示.

图2 带有环路的交换式网络

使用冗余路径对网络的可靠运行很有帮助,但冗余路径会产生网络环路,网络环路导致二层交换机会不停地泛洪广播数据、设备可能会收到同一数据帧的多个复制(数据帧可能会通过不同的网段在同一时间到达)、MAC地址表不稳定等诸多问题.以太网交换机使用生成树协议,可以在提高网络可靠性的同时避免环路带来的各种问题.生成树协议的核心是生成树算法,STA算法的核心思想是阻塞网络中冗余链路的端口,构建一个能够连通全网所有节点的无环逻辑拓扑.

2.2 生成树算法

生成树算法如下所示:

STP协议根据STA算法进行根网桥、非根网桥选举,分配端口的角色(根端口、指定端口、非指定端口),并根据不同端口的角色确定端口状态,根端口和指定端口的状态是FORWARD,非指定端口的状态是BLOCK,设置BLOCK状态端口是为了避免环路.如图2中所示,运行STP协议后,STP协议阻塞交换机S1的Fa0/24号端口,其他链路端口处于正常FORWARD状态,构建了一个无环逻辑拓扑.

3 仿真实验

3.1 仿真实验环境

本文实验环境建立在Ubuntu 16.04系统之上,仿真模拟器Mininet2.3.1,OpenvSwitch 2.5.9和RYU4.34控制器.Mininet是一个用于仿真SDN网络的开源软件,支持创建带有虚拟主机、交换机、链路和控制器的SDN环境.在Mininet中构建包含1台控制器、3台交换机、4台终端主机且带有环路拓扑,OpenvSwitch用于模拟SDN交换机,通过OpenFlow1.3协议连接OpenSwitch的SDN控制器.实验拓扑如图3所示.

图3 实验拓扑

3.2 实验拓扑文件Python源代码及实验结果

实验拓扑对应的Python文件(3sw-loop.py)源代码如下:

在Ubuntu系统开启两个终端,一个终端先运行RYU控制器,另一个终端再运行3swloop.py,因为网络中交换机之间存在环路,会导致广播风暴并占用带宽,导致各主机之间无法进行正常通信.主机之间ping-100%dropped如图4所示.

图4 主机之间ping-100%dropped

3.3 编制RYU控制器文件代码和运行实验拓扑文件

3.3.1 编辑3sw_loop_stp.py,附关键代码

设置交换机的优先级.

设置交换机的活动端口状态.

3.3.2 运行带有STP功能的RYU控制器文件和实验拓扑文件

在Ubuntu系统开启两个终端,一个终端先运行带有STP功能RYU控制器3w_loop_stp.py,另一个终端再运行3sw-loop.py.因为运行了带有STP功能RYU控制器,按照STA算法进行网络链路收敛后,交换机之间链路端口状态如图5所示.实验拓扑链路(links)如图6所示.

图5 STP交换机端口角色和状态

图6 实验拓扑链路

3.3.3 实验结果分析

实验分析依据是实验拓扑链路、生成树算法进行根网桥、根端口、指定端口、非指定端口选举和确定,并将指定端口设置为转发状态(FORWARD),非指定端口设置为阻塞状态(BLOCK).

(1)选根网桥.文件3sw_loop_stp.py中设定了拓扑图中各交换机的优先级,S1的优先级(0x1000)最小,所以会选举为根网桥,S2和S3是非根网桥.

(2)选根端口.在非根网桥S2和S3上选出一个根端口,用于连接根网桥S1并处于转发状态.S2的优先级(0x2000)较大,选举为非根网桥,连接S1是3号端口,所以S2的3号端口成为根端口(ROOT_PORT);S3的优先级(0x3000)最大,选举为非根网桥,连接S1是1号端口,所以S3的1号端口成为根端口(ROOT_PORT).

(3)选指定端口.根网桥S1所属的端口都是指定端口(DESIGNATED_PORT),所以S1的1、2、3号端口都是指定端口;S2的优先级(0x2 000)较大,除了S2的3号端口是根端口外,其他端口(1、2、4)都是指定端口(DESIGNATED_PORT);S3的3号连接h4主机,不参与STA运算,是转发状态(计入指定端口).

(4)非指定端口.S3的优先级(0x3000)最大,S3的1号端口是根端口,2号端口因为端口ID较大,成为非指定端口(NON_DESIGNATED_PORT).

STA算法分析结果如表1所示,实验运行结果如图5(STP交换机端口角色和状态)所示,两者保持一致.

表1 STA算法分析结果

通过代码文件的运行方式,指定了实验拓扑中S3交换机的2号端口是非指定端口,并将该端口设定为阻塞状态,使得网络中环路断开,构建了一个逻辑上无环的拓扑.在逻辑无环网络中,消除了广播风暴,主机之间可以正常通信,主机之间ping-0%dropped如图7所示.

图7 主机之间ping-0%dropped

4 结语

本文在Ubuntu 16.04系统,仿真模拟器Mininet2.3.1,OpenvSwitch2.5.9和RYU4.34控制器基础上搭建仿真平台,通过Python代码编制网络拓扑文件和RYU控制器文件的方式,实施SDN中的网络环路设计,按照STA算法设计STP环路避免,在仿真实验平台运行,测试结果表明,实现了SDN网络中环路避免.但对于SDN复杂网络中的环路避免实现,还需要进一步设计、实验和分析,SDN使用代码方式构建和管理网络,是一种新型网络架构,其目标是构建和开发网络,消除网络技术壁垒,值得深入学习和研究.

猜你喜欢
网桥环路交换机
网桥技术在海外工程项目中的应用
修复损坏的交换机NOS
上海市中环路标线调整研究
使用链路聚合进行交换机互联
探析网桥优先级
“软隔离”网桥造成的麻烦
PoE交换机雷击浪涌防护设计
Buck-Boost变换器的环路补偿及仿真
罗克韦尔自动化交换机Allen-Bradley ArmorStratix 5700
单脉冲雷达导引头角度跟踪环路半实物仿真