在第1章中,本书介绍了 MPLS 的整体架构及基本概念。本章将会着重讲述这一特定应用:即在纯路由器环境下基于目的的单播 IP 路由(也称帧模式 MPLS,这是 因为在这种环境中,打上标签的数据包会作为第2层的数据帧来进行交换)。第3章则会重点介绍在 ATM 环境下基于目的的单播 IP 路由(也称信元模式 MPLS,这是因为在这种环境中,打上标签的数据包会作为 ATM 信元来进行交换)。
本章首先介绍的内容是 MPLS 数据层,在介绍这一部分的内容时,我们会假定路由器之间已经完成了标签的协商。接下来,本章会详细介绍用于在路由器之间转发标签的机制。在这一章的最后,还会介绍服务提供商网络中,标签转发协议与内部网关协议(IGP)、边界网关协议(BGP)之间的交互方式。
图 2-1 和图 2-2 提供的信息会 贯穿这一章的始终:图 2-1 所示为 MPLS 标签交换路由器(LSR)的一般 架构;而图 2-2 提供的服务提供商(叫做 SuperNet)拓扑则是本章所有配置和排错信息的范例网络。
在 SuperNet 服务提供商网络中使用了基于环回接口的无编号串行链路,这些接口的 IP 地址如表 2-1 所示。
表 2-1
| 路由器 | 环回接口 |
| 圣何赛 | 172.16.1.1/32 |
| 山景城 | 172.16.1.2/32 |
| 圣克拉拉 | 172.16.1.3/32 |
| 旧金山 | 172.16.1.4/32 |
| 达拉斯 | 172.16.2.1/32 |
| 华盛顿 | 172.16.3.1/32 |
| 纽约 | 172.16.3.2/32 |
| MAE-East | 172.16.4.1/32 |


第1章中简要介绍了 IP 数据包穿越 MPLS 骨干网的转发情况,在这一过程中有三个主要步骤。
图 2-3 所示为上述步骤在范例服提供商网络 SupetNet 中的执行过程。在这个例子中,数据包从圣何赛 POP 进入网络,并最终到达与纽约 POP 相连的客户,在此过程中,访数据包会穿越这一网络。

圣何赛 POP 路由器收到了一个目的地址为 192.168.2.2 的 IP 数据包,并通过 IP 转发表(也称为转发信息库[FIB])执行传统的第3层查找工作。注释:鉴于 Cisco快速转发(CEF)是唯一使用 FIB 表的第3层交换机制,因此必须 在所有运行 MPLS 的路由器上启用 CEF,而且所有接收未打标 IP 数据包,并将这些数据包作为打标数据包来进行传输的入站接口,也必须支持 CEF 交换。核心路由器并不执行 CEF 交换 ---- 它们只负责交换已经打上了标签的数据包 ---- 但为了进行标签分配,也必须在这些路由器上全局启用 CEF。
FIB 条目(见例 2-1) 表示圣何赛 POP 路由器应该将它刚刚收到的 IP 数据包作为打标数据包进行转发。因此,圣何赛路由在将数据包转发给旧金山路由器之前 ,会为它粘贴上标签“30”,这就引出了第一个问题,这个标签应该添加在哪里,而旧金山路由器又怎么知道自己收到的数据包是一个打了标签的数据包,而不是一个目标纯 IP 数据包呢?

在实现帧模式的 MPLS 架构时,MPLS 标签必须在打标数据的开始,这样做的理由有很多,其中之一是确保交换的性能。因此,MPLS 标签放在了二层帧的第 2 层头部和第 3 层内容之间,如图 2-4 所示。

由于 MPLS 标签被置于第 3 层数据包和第 2 层头部之间,因此 MPLS 标签头部也称为填充头部(shim header)。MPLS 标签头部(详见图 2-5)中包含 MPLS 标签(20 比特)、服务类别信息(3比特,这一部分在 IETF MPLS 文档中也称为实验比特位[experimental bits])、8比特生存时间(TTL)字段(在环路检测方面,这部分的功能和 IP TTL 字段相同)和 1 比特的栈底(Bottom-of-Stack)位。

在第 1 章中将 MPLS 标签栈定义为在一个数据包上粘贴的,由两个以上的 标签头部所构成的组合,而栈底(Bottom-of-Stack)位的作用就是实现这种标签栈的设计。简单的单播 IP 路由并不会用到标签栈,但是其他的一些 MPLS 应用,包括基于 MPLS 的虚拟专用网或者 MPLS 流量工程,则在很大程度上老板娘依赖标签栈技术。
MPLS 标签栈头部被放在了第 2 层头部和第 3 层载荷之间,现在发送它的路由器必须通过某种方式告诉接收方路由器,这个发送的数据包并非一个纯 IP 数据报文,而是一个打上了标签的数据包(即一个 MPLS 报文)。要实现这个功能,要实现这个功能,必须在第 2 层之上定义如下 新的协议类型。
注释:若想了解更多关于在非 MPLS WAN 媒介上传递 MPLS 的具体内容,请见第 4 章。
图 2-6 所示为所有 MPLS 封装方式的汇总。
图 2-3 中的例子中,圣何赛路由器在其刚刚收到的 IP 数据包开头部分粘贴上 MPLS 标签,接着,它将这个打上了标签的数据包封装进一个 PPP 帧中,访帧 PPP 协议字段值为 8281。最后,路由器把这个帧转发给旧金山路由器。

在收到圣何赛路由器发来的二层 PPP 帧之后 ,旧金山路由器会立刻通过数据帧的 PPP 协议字段值判断出是一个带标签的数据包 ,于是路由器会在自己的标签转发信息库(LFIB)中进行标签查找。注释:在过去的 Cisco 文档中,LFIB 也 称为标记转发信息库(TFIB,Tag Forwarding Information Base)。
通过与标签 30 (见例 2-2)相对应的 LFIB 条目,旧金山路由器将标签 30 替换为出站标签 28,然后把数据包转发给华盛顿路由器。

带有标签的数据包遵循同样的转发原则被路由器进行转发,穿越 SuperNet 骨干网,并到达纽约 POP。在纽约 POP 中的 LFIB 条目告诉路由器,它需要移除这个数据包的标签并将不带有标签的数据包转发出去(见例 2-3)


运行 Cisco IOS 软件,并在帧模式 MPLS 环境中充当 MPLS LSR 的路由器能够对带有标签的数据包执行以下一系列的操作。