目录
背景:本人之前一直在安防行业工作,最近转到通信行业,纯粹就是一个小白了,再者被分配到做MPLS相关的,同时公司内部有一本《MPLS和VPN体系结构》第二卷,然而里面很多概念都是在第一卷里详述的,苦于网络上找不到第一卷的电子版,于是买了一本,这里纯手工抄录。书中图片均用手机拍摄,若在错误之处,请指正(标题中因为有VPN无法审核通过,只能用VP了)。
一,多协议标签交换(MPLS)架构概述
在数据包从源去往目的地的过程中,传统的IP数据包转发机制会分析包含在每个数据包网络层头部的目的 IP地址。网络中每一跳的路由器都会对目的IP地址进行独立的分析。无论管理员选择使用动态路由协议还是静态配置,目的都是为了建立一个用来分析目的IP地址的数据库(路由表)。由此,人们所实施的传统IP路由进程被称为基于目的地的逐跳单播路由。
尽管这种网络机制大获成功并得到了广泛的部署和应用,但它仍然存在着一些限制,这些限制时而进入人们的视野,并且它们的存在降低了数据包转发网络的灵活性。因此人们而要利用一些新的技术来解决这些问题,并对基于IP的网络架构所具有的功能进行扩展。
本书第1章将着重介绍这些限制,并由此引出一种叫做多标签协议交换(MPLS)的全新架构,这种架构可以解除IP架构中的一些限制。接下来的章节将会首先关注在纯路由环境中MPLS架构的技术细节,然后再对由路由器和ATM交换机所组成的混合环境中,MPLS的技术进行介绍。
1.1 基于IP转发的扩展性与灵活性
为使读者理解在传统IP数据包转发网络中,影响网络扩展性和灵活性的各类因素,有必要首先对基本的IP转发机制及其与下层架构(LAN或WAN)之间的交互方式进行一番回顾。在搞清楚这些问题之后,读者就可以发现现有机制中所存在的缺陷,并有可能就此得出针对这些缺陷的改进方案。
1.1.1 网络层路由选择范例
传统的网络层数据包转发需要依靠网络层路由协议(如OSPF[开方式最短路径优先算法]、BGP[边界网关协议])或静态路由所提供的信息来实现,网络中每一跳设备都会依靠这些信息独立地作出转发判断。转发判断完全是根据单播目的IP地址作出的。在没有其他等价路径的前提下,所有去往同一目的地的数据包都会沿着完全相同的路径穿越网络。若存在两条去往同一目的地的等价路径,那么路由器在转发去往目的地的数据包时既有可能在两条路径中任选其一,也有可能同时使用这两条路径来实现一定程度上的负载分担。
注释:EIGRP(增强型内部网关路由协议)还可以支持非等价负载分担,不过它默认支持的仍然是等价负载分担。若要实现非等价负载分担,需要对EIGRP variance参数进行配置。读者可以参考Cisco Press 出版的《EIGRP Network Desing Solutions》(ISBN 1-57870-165-1) 来获得相关内容的详细知识。在Cisco IOS系统中,负载分担可以基于三种方式实现:基于逐个数据包实现、基于源--目的地址对实现(Cisco快速转发[CEF]交换)和基于目的地址实现(大多数其他的交换方式)。
路由器通过判断,决定数据包的选路。也就是说,这些网络层设备会参与网络层信息的收集与转发工作,并基于每个数据包网络层头部的信息,执行三层交换功能。这些路由器可以通过点到点链路或局域网(如共享集线器或MAU)进行连接,也可以通过LAN或WAN交换机(如帧中继或ATM交换机)进行连接。而这些二层(LAN或WAN)交换机并不具备掌握三层路由信息的功能,也不具有通过三层目的地址为数据包进行选路的功能。因此,二层(LAN或WAN)交换机也就无法参与三层数据包的转发判断。在WAN环境中,网络设计师必须手工建立一条穿越WAN网络的二层路径。而后,这些路径负责在与二层网络物理相连的路径器之间,转发三层的数据包。
建立二层LAN路径并不困难 ------ 所有LAN交换机对于与其直接的设备来说都是透明的。但建立 二层WAN路径就麻烦得多了。二层 WAN 路径一般需要基于点到点的模型进行建立(如大多数 WAN 网络中使用虚链路),并且在建立这第路径的时候需要进行手工配置。所有位于二层网络边缘的路由设备(入站路由器)若需要向其他路由设备(出站路由器)转发三层数据包,这台入站路由器就只有两种选择,要么建立一条穿越网络并与出站设备直接相连的链路,要么将数据发送给一个不同的设备,并通过这台设备将数据转发到目的的。
例如,请参考图 1-1 所示的网络。
图 1-1 所示的网络是基于ATM核心并由周边路由器所组成的网络,其中路由器负责执行网络层数据转发。假设图 1-1 所示的连接即为所有的连接,那么所有从旧金山去往或穿过华盛顿的数据包必须都被转发给达拉斯路由器,达拉斯路由器会对数据包进行分析,并将它们沿着达拉斯的同一条ATM连接发回,然后再发送给华盛顿路由器。这一步冗余的处理过程不仅会导致网络产生延迟,还会使达拉斯路由器的 CPU 消耗在不必要的资源上,而且达拉斯路由器与达拉斯 ATM 交换机之间的 ATM 链路也会增加额外的开销。
为了确保数据包在网络中以最理想的方式进行转发,必须在任意两台与 ATM 核心网络直连的路由器之间建立 ATM 虚链路。虽然在图 1-1 这样的小型网络环境中,做到这一点并不困难,但是在一个几十上百台路由器同时与同一个 WAN 网络相连的大型网络环境中,网络扩展性问题的严重程度就可想而知了。
下面列举一些常见的相似扩展性问题。
- 若达到最理想的转发效率,那么每当一台新的路由器与核心网络建立连接时,管理员都需要在这台路由器和其他所有路由器之间配置虚链路。注释:在帧中继网络中,可以在二层 WAN 核心设备上完成全部配置工作,而路由器会通过使用 LMI 及反向 ARP 发现新的邻居,以及这些邻居设备的三层协议地址。在 ATM 网络中使用反向 ARP 和 ILMI 也可以达到同样的目的。其中,当路由器的配置中添加了一个新的 PVC,反向 ARM 功能就会默认启用,而 ILMI 则可以动态地发现配置在本地的 ATM 交换机上的 PVC。
- 在配置好了特定的路由协议之后,管理员需要在所有与同一个二层 WAN 核心(用 ATM 或帧中继交换机搭建的核心)相连的路由器之间都建立 一条专用的虚链路。为了确保核心的冗余性,每台路由器还必须和其他所有连接在同一个 WAN 网络上路由器建立路由邻接关系。这样做的结果是,最终产生一个全网状互联的路由邻接关系,于是,每台路由器都拥有大量的路径协议邻居,因此网络中也就会产生庞大的路由信息。比如,若网络中使用 OSPF 或 IS-IS 作为路径协议,那么每一次网络拓扑中的路由器产生任何变化,对于其他连接在同一个 WAN 骨干网上的路由器,都会造成路由流量成几何级数地递增。注释:Cisco IOS新版本中有一些配置工作,可以减少实施 IS-IS 和 OSPF 时,在网络中产生的路由流量,不过对于这些工具的介绍并不包括在本书的范畴内(对此感兴趣的读者不妨参考相关的Cisco ISO 配置指南)。
- 建立路由之间虚拟链路是很复杂的,因为几乎没有人能精确预测出任意两台路由器之间的流量。为了简化这个过程,许多服务提供商选择了不确保网络服务的做法 ----- 如帧中继网络的零约定信息率(CIR,Committed Information Rate)和 ATM 网络中的不定比特率(UBR,Unspecified Bit Rate)。
有些传统服务提供商的骨干是完全用路由器搭建的,而有些只提供 WAN 服务(ATM 或 帧中继虚链路)。对于这些服务提供商来说,路由器和 WAN 交换机之间鲜有信息交换并不算是严重的问题。而以下因素则成为这两类服务提供商向混合式骨干网迈近的重要驱动力。
- 用户要求传统服务提供商提供 IP 服务。而服务提供商则希望他们的投资可以更有效地加以利用,因此他们会基于现有的 WAN 架构来提供这些新的服务。
- 用户要求传统服务提供商提供更有效的 QoS服务保障。而这一点在 ATM 交换机上比在传统的路由器上更容易实现。
- 快速发展的带宽需求在时间上早于路由器接口的更新换代,这也迫使很多服务提供商使用 ATM 技术。因为在当时, ATM 技术可以提供路由器所无法提供的速度。
有一件事很清楚了,那就是必须 有一种新的机制来开启路由器与 WAN 交换机之间网络层信息的交互,这样交换机才能参与到路由转发的判断工程中,于是边缘路由器之间也就不再需要相互直连了。
1.1.2 基于 IP 转发的扩展性与灵活性
根据传统 IP 数据包的机制,设备会仅依靠包含在数据包第3层头部的目的 IP 地址,就作出转发判断。这种基于目的地址的逐跳转发机制使许多网络设计的新观点、优化流量的新主张难以执行。如图 1-2 所示,连接着旧金山核心路由器和华盛顿核心路由器之间的链路会负责转发所有从湾区(the Bay Area)的存在点(POPs,Point-of-Presence)进入网络的流量,当在这条链路发生拥塞的时候也是如此,尽管当时从旧金山到达拉斯再从达拉斯到华盛顿这条链路的拥塞状况有可能要好得多。
虽然有一些像 PBR(基于策略的路由)这样的技术,能够对转发决策的过程构成影响,但是没有一种扩展性良好的技术能够独立地决定数据包穿越网络达到目的地的整条路径。 在图 1-2 所示网络中,PBR 必须 部署在旧金山核心路由器上,这样才能使一些从湾区去往华盛顿的流量通过达拉斯去往目的地。然而,在核心路由器上部署像 PBR 这样的特性,必然会对核心设备的性能造成异常严重的影响,而合这种网络设计的扩展性也乏善可陈。因此,最理想的状态是,边缘路由器(如图 1-2 中所示的圣克拉克市 POP)可以决定数据包通过哪条路径达到目的地。注释:PBR 还存在其他一些问题,若在路由器上配置 PBR,使它选择一条与路由器自己学习到的转发路径不同的路径,那么很容易就会导致路由器环路。另外,在大型网络环境中,PBR 也很部署;假如在边缘路由器部署 PBR ,又必须确保转发路径上所有的路由器都会执行相同的路径选择。
鉴于大多数服务提供商都为网络部署了冗余路径,那么有一个需求就十分清楚了,这个需求就是:入向路径设需要具有数据转发决定权,而且入向设备所作的决定需要在数据包穿越网络的整个过程中都对数据包构成影响,这种影响应该就像在数据包上贴了一个标签一样,通过标签告诉其所有设备这个数据包应该走哪一条路。
这个需求还包括,去往同一个目的 IP 网络的数据包应该可以选择不同的路径到过目的地,即数据包的选路判断不再只根据三层路由协议执行。也就是说,选跑判断的标准应该不仅限于数据包的目的 IP 地址,还应该有一个其他因素,比如这个数据包是从哪一个端口学习过来的,需要为这个数据包执行的策略等。
1.1.3 独立转发与控制
在传统的 IP 数据包转发机制中,控制转发数据包的信息无论发生了任何变化都需要通知路由域内的所有设备。这种信息变化 也包括转发算法收敛的时期。
显然,我们都希望存在这样一种机制,即在数据包转发信息发生变化时,网络中的其他设备不会受到影响。如果要实现这种机制,转发设备(路由器)就不应该根据 IP 头部信息转发数据包。因此,需要在数据包上另外粘贴一个标签,用来告诉其他设备这个数据包需要如何转发。如果数据包的转发根据粘贴在原 IP 数据包上的标签来执行,那么无论转发决策的过程发生了何种变化,这一变化都可以通过包上的标签来通知其他设备。由于设备仅仅依靠粘贴的标签就可以转发流量,因此即使转发信息发生了变化,这一变化也不会对执行数据包转发的设备构成任何影响。
1.1.4 外部路由信息转发
在 IP 网络核心,传统的数据包转发需要将外部路由信息通告给所有执行转发的路由设备。这一步必不可少,因为唯有如此,设备才能根据数据包网络层头部信息中所包含的目的地址来对数据包进行路由。现在对前一节的例子进行延续,根据传统转发规则,图 1-2 中的核心路由器必须保存了所有的 Internet 路由,才能在湾区客户和 MAE-East 连接点之间执行数据包的转发。注释:读到这里,读者也许会想:每个大型服务提供商都会在美国西海岸设立它们的连接点。这种想法固然没错,但是这和我们此刻的论点无关。因为总有这样一些情况,即核心路由器上没有客户或连接用户与之相连,而在这种情况下,按照传统转发机制,这台路由器仍然需要全部完整的路径信息才能正确转发数据包。
在路由转发、内存占有、CPU利用方面,这种方法都涉及了扩展性的问题,何况如果只想把数据包从网络的一个边缘转发到另一个边缘,原本就不需要这么做。
于是,我们需要一种机制使内部路由设备能够对数据包执行交换,从而使该数据包跨越网络,从入向路由器来到出路由器,而此过程无需分析网络层的目的地址。这一需求下是显而易见的。
1.2 多协议标签交换(MPLS)入门
多协议标签交换(MPLS)是一种新兴的技术,这项技术旨在解决现存网络中存在的诸多与数据包转发有关的问题。IETF 组织中的成员建立了一系列标准来规范市场,推进不同厂商、不同个体在标签交换领域的技术,在 IETF 文档“IETF MPLS 构架草案”中包含了这项新技术的框架,以及对这项技术核心功能的描述,具体内容如下。
MPLS 工作组的主要任务,是对这项集标签交换转发功能和网络层路由功能于一身的底层技术制订规范。这一底层技术(标签交换)被人们寄予厚望,人们希望它能够提升网络层路由功能的价值和性能,提高网络层的扩展性,并为(新型)路由服务提供强大的灵活性(这种灵活性体现在,在添加新路由服务时不会改变 现有网络转发方式)。注释:读者可以从 IETF 官方网站(www.ietf.org)下载 IETF 工作文档。想下载 MPLS 工作文档的读者可以访问 MPLS 部分主页(www.ietf.org/html.charters/mpls-charter.html)。
MPLS 架构描述了执行标签交换的机制,这一机制集二层交换数据包转发和三层路由转发两者的优势于一身。与二层网络(如帧中继或 ATM)类似的是,MPLS也会为数据包分配标签,使其能够穿越基于数据包、或者基于信元(cell)的网络。这种在全网范围使用的转发机制是标签交换,在这种转发机制中,数据单元都会携带一个长度固定的简短标签,这个标签的作用是告诉转发路径上每一个转发节点要如何处理这个数据包。
而 MPLS 和传统 WAN 技术的主要区别在于标签的分配方式,以及数据包是否能够携带一个由一组标签组成的标签栈。标签栈这一概念的引入使得很多技术的应用成为了可能,比如流量工程(TE)、虚拟专用网(VPN)、在链路和节点出现故障时的快速重路由等。
在 MPLS 环境中,数据包的转发方式和今天的无接连的网络环境有很大的不同。在今天的网络环境中,每一跳的设备都会分析数据包,检查数据包的第3层包头,然后设备会基于从网络层头部中提取出来的信息独立地作出转发判断 。
新的算法则分成两个独立的部分:转发部分(也称数据层)和控制部分(也称控制层)。转发部分的作用是,查看数据包携带的标签,然后使用标签交换机所维护的标签转发信息库,来执行数据包的转发。控制部分则负责在一组相互连接的标签交换机之间,创建并维护标签的转发信息(称为绑定)。图 1-3 所示为 MPLS 节点在执行 IP 路由时的基本架构。
每个 MPLS 节点都必须运行至少一路路由协议(或依靠静态路由)来与网络中的其他 MPLS 节点交换 IP 路由信息。从这个层面上去理解 ,每个 MPLS 节点(也包括 ATM 交换机)在控制层上都相当于一台 IP 路由器。
与传统路由器类似的是,IP 路由协议也会创建 IP 路由表。在传统 IP 路由表中,IP 路由表的作用是建立供 CEF(Cisco 快速转发)使用的 IP 路由缓存(即 Cisco IOS 中的快速交换缓存)或 IP 转发表(即 Cisco IOS中发转发信息表[FIB])。
而在 MPLS 节点中,IP 路由表用于决定标签绑定交换,也就是说,MPLS 邻居节点会通过绑定,来为包含在 IP 路由表中的各个子网执行标签交换。用来为基于目的的单播路由执行标签绑定交换的协议是 Cisco 私有的标记分发协议(TDP,Tag Distribution Protocol)或 IETF指定的标签分布协议(LDP,Label Distribution Protocol)。
MPLS IP 路由控制进程通过标签交换来与邻居 MPLS 节点建立标签转发表(Label Forwarding Table),当设备在 MPLS 网络中转发带有标签的数据包时,该表充当转发数据库的作用。
1.2.1 MPLS 架构中的设备分类
每当学习一个新的技术时,人们难免要接触一些新的术语,这些术语所描述的是组成这一架构的各种设备。这些新的术语会描述每种设备的功能,以及它们在 MPLS 领域中充当的角色。
首先需要介绍的设备是标签交换路由器(LSR)。所谓标签交换路由器,是指一切实施了标签转发机制并且能够基于标签来转发数据包的路由器和交换机。标签发布机制的基本功能就是使 LSR 可以向 MPLS 网络中的其他 LSR 分布它的标签绑定信息(本书第2章会讨论标签分布进程的具体内容)。
LSR 根据它们在网络架构中执行的功能可分成很多不同的类型。这些不同的 LSR 在这个价格比中分别称为边界 LSR、ATM-LSR 和 ATM 边界 LSR。这些 LSR 类型之间的区别完全是架构层面上的,也就是说,一台物理设备可以扮演其中的多个角色。
边界 LSR 指在 MPLS 网络边缘执行标签压入(push)或标签弹出(pop)的路由器。所谓标签压入指为 MPLS 域中入站点(从数据流量从源到目的的角度上看)的数据包粘贴标签或标签栈的行为。标签弹出则正好相反,它是指为到达出站点的数据包除去最后一个标签的行为,在除去标签之后,这个数据包会被转发给位于该 MPLS 域外的邻居设备。
只要一台 LSR 拥有非 MPLS 邻居,那么就可以将它看成一台边界 LSR。不过,如果 LSR 有多个接口,这些接口分别接连着 MPLS 和 ATM-LSR,那么这台设备也应该被当成一台 ATM 边界 LSR。边界 LSR 同时拥有传统 IP 转发表和标签信息,这样它才能够为 IP 数据包添加标签或者在数据包被发送到非 MPLS 节点之前,将带有标签的数据包的标签移除。图 1-4 所示为边界 LSR 的架构。
边界 LSR 对图 1-3 中的 MPLS 节点架构进行了扩充,添加了新的数据层组成部分。标准的 IP 转发表由 IP 路由表构成并扩展了标签信息。入站的 IP 数据包既可以作为纯 IP 包发送给非 MPLS 节点,也可以为其添加标签,并将它作为带有标签的数据包发送给其他 MPLS 节点。对于那些去往非 MPLS 节点却带有标签的数据包,设备会为其移除标签,同时查找它的第 3 层信息,并通过第 3 层信息来寻找它的非 MPLS 目的地址。
ATM-LSR 是指可以充当 LSR 的 ATM 交换机,Cisco Systems 公司的产品 LS1010 和 BPX 系列交换机就是这种类型的 LSR。读者在继续学习下面的章节的内容后就会知道,ATM-LSR 可以在控制层执行 IP 路径和标签分配功能,并在数据层使用传统的 ATM 信元交换机制来转发数据包。换句话说, ATM 交换机的 ATM 交换矩阵(ATM switching matrix)就在这种情况下充当了 MPLS 节点中的标签转发表。因此,可以升级传统 ATM 交换机控制层的软件系统,这样,就可以将这台 ATM 交换机重新部署为一台 ATM-LSR 了。
表 1-1 总结了不同类型的 LSR 所执行的功能。请注意,网络中的所有独立设备都可以执行一种以上的功能(比如,一台设备可以 同时充当边界 LSR 和 ATM 边界 LSR)。
表 1-1 各类 LSR 执行的功能
LSR 类型 | 该类型的 LSR 执行的功能 |
LSR | 转发带标签的数据包 |
边缘LSR | 可以接收 IP 数据包,查找第3层信息,再将数据包转发到LSR域之前为其压入标签栈,也可以接收带标签的数据包,移除标签,查找第3层信息,并将移除后的IP数据包转发给它人下一跳设备 |
ATM-LSR | 在其控制层中运行MPLS协议以建立ATM虚链路,将带标签的数据包当成ATM信元来进行转发 |
ATM边界LSR | 可以接收带标签的和不带标签的数据包,将其分段为ATM信元,并将这些信元转发给下一跳的ATM-LSR;可以从邻居的ATM-LSR处接收信元,可以将其重组为原始数据包,并将它们作为带标签的或者不带标签的数据包,转发给下一跳设备 |
1.2.2 在网络边缘压入标签
标签压入的知识前面已经讲过了,也就是说当数据包进入 MPLS 域时,为其粘贴一个标签。这是一个边缘设备的功能,也就是说,在数据包转发进 MPLS域之前,为其添加标签。
若要执行这个功能,边界 LSR 设备就必须清楚这个数据包要去往何方,以及需要为其分配哪个标签或标签栈。而在传统的三层 IP 转发环境中,每一跳设备都会查找自己的 IP 转发表,以寻找包含在数据包第3层头部的目的 IP 地址信息。每次查找之后 ,设备都会为数据包选择下一跳的地址,并最终将这个数据包从某个接口发送出去,使其能够达到最终 的目的地址。注释:对于这些转发机制,如 CEF,使路由器可以将所有已知的目的前缀与邻接的下一跳目的前缀进行关联,这也可以解决重复查找路由表的问题。这样一来,路由器只会在生成缓存或转发表时才需要将这些步骤进行一次重复,而不需要在每次转发数据包时都重复地执行查找工作。
为 IP 数据包选择下一跳的工作由两个功能组成。第一个功能是将全部发来的数据包根据 IP 目的前缀进行分类。第二个功能则是将每个 IP 目的前缀分别与下一跳地址之间建立映射。这就是说,对于从一个入站设备流向一个目的出站设备的数据流来说,网络中的每个目的地址都可以通过一条路径最终到达(如果使用某些 IGP 协议执行了等价或非等价的负载分担功能,那么也有可能同时拥有多条路径,比如使用 EIGRP)。
在 MPLS 架构中,由第一个功能所得到的的结果被称为转发等价类(FEC, Forwarding Equivalence Class)。读者不妨将 FEC 的概念想象为一组以同样的方式,沿相同的路径、按一致的转发优先级进行转发的 IP 数据包。注释:FEC 既可以是 IP 子网相同的数据包,也可以是边界 LSR 根据其他重要流量分类方式划分的一组数据包。比如去往某一目的地的交互流量,或者带有某一 IP 优先级地流量都可以组成 FEC。再比如,FEC 也可以是 BGP 表中的一个子类,包括通过同一出口点(出方向的 BGP 路由器)可达的全部目的前缀也可以作为一个 FEC。
在传统 IP 转发环境中,之前 所描述的数据包会在网络中的每一跳都经过设备的处理。然而,随着 MPLS 技术的引入,某个数据包会被一次性的分配给一个 FEC,这个步骤会在数据包进入网络,达到边缘路由器时执行。此时,数据包分配的 FEC 会被添加上一个长度固定且简短的标识符,这个标签符就叫做标签。
当这些数据包被发送给下一跳设备时,标签就已经被粘贴在这些 IP 数据包上了,于是路径中的下一跳设备就可以基于这个标签来发送数据了,因此,它也就无须再去分析数据包的第3层头部信息。图 1- 5 所示为标签压入和转发的完整过程。
图 1-5 MPLS 标签 添加与转发
注释:在实际中,华盛顿与 MAE-East 路由器之前的数据包转发也许会与图 1-5 所示略有不同,造成这种不同的是一个叫倒数第二跳弹出(PHP,Penultimate Hop Popping)的机制。有证据表明,PHP 可以增加交换性能但不会影响标签转发机制。本书的第 2 章将会谈到这种机制及其含义。
1.2.3 MPLS 数据包转发与标签交换路径
每个数据包都会从入站 LSR 进入 MPLS 网络,并从出站 LSR 离开 MPLS 网络。于是,这个机制就创建了一条路径,叫 做标签交换路径(LSP),这一路径的重要作用是,它负责为某个 FEC 描述一个打上了标签的数据包从入站 LSR 穿越 MPLS 网络最终达到出站 LSR 的过程中,所需要通过的那一系列 LSR,LSR 是单向的,也就是说,由一个特定的 FEC 返回的流量需要使用一长不同的 LSP。
LSP 的创建以连接为准,因为在任何流量可以流经之前 ,路径就已经建立 好了,然而,连接是基于拓扑而不是流量本身的需要而建立起来的。也就是说,创建路径的原则并不是某些 FEC 的流量是否真的必须沿着这条路径才能通过 MPLS 网络。
当数据包穿越 MPLS 网络时,每个 LSR 都会将入站标签交换为一下出站标签,这很像今天在 ATM 中使用的一种机制,即 VPI/VCI 会在离开 ATM 交换机时被交换为一对不同的 VPI/VCI。这个过程会一直继续到数据包到达最后一台 LSR,也就是出站 LSR。
每个 LSR 中都有两个表,用来保存与 MPLS 转发相关的信息。第一个表在 Cisco IOS 中被称为标记信息库(TIB,Tag Information Base),在标准的 MPLS 术语中则被称为标签信息库(LIB,Label Information Base),它会保存所有该 LSR 所有分配的标签信息,以及这些标签与从各邻居发来标签之间所存在的对应关系。通过使用标签分配协议,可以将这些标签之间的映射关系分发出去,这一部分的知识在第2章进行详细介绍。
多个邻居可以同时向一个 IP 前缀发送标签,但这些发送标签的设备在接收设备的路由中,未必就是当前去往目的地址的下一跳设备,此下类似的是,在TIB/LIB 表中,也关非所有的标签都要用来执行当前的数据包转发工作。第二个表在这里发挥了作用,这个表在 Cisco IOS 中被称为标记转发信息库(TFIP,Tag Forwarding Information Base),在标准 MPLS 术语中则被称为标签转发信息库(LIB,Label Forwarding Information Base),它的作用就是在转发数据包的过程中,记录那些当前正在由 MPLS 设备用来执行数据包转发的标签。注释:标签转发信息库之于 MPLS,相当于交换矩阵之于 ATM 交换机。
若使用 Cisco IOS 和 CEF(Cisco快速转发)中的术语,那么图1-4 中边界 LSR 架构可以重新绘制为图 1-6 所示(这里选择边界 LSR 是因为它的功能多于非边界 LSR)。
1.3 MPLS 的其他应用
到现在为止,本章一直在介绍 MPLS 的架构,这一架构将传统的路由器和 ATM 交换机有机结合进了一个统一的 IP 骨干(即 IP+ATM 架构)。然而,真正使 MPLS 如此强大的,则是它对众多应用的支持,这些应用从流量工程到点对点的 VPN 不一而足。所有 MPLS 应用所使用的,都是与图 1-6 所示的 IP 路由控制层相类似的控制层功能。图 1-7 所示为这些应用与标签交换矩阵之间的相互作用。
各 MPLS 应用的组成部分与 IP 路由应用的组成部分相同。
- 都有一个为应用定义的转发等价类(FEC)列表的数据库(IP 路由应用中的 IP 路由表)
- 都有用于在 LSR 之间交换的 FEC 表内容的控制协议(IP 路由应用中的路由协议或静态路由)
- 都有将标签与 FEC 进行绑定的控制进程和一个在 LSR 之间交换标签绑定信息的协议(IP 路由应用中的 TDP 或 LDP)
- 记录 FEC 和标签之间绑定关系的内部数据库,这一项可选(IP 路由应用中的标签信息库)
每个应用都会使用它自己的协议集来和其他节点交换 FEC 表或 FEC 与标签的映射关系。表 1-2 总结了这些协议和数据结构。
后面的几章介绍在 IP 路由过程中如何 使用 MPLS;第2部分则会介绍虚拟专用网的应用。
表 1-2
应用 | FEC表 | 建立FEC表所使用的控制协议 | 用于交换FEC与标签映射 关系的控制协议 |
IP路由 | IP路由表 | 任何IP路由协议 | 标记分发协议(TDP)或标签分发协议(LDP) |
多播IP路由 | 多播路由表 | PIM | PIM版本2的扩展 |
VPN路由 | 各VPN的路由表 | 大多数用于服务提供商和客户之间的IP路由协议;服务提供商网络中的使用的多协议BGP | 多协议BGP |
流量工程 | MPLS隧道定义 | 手工定义接口、IS-IS或OSPF的扩展 | RSVP或CR-LDP |
MPLS服务质量 | IP路由表 | IP路由协议 | TDP LDP的扩展 |
1.4 总结
传统 IP 路由机制存在着许多尽人皆知的局限性,这些局限性包括扩展性问题,很难支持流量工程的问题,很难与大型服务提供商网络现在的二层骨干网相集成的问题等。随着网络的快速发展以及多数网络环境选择IP作为自己的第3层协议,传统路由的缺陷变得越来越明显。
MPLS 的问世使网络可以兼容三层无连接路由和面向连接的二层转发这两种机制的优点。MPLS 明确划分为控制层和数据层。第3层路由协议在控制层建立用于执行数据包转发的路径,而第2层标签交换路径则在数据层实现数据 包在MPLS架构中的转发。MPLS 还简化了每一跳设备的数据转发处理过程,它以更简单和标签替换方式取代了传统路由器需要执行的第3层查找功能。由于这种技术简化了数据包的转发过程,同时它还与现在有的二层技术十分类似,因此传统的 WAN 设备(ATM 或帧中继交换机)就可以被重新部署为 MPLS 节点(在控制层支持 IP 路由),想要做到这一点只需要给软件的控制 层进行一下升级就可以了。
MPLS 节点的控制层使用数据内部的数据结构来识别流量的类型(也称为转发等价类)。该协议用来在 MPLS 的控制层之间交换 FEC 数据库的内容及 FEC 与标签之间的映射 关系。FEC 到标签的映射和 FEC 表由边界 LSR 使用,目的是给入站数据包添加标签并将这些数据包转发进 MPLS 网络。每个节点内部都要建立标签转发数据库(LFIB)这一数据库是基于FEC 表的内容及节点间交换的FEC到标签的映射关系所建立 起来的。然后使用 LFIB 在 MPLS 网络中转发带有标签的数据包,LFIB 的功能与 ATM 交换机中的 ATM 交换矩阵功能类似。
MPLS 架构非常通用,除了 IP 路由,它还可以支持其他应用,对这一架构最简单的扩展应用就是执行 IP 多播路由和服务质量,在核心网络中,MPLS 这种面向连接的转发机制加上第2层基于标签的查找 机制,可以使得很多新的应用得到支持,这些应用从流量工程到点到点虚拟专用网不一而足。