内容提要
DeepL 在多区域混合网络中通过 AWS Cloud WAN 原生接入 Direct Connect 网关,利用本地 AS_PATH 预置(至少两次,实际五次)排空单条 Direct Connect 链路:预置使该区域核心网络边缘改走对等边缘路径,其他区域仍保留最近出口,且 BGP 会话不断开,避免收敛中断。需注意跨区域数据传输费用、回程流量需在自有路由器降低本地优先级,以及无本地接入区域的路由检查。未来计划用路由策略控制故障切换与路由汇总。
延伸解读
为什么不用本地优先级做排空
文章指出,Direct Connect 网关的本地优先级在 AS_PATH 之前评估,且一旦给前缀打上本地优先级社区,该排序会同时作用于网关服务的所有区域。DeepL 两个数据中心通告相同的 /16 前缀,若降低都柏林路径的本地优先级,所有区域都会改走同一出口,未排空区域将失去最近出口。因此排空只能靠 AS_PATH 预置,在核心网络边缘逐区域生效。
预置次数与回程流量的两个易错点
预置至少两次才能让被排空区域边缘改选对等路径;单次预置只会与对等路径长度打平,而 Cloud WAN 在平局时优先 Direct Connect 网关路径,排空不会生效。DeepL 实际用五次留余量。另外预置只影响离开 AWS 的流量,数据中心到 AWS 的回程需在自有路由器上降低都柏林会话的本地优先级,两个方向独立选路,可能不对称。
排空期间的代价与检查项
排空生效时,被排空区域的流量会跨区域经核心网络从其他 Direct Connect 位置离开,维护窗口内会产生跨区域数据传输费用。默认路径选择下,Cloud WAN 在等价的同对等路径间自行选择,无法指定哥本哈根或斯德哥尔摩承接流量。此外还需在排空前和排空期间检查没有本地 Direct Connect 位置的区域(如美国、东京),确认它们未继续使用被排空链路。
路由策略要解决的两个后续问题
文章提到 DeepL 计划采用 Cloud WAN 路由策略,按优先级规则显式控制核心网络内的路由传播和 BGP 路径属性。一是确定性故障切换:默认选路下无法决定哪个剩余位置承接被排空区域的流量,策略可设定明确偏好。二是路由过滤与汇总:随着接入位置增加,策略可在核心网络内汇总路由,避免为每条链路手工维护更细前缀。
Q&A
DeepL 为什么不用 BGP local preference 来排空单条 Direct Connect 链路?
因为 Direct Connect 网关上的 local preference 是全局生效的:一旦给前缀打上 local preference 社区,就会覆盖默认的按区域最近出口策略,影响所有区域,而不仅仅是待排空的区域。DeepL 在两个数据中心通告相同的 /16 前缀,降低 Dublin 的 local preference 会导致所有区域都改走其他出口,破坏其他区域的最近出口。要实现按区域不同排序,需要为每个位置配置更具体的前缀,而这正是 DeepL 想避免的按链路配置。
在 AWS Cloud WAN 中,AS_PATH prepend 是如何让某个区域的流量改走其他出口的?
每个核心网络边缘(CNE)会从 Direct Connect 网关收到保留 AS_PATH 的本地路径,同时从对等边缘收到多一跳 AS 的路径。默认情况下,CNE 优先选择 AS_PATH 更短的 Direct Connect 网关路径。在待排空链路的本地接口上执行 AS_PATH prepend(至少两次,DeepL 用五次),使该区域 CNE 从网关收到的路径长度超过从对等边缘学到的路径,于是该 CNE 改选对等路径,流量经核心网络从其他 Direct Connect 位置出口。其他区域的 CNE 不受影响,仍保持本地出口。
排空一条 Direct Connect 链路时,为什么至少要 prepend 两次?
因为单次 prepend 只会使路径长度与对等边缘路径持平。在路径长度相等时,AWS Cloud WAN 会优先选择从 Direct Connect 网关传播的路由,这样待排空的位置仍会被使用。至少两次 prepend 才能让该路径严格长于对等路径,从而触发改选。DeepL 实际使用五次 prepend 以留出余量。
排空 Dublin 链路的具体操作步骤是什么?
1. 确认稳态:每个区域的 CNE 都通过本地 Direct Connect 位置出口。2. 在本地路由器上对 Dublin 虚拟接口通告的前缀执行 AS_PATH prepend(至少两次,DeepL 用五次)。3. 在本地路由器上降低 Dublin 会话的 BGP local preference,使回程流量也移走。4. 验证 eu-west-1 边缘改选来自 eu-central-1 或 eu-north-1 边缘的路径,并确认这两个边缘仍本地出口。5. 确认双向流量已移开且稳定。6. 执行维护。7. 反向操作:移除 prepend、恢复 local preference,确认 eu-west-1 恢复本地 Dublin 路径。
使用这种排空模式时需要注意哪些成本或风险?
主要考虑:1. 跨区域数据传输费:排空期间 eu-west-1 流量会跨区域传输,需为维护窗口预留费用。2. 回退位置不可控:默认路径选择下,AWS Cloud WAN 在等价对等路径中自行选择,无法控制流量落到 Copenhagen 还是 Stockholm。3. 回程流量:prepend 只影响离开 AWS 的流量,回程需在自有路由器上降低 local preference。4. 有状态防火墙需对称流量:确保双向使用同一回退位置。5. 无本地 Direct Connect 的区域(如美国、东京)需检查是否仍使用被排空链路。
DeepL 未来计划如何改进故障切换和路由管理?
DeepL 计划采用 AWS Cloud WAN 路由策略,实现两个用例:1. 确定性维护故障切换:通过路由策略显式指定排空区域流量的回退位置,而不是依赖默认的等价路径选择。2. 路由过滤与汇总:随着位置增加,用路由策略在核心网络中汇总路由,避免手工为每条链路配置更具体的前缀,保持通告路由数量可控。