- 易迪拓培训,专注于微波、射频、天线设计工程师的培养
几种IP多播路由协议的分析
南京邮电学院 王国华 刘华东
目前以光纤为主的网络建设已经基 本完成,随着新业务的不断开展,用户要求网络必须能够提供更高的带宽并支持服务的迅速开通,支持应用与业务的多样化。其中一个重要的业务应用就是在网络会议电视、视频点播(VOD)、互动游戏和网络信息的“推”技术等应用中广泛使用的IP多播协议(IP Multicast Protocol)。
一、IP多播路由的基本类型
多播路由的一种常见的思路就是在多播组成员之间构造一棵扩展分布树。在一个特定的“发送源,目的组”对上的IP多播流量都是通过这个扩展树从发送源传输到接受者的,这个扩展树连接了该多播组中所有主机。不同的IP多播路由协议使用不同的技术来构造这些多播扩展树,一旦这个树构造完成,所有的多播流量都将通过它来传播。 根据网络中多播组成员的分布,总的说来IP多播路由协议可以分为以下两种基本类型。第一种假设多播组成员密集地分布在网络中,也就是说,网络大多数的子网都至少包含一个多播组成员,而且网络带宽足够大,这种被称作“密集模式”(Dense-Mode)的多播路由协议依赖于广播技术来将数据“推”向网络中所有的路由器。密集模式路由协议包括距离向量多播路由协议(DVMRP:Distance Vector Multicast Routing Protocol)、多播开放最短路径优先协议(MOSPF:Multicast Open Shortest Path First)和密集模式独立多播协议(PIM-DM:Protocol-Independent Multicast-Dense Mode)等。
多播路由的第二种类型则假设多播组成员在网络中是稀疏分散的,并且网络不能提供足够的传输带宽,比如Internet上通过ISDN线路连接分散在许多不同地区的大量用户。在这种情况下,广播就会浪费许多不必要的网络带宽从而可能导致严重的网络性能问题。于是稀疏模式多播路由协议必须依赖于具有路由选择能力的技术来建立和维持多播树。稀疏模式主要有基于核心树的多播协议(CBT:Core Based Tree)和稀疏模式独立协议多播(PIM-SM:Protocol-Independent Multicast-Sparse Mode)。
本文将比较和讨论这些路由协议的功能,并且介绍透明的隧道机制,它们可以在没有多播能力的路由器上为IP多播流量建立路由。
二、密集模式多播路由协议
1、距离向量多播路由协议 (DVMRP)
第一个支持多播功能的路由协议就是距离向量多播路由协议。它已经被广泛地应用在多播骨干网MBONE上。
DVMRP为每个发送源和目的主机组构建不同的分布树。每个分布树都是一个以多播发送源作为根,以多播接受目的主机作为叶的最小扩展分布树。这个分布树为发送源和组中每个多播接受者之间提供了一个最短路径,这个以“跳数”为单位的最短路径就是DVMRP的量度。当一个发送源要向多播组中发送消息时,一个扩展分布树就根据这个请求而建立,并且使用“广播和修剪”的技术来维持这个扩展分布树。
要简单的描述DVMRP,我们首先假设网络中所有的路由器都支持DVMRP协议。使用DVMRP的前提是假设网络中所有的主机都是多播组中的一部分。子网中指定的路由器(就是用来处理子网中所有主机的路由的路由器)先向所有的临近路由器发送一个多播包。这些路由器有选择性的将这个数据包向前传送,直到这个数据包传送到多播组中的每个成员。
扩展分布树构建过程中的选择性发送多播包的具体运作是:当一个路由器接收到一个多播包,它先检查它的单播路由表来查找到多播组发送源的最短路径的接口,如果这个接口就是这个多播包到达的接口,那么路由器就将这个多播组信息记录到它的内部路由表(指明该组数据包应该发送的接口),并且将这个多播包向除了接受到该数据包的路由器以外的其他临近路由器继续发送。如果这个多播包的到达接口不是该路由器到发送源的最短路径的接口,那么这个包就被丢弃。这种机制被称为“反向路径广播”(Reverse-Path Broadcasting)机制,保证了构建的树中不会出现环,而且从发送源到所有接受者都是最短路径。这是这个协议中的广播技术部分。
DVMRP实际应用的路由算法使用了单播路由协议的某些信息,比上面描述的路由算法能更加具有选择性的进行路由(这表明DVMRP必须包含它自己的单播路由协议)。一个DVMRP路由器(暂称为MR1)的单播路由表中的某些信息使得它可以判定一个临近的DVMRP路由器(暂称为MR2)是否能够将MR1确认为返回多播源的最短路径。这使得只有MR2能够被构建入多播树中时MR1才传送多播包到MR2。这种机制能够很可观的减少构建树时的广播消息。
协议的修剪功能可以将不能到达多播组成员的扩展分布树的分枝拆除。在主机和其直接相邻的路由器之间运作的Internet组管理协议(IGMP)可以用来维持路由器中的组成员关系数据。当一个路由器发现在它所属的分枝上没有主机属于这个多播组,它就发送一个修剪数据包给它的上行路由器。同时,该路由器必须更新它的路由表中“发送源、目的组”的状态信息,以表明这个分枝已经从这个分布扩展树中被删除。这个过程这样重复继续下去直到所有的无用分枝都从这个树中被删除,这样就得到了一个最小扩展树。
DVMRP扩展树的构建如图1所示。图中左边是建立前的网络图,右边是建立起来的DVMRP扩展树,建立过程为:
第一步:第一跳时数据包到达路由器MR1;
第二步:第二跳时数据包到达路由器MR2、MR3、MR4;
第三步:第三跳时路由器MR3和MR4交换数据包,都将数据包丢弃,因为数据包不是在返回发送源的最短路径接口上接收到的。(在DVMRP的更有选择性的发送进程中不会发生这种交换);
第四步:第四跳时数据包到达路由器MR7,路由器MR7发现它是一个叶路由器并且在其子网中没有多播组成员,它就向上行路由器MR6发送一个修剪信息,路由器MR6再向路由器MR4发送修剪信息。路由器MR3也发送一个修剪信息给路由器MR1。
一旦扩展树建立了,它就被用来从发送源到多播成员之间传送多播数据包。路径上的每个路由器通过指向多播组成员的接口传送数据包。由于新成员可以在任意时刻加入,并且这些新成员可能会依附在那些被修剪了的分枝上接收多播消息,因此DVMRP会周期性的重建扩展树。
对子网中密集分布的多播组来说DVMRP能够很好的运作,但是对于在范围比较大的区域上分散分布的多播组来说,周期性的广播行为会导致严重的性能问题。另一个问题是需要在路由器中存储大量的多播路由状态信息。所有的多播路由器都必须为每个“发送源、目的组”对维护这些多播路由状态信息,包括用来发送多播数据包的被选定端口和修剪状态信息等。由于以上的原因,DVMRP不能支持大型网络中稀疏分散的多播组。
2、多播开放最短路径优先 (MOSPF)
开放最短路径优先(OSPF)是一个单播路由协议,将数据包在最小开销路径上进行路由传送,这里的开销是表示链路状态的一种量度。除了路径中的跳数以外,其他能够影响路径开销的网络性能参数还有负载平衡信息(流量较低的链路被赋予的开销值比流量高的链路的开销值低,这样可以平衡网络中的通信量)、应用程序需要的QoS(如果某个应用要求低延迟,那么卫星链路就会具有较高的开销值)等。
MOSPF是为单路由域多播使用设计的,比如一个由某组织控制使用的网络(校园网或企业网等)。MOSPF依赖于OSPF作为单播路由协议,就象DVMRP也包含它自己的单播协议一样。在一个OSPF/MOSPF网络中每个路由器都维持一个最新的全网络拓扑结构图。这个“链路状态”信息被用来构建多播分布树。
每个MOSPF路由器都通过IGMP协议周期性的收集多播组成员关系信息。这些信息和这些链路状态信息被发送到其路由域中的所有其他路由器。路由器将根据它们从临近路由器接收到的这些信息更新他们的内部连接状态信息。由于每个路由器都清楚整个网络的拓扑结构,就能够独立的计算出一个最小开销扩展树,将多播发送源和多播组成员分别作为树的根和叶。这个树就是用来将多播流从发送源发送到多播组成员的路径。所有的路由器都会计算出相同的扩展树,因为它们周期性的共享链路状态信息。 MOSPF使用Dijkstra算法计算最短路径树,对每一个“发送源、目的组”对来说这个树都是分别计算的。为了减少计算量并有效使用计算结果,路由器只需要在它接收到第一个多播数据包时才进行计算扩展树。一旦这个扩展树被计算出来,其信息就被存储下来用于后继数据包的路由,如图2所示,计算过程为:
(1)MR1计算树——通过IGMP明确组成员并明确到MR4要通过MR2,到MR8要通过MR5,等等
(2)MR2计算树——明确到MR4的路径就是直接连接,到MR8要通过MR5;MR3计算树——明确到MR9的路径就是直接连接
(3)MR5计算树——明确到MR8的路径就是直接连接
这个过程(也叫做数据驱动过程)是由多播传送引起的,当每个路由器接收到一个多播数据包时都会计算出和上次计算相同的分布树。
3、独立多播协议
独立多播协议(PIM)是一种标准的多播路由协议,并能够在Internet上提供可扩展的域间多播路由而不依赖于任何单播协议。PIM有两种运行模式,一种是密集分布多播组模式,另一个是稀疏分布多播组模式,前者被称为独立多播密集模式协议(PIM-DM),就是下面要介绍的,后者被称为独立多播稀疏模式协议(PIM-SM),在稀疏模式路由协议中将有介绍。
4、独立多播密集模式协议 (PIM-DM)
PIM-DM有点类似于DVMRP,这两个协议都使用了反向路径多播机制来构建分布树。它们之间的主要不同在于PIM完全不依赖于网络中的单播路由协议而DVMRP依赖于某个相关的单播路由协议机制,并且PIM-DM比DVMRP简单。
PIM-DM协议和所有的密集模式路由协议一样也是数据驱动的。但是既然PIM-DM不依赖于任何单播路由协议,路由器某个接收端口(就是返回到源的最短路径的端口)接收到的多播数据包被发送到所有下行接口直到不需要的分枝从树中被修剪掉。DVMRP在树构建阶段能够使用单播协议提供的拓扑数据有选择性的向下行发送数据包,PIM-DM则更加倾向于简单性和独立性,甚至不惜增加数据包复制引起的额外开销。
三、稀疏模式多播路由 协议
上面介绍的路由协议都要周期性在网络中引发广播风暴。当多播组在网络中集中分布或者网络提供足够大带宽的情况下这是一个有效的方法,但是如果在Internet上同时召开数千个小会议的情况下,周期性广播引起的网络总流量有可能会引起Internet的广大区域内的流量拥塞。很显然当多播组成员在广泛区域内稀疏分布时,就需要另一种方法将多播流量控制在连接到多播组成员的链路路径上,而不会“泄漏”到不相关的链路路径上,这样既保证了数据传输的安全,又能够有效的控制网络中的总流量和路由器的负载。
1、基于核心树的多播协议 (CBT)
一些多播应用,比如分布互动仿真和分布图像游戏等,在一个单个多播组中会存在数个有效的发送源。和DVMRP和MOSPF为每个“发送源、目的组”对构建最短路径树不同的是,CBT协议只构建一个树给组中所有成员共享,这个树也就被称为共享树。整个多播组的多播通信量都在这个共享树上进行收发而不论发送源有多少或者在什么位置。这种共享树的使用能够极大的减少路由器中的多播状态信息。
CBT共享树有一个核心路由器用来构建这个树。如图3所示。要加入的路由器发送加入请求给这个核心路由器。核心路由器接收到加入请求后,沿反路径返回一个确认,这样就构成了树的一个分枝。加入请求数据包在被确认之前不需要一直被传送到核心路由器。如果加入请求包在到达核心路由器之前先到达树上的某个路由器,该路由器就接收下这个请求包而不继续向前发送并确认这个请求包。发送请求的路由器就连接到共享树上了。 CBT将多播流量集中在最少数量的链路而不是在一个基于发送源的共享树上。集中在核心路由器上的流量可能会引起多播路由的某些问题。某些版本的CBT支持多个多播核心的使用,和单个多播核心相比多核心更能达到负载平衡。
2 、独立多播稀疏模式协议 (PIM-SM)
和CBT相似,PIM-SM被设计成将多播限制在需要收发的路由器上。PIM-SM围绕一个被称为集中点(RP:Rendezvous Point)的路由器构建多播分布树。这个集中点扮演着和CBT核心路由器相同的角色,接收者在集中点能查找到新的发送源。但是PIM-SM比CBT更灵活,CBT的树通常是多播组共享树,PIM-SM中的独立的接收者可以选择是构建组共享树还是最短路径树。
每种分布树都有一定的优点。共享树比较容易构建,只需要在路由器中存储较少的状态信息,因此当多播组具有大量低速率发送源时共享树能够保留网络资源。但是,就像前面所说的,共享树会引起流量集中在核心路由器或者集中点上,如果流量比较大会引起性能的下降。共享树的另一个缺点是流量并不经过从发送源到目的的最短路径。如果低延迟是应用的关键要求,那么通信量应该通过最短路径传送。PIM-SM结构支持这两种分布树。
PIM-SM协议最初先为多播组构建一个组共享树。这个树由连接到集中点的发送者和接收者共同构建,就像CBT协议围绕着核心路由器构建的共享树一样。这共享树建立以后,一个接受者(实际上是最接近这个接收者的路由器)可以选择通过最短路径树改变到发送源的连接。这个操作的过程是通过向发送源发送一个PIM加入请求完成的。一旦从发送源到接收者的最短路径建立了,通过RP的外部分枝就被修剪掉了。这个过程如图4所示。要注意的是在一个多播组中可以为不同的源选择不同的树。
PIM协议定义了一些软状态机制来周期性地更新系统状态,使之适应网络拓扑的改变和组成员的改变。虽然PIM依赖于单播路由表来适应网络拓扑的改变,但它不依赖于构造这些路由表的特定单播路由协议。由于本文篇幅限制,PIM的其他性能,比如使用多集中点来消除单集中点错误导致的问题等,在本文中不加以描述。
四、 互操作性
使不同的路由协议之间具有互操作能力是很有必要的。供应商可以提供互操作能力的需求。互操作性的考虑有两个方面:一是现存的单播路由器和正在出现的具有多播能力的路由器之间的互操作性,二是多种多播路由方式之间的互操作性。
就第一种互操作能力来讲,DVMRP现在已经被广泛使用在MBONE的多播路由上,隧道机制也正在被用来将具有多播能力的子网连接到Internet上。另外,MOSPF是在OSPF的基础上设计的,因此也可以在OSPF域上扩展多播能力。
PIM的设计者正致力于第二种互操作能力,这样既可以在PIM-DM和PIM-SM之间实现互操作性,又可以在PIM和其他多播路由结构之间实现互操作。
在密集模式协议构建分布树和稀疏模式构建分布树之间具有根本的不相容性。密集模式协议是数据驱动的,而稀疏模式协议依赖于外来的加入请求。如果一个密集模式多播组要和一个稀疏模式多播组互通,比如说构建一个广域网上稀疏分布但在部分子网中密集分布的多播组,就需要一种机制可以从密集多播组扩展到稀疏多播组以获得加入请求。这种由PIM设计者提出的解决办法就是设立边界路由器向稀疏多播组发送外来的加入请求。这种解决办法可以使PIM-SM具有和其他密集模式的协议(比如DVMRP)互通的能力。
五、IP多播路由中的隧道传输机制
在多播中的隧道概念指将多播包再封装成一个IP数据包在不支持多播的互联网络中路由传输。最有名的多播隧道的例子就是MBONE(采用DVMRP协议)。在隧道的入口处进行数据包的封装,在隧道的出口处则进行拆封。在达到本地全IP多播配置传输机制上,隧道机制非常有用。
六、 结论
IP多播带入了许多新的应用并减少了网络的拥塞和服务器的负担。本文介绍分析了几种IP多播路由协议的概念及其优缺点。路由协议的选择是配置的关键步骤,需要考虑到应用程序的使用范围、可升级性、供应商的支持、性能开销、其他网络协议的支撑、灵活性、互操作性以及路由器开销等。目前IP多播的应用范围还不够大,但它能够降低占用带宽,减轻服务器负荷,并能改善传送数据的质量,尤其适用于需要大量带宽的多媒体应用,如音频、视频等。这项新技术已成为当前网络界的热门话题,并将从根本上改变网络的体系结构。
摘自《广播电视网络技术》2002.3