.. _srv6_doc:

SRv6: Segment Routing for IPv6
==============================

This is a memo intended to contain documentation of the VPP SRv6
implementation. Everything that is not directly obvious should come
here. For any feedback on content that should be explained please
mailto:pcamaril@cisco.com

Segment Routing
---------------

Segment routing is a network technology focused on addressing the
limitations of existing IP and Multiprotocol Label Switching (MPLS)
networks in terms of simplicity, scale, and ease of operation. It is a
foundation for application engineered routing as it prepares the
networks for new business models where applications can control the
network behavior.

Segment routing seeks the right balance between distributed intelligence
and centralized optimization and programming. It was built for the
software-defined networking (SDN) era.

Segment routing enhances packet forwarding behavior by enabling a
network to transport unicast packets through a specific forwarding path,
different from the normal path that a packet usually takes (IGP shortest
path or BGP best path). This capability benefits many use cases, and one
can build those specific paths based on application requirements.

Segment routing uses the source routing paradigm. A node, usually a
router but also a switch, a trusted server, or a virtual forwarder
running on a hypervisor, steers a packet through an ordered list of
instructions, called segments. A segment can represent any instruction,
topological or service-based. A segment can have a local semantic to a
segment-routing node or global within a segment-routing network. Segment
routing allows an operator to enforce a flow through any topological
path and service chain while maintaining per-flow state only at the
ingress node to the segment-routing network. Segment routing also
supports equal-cost multipath (ECMP) by design.

Segment routing can operate with either an MPLS or an IPv6 data plane.
All the currently available MPLS services, such as Layer 3 VPN (L3VPN),
L2VPN (Virtual Private Wire Service [VPWS], Virtual Private LAN Services
[VPLS], Ethernet VPN [E-VPN], and Provider Backbone Bridging Ethernet
VPN [PBB-EVPN]), can run on top of a segment-routing transport network.

**The implementation of Segment Routing in VPP covers both the IPv6 data
plane (SRv6) as well as the MPLS data plane (SR-MPLS). This page
contains the SRv6 documentation.**

Segment Routing terminology
---------------------------

-  Segment Routing Header (SRH): IPv6 routing extension header of type
   ‘Segment Routing’. (draft-ietf-6man-segment-routing-header-05)
-  SegmentID (SID): is an IPv6 address.
-  Segment List (SL) (SID List): is the sequence of SIDs that the packet
   will traverse.
-  SR Policy: defines the SRH that will be applied to a packet. A packet
   steered into an SR policy may either receive the SRH by IPv6 header
   encapsulation (as recommended in draft-ietf-6man-rfc2460bis) or it
   could be inserted within an existing IPv6 header. An SR policy is
   uniquely identified by its Binding SID and associated with a weighted
   set of Segment Lists. In case several SID lists are defined, traffic
   steered into the policy is unevenly load-balanced among them
   according to their respective weights.
-  Local SID: is a SID associated with a processing function on the
   local node, which may go from advancing to the next SID in the SRH,
   to complex user-defined behaviors. When a FIB lookup, either in the
   main FIB or in a specific VRF, returns a match on a local SID, the
   associated function is performed.
-  BindingSID: a BindingSID is a SID (only one) associated one-one with
   an SR Policy. If a packet arrives with an IPv6 DA corresponding to a
   BindingSID, then the SR policy will be applied to such packet.

SRv6 Features in VPP
--------------------

The SRv6 Network Programming
(*draft-filsfils-spring-srv6-network-programming*) defines the SRv6
architecture.

VPP supports the following SRv6 LocalSID functions: End, End.X, End.DX6,
End.DT6, End.DX4, End.DT4, End.DX2, End.B6, End.B6.Encaps.

For further information and how to configure each specific function:
:ref:`srv6_localsid_doc`

The Segment Routing Policy
(*draft-filsfils-spring-segment-routing-policy*) defines SR Policies.

VPP supports SRv6 Policies with T.Insert and T.Encaps behaviors.

For further information on how to create SR Policies: :ref:`srv6_policy_doc`

For further information on how to steer traffic into SR Policies:
:ref:`srv6_steering_doc`

SRv6 LocalSID development framework
-----------------------------------

One of the *‘key’* concepts about SRv6 is network programmability. This
is why an SRv6 LocalSID is associated with an specific function.

However, the true way to enable network programmability is allowing
any developer **easily** create his own SRv6 LocalSID function. That is
the reason why we have added some API calls such that any developer can
code his own SRv6 LocalSID behaviors as plugins an add them to the
running SRv6 code.

The principle is that the developer only codes the behavior -the graph
node-. However all the FIB handling, SR LocalSID instantiation and so on
are done by the VPP SRv6 code.

For more information please refer to: :ref:`srv6_plugin_doc`

Available SRv6 plugins include:

-  :ref:`srv6_as_plugin_doc`
-  :ref:`srv6_ad_plugin_doc`
-  :ref:`srv6_am_plugin_doc`
-  :ref:`srv6_mobile_plugin_doc`
