二层环路

产生原因

典型局域网示意图
在局域网中,为了实现冗余,往往会有如图所示的拓扑,在这种拓扑中,会产生环路,二层环路往往是由于物理拓扑出现了环路,如3台交换机三角形连接,二层环路的出现会产生两个问题:广播风暴和mac地址表震荡:

广播风暴导致网络不可用

假设交换设备上没有启用stp协议,如果hostA发出广播请求hostB的mac地址,那么广播报文将被两台交换设备的端口1接收,并分别从端口2广播出去,然后端口2又收到另一台交换设备发过来的广播报文,再分别从两台交换设备的端口1转发,转发的同时会进行复制,如此反复,最终导致整个网络资源被耗尽,网络瘫痪不可用。

MAC地址表震荡导致MAC地址表项被破环

即使网络中不出现广播报文,从而消除广播风暴的可能,但是单播报文依然是危险的。比如hostA发出一个单播报文给hostB,如果此时hostB临时从网络中移去,那么交换设备的mac地址表中有关hostB的表项也会老化消失,此时hostA发给hostB的单播报文就会同时被交换设备的端口1和2接收到,端口1和端口2的的mac地址映射就会出现同一MAC地址对应两个出接口的情况,但是mac地址表不会允许这样的情况发生,所以就会更新mac地址表。由于数据不停在端口1 和端口2 之间互相转发,导致交换设备不停修改自己的mac地址表项,从而引起了mac地址表频繁抖动,如此以往,最终导致mac地址表项被破坏。
在这里插入图片描述

防环机制

stp

smart-link

LACP链路捆绑

设备堆叠

三层环路

产生原因

三层环路一般是物理拓扑有环路,并且设备之间的路由表形成了互指。
三层环路不容易产生,因为存在路由协议自身缺省的防环机制和ttl防环机制。只有静态路由需要人工预防。
三层环路比较容易发生在特殊的场景下,比如双点双向路由发布。

三层防环机制

转发层面

三层的IP头部存在ttl字段,所以报文不会无休止转发。ttl占8bit,最大255,设备接收到报文会需要减1,减到0就会丢弃,并且向报文的源IP发送type为1,code为0的icmp错误消息。

控制层面

依赖路由协议自身的防环机制。

rip

16跳限制
水平分割
毒性逆转
触发更新

OSPF

区域内依靠spf算法
区域间依靠区域结构设计和ABR的水平分割原则

ISIS

区域内依靠SPF算法
区域间依靠路由泄露的down位

BGP

AS之间依靠AS号,AS内部只传一跳,如果使用路由反射就依靠簇list和起源id,使用联盟,就依靠联盟的私有AS号。

组播

依靠RPF检查。