考虑一个标准的 GigE 网络交换机。为了进行交换,大概需要维护网络上所有设备的 MAC 地址与其(交换机)端口号的映射。
- 它是如何维护这样的地图的?
- 涉及的协议是什么?
- 如果我改变网络某一部分的拓扑结构,整个网络会收到通知吗?还是会“懒洋洋地”发现一些东西(即在第一次需要时)?
答案1
交换机通过查看每个传入数据包的源 mac 地址来学习 MAC 端口映射。因此,交换机可以逐步构建 mac 表。
当需要转发数据包时,它会查找目标 mac 地址,并根据 mac 表将其转发到适当的端口。如果没有找到任何条目,它会将数据包发送到所有端口(发送端口除外)。
为了仅保留 mac 表中的有效条目,交换机会在特定超时后刷新未使用的条目。
当网络拓扑发生变化时,交换机在收到新的数据包时,可以学习到该mac地址的新位置,并覆盖该mac地址的旧映射。
欲了解更多信息,请查看此链接。
答案2
它被称为 MAC 地址表,其中包含port
、MAC address
和timestamp
。如果您更改拓扑,因为您将断开一些电缆,那么包含相关端口的所有条目都将从 MAC 地址表中丢弃。在从设备接收到每个第一个数据包后,将学习新条目。如果设备未直接连接,则某些条目将保留在错误的端口上,但通常由于广播,它将很快被学习。如果没有来自设备的流量,则它必须经过超时,直到其条目被丢弃。超时通常为 120 秒。
答案3
采取这种场景:
host_a - 端口 1 host_b - 端口 2
当 host_a 想要发送一个数据包到 host_b 时,就会触发交换机,记录 host_a 的 mac 地址,而因为 host_b 还没有发送任何内容,所以会在所有端口上广播这个帧——host_b 会注意到发送给他的是这个数据包,并在端口 b 上做出响应。
此时交换机知道 host_a 在端口 1 上有 mac1,而 host_b 在端口 2 上有 mac2。任何进一步的通信都将通过这些端口进行,而不是广播。
- 如何维护地图是特定于供应商的,但它归结为 mac 及其相关端口的列表。
- 在最简单的模型中,实际上没有协议,只是一切都发生在 OSI 第 2 层
- 如果您更改拓扑,交换机将删除旧条目并使用新条目进行更新(因为 host_1 mac1 位于端口 10 而不是 1 上)。
我所说的适用于非管理型交换机,也可以适用于管理型交换机,但事情变得更加复杂。例如,思科可以配置哪个 mac 接入哪个端口,它们运行专有协议作为 ISL 或开放 dot1q http://en.wikipedia.org/wiki/IEEE_802.1Q链接文本