一、生成树协议
1、二层环路带来的问题
- 广播风暴
- MAC地址表震荡
2、生成树定义
STP,用来解决二层环路问题
3、STP相关概念
BPDU定义
桥协议数据单元,用于传递STP协议相关报文
BPDU分类
配置BPDU:
- 用于传递STP的配置信息(即用来计算生成树计算和维护生成树拓扑的报文)
TCN BPDU:
- 用于通告拓扑变更信息(即当拓扑结构发生变化时,用来通知相关设备网络拓扑结构发生变化的报文)
4、STP的选举机制
4.1 Root bridge
在所有交换机中选举出一台作为根网桥(Root bridge)
- 选举规则
Bridge-id小的优先
- Brideg-id
定义
桥ID,BID,用来标识交换机身份
格式
优先级+Mac地址
优先级默认32768,必须是4096的倍数
4.2 Root port
每台非根网桥(交换机)选举出一个根端口(Root port)
- 选举规则
1.到达根网桥开销小的优先
2.对端交换机BID小的优先
3.端口ID小的优先
- 开销
Cost,代表路径耗费的代价和成本,带宽越大,开销越小
4.3 Designated port
每个物理段上选举出一个指定端口(Designated port)
- 选举规则
1.到达根网桥开销小的优先
2.本机BID小的优先
3.端口ID小的优先
4.4 Blocked Port
剩下没有角色的端口就是闭塞端口(Blocked Port)
5、STP初始化流程
交换机端口状态
disable:禁用状态,被关闭的端口
blocking:闭塞状态,接收BPDU,但不发送BPDU,不学习Mac地址,不转发数据
listening:监听状态,接收并发送BPDU,不学习Mac地址,不转发数据,持续15秒
learning:学习状态,接收并发送BPDU,学习Mac地址,不转发数据,持续15秒
forwarding:转发状态,接收并发送BPDU,学习Mac地址,转发数据
6、STP计时器
Hello time
2秒,配置BPDU的发送周期
Max age
20秒,判断链路故障的时间,10个Hello time周期
Forwarding delay
15秒,状态切换延迟
7、STP拓扑变更机制
- Max age超时/有接口变更为转发状态,判断为拓扑发生变更,向根网桥发起TCN BPDU
- 收到TCN BPDU的交换机继续向根网桥转发TCN BPDU,到达根网桥为止
- 根网桥收到TCN BPDU后,向所有端口发起TC置位的配置BPDU
- 交换机收到TC置位的配置BPDU后,Mac地址表的老化时间缩短到15秒
8、STP的问题
- 收敛速度慢,故障切换时间太长
- 网络中大量主机频繁上下线,会导致TCN BPDU大量发送
9、RSTP
快速生成树协议
- 端口状态减少到3种
- 端口角色增加到4种
根端口和指定端口不变
闭塞端口细分为2种:
替代端口(Alternata port) 根端口的备份
备份端口(Backup port) 指定端口的备份
- 边缘端口机制
当链路激活,边缘端口立即进入转发状态,不参与STP计算
边缘端口UP/DOWN不会触发拓扑变更
建议把连接PC的端口配置为边缘端口
10、PVST
每个VLAN生成树(思科私有)
用途
每个VLAN生成树(PVST)为每个在网络中配置的VLAN维护一个生成树实例。它使用ISL中继和允许一个VLAN中继当被其它VLANs的阻塞时将一些VLANs转发。尽管PVST对待每个VLAN作为一个单独的网络,它有能力(在第2层)通过一些在主干和其它在另一个主干中的不引起生成树循环的Vlans中的一些VLANs来负载平衡通信
PVST BPDU的格式和STP/RSTP BPDU格式已经不一样,发送的目的地址也改成了Cisco保留地址01-00-0C-CC-CC-CD,而且在VLAN Trunk的情况下PVST BPDU被打上了“ISLVLAN”标签。所以,PVST协议并不兼容STP/RSTP协议
11、MSTP
多生成树协议
将多个vlan捆绑到一个生成树实例,每个实例分别独立计算生成树
基于STP计算结果不同,实现不同vlan的流量负载均衡
12、STP常用命令
//查看STP相关信息
[h3c]display stp
//查看STP端口状态
[h3c]display stp brief
//全局启用STP
[h3c]stp global enable
//关闭端口上STP
[h3c-GigabitEthernet 1/0/1]undo stp enable
//更改STP模式,默认模式是mstp
[h3c]stp mode 'stp/rstp/mstp'
//更改交换机优先级
[h3c]stp priority 'priority'
//更改接口生成树的cost
[h3c-GigabitEthernet 1/0/1]stp cost 'cost'
//配置端口为边缘端口
[h3c-GigabitEthernet 1/0/1]stp edged-port
二、STP实验
实验拓扑
实验需求
- 开启所有设备,等待STP收敛后观察STP状态
- 使SW4成为根网桥
- 使闭塞端口出现在SW2上
- 把SW1上连接的PC的端口配置为边缘端口
实验解法
1、查看STP
等待STP收敛后,查看STP运行状态,发现根网桥,闭塞端口
步骤1:根据HCL模拟器的运行机制,SW1的Mac地址应该是最小的,会成为根网桥,在SW1上查看STP运行状态,确认SW1为根网桥
[SW1]display stp
-------[CIST Global Info][Mode MSTP]-------
Bridge ID : 32768.7aef-e4ea-0100
Bridge times : Hello 2s MaxAge 20s FwdDelay 15s MaxHops 20
Root ID/ERPC : 32768.7aef-e4ea-0100, 0
RegRoot ID/IRPC : 32768.7aef-e4ea-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:0m:40s
步骤2:根据STP计算机制,所有互连长度一致,闭塞端口应该会出现在SW4上。在SW4上查看端口状态,确认SW4的g1 / 0/2被闭塞
[SW4]display stp brief
MST ID Port Role STP State Protection
0 GigabitEthernet1/0/1 ROOT FORWARDING NONE
0 GigabitEthernet1/0/2 ALTE DISCARDING NONE
2、设置跟网桥
使SW4成为新的根网桥
分析:要想使SW4成为根网桥,最好的办法就是让SW4的优先级成为全网最小。或者优先级都为32768,只要把SW4的优先级改成比32768小就可以了
步骤1:修改SW4的优先级为4096
[SW4]stp priority 4096
[SW4]%Mar 21 20:50:27:109 2018 SW4 STP/6/STP_DETECTED_TC: Instance 0's port GigabitEthernet1/0/2 detected a topology change.
步骤2:在SW4上查看STP运行状态,发现SW4已经成为新的根网桥
[SW4]display stp
-------[CIST Global Info][Mode MSTP]-------
Bridge ID : 4096.7af0-0e17-0400
Bridge times : Hello 2s MaxAge 20s FwdDelay 15s MaxHops 20
Root ID/ERPC : 4096.7af0-0e17-0400, 0
RegRoot ID/IRPC : 4096.7af0-0e17-0400, 0
RootPort ID : 0.0
BPDU-Protection : Disabled
Bridge Config-
Digest-Snooping : Disabled
TC or TCN received : 8
Time since last TC : 0 days 0h:1m:30s
3、设置闭塞端口
使闭塞端口出现在SW2上
分析:SW4成为了根网桥,按照STP计算机制,闭塞端口此时应该在SW1上。要使闭塞端口到SW2上,就需要让SW2到SW1的成本比SW4到SW1尺寸。口的cost重置是20,我们可以把SW2的g1 / 0/2接口的cost替换为1000
步骤1:在SW2上进入g1 / 0/2接口的接口视图,修改stp cost为1000
[SW2]interface g1/0/2
[SW2-GigabitEthernet1/0/2]stp cost 1000
[SW2-GigabitEthernet1/0/2]%Mar 21 22:16:05:399 2018 SW2 STP/6/STP_NOTIFIED_TC: Instance 0's port GigabitEthernet1/0/1 was notified a topology change.
步骤2:在SW2上查看STP接口状态,发现SW2的g1 / 0/2接口已经成为了新的闭塞端口
[SW2]display stp brief
MST ID Port Role STP State Protection
0 GigabitEthernet1/0/1 ROOT FORWARDING NONE
0 GigabitEthernet1/0/2 ALTE DISCARDING NONE
4、配置边缘端口
把SW1连接PC的所有接口配置为边缘接口
[SW4]interface g1/0/3
[SW4-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.
[SW4]interface g1/0/4
[SW4-GigabitEthernet1/0/4]stp edged-port
Edge port should only be connected to terminal. It will cause temporary loops if port GigabitEthernet1/