WOLF-LAB沃尔夫网络实验室中国网络精英的发源地!
24小时咨询热线:173-1636-2402

技术文档

Technical documentation

您当前位置: 首页 > 技术文档 > 详情

HCIE Datacom理论讲解技术分享-MPLS基本转发过程详解

发布日期:2022-04-27 浏览次数:1997 来源:崔志鹏

HCIE Datacom理论讲解技术分享-MPLS基本转发过程详解

HCIE培训技术编辑:WOLF-LAB沃尔夫网络实验室崔志鹏

HCIE Datacom资料联系网站客服获取


在MPLS基本转发过程中涉及的相关概念如下:

MPLS转发的过程中涉及到的转发动作

  • Push:压入

如果看到in-lable是null,out-lable有数值就是push。

为什么是入节点完成:静态LSP因为入节点是转发等价类的分类设备,只有入节点才知道打上什么样的标签。

  • Swap:交换

如果看到in-lable有数值,out-lable也有数值就是swap。

  • Pop:剥离
    如果看到in-lable有数值,out-lable=3或者是null就是标签弹出。
    默认情况下,设备支持PHP特性,支持PHP的Egress节点分配给倒数第二跳节点的标签值为3。

 

什么是PHP?

1651040462397612.png

倒数第二跳弹出

 

PHP的好处?

@没有PHP,出节点就会执行两次查表动作,首先要查标签表将标签剥离,然后再查路由表转发报文。有了PHP,出节点路由器相当于这条LSP的最后一跳路由器,就向上游邻居发送一个3的标签,告诉上游我是倒数第一跳;

@倒数第二跳路由器发现出标签是3,直接将顶部标签剥离,倒数第一跳收到的就是纯IP报文,此时倒数第一跳路由器仅需查路由表转发就行了,无需执行两次查表;

 

注意:

@倒数第二跳路由器不需要查路由表,只执行弹出标签的动作,所以PHP并没有增加倒数第二跳路由器的负担;

@静态LSP没法PHP,因为静态LSP可以配置的标签为下图:

1651040493819366.png

@LDP默认使用PHP;

 

基本转发过程

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

图1 MPLS基本转发过程

1651040530215711.png

图1,MPLS标签已分发完成,建立了一条LSP,其目的地址为4.4.4.2/32。则MPLS基本转发过程如下:

  1. Ingress节点收到目的地址为4.4.4.2的IP报文,压入标签Z并转发。

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

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

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

 

MPLS详细转发过程

基本概念

在MPLS详细转发过程中涉及的相关概念如下:

  • Tunnel ID
    为了给使用隧道的上层应用(如VPN、路由管理)提供统一的接口,系统自动为隧道分配了一个ID,也称为Tunnel ID。该Tunnel ID的长度为32比特,只是本地有效。

  • NHLFE
    下一跳标签转发表项NHLFE(Next Hop Label Forwarding Entry)用于指导MPLS报文的转发。
    NHLFE包括:Tunnel ID、出接口、下一跳、出标签、标签操作类型等信息。
    FEC到一组NHLFE的映射称为FTN(FEC-to-NHLFE)。通过查看FIB表中Tunnel ID值不为0x0的表项,能够获得FTN的详细信息。FTN只在Ingress存在。

  • ILM
    入标签到一组下一跳标签转发表项的映射称为入标签映射ILM(Incoming Label Map)。
    ILM包括:Tunnel ID、入标签、入接口、标签操作类型等信息。
    ILM在Transit节点的作用是将标签和NHLFE绑定。通过标签索引ILM表,就相当于使用目的IP地址查询FIB,能够得到所有的标签转发信息。

1651040561959413.png

MPLS详细转发过程如图2所示。

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

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

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

在MPLS转发过程中,FIB、ILM和NHLFE表项是通过Tunnel ID关联的。

  • Ingress的处理:通过查询FIB表和NHLFE表指导报文的转发。

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

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

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

    4. 在IP报文中压入出标签,同时处理TTL,然后将封装好的MPLS报文发送给下一跳。

  • Transit的处理:通过查询ILM表和NHLFE表指导MPLS报文的转发。

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

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

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

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

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

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

  • Egress的处理:通过查询ILM表指导MPLS报文的转发或查询路由表指导IP报文转发。

    • 如果Egress收到IP报文,则查看路由表,进行IP转发。

    • 如果Egress收到MPLS报文,则查看ILM表获得标签操作类型,同时处理TTL。

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

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

注意:每一个FEC本地的对应的tunnel-id是唯一的


HCIE Datacom理论,联系WOLF-LAB网站客服预约免费试听

返回目录
在线咨询