IP组播技术有效地解决了单播和广播在点到多点应用中的问题。组播源只发送一份数据,数据在网络节点间被复制、分发(PIM),且只发送给需要该信息的接收者。
1、前言
网络中存在各种各样的业务,从流量模型看一般可以将业务分为两类:
1)点到点业务:比如FTP,WEB业务,
特点:不同的用户有不同的需求,比如用户A需要下载资料A,用户B需要下载资料B。
此类业务一般由单播承载,服务器对于不同用户发送不同的点到点数据流。
2)点到多点业务:比如IPTV,视频会议等,
特点:用户对于业务有相同的需求,比如用户A,B,C,D都需要收看视频X,此类业务可以使用单播,组播,广播承载。使用单播或广播承载点到多点业务时存在一定问题。
组播技术能够较好的解决单播或广播,在承载点到多点业务时存在的问题。
2、点到多点业务的困境
点到多点业务可以由单播,组播,广播进行承载,现网中也有各种各样的实现方式。但使用单播或者广播承载点到多点业务时存在一些固有的问题。
单播承载点到多点业务(IPTV场景)
广播承载点到多点业务(IPTV场景)
在单播通信中每一个数据包都有确切的目的IP地址;(上左图)
对于同一份数据,如果存在多个接收者,Server需发送与接收者数目相同的单播数据包;当接收者增加到成百上干时,将极大加重Server创建相同数据和发送多份相同拷贝后所产生的消耗,网络中的设备性能及链路带宽都会面临一定程度的浪费;
单播方式较适合用户稀少的网络,当用户量较大时很难保证网络传输质量。
广播数据包被限制在广播域中;(上右图)
一旦有设备发送广播数据,则广播域内所有设备都会收到这个数据包,并且不得不耗费资源去处理,大量的广播数据包将消耗网络的带宽及设备资源;
广播方式只适合共享网段,且信息安全性和有偿服务得不到保障。
使用组播承载点到多点业务
组播方式下,单一的信息流沿组播分发树被同时发送给一组用户,相同的组播数据流在每一条链路上最多仅有一份。
相比单播和广播,使用组播的好处如下:
相比单播,用户的增加不会导致信息源负载的加重,不会导致网络资源消耗的显著增加。
相比广播,不会造成网络资源的浪费,并能提高信息传输的安全性,而且组播可以实现跨网段的传输。
3、组播介绍
(1)组播定义
是指接收者的数量和位置,在源端主机不知道的情况下,仅由源发出一份组播报文,向目标组播IP地址发送数据的过程。
组播方式解决了单播情况下,数据的重复拷贝及带宽的重复占用,也解决了广播方式下带宽资源的浪费。
IP组播技术实现了IP网络中点到多点的高效数据传送,能够有效的节约网络带宽、降低网络负载,在实时数据传送、多媒体会议、数据拷贝、游戏和仿真等诸多方面都有广泛的应用。
(2)组播特点
1、组播实现点到多点的高效数据传输。(通常基于UDP)
2、提高效率优化性能:组播可以有效节约带宽、降低网络负载。(按需发送,不会和广播一样只会泛洪,减少了对链路带宽的浪费)
3、分布式应用:组播广泛应用于IPTV、实时数据传送和多媒体会议等。(常用于直播,视频会议,电视网络等处)
4、组播报文
(1)组播数据报文结构
组播数据报文的结构与单播报文类似,但组播数据报文的目的MAC地址与目的IP地址与单播报文有很大差异
组播目的IP地址:目的IP地址为组播IP地址,地址范围:224.0.0.0 - 239.255.255.255
组播目的MAC地址:目的MAC地址为组播MAC地址,组播MAC地址由组播IP地址映射而来。
5、组播地址
为了使组播源和组播组成员进行通信,需要提供网络层组播,使用IP组播地址。同时,为了在本地物理网络上实现组播信息的正确传输,需要提供链路层组播,使用组播MAC地址。
(1) 组播IP地址
组播IP地址:一个组播IP地址就是一个IP地址,并不是表示具体的某台主机。而是表示一组主机的集合,主机声明加入某组播组,即声明自己需要接收目的地址为该组播地址的数据。
IP组播常见模型分为ASM模型和SSM模型
组播地址:
组播MAC地址:01-00-5E-XX-XX-XX
组播地址的范围:224.0.0.0-239.255.255.255(D类地址空间,第一个字节的高四位1110)
本地协议预留组播地址:224.0.0.0-224.0.1.255 (永久组地址)地址224.0.0.0保留不做分配,其他地址供路由协议使用。
本地管理组地址:239.0.0.0-239.255.255.255 仅仅在特定的本地范围内有效
用户组播地址:224.0.2.0-238.255.255.255 (临时组地址),全网范围有效。
公用组播地址:224.0.1.0-224.0.1.255 可以用于INternet;
(2)组播IP地址分类
永久组地址:IANA为路由协议预留的组播地址,用于标识一组特定的网络设备(也称保留组播组)。永久组地址保持不变,组成员的数量可以是任意的,甚至可以为零。
临时组地址:为用户组播组临时分配的IP地址,组成员的数量一旦为零,即取消。
IANA(Internet Assigned Numbers Authority,互联网编号分配委员会)将D类地址空间分配给IPv4组播使用,地址范围为224.0.0.0-239.255.255.255。
D类地址范围 | 含义 |
224.0.0.0-224.0.0.255 | 为路由协议预留的永久组地址。用于标识一组特定的网络设备,供路由协议、拓扑查找等使用,不用于组播转发。 该类组播地址只能在本地链路工作,IANA将这些地址保留用于特殊用途。几个典型的例子: 224.0.0.0 //保留不做分配 224.0.0.1 //所有组播主机 224.0.0.2 //所有组播路由器 224.0.0.9 //RIPV2路由器 224.0.0.5 //OSPF路由器组播地址 224.0.0.6 //OSPF DR组播地址 该范围内的地址属于局部范畴,不论生存时间字段(TTL)值是多少,都不会被路由器转发(只能在一个广播传递),当起开了这个协议的设备就会接受对应的永久广播地址,否则不会接收,所以也是做到了精确的接收。 |
224.0.1.0~231.255.255.255 233.0.0.0~238.255.255.255 | ASM(Any-Source)临时组地址。这种类型的组播地址全局有效。 IANA还做了进一步的范围细化,其中两类值得关注的地址范围: SSM组地址及GLOP组地址。 |
232.0.0.0-232.255.255.255 | SSM(Source-Specific-Multicast)临时组地址。缺省情况下的SSM组播地址,全网范围内有效。 总的来说SSM地址的范围比ASM要小很多,第二和第三这两种地址的服务是通过相应机构监督完成的。 |
239.0.0.0-239.255.255.255 | (Any-Source)本地管理组播地址,仅在特定的本地管理域内有效。 本地管理组播地址属于私有地址,在不同的管理域内使用相同的本地管理组播地址不会导致冲突。(可以定义为ASM服务或者SSM服务) |
1)IPv4组播地址
IPv4地址空间分为五类,即A类、B类、C类、D类和E类。在IPv4地址空间中,D类地址被用于组播(224.0.0.0-239.255.255.255),且仅能作为组播报文的目的地址使用,不能作为源地址使用。
高4bit固定为1110。使用D类地址(224.0.0.0-239.255.255.255),又分为永久组地址和临时组地址(见下表)。
永久组播组(224.0.0.X) | 说明 |
224.0.0.1 | 所有设备(主机与路由器)的地址 |
224.0.0.2 | 所有路由器的地址 |
224.0.0.4 | DVMRP路由器 |
224.0.0.5 | 所有OSPF路由器 |
224.0.0.6 | OSPF指定路由器 |
224.0.0.9 | Rip-2路由器 |
224.0.0.9 | EIGP路由器 |
224.0.0.13 | PIM路由器 |
一个组播地址就表示一个点到多点的数据流。比如IPTV数据流,语音会议数据流。
IPv4组播报文的源地址字段为IPv4单播地址,可使用A、B或C类地址,不能是D类、E类地址。
在网络层上,加入同一组播组的所有用户主机能够识别同一个IPv4组播组地址。一旦网络中某用户加入该组播组,则此用户就能接收以该组地址为目的地址的IP组播报文。
大多数情况下,同一个组播网络里不同的业务(比如:IPTV、语音会议)就需要使用不同的组播IP地址。
临时组播组 | 说明 |
224.0.1.0~231.255.255.255 233.0.0.0~238.255.255.255 | ASM/SFM 组播地址,全网范围内有效 |
232.0.0.0~232.255.255.255 | SSM 组播地址,全网范围内有效 |
239.0.0.0~239.255.255.255 | 本地管理组播地址,仅在特定的本地范围内有效。 |
2)IPv6组播地址
FF00:0000:0000:0000:0000:0000:0000:0000 ~ FFFF:FFFF:FFFF:FFFF:FFFF:FFFF:FFFF:FFFF
IPv6地址长度是128位,组播地址的定义如下图所示。
高8bit固定为FF,标识此地址为组播地址。即IPv6组播地址总是以FF开头。
往后4bit为flag位,用来标识组播地址的状态。(高3位取0做保留,最低位为0时表永久组播地址,为1时表非永久组播地址),其含义如下:
取值 | 含义 |
0 | 表示是IANA指定的常用组播地址,也叫保留组地址 |
1 | 表示是ASM范围的组播地址 |
2 | 表示是ASM范围的组播地址 |
3 | 表示是SSM范围的组播地址 |
其他 | 未分配 |
再往后4bit为scope位,标识组播组的应用范围(见下表)。
取值 | 含义 |
0、3、F | 保留 |
1 | 节点(或接口)本地范围(node/interface-local scope) |
2 | 链路本地范围(link-local scope) |
4 | 管理本地范围(admin-local scope) |
5 | 站点本地范围(site-local scope) |
8 | 机构本地范围(organization-local scope) |
E | 全球范围(global scope) |
其他 | 未分配 |
Group ID(112位):组播组标识号。与Flags字段和Scope字段结合指定的范围内唯一标识组播组。
(3)组播MAC地址
以太网传输IPV4单播报文的时候,目的MAC地址使用的是接收者的MAC地址。但是在传输组播数据时,其目的地不再是一个具体的接收者,而是一个成员不确定的组,所以要使用IPV4组播MAC地址。
IANA规定,IPv4组播MAC地址的高24位为0x01005e,第25位为0,低23位为IPv4组播地址的低23位,例如,组播组地址224.0.1.1对应的组播MAC地址为01-00-5e-00-01-01。
IPv4组播地址的前4位是固定的1110,对应组播MAC地址的高25位,后28位中只有23位被映射到MAC地址,因此丢失了5位的地址信息,直接结果是有32个IPv4组播地址映射到同一MAC地址上。
例如IP地址为224.0.1.1、224.128.1.1、225.0.1.1、239.128.1.1等组播组的组播MAC地址都为01-00-5e-00-01-01。网络管理员在分配地址时必须考虑这种情况。
IETF认为同一个局域网中两个或多个组地址生成相同的MAC地址的几率非常低,不会造成太大的影响。
组播MAC地址标识了一组设备,这种MAC地址第1个字节的最低比特位为1,例如0100-5e00-00ab。一个组播MAC地址所标识的一组设备有着共同的特点,那就是它们都加入了相同的组播组,这些设备将会侦听目的MAC地址为该组播MAC地址的数据帧。只有单播MAC地址才能够被分配给一个以太网接口,组播或广播MAC地址是不能被分配给任何一个以太网接口的,换句话说,这两种类型的MAC地址不能作为数据帧的源MAC地址,而只能作为目的MAC地址。
对于组播MAC地址,例如STP协议的BPDU载荷便是被直接封装在以太网数据帧中的,并且数据帧的目的MAC地址为0180-c200-0000,这就是一个组播MAC地址,类似这样的例子还有很多,这些组播MAC地址并不与组播IP地址存在关联。
除此之外,还有一类组播MAC地址是我们需要格外关注的,那就是与组播IP地址存在映射关系的组播MAC地址。
1)组播MAC地址与单播MAC地址的区别
就以太网而言,IP组播帧都使用以0x0100.5Exxxxxx的24位前缀开始的MAC层地址。
1)组播IP与MAC的映射
组播IP地址和MAC地址的映射,需要组播IP地址与组播MAC地址的自动映射。
组播MAC地址的高24bit为0x01005e,MAC地址的低23bit为组播IP地址的低23bit。
1.组播MAC,第一个8位组的最后一位恒为1。
2.单播MAC,第一个8位组的最后一位恒为0。
3.组播IP地址有5位被丢弃,因此组播IP与MAC的对应关系是32:1。
MAC地址的低23bit为组播IP地址的低23bit。
映射导致的问题
组播IP地址映射成组播MAC地址时,会导致32个组播IP地址对应一个组播MAC的问题。
由于IP组播地址的前4bit是1110,代表组播标识,而后28bit中只有23bit被映射到MAC地址,这样IP地址中就有5bit信息丢失,直接的结果是出现了32个组播IP地址映射到同一组播MAC地址上。
IETF认为同一个局域网中两个或多个组地址生成相同的MAC地址的几率非常低,不会造成太大的影响。
存在当第3层IP地址映射成第2层MAC地址时导致32:1的地址不明确问题。
2)IPv4组播MAC地址
以太网传输IPv4单播报文的时候,目的MAC地址使用的是接收者的MAC地址。但是在传输组播数据时,其目的地不再是一个具体的接收者,而是一个成员不确定的组,所以要使用IPv4组播MAC地址,即IPv4组播地址映射到链路层中的地址。组播MAC地址标识了一组设备,这种MAC地址第一个字节的最低比特位为1。
IANA规定,IPv4组播MAC地址的高24位为0x01005e,第25位为0,低23位为IPv4组播地址的低23位,映射关系如图5所示。例如:组播组IP地址224.0.1.1对应的组播MAC地址为01-00-5e-00-01-01。
注意:IPv4组播地址的前4位是固定的1110,对应组播MAC地址的高25位,后28位中只有23位被映射到MAC地址,因此丢失了5位的地址信息,直接结果是由32个IPv4组播地址映射到同一个MAC地址上。例如:224.0.1.1、224.128.1.1,225.0.1.1、239.128.1.1等组播组的组播MAC地址都为01-00-5e-00-01-01。网络管理员在分配地址时必须考虑这个情况。
组播MAC地址与单播MAC地址的区别:
IANA规定,IPv4组播MAC地址的高24位为0x01005e,第25位固定为0。
组播数据帧的传输目的不再是一个具体的接收者,而是一个成员不确定的组,所以使用的是组播MAC地址。IANA规定,组播MAC地址的高24bit为0x01005e,第25bit固定为0。
组播MAC地址用于在链路层标识属于同一组播组的接收者。
以太网传输单播数据帧的时候,目的MAC地址使用的是接收者的MAC地址或者下一跳路由器的MAC地址。这个MAC地址通过ARP获取。对于组播数据帧也需要有一个可预知的MAC地址。
2)IPv6组播MAC地址
IPv6组播MAC地址的高16位为0x3333,低32位为IPv6组播地址的低32位。(下图示)是IPv6组播地址FF01::1111:1的MAC地址映射举例。
IPv6地址高8位固定;128-8-32=88,有2^88个IPv6组播MAC地址重复
整个华为数通学习笔记系列中,本人是以网络视频与网络文章的方式自学的,并按自己理解的方式总结了学习笔记,某些笔记段落中可能有部分文字或图片与网络中有雷同,并非抄袭。完处于学习态度,觉得这段文字更通俗易懂,融入了自己的学习笔记中。如有相关文字涉及到某个人的版权利益,可以直接联系我,我会把相关文字删除。【VX:czlingyun 暗号:CSDN】