二层环路带来的问题,与三层环路的区别

二层环路和三层环路的区别?

特征二层环路三层环路
定义数据链路层循环路径网络层循环路径
产生原因设备故障,配置错误路由协议问题,拓扑结构不当
数据成环可能性相对较高,缺乏智能路由相对较低,具备网络层智能路由
防环机制STP,Smart-link,链路捆绑,堆叠路由协议,PRF检查机制
影响无限转发,设备过载,网络瘫痪有限转发,网络性能下降
TTL值的作用限制报文在网络中有限转发
环路发现的方式检测数据帧是否返回,STP等TTL值递减,报文丢弃
  • 二层环路

    • 二层环路:二层环路是指在网络的数据链路层,由于存在多个闭合的物理连接路径,导致数据帧在这些路径之间无限循环传输的现象。通常发生再局域网环境,使用了冗余链路的情况下;

    • 二层环路带来三个问题:广播风暴、MAC地址表震荡、多帧复制

      • 广播风暴:根据交换机的工作原理,对广播帧会从除接收端口之外的所有端口发送,所以如果二层出现了环路,就会导致广播被重复在环路中绕圈,始终无法消失、同时会严重消耗网络的带宽资源和设备的 CPU 资源,造成业务无法使用

      • MAC地址表震荡:也称为MAC地址漂移,当二层出现环路时,广播会从多个接口到达一台交换机,MAC地址表中不允许一个MAC地址对应多个接口,所以当某个主机发送的广播频繁的被两个接口收到时,交换机的MAC 地址表会对该MAC地址进行频繁的更新,导致表震荡

      • 多帧复制:交换网络存在多个冗余的链路,会导致数据包可能通过这些冗余链路同时传递、会导致接收方收到多份重复的数据帧

    • 二层环路的解决:

      • STP、Smark-Link 和 RRPP,链路聚合

      • 也可以采用堆叠的方式,将多台物理交换机逻辑上形成一台虚拟交换机,其他交换机与这个堆叠系统之间建立链路聚合,来消除逻辑的环路

  • 三层环路:

    • 三层环路:三层环路,也称为网络层环路,是指在网络中的网络层,由于路由配置不当或路由选择算法的缺陷,导致数据包在网络中不断循环的现象。通常出现在使用动态路由协议的广域网和大型局域网中;

    • 三层环路会带来:路由震荡,路由表不稳定,数据包丢失或重复问题;

      • 路由震荡:三层环路会导致路由表频繁更新,这会增加CPU负担,并可能导致路由信息的混乱,使得路由器无法正确地做出路由决策

      • 路由表不稳定:环路的存在会使路由表变得不稳定,路由条目可能会不停地增加和删除,影响网络的整体稳定性。

      • 数据包丢失或重复:数据包在网络中不断循环时,它们可能会因为TTL(Time To Live)字段耗尽而被丢弃,或者在某些情况下,重复到达目的地,造成数据传输的不可靠性

  • 避免三层环路:路由机制(TTL)路由协议自带的防环规则

  • STP有什么作用?STP如何解决环路?

    • STP是二层网络中用于消除环路的协议通过阻断冗余链路来消除桥接网络中可能存在的路径回环;当前活动路径发生故障时,激活冗余备份链路,恢复网络连通性

如何查看 MAC 漂移的命令

  • 可以使用 display mac-address mac-move

假如产生了广播风暴,可以通过哪些现象来判断产生了广播风暴

  • 可以观察接口的指示灯,如果接口的指示灯在以高频的方式闪烁,当前网络中可能产生了广播风暴

  • 成片区域上网特别卡(延迟时间100-300ms) PC通过console线登录到交换机,通过命令行的方式发现交换机的CPU利用率特别高(95%-100%)设备登录卡顿

  • 查看MAC地址表出现了MAC地址偏移的现象(一个相同的 MAC地址在不同的接口学习到)或者观察系统日志

  • 查看接口的速率统计,从设备开机到现在,接口一共收到了多少 广播包,一分钟,再看这个接口收到了多少广播包,看一分钟之内增加了多少广播 包,成百上千的话肯定是产生了二层广播风暴

  • 也可以进行 ping 测试,如果严重丢包,或网络根本不通,也可能说明产生了广播风暴

  • 如何快速判断是哪些VLAN产生了环路?

    • 抓包分析,如果发现某个 VLAN 内有大量重复的广播数据包,且源 MAC 地址和目的 MAC 地址不断变化,很可能是该 VLAN 产生了环路。

    • 查看特定 VLAN 的生成树状态,确定哪些端口处于阻塞状态,哪些端口是活动端口,若有异常的端口状态变化,可能暗示该 VLAN 存在环路。

    • 借助网络监控软件如 SNMP工具,可实时监控交换机的端口流量、错误数据包等信息。通过设置阈值,当某个 VLAN 的流量超过正常范围或出现大量错误数据包时,就可能意味着该 VLAN 存在环路问题。

  • 发现了环路了,应该采取哪些措施呢?有什么应急措施?

    • 了解拓扑的话可以关闭或者拔线

    • 接口上过滤BPDU

    • 启用环路保护

