互联网基于IP协议为不同服务类别提供尽力而为的服务。随着网络的发展,新的应用不断涌现,如视频点播、视频会议、远程教育、协同工作等,这些新应用的共同特点是:
(1)对基于IP的网络提出了服务质量(Quality of Service,QoS)要求,如必要的带宽需求、低的端间延迟、低抖动、低丢失率和可靠传输等;
(2)一点发送消息,多点接收,即多播。由于多播技术只是在多播树的分枝处复制多播流,因而节省了网络有限的带宽资源,也减轻了服务器负载,因而具有广阔的前景。
目前、为应用提供服务质量保证的技术有:多协议标签交换协议MPLS、集成服务模式IntServ和差分服务模式DiffServ。MPLS协议使用标签交换在数据链路层和网络层提供快速流量传输,在MPLS网络中,人口路由器根据流的等价类为流加上标签,核心路由器检查标签并转发流,而在出口路由器,标签被移除,流被还原。这种方法使得边界路由器复杂,而核心路由器相对简单。
集成服务模式IntServ使用资源预留RSVP协议为每个流提供不同的服务质量保证,显然,该服务模式具有更多的QoS粒度,但是路由器必须为每个流维护状态信息,不具备可扩展性。
与IntServ模式比较,DiffServ模式是为每类应用提供QoS保证,具有较粗的服务粒度,因而具有更好的可扩展性。在DiffServ区域,边界路由器根据流的区分服务标记DSCP对流分类,确保符合流的TCA规范,并归入行为聚集。在该模式中,核心路由器要检查流的DSCP得到QoS参数,也需要IP协议的支持(因为DiffServ中的DSCP替代了IP4中的ToS域或IP6中的CoS域)。
上述3种模式适用于满足服务质量的单播应用,当应用于多播时,由于上述协议的局限性,以及多播应用的特点,会遇到各种困难。本文分析这3种技术在多播中的应用,指出存在的不足之处,并综述了不同文献的解决方案。同时指出了混合网络为多播应用提供QoS的困难和解决的技术路线。
2 IntServ模式与多播
集成模式IntServ是为实时应用如视频会议等远程场景而设计的,其内在的固有特性就支持多播。在QoS方面,IntServ结构提供两类服务,即可控负载型服务和质量保证型服务,前者提供时延、带宽与丢包率等参数的保证,不能控制固定延迟,但能保证排队延迟的大小;后者使用资源预留协议RSVP,能保证最小的传输时延。
资源预留RSVP协议面向接收者,即由接收端发起资源预留,适用于单播通信和多播通信。针对不同的资源预留请求,RSVP协议定义了3种资源预留模式:固定模式、通配符模式和显示共享模式。资源预留使用了PATH消息和RESV消息,当信息发送源接收到不同接收成员的RESV消息时,便能根据接收到的消息计算出多播路由树。
一旦预留了资源,请求的服务质量便能得到保证。但在IntServ模式中,网络中的每个路由器都要维护各类数据库(含软状态信息等),并且功能模块实现复杂(如RSVP信令要提供QoS协商机制、各路由器要建立和维护预留信息、对用户的请求要实现接纳许可控制和传输流的监控等),导致的直接后果是可扩展性和鲁棒性差,导致IntServ模式在大型网络、尤其是重负载网络中的应用。
3 DiffServ模式与多播
IntServ模式的不可扩展性是差分模式DiffServ产生的主要原因。DiffServ模式提供两类QoS服务:快速转发EF和保证转发AF。DiffServ模式的主要成员有:核心路由器、边缘路由器、资源控制器。在该模式中,网络的边缘路由器对每个分组进行分类、标记DS域,用DS域来携带IP分组对服务的需求信息;在网络的核心节点上,路由器根据分组头上的DS码点选择码点所对应的转发处理;而资源控制器配置了管理规则,为客户分配资源,他可以通过服务级别协定SLA与客户进行相互协调以分享规定的带宽。由于DiffServ已有的框架、结构都是基于单播的,并且多播成员的加入、退出组的动态随机性以及网络的异构性使得入口边界路由器很难对多播流量进行准确的监控,因此将DiffServ模式应用于多播会产生新的问题,存在的问题主要表现在:
(1)被忽视的预留子树问题NRS
DiffServ模式中的资源必须先预留再使用,当新成员加入多播树时(使用PIM-SM,PIM-DM,DVMRP等协议),在流复制点,DS域的内容被复制到每个流的IP报头,并且复制的流会获得与原来多播组相同的DSCP值,并获得与原先相同的调度转发处理和区分服务,但是新的加入并没有经过接纳许可控制和资源预留的必要过程。由于额外的资源被绕过区域管理的新增接收节点所消耗,其他正确预留资源的接收者的服务质量将受到负面影响甚至遭到破坏。
要解决NRS问题,就要防止任何未经资源预留就享用高级服务的情况,因此,NRS问题的解决方案是:在子树与原多播树的接合点,转换发向新成员的DS编码,使其对应的PHB值比默认的PHB级别低,即使用BE(BestEffort)甚至更低的LE(Limited Effort)服务,从而制约新的传输流即使对BE服务的资源也不能抢占,维护了公平性,只有当新成员的资源预留许可得到管理实体的确认并得到新的DSCP后,才可以享受比BE和LE级别高的服务质量。
(2)扩展性问题
在传统多播模型中,随着多播组成员的增加,多播树上的路由器需要保存的信息量也将随之增加,导致在DiffServ网络中实现多播传输却存在着可扩展性问题。
可扩展性问题解决方法之一是减少内部路由器的多播状态,即只在边界路由器进行多播树的计算与维护工作,在内部路由器中选择关键节点保存多播转发表,而其他非关键中间路由器等同于普通路由器,不保存任何多播组状态,从而减少内部节点的负担,提高了可扩展性。另一种方法是消除内部路由器的多播状态,如EBM和DSMCast方案。EBM方案只在边界路由器实现多播,在域内设置一个逻辑管理员节点用于管理域内的多播组的信息,由管理员节点给要加入多播组的新成员选择一个边界节点作为加入点,多播流被转换为多个单播流,所以无须在内部路由器维护多播路由表;DSMCast则利用了封装技术,在边界路由器将多播树的信息编码添加到报文头,内部路由器根据自己的标识符或IP地址以及数据报文中携带的多播树信息查找到相关的转发记录,根据此记录进行报文复制、重新标记与转发。
(3)异构多播组问题
在一个异构的网络环境中,多播组的多个接收成员可能希望获得不同的服务质量,如有的仅希望获得基本的BE服务,而其他成员希望获得更高的服务。对服务质量参数要求的不同增加了问题的复杂性。更严重的是,不同成员要求的服务种类可能没有可比性而无发统一服务质量。
DiffServ是面向接收者的,服务质量等级由发送源来决定。当新成员动态加入多播组时,要求中间路由器能根据用户不同的QoS请求标记出口报文的DSCP值,而中间路由器不保存每个流的状态,并且不具备标记功能,如何实现异构多播组问题变成为多播关键问题之一。
较好的解决方案是扩展路由表并存储DSCP,再辅以管理措施。在没有预约资源的情况下,接收者仅允许获得LBE服务;当要求的两种服务类型不能比较优劣时,上游节点只需传送较好的即可。
(4)发送方任意动态改变问题
在一个多播组中,任意成员都可以发送消息,而DiffServ是单向结构,这意味着,如果有多个发送者同时发送数据流的话,则其资源必须分别预留。
对于只需要BE服务的成员而言,可以在任何时候向组发送数据流而无需任何其他机制。当有QoS需求时,可以在多播路由表中为每个链路增加一项DSCP,并配以一定的管理机制。该方案简单,同时也保持了DiffServ模式良好的可扩展性。
其他如服务类间的公平性问题、多点到多点的多播传输问题和共享树的流量监控问题等也限制了DiffServ模式在多播领域的使用。
4 MPLS协议与多播
多协议标签交换MPLS是面向连接和IP路由技术的一种新的IETF交换方案的标准。他使用第三层(L3)转发信息启动第二层(L2)分组交换,将第二层交换的高性能和第三层转发的高扩展性融为一体,而IntServ和DiffServ模式工作在网络层。
基于IP的MPLS网络包含2个主要组件:控制组件(边缘标签路由器LER)和转发组件(标签交换路由器LSR)。控制组件使用标准的路由协议(L3)与其他路由器交换标签并维护前向路由表,当分组到达时,转发组件使用分组中的标签信息和控制组件维护的路由表(标签转发信息)确定分组的路由。在MPLS多播中,一般使用反向路由协议(RPF协议)来确定接收的分组是否属于当前多播组,因此,MPLS中的多播路由树基于标签值和入口界面来建立。
MPLS协议实现多播存在的问题是:
(1)标签交换路径LSP的设计
多播实现需要设计标签交换路径,而目前的MPLS协议只涉及点到点的LSP实现,并且组成员的动态关系使得LSP不够稳定,也需要消耗大量的标签和信息传递开销;
(2)流量聚集问题
在MPLS网络入口,单播流要聚集为多播流并且映射到LSP,其目的在于获得MPLS的可扩展性,但是这种流量聚集并不适合多播,目前的研究也只是局限在转发路由器的状态,而不是包含一组路由器的LSP;
(3)在核心路由器中L2层的分组交换和L3层的信息转发共存问题
如果有成员通过非MPLS网络加入到多播组,则MPLS网络中的某个边缘标签路由器LER必须维护两个前向路由表,一个路由表在L3层,另一个在L2层(通过非MPLS网络),使得分组通过该路由器的不同出口到达MPLS网络的下一个路由器和非MPLS网络;如图1所示,S1、S2是发送者,R1、R2是同组中的接收者,标签交换路由器LER使用RP路由协议,相应的多播树为RPT;当S1发送时,R1、R2通过RPT树接收分组,如果后来R1通过SPT多播树加入该会话组,则LER路由器必须为同一个多播组维护两棵多播树,导致在用SPT、替换RPT时,一个成员接收到2份同样的分组。
对于上述问题,解决方法是要么借助于L3路由,要么建立基于特定源的标签交换LSP:MPLS的L2层使用ATM模式传输标签,根据多播共享树中源的不同虚拟通道为不同的源赋以标签,在图1的LER路由器中,再将多播路由表从共享树映射特定源的树,并构造下一跳的标签转发入口。
在属于不同的自治系的多个MPLS子网络系统中,可能有些MPLS子网络不支持边界网关协议BGP,使得成员的加入请求不能到达其他AS中的数据发送源。解决方法是使用扩展的MPLS协议预先建立满足QoS约束的多播路由树,由于树的所有信息嵌套在MPLS协议中,MPLS网络的内部路由器就不需要支持多播,这种方法的缺点是不适合动态多播环境。
MPLS协议用于多播存在的其他问题是:标签的缺乏和可扩展性问题,其中后者表现在:路由器需要为每个活动的多播组维护路由状态信息,增加了组播路由器的处理开销。
5 混合网络结构与多播
实用网络一般是两种或者两种以上上述网络模式的组合,这样的混合网络结构在基于QoS的多播应用中同样存在问题,下面分别加以介绍并给出问题的解决方法。
(1)IntServ和DiffServ相结合的多播
如图2所示,S、R分别为QoS流的发送者和接收者,IntServ区域的边缘路由器(ER1,ER2)与DiffServ区域的边界路由器(BR1,BR2)通过接口直接相连,其中,IntServ区域内部使用RSVP信令传输分组。存在的主要问题是RSVP信令如何穿越DiffServ区的问题。
解决的方案是DiffServ网络区域的管理实体BB使用通用的开放策略服务(Common Open Policy Service,COPS):当多播组形成时,RSVP的PATH消息在DiffServ区域中通过隧道被广播到所有的接收者;当接收者希望获得比BE更好的服务时,使用RESV消息响应,DiffServ接收到RESV消息时,发送COPS消息给其内部的管理实体BB,BB和DiffServ内部的所有路由器进行交互并为接收者预留资源。
在提供端到端QoS方面,IntServ和DiffServ是一对很好的互补模式,因此,不同的文献提供了若干不同的方案和实现机制,如面向可扩展核心的动态分组状态的DPS方案在分组头部对数据流的状态进行编码,缺点是实现比较困难;文献[16]提出了一种基于3种优先级别的带宽确保型服务BGS机制来提供端到端的QoS;文献[17]则提出了另外一种在DiffServ的网络中结合RSVP协议提供资源预留和QoS保证的框架,其中允许DiffServ边界路由器与RSVP协同工作,而内部路由器不识别RSVP消息。
(2)MPLS协议和IntServ模式相结合的多播
在MPLS网络中,一般扩展IntServ中使用的RSVP协议,让其具有流量工程(TE:Traffic Engineering)的功能来保证应用的QoS。严格来讲,流量工程TE是为单播应用设计的,文献[18,19]则在此基础上提出了不依赖于传统多播路由协议建立多播树的方法。
文献中的解决方案是预先建立在线/离线的满足流量工程规范的多播树(称为PRE-T)。在基于源的多播树方法中,树PRE-T被包含在PATH消息中发送到所有的组成员,源接收到成员返回的RESV消息后自底向上产生多播树;而文献[19]既可以基于源(为新的多播会话建立多播树)、又可以基于接收者建立多播树(为成员动态加入/离开建立多播树),对于一个多播会话而言,预先计算的树的信息保存在源的多播信息数据库MIDB中,当新成员要加入时,发送JOIN信息给源,触发树的重新计算。
在MPLS中使用RSVP-TE实现多播的好处是扩展性强,因为MPLS中的路由器不需要维护MIDB信息,缺点是过多的PATH消息和RESV消息增加了网络的负载。
(3)MPLS和DiffServ相结合的多播
如上所述,MPLS在L2层实现,而DiffServ在IP头实现。因此,这两种方法结合实现多播时需要进行服务质量的映射,由于DSCP域有6 b,而MPLS的EXP域只有3b,在映射时,某些信息将丢失。图3给出了MPLS和DiffServ结合实现多播的结构。
文献[20]提出了E-LSP方法,给出了在DiffServ网络中支持MPLS的细节:当多个行为聚集(BA)映射为单个LSP时,MPLS头部的EXP域被用来确定每跳行为(PHB),对于一个给定的EFC,一个LSP可以最多支持8个BA。文献[21]则扩展了E-LSP方法:在发布流量时,对相同的LSP使用相同分类,即标签被编码到EFC和服务类信息中,其中定义了三种服务类型:0类(BE服务)、1类(EF服务)、2类(AF1服务和AF2服务)。文献[22]则提出了在基于MPLS的ATM网络中支持DiffServ模式的实现算法。
6 结 语
IntServ集成模式、DiffServ差分模式和MPLS协议是Internet上实现服务质量的3种技术,应用于多播时各有其特点,其中IntServ技术固有的特点是支持多播,并且为每个流提供相应的QoS,其严重不足是可扩展性问题;DiffServ技术为每类流提供服务质量,具有很好的可扩展性;MPLS和DiffServ具有相似性,缺点是存在“胖边沿瘦核心”路由器问题。