MPLS (label 100704, exp 7, [S], ttl 255)
	IP (tos 0x0, ttl 64, id 40269, offset 0, flags [none], proto UDP (17), length 88)
    12.4.4.4.4529 > 127.0.0.1.3503: [udp sum ok] 
	LSP-PINGv1, msg-type: MPLS Echo Request (1), length: 60
	  reply-mode: Reply via an IPv4/IPv6 UDP packet (2)
	  Return Code: No return code or return code contained in the Error Code TLV (0)
	  Return Subcode: (0)
	  Sender Handle: 0x00000000, Sequence: 1
	  Sender Timestamp: Receiver Timestamp: no timestamp
	  Target FEC Stack TLV (1), length: 24
	    RSVP IPv4 Session Query subTLV (3), length: 20
	      tunnel end-point 12.1.1.1, tunnel sender 12.4.4.4, lsp-id 0x0010
	      tunnel-id 0x5372, extended tunnel-id 12.4.4.4
	      0x0000:  0c01 0101 0000 5372 0c04 0404 0c04 0404
	      0x0010:  0000 0010
	    0x0000:  0003 0014 0c01 0101 0000 5372 0c04 0404
	    0x0010:  0c04 0404 0000 0010
IP (tos 0xc0, ttl 62, id 50634, offset 0, flags [none], proto UDP (17), length 60)
    10.20.0.1.3503 > 12.4.4.4.4529: [udp sum ok] 
	LSP-PINGv1, msg-type: MPLS Echo Reply (2), length: 32
	  reply-mode: Reply via an IPv4/IPv6 UDP packet (2)
	  Return Code: Replying router is an egress for the FEC at stack depth 0 (3)
	  Return Subcode: (0)
	  Sender Handle: 0x00000000, Sequence: 1
	  Sender Timestamp: Receiver Timestamp: 
MPLS (label 100704, exp 7, [S], ttl 255)
	IP (tos 0x0, ttl 64, id 40271, offset 0, flags [none], proto UDP (17), length 88)
    12.4.4.4.4529 > 127.0.0.1.3503: [udp sum ok] 
	LSP-PINGv1, msg-type: MPLS Echo Request (1), length: 60
	  reply-mode: Reply via an IPv4/IPv6 UDP packet (2)
	  Return Code: No return code or return code contained in the Error Code TLV (0)
	  Return Subcode: (0)
	  Sender Handle: 0x00000000, Sequence: 2
	  Sender Timestamp: Receiver Timestamp: no timestamp
	  Target FEC Stack TLV (1), length: 24
	    RSVP IPv4 Session Query subTLV (3), length: 20
	      tunnel end-point 12.1.1.1, tunnel sender 12.4.4.4, lsp-id 0x0010
	      tunnel-id 0x5372, extended tunnel-id 12.4.4.4
	      0x0000:  0c01 0101 0000 5372 0c04 0404 0c04 0404
	      0x0010:  0000 0010
	    0x0000:  0003 0014 0c01 0101 0000 5372 0c04 0404
	    0x0010:  0c04 0404 0000 0010
IP (tos 0xc0, ttl 62, id 50635, offset 0, flags [none], proto UDP (17), length 60)
    10.20.0.1.3503 > 12.4.4.4.4529: [udp sum ok] 
	LSP-PINGv1, msg-type: MPLS Echo Reply (2), length: 32
	  reply-mode: Reply via an IPv4/IPv6 UDP packet (2)
	  Return Code: Replying router is an egress for the FEC at stack depth 0 (3)
	  Return Subcode: (0)
	  Sender Handle: 0x00000000, Sequence: 2
	  Sender Timestamp: Receiver Timestamp: 
MPLS (label 100704, exp 7, [S], ttl 255)
	IP (tos 0x0, ttl 64, id 40273, offset 0, flags [none], proto UDP (17), length 88)
    12.4.4.4.4529 > 127.0.0.1.3503: [udp sum ok] 
	LSP-PINGv1, msg-type: MPLS Echo Request (1), length: 60
	  reply-mode: Reply via an IPv4/IPv6 UDP packet (2)
	  Return Code: No return code or return code contained in the Error Code TLV (0)
	  Return Subcode: (0)
	  Sender Handle: 0x00000000, Sequence: 3
	  Sender Timestamp: Receiver Timestamp: no timestamp
	  Target FEC Stack TLV (1), length: 24
	    RSVP IPv4 Session Query subTLV (3), length: 20
	      tunnel end-point 12.1.1.1, tunnel sender 12.4.4.4, lsp-id 0x0010
	      tunnel-id 0x5372, extended tunnel-id 12.4.4.4
	      0x0000:  0c01 0101 0000 5372 0c04 0404 0c04 0404
	      0x0010:  0000 0010
	    0x0000:  0003 0014 0c01 0101 0000 5372 0c04 0404
	    0x0010:  0c04 0404 0000 0010
