Multicast Traceroute (=mtrace=)

The original traceroute idea of sending probe packets with increasing TTLs and evaluating the generated ICMP "destination unreachable - TTL expired" packets cannot be applied to multicast, since ICMP messages are not generated in response to multicast traffic. Therefore a different approach was chosen to obtain traceroute-like functionality for multicast. That approach consists of a simple protocol that is used between end-systems and routers to obtain path information. The disadvantage of this approach is that routers (preferably all along a multicast path) have to support the protocol. Advantages are that if all routers support it, multicast traceroutes can be very efficient, and provide additional information above and beyond the typical loss and RTT information provided by classic (unicast) traceroutes. In particular, the multicast traceroute protocol includes useful traffic statistics information - but note that not all routers that implement the multicast traceroute protocol fill in this information.

History

Implementations

We believe that the original idea for the multicast traceroute protocol as well as its first implementations (client and router side) are from Bill Fenner. Router vendors such as Cisco and Juniper have implemented the router side of the protocol for IPv4 to various degrees. The original client implementation for Unix-like systems has been made available on the SourceForge site by Bill Fenner. As the code stands right now, it seems somewhat difficult to make it work at least on non-BSD systems, although it should not be too difficult to fix this.

Protocol Specification

The protocol specification for IPv4 was written up as an Internet-Draft and revised a few times, but never published as an RFC. The Internet-Drafts have expired but can still be found on the Internet with some effort. In early 2007, there has been a proposal for an IPv6 variant of the multicast traceroute protocol. In July 2007, an IPv4/IPv6 mtrace specification ("mtrace version 2") became available as an Internet-Draft. This is being discussed and revised within the IETF mboned working group.

Example Output

The following is an mtrace from a Cisco router. The multicast traceroute implementation in Cisco IOS has two commands: mtrace simply performs a trace and outputs the path with some routing/tree-building-specific information. The mstat command also retrieves statistics information. In contrast, the Unix mtrace client does something similar to IOS mstat by default. The choice of the name mstat is somewhat unfortunate, because there is a completely different multicast debugging tool named mstat , also mentioned in the Multicast Debugging Handbook.

swiCE3#mtrace 130.59.35.110 130.59.35.130 233.2.47.1
Type escape sequence to abort.
Mtrace from 130.59.35.110 to 130.59.35.130 via group 233.2.47.1
From source (yasur-eth0.switch.ch) to destination (cemp1-eth1.switch.ch)
Querying full reverse path... 
 0  cemp1-eth1.switch.ch (130.59.35.130)
-1  swiCE2-V480.switch.ch (130.59.48.2) PIM Reached RP/Core [130.59.35.108/30]
-2  swiLS2-10GE-1-3.switch.ch (130.59.37.2) PIM  [130.59.35.108/30]
-3  swiEZ2-10GE-1-1.switch.ch (130.59.36.206) PIM Reached RP/Core [130.59.35.108/30]
-4  swiCS3-10GE-1-1.switch.ch (130.59.36.17) PIM  [130.59.35.108/30]

References

– Main.SimonLeinen - 28 Feb 2007 - 23 Jan 2010