- 二层环路带来的问题:广播风暴、MAC地址表震荡
- 生成树协议可以实现局域网中冗余链路的阻塞,环路的消除,用来解决二层环路问题。
-
1、生成树协议基本原理
1.1 STP基本原理
1.1.1 STP出现背景
拓扑描述
- 广播风暴
- 假设交换设备上没有启用STP协议。如果PC1发出广播请求,那么广播报文将被其他两台交换设备的端口port1接收,并分别从端口port2广播出去,然后端口port2又收到另一台交换设备发过来的广播报文,再分别从两台交换设备的端口port1转发,如此反复,最终导致整个网络资源被耗尽,网络瘫痪不可用。
- MAC地址表震荡
- 广播风暴
配置BPDU 用于传递STP的配置信息
-
配置BPDU报文在哪些情况下产生
端口使能STP,配置BPDU就会按照HELLO TIME定时器规定的时间间隔从指定端口发出。(只有根桥主动发送配置BPDU,其他桥收到上游发送的BPDU以后,才能触发转发自己的配置BPDU)
- 当根端口收到配置BPDU报文后,根端口所在设备会向自己的每一个指定端口复制一份BPDU。
- 当指定端口收到比自己差的配置BPDU时候,会立刻向下游设备发送自己的BPDU。
STP的选举机制
STP操作:
1.选举一个根桥。
2.每个非根交换机选举一个根端口。
3.每个网段选举一个指定端口。
- STP中定义了:指定端口,根端口和预备端口。
- 指定端口是交换机向所连网段转发配置BPDU的端口,每个网段有且只能有一个指定端口。一般情况下,根桥的每个端口总是指定端口。
- 根端口是非根交换机去往根桥路径最优的端口。在一个运行STP协议的交换机上最多只有一个根端口,但根桥上没有根端口。
如果一个端口既不是指定端口也不是根端口,则此端口为预备端口。预备端口将被阻塞。
根网桥(Root bridge)
在所有交换机中选举出一台作为根网桥(Root bridge)
选举规则
Bridge-id小的优先
Brideg-id
定义
桥ID,BID,用来标识交换机身份
格式
优先级+Mac地址
- 优先级默认32768,必须是4096的倍数
根端口(Root port)
每台非根网桥(交换机)选举出一个根端口(Root port)选举规则
- 到达根网桥开销小的优先
- 对端交换机BID小的优先
- 端口ID小的优先
开销
Cost,cost值是和链路和接口的带宽成反比的,代表路径耗费的代价和成本,带宽越大,开销越小;宽越大,cost值越小指定端口(Designated port)
每个物理段(每根网线)上选举出一个指定端口(Designated port)
选举规则
- 到达根网桥开销小的优先
- 本机BID小的优先
- 端口ID小的优先
STP初始化流程
交换机端口状态
- disable:禁用状态,被关闭的端口
- blocking:阻塞状态 接收BPDU,但不发送BPDU,不学习Mac地址,不转发数据
- listening:监听状态 接收并发送BPDU,不学习Mac地址,不转发数据,持续15秒
- learning:学习状态 接收并发送BPDU,学习Mac地址,不转发数据,持续15秒
forwarding:转发状态 接收并发送BPDU,学习Mac地址,转发数据
STP计时器
Hello time 2秒 配置BPDU的发送周期
- Max age 20秒 判断链路故障的时间,10个Hello time周期
- Forwarding delay 15秒 状态切换延迟
Hello Timer:STP交换机发送BPDU的时间间隔。当网络拓扑稳定之后,该计时器的修改只有在根桥修改才有效。根桥会在之后发出的BPDU中填充适当的字段以向其他非根桥传递该计时器修改信息。但当拓扑变化之后,TCN BPDU的发送不受这个计时器的管理。 Forwarding Delay Timer:指一个端口Listening 和Learning的各自时间,默认为15秒,即Listening状态持续15秒,随后Learning状态再持续15秒。这两个状态下的端口会处Blocking状态,这是STP用于避免临时环路的关键。 Max Age:端口的BPDU老化的时间。端口会根据接收到的BPDU存储所接收到的最好的四个信息(根桥BID、累计根路径开销、发送者BID和发送端口PID)。每次接收到合适的BPDU,端口都会启动这个Max Age计时器。超过这个Max Age时间端口接收不到合适BPDU,就会认为网络直径过大。这个时间默认为20秒。
STP拓扑变更机制
当网络的拓扑发生变化时,网络会从一个状态向另一个状态过渡,重新打开或阻断某些端口口。交换机的端口状态状态变换和时间如下图:
- Max age超时/有接口变更为转发状态,判断为拓扑发生变更,向根网桥发起TCN BPDU
- 收到TCN BPDU的交换机继续向根网桥转发TCN BPDU,到达根网桥为止
- 根网桥收到TCN BPDU后,向所有端口发起TC置位的配置BPDU
- 交换机收到TC置位的配置BPDU后,Mac地址表的老化时间缩短到15秒
从上图可以看出STP的最长收敛时间为50s。
当网络的拓扑发生变化时,网络会从一个状态向另一个状态过渡,重新打开或阻断某些端口。交换机的端口要经过几种状态:
禁用(Disable)——>阻塞(Blocking)——>监听状态(Listenning)——>学习状态(Learning)——>转发状态(Forwarding)。
每种端口状态对数据的处理如表4-2所示。
表4-2 生成树端口状态对数据的转发
过程 | 阻塞 | 侦听 | 学习 | 转发 | 禁用 |
---|---|---|---|---|---|
接收并处理BPDU | 能 | 能 | 能 | 能 | 不能 |
转发接口上收到的数据 | 不能 | 不能 | 不能 | 能 | 不能 |
转发其它接口发来的数据帧 | 不能 | 不能 | 不能 | 能 | 不能 |
学习MAC地址 | 不能 | 不能 | 能 | 能 | 不能 |
STP的问题
- 收敛速度慢,故障切换时间太长
- 网络中大量主机频繁上下线,会导致TCN BPDU以及TC置位BPDU大量发送
STP常用命令
| 相关命令 | 功能 | | —- | —- | | [h3c]display stp | 查看STP相关信息 | | [h3c]display stp brief | 查看STP端口状态 | | [h3c]stp global enable | 全局启用STP | | [h3c-GigabitEthernet 1/0/1]undo stp enable | 关闭端口上STP | | [h3c]stp mode ‘stp/rstp/mstp’ | 更改STP模式,默认模式是mstp | | [h3c]stp priority ‘priority’ | 更改交换机优先级 | | [h3c-GigabitEthernet 1/0/1]stp cost ‘cost’ | 更改接口生成树的cost | | [h3c-GigabitEthernet 1/0/1]stp edged-port | 配置端口为边缘端口 |