组播技术基础

Posted 超凡脫俗

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了组播技术基础相关的知识,希望对你有一定的参考价值。

组播技术基础

在IPV4网络中,存在单播、组播及广播三种通信方式,单播即一对一通信,简单来说,单播报文源IP地址是报文发送方的IP地址,而目的地址则是报文接收者的IP地址,两个地址都必须是单播地址,单播是唯一标识一台设备的 IP地址(如电脑网卡的IP地址)。

广播即常见的目的地址为255.255.255.255的广播报文,广播的作用即泛洪至所在的广播域,而域中的所有设备都需要解析该报文,如设备解析后需要用到该报文,则会丢弃。组播则是一种一对多的通信方式,组播报文(目的地址为组播IP地址的报文)。

组播报文发向一组接收者,接收者需要加入相应的组播组中,才会收到发往该组播组的报文。在IPV4网络中,对于某个特定组播组,即使网络存在多个接收者,对于组播源而言,每次只需要发一份报文,网络中的组播转发设备负责拷贝组播报文并向有需要的接口转发,但网络设备收到组播报文后,缺省并不对其转发,需要设备激活组播路由功能,并维护组播路由表,再依据路由表项进行转发,因此组播流量,需要一个组播网络来承载。

组播网络架构示意图

Server1为多媒体服务器,PC1、PC2、PC3、PC4则是网络中的主机,分别以单播、组播、广播,演示该场景;

假设网络中使用单播,Server需要为每个pc创建一份数据,并单独发往pc,如果网络不止4台,而是有大规模的pc,则Server需要创建大量的数据拷贝,而拷贝的内容还是完全一样的,只是目的地址不同,单播在此种环境下显得极为低效。

如果采用广播方式发送数据,接收者就得与Server处于同一广播域,可广播报文在网络中泛洪范围有限,再者从网络优化角度考虑,广播流量是需要尽量减少的,因广播流量会造成其它设备不必要的性能损耗,广播并不适用于此种环境。

那如果使用组播呢?如要开始播放视频时,组播报文从Server源源不断发送出来,无论网络中存在多少接收者,Server都只需要发送一份数据。发送者的源地址192.168.100.1,而目的地址则是组播地址(以224.1.1.1为例),组播报文到达路由器后,R1将组播报文拷贝,然后将组播报文从有需要的接口转发而出,而不需要的接口则不会向其转发组播报文,R2、R3也是如此,直到报文到达加入224.1.1.1组播组的接收者接收报文为止。组播源不关心存在多少个接收者,接收者处于网络何处,它们的IP是什么?它只负责将组播报文发送出去,组播网络设备负责将组播报文根据需要进行拷贝及转发。

拓扑中,没有加入组播组的PC4不会收到组播流量,R5没有任何接收者,它也不会收到发往该组播组的流量。

组播应用场景

组播技术适用于一对多的通信场景,在多媒体直播、在线会议、股票金融等领域有广泛的应用。

组播网络架构

上述网络拓即为组播网络架构,架构分为三个部分,组播源、组播接收者、组播组及组播路由器;

  1. 组播源:组播流量发送源,多媒体服务器即为组播发送源,组播源无需任何组播协议,只需将组播报文发送出来;在上述拓扑中,组播源发出的组播报文源IP为其网卡地址192.168.100.1(单播),而目的地址必须为一个组播地址。
  2. 组播接收者:接收特定组播组流量的终端,组播接收者也叫组播组成员;
  3. 组播组:采用一个特定的组播IP地址标识的群组;
  4. 组播路由器:激活了组播路由功能的路由器,其实许多交换机、防火墙都支持组播路由;在拓扑中,R2、R3、R4、R5作为连着终端的组播路由器,它们需要通过IGMP因特网组管理协议来查询及发现其直连网段中是否存在组成员,只有最后一跳路由器获知其直连网段存在某个组播组成员,组播路由器才会向该组织发送该组的组播流量。

组播报文

  1. 组播报文在传输层通常采用UDP封装,在网络层采用IP封装;

组播路由协议

常见的组播路由协议有PIM、MOSPF、MBGP等,组播路由协议主要功能之一是在网络中形成一颗无环的树,它被称为组播分发树,树便是组播流量的传输途径,而树的末梢就是组播组的接收者所在的网段,组播路由协议除了需要形成无环树,还需要罐组组播报文转发过程中的放环问题,它必须有相应的机制确保组播报文在正确的接口上到达,并从正确的接口转发出去。

组播IP地址

在IPV4地址空间中,A、B及C类IP地址用于单播通信,它们一般用于设备的某个接口,而组播地址为D类地址,由IANA(互联网数字分配机构)规定,D类(224.0.0.0/4)用于组播通信,它的范围是224.0.0.0~239.255.255.255。组播地址不可以作为源地址使用,只能作为目的地址使用,也就是说,它不能分配给主机设备等,也不可以进行子网划。
组播地址分类:

  1. 224.0.0.1为所有节点组播地址
  2. 224.0.0.2为所有路由器组播地址
  3. 224.0.0.5为所有OSPF路由器组播地址
  4. 224.0.0.6为所有OSPF DR组播地址
  5. 224.0.0.9为所有RIPv2路由器组播地址
  6. 224.0.0.13为所有PIMv2路由器组播地址
  7. 224.0.0.18为VRRP组播地址
  8. 224.0.1.0~231.255.255.255 , 233.0.0.0-238.255.255.255为D类IP地址临时组地址,这种组播地址全局有效
  9. 232.0.0.0~232.255.255.255 为SSM(特定源组播)组地址
  10. 239.0.0.0~239.255.255.255 为本地管理组地址。

组播MAC地址

数据传输时,应用层协议的数据载荷想被正确发往目的地,需要进行封装。在传输层如果应用基于UDP协议,数据载荷会被封装UDP头部,在网络层,需要封装IP头部,单播其头部为目的地址IP,组播则需要填入报文目的地址的组播组IP地址,在数据链路层,上层数据需要在进行封装,在以太网环境,它将被封装以太网的帧头及帧尾,单播帧帧头填入单播目的mac地址,广播填(ffff-ffff-ffff)全f的目的mac,而组播则填入组播Mac地址。

综上所述,mac地址存在单播、组播、广播三种类型,一个mac为48bit,6个8位组,在第1个8位组最低比特位标识了mac地址的类型,如果比特位为0标识单播mac,如果为1标识组播mac,而广播mac则是一个全f的特殊mac。

mac地址由6个8位组成,第1个8位0代表单播,1代表组播,
组播mac地址共有2的47次方个,占据mac地址空间一半,组播mac地址例子,在stp学习中,在Bpdu载荷被封装在以太网数据帧时,数据帧的目的mac地址就是一个组播mac地址(0180-c200-0000),这类组播mac地址与组播ip不存在关联。

也有与组播mac地址存在关联的组播ip,以太网环境中,组播报文需要封装成以太网数据帧以便在链路上传输,而这些数据帧的mac必须为组播mac,并且必须与报文的目的ip相对应,该组播mac地址的高25bit是固定的,其中高24bit是0x01005e,第25bit是0,而剩下的23bit则从其对应组播ip地址低23bit拷贝得来,因此组播地址对应组播mac的范围是0100-5e00-0000 ~ 0100-5e7f-ffff,它是整个组播mac地址空间的1个子集。


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

以上是关于组播技术基础的主要内容,如果未能解决你的问题,请参考以下文章

IGMP协议原理

android-Android udp接收不到组播,请问如何解决

组播之IGMP(2)

什么是MAC单播地址什么是组播地址两者之间的关系

Android MulticastSocket 组播

IP组播基础