HCIE-RS面试---STP拓扑变化过程

BPDU:bridge protocol data unit,网桥协议数据单元。
网络中所有设备使能STP后,每一台设备都以为自己是根桥。此时,每台设备仅仅收发配置BPDU,而不转发用户流量,所有的端口都处于listening状态,所有设备通过交换配置BPDU后,进行选举工作,选出根桥、根端口和指定端口。

BPDU报文的交互过程

在这里插入图片描述
根桥BID,累计根路径开销、发送者BID,发送端口PID构成有序组。配置BPDU会按照Hello Timer规定的时间间隔来发送。

STP算法实现的基本过程

1、初始状态

由于每个桥都以为自己是根桥,所以在每个端口所发出的BPDU中,根桥字段都是用各自的BID,root path cost字段是累计的到达根桥的开销,发送者BID是自己的BID,端口PID是发送该BPDU端口的端口ID。

2、选择根桥

网络初始化时,网络中所有的STP设备都自以为根桥,根桥ID为自身的BID,通过交换BPDU,设备之间比较BID,BID最小的设备被公认为根桥。至此,根桥确定。

3、选择根端口和指定端口

3.1 非根桥将接收最优BPDU的那个端口定为根端口。

最优配置消息的选择过程

1 每个端口将收到的配置消息与自己的配置消息进行比较
  • 如果收到的配置消息优先级比较低,则将其直接丢弃,对自己的配置消息不进行任何处理;
  • 如果收到的配置消息优先级较高,则用该配置消息的内容将自己配置消息的内容替换掉。
  • 如果收到的配置消息优先级与自己相同, 则将其直接丢弃。
    2 设备将所有端口的配置消息进行比较,选出最优的配置消息

    3.2 设备根据根端口的配置消息和根端口的路劲开销,为每个端口计算一个指定端口配置消息:

  • RBID字段替换为RP的收到的BPDU中的RBID字段(BPDU中原来的RBID字段为自身BID,由于从RP收到的BPDU中得到了真正的RBID,将此字段进行替换)
  • 根路径开销字段替换为RP收到的根路径开销加上RP对应的路径开销。(原来为0,即根桥所有端口到根桥的路径开销为0)
  • 发送者BID替换为自身设备的ID
  • 发送端口PID替换为自身端口ID

    3.3 设备将计算出的配置消息与角色待定端口自己的配置消息进行比较:

  • 如果计算出的配置消息更优,则该端口被确定为指定端口,其配置消息也被计算出的配置消息替换,并周期性地向外发送;
  • 如果该端口自己的配置消息更优,则不更新该端口的配置消息并将该端口阻塞,该端口将不再转发数据,且只接收不发送配置消息。

    STP算法实现过程

    在这里插入图片描述
    A,B,C的优先级分别为0,1,2,A与B之间,A与C之间,B与C之间链路的路径开销分别为5,10,4.

    1 各设备的初始状态

    注意:四元组:{根桥ID,累计根路径开销,发送者BID,发送端口PID}

    A

端口名称 端口的配置消息
Port A1 {0,0,0,pa1}
Port A2 {0,0,0,pa2}

B

端口名称 端口的配置消息
Port B1 {1,0,1,pb1}
Port B2 {1,0,1,pb2}

C

端口名称 端口的配置消息
Port C1 {2,0,2,pc1}
Port C2 {2,0,2,pc2}

2 各设备的比较过程及结果

A

