什么是组播?如何区分组播、单播和广播?IP组播地址范围,以及组播的实现机制

科技   2025-01-15 14:00   河北  

作为 IP 传输三种方式之一,组播指的是报文从一个源发出,被转发到一组特定的接收者,相同的报文在每条链路上最多有一份。相较于传统的单播和广播,组播可以有效地节约网络带宽、降低网络负载,所以被广泛应用于 IPTV 、实时数据传送和多媒体会议等网络业务中。

1.单播、组播和广播定义比较

通讯模式定义工作原理特点
单播主机间一对一的通讯模式网络设备根据报文中的目的地址选择传输路径,将报文传送到指定目的地,只转发接收到的数据,不进行复制针对每台主机及时响应,网页浏览采用此模式
组播主机间一对多的通讯模式组播源将报文发送到特定的组播地址,该地址属于一组主机,接收者加入该群组以接收组播报文允许多个接收者接收同一报文,提高传输效率
广播主机间一对所有的通讯模式设备将报文发送到网络中的所有可能接收者,复制并转发所有收到的广播报文到除到达接口外的每个接口处理流程简单,无需选择路径

2.用户主机如何区分组播、单播和广播

用户主机是通过识别 IP 地址,区分 IP 传输的方式。IP 地址被分为三类,分别是:

地址分类IP地址描述
单播IP地址一个单播IP地址只能标识一台用户主机。
一份使用单播IP地址为目的地址的IP报文,只能被一台用户主机接收。
广播IP地址一个广播IP地址能够标识某确定网段内的所有用户主机。
一份使用广播IP地址为目的地址的IP报文,能够被该网段内的所有用户主机接收。
IP广播报文不能跨网段传播。
组播IP地址一个组播IP地址能够标识网络不同位置的多个用户主机,一台用户主机可以同时识别多个组播IP地址。
一份使用组播IP地址为目的地址的IP报文,能够被网络不同位置的多个用户主机接收。

用户主机使用不同的类别的IP地址,就选用了不同的传输方式:单播方式、广播方式、组播方式。

3.组播、单播和广播传输方式的差异

如下图,点到多点组网图中有用户A,用户B,用户C,用户D和用户E,但现在只有用户A,用户B和用户C有流量需求,想接收数据源发送的报文,现分别采用单播、组播、广播方式进行报文的传输。

# 单播方式

如下图,采用单播传输方式后,要确保有流量需求的用户都能收到流量,数据源需要发送三份流量,相应的网络中设备B也需要承载三份流量。

# 广播方式

如下图,采用广播传输方式后,数据源仅发送一份流量,有流量需求的用户可以收到流量,但是从图中可以看出,因为广播的传输机制,无流量需求的用户D和用户E也收到了流量,存在流量的冗余。

# 组播方式

如下图,采用组播传输方式后,数据源仅发送一份流量,有流量需求的用户就可以收到流量,而且无流量需求的用户D和用户E也不会收到冗余的流量。

从上面的比较中,可以看出组播点对多点传输网络场景中更具优势,这三种 IP 传输方式比较表如下:

4. IP组播地址的范围

为了使组播源和组播组成员进行通信,需要提供网络层组播使用的IP组播地址。

# IPv4组播地址

IANAD类地址空间分配给IPv4组播使用。IPv4地址一共32位,D类地址最高4位为1110,地址范围从224.0.0.0239.255.255.255,具体分类及含义如下表:

地址范围含义描述
224.0.0.0~224.0.0.255永久组地址IANA为路由协议预留的IP地址(也称为保留组地址),用于标识一组特定的网络设备,供路由协议、拓扑查找等使用,不用于组播转发。
224.0.1.0~231.255.255.255
233.0.0.0~238.255.255.255
ASM组地址全网范围内有效。
232.0.0.0~232.255.255.255-缺省情况下的SSM组地址范围,全网范围内有效。
239.0.0.0~239.255.255.255本地管理组地址仅在本地管理域内有效。在不同的管理域内重复使用相同的本地管理组地址不会导致冲突。

# IPv6组播地址

IPv6 地址长度是128位,IPv6 组播地址格式如图所示:

IPv6组播地址格式:

  • IPv6组播地址总是以FF开头,高8位取值为11111111
  • Flags字段(4位)用来标识组播地址的状态。例如取值为0表示保留组地址,取值为1或2表示ASM范围内的组播地址,取值为3表示SSM范围内的组播地址。
  • Scope字段(4位)用来标识组播组的应用范围,指示组播组应用范围是只包含同一本地网络、同一站点、同一机构中的节点,还是包含全球地址空间内的任何节点。
  • Group ID(112位)组播组标识符,用在由Scope字段所指定的范围内标识组播组。

