一,STP
1.1STP概述
生成树STP(Spanning Tree Protocol)将环形网络修剪成为一个无环的树型网络,避免报文在环型网络中的环路。
1.2STP相关概念
1.2.1BPDU
字节 | 字段 | 描述 |
2 | PID | 协议ID,对于STP该字段值为0 |
1 | PVI | 协议版本ID,对于STP值为0,RSTP值为2,MSTP值为3 |
1 | BPDU Type | 本BPDU的类型,配置BPDU值为0x00,TCN BPDU值为0x80 |
1 | Flags | 标志,STP使用该字段最高和最低两位,最低位是TC(拓扑变更)标志,最高位是TCA(拓扑变更确认)标志 |
8 | Root ID | 根网桥的桥ID |
4 | RPC | 根路径开销,到达根桥的STP Cost |
8 | Bridge ID | BPDU发送桥的ID |
2 | Port ID | BPDU发送网桥的接口ID(优先级+接口号) |
2 | Message Age | 消息寿命,从根网桥发出BPDU之后的数秒,每经过一个网桥都加1,所以本质上是到达根桥的跳数 |
2 | Max Age | 最大寿命,当一段时间未收到任何BPDU,生存周期到达最大寿命时,网桥认为接口连接的链路发生故障,默认20秒 |
2 | Hello Time | 根网桥连续发送的BPDU之间的时间间隔,默认2秒 |
2 | Forward Delay | 转发延迟,在侦听和学习状态所停留的时间间隔,默认15秒 |
1.2.2基本概念
桥ID:
IEEE 802.1D标准中规定BID由16位的桥优先级(Bridge Priority)与桥MAC地址构成。每一台运行STP的交换机都拥有一个唯一的BID。BID优先级占据高16位,其余低48位是桥MAC地址。在STP网络中,BID最小的设备会被选举为根桥。
根桥:
根桥是生成树在拓扑计算的重要参考点,是STP计算得出无环拓扑的树根。
Cost:
每一个激活了STP的接口都维护着一个Cost值,接口的Cost主要用于计算根路径开销,也就是到达根的开销。接口的缺省Cost除了和速率、工作模式有关,也与交换机使用的计算方法有关。接口带宽越大,Cost值越小。可以通过命令调整接口Cost。
RPC:
根路径开销及交换机某个接口到达根桥的沿途所有入方向接口的Cost累加。
Port ID:
运行STP的交换机使用接口ID来标识每个接口,接口ID主要用于在特定场景下选举指定接口接口ID由高4位的优先级和低12位的接口编号组成。激活STP的接口维护一个默认的优先级,华为的交换机上该值位128.
1.2.3端口状态
Disabled | 未启用STP |
Blocking | 此状态下端口不转发数据帧,不学习MAC地址表。接收并处理BPDU,但是不发送BPDU。 |
Listening | 确定端口角色,将选举出根桥、根端口和指定端口。 |
Learing | 不转发数据帧,学习MAC地址表 |
Forwarding | 正常转发数据帧 |
1.2.4选举过程
1.选举根交换机(有且只能选一个交换机)
选举规则:
A.比较优先级,默认优先级为32768,范围0-61400,比小。如果要修改优先级必须为4096的倍数。
B.如果优先级相同,比较MAC地址,比小
2.选举根端口,每个非根交换机有且只能选一个端口,RP端口
选举规则:
A.达到根交换机最小开销(最小RPC值),比小
B.比较对端BID,比小
C.比较对端PID和本端PID,比小
3.选举指定端口,DP端口,在交换机和交换机的直连链路中选举
选举规则:
A.达到根交换机最小开销(最小RPC值),比小。
B.比较对端BID,比小。
C.比较对端PID和本端的PID,比小
D.在根交换机上所有端口都是指定端口
4.剩下的端口就是预备端口,非指定端口
1.2.5拓扑改变机制
①TCN拓扑改变通知
· 有端口转变为Forwarding状态,且该网桥至少包含一个指定端口。
· 有端口从Forwarding状态或Learning状态转变为Blocking状态。
②TCA拓扑改变确认
③TC拓扑改变
当链路发生故障时,切换forwarding需要30S,两个延迟周期。
如果根桥发生故障,需要50S,选举加两个周期。
1.3STP实验
1.3.1拓扑
SW1的优先级修改为4096,其他的优先级都默认为32768。接口类型相同且开销参考协议相同。接口优先级默认为128。
1.3.2选举过程
1.选举根桥
SW1优先级最小所以最优,SW1为根桥。
[SW1]display stp
-------[CIST Global Info][Mode STP]-------
CIST Bridge :4096 .4c1f-cc9c-3037
Config Times :Hello 2s MaxAge 20s FwDly 15s MaxHop 20
Active Times :Hello 2s MaxAge 20s FwDly 15s MaxHop 20
CIST Root/ERPC :4096 .4c1f-cc9c-3037 / 0
CIST RegRoot/IRPC :4096 .4c1f-cc9c-3037 / 0
2.选举根端口
SW2比较根路径开销最优的是G0/0/1。
SW3比较根路径开销最优的是G0/0/1。
SW4比较根路径开销,G0/0/1和G0/0/5都为最优,比较对端BID相同。比较PID,PID优先级相同,比较编号G0/0/2最小,G0/0/1是根端口。
SW5比较根路径开销最优的是G0/0/1。
3.选举指定端口
①链路中根桥的端口G0/0/1是指定端口。
②链路中根桥的端口G0/0/2是指定端口。
③链路中根路径开销相同,比较BID,SW2的BID比SW3小更优先,G0/0/3为指定端口。
④链路中G0/0/2根路径开销小为指定端口。
⑤链路中G0/0/4根路径开销小为指定端口。
⑥链路中G0/0/2根路径开销小为指定端口。
⑦链路中根路径开销相同,比较BID,SW4的BID更小更优先,SW4的G0/0/2为指定端口。
⑧链路中根路径开销相同,比较BID,SW4的BID更小更优先,SW4的G0/0/3为指定端口。
4.其余的都是非指定端口处于discarding状态。
5.检查
[SW1]display stp brief
MSTID Port Role STP State Protection
0 GigabitEthernet0/0/1 DESI FORWARDING NONE
0 GigabitEthernet0/0/2 DESI FORWARDING NONE
[SW2]display stp brief
MSTID Port Role STP State Protection
0 GigabitEthernet0/0/1 ROOT FORWARDING NONE
0 GigabitEthernet0/0/2 DESI FORWARDING NONE
0 GigabitEthernet0/0/3 DESI FORWARDING NONE
0 GigabitEthernet0/0/4 DESI FORWARDING NONE
[SW3]display stp brief
MSTID Port Role STP State Protection
0 GigabitEthernet0/0/1 ROOT FORWARDING NONE
0 GigabitEthernet0/0/2 DESI FORWARDING NONE
0 GigabitEthernet0/0/3 ALTE DISCARDING NONE
[SW4]display stp brief
MSTID Port Role STP State Protection
0 GigabitEthernet0/0/1 ROOT FORWARDING NONE
0 GigabitEthernet0/0/2 DESI FORWARDING NONE
0 GigabitEthernet0/0/3 DESI FORWARDING NONE
0 GigabitEthernet0/0/4 DESI FORWARDING NONE
0 GigabitEthernet0/0/5 ALTE DISCARDING NONE
[SW5]display stp brief
MSTID Port Role STP State Protection
0 GigabitEthernet0/0/1 ROOT FORWARDING NONE
0 GigabitEthernet0/0/2 ALTE DISCARDING NONE
0 GigabitEthernet0/0/3 ALTE DISCARDING NONE
0 GigabitEthernet0/0/4 DESI FORWARDING NONE
6.其他配置命令
[SW2]stp root ? # 直接指定根桥
primary Primary root switch
secondary Secondary root switch
[SW2]stp priority ? # 指定优先级
INTEGER<0-61440> Bridge priority, in steps of 4096
[SW2]stp pathcost-standard ? #修改开销计算方式
dot1d-1998 IEEE 802.1D-1998
dot1t IEEE 802.1T
legacy Legacy
[SW2-GigabitEthernet0/0/1]stp cost ? #修改cost
INTEGER<1-200000000> Port path cost
[SW2-GigabitEthernet0/0/1]stp port priority ? #修改端口优先级
INTEGER<0-240> Port priority, in steps of 16
二,RSTP
2.1RSTP概述
STP虽然能够解决环路问题,但是由于网络拓扑收敛较慢,影响通信。而且如果网络拓扑结构频繁发生变化,网络也会频繁失去连通信,导致用户通信频繁中断。
由于STP不足,IEEE于2001年发布的802.1w标准定义了RSTP。RSTP在STP基础上进行了优化。
2.2STP存在的问题
问题一:设备运行STP初始化场景
STP避免临时环路,必须等待足够长的时间确保全网的端口状态全部确定才能转发,所以listening到learning状态需要15秒时间。在STP进入Forwarding状态前还需要根据用户流量构建MAC地址表,仍需等待15秒进入Forwarding状态。STP从初始状态到完全收敛至少需要30秒。
问题二:接交换机有BP端口,RP端口down掉场景
SW1和SW3的直连链路发生故障,其BP端口切换成为RP端口仍需要从两个转发延迟时间30秒进入转发状态。
问题三:交换机无BP端口,RP端口down掉场景
SW1和SW2直连链路发生故障,则SW3的BP端口切换到转发状态则需要50秒。SW2以自己为根向外发送BPDU,BP端口收到次优BPDU不做处理,等待端口缓存的更优的BPDU老化超时(20秒)。再经过2个forward delay时间进入转发状态。
问题四:运行STP的交换机连接用户终端的场景
交换机连接终端的链路进入转发需要经过30秒。
问题五:STP的拓扑变更机制
先由变更点朝根桥方向发送TCN消息,收到该消息的上游交换机就会回复TCA消息进行确认;最后TCN消息到达根桥后,再由根桥发送TC消息通知设备删除桥MAC地址表项,机制复杂,效率低下
问题六:端口角色和端口状态
当RP端口发生故障,需要从其他端口重新选举且等待计时器超时才能进入转发。
端口状态负责,disable,blocking,listening状态都不转发流量也不学习MAC地址。
2.3RSTP的改进
2.3.1端口
1.端口角色增加:
增加了备份端口(Backup Port)和预备端口(Alternate Port)。
Backup Port:为指定端口提供备份。
Alternet Port:为根端口提供备份。
2.端口状态的减少
disabled,blocking和listening都改为discarding状态,既不转发流量也不学习MAC地址。
2.3.2报文
字段和STP相比:
Protocol Version ID由0变为2
BPDU Type由0变为2
从Flags字段使用最低和最高位变为使用全部8位
BPDU Flags字段:
7 | 拓扑变为确认TCA |
6 | agreement同意位 |
5 | forwarding转发 |
4 | learning学习 |
3 | 3和2组成端口角色:00未知,01AP/BP,10RP,11DP |
2 | |
1 | proposal请求位 |
0 | TC拓扑改变 |
2.3.3PA机制
必须为点到点链路
针对P/A协商机制,必须为点到点链路
[SW1-GigabitEthernet0/0/1]stp point-to-point ?
auto ---------------默认是自动协商
force-false --------------修改为非点到点
force-true --------------修改为点到点链路
针对问题一:
(1)交换机初始端口角色都为DP,相互发送P置位的BPDU。
(2)收到P置位的BPDU,同步变量过程(阻塞除了边缘端口,阻塞端口以外的端口),防止临时环路。
(3)比较优先级和MAC地址确定本端口角色,对方BPDU优,自己从DP变为RP,端口的状态从从discarding变为forwarding,同时发送A置位的BPDU给对方。
(4)收到A置位的BPDU,说明本端的BPDU更优,端口状态立即从discarding变为forwarding
针对问题二:根端口快速切换机制
在直连链路故障后,其AP端口切换成为RP端口进入转发状态,可以在秒级时间内完成。
针对问题三:次等BPDU处理机制
SW3和SW1之间出现故障,SW3的DP端口进入转发状态课在秒级时间内完成。
SW2的AP端口收到次等BPDU会立即发送P置位BPDU和最优BPDU给对端。
针对问题四:边缘端口引入
交换机连接终端的接口配置为边缘端口,会立即进入转发状态。但收到BPDU后丧失边缘端口属性,成为普通端口。边缘端口的UP和DOWN不会触发TC BPDU。同时RSTP中没有TCN,TCA。
针对问题五:拓扑变更机制优化
网络发生拓扑变化,变更点交换机直接向全网发送TC置位的BPDU报文而不是通知根桥。
同时拓扑变化时可能会带来MAC地址对应端口错误的问题,交换机收到TC置位的BPDU后会清空收到报文外的其他所有非边缘接口的MAC地址。
2.3.4 边缘端口
特点:
1.边缘端口不需要经过其他状态直接变为转发状态,加快转发
2.边缘端口在UP/DOWN情况下不会触发TC BPDU
3.边缘端口收到TC BPDU不会刷新MAC地址表,不会经过15秒删除MAC地址
4.边缘端口如果收到BPDU会散失边缘端口的属性,变成非边缘端口
5.边缘端口可以发送BPDU
问题:
会产生临时环路。
配置:
[SW3]interface GigabitEthernet 0/0/3
[SW3-GigabitEthernet0/0/3]stp edged-port enable
2.4 保护功能
2.4.1 BPDU保护
当边缘端口被接入运行生成树的交换机,边缘端口收到BPDU会自动将其设置为非边缘端口并重新进行生成树计算。新接入的交换机发送的BPDU会造成网络震荡。
在边缘端口设置保护,当收到BPDU报文时接口会立即关闭。
1.配置边缘端口
[SW3]interface GigabitEthernet 0/0/3
[SW3-GigabitEthernet0/0/3]stp edged-port enable
2.配置BPDU保护
[SW3]stp bpdu-protection
3.查看STP简要信息
[SW3]display stp brief
MSTID Port Role STP State Protection
0 GigabitEthernet0/0/1 ROOT FORWARDING NONE
0 GigabitEthernet0/0/2 ALTE DISCARDING NONE
0 GigabitEthernet0/0/3 DESI FORWARDING BPDU
4.将PC1修改为运行RSTP的SW4
[SW4]stp mode rstp
5.边缘端口变为DOWN
Feb 8 2023 16:30:49-08:00 SW3 %%01MSTP/4/BPDU_PROTECTION(l)[0]:This edged-port GigabitEthernet0/0/3 that enabled BPDU-Protection will be shutdown, because it received BPDU packet!
Feb 8 2023 16:30:50-08:00 SW3 %%01PHY/1/PHY(l)[1]: GigabitEthernet0/0/3: change status to down
[SW3]display stp brief
MSTID Port Role STP State Protection
0 GigabitEthernet0/0/1 ROOT FORWARDING NONE
0 GigabitEthernet0/0/2 ALTE DISCARDING NONE
5.将交换机移除后恢复方法
①重启端口
②配置恢复,恢复正常后30秒恢复
[SW3]error-down auto-recovery cause bpdu-protection interval 30
2.4.2根保护
当收到更优的BPDU会重新进行生成树计算,并失去根的地位,引起网络拓扑结构错误变动。在交换机上对应接口上配置根保护,使得如果收到更优的BPDU端口进入discarding状态。
interface xxx
stp root-protection
2.4.3泛洪保护
交换机短时间内收到拓扑改变信息频繁删除操作会给设备带来负担和隐患。在交换机上配置处理BPDU的阈值可以解决这个问题。
[SW3]stp tc-protection threshold ?
INTEGER<1-255> The threshold of TC-BPDU protection, default is 1