MPLS Ping&MPLS Tracert

在MPLS网络中,如果通过LSP转发数据失败,负责建立LSP的MPLS控制平面将无法检测到这种错误,加大了网络维护的难度,MPLS Ping/MPLS Tracert为用户提供了发现LSP错误、并及时定位失效节点的机制;
MPLS Ping主要用于检查网络连接及主机是否可达,MPLS Tracert在检查网络连接以及主机是否可达的同时,还可以分析网络什么地方发生了故障,类似于普通IP的Ping/Tracert,MPLS Ping/MPLS Tracert使用MPLS回显请求报文(Echo Request)和MPLS回显应答报文(Echo Reply)检测LSP的可用性,这两种消息都以UDP报文格式发送,其中回显请求报文的UDP端口号为3503,该端口号只有使用MPLS功能的设备才能识别;
MPLS Echo Request中携带需要检测的FEC信息,和其他属于此FEC的报文一样沿LSP发送,从而实现对LSP的检测,MPLS回显请求报文通过MPLS转发给目的端,而MPLS回显应答报文则通过IP转发给源端,另外为了防止LSP断路时Echo Request进行IP转发,从而保证LSP的连通性测试,将Echo Request消息的IP头中目的地址设置为127.0.0.1/8(本地环回地址)IP头中的TTL值为1;

MPLS Ping
如下图所示,RA上建立了一条目的地为RD的LSP,从RA对该LSP进行MPLS Ping时的处理如下:
HuaWei ❀ MPLS Ping&MPLS Tracert_堆栈

  • RA查找该LSP是否存在(对于TE隧道,查找Tunnel接口是否存在且CR-LSP是否建立成功)如果不存在,返回错误信息,停止Ping,如果存在,则继续进行以下操作;
  • RA构造MPLS Echo Request报文,IP头中的目的地址为127.0.0.1/8,IP头中的TTL值为1,同时将4.4.4.4填入Echo Request报文中的目的FEC堆栈中,然后查找相应的LSP,压入LSP的标签,将报文发送给RB;
  • 中间节点RB和RC对MPLS Echo Request报文进行普通MPLS转发,如果中间节点MPLS转发失败,则中间节点返回带有错误码的MPLS Echo Reply报文;
  • 当MPLS转发路径无故障,则MPLS Echo Request报文到达LSP的出节点RD,然后检查目的的FEC堆栈中包含的目的地址4.4.4.4是否为自己的loopback接口地址,以此来确认RD是该FEC的真正出口后,返回正确的MPLS Echo Reply报文,至此整个MPLS Ping过程结束;

MPLS Tracert
如上图所示,从RA对4.4.4.4/32进行MPLS Tracert时的处理如下:

  • RA检查LSP是否存在(对于TE隧道,查找Tunnel接口是否存在且CR-LSP是否建立成功)如果不存在,返回错误信息,停止Tracert,否则继续进行如下处理;
  • RA构造MPLS Echo Request报文,IP头中的目的地址为127.0.0.1/8,同时将4.4.4.4填入Echo Request报文中的目的FEC堆栈中,然后查找相应的LSP,压入LSP的标签并且将TTL值设置为1,将报文发送给RB,此Echo Request报文中包含Downstream Mapping TLV(用来携带LSP在当前节点的下游信息,主要包括下一跳地址、出标签等);
  • RB收到RA发送来的报文后,将Echo Request中TTL减1为0发现TTL值超时,然后RB需要检测是否存在该LSP,同时检查报文中Downstream Mapping TLV的下一跳地址、出标签是否正确,如果两项检查都为真,返回正确的MPLS Echo Reply报文,并且报文中必须携带RB本身包含下一跳和出标签的Downstream Mapping TLV给RA,如果检查不为真,则返回错误的MPLS Echo Reply报文;
  • RA收到正确的MPLS Echo Reply报文后再次发送MPLS Echo Request报文,报文的封装方式跟步骤2类似,只是将LSP标签的TTL值设置为2,此时的Echo Request报文中的Downstream Mapping TLV是从Echo Reply报文中复制过来的,然后RB收到该报文后进行普通MPLS转发,RC收到报文后,标签的TTL值超时,同步骤3处理方式后返回MPLS Echo Reply报文;
  • RA收到正确的MPLS Echo Reply报文后重复步骤4,增加TTL值,复制Downstream Mapping TLV后发送MPLS Echo Request报文,RB和RC对该报文进行普通MPLS转发,RD收发此报文,重复步骤3处理方式对报文进行处理,以此来发现已经是该LSP的出节点,因此返回不带下游信息的MPLS Echo Reply报文,至此整个MPLS Tracert过程结束;