固定的 IPv6 组播地址的范围及含义如下表:

地址范围描述
FF0x::/32这是一个保留的组地址。
FF1x:/32
FF2x::/32
ASM(Any-Source Multicast)组地址,全网范围内有效。其中“x”代表除了1和2之外的任意数字。
FF3x::/32缺省的SSMSource-Specific Multicast)组地址范围,全网范围内有效。其中x代表除了1和2之外的任意数字。这两个范围都用于SSM组地址。

5.组播MAC地址的范围

为了在本地物理网络上实现组播信息的正确传输,需要在链路层使用组播MAC地址。组播数据传输时,其目的地不是一个具体的接收者,而是一个成员不确定的组,所以需要一种技术将IP组播地址映射为组播MAC地址。

# IPv4组播MAC地址

以太网传输IPv4单播报文的时候,目的MAC地址使用的是接收者的MAC地址。但是在传输组播数据时,其目的地不再是一个具体的接收者,而是一个成员不确定的组,所以要使用IPv4组播MAC地址,即IPv4组播地址映射到链路层中的地址。

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位的地址信息,直接结果是有32IPv4组播地址映射到同一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

# IPv6组播MAC地址

IPv6组播MAC地址的高16位为0x3333,低32位为IPv6组播地址的低32位。如图所示,是IPv6组播地址的MAC地址映射关系。

可见IPv6中会有更多的组地址使用同一个MAC地址。

6.组播协议

IP组播传输模型中,发送者不关心接收者所处的位置,只要将数据发送到约定的目的地址,剩下的工作就交给网络去完成。网络中的组播设备必须收集接收者的信息,并按照正确的路径实现组播报文的转发和复制。在组播的发展过程中,形成了一套完整的协议来完成此任务。

7.组播实现机制

组播的实现机制,使得组播在点到多点场景中,比单播和广播具有强大的优势。组播的实现机制有哪些呢?

我们这里通过详细对比组播和单播的实现过程来展开介绍一下组播的实现机制。

# 单播实现机制

如上图所示,单播组网中要实现用户A,用户B,用户C能接收数据源的流量,需要做如下配置:

全网设备相连的接口都需要配置单播IP地址。

全网要部署单播路由协议,确保数据源和用户A、用户B和用户C之间路由互通。

数据源发流的时候,对用户A发送的流量IP报文头封装的目的地址是用户A的主机地址10.1.2.1

用户B发送的流量IP报文头封装的目的地址是用户B的主机地址10.1.3.1

用户C发送的流量是IP报文头封装的目的地址是用户C的主机地址10.1.4.1

# 组播实现机制

如上图所示,组播组网实现用户A,用户B和用户C能接收到数据源的流量,需要做如下部署:

全网设备相连的接口都需要配置单播IP地址。

全网要部署单播路由协议,确保数据源和用户A、用户B和用户C之间路由互通。

全网部署组播PIM协议PIM-SM或者PIM-DM),并配置相应的BSR和RP,图中配置设备B为RPBSR

用户A,用户B,用户C必须发送IGMP组加入报文,组加入报文中包含其需要加入的组IP地址225.1.1.1

数据源发送数据流,该数据流二层目的MAC地址是组播的MAC地址,IP报文的目的地址为225.1.1.1

组播实现机制总体来说就是接收者告诉一个中心节点(在组播协议里面称为RP),它需要哪些组地址的流量;RP需要被告之数据源(在组播场景中我们称之为组播源,它的特点是流量二层头中目的MAC地址是组播MAC地址,IP报层IP报文头目的地址是组播IP地址)在哪,数据源往哪些组地址发流。RP知道了接收方和发送方的所有信息后,就会根据需要把流量发送到特定位置(它发送的过程中建立了组播分发树)。

通过单播和组播的实现机制可能会存在如下疑问,组播部署的时候为什么要先部署好单播呢?

因为在组播部署的时候,源注册过程组播源必须知道RP的路由,才能发送过去,源注册报文是单播报文。

另外组播分发树建立的过程中,是需要查到组播源(或者RP)的路由的,在组播中我们称为RPF检查,这个也需要单播路由的支持。


Python运维实践
Python运维实践,专注于互联网技术的总结与交流,内容涉及Python自动化运维、Django框架、园区网络技术、linux云计算、系统架构及网络空间安全等知识的实践与分享。
 最新文章