一、专业术语:
单点故障
冗余
STP(Spanning TreeProtocol,STP-在交换机上运行,用来解决交换网络中环路问题的数据链路层协议
BPDU(Bridge Protocol Data Unit)-网桥协议数据单元
Bridge ID-桥ID
Bridge Priority-桥优先级
Root Bridge-根桥
Cost-开销
Root Path Cost-根路径开销
Port ID-接口ID
配置BPDU
TCN BPDU 拓扑变更提示
TCA 拓扑变更确认
TC 拓扑变更
Message age 消息寿命
Max Age 最大寿命(老化时间)
Hello time
Forward Delay 转发延迟
Alternate-替代端口
Backup-备份端口
Discarding-丢弃
Edge Port-边缘端口
P/A-提议协定
想要配套真题和笔记的朋友们点赞+关注,评论区留下邮箱发给你!
二、STP出现的背景
生成树(SpanningTree Protocol,STP)是一种在交换机上运行,用来解决交换网络中环路问题的数据链路层协议。
单点故障
PC1和PC2通过LSW1相互通信,如果LSW1出现了故障,那么PC1和PC2将不能相互通信,这种现象我们称之为单点故障。为了解决这个问题,我们提出了冗余的拓扑结构。
冗余
PC1和PC2相互通信可以通过LSW1也可以通过LSW2,比如PC1和PC2相互通信通过LSW1,如果LSW1出了问题,那么PC1和PC2通信可以通过LSW2相互通信
冗余带来新的问题
HUB1发送给LSW1的数据帧:形成了一个顺时钟的环路
HUB1发送给LSW2的数据帧:形成一个逆时钟的环路
总结:1.广播风暴2.多帧复制3.MAC地址表震荡
三、 STP的基本概念及工作原理
1.基本概念
-桥ID(Bridge ID,BID)IEEE 802.1D标准中规定BID由16位的桥优先级(Bridge Priority)与桥MAC地址构成
-根桥(Root Bridge)是一个STP交换网络中的“树根”在STP网络中,桥ID最小的设备会被选举为根桥
-开销(cost)每一个激活了STP的接口都维护着一个Cost值,接口的Cost主要用于计算根路径开销,也就是到达根的开销
-根路径开销(Root Path Cost)交换机某个接口到根桥的“成本”,也即RPC
-接口ID(PortID,PID)接口ID由两部分构成的,高4 bit是接口优先级,低12bit是接口编号,激活STP的接口会维护一个缺省的接口优先级,在华为交换机上,该值为128
-BPDU(Bridge Protocol Data Unit,网桥协议数据单元)STP的协议报文,两种类型:1.配置BPDU(Configuration BPDU)2.TCN BPDU(TopologyChange Notification BPDU)
注意:配置BPDU是STP进行拓扑计算的关键;TCN BPDU只在网络拓扑发生变更时才会被触发
配置BPDU的报文格式:
按照顺序选择最优的配置BPDU:最小的根桥ID->最小的RPC-> 最小的网桥ID ->最小的接口ID
2.STP计算过程(四步走)
1)整个交换网络中选举一个交换机担当根桥,其他的交换机均为非根桥。
2)每个非根桥交换机选举一个根端口。
3)每个物理网段选举一个指定端口。
4)阻塞非根桥上的非根端口和非指定端口。
第一步:在交换网络中选举一个根桥
原则:比较桥优先级:越小越优;默认为32768
优先级相同,比较MAC地址,越小越优
注意:在一个连续的STP交换网络中只会存在一个根桥;根桥的角色是可抢占的。
第二步:选择根端口
原则:非根桥设备的端口中确定出一个被称为“根端口”的端口---1.比较根路径开销(小) 2.比较对端桥ID(小) 3.比较对端端口ID(小)
注意:每一台非根桥交换机都会在自己的接口中选举出一个接口,非根桥交换机上有且只会有一个根接口
第三步:选择指定端口
原则:在每条链路上选举一个指定端口(DP)---1.所在网桥到根的路径开销最小(根交换机的接口都为DP,因为开销为0) 2.本端的网桥ID最小 3.本端端口ID最小
注意:一般情况下,根桥上不存在任何根端口,只存在指定端口。
第四步:阻塞端口
原则:在确定了根端口和指定端口之后,交换机上所有剩余的非根端口和非指定端口统称为预备端口
注意: 非指定端口可以接收并处理BPDU;根端口和指定端口既可以接收和发送BPDU,也可以转发用户数据帧
3.STP的端口状态
端口状态 | 说明 |
Disabled | 端口状态为Down,不处理BPDU报文,也不转发用户流量。 |
Blocking | 端口仅仅接收并处理BPDU,不转发用户流量。 |
Listening | 过渡状态,开始生成树计算,端口可以接收和发送BPDU,但不转发用户流量。 |
Learning | 过渡状态,建立无环的MAC地址转发表,不转发用户流量。 |
Forwarding | 端口可以接收和发送BPDU,也转发用户流量。只有根端口或指定端口才能进入Forwarding状态。 |
端口状态迁移
4.STP的收敛时间
1)根桥故障:在稳定的STP网络,非根桥会定期收到来自根桥的BPDU报文。如果根桥发生了故障,停止发送BPDU,下游交换机就无法收到来自根桥的BPDU报文。如果下游交换机一直收不到BPDU报文,Max Age计时器(缺省: 20s)就会超时,从而导致已经收到的BPDU报文失效,此时,非根桥会互相发送配置BPDU,重新选举新的根桥。
端口状态:SW3的预备端口,20s后会从Blocking状态进入到Listening状态,再进入Learning状态,最终进入到Forwarding状态,进行用户流量的转发。
收敛时间:根桥故障会导致50s左右的恢复时间,等于MaxAge加上2倍的Forward Delay收敛时间。
2)直连链路故障:当两台交换机间用两条链路互连时,其中一条是主用链路,另一条为备用链路。当网络稳定时,交换机SW2检测到根端口的链路发生故障,则其备用端口会进入用户流量转发状态
端口状态:备用端口会从Blocking状态,迁移到Listening-Learning-Forwarding状态。
收敛时间:直连链路故障,备用端口会经过30s后恢复转发状态。
3)非直连链路故障:在稳定的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左右的恢复时间,等于MaxAge加上2倍的Forward Delay收敛时间。
想要配套真题和笔记的朋友们点赞+关注,评论区留下邮箱发给你!
四、RSTP对STP的改进
1.STP的不足 :
1)STP没有细致区分端口状态和端口角色,不利于初学者学习及部署。
2)网络协议的优劣往往取决于协议是否对各种情况加以细致区分。从用户角度来讲,Listening、Learning和Blocking状态并没有区别,都同样不转发用户流量。从使用和配置角度来讲,端口之间最本质的区别并不在于端口状态,而是在于端口扮演的角色。根端口和指定端口可以都处于Listening状态,也可能都处于Forwarding状态。
3)STP算法是被动的算法,依赖定时器等待的方式判断拓扑变化,收敛速度慢。
4)STP算法要求在稳定的拓扑中,根桥主动发出配置BPDU报文,而其他设备进行处理,传遍整个STP网络。这也是导致拓扑收敛慢的主要原因之一。
2.RSTP对STP的改进
1)端口角色:RSTP删除了3种端口状态,新增加了2种端口角色
STP | RSTP | RSTP端口说明 |
端口角色 |
|
|
根端口 | 根端口 | 交换机离根最近的端口,稳定时处于转发状态 |
指定端口 | 指定端口 | 转发所连接的网段发往根交换机方向的数据和从交换机方向发往所连接的网段数据,稳定时处于转发状态 |
阻塞端口 | 预备端口 | 处于Discarding状态,所属交换机不是端口所连接网段的指定交换机。是RP端口的备份端口 |
| 备份端口 | 处于Discarding状态,所属交换机为端口所连网段的指定交换机。是DP端口的备份端口 |
| 边缘端口 | 在RSTP里面,如果某一个指定端口位于整个网络的边缘,即不再与其他交换设备连接,而是直接与终端设备直连,这种端口叫做边缘端口。边缘端口不接收处理配置BPDU,不参与RSTP运算,可以由Disable直接转到Forwarding状态,且不经历时延,就像在端口上将STP禁用。但是一旦边缘端口收到配置BPDU,就丧失了边缘端口属性,成为普通STP端口,并重新进行生成树计算,从而引起网络震荡。 |
2)端口状态的重新划分:
STP | RSTP | RSTP端口状态说明 |
端口状态 |
|
|
Disabled | Discarding | 不转发用户流量也不学习MAC地址 |
Blocking | Discarding |
|
Listening | Discarding |
|
Learning | Learning | 不转发用户流量但是学习MAC地址 |
Forwarding | Forwarding | 既转发用户流量又学习MAC地址 |
3) RSTP对STP的其他改进
a.配置BPDU的处理发生变化:拓扑稳定后,配置BPDU报文的发送方式进行了优化;使用更短的BPDU超时计时;对处理次等BPDU的方式进行了优化
b.配置BPDU格式的改变,充分利用了STP协议报文中的Flag字段,明确了接口角色
c.RSTP拓扑变化处理:相比于STP进行了优化,加速针对拓扑变更的反应速度
五、STP的配置
配置生成树工作模式:[Huawei] stp mode { stp | rstp | mstp }
交换机支持STP、RSTP和MSTP(MultipleSpanning Tree Protocol)三种生成树工作模式,默认情况工作在MSTP模式。
(可选)配置根桥:[Huawei] stp root primary
配置当前设备为根桥。缺省情况下,交换机不作为任何生成树的根桥。配置后该设备优先级数值自动为0,并且不能更改设备优先级。
(可选)备份根桥:[Huawei] stp root secondary
配置当前交换机为备份根桥。缺省情况下,交换机不作为任何生成树的备份根桥。配置后该设备优先级数值为4096,并且不能更改设备优先级。
(可选)配置交换机的STP优先级:[Huawei] stp priority priority
缺省情况下,交换机的优先级取值是32768.
(可选) 配置接口路径开销:[Huawei] stp. pathcost- standard { dot1d-1998| dot1t | legacy }
配置接口路径开销计算方法。缺省情况下,路径开销值的计算方法为IEEE 802.1t (dot1t)标准方法。
同一网络内所有交换机的接口路径开销应使用相同的计算方法。
[Huawei-GigabitEthernet0/0/1] stpcost cost
设置当前接口的路径开销值
(可选)配置接口优先级:[Huawei-intf] stp priority priority
配置接口的优先级。缺省情况下,交换机接口的优先级取值是128。
启用STP/RSTP/MSTP:[Huawei] stp enable
使能交换机的STP/RSTP/MSTP功能。缺省情况下,设备的STP/RSTP/MSTP功能处于启用状态。
想要配套真题和笔记的朋友们点赞+关注,评论区留下邮箱发给你!