论文部分内容阅读
MPLS(Multiple Protocol Label Switching)是IETF在Cisco的标记交换(Tag Switching)的基础上提出的一种宽带网络新技术,它将第三层路由与第二层交换结合起来,提高改善IP网络的转发性能,以适应Internet迅速发展带来的新情况、新要求。
MPLS是一种标签转发技术,它给数据报加上标签,并在MPLS域内根据标签来转发数据报。标签是一个短的、定长的、具有本地效力的标识符,用来识别特定的等效转发类(FEC,对一组具有相同特性的第三层数据报进行标识的标识符,例如具有相同的路径或相同的服务质量要求等)。
对于MPLS域内转发数据报来说,它所经过的路径是根据路由表信息预先建立的。MPLS只在MPLS域边缘路由器对数据报进行网络层头部分析,并执行加标签或去标签操作,而在MPLS域内则把标签作为一种索引,在标签信息库(LIB)中检索出新的标签值,交换数据报中的标签,并进一步转发数据报,这使MPLS域内的数据报转发更加简化。
MPLS与传统IP业务相比,具有许多优点。它对数据报转发处理简单,提供显示路由功能,支持组播路由,支持多种网络层协议,能够进行业务量规划,提供QoS保证,提供多种业务分类粒度。
MPLS高效率的转发性能和良好的网络扩展性可以大大提高Internet骨干网络中的数据转发效率。不仅如此,MPLS在业务量工程(Traffic Engineering)和虚拟专用网(VPN)中也能充分发挥其特有的优势。其独特的显示路由方式可以方便地为网络运营商提供网络运营中平衡网络负荷和网络路由备份的有效手段,而其标签交换路径(LSP)的隧道特性又可以便捷地满足网络运营商实现VPN的要求。正因为MPLS所带来的种种好处,使众多的网络设备厂商和网络运营商对MPLS刮目相看,纷纷展开对MPLS的研究开发,这也正是MPLS技术得以迅速发展的一个重要原因。
本文的目的是对MPLS提供QoS保证进行详细的阐述,文中首先论述了提供QoS服务的重要性以及目前的主要解决方案,接下来分析了MPLS技术实现与QoS服务的关系,然后阐述了MPLS技术是如何与RSVP协议相结合的,最后对MPLS提供QoS保证的特点进行了概括。
提供QoS服务的重要性及目前针对QoS的解决方案
QoS服务反映了一个网络为它的网络业务流提供更良好的服务质量的能力,这些业务流可能经过FR、ATM、Ethernet、SONET等任何一种传输链路,也可能经过所有这些链路,传输链路的不同也造成提供良好服务质量的难度和复杂性。提供QoS保证的方法主要包括为业务流提供专用的带宽,控制传输过程中的抖动和时延(这对于实时交互业务是很重要的),减少传输过程的数据报丢失率。随着Internet网络规模的扩大,业务种类越来越多,对网络的带宽以及服务质量的要求越来越高,因此在互联网上提供QoS保证就显得愈发重要。针对QoS的解决方案也不断涌现,比较典型的有IntServ/RSVP模型和DiffServ模型。
IntServ/RSVP模型的基本思想是在对业务流进行转发之前,先通过某种信令在业务流转发的路径上为业务流预留好所需的资源,当进行业务流转发时就可以获得相应的QoS保证。这种方案可以提供端到端的服务质量保证,并且它可以提供比较精细的服务质量,但是实现过程比较复杂。
DiffServ模型采用了与MPLS类似的方法,它把网络划分为边界网络和中心网络,在边界网络对业务流的数据报进行标记或去标记操作,而在中心网络则根据标记对业务流进行业务调度,它的标记是利用IPv4报文中ToS字段的6比特实现的,那么业务流就获得了与标记相对应的QoS服务。这种方案提高了可扩展性,但是最多只能提供64个不同的服务等级。
两种方案相对MPLS而言,虽然DiffServ模型局限于IP协议,不适应于MPLS的多协议要求,而且它的服务质量比较粗糙;IntServ/RSVP模型则可以提供端到端的较为精细的QoS服务,又由于MPLS建立的标签交换路径是根据路由协议产生的路由信息预先建立的,并且MPLS不可能为所有的标签交换路径提供QoS保证,因此IntServ/RSVP模型的过程复杂性在这里就不那么重要。以上正是MPLS选择RSVP协议来提供QoS保证的原因。
MPLS技术组成与QoS服务
MPLS技术实现大致可分为三个模块(见图1),这三个模块与QoS服务的提供有着密切的关系。第一、MPLS对网络业务流进行转发之前,必须先在MPLS域边缘对业务流进行划分,划分的依据可以是某个目标地址,也可以是带有QoS要求的目标地址,这些划分依据被称为FEC,而这些FEC有的来源于动态路由信息,有的来源于网络管理要求,例如建立显示路由,还有的来源于其它高层协议请求,对QoS的要求被作为参数加入到FEC中。每个FEC都对应着一条标签交换路径,在MPLS域的入节点和出节点就是根据FEC为要转发的数据报加标签和去标签。这一模块的主要功能就是建立、维护和删除FEC,也就是把QoS要求转化成FEC。
第二、针对不同的FEC,MPLS必须为它们建立相应的标签交换路径,MPLS工作组定义了一个专门的LDP(Label Distributed Protocol)协议,它是通过Label Request、Label Mapping等消息在MPLS域内为每个FEC申请、分发标签,这些标签在MPLS域内转发业务流时被交换,这种在网络边缘加/去标签、在网络内部交换标签的方式,把复杂的地址匹配和QoS等级划分工作放到了网络边缘,大大简化了网络内部的操作过程。MPLS为了避免功能上与其它协议相重叠,也允许采用其它具有承载能力的协议进行标签的分发,例如RSVP、BGP、PIM等,应该说由于RSVP协议本身并不具备建立和维护标签库的能力,所以RSVP协议只是MPLS消息的一种可承载协议。但是当MPLS利用RSVP为其分发标签消息时,就使由此获得标签成为带资源预留的标签,所建立的标签交换路径就是已预留好资源的标签交换路径。通过LDP、RSVP等协议获得的标签构成一个标签库,可供业务流转发时使用。这一模块的主要功能是申请、分发标签,建立和维护标签信息库,当采用RSVP作承载协议时,由它完成申请QoS的任务。
第三、当标签信息库生成后,就可以为业务流进行数据报的转发。一般情况下的转发是以Best Effort方式进行的,如果有的标签是通过RSVP协议获得的,那么数据报转发过程中就应该考虑对含有不同标签值的数据报进行排队,这样才能为各种业务流提供精细的QoS服务。该模块的主要功能是标签转发,以及提供相应的QoS保证。
MPLS如何与RSVP结合提供QoS保证
RSVP协议申请资源预留主要是通过RSVP Path消息和RSVP Resv消息完成的。这一过程首先由发起节点根据其它协议提出的QoS请求产生RSVP Path消息,RSVP Path消息中包含有发起节点和目标节点的地址以及相应的QoS要求,并以此向下一跳发送;收到RSVP Path消息的中间节点对Path消息作适当修改后继续往下一跳发送RSVP Path消息;当目标节点收到RSVP Path消息后,在本地资源满足QoS要求的情况下向上一跳发送RSVP Resv消息,否则返回资源请求失败通知; 当中间节点收到RSVP Resv消息后会判断本地资源是否满足QoS要求,满足就进一步向上发送RSVP Resv消息,否则向上发送资源请求失败通知,直到发起节点;最后由发起节点向申请资源的协议返回资源申请情况。
从RSVP对资源预留的申请过程可以看出,这种方式类似于LDP协议中标签分发的顺序控制方式,所以采用RSVP协议承载标签分发消息时各个节点应采用顺序控制方式。另外,由于RSVP消息的转发是根据目标地址进行的,使RSVP消息允许穿过一些非RSVP节点(即不支持RSVP的节点),这是MPLS所不允许的,所以当RSVP消息中包含标签请求消息时,其中任何一个节点不支持RSVP协议或不支持MPLS技术,都应该终止该请求过程。
为使RSVP协议支持承载MPLS标签分发消息,MPLS工作组为RSVP进行了扩展,新增了5个对象类,有LABEL_REQUEST类、LABEL类、EXPLICIT_ROUTE类、RECORD_ROUTE类、SESSION_ATTRIBUTE类,在标签申请时只有LABEL_REQUEST类和LABEL类是必需的,它们的作用如下:
LABEL_REQUEST类:
此类对象用于向下一跳申请一个标签,它承载于RSVP Path消息中。对象中包含申请标签的网络层协议标识,MPLS允许非IP协议申请建立标签交换路径,这体现了MPLS的多协议的含义。除目标节点的所有节点都要把LABEL_REQUEST记录于RSVP Path状态块中,以便Path刷新消息能够包含LABEL_REQUEST对象。而目标节点收到含有LABEL_REQUEST对象的RSVP Path消息时,将触发该节点分配一个标签,并返回一个含有LABEL对象的RSVP Resv消息。
LABEL类:
此类对象用于携带被返回的标签值,它承载于RSVP Resv消息中,LABEL对象紧跟在FILTER_SPEC对象之后。除目标节点的所有节点都要把LABEL记录于RSVP Resv状态块中,以便Resv刷新消息能够包含LABEL对象。中间节点收到含有LABEL的RSVP Resv消息时要把其中的标签值作为被申请的资源预留路径的出标签,并触发本节点分配一个新的标签值,将该标签值放在LABEL中,通过RSVP Resv消息向上一跳返回。当发起节点收到含有LABEL的RSVP Resv消息时记录下出标签值,并向提出申请的协议(即MPLS)返回路径建立成功消息。
EXPLICIT_ROUTE类:
此类对象是针对MPLS技术中显示路由方式提出的,用来指定标签建立的路径,通过RSVP Path消息携带。显示路由是由发起节点确定的一条路径,而不是由沿途各节点根据路由表动态决定的,这种方式便于ISP进行网络负荷的均衡。在EXPLICIT_ROUTE中包含一组抽象节点(既可以是单个网络节点,也可以是多个网络节点构成的一条路径,还可以是不确定具体路径的自治系统),所以EXPLICIT_ROUTE中不仅包含沿途各节点的网络地址,也可能包含某个自治系统的AS号。收到含有EXPLICIT_ROUTE对象的RSVP Path消息的节点都要根据EXPLICIT_ROUTE对象确定转发消息的下一跳,对EXPLICIT_ROUTE对象的处理可以由LDP协议完成。
RECORD_ROUTE类:
此类对象主要用于收集详细的路径信息,进行环路检测和诊断,它可以携带于RSVP Path消息和RSVP Resv消息中。RECORD_ROUTE对象中记录了Path消息和Resv消息经过的路径信息(网络节点地址),这些信息按照后进先出的堆栈方式组织。目标节点以前的各个节点首先将自己的节点地址压入RECORD_ROUTE对象堆栈顶部,然后将RECORD_ROUTE对象放在Path消息中发送出去;而发起节点以后的各个节点也把自己的节点地址压入RECORD_ROUTE对象堆栈顶部,再把RECORD_ROUTE对象放在Resv消息中发送出去。所有中间节点收到含有RECORD_ROUTE对象的Path消息或Resv消息时,都应该把RECORD_ROUTE对象记录于对应的消息状态块中,那么,每个节点的Path消息状态块中包含一条从发起节点到本节点的路径,而Resv消息状态块中则包含一条从目标节点到本节点的路径。根据这些信息,可以很方便的进行环路检测及诊断等工作。
SESSION_ATTRIBUTE类:
此类对象用于携带有关资源占用的参数,它被放在RSVP Path消息中传送。SESSION_ATTRIBUTE对象中包含了资源获取优先权和资源保持优先权,它也可以携带有关资源亲和力的信息。在对象中资源获取优先权不能高于资源保持优先权。优先权的设置有助于节点在资源紧张的时候为业务流提供更为合理的QoS保证。
另外,MPLS还对RSVP原有的SESSION类、SENDER_TEMPLATE类、FILTER_SPEC类、FLOWSPEC类进行了扩展,由于篇幅有限,这里不再详细描述。
MPLS与RSVP相结合的好处
MPLS通过RSVP为标签交换提供了QoS保证,综合了IntServ/RSVP模型和DiffServ模型的优点,既具有RSVP协议本身所具有的端到端的良好服务质量保证,同时由于采用了与DiffServ模型相似的网络划分方式,所以又具有很好的可扩展性。再加上MPLS特有的显示路由方式,可以为网络管理者提供更加完美的服务质量体系。