组播业务模型分为SSM(Source-Specific Multicast,指定信源组播)模型和ASM(Any-Source Multicast,任意信源组播)模型。其中,ASM模型包括PIM-DM和PIM-SM两种组播业务模式,两者的相同点在于:都是使用组播组地址来标识一个组播会话。
SSM模型与ASM不同之处在于,需要使用组播组地址和组播源地址,同时来标识一个组播会话。SSM模型需要通过IGMPv3的配合来维护主机与路由器之间的关系,同时借助PIM-SM的一部分技术来实现SSM模型。
IGMPv3在兼容和继承IGMPv1和IGMPv2的基础上,进一步增强了主机的控制能力,并增强了查询和报告报文的功能。IGMPv3增加了针对组播源的过滤模式,使主机在加入某组播组的同时,能够明确指定接收来自某特定组播源S的组播信息。比如,当主机加入组播组时:若要求只接收来自指定组播源S1的组播信息,则其报告报文中可以标记为INCLUDE Sources(S1)。
图一 指定源的组播流接收
在PIM-SSM模型中,由于接收者已经知道了组播源的具体位置,因此在SSM模型中不需要RP(Rendezvous Point,汇集点),也就不需要构建RPT(Rendezvous Point Tree,共享树或汇集树),,进而也省去了组播源注册等工作流程。PIM-SSM的工作机制主要包括以下三个部分:
1. 邻居发现
在PIM域中,路由器通过周期性地向本网段的所有PIM路由器(224.0.0.13)以组播方式发送PIM Hello报文,以发现PIM邻居,维护各路由器之间的PIM邻居关系,从而构建和维护SPT。
2. DR选举
借助PIM Hello报文还可以为共享网络(如Ethernet)选举DR,DR将作为该共享网络中组播数据的唯一转发者。
3. 构建SPT
路由器通过接收者加入的组播组地址是否属于SSM组地址范围,来判断接下来是构建为PIM-SM服务的RPT,还是构建为PIM-SSM服务的SPT。IANA保留的SSM组地址范围为232.0.0.0/8,也可以通过配置命令手工指定SSM组播组的范围。应确保域内所有路由器上配置的SSM组播组地址范围都一致,否则组播信息将无法通过SSM模型进行传输。
图二 PIM-SSM模型中构建SPT示意图
组播接收者(Receiver),发送IGMPv3的报告报文向网络中的DR报告自己对来自组播源S发往组播组G的信息感兴趣。收到该报告消息的DR先判断该报文中的组地址是否在SSM组地址范围内:
l 如果在SSM组地址范围内,则构建PIM-SSM,并向组播源S逐跳发送通道的订阅报文(Subscribe Message)。沿途所有路由器上都创建(S,G)表项,从而在网络内构建了一棵以组播源S为根、以接收者为叶子的SPT,该SPT就是PIM-SSM中的传输通道;
l 如果不在SSM组地址范围内,则仍旧按照PIM-SM的流程进行后续处理,此时接收者侧DR需要向RP发送(*,G)加入报文,同时组播源侧DR需要进行组播源的注册。
SSM模型要求在接收者主机所在的网段,路由器能够了解主机加入组播组时所指定的组播源。如果接收者主机上运行的是IGMPv3,则可以在IGMPv3的报告报文中直接指定组播源的地址;如果某组播组属于SSM组播组范围,但该组成员使用IGMPv1或IGMPv2发送加入报文,则设备不会触发(*,G)加入报文。
实际应用中,存在某些接收者主机只能运行IGMPv1或IGMPv2,而在IGMPv1或IGMPv2的报告报文中无法指定组播源的地址。这种情况下可以通过在路由器上配置IGMP SSM Mapping功能,将IGMPv1或IGMPv2报告报文中所包含的(*,G)信息映射为(G,INCLUDE,(S1,S2...))信息,满足为IGMPv1和IGMPv2的主机提供SSM服务的需求。
PIM-SM网络中采用SSM方式提供组播服务, RTC连接主机网段的接口上运行IGMPv3。接收者主机HostA运行IGMPv3;接收者主机HostB上运行IGMPv2,且不能升级至IGMPv3,因此该主机在加入组播组时无法指定组播源。
S1和S2都向SSM组范围内的组播组发送组播数据,要求通过在RTC上配置IGMP SSM Mapping功能,使所有接收者主机只能接收来自S1的组播数据。
图三 PIM-SSM应用实例
当运行IGMPv3的路由器接口收到来自主机的IGMPv1或IGMPv2报告报文时,首先检查该报文中所携带的组播组地址是否属于SSM组地址范围:
l 如果组播组地址不在SSM组地址范围内,则提供ASM组播服务。
l 如果组播组地址在SSM组地址范围内:
Ø 若路由器上没有组播组地址所对应的IGMP SSM Mapping规则,则无法提供SSM组播服务,丢弃该报文;
Ø 若路由器上有组播组地址对应的IGMP SSM Mapping规则,则依据规则将报告报文中所包含的(*,G)信息映射为(G,INCLUDE,(S1,S2...))信息,从而提供SSM组播服务。