组播传输作为IP数据传输的三种方式之一 ,是指接收者的数量和位置在源端主机不知道的情况下,仅由源发出一份组播报文,向目标组播IP地址发送数据的过程。其特点有:
单播:
采用单播方式时,网络中传输的信息量与需要该信息的用户量成正比。当需要该信息的用户数量较大时,信息源需要将多份内容相同的信息发送给不同的用户,这对信息源以及网络带宽都将造成巨大的压力。由此可以看出,该传输方式不利于信息的批量发送,只适用于用户稀少的网络。
广播:
采用广播方式时,不需要接收信息的主机也将收到该信息,这样不仅信息的安全性得不到保障,而且会造成同一网段中信息泛滥。由此可见,该传输方式不利于与特定对象进行数据交互,并且还浪费了大量的带宽。
组播相对单播和广播的优势:
基本术语:
可以将一个组播组的组播网络分成三部分,也就是组播源->组播路由器->组播成员。组播就像IP单播一样是一个相对独立的领域,所以涉及的知识非常全面,包括的协议也是非常的多,使用最多的是PIM和IGMP协议。其中PIM就是运行在组播路由器段的协议,IGMP是运行在组播成员段的协议,而源段只需要发送组播即可,不用运行组播协议。
组播服务模型的分类是针对接收者主机的,对组播源没有区别。组播源发出的组播数据中总是以组播源自己的IP地址为报文的源IP地址,组播组地址为目的地址。而接收者主机接收数据时可以对源进行选择,因此产生了ASM和SSM两种服务模型。这两种服务模型使用不同的组播组地址范围。
ASM:
Any-Source Multicast,任意源组播。当组播组成员接收组播报文的时候,不关心是谁发送的,只要是自己所需要的组就添加进去。需要注意的是:ASM模型要求组地址必须整个组播网络中唯一。“唯一”指的是同一时刻一个ASM地址只能被一种组播应用使用。如果有两种不同的应用程序使用了同一个ASM组地址发送数据,它们的接收者会同时收到来自两个源的数据。这样一方面会导致网络流量拥塞,另一方面也会给接收者主机造成困扰。(全局应用中唯一)
SSM:
Source-Specific Multicast,指定源组播。当组播组成员接收组播报文的时候,关心是谁发送的,不仅仅是自己所需要的组,还需要组播源的IP地址是自己允许的,有着更精确的控制。需要注意的是:SSM模型对组地址不再要求全网唯一,只需要每个组播源保持唯一。这里的“唯一”指的是同一个源上不同的组播应用必须使用不同的SSM地址来区分。不同的源之间可以使用相同的组地址,因为SSM模型中针对每一个(源,组)信息都会生成表项,可以加以区别不同的源IP地址。这样一方面节省了组播组地址,另一方面也不会造成网络拥塞(本地应用唯一)。
SFM:
Source-Filtered Multicast,过滤源的组播。SFM模型继承了ASM模型,从组播发送者角度来看,组播组成员关系二者完全相同。SFM 在功能上对ASM进行了扩展,组播节点对接收到的组播报文的源地址进行检查,允许或禁止来自某些组播源的报文通过。最终,接收者只能接收到来自部分组播源的数据。从接收者的角度来看,只有部分组播源是有效的,组播源经过了筛选。SFM仅在ASM的基础上添加了组播源过滤策略,此外,基本原理和配置方法相同。此处将SFM与ASM统称为ASM。
注意点:
永久组地址:IANA为路由协议预留的组播地址(也称为保留组地址),用于标识一组特定的网络设备。永久组地址保持不变,组成员的数量可以是任意的,甚至可以为零,大部分组播地址都是永久组播地址。永久组播地址一览:
临时组地址:为用户组播组临时分配的IPv4地址(也称为普通组地址),组成员的数量一旦为零,即取消。
MAC组播地址:
由IP组播地址产生,主要是在交换环境中有着优良的作用,当交换机没有开启组播协议的时候也会进行泛洪(和广播一样),需要开启了相应的协议以后才能进行相应的组播转发。对于路由器,对于永久组播MAC地址需要开启对于协议会接收,对于其他组播MAC地址必须开启相应的组播功能,会接收所有的组播MAC地址,否则接收到就会丢弃。
IPv4组播地址到MAC组播地址的映射:
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。网络管理员在分配地址时必须考虑这种情况。
一、ASM模型组播协议:
域内组播路由用来在AS内部发现组播源并构建组播分发树,从而将组播信息传递到接收者。
域间组播路由协议用来实现组播信息在AS之间的传递,目前较为成熟的解决方案为:MSDP(Multicast Source Discovery Protocol,组播源发现协议)。
二、SSM模型组播路由协议:
没有域内和域间的划分。接收者预先知道组播源的具体位置。
三、其他组播协议:
除了上述提到的组播协议,还有DVMRP、MOSPF、CBT、MVPN 等。MOSPF和DVMRP两类组播路由协议类似OSPF和RIP的关系,一个使用链路状态协议,一个使用D-V矢量协议构建基于源的组播最短路径树,该组播树使用MOSPF和DVMRP各自单独维护的组播数据库去执行RPF检查,生成组播转发表。而CBT则是另一类组播路由协议,它有别于前两项技术的关键是不再基于源在网络中构建最短路径树,而是先定义一个核心节点。组播源的组播报文先流给这个核心节点,由其负责转发给接收者。CBT是双向树,所以不能使用PRF检查。MSDP则是帮助跨域组播源进行共享。
注:命令都是华为设备上的。其中的一些具体内容在后续的PIM和IGMP笔记中进行分析。
完成组播数据的传输,要借助在不同位置的组播路由器的组播表工页,组播路由器上会有各种组播相关的表,如组播路由表、组播转发表、 IGMP 路由表、 PIM 路由表等。
1.组播协议路由表
组播协议路由表是运行各种组播路由协议时由各个协议自己维护的路由表项,如果组播路由协议为PIM协议,它会自身维护PIM协议路由表。本章中,我们观察组播转发都使用PIM协议路由表,使用命令display pim routing-table:
所有协议的路由表都相似,记录表项的(S,G) 条目及生存时间,还有上游接口和下游接口列表。其中(*,G)中的星号,表示任意的源地址,G表示组播地址;(S,G) 中的S表示确定的组播源地址。
2.IGMP路由表
接收者所在网段上,若路由器接口只开启IGMP,并没有开启PIM协议时,则组播数据依然可以转发到本网段,只要路由器接口下有组播接收者,数据转发可以转发到PIM协议没有开启的但有IGMP接收者的接口,这可以通过观察display igmp routing-table看到转发数据的出口:
3.组播静态路由
类似于单播中的静态路由,不过这里指定的内容是针对特定的“报文源”,指定RPF接口(RPF接口指的是通过了RPF检查的组播报文的入接口)和RPF邻居(入接口上连接的组播发送上游设备),例如在华为设备上使用命令:ip rpf-route-static 10.1.1.1 255.255.255.255 10.1.23.2可以配置组播静态路由。使用dis multicast routing-table static可以看到静态路由路由表中的内容:
4.组播路由表
组播路由表是全局唯一的用于转发组播数据的路由表。它的内容来自于多种组播路由协议,每种组播路由协议都有相应各自的组播路由协议表项,这些表项内容除出现在协议的路由表中外,还会汇集到组播路由表,组播路由表是由各个协议优选出的路由构建而成的。这就像单播路由中路由器同时运行OSPF、RIP、BGP多种路由协议,但其最佳路由都出现在IP路由表中,使用display multicast routing-table可以看到PIM路由表、IGMP路由表和静态组播路由表中的内容:
5.组播转发表
设备会根据组播路由和转发策略,从组播路由表选取最优的组播路由,下发到组播转发表中,直接用于指导组播数据转发,其处于数据平面上,作用相当于单播路由中的FIB表。如下display multicast forwarding-table命令,可用于检查组播转发表项有没有成功建立,组播数据能否正常传输:
组播转发区别于单播转发,单播转发是基于报文目标 IP 地址查表转发的过程,而组播转发是根据报文源 IP 地址查表转发的过程。以PIM为例,PIM以RPF机制指导组播报文转发,流程如下:
RPF ( Reverse Path Forwarding)检查就是对收到的组播数据报文的源IP进行检查,判定其是否从正确的入接口接收到组播数据的过程,某些RPF检查过程还要判定报文是否源自RPF邻居。在控制平面上,可以靠RPF检查计算上游接口生成(S,G) 或(*,G)组播转发表。在数据平面上,接口收到的数据报文会按下列方式执行RPF检查。
具体步骤的内容在PIM笔记中进行补充。
参考资料:《HCIE路由交换学习指南》、HCIE培训文档