Saturday, January 14, 2017

CCIE SPv4 - MPLS L3 VPN - EIGRP PE-CE Routing

Software versions:
IOS XE 15.5
IOS XR 5.3

The topology for this demo:
In this post we will be taking a look at EIGRP as  PE-CE Routing protocol. Like BGP and OSPF, both IPv4 and IPv6 are supported. This allows us to leverage EIGRP to do the same, there are a few unique details we will have to cover as we have with BGP and OSPF. EIGRP being a distance vector protocol, like RIPv2, normally would have to identify a method when redistributing routes into EIGRP, to calculate DUAL. In our case here, that isn't necessary, this is due to the "cost community" that is leveraged to copy the EIGRP metrics into BGP extended communities, carried in VPNv4/VPNv6 updates to the remote PE and then copied back into EIGRP. Very similar to how the IGP metric is copied to the BGP MED. 

We will be leveraging "named mode" EIGRP in our scenario, I rarely ever use the "classic mode" EIGRP anymore. If you ask why, centralized configuration, I can do everything I need to under the Named mode process. At the same time, this is the only place where EIGRPv6 in a VRF is supported. I plan on showing you IOS and IOS XR syntax for the scenario, so we'll start with R14 and XR3, then take a look at R3 and R8. 

R14
router eigrp CCIE
 !
 address-family ipv4 unicast vrf EIGRP autonomous-system 90
  !
  topology base
  exit-af-topology
  network 113.0.0.0 0.0.0.255
 exit-address-family
 !
 address-family ipv6 unicast vrf EIGRP autonomous-system 90
  !
  topology base
  exit-af-topology
 exit-address-family


XR3
router eigrp CCIE
 vrf EIGRP
  address-family ipv4
   autonomous-system 90
   redistribute bgp 50693
   interface GigabitEthernet0/0/0/0.1090
   !
  !
  address-family ipv6
   autonomous-system 90
   redistribute bgp 50693
   interface GigabitEthernet0/0/0/0.1090
!
!
router bgp 50693
vrf EIGRP
  rd 90:50693
  address-family ipv4 unicast
   redistribute eigrp 90
  !
  address-family ipv6 unicast
   redistribute eigrp 90



R3
router eigrp CCIE
 !
 address-family ipv4 unicast vrf EIGRP autonomous-system 90
  !
  topology base
   redistribute bgp 50693
  exit-af-topology
  network 83.0.0.0 0.0.0.255
  network 131.0.0.0 0.0.0.255
 exit-address-family
 !
 address-family ipv6 unicast vrf EIGRP autonomous-system 90
  !
  topology base
   redistribute bgp 50693
  exit-af-topology
 exit-address-family
!
!
router bgp 50693
address-family ipv4 vrf EIGRP
  redistribute eigrp 90
 exit-address-family
 !
 address-family ipv6 vrf EIGRP
  redistribute eigrp 90
 exit-address-family


R8
router eigrp CCIE
 !
 address-family ipv4 unicast vrf EIGRP autonomous-system 90
  !
  topology base
  exit-af-topology
  network 83.0.0.0 0.0.0.255
  network 90.90.90.0 0.0.0.255
 exit-address-family
 !
 address-family ipv6 unicast vrf EIGRP autonomous-system 90
  !
  topology base
   redistribute connected route-map CONNECTED
  exit-af-topology
 exit-address-family


As you can see the configuration is relatively straightforward and easy to implement. 

The part we need to focus on now is the PE EIGRP breakdown for the BGP VPNv4/VPNv6 info to see how that is all put together.

