文章目录
多播路由选择协议
仅使用 IGMP 并不能在因特网上进行IP多播 。连接在局域网上的多播路由器还必须和因特网上的其他多播路由器协同工作,以便把 IP 多播数据报用最小的代价传送给所有的多播组成员,这就需要使用多播路由选择协议。
多播转发树
多播路由选择协议的主要任务是:在多播路由器之间为每个多播组建立一个多播转发树。
-
多播转发树连接多播源和所有拥有该多播组成员的路由器。
-
IP多播数据报 只要沿着多播转发树进行洪泛,就能被传送到所有拥有该多播组成员的多播路由器。
-
之后,在多播路由器所直连的局域网内 ,多播路由器通过硬件多播,将IP多播数据报发送给该多播组的所有成员。
针对不同的多播组需要维护不同的多播转发树 ,而且必须动态地适应多播组成员的变化 ,但此时网络拓扑并不一定发生变化,因此多播路由选择协议要比单播路由选择协议(例如 RIP、OSPF等)复杂得多。
-
即使某个主机不是任何多播组的成员,它也可以向任何多播组发送多播数据报。
-
为了覆盖多播组的所有成员,多播转发树可能要经过一些没有多播组成员的路由器(例如上图中的 R2)
构建多播转发树
目前有以下两种方法来构建多播转发树:
-
基于源树(Source·BaseTree)多播路由选择
-
组共享树(Group-Shared Tree)多播路由选择
基于源树的多播路由选择
基于源树的多播路由选择的最典型算法是反向路径多播 (Reverse Path Multicasting,RPM)算法。
RPM
算法包含以下两个步骤:
-
利用反向路径广播 (Reverse Path Broadcasting,RPB )算法建立一个广播转发树。
-
利用剪枝 (Pruning)算法,剪除广播转发树中的下游非成员路由器,获得一个多播转发树。
建立广播转发树
要建立广播转发树,可以使用洪泛(Flooding)法
路由器 R1 向其邻居路由器 R3 发送广播分组,R3 收到后,复制该广播分组,并向自己的所有下游邻居路由器转发,即向除 R1 外的所有邻居路由器转发。
若网络中存在环路 ,使用洪泛法会产生严重的问题,即广播分组的一个或多个副本将在环路中永久兜圈。最终将导致该网络中产生大量的广播分组,使得网络带宽被完全占用。
而利用反向路径广播RPB算法生成的广播转发树 ,不会存在环路,因此可以避免广播分组在环路中兜圈。
RPB
中"反向路径 "的意思是:在计算最短路径时把源点当作终点
RPB
算法的要点是:每一台路由器在收到一个广播分组时,先检查该广播分组是否是从源点经最短路径传送来的(即转发分组的路由器是否在自己到源点的最短路径上):
-
若是,本路由器就从自己除刚才接收该广播分组的接口的所有其他接口转发该广播分组。
-
否则,丢弃该广播分组。
-
如果本路由器有好几个邻居路由器都处在到源点的最短路径上,也就是存在好几条同样长度的最短路径 ,那么只能选取一条最短路径。选取 的规则是,这几条最短路径中的邻居路由器的IP地址最小的那条最短路径。
经过上述过程,最终可以得出转发广播分组的广播转发树,以后就按该广播转发树转发广播分组,这样就避免了广播分组兜圈子 ,同时每一个路由器也不会收到重复的广播分组 。
建立多播转发树
-
RPB
里然很好地解决了转发环路的问题,但只是实现了广播,要实现真正的多播,还要将 R8 这样没有多播组成员 (使用IGMP来探测)、并且也没有下游路由器的叶节点 从广播转发树上剪除 。就可实现多播转发树。 -
尽管 R2 没有多播组成员,但也要保留 R2 以确保多播转发树的连通性。
假设需要剪除 R8,则 R8 向其上游路由器 R5 发送一个剪枝报文,将自己从多播转发树上剪除
如果被剪枝的路由器,通过IGMP又发现了新的多播组成员 ,则会向上游路由器发送一个嫁接报文,并重新加入到多播转发树中
组共享树的多播路由选择
组共享树多播路由选择采用基于核心的分布式生成树算法 来建立共享树。该方法在每个多播组中指定一个核心(core)路由器 ,以该路由器为根 ,建立一棵连接多播组的所有成员路由器的生成树,作为多播转发树。
每个多播组中除了核心路由器,其他所有成员路由器都会向自己多播组中的核心路由器单播加入报文 。加入报文通过单播朝着核心路由器转发,直到它到达已经属于该多播生成树的某个节点 或者直接到达该核心路由器。
加入报文所经过的路径,就确定了一条从单播该报文的边缘节点到核心路由器之间的分支 ,而这个新分支就被嫁接到现有的多播转发树上。
基于核心的生成树的建立过程
假设源主机给该多播组发送了一个多播分组,当 R1 收到后将该多播分组封装到 目的地址为核心路由器 R5 的单播分组 中,将该单播分组发送给 R5。当核心路由器 R5 收到分组后,将被封装在单播分组中的多播分组解封出来 ,在多播转发树上洪泛转发。
因特网的多播路由选择协议
目前还没有在整个因特网范围使用的多播路由选择协议。下面是一些建议使用的多播路由选择协议:
-
距离向量多播路由选择协议(Distance Vector Multicast Routing Protocol, DVMRP )
[RFC 1075]
。 -
开放最短路径优先的多播扩展(Multicast Extensions to OSPF, MOSPF)
[RFC 1585]
。 -
协议无关多播-稀疏方式(ProtocolIndependentMulticast-Sparse Mode,PIM-SM)
[RFC 2362]
。 -
协议无关多播-密集方式(Protocol Independent Multicast-Dense Mode,PIM-DM)
[RFC 3973]
。 -
基于核心的转发树(Core BasedTree,CBT)
[RFC 2189,RFC 2201]
。
尽管因特网工程任务组 IETF 努力推动着因特网上的全球多播主干网(Multicast Backbone On the Intemnet,MBONE)的建设,但至今在因特网上的 IP 多播还没有得到大规模的应用。
主要原因是:改变一个已成功运行且广泛部署的网络层协议是一件极其困难的事情。目前 IP 多播主要应用在一些局部的园区网络、专用网络或者虚拟专用网中。
P2P
技术的广泛应用推动了应用层多播技术的发展,许多视频流公司和内容分发公司通过构建自己的应用层多播覆盖网络来分发它们的内容。但上述多播路由选择协议的算法思想在应用层多播中依然适用。