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沿途每一个节点的信息。
MPLS Echo消息封装在IPv4/IPv6的UDP报文中,可能还带有MPLS标签。MPLS Echo消息中,UDP负载的格式如下:
字段 | 长度 | 含义 |
---|---|---|
Version Number | 2字节 | 标识MPLS Echo的版本号,目前为1。 |
Must Be Zero | 2字节 | 必须填全0,接收时忽略。. |
Message Type | 1字节 | 标识该MPLS Echo消息的类型:
|
Reply mode | 1字节 | 指示Reply Router采用什么方式回应这个消息:
|
Return Code | 1字节 | 发送端设置为0,接收端可以设置为如下值之一:
|
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):
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) |