EIGRP over MPLS VPN allows enterprises to connect and route traffic between their remote sites across an MPLS provider network, almost as if they were linked through dedicated leased lines. In this lesson, we will explain how EIGRP operates between remote sites over MPLS VPN infrastructures and demonstrate how EIGRP parameters are transferred using BGP communities.
EIGRP over MPLS Fundamental
EIGRP communication between remote sites over an MPLS VPN relies on the exchange of EIGRP key parameters over MPLS Infrastructure—such as metric components (Bandwidth, Delay, Reliability, Load, and MTU), the AS number, and the Router ID. These parameters are carried across the MPLS VPN using BGP communities, in much the same way they would be exchanged between directly connected routers over a leased line.
EIGRP over MPLS VPN Configuration Example
This is the topology I have prepared: Customer A has three remote sites (A1, A2, and A3) connected to three different PE routers—PE1, PE2, and PE3. Sites A1 and A2 run EIGRP in AS 1012, while site A3 uses EIGRP in AS 1013.
When these sites are directly connected to each other, we expect routing between A1 and A2 to be exchanged as EIGRP internal routes, whereas routes between A1/A2 and A3 are exchanged as EIGRP external routes since AS number is different. Over an MPLS VPN, we expect the same behavior.
To set up the MPLS VPN infrastructure, we configure EIGRP in the same AS as the connected site within VRF A on the PE routers. Routes learned from the customer CE routers are redistributed into BGP on the PE side. The routes exchanged between PE routers over BGP are then redistributed back into EIGRP under VRF A, and advertised toward the CE routers.
A1# sh runn | sec router eigrp router eigrp 1012 network 172.16.0.0 redistribute connected metric 1 1 1 1 1
A2(config-router)#do sh runn | sec eigrp router eigrp 1012 network 172.16.0.0
A3(config-router)#do sh runn | sec router eigrp router eigrp 1013 network 172.16.0.0
# PE1/PE2 router eigrp 1 ! address-family ipv4 vrf A redistribute bgp 65001 metric 1 1 1 1 1 network 172.16.0.0 autonomous-system 1012 exit-address-family ! router bgp 65001 address-family ipv4 vrf A redistribute eigrp 1012
# PE3 router eigrp 1 ! address-family ipv4 vrf A redistribute bgp 65001 metric 1 1 1 1 1 network 172.16.0.0 autonomous-system 1013 exit-address-family ! router bgp 65001 address-family ipv4 vrf A redistribute eigrp 1013
Parameters transfered via EIGRP Route
To better understand how EIGRP works between remote sites over an MPLS VPN, I will compare the routes learned from site A1 on PE1 with how those same routes are advertised from PE1 through BGP to other PE routers.
From A1, two main routes are learned:
172.16.11.0/24, which appears as an internal EIGRP route
100.100.100.100/32, which appears as an external EIGRP route
PE1#show ip route vrf A 172.16.11.0 Routing Table: A Routing entry for 172.16.11.0/24 Known via "eigrp 1012", distance 90, metric 409600, type internal Redistributing via eigrp 1012 Last update from 172.16.1.2 on Ethernet0/1, 00:02:58 ago Routing Descriptor Blocks: * 172.16.1.2, from 172.16.1.2, 00:02:58 ago, via Ethernet0/1 Route metric is 409600, traffic share count is 1 Total delay is 6000 microseconds, minimum bandwidth is 10000 Kbit Reliability 255/255, minimum MTU 1500 bytes Loading 1/255, Hops 1
PE1#show ip route vrf A 100.100.100.100 Routing Table: A Routing entry for 100.100.100.100/32 Known via "eigrp 1012", distance 170, metric 2560025856, type external Redistributing via eigrp 1012 Last update from 172.16.1.2 on Ethernet0/1, 00:01:00 ago Routing Descriptor Blocks: * 172.16.1.2, from 172.16.1.2, 00:01:00 ago, via Ethernet0/1 Route metric is 2560025856, traffic share count is 1 Total delay is 1010 microseconds, minimum bandwidth is 1 Kbit Reliability 1/255, minimum MTU 1 bytes Loading 1/255, Hops 1
Looking at these routes in detail, we can observe the following parameters in the output: metric components (Bandwidth, Delay, Reliability, Load, and MTU), the composite metric, hop count, and the route type (internal or external).
The AS number is implicit: for internal routes, it matches the AS number of the local EIGRP process. The Router ID, while not visible in the “show ip route” output, can be seen with the “show ip eigrp topology all-links” command. This parameter is especially important in external routes, as it identifies the originating router and plays a critical role in preventing routing loops.
EIGRP Parameters over BGP Communities
When these routes are advertised through BGP, EIGRP parameters are carried using BGP extended communities (0x8800 to 0x8806).
Internal EIGRP Route (172.16.11.0/24)
This is an internal EIGRP route (administrative distance 90). The EIGRP vector metrics and other parameters are mapped to BGP extended communities to preserve them across the MPLS VPN. The composite metric is calculated as scaled bandwidth + scaled delay = 256000 + 153600 = 409600. Here’s the mapping:
PE1#show ip bgp vpnv4 all 172.16.11.0 BGP routing table entry for 1:100:172.16.11.0/24, version 28 Paths: (1 available, best #1, table A) Advertised to update-groups: 1 Refresh Epoch 1 Local 172.16.1.2 from 0.0.0.0 (10.10.10.1) Origin incomplete, metric 409600, localpref 100, weight 32768, valid, sourced, best Extended Community: RT:1:100 Cost:pre-bestpath:128:409600 0x8800:32768:0 0x8801:1012:153600 0x8802:65281:256000 0x8803:65281:1500 0x8806:0:2886732545 mpls labels in/out 23/nolabel rx pathid: 0, tx pathid: 0x0
External EIGRP Route (100.100.100.100/32)
This is an external EIGRP route (administrative distance 170, likely redistributed from another protocol). The EIGRP vector metrics and other parameters are mapped to BGP extended communities, including additional external attributes. The composite metric is calculated as scaled bandwidth + scaled delay = 2560000000 + 25856 = 2560025856. Here’s the mapping:
PE1#show ip bgp vpnv4 all 100.100.100.100 BGP routing table entry for 1:100:100.100.100.100/32, version 26 Paths: (1 available, best #1, table A) Advertised to update-groups: 1 Refresh Epoch 1 Local 172.16.1.2 from 0.0.0.0 (10.10.10.1) Origin incomplete, metric 2560025856, localpref 100, weight 32768, valid, sourced, best Extended Community: RT:1:100 Cost:pre-bestpath:129:2560025856 (default+412542209) 0x8800:0:0 0x8801:1012:25856 0x8802:257:2560000000 0x8803:257:1 0x8804:0:2886732545 0x8805:11:0 0x8806:0:2886732545 mpls labels in/out 16/nolabel rx pathid: 0, tx pathid: 0x0
EIGRP Parameters to BGP Communities Mapping
In this figure, I illustrate how the parameters learned through EIGRP are mapped to their corresponding representations in BGP extended communities.
For reference, the following tables illustrate the exact mapping of each EIGRP parameter into its corresponding BGP extended community.
Parameter | EIGRP Value | BGP Extended Community | Value in BGP Community |
---|---|---|---|
Type/Flag | Internal (distance 90) | 0x8800 (Flag:Tag) | 32768:0 (32768 indicates internal flag) |
AS Number | 1012 | 0x8801 (AS:Scaled Delay) | 1012 (AS portion) |
Delay | 6000 microseconds (total) | 0x8801 (AS:Scaled Delay) | 153600 (scaled as 256 * (6000 / 10)) |
Bandwidth | 10000 Kbit (minimum) | 0x8802 (Composite:Hop/Bandwidth) | 256000 (scaled as 256 * (10^7 / 10000)) |
Reliability | 255/255 | 0x8802 and 0x8803 (high byte in composite) | 255 (extracted from 65281 as 65281 >> 8) |
Hop Count | 1 | 0x8802 (low byte in composite) | 1 (extracted from 65281 as 65281 & 0xFF) |
Load | 1/255 | 0x8803 (low byte in composite) | 1 (extracted from 65281 as 65281 & 0xFF) |
MTU | 1500 bytes (minimum) | 0x8803 (Reserve/Load:MTU) | 1500 (MTU portion) |
Tag | 0 | 0x8800 (Flag:Tag) | 0 (tag portion) |
Composite Metric | 409600 | Cost:pre-bestpath | 128:409600 (128 indicates internal, with metric) |
Router ID (Originator) | Not directly shown in EIGRP output | 0x8806 | 0:2886732545 (converts to IP 172.16.11.1) |
Parameter | EIGRP Value | BGP Extended Community | Value in BGP Community |
---|---|---|---|
Type/Flag | External (distance 170) | 0x8800 (Flag:Tag) | 0:0 (0 indicates external flag) |
AS Number | 1012 | 0x8801 (AS:Scaled Delay) | 1012 (AS portion) |
Delay | 1010 microseconds (total) | 0x8801 (AS:Scaled Delay) | 25856 (scaled as 256 * (1010 / 10)) |
Bandwidth | 1 Kbit (minimum) | 0x8802 (Composite:Hop/Bandwidth) | 2560000000 (scaled as 256 * (10^7 / 1)) |
Reliability | 1/255 | 0x8802 and 0x8803 (high byte in composite) | 1 (extracted from 257 as 257 >> 8) |
Hop Count | 1 | 0x8802 (low byte in composite) | 1 (extracted from 257 as 257 & 0xFF) |
Load | 1/255 | 0x8803 (low byte in composite) | 1 (extracted from 257 as 257 & 0xFF) |
MTU | 1 byte (minimum) | 0x8803 (Reserve/Load:MTU) | 1 (MTU portion) |
Tag | 0 | 0x8800 (Flag:Tag) | 0 (tag portion) |
Composite Metric | 2560025856 | Cost:pre-bestpath | 129:2560025856 (129 indicates external, with metric) |
Remote AS | Not directly shown (0 assumed) | 0x8804 (Remote AS:Remote ID) | 0 (remote AS portion) |
Remote ID | Not directly shown | 0x8804 (Remote AS:Remote ID) | 2886732545 (converts to IP 172.16.11.1) |
Remote Protocol | Not directly shown (redistribution source) | 0x8805 (Remote Protocol:Remote Metric) | 11 (protocol ID portion; e.g., could map to OSPF or custom) |
Remote Metric | Not directly shown (0 assumed) | 0x8805 (Remote Protocol:Remote Metric) | 0 (remote metric portion) |
Router ID (Originator) | Not directly shown in EIGRP output | 0x8806 | 0:2886732545 (converts to IP 172.16.11.1) |
verify EIGRP operation in CE Router
To verify the operation of EIGRP over the MPLS VPN, we can also check the routing table on a CE router.
For example, on site A1, the routes learned from A2 appear as internal EIGRP routes—even though they are redistributed through BGP—because both sites belong to the same EIGRP AS. In contrast, the routes learned from A3 appear as external EIGRP routes, since A3 is in a different AS. This means that even if A1 and A3 were directly connected over a leased line, the routes from A3 would still be marked as external EIGRP due to the AS mismatch
A1#show ip route eigrp ... Gateway of last resort is not set 2.0.0.0/32 is subnetted, 1 subnets D EX 2.2.2.2 [170/2560025856] via 172.16.1.1, 00:04:21, Ethernet0/0 172.16.0.0/16 is variably subnetted, 8 subnets, 2 masks D 172.16.2.0/24 [90/307200] via 172.16.1.1, 00:01:31, Ethernet0/0 D EX 172.16.3.0/24 [170/2560025856] via 172.16.1.1, 00:00:41, Ethernet0/0 D 172.16.12.0/24 [90/435200] via 172.16.1.1, 00:01:31, Ethernet0/0 D EX 172.16.13.0/24 [170/2560025856] via 172.16.1.1, 00:00:41, Ethernet0/0
Configuration Reference
hostname PE1 ! ip vrf A rd 1:100 route-target export 1:100 route-target import 1:100 ! ip cef ! mpls label protocol ldp ! interface Loopback0 ip address 10.10.10.1 255.255.255.255 ! interface Loopback50 ip vrf forwarding A ip address 1.1.1.1 255.255.255.255 ! interface Ethernet0/0 ip address 10.0.1.1 255.255.255.0 mpls ip ! interface Ethernet0/1 ip vrf forwarding A ip address 172.16.1.1 255.255.255.0 ! router eigrp 1 ! address-family ipv4 vrf A redistribute bgp 65001 metric 1 1 1 1 1 network 172.16.0.0 autonomous-system 1012 exit-address-family ! router ospf 1 network 10.0.0.0 0.255.255.255 area 0 ! router bgp 65001 bgp log-neighbor-changes neighbor 10.10.10.2 remote-as 65001 neighbor 10.10.10.2 update-source Loopback0 neighbor 10.10.10.3 remote-as 65001 neighbor 10.10.10.3 update-source Loopback0 ! address-family vpnv4 neighbor 10.10.10.2 activate neighbor 10.10.10.2 send-community both neighbor 10.10.10.2 next-hop-self neighbor 10.10.10.3 activate neighbor 10.10.10.3 send-community both neighbor 10.10.10.3 next-hop-self exit-address-family ! address-family ipv4 vrf A redistribute eigrp 1012 exit-address-family ! mpls ldp router-id Loopback0
hostname P ! ip cef ! mpls label protocol ldp interface Loopback0 ip address 10.10.10.10 255.255.255.255 ! interface Ethernet0/1 ip address 10.0.1.10 255.255.255.0 mpls ip ! interface Ethernet0/2 ip address 10.0.2.10 255.255.255.0 mpls ip ! interface Ethernet0/3 ip address 10.0.3.10 255.255.255.0 mpls ip ! router ospf 1 network 10.0.0.0 0.255.255.255 area 0
hostname PE3 ! ip vrf A rd 1:100 route-target export 1:100 route-target import 1:100 ! ip cef ! mpls label protocol ldp ! interface Loopback0 ip address 10.10.10.3 255.255.255.255 ! interface Ethernet0/0 ip address 10.0.3.3 255.255.255.0 mpls ip ! interface Ethernet0/1 ip vrf forwarding A ip address 172.16.3.1 255.255.255.0 ! router eigrp 1 ! address-family ipv4 vrf A redistribute bgp 65001 metric 1 1 1 1 1 network 172.16.0.0 autonomous-system 1013 exit-address-family ! router ospf 1 network 10.0.0.0 0.255.255.255 area 0 ! router bgp 65001 bgp log-neighbor-changes neighbor 10.10.10.1 remote-as 65001 neighbor 10.10.10.1 update-source Loopback0 neighbor 10.10.10.2 remote-as 65001 neighbor 10.10.10.2 update-source Loopback0 ! address-family vpnv4 neighbor 10.10.10.1 activate neighbor 10.10.10.1 send-community both neighbor 10.10.10.1 next-hop-self neighbor 10.10.10.2 activate neighbor 10.10.10.2 send-community both neighbor 10.10.10.2 next-hop-self exit-address-family ! address-family ipv4 vrf A redistribute eigrp 1013 exit-address-family ! mpls ldp router-id Loopback0