STP 的角色选举机制

  • STP的选举过程:如果问题的内容包含很多,先回答框架再等考官问;(STP的选举分为根桥选举,根端口选举,指定端口选举)

  • 在交换网络中选举一个根桥:整个数的根节点

    • 初始启动都认为自己是根桥,并在发送给别的交换机PBDU时宣告自己是根桥

    • 比较BID:首先比较优先级,小的胜出;优先级相同,比较MAC地址,小的胜出;

    • (BID 由桥优先级+MAC 地址组成桥优先级取值范围61440,必须是4096 的倍数,默认是 32768)

  • 在每个非根桥上选举一个根端口:用来接收最优BPDU;

    • 到达根桥Cost小的优先;

    • Cost相同比较上行设备的BID,小的优先

    • BID相同比较上行设备的PID,小的优先

    • PID相同再比较本交换机的PID,小的优先

    • (端口 ID 由端口优先级+端口索引号组成。端口优先级取值范围 0-240,必须是 16 的倍数,默认 128。端口索引号是每个端口的内部编号,每个端口都有唯一内部编号)

  • 在每条线路选举一个指定端口:用来发送最优BPDU

    • 端口对比发出的 BPDU和收到的对端的 BPDU,发出的向量更优则本端是指定端口,对端的更优,则对端是指定端口;

  • 没有被选中任何角色的端口成为阻塞端口

  • 根桥选举、根端口选举,指定端口选举是同步进行的

  • 一个交换网络有几个根桥?

    • 要看STP的模式,通常只有一个根桥

    • 在MSTP环境下,存在多个生成树实例,每个实例有一个根桥

STP 桥ID的长度是多少

  • 桥ID由16比特的优先级加上 48 比特的 MAC地址构成,所以长度总共是8个字节。

    • 桥优先级:高16位

    • MAC地址:低48位

      image-20250317011108792

桥 ID 中的优先级为什么必须是 4096 的倍数

  • 桥ID中的优先级长度两个字节为16个bit,只有前4个bit 是描述优先级的,后12个bit 实际用于描述 STP 实例的所属 VLAN。也就是说当我们需要调整优先级、也只能调整优先级的前4个bit,后12个bit 无法变更。所以每递增一位数,在十进制中会以 4096 起跳。

  • 0000 000000000000=0

  • 0001 000000000000=4096

  • 0010 000000000000=8192

  • 0011 000000000000=12288

  • 其他以此类推

  • 端口 ID 由端口优先级+端口索引号组成。端口优先级取值范围 0-240,必须是 16 的倍数,默认 128。端口索引号是每个端口的内部编号,每个端口都有唯一内部编号

BPDU 组播地址、STP BPDU的类型和区别

  • 配置BPDU的二层组播地址为01-80-C2-00-00-00

  • STP 中的 BPDU 分为两种:配置BPDU和TCN BPDU

  • 配置 BPDU:用于传递 STP 计算所需要的信息

    • 由根桥从指定端口周期性发出,发送周期为hello time

    • 网络中只有根桥会产生配置BPDU,非根桥只会对配置BDPU进行中继,不会自行产生BPDU

    • 非根桥从根端口接收BPDU,进行更新并从指定端口将其发送出去

    • 每个端口都会保存本端口接收到的最优配置BPDU,端口保存的配置BPDU信息老化时间为Max Age

    • 格式

      image-20250319211949478

      • Root ID:根桥ID,标识根桥

      • RPC:根路径开销,发送该配置BPDU网桥到根桥的最小开销路径

      • Bridge ID:发送该配置BPDU的网桥ID

      • Port ID:发送该配置BPDU网桥的发送端口ID

      • BPDU type:配置BPDU 0x00,TCN BPDU 0x80

      • Flag:8位;第0位-TC标志,第7位-TCA标志

      • Max age:BPDU最大存活时间,缺省20s

      • Hello time:根桥生成配置BPDU的周期,缺省2s

      • Forward Delay:配置BPDU传播到全网的最大时延,缺省15s

  • TCN BPDU:TCN的意思是拓扑变更通告,用于向根网桥传递拓扑发生改变的通知

    • 产生的两个条件:①网桥上有端口转变为Forwarding状态,且该网桥至少包含一个指定端口;②网桥上有端口从Forwarding状态或者Learning状态转变为Blocking状态

    • 为了减少拓扑改变收敛时间,需要使用较短的MAC地址老化时间保证拓扑的快速收敛 ;STP使用TCN BPDU使得从网络中断到恢复的等待时间最长为 50s(Max Age + 2*Forward Delay)

    • TCA置位以及TCA置位的BPDU

      • 上游网桥收到下游网桥发送的TCN BPDU后,会将下一个发送的配置BPDU中的TCA标志位置位,表示对TCN BPDU的确认

      • 根桥收到TCN BPDU后,会在将来的一段时间将发送的配置BPDU中的TC置位,用于通知所有网桥网络拓扑发生变化

      • image-20250319213238133

        • 第7位TCA置位,第0位TC置位

交换机 STP 端口状态与状态跃迁机制

端口状态区别于端口角色

端口状态说明
Disabled去能端口状态为Down,不处理BPDU报文,也不转发用户流量。
Blocking阻塞该状态下只接收 BPDU,不发送 BPDU,不学习 MAC 地址不转发数据。
Listening侦听该状态发送并接收 BPDU,不学习 MAC 地址,不转发数据。Listening 状态进行各种角色的选举。该状态会持续 15 秒的 Forwarding Delay
Learning学习该状态发送并接收 BPDU,学习 MAC 地址,不转发数据。当端口在 Listening 状态下被选举为根端口或者指定端口,就进入到 Learning 状态。该状态持续 15秒的 Forwarding Delay
Forwarding转发该状态发送并接收 BPDU学习 MAC 地址,转发数据。当端口经过 Listening 和 Learning 的两个 Forwarding Delay 后进入到转发状态

  • 状态迁移机制:

    image-20250320143419530

    • 端口Down,处于Disabled状态

    • 端口UP,Disabled->Blocking

      • STP计算初期均会认为自己是指定端口

      • 端口直接从Blocking --> Listening

    • 在Listening状态期间,端口通过交互BPDU完成角色的确定;

    • 如过被选举为根端口/指定端口(持续一个forward delay后):

      • Listening --> Learning

    • 如果维持根端口/指定端口 - (持续一个forward delay)

      • Learning -->Forwarding

    • 过程中,如果端口角色被判定位非根端口或者非指定端口端口状态会立即退回Blocking

    • 在以上状态如果端口Down直接回到Disabled状态

