Skip to main content

MPLS Ping/Tracert (MPLS Echo)报文

协议栈结构

MPLS Echo消息封装在IPv4/IPv6的UDP报文中,可能还带有MPLS标签。MPLS Echo使用的UDP端口号为3503(这是IANA为MPLS Echo请求所定义的值),只有使能MPLS的路由器才能够识别该端口号。

MPLS Ping/Tracert (MPLS Echo)报文封装
+---------------------------------------+
|             MPLS Echo PDU             |
+---------------------------------------+
|               UDP header             |
+---------------------------------------+
|           IPv4/IPv6 header           |
+---------------------------------------+
| One or more MPLS headers (Optional) |
+---------------------------------------+
|           Link layer header         |
+---------------------------------------+
|         Physical layer header         |
+---------------------------------------+

MPLS Echo消息分为两种:Echo请求消息和Echo回应消息。

MPLS Echo请求消息中,源IP地址为发送端的IP地址,目的IP是个127/8网段的IPv4地址或者0:0:0:0:0:FFFF:127/104网段的IPv6地址;IP TTL设置为1。UDP源端口号为发送端自行选择的端口号,目的端口号设置为3503。IP头必须携带Router Alert选项并置位。

MPLS Echo请求消息携带了待测试的FEC所对应的标签栈。

在MPLS Ping中,最外层标签的TTL值设置为255;MPLS Tracert中,最外层标签的TTL值分别设置为1、2、3……。MPLS LSP Traceroute和传统的Traceroute类似,通过连续发送一个TTL步进为1的Echo Request报文,让LSP沿途的每一个LSR都收到TTL超时的Echo Request报文,同时回送一个携带下游信息(可选)以及相应返回码的Echo Reply给发送者。这样发送者就会得到该LSP沿途每一个节点的信息。

MPLS Ping/Tracert (MPLS Echo)报文

MPLS LSP Ping/Tracert通过发送MPLS Echo消息实现。

MPLS LSP Echo报文格式
+0--------------7--------------15--------------23-------------31
|       Version Number         |         Must Be Zero         |
+--------------------------------------------------------------+
| Message Type | Reply mode |   Return Code | Return subcode|
+--------------------------------------------------------------+
|                     Sender's Handle                         |
+--------------------------------------------------------------+
|                     Sequence Number                         |
+--------------------------------------------------------------+
|                     Timestamp(Sent seconds)                 |
+--------------------------------------------------------------+
|                     Timestamp(Sent microseconds)           |
+--------------------------------------------------------------+
|                     Timestamp(Received seconds)             |
+--------------------------------------------------------------+
|                     Timestamp(Received microseconds)       |
+--------------------------------------------------------------+
|                     TLVs(...)                               |
+--------------------------------------------------------------+
MPLS LSP Echo报文字段含义
字段 长度 含义
Version Number 2B 标识MPLS Echo的版本号,目前为1。
Must Be Zero 2B 必须填全0,接收时忽略。.
Message Type 1B 标识该MPLS Echo消息的类型:1: MPLS Echo请求消息2: MPLS Echo响应消息
Reply mode 1B 指示Reply Router采用什么方式回应这个消息: 1: Do Not Reply 2: Reply via an IPv4 UDP Packet 3: Reply via an IPv4 UDP packet with Router Alert
Return Code 1B 发送端设置为0,接收端可以设置详见Return Code(摘自RFC 4379):
Return subcode 1B 该字段包含了标签栈的处理结束的指针。如果其值为0,标识报文没有携带标签,不需要处理标签。否则,报文携带了标签。
Sender's Handle 4B 发送者句柄,是用来标识一个MPLS Echo的,其值是在应用程序发送一个MPLS Echo Request时随机生成的。单次的LSP Ping操作可以产生多个Echo Request,但是这些Echo Request所包含的Sender’s Handle的值是相同,即单次LSP Ping操作仅能产生一个Sender’s Handle的Echo Request。
Sequence Number 4B 序列号,用来标识MPLS Echo的,它是一个进程的概念,进程内有效,可以用来检测丢失的Reply的个数,从而可以对网络进行延时和抖动统计。单次LSP Ping操作可以产生多个Sequence Number,其值一般从零开始逐一递增。
Timestamp 4B 时间戳,采用NTP协议的时间格式,包含两部分:收到的时间戳和发送时间戳;可以用来计算报文从一个节点到另一个节点所需要花费的时间。
TLVs 可变 TLV (Type, Length, Value),类型值及对应的含义详见MPLS LSP Echo TLV Code(摘自RFC 4379):, Length: Value字段的长度,以字节为计数单位。Value: 取决于Type的取值,如果TLV不足4字节的整数倍,需要填充。
Return Code
Code 类型 含义
0 No return code  
1 Malformed Echo Request Received  
2 One Or More of the TLVs Was Not Understood  
3 Replying Router Is an Egress for the FEC at stack-depth <RSC>  
4 Replying Router Has No Mapping for the FEC at stack-depth <RSC>  
5 Downstream Mapping Mismatch  
6 Upstream Interface Index Unknown  
7 Reserved  
MPLS LSP Echo TLV Code
Code 类型 含义
1 Target FEC Stack TLV  
2 Downstream mapping TLV  
3 PAD TLV  
4 Error Code TLV  
5 Vendor Enterprise Code TLV  

TLV (Type, Length, Value),类型值及对应的含义详见MPLS LSP Echo TLV Code(摘自RFC 4379):, Length: Value字段的长度,以字节为计数单位。Value: 取决于Type的取值,如果TLV不足4字节的整数倍,需要填充。

参考标准

标准 描述
RFC 4379 Detecting Multi-Protocol Label Switched (MPLS) Data Plane Failures
RFC 4377 Operations and Management (OAM) Requirements for Multi-Protocol Label Switched (MPLS) Networks
RFC 5085 Pseudowire Virtual Circuit Connectivity Verification (VCCV): A Control Channel for Pseudowires
RFC 4447 Pseudowire Setup and Maintenance Using the Label Distribution Protocol (LDP)