MPLS技术构架

978-7-115-27829-6
作者: 【美】Luc De Ghein
译者: 陈麒帆
编辑: 傅道坤王旭丹

图书目录:

详情

本书讲解MPLS的所有理论和实践。书中相关理论都通过配置示例来说明,讲解Cisco IOS中MPLS的实施、故障排除及应用。本书包含了用于配置、管理、设计MPLS网络及排查任何MPLS网络故障的原理、Cisco IOS命令和故障排查信息。

图书摘要

Cisco职业认证培训系列

MPLS技术构架

[美] Luc De Ghein CCIE #1897 著

陈麒帆 CCIE #15116 译

人民邮电出版社

北京

本书旨在帮助读者成长为合格的MPLS网络工程师,书中从MPLS的基础开始讲起,覆盖了关于MPLS的所有理论和实践。本书通过解释MPLS的应用来说明为什么MPLS如此流行,包括 MPLS VPN、MPLS 流量工程(TE)、MPLS 中的任意流量传输(AToM),以及虚拟专用LAN服务(VPLS)。书中相关理论都通过配置示例来说明,详细讲解Cisco IOS中MPLS的实施、故障排除及应用。学完本书,读者将会拥有全面而实用的MPLS技能知识。

本书适合网络工程师、网络管理员、网络分析员、网络主管和网络设计人员阅读,对正在准备 CCIE SP 方向认证考试的读者也有特别帮助,因为这些考试非常注重 MPLS知识。

Luc De Ghein,CCIE No.1897,是 Cisco 公司 EMEA 地区的专家级工程师。Luc 在网络领域已经从业13年,在Cisco已经超过11年。他对全球的Cisco工程师提供增值服务支持,并且教授其他关于IP路由协议和MPLS技术的课程。Luc已经多次在网络讨论会中发言。在过去的7年里,Luc专注于MPLS技术领域。在他现任职位之前,Luc做了两年半的技术支持中心(TAC)用户支持工程师,专攻路由技术。他成为路由和MPLS技术方面的专家级工程师已经超过8个年头。Luc于1996年获得CCIE证书。他同时拥有路由与交换CCIE和服务提供商CCIE两张证书。

Mohammad Miri,任职于Alcatel 北美公司。他拥有超过 14 年的为电信和移动供应商设计和运行IP网络的经验,工程涉及宽带、窄带、MPLS和在IP之上的流量工程应用。他于1989获得了计算机科学硕士学位。

Ivan Pepelnjak,CCIE No.1354,是一位拥有 25 年网络工程经验的老手。他拥有超过10年的设计、安装、故障诊断与排除、运行大型服务提供商和企业WAN与LAN网络的经验。他现在是 NIL 数据通信的主要技术顾问,管理高级的基于 IP 的网络和网络技术。他在 Cisco Press 出版了 EIGRP Network Design Solutions 和《MPLS 和 VPN 体系结构》(第1卷和第2卷)(已由人民邮电出版社翻译出版)。

Hari Rakotoranto,作为一个 GMPLS 产品的管理人员任职于思科公司的 ITD(Internet技术部门)。在工作中,他与服务提供商以及协作组织(ISOCORE 和 EANTC)在 MPLS技术开发和未来发展的领域密切合作。Hari曾经做过软件工程师和售前售后技术咨询,涉及各种不同的技术,例如:2/3层交换、路由协议、网络管理和UNIX内核设计。他是ITU-T SG13 研究组的活跃分子,主要关注 MPLS、MPLS OAM,以及 MPLS 的管理。

献辞

谨以此书献给我的妻子Ania和我的儿子Robbe、Lander。

致谢

我真心希望感谢所有帮助本书能够完成的人。首先,我要感谢思科公司为我提供这样一个值得骄傲的工作和学习的场所。其次,我要向 Mohammad Miri、Ivan Pepelnjak 和 Hari Rakotoranto等技术审校人表达我的敬意,因为他们的反馈、指导、建议、时间和努力确保了整本书技术上的准确性。第三,我为 Cisco Press 团队每一位成员而骄傲,他们是 Jim Schachterle、Raina Han、Dayna Isley、Mary Beth Ray、Jill Batistick、Karen A. Gill、Seth Kerney和 Allison Johnson。有了他们的支持和耐心,这本书才得以出版。最后,我很想感谢在我著作期间家人的支持和谅解。

作为一名资深工程师,我希望第一时间把多协议标签交换(MPLS)网络介绍给大家,我经历了在服务提供商网络中的第一个测试用的MPLS版本,同时也经历了将MPLS扩展到企业网络的巨大成功。另外,我还见证了新的 MPLS技术的不断涌现,并且很快就得到了网络界的应用。初期进行 MPLS研发的技术虽然多少有些瑕疵,但也总是让人感到兴奋的。

MPLS 的成功无疑带来了这样一个结果,那就是它可以让网络承载各种各样的流量,从 IP 流量到Vioce over IP(VoIP)的流量,再到第二层流量。MPLS 提供了一种将多种网络集成于一体的方法。MPLS可以集成ATM、帧中继、语音和IP网络到同一个网络架构中,这样一来就大大地获得了成本上的优势。

MPLS 已经成熟了很多,并且已经是一种稳定的技术了,可以看到很多新的实施和新的特性。MPLS是基于IP的,而因特网也是基于IP技术的,所以可以预测在不久的将来, MPLS必定要走进平常人家里。

在Cisco的IOS中配置MPLS相对比较简单,但还是需要很多知识来掌握如何配置,以及当MPLS网络出现故障的时候如何排查错误。本书向你展示了这些知识技能,以及从我自己的经验中得出的需要提醒你注意的一些问题。

目的和方法

本书的目的是帮助读者成长为合格的MPLS网络工程师。为了实现这个目标,本书从MPLS的基础开始讲解。本书覆盖了关于MPLS的所有理论和实践。通过解释MPLS的应用来说明为什么 MPLS 如此流行,包括 MPLS VPN、MPLS 流量工程(TE)、MPLS 中的任意流量传输(AToM),以及虚拟私有LAN服务(VPLS)。理论都通过配置示例来说明,详细讲解在Cisco的IOS中MPLS的实施和故障排除和它的应用。当你读完本书之后,你将会拥有全面而又实用的MPLS技能知识。

本书是循序渐进编写的,所以如果存在疑问,请从头到尾阅读本书。这是本书的逻辑顺序,只有已经拥有一些MPLS背景的读者才可以跳到任意一章开始阅读。

目标读者

本书基于MPLS操作基础和它的具体实施,同时还介绍所有关于MPLS网络的专业知识。我还尝试让这本书能够覆盖足够多的MPLS应用,并且把我从坎坷的经历中学到的所有东西都记录了下来。本书的目标是既要为已经具备了一定的网络经验,但对MPLS还不够熟悉的人介绍MPLS,又要为一部分已经对MPLS比较熟悉的人提供更多相对较难的课题研究。同时,本书的目标读者可以是网络工程师、网络管理员、网络分析员、学生、教师、网络主管和网络设计人员。

我尝试在理论和实践示例之间找到一个平衡。本书是以Cisco的IOS为基线的,列举了大量关于 Cisco IOS 的示例。但是,就算是读者对 Cisco 的 IOS 并不熟悉,本书也能帮助读者全面地了解MPLS。

读者需要对IP和IP路由比较熟悉,因为这是阅读本书所需要的基本知识。

最后,本书对正在准备 CCIE 服务提供商笔试和 CCIE 服务提供商实验考试的读者来说也是特别有帮助的,因为它们非常注重MPLS知识的考查。

本书是如何组织的

本书包括15章和一个附录,一共分成3个部分。

尽管每一个章节都有自己的主题,并且相互独立,但还是建议按照从头到尾的顺序阅读本书。如果你已经具备了一定的MPLS经验,当然可以跳到第二部分的任一章节开始阅读。就算是这样,你也可能要浏览一下第一部分的章节来唤起你的记忆,以便能进入第二部分的阅读,因为第一部分囊括了所有需要了解的MPLS基础知识。

第一部分,“MPLS基础”讨论了MPLS的起因以及它的基本知识。

第1章,“MPLS的发展和演变”—— 本章介绍了什么是防火墙,以及它出现的背景。本章同时还简要概括了一些比较重要的MPLS应用。

第2章到第6章主要覆盖了MPLS的基础知识,包括以下主题。

第2章,“MPLS体系架构”—— 本章主要关注MPLS的基本组件。

第3章,“转发标记报文”—— 本章描述了标签转发和被保留标签的用途。

第4章,“标签分发协议”—— 本章主要描述了标签分发协议(LDP),以及路由器如何使用它来通告MPLS标签。

第5章,“MPLS和ATM架构”——本章对支持MPLS的ATM网络的全部细节作了介绍。

第6章,“Cisco快速转发”—— 本章介绍了Cisco快速转发(CEF)的体系架构,这是在 Cisco IOS 中用于 MPLS 的报文转发或者交换的方式。

第二部分,“高级MPLS主题”主要涉及MPLS应用、服务质量(QoS)和故障排查。

第7章,“MPLS VPN”—— 本章讨论了在所有 MPLS 应用中最为流行的一种:MPLSVPN。完整解释了 MPLS VPN 的体系架构。

第8章,“MPLS流量工程”—— 本章主要关注如何使用 MPLS 技术来实施流量工程(TE)。

第9章,“MPLS中实施IPv6”—— 本章解释了IPv6协议如何在MPLS骨干网络中进行传输。

第10章,“MPLS中的任意流量传输”—— 本章讨论了MPLS网络如何传输第二层服务。

第11章,“虚拟私有LAN服务”—— 本章描述了如何在MPLS骨干网络中仿真一个以太网LAN。

第12章,“MPLS和服务质量”—— 本章讨论了MPLS网络如何提供QoS,以及如何在MPLS网络中传播QoS信息。

第13章,“MPLS网络故障排查”—— 本章描述了各种故障排查技术以及你可以在MPLS网络中使用的工具。

第14章,“MPLS实施和维护”—— 本章研究 MPLS实施与维护(OAM),以及它如何用于检测实施中的错误,统计和度量MPLS网络性能。

第15章,“MPLS的未来”—— 本章对MPLS的未来和MPLS很可能会得到的增强或者发展进行了展望。

第三部分,附录。

附录A,“各章复习题答案”—— 本附录对每一章最后所提出的问题提供了参考答案。

本书中使用的设备图标

命令语法约定

本书中用于表示命令的语法约定与IOS命令参考手册中使用的一样。命令参考手册描述的约定如下:

粗体字表示按字面显示输入的命令和关键字。在实际的配置范例和输出中(不是通用命令语法中),粗体字表示用户手工输入的命令(比如show命令);

斜体字表示你必须提供的实际值或参数;

用竖线(|)隔开互斥的元素;

用方括号([])表示可选元素;

用大括号({})表示必不可少的选项;

用([{}])表示可选元素中必不可少的选项。

第1章 MPLS的发展和演变

第2章 MPLS体系架构

第3章 转发带标签的报文

第4章 标签分发协议

第5章 MPLS和ATM架构

第6章 Cisco快速转发

在阅读完本章后,你将能够:

解释在MPLS后台起促进作用的参数;

列举出转发带标签的报文相比较于转发 IP 报文的优势所在;

解释被人们广泛接受的MPLS应用。

多协议标签交换(MPLS)已经使用了好几年了。这是一种较为流行的网络技术,它使用粘连了标签的报文来在网络中传输。本章对MPLS为什么在短时间内变得如此流行进行了解释。

本章从MPLS的定义开始。同时还对使用MPLS之前的网络解决方案进行了简单的介绍,列举出了MPLS的优点,并且在本章末尾简要说明了MPLS在Cisco的IOS中的使用历史。

路由器通过在其之间通告MPLS标签来创建标签到标签的映射关系。这些标签都粘连在IP报文中,使得路由器可以通过标签查找来转发数据流量,而不再通过目的IP地址。这样一来,这些报文都是通过标签交换来进行转发的,而不是通过IP交换。

标签交换技术并不是一种新的技术。帧中继和 ATM 都是通过这种技术在整个网络中传递帧或者信元的。在帧中继中,帧的长度可以是任意的,然而在 ATM 中,一个固定长度的信元包含了5个字节的头部和48个字节的有效负载。ATM信元以及帧中继的帧的头部信息都涉及信元或者帧所存在的虚链路。在整个网络中,帧中继和 ATM 的每一跳传递方式都是一样的,即头部中的“标签”值每一跳都会改变。这和转发IP报文是有区别的。当一台路由器转发IP报文的时候,它并不会改变报文的目的参数,也就是说,它不会修改报文中的目的IP地址。事实上,如果MPLS标签用来转发报文的话,报文的目的IP地址不再被 MPLS 关心。这样做的好处——比如说,在 ATM 中集成 IP 时更优,以及流行的MPLS虚拟私有网络(VPN)应用——将会在本章的1.3节中进行解释。

在MPLS之前,最为流行的WAN协议是ATM和帧中继。成本上经济的WAN网络被创建来承载各种各样的协议。随着因特网的流行,IP成为了最为流行和普及的协议。IP无处不在。在这些WAN协议之上,VPN也得到了发展。用户租用ATM链路和帧中继链路或者使用专线,并且在IP之上创建他们自己的专用网络。因为服务提供商的路由器通过第2层向用户的第3层路由器提供服务,那么就需要保证将不同的用户网络分离并且隔离开来。这种类型的网络被称为覆盖型的网络(Overlay Network)。

覆盖型的网络在今天仍然在使用,但是更多的用户目前都使用 MPLS VPN 服务。下一节将会详细介绍MPLS的优势所在。这将会帮助你理解为什么MPLS对配置它的服务提供商及其客户来说有非常大的优势。

本节简要地说明了在网络中运行MPLS的好处和优势。这些优势包括:

使用一个统一的标准网络架构;

比在ATM中集成IP更好;

脱离边界网关协议(BGP)的核心;

对等体到对等体的 MPLS VPN 模型;

最优的数据传输;

流量工程。

首先来看一个实施MPLS的虚假理由。乍看这个理由还相当合理,但是实际上这并不是一个实施MPLS的好理由。

早期使用标签交换协议的原因是因为速度上的需要。对CPU来说,交换IP报文比交换带标签的报文要慢很多,因为后者仅仅需要查找在报文顶部的标签即可。而路由器转发IP报文是通过提取IP报文头部的目的IP地址,并且在路由表中查找最优匹配来进行的。这样的查找依赖于特定厂商的路由器的实施。然而,因为IP地址可以是单播,也可以是组播,并且由4个8位组组成,所以查找过程可能比较复杂。查找的复杂性就说明对于IP报文的转发决策可能会花上一些时间。

尽管有些人认为查找单一的标签值比起查找IP地址来说,报文交换的进程会更快,但是如果IP报文的交换是在硬件中完成的话,前面的说法就没有任何意义了。就目前来说,路由器上链路的带宽最大可达 40Gbit/s。所以如果一台路由器有多条高带宽链路的话,就不可能仅仅通过CPU来执行所有IP报文的转发决策。毕竟CPU的主要责任还是处理控制层面的工作。

控制层面实际上就是一系列用来帮助创建数据或者转发数据的协议。控制层面中最主要的组件就是路由协议、路由表,以及其他的用来提供数据层面的控制或者信令协议。数据层面是经过一台路由器或者交换机的报文转发路径。报文交换——或者是转发层面——目前都被内建在硬件,也就是 ASIC(Application Specific Intergrated Circuits,专用集成电路)中了。在路由器的转发层面运用ASIC可以加速IP报文的转发,就如同带标签的报文一样。因此,如果你在网络中实施MPLS的理由仅仅是追求加速转发穿越网络的报文的话,这种理由是不真实的。

通过 MPLS,可以根据报文的目的地址或者其他的预先配置好的标准对入站报文加上标签,然后在通用的网络构架中转发所有流量。这是MPLS最大的优势所在。其中一个原因是IP在网络领域已经处于统治地位,所以绝大多数的技术都可以在MPLS上实现和传输。不仅仅是IP的传输,还包括语音流量的传输。

通过在IP网络中使用MPLS,可以扩大可被传输的流量范围。在报文中添加标签使得你可以在启动MPLS的第3层IP骨干网络中运载其他的协议,而不仅仅是IP,类似于以前只能在帧中继和ATM第2层网络中那样。MPLS可以传输IPv4、IPv6、以太网、高级数据链路控制(HDLC)、PPP,以及其他的第2层技术。

在MPLS骨干网络中传输任意第2层帧的特征被称为MPLS的任意传输(AToM)。转发AToM流量的路由器不需要关心MPLS的有效负载,而只需要通过查看其顶部的标签来转发带标签的流量。本质上说,MPLS 标签交换是在单一网络中转发多协议流量的一种简单方法。你需要拥有一张转发表,在这张表中,入站标签被出站标签或者是下一跳所替代。第3章将会对转发带标签的流量进行深入讨论。

简而言之,AToM使得服务提供商可以向其用户提供和特定的非MPLS网络同样的第2层服务。同时,服务提供商只需要单一的网络架构就可以运载各种类型的用户流量。

在过去的10年间,IP在和其他的第3层网络协议的竞争中胜出,比如说,AppleTalk、因特网报文交换(IPX)和DECnet。IP相对来说较为简单,并且无处不在。当时在第2层协议中,对ATM的评价也非常高。尽管当时预计将ATM用作端到端的协议——或者桌面到桌面的协议,但是都没有实现。的确 ATM 获得了较大的成功,但是这些成功都仅局限在它被用作服务提供商网络核心的WAN协议的时候。很多的服务提供商也会实施IP骨干的网络。将IP集成于ATM的价值是非常大的。为了更好地将IP集成于ATM之中,网络界提出了一系列解决方案。

其中一个解决方案是根据众所周知的 RFC 1483——“多协议封装到 ATM 适配层 5”的标准来实施IP到ATM的集成,该RFC指定了如何在ATM适配层(AAL)5中封装多种选路和桥接协议。在这个解决方案中,所有的 ATM 电路都不得不手工创建,并且所有的IP下一跳和ATM终端之间的映射也都必须在网络中的每一台ATM相关路由器上手工配置。

注释:RFC 2684 是RFC 1483的更新版本。

可以在http://www.ietf.org/rfc/rfcNNNN.txt中在线找到所有的RFC文档,其中NNNN是RFC的编号,如果必要的话,高位置为0,以保证总是4位数。如果你不清楚具体的RFC编号,可以在IETF的RFC索引中找到,该索引地址为http://www.ietf.org/iesg/lrf_index.txt。

另一种解决方案是实施 LAN 仿真(LANE)。在网络的边缘,以太网已经成为了一种流行的第2层技术,但是在大型服务提供商的网络中,它还不能满足可靠性和可扩展性的要求。LANE使网络看起来就是一个仿真的以太网络。这种方案使得大量的以太网分段帧可以被桥接在一起,就好像在 ATM WAN 网络的中心是一台以太网交换机一样。

最后,MPOA(Multi Protocol Over ATM,ATM 上的多协议)能够提供给你最紧密的IP到ATM的集成,同时也是最复杂的解决方案。该方案是由ATM论坛所定义的。

所有这些解决方案在实施和故障排查的时候都比较麻烦。一种更好的将IP集成于ATM之中的方案就是MPLS的出现。先决条件就是ATM交换机必须更加智能化。ATM交换机必须运行一种IP路由协议,并且还要实施一种标签分发协议。在ATM交换机上运行MPLS的更多细节请参阅第5章。

当某服务提供商的 IP网络需要转发数据流的时候,每一台路由器必须查找这些数据报文的目的 IP地址。如果这些报文的目的地在该服务提供商的范围之外的话,那么这些外部IP前缀必须要存在于每台路由器的路由表中。BGP负责运载那些外部前缀,比如说用户前缀或者是因特网前缀。这就使得在服务提供商中的所有路由器都必须运行BGP。

然而,MPLS可以在转发报文的时候使用标签查找来代替IP地址查找。MPLS可以使标签和出站路由器相关联,而不用与报文的目的IP地址关联。粘连于报文的标签所包含的信息告诉路径中每一台路由器该报文需要传递给哪一台出站边缘路由器。核心路由器不再需要基于目的IP地址信息来转发报文了。因此,在服务提供上的核心路由器中就不再需要运行BGP了。

在MPLS网络边缘的路由器仍然需要对报文的目的IP地址进行查找,所以仍然需要运行BGP。在入站MPLS路由器中的每一个BGP前缀都有一个BGP下一跳IP地址与之关联。BGP下一跳的IP地址是出站MPLS路由器的IP地址,IP报文中相关联的标签实际上就是关联 BGP 下一跳 IP 地址的标签。因为每一台核心路由器转发报文都是基于粘连的MPLS标签,而该标签都是和BGP下一跳IP地址相关联的,所以出站MPLS路由器的每一个BGP下一跳IP地址必须让所有的核心路由器了解。任何内部网关路由协议,比如说OSPF或者IS-IS都可以完成这项工作。

图1-1说明了在MPLS网络中只有边缘路由器运行BGP。

一个因特网服务提供商(ISP)如果在它的核心网络中有200台路由器的话,它就需要在这200台路由器中运行BGP。但如果MPLS实施在该网路中,那么就只有边缘路由器——或许是50台左右的路由器——需要运行BGP。

现在,在核心网络中的所有路由器都转发带标签的报文,而不用进行IP查找,这样一来,这些路由器就可以从运行 BGP的负担中解脱出来。因为全部的因特网路由表超过 15万条的路由条目,所以不必在所有路由器中运行BGP是非常有价值的。如果路由器不需要了解整个因特网的路由表的话,所需要的内存就会少很多,而你也不需要在核心路由器中实施复杂的BGP。

图1-1 无需BGP的MPLS网络

VPN就是在通用架构中的私有网络仿真。私有网络要求所有的用户场点之间是可以互连的,并且要完全和其他的VPN隔离开来。VPN通常用于通过普通的服务提供商架构连接到多个可互连场点的企业。

服务提供商可以通过实施以下两种主要的VPN模型来向其用户提供VPN服务:

覆盖型的VPN模型;

对等体到对等体的VPN模型。

1.覆盖型的VPN模型

在覆盖型的模型中,服务提供商在其网络内部和用户路由器之间提供点到点的链路或者是虚链路。对等体用户之间直接通过服务提供商所提供的链路或者虚链路进行连接。服务提供商通过自身的路由器或者交换机来承载用户数据流量穿越服务提供商网络,但永远不会在用户和服务提供商路由器之间形成路由信息的对等体关系。这样一来,服务提供商的路由器永远看不到用户的路由器。

其中点到点的服务可能工作在第1层、第2层甚至是第3层。在第1层中的例子是时分多路复用(TDM)、E1、E3、SONET,以及SDH链路。在第2层中的例子是通过X.25、ATM或者帧中继所创建的虚链路。

图1-2说明了在帧中继中创建覆盖型网络的一个实例。服务提供商端的帧中继交换机在帧中继网络边缘为用户路由器之间创建了虚链路。

图1-2 帧中继中的覆盖型网络

注意到用户节点的第3层路由(IP)和对等关系,用户路由器之间看上去是直接连接的。图1-3对此进行了描述。

覆盖型服务同样也能通过第3层IP协议提供。最为常用的方法是使用隧道来创建IP覆盖型网络,该隧道技术即是通用路由封装(GRE)隧道技术。该隧道将流量封装为一个GRE头部和一个IP头部。在GRE的头部中,除了众多其他信息之外,还说明了被传输的是什么协议。而IP头部用来在服务提供商网络中为报文选择路由。图1-4描述了一个使用GRE隧道的覆盖型网络。使用GRE隧道技术的一大优势在于除了IP流量以外,它还可以为其他类型的流量选择路由。

图1-3 覆盖型网络:用户路由选择对等关系

图1-4 使用GRE隧道的覆盖型网络

可以在GRE隧道中使用IPSec,以提供诸如数据加密之类的安全性。

2.对等体到对等体的VPN模型

在对等体到对等体VPN模型中,服务提供商的路由器负责在网络中传输用户数据。并且同时还会参与用户的路由决策。换句话说,服务提供商的路由器在第3层直接和用户路由器形成对等关系。其导致的结果是服务提供商路由器和用户路由器之间会形成路由协议的邻居或者邻接关系。图1-5说明了对等体到对等体VPN模型的概念。

图1-5 对等体到对等体VPN模型

在 MPLS出现之前,对等体到对等体的VPN模型可以通过在用户端和服务提供商端路由器之间建立 IP 路由对等关系来实现。VPN 模型同时还要求在不同的用户之间相互隔离或者保持私密性。你可以通过配置报文过滤器(访问列表)来控制去到或者来自用户路由器的数据的方法来实现。另外一种实现私密性的方法是通过配置路由过滤来向用户路由器通告路由或停止通告路由的方式来实现的。当然,你也可以同时使用上述两种方法。

在引入MPLS之前,覆盖型的VPN模型比起对等体到对等体的VPN模型来说实施得更为普通。对等体到对等体的VPN模型的要求很多,因为每添加一个用户节点会引起很多节点的大量配置改动。作为一种 MPLS 的应用,MPLS VPN 使得对等体到对等体的 VPN模型实施起来更为容易。现在添加或者移除一个用户节点的配置较为简单,当然也就缩短了需求时间,并且提高了效率。在MPLS VPN中,用户端的一台路由器被称为用户边缘(CE)路由器,在IP层面上。它至少与一台服务提供商的路由器存在对等关系,该服务提供商端的路由器被称为提供商边缘(PE)路由器。

在 MPLS VPN 网络中的私密性是通过使用虚拟路由/转发(VRF)的技术来实现的,实际上就是将数据报文以带标签报文的方式在骨干网络中进行转发。VRF确保了来自于不同用户的路由信息保持相互隔离,同时在骨干网络中的MPLS确保了报文的转发是基于标签信息,而不是 IP 头部的信息。图 1-6 说明了 VRF 的概念以及通过 MPLS VPN 在骨干网络中转发带标签报文的实例。

图1-6 使用VRF 的MPLS VPN

图 1-7 说明了将对等体到对等体的 VPN 模型应用于 MPLS VPN 的概念。

要添加一个用户节点,意味着在PE路由器中只需要添加和CE路由器有对等关系的对等体。你不需要像覆盖型模型那样创建很多虚链路,或者像在IP网络中的对等体到对等体的 VPN 模型那样配置报文过滤或路由过滤。这便是在服务提供商端使用 MPLS VPN 的优势所在。

大多数服务提供商的用户都使用Hub-and-Spoke网络结构,还有一些用户在服务提供商的骨干网络周围使用全互连的网络结构,剩下的使用部分互连的结构。当用户使用全互连的网络结构时,MPLS VPN 对用户来说优势非常显著。比较图 1-2 中使用帧中继网络全互连的用户网络结构,图 1-7 在同样的用户网络中使用 MPLS VPN。在图 1-2 中,每一台用户边缘路由器都需要和其他n-1台用户边缘路由器形成对等关系——其中n是用户边缘路由器的总数。在图1-7中,每一台用户边缘路由器只需要和一台服务提供商边缘路由器形成对等关系就可以了。

图1-7 对等体到对等体的MPLS VPN模型

对服务提供商来说,MPLS VPN 的另一大优势在于它只需要在 PE 和 CE 路由器之间提供一条链路就可以了。而在覆盖型模型中,服务提供商需要在场点之间提供链路或者是虚链路。这样一来,就能够很轻松地预测到流量,因为预测单一场点的带宽要求比起预测所有用户场点的全部流量要简单很多。

为了公平起见,这里列举出对等体到对等体VPN模型相对于覆盖型模型的缺陷:

用户必须要和服务提供商共享路由信息;

对服务提供商的边缘设备造成额外的负担。

第一个缺陷在于用户必须跟服务提供商建立路由对等关系。这样一来,用户就不能控制其网络的第3层端到端的IP路由了,就像在覆盖型的模型一样。第二个缺陷是对服务提供商来说的。这增加了服务提供商边缘设备——PE路由器的负担。服务提供商有义务为其用户网络提供可扩展性和路由收敛,因为 PE 路由器必须要能够运载很多用户的大量路由信息,同时还要提供及时的路由收敛。

因为ATM和帧中继交换机是纯粹的第2层设备,路由器需要与这些交换机通过创建虚链路的方式来进行互连。任何路由器如果想要直接向边缘的任何其他路由器传输流量,它们之间必须要创建直接的虚链路。手工创建虚链路是一件烦人的事情。在任何情况下,如果要求在场点之间建立任意点到任意点的连接的话,就需要在这些场点之间建立全互连的虚链路,这样一来,工作量很大,并且成本很高。如果场点间的互连关系如图1-8那样的话,那么从CE1到CE3的流量必须首先经过CE2。

图1-8 非全互连的覆盖型ATM网络

其导致的结果是流量要在 ATM 骨干网络中穿越两次,绕路经过了 CE2。如果使用本小节前面讨论的 MPLS VPN 的话,该数据流量将会直接——因此也是最优——在所有用户场点之间传输。如果想要在覆盖型VPN模型中实现场点之间数据流量传输的最优路径,所有场点间必须要相互连接,也就是说需要设计全互连的链路或者是虚链路。

流量工程的基本思想就是最优化地使用网络架构,包括未充分使用的链路在内,因为它们可能并不是最优的路径。这就使得流量工程必须能够控制流量从非最优的路径进行传输,所谓最优路径就是由 IP 选路决策出来的成本开销最小的路径。这些成本开销最小的最短路径是由动态路由协议计算得出的。通过在MPLS网络中实施流量工程,你可以使得流量通过特定的前缀或者特定的服务质量的流量路径从节点A传输到节点B,而该路径并不是成本开销最小的路径。这样一来,流量就可以更平均地被分散到网络中的可用链路中去,从而充分地使用那些没有得到充分使用的链路。图1-9列举了说明该问题的一个实例。

图1-9 流量工程实例-1

一旦技术人员实施了带流量工程的 MPLS 网络以后,就可以控制从节点 A 到节点 B的流量通过底部的路径进行传输,而该路径并不是节点A和节点B之间的最短路径(该路径经过4跳,而顶部的路径只经过了3跳)。这样一来,就可以让流量在使用率并不是太高的链路中进行传输。可以通过修改路由协议的度量值来引导流量使用底部的路径进行传输。参考图1-10。

如果这是一个纯粹的IP网络的话,你无法通过配置路由器A来使得路由器C沿底部路径发送流量。是沿顶部还是底部路径传递数据流量完全是由路由器C自己决定的。但是如果该网络启用了MPLS流量工程的话,就可以让路由器A沿着底部路径将流量传递给路由器B了。MPLS流量工程强行让路由器C将数据流量沿着底部路径通过路由器A传递给路由器B。正是由于其标签转发机制的存在,所以这里可以通过MPLS来实现。流量工程路径中的首端路由器——这里是路由器A——指的是指定流量在MPLS网络中穿越的完整路径的路由器。因为是由首端路由器指定路径的,所以流量工程也被称为基于源的路由。首端路由器为数据报文粘连的标签使得数据流沿着首端路由器所指定的路径传输。在路径中间的路由器都不会将报文转发到其他的路径上去。

图1-10 流量工程实例-2

使用MPLS流量工程还有一个好处,那就是可以进行快速重新选路(FRR)。如果某条链路或者路由器失效的话,你可以通过 FRR 对已经带上标签的数据流量重新进行路由决策。流量的重新选路过程不会超过50ms,这甚至比目前的标准还要快。

本节按照时间顺序简要介绍一下自1998年开始MPLS在Cisco的IOS中的实施过程。

Cisco 公司一开始在 IP 报文的顶部加入标签的时候把这项技术称为标记交换(tag saitchins)。首先是在 1998 年的 Cisco IOS 版本 11.1(17)CT 实施的。标记这个名称到现在被标签所代替。标记技术可以根据路由表为网络分配标记,并且把分配好的标记粘连到目的地指向该网络的报文顶部中去。标记交换创建了一张叫做标记转发信息库(TFIB)的表,本质上说,这张表中存储的是输入到输出的标签映射。每一台标记交换路由器都必须匹配入站报文所粘连的标记,并且将其转换为出站标记后把该报文转发出去。

随后,IETF将标签交换标准化,同时引入了MPLS的概念。IETF介绍MPLS的第一篇 RFC 是在 1999 年发表的RFC 2547,“BGP/MPLS VPNS”。随着该 RFC 的发表,大部分的专业术语都进行了重命名。表1-1简要列举了老的术语和新的术语的对照。

表1-1 标记交换/MPLS新老术语对照表

注释:1TDP=标记分发协议;2LDP=标签分发协议;3TFIB=标记转发信息库;4LFIB=标签转发信息库;5TSR=标记交换路由器;6LSR=标签交换路由器;7TSC=标记交换控制器;8LSC=标签交换控制器;9TSP=标记交换路径;10LSP=标签交换路径。

注释:大部分的标记交换技术都适用于MPLS标准。TDP即是LDP的基础。LDP和TDP的功能完全一样,只不过它们是完全不同的两种协议而已。

表1-1的目的是为了让你意识到术语的改变。到目前为止,你不用关心每一个缩写词的具体含义。这些缩写词都将会在后续章节进行介绍。

本书采用新的术语进行说明。但是,你可能仍然会一次一次地发现老的术语,特别是在路由器输出的时候。

在Cisco的IOS中第一个支持标记交换的版本中就可以支持流量工程了,只不过那个时候被称为资源保留路由(RRR或者R3)。最开始在Cisco的IOS中使用的流量工程是静态的。这表示作为技术人员,你必须要配置数据流量穿越网络的特定路径中的所有路由器。后来,通过使用链路状态路由协议的扩展,流量工程的实施动态化的程度越来越高。技术人员不再需要沿特定路径逐跳静态配置流量工程了。链路状态路由协议通过携带额外的信息,使得特定路径的创建可以动态地完成。这样极大地降低了技术人员的工作量,让MPLS流量工程也变得越来越流行了。

在引入MPLS VPN之前,标记交换或者MPLS并没有得到普遍的使用。当Cisco的IOS软件版本更新到 12.0(5)T 以后,在 1999 年有了第一个支持 MPLS VPN 的 IOS 版本。该版本的问世非常及时,也非常成功,因为大量的服务提供商马上就开始着手实施 MPLS VPN了。到今天,MPLS VPN 应用仍然是所有 MPLS 应用中最为流行的一项应用。

另一种非常重要的MPLS应用是AToM。Cisco在2000年的IOS版本12.0(10)ST开始支持 AToM,该技术使得可以在 MPLS 骨干网络中运载 ATM AAL5 的数据。随后,越来越多的封装类型被添加到了Cisco的IOS所支持的AToM中。比如说,就目前而言,在第2层中,可以在AToM中传输的封装类型就包括帧中继、ATM、PPP、HDLC、以太和802.1Q。特别是在MPLS骨干网络中传输以太帧在今天取得了非常大的成功。然而, AToM 也限制了在 MPLS 骨干网络中传输以太帧的时候只能采用点到点的模式。虚拟私有LAN服务(VPLS)可以让以太帧以点到多点的方式进行传输。本质上说,VPLS是一种第 2 层服务,它可以在基于 MPLS 的网络中仿真 LAN。首次在 Cisco 的 IOS 中支持VPLS 是 2004 年年初在 7600 系列平台上使用的 Cisco IOS 版本 12.2(17d)SXB。VPLS 将会在第11章中详细介绍。

本章介绍了MPLS的概念,并且简要概述了MPLS在Cisco的IOS中的历史。转发带标签的报文比起转发IP报文来说有更大的优势,因为它结合了标签交换的技术,而该技术建立在帧中继和ATM网络中能够使得IP网络的实施非常简单的基础上。这种新的报文转发方式还引入了多种非常成功的基于标签转发的应用:MPLS VPN、流量工程、AToM 和VPLS。

1.本章提及了哪些MPLS应用?

2.说出3种在服务提供商网络中使用MPLS的优势所在。

3.在服务提供商网络中实施 MPLS VPN 的解决方案,比起其他的VPN 解决方案来说有哪些优势?

4.说出4种可以在ATM网络中传输IP的技术。

5.说出两种在引入MPLS之前执行标签交换的协议。

6.为了可以实施MPLS,ATM交换机需要运行什么?

7.如何确保在ATM或者帧中继网络中,所有用户场点之间的数据流量传递是最优的?

在阅读完本章后,你将能够:

解释MPLS标签的格式;

描述MPLS标签栈,以及说明标签栈在数据帧中的位置;

说明什么是标签交换路由器,以及它所执行的功能;

描述什么是标签交换路径,什么是转发等价类;

解释LIB和LFIB的区别,以及它们是如何在MPLS网络中工作的;

确定标签是如何在MPLS网络中分发的。

本章帮助你理解MPLS的操作。阅读完本章后,你将会对构建MPLS结构块有较为深入的理解,并且也为阅读本书的其他章节打下了坚实的基础。

MPLS是多协议标签交换的缩写。MPLS中的多协议在Cisco的IOS首次引入MPLS操作以后就得到了支持。尽管最初只支持 IPv4报文的标签交换,但随后越来越多的协议得到了支持。在Cisco的IOS中,到目前为止,还可以为IPv6报文打标签,这将在第9章中进行介绍。而第10章将会介绍如何在MPLS骨干网络中标记和转发第2层数据帧。

标签交换表明了报文的交换不再依赖IPv4报文、IPv6报文,或者是第2层数据帧,而是根据标签来进行的。在MPLS中最重要的术语就是标签。本章解释标签的作用、如何使用标签,以及标签是如何在网络中进行分发的。

一个 MPLS 标签由 32 比特组成,并且有统一的标准结构。图 2-1 描述了一个MPLS标签的结构。

图2-1 MPLS 标签结构

前 20 比特为标签值。标签值的范围是从 0 到 220-1,即 1 048 575。但是,其中前 16比特是不能随便定义的,因为它们都有特定的含义。从20到22比特是3位试验用(EXP)比特。高比特专用于服务质量(QoS)。

注释:这些比特位之所以被称为“试验用”是有历史原因的。早些年,没有人知道这几个比特有什么用。第12章列举了一些关于如何使用这3位试验用比特的方法。

第23比特是栈底(BoS)位。其值应该为0,除非这是栈底的标签。如果是,那么该位将应该被置为 1。所谓标签栈,实际上就是报文前端标签的集合。标签栈可以只包含一个标签,也可以包含很多标签。标签栈中的标签(即上述的32比特)数量是没有限制的,尽管你很少会看到标签栈中的标签有4个,或者更多。

从24到31的8个比特位用做了生存周期(TTL)。这里的TTL和IP报文头部中TTL的功能是完全相同的。每经过一跳后,TTL的值就减1,其主要的功能是避免路由环路。如果在产生路由环路的时候没有TTL保护的话,报文的环路将永远无法停止。存在TTL,一旦标签中的TTL值减少到0,该报文就会被丢弃。

下一小节将介绍标签栈,以及标签栈在数据帧中存在的位置。

具有MPLS功能的路由器可能需要在报文顶部添加不止一个标签,以便可以让报文能够穿越MPLS网络。而多标签就是通过将标签集合到标签栈的方式来实现的。在标签栈中的第一个标签称为顶部标签,而最后一个标签称为底部标签。在这两者之间的标签可以是任何数量的。图2-2说明了标签栈的结构。

图2-2 标签栈

注意在图2-2所示的标签栈中,BoS位对所有的标签来说都是0,除了底部标签之外。而底部标签的BoS位被置为1。

实际上,一些MPLS应用需要标签栈中多于一个标签,以便可以转发带标签的报文。两种典型的 MPLS 应用就是 MPLS VPN 和 AToM。MPLS VPN 和 AToM 都需要标签栈中有两个标签。其原因将会在第7章和第10章中进行讨论。

标签栈放置在哪儿?标签栈位于第3层包头之前——就是说,在被传输的协议头部之前,同时在第2层报头之后。通常,MPLS标签栈由于其位置的特殊性而被称为填充头部(Shim Header)。

图2-3显示了带标签报文中标签栈的位置。

图2-3 带标签报文封装

对链路第2层的封装几乎可以是Cisco的IOS所支持的所有封装类型:PPP、高级数据链路控制(HDLC)和以太网等。假设被传输的协议是IPv4,并且链路的封装是PPP的话,那么标签栈就将会存在于PPP头部之后和IPv4头部之前。因为在第2层数据帧中的标签栈位于第3层头部,或者其他被传输的协议之前,所以你必须在数据链路层协议字段中附上新的值,以说明在第2层头部后面的是一个带有MPLS标签的报文。数据链路层协议字段说明第2层帧所运载的流量类型。表2-1列举了在第2层头部中用来标识协议的名称和值,不同的第2层封装类型有不同的值。

表2-1 在第2层封装类型中用来标识MPLS协议的值

注意到ATM并不在表2-1中,这是因为ATM使用的是一种独立的标签封装方式。关于在ATM中对带标签报文的封装,请参阅第5章。对帧中继来说,其NLPID是0x80,这就说明它使用的是IEEE子网接入协议(SNAP)的头部。帧中继的SNAP头部说明了帧中继运载的是什么协议。SNAP头部包含了一个唯一的组织机构代码(OUI)0x000000,以及以太类型0x8847,这就说明了被传输的协议是MPLS。

理论上说,被传输的协议可以是任意的:Cisco的IOS支持IPv4和IPv6。在AToM中(在第10章进行讨论),你还将会发现被传输的协议可以是任意一种流行的第2层协议,比如说,帧中继、PPP、HDLC、ATM和以太网。

OSI参考模型由7个层次组成。图2-4描述了OSI参考模型。

最下面一层是第1层,或者说是物理层,最上面一层是第7层,或者说是应用层。其中物理层主要涉及到布线、机制,以及电路特征。第2层是数据链路层,主要涉及的是数据帧的格式。数据链路层的实例就是以太网、PPP、HDLC,以及帧中继。数据链路层最为重要的特征在于它只能存在于相互直连的两台设备之间的链路。也就是说每经过一条链路以后,数据链路层头部总是会被链路上的接收端设备所更改。第3层,网络层,涉及的是端到端的报文格式化。它的主要特性和数据链路层不同。在第3层中实施的一种非常著名的协议实例就是IP。

图2-4 OSI 参考模型

那么MPLS放置在哪儿合适呢?MPLS不是第2层的协议,因为在第2层进行封装的时候,报文已经粘连好标签了。当然MPLS也不是第3层的协议,因为在第3层也有特定的协议存在。所以,MPLS并不能很好地匹配OSI的层次。也许最简单的理解是MPLS属于第2.5层,并且以第2.5层为基础进行实施。

标签交换路由器(LSR)是一台支持MPLS的路由器。它能够理解MPLS标签,并且在数据链路上接收和传输带标签的报文。在MPLS网络中,存在以下3种类型的LSR:

入站LSR——入站LSR接收尚未打上标签的报文,在报文前端插入标签(或者标签栈)以后再将该报文发送到数据链路中去;

出站LSR——出站LSR接收带标签的报文,在移除标签(或者多个标签)以后再将该报文发送到数据链路中去。入站和出站LSR都是边缘LSR;

链路中LSR——链路中间LSR接收到带标签的报文后,对其进行操作,然后再将该报文按正确的数据链路交换和发送出去。

LSR可以执行3种操作:提取、添加和交换。

在将报文转发出去之前必须要能够提取出一个或者多个标签(即从标签栈的顶部移除一个或多个标签)。LSR还必须要能够向接收到的报文中添加一个或者多个标签。如果接收到的标签已经粘连了标签的话,LSR 会向其标签栈中添加一个或者多个标签以后再将该报文转发出去。如果接收到的报文尚未粘连标签,LSR 将创建一个标签栈,并且添加于报文之中。当然 LSR 还需要能够交换标签。简单地说,就是当接收到一个粘连了标签的报文时,用新的标签交换标签栈顶部的标签,然后再将该报文转发到数据链路中去。

如果 LSR 向一个尚未粘连标签的报文添加标签的话,这个 LSR 就是一个强行添加LSR,因为它是第一个向报文添加标签的 LSR。这是入站 LSR 不能不执行的工作。如果LSR 在将带标签的报文转发出去之前移除所有标签的话,这个 LSR 就是移除 LSR。出站LSR执行移除全部标签的工作。

在 MPLS VPN 的环境中(见第 7 章),入站和出站 LSR 就是提供商边缘(PE)路由器。链路中 LSR 就是提供商内部(P)路由器。术语 PE 和P 在 MPLS 网络没有运行 MPLS VPN的时候也经常被使用。

标签交换路径(LSP)是LSR在MPLS网络,或者部分MPLS网络中转发带标签报文后的产物。实际上,LSP是报文在穿越MPLS网络,或者部分MPLS网络时的路径。一条LSP中的第一台LSR是入站LSR,而LSP中最后一台LSR是出站LSR。所有在入站和出站LSR之间的LSR都是链路中LSR。

在图2-5中,因为LSP是单向的,所以用顶上的箭头说明了方向。那么在相同的LSR之间的另一个方向上带标签的报文流——从右到左——就应该是另一条LSP。

图2-5 在MPLS网络中的一条LSP

入站LSR并不一定是LSP上的第一台为报文打标签的路由器。因为报文可能在经过之前的LSP的时候已经粘连了标签。嵌套的LSP就是一个很好的例子——即,一条LSP在另一条LSP内部。在图2-6中,你可以看到有一条LSP穿越了整个MPLS网络。另外有一条LSP从第3台LSR开始,到倒数第2台LSR结束。因此,当报文进入第二条LSP的入站LSR(也就是说第3台LSR)时,就已经粘连了标签。嵌套的LSP中的入站LSR随后将会给报文加上第二个标签。这样一来,在第二条LSP中该报文的标签栈就有了两个标签。其中顶上的标签属于嵌套LSP,底部的标签属于贯穿整个MPLS网络的LSP。在第 8 章将会看到一个关于嵌套 LSP 的例子。备份流量工程(TE)隧道就是一个嵌套LSP的实例。

图2-6 嵌套LSP

转发等价类(FEC)是一组或者一系列沿相同路径转发的,且都按照相同的规则执行的数据流。所有属于同一个FEC的报文都拥有相同的标签。但是,并不是所有拥有相同标签的报文都属于同一个FEC,因为这些报文的EXP值可能不相同;执行方式可能不相同,所以它们可能属于不同的FEC。决定哪个报文属于哪一个FEC的路由器是入站LSR。因为是入站LSR对报文进行分类和添加标签,所以这是很有逻辑的。下面是一些FEC的范例:

第3层目的IP地址匹配了同一特定前缀的报文;

属于某特定组的组播报文;

根据进程或者IP区分服务代码点(DSCP)字段,有相同的执行方式的报文;

MPLS 网络中,在入站 LSR 的同一条 VC 或者(子)接口收到,并且在出站 LSR的同一条VC或者(子)接口转发出去的第2层数据帧;

第3层目的IP地址属于同一系列的边界网关协议(BGP)前缀,并且其BGP下一跳都相同的报文。

最后一个关于FEC的例子特别有意思。所有在入站LSR上的目的IP地址指向路由表中同一系列的BGP路由——拥有相同的BGP下一跳地址——的报文属于同一个FEC。这个例子说明所有进入 MPLS 网络的报文获得标签的途径都是根据 BGP 的下一跳。图 2-7显示了一个MPLS网络,在该网络中,所有的边缘LSR都运行内部BGP(iBGP)协议。

所有进入入站LSR的报文的目的IP地址都会在IP转发表中被查找。所有这些地址都属于一系列的前缀,而这些前缀都以 BGP 前缀的身份存在于路由表中。路由表中的很多BGP前缀都拥有相同的BGP下一跳地址,即某个出站LSR的地址。所有目的IP地址属于路由表中同一个BGP下一跳地址的报文都将会被映射到同一个FEC中。如同已经提及的一样,所有属于同一个FEC的报文都将会被入站LSR加上相同的标签。

图2-7 运行iBGP的MPLS网络

报文的第一个标签由入站LSR加上去,而该标签属于一条LSP。报文穿越MPLS网络的路径被限制在一条LSP中。所有的改变只不过是在每一跳中交换标签栈中顶部的标签。入站LSR给报文加上一个或者多个标签。而链路中LSR将接收到的带标签报文的顶部标签(入站时的标签)交换为另一个标签(出站时的标签),然后从外出链路将报文转发出去。LSP中的出站LSR将该LSP的标签全部移除,然后将报文转发出去。

考虑IPv4环境中运行二维MPLS的实例,这是MPLS网络中最为简单的例子。IPv4的二维MPLS网络包括运行了IPv4内部网关协议(IGP)的LSR(比如说,开放式最短路径优先[OSPF]、中间系统到中间系统[IS-IS],以及增强的内部网关路由协议[EIGRP])。入站查找报文的目的IPv4地址,添加标签,然后将该报文进行转发。下一个LSR(以及每一台链路中LSR)收到带标签的报文后,用出站标签交换入站标签,然后转发该报文。而出站LSR将标签移除,然后将不带标签的IPv4报文从出站链路转发出去。要能这样工作,邻接的LSR必须对每一个IGP前缀所使用的标签达成共识。因此,每一台链路中LSR必须明确哪一个出站标签用来交换哪一个入站标签。也就是说,需要有一种机制来告诉路由器用什么标签来转发报文。标签对邻接的LSR来说是本地有效的。在整个网络中,标签没有全局意义。要让邻接的LSR对哪一个前缀使用哪一个标签达成共识的话,它们之间需要一些交流;否则,路由器之间就不可能了解到用哪一个出站标签去交换哪一个入站标签。所以需要有一种标签分发协议。

你可以通过下面两种方式来分发标签:

在已存在的IP路由协议中分发标签;

使用一种独立的协议来分发标签。

