二、帧模式 MPLS 操作

目录

2.1 帧模式 MPLS 数据层操作

2.1.1  MPLS 标签栈头部

2.1.2  帧模式 MPLS 的标签交换

2.2 帧模式 MPLS 的标签绑定和转发

2.2.1 LDP/TDP 会议的建立

2.2.2 标签的绑定与分发

2.2.3 帧模式 MPLS 网络的收敛

2.3  倒数第二跳弹出(PHP,Penultimate Hop Popping)

2.4 MPLS 与边界网关协议(BGP)的互动

2.5 总结


        在第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

服务提供商SuperNet网络中的环回地址
路由器环回接口
圣何赛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-East172.16.4.1/32

 

2.1 帧模式 MPLS 数据层操作

         第1章中简要介绍了 IP 数据包穿越 MPLS 骨干网的转发情况,在这一过程中有三个主要步骤。

  • 入方向上的边界 LSR 收到一个 IP 数据包,将该数据包分类进一个 FEC(转发等价类),并根据 FEC 为数据包粘贴上一个出站标签栈。对基于目的的单播 IP 路由来说,为数据包选择 FEC 是根据目的子网进行的,也就是说,分类数据包就是在转发表中执行传统的第3层查找工作。
  • 核心 LSR 收到带有标签的数据包,并使用标签转发表来根据同样的 FEC (在这个例子中是根据 IP 子网)将入站数据包的入站标签替换为出站标签。
  • 当这一特定 FEC 的出方向边界 LSR 收到了这个带有标签的数据包,它会将标签移除,并为这个移除了标签的 IP 数据包执行传统的第3层查找工作。

 图 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 数据包呢?

 

2.1.1  MPLS 标签栈头部

       在实现帧模式的  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 层之上定义如下 新的协议类型。

  •  在 LAN 环境中,带有标签的数据包使用以太网类型值为 0x8847 和 0x8848 携带单播和多播第 3 层数据包。这些以太网类型值可以直接用于以太网媒介(包括 Fast Ethernet 和 Gigabit Ethernet)以及其他 LAN 媒介的 SNAP 头部。
  • 在点到点链路中使用 PPP 协议进行封装时,有一种新的网络控制协议(NCP),这种协议叫做 MPLS 控制 协议(MPLSCP)。MPLS 数据包以 PPP 协议字段值 8281 进行标记。
  • 通过帧中继 DLCI 在两台路由器之间传输的 MPLS 数据包会被 封装上一个 SNAP 头部,这个头部所使用的以太网类型值与 LAN 环境下使用的值相同。

        注释:若想了解更多关于在非 MPLS WAN 媒介上传递 MPLS 的具体内容,请见第 4 章。

图 2-6 所示为所有 MPLS 封装方式的汇总。

图 2-3 中的例子中,圣何赛路由器在其刚刚收到的 IP 数据包开头部分粘贴上 MPLS 标签,接着,它将这个打上了标签的数据包封装进一个 PPP 帧中,访帧 PPP 协议字段值为 8281。最后,路由器把这个帧转发给旧金山路由器。

2.1.2  帧模式 MPLS 的标签交换

         在收到圣何赛路由器发来的二层 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 的路由器能够对带有标签的数据包执行以下一系列的操作。

  • Pop tag (弹出标记) ----- 移除 MPLS 标签栈中最顶部的标签并将其余部分作为带有标签的数据包(若栈底比特位为0)或者作为不带有标签的数据包(LFIB中的Tag Stack字段为空)转发出去
  • Swap tag(交换标记)----- 将 MPLS 标签栈中顶部的标签替换为另一个值(LFIB 中的 Tag Stack 字段长度为一个标签)。
  • Push tag(压入标记)----- 用一系列标签替换 MPLS 标签栈中最顶部的标签(FLIB 中的Tag Stack 字段包含多个标签)。
  • Aggregate(聚集)----- 移除 MPLS 标签栈最顶部的标签并对去除了这个标签之后 的 IP 数据包执行第 3 层查找 。被移除的标签应是 MPLS 标签栈最底部的标签,否则,设备就会删除这个数据包。
  • Untag ----- 移除 MPLS 标签栈最顶部的标签并将去除了这个标签之后的IP 数据包转发给特定的下一跳设备。被移除的标签应是 MPLS 标签栈最底部的标签,否则,设备就会删除这个数据包 。

