基于Packet Tracer的快速生成树协议研究与仿真实现
2020-05-31李瑞霞
吴 树,李瑞霞
(皖西学院 电子与信息工程学院,安徽 六安 237012)
Cisico Packet Tracer(CPT)是一款由思科公司开发的开源软件,可以提供各种思科数通设备的模拟运行情况,它可以模拟网络中路由器,交换机,无线设备,终端设备等多种模型。通过搭建网络拓扑,配置网络参数,可提供多媒体的Flash动画演示[1]。
CPT软件操作简便,接近现网环境,可为网络学习者提供丰富和充分互动的学习体验,加深对网络中复杂协议的理解,达到学习事半功倍的效果;同时该软件可为网络维护及管理人员提供设计及配置的初步方案,方便网络协议的模拟及故障的跟踪,为从事网络研究的人员提供了一个良好的仿真平台[2]。
根据IEEE 802.1D的定义,STP(Spanning Tree Protocol)协议工作在数据链路层[3],其基本思想是在物理上存在交换环路的网络中,采用STA(Spanning Tree Algorithm)算法,在逻辑上断开阻塞端口,从而生成一个无环型交叉的树状网络拓扑[4]。在生成树协议中,阻塞端口不再转发数据,因此交换机在逻辑上构造了一条唯一链路进行帧的传输,当物理主用路由出现中断时,网络会在一定时间内收敛,自动切换到备用链路上,从而继续保持数据帧的传输。
本文首先对生成树的基本原理进行了介绍,包括生成树协议算法的基本步骤,其所要解决的网络问题及运用场景。生成树作为IEEE.802.1D的标准,一般收敛时间较长,需要五十秒左右。为了提升网络收敛时间,在生成树协议的基础上,讨论了其改进算法,即快速生成树协议(RSTP),快速生成协议通过对端口状态、端口角色、BPDU内容的改进及调整,顺利解决了上述延时问题,收敛时间可达到秒级水平。无论STP及RSTP,其本质上都采用了一棵STP树,因而很难实现负载均衡,改进的办法是采用RPVST或多实例生成树MSTP。实验主要针对快速生成树的改进RPVST协议进行设计分析,通过设计一个汇聚层加接入层的网络拓扑,在交换机存在冗余备份的网络结构中,通过定义不同Vlan,实现Vlan和不同生成树的映射,从而实现冗余备份下的网络自愈及流量负载均衡。
1 链路的冗余保护及存在问题
小型网络在设计时往往采用扁平化的组网架构,一般采用单点互联方式。这种组网架构简单、无冗余、低成本,但若其中一台交换机故障则会导致整个网络通信故障,网络稳定性较差[5]。为保障网络的稳定性,可采用环形的主备冗余链路的组网架构进行改进,引入冗余设计增加网络的稳定性,但上述冗余设计也会带来新的问题,即冗余导致网络拓扑结构形成环路,带来一系列的负面影响。
图1 冗余链路网络拓扑图
首先,冗余设计可能引起广播风暴,广播信息在网络中不停地循环转发,导致交换机出现长期超负荷运转,最终耗尽所有网络宽带资源、阻塞网络通信[6]。如图1所示,假设主机A向所在网络广播一个帧后,交换机X的端口X/1会收到此帧消息,并将此广播帧从端口X/2转发出去,根据图1网络拓扑,此广播帧会被交换机Y的端口Y/2接收,然后从Y交换机的端口Y/1转发至网络中,这样会导致交换机X的接口X/1又再次接收到此广播帧,由于二层交换机不保存数据转发的记录,因此,该广播数据帧又从交换机X的端口X/2转发至网络中,以此类推,则会产生循环;数据帧的循环转发导致网络中的交换机资源耗尽直至死机,形成广播风暴。
其次,冗余可能导致多帧复制,由于环路的增在,单播的数据帧被多次复制,传送至目的站点,接收端收到重复数据帧。如图1所示,假设网站中主机A向主机B发送一个单播帧数据,对于交换机X而言,其端口X/1收到该数据帧,对查找其对应的MAC地址表,在MAC地址表中,主机B的对应端口为X/2口,因此将数据帧从端口X/2转发出去,主机B接收到此帧;同理,网络中交换机Y也会收到A向主机B发送的单播帧,从端口Y/1接收,交换机Y根据自己的MAC地址表进行分析,主机B的对应端口为Y/2,故将数据从Y/2转发至网络。因此,对于主机B而言,会从二个方向收到完全相同的帧,即收到了重复数据帧,导致数据紊乱。
再次,冗余还会导致交换机的MAC地址漂移,如图1所示,当主机B发送数据给主机C,假设此时交换机X的MAC地址表为空,则交换机X通过学习,可学习到主机B的对应端口是X2,然后交换机将此帧从X/1端口转发至网络;对交换机Y,它会从端口Y/2收到此帧数据,并从端口Y/1转发出去,被交换机X的端口X/1收到,此时交换X学习到主机B对应的MAC地址为端口X/1,这和之前是不相同的,这样交换机X会频繁修改自己的MAC表,导致MAC表不稳定。
综上,在以太网中,二层网络的环路会带来广播风暴、多帧复制、MAC地址漂移等问题,为解决环形交换网络中的上述问题,基于IEEE 802.1D标准的STP协议和基于IEEE 802.1W的PSTP协议被提出。
2 生成树协议及相关介绍
2.1 生成树协议及介绍
生成树协议是一种数据链路层管理协议[7],其基本思想是在存在交换环路的网络中,交换机直接通过运行生成树协议,交换网桥协议数据单元(BPDU),构造出一个稳定的生成树拓扑结构,如图2所示。在物理主链路出现异常时,生成树协议可让网络自动切换到备用路径上,从而达到网络的冗余链路备份。
图2 生成树协议中的BPDU示例
生成树协议的基本思想是在二层网络中,交换机根据收到的BPDU消息[8],完成以下工作:
(1)在每个广播域内,根据网桥ID(Bridge ID)选出根网桥(Root Bridge),其中网桥ID由网桥优先级(Bridge Priority)和物理地址(MAC Address)构成。首先比较交换机的网桥优先级,网桥优先级低的交换机作为为根网桥.若二个交换机的网桥优先级都相同,再比较它们的MAC地址,由于MAC地址具有唯一性,因此一定能够选出一个网桥桥ID最小的交换机作为根网桥。
(2)在非根网桥上选择一个根端口,到根交换机的代价(Cost)值最小的端口为根端口,Cost值的大小的确定取决于链路的带宽,如表1所示,带宽越大,路径Cost值越小。例如16M的链路Cost值为62,而100M的链路Cost值为19,如果路径Cost值相等,则比较它们的端口ID,端口ID小的为根端口,根端口一般处于转发状态(Forwarding)。
(3)确定指定端口,若物理网段直接连在根网桥上,根桥上所有的端口都是指定端口,在不和根桥连接的链路上,比较链路上端口到根桥的开销或该接口所在交换机的桥ID来确定指定端口,需要注意的是每一条链路只有一个根端口。
(4)阻塞端口的确定,除去根端口和指定端口的端口被设置为阻塞端口,阻塞端口在指定的时间间隔(缺省20秒)收不到BPDU报文时,会运行STP算法进行重新选举。
表1 IEEE.802.1D默认的Cost值
通过以上生成树协议的工作过程,可以看出,生成树协议可在逻辑上避免网络出现环路问题,解决环形以太网的带来的“广播风暴”问题,因此生成树协议也可以看成一种网络保护技术。同时,生成树协议允许网桥之间相互通信以发现网络物理环路,换相当与创建了一个由无环路树叶和树枝构成的树状结构。生成树协议在运用过程中,对终端而言是透明的,即对于客户侧终端设备,用户并不知道其所在的网络中是否使用了生成树协议,这样可很好地提升用户的使用感知。
因此,通过生成树协议阻断冗余链路,消除了网络中可能存在的环路,当主用链路发生故障时,备份链路被激活,可及时恢复网络的连通性;STP通过上述方式,实现链路备份及网络自我保护及自愈功能。
2.2 快速生成树协议介绍
快速生成树协议(IEEE802.1W)是在生成树协议(IEEE802.1D)基础上,进一步优化发展而来,当网络拓扑结构发生更新时,快速生成树协议可以更迅速收敛[9]。
RMSTP相对于STP协议,增加了两种端口角色,替换端口类型和备份端口类型,分别作为根端口和指定端口的冗余端口,当根端口或指定端口发送故障时,上述冗余端口可快速切换成主用端口,从而提升快速生成树的收敛速度,维护网络链路的持续正常运行。此外,快速生成树协议简化了端口的状态信息,STP的五种端口状态包括:禁用(Disable)、阻塞(Blocking)、侦听(Listening)、学习(Learning)、转发(Forwarding);RSTP将STP的五中端口状态优化为三种禁用、学习和转发(forwarding),二者的比较如表2所示,各种端口状态的特点如下:
表2 MSTP/STP端口状态对比情况
Blocking(阻塞):当端口处于阻塞状态时,不参与数据报文的转发,但此时端口可以接收配置消息,并将其交给CPU处理,同时端口由于被阻塞,不能发送配置消息,也不进行MAC地址学习。
Listening(侦听):当端口处于侦听状态时,不参与数据报文的转发,同时也不进行MAC地址学习,但能够接收并发送配置消息。
Learning(学习):当端口处于学习状态时,不参与数据报文的转发,可以进行地址MAC地址学习,也能够接收、处理和发送BPDU配置消息。
Forwarding(转发):当端口处于转发状态时,端口可以转发数据、接收和发送配置消息,进行MAC地址学习.
disable(禁用):端口被禁用,相当于物理上的断开。
因此,RSTP的基本思想与STP是一致的,但RSTP对于网络临时失去连通性处理的时间更迅速;不同于STP协议,RSTP协议在某些特殊情况下,但端口处于阻塞状态时,可以直接进入数据转发状态,而生产树协议需要2个Forward Delay时延。此外在快速生成树协议中,定义了网络边缘端口,即直接与终端设备相连的端口,并且对于网络边缘端口,可以不需要时延,直接进入数据转发状态。同时在快速生成树协议中,在网桥旧的根端口已经进入阻塞状态后,新的根端口可以立即进入转发状态。最后在快速生成树协议中,即使是网络中非边缘的指定端口,仍然能够通过与相连接的网桥进行1次握手,迅速进入Forwarding状态。
3 实验设计及仿真分析
通过设计一种网络拓扑,采用生成树协议技术,选定根交换机,根端口,指定端口等,确定阻口,设置不同的VLAN对应不同的生成树实例,实现网络拓扑的自愈保护功能和流量的负载均衡。实验仿真主要实现以下功能:
(1)功能一:网络冗余备用,环网自愈功能的仿真实现;
(2)功能二:单个vlan运行单独的生成树实例,流量负载均衡的仿真实现。
3.1 实验环境及网络拓扑介绍
图3 仿真实验网络拓扑图
仿真实验拓扑设计如图3所示:Switch_A、Switch_B、Switch_C、Switch_D为Cisico二层交换机,型号为C2960X-24TS,这四台设备组成一个环形网络,其中,Switch_A、Switch_B为汇聚层核心设备,各自使用Fa0/24互联,Switch_C、Switch_D为接入层设备,彼此各自使用Fa0/24互联,同时Switch_C、Switch_D连接客户侧业务,分别使用各各自的Fa0/1、Fa0/2端口互联,图中各用二台PC表示客户侧业务。各个设备链路连接情况见表3所示,其中PC1-4分别配置IP地址为172.16.10.1-4。
表3 网络设备链路端口表
3.2 网络设备参数配置及仿真分析
3.2.1 生成树协议的运行及网络自愈功能的实现
在图1的网络拓扑中,四台C2960X-24TS交换机运行STP协议,在生成树协议中,根交换机、根端口,指定端口、阻塞端口的确定可有协议自行协商确定,如图4(a)所示,阻塞端口为Switch_D的Fa0/24端口(图a中橙色的端口)。在实验中,通过关闭Switch_C的Fa0/24端口模拟Switch_C-Switch_D的链路中断(图b中红色的端口)。
(a)
(b)
(c)
(d)图4 生成树协议中网络自愈功能的实现
在上述(a)(b)两种情况下,分别在CPT仿真软件中运行ICMP报文协议,从实时模式切换到仿真模式,图4(a)对应的仿真结果为图c,此时由于Switch_D的Fa0/24端口为阻塞端口,路由为Switch_C-Switch_A-Switch_B-Switch_D,当图4(b)中Switch_A-Switch_B的链路中断时,对应的仿真结果为图4(c),网络自愈后的路由为Switch_C-Switch_D。
在实验过程中,使用PC1一直PING PC3,针对图1的拓扑,考虑三种情况的对比:①不运用生成树时②运行生成协议时③运行快速生成协议(RPVST)时。由实验结果发现,不运行生成树协议时,环形网络中断时,主备路由不发生切换,整个网关拓扑虽然有冗余,但主备无法自动切换,网络无自愈功能;运行STP协议时,在主用路由中断后,仿真软件在中断4个ICMP报文后自动切换到备用路由;运用运行快速生成协议(RPVST)时,主用链路中断未发现链路中断,表明可快速进行主备切换。同时,备主切换观察现场相同,也进一步验证了本文的理论描述。
自此,从以上仿真实验结果分析可以看出,运行了快速生成树协议的网络,在存在网络拓扑冗余备份的情况,在发送网络故障时,可从主用路径自动切换到阻塞端口所在的备用路径,实现了拓扑冗余备份情况下网络的自愈功能。
3.2.2 生成树协议的运行及网络流量负载均衡的实现
在图1的网络拓扑中,采用cisico针对RSTP的改进RPVST,即每VALN一棵生成树,运行支持多VLAN的多生成树协议,在本文仿真实验中,配置VLAN1和VLAN2分别对应各自的生成树实例,同时让网络中不存在环路,实现网络流量的负载均衡,基本配置结果如下:
①利用VTP创建VLAN,配置链路状态Trunk
Switch_A(config) # interface range fastEthernet 0/23-24
Switch_A(config-if-range)# switchport trunk encapsulation
dot1q
Switch_A(config-if-range) switchport mode trunk
Switch_A(config) # spanning-tree mode rapid-pvst
Switch_A(config) # vtp domain csc
Switch_A(config) # vtp mode server
Switch_A(config) # vlan 1
Switch_B(config) # interface range fastEthernet 0/23-24
Switch_B(config-if-range)# switchport trunk encapsulation
dot1q
Switch_B(config-if-range) spanning-tree mode rapid-pvst Switch_B(config-if-range) switchport mode trunk
Switch_B(config) # vtp domain csc
Switch_B(config) # vlan 2
此外Switch_C、Switch_C交换机的配置通Switch_B相同。
②手动指定Vlan对应的生成树实例的根交换机位置
Switch_A(config) # spanning-tree vlan 2 priority 4096
Switch_B(config) # spanning-tree vlan 1 priority 4096
③查看vlan与生成树实例对应关系,实现网络流量的负载均衡
图6 Switch_C查询生成树实例
图7 Switch_D查询生成树实例
通过查看Switch_C对应VLAN1的生成树,如图6所示,此时生成树的根节点为Switch_A,查看Switch_C对应VLAN2的生成树,如图7所示,此时生成树的根节点为Switch_B。由此可见,对于不同的vlan数据,其选择转发的根节点不同,从而实现了基于不同vlan的流量负载均衡。
结语
综上所述,在网络中配置快速生成树协议,在思科路由器网络中部署快速生成树RPVST协议,分析了设备的配置具体过程以及交换机的配置命令和生成树信息,通过阻塞端口的选定及单个vlan和生成树实例的映射,表明生成树系列协议可以避免网络环路,能够实现冗余备份网络下的自愈功能及复杂网络拓扑下流量负载均衡,增加了网络的稳定性和健壮性,提升了网络的综合性能,设计的实验方案具有一定的理论指导及工程实践意义。