STP(Spanning Tree Protocol)
一、STP概述
STP是一个用于局域网中消除环路的协议。
没有生成树协议会引起:1、广播风暴导致网络不可用;2、 MAC地址表震荡导致MAC地址表被破坏
生成树模型:1、单生成树实例模型;2、多生成树实例模型;3、基于VLAN生成树实例模型。
1、单实例模型:SST(Singles STP),交换机上所有vlan只能使用相同的一个拓扑,华为单实例模型只有STP和RSTP模式
2、多实例模型:MST(Multiple STP),可以自定义实例的数量,可手工指定哪些vlan使用哪些实例。华为默认生成树协议为MSTP。
3、基于vlan实例模型:VBST(vlan-based STP),每个vlan都拥有各自的生成树实例,实例与拓扑之间独立不相关。(此生成树只在特定交换机平台支持,不建议使用)
二、STP基本概念
概念:BID、端口ID、端口成本、端口角色、端口状态
2.1、网桥ID(Bridge ID)
理论上:由16位桥优先级和48位桥MAC地址构成。
实际上:高16位桥优先级中,仅高4位用于优先级,低12位用户扩展(systemID)。
STP中,BID最小值被选为根桥。
2.2、端口ID(Port ID)
PID可能影响指定端口的选举。PID最小值被选为指定端口。
理论上:Port ID长度为2字节,1字节为端口优先级,1字节为端口号
实际上:优先级仅占高4位,低12位为端口号
默认端口优先级为128,即1000,修改优先级可影响端口PID,进而影响指定端口的选举。
华为命令 stp port priority。
2.3、端口成本
每个端口都有端口成本
端口成本计算方法命令 :stp pathcost-standard{ dot1d-1998 | dot1t | legacy } 默认为dot1t
路径开销值命令 :stp cost
路径开销是生成树协议用于选择链路的参考值,端口成本值的取值范围由路径开销计算方法决定。
路径成本:当前交换机到根交换机的路径上所有RP端口的端口成本之和,最小值端口是RP端口。
2.4、端口角色
根端口/Root port
指定端口/Designated port
替代端口/Alternate port
备份端口/Backup port
BPDU包含:{根桥ID、到根桥的成本、邻居交换机BID(收时为邻居、发时为自己)、邻居交换机PID},最小值最优
注意:刚启动时交换机认为自己时根交换机,此时BPDU的根桥ID和邻居交换机BID都为自己的ID
(1)RP端口
最终状态:转发状态
交换机收到最优BPDU的端口为根端口,也是到根桥最近的端口。
1、非根交换机有且只有一个RP端口,根交换机没有RP端口
2、RP端口所在网段的上游对应端口一定是DP端口
3、交换机先确定RP端口,再确定其他角色端口
4、STP模式下,RP端口迁移到转发状态需等待2个forward-delay
(2)DP端口
最终状态:转发状态
网段内通告BPDU的端口为指定端口,拥有指定端口的交换机是该网段的指定交换机。
1、每个网段有且只有一个DP端口,
2、STP模式下,DP端口迁移到转发状态需等待2个forward-delay
(3)AP端口和BP端口
最终状态:丢弃状态
IEEE802.1D-1998中为BP端口(阻塞端口BlockingPort)
IEEE802.1D-2004和802.1w中,阻塞端口细分为AP端口和BP端口,华为不再有阻塞端口概念
AP端口是RP端口的备份端口
BP端口是DP端口的备份端口
在STP和RSTP模式下,AP、BP、RP端口靠持续接收BPDU来保持端口角色,如果收不到BPDU,端口会在超时后发生角色变化。
BP端口(Backup Port)是指当一个接口收到来自自身网桥另一个接口发送的更优BPDU,此端口选为备份端口。
2.5、端口状态
IEEE802.1D-1998标准中定义了5种端口状态Forwarding、 Learning、 Listening、 Blocking、 Disable
IEEEE802.1D-2004和802.1w标准中定义了3中端口状态Forwarding、 Learning、 Discarding
STP模式下,DP和RP在迁移到 forwarding状态过程中,先保持15s的discarding 状态,再保持15s的learning状态(IEEE802.1D-1998中先保持15s的listening状态,再保持15s的learning状态),AP和BP端口一直处于discarding状态。
2.6、计时器
STP和RSTP 中用到了Hello、Forward Delay 和 Max Age 这3个计时器,它们会影响端口状态迁移和收敛时间,可在全局下修改
举例:
stp timer hello 30 (3秒)
stp timer forward-delay 2000 (20秒)
stp temer max-age 3000 (30秒)
默认为 2s 15s 20s
注意:调整计时器一定要在“根交换机”上配置,其他交换机使用根交换机的计时器工作,根交换机通过BPDU把时间通告到全网。
华为交换机STP/RSTP实现中,若收到次的BPDU,端口户立即处理并计算新的端口角色。若接收不到BPDU,端口角色也会在至少3个hello 间隔后重新计算,整个过程MAX Age不再参与。
二层环路导致的问题:
1、广播风暴
2、MAC地址表翻滚 — MAC地址在交换机中的刷新时间为5min,一个接口可以对应多个MAC;但一台交换机上同一MAC地址只能对应一个接口;
3、同一数据帧的重复拷贝
生成树协议:
在一个二层交换网络,逻辑的阻塞部分接口;当最佳路径故障时,自动疏通部分接口来实现链路备份;
生成树:
在一个二层交换网络中,生成一棵树型结构,逻辑的阻塞部分接口,使得从根到所有的节点仅存在唯一的路径;当最佳路径故障时,自动打开部分阻塞端口,来实现线路备份的作用;
生成树在生成过程中,应该尽量的生成一棵星型结构,且最短路径树;
802.1D(最早) PVST/PVST+(CISCO) RSTP(CISCO) /802.1W(公有) MST=802.1S
一、802.1D 一个交换网络内仅存在一棵生成树实例;
交换机间使用BPDU—桥协议数据单元 – 交换机间沟通互动收发的数据
配置BPDU—只有根网桥可以发送,在交换网络初始状态时,所有交换机均定义本地为根网桥,进行BPDU的发送;使得网络中所有交换机均收到其他设备的BPDU,之后基于数据中的参数进行比对,选举出根网桥;之后所有非根网桥不再发送BPDU,而是仅接收和转发根网桥的BPDU;周期:每2s发送,hold time 20s;
TCN—拓扑变更消息(也是BPDU):
本地交换机链路故障后,STP重新收敛,为了快速刷新全网所有交换机的MAC表,将向本地所有STP接口发送TCN(标记位中的TCN位置1),邻居交换机收到TCN后,先标记为ACK位为回复,用于可靠传输消息;之后将TCN逐级转发到根网桥处,由根网桥回复TC消息来逐级回复到所有交换机;使所有交换机临时将MAC表的老换时间修改为15s(默认的,转发延时)
选举— 根网桥 根端口 指定端口 非指定端口(阻塞端口)