MPLS交换路由器的设计与实现
摘 要:MPLS是目前Internet核心网上最看好的技术,基于Crossbar的高速交换技术的发展也很快,但是如何实现2种技术的有机结合以到达最优的性能却有一系列问题需要考虑。本文结合某MPLS路由器的设计项目,综合考虑了当前MPLS的标准以及有关交换结构的最新技术,对实现MPLS交换路由器进行了深入研究,并具体探讨了高速接口、排队和调度以及Crossbar等要害模块的设计和实现方案。
要害词:因特网;多协议标签交换;交换路由器;设计
Internet业务量的飞速增长以及宽带技术的不断出现 ,对 Internet的网络结构以及互连的核心设备路由器的性能提出更高的要求。而由IETF提出的MPLS(多协议标签交换)技术以其在以下几个方面的绝对优势而成为目前最为看好的核心网技术:能够提供对QoS业务的灵活支持;能够支持流量工程以提高网络资源的利用率;能够灵活支持将来Internet上第一大业务VPN;能够有足够快的转发速率[1,2,3]。
高端路由器厂商Cisco、Juniper等都推出了自己的MPLS产品,但是并没有公开其具体的设计细节。我们的目的是设计一种支持多种接口和多种协议的高速交换路由器,该路由器既可以应用于校园网/企业网的骨干,也可以应用于大型ISP的边缘接入。我们的设计吸取了近年来国际上对宽带IP路由器技术前沿的研究成果,设计思想主要包括 4个方面:将路由引擎 (Routing Engine)和转发引擎 (Forwarding Engine)分开;用快速的硬件实现IP分组的头处理、路由和转发;用多个分布式的接口单元加中心控制器的模式取代中心处理器加接口卡的模式;用交换结构 (Switch Fabric)提高各接口单元之间的数据通信速度[4,5]。
基于以上的设计思想,本文描述的MPLS交换路由器包括以下组件: LDP/CR-LDP、MPLS分类器、业务分类器、地址分类器、接纳控制、资源治理、分组排队和调度以及交换结构Fabric。该MPLS路由器的模块化设计不仅能够提高分组转发率,提供灵活的QoS支持、流量规划以及故障恢复能力,还具有很好的可扩展性。
一、 MPLS基本概念及标签交换路由器
MPLS即多协议标签交换技术,是一种在开放的通信网上利用标签引导数据高速、高效传输的新技术,它的价值在于能够在无连接的网络中引入连接模式。MPLS采用传统的IP路由,但将路由与分组转发分离开来,这使得在MPLS网中可以通过修正转发方法来推动路由技术的演进。而且,网络中分组的转发基于定长标签,简化了转发机制,使得路由器容量很轻易扩展到太比特级。实际上当前推出的几乎所有高速路由器都支持MPLS。
MPLS还是一种与链路层无关的技术,它同时支持FR、ATM、PPP、SDH、DWDM等,保证了多种网络的互联互通,可以将各种不同的网络传输技术统一在同一个MPLS平台上,最大限度地兼顾原有的各种技术,保护现有投资和网络资源。而MPLS能够灵活地支持流量工程、CoS、QoS和VPN的能力则是MPLS实用中最据吸引力的亮点。
1. MPLS标签交换过程
图1所示为分组在MPLS网络中的转发过程,主要经过以下3个步骤:
(1)入口LSR在FIB(Forwarding Information Base)表中按照传统的最长匹配算法对FEC进行查找,找到要压入的标签5和相应的出接口,然后压入标签发送分组到相应的端口;
(2)核心LSR根据标签栈顶层的标签5查找ILM(Incoming Label Map)表,找到要进行的操作为标签的交换,交换使用的标签为9,执行标签交换,然后发送分组到相应的接口;
(3)出口LSR根据ILM查找的结果进行标签的弹栈(POP),然后再按照第三层IP地址进行转发。
在拓扑驱动的模式中,FIB和ILM是在路由协议(BPG、OSPF或RIP)建立路由表的同时建立起来的。
2. MPLS路由器的结构
MPLS路由器采用高速交换、分布式转发和集中式治理相结合。当前路由器设计采用的主流结构由接口卡、交换结构和CPU卡组成。CPU卡的主要功能是运行路由协议(BGP、OSPF或RIP)和MPLS信令(LDP/CR-LDP),负责各接口卡上的路由表、FIB表以及ILM表的更新以及同步,同时它还完成接纳控制、资源治理以及某些设备治理功能。接口卡完成物理层处理、MAC层处理、IP层处理,主要包括MPLS分类、业务分类以及排队和调度功能。
图2给出的是MPLS交换路由器的概念模型,由以下主要组件组成:CR-LDP/LDP、MPLS分类器、业务分类器、地址分类器、接纳控制、资源治理和队列治理器等。各模块主要功能如下:
LDP/CR-LD:产生和处理LDP/CR-LDP消息;
MPLS分类器:为进入的分组分类,并为相应的分组执行标签的操作,如压栈、弹栈和标签交换;
业务分类器:根据标签、入接口以及MPLS头中的CoS对分组进行业务分类,并把分组与相应的队列关联起来;
接纳控制:检查CR-LDP中携带的流量参数,并判定该路由器是否有足够的资源来满足所需的QoS要求;
资源治理:治理资源信息以及队列的参数,主要包括带宽和缓存等;
队列治理器:治理队列中的分组,完成分组的调度,使其获得相应的服务。
二、 标签交换路由器的设计
1. MPLS标签交换以及流量处理
MPLS标签交换以及流量处理主要在接口卡上完成,本节介绍接口卡具体功能,我们在此不讨论物理层和MAC层的处理。如图3所示,当MPLS路由器接收到一个分组后,它执行如下的操作:
(1)MPLS分类器首先判定接收到的分组是带标签的还是不带标签的。假如携带了标签,MPLS分类器就通过查询ILM表得到相应的标签,然后对分组执行标签交换。假如未携带标签,则查询FIB表,若其对应的LSP存在,就与携带标签一样处理。否则,分组被发送到地址分类器。
(2)地址分类器根据路由表对分组执行第三层转发。
(3)假如分组的下一跳就是自己,分组就被送到端口分类器中,然后根据端口号送往相应的上层应用处理程序,如LDP/CR-LDP、OSPF、BGP等。否则,就根据查询的结果进入队列治理器进行排队,等候服务。
(4)当业务分类器接收到来自MPLS分类器的分组后,查找ERB表得到相应的ServiceID,ServiceID指示了分组应该被怎么排队。然后根据ServiceID以及输出接口信息,分组被发送到相应的队列中,并得到相应QoS的服务。来自地址分类器的分组就直接发送到相应输出接口的最低优先级队列进行排队。
从以上分组转发的过程我们看到,分组处理时需要以下4个表:
FIB表只有在入口LSR上保存该表,它记录了FEC到标签的映射信息;
ILM表每个LSR上都保存该表,它记录了已建立的LSP的信息,为携带标签的分组进行标签交换提供信息,它主要包括入/出标签和入/出接口;
ERB表主要维护分组的排队信息,为不同等级的业务提供不同QoS的保证;
路由表与传统的路由表相同,由路由协议维护,主要完成第三层转发信息的存储。
2. 资源预留
接纳控制和资源治理器组件是为了实现资源治理而设计的。资源治理器负责为队列治理器创建和维护队列提供参数信息并且负责资源信息的治理(如资源表)。
图4所示为MPLS路由器对资源预留消息的处理过程。当LDP/CR-LDP组件接收到CR-LDP的Request消息时,它调用接纳控制来检查路由器是否有足够的资源。假如有,接纳控制模块通过更新资源表来预留资源,然后LDP的Request消息被发送到下一个节点。
当LDP/CR-LDP组件接收到CR-LDP的Mapping消息后,在ILM表中记录标签和接口信息,并且在ERB中记录CR-LSP的信息(如LSPID),产生ServiceID。然后,调用资源治理器修改此CR-LSP对应队列的参数,并且在ERB表中记录ServiceID。最后,CR-LDP的Mapping消息被发送到上游节点。
3. 队列治理和Crossbar调度算法
当前的高速交换机和路由器采用的主流排队方法和Crossbar调度方式有3种:输入排队、输出排队和输入/输出排队(CIOQ:Combined Input-output Queued)。
输入排队实现简单,存储器读写速率也只需和接口线速相等,Fabric加速比只需为1。但是,单队列的输入排队会造成队头阻塞(HOL),使吞吐率只有58.6%[6]。由于输出排队受限于存储器的读写速率,并且要求Fabric的加速比为N(N为端口数),所以也不适于高速的交换。本文中的设计选择了CIOQ排队结构,它是一种结合输入/输出排队的实现方法,在输入排队上采用VOQ方式,避免了HOL,大大提高了吞吐率,在输出排队上采用FIFO。如图5所示。研究证实CIOQ的平均分组时延、分组丢失率、分组阻塞率、最大吞吐率都优于其它的方法,并且当Fabric加速比为4时,可以达到99%的吞吐率[5,7]。
由于Internet上越来越多的业务具有不同的QoS要求,因此我们在输入排队处采用两级调度。去往同一端口的分组进入VOQ之前首先进入CBQ进行排队,然后按照不同的优先级进行调度进入VOQ。CBQ是优先级排队的一个变种[8,9],该算法可以通过为某些类型的流量设置优先级来提供公平的排队,并且不答应某个等级的流量独占系统资源和带宽。算法通过改变CBQ的参数可以分别达到不同等级业务需要的性能[10],比如支持DiffServ。该算法实现简单并能达到满足的效果[11]。
4. 标签交换路由器的实现
在本项目中,MPLS交换路由器的实现分为2个部分:信令和协议软件;硬件处理芯片。其中LDP/CR -LDP、路由协议、接纳控制和资源治理用软件完成,运行在CPU卡上。目前软件的开发已基本完成,正在进行相应的测试工作。
在硬件的设计中,物理层和MAC层芯片采用成熟的产品,接口处理、Frbric和Crossb调度算法分别用FPGA实现。接口处理的功能包括MPLS分类器、业务分类器、地址分类器和队列治理。接口的处理线速为1 Gbit/s,交换使用64 byte的定长分组。据统计,Internet上平均分组的长度为250 byte,因此接口需要每2 000 ns做出一次转发决定,这个速率是很轻易用当前的FPGA来实现的。我们在CBQ队列中采用4种优先级的队列,这样既满足的当前对不同QoS优先级的需求又减少了实现的复杂度。系统设计的Fabric支持32个端口,加速比为4。Crossbar采用成熟的SLIP调度算法[5]。
系统的设计速率充分考虑了当前FPGA的规模和算法的复杂度,我们对此设计建立了数学模型,分析了分组的时延、分组丢失率和吞吐量等特性,得到了满足的结果。目前正在进行FPGA后仿真和硬件调试。
三、 结论
该项目的主要目的是设计自主知识产权的MPLS专用ASIC芯片组和信令软件包,并开发出MPLS交换路由器。项目结合了MPLS最新的标准以及当前国际上对高速交换和路由的最新理论研究成果,系统建模分析结果也证实了该设计具有较优的性能。目前项目已经进入调试阶段,一切进展顺利。