STP的定时器

  • Hello time:

    • 运行STP协议的设备发送配置BPDU的时间间隔。设备每隔Hello Time时间会向周围的设备发送BPDU报文,以确认链路是否存在故障。

  • Forward Delay:

    • 默认15s

    • 设备状态迁移的延迟时间。链路故障会引发网络重新进行生成树的计算,生成树的结构将发生相应的变化。不过重新计算得到的新配置消息无法立刻传遍整个网络,如果新选出的根端口和指定端口立刻就开始数据转发的话,可能会造成临时环路

    • 为此,STP采用了一种状态迁移机制,新选出的根端口和指定端口要经过2倍的Forward Delay延时后才能进入转发状态,这个延时保证了新的配置消息传遍整个网络,从而防止了临时环路的产生。

    • Forward Delay Timer指一个端口处于Listening和Learning状态的各自持续时间,默认是15秒。即Listening状态持续15秒,随后Learning状态再持续15秒。这两个状态下的端口均不转发用户流量,这正是STP用于避免临时环路的关键。

    • 从中间状态Listeninig经过一个延时进入另一个中间状态Learning:

      • 经过Forward Delay时长的配置BPDU交互,确保各网桥完成端口角色的确定,通过阻塞端口防止临时环路的产生

    • 从Learning状态再经过一个延迟进入Forwarding状态:

      • 经过Forward Delay时长,确保各网桥有足够的时间进行MAC地址学习,减少未知单播造成的广播

  • Max Age:

    • 端口的BPDU报文老化时间,可在根桥上通过命令人为改动老化时间。

    • Max Age通过配置BPDU报文的传输,可保证Max Age在整网中一致。运行STP协议的网络中非根桥设备收到配置BPDU报文后,报文中的Message Age和Max Age会进行比较:

      • 如果Message Age小于等于Max Age,则该非根桥设备继续转发配置BPDU报文。

      • 如果Message Age大于Max Age,则该配置BPDU报文将被老化。该非根桥设备直接丢弃该配置BPDU,可认为网络直径过大,导致根桥连接失败。

    • 如果配置BPDU是根桥发出的,则Message Age为0。否则,Message Age是从根桥发送到当前桥接收到BPDU的总时间,包括传输延时等。实际实现中,配置BPDU报文每经过一个桥,Message Age增加1。

STP 的拓扑变更机制

  • 当网络中某台交换机STP发生故障,开启了阻塞口之后,非直连的上行交换机由于感知不到该链路切换,所以 MAC地址表中关于故障交换机下连接的PC的MAC 地址仍然对应原接口,需要等到 MAC地址表自然老化或故障交换机下连接的 PC 主动有流量触发,才能在正确的接口学习到PC的MAC地址,导致最长可能需要5分钟(MAC地址老化)网络故障才能恢复。则可能会导致上游设备的报文在这段时间内一直向一个不可达的链路发送。

  • 当满足如下两个条件之中的任意一个,交换机就认为出现了拓扑变更

    • 有端口转变为 Forwarding,且该交换机上至少包含一个指定端口

    • 有端口从 Forwarding 或 Learning 转变为 Blocking 状态

  • 为了解决该问题,STP引入了拓扑变更机制:

    • 拓扑变更后,下游设备会不间断向上游发送TCN BPDU报文直到根桥设备

    • 上游设备收到下游设备发来的TCN BPDU报文后,只有指定端口处理TCN BPDU报文;其它端口也有可能收到TCN BPDU报文,但不会处理。

    • 上游设备会把配置BPDU报文中的Flags的TCA位置1,然后发送给下游设备,告知下游设备停止发送TCN BPDU报文。

    • 上游设备复制一份TCN BPDU报文,向根桥方向发送。

    • 重复上面步骤直到根桥收到TCN BPDU报文

    • 根桥把配置BPDU报文中Flags的TC位和TCA位同时置1后发送

      • TC位置1是为了通知下游设备交换机把 MAC 地址表的老化时间缩短到 15 秒,TCA位置1是为了通知下游设备停止发送TCN BPDU报文

  • 由于 STP 的重新计算至少也要经过2个Forwarding Delay,也就是 30秒,所以在 15 秒对 MAC 地址进行老化、足以在 STP 完成故障切换前解决 MAC 地址错误的问题

STP、RSTP、MSTP 的对比

(STP 的缺陷,RSTP、MSTP 如何解决这些问题)

