User Tools

Site Tools


networking:containerlab:srv6_l3vpn:srv6-l3vpn-multi

SRv6 L3VPN Multi-Vendor Lab - Architecture & Configuration

This document provides a comprehensive analysis, review, and architectural breakdown of the srv6-l3vpn-multi Containerlab topology and its associated configuration files.

Date of Analysis 2026-09-02
Target System Containerlab Lab Environment
Topology Scope SRv6 (Segment Routing over IPv6) with Multi-Vendor PE Routers

1. Topology & Node Architecture

The lab represents a highly advanced, carrier-grade SRv6 L3VPN implementation crossing multiple network operating systems. It enables overlapping customer VRFs (clienta and clientb) to route over an IPv6-only transport core using SRv6 Locators.

1.1 Node Inventory

The environment utilizes a variety of specialized control plane, core, and provider edge (PE) devices:

Node Name Operating System / Kind IP Address (OOB Mgmt) Role / Description
rr1 Linux (FRRouting 10.7.0) 172.99.20.x BGP Route Reflector (iBGP VPNv4/VPNv6)
p1 Linux (FRRouting + Kea DHCPv6) 172.99.20.x Core Provider Router (P) & IPv6 Address Allocator
pe1 Cisco IOS-XE (C8000V) 172.99.20.x Provider Edge 1 (Autonomous)
pe2 Cisco IOS-XE (C8000V) 172.99.20.x Provider Edge 2 (Autonomous)
pe3 Cisco IOS-XE (C8000V) 172.99.20.x Provider Edge 3 (Autonomous)
pe4 6WIND VSR 172.99.20.x High-performance DPDK-based Software PE
pe5 Linux (FRRouting 10.7.0) 172.99.20.x Linux-native FRR PE with VRF table bindings
pe6 VyOS 172.99.20.x VyOS-native VRF & SRv6 PE
pe7 Cisco IOS-XR 172.99.20.20 Cisco Service Provider OS (Minimal config present)

1.2 Customer VRF & End-Host Mapping

The design separates customers into two distinct Virtual Routing and Forwarding (VRF) instances:

Customer VRF Route Target (RT) RD (Route Distinguisher) Attached Clients
clienta 65000:101 65000:101 clienta-1 to clienta-7
clientb 65000:102 65000:102 clientb-1 to clientb-3

2. Underlay Routing & SRv6 Configuration

The backbone transport network relies on Single-Area IS-IS (Intermediate System to Intermediate System) to distribute loopbacks and locator prefixes, which is a textbook design for SRv6 deployments.

2.1 IS-IS Infrastructure

  • Metric Style: Wide metric formatting is explicitly enabled (metric-style wide). This is a mandatory prerequisite for carrying Segment Routing TLVs.
  • MTU Core: The backbone interfaces (e.g., links connecting p1 to PEs) are set to 9216 bytes (Jumbo Frames) to handle the SRv6 outer headers without fragmentation.

2.2 SRv6 Locators & Micro-SIDs

The PEs use uSID (Micro-Segment) format usid-f3216.

Router Loopback IPv6 SRv6 Locator Prefix Locator Format
pe1 Dynamic / Provider-assigned FD00:CAFE:1111::/48 uSID-f3216
pe2 Dynamic / Provider-assigned FD00:CAFE:2222::/48 uSID-f3216
pe3 Dynamic / Provider-assigned FD00:CAFE:3333::/48 uSID-f3216
pe4 fd00:cafe:4444:1000::1/128 fd00:cafe:4444::/48 micro-sid-f3216
pe6 fd00:cafe:6666::1/128 fd00:cafe:6666::/48 uSID-f3216

3. Overlay Control Plane (Multiprotocol BGP)

To exchange VPNv4 and VPNv6 customer routes across the SRv6 core, an MP-BGP control plane is implemented. All nodes reside in Autonomous System 65577 (iBGP structure) with rr1 acting as the central Route Reflector. SIDs are allocated per-VRF (alloc-mode per-vrf).

4. Ansible & Automation Playbooks

4.1 Playbook Verification

The inconsistencies previously noted have been successfully corrected:

  • Inventory Alignment: Both enable-interfaces.yml and disable-interfaces.yml now correctly target the clab-srv6-l3vpn-multi-pe1, pe2, pe3 hosts.
  • Interface Alignment: Both playbooks now accurately loop through GigabitEthernet interfaces 2, 3, and 4.

5. Operational Issues & Recommendations

  • 🚧 Dynamic Client RA/Loop In clienta-1:
    • Issue: clienta-1 runs a background infinite bash loop that downs and ups eth1 every 60 seconds to refresh its default route.
    • Fix: Check if PE1 is reliably sending IPv6 Router Advertisements (RAs) to the clients.
  • 🚧 VyOS PE6 Static Route Fallback:
    • Issue: VyOS has a static IPv6 route forcing traffic to the locator namespace back to default (route6 fd00:cafe::/32 { next-hop 2001:db8:107::1 }).
    • Fix: Ensure MP-BGP is distributing this natively so that the network remains resilient during a path failure.

— —

Configuration Files Library

ContainerLab Topology

File: srv6-l3vpn-multi.clab.yaml

name: srv6-l3vpn-multi
mgmt:
  network: clab-mgmt-net
  ipv4-subnet: 172.99.20.0/24
  ipv6-subnet: ""
