Despite the negative comments you will see on networking forums, EIGRP is a great interior gateway routing protocol.
It’s Cisco proprietary, for now, which means you can only configure it on Cisco routers. It’s a great choice for Cisco shops.
Why run EIGRP? Couple of reasons include fast convergence and easy to configure. I think it’s also easier to understand compared to OSPF.
Suppose we have the following network topology. I’ll keep it fairly simple.
For a router to advertise known routes to another router, both must follow a set of requirements.
- The primary IP addresses should be on the same IP subnet.
- The same EIGRP autonomous system number needs to be the same.
- EIGRP K values must match (more on this later).
- Interfaces must not be passive (more on this later).
- Authentication must match.
Jumping into R1 for configuration..
R1’s serial 1/0 interface communicates with R2’s serial 1/0 interface. I have configured IP of 172.16.1.1 /30 for R1’s s1/0 interface. To simulate the connected networks hanging off R1 I have configured loopback interfaces.
interface Serial1/0 bandwidth 128 ip address 172.16.1.1 255.255.255.252 serial restart-delay 0 clock rate 128000 ! interface Loopback101 ip address 10.10.1.1 255.255.255.0 ! interface Loopback102 ip address 10.10.2.1 255.255.255.0 ! interface Loopback103 ip address 10.10.3.1 255.255.255.0 !
To enable EIGRP on R1 we go into global configuration mode and type in
router eigrp 10
This enables the eigrp routing protocol on autonomous system number (ASN) 10. Any router that wants to become a neighbor with R1 and share routes must use this same autonomous system number.
Now we must tell R1 what networks we want to advertise to other routers in the same ASN. While we are still in router configuration we will use the following command:
network 172.16.1.0 0.0.0.3
This network command is saying we want to add the 172.16.1.0/30 network to the EIGRP 10 process. Once you hit Enter, EIGRP begins sending out EIGRP Hello packets out any interfaces that match that network statement. 0.0.0.3 is a wildcard mask. The zeros say “I wan’t to match 30 bits of the 172.16.1.0 network and ignore the rest.” This means EIGRP will send Hello packets out any interfaces that fall within 172.16.1.0-172.16.1.3 with subnet mask 255.255.255.252.
The easiest way to find the wildcard mask is to subtract the subnet mask from 255. For example, if my subnet is 255.255.255.252. I will subtract each portion of my subnet mask from 255.255.255.255 to come up with a wildcard mask of 0.0.0.3.
We will add the other loopback networks to eigrp 10 as well with:
network 10.10.1.0 0.0.0.255 network 10.10.2.0 0.0.0.255 network 10.10.3.0 0.0.0.255
We very well could type network 10.0.0.0 without the wildcard mask and by default, EIGRP will assume the classful network. I like to be exact.
By default, EIGRP will auto summarize any networks you advertise. In our example, we are advertising classful networks of 172.16.0.0 and 10.0.0.0. Yes we have defined the subnet masks using wildcards in the network statements but if you run this useful command you will find that auto summarization is in effect.
show ip protocols
Instead of a neighboring router seeing our individual subnets being advertised, R2 will see a classful network of 10.0.0.0 and 172.16.0.0. This is okay as long as you do not have the same classful networks being advertised from other routers. If we did, this would cause a routing issue.
We can disable auto summarization from the EIGRP configuration mode:
conf t router eigrp 10 no auto-summarization
If you added the no auto-summarization command after R1 and R2 became neighbors, it would tear down the relationship and re-establish neighborship. So be cautious of using this command on a production network.
Now let’s go to R2 and complete the configuration.
R2(config)#router eigrp 10 R2(config-router)#no auto R2(config-router)#network 172.16.1.0 0.0.0.3 R2(config-router)# *Feb 8 21:01:20.687: %DUAL-5-NBRCHANGE: IP-EIGRP(0) 10: Neighbor 172.16.1.1 (Serial1/0) is up: new adjacency R2(config-router)#network 10.20.1.0 0.0.0.255 R2(config-router)#network 10.20.2.0 0.0.0.255 R2(config-router)#network 10.20.3.0 0.0.0.255
Notice after we added the network statement for 172.16.1.0/30 on R2’s EIGRP instance it found R1 and they both became neighbors.
The neighborship process goes along the lines of R1 and R2 send Hello packets out their S1/0 interfaces because the primary IP address falls within the range of the network 172.16.0.0 0.0.0.3 statement. When R2 receives the Hello packet it reviews the contents of the Hello packet and finds that R1 meets the requirements for neighborship. R2 replies to R1’s Hello packet with an Update packet that contains all the routes in R2’s routing table. R1 does the same after it receives a Hello packet from R2. After both of the routers exchanged their Hello and Update packets a neighbor adjacency establishes and both routers will send an ACK packet to confirm that the information received in the Update packet was taken. Then R1 and R2 take the route information from the Update packet and put it into the EIGRP topology table. The routes in the topology table go through computation to find the best route to each destination network which then get presented in the IP routing table.
We can verify connectivity between both routers.
First we ping from R1’s primary interface, S1/0, to R2’s S1/0 interface. Do the same from R2. Connectivity is good.
R1#ping 172.16.1.2 Type escape sequence to abort. Sending 5, 100-byte ICMP Echos to 172.16.1.2, timeout is 2 seconds: !!!!! Success rate is 100 percent (5/5), round-trip min/avg/max = 28/37/48 ms R1#
R2#ping 172.16.1.1 Type escape sequence to abort. Sending 5, 100-byte ICMP Echos to 172.16.1.1, timeout is 2 seconds: !!!!! Success rate is 100 percent (5/5), round-trip min/avg/max = 20/38/60 ms R2#
The next verification step is to see if R1 and R2 are indeed EIGRP neighbors with the show ip eigrp neighbors command.
R1#sh ip eigrp neighbors IP-EIGRP neighbors for process 10 H Address Interface Hold Uptime SRTT RTO Q Seq (sec) (ms) Cnt Num 0 172.16.1.2 Se1/0 13 00:03:20 45 1140 0 7 R1#
R2#sh ip eigrp neighbors IP-EIGRP neighbors for process 10 H Address Interface Hold Uptime SRTT RTO Q Seq (sec) (ms) Cnt Num 0 172.16.1.1 Se1/0 11 00:03:48 57 1140 0 3 R2#
Are R2’s advertised networks in R1’s topology table? We can verify that with show ip eigrp topology.
R1#sh ip eigrp topology IP-EIGRP Topology Table for AS(10)/ID(10.10.3.1) Codes: P - Passive, A - Active, U - Update, Q - Query, R - Reply, r - reply Status, s - sia Status P 10.10.1.0/24, 1 successors, FD is 128256 via Connected, Loopback101 P 10.10.2.0/24, 1 successors, FD is 128256 via Connected, Loopback102 P 10.10.3.0/24, 1 successors, FD is 128256 via Connected, Loopback103 P 10.20.2.0/24, 1 successors, FD is 20640000 via 172.16.1.2 (20640000/128256), Serial1/0 P 10.20.3.0/24, 1 successors, FD is 20640000 via 172.16.1.2 (20640000/128256), Serial1/0 P 10.20.1.0/24, 1 successors, FD is 20640000 via 172.16.1.2 (20640000/128256), Serial1/0 P 172.16.1.0/30, 1 successors, FD is 20512000 via Connected, Serial1/0 R1#
Which of those routes made it to the routing table? Let’s check with show ip route.
R1#sh ip route eigrp 10.0.0.0/24 is subnetted, 6 subnets D 10.20.2.0 [90/20640000] via 172.16.1.2, 00:04:32, Serial1/0 D 10.20.3.0 [90/20640000] via 172.16.1.2, 00:04:27, Serial1/0 D 10.20.1.0 [90/20640000] via 172.16.1.2, 00:04:37, Serial1/0 R1#
Let’s ping those networks.
R1#ping 10.20.2.1 Type escape sequence to abort. Sending 5, 100-byte ICMP Echos to 10.20.2.1, timeout is 2 seconds: !!!!! Success rate is 100 percent (5/5), round-trip min/avg/max = 28/35/52 ms R1#ping 10.20.1.1 Type escape sequence to abort. Sending 5, 100-byte ICMP Echos to 10.20.1.1, timeout is 2 seconds: !!!!! Success rate is 100 percent (5/5), round-trip min/avg/max = 32/35/44 ms R1#ping 10.20.3.1 Type escape sequence to abort. Sending 5, 100-byte ICMP Echos to 10.20.3.1, timeout is 2 seconds: !!!!! Success rate is 100 percent (5/5), round-trip min/avg/max = 28/35/52 ms
Other useful verification commands are:
show ip protocols – to display the running routing protocols on the router. Other information is displayed such as – is auto summarization in effect? Which networks are being advertised? Are there any neighbors?
R1#sh ip protocols Routing Protocol is "eigrp 10" Outgoing update filter list for all interfaces is not set Incoming update filter list for all interfaces is not set Default networks flagged in outgoing updates Default networks accepted from incoming updates EIGRP metric weight K1=1, K2=0, K3=1, K4=0, K5=0 EIGRP maximum hopcount 100 EIGRP maximum metric variance 1 Redistributing: eigrp 10 EIGRP NSF-aware route hold timer is 240s Automatic network summarization is not in effect Maximum path: 4 Routing for Networks: 10.10.1.0/24 10.10.2.0/24 10.10.3.0/24 172.16.1.0/30 Routing Information Sources: Gateway Distance Last Update (this router) 90 00:09:59 172.16.1.2 90 00:05:42 Distance: internal 90 external 170
show ip eigrp interfaces – this show command will display all the interfaces used in the EIGRP process. If we were not seeing R2 as a neighbor off of R1’s S1/0 interface, we can use this command to verify that S1/0 is part of the EIGRP process. If S1/0 were not, it points us back to the network statement to ensure it was typed in correctly.
R1#sh ip eigrp interfaces IP-EIGRP interfaces for process 10 Xmit Queue Mean Pacing Time Multicast Pending Interface Peers Un/Reliable SRTT Un/Reliable Flow Timer Routes Se1/0 1 0/0 45 5/190 370 0 Lo101 0 0/0 0 0/1 0 0 Lo102 0 0/0 0 0/1 0 0 Lo103 0 0/0 0 0/1 0 0 R1#
We’ll stop here for now. It’s quite a lot to take in but this is the basics of EIGRP, neighbor adjacencies, and routing.