STPRSTPMSTP
协议基于 802.1D基于 802.1W基于 802.1S
端口状态5个3个3个
端口角色DP,RP,APDP,RP,AP,BPDP、RP、AP、BP、MasterP
收敛时间30-50 秒,收敛速度太慢快速收敛机制,只需 1-2秒快速收敛机制,只需 1-2秒
Flag位使用0位和7位,其他保留使用所有8个标志位使用所有8个标志位
拓扑变更机制

  • STP:

    • 基于 802.1D

    • 端口状态:Disable、Blocking、Listening、 Learning、Forwarding

    • 端口角色:DP(指定端口)、RP(根端口)、AP(替代端口/阻塞端口)

    • 收敛时间:30-50 秒,收敛速度太慢

    • 拓扑变更机制:

      • 所有拓扑变更都必须通过 TCN BPDU 上报至根网桥再由根网桥发起TC 置位 BPDU;

      • 连接的 PC如果频繁上下线会导致频繁触发拓扑变更,导致产生大量TCN BPDU

    • Flag 位:只使用0位和7位,其他位保留(7:TCA 0:TC)

    • STP不足:

      • 收敛时间长:缺省情况下一个端口从Blocking状态过渡到Forwarding状态至少需要30秒钟(两倍的Forward Delay )。对于一个拓扑不稳定网络,会导致网络的长时间中断

      • 拓扑变化收敛机制不灵活:主机频繁上下线时,网络会产生大量TCN BPDU,导致网桥老化时间长期保持15s;MAC地址频繁刷新,会导致网络中充斥大量未知单播造成的广播报文;

  • RSTP:

    • 基于 802.1W

    • 端口状态:Discarding、Learning、Forwarding

    • 端口角色:DP、RP、AP、BP(备份端口)

      • AP 是作为 RP 端口的备份

      • BP 是作为 DP 端口的备份

      • 如果接口收到本地发送的 BPDU、则该端口就是 BP,常见于连接 hub的场景

    • 收敛时间:由于快速收敛机制,只需 1-2秒

    • 拓扑变更机制:

      • 只有非边缘端口转变为 Forwarding,才出发拓扑变更;

      • 拓扑变更后、向所有其他指定端口和根端口发送TC 置位 BPDU

      • 收到 TC 置位 BPDU 后、清除其他所有端口学习到的 MAC 地址;

      • 由于每台交换机都可以主动发起 RST BPDU,所以取消了 TCN BPDU

    • Flag 位:使用所有8个标志位

    • 增加了边缘端口机制、解决 PC 频繁上下线导致的大量 TC BPDU 产生的问题

  • MSTP:

    • 基于 802.1S

    • 端口角色:DP、RP、AP、BP、Master Port

    • 大部分机制与RSTP一致

    • 支持多 STP 实例,可以把不同的 STP 实例映射至不同 VLAN,从而实现基于MLAN 的流量负载,避免 STP 和 RSTP对阻塞链路的资源浪费

    • 支持多域,不同的域可分别管理,拥有不同的域名、以及VLAN 和 STP 实例的映射关系

(STP 的缺陷,RSTP、MSTP 如何解决这些问题)

  • STP:

    • 收敛时间长:缺省情况下一个端口从Blocking状态过渡到Forwarding状态至少需要30秒钟。对于一个拓扑不稳定网络,会导致网络的长时间中断

    • 拓扑变化收敛机制不灵活:主机频繁上下线时,网络会产生大量TCN BPDU;导致网桥老化时间长期保持15s;MAC地址频繁刷新,会导致网络中充斥大量未知单播造成的广播报文;

  • RSTP

    • 实现了STP的所有功能,可以兼容STP运行,并且在STP的基础之上减少了端口状态,增加了端口角色,改变了配置BPDU的发送方式等,因为有快速收敛机制当网络拓扑发生变化时可以实现更为快速的收敛。

      • 增加了边缘端口机制、解决 PC 频繁上下线导致的大量 TC BPDU 产生的问题

      • 根端口快速切换,指定端口快速切换(P/A机制)

    • STP/RSTP所有VLAN共享一颗生成树,无法实现不同VLAN在多条Trunk链路上负载分担,阻塞的链路不会承载任何流量,造成带宽的浪费

  • MSTP

    • 它既可以实现快速收敛,又可以弥补STP和RSTP的缺陷。MSTP能使不同VLAN的流量沿各自的路径转发,从而利用冗余链路提供了更好的负载分担机制。

  • 拓扑频繁变更的影响:

RSTP 有什么缺点,有什么解决方法

  • RSTP 可以快速收敛,但是和 STP 一样存在以下缺陷:局域网内所有网桥共享一棵生成树,不能按VLAN 阻塞冗余链路,所有 VLAN 的报文都沿着一棵生成树进行转发

  • MSTP(Multiple Spanning Tree Protocol,多生成树协议)可以弥补 STP 和 RSTP的缺陷,它既可以快速收敛,也能使不同 VLAN 的流量沿各自的路径转发,从而为冗余链路提供了更好的负载分担机制。

MSTP有什么特点

  • MSTP 设置 VLAN 映射表,把 VLAN 和生成树联系起来。通过增加“实例"这个概念,将多个 VLAN 捆绑到一个实例中,以节省通信开销和资源占用率。

  • MSTP 把一个交换网络划分成多个域,每个域内形成多棵生成树,生成树之间彼此独立。

  • MSTP 将环路网络修剪成为一个无环的树型网络,避免报文在环路网络中的增生和无限循环,同时还提供了数据转发的多个冗余路径,在数据转发过程中实现 VLAN 数据的负载分担。

  • MSTP 兼容 STP 和 RSTP。

RSTP相比STP 有什么优点

  • 改进一:如果旧的根端口已经进入阻塞状态,而且新根端口连接的对端交换机的指定端口处于 Forwarding 状态,在新拓扑结构中的根端口可以立刻进入转发状态。

  • 改进二:网络边缘的端口、即直接与终端相连,而不是和其它网桥相连的端口可以直接进入转发状态,不需要任何延时。

  • 改进三:增加了网桥之间的协商机制一Proposal/Agreement。指定端口可以通过与相连的网桥进行一次握手,快速进入转发状态。其中 Proposal 报文为正常的 BPDU 报文,且 Proposal Bit位置位。Agreement报文为Proposal报文的拷贝,且以Agreement Bt 代替 Proposal Bit 位置位。

  • 通过以上三点重要改进,RSTP 的收敛速度比 STP 快很多,且 RSTP 可以兼容STP。

