Giter VIP home page Giter VIP logo

rtt_visual_multi's Introduction

What is it about?

This project allows visualization of multiple timeseries plotted with perspective effect.

More specifically, we use this tool to visually explore the RTT traces spanning over several months of hundreds of probes grouped by the AS link they pass through. With this and topological information, we are available to identify congestion shared by probe groups and further locate where the congestion probably happens.

Screenshot of visualization interface

RIPE Atlas provides as well an awesome tool LatencyMon to visualize multiple probes traces in a measurement. The tools provides great flexibility in grouping probes and friendly interface for navigating the trace. However, it falls short in following aspects:

  1. not possible to group probe by the path traversed;
  2. not scalable enough to filter out probes from measurements involving a great number of probes, say RIPE Atlas built-in measurements;
  3. the visual presentation is not adapted to the case where hundreds of probes could be involved.

How to use it?

  1. Extract groups of probe traces indicated in txt files and parse them in json format fit for plotting.
  2. Select json file visualize it with the tool.

RTT trace extraction

Ping measurements from RIPE Atlas are the input. In a previous project, we collected ping measurements from more than 6000 probes toward DNS b-root over 3 months. These traces are cut into chunks and stored in multiple files, see the docs for more details.

With topology visualization, we grouped probes that traverse a same AS path and stored these probe IDs in a txt file.

In this part, we would like to extract the Ping measurements for probes grouped in a same txt file, parse them and store them in a single json file ready for plot.

More specifically:

$ python queryrtt.py -h
usage: queryrtt.py [-h] [-p PROBEDIRECTORY] [-t TRACEDIRECTORY] [-i INDEXFILE]
                   [-s CHUNCKSUFFIX]

optional arguments:
  -h, --help            show this help message and exit
  -p PROBEDIRECTORY, --probeDirectory PROBEDIRECTORY
                        the directory storing probe IDs grouped by link
  -t TRACEDIRECTORY, --traceDirectory TRACEDIRECTORY
                        the directory storing all the ping measurements chunks
  -i INDEXFILE, --indexFile INDEXFILE
                        the file that maps probe ID to chunk IDs
  -s CHUNCKSUFFIX, --chunckSuffix CHUNCKSUFFIX
                        chunks suffix is distinguish different measurements,
                        say, 1010.json, v4 ping for b-root

The generated json file has the same prefix/name as the txt file with probe IDs. The json is in the following format:

{
  "probe ID in string": [
    {
      "epoch": int, second since epoch,
      "value": numeric, here the RTT in msec,
     },
    {
      ...
    }
    ...
  ],
  "another probe ID in string": [{...},...],
  ...
}

Visualization in web

Open rtt.html in Chrome/Safari allows you to visualize a selected json file previously generated as shown in the above screenshot. On can navigate in time by setting a begin and end datetime in the format %Y-%m-%d %Hh or simple use after or before button to go through the entire duration.

Requirements

d3 is required in js_lib/vis.js.

rtt_visual_multi's People

Contributors

wenqinshao avatar

Watchers

 avatar  avatar

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.