两台通告同一客户前缀的边缘路由器描述同一个 VPNv4 目的地,直到有东西把它们分开,而分开它们的是 route distinguisher。它限定前缀,但不决定谁来导入结果,那是 route target 的职责。分配 RD 时,要从“在每一个这些通告可能相遇的域里都必须保持可区分”的路由集合出发,而不是从单台设备的文件布局出发。你选定的编号是一个标识,后续复核都要依赖它,所以它应当先进入清单,再进入配置。

一个 RD 加一个前缀就是一个目的地

一个 RD 加一个 IPv4 前缀构成控制面比较的 VPNv4 目的地。把同一前缀发给两台 PE 用于不同客户,若 RD 相同,它们就是在通告通往同一目的地的路径。屏幕上没有任何东西告诉你这种归组是错的,因为平台完全按标识所说的去做。改动其中一台的 RD,旧通告会被撤销,另一台会在不同标识下出现新通告。所有依赖旧标识的下游内容,从路由选择到已保存的操作员过滤器,现在指向的东西已不存在。

每个目的地有多条路径是 BGP 的正常行为,不是症状。说话者可以在为转发选择一条最佳路径的同时保留多条收到的路径,收到与选中之间的差距,正是可见性问题所在。当某条路径像是消失时,先确认它所属的标识是否仍然存在,再看会话。

同一个 RD,同一个目的地,路径不同

以同一业务的名义从两台路由器发送同一个 RD 和同一前缀,两者都在提供通往同一目的地的路径,通常下一跳不同。route reflector 转发其中哪一条,是关于 reflector 的决定:它的路径选择、通告能力,以及叠加在其上的任何策略。两台边缘路由器都控制不了这个选择。给两个通告不同的 RD,它们各自成为独立目的地,于是两者都能在一个只承载单一标识选中路径的控制面里存活。

可见性与多路径在接收侧 VRF 相遇,但不是同一个决定,承载两个标识的 reflector 并没有配置第二条已安装路径。VRF 安装 导入策略所允许的内容,以及自身最大路径设置所允许的内容。若想让第二条路径真正被使用而不只是可见,需要单独检查这个设置。

本地唯一性规则不是策略

给每台 PE 和每个路由实例分配各自的 RD 是稳妥的约定:它命名来源,避免不相关的业务在同一标识上相撞,并给清单一个稳定的键。有些平台只要求设备内部唯一,并明确允许路由器为同一 VPN 实例共用 RD。这种许可是实现约束,不是可以交给厂商的跨网络规则。如果域跨越多个团队,请自己写下分配策略。

归属从不来自数字。某台 PE 用 65000:12、另一台用 65000:13 只是一种习惯,真正把路由放进 VRF 的,是像 65000:112 这样相匹配的导出与导入目标。把 RD 当作路由的标识,把 route target 当作把它带入 VRF 的许可。

在 VRF 上证明变更,而不是在显示上

在动 RD 之前,先写下四件事:PE 今天通告什么、reflector 反射什么、接收侧 VRF 导入什么、它选择哪条路径。新 RD 撤销一个通告并引入另一个,所以变化会在会话两侧出现,只看通告侧很容易误读。验收应基于你想要的连通性,而不是前缀列表里多出的一行。下表让这三个标识在复核中不至于混淆。

IdentifierQuestion it answersWhat breaks when it is confused with another
Route distinguisherWhich route identity is this?Two services collapse into one destination, so one advertisement withdraws the other
Route targetWho is allowed to import it?Routes arrive in a VRF that should not have them, or never arrive at all
VRF import policyWhat does this instance accept and install?The route is visible on the PE but never selected in the VRF

从通告侧 PE 入手,在移除任何东西之前,比较同一前缀的两个标识。下面的 IOS 命令依次回答三个问题:旧通告是否还在、新标识对 reflector 是否可见、VRF 是否选中该前缀。

show bgp vpnv4 unicast rd 65000:12 203.0.113.0/24
show bgp vpnv4 unicast rd 65000:13 203.0.113.0/24
show ip route vrf CUSTOMER-A 203.0.113.0/24

其他平台用不同语法打印同样的信息,这些问题在变化之后依然成立。如果 reflector 上没有新标识,而 PE 却把它列为已通告,首先要怀疑的是 reflector 的策略或通告能力,而不是编号。

把 PE、实例、RD、导出与导入目标以及前缀归属记录在一处,因为只有存在这份记录时,下一次分配才是查询而不是猜测。保留旧 RD,直到新标识在接收侧 VRF 中可见,再在第二步撤销它,让每个阶段都可回退。

相关文章