凭借云计算的弹性可扩展性、按需付费模式和高可用性,越来越多的租户将其应用(例如 AI 训练、分布式计算)迁移至云端。容器技术已被广泛应用于大规模云管理中。作为一种流行的容器编排平台,Kubernetes 已被各大云服务提供商广泛部署,以管理容器化应用。
现代数据中心通常托管多个集群以确保地理分布和容错能力,租户可以创建虚拟私有云(VPC)来管理虚拟机。然而,随着 VPC 规模的扩大,单集群部署暴露出了严重局限。鉴于 Kubernetes 为获得最佳性能建议的集群规模有限,单集群架构难以满足大规模 VPC 的低延迟和高可用性需求。
因此,VPC 需要跨不同集群部署。如图 1 所示,VPC1 管理着分布在跨越不同集群的多个计算节点上的虚拟机。这种部署带来了巨大的网络挑战:频繁的虚拟机间通信引发了跨集群流量的急剧增长。先前工作中的实证数据显示,75% 的网络流量源自 VPC 内部的虚拟机/容器交互,这种密集的东西向流量模式最终造成了网络瓶颈。因此,在云环境中实现高效的跨集群VPC通信至关重要。

遗憾的是,大多数现有工作主要关注单集群 VPC 通信,难以支持跨集群场景,例如 Kube-Ovn 和 VirtualCluster。它们在跨集群通信时表现出的可扩展性有限。虽然 Submariner 和 Istio 等现有解决方案通过软网关和主备机制解决了跨集群通信问题,但仍存在严重局限性。
具体来说,由于架构缺陷,这些方法在吞吐量和可靠性方面表现出不足:1)由软件数据包处理延迟导致的单网关转发能力缺少优化;2)通过静态主备协调实现的故障恢复效果不佳。前者引入了不可忽视的端到端转发延迟,而后者在异常(例如突发流量/故障)场景下表现出较长的恢复时间。因此,迫切需要能够提高跨集群通信吞吐量和可靠性的替代解决方案。
然而,设计这样一个跨集群 VPC 通信框架面临着重大挑战。一方面,跨集群通信依赖于网关,这种架构使得网关节点成为转发瓶颈,导致跨集群流量的吞吐量较低。提高吞吐量需要在链路间进行精细的流量转发,并优化网关转发能力。另一方面,网络设备和链路的故障在当今网络中是不可避免的,而涉及多个网络设备的冗长流量路径增加了服务中断的概率,导致可靠性较低。提高可靠性需要实时的健康检查和流量调整机制。
为了克服上述挑战,我们设计了 HiReC,一个高吞吐量且可靠的跨集群 VPC 通信系统,该系统利用多网关来转发跨集群流量。HiReC 的核心思想分为两部分:1)为了优化动态跨集群流量的转发,HiReC 使用基于取整的映射算法在网关之间实现负载均衡。此外,HiReC 利用 XDP 技术,通过绕过 Linux 网络协议栈处理和转发数据包,增强了网关的转发能力。2)为了克服由网络设备不可靠性带来的局限,我们设计了一个基于 eBPF 的监控模块和一个自适应负载调整模块。
背景与动机
单集群工作的局限性
近期的研究工作(例如 Kube-OVN、VirtualCluster 等)主要集中在实现 VPC 网络功能上,通过软件定义网络技术优化了集群内 VPC 通信。
然而,由于分布式控制平面同步的内在复杂性以及运维管理方面的挑战,这两种解决方案在扩展到跨集群部署时都面临可扩展性限制。这种去中心化特性需要复杂的跨集群通信和协商机制,而这些机制通常不被原生支持。因此,现有的实现对跨集群 VPC 通信能力的支持有限。
跨集群工作的局限性
为了实现跨集群通信,Istio 引入了容器化的软件网关来管理跨集群流量。同样,Submariner 使用基于 IPsec 的软件网关提供透明的多集群通信。
然而,这两项现有工作都存在以下缺点:(1) 网络吞吐量低。 Submariner 和 Istio 在每个集群中仅部署一个网关用于跨集群流量转发,未能考虑到单个网关固有的转发能力限制。我们评估了网关数量对吞吐量的影响,如图 2 所示,当流量增加时,单个网关容易达到转发能力瓶颈,导致低吞吐量。然而,多个网关可以提供更大的转发能力,从而实现更高的吞吐量。此外,它们依赖网关的内核网络协议栈进行跨集群数据包处理,这在流量转发中引入了次优的延迟。(2) 可靠性低。 云网络中的突发流量频繁且不可预测,这使得网关容易过载。遗憾的是,Submariner 和 Istio 都忽视了过载情况。另一方面,它们都利用主备网关机制进行故障转移,这需要很长时间才能实现故障恢复。

