# Traceroute Visualisation (TraceMON)

TraceMON is a web application for monitoring and investigating reachability and performances of one or more targets in a network. TraceMON uses traceroutes collected by the RIPE Atlas project or third party repositories for inferring network topology and characteristics of the various network component involved. The tool aggregates data from many data sources, providing a unified and quick point of access to information such us: resource holder contacts, latency, whois, BGP visibility, IP geolocation, IXP detection, reverse DNS lookup and more.

# Highlights

  • Available for RIPE Atlas traceroute measurements, but it can be used with third-party dataset.
  • You can include multiple measurements in the same view.
  • Tries to guess the nature of the various network components.
  • The graph can be updated in real time as data is received from the probes, using the RIPE Atlas results streaming service.
  • It is possible to navigate through historical results.
  • Able to produce clean and compact visual output of complex network situation.
  • Provides information about latency, whois, BGP visibility, IP geolocation, IXP detection, reverse DNS.

# How To

Following is a list of common operations possible with this tool:

At the bottom of the graph there is a latency chart showing latencies and packet loss trends of the various traceroutes in the selected time interval.

This chart is an instance of LatencyMON and can be used as additional timeline for pinpointing the traceroute graph in a specific time instant. By clicking on the chart it is possible to show the exact traceroute situation at that time. This is pretty convenient in case we spot a packet loss situation in the latency chart and we want to analyse the situation in detail. When the target is not reached, a dashed red segment will appear on the graph.

While a particular time frame for the measurement is represented in the latency chart, the additional time bar at the bottom of the widget can be used to navigate throughout the entire measurement's lifetime.

# Get resource information

One of the most requested features is the possibility to have easy and integrated access to a set of useful information during day to day operations. By clicking on a node, a popup will appear giving access to the following information and functionalities about the host:

  • Autonomous System number, holder and registry information;
  • Information about whether the resource has been seen as announced at BGP level;
  • PeeringDB data and easy access to additional online resources;
  • Geolocation of the resource and the possibility to update it by crowdsourcing the information to OpenIPmap directly from TraceMON;
  • Easy access to RIPE Database;
  • Possibility of viewing the BGP visibility of the selected resource in RIPEstat with BGPlay;

# Selectin different probes

TraceMON selects a set of probes by default based on a preliminary analysis of the metadata of the measurement, e.g. to increase geographic diversification. Alternatively, a different set of probes can be selected manually bly clicking on the select link in the visualisation description on top of the graph.

# Read the raw traceroute

By clicking on a path is possible to retrieve the real textual traceroute output used for the representation of that specific traceroute, including reverse dns entries.

# Embed the tool in your page

It is possible to embed TraceMON by using the following code on an HTML page:

<script src="https://www-static.ripe.net/static/rnd-ui/atlas/static/measurements/widgets/tracemon/tracemon-widget-main.js"></script>
<div id="place-here"></div>
<script>
  initTracemon(
    "#place-here",
    {}, // Tool options, see table below for more info
    { measurements: [6932659, 4471092] } // Query options, see table below for more info
  );
</script>

It is possible to specify two kinds of options: tool options and query options.

NOTE: The Latency graph is achieved by using LatencyMON. No configuration or initialisation is required, but you have to add the following line before the code above.

<script src="https://www-static.ripe.net/static/rnd-ui/atlas/static/measurements/widgets/tracemon/tracemon-widget-main.js"></script>

# The possible query options are:

Name Description
measurements [array] A list of comma-separated measurement IDs. Is the only mandatory parameter.
startTimestamp [integer] The Unix timestamp indicating the start time of the represented time range.
stopTimestamp [integer] The Unix timestamp indicating the stop time of the represented time range.
sources [array] A list of probes/sources IDs to display.
defaultNumberOfDisplayedSources [integer] The number of probes that are going to be auto-selected by the tool.

# The possible tool options are:

Name Description
maxNumberHops [integer] The maximum number of hops displayed for each traceroute.
reproductionSpeed [integer] From 1 to 10. The default reproduction speed
labelLevel [string] The default labeling for the nodes. Current possible values are auto (default), geo, and reverse-lookup.
viewName [string] Specify the type of visualisation you want to load. Current possible value is host, which shows the single hosts not grouped by AS or geolocation. Default is "host".
dataApiMetadata [string] Specify the URL of the metadata REST API.
dataApiResults [string] Specify the URL for the results REST API.
dataApiAsAnnotation [string] Specify the URL for the IP to AS lookup API.
dataApiReverseDns [string] Specify the URL for the IP to reverse DNS lookup.
dataApiGeolocation [string] Specify the URL for the IP to geolocation lookup.
shortAsNamesApi [string] Specify the URL for the AS to short name lookup.
peeringDb [string] Specify the URL for the PeeringDB REST API.
autoStart [true, false] Start the widget once loaded or wait for the .init() command.
streamingUrl [string] Specify the URL of the socket.io streaming.
realTimeUpdate [true, false] Enable rea-time updates from by using web-sockets
preloadGeolocations [true, false] Load host geolocations at initialisation time Default false.
onlyGraph [true, false] Show only the graph without the rest of the interface. Useful for embedding TraceMON in other interfaces.
bypassApiCache [true, false] Bypass API cache. Default false.

In addition to the parameters in the embed code, it is possible to interact with the widget in two ways:

  • In a command line fashion by opening the console of the browser;
  • Using the exposed methods of the object returned by the initTracemon() function.

In both cases, the widget will explain all the available options in the console.

Last Updated: Wednesday 24 August 2022