Understanding Networks - TraceRoute

by Simon M. Jensen - September 25, 2018

This week in Understanding Networks our assignment was to explore the TraceRoute commando. TraceRoute is a computer network diagnostic tool displaying paths and measuring transit delays of packets across an IP network.

TraceRoute can be used from the command line and returns information such as: Hop number, Round trip time (RTT), Name and IP-address. However the overview you get in the command line can be hard to interpret.


TraceRoute as it looks from the commandLine

There are many pages out there visualizing the traceRoute information - Monitis is one of these.

For this weeks assignment I decided that I wanted to build my own TraceRoute.app - mapping information from my Domain searches to a map. I wanted to build it in node - since I am still familiarizing myself with this library.

How I imagined it to work: A npm library called ‘nodejs-traceroute’ would return the Ip-address from the different “hops”. An API called Ip-api would provide additional information such as geolocation and provider for each Ip-address - this would be added to a map. (The information returned from the Ip-API is shown in the following image.


In my node app, I passed information from each HOP into the API and loaded the returned information into the browser using express. In the browser I used mappa.js, a canvas wrapper for maps, to create a map and imported name, latitude and longitude of each Ip-address into the sketch to get an idea of how paths of IP networks are connected. The app would enable me to type a domain and see the request travel through the world. I ran into a lot of code-related issues along the way and will need more time to refine functions, provide better information on the map and change the user-input. However, this early version still provides some helpful visual feedback to the topic and is useful as a tool for my own use.

This video shows how the app currently works, displaying a traceRoute request to a government page in Russia.

There was a lot of learning from working on this project in node. Also, when running traceRoute over and over again you tend to see some “network patterns”.

A few observations:


The code for this project can be found here