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
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.
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.
This repository is structured as follows:
app/
ONOS app Java implementationconfig/
configuration filesmininet/
Mininet script to emulate a topology ofstratum_bmv2
devicesp4src/
P4 implementationtest/
test packetsutils/
utilities include docker file
TBD