二层交换机之间形成环路会出现的问题及解决方法

本文讨论了网络工程师在配置多线路时可能遇到的交换机环路问题,特别是二层环路带来的广播风暴和MAC地址漂移。通过实例分析了问题的产生机制,并介绍了STP生成树、三层互联、链路聚合和VLAN等解决策略。
摘要由CSDN通过智能技术生成

个人的小总结,顺手记录一下。

网络工程师为了扩大企业的网络带宽,往往会给交换机 / 路由器配置多条线路。同时,为避免只有一条线路的情况下因线路故障导致整体网络瘫痪,搭建多条网络线路的举措就尤为重要,确保有备用线路可以使用。

但工程师在搭建时可能出于疏忽导致设备之间形成环路,也就造成了环路问题,本文就该问题进行一些思考与总结。

先说二层交换机环路可能会引起的两个问题:广播风暴 以及 MAC地址漂移

  • 交换机环路广播风暴问题

这里说的交换机环路问题指的是 二层交换机 与 二层交换机 连接形成的环路问题。二层交换机仅依赖MAC地址表,而三层交换机和路由器具有路由转发功能,通过动态路由协议能纠正环路问题。哪怕因为没有开启动态路由协议造成环路,也会因报文的报头含有 TTL 字段,使得经过 路由 多次转发的报文会被路由自动丢弃。TTL 字段唯有经过路由的跳转才会被触发减值的操作,在二层交换机跳转时则没有反应。因此,二层交换机始终不会丢弃报文。

由于问题发生在数据链路层 (即 二层),所以其环路问题也被称作 二层环路 (Layer 2 Loop ) 问题。二层交换机两两之间存在环路但没有任何防环配置的情况下直接进行通信就可能造成广播风暴,也就是交换机会无休止地转发广播包,占满带宽后就造成了网络瘫痪。

注意是 可能 会引发广播风暴,二层交换机根据报文的报头中所记录的源目MAC地址转发信息,在交换机的MAC地址表中如果 报文中目标MAC地址的记录,则交换机无需广播发包而是通过记录的对应物理端口转发出报文。但如果是交换机 没有 目标MAC地址的记录,则会进行 泛洪 ,意思是除了传入报文的物理端口,会向其余口都发一份同样的报文出去。

泛洪是交换机内部现象,而发出的多份同样的报文就成为了广播,带宽被广播占据,而广播又进一步引发交换机内部的泛洪,报文数量会越来越多,形成恶性循环,多到足以用风暴来形容,最终把线路带宽占满。

此外,如果源主机向目标主机发送报文前 不知道 目标主机的MAC地址,就会先发出 ARP 请求报文用以获取目标主机的MAC地址,获取MAC地址后再构建报文。需注意的是除了特殊协议的报文,普通报文都必须含有源目MAC地址,MAC地址犹如快递物件中的收件人地址,而 IP 地址充当的是发件人地址。此时的 ARP 请求报文属于特殊协议报文,必定是 不含有 目标MAC地址,而二层交换机又只是根据源目MAC地址转发消息,所以交换机会 “迷失方向” 从而选择泛洪,把请求报文从各物理端口广播出去,存在环路时就会引发广播风暴。

如果形成环路的 二层交换机 所收到的报文的 源目MAC地址 都能在交换机的 MAC地址表 中查找到,则环路下的交换机没有发生泛洪,也就不会引发广播风暴。但在实际应用中,终端在向其他终端发送信息时,不知道目标主机的MAC地址是很常见的事情,会不可避免地发出 ARP 请求报文,存在环路的情况下就很容易引发广播风暴。切勿存在侥幸心理从而无视风险的存在。

具体例子分析一下,咱先看某些的环路类型:

以上图例已省略发包终端,图例中的交换机均为二层交换机

咱选取图例右侧 6号交换机 (SW6) 的情况来具体分析一下,先补全发包终端:

往下探讨的前提是该交换机没有报文中目标MAC地址的记录。图例中,在主机发出报文后,报文从交换机的物理口 3口 进入,在前提下交换机内部进行泛洪,此时交换机把报文复制成两份,接着从 1口 和 2口 传出,因为存在环路并且线路是全双工通信,使得 1口 和 2口 都收到对方发出的报文。

选取 1口 收到报文的情况单独进行分析,1口 收到主机的报文会通过外部网线传送给 2口,而 2口 接收后,报文会被复制成两份分别从 1口 和 3口 传出。

但为什么 2口 明明才收到 1口 的报文又马上将收到的报文从 1口 传出呢?这是因为前文提及的 泛洪 ,即便是刚通过线路接收到其他口的报文,此时因为没有对应的MAC地址记录,只能是交换机内部进行泛洪,从而将报文从 1 口和 3 口传出。好比要去绘制未知区域的地图,既然要探明各条道路的情况,那就必须都走一遍,奈何遇到环路,就总是兜兜转转又回到原点。除了会回到原点之外还会对报文进行复制,使得大量的广播包拥堵在线路中,就造成了所谓的 广播风暴 。

同理,2口 把报文发给 1口 后,1口 会将报文复制成两份分别发送给 2口 和 3口 。

