在网络运维中,常因为冗余链路和错误配置引起环路。环路会引起一些导致网络无法正常运行的问题:
- 广播风暴
- 重复单播帧
- mac地址漂移
环路问题
广播帧和未知单播帧会向除接收报文外的所有在用接口转发。当SW1收到PC1发送的广播包时,会从G1/0/1和G1/0/2发送出去,将发送给SW2的广播包记为F2(Frame 2),发送给SW3的广播包记为F3,F2的转发过程如下
- SW1发送F2给SW2
- SW2收到SW1发送的F2后会从G1/0/2和G1/0/3发送出去,PC2收到F2后不会再转发
- SW3收到SW2发送的F2后会从G1/0/1和G1/0/3发送出去,PC3收到F2后不会再转发
- SW1收到SW3发送的F2后会从G1/0/1和G1/0/3发送出去,PC1收到F2后不会再转发
- 重复过程2、3、4,直到环路消除。
F3会沿着相反的方向重复这个过程,因为广播包在环路的网络中不会消失,随着时间的推移,网络中的广播包越来越多,直到影响网络性能…
这个就是广播风暴。
在环路中,目的地址未知的单播帧因为相同的过程可能会收到重复的帧导致不可修复的错误,被称为重复帧传输。
在环路中因为PC1发送的广播帧和未知单播帧可能从G1/0/1、G1/0/2、G1/0/3接收,所以PC1的源地址也可能从这三个接口学习到,SW2和SW3也可能从G1/0/1和G1/0/2学习到。当目的设备(比如PC2)返回数据时,部分返回的数据始终不能正确返回给PC1,导致PC1的网络是好是坏,也可能一直异常,这就是MAC地址漂移。
环路问题的处理
通过关闭端口的方式可以解决环路问题,当需要启用备用链路时再手动打开,但是人工干预的消耗的时间不确定,错误配置的环路也可能很隐蔽,人工排查耗费的时间无法估计。STP是一种根据交换机和端口的优先级,自动阻塞端口实现无环网络的协议。
STP原理
运行STP的交换机通过交换BPDU来
- 选举根桥
- 选举根端口
- 选举指定端口
- 阻塞既不是根端口也不是指定端口的端口
选举根桥
根桥是STP中的根节点,由优先级最高的设备担任,整个生成树以根桥为参考选路。交换机通过比较BID确定根桥,BID由优先级和MAC地址组成。优先级的范围是0-65535,步长为4096,默认为32768,优先级越小的设备优先级越高,当优先级一致时比较MAC地址。
选举根端口
根端口是指非根桥上离根桥最近的端口,每个非根桥只有一个根端口,根端口是同一台交换机上不同的端口在比较。与根桥的远近可以通过到根桥的开销RPC(Root Path Cost)比较,链路的Cost与端口带宽相关,而RPC=非根桥到根桥路径上所有链路Cost值相加。当多个端口的Cost相同时,需要比较发送BPDU交换机的BID,BID小的优先级高。
接口带宽 | Cost |
---|---|
10G | 2 |
1G | 4 |
100M | 19 |
10M | 100 |