EIGRP: Convergence refresher: Hello’s, Query’s, Active and SIA Route states, and limiting the scope of Query’s! FUN STUFF!

No diagram for this one, just wanted to post some refresher notes on EIGRP, as its been awhile since I’ve looked at some fundamentals, and I felt it’d be good to post some refresher on EIGRP network convergence and other things to think about for exam day that aren’t technical configurations but just protocol behaviors.

So this will be like my “in a can” posts without just bullet point after bullet point.

Basic Stuff

If two routes to the same network are learned from a redistributed route with a Feasible Distance of 500, and the other a neighbor with the network entered via the “network” command with an FD of 1000, which route is the Successor?

The FD 1000, because the Redistributed route by default will have an AD of 170, while the other will be 90 (and that is the first determining factor in choosing the best route).

Metric and Distance are used interchangeably because they are the same thing quite literally, a combination (by default) of the Delay and Bandwidth to a destination as reported by routers along the path.

CEF determines packet forward and load balancing – Not the protocol itself.

To solve equal cost load balancing, you can create at offset-list to slightly add weight to one of the routes, to make it a Feasible Successor.

In the Topology table, Successor routes are always the top line if there are also Feasible Successors underneath it as well.

Any routes not in the Topology table will not be used, even though you can see them with the “all-links” added to “sh ip eigrp top”, they do not meet the feasibility condition and therefor are not considered loop-free so they will not be used.

Convergence Stuff

If a route goes Active, a “Query” is sent to all EIGRP neighbors (Except Stubs).

Once this Query sending is triggered, the “Active Timer” starts (3 minutes by default) in which the router waits to get a “Reply” from a neighbor. The Active Timer can be changed in router configuration mode with the command “timers active x” where x is in minutes (or can be set to disabled).

After half the time of the Active Timer (90 seconds by default), a SIA-Query is sent to the upstream router to confirm it is Alive, if so it will send back an SIA-Reply. If another 90 seconds goes by the route is officially Stuck in Active.

A little router output from a debug from how it Queries, SIA-Queries, and finally declares a route SIA:

R1#show ip eigrp top
EIGRP-IPv4 Topology Table for AS(100)/ID(11.11.11.11)
Codes: P – Passive, A – Active, U – Update, Q – Query, R – Reply,
r – reply Status, s – sia Status

P 11.11.11.11/32, 1 successors, FD is 128256
via Connected, Loopback11
P 172.12.123.0/24, 1 successors, FD is 2169856
via Connected, Serial0/0/0
P 172.12.23.0/24, 1 successors, FD is 2173416
via 172.12.123.3 (2173416/29160), Serial0/0/0
P 2.2.2.2/32, 1 successors, FD is 2297856
via 172.12.123.2 (2297856/128256), Serial0/0/0
P 3.3.3.3/32, 1 successors, FD is 2297856
        via 172.12.123.3 (2297856/128256), Serial0/0/0

I did a “debug eigrp pack” on R1 and “shut” on R3’s NBMA link (172.12.123.3), and here is some of the notable output, I won’t drown the screen with all of it:

*May 12 00:26:38.283: EIGRP: Sending QUERY on Serial0/0/0 nbr 172.12.123.3, retry 5, RTO 5000 tid 0
*May 12 00:26:38.283:   AS 100, Flags 0x0:(NULL), Seq 21/12 interfaceQ 0/0 iidbQ un/rely 0/0 peerQ un/rely 0/1 serno 28-28
R1#
*May 12 00:26:43.283: EIGRP: Sending QUERY on Serial0/0/0 nbr 172.12.123.3, retry 6, RTO 5000 tid 0
*May 12 00:26:43.283:   AS 100, Flags 0x0:(NULL), Seq 21/12 interfaceQ 0/0 iidbQ un/rely 0/0 peerQ un/rely 0/1 serno 28-28
R1#
*May 12 00:26:48.283: EIGRP: Sending QUERY on Serial0/0/0 nbr 172.12.123.3, retry 7, RTO 5000 tid 0
*May 12 00:26:48.283:   AS 100, Flags 0x0:(NULL), Seq 21/12 interfaceQ 0/0 iidbQ un/rely 0/0 peerQ un/rely 0/1 serno 28-28
*May 12 00:26:48.295: EIGRP: Enqueueing SIAQUERY on Serial0/0/0 nbr 172.12.123.3 tid 0 iidbQ un/rely 0/1 peerQ un/rely 0/1 serno 30-30
*May 12 00:26:48.299: EIGRP: Requeued unicast on Serial0/0/0
R1#
*May 12 00:26:53.283: EIGRP: Sending QUERY on Serial0/0/0 nbr 172.12.123.3, retry 8, RTO 5000 tid 0
*May 12 00:26:53.283:   AS 100, Flags 0x0:(NULL), Seq 21/12 interfaceQ 0/0 iidbQ un/rely 0/0 peerQ un/rely 0/2 serno 28-28
R1#
*May 12 00:26:58.283: EIGRP: Sending QUERY on Serial0/0/0 nbr 172.12.123.3, retry 9, RTO 5000 tid 0
*May 12 00:26:58.283:   AS 100, Flags 0x0:(NULL), Seq 21/12 interfaceQ 0/0 iidbQ un/rely 0/0 peerQ un/rely 0/2 serno 28-28