topology:
  nodes:
    rr1:
      kind: linux
      image: quay.io/frrouting/frr:10.7.0
      cmd: bash -c "/usr/lib/frr/frrinit.sh start && tail -f /dev/null"
      sysctls:
        net.ipv4.ip_forward: 1
        net.ipv4.conf.all.forwarding: 1
        net.ipv6.conf.all.forwarding: 1
        net.ipv6.conf.default.forwarding: 1
        net.ipv6.seg6_flowlabel: 1
        net.ipv6.conf.default.seg6_enabled: 1
        net.ipv6.conf.all.seg6_enabled: 1
        net.vrf.strict_mode: 1
      binds:
        - rr1/daemons:/etc/frr/daemons
        - rr1/frr.conf:/etc/frr/frr.conf
        - rr1/vtysh.conf:/etc/frr/vtysh.conf
      exec:
        - ip link add dummy0 type dummy
        - ip link set dummy0 up
    p1:
      kind: linux
      image: quay.io/frrouting/frr:10.7.0
      cmd: >-
        bash -c "
        apk update && apk add kea &&
        rm -f /tmp/kea*.lock /run/kea/*.lock /run/kea/*.pid &&
        mkdir -p /run/kea &&
        chmod 640 -R /run/kea &&
        sleep 2 &&
        (/usr/sbin/kea-dhcp6 -c /etc/kea/kea-dhcp6.conf > /var/log/kea-dhcp6.log 2>&1 &) &&
        /usr/lib/frr/frrinit.sh start &&
        tail -f /dev/null
        "
      sysctls:
        net.ipv4.ip_forward: 1
        net.ipv4.conf.all.forwarding: 1
        net.ipv6.conf.all.forwarding: 1
        net.ipv6.conf.default.forwarding: 1
        net.ipv6.seg6_flowlabel: 1
        net.ipv6.conf.default.seg6_enabled: 1
        net.ipv6.conf.all.seg6_enabled: 1
        net.vrf.strict_mode: 1
      binds:
        - p1/daemons:/etc/frr/daemons
        - p1/frr.conf:/etc/frr/frr.conf
        - p1/vtysh.conf:/etc/frr/vtysh.conf
        - p1/kea-dhcp6.conf:/etc/kea/kea-dhcp6.conf
      exec:
        - ip link add dummy0 type dummy
        - ip link set dummy0 up
    pe1:
      kind: cisco_c8000v
      type: autonomous
      image: vrnetlab/cisco_c8000v:26.01.01
      env:
        QEMU_SMP: "4"
        QEMU_MEMORY: "8196"
      startup-config: configs/pe1-startup-config.cfg
    pe2:
      kind: cisco_c8000v
      type: autonomous
      image: vrnetlab/cisco_c8000v:26.01.01
      env:
        QEMU_SMP: "4"
        QEMU_MEMORY: "8196"
      startup-config: configs/pe2-startup-config.cfg
    pe3:
      kind: cisco_c8000v
      type: autonomous
      image: vrnetlab/cisco_c8000v:26.01.01
      env:
        QEMU_SMP: "4"
        QEMU_MEMORY: "8196"
      startup-config: configs/pe3-startup-config.cfg
    pe4:
      kind: 6wind_vsr
      image: download.6wind.com/vsr/x86_64-ce/3.12:3.12.2.2
      startup-config: configs/pe4-startup-config.cfg
      cpu: 4
      memory: 8GB
      binds:
        - /dev/hugepages:/dev/hugepages
        - /dev/shm:/dev/shm:rw
    pe5:
      kind: linux
      image: quay.io/frrouting/frr:10.7.0
      cmd: bash -c "/usr/lib/frr/frrinit.sh start && tail -f /dev/null"
      sysctls:
        net.ipv4.ip_forward: 1
        net.ipv4.conf.all.forwarding: 1
        net.ipv6.conf.all.forwarding: 1
        net.ipv6.conf.default.forwarding: 1
        net.ipv6.seg6_flowlabel: 1
        net.ipv6.conf.default.seg6_enabled: 1
        net.ipv6.conf.all.seg6_enabled: 1
        net.vrf.strict_mode: 1
      binds:
        - pe5/daemons:/etc/frr/daemons
        - pe5/frr.conf:/etc/frr/frr.conf
        - pe5/vtysh.conf:/etc/frr/vtysh.conf
      exec:
        - ip link add dummy0 type dummy
        - ip link set dummy0 up
        - ip link add clienta type vrf table 10
        - ip link set eth2 master clienta
        - ip link set clienta up
    pe6:
      kind: vyosnetworks_vyos
      image: vyos:2026.06.30-0048
      startup-config: configs/pe6-startup-config.cfg
    clienta-1:
      kind: linux
      image: clab-nginx:latest
      sysctls:
        net.ipv6.conf.all.disable_ipv6: 0
        net.ipv6.conf.all.accept_ra: 2
      exec:
        - sysctl -w net.ipv6.conf.eth1.accept_ra=2
        - dd if=/dev/zero of=/usr/share/nginx/html/bigfile.bin bs=1M count=10240
        - sysctl -w net.ipv6.conf.eth1.accept_ra=2
        - apt update -y
        - apt install -y procps psmisc wget curl avahi-daemon avahi-utils
        - ip -4 addr add 142.134.7.82/30 dev eth1
        - ip link set dev eth1 up
        - ip -4 route del default || true
        - ip -4 route add 224.0.0.0/4 dev eth1
        - ip -4 route add 0.0.0.0/0 via 142.134.7.81
        - sed -i 's/#enable-dbus=yes/enable-dbus=no/g' /etc/avahi/avahi-daemon.conf
        - killall -q avahi-daemon || true
        - rm -rf /var/run/avahi-daemon/
        - mkdir -p /var/run/avahi-daemon/
        - chown avahi:avahi /var/run/avahi-daemon/
        - avahi-daemon -D
        - bash -c "while true; do sleep 60; ip link set dev eth1 down; sleep 1; ip link set dev eth1 up; ip -4 route del default || true; ip -4 route add 0.0.0.0/0 via 142.134.7.81; killall -q avahi-daemon || true; rm -rf /var/run/avahi-daemon/*; avahi-daemon -D; done &"
    br1001:
      kind: bridge
  links:
    - endpoints: ["rr1:eth1", "p1:eth1"]
      mtu: 9216
    - endpoints: ["p1:eth2", "pe1:Gi2"]
      mtu: 9216
    - endpoints: ["p1:eth3", "pe2:Gi2"]
      mtu: 9216
    - endpoints: ["p1:eth4", "pe3:Gi2"]
      mtu: 9216
    - endpoints: ["p1:eth5", "pe4:eth1"]
      mtu: 9216
    - endpoints: ["p1:eth6", "pe5:eth1"]
      mtu: 9216
    - endpoints: ["p1:eth7", "pe6:eth1"]
      mtu: 9216
    - endpoints: ["pe1:Gi3", "clienta-1:eth1"]
      mtu: 1500
    - endpoints: ["pe1:Gi5", "br1001:eth1"]
      mtu: 1500

Ansible Playbooks

File: enable-interfaces.yml

---
- name: Bring up interfaces on PE routers
  # Targets the specific PE routers you mentioned
  hosts: clab-srv6-l3vpn-multi-pe1, clab-srv6-l3vpn-multi-pe2, clab-srv6-l3vpn-multi-pe3
 
  # Network CLI connection is required for Cisco devices
  connection: network_cli
  gather_facts: false
  
  vars:
    # Explicitly tell Ansible the OS type for these nodes
    ansible_network_os: cisco.ios.ios
  tasks:
    - name: Enable GigabitEthernet interfaces 2 through 4
      cisco.ios.ios_config:
        lines:
          - no shutdown
        parents: "interface GigabitEthernet{{ item }}"
      # Loop through the interface numbers
      loop:
        - 2
        - 3
        - 4
    - name: Save running-config to startup-config (write mem)
      cisco.ios.ios_config:
        save_when: modified

File: disable-interfaces.yml

---
- name: Bring down interfaces on PE routers
  # Targets the specific PE routers you mentioned
  hosts: clab-srv6-l3vpn-multi-pe1, clab-srv6-l3vpn-multi-pe2, clab-srv6-l3vpn-multi-pe3
 
  # Network CLI connection is required for Cisco devices
  connection: network_cli
  gather_facts: false
  
  vars:
    # Explicitly tell Ansible the OS type for these nodes
    ansible_network_os: cisco.ios.ios
  tasks:
    - name: Enable GigabitEthernet interfaces 2 through 4
      cisco.ios.ios_config:
        lines:
          - shutdown
        parents: "interface GigabitEthernet{{ item }}"
      # Loop through the interface numbers
      loop:
        - 2
        - 3
        - 4
    - name: Save running-config to startup-config (write mem)
      cisco.ios.ios_config:
        save_when: modified

File: nornir-simple-inventory.yml

---
pe4:
    username: admin
    password: admin
    platform: 6wind_vsr
    hostname: 172.99.20.19
br1001:
    username: 
    password: 
    platform: bridge
    hostname: 
pe1:
    username: admin
    password: admin
    platform: cisco_c8000v
    hostname: 172.99.20.2
pe2:
    username: admin
    password: admin
    platform: cisco_c8000v
    hostname: 172.99.20.13
pe3:
    username: admin
    password: admin
    platform: cisco_c8000v
    hostname: 172.99.20.7
clienta-1:
    username: 
    password: 
    platform: linux
    hostname: 172.99.20.14
pe6:
    username: admin
    password: admin
    platform: vyosnetworks_vyos
    hostname: 172.99.20.18

Router Configurations

File: configs/pe1-startup-config.cfg

Building configuration...
Current configuration : 9632 bytes
!
version 26.1
service timestamps debug datetime msec
service timestamps log datetime msec
platform qfp utilization monitor load 80
platform sslvpn use-pd
platform console serial
!
hostname pe1
!
vrf definition clab-mgmt
 description Containerlab management VRF (DO NOT DELETE)
 !
 address-family ipv4
 exit-address-family
 !
 address-family ipv6
 exit-address-family
!
vrf definition clienta
 rd 65000:101
 !
 address-family ipv4
  route-target export 65000:101
  route-target import 65000:101
 exit-address-family
 !
 address-family ipv6
  route-target export 65000:101
  route-target import 65000:101
 exit-address-family
!
vrf definition clientb
 rd 65000:102
 !
 address-family ipv4
  route-target export 65000:102
  route-target import 65000:102
 exit-address-family
 !
 address-family ipv6
  route-target export 65000:102
  route-target import 65000:102
 exit-address-family
!
crypto pki trustpoint SLA-TrustPoint
 revocation-check crl
 hash sha512
!
crypto pki trustpoint TP-self-signed-2270412557
 enrollment selfsigned
 subject-name cn=IOS-Self-Signed-Certificate-2270412557
 revocation-check none
 rsakeypair TP-self-signed-2270412557
 hash sha512
!
! [ PKI CERTIFICATE CHAINS TRUNCATED FOR BREVITY ]
!
interface Loopback0
 no ip address
 no ip proxy-arp
 ipv6 address prefix-from-provider ::1/128
 ipv6 enable
 ipv6 router isis SR
!
interface GigabitEthernet1
 vrf forwarding clab-mgmt
 ip address 10.0.0.15 255.255.255.0
 no ip proxy-arp
 negotiation auto
 ipv6 address 2001:DB8::2/64
!
interface GigabitEthernet2
 description "to p1 - eth2"
 mtu 9216
 no ip address
 ip proxy-arp
 negotiation auto
 ipv6 dhcp client request vendor
 ipv6 dhcp client pd prefix-from-provider
 ipv6 address autoconfig default
 ipv6 enable
 ipv6 router isis SR
 isis network point-to-point
!
interface GigabitEthernet3
 vrf forwarding clienta
 ip address 142.134.7.81 255.255.255.252
 no ip proxy-arp
 negotiation auto
 ipv6 address prefix-from-provider ::1/64
 mdns-sd gateway
  service-policy CLIENTA-POLICY
!
interface GigabitEthernet4
 vrf forwarding clientb
 ip address 192.168.41.1 255.255.255.0
 no ip proxy-arp
 negotiation auto
!
segment-routing srv6
 locators
  locator locator0
   prefix FD00:CAFE:1111::/48
   format usid-f3216
!
router isis SR
 net 49.0000.0000.0000.0003.00
 metric-style wide
 log-adjacency-changes all
 !
 address-family ipv6
  segment-routing srv6
   locator locator0
 exit-address-family
!
router bgp 65577
 bgp router-id 172.16.0.3
 bgp log-neighbor-changes
 bgp listen range ::/0 peer-group RR
 no bgp default ipv4-unicast
 neighbor 2001:DB8:101::1 remote-as 65577
 neighbor 2001:DB8:101::1 description "RR1"
 neighbor 2001:DB8:101::1 log-neighbor-changes
 neighbor 2001:DB8:101::1 password cisco123
 neighbor 2001:DB8:101::1 update-source Loopback0
 !
 address-family ipv4
 exit-address-family
 !
 address-family vpnv4
  neighbor 2001:DB8:101::1 activate
  neighbor 2001:DB8:101::1 send-community extended
  neighbor 2001:DB8:101::1 next-hop-self
 exit-address-family
 !
 address-family vpnv6
  neighbor 2001:DB8:101::1 activate
  neighbor 2001:DB8:101::1 send-community extended
  neighbor 2001:DB8:101::1 next-hop-self
 exit-address-family
 !
 address-family ipv4 vrf clienta
  bgp router-id 172.16.0.3
  redistribute connected
  !
  segment-routing srv6
   locator locator0
   alloc-mode per-vrf
  exit-srv6
  !
 exit-address-family
 !
 address-family ipv6 vrf clienta
  redistribute connected
  bgp router-id 172.16.0.3
  !
  segment-routing srv6
   locator locator0
   alloc-mode per-vrf
  exit-srv6
  !
 exit-address-family
 !
 address-family ipv4 vrf clientb
  bgp router-id 172.16.0.3
  redistribute connected
  !
  segment-routing srv6
   locator locator0
   alloc-mode per-vrf
  exit-srv6
  !
 exit-address-family
 !
 address-family ipv6 vrf clientb
  redistribute connected
  bgp router-id 172.16.0.3
  !
  segment-routing srv6
   locator locator0
   alloc-mode per-vrf
  exit-srv6
  !
 exit-address-family
!
ip default-gateway 10.0.0.2
ip rcmd domain-lookup
ip forward-protocol nd
ip forward-protocol udp tftp
ip telnet comport enable
!
no ip http server
ip route vrf clab-mgmt 0.0.0.0 0.0.0.0 10.0.0.2
ipv6 route vrf clab-mgmt ::/0 2001:DB8::1
!
line con 0
 activation-character 13
 stopbits 1
line vty 0 4
 activation-character 13
 login local
 transport input ssh
!
end

File: configs/pe4-startup-config.cfg

/ vrf main l3vrf clienta table-id 10
/ vrf main l3vrf clienta interface infrastructure eth2 ipv4 address 142.134.7.73/30
/ vrf main l3vrf clienta interface infrastructure eth2 network-stack ipv6 enabled true
/ vrf main l3vrf clienta interface infrastructure eth2 network-stack ipv6 autoconfiguration true
/ vrf main l3vrf clienta interface infrastructure eth2 network-stack ipv6 address-generation-mode random-secret
/ vrf main l3vrf clienta interface infrastructure eth2 network-stack ipv6 accept-router-advert always
/ vrf main l3vrf clienta interface infrastructure eth2 network-stack ipv6 accept-segment-routing true
/ vrf main l3vrf clienta interface infrastructure eth2 network-stack ipv6 router-solicitations 3
/ vrf main l3vrf clienta interface infrastructure eth2 port infra-eth2
/ vrf main l3vrf clienta routing bgp ebgp-requires-policy false
/ vrf main l3vrf clienta routing bgp segment-routing ipv6 locator locator0
/ vrf main l3vrf clienta routing bgp address-family ipv4-unicast l3vpn export vpn true
/ vrf main l3vrf clienta routing bgp address-family ipv4-unicast l3vpn export label auto
/ vrf main l3vrf clienta routing bgp address-family ipv4-unicast l3vpn export route-target 65000:101
/ vrf main l3vrf clienta routing bgp address-family ipv4-unicast l3vpn export route-distinguisher 65000:101
/ vrf main l3vrf clienta routing bgp address-family ipv4-unicast l3vpn export ipv6-sid auto
/ vrf main l3vrf clienta routing bgp address-family ipv4-unicast l3vpn import vpn true
/ vrf main l3vrf clienta routing bgp address-family ipv4-unicast l3vpn import route-target 65000:101
/ vrf main l3vrf clienta routing bgp address-family ipv4-unicast redistribute connected
/ vrf main l3vrf clienta routing bgp address-family ipv6-unicast l3vpn export vpn true
/ vrf main l3vrf clienta routing bgp address-family ipv6-unicast l3vpn export label auto
/ vrf main l3vrf clienta routing bgp address-family ipv6-unicast l3vpn export route-target 65000:101
/ vrf main l3vrf clienta routing bgp address-family ipv6-unicast l3vpn export route-distinguisher 65000:101
/ vrf main l3vrf clienta routing bgp address-family ipv6-unicast l3vpn export ipv6-sid auto
/ vrf main l3vrf clienta routing bgp address-family ipv6-unicast l3vpn import vpn true
/ vrf main l3vrf clienta routing bgp address-family ipv6-unicast l3vpn import route-target 65000:101
/ vrf main l3vrf clienta routing bgp address-family ipv6-unicast redistribute connected
/ vrf main interface infrastructure eth1 ipv4 enabled false
/ vrf main interface infrastructure eth1 mtu 9216
/ vrf main interface infrastructure eth1 ipv6 address 2001:db8:105::2/64
/ vrf main interface infrastructure eth1 network-stack ipv6 accept-segment-routing true
/ vrf main interface infrastructure eth1 port infra-eth1
/ vrf main interface loopback lo0 ipv6 address fd00:cafe:4444:1000::1/128
/ vrf main routing interface eth1 isis area-tag SR
/ vrf main routing interface eth1 isis ipv6-routing true
/ vrf main routing interface eth1 isis network-point-to-point true
/ vrf main routing interface lo0 isis area-tag SR
/ vrf main routing interface lo0 isis ipv4-routing true
/ vrf main routing interface lo0 isis ipv6-routing true
/ vrf main routing bgp as 65577
/ vrf main routing bgp router-id 172.16.0.6
/ vrf main routing bgp segment-routing ipv6 locator locator0
/ vrf main routing bgp address-family ipv6-unicast
/ vrf main routing bgp neighbor-group RR remote-as 65577
/ vrf main routing bgp neighbor-group RR capabilities extended-nexthop true
/ vrf main routing bgp neighbor-group RR password cisco123
/ vrf main routing bgp neighbor-group RR update-source fd00:cafe:4444:1000::1
/ vrf main routing bgp neighbor-group RR address-family ipv4-vpn soft-reconfiguration-inbound true
/ vrf main routing bgp neighbor-group RR address-family ipv6-vpn soft-reconfiguration-inbound true
/ vrf main routing bgp neighbor 2001:db8:101::1 neighbor-group RR
/ vrf main routing bgp neighbor 2001:db8:101::1 neighbor-description RR1
/ vrf main routing isis instance SR area-address 49.0000.0000.0000.0006.00
/ vrf main routing isis instance SR log-adjacency-changes true
/ vrf main routing isis instance SR segment-routing enabled true
/ vrf main routing isis instance SR segment-routing ipv6 locator locator0
/ vrf main routing segment-routing enabled true
/ vrf main routing segment-routing ipv6 locator locator0 prefix fd00:cafe:4444::/48
/ vrf main routing segment-routing ipv6 locator locator0 block-length 32
/ vrf main routing segment-routing ipv6 locator locator0 node-length 16
/ vrf main routing segment-routing ipv6 locator locator0 mode-micro-sid-f3216
/ vrf main ssh-server
/ system fast-path virtual-port infrastructure infra-eth1
/ system fast-path virtual-port infrastructure infra-eth2

File: configs/pe6-startup-config.cfg

interfaces {
    ethernet eth1 {
        address "2001:db8:107::2/64"
        mtu "9216"
    }
    ethernet eth2 {
        address "142.134.7.89/30"
        vrf "clienta"
    }
    loopback lo {
        address "fd00:cafe:6666::1/128"
    }
}
protocols {
    bgp {
        neighbor 2001:db8:101::1 {
            description "RR1"
            peer-group "RR"
        }
        parameters {
            log-neighbor-changes
            router-id "172.16.0.8"
        }
        peer-group RR {
            address-family {
                ipv4-vpn {
                    nexthop-self { }
                    soft-reconfiguration { inbound }
                }
                ipv6-vpn {
                    nexthop-self { }
                    soft-reconfiguration { inbound }
                }
            }
            capability { extended-nexthop }
            password "cisco123"
            remote-as "65577"
            update-source "fd00:cafe:6666::1"
        }
        srv6 {
            locator "locator0"
        }
        system-as "65577"
    }
    isis {
        interface eth1 {
            network { point-to-point }
        }
        interface lo { passive }
        log-adjacency-changes
        net "49.0000.0000.0000.0008.00"
        segment-routing {
            prefix fd00:cafe:6666::/48 { }
            srv6 {
                interface "lo"
                locator "locator0"
            }
        }
    }
    segment-routing {
        interface eth1 { srv6 { } }
        srv6 {
            encapsulation { source-address "fd00:cafe:6666::1" }
            locator locator0 {
                block-len "32"
                format "usid-f3216"
                func-bits "16"
                node-len "16"
                prefix "fd00:cafe:6666::/48"
            }
        }
    }
}
vrf {
    name clienta {
        protocols {
            bgp {
                address-family {
                    ipv4-unicast {
                        export { vpn }
                        import { vpn }
                        rd { vpn { export "65000:101" } }
                        redistribute { connected { } }
                        route-target { vpn { export "65000:101" import "65000:101" } }
                    }
                }
                parameters { router-id "172.16.0.8" }
                sid { vpn { per-vrf { export "auto" } } }
                system-as "65577"
            }
            static {
                route6 fd00:cafe::/32 {
                    next-hop 2001:db8:107::1 { vrf "default" }
                }
            }
        }
        table "100"
    }
}
networking/containerlab/srv6_l3vpn/srv6-l3vpn-multi.txt · Last modified: by jonathan