EIGRP is an extremely common routing protocol due to its simplicity and ease of configuration. This lab will discuss and demonstrate the configuration and verification of the Cisco EIGRP dynamic routing protocol.
If you’ve completed the previous section discussing the Routing Information Protocol (RIP) then now its time to indulge further into the wonderful world of Cisco with the introduction of the EIGRP (Enhanced Interior Gateway Routing Protocol).
EIGRP is a Cisco proprietary routing protocol which means its only found on Cisco equipment. You cannot run EIGRP on Juniper or Adtran or any other router for that matter since EIGRP is special (only to Cisco). EIGRP is commonly the routing protocol of choice when using an ALL Cisco network with no requirement for cross-vendor operation. EIGRP supports the use of multiple routed protocols such as IP, IPX, AppleTalk.
EIGRP evolved from its predecessor; Interior Gateway Routing Protocol (IGRP) which is classful routing protocol just like RIPv1; IGRP does not advertise the subnet mask with the updates whereas EIGRP is classless and supports VLSM (Variable Length Subnet Masking) IGRP uses a 24bit metric whereas EIGRP uses a 32bit metric. When running EIGRP and IGRP on the same router using the same Autonomous System number (AS#), EIGRP and IGRP will automatically redistribute between protocols and the EIGRP will adjust the metric accordingly.
[notification style=”tip” font_size=”12px” closeable=”true”] README
IGRP support was removed from IOS versions 12.2(13)T and later. The CCNA Exam does not test you on the configuration of IGRP but you’re required to know the history of EIGRP.
EIGRP in and of its self is a Hybrid routing protocol which has characteristics of both a distance vector and link state protocol. Much like RIP using the triggered feature, EIGRP updates are only sent when a change in the network is determined. At first EIGRP routers will form a neighbor relationship and exchange the topological information. After which the routing protocol will send periodic hello’s to ensure that the neighbor is still there. However when a link goes down or a route changes, updates are then sent to neighboring routers via multicast 126.96.36.199 using its own IP protocol number 88.
EIGRP uses the Diffusing Update ALgorithm (DUAL) which ensures a loop free routing domain by maintaining two separate routes in the eigrp topology table called Successor and Feasible Successor routes. The Successor route is the route that is injected into the routers routing table as the “best route” whereas the Feasible Successor route is effectively the backup route which is required to adhere to the successor feasibility condition. The rule states that in order to be considered a Feasible Successor route, the advertised distance (AD) of the Feasible Successor should be less than the feasible distance (FD) of the Successor”
The Advertised Distance is the distance advertised by an upstream neighboring router to a particular route destination.
The Feasible Distance is the distance to a particular route destination from a specific router. The sum of the administrative distance and the distance towards the advertising router towards that specific route. For example; From R1’s perspective, R3 is advertising a distance of 10000 to the destination 10.22.55.0/24 however your distance to R3 from R1 is 500, so your feasible distance would be 10500.
EIGRP maintains three separate tables, the neighbor table, topology table and the routing table;
The neighbor table establishes a list of all adjacent routers which a particular router has formed a neighbor relationship with. Neighbors exchange routing information and hello’s to ensure a neighbor is still up.
The topology table is basically the route database in which all destination routes learned via the neighbors are stored. Routes in the topology table can be marked with a “P” for passive which means the routes are stable. Routes marked as “A” Active are routes that no longer satisfy the feasibility condition and are actively searching for a replacement Successor route by querying neighboring routers. If a successor route has a feasible successor, the route will never be marked active as the router will have a backup route to fail back to in case the primary (Successor route) fails. The convergence time is very low.
If a route goes down and no Feasible Successor exist for the route, EIGRP will query neighboring routers to see if there is an alternate route to the failed route. In a poorly designed network, EIGRP queries can be the downfall of the network as an EIGRP route can become SIA (Stuck in Active). If a query response is not received back from a router within the allotted time (SIA Timer: 180 seconds by default) the neighbor relationship is dropped and any routes associated with that neighbor relationship are purged resulting in dropped packets while the network is re-converging.
The EIGRP metric is calculated by a formula using five separate values known as K Values. By default only K Values 1 and 3 are used (Bandwidth & Delay), K2, K4 and K5 are set to 0. The EIGRP metric formula and K Values are defined below;
EIGRP Metric = 256*((K1*Bw) + (K2*Bw)/(256-Load) + K3*Delay)*(K5/(Reliability + K4)))
So if you use the order of operations you can deduce the equation down to
EIGRP Metric = 256(Bandwidth + Delay)
Now keep in mind the Bandwidth and Delay have formulas in and of themselves to derive those variables. To determine the bandwidth you’ll divide the interface bandwidth from the max bandwidth. To determine delay you’ll divide the interface delay by 10 as the EIGRP metric uses ten’s of microseconds in its calculation. View the formulas below;
Bandwidth = (10^7/Bandwidth in Kbps)
Delay = 10/uSec
So if you want to determine the composite metric of a T1 link at 1.544Mbs (1544Kbps) you’ll need to get the bandwidth and delay variables first then plug those into the EIGRP metric calculation formula as shown below; Keep in mind the delay on a T1 serial interface is 20000uSec (20,000 Microseconds)
Bandwidth = (10^7/1544) = 6476.68 == 6476 (rounded down)
Delay = (10/20000) = 2000
EIGRP Metric = 256*(6476 + 2000) = 2169856
As shown below is the EIGRP topology table for an EIGRP T1 point-to-point link with the metric underlined;
R1#show ip eigrp topology IP-EIGRP Topology Table for AS(10)/ID(10.80.12.1) Codes: P - Passive, A - Active, U - Update, Q - Query, R - Reply, r - reply Status, s - sia Status P 10.80.12.0/30, 1 successors, FD is 2169856 via Connected, Serial0/1 R1#
Now that you have a basic understanding of the operation of EIGRP, lets get into the configurational portion of the lab. Many of the commands used to configure EIGRP are similar to configuring RIP. You enter the EIGRP router process using the router eigrp as#
The AS# (Autonomous System #) is however a new concept. An autonomous system is by definition a collection of multiple networking devices under the control of a single or multiple entity which share a common routing policy for the network. However you can have multiple autonomous systems under the control of the same organization for example; multiple facilities or sites nation or world wide interconnected but segregated for management purposes.
Like RIPv2, auto-summary is also enabled by default on EIGRP. Unless you disable auto-summary within the eigrp routing process a router will summarize at the boundary to the classful network.
When specifying networks which participate in the routing process you must use a wildcard mask. This is the inverse bit notation of a subnet mask. So if a subnet mask is 255.255.255.0 (11111111.11111111.11111111.00000000), then you invert the bits, 1 to 0 and 0 to 1 and the wildcard mask becomes 0.0.0.255 (00000000.00000000.00000000.11111111)
Keep in mind when specifying the network statement under the EIGRP routing process, the network you specify does NOT specify the network that will be advertised in the EIGRP autonomous system but specifies the network range in which interfaces with IP address which fall into that specified network participates in EIGRP. With that being said, if you have 10.80.0.0 0.255.255.255 this means that any interface that has an IP address in the 10.80.0.0/8 network will participate in the EIGRP routing process. The subnet mask are derived from the interfaces for example if you have 10.20.30.1/24 on Serial0/0 and you specify the 10.80.0.0 0.255.255.255 network in the EIGRP routing process. EIGRP will advertise 10.20.30.0/24 and not 10.80.0.0/8 because the network statement does not specify the advertised network, only which interfaces participate in the routing process.
It is best practice to specify interface IP address which participate in the routing process down to the host IP address to prevent future unwanted interface participation when a new interface is added. In this case under router configuration mode you’d specify the network 10.20.30.1 0.0.0.0 statement. This would prevent an interface with the IP address of 10.30.22.1/24 from participating in the routing process if you used the network 10.80.0.0 0.255.255.255 statement.
Like RIPv2, you can statically specify neighbors using the neighbor x.x.x.x command in router configuration mode to configure EIGRP to operate over a NBMA network such as Frame Relay. By default EIGRP uses multicast to send hello packets to 188.8.131.52 using IP protocol 88 and a TTL of 1
By using the show ip eigrp neighbors command you can view which neighbors a specific router has formed adjacencies with. Also this command will display other important information such as the interface in which the neighbor was learned on, the SRTT is the time it takes for an update to be sent to a neighbor and an acknowledgment to be received back. The Retransmission timeout is the interval at which EIGRP will retransmit hello packets if an acknowledgment is not received back. The “Q” (Queue Count) is the number of updates EIGRP has queued to send to that specific neighbor and neighbor uptime.
Another command similar to show ip eigrp neighbors is show ip eigrp interface which displays more information about EIGRP pertaining to the interfaces such as how many neighbors were learned via a specific interface, the transmit queue, average SRTT per interface and pending routes.
Labs in Section 8 will use the following diagram shown below;
Familiarize yourself with the following new command(s);
|router eigrp as#||This command is executed in global configuration mode to start an EIGRP routing process with the specified autonomous system number.|
|no auto-summary||This command is executed in EIGRP router configuration mode to disable auto-summarization which summarizes network subnets to the classful subnet at the boundary.|
|network n.n.n.n wc.wc.wc.wc||This command is executed in EIGRP router configuration mode to specify which interfaces participate in the EIGRP routing process. This command uses the network id of the subnet and a wildcard mask to identify the network range.|
|neighbor x.x.x.x||This command is executed in EIGRP configuration mode to statically specify an EIGRP neighbor.|
|show ip eigrp neighbor||This command when executed from privileged mode will display all current neighbor adjacencies on that specific router as well as information pertaining to that neighbor. You can specify a specific neighbor by listing the IP address following this command. i.e; show ip eigrp neighbor 10.80.1.2|
|show ip eigrp interface||This command when executed from privileged mode will display information relating to EIGRP on a per-interface basis such as number of peers learnt via an interface, average SRTT and pending routes.|
|clear ip eigrp x.x.x.x||This command is executed from privileged mode and forces the acquittal of a neighbor relationship. You can force all neighbor relationships to drop by not specifying a neighbors IP address. Keep in mind when you purge a neighbor all routes learned via that neighbor will be purged from the routing table.|
Objective 1. – Configure EIGRP Autonomous System 10 on all Routers and disable auto summary; then configure the network statements to match only the host ip address of locally connected interfaces.
R1>enable R1#configure terminal Enter configuration commands, one per line. End with CNTL/Z. R1(config)#router eigrp 10 R1(config-router)#no auto-summary R1(config-router)#network 10.80.10.1 0.0.0.0 R1(config-router)#network 10.80.234.1 0.0.0.0 R1(config-router)#end R1#
R2>enable R2#configure terminal Enter configuration commands, one per line. End with CNTL/Z. R2(config)#router eigrp 10 R2(config-router)#no auto-summary R2(config-router)#network 10.80.20.1 0.0.0.0 R2(config-router)#network 10.80.234.2 0.0.0.0 R3(config-router)#network 10.80.23.1 0.0.0.0 R2(config-router)#end R2# %DUAL-5-NBRCHANGE: IP-EIGRP(0) 10: Neighbor 10.80.234.1 (Serial0/0.221) is up: new adjacency R2#
R3>enable R3#configure terminal Enter configuration commands, one per line. End with CNTL/Z. R3(config)#router eigrp 10 R3(config-router)#no auto-summary R3(config-router)#network 10.80.30.1 0.0.0.0 R3(config-router)#network 10.80.234.3 0.0.0.0 R3(config-router)#network 10.80.23.2 0.0.0.0 R3(config-router)#end R3# %DUAL-5-NBRCHANGE: IP-EIGRP(0) 10: Neighbor 10.80.234.1 (Serial0/0.321) is up: new adjacency R3#
R4>enable R4#configure terminal Enter configuration commands, one per line. End with CNTL/Z. R4(config)#router eigrp 10 R4(config-router)#no auto-summary R4(config-router)#network 10.80.40.1 0.0.0.0 R4(config-router)#network 10.80.234.4 0.0.0.0 R4(config-router)#network 10.80.45.1 0.0.0.0 R4(config-router)#end R4#
R5>enable R5#configure terminal Enter configuration commands, one per line. End with CNTL/Z. R5(config)#router eigrp 10 R5(config-router)#no auto-summary R5(config-router)#network 10.80.45.2 0.0.0.0 R5(config-router)#network 10.80.50.1 0.0.0.0 R5(config-router)#end R5# %DUAL-5-NBRCHANGE: IP-EIGRP(0) 10: Neighbor 10.80.45.1 (Serial0/1) is up: new adjacency R5#
As you’ll notice when you’re configure the EIGRP routing process new neighbors will form between R1 and R2, R1 and R3, R4 and R5 but not between R1 and R4; why is this?
Objective 2 – Verify neighbor relationships and the routes being learned via EIGRP using the show ip eigrp neighbor and show ip route commands.
R1#show ip eigrp neighbors IP-EIGRP neighbors for process 10 H Address Interface Hold Uptime SRTT RTO Q Seq (sec) (ms) Cnt Num 1 10.80.234.3 Se0/0 13 00:14:13 444 3996 0 3 0 10.80.234.2 Se0/0 10 00:17:09 205 1230 0 3 R1#
From R1 you can see from above that R1 has established neighbor relationships with R2 and R3 but not R4. This is due to broadcast not being enabled on the frame map from R1 to R4 and vice versa. The ISP does not permit broadcast on the specific PVC however you will learn how to fix this issue in the next Lab 8-2 by configuring Static Neighbors.
As shown below you can see that routes from R2 and R3 are properly being propagated to R1 via EIGRP as denoted by the “D” letter next to the routes in the ip routing table.
R1#show ip route Codes: C - connected, S - static, R - RIP, M - mobile, B - BGP D - EIGRP, EX - EIGRP external, O - OSPF, IA - OSPF inter area N1 - OSPF NSSA external type 1, N2 - OSPF NSSA external type 2 E1 - OSPF external type 1, E2 - OSPF external type 2 * - candidate default, U - per-user static route o - ODR, P - periodic downloaded static route Gateway of last resort is not set 10.80.0.0/8 is variably subnetted, 7 subnets, 4 masks D 10.80.23.1/32 [90/2681856] via 10.80.234.3, 00:00:33, Serial0/0 D 10.80.23.0/30 [90/2681856] via 10.80.234.3, 00:00:33, Serial0/0 [90/2681856] via 10.80.234.2, 00:00:33, Serial0/0 D 10.80.23.2/32 [90/2681856] via 10.80.234.2, 00:03:55, Serial0/0 D 10.80.30.0/24 [90/2297856] via 10.80.234.3, 00:00:30, Serial0/0 D 10.80.20.0/24 [90/2297856] via 10.80.234.2, 00:00:29, Serial0/0 C 10.80.10.0/24 is directly connected, Loopback0 C 10.80.234.0/29 is directly connected, Serial0/0 R1#
As an additional measure of verification you can also ping the EIGRP learned networks sourced from the local network to verify that you have IP connectivity between subnets;
R1#ping 10.80.30.1 source lo0 Type escape sequence to abort. Sending 5, 100-byte ICMP Echos to 10.80.30.1, timeout is 2 seconds: Packet sent with a source address of 10.80.10.1 !!!!! Success rate is 100 percent (5/5), round-trip min/avg/max = 76/100/152 ms R1#