第一种方法的优势在于不需要在LSR上再运行一种新的协议,但是每一种已存在的IP路由协议需要被扩展来运载标签。这并不总是一件很简单的事情。用路由协议来运载标签的最大优势在于选择路由和标签分发总是同步的,这就表示如果前缀信息丢失的话,就没有标签了,反之亦然。这样做,同时也不需要在LSR运行另外一种协议来分发标签。该技术在距离矢量路由协议(比如说EIGRP)中的实施是很简单的,因为每一台路由器已知的前缀都是来自于自身的路由表。路由器只需要将标签捆绑于某个前缀就可以了。

链路状态路由协议(比如说IS-IS和OSPF)的操作就不像这样。每一台路由器生成链路状态更新,并将该更新不做修改地传递给同区域的所有路由器。问题是要MPLS工作正常,每一台路由器都需要为每一个IGP前缀分发标签——就算某前缀并不是该路由器所起源的。链路状态路由协议需要被增强来通过插入的方式才能实现该功能。事实上,让路由器通告并非自身起源前缀的标签是违背链路状态路由协议的工作模式的。因此,对于链路状态路由协议来说,最好使用专门的独立协议来分发标签。

没有任何一种IGP被修改来实施这第一种方法。然而,BGP这个路由协议就能够同时传递前缀和分发标签。但是,BGP毕竟不是IGP,它是用来传递外部前缀的。BGP最主要的是用来在 MPLS VPN 网络中进行标签分发的,请阅读第 7 章中的相关内容。

第二种方法——运行一种独立专用的协议用于标签分发——其优势在于可以不影响路由协议的工作。无论是哪一种IP路由协议,也不管该协议是否有分发标签的能力,专用的协议用于分发标签,而路由协议传递前缀。这种方法的劣势就是需要在LSR上运行一种新的协议。

对所有路由器的厂商而言,都情愿选择一种新的标签分发协议来为IGP前缀分发标签。这就是标签分发协议(LDP)。然而,并不是只有LDP这一种协议才能分发MPLS标签。

下面是一些分发标签的协议:

标记分发协议(TDP);

标签分发协议(LDP);

资源预留协议(RSVP)。

TDP,后来被LDP所取代,是Cisco开发并实施的第一种标签分发协议。但是,TDP是Cisco专有的。IETF随后提出了LDP。LDP和TDP的操作十分类似,但是LDP的功能比TDP更广泛。随着Cisco的IOS版本开始对LDP的支持,LDP越来越广泛地被使用,导致TDP很快就被LDP所代替。这就形成了TDP的过时和陈旧。因此,本书后面章节只涉及LDP。

用 RSVP 分发标签只被 MPLS TE 所使用。要获得更多关于 MPLS TE 的信息,以及RSVP如何进行标签分发,请参阅第8章。LDP将在第4章中详细说明。

对IP路由表中的每一条IGP的IP前缀来说,每一台LSR都会进行本地捆绑,也就是说,为IPv4前缀捆绑标签。然后LSR再将该捆绑的标签分发给所有LSP邻居。这些接收到的标签转换为远程标签。之后邻居将该远程和本地标签存储于一张特殊的表中,这张表就是标签信息库(LIB)。如果标签空间是基于每一台设备的话,那么每一台 LSR 中的每一个前缀都只捆绑一个本地标签。如果标签空间是基于每个接口的,那么可以在每一个接口上为每一个前缀捆绑一个本地标签。因此,可以是每一个前缀一个标签,也可以是每一个接口每一个前缀一个标签,但是LSR会拥有多个远程标签,因为通常一台LSR会有多个邻接的LSR。

注释:基于一台设备和基于一个接口的标签空间的区别将在2.10节中进行解释。

在所有捆绑某一前缀的远程标签中,LSR只需要使用其中一个标签来确定该前缀的出站标签。路由表(有时候也被称为路由实例库,或者RIB)用来确定IPv4前缀的下一跳是什么。而LSR从下游LSR收到的远程标签中选择其路由表中到达该前缀的下一跳的标签。LSR用这样的信息来创建它自己的标签转发信息库(LFIB),在LFIB中,本地捆绑的标签被作为入站标签,通过路由表选择的远程捆绑标签中的一个作为出站标签。因此,当一台LSR收到一个带标签的报文以后,它就有能力将为自己分配的入站标签交换为其邻接的下一跳LSR分配的出站标签了。图2-8说明了在LSR之间通过LDP通告的关于IPv4前缀10.0.0.0/8的捆绑标签。每一台LSR分配一个标签给每一个IPv4前缀。本地捆绑的标签就是自己为该前缀分配的标签。

图2-8 一个运行了LDP的基于MPLS的IPv4网络

图2-9说明了IPv4的报文——目的为10.0.0.0/8——从入站LSR进入MPLS网络,在那里被添加了标签129以后转发给下一跳LSR。第二台LSR将入站的标签129交换为出站的标签17以后再将该报文转发给第3台LSR。第3台LSR再将入站标签17交换为出站标签33,然后再将该报文转发给下一台LSR,依此类推。

图2-9 一个运行了LDP的基于MPLS的IPv4网络:报文交换

注释:在Cisco的IOS中,LDP不会为BGP的IPv4前缀捆绑标签。

LFIB 这张表用来转发带标签的报文。它是由 LSP 中的入站和出站标签所构成的。入站标签是由LSR在本地捆绑的。出站标签是由LSR从所有可能的远程捆绑标签中选择出来的。所有这些远程捆绑标签都可以在LIB中找到。LFIB只会在LIB中所有的远程捆绑标签中选择一个可能的出站标签放入 LFIB 中。远程标签的选择根据在路由表中找出的最优路径确定。

在基于MPLS的IPv4这个实例中,标签就限制为一个IPv4前缀。然而,构成LFIB的标签可以不是LDP所分配的。在MPLS的流量工程中,使用RSVP分发标签。在MPLS VPN中,VPN标签由BGP分发。在任何情况下,LFIB总是用来转发入站的带标签的报文的。

MPLS的标签没有网络层协议标识字段。该字段出现在了第2层帧中来标识第3层使用的是什么协议。那么 LSR 是如何知道在标签栈背后使用的是什么协议呢?或者换句话说,LSR是如何知道 MPLS的有效负载是什么呢?大多数的LSR并不需要知道这个,因为它们接收的是带标签的报文,只需要交换顶部的标签,然后将该报文从出站链路发送出去就可以了。这种工作是链路中LSR或者P路由器要做的。

链路中LSR不需要知道MPLS的有效负载是什么,因为转发报文需要的所有信息都在顶部标签中。如果标签栈包含了不止一个的标签的话,那么顶部标签下面的标签就不是该LSR分配的标签了,以至于链路中LSR无法得知那些标签代表什么。此外,LSR可能也不需要知道被传输的MPLS负载是什么。因为链路中LSR仅仅查看顶部标签就可以做出转发决策,所以这并不是问题。为了让控制报文转发的顶部标签正确,链路中LSR必须对顶部标签有本地和远程标签的捆绑。

出站LSR要移除报文前端的所有标签,它必须要知道MPLS的有效负载是什么,因为它以后必须要转发这个MPLS有效负载。出站LSR必须要了解位于出站数据帧中的网络层协议标识字段的具体数值。出站LSR只需要进行本地标签捆绑,也就是说为FEC分配一个本地标签,以用作报文的入站标签。因此,出站LSR可以通过该标签来了解MPLS有效负载是什么,因为是出站LSR创建的针对某FEC的标签捆绑,所以它知道是具体的哪一个FEC。

在图 2-10 中,LSR A 为 FEC 1 通告了标签 L1 到 LSR B,并且为 FEC 2 通告了标签 L1到 LSR C,唯一条件是 LSR A 可以区分带有标签 L1 的报文是从哪一个 LSR 接收到的。在该实例中,LSR B 和 LSR C 都通过点到点链路正确地连接到了 LSR A 以后,添加标签的工作可以很容易通过在LSR上实施MPLS来实现。事实上,标签L1的名字(数值)对于整个标签范围来说,只在每一个接口上有唯一性:这就是基于接口的标签空间。如果使用基于每一个接口的标签空间的话,报文的转发就不能单单根据标签,而应该同时根据入站接口和标签。

图2-10 基于每个接口的标签空间

另外一种可能性是标签并非在每一个接口唯一,而是在整个LSR中来分配标签的。这被称为基于每台设备的标签空间。在这种情况下,LSR A 为 FEC 1 通告标签 L1 到 LSR B和 C,如图 2-11 所示。当 LSR A 为 FEC 2 通告标签的时候,这个标签就必须不能再是标签L1。如果使用基于每台设备的标签空间的话,报文的转发就纯粹根据标签,而和入站接口没有关系了。

