摘 要:主要介绍了生成树协议的起源、产生背景、思想、发展历程、工作原理及运行过程,通过具体的实验验证了生成树协议在交换网络中所发挥的巨大作用。通过对比观察生成树协议首次运行和网络拓扑发生变化后各交换机活动端口的工作状态,详细展现了生成树协议原理工作的全过程。
关键词:生成树协议;BPDU协议单元;端口;优先级
1、生成树协议(spanning-tree)的起源
生成树协议spanning-tree最初是由sun公司的Radia Perlman博士开发,其灵感来自于一首名叫《Algorhyme》的诗歌,而这首诗歌是根据Joyce Kilmer 的名作《Trees》而改编。
2、生成树协议的背景
随着以太网的广泛应用,局域网的结构也日趋复杂。为了避免交换网络中的单点故障引起网络中断,人们引入了冗余技术。然而新的问题又产生了,冗余链路在带来稳定的同时又造成了网络中的环路。而环路问题会引起广播风暴、多帧复制、及MAC地址表的不稳定等不良结果。应运而生的生成树协议则在这个问题上给出了解决的方法,它可以通过阻断冗余链路来消除桥接网络中可能存在的路径回环,同时当活动路径发生故障时可以激活冗余备份链路恢复网络连通性。
3、 生成树协议的工作原理
3.1 生成树协议的思想及历史
生成树协议(Spanning-Tree Protocol,STP IEEE802.1d标准)的主要思想就是当网络中存在备份链路时,只允许主链路激活,如果主链路因故障而被断开后,备用链路才会被打开。
其发展历程包括三个阶段:一代生成树协议:STP/RSTP;第二代生成树协议:PVST/PVST+;第三代生成树协议:MISTP/MSTP。生成树协议的主要作用可以概括为:避免回路,冗余备份。
3.2 生成树协议的原理
生成树协议使用BPDU来传送设备的有关信息。网络中所有交换机每隔一定的时间间隔就发送和接收一次BPDU数据帧,并且用它来检测生成树拓扑的状态,通过生成树算法得到最优拓扑结构。
3.3 网桥协议数据单元(BPDU)
STP依靠网桥相互交换各自的BPDU获取网络拓扑结构信息,从而组建生成树。BPDU主要包括的重要信息如下:
1)根桥ID(Root ID),由根桥的优先级和根桥的MAC构成。网桥和交换机的优先级可以手工配置,缺省值通常为32768。
2)从发送网桥到根桥的最短路径开销(RootPath Cost),为发送网桥到根桥的最短路径上所有链路开销的和。链路开销是与交换机端口相连的链路速率相关的参数,可以手工配置。
3)发送网桥的ID(Transmitting Bridge ID),由该网桥的优先级和该网桥的MAC组成。
4)发送端口的ID(Transmitting Port ID),由端口优先级和端口索引值组成。
5)配置消息的生存期Message Age,接收到配置消息的端口如果是根端口,则交换机将配置消息中携带的Message Age按照一定原则递增,并启动定时器为这条配置消息计时。
6)配置消息的最大生存期Max Age,Max Age用来判断配置消息是否过时。
7)配置消息发送的周期Hello Time,该参数决定根交换机向周围的交换机发送自己的配置消息或Hello报文的时间间隔。
8)端口状态迁移的延时Forward Delay,该参数用于交换机状态迁移机制。
3.4 生成树协议中的主要角色
1)根交换机(Root Switch):每广播域选出一个根交换机-根桥;
2)指定端口(Designated Port) :从每个网段到达根交换机的具有最佳路径的端口,处于转发状态(Forwarding),由根桥的最优端口充当;
3)备用端口(Backup port):DP的备份端口,由根桥的次优端口充当;
4)根口(Root Port):从每个非根交换机到达根交换机的具有最佳路径的端口,处于转发状态(Forwarding)。由非根交换机的最优端口充当;
5)替换端口(Alternate Port):根口的替换口。由从交换机的次优端口充当;
6)非指定端口(Non-designated Port):阻塞其它的冗余端口,处于阻塞状态(Blocking)。
3.5 生成树协议作用下端口的状态
图 1
图1描述了当生成树协议作用后,交换网络中各个交换机活动端口的端口类型。
3.6 生成树协议的运行过程
1)初始状态
所有当前网络下的交换机在初始状态下都会认为自己是根桥,因此各个交换机以自己各个活动的端口状态生成以自己为根的配置消息,此时配置消息中的根路径开销为0,指定交换机ID为自身交换机ID,指定端口为本端口。BPDU按照HelloTime指定的时间间隔来发送。
2)选出当前交换网络中的最优配置信息
交换网络中的各个交换机收到各自发出的配置信息后,按如下方法进行比较,并选出最优配置消息,即优先级最高的配置消息。
(1)对配置消息的处理
当端口收到比自身的配置消息优先级低的配置消息时,交换机会将接收到的配置消息丢弃,对该端口的配置消息不作任何处理。当端口收到比本端口配置消息优先级高的配置消息时,交换机就用接收到的配置消息中的内容替换该端口的配置消息中的内容。
(2)配置消息的优先级比较原则
其中RootID指根桥ID,RootPathCost指根路径开销,TransmittingBridgeID指交换机或网桥ID,TransmittingPortID指端口ID。
假定有两条配置消息C1和C2,如果C1的RootID小于C2的RootID,则C1优于C2;如果C1和C2的RootID相同,但C1的RootPathCost小于C2,则C1优于C2;如果C1和C2的RootID和RootPathCost相同,但C1的TransmittingBridgeID小于C2,则C1优于C2;如果C1和C2的RootID、RootPathCost和TransmittingBridgeID相同,但C1的TransmittingPortID小于C2,则C1优于C2。
3)选出根桥,确定根端口,阻塞冗余链路,更新指定端口的配置消息
4)所有配置消息稳定之后。
生成树协议在运行一段时间之后,一般在30秒左右,所有端口的状态都趋于稳定,要么处于转发状态,要么处于阻塞状态。此时网络中的链路状态基本确定,直至出现网络结构变化,生成树协议将再次生成新的链路状态直至稳定。
4、生成树协议的实验设计
4.1实验名称
生成树协议原理的实现
4.2 实验目的
搭建现实的交换网络环境,通过配置交换机上的生成树协议,实现冗余配置和消除环路,并通过观察各端口的状态了解STP的工作原理和运行过程。
4.3 实验拓扑结构图
图2
4.4 实验设备
锐捷RG-S2126G-24二层交换机三台,计算机3台,网线若干。
4.5 实
验步骤及参考配置
1)首先在各交换机上配置端口模式为全双工模式,并修改相应的端口速率。
2)开启交换机上的生成树协议,设置各交换机的优先级(默认为32768)这里我们以SwitchA为根桥。根据优先级比较原则,可设置SwitchA的交换机优先级小于32768即可。
3)按网络拓扑结构图连线,待网络状态稳定后(一般为30秒左右),观察各活动端口的状态。
参考配置(以SwitchA为例):
SwitchA(config)#int f0/1 //设置以太网接口f0/1
SwitchA(config-if)#duplex full //设置全双工
SwitchA(config-if)#speed 100 //设置速率为100
SwitchA(config-if)#exit //退出端口配置模式
SwitchA(config)#int f0/2 //设置以太网接口f0/2
SwitchA(config-if)#duplex full //设置全双工
SwitchA(config-if)#speed 10 //设置速率为10
SwitchA(config-if)#exit //退出端口配置模式
SwitchA(config-if)#exit //退出端口配置模式
SwitchA(config)#spanning-tree //启用交换机生成树协议
SwitchA(config)#spanning-tree mode stp //指定生成树协议模式802.1D
SwitchA (config)#spanning-tree priority 4096 //设置交换机优先级为4096
在SwitchB和SwitchC上进行类似配置后,可根据拓扑图进行连线,待稳定后用如下命令进行测试:
SwitchA#show spanning-tree interface interface-id
//显示交换机某端口的生成树状态
通过观察各端口的生成树状态,我们可以很清晰的看到生成树协议的运行过程。当然也可以借助协议分析软件进行抓包,可以对协议内部信息分析的更加透彻。待完成上述操作,可断掉原本连接在SwitchA上F0/1口上的网线,待一段时间之后,再次观察各端口的生成树协议状态,此时生成树协议将重新计算,原来处于阻塞状态的端口会发生状态迁移。
5、总结
本文讨论了生成树协议(STP)的基本工作原理和运行过程,在此基础上设计了相关的网络实验。希望通过从这些实践中论证更加切实可行的方法能够帮助我们构建更安全、更可靠、更高效的交换网络。
参考文献:
. 北京:电子工业出版社,2008