RSTP的快速收敛机制

  • 边缘端口会发BPDU吗?会

  • 变换端口怎么设置?

  • 边缘端口机制:

    • 把网桥上连接 PC 的端口配置为边缘端口。

    • 边缘端口 UP后,会直接进入到Fonwarding 状态,不参与 STP 计算

    • 边缘端口的 UP/DOWN,不会触发拓扑变更机制

    • 边缘端口收到 BPDU后,会立即转变为非边缘端口

    • 交换机收到 TC BPDU 不会删除边缘端口学到的 MAC 地址

    • 如果边缘端口收到了自己发出的 BPDU,则接口进入Discarding 状态

    • 边缘端口需要手工设置

  • 根端口快速收敛:

    • 根端口故障后,如果新的根端口对端的指定端口处于转发状态,则新的根端口立即进入转发状态,无需经历 STP 计算

  • 指定端口快速收敛:P/A机制

    • 指定端口可以通过与相连的网桥进行一次握手,快速进入转发状态(握手请求报文:Proposa,回应报文:Agreement)

    • P/A机制:

      • 新增链路或故障链路恢复,上游交换机的指定端口要进入转发状态之前向下游交换机发送 Proposal报文,Flag中置位P位

      • 下游交换机收到 Proposal报文后,立即进行同步操作,把除边缘端口以外的所有端口都进行阻塞。该操作是为了防止临时环路

      • 同步完成后,向上游交换机发送Agreement报文,Flag 中置位A位

      • 上游交换机收到 Agreement 报文后,指定端口立即进入转发状态,无需经历 STP 计算

      • 被同步操作阻塞的端口,继续向下游进行 P/A机制,直到整网收敛

  • RSTP BPDU 的快速老化机制

    • 网桥自行从指定端口发送 RST BPDU,不需要等待来自根桥的 RST BPDU。发送周期为 Hello Time

    • RST BPDU 老化时间为3个连续的 Hello Time 时长

  • 更加高效的拓扑改变处理机制

    • 拓扑改变触发条件:只有非边缘端口转变为Forwarding,才产生拓扑改变

    • 处理:收到TC位置BPDU,清除其他所有端口学习的MAC地址,在两倍hello时间内向所有其他指定端口和根端口发送TC置位的BPDU报文

    • 由于每台交换机都可以主动发起RST BPDU,所有取消了TCN BPDU

什么是网络直径

  • 配置计时器需要注意:

    • 配置端口Hello time注意:

      • 较长的Hello Time可以降低生成树计算的消耗

      • 过长的Hello Time会导致对链路故障的反应迟缓

      • 较短的Hello Time可以增强生成树的健壮性

      • 过短的Hello Time会导致频繁发送配置消息,加重CPU和网络负担

    • 配置端口Max Age注意:

      • 过长的Max Age会导致链路故障不能被及时发现

      • 过短的Max Age可能会在网络拥塞的时候使交换机误认为链路故障,造成频繁的生成树重新计算

    • 配置端口Forward Delay注意:

      • 过长的Forward Delay会导致生成树的收敛太慢

      • 过短的Forward Delay可能会在拓扑变化的时候,引入暂时的路径环路

  • 网络直径:任意两条终端设备之间通过的交换机数目的最大值,修改网络直径可以使交换机自动产生适当的Max Age和Forward Delay时间,

  • 为了避免这两个计时器因为对网络的不了解而设置不合理的情况,可以通过设置网络直径来使系统自动产生合适的 Max Age 和 Forward Delay

  • 在系统视图使用 stp bridge-diameter XX设置网络直径,范围 2-7

    网络直径Max AgeForward Delay
    2107
    3129
    41410
    51612
    61813
    72015

RST BPDU 中的 Flags 字段

  • 在 RST BPDU 的 Flags 字段中,除 TC 以及 TCA 标志位,还包含 P/A 标志位、端口状态标志位以及端口角色标志位

    image-20250320113534032

  • 第0位TC标志位,和STP相同

  • 第1位Proposal标志位,为快速收敛机制中的Proposal报文

  • 第2位和第3位为端口角色标志位

    • 00表示端口角色未知

    • 01表示端口为Alternate,Backup端口

    • 02表示端口为根端口

    • 03表示端口为指定端口

  • 第4位为Learning标志位,该位置表示端口处于Learning状态

  • 第5位Forwarding标志位,该位置位表示端口处于Forwarding状态

  • 第6位Agreement标志位,为快速收敛机制中的Agreement报文

  • 第7位为TCA标志位,和STP相同

RSTP 和 STP 兼容运行的注意事项

  • RSTP 桥和 STP 桥可以兼容运行,当 RSTP 端口连续收到3次 STP 的 BPDU,会自动把 STP 模式变更为 STP,变更为 STP 模式的端口丧失所有快速收敛特性

  • 当把 STP 交换机移除后,由 RSTP 模式自动变更为 STP 模式的端口仍然会运行在 STP 模式,不会自动回切;可配置stp mcheck 来使端口模式可以自动回切

  • 出现混用情况,建议将STP设备放在网络边缘

解释IST,CST,CIST,根域,总根,Master端口

  • MSTP的网络层次:

    image-20250320124144133

    • MSTP网络中包含1个或多个MST域(MST Region),每个MST Region中包含一个或多个MSTI。组成MSTI的是运行STP/RSTP/MSTP的交换设备,MSTI是所有运行STP/RSTP/MSTP的交换设备经MSTP协议计算后形成的树状网络。

  • MST域 多生成树域:

    • 定义:多生成树域,拥有相同MST配置标识的交换机构成的集合

    • 相同域的必要条件:

      • 域名一致,修订级别一致,VLAN和实例的映射关系一致

  • MSTI 多生成树实例:

    • 定义:多生成树实例,一个MST域内可以通过MSTP生成多棵生成树,各生成树之间彼此独立 , 每棵生成树都称为一个MSTI ; 每一个MSTI映射一个或多个VLAN,并计算出一颗独立的生成树,每一个MSTI对应一个实例号,从1开始,区别实例0的IST

    • MSTI的域根是每个MSTI上优先级最高的网桥

      img

  • VLAN映射表:

    • VLAN映射表是MST域的一个属性,用来描述VLAN与MSTI间的映射关系。MSTP就是根据VLAN映射表来实现负载分担的

  • CST 公共生成树:

    • 定义:连接网络内所有MST域的单生成树;把每个MST域看作逻辑网桥,CST就是这些网桥计算得到的一颗生成树

    • 总根所处的域为CST的根桥

  • IST 内部生成树:

    • 每个MST域内独立计算的内部生成树实例,是一个特殊的MSTI,通常称为MSTI 0 , 以Instance0 来表示所有VLAN缺省映射在MSTI 0上

  • CIST 公共内部生成树:

    • 整个网络所有设备经过生成树计算得到的一棵树

    • CST+每个域内部的IST就组成了 CIST

  • CIST根域:每个IST的根网桥,IST 的根桥即 CIST 的域根,是 MST 域内距离总根最近的桥,也称为 Master 桥

  • CIST 总根,整个CIST 的根网桥

  • Master 端口:

    • CST的根端口,由于在根网桥上不可能存在根端口,所以如果MSTP 是单域环境,该域在CST上就是根网桥,所以不可能存在 Master 端口

    • Master 端口是该 MST域交换机到达总根开销最小的端口,拥有 Master 端口的交换机就是该 MST域的根,即 CIST的域根,此时IST 域根不一定是域中优先级最高的网桥。只有当只存在一个 MST域的场景,IST的域根才是该域中优先级最高的网桥。

