Different Ways to Manipulate an EIGRP path

Today I’m going to be talking about the possible ways we could manipulate paths in our EIGRP routing domain.

Let’s take a look at our topology…

 

R1 has two loopback interfaces.
Loopback 1 – 10.0.1.1/24
Loopback 2 – 10.0.2.1/24
These will represent the networks we are trying to reach.
The link between R1 and R2 is 192.168.1.0/24
The link between R1 and R3 is 192.168.2.0/24
The link between R2 and R4 is 192.168.3.0/24
The link between R3 and R4 is 192.168.4.0/24
We are R4.

 

First let’s configure our topology

R1:
int lo1
ip address 10.0.1.1 255.255.255.0
int lo2
ip address 10.0.2.1 255.255.255.0
int g0/2
ip address 192.168.1.1 255.255.255.0
no shutdown
int g0/1
ip address 192.168.2.1 255.255.255.0
no shutdown
exit
Router EIGRP 1
network 0.0.0.0
no auto-summary

note: The “no auto-summary” command isn’t necessary on IOS 15.

Now let’s configure R2.

R2:
int g0/2
ip address 192.168.2.2 255.255.255.0
no shutdown
int g0/1
ip address 192.168.3.1 255.255.255.0
no shutdown
exit
Router EIGRP 1
network 0.0.0.0
no auto-summary

Now we let’s confirm our EIGRP neighborship came up, and we can ping 10.0.1.1

I will be doing this in the background for all routers but won’t be showing you.

 

Ok great let’s continue to R3.
R3:
int g0/1
ip address 192.168.4.1 255.255.255.0
no shutdown
int g0/2
ip address 192.168.2.2 255.255.255.0
no shutdown
exit
router EIGRP 1
network 0.0.0.0
no auto-summary

And now finally R4

R4:
int g0/1
ip address 192.168.3.2 255.255.255.0
no shutdown
int g0/2
ip address 192.168.4.2 255.255.255.0
no shutdown
exit
router EIGRP 1
network 0.0.0.0
no auto-summary

Now let’s confirm we have two routes in our EIGRP topology to those 10. networks before we proceed.

on R4:

 

Perfect, we can now continue with our manipulation.

 

We have 5 options to manipulate which path we take to get to those networks..

  1. We could change the variance if we have a feasible successor (variance only affects FS routes)
  2. We could use an offset-list on some routes to make their distance look worse to our router
  3. Change the delay or bandwidth on the link (probably the delay since other things like QoS look at bandwidth of interfaces)
  4. Summarize the routes from an upstream router so that only one router advertises an exact matching prefix (routers prefer longer matching prefixes)
  5. Filter the routes with a distribute-list so that we only get one path to that prefix (probably not what you want but I’ll show you)

 

First let’s see if option one is viable by checking if we have a feasible successor.
Variance only works on routes that are feasible successors, they can’t be successors or routes that did not pass the feasibility condition.
The feasibility condition: To become a feasible successor your route needs to have a reported distance that is less than or equal to my successors feasible distance.
Notice how on R4, to get to those networks we prefer the link of R3 since it has a lower feasible distance for both routes.

Since both prefixes only have one successor route, we should only see one route per network in our global routing table.

Ok let’s manipulate the variance to make some of those flows go over both links.

R4:
configure terminal
router EIGRP 1
variance 2

What this does is multiply the distance of our feasible successors by 2, and enables unequal load balancing per flow.

Now we should see two successor routes for these two prefixes.

Perfect since we have two successors, both should show up in our global routing table.

Awesome! You should be aware that the load-balancing mechanisms is provided by Cisco Express Forwarding (CEF) which uses a destination and source hash to allow for flow based load-balancing.Now let’s move to our second option. First I’ll undo these changes of variance so that we prefer only the link of R3 again.

 

Option two is an offset-list. What an offset-list does is add distance to an outgoing or incoming route from a neighbor for prefixes we specify in ACLs or prefix lists.
In our case I will add an offset-list going out FROM R3 so that it adds artificial distance and will make the link between R2 and R4 preferred.  I’m going to only
add a distance of 2600 so that we still have a feasible successor route and we can converge faster if we lose our redundancy.

R3#
configure terminal
access-list 1 permit 10.0.1.0 0.0.0.255
router EIGRP 1
offset-list 1 out 2600

Now let’s check our eigrp topology to confirm our successor has changed for the network of 10.0.1.0/24 but also that we still have a feasible successor.

Our successor route for 10.0.1.0/24 has changed, and we still have a feasible successor.  Now let’s check our global routing table, it should only have one route installed in it for each prefix.

Great! Remember we only changed the distance for the 10.0.1.0/24 network that is why it goes over a different link.

Now I’m going to remove the offset-list so we can go back to what we had at the beginning. Now we’ll play with the delay, I don’t recommend playing with bandwidth.

If we change the delay we need to change it on both sides of the link.

R4:
int g0/2
delay 1000

R3:
int g0/1
delay 1000

Now let’s check our eigrp topology table.

Now the router prefers the link between R2 and R4 for both prefixes. Plus we still have our feasible successor so we don’t risk a slow convergence if we lose redundancy.

Now I will undo the delay changes so we go back to the beginning, this time I will summarize a route so that the more specific route is preferred regardless of metric/distance.

Let me remind you what our normal EIGRP topology looks like…

Let’s summarize the 10 network so that the link between R2 and R4 is preferred again. I need to summarize from R3 since I want R2 to be preferred.

R3#
int g0/1
ip summary-address eigrp 1 10.0.0.0/22
this will cover 10.0.0.0-10.0.3.0.

 

Ok, now let’s check R4’s routing table.

If we try to reach 10.0.1.0 or 10.0.2.0 R4 will prefer the longer matching routes from R2 however if that link ever goes down we still have a backup route
that will be used.

 

Now I will revert these so we can try our last option, filtering routes. I will filter 10.0.0.0/22 from the EIGRP updates of R3.

R3#
configure terminal
ip prefix-list FILTER deny 10.0.0.0/22

router EIGRP 1
distribute-list prefix FILTER out

This should have caused R3 to filter routes for any prefixes in 10.0.0.0/22

Let’s check R4 by using “show ip eigrp topology all-links” which will show all the routes even if they are not feasible successors.

OOPS: Above you’ll notice I made a mistake, i forgot to add a second sequence to my prefix list, so really I’m denying the 10.0.0.0/22 network, AND everything else.

I should have added this:

ip prefix-list filter seq 10 permit  0.0.0.0/0 le 32

No matter, you still get the jist, I’m filtering routes to my neighbor! That was fun.