STP协议基础

STP协议用于消除局域网中的二层环路,通过选举根桥、阻塞接口形成无环路树形结构。在拓扑变化时,STP能自动调整,确保网络可靠性。关键概念包括桥ID、根桥选举、COST和RPC计算、BPDU报文交互。拓扑变化如根桥故障、链路故障会影响网络状态,需通过TCBPDU进行快速恢复。
摘要由CSDN通过智能技术生成

技术来源

  • 以太网交换网络中为了进行链路备份,提高网络可靠性,通常会使用冗余链路。但是使用冗余链路会在交换网络上产生环路,引发广播风暴以及MAC地址表不稳定等故障现象从而导致用户通信质量较差,甚至通信中断。为解决交换网络中的环路问题,提出了生成树协议STP(Spanning Tree Protocol) 。
  • 运行STP协议的设备通过彼此交互信息发现网络中的环路,并有选择的对某个接口进行阻塞,最终将环形网络结构修剪成无环路的树形网络结构,从而防止报文在环形网络中不断循环,避免设备由于重复接收相同的报文造成处理能力下降。

二层环路及危害

二层交换机网络的冗余性与环路

在这里插入图片描述
左图:在没有冗余的情况下,如果交换机发生故障,那就直接下层设备都无法进行上网,容易出现单点故障。
右图:虽然实现了冗余,但是很容易产生环路。现在下面的PC发送一个未知的单播包给接入层交换机,交换机在收到未知的数据包之后会进行泛洪转发,下面的交换机转发给上面的交换机,然后继续执行这个操作,因为这个数据包在二层根本就找不到,所以就会一致进行转发。

人为错误导致的二层环路

在这里插入图片描述
左图:由于技术人员的疏忽,把线缆错误的连接到了一起,导致二层环路的产生。
右图:两个交换机之间明明是要进行链路聚合,但是忘记进行做相应的操作,导致两台交换机之间直接成环路。

二层环路带来的问题

在这里插入图片描述
左图:当SW3收到一个未知的单播包之后,就会从两个其他的端口进行转发,因为一直找不到数据包的接收者,所以就会一直转发,成环。
右图:造成MAC地址漂移,因为一开始SW3从左边接口发出数据包之后,SW1从G0/0/1接口学习到这个地址,然后记录相应的对应表项。但是SW3也会从右边的端口进行转发,这样SW2收到之后又会转发给SW1的G0/0/2端口,SW1就会认为数据包中的MAC地址又跟G0/0/2是对应的,于是更换原来跟G0/0/1的对应关系,于是就产生了MAC地址漂移的现象。

STP生成树协议

在这里插入图片描述
在网络中部署了生成树之后,交换机之间会运行生成树协议报文的交互并进行无环拓扑计算,最终将网络中的某个(或者某些)接口进行阻塞(Block),从而打破环路。(没运行STP之前,会一直来回传递,运行STP之后,会主动阻塞端口,于是就不会产生环路了)

另外,交换机上运行的生成树协议会持续的监控网络的拓扑结构,当网络拓扑结构发生变化时,生成树能感知这些变化,并且自动做出调整,因此,生成树既能解决二层环路问题,也能够为网络冗余提供一种方案。(好比现在SW3和SW1之间的链路发生故障,此时SW3就无法与外界进行通信了,此时之前阻塞的链路就可以恢复,继续进行信息传递。)

STP概述

  • STP是一个用于局域网中消除环路的协议。
  • 运行该协议的设备通过彼此交互信息而发现网络中的环路,并对某些接口进行阻塞以消除环路。
  • STP在网络中运行后会持续监控网络的状态,当网络出现拓扑变更时,STP能够感知并且进行自动响应,从而使得网络状态适应新的拓扑结构,保证网络可靠性。
  • 由于局域网规模的不断增长,生成树协议已经成为了当前最重要的局域网协议之一。

STP基本概念

桥ID

