EIGRP is a Cisco-proprietary routing protocol that combines the simplicity and low overhead of Distance Vector protocols with the reliability and intelligence of Link-State protocols. EIGRP routers will learn all possible routes to a given network and create a Topology Table database to store this information.
When a router is configured to run EIGRP, it will begin sending out "hello" packets on all active ports to discover other EIGRP routers. This packet advertises the Router ID of the sender, as well as a range of variables such as the EIGRP AS number, hello/dead times, etc. Upon receipt of one of these packets, an EIGRP router will evaluate the advertised parameters. If these parameters match, then it will save this remote device into it's Neighbor Table.
Once a neighborship has been established, the routers can now share their routing tables with all of it's neighbors. Each router will store all received information in their Topology Table to learn all surrounding alternate routes. They will then run their DUAL (Diffused-update Algorithm) to generate a metric for each path based on the defined sub-metrics (bandwidth, delay, MTU, reliability & load) to determine the "best path". It will mark each route with it's overall metric, and will load the successor route into it's Routing Table. This route is aptly names the Successor route. The second best route is also loaded into the Routing Table as a Feasible Successor, to immediately takeover should Successor route be lost.
The DUAL Algorithm
The Routing Algorithm that EIGRP uses to calculate the "Best Path" is called the DUAL Algorithm, or rather the Diffused-Update Algorithm. This is a clever routing calculation that takes into account a range of circuit paramaters: Bandwidth, Delay, Load, Reliability and MTU. It then feeds these values into the DUAL Algorithm to calculate the overall Metric that it assigns each path. The Algorithm is as follows:
EIGRP Metric = 256((K1Bandwidth) + (K2Bandwidth)/(256-Load) + K3Delay)(K5/(Reliability + K4)))
Now this looks complex at first, but K values K2, K4 and K5 are set to 0 by default, and so the algorithm can be simplified to:
EIGRP Metric = 256 x (Slowest Bandwidth in path + Combined Delay Values)
In the past, bandwidth was always the main factor is determining the best route, but with modern network performance Delay is also become much more critical. Applications such as online gaming, VoIP and media streaming can make do with bandwidth-limitations through clever compression algorithms, but are affected much greater by delay. As such, EIGRP only takes into account the lowest bandwidth in a possible route, but does account for the sum of all delays at each hope along the path.
EIGRP neighbors can share their routing tables, send updates to eachother and also direct queries to other devices to request alternate routes. These queries are sent on the EIGRP-specific Multicast address 18.104.22.168, and are flooded to all EIGRP-speakers. If a recipient can not provide a response, it will relay the multicast to all other EIGRP speakers.
A major advantage of EIGRP is how simple it is to configure. This can often become a hurdle in troubleshooting issues down the line, but so long as you understand how the protocol operates then you should feel comfortable fixing any adjacencies and routing problems that may arise.
Now, to enable a base EIGRP configuration. First, we will build a couple of interfaces...
Router 1(config)#interface GigabitEthernet 0/0 Router 1(config-if)#description Link to HQ Router 1(config-if)#ip address 22.214.171.124 255.255.255.254 Router 1(config-if)#no shutdown Router 1(config-if)#interface Loopback 0 Router 1(config-if)#description Private /24 1 Router 1(config-if)#ip address 10.0.0.0 255.255.255.0
Next, let us spin up an EIGRP instance. The Autonomous System is important, as neighbor adjacenies won't establish with mismatched AS numbers:
Router 1(config)#router eigrp 100
Now we need to enable the EIGRP process on our external interface. The EIGRP Network command will begin sending hello packets on any interfaces with an IP in the specified range, and it will also mark this range for advertising. We will enable EIGRP on the external interface, and also advertise our Loopback network to the HQ router:
Router 1(config-router)#network 126.96.36.199 0.0.0.1 Router 1(config-router)#network 10.0.0.0 0.0.0.255
EIGRP summarises networks by default, which is a pain for any Network routing classless subnets. Disable it early to save the headache later:
Router 1(config-router)#no auto-summary
Finally, our Router 1 has nothing left to advertise to HQ, but if a route is lost elsewhere in the Network, HQ will begin querying Router 1 to see if it has an alternate route. We will advertise our connected networks to HQ, but also let it know that we don't know any other networks so it shouldn't query us in the future:
Router 1(config-router)#eigrp stub connected
And that is all that is needed to get EIGRP up and running on a basic network! EIGRP is a clever protocol, and setting it up is no more complex than that of a simple RIP routing domain. Though very basic, hopefully this gives a fair introduction to EIGRP's operation and an insight into the simplicity of a basic EIGRP configuration.