组播地址基础详解
IANA已经把D类地址空间分配给了IP组播地址.
D类空间的地址在其第一个字节的前4位,用二进制值1110来识别.
所以组播地址的范围是:
224.0.0.0到239.255.255.255.
D类地址: www.2cto.com
字节1 字节2 字节3 字节4
1110xxxx xxxxxxxx xxxxxxxx xxxxxxxx
![clip_image002](http://up.2cto.com/2012/0621/20120621101359369.jpg)
原理是这样的:
该空间的地址用二进制表示并且第一个八位数的前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地址. www.2cto.com
以太网IP与组播MAC地址映射
![clip_image004](http://up.2cto.com/2012/0621/20120621101400954.jpg)
由于IPv4组播地址的高4位是1110,代表组播标识,而低28位中只有23位被映射到IPv4组播MAC地址,这样IPv4组播地址中就有5位信息丢失。于是,就有32个IPv4组播地址映射到了同一个IPv4组播MAC地址上,因此在二层处理过程中,设备可能要接收一些本IPv4组播组以外的组播数据,而这些多余的组播数据就需要设备的上层进行过滤了。
NOTES:
可以看到,三层组播IP是以 1110 开始的。
范围从1110 0000 - 1110 1111 ,也就是224到239.
那么这里
组播MAC是以0x010005E开始的.
最后可以看到,三层组播IP,224-239开头的,最后映射到二层组播MAC,都变成一个了.
说到这里,就会产生一个问题。
MAC地址映射的性能影响:
因为第三层IP组播地址信息的全部28位比特不能映射进23bit可用的mac地址空间,所以在映射的过程中,丢失了5bit的地址信息,这会导致组播地址映射到第二层IEEE MAC地址时,会有2的5次方,或者32:1的地址不明确.这也就意味着,每一个IEEE IP多播MAC地址可以表示32个IP地址组播地址.
MAC和IP的后23位一一对应,后第24位可以是0或1,这一位没有对应上。每一个2层地址可以映射成32个3层地址。
0100.5e01.0101
0100.5e可以映射成IP地址的第1个字节:224-239
01.0101可以映射成IP地址的后3个字节:1.1.1和129.1.1
这个MAC地址可以映射成:224.1.1.1、224.129.1.1、225.1.1.1、225.129.1.1….239.129.1.1这么32个IP地址。
记得一前段时间,客户有一个这样的需求。
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. www.2cto.com
其实,这个需求就是,在二层
交换机上面,客户不想用48bit的二层组播MAC地址标示,觉得太麻烦,这也可以理解,很多客户根本就记不住MAC地址前面25bit是以0x01005E开头的,更分不清楚后面的对应关系了。所以客户说,想要在二层交换机上面写三层的组播IP地址,让
系统自动的翻译成二层的组播MAC.
这里通过二层组播的mac原理,已经知道了,这样会遇到一个很大的问题就是一个MAC可以同时对应32个组播IP.
所以最后软件的实现方式是:不管客户写什么IP开头,比如说224/239/225/226.那么最终映射到系统的命令行会自动变成224.这里会给客户一个提醒的命令行,说明一下这个问题的情况,然后最终系统识别到的还是01005E的前25位.
达到了客户的要求,但是也需要把这个问题给客户讲清楚.