图2-11 基于每台设备的标签空间

在Cisco的IOS中,所有标签交换控制的ATM(LC-ATM)接口都采用基于接口的标签空间,而所有帧模式的ATM以及非ATM接口都采用基于每台设备的标签空间。第5章将对LC-ATM接口进行深入讨论。

LSR在向其他LSR分发标签的时候可以通过不同的模式。这一节解释了以下3种不同的模式:

标签分发模式;

标签保持模式;

LSP 控制模式。

每一种模式都有其自身的特性。本节将逐一解释各自的优势。

MPLS体系架构中有以下两种分发捆绑标签的模式:

下游被动(DoD)分发标签模式;

下游主动(UD)分发标签模式。

在DoD模式中,每一台LSR都会向其LSP中的下一跳(也就是下游)LSR请求捆绑于某特定FEC的标签。每一台LSR只会从它的下游LSR那里为每一个FEC接收到一个捆绑标签。所谓下游路由器就是在IP路由表中的下一跳路由器。

在UD模式中,每一台LSR主动向其邻接的LSR分发捆绑的标签,而不需要其他的LSR来请求标签。在UD模式中,LSR会从其每一个邻接的LSR那里收到一个远程捆绑的标签。

在DoD的环境中,LIB只显示一个远程捆绑的标签,而在UD的环境中,你可以看到很多标签。标签分发模式的选择是根据接口以及实施操作的。在Cisco的IOS中,所有接口——除了LC-ATM接口——都使用UD模式来分发标签。所有LC-ATM接口都使用DoD模式来分发标签。

有以下两种标签保持模式可供选择:

自由的标签保留(LLR)模式;

保守的标签保留(CLR)模式。

在LLR模式中,LSR将所有收到的远程捆绑标签保存在LIB中。每一个特定的FEC总会有一个从下游或者下一跳接收到远程捆绑的标签与之匹配。被使用的远程捆绑标签会被保存到LFIB中,但是不可能会有其他未被使用的远程捆绑标签被转移到LFIB中;因此,也就不会被用来转发报文。那么为什么不使用的标签还要保留呢?因为网络中的路由是动态的。在任意时刻,路由拓扑都可能发生变化——比如说,由于某条链路断了,或者某台路由器被拿走了——因此,就可能改变某个FEC的下一跳路由器。这个时候,新的下一跳路由器的标签已经存在于LIB中的话,LFIB就可以非常迅速地更新到新的出站标签。

第二种标签保持模式是CLR模式。运行这种模式的LSR不会在LIB中保存任何远程捆绑标签,除了为特定的FEC使用的与下一跳LSR关联的远程捆绑标签以外。

简而言之,LLR 模式能很快适应路由的变化,而 CLR 模式只需要保留很少的标签,提高了路由器内存的可用性。在Cisco的IOS中,LC-ATM接口的保留模式是CLR模式。其他所有的接口类型都使用LLR模式。

LSR可以通过以下两种途径为FEC创建本地标签捆绑:

独立于LSP的控制模式;

非独立于LSP的控制模式。

LSR可以独立于其他的LSR创建本地标签捆绑。这种方式被称为独立于LSP的控制模式。在这种控制模式中,每一台LSR一旦发现一个FEC,就会为其创建一个本地捆绑标签。通常,该行为发生在发现路由表中存在某FEC前缀的时候。

在非独立于LSP的控制模式中,LSR只会在它意识到它是某FEC的出站LSR,或者该LSR从其下一跳接收到某FEC的标签绑定的时候,才会为特定FEC创建本地捆绑标签。

独立于LSP的控制的缺点,在于一些LSR会在LSP还未端到端创建完成之前就开始标记要转发的报文了,这样一来,这些报文就不能被正确地转发。如果LSP没有创建完成,报文不可能在任何地方接收到正确的转发规则,甚至将会被丢弃。对于这两种控制方式的实例,你可以想象以LDP为分发协议来为IGP前缀捆绑标签的情况。如果LSR运行的是独立于LSP的控制模式,它可以为路由表中的每一个IGP前缀分配一个本地捆绑的标签。如果 LSR 运行的是非独立于 LSP 的控制模式的话,它只能为在其路由表中标记为连接状态的IGP前缀分配一个本地捆绑的标签,并且此时该LSR应该已经从它的下一跳路由器(路由表中记录的)收到了一个捆绑的标签才行。Cisco的IOS使用独立于LSP的控制模式。运行 Cisco IOS 的 ATM 交换机默认情况下使用非独立于 LSP 的控制模式。

在本章中,你已经了解了什么是标签,以及标签可以放置在标签栈中。标签栈位于被传输报文的前端。如果被传输的报文是IP报文的话,标签栈就应该位于第2层头部之后, IP头部之前。

你还看到了标签在MPLS网络中的每一个LSR上被交换,即提供标签交换。一系列按照顺序的LSR构成了一条标签交换路径(LSP)。一个转发等价类(FEC)是在MPLS网络中应用相同转发规则的数据报文流。FEC是通过标签栈以及标签中的EXP字段所确定的。在MPLS网络中,需要在LSR之间使用一种分发协议来分发标签。

本章简单解释了标签信息库(LIB)和标签转发信息库(LFIB)的区别,以及它们的作用。LIB 是一种用于存放捆绑标签的表,而 LFIB 是在转发带标签报文的时候用来查找的表。

本章还解释了不同的MPLS模式:下游主动(UD)和下游被动(DoD)的标签分发,自由的标签保留(LLR)和保守的标签保留(CLR),最后还解释了独立于 LSP 的控制和非独立于LSP的控制。

1.列举出一个标签中的4个字段。

2.标签栈中可以驻放多少个标签?

3.在OSI参考模型中,MPLS属于哪一层?

4.LSR使用哪一张表来转发带标签的报文?

5.在Cisco的IOS中,哪一种接口类型使用下游被动的标签分发模式和基于每个接口的标签空间?

6.为什么MPLS标签需要生存周期(TTL)字段?

在阅读完本章后,你将能够:

解释带标签的报文是如何被转发的;

保留的MPLS标签名称,以及它们的作用;

确定MPLS MTU在MPLS网络中的重要性;

解释在当TTL值归0时,带标签报文的工作;

解释需要被分段的带标签报文的工作。

图书在版编目(CIP)数据

MPLS技术构架/(美)格茵(Ghein,L.)著;陈麒帆译. -- 北京:人民邮电出版社,2012.5

ISBN 978-7-115-27829-6

Ⅰ.①M… Ⅱ.①格…②陈… Ⅲ.①宽带综合业务数字网 Ⅳ.①TN915.142

中国版本图书馆CIP数据核字(2012)第046909号

版权声明

MPLS Fundamentals ( ISBN: 1587051974 )

Copyright©2007 Cisco Systems, Inc.

Authorized translation from the English language edition published by Cisco Press.

All rights reserved.

本书中文简体字版由美国 Cisco Press 授权人民邮电出版社出版。未经出版者书面许可,对本书任何部分不得以任何方式复制或抄袭。

版权所有,侵权必究。

MPLS技术构架

◆著 [美]Luc De Ghein CCIE #1897

译 陈麒帆 CCIE #15116

责任编辑 傅道坤

◆人民邮电出版社出版发行  北京市崇文区夕照寺街14号

邮编 100061  电子邮件 ciscobooks@ptpress.com.cn

网址 http://www.ptpress.com.cn

大厂聚鑫印刷有限责任公司印刷

◆开本:800×1000 1/16

印张:34.75

字数:818千字  2012年5月第1版

印数:1–3000册  2012年5月河北第1次印刷

著作权合同登记号图字:01-2012-2888号

ISBN 978-7-115-27829-6

定价:79.00元

读者服务热线:(010)67132705 印装质量热线:(010)67129223

反盗版热线:(010)67171154

相关图书

Web应用安全
Web应用安全
企业“IPv6+”网络规划设计与演进
企业“IPv6+”网络规划设计与演进
“IPv6+”网络技术创新:构筑数字经济发展基石
“IPv6+”网络技术创新:构筑数字经济发展基石
社交网络对齐
社交网络对齐
华为HCIA路由交换认证指南
华为HCIA路由交换认证指南
非常网管 IPv6网络部署实战
非常网管 IPv6网络部署实战

相关文章

相关课程