EIGRP – Metric review, random “offset-list” lab for Path Selection, Feasibility Condition and Variance discussion, and will PBR config override offset-list?

Weird_Trace

Above is the lab that this post turns into pretty fast once the MPLS is live and installs itself around on EIGRP routers, lots of good info, I advise trying to make through this post if you are rusty on EIGRP Path Selection configuration! 🙂

How EIGRP Calculates Metrics, Topology Table, and Feasibility Condition

By default EIGRP uses the K weights representing Bandwidth / Delay:

Back1-Stub#sh ip proto
*** IP Routing is NSF aware ***

Routing Protocol is “eigrp 100”
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-IPv4 VR(Back1Stub) Address-Family Protocol for AS(100)
Metric weight K1=1, K2=0, K3=1, K4=0, K5=0 K6=0

One very important note – Delay is a cumulative calculation in Metrics, so changing the Bandwidth value will be the best way to manipulate path selection in EIGRP!

Bandwidth is calculated for the link between routers, whereas Delay is calculated across the entire Path from SRC to DST, so unless you want to change it along the entire path its best just to change the BW value on the interface for EIGRP specifically and NOT in general or it can affect things like QoS and other mechanisms in the Topology!

I want going to launch into a demonstration of Topology Table / Load Balancing / Etc but I got an unexpected result from my traceroute from Stub1 to Stub2:

Back1-Stub#trace 192.168.24.1
Type escape sequence to abort.
Tracing the route to 192.168.24.1
VRF info: (vrf in name/id, vrf out name/id)
1 192.168.10.1 52 msec 44 msec 24 msec
2 192.168.1.1 52 msec 52 msec 44 msec
3 10.45.0.4 [MPLS: Labels 402/116 Exp 0] 1032 msec 2984 msec 344 msec
4 10.34.0.3 [MPLS: Labels 302/116 Exp 0] 2104 msec 2256 msec 156 msec
5 10.23.0.2 [MPLS: Labels 200/116 Exp 0] 920 msec * 408 msec
6 192.168.2.1 [MPLS: Label 116 Exp 0] 320 msec 848 msec 556 msec
7 192.168.2.2 72 msec 68 msec 72 msec
8 192.168.20.2 116 msec * 92 msec
Back1-Stub#

Back2-Stub#trace 192.168.14.1
Type escape sequence to abort.
Tracing the route to 192.168.14.1
VRF info: (vrf in name/id, vrf out name/id)
1 192.168.20.1 32 msec 52 msec 44 msec
2 192.168.2.1 48 msec 44 msec 52 msec
3 10.12.0.2 [MPLS: Labels 201/514 Exp 0] 1228 msec 628 msec 2796 msec
4 10.23.0.3 [MPLS: Labels 305/514 Exp 0] 1872 msec 628 msec *
5 10.34.0.4 [MPLS: Labels 405/514 Exp 0] 620 msec 2564 msec 1296 msec
6 192.168.1.1 [MPLS: Label 514 Exp 0] 268 msec 236 msec *
7 192.168.1.2 88 msec 88 msec 92 msec
8 192.168.10.2 92 msec * 88 msec
Back2-Stub#

Weird_Trace

Last night these were tracing across the Transit Routers, however today they are going through the MPLS, without making any kind of changes to anything, and I honestly have no idea why this behavior is suddenly happening but we are going to find out!

I remember now, last night I only had Stub / Transit routers on, not MPLS!

Time to take a look at “Back-Site1” routers “Topology Table” to look at metrics

Shown in the Topology table entry for the route we are using:

P 192.168.16.0/20, 1 successors, FD is 26214400
via 192.168.1.1 (26214400/19660800), FastEthernet4/0
via 192.168.112.2 (26296320/19742720), FastEthernet1/0
via 192.168.122.2 (26296320/19742720), FastEthernet2/0

This presents an interesting challenge, as I don’t want my Stub networks traffic traversing the MPLS at all, however it has just a SLIGHTLY less Feasible Distance using the MPLS PE than using the directly connected Transit routers.

Lets see if we can get all 3 paths in use, but not equal cost, as I want my traffic taking the Transit Links before the MPLS, but I want the MPLS available if needed. The “Maximum-Paths” default for EIGRP is 4 paths by default, so we don’t need to change that.

So first I check out options on the Interface Fa4/0 pointed at the MPLS:

Back-Site1(config-router)#address-family ipv4 unicast autonomous-system 100
Back-Site1(config-router-af)#af-int fa4/0
Back-Site1(config-router-af-interface)#?
Address Family Interfaces configuration commands:
authentication authentication subcommands
bandwidth-percent Set percentage of bandwidth percentage limit
bfd Enable Bidirectional Forwarding Detection
dampening-change Percent interface metric must change to cause update
dampening-interval Time in seconds to check interface metrics
default Set a command to its defaults
exit-af-interface Exit from Address Family Interface configuration mode
hello-interval Configures hello interval
hold-time Configures hold time
next-hop-self Configures EIGRP next-hop-self
no Negate a command or set its defaults
passive-interface Suppress address updates on an interface
shutdown Disable Address-Family on interface
split-horizon Perform split horizon
summary-address Perform address summarization

Nothing, BW-percent only throttles EIGRP related traffic, not BW all together so its looking like some kind of PBR is going to be required here for each interface!

PBR to manipulate metric on interface failed, even BW changes on interfaces failed, however I forgot about “Offset-Lists” to save the day!

Quick demonstration of offset-list and how it allows for path selection!

I completely forgot this feature exists to tune Path Selection when multiple paths exist, and you don’t exactly want the Best Path to be the Preferred Path!

Create ACL for Summary-Address on Stub2

Back-Site1(config)#ip access-list standard TransitACL
Back-Site1(config-std-nacl)#permit 192.168.16.0 0.0.15.255

Apply Offset-List to Interfaces in EIGRP!

Back-Site1(config)#router eigrp BackSite1
Back-Site1(config-router)#address-family ipv4 unicast autonomous-system 100
Back-Site1(config-router-af)#top base
Back-Site1(config-router-af-topology)#?
Address Family Topology configuration commands:
auto-summary Enable automatic network number summarization
default Set a command to its defaults
default-information Control distribution of default information
default-metric Set metric of redistributed routes
distance Define an administrative distance
distribute-list Filter entries in eigrp updates
eigrp EIGRP specific commands
exit-af-topology Exit from Address Family Topology configuration mode
fast-reroute Configure Fast-Reroute
maximum-paths Forward packets over multiple paths
metric Modify metrics and parameters for advertisement
no Negate a command or set its defaults
offset-list Add or subtract offset from EIGRP metrics
redistribute Redistribute IPv4 routes from another routing protocol
snmp Modify snmp parameters
summary-metric Specify summary to apply metric/filtering
timers Adjust topology specific timers
traffic-share How to compute traffic share over alternate paths
variance Control load balancing variance

Back-Site1(config-router-af-topology)#offset-list ?
<0-99> Access list of networks to apply offset (0 selects all networks)
<1300-1999> Access list of networks to apply offset (extended range)
WORD Access-list name

Back-Site1(config-router-af-topology)#offset-list TransitACL ?
in Perform offset on incoming updates
out Perform offset on outgoing updates

Back-Site1(config-router-af-topology)#offset-list TransitACL in ?
<0-2147483647> Offset

Back-Site1(config-router-af-topology)#offset-list TransitACL in 600000 ?

Back-Site1(config-router-af-topology)#offset-list TransitACL in 600000 fa4/0 ?
<cr>

Back-Site1(config-router-af-topology)#offset-list TransitACL in 600000 fa4/0
Back-Site1(config-router-af-topology)#offset-list TransitACL in 300000 fa1/0
Back-Site1(config-router-af-topology)#
*Dec 21 04:42:12.431: %DUAL-5-NBRCHANGE: EIGRP-IPv4 100: Neighbor 192.168.1.1 (FastEthernet4/0) is resync: intf route configuration changed
Back-Site1(config-router-af-topology)#
*Dec 21 04:42:21.399: %DUAL-5-NBRCHANGE: EIGRP-IPv4 100: Neighbor 192.168.112.2 (FastEthernet1/0) is resync: intf route configuration changed
Back-Site1(config-router-af-topology)#

No idea what I just did, so lets check it out:

P 192.168.16.0/20, 1 successors, FD is 26214400
 via 192.168.122.2 (26296320/19742720), FastEthernet2/0
 via 192.168.112.2 (26596320/20042720), FastEthernet1/0
 via 192.168.1.1 (26814400/20260800), FastEthernet4/0

