STP详解

二层环路存在的问题

1.广播风暴

根据交换机的转发原则,如果交换机从一个端口上收到的是一个广播帧,或者是一个目的MAC地址未知的单播帧,则会将这个帧向除源端口之外的所有其他端口转发。如果交换网络中有环路,则这个帧会被无限转发,此时便会形成广播风暴,网络中也会充斥着重复的数据帧

2.MAC地址漂移

交换机是根据所接收到的数据帧的源地址和接收端口生成MAC地址表项的


 

STP(生成树协议)

修改模式:

[Huawei]stp mode ?
  mstp  Multiple Spanning Tree Protocol (MSTP) mode
  rstp  Rapid Spanning Tree Protocol (RSTP) mode
  stp   Spanning Tree Protocol (STP) mode

基本概念

桥ID(Bridge ID,BID)


作用:唯一标识一台STP设备

构成:桥优先级+MAC地址

桥优先级的取值范围:0-65535;默认值为32768

注:网桥就是一台交换机;

比较规则:1.比较桥优先级,越小越优。2.比较MAC地址,越小越优。

桥优先级配置:

[Huawei]stp priority ?
  INTEGER<0-61440>  Bridge priority, in steps of 4096

根桥

STP的目的就是计算出一个无环的树(STP树),而根桥就是这棵树的树根

作用:生成树进行拓扑计算

选举规则:比较BID

注:对于一个STP网络,根桥在全网中只有一个,它是整个网络的逻辑中心,但不一定是物理中心。根桥会根据网络拓扑的变化而动态变化。

配置:

[Huawei]stp root primary ---配置当前设备为根桥。缺省情况下,交换机不作为任何生成树的根桥。配置后该设备优先级数值自动为0,并且不能更改设备优先级。
[Huawei]stp root secondary ---配置当前交换机为备份根桥。缺省情况下,交换机不作为任何生成树的备份根桥。配置后该设备优先级数值为4096,并且不能更改设备优先级。
 

cost(开销)

每一个STP的接口都有一个开销

作用:用于计算根路径开销,也就是到达根的开销

注:带宽越大,开销越小

配置:

[Huawei-GigabitEthernet0/0/1]stp cost ?
  INTEGER<1-200000000>  Port path cost

根路径开销(Root Path Cost)
 

 作用:计算网桥到达根桥的距离

计算方法:一台设备从某个接口到达根桥的RPC等于从根桥到该设备沿途所有入方向接口的Cost累加。
 

  接口ID(Port ID,PID)

 作用:标识每台交换机的接口

构成:接口优先级(0-240,默认240)+接口编号

接口优先级配置;

[Huawei-GigabitEthernet0/0/1]stp port priority ?
  INTEGER<0-240>  Port priority, in steps of 16

BPDU(Bridge Protocol Data Unit,网桥协议数据单元)

 BPDU是STP运行的基础,是灵魂

作用:携带交换机之间需要交换相关的信息和参数

类型:

1.配置BPDU:包含了桥ID、路径开销和端口ID等参数。STP协议通过在交换机之间传递配置BPDU来选举根交换机,以及确定每个交换机端口的角色和状态;在网络拓扑稳定以后,只有根桥主动发送配置BPDU,其他交换机在收到上游传来的配置BPDU后,才会发送自己的配置BPDU。

2.TCN BPDU:感知BPDU;当网络拓扑发生变化时,下游交换机向上游交换机发送;

报文格式:

端口存放BPDU的老化原则:

如果Message Age小于等于Max Age,则该非根桥设备继续转发配置BPDU报文
如果Message Age大于Max Age,则该配置BPDU报文将被老化

对于STP而言,最重要的工作就是在交换网络中计算出一个无环拓扑。在拓扑计算的过程中,一个非常重要的内容就是配置BPDU的比较。
配置BPDU的比较原则:

 比较消息队列{RID,RPC,BID,PID}
 

工作流程

起初,所有交换机都认为自己是根桥。

1.选举根桥
2.非根桥选举根端口

什么是根端口??

一个非根桥设备上会有多个端口与网络相连,为了保证从某台非根桥设备到根桥设备的工作路径是最优且唯一的,就必须从该非根桥设备的端口中确定出一个被称为“根端口”的端口,由根端口来作为该非根桥设备与根桥设备之间进行报文交互的端口。
 

 作用:保证了交换机与根桥之间工作路径的唯一性和最优性。
注意:一个非根桥设备上,最多只能有一个根端口。

3.每条链路选举一个指定端口

什么是指定端口?
网络中的每个链路与根桥之间的工作路径必须是唯一的且最优的。当一个链路有两条及以上的路径通往根桥时(该链路连接了不同的交换机,或者该链路连接了同一台交换机的不同端口),与该链路相连的交换机(可能不止一台)就必须确定出一个唯一的指定端口。


