SRv6 Policy Support for Layer 2 and Layer 3 Services

This chapter provides information about SRv6 policy support for Layer 2 and Layer 3 services.

Topics in this chapter include:

Applicability

SRv6 policies for Layer 2 and Layer 3 services are supported in SR OS Release 22.7.R1 and later. The information and configuration in this chapter are based on SR OS Release 24.3.R2.

MPLS Segment Routing (SR) policies are described in the BGP Signaled Segment Routing Policy chapter.

Overview

SRv6 policies are Segment Routing (SR) policies with an IPv6 data plane. SRv6 policies consist of one or more lists of SRv6 segments, where each segment list represents a source route that can be used to enable traffic engineering through SRv6 networks. Each segment list contains a list of SRv6 SIDs comprising the top Segment Identifier (SID) and the further SIDs. Both 128-bit classic SIDs and 16-bit micro-segment SIDs can be used and it is possible to combine SRv6 segments derived from classic SRv6 and micro-segment SRv6 locators. The combination of classic and micro-segment SIDs can happen at the policy level and at the segment list level. A policy can have a segment list with only classic SIDs and another segment list with only micro-segment SIDs. A segment list can itself contain both classic and micro-segment SIDs. Different types of SIDs can be used, such as node SIDs (for classic SIDs: End SIDs; for micro-segment SIDs: uN SIDs) or adjacency SIDs (End.X SIDs; uA SIDs).

An SRv6 policy is identified through the { head-end, endpoint, color } tuple:
  • The head-end is the node where the SRv6 policy is instantiated. The head-end steers the traffic into the policy with the SID stack. From the perspective of the head-end, the SRv6 policy can be identified using the { color, endpoint } tuple.

  • The endpoint is the IPv6 destination of the SRv6 policy.

  • The color is a numerical value that is used by the head-end to associate the SRv6 policy with a characteristic, such as low-latency or high-throughput. The color is a 32-bit transitive extended community that forms part of the BGP NLRI which is exported by the endpoint, and the head-end resolves the next hop to that endpoint via an SR policy with the corresponding color.

Static SRv6 policies are configured through CLI, using the configure router segment-routing sr-policies static-policy <..> command with the type srv6 option. Static SRv6 policies can be configured on the head-end (head-end local) and it is also possible to configure static SRv6 policies on a remote node and signal these SRv6 policies using BGP to the head-end (head-end <non-local IPv4 system address>).

SRv6 policies are programmed in the IPv6 Tunnel Table Manager (TTMv6) and can be bound to BGP-based SRv6 services, such as IP VPN and EVPN services:
  • EVPN VPWS
  • EVPN VPLS
  • EVPN IFL
  • VPN IPv4
  • VPN IPv6

Similar to SR policies with an MPLS data plane, the next-hop resolution is based on the color and on the comparison of the next hop with the SR policy endpoint. The head-end, endpoint, and color define a matching policy, but a matching policy can be an SR MPLS policy or an SRv6 policy. Therefore, the service also uses the data plane technology of the policy to select the tunnel type to resolve over. SRv6 services can only resolve over SRv6 tunnels and MPLS services cannot resolve over SRv6 tunnels. An SRv6 service cannot fall back to an MPLS tunnel type.

The resolution command controls the automatic binding of SRv6 services to SRv6 tunnels. The resolution options are as follows:
  • tunnel-table

    The tunnel-table command option resolves the route directly to a tunnel in TTMv6. The system tries to find an SRv6 policy with the same endpoint and color for BGP routes received with an SRv6 TLV and that contain an SRv6 service SID in the TTMv6. If no such SRv6 policy is found in the TTMv6, the resolution fails.

  • route-table

    The route-table command option is the default behavior which resolves the route to a shortest path SRv6 tunnel in the route table.

  • fallback-tunnel-to-route-table

    This fallback command option first tries to resolve the route directly to a tunnel in the TTMv6. If none is found, the system falls back to the shortest path SRv6 resolution in the route table.

Configuration

Example topology with system IP addresses shows the example topology with six PEs, one route reflector (RR), and an external controller. In this example topology, the controller is an SR OS node that advertises non-local SRv6 policies using BGP. The controller is only used in two of the following examples; in the other examples, static SRv6 policies are configured on PE-1. The CEs are connected to PE-1 and PE-6 when Layer 2 services are configured.

Figure 1. Example topology with system IP addresses
The initial configuration includes:
  • cards, MDAs, ports
  • router interfaces with IPv6 addresses – only the system interface is configured with both IPv4 and IPv6 addresses
  • IS-IS on all router interfaces between the PEs and between PE-3, PE-4, and RR-7
  • static routes between RR-7 and the controller
  • SRv6 between the PEs, but not toward RR-7

SRv6 locators and BGP configuration

Classic SRv6 locators

Example topology with classic locator prefixes shows the classic SRv6 locators that are configured on the PEs.

Figure 2. Example topology with classic locator prefixes

As an example, on PE-2, the classic locator "PE2-loc" is configured as follows:

# on PE-2:
configure {
    router "Base" {
        mpls-labels {
            reserved-label-block "sr-policy" {
                start-label 20000
                end-label 22999
            }
        }
        isis 0 {
            ---snip---
            segment-routing-v6 {
                admin-state enable
                locator "PE2-loc" {
                }
            }
        }
        segment-routing {
            segment-routing-v6 {
                origination-fpe [1]
                source-address 2001:db8::2:2
                locator "PE2-loc" {
                    admin-state enable
                    block-length 48
                    termination-fpe [2]
                    prefix {
                        ip-prefix 2001:db8:aaaa:102::/64
                    }
                    static-function {
                        max-entries 16
                        label-block "sr-policy"
                    }
                }
                base-routing-instance {
                    locator "PE2-loc" {
                        function {
                            end 1 {
                                srh-mode usp
                            }
                            end-x 2 {     # static function value for adj with PE-1
                                protection unprotected
                                interface-name "int-PE-2-PE-1"
                            }
                            end-x 3 {     # static function value for adj with PE-3
                                protection unprotected
                                interface-name "int-PE-2-PE-3"
                            }
                            end-x-auto-allocate psp protection unprotected { }
                        }
                    }
                }

The configuration on the other PEs is similar.

Micro-segment SRv6 locators

Besides the classic SRv6 locators, the PEs are also configured with micro-segment SRv6 locators. Example topology with micro-segment node SIDs shows the micro-segment node SIDs configured on the PEs.

Figure 3. Example topology with micro-segment node SIDs

On PE-2, the micro-segment locator "PE2-mloc" is configured as follows:

# on PE-2:
configure {
    router "Base" {
        mpls-labels {
            reserved-label-block "res-block1" {
                start-label 19000
                end-label 19999
            }
        }
        isis 0 {
            segment-routing-v6 {
                admin-state enable
                micro-segment-locator "PE2-mloc" {
                }
            }
        }
        segment-routing {
            segment-routing-v6 {
                origination-fpe [1]
                source-address 2001:db8::2:2
                micro-segment {
                    argument-length 16
                    block "ms-block1" {
                        admin-state enable
                        termination-fpe [2]
                        label-block "res-block1"
                        prefix {
                            ip-prefix 2001:bbbb::/32
                        }
                        static-function {
                            max-entries 16
                        }
                    }
                }
                micro-segment-locator "PE2-mloc" {
                    admin-state enable
                    block "ms-block1"
                    un {
                        srh-mode usp
                        value 2
                    }
                }
                base-routing-instance {
                    micro-segment-locator "PE2-mloc" {
                        function {
                            ua 1 {
                                protection unprotected
                                interface-name "int-PE-2-PE-1"
                            }
                            ua 2 {
                                protection unprotected
                                interface-name "int-PE-2-PE-3"
                            }
                            ua 3 {
                                protection unprotected
                                interface-name "int-PE-2-PE-5"
                            }
                            ua-auto-allocate psp protection unprotected { }
                        }
                    }
                }
            }

The configuration on the other PEs is similar.

BGP configuration

The following examples are described in this section:

For the examples where EVPN VPWS and EVPN VPLS services are configured and static SRv6 policies are used, it is sufficient to configure BGP for the EVPN address family only, as follows:

# on PE-1, PE-2, PE-3, PE-4, PE-5, PE-6:
configure {
    router "Base" {
        autonomous-system 64500
        bgp {
            vpn-apply-export true
            vpn-apply-import true
            rapid-withdrawal true
            peer-ip-tracking true
            split-horizon true
            rapid-update {
                evpn true
            }
            group "internal" {
                peer-as 64500
                family {
                    evpn true
                }
            }
            neighbor "2001:db8::2:7" {
                group "internal"
            }
        }

For the EVPN VPWS and EVPN VPLS services where BGP-signaled SRv6 policies are used, BGP must also be enabled for the SRv6 policy address family, as follows:

# on PE-6:
configure {
    router "Base" {
        autonomous-system 64500
        bgp {
            vpn-apply-export true
            vpn-apply-import true
            rapid-withdrawal true
            peer-ip-tracking true
            split-horizon true
            rapid-update {
                evpn true
            }
            group "internal" {
                peer-as 64500
                family {
                    evpn true
                    sr-policy-ipv6 true
                }
            }
            neighbor "2001:db8::2:7" {
                group "internal"
            }
        }

RR-7 also has a BGP session with the controller. The BGP configuration on RR-7 is as follows:

# on RR-7:
configure {
    router "Base" {
        autonomous-system 64500
        bgp {
            vpn-apply-export true
            vpn-apply-import true
            rapid-withdrawal true
            peer-ip-tracking true
            split-horizon true
            rapid-update {
                evpn true
            }
            group "IBGP clients" {
                peer-as 64500
                family {
                    evpn true
                    sr-policy-ipv6 true
                }
                cluster {
                    cluster-id 192.0.2.7
                }
            }
            group "SRv6-policies" {
                peer-as 64500
                family {
                    ipv6 true
                    sr-policy-ipv6 true
                }
            }
            neighbor "2001:db8::2:1" {
                group "IBGP clients"
            }
            neighbor "2001:db8::2:2" {
                group "IBGP clients"
            }
            neighbor "2001:db8::2:3" {
                group "IBGP clients"
            }
            neighbor "2001:db8::2:4" {
                group "IBGP clients"
            }
            neighbor "2001:db8::2:5" {
                group "IBGP clients"
            }
            neighbor "2001:db8::2:6" {
                group "IBGP clients"
            }
            neighbor "2001:db8::2:8" {
                group "SRv6-policies"
            }
        }

The controller signals SRv6 policies using BGP. The sr-policy-import true command instructs BGP to import statically-configured non-local segment routing policies from the segment routing database into the BGP RIB so that they can be advertised, as originated routes, toward BGP peers that support the sr-policy-ipv6 address family. The BGP configuration on the controller is as follows:

# on controller:
configure {
    router "Base" {
        autonomous-system 64500
        bgp {
            rapid-withdrawal true
            sr-policy-import true   # import static non-local SR policies into BGP RIB
            group "SR-policy" {
                peer-as 64500
                family {
                    ipv6 true
                    sr-policy-ipv6 true
                }
            }
            neighbor "2001:db8::2:7" {
                group "SR-policy"
            }
        }

For the EVPN IFL services, the EVPN address family must be enabled and the IPv6 next hops must be advertised for the EVPN address family. In the case that an external controller is used, the SRv6 policy address family must also be enabled, as follows:

# on PE-1, PE-6:
configure {
    router "Base" {
        autonomous-system 64500
        bgp {
            vpn-apply-export true
            vpn-apply-import true
            rapid-withdrawal true
            peer-ip-tracking true
            split-horizon true
            rapid-update {
                evpn true
            }
            group "internal" {
                peer-as 64500
                family {
                    evpn true
                    sr-policy-ipv6 true
                }
                advertise-ipv6-next-hops {
                    evpn true
                }
            }
            neighbor "2001:db8::2:7" {
                group "internal"
            }
        }

For the IP VPN services, BGP must be configured for the VPN IPv4 and VPN IPv6 address families. If an external controller is used, the SRv6 policy address family must also be enabled. Extended next hop encoding is enabled for IPv4 and VPN IPv4; IPv6 next hops must be advertised for IPv4, VPN IPv4, and VPN IPv6. The BGP configuration on PE-1 and PE-6 is as follows:

# on PE-1, PE-6:
configure {
    router "Base" {
        bgp {
            vpn-apply-export true
            vpn-apply-import true
            rapid-withdrawal true
            peer-ip-tracking true
            split-horizon true
            rapid-update {
            }
            group "internal" {
                peer-as 64500
                family {
                    vpn-ipv4 true
                    vpn-ipv6 true
                    sr-policy-ipv6 true
                }
                extended-nh-encoding {
                    vpn-ipv4 true
                    ipv4 true
                }
                advertise-ipv6-next-hops {
                    vpn-ipv6 true
                    vpn-ipv4 true
                    ipv4 true
                }
            }
            neighbor "2001:db8::2:7" {
                group "internal"
            }
        }

EVPN VPWS

EVPN VPWS with static SRv6 policy on head-end PE-1

EVPN VPWS using SRv6 policy with color 100 from PE-1 to PE-6 shows the segments in the segment list of the static SRv6 policy on head-end PE-1. The SIDs are the End.X SID for the interface "int-PE-2-PE-3" on PE-2, the End.X SID for the interface "int-PE-3-PE-4" on PE-3, and the End.X SID for the interface "int-PE-4-PE-5" on PE-4.

Figure 4. EVPN VPWS using SRv6 policy with color 100 from PE-1 to PE-6
Static SRv6 policy on PE-1

SRv6 policies are configured with the following command:

[ex:/configure router "Base" segment-routing sr-policies static-policy "color-100-PE-1-PE-6"]
A:admin@PE-1# ?

 admin-state           - Administrative state of segment routing static policy
 apply-groups          - Apply a configuration group at this level
 apply-groups-exclude  - Exclude a configuration group at this level
 binding-sid           - Segment ID that opaquely represents an SR policy to upstream routers
 color                 - Traffic flows to be steered by this policy
 distinguisher         - Unique value for a policy
 endpoint              - Destination of the source-routed path
 head-end              - Head end address for this static policy
 maintenance-policy    - Policy name
 preference            - Preference value of this static policy
 segment-list          + Enter the segment-list list instance
 segment-routing-v6    + Enable the segment-routing-v6 context
 type                  - Static policy type

[ex:/configure router "Base" segment-routing sr-policies static-policy "color-100-PE-1-PE-6"]
A:admin@PE-1# type ?

 type <keyword>
 <keyword> - (sr-mpls|srv6)
 Default   - sr-mpls

    Static policy type

The type of SR policy is SRv6 and the endpoint must be an IPv6 address. In the following example, the static SRv6 policy is configured on head-end PE-1 itself; therefore, the head-end is set to local and the binding SID cannot be configured as an IPv6 address for a local SRv6 policy:

*[ex:/configure router "Base" segment-routing sr-policies static-policy "color-150-PE-1-PE-6" segment-routing-v6 binding-sid 1]
A:admin@PE-1# ip-address 2001:db8:aaaa:101:0:5000::

*[ex:/configure router "Base" segment-routing sr-policies static-policy "color-150-PE-1-PE-6" segment-routing-v6 binding-sid 1]
A:admin@PE-1# commit
MINOR: SRDB #12: configure router "Base" segment-routing sr-policies static-policy "color-150-PE-1-PE-6" segment-routing-v6 binding-sid 1 ip-address - Inconsistent Value error - head-end must be remote ip-address when ip-address is configured - configure router "Base" segment-routing sr-policies static-policy "color-150-PE-1-PE-6" head-end

The only way to configure this binding SID 2001:db8:aaaa:101:0:5000:: in the static SRv6 policy on the local head-end is by specifying a function value from the static range, in this example function-value 5, as follows:

# on PE-1:
configure {
    router "Base" { 
        segment-routing {
            sr-policies {
                static-policy "color-150-PE-1-PE-6" {
---snip---
                    segment-routing-v6 {
                        binding-sid 1 {
                            locator {
                                locator-name "PE1-loc" 
                                function end-b6-encaps-red 
                                function-value 5  # SID 2001:db8:aaaa:101:0:5000::
                            }
---snip---

When no function value is specified, the binding SID is automatically allocated from the dynamic range using the SRv6 locator prefix "PE1-loc" associated with the Base router.

When a classic SRv6 locator is used, the only supported binding SID behavior is End.B6.Encaps.Red, which is End.B6.Encaps with reduced Segment Routing Header (SRH). The reduced SRH does not contain the first SID. This first SID is only placed in the destination address of the pushed IPv6 header. The End.B6.Encaps endpoint behavior is bound to an SRv6 policy with encapsulation and the binding SID is instantiated by SRv6, as follows:

[ex:/configure router "Base" segment-routing sr-policies static-policy "color-100-PE-1-PE-6" segment-routing-v6 binding-sid 1 locator]
A:admin@PE-1# function ?

 function <keyword>
 <keyword> - end-b6-encaps-red

 'function' is: mandatory

    Behavior of the local SRv6 regular binding SID

In a similar way, when micro-segment SRv6 locators are used, the keyword to configure reduced encapsulation for the micro-binding SID is end-b6-encaps-red-next-csid; see further.

The following static SRv6 policy is configured on head-end PE-1:

# on head-end PE-1:
configure exclusive
    router "Base" {
        segment-routing {
            sr-policies {
                admin-state enable          # Enable SR policies context
                static-policy "color-100-PE-1-PE-6" {
                    admin-state enable      # Enable static policy
                    color 100
                    endpoint 2001:db8::2:6
                    head-end local
                    type srv6
                    segment-routing-v6 {
                        binding-sid 1 {
                            locator {
                                locator-name "PE1-loc"
                                function end-b6-encaps-red
                            }
                        }
                    }
                    segment-list 1 {
                        admin-state enable      # Enable segment list 1
                        segment 1 {
                            srv6-sid 2001:db8:aaaa:102:0:3000:: # End.X int-PE-2-PE-3
                        }
                        segment 2 {
                            srv6-sid 2001:db8:aaaa:103:0:3000:: # End.X int-PE-3-PE-4
                        }
                        segment 3 {
                            srv6-sid 2001:db8:aaaa:104:0:3000:: # End.X int-PE-4-PE-5
                        }
                    }
                }
The SRv6 SIDs in segment list 1 are the following adjacency SIDs:
  • 2001:db8:aaaa:102:0:3000:: for the End.X of interface "int-PE-2-PE-3" on PE-2
  • 2001:db8:aaaa:103:0:3000:: for the End.X of interface "int-PE-3-PE-4" on PE-3
  • 2001:db8:aaaa:104:0:3000:: for the End.X of interface "int-PE-4-PE-5" on PE-4

The following list of adjacency SIDs on PE-2 shows that SID 2001:db8:aaaa:102:0:3000:: corresponds to the End.X SID of "int-PE-2-PE-3":

[/]
A:admin@PE-2# show router segment-routing-v6 base-routing-instance end-x

===============================================================================
Segment Routing v6 Base Routing Instance
===============================================================================
Locator
 Type          Function  SID                                     Status/InstId
  SRH-mode     Oper Func Interface                               Protection
-------------------------------------------------------------------------------
PE2-loc
 End.X         2         2001:db8:aaaa:102:0:2000::              ok
  PSP          2         int-PE-2-PE-1                           Unprotected
 End.X         3         2001:db8:aaaa:102:0:3000::              ok
  PSP          3         int-PE-2-PE-3                           Unprotected
-------------------------------------------------------------------------------
 Auto-allocated End.X:
-------------------------------------------------------------------------------
 End.X         17        2001:db8:aaaa:102:1:1000::              0
  PSP                    int-PE-2-PE-5                           Unprotected
  ISIS Level: L2 Mac Address: 02:1e:01:01:00:15 Nbr Sys Id: 1920.0000.2005
-------------------------------------------------------------------------------
===============================================================================
Legend: * - System allocated

The following shows the summary of the SR policies with only one static SRv6 policy configured and active on PE-1:

[/]
A:admin@PE-1# show router segment-routing sr-policies summary

===============================================================================
SR-Policies Summary
===============================================================================
Admin Status          : Up
Ingress Stats         : N/A
Egress Stats          : N/A
Resv Label Blk Name:
TTM Preference        : 14
SR-MPLS BSID Allocated: 0               SRV6 BSID Allocated   : 1
Static Local Policies : 1               Active Static Lcl Pol : 1
Static Non Local Pol  : 0
BGP Policies          : 0               Active BGP Policies   : 0
===============================================================================

The following command on PE-1 shows the static SR policy with color 100, head-end 0.0.0.0 for local, and endpoint 2001:db8::2:6. The binding SID 2001:db8:aaaa:101:1:2000:: is automatically allocated using the locator prefix "PE1-loc" associated with the Base router.

[/]
A:admin@PE-1# show router segment-routing sr-policies static

===============================================================================
SR-Policies Path
===============================================================================
-------------------------------------------------------------------------------
Type            : srv6
Active          : Yes                   Owner           : static
Operational     : Yes
Color           : 100
Head            : 0.0.0.0               Endpoint Addr   : 2001:db8::2:6
RD              : 0                     Preference      : 100
SRv6 BSID 1     : 2001:db8:aaaa:101:1:2000::
TunnelId        : 917506                Age             : 1084
Origin ASN      : 0                     Origin          : 0.0.0.0
NumReEval       : 0                     LastReEvalReason: none
NumActPathChange: 0                     Last Change     : 06/13/2024 13:08:24
Maintenance Plcy:
Ret Path BFD SID:

Path Segment Lists:
Segment-List    : 1                     Weight          : 1
Num Segments    : 3                     Last Change     : 06/13/2024 12:57:02
  1 SRv6 SID  : 2001:db8:aaaa:102:0:3000::               State : resolved-up
  2 SRv6 SID  : 2001:db8:aaaa:103:0:3000::               State : N/A
  3 SRv6 SID  : 2001:db8:aaaa:104:0:3000::               State : N/A

===============================================================================

The SRv6 policy tunnel on PE-1 with tunnel ID 917506 and preference 14 has color 100 and the SRv6 SIDs are 2001:db8:aaaa:102:0:3000::, 2001:db8:aaaa:103:0:3000::, and 2001:db8:aaaa:104:0:3000::, as follows:

[/]
A:admin@PE-1# show router tunnel-table ipv6 protocol srv6-policy detail

===============================================================================
Tunnel Table (Router: Base)
===============================================================================
Destination      : 2001:db8::2:6/128
NextHop          : fpe_1.a
NextHop Weight   : 1
Tunnel Flags     : has-color
Age              : 00h18m04s            Color            : 100
CBF Classes      : (Not Specified)
Owner            : srv6-pol             Encap            : SRV6
Tunnel ID        : 917506               Preference       : 14
Tunnel SRV6 SID  : 2001:db8:aaaa:102:0: Tunnel Metric    : 0
                   3000::
                 : 2001:db8:aaaa:103:0:3000::
                 : 2001:db8:aaaa:104:0:3000::
Tunnel MTU       :  -                   Max Label Stack  : 3
-------------------------------------------------------------------------------
Number of tunnel-table entries          : 1
Number of tunnel-table entries with LFA : 0
===============================================================================

The FP tunnel table on PE-1 shows the SRv6 policy, including the SID list, as follows:

[/]
A:admin@PE-1# show router fp-tunnel-table 1 ipv6 protocol srv6-policy

===============================================================================
IPv6 Tunnel Table Display

Legend:
label stack is ordered from bottom-most to top-most
B - FRR Backup
===============================================================================
Destination                                  Protocol         Tunnel-ID
  Lbl/SID
    NextHop                                                   Intf/Tunnel
  Lbl/SID (backup)
    NextHop   (backup)
-------------------------------------------------------------------------------
2001:db8::2:6/128                            SRV6-Policy       -
  2001:db8:aaaa:104:0:3000::
  2001:db8:aaaa:103:0:3000::
  2001:db8:aaaa:102:0:3000::
    0.140.1.1                                                pxc-1.b:1
-------------------------------------------------------------------------------
Total Entries : 1
-------------------------------------------------------------------------------
===============================================================================
EVPN VPWS Epipe-1 on PE-1 and PE-6

On PE-1, EVPN VPWS "Epipe-1" uses SRv6 transport and is configured with resolution fallback-tunnel-to-route-table, as follows:

# on PE-1:
configure {
    service {
        epipe "Epipe-1" {
            admin-state enable
            service-id 1
            customer "1"
            segment-routing-v6 1 {
                locator "PE1-loc" {
                    function {
                        end-dx2 {
                        }
                    }
                }
            }
            bgp 1 {
                route-target {
                    export "target:64500:1"
                    import "target:64500:1"
                }
            }
            sap 1/1/c10/1:1 {
                description "SAP to CE-11"
            }
            bgp-evpn {
                evi 1
                local-attachment-circuit "PE1" {
                    eth-tag 1
                }
                remote-attachment-circuit "PE6" {
                    eth-tag 6
                }
                segment-routing-v6 1 {
                    admin-state enable
                    source-address 2001:db8::2:1
                    resolution fallback-tunnel-to-route-table
                    srv6 {
                        instance 1
                        default-locator "PE1-loc"
                    }
                    route-next-hop {
                        ip-address 2001:db8::2:1
                    }
                }
            }
        }

The following command shows the BGP EVPN SRv6 information for Epipe-1 on PE-1:

[/]
A:admin@PE-1# show service id "Epipe-1" bgp-evpn segment-routing-v6

===============================================================================
BGP EVPN Segment Routing v6 Information
===============================================================================
Admin State             : Enabled                 Bgp Instance  : 1
Srv6 Instance           : 1
Default Locator         : PE1-loc

Oper Group              : (none)
Default Route Tag       : 0x0
Source Address          : 2001:db8::2:1
ECMP                    : 1
Force Vlan VC Fwd       : Disabled
Next Hop Type           : explicit
Next Hop Address        : 2001:db8::2:1
Evi 3-byte Auto-RT      : disabled
Route Resolution        : fallback-tunnel-to-route-table
Force QinQ VC Fwd       : none
MH Mode                 : network
Domain-Id               : None
===============================================================================

The static SRv6 policy is identified by the color 100 (color:00:100), head-end 192.0.2.1 (system IPv4 address of PE-1), and endpoint 2001:db8::2:6 (system IPv6 address of PE-6). PE-6 exports color 100 in an export policy to match the color in the SRv6 policy on PE-1, as follows:

#  on PE-6
configure exclusive
    policy-options {
        community "color-100" {
            member "color:00:100" { }
        }
        community "vsi-1" {
            member "target:64500:1" { }
        }
        policy-statement "epipe-1-export-c100" {
            default-action {
                action-type accept
                community {
                    add ["vsi-1" "color-100"]
                }
            }
        }
    }
    service {
        epipe "Epipe-1" {
            admin-state enable
            service-id 1
            customer "1"
            segment-routing-v6 1 {
                locator "PE6-loc" {
                    function {
                        end-dx2 {
                        }
                    }
                }
            }
            bgp 1 {
                vsi-export ["epipe-1-export-c100"]
                route-target {
                    import "target:64500:1"
                }
            }
            sap 1/1/c10/1:1 {
                description "SAP to CE-16"
            }
            bgp-evpn {
                evi 1
                local-attachment-circuit "PE6" {
                    eth-tag 6
                }
                remote-attachment-circuit "PE1" {
                    eth-tag 1
                }
                segment-routing-v6 1 {
                    admin-state enable
                    source-address 2001:db8::2:6
                    srv6 {
                        instance 1
                        default-locator "PE6-loc"
                    }
                    route-next-hop {
                        ip-address 2001:db8::2:6
                    }
                }
            }
        }

The following EVPN auto-discovery route received on PE-1 includes the community color:00:100 (color 100):

[/]
A:admin@PE-1# show router bgp routes evpn auto-disc rd 192.0.2.6:1 detail
===============================================================================
 BGP Router ID:192.0.2.1        AS:64500       Local AS:64500
===============================================================================
 Legend -
 Status codes  : u - used, s - suppressed, h - history, d - decayed, * - valid
                 l - leaked, x - stale, > - best, b - backup, p - purge
 Origin codes  : i - IGP, e - EGP, ? - incomplete

===============================================================================
BGP EVPN Auto-Disc Routes
===============================================================================
Original Attributes

Network        : n/a
Nexthop        : 2001:db8::2:6
Path Id        : None
From           : 2001:db8::2:7
Res. Nexthop   : fe80::24:1ff:fe01:1
Local Pref.    : 100                    Interface Name : int-PE-1-PE-6
Aggregator AS  : None                   Aggregator     : None
Atomic Aggr.   : Not Atomic             MED            : None
AIGP Metric    : None                   IGP Cost       : 10
Connector      : None
Community      : target:64500:1 color:00:100
                 l2-attribute:MTU: 1514 F: 0 C: 0 P: 0 B: 0
Cluster        : 192.0.2.7
Originator Id  : 192.0.2.6              Peer Router Id : 192.0.2.7
Origin         : IGP
Flags          : Used Valid Best
Route Source   : Internal
AS-Path        : No As-Path
EVPN type      : AUTO-DISC
ESI            : ESI-0
Tag            : 6
Route Dist.    : 192.0.2.6:1
MPLS Label     : 504288
Route Tag      : 0
Neighbor-AS    : n/a
DB Orig Val    : N/A                    Final Orig Val : N/A
Source Class   : 0                      Dest Class     : 0
Add Paths Send : Default
Last Modified  : 00h00m47s
SRv6 TLV Type  : SRv6 L2 Service TLV (6)
SRv6 SubTLV    : SRv6 SID Information (1)
Sid            : 2001:db8:aaaa:106::
Full Sid       : 2001:db8:aaaa:106:7b1e::
Behavior       : End.DX2 (21)
SRv6 SubSubTLV : SRv6 SID Structure (1)
Loc-Block-Len  : 48                     Loc-Node-Len   : 16
Func-Len       : 20                     Arg-Len        : 0
Tpose-Len      : 20                     Tpose-offset   : 64
---snip---

On PE-1, the BGP next hop for EVPN routes to 2001:db8::2:6 is resolved using the SRv6 policy with tunnel ID 917506, as follows:

[/]
A:admin@PE-1# show router bgp next-hop evpn 2001:db8::2:6 detail
===============================================================================
 BGP Router ID:192.0.2.1        AS:64500       Local AS:64500
===============================================================================

===============================================================================
BGP VPN Next Hop
===============================================================================
-------------------------------------------------------------------------------
VPN Next Hop          : 2001:db8::2:6
Autobind              : gre/rtm srv6-policy
Labels                : --
User-labels           : 1
Admin-tag-policy      : --
Strict-tunnel-tagging : N
Color                 : 100
UPA Trigger Next Hop  : --
Locator               : 2001:db8:aaaa:106::/64
Created               : 00h01m16s
Last-modified         : 00h01m16s
-------------------------------------------------------------------------------
Resolving Prefix : 2001:db8::2:6/128
Preference       : 14                   Metric           : 0
Reference Count  : 1                    Owner            : SRV6-POLICY
Fib Programmed   : Y
Resolved Next Hop: 0.140.1.1
Egress Label     : n/a                  TunnelId         : 917506
Locator State    : Resolved
-------------------------------------------------------------------------------
-------------------------------------------------------------------------------
Next Hops : 1
===============================================================================
Resolution fallback

While PE-6 exports color 100, the corresponding SRv6 policy tunnel on PE-1 is available, as follows:

[/]
A:admin@PE-1# show router tunnel-table ipv6 protocol srv6-policy

===============================================================================
IPv6 Tunnel Table (Router: Base)
===============================================================================
Destination                                     Owner     Encap TunnelId  Pref
Nexthop                                         Color           Metric
-------------------------------------------------------------------------------
2001:db8::2:6/128                               srv6-pol  SRV6  917506    14
  fpe_1.a                                         100             0
-------------------------------------------------------------------------------
Flags: B = BGP or MPLS backup hop available
       L = Loop-Free Alternate (LFA) hop available
       E = Inactive best-external BGP route
       k = RIB-API or Forwarding Policy backup hop
===============================================================================
[/]
A:admin@PE-1# show router route-table ipv6 protocol srv6-policy

===============================================================================
IPv6 Route Table (Router: Base)
===============================================================================
Dest Prefix[Flags]                            Type    Proto     Age        Pref
      Next Hop[Interface Name]                                    Metric
-------------------------------------------------------------------------------
2001:db8:aaaa:101:1:2000::/128                Local   SRV6-Pol* 00h17m06s  14
       2001:db8::2:6 (tunneled:SRV6-Policy:917506)                  1
-------------------------------------------------------------------------------
No. of Routes: 1
Flags: n = Number of times nexthop is repeated
       B = BGP backup route available
       L = LFA nexthop available
       S = Sticky ECMP requested
===============================================================================
* indicates that the corresponding row element may have been truncated.

When PE-6 does not export color 100, there is no match with the SRv6 policy on PE-1, and PE-1 uses the route table instead of the tunnel table. The export policy on PE-6 is removed in Epipe-1, as follows:

# on PE-6:
configure {
    service {
        epipe "Epipe-1" {
            bgp 1 {
                delete vsi-export "epipe-1-export-c100"
                route-target {
                    export "target:64500:1"
                    import "target:64500:1"
                }
            }

On PE-1, the BGP next hop for the EVPN routes to 2001:db8::2:6 is not resolved to an SRv6 policy tunnel anymore; the route table is used instead, as follows:

[/]
A:admin@PE-1# show router bgp next-hop 2001:db8::2:6 evpn service-id 1
===============================================================================
 BGP Router ID:192.0.2.1        AS:64500       Local AS:64500
===============================================================================

===============================================================================
BGP VPN Next Hop
===============================================================================
VPN Next Hop                                                Owner
   Autobind                                        FibProg  Reason
   Labels (User-labels)                            FlexAlgo Metric
   Admin-tag-policy (strict-tunnel-tagging)                 Last Mod.
-------------------------------------------------------------------------------
2001:db8::2:6                                               GRE/RTM
   gre/rtm srv6-policy                             Y
   -- (1)                                          --       10
   -- (N)                                                   00h00m24s
-------------------------------------------------------------------------------
Next Hops : 1
===============================================================================

===============================================================================
 BGP Router ID:192.0.2.1        AS:64500       Local AS:64500
===============================================================================

When the SRv6 resolution is reconfigured to the tunnel table only instead of the fallback, the next hop cannot be resolved anymore, as follows:

# on PE-1:
configure exclusive
    service {
        epipe "Epipe-1" {
            bgp-evpn {
                segment-routing-v6 1 {
                    resolution tunnel-table

The BGP next hop cannot be resolved and the reason is a color mismatch, as follows:

*[/]
A:admin@PE-1# show router bgp next-hop 2001:db8::2:6 evpn service-id 1
===============================================================================
 BGP Router ID:192.0.2.1        AS:64500       Local AS:64500
===============================================================================

===============================================================================
BGP VPN Next Hop
===============================================================================
VPN Next Hop                                                Owner
   Autobind                                        FibProg  Reason
   Labels (User-labels)                            FlexAlgo Metric
   Admin-tag-policy (strict-tunnel-tagging)                 Last Mod.
-------------------------------------------------------------------------------
2001:db8::2:6                                               --
   srv6-policy                                     N        ColorMismatch
   -- (1)                                          --
   -- (N)                                                   00h00m05s
-------------------------------------------------------------------------------
Next Hops : 1
===============================================================================

When PE-6 exports color 100 again, the BGP next hop can be resolved using the SRv6 policy.

EVPN VPWS with BGP-signaled SRv6 policy on head-end PE-6

EVPN VPWS using SRv6 policy with color 200 from PE-6 to PE-1 shows the segments in the segment list of the BGP-signaled SRv6 policy on head-end PE-6. This SRv6 policy is configured on the controller, imported in the BGP RIB, and advertised using BGP. The SIDs in the segment list of the SRv6 policy are the micro-segment adjacency SID (uA SID) for the interface "int-PE-5-PE-4" on PE-5, the uA SID for the interface "int-PE-4-PE-3" on PE-4, and the uA SID for the interface "int-PE-3-PE-2" on PE-3. These micro-SIDs are configured with behavior and structure information. This information must only be configured when the SRv6 SID is a micro-SID. In fact, the allowed behaviors which describe the SRv6 SID are only micro-segment behaviors. By configuring this information, the user indirectly provides the head-end with necessary information to apply a compression algorithm to the received micro-SIDs. The algorithm is designed to reduce the Segment Routing Header (SRH) size. Details on what behavior and structure values to configure based on the SRv6 SID, and on how the algorithm processes these are described in the 7750 SR and 7950 XRS Segment Routing and PCE User Guide.

Figure 5. EVPN VPWS using SRv6 policy with color 200 from PE-6 to PE-1
Static SRv6 policy on the controller

The following SRv6 policy with micro-segment SIDs is configured on the controller:

# on controller:
configure {
    router "Base" {
        segment-routing {
            sr-policies {
                admin-state enable
                static-policy "color-200-PE-6-PE-1-u" {
                    admin-state enable
                    color 200
                    endpoint 2001:db8::2:1      # IPv6 system address of PE-1
                    head-end 192.0.2.6          # IPv4 system address of PE-6
                    distinguisher 200006001     # unique value
                    type srv6
                    segment-routing-v6 {
                        binding-sid 1 {
                            ip-address 2001:bbbb:6:4005::   # available address
                        }
                    }
                    segment-list 1 {
                        admin-state enable
                        segment 1 {
                            srv6-sid 2001:bbbb:5:4000:: # uA for "int-PE-5-PE-4"
                            behavior-and-structure {
                                behavior end-x-next-csid
                                block-length 32
                                node-length 16
                                function-length 16
                            }
                        }
                        segment 2 {
                            srv6-sid 2001:bbbb:4:4000:: # uA for "int-PE-4-PE-3"
                            behavior-and-structure {
                                behavior end-x-next-csid
                                block-length 32
                                node-length 16
                                function-length 16
                            }
                        }
                        segment 3 {
                            srv6-sid 2001:bbbb:3:4000:: # uA for "int-PE-3-PE-2"
                            behavior-and-structure {
                                behavior end-x-next-csid
                                block-length 32
                                node-length 16
                                function-length 16
                            }
                        }
                    }
                }

The distinguisher must be unique and is used as a differentiator. If the head-end PE receives two policies with the same color and endpoint, the path with the lowest distinguisher value is chosen.

The head-end is the IPv4 system address of PE-6; the endpoint is the IPv6 system address of PE-1.

The binding SID is an available IPv6 address from the static function entries on head-end PE-6.

Note:

At the configuration point, the micro-binding SID must be configured in the <block><uN><uB6> format, because the head-end only accepts this format. The head-end then programs two route entries for each local SID: <block><uN><uB6>::/block-length+32 and <block><uB6>::/block-length+16, both pointing to the SRv6 policy.

The controller advertises this SRv6 policy using BGP. The head-end PE-6 must have the SR policies context enabled, as follows:

# on head-end PE-6:
configure {
    router "Base" {
        segment-routing {
            sr-policies {
                admin-state enable     # enable context for (BGP-signaled) SRv6 policies
            }
EVPN VPWS Epipe-2 on PE-1 and PE-6

PE-1 exports color 200 (color:00:200) in Epipe-2, as follows:

# on PE-1:
configure {
    policy-options {
        community "color-200" {
            member "color:00:200" { }
        }
        community "vsi-2" {
            member "target:64500:2" { }
        }
        policy-statement "epipe-2-export-c200" {
            default-action {
                action-type accept
                community {
                    add ["vsi-2" "color-200"]
                }
            }
        }
    }
    service {
        epipe "Epipe-2" {
            admin-state enable
            service-id 2
            customer "1"
            segment-routing-v6 1 {
                micro-segment-locator "PE1-mloc" {
                    function {
                        udx2 {
                            value 5
                        }
                    }
                }
            }
            bgp 1 {
                vsi-export ["epipe-2-export-c200"]
                route-target {
                    import "target:64500:2"
                }
            }
            sap 1/1/c10/1:2 {
                description "SAP to CE-21"
            }
            bgp-evpn {
                evi 2
                local-attachment-circuit "PE1" {
                    eth-tag 1
                }
                remote-attachment-circuit "PE6" {
                    eth-tag 6
                }
                segment-routing-v6 1 {
                    admin-state enable
                    source-address 2001:db8::2:1
                    srv6 {
                        instance 1
                        default-locator "PE1-mloc"
                    }
                    route-next-hop {
                        ip-address 2001:db8::2:1
                    }
                }
            }
        }

On PE-6, Epipe-2 is configured as follows:

# on head-end PE-6:
configure {
    service {
        epipe "Epipe-2" {
            admin-state enable
            service-id 2
            customer "1"
            segment-routing-v6 1 {
                micro-segment-locator "PE6-mloc" {
                    function {
                        udx2 {
                            value 5     # static value
                        }
                    }
                }
            }
            bgp 1 {
                route-target {
                    export "target:64500:2"
                    import "target:64500:2"
                }
            }
            sap 1/1/c10/1:2 {
                description "SAP to CE-26"
            }
            bgp-evpn {
                evi 2
                local-attachment-circuit "PE6" {
                    eth-tag 6
                }
                remote-attachment-circuit "PE1" {
                    eth-tag 1
                }
                segment-routing-v6 1 {
                    admin-state enable
                    source-address 2001:db8::2:6
                    resolution fallback-tunnel-to-route-table
                    srv6 {
                        instance 1
                        default-locator "PE6-mloc"
                    }
                    route-next-hop {
                        ip-address 2001:db8::2:6
                    }
                }
            }
        }
Verification

Head-end PE-6 receives one BGP-signaled SRv6 policy:

[/]
A:admin@PE-6# show router bgp summary all

===============================================================================
BGP Summary
===============================================================================
Legend : D - Dynamic Neighbor
===============================================================================
Neighbor
Description
ServiceId          AS PktRcvd InQ  Up/Down   State|Rcv/Act/Sent (Addr Family)
                      PktSent OutQ
-------------------------------------------------------------------------------
2001:db8::2:7
Def. Inst       64500      22    0 00h07m10s 2/2/2 (Evpn)
                           22    0           1/1/0 (SrPolicyIPv6)

-------------------------------------------------------------------------------

The following command shows the BGP-signaled SRv6 policy on head-end PE-6. The binding SID value is 2001:bbbb:4005:: and is derived from the binding SID 2001:bbbb:6:4005:: that was configured in the static SRv6 policy on the controller.

[/]
A:admin@PE-6# show router segment-routing sr-policies bgp

===============================================================================
SR-Policies Path
===============================================================================
-------------------------------------------------------------------------------
Type            : srv6
Active          : Yes                   Owner           : bgp
Operational     : Yes
Color           : 200
Head            : 0.0.0.0               Endpoint Addr   : 2001:db8::2:1
RD              : 200006001             Preference      : 100
SRv6 BSID 1     : 2001:bbbb:4005::
TunnelId        : 917506                Age             : 99
Origin ASN      : 64500                 Origin          : 2001:db8::2:8
NumReEval       : 0                     LastReEvalReason: none
NumActPathChange: 0                     Last Change     : 06/13/2024 13:37:00
Maintenance Plcy:
Ret Path BFD SID:

Path Segment Lists:
Segment-List    : 1                     Weight          : 1
Num Segments    : 3                     Last Change     : 06/13/2024 12:58:00
  1 SRv6 SID  : 2001:bbbb:5:4000::                       State : resolved-up
    Behavior & Structure
     Behavior   : 52                    Block Length    : 32
     Node Length: 16                    Function Length : 16
  2 SRv6 SID  : 2001:bbbb:4:4000::                       State : N/A
    Behavior & Structure
     Behavior   : 52                    Block Length    : 32
     Node Length: 16                    Function Length : 16
  3 SRv6 SID  : 2001:bbbb:3:4000::                       State : N/A
    Behavior & Structure
     Behavior   : 52                    Block Length    : 32
     Node Length: 16                    Function Length : 16

===============================================================================

On PE-6, the SID 2001:bbbb:6:4005:: has the value of the binding SID that was configured in the static SRv6 policy on the controller, as follows:

[/]
A:admin@PE-6# show router segment-routing-v6 micro-segment-local-sid

===============================================================================
Micro Segment Routing v6 Local SIDs
===============================================================================
SID                                               Type           Function
  Micro Segment Locator
  Context
-------------------------------------------------------------------------------
2001:bbbb:6::                                     uN             6
  PE6-mloc
  None
2001:bbbb:6:4000::                                uA             16384
  PE6-mloc
  Base
2001:bbbb:6:4004::                                uDX2           16388
  PE6-mloc
  SvcId: 2 Name: Epipe-2
2001:bbbb:6:4005::                                End.b6.encaps* 16389
  PE6-mloc
  None
2001:bbbb:6:4010::                                uA             16400
  PE6-mloc
  None
-------------------------------------------------------------------------------
SIDs : 5
-------------------------------------------------------------------------------
===============================================================================
* indicates that the corresponding row element may have been truncated.

The following command shows the details of the SRv6 policy tunnel on head-end PE-6:

[/]
A:admin@PE-6# show router tunnel-table ipv6 protocol srv6-policy detail

===============================================================================
Tunnel Table (Router: Base)
===============================================================================
Destination      : 2001:db8::2:1/128
NextHop          : fpe_1.a
NextHop Weight   : 1
Tunnel Flags     : has-color
Age              : 00h01m40s            Color            : 200
CBF Classes      : (Not Specified)
Owner            : srv6-pol             Encap            : SRV6
Tunnel ID        : 917506               Preference       : 14
Tunnel SRV6 SID  : 2001:bbbb:5:4000:4:4 Tunnel Metric    : 0
                   000:3:4000
Tunnel MTU       :  -                   Max Label Stack  : 3
-------------------------------------------------------------------------------
Number of tunnel-table entries          : 1
Number of tunnel-table entries with LFA : 0
===============================================================================

The tunnel SRv6 SID in the preceding output shows that the micro-segment SIDs were compressed. The three micro-SIDs (2001:bbbb:5:4000::, 2001:bbbb:4:4000::, and 2001:bbbb:3:4000::) were compressed by the head-end to form a single container: 2001:bbbb:5:4000:4:4000:3:4000. This compression was, in part, possible because the three micro-SIDs belong to the same SID block.

The SRv6 policy tunnel to 2001:db8::2:1 with color 200 has tunnel ID 917506 on head-end PE-6. The following IPv6 routes use the SRv6 policy tunnel with ID 917506:

[/]
A:admin@PE-6# show router route-table ipv6 protocol srv6-policy

===============================================================================
IPv6 Route Table (Router: Base)
===============================================================================
Dest Prefix[Flags]                            Type    Proto     Age        Pref
      Next Hop[Interface Name]                                    Metric
-------------------------------------------------------------------------------
2001:bbbb:6:4005::/64                         Local   SRV6-Pol* 00h02m22s  14
       2001:db8::2:1 (tunneled:SRV6-Policy:917506)                  1
2001:bbbb:4005::/48                           Local   SRV6-Pol* 00h02m22s  14
       2001:db8::2:1 (tunneled:SRV6-Policy:917506)                  1
-------------------------------------------------------------------------------
No. of Routes: 2
Flags: n = Number of times nexthop is repeated
       B = BGP backup route available
       L = LFA nexthop available
       S = Sticky ECMP requested
===============================================================================
* indicates that the corresponding row element may have been truncated.

The following command shows that the BGP next hop 2001:db8::2:1 is resolved to an SRv6 policy with color 200:

[/]
A:admin@PE-6# show router bgp next-hop evpn 2001:db8::2:1 detail
===============================================================================
 BGP Router ID:192.0.2.6        AS:64500       Local AS:64500
===============================================================================

===============================================================================
BGP VPN Next Hop
===============================================================================
-------------------------------------------------------------------------------
---snip--- ## VPN next hop for Epipe-1 (no SRv6 policy; only GRE/RTM)

-------------------------------------------------------------------------------
VPN Next Hop          : 2001:db8::2:1
Autobind              : gre/rtm srv6-policy
Labels                : --
User-labels           : 1
Admin-tag-policy      : --
Strict-tunnel-tagging : N
Color                 : 200
UPA Trigger Next Hop  : --
Locator               : 2001:bbbb:1::/48
Created               : 00h03m50s
Last-modified         : 00h03m17s
-------------------------------------------------------------------------------
Resolving Prefix : 2001:db8::2:1/128
Preference       : 14                   Metric           : 0
Reference Count  : 1                    Owner            : SRV6-POLICY
Fib Programmed   : Y
Resolved Next Hop: 0.140.1.1
Egress Label     : n/a                  TunnelId         : 917506
Locator State    : Resolved
-------------------------------------------------------------------------------
-------------------------------------------------------------------------------
Next Hops : 2
===============================================================================

The following command on PE-6 shows the SRv6 destinations in Epipe-2, where 2001:bbbb:1:4004:: is the uDX2 SID on endpoint PE-1:

[/]
A:admin@PE-6# show service id 2 segment-routing-v6 destinations

===============================================================================
TEP, SID (Instance 1)
===============================================================================
TEP Address                             Segment Id
-------------------------------------------------------------------------------
2001:db8::2:1                           2001:bbbb:1:4004::
-------------------------------------------------------------------------------
Number of TEP, SID: 1
-------------------------------------------------------------------------------
===============================================================================

===============================================================================
Segment Routing v6 Ethernet Segment Dest (Instance 1)
===============================================================================
Eth SegId                                 Num. Macs     Last Update
-------------------------------------------------------------------------------
No Matching Entries
===============================================================================

EVPN VPLS

EVPN VPLS with static SRv6 policy on head-end PE-1

EVPN VPLS using SRv6 policy with color 300 from PE-1 to PE-6 shows the uA SIDs in the segment list of a static SRv6 with color 300 on head-end PE-1.

Figure 6. EVPN VPLS using SRv6 policy with color 300 from PE-1 to PE-6
Static SRv6 policy

On head-end PE-1, a static SRv6 policy is configured with color 300 and endpoint 2001:db8::2:6, as follows:

# on head-end PE-1:
configure {
    router "Base" {
        segment-routing {
            sr-policies {
                static-policy "color-300-PE-1-PE-6-u" {
                    admin-state enable
                    color 300
                    endpoint 2001:db8::2:6
                    head-end local
                    type srv6
                    segment-routing-v6 {
                        binding-sid 1 {
                            micro-segment-locator {
                                locator-name "PE1-mloc"
                                function end-b6-encaps-red-next-csid
                            }
                        }
                    }
                    segment-list 1 {
                        admin-state enable
                        segment 1 {
                            srv6-sid 2001:bbbb:2:4001::  # int-PE-2-PE-3
                            behavior-and-structure {
                                behavior end-x-next-csid
                                block-length 32
                                node-length 16
                                function-length 16
                            }
                        }
                        segment 2 {
                            srv6-sid 2001:bbbb:3:4001::  # int-PE-3-PE-4
                            behavior-and-structure {
                                behavior end-x-next-csid
                                block-length 32
                                node-length 16
                                function-length 16
                            }
                        }
                        segment 3 {
                            srv6-sid 2001:bbbb:4:4001::  # int-PE-4-PE-5
                            behavior-and-structure {
                                behavior end-x-next-csid
                                block-length 32
                                node-length 16
                                function-length 16
                            }
                        }
                    }
                }   
EVPN VPLS

On PE-1, EVPN VPLS "VPLS-3" is configured as follows:

# on PE-1:
configure {
    service {
        vpls "VPLS-3" {
            admin-state enable
            service-id 3
            customer "1"
            segment-routing-v6 1 {
                micro-segment-locator "PE1-mloc" {
                    function {
                        udt2m {
                        }
                        udt2u {
                        }
                    }
                }
            }
            bgp 1 {
                route-target {
                    export "target:64500:3"
                    import "target:64500:3"
                }
            }
            bgp-evpn {
                evi 3
                segment-routing-v6 1 {
                    admin-state enable
                    source-address 2001:db8::2:1
                    resolution fallback-tunnel-to-route-table
                    srv6 {
                        instance 1
                        default-locator "PE1-mloc"
                    }
                    route-next-hop {
                        ip-address 2001:db8::2:1
                    }
                }
            }
            sap 1/1/c10/1:3 {
                description "SAP to CE-31"
            }
        }

PE-6 exports color 300 which matches the color in the static SRv6 policy "color-300-PE-1-PE-6-u" on PE-1, as follows:

#  on PE-6:
configure exclusive
    policy-options {
        community "color-300" {
            member "color:00:300" { }
        }
        community "vsi-3" {
            member "target:64500:3" { }
        }
        policy-statement "vpls-3-export-c300" {
            default-action {
                action-type accept
                community {
                    add ["vsi-3" "color-300"]
                }
            }
        }
    }
    service {
        vpls "VPLS-3" {
            admin-state enable
            service-id 3
            customer "1"
            segment-routing-v6 1 {
                micro-segment-locator "PE6-mloc" {
                    function {
                        udt2m {
                        }
                        udt2u {
                        }
                    }
                }
            }
            bgp 1 {
                vsi-export ["vpls-3-export-c300"]
                route-target {
                    import "target:64500:3"
                }
            }
            bgp-evpn {
                evi 3
                segment-routing-v6 1 {
                    admin-state enable
                    source-address 2001:db8::2:6
                    srv6 {
                        instance 1
                        default-locator "PE6-mloc"
                    }
                    route-next-hop {
                        ip-address 2001:db8::2:6
                    }
                }
            }
            sap 1/1/c10/1:3 {
                description "SAP to CE-36"
            }
        }
Verification

PE-1 receives the following IMET route from PE-6. The color:00:300 community matches the color 300 in the static SRv6 policy.

[/]
A:admin@PE-1# show router bgp routes evpn incl-mcast rd 192.0.2.6:3 detail
===============================================================================
 BGP Router ID:192.0.2.1        AS:64500       Local AS:64500
===============================================================================
 Legend -
 Status codes  : u - used, s - suppressed, h - history, d - decayed, * - valid
                 l - leaked, x - stale, > - best, b - backup, p - purge
 Origin codes  : i - IGP, e - EGP, ? - incomplete

===============================================================================
BGP EVPN Inclusive-Mcast Routes
===============================================================================
Original Attributes

Network        : n/a
Nexthop        : 2001:db8::2:6
Path Id        : None
From           : 2001:db8::2:7
Res. Nexthop   : fe80::24:1ff:fe01:1
Local Pref.    : 100                    Interface Name : int-PE-1-PE-6
Aggregator AS  : None                   Aggregator     : None
Atomic Aggr.   : Not Atomic             MED            : None
AIGP Metric    : None                   IGP Cost       : 10
Connector      : None
Community      : target:64500:3 color:00:300
Cluster        : 192.0.2.7
Originator Id  : 192.0.2.6              Peer Router Id : 192.0.2.7
Origin         : IGP
Flags          : Used Valid Best
Route Source   : Internal
AS-Path        : No As-Path
EVPN type      : INCL-MCAST
Tag            : 0
Originator IP  : 2001:db8::2:6
Route Dist.    : 192.0.2.6:3
Route Tag      : 0
Neighbor-AS    : n/a
DB Orig Val    : N/A                    Final Orig Val : N/A
Source Class   : 0                      Dest Class     : 0
Add Paths Send : Default
Last Modified  : 00h00m27s
SRv6 TLV Type  : SRv6 L2 Service TLV (6)
SRv6 SubTLV    : SRv6 SID Information (1)
Sid            : 2001:bbbb:6::
Full Sid       : 2001:bbbb:6:4012::
Behavior       : End.uDT2M (68)
SRv6 SubSubTLV : SRv6 SID Structure (1)
Loc-Block-Len  : 32                     Loc-Node-Len   : 16
Func-Len       : 16                     Arg-Len        : 16
Tpose-Len      : 16                     Tpose-offset   : 48
-------------------------------------------------------------------------------
PMSI Tunnel Attributes :
Tunnel-type    : Ingress Replication
Flags          : Type: RNVE(0) BM: 0 U: 0 Leaf: not required
MPLS Label     : 4198912
Tunnel-Endpoint: 2001:db8::2:6
-------------------------------------------------------------------------------
---snip---

When traffic has been sent between CE-31 and CE-36, the forwarding database (FDB) on PE-1 is as follows:

[/]
A:admin@PE-1# show service id "VPLS-3" fdb detail

===============================================================================
Forwarding Database, Service 3
===============================================================================
ServId     MAC               Source-Identifier       Type     Last Change
            Transport:Tnl-Id                         Age
-------------------------------------------------------------------------------
3          00:00:5e:00:53:31 sap:1/1/c10/1:3         L/0      06/13/24 13:42:27
3          00:00:5e:00:53:36 srv6-1:                 Evpn     06/13/24 13:42:34
                             2001:db8::2:6
           2001:bbbb:6:4011::
-------------------------------------------------------------------------------
No. of MAC Entries: 2
-------------------------------------------------------------------------------
Legend:L=Learned O=Oam P=Protected-MAC C=Conditional S=Static Lf=Leaf T=Trusted
===============================================================================

MAC address 00:00:5e:00:53:36 from CE-36 can be reached through an SRv6 policy tunnel. The following IPv6 tunnel table shows that the SRv6 policy tunnel to 2001:db8::2:6/128 with color 300 has ID 917508:

[/]
A:admin@PE-1# show router tunnel-table ipv6 protocol srv6-policy

===============================================================================
IPv6 Tunnel Table (Router: Base)
===============================================================================
Destination                                     Owner     Encap TunnelId  Pref
Nexthop                                         Color           Metric
-------------------------------------------------------------------------------
2001:db8::2:6/128                               srv6-pol  SRV6  917506    14
  fpe_1.a                                         100             0
2001:db8::2:6/128                               srv6-pol  SRV6  917508    14
  fpe_1.a                                         300             0
-------------------------------------------------------------------------------
Flags: B = BGP or MPLS backup hop available
       L = Loop-Free Alternate (LFA) hop available
       E = Inactive best-external BGP route
       k = RIB-API or Forwarding Policy backup hop
===============================================================================

The following command shows the micro-segment local SIDs. Besides the node SID uN and the adjacency SID uA, SIDs for different services are listed. SID 2001:bbbb:1:4004:: with uDX2 function applies to EVPN VPWS Epipe-2; SID 2001:bbbb:1:4011:: with uDT2U function and SID 2001:bbbb:1:4012:: with uDT2M function apply to EVPN VPLS-3. The End.B6.Encaps.Red SID 2001:bbbb:1:43e8:: is the binding SID for the SRv6 policy "color-300-PE-1-PE-6-u" which is used in VPLS-3.

[/]
A:admin@PE-1# show router segment-routing-v6 micro-segment-local-sid

===============================================================================
Micro Segment Routing v6 Local SIDs
===============================================================================
SID                                               Type           Function
  Micro Segment Locator
  Context
-------------------------------------------------------------------------------
2001:bbbb:1::                                     uN             1
  PE1-mloc
  None
2001:bbbb:1:4000::                                uA             16384
  PE1-mloc
  Base
2001:bbbb:1:4004::                                uDX2           16388
  PE1-mloc
  SvcId: 2 Name: Epipe-2
2001:bbbb:1:4010::                                uA             16400
  PE1-mloc
  None
2001:bbbb:1:4011::                                uDT2U          16401
  PE1-mloc
  SvcId: 3 Name: VPLS-3
2001:bbbb:1:4012::                                uDT2M          16402
  PE1-mloc
  SvcId: 3 Name: VPLS-3
2001:bbbb:1:43e8::                                End.b6.encaps* 17384
  PE1-mloc
  None
-------------------------------------------------------------------------------
SIDs : 7
-------------------------------------------------------------------------------
===============================================================================
* indicates that the corresponding row element may have been truncated.

The IPv6 route table shows two routes that use the SRv6 policy tunnel with tunnel ID 917508:

[/]
A:admin@PE-1# show router route-table ipv6 protocol srv6-policy

===============================================================================
IPv6 Route Table (Router: Base)
===============================================================================
Dest Prefix[Flags]                            Type    Proto     Age        Pref
      Next Hop[Interface Name]                                    Metric
-------------------------------------------------------------------------------
2001:db8:aaaa:101:1:2000::/128                Local   SRV6-Pol* 00h37m48s  14
       2001:db8::2:6 (tunneled:SRV6-Policy:917506)                  1
2001:bbbb:1:43e8::/64                         Local   SRV6-Pol* 00h03m45s  14
       2001:db8::2:6 (tunneled:SRV6-Policy:917508)                  1
2001:bbbb:43e8::/48                           Local   SRV6-Pol* 00h03m45s  14
       2001:db8::2:6 (tunneled:SRV6-Policy:917508)                  1
-------------------------------------------------------------------------------
No. of Routes: 3
Flags: n = Number of times nexthop is repeated
       B = BGP backup route available
       L = LFA nexthop available
       S = Sticky ECMP requested
===============================================================================
* indicates that the corresponding row element may have been truncated.

EVPN VPLS with BGP-signaled SRv6 policy on head-end PE-6

EVPN VPLS using SRv6 policy with color 400 from PE-6 to PE-1 shows the End.X SIDs in the segment list of a BGP-signaled SRv6 policy on head-end PE-6. This SRv6 policy is configured on the controller, imported in the BGP RIB, and advertised as an SRv6 policy route in BGP.

Figure 7. EVPN VPLS using SRv6 policy with color 400 from PE-6 to PE-1
BGP-signaled SRv6 policy

The following SRv6 policy with head-end 192.0.2.6 is configured on the controller and is advertised as an SRv6 policy:

# on controller:
configure exclusive
    router "Base" {
        segment-routing {
            sr-policies {
                admin-state enable
                static-policy "color-400-PE-6-PE-1" {
                    admin-state enable
                    color 400
                    endpoint 2001:db8::2:1
                    head-end 192.0.2.6
                    distinguisher 400006001
                    type srv6
                    segment-routing-v6 {
                        binding-sid 1 {
                            ip-address 2001:db8:aaaa:106:0:9000::
                        }
                    }
                    segment-list 1 {
                        admin-state enable
                        segment 1 {
                            srv6-sid 2001:db8:aaaa:105:0:2000::   # "int-PE-5-PE-4"
                        }
                        segment 2 {
                            srv6-sid 2001:db8:aaaa:104:0:2000::   # "int-PE-4-PE-3"
                        }
                        segment 3 {
                            srv6-sid 2001:db8:aaaa:103:0:2000::   # "int-PE-3-PE-2"
                        }
                    }
                }
EVPN VPLS on PE-1 and PE-6

The EVPN VPLS "VPLS-4" is configured as follows. PE-1 exports color 400 which matches the color in the policy "color-400-PE-6-PE-1" on head-end PE-6:

# on PE-1:
configure {
    policy-options {
        community "color-400" {
            member "color:00:400" { }
        }
        community "vsi-4" {
            member "target:64500:4" { }
        }
        policy-statement "vpls-4-export-c400" {
            default-action {
                action-type accept
                community {
                    add ["vsi-4" "color-400"]
                }
            }
        }
    }
    service {
        vpls "VPLS-4" {
            admin-state enable
            service-id 4
            customer "1"
            segment-routing-v6 1 {
                locator "PE1-loc" {
                    function {
                        end-dt2u {
                        }
                        end-dt2m {
                        }
                    }
                }
            }
            bgp 1 {
                vsi-export ["vpls-4-export-c400"]
                route-target {
                    import "target:64500:4"
                }
            }
            bgp-evpn {
                evi 4
                segment-routing-v6 1 {
                    admin-state enable
                    source-address 2001:db8::2:1
                    srv6 {
                        instance 1
                        default-locator "PE1-loc"
                    }
                    route-next-hop {
                        ip-address 2001:db8::2:1
                    }
                }
            }
            sap 1/1/c10/1:4 {
                description "SAP to CE-41"
            }
        }

On head-end PE-6, only the route target is exported, not the color. The EVPN VPLS "VPLS-4" is configured with SRv6 resolution fallback from the tunnel table to the route table, as follows:

#  on PE-6:
configure {
    service {
        vpls "VPLS-4" {
            admin-state enable
            service-id 4
            customer "1"
            segment-routing-v6 1 {
                locator "PE6-loc" {
                    function {
                        end-dt2u {
                        }
                        end-dt2m {
                        }
                    }
                }
            }
            bgp 1 {
                route-target {
                    export "target:64500:4"
                    import "target:64500:4"
                }
            }
            bgp-evpn {
                evi 4
                segment-routing-v6 1 {
                    admin-state enable
                    source-address 2001:db8::2:6
                    resolution fallback-tunnel-to-route-table
                    srv6 {
                        instance 1
                        default-locator "PE6-loc"
                    }
                    route-next-hop {
                        ip-address 2001:db8::2:6
                    }
                }
            }
            sap 1/1/c10/1:4 {
                description "SAP to CE-46"
            }
        }
Verification

On head-end PE-6, the BGP-signaled SRv6 with color 400 is as follows:

[/]
A:admin@PE-6# show router segment-routing sr-policies bgp color 400

===============================================================================
SR-Policies Path
===============================================================================
-------------------------------------------------------------------------------
Type            : srv6
Active          : Yes                   Owner           : bgp
Operational     : Yes
Color           : 400
Head            : 0.0.0.0               Endpoint Addr   : 2001:db8::2:1
RD              : 400006001             Preference      : 100
SRv6 BSID 1     : 2001:db8:aaaa:106:0:9000::
TunnelId        : 917507                Age             : 42
Origin ASN      : 64500                 Origin          : 2001:db8::2:8
NumReEval       : 0                     LastReEvalReason: none
NumActPathChange: 0                     Last Change     : 06/13/2024 13:47:57
Maintenance Plcy:
Ret Path BFD SID:

Path Segment Lists:
Segment-List    : 1                     Weight          : 1
Num Segments    : 3                     Last Change     : 06/13/2024 12:58:00
  1 SRv6 SID  : 2001:db8:aaaa:105:0:2000::               State : resolved-up
  2 SRv6 SID  : 2001:db8:aaaa:104:0:2000::               State : N/A
  3 SRv6 SID  : 2001:db8:aaaa:103:0:2000::               State : N/A

===============================================================================

The second SRv6 policy tunnel in the IPv6 tunnel table has color 400:

[/]
A:admin@PE-6# show router tunnel-table ipv6 protocol srv6-policy

===============================================================================
IPv6 Tunnel Table (Router: Base)
===============================================================================
Destination                                     Owner     Encap TunnelId  Pref
Nexthop                                         Color           Metric
-------------------------------------------------------------------------------
2001:db8::2:1/128                               srv6-pol  SRV6  917506    14
  fpe_1.a                                         200             0
2001:db8::2:1/128                               srv6-pol  SRV6  917507    14
  fpe_1.a                                         400             0
-------------------------------------------------------------------------------
Flags: B = BGP or MPLS backup hop available
       L = Loop-Free Alternate (LFA) hop available
       E = Inactive best-external BGP route
       k = RIB-API or Forwarding Policy backup hop
===============================================================================

The BGP next hop for EVPN routes to endpoint 2001:db8::2:1 is resolved using the SRv6 policy tunnel with color 400:

[/]
A:admin@PE-6# show router bgp next-hop evpn 2001:db8::2:1 detail
===============================================================================
 BGP Router ID:192.0.2.6        AS:64500       Local AS:64500
===============================================================================

===============================================================================
BGP VPN Next Hop
===============================================================================
-------------------------------------------------------------------------------
---snip---

-------------------------------------------------------------------------------
VPN Next Hop          : 2001:db8::2:1
Autobind              : gre/rtm srv6-policy
Labels                : --
User-labels           : 1
Admin-tag-policy      : --
Strict-tunnel-tagging : N
Color                 : 400
UPA Trigger Next Hop  : --
Locator               : 2001:db8:aaaa:101::/64
Created               : 00h03m48s
Last-modified         : 00h02m54s
-------------------------------------------------------------------------------
Resolving Prefix : 2001:db8::2:1/128
Preference       : 14                   Metric           : 0
Reference Count  : 2                    Owner            : SRV6-POLICY
Fib Programmed   : Y
Resolved Next Hop: 0.140.1.1
Egress Label     : n/a                  TunnelId         : 917507
Locator State    : Resolved
-------------------------------------------------------------------------------
-------------------------------------------------------------------------------
Next Hops : 4
===============================================================================

EVPN IFL

EVPN IFL using SRv6 policy with color 500 from PE-1 to PE-6 shows the micro-segment adjacency SID (uA) for the interface "int-PE-2-PE-5" on PE-2, which is the only segment in the segment list of a static SRv6 policy that is configured on head-end PE-1.

Figure 8. EVPN IFL using SRv6 policy with color 500 from PE-1 to PE-6

Static SRv6 policy on PE-1

On head-end PE-1, the SRv6 policy with color 500 is configured as follows:

# on PE-1:
configure {
    router "Base" {
        segment-routing {
            sr-policies {
                admin-state enable
                static-policy "color-500-PE-1-PE-6-u" {
                    admin-state enable
                    color 500
                    endpoint 2001:db8::2:6
                    head-end local
                    type srv6
                    segment-routing-v6 {
                        binding-sid 1 {
                            micro-segment-locator {
                                locator-name "PE1-mloc"
                                function end-b6-encaps-red-next-csid
                            }
                        }
                    }
                    segment-list 1 {
                        admin-state enable
                        segment 1 {
                            srv6-sid 2001:bbbb:2:4002::     # uA "int-PE-2-PE-5"
                            behavior-and-structure {
                                behavior end-x-next-csid
                                block-length 32
                                node-length 16
                                function-length 16
                            }
                        }
                    }
                }

VPRN-5 with EVPN IFL

VPRN-5 is configured with BGP EVPN, as follows:

# on PE-1:
configure {
    service {
        vprn "VPRN-5" {
            admin-state enable
            service-id 5
            customer "1"
            autonomous-system 64496
            segment-routing-v6 1 {
                micro-segment-locator "PE1-mloc" {
                    function {
                        udt46 {
                        }
                    }
                }
            }
            bgp-evpn {
                segment-routing-v6 1 {
                    admin-state enable
                    route-distinguisher "192.0.2.1:5"
                    source-address 2001:db8::2:1
                    resolution fallback-tunnel-to-route-table
                    vrf-target {
                        community "target:64500:5"
                    }
                    srv6 {
                        instance 1
                        default-locator "PE1-mloc"
                    }
                }
            }
            interface "lo1" {
                loopback true
                ipv4 {
                    primary {
                        address 172.16.105.1
                        prefix-length 24
                    }
                }
                ipv6 {
                    address 2001:db8::105:1 {
                        prefix-length 120
                    }
                }
            }

Endpoint PE-6 exports color 500. The configuration on PE-6 is as follows:

# on PE-6:
configure {
    policy-options {
        community "color-500" {
            member "color:00:500" { }
        }
        community "vrf-5" {
            member "target:64500:5" { }
        }
        policy-statement "vrf-5-export-c500" {
            default-action {
                action-type accept
                community {
                    add ["vrf-5" "color-500"]
                }
            }
        }
        policy-statement "vrf-5-import" {
            entry 10 {
                from {
                    community {
                        name "vrf-5"
                    }
                }
                action {
                    action-type accept
                }
            }
        }
    }
    service {
        vprn "VPRN-5" {
            admin-state enable
            service-id 5
            customer "1"
            autonomous-system 64497
            segment-routing-v6 1 {
                micro-segment-locator "PE6-mloc" {
                    function {
                        udt46 {
                        }
                    }
                }
            }
            bgp-evpn {
                segment-routing-v6 1 {
                    admin-state enable
                    route-distinguisher "192.0.2.1:5"
                    source-address 2001:db8::2:6
                    vrf-import {
                        policy ["vrf-5-import"]
                    }
                    vrf-export {
                        policy ["vrf-5-export-c500"]
                    }
                    srv6 {
                        instance 1
                        default-locator "PE6-mloc"
                    }
                }
            }
            interface "lo1" {
                loopback true
                ipv4 {
                    primary {
                        address 172.16.155.6
                        prefix-length 24
                    }
                }
                ipv6 {
                    address 2001:db8::155:6 {
                        prefix-length 120
                    }
                }
            }
        }

The BGP configuration in the Base router is modified to ensure that IPv6 next hops are advertised for EVPN routes, as described in the BGP configuration section.

Verification

PE-1 receives the EVPN IP prefix 172.16.155.0/24 and the EVPN IPv6 prefix 2001:db8::155:0/120 from PE-6, as follows:

[/]
A:admin@PE-1# show router bgp routes evpn ip-prefix
===============================================================================
 BGP Router ID:192.0.2.1        AS:64500       Local AS:64500
===============================================================================
 Legend -
 Status codes  : u - used, s - suppressed, h - history, d - decayed, * - valid
                 l - leaked, x - stale, > - best, b - backup, p - purge
 Origin codes  : i - IGP, e - EGP, ? - incomplete

===============================================================================
BGP EVPN IP-Prefix Routes
===============================================================================
Flag  Route Dist.         Prefix
      Tag                 Gw Address
                          NextHop
                          Label
                          ESI
-------------------------------------------------------------------------------
u*>i  192.0.2.1:5         172.16.155.0/24
      0                   00:00:00:00:00:00
                          2001:db8::2:6
                          16403
                          ESI-0

-------------------------------------------------------------------------------
Routes : 1
===============================================================================


[/]
A:admin@PE-1# show router bgp routes evpn ipv6-prefix
===============================================================================
 BGP Router ID:192.0.2.1        AS:64500       Local AS:64500
===============================================================================
 Legend -
 Status codes  : u - used, s - suppressed, h - history, d - decayed, * - valid
                 l - leaked, x - stale, > - best, b - backup, p - purge
 Origin codes  : i - IGP, e - EGP, ? - incomplete

===============================================================================
BGP EVPN IPv6-Prefix Routes
===============================================================================
Flag  Route Dist.         Prefix
      Tag                 Gw Address
                          NextHop
                          Label
                          ESI
-------------------------------------------------------------------------------
u*>i  192.0.2.1:5         2001:db8::155:0/120
      0                   00:00:00:00:00:00
                          2001:db8::2:6
                          16403
                          ESI-0

-------------------------------------------------------------------------------
Routes : 1
===============================================================================

In this example, multiple services use different SRv6 policies and the list of micro-segment local SIDs for VPRN-5 shows multiple SRv6 SIDs for the services. On head-end PE-1, the list of micro-segment local SIDs shows the uDT46 function and the End.B6.Encaps.Red function for two different SRv6 policy tunnels: SID 2001:bbbb:1:43e9:: corresponds to the SRv6 policy tunnel for color 500; SID 2001:bbbb:1:43e8:: corresponds to the SRv6 policy tunnel for color 300 and is not used for VPRN-5.

[/]
A:admin@PE-1# show router segment-routing-v6 micro-segment-local-sid context "VPRN-5"

===============================================================================
Micro Segment Routing v6 Local SIDs
===============================================================================
SID                                               Type           Function
  Micro Segment Locator
  Context
-------------------------------------------------------------------------------
2001:bbbb:1:4013::                                uDT46          16403
  PE1-mloc
  SvcId: 5 Name: VPRN-5
2001:bbbb:1:43e8::                                End.b6.encaps* 17384
  PE1-mloc
  None
2001:bbbb:1:43e9::                                End.b6.encaps* 17385
  PE1-mloc
  None
-------------------------------------------------------------------------------
SIDs : 3
-------------------------------------------------------------------------------
===============================================================================
* indicates that the corresponding row element may have been truncated.

If services use different SRv6 policies, the next hop command for the service shows multiple SRv6 policies for the services, but the traffic flow uses the right SRv6 policy with the corresponding color.

[/]
A:admin@PE-1# show router bgp next-hop 2001:db8::2:6 evpn detail
===============================================================================
 BGP Router ID:192.0.2.1        AS:64500       Local AS:64500
===============================================================================

===============================================================================
BGP VPN Next Hop
===============================================================================
-------------------------------------------------------------------------------
---snip---      # GRE tunnels for Epipe-2 and VPLS-4 are not shown

-------------------------------------------------------------------------------
VPN Next Hop          : 2001:db8::2:6
Autobind              : gre/rtm srv6-policy
Labels                : --
User-labels           : 1
Admin-tag-policy      : --
Strict-tunnel-tagging : N
Color                 : 100
UPA Trigger Next Hop  : --
Locator               : 2001:db8:aaaa:106::/64
Created               : 00h02m45s
Last-modified         : 00h02m45s
-------------------------------------------------------------------------------
Resolving Prefix : 2001:db8::2:6/128
Preference       : 14                   Metric           : 0
Reference Count  : 1                    Owner            : SRV6-POLICY
Fib Programmed   : Y
Resolved Next Hop: 0.140.1.1
Egress Label     : n/a                  TunnelId         : 917506
Locator State    : Resolved
-------------------------------------------------------------------------------
-------------------------------------------------------------------------------
VPN Next Hop          : 2001:db8::2:6
Autobind              : gre/rtm srv6-policy
Labels                : --
User-labels           : 1
Admin-tag-policy      : --
Strict-tunnel-tagging : N
Color                 : 300
UPA Trigger Next Hop  : --
Locator               : 2001:bbbb:6::/48
Created               : 00h02m45s
Last-modified         : 00h02m45s
-------------------------------------------------------------------------------
Resolving Prefix : 2001:db8::2:6/128
Preference       : 14                   Metric           : 0
Reference Count  : 1                    Owner            : SRV6-POLICY
Fib Programmed   : Y
Resolved Next Hop: 0.140.1.1
Egress Label     : n/a                  TunnelId         : 917508
Locator State    : Resolved
-------------------------------------------------------------------------------
-------------------------------------------------------------------------------
VPN Next Hop          : 2001:db8::2:6
Autobind              : gre srv6-policy
Labels                : --
User-labels           : 2
Admin-tag-policy      : --
Strict-tunnel-tagging : N
Color                 : 500
UPA Trigger Next Hop  : --
Locator               : 2001:bbbb:6::/48
Created               : 00h02m45s
Last-modified         : 00h02m45s
-------------------------------------------------------------------------------
Resolving Prefix : 2001:db8::2:6/128
Preference       : 14                   Metric           : 0
Reference Count  : 2                    Owner            : SRV6-POLICY
Fib Programmed   : Y
Resolved Next Hop: 0.140.1.1
Egress Label     : n/a                  TunnelId         : 917509
Locator State    : Resolved
-------------------------------------------------------------------------------
-------------------------------------------------------------------------------
Next Hops : 5
===============================================================================

IP VPN

IP VPN using SRv6 policy with color 600 from PE-1 to PE-6 shows a combination of classic adjacency SIDs (End.X) and micro-segment adjacency SIDs (uA) in the segment list of a static SRv6 policy that is configured on head-end PE-1.

Figure 9. IP VPN using SRv6 policy with color 600 from PE-1 to PE-6

The BGP configuration for IP VPN is described in the BGP configuration section.

Static SRv6 policy

On head-end 1, the following SRv6 policy is configured with color 600 and a segment list containing two micro-segment SRv6 SIDs and one classic SRv6 SID.

# on PE-1:
configure {
    router "Base" {
        segment-routing {
            sr-policies {
                admin-state enable
                static-policy "color-600-PE-1-PE-6-mixed" {
                    admin-state enable
                    color 600
                    endpoint 2001:db8::2:6
                    head-end local
                    type srv6
                    segment-routing-v6 {
                        binding-sid 1 {
                            micro-segment-locator {
                                locator-name "PE1-mloc"
                                function end-b6-encaps-red-next-csid
                            }
                        }
                    }
                    segment-list 1 {
                        admin-state enable
                        segment 1 {
                            srv6-sid 2001:bbbb:2:4001::
                            behavior-and-structure {
                                behavior end-x-next-csid
                                block-length 32
                                node-length 16
                                function-length 16
                            }
                        }
                        segment 2 {
                            srv6-sid 2001:db8:aaaa:103:0:3000:: 
                        }
                        segment 3 {
                            srv6-sid 2001:bbbb:4:4001::
                            behavior-and-structure {
                                behavior end-x-next-csid
                                block-length 32
                                node-length 16
                                function-length 16
                            }
                       }
                    }
                }

VPRN-6 with VPN IP

On head-end PE-1, VPRN-6 is configured as follows:

# on PE-1:
configure {
    service {
        vprn "VPRN-6" {
            admin-state enable
            service-id 6
            customer "1"
            autonomous-system 64496
            segment-routing-v6 1 {
                micro-segment-locator "PE1-mloc" {
                    function {
                        udt4 {
                        }
                        udt6 {
                        }
                    }
                }
            }
            bgp-ipvpn {
                segment-routing-v6 1 {
                    admin-state enable
                    route-distinguisher "192.0.2.1:6"
                    source-address 2001:db8::2:1
                    resolution fallback-tunnel-to-route-table
                    vrf-target {
                        community "target:64500:6"
                    }
                    srv6 {
                        instance 1
                        default-locator "PE1-mloc"
                    }
                }
            }
            interface "lo1" {
                loopback true
                ipv4 {
                    primary {
                        address 172.16.106.1
                        prefix-length 24
                    }
                }
                ipv6 {
                    address 2001:db8::106:1 {
                        prefix-length 120
                    }
                }
            }

On endpoint PE-6, the configuration is as follows:

# on PE-6:
configure {
    policy-options {
        community "color-600" {
            member "color:00:600" { }
        }
        community "vrf-6" {
            member "target:64500:6" { }
        }
        policy-statement "vrf-6-export-c600" {
            default-action {
                action-type accept
                community {
                    add ["vrf-6" "color-600"]
                }
            }
        }
        policy-statement "vrf-6-import" {
            entry 10 {
                from {
                    community {
                        name "vrf-6"
                    }
                }
                action {
                    action-type accept
                }
            }
        }
    }
    service {
        vprn "VPRN-6" {
            admin-state enable
            service-id 6
            customer "1"
            autonomous-system 64497
            segment-routing-v6 1 {
                micro-segment-locator "PE6-mloc" {
                    function {
                        udt4 {
                        }
                        udt6 {
                        }
                    }
                }
            }
            bgp-ipvpn {
                segment-routing-v6 1 {
                    admin-state enable
                    route-distinguisher "192.0.2.1:6"
                    source-address 2001:db8::2:6
                    vrf-import {
                        policy ["vrf-6-import"]
                    }
                    vrf-export {
                        policy ["vrf-6-export-c600"]
                    }
                    srv6 {
                        instance 1
                        default-locator "PE6-mloc"
                    }
                }
            }
            interface "lo1" {
                loopback true
                ipv4 {
                    primary {
                        address 172.16.166.6
                        prefix-length 24
                    }
                }
                ipv6 {
                    address 2001:db8::166:6 {
                        prefix-length 120
                    }
                }
            }

Verification

On head-end PE-1, the list of micro-segment local SIDs includes SID 2001:bbbb:1:43e8:: for VPLS-3 and SID 2001:bbbb:1:43e9:: for VPRN-5, but only SID 2001:bbbb:1:43ea:: is used for VPRN-6.

[/]
A:admin@PE-1# show router segment-routing-v6 micro-segment-local-sid context "VPRN-6"

===============================================================================
Micro Segment Routing v6 Local SIDs
===============================================================================
SID                                               Type           Function
  Micro Segment Locator
  Context
-------------------------------------------------------------------------------
2001:bbbb:1:4014::                                uDT4           16404
  PE1-mloc
  SvcId: 6 Name: VPRN-6
2001:bbbb:1:4015::                                uDT6           16405
  PE1-mloc
  SvcId: 6 Name: VPRN-6
2001:bbbb:1:43e8::                                End.b6.encaps* 17384
  PE1-mloc
  None
2001:bbbb:1:43e9::                                End.b6.encaps* 17385
  PE1-mloc
  None
2001:bbbb:1:43ea::                                End.b6.encaps* 17386
  PE1-mloc
  None
-------------------------------------------------------------------------------
SIDs : 5
-------------------------------------------------------------------------------
===============================================================================
* indicates that the corresponding row element may have been truncated.

The tunnel with color 600 is the SRv6 policy tunnel to be used for VPRN-6:

[/]
A:admin@PE-1# show router tunnel-table ipv6 protocol srv6-policy

===============================================================================
IPv6 Tunnel Table (Router: Base)
===============================================================================
Destination                                     Owner     Encap TunnelId  Pref
Nexthop                                         Color           Metric
-------------------------------------------------------------------------------
2001:db8::2:6/128                               srv6-pol  SRV6  917506    14
  fpe_1.a                                         100             0
2001:db8::2:6/128                               srv6-pol  SRV6  917508    14
  fpe_1.a                                         300             0
2001:db8::2:6/128                               srv6-pol  SRV6  917509    14
  fpe_1.a                                         500             0
2001:db8::2:6/128                               srv6-pol  SRV6  917511    14
  fpe_1.a                                         600             0
-------------------------------------------------------------------------------
Flags: B = BGP or MPLS backup hop available
       L = Loop-Free Alternate (LFA) hop available
       E = Inactive best-external BGP route
       k = RIB-API or Forwarding Policy backup hop
===============================================================================

The BGP next hop for VPN-IPv4 routes is resolved using an SRv6 policy:

[/]
A:admin@PE-1# show router bgp next-hop vpn-ipv4
===============================================================================
 BGP Router ID:192.0.2.1        AS:64500       Local AS:64500
===============================================================================

===============================================================================
BGP VPN Next Hop
===============================================================================
VPN Next Hop                                                Owner
   Autobind                                        FibProg  Reason
   Labels (User-labels)                            FlexAlgo Metric
   Admin-tag-policy (strict-tunnel-tagging)                 Last Mod.
-------------------------------------------------------------------------------
2001:db8::2:6                                               SRV6-POLICY
   gre srv6-policy                                 Y
   -- (2)                                          --       0
   -- (N)                                                   00h02m33s
-------------------------------------------------------------------------------
Next Hops : 1
===============================================================================

In a similar way, the BGP next hop for VPN-IPv6 routes is resolved using an SRv6 policy, as follows:

[/]
A:admin@PE-1# show router bgp next-hop vpn-ipv6
===============================================================================
 BGP Router ID:192.0.2.1        AS:64500       Local AS:64500
===============================================================================

===============================================================================
BGP VPN Next Hop
===============================================================================
VPN Next Hop                                                Owner
   Autobind                                        FibProg  Reason
   Labels (User-labels)                            FlexAlgo Metric
   Admin-tag-policy (strict-tunnel-tagging)                 Last Mod.
-------------------------------------------------------------------------------
2001:db8::2:6                                               SRV6-POLICY
   gre srv6-policy                                 Y
   -- (2)                                          --       0
   -- (N)                                                   00h02m33s
-------------------------------------------------------------------------------
Next Hops : 1
===============================================================================

Conclusion

EVPN VPWS, EVPN VPLS, EVPN IFL, and VPN IP services can resolve their BGP next hops over an SRv6 policy in TTMv6.