This post will help explain what the difference between internal EIGRP and external EIGRP is.
This is our topology:
We have three different EIGRP autonomous systems (AS). From R1 we want to get to the IP 1.1.1.1, which is a loopback interface on R3. We can go through AS 100, which has a number of routers in it. Or we can see how we can get to it through AS 300 and AS 200.
The basic IP addressing is below:
R1#sh run int e0/0 | b interface interface Ethernet0/0 ip address 10.1.30.1 255.255.255.0 end R1#sh run int e0/1 | b interface interface Ethernet0/1 ip address 10.1.6.1 255.255.255.0 end R1# R2#sh run int e0/0 | b interface interface Ethernet0/0 ip address 10.1.30.2 255.255.255.0 end R2#sh run int e0/1 | b interface interface Ethernet0/1 ip address 10.1.20.2 255.255.255.0 end R2# R3#sh run int e0/0 | b interf interface Ethernet0/0 ip address 10.1.20.3 255.255.255.0 end R3#sh run int e0/1 | b interf interface Ethernet0/1 ip address 10.1.3.3 255.255.255.0 end R3#sh run int lo0 | b interf interface Loopback0 ip address 1.1.1.1 255.255.255.255 end R3# R4#sh run int e0/0 | b interf interface Ethernet0/0 ip address 10.1.4.4 255.255.255.0 end R4#sh run int e0/1 | b interf interface Ethernet0/1 ip address 10.1.5.4 255.255.255.0 end R4# R5#sh run int e0/0 | b interf interface Ethernet0/0 ip address 10.1.3.5 255.255.255.0 end R5#sh run int e0/1 | b interf interface Ethernet0/1 ip address 10.1.4.5 255.255.255.0 end R5# R6#sh run int e0/0 | b interf interface Ethernet0/0 ip address 10.1.6.6 255.255.255.0 end R6#sh run int e0/1 | b interf interface Ethernet0/1 ip address 10.1.5.6 255.255.255.0 end R6#
internal and external EIGRP configuration
We will start by configuring AS 100, then AS 300 and AS 200. At this stage we are not adding the loopback interface on R3 into any AS:R1(config)#router eigrp 100 R1(config-router)#network 10.1.6.0 0.0.0.255 R1(config-router)# R6(config)#router eigrp 100 R6(config-router)#network 10.1.6.0 0.0.0.255 R6(config-router)# %DUAL-5-NBRCHANGE: EIGRP-IPv4 100: Neighbor 10.1.6.1 (Ethernet0/0) is up: new adjacency R6(config-router)#network 10.1.5.0 0.0.0.255 R6(config-router)# R4(config)#router eigrp 100 R4(config-router)#network 10.1.5.0 0.0.0.255 R4(config-router)# %DUAL-5-NBRCHANGE: EIGRP-IPv4 100: Neighbor 10.1.5.6 (Ethernet0/1) is up: new adjacency R4(config-router)# R4(config-router)#network 10.1.4.0 0.0.0.255 R4(config-router)# R5(config)#router eigrp 100 R5(config-router)#network 10.1.4.0 0.0.0.255 R5(config-router)# %DUAL-5-NBRCHANGE: EIGRP-IPv4 100: Neighbor 10.1.4.4 (Ethernet0/1) is up: new adjacency R5(config-router)#network 10.1.3.0 0.0.0.255 R5(config-router)# R3(config)#router eigrp 100 R3(config-router)#network 10.1.3.0 0.0.0.255 R3(config-router)# %DUAL-5-NBRCHANGE: EIGRP-IPv4 100: Neighbor 10.1.3.5 (Ethernet0/1) is up: new adjacency R3(config-router)# R1(config-router)#exit R1(config)#router eigrp 300 R1(config-router)#network 10.1.30.0 0.0.0.255 R1(config-router)# R2(config)#router eigrp 300 R2(config-router)#network 10.1.30.0 0.0.0.255 R2(config-router)# %DUAL-5-NBRCHANGE: EIGRP-IPv4 300: Neighbor 10.1.30.1 (Ethernet0/0) is up: new adjacency R2(config-router)# R2(config-router)#exit R2(config)#router eigrp 200 R2(config-router)#network 10.1.20.0 0.0.0.255 R2(config-router)# R3(config-router)#exit R3(config)#router eigrp 200 R3(config-router)#network 10.1.20.0 0.0.0.255 R3(config-router)# %DUAL-5-NBRCHANGE: EIGRP-IPv4 200: Neighbor 10.1.20.2 (Ethernet0/0) is up: new adjacency R3(config-router)# R3(config-router)#With this basic setup, what is R1's view of the world?
R1#sh ip route eigrp | b Gate Gateway of last resort is not set 10.0.0.0/8 is variably subnetted, 7 subnets, 2 masks D 10.1.3.0/24 [90/358400] via 10.1.6.6, 00:02:16, Ethernet0/1 D 10.1.4.0/24 [90/332800] via 10.1.6.6, 00:02:51, Ethernet0/1 D 10.1.5.0/24 [90/307200] via 10.1.6.6, 00:03:29, Ethernet0/1 R1#We can see all of the prefixes in AS 100, but none in AS 200. We will not see the AS 300 link, as this will show as a connected route. Let's add the loopback to both of R3's EIGRP AS configurations, and see which R1 prefers.
R3(config-router)#router eigrp 100 R3(config-router)#network 1.1.1.1 0.0.0.0 R3(config-router)#router eigrp 200 R3(config-router)#network 1.1.1.1 0.0.0.0 R3(config-router)# R1#sh ip route eigrp | b Gate Gateway of last resort is not set 1.0.0.0/32 is subnetted, 1 subnets D 1.1.1.1 [90/486400] via 10.1.6.6, 00:00:23, Ethernet0/1 10.0.0.0/8 is variably subnetted, 7 subnets, 2 masks D 10.1.3.0/24 [90/358400] via 10.1.6.6, 00:05:29, Ethernet0/1 D 10.1.4.0/24 [90/332800] via 10.1.6.6, 00:06:04, Ethernet0/1 D 10.1.5.0/24 [90/307200] via 10.1.6.6, 00:06:42, Ethernet0/1 R1#So, we can now see it, and it prefers the one through R6. For R1 to see it through AS 200 and AS 300, we must perform some redistribution on R2:
R2(config-router)#router eigrp 200 R2(config-router)#redistribute eigrp 300 R2(config-router)#router eigrp 300 R2(config-router)#redistribute eigrp 200 R2(config-router)#R1 can now see the prefixes originated by AS 200:
R1#sh ip route eigrp | b Gate Gateway of last resort is not set 1.0.0.0/32 is subnetted, 1 subnets D 1.1.1.1 [90/486400] via 10.1.6.6, 00:02:24, Ethernet0/1 10.0.0.0/8 is variably subnetted, 8 subnets, 2 masks D 10.1.3.0/24 [90/358400] via 10.1.6.6, 00:07:30, Ethernet0/1 D 10.1.4.0/24 [90/332800] via 10.1.6.6, 00:08:05, Ethernet0/1 D 10.1.5.0/24 [90/307200] via 10.1.6.6, 00:08:43, Ethernet0/1 D EX 10.1.20.0/24 [170/307200] via 10.1.30.2, 00:00:55, Ethernet0/0 R1#Without redistribution, as above, two EIGRP AS's are completely separated. So we need to redistribute from one AS to another (A to B), and to make sure that the traffic can get back again, from B to A. Nevertheless, we still prefer the route to 1.1.1.1 through R6.
Notice the difference we have for the AS 200 route. It is displayed as "D EX", meaning it is an external EIGRP route, and has a higher metric, 170 instead of 90. Let's dig in a bit further and see if R1 actually knows about the 1.1.1.1 network from AS 300:
R1#sh ip eigrp topology 1.1.1.1/32 EIGRP-IPv4 Topology Entry for AS(100)/ID(10.1.30.1) for 1.1.1.1/32 State is Passive, Query origin flag is 1, 1 Successor(s), FD is 486400 Descriptor Blocks: 10.1.6.6 (Ethernet0/1), from 10.1.6.6, Send flag is 0x0 Composite metric is (486400/460800), route is Internal Vector metric: Minimum bandwidth is 10000 Kbit Total delay is 9000 microseconds Reliability is 255/255 Load is 1/255 Minimum MTU is 1500 Hop count is 4 Originating router is 1.1.1.1 EIGRP-IPv4 Topology Entry for AS(300)/ID(10.1.30.1) for 1.1.1.1/32 State is Passive, Query origin flag is 1, 0 Successor(s), FD is Infinity Descriptor Blocks: 10.1.30.2 (Ethernet0/0), from 10.1.30.2, Send flag is 0x0 Composite metric is (435200/409600), route is External Vector metric: Minimum bandwidth is 10000 Kbit Total delay is 7000 microseconds Reliability is 255/255 Load is 1/255 Minimum MTU is 1500 Hop count is 2 Originating router is 10.1.30.2 External data: AS number of route is 200 External protocol is EIGRP, external metric is 409600 Administrator tag is 0 (0x00000000) R1#It does, but it still prefers the internal EIGRP route, even though the router through R2 is better, with a shorter hop count of 2 instead of 4, and it also has a better delay, which is used in calculating the best route.
EIGRP will always prefer internal routes to external routes. Internal EIGRP routes have a metric of 90, and external ones have a metric of 170. A lower metric will always be preferred. External EIGFRP routes are ones that come from redistribution, either between different EIGRP AS's, or via a different protocol. Which we will look at now, by switching EIGRP AS 200, to OSPF.
R2(config)#no router eigrp 200 R2(config)# R2(config)#router ospf 200 R2(config-router)#network 10.1.20.0 0.0.0.255 area 0 R2(config-router)# R3(config)#no router eigrp 200 R3(config)# R3(config)#router ospf 200 R3(config-router)#network 10.1.20.0 0.0.0.255 area 0 R3(config-router)# %OSPF-5-ADJCHG: Process 200, Nbr 10.1.30.2 on Ethernet0/0 from LOADING to FULL, Loading Done R3(config-router)# R3(config-router)#network 1.1.1.1 0.0.0.0 area 0 R3(config-router)# R3(config-router)# R2(config-router)#redistribute eigrp 300 R2(config-router)# R2(config-router)#router eigrp 300 R2(config-router)#redistribute ospf 200 metric 10000 10 255 1 1500 R2(config-router)#Now if we look at R1 again, we can see that we still know about the 10.1.20.0/24 network; it still appears as an external route, and we still prefer the internal EIGRP route to 1.1.1.1.
R1#sh ip route eigrp | b Gate Gateway of last resort is not set 1.0.0.0/32 is subnetted, 1 subnets D 1.1.1.1 [90/486400] via 10.1.6.6, 00:29:56, Ethernet0/1 10.0.0.0/8 is variably subnetted, 8 subnets, 2 masks D 10.1.3.0/24 [90/358400] via 10.1.6.6, 00:35:02, Ethernet0/1 D 10.1.4.0/24 [90/332800] via 10.1.6.6, 00:35:37, Ethernet0/1 D 10.1.5.0/24 [90/307200] via 10.1.6.6, 00:36:15, Ethernet0/1 D EX 10.1.20.0/24 [170/284160] via 10.1.30.2, 00:01:00, Ethernet0/0 R1# R1#sh ip eigrp topology 1.1.1.1/32 EIGRP-IPv4 Topology Entry for AS(100)/ID(10.1.30.1) for 1.1.1.1/32 State is Passive, Query origin flag is 1, 1 Successor(s), FD is 486400 Descriptor Blocks: 10.1.6.6 (Ethernet0/1), from 10.1.6.6, Send flag is 0x0 Composite metric is (486400/460800), route is Internal Vector metric: Minimum bandwidth is 10000 Kbit Total delay is 9000 microseconds Reliability is 255/255 Load is 1/255 Minimum MTU is 1500 Hop count is 4 Originating router is 1.1.1.1 EIGRP-IPv4 Topology Entry for AS(300)/ID(10.1.30.1) for 1.1.1.1/32 State is Passive, Query origin flag is 1, 0 Successor(s), FD is Infinity Descriptor Blocks: 10.1.30.2 (Ethernet0/0), from 10.1.30.2, Send flag is 0x0 Composite metric is (284160/258560), route is External Vector metric: Minimum bandwidth is 10000 Kbit Total delay is 1100 microseconds Reliability is 255/255 Load is 1/255 Minimum MTU is 1500 Hop count is 1 Originating router is 10.1.30.2 External data: AS number of route is 200 External protocol is OSPF, external metric is 11 Administrator tag is 0 (0x00000000) R1#This time though, we know that the route has originated through OSPF, and into EIGRP AS 300.
In a nutshell, the difference between internal EIGRP and external EIGRP is that external routes come to us through redistribution, either between different EIGRP AS's, or through a different protocol, such as OSPF.
To read more about EIGRP, grab a copy of CCNA and Beyond!