2.5 多播路由协议分类
IP多播网络的设计与部署(第1卷)
当前的多播协议可以划分为以下3个基本的类别。
密集模式协议(DVMRP和PIM-DM)。
稀疏模式协议(PIM-SM和CBT)。
链路状态协议(MOSPF)。
依据路由器的配置方式,某些协议(例如PIM)可以运行在密集模式或稀疏模式中。也可以对Cisco PIM路由器进行配置,使其在多播组的基础上动态地做出稀疏/密集模式决策。
2.5.1 密集协议模式
密集模式协议(例如DVMRP和PIM DM)只使用SPT并利用推送原则(push principle)来发送(S,G)多播流量。该推送原则假定网络中的每一个子网都至少有一个(S,G)多播流量的接收者,因此流量将被推送或泛洪到网络中的所有节点。该过程与以空气作为传播媒介,把信号传输到覆盖区域内的所有用户的无线电广播或电视广播相似。接收者只需要调谐到该广播频率(频道)就可以收听节目。
1.泛洪和剪枝行为
与通过空气广播无线电波不同,将多播流量泛洪到网络中的每一个节点时,将会产生相关的开销(带宽、路由器CPU等)。因此,为了避免有价值的网络资源的不必要消耗,路由器将剪枝(prune)消息发送回源分发树,以切断(shut off)不需要的多播流量。这使得没有接收者的分支从分发树上被剪枝掉,分发树上只留下包含接收者的分支。
在图2-20中,路由器B正在使用剪枝消息对不想要的多播流量作出反应。
当路由器A从外出接口(在本例中是Ethernet0)上接收到用于(S,G)多播流量流的剪枝信息时,路由器将该接口设置为剪枝状态,并并指通过该接口转发(S,G)流量。在本例中,该接口连接到一个多路访问(multi-access)网络上,并且我们假定在该接口上没有其他下游路由器想要接收流量。用来确定多路访问接口上的其他路由器是否需要继续多播流量的方法,与正在使用的协议有关。每一个协议如何处理该情形的详情会在本书后面章节中讲到。
剪枝状态有一个时间值,这使得在超时后,促使路由器将接口重新置为转发状态,并再次在该接口上向外泛洪多播流量。
例2-2所示为图2-20中路由器A的Cisco多播路由表条目。
例2-2 路由器A的Cisco多播路由表条目
可以注意到,接口Ethernet0处于剪枝状态(由Prune/Dense指示符表示),没有组224.2.127.254的流量(由源151.10.3.21发出)从该接口上转发出去。本例还显示出剪枝状态将在2分35秒(由最后一行的最后一个计时器的值来指示)后超时。当剪枝状态超时以后,该接口的状态将返回Forward/Dense状态,并且流量将再次从该接口流出去。假定下游路由器(这里是路由器B)仍然不需要接收多播流量,它将再次发送一条剪枝消息,以切断不需要的流量。
用于剪枝状态的超时值与正在使用的多播路由协议有关,一般是2~3分钟的范围。周期性的泛洪和剪枝行为是密集模式协议(如DVMRP和PIM-DM)的特征。
2.嫁接
大多数密集模式协议通常可以将先前剪枝掉的分支嫁接(graft)回分发树。例如,当位于已被剪枝掉的分支上的一个新接收者加入到多播组后,将会用到这一嫁接性能。在本例中,路由器检测到新接收者,并立即沿着分发树向上发送一条剪枝(graft)消息到源。当上游路由器接收到该嫁接消息后,路由器立即把接收到嫁接消息的接口置为转发状态,以使多播流量开始向下发送给接收者。
图2-21所示为一个嫁接过程。在本例中,源主机E正在沿着SPT(由实线箭头表示)向下发送多播流量,以到达主机A、B和C。
由于路由器E刚开始没有直接相连的接收者,因此它已经剪枝掉了与路由器C之间的链路。而在本例中,主机D作为新的接收者加入到多播组中。这一行为促使路由器E沿着SPT向路由器C发送一条嫁接消息,以立即重新开始发送多播流。通过使用该嫁接过程,路由器E可以不用非要等到先前的剪枝状态超时,从而减少了主机D可以看到的加入延迟。
2.5.2 稀疏模式协议
稀疏模式协议使用共享树,偶尔也会使用SPT(在PIM-SM中)来将多播流量发送给网络中的多播接收者。与使用推送模型不同,稀疏模式协议使用拉模型(pull model)来发送多播流量,即多播流量被下拉到网络中的接收者。因此,拉模型假定接收者不需要多播流量,除非使用显式的加入(join)机制来明确请求多播流量。这里再次使用电视来做类比,拉模型类似于电视中的付费收看节目,如果观众没有明确请求节目,则节目将不会发送给接收者。
注意
我意识到,在这里对有线电视的付费收看模型进行了略微扩展。事实是,观众总是可以收到电视节目的。当时你请求付费收看的电影时,有线电视公司将向你的有线电视接收盒发送某种授权代码,这些代码可以用来对电视节目进行解码,从而收看到该节目。我想,你一定明白了!
1.共享树加入消息
在稀疏模式网络中,为了把多播流量向下发送到接收者,必须构建一棵从根节点(PIM-SM中的RP或者CBT中的核心)到接收者的共享树。为了构建共享树的分支,路由器向共享树的根发送一条共享树加入消息。该加入消息朝着根节点逐路由器传输,从而构建出了共享树的分支。
图2-22所示为加入消息正在沿着共享树向上发送给根。在本例中,路由器E有一个本地连接的接收者,因此通过路由器C向根发送一条加入消息(有虚线箭头表示)。该消息逐跳传输,直到到达根,然后构建共享树的一个分支(如实线箭头所示)。
在某些情况下(如PIM-SM),SPT加入消息也可以在源的方向上发送,从而在网络中构建一棵从单独的多播源到接收者的SPT。SPT允许有直连接收者的路由器能够穿过网络并旁路掉根节点,从而使得源发送的多播流量能够通过一条更直接的路径被接收到。
图2-23所示为一棵正在构建的SPT。它通过向一个特定的多播源发送加入消息来构建。在本例中,路由器E通过路由器C向源发送一条SPT加入消息(如虚线箭头所示)。SPT加入消息逐跳传输,直到到达路由器A,其所经指出即为SPT(如实线箭头所示)。
需要重点强调的是,在稀疏模式网络中(共享树或SPT),如果分发树的分支没有刷新,它们将会超时并被删除,因此会停止沿着共享树的分支向下发送流量。为了避免这个问题,需要用一定形式的周期性加入更新机制(由路由器沿着分支发送)来维护稀疏模式分发树的分支。有些协议(比如PIM-SM)通过沿着分发树重新发送加入消息来定期地刷新分支。
2.剪枝消息
在稀疏模式下,当不再需要多播组流量时,将会沿着分发树向上发送剪枝消息。这一行为使得共享树或SPT的分支(通过显式的加入消息创建的)在不再被需要时,可以被拆下来。例如,如果一台叶节点路由器检测到它不再有用于某特定多播组的直连主机(或下游多播路由器)时,将沿着分发树向上发送一条剪枝消息,以切断不需要的多播组流量。通过发送剪枝消息,而不是等待稀疏模式分发树的分支超时,可以缩短分支离开网络的延迟。
图2-24所示为本过程的操作情况。主机A刚离开多播组,因此路由器A不再需要沿着共享树(由实线箭头表示)向下传输流量,因此将会沿着共享树向上发送一条剪枝消息到RP。该消息间断了位于共享树上的路由器A和路由器B之间的连接,并停止向路由器A发送不需要的多播流量。
2.5.3 链路状态协议
链路状态协议(如MOSPF)与密集模式协议很相似,因为它们都是用SPT在网络中将多播流量分发到接收者。然而,链路状态协议不使用在DVMRP或PIM-DM中应用的泛洪和剪枝机制。相反,链路状态协议泛洪特殊的多播链路状态信息,该信息可以识别组成员(即接收者)在网络中的位置。网络中的所有路由器都使用这一组成员资格(group membership)信息,构建从每一个源到所有接收者的最短路径树(第9章将详细介绍MOSPF)。