生成树协议 STP(Spanning Tree Protocol)

生成树协议 STP(Spanning Tree Protocol)

提高网络可靠性,在网络中使用冗余链路。冗余链路会给交换网络带来环路风险,导致广播风暴。生成树协议STP(Spanning Tree Protocol)可以再提高可靠性的同时又能避免环路带来的影响

环路引起的问题

  • 环路会引起广播风暴,网络中的主机会收到重复的数据帧

  • 环路会引起MAC地址表震荡

交换机是根据所接收到的数据帧的源地址和接收端口生成MAC地址表项的。
为什么会出现震荡,比如第一次由G0/1接收到的数据包,但是第二次是由G0/2接口接收到源MAC地址不变就会产生震荡,互相替换。

衍生出泛洪攻击

STP工作原理

STP通过阻塞端口来消除环路,并且能够实现链路备份的目的。

如果通过阻塞端口解决了环路,那备份就冗余链路就不起作用了,所以STP不仅可以解决环路,也可以使用冗余链路。

需要寻找阻塞端口,来实现既可以解决环路,也可以使用冗余链路

BPDU报文(bridge protocol data unit)

  • BPDU报文分为两种
  • 配置BPDU:平常使用
  • TCNBPDU:当拓扑发生变化时,发送的拓扑变化通知
  • TCNBPDU:topology change notification
6B6B482B2B2B2B2B2B
PIDPVIBPDU TypeFlagsRoot IDPort IDMessage AgeMax AgeHello TimeFwd Delay
桥IDSTP版本BPDU类型标记域指定桥ID指定端口IDBPDU消息年龄BPDU最大生存周期BPDU老化时间发送BPDU的周期

STP操作过程

  1. 每个广播域选择一个根桥
  2. 每个非根桥选择一个根端口和根桥相连
  3. 每个段选择一个指定端口
  4. 阻塞非指定端口

选举STP根桥

  1. 每一台交换机启动STP后,都认为自己是根桥。只有根桥才能发送BPDU报文,为选举出根桥以前的root ID都是自己的桥ID
  2. 交换机对比BPDU报文的的root ID,也相当于对比bridge ID
  3. 选举出根桥以后,根桥每两秒发送一次BPDU
  4. 每进过一个设备都会将BPDU中的桥ID替换成自己的桥ID,root ID不变,继续转发。用于cost选择不出根端口时,作为对比值,选举根端口
  5. 如果收到的BPDU报文中的桥ID优先级高,则交换机会修改自己的BPDU报文的根桥ID字段,宣告新的根桥。不会像OSPF一样选取出来就不会改变了。
  • 每个交换机都有个桥ID,桥ID是优先级加上四十八位的MAC组成的,优先级可以配置,取值范围1-65535,默认值32768。
  • 优先级相同,比对MAC地址,都是越小越优先
  • 生存时间默认30秒
  • 发送BPDU的时间默认10秒
  • 每个BPDU报文每经过一个交换机,Message Age都加1
  • 如果Message Age大于Max Age,非根桥会丢弃改配置BPDU

选举根端口

STA算法

链路速度开销
10Gbit/s2
1Gbit/s4
100Mbit/s19
10Mbit/s100

根端口选举(按照顺序)

  1. 到根桥的最低路径成本
  2. 最低的发送者网桥ID(BID Bridge ID)
  3. 最低的发送者端口ID(PID Port ID)
  • 根路径开销就是该端口到根所有路径的总和开销
ID说明默认值取值范围
BID优先级+48位MAC地址32768(4096的倍数)1-65535
PID端口优先级+端口号128(必须为16的倍数)0-248

根选举开销选举不出来,四方形的拓扑图就容易出现这种情况,转发BPDU时替换的桥ID的作用就体现出来了。

根选举开销和桥ID都选举不出来的时候,就考虑其中的PID,比如交换机两根线相连,f0/1端口=128.1 fa0/2端口=128.2,端口优先级默认128.

选举指定端口

  • 两个端口对比bridge id,就可以了

  • 根桥所有端口都是指定端口

  • 根端口的对端都是指定端口

  • 指定端口是发送BPDU报文,根端口是接受BPDU报文

  • 什么都没选上的接口就是阻塞端口

端口角色

  • 根桥(RP)
  • 指定根接口(DP)
  • 指定端口(AP)

端口状态转换

端口状态说明
Forwarding转发状态:既能转发流量也可以转发BPDU报文
Learning学习状态:可以学习mac地址,不能转发数据,等待15s
Listening侦听状态:可以接受和转发BPDU报文,不能转发用户流量,维持15s,确认端口角色
Blocking阻塞状态:只能接受BPDU报文,不能转发BPDU报文,也不能转发流量
Disbled禁用状态:什么都不干

STP拓扑变化 故障

直连链路故障

故障交换机会立刻检测到自身的故障切换到阻塞端口

  • 因为要进过listening和learning状态每个状态都有15秒定时器
  • 所以会在30秒后恢复到转发状态

非直连链路故障

  • 非直连链路故障后,预备接口转发状态大约需要50秒
  1. 一个BPDU超时20秒,相当于发送10个BPDU报文时间
  2. 没有回应,就改变阻塞端口状态,经过listening和learning状态30s,直到forwarding状态
  3. 故障交换机根端口如果还健在就向上发送TCNBPDU
  4. 上级交换机回复一个普通BPDU确认收到,继续在向上,直到根桥,在超时时立即发送报文和MAC老化时间同时进行
  5. 根收到以后发送只一个配置BPDU,在这个BPDU中会有一个TC位,TC拓扑变更
  6. 收到这个BPDU报文的交换机立刻将MAC地址老化时间从300s缩短到15s(华为设置直接0秒,反正都有30s的状态转换)
  7. 泛洪学习MAC地址

根桥故障

非根桥会稳定的收到来自根桥的BPDU报文,如果根桥故障不发,下游收不到,等到定时器,BPDU失效,非根交换机又会选举根桥,导致50秒的恢复时间,等待时间等于message+两倍的fwdDelay的收敛时间

STP的基本配置

默认开启的STP,但是只是MSTP,需要将模式改为stp

stp mode stp

配置交换机优先级

stp priority 4096

配置路径开销
有三种路径开销模式

  • IEEE 802.1D-1998
  • IEEE 802.1T (缺省值)
  • Legacy
//进入端口
int 端口
//改变开销
stp cost 2000

验证stp

display stp

本章总结

  • 根桥产生故障后,其他交换机被选举为根桥。那么原来的交换机根桥恢复正常以后,网络又会发生什么变化

会重新选举

  • 端口开销和根根路径开销的区别是什么?

端口开销:交换机端口开销

根路径开销:到根交换机的总开销

本文链接:https://my.lmcjl.com/post/5098.html

展开阅读全文

4 评论

留下您的评论.