【发布时间】:2017-06-28 13:50:47
【问题描述】:
有人可以解释如何将 IP 多播地址映射到以太网多播地址吗? 我知道为以太网保留了几个地址,但不知道哪些地址
【问题讨论】:
标签: networking multicast ethernet
有人可以解释如何将 IP 多播地址映射到以太网多播地址吗? 我知道为以太网保留了几个地址,但不知道哪些地址
【问题讨论】:
标签: networking multicast ethernet
基本上你取 IPv4 的最后 23 位并在多播 MAC 的开头添加 01:00:5E,例如:
ip = 224.1.2.3
mac = 0x01005e000000 + ip & 0x7FFFFF
IPv4 多播数据包使用以太网 MAC 地址范围 01:00:5e:00:00:00–01:00:5e:7f:ff:ff(具有 IANA 拥有的 OUI)传送。该范围有 23 位可用地址空间。第一个八位字节 (01) 包括广播/多播位。 28 位多播 IP 地址的低 23 位映射到可用以太网地址空间的 23 位。这意味着在传递数据包时存在歧义。如果同一子网上的两台主机都订阅了不同的组播组,而组播组的地址仅在前 5 位不同,则这两个组播组的以太网数据包将被传送到这两个主机,要求主机中的网络软件丢弃不需要的数据包。
【讨论】:
要将 IP 多播地址转换为 48 位 MAC 多播地址,您需要了解 48 位 MAC 多播地址是如何产生的。
要获得一个在 IEEE 注册的 48 位 MAC 地址 OUI(24 位,剩下 24 位用于单个地址)过去需要花费 1000 美元,这在当时是一大笔钱。很多。尝试多播的人买不起,所以他和其他人一起购买了 OUI,然后他们将其拆分,每个人在 OUI 中获得 23 位寻址。
IPv4 多播地址具有 28 位寻址(224.0.0.0/4,因此为 32-4=28)。您必须以某种方式将 28 位 IPv4 寻址映射到 23 位 MAC 寻址。这意味着 IPv4 多播地址的数量是 48 位 MAC 多播地址的 32 倍(28-23=5 和 2^5=32)。每个 48 位 MAC 多播地址将映射到 32 个不同的 IPv4 多播地址。
从 IPv4 多播地址到 48 位 MAC 多播地址的映射非常简单。只需取01-00-5E 的 48 位 MAC 多播 OUI,附加一个 0 位,并附加 IPv4 多播地址的低 23 位。这会从 IPv4 多播地址创建 48 位 MAC 多播地址。
反向映射更复杂,而且不精确,因为每个 48 位 MAC 多播地址实际上代表 32 个不同的 IPv4 多播地址。只能从 48 位 MAC 多播地址中恢复 IPv4 多播地址的后 23 位。
【讨论】: