code学习

MPLS转发过程的表项及作用

作者:平静如水的温柔

MPLS 的转发平面和控制平面。

(1)控制平面,负责产生和维护路由信息以及标签信息。

1 RIB:用于选择最优路由

2 LDP:负责标签的分配、标签转发信息表的建立,标签交换路径的建立、 拆除等工作

3 LIB:由标签分发协议生成,存放 FEC 和标签的对应关系

(2)转发平面也叫数据平面,负责普通 IP 报文的转发以及带 MPLS 标签报文的转发

1 FIB:转发信息库,根据 IP 路由表生成,用于决定 IP 数据包是否能带标签进行转发。属于硬件转发表

2 LFIB:标签转发信息库,由 ILM(入标签映射表)与 NHFLE(下一跳标签转发表项)关联形成,根据相关的标签发放协议(LDP,MP-BGP 等)生成。属于硬件转发表

MPLS转发过程的表项及作用

控制平面是无连接的,主要功能是负责标签的分配、标签转发表的建立、标签交换路径的建立、拆除等工作。

· 转发平面也称为数据平面(Data Plane),是面向连接的,可以使用 ATM、帧中继、Ethernet 等二层网络。转发平面的主要功能是对 IP 包进行标签的添加和删除,同时依据标签转发表对收到的分组进行转发。

MPLS 转发流程如何?

当 IP 报文进入 MPLS 域时,首先查看 FIB 表,检查目的 IP 地址对应的 Tunnel ID 值是否为 0x0。

如果 Tunnel ID 值为 0x0,则进入正常的 IP 转发流程。

· 如果 Tunnel ID 值不为 0x0,则进入 MPLS 转发流程。

MPLS 转发流程如图所示

MPLS转发过程的表项及作用

在报文转发过程中:

1. 在 Ingress,通过查询 FIB 表和 NHLFE 表指导报文的转发。

2. 在 Transit,通过查询 ILM 表和 NHLFE 表指导 MPLS 报文的转发。

3. 在 Egress,通过查询 ILM 表指导 MPLS 报文的转发。

在 MPLS 转发过程中,FIB、ILM 和 NHLFE 表项实际上是通过 Tunnel ID 中的 Token 字段关联的。

· Ingress 的处理 Ingress 节点的处理如下:

1. 查看 FIB 表,根据目的 IP 地址找到对应的 Tunnel ID。

2. 根据 FIB 表的 Tunnel ID 找到对应的 NHLFE 表项,将 FIB 表项和 NHLFE 表项关联起来。

3. 查看 NHLFE 表项,可以得到出接口、下一跳、出标签和标签操作类型,标签操作类型为 Push。

4. 在 IP 分组报文中压入获得的标签,并根据 QoS 策略处理 EXP,同时处理 TTL,然后将封装好的 MPLS 分组报文发送给下一跳。·

Transit 的处理 Transit 节点收到 MPLS 报文后的处理:

1. 根据 MPLS 的标签值查看对应的 ILM 表,可以得到 Token。

2. 根据 ILM 表的 Token 找到对应的 NHLFE 表项。

3. 查看 NHLFE 表项,可以得到出接口、下一跳、出标签和标签操作类型。

4. MPLS 报文的处理方式根据不同的标签值而不同。

· 如果标签值>=16,则用新标签替换 MPLS 分组报文中的旧标签,同时处理EXP 和 TTL,然后将替换完标签的 MPLS 分组报文发送给下一跳。

· 如果标签值为 3,则直接弹出标签,同时处理 EXP 和 TTL,然后进行 IP转发或下一层标签转发。

· Egress 的处理

Egress 节点收到 MPLS 报文后,查看 ILM 表获得标签操作类型,同时处理 EXP 和 TTL。

如果标签中的 S=1,表明该标签是栈底标签,直接进行 IP 转发。

§ 如果标签中的 S=0,表明还有下一层标签,继续进行下一层标签转发。

举例描述 MPLS 报文的基本转发过程

以支持 PHP 的 LSP 为例,说明 MPLS 报文的基本转发过程。

MPLS转发过程的表项及作用

如图 ,MPLS 建立了一条 LSP,其目的地址为 3.3.3.3/32。则 MPLS 报文基本转发过程如下:

1. Ingress 节点收到目的地址为 3.3.3.3/32 的 IP 报文,添加标签 Z 并转发。

2. Transit 节点收到该标签报文,进行标签交换,将标签 Z 弹出,换成标签 Y。

3. 倒数第二跳 Transit 节点收到带标签 Y 的报文。因 Egress 分给它的标签值为 3,进行PHP 操作,弹出标签 Y 并转发报文。从倒数第二跳到 Egress 之间报文以 IP 报文形式传输。

4. Egress 节点收到该 IP 报文,将其转发给目的地 3.3.3.3/32。