Giter Site home page Giter Site logo

czivar / ruru Goto Github PK

View Code? Open in Web Editor NEW
189.0 18.0 29.0 17.67 MB

Real-time TCP latency monitoring using DPDK backend and a 3D React frontend

License: BSD 3-Clause "New" or "Revised" License

Makefile 2.90% C 58.36% Shell 1.43% JavaScript 17.34% CSS 3.85% HTML 15.02% Dockerfile 1.10%
tcp-latency-monitoring dpdk ip2location

ruru's Introduction

Ruru: real-time TCP latency monitoring

'Ruru' is a TCP latency monitoring application that helps understanding wide area TCP traffic in real time. It utilises Intel DPDK for high speed packet processing (up to 40Gbit/s) and a Node.JS web frontend to present results.

Ruru live

Publications, talks, podcasts

Ruru at RIPE 75: https://ripe75.ripe.net/archives/video/92/

Ruru was featured in a PacketPushers podcast: http://packetpushers.net/podcast/podcasts/pq-142-tcp-latency-monitoring-ruru/

Ruru has been published in SIGCOMM 2017. Our paper is:

[1] Cziva, R., Lorier, C. and Pezaros, D. P. (2017) Ruru: High-speed, Flow-level Latency Measurement and Visualization of Live Internet Traffic. In: SIGCOMM 2017, Los Angeles, CA, USA, 21-25 Aug 2017

High-level architecture

The system componses of three parts:

  • DPDK-latency backend (written in C / multi-threaded): This software measures the elapsed time between SYN, SYN-ACK and the first ACK TCP packets for all TCP streams. It sends the measurement information (source IP, destination IP, latency (in microsecond)) on a ZMQ sockets.
  • Analytics (written in C / multi-threaded): This component retrieves AS / geotag information for all IPs (using the IP2location.com databases) in the measurement data received from the DPDK backend and generates basic statistics. It pushes information in JSON format on ZMQ sockets.
  • Frontend: It is a Node.js built with React and Deck.Gl. It uses socket.io to communicate with the browser.

Communication between components uses sockets (zmq and websockets). The high-level architecture is shown below.

Architecture

Installation

Installation consists of the following steps:

  1. Install dpdk with by running ./setup.sh
  2. Compile dpdk-latency with make
  3. Set up analytics (more details in the README file of the analytics)
  4. Set up the frontend (more details in the README file of the frontend)

Frequently asked questions

What does Ruru mean?

Ruru is an owl from New Zealand. The bird has been selected to symbolise our software's 'intelligence' and 'clarity in the darkness'. In Māori tradition the ruru was seen as a watchful guardian. You can learn more here.

Can I deploy it? What are the license restrictions?

Ruru is free to deploy and use. The software is provided using a BSD licence that you can find in the LICENSE file.

What does Ruru measure?

It measures TCP handshakes for each individual flow: the time it takes to set up a TCP connection. It looks at TCP flags (SYN, SYN-ACK, first ACK) of the TCP packets (and nothing else).

How does Ruru figure out geographical location / ASN information for IP addresses?

Ruru uses the IP2Location.com databases for IP->ASN, IP->geolocation and IP->proxy information mapping (these are 3 different databases from IP2Location).

What processing performance does Ruru provide?

The core of Ruru (that measures the latency for each flow) is based on DPDK, therefore it can cope with up to 40Gbit/s traffic. Geo-localising each source and destination IP address takes a lot of CPU cycles, therefore it mostly depends on how powerful your host machine is. We have deployed Ruru tapping a 10Gbit/s link.

Which NICs do you support?

All DPDK supported NICs can be used for Ruru. All supported NICs can be found here: http://dpdk.org/doc/nics. We used Intel X520 NICs at REANNZ.

In case of any other questions, please contact Richard Cziva ([email protected])

ruru's People

Contributors

cangus avatar tormenta74 avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

ruru's Issues

Traffic not forwarding

Hi @czivar ,

I try to use ruru latency monitor as forward bridge with physical nic, it's start up but not forwarding traffic to other port.

following command I use:
dpdk-latency -c 3 -n 4 -- -p 3 -T 60 --config "(0,0,1)" --forwarding

Note: No errors and no statistics.

Please advice.

Thank you,
Manoj M

install ruru package

Hi
I am trying to install ruru package over ubuntu 18.04
in the readme file it is writen to install the DPDK by using the following command :
Installation consists of the following steps:

Install dpdk with by running ./setup.sh
Compile dpdk-latency with make
Set up analytics (more details in the README file of the analytics)
Set up the frontend (more details in the README file of the frontend)

I can not find setup.sh file .
Can U send me more detailed instructions how to install the package ?
Thanks

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.