====== MPLS Labels in Traceroute ====== Traceroute is a versatile tool that is frequently used to troubleshoot problems on the Internet. An excellent presentation is given in [[https://www.nanog.org/meetings/nanog47/presentations/Sunday/RAS_Traceroute_N47_Sun.pdf | NANOG 47 meeting]] where a lot of real use cases are demystified. When analysing MPLS deployments on the Internet, traceroute can also be helpful. Thanks to the support of [[http://tools.ietf.org/html/rfc4950 | ICMP Extensions for Multiprotocol Label Switching]], MPLS Label Switching Routers (LSR) append MPLS information to ICMP messages. Selected ICMP messages include the MPLS label stack, as it arrived at the router that is sending the ICMP message. For example, a traceroute to ''www.univ-rennes1.fr'' reveals the different hops toward the destination: $ traceroute -P icmp www.univ-rennes1.fr traceroute to frontalhttp.univ-rennes1.fr (129.20.126.100), 64 hops max, 72 byte packets 1 neufbox 1.804 ms 1.718 ms 1.510 ms 2 129.112.16.109.rev.sfr.net 28.440 ms 34.535 ms 28.499 ms 3 77.56.66.86.rev.sfr.net 28.384 ms 29.678 ms 27.561 ms 4 185.73.66.86.rev.sfr.net 30.758 ms 30.744 ms 29.597 ms 5 renater-ix1.sfinx.tm.fr 37.389 ms 38.937 ms 41.514 ms 6 te4-2-rouen-rtr-021.noc.renater.fr 41.297 ms 42.737 ms * 7 te4-2-caen-rtr-021.noc.renater.fr 42.710 ms 41.381 ms 40.157 ms 8 te1-5-rennes-rtr-021.noc.renater.fr 42.530 ms 43.130 ms 43.615 ms 9 * u-1-rennes-cri-gi8-1-rennes-rtr-021.noc.renater.fr 46.353 ms 41.514 ms 10 frontalhttp.univ-rennes1.fr 42.702 ms 41.322 ms 42.429 ms Examining the detail of the received ICMP time exceeded messages with Wireshark reveals an ICMP Multi-part extension that carries the MPLS label as it arrived to the hop sending the message. In the following capture, the router ''te4-2-rouen-rtr-021.noc.renater.fr'' received label 53, most probably from the MPLS edge router ''renater-ix1.sfinx.tm.fr''. No. Time Source Destination Protocol Length Info 41 5.947446000 193.51.189.50 192.168.1.24 ICMP 182 Time-to-live exceeded (Time to live exceeded in transit) Internet Control Message Protocol Type: 11 (Time-to-live exceeded) Code: 0 (Time to live exceeded in transit) Checksum: 0x3974 [correct] Internet Protocol Version 4, Src: 192.168.1.24, Dst: 131.254.254.131 User Datagram Protocol, Src Port: 46416 (46416), Dst Port: 33452 (33452) Data (24 bytes) ICMP Multi-Part Extensions Version: 2 Reserved: 0x000 Checksum: 0x8df2 [correct] MPLS Stack Entry Length: 8 Class: 1 C-Type: 1 Label: 53, Exp: 0, S: 1, TTL: 1 0000 0000 0000 0011 0101 .... = Label: 53 .... .... .... .... .... 000. = Experimental: 0 .... .... .... .... .... ...1 = Stack bit: Set Time to live: 1 In order to easily visualise the label switching, [[http://www.bitwizard.nl/mtr | MTR]] produces a traceroute-like result with labels used at each hop: $ mtr -e www.univ-rennes1.fr 1. neufbox 2. 129.112.16.109.rev.sfr.net 3. 77.56.66.86.rev.sfr.net 4. 185.73.66.86.rev.sfr.net 5. renater-ix1.sfinx.tm.fr 6. te4-2-rouen-rtr-021.noc.renater.fr [MPLS: Lbl 53 Exp 0 S 1 TTL 1] 7. te4-2-caen-rtr-021.noc.renater.fr [MPLS: Lbl 546 Exp 0 S 1 TTL 1] 8. te1-5-rennes-rtr-021.noc.renater.fr 9. u-1-rennes-cri-gi8-1-rennes-rtr-021.noc.renater.fr 10. frontalhttp.univ-rennes1.fr