STP(生成树)基础

STP(生成树) 基础

一、STP产生的背景

       对于任何一个商用的网络来说,冗余性都是一个必须考虑的问题。为了避免某个关键设备或某段链路在生产环境中出现故障,导致业务不能正常工作,为了保证数据传输的健壮性和网络的可靠性,需要对关键设备和链路进行备份,以便在设备和链路出现故障时业务依然可以正常的工作。
       但是冗余的设备和链路也带来了二层环路(layer 2 Loop)。二层环路会造成广播风暴、MAC地址表抖动、多帧复制的问题😭。
       那有没有一种方法即能保证冗余的同时又不会有环路的危害呢?因此STP(Spanning Tree Protocol,生成树协议)应用而生。🧐

二、STP是什么?

STP(Spanning Tree Protocol,生成树协议),当然是个协议啦😝,不过STP是早期的生成树协议,它在IEEE 802.1D中定义。

三、STP都干了啥?

       简单的说,当网络中部署生成树(STP树)之后,交换机之间便会开始交互相关协议报文(BPDU),并在网络中进行一系列的运算,经计算最终得到一个无环的网络拓扑。当网络中存在环路时,生成树会将网络中的一个或多个接口进行阻塞(Block),从而打破二层环路。
       在此之后,生成树依然会监视网络的拓扑状况,当网络拓扑发生变更时,生成树能够及时感知,并且动态地调整被阻塞接口,这个过程无需人工干预,自动完成。
       如下图所示(已部署STP),当LSW1和LSW2之间的链路发生故障时,生成树能够感知到变化的发生,并将原先阻塞的接口GE 0/0/3切换到转发状态,这样一来,LSW3的上行流量又可以从右侧的链路进行转发,因此生成树不仅可以在网络中解决二层环路的问题,还可以保证网络的冗余性。😎
在这里插入图片描述

总结:

  • 使冗余端口置于"阻塞状态"
  • 网络中的计算机在通信时,只有一条链路生效
  • 当链路出现故障时,将处于"阻塞状态"的端口重新打开,确保网络连接稳定可靠

四、STP 基本概念

1.桥ID/网桥ID(Bridge Identification)

       早期的交换机被称为"桥(Bridge)“或"网桥”,桥ID就是交换机的身份标识,每一台交换机都拥有唯一的桥ID。
       桥ID一共 8byte,包含 16bit 的桥优先级(Bridge Priority)和 48bit 的桥MAC地址,桥优先级占据桥ID的高16bit,MAC地址占据其余的48bit。

在这里插入图片描述

2.根桥(Root Bridge)

       STP的主要作用之一是在整个交换网络中计算出一棵无环的"树"(STP树),这颗树一形成,网络中的无环拓扑也就形成了。对于这棵树而言,树根是非常重要的,树根明确后,"树枝"才能沿着网络拓扑进行延展。STP树的树根就是根桥(Root Bridge)。
       STP的一系列计算均以根桥为参考点。当STP开始工作时,第一件事就是选举根桥。在一个交换网络中,根桥具有唯一性。

3.接口ID(Port Identification)

       运行STP的交换机的接口标识就是接口ID(G0/0/1),接口ID主要用于在特定场景下选举指定接口。
       接口ID长度为16bit,由两部分组成,高4bit是接口优先级,低12bit是接口编号。优先级取值范围0~240,且必须时16的倍数。
在这里插入图片描述

4. BPDU是什么?

       BPDU(Bridge Protocol Data Unit,网桥协议数据单元),STP正常工作的基本前提就是BPDU报文的正常交互。

4.1 BPDU分类

BPDU分为配置BPDU(Configuration BPDU)及TCN BPDU(Topology Change Notification BPDU)。

4.2 配置BPDU

       配置BPDU用于STP进行拓扑计算。交换网络初始化过程中,每台交换机都会从自己激活了的STP接口向外发送配置BPDU,当STP收敛完成后只有根桥才会周期性的发送配置BPDU(默认2s发一次),而非根桥会在自己的根接口上接收上游发送过来的配置BPDU,并立即被触发而产生自己的配置BPDU,然后从指定接口发送出去。

在这里插入图片描述在这里插入图片描述

4.3 TCN BPDU

       TCN BPDU的格式只有表10-2 的"协议ID",“协议版本ID”,"BPDU类型"三个字段,TCN BPDU用于在网络拓扑发生变化时向根桥通知变化的发生。

