1.广播风暴
环路会引起广播风暴,同时网络中的主机会收到重复数据帧。
2.STP的作用
STP通过阻塞端口消除环路,并能够实现链路备份的目的。
3.STP操作
1)选择根网桥:所有交换机中,Router-id最小的就是根网桥。
2)选择根端口:根端口在非根网桥上,是非根网桥上到达根网桥路径最短的那个端口。与根网桥直连的端口为根端口
3)选择指定端口:根网桥上的所有端口都是指定端口
4)阻塞端口,非指定端口:未被选举为根端口或指定端口的为阻塞端口
4.BPDU
BPDU包含桥ID,路径开销,端口ID等参数。STP选举的过程,都是通过BPDU来选举的
Message Age:配置BPDU在网络中传播的生存期
Max Age:配置BPDU在设备中能够保存的最大生存期
Hello Time:配置BPDU发送的周期
Forward Delay:端口状态迁移的延时
5.BPDU的两种类型
配置BPDU和TCN BPDU
配置BPDU包含了桥ID,路径开销,和端口ID等参数。在网络拓扑稳定以后,只有根桥主动配置BPDU,其他交换机在收到上游传来的配置BPDU后,才会发送自己的配置BPDU。
TCN BPDU是指下游交换机感知到拓扑发生变化是向上游发生的拓扑变化通知。
6.根桥故障:非根桥会在BPDU老化后开始重新选举根网桥,时间是Max Age+2倍Forward Delay=50s左右
7.直连链路故障:当其中一台交换机检测到直连链路出现物理故障后,会将预备端口转化为根端口
这台交换机的预备端口会在30s后恢复到转发状态(2倍的转发延迟时间)
8.非直连链路故障:交换机的预备端口会在50s后恢复到转发状态
9.拓扑变化中TCN过程:拓扑变化过程中,根桥通过TCN BPDU报文获知生成树拓扑里发生了故障,根桥生成TC用来通知其他交换机加速老化现有MAC地址表
10.根桥产生故障后,其他交换机会被选为根桥,当原来的根桥恢复后,网络会发生什么变化?
网络会重新选举根桥。
11.STP中根路径开销和本地路径开销的区别?
路径开销:一台交换机和另一台交换的路径 根路径开销:一台交换机到根交换机的路径
根路径开销是根据交换机之间的网段来说的,本地路径的开销也叫端口开销是针对本地的物理链路来说的。
相关的IETF的规定为物理链路10G/s 开销为2 ,物理链路1G/s 开销为4 ,物理链路100M/s 开销为19 ,物理链路10M/s 开销为100
==========
生成树协议和其他协议一样,是随着网络的不断发展而不断更新换代的。最初被广泛应用的是IEEE802.1D-1998 STP(Spanning Tree Protocol,生成树协议),随后以它为基础产生了IEEE 802.1w RSTP(Rapid Spanning Tree Protocol,快速生成树协议)和IEEE 802.1s MSTP(Multiple Spanning Tree Protocol,多生成树协议)
三种生成树协议特点比较:
STP:
- 形成一棵无环路的树,解决广播风暴并实现冗余备份。
- 收敛速度较慢。
- 无需区分用户或业务流量, 所有VLAN共享一棵生成树 。
RSTP:
- 形成一棵无环路的树,解决广播风暴并实现冗余备份。
- 收敛速度快。
- 无需区分用户或业务流量, 所有VLAN共享一棵生成树 。
MSTP:
- 形成多棵无环路的树,解决广播风暴并实现冗余备份。
- 收敛速度快。
- 多棵生成树在VLAN间实现负载均衡,不同VLAN的流量按照不同的路径转发。
STP原理
STP(Spanning Tree Protocol)生成树协议解决了链路冗余中的环路问题。
STP通过阻塞端口来消除环路,并能够实现链路备份的目的。这种阻塞是逻辑上的阻塞,业务报文不能转发,但是协议报文能够转发。
STP通过发送BPDU(Bridge Protocol Date Unit)桥协议数据单元来决定要阻塞的端口。
协商原则
STP协议是根据4个维度进行选举协商的,设备之间通过发送BPDU报文,经过4个维度的比较,最终会阻塞综合能力最差的端口。
选举维度(桥ID,累计根路径开销,发送设备BID,发送端口PID)
工作过程
选举分四步
1.选举一个根桥(Root Bridge)
Bridge ID:比较优先级(0~65536,默认32768,值越小,优先级越高)+比较MAC
2.每个非根交换机选举一个根端口(R:Root port)
Root port:根据cost(链路开销),开销越小,优先级越高,选举为根端口。开销相同,比较交换机优先级、mac地址等。
3.每个网段都选举一个指定端口(D:Designated port)
每条链路选一个指定端口,根交换机每个接口都是D接口。
4.阻塞非根、非指定端口(A:Alternative Port)
选举完指定端口,交换机中非根、非指定端口,便是阻塞端口。
临时环路问题
为了避免临时环路问题,A端口进入D端口之前需要等待一段时间。A->Listening->Learning->D,默认每个状态都是15秒,总共三十秒。
端口状态转换
Disabled:端口被关闭
Blocking:A端口
Forwarding:R、D端口
Listening:可以转发BPDU报文。但不能转发用户流量。
Learning:可以根据收到的用户流量构建MAC地址表,但不转发用户流量。
角色和状态
经过4个维度的比较,最终会协商出端口的角色和状态,确定报文流量的转发路径。STP角色的定义,如下图所示。
根桥:就是桥ID最小的设备。 桥ID是由16位的桥优先级与桥MAC地址构成。BID桥优先级占据高16位,其余的低48位是MAC地址。华为交换机默认桥优先级都是32768。所以在不修改桥优先级时,MAC地址最小的设备就是根桥。
指定端口:就是负责转发BPDU报文的端口。 根桥上的端口都是指定端口。该端口可以正常转发流量。
根端口:就是 去往根桥路径开销最小的端口。该端口可以正常转发流量。
阻塞端口:就是禁止转发流量的端口。
从上面的官方定义,可以看出:STP协商完成后,端口要么被阻塞,要么正常转发报文。其实在STP进行协商的过程中,是有一些中间状态的。
报文格式
STP协议报文是通过BPDU报文封装的,目的MAC是 组播MAC:01-80-C2-00-00-00,封装格式是IEEE 802.3。
目标MAC是组播MAC地址,组播地址只有交换机才会接收。Type值是0x03。
BPDU报文处理流程
BPDU报文的分类
配置BPDU报文:根据Flags标记位,分为3类
- 第一类配置BPDU报文: Flags的TCA和TC位都置为0的配置BPDU报文
- 第二类配置BPDU报文: Flags的TCA和TC位都置为1的配置BPDU报文
- 第三类配置BPDU报文:Flags的TCA位置为0,TC位置为1的配置BPDU报文
TCN BPDU报文:BPDU Type为0x80的BPDU报文,叫做TCN BPDU报文
BPDU报文的处理流程
BPDU报文格式
第一类配置BPDU报文: Flags的TCA和TC位都置为0的配置BPDU报文
该报文用于STP状态的 协商和维持。具体报文格式如下:
第二类配置BPDU报文: Flags的TCA和TC位都置为1的配置BPDU报文
该报文用于通知 下游设备停止发送TCN BPDU报文。具体报文格式如下:
第二类配置BPDU报文: Flags的TCA位置为0,TC位置为1的配置BPDU报文
该报文用于通知下游设备删除MAC地址表项。具体报文格式如下:
TCN BPDU报文: BPDU Type为0x80的BPDU报文,叫做TCN BPDU报文,用于通知上游设备网络拓扑变更。具体报文格式如下:
配置举例
配置思路
采用如下的思路配置STP:
- 配置模式是STP模式。
- 配置SwitchA为根桥,SwitchB为备份根桥。
- SwitchC和SwitchD的GE0/0/3端口去使能STP协议。
- SwitchA、SwitchB、SwitchC和SwitchD使能STP协议。
操作步骤
配置模式为STP模式。
<HUAWEI> system-view
[HUAWEI] sysname SwitchA
[SwitchA] stp mode stp
<HUAWEI> system-view
[HUAWEI] sysname SwitchB
[SwitchB] stp mode stp
<HUAWEI> system-view
[HUAWEI] sysname SwitchC
[SwitchC] stp mode stp
<HUAWEI> system-view
[HUAWEI] sysname SwitchD
[SwitchD] stp mode stp
配置SwitchA为根桥,SwitchB为备份根桥。
[SwitchA] stp root primary //也可以使用命令stp priority 0 配置优先级为0,和stp root primary的作用是一样的。
[SwitchB] stp root secondary //也可以使用命令stp priority 4096 配置优先级为4096,和stp root secondary的作用是一样的。
去使能SwitchB和SwitchC设备GE0/0/3端口的STP功能。
[SwitchC] interface gigabitethernet0/0/3
[SwitchC-GigabitEthernet0/0/3] stp disable
[SwitchC-GigabitEthernet0/0/3] quit
[SwitchD] interface gigabitethernet 0/0/3
[SwitchD-GigabitEthernet0/0/3] stp disable
[SwitchD-GigabitEthernet0/0/3] quit
全局使能STP功能。
[SwitchA] stp enable
[SwitchB] stp enable
[SwitchC] stp enable
[SwitchD] stp enable
验证配置结果
查看STP简要信息,通过STP简要信息可以快速的看出端口的角色和状态。
========= End