And to confirm from Stub1 to Stub2 networks:

Back1-Stub#trace 192.168.24.1
Type escape sequence to abort.
Tracing the route to 192.168.24.1
VRF info: (vrf in name/id, vrf out name/id)
1 192.168.10.1 76 msec 48 msec 40 msec
2 192.168.122.2 48 msec 48 msec 52 msec
3 192.168.221.1 44 msec 68 msec 48 msec
4 192.168.20.2 92 msec * 88 msec
Back1-Stub#

On Transit2 router currently being used:

Back-Transit2(config-if)#shut
Back-Transit2(config-if)#
*Dec 21 04:19:59.015: %DUAL-5-NBRCHANGE: EIGRP-IPv4 100: Neighbor 192.168.122.1 (FastEthernet2/0) is down: interface down
Back-Transit2(config-if)#

Again on Stub1:

Back1-Stub#trace 192.168.24.1
Type escape sequence to abort.
Tracing the route to 192.168.24.1
VRF info: (vrf in name/id, vrf out name/id)
1 192.168.10.1 28 msec 28 msec 48 msec
2 192.168.112.2 48 msec 48 msec 52 msec
3 192.168.211.1 72 msec 68 msec 68 msec
4 192.168.20.2 72 msec * 80 msec
Back1-Stub#

Shutdown Interface on Transit1:

Back-Transit1(config-if)#int fa1/0
Back-Transit1(config-if)#shut
Back-Transit1(config-if)#
*Dec 21 04:27:03.575: %DUAL-5-NBRCHANGE: EIGRP-IPv4 100: Neighbor 192.168.112.1 (FastEthernet1/0) is down: interface down

Once more on Stub1:

Back1-Stub#trace 192.168.24.1
Type escape sequence to abort.
Tracing the route to 192.168.24.1

VRF info: (vrf in name/id, vrf out name/id)
1 192.168.10.1 48 msec 48 msec 48 msec
2 192.168.1.1 48 msec 72 msec 48 msec
3 10.45.0.4 [MPLS: Labels 402/116 Exp 0] 808 msec 880 msec *
4 10.34.0.3 [MPLS: Labels 302/116 Exp 0] 156 msec 1592 msec 2112 msec
5 10.23.0.2 [MPLS: Labels 200/116 Exp 0] 692 msec 392 msec 1448 msec
6 192.168.2.1 [MPLS: Label 116 Exp 0] 2924 msec 504 msec 896 msec
7 192.168.2.2 96 msec 92 msec 92 msec
8 192.168.20.2 92 msec * 80 msec
Back1-Stub#

Success!!!

As seen there is no actual change in the Metric in the Topology table, except for which interface is the “Successor” due to the offset-list making the other 2 interfaces Feasible Successor Routes!

I’m going to keep the MPLS offset-list for these Stub networks, as I want those taking the Transit Links, and we can move along to the Feasibility Condition / Variance review.

BackSite2

Back-Site2(config)#ip access-list standard TransitACL
Back-Site2(config-std-nacl)#permit 192.168.8.0 0.0.7.255

Back-Site2(config-router-af-topology)#offset-list TransitACL in 200000 fa4/0
Back-Site2(config-router-af-topology)#
*Dec 21 04:34:27.555: %DUAL-5-NBRCHANGE: EIGRP-IPv4 100: Neighbor 192.168.2.1 (FastEthernet4/0) is resync: intf route configuration changed

Stub2

Back2-Stub#trace 192.168.14.1
Type escape sequence to abort.
Tracing the route to 192.168.14.1
VRF info: (vrf in name/id, vrf out name/id)
1 192.168.20.1 52 msec 48 msec 32 msec
2 192.168.211.2 32 msec 32 msec 36 msec
3 192.168.112.1 88 msec 72 msec 68 msec
4 192.168.10.2 72 msec * 56 msec
Back2-Stub#

Perfection!

Brief review of Feasibility Condition and Variance for Unequal Cost Load Balancing

If you are reading this post you probably have learned of this at some point, but to knock the rust off, within the Topology table like our route we obsessed over there:

P 192.168.16.0/20, 1 successors, FD is 26214400
 via 192.168.122.2 (26296320/19742720), FastEthernet2/0
 via 192.168.112.2 (26596320/20042720), FastEthernet1/0
 via 192.168.1.1 (26814400/20260800), FastEthernet4/0

