Showing posts with label send-label. Show all posts
Showing posts with label send-label. Show all posts

Thursday, February 6, 2014

NTS: CsC

CsC




CsC (Carrier supporting Carrier) is defined in RFC 4364.



Control-Plane
  • The Customer Carrier PEs run BGP VPNv4 in order to exchange VPN labels
  • The Customer Carrier routers run IGP+LDP (or iBGP+Label) in order to exchange all their internal BGP next-hops and their labels
  • The CsC-PEs and CsC-CEs run eBGP (or IGP) in order to exchange BGP next-hop prefixes
  • The CsC-PEs and CsC-CEs run eBGP+Label (or IGP+LDP) in order to exchange labels for the BGP next-hop prefixes
  • The Backbone Carrier routers run IGP+LDP in order to exchange all their internal BGP next-hops and their labels

The Backbone Carrier offers a MPLS VPN service to the Customer Carrier which in turn offers a MPLS VPN or Internet service to its customers.

The Backbone Carrier doesn't need to know the final customer prefixes.

Using IGP+LDP in CsC is not as risky as with Inter-AS MPLS VPN Option 3 because:
  • Customer Carrier internal routes are put into a specific VRF in the Backbone Carrier
  • No Backbone Carrier internal routes are distributed into the Customer Carrier network

You can have multiple Backbone Carriers, using Inter-AS MPLS L3VPN for interconnection.

By default a CsC-PE runs PHP towards the CsC-CE. If using an ipv4-labeled PE-CE session, you can change this behavior (in order to keep the QoS consistent across providers) by using the "neighbor x.x.x.x send-label explicit-null" on the CsC-CE.

IOS-XR supports only the use of Labeled BGP as a PE-CE protocol in CsC topologies. LDP (+IGP) is not supported.



CsC Load Balancing

Load balancing between CsC-PE and CsC-CE can be achieved with:
  • directly connected loopback peering for one pair of PE/CE
    • one eBGP session between neighbors
    • multiple static routes for each other's loopback
    • mpls forwarding on all directly connected physical interfaces
  • eBGP multipath for multiple pairs of PEs/CEs
    • maximum-paths under bgp & vrf address family on PE
    • maximum-paths under bgp on CE

When using static routes, you also need to define the outgoing interface and the next-hop.

"mpls bgp forwarding" is not automatically added, because the BGP session is not between directly connected neighbors. You have to add it yourself.



Configuration


BC = Backbone Carrier (AS10)
CC = Customer Carrier (AS100)
C = Customer (AS200)

Backbone Carrier runs IS-IS or OSPF with MPLS/LDP in its core

Backbone Carrier (CsC-PE1) runs OSPF+LDP with Customer Carrier (CsC-CE1)
Backbone Carrier (CsC-PE2) runs eBGP+Label with Customer Carrier (CsC-CE2)

Customer Site 1 (C-CE1) runs OSPF with Customer Carrier (CC-PE1)
Customer Site 2 (C-CE2) runs ISIS with Customer Carrier (CC-PE2)

CC-PE (Customer Carrier PE serving the final customer site) and CsC-CE (Carrier supporting Carrier CE) functionalities can be collapsed into a single router.

CsC-PE1 and CsC-PE2 run iBGP VPNv4 in order to exchange Customer Carrier prefixes/labels
CsC-CE1 and CsC-CE2 run iBGP VPNv4 in order to exchange Customer prefixes/labels



IGP+LDP between CsC-PE1 and CsC-CE1


CsC-PE1 (IOS)
! for connectivity to BC core (IGP+LDP)
mpls ldp router-id Loopback0
mpls label protocol ldp
!
interface Ethernet0/2
 description ** Link to BC core **
 ip address x.x.x.x

 mpls ip
!
router isis/ospf x
!
! for connectivity to CsC-CE1 (OSPF+LDP)
vrf definition CC-VPN
 rd 10:X

 route-target 10:X
!
 address-family ipv4

 exit-address-family
!
interface Ethernet1/0

 description ** Link to CsC-CE1 **
 vrf forwarding CC-VPN
 ip address x.x.x.x
 mpls ip
!
router ospf 10 vrf CC-VPN
 redistribute bgp 10 subnets
 network x.x.x.x area 0
!

! for connectivity to BC-PE2 (iBGP VPNv4)
router bgp 10

 no bgp default ipv4-unicast
 neighbor BC-PE2 remote-as 10
 neighbor BC-PE2 update-source Loopback0
 !
 address-family vpnv4
  neighbor BC-PE2 activate
  neighbor BC-PE2 send-community extended
 exit-address-family
 !
 address-family ipv4 vrf CC-VPN
  redistribute ospf 10 vrf CC-VPN
 exit-address-family




CsC-CE1 (IOS)
! for connectivity to CsC-PE1 (OSPF+LDP)
mpls ldp router-id Loopback0
mpls label protocol ldp
!
interface Ethernet1/0
 description ** Link to CsC-PE1 **
 ip address x.x.x.x
 mpls ip
!

router ospf 10
 network x.x.x.x area 0
!


CC-PE1 (IOS)
! for connectivity to C-CE1 (OSPF+VRF)  
vrf definition C-VPN
 rd 100:Y
 route-target 100:Y
 !
 address-family ipv4
 exit-address-family
!

interface Ethernet1/3
 description ** Link to C-CE1 **
 vrf forwarding C-VPN
 ip address y.y.y.y
!

router ospf 200 vrf C-VPN
 redistribute bgp 100 subnets
 network y.y.y.y area 0
!

! for connectivity to CC-PE2 (iBGP VPNv4)  
router bgp 100
 no bgp default ipv4-unicast
 neighbor CC-PE2 remote-as 100
 neighbor
CC-PE2 update-source Loopback0
 !
 address-family vpnv4
  neighbor
CC-PE2 activate
  neighbor
CC-PE2 send-community extended
 exit-address-family
 !
 address-family ipv4 vrf C-VPN
  redistribute ospf 200 vrf C-VPN
 exit-address-family
!



BGP+Label between CsC-PE2 and CsC-CE2


CsC-PE2 (IOS-XR)
! for connectivity to BC core (IGP+LDP)
mpls ldp router-id Loopback0
mpls label protocol ldp
!
router isis/ospf x
!

mpls ldp
 router-id x.x.x.x
 interface x
!

! for connectivity to CsC-CE2  (eBGP+Label)
vrf CC-VPN
 address-family ipv4 unicast
  import route-target
   10:X
  export route-target
   10:X
