View on GitHub rose

Research on Open SRv6 Ecosystem

Segment Routing (SR) is a form of source routing. The SR architecture works by including a list of segments in the packet headers. A segment can represent a topological instruction (e.g. a node to be crossed) or a service instruction (e.g. an operation to be executed on the packet).

The Segment Routing architecture can be implemented using MPLS or IPv6 as data plane. We focus on the IPv6 implementation, called SRv6, in which the segments are identified by IPv6 addresses. SRv6 supports advanced services like Traffic Engineering, Service Function Chaining and Virtual Private Networks in IPv6 backbones and datacenters.

The ROSE project tackles multiple aspects of the SRv6 technology: Data Plane, Control Plane, SRv6 host networking stack, integration with applications, integration with Cloud/Data Center Infrastructures.

ROSE builds up and maintain a Linux based Open Ecosystem for SRv6, composed of several sub-projects, like SRPerf (performance evaluation of SRv6 implementations), SRv6 SDN (gRPC based API for controlling SRv6 Linux routers), SRv6 uSID implementation in Linux and P4 and several others. We list our published papers below and present hereafter our open source SRv6 ecosystem, with a bottom up approach.

If you want to contribute to the ecosystem, provide feedback or get in touch with us, see our contact page.

SREXT kernel module

SRNK SR proxy Native Kernel

pyroute2 extensions to support SRv6

SRPerf performance evaluation for SRv6 implementations

SRv6 uSID (micro segment) implementation in Linux

SRv6 uSID (micro segment) implementation on P4

SRv6 PM - Performance Monitoring

SRv6 SDN

rose-srv6 ready-to-go Virtual Machine

Emulation tools

Testbeds IntErconnections with L2 overlays – SRv6 for SFC

SREXT kernel module

SREXT is a kernel module providing the basic Segment Routing functions in addition to more advanced ones. It can be used as a standalone SRv6 implementation or as a complement to the existing SRv6 kernel implementation (kernel 4.10 and later kernels).

SRNK - SR proxy Native Kernel

SRNK is an SR proxy which acts as relay mechanism in order to support SRv6 unaware VNFs. It is implemented extending the current support for SRv6 in Linux kernels (>= 4.14).

pyroute2 extensions to support SRv6

pyroute2 is a lightweight netlink library written in python. We submitted a patch which adds the support for SRv6 basic functionality.

Changelog:

The extension is available from 0.5 release.

SRPerf - a Performance Evaluation Framework for SRv6 implementations

SRPerf is a performance evaluation framework for software and hardware implementations of SRv6.

SRv6 uSID (micro segment) implementation in Linux

This project implements the SRv6 “micro segment” (uSID for short) solution in Linux.

The processing of micro segments is performed by the Linux kernel, extending the existing SRv6 implementation. The iproute2 userspace tool has been modified to support the configuration of the SRv6 uSIDs.

SRv6 uSID (micro segment) implementation on P4

p4-srv6-usid implements the SRv6 “micro segment” (uSID for short) solution using the P4 language and shows a DEMO.

The SRv6 uSID solution is an extension to the SRv6 Network Programming model, which allows expressing SRv6 segments with a very compact and efficient representation.

SRv6-PM (SRv6 Performance monitoring)

srv6-pm accurate Per-Flow Packet Loss Monitoring in Linux kernel

SRv6 SDN

SRv6 SDN a collection of modules implementing different functionalities of a SDN controller for SRv6

rose-srv6 VM

The rose-srv6 VM is a ready-to-go Virtual Machine available for tutorial and development purposes. The rose-srv6 VM includes an emulated network environment based on Mininet and relies on the Linux kernel for implementing the SRv6 data plane. In the control plane, the Linux nodes offer a gRPC southbound API to a controller developed in python.

Download and installation instructions.

Emulation tools

The emulation tools are a collection of projects meant to support SRv6 experiments both over Mininet and IAAS like testbeds. Hereafter the list of projects composing our emulation tools:

Testbeds IntErconnections with L2 overlays – SRv6 for SFC

The work concerns the deployment of arbitrary overlay topologies over multiple testbeds and the Service Function Chaining using SRv6 (IPv6 Segment Routing): “TIE-SR: Testbeds IntErconnections with L2 overlays – SRv6 for SFC” (see slides: https://goo.gl/utvxzF).

VM images

See the rose-srv6 VM

Scientific papers

The Team