带有标签栈的 MPLS 标签交换

        无论带有标签的数据包所携带的是一个标签,还是一个由多标签构成的标签栈,标签交换操作都会以同样的方式来执行。不管属于哪种情况,执行标签交换的 LSR 都只会对标签栈顶部的数据包进行操作,并且忽略其余的标签。于是,边缘路由器之间就可以协商数据包的分类,并以此对标签进行关联,而核心路由器则无需了解相关的协商信息,这一功能催生了大量 MPLS 的应用。

        比如,假设 SuperNet 网络中的圣何赛路由器和纽约路由器都支持基于 MPLS 的 VPN,并且它们已经通过协商确定,为网络10.1.0.0/16 分配的标签值是 73, 而网络 10.1.0.0/16 对于纽约路由器来说是可达的。但 SuperNet 网络的核心路由器(即旧金山和华盛顿)并不了解这些内容。

        当数据包的目的地是 10.1.0.0/16  时,圣何塞路由器就会建立一个标签栈。标签栈底部的标签已经和纽约路由器经过协商达成了一致,而标签顶部的标签则被分配上了纽约路由器的 IP 地址,为标签分配这个 IP 地址地址是旧金山路由器。当网络发送这个数据包时(见图 2-7),顶部标签的交换过程和纯 IP 数据包通过骨干进行转发的例子完全一样,而二级标签则会原原本本地到达纽约路由器。

2.2 帧模式 MPLS 的标签绑定和转发

在前面的章节中,本书介绍了使用成帧接口(LAN、点到点链路或 WAN 虚链路)在 LSR 之间转发标签数据包的必要机制。在这一部分中,我们主要讲述如何在 LSR 之间通过成帧接口将 FEC 与标签进行绑定以及分发。

        Cisco IOS 软件有两种标签绑定协议可以用来将 IP 子网和 MPLS 标签进行关联,并以此实现基于目的的单播路由。

  • 标记分发协议(TDP)----- Cisco 私有协议,可以在 IOS 软件 11.1 CT、12.0 及后续版本中使用
  • 标签分发协议(LDP)----- IETF 标准的标签绑定协议,可以在 12.2 T 版本中使用。

TDP 和 LDP 的功能相同,并且可以在同一网络中并存,甚至可以同时存在于同一 LSR 的不同接口上。鉴于它们的功能是相同的,这一部分将只对 TDP 的调式和监测命令进行介绍。

        要为单播 IP 数据包启用 MPLS 数据包打标技术,并在接口上关联协议,要使用表 2-2 中的命令。

任务IOS 命令
启动MPLS数据包打标技术,并在相应接口上运行TDPtag-switching ip
在相应接口上启动MPLS数据包打标技术。TDP是默认的标签分发协议,注意:这条命令与命令tag-switching ip 作用相同mpls ip
在相应接口上选择标签分发协议Mpls label-distribution[ldp|tdp|both]

