STP\RSTP\MSTP
STP
STP是一个用于局域网中消除环路的协议
- 运行该协议的设备通过彼此交互信息而发现网络中的环路,并对某些接口进行阻塞以消除环路。
- STP在网络中运行后会持续监控网络的状态,当网络出现拓扑变更时,STP能够感知并且进行自动响应,从而使得网络状态适应新的拓扑结构,保证网络可靠性。
- 由于局域网规模的不断增长,生成树协议已经成为了当前最重要的局域网协议之一
stp功能
- 消除二层环路
- 链路备份
基本概念
-
bridge id :(桥id/bid)
- IEEE 802.1D标准中规定BID由16位的桥优先级(Bridge Priority)与桥MAC地址构成。
- 桥优先级的取值范围:0~65535,华为默认取值:32768,用户可以自行修改,修改值必须为4096的倍数
- 每一台运行STP的交换机都拥有一个唯一的BID
- BID桥优先级占据高16bit,其余的低48bit是桥MAC地址
-
root bridge: (根桥/rb)
- STP的主要作用之一是在整个交换网络中计算出一棵无环的“树”(STP树)
- 根桥是一个STP交换网络中的“树根”。一个STP网络只会有一个RB
- STP开始工作后,会在交换网络中选举一个根桥,根桥是生成树进行拓扑计算的重要“参考点”,是STP计算得出的无环拓扑的“树根”。
- 根桥负责向STP网络主动发起配置BPDU
-
cost计算方式:
- IEEE 802.1 d-1998
- IEEE 802.1 t
- 华为计算标准
-
root path cost: (根路径开销)
- 接口的缺省Cost除了与其速率、工作模式有关,还与交换机使用的STP Cost计算方法有关。
- 接口带宽越大,则Cost值越小
- 一台设备从某个接口到达根桥的RPC等于从根桥到该设备沿途所有入方向接口的Cost累加
- 根桥的根路径开销是0
-
port id: (接口id)
- 运行STP的交换机使用接口ID来标识每个接口,接口ID主要用于在特定场景下选举指定接口。
- 接口ID由高4 bit的接口优先级和低12 bit的接口编号两部分构成。
- 接口优先级取值范围:0~240,在华为交换机上,默认为128。用户可以根据实际需要,通过命令修改该优先级,修改值必须为16的整数倍
-
端口角色
- 根端口 root port :rp
- 根端口是非根交换机去往根桥路径最优的端口。在一个运行STP协议的交换机上最多只有一个根端口,但根桥上没有根端口
- 指定端口 design port :dp
- 指定端口是交换机向所连网段转发配置BPDU的端口,每个网段有且只能有一个指定端口
- 隔离端口 blocking port :bp
- 如果一个端口既不是指定端口也不是根端口,则此端口为阻塞端口。阻塞端口将被阻塞
- 根端口 root port :rp
-
bpud:网桥协议数据单元
- 配置 BPDU
- 配置BPDU用于STP进行拓扑计算
- TCN BPDU
- TCN BPDU用于拓扑改变
- 配置 BPDU
工作原理
-
选举rb
- 比较bid
- 首先比较各自的桥优先级,优先级值越小,越优先;
- 桥优先级相同比较各自的MAC地址,MAC地址越小,越优先
- 根桥的角色是可抢占的
-
在非rb节点上选rp
- 比较接收到的配置BPDU中的RPC,值越小越优先
- RPC相同,比较上行交换机BID,值越小越优先
- 上行交换机BID相同,比较上行交换机PID,值越小越优先
- 上相交换机的PID相同,比较本交换机PID,值越小越优先
-
在每个链路上选举dp
- 首先比较根路径开销(RPC),值越小,越优选
- 若RPC相等,则比较链路两端交换机的BID,值越小,越优选
- 若BID相等,则比较链路两端端口的PID,值越小,越优选
-
非根节点被阻塞
-
状态
- disable:该接口不能收发BPDU,也不能收发业务数据帧,例如接口为down
- blocking:该接口被STP阻塞。处于阻塞状态的接口不能发送BPDU,不能收发业务数据帧,也不会进行MAC地址学习,但是会持续侦听BPDU。是阻塞端口最终的状态
- listening:当接口处于该状态时,表明STP初步认定该接口为根接口或指定接口,但接口依然处于STP计算的过程中,此时接口可以收发BPDU,但是不能收发业务数据帧,也不会进行MAC地址学习
- learning:当接口处于该状态时,会侦听业务数据帧(但是不能转发业务数据帧),进行MAC地址学习
- forwarding:处于该状态的接口可以正常地收发业务数据帧,也会进行BPDU处理。是根接口或指定接口最终维持的状态
- 故障
-
根桥故障
非根桥会在BPDU老化之后开始根桥的重新选举。 根桥故障会导致50s左右的恢复时间。
-
直连链路故障
检测到直连链路物理故障后,会将预备端口转换为根端口。 直连链路故障,备用端口会经过30s后恢复转发状态。
-
非直连
物理性故障:30s;非物理性故障:50s
RSTP
STP虽然能够解决环路问题,但是由于网络拓扑收敛慢,影响了用户通信质量,RSTP是STP的改进版本,收敛速度更快,而且能够兼容STP
改进方面
-
端口角色
-
alternate port:作为根端口的备份端口
-
backup port :作为指定端口的备份
-
端口状态
-
Discarding状态:不转发用户流量也不学习MAC地址
-
Learning状态:不转发用户流量但是学习MAC地址
-
Forwarding状:既转发用户流量又学习MAC地址
-
BPDU处理
- 无论非根桥设备是否接收到根桥传来的配置BPDU报文,非根桥设备仍然按照Hello Time规定的时间间隔发送配置BPDU
- 如果一个端口在三个周期(Hello Time×3)内没有收到上游设备发送过来的配置BPDU,那么该设备认为与此邻居之间的协商失败。
- 如果该端口缓存的RST BPDU优于收到的RST BPDU,那么该端口会直接丢弃收到的RST BPDU,立即回应自身缓存的RST BPDU,从而加快收敛速度
快速收敛
- 根端口快速切换
- 如果网络中一个根端口失效,那么网络中最优的Alternate端口将成为根端口,进入Forwarding状态
- 指定端口快速切换
- 如果网络中一指定端口失效,那么网络中最优的Backup端口将成为指定端口,进入Forwarding状态
- 边缘端口
- 某一端口不再与其他交换设备连接,而是直接与终端设备直连,这种端口可以设置为边缘端口
- 边缘端口不参与RSTP计算,可以由Discarding直接进入Forwarding状态。
- proposal/agreement
- 当一个端口被选举成为指定端口之后,会先进入Discarding状态,再通过P/A机制快速进入Forwarding状态。
拓扑变更机制
- 在非边缘指定端口和根端口上设置一个tc计时器,为hello time 的两倍,会清空端口上的mac地址,同时发送rst bpdu 超时后停止
- 其他设备收到rst bpdu后,清空所有端口学习到的mac地址,重复上面的过程
保护机制
-
bpdu保护
- 边缘端口收到bpdu被error down 边缘端口属性不变
-
根保护
- 启用根保护功能的指定端口,其端口角色只能保持为指定端口
-
工作原理
- 每一台交换机启动RSTP后,都认为自己是“根桥”,并且发送RST BPDU
- 上游链路的设备互联端口通过P/A机制,快速进入转发状态
- 在直连网段中,发送最优RST BPDU的端口为DP端口,次优RST BPDU的端口为RP端口;DP端口发送P位置“1”的RST BPDU报文
- RP端口接收到P=1的RST BPDU报文后,同步下游端口(将其他DP端口状态变为discarding),将自己的端口状态变为Forwarding,发送A位置“1”的RST BPDU;
- DP端口收到A=1的RST BPDU后,将自己的端口状态直接变为Forwarding,P/A机制完成。
- 下游链路的设备互联端口会进行新一轮的P/A协商
mstp
RSTP的流量无法负载分担,并且可能造成二层次优路径
MSTP兼容STP和RSTP
MSTP可以将一个或多个VLAN映射到一个Instance,再基于Instance计算生成树,映射到同一个Instance的VLAN共享同一棵生成树。
网络层次
MSTP把一个交换网络划分成多个域,每个域内形成多棵生成树,生成树之间彼此独立
一个MST域内可以生成多棵生成树,每棵生成树都称为一个MSTI。 MSTI使用Instance ID标识,华为设备取值为0~4094。缺省情况向下,华为交换机上所有的VLAN都映射到了Instance0
- cst
是连接交换网络内所有MST域的一棵生成树。 如果把每个MST域看作是一个节点,CST就是这些节点通过生成树协议计算生成的一棵生成树
2. IST
是各MST域内的一棵生成树。 IST是一个特殊的MSTI,MSTI的Instance ID为0。
域根
IST的域根
- 在MST域中IST生成树中距离总根最近的交换设备是IST域根
MSIT的域根
- MSTI域根是每个多生成树实例的树根
- CIST
通过生成树协议计算生成的,连接一个交换网络内所有交换设备的单生成树
总根是CIST的根桥
4. SST
运行生成树协议的交换设备只能属于一个生成树。 MST域中只有一个交换设备,这个交换设备构成单生成树。
5. 主桥
是IST Master,它是域内距离总根最近的交换设备
端口角色
根端口、指定端口、Alternate端口、Backup端口、Master端口、域边缘端口和边缘端口
master端口: Master端口是MST域和总根相连的所有路径中最短路径上的端口,它是交换设备上连接MST域到总根的端口
域边缘接口: 域边缘端口是指位于MST域的边缘并连接其它MST域的端口
端口状态:
与rstp相同
命令
启动
- stp mode mstp
- stp enable
配置stp域并激活
- stp region-configuration
- region-name name
- 缺省情况下,MST域名等于交换设备的桥MAC地址
- instance instance-id vlan { vlan-id1 [ to vlan-id2 ] }
- 缺省情况下,所有VLAN均映射到CIST,即实例0上
- revision-level level
- 配置交换设备的MSTP修订级别。缺省情况下,交换设备MST域的修订级别是0。
- active region-configuration
可选配置
- stp [ instance instance-id ] root { primary | secondary }
- stp [ instance instance-id ] priority priority
- stp pathcost-standard { dot1d-1998 | dot1t | legacy }
- 端口上
- stp [ instance instance-id ] cost cost
- stp [ instance instance-id ] port priority priority
others
-
VBST:基于VLAN的生成树
-
堆叠与园区网络树形结构组网形态
-
Smart Link
-
三层防环:动态路由协议有一定的防环能力; IP报文头部中的TTL字段可用于防止报文被无止尽地转发。
-
环路会造成:
-
广播风暴:交换机反复进行泛洪处理
cost cost
- stp [ instance instance-id ] port priority priority
## others
1. VBST:基于VLAN的生成树
2. 堆叠与园区网络树形结构组网形态
3. Smart Link
4. 三层防环:动态路由协议有一定的防环能力; IP报文头部中的TTL字段可用于防止报文被无止尽地转发。
5. 环路会造成:
1. 广播风暴:交换机反复进行泛洪处理
2. mac地址偏移:mac地址在不同的端口之间来回切换