stp

why's stp

stp产生背景

1677648355317

当网络中出现交换机成环组网时(例如上图),会造成广播风暴(广播流量在三台交换机内循环广播),进而造成mac地址频繁漂移,设备CPU、内存高,线路带宽被占满,网络中断。

  1. 广播风暴导致网络不可用
  2. MAC地址表震荡导致MAC地址表项被破坏

进而需要一种技术打破这种环路,于是生成树协议诞生。

what's stp

stp、rstp、mstp含义

  1. stp:spanning tree protocol,生成树协议,遵循802.1d标准设计的用于打破网络二层环路的协议。
  2. rstp:rapid spanning tree protocol,快速生成树协议,遵循802.1w标准设计、优化stp的生成树协议。
  3. mstp:mutli spanning tree protocol,多实例生成树协议,遵循802.1s标准设计、多实例的生成树协议。

stp BPDU分类

  1. 配置BPDU(0x00)

    • 第1位和第8位没有置位的普通BPDU

    • 第1位置位的TCA BPDU

    • 第8位置位的TC BPDU

  2. TCN BPDU(Topology Change Notification (0x80)

rstp/mstp BPDU分类

  1. Rapid/Multiple Spanning Tree(0x02)

stp、rstp、mstp报文格式

stp

  • 普通配置BPDU
1677649020357
Protocol Identifier:stp、rstp、mstp都是固定的,都是Spanning Tree Protocol;
Protocol Version Identifier:stp字段为Spanning Tree,值为0;
BPDU Type:
  	Configuration(0x00)(分为 普通配置BPDU、TCA BPDU、TC BPDU)
 	Topology Change Notification(0x80)
BPDU flags:TCA和TC位
Root Identifier:根ID字段(包括优先级、mac地址字段)
Root Path Cost:根路径开销(自己为根,到自己的开销为0)
Bridge Identifier:BID字段包括优先级、mac地址字段
Port identifier:端口ID,用于选举堵塞端口
Message Age:
Max Age:BPDU最大老化时间,默认20s
Hello Time:BPDU发送时间间隔,默认为2s
Forward Delay:转发时延(收敛时间,默认15s)	
1677649306987
  • TCN BPDU

1677649414172

1677649444804

rstp

  • Rapid/Multiple Spanning Tree BPDU

RST BPDU(包含TC BPDU和TCA BPDU(少见)),没有了TCN BPDU报文,一般分将TC置位的RST BPDU(非边缘端口进入转发状态)、TCA置位的RST BPDU、普通RST BPDU(TC、TCA均不置位的BPDU-普通BPDU)。

1677649547184

普通RST BPDU(没有将TC置位的 BPDU)

RSTP变化最大的部分为 BPDU flags字段,将原先stp中flags字段中间预留6位做了使用。

字段 字段描述
BPDU flags: 0x78, Agreement, Forwarding, Learning, Port Role: Root
0... .... = Topology Change Acknowledgment: No
.1.. .... = Agreement: Yes 协议字段
..1. .... = Forwarding: Yes ...1 .... = Learning: Yes 增加端口状态字段
.... 10.. = Port Role: Root (2) 10 根端口 11 指定端口 端口角色字段 指定端口,备份端口,阻塞端口,根端口
.... ..0. = Proposal: No 提议字段,不同厂商对接使用
.... ...0 = Topology Change: No

mstp

  • Rapid/Multiple Spanning Tree BPDU(参考RST BPDU)

在RSTP基础上扩展了MST Extension字段(多实例)

1677649716210

stp、rstp角色

stp

  1. stp端口角色
    • 根端口、指定端口、ALTE(阻塞端口)
  2. 端口状态
    • forwarding
    • learning
    • liensting
    • blocking
    • disabled

1677650363412

rstp

  1. rstp端口角色
    • 根端口
    • 指定端口
    • AP(ALTE端口)阻塞端口
    • BP(backup port)备份端口
  2. rstp端口状态
端口状态 状态描述
forwarding 转发用户流量,学习mac地址
learning 不转发用户流量,学习mac地址
discarding 不转发用户流量,不学习mac地址

stp、rstp拓扑计算

stp、rstp端口角色选举

选举过程中使用的4个字段 {根桥ID,累计根路径开销,发送者BID,发送端口PID}

  1. 交换机互联

    • 只要开生成树的两台交换机或多台交换机互联(互联端口开启生成树),此时交换机不转发用户流量,所有端口都处于listening状态。首先进入选举阶段:SW们开始都认为自己是根桥,发送自己的BID(stp优先级+mac地址)给其它交换机。
  2. 选举根桥

    • SW们比较BID(比小),最小的成为根桥
  3. 选举根端口和指定端口

1677650881580

​ 图-1

3.1 选举根端口

  • 交换机比各端口 收到根桥发送的BPDU的cost。以AS01为例:AS01从G0/1口收到根桥发送的BPDU(累计根路径开销为 AS01的G0/1接口 stp cost) cost=1,同时AS01也会收到AS02发送的根桥stp数据包,AS01收到后的数据包的BID cost=2(AS02的G0/1接口cost+AS01的G0/2口cost),所以AS01的G0/1为根端口,同样AS02类似(补充:AS02收到根桥DS01发送的BPDU后 {根桥DS01-BID,累计根路径开销(cost=1),发送者BID(AS02-BID),发送端口(AS02的G0/2)PID}数据包发送给AS01。(三角形拓扑组网)

1677651019442

​ 图-2

  • 图-2为例,当AS03从AS01方向收到根桥的开销cost=2(AS01的G0/1+AS03的G0/1)等于从AS02方向收到根桥的开销=2(AS02的G0/1+AS03的G0/2),此时再比较发送根桥BPDU的发送者的BID(AS01和AS02),因为AS01的mac地址小于AS02,所以AS03 G0/1为根端口。

    注意:cost累加 是收到根桥发送的stp报文 入向接口的cost值累加。

3.2 选举指定端口

  • AS01和AS02选举指定端口,以图-1 AS01为例 比较自己的BID和AS02的BID大小,问题来了:AS01如何知道AS02的BID呢? 通过根桥定期(hello时间间隔)发送的配置BPDU,AS02收到后添加自己的BID字段发送给AS01,此时AS01知道AS02的BID,同样AS02一样知道AS01的BID。BID小的一方端口状态为指定端口(DP),另一方将端口阻塞(ALTE端口角色)。

总结:

  1. 选举根端口依次比较cost、BID、PID,比出为止;

  2. 选举指定端口只比较BID。

  3. stp、rstp、mstp 选举根桥、根端口、指定端口的过程都是一样的。

  4. 但是rstp、mstp协议收敛原理改进,收敛速度更快(收敛速度快体现在交换机与交换机之间的收敛速度(交换机互联端口进入Forwarding状态的速度快),交换机与终端(非边缘端口)收敛速度依然慢,详见stp、rstp、mstp对比。

stp、rstp端口状态

1677651539457

总结:stp、rstp、mstp先选举端口角色,再进入端口状态的变化。

stp拓扑变化

1677651634242

  1. 交换机A非边缘端口up或down后,会发送TCN BPDU给上游交换机,上游交换机B收到后发送TCA 置位的BPDU,用来告知交换机A停止发送TCN BPDU,交换机B同时发送TCN BPDU再给上游交换机,直至根桥收到TCN BPDU为止。
  2. 根桥收到 TCN BPDU后,发送 TC、TCA置位的BPDU,TCA目的是停止下游交换机发送TCN BPDU,TC的目的让下游所有交换机删除mac地址。

rstp拓扑变化

  1. 检测拓扑变化的标准只有1个:非边缘端口进入Forwarding状态。

    • 此时,交换机A将自己非边缘端口、根端口启动一个定时器(hello时间的2倍),同时向自己所有非边缘端口、根端口发送TC置位的RST BPDU,定时器超时后停止发送。交换机B收到交换机A发送的TC置位的RST BPDU后,删除除收到RST BPDU端口(其它所有端口)的mac地址。

    • 同时交换机B为自己所有非边缘端口、根端口启动一个定时器,向自己所有非边缘端口、根端口发送TC置位的RST BPDU(重复A的操作)

1677656125249

P/A机制

  1. P/A机制是rstp对stp的改进(利用flags字段中的6位)
  2. P/A机制的目的是 使一个指定端口尽快进入Forwarding状态。

1677656248330

1677656591716

stp端口状态变化过程

  • SW01和SW02之间运行stp,当SW01与SW02互联,SW01选举为根桥,SW01的E0/0/2接口(指定端口)要经过blocking-listensing-learning-Forwarding,经过15s的转发延迟后才进入Forwarding状态。(SW02 E0/0/2端口为根端口也要经过15s进入转发状态)
  • SW01和SW02之间运行RSTP,SW01和SW02之间选举根端口、指定端口后,通过P/A机制协商,使SW01 E0/0/2接口(指定端口)尽快进入Forwarding状态。
1677656718678

普通P/A机制与增强P/A机制

1677656846915

  1. 上游设备收到下游设备的Agreement报文后,将端口状态由discarding状态 转变为 Forwarding状态,端口角色没有变化(依旧是指定端口)
    • 在运行生成树的通信网络中,如果华为公司的数据通信设备与其他厂商设备混合组网,可能会因为与其他厂商设备的Proposal/Agreement机制不同导致互通失败。需要根据其他厂商设备的Proposal/Agreement机制,选择端口使用增强的快速迁移机制还是普通的快速迁移机制。

    • 华为设备:

      执行命令interface G0/X,进入参与生成树协议计算的接口视图。

      执行命令stp no-agreement-check,配置端口使用普通的快速迁移方式。

      缺省情况下,端口使用增强的快速迁移机制。

stp优化

  1. 通过端口角色的增补,简化了生成树协议的理解及部署

  2. 端口状态的重新划分

  3. 配置BPDU格式的改变,充分利用了STP协议报文中的Flag字段,明确了端口角色

  4. 配置BPDU的处理发生变化

    • 拓扑稳定后,配置BPDU报文的发送方式

    • 更短的BPDU超时计时

    • 处理次等BPDU

  5. 快速收敛

    • P/A机制
  6. 保护功能

stp的保护

  1. 边缘端口(stp edged-port

    • 边缘端口的UP、down交换机不会发送TC BPDU

    • 边缘端口+BPDU保护:边缘端口收到stp BPDU报文 端口将会被Error-Down

    • 边缘端口如果不配置BPDU保护,端口收到交换机BPDU报文后会当作普通非边缘端口(一旦边缘端口收到配置BPDU,就丧失了边缘端口属性,成为普通STP端口,并重新进行生成树计算,从而引起网络震荡)所以交换机要配置BPDU保护。

  2. BPDU保护(stp bpdu-protection

    • 配合边缘端口使用
  3. 根保护(stp root-protection

    • 配置在根桥的指定端口(当收到更优的BPDU后,将端口状态变为discarding状态,经过一定时间(通常2倍 Forwarding 延迟)没有收到更优的BPDU,将端口状态恢复)
  4. TC-BPDU保护(stp tc-protection

    • 交换机收到TC BPDU后会删除mac表(可能也会删除arp表),当交换机收到大量TC报文 交换机频繁删表会给设备造成很大性能压力,可以设置一个TC接受阈值,超过此阈值在1个定时器时间内不做处理。
  5. 环路保护

    • 防止链路拥塞,造成1台交换机环路影响其它交换机

      1677657728510

how's stp

stp组网

  1. 常用组网方式:三角形组网

1677657876762

stp排障

stp常见故障

  1. stp频繁计算导致网络震荡
    • 网络中频发TC报文,导致交换机频繁删除mac表(根因:接入交换机端口没有配置边缘端口,非边缘端口频繁UP、down)

排障命令

	<Huawei>display stp topology-change 
	 CIST topology change information
	   Number of topology changes             :31
	   Time since last topology change        :0 days 1h:13m:5s
	   Topology change initiator(detected)    :Ethernet0/0/1
	   Number of generated topologychange traps :   17
	   Number of suppressed topologychange traps:   0
	
	查看stp拓扑变化的记录
	
	
	<Huawei>display stp tc-bpdu statistics 
	 -------------------------- STP TC/TCN information --------------------------
	 MSTID Port                        TC(Send/Receive)      TCN(Send/Receive)
	 0     Ethernet0/0/3               39/0                  0/0 

	查看设备收发TC/TCN报文的数量
	

华三:
display stp bpdu-statistics

1677658165231

华三:

display stp tc

1677658224191

华三/华为:
display stp

1677658374011

xx现网

  1. MSTP协议报文存在两种格式,一种为dot1s,即IEEE802.1s规定的报文格式,另一种为legacy,是一种私有报文格式,配置时,可以指定报文的格式,也可以配置MSTP协议报文格式自适应的功能,即根据收到的MSTP协议报文格式自动切换端口支持的MSTP协议报文格式,使报文格式与对端匹配。
1677658466586
  1. 当部署MSTP的网络中存在华为设备与其他制造商的设备互连时,如果两台设备的域名、修订级别和VLAN映射表都一致,但是由于BPDU报文密钥不一致导致不能互通,则可执行本命令使得华为设备的BPDU报文与其他制造商设备的BPDU报文互通。
1677658592289
posted @ 2022-03-14 16:53  wefjack  阅读(275)  评论(0)    收藏  举报