摘要
- RFC 10039 按租户流量的转发行为界定域,而不是照搬 AS、IGP、机房或组织边界;同一域上的所有互通网关却必须配置同一个 DOMAIN-ID。
- D-PATH 中出现本地 DOMAIN-ID 会触发回流判断,其长度还会进入 EVPN 与 IPVPN 候选路由的选择。一个看似普通的编号错误,足以制造假环路或放过真环路。
变更评审会上,拓扑图很整齐:两个数据中心、一段 IPVPN 骨干、两组冗余网关,都位于同一个运营者的 AS 内。工程师给图上的三个色块各分配了 DOMAIN-ID。有人问:“这三个色块为什么正好是三个域?”会议突然安静下来。
问题不在编号格式,而在编号所代表的事实从未被证明。
RFC 10039 为 EVPN 与 IPVPN 域之间的租户三层互通规定了统一过程。互通 PE 把从一个域收到的路由导入 IP-VRF,再用相邻域适用的地址族和封装属性重新起源。当两台冗余网关同时连接这些域时,一台把 IPVPN 路由重发为 EVPN,另一台又可能把它送回 IPVPN,于是控制面形成回路。D-PATH 用一串域记录来识别这种返回。
但它只会处理配置提供的域,不会自行发现真实边界。
域首先是一项转发事实
RFC 10039 的定义没有沿用常见的行政标签:两台 PE 面向同一租户,且两者之间的报文无需在任何中转路由器上执行租户空间的 IP 查找,才属于同一域。需要这类查找之处,才构成网关连接的域边界。
因此,一个域可以跨越多个 AS,一个 AS 也可以包含多个域;IGP 实例同样不能自动给出答案。站点、云区域、设备厂商或运维团队可以帮助画图,却不能代替对实际转发路径的检查。若恰好重合,也应把重合当作测试结论,而不是命名惯例。
DOMAIN-ID 的外形尤其容易诱导误读。它由四字节 Global Administrator 和两字节 Local Administrator 组成;前一部分可以填公有或私有 ASN、IPv4 地址,也可以使用其他值。这种设计方便分配和排障,却不把 DOMAIN-ID 变成 ASN 断言或地址所有权证明。写成 6500:1 只是表示法,不是拓扑自动推导。
标准要求的是配置一致性:每个域必须有唯一 ID;同一域上的所有网关必须使用同一个 ID;连接两个域的网关则分别持有两个不同 ID。ID 可以按整条域互联分配,也可以按租户 IP-VRF 分配。后者在 VRF 之间发生路由泄漏时尤为关键,因为接收侧会在相应 VRF 的本地 ID 上下文中判断回流。
换言之,启用前必须有人回答四件事:谁有权分配,唯一性覆盖到哪里,哪些网关共享一个域,哪些 VRF 采用哪个作用域。协议不会替组织补齐这些答案。
一条配置声明如何变成否决权
D-PATH 是可选、可传递的 BGP 路径属性,IANA 将其登记为属性代码 36。每一项包含六字节 DOMAIN-ID 和一字节 ISF_SAFI_TYPE,后者说明该段使用 EVPN、IPVPN,或在某些本地起源场景中使用零值。
SAFI 类型有助于确认互通过程是否按设计发生,但不参与环路身份比较。只要收到的 D-PATH 中有任一 DOMAIN-ID 与该 IP-VRF 的本地 ID 相同,网关就把它视作已经返回本域;即使配套的 SAFI 类型未知或不同,判断仍然成立。
这是防环的力量来源,也是错误配置的放大器。两个真实不同的域若误用了同一个 ID,合法路由会被当成回流;同一域的两台冗余网关若使用不同 ID,返回路由又可能避开识别。把 ID 绑定在错误的 VRF 作用域中,会让网关比较的对象与工程师脑中的对象根本不是一回事。
这个声明还进入选路。对于同一前缀的 EVPN 与非 EVPN 跨子网转发候选,流程在 LOCAL_PREF 之后比较 D-PATH 长度,剔除不是最短的路径;没有 D-PATH 的路径按长度零处理。这个数字不是光纤距离、时延、拥塞、费用或可信度,只是配置声明的域经过次数,却会改变最终留下的候选。
所以,看到属性并不等于看到事实。抓包只能证明某台设备发送了一个域叙述;它不能证明各网关对域边界的理解一致,更不能证明 FIB 和报文结果正确。
是否传播,是风险分配而非美德选择
RFC 10039 不默认发送 D-PATH,并把它限定在 IPVPN 与 EVPN 路由上。网关必须显式开启。跨域重新起源时,标准给出两种处理姿态。
No Propagation Mode 是默认模式。网关像处理本地起源前缀一样重新初始化路径属性,不继续携带 D-PATH。这样能缩小远端继承的属性攻击面,却也失去用于识别冗余网关回流的域历史。路由策略或 Route Origin 扩展团体可以缓解风险,但标准没有把它们说成覆盖所有场景的保证。
Uniform Propagation Mode 则保留一组受限属性:适用的 AS_PATH、D-PATH,以及 iBGP 场景下若干内部属性。其他属性只有经本地导入或导出策略明确允许,才应跨越边界。下游因此获得更多来路信息,同时也可能接收语法正确、语义却不适当甚至恶意注入的状态。
两种模式都存在代价。前者用证据连续性换取隔离,后者用更大的验证责任换取可见性。治理正确的做法不是给整个网络贴一个偏好,而是在每条边界上记录所选模式、允许传播的属性、例外负责人和回退办法。
语法容错不会纠正错误世界观
对于坏编码,规则相当明确。D-PATH 结构畸形、总长度不足,或出现在不支持的 AFI/SAFI 上时,接收者按 RFC 7606 执行 treat-as-withdraw。未知的 ISF_SAFI_TYPE 可以接受,因为它不改变域 ID 比较。同一 UPDATE 中若出现多个 D-PATH,只保留第一个并继续处理。
这些措施控制的是报文损坏,识别不了“格式完全正确、含义完全错误”的 ID。RFC 10039 明确警告:DOMAIN-ID 配错或网关支持不一致,可能带来假阳性的环路检测、流量丢弃、次优或不一致选路。属性又是可传递的,错误或恶意的域信息还可能跨越多个管理边界。
最后一道墙是客户侧。D-PATH 属于 VPN 的“封闭花园”。合规 PE 在把前缀以普通 SAFI 1 单播通告给 CE 前必须删掉该属性。升级后的设备还应通过本地策略处理来自未升级邻居却带 D-PATH 的 ISF 路由;但标准没有定义如何判定邻居是否真正支持。版本清单、能力测试和出口抓包都必须由部署者补上。
用域边界协议约束上线
一份有效的域边界协议应按租户和互联编制。第一栏不是 ID,而是定义边界的转发测试:哪些 PE 之间不经过租户空间 IP 查找,哪里发生了这类查找。随后记录 ID 分配者、唯一性范围、碰撞检索、全部网关清单,以及每个接口或 IP-VRF 的精确绑定。若使用 ASN 或地址形态,必须明确它只是命名方案。
上线收据再补齐执行事实:各设备软件版本与经过测试的 D-PATH 行为;每条边界的传播模式和属性白名单;本地起源路由的 ID 策略;混合版本的处置;观察窗口、停止阈值与独立回退路径。变更人应能在下发前写出同一前缀每一跳预期看到的 D-PATH。
测试不能只走幸福路径。让一个合法前缀经过预期域序列;注入本地 ID,验证回流被识别;使用未知 SAFI 类型,确认身份判断仍然生效;构造畸形属性,确认撤回被局部控制;加入旧版本邻居,观察它究竟忽略、透传还是异常处理。最后在 CE 出口证明 SAFI 1 中已经没有 D-PATH。
同一批金丝雀前缀还要贯穿 Adj-RIB-In、候选选路、FIB 下一跳与真实报文。BGP 会话 Established 只说明会话建立;配置命令成功只说明解析器接受;可见 D-PATH 只说明一项声明被携带。只有当全部相关网关共享正确声明,并且合法路径与回流路径在观测中如预期分离,才能说这次防环部署已经成立。
RFC 4271 给出 BGP 基础决策过程,RFC 4364 描述 IPVPN,RFC 7432、RFC 9135 与 RFC 9136 构成 EVPN 互通语境。它们是公开规则,不是任何厂商或现网的合规证书。
来源
会员简报
档案背景详情
使用相应会员等级登录,即可解锁完整简报与来源注释。
仅限 Strategic Circle
Strategic Circle
所有读者均可浏览。加入并登录后可解锁档案简报。
加入 Strategic Circle仅限 Leadership Alliance
Leadership Alliance
符合条件的 IP 资产所有者和管理层可登录查看 Leadership Alliance 简报。
加入 Leadership Alliance
