将IP组播转换为以太网组播地址

时间:2017-06-28 13:50:47

标签: networking multicast ethernet

有人可以解释如何将IP多播地址映射到以太网多播地址? 我知道对于以太网,很少有地址被保留,但不知道哪些地址

2 个答案:

答案 0 :(得分:1)

基本上,您需要使用最后23位的IPv4并在多播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

答案 1 :(得分:0)

要将IP多播地址转换为48位MAC多播地址,您需要了解48位MAC多播地址是如何产生的。

要获得一个48位的MAC地址OUI(24位,为个别地址留下24位),在IEEE注册的费用为1000美元,当时这是一笔很多的钱。试验多播的人无法负担得起,所以他和其他人一起买了OUI,他们把它分开,每个人在OUI中得到23位寻址。

IPv4多播地址具有28位寻址(224.0.0.0/4,因此32-4=28)。您必须以某种方式将28位IPv4寻址映射到23位MAC寻址。这意味着有多达32次(28-23=52^5=32)IPv4多播地址与48位MAC多播地址一样多。每个48位MAC多播地址将映射到32个不同的IPv4多播地址。

从IPv4多播地址到48位MAC多播地址的映射非常简单。只需取01-00-5E的48位MAC多播OUI,附加一个零位,然后附加IPv4多播地址的低23位。这将从IPv4多播地址创建48位MAC多播地址。

反向映射更复杂,并且由于每个48位MAC多播地址实际上代表32个不同的IPv4多播地址,因此它是不精确的。您只能从48位MAC多播地址恢复IPv4多播地址的最后23位。