前言
以太网交换网络中为了进行链路备份,提高网络可靠性,通常会使用冗余链路。但是使用冗余链路会在交换网络上产生环路,引发广播风暴以及MAC地址表不稳定等故障现象,从而导致用户通信质量较差,甚至通信中断。为解决交换网络中的环路问题,提出了生成树协议STP(Spanning Tree Protocol)。
运行STP协议的设备通过彼此交互信息发现网络中的环路,并有选择的对某个接口进行阻塞,最终将环形网络结构修剪成无环路的树形网络结构,从而防止报文在环形网络中不断循环,避免设备由于重复接收相同的报文造成处理能力下降。
RSTP(Rapid Spanning Tree Protocol)协议基于STP协议,对原有的STP协议进行了更加细致的修改和补充,实现了网络拓扑快速收敛。
常见误区:
- 二层交换机只有一个mac地址,根桥id的mac即为交换机中的唯一mac地址
- RP,DP端口选举遵循STP角色选举四要素规则
- RP,DP端口选举由于在同交换机网络中,只有一个根桥交换机,即四要素中第一步的根桥ID一致,一般从第二步开始计算
- 一般BPDU报文只在根桥交换机发出,RP是接收BPDU报文接口,DP是发送/转发送BPDU报文接口
生成树协议概述
分类:
- STP 慢生成树协议(为了理解原理,本文主要讲解)
- RSTP 快生成树协议
- MSTP 多实例生成树协议(华为交换机默认开启协议)
技术背景:
环路产生原因:
- 由于二层设计要求的冗余性,进一步带来了环路
环路影响:
- 引起广播风暴:可能会造成设备瘫痪
- MAC地址震荡:可能造成设备不通
- 主机收到重复数据帧
解决核心:
- 通过STP协议,逻辑上阻塞掉一条链路,打破环路,该链路成为备份链路,当主链路产生故障,备份链路进入活跃状态,转发数据。
STP概述
- STP是一个用于局域网中消除环路的协议。
- 运行该协议的设备通过彼此交互信息而发现网络中的环路,并对某些接口进行阻塞以消除环路。
- STP在网络中运行后会持续监控网络的状态,当网络出现拓扑变更时,STP能够感知并且进行自动响应,从而使得网络状态适应新的拓扑结构,保证网络可靠性。
- 由于局域网规模的不断增长,生成树协议已经成为了当前最重要的局域网协议之一。
STP工作原理:
本文为了讲解,主要使用STP(慢生成树协议)
|
STP角色选举(四要素):
- 桥ID:由优先级+MAC地址组成
//优先级默认32768,可以调整为4096的整数倍
[SW3]stp priority 4096
- 根路径开销(RPC root path cost):设备去往根桥交换机的最近开销
默认情况下:
1Gbps端口 = 20000(开销)
100Mbps端口= 200000(开销)
- (转)发送者桥ID:发送BPDU的交换机的桥ID
由优先级+MAC地址组成
- 端口ID:端口优先级+端口编号,数值越小越好,优先级默认128
//修改端口优先级,可以修改为16的整数倍
[Huawei-GigabitEthernet0/0/2]stp port priority 16
STP计算(工作)流程:
以以下网络拓扑图为例讲解:
一、选举根桥:
根桥:是整个交换机网络的核心,所有的报文(BPDU)都是由根桥发送,根桥是唯一的
- 由优先级+MAC地址组成
- 先比较各台设备的桥ID,优先级数值越小越优先(默认都为32768),如果优先级相同,则选择MAC地址小的设备
|
如需修改优先级:
|
二、每台非根桥交换机上选举一个根端口(RP Root Port):
RP:离根桥“最近”的端口,接收根桥发送的报文(BPDU)
- 根据四要素法则选举:
- 先比较根桥ID(由于在同交换机网络中,只有一个根桥交换机,即根桥ID一致)
- 比较去往根桥的最近开销,开销数值越小越优先(第二步即可选举出RP端口)
|
如需修改接口开销:
|
三、在每段链路选举一个指定端口(DP):
DP:发送BPDU报文的接口,也是一段链路最优的端口(每段链路即两个端口连接成的链路都有一个DP端口)
- 根据四要素法则选举:
- 先比较根桥ID(由于在同交换机网络中,只有一个根桥交换机,即根桥ID一致)
- 比较去往根桥的最近开销,开销数值越小越优先
- 比较(转)发送者桥ID:先比较各台设备的桥ID优先级(数值越小越优先),如果优先级相同,则选择MAC地址小(第三步即可选举出DP端口)
四、选举阻塞端口
最后没有任何角色的端口就是阻塞端口,该链路就为阻塞链路
手工指定根桥
|
|
端口状态转换
下图仅限参考:
- Disabled:未启用状态,华为中不存在
- Blocking:阻塞状态,所有的交换机一开机在此状态,在此状态会进行根桥的选举,阻塞端口最终会回到该状态
- Listening:监听状态,在该状态选举RP、DR、AP阻塞端口,如果选举为RP、DR端口,则进入下一个状态
- Learning:学习状态,在此状态会进行MA地址的学习,构建MAC
- Forwarding:转发状态,最后DR、RP会停留在此状态,只有该状态可以转发数据
forward delay :转发延时,15S:用于防止临时环路
从Listening 到Learning 需要经历15S,从Learning到Forwarding 需要经历15S
常用配置:
|
STP协议的报文–BPDU
BPDU分为两种类型:
- 配置BPDU(Configuration BPDU)
- TCN BPDU(Topology Change Notification BPDU)
配置BPDU:
用于STP计算,包括用于选举的一些列参数(根桥ID,根路径开销RPC、桥ID、端口ID)
- Message Age:交换机实际收到bpdu报文的时间,默认情况下,每经过一台设备,Message Age +1
- Max Age:BPDU的老化时间,为20S,如果交换机收到的BPDU,其中Message Age实际收到的实际大于20S,则交换机丢弃该配置BPDU
TCN BPDU(拓扑改变通知BPDU):
只有拓扑改变时才会触发,用于通知拓扑发生变化
拓扑变化分析:
- 根桥故障:
根桥产生故障,无法发送BPDU,非根桥SWB/C等待20S的BPDU老化时间,如果超过20S还没有收到根桥发送的报文信息,则认为自己是根桥,发送BPDU报文。
通过BPDU选举出新的根桥(SWB),SWC的AP端口变为RP端口,从Blocking- listening – learning – forwarding 需要经过2个转发延时,总共30S。
最终,整个网络从发生故障,到故障解决,需要50S时间
- 直连故障:
SWB的RP端口产生故障,SWB能够直观的感受,此时,AP端口作为备份,切换成RP端口,端口状态从Blocking- listening – learning – forwarding 需要经过2个转发延时,总共30S。
最终,整个网络从发生故障,到故障解决,需要30S时间,这个时间叫做收敛时间。
- 非直连故障:
SWB 连接根桥的线路产生故障,无法接收BPDU,等待20S老化时间收不到,则SWB认为自己是根桥,发送自己的BPDU
SWC的AP端口收到SWB的BPDU,也收到根桥的BPDU,通过对比,认为根桥的更优,所以AP端口变为DP端口,端口状态从Blocking- listening – learning – forwarding 需要经过2个转发延时,总共30S。
最终,整个网络从发生故障,到故障解决,需要50S时间,这个时间叫做收敛时间。
拓扑发生变化,交换机的处理过程:
- SW3的g0/0/6接口产生故障,感知拓扑发生变化,朝着DP端口发送拓扑改变通知BPDU(TCN BPDU)
- SW2收到SW3的通知,SW2首先回复SW3 TAC置位为1的配置BPDU ,同时,将该拓扑改变通知BPDU 朝着根桥发送
- 重复第二步,直到根桥为止。
- 当根桥交换机SW1收到拓扑改变通知BPDU,回复TCA置位为1 的配置BPDU用于确认已经收到通知,同时泛洪TC置位为1的配置BPDU,泛洪35S。
- 下游交换机收到TC置位为1的配置BPDU,将MAC地址老化时间从300S刷新为15S,并继续往自己的下游传递TC置位为1的BPDU。