Scalable EIGRP Designs – Convergence Optimizations

This post covers in detail the characteristics of the EIGRP routing protocol such as convergence procedure, timer and query domain, and route selection.

Contents

  • Topology
  • EIGRP Convergence Process Overview
  • Feasible Successors and Feasibility Condition
  • Query Domain and Query Propagation
  • Features to improve EIGRP Convergence Time
    • Feasible Successor
    • Loop Free Alternate Fast Reroute (LFA FRR)
    • Network Summarization
    • Route filtering
    • Stub Router
    • Different EIGRP AS numbers
  • References

Topology

Figure 1

EIGRP Convergence Process Overview

EIGRP Queries are sent when a route goes down and no Feasible Successor routes exist. The router(s) that detects the loss declare the route as Active and sends Query messages to its neighbours, which forward the Query messages to its neighbours and so on, in order to find and alternative path. Convergence is a function of the Query Domain size.

 A router sends a Reply to a Query when:

  • An exact match for a lost route is found: i.e. “I have an alternative path for the destination 10.20.30.0/24 and this is the metric”.
  • There is a non-exact match for the lost route: i.e. “I don’t have an alternative path for the exact destination 10.20.30.0/24, I only have a summary (i.e. 10.20.0.0/16) or a default route (i.e. 0.0.0/0).” Automatically, a Reply with an infinite metric for 10.20.30.0/24 is sent.
  • The router never knew about the route: i.e. “I do not have a route to 10.20.30/24 (%Prefix not found)”. A Reply with an infinite metric for 10.20.30.0/24 is sent.

For these three cases the router does not pass the Query message and the Query propagation stops.

This is only an overall view of the EIGRP Convergence process and in the following sections we are going to go deeper into some of the terms to understand better what has been described in the paragraphs above.

Successors and Feasibility Condition

Feasible Successors are EIGRP backup routes for a destination. In order to become a Feasible Successor the Feasibility Condition must be met:  “the reported distance of a route must be lower than the feasible distance (metric) of the current successor route. “

From R3’s point of view we are going to analyze the routing decision to go to R8’s loopback, 172.16.1.8/32. R3 has two possible paths, through R1 or through R2, and it is currently using R2 as next hop to the destination with a metric of 437760.

R3#show ip route 172.16.1.8
Routing entry for 172.16.1.8/32
  Known via “eigrp 200”, distance 90, metric 437760, type internal
  Redistributing via eigrp 200
  Last update from 10.1.23.2 on FastEthernet1/0, 00:01:35 ago
  Routing Descriptor Blocks:
  * 10.1.23.2, from 10.1.23.2, 00:01:35 ago, via FastEthernet1/0
      Route metric is 437760, traffic share count is 1
      Total delay is 7100 microseconds, minimum bandwidth is 10000 Kbit
      Reliability 255/255, minimum MTU 1500 bytes
      Loading 1/255, Hops 3

However, if we query the EIGRP database for the prefix 172.16.1.8/32 we can see that de second path through R1 is also available. Because the two paths have different metrics, R3 is not doing Equal Cost Multi Path (ECMP) routing. The metric through R2 is lower than the metric through R1 (437760<486400) so R2 is chosen as the Successor and it is preferred to reach the final destination.

R3#show ip eigrp topology 172.16.1.8/32
IP-EIGRP (AS 200): Topology entry for 172.16.1.8/32
  State is Passive, Query origin flag is 1, 1 Successor(s), FD is 437760
  Routing Descriptor Blocks:
  10.1.23.2 (FastEthernet1/0), from 10.1.23.2, Send flag is 0x0
      Composite metric is (437760/435200), Route is Internal
      Vector metric:
        Minimum bandwidth is 10000 Kbit
        Total delay is 7100 microseconds
        Reliability is 255/255
        Load is 1/255
        Minimum MTU is 1500
        Hop count is 3
  10.1.13.1 (FastEthernet0/0), from 10.1.13.1, Send flag is 0x0
      Composite metric is (486400/460800), Route is Internal
      Vector metric:
        Minimum bandwidth is 10000 Kbit
        Total delay is 9000 microseconds
        Reliability is 255/255
        Load is 1/255
        Minimum MTU is 1500
        Hop count is 3

Now the question is whether or not the path through R1 is a possible Feasible Successor to avoid the route to become Active if the path through R2 becomes unavailable to reach R8’s loopback. EIGRP desired behaviour is routes to be Passive (stable and converged) versus Active (actively looking for a path, not converged).

The key point to remember is if there are no Feasible Successors (backup routes), when a route becomes unreachable and goes into Active state a Query/Reply process is required and consequently the Convergence Time increases.

Feasibility Condition says:

R1’s reported distance < R3’s metric through R2 (Successor)

460800 < 437760

The condition is not met so the route becomes Active until the process of convergence is completed.

Query Domain and Query Propagation

Continuing with our example, R3 declares the route 172.16.1.8/32 (final destination) Active if, for example, R3’s connected link to R2 goes down. This is because the Feasibility Condition was not met.

Figure 2 shows this scenario where R3’s Fa1/0 goes down and the convergence process, Query/Reply packets, is triggered. Each router waits for Replies to its Queries before sending a Reply back to the upstream router who send the Query in the first place. Once the process is completed and an alternative path has been found the route becomes Passive.

Figure 2

The Convergence Time depends on the Query domain. The size of the Query domain represents all routers that receive a Query if a route is declared lost. If the number of routers in the Query domain is high, it directly implies higher Convergence Times. On the other hand, if we are able to reduce the Query domain size establishing network boundaries for Query messages that are capable to respond quickly to a Query with a Reply, the Convergence Times decrease. We will see in following sections some features to achieve this idea.

Then, we enable EIGRP debug on R3 to show the Query/Reply propagation process.

R3#debug eigrp packets query reply
EIGRP Packets debugging is on
    (QUERY, REPLY)

We simulate that R3’s Fa1/0 goes down shutting down the interface.

R3(config)#interface fa1/0
R3(config-if)#shut

We can see Queries sent on Fa0/0 and Fa0/1 interfaces as well as the Replies coming from R1 and R5.

*Mar  1 00:40:00.571: %DUAL-5-NBRCHANGE: IP-EIGRP(0) 200: Neighbor 10.1.23.2 (FastEthernet1/0) is down: interface down
*Mar  1 00:40:00.583: EIGRP: Enqueueing QUERY on FastEthernet0/1 iidbQ un/rely 0/1 serno 133-139
*Mar  1 00:40:00.583: EIGRP: Enqueueing QUERY on FastEthernet0/0 iidbQ un/rely 0/1 serno 133-139
*Mar  1 00:40:00.591: EIGRP: Enqueueing QUERY on FastEthernet0/1 nbr 10.1.35.5 iidbQ un/rely 0/0 peerQ un/rely 0/0 serno 133-139
*Mar  1 00:40:00.591: EIGRP: Sending QUERY on FastEthernet0/1
*Mar  1 00:40:00.595:   AS 200, Flags 0x0, Seq 168/0 idbQ 0/0 iidbQ un/rely 0/0 serno 133-139
*Mar  1 00:40:00.595: EIGRP: Enqueueing QUERY on FastEthernet0/0 nbr 10.1.13.1 iidbQ un/rely 0/0 peerQ un/rely 0/0 serno 133-139
*Mar  1 00:40:00.595: EIGRP: Sending QUERY on FastEthernet0/0
R3(config-if)#
*Mar  1 00:40:00.595:   AS 200, Flags 0x0, Seq 169/0 idbQ 0/0 iidbQ un/rely 0/0 serno 133-139
*Mar  1 00:40:00.831: EIGRP: Received REPLY on FastEthernet0/1 nbr 10.1.35.5
*Mar  1 00:40:00.831:   AS 200, Flags 0x0, Seq 85/171 idbQ 0/0 iidbQ un/rely 0/0 peerQ un/rely 0/0
*Mar  1 00:40:01.475: EIGRP: Received REPLY on FastEthernet0/0 nbr 10.1.13.1
*Mar  1 00:40:01.475:   AS 200, Flags 0x0, Seq 236/170 idbQ 0/0 iidbQ un/rely 0/0 peerQ un/rely 0/0
*Mar  1 00:40:01.531: EIGRP: Received REPLY on FastEthernet0/0 nbr 10.1.13.1
*Mar  1 00:40:01.531:   AS 200, Flags 0x0, Seq 242/173 idbQ 0/0 iidbQ un/rely 0/0 peerQ un/rely 0/0

A capture done on R3’s Fa0/0 shows that R3 generates a Query message to 224.0.0.10 (EIGRP Multicast Address) to ask about an alternative path to the destination 172.16.1.8/32.

Figure 3

R1 sends a Reply to R3’s unicast address, 10.1.13.3, saying that there is an alternative path and including the new metric details. Now the final destination becomes Passive which is the desirable state.

Figure 4

The new route is installed on R3’s Routing Table.

R3#show ip route 172.16.1.8
Routing entry for 172.16.1.8/32
  Known via “eigrp 200”, distance 90, metric 486400, type internal
  Redistributing via eigrp 200
  Last update from 10.1.13.1 on FastEthernet0/0, 00:00:34 ago
  Routing Descriptor Blocks:
  * 10.1.13.1, from 10.1.13.1, 00:00:34 ago, via FastEthernet0/0
      Route metric is 486400, traffic share count is 1
      Total delay is 9000 microseconds, minimum bandwidth is 10000 Kbit
      Reliability 255/255, minimum MTU 1500 bytes
      Loading 1/255, Hops 3

Features to improve EIGRP Convergence Time

EIGRP Aggressive Timers (Fast Hellos) do not provide sub-second failure detection. Timers can be tuned to a minimum of 1 second however this is not recommended as it can be very CPU intensive and lead to spikes in processing/memory requirements. Bidirectional Forwarding Detection (BFD) is a preferred alternative in this case.

EIGRP Scalability features can be classified for:

  • Paths with Feasible Successors: Convergence Time is in the milliseconds. The existence of Feasible Successors is dependent on the network design; consequently a good design is the key to fast convergence in an EIGRP network. Some features are:
    • Tune/engineer the network to make Feasible Successors available.
    • Loop Free Alternate Fast Reroute (LFA FRR).
  • Paths without Feasible Successors, convergence time is dependent on the number of routers that have to handle and reply to the Query (Query domain). Some techniques make Queries be blocked one hop beyond:
    • Network Summarization.
    • Route Filtering.
    • Stub Router.
    • Different EIGRP AS numbers

Feasible Successor

Continuing with our example, as the network states right now, R3 sees two paths to R8’s loopback (172.16.1.8/32): through R1 and through R2. The path through R2 is chosen over R1’s path due to lower metric and R1 is not selected as a Feasible Successor because the Feasibility Condition is not met (460800 < 437760). Therefore, as we explained in previous sections, the route becomes Active and the Query Propagation mechanism is triggered.