MSTP计算

  • CST 公共生成树的计算:

    • 计算CST:

      • 选举整个网络中BID最小的交换机作为总根

      • 总根所在的域成为CST的根桥,其他域按照规则选举出CST的各端口角色

    • 计算IST:

      • 选举出域根:到达总根cost最小的交换机,BID最小的交换机

      • 其他交换机按照规则选举出IST的各端口角色

  • MST域 多生成树域的计算:

    • 与IST的计算同步进行,与IST的计算规则一致

  • 注意:各端口角色在进行选举时,参考的cost都是先参考外部cost,再参考内部cost

    • 外部cost:到总根的cost

    • 内部cost:到达内部根桥的cost

  • 计算步骤是先完成 CST的计算,然后完成 IST的计算,最后完成 CIST的计算CST 之间的算法与 RSTP 类似。

  • image-20250317014247820

MSTP 划分不同域的原因

  • 优化流量负载均衡:支持不同 VLAN 流量的灵活分配,不同的域可以根据其内部的网络结构和业务需求,将不同的 VLAN 映射到不同的生成树实例上。这样可以实现不同 VLAN 的流量在不同的路径上转发,从而在多个链路上实现负载均衡,充分利用网络带宽资源,提高网络的整体性能。

  • 方便管理:将网络划分为多个域可以使网络的管理更加层次化和结构化。因为不同的域配置可以不一致,分别独立管理也互不影响,便于进行针对性的配置、监控和维护,降低网络管理的复杂度。

  • 提高网络可靠性:将网络划分为多个域,每个域有自己独立的生成树计算。当某个域内出现链路故障或拓扑变化时,只会影响到该域内的生成树重新计算,从而避免了可能引发的全网范围的环路问题,增强了网络的稳定性。

MSTP 交换机属于同域的条件

  • 域名、修订级别、VLAN 和实例的映射关系一致

MSTP的P/A机制原理,RSTP 和 MSTP 桥 P/A 机制兼容性问题

  • MSTP 的 P/A 机制工作原理

    • 新增链路或故障链路恢复,上游交换机的指定端口要进入转发状态之前,向下游交换机发送 Proposal报文,Flag 中同时置位P位和A位

    • 下游交换机收到 P/A 同时置位的 Proposal 报文后,立即进行同步操作,把除边缘端口以外的所有端口都进行阻塞。该操作是为了防止临时环路

    • 同步完成后,向上游交换机发送Agreement报文,Flag中置位A位

    • 上游交换机收到 Agreement报文后,指定端口立即进入转发状态,无需经历 STP 计算

    • 被同步操作阻塞的端口,继续向下游进行 P/A 机制,直到整网收敛

  • RSTP 和 MSTP 的 P/A 机制兼容性问题:

    • 如果上游交换机是 RSTP 桥,当桥上的指定端口要进入转发状态之前,会向下游交换机发送P位置位的 Proposal 报文。因为 MSTP 必须收到 P/A 双置位的 Proposal报文才会进行后续操作,所以如果下游交换机是 MSTP 桥,MSTP 桥不会进行后续操作,导致 RSTP桥无法收到 Agreement 报文,从而无法进行快速收敛,仍然得通过 30 秒的STP 计算才能正常收敛

    • 可以在 MSTP 桥上配置 No Agreement Check,配置后 MSTP 将不再检查Proposal报文的 A 位是否置位

跨厂商对接 MSTP 注意事项

  • MSTP BPDU 格式兼容的问题:H3C设备端口可以识别和发送的 MSTP BPDU 有两种:1符合802.1S协议的标准格式,2与非标准格式兼容的格式。如果涉及到对接其他厂商的 MSTP,可以配置为 Auto模式,自动识别这两种格式,并根据识别结果确定发送 BPDU的格式,从而实现与对端设备互通

    • 可以在接网使用命令 stp compliance auto/dot1s/legacy

  • 配置摘要计算密钥不同的问题:MSTP BRDU 中通过配置摘要来描述本交换机的/LAN 和实例映射关系,该配置摘要是把 VLAN 和实例映射关系通过加密算法,使用密钥对内容进行加密后封装的。如果是不同厂商的交换机,加密密钥是不一致的。由于 MSTP 在同一域内需要 VLAN 和实例映射关系一致,所以就算不同厂商的交换机配置的映射关系是一致的,但由于无法互相解密对方的配置摘要,也无法形成同一个域

  • 可以通过配置摘要侦听来解决该问题。开启配置摘要侦听后,MSTP 将不再检查配置摘要是否一致。但此举有可能会导致 VLAN 和实例映射关系不一致的交换机也进入同一个域,从而产生故障

    • 系统视图使用命令 stp global config-digest-snooping

    • 接口视图使用命令 stp config-digest-snooping

