二层转发中的冗余链路(环路)


冗余链路问题

在上面所示的拓扑图中,我们设置了一条冗余的链路(蓝色),当其中一条链路出现问题时,另一条链路可以作为备用链路顶替上去,可以说这是一种防灾的措施。然而如果直接将上述措施应用在实际的网络中,会出现以下诸类问题。

STP可以解决由冗余链路引发的问题,简单来说,STP实现了不改变物理连接的同时“阻塞”冗余链路。这篇文章主要讨论各类问题,对STP的原理咱先不展开讨论,详情可参考这篇文章。

此外Smart Link、ETH-Trunk、设备堆叠也是防止环路问题的可用手段。

广播风暴

和IP包不同的是,数据链路层所转发的数据包并没有TTL(Time to Live),也就是说一个数据包有可能在网络中被无限转发下去,直到到达目的mac地址。倘若一个局域网中存在环路,那么这些被交换机无限转发的数据包便会形成“广播风暴”,结合拓扑图来分析广播风暴的形成过程。

  1. 问题始于PC1所发出的一段广播帧(有可能为ARP请求),Fa0/1端口首先接收到了该请求。
  2. 按照二层转发的流程,SW1首先会更新PC1的在mac地址表中的信息。
  3. SW1将该广播帧转发至除入端口之外的所有端口。
  4. SW2的Fa0/24Fa0/23都会收到来自SW1的广播帧。
  5. 对SW2的Fa0/24而言,广播帧的信息要通过其他端口转发出去,其中就包括了与Fa0/24相连的SW1的Fa0/23端口。同理,SW2的Fa0/23也会将数据帧转发到SW1的Fa0/23
  6. 由于数据链路层的广播帧没有TTL,它会一直在这个环路里不停的转发。简直是”此恨绵绵无绝期“

mac地址表不稳定

我们都知道,二层转发中的mac地址表是依据数据帧中的源mac地址更新的,那么随着上面的广播风暴的发生,mac地址表中的数据也会变得不稳定。结合实例来说明:

  1. 当PC1发出的广播帧到达Fa0/1时,SW1更新它的mac地址表。

  2. 广播帧经由Fa0/23Fa0/24转发。

    帧经过交换机时,其源、目标MAC是不会变的(数据帧在交换机之间转发)

  3. 两个广播帧不会同时到达SW2,假设SW1-Fa0/23端口转发的广播帧先到达,那此时SW2就会将PC1的mac地址和SW2-Fa0/24绑定

  4. 没一会儿,SW1-Fa0/24发出的帧到达了SW2-Fa0/23,SW2的mac地址表就需要更新绑定关系。如此你来我往,可谓是一场极限拉扯

  5. 每次更新mac地址表都需要写入缓存,因此mac地址表的震荡会引起交换机性能的下降。

重复帧拷贝

那如果PC1不发广播帧了,只发一个目标是PC3的单播帧的话,还会有问题发生吗?

当然,不发生是不可能的🐶

我们来还原一下:

  1. PC1向PC3发送一个单播帧,它首先要把该帧发送给SW1-Fa0/1
  2. 如果此时Fa0/1恰好不知道PC3的端口映射,那它就只好把这个帧广播出去。
  3. SW2-Fa0/23和SW2-Fa0/23都会收到一个单播帧,此时假设SW2的mac地址表记录了PC3与端口SW2*-Fa0/1*相连。
  4. 那么两个端口的单播帧都将被转发给PC3,一次通信,两个数据帧。不得不说,你给的太多了

文章作者: Hank
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 Hank !
评论
  目录