I want to tell you a little more about the EIGRP query process and the stuck-in-active problem. This will be helpful in understanding why we use the EIGRP stub feature.
EIGRP is designed for large enterprise networks but having one big EIGRP network (5000+ prefixes and many hops) can lead to some problems:
- Lots of EIGRP prefixes equal a large topology table and routing table.
- Calculating the successor router will take longer if you have many EIGRP neighbors and different paths.
- If there are many backup paths, EIGRP will have to see if there are one or more feasible successors. This will take longer.
- More information means our EIGRP routers have to work harder to process everything.
- When EIGRP loses a route, and there is no feasible successor the route will go from passive to active, and the router starts sending queries to its neighbors.
- EIGRP sends queries on all interfaces except the interface of the successor.
Let me describe the EIGRP query process in detail for you:
In the topology above, we are running EIGRP on all of the routers. R1 has a link failure and, as a result, has lost its successor route to a particular network on the left side. There is no feasible successor so the route is going from passive to active, and we will send a query to R2 and R3.
There are two things that can happen at this moment:
- R2 or R3 has information about this particular route and will send information about it to R1. The query process is now over.
- R2 or R3 don’t know anything about this route and will send a query themselves to their neighbors: R2 to R4 and R5. R3 to R6 and R7. R2 or R3 will not reply to R1 until they hear a response from all their neighbors.
In our topology, nobody has a clue which network R1 is looking for. They will forward their queries to their own neighbors. The red arrows indicate the query packet.
There are no neighbors behind R4, R5, R6, or R7. They will send a reply to R2 and 3 to let them know they don’t know the answer. R2 and 3 will send a reply to R1 to tell them they are sorry, but this is it. That’s a lot of packets for just one route that was lost, right?
Let’s make things even more interesting. Look at my picture above, and you’ll see that the reply from R2 never makes it back to R1. EIGRP is a reliable protocol and for each query, a router sends to its neighbors, it must get a reply in response within 3 minutes. If the router does not receive a reply to ALL its outstanding queries it will put the route in SIA (Stuck in Active) state and will kill the neighbor adjacency. By dropping the neighbor adjacency you will lose all the routes you learned from this neighbor, which means the router will start sending queries for all those routes as well. Not a pretty sight, right?
How is it possible that a reply never makes it back?