MPLS LSP Ping/Tracert通过发送MPLS Echo消息实现。MPLS Echo消息使用IPv4/IPv6的UDP协议封装,UDP端口为3503,只有使能MPLS的路由器才能够识别该端口号。
MPLS LSP Traceroute和传统的Traceroute类似,通过连续发送一个TTL步进为1的Echo Request报文,让LSP沿途的每一个LSR都会收到TTL超时的Echo Request报文,同时回送一个携带下游信息(可选)以及相应返回码的Echo Reply给发送者。这样发送者就会得到该LSP沿途每一个节点的信息。
字段 | 长度 | 含义 |
Version Number | 2字节 | 标识MPLS Echo的版本号,目前为1。 |
Must Be Zero | 2字节 | 必须填全0,接收时忽略。. |
Message Type | 1字节 | 标识该MPLS Echo消息的类型:- 1: MPLS Echo请求消息
- 2: MPLS Echo响应消息
|
Reply mode | 1字节 | 指示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 | 1字节 | 发送端设置为0,接收端可以设置为如下值之一:- 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
|
Return subcode | 1字节 | Return Subcode字段包含了标签栈的处理结束的指针。如果Return subcode值为0,标识报文没有携带标签,不需要处理标签。否则,报文携带了标签。 |
Sender's Handle | 4字节 | 发送者句柄,是用来标识一个MPLS Echo的,其值是在应用程序发送一个MPLS Echo Request时随机生成的。单次的LSP Ping操作可以产生多个Echo Request,但是这些Echo Request所包含的Sender’s Handle的值是相同,即单次LSP Ping操作仅能产生一个Sender’s Handle的Echo Request。 |
Sequence Number | 4字节 | 序列号,Sequence Number同样是用来标识MPLS Echo的,它是一个进程的概念,进程内有效,可以用来检测丢失的Reply的个数,从而可以对网络进行延时和抖动统计。单次LSP Ping操作可以产生多个Sequence Number,其值一般从零开始逐一递增。 |
Timestamp | 4字节 | 时间戳,采用NTP协议的时间格式,包含两部分:收到的时间戳和发送时间戳;可以用来计算报文从一个节点到另一个节点所需要花费的时间。 |
TLVs | 可变 | TLV (Type, Length, Value):- Type = 1: Target FEC Stack TLV
- Type = 2: Downstream mapping TLV
- Type = 3: PAD TLV
- Type = 4: Error Code TLV
- Type = 5: Vendor Enterprise Code TLV
Length: Value字段的长度,字节为计数单位。 Value: 取决于Type的取值,如果TLV不足4字节的整数倍,需要填充。 |