交换机如何实现自学习算法

656 阅读5分钟

持续创作,加速成长!这是我参与「掘金日新计划 · 6 月更文挑战」的第20天,点击查看活动详情

交换机可以隔离碰撞域,因此收到了广泛的使用,隔离碰撞域的实现是基于帧交换表,而帧交换表是通过自学习算法自动建立起来的,因此着重考虑自学习算法的实现。

交换机的简单认识

交换机本质上是一个多接口的网桥,自身可以进行碰撞检测并进行转发目的主机,当网桥收到一个帧时,并不是向所有的接口转发此帧,而是先检查此帧的目的MAC 地址,然后再确定将该帧转发到哪一个接口,或把它丢弃。

使用交换机互连而成的交换式以太网上的某个主机,要给另一个主机发送单播帧,该单播帧进入交换机后,交换机会将该单播帧转发给目的主机,而不是网络中的其他各个主机。

交换机的认识.webp

说明:

  • 内部使用帧交换表来实现目的Mac地址和接口的查询
  • 一个交换机可以有多个接口连接多个主机或另一个交换机
  • 交换机工作以全双工方式工作。因为可以进行存储转发,所以就不不需要半双工方式
  • 帧交换表使用自学习算法自动建立起来的
  • 转发帧有两种方式
    • 存储转发,先缓存再转发
    • 直通交换,接收数据的同时立刻按MAC地址进行转发,不检查差错就转发,可能会转发无效帧

自学习算法

以太网交换机是一种即插即用设备,刚上电启动时其内部的帧交换表是空的,随着网络中各主机间的通信,以太网交换机通过自学习算法自动逐渐建立起帧交换表。

比如A主机和B主机的自学习为例说明

A主机向B主机发送帧

A主机发送帧到B主机.webp

说明: 1、A发送一个帧到交换机1,交换机1的接口1接收到帧 2、在交换表中查找B的MAC地址,没有找到,就向接口1以外的其他接口转发帧(就是盲目泛洪) 3、同时要将MAC地址A和接口1写入到交换表中,这样下次获取到A的MAC的时候就可以直接查找到A接口了,称作叫登记。 4、接口2连接的是一个主机C,发现并不是该目的地址,直接丢弃 5、接口3连接的是主机B,接收成功 6、接口4连接的是另一台交换机2,发送到接口2 7、帧在交换2的表中查找B的MAC地址,没有找到,就向接口2以外的其他接口盲目泛洪 8、同时将MAC地址A和接口2写入到交换表中(登记) 9、所有的接口都查找失败,不作处理

B主机向A主机发送帧

B主机发送帧给A主机.webp

说明 1、B发送帧到交换机1,在交换表中查找到A的MAC地址,发现是接口1,就直接从接口1发送出去 2、同时在交换表中将B主机的MAC地址和接口3写入 3、A主机接收到帧,发现MAC地址是A主机的MAC地址,接收

E主机发送帧到A主机

E主机发送帧到A主机.webp

  • 对于E主机发送帧到A主机时,因帧交换表中查找到A地址为接口2,边从接口2发送出去,并记录E-3
  • 接口1、4均没有查找到,不作处理,从接口2进入到交换机1,
  • 此时在帧交换表中查找到A主机是接口1,就直接发送到接口1中,此时在交换机1中登记E-4

注:每条记录都有自己的有效时间,到期会自动删除,这是因为MAC地址与交换机接口的对应关系并不是永久性的

生成树协议

在实际中需要增加冗余链路来提高以太网的可靠性,不至于一条链路故障,主机间就无法通讯,但是冗余链路会导致网络环路,所以需要使用生成树来协议来避免网络环路,又可以在其中一条链路故障时启动其他链路。

冗余链路

使用冗余链路可以提高以太网的可靠性,不至于一条链路故障,主机间就无法通讯

冗余链路会形成网络环路会造成严重的问题:

  • 会导致广播风暴,两个主机间的通讯会经过多种网络链路,浪费网络资源,也造成广播风暴
  • 主机收到重复的广播帧
  • 交换机上的帧交换表震荡,总是需要不停的修改帧交换表

使用生成树协议可以解决冗余链路造成的问题

交换机能够自动计算并构建一个逻辑上没有环路的网络,而且最终生成的树形逻辑拓扑结构要确保连通整个网络,当物理拓扑发生改变,交换机都将进行生成树的重新计算

总结:

自学习过程.webp

  • 交换机可以通过帧交换表查找目的主机,可以隔离碰撞域
  • 帧交换表的实现是通过自学习算法,自学习算法是在网络中主机间不断的通信中逐渐建立起来的。
  • 自学习算法最重要的两点1)主机发送出帧后交换机便将该MAC地址以及接口登记;2)一个接口成功接收到帧,变将该接口和MAC地址登记
  • 冗余环路可以提高以太网的可靠性,但是会造成网络环路,可以通过创建最小生成树的创建来避免网络环路