R3#show ip eigrp topology 172.16.1.8/32
IP-EIGRP (AS 200): Topology entry for 172.16.1.8/32
  State is Passive, Query origin flag is 1, 1 Successor(s), FD is 437760
  Routing Descriptor Blocks:
  10.1.23.2 (FastEthernet1/0), from 10.1.23.2, Send flag is 0x0
      Composite metric is (437760/435200), Route is Internal
      Vector metric:
        Minimum bandwidth is 10000 Kbit
        Total delay is 7100 microseconds
        Reliability is 255/255
        Load is 1/255
        Minimum MTU is 1500
        Hop count is 3
  10.1.13.1 (FastEthernet0/0), from 10.1.13.1, Send flag is 0x0
      Composite metric is (486400/460800), Route is Internal
      Vector metric:
        Minimum bandwidth is 10000 Kbit
        Total delay is 9000 microseconds
        Reliability is 255/255
        Load is 1/255
        Minimum MTU is 1500
        Hop count is 3

The idea is to modify the EIGRP metric in order to comply with the Feasibility Condition and avoid going into Active state. We would have to increase the metric through R2 to get a higher value than the reported metric from R1 assuming we still want R2 to be the primary path.

R1’s reported distance < R3’s metric through R2 (Successor)

 460800 < R3’s metric through R2 (Successor)

In order to modify the EIGRP metric we are going to modify the delay as it is the preferred method of influencing path selection. Any change to the Bandwidth can have an impact on other Routing Protocol decisions or Quality of Service (QoS) preferences. The delay value chosen is arbitrary as long as the Feasibility Condition is met; I have chosen 110.

R3(config)#interface fa1/0
R3(config-if)#delay 110

R3#show ip eigrp topology 172.16.1.8/32
IP-EIGRP (AS 200): Topology entry for 172.16.1.8/32
  State is Passive, Query origin flag is 1, 1 Successor(s), FD is 463360
  Routing Descriptor Blocks:
  10.1.23.2 (FastEthernet1/0), from 10.1.23.2, Send flag is 0x0
      Composite metric is (463360/435200), Route is Internal
      Vector metric:
        Minimum bandwidth is 10000 Kbit
        Total delay is 8100 microseconds
        Reliability is 255/255
        Load is 1/255
        Minimum MTU is 1500
        Hop count is 3
  10.1.13.1 (FastEthernet0/0), from 10.1.13.1, Send flag is 0x0
      Composite metric is (486400/460800), Route is Internal
      Vector metric:
        Minimum bandwidth is 10000 Kbit
        Total delay is 9000 microseconds
        Reliability is 255/255
        Load is 1/255
        Minimum MTU is 1500
        Hop count is 3

Now the Feasibility Condition is met:

R1’s reported distance < R3’s metric through R2 (Successor)

 460800 < 463360

If we repeat the same test that we did in the Query Domain and Query Propagation section and shut down R3’s link to R2 we can see the route to 172.16.1.8/32 does not become Active anymore (Queries are not sent).

R3(config)#interface fa1/0
R3(config-if)#shut

The capture on R3’s Fa0/0 shows that the Query Packet does not include the prefix 172.16.1.8/32.

Figure 5

The capture on R3’s Fa0/1 shows that the Query Packet does not include the prefix 172.16.1.8/32.

Figure 6

R3 immediately starts using the Feasible Successor (R1) achieving sub-second convergence time.

R3#show ip route 172.16.1.8
Routing entry for 172.16.1.8/32
  Known via “eigrp 200”, distance 90, metric 486400, type internal
  Redistributing via eigrp 200
  Last update from 10.1.13.1 on FastEthernet0/0, 00:01:39 ago
  Routing Descriptor Blocks:
  * 10.1.13.1, from 10.1.13.1, 00:01:39 ago, via FastEthernet0/0
      Route metric is 486400, traffic share count is 1
      Total delay is 9000 microseconds, minimum bandwidth is 10000 Kbit
      Reliability 255/255, minimum MTU 1500 bytes
      Loading 1/255, Hops 3

The whole idea is to avoid the route to go Active and start the Convergence process (Queries/Replies). Being proactive we can have Feasible Successors already computed and ready to be used in case of a route loss.

Loop Free Alternate Fast Reroute (LFA FRR)

FRR is also a proactive mechanism that reduces traffic disruption to 10s of milliseconds in the event of link or node failure.  FRR uses existing Feasible Successors.

When a Successor fails, the Feasible Successor must be downloaded from the EIGRP topology table to the Routing Information Base (RIB) and from the RIB to the Forwarding Information Base (FIB). FRR pre-download Feasible Successors saving time in the Convergence process.

It is automatically enabled on all EIGRP interfaces covered by network statement although not all prefixes may have a Feasible Successor. Route-map is also available to enable FRR per prefix.

Up to this point, R3 already has a Feasible Successor through R1 for the specific route 172.16.1.8/32 and it is using R2 as primary path.

R3#show ip eigrp topology 172.16.1.8/32
IP-EIGRP (AS 200): Topology entry for 172.16.1.8/32
  State is Passive, Query origin flag is 1, 1 Successor(s), FD is 463360
  Routing Descriptor Blocks:
  10.1.23.2 (FastEthernet1/0), from 10.1.23.2, Send flag is 0x0
      Composite metric is (463360/435200), Route is Internal
      Vector metric:
        Minimum bandwidth is 10000 Kbit
        Total delay is 8100 microseconds
        Reliability is 255/255
        Load is 1/255
        Minimum MTU is 1500
        Hop count is 3
  10.1.13.1 (FastEthernet0/0), from 10.1.13.1, Send flag is 0x0
      Composite metric is (486400/460800), Route is Internal
      Vector metric:
        Minimum bandwidth is 10000 Kbit
        Total delay is 9000 microseconds
        Reliability is 255/255
        Load is 1/255
        Minimum MTU is 1500
        Hop count is 3

