文章目录
前言
以太网交换网络中为了进行链路备份,提高网络可靠性,通常会使用冗余链路。但是使用冗余链路会在交换网络上产生环路,引发广播风暴以及MAC地址表不稳定等故障现象,从而导致用户通信质量较差,甚至通信中断。为解决交换网络中的环路问题,提出了生成树协议STP(Spanning Tree Protocol)
生成树协议
在以太网中,二层网络的环路会带来广播风暴,MAC地址表震荡,重复数据帧等问题,为解决交换网络中的环路问题,提出了STP。
STP通过构造一棵树来消除交换网络中的环路。
运行STP算法,判断网络中存在环路的地方并阻断冗余链路,将环路网络修剪成无环路的树型网络,从而避免了数据帧在环路网络中的增生和无穷循环。
为避免产生环路,生成树会动态响应网络拓扑变化调整阻塞接口
常见的环路分为二层环路和三层环路(生成树工作在二层网络中即数据链路层)
二层环路主要因为网络中部署了二层冗余环境,或人为的误接线缆导致,可以通过借助特定的协议或机制实现二层防环;
三层环路主要因为路由环路,可以通过动态路由协议防环和IP报文头部中的TTL字段用于防止报文被无止尽地转发。
STP
STP是一个用于局域网中消除环路的协议。运行该协议的设备通过彼此交互信息而发现网络中的环路,并对某些接口进行阻塞以消除环路。
STP在网络中运行后会持续监控网络的状态,当网络出现拓扑变更时,STP能够感知并且进行自动响应,从而使得网络状态适应新的拓扑结构,保证网络可靠性。
桥ID
在STP中,每一台交换机都有一个标示符,叫做Bridge ID或者桥ID,桥ID由16位的桥优先级(Bridge Priority)和48位的MAC地址构成。在STP网络中,桥优先级是可以配置的,取值范围是0~65535,默认值为32768,可以修改但是修改值必须为4096的倍数。优先级最高的设备(数值越小越优先)会被选举为根桥。如果优先级相同,则会比较MAC地址,MAC地址越小则越优先。
根桥
STP的主要作用之一是在整个交换网络中计算出一棵无环的“树”(STP树)。
STP开始工作后,会在交换网络中选举一个根桥,根桥是生成树进行拓扑计算的重要“参考点”,是STP计算得出的无环拓扑的“树根”。
在STP网络中,桥ID最小的设备会被选举为根桥。
在BID的比较过程中,首先比较桥优先级,优先级的值越小,则越优先,拥有最小优先级值的交换机会成为根桥;如果优先级相等,那么再比较MAC地址,拥有最小MAC地址的交换机会成为根桥。
桥根可以被抢占,当有更优秀的设备时新设备会成为新的桥根。
开销(COST)
每一个激活了STP的接口都维护着一个Cost值,接口的Cost主要用于计算根路径开销,也就是到达根的开销。
接口的缺省Cost除了与其速率、工作模式有关,还与交换机使用的STP Cost计算方法有关。
接口带宽越大,则Cost值越小。
用户也可以根据需要通过命令调整接口的Cost。
根路径开销(RPC)
从一个非根桥到达根桥的路径可能有多条,每一条路径都有一个总的开销值,开销值是该路径上所有接收BPDU端口的端口开销总和(即BPDU的入方向端口),称为路径开销
非根桥通过对比多条路径的路径开销,选出到达根桥的最短路径,这条最短路径的路径开销被称为RPC
接口ID
运行STP交换机的每个端口都有一个端口ID,端口ID由端口优先级和端口号构成。端口优先级取值范围是0到240,步长为16,即取值必须为16的整数倍。缺省情况下,端口优先级是128。端口ID可以用来确定端口角色。
BPDU(网桥协议的数据单元)
为了计算生成树,交换机之间需要交换相关的信息和参数,这些信息和参数被封装在BPDU中。
BPDU有两种类型:
- 配置BPDU
- TCN BPDU
配置BPDU包含了桥ID、路径开销和端口ID等参数。STP协议通过在交换机之间传递配置BPDU来选举根交换机,以及确定每个交换机端口的角色和状态。在初始化过程中,每个桥都主动发送配置BPDU。在网络拓扑稳定以后,只有根桥主动发送配置BPDU(每两秒一次),其他交换机在收到上游传来的配置BPDU后,才会发送自己的配置BPDU。
TCN BPDU是指下游交换机感知到拓扑发生变化时向上游发送的拓扑变化通知。
BPDU的报文格式
STP计算过程
- 在交换网络中选举一个根桥
- 每个交换机都会向网络中发送配置BPDU。配置BPDU中包含交换机自己的桥ID。
网络中拥有最小桥ID的交换机成为根桥
- 在每台非根桥上选举一个根接口
- 每一台非根桥交换机都会在自己的接口中选举出一个接口
- 在每条链路上选举一个指定接口
- 根接口选举出来后,非根桥会使用其在该接口上收到的最优BPDU进行计算,然后将计算得到的配置BPDU与除了根接口之外的其他所有接口所收到的配置BPDU进行比较:
如果前者更优,则该接口为指定接口。
如果后者更优,则该接口为非指定接口。
- 非指定接口被阻塞
故障恢复
桥根故障
SW1根桥发生故障,停止发送BPDU报文。
SW2等待Max Age计时器(20 s)超时,从而导致已经收到的BPDU报文失效,又接收不到根桥发送的新的BPDU报文,从而得知上游出现故障。
非根桥会互相发送配置BPDU,重新选举新的根桥。
经过重新选举后,SW3的A端口经过两个Forward Delay(15 s)时间恢复转发状态。
非根桥会在BPDU老化之后开始根桥的重新选举。
根桥故障会导致50 s左右的恢复时间。
直连链路故障
检测到根端口的链路发生故障,则其备用端口会经过两倍的Forward Delay(15s)时间进入用户流量转发状态。
SW2检测到直连链路物理故障后,会将预备端口转换为根端口。
直连链路故障,备用端口会经过30s后恢复转发状态。
非直连链路故障
非直连链路故障后,SW3的备用端口恢复到转发状态,非直连故障会导致50s左右的恢复时间。
STP不足之处
-
STP算法是被动的算法,依赖定时器等待的方式判断拓扑变化,收敛速度慢。
-
STP协议虽然能够解决环路问题,但是由于网络拓扑收敛慢,影响了用户通信质量。如果网络中的拓扑结构频繁变化,网络也会随之频繁失去连通性,从而导致用户通信频繁中断。