【干货】组播之深入探讨PIM协议~
·组播网络由组播源,组播组成员与组播路由器组成。
组播源的主要作用是发送组播数据。
组播组成员的主要作用是接收组播数据,因此需要通过IGMP让组播网络感知组成员位置与加组信息。
组播路由器的主要作用是将数据从组播源发送到组播组成员。组播数据转发需要依赖组播分发树,因此组播路由器需要通过协议来构建组播分发树。
·PIM(Protocol Independent Multicast,协议无关组播)协议的主要作用就是构建组播分发树。
·小编今天主要讲解PIM协议的基本概念。
PIM基础介绍
组播网络基本架构回顾
·组播网络大体可以分为三个部分:
源端网络:将组播源产生的组播数据发送至组播网络。
组播转发网络:形成无环的组播转发路径,该转发路径也被称为组播分发树(Multicast Distribution Tree)。
成员端网络:通过IGMP协议,让组播网络感知组播组成员位置与加入的组播组。
·成员端网络通过IGMP协议可以让组播网络感知组播组成员位置与加入的组播组。
·组播转发网络形成组播分发树,需要组播路由协议的支持。
·通过组播路由协议有多种,最常用的是PIM协议,也就是本文的重点。
组播数据转发流程回顾
·组播数据转发基本流程如下:
·《IGMP原理与配置》课程介绍了组播网络如何感知组播组成员的位置和所加组播组。
组播协议介绍回顾
·组播网络需要基于多种组播协议才能建立转发路径:
工作在成员端网络的主要是IGMP(Internet Group Management Protocol,因特网组管理协议)协议,用于告知组播网络,组成员的位置与所加组播组。
工作在组播转发网络的协议主要是PIM,MSDP,MBGP。
▪PIM(Protocol Independent Multicast,协议无关组播)协议主要作用是生成AS域内的组播分发树。▪MSDP(Multicast Source Discovery Protocol,组播源发现协议)主要作用是帮助生成AS域间的组播分发树。
▪MBGP(Multicast BGP,组播BGP)主要作用是帮助跨域组播流进行RPF校验。
PIM协议介绍
·PIM称为协议无关组播。协议无关指的是与单播路由协议无关,即PIM不需要维护专门的单播路由信息。作为组播路由解决方案,它直接利用单播路由表的路由信息,对组播报文执行RPF检查,检查通过后创建组播路由表项,从而转发组播报文。
·目前在实际网络中,PIM主要有两种模式:
PIM-DM(PIM-Dense Mode,PIM密集模式) 。
PIM-SM(PIM-Sparse Mode,PIM稀疏模式) ,PIM-SM模式根据组播服务模型又可以分为:
▪PIM-SM(ASM):为任意源组播建立组播分发树。
▪PIM-SM(SSM):为指定源组播建立组播分发树。
·PIM(Protocol Independent Multicast)协议无关组播,目前常用版本是PIMv2,PIM报文直接封装在IP报文中,协议号为103,PIMv2组播地址为224.0.0.13。
·在PIM组播域中,以组播组为单位建立从组播源到组成员的点到多点的组播转发路径。由于组播转发路径呈现树型结构,也称为组播分发树(MDT,Multicast Distribution Tree)。
·组播分发树的特点:
无论网络中的组成员有多少,每条链路上相同的组播数据最多只有一份。被传递的组播数据在距离组播源尽可能远的分叉路口才开始复制和分发。
PIM-DM与PIM-SM使用场景
·PIM形成组播分发树主要有两种模式,即PIM-DM模式与PIM-SM模式,这两种模式分别用在不同的场景下:
PIM-DM模式主要用在组成员较少且相对密集的组播网络中,该模式建立组播分发树的基本思路是“扩散-剪枝”,即将组播流量全网扩散,然后剪枝没有组成员的路径,最终形成组播分发树。
PIM-SM模式主要用在组成员较多且相对稀疏的组播网络中,该模式建立组播分发树的基本思路是先收集组成员信息,然后再形成组播分发树。使用PIM-SM模式不需要全网泛洪组播,对现网的影响较小,因此现网多使用PIM-SM模式。
组播分发树的分类
·通过PIM形成的组播分发树主要分为以下两种:
以组播源为根,组播组成员为叶子的组播分发树称为SPT(Shortest Path Tree),在PIM-DM与PIM-SM中均有使用。
以RP(Rendezvous Point)为根,组播组成员为叶子的组播分发树称为RPT(RP Tree),在PIM-SM中使用。
·SPT又被称为源树,SPT在PIM-DM模式与PIM-SM模式的组播网络中均有使用。
·RPT又被称为共享树,RPT主要在PIM-SM模式的组播网络中被使用。
PIM路由表项
·PIM路由表项即通过PIM协议建立的组播协议路由表项。
·PIM网络中存在两种路由表项:
▫(S,G)路由表项主要用于在PIM网络中建立SPT。对于PIM-DM网络和PIM-SM网络适用。
▫(*,G)路由表项主要用于在PIM网络中建立RPT。对于PIM-SM网络适用。
·S表示组播源,G表示组播组,*表示任意。
·PIM路由器上可能同时存在两种路由表项。当收到源地址为S,组地址为G的组播报文,且RPF检查通过的情况下,按照如下的规则转发:
如果存在(S,G)路由表项,则由(S,G)路由表项指导报文转发。
如果不存在(S,G)路由表项,只存在(*,G)路由表项,则先依照(*,G)路由表项创建(S,G)路由表项,再由(S,G)路由表项指导报文转发。
Flag值的意义见下一页。
PIM路由表项与组播路由表项
·在不同的组播路由器上,组播路由表项会基于不同的表项汇总形成。
最后一跳路由器的组播路由表项主要基于PIM路由表项,IGMP组表项和IGMP路由表项汇总形成。
其余组播路由器的组播路由表项主要基于PIM路由表项形成。
·最后一跳路由器的组播表项形成可以参考《IGMP原理与配置》课程。