摘要
- RFC 4456 允许 route reflector 受控地转发 iBGP 学到的路由,突破普通 iBGP 的不再通告规则。
ORIGINATOR_ID与CLUSTER_LIST为这个例外保存来源和反射历史。 - 本地身份匹配会让接收者忽略通告。在真正的冗余 cluster 内,这是正确防环;在无关反射域之间复用身份,就会把合法路由误认成“已经回来”。
- 证据必须把原始 UPDATE、精确处置原因、client 关系、各级 RIB、每个邻居的输出、FIB 和数据包串起来。Established 只证明 session 存活。
一个被模板复制的身份
设想一个 AS 有东西两个反射域,各由一对 RR 提供冗余。东部两台 RR 共用 10.0.0.42。这是刻意设计:两台设备代表同一个逻辑 cluster,任何一台都应识别已经由同伴处理过的路由。
整合期间,自动化模板把同一值下发给西部。物理与逻辑拓扑仍把两地视为不同层级,配置身份却宣称它们等价。来自东部 client 的路由抵达西部时,列表里已经有 10.0.0.42。西部 RR 发现“自己的”值,于是忽略通告。
这里不需要 TCP 中断,也不需要 NOTIFICATION。KEEPALIVE 可以持续,源前缀可以保持有效,其他区域甚至可能仍有替代路径。以邻居状态为中心的 NOC 屏幕一片绿色,但某个接收边界已经用四字节相等关系删掉了可达性。
这是一个合成场景,不是对真实事故的指认。它揭示的机制却来自标准:安全标签的意义取决于标签与现实拓扑是否一致。
iBGP 扩展性的例外
普通 iBGP 不会把从一个内部邻居学到的路由再通告给另一个内部邻居。这条规则避免缺少外部 AS_PATH 防护时形成传播环路,却迫使大型 AS 建立 full mesh。
Route reflection 用角色替代全互联。RR 从 non-client 得到的 best path 发给 clients;从 client 得到的 best path 可以发给 clients 与 non-clients。其他 RR 仍是内部 speaker,也可能被配置成其中任一角色。
Client 身份并不会在协议里动态协商。双方 session 能够完全建立,却各自持有不同的关系图。OPEN 证明对端发送了一个 AS 号和 BGP Identifier,不证明双方同意“谁是谁的 client”。因此反射安全不能只检查端口和会话,还要治理角色与拓扑。
基线反射还会压缩信息:RR 先选出自己的最佳路线,再将结果反射。客户端不会自动看到 RR 曾考虑过的全部候选。ORR 可以改变替谁观察 IGP 成本,ADD-PATH 可以在协商的方向提供多个候选,但两者都不取消反射历史检查。
两种身份,两道防线
ORIGINATOR_ID 是 type code 9、四字节、optional non-transitive 属性。RR 首次反射路由时,把该路由在本 AS 内的原始 speaker 的 BGP Identifier 写进去;已有值不应被重新创建。某路由器看到自己的 Identifier 时,应忽略该路由。
CLUSTER_LIST 是 type code 10 的 optional non-transitive 属性,按顺序保存路由经过的 cluster identities。RR 每次反射前必须把本地 CLUSTER_ID 加到最前方;若属性不存在就创建。接收 RR 只要在列表里找到本地值,就应认为信息回到了已经经过的反射域。
两者不是认证。ORIGINATOR_ID 回答“是否回到了最初把路由交给 iBGP 的 speaker”;CLUSTER_LIST 回答“是否又进入了已经记录的反射域”。它们不证明路由器拥有某个地址,也不证明外部 origin 获得授权。
RFC 6286 进一步说明:BGP Identifier 是 AS 内唯一的非零四字节值,不必是实际分配的 IPv4 地址。点分十进制只是表示法。Cluster ID 同样是一种逻辑标签,而不是接口可达性的证书。只要 equality 能影响接收,标签就不再是无害的命名。
什么时候相等才正确
一个 cluster 可以有多台冗余 RR。RFC 4456 明确允许它们共用配置的四字节 ID,使同一 cluster 内的 RR 丢弃同伴已经反射过的路由。这种共享是架构决定:这些设备在防环意义上属于一个等价类。
若共享越过等价类,效果就反转。复制模板、回收 router ID、合并 inventory、per-neighbor override 或未完成的层级迁移,都可能让无关域获得同一值。协议看不到工单与拓扑图,只能执行比较。
ORIGINATOR_ID 也有对应风险。一个 AS 内两台 speaker 若共用 BGP Identifier,第二台可能把第一台发起的路由当成自己的返回。无需先观察到 packet loop;身份碰撞本身就足以触发忽略。
因此不能用“所有值全球唯一”这种粗糙规则。BGP Identifier 需要 AS-wide uniqueness。Cluster ID 则需要精确 scope:真正同一 cluster 的冗余成员可以相同;任何合法传播路径上的不同反射域不得提前碰撞。
忽略、格式错误与选路不是一回事
含有本地 cluster 值但编码正确的 UPDATE 并非损坏报文。它触发的是语义防环。RFC 7606 处理 malformed attribute,是另一条处置分支。若遥测只留下“UPDATE error”,恢复团队就不知道是 parser、import policy、originator match 还是 cluster match。
即使没有硬匹配,两项属性也会影响后期 tie-break。RFC 4456 规定:存在 ORIGINATOR_ID 时,在相应步骤把它视作通告者的 BGP Identifier;随后偏好较短的 CLUSTER_LIST,没有列表视为长度 0。
这个长度不是物理跳数、时延、商业偏好或可信度。它只计算当前表示中保存了多少个反射身份。身份迁移可能在不让 prefix count 归零的情况下改变 best path。因此验证既要看丢弃,也要看候选集合、选择原因与各邻居的 Adj-RIB-Out。
ORR 解决“从谁的 IGP 视角选择”,不能授权接收一个已被本地身份判为返回的路由。ADD-PATH 增加可见路径,每条路径仍接受同样检查。RFC 3345 与 RFC 7964 的 persistent oscillation 是候选与 MED 交互导致的反复变化;虚假 cluster match 可以产生完全稳定的缺失。TCP 认证保护报文来源,也无法替错误语义兜底。
建一套身份账本
最小账本按 AS、VRF、AFI/SAFI 记录 BGP Identifier、默认与显式 cluster IDs、per-neighbor overrides、client/non-client 方向、冗余组、层级、软件版本和变更 owner。每个共享值都要回答:哪些设备为何被授权代表同一个反射域,故障边界是什么。
对受影响 NLRI,保存原始 UPDATE、ORIGINATOR_ID、完整且有序的 CLUSTER_LIST、本地比较值与精确 disposition。分别记录语法接受、originator 匹配、cluster 匹配、policy 拒绝、candidate 排名与 Loc-RIB 结果。再接上每个邻居的 advertised view、下游 Adj-RIB-In、FIB next hop 与 packet observation。
配置表达意图,UPDATE 携带收到的状态,比较器执行权力,RIB 保存控制面决定,FIB 把决定变成转发,数据包揭示服务结果。任何一层都不是其余层的替身。
先 canary 图,再改数字
迁移前建立有向的 client/non-client 图,明确哪些 RR 是同一 cluster 的冗余成员,哪些是相互连接的不同域,哪些在高层同时扮演 client。模拟每条合法 source-to-client path:路由不得在目的地之前遇到自己的 originator 或 cluster identity。
Canary 要覆盖所有 client class、冗余 pair、层级、地址族、厂商与 release。检查列表顺序而不仅是是否包含某值:每次反射都应在原序列前加上预期身份。出现无法解释的共享、session 无事件但路由消失、不同版本构造不同序列时立即暂停。
Rollback 不是恢复配置行。还要触发有界的 route replay 或 re-evaluation,确认下游已经替换错误状态、预期候选重新获选、数据包回到批准范围。
来源
- RFC 4456 — BGP 路由反射
- RFC 4271 — BGP-4
- RFC 6286 — AS 内唯一 BGP Identifier
- RFC 7606 — BGP UPDATE 错误处理修订
- RFC 9107 — 最优路由反射
- RFC 7911 — BGP 多路径通告
- RFC 7964 — BGP 持续振荡解决方案
- RFC 3345 — BGP 持续振荡条件
- FRRouting — BGP 文档
- Juniper — BGP Route Reflectors
- Cisco 8000 — BGP Route Reflectors
- 卢恒 — 最小初始规范
- 卢恒 — 现实层与符号权力
- 卢恒 — 运行代码优先
会员简报
档案背景详情
使用相应会员等级登录,即可解锁完整简报与来源注释。
仅限 Strategic Circle
Strategic Circle
所有读者均可浏览。加入并登录后可解锁档案简报。
加入 Strategic Circle仅限 Leadership Alliance
Leadership Alliance
符合条件的 IP 资产所有者和管理层可登录查看 Leadership Alliance 简报。
加入 Leadership Alliance
