MPLS边际路由器设计中,要考虑如何选择MPLS实现模型、如何分配路由功能,以及怎样选择控制平台软件结构等问题,如果还要快速且无缝地集成VPN、IPSec、NAT和防火墙功能,则面临的挑战更多,本文就上述关键问题做深入的探讨。
随着多协议标记交换(MPLS)技术的蓬勃发展,MPLS路由器获得广泛的应用。标记边际路由器(LER)就是其中一种MPLS路由器,MPLS应用对这种路由器的要求呈日益增长的趋势。LER在设计时必须采用分布式结构,恰当使用网络处理器,并针对某些特定的功能定制ASIC,这样才能获得足够高的性能。同时,在LER的设计中还用到了模块化软件,以使之能够支持最新的IETF规范。如果还需集成虚拟专用网(VPN)、网络协议保密(IPSec)、防火墙和网络地址解析(NAT)等功能,那么要在短时间内设计出满足要求的LER就非常困难。
设计师要想成功应对LER设计中的这种种挑战,就必须对MPLS边际路由器设计中的所有细节给予全面的考虑。其中有些需要特别注意,例如如何选择MPLS实现模型,如何分配路由功能,选用怎样的控制平台软件结构以及如何简化用网络处理器或ASIC来实现前向信息数据库的线速标记交换。
MPLS LER设计的第一步是为目标应用选择合适的MPLS实现模型。如今流行多种MPLS应用,因此一个设计得较好的MPLS路由器应该支持多个MPLS实现模型。可选的模型有:异步传输模式上的MPLS、帧中继、点对点协议和以太网,以及MPLS和MPLS VPN上的以太网/帧中继/ATM。这些模型可采用不同的MPLS信令协议、扩展动态路由协议、IP存储器、第2层封装方案、标记堆栈和分级网络来实现。
MPLS标记堆栈的级别变化
一些简单的MPLS应用可能只需要一级标记堆栈。对于这些应用模型,我们只需将一些原有的ATM/帧中继交换机升级成LER即可。如图1所示,由ATM升级得到的LER采用虚拟路径标识(VPI)和虚拟连接标识(VCI)作标记,而那些由帧中继交换机升级得到的LER则用数据链路标识作标记。这些设备配置了路由协议和MPLS信令协议,控制层功能进一步得到增强。
但这些通过升级原有设备得到的路由器在使用时对分组标记头的处理能力会受到限制,因为他们本来可能使用专用硬件,而这些硬件只能对某种固定格式的分组头(如ATM头或以太网头)进行处理。图1中给出了几种不同的MPLS分组头,以及在各种不同的MPLS应用中所应采用的相应的分组头格式。
可以看出,稍微复杂一点的MPLS应用就有可能用到多级标记堆栈。为了适应这种要求,就需要更新的硬件平台。例如,IETF的Martini互联网草案中就规定了基于MPLS的以太网要用两级标记堆栈。如果旧的以太网芯片不能灵活支持新的分组头格式,那么就需要新的芯片。
有一种基于RFC2547bis的MPLS/边际网关协议VPN,它是目前最流行的MPLS应用之一。要支持这种应用,边际路由器必须采用一种带VPN路由/转发表的模型。这样,一个边际路由器才能既支持不同用户的多种VPN(这些用户可以通过重叠的专用IP地址连接到接口端),也支持多用户通过因特网接入,但这类路由器必须具备多个VPN路由/转发表,并具备增强的MP-BGP4性能。
还有一种非常灵活的MPLS VPN应用模型,它采用虚拟路由器(VR)。在这种模型中,一个物理路由器通过采用虚拟TCP/IP堆栈和路由协议来实现多个VR的功能。每个用户都用指派给他的VR来进行VPN内的通信。这种路由器可以配置为大量用户VR和有限个骨干网VR,如图2所示。
骨干网VR与用户VR之间有一种相互覆盖的路由关系,他们负责在核心网中建立恰当的路由或标记交换通路(LSP),并使用户信息通过网络,但他们并不参与内部用户路由。如图2所示,骨干网VR间运行的协议与用户VR上运行的协议彼此独立。网络管理员可以为网络预备多个骨干网VR,并允许不同的网络业务提供商针对其相应的用户使用单独的骨干网VR。
一旦我们选定了支持产品所需的MPLS模型,就可以进入路由器结构设计阶段。例如,我们来看一个的基于机框的ATM LER系统(该系统具备分布式标记交换结构)和一个由ASIC构成的基于网络处理器的线路卡。
图3给出了基于机框型ATM中所用到的各种卡(包括接口卡、控制卡和构造卡)上的主要部件。该路由器属于技术领先型设计,适用于前面谈到的较复杂的一类MPLS实现模型,该模型支持VPN并采用了标记堆栈。这种路由器还提供高级IP业务,如IPSec、防火墙以及线速高达OC-2(622兆比特/秒)的NAT。
路由协议和MPLS信令协议可以在一个集中式管理卡上运行,同时在机框上安装一块备份管理卡就可保证系统的高可靠性。此外,通过采用网络处理器、ASIC和加/解密处理器等还可在用户端线路卡上实现高级IP业务。上行连接卡对处理器的处理能力要求较高,因为通过该卡的信息流量最大。要满足这一要求,我们可以将收、发两个数据通路的网络处理器和ASIC分离开来,如图3所示。此外,要保证机框上的不同卡之间能够进行有效的消息传送,我们还可以使用一系列基于10/100Mbps的以太网总线或PCI总线作为控制总线。
路由器各层的功能分布
在路由器的结构设计阶段,我们必须解决的一个重要问题是管理层、控制层和数据层的分布问题。如果从数据处理的角度来看,我们还应适当考虑管理数据通路、快速数据通路和慢数据通路的构造问题。
这三个层中所需实现的各种系统功能可以分配到不同的接口卡和控制卡上去。对边际路由器而言,我们通常会将其数据层的功能全部分配出去;控制层上运行了各种IP/MPLS协议,因此也可以将其功能分配给接口卡和控制卡,这样就可以卸去一块中央管理卡,并使系统结构更具弹性。此外,交换构造卡上的所有功能也可以分配到线路卡上完成。每一对线路卡之间可以直接连接,以此取代基于点阵的构造卡,如图3所示。通过采用这种分布式系统,我们可以避免在网络中出现性能瓶颈,同时也避免了在许多单点上可能出现的运行故障。
介绍了各层中的功能在硬件上的分布之后,我们来看高度分布系统的另一个主要特性:软件模块化。软件模块可以分布在同一个卡上的处理器内,也可以分布在不同卡上的处理器内。CPU上的控制层软件模块应该能与同一个接口卡上的不同网络处理器进行通信,以便应付多个网络处理器同时用于处理收、发数据时的情况。此外,我们还可以把管理层软件模块放在不同接口卡的控制CPU中。这样某一个接口卡上的管理软件模块就可以与其他卡中的相应模块交换信息,从而建立动态通信链路,当某块卡上的管理模块状态正常时就建立通信连接,并在该模块故障时释放连接。在容错系统中,类似的一种基于软件的心跳信息法通常用来检测远端模块的故障情况。
线速LER
在仔细考虑了各功能的分布问题之后,现在我们必须研究一下线速MPLS边际路由器的各种数据通路。一般而言,数据通路可以分为以下几种:管理数据通路,该通路用来传送系统管理信息,包括:1. 简单网络管理协议(Simple Network Management Protocol)或远程登陆协议;2. 控制数据通路,用于传送路由和信令协议,如开放式最短通路优先协议(Open Shortest Path First)和LDP;3. 用户数据通路。
而用户数据通路又分为快数据通路和慢数据通路。慢数据通路用于处理异常用户信息,如IP选择和分段等。
在信息流量较高的路由器设计中,我们将重点放在关键快速数据通路上。这时,可以使用网络处理器、编解码处理器和ASIC来完成标记交换、IP路由、IPSec、防火墙、NAT等功能。图4给出了一个能提供高级IP业务的线路卡。
随着MPLS应用和规范的发展,分组头上的标记可能会以多种格式出现。如果路由器要支持新的MPLS特性,那么其数据通路中对分组头的处理能力就成了非常关键的因素。于是,要想得到优秀的MPLS路由器设计,就必须有一个能适用于将来需要的平台,对于这点,我们必须给予足够的重视。
我们可以很容易地在网络处理器软件中对转发信息(FIB)表进行灵活的编程。FIB中主要包含下一跳标记转发条目表(NHLFE)、NHLFE的转发等价类(FEC)和一个输入标记映射表(ILM)。如图5所示,NHLFE是构成所有FIB表的基础,它包含目标IP地址、子网掩码、下一跳的IP地址及其规格、出口标记、标记堆栈操作类型(压入或弹出)、出口接口以及相关的LSP信息等等。
FTN和ILM都与一个或多个NHLFE相关,他们通过查找NHLFE来找回出口标记和端口信息。如果要实现负载平衡或其他一些基于条款的路由操作,那么就必须根据预先定义的规则,从与FTN或ILM相关的一系列NHLFE中找回某个特定的NHLFE。
LER接收到一个没有标注的分组(例如图5中IP地址为的分组)时,用FTN来识别该分组。LER可以根据任何预先定义的规则将一个IP分组映射到FEC中去。例如,根据一种简单的规则可以直接将IP地址与FEC关联起来,或者根据一些其它的规则进行映射,比如对输入端口号、入口VPI/VCI、源地址和目的地址、协议类型、源TCP/用户数据包协议和目的TCP/用户数据包协议端口号等进行任意组合,并根据这种组合来分类。当一个未标记的分组通过分类映射到FTN表中的一个FEC条目时,就可以在相应的NHLFE中查到其出口标记和出口端口。这样,就可以为分组加上标注,并将其发送到下一跳的LSR中去(如图5所示,IP地址为标注为40的分组)。
在LER收到一个经标注的分组时,可通过ILM来识别该分组。这时,LER首先验证分组的标记(例如,标记80的目的IP地址为80.1.1.1)。标记可以直接用作在ILM中查找信息的钥匙,并由ILM将具备该标记的分组与适当的NHLFE条目(例如图5中NHLFE第0条)相关联,从而获取其第2层封装格式和参数等出口端口信息。通常LER会将那些输入标记无效的分组或那些在ILM中找不到任何相应条目的分组丢弃。
在信息流量超过1Gbps时,也可以用ASIC来执行标记交换功能。这时,通常由一个或多个ASIC构成路由和标记交换的硬件基础,并由相关的SRAM来存储相应的表格,用DRAM作分组缓冲。通常,硬件部分由几个功能模块组成,如路由引擎、流分类引擎和标记交换引擎等。FTN表和ILM表可以在ASIC内部存储器中实现,而NHLFE表则可以置于一个外部SRAM中。在处理过程中,已标注的分组只需使用流分类引擎和标记引擎,而未标注的分组则必须用到所有这些引擎。此外,在处理中,只需将被处理分组的头部在一个引擎到另一个引擎间进行移动和处理,分组的其他部分则保留在DRAM中的缓冲区内。
一个分组是否已经标注,这是在接收到分组时,根据其链路层的格式和参数来判断的。如果分组未经标注,那么分类引擎将其映射到FEC并通过FTN表获取一个用来查找NHLFE所需的索引。如果NHLFE认为该分组的LSP有效,那么路由器就将该分组送给标记引擎,然后由标记引擎压栈一个标记,并将该分组发送出去。如果分组已经标注,那么分类引擎会用其ILM找到NHLFE索引,并将该分组送给标记引擎,然后标记引擎会根据NHLFE中标记操作域的值进行相应的标记操作,即弹出、压入或替换该分组的标记。
控制层软件
最后,我们讨论一下MPLS路由器设计的另一个部分:控制协议软件。LER作为一个路由器,其内部有常规的软件模块,可实现控制层中的各项功能,还可通过OSPF/BGP等将路由器升级。但要想实现标记交换,这些软件模块还必须增强,才能与MPLS信令协议接口,从而取回建立和管理LSP所需的路由信息。此外,我们还要增加一个MPLS信令协议软件,该软件负责发现LSR/LER同级、分配和分布标记,并完成标记保存管理。
图6给出了一个MPLS路由器中的控制软件结构,并以之为例给出了标记分布协议(LDP)内部的详细实现方法。MPLS信令协议在用软件模块实现时,与其他路由协议由相似之处。
通过以上讨论,我们已经可以抽象出整个MPLS路由器的设计结构。
作者: Chaoping Wu
Chaoping Wu是 Vpacket Communications公司的高级工程师,他曾经任职于Nortel和AccessLan
Communications公司多年。他拥有中国上海交通大学博士学位。可以通过电子邮件:chaopingwu@与他联系。
京公网安备 11011202001138号
