Skip to content

Fork of the project (netgroup/p4-srv6) to add to it INT capabilities based on the implementation by (ruimmpires/P4INT_Mininet) that used only IPv4, this project only focuses on IPv6

License

Notifications You must be signed in to change notification settings

Mohxen/p4-srv6-INT

 
 

Repository files navigation

p4-srv6-INT

This work was performed in the scope of the project MH-SDVanet: Multihomed Software Defined Vehicular Networks (reference PTDC/EEI-COM/5284/2020).

Fork of the project (netgroup/p4-srv6) found at https://github.com/netgroup/p4-srv6 implements SRv6 in Mininet environment where the switches use P4. This repository aims to adapt that solution to add INT into it like the implementation on the project (ruimmpires/P4INT_Mininet) found at https://github.com/ruimmpires/P4INT_Mininet

The new stratum image is a modification of stratrum version: 2022-06-30 built from source by modifying the Dockerfile (see file Dockerfile) adding X11, pip3 and scapy to it image compiled with name: davidcc73/stratum_bmv2_x11_scapy_pip3

Telemetry is not generated between hosts with the same switch (it's the same car, so it's irrelevant), because the packet that will be the report is cloned to egress at ingress start with no INT header.

TODO: explain the packet priority system

TODO: explain KShort path calculations based on: https://github.com/bmsousa/ONOS-Framework

TODO: explain ECMP path calculations based on: https://github.com/ruicao93/simple-ecmp/tree/master

IPv6 Segment Routing SRv6 Original README.md

SRv6 is a network architecture that encodes a list of instructions in the IPv6 packet header to define a network wide packet processing program.
Each instruction defines a node to process the packet and the behavior to be applied to that packet by that node.
The SRv6 network programming framework is being defined in IETF.

Implementation

In the project we provide an open source data plane of SRv6 in P4. We Leverage the Open Network Operating System (ONOS) for the control plane.
We augmented ONOS implementation with the necessary extensions to support SRv6.

This work is done as part of the Research on Open SRv6 Ecosystem (ROSE) project.

This work is based on the P4 tutorial by the Open Networking Foundation. For more information about the above listed software modules you can visit the Open Networking Foundation original repository.

There you can also find useful material like the slides explaining the tutorial and a prepared Ubuntu virtual machine with all the software installed. It is strongly recommended to download the prepared VM and run the DEMO inside it, as it contains the several dependencies needed to run the software.

Repository structure

This repository is structured as follows:

  • app/ ONOS app Java implementation
  • config/ configuration files
  • mininet/ Mininet script to emulate a topology of stratum_bmv2 devices
  • p4src/ P4 implementation
  • test/ test packets
  • utils/ utilities include docker file

Usage

TBD

About

Fork of the project (netgroup/p4-srv6) to add to it INT capabilities based on the implementation by (ruimmpires/P4INT_Mininet) that used only IPv4, this project only focuses on IPv6

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • Java 49.9%
  • Python 32.5%
  • P4 13.2%
  • Lua 2.1%
  • Dockerfile 0.9%
  • Makefile 0.8%
  • Shell 0.6%