摘要

  • 路由反射用经过配置的客户与非客户关系取代传统 IBGP 全互联,减少会话增长,却也让反射器的最佳路径选择成为传播边界。
  • ORIGINATOR_ID 和 CLUSTER_LIST 有助于发现反射环路,但不能认证路由来源;冗余、拓扑一致性与配置完整性仍由运营者负责。

会话数量问题转化为层级问题

在传统模型中,同一自治系统内的 n 个 BGP 节点需要 n*(n-1)/2 条独立 IBGP 会话。原因在于,经一个 IBGP 对等体学到的路由通常不会再通告给另一个 IBGP 对等体。为了获得外部路由信息,每个节点都必须拥有相应的内部直接连接。

RFC 4456 为经过配置的路由反射器放宽了这条规则。它把内部对等体分为客户和非客户。反射器完成最佳路径选择后,会把从非客户学到的路由反射给所有客户;从客户学到的路由则会反射给其他客户和非客户。客户之间不必全互联,非客户之间仍保留全互联要求。

这带来了真实的扩展收益。传统节点可以继续共存,集群也可分阶段引入,无需改变自治系统本身。但会话减少并非没有代价:反射器只分发自己选中的最佳路径,客户能看到什么因此取决于别处作出的决策。

配置授予角色,不授予路由权威

协议没有让客户动态声明自己是反射器客户的机制;RFC 4456 把手工配置称为最简单的方法。这种配置关系授权反射器应用规定的内部再分发规则,却不能证明某个前缀由合法主体发起,也不能证明外部邻居有权通告它,更不能证明反射器偏好的路径对每个客户都同样有利。

运营权力有所集中,但边界仍然清楚。反射器依照 BGP 决策过程选择最佳路径,并控制哪些内部关系会收到它。边界路由器仍掌握导入策略;运营者仍负责 IGP 设计、MED 处理、LOCAL_PREF、验证、容量与事件响应。大型自治系统是主要受益者:它们避免了会话数量的二次方增长,并能渐进迁移。成本则转移到反射器放置、冗余、配置完整性、路由可见性和故障域设计上。

环路标记保护反射拓扑

路由反射会在配置错误时引入再分发环路的可能。RFC 4456 增加了两个可选、非传递属性。ORIGINATOR_ID 记录本地自治系统内路由发起者的 BGP Identifier。如果该属性已经存在,节点不应重新创建;如果路由携带节点自己的标识符,节点应忽略它。

CLUSTER_LIST 记录反射路由经过的集群序列。反射器必须把自己的 CLUSTER_ID 添加到列表前端;如果属性不存在,就必须创建它。如果列表已经包含本地 CLUSTER_ID,收到的通告应被忽略。措辞强度必须保留:创建和前置添加是 MUST 级要求,忽略行为在规范中是 SHOULD 级建议。

只有一个反射器的集群存在单点故障。多个反射器可以共享一个四字节 CLUSTER_ID,使一个反射器能够丢弃来自同一集群另一反射器的路由。因此,冗余依赖一致的集群身份和拓扑设计,而不只是多放一台设备。

路径选择可能不同于全互联

RFC 4456 警告,不同路由器看到的 IGP 开销可能不同,MED 也并非总是可比。在某些反射拓扑中,最终选择可能与完整 IBGP 全互联所得结果不同。文档讨论了使两者接近的方法,也指出强制完全等价可能过于受限或并不现实。

更强的要求在架构层面:必须谨慎设计拓扑,以防止环路并维持一致的路由视图;存在多条路径时,反射拓扑通常应与网络拓扑保持一致。反射器在反射路由时不应修改 NEXT_HOP、AS_PATH、LOCAL_PREF 或 MED,因为修改这些属性可能制造环路。

证据与边界

RFC 4456 规定了扩展问题、客户规则、环路属性、冗余方式和路径选择后果;RFC 4271 提供基础 BGP 交换与决策模型。关于权力、授权、受益者、成本与责任的结论,是从这些事实推导出的分析。

这些来源没有证明任何具名网络的反射器设计或当前配置,也没有认证路由来源,不能保证特定反射拓扑与全互联产生相同选择,更没有规定通用的层级数量或部署方式。RFC 4456 明确指出,这项扩展不会改变 BGP 原有的安全问题。

来源