STP/RSTP/MSTP协议原理

什么是STP?

STP(Spanning Tree Protocol,生成树协议)是一种二层(数据链路层)管理协议,它通过有选择性地阻塞网络冗余链路来达到消除网络二层环路的目的,同时具备链路的备份功能。

最初被广泛应用的是IEEE 802.1D STP,随后以它为基础产生了IEEE 802.1w RSTP (Rapid Spanning Tree Protocol,快速生成树协议)和IEEE 802.1s MSTP(Multiple Spanning Tree Protocol,多生成树协议)。

什么是网路环路?

当网络线路中存在环时,由于交换机对广播帧、组播帧、未知单播帧等特殊帧的泛洪处理,就会形成网络环路。

网络环路的危害?

1.形成广播风暴:

假如在右图PC机中执行ping 1.1.1.1 (实际网路中并没有该设备),交换机就会对该单播帧进行洪处理(每台设备都会),该单播帧又会回到A交换机,继续执行上述的循环,导致网络中一直泛洪,形成广播风暴,消耗网络中的带宽资源和计算机处理资源,导致网络瘫痪。

2.mac地址漂移:

PC执行ping 1.1.1.1,此时A会记录PC的mac地址对应在端口0,但是当泛洪后,该单播帧会从C和B(绕圈)再次发送给A,A会将PC机的mac地址对应端口改为2或1,网络中一直循环,导致设备的mac地址表一直发生改变(不是老化处理),形成mac地址漂移。

怎么解决网络环路?

操作ttl值,以太网交换机全部更换?

人为控制物理冗余?

还是使用技术动态阻塞端口防环?

一、STP

STP协议可以动态阻塞某个接口,使其处于“备份”状态,阻止网络形成环路;当其他接口发生故障时,自动顶替,恢复网络。

相关术语:

1.桥(Bridge):早期的交换机一般只有两个转发端口,所以那时候的交换机一般会被称为网桥,或简称桥。桥这个术语一直沿用至今,但是已经泛指任意多端口的交换机了。

2.桥的mac地址:桥(交换机)有多个转发端口,每个端口都有一个mac地址,通常,将端口编号小的mac地址作为桥的mac地址。

3.桥ID:桥ID由两部分组成,前面两个字节是桥优先级,可以人为设定(只能是4096的倍数,默认是32768),后面的六个字节是桥的mac地址。

4.接口ID(PID):运行STP的交换机使用接口ID来标识每个接口,接口ID主要用于在特定场景下选举指定接口。 接口ID由两部分构成的,高4 bit是接口优先级,低12 bit是接口编号。 激活STP的接口会维护一个缺省的接口优先级,在华为交换机上,该值为128。用户可以根据实际需要,通过命令修改该优先级。 端口优先级取值范围是0到240,步长为16,即取值必须为16的整数倍 。

5.BPDU(Bridge Protocol Data Unit) 在网络中运行STP协议时,设备之间交互的携带“个人信息特征”的数据单元(桥协议数据单元)。

6.Cost:

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

7.根路径开销RPC(Root Path Cost):

在STP的拓扑计算过程中,一个非常重要的环节就是“丈量”交换机某个接口到根桥的“成本”,也即RPC。 一台设备从某个接口到达根桥的RPC等于从根桥到该设备沿途所有入方向接口的Cost累加(计算入方向的接口,上车买票)。

STP树的生成:

STP的主要作用之一是在整个交换网络中计算出一棵无环的“树”(STP树)。

STP树主要通过比较4个参数进行角色选举: 根桥ID、根路径开销、网桥ID和端口ID。

1.选举根桥:

桥ID最小的设备(先比优先级,如果一样就比较mac地址)会被选举为根桥,根桥是一个STP交换网络中的“树根”。

根桥选举后,其他设备就不能单独交互BPDU。

根桥设备下的端口都变成了指定端口(Designated Port,DP)(当某个网段有两个或者两个以上的路径通往根桥时,需要比较RPC,BID,PID等,这种情况比较少)