The first number in the brackets in the Topology table is the “Feasible Distance” which is the total path distance, and the second value is the Reported (or sometimes called Advertised) distance – So you might see it as RD or AD when speaking EIGRP.

The Feasibility condition is that we can do Unequal Cost Load Balancing with all 3 of these routes, if the two Feasible Successors RD is lower than the Successor FD value using the variance command.

To demonstrate I’ll look at the Global IP Route table:

Back-Site1#sh ip route

Gateway of last resort is not set

D 192.168.0.0/24 [90/153600] via 192.168.122.2, 00:07:45, FastEthernet2/0
[90/153600] via 192.168.112.2, 00:07:45, FastEthernet1/0
192.168.1.0/24 is variably subnetted, 2 subnets, 2 masks
C 192.168.1.0/24 is directly connected, FastEthernet4/0
L 192.168.1.2/32 is directly connected, FastEthernet4/0
D 192.168.2.0/24 [90/153600] via 192.168.1.1, 00:05:51, FastEthernet4/0
D 192.168.8.0/21 [90/103040] via 192.168.10.2, 00:07:50, FastEthernet5/0
192.168.10.0/24 is variably subnetted, 2 subnets, 2 masks
C 192.168.10.0/24 is directly connected, FastEthernet5/0
L 192.168.10.1/32 is directly connected, FastEthernet5/0
D 192.168.13.0/24 [90/103040] via 192.168.10.2, 00:07:50, FastEthernet5/0
D 192.168.16.0/20 [90/205440] via 192.168.122.2, 00:05:51, FastEthernet2/0
[90/205440] via 192.168.112.2, 00:05:51, FastEthernet1/0
D 192.168.20.0/24 [90/204800] via 192.168.122.2, 00:05:51, FastEthernet2/0

We have our two Transit Links performing equal cost

In “Address-Family” config for EIGRP, Variance is in the Topology Base config:

Back-Site1(config-router-af-topology)#variance 2
Back-Site1(config-router-af-topology)#do sh ip route

Gateway of last resort is not set

D 192.168.16.0/20 [90/205440] via 192.168.122.2, 00:00:03, FastEthernet2/0
[90/205440] via 192.168.112.2, 00:00:03, FastEthernet1/0
[90/206362] via 192.168.1.1, 00:00:03, FastEthernet4/0

As seen here Variance has overridden our Offset-List here, I’d be interested to see if a PBR will as well, I assume so but only one way to find out!

Trying to add a Policy Based Routing on the Ingress Interface for Stub1

Back-Site1(config)#ip access-list standard PBR1
Back-Site1(config-std-nacl)#permit 192.168.16.0 0.0.15.255
Back-Site1(config-std-nacl)#exit
Back-Site1(config)#route-map MPLS1 permit 10
Back-Site1(config-route-map)#match ip add PBR1
Back-Site1(config-route-map)#set ip next-hop 192.168.1.1
Back-Site1(config-route-map)#exit
Back-Site1(config)#int fa5/0
Back-Site1(config-if)#ip policy route-map MPLS1
Back-Site1(config-if)#

Back1-Stub#trace 192.168.24.1
Type escape sequence to abort.
Tracing the route to 192.168.24.1
VRF info: (vrf in name/id, vrf out name/id)
1 192.168.10.1 56 msec 52 msec 48 msec
2 192.168.112.2 48 msec 56 msec 32 msec
3 192.168.211.1 64 msec 68 msec 72 msec
4 192.168.20.2 100 msec * 56 msec
Back1-Stub#

Amazingly it does not override the Offset-List!

Back1-Stub#ping 192.168.1.1
Type escape sequence to abort.
Sending 5, 100-byte ICMP Echos to 192.168.1.1, timeout is 2 seconds:
!!!!!
Success rate is 100 percent (5/5), round-trip min/avg/max = 44/51/72 ms
Back1-Stub#

That is very good to know for EIGRP, Variance overrides an Offset-List but a ip next-hop PBR does not override it, I’m sure I’ll go down plenty more rabbit holes like this while labbing to find every little quirk I can find!

I think that was a pretty productive EIGRP labbing session

That went right off the rails but that is honestly how I personally learn the most, and enjoy learning, so hopefully that is helpful for others reading this post 🙂

Later!

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out /  Change )

Twitter picture

You are commenting using your Twitter account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

Connecting to %s