R3#show ip route 172.16.1.8
Routing entry for 172.16.1.8/32
  Known via “eigrp 200”, distance 90, metric 463360, type internal
  Redistributing via eigrp 200
  Last update from 10.1.23.2 on FastEthernet1/0, 01:38:49 ago
  Routing Descriptor Blocks:
  * 10.1.23.2, from 10.1.23.2, 01:38:49 ago, via FastEthernet1/0
      Route metric is 463360, traffic share count is 1
      Total delay is 8100 microseconds, minimum bandwidth is 10000 Kbit
      Reliability 255/255, minimum MTU 1500 bytes
      Loading 1/255, Hops 3

We now enable FRR on R3 for all routes. FRR is only available in EIGRP Named mode so first of all we run the command “eigrp upgrade-cli”  to automatically upgrade our configuration from EIGRP Classic to Named mode.

R3(config)#router eigrp 200
R3(config-router)#eigrp upgrade-cli HQR3# show run | sec eigrp
router eigrp HQ
 !
 address-family ipv4 unicast autonomous-system 200
 !
 topology base
 exit-af-topology
 network 10.1.0.0 0.0.255.255
 network 172.16.1.0 0.0.0.255
 eigrp router-id 3.3.3.3
 exit-address-family

Once the conversion is done, we can finally enable FRR on R3.

R3(config)# router eigrp HQ
R3(config-router)# address-family ipv4 unicast autonomous-system 200
R3(config-router-af)# topology base
R3(config-router-af-topology)#fast-reroute per-prefix all

R3’s routing information to 172.16.1.8/32 shows that the Repair Path (Feasible Successor) has been installed.

R3#show ip route 172.16.1.8
Routing entry for 172.16.1.8/32
  Known via “eigrp 200”, distance 90, metric 463360, type internal
  Redistributing via eigrp 200
  Last update from 10.1.23.2 on FastEthernet1/0, 01:38:49 ago
  Routing Descriptor Blocks:
  * 10.1.23.2, from 10.1.23.2, 01:38:49 ago, via FastEthernet1/0
      Route metric is 463360, traffic share count is 1
      Total delay is 8100 microseconds, minimum bandwidth is 10000 Kbit
      Reliability 255/255, minimum MTU 1500 bytes
      Loading 1/255, Hops 3
      Repair Path: 10.1.13.1, via FastEthernet0.0

Network Summarization

EIGRP supports two types of summarization: auto-summarization and manual summarization. A big design advantage over Link State Protocols such as OSPF or IS-IS is that summarization can be enforce anywhere in the network.

Query propagation stops once the queried router cannot find the exact match for the requested subnet in its topology table but still has a route through a less specific match (for example a summary or a default route). According to this behaviour, summarization can help breaking the Query domain.

In the following example, R1 and R2 are configured to advertise the summary address 172.16.1.0/28 towards R3 and R4.

Figure 7

R1(config)#interface fa0/0
R1(config-if)#ip summary-address eigrp 200 172.16.1.0 255.255.255.240

R1(config)#interface fa1/0
R1(config-if)#ip summary-address eigrp 200 172.16.1.0 255.255.255.240

R2(config)#interface fa0/0
R2(config-if)#ip summary-address eigrp 200 172.16.1.0 255.255.255.240

R2(config)#interface fa1/0
R2(config-if)#ip summary-address eigrp 200 172.16.1.0 255.255.255.240

Although R1’s/R2’s routing table shows the more specific prefixes (172.16.1.7/32, 172.16.1.8/32) and the summary route (172.16.1.0/28), R3 only knows about the summary; the more specific prefixes are no longer advertised by R1 and R2.

R1(config-if)#do show ip route eigrp
     172.16.0.0/16 is variably subnetted, 8 subnets, 2 masks
D       172.16.1.8/32 [90/460800] via 10.1.127.7, 03:42:38, FastEthernet0/1
D       172.16.1.5/32 [90/435200] via 10.1.13.3, 00:26:40, FastEthernet0/0
D       172.16.1.4/32 [90/156160] via 10.1.14.4, 00:14:06, FastEthernet1/0
D       172.16.1.7/32 [90/435200] via 10.1.127.7, 03:42:38, FastEthernet0/1
D       172.16.1.6/32 [90/460800] via 10.1.13.3, 00:04:42, FastEthernet0/0
D       172.16.1.0/28 is a summary, 00:14:06, Null0
D       172.16.1.3/32 [90/179200] via 10.1.13.3, 00:26:40, FastEthernet0/0
     10.0.0.0/24 is subnetted, 8 subnets
D       10.1.24.0 [90/53760] via 10.1.14.4, 04:00:02, FastEthernet1/0
D       10.1.23.0 [90/56320] via 10.1.14.4, 03:45:57, FastEthernet1/0
D       10.1.35.0 [90/307200] via 10.1.13.3, 03:45:55, FastEthernet0/0
D       10.1.56.0 [90/332800] via 10.1.13.3, 03:45:55, FastEthernet0/0
D       10.1.78.0 [90/332800] via 10.1.127.7, 03:42:38, FastEthernet0/1
R3#show ip route eigrp
     172.16.0.0/16 is variably subnetted, 4 subnets, 2 masks
