Kernel settings

SRv6 is available in the mainstream Linux kernel since version 4.10. We recommend that you fetch the latest version of the kernel at http://kernel.org to benefit from recent features and bugfixes. Alternatively, you can clone the net-next git repository at https://kernel.googlesource.com/pub/scm/linux/kernel/git/davem/net-next.git. This repository contains the networking updates to be included in the next Linux release.

To enable SRv6 support, at least CONFIG_IPV6 must be enabled. The default built-in SRv6 code supports elementary processing of SR-enabled packets. For extended features such as SR encapsulation or other advanced processing, enable CONFIG_IPV6_SEG6_LWTUNNEL. The HMAC extension of SRv6 can be enabled through CONFIG_IPV6_SEG6_HMAC. To use iptables to filter packets on their SRv6 header, enable CONFIG_IP6_NF_MATCH_SRH (available since kernel v4.18). Finally, the BPF network functions can be enabled through CONFIG_IPV6_SEG6_BPF (available since kernel v4.18).

Today most of the recent distributions compile the kernel with CONFIG_IPV6_SEG6_LWTUNNEL and CONFIG_IPV6_SEG6_HMAC:

  - Debian (since 10)
  - Fedora (since 24)
  - Raspbian (since 2018-04-18)
  - Ubuntu (since 18.04)
  - [...]

CONFIG_IPV6_SEG6_BPF is enabled in:

  - Debian (since 10)
  - Fedora (since 27)

Fedora (since 27) is the only one enabling CONFIG_IP6_NF_MATCH_SRH as well.

Userspace tools

SRv6 features are controlled through sysctls and through the iproute2 tool (since version 4.12).

Vagrant box

To plug and play, you can use our vagrant box. SRv6 support is enabled and it is packed with iproute2 and Nanonet.


Page last modified on April 10, 2019, at 12:08 PM