A couple of days ago I posted a blog entry about EIGRP timers, but I didn’t have time to explain it properly. So I just dumped the console logs of the experiment, and left it as a “guess what” challenge. Now is the time to reveal all.
What I am trying to do is to look at a common misconception about EIGRP hello timers. By default, the EIGRP hello-interval on most networks is 5 seconds, and the hold-time is 3 times that: 15 seconds. These values are configurable, but how should they be configured?
The story you read in the books is that the hold-timer must be more than the hello-timer, and preferably 3 times as much. What the books generally don’t tell you is that:
- The hello mechanism works independently in each direction. Hellos from router R1 to router R2 do not necessarily have to use the same parameters as hellos from R2 to R1.
- The hold time is transmitted to the neighbor in the hello packet. R2 does not use its locally configured hold-time, but uses the value that R1 tells it to use. This has profound implications if you really want to understand the EIGRP Hello timers.
Let us illustrate this with an experiment:
Now, observe the EIGRP timers. R1 has a hello-interval of 3 seconds, and a configured hold-time of 10 seconds. R2 has a hello-time of 30 seconds, and a hold-time of 100 seconds. At first sight, this looks as though it should be unstable; it looks as if the adjacency should stay up for 10 seconds, then go down, stay down for 20 seconds, come up for 10, etc. But it doesn’t. Why not?
Let us look at R1′s view of this relationship:
R1#show ip eigrp neighbor f0/0.12 IP-EIGRP neighbors for process 200 H Address Interface Hold Uptime SRTT RTO Q Seq (sec) (ms) Cnt Num 0 172.16.12.2 Fa0/0.12 74 00:00:25 12 200 0 6
See the hold time? The neighbor relationship has been up for 25 seconds, and the hold time is 74 seconds, not something less than 10 as we would expect. What has happened is that R2 has sent a Hello with 100 seconds of hold time. "Hello, I am R1, if you don't hear from me in the next 100 seconds, assume I am dead".
And at R2:
R2#show ip eigrp neighbor f0/0 IP-EIGRP neighbors for process 200 H Address Interface Hold Uptime SRTT RTO Q Seq (sec) (ms) Cnt Num 0 172.16.12.1 Fa0/0 8 00:00:35 8 200 0 9
Here we see the hold timer that was configured in R1.
Conclusions: The EIGRP Hello mechanism works independently in each direction. Each router does not use its locally configured hold time, but the hold time determined by its neighbor.
The really cool thing about this is that if I want to change the interval at which I send out hellos, I don't need to touch the hold time of any of my neighbors; I just need to configure it locally.