STP 保护机制

  • BPDU 保护:

    img

    • 当边缘端口收到 BPDU后,将立即转变为非边缘端口,重新参与 STP 计算,所以如果有 PC伪造 BPDU 发送使边缘端口成为非边缘端口后,再频繁上下线,将会导致网络中大量产生TC 置位 BPDU

    • 开启 BPDU 保护后,边缘端口只要收到 BPDU,会立即关闭该端口来避免攻击。然后大概 30 秒后会自动尝试恢复端口的状态,如果继续收到 BPDU则再次进入关闭状态。如果将连接的交换机移除,则端口会恢复到 up 状态

    • 在系统视图使用命令stp bpdu-protection 来全局开启

  • 根桥保护:

    img

    • 合法根桥收到优先级更高的 BPDU后,会立即失去根桥角色,并引起STP重新计算,导致网络不稳定

    • 为了防止根桥被恶意抢占,在指定端口上配置根桥保护,配置后该端口只能保持为指定端口角色,一旦收到优先级高的 BPDU,该端口的状态将被置位 Listening 状态,如果运行的是 RSTP则会被置为 Discarding 状态,端口依然保持 up状态,不再转发报文,从而避免根桥被抢占,当发送更优BPDU 的交换机移除之后,该端口会进行正常 STP 计算

    • 在非根桥的接入交换机上面向终端的接口上使用命令 stp root-protection开启

      image-20250317084305193

    • 根桥保护一般在哪里设置?在非根桥上面对终端接口设置

      image-20250320135935197

  • 环路保护:

    img

    • 由于链路拥塞或者单向链路故障,导致端口收不到上游设备的 BPDU,从而误认为网络故障而开启阻塞的端口,导致了环路的产生

    • 为了避免该情况发生,在端口上开启环路保护,开启后,当该端口收不到上游发送的 BPDU 时,环路保护生效。如果该端口参与了STP 计算,则不论其角色,该端口被置位 Discarding状态,不再转发数据,从而避免阻塞端口开启后形成的环路;直到端口再次收到BPDU,重新称为根端口

    • 接收 BPDU 的端口上使用命令 stp loop-protection 开启

  • TC 保护:

    img

    • 当有 PC 伪造 TC-BPDU 时,会导致 RSTP 和 MSTP 频繁删除 MAC 地址记录并重新学习、导致网络极度不稳定

    • 可以配置 TC 保护来设置交换机收到 TC-BPDU 后的 10 秒内,MAC 地址表能够删除的最大次数,来避免 MAC 地址表频繁删除;监控在该时间段内收到的TC-BPDU报文数是否大于门限值;运行直接删除默认最高次数6

    • 系统视图使用命令 stp tc-protection 开启

  • 不能在端口上同时启动环路保护,根桥保护,和边缘端口中任意两种

PVST 是什么

  • PVST 类似 MSTP、可以实现不同的 VLAN 映射到不同的 STP 实例来实现流量负载均衡;但是 PVST是强制每个VLAN 都使用一个独立的 STP 实例,所以如果网络中 VLAN 比较多,就会产生大量STP 实例,增加交换机性能负担;而MSTP可以把多个 VLAN 映射至一个 STP 实例,就可以避免 PVST 的这个问题。

什么是冲突域和广播域

  • 冲突域是指该范围中,所有的设备连接在一条公共总线上,所有设备同时只能有一台使用线路,也就是只能有一台设备发送数据和接收数据一台集线器的所有接口与其连接的设备都处于同一个冲突域,交换机的每一个端口都是一个独立的冲突域

    • 由于同时发送数据就会产生冲突,在冲突域中,需要使用CSMA/CD来进行冲突检测。原理是每次发送数据前,会先侦听一下线路是否被占用,如果被占用就等待一段时间,再次侦听,等到线路空闲才能发送数据;如果多次侦听线路一直被占用,就放弃发送

  • 广播域是指能够接收到同一个广播的设备所组成的网络范围。即一个广播包所能传播的范围。默认情况下,交换机的所有接口连接的设备处于同一个广播域如果划分了 VLAN,每一个 VLAN 是一个独立的广播域。路由器的每个接口也是一个独立的广播域。

STP 的 cost

  • STP 的开销算法总共有三种,分别是 dot1d-1998、dot1t、legacy、可以通过在系统视图使用命令 stp pathcost-standard 来指定 STP 的开销算法

  • H3C 交换机的 STP Cost 默认使用私有 Legacy 算法,Cost 计算值参考如下

  • image-20250317085223383

    • 带宽越大开销越小

MSTP 总根和域根的选举流程

  • MSTP 的总根是 CIST的根桥,整个 MSTP 中的所有域共同选举出一个总根,作为全局根网桥、选举规则为全局桥最小的交换机。

  • MSTP 的域根为每个域内IST的根桥。在选举出总根后,由每个域内部独立选举域根选举规则如下:

    • 到达总根的外部 Cost 小的优先

    • 外部 Cost 一致时,本机桥ID 小的优先

在边缘端口上配置根桥保护会有什么后果

  • 根桥保护只允许在指定端口上配置,配置后端口角色锁死为指定端口。而边缘端口的角色也一定是指定端口,所以可以在边缘端口上配置根桥保护

  • 根桥保护开启后,当端口收到高优先级 BPDU,会立即把端口进入 Listening 状态;而边缘端口一般情况下连接PC,是不会收到 BPDU 的,如果收到 BPDU 会自动变更为非边缘端口。所以如果把边缘端口连接的PC更换成了一台交换机且交换机优先级更大,那么由于开启了根桥保护,所以新交换机无法成为根桥

