【问题标题】:convert IP multicast to ethernet multicast address将 IP 多播转换为以太网多播地址
【发布时间】:2017-06-28 13:50:47
【问题描述】:

有人可以解释如何将 IP 多播地址映射到以太网多播地址吗? 我知道为以太网保留了几个地址,但不知道哪些地址

【问题讨论】:

    标签: networking multicast ethernet


    【解决方案1】:

    基本上你取 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 位不同,则这两个组播组的以太网数据包将被传送到这两个主机,要求主机中的网络软件丢弃不需要的数据包。

    来源:WikipediaRFC 1112

    【讨论】:

      【解决方案2】:

      要将 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=52^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 位。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2011-08-01
        • 2014-03-27
        • 2010-12-02
        • 2021-06-30
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多