如何在具有多个交换机的计算机之间发送以太网流量?

网络工程 转变 MAC地址
2022-02-16 02:32:23

我想知道当多个交换机介于两者之间时,如何传递从本地网段上的笔记本电脑-A笔记本电脑-B的以太网数据包。

对于仅在所有传出网络端口上复制数据包的集线器,从Laptop-A发送的数据包最终将到达Laptop-B当多个交换机处于中间时,ARP 请求(广播)也是如此。

但是,交换机仅在单个传出网络端口上发送数据包,具体取决于目标 MAC 地址及其 CAM 表。但是,Switch-A的 CAM 表只知道直接连接到它的设备,所以它对Laptop-B一无所知

那么,Switch-A是如何知道将发往笔记本电脑MAC 地址的流量发送到哪里的呢?

在此处输入图像描述

2个回答

那么,Switch-A 是如何知道将发往笔记本电脑-B MAC 地址的流量发送到哪里的呢?

通过做交换机所做的事情:未知的单播泛洪。它从所有端口(接收帧的端口除外)发出带有笔记本电脑 B 的 Dst MAC 地址的给定帧,包括到交换机 B 的交换机间链路。

假设 Switch-B 已经知道笔记本电脑-B 的连接位置(如果不知道:请参阅上面的“未知单播泛滥”),它将通过笔记本电脑-B 的交换机端口发送帧。来自笔记本电脑-B 的回复帧可能不必是未知单播泛洪的,因为当帧(由 Switch-A 泛洪未知单播)进入 Switch 时,请求系统的给定 MAC 地址已经获知-B 通过交换机间链路,因此将有一个 MAC 地址表条目。

交换机在单个交换机端口的 MAC 地址表中具有多个条目是完全正常的 [1]。

所以最终,随着时间的推移 [2],Switch-A 将拥有一个 MAC 地址表,其中所有 -A 系统在它们自己的端口上,所有 -B 系统在它们自己的端口上(交换机 B 反之亦然)


[1] 除非另有配置。

[2] 300 秒通常是 MAC 地址表中条目的默认生存期。除非另有配置。

但是,Switch-A 的 CAM 表只知道直接连接到它的设备,所以它对笔记本电脑-B 一无所知?

这通常是错误的。

交换机可以并且确实跟踪单个端口后面的许多 MAC 地址。

正如 Marc 的回答中所说,如果交换机收到一个目的地未知的单播帧,它将把它泛洪到所有接口(除了接收它的接口)。

但实际上这种情况很少发生,除非交换机过载或重新启动。实际上,如果节点 A 想要与节点 B 通信,它将首先广播*一个发现数据包,这将告诉网络上的每个交换机如何向 A 发送流量。然后 B 将发送回复(可能是单播、多播或广播取决于协议)到该发现数据包,该数据包将至少通知沿从 B 到 A 的路径的所有交换机 B 的位置。

* 对于 ipv6,数据包在技术上是多播的,但这不会影响交换机方面的事情。