From CCIE Study Wiki
Enhanced Interior Gateway Routing Protocol or EIGRP is a Cisco-proprietary routing protocol commonly used in enterprise networks. It is often called a distance-vector protocol that acts like a link-state protocol.
Theory
EIGRP Basics
An EIGRP configured router when it first comes up will try to find out who its neighbors are by sending out hellos to address 224.0.0.10 using protocol type 88 (doesn't use TCP or UDP). Once a pair of routers exchange hellos, they become adjacent providing:
- They pass any authentication process (MD5 only)
- They use the same AS number
- They believe that the IP of the received hello is on the same subnet as the interface it was received on.
- They have matching K values (weights used to compute the metric for a route)
- Hello and hold time values DO NOT have to match
Once adjacent, routers will exchange routes via a full update (except for routes omitted due to split horizon). After that, partial updates are used. EIGRP uses Reliable Transport Protocol (RTP) to send the multicast updates. If any neighbors fail to ack the multicast update, RTP resends the updates as unicast messages.
K values are constants used as multipliers by EIGRP when computing metrics. Only bandwidth and delay are used by default to calculate a route, but you can also use load, reliability, and MTU.
A Hello will continue to be multicast after an adjacency is formed according to the hello interval. If a router fails to hear a hello on an interface within a defined Hold Time, all routes through the neighbor will be considered failed. Router does not use it's own timers when monitoring a neighbor, it uses the neighbor's stated timers as stated in the Hello messages.
EIGRP uses three tables to store information in:
- Neighbor table - keeps state information regarding neighbors
- Topology table - the contents of the EIGRP updates fill up these tables. EIGRP will calculate a metric for each one of these routes based on the component metric values and their corresponding K values.
- IP Routing table - based on the contents of the topology table, the router will choose the best routes and put them in the IP routing table
EIGRP allows for up to six equal-metric (or near equal-metric) routes to be installed into the routing table at one time. The variance command will allow you to use metrics that are close to each other in value
Routes can be filtered inbound or outbound from a given interface or for the entire EIGRP process itself. The Distribute-list command does the filtering, and can reference either an ACL, a prefix-list, or a route map.
Offset Lists allow EIGRP to add to a route's metric either before sending an update or for routes received in an update. The offset lists refers to an ACL for matching. Any routes that match have the offset (extra metric) added to their metric. Complicated to do with EIGRP, more applicable to RIP updates.
Six types of EIGRP packets: Hello, Update, Ack, Query, Reply, Goodbye
EIGRP Route Computation
Some EIGRP routing decision concepts:
- Reported distance (RD) - The metric of a route as reported by a neighbor
- Feasible distance (FD) - The lowest-metric value for a routers path to a particular subnet
- Feasibility condition - When multiple routes to reach one subnet exist, the case in which one route's RD is lower then the FD
- Successor route - The route to each destination prefix for whech the metric is the lowest metric - it is the route that is kept in the routing table.
- Feasible successor (FS) - A route that is not a successor route but meets the feasibility condition, it can be used when the successor route fails without causing loops. Found in topology table.
- Input event - Any occurrence that could change a router's topology table
- Local computation - EIGRP's reaction to an input event, leading to the use of a FS or going active on a route
When an input event implies that a route has failed, the router must decide if it can choose a replacement route locally or if it must query it's neighbors for help. The router does a local computation to figure out:
- If FS routes exist, install the lowest-metric FS route into the routing table, and send updates to neighbors to notify them of the new route
- If no FS route exists, actively query neighbors for a new route - this is called "going active" on a route
Once the router is active on a route, in multicasts EIGRP Query messages to its neighbors, asking them if they have a valid route to the subnet. A neighbor receiving a query message can take one of three actions:
- If the neighbor does not have an entry in its topology for that subnet, it send a EIGRP Reply packet stating that is has no route
- If the neighbors successor for that subnet is unchanged, or a FS is found, the neighbor sends back an EIGRP Reply message with the details of the route
- If conditions 1 or 2 do not exist, or the router itself goes active, it withholds its response to the original Query unit all of its neighbors respond.
Note that it is possible for the Query process never to complete; routes that stay in active state too long are considered stuck-in-active routes.
EIGRP includes a timer called the active timer, which limits the amount of time a route can stay active for. If the timer expires before a router receives back all of its Reply messages, the router places the route in stuck-in-active state, and the router brings down any neighbors from which no corresponding Reply was received, assuming those neighbors are having problems.
You can disable the active timer to prevent stuck-in-active routes, but better solutions would be to limit the scope of Query messages
- Route summerization can limit query scope - When a Query reaches a router that has a summarized route, but not the specific route in the query, the router immediately replies that it does not have that route. EIGRP defaults to use automatic summerization, which can cause some issues by summarizing where you don't want it to.
- EIGRP stub routing can also limit scape. Non-stub routers do not send Query messages to the stub routers.
Commands
- router eigrp asn (global) - to enter eigrp config mode
- network ip-address [wildcard-mask] (eigrp) - defines address to be compared with interface IP address to pick interfaces on which to enable eigrp
- distribute-list acl number | name {in | out} interface-type interface-number (eigrp)
- distribute-list prefix prefix_list_name {in | out} interface-type interface-number (eigrp)
- ip split-horizon eigrp asn (interface)
- passive-interface [default] interface-type interface-number (eigrp) - tells EIGRP to stop sending hellos on the specified interface. Stops updates from being sent, no neighbor relationships will be formed.
- ip hello-interval eigrp asn seconds (interface)
- ip hold-time eigrp asn seconds
- auto-summary (eigrp)
- metric weights tos k1 k2 k3 k4 k5 (eigrp)
- ip bandwidth-percent eigrp asn percent (interface) - defines the max amount of bandwidth to be used for EIGRP messages
- timers active-time [time-limit | disabled]
- clear ip eigrp neighbors ip-address | interface
Default Settings
- Hello times - every 5 seconds on LAN and fast WANs using multicast hellos, 60 seconds on slow WAN links (except for point-to-point subinterfaces)
- Hold times - three times the hello interval.
- RTO - Retransmission Time Out - The time a router waits for a multicast to be ack'd. Defaults to 200ms and increases if neighbor fails to respond to a query.
- 4 equal-cost paths will be used for load balancing
- Active timer is 3 minutes
Verification
- show ip eigrp interfaces - Shows info about interfaces configured for EIGRP.
- show ip eigrp neighbors - Displays all EIGRP discovered neighbors.
- show ip eigrp topology - Displays all entries in the EIGRP topology table
- show ip eigrp traffic ASN" - Displays the number of packets sent and received for all or a specified EIGRP process.
Troubleshooting, Tips, and Tricks
- When configuring on a NBMA network, split horizon may have to be disabled (no ip split-horizon eigrp asn)
- Nice tip from Kevin Dorrell: One trick I learned is ping 224.0.0.10. I hadn’t realized that would provoke a response from every potential EIGRP neighbor. This is a good way of quickly finding out whether a neighbor is listening to the EIGRP multicast, even if it has not yet successfully set up a neighbor relationship. I am still looking into this: for example, I want to find out what happens if the neighbor has a static neighbor configured. Will that stop it from responding to ping 224.0.0.10 ?
Online Resources
Cisco Resources
- Cisco Learning Module presentation on introducing EIGRP (must be registered to view).
Other EIGRP Sources
Have something to contribute? See a mistake on this page? Have a hint or a link to share?
The CCIE Study Wiki is open to everyone to edit! All you need to do is to create an account to start contributing.
Please be sure to follow our posting guidelines when editing the wiki.
Maybe you have just have some thoughts or suggestions for this entry?
Use the Discussion link on the top or bottom menu to create or join the CCIE forum post on this topic.
You can also go straight to the CCIE Forums and start a new discussion in the forum of your choice.
If you'd rather just contact us with your thoughts, we'd love to hear what you have to say.