我们的见解
如表 1 所总结,Kube-OVN 实现了高性能的单集群 VPC 通信,但由于控制平面的复杂性,将其扩展用于跨集群 VPC 通信具有挑战性。Submariner 和 Istio 引入网关以支持跨集群 VPC 通信,消除了对复杂控制平面的需求。然而,它们忽略了网关的转发能力和性能,并且仅限于通过主备机制处理网关过载/故障。
跨集群 VPC 通信的一个实际解决方案是部署多个网关。一方面,部署多个网关显著提高了转发能力,从而能够高效处理更大量的跨集群流量。另一方面,部署网关消除了对复杂控制平面的需求。然而,当流量负载在多个网关之间分布不均或当某个网关发生故障时,很容易导致跨集群流量转发效率低下和潜在的服务中断。
基于这一见解,我们提出 HiReC。HiReC 引入了一个由多个网关组成的网关层用于跨集群 VPC 通信,提供更高的转发容量。为了提升转发性能,HiReC 利用 XDP 加速跨集群流量转发。此外,HiReC 利用 eBPF 技术进行实时、低开销的网关监控,能够跟踪网关负载和健康状态。而且,HiReC 引入了自适应负载调整机制,根据网关高负载或故障情况自动调整网关间的负载分布。这确保了最优的负载均衡和低延迟的故障恢复。因此,HiReC 提供了具有高吞吐量和高可靠性的跨集群转发。
如表 2 所示,我们评估了 Submariner 和 HiReC 在两个关键指标上的表现:吞吐量和恢复延迟。结果显示,HiReC 能将吞吐量提高约 1.5 倍,并将恢复延迟降低约 19 倍。


系统设计
设计目标
HiReC 是一个云环境下的跨集群 VPC 通信框架。我们的设计目标如下:
- 高吞吐量: 采用映射算法实现负载均衡,并通过高性能 XDP 加速跨集群流量转发。
- 高可靠性: 专注于快速故障恢复,以避免网络中断降低租户体验。
- 兼容性: HiReC 是一个开源且易于使用的平台。它支持轻量级部署,并且可以根据特定需求进行定制。
系统概览