IP (tos 0xc0, ttl 62, id 50637, offset 0, flags [none], proto UDP (17), length 60)
    10.20.0.1.3503 > 12.4.4.4.4529: [udp sum ok] 
	LSP-PINGv1, msg-type: MPLS Echo Reply (2), length: 32
	  reply-mode: Reply via an IPv4/IPv6 UDP packet (2)
	  Return Code: Replying router is an egress for the FEC at stack depth 0 (3)
	  Return Subcode: (0)
	  Sender Handle: 0x00000000, Sequence: 3
	  Sender Timestamp: Receiver Timestamp: 
MPLS (label 100704, exp 7, [S], ttl 255)
	IP (tos 0x0, ttl 64, id 40275, offset 0, flags [none], proto UDP (17), length 88)
    12.4.4.4.4529 > 127.0.0.1.3503: [udp sum ok] 
	LSP-PINGv1, msg-type: MPLS Echo Request (1), length: 60
	  reply-mode: Reply via an IPv4/IPv6 UDP packet (2)
	  Return Code: No return code or return code contained in the Error Code TLV (0)
	  Return Subcode: (0)
	  Sender Handle: 0x00000000, Sequence: 4
	  Sender Timestamp: Receiver Timestamp: no timestamp
	  Target FEC Stack TLV (1), length: 24
	    RSVP IPv4 Session Query subTLV (3), length: 20
	      tunnel end-point 12.1.1.1, tunnel sender 12.4.4.4, lsp-id 0x0010
	      tunnel-id 0x5372, extended tunnel-id 12.4.4.4
	      0x0000:  0c01 0101 0000 5372 0c04 0404 0c04 0404
	      0x0010:  0000 0010
	    0x0000:  0003 0014 0c01 0101 0000 5372 0c04 0404
	    0x0010:  0c04 0404 0000 0010
IP (tos 0xc0, ttl 62, id 50638, offset 0, flags [none], proto UDP (17), length 60)
    10.20.0.1.3503 > 12.4.4.4.4529: [udp sum ok] 
	LSP-PINGv1, msg-type: MPLS Echo Reply (2), length: 32
	  reply-mode: Reply via an IPv4/IPv6 UDP packet (2)
	  Return Code: Replying router is an egress for the FEC at stack depth 0 (3)
	  Return Subcode: (0)
	  Sender Handle: 0x00000000, Sequence: 4
	  Sender Timestamp: Receiver Timestamp: 
MPLS (label 100704, exp 7, [S], ttl 255)
	IP (tos 0x0, ttl 64, id 40278, offset 0, flags [none], proto UDP (17), length 88)
    12.4.4.4.4529 > 127.0.0.1.3503: [udp sum ok] 
	LSP-PINGv1, msg-type: MPLS Echo Request (1), length: 60
	  reply-mode: Reply via an IPv4/IPv6 UDP packet (2)
	  Return Code: No return code or return code contained in the Error Code TLV (0)
	  Return Subcode: (0)
	  Sender Handle: 0x00000000, Sequence: 5
	  Sender Timestamp: Receiver Timestamp: no timestamp
	  Target FEC Stack TLV (1), length: 24
	    RSVP IPv4 Session Query subTLV (3), length: 20
	      tunnel end-point 12.1.1.1, tunnel sender 12.4.4.4, lsp-id 0x0010
	      tunnel-id 0x5372, extended tunnel-id 12.4.4.4
	      0x0000:  0c01 0101 0000 5372 0c04 0404 0c04 0404
	      0x0010:  0000 0010
	    0x0000:  0003 0014 0c01 0101 0000 5372 0c04 0404
	    0x0010:  0c04 0404 0000 0010
IP (tos 0xc0, ttl 62, id 50641, offset 0, flags [none], proto UDP (17), length 60)
    10.20.0.1.3503 > 12.4.4.4.4529: [udp sum ok] 
	LSP-PINGv1, msg-type: MPLS Echo Reply (2), length: 32
	  reply-mode: Reply via an IPv4/IPv6 UDP packet (2)
	  Return Code: Replying router is an egress for the FEC at stack depth 0 (3)
	  Return Subcode: (0)
	  Sender Handle: 0x00000000, Sequence: 5
	  Sender Timestamp: Receiver Timestamp: 