2.2.1 LDP/TDP 会议的建立

        当管理员在路由器的第一人接口上启动了 MPLS 时,TDP/LDP 进程就开始了,标签信息库(LIB)的结构也会同时被创建出来。这台路由器在会以发送 TDP hello 数据包的方式,试着在其运行 MPLS 的接口发现其他的 LSR 。TDP hello 数据包会以广播或多播的形式进行分发,发现  LSR 邻居的过程是自动完成的。命令 debug tap tdp transport 可以用来监测 TDP hello 数据包。例2-4 所示为 TDP 启动过程,例 2-5 所示为 TDP 邻接关系成功建立的状态。注释:在支持 LDP 的 IOS 版本中,命令 debug mpls 替换了原本的命令 debug tag。

        还存在这种情况,当邻接 LSR 想要和上文中提到的 LSR 建立 LDP 或 TDP 会话,但是连接这两台设备的接口却由于安全性或其他管理方面的考虑而没有配置 MPLS。在这种情况下,调试输出信息与例 2-6 所示的输出信息类似,这种输出信息表明,由于收到hello 数据包的接口没有配置 MPLS,因此这个 hello 数据包被设备忽略了。

        当 TDP hello 进程发现了一个 TDP 邻居之后 ,设备就会和这个邻居建立起 TDP 会话。 TDP 会话运行在约定端口 TCP 711 上,而 LDP 使用的则是 TCP 646 端口。TCP 在这里充当的是传输协议(与 BGP 类似),它可以确保信息发现的可靠性。将 TCP 用作底层的传输协议还使管理员可以在控制流量、对接口拥塞状况进行调整时更加轻松。

        例 2-7 所示为 TDP 会话的建立。

        在建立了 TDP 会议之后 ,TDP keepalive 数据包就会持续对其进行监测,以确保这个会话可以正常使用。例 2-8 所示为 TDP keepalive 数据包 。

         还可以使用命令 show tag tdp neighbor 来监测 TDP 邻居以及单个 TDP 会话的状态,如例 2-9 所示。这个例子中的输出信息说明圣何塞路由器目前只有一个 TDP 邻居,那就是旧金山路由器。

 这条命令显示了本地的远端路由器的 TDP 标识符(TDP identifier)、TCP 连接两端的 IP 地址及 TCP 端口号、连接的开始时间、发现 TDP 邻居的接口,以及 TCP 邻居所使用的所有接口的 IP 地址。注释:TDP 标记符的遴选方式和 OSPF 或 BGP 标记符相同(在没有使用命令 tag tdp route-id 进行控制 的情况下)----- 即选择所有环回接口地址中最高的 IP 地址。如果路由器上没有配置任何环回接口地址,设备就会选择 TDP 进程启用,所有可用接口的地址中,最高的 IP 地址作为 TDP 标识符。充当 TCP 标识符的 IP 地址必须 是邻接 LSR 可达的地址。否则,TDP/LDP 会话就无法建立 起来。

2.2.2 标签的绑定与分发

        一旦路由器创建了标签信息库(LIB),标签就会分配给所有路由器已知的转发等价类。对于基于目的的单播路由而言,FEC 就等同于 IP 路由表中的 IGP 前缀。因此,标签会分配给 IP 路由表的第个前缀,而它们的绑定信息则储存在 LIB中。注释:IP 路由表中的 BGP 路由不会得到分配的标签。BGP 路由会使用与去往 BGP 下一跳的内部路由相同的标签。想了解更多关于 MPLS/BGP 集成的信息,请见这一章后文中的 “MPLS 与边界网关协议(BGP)的互动” 部分。

         LIB 会始终 与 IGP 路由保持同步 ----- 每当一条新的非 BGP 路由出现在了  IGP 路由表中,设备都会为这条路由分配一个新的标签来与这条路由绑定。命令 show tag tdp bindings 可以显示子网与标签的绑定信息,例 2-10 所示为输出 的实例。

