/p4-srv6

Primary LanguageJavaApache License 2.0Apache-2.0

IPv6 Segment Routing SRv6

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