生成树(stp)的基本工作过程

  • 本文讲述的是802.1d的协议。

基本概念

网桥id的组成

在这里插入图片描述

  • 4096的倍数 + mac地址

根网桥

在这里插入图片描述

  • 优先级最小的桥为根网桥,SW1位根网桥,SW2为备份根网桥。

根路径开销

在这里插入图片描述

BPDU

BPDU的类型

在这里插入图片描述

  • 配置bpdu,在拓扑稳定后只有根网桥才发送的。生成树的计算主要通过这个bpdu来完成的。

  • tcn是链路故障时发送的报文。

bpdu的帧结构

在这里插入图片描述

BPDU 数据帧结构

在这里插入图片描述

  • Bridge Identifier为发送网桥id,这个字段描述的是这个bpdu是哪个桥发送给我的,发送给我bpdu的这个网桥的id。
  • 在抓包的时候看到 Bridge Identifier 不是发出bpdu的网桥的优先级也不要奇怪,要去看看flags里是否包含agreement,因为携带agreement标志,的报文,是交换机原封不动的把上游的发来的带proposal的报文返回给上游,只是proposal标志改为agreement的标志了。

STP端口角色及选择

在这里插入图片描述

根网桥的选择

在这里插入图片描述

  • 初始情况每台交换机都以自己为根向外发送bpdu,收到bpdu和自己的优先级进行比较,把优的id写到跟网桥id的字段中。
  • 再往外发送的时候,发送的是比较之后选择出比较优的根优先级往外发送。

根端口的选择

在这里插入图片描述

  • 按顺序比较 路径开销,如果路径开销相等,在比较发送这个bpdu的网桥id,如果也相等,再比较发送这个bpdu的端口id。

在这里插入图片描述

  • 比较得出0/1为根端口,SW2和SW3的一样,都是选0/1为根端口。

在这里插入图片描述

  • 上图:通过判断路径开销,距离根最近的端口选为根端口。

在这里插入图片描述

  • 比较后得出 0/2端口为根端口。

指定端口和替换端口的选举

在这里插入图片描述

  • 用一句比较容易理解的白话讲,发送的bpdu,比接收的bpdu更优,这个发送的端口就是指定端口。

在这里插入图片描述

  • 该图已经选好的根端口,接下来选择指定端口。

在这里插入图片描述

  • 同一个端口上发出的bpdu和接收到的bpdu进行比较,收到的bpdu大的端口是指定端口。

在这里插入图片描述

  • sw2和sw3之间选指定端口,交换机2的id是更优的,所以0/2为指定端口。

  • sw3和sw4之间的链路以同样的方式进行比较,得出来的结果0/1为指定端口。

  • sw4的0/2和sw3的0/2, 不是根端口也不是指定端口,就是阻塞端口。

STP端口状态

在这里插入图片描述

端口状态迁移

在这里插入图片描述

  • 阻塞端口在20s内没收到bpdu,会变成监听状态,15s再收不到bpdu会变成学习状态,再15s收不到会变成转发状态。一共50s。

在这里插入图片描述

  • 在侦听状态完成了端口角色的选择。

在这里插入图片描述

  • 选择完端口角色之后,经过一个15s listening,和一个15秒的learning的过程,完成端口由阻塞变为转发的状态。

在这里插入图片描述

  • 直连链路发生故障时的情况 恢复时间为30s。

在这里插入图片描述

在这里插入图片描述

RSTP的改进

rstp 在stp的基础上的改进

改进一:拓扑变化立即通知

在这里插入图片描述

  • This concept is what makes up the core of the BackboneFast engine. The IEEE 802.1w committee decided to incorporate a similar mechanism into RSTP.

    When a bridge receives inferior information from its designated or root bridge, it immediately accepts it and replaces the one previously stored. 这里讲的有点不对。

  • Because Bridge C still knows the root is alive and well, it immediately sends a BPDU to Bridge B that contains information about the root bridge. As a result, Bridge B does not send its own BPDUs and accepts the port that leads to Bridge C as the new root port.

上边的一段描述有错误,但可以作为参考。

下边的讲解是对的

在这里插入图片描述

  1. 一旦A和C之间断开,C就会向B发送一个inferior BPDU ,说C是根。
  2. B收到这个消息后,会发送一个RLQ去验证老的根还存不存在了,RLQ发到A,A给回一个:我还存在。B收到验证后,会unblock阻塞端口,C和B之间交互bpdu,重新计算他们之间的端口角色。

更为详细的描述,参考文档 《Understanding STP and RSTP Convergence》 是由 www.INE.com 公司写的文档。

改进二:边缘端口立即变转发

边缘端口可以立即变转发。

链路类型 link type

point-to-point link: 全双工 rstp的快速特性才能生效

shared link: 半双工 rstp的快速特性无法生效

改进三:PA机制

STP是怎么做的

在这里插入图片描述

  • 上图:A和Root之间新加一条线。A和root之间的端口就会up,并进入listening状态。A和root之间能够bpdu通信。Root会立刻通过A传播它的bpdu,直到传播到页子为止。

在这里插入图片描述

  • 当D收到从root经过A传播下来的bpdu的时候,会立刻阻塞P1端口。
  • A和root之间的端口是要变转发的,对于stp来说,要等双倍的forwarddelay,也就是2*15=30s之后,才能变为转发状态。在这30s只能A B C 设备是不可达的。
rstp的PA机制改进了该过程

在这里插入图片描述

  • 也是同样A Root之间加入了一条新的链路,两边端口变为指定端口并阻塞。A一旦接收到Root发来的bpdu(会带有proposal标志),A会阻塞它的边缘端口之外的指定端口,这个过程叫sync。一旦阻塞完成,A会给Root发一个和Root发给A的一样的报文,并设置flag位为agreement,Root收到改agreement,Root的和A相连的端口立刻变为转发。A和Root之间的链路两边端口都变为转发状态。

在这里插入图片描述

  • A向下的两个端口是阻塞的,同样A向下发送proposal,B C阻塞了他们的非边缘指定端口后会向上发agreement,A收到agreement,会把A 和B,A-C之间的链路变为转发。同理直到D为止。
Proposal/Agreement Sequence

在这里插入图片描述

  1. 上游Root发送proposal
  2. A收到proposal去阻塞他的非边缘的指定端口,这个过程叫sync。
  3. A回agreement给Root

在这里插入图片描述

  1. Root和A之间的链路变为转发状态。
  • 如果收不到agreement,会像802.1d的stp一样,双倍的forward delay之后,root和A之间的链路才变为转发。

改进四:替换端口立刻变转发 UplinkFast

改进五: 拓扑通知过程

stp(802.1d)是怎么通知的?

在这里插入图片描述

  • 如上图,tcn先通知到root,root在发tc通知到每台设备。
rstp(802.1w)的改进

只有非边缘端口从非forwarding状态变为forwarding状态的时候引起拓扑改变。

  • It starts the TC While timer with a value equal to twice the hello-time for all its non-edge designated ports and its root port, if necessary.
  • It flushes the MAC addresses associated with all these ports.

在这里插入图片描述

  • It clears the MAC addresses learned on all its ports, except the one that receives the topology change.

  • It flushes the MAC addresses associated with all these ports.

[外链图片转存中…(img-vEg1G3w7-1612858008992)]

  • It clears the MAC addresses learned on all its ports, except the one that receives the topology change.

  • It starts the TC While timer and sends BPDUs with TC set on all its designated ports and root port (RSTP no longer uses the specifc TCN BPDU, unless a legacy bridge needs to be notifed).

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值