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.
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
HIKe (HybrId Kernel eBPF forwarding)
k8s-SRv6 - Extending Kubernetes with SRv6
rose-srv6 ready-to-go Virtual Machine (and Tutorials)
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:
- Introduce IPRoute support for SRv6 tunnel
- Add encap and inline modes
- Support hmac functionality for SRH
- Initial parsing of human friendly form
- Add seg6_encap_info for RTA_ENCAP mgmt
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. This solution corresponds to the NEXT-C-SID Flavor defined in the Internet Draft Compressed SRv6 Segment List Encoding in SRH.
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. This solution corresponds to the NEXT-C-SID Flavor defined in the Internet Draft Compressed SRv6 Segment List Encoding in SRH.
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
HIKe (HybrId Kernel eBPF forwarding)
HIKe is a programmable data plane architecture that integrates the packet forwarding and processing based on the standard Linux kernel networking with the ones based on custom designed eBPF programs. HIKe does not want to trade the flexibility and generality of Linux kernel networking with eBPF performances, but wants to take the best of both worlds. In the context of the ROSE project, we use HIKe to speed up the performance of SRv6 software routers (altough HIKe is not limited to SRv6!).
SRv6 SDN
SRv6 SDN a collection of modules implementing different functionalities of a SDN controller for SRv6
k8s-SRv6
k8s-SRv6 extends Kubernetes to make use of SRv6. We have extended the Calico-VPP Kubernetes networking plugin with a new SRv6 overlay that supports:
- Encapsulation of both IPv4 and IPv6 pods networking
- Traffic Engineering of the overlay tunnels
rose-srv6 VM and tutorials
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:
- RDCL 3D the webgui, it produces a json representation of the topology and allows the deployment and the control of the experiment
- Dreamer Topology Parser and Validator is a library to parse the json representation of the topology
- SRv6 Properties Generators is a library for the management of the addressing plan
- SRv6 Mininet Extensions is a library to create Mininet networks for testing of SRv6 technology
- SoftFire TIESR Deployer creates the configuration of virtual networks for testing the SRv6 technology over IAAS like testbeds
- SoftFire TIESR Scripts these scripts are run over the VMs, they take into account the configuration files and consequently setup the VM
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).
- softfire-rdcl3d the webgui, it produces a json representation of the topology it also offers a web URL to receive the notification from openbaton (TODO: Add the links to this repo)
- Dreamer Topology Parser and Validator is a library to parse the json representation of the topology
- SRv6 Properties Generators is a library for the management of the addressing plan
- SoftFire TIESR Deployer creates the configuration of virtual networks for testing the SRv6 technology over IAAS like testbeds
- SoftFire TIESR Scripts these scripts are run over the VMs, they take into account the configuration files and consequently setup the VM
- SRv6 Controller is a collection of modules implementing different functionalities of a SDN controller
VM images
See the rose-srv6 VM
Scientific papers
-
A. Tulumello, A. Mayer, M. Bonola, P. Lungaroni, C. Scarpitta, S. Salsano, A. Abdelsalam, P. Camarillo, D. Dukes, F. Clad, C. Filsfils,
“Micro SIDs: a solution for Efficient Representation of Segment IDs in SRv6 Networks”,
IEEE Transaction on Network and Service Management, 2022, (pdf-preprint) -
A. Mayer, P. Loreti, L. Bracciale, P. Lungaroni, S. Salsano, C. Filsfils,
“Performance Monitoring with H^2: Hybrid Kernel/eBPF data plane for SRv6 based Hybrid SDN”,
Elsevier Computer Networks, Vol. 185, 11 February 2021 (pdf-preprint) -
P. Loreti, A. Mayer, P. Lungaroni, F. Lombardo, C. Scarpitta, G. Sidoretti, L. Bracciale, M. Ferrari, S. Salsano, A. Abdelsalam, R. Gandhi, C. Filsfils,
“SRv6-PM: A Cloud-Native Architecture for Performance Monitoring of SRv6 Networks”,
IEEE Transaction on Network and Service Management, special issue on “Advanced Management of Softwarized Networks”, March 2021 (pdf-preprint) -
A. Abdelsalam, P. L. Ventre, C. Scarpitta, A. Mayer, S. Salsano, P. Camarillo, F. Clad, C. Filsfils,
“SRPerf: a Performance Evaluation Framework for IPv6 Segment Routing”,
IEEE Transaction on Network and Service Management, June 2021 (pdf-preprint) -
P. L. Ventre, S. Salsano, M. Polverini, A. Cianfrani, A. Abdelsalam, C. Filsfils, P. Camarillo, F. Clad,
“Segment Routing: a Comprehensive Survey of Research Activities, Standardization Efforts and Implementation Results”,
IEEE Communications Surveys & Tutorials, Firstquarter 2021 (pdf-preprint) -
A. Abdelsalam, A. Tulumello, M. Bonola, S. Salsano, C. Filsfils,
“Pushing Network Programmability to the Limits with SRv6 uSID and P4”,
Demo Paper, 3rd P4 Workshop in Europe, EuroP4’20, 1 December 2020, Virtual Conference. -
A. Tulumello, A. Mayer, M. Bonola, P. Lungaroni, C. Scarpitta, S. Salsano, A. Abdelsalam, P. Camarillo, D. Dukes, F. Clad, C. Filsfils,
“Micro SIDs: a solution for Efficient Representation of Segment IDs in SRv6 Networks”,
16th International Conference on Network and Service Management, CNSM 2020 (Acceptance ratio ~19%), 2-6 November 2020, Virtual Conference (pdf). -
P. Loreti, A. Mayer, P. Lungaroni, S. Salsano, R. Gandhi, C. Filsfils,
“Implementation of Accurate Per-Flow Packet Loss Monitoring in Segment Routing over IPv6 Networks”,
IEEE International Conference on High Performance Switching and Routing, HPSR 2020, 11-14 May 2020, Virtual Conference (pdf-preprint). -
P. L. Ventre, M. M. Tajiki, S. Salsano, C. Filsfils,
“SDN Architecture and Southbound APIs for IPv6 Segment Routing Enabled Wide Area Networks”,
IEEE Transaction on Network and Service Management, Vol. 15, Issue 4, Dec 2018 (pdf-preprint) -
A. Mayer, S. Salsano, P. L. Ventre, A. Abdelsalam, L. Chiaraviglio, C. Filsfils,
“An Efficient Linux Kernel Implementation of Service Function Chaining for legacy VNFs based on IPv6 Segment Routing”,
5th IEEE International Conference on Network Softwarization (NetSoft 2019), 24-28 June 2019, Paris, France -
A. Mayer, E. Altomare, S. Salsano, F. Lo Presti, C. Filsfils,
“The Network as a Computer with IPv6 Segment Routing: a Novel Distributed Processing Model for the Internet of Things”,
NGOSCPS workshop at the CPS-IoT Week 2019, April 15 2019, Montreal, Canada -
A. Abdelsalam, S. Salsano, F. Clad, P. Camarillo, C. Filsfils,
“SR-Snort: IPv6 Segment Routing Aware IDS/IPS”,
2018 IEEE Conference on Network Function Virtualization and Software Defined Networks – Demo Track – NFV-SDN’18, Verona, Italy, Nov 27-29, 2018 -
A. Abdelsalam, P. L. Ventre, A. Mayer, S. Salsano, P. Camarillo, F. Clad, C. Filsfils,
“Performance of IPv6 Segment Routing in Linux Kernel”,
1st Workshop on Segment Routing and Service Function Chaining (SR+SFC 2018) at IEEE CNSM 2018, 5 Nov 2018, Rome, Italy -
A. Abdelsalam, S. Salsano, F. Clad, P. Camarillo, C. Filsfils,
“SERA: SEgment Routing Aware Firewall for Service Function Chaining scenarios”,
IFIP Networking 2018 Conference (NETWORKING 2018), Zurich, Switzerland, May 14-16, 2018 -
A. AbdelSalam, F. Clad, C. Filsfils, S. Salsano, G. Siracusano and L. Veltri,
“Implementation of Virtual Network Function Chaining through Segment Routing in a Linux-based NFV Infrastructure”,
3rd IEEE Conference on Network Softwarization (NetSoft 2017), Bologna, Italy, July 2017.
The Team
- Stefano Salsano
- Ahmed Abdelsalsam
- Andrea Mayer
- Paolo Lungaroni
- Carmine Scarpitta
- Giulio Sidoretti
- Pier Luigi Ventre
- Pierpaolo Loreti
- Francesco Lombardo
- Luca Veltri
- Lorenzo Bracciale
- Mohammad M. Tajiki