GTSM 与 multihop 怎么选
多跳 EBGP 有两种安全取向。ebgp-multihop 是传统做法:只放宽接收端的 TTL 检查,让报文能从更远的地方到达,安全上并不加分。GTSM(TTL 安全,RFC 5082)反过来做:发送时使用高 TTL,接收时要求 TTL 落在预期范围内,直接丢弃来自其它跳数位置的伪造报文,属于更严格的校验。
基本信息
| ebgp-multihop | 放宽接收 TTL 检查,允许远端报文到达 |
|---|---|
| GTSM | 发送侧使用高 TTL,接收侧校验 TTL 范围 |
| Cisco 写法 | neighbor <ip> ebgp-multihop <ttl> 或 neighbor <ip> ttl-security hops <n> |
| 跳数的含义 | GTSM 中的 hops 表示对端距本端的预期跳数 |
| 标准依据 | RFC 5082(GTSM)、RFC 4271(BGP 与 TCP 传输) |
典型使用场景
- 新建多跳对等:优先按 GTSM 思路配置,安全性更好
- 存量环境兼容:老设备不支持 GTSM 时保留 multihop 并说明原因
- 迁移阶段:两端同时支持后按维护窗口统一变更
- 安全评审:说明为何选择该方案以及跳数取值的依据
- 排障核对:会话建不起来时先确认两端方案是否匹配
两种写法与核对
两种写法与核对
# 传统做法:放宽 TTL 检查(Cisco)
router bgp 65001
neighbor 10.255.0.2 ebgp-multihop 2
# GTSM 做法:声明预期跳数
neighbor 10.255.0.2 ttl-security hops 2
# 核对会话与邻居状态
show ip bgp summary
show ip bgp neighbors 10.255.0.2 | include TTL|multihop两种方案对照
| 维度 | ebgp-multihop | GTSM |
|---|---|---|
| TTL 处理 | 只放宽接收检查 | 发送用高 TTL,接收校验范围 |
| 安全性 | 较弱,来源可被伪造 | 较强,能过滤非常规跳数报文 |
| 兼容性 | 几乎所有平台支持 | 老设备可能不支持 |
| 适用场景 | 兼容存量与传统环境 | 新增部署与安全要求较高的场景 |
| 配置复杂度 | 简单 | 需确认实际跳数取值 |
迁移时两端要同时支持且一起变更:一侧按 GTSM 校验、另一侧仍是普通 multihop 时,容易出现报文被对端丢弃的情况,因此要安排在维护窗口内统一调整并预留回退步骤。
两者虽然都涉及 TTL,语义正好相反:一个放宽、一个收紧,同一邻居上同时配置会互相冲突。排查时逐邻居确认只保留其中一种,是最快的检查动作。