STP(生成树协议)

STP(生成树协议)

STP出现的背景:

如果同学们仔细观察一棵树,会发现一颗树有 ,树根、树干、树杈、树枝、树叶,水分通过根,源源不断的送到主干,树杈然后到达叶子,这是因为树的物理结构是发散的,没有树干、树杈、树枝的物理交织,如果咋们的网络结构像一颗树一样自然不会发生环路,所有我们的STP就像树一样在二层网络,用一种逻辑的方法将物理的环路斩断。

STP(生成树协议)

为什么二层交换会产生物理环路:

交换机之间为了冗余,带宽提升,或者错误的连接难免的产生一个封闭的物理环路,而以太网的转发机制又决定了不能有物理环路,一有环路,那些发给所有主机的Broadcast就会肆无忌惮的在环路上永不停的绕圈,山无棱,天地合,乃敢与环路绝!这些Frame永远无法到达目的地。

STP(生成树协议)

version 0 为STP 2为RSTP

STP的基本概念:

  • BPDU(桥协议数据单元)

    包含了自己桥ID,路径开销,和端口ID等。

    01:80:C2:00:00:00 bpdu发送的组播MAC地址

  • 一个根桥

    树形的网络结构必须有树根,于是STP引入了根桥(Root Bridge)概念。

    对于一个STP的网络,根桥在全网中只有一个,它是整个网络的逻辑中心,但不一定是物理中心

  • 两种度量

    (1)ID 又分为:BID(Bridge ID),和PID(Port ID)

    1. BID:桥ID

    ​ IEEE 802.1D标准中规定 BID由16位的桥优先级(32768)+桥MAC地址构成。BID桥优先级占据高16位,其余48位是MAC地址。

    1. PID:端口ID

      PID由两部分构成,高4位的优先级(128),低12位的端口号。

      ????:高位是从左右往右,低位相反

    (2)路径开销

    ​ 在一个STP网络中,某端口到根桥累计的路径开销

  • 三要素选举

总体来说有三个要素:根桥、根端口(RP)、指定端口(DP)。

STP(生成树协议)

  1. 根桥RB(Root Bridge)

    根桥就是网桥ID最小的桥,通过交互配置BPDU协议报文选举出最小的BID

  2. 根端口 RP(Root port)

    去往根桥路径开销最小的端口,负责向根桥方向转发数据,根桥上没有根端口。

  3. 指定端口 DP(Designated Port)

    根桥上所有的端口都是指定端口。

    1. 比较到根桥的COST值,小的成为DP
    2. 比较桥ID,小的成为DP
    3. 比较端口ID,小的成为DP
    4. 剩下的端口为AP为阻塞端口
  • 四个比较原则

    配置BPDU中携带的主要信息:

    字段内容: 简要说明:
    根桥ID 每个STP网络有且仅有一个根
    累计根路径开销 转发配置BPDU 端口到根桥的距离
    BID BPDU发送桥的ID
    PID 网桥发送BPDU的端口
    ????说明:在STP计算过程中,都遵循数值越小越好

    1.最小BID:用来选举根桥

    2.最小路径开销:用来在非根桥上选举根端口

    3.最小发送这BID:如果开销一样,桥ID小的获胜32768+MAC

    4.最小PID:比较128+端口号,值小的成为DP,值大的成为AP

  • 五种端口状态

    端口状态 目的 说明
    Disabled 端口不处理BPDU,不转发数据流量 端口状态为DOWN
    Listening 确定端口角色,选举出根桥,RP,DP 过度状态
    Learning 接收流量,学习MAC地址表,但不转发 增加Learning状态防止临时环路
    Fowarding 即转发用户流量也处理BPDU 只有RP和DP才能进入Forwarding
    Biocking 端口接收BPDU,不转发用户流量 阻塞端口最终状态

STP(生成树协议)

影响端口状态和端口收敛参数

  • Hello Time (2秒)

    运行STP协议设备发送配置BPDU的时间间隔,用于检测链路是否故障。

  • Forward Delay(15秒)

    设备状态迁移时间。当拓扑发生变化后,重新生成树计算,重新计算得到的时间无法立刻传遍整个网络,如果立即转发数据会造成临时环路,为此STP采用了状态迁移机制,新选出来的RP和DP要经过2倍Forward Delay 延时后才能进入转发状态。

    ????说明:

    Listening进入到Learning需要15秒时间,Learning进入Fowarding时间需要15秒

  • Max Age(20秒)

    端口BPDU报文老化时间,可在根桥上修改。

STP报文格式

前面介绍了 桥ID,路径开销,和端口ID等信息,这些都是通过BPDU协议报文传输

  • 配置BPDU是一种心跳报文,只要端口能使能STP,则配置BPDU就会按照Hello Time定时器发送

    配置BPDU在以下三种情况产生:

    1. 端口使能STP。
    2. 当RP接收到配置BPDU,跟端口会在设备向每个DP复制一份BPDU发出
    3. 当DP收到比自己差的BPDU时,会立刻向下游设备发送自己的BPDU
  • TCN BPDU是在设备检测网络拓扑发生变化时发出

    STP(生成树协议)

拓扑变更:

当链路拓扑发生变化时,会从自己设备RP向上游发送TCN BPDU,上游非根桥交换回复 TCA置为确认BPDU ,同时向上继续传递TCN BPDU,根桥收到TCN BPDU后,向下游发送TC置为的配置BPDU,所有得到TC置为的BPDU后,会将自己MAC地址表300秒老化成15秒,重新学习MAC地址表

阻塞端口的开启,如果本地交换直连链路DOWN掉,交换机立刻开启阻塞端口将状态变为15s的listening,15s的learning,最后forwarding,如果是非直连链路down掉,阻塞接口需要等待20s的BPDI超时时间,所以阻塞端口再开启需要30-50s。

STP的不足之处

STP虽然能够解决环路,但是由于网络拓扑收敛慢,影响了客户质量,如果有新接入的主机会发送TCN BPDU导致所有的设备重新进行生成树计算