两个定时器的作用
Hold Time 定义「多久收不到对端任何报文就认为会话失效」,默认 180 秒;Keepalive 是周期性保活报文,默认 60 秒,即 hold time 的三分之一。两端协商时取较小的 hold time,因此实际生效值可能小于本机配置值。
基本信息
| 默认值 | Hold 180 秒 / Keepalive 60 秒 |
|---|---|
| 取值关系 | Keepalive 通常为 Hold 的三分之一 |
| 协商规则 | 两端取较小的 Hold 值,避免出现 1 或 2 这类非法值 |
| 作用 | 检测对端是否仍在通信,衡量收敛速度 |
| 推荐做法 | 与 BFD 配合做快速检测,保持默认定时器 |
| 查看 | show ip bgp neighbors <ip> 输出的定时器字段 |
典型使用场景
- 会话频繁中断:核对两端定时器与实际链路质量
- 快速收敛需求:用 BFD 做毫秒级检测而非一味调小 hold time
- 跨长距链路:路径时延较大时需要评估定时器余量
- 排障期间临时调小定时器加快故障暴露
- 核对实际生效值:两端配置不同时以协商结果为准
配置与核对
配置与核对
# 建议优先用 BFD 做快速检测,保持 BGP 定时器默认值
!
# 需要调整时按 hold 与 keepalive 成对设置
bgp timers 30 10 # hold 30 秒,keepalive 10 秒
!
show ip bgp neighbors 10.0.0.2 # 查看协商后的实际定时器
show ip bgp summary # 会话状态与抖动观察
show ip bgp neighbors 10.0.0.2 | include reset取值与影响
| 配置 | 实际效果 | 风险 |
|---|---|---|
| Hold 180 / Keepalive 60 | 默认值,收敛依赖超时 | 链路中断到感知最长约 3 分钟 |
| Hold 30 / Keepalive 10 | 感知更快 | 网络抖动时容易误断邻居 |
| Hold 0 | 不使用保活机制 | 仅测试场景使用,生产环境禁用 |
| 配合 BFD | 检测时间可降至毫秒级 | 需两端都支持并正确配置 |
Hold=0 表示不使用保活机制:会话不会因超时中断,故障也不会被检测到,只适合实验室环境。
粗暴调小 Hold 值会让抖动直接转化为邻居重建,重建期间路由撤销与重新学习会造成丢包,调优前先确认链路质量并优先启用 BFD。
观察会话是否真在抖动,看邻居详情里的复位计数与最近复位时间:单次复位与周期性复位的原因不同,后者往往指向链路质量或定时器配置。