http://www.cisco.com/en/US/products/ps6350/products_configuration_guide_chapter09186a00804435fc.html
Since BGP uses TCP session, there is no way to verify the presence of a BGP Neighbor, except when sending BGP Traffic, so BGP sends keepalives every 60 seconds
Keepalive interval value is not communicated in the BGP Open Message
Default Values: Keepalive 60 Seconds HoldTime 180 Seconds
BGP does not use any transport protocol-based keep-alive mechanism to determine if peers are reachable. Instead, KEEPALIVE messages are exchanged between peers often enough as not to cause the Hold Timer to expire. A reasonable maximum time between KEEPALIVE messages would be one third of the Hold Time interval. KEEPALIVE messages MUST NOT be sent more frequently than one per second. An implementation MAY adjust the rate at which it sends KEEPALIVE
Example of this:
Smaller integer in relation to (holtime/3), if holdtime of neigh is used and keepalive > (holdtime/3)
R3# router bgp 34 timers bgp 15 30 R3#show ip bgp neigh | in keep Last read 00:00:06, last write 00:00:06, hold time is 30, keepalive interval i s 10 seconds Configured hold time is 30,keepalive interval is 15 seconds, Minimum holdtime from neighbor is 0 seconds
R4(config-router)#do show ip bgp neigh | in keep Last read 00:00:02, last write 00:00:02, hold time is 30, keepalive interval i s 10 seconds
Notice the configured Keepalive (15) in R3 and the selected keepalive in R4 10 seconds, but R3 is using 10 as the keepalive, since is the lowest keepalive (holdtime /3)
Another example
R3(config-router)#timer bgp 20 30 R3(config-router)#do clear ip bgp * R3(config-router)#do show ip bgp neigh | in keep Last read 00:00:07, last write 00:00:07, hold time is 30, keepalive interval i s 10 seconds Configured hold time is 30,keepalive interval is 20 seconds, Minimum holdtime from neighbor is 0 seconds
R4(config-router)#do show ip bgp neigh | in keep Last read 00:00:05, last write 00:00:05, hold time is 30, keepalive interval i s 10 seconds
Notice now that R3 had been configured with 20 of keepalive and 30 of holdtime
and the selected values are 30 and 10
if the holddtime interval of the neigbor is selected and the locally configured keepalive is less than a third of the holdtime intercal the peers use the locally configured keep alive
R3(config-router)#timer bgp 9 30 R3(config-router)#do clear ip bgp * R3(config-router)# *Nov 17 16:31:25.853: %BGP-5-ADJCHANGE: neighbor 1.1.1.4 Down User reset R3(config-router)# *Nov 17 16:31:27.885: %BGP-5-ADJCHANGE: neighbor 1.1.1.4 Up R3(config-router)#do show ip bgp neigh | in keep Last read 00:00:06, last write 00:00:06, hold time is 30, keepalive interval i s 9 seconds Configured hold time is 30,keepalive interval is 9 seconds, Minimum holdtime f rom neighbor is 0 seconds R3(config-router)#
R4(config-router)#do show ip bgp neigh | in keep Last read 00:00:01, last write 00:00:08, hold time is 30, keepalive interval i s 10 seconds
Another Example
R4(config-router)#timer bgp 7 60 R4(config-router)#do clear ip bgp * R4(config-router)# %BGP-5-ADJCHANGE: neighbor 1.1.1.3 Down User reset %BGP-5-ADJCHANGE: neighbor 1.1.1.3 Up R4(config-router)#do show ip bgp neigh | in keep Last read 00:00:04, last write 00:00:05, hold time is 30, keepalive interval i s 7 seconds Configured hold time is 60,keepalive interval is 7 seconds, Minimum holdtime f rom neighbor is 0 seconds R4(config-router)#
R3(config-router)#do show run | in timer timers bgp 9 30 R3(config-router)#do show ip bgp neigh | in keep Last read 00:00:05, last write 00:00:03, hold time is 30, keepalive interval i s 9 seconds Configured hold time is 30,keepalive interval is 9 seconds, Minimum holdtime f rom neighbor is 0 seconds R3(config-router)#
R4(config-router)#timer bgp 11 60 R4(config-router)#do clear ip bgp * %BGP-5-ADJCHANGE: neighbor 1.1.1.3 Down User reset %BGP-5-ADJCHANGE: neighbor 1.1.1.3 Up R4(config-router)#do show ip bgp R4(config-router)#do show ip bgp neigh | in keep Last read 00:00:07, last write 00:00:07, hold time is 30, keepalive interval i s 10 seconds Configured hold time is 60,keepalive interval is 11 seconds, Minimum holdtime from neighbor is 0 seconds R4(config-router)#
R4(config-router)#no timers bgp 11 60 R4(config-router)#do clear ip bgp * %BGP-5-ADJCHANGE: neighbor 1.1.1.3 Down User reset %BGP-5-ADJCHANGE: neighbor 1.1.1.3 Up R4(config-router)#do show ip bgp neigh | in keep Last read 00:00:04, last write 00:00:04, hold time is 30, keepalive interval i s 10 seconds R4(config-router)#
R3(config-router)#timers bgp 11 40 R3(config-router)#do clear ip bgp *
R4(config-router)#do show ip bgp neigh | in keep Last read 00:00:03, last write 00:00:02, hold time is 40, keepalive interval i s 13 seconds
R3(config-router)#do show ip bgp neigh | in keep Last read 00:00:00, last write 00:00:09, hold time is 40, keepalive interval i s 11 seconds Configured hold time is 40,keepalive interval is 11 seconds, Minimum holdtime from neighbor is 0 seconds
R3(config-router)#no timers bgp 11 40 R3(config-router)#do clear ip bgp * R3(config-router)# %BGP-5-ADJCHANGE: neighbor 1.1.1.4 Down User reset %BGP-5-ADJCHANGE: neighbor 1.1.1.4 Up R3(config-router)#do show ip bgp neigh | in keep Last read 00:00:13, last write 00:00:13, hold time is 180, keepalive interval is 60 seconds
R4(config-router)#do show ip bgp neigh | in keep Last read 00:00:29, last write 00:00:29, hold time is 180, keepalive interval is 60 seconds
R4(config-router)#timers bgp 10 59 R4(config-router)#do clear ip bgp * R4(config-router)# %BGP-5-ADJCHANGE: neighbor 1.1.1.3 Down User reset R4(config-router)# *Nov 17 16:43:13.489: %BGP-5-ADJCHANGE: neighbor 1.1.1.3 Up
R3(config-router)#do show ip bgp neigh | in keep Last read 00:00:01, last write 00:00:01, hold time is 59, keepalive interval i s 19 seconds
R4(config-router)#do show ip bgp neigh | in keep Last read 00:00:12, last write 00:00:01, hold time is 59, keepalive interval i s 10 seconds Configured hold time is 59,keepalive interval is 10 seconds, Minimum holdtime from neighbor is 0 seconds
Is there any more options you could see 🙂
I wanted to thank you for this great read!! I definitely enjoying every little bit of it.I have you bookmarked to check out new stuff you post.
I think that is an interesting point, it made me think a bit. Thanks for sparking my thinking cap.
Great Post ! 😉
One time I wasted a lot of time trying to work with the keepalive/holddown and the key to understand it, is in your paragraph “if the holddtime interval of the neigbor is selected and the locally configured keepalive is less than a third of the holdtime intercal the peers use the locally configured keep alive”.
If you dont know that, you can go crazy 😀
Thx