TTL 与可达性两件事
多跳 BGP 对等起不来时,两个独立原因经常被混在一起:一是路径本身不可达(路由缺失或中间过滤),二是报文虽然能到但 TTL 余量不足,被对端或中间设备丢弃。前者靠路由表与 traceroute 验证,后者靠 TTL 设置与抓包验证。把两项分开检查,比一起调参更快定位根因。
基本信息
| 检查一 | 路径可达性:路由表是否有目标,双向 ping 是否通 |
|---|---|
| 检查二 | TTL 余量:报文从本端到对端经过多少跳、剩余多少 |
| 多跳对等 | Cisco 用 neighbor <ip> ebgp-multihop <ttl> 放宽 TTL 限制 |
| 验证工具 | traceroute 定位跳数,ping 设置 TTL 探测,抓包查看实际 TTL |
| 关联条目 | GTSM 场景下 TTL 校验更严格,配置方式互不相同 |
典型使用场景
- 多跳 EBGP 建不起来:先确认可达性,再看 TTL 设置是否覆盖实际跳数
- 链路调整后会话中断:路径跳数变化导致原本够用的 TTL 不再够用
- 排查「偶发」问题:路由抖动期间路径临时变长,TTL 余量不足时会话断裂
- 安全加固:把 TTL 校验与可达性检查分开评估,避免叠加改动
- 文档维护:记录每个多跳邻居的实际跳数与 TTL 设置,便于扩网评估
两项分开验证
两项分开验证
# 检查一:路径是否可达、经过几跳
traceroute 10.255.0.2
ping 10.255.0.2 repeat 5
# 检查二:限制 TTL 探测报文能否到达
ping -t 2 10.255.0.2 # Linux 设置 TTL;Windows 下用 ping -i
# 抓包查看实际 TTL 值,确认余量是否充足
tcpdump -ni eth0 'tcp port 179' -c 10现象与原因对照
| 现象 | 可达性问题 | TTL 问题 |
|---|---|---|
| 完全无法建立 | 路由缺失或中间阻断,最典型 | TTL 设置小于实际跳数 |
| 能建立但抖动 | 路径不稳定 | 抖动期路径变长,TTL 不再够用 |
| 单向成功 | 回程路由缺失 | 回程 TTL 校验更严格 |
| 调大 TTL 后恢复 | 不是主因 | 确认是 TTL 余量不足导致 |
两项一起调参的最大问题是无法归因:改了两处之后恢复了,却不知道是哪一项起了作用,下次遇到同类问题时依旧没有依据。