1、什么是STP
以太网交换网络中为了进行链路备份,提高网络可靠性,通常会使用冗余链路。但是使用冗余链路会在交换网络上产生环路,引发广播风暴以及MAC地址表不稳定等故障现象,从而导致用户通信质量较差,甚至通信中断。为解决交换网络中的环路问题,提出了生成树协议STP(Spanning Tree Protocol)。
____引自华为路由交换产品文档。
2、STP基础
stp基础:在stp中,值越小越优先)
1.一个根桥
:整张网络的逻辑中心(非物理中心),通过向外发送配置BPDU报文来通知网络拓扑的变化
2.两种度量
:stp的计算有两大度量:ID和路径开销
其中ID又分为BID(bridge ID)和PID(port ID)
BID由16位桥优先级+48位桥Mac组成
PID由4位端口优先级+12位端口号组成
根路径开销(Root Path Cost):在STP网络中,某端口到根桥累计的路径开销就是所经过的各个桥上的各端口的路径开销累加而成
3.选举三要素
①根桥(root bridge):根桥就是网桥ID最小的桥,通过交互配置BPDU协议报文选出最小的BID
②根端口(root port):所谓根端口就是去往根桥路径开销最小的端口,根端口负责向根桥方向转发数据。很显然,在一个运行STP协议的设备上根端口有且只有一个,根桥上没有根端口。
③指定端口:与本设备相连并且负责向本设备转发配置消息的指定桥设备端口。
一旦根桥、根端口、指定端口选举成功,则整个树形拓扑建立完毕。在拓扑稳定后,只有根端口和指定端口转发流量,其他的非根非指定端口都处于阻塞(Blocking)状态,它们只接收STP协议报文而不转发用户流量。
总结起来就三点:
① 整个广播域选择根桥
② 非根交换机选择根端口
③ 每段链路上有且仅有一个指定端口
4.四(五)种选举比较原则
①根桥ID:每个stp网络中有且仅有一个根桥
②开销:发送配置BPDU的端口到根桥的距离
③发送设备BID:发送配置BPDU的设备的BID
④发送端口PID:发送配置BPDU的端口的PID
⑤接收端口PID:接收配置BPDU的接口的PID
按照顺序依次进行比较,一般情况下比较到原则④就会选举出来。
5.五种端口状态
端口状态 |
目的 |
说明 |
Forwarding |
端口既转发用户流量也处理BPDU报文。 |
只有根端口或指定端口才能进入Forwarding状态态。 |
Learning |
设备会根据收到的用户流量构建MAC地址表,但不转发用户流量。 |
过渡状态,增加Learning状态防止临时环路。 |
Listening |
确定端口角色,将选举出根桥、根端口和指定端口。 |
过渡状态。 |
Blocking |
端口仅仅接收并处理BPDU,不转发用户流量。 |
阻塞端口的最终状态。 |
Disabled |
端口不仅不处理BPDU报文,也不转发用户流量。 |
端口状态为Down。 |
3、STP重要参数
对于STP,影响端口状态和端口收敛有以下3个参数。
1.Hello Time
运行STP协议的设备发送配置消息BPDU的时间间隔,用于设备检测链路是否存在故障。设备每隔Hello Time时间会向周围的设备发送hello报文,以确认链路是否存在故障。
当网络拓扑稳定之后,该计时器的修改只有在根桥修改后才有效。新的根桥会在发出的BPDU报文中填充适当的字段以向其他非根桥传递该计时器修改的信息。但当拓扑变化之后,TCN BPDU的发送不受这个计时器的管理。
2.Forward Delay
设备状态迁移的延迟时间。链路故障会引发网络重新进行生成树的计算,生成树的结构将发生相应的变化。不过重新计算得到的新配置消息无法立刻传遍整个网络,如果新选出的根端口和指定端口立刻就开始数据转发的话,可能会造成临时环路。为此,STP采用了一种状态迁移机制,新选出的根端口和指定端口要经过2倍的Forward Delay延时后才能进入转发状态,这个延时保证了新的配置消息传遍整个网络,从而防止了临时环路的产生。
说明:
Forward Delay Timer指一个端口处于Listening和Learning状态的各自持续时间,默认是15秒。即Listening状态持续15秒,随后Learning状态再持续15秒。这两个状态下的端口会处于Blocking状态,这正是STP用于避免临时环路的关键。
3.Max Age
端口的BPDU报文老化时间,可在根桥上通过命令人为改动老化时间。
Max Age通过配置BPDU报文的传输,可保证Max Age在整网中一致。运行STP协议的网络中非根桥设备收到配置BPDU报文后,报文中的Message Age和Max Age会进行比较:
如果Message Age小于等于Max Age,则该非根桥设备继续转发配置BPDU报文。
如果Message Age大于Max Age,则该配置BPDU报文将被老化。该非根桥设备直接丢弃该配置BPDU,可认为网络直径过大,导致根桥连接失败。
说明:
如果配置BPDU是根桥发出的,则Message Age为0。否则,Message Age是从根桥发送到当前桥接收到BPDU的总时间,包括传输延时等。实际实现中,配置BPDU报文经过一个桥,Message Age增加1。
STP时间参数如下表:
参数 |
缺省值 |
取值范围 |
---|---|---|
Hello Time |
200 |
100~1000 |
Max Age |
2000 |
600~4000 |
Forward Delay |
1500 |
400~3000 |
STP基本知识几乎就是这些了!下面通过实际拓扑来看看STP的选举。
4、STP拓扑
STP三角形组网
1.选举根桥:
根据SW1、SW2、SW3的MAC地址(查看盒式交换机物理地址命令:
dis bridge
mac-address
)可以选举出SW2为根桥。MAC地址比较顺序是从左到右,因为MAC地址是16进制的并且由数字0-9以及字母a-f组成,所以在比较时需要将16进制转换成10进制。但是一般情况下0-9、a-f依次增大,比较时可以按照这个规律快速进行比较。
2.非根交换机上选举根端口:
在三角形组网中选举根端口主要是开销,因为在根桥选举完成的情况下,根据非根交换机的开销就可以选举出根端口。
3.选举指定端口:
由于根端口必须在非根交换机上,所以根桥的两个接口一般为指定端口;非根交换机的指定端口只能选举出一个,另外一个则为阻塞端口。选举的关键参数一般为BID。一条链路上只允许有一个指定端口。交换机选举完成后网络重新收敛,之后按照选举后的网络拓扑进行数据转发。
查看端口角色:
SW1:
SW2:
SW3:
STP口字型组网
1.选举根桥:
根据SW6、SW7、SW8、SW9的MAC地址(查看盒式交换机物理地址命令:
dis bridge
mac-address
)可以选举出SW5为根桥。MAC地址比较顺序是从左到右,因为MAC地址是16进制的并且由数字0-9以及字母a-f组成,所以在比较时需要将16进制转换成10进制。但是一般情况下0-9、a-f依次增大,比较时可以按照这个规律快速进行比较。
2.非根交换机上选举根端口:
在口字形组网中选举根端口主要是开销,因为在根桥选举完成的情况
下,根据非根交换机的开销就可以选举出根端口。
3.选举指定端口:
由于根端口必须在非根交换机上,所以根桥的两个接口一般为指定端口;非根交
换机的指定端口只能选举出一个,另外一个则为阻塞端口。选举的关键参数一般为BID。
一条链路
上只允许有一个指定端口
。交换机选举完成后网络重新收敛,之后按照选举后的网络拓扑进行数据
转发。
5、总结
STP相对来说是二层用的比较多的防环协议,所以在知识点上还需要更深入的了解,比如接口优先级、每个选举完成后的角色端口的BPDU流量都需要了解。但是此篇文章是将STP基础,细致的东西可以在熟练后深究!
下一期RSTP基础,继续研究STP的缺点和RSTP的优点。