©Copyright 2004, NIIT and SLAC.
projects home maggie tools meetings presentations team docs



Understanding about the discussion on 29th March,2004


Fast Trace route Implementation


Linux trace router man page

            Traceroute utilizes the IP header TTL field and attempts to capture the ICMP TIME_EXCEEDED response from each router along the path to the destination host. The Traceroute process ends when it receives ICMP "port unreachable" messages.

The Traceroute process send UDP (or optionally ICMP) probe packets with some TTL value and then listens to ICMP "time exceeded" reply from a gateway or ICMP "port unreachable" from end host. The probes start with TTL one and increase by one until we get an ICMP "port unreachable".

IEPM-LITE trace route requirement

1.      Parallel Traceroute using ICMP or UDP probes. This probably means that we have to send parallel UDP or ICMP messages with different TTL values. Like we can send 5 messages in parallel to www.xyz.com

a.       1st  message with   TTL 1           reply = ICMP TIME_EXCEEDED

b.      2nd message with   TTL 2           reply = ICMP TIME_EXCEEDED

c.       3rd messages with  TTL 3           reply = ICMP TIME_EXCEEDED

d.      4th messages with  TTL 4           reply = ICMP  Port Unreachable

e.       5th messages with  TTL 5           reply = ICMP  Port Unreachable

So as soon as we get the first messages with Port Unreachable we will conclude end of trace route.

2.      Should not require root.

a.       Trace route process can be initiated by a user.

Comments/Challenges/Discussion on above given two requirements

1.      When we talk about the parallel traceroute approach I can see two challenges

a.       Packet Loss

If some packet is lost in transit then we can not track which node information did not receive. This problem can be solved by using sequence numbers I guess.[c1] 

b.      Packet sequence

Due to congession in the route packets can lose their seqence. And five packets send with seq numbers 1 2 3 4 5 their reply can come like this 3 5 2 4 1 or what ever. So if 5th packet with TTL  5 gets reply as port unreachable we will conclude end of trace route. [c2] 

2.      Should not require the user of traceroute to need root.

a.       Raw sockets require root privilages so we can not send ICMP echo request message we will have to send some UDP messages.

b.      But the reply will again be in the form of ICMP like time excedded or port unreachable.

c.       So the problem with the point B is, that we not overcome firewalls if there is some firewall that is blocking ICMP messages then we can perform traceroute.

[c3] Displaying of pinger nodes on world map with the help of Latitude and Logitude values

1.      NetGeo - The Internet Geographic Database

This tool is developed by CAIDA. The url of the tool is mentioned below http://www.caida.org/tools/utilities/netgeo/

We have tried using this tool to get the information about the Latitude and Longitude of any IP address specified to this tool.

Example : http://www.slac.stanford.edu/ as ip address : .

The output of this NetGeo was:

C:\>java -classpath . NetGeoClient

Testing getCountry( "" )

Result = US

Longitude = 37.42

Latitude = -122.16

So by getting the information about Log and Lat from this tool we will display the node on the world map with its URL.

Iím sorry but what I had in mind (and maybe can be done using the above to fulfil part of the requirement) is given say 2 lists of IP hosts (one list might be say PingER measurement sites, the other might be say 300 PingER remote hosts) together with their lat/longs draw a map and place a symbol for each host at the appropriate lat/long. Since there are 2 lists, hosts from the different lists should have different symbols.  We have the above working. We used a package from CAIDA to do this (Jerrod knows the details, Jerrod can you provide the details and also send them your modified version). An example of the current output can be seen at http://www.slac.stanford.edu/~iepm/output.png  We would like to extend it 2 ways:

1.      When a person moves the mouse over the symbol for a host information for that host is displayed. The information to be displayed would be provided in the list.

2.      When a person moves the mouseover the symbol and then clicks on it a URL specific to that node will be linked to. The URL would be provided in the list.


About this project our task was to install at NIIT and make the installation procedure easy and user friendly. So please can you give us the link to this software package and installation procedure so that we can install it here at NIIT and see how we can make the installation procedure more easy.

Jerrod, Connie & I are actively working on this package. I do not think it is quite ready for distribution. We need to free up Jerrod to make a first pass over making it distributable, or at least to give an idea of where to find things and what is needed and the dependencies.

Mailing List

The name of the mailing list which we propose is maggie-ns@niit.edu.pk or


Please give your suggestion. And please send us the email address of all the team members at SLAC.

Letís go with maggie-ns@niit.edu.pk

There is a mailing list for our group at iepm-l@slac.stanford.edu which might be better to use since we will keep it current.

The individual SLAC email addresses are:

cottrell@slac.stanford.edu, cal@slac.stanford.edu, jiri@slac.stanford.edu, jerrodw@slac.stanford.edu, grosso@slac.stanford.edu


The maggie-ns site is the progress and its first prototype will be ready by tommorow.


 [c1] Wonít it be possible to see which node is responding by looking at the source address in the ICMP responses

 [c2]Indeed we can get out of order responses. Thus we cannot just assume we are done when the last packet sent is received. I suspect there will need to be a timeout  (optionally set by the user) to allow for losing packets (e.g. probe does not reach node or node does not respond).

 [c3]What I had in mind here is that the traeroute process is owned (set uid) by root and so can be run with root privs, but the user does not need root.