目录
指定桥(Designated Bridge)与指定端口(Designated Port)
STP的由来
为了解决冗余链路引起的问题,IEEE通过了IEEE 802.1d协议,即生成树协议(Spanning Tree Protocol,STP)。IEEE 802.1d协议通过在交换机上运行一套复杂的算法,使冗余端口置于“阻塞状态”,使得网络中的计算机在通信时只有一条链路生效,而当这个链路出现故障时,IEEE 802.1d协议将会重新计算出网络的最优链路,将处于“阻塞状态”的端口重新打开,从而确保网络连接稳定可靠。
STP的术语
桥(Bridge)
因为性能方面的限制等因素,早期的交换机一般只有两个转发端口,所以那时的交换机常常被称为“网桥”,或简称“桥”。在IEEE的术语中,“桥”这个术语一直沿用至今,但并不只是指只有两个转发端口的交换机了,而是泛指具有任意多个端口的交换机。
桥的MAC地址(Bridge MAC Address)
一个桥有多个转发端口,每个端口有一个MAC地址。通常,交换机会把端口编号最小的那个端口的MAC地址作为整个桥的MAC地址。
桥ID(Bridge Identifier,BID)
一个桥(交换机)的桥ID由两部分组成,前面2字节是这个桥的桥优先级,后面6字节是这个桥的MAC地址。桥优先级的值可以手动设置,其默认值为0x8000(相当于十进制的32768)。
IEEE 802.1d标准中规定BID是由桥优先级(Bridge Priority)与桥MAC地址构成。BID桥优先级占据高16位,其余的低48位是MAC地址。
端口ID(Port Identifier,PID)
第一种:端口ID由两个字节组成,第一个字节是该端口的端口优先级,后一个字节是端口编号。
第二种:端口ID由16个比特组成,前4个比特是该端口的端口优先级,后12比特是该端口的端口编号。
BPDU报文
STP采用的协议报文是BPDU(Bridge Protocol Data Unit),也称为配置消息。STP通过在设备间传递BPDU报文来确定网络的拓扑结构,并完成生成树的计算。BPDU报文被封装在以太网数据帧中,目的MAC是组播MAC:01-80-C2-00-00-00。
STP的端口角色和端口状态
端口角色:根端口和指定端口
根端口(Root Port)
根端口就是去往根桥路径开销最小的端口,根端口负责向根桥方向转发数据,这个端口的选择标准是依据根路径开销判定。很显然,在一个运行STP协议的设备上根端口有且只有一个,根桥上没有根端口。
指定桥(Designated Bridge)与指定端口(Designated Port)
分类 | 指定桥 | 指定端口 |
对于一台设备而言 | 与本机直接相连并且负责向本机转发配置消息的设备 | 指定桥向本机转发配置消息的端口 |
对于一个局域网而言 | 负责向本网段转发配置消息的设备 | 指定桥向本网段转发配置消息的端口 |
端口状态
运行STP协议的设备的端口存在5种端口状态,如表1所示。
端口状态 | 说明 |
Disabled | 端口状态为Down,不处理BPDU报文,也不转发用户流量。 |
Listening | 过渡状态,开始生成树计算,端口可以接收和发送BPDU,但不转发用户流量。 |
Learning | 过渡状态,建立无环的MAC地址转发表,不转发用户流量。 |
Forwarding | 端口可以接收和发送BPDU,也转发用户流量。只有根端口或指定端口才能进入Forwarding状态。 |
Blocking | 端口仅仅接收并处理BPDU,不转发用户流量。 |
- 端口Up或使能了STP,会从Disabled状态进入到Blocking状态。
- 端口被选举为根端口或指定端口,会进入Listening状态。
- 端口的Forward Delay定时器超时,会进入Learning/Forwarding状态。
- 端口不再是根端口或指定端口时,会进入Blocking状态。
STP的定时器
Hello Time
运行STP协议的设备发送配置BPDU的时间间隔。设备每隔Hello Time时间会向周围的设备发送BPDU报文,以确认链路是否存在故障。
Forward Delay
设备状态迁移的延迟时间。链路故障会引发网络重新进行生成树的计算,生成树的结构将发生相应的变化。不过重新计算得到的新配置消息无法立刻传遍整个网络,如果新选出的根端口和指定端口立刻就开始数据转发的话,可能会造成临时环路。为此,STP采用了一种状态迁移机制,新选出的根端口和指定端口要经过2倍的Forward Delay延时后才能进入转发状态,这个延时保证了新的配置消息传遍整个网络,从而防止了临时环路的产生。
Forward Delay Timer
默认是15秒
树的基本理论
在一个具有物理环路的交换网络中,交换机通过运行STP,自动生成一个没有环路的逻辑拓扑。该无环逻辑拓扑也称为STP树(STP Tree),树节点为某些特定的交换机,树枝为某些特定的链路。一棵STP树包含了唯一的一个根节点,任何一个节点到根节点的工作路径不但是唯一的,而且是最优的。当网络拓扑发生变化时,STP树也会自动地发生相应的改变。
简而言之,有环的物理拓扑提高了网络连接的可靠性,而无环的逻辑拓扑避免了广播风暴、MAC地址表翻摆、多帧复制,这就是STP的精髓。
生成树的生成过程
①选举根桥(Root Bridge),作为整个网络的根。
②确定根端口(Root port,RP),确定非根交换机与根交换机链接最优的端口。
③确定指定端口(Designated Port,DP),确定每条链路与根桥连接最优的端口。
④阻塞备用端口(Alternate Port,AP),形成一个无环网络。
实验操作
组网需求
在一个复杂的网络中,网络规划者由于冗余备份的需要,一般都倾向于在设备之间部署多条物理链路,其中一条作主用链路,其他链路作备份。这样就难免会形成环形网络,若网络中存在环路,可能会引起广播风暴和MAC表项被破坏。
当前网络中存在环路,SwitchA、SwitchB、SwitchC和SwitchD都运行STP,通过彼此交互信息发现网络中的环路,并有选择的对某个端口进行阻塞,最终将环形网络结构修剪成无环路的树形网络结构,从而防止报文在环形网络中不断循环,避免设备由于重复接收相同的报文造成处理能力下降。
配置文件
SwitchA的配置文件
#
sysname SwitchA
stp mode stp
stp instance 0 root primary
stp pathcost-standard legacy
#
return
SwitchB的配置文件
sysname SwitchB
#
stp mode stp
stp bpdu-protection
stp pathcost-standard legacy
#
interface GigabitEthernet0/0/2
stp edged-port enable
return
SwitchC的配置文件
sysname SwitchC
#
stp mode stp
stp pathcost-standard legacy
stp bpdu-protection
#
interface GigabitEthernet0/0/1
stp instance 0 cost 20000
#
interface GigabitEthernet0/0/2
stp edged-port enable
#
return
SwitchD的配置文件
sysname SwitchD
#
stp mode stp
stp instance 0 root secondary
stp pathcost-standard legacy
#
return