Coder Social home page Coder Social logo

wenqinshao / as_topo Goto Github PK

View Code? Open in Web Editor NEW
4.0 2.0 1.0 11.34 MB

Interactive visualisation of AS topology learnt from RIPE Atlas.

Python 65.34% HTML 2.11% JavaScript 32.55%
topology-visualiztion ripe-atlas d3-js traceroute-measurements topology-graph asn ixps

as_topo's Introduction

What is it about?

This project visualizes the RIPE traceroute measurements collected in a previous project on RTT change detection and correlation with path changes.

Screenshot of the visualization interface

RIPE Atlas recently released a visual tool TraceMON for their traceroute measurements. However it only allows a handful probes to be visualized at a time. With the tools provided in this work, we are able to quickly and interactively plot and query the AS-level topology learnt from traceroutes initiated by more than 6000 RIPE Atlas probes toward DNS b-root.

How to use?

  1. Generate a topology graph from paths measured by traceroute;
  2. visualize the generated graph in an interactive manner.

From paths to topology graph

Traceroute measurements from RIPE Atlas are the input to this project. Tools are built previously to translate IP hops to AS hops. The presence of IXP is as well detected. The data format of processed RIPE traceroute measurement is specified in the docs of the previous project.

For the moment being, this work focuses on the topology visualization at AS level. Therefore, as_graph.py reads the asn_path attribute of each probe in building the topology graph.

More detailed usage:

$ python as_graph.py -h
usage: as_graph.py [-h] [-d DIRECTORY] [-s SUFFIX] [-e END] [-b BEGINTIME]
                   [-t STOPTIME] [-o OUTFILE]

optional arguments:
  -h, --help            show this help message and exit
  -d DIRECTORY, --directory DIRECTORY
                        the directory storing data.
  -s SUFFIX, --suffix SUFFIX
                        the suffix of files to be considered in the directory
  -e END, --end END     if all the measurements have a common destination,
                        specify it with this flag
  -b BEGINTIME, --beginTime BEGINTIME
                        the beginning moment for traceroute rendering, format
                        %Y-%m-%d %H:%M:%S %z
  -t STOPTIME, --stopTime STOPTIME
                        the ending moment for traceroute rendering, format
                        %Y-%m-%d %H:%M:%S %z
  -o OUTFILE, --outfile OUTFILE
                        Specify the name of output .json file

Use -e option to specify the destination ASN if it can be known in adavance. That will help filter out the traceroute measurements failed to reach the destination. If unspecified, any ASN appears at the end of a path will be regarded as a destination and plotted in red.

If begin time (-b) or stop time (-t) is not given, the script will read from/to the beginning/end of path sequences. If both of them remain unspecified, only of first traceroute path of each probe will be considered.

An example output of generated topology graph is given in example.json.

Viusalize in web

This step visualizes in a web browser the above produced .json file describing the graph of AS topologh revealed by traceroute measurements.

One can directly open graph.html in his favorite browser for that purpose. (NOTE: code only tested with Chrome and Safari.)

One can also select and visualize .json files locally available. At the bottom of the page, we provide as well the parameters fed to as_graph.py in building the graph.

Red nodes are measurement destinations, orange nodes are IXPs, violet ones are source ASes of traceroutes, remaining transit ASes are in green.

Hover the mouse over nodes will show their ASN. When placing mouse over links, the IDs of probe that ever passes through this link will be shown. By double clicking on the link, these probe IDs are save to a file.

Single click on a source node will shown all the links that all its probes took to reach the destinations.

Requirements

Python library networkX is required in building the topology graph.

d3, FileSaver, lodash is required by the js_lib/vis.js.

as_topo's People

Contributors

wenqinshao avatar

Stargazers

 avatar  avatar  avatar  avatar

Watchers

 avatar  avatar

Forkers

volsec

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.