目的:
SSM(Source-Specific Multicast)称为指定源组播,要求路由器能了解成员主机加入组播组时所指定的组播源。如果成员主机上运行IGMPv3,可以在IGMPv3报告报文中直接指定组播源地址。但是某些情况下,成员主机只能运行IGMPv1或IGMPv2,为了使其也能够使用SSM服务,路由器上需要提供IGMP SSM Mapping功能。
原理:
IGMP SSM Mapping的机制是:通过在路由器上静态配置SSM地址的映射规则,将IGMPv1和IGMPv2报告报文中的(*, G)信息转化为对应的(G, INCLUDE, (S1, S2…))信息,以提供SSM组播服务。
配置了SSM Mapping规则后,当IGMP查询器收到来自成员主机的IGMPv1或IGMPv2报告报文时,首先检查该报文中所携带的组播组地址G,然后根据检查结果的不同分别进行处理:
-
如果G在ASM(Any-Source Multicast)范围内,则只提供ASM服务(因为在公网中规定了ASM是运行任意组播源的)。
-
如果G在SSM组地址范围内(缺省情况下为232.0.0.0~232.255.255.255)。
• 如果路由器上没有G对应的SSM Mapping规则,则无法提供SSM服务,丢弃该报文。
• 如果路由器上有G对应的SSM Mapping规则,则依据规则将报告报文中所包含的(*, G)信息映射为(G, INCLUDE, (S1, S2…))信息,提供SSM服务。
假如在Router上配置如下映射关系:
经过映射后,Router收到HostB和HostC的成员报告报文时,首先判断报文携带的组地址是否在SSM范围内,发现在SSM范围内,则根据配置的映射规则生成如下所示的组播表项。如果一个组地址映射了多个源,则生成多个(S, G)表项。
在映射过程中,一个组播组地址只要能在规则中匹配到,都会生成一条相应的表项。因此232.1.1.1有四条表项,232.1.2.2有三条表项。
需要注意的是:
IGMP SSM Mapping不处理IGMPv3的报告报文。为了保证同一网段运行任意版本IGMP的主机都能得到SSM服务,需要在与成员主机所在网段相连的组播路由器接口上运行IGMPv3。
实验:
模拟器:eNSP
拓扑描述:PC1加入R1,并配置相应的ssm-mapping,检查是否会产生(*,G)的表项。
注意点:模拟器在路由器上,只有开启了ssm-mapping以后,才会处理232.xxx.xxx.xxx范围内的报文(ssm范围)否则会直接丢弃。并且ssm-mapping只能对232.xxx.xxx.xxx范围内的报进行转换,所以我们也一定要配置为232.xxx.xxx.xxx范围内的组播组。
相关配置:
在R1上:
全局开启:
multicast routing-enable
在与下方相连的接口上:
interface GigabitEthernet0/0/0 //使用默认的版本二
ip address 10.1.1.254 255.255.255.0
pim sm
igmp enable
igmp ssm-mapping enable
然后在igmp模式下配置ssm-mapping
igmp
ssm-mapping 232.0.0.0 255.255.255.0 172.16.1.1 //将232.0.0.0/24范围内的组播地址转换为匹配到 172.16.1.1的源。
然后在PC1上进行配置:
注意加入的目的IP为232.0.0.1,为ssm-mapping的范围,然后点击加入按钮。
检验:
可以在路由器上输入相应命令的查看:dis igmp group是查看不到信息的,此命令只能查看没有被ssm-mapping转换的组播报告,所以只有查看组播路由表:dis multicast routing-table
我们可以看到到本应该为(*,G的条目)被转换为了(S,G)的条目。
虽然是一个(S,G)的条目,但是还是不可用的,这是我们可以看到上游接口为空,下游接口为接收到IGMPv2信息的接口。上游接口为空就是意味着没有对应的组播流量引入,只有等到流量引入后才既有上游接口,又有下游接口,这样才能让终端设备得到自己想要的组播流量。
参考资料:HCIE培训资料