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.
Linux kernel 4.14
Kernel 4.14 is another milestone in SRv6 support in Linux. A new set of SRv6 behaviors has been added to the kernel (see table below).
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 RFC8986.
The srext module is available on GitHub.
SR behaviors support
The following tables show the availability in Linux of each SRv6 behavior defined in RFC8986.
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), srext|
|End.X||Endpoint function with Layer-3 cross-connect||4.10 (February 2017), srext|
|End.T||Endpoint function with specific IPv6 table lookup||4.14 (November 2017)|
|End.DX2||Endpoint with decapsulation and Layer-2 cross-connect||4.14 (November 2017), srext|
|End.DX6||Endpoint with decapsulation and IPv6 cross-connect||4.14 (November 2017), srext|
|End.DX4||Endpoint with decapsulation and IPv4 cross-connect||4.14 (November 2017), srext|
|End.DT6||Endpoint with decapsulation and IPv6 table lookup||4.14 (November 2017)|
|End.DT4||Endpoint with decapsulation and IPv4 table lookup||5.11 (December 2020)|
|End.DT46||Endpoint with decapsulation and IP table lookup||In development|
|End.B6||Endpoint bound to an SRv6 policy||4.14 (November 2017)|
|End.B6.Encaps||Endpoint bound to an SRv6 encapsulation Policy||4.14 (November 2017)|
|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.AD||Endpoint to SR-unaware APP via dynamic proxy||srext|
|End.AM||Endpoint to SR-unaware APP via masquerading||srext|
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||4.14 (November 2017)|