如何在具有多个交换机的计算机之间发送以太网流量?
那么,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,数据包在技术上是多播的,但这不会影响交换机方面的事情。
