大框架
相信很多人都很熟悉ATM的立方体结构,如图1所示,它带我们走入了ATM的世界。
其实,MPLS的框架结构与ATM 有很多相似的地方。我们也将MPLS的功能抽象为一个平面的模型。模型中也包括一个数据平面和一个控制平面,但缺少的是一个管理平面,因为MPLS毕竟不是一个独立的网络,只是“夹在”两层网络之间的一门技术,如图2所示。
在图2中,整个框架可以分成两个最主要的部分:一个部分是控制层面,包括MPLS的信令(即标记分配协议)和路由。控制层面负责标记交换路径的建立、拆除、保护、重建立和重路由等,是整个MPLS理论的核心。
另一部分则是数据平面,数据平面更多地侧重与各链路层媒质的配合,包括标记和标记封装等相关规定。
数据平面
实际上,数据平面的主要作用就是如何利用标记进行数据的传输工作。因而,数据平面与链路层有着紧密的联系。标记的内容以及如何利用链路层电路的标识构成标记的封装等就是数据平面的主要内容。
1.标记
IETF有关MPLS框架结构的草案中这样定义“标记”(Label):
● 标记是一个固定长度、具有本地意义的短标识符,用于标识一个转发等价类(FEC)。
● 假设Ru和Rd均为LSR(标记交换路由器),且Rd为Ru的下一跳,当一个FEC F的一个分组(Package)到来时,Ru与Rd通过信令交换,将标记“L”与FEC F绑定。对于Ru来讲,标记“L”是输出标记;而对于Rd来讲,标记“L”是输入标记。
● 每个LSR应该可以惟一地解释其输入标记。
在描述MPLS标记交换的基本过程中,经常会出现两个名词,即上游(Upstream)标记交换路由器和下游(Downstream)标记交换路由器。IETF中的规定是:
● 如果对于从Ru传送到Rd的分组,Ru和Rd都同意将标记“L”绑定到FEC F上,则Ru为上游LSR,Rd为下游LSR;
● 绑定仅仅意味着将分组从上游节点传送至下游节点时,用特定的标记绑定特定的FEC,并不意味着该FEC中的分组一定要从两点间通过。
IETF中关于标记栈的规定如下:
● 为了增强MPLS的可扩展性和灵活性,标记可以堆栈,以适应可能的复杂网络环境的需要。
● MPLS允许一系列按照“后进先出”原则组织起来的标记,这种结构就叫做“标记栈”,从栈顶开始处理标记。
● 如果有一个分组的标记栈深度为“m”,则将位于栈底的标记作为第一级标记,在栈底上低一级标记(若存在的话)为第二级标记,依此类推;栈顶的标记为“m”级标记,未打标记的分组可以看做是空标记栈(标记栈深度为零)的分组。
在MPLS的应用中,我们将看到标记堆栈的作用。尽管目前对这一部分的研究还没有完全展开,仍处于发展阶段,但笔者认为这是一个很有发展的领域。概括地说,标记堆栈可以定义成多级标记,不同的标记实现不同的目的。比如,我们可以将多级标记分为传输标记和业务标记两种,每一种类的标记都可以是多级堆叠。其中,传输标记负责将所承载的信息透过多个传输域,传输到目的地;而业务标记是专门为了某种特定的目的而定,如IP VPN等。随着MPLS的应用的深入,这一特点必将为我们带来更多的好处和用途。
2.标记的封装
众所周知,多协议标记交换将第三层的分组通过一套规程转化成简单灵活的“标记分组”。这套规程既要考虑底层链路的特点,同时又要考虑如何传递第三层分组的信息,如TTL(分组存活时间)、服务质量保证等,这套规程就是“标记的封装”或者“标记的编码”。
MPLS的标记栈封装可以定义在多种不同的媒质上,栈顶的标记仍然可以沿用现有的格式,如在ATM媒质上,就可以沿用VPI、VCI作为栈顶的标记;低一些级别的标记可以使用“夹层”或者叫“垫层”标记,以消除不同媒质之间的差异。MPLS在各种媒质上的封装如图3所示,
我们可以拿应用最为广泛的PPP以及其他局域网数据链路层的标记封装方式为例,其他媒质的标记封装格式与PPP和局域网数据链路层大同小异。
MPLS在PPP数据链路层以及LAN上采用“夹层”包头(或称为“垫层包头”)插入,在第二层和第三层包头之间。具体的定义如图4所示。
MPLS在PPP&LAN数据链路上的标记封装可以分为四个部分:标记值、Exp.(试验使用,目前作为IP QOS的映射)、S(堆栈指示)以及TTL(生存时间)。
标记值字段包含标记的实际值。当收到标记分组之后,标记交换路由器会查看栈顶的标记值,一般会有两种可能:一种是转发分组的下一跳;另外一种是在转发分组前进行标记栈的操作,即从栈中弹出一项记录,或将一到多项记录压入标记栈,取代原来的栈顶记录。
当然,除此之外,堆栈值还可以提供一些其他输出数据链路封装以及正确转发分组所需要的信息。
Exp.目前作为优先级别使用,可以与IP QOS映射。
S栈作为栈底指示,S=1时为栈底。
TTL值为存活时间,与IP包中的定义相同。
控制平面
控制平面的主要功能,顾名思义,就是通过控制平面的工作,为数据平面的业务数据传输做出应有的保障。标记交换路径的建立、拆除、保护、重新建立以及重新路由都由控制平面完成。比方说,当视频业务数据包要通过一个MPLS网络时,控制平面首先应该根据用户的业务请求,预留出相应的带宽,进而为该业务流建立一条符合要求的通路(这里称之为标记交换路径),尔后数据平面的业务流就可以在已经建立好的“符合要求”的路径上传送信息了。
1.标记分配协议
在控制平面中,当然要有一套交互协商的语言,通过这种语言,交换机可以知道数据平面将要传输什么样的业务,需要什么样的路径,需要占用多少网络资源,网络是否能够满足该业务所需要的资源等。
我们如果还沿用传统电信行业的名词,就可以把这种“语言”称为“信令”。在MPLS领域中,“信令”又称为“标记分配协议”,因为这里的信令都是围绕着标记的分配而实现的。
目前,在不同的组织里有不同的标记分配协议。在IETF中支持三种标记分配协议:LDP(普通标记分配协议)、CR-LDP(限制路由的标记分配协议)以及RSVP Extension(扩展的资源预留协议);而在ITU-T中,仅支持LDP和CR-LDP。
2.转发等价类
在MPLS的控制平面中,还有一个很重要的概念就是转发等价类(FEC,Forwarding Equivalence Class),其结构如图5所示。
一个转发等价类可以是任何一组在路由器以同一种方式来同等“对待”的包。“被对待”在这里意味着从同一个端口转发出去,并且有着同一个下一跳和标记。它也意味着给定相同的服务等级,输出在相同的队列,给定相同的丢弃优先级,以及任何对于网络管理和维护人员来说可以选择的项目。
当一个包从一个入口进入到MPLS网络中时,这个包就会被映射到一个FEC中去。映射也可以在很广的一个范围上操作,带有很多参数。地址前缀(或主机)、源/目的地址对,或者输入端口等,都可以作为转发等价类的划分方法,这就为MPLS增加了比传统IP路由更大的灵活性和扩展性。
FEC允许MPLS有更大的扩展性。在Ipsilon的IP交换实现方法上,或者MPOA上,都采用了一种方法,将类似“FEC”的概念映射到一个数据流上(源/目的地址对或者源/目的地址对加上端口号)。有限的灵活性和Inte.net中大容量的数据流限制了IP交换和MPOA的应用。而MPLS首先将数据流汇聚成不同类型的FEC,以满足公众Internet和企业网对于灵活性和可扩展性的需求。
在现有的标记分配协议中只有三种FEC类型:
● IP地址前缀;
● 路由器ID;
● 数据流(端口号、目的地址、源地址等)。
除了上述这些规定之外,规范也允许加入新的类型。
3.路由选择以及流量设计
路由选择是特定转发等价类(FEC)选择标记交换路径(LSP)的一种方法。MPLS体系结构规定两种路由选择方法,即逐跳选路和显示选路。
逐跳选路允许每个节点独立地为每个FEC选择下一跳。这是现有IP网络中通用的方法。而显示选路则恰好与逐跳选路相反,每个标记交换路由器不能独立地选择下一跳,而是在数据包进入网络时就规定好在网络中要走的路。
由不同的路由选择方法建立的标记交换路径,相应地被称为“逐跳选路-标记交换路径”和“显示选路-标记交换路径”。
在“显示选路”中,还分为“严格显示选路”和“松散显示选路”两种。“严格显示选路”严格地规定从LSP入口一直到出口的每一跳;而“松散显示选路”则可以允许网络管理员只规定LSP中的一段,其余部分仍由逐跳选路来完成。