Linux kernel 4.10
The IPv6 dataplane functionalities enabling Segment Routing packet generation and forwarding are available in the latest Linux kernel releases (4.10 and later). This implementation is provided by the IP Networking Lab of Université Catholique de Louvain, Louvain-la-Neuve, Belgium.
Quick start guide and complete documentation are available on the dedicated website.
For any question regarding this implementation, please reach out to the developers mailing list.
srext - a Linux kernel module for the SRv6 Network Programming model
In parallel, the Networking Group from University of Rome Tor Vergata, Italy, is developing a new kernel module providing more advanced Segment Routing functions. This module is intended to be eventually fully compliant with the SRv6 Network Programming model defined in draft-filsfils-spring-srv6-network-programming.
The srext module is available on GitHub.
SR behaviors support
The following tables show the availability in Linux of each SRv6 behavior defined in draft-filsfils-spring-srv6-network-programming.
New entries will be added to these tables as more SRv6 behaviors are defined in IETF documents.
Endpoint functions are triggered when the IPv6 Destination Address of an incoming packet matches an entry in the My Local SIDs table of an SRv6-enabled node.
|End||Endpoint function||4.10 (February 2017)|
|End.X||Endpoint function with Layer-3 cross-connect||4.10 (February 2017)|
|End.T||Endpoint function with specific IPv6 table lookup||In development|
|End.DX2||Endpoint with decapsulation and Layer-2 cross-connect||In development|
|End.DX6||Endpoint with decapsulation and IPv6 cross-connect||In development|
|End.DX4||Endpoint with decapsulation and IPv4 cross-connect||In development|
|End.DT6||Endpoint with decapsulation and IPv6 table lookup||In development|
|End.DT4||Endpoint with decapsulation and IPv4 table lookup||In development|
|End.B6||Endpoint bound to an SRv6 policy||In development|
|End.B6.Encaps||Endpoint bound to an SRv6 encapsulation Policy||In development|
|End.BM||Endpoint bound to an SR-MPLS Policy||In development|
|End.S||Endpoint in search of a target in table T||In development|
|End.AS||Endpoint to SR-unaware APP via static proxy||srext (April 2017)|
|End.AM||Endpoint to SR-unaware APP via masquerading||In development|
Transit behaviors are triggered when an in-transit packet matches a steering rule on an SRv6-enabled node. Examples of steering rules are packets arriving on a specific incoming interface or whose Destination Address belongs in a given prefix.
|T.Insert||Transit behavior with insertion of an SRv6 Policy||4.10 (February 2017)|
|T.Encaps||Transit behavior with encapsulation in an SRv6 policy||4.10 (February 2017)|
|T.Encaps.L2||T.Encaps behavior of the received L2 frame||In development|