在这里插入图片描述

  • IEEE 802.1D标准中规定BID由16位的桥优先级(Bridge Priority)与桥MAc地址构成。
  • 每一台运行STP的交换机都拥有一个唯一的BID。
  • BID桥优先级占据高16bit,其余的低48bit是桥MAC地址。
  • 在STP网络中,BID最小的设备会被选举为根桥。
  • 优先级默认为32768,并且以4096的倍数增加或者减少。
  • 总之就是优先级+MAC地址,越小越好

根桥

在这里插入图片描述

  • STP的主要作用就是在整个交换网络之中计算出一棵无环的“树”(SPT树)
  • 根桥就是一个STP交换网络之中的“树根”
  • STP开始工作之后,会在交换网络中选出一个根桥,作为 生成树进行拓扑计算的重要“参考点”,是STP计算得出无环拓扑的“树根”
  • STP网络之中,桥ID最小的设备会被选举为根桥
  • 在BID的比较过程之中,首先比较桥优先级,优先级的值越小则越优先,拥有最小优先级的交换机成为根桥,如果优先级相等,那么就继续比较MAC地址,MAC地址最小的交换机成为根桥。

COST

在这里插入图片描述

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

RPC(Root Path Cost)根路径开销

在这里插入图片描述

  • 在STP进行拓扑计算的过程中,一个非常重要的环节就是“丈量”交换机的某个接口道根桥的“成本”,即RPC。
  • 一台设备从某个接口到达根桥的RPC等于从根桥道该设备沿途所有入方向接口的COST累加。
  • 好比图中,SW3的G0/0/1接口到达根桥的RPC就等于图中接口1的COST加上接口2的COST。

PORT ID端口ID

在这里插入图片描述

  • 运行STP的交换机使用接口ID来标识每个接口,接口ID主要用于在特定场景之下选举指定接口。
  • 接口ID由两部分组成,高4bit是接口优先级,低12bit是接口编号。
  • 激活STP的接口会维护一个默认的接口优先级,在华为交换上,默认值为128。用户可以根据需要,通过命令修改该优先级。

BPDU桥协议数据单元

在这里插入图片描述

  • BPDU是STP能够正常进行工作的根本。里面包含了各种信息,好比谁是根桥,各种根路径开销等等。
  • BPDU是STP的协议报文。
  • STP交换机之间会交互BPDU报文,这些BPDU报文会携带着一些重要的信息,正是基于这些信息,STP才能够顺利工作。
  • BPDU分为两种类型:
    • 配置BPDU(Configration BPDU)
    • TCN BPDU (Topology Change Notification BPDU)
  • 配置BPDU是STP进行拓扑计算的关键;TCP BPDU只有在网络拓扑发生变更时才会被触发。

配置BPDU的报文格式:
在这里插入图片描述
红色框中的最为重要。

STP的计算过程(1):在交换网络中选举出一个根桥

在这里插入图片描述

  • STP在交换网络中开始工作之后,每个交换机都认为自己是根桥,然后向网络中发送配置BPDU。配置BPDU中包含交换机自己的桥ID。
  • 网络中拥有最小桥ID的交换机成为根桥。
  • 在一个连续的STP交换网络中只会存在一个根桥。
  • 根桥的角色是可以抢占的。
  • 为了确保交换网络的稳定,建议提前规划STP组网,并将规划为根桥的交换机的桥优先级设置为最小的0.

STP的计算过程(2):在每台非根桥上选举一个根接口

在这里插入图片描述

  • 每一台非根交换机都会在自己的接口中选举出一个接口。
  • 非根桥的交换机上有且只有一个根接口。
  • 当非根桥交换机有多个接口接入网络时,根接口时其收到最优配置BPDU的接口。
  • 可以形象的理解为,根接口是每台非跟桥上“朝向”根桥的接口。

STP的计算过程(3):在每条链路上选举出一个指定接口