因此,每个链路(Link)选举一个指定端口,用于向这个链路发送BPDU。


注意:一般情况下,根桥上不存在任何根端口,只存在指定端口。
 

4.剩下一个接口被阻塞

什么是非指定端口(预备端口)?
在确定了根端口和指定端口之后,交换机上所有剩余的非根端口和非指定端口统称为预备端口。
阻塞非指定端口


STP会对这些非指定端口进行逻辑阻塞,即这些端口不能转发由终端计算机产生并发送的帧(用户数据帧)。


一旦非指定端口被逻辑阻塞后,STP树(无环路工作拓扑)就生成了。


注意:
非指定端口可以接收并处理BPDU。
根端口和指定端口既可以接收和发送BPDU,也可以转发用户数据帧。
 

 

STP的端口状态

Disabled:端口不处理BPDU报文,也不转发用户流量
Blocking:端口接收并处理BPDU,但是不转发BPDU,不转发用户流量;AP端口的最终状态
Listening:确定端口角色,将选举出根桥、根端口和指定端口;过渡状态
Learning:设备会根据收到的用户流量构建MAC地址表,但不转发用户流量;过渡状态
Forwarding:端口既转发用户流量也处理BPDU报文;RP和DP端口的最终状态
注:先确定端口角色,再进行端口状态的转变

拓扑变化

根桥故障


在稳定的STP网络,非根桥会定期收到来自根桥的BPDU报文。
如果根桥发生了故障,停止发送BPDU,下游交换机就无法收到来自根桥的BPDU报文。
如果下游交换机一直收不到BPDU报文,Max Age计时器(缺省: 20s)就会超时,从而导致已经收到的BPDU报文失效,此时,非根桥会互相发送配置BPDU,重新选举新的根桥。


端口状态:
SW3的预备端口,20s后会从Blocking状态进入到Listening状态,再进入Learning状态,最终进入到Forwarding状态,进行用户流量的转发。


收敛时间:
根桥故障会导致50s左右的恢复时间,等于Max Age加上2倍的Forward Delay收敛时间。
 

 直连链路故障


当两台交换机间用两条链路互连时,其中一条是主用链路,另一条为备用链路。
当网络稳定时,交换机SWB检测到根端口的链路发生故障,则其备用端口会进入用户流量转发状态。
端口状态:
备用端口会从Blocking状态,迁移到Listening-Learning-Forwarding状态。
收敛时间:
直连链路故障,备用端口会经过30s后恢复转发状态。

非直连故障


在稳定的STP网络,非根桥会定期收到来自根桥的BPDU报文。
若SW1与SW2之间的链路发生了某种故障(非物理故障),因此SW2一直收不到来自根桥SW1的BPDU报文,Max Age计时器(缺省: 20 s)就会超时,从而导致已经收到的BPDU报文失效。
此时,非根桥SW2会认为根桥失效,并且认为自己是根桥,从而发送自己的配置BPDU给SW3,通知SW3自己是新的根桥。
在此期间,SW3的预备端口一直收不到包含根桥ID的BPDU,Max Age计时器超时后,端口进入到Listening状态,开始向SW2“转发”从上游发来的包含根桥ID的BPDU。
因此,Max Age定时器超时后,SW2和SW3几乎同时收到对方发来的BPDU,再进行STP重新计算,SW2发现SW3发来的BPDU更优,就放弃宣称自己是根桥并重新确定端口角色。
端口状态:
SW3预备端口20s后会从Blocking状态进入到Listening状态,再进入Learning状态,最终进入到Forwarding状态,进行用户流量的转发。
收敛时间:
非直连故障会导致50s左右的恢复时间,等于Max Age加上2倍的Forward Delay收敛时间。
 

 拓扑变化更新MAC地址表

拓扑变更以及MAC地址表项更新的具体过程如下:
SW3感知到网络拓扑发生变化后,会不间断地向SWB发送TCN BPDU报文。
SW2收到SW3发来的TCN BPDU报文后,会把配置BPDU报文中的Flags的TCA位设置1,然后发送给SW3,告知SW3停止发送TCN BPDU报文。
SW2向根桥转发TCN BPDU报文。
SW1把配置BPDU报文中的Flags的TC位设置为1后发送,通知下游设备把MAC地址表项的老化时间由默认的300 s修改为Forward Delay的时间(默认为15 s)。
最多等待15 s之后,SW2中的错误MAC地址表项会被自动清除。此后,SW2就能重新开始MAC表项的学习及转发操作。
 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

云网大周

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值