由于每当有前缀出现在路由表中时, LSR 都会为其路由表中的这个新 IP前缀分配一个标签,而其他 LSR 可以使用标签来向分配这些标签的 LSR 发送打上了标签的数据包,因此这种标签分配和标签分发方式就被称为独立控制 的标签分配,和主动提供的下游标签分发。

  •  路由器在进行标签分配的时候,不考虑自己是否已经从一跳路由器收到过前缀对应的标签。因此 ,路由器的标签分配称为独立控制 。
  • 说分发是主动提供的,是因为 LSR 在分配标签,并向上游邻居通告绑定信息的时候,不考虑其他LSR 是否需要这个标签。这种按需分配属于另一种可能性。也就是说,在另一种情况下,LSR 只有在收到请求时,才为 IP 前缀分配标签并将它分发给上游的邻居。这种情况的与心理每位评委本书将在第 3 章进行讨论。
  • 当 LSR 分配的标签可以被 其他 LSR 用来向其邻居转发打上了标签的数据包 以及转发绑定信息时,这种分发方式是下游的。原始的标记交换架构也可以提供上游标签分发功能,但是,无论当前的标记交换操作还是 MPLS 的架构 都不需要这样的分发方式。

        所有的标签绑定信息都会立刻通过 TDP 会话通告给其他路由器。这种通告信息也可以通过调试命令来进行查看,如例 2-11 所示。这里显示的输出信息,是在去往192.168.2.0/24 路由器通过 IGP 从纽约被转发到旧金山,并进入旧金山 LSR 路由表之后,从旧金山路由器上截取的输出信息。

        正如上面输出信息所显示的那样,旧金山路由器向其所有的邻居通告了它的 IP 前缀和标签的绑定信息,不管它们是上游设备还是下游设备。不仅如此,绑定信息还发送给下一跳路由器,由此可知 TDP 或 LDP 没有水平分割(split-horizon)进程。

        邻接的 LSR 会接收这些前缀到标签的绑定信息,并将这些信息储存在自己的 LIB中,如果 绑定信息是从自己的下游邻居那里收到的,邻接 LSR 还会在自己的  FIB 或 LFIB 中使用这些信息,所谓下游路由器也就是一该 FEC 的下一跳设备。这种储存方式叫做自由保留方式(liberal retention mode),它与保守保留方式(conservation retention mode)相对,在第二种模式下,LSR 仅保留其当前下游路由器分配给前缀 的标签。注释:这 3 路标签分配参数有多种组合方式(主动提供的分发与按需的分发;独立的控制 和有序的控制;自由的保留方式和保守的保留方式),但运行 Cisco IOS 软件 的路由器在帧模式 MPLS 接口所使用的,始终是主动提供的分发、独立的控制和自由的保留方式。这种固定的参数设置不应阻碍路由器通过 LDP 与使用不同默认组合方式的其他设备交互信息。对于哪些组合可以正常工作,哪些则无法正常工作的详细内容,请参考 IETF LDP 文档。 

        命令 show tag-switching tdp bindings 可以显示所有由路由器或其 TDP 邻居创建的标签绑定信息。例 2-12 所显示的是旧金山路由器对 IP 前缀 192.168.2.0/24 使用这条命令的输出结果 。

        路由器有可能从多个邻居处收到 TDP 绑定信息,但是却只在其转发表中使用其中的几个,如下所示:

  • 从下一跳设备收到的标签绑定信息会进入相应的 FIB 条目。若路由器没有从下一跳路由器收到标签绑定消息,FIB 条目会指示设备将去往相应目的的数据包 以不打标签的方式进行发送。
  • 如果路由器从下一跳路由器收到了标签绑定消息,本地标签和下一跳标签就会进入 LFIB。如果下一跳路由器没有为相应前缀分配标签,那么 LFIB 中的离开动作就是不打标签。例 2-13 显示 了两种情况。注释:若路由器没有从下一跳路由器那里收到某个特定 IP 前缀绑定的标签,同时这个前缀既不是一个直接相连的接口,也不是一条汇总路由,那么路由器就会将这个前缀标记为不打标(Unlabeled)。如果这条路由是直接路由或汇总路由,那么路由器还需要执行一次第 3 层查找 ,并且由于倒数第二跳弹出(Penultimate Hop Popping) 机制,路由器会为这个前缀分配一空标签。倒数第二跳弹出机制将在下一部分中进行介绍。

 