比较过程

  • Port A1收到Port B1的配置消息{1,0,1,Port B1},发现自己的配置消息{0,0,0,Port A1}更优,于是将其丢弃。
  • Port A2收到Port C1的配置消息{2,0,2,Port C1},发现自己的配置消息{0,0,0,Port A2}更优,于是将其丢弃。
  • DeviceA发现自己各端口的配置消息中的根桥和指定桥都是自己,于是认为自己就是根桥,各端口的配置消息都不作任何修改,此后便周期性地向外发送配置消息。

    比较结果

  • Port A1:{0,0,0,Port A1}
  • Port A2:{0,0,0,Port A2}

    B

    比较过程一

  • pb1收到pa1的发来的配置消息{0,0,0,pa1},发现比自己的配置消息{1,0,1,pb1}更优,于是更新自己的配置消息。
  • pb2收到pc2发来的配置消息{2,0,2,pc2},发现自己的配置消息{1,0,1,pb2}更优,于是将其丢弃。

    比较结果二

  • PB1:{0,0,0,PA1}
  • PB2:{1,0,1,PB2}

    比较过程二

  • B比较自己各端口的配置消息,发现PB1的配置消息最优,于是将其指定为根端口,,其配置消息不变。
  • B根据根端口PB1的配置消息和路径开销,为PB2计算出指定端口的配置消息{0,5,1,PB2},然后与BP2本身的配置消息进行比较,发现计算出的配置消息更优,于是PB2被定为指定端口,其配置消息也被替换为计算出的配置消息,并周期性向外发送。

    计算结果二

  • 根端口PB1:{0,0,0,PA1}
  • 指定端口PB2:{0,5,1,PB2}

    C

    计算过程一

  • PC1收到PA2的配置消息{0,0,0,PA2},发现其比自己的配置消息{2,0,2,PC1}更优,于是更新自己的配置消息。
  • PC2收到PB2更新前的配置消息{1,0,1,PB2},发现其比自己的配置消息{2,0,2,PC2}更优,于是更新自己的配置消息。

    计算结果一

  • PC1:{0,0,0,PA2}
  • PC2:{1,0,1,PB2}

    计算过程二

  • C比较自己各端口的配置消息,发现PC1的配置消息最优,于是该端口被确定为根端口,其配置消息不变。
  • C根据根端口的配置消息和路径开销,为PC2计算出指定端口的配置消息{0,10,2,PC2},然后与PC2本身的配置消息{1,0,1,PB2}进行比较,发现计算出的配置消息更优,于是PC2被确定为指定端口,其配置消息更新为计算出的配置消息

    计算结果二

  • PC1:{0,0,0,PA2}
  • PC2:{0,5,1,PB2}

    计算过程三

  • C比较PC1的根路径开销10与PC2的根路劲开销9,发现后者更小,于是PC2的配置消息更优,于是PC2被确定为根端口,其配置消息不变。
  • C根据根端口的配置消息和路径开销,为PC1计算出指定端口的配置消息{0,9,2,PC1},然后与PC1本身的配置消息{0,0,0,PA2}进行比较,发现本身的配置消息更优,,于是PC1被阻塞,其配置消息不变。从此,,PC1不再转发数据,直到有触发STP计算的新情况出现,如B与C之间的链路down掉。

网络收敛后,根桥会按照一定的时间间隔产生并向外发送配置BPDU,其他设备收到该配置BPDU后,如果优先级比自己的配置BPDU高,则非根桥设备会根据收到的配置BPDU中携带的信息更新自己相应的端口存储的配置BPDU信息,否则会丢弃该配置BPDU。

STP 拓扑变化

TCN的发送和TC的泛洪

  1. T点接口发生变更后,下游设备会不间端地向上游设备发送TCN BPDU报文。
  2. 上游设备收到下游设备发来的TCN BPDU报文后,只有指定端口处理TCN BPDU报文,其他端口也有可能收到TCN BPDU报文,但不会处理。
  3. 上游设备会将配置BPDU报文中的flags字段中的TCA位置1,然后发送给下游设备,告知下游设备停止发送TCN BPDU报文。
  4. 上游设备复制一份TCN BPDU报文,向根桥方向发送。
  5. 重复步骤1,2,3,4.直到根桥收到TCN BPDU报文。
  6. 根桥把配置BPDU报文中flags的TC位和TCA位同时置1 后发送,TC位置1 是为了通知下游设备直接删除桥MAC地址表项,TCA位置1 是为了通知下游设备停止发送TCN BPDU报文。
    说明:
    • TCN BPDU报文主要用来向上游设备乃至根桥通知拓扑变化。
    • 置位的TCA标记的配置BPDU报文主要是上游设备用来告知下游设备已经知道拓扑变化,通知下游设备停止发送TCN BPDU报文。
    • 置位的TC标记的配置BPDU报文主要是上游设备用来告知下游设备拓扑发生变化,请下游设备直接删除桥MAC地址表项,从而达到快速收敛的目的。

总结

选举方法

  • 1、选择根桥
  • 2、非根桥上选择根端口
  • 3、冲突域上选择指定端口
  • 4、既不是RP也不是DP的就是AP

    在稳定STP网络中端口状态只有2种

    1、discasrding(AP)

    2、forwarding(RP.DP)

    最优BPDU的选择

  • 1 root id 最小
  • 2 rpc积累和
  • 3 bid最小
  • 4 pid最小

    选举的算法

  • root id 最小是根桥
  • 非根桥bpdu最好的端口是RP
  • 根据RP计算DP的BPDU参数,如果比指定端口的本身的BPDU参数好,则该端口为DP端口,如果没有比指定端口本身的BPDU参数好,则该端口为AP。

RP失效,存在AP,网络需要30s恢复连接

RP失效,不存在AP,网络需要50s恢复连接

猜你喜欢

转载自blog.51cto.com/1965839/2642006