Appendix B. Known Problems with Traceroute
B.1. Compatibility between Traceroute Measurement Results and IPPM Metrics
Because of implementation choices, a known inconsistency exists between the round-trip delay metric defined by the IPPM working group in RFC 2681 and the results returned by the current traceroute tool implementations. Unfortunately, it is unlikely that the traceroute tool implementations will implement the standard definition in the near future. The only possibility is therefore to compare results of different traceroute measurements with each other; in order to do this, specifications both of the operating system (name and version) and of the traceroute tool version used were added to the metadata elements in order to help in comparing metrics between two different traceroute measurement results (if run using the same operating system and the same version of the tool). Moreover, the traceroute tool has built-in configurable mechanisms like timeouts and can experience problems related to the crossing of firewalls; therefore, some of the packets that traceroute sends out end up being timeout or filtered. As a consequence, it might not be possible to trace the path to a node or there might not be a complete enough set of probes describing the RTT to reach it.Appendix C. Differences to DISMAN-TRACEROUTE-MIB
For performing remote traceroute operations at managed node, the IETF has standardized the DISMAN-TRACEROUTE-MIB module in [RFC4560]. This module allows: o retrieving capability information of the traceroute tool implementation at the managed node; o configuring traceroute measurements to be performed; o retrieving information about ongoing and completed traceroute measurements; o retrieving traceroute measurement statistics. The traceroute storage format described in this document has significant overlaps with this MIB module. Particularly, the models for the traceroute measurement configuration and for the results from completed measurements are almost identical. But for other parts of the DISMAN-TRACEROUTE MIB module there is no need to model them in a traceroute measurement storage format. Particularly, the capability information, information about ongoing measurements, and measurement statistics are not covered by the DISMAN traceroute storage model.
Concerning traceroute measurements and their results, there are structural differences between the two models caused by the different choices for the encoding of the specification. For DISMAN- TRACEROUTE-MIB, the Structure of Management Information (SMIv2, STD 58, RFC 2578 [RFC2578]) was used, while the IPPM traceroute measurement data model is encoded using XML. This difference in structure implies that the DISMAN-TRACEROUTE-MIB module contains SMI-specific information elements (managed objects) that concern tables of managed objects (specification, entry creation and deletion, status retrieval) that are not required for the XML- encoded traceroute measurement data model. But for most of the remaining information elements that concern configuration of traceroute measurements and results of completed measurements, the semantics are identical between the DISMAN- TRACEROUTE-MIB module and the traceroute measurement data model. There are very few exceptions to this; these are listed below. Also, naming of information elements is identical between both models with a few exceptions. For the traceroute measurement data model, a few information elements have been added, some because of the different structure and some to provide additional information on completed measurements.C.1. Scope
There are some basic differences in nature and application between MIB modules and XML documents. This results in two major differences of scope between the DISMAN-TRACEROUTE-MIB module and the traceroute measurement data model. The first difference is the "traceRouteResultsTable" contained in the DISMAN-TRACEROUTE-MIB module. This table allows online observation of status and progress of an ongoing traceroute measurement. This highly dynamic information is not included in the traceroute measurement data model because it has not been envisioned to use the model for dynamically reporting progress of individual traceroute measurements. The traceroute measurement data model is rather intended to be used for reporting completed traceroute measurements. The second difference is due to the fact that information in a MIB is typically tied to a local node hosting the MIB instance. The "RequestMetadata" element specified in the traceroute measurement data model can be used for specifying a measurement request that may be applied to several probes in a network. This concept does not exist in the DISMAN-TRACEROUTE-MIB module.
For the remaining elements in the DISMAN-TRACEROUTE-MIB module and in the traceroute measurement data model, there is a very good match between the two worlds. The "traceRouteCtlTable" corresponds to the "MeasurementMetadata" element, and the combination of the "traceRouteProbeHistoryTable" and the "traceRouteHopsTable" corresponds to a collection of "MeasurementResult" elements.C.2. Naming
Basically, names in both models are chosen using the same naming conventions. For the traceroute measurement configuration information, all names, such as "CtlProbesPerHop", are identical in both models except for the traceRoute prefix that was removed to avoid unnecessary redundancy in the XML file and for "CtlDataSize", which was renamed to "CtlProbeDataSize" for clarification in the traceroute measurement data model. Results of measurements in the DISMAN-TRACEROUTE-MIB modules are distributed over two tables, the "traceRouteResultsTable" contains mainly information about ongoing measurements and the "traceRouteProbeHistoryTable" contains only information about completed measurements. According to the SMIv2 naming conventions, names of information elements in these tables have different prefixes ("traceRouteResults" and "traceRouteProbeHistory"). Since the traceroute measurement data model only reports on completed measurements, this separation is not needed anymore and the prefix "Results" is used for all related information elements. Beyond that, there are only a few changes in element names. The renaming actions include: o "traceRouteProbeHistoryResponse" to "ProbeRoundTripTime"; o "traceRouteProbeHistoryHAddr" to "HopAddr"; o "traceRouteProbeHistoryTime" to "ResultsEndDateAndTime"; o "traceRouteProbeHistoryLastRC" to "ResultsHopRawOutputData".C.3. Semantics
The semantics were changed for two information elements only. For "traceRouteProbeHistoryResponse" in the DISMAN-TRACEROUTE-MIB, a value of 0 indicates that it is not possible to transmit a probe. For the traceroute measurement data model, a value of 0 for element
"RoundTripTime" indicates that the measured time was less than one millisecond. For the case that it was not possible to transmit a probe, a string is used that indicates the problem. For "traceRouteCtlIfIndex" in the DISMAN-TRACEROUTE-MIB, a value of 0 indicates that the option to set the index is not available. This was translated to the traceroute measurement data model, such that a value of 0 for this element indicates that the used interface is unknown. The element "traceRouteProbeHistoryLastRC" in the DISMAN-TRACEROUTE- MIB was replaced by element "ResultsHopRawOutputData". While "traceRouteProbeHistoryLastRC" just reports a reply code, "ResultsHopRawOutputData" reports the full raw output data (per hop) produced by the traceroute measurement that was used.C.4. Additional Information Elements
Only a few information elements have been added to the model of the DISMAN-TRACEROUTE-MIB module. o For providing information on the MPLS label stack entries of a probe in the traceroute measurement path, "MPLSLabelStackEntry" was added. o For providing additional timestamp beyond "ResultsEndDateAndTime", "ResultsStartDateAndTime" and "Time" were added. o For providing DNS names at the time of the execution of the traceroute for each "HopAddr" (which may change over time), "HopName" was added.Appendix D. Traceroute Examples with XML Representation
This section shows some examples of traceroute applications. In addition, the encoding of requests and results is shown for some of those examples. Also, note that in these XML examples some lines appear wrapped due to the limited length of line. A typical traceroute on a LINUX system looks like the following: # traceroute -f 4 www.example 1500 traceroute to ww.example (192.0.2.42), 30 hops max, 1500-byte packets 5 out.host1.example (192.0.2.254) 6.066 ms 5.625 ms 6.095 ms 6 rtr4.host6.example (192.0.2.142) 6.979 ms 6.221 ms 7.368 ms 7 hop7.rtr9.example (192.0.2.11) 16.165 ms 15.347 ms 15.514 ms 8 192.0.2.222 (192.0.2.222) 32.796 ms 28.723 ms 26.988 ms 9 in.example (192.0.2.123) 15.861 ms 16.262 ms 17.610 ms 10 in.example (192.0.2.123)(N!) 17.391 ms * *
This traceroute ignores the first 4 hops and uses 1500-byte packets including the header. It does not reach its goal since the last listed hop says that the network is not reachable (N!). The XML representation for this trace follows: <?xml version="1.0" encoding="UTF-8"?> <traceRoute xmlns="urn:ietf:params:xml:ns:traceroute-1.0"> <RequestMetadata> <TestName>Example 1</TestName> <OSName/> <OSVersion/> <ToolVersion/> <ToolName/> <CtlTargetAddress> <inetAddressDns>www.example</inetAddressDns> </CtlTargetAddress> <CtlBypassRouteTable/> <CtlProbeDataSize>1472</CtlProbeDataSize> <CtlTimeOut/> <CtlProbesPerHop/> <CtlPort/> <CtlMaxTtl/> <CtlDSField/> <CtlSourceAddress> <inetAddressUnknown/> </CtlSourceAddress> <CtlIfIndex/> <CtlMiscOptions/> <CtlMaxFailures/> <CtlDontFragment/> <CtlInitialTtl>4</CtlInitialTtl> <CtlDescr>Show how it encodes in XML</CtlDescr> <CtlType><UDP/></CtlType> </RequestMetadata> <Measurement> <MeasurementMetadata> <TestName>Example 1</TestName> <OSName>Linux</OSName> <OSVersion>2.6.16.54-0.2.5-smp i386</OSVersion> <ToolVersion>1.0</ToolVersion> <ToolName>traceroute</ToolName> <CtlTargetAddress> <inetAddressDns>www.example</inetAddressDns> </CtlTargetAddress> <CtlBypassRouteTable/> <CtlProbeDataSize>1472</CtlProbeDataSize> <CtlTimeOut/> <CtlProbesPerHop/> <CtlPort/>
<CtlMaxTtl/> <CtlDSField/> <CtlSourceAddress> <inetAddressIpv4>192.0.2.1</inetAddressIpv4> </CtlSourceAddress> <CtlIfIndex>2</CtlIfIndex> <CtlMiscOptions/> <CtlMaxFailures/> <CtlDontFragment/> <CtlInitialTtl>4</CtlInitialTtl> <CtlDescr>Show how it encodes in XML</CtlDescr> <CtlType><UDP/></CtlType> </MeasurementMetadata> <MeasurementResult> <TestName>Example 1</TestName> <ResultsStartDateAndTime>2008-05-16T14:22:34+02:00</ResultsStar tDateAndTime> <ResultsIpTgtAddr> <inetAddressIpv4>192.0.2.42</inetAddressIpv4> </ResultsIpTgtAddr> <ProbeResults> <hop> <probe> <HopAddr> <inetAddressIpv4>192.0.2.254</inetAddressIpv4> </HopAddr> <HopName>out.host1.example</HopName> <ProbeRoundTripTime> <roundTripTime>6</roundTripTime> </ProbeRoundTripTime> <ResponseStatus>responseReceived</ResponseStatus> <Time>2008-05-16T14:22:35+02:00</Time> </probe> <probe> <HopAddr> <inetAddressIpv4>192.0.2.254</inetAddressIpv4> </HopAddr> <HopName>out.host1.example</HopName> <ProbeRoundTripTime><roundTripTime>5</roundTripTime></Pro beRoundTripTime> <ResponseStatus>responseReceived</ResponseStatus> <Time>2008-05-16T14:22:35+02:00</Time> </probe> <probe> <HopAddr> <inetAddressIpv4>192.0.2.254</inetAddressIpv4> </HopAddr> <HopName>out.host1.example</HopName>
<ProbeRoundTripTime> <roundTripTime>6</roundTripTime> </ProbeRoundTripTime> <ResponseStatus>responseReceived</ResponseStatus> <Time>2008-05-16T14:22:35+02:00</Time> </probe> <HopRawOutputData> 5 out.host1.example (192.0.2.254) 6.06 6 ms 5.625 ms 6.095 ms</HopRawOutputData> </hop> <hop> <probe> <HopAddr> <inetAddressIpv4>192.0.2.142</inetAddressIpv4> </HopAddr> <HopName>rtr4.host6.example</HopName> <ProbeRoundTripTime> <roundTripTime>6</roundTripTime> </ProbeRoundTripTime> <ResponseStatus>responseReceived</ResponseStatus> <Time>2008-05-16T14:22:36+02:00</Time> </probe> <probe> <HopAddr> <inetAddressIpv4>192.0.2.142</inetAddressIpv4> </HopAddr> <HopName>rtr4.host6.example</HopName> <ProbeRoundTripTime> <roundTripTime>6</roundTripTime> </ProbeRoundTripTime> <ResponseStatus>responseReceived</ResponseStatus> <Time>2008-05-16T14:22:36+02:00</Time> </probe> <probe> <HopAddr> <inetAddressIpv4>192.0.2.142</inetAddressIpv4> </HopAddr> <HopName>rtr4.host6.example</HopName> <ProbeRoundTripTime> <roundTripTime>7</roundTripTime> </ProbeRoundTripTime> <ResponseStatus>responseReceived</ResponseStatus> <Time>2008-05-16T14:22:37+02:00</Time> </probe> <HopRawOutputData> 6 rtr4.host6.example (192.0.2.142) 6.9 79 ms 6.221 ms 7.368 ms</HopRawOutputData> </hop> <hop> <probe>
<HopAddr> <inetAddressIpv4>192.0.2.11</inetAddressIpv4> </HopAddr> <HopName>hop7.rtr9.example</HopName> <ProbeRoundTripTime> <roundTripTime>16</roundTripTime> </ProbeRoundTripTime> <ResponseStatus>responseReceived</ResponseStatus> <Time>2008-05-16T14:22:37+02:00</Time> </probe> <probe> <HopAddr> <inetAddressIpv4>192.0.2.11</inetAddressIpv4> </HopAddr> <HopName>hop7.rtr9.example</HopName> <ProbeRoundTripTime> <roundTripTime>15</roundTripTime> </ProbeRoundTripTime> <ResponseStatus>responseReceived</ResponseStatus> <Time>2008-05-16T14:22:38+02:00</Time> </probe> <probe> <HopAddr> <inetAddressIpv4>192.0.2.11</inetAddressIpv4> </HopAddr> <HopName>hop7.rtr9.example</HopName> <ProbeRoundTripTime> <roundTripTime>15</roundTripTime> </ProbeRoundTripTime> <ResponseStatus>responseReceived</ResponseStatus> <Time>2008-05-16T14:22:38+02:00</Time> </probe> <HopRawOutputData> 7 hop7.rtr9.example (192.0.2.11) 16.16 5 ms 15.347 ms 15.514 ms</HopRawOutputData> </hop> <hop> <probe> <HopAddr> <inetAddressIpv4>192.0.2.222</inetAddressIpv4> </HopAddr> <ProbeRoundTripTime> <roundTripTime>32</roundTripTime> </ProbeRoundTripTime> <ResponseStatus>responseReceived</ResponseStatus> <Time>2008-05-16T14:22:39+02:00</Time> </probe> <probe> <HopAddr>
<inetAddressIpv4>192.0.2.222</inetAddressIpv4> </HopAddr> <ProbeRoundTripTime> <roundTripTime>38</roundTripTime> </ProbeRoundTripTime> <ResponseStatus>responseReceived</ResponseStatus> <Time>2008-05-16T14:22:39+02:00</Time> </probe> <probe> <HopAddr> <inetAddressIpv4>192.0.2.222</inetAddressIpv4> </HopAddr> <ProbeRoundTripTime> <roundTripTime>26</roundTripTime> </ProbeRoundTripTime> <ResponseStatus>responseReceived</ResponseStatus> <Time>2008-05-16T14:22:39+02:00</Time> </probe> <HopRawOutputData> 8 192.0.2.222 (192.0.2.222) 32.796 ms 28.723 ms 26.988 ms</HopRawOutputData> </hop> <hop> <probe> <HopAddr> <inetAddressIpv4>192.0.2.123</inetAddressIpv4> </HopAddr> <HopName>in.example</HopName> <ProbeRoundTripTime> <roundTripTime>15</roundTripTime> </ProbeRoundTripTime> <ResponseStatus>responseReceived</ResponseStatus> <Time>2008-05-16T14:22:40+02:00</Time> </probe> <probe> <HopAddr> <inetAddressIpv4>192.0.2.123</inetAddressIpv4> </HopAddr> <HopName>in.example</HopName> <ProbeRoundTripTime> <roundTripTime>16</roundTripTime> </ProbeRoundTripTime> <ResponseStatus>responseReceived</ResponseStatus> <Time>2008-05-16T14:22:40+02:00</Time> </probe> <probe> <HopAddr> <inetAddressIpv4>192.0.2.123</inetAddressIpv4> </HopAddr>
<HopName>in.example</HopName> <ProbeRoundTripTime> <roundTripTime>17</roundTripTime> </ProbeRoundTripTime> <ResponseStatus>responseReceived</ResponseStatus> <Time>2008-05-16T14:22:40+02:00</Time> </probe> <HopRawOutputData> 9 in.example (192.0.2.123) 15.861 ms 16.262 ms 17.610 ms</HopRawOutputData> </hop> <hop> <probe> <HopAddr> <inetAddressIpv4>192.0.2.123</inetAddressIpv4> </HopAddr> <HopName>in.example</HopName> <ProbeRoundTripTime> <roundTripTime>17</roundTripTime> </ProbeRoundTripTime> <ResponseStatus>noRouteToTarget</ResponseStatus> <Time>2008-05-16T14:22:41+02:00</Time> </probe> <probe> <HopAddr> <inetAddressIpv4>192.0.2.123</inetAddressIpv4> </HopAddr> <HopName>in.example</HopName> <ProbeRoundTripTime> <roundTripTimeNotAvailable/> </ProbeRoundTripTime> <ResponseStatus>requestTimedOut</ResponseStatus> <Time>2008-05-16T14:22:44+02:00</Time> </probe> <probe> <HopAddr> <inetAddressIpv4>192.0.2.123</inetAddressIpv4> </HopAddr> <HopName>in.example</HopName> <ProbeRoundTripTime> <roundTripTimeNotAvailable/> </ProbeRoundTripTime> <ResponseStatus>requestTimedOut</ResponseStatus> <Time>2008-05-16T14:22:44+02:00</Time> </probe> <HopRawOutputData>10 in.example (192.0.2.123)(N!) 17.391 ms * *</HopRawOutputData> </hop> </ProbeResults>
<ResultsEndDateAndTime>2008-05-16T14:22:44+02:00</ResultsEndDat eAndTime> </MeasurementResult> </Measurement> </traceRoute> The second example was generated on an OpenBSD system. On that system, the traceroute looks like the following: # traceroute -P tcp w2.example 128 traceroute to w2.example (192.0.2.254), 64 hops max, 160-byte packets 1 router1.example.org (192.0.2.22) 0.486 ms 0.486 ms 0.482 ms 2 router7.example.org (192.0.2.1) 3.27 ms 1.420 ms 1.873 ms 3 hop0.c.example (192.0.2.105) 3.177 ms 3.258 ms 3.859 ms 4 hop6.c.example (192.0.2.107) 5.994 ms 4.607 ms 5.678 ms 5 hop3.c.example (192.0.2.111) 20.341 ms 20.732 ms 19.505 ms 6 in.example.net (192.0.2.222) 20.333 ms 19.174 ms 19.856 ms 7 egress.example.net (192.0.2.227) 20.268 ms 21.79 ms 19.992 ms 8 routerin.example (192.0.2.253) 19.983 ms 19.931 ms 19.894 ms 9 routerdmz.example (192.0.2.249) 20.943 ms !X * 19.829 ms !X It was executed with the TCP protocol and 128-byte packets (plus header). The traceroute ended at hop 9 because the packets are administratively filtered (!X). A corresponding XML representation follows: <?xml version="1.0" encoding="UTF-8"?> <traceRoute xmlns="urn:ietf:params:xml:ns:traceroute-1.0"> <RequestMetadata> <TestName>Example 2</TestName> <OSName/> <OSVersion/> <ToolVersion/> <ToolName/> <CtlTargetAddress> <inetAddressDns>w2.example</inetAddressDns> </CtlTargetAddress> <CtlBypassRouteTable/> <CtlProbeDataSize>128</CtlProbeDataSize> <CtlTimeOut/> <CtlProbesPerHop/> <CtlPort/> <CtlMaxTtl/> <CtlDSField/> <CtlSourceAddress> <inetAddressUnknown/> </CtlSourceAddress> <CtlIfIndex/> <CtlMiscOptions/>
<CtlMaxFailures/> <CtlDontFragment/> <CtlInitialTtl/> <CtlDescr>Show how it encodes in XML</CtlDescr> <CtlType><TCP/></CtlType> </RequestMetadata> <Measurement> <MeasurementMetadata> <TestName>Example 2</TestName> <OSName>OpenBSD</OSName> <OSVersion>4.1 i386</OSVersion> <ToolVersion></ToolVersion> <ToolName>traceroute</ToolName> <CtlTargetAddress> <inetAddressDns>w2.example</inetAddressDns> </CtlTargetAddress> <CtlBypassRouteTable/> <CtlProbeDataSize>128</CtlProbeDataSize> <CtlTimeOut/> <CtlProbesPerHop/> <CtlPort/> <CtlMaxTtl/> <CtlDSField/> <CtlSourceAddress> <inetAddressIpv4>192.0.2.42</inetAddressIpv4> </CtlSourceAddress> <CtlIfIndex>1</CtlIfIndex> <CtlMiscOptions/> <CtlMaxFailures/> <CtlDontFragment/> <CtlInitialTtl/> <CtlDescr>Show how it encodes in XML</CtlDescr> <CtlType><TCP/></CtlType> </MeasurementMetadata> <MeasurementResult> <TestName>Example 2</TestName> <ResultsStartDateAndTime>2008-05-14T09:57:11+02:00</ResultsStar tDateAndTime> <ResultsIpTgtAddr> <inetAddressIpv4>192.0.2.254</inetAddressIpv4> </ResultsIpTgtAddr> <ProbeResults> <hop> <probe> <HopAddr> <inetAddressIpv4>192.0.2.22</inetAddressIpv4> </HopAddr> <HopName>router1.example.org</HopName>
<ProbeRoundTripTime> <roundTripTime>0</roundTripTime> </ProbeRoundTripTime> <ResponseStatus>responseReceived</ResponseStatus> <Time>2008-05-14T09:57:13+02:00</Time> </probe> <probe> <HopAddr> <inetAddressIpv4>192.0.2.22</inetAddressIpv4> </HopAddr> <HopName>router1.example.org</HopName> <ProbeRoundTripTime> <roundTripTime>0</roundTripTime> </ProbeRoundTripTime> <ResponseStatus>responseReceived</ResponseStatus> <Time>2008-05-14T09:57:13+02:00</Time> </probe> <probe> <HopAddr> <inetAddressIpv4>192.0.2.22</inetAddressIpv4> </HopAddr> <HopName>router1.example.org</HopName> <ProbeRoundTripTime> <roundTripTime>0</roundTripTime> </ProbeRoundTripTime> <ResponseStatus>responseReceived</ResponseStatus> <Time>2008-05-14T09:57:13+02:00</Time> </probe> </hop> <hop> <probe> <HopAddr> <inetAddressIpv4>192.0.2.1</inetAddressIpv4> </HopAddr> <HopName>router7.example.org</HopName> <ProbeRoundTripTime> <roundTripTime>3</roundTripTime> </ProbeRoundTripTime> <ResponseStatus>responseReceived</ResponseStatus> <Time>2008-05-14T09:57:13+02:00</Time> </probe> <probe> <HopAddr> <inetAddressIpv4>192.0.2.1</inetAddressIpv4> </HopAddr> <HopName>router7.example.org</HopName> <ProbeRoundTripTime> <roundTripTime>1</roundTripTime>
</ProbeRoundTripTime> <ResponseStatus>responseReceived</ResponseStatus> <Time>2008-05-14T09:57:13+02:00</Time> </probe> <probe> <HopAddr> <inetAddressIpv4>192.0.2.1</inetAddressIpv4> </HopAddr> <HopName>router7.example.org</HopName> <ProbeRoundTripTime> <roundTripTime>1</roundTripTime> </ProbeRoundTripTime> <ResponseStatus>responseReceived</ResponseStatus> <Time>2008-05-14T09:57:14+02:00</Time> </probe> </hop> <hop> <probe> <HopAddr> <inetAddressIpv4>192.0.2.105</inetAddressIpv4> </HopAddr> <HopName>hop0.c.example</HopName> <ProbeRoundTripTime> <roundTripTime>3</roundTripTime> </ProbeRoundTripTime> <ResponseStatus>responseReceived</ResponseStatus> <Time>2008-05-14T09:57:14+02:00</Time> </probe> <probe> <HopAddr> <inetAddressIpv4>192.0.2.105</inetAddressIpv4> </HopAddr> <HopName>hop0.c.example</HopName> <ProbeRoundTripTime> <roundTripTime>3</roundTripTime> </ProbeRoundTripTime> <ResponseStatus>responseReceived</ResponseStatus> <Time>2008-05-14T09:57:14+02:00</Time> </probe> <probe> <HopAddr> <inetAddressIpv4>192.0.2.105</inetAddressIpv4> </HopAddr> <HopName>hop0.c.example</HopName> <ProbeRoundTripTime> <roundTripTime>3</roundTripTime> </ProbeRoundTripTime> <ResponseStatus>responseReceived</ResponseStatus>
<Time>2008-05-14T09:57:14+02:00</Time> </probe> </hop> <hop> <probe> <HopAddr> <inetAddressIpv4>192.0.2.107</inetAddressIpv4> </HopAddr> <HopName>hop6.c.example</HopName> <ProbeRoundTripTime> <roundTripTime>5</roundTripTime> </ProbeRoundTripTime> <ResponseStatus>responseReceived</ResponseStatus> <Time>2008-05-14T09:57:15+02:00</Time> </probe> <probe> <HopAddr> <inetAddressIpv4>192.0.2.107</inetAddressIpv4> </HopAddr> <HopName>hop6.c.example</HopName> <ProbeRoundTripTime> <roundTripTime>4</roundTripTime> </ProbeRoundTripTime> <ResponseStatus>responseReceived</ResponseStatus> <Time>2008-05-14T09:57:16+02:00</Time> </probe> <probe> <HopAddr> <inetAddressIpv4>192.0.2.107</inetAddressIpv4> </HopAddr> <HopName>hop6.c.example</HopName> <ProbeRoundTripTime> <roundTripTime>5</roundTripTime> </ProbeRoundTripTime> <ResponseStatus>responseReceived</ResponseStatus> <Time>2008-05-14T09:57:16+02:00</Time> </probe> </hop> <hop> <probe> <HopAddr> <inetAddressIpv4>192.0.2.111</inetAddressIpv4> </HopAddr> <HopName>hop3.c.example</HopName> <ProbeRoundTripTime> <roundTripTime>20</roundTripTime> </ProbeRoundTripTime> <ResponseStatus>responseReceived</ResponseStatus>
<Time>2008-05-14T09:57:17+02:00</Time> </probe> <probe> <HopAddr> <inetAddressIpv4>192.0.2.111</inetAddressIpv4> </HopAddr> <HopName>hop3.c.example</HopName> <ProbeRoundTripTime> <roundTripTime>20</roundTripTime> </ProbeRoundTripTime> <ResponseStatus>responseReceived</ResponseStatus> <Time>2008-05-14T09:57:18+02:00</Time> </probe> <probe> <HopAddr> <inetAddressIpv4>192.0.2.111</inetAddressIpv4> </HopAddr> <HopName>hop3.c.example</HopName> <ProbeRoundTripTime> <roundTripTime>19</roundTripTime> </ProbeRoundTripTime> <ResponseStatus>responseReceived</ResponseStatus> <Time>2008-05-14T09:57:19+02:00</Time> </probe> </hop> <hop> <probe> <HopAddr> <inetAddressIpv4>192.0.2.222</inetAddressIpv4> </HopAddr> <HopName>in.example.net</HopName> <ProbeRoundTripTime> <roundTripTime>20</roundTripTime> </ProbeRoundTripTime> <ResponseStatus>responseReceived</ResponseStatus> <Time>2008-05-14T09:57:20+02:00</Time> </probe> <probe> <HopAddr> <inetAddressIpv4>192.0.2.222</inetAddressIpv4> </HopAddr> <HopName>in.example.net</HopName> <ProbeRoundTripTime> <roundTripTime>19</roundTripTime> </ProbeRoundTripTime> <ResponseStatus>responseReceived</ResponseStatus> <Time>2008-05-14T09:57:20+02:00</Time> </probe>
<probe> <HopAddr> <inetAddressIpv4>192.0.2.222</inetAddressIpv4> </HopAddr> <HopName>in.example.net</HopName> <ProbeRoundTripTime> <roundTripTime>19</roundTripTime> </ProbeRoundTripTime> <ResponseStatus>responseReceived</ResponseStatus> <Time>2008-05-14T09:57:21+02:00</Time> </probe> </hop> <hop> <probe> <HopAddr> <inetAddressIpv4>192.0.2.227</inetAddressIpv4> </HopAddr> <HopName>egress.example.net</HopName> <ProbeRoundTripTime> <roundTripTime>20</roundTripTime> </ProbeRoundTripTime> <ResponseStatus>responseReceived</ResponseStatus> <Time>2008-05-14T09:57:22+02:00</Time> </probe> <probe> <HopAddr> <inetAddressIpv4>192.0.2.227</inetAddressIpv4> </HopAddr> <HopName>egress.example.net</HopName> <ProbeRoundTripTime> <roundTripTime>21</roundTripTime> </ProbeRoundTripTime> <ResponseStatus>responseReceived</ResponseStatus> <Time>2008-05-14T09:57:22+02:00</Time> </probe> <probe> <HopAddr> <inetAddressIpv4>192.0.2.227</inetAddressIpv4> </HopAddr> <HopName>egress.example.net</HopName> <ProbeRoundTripTime> <roundTripTime>19</roundTripTime> </ProbeRoundTripTime> <ResponseStatus>responseReceived</ResponseStatus> <Time>2008-05-14T09:57:23+02:00</Time> </probe> </hop> <hop>
<probe> <HopAddr> <inetAddressIpv4>192.0.2.253</inetAddressIpv4> </HopAddr> <HopName>routerin.example</HopName> <ProbeRoundTripTime> <roundTripTime>19</roundTripTime> </ProbeRoundTripTime> <ResponseStatus>responseReceived</ResponseStatus> <Time>2008-05-14T09:57:24+02:00</Time> </probe> <probe> <HopAddr> <inetAddressIpv4>192.0.2.253</inetAddressIpv4> </HopAddr> <HopName>routerin.example</HopName> <ProbeRoundTripTime> <roundTripTime>19</roundTripTime> </ProbeRoundTripTime> <ResponseStatus>responseReceived</ResponseStatus> <Time>2008-05-14T09:57:24+02:00</Time> </probe> <probe> <HopAddr> <inetAddressIpv4>192.0.2.253</inetAddressIpv4> </HopAddr> <HopName>routerin.example</HopName> <ProbeRoundTripTime> <roundTripTime>19</roundTripTime> </ProbeRoundTripTime> <ResponseStatus>responseReceived</ResponseStatus> <Time>2008-05-14T09:57:25+02:00</Time> </probe> </hop> <hop> <probe> <HopAddr> <inetAddressIpv4>192.0.2.249</inetAddressIpv4> </HopAddr> <HopName>routerdmz.example</HopName> <ProbeRoundTripTime> <roundTripTime>20</roundTripTime> </ProbeRoundTripTime> <ResponseStatus>unknown</ResponseStatus> <Time>2008-05-14T09:57:26+02:00</Time> </probe> <probe> <HopAddr>
<inetAddressIpv4>192.0.2.249</inetAddressIpv4> </HopAddr> <HopName>routerdmz.example</HopName> <ProbeRoundTripTime> <roundTripTimeNotAvailable/> </ProbeRoundTripTime> <ResponseStatus>requestTimedOut</ResponseStatus> <Time>2008-05-14T09:57:26+02:00</Time> </probe> <probe> <HopAddr> <inetAddressIpv4>192.0.2.249</inetAddressIpv4> </HopAddr> <HopName>routerdmz.example</HopName> <ProbeRoundTripTime> <roundTripTime>19</roundTripTime> </ProbeRoundTripTime> <ResponseStatus>unknown</ResponseStatus> <Time>2008-05-14T09:57:30+02:00</Time> </probe> </hop> </ProbeResults> <ResultsEndDateAndTime>2008-05-14T09:57:30+02:00</ResultsEndDat eAndTime> </MeasurementResult> </Measurement> </traceRoute> The third and last example is based on the Microsoft Windows pendant of traceroute. On an MS Windows system, the command is called "tracert" and typically looks as follows: # tracert -h 10 www.example.org Tracing route to www.example.org [192.0.2.11] over a maximum of 10 hops: 1 1 ms 1 ms 8 ms 192.0.2.99 2 <1 ms <1 ms <1 ms r1.provider4.example [192.0.2.102] 3 <1 ms <1 ms <1 ms rtr8.provider8.example [192.0.2.254] 4 1 ms 1 ms 1 ms hop11.hoster7.example [192.0.2.4] 5 2 ms 3 ms 1 ms sw6.provider2.example [192.0.2.201] 6 3 ms 3 ms 3 ms out.provider2.example [192.0.2.111] 7 * 6 ms 5 ms 192.0.2.123 8 5 ms 5 ms 5 ms 192.0.2.42 9 94 ms 95 ms 95 ms ingress.example.org [192.0.2.199] 10 168 ms 169 ms 169 ms 192.0.2.44
Trace complete. In this example, the trace was limited to 10 hops, so the tenth and last hop of this example was not the final destination. Applying the XML schema defined in this document, the trace could look as follows: <?xml version="1.0" encoding="UTF-8"?> <traceRoute xmlns="urn:ietf:params:xml:ns:traceroute-1.0"> <RequestMetadata> <TestName>Example 3</TestName> <OSName/> <OSVersion/> <ToolVersion/> <ToolName/> <CtlTargetAddress> <inetAddressDns>www.example.org</inetAddressDns> </CtlTargetAddress> <CtlBypassRouteTable/> <CtlProbeDataSize/> <CtlTimeOut/> <CtlProbesPerHop/> <CtlPort/> <CtlMaxTtl>10</CtlMaxTtl> <CtlDSField/> <CtlSourceAddress> <inetAddressUnknown/> </CtlSourceAddress> <CtlIfIndex/> <CtlMiscOptions/> <CtlMaxFailures/> <CtlDontFragment/> <CtlInitialTtl/> <CtlDescr>Show how it encodes in XML</CtlDescr> <CtlType><TCP/></CtlType> </RequestMetadata> <Measurement> <MeasurementMetadata> <TestName>Example 3</TestName> <OSName>Windows</OSName> <OSVersion>XP SP2 32-bit</OSVersion> <ToolVersion></ToolVersion> <ToolName>tracert</ToolName> <CtlTargetAddress> <inetAddressDns>www.example.org</inetAddressDns> </CtlTargetAddress> <CtlBypassRouteTable/> <CtlProbeDataSize/> <CtlTimeOut/> <CtlProbesPerHop/>
<CtlPort/> <CtlMaxTtl>10</CtlMaxTtl> <CtlDSField/> <CtlSourceAddress> <inetAddressIpv4>192.0.2.142</inetAddressIpv4> </CtlSourceAddress> <CtlIfIndex>3</CtlIfIndex> <CtlMiscOptions/> <CtlMaxFailures/> <CtlDontFragment/> <CtlInitialTtl/> <CtlDescr>Show how it encodes in XML</CtlDescr> <CtlType><TCP/></CtlType> </MeasurementMetadata> <MeasurementResult> <TestName>Example 3</TestName> <ResultsStartDateAndTime>2008-05-14T11:03:09+02:00</ResultsStar tDateAndTime> <ResultsIpTgtAddr> <inetAddressIpv4>192.0.2.11</inetAddressIpv4> </ResultsIpTgtAddr> <ProbeResults> <hop> <probe> <HopAddr> <inetAddressIpv4>192.0.2.99</inetAddressIpv4> </HopAddr> <ProbeRoundTripTime> <roundTripTime>1</roundTripTime> </ProbeRoundTripTime> <ResponseStatus>responseReceived</ResponseStatus> <Time>2008-05-14T11:03:09+02:00</Time> </probe> <probe> <HopAddr> <inetAddressIpv4>192.0.2.99</inetAddressIpv4> </HopAddr> <ProbeRoundTripTime> <roundTripTime>1</roundTripTime> </ProbeRoundTripTime> <ResponseStatus>responseReceived</ResponseStatus> <Time>2008-05-14T11:03:09+02:00</Time> </probe> <probe> <HopAddr> <inetAddressIpv4>192.0.2.99</inetAddressIpv4> </HopAddr> <ProbeRoundTripTime>
<roundTripTime>8</roundTripTime> </ProbeRoundTripTime> <ResponseStatus>responseReceived</ResponseStatus> <Time>2008-05-14T11:03:09+02:00</Time> </probe> </hop> <hop> <probe> <HopAddr> <inetAddressIpv4>192.0.2.102</inetAddressIpv4> </HopAddr> <HopName>r1.provider4.example</HopName> <ProbeRoundTripTime> <roundTripTime>0</roundTripTime> </ProbeRoundTripTime> <ResponseStatus>responseReceived</ResponseStatus> <Time>2008-05-14T11:03:09+02:00</Time> </probe> <probe> <HopAddr> <inetAddressIpv4>192.0.2.102</inetAddressIpv4> </HopAddr> <HopName>r1.provider4.example</HopName> <ProbeRoundTripTime> <roundTripTime>0</roundTripTime> </ProbeRoundTripTime> <ResponseStatus>responseReceived</ResponseStatus> <Time>2008-05-14T11:03:09+02:00</Time> </probe> <probe> <HopAddr> <inetAddressIpv4>192.0.2.102</inetAddressIpv4> </HopAddr> <HopName>r1.provider4.example</HopName> <ProbeRoundTripTime> <roundTripTime>0</roundTripTime> </ProbeRoundTripTime> <ResponseStatus>responseReceived</ResponseStatus> <Time>2008-05-14T11:03:09+02:00</Time> </probe> </hop> <hop> <probe> <HopAddr> <inetAddressIpv4>192.0.2.254</inetAddressIpv4> </HopAddr> <HopName>rtr8.provider8.example</HopName> <ProbeRoundTripTime>
<roundTripTime>0</roundTripTime> </ProbeRoundTripTime> <ResponseStatus>responseReceived</ResponseStatus> <Time>2008-05-14T11:03:09+02:00</Time> </probe> <probe> <HopAddr> <inetAddressIpv4>192.0.2.254</inetAddressIpv4> </HopAddr> <HopName>rtr8.provider8.example</HopName> <ProbeRoundTripTime> <roundTripTime>0</roundTripTime> </ProbeRoundTripTime> <ResponseStatus>responseReceived</ResponseStatus> <Time>2008-05-14T11:03:09+02:00</Time> </probe> <probe> <HopAddr> <inetAddressIpv4>192.0.2.254</inetAddressIpv4> </HopAddr> <HopName>rtr8.provider8.example</HopName> <ProbeRoundTripTime> <roundTripTime>0</roundTripTime> </ProbeRoundTripTime> <ResponseStatus>responseReceived</ResponseStatus> <Time>2008-05-14T11:03:09+02:00</Time> </probe> </hop> <hop> <probe> <HopAddr> <inetAddressIpv4>192.0.2.4</inetAddressIpv4> </HopAddr> <HopName>hop11.hoster7.example</HopName> <ProbeRoundTripTime> <roundTripTime>1</roundTripTime> </ProbeRoundTripTime> <ResponseStatus>responseReceived</ResponseStatus> <Time>2008-05-14T11:03:09+02:00</Time> </probe> <probe> <HopAddr> <inetAddressIpv4>192.0.2.4</inetAddressIpv4> </HopAddr> <HopName>hop11.hoster7.example</HopName> <ProbeRoundTripTime> <roundTripTime>1</roundTripTime> </ProbeRoundTripTime>
<ResponseStatus>responseReceived</ResponseStatus> <Time>2008-05-14T11:03:10+02:00</Time> </probe> <probe> <HopAddr> <inetAddressIpv4>192.0.2.4</inetAddressIpv4> </HopAddr> <HopName>hop11.hoster7.example</HopName> <ProbeRoundTripTime> <roundTripTime>1</roundTripTime> </ProbeRoundTripTime> <ResponseStatus>responseReceived</ResponseStatus> <Time>2008-05-14T11:03:10+02:00</Time> </probe> </hop> <hop> <probe> <HopAddr> <inetAddressIpv4>192.0.2.201</inetAddressIpv4> </HopAddr> <HopName>sw6.provider2.example</HopName> <ProbeRoundTripTime> <roundTripTime>2</roundTripTime> </ProbeRoundTripTime> <ResponseStatus>responseReceived</ResponseStatus> <Time>2008-05-14T11:03:10+02:00</Time> </probe> <probe> <HopAddr> <inetAddressIpv4>192.0.2.201</inetAddressIpv4> </HopAddr> <HopName>sw6.provider2.example</HopName> <ProbeRoundTripTime> <roundTripTime>3</roundTripTime> </ProbeRoundTripTime> <ResponseStatus>responseReceived</ResponseStatus> <Time>2008-05-14T11:03:11+02:00</Time> </probe> <probe> <HopAddr> <inetAddressIpv4>192.0.2.201</inetAddressIpv4> </HopAddr> <HopName>sw6.provider2.example</HopName> <ProbeRoundTripTime> <roundTripTime>1</roundTripTime> </ProbeRoundTripTime> <ResponseStatus>responseReceived</ResponseStatus> <Time>2008-05-14T11:03:11+02:00</Time>
</probe> </hop> <hop> <probe> <HopAddr> <inetAddressIpv4>192.0.2.111</inetAddressIpv4> </HopAddr> <HopName>out.provider2.example</HopName> <ProbeRoundTripTime> <roundTripTime>3</roundTripTime> </ProbeRoundTripTime> <ResponseStatus>responseReceived</ResponseStatus> <Time>2008-05-14T11:03:11+02:00</Time> </probe> <probe> <HopAddr> <inetAddressIpv4>192.0.2.111</inetAddressIpv4> </HopAddr> <HopName>out.provider2.example</HopName> <ProbeRoundTripTime> <roundTripTime>3</roundTripTime> </ProbeRoundTripTime> <ResponseStatus>responseReceived</ResponseStatus> <Time>2008-05-14T11:03:11+02:00</Time> </probe> <probe> <HopAddr> <inetAddressIpv4>192.0.2.111</inetAddressIpv4> </HopAddr> <HopName>out.provider2.example</HopName> <ProbeRoundTripTime> <roundTripTime>3</roundTripTime> </ProbeRoundTripTime> <ResponseStatus>responseReceived</ResponseStatus> <Time>2008-05-14T11:03:12+02:00</Time> </probe> </hop> <hop> <probe> <HopAddr> <inetAddressIpv4>192.0.2.123</inetAddressIpv4> </HopAddr> <ProbeRoundTripTime> <roundTripTimeNotAvailable/> </ProbeRoundTripTime> <ResponseStatus>requestTimedOut</ResponseStatus> <Time>2008-05-14T11:03:14+02:00</Time> </probe>
<probe> <HopAddr> <inetAddressIpv4>192.0.2.123</inetAddressIpv4> </HopAddr> <ProbeRoundTripTime> <roundTripTime>6</roundTripTime> </ProbeRoundTripTime> <ResponseStatus>responseReceived</ResponseStatus> <Time>2008-05-14T11:03:15+02:00</Time> </probe> <probe> <HopAddr> <inetAddressIpv4>192.0.2.123</inetAddressIpv4> </HopAddr> <ProbeRoundTripTime> <roundTripTime>5</roundTripTime> </ProbeRoundTripTime> <ResponseStatus>responseReceived</ResponseStatus> <Time>2008-05-14T11:03:16+02:00</Time> </probe> </hop> <hop> <probe> <HopAddr> <inetAddressIpv4>192.0.2.42</inetAddressIpv4> </HopAddr> <ProbeRoundTripTime> <roundTripTime>5</roundTripTime> </ProbeRoundTripTime> <ResponseStatus>responseReceived</ResponseStatus> <Time>2008-05-14T11:03:17+02:00</Time> </probe> <probe> <HopAddr> <inetAddressIpv4>192.0.2.42</inetAddressIpv4> </HopAddr> <ProbeRoundTripTime> <roundTripTime>5</roundTripTime> </ProbeRoundTripTime> <ResponseStatus>responseReceived</ResponseStatus> <Time>2008-05-14T11:03:17+02:00</Time> </probe> <probe> <HopAddr> <inetAddressIpv4>192.0.2.42</inetAddressIpv4> </HopAddr> <ProbeRoundTripTime> <roundTripTime>5</roundTripTime>
</ProbeRoundTripTime> <ResponseStatus>responseReceived</ResponseStatus> <Time>2008-05-14T11:03:17+02:00</Time> </probe> </hop> <hop> <probe> <HopAddr> <inetAddressIpv4>192.0.2.199</inetAddressIpv4> </HopAddr> <HopName>ingress.example.org</HopName> <ProbeRoundTripTime> <roundTripTime>94</roundTripTime> </ProbeRoundTripTime> <ResponseStatus>responseReceived</ResponseStatus> <Time>2008-05-14T11:03:19+02:00</Time> </probe> <probe> <HopAddr> <inetAddressIpv4>192.0.2.199</inetAddressIpv4> </HopAddr> <HopName>ingress.example.org</HopName> <ProbeRoundTripTime> <roundTripTime>95</roundTripTime> </ProbeRoundTripTime> <ResponseStatus>responseReceived</ResponseStatus> <Time>2008-05-14T11:03:19+02:00</Time> </probe> <probe> <HopAddr> <inetAddressIpv4>192.0.2.199</inetAddressIpv4> </HopAddr> <HopName>ingress.example.org</HopName> <ProbeRoundTripTime> <roundTripTime>95</roundTripTime> </ProbeRoundTripTime> <ResponseStatus>responseReceived</ResponseStatus> <Time>2008-05-14T11:03:19+02:00</Time> </probe> </hop> <hop> <probe> <HopAddr> <inetAddressIpv4>192.0.2.44</inetAddressIpv4> </HopAddr> <ProbeRoundTripTime> <roundTripTime>168</roundTripTime> </ProbeRoundTripTime>
<ResponseStatus>responseReceived</ResponseStatus> <Time>2008-05-14T11:03:20+02:00</Time> </probe> <probe> <HopAddr> <inetAddressIpv4>192.0.2.44</inetAddressIpv4> </HopAddr> <ProbeRoundTripTime> <roundTripTime>169</roundTripTime> </ProbeRoundTripTime> <ResponseStatus>responseReceived</ResponseStatus> <Time>2008-05-14T11:03:21+02:00</Time> </probe> <probe> <HopAddr> <inetAddressIpv4>192.0.2.44</inetAddressIpv4> </HopAddr> <ProbeRoundTripTime> <roundTripTime>169</roundTripTime> </ProbeRoundTripTime> <ResponseStatus>responseReceived</ResponseStatus> <Time>2008-05-14T11:03:23+02:00</Time> </probe> </hop> </ProbeResults> <ResultsEndDateAndTime>2008-05-14T11:03:23+02:00</ResultsEndDat eAndTime> </MeasurementResult> </Measurement> </traceRoute> The three examples given in this section are intended to give an impression of how a trace could be represented in XML. The representation generated by an implementation may differ from the examples here depending on the system and the capabilities of the traceroute implementation.
Authors' Addresses
Saverio Niccolini NEC Laboratories Europe, NEC Europe Ltd. Kurfuersten-Anlage 36 Heidelberg 69115 Germany Phone: +49 (0) 6221 4342 118 EMail: saverio.niccolini@nw.neclab.eu URI: http://www.nw.neclab.eu Sandra Tartarelli NEC Laboratories Europe, NEC Europe Ltd. Kurfuersten-Anlage 36 Heidelberg 69115 Germany Phone: +49 (0) 6221 4342 132 EMail: sandra.tartarelli@nw.neclab.eu URI: http://www.nw.neclab.eu Juergen Quittek NEC Laboratories Europe, NEC Europe Ltd. Kurfuersten-Anlage 36 Heidelberg 69115 Germany Phone: +49 (0) 6221 4342 115 EMail: quittek@nw.neclab.eu URI: http://www.nw.neclab.eu Thomas Dietz NEC Laboratories Europe, NEC Europe Ltd. Kurfuersten-Anlage 36 Heidelberg 69115 Germany Phone: +49 (0) 6221 4342 128 EMail: thomas.dietz@nw.neclab.eu URI: http://www.nw.neclab.eu Martin Swany Dept. of Computer and Information Sciences University of Delaware Newark DE 19716 U.S.A. EMail: swany@UDel.Edu