摘要
- RFC 7311 把 AIGP 定义为 optional、non-transitive 的 BGP 属性,供同一管理者控制的连续多个 AS 累积一种 IGP 式成本。
- 只有每个 IGP、static route 与 inter-AS increment 使用可比较单位,且递归路径不存在未知缺口,累积结果才有意义。
- 安全部署必须同时治理会话与 origin 边界、候选可见性、route reflector、更新阈值、选路顺序、泄漏检测和实际 forwarding。
设想一家运营者收购了三个区域网络,却保留各自 ASN。北部 AS 用 IS-IS cost 近似时延;中部 AS 的 OSPF 值来自多年前的带宽等级;南部 AS 用 static cost 避免昂贵电路。
管理层提出一个看似简单的目标:在合并后的网络里选择最短内部路径。团队启用累积度量,每台 router 都开始显示整齐的 64-bit total。Route 每穿过一个域,数字都会增加,整个网络看起来已被数学统一。
实际并没有。第一段加的是毫秒,第二段加的是容量等级,第三段加的是商业偏好。总和准确、可重复,却没有可解释意义。协议完成了算术,组织没有定义单位。
这就是 Accumulated IGP Metric 属性,也就是 AIGP 内部的治理问题。RFC 7311 针对一个合理场景:BGP 通常连接独立 administrations,不用一个全局累积 metric 做端到端选路;但有些 operator 在同一 administrative domain 内运行多个连续 BGP AS,希望它们像一个 IGP metric space 工作。
AIGP 让这种内部成本可以携带并累积。它是 optional、non-transitive 的 BGP path attribute,type code 为 26。RFC 7311 定义 TLV type 1,用八字节 unsigned value 保存累积值。字段够宽,可以把许多常见四字节 IGP metrics 相加。
字段宽度不会创造语义宽度。TLV 只说“这是累积值”,不说明一个单位代表 delay、inverse bandwidth、operator weight、维护惩罚还是混合物。64-bit 容器只会比小字段更精确地保存错误比较。
真正的制度对象是 AIGP administrative domain:由同一 administration 控制、同意把各自 cost 当成同一计算组成部分的 AS 集合。它不是 ASN 名单,而是共同接受单位、累积规则与边界纪律的 trust domain。
这令 AIGP 与 MED 根本不同。MED 通常是跨 external adjacency 给出的入口建议,标准流程不会沿每段链路把它累积。RFC 7311 指出,用 MED 模拟 IGP 最短路并不充分:AS_PATH 等因素会更早介入,MED 也不能证明沿途总和完整。
AIGP 更不是 Internet 的通用距离。BGP 没有采用一种全球 metric,部分原因正是互不隶属的 administrations 无法共同协调尺度、含义与激励。一家 provider 可以把拥塞路径标成“1”吸引流量,另一家用微秒,第三家写价格。全网可加数字会变成争夺现实定义权的工具。
RFC 7311 因而构造边界。AIGP_SESSION 按 session 控制属性。IBGP 以及同一 BGP Confederation 成员之间的 EBGP,默认值应为 enabled;其他 EBGP 默认必须 disabled。
若 AIGP 从 disabled session 到达,应像未知 non-transitive attribute 一样被静默忽略且不继续传播,同时建议做 rate-limited log。这个日志不是杂音,而是某种不受信 metric 尝试越界的证据。
Origination 另有控制。AIGP_ORIGINATE 默认必须 disabled。Speaker 不得给通往 AIGP administrative domain 之外的 route 添加属性。RFC 7311 只允许指定类型的 internal、IGP、static 或属于同一管理集合的 AS_PATH 条件,并要求 originator 把自己设为 BGP next hop。
这些只是最低防护,不是自动 sovereignty。Non-transitive bit 阻止不了 external peers 在两端都错误启用 AIGP。RFC 7311 警告,这会把属性从一家 service provider 送到另一家,产生 unsound selection。边界安全取决于 session matrix、policy 与验证,而不只是 encoding。
当 speaker 改变 next hop,算术才开始。若转发 AIGP route 而不改变 BGP next hop,它不得修改数值;若把 next hop 改成自己,就必须加入到旧 next hop 的距离,而且 increment 必须非零。
若 next hop 由 IGP 学到,加数可以是 IGP distance。若两个 EBGP neighbors 之间直连且没有 IGP,operator 仍需分配一个与域内 metric 可比较的非零值。Static route 同样如此。“这里没有 IGP”不是“成本为零”,而是必须有人定义两套测量之间的桥。
Recursive resolution 拉长证据链。BGP next hop 可能由另一条 BGP route 解析,再继续递归。RFC 7311 沿这条 chain 累积遇到的 AIGP values,最后加上 non-recursive IGP 或 static distance。
Gap rule 十分关键。如果递归遇到一条没有 AIGP attribute 的 BGP-learned route,outgoing route 就不能保留 AIGP。协议拒绝在中间存在未知段时宣称拥有完整总和。它宁可撤销主张,也不把缺项当成零。
这是强有力的 evidence principle。然而,operator 仍可能在语法连续时制造语义缺口:每一跳都有 AIGP,但某个 domain 改变了“cost”的含义。Chain 在协议上完整,在运营上仍不连贯。
所以 metric registry 不能只存 values。对每个 IGP domain 与 inter-AS link,它应记录 metric source、unit 或 policy meaning、scale、reference、owner、last calibration 与 approved transformation。一个域用 delay、另一个用 capacity weight 时,应阻止直接 composition,或先批准明确 conversion。
甚至使用同一 IGP 也不证明同义。两个 OSPF domains 可以采用不同 reference bandwidth,两个 IS-IS domains 也可由不同 automation 分配 cost。一方把接近 maximum 的值用于 maintenance cost-out,另一方只在故障时使用。Protocol sameness 不是 unit sameness。
Overflow 有明确规则。AIGP value 要在 unsigned 64-bit 最大值封顶,绝不能 wrap。第一个 TLV 已是 maximum 时应视为 malformed,因为无法再有意义地增加。若 wrap 发生,最昂贵路径会变成极小数字,看起来反而最佳。
Malformed handling 也需要可见性。AIGP attribute 若带 transitive bit,就是 malformed,应丢弃该属性。Unknown TLV 与重复 TLV 有保留规则,只有第一个 AIGP TLV 参与计算。运营输出必须区分 attribute absent、被 session policy ignored、malformed discard、存在但未胜出。
选路影响比“多一个 metric”更大。AIGP 并不是简单排在普通 tie-break 后面。当 Decision Process 进入 tie-breaking 且至少一个 candidate 带 AIGP TLV,RFC 7311 会先剔除所有不带 TLV 的候选,再对其余 route 计算属性值加本机到 next hop 的 IGP distance,保留最低 total。
所以 presence 本身先划分等级,然后数字才比较。一条 AIGP 数值极大的 route 可能仍胜过一条没有 AIGP 的小成本 route,因为后者已退出。RFC 7311 把它类比为 OSPF 中 intra-area route 即使距离大,也会优先于 inter-area 或 external route。
Partial rollout 必须有迁移计划。一条 path 已带 AIGP,另一条本来很有吸引力却未带属性。仅仅 enable 某个 session,就可能在物理 topology 没变时改变大量前缀的 candidate class。Expected route-set diff 要包含 attribute presence,而不能只比较数值高低。
AIGP 也不会覆盖一切。若某条 route 在 tie-breaking 之前就拥有唯一 highest degree of preference,可能根本不会考虑 AIGP。Invalid path、AS loop 与 unresolvable next hop 也会更早剔除。“lowest AIGP wins”只有在规定 candidate set 与 decision stage 内才成立。
候选可见性仍是依赖。Speaker 若只收到一条 route,就无法选择最低累计路径。RFC 7311 建议结合 best-external 与 ADD-PATH,让节点看到有用 alternatives。Metric 再精确,也修复不了缺失选择。
Route reflection 带来另一种视角问题。Reflector 不发送 all paths 时,可能按自己到 next hops 的 IGP distance 选择,隐藏对 client 总值更低的 path。Reflector 支持 AIGP 而部分 clients 不支持时,整个反射层也可能不再表达一致 policy。
验证要同时捕获 reflector 与 client 的 candidate sets、ADD-PATH direction、attribute retention、reflector total、client local distance 与最终 best-path reason。两台设备看到相同 TLV,不代表得到了相同 complete value。
Metric change 还把 IGP churn 耦合到 BGP。RFC 7311 警告,到某 prefix 的 IGP distance 频繁变化,可能产生同样频繁的 BGP updates。局部 link-cost oscillation 会越过 AS 边界成为 control-plane churn。
实现可在新旧距离差小于 configurable threshold 时抑制 update。Threshold 创造一个有意 dead band:减少 churn,却允许对外通告的累计值落后于实际 metric。
没有通用正确阈值。粗粒度 capacity class 也许容忍差 10,latency-sensitive topology 未必。控制记录应说明 maximum acceptable error、update rate、convergence cost 与依赖应用。Threshold change 是 policy change,不只是 performance tuning。
Maintenance 显示了 AIGP 的力量。IGP operator 常用接近 maximum 的 metric “cost out”某 link,在真正 down 前排空流量。AIGP 能把增加后的 cost 跨 BGP 边界传递,使包含该 link 的 routes 输给 alternatives。一次本地 maintenance action 变成多 AS steering signal。
因此变更权很重要。谁能 cost out 链路?哪些 prefixes 继承影响?新值多久传播?Attribute presence 会不会反而剔除一条没有 AIGP、却应作为逃生路线的 path?Runbook 需要 predicted totals 与 exact route-set diffs,而不是只有一条链路命令。
Security 与 operations 沿同一路径进入。RFC 7311 指出,错误或恶意引入 AIGP 可选中非预期路径。攻击者或错误 policy 不必伪造 reachability;只要在受信 administrative domain 内改变 ranking,就可能把流量导向观察点、拥塞链路或脆弱节点。
边界监测应对以下情况告警:disabled external session 收到 AIGP、非批准 prefix class 出现 origination、未知 originator、异常 next-hop rewrite、不在 unit registry 的 increment、递归 gap 导致 attribute 消失、以及接近 maximum 的数值。Rate-limited device logs 要进入 durable security record。
现代实现拓宽了设计空间。Cisco 当前 IOS XR 文档展示 multi-AS AIGP 与 total metric,支持范围随 release 与 platform 改变。Junos 25.2 则记录 Flex-Algo topology 的 IGP-metric-based AIGP path selection 与 actual-IGP-cost policy expression。
这些能力令 topology identity 成为 unit 的一部分。Low-latency Flex-Algo cost 与 default-topology cost 都是 integer,却来自不同 constrained graph。Route 跨域时若使用不同 algorithm identity 或 color,总和又会语法连续、语义断裂。
产品命令也不能替代 RFC scope。Vendor 可以说 AIGP 提供“optimal” selection;诚实含义只是,在当前实现、可见合格候选与批准度量下 total 最低。它不证明最低 latency、congestion、transit cost 或最佳 application outcome。
第一件 production artefact 应是 AIGP domain charter:列出纳入的 ASes、IGP domains、address families、sessions,满足 forwarding assumption 的 tunnels,以及每个必须 disabled 或忽略 AIGP 的 external boundary。
第二件是 metric semantics registry:定义每种 link cost、inter-AS increment、redistributed static value 与 topology algorithm 的含义和尺度,指定谁有权改变 source,哪些 validation 允许两个 source 相加。
第三件是代表性 prefixes 的 accumulation trace:从 origin value 开始,记录每次 next-hop change 与 increment、recursive chain、最终 local IGP distance 和 computed total;同时捕获带与不带 AIGP 的 candidates 与具体 elimination step,再跟踪 selected next hop、FIB 和实际 packet path。
第四件是 boundary matrix。每个 BGP session 记录 AIGP_SESSION 是否 enabled、peer 为什么属于本域、哪些方向携带属性、意外 reception 触发什么 alert。还应在隔离实验中测试双端错误启用,因为 non-transitive flag 无法保护双方主动拆掉的边界。
Rollout 从小 address family 与可观测 alternatives 开始。测试 mixed-support reflector/client、missing attribute、recursive gap、阈值上下 cost change、maximum value、cost-out、candidate loss、external leak attempt 与 rollback,并逐阶段比较预期和实际 route-set diff。
Rollback 有两个维度。Disable AIGP 会恢复普通 BGP selection,却也改变 attribute presence 与 candidate class。撤销 origination、disable sessions、清理已收 state 必须有顺序,避免不一致 islands。Rollback 后仍要重新验证 reverse path 和 FIB。
权力应分离。Network architecture 定义 administrative-domain boundary;IGP owners 定义 local metrics;interconnect owners 指定跨 AS increments;routing policy owners 控制 origination 与 sessions;security 监测 leakage;service owners 验证 traffic。不能由同一团队创造单位、发布数值并证明结果。
Lu Heng 的 minimum initial specification 支持这种窄范围安排。RFC 7311 为同一管理下自愿协调的 AS 提供机制,并不要求无关网络采用共同 metric 或放弃 local policy。Shared specification 保持最小,未来决定留在本地且可撤销。
Running-code primacy 决定证据次序。Configured metric 是声明,AIGP TLV 是携带的 claim,Decision Process log 是解释;FIB 与 packet path 才显示网络真正做了什么。如果 observed route 与 intended unit 不一致,标准合规不能让错误数字获得权威。
Practical data sovereignty 意味着同时控制 metric 与结果。Operator 虽拥有 routers,却无法追踪哪个 automation 改了 link cost、哪个 speaker 添加 increment、为什么 route 落选,就没有控制累积决定,只是在托管它。
AIGP 可以让碎片化内部网络表现成一个 metric space。它的价值恰恰建立在公共 Internet 不应成为一个 metric space。部署成功的条件是边界窄、单位一致、缺项可见、数据包证明算术。
最终问题不是每台 router 会不会相加,而是组织是否有资格把总和称为距离。
来源
- RFC 7311 — The Accumulated IGP Metric Attribute for BGP
- RFC 4271 — A Border Gateway Protocol 4
- RFC 7911 — Advertisement of Multiple Paths in BGP
- RFC 4456 — BGP Route Reflection
- RFC 5065 — Autonomous System Confederations for BGP
- RFC 7606 — Revised Error Handling for BGP UPDATE Messages
- Cisco IOS XR — Accumulated IGP attributes for BGP
- Juniper Junos 25.2 — IGP-Metric-Based AIGP Path Selection for Flex-Algo Topologies
- Lu Heng — Running-Code Primacy
- Lu Heng — Minimum Initial Specification
- Lu Heng — Data Sovereignty
会员简报
档案背景详情
使用相应会员等级登录,即可解锁完整简报与来源注释。
仅限 Strategic Circle
Strategic Circle
所有读者均可浏览。加入并登录后可解锁档案简报。
加入 Strategic Circle仅限 Leadership Alliance
Leadership Alliance
符合条件的 IP 资产所有者和管理层可登录查看 Leadership Alliance 简报。
加入 Leadership Alliance
