路由与交换技术
上QQ阅读APP看书,第一时间看更新

1.1.4 交换机的数据帧转发方式

在前文中,我们曾经借助图1-3介绍了网桥转发数据帧的方式,并且解释了这种方式是如何实现以端口隔离冲突域这一设想的。在本小节中,我们会对这部分内容进行扩充,详细解释交换机是如何对数据帧进行转发的。

交换机与网桥的工作原理基本相同。在初始状态下,它的MAC地址表为空,其中并不包含任何条目。每当交换机通过自己的某个接口接收到一个数据帧时,它就会将这个数据帧的源MAC地址、接收到这个数据帧的接口编号作为一个条目保存在自己的MAC地址表中,同时在接收到这个数据帧时重置老化计时器的时间。这就是交换机为自己的MAC 地址表动态添加条目的方式。图1-9所示为交换机将入站数据帧的源MAC地址保存到了自己的MAC地址表中。

图1-9 交换机添加MAC地址条目

在记录了这样一条MAC地址条目后,如果交换机再次通过同一个接口接收到以相同MAC地址为源MAC地址的数据帧,它就会用新的时间来更新这个MAC地址条目,确保这个目前仍然活跃的条目不会老化。但如果交换机在老化时间之内都没有通过这个接口再次接收到这个MAC地址发来的数据帧,它就会将这个老化的条目从自己的MAC地址表中删除。图 1-10 所示为交换机长期没有再次接收到终端 1 发送的数据帧,因此将图 1-9中记录的MAC地址条目进行了删除。

图1-10 MAC地址条目老化

管理员也可以手动在交换机的MAC地址表中添加条目。管理员静态添加的MAC地址条目不仅优先级高于交换机通过自己的接口动态学习到的条目,而且不受老化时间的影响,会一直保存在交换机的MAC地址表中。

在了解了交换机是如何添加、更新和删除MAC地址表条目之后,接下来我们来介绍交换机如何使用自己学习到的MAC地址表条目来指导数据帧的转发操作。

当一台交换机通过自己的某个接口接收到一个单播数据帧时,它会查看这个数据帧的二层头部信息。这样做,一方面是因为交换机需要用数据帧的源 MAC 地址与其他相关信息来填充自己的 MAC 地址表;另一方面也是为了查看数据帧的目的 MAC地址,并且根据数据帧的目的 MAC 地址来查找自己的 MAC 地址表。在查找 MAC 地址表之后,交换机就会根据查找的结果对数据帧进行处理,这可以分为以下 3 种情形。

(1)交换机没有在自己的MAC地址表中找到这个数据帧的目的MAC地址。

由于交换机的MAC地址表中没有记录这个数据帧的目的MAC地址,因此交换机不知道以这个地址作为适配器地址的那台设备连接在自己的哪个接口上,甚至不知道自己目前是否连接了这样一台设备。这让交换机无法对以这个MAC地址作为目的地址的数据帧执行有针对性的转发操作。于是,交换机只能将这个数据帧从除了接收到它的那个接口之外的所有接口泛洪出去,期待这些接口当中也包含了连接有这台设备的那个接口。这个过程如图1-11所示。

图1-11 交换机上找不到目的MAC地址的情形

注释:

上面的描述为交换机处理未知单播数据帧的一般方式,并不排除有些交换机执行某种特殊特性,会直接丢弃未知单播。

(2)交换机的MAC地址表中拥有这个数据帧的目的MAC地址,且其对应的接口并不是接收到这个数据帧的接口。

在这种情况下,交换机确定地知道目的设备连接在自己的哪个接口上,因此交换机会根据MAC地址表中的条目将这个数据帧从与其目的MAC地址相对应的那个端口转发出去,而其他与这台交换机相连的设备则不会接收到这个数据帧。这个过程如图1-12所示。

图1-12 交换机按照MAC地址表执行数据交换

(3)交换机的MAC地址表中拥有这个数据帧的目的MAC地址,且其对应的接口正是接收到这个数据帧的接口

在图1-3所示的环境中,如果客户端1向客户端3发送数据帧,就会出现这种情形。如果出现了这种情况,交换机会认为这个数据帧的目的地址就在这个接口所连接的范围之内,因此目的设备应该已经接收到了这个数据帧。这个数据帧与其他接口的设备无关,没有必要将这个数据帧从其他接口转发出去。于是,交换机会丢弃这个数据帧。这个过程如图1-13所示。

在上面的介绍中,我们对交换机根据MAC地址表转发数据帧的方式进行了详细的介绍。但当今局域网环境的复杂程度远远超过本章中的示例,在更加复杂的需求和环境面前,我们不能仅仅依靠本章中介绍的MAC地址表来解决局域网中的所有问题。在后面几章关于交换的内容中,我们会介绍交换机在面对这些需求和问题时,所提供的更多基本技术与机制。

图1-13 交换机按照MAC地址表丢弃数据帧