STP生成树
概述:
STP(Spanning Tree Protocol)生成树协议将环形网络修剪成为一个无环的树型网络,避免报文在环形网络中的增生和无限循环。
一个集成网络难免会出现环路,环路会产生广播风暴,最终导致整个网络资源被耗尽,网络瘫痪不可用。同时,环路还会引起MAC地址表震荡导致MAC地址表项被破坏。
为了破除环路,产生了数据链路层协议STP,运行该协议的设备通过彼此交互信息发现网络中的环路,并有选择的对某个端口进行阻塞,最终将环形网络结构修剪成无环路的树形网络结构,从而防止报文在环形网络中不断发送,避免形成广播风暴,避免设备由于重复接收相同的报文造成处理能力下降。
相关概念:
根桥(Root Bridge):
相当于是树根。每个交换机运行STP,会产生桥ID,桥ID最小的为根桥。对于一个STP/RSTP网络,根桥有且只有一个,它是整个网络的逻辑中心,但不一定是物理中心。根据网络拓扑的变化,根桥可能改变。
BID(Bridge,ID桥ID):
优先级+MAC地址。计算公式为:BID = 桥优先级 + MAC地址。通过比较桥ID的大小,可以选出STP中的根桥。先比较优先级,若优先级相同,则比较MAC地址。桥ID值越小,优先级越高,越有可能成为根桥。
PID(Port ID,端口ID):
优先级+接口号。计算公式为:PID = 端口优先级 + 接口号。端口ID用于在STP中区分不同的端口,以便进行端口角色的选举和配置
BPDU(Bridge Protocol Data Unit,网桥协议数据单元):
BPDU是STP的协议报文,STP正常工作的根本。STP交换机之间会交互BPDU报文,这些报文携带着一些重要信息,如桥ID、端口ID、根路径开销等。通过这些信息,STP会计算出网络的生成树,并选举出根桥、根端口、指定端口等关键角色。
RP(Root Port,根端口):
非根桥交换机上连接根桥且到根桥开销最小的端口。根端口负责将流量和控制消息从下游交换机发送到根桥。在STP的生成树中,每个非根桥交换机都只有一个根端口。开销越小,越能成为根端口。
DP(Designated Port,指定端口):
是网络中每个网段中转发配置BPDU的端口。每个网段有且只有一个指定端口。负责从根桥接收数据并转发给所连接的网段。同时,它也负责向根桥发送BPDU报文。路径开销和端口ID的组合值最小的端口成为指定端口。
AP(Alternate Port,预备端口):
根接口RP的备份。当RP出现故障后,接替RP的工作。
BP(Backup Port,备份端口):
与AP类似,BP是DP的备份。
端口状态
端口 | 目的 | 说明 |
Disabled(禁止) | 处于关闭或未启用STP的状态 | 状态为Down |
Blocking(阻塞) | 不能转发数据,但可以接收STP的BPDU信息 | 阻塞端口 |
Listening(监听) | 若端口被选举为根端口或指定端口,它会转换到监听状态 | 过渡端口(15s) |
Learning(学习) | 端口开始学习MAC地址,同时继续收发BPDU信息,但依旧不转发用户数据 | 防止临时环路 |
Forwarding(转发) | 收发BPDU信息,学习MAC地址,并转发数据流量 | 根端口和指定端口会进入转发状态 |
BPDU报文格式
BPDU封装格式
BPDU被封装在以太网数据帧中,遵循IEEE 802.3标准。具体来说,BPDU的封装包括以下几个部分:
目的MAC地址:BPDU的目的MAC地址是组播地址01-80-C2-00-00-00,表示该帧是发送给网络中的所有STP交换机。
Length字段:指后续数据的字节长度,但不包括CRC(循环冗余校验)字节。
LLC头:逻辑链路控制(LLC)头部,其中目的服务访问点(DSAP)和源服务访问点(SSAP)的值通常为0x42,控制字段值为3。
BPDU报文头:随后是BPDU报文头,包含了STP协议的各种信息和参数。
BPDU报文内容
BPDU报文内容主要包括以下几个字段:
Protocol Identifier:协议标识符,值为0,占用2字节。
Protocol Version Identifier:协议版本标识符,STP为0,RSTP(Rapid Spanning Tree Protocol,快速生成树协议)为2,MSTP(Multiple Spanning Tree Protocol,多生成树协议)为3,占用1字节。
BPDU Type:BPDU类型,占用1字节。具体类型包括:
- 0x00:STP的配置BPDU。
- 0x02:RSTP BPDU或MSTP BPDU。
- 0x80:STP的TCN(Topology Change Notification,拓扑变化通知)BPDU。
Flags:网络拓扑变化标志,占用1字节。其中,最高位表示拓扑变化确认(TCA)标志,最低位表示拓扑变化(TC)标志。
Root Identifier:当前根桥的BID(Bridge Identifier,桥标识符),共占用8字节。前2个字节是网桥的优先级,后6个字节是网桥的MAC地址。
Root Path Cost:根路径开销,即从本端口到根桥的开销,占用4字节。
Bridge Identifier:发送者的BID,同样是前2字节是网桥优先级,后6字节是网桥MAC地址,共占用8字节。
Port Identifier:发送端口的PID(Port Identifier,端口标识符),占用2字节。
Message Age:标识BPDU的消息年龄,如果配置BPDU是根桥发出的,则Message Age为0。每经过一个桥,Message Age增加1,占用2字节。
Max Age:标识消息老化的年龄,即BPDU报文老化的时间,缺省值是20秒,可选范围是6-40秒,占用2字节。
Hello Time:发送两个相邻BPDU的时间间隔,缺省值是2秒,可配置的时间范围是1-10秒,占用2字节。
Forward Delay:控制Listening状态和Learning状态的持续时间,缺省值是15秒,可配置范围是4-30秒,占用2字节。
选举过程
选出根桥(Root Bridge)
STP开始时,网络中的每个桥(交换机)都会宣称自己是根桥,并广播自己的桥ID给网络中的其他桥。桥ID由桥优先级(默认为32768)和桥MAC地址组成。具有最低桥ID的桥会被选为根桥。
选出根端口(Root Port)
在每个非根桥上,STP会选择一个端口作为根端口,该端口是到达根桥的最短路径上的端口。STP会考虑路径成本(由端口速度和配置决定)和桥ID来确定哪个端口是最佳的根端口。
选出指定端口(Designated Port)
在生成树的每个网段(由两个桥之间的链路分隔开的部分)上,STP会选择一个端口作为指定端口。这个端口负责向该网段转发帧。选择指定端口的依据包括到达根桥的路径成本、发送者桥ID、发送者端口ID等。
4. 阻塞其他端口(Blocking Other Ports)
在选择了根端口和指定端口之后,STP会将非根桥上的其他端口置于阻塞状态(Blocking)。这些端口不参与帧的转发,但会监听网络中的STP消息,以便在需要时快速转换状态。
STP拓扑发生改变的原因
1、端口从forwarding状态过渡到disable或blocking状态。
2、非根桥如果从指定端口接收到TCN BPDU包,需要向根桥装发TCN BPDU包。
3、端口进入转发状态,并且本地已存在一个指端端口。
STP拓扑改变过程
检测拓扑变化:
- 当网络中的设备检测到拓扑变化时(如链路断开、设备故障等),会触发STP的重新计算过程。
- STP通过BPDU的交换来检测拓扑变化。BPDU分为两种:配置BPDU和TCN BPDU。
重新计算生成树:
- 在检测到拓扑变化后,STP会重新计算生成树拓扑,以确保网络的连通性和无环路。
- 这个过程包括重新选举根桥、根端口和指定端口,以及更新非指定端口的状态。
加速MAC地址表老化:
- 拓扑变化后,交换机中的MAC地址表可能包含过时的表项,这些表项会导致数据转发错误。
- STP通过发送TCN BPDU来加速MAC地址表的老化过程。根桥在收到TCN BPDU后,会在后续的配置BPDU中设置TC(Topology Change)标志位,通知下游设备将MAC地址表的老化时间从默认的300秒缩短为Forward Delay时间(默认为15秒)。
收敛过程:
- STP的收敛时间取决于多种因素,包括Max Age(BPDU的最大存活时间,默认为20秒)和Forward Delay(端口从监听状态到转发状态的延时,默认为15秒)。
- 在拓扑变化后,STP的收敛时间通常为Max Age加上两倍Forward Delay的时间,即大约50秒。
STP的基础配置命令
1、配置生成树工作模式
[huawei] stp mode { stp | rstp | mstp }
交换机支持STP、RSTP和MSTP三种生成树工作模式,默认工作在MSTP模式
2、配置根桥
[huawei] stp root primary
配置当前设备为根桥。缺省情况下,交换机不作为任何生成树的根桥。配置后该设备优先级数值自动为0,并且不能更改设备优先级。
3、备份根桥
[huawei] stp root secondary
配置当前设备为备份根桥。缺省情况下,交换机不作为任何生成树的根桥。配置后该设备优先级数值自动为4096,并且不能更改设备优先级。
4、配置交换机的STP优先级
[huawei] stp priority 32768
缺省情况下,交换机的优先级取值为32768
5、配置接口的路径开销
[huawei] stp pathcost-standard { dot1d-1998 | dot1t | legacy }
配置接口路径开销计算方法。缺省情况下,路径开销值的计算方法为IEEE 802.1t(dot1t)标准方法。同一网路内所有交换机的接口路径开销应使用相同的开销算法。
[huawei-GigbitEthernet0/0/1] stp cost 100
设置当前接口的路径开销值。使用华为计算方法时参数cost取值范围是1~200000。使用IEEE 802.1d标准方法时取值范围是1~65535。使用IEEE 802.1t标准方法时取值范围是1~200000000。
6、配置接口优先级
[huawei-intf] stp priority 128
配置接口的优先级。缺省情况下,交换机接口的优先级取值为128
7、启用STP/RSTP/MSTP
[huawei] stp enable
使能交换机的STP/RSTP/MSTP功能。缺省情况下,设备此功能处于启用状态
STP配置例子
[Huawei]display stp
[Huawei]dis int vlan 1
[Huawei]display stp brief