摘要
- GTSM 要求受保护的 BGP 流量从 TTL 或 Hop Limit 255 发出,接收端只放行与批准网络距离相符的数值,从而尽早排除不可能来自近端的伪造流量。
- 通过距离检查不等于通过身份检查。它不能替代入口源地址验证、TCP-AO、控制平面限速或 BGP 进出口策略,也不能抵御同链路或路径中的攻击者。
- 有效证据必须覆盖两个方向:实际发出的 255、到达数值、执行阈值、最早丢弃计数器、TCP/BGP 状态以及最终路由结果。
最直接的修复是把 hops 2 改为 hops 3。会话很可能马上恢复。然而,这不是把“错误数字”改正确,而是在扩大安全半径:合法流量多走的一跳被纳入,同时也让更多网络位置具备满足距离条件的可能。
因此,hop count 既是可用性参数,也是信任预算。它不能由一次告警随手改大,更不能用 255 这种“保证不再出事”的数值结束讨论。
255 提供的是上限,不是姓名
IPv4 的 TTL 与 IPv6 的 Hop Limit 都是八位字段。报文经路由器转发时,数值通常逐跳减少;255 是可表示的最大值。GTSM 让协议报文从这个上限出发,接收端再根据剩余数值判断它是否可能沿着批准的近距离路径到来。
直连邻居应收到 255。多跳关系会消耗相应数值。Cisco 的相关文档把接收下限表达为 255 减去配置 hop count;FRRouting 提供 neighbor PEER ttl-security hops NUMBER。不同平台对计数、与 ebgp-multihop 的组合、动态修改的处理可能不同,不能把某个 CLI 当成跨厂商标准。真正的共同事实只有两个:发出值应为 255,接收值必须落在经实测确认的范围。
假设最低允许 253。收到 254 或 253,只能说明报文看起来没有穿越超过允许数量的路由跳;收到 252,则与该距离合同不符。前一种结果并不告诉我们报文由谁生成。同链路攻击者可以伪造邻居地址并保持高 TTL,远端攻击者却无法从高于 255 的起点补偿途中递减。这就是机制的能力边界。
“Trusted”只是一项检查结果
RFC 5082 把能关联到受保护会话且 TTL 在期望范围内的报文归为 Trusted;同一会话中数值越界的报文归为 Dangerous;无法关联到已登记会话、因而不能作出 GTSM 判断的流量归为 Unknown。
这些词容易造成语义膨胀。Trusted 不是“内容可信”,只是“距离检查通过”。被攻陷的合法邻居发来的恶意 UPDATE 仍可被 GTSM 归为 Trusted;维护改道后的合法报文也可能因为距离变长而被归为 Dangerous。
GTSM 的另一目标是保护控制平面的稀缺资源。一个报文在 BGP 进程里才被拒绝,可能已经占用了线路卡到 CPU 的带宽、控制队列、内核和 TCP 处理。只有尽可能靠近转发平面完成分类和隔离,才能兑现抵抗资源耗尽攻击的价值。
所以,“有丢包计数”还不够。运营证据应串起硬件或转发平面计数、控制平面策略计数、内核可见性、TCP socket 状态与 BGP 日志。第一处发生差异的位置,才说明报文在哪里被挡住、哪些资源真正没有被消耗。
四个事实不能被一行配置压缩
RFC 5082 没有为现有协议定义一种通用的 GTSM 自动协商。两端靠人工配置达成关系:都要按规则从 255 发包,也要为对方设置正确的接收范围。
因此必须分别记录四件事:批准的拓扑、配置的 hop count、实际观察到的路径、设备真正执行的阈值。上线当天它们可能一致,故障切换、ECMP、loopback 迁移、设备更换、隧道接入或 IPv6 路径变化后,它们就可能分离。
配置行只证明意图。它不证明报文真的从 255 出发,不证明接收端看到了什么,也不证明检查发生在预想的处理阶段。BGP Established 同样不够:两端都误关 GTSM,仍能建立健康会话。
必须验证“负空间”。在隔离 canary 中,让一个合法报文恰好落在阈值内,再让一个测试报文比阈值低一。后者应在预测的早期计数器上出现,同时不进入 TCP/BGP。只有正例与负例成对,配置才变成可观察的运行边界。
多跳把邻接变成信任直径
直连是 GTSM 最清晰的场景:合法邻居交付 255,普通路由路径至少会减一。RFC 5082 也把最明确的适用性结论放在天然受限、尤其是直接连接的拓扑上。
多跳并非毫无价值。允许三跳仍能排除更远处的大量来源,但它不再区分这三跳半径内的各个位置。RFC 7454 明确指出,处在 TTL 直径内部的人可能伪造该值。
这要求每一单位余量都有理由。正常路径两跳、阈值放到五跳,可能是为故障路径预留,也可能只是复制模板。前者是经过批准的连续性方案,后者是无人负责的边界扩张。
两个方向还可能不对称。A 到 B 两跳,B 到 A 三跳;SYN 能到,SYN-ACK 被丢。ECMP 的不同哈希可能让同一会话偶尔走更长路径,造成难以复现的重置。IPv4 正常也不能证明 IPv6 正常。应按方向、地址族、路径和会话 epoch 保留到达值分布,而不是只保存一次 traceroute。
隧道可能成为“距离电梯”
隧道可以让内层 TTL 在远距离运输中保持不变,或者按照特定模型复制、传播数值。报文跨越长网络后,在解封装点附近重新出现,却携带很高的内层 TTL。此时,可见字段描述的是隧道内层的距离,不一定是原始注入者的真实距离。
RFC 5082 因而把隧道端点可信、隧道完整性和源地址验证列为安全假设。运营记录不能写“隧道算一跳”,而要写明谁能在入口注入、采用何种封装和 TTL 模型、在哪里解封装、内外层数值如何变化、出口如何验证来源。
DDoS 清洗、虚拟路由器、service chain 和防火墙迁移都可能保持邻居 IP 不变,却改变这套算术。凡是 GTSM 依赖的路径中介,都属于安全边界的一部分。
分片则暴露分类器的盲区。非首片没有 TCP 头,难以在早期关联到 BGP 会话;等待重组又会消耗内存与 CPU。RFC 5082 建议受保护协议避免分片。MTU、ICMP 相关报文和独立的分片限速或丢弃策略,都应纳入测试。
距离、身份与路由权必须分栏
GTSM 回答“报文距离是否合理”。入口过滤回答“这个源地址是否应从该接口出现”。TCP-AO 等密码机制回答“TCP 段是否由掌握正确密钥的一方产生且未被篡改”。控制平面策略回答“该流量能占用多少资源”。BGP 策略回答“这条路由是否允许进入或离开”。
每一层都不可被另一层替代。同链路攻击者可能通过 GTSM,却被源地址验证挡住;路径中攻击者可以保持相同距离,却无法生成正确认证;拥有正确密钥但已被攻陷的邻居,仍可能宣布未授权前缀,只能由本地 import policy 拒绝。Unknown 流量也需要独立限速,因为 GTSM 本身未必会丢弃它。
把所有状态合并成“BGP 已安全”,会导致两种错误。一种是把 TTL 255 称为认证;另一种是因为它不是认证,就否定其价值。更准确的结论是:它以很小的本地机制,提前淘汰一类与批准拓扑不相容的远端伪造流量。
变更测试必须预先知道谁会失败
维护前,在两个方向和所有地址族抓取实际 BGP 报文,确认出站为 255,记录正常、ECMP、维护和可信故障路径的接收分布,并定位执行阈值的最早计数器。
随后预测新路径的到达值。如果合法下限会从 253 变成 252,决策者要明确选择:保持旧边界并调整拓扑,还是批准多一跳的信任直径。临时放宽必须带到期时间和回滚条件。
在隔离 canary 上发送三个样本:高于阈值、恰好等于阈值、低于阈值一。前两者应进入下一处理层,最后一个应在预期位置被早期丢弃。再分别测试同链路伪造、错误 TCP 密钥和已认证邻居的未授权路由;三者应在三个不同控制层失败。
切换后把 GTSM 计数、TCP 重传、认证失败、BGP FSM 与路由变化放到同一时间轴。看不到路由,不能直接归因于 TTL;ACL、密钥、BGP NOTIFICATION 或路由策略都能产生相同表象。
回滚必须恢复明确的旧路径或双方阈值,而不是仅让会话亮绿。单边关闭检查、另一边放到最大,虽然恢复业务,却留下没有记录的安全退化。
事故中的 252 不是一份伪造证明;它是一条新路径对旧合同的反证。GTSM 的价值来自严格自限:邻近证据只授权报文进入下一项检查,绝不授予身份、完整性或路由权。
会员简报
档案背景详情
使用相应会员等级登录,即可解锁完整简报与来源注释。
仅限 Strategic Circle
Strategic Circle
所有读者均可浏览。加入并登录后可解锁档案简报。
加入 Strategic Circle仅限 Leadership Alliance
Leadership Alliance
符合条件的 IP 资产所有者和管理层可登录查看 Leadership Alliance 简报。
加入 Leadership Alliance