I forgot to mention I set the Timer to 1 minute, so SIAQUERY shows 30/30, stating it has begun its final countdown *Queue the music*. Note Query’s are sent every 5 seconds.

So lets see the this route laid to rest via debug output:

*May 12 00:27:13.283: EIGRP: Sending QUERY on Serial0/0/0 nbr 172.12.123.3, retry 12, RTO 5000 tid 0
*May 12 00:27:13.283:   AS 100, Flags 0x0:(NULL), Seq 21/12 interfaceQ 0/0 iidbQ un/rely 0/0 peerQ un/rely 0/2 serno 28-28
R1#
*May 12 00:27:18.283: %DUAL-3-SIA: Route 11.11.11.11/32 stuck-in-active state in base 100.  Cleaning up
*May 12 00:27:18.283: %DUAL-5-NBRCHANGE: EIGRP-IPv4 100: Neighbor 172.12.123.3 (Serial0/0/0) is down: stuck in active
*May 12 00:27:18.283: EIGRP: Lost Version2 Peer (2 Peers, 1 V2 Peers)
*May 12 00:27:18.283: EIGRP: Enqueueing QUERY on Serial0/0/0 tid 0 iidbQ un/rely 0/1 serno 31-32
*May 12 00:27:18.287: EIGRP: Enqueueing QUERY on Serial0/0/0 nbr 172.12.123.2 tid 0 iidbQ un/rely 0/0 peerQ un/rely 0/0 serno 31-32
*May 12 00:27:18.287: EIGRP: Sending QUERY on Serial0/0/0 nbr 172.12.123.2 tid 0
*May 12 00:27:18.287:   AS 100, Flags 0x0:(NULL), Seq 24/13 interfaceQ 0/0 iidbQ un/rely 0/0 peerQ un/rely 0/1 serno 31-32
*May 12 00:27:18.287: EIGRP: Build goodbye tlv for 172.12.123.3

So what does the Topology table look like now:

R1#sh ip eigrp top all-links
EIGRP-IPv4 Topology Table for AS(100)/ID(11.11.11.11)
Codes: P – Passive, A – Active, U – Update, Q – Query, R – Reply,
       r – reply Status, s – sia Status

P 172.12.123.0/24, 1 successors, FD is 2169856, serno 3
        via Connected, Serial0/0/0
P 2.2.2.2/32, 1 successors, FD is 2297856, serno 12
        via 172.12.123.2 (2297856/128256), Serial0/0/0

R1#

It’s gone like that last line of debug output said, bye bye to 172.12.123.3. I believe if I manipulated the router to respond to the SIAQUERY it’d still be in the Topology table with and s for SIA, but I’m not getting too elaborate here.

So with a 1 minute Active Timer, 1 minute elapses and that route is outta here, however the route will remain in the IP route table during that 1 minute and traffic will still be routed to this “Active” EIGRP route.

2 way to limit the scope of Query’s sent across the Network (And some Stub Stuff)

Stub Routers, and Route Summarization.

Stub routers set a flag in their Hello packet (that can be viewed in wireshark analysis) that indicates its a stub router, so the neighbor will not forward Query’s from other routers or its own to this Stub Router.

Stub Routers do not advertise routes learned from one neighbor to other neighbors, and in fact only advertise connected or Summary routes.

To configure a stub router, in router configuration mode, “eigrp stub”

There are some modifiers that can be added to the end, as you can redistribute into a stub network from other IGP’s or connected routes, but it must be done with the “eigrp stub redistribute …” command.

In fact, here are those modifier, bare in mind by default the stub network already does advertise static and summary routes:

R1(config-router)#eigrp stub ?
  connected      Do advertise connected routes
  leak-map       Allow dynamic prefixes based on the leak-map
  receive-only   Set receive only neighbor
  redistributed  Do advertise redistributed routes
  static         Do advertise static routes
  summary        Do advertise summary routes
  <cr>

“receive-only” is a rather profound statement, as it negates any kind of advertising of routes at all, it will ONLY receive updates with this modifier configured.

Summarization stops Query’s almost immediately in their tracks (at the next hop router), because a Query is looking for a specific prefix/length, while a Summary Route being advertised is a collection or Summary of those specific Prefixes.

So routers up stream of the Summary Route will not even forward the Query, but rather Reply back that it does not have the Prefix/Length and knows nothing of it, because it has the Summarized route – So Query’s will only make it one hop beyond a router summarizing it’s EIGRP routes (or at least the ones being Query’d).

I won’t get into route summarization for EIGRP here, I just wanted to get some review in the air, as exam date grows closer its time to cover all the bases. That is all for now!

One cool thing I did notice reviewing the debug output – The retry # of the Query sent matched exactly what we’d expect for 60 seconds as the Active Timer, as they are sent every 5 seconds, and 5 x 12 = 60. So after Retry 12 you see the demolition of our neighbor 172.12.123.3 – I thought this was pretty cool you can tell the Active Timer by how many Retries it takes to demolish the neighbor adjacency.

Again, that is all, until next time (probably tonight)!

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 )

Facebook photo

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

Connecting to %s