STP协议
二层环路带来的问题
1、广播风暴
2、MAC地址表震荡
生成树定义
STP,用来解决二层环路问题
STP相关概念
BPDU
定义:桥协议数据单元,用于传递STP协议相关报文
分类
1、配置BPDU:用于传递STP的配置信息
TCN BPDU:用于通告拓扑变更信息
STP的选举机制
一、在所有交换机中选举出一台作为根网桥(Root bridge)
选举规则:Bridge-id小的优先
Bridge-id
定义:桥ID,BID,用于标识交换机身份
格式:优先级+Mac地址,优先级默认32768,必须时4096的倍数
二、每台非根网桥(交换机)选举出一个根端口(Root port)
选举规则:
1、到达根网桥开销小的优先
2、对端交换机BID小的优先
3、端口ID(端口号)小的优先
开销:cost ,代表路径耗费的代价和成本,带宽越大,开销越小。cost与开销成反比。
三、每个物理段(可以理解为线的两端)上选举出一个指定端口(Designated port )
选举规则
1、到达根网桥开销小的优先
2、连接的交换机BID小的优先(看桥ID,桥ID最小的交换机所在的端口为指定端口)
3、端口ID小的优先
四、剩下没有角色的端口就是闭塞端口(Block Port)
STP初始化流程
交换机端口状态
1、disable:禁用状态,被关闭的端口
2、blocking:阻塞状态
接受BPDU,但不发送BPDU,不学习Mac地址,不转发数据
3、listening:监听状态
接收并发送BPDU,不学习Mac地址,不转发数据,持续15秒
4、learning:学习状态
接收并发送BPDU,学习Mac地址,不转发数据,持续15秒
5、forwarding:转发状态
接收并发送BPDU,学习Mac地址,转发数据
STP计时器
hello time 2秒:配置BPDU的发送周期
Max age 20秒:判断链路故障的时间,10个Hello time周期
Forwarding delay 15秒:状态切换延迟
STP拓扑变更机制
1、Max age超时/有接口变更为转发状态,判断为拓扑发生变更,向根网桥发起TCN BPDU
2、收到TCN BPDU的交换机继续向根网桥转发TCN BPDU,到达根网桥为止
3、根网桥收到CN BPDU后,向所有端口发生TC置位的配置BPDU
4、交换机收到TC置位的配置BPDU后,Mac地址表的老化时间缩短到15秒
STP的问题
收敛速度慢,故障切换时间太长
网络中大量主机频繁上下线,会导致TCN BPDU大量发送
RSTP
快速生成树协议
1、端口状态减少到3种
2、端口角色增加到4种:
1)根端口和指定端口不变
2)闭塞端口细分为2种:替代端口(根端口的备份),备份端口(指定端口的备份)
3、边缘端口机制
1、当链路激活,边缘端口立即进入转发状态,不参与STP计算
2、边缘端口UP/DOWN不会触发拓扑变更
3、建议把连接PC的端口配置为边缘端口
MSTP
多生成树协议
1、将多个vlan捆绑到一个生成树实例,每个实例分别独立计算生成树
2、基于STP计算结果不同,实现不同vlan的流量负载均衡
生成树命令
display stp #查看STP相关信息
display stp brief #查看STP端口状态
stp global enable #全局启用STP
实验
实验一:等待STP收敛后,查看STP运行状态,找出根网桥,闭塞端口
1、SW1的Mac地址应该是最小的,会成为根网桥,在SW1上查看STP运行状态,确认SW1为根网桥。
[SW1]dis stp
-------[CIST Global Info][Mode MSTP]-------
Bridge ID : 32768.58a9-2392-0100
Bridge times : Hello 2s MaxAge 20s FwdDelay 15s MaxHops 20
Root ID/ERPC : 32768.58a9-2392-0100, 0
RegRoot ID/IRPC : 32768.58a9-2392-0100, 0
RootPort ID : 0.0
BPDU-Protection : Disabled
Bridge Config-
Digest-Snooping : Disabled
TC or TCN received : 7
Time since last TC : 0 days 0h:16m:26s
2、根据STP计算机制,所有链路开销一致,闭塞端口应该会出现在SW4上。在SW4上查看端口状态,确认SW4的g1/0/1被闭塞
[SW4]dis stp brief
MST ID Port Role STP State Protection
0 GigabitEthernet1/0/1 ALTE DISCARDING NONE
0 GigabitEthernet1/0/2 ROOT FORWARDING NONE
实验二:使SW4成为新的根网桥
1、让SW4的优先级成为全网最小。默认优先级都为32768,可以把SW4的优先级改成比32768小
[SW4]stp priority 4096
[SW4]%Dec 15 22:55:49:339 2020 SW4 STP/6/STP_DETECTED_TC: Instance 0's port GigabitEthernet1/0/1 detected a topology change.
修改之后,在SW4上查看STP运行状态,发现SW4已经成为新的根网桥
[SW4]dis stp
-------[CIST Global Info][Mode MSTP]-------
Bridge ID : 4096.58a9-681a-0400
Bridge times : Hello 2s MaxAge 20s FwdDelay 15s MaxHops 20
Root ID/ERPC : 4096.58a9-681a-0400, 0
RegRoot ID/IRPC : 4096.58a9-681a-0400, 0
RootPort ID : 0.0
BPDU-Protection : Disabled
Bridge Config-
Digest-Snooping : Disabled
TC or TCN received : 4
Time since last TC : 0 days 0h:0m:6s
实验三:使闭塞端口出现在SW2上
SW4成为了根网桥,按照STP计算机制,闭塞端口此时应该在SW1上。要使闭塞端口到SW2上,就需要让SW2到SW4的cost比SW1到SW4更大。H3C交换机千兆口的cost默认是20,我们可以把SW2的g1/0/2接口的cost改为1000。
[SW2-GigabitEthernet1/0/2]stp cost 1000
[SW2-GigabitEthernet1/0/2]%Dec 15 23:15:13:506 2020 SW2 STP/6/STP_NOTIFIED_TC: Instance 0's port GigabitEthernet1/0/1 was notified a topology change.
再次你查看SW2上stp信息
[SW2-GigabitEthernet1/0/2]dis stp brief
MST ID Port Role STP State Protection
0 GigabitEthernet1/0/1 ROOT FORWARDING NONE
0 GigabitEthernet1/0/2 ALTE DISCARDING NONE
实验四:把SW1连接PC的所有接口配置为边缘接口
[SW1-GigabitEthernet1/0/3]stp edged-port
Edge port should only be connected to terminal. It will cause temporary loops if port GigabitEthernet1/0/3 is connected to bridges. Please use it carefully.
[SW1-GigabitEthernet1/0/4]stp edged-port
Edge port should only be connected to terminal. It will cause temporary loops if port GigabitEthernet1/0/4 is connected to bridges. Please use it carefully.