因为组播中的组地址是虚拟的,所以不可能如同单播那样,直接从数据源一端路由到特定的目的地址。组播应用程序将数据包发送给一组希望接收数据的接收者(组播地址),而不是仅仅传送给一个接收者(单播地址)。
组播路由建立了一个从数据源端到多个接收端的无环数据传输路径。组播路由协议的任务就是构建分发树结构。组播路由器能采用多种方法来建立数据传输的路径,即分发树。根据网络的实际情况,组播路由协议可以分成两大类——密集模式和稀疏模式。
(1) 密集模式组播(PIM-DM)
密集模式组播路由协议适用于小型网络。它假设网络中的每个子网都存在至少一个对组播组感兴趣的接收站点。因此,组播数据包被扩散到网络中的所有点。与此伴随着相关资源(带宽和路由器的CPU等)的消耗。为了减少这些宝贵网络资源的消耗,密集模式组播路由协议对没有组播数据转发的分支进行剪枝*作,只保留包含接收站点的分支。为了使剪掉的分支中有组播数据转发需求的接收站点可以接收组播数据流,剪掉的分支可以周期性地恢复成转发状态。为了减少等待剪枝分支恢复转发状态的延时时间,密集模式组播路由协议使用嫁接机制主动加入组播分布树。这种周期性的扩散和剪枝现象是密集模式协议的特征。 一般说来,密集模式下数据包的转发路径是“有源树”——以“源”为根、组员为枝叶的一棵树。
密集模式下的典型路由协议是密集模式下的协议无关组播(Protocol-Independent Multicast-Dense Mode,PIM-DM)、距离向量组播路由协议(Distance Vector Multicast Routing Protocol,DVMRP)。
(2) 稀疏模式组播(PIM-SM)
稀疏模式默认所有机器都不需要收组播包,只有明确指定需要的才转发。接收站点为接收到特定组的数据流,必须向该组对应的“汇聚点”发送加入消息,加入消息所经过的路径就变成了共享树的分支。发送组播时,组播报文发送到汇聚点,再沿以汇聚点为根的组员为枝叶的“共享树”转发。为避免共享树的分支由于不被更新而被删除,稀疏模式组播路由协议通过向分支周期性地发送加入消息来维护组播分布树。
发送端如果想要给特定的地址发送数据,首先要在汇聚点进行注册,之后把数据发向汇聚点。当数据到达了汇聚点后,组播数据包被复制并沿着分发树路径把数据传给对其感兴趣的接收者。复制仅仅发生在分发树的分支处,这个过程能自动重复直到数据包最终到达目的地。
稀疏模式下的典型路由协议是稀疏模式下的协议无关组播(Protocol-Independent Multicast-Sparse Mode,PIM-SM)。