如图 3 所示,HiReC 由以下关键组件组成:
网关层设计。 我们将网关的转发能力抽象为网关层,该层实现了高吞吐量和可靠的跨集群流量转发。网关层基于运行在现有数据中心网络架构之上的逻辑覆盖网络来促进多个集群之间的通信。我们使用专用服务器来托管网关节点,以避免转发性能下降。为了实现层内网关间的负载均衡,我们提出了网关节点映射算法。通过这种方式,我们可以在遇到网关异常时控制受影响 VPC 的数量,也可以当 VPC 产生突发/异常流量时,控制受影响网关节点的数量。
基于 XDP 的转发加速。 传统的网络协议栈会产生显著的转发开销。为了解决这个问题,我们引入 XDP 来实现网关流量的快速转发。通过在网卡驱动层挂载 XDP 函数,我们解析传入数据包的头部信息,查询内核路由信息,并基于此路由信息将数据包直接引导至目的地。通过绕过网络协议栈引入的转发开销,我们能够实现低延迟和高吞吐量的跨集群流量转发。
基于 eBPF 的自适应调整。 不可避免的异常通常会限制系统的转发性能。为了确保高可靠性转发,我们引入了一种基于 eBPF 的自适应调整机制。利用 eBPF 技术,我们可以低开销地监控网关节点的负载信息和运行状态。基于监控信息,我们可以适当地执行基于加权开销多路径路由的自适应调整机制。该机制促进了在响应网关负载不均衡或网关节点故障时的无缝流量迁移,确保网络不间断运行。
高吞吐量跨集群转发
GNM 算法设计
问题定义
我们形式化定义网关节点映射算法,并考虑以下两个约束条件:
(1) VPC 约束。 考虑到突发/异常流量,我们不希望单个 VPC 的突发/异常流量影响过多的网关节点。因此,一个 VPC 映射到的网关节点数量不应超过 a,其中 a 是由系统需求确定的常数。
(2) 网关节点约束。 我们不希望单个网关节点的故障影响过多 VPC 的流量转发。因此,要求一个网关节点转发不超过 b 个 VPC 的流量,其中 b 是由系统需求确定的常数。
我们的目标是实现所有网关节点之间的负载均衡,这可以提高服务可用性和执行效率。我们证明该问题是 NP-难的。
算法设计与性能分析
为了解决该问题,我们提出了一种近似算法,称为基于舍入的网关节点映射,它利用了经典的随机舍入方法。第一步是构建一个线性规划作为 GNM 的松弛问题并求解。在第二步中,我们阐明如何将网关节点映射到 VPC,从而获得可行解。RGNM 可以在高概率下达到 O(log n) 的近似比,其中 n 是网关节点的数量。

讨论
动态流量。 当 HiReC 初始化时,运行 GNM 以实现 VPC 初始流量需求的负载均衡。当创建一个新 VPC 时,HiReC 执行增量更新。此外,当大多数 VPC 的实时流量需求与初始流量需求存在显著差异时,HiReC 会重新执行 GNM 算法以更新映射。
不同的目标。 尽管我们在 GNM 的公式化中选择了负载均衡作为关注点,目标函数可以根据系统需求进行更改。例如,对于具有高实时性要求的应用,我们可以用通信时延最小化来公式化 GNM 问题。
基于 XDP 的转发加速模块
XDP 代表快速数据路径,它提供了一个框架,能够在 Linux 内核中实现高性能的可编程数据包处理。它在软件中最早可能的时间点运行程序,即网络驱动程序接收到数据包的时刻。XDP 通过两个关键设计特征实现了最佳效率:协议栈前处理和零拷贝执行。凭借一系列辅助函数,XDP 天然适合数据包路由任务。
我们采用隧道技术在多个集群的网关之间建立连接,以实现跨集群 VPC 通信。然而,由于网络协议栈的高处理开销,这种方法难以满足对延迟敏感的应用的需求。
为了解决这个问题,我们在网关节点利用 XDP 来实现快速的跨集群数据包转发。如图 4 所示,每个网关节点包含隧道端点信息模块和旁路转发模块。通过上述两个模块,我们实现了早期的快速数据包转发,而不依赖于内核协议栈的处理。

图 4 还简要描述了转发工作流程。具体来说,当网关节点接收到一个数据包时,BFD 使用 bpf_fib_lookup() 辅助函数查询内核中的转发信息库以获取该数据包的路由规则。其次,BFD 通过查询 eBPF 映射来提取用于封装数据包的隧道端点信息。之后,BFD 添加包含隧道信息的外部头部,重新计算校验和,并完成数据包封装。最后,BFD 使用辅助函数 bpf_redirect() 将数据包转发到出口网络接口。通过这种方式,数据包可以被快速封装并转发,从而减少了大量的数据包处理延迟并提高了吞吐量。
高可靠性跨集群转发
在本节中,我们将介绍高可靠性跨集群转发机制。我们基于 eBPF 持续监控网关节点的负载信息以及节点和链路的健康状况。利用这些信息,我们可以检测异常事件并进行自适应配置调整以解决异常。
监控模块
为了更好地了解网关节点的转发状态,我们需要监控网关节点的负载信息。eBPF 被广泛应用于安全监控、性能分析、系统跟踪等领域,允许用户将自定义的 eBPF 程序挂载到内核挂载点。由于 eBPF 程序完全在内核中运行,它们可以实现每秒近乎零的上下文切换,从而最大限度地减少开销。受此启发,我们使用 eBPF 来监控网关节点的 CPU 和吞吐量信息。