把流程再走两遍就不难发现 1口 和 2口总是会把复制出来的报文都发往 3口 和对方物理口,这个操作会一直不停地进行下去,最终导致网络瘫痪。犹如原子发生裂变,在特定环境中发生连续的裂变,原子的总数会在短时间内极速增加,也就容易造成情况不可控的局面。

可能会觉得存在环路情况下不就是多几个报文而已,CPU肯定能处理得来。但一台企业级的交换机的一个物理口可能每秒就能转发 1000万 次报文,这就意味着交换机一秒钟就能复制出巨量的报文然后进行转发,这会极大地占用带宽,而收到大量报文的终端可能会因为处理不来而死机。倘若图例这台是企业 汇聚层 的交换机,那么这种广播风暴的影响将是巨大的,即便是划分了 VLAN 和子网,也不可避免地给部分终端设备造成影响。

另外两种情况的环路也是同理,通过不停地复制报文传输到其他口或者是终端设备,占用大量带宽,而终端设备可能因为海量的报文而崩溃,同时网络延迟也会变得非常明显。

  • MAC地址漂移问题

环路所造成的问题还不止广播风暴一种,还可能造成 MAC地址漂移 的问题,但这个问题并没有环路问题那么严重。参考以下例图:

本次探讨仍是在交换机没有目标MAC地址记录的前提下进行。假设源主机发出报文,报文从 3 号交换机 (SW3) 传入,3 号交换机会把报文进行泛洪,复制成两份后分别发送给 1 号交换机和 2 号交换机,1 号交换机收到后会拆分报文的报头,把源主机MAC地址记录在MAC地址表中,同时还记录下对应着连接 3 号交换机一侧的物理口,这种记录的行为称作 MAC地址学习。相当于告诉了 1 号交换机 “ 如果想把目标主机回复源主机的报文发回,就把报文从连接 3 号交换机一侧的物理口传出就行。”

但是从 3 号交换机传出的报文也会送达到 2 号交换机 (SW2),接着会把报文也传送给 1 号交换机,相当于也告诉 1 号交换机 “ 如果想把目标主机回复源主机的报文发回,就把报文从连接 2 号交换机一侧的物理口传出就行。”

这就会让 1 号交换机弄不清楚回复给源主机的报文下一步到底应该从哪个物理口传出。而交换机中的MAC地址表只能对应着一个物理口。这时,再加上二层环路问题引发广播风暴,让 1 号交换机持续收到大量两个方向发来同样的报文,那么 1 号交换机就会对发回给源主机报文的传输方向进行频繁的更改。假设 1 号交换机下一步把报文发给 3 号交换机是通过其 ① 号物理口,而经过 2 号交换机的 “忽悠” 过后,1 号交换机又认为下一步应该是把报文交给 ② 号物理口。如果发现交换机的 MAC地址表出现非常频繁的变更,那就很可能是 MAC地址漂移 问题 ,也就是网络中出现环路。

  • 解决方法
  1. 对交换机启用 STP 生成树功能,在系统检测到存在环路的时候会自动阻塞环路的接口从而解决环路的问题,而被阻塞的接口会作为备选线路处于备用状态,如果主线路发生故障无法正常传输信息时,系统便会开启备用线路。
  2. 如果设备不支持 STP 生成树功能,可以选择开启三层互联的方式来防止广播风暴。
  3. SW4 与 SW5 形成的环路可以通过链路聚合的方式来解决环路问题。
  4. 划分 VLAN 来隔离广播包,从而实现防范广播风暴。
  5. 扣光工程师当月的工资,让工程师在往后的工作中时刻打起十二分精神避免自己再配错形成环路,好长长记性。但该方法不推荐使用。
  • 42
    点赞
  • 30
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
ensp是华为公司推出的一款网络模拟器,用于模拟和测试网络设备的配置和运行。三层交换机是一种能够同时支持二层和三层功能的网络设备。配置STP(Spanning Tree Protocol)是为了解决网络中的环路问题,确保网络拓扑的稳定性和可靠性。 在ensp中配置stp,可以按照以下步骤进行: 1. 打开ensp,并创建一个网络拓扑。 2. 在网络拓扑中添加三层交换机设备。 3. 进入三层交换机的命令行界面,通过以下命令启用STP功能: ``` <Switch> system-view [Switch] stp enable ``` 4. 配置STP的优先级(Priority),可以使用以下命令设置优先级为4096(默认值为32768): ``` [Switch] stp priority 4096 ``` 5. 配置STP的根桥(Root Bridge),可以使用以下命令设置根桥的优先级为0: ``` [Switch] stp root primary ``` 6. 配置端口类型,可以使用以下命令将端口设置为指定类型(如access、trunk等): ``` [Switch] interface GigabitEthernet 0/0/1 [Switch-GigabitEthernet0/0/1] port link-type access ``` 7. 配置端口的STP状态,可以使用以下命令将端口设置为指定状态(如指定端口为根端口): ``` [Switch-GigabitEthernet0/0/1] stp edged-port enable ``` 8. 配置其他STP参数,如Hello时间、MaxAge时间等,可以使用相应的命令进行配置。 以上是ensp中配置stp的基本步骤,具体的配置命令可能因设备型号和软件版本而有所不同。在实际配置过程中,还需要根据网络拓扑和需求进行相应的调整和配置。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值