IP组播基础

基本概念

组播一般用来承载点到多点的业务,相较于单播和广播承担,具有节省网络资源和提高信息传输的安全性。

报文格式

与单播的报文格式相似,目的 IP 地址为 224.0.0.0-239.255.255.255 ,组播目的 MAC 地址由组播 IP 地址映射而来。

其中组播 IP 地址又分为五个范围:

范围含义
224.0.0.0-224.0.0.255为路由协议预留的永久组地址
224.0.1.0-231.255.255.255 ,233.0.0.0-238.255.255.255Any-Source临时组播地址
232.0.0.0-232.255.255.255Source-Specific临时组播组地址
239.0.0.0-239.255.255.255本地管理的Any-Source临时组播组地址

组播 MAC 的生成过程: 规定高24位为 0x01005e ,第25位为0,低23位为IPv4组播地址的低23位。即我们所熟知的 01-00-5e-xx-xx-xx

注意
组播MAC地址不能作为源地址,只能作为目的MAC地址

除了与 IP 组播地址有映射关系的组播 MAC,还有一些熟知的组播MAC,是与组播IP地址不存在关系的,例如 STP 中,BPDU被封装在以太网帧中,数据帧的目的MAC为 01-80-c2-00-00-00 。这两种MAC组播地址的共同点是第一个字节的最低bit位都为 1

服务模型

组播组成员在接收组播数据时,对于组播数据源进行选择,产生了ASM(Any-Source Multicast,任意源组播)和SSM(Source-Specific Multicast,指定源组播)两种组播服务模型。

ASM要求组地址必须整个组播网络中“唯一”,“唯一”指的是同一时刻一个ASM地址只能被一种组播应用使用。如果有两种不同的应用程序使用了同一个ASM组地址发送数据,它们的接收者回同时收到来自两个源的数据,一方面导致网络流量拥塞,另一方面给接收者造成困扰。

SSM则不再要求组地址全网唯一,只需要每个组播源保持“唯一”。这里的”唯一“指的是同一个源上不同的组播应用必须使用不同的SSM地址来区分,不同的源之间可以使用相同的组地址,SSM模型中针对每一个(组播源,组播组)信息生成表项,这样节省了组播组地址,也不会造成网络拥塞。

组播转发

组播转发需要依赖路由表项,但基于目的网络的路由表在转发组播数据时存在一定问题:

由于会产生环路、次优和重复报文,因此组播路由表项除了目的网络和出接口,还要添加组播源和入接口的信息。设备仅转发从特定唯一的入接口收到的组播数据 ,从而避免组播转发时产生环路、次优、重复报文等问题。

对于相同的组播源,设备通过RPF(Reverse Path Forwarding,反向路径转发)检查可以确定设备上唯一的组播流量入接口

RPF检查原理:

组播路由器根据报文的源地址通过路由表(单播路由表、MBGP路由表或组播静态路由表) 查找 到达“报文源” 的路由,查看到“报文源”的路由表项的出接口是否与收到组播报文的入接口一致。如果一致,则认为该组播报文从正确的接口到达,从而保证了整个转发路径的正确性和唯一性。这个过程就被称为RPF检查。

RPF 路由选举规则

RPF路由可以从单播路由、MBGP(Multicast BGP,组播BGP)路由、组播静态路由中选举产生,当路由器中三种路由表都存在,具体检查过程如下:

  • 如果配置了按照最长匹配选择路由,则从这三条路由中选出最长匹配的那条路由;

  • 如果这三条路由的掩码一样,则选择优先级最高的那条路由;

  • 如果它们的优先级也相同,则按照组播静态路由、MBGP路由、单播路由的顺序进行选择。

组播数据转发流程:

组播路由表项出接口与组播转发路径由 组播路由协议 决定,组播组成员位置由 IGMP 通告。

组播协议介绍
  • PIM ( Protocol Independent Multi cast , 协议无关组播) 协议主要作用是生成AS域内的组播分发树。 • MSDP ( Multicast Source Discovery Protocol , 组播源发现协议) 主要作用是帮助生成AS域间的组播分发树。 • MBGP ( MulticastBGP , 组播BGP ) 主要作用是帮助跨域组播流进行RPF校验。

参考文章