2.在每台非根设备选举“距离”根桥最近的接口,即根接口(Root Port,RP)

当非根桥交换机有多个接口接入网络中时,根接口是其收到最优配置BPDU的接口。

STP按照如下顺序选择最优的配置BPDU

  1. 最小的根桥ID
  2. 最小的RPC
  3. 最小的网桥ID
  4. 最小的接口ID

一台非根设备只能有一个RP口。 

3.在每条链路中选举一个指定端口:
 根接口选举出来后,非根桥会使用其在该接口上收到的最优BPDU进行计算,然后将计算得到的配置BPDU与除了根接口之外的其他所有接口所收到的配置BPDU进行比较:

如果前者更优,则该接口为指定接口;

如果后者更优,则该接口为非指定接口。

4.确定阻塞接口:

一台交换机上,既不是根接口,又不是指定接口的接口被称为非指定接口,非指定接口就会被阻塞。

选举示例:

上图中SW3的1口将会被阻塞(在实际网络中,计算较为复杂)。

1.确定根桥,假设图中为SW1(其桥ID假设为1,最小)

2.确定非设备的RP口:

  • SW2的1口到达根桥开销为10,2口到达根桥为40,1口为RP口。
  • SW3的2口到达根桥开销为20,1口到达根桥为50,2口为RP口。

3.确定非设备的DP口:

交换机2的2口到达根设备的开销为50,交换机3的1口到达设备的销为40,交换机3的1口将会被确定为RP口。

4.确定阻塞端口:

交换机2的2口将会被阻塞。

BPDU报文格式

STP协议帧采用IEEE802.3封装格式,其数据载荷被称为BPDU。BPDU有两种类型:Configuration BPDU(其又可以分为三种,普通、TCA,TC置位),TCN(Topology Change Notification)BPDU

1.Configuration BPDU

字节字段意义

2

PID

协议ID 对于STP而言,该字段的值总为0

1

PVI

协议版本标识符,STP为0x00,RSTP为0x02,MSTP为0x03

1

BPDU Type

指示本BPDU的类型,若值为0x00,则表示本报文为配置BPDU;若值为0x80,则为TCN BPDU

1

Flags

标志,STP只使用了该字段的最高及最低两个比特位,最低位是TC(Topology Change,拓扑变更)标志,最高位是TCA(Topology Change Acknowledgment,拓扑变更确认)标志

8

Root ID

根网桥的桥ID

4

RPC

路径开销到达根桥的STP Cost

8

Bridge ID

BPDU发送桥的ID

2

Port ID

BPDU发送网桥的接口ID(优先级+接口号)

2

Message

Age

消息寿命从根网桥发出BPDU之后的秒数,每经过一个网桥都减1,所以它本质上是到达根桥的跳数

2

Max Age

最大寿命当一段时间未收到任何BPDU,生存期到达最大寿命时,网桥认为该接口连接的链路发生故障。默认20s

2

Hello Time

根网桥连续发送的BPDU之间的时间间隔默认2s

2

Forward Delay

转发延迟侦听和学习状态所停留的时间间隔默认15s

2.TCN BPDU:

只有上述中协议中格式中前三个字段。

作用是当网络发生故障时,向上游设备报告,此时BPDU Type的值变为0x80

3.STP端口的五种状态:

  • stp每2s发一次(hello time)
  • DP,RP最终都会进入转发状态。
  • 当端口进入侦听状态和学习状态,会各自停留15s,防止临时环路。
  • 当网络发生拓扑变化需要端口进行角色变换时,端口切换角色速度很快,但是经过上述的状态转换需要时间。

拓扑变化:

1.根桥故障:

  1. SW1根桥发生故障,停止发送BPDU报文。
  2. SW2等待Max Age计时器(20 s)超时,从而导致已经收到的BPDU报文失效,又接收不到根桥发送的新的BPDU报文,从而得知上游出现故障。
  3. 非根桥会互相发送配置BPDU,重新选举新的根桥。
  4. 经过重新选举后,SW3的阻塞端口(现在也可以叫AR口)经过两个Forward Delay(总共30s)时间恢复转发状态。
  5. 非根桥会在BPDU老化之后开始根桥的重新选举。
  6. 根桥故障会导致50s(Max age20+侦听和转发的各15s)左右的恢复时间。

2.直连故障:

  1. 当交换机SW2网络稳定时检测到根端口的链路发生故障,则其备用端口会经过两倍的Forward Delay(15s)时间进入用户流量转发状态。
  2. SW2检测到直连链路物理故障后,会将预备端口转换为根端口。 直连链路故障,备用端口会经过30s后恢复转发状态。

3.非直连故障:

非直连链路故障后,SW3的备用端口恢复到转发状态,非直连故障会导致50s左右的恢复时间。

拓扑变化引起mac地址表发生变化:

  1. 当网络中网络发生变化时,生成树重新收敛,mac地址就会发生错误,如果等mac地址老化的话就需要等300s,为了解决这个问题,就需要发送TCN BPDU
  2. 当下游设备发现网络发生故障时,就会逐级向上游设备发送TCN BPDU,上游设备收到后就会向下发送TCA置位的BPDU,确认网络发生拓扑变化,直到情况上报到根桥。
  3. 根桥收到后会在15s内连续向所有设备发送TC置位的BPDU,通知所有设备将mac地址表老化时间改为15s,重新学习mac地址。

……

二、RSTP

RSTP ,用于在计算机网络中防止环路并确保数据包在网络中高效传输。

等等,RSTP?

是的,你没听错,现在不用STP了。……………………(大冤种)

为什么,因为它实在是太慢了!!!

一个网络拓扑的变化,30s、50s的等待时间,你受得了?

于是IEEE在2001年发布了802.1W标准,定义了RSTP(Rapid Spanning Tree Protocol,快速生成树协议),RSTP在STP的基础上进行了改进,可实现网络拓扑的快速收敛。

STP的不足:

