PIM-SM适用于ASM(Any-Source Multicast)和SSM(Source-Specific Multicast)两种模型。
PIM-SM(ASM模型)
在ASM模型中,PIM-SM使用“拉(Pull)模式”转发组播报文,一般应用于组播组成员规模相对较大、相对稀疏的网络。基于这一种稀疏的网络模型,它的实现方法是:
-
在网络中维护一台重要的PIM路由器:汇聚点RP(Rendezvous Point),可以为随时出现的组成员或组播源服务。网络中所有PIM路由器都知道RP的位置。
-
当网络中出现组成员(用户主机通过IGMP加入某组播组G)时,最后一跳路由器向RP发送Join报文,逐跳创建(*,G)表项,生成一棵以RP为根的RPT。
-
当网络中出现活跃的组播源(组播源向某组播组G发送第一个组播数据)时,第一跳路由器将组播数据封装在Register报文中单播发往RP,在RP上创建(S,G)表项,注册源信息。
在ASM模型中,PIM-SM的关键机制包括邻居发现、DR竞选、RP发现、RPT构建、组播源注册、SPT切换、断言;同时也可通过配置BSR(Bootstrap Router)管理域来实现单个PIM-SM域的精细化管理。
说明:
(S,G)路由表项:S表示组播源,G表示组播组;主要用于在PIM网络中建立以组播源为根,组播组成员为叶子的组播分发树SPT(Shortest Path Tree)。
(*,G)路由表项:*表示任意,G表示组播组;主要用于在PIM网络中建立以RP(Rendezvous Point)为根,组播组成员为叶子的组播分发树RPT(RP Tree)。
邻居发现
PIM路由器上每个使能了PIM协议的接口都会对外发送Hello报文。封装Hello报文的组播报文的目的地址是224.0.0.13、源地址为接口的IP地址、TTL数值为1。
同一网段中的PIM路由器都接收目的地址为224.0.0.13的组播报文。这样直接相连的PIM路由器之间通过交互Hello报文以后,就可以彼此知道自己的邻居信息,建立邻居关系。
图1邻居发现示意图
如图1所示,在PIM-SM网络中,刚启动的组播路由器需要使用Hello消息来发现邻居。通过各路由器之间周期性地使用Hello消息保持联系来维护邻居关系。
只有邻居关系建立成功后,PIM路由器才能接收其他PIM协议报文,从而创建组播路由表项。
说明:
Hello报文的作用:发现PIM邻居、协调各项PIM协议报文参数、维持邻居关系。
DR竞选
在组播源或组成员所在的网段,有时同时连接着多台PIM路由器。这些PIM路由器之间通过交互Hello报文成为PIM邻居,Hello报文中携带DR优先级和该网段接口地址。PIM路由器将自身条件与对方报文中携带的信息进行比较,选举出DR来负责源端或组成员端组播报文的收发。竞选规则如下:
-
DR优先级较高者获胜(网段中所有PIM路由器都支持DR优先级)。
-
如果DR优先级相同或该网段存在至少一台PIM路由器不支持在Hello报文中携带DR优先级,则IP地址较大者获胜。
-
如果当前DR出现故障,将导致PIM邻居关系超时,其他PIM邻居之间会触发新一轮的DR竞选。
图2 DR竞选示意图
如图2所示,在ASM模型中,DR主要作用如下:
-
在连接组播源的共享网段,由DR负责向RP发送Register注册报文。与组播源相连的DR称为源端DR。
-
在连接组成员的共享网段,由DR负责向RP发送Join加入报文。与组成员相连的DR称为组成员端DR,此DR可充当IGMPv1环境下的IGMP查询器。
<