如图 5 所示,我们在每个网关节点引入一个收集器来收集节点负载信息,包括 CPU 利用率和吞吐量。我们基于 eBPF 实现收集器,这有助于实现低开销和高效的数据收集。然后,这两个指标被用于估算网关节点上的负载。为了更好地评估网关节点的负载,我们根据历史网关负载数据计算两个负载阈值,T_h 和 T_l。这些阈值用于区分高负载网关、低负载网关和正常负载网关。因此,我们可以感知网关节点是否遇到过载。此外,一旦网关节点的收集器不工作,我们就知道该网关发生了故障。
自适应流量调整
为了保证网关的可靠性,HiReC 需要实现无缝流量迁移来处理异常事件。ECMP 机制被用于将数据包分发到多条路径以实现负载均衡。然而,基于流的 ECMP 转发可能导致更严重的负载分布不均。
为了解决这个问题,我们提出了一种基于 WCMP 的自适应流量迁移机制。当监控模块检测到节点故障或过载时,它会通知 Agent 触发自适应流量迁移模块,动态更新路由规则和流量转发策略。具体而言,我们设计了自适应网关节点负载调整算法来处理突发流量。如算法 2 所示,首先我们获取网关节点的负载信息。随后,我们计算每个网关节点的负载因子比率。然后,Agent 根据负载因子计算网关节点的流量分配权重。在获得流量分配权重后,Agent 将修改相应 OVS 的流表以实现负载感知流量调度。在网关节点/链路故障的情况下,Agent 通知 OVS 将故障网关节点/链路的路由权重设置为零,允许其他健康的网关节点接管故障网关节点/链路的流量,从而实现不间断且无缝的流量迁移。一旦网关节点恢复或添加了新的网关节点,系统将重新分配网关节点资源给 VPC。

讨论。 HiReC 基于网关监控信息调整流量,可以在短时间内处理过载并确保系统的可用性。主动感知突发流量的方法可以很好地集成到我们的框架中,以帮助实现更好的过载处理。此外,我们的网关层已经实现了高效的东西向流量转发,并且还可以扩展以支持高级网络功能,例如 TCP 迁移。
实验评估
基线: 在实验中,为了评估 HiReC 系统结合网关层和自适应调整机制设计的鲁棒性,我们进行了两个部分的性能评估:1)HiReC 三种实现方式的性能对比;2)HiReC 与另一种跨集群通信解决方案 Submariner 的性能对比。
- HiReC-RAW: 这是一种基础部署方式,网关被顺序地分配给集群内的每个 VPC。它作为性能比较的基线。
- HiReC-LB: 该实现采用所述的映射算法将网关分配给 VPC,从而实现负载均衡。
- HiReC-LB+XDP: 此版本在 HiReC-LB 的基础上,在网关节点集成了基于 XDP 的转发以提升性能。
- Submariner 作为一个开源的多集群连接解决方案,其跨集群流量转发依赖于软件网关架构。
指标: 吞吐量、恢复时延。



通过实验测试,HiReC 相较于现有方案能够有效提高吞吐量和降低故障恢复时延。在基于 Redis 应用的测试中,HiReC 也能有效提高 RPS 指标,表明了 HiReC 对于真实应用部署场景下的有效性。
结论和未来工作
本文提出了一种云环境下高吞吐量且可靠的跨集群 VPC 通信系统,HiReC。为了提高跨集群通信的吞吐量,我们采用了结合映射算法的网关层,并实现了基于 XDP 的流量转发。为了应对异常事件,我们创新性地提出了自适应调整机制。实验结果表明,我们提出的 HiReC 能够有效提升跨集群通信的吞吐量和可靠性。
未来,我们将致力于通过探索用于主动负载调整的流量预测、加密集成等方向,进一步完善跨集群通信。此外,HiReC 架构提供了必要的流量拦截点,为集成网络排序、梯度聚合、TCP 迁移、网内计算等网络功能奠定了基础。