The SRv6-based IPv4 L3VPN feature enables deployment of IPv4 L3VPN over a SRv6 data plane. Traditionally, it was done over
an MPLS-based system. SRv6-based L3VPN uses SRv6 Segment IDs (SIDs) for service segments instead of labels. SRv6-based L3VPN
functionality interconnects multiple sites to resemble a private network service over public infrastructure. To use this feature,
you must configure SRv6-base.
For this feature, BGP allocates an SRv6 SID from the locator space, configured under SRv6-base and VPNv4 address family. For
more information on this, refer Segment Routing over IPv6 Overview. The BGP SID can be allocated in the following ways:
BGP encodes the SRv6 SID in the prefix-SID attribute of the IPv4 L3VPN Network Layer Reachability Information (NLRI) and advertises
it to IPv6 peering over an SRv6 network. The Ingress PE (provider edge) router encapsulates the VRF IPv4 traffic with the
SRv6 VPN SID and sends it over the SRv6 network.
Verification
The following example shows how to verify the SRv6 based L3VPN configuration using the show segment-routing srv6 sid command.
In this example, End.X represents Endpoint function with Layer-3 cross-connect, End.DT4 represents Endpoint with decapsulation
and IPv4 table lookup, and End.DX4 represents Endpoint with decapsulation and IPv4 cross-connect.
RP/0/0/CPU0:SRv6-Hub6# show segment-routing srv6 sid
*** Locator: 'my_locator' ***
SID Function Context Owner State RW
-------------------------- ----------- ------------------------------ ------------------ ----- --
cafe:0:0:66:1:: End (PSP) 'my_locator':1 sidmgr InUse Y
cafe:0:0:66:40:: End.X (PSP) [Te0/0/0/2, Link-Local] isis-srv6 InUse Y
cafe:0:0:66:41:: End.X (PSP) [BE6801, Link-Local] isis-srv6 InUse Y
cafe:0:0:66:42:: End.X (PSP) [BE5601, Link-Local] isis-srv6 InUse Y
cafe:0:0:66:43:: End.X (PSP) [BE5602, Link-Local] isis-srv6 InUse Y
cafe:0:0:66:44:: End.DT4 'VRF1' bgp-100 InUse Y
cafe:0:0:66:45:: End.DT4 'VRF2' bgp-100 InUse Y
cafe:0:0:66:46:: End.DX4 'VRF2’:3 bgp-100 InUse Y
cafe:0:0:66:47:: End.DX4 'VRF2’:4 bgp-100 InUse Y
The following example shows how to verify the SRv6 based L3VPN configuration using the show segment-routing srv6 SID-prefix detail command.
RP/0/RP0/CPU0:SRv6-Hub6# show segment-routing srv6 sid cafe:0:0:66:44:: detail
Sun Dec 9 16:52:54.015 EST
*** Locator: ‘my_locator' ***
SID Function Context Owner State RW
-------------------------- ----------- ------------------------------ ------------------ ----- --
cafe:0:0:66:44:: End.DT4 'VRF1' bgp-100 InUse Y
SID context: { table-id=0xe0000001 ('VRF1':IPv4/Unicast) }
Locator: ‘my_locator'
Allocation type: Dynamic
Created: Dec 8 16:34:32.506 (1d00h ago)
RP/0/RP0/CPU0:SRv6-Hub6# show segment-routing srv6 sid cafe:0:0:66:47:: detail
Sun Dec 9 16:54:26.073 EST
*** Locator: 'my_locator' ***
SID Function Context Owner State RW
-------------------------- ----------- ------------------------------ ------------------ ----- --
cafe:0:0:66:47:: End.DX4 'VRF2’:4 bgp-100 InUse Y
SID context: { table-id=0xe0000002 ('VRF2':IPv4/Unicast), nh-set-id=4 }
Locator: ‘my_locator'
Allocation type: Dynamic
Created: Dec 9 16:49:44.714 (00:04:41 ago)
The following example shows how to verify the SRv6 based L3VPN configuration using the show bgp vpnv4 unicast rd route-distinguisher/prefix command on Egress PE.
RP/0/RP0/CPU0:SRv6-Hub6# show bgp vpnv4 unicast rd 106:1 10.15.0.0/30
Wed Nov 21 16:08:44.765 EST
BGP routing table entry for 10.15.0.0/30, Route Distinguisher: 106:1
Versions:
Process bRIB/RIB SendTblVer
Speaker 2282449 2282449
SRv6-VPN SID: cafe:0:0:66:44::/128
Last Modified: Nov 21 15:50:34.235 for 00:18:10
Paths: (2 available, best #1)
Advertised to peers (in unique update groups):
2::2
Path #1: Received by speaker 0
Advertised to peers (in unique update groups):
2::2
200
10.1.2.2 from 10.1.2.2 (10.7.0.1)
Origin IGP, localpref 200, valid, internal, best, group-best, import-candidate
Received Path ID 0, Local Path ID 1, version 2276228
Extended community: RT:201:1
Path #2: Received by speaker 0
Not advertised to any peer
200
10.2.2.2 from 10.2.2.2 (10.20.1.2)
Origin IGP, localpref 100, valid, internal
Received Path ID 0, Local Path ID 0, version 0
Extended community: RT:201:1
The following example shows how to verify the SRv6 based L3VPN configuration using the show bgp vpnv4 unicast rd route-distinguisher prefix command on Ingress PE.
RP/0/RP0/CPU0:SRv6-LF1# show bgp vpnv4 unicast rd 106:1 10.15.0.0/30
Wed Nov 21 16:11:45.538 EST
BGP routing table entry for 10.15.0.0/30, Route Distinguisher: 106:1
Versions:
Process bRIB/RIB SendTblVer
Speaker 2286222 2286222
Last Modified: Nov 21 15:47:26.288 for 00:24:19
Paths: (1 available, best #1)
Not advertised to any peer
Path #1: Received by speaker 0
Not advertised to any peer
200, (received & used)
6::6 (metric 24) from 2::2 (6.6.6.6)
Received Label 3
Origin IGP, localpref 200, valid, internal, best, group-best, import-candidate, not-in-vrf
Received Path ID 1, Local Path ID 1, version 2286222
Extended community: RT:201:1
Originator: 6.6.6.6, Cluster list: 2.2.2.2
SRv6-VPN-SID: T1-cafe:0:0:66:44:: [total 1]
The following example shows how to verify the SRv6 based L3VPN configuration using the show route vrf vrf-name/prefix detail command.
RP/0/RP0/CPU0:SRv6-LF1# show route vrf VRF1 10.15.0.0/30 detail
Wed Nov 21 16:35:17.775 EST
Routing entry for 10.15.0.0/30
Known via "bgp 100", distance 200, metric 0
Tag 200, type internal
Installed Nov 21 16:35:14.107 for 00:00:03
Routing Descriptor Blocks
6::6, from 2::2
Nexthop in Vrf: "default", Table: "default", IPv6 Unicast, Table Id: 0xe0800000
Route metric is 0
Label: None
Tunnel ID: None
Binding Label: None
Extended communities count: 0
Source RD attributes: 0x0000:106:1
NHID:0x0(Ref:0)
SRv6 Headend: H.Encaps.Red [base], SID-list { cafe:0:0:66:44:: }
MPLS eid:0x1380600000001
Route version is 0xd (13)
No local label
IP Precedence: Not Set
QoS Group ID: Not Set
Flow-tag: Not Set
Fwd-class: Not Set
Route Priority: RIB_PRIORITY_RECURSIVE (12) SVD Type RIB_SVD_TYPE_REMOTE
Download Priority 3, Download Version 3038384
No advertising protos.
The following example shows how to verify the SRv6 based L3VPN configuration for per-ce allocation mode using the show bgp vrf vrf-name nexthop-set command.
RP/0/RP0/CPU0:SRv6-Hub6# show bgp vrf VRF2 nexthop-set
Wed Nov 21 15:52:17.464 EST
Resilient per-CE nexthop set, ID 3
Number of nexthops 1, Label 0, Flags 0x2200
SRv6-VPN SID: cafe:0:0:66:46::/128
Nexthops:
10.1.2.2
Reference count 1,
Resilient per-CE nexthop set, ID 4
Number of nexthops 2, Label 0, Flags 0x2100
SRv6-VPN SID: cafe:0:0:66:47::/128
Nexthops:
10.1.2.2
10.2.2.2
Reference count 2,
The following example shows how to verify the SRv6 based L3VPN configuration using the show cef vrf vrf-name prefix
detail location line-card command.
RP/0/RP0/CPU0:SRv6-LF1# show cef vrf VRF1 10.15.0.0/30 detail location 0/0/cpu0
Wed Nov 21 16:37:06.894 EST
151.1.0.0/30, version 3038384, SRv6 Transit, internal 0x5000001 0x0 (ptr 0x9ae6474c) [1], 0x0 (0x0), 0x0 (0x8c11b238)
Updated Nov 21 16:35:14.109
Prefix Len 30, traffic index 0, precedence n/a, priority 3
gateway array (0x8cd85190) reference count 1014, flags 0x2010, source rib (7), 0 backups
[1 type 3 flags 0x40441 (0x8a529798) ext 0x0 (0x0)]
LW-LDI[type=0, refc=0, ptr=0x0, sh-ldi=0x0]
gateway array update type-time 1 Nov 21 14:47:26.816
LDI Update time Nov 21 14:52:53.073
Level 1 - Load distribution: 0
[0] via cafe:0:0:66::/128, recursive
via cafe:0:0:66::/128, 7 dependencies, recursive [flags 0x6000]
path-idx 0 NHID 0x0 [0x8acb53cc 0x0]
next hop VRF - 'default', table - 0xe0800000
next hop cafe:0:0:66::/128 via cafe:0:0:66::/64
SRv6 H.Encaps.Red SID-list {cafe:0:0:66:44::}
Load distribution: 0 (refcount 1)
Hash OK Interface Address
0 Y Bundle-Ether1201 fe80::2