Categorygithub.com/nextmn/srv6
modulepackage
0.0.22
Repository: https://github.com/nextmn/srv6.git
Documentation: pkg.go.dev

# README

NextMN-SRv6

NextMN-SRv6 is an experimental implementation for some SRv6 MUP Endpoint Behaviors.

[!WARNING] This project is still at the early stages of development and contains bugs and will crash in unexpected manners. Please do not use it for anything other than experimentation. Expect breaking changes until v1.0.0

Roadmap

ProviderBehaviorImplemented?Todo
NextMNEnd.MAPno-
NextMNEnd.M.GTP6.Dno-
NextMNEnd.M.GTP6.D.Dino-
NextMNEnd.M.GTP6.Eyessend ICMP when errors
NextMNEnd.M.GTP4.Eyessend ICMP when errors
NextMNH.M.GTP4.Dyessend ICMP when errors, optional: respond to GTP Echo Req
NextMNEnd.Limitno-
NextMNEnd.M.GTP6.E.Rednorequires a map of gnbs addr; order of bit field considerations
NextMNWithCtrlH.M.GTP4.Dpartialsrc address should not be hardcoded
NextMNWithCtrlH.Encapspartialsrc address should not be hardcoded
LinuxEndyes-
LinuxEnd.DX4yes-
LinuxH.Encapsyes-
LinuxH.Inlineuntested-
PDU Session TypeSupported?
IPv4yes
IPv6no
IPv4v6no
Ethernetno
Unstructuredno

Incoming packet flow

incoming packet flow

Getting started

Build dependencies

  • golang
  • make (optional)

Runtime dependencies

  • iproute2
  • iptables

Build and install

Simply run make build and make install.

Docker

If you plan using NextMN-SRv6 with Docker:

  • The container requires the NET_ADMIN capability;
  • The container should enable IPv6, and Segment Routing
  • The container requires the forwarding to be enabled (not enabled by the container itself);
  • The tun interface (/dev/net/tun) must be available in the container.

This can be done in docker-compose.yaml by defining the following for the service:

cap_add:
    - NET_ADMIN
devices:
    - "/dev/net/tun"
sysctls:
    - net.ipv6.conf.all.disable_ipv6=0
    - net.ipv4.ip_forward=1
    - net.ipv6.conf.all.forwarding=1
    - net.ipv6.conf.all.seg6_enabled=1
    - net.ipv6.conf.default.seg6_enabled=1

Author

Louis Royer

License

MIT