D       172.16.1.5/32 [90/409600] via 10.1.35.5, 03:44:59, FastEthernet0/1
D       172.16.1.6/32 [90/435200] via 10.1.35.5, 00:03:47, FastEthernet0/1
D       172.16.1.0/28 [90/179200] via 10.1.13.1, 00:25:53, FastEthernet0/0
     10.0.0.0/24 is subnetted, 8 subnets
D       10.1.14.0 [90/53760] via 10.1.13.1, 03:45:00, FastEthernet0/0
D       10.1.24.0 [90/79360] via 10.1.13.1, 03:41:43, FastEthernet0/0
D       10.1.23.0 [90/81920] via 10.1.13.1, 03:41:43, FastEthernet0/0
D       10.1.56.0 [90/307200] via 10.1.35.5, 03:44:59, FastEthernet0/1
D       10.1.78.0 [90/358400] via 10.1.13.1, 03:41:43, FastEthernet0/0
D       10.1.127.0 [90/332800] via 10.1.13.1, 03:41:43, FastEthernet0/0

In order to do our testing, we simulate that R7 looses reachibility to its loopback (Loopback7). Figure 8 illustrates the Convergence process. R7 sends a Query on its Fa0/0 and Fa0/1. R1 and R2 forward the Query to R3 and R4. R3 does not have a exact match for 172.16.1.7/32 instead it has a shorter match 172.16.1.0/28, the summary. Therefore, R3 answers with a Reply and breaks the Query domain not forwarding the Query to R5.

Figure 8

R7(config)#interface lo7
R7(config-if)#shut
R3#debug eigrp packets query reply
EIGRP Packets debugging is on
    (QUERY, REPLY)
R3#
*Mar  1 07:13:29.278: EIGRP: Received QUERY on FastEthernet0/0 nbr 10.1.13.1
*Mar  1 07:13:29.278:   AS 200, Flags 0x0, Seq 442/0 idbQ 0/0 iidbQ un/rely 0/0 peerQ un/rely 0/0
*Mar  1 07:13:29.294: EIGRP: Enqueueing REPLY on FastEthernet0/0 nbr 10.1.13.1 iidbQ un/rely 0/1 peerQ un/rely 0/0 serno 375-375
*Mar  1 07:13:29.302: EIGRP: Sending REPLY on FastEthernet0/0 nbr 10.1.13.1
*Mar  1 07:13:29.302:   AS 200, Flags 0x0, Seq 365/442 idbQ 0/0 iidbQ un/rely 0/0 peerQ un/rely 0/1 serno 375-375
R5#debug eigrp packets query reply
EIGRP Packets debugging is on
    (QUERY, REPLY)

A capture done in the link between R7 and R1 shows the Query reaches R1’s Fa0/1.

Figure 9

The Query is passed to R3 from R1:

Figure 10

R3 sends a Reply back to R1 saying that 172.16.1.7/32 has an infinite metric (it is unreachable):

Figure 11

R3 does not forward the Query to R5. R3 becomes a boundary of the Query domain thanks to Summarization.

Figure 12

It is important to understand that a default route (0.0.0.0/0) would have had exactly the same result than using a summary route. The choice of using one option versus another really depends on the final network design.

The final goal is that having a less specific match for the prefix (172.16.1.0/28) versus having the exact match for the prefix (172.16.1.7/32)avoids passing forward the Query packet. We know there is no alternative path on the network but R7 to get to 172.16.1.7/32, the Convergence process is actually unnecessary in this scenario. However, this is how EIGRP behaves so we can always engineer the network with Summarization or Default Routes in order to improve the Convergence Time.

Route Filtering

As we mentioned at the beginning of this post, not having a route for a prefix makes the queried router to immediately respond to a Query with a Reply and stop the Query propagation. Therefore if 172.16.1.7/32 is filtered by R3, R5 will not be queried about this prefix because R3 (and R5 implicitly) never knew about it in the first place (the route is filtered).

Figure 13

R3(config)#ip prefix-list DENY_LOOPBACK7 deny 172.16.1.7/32
R3(config)#ip prefix-list DENY_LOOPBACK7 permit 0.0.0.0/0 le 32

R3(config)#router eigrp 200
R3(config-router)#distribute-list prefix DENY_LOOPBACK7 in

R3#show ip eigrp topology 172.16.1.7/32
% IP-EIGRP (AS 200): Route not in topology table

R3#show ip route eigrp
     172.16.0.0/32 is subnetted, 7 subnets
D       172.16.1.8 [90/486400] via 10.1.13.1, 00:04:18, FastEthernet0/0
D       172.16.1.5 [90/409600] via 10.1.35.5, 00:05:00, FastEthernet0/1
D       172.16.1.4 [90/181760] via 10.1.13.1, 00:04:18, FastEthernet0/0
D       172.16.1.6 [90/435200] via 10.1.35.5, 00:04:54, FastEthernet0/1
D       172.16.1.1 [90/179200] via 10.1.13.1, 00:04:18, FastEthernet0/0
D       172.16.1.2 [90/207360] via 10.1.13.1, 00:03:20, FastEthernet0/0
     10.0.0.0/24 is subnetted, 8 subnets
D       10.1.14.0 [90/53760] via 10.1.13.1, 00:05:09, FastEthernet0/0
D       10.1.24.0 [90/79360] via 10.1.13.1, 00:05:03, FastEthernet0/0
D       10.1.23.0 [90/81920] via 10.1.13.1, 00:04:53, FastEthernet0/0
D       10.1.56.0 [90/307200] via 10.1.35.5, 00:05:00, FastEthernet0/1
D       10.1.78.0 [90/358400] via 10.1.13.1, 00:05:01, FastEthernet0/0
D       10.1.127.0 [90/332800] via 10.1.13.1, 00:05:09, FastEthernet0/0

