Worth noting this isn’t widely used in industry. Most people use OSPF and this is being kicked of the exam topics list after Feb 24th.
At this level EIGRP is called an Advanced Distance Vector Protocol.
It is different from RIP in that it doesn’t have to send out its entire routing table at every interval, and it’s different from OSPF in that it doesn’t have to maintain a Link-state database of all of the routes in an area.
It is comparatively simple to set up and configure.
It makes summarisation more flexible. While in OSPF you can only summarise with the ABR or the ASBR. Using EIGRP you can put a summary route anywhere you want.
EIGRP can do unequal cost load-balancing.
A router that’s running EIGRP maintains three tables:
–Neighbour Table: This is formed when neighbours are established using EIGRP. It doesn’t have the same restrictions in terms of what needs to match in order to become a neighbour. The ASN and the authentication password needs to match on both sides if applied though.
–Topology Table: The closest thing we have to the L-S database in OSPF. It’s a list of all the best routes (Successor routes) and the not quite as good but still decent routes (Feasible successor routes) of which there can be more than one. EIGRP can move a feasilble successor route into a successor route almost instantly – because it has pre-calculated which one is the next best.
–Routing Table: The best routes from the topology table – or if load balancing is happening it would have routes to those too.
A part of the Topology Table – this is the best route available and gets put into the Routing table.
- Feasible Successor
A part of the Topology Table – this is another (backup) route that can be used but isn’t as good as the successor. In the event that the successor goes down the next best feasible successor takes its place
- Active Route
A part of the Topology Table – if a route is active then the Router is sending out query messages – trying to find a backup route to a destination.
- Passive Route
A part of the Topology Table – this is the state you want routes to be in in a live system. It means they are being used as they should be and nothing is changing.
- Feasible Distance (FD)
How far it is from your router to get to a network. So it is the (Advertised Distance – Distance to Advertising Router)
- Advertised Distance (AD)
How far it is from the Router that is telling you about the Feasible Distance.
To be considered a feasible successor the AD must be less than the FD of the successor – This is a loop prevention mechanism. – and is hard to understand.
How EIGRP relationships form
Forming relationships is simpler in EIGRP than it is in OSPF. Firstly all communication is sent to a single multicast address (18.104.22.168), whether it’s point to point, or a bunch of routers connected to the same network segment.
EIGRP Message types:
Hello: Forms Relationships.
Update: Sends updates about routes / routing information.
Query: Asks about routes, only used when a route goes down.
Replies: When a router receives a query it has to reply to it.
ACK: A message sent whenever an update, query or reply message is recieved – so the other Router knows it got there.
The OSPF Metric is quite straight forward, it has the bandwidth equation and manual override of cost. EIGRP takes a lot more into consideration.
Bandwidth: Same as OSPF the Bandwidth is part of the equation. (K1)
Delay: How long it takes the packet to get from one interface to the next. (K3)
Reliability: If there is a point along the route that keeps failing this can be taken into consideration by EIGRP. (K4 AND K5)
Loading: How congested the line is, so if it’s a 1mb link and there’s 900kb of traffic on it already it will factor that in. (K2)
MTU: It can factor in how large the packets it’s sending are.
The (Kn) numbers above are variables for the equation underneath this list but that doesn’t need to be memorised but it’s in so you can refer to it if you ever need to. – It is possible to implement this but it would butcher your Rotuers processor.
Metric = (K1 * Bandwidth + ((K2 * Bandwidth)/(256 – Load)) + K3 * delay) * (K5 / (reliability + K4)
This is the ACTUAL default metric that’s used in EIGRP:
256 * (Slowest_Bandwidth + All_Link_Delays)
It is important to note that along with ASN the metric used has to match across all devices running EIGRP
Default K values:
Bandwidth – K1: 0
Loading – K2: 1
Delay – K3: 0
Reliability – K4, K5: 0 and 0
K values can be checked with the show ip protocols command
Configuring EIGRP is simpler than configuring OSPF. Below is the network that we will be implementing EIGRP on. Interfaces have been given an IP address/subnet mask and are connected as shown in the diagram but no further config has been implemented.
We’ll get started on Router1 in the model above. As with OSPF the first thing we are going to do is make sure there are no other routing protocols currently running with the show ip protocols command:
Since that came back with nothing we can configure it fresh on this router.
From config mode we start by entering in router eigrm [ASN]
This is the autonomous system number – it MUST match on all the routers. In this case we will just use 1. Then just like in any other Routing table we put in the network commands. The wildcard bits don’t need to be entered.
You can however enter in the wildcard bits – make it classless and it’s generally better practice if you do.
Then we’ll set up Router0 to do the same:
As you can see in this one – we get a message telling us that there is a new adjacency on the connected interface.
I’ve then gone on and done the same thing for all of the Routers, and run the network command for their connected interfaces with the 0.0.0.0 wildcard.
To confirm who the EIGRP neighbours are on Router1 you can use the command show ip eigrp neighbors.
You can also use the command show ip eigrp interfaces to see how many peers are connected to each interface.
Any time the Router sees a classful boundary being crossed (e.g. 192.168.1.0/24 to 10.2.3.0/24) auto-summarisation automatically summarises – back to the classful boundary – any time a subnet of a different class is crossed. So if you were in a 192.168.1.0/24 network and you have a route from a 10.x.x.x network, no matter its wildcard it will be a /8.
This makes sure that any internal traffic intended for a subnet doesn’t end up going to the wrong place (a gateway of last resort for example) if EIGRP doesn’t have a route for it. (It will bin the traffic that it doesn’t have a route for instead).
All that said – you probably don’t want to use auto-summarisation. You want control of this as the admin. Disabling auto-summarisation is trivial, you just go into the router, config eigrp and run no auto-summary.
This will resync all of the neighbour relationships, and should be done on all the routers running EIGRP in that ASN.
Equal cost load balancing is one of those things that ‘just works’ out of the box. I’ll add a new link to the diagram from above to demonstrate this in practice. The new link is between Router1 and Router0 and is, like the other link, a serial link. The relevant network command has also been run in EIGRP 1 on both devices.
We can look at those connections more closely with the show ip eigrp neighbors (Run on Router0):
As we can see from the screenshot above a neighbour relationship has been formed on both the Serial interfaces. We can then confirm that the Router has worked out both interfaces go to the same place by looking at the routing table on Router1:
By default EIGRP’s unique unequal cost load balancing is not on. It has to be manually put in. To demonstrate how to use it I am going to log into each side of the connection and modify the speed of the interface to be 50Kbit/sec. (By default in this model they are set to 128 Kbit/sec as shown in model below).
You adjust the bandwidth in the interface config settings (and do this on both sides). On these devices EIGRP then goes down and up again but this isn’t the case on all Routers.
And if we now look at the Routing table on Router1 we can see it is no longer being load balanced, because the cost is unequal (if the neighbours didn’t remake their connection this would have to be done manually with the clear ip eigrp neighbors command, can also run a clear ip route to be safe). :
Another useful debugging command is show ip eigrp topology (Output shown below). Which shows you what EIGRP is seeing but this will NOT necessarily be the same as what is in the Routing table.
As you can see from the bottom two items in that screenshot the cost is lower for the S3/0 interface so that’s the one that gets put in the Routing table. We can change this however – so that both get put in the routing table by enabling unequal cost load balancing.
This is done through the ‘variance’ command. On a router you go into the EIGRP config menu and type variance [Metric Multiplier]– With the multiplier being how much words the link can be when compared with the best link. In our example the Best link (lets say link1 – 128kbs) would need a 3x multiplier to unequally load balance link2 (50kbs). The protocol would then send 3 packets down link1 for every 1 packet it sends down link2.
We can confirm that this has worked by checking the Routing table.
Hello and Hold timers
By default the HELLO and HOLD timers are harder to see than they are in OSPF. There isn’t a nice neat command like the show ip ospf interfaces.
The deafaul HELLO timer is either 5 seconds or 60 seconds depending on the type of link. the default DEAD timer will be 3 times longer than this.
It doesn’t work in Packet Tracer but if you run the command show ip eigrp interfaces brief [INTERFACE] – e.g. interface is S2/0 – then you can see the hello timer. A clunky way of doing it is to keep running the show ip eigrp neighbors command and working out how long the hold lasts. e.g. if it’s always between 10 and 14 then the HELLO timer is probably set to 5.
The way the HELLO and HOLD timers actually work are a little weird. When a router sends a HELLO packet to a neighbor it tells it includes its HOLD timer – which lets the receiving router know that if it doesn’t get another one before that HOLD timer expires the link is dead.
EIGRP lets you have different HELLO timers on different interfaces (unlike OSPF). Each interface can have this set manually inside the interface settings, which is demonstrated below. (ip hello-interval eigrp [ASN] [Desired interval in seconds].
In the same interface you can set the HOLD timer for the packets that interface will send out to it’s neighbours. (ip hold-time eigrp [Desired interval in seconds]). Obviously this has to be a larger number than the hello interval. Unfortunately this cannot be done in packet tracer either.
debug eigrp packet is a useful command as it shows you the hello, update, query, reply and acknowledgement packets in realtime. This can be limited by specifying which packet type you want to see by putting the packet type at the end of the command. (Example below)
This is a command that will just fill your screen, so you can disable it with the no debug eigrp packet command.
Another useful debugging tool is show ip eigrp traffic – it is useful as it shows what traffic has been recieved / sent.
In EIGRP passive-interface works differently than it does for other routing protocols. Whereas in other protocols it will stop it advertising out routes in EIGRP it blocks both incoming and outgoing HELLO packets. This stops a neighbour relationship forming.