STP 的根端口与指定端口的区别

  • 根端口是在每台非根网桥上选举一个,是选出的离根桥最近的一个接口;根端口用于接收来自根桥的 BPDU

  • 而指定端口是在每条物理段上选举一个的最优的接口,用于发送 BPDU 至其他交换机

BP(备份端口)和AP(替代端口)的区别

  • 替代端口和备份端口在 RSTP 和 MSTP 中都属于阻塞状态的端口,区别是 AP 是根端口的备份、BP是指定端口的备份

  • 正常情况下阻塞状态的端口都是 AP,两种情况下会出现 BP

    • 一台交换机上用一根线自己环接自己,就会出现一个端口是 DP,一个端口是 BP

    • 一台交换机的一个端口通过集线器连接到另一台交换机的多个接口,这几个接口属于同一个物理段也只会选举出一个 DP,被阻塞的端口就是 BP

接入层设备如何防止其他厂商设备 BPDU发送

  • BPDU的组播地址为01-80-C2-00-00-00,如果要防止其他厂商设备发送 BPDU可以在连接其他广商设备的交换机接口应用ACL范围在4000-4999的二层ACL过滤目标 MAC 为 01-80-C2-00-00-00 的 BPDU 帧

  • 或者可以在连接其他厂商设备的交换机接口使用 bpdu-drop 过滤 BPDU 报文

  • 在连接其他厂商设备的接口上禁用 STP 功能。

什么时候使用多域什么时候使用单域

  • MSTP 是一种用于构建冗余网络的协议。它允许在一个网络中使用多个生成树,从而提高网络的可靠性和性能。

  • MSTP 支持单域和多域配置。在单域配置中,整个网络被视为一个生成树域,在多域配置中、网络被分成多个生成树域,每个域都有自己的生成树。这种配置允许更好的网络优化和更好的性能。

  • 在选择单域或多域配置时,需要考虑网络的规模、复杂性和性能要求。如果网络规模较小,复杂性较低,并且性能要求不高,则单域配置可能是最佳选择如果网络规模较大,复杂性较高,并且需要更高的性能,则多域配置可能更适合

MSTP 中如果端口长期处于Discarding状态如何排查

  • 检查是否收到本端口自己发送的报文

    • 执行命令 debugging stp packet interface打开STP 报文详细信息调试开关查看端口是否接收到了本端口自己发送出去的报文,如果是,表明网络中存在自环,检查网络消除自环。

  • 检查是否端口根保护导致

    • 查看系统的日志信息。如果有"Instanceinstance-id'sROOT-Protection portinterface-type interface-number received superior BPDUs!",表明端口开启了根保护。

    • 执行命令 display stp abnormal-port 查看端口是否因根保护起作用而被置为 Discarding 状态。

  • 检查是否端口环路保护导致

    • 查看系统的日志信息。如果有"Instance 0's LOOP-Protection port GigabitEthernet 1/0/2 failed to receive configuration BPDUs!"、表明端口开启了环路保护。

    • 执行命令 display stp abnormal-por 查看端口是否因环路保护起作用而被置 Discarding 状态。

运行 STP 之后,网络流量不稳定要如何处理

  • 检查端口 STP 状态是否震荡

  • 检查端口 STP 角色是否震荡

    • 使用命令 display stp history 查看端口角色计算历史纪录,如果端口的角色不停更新且端口优先级在不停变化,表明端口收到来自不同设备的不同优先级的报文、表明网络拓扑连接错误,可以检查物理连接并排除错误。

  • 检查设备是否频繁收到 TC 报文

    • 执行命令 display stp 查看收到 TC报文的数量,同时查看最近一次拓扑变化时间,如果TC报文的数量一直递增且最近一次拓扑变化时间在 10秒以内那么端口肯定频繁收到 TC 报文。

    • 接下来就是追溯 TC 源头,执行命令 diplay stp tc查看频繁收到 TC 报文的端口,如果某端口收到的T。报文一直递增,查看该端口的对端设备的TC接收端口,一级一级往上直到找到TC源

MSTP的BPDU有哪些字段

  • MST BPDU和RST BPDU的前36个字节的格式是相同的,其中BPDU协议版本号为0x03,表示MSTP协议,BPDU类型为0x02,表示为RST/MST BPDU;

  • RST BPDU中的:

    • Root ID字段:CIST总根ID

    • RPC字段:表示CIST外部路径开销

    • Bridge ID字段:CIST域根

    • Port ID字段:CIST指定端口ID

  • 从第37字节开始是MST专有字段,包含:

    • Version3 Length:MST专有字段长度

    • MST配置标识:判断网桥是否属于某个MST域;

      • 包含:域名,修订级别,摘要(vlan-实例)

    • CIST内部路径开销:IRPC,发送此BPDU的网桥到达CIST根域的路径开销

    • CIST Bridge ID:发送此BPDU的网桥ID

    • CIST 剩余跳数:限制MST域的规模;从CIST开始经过一个网桥转发减1,0被丢弃;默认值20

    • MSTI configuration message:包含多个MSTI配置信息

  • MSTI配置信息:仅仅在MST实例中有效,各MST实例中这些字段相互独立

    • MSTI Falgs:低7位与RSTP相同,第8位为Master标志取代RSTP中的TCA标志

    • MSTI Region Root ID:MST实例的域根ID

    • MSTI IRPC:发送此BPDU的网桥到达MSTI域根的路径开销

    • MSTI Bridge Priority:发送此BPDU的网桥的优先级

    • MSTI Port Priority:发送此BPDU的端口优先级

    • MSTI剩余跳数:同CIST

image-20250317090327453

Logo

助力广东及东莞地区开发者,代码托管、在线学习与竞赛、技术交流与分享、资源共享、职业发展,成为松山湖开发者首选的工作与学习平台

更多推荐