We repeat the previous test: shutdown R7’s Loopback.

R7(config)#interface lo7
R7(config-if)#shut

R3 receives the Query from R1 and R2 but it does not query R5 for 172.16.1.7/32.

R3#debug eigrp packets reply query
EIGRP Packets debugging is on
    (QUERY, REPLY)
R3#
*Mar  1 00:45:32.739: EIGRP: Received QUERY on FastEthernet0/0 nbr 10.1.13.1
*Mar  1 00:45:32.743:   AS 200, Flags 0x0, Seq 165/0 idbQ 0/0 iidbQ un/rely 0/0 peerQ un/rely 0/0
*Mar  1 00:45:32.743: EIGRP: Received QUERY on FastEthernet1/0 nbr 10.1.23.2
*Mar  1 00:45:32.747:   AS 200, Flags 0x0, Seq 96/0 idbQ 0/0 iidbQ un/rely 0/0 peerQ un/rely 0/0
*Mar  1 00:45:32.755: EIGRP: Enqueueing REPLY on FastEthernet0/0 nbr 10.1.13.1 iidbQ un/rely 0/1 peerQ un/rely 0/0 serno 74-74
*Mar  1 00:45:32.759: EIGRP: Enqueueing REPLY on FastEthernet1/0 nbr 10.1.23.2 iidbQ un/rely 0/1 peerQ un/rely 0/0 serno 75-75
*Mar  1 00:45:32.763: EIGRP: Sending REPLY on FastEthernet0/0 nbr 10.1.13.1
R3#
*Mar  1 00:45:32.763:   AS 200, Flags 0x0, Seq 97/165 idbQ 0/0 iidbQ un/rely 0/0 peerQ un/rely 0/1 serno 74-74
*Mar  1 00:45:32.767: EIGRP: Sending REPLY on FastEthernet1/0 nbr 10.1.23.2
*Mar  1 00:45:32.767:   AS 200, Flags 0x0, Seq 98/96 idbQ 0/0 iidbQ un/rely 0/0 peerQ un/rely 0/1 serno 75-75
R5#debug eigrp packets reply query
EIGRP Packets debugging is on
    (QUERY, REPLY)

Figure 14 shows a capture done in R3’s Fa0/0. We can verify that R3 receives the Query and sends a Reply back to R1 with an infinite metric ( delay: 4294967295) which means no route or route unreachable.

Figure 14

R5 never gets a Query about 172.16.1.7/32.

Figure 15

Again R3, using filtering in this case, becomes a boundary for the Query domain.

Stub Router

Stub routing is commonly used in a hub and spoke network topology. In a hub and spoke network a remote router (the spoke) is connected to one or more distribution routers (the hub). The remote router is adjacent only to one or more distribution routers. The only route for IP traffic to follow into the remote router is through a distribution router. In a hub and spoke topology, the remote router must forward all non-local traffic to a distribution router, so it becomes unnecessary for the remote router to hold a complete routing table. Generally, the distribution router need not send anything more than a default route to the remote router.

When using the EIGRP Stub Routing feature, you need to configure the distribution and remote routers to use EIGRP, and to configure only the remote router as a stub. A router that is configured as a stub will send a special peer information packet to all neighbouring routers to report its status as a stub router. Any neighbour that receives a packet informing it of the stub status will not query the stub router for any routes. The stub router will depend on the distribution router to send the proper updates to all peers.

Stub configuration reduces the Query domain, reduces load into the control plane and does not add time onto convergence.

In our scenario, we are going to configure R5 as EIGRP Stub. We simulate that R5 and R6 are part of a Remote Office connected to the Headquarters through R3. In reality, R5 uses R3 as the only possible path for any other non-local traffic so R5 becomes the exit point of the Remote Site’s network. Therefore, R5 does not need to know the routing details of the Headquarters’ network; it only needs to know that its default route is through R5. R5 becomes the perfect candidate for an EIGRP Stub.

Figure 16

R5(config)#router eigrp 200
R5(config-router)#eigrp stub

R3 receives the stub flag from R5 and suppress the Queries. Note that by default a stub router only advertises CONNECTED and SUMMARY routes.

R3#show ip eigrp neighbors detail
IP-EIGRP neighbors for process 200
H   Address                 Interface       Hold Uptime   SRTT   RTO  Q  Seq
                                            (sec)         (ms)       Cnt Num
1   10.1.35.5               Fa0/1             14 00:01:51   22   200  0  79
   Version 12.4/1.2, Retrans: 1, Retries: 0, Prefixes: 2
   Stub Peer Advertising ( CONNECTED SUMMARY ) Routes
   Suppressing queries

We repeat the test (shutdown R7’s Loopback) and we verify that R3 is not passing the Query to R5. However, R3 is still sending Queries on its Fa0/0 and Fa1/0 interfaces.

R7(config)#interface lo7
R7(config-if)# shut
R3#debug eigrp packets reply query
EIGRP Packets debugging is on
    (QUERY, REPLY)
