20120607-组播地址基础

Technorati 标签: 组播,MAC,地址,对应关系

IANA已经把D类地址空间分配给了IP组播地址.

D类空间的地址在其第一个字节的前4位,用二进制值1110来识别.

所以组播地址的范围是:

224.0.0.0到239.255.255.255.

D类地址:

字节1 字节2 字节3 字节4

1110xxxx xxxxxxxx xxxxxxxx xxxxxxxx

20120607-组播地址基础

原理是这样的:

该空间的地址用二进制表示并且第一个八位数的前4位用1110表示.

1110xxxx.xxxxxxxx.xxxxxxxx.xxxxxxxx

下面给出一些常用的局部链接的组播地址:

224.0.0.1 所有主机

224.0.0.2 所有组播路由器

224.0.0.3 没有分配

224.0.0.4 DVMRP路由器

224.0.0.5 OSPF路由器

224.0.0.6 OSPF 指定路由器(DR)

224.0.0.7 ST路由器

224.0.0.8 ST主机

224.0.0.9 RIP2路由器

224.0.0.10 IGRP路由器

224.0.0.12 DHCP服务器/中继代理

224.0.0.13 所有的PIM路由器

224.0.0.15 所有CBT路由器

224.0.0.18 VRRP

224.0.0.19  224.0.0.255是可以使用的。其他的建议保留以便网络中的设备或者主机使用.

这里还要说明的是,实际上保留的地址空间远远不止那些.

IANA还预留了239.0.0.0--239.255.255.255的地址范围作为管理范围地址,以供在私有的组播领域内使用.

组播MAC地址

xxxxxx11.xxxxxxxx.xxxxxxxx.xxxxxxxx.xxxxxxxx.xxxxxxxx

MAC地址我们都知道是48位的,在第一个8位中的最后2位如果置为1的话,那么就规定为是组播的MAC地址.

以太网IP与组播MAC地址映射

20120607-组播地址基础

由于IPv4组播地址的高4位是1110,代表组播标识,而低28位中只有23位被映射到IPv4组播MAC地址,这样IPv4组播地址中就有5位信息丢失。于是,就有32IPv4组播地址映射到了同一个IPv4组播MAC地址上,因此在二层处理过程中,设备可能要接收一些本IPv4组播组以外的组播数据,而这些多余的组播数据就需要设备的上层进行过滤了。

NOTES:

可以看到,三层组播IP是以 1110 开始的。

范围从1110 0000 - 1110 1111 ,也就是224239.

那么这里组播MAC是以0x010005E开始的.

最后可以看到,三层组播IP224-239开头的,最后映射到二层组播MAC,都变成一个了.

说到这里,就会产生一个问题。

MAC地址映射的性能影响:

因为第三层IP组播地址信息的全部28位比特不能映射进23bit可用的mac地址空间,所以在映射的过程中,丢失了5bit的地址信息,这会导致组播地址映射到第二层IEEE MAC地址时,会有25次方,或者32:1的地址不明确.这也就意味着,每一个IEEE IP多播MAC地址可以表示32IP地址组播地址.

MACIP的后23位一一对应,后第24位可以是01,这一位没有对应上。每一个2层地址可以映射成323层地址。

0100.5e01.0101

0100.5e可以映射成IP地址的第1个字节:224239

01.0101可以映射成IP地址的后3个字节:1.1.1129.1.1

这个MAC地址可以映射成:224.1.1.1224.129.1.1225.1.1.1225.129.1.1….239.129.1.1这么32IP地址。

记得一前段时间,客户有一个这样的需求。

Multicast – when issuing command “multicast mac-address 01:00:5e:01:01:01 vlan 30 interface ethernet 0/0/1” – we state 239.1.1.1 as MAC address – they what to state it as IP address. 
其实,这个需求就是,在二层交换机上面,客户不想用48bit的二层组播MAC地址标示,觉得太麻烦,这也可以理解,很多客户根本就记不住MAC地址前面25bit是以0x01005E开头的,更分不清楚后面的对应关系了。所以客户说,想要在二层交换机上面写三层的组播IP地址,让系统自动的翻译成二层的组播MAC.

这里通过二层组播的mac原理,已经知道了,这样会遇到一个很大的问题就是一个MAC可以同时对应32个组播IP. 
所以最后软件的实现方式是:不管客户写什么IP开头,比如说224/239/225/226.那么最终映射到系统的命令行会自动变成224.这里会给客户一个提醒的命令行,说明一下这个问题的情况,然后最终系统识别到的还是01005E的前25位.

达到了客户的要求,但是也需要把这个问题给客户讲清楚.



本文转自 hny2000 51CTO博客,原文链接:http://blog.51cto.com/361531/891466

上一篇:#js #jquery 点击预览图片


下一篇:html 头部