!
interface GigabitEthernet0/2/1/1
 description ** Link to CsC-CE2 **
 vrf CC-VPN
 ipv4 address x.x.x.x
!

router static
 vrf CC-VPN
  address-family ipv4 unicast
   CsC-CE2/32 GigabitEthernet0/2/1/1

!
router bgp 10
 address-family ipv4 unicast
 !

 vrf CC-VPN
  rd 10:X
  address-family ipv4 unicast
   network x.x.x.x
   allocate-label all
  !
  neighbor CsC-CE2
   remote-as 100
   address-family ipv4 unicast
    route-policy PASS-RPL in
    route-policy PASS-RPL out
    as-override
    send-extended-community-ebgp
   !
   address-family ipv4 labeled-unicast
    route-policy PASS-RPL in
    route-policy PASS-RPL out
    as-override
    send-extended-community-ebgp
!

route-policy PASS-RPL 
  pass
end-policy

!
! for connectivity to BC-PE1 (iBGP VPNv4)  
router bgp 10
 address-family vpnv4 unicast
 !
 neighbor BC-PE1
  remote-as 10
  update-source Loopback0
  address-family vpnv4 unicast



CsC-CE2 (IOS)
! for connectivity to CsC-PE2  (eBGP+Label)
interface Ethernet1/0
 description ** Link to CsC-PE2 **
 ip address x.x.x.x
 mpls bgp forwarding
!

router bgp 100
 no bgp default ipv4-unicast
 neighbor CsC-PE2 remote-as 10
 !
 address-family ipv4
  neighbor CsC-PE2 activate
  neighbor CsC-PE2 send-label
 exit-address-family

!
! for connectivity to C-CE2 (ISIS+VRF)
vrf definition C-VPN
 rd 100:Y

 route-target 100:Y
 !
 address-family ipv4
 exit-address-family
!

interface Ethernet1/3
 description ** Link to C-CE2 **
 vrf forwarding C-VPN
 ip address y.y.y.y
 ip router isis 200
!
router isis 200
 vrf C-VPN
  redistribute bgp 100
!

! for connectivity to CC-PE1 (iBGP VPNv4)  
router bgp 100
 neighbor CC-PE1 remote-as 100
 neighbor CC-PE1 update-source Loopback0
 !
 address-family vpnv4
  neighbor CC-PE1 activate
  neighbor CC-PE1 send-community extended
 exit-address-family
 !
 address-family ipv4 vrf C-VPN
  redistribute isis 200

 exit-address-family


IOS-XR configuration is similar to IOS, with the major difference of using the labeled unicast address-family instead of the send-label keyword.

Don't forget to create a /32 static route for the CsC-PE/CE next-hop in IOS-XR when using eBGP+Label. Always verify the installation of labels for /32 next-hops.



