Git Product home page Git Product logo

int-platforms's Introduction

Common P4-based INT implementation for bmv2-mininet and Tofino platforms.

This is a P4 implementation of the In-Band Network Telemetry.

The main purpose of this repository is to develop and maintain a P4 implementation of INT common to various programmable platforms. So far, we managed to implement a common implementation in the P4 language for the bmv2-mininet environment and Tofino processors. Much of the INT code is common to both platforms, however there are places in the P4 code that require specific implementations for each platform. This differentiation has been accomplished using preprocessor directives for conditional compilation.The INT implementations for platforms such as DPDK and FPGA, due to numerous limitations, differ too much and are currently being developed in another code repositories. In the future, we hope to integrate all P4 code for INT into one common repository maintained and developed simultaneously for all plaftorms.

The INT implementation and testing was done within the GEANT Data Plane Programmibilty activity:

All INT code is under the Apache 2.0 licence.

In-Band Network Telemetry

In-Band Network Telemetry (INT) is specified by the P4 language community and can provide very detailed information on network behavior by inserting a small amount of information directly inside packets passing through network devices where INT functionality is enabled, essentially adding probing functionality to potentially every packet, including customer traffic. This makes INT a very powerful debugging tool, capable of measuring and recording the 'experience' of each tagged packet sent in the network.

INT workflow

P4 implementation of INT

This repository contains P4 code implementing the INT data plane functionality. Initially the P4 INT code was developped only for bmv2 but later on it was also adapted for Tofino switches. In this repository, we are trying maintain compatibility both with bmv2 and Tofino switches. Limitations of both platforms impacted this codebase.

Two versions of INT are currently available:

  • p4src/int_v0.4/ - version 0.4 of the INT protocol; compatible with the INT implementation contained in the ONOS network operating system; INT version 0.4 documentation is not longer available on p4.org; no longer used and maintained;
  • p4src/int_v1.0/ - version 1.0 of the INT protocol; currently the most tested version of the INT protocol;

Future plans nclude implementating of the INT specification version 2.0.

Note: All INT implementation use 64-bit ingress and egress timestamps (instead of 32-bit timestamps defined in INT specification documents).

Supported dataplane programmable platforms

This repository contains P4 code compatible with bmv2-mininet and Tofino (see ./p4src) as well as other software specific for particular platform:

  • bmv2-mininet - p4app tool to run INT code within mininet-bmv2 network topology located in platforms/bmv2-mininet/
  • Tofino - additional helper scripts located in platforms/tofino/ to run and configure INT node deployed using Tofino-switch

Please use links above for detailed documentation how to run and configure INT P4 code for those platforms (these are readme suppages).

Other useful INT software components

  • int-collector for gathering INT reports with monitored flow measurments from one or more INT sink nodes and converting reports into InfluxDB line-protocol messages
  • int-analytics containing InfluxDB as main DB for INT measurements as well as visualisation tools like Grafana

The INT monitoring of the int-p4app network flow

Contact

[email protected]

int-platforms's People

Contributors

damomeen avatar dingdamu avatar jaxa1337 avatar legofed3 avatar mariokuka avatar p4app-repo 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.