2.PIM 协议
Cisco 的路由器只支持 PIM 组播协议。PIM 是一种可利用多种单播路由表(如 EIGRP、OSPF、BGP 和静态路由等)的组播路由协议,它根据这些路由表实现组播数据的转发。尽管它是组播路由协议,然而它实际上只是使用单播路由表来完成 RPF 检验功能,并没有重新建立组播路由表。不像其他的路由协议,PIM 并不会在路由之间收发路由更新信息。
PIM分为Dense-mode与Sparse-mode两种。密集模式的PIM(PIM-DM)使用“推”的方式,把组播流向网络的各个地方转发,从而把流“推”给不同接收者。这种方式适用于网络中的各个子网都有接收者(即接收者密集)的情况。PIM-DM一开始向网络中的各处发组播流,路由器每隔3分钟检查一次自己是否还存在“下游”的邻居,如果没有(即它无需转发组播流),就把这个流“剪”掉(即不再转发)。路由器会积累数据流所带有的源和组的信息,使得“下游”的路由器可以建立它们的组播转发表。PIM-DM只支持源树,而无法使用共享树。
松散模式的PIM(PIM-SM)使用“拉”的方式,只有存在接收者的网段才会接收到数据流(即接收者把流“拉”出来)。PIM-SM通过在共享树中转发数据包来散布组播源的信息。PIM-SM使用共享树(至少在组播开始的时候需要使用),因此,它需要指定一个汇聚点(RP)。源在RP中“注册”后,数据就通过共享树转发到接收者。一旦其它路由器收到从共享树来的数据后,就知道了数据的源在哪里。于是,路由器就会向源发送PIM(S,G)加入信息。在反向路径上的每个路由器比较自己的单播路由表中它到RP的度量和它到源的度量,如果到源的度量更优,它就会继续发送PIM(S,G)加入信息。否则(包括度量相等的情况),PIM(S,G)信息就会沿着RP的方向来发送。这样,就生成了共享树和源树。如下图所示的单向共享树,靠近源的路由器先向RP注册,然后在源和RP之间生成源树,数据通过共享树(*,G)到达接收者。

由于共享树并不是源到接收者的最优路径,因此,当流量超过某个门限值后,路由器会动态地生成源树。该门限值默认的情况为0(例如,在Cisco的路由器中,可通过ip pim spt-thresholdinfinity命令来修改该门限值)。同时,为了减轻RP的负担,在PIM-SM的第二个版本中,规定源要周期性的向RP注册,使得RP不必要维护大量的源的信息。