Verification
  • Customer Carrier PEs must have a BGP VPNv4 route and a label for the VPN prefix
  • Customer Carrier routers must have a label for the VPN prefix's next-hop
  • CsC-PEs must have a BGP VPNv4 route and a label for the VPN prefix's next-hop
  • Backbone Carrier routers must have a label for the next-hop of VPN prefix's next-hop



    Example

    Assume the following network:

    R1-R2-R3-R4-R5-R6-R7-R8-R9-R10

    where

    Customer Carrier Network
    Backbone Carrier Network


    Then the following would happen for a VPN packet originating at R1 and terminating at R10.
    • R1 (1.1.1.1) (Customer Carrier PE router) - vrf VPN
      • Transport label is 18, VPN label is 20
      • next-hop is R10 (10.10.10.10)
    • R2 (2.2.2.2) (Customer Carrier P router)
      • Transport label is 20, VPN label is 20
      • next-hop is R10 (10.10.10.10)
    • R3 (3.3.3.3) (CsC-CE)
      • Transport label is 26, VPN label is 20
      • next-hop is R10 (10.10.10.10)
    • R4 (4.4.4.4) (CsC-PE) - vrf CSC
      • Transport label is 16/21, VPN label is 20
      • next-hop is R7 (7.7.7.7)
    • R5 (5.5.5.5) Backbone Carrier P router)
      • Transport label is 16/21, VPN label is 20
      • next-hop is R7 (7.7.7.7)
    • R6 (6.6.6.6) (Backbone Carrier P router)
      • Transport label is 21, VPN label is 20
      • next-hop is R7 (7.7.7.7)
    • R7 (7.7.7.7) (CsC-PE) - vrf CSC
      • Transport label is 18, VPN label is 20
      • next-hop is R10 (10.10.10.10)
    • R8 (8.8.8.8) (CsC-CE)
      • Transport label is 17, VPN label is 20
      • next-hop is R10 (10.10.10.10)
    • R9 (9.9.9.9) (Customer Carrier P router)
      • Transport label is removed, VPN label is 20
      • next-hop is R10 (10.10.10.10)
    • R10 (10.10.10.10) (Customer Carrier PE router) - vrf VPN
      • VPN label is removed, destination reached in next-hop


    R1#trace vrf VPN 99.99.99.99

    Type escape sequence to abort.
    Tracing the route to 99.99.99.99

      1 20.1.2.2 [MPLS: Labels 18/20 Exp 0] 10 msec 10 msec 8 msec
      2 20.2.3.3 [MPLS: Labels 20/20 Exp 0] 7 msec 7 msec 7 msec

      3 20.3.4.4 [MPLS: Labels 26/20 Exp 0] 8 msec 8 msec 7 msec
      4 20.4.5.5 [MPLS: Labels 16/21/20 Exp 0] 7 msec 7 msec 8 msec
      5 20.5.6.6 [MPLS: Labels 16/21/20 Exp 0] 6 msec 5 msec 5 msec
      6 20.6.7.7 [MPLS: Labels 21/20 Exp 0] 3 msec 3 msec 3 msec

      7 20.7.8.8 [MPLS: Labels 18/20 Exp 0] 1 msec 1 msec 1 msec
      8 20.8.9.9 [MPLS: Labels 17/20 Exp 0] 1 msec 1 msec 1 msec
      9 20.9.10.10 [MPLS: Label 20 Exp 0] 1 msec 1 msec 1 msec

     10 30.10.10.99 1 msec 2 msec 2 msec



    Verification in every hop


    Customer Carrier PE router
    R1#sh ip route vrf VPN 99.99.99.99

    Routing Table: VPN
    Routing entry for
    99.99.99.99/32
      Known via "bgp 100", distance 200, metric 1, type internal
      Redistributing via rip
      Advertised by rip metric transparent
      Last update from 10.10.10.10 00:56:37 ago
      Routing Descriptor Blocks:
      *
    10.10.10.10 (default), from 10.10.10.10, 00:56:37 ago
          Route metric is 1, traffic share count is 1
          AS Hops 0
          MPLS label: 20
          MPLS Flags: MPLS Required


    R1#sh bgp vpnv4 unicast vrf VPN 99.99.99.99/32
    BGP routing table entry for 100:1:
    99.99.99.99/32, version 11
    Paths: (1 available, best #1, table VPN)
      Not advertised to any peer
      Local
       
    10.10.10.10 (metric 20) from 10.10.10.10 (10.10.10.10)
          Origin incomplete, metric 1, localpref 100, valid, internal, best
          Extended Community: RT:100:1
          mpls labels in/out nolabel/20


    VPN label is 20

    R1#sh mpls forwarding-table 10.10.10.10 detail
    Local      Outgoing   Prefix           Bytes Label   Outgoing   Next Hop
    Label      Label      or Tunnel Id     Switched      interface
    23         18        
    10.10.10.10/32   0             Fa0/0.12   20.1.2.2
            MAC/Encaps=18/22, MRU=1500, Label Stack{18}
            CA0113DC0000CA03079400088100026C8847 00012000
            No output feature configured


    R1#sh ip cef vrf VPN 99.99.99.99 det99.99.99.99/32, epoch 0, flags rib defined all labels
      recursive via
    10.10.10.10 label 20
        nexthop 20.1.2.2 FastEthernet0/0.12 label 18


    Transport label is 18, VPN label is 20


    From here you have 2 options:
    • follow the next-hops
    • follow the labels (i prefer this one)



    Following the next-hops



    Customer Carrier P router
    R2#sh mpls forwarding-table 10.10.10.10 detail
    Local      Outgoing   Prefix           Bytes Label   Outgoing   Next Hop
    Label      Label      or Tunnel Id     Switched      interface
    18         20        
    10.10.10.10/32   13707         Fa0/0.23   20.2.3.3
            MAC/Encaps=18/22, MRU=1500, Label Stack{20}
            CA0610240000CA0113DC00008100002E8847 00014000
            No output feature configured


    Transport label is 20, VPN label is 20

    CsC-CE
    R3#sh mpls forwarding-table 10.10.10.10 detail
    Local      Outgoing   Prefix           Bytes Label   Outgoing   Next Hop
    Label      Label      or Tunnel Id     Switched      interface
    20         26        
    10.10.10.10/32   15048         Fa0/0.34   20.3.4.4
            MAC/Encaps=18/22, MRU=1500, Label Stack{26}
            CA0207940008CA0610240000810001A38847 0001A000
            No output feature configured


    Transport label is 26, VPN label is 20

    CsC-PE
    R4#sh mpls forwarding-table vrf CSC 10.10.10.10 detail
    Local      Outgoing   Prefix           Bytes Label   Outgoing   Next Hop
    Label      Label      or Tunnel Id     Switched      interface
    26         21        
    10.10.10.10/32[V]16033         Fa0/0.45   20.4.5.5
            MAC/Encaps=18/26, MRU=1496, Label Stack{16 21}
            C20911080000CA0207940008810003338847 0001000000015000
            VPN route: CSC
            No output feature configured


    2 Transport labels are used (use "detail" to see them)

    R4#sh bgp vpnv4 unicast vrf CSC 10.10.10.10
    BGP routing table entry for 200:1:
    10.10.10.10/32, version 12
    Paths: (1 available, best #1, table CSC)
      Advertised to update-groups:
         3
      100
        7.7.7.7 (metric 4) from 7.7.7.7 (7.7.7.7)
          Origin incomplete, metric 20, localpref 100, valid, internal, best
          Extended Community: RT:200:1
          mpls labels in/out 26/21


    VPN label (21) for Backbone Carrier is actually Transport label (21) for Customer Carrier

    R4#sh mpls forwarding-table 7.7.7.7 detail
    Local      Outgoing   Prefix           Bytes Label   Outgoing   Next Hop
    Label      Label      or Tunnel Id     Switched      interface
    16         16         7.7.7.7/32       0             Fa0/0.45   20.4.5.5
            MAC/Encaps=18/22, MRU=1500, Label Stack{16}
            C20911080000CA0207940008810003338847 00010000
            No output feature configured


    Transport label is 16/21, VPN label is 20

    Backbone Carrier P router
    R5#sh mpls forwarding-table 7.7.7.7 detail
    Local  Outgoing    Prefix            Bytes tag  Outgoing   Next Hop
    tag    tag or VC   or Tunnel Id      switched   interface
    16     16          7.7.7.7/32        44218      Fa0/0.56   20.5.6.6
            MAC/Encaps=18/22, MRU=1500, Tag Stack{16}
            C20811080000C209110800008100004E8847 00010000
            No output feature configured
        Per-packet load-sharing


    Transport label is 16/21, VPN label is 20

    Backbone Carrier P router
    R6#sh mpls forwarding-table 7.7.7.7 detail
    Local  Outgoing    Prefix            Bytes tag  Outgoing   Next Hop
    tag    tag or VC   or Tunnel Id      switched   interface
    16     Pop tag     7.7.7.7/32        42398      Fa0/0.67   20.6.7.7
            MAC/Encaps=18/18, MRU=1504, Tag Stack{}
            CA0415180000C20811080000810000118847
            No output feature configured
        Per-packet load-sharing


    Transport label is 21, VPN label is 20

    CsC-PE
    R7#sh mpls forwarding-table vrf CSC 10.10.10.10 detail
    Local      Outgoing   Prefix           Bytes Label   Outgoing   Next Hop
    Label      Label      or Tunnel Id     Switched      interface
    21         18        
    10.10.10.10/32[V]24156         Fa0/0.78   20.7.8.8
            MAC/Encaps=18/22, MRU=1500, Label Stack{18}
            CA0710240000CA04151800008100000D8847 00012000
            VPN route: CSC
            No output feature configured


    Transport label is 18, VPN label is 20

    CsC-CE
    R8#sh mpls forwarding-table 10.10.10.10 detail
    Local      Outgoing   Prefix           Bytes Label   Outgoing   Next Hop
    Label      Label      or Tunnel Id     Switched      interface
    18         17        
    10.10.10.10/32   24703         Fa0/0.89   20.8.9.9
            MAC/Encaps=18/22, MRU=1500, Label Stack{17}
            CA0013DC0000CA0710240000810000238847 00011000
            No output feature configured


    Transport label is 17, VPN label is 20

    Customer Carrier P router
    R9#sh mpls forwarding-table 10.10.10.10 detail
    Local      Outgoing   Prefix           Bytes Label   Outgoing   Next Hop
    Label      Label      or Tunnel Id     Switched      interface
    17         Pop Label 
    10.10.10.10/32   23892         Fa0/0.910  20.9.10.10
            MAC/Encaps=18/18, MRU=1504, Label Stack{}
            CA0515180000CA0013DC0000810000198847
            No output feature configured


    Transport label is removed, VPN label is 20

    Customer Carrier PE router
    R10#sh mpls forwarding-table vrf VPN 99.99.99.99 detail
    Local      Outgoing   Prefix           Bytes Label   Outgoing   Next Hop
    Label      Label      or Tunnel Id     Switched      interface
    20         No Label  
    99.99.99.99/32[V]1770          Fa0/0.1010 30.10.10.99
            MAC/Encaps=18/18, MRU=1504, Label Stack{}
            C20A0F840000CA05151800008100001D0800
            VPN route: VPN
            No output feature configured


    VPN label is removed, destination reached



    Following the labels


    Customer Carrier P router
    R2#sh mpls forwarding-table labels 18 detail
    Local      Outgoing   Prefix           Bytes Label   Outgoing   Next Hop
    Label      Label      or Tunnel Id     Switched      interface
    18         20        
    10.10.10.10/32   13852         Fa0/0.23   20.4.6.4
            MAC/Encaps=18/22, MRU=1500, Label Stack{20}
            CA0610240000CA0113DC00008100002E8847 00014000
            No output feature configured



    Transport label is 20, VPN label is 20

    CsC-CE
    R3#sh mpls forwarding-table labels 20 detail
    Local      Outgoing   Prefix           Bytes Label   Outgoing   Next Hop
    Label      Label      or Tunnel Id     Switched      interface
    20         26        
    10.10.10.10/32   15338         Fa0/0.34   20.4.19.19
            MAC/Encaps=18/22, MRU=1500, Label Stack{26}
            CA0207940008CA0610240000810001A38847 0001A000
            No output feature configured


    Transport label is 26, VPN label is 20

    CsC-PE
    R4#sh mpls forwarding-table labels 26 detail
    Local      Outgoing   Prefix           Bytes Label   Outgoing   Next Hop
    Label      Label      or Tunnel Id     Switched      interface
    26         21        
    10.10.10.10/32[V]16645         Fa0/0.45   20.4.5.5
            MAC/Encaps=18/26, MRU=1496, Label Stack{16 21}
            C20911080000CA0207940008810003338847 0001000000015000
            VPN route: CSC
            No output feature configured


    2 Transport labels are used (use "detail" to see them)

    Transport label is 16/21, VPN label is 20

    Backbone Carrier P router
    R5#sh mpls forwarding-table labels 16 detail
    Local  Outgoing    Prefix            Bytes tag  Outgoing   Next Hop
    tag    tag or VC   or Tunnel Id      switched   interface
    16     16          7.7.7.7/32        30421      Fa0/0.56   20.5.6.6
            MAC/Encaps=18/22, MRU=1500, Tag Stack{16}
            C20811080000C209110800008100004E8847 00010000
            No output feature configured
        Per-packet load-sharing


    Transport label is 16/21, VPN label is 20

    Backbone Carrier P router
    R6#sh mpls forwarding-table labels 16 detail
    Local  Outgoing    Prefix            Bytes tag  Outgoing   Next Hop
    tag    tag or VC   or Tunnel Id      switched   interface
    16     Pop tag     7.7.7.7/32        29337      Fa0/0.67   20.6.7.7
            MAC/Encaps=18/18, MRU=1504, Tag Stack{}
            CA0415180000C20811080000810000118847
            No output feature configured
        Per-packet load-sharing


    Transport label is 21, VPN label is 20

    CsC-PE
    R7#sh mpls forwarding-table labels 21 detail
    Local      Outgoing   Prefix           Bytes Label   Outgoing   Next Hop
    Label      Label      or Tunnel Id     Switched      interface
    21         18        
    10.10.10.10/32[V]17260         Fa0/0.78   20.7.8.8
            MAC/Encaps=18/22, MRU=1500, Label Stack{18}
            CA0710240000CA04151800008100000D8847 00012000
            VPN route: CSC
            No output feature configured


    Transport label is 18, VPN label is 20

    CsC-CE
    R8#sh mpls forwarding-table labels 18 detail
    Local      Outgoing   Prefix           Bytes Label   Outgoing   Next Hop
    Label      Label      or Tunnel Id     Switched      interface
    18         17        
    10.10.10.10/32   17726         Fa0/0.89   20.8.9.9
            MAC/Encaps=18/22, MRU=1500, Label Stack{17}
            CA0013DC0000CA0710240000810000238847 00011000
            No output feature configured


    Transport label is 17, VPN label is 20

    Customer Carrier P router
    R9#sh mpls forwarding-table labels 17 detail
    Local      Outgoing   Prefix           Bytes Label   Outgoing   Next Hop
    Label      Label      or Tunnel Id     Switched      interface
    17         Pop Label 
    10.10.10.10/32   17200         Fa0/0.910  20.9.10.10
            MAC/Encaps=18/18, MRU=1504, Label Stack{}
            CA0515180000CA0013DC0000810000198847
            No output feature configured


    Transport label is removed, VPN label is 20

    Customer Carrier PE router
    R10#sh mpls forwarding-table labels 20 detail
    Local      Outgoing   Prefix           Bytes Label   Outgoing   Next Hop
    Label      Label      or Tunnel Id     Switched      interface
    20         No Label  
    99.99.99.99/32[V]1770          Fa0/0.1010 30.10.10.99
            MAC/Encaps=18/18, MRU=1504, Label Stack{}
            C20A0F840000CA05151800008100001D0800
            VPN route: VPN
            No output feature configured


    VPN label is removed, destination reached




    NTS: 6PE/6VPE

    6PE/6VPE




    6PE is defined in RFC 4798.
    6VPE is defined in RFC 4659.



    • 6PE
      • customer's IPv6 prefixes are inside the global routing table
      • IPv6 labels/prefixes are exchanged using Labeled IPv6 over IPv4 iBGP between the PEs
    • 6VPE
      • customer's IPv6 prefixes are inside a VRF
      • IPv6 labels/prefixes are exchanged using VPNv6 over IPv4 iBGP between the PEs



    6PE

    6PE is a technology that allows IPv6 customers to communicate with each other over an IPv4 MPLS Provider without any tunnel setup, by having the customer IPv6 prefixes using a IPv4-mapped IPv6 address as next-hop inside the Provider's network and using IPv4 LSPs between the 6PEs.

    In 6PE, labels must be exchanged between the 6PEs for their IPv6 prefixes, which means that a labeled IPv4 iBGP session must be activated under the IPv6 address family (in IOS) or the labeled IPv6 capability must be activated for the IPv4 peer 6PE (in IOS-XR).

    IOS
    router bgp 100
     no bgp default ipv4-unicast
     neighbor 6PE-IPv4 remote-as 100
     neighbor 6PE-IPv4 update-source Loopback0
     neighbor CE-IPv6 remote-as X

    !
     address-family ipv6
      neighbor 6PE-IPv4 activate
      neighbor 6PE-IPv4 send-label

      neighbor CE-IPv6 activate

    IOS-XR
    router bgp 100
     address-family ipv6 unicast
      allocate-label all
     !
     neighbor 6PE-IPv4
      remote-as 100
      update-source Loopback0
      address-family ipv6 labeled-unicast
      !
     neighbor CE-IPv6
      remote-as X
      address-family ipv6 unicast



    The 6PE routers are dual-stack: IPv6 towards the CE and IPv4 towards the MPLS core.

    You don't need to set the "next-hop-self" in the labeled IPv4 iBGP session for the IPv6 prefixes, because that happens automatically while creating the IPv4-mapped IPv6 address.

    MP_REACH_NLRI attribute
    • AFI = 2 (IPv6)
    • SAFI=  4 (labels)
    • Prefix =X:X:X:X::X
    • Label = X
    • next-hop = ::FFFF:IPv4-ADDRESS

    The IPv4 address which is encoded into the next-hop must be present in the IPv4 routing table and a LSP must exist to this destination. If the above conditions are not both met, the IPv6 prefix is declared inaccessible.

    R5#sh bgp ipv6 unicast 2001::1:1:1:1/128
    BGP routing table entry for 2001::1:1:1:1/128, version 4
    Paths: (1 available, no best path)
      Not advertised to any peer
      1
        ::FFFF:2.2.2.2 (inaccessible) from 2.2.2.2 (2.2.2.2)
          Origin IGP, metric 0, localpref 100, valid, internal


    If a 6PE receives unlabeled IPv6 prefixes, then the 6PE marks these prefixes as unreachable in the IPv6 routing table, so that packets to this destination get dropped and not sent into MPLS core.

    If RRs are to be used for 6PE connectivity, then they also must have labeled BGP enabled.


    Control Plane

    • CEs and 6PEs run eBGP (or IGP) in order to exchange IPv6 prefixes
    • 6PEs run iBGP+Label in order to exchange labels and IPv6 prefixes
    • Provider routers run IGP+LDP in order to exchange all their internal BGP IPv4 next-hops and their labels



    6PE Example

    Assume the following network:

    R1-R2-R3-R4-R5-R6

    where

    IPv6 Customer
    6PE Provider (with 6PE routers and IPv4 routers)


    Then the following would happen for an IPv6 packet originating at R1 and terminating at R6.

    • R1 (IPv6)
      • next-hop is R2 (IPv6 link-local)
    • R2 (IPv4/IPv6 6PE)
      • next-hop is R5 (IPv4 loopback)
      • Transport label is 26, IPv6 label is 28
    • R3 (IPv4)
      • next-hop is R5 (IPv4 loopback)
      • Transport label is 25, IPv6 label is 28
    • R4 (IPv4)
      • next-hop is R5 (IPv4 loopback)
      • Transport label is removed, IPv6 label is 28
    • R5 (IPv4/IPv6 6PE)
      • next-hop is R6 (IPv6 link-local)
      • IPv6 label is removed, IPv6 destination reached in next-hop
    • R6 (IPv6)
      • IPv6 destination reached

    The IPv6 label in 6PE can be considered like the VPN label in MPLS VPN.

    The customer routers could be IPv4/IPv6, having IPv4 traffic being forwarded as usual and IPv6 traffic over 6PE.

    Use extended traceroute if you want to source from an IPv6 address.

    R1#trace
    Protocol [ip]: ipv6
    Target IPv6 address: 2001::6:6:6:6
    Source address: 2001::1:1:1:1

    ...
    Tracing the route to 2001::6:6:6:6

      1 2001:10:1:2::2 44 msec 72 msec 32 msec
      2 ::FFFF:10.2.3.3 [MPLS: Labels 26/28 Exp 0] 1 msec 1 msec 1 msec
      3 ::FFFF:10.3.4.4 [MPLS: Labels 25/28 Exp 0] 1 msec 1 msec 1 msec
      4 2001:10:5:6::5[MPLS: Label 28 Exp 0] 1 msec 1 msec  1 msec

      5 2001:10:5:6::6 1 msec 1 msec 1 msec


    Although all traceroute answers are given by the closest interface to the source ip, in some software releases in the last 6PE router the traceroute answer is given by the IPv6 address on the PE-CE link.

    You can use "no mpls ip propagate-ttl" on the first-hop 6PE if you want to hide the ::FFFF: IPv4 hops.

      1 2001:10:1:2::2 44 msec 72 msec 32 msec
      2 2001:10:5:6::5[MPLS: Label 28 Exp 0] 1 msec 1 msec  1 msec
      3 2001:10:5:6::6 1 msec 1 msec 1 msec



    Verification in every hop


    Customer IPv6 router
    R1#sh ipv6 route 2001::6:6:6:6
    Routing entry for 2001::6:6:6:6/128
      Known via "bgp 1", distance 20, metric 0, type external
      Route count is 1/1, share count 0
      Routing paths:
        FE80::C805:17FF:FEC8:1C, FastEthernet0/0
          MPLS label: nolabel
          Last updated 00:31:05 ago



    Provider 6PE router
    R2#sh bgp ipv6 unicast 2001::6:6:6:6/128
    BGP routing table entry for 2001::6:6:6:6/128, version 3
    Paths: (1 available, best #1, table default)
      Advertised to update-groups:
         1
      20
        ::FFFF:5.5.5.5(metric 4) from 5.5.5.5(5.5.5.5)
          Origin IGP, metric 0, localpref 100, valid, internal, best
          mpls labels in/out nolabel/28


    IOS-XR doesn't display the "::FFFF:" in front of the IPv4 next-hop (How Multi is MP-BGP in IOS-XR - Part #2).

    IPv6 label is 28

    R2#sh mpls forwarding-table 5.5.5.5 detail
    Local      Outgoing   Prefix           Bytes Label   Outgoing   Next Hop
    Label      Label      or Tunnel Id     Switched      interface
    27         26         5.5.5.5/32       0             Fa0/0.23   10.2.3.3
            MAC/Encaps=18/22, MRU=1500, Label Stack{26}
            CA071AC40000CA0517C80000810000178847 0001A000
            No output feature configured


    Transport label is 26

    R2#sh ipv6 cef 2001::6:6:6:6/128 detail
    2001::6:6:6:6/128, epoch 0, flags rib defined all labels
      recursive via 5.5.5.5 label 28
        nexthop 10.2.3.3 FastEthernet0/0.23 label 26


    Transport label is 26, IPv6 label is 28


    You can follow the next-hop or the labels (like in CsC), but let's follow the next-hop on this example.


    Provider IPv4 Router
    R3#sh mpls forwarding-table 5.5.5.5 detail
    Local      Outgoing   Prefix           Bytes Label   Outgoing   Next Hop
    Label      Label      or Tunnel Id     Switched      interface
    26         25         5.5.5.5/32       16342         Fa0/0.34   10.3.4.4
            MAC/Encaps=18/22, MRU=1500, Label Stack{25}
            CA0113200000CA071AC40000810000248847 00019000
            No output feature configured


    Transport label is 25, IPv6 label is 28


    Provider IPv4 Router
    R4#sh mpls forwarding-table 5.5.5.5 detail
    Local      Outgoing   Prefix           Bytes Label   Outgoing   Next Hop
    Label      Label      or Tunnel Id     Switched      interface
    25         Pop Label  5.5.5.5/32       16125         Fa0/0.45 10.4.5.5
            MAC/Encaps=18/18, MRU=1504, Label Stack{}
            CA0214D00008CA01132000008100026B8847
            No output feature configured


    Transport label is removed, IPv6 label is 28


    Provider 6PE router
    R5#sh mpls forwarding-table 2001::6:6:6:6/128 detail
    Local      Outgoing   Prefix           Bytes Label   Outgoing   Next Hop
    Label      Label      or Tunnel Id     Switched      interface
    28         No Label   2001::6:6:6:6/128   \
                                           2244          PO2/0      point2point
            MAC/Encaps=4/4, MRU=4474, Label Stack{}
            0F0086DD
            No output feature configured


    R5#sh bgp ipv6 unicast 2001::6:6:6:6/128
    BGP routing table entry for 2001::6:6:6:6/128, version 3
    Paths: (1 available, best #1, table default)
      Advertised to update-groups:
         2
      20
        2001:10:5:6::6 (FE80::C803:14FF:FED0:8) from 2001:10:5:6::6 (6.6.6.6)
          Origin IGP, metric 0, localpref 100, valid, external, best
          mpls labels in/out 28/nolabel


    R5#sh bgp ipv6 unicast labels
       Network          Next Hop      In label/Out label
       2001::6:6:6:6/128
                        2001:10:5:6::6
                                        28/nolabel


    R5#sh ipv6 route 2001::6:6:6:6/128
    Routing entry for 2001::6:6:6:6/128
      Known via "bgp 100", distance 20, metric 0, type external
      Route count is 1/1, share count 0
      Routing paths:
        FE80::C803:14FF:FED0:8, POS2/0
          MPLS label: nolabel
          Last updated 00:43:37 ago


    IPv6 label is removed, IPv6 destination reached in next-hop



    6VPE

    6VPE is a technology that allows IPv6 VPN customers to communicate with each other over an IPv4 MPLS Provider without any tunnel setup, by having the customer VPNv6 prefixes using a v4-mapped IPv6 address as next-hop inside the provider's network and using IPv4 LSPs between the 6VPEs.

    In 6VPE, labels must be exchanged between the 6VPEs for their VPNv6 prefixes, which means that the VPNv6 address-family must be activated on the IPv4 iBGP session between the 6VPEs.

    IOS
    router bgp 100
     no bgp default ipv4-unicast
     neighbor 6VPE-IPv4 remote-as 100
     neighbor 6VPE-IPv4 update-source Loopback0
     !
     address-family vpnv6
      neighbor 6VPE-IPv4 activate
      neighbor 6VPE-IPv4 send-community extended
     exit-address-family
     !
     address-family ipv6 vrf VPN

      neighbor CE-IPv6 remote-as X
      neighbor CE-IPv6 activate
     exit-address-family


    IOS-XR
    router bgp 100
     address-family vpnv6 unicast
     !
     neighbor 6VPE-IPv4
      remote-as 100
      update-source Loopback0
      address-family vpnv6 unicast
      !
     vrf VPN
      rd 100:1
      address-family ipv6 unicast
      !
      neighbor CE-IPv6
       remote-as x
       address-family ipv6 unicast



    The 6VPE routers are dual-stack: IPv6 towards the CE (inside a VRF) and IPv4 towards the MPLS core.


    MP_REACH_NLRI attribute
    • AFI = 2 (IPv6)
    • SAFI= 128 (.)
    • Prefix =X:X:X:X::X
    • Label = X
    • next-hop = ::FFFF:IPv4-ADDRESS

    The IPv4 address which is encoded into the next-hop must be present in the IPv4 routing table and a LSP must exist to this destination. If the above conditions are not both met, the IPv6 prefix is declared inaccessible.

    If RRs are to be used for 6VPE connectivity, then they also must have the VPNv6 address-family enabled.


    Control Plane

    • CEs and 6VPEs run eBGP (or IGP) in order to exchange IPv6 prefixes
    • 6VPEs run VPNv6 iBGP in order to exchange labels and VPNv6 prefixes
    • Provider routers run IGP+LDP in order to exchange all their internal BGP IPv4 next-hops and their labels

    In IOS, if you enable the VPNv6 address-family on an existing VPNv4 peering, you might need to reset the whole BGP session for VPNv6 to come up.



    6VPE Example

    Assume the following network:

    R1-R2-R3-R4-R5-R6

    where

    IPv6 VPN Customer
    6VPE Provider (with 6VPE routers and IPv4 routers)


    Then the following would happen for an IPv6 packet originating at R1 and terminating at R6.

    • R1 (IPv6)
      • next-hop is R2 (IPv6 link-local)
    • R2 (IPv4/IPv6 6VPE)
      • next-hop is R5 (IPv4 loopback)
      • Transport label is 18, VPNv6 label is 28
    • R3 (IPv4)
      • next-hop is R5 (IPv4 loopback)
      • Transport label is 25, VPNv6 label is 28
    • R4 (IPv4)
      • next-hop is R5 (IPv4 loopback)
      • Transport label is removed, VPNv6 label is 28
    • R5 (IPv4/IPv6 6VPE)
      • next-hop is R6 (IPv6 link-local)
      • VPNv6 label is removed, IPv6 destination reached in next-hop
    • R6 (IPv6)
      • IPv6 destination reached

    Use extended traceroute if you want to source from a specific IPv6 address.

    R1#trace 2001:6:6:6::6

    Type escape sequence to abort.
    Tracing the route to 2001:6:6:6::6

      1 2001:10:1:2::2 1 msec 1 msec 1 msec
      2 ::FFFF:10.2.3.3 [MPLS: Labels 18/28 Exp 0] 1 msec 1 msec 1 msec
      3 ::FFFF:10.3.4.4 [MPLS: Labels 25/28 Exp 0] 1 msec 1 msec 1 msec
      4 2001:10:5:6::5 [AS 100] [MPLS: Label 28 Exp 0] 1 msec 1 msec 1 msec

      5 2001:10:5:6::6 [AS 100] 1 msec 1 msec 1 msec


    Although all traceroute answers are given by the closest interface to the source ip, in some software releases in the last 6VPE router the traceroute answer is given by the IPv6 address on the PE-CE link.

    You can use "no mpls ip propagate-ttl" on the first-hop 6VPE if you want to hide the ::FFFF: IPv4 hops.

      1 2001:10:1:2::2 1 msec 1 msec 1 msec
      2 2001:10:5:6::5 [AS 100] [MPLS: Label 28 Exp 0] 1 msec 1 msec 1 msec
      3 2001:10:5:6::6 [AS 100] 1 msec 1 msec 1 msec



    Verification in every hop


    Customer IPv6 router
    R1#sh ipv6 route 2001::6:6:6:6
    Routing entry for 2001::6:6:6:6/128
      Known via "bgp 1", distance 20, metric 0, type external
      Route count is 1/1, share count 0
      Routing paths:
        FE80::C805:EFF:FE2C:1C, FastEthernet0/0
          MPLS label: nolabel
          Last updated 01:47:39 ago



    Provider 6VPE router
    R2#sh bgp vpnv6 unicast vrf VPN 2001::6:6:6:6/128
    BGP routing table entry for [100:1]2001::6:6:6:6/128, version 6
    Paths: (1 available, best #1, table VPN)
      Advertised to update-groups:
         3
      1
        ::FFFF:5.5.5.5 (metric 4) from 5.5.5.5 (5.5.5.5)
          Origin incomplete, metric 0, localpref 100, valid, internal, best
          Extended Community: RT:100:1
          mpls labels in/out nolabel/28


    IOS-XR doesn't display the "::FFFF:" in front of the IPv4 next-hop (How Multi is MP-BGP in IOS-XR - Part #2).

    VPNv6 label is 28

    R2#sh mpls forwarding-table 5.5.5.5 detail
    Local      Outgoing   Prefix           Bytes Label   Outgoing   Next Hop
    Label      Label      or Tunnel Id     Switched      interface
    19         18         5.5.5.5/32       0             Fa0/0.23   10.2.3.3
            MAC/Encaps=18/22, MRU=1500, Label Stack{18}
            CA070D4C0000CA050E2C0000810000178847 00012000
            No output feature configured


    Transport label is 18

    R2#sh ipv6 cef vrf VPN 2001::6:6:6:6 detail
    2001::6:6:6:6/128, epoch 0, flags rib defined all labels
      recursive via 5.5.5.5 label 28
        nexthop 10.2.3.3 FastEthernet0/0.23 label 18


    Transport label is 18, VPNv6 label is 28


    You can follow the next-hop or the labels (like in CsC), but for easiness let's follow the labels this time.


    Provider IPv4 Router
    R3#sh mpls forwarding-table labels 18 detail
    Local      Outgoing   Prefix           Bytes Label   Outgoing   Next Hop
    Label      Label      or Tunnel Id     Switched      interface
    18         25         5.5.5.5/32       45876         Fa0/0.34   10.3.4.4
            MAC/Encaps=18/22, MRU=1500, Label Stack{25}
            CA0119D80000CA070D4C0000810000248847 00019000
            No output feature configured


    Transport label is 25, VPNv6 label is 28


    Provider IPv4 Router
    R4#sh mpls forwarding-table labels 25 detail
    Local      Outgoing   Prefix           Bytes Label   Outgoing   Next Hop
    Label      Label      or Tunnel Id     Switched      interface
    25         Pop Label  5.5.5.5/32       45343         Fa0/0.45   10.4.5.5
            MAC/Encaps=18/18, MRU=1504, Label Stack{}
            CA0217AC0008CA0119D800008100026B8847
            No output feature configured


    Transport label is removed, VPNv6 label is 28


    Provider 6VPE router

    R5#sh mpls forwarding-table labels 28 detail
    Local      Outgoing   Prefix           Bytes Label   Outgoing   Next Hop
    Label      Label      or Tunnel Id     Switched      interface
    28         No Label   2001::6:6:6:6/128[V]   \
                                           2820          PO2/0      point2point
            MAC/Encaps=4/4, MRU=4474, Label Stack{}
            0F0086DD
            VPN route: VPN
            No output feature configured


    R5#sh bgp vpnv6 unicast vrf A 2001::6:6:6:6/128
    BGP routing table entry for [100:1]2001::6:6:6:6/128, version 6
    Paths: (1 available, best #1, table VPN)
      Advertised to update-groups:
         1
      1
        2001:10:5:6::6 (FE80::C803:17FF:FEAC:8) from 2001:10:5:6::6 (6.6.6.6)
          Origin incomplete, metric 0, localpref 100, valid, external, best
          Extended Community: RT:100:1
          mpls labels in/out 28/nolabel


    Use prefix/size to verify when doing bgp lookups.

    R5#sh ipv6 route vrf VPN 2001::20:20:20:20/128
    Routing entry for 2001::6:6:6:6/128
      Known via "bgp 100", distance 20, metric 0, type external
      Route count is 1/1, share count 0
      Routing paths:
        FE80::C803:17FF:FEAC:8, POS2/0
          MPLS label: nolabel
          Last updated 02:08:07 ago


    VPNv6 label is removed, IPv6 destination reached in next-hop




    IPv6 prefixes over an IPv4 PE-CE BGP session

    Usually when doing 6PE or 6VPE, the BGP session between the PE and the CE (which is used for exchanging the IPv6 prefixes) is IPv6 based.

    If you want to exchange IPv6 prefixes over an IPv4 PE-CE BGP session, then you must change the IPv6 next-hop in the PEs in both directions (and then reset the session) Otherwise you might have the control plane showing everything is fine, but most probably data plane won't work.

    IOS
    R2#sh bgp vpnv6 unicast all
    BGP table version is 1, local router ID is 2.2.2.2
    Status codes: s suppressed, d damped, h history, * valid, > best, i - internal,
                  r RIB-failure, S Stale, m multipath, b backup-path, x best-external
    Origin codes: i - IGP, e - EGP, ? - incomplete

       Network          Next Hop            Metric LocPrf Weight Path
    Route Distinguisher: 26:65001 (default for vrf VPN)
    *  2001:10:2:8::/64 ::FFFF:10.2.8.8          0             0 65001 i



    R2#sh bgp vpnv6 unicast all 2001:10:2:8::/64
    BGP routing table entry for [26:65001]2001:10:2:8::/64, version 0
    Paths: (1 available, no best path)
      Not advertised to any peer
      65001
        ::FFFF:10.2.8.8 (inaccessible) from 10.2.8.8 (10.8.8.8)
          Origin IGP, metric 0, localpref 100, valid, external
          Extended Community: RT:26:65001



    IOS
    router bgp X
     address-family ipv6 vrf VPN
      neighbor CE-IPv4 route-map SET-IPV6NH-IN-ROUTEMAP in
      neighbor CE-IPv4 route-map SET-IPV6NH-OUT-ROUTEMAP out
     exit-address-family

    !
    route-map SET-IPV6NH-IN-ROUTEMAP permit 10
     set ipv6 next-hop CE-IPv6

    !
    route-map SET-IPV6NH-OUT-ROUTEMAP permit 10
     set ipv6 next-hop PE-IPv6


    In general:
    • PE=>CE (out)
      • set ipv6 next-hop PE-IPv6
    • PE<=CE (in)
      • set ipv6 next-hop CE-IPv6

    After applying the route-map and resetting the session:

    IOS
    R2#sh bgp vpnv6 unicast all 2001:10:2:8::/64
    BGP routing table entry for [26:65001]2001:10:2:8::/64, version 14
    Paths: (1 available, best #1, table VPN)
      Advertised to update-groups:
         4
      65001
        2001:10:2:8::8 from 10.2.8.8 (10.8.8.8)
          Origin IGP, metric 0, localpref 100, valid, external, best
          Extended Community: RT:26:65001
          mpls labels in/out 27/nolabel



    In IOS-XR, you won't even get an IPv4 BGP session up, if there are no IPv6 addresses configured on the PE-CE connection.

    The default order of IPv6 next-hop operation is the following:
    • use the IPv6 address defined in the route-map of the session
    • use the IPv6 address used for peering (directly connected interface or loopback)
    • use an IPv4-mapped IPv6 address
    "no bgp default ipv6-nexthop" is also an option.

    Also, sometimes in the CE you must enable ebgp-multihop for the PE session (2 hops at least), otherwise the remote IPv6 routes won't be installed in the CE's BGP table and you'll be getting messages "DENIED due to: non-connected MP_REACH NEXTHOP" (enable "debug bgp ipv6 unicast updates" to see these). This is probably a bug, since the next-hop (PE) is actually connected to the CE router.

    A correct output of "sh bgp vpnv6 unicast" from a PE will include:
    • IPv6 routes from the directly connected CE
      • The next hop shown must be the directly connected CE IPv6 address (i.e. 2001:10:2:8::8)
    • IPv6 routes from other PEs
      • The next hop shown must be the remote PE IPv4 address (in v4-mapped IPv6 address format like.::FFFF:1.1.1.1 in IOS, or just 1.1.1.1 in IOS-XR)
    Example:

    IOS
    R2#sh bgp vpnv6 unicast all
    BGP table version is 23, local router ID is 2.2.2.2
    Status codes: s suppressed, d damped, h history, * valid, > best, i - internal,
                  r RIB-failure, S Stale, m multipath, b backup-path, x best-external
    Origin codes: i - IGP, e - EGP, ? - incomplete

       Network          Next Hop            Metric LocPrf Weight Path
    Route Distinguisher: 26:65001 (default for vrf X)
    *>i2001:10:1:7::/64 ::FFFF:1.1.1.1           0    100      0 65001 i
    *> 2001:10:2:8::/64 2001:10:2:8::8           0             0 65001 i



    IOS-XR
    GSR#sh bgp vpnv6 unicast
    BGP router identifier 19.19.19.19, local AS number 26
    ...

    Status codes: s suppressed, d damped, h history, * valid, > best
                  i - internal, r RIB-failure, S stale
    Origin codes: i - IGP, e - EGP, ? - incomplete
       Network            Next Hop            Metric LocPrf Weight Path
    Route Distinguisher: 26:65001 (default for vrf VPN)
    *>i2001:10:1:7::/64   1.1.1.1                  0    100      0 65001 i
    *> 2001:10:20:20::/64 2001:10:19:20::20
                                   0             0 65001 i


    When doing the opposite and trying to exchange IPv4 prefixes over an IPv6 BGP session, you have to set manually the IPv4 next-hop

    IOS-XR requires to enable the VPNv6 address-family before enabling the IPv6 address-family under a VRF.



    Hints

    If you get issues with IPv6 next-hops being inaccessible when they point to eBGP interfaces (while they shouldn't), try to shut/no shut the interface.

    Before

    R2#sh bgp ipv6 unicast 2001:10:1:7::/64
    BGP routing table entry for 2001:10:1:7::/64, version 0
    Paths: (1 available, no best path)
      Not advertised to any peer
      26 26
        2001:10:19:20::19 (FE80::C802:15FF:FE18:8) (inaccessible) from 10.19.20.19 (19.19.19.19)
          Origin IGP, localpref 100, valid, external


    After

    R2#sh bgp ipv6 unicast 2001:10:1:7::/64
    BGP routing table entry for 2001:10:1:7::/64, version 6
    Paths: (1 available, best #1, table default)
      Not advertised to any peer
      26 26
        2001:10:19:20::19 from 10.19.20.19 (19.19.19.19)
          Origin IGP, localpref 100, valid, external, best


    This is probably another bug.