2.2.3 帧模式 MPLS 网络的收敛

        在 MPLS 网络设计中,最为关键的一点就是网络的收敛时间。对于有些 MPLS 应用来说,只有打上标签的数据包始终从入站方向的边缘LSR 进入网络,并从出站方向的边缘 LSR 离开网络时,这些应用才能正常工作。对于这类应用来说,当核心网络出现 故障时,内部网关协议(IGP)所需要的收敛时间会因标签转发延迟时间的增加而增加。

        在帧模式 MPLS 网络中,使用自己保留模式、独立标签控制 和主动提供的下游标签分发的的这种组合方式,可以将 TDP/LDP 收敛延迟降到最低。每一台使用自己保留模式的路由器都会从它的 TDP/LDP 邻居那里收到对于某一特定前缀的标签分配方式,因此,在路由表收敛之后 ,这类路由器总是可以找到正常的出站标签,而无需向它的下一跳路由器询问标签的分配方式。注释:不过,只有当链路出现故障的时候,TDP/LDP 才会快速收敛。在链路重新建立时,IGP 邻接关系的建立 和 IGP 的收敛通常会早于 TDP 邻接关系的建立和标签的交换,这时,带有标签的数据包会暂时不能得到转发,直到标签交换之后 ,这类数据包的转发才能正常进行。

        下面几个例子,将以 SuperNet 网络发生故障(华盛顿和旧金山之间的链路断开)为背景,来显示快速收敛的过程。这些例子的研究重点是去往网络 192.168.100.2/32 的路由,该网络与纽约路由器直接相连。

        在初始状态下,show 命令的输出信息(见例 2-14)说明目标路由目前可以通过接口 Serial0/0/1 和下一跳 172.16.3.1 到达。

        随着链路的断开,设备会旋即对 LFIB 进行扫描,并清空所有将失效接口作为出站接口的条目(见例 2-15)。

 

        设备会将失效的接口从路由中表清除,与之相关的路由条目也会从路由表中得到清除。由于妆前 没有去往192.168.100.2/32 的等价路由,这条路由会从路由表中彻底移除,与其关联的条目也会被清除出 LFIB(见例 2-16) 。

         有一条通过达拉斯路由器去往192.168.100.2 路由充当了替代路由。OSFP 进程会立刻将这条替代路由放进路由表中,设备会生成相应的 CEF 和 LFIB 条目,LFIB 条目将 172.16.2.1(即达拉斯路由器)分配的标签作为了自己的出站标签。在没有和任何 TDP/LDP 设备邻居进行任何 TDP/LDP 操作的情况下,设备就拥有了一条新的 LFIB 条目(见例 2-17)

        最后一步,设备将所有来自不可达 TDP 邻居 172.16.3.1(即华盛顿路由器)的条目统统从信息库中清除出去(见例 2-18)。

2.3  倒数第二跳弹出(PHP,Penultimate Hop Popping)

        在从 MPLS 邻居那里接收到去往 MPLS 网络外部子网的数据包 时,MPLS 网络中出站方向的边缘LSR 也许需要执行再次查找工作。它必须监控标签栈头部的标签,并执行标签查找 ,以发现标签需要被弹出,而且标签下面的 IP 数据包需要接受监控。这台设备还必须在将 IP数据包转发给它的最终目的之前 对它执行一次第 3 层查找 工作。图 2-8 所示为 SuperNet 网络中的相应过程。

        纽约  POP 吊卡上的双重查找有可能 会降低这个节点的性能。而且,在MPLS 和 IP 交换都要依赖硬件来实现的环境中,如果 设备需要执行双重查找就会大大增加硬件实施的难度。为了解决这两个问题,MPLS 架构中引入 了倒数第二跳弹出机制。