*Mar  1 00:25:22.015: %DUAL-5-NBRCHANGE: IP-EIGRP(0) 200: Neighbor 10.1.35.5 (FastEthernet0/1) is down: Interface Goodbye received
*Mar  1 00:25:22.031: EIGRP: Enqueueing QUERY on FastEthernet0/0 iidbQ un/rely 0/1 serno 145-147
*Mar  1 00:25:22.031: EIGRP: Enqueueing QUERY on FastEthernet1/0 iidbQ un/rely 0/1 serno 145-147
*Mar  1 00:25:22.035: EIGRP: Enqueueing QUERY on FastEthernet0/0 nbr 10.1.13.1 iidbQ un/rely 0/0 peerQ un/rely 0/0 serno 145-147
*Mar  1 00:25:22.035: EIGRP: Sending QUERY on FastEthernet0/0
*Mar  1 00:25:22.035:   AS 200, Flags 0x0, Seq 223/0 idbQ 0/0 iidbQ un/rely 0/0 serno 145-147
*Mar  1 00:25:22.035: EIGRP: Enqueueing QUERY on FastEthernet1/0 nbr 10.1.23.2 iidbQ un/rely 0/0 peerQ un/rely 0/0 serno 145-147
*Mar  1 00:25:22.035: EIGRP: Sending QUERY on FastEthernet1/0
[…]

R5 is not receiving any Query from R3, however it is generating a Query towards R5 and R6 after receiving an Update from R3 saying that the route to 172.16.1.7/32 is lost. Remember that EIGRP Stub only prevents a Stub router from receiving Queries, Updates are forwarded.  Once R5 knows about the route loss, it triggers the Query process; a Stub router does not receive Queries from its neighbours but can originate Queries towards its non Stub neighbours.

R5#debug eigrp packets reply query update
EIGRP Packets debugging is on
    (QUERY, REPLY, UPDATE)
*Mar  1 01:22:28.051: EIGRP: Received UPDATE on FastEthernet0/1 nbr 10.1.35.3
[…]
*Mar  1 01:22:28.715: EIGRP: Sending QUERY on FastEthernet0/0
*Mar  1 01:22:28.715:   AS 200, Flags 0x0, Seq 234/0 idbQ 0/0 iidbQ un/rely 0/0 serno 268-268
*Mar  1 01:22:28.715: EIGRP: Enqueueing QUERY on FastEthernet0/1 nbr 10.1.35.3 iidbQ un/rely 0/0 peerQ un/rely 0/0 serno 268-268
*Mar  1 01:22:28.715: EIGRP: Sending QUERY on FastEthernet0/1
[…]
*Mar  1 01:22:28.735: EIGRP: Received REPLY on FastEthernet0/0 nbr 10.1.56.6
[…]
*Mar  1 01:22:28.755: EIGRP: Received REPLY on FastEthernet0/1 nbr 10.1.35.3
[…]

R3 receives the Query from R5 asking for an alternative path to 172.16.1.7/32, because R3 does not have an entry for that route anymore immediately replies with a Reply packet and breaks the Query flooding.

R3#show ip cef 172.16.1.7 255.255.255.255
%Prefix not found

R3#
Mar  1 01:22:28.756: EIGRP: Received QUERY on FastEthernet0/1 nbr 10.1.35.5
*Mar  1 01:22:28.756:   AS 200, Flags 0x0, Seq 57/0 idbQ 0/0 iidbQ un/rely 0/0 peerQ un/rely 0/0
*Mar  1 01:22:28.756: EIGRP: Enqueueing REPLY on FastEthernet0/1 nbr 10.1.35.5 iidbQ un/rely 0/1 peerQ un/rely 0/0 serno 97-97
*Mar  1 01:22:28.761: EIGRP: Sending REPLY on FastEthernet0/1 nbr 10.1.35.5
*Mar  1 01:22:28.766:   AS 200, Flags 0x0, Seq 129/57 idbQ 0/0 iidbQ un/rely 0/0 peerQ un/rely 0/1 serno 97-97

Figure 17 shows the capture done on R5’s Fa0/1 towards R3.

Figure 17

If we check R3’s Routing Table we realized that the route to 172.16.1.6/32 (R6’s Loopback) is missed. The reason is that R5 only advertises Connected and Summary routes by default with the stub command. Therefore, we have to use a leak-map to also advertise 172.16.1.6/32 in addition to Connected and Summary routes to ensure full network reachibility.

R3#show ip route 172.16.1.6
% Subnet not in table

R5(config)#ip prefix-list R6_LOOPBACK seq 5 permit 172.16.1.6/32

R5(config)#route-map R6_LOOPBACK_MAP permit 10
R5(config-route-map)# match ip address prefix-list R6_LOOPBACK

R5(config)#router eigrp 200
R5(config-router)#eigrp stub connected summary leak-map R6_LOOPBACK_MAP

R3#show ip route 172.16.1.6
Routing entry for 172.16.1.6/32
  Known via “eigrp 200”, distance 90, metric 435200, type internal
  Redistributing via eigrp 200
  Last update from 10.1.35.5 on FastEthernet0/1, 00:00:41 ago
  Routing Descriptor Blocks:
  * 10.1.35.5, from 10.1.35.5, 00:00:41 ago, via FastEthernet0/1
      Route metric is 435200, traffic share count is 1
      Total delay is 7000 microseconds, minimum bandwidth is 10000 Kbit
      Reliability 255/255, minimum MTU 1500 bytes
      Loading 1/255, Hops 2

It is also best practices to advertise a default route into the Remote Site in addition to EIGRP Stub feature. R6 does not have a full view of the network topology right now because R5 is doing filtering once it has been configured as Stub. Remember that R5 is only advertising Connected and Summary routes to its neighbours.

Figure 18

R3(config)#interface Fa0/1
R3(config-if)#ip summary-address eigrp 200 0.0.0.0 0.0.0.0
R5#show ip route eigrp
     172.16.0.0/32 is subnetted, 2 subnets
