STP生成树协议(1)

172 阅读7分钟

BPDU

BPDU(bridge protocol data unit,网桥协议数据单元): 是STP能够正常工作的根本,是STP的协议报文,分为

  • 配置BPDU(configuration BPDU)
  • TCN BPDU(topology change notification BPDU),TCN BPDU只在网络拓扑发生变更时才会被触发**
字节字段描述
2PID协议ID,对于STP而言,该字段的值总为0
1PVI协议版本ID,对于STP而言,该字段的值总为0
1BPDU type指示本BPDU的类型,若值为0x00,则表示本报文为配置BPDU;若为0x80,则为TCN BPDU
1flags标志,STP只使用了该字段的最高及最低两个比特位,最低位TC(topology change,拓扑变更)标志,最高位是TCA(topology change acknowledgment,拓扑变更确认)标志
8Root ID根网桥的桥ID
4RPC根路径开销,到达根桥的STP cost
8Bridge IDBPDU发送桥的ID
2Port IDBPDU发送网桥的接口ID(优先级+接口号)
2Message Age消息寿命,从根网桥发出BPDU之后的秒数,每经过一个网桥都减1,所以它本质上是到达根桥的跳数
2Hello Time根网桥连续发送的BPDU之间的时间间隔,默认2s
2Forward Delay转发延迟,在侦听和学习状态所停留的时间间隔,默认15s

Bridge ID

Bridge ID(桥ID):IEEE802.1D标准中规定BID由16位的桥优先级(Bridge Priority)与桥MAC地址构成,每一台运行STP的交换机都拥有一个唯一的BID,BID最小的设备会被选举为根桥(先比较桥优先级,优先级的值越小,则越优先成为根桥;如果优先级相等,再比较MAC地址,MAC地址小的优先成为根桥)

Cost

Cost(开销):每一个激活了STP的接口都维护一个Cost值,接口的Cost主要用于计算根路径开销,也就是到达根的开销。接口的缺省Cost除了与其速率、工作模式有关、还与交换机使用的STP Cost计算方法有关。接口带宽越大,则Cost值越小。用户也可以根据需要通过命令调整接口的Cost值

image.png

RPC

根路径开销(Root Path Cost):一台设备从某个接口到达根桥的RPC等于从根桥到该设备沿途所有入方向接口的Cost累加

Port ID

接口ID(Port ID,PID):运行STP的交换机使用接口ID来标识每个接口,接口ID主要用于在特定场景下选举指定接口。接口ID由两部分构成:高4bit是接口优先级,低12bit是接口编号,步长为16,范围0-240。激活STP的接口会维护一个缺省的接口优先级,在华为交换机上,该值为128。用户可以根据实际需要,通过命令修改该优先级

BPDU的比较原则

按照如下顺序选择的配置BPDU:

  1. 最小的根桥ID
  2. 最小的RPC
  3. 最小的网桥ID
  4. 最小的接口ID

这四条中,第一条原则主要用于在网络中选举根桥,后面的原则主要用于选举根接口和指定接口

计算过程

选举一个根桥
  • STP在交换网络中开始工作后,每个交换机都会向网络中发送配置BPDU。配置BPDU中包含交换机自己的BID
  • 网络中拥有最小BID的交换机成为根桥
  • 在一个连续的STP交换网络中只会存在一个根桥
  • 根桥的角色是可抢占的
  • 为了确保交换网络的稳定,建议提前规划STP组网,并将规划为根桥的交换机的桥优先级设置为最小值0
在每台非根桥上选举一个根接口
  • 到根桥的RPC越小,优先成为根接口
  • 对端BID小的,本端对应端口优先成为根接口
  • 对端PID小的,本端对应端口优先成为根接口
在每条链路上选举一个指定端口
  • 一般情况下,根桥的所有接口都是指定端口
  • 到根桥的RPC越小,优先成为指定接口(从根桥到端口的沿着路径,RPC越大,端口就为指定端口;案例一)
  • 本端BID小的,端口优先成为指定接口

注:BID的选举优先选择优先级小的,如果相同,则选择MAC小的;BID的选举优先选择优先级小的,如果相同,则选择接口编号小的

案例一

6eeb15ff54a3b2ead49bf8fe1b1ee230.png

如图:阻塞端口为LSW3的G0/0/1口,不是LSW4的G0/0/2口

cc61962539b54bf3abb26f8d7b586ef5.png

STP的接口状态

状态名称状态描述
禁用(disable)该接口不能收到BPDU,也不能收发业务数据帧,例如接口为down
阻塞(blocking)该接口被STP阻塞,处于阻塞状态的接口不能发送BPDU,但是会持续侦听BPDU,而且不能收发业务数据帧,也不会进行MAC地址学习
侦听(listening)当接口处于该状态时,表明STP初步认定该接口为根接口或指定接口,但接口依然处于STP计算的过程中,此时接口可以收发BPDU,但是不能收发业务数据帧,也不会进行MAC地址学习
学习(learning)当接口处于该状态时,会侦听业务数据帧(但是不能转发业务数据帧),并且在收到业务数据帧后进行MAC地址学习
转发(forwarding)处于该状态的接口可以正常收发业务数据帧,也会进行BPDU处理。接口的角色需是根接口或指定接口才能进入转发状态

拓扑变化

根桥故障
  1. 根桥发生故障,停止发送BPDU报文
  2. 非根桥等待Max age计时器(20s)超时,从而导致已经收到的BPDU报文失效,又接收不到根桥发送新的BPDU报文,从而得知上游出现故障
  3. 非根桥会互相发送配置BPDU报文,重新选举新的根桥
  4. 经过重新选举后,之前的阻塞接口AP经过侦听15s和学习15s恢复转发状态
  5. 非根桥会在BPDU老化之后开始根桥的重新选举
  6. 根桥故障会导致50s左右的恢复时间(20s+15s+15s)
直连链路故障
  1. 当交换机间用两条链路互联时,其中一条是主用链路,另一条为备用链路
  2. 当网络稳定时,非根桥检测到与根桥之间的链路发生故障后,会将阻塞接口(AP)转换为根接口
  3. 直连链路故障,阻塞接口(AP)会经过30s后恢复转发状态
非直连链路故障

假设SW1、SW2、SW3三台互联,AP在SW3的接口上与SW2互联,SW1是根桥,这时SW1和SW2之间的链路发生故障

  1. SW2一直收不到SW1发来的BPDU报文,等待Max age计时器(20s)超时,从而导致已经收到的BPDU报文失效
  2. 此时非根桥SW2会认为SW1失效,并且认为自己是根桥,从而发送BPDU报文给SW3,告知SW3自己是新的根桥
  3. 在此期间,SW3的AP一直收不到包含根桥ID的BPDU报文,等待Max age计时器(20s)超时,接口进入listening状态,并向SW2转发从上游发来的包含根桥ID的BPDU报文
  4. 因此,Max age计时器(20s)超时后,SW2和SW3几乎同时收到对方发来的BPDU报文,再进行STP重新计算,SW2发现SW3发来的BPDU报文更优,就放弃宣称自己是根桥并重新确定接口角色
拓扑改变导致MAC地址表错误

因为MAC地址表的老化时间是300秒

TCN BPDU在网络拓扑变化的时候产生

image.png