STP虽然能够解决环路问题,但是由于网络拓扑收敛慢,影响了用户通信质量。

  1. 如果网络中的拓扑结构频繁变化,网络也会随之频繁失去连通性,从而导致用户通信频繁中断,这是用户无法忍受的。
  2. STP没有细致区分端口状态和端口角色,不利于初学者学习及部署(就是难呗)。 从用户角度来讲,Listening、Learning和Blocking状态并没有区别,都同样不转发用户流量。 从使用和配置角度来讲,端口之间最本质的区别并不在于端口状态,而是在于端口扮演的角色就是啰嗦呗)。
  3. 算法是被动的算法,依赖定时器等待的方式判断拓扑变化,收敛速度慢。
  4. 算法要求在稳定的拓扑中,根桥主动发出配置BPDU报文,而其他设备再进行处理,最终传遍整个STP网络。(高度集权

RSTP对STP的改进:

  1. 通过端口角色的增补,简化了生成树协议的理解及部署;
  2. 端口状态的重新划分;
  3. 配置BPDU格式的改变,充分利用了STP协议报文中的Flag字段,明确了端口角色;
  4. 配置BPDU的处理发生变化;
  5. 快速收敛; 增加保护功能。

1.端口角色的改进:

阻塞口:(STP阻塞口只有AP一种

  • AP口:收到其他桥发来的BPDU RP 的备份
  • BP口,收到自己桥发来的BPDU DP的备份

2.端口状态:

  • Discarding状态:不转发用户流量也不学习MAC地址;
  • Learning状态:不转发用户流量但是学习MAC地址;
  • Forwarding状:既转发用户流量又学习MAC地址。

3.BPDU的变化:

flags位的变化(STP只开发了TCA和TC位),有大用!!!

4.对BPDU 的处理:

  • 所有的交换机在稳定后都可以自主的转发BPDU
  • 超时时间(非直连故障的老化时间,STP为20s)变为公式计算(不依赖计时器),标准是(hello time)*3,华为设备是hello time *3*系数(默认系数是3)

           划重点hello time 可以根据链路质量的调整(默认时间是2秒)!

           

5.次等BPDU 的处理:(STP只有指定端口可以处理次优BPDU

  1. 假如图中链路发生故障,SW2会向外发送BPDU(“造反”)。
  2. 当SW3收到后,由于自己缓存的是根桥的更优的BPDU,SW3会直接向SW2发送BPDU(你个二傻子,造反,你不够格
  3. SW3的AP口会转换为DP口

专业术语解释为:

当一个端口收到上游的指定桥发来的RST BPDU报文时,该端口会将自身缓存的RST BPDU与收到的RST BPDU进行比较。 如果该端口缓存的RST BPDU优于收到的RST BPDU,那么该端口会直接丢弃收到的RST BPDU,立即回应自身缓存的RST BPDU,从而加快收敛速度。

5.快速收敛机制:
1.根端口快速切换

如果网络中一个根端口失效,那么网络中最优的Alternate端口(AP)将成为根端口,进入Forwarding状态。因为通过这个Alternate端口连接的网段上必然有个指定端口可以通往根桥。

新术语EP

在RSTP里面,如果某一个端口位于整个网络的边缘,即不再与其他交换设备连接,而是直接与终端设备直连,这种端口可以设置为边缘端口(EP)。

边缘端口不参与RSTP计算,可以由Discarding直接进入Forwarding状态。

EP口的特权: 

  • EP口的mac地址不删(网络发生拓扑变化需要生成树重新收敛时)
  • EP口不会被阻塞
  • EP口up后直接进入转发不需要等30s 
  • EP进入forwarding状态,不算拓扑变化,不会触发TC机制(改mac地址)
  • 收到配置BPDU,丧失所有特权

2.P/A协商机制:

只会发生在DP后和RP口之间。

新增链路之后,从根桥的DP口开始,会和下层相邻设备进行P/A协商。(一层一层的来)

DP口发送P置位的协商,RP口会回A,将设备的DP口阻塞,不用等30s。

专业术语解释为:

  1. 根桥SW1和SW2之间新添加了一条链路。 在当前状态下,SW2的下游端口分别是Alternate端口、指定端口(处于Forwarding状态)和边缘端口。
  2. SW1和SW2之间的两个端口都先成为指定端口,发送RST BPDU。
  3. SW2与SW1互联的端口收到更优的RST BPDU后,马上意识到自己将成为根端口,而不是指定端口,停止发送RST BPDU。 SW1的指定端口进入Discarding状态,发送Proposal位置位的RST BPSU。
  4. SW2收到根桥发送来的Proposal位置位的的RST BPDU,开始将自己的所有端口进入同步状态。 各端口同步后,下游端口(除边缘端口)均进入Discarding状态,上游根端口进入Forwarding状态并向SW1返回Agreement位置位的回应RST BPDU。
  5. SW1收到的Agreement位置位的RST BPDU是对刚刚自己发出的Proposal的回应,于是指定端口马上进入Forwarding状态。
  6. 下游设备继续执行P/A协商过程。

6.拓扑变更机制:

复习:STP判断变更的标准是端口up/down的转换。

在RSTP中检测拓扑是否发生变化只有一个标准:一个非边缘端口迁移到Forwarding状态。

一旦检测到拓扑发生变化,将进行如下处理:

  1. 为本交换设备(不需要上报给根桥了)的所有非边缘指定端口和根端口启动一个TC While Timer,该计时器值是Hello Time的两倍。
  2. 在这个时间内,清空所有端口上学习到的MAC地址。
  3. 同时,由非边缘指定端口和根端口向外发送RST BPDU,其中TC置位。
  4. 一旦TC While Timer超时,则停止发送RST BPDU。
  5. 其他交换设备接收到RST BPDU后,清空所有端口(除了收到RST BPDU的端口和边缘端口)学习到MAC地址,然后也为自己所有的非边缘指定端口和根端口启动TC While Timer,重复上述过程。 如此,网络中就会产生RST BPDU的泛洪。

7.BPDU保护:

对于EP口:
正常情况下,边缘端口不会收到RST BPDU。

如果有人伪造RST BPDU恶意攻击交换设备,当边缘端口接收到RST BPDU时,交换设备会自动将边缘端口设置为非边缘端口,并重新进行生成树计算,从而引起网络震荡。 交换设备上启动了BPDU保护功能后,如果边缘端口收到RST BPDU,边缘端口将被error-down,但是边缘端口属性不变,同时通知网管系统。(需要人为恢复

对于DP口:

对于启用根保护功能的指定端口,其端口角色只能保持为指定端口。

一旦启用根保护功能的指定端口收到优先级更高的RST BPDU时,端口将进入Discarding状态,不再转发报文。经过一段时间(通常为两倍的Forward Delay),如果端口一直没有再收到优先级较高的RST BPDU(如果还收到就再次进入Discarding状态),端口会自动恢复到正常的Forwarding状态。 根保护功能确保了根桥的角色不会因为一些网络问题而改变。

环路保护

在启动了环路保护功能后,如果根端口或Alternate端口长时间收不到来自上游设备的BPDU报文时,则向网管发出通知信息(此时根端口会进入Discarding状态,角色切换为指定端口),而Alternate端口则会一直保持在Discarding状态(角色也会切换为指定端口),不转发报文,从而不会在网络中形成环路。 直到链路不再拥塞或单向链路故障恢复,端口重新收到BPDU报文进行协商,并恢复到链路拥塞或者单向链路故障前的角色和状态。

防TC攻击:

启用防TC-BPDU报文攻击功能后,在单位时间内,交换设备处理TC BPDU报文的次数可配置。 如果在单位时间内,交换设备在收到TC BPDU报文数量大于配置的阈值,那么设备只会处理阈值指定的次数。 对于其他超出阈值的TC BPDU报文,定时器到期后设备只对其统一处理一次。这样可以避免频繁的删除MAC地址表项,从而达到保护设备的目的。

嘿嘿,RSTP学完了!!!

但是………………………………………………………

RTSP也不用…………………………………………

你不早说!!!!!!!!!!

先来看一个图:

假如上述三条线都是10G的线路,每条1000,AP口被阻塞,这条线路在不发生网络动荡的时候会一直处于闲置的状态,花1000买来摆设????

会不会有1+1=2,10G+10G=20G的可能?(搞一搞就知道了)

专业术语来说就是流量负载分担的问题。

三、MSTP 

如果网络中只有一个生成树,假设SW3与SW2相连的端口为阻塞端口,则VLAN20和VLAN30的数据都只能通过一条链路到汇聚交换机,不能实现流量负载分担,造成浪费。

MSTP是IEEE 802.1S中定义的生成树协议,MSTP兼容STP和RSTP(前面不是白学的),既可以快速收敛,又提供了数据转发的多个冗余路径,在数据转发过程中实现VLAN数据的负载均衡

MSTP可以将一个或多个VLAN映射到一个Instance(实例),再基于Instance计算生成树,映射到同一个Instance的VLAN共享同一棵生成树。

废话少说,直接上图!

交换机接电后默认开启实例0!

这样不同的vlan就可以走不同的链路,实现流量负载分担!(1000没白花)

以下为理论知识!

多域

MSTP网络层次: MSTP把一个交换网络划分成多个域,每个域内形成多棵生成树,生成树之间彼此独立。 MST Region(Multiple Spanning Tree Region,多生成树域),也可简称MST域: 由交换网络中的多台交换设备以及它们之间的网段所构成。 一个局域网可以存在多个MST域,各MST域之间在物理上直接或间接相连。用户可以通过MSTP配置命令把多台交换设备划分在同一个MST域内。 MSTP网络中包含1个或多个MST域,每个MST域中包含一个或多个多生成树实例。

MSTI(Multiple Spanning Tree Instance,多生成树实例

一个MST域内可以生成多棵生成树,每棵生成树都称为一个MSTI。 MSTI使用Instance ID标识,华为设备取值为0~4094。 VLAN映射表 MST域的属性,描述了VLAN和MSTI之间的映射关系。 如图所示的MST Region 4的VLAN映射有: VLAN1映射到MSTI 1 VLAN2映射到MSTI 2 其余VLAN映射到MSTI 3

CST(Common Spanning Tree,公共生成树) 是连接交换网络内所有MST域的一棵生成树。 如果把每个MST域看作是一个节点,CST就是这些节点通过生成树协议计算生成的一棵生成树。 如图深蓝色粗线条连接各个域构成CST。

IST(Internal Spanning Tree,内部生成树) 是各MST域内的一棵生成树。 IST是一个特殊的MSTI,MSTI的Instance ID为0。 如图所示的MST Region 4,黑色细线条在域中连接该域的所有交换设备构成IST。

CIST(Common and Internal Spanning Tree,公共和内部生成树) 通过生成树协议计算生成的,连接一个交换网络内所有交换设备的单生成树。 如图所示,所有MST域的IST加上CST就构成一棵完整的生成树,即CIST。

SST(Single Spanning Tree,单生成树) 运行生成树协议的交换设备只能属于一个生成树。 MST域中只有一个交换设备,这个交换设备构成单生成树。 如图所示的MST Region 3,该域中的唯一的交换设备构成SST。

总根(CIST Root) 是CIST的根桥,如图中SW1。 域根(Regional Root) 分为IST域根和MSTI域根。 IST域根:距离总根最近的交换设备,如图中SW2、SW3、SW4。(多域时,与优先级无关。单域时比优先级和MAC地址) MSTI域根是每个多生成树实例的树根。(比优先级和mac地址) 主桥(Master Bridge) 是IST Master,它是域内距离总根最近的交换设备,如图中SW1、SW2、SW3、SW4 。 包括总根和IST域根。

端口角色:

Master端口是MST域和总根相连的所有路径中最短路径上的端口,它是交换设备上连接MST域到总根的端口。 Master端口是域中的报文去往总根的必经之路。 Master端口是特殊域边缘端口,Master端口在CIST上的角色是Root Port,在其它各实例上的角色都是Master端口。

域边缘端口是指位于MST域的边缘并连接其它MST域或SST的端口。

  • 2
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
STPRSTPMSTP都是生成树协议,用于构建网络中的冗余链路,以提高网络的可靠性和冗余容错能力。STP(Spanning Tree Protocol)是IEEE 802.1D标准定义的协议,不能快速迁移,需要等待2倍的forward delay的时间延迟才能使网络收敛。RSTP(Rapid Spanning Tree Protocol)是IEEE 802.1w标准定义的协议,可以快速收敛,但它的一个缺陷是整个局域网内所有网桥共享一棵生成树,不能实现按vlan阻塞冗余链路。MSTP(Multiple Spanning Tree Protocol)是IEEE 802.1s标准定义的协议,它允许不同vlan的流量沿各自的路径分发,为冗余链路提供了更好的负载分担机制。MSTP可以在由LAN和MST桥组成的MST域中建立多个独立的生成树实例,以提供简单而完备的连通性,并允许不同VLAN的数据从各自的路径分发。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *2* [STP/RSTP/MSTP的分析与对比](https://blog.csdn.net/weixin_34101229/article/details/92122473)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] - *3* [STPRSTPMSTP](https://blog.csdn.net/qq_40787900/article/details/124136382)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值