D       172.16.1.6 [90/409600] via 10.1.56.6, 00:25:10, FastEthernet0/0
D*   0.0.0.0/0 [90/307200] via 10.1.35.3, 00:00:08, FastEthernet0/1

However, R6 is not receiving the default route from R5.

R6#show ip route
Gateway of last resort is not set
     172.16.0.0/32 is subnetted, 2 subnets
D       172.16.1.5 [90/409600] via 10.1.56.5, 00:01:31, FastEthernet0/0
C       172.16.1.6 is directly connected, Loopback6
     10.0.0.0/24 is subnetted, 2 subnets
D       10.1.35.0 [90/307200] via 10.1.56.5, 00:01:31, FastEthernet0/0
C       10.1.56.0 is directly connected, FastEthernet0/0

In order to ensure full network reachibility a static route has been configured on R6 for this specific scenario.

R6(config)#ip route 0.0.0.0 0.0.0.0 10.1.56.5

R6#show ip route
Gateway of last resort is 10.1.56.5 to network 0.0.0.0
     172.16.0.0/32 is subnetted, 2 subnets
D       172.16.1.5 [90/409600] via 10.1.56.5, 00:04:41, FastEthernet0/0
C       172.16.1.6 is directly connected, Loopback6
     10.0.0.0/24 is subnetted, 2 subnets
D       10.1.35.0 [90/307200] via 10.1.56.5, 00:04:41, FastEthernet0/0
C       10.1.56.0 is directly connected, FastEthernet0/0
S*   0.0.0.0/0 [1/0] via 10.1.56.5

R6#traceroute 172.16.1.7
Type escape sequence to abort.
Tracing the route to 172.16.1.7
  1 10.1.56.5 8 msec 20 msec 20 msec
  2 10.1.35.3 36 msec 32 msec 20 msec
  3 10.1.23.2 32 msec 24 msec 48 msec
  4 10.1.127.7 36 msec 68 msec 40 msec

If we check the debug output and the captures we can see that in this case R3 does not even forward the Update about the loss of 172.16.1.7/32 to R5. R3 knows that is advertising a default route (0.0.0.0/0) and R5 does not need an Update about this specific prefix.

R7(config)#interface lo7
R7(config-if)#shut
R3#
*Mar  1 00:41:35.943: EIGRP: Received QUERY on FastEthernet1/0 nbr 10.1.23.2
*Mar  1 00:41:35.947:   AS 200, Flags 0x0, Seq 141/0 idbQ 0/0 iidbQ un/rely 0/0 peerQ un/rely 0/0
*Mar  1 00:41:35.967: EIGRP: Enqueueing REPLY on FastEthernet1/0 nbr 10.1.23.2 iidbQ un/rely 0/1 peerQ un/rely 0/0 serno 120-120
*Mar  1 00:41:35.967: EIGRP: Received QUERY on FastEthernet0/0 nbr 10.1.13.1
*Mar  1 00:41:35.971:   AS 200, Flags 0x0, Seq 164/0 idbQ 0/0 iidbQ un/rely 0/1 peerQ un/rely 0/0
[…]
*Mar  1 00:41:35.999: EIGRP: Sending QUERY on FastEthernet1/0
*Mar  1 00:41:35.999:   AS 200, Flags 0x0, Seq 159/0 idbQ 0/0 iidbQ un/rely 0/0 serno 122-122
*Mar  1 00:41:36.019: EIGRP: Received REPLY on FastEthernet1/0 nbr 10.1.23.2
*Mar  1 00:41:36.019:   AS 200, Flags 0x0, Seq 144/159 idbQ 0/0 iidbQ un/rely 0/0 peerQ un/rely 0/0
*Mar  1 00:41:36.183: EIGRP: Sending QUERY on FastEthernet0/0 nbr 10.1.13.1
*Mar  1 00:41:36.183:   AS 200, Flags 0x0, Seq 158/164 idbQ 0/0 iidbQ un/rely 0/0 peerQ un/rely 0/1 serno 122-122
*Mar  1 00:41:36.231: EIGRP: Received REPLY on FastEthernet0/0 nbr 10.1.13.1
*Mar  1 00:41:36.231:   AS 200, Flags 0x0, Seq 166/158 idbQ 0/0 iidbQ un/rely 0/0 peerQ un/rely 0/0
*Mar  1 00:41:36.247: EIGRP: Enqueueing REPLY on FastEthernet0/0 nbr 10.1.13.1 iidbQ un/rely 0/1 peerQ un/rely 0/0 serno 123-123
*Mar  1 00:41:36.255: EIGRP: Sending REPLY on FastEthernet0/0 nbr 10.1.13.1
*Mar  1 00:41:36.255:   AS 200, Flags 0x0, Seq 160/166 idbQ 0/0 iidbQ un/rely 0/0 peerQ un/rely 0/1 serno 123-123
R5#

Capture between R1 and R3:

Figure 19

Capture between R3 and R5:

Figure 20

 

Different EIGRP AS Numbers

EIGRP processes run independently from each other, and Queries from one Autonomous System (AS) do not leak into another. However, if redistribution is configured between two processes a Query that results in not alternative path and the removal of the prefix from the Routing Table will originate a Query into the other AS. Therefore as per the regular query propagation rules, you may use prefix summarization when redistributing routes to limit the Query Domain.

References

https://www.cisco.com/c/dam/en/us/products/collateral/ios-nx-os-software/enhanced-interior-gateway-routing-protocol-eigrp/Advances_In_EIGRP.pdf

https://www.cisco.com/c/en/us/td/docs/ios/12_0s/feature/guide/eigrpstb.html

Leave a Reply

Your email address will not be published. Required fields are marked *