IP组播概述
使用组播承载点到多点业务
组播(Multicast)是在一台源IP主机和多台(一组)IP主机之间进行,中间的网络设备根据接收者的需要,有选择性地对数据进行复制和分发
组播方式下,单一的信息流沿组播分发树被同时发送给一组用户,相同的组播数据流在每一条链路上最多仅有一份。
相比单播和广播,使用组播的好处:
- 相比单播:用户的增加不会导致信息源负载的加重,不会导致网络资源消耗的显著增加
- 相比广播:不会造成网络资源的浪费,并能提高信息传输的安全性,而且组播可以实现跨网段的传输
组播技术有效地满足了单点发送、多点接收的需求,实现了IP网络中点到多点业务数据的高效传送,能够大量节约网络带宽、降低网络负载。
组播数据报文结构
组播数据报文的结构与单播报文类似,但组播数据报文的目的MAC地址与目的IP地址与单播报文有很大差异
- 组播目的IP地址:目的IP地址为组播IP地址,地址范围从224.0.0.0到239.255.255.255
- 组播目的MAC地址:目的MAC地址为组播MAC地址,组播MAC地址由组播IP弟子映射而来
组播IP地址
- 在IPv4地址空间中,D类地址(224.0.0.0/4)被用于组播。一个组播地址就表示一个点到多点的数据流,比如IPTV数据流,语音会议数据流。
- 大多数情况下,同一个组播网络里不同的业务(比如:IPTV、语音会议)就需要使用不同的组播IP地址
IANA对D类地址做了进一步的定义,如下表
范围 | 含义 |
224.0.0.0~224.0.0.255 | 为路由协议预留的永久组地址 |
224.0.1.0~231.255.255.255 233.0.0.0~238.255.255.255 | Any-Source临时组播组地址 |
232.0.0.0~232.255.255.255 | Source-Specific临时组播组地址 |
239.0.0.0~239.255.255.255 | 本地管理的Any-Source临时组播组地址 |
组播MAC地址
- 以太网传输IPv4单播报文的时候,目的MAC地址使用的是接收者的MAC地址。但是在传输组播数据时,其目的地址不再是一个具体的接收者,而是一个成员不确定的组,所以要使用IPv4组播MAC地址
- 组播MAC地址标识了一组设备,这种MAC地址第一个字节的最低比特位为1。
- IANA规定,IPv4组播MAC地址的高24位为01005E,第25位为0,低23位为IPv4组播地址的低23位。
例子:组播组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。网络管理员在分配地址时必须考虑这个情况。
组播网络基本架构
组播网络大体可以分为三个部分
- 源端网络:将组播源产生的组播数据发送至组播网络
- 组播转发网络:形成无环的组播转发路径,该转发路径也被称为组播分发树(Multicast Distribution Tree)
- 成员端网络:让组播网络感知组播组成员位置与加入的组播组
组播的相关术语
- 组播组(Source):组播流量的发送者,例如多媒体服务器。组播源无需运行任何组播协议,只需要简单地将组播数据发送出来即可
- 组播接收者(Receiver):也被称为组播组成员,是期望接收特定组播组流量的设备,例如运行多媒体直播客户端软件的PC
- 组播组(Multicast Group):用IP组播地址进行标识的一个集合。任何用户主机(或其他接收设备),加入一个组播组,就成为了改组成员,可以识别并接收发往该组播组的组播数据
- 组播路由器(Multicast Router):支持组播、运行组播协议的网络设备,实际上不仅仅路由器能够支持组播,交换机、防火墙等设备也能够支持组播(取决于设备型号),路由器仅是一个代表
- 第一跳路由器(First-Hop Router):组播转发路径上,与组播源相连且负责转发该组播源发出的组播数据的PIM路由器
- 最后一跳路由器(Last-Hop Router):组播转发路径上,与组播组成员相连且负责向该组成员转发组播数据的PIM路由器
- IGMP(Internet Group Management Protocol,因特网组管理协议):是TCP/IP协议组中负责IP组播成员管理的协议,它用来在接收者和与其直接相邻的组播路由器之间建立、维护组播组成员关系
组播服务模型
- ASM:组成员加入组播组以后,组成员可以接收到任意源发送到改组的数据
- SSM:组成员加入组播组以后,组成员只会收到指定源发送到该组的数据
组播路由与RPF检查
组播数据转发的困局
组播数据转发需要依赖路由表项。但是基于目的网络的路由表在转发组播数据时存在一定问题:
- 由于组播转发容易产生环路、次优、重复报文,所以组播路由表项除了目的网络和出接口外还需要添加组播源和入接口的信息。设备仅转发从特定唯一的入接口收到的组播数据,从而避免组播转发时产生环路、次优、重复报文(部分解决)等问题
- 对于相同的组播源,设备通过RPF(Reverse Path Forwarding,反向路径转发)检查可以确定设备上唯一的组播流量入接口
组播路由表项包含组播源与组播组,因此有时又被称为(S,G)表项
RPF检查工作原理
组播路由器根据报文的源地址通过路由表(单播路由表、MBGP路由表或组播静态路由表)查找到达"报文源"的路由,查看到"报文源"的路由表项的出接口是否与收到组播报文的入接口一致。如果一致,则认为该组播报文从正确的接口到达,从而保证了整个转发路径的正确性和唯一性。
RPF路由选举规则
RPF路由可以从单播路由、MBGP路由、组播静态路由中选举产生。当路由器收到一份组播报文后,如果这三种路由表都存在,具体检查过程:
根据以下原则从这三条最优路由中选择一条作为RPF路由
- 如果配置了按照最长匹配选择路由,则从这三条路由中选出最长匹配的那条路由
- 如果这三条路由的掩码一样,则选择优先级最高的那条路由
- 如果他们的优先级也相同,则按照组播静态路由、MBGP路由、单播路由的顺序进行选择
MBGP(Multicast BGP,组播BGP):主要用于传递组播源相关的路由条目
组播静态路由表:手工配置组播源与出接口的对应关系
组播分发树
组播数据转发需要保证转发路径无环、无次优路径且无重复包
通过RPF机制与组播路由协议,组播网络可以最终形成无环、无次优且无重复包的组播转发路径,该路径可以被称为组播分发树
组播分发树以组播源为根,以组成员为叶子形成转发路径,组播数据在转发时都基于组播分发树进行转发
组播数据转发流程