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 Paameters over MPLS VPN using BGP Communities
EIGRP Paameters over MPLS VPN using BGP Communities

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.

EIGRP over MPLS VPN Configuration Example
EIGRP over MPLS VPN Configuration Example

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.

Internal EIGRP Routes vector metrics and other parameters mapped to BGP extended communities across MPLS VPN
Internal EIGRP Routes vector metrics and other parameters mapped to BGP extended communities across MPLS VPN

For reference, the following tables illustrate the exact mapping of each EIGRP parameter into its corresponding BGP extended community.

ParameterEIGRP ValueBGP Extended CommunityValue in BGP Community
Type/FlagInternal (distance 90)0x8800 (Flag:Tag)32768:0 (32768 indicates internal flag)
AS Number10120x8801 (AS:Scaled Delay)1012 (AS portion)
Delay6000 microseconds (total)0x8801 (AS:Scaled Delay)153600 (scaled as 256 * (6000 / 10))
Bandwidth10000 Kbit (minimum)0x8802 (Composite:Hop/Bandwidth)256000 (scaled as 256 * (10^7 / 10000))
Reliability255/2550x8802 and 0x8803 (high byte in composite)255 (extracted from 65281 as 65281 >> 8)
Hop Count10x8802 (low byte in composite)1 (extracted from 65281 as 65281 & 0xFF)
Load1/2550x8803 (low byte in composite)1 (extracted from 65281 as 65281 & 0xFF)
MTU1500 bytes (minimum)0x8803 (Reserve/Load:MTU)1500 (MTU portion)
Tag00x8800 (Flag:Tag)0 (tag portion)
Composite Metric409600Cost:pre-bestpath128:409600 (128 indicates internal, with metric)
Router ID (Originator)Not directly shown in EIGRP output0x88060:2886732545 (converts to IP 172.16.11.1)
ParameterEIGRP ValueBGP Extended CommunityValue in BGP Community
Type/FlagExternal (distance 170)0x8800 (Flag:Tag)0:0 (0 indicates external flag)
AS Number10120x8801 (AS:Scaled Delay)1012 (AS portion)
Delay1010 microseconds (total)0x8801 (AS:Scaled Delay)25856 (scaled as 256 * (1010 / 10))
Bandwidth1 Kbit (minimum)0x8802 (Composite:Hop/Bandwidth)2560000000 (scaled as 256 * (10^7 / 1))
Reliability1/2550x8802 and 0x8803 (high byte in composite)1 (extracted from 257 as 257 >> 8)
Hop Count10x8802 (low byte in composite)1 (extracted from 257 as 257 & 0xFF)
Load1/2550x8803 (low byte in composite)1 (extracted from 257 as 257 & 0xFF)
MTU1 byte (minimum)0x8803 (Reserve/Load:MTU)1 (MTU portion)
Tag00x8800 (Flag:Tag)0 (tag portion)
Composite Metric2560025856Cost:pre-bestpath129:2560025856 (129 indicates external, with metric)
Remote ASNot directly shown (0 assumed)0x8804 (Remote AS:Remote ID)0 (remote AS portion)
Remote IDNot directly shown0x8804 (Remote AS:Remote ID)2886732545 (converts to IP 172.16.11.1)
Remote ProtocolNot directly shown (redistribution source)0x8805 (Remote Protocol:Remote Metric)11 (protocol ID portion; e.g., could map to OSPF or custom)
Remote MetricNot directly shown (0 assumed)0x8805 (Remote Protocol:Remote Metric)0 (remote metric portion)
Router ID (Originator)Not directly shown in EIGRP output0x88060: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
Back to: MPLS & MPLS VPN Fundamental (in Progress) > PE-CE Routing in MPLS VPN

Leave a Reply

Your email address will not be published. Required fields are marked *


Post comment