注释: 倒数第二跳弹出只用于直接的子网和汇总的路由。在直接接口情况下,对于为需要发送给直接目的地的数据包 ,有必要执行第 3 层查找 来为其获得关于下一跳的正确信息。在前缀是汇总路由的情况下,同样有必要执行第 3 层查找来获得更加具体的路由,然后才能使用这条路由来将数据包发送给正确的下一跳设备。然后在其他情况下,在 LFIB 中可以找到第 2 层的出站数据包信息,因此执行第3 层查找是没有必要的,数据包可以进行标签交换。

         由于拥有 PHP 这项技术,边缘 LSR 可以请求其上游的路由器执行弹出标签的操作。在下图的 SuperNet 网络中,华盛顿路由器执行了标签的弹出工作(图 2-9 第四步)将将纯 IP 数据包发送给了纽约路由器。而后 ,纽约路由器只需执行第 3 层查找工作并将数据包转发给它的目的地即可。

 

        PHP 需要通过 TDP 或 LDP 的特定标签值 (在 TDP 中是 1,在 LDP 中是 3) 来进行请求,这也被称为隐含空值(implicit null)。

        当出站 LSR 为一个 IP 前缀 请求 PHP 时,出站 LSR 的本地 LIB 条目及其上游 LSR 的远程 LIB 条目都会被设为 imp-null 值 (见例 2-19),而倒数第二跳 LSR 的 LFIB 条目则要求设备执行标记弹出操作(见例 2-20)。

2.4 MPLS 与边界网关协议(BGP)的互动

        在本章前面的 “标签的绑定与分发” 部分中,我们已经知道一台 LSR 路由器 IP 路由表的每个 IP 前缀都会被分配一个标签,唯一的例外就是通过边界网关协议(BGP)学来的路由。没有标签会被分配给这样的路由,边界 LSR 会使用分配给 BGP 下一跳的标签来标记去往 BGP 目的地的数据包 。

        为了主清楚这种现象,我们假设 SuperNet 网络中的 MAE-East 路由器从自治系统 4635 中的一台路由器那里收到了一条去往 192.168.3.0 的路由。这条路由在整个 SuperNet 网络中都进行了转发,而 AS4635 中的 MAE-East 路由器则是 BGP 的下一跳。在查看圣何塞路由器中的 BGP 表和相应和 FIB 条目时,可以看到用来标记 BGP 目的和 BGP 下一跳的标签(28)是相同的(见例 2-21)。

         这种 MPLS、IGP、BGP 之间的互动,可以为网络设计师提供一种设计网络的全新方式。在传统意义上,在服务提供商核心网络的每一台路由器上都必须 运行 BGP,只有这样才能实现数据包的转发。比如说,从 MAE-East 发送的 BGP 信息必须转发给 SuperNet 网络中的第一台核心路由器(即华盛顿、达拉斯和旧金山),若非如此,核心路由器就无法将数据包路由到正确的 BGP 目的地,如图 2-10 所示。

         不过,假如 SuperNet 网络运行了 MPLS,那么圣何塞路由器就会将数据包作为打标数据包发送到 BGP 目的地,而它使用的标签是关联给 BGP 下一跳的标签。因为当网络正常动作时,BGP 下一跳总会发布在 IGP 中,因此所有中间路由器的 LFIB 中必须对于这一目的地址拥有从入站到出站 的标签绑定信息,并且必须将一定带有标签的数据包发往出口 LSR(MAE-East),而这些中间路由器无需运行BGP。图 2-11所示为整个过程。

        从服务提供商网络的核心路由中清除 BGP 进程有如下好处。

  • 由于在 Internet 中,核心路由器不会再出现路由翻动的情况,核心路由器的路由表会因此大为稳定
  • 由于核心路由器无需再储存 Internet 路由信息(大约 70000 ~ 80000 条路由,这些路由条目会消耗路由器 20 ~ 40 MB的内存),因此对核心路由器的内存要求会相应降低。
  • 由于核心路由器需要再进行 BGP 更新,因此核心路由器 CPU 处理器的利用率会大大降低。

因此,即使是在一个完全基于路由器的服务提供商骨干网络环境中,部署 MPLS 也是一种非常明智的选择。第 13 章会进一步讨论从服务提供商网络核心中清除 BGP 的相关内容,以及这样做 -----尤其是在 VPN 环境中这样做 ---- 可以带来的优势。