4.3.1 STP 网络拓扑发生变更

       对于STP而言,当网络拓扑发生变更时,远离变更点的交换机无法直接感知到变化的发生,此时它们的MAC地址表项还是老旧的,如果依然通过这些老旧的MAC地址表项来指导数据转发,便有可能出现问题。因此,STP需要一种机制,用于在网络种发生拓扑变更时促使全网的交换机尽快老化自己的MAC地址表项,以便适应新的网络拓扑。当网络拓扑稳定时,网络中只会出现配置BPDU,当拓扑发生变更时,STP会使用TCN BPDU,以及两种特殊的BPDU(TCA、TC)。
       
TCN BPDU:用于在网络发生变化时向根桥通知变化的发生
"标志"字段中TCA 比特位置位为1的配置BPDU:给下游的交换机予以回应,确认收到下游发来的TCN BPDU,然后继续向上游发送给TCN BPDU,这个过程持续到根桥收到 TCN BPDU
"标志"字段中TC 比特位,置位为1的配置BPDU: 根桥意识到拓扑变化的发生,现将变化通知到全网,让所有交换机尽快更新自己的CAM表

在这里插入图片描述

5. 开销(Cost)与根路径开销(Root Path Cost,RPC)

       每一个激活了STP的接口都维护着一个Cost值,接口的Cost值主要用于计算RPC(到达根的开销),接口默认的Cost除了与其速率、工作模式有关,还与交换机使用的STP Cost计算方法有关。
如下图是华为的交换产品支持的3种计算方法。在这里插入图片描述

6. STP的端口状态

  • 阻塞状态(Blocking)
    不收发任何报文
  • 阻塞状态(Blocking)
    接收BPDU
  • 监听状态(Listening)
    接收和发送BPDU
  • 监听状态(Listening)
    接收发送BPDU,学习MAC地址
  • 转发状态(Forwarding)
    发送和接收数据,接收发送BPDU,学习MAC地址

四、STP 选举过程(越小越优先)

1.选举一个根桥(Root Bridge,RB)

桥ID最小的交换机当选为根桥:

  • 比较桥优先级
  • 比较桥MAC地址

2.在非根桥(Non-Root Bridge)上选举一个根接口(Root Port,RP)

选举依据:

  • 根路径成本/开销最小
  • 发送网桥ID最小
  • 发送端口ID最小
  • 本地端口ID最小

补充:

    在一个交换网络中,除了根桥之外的其他交换机都是非根桥。
    STP将为每个非根桥都选举一个根接口,根接口是非根桥上所有接口中收到最优BPDU的接口。根接口同时也是交换机在STP树上"朝向"根桥的接口。

3. 选举指定接口(Designated Port,DP)

选举依据:

  • 根路径成本最小
  • 所在网桥ID最小
  • 端口ID最小

补充:

       STP在每个网段中选举一个指定接口,指定接口是该网段内到达根桥的最优接口。此外,指定接口还负责向该网段发送BPDU。
       指定接口的选举过程是非根桥用自己计算出的BPDU跟别的设备发来的BPDU进行比较。若自己计算出的BPDU更优,则该接口成为指定接口,否则为非指定接口。

总结:

       对于非根桥而言,其所有接口中收到最优BPDU的接口将成为该设备的根接口。随后该非根桥使用自己收到的最优BPDU,为本设备的其他接口各计算一个BPDU,然后使用计算出的BPDU与接口上所维护的BPDU(接口自身也会从网络中收到BPDU,并将其保存起来) 进行比较,如果前者更优,那么该接口将成为指定接口,并且其所保存的BPDU也被前者替代,交换机将替代后的BPDU从该指定接口转发给下游的交换机;如果后者更优,那么该接口将成为非指定接口(非指定接口指的既不是根接口,也不是指定接口的接口)。

4. 阻塞非指定接口,打破二层环路

       经STP计算后,如果交换机的某个(或某些)接口既不是根接口又不是指定接口,那我们将这种接口称为非指定接口。
       非指定接口将会被STP阻塞,以打破网络中的二层环路,被阻塞的接口既不会接收也不会转发业务数据,也不会发送BPDU,只会持续侦听BPDU,以便感知网络拓扑的变更情况。

结语😁

关于STP(生成树)基础知识就说到这里 ,由于作者水平有限,请大家多多指教,互相交流,一起学习,如果有错误或问题欢迎评论,指正,谢谢😊

  • 32
    点赞
  • 122
    收藏
    觉得还不错? 一键收藏
  • 4
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值