EIGRP Stub Explained
In a previous lesson, I explained the EIGRP SIA (Stuck In Active) problem, if you are not sure what SIA is then please read that lesson first as it explains why the EIGRP stub feature is useful. Having said that, let’s look at the EIGRP stub…
let’s start with a nice topology!
Look at the following topology. We have a company with headquarters and 2 branch offices. The 2 HQ routers are connected on the LAN using a Gigabit link. The branch offices are connected to both HQ routers using slow 64kbps serial links. What do you think will happen once HQ 1 loses its route to the 1.1.1.0 /24 network on the left side? Take a look at the following picture:
Query packets (red arrows) will fly everywhere! It doesn’t sound like a good idea to use the serial links for backup so we are going to change this behavior by turning the branch routers into EIGRP stubs.
Once the branch routers are configured as stubs, this is the only query you will see:
If we configure the branch routers as stub routers, they will not receive queries from our HQ routers. This is a very good technique to stop query traffic!
Why do we call it a stub? You have probably seen one before! A tree that is cut off is called a stub…there’s nothing attached to it anymore.
If you look at our branch routers, they are like a tree. There are no other routers behind the branch routers, and we don’t want to use them as backup paths, so why bother querying them? EIGRP stubs are not an “all or nothing” solution. We have different flavors so you can choose which types of routes the stub router should receive queries or not.
Here are the flavors we have:
- Receive-only: The stub router will not advertise any network.
- Connected: allows the stub router to advertise directly connected networks.
- Static: allows the stub router to advertise static routes (you have to redistribute them).
- Summary: allows the stub router to advertise summary routes.
- Redistribute: allows the stub router to advertise redistributed routes.
The default is connected + summary. If you like, you can mix some of the options with the exception of receive-only because it denies all advertisements. Redistribution is the importing and exporting of routing information from one routing protocol to another.
Let’s look at some configuration examples for the different stub types!
Stub Configuration
To demonstrate the different stub types, I will use the following topology:
Two routers are connected, and R2 has a loopback interface. We’ll use a basic EIGRP configuration:
R1(config)#router eigrp 12
R1(config-router)#network 192.168.12.0
R2(config-if)#router eigrp 12
R2(config-router)#network 192.168.12.0
R2(config-router)#network 2.2.2.0 0.0.0.255
Let me first demonstrate the EIGRP query behavior to you. We’ll have to enable a debug for that:
R1#debug eigrp packets query
EIGRP Packets debugging is on
(QUERY)
R2#debug eigrp packets query
EIGRP Packets debugging is on
(QUERY)
We’ll shut the loopback0 interface on R2 to see what will happen:
R2(config)#interface loopback 0
R2(config-if)#shutdown
This is what happens:
R2#
EIGRP: Enqueueing QUERY on FastEthernet0/0 iidbQ un/rely 0/1 serno 33-33
EIGRP: Enqueueing QUERY on FastEthernet0/0 nbr 192.168.12.1 iidbQ un/rely 0/0 peerQ un/rely 0/0 serno 33-33
EIGRP: Sending QUERY on FastEthernet0/0
AS 12, Flags 0x0, Seq 55/0 idbQ 0/0 iidbQ un/rely 0/0 serno 33-33
You can see that R2 is sending a query to R1.
R1# EIGRP: Received QUERY on FastEthernet0/0 nbr 192.168.12.2
AS 12, Flags 0x0, Seq 55/0 idbQ 0/0 iidbQ un/rely 0/0 peerQ un/rely 0/0
And we see that R1 has received the query. So far, so good. This is normal EIGRP behavior. You lose a network…you ask your neighbors if they know where it is. Let’s get that loopback back online:
R2(config)#interface loopback 0
R2(config-if)#no shutdown
And we’ll configure R1 as an EIGRP stub router.
R1(config)#router eigrp 12
R1(config-router)#eigrp stub
By default, the stub feature uses connected + summary. You can confirm this by looking at the running configuration:
R1#show running-config | begin router eigrp
router eigrp 12
network 192.168.12.0
no auto-summary
eigrp stub connected summary
My debugging is still enabled, so the neighbors will show you a message that the configuration has changed:
R1#
%DUAL-5-NBRCHANGE: IP-EIGRP(0) 12: Neighbor 192.168.12.2 (FastEthernet0/0) is down: peer info changed
%DUAL-5-NBRCHANGE: IP-EIGRP(0) 12: Neighbor 192.168.12.2 (FastEthernet0/0) is up: new adjacency
R2#
%DUAL-5-NBRCHANGE: IP-EIGRP(0) 12: Neighbor 192.168.12.1 (FastEthernet0/0) is down: Interface Goodbye received
%DUAL-5-NBRCHANGE: IP-EIGRP(0) 12: Neighbor 192.168.12.1 (FastEthernet0/0) is up: new adjacency
Let’s see if there are any differences when I shut the loopback 0 interface…
R2(config)#interface loopback 0
R2(config-if)#shutdown
The interface goes down…let’s see what happens:
R1#
EIGRP: Enqueueing QUERY on FastEthernet0/0 iidbQ un/rely 0/1 serno 28-28
EIGRP: Enqueueing QUERY on FastEthernet0/0 nbr 192.168.12.2 iidbQ un/rely 0/0 peerQ un/rely 0/0 serno 28-28
EIGRP: Sending QUERY on FastEthernet0/0
AS 12, Flags 0x0, Seq 44/0 idbQ 0/0 iidbQ un/rely 0/0 serno 28-28
R2#
EIGRP: Received QUERY on FastEthernet0/0 nbr 192.168.12.1
AS 12, Flags 0x0, Seq 44/0 idbQ 0/0 iidbQ un/rely 0/0 peerQ un/rely 0/0
You can see that R1 will send a query to R2 because it has lost the 2.2.2.0 /24 network. It’s not receiving a query anymore from R2 because it’s a stub router!
Depending on your IOS version, it’s also possible that R1 doesn’t send a query. The output above is from IOS 15.1(4)M10. On 15.6(3)M2, R1 didn’t send any query to R2.
- Configurations
- R1
- R2
Want to take a look for yourself? Here, you will find the final configuration of each device.
Now you know how it deals with the queries, let’s look at the different stub options! I’ll be using another topology for this:
I’m using a basic EIGRP configuration. Here’s what it looks like on each router:
R1#show run | begin router eigrp
router eigrp 12
network 192.168.12.0
no auto-summary
R2#show run | begin router eigrp
router eigrp 12
network 2.2.2.0 0.0.0.255
network 192.168.12.0
network 192.168.23.0
no auto-summary
R3#show run | begin router eigrp
router eigrp 12
network 3.3.3.0 0.0.0.255
network 192.168.23.0
no auto-summary
Nothing special, as you can see. Let me add a loopback 0 interface on R1 and advertise it into EIGRP.
R1(config)#interface loopback 0
R1(config-if)#ip address 1.1.1.1 255.255.255.0
R1(config)#router eigrp 12
R1(config-router)#network 1.1.1.0 0.0.0.255
Nothing special so far…
R2#show ip route eigrp
1.0.0.0/24 is subnetted, 1 subnets
D 1.1.1.0 [90/156160] via 192.168.12.1, 00:00:48, FastEthernet0/0
You can see that R2 has learned about network 1.1.1.0 /24. Now, let’s play with the stub feature:
R1(config)#router eigrp 12
R1(config-router)#eigrp stub receive-only
Let’s make it receive-only.
R2#show ip route eigrp
Easy enough…R1 doesn’t advertise anything anymore, so R2 doesn’t know about the 1.1.1.0 /24 network anymore. That’s it…let’s try the next stub option:
R1(config)#router eigrp 12
R1(config-router)#no eigrp stub receive-only
Let’s start by getting rid of the stub feature on R1.
R3#show ip route eigrp
D 192.168.12.0/24 [90/30720] via 192.168.23.2, 00:12:49, FastEthernet0/0
1.0.0.0/24 is subnetted, 1 subnets
D 1.1.1.0 [90/158720] via 192.168.23.2, 00:11:16, FastEthernet0/0
Let’s take a quick look at the routing table of R3. It has learned two networks through EIGRP:
- 192.168.12.0 /24, which is the link between R1 and R2.
- 1.1.1.0 /24 which is the loopback0 interface of R1.
Let’s enable the EIGRP stub connected option this time:
R2(config)#router eigrp 12
R2(config-router)#eigrp stub connected
And now, take a look at the routing tables of R2 and R3:
R2#show ip route eigrp
1.0.0.0/24 is subnetted, 1 subnets
D 1.1.1.0 [90/156160] via 192.168.12.1, 00:10:45, FastEthernet0/0
R3#show ip route eigrp
D 192.168.12.0/24 [90/30720] via 192.168.23.2, 00:01:03, FastEthernet0/0
Interesting…R3 only has 192.168.12.0 /24 in its routing table now. Why? It’s because this network is directly connected to R2, and that’s why it’s advertised. 1.1.1.0/24 is not advertised from R2 to R3 because of the stub connected option!
Let’s clean up before we try the next stub option:
R2(config)#router eigrp 12
R2(config-router)#no eigrp stub connected
This time, we’ll try the stub static option:
R2(config)#router eigrp 12
R2(config-router)#eigrp stub static
This time, I’ll turn R2 into a stub static. Let’s see what R3 thinks of this…
R3#show ip route eigrp
R3 doesn’t have any EIGRP information anymore. Why? It’s because R2 only advertises redistributed static routes…
R2#show ip route eigrp
1.0.0.0/24 is subnetted, 1 subnets
D 1.1.1.0 [90/156160] via 192.168.12.1, 00:01:29, FastEthernet0/0
You can see that R2 still knows about network 1.1.1.0/24…
First, I’ll create a static route and point it toward R1:
R2(config)#ip route 1.1.1.0 255.255.255.0 192.168.12.1
And secondly, we’ll redistribute this static route into EIGRP:
R2(config)#router eigrp 12
R2(config-router)#redistribute static
Let’s check the routing table of R3 now:
R3#show ip route eigrp
1.0.0.0/24 is subnetted, 1 subnets
D EX 1.1.1.0 [170/30720] via 192.168.23.2, 00:01:06, FastEthernet0/0
There we go…since R2 only advertises redistributed static routes, we can now see network 1.1.1.0/24 again in the routing table of R3. Let’s clean up before we continue:
R2(config)#router eigrp 12
R2(config-router)#no eigrp stub static
R2(config-router)#no redistribute static
R2(config-router)#exit
R2(config)#no ip route 1.1.1.0 255.255.255.0 192.168.12.1
And try the stub summary now:
R2(config)#router eigrp 12
R2(config-router)#eigrp stub summary
What does this mean for the routing table of R3?
R3#show ip route eigrp
Of course, R3 is clueless again because R2 will only advertise summary routes…let’s fix this by creating a summary on R2:
R2(config)#interface fastEthernet 1/0
R2(config-if)#ip summary-address eigrp 12 1.1.0.0 255.255.0.0
Check the routing table of R3 again:
R3#show ip route eigrp
1.0.0.0/16 is subnetted, 1 subnets
D 1.1.0.0 [90/158720] via 192.168.23.2, 00:01:10, FastEthernet0/0
You can see the summary in the routing table of R3…that’s it! Let’s clean up again:
R2(config)#interface fastEthernet 1/0
R2(config-if)#no ip summary-address eigrp 12 1.1.0.0 255.255.0.0
R2(config-if)#exit
R2(config)#router eigrp 12
R2(config-router)#no eigrp stub summary
It’s time for the stub redistributed option. That’s the last one:
R2(config)#router eigrp 12
R2(config-router)#eigrp stub redistributed
When you configure this, it also includes connected and summary:
R2#show run | include eigrp stub
eigrp stub connected summary redistributed
Let’s add a loopback interface on R2 and redistribute it into EIGRP:
R2(config)#interface loopback 1
R2(config-if)#ip address 2.2.2.2 255.255.255.0
R2(config)#router eigrp 12
R2(config-router)#redistribute connected
Instead of the network
command, we’ll redistribute the loopback interface into EIGRP. Look at R3 now:
R3#show ip route | include 2.2.2.0
D EX 2.2.2.0 [170/156160] via 192.168.23.2, 00:00:42, FastEthernet0/0
You can see that R3 learned the 2.2.2.0/24 network.
Table of Content
Unit 2: EIGRP Neighbor Adjacency
Unit 4: EIGRP Advanced Features