Tuesday, January 4, 2011

Why EIGRP hello and hold timers don't have to match

Lets take a simple topology. Two routers, R1 and R2, on a common LAN. Assume basic EIGRP is up. One morning you decide to start 'optimizing' the protocol by adjusting timers, but get half way through it and get bored and go for tea :

(both)

router eigrp 100
 network 150.150.0.0




R1#sh run int f0/0
!
interface FastEthernet0/0
 ip address 150.150.36.3 255.255.255.128
!! default EIGRP timers of hello (5) and holdtime (15) apply
!
end




R2#sh run int f0/0
!
interface FastEthernet0/0
 ip address 150.150.36.126 255.255.255.0
 ip hello-interval eigrp 100 1
 ip hold-time eigrp 100 3
end

R1's hellos are only going to be sent out every 5 seconds, which is longer than R2's hold time of 3 seconds, so it's going to break right? No, actually it isn't. In EIGRP, when a router exchanges hellos with a neighbor, it looks at the timers in the inbound hello, and expects packets at that rate.

So in the scenario above, R1 knows to expect packets every second from R2, and applies a hold time of 3 seconds, even though it's sending it's own hellos out ever 5 seconds. Vice versa, even though R2's interface is configured with a hold-time of only 3 seconds, it knows to expect hellos from R1 every 5, and to apply a hold time of 15.

Not sure if this is a good thing, as it basically makes EIGRP very forgiving of bad configuration, but no doubt that if you look hard enough, you'll find neighbor relationships relying on this behavior. Njoi !

No comments:

Post a Comment