IOS XE 15.5
IOS XR 5.3
The topology for this demo:
In this post we'll be taking a look at IPv6 BGP in a VRF or 6VPE. The same can be done for 6PE where IPv6 BGP is not in a VRF, but in the global RIB. I'll do a separate post on that, slight configuration change as VPNv6 isn't supported/available yet. The idea here on both IOS and XR is that you can run IPv4 and IPv6 in a dual stack in the core as ships in the night, the two AFIs don't see any of the other's traffic. I won't do a packet walk like I did in the previous post. I do plan on showing some traces to show that each AFI is working end to end.
Since IPv4 and IPv6 will both be tested on the SPv4 exam, being comfortable with both is super important. That being said, getting IPv6 to work is as simple as adding the relevant IPv6 configuration; enabling the IPv6 AFI under the VRFs, creating RT import and export policies, enabling MP-BGP to peer to the other provider routers with IPv6. In the Core configuration post, I added in the configuration to enable the PE to P router configuration to peer via IPv6. I will only show the relevant BGP configuration to get this demo operational.
The idea here is to get R13, R14, R8, R9 and R10 to exchange IPv6 routes with the provider via BGP. Since we are dealing with BGP, redistribution between the PE BGP and VRF process isn't required, yet anyways, it will be in the IGP demos. Truth be told, I had significant issues getting this lab working for IOS XR, I mention my issues as a form of humor now, gives the reader a chuckle, (maybe) and acts as a reminder for me 😉.
I will be showing the configuration of R1 and R13 as well as XR3 and R14, the PE and CE configuration, so that as you are going through the lab, you'll be able to get the PE-CE peering working, once the 2-5 peerings are operational, you should start to see that routes are propagating.
R1
interface GigabitEthernet1.1020
encapsulation dot1Q 120
vrf forwarding BGP
ip address 131.0.0.1 255.255.255.0
ipv6 address 2131:CC1E::1/64
!
vrf definition BGP
rd 20:50693
!
address-family ipv4
route-target export 20:50693
route-target import 20:50693
exit-address-family
!
address-family ipv6
route-target export 20:50693
route-target import 20:50693
exit-address-family
!
router bgp 50693
address-family ipv4 vrf BGP
neighbor 131.0.0.13 remote-as 134
neighbor 131.0.0.13 activate
exit-address-family
!
address-family ipv6 vrf BGP
neighbor 2131:CC1E::13 remote-as 134
neighbor 2131:CC1E::13 activate
exit-address-family
R13
interface GigabitEthernet1.1020
encapsulation dot1Q 120
vrf forwarding BGP
ip address 131.0.0.13 255.255.255.0
ipv6 address 2131:CC1E::13/64
!
vrf definition BGP
rd 20:50693
!
address-family ipv4
route-target export 20:50693
route-target import 20:50693
exit-address-family
!
address-family ipv6
route-target export 20:50693
route-target import 20:50693
exit-address-family
!
router bgp 134
bgp log-neighbor-changes
no bgp default ipv4-unicast
!
address-family ipv4
exit-address-family
!
address-family ipv4 vrf BGP
network 131.0.0.0 mask 255.255.255.0
redistribute connected
neighbor 131.0.0.1 remote-as 50693
neighbor 131.0.0.1 activate
exit-address-family
!
address-family ipv6 vrf BGP
redistribute connected
network 2131:CC1E::/64
neighbor 2131:CC1E::1 remote-as 50693
neighbor 2131:CC1E::1 activate
exit-address-family
XR3
interface GigabitEthernet0/0/0/0.1020
vrf BGP
ipv4 address 113.0.0.13 255.255.255.0
ipv6 address 2113:cc1e::13/64
encapsulation dot1q 1320
!
vrf BGP
address-family ipv4 unicast
import route-target
20:50693
!
export route-target
20:50693
!
!
address-family ipv6 unicast
import route-target
20:50693
!
export route-target
20:50693
!
router bgp 50693
vrf BGP
rd 20:50693
address-family ipv4 unicast
!
address-family ipv6 unicast
!
neighbor 113.0.0.14
remote-as 143
address-family ipv4 unicast
route-policy PASS in
route-policy PASS out
!
!
neighbor 2113:cc1e::14
remote-as 143
address-family ipv6 unicast
route-policy PASS in
route-policy PASS out
R14
interface GigabitEthernet1.1020
encapsulation dot1Q 1320
vrf forwarding BGP
ip address 113.0.0.14 255.255.255.0
ipv6 address 2113:CC1E::14/64
!
vrf definition BGP
rd 20:50693
!
address-family ipv4
route-target export 20:50693
route-target import 20:50693
exit-address-family
!
address-family ipv6
route-target export 20:50693
route-target import 20:50693
exit-address-family
!
router bgp 143
bgp log-neighbor-changes
no bgp default ipv4-unicast
!
address-family ipv4 vrf BGP
network 113.0.0.0 mask 255.255.255.0
neighbor 113.0.0.13 remote-as 50693
neighbor 113.0.0.13 activate
exit-address-family
!
address-family ipv6 vrf BGP
network 2113:CC1E::/64
neighbor 2113:CC1E::13 remote-as 50693
neighbor 2113:CC1E::13 activate
exit-address-family
Now that we have all the configuration in place, you can just swap out the IPv4/IPv6 prefixes used in the BGP configuration as you hit each PE-CE connection. We have to look at the verification.
R1
R1#sh bgp vpnv6 unicast vrf BGP summary | b Neighbor
Neighbor V AS MsgRcvd MsgSent TblVer InQ OutQ Up/Down State/PfxRcd
2131:CC1E::13 4 134 1668 1637 252 0 0 1d00h 2
This ouput shows us that from the PE side, we are peered with R13 and learning 2 prefixes from R13.
R1#sh bgp vpnv6 unicast vrf BGP neighbors 2131:CC1E::13 routes | b Network
Network Next Hop Metric LocPrf Weight Path
Route Distinguisher: 20:50693 (default for vrf BGP)
r> 2131:CC1E::/64 2131:CC1E::13 0 0 134 i
*> FC00::13/128 2131:CC1E::13 0 0 134 ?
Total number of prefixes 2
We've learned the "r>" which is the directly connected IPv6 prefix and the "*>" which is the loopback interface in the VRF BGP RIB that was advertised, you'll notice that the *> route has a ? at the end of it, indicating that it was redistributed. The ? means that BGP doesn't know where the route was originated from.
R1#sh bgp vpnv6 unicast vrf BGP
BGP table version is 252, local router ID is 192.168.1.1
Status codes: s suppressed, d damped, h history, * valid, > best, i - internal,
r RIB-failure, S Stale, m multipath, b backup-path, f RT-Filter,
x best-external, a additional-path, c RIB-compressed,
Origin codes: i - IGP, e - EGP, ? - incomplete
RPKI validation codes: V valid, I invalid, N Not found
Network Next Hop Metric LocPrf Weight Path
Route Distinguisher: 20:50693 (default for vrf BGP)
*>i 2038:CC1E::/64 ::FFFF:192.168.1.3
0 100 0 8 i
* i ::FFFF:192.168.1.3
0 100 0 8 i
*>i 2059:CC1E::/64 ::FFFF:192.168.1.5
0 100 0 9 i
* i ::FFFF:192.168.1.5
0 100 0 9 i
*>i 2106:CC1E::/64 ::FFFF:192.168.1.6
0 100 0 10 i
* i ::FFFF:192.168.1.6
0 100 0 10 i
* i 2113:CC1E::/64 ::FFFF:192.168.1.13
Network Next Hop Metric LocPrf Weight Path
0 100 0 143 i
*>i ::FFFF:192.168.1.13
0 100 0 143 i
r> 2131:CC1E::/64 2131:CC1E::13 0 0 134 i
* i FC00::10/128 ::FFFF:192.168.1.6
0 100 0 10 ?
*>i ::FFFF:192.168.1.6
0 100 0 10 ?
*> FC00::13/128 2131:CC1E::13 0 0 134 ?
This is the complete output from the VRF BGP table. You can see there are several routes in the RIB, all of them have the "FFFF" in front of the IPv4 remote PE loopback address used for the update-source. This is indicative of 6VPE as we are tunneling IPv6 over IPv4 currently, IPv6 is not currently running in the core. We'll take a look at enabling IPv6 in the core and showing the difference in another post.
R1#sh bgp vpnv6 unicast vrf BGP 2038:CC1E::/64
BGP routing table entry for [20:50693]2038:CC1E::/64, version 122
Paths: (2 available, best #1, table BGP)
Advertised to update-groups:
3
Refresh Epoch 1
8
::FFFF:192.168.1.3 (metric 4) (via default) from 192.168.1.2 (192.168.1.2)
Origin IGP, metric 0, localpref 100, valid, internal, best
Extended Community: RT:20:50693
Originator: 192.168.1.3, Cluster list: 192.168.1.2
mpls labels in/out nolabel/43
rx pathid: 0, tx pathid: 0x0
Refresh Epoch 1
8
::FFFF:192.168.1.3 (metric 4) (via default) from 192.168.1.14 (192.168.1.14)
Origin IGP, metric 0, localpref 100, valid, internal
Extended Community: RT:20:50693
Originator: 192.168.1.3, Cluster list: 192.168.1.14
mpls labels in/out nolabel/43
rx pathid: 0, tx pathid: 0
This output expands on the route learned from R3 that is the PE-CE prefix between R3 and R8. There are 2 different paths learned, one from R2 and the other from XR4, R2 is best because R2 has a lower RID, BGP needs something to use for the tie breaker, since all the attributes are the same.
R1#sh ipv6 route vrf BGP
IPv6 Routing Table - BGP - 9 entries
Codes: C - Connected, L - Local, S - Static, U - Per-user Static route
B - BGP, R - RIP, H - NHRP, I1 - ISIS L1
I2 - ISIS L2, IA - ISIS interarea, IS - ISIS summary, D - EIGRP
EX - EIGRP external, ND - ND Default, NDp - ND Prefix, DCE - Destination
NDr - Redirect, RL - RPL, O - OSPF Intra, OI - OSPF Inter
OE1 - OSPF ext 1, OE2 - OSPF ext 2, ON1 - OSPF NSSA ext 1
ON2 - OSPF NSSA ext 2, la - LISP alt, lr - LISP site-registrations
ld - LISP dyn-eid, a - Application
B 2038:CC1E::/64 [200/0]
via 192.168.1.3%default, indirectly connected
B 2059:CC1E::/64 [200/0]
via 192.168.1.5%default, indirectly connected
B 2106:CC1E::/64 [200/0]
via 192.168.1.6%default, indirectly connected
B 2113:CC1E::/64 [200/0]
via 192.168.1.13%default, indirectly connected
C 2131:CC1E::/64 [0/0]
via GigabitEthernet1.1020, directly connected
L 2131:CC1E::1/128 [0/0]
via GigabitEthernet1.1020, receive
B FC00::10/128 [200/0]
via 192.168.1.6%default, indirectly connected
B FC00::13/128 [20/0]
via FE80::20C:29FF:FE44:53CF, GigabitEthernet1.1020
L FF00::/8 [0/0]
via Null0, receive
This output is of the VRF BGP IPv6 RIB, not the BGP IPV6 table, these are routes that were passed from the BGP table into the VRF BGP RIB that can be advertised down to R13.
R13
R13#sh bgp vpnv4 unicast vrf BGP | b Network
Network Next Hop Metric LocPrf Weight Path
Route Distinguisher: 20:50693 (default for vrf BGP)
*> 0.0.0.0 131.0.0.1 0 50693 i
*> 10.10.10.0/24 131.0.0.1 0 50693 10 ?
*> 13.13.13.0/24 0.0.0.0 0 32768 ?
*> 59.0.0.0/24 131.0.0.1 0 50693 9 i
*> 83.0.0.0/24 131.0.0.1 0 50693 8 i
*> 106.0.0.0/24 131.0.0.1 0 50693 10 i
*> 113.0.0.0/24 131.0.0.1 0 50693 143 i
*> 131.0.0.0/24 0.0.0.0 0 32768 i
R13#sh bgp vpnv6 unicast vrf BGP | b Network
Network Next Hop Metric LocPrf Weight Path
Route Distinguisher: 20:50693 (default for vrf BGP)
*> 2038:CC1E::/64 2131:CC1E::1 0 50693 8 i
*> 2059:CC1E::/64 2131:CC1E::1 0 50693 9 i
*> 2106:CC1E::/64 2131:CC1E::1 0 50693 10 i
*> 2113:CC1E::/64 2131:CC1E::1 0 50693 143 i
*> 2131:CC1E::/64 :: 0 32768 i
*> FC00::10/128 2131:CC1E::1 0 50693 10 ?
*> FC00::13/128 :: 0 32768 ?
This proves that R1 has passed the routes onto R13 and now R13 has ran the best path selection process on these routes, R13 now can inject the best routes (all of them) into the appropriate VRF based IPv4 and IPv6 RIBs.
R13#sh ip route vrf BGP bgp | b Gateway
Gateway of last resort is 131.0.0.1 to network 0.0.0.0
B* 0.0.0.0/0 [20/0] via 131.0.0.1, 20:51:46
10.0.0.0/24 is subnetted, 1 subnets
B 10.10.10.0 [20/0] via 131.0.0.1, 1d01h
59.0.0.0/24 is subnetted, 1 subnets
B 59.0.0.0 [20/0] via 131.0.0.1, 1d04h
83.0.0.0/24 is subnetted, 1 subnets
B 83.0.0.0 [20/0] via 131.0.0.1, 1d04h
106.0.0.0/24 is subnetted, 1 subnets
B 106.0.0.0 [20/0] via 131.0.0.1, 1d07h
113.0.0.0/24 is subnetted, 1 subnets
B 113.0.0.0 [20/0] via 131.0.0.1, 1d04h
R13#sh ipv6 route vrf BGP bgp
IPv6 Routing Table - BGP - 9 entries
B 2038:CC1E::/64 [20/0]
via FE80::20C:29FF:FE11:973F, GigabitEthernet1.1020
B 2059:CC1E::/64 [20/0]
via FE80::20C:29FF:FE11:973F, GigabitEthernet1.1020
B 2106:CC1E::/64 [20/0]
via FE80::20C:29FF:FE11:973F, GigabitEthernet1.1020
B 2113:CC1E::/64 [20/0]
via FE80::20C:29FF:FE11:973F, GigabitEthernet1.1020
B FC00::10/128 [20/0]
via FE80::20C:29FF:FE11:973F, GigabitEthernet1.1020
Going based on the routes seen in the VRF aware RIBs, R13 can reach routes in either IPv4 or IPv6. I will ping/trace test that this is working from R13 to R10.
R13#ping vrf BGP 106.0.0.10
Type escape sequence to abort.
Sending 5, 100-byte ICMP Echos to 106.0.0.10, timeout is 2 seconds:
!!!!!
Success rate is 100 percent (5/5), round-trip min/avg/max = 4/9/19 ms
R13#ping vrf BGP 2106:CC1E::10
Type escape sequence to abort.
Sending 5, 100-byte ICMP Echos to 2106:CC1E::10, timeout is 2 seconds:
!!!!!
Success rate is 100 percent (5/5), round-trip min/avg/max = 5/19/72 ms
R13
R13#sh bgp vpnv4 unicast vrf BGP | b Network
Network Next Hop Metric LocPrf Weight Path
Route Distinguisher: 20:50693 (default for vrf BGP)
*> 0.0.0.0 131.0.0.1 0 50693 i
*> 10.10.10.0/24 131.0.0.1 0 50693 10 ?
*> 13.13.13.0/24 0.0.0.0 0 32768 ?
*> 59.0.0.0/24 131.0.0.1 0 50693 9 i
*> 83.0.0.0/24 131.0.0.1 0 50693 8 i
*> 106.0.0.0/24 131.0.0.1 0 50693 10 i
*> 113.0.0.0/24 131.0.0.1 0 50693 143 i
*> 131.0.0.0/24 0.0.0.0 0 32768 i
R13#sh bgp vpnv6 unicast vrf BGP | b Network
Network Next Hop Metric LocPrf Weight Path
Route Distinguisher: 20:50693 (default for vrf BGP)
*> 2038:CC1E::/64 2131:CC1E::1 0 50693 8 i
*> 2059:CC1E::/64 2131:CC1E::1 0 50693 9 i
*> 2106:CC1E::/64 2131:CC1E::1 0 50693 10 i
*> 2113:CC1E::/64 2131:CC1E::1 0 50693 143 i
*> 2131:CC1E::/64 :: 0 32768 i
*> FC00::10/128 2131:CC1E::1 0 50693 10 ?
*> FC00::13/128 :: 0 32768 ?
This proves that R1 has passed the routes onto R13 and now R13 has ran the best path selection process on these routes, R13 now can inject the best routes (all of them) into the appropriate VRF based IPv4 and IPv6 RIBs.
R13#sh ip route vrf BGP bgp | b Gateway
Gateway of last resort is 131.0.0.1 to network 0.0.0.0
B* 0.0.0.0/0 [20/0] via 131.0.0.1, 20:51:46
10.0.0.0/24 is subnetted, 1 subnets
B 10.10.10.0 [20/0] via 131.0.0.1, 1d01h
59.0.0.0/24 is subnetted, 1 subnets
B 59.0.0.0 [20/0] via 131.0.0.1, 1d04h
83.0.0.0/24 is subnetted, 1 subnets
B 83.0.0.0 [20/0] via 131.0.0.1, 1d04h
106.0.0.0/24 is subnetted, 1 subnets
B 106.0.0.0 [20/0] via 131.0.0.1, 1d07h
113.0.0.0/24 is subnetted, 1 subnets
B 113.0.0.0 [20/0] via 131.0.0.1, 1d04h
R13#sh ipv6 route vrf BGP bgp
IPv6 Routing Table - BGP - 9 entries
B 2038:CC1E::/64 [20/0]
via FE80::20C:29FF:FE11:973F, GigabitEthernet1.1020
B 2059:CC1E::/64 [20/0]
via FE80::20C:29FF:FE11:973F, GigabitEthernet1.1020
B 2106:CC1E::/64 [20/0]
via FE80::20C:29FF:FE11:973F, GigabitEthernet1.1020
B 2113:CC1E::/64 [20/0]
via FE80::20C:29FF:FE11:973F, GigabitEthernet1.1020
B FC00::10/128 [20/0]
via FE80::20C:29FF:FE11:973F, GigabitEthernet1.1020
Going based on the routes seen in the VRF aware RIBs, R13 can reach routes in either IPv4 or IPv6. I will ping/trace test that this is working from R13 to R10.
R13#ping vrf BGP 106.0.0.10
Type escape sequence to abort.
Sending 5, 100-byte ICMP Echos to 106.0.0.10, timeout is 2 seconds:
!!!!!
Success rate is 100 percent (5/5), round-trip min/avg/max = 4/9/19 ms
R13#ping vrf BGP 2106:CC1E::10
Type escape sequence to abort.
Sending 5, 100-byte ICMP Echos to 2106:CC1E::10, timeout is 2 seconds:
!!!!!
Success rate is 100 percent (5/5), round-trip min/avg/max = 5/19/72 ms
R13#traceroute vrf BGP 106.0.0.10 num
Type escape sequence to abort.
Tracing the route to 106.0.0.10
VRF info: (vrf in name/id, vrf out name/id)
1 131.0.0.1 4 msec 1 msec 1 msec
2 10.1.15.15 [MPLS: Labels 24004/26 Exp 0] 7 msec 5 msec 5 msec
3 10.15.4.4 [MPLS: Labels 18/26 Exp 0] 6 msec 19 msec 19 msec
4 10.4.5.5 [MPLS: Labels 18/26 Exp 0] 19 msec 19 msec 27 msec
5 106.0.0.6 22 msec 10 msec 9 msec
6 106.0.0.10 9 msec
R13#traceroute vrf BGP 2106:CC1E::10
Type escape sequence to abort.
Tracing the route to 2106:CC1E::10
1 2131:CC1E::1 3 msec 1 msec 1 msec
2 FC00::112 [MPLS: Labels 24007/27 Exp 0] 20 msec 6 msec 7 msec
3 2016:12:13::13 [MPLS: Labels 24002/27 Exp 0] 9 msec 20 msec 28 msec
4 ::FFFF:10.13.2.2 [MPLS: Labels 16/27 Exp 0] 25 msec 81 msec 17 msec
5 2106:CC1E::6 [AS 10] 17 msec 9 msec 10 msec
6 2106:CC1E::10 [AS 10] 15 msec 15 msec 15 msec
As you can see, the ping trace test works as expected. One thing to point out, the 4th hop, "::FFFF:10.13.2.2" is an indication that R2 on that peering with XR3 does not have an IPv6 address configured on that interface. Due to this, IOS has to map the IPv6 traffic to an IPv4 address and use the FFFF as filler. At the time of this post, IPv6 for iGP hasn't been enabled.
interface GigabitEthernet1.132
encapsulation dot1Q 132
ip address 10.13.2.2 255.255.255.0
The configuration shown in this post is that of "the defacto" standard, meaning it is the most likely to be used in a production network. Other posts will include the Customer peering with the same AS at 2 or more sites and backdoor link with SoO. The provider really has to be ready for anything, which is why most providers will prefer a "managed CE" to prevent issues from occuring.
Let's take a look at the XR equivalent and go from there.
We've verified R1, being a PE, we'll do the same with XR3 and show that R14 is learning routes.
RP/0/0/CPU0:XR3#sh bgp vpnv4 unicast vrf BGP | b Network
Sun Jan 8 22:26:34.759 UTC
Network Next Hop Metric LocPrf Weight Path
Route Distinguisher: 20:50693 (default for vrf BGP)
*>i10.10.10.0/24 192.168.1.6 0 100 0 10 ?
* i 192.168.1.6 0 100 0 10 ?
*>i13.13.13.0/24 192.168.1.1 0 100 0 134 ?
* i 192.168.1.1 0 100 0 134 ?
*>i59.0.0.0/24 192.168.1.5 0 100 0 9 i
* i 192.168.1.5 0 100 0 9 i
*>i83.0.0.0/24 192.168.1.3 0 100 0 8 i
* i 192.168.1.3 0 100 0 8 i
*>i106.0.0.0/24 192.168.1.6 0 100 0 10 i
* i 192.168.1.6 0 100 0 10 i
*> 113.0.0.0/24 113.0.0.14 0 0 143 i
*>i131.0.0.0/24 192.168.1.1 0 100 0 134 i
* i 192.168.1.1 0 100 0 134 i
RP/0/0/CPU0:XR3#sh bgp vpnv6 unicast vrf BGP | b Network
Sun Jan 8 22:26:51.548 UTC
Network Next Hop Metric LocPrf Weight Path
Route Distinguisher: 20:50693 (default for vrf BGP)
*>i2038:cc1e::/64 192.168.1.3 0 100 0 8 i
* i 192.168.1.3 0 100 0 8 i
*>i2059:cc1e::/64 192.168.1.5 0 100 0 9 i
* i 192.168.1.5 0 100 0 9 i
*>i2106:cc1e::/64 192.168.1.6 0 100 0 10 i
* i 192.168.1.6 0 100 0 10 i
*> 2113:cc1e::/64 2113:cc1e::14 0 0 143 i
*>i2131:cc1e::/64 192.168.1.1 0 100 0 134 i
* i 192.168.1.1 0 100 0 134 i
*>ifc00::10/128 192.168.1.6 0 100 0 10 ?
* i 192.168.1.6 0 100 0 10 ?
*>ifc00::13/128 192.168.1.1 0 100 0 134 ?
* i 192.168.1.1 0 100 0 134 ?
We have 2 paths for each route except for directly connected peerings.
RP/0/0/CPU0:XR3#sh bgp vpnv4 unicast vrf BGP 13.13.13.0/24
Sun Jan 8 22:28:00.853 UTC
BGP routing table entry for 13.13.13.0/24, Route Distinguisher: 20:50693
Versions:
Process bRIB/RIB SendTblVer
Speaker 136 136
Last Modified: Jan 8 01:04:56.192 for 21:23:04
Paths: (2 available, best #1)
Not advertised to any peer
Path #1: Received by speaker 0
Not advertised to any peer
134
192.168.1.1 (metric 3) from 192.168.1.2 (192.168.1.1)
Received Label 33
Origin incomplete, metric 0, localpref 100, valid, internal, best, group-best, import-candidate, imported
Received Path ID 0, Local Path ID 1, version 136
Extended community: RT:20:50693
Originator: 192.168.1.1, Cluster list: 192.168.1.2
Source VRF: BGP, Source Route Distinguisher: 20:50693
Path #2: Received by speaker 0
Not advertised to any peer
134
192.168.1.1 (metric 3) from 192.168.1.14 (192.168.1.1)
Received Label 33
Origin incomplete, metric 0, localpref 100, valid, internal, import-candidate, imported
Received Path ID 0, Local Path ID 0, version 0
Extended community: RT:20:50693
Originator: 192.168.1.1, Cluster list: 192.168.1.14
Source VRF: BGP, Source Route Distinguisher: 20:50693
Like we saw with R1, we have 2 paths, since R2 is the lowest Router ID, it wins the election and is the best path. The same will be true for any of the IPv6 routes.
RP/0/0/CPU0:XR3#sh bgp vpnv6 unicast vrf BGP 2038:cc1e::/64
Sun Jan 8 22:30:13.684 UTC
BGP routing table entry for 2038:cc1e::/64, Route Distinguisher: 20:50693
Versions:
Process bRIB/RIB SendTblVer
Speaker 77 77
Last Modified: Jan 7 20:14:00.192 for 1d02h
Paths: (2 available, best #1)
Not advertised to any peer
Path #1: Received by speaker 0
Not advertised to any peer
8
192.168.1.3 (metric 6) from 192.168.1.2 (192.168.1.3)
Received Label 43
Origin IGP, metric 0, localpref 100, valid, internal, best, group-best, import-candidate, imported
Received Path ID 0, Local Path ID 1, version 77
Extended community: RT:20:50693
Originator: 192.168.1.3, Cluster list: 192.168.1.2
Source VRF: BGP, Source Route Distinguisher: 20:50693
Path #2: Received by speaker 0
Not advertised to any peer
8
192.168.1.3 (metric 6) from 192.168.1.14 (192.168.1.3)
Received Label 43
Origin IGP, metric 0, localpref 100, valid, internal, import-candidate, imported
Received Path ID 0, Local Path ID 0, version 0
Extended community: RT:20:50693
Originator: 192.168.1.3, Cluster list: 192.168.1.14
Source VRF: BGP, Source Route Distinguisher: 20:50693
R2 is chosen as the best path. Now that doesn't mean that R2 will be in the transit path, because it is not, R2 just happens to be a route reflector and is the router that advertised or reflected XR3 the route. Let's take a look at the VRF aware RIB for BGP, if it is populated, that will prove that the translation between VPNv4/IPv4 and VPNv6/IPv6 was successful and R14 should learning routes.
RP/0/0/CPU0:XR3#sh route vrf BGP ipv4 | b Gateway
Sun Jan 8 22:32:18.676 UTC
Gateway of last resort is not set
B 10.10.10.0/24 [200/0] via 192.168.1.6 (nexthop in vrf default), 1d01h
B 13.13.13.0/24 [200/0] via 192.168.1.1 (nexthop in vrf default), 21:27:22
B 59.0.0.0/24 [200/0] via 192.168.1.5 (nexthop in vrf default), 1d04h
B 83.0.0.0/24 [200/0] via 192.168.1.3 (nexthop in vrf default), 1d04h
B 106.0.0.0/24 [200/0] via 192.168.1.6 (nexthop in vrf default), 1d07h
C 113.0.0.0/24 is directly connected, 1d07h, GigabitEthernet0/0/0/0.1020
L 113.0.0.13/32 is directly connected, 1d07h, GigabitEthernet0/0/0/0.1020
B 131.0.0.0/24 [200/0] via 192.168.1.1 (nexthop in vrf default), 21:27:21
RP/0/0/CPU0:XR3#sh route vrf BGP ipv6 | b Gateway
Sun Jan 8 22:33:36.810 UTC
Gateway of last resort is not set
B 2038:cc1e::/64
[200/0] via ::ffff:192.168.1.3 (nexthop in vrf default), 1d02h
B 2059:cc1e::/64
[200/0] via ::ffff:192.168.1.5 (nexthop in vrf default), 1d02h
B 2106:cc1e::/64
[200/0] via ::ffff:192.168.1.6 (nexthop in vrf default), 1d02h
C 2113:cc1e::/64 is directly connected,
1d07h, GigabitEthernet0/0/0/0.1020
L 2113:cc1e::13/128 is directly connected,
1d07h, GigabitEthernet0/0/0/0.1020
B 2131:cc1e::/64
[200/0] via ::ffff:192.168.1.1 (nexthop in vrf default), 21:28:03
B fc00::10/128
[200/0] via ::ffff:192.168.1.6 (nexthop in vrf default), 1d01h
B fc00::13/128
[200/0] via ::ffff:192.168.1.1 (nexthop in vrf default), 21:28:03
We need to make sure that XR3 is actually peered with R14, since we are directly connected to R14 and no IGP routes are seen in the VRF or in the BGP tables, we won't know until we check.
RP/0/0/CPU0:XR3#sh bgp vrf BGP summary | b Neighbor
Sun Jan 8 22:34:13.018 UTC
Neighbor Spk AS MsgRcvd MsgSent TblVer InQ OutQ Up/Down St/PfxRcd
113.0.0.14 0 143 1900 1731 146 0 0 1d04h 1
Excellent, we're peered and learning 1 prefix. Let's check on R14 to see what he's learning.
R14#sh bgp vpnv4 unicast vrf BGP | b Network
Network Next Hop Metric LocPrf Weight Path
Route Distinguisher: 20:50693 (default for vrf BGP)
*> 10.10.10.0/24 113.0.0.13 0 50693 10 ?
*> 13.13.13.0/24 113.0.0.13 0 50693 134 ?
*> 59.0.0.0/24 113.0.0.13 0 50693 9 i
*> 83.0.0.0/24 113.0.0.13 0 50693 8 i
*> 106.0.0.0/24 113.0.0.13 0 50693 10 i
*> 113.0.0.0/24 0.0.0.0 0 32768 i
*> 131.0.0.0/24 113.0.0.13 0 50693 134 i
R14#sh bgp vpnv6 unicast vrf BGP | b Network
Network Next Hop Metric LocPrf Weight Path
Route Distinguisher: 20:50693 (default for vrf BGP)
*> 2038:CC1E::/64 2113:CC1E::13 0 50693 8 i
*> 2059:CC1E::/64 2113:CC1E::13 0 50693 9 i
*> 2106:CC1E::/64 2113:CC1E::13 0 50693 10 i
*> 2113:CC1E::/64 :: 0 32768 i
*> 2131:CC1E::/64 2113:CC1E::13 0 50693 134 i
*> FC00::10/128 2113:CC1E::13 0 50693 10 ?
*> FC00::13/128 2113:CC1E::13 0 50693 134 ?
R14 has learned routes from XR3 and installed them in the BGP VRF aware RIB. Let's check to see if any routes are in the VRF aware RIB.
R14#sh ip route vrf BGP bgp | b Gateway
Gateway of last resort is not set
10.0.0.0/24 is subnetted, 1 subnets
B 10.10.10.0 [20/0] via 113.0.0.13, 1d01h
13.0.0.0/24 is subnetted, 1 subnets
B 13.13.13.0 [20/0] via 113.0.0.13, 1d01h
59.0.0.0/24 is subnetted, 1 subnets
B 59.0.0.0 [20/0] via 113.0.0.13, 1d04h
83.0.0.0/24 is subnetted, 1 subnets
B 83.0.0.0 [20/0] via 113.0.0.13, 1d04h
106.0.0.0/24 is subnetted, 1 subnets
B 106.0.0.0 [20/0] via 113.0.0.13, 1d04h
131.0.0.0/24 is subnetted, 1 subnets
B 131.0.0.0 [20/0] via 113.0.0.13, 1d04h
R14#sh ipv6 route vrf BGP bgp | b App
ld - LISP dyn-eid, a - Application
B 2038:CC1E::/64 [20/0]
via FE80::20C:29FF:FE29:9C4A, GigabitEthernet1.1020
B 2059:CC1E::/64 [20/0]
via FE80::20C:29FF:FE29:9C4A, GigabitEthernet1.1020
B 2106:CC1E::/64 [20/0]
via FE80::20C:29FF:FE29:9C4A, GigabitEthernet1.1020
B 2131:CC1E::/64 [20/0]
via FE80::20C:29FF:FE29:9C4A, GigabitEthernet1.1020
B FC00::10/128 [20/0]
via FE80::20C:29FF:FE29:9C4A, GigabitEthernet1.1020
B FC00::13/128 [20/0]
via FE80::20C:29FF:FE29:9C4A, GigabitEthernet1.1020
So we can see that routes are in the RIB, which means we can test reachability. Let's ping the loopback of R13 to prove that.
R14#ping vrf BGP FC00::13
Type escape sequence to abort.
Sending 5, 100-byte ICMP Echos to FC00::13, timeout is 2 seconds:
!!!!!
Success rate is 100 percent (5/5), round-trip min/avg/max = 7/20/70 ms
R14#ping vrf BGP 13.13.13.13
Type escape sequence to abort.
Sending 5, 100-byte ICMP Echos to 13.13.13.13, timeout is 2 seconds:
!!!!!
Success rate is 100 percent (5/5), round-trip min/avg/max = 5/24/103 ms
Excellent, it works! This proves that the configuration has been successful,
Thanks for stopping by!
Rob Riker, CCIE #50693
Are you using any virtual enviroment? Can i get UNL/EVE topology? =)
ReplyDeleteIt is all virtual, using CSR1000v and IOS XRv. IOS XE 15.5
DeleteIOS XR 5.3. You can use UNL, however I have never used it. I use OVAs in my ESXi lab.
Ok. Thank you for this blog and LAN/WAN Show. It is great!
Delete