2.5 总结

         本章讨论了 MPLS 在接口上执行的操作,在接口上,打上了标签的数据包会被封装进一下二层帧中(帧模式 MPLS 的操作)。

        标签交换路由器(LSR)使用标签分发协议(LDP,IETF标准)或标记分发协议(TDP,Cisco 私有标准)来交换 IP 前缀与标签之间的绑定信息。标签信息库(LIB,也称为标记信息库[TIB])用来储存这些绑定信息,这些绑定信息会用来在入站边缘 LSR 上建立 转发信息库(FIB)的条目,同时也用来在各个 MPLS 节点上建立 标签转发信息库(LFIB,也称为标记转发信息库[TFIB])。Cisco IOS 同时支持这两种标签分发协议,这两种协议也可以同时用于同一个网络中,甚至可以用在同一个 LSR 的不同的接口上。

        接口配置命令 tag-switching ip 或 mpls ip 用于在帧模式接口上启用 MPLS。在支持LDP的 IOS 版本中,必须 使用命令 mpls label-distribution 来选择必要的 标签分发协议。这些命令用来在特定接口上启动 TDP 或 LDP 协议。通过 UDP 数据包的方式往广播或多播地址发送 TDP/LDP hello 消息,TDP/LDP 可以找到连接在同一个子网上的 LSR 。在发现了相邻的 LSR 之后 ,LSR 之间就会建立起 TDP/LDP 会话,会话的建立会使用 TCP 作为传输协议,以确保标签绑定消息能够以可靠的方式进行发送。

        即使 LSR 还没有从自己的下游邻居那里收到相应的标签,只要 IP 前缀出现在路由表中时, IOS 就会将标签分配给这些接口,这就是 IOS 实现帧模式 LSR 接口的方式。这是因为只要需要,LSR 就可以执行第 3 层查找 。由此可知,路由器是工作在独立控制 的分配模式下,这和有序控制 的分配模式相对,在第二种模式中,只有当下游标签已经存在于路由器的 LIB中时,设备才会为这些前缀分配相应的标签。

        在通过帧模式接口运行 MPLS 时,Cisco 路由器会立刻为它的 LDP/TDP 邻居分配标签。这种分发方式叫做主动提供的上游分发,它和按需提供的下游发分方式相对,在第二方式中,上游路由器需要明确地向下游路由器询问特定的标签。

        充当LSR 的Cisco路由器都会储存所有从它们 TDP/LDP 邻居那里收到的标签绑定信息。这种储存方式叫做自由保留模式,该模式与保守保留模式相对,在第二模式下,LSR 只储存从它下一跳下游路由器那里收到的标签。自由保留模式内存的要求更高,但是当网络出现故障时,这种模式可以使用 TDP/LDP 在路由协议收敛之后立刻实现收敛。

        当 MPLS 网络中的 LSR 实现了标签绑定信息的交换之后 ,入站方向的 LSR 就可以为入站数据 包打标了。入站 LSR 会在数据包 的第 2 层头部和 IP 头部之间插入一个标签栈头部。对于基于目的的单播路由,标签栈头部往往只包含一个标签,但 MPLS 同样支持其他 MPLS 应用会使用到的标签栈,这些应用包括流量工程或虚拟专用网等。通过 LAN 媒介的以太网类型码和不同的 PPP 协议字段值 ,设备可以区分出一个数据包是否被打上了标签。

        网络设计师一般仅将 MPLS 看做是一项能够无缝粘合IP 路由器和 ATM 交换机的技术,或者一个支持一些附加应用的技术,如 MPLS 流程工程或 MPLS/VPN。这些网络的设计者往往没有意识到,在任何以 BGP 作为外部路由协议的网络中部署 MPLS 可以大大地简化网络架构 。在运行 BGP 的网络部署 MPLS 使 BGP 可以从核心路由器(即非边缘 LSR)中清除出去,这会使网络变得更加稳定,还可以降低核心路由器需要的内存,而且由于核心路由器不需要再处理 BGP 的更新,因此这样做还可以防止核心路由器出现 CPU 利用率过高的情况。

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值