R3#sh bgp vpnv4 unicast vrf EIGRP 113.0.0.0/24
BGP routing table entry for 90:50693:113.0.0.0/24, version 381
Paths: (2 available, best #1, table EIGRP)
  Not advertised to any peer
  Refresh Epoch 2
  Local
    192.168.1.13 (metric 3) (via default) from 192.168.1.2 (192.168.1.2)
      Origin incomplete, metric 0, localpref 100, valid, internal, best
      Extended Community: RT:90:50693 Cost:pre-bestpath:128:10240
        0x8800:32768:0 0x8801:90:256 0x8802:65280:2560 0x8803:1:1500
        0x8806:0:3232235789
      Originator: 192.168.1.13, Cluster list: 192.168.1.2
      mpls labels in/out nolabel/24017
      rx pathid: 0, tx pathid: 0x0
  Refresh Epoch 1
  Local
    192.168.1.13 (metric 3) (via default) from 192.168.1.14 (192.168.1.14)
      Origin incomplete, metric 0, localpref 100, valid, internal
      Extended Community: RT:90:50693 Cost:pre-bestpath:128:10240
        0x8800:32768:0 0x8801:90:256 0x8802:65280:2560 0x8803:1:1500
        0x8806:0:3232235789
      Originator: 192.168.1.13, Cluster list: 192.168.1.14
      mpls labels in/out nolabel/24017
      rx pathid: 0, tx pathid: 0

The majority of the above output has been covered in previous post, R2 is the best path since it has a lower Router ID. I want to focus on the Extended community information and break that down.

0x8800 is route information used for the Route Flag and tag
0x8801 is route metric and AS used for the ASN and dely
0x8802 is route metric and is used for Reliability, next-hop and bandwidth
0x8803 is route metric and is used for Reserve, load and MTU
0x8804 is external route metric and is used for Remote AS and Remote ID
0x8805 is external route metric and is used for Remote protocol and Remote metric
0x8806 is Originating Router ID

I'll add a loopback on R14 and give an IPv4 and IPv6 address, matching in it a route-map and redistributing it into IPv4/IPv6 EIGRP.

router eigrp CCIE
 !
 address-family ipv4 unicast vrf EIGRP autonomous-system 90
  topology base
   redistribute connected route-map LO1000
  exit-af-topology
 exit-address-family
 !
 address-family ipv6 unicast vrf EIGRP autonomous-system 90
  !
  topology base
   redistribute connected route-map LO1000
  exit-af-topology
 exit-address-family
!
route-map LO1000 permit 10
 match interface Loopback1000


R3#sh bgp vpnv4 unicast vrf EIGRP 192.168.100.0
BGP routing table entry for 90:50693:192.168.100.0/24, version 388
Paths: (2 available, best #1, table EIGRP)
  Not advertised to any peer
  Refresh Epoch 2
  Local
    192.168.1.13 (metric 3) (via default) from 192.168.1.2 (192.168.1.2)
      Origin incomplete, metric 10880, localpref 100, valid, internal, best
      Extended Community: RT:90:50693 Cost:pre-bestpath:129:10880 0x8800:0:0
        0x8801:90:288 0x8802:65281:2560 0x8803:1:1500 0x8804:0:1895825422
        0x8805:11:0
      Originator: 192.168.1.13, Cluster list: 192.168.1.2
      mpls labels in/out nolabel/24020
      rx pathid: 0, tx pathid: 0x0
  Refresh Epoch 1
  Local
    192.168.1.13 (metric 3) (via default) from 192.168.1.14 (192.168.1.14)
      Origin incomplete, metric 10880, localpref 100, valid, internal
      Extended Community: RT:90:50693 Cost:pre-bestpath:129:10880 0x8800:0:0
        0x8801:90:288 0x8802:65281:2560 0x8803:1:1500 0x8804:0:1895825422
        0x8805:11:0
      Originator: 192.168.1.13, Cluster list: 192.168.1.14
      mpls labels in/out nolabel/24020
      rx pathid: 0, tx pathid: 0

As you can see, the outputs changed a bit. We no longer see the 8806 as it is replaced with an 8805 and 8804. These metrics are received as BGP extended communities, when BGP is redistributed into EIGRP, those extended communities are copied as well, EIGRP understands what is being handed off and is able to use those values to populate metrics and run DUAL.


R8#sh ip route vrf EIGRP eigrp | b Gateway
Gateway of last resort is not set

      59.0.0.0/24 is subnetted, 1 subnets
D        59.0.0.0 [90/15360] via 83.0.0.3, 00:29:57, GigabitEthernet1.1090
      106.0.0.0/24 is subnetted, 1 subnets
D        106.0.0.0 [90/15360] via 83.0.0.3, 00:28:04, GigabitEthernet1.1090
      113.0.0.0/24 is subnetted, 1 subnets
D        113.0.0.0 [90/15360] via 83.0.0.3, 00:37:09, GigabitEthernet1.1090
      131.0.0.0/24 is subnetted, 1 subnets
D        131.0.0.0 [90/15360] via 83.0.0.3, 5d05h, GigabitEthernet1.1090
D EX  192.168.100.0/24
           [170/16000] via 83.0.0.3, 00:08:37, GigabitEthernet1.1090
 
R8#sh ipv6 route vrf EIGRP eigrp | b App
       ld - LISP dyn-eid, a - Application
D   2113:CC1E::/64 [90/15360]
     via FE80::20C:29FF:FE06:2644, GigabitEthernet1.1090
D   2913:CC1E::/64 [90/16000]
     via FE80::20C:29FF:FE06:2644, GigabitEthernet1.1090
D   FC00::9/128 [90/16000]
     via FE80::20C:29FF:FE06:2644, GigabitEthernet1.1090
D   FC00::90/128 [90/16000]
     via FE80::20C:29FF:FE06:2644, GigabitEthernet1.1090
D   FC00:100::/64 [90/16000]
     via FE80::20C:29FF:FE06:2644, GigabitEthernet1.1090

As you can see, all is well. 

Thanks for stopping by!
Rob Riker, CCIE #50693

No comments:

Post a Comment