CIMAP: Customized Internet Mapping and Picturing

Home
CIMAP(My Project)
Mentor
The Lab
Life at UMass

New! View the final DMP Report (DOC) (PDF).

You can now use the applet version of the application we have been developing.

Before reading the description of my project, it is helpful to understand the context of it in the lab I work in. My progress is documented in my journal.

The internet's power to relay messages from virtually any machine that connects to its network lies in its structure. Many Autonomous Systems (ASes) like the Harvard University web system, are connected to the internet an annouce their IP addresses to their service providers (if an AS is the back bone service provider, like AT&T, it announces to everyone else). This way, Harvard's service providers know how to find Harvard and the computers connected to it. Harvard is a customer of some provider, which may itself be a customer of a backbone provider. In theory, this makes a hierarchical structure of passing IP address announcements to the backbone providers, which "confer" amongst themselves and agree to relay traffic between each other when someone in Mongolia wants to reach Harvard.

Each AS has a number (i.e. AT&T is 7018) and a range of IP addresses that belong to it. Futher, each AS that is a provider to anyone refers to a BGP routing table to know to whom to send packets. Pretend an AS is a mail sorter in Chicago who has to decide where to send each piece of mail. A piece of its routing table may look like this:

Destination Send to:
BostonPhiladelphia
Houston Dallas
Boston New York


An AS may have more than 1 route to it, as is evident with Boston. Moreover, relationships can be established between ASes. Philadelphia and New York seem to be hierarchical peers, whereas everyone seems to be an eventual customer of Chicago. Professor Gao developed an algorithm that, given a BGP routing table, creates a table that lists the customers, providers, peers, and siblings for each AS.

The idea of this project is, given a BGP routing table and a relationships file, to map paths from one Autonomous System(AS) to another, as well as from one Autonomous System to its direct and indirect neighbors, whatever the relationship between them may be.

The project began almost a year ago, and many parts of the algorithm for a graphical map were created by Karim Mattar. However, after analysizing it, I find that it has many points for improvement:
  • Currently, the memory usage of the Java application is very heavy, partly due to the immense calculations required to draw the nodes and edges to map the paths, and partly due to the actual graphical drawing aspect. A lot of memory is being consumed by inefficient algorithms, extra data strcutures (ones that are not used), and memory-inefficient data structures (Vectors should be replaced by ArrayLists)
  • The GUI of the program is very unfriedly, and there is no help file. If this program will be used by anyone other than its programmers, the GUI must be simplified and reorganized, as well as provide essential feedback, like progress bars (instead of a blank screen), notification of performed tasks, etc.
  • Right now, the application creates a drawing according to the numbers of AS hops from the destination AS to the source AS. Another algorithm could be developed that would draw according to relationships instead of distance.
  • The structure of the code is hard to understand, and the actual code must be reorganized in the JBuilder project file.
  • The application used to be an applet, but was converted. Teng Fei and I agree that it is worth investigating a web-based lightweight version of the program that would not require the user to upload or create a parsed BGP table. This would require a large amount of recoding, and implementing a time-efficient mySQL database for web access.


For more in-depth discussions of these issues, as well as progress on these ideas, see the journal.