在这里插入图片描述

  • 根接口选出来之后,非根桥会使用其在接口上收到的BPDU进行计算,然后将计算得到的配置BPDU与除了根接口之外的其它所有接口收到的配置BPDU进行比较:
    • 如果前者更优,则该接口成为指定接口;
    • 如果后者更优,则该接口为非指定接口;
  • 一般情况之下,根桥的所有接口都是指定接口

如果既不是根端口也不是指定端口,那么它就是阻塞接口。

STP接口状态

在这里插入图片描述

  • 禁用:就好比没有被STP激活的普通端口一样。
  • 阻塞:本状态不能发BPDU,但是可以接收BPDU,因为在其它链路出现故障之后,含有阻塞接口的链路可以成为备用链路。
  • 侦听:进行STP的计算,可以理解为内部进行选举。
  • 学习:学习业务数据,但是不进行转发。
  • 转发:根接口与指定接口进行转发。

STP接口状态迁移

在这里插入图片描述
其中侦听过程,也就是内部端口选举的过程需要15s,选举完成再进行业务数据的学习也要15s,最终才能进行转发状态。

拓扑变化——根桥故障

在这里插入图片描述

  1. SW1根桥设备发生故障(此时链路没有出现故障,与直连链路故障进行区分),停止发送BPDU报文。
  2. SW2等待MAX Age计时器(20s)超时,从而导致已经收到的BPDU报文失效,又因为收不到根桥发送的新的BPDU报文,从而得知上游出现了故障。
  3. 于是非根桥会相互发送配置BPDU,重新选举新的根桥。
  4. 经过重新选举之后,SW3的A端口经过两个Forward Delay(15s)时间恢复转发状态。
  5. 非根桥会在BPDU老化之后重新开始选举。
  6. 根桥故障的时间会导致50s的恢复时间,包括20s的老化时间+30秒的Forward Delay。
  7. 根桥每2s发送一次配置BPDU。

拓扑变化——直连链路故障

在这里插入图片描述
图中SW1与SW2之间通过两根线进行相连。

  1. 当SW1与SW2相连的上面一根线路发生断裂之后,线路断裂则SW2的端口接着进入DOWN状态。
  2. SW2就可以立即感知到链路状况并且切换到备用链路。
  3. 此过程就剩去了等待BPDU失效的20s,只需啊要2个Forward Delay即可,也就是进入到转发只需30s。

拓扑变化——非直连链路故障

在这里插入图片描述

  1. 现在SW1与SW2之间的互联链路突然断掉了,SW3也就收不到最优的BPDU了。
  2. 此时SW2会向SW3发送自身的BPDU,但是SW3收到之后会与自身记载的BPDU进行对比,发现不如自身的BPDU更优,于是不予理睬。
  3. 等待20s老化时间到了之后,SW3意识到出现故障,于是重新进行选举,多加两个Forward Delay30s,总共50s恢复故障。

拓扑变化导致MAC地址表错误

在这里插入图片描述

  1. 图中的MAC地址表正确的并且此时SW1与SW3之间的链路还没有断裂。
  2. 此时,SW1与SW3相连的链路发生故障,SW3立即感知,阻塞接口需要30s的时间进入到转发状态。
  3. 但是现在主机A发送给主机B的数据包就会仍然通过G0/0/3进行发送,这时就会出现故障。
  4. 要等待MAC地址表老化要300s,时间非常长,那么,有什么办法可以加速正确的恢复转发呢?

TC BPDU(Topology Change BPDU)

在这里插入图片描述
简言之就是在拓扑发生变化的时候进行清理MAC地址表的。

  1. TCN:用于向根桥通告有故障。
  2. TCA:回复接收到了TCA报文。
  3. TCN:向根桥发送TCN报文。
  4. TC:这里有一个隐形的确认,只要给你发送TC默认意思是已经收到了TCN报文,TC报文用于清除MAC地址表。
  5. TC:传送给SW3用于清除相关的MAC地址表。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小刘不忙!

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值