环路引起广播风暴,mac地址表震荡,重复数据帧
[v_error]生成树协议STP(Spanning Tree Protocol):[/v_error]
• Spanning-Tree Protocol简称STP,生成树协议,被广泛部署在二层交换网络中,用于
防止网络出现二层环路,同时增加网络的冗余性。
• 交换机之间通过生成树协议数据的交互来完成所需信息的搜集,在此基础上交换机进
行相应的计算,最终将交换机的某个(或某些)接口阻塞从而打破环路。
[v_error]生成树协议的主要功能:[/v_error]
• 消除环路:在利用生成树算法、在以太网络中,创建一个以某台交换机的某个端口为根的生成树,避免环路。
• 链路备份:在以太网络拓扑发生变化时,通过生成树协议达到收敛保护的目的。
[v_error]在STP中,交换机之间相互交互的信息称为BPDU(Bridge Protocol Data Unit)网桥协议数据单元:[/v_error]
字节 | name | 字段 | 描述 |
2 | PID | 协议 | 代表上层协议(BPDU),该值总为0 |
1 | PVI | 版本 | (802.1D的总为0) |
1 | BPDU Type | TYPE | “配置BPDU”为0、“TCN BPDU”为80 |
1 | Flags | 标志 | LSB最低有效位表示TC标志;MSB最高有效位表示TCA标志 |
8 | Root ID | 根桥ID | 根网桥的桥ID |
4 | RPC | 路径开销 | 到达根桥的STP cost |
8 | Bridge ID | 网桥ID | BPDU发送桥的ID |
2 | Port ID | 端口ID | BPDU发送网桥的端口ID(优先级+端口号) |
2 | Message Age | 消息寿命 Message age | 从根网桥发出BPDU之后的秒数,每经过一个网桥都加1,所以它本质上 是到达根桥的跳数。 |
2 | Max Age | 最大寿命 Max age | 当一段时间未收到任何BPDU,生存期到达MAX age时,网桥认为该端 口连接的链路发生故障。默认20S |
2 | Hello Time | HELLO时间 | 根网桥连续发送的BPDU之间的时间间隔。默认2S |
2 | Fwd Delay | 转发延迟 | 在监听和学习状态所停留的时间间隔。默认15S |
[v_error]STP的计算:[/v_error]
① 每个交换网络选举一个根桥RB |
② 每个非根桥上选举一个根端口RP |
③ 每个段选举一个指定端口DP |
④ 阻塞非指定端口NDP |
① 每个交换网络选举一个根桥RB |
• Bridge Identifier,交换机的STP 标识符;
• 拥有最小BID的交换机成为根桥。
根桥ID Bridge Identifier:
|
| ||
←—————→ | ←—————————→ | ||
2B | 6B |
根桥ID由16位优先级(Bridge Priority 取值范围0~65535,默认为32768,可配置修改)和48位的mac地址组成。
值越小,优先级越高,先对比桥ID,如果相同再比较MAC地址。
② 每个非根桥上选举一个根端口RP |
华为X7系列交换机使用IEEE802.1t (dot1t)标准来计算路径开销
比较顺序(均比小):
1、到根桥的路径开销
STP 接口Cost 与接口带宽的对应关系
Link Speed | Cost (New IEEE Specification) | Cost (Old IEEE Specification) |
10 Gb/s | 2 | 1 |
1 Gb/s | 4 | 1 |
100 Mb/s | 19 | 10 |
10 Mb/s | 100 | 100 |
路径开销是接口cost 累加,而接口cost 是基于接口带宽的
非根桥某个接口到RB的路径开销等于该接口的Cost 加上这个接口收到的BPDU 中包含
的Path Cost 值。
2、网桥ID (当开销一样时则比较收到发送BPDU 网桥ID,这里只有3个交换机对比不出来,当存在多个交换机时,收到对方BPDU 的就不一定是同一个交换机,这时收到的对端网桥ID对比大小,如果一样则对比端口ID)
3、端口ID
• Port Identifier,接口标识符,共有2个字节。
• Port ID (2字节)= 接口优先级(1字节)+接口编号(1字节)。
• 缺省情况下接口优先级为128,范围是0-255。
③ 每个段选举一个指定端口DP |
在网段上抑制其他端口(无论是自己的还是其他设备的)发送 BPDU 报文的端口,就是该网段的指定端口。
根桥的每个端口都是指定端口 DP(除非根桥在物理上存在环路)。
指定端口的选举顺序同根端口。
④ 阻塞非指定端口NDP |
当这些选举完成之后,剩下的端口为预备端口,被阻塞。图中阻塞的则是 SWC 的 G0/0/2。
[v_error]以下为举例:[/v_error]
![]() |
![]() |
![]() |
![]() |
[v_error]端口状态:[/v_error]
Disable | 不收发任何报文 |
Blocking | 不接收也不转发帧,接收但不发送BPDU,不学习MAC地址 |
Listening | 不接收也不转发帧,接收并且发送BPDU,不学习MAC地址 |
Learning | 不接收也不转发帧,接收并且发送BPDU,学习MAC地址 |
Forwarding | 接收并转发帧,接收并且发送BPDU,学习MAC地址 |
[v_error]拓扑变化:[/v_error]
• 根桥故障
在稳定的STP拓扑中,非根桥会定期收到来自根桥的BPDU报文,如果根桥发生故障,停止发送BPDU,如果下游交换机一直收不到报文,则Max Age 定时器会超时(默认20s),此时非根交换机会互相发送配置BPDU,重新选举新的根桥,会经过15s*2,总共消耗50s时间恢复网络。
• 直连故障
交换机检查到根端口链路发生物理故障,AP端口会经历Listening(15s),Learning(15s),Forwarding,然后恢复到转发状态。
• 非直连故障
交换机非直连直接出现故障,下游端口接收不到BPDU,同根桥故障一样,到恢复正常历时50s。
• 拓扑改变导致mac地址表变化
![]() |
mac地址表老化时间300s,如果STP拓扑发生变化,交换机转发数据的路径也会随着发生改变,此时mac地址表中未及时老化的表项会导致数据转发错误,因此当拓扑发生变化后需要及时更新mac地址表。
上图中SWB 中的mac地址表定义了主机A 发往主机B 的端口,当SWC 发生故障,STP 收敛导致拓扑结构改变,主机A 到主机B 仍然无法通信,因为mac地址表还没有更新。
所以,在拓扑变化中,根端口通过发送TCN BPDU 获知拓扑中发生了故障,根桥通过TC BPDU 告知其他交换机加速老化现有mac地址表从而快速更新mac地址表。
过程如下:
1、SWC 感知网络拓扑发送变化,向SWB 发送TCN BPDU。
2、SWB 将收到SWC 发送的TCN BPDU报文中的Flags 的TCA位设置为1,发送给SWC 告知其停止发送TCN BPDU 报文,已经确认收到了。
3、SWB 向根桥转发TCN BPDU。
4、SWA 根桥把BPDU 报文中的Flags TC位设置为1,通知下游设备把mac 地址老化时间设置为Fowarding Delay的时间15s。
5、最多15s之后SWB 中重新学习arp信息。
• 操作命令→ STP
[v_error]总结:[/v_error]
根桥产生故障后,其他交换机优先级高的会被选举为根桥,当原来根桥恢复正常之后,网络结构改变,又会重新选举。
根路径开销是到根桥路径的总开销,路径开销是指交换机端口的开销。
文章评论(0)