环路引起的问题
二层交换网络
随着局域网规模的不断扩大,越来越多的交换机被用来实现主机之间的互连。如果交换机之间仅使用一条链路互连,则可能会出现单点故障,导致业务中断。为了解决此类问题,交换机在互连时一般都会使用冗余链路来实现备份。
冗余链路虽然增强了网络的可靠性,但是也会产生环路,而环路会带来一系列的问题,继而导致通信质量下降和通信业务中断等问题
广播风暴
- 环路会引起广播风暴
- 网络中的主机会瘦到重复数据帧
根据交换机的转发原则,如果交换机从一个端口上接收到的是一个广播帧,或者是一个目的MAC地址未知的单播帧,则会将这个帧向除源端口之外的所有其他端口转发。如果交换网络中有环路,则这个帧会被无限转发,此时便会形成广播风暴,网络中也会充斥着重复的数据帧。
环路会引起MAC地址表震荡
STP工作原理
STP通过阻塞端口来消除环路,并能后实现链路备份的目的。
STP的主要作用:
- 消除环路:通过阻断冗余链路来消除网络中可能存在的环路。
- 链路备份:当活动路径发生故障时,激活备份链路,及时恢复网络连接
STP操作
-
选举一个根桥
-
每个非根交换机选举一个根端口
-
每个网段选举一个指定端口
-
阻塞非根 非指定端口
STP通过构造一棵树来消除交换网络的环路。
每个STP网络中,都会存在一个根桥,其他交换机为非根桥,根桥或根交换机位于整个逻辑树的根部,是stp网络的逻辑中心,非根桥是根桥的下游设备。当现有根桥产生故障时,非根桥之间会交互信息并重新选举根桥,交互的这种信息被称为BPDU。BPDU中包含交换机在参加生成树计算时的各种参数信息
- STP中定义了三种端口角色:指定端口,根端口,预备端口 -
指定端口是交换机向所连网段转发配置BPDU的端口,每个网段有且只能有一个指定端口,一般情况下,根桥的每个端口总是指定端口。
-
根端口是非法交换机去往根桥路径最优的端口。在一个运行STP协议的交换机上最多只有一个根端口,但根桥上没有根端口。
-
如果一个端口既不是根端口也不是指定端口,则此端口为预备端口。预备端口将被阻塞。
根桥选举
- 每一台交换机启动STP后,都认为自己是根桥
STP中根桥的选举依据的是桥ID,STP中的每个交换机都会有一个桥ID(Bridge ID) 。桥ID由16位的桥优先级(Bridge Priority)和48位的MAC地址构成。在STP网络中,桥优先级是可以配置的,取值范围是0~65535,默认值为32768。优先级最高的设备(桥ID最小)会被选举为根桥。如果优先级相同,则会比较MAC地址,MAC地址越小则越优先。
交换机启动后就自动开始进行生成树收敛计算。默认情况下,所有交换机启动时都认为自己是根桥,自己的所有端口都为指定端口,这样BPDU报文就可以通过所有端口转发。对端交换机收到BPDU报文后,会比较BPDU中的根桥ID和自己的桥ID。如果收到的BPDU报文中的桥ID优先级低,接收交换机会继续通告自己的配置BPDU报文给邻居交换机。如果收到的BPDU报文中的桥ID优先级高,则交换机会修改自己的BPDU报文的根桥ID字段,宣告新的根桥。
指定端口选举
-
非根交换机在选举指定端口时分别依据更具路径开销,BID,PID
-
未被选举位根端口或指定端口的端口为预备端口,将会被阻塞
端口状态转换
运行STP协议的设备上端口状态有5种
-
Forwarding:转发状态。端口既可转发用户流量也可转发BPDU报文,只有根端口或指定端口才能进入Forwarding状态
-
Learning:学习状态。端口可根据收到的用户流量构建MAC地址表,但不转发用户流量。增加Learning状态是为了防止临时环路
-
Listening:侦听状态。端口可以转发BPDU报文,但不能转发用户流量
-
Blocking:阻塞状态。端口仅仅能接收并处理BPDU,不能转发BPDU,也不能转发用户流量。此状态是预备端口的最终状态
Disabled:禁用状态。端口既不处理和转发BPDU报文,也不转发用户流量
BPDU
BPDU包含桥ID、路径开销、端口ID、计时器等参数。
为了计算生成树,交换机之间需要交换相关的信息和参数,这些信息和参数被封装在BPDU(Bridge Protocol Data Unit)中。
BPDU有两种类型:配置BPDU和TCN BPDU。
配置BPDU包含了桥ID、路径开销和端口ID等参数。STP协议通过在交换机之间传递配置BPDU来选举根交换机,以及确定每个交换机端口的角色和状态。在初始化过程中,每个桥都主动发送配置BPDU。在网络拓扑稳定以后,只有根桥主动发送配置BPDU,其他交换机在收到上游传来的配置BPDU后,才会发送自己的配置BPDU。
TCN BPDU是指下游交换机感知到拓扑发生变化时向上游发送的拓扑变化通知。
配置BPDU中包含了足够的信息来保证设备完成生成树计算,其中包含的重要信息如下:
根桥ID:由根桥的优先级和MAC地址组成,每个STP网络中有且仅有一个根。
根路径开销:到根桥的最短路径开销。
指定桥ID:由指定桥的优先级和MAC地址组成。
指定端口ID:由指定端口的优先级和端口号组成。
Message Age:配置BPDU在网络中传播的生存期。
Max Age:配置BPDU在设备中能够保存的最大生存期。
Hello Time:配置BPDU发送的周期。
Forward Delay:端口状态迁移的延时。
计时器
- 配置BPDU报文每经过一个交换机Message Age都加1
- 如果Message Age大于Max Age,非根桥会丢弃该配置BPDU。