Magma 是由 Meta Connectivity 开发并开源给 Linux 基金会的开源移动核心网项目,目的是构建灵活、低成本、可扩展的移动核心网。本文介绍了 Magma 架构设计的基本理念和取舍。原文: Implications of the Magma Architecture: Interoperability, Scale and Resilience
简介
如今有许多移动核心网开源实现,如Open5GS、Free5GC、OMEC,Magma 是又一个实现。然而,Magma 的关键架构与其他实现不同,其在接近"边缘"的地方从逻辑上终止了 3GPP 协议,在这个上下文中,边缘的意思是无线空口或到另一个移动网络的联邦接口。这一统一的架构决策不是随意做出的,而是具有广泛的含义,本文将对此进行探讨。
在边缘终止协议(Edge Termination of Protocols)
我们先解释一下什么是"边缘终止(edge termination)"。无论是 LTE 的 EPC(分组演进核心网,Evolved Packet Core),还是 5GC(5G 核心网,5G Core),3GPP 标准都定义了 RAN(无线接入网,Radio Access Network)和移动核心网组件之间的接口。
图 1. LTE 和 5G 移动核心网接口
图 1 中两框之间的每条线都是某种定义为3GPP规范一部分的接口。Magma 最感兴趣的是那些被标记为"边缘接口(Edge Interfaces)"的部分,这些是 RAN 和移动核心网之间的接口。Magma 根据 3GPP 标准实现了在这些接口上运行的协议,并且从逻辑上尽可能接近 RAN 的位置,从内部终止了 3GPP 协议,如图 2 所示。
图 2. 在接近 RAN 的位置终结 3GPP 协议
举例来说,3GPP 定义的 S1AP 接口运行在 eNodeB 和 MME(移动性管理实体,Mobility Management Entity)之间,S1AP 消息通过 SCTP(一种可靠传输协议)传递。然而在 Magma 中,S1AP 接口终止于 eNodeB 旁边的模块,S1AP 消息被翻译成 gRPC 消息,所有 Magma 组件之间的通信都通过 gRPC 进行。在尽可能接近 RAN 的位置终结所有特定于 RAN 的协议这一决定具有广泛影响,下面会详细介绍。
图 3. 联邦 Magma 架构
如上图所示,Magma 还终结了另一个边缘(联邦网关,Federation Gateway)上的 3GPP 协议。通过这个接口,Magma 可以与移动运营商现有核心网相连,从而可以共享现有核心网中的计费和订户信息。同样,联邦网关在接入处终止了这些 3GPP 协议,然后使用 gRPC 将所有必要的信息传递给 Magma 的其余组件。
总之,Magma 有两个"边缘"实现了 3GPP 协议: 和 RAN 交互的接口以及联邦网络接口。Magma 在这些接入点上保持了 3GPP 兼容性,并与运行在这些接口另一侧的标准设备进行互操作。但如果查看 Magma 内部,可以看到所有内部通信都是通过 gRPC 进行的,而不是标准 3GPP 协议。
标准兼容
只在边缘实现标准 3GPP 协议的决定意味着 Magma 只能在边缘与其他实现进行互操作。因此,可以将 Magma 移动核心网连接到任何符合标准的 eNodeB 或 gNB,并预期能够工作。类似的,Magma 核心网可以与现有 MNO 的 LTE 网络交互。对 LTE 或 5G 特定功能的支持有可能受限于开发路线图问题,还没有实现,但从架构上讲,这些接口预期可以与任何标准系统互操作。
相反,由于 Magma 没有实现移动核心网内部的所有 3GPP 接口,因此不可能在核心网内任意混合和匹配组件。尽管传统 3GPP 实现允许(比方说)来自一个厂商的 MME 与另一个厂商的 S-gateway 进行互操作,但除了通过上面介绍的接口之外,不可能将来自另一个厂商(或另一个开源项目)的移动核心网的一部分与 Magma 的一部分连接起来。这一场景是否重要取决于用例。
电信基础设施项目(Telecom Infra Project)的开放核心网络项目组(Open Core Network Project Group)正在定义一套基于固定无线接入(fixed wireless access)和私有 5G(private 5G)等特定用例的移动核心网技术规范,符合这些需求规范是 Magma 正在进行的工作的一部分。
Magma 是特意决定不实现所有 3GPP 内部接口的,因为这样可以提高 Magma 在各种场景中的性能和可靠性,此外还可以用一个通用、融合的软件核心网支持广泛的接入技术(LTE、5G 和 WiFi),并降低实现复杂性。这种体系架构的选择对测试和移动性支持也有影响,下面将详细介绍。
对测试的影响
现在有丰富的测试设备可以用来测试 3GPP 协议的性能、规模和兼容性,可以有效利用这些测试工具测试 Magma 实现的那些 3GPP 协议(RAN 接口和联邦接口)。此外,所有基于 gRPC 的内部接口,需要使用专门为 Magma 开发的方法进行测试。这至少增加了对 Magma 的可扩展性和功能进行测试所付出的代价,并且根据测试的投资水平,也可能造成内部接口测试覆盖率不高。
回传的可靠性(Reliability of Backhaul)
在边缘终结 3GPP 协议的决定以多种方式影响移动核心网的可靠性。在长距离回传链路上运行 3GPP 协议已被证明是有问题的,尤其是当回传链路的可靠性不够完美时(例如,卫星用于回传)。这是因为 3GPP 协议在某些情况下对丢包和时延相当敏感,从而会导致连接中断,进而迫使终端重试到核心网的连接流程。实践中并不是所有终端都能很好的处理这个问题,有时会陷入"停滞(stuck)"状态。
Magma 通过两种方式解决回传线路不可靠的挑战。首先,Magma 通过在接入网关中运行更多功能来避免完全依赖回传发送消息。这源于 Magma 高度分布式的架构,在标准 3GPP 中集中部署的功能在 Magma 中被分布到边缘(接入网关)。因此,例如验证 UE 并将其连接到核心网所需的操作通常可以使用 AGW 中的本地缓存信息来完成,不需要任何流量通过回传网络传输。其次,当 Magma 确实需要通过回传链路传递信息时(例如从编排器获得配置状态),使用 gRPC 来完成(gRPC 被设计为在不可靠或低延迟链路的情况下可以可靠运行)。
弹性
Magma 的一个重要设计选择是对运行时和配置状态使用"期望状态(desired state)"模型,其含义为,为了传递所需的状态更改(例如,在数据平面中添加一个新会话),期望的最终状态是通过 API 设置的,这与 3GPP 规范中常见的"CRUD(创建、读取、更新、删除)"接口不一样。期望状态模型在面对故障(包括组件故障和通信路径故障)时实现了更高的可靠性,下面通过一个例子来解释。
考虑为单个 AGW 所服务的 UE 的一组活跃会话建立数据平面状态的情况。假设有两个活跃会话 X 和 Y,然后第三个 UE 变为活跃状态,需要建立会话 Z。在 CRUD 模型中,控制平面指示数据平面"添加会话 Z"。相比之下,期望状态模型会传达整个新状态:"会话集现在是 X、Y、Z"。
CRUD 模型在面对故障时很脆弱。如果某个消息丢了,或者某个组件在一段时间内不可用,无法接收更新,更新的接收方就会与发送方不同步。因此,有可能最终处于这样一种状态: 控制平面认为已经建立了会话 X、Y 和 Z,而数据平面只有 X 和 Y 的状态。通过发送所有期望状态,可以确保一旦接收方能够再次接收消息,就会重新与发送方同步,从而在面对软硬件故障时有更高的弹性。比方说,Magma 网关中的软件组件可以被重启(在崩溃或升级之后),而不需要重新启动 UE 会话,这与传统核心网的实现方式不同。
关于期望状态模型,有两点值得注意。首先,Magma 中有许多模块之间的内部接口,而只有其中的一个子集完全实现了期望状态模型。重要的是运行在回传链路上的接口,即 AGW 和编排器之间的接口,遵守了期望状态模型。因此,任何配置状态的"单一数据源(source of truth)"都在编排器中,状态会在需要时被推送到 AGW 中。AGW 内部子系统之间仍然有一些内部接口,通过状态变化进行通信。
其次,当只有少量状态发生变化时,在两个模块之间发送完整的期望状态是有扩展性问题的。随着 Magma 部署规模和用户数量的增加,有必要在模块之间更有效的发送状态更新。在将用户信息从编排器发送到 AGW 时,这一点非常明显。在维持所需状态方法的同时,有许多方法可以提高此类更新的效率,相应工作(详细介绍参考这篇文章)正在进行中。
支持横向扩展的中心化控制
Magma 采取的设计方法的一个有趣结果是,允许集中控制与高度分布式部署相结合,这种方法是由软件定义网络(Software-Defined Networking)运动开创的,而 Magma 采用了 SDN 式的架构。例如,虽然将 UE 连接到核心网的任务可以由位于基站旁的 AGW 通过本地操作完成,但如上所述,运营商并不需要面对独立管理数百个 AGW 的任务。相反,运营商通过集中化的编排器(有 UI 和 API)(或其他软件)与整个网络进行互动。AGW 通过 gRPC 和中央编排器进行通信,由于 3GPP 的标准核心网架构没有遵循 SDN 方法,因此没有类似的 3GPP 协议可以完成这项工作。3GPP 确实定义了控制和用户平面的分离,但没有集中式控制器与分布式接入网关的概念,这在另一篇文章中有进一步讨论。
为了理解这一决定的影响,假设某家运营商试图在回传质量较低的偏远地区提供移动电话服务。在无线电塔旁安装传统 EPC,以避免在回传链路上运行 3GPP 协议,这可能很诱人。任何扩展此解决方案的尝试都会使运营商管理大量远程 EPC,而没有直接方法管理整个网络。正是这一用例(在回传选择有限的地区进行远程访问),推动了客户对 Magma 的兴趣。
作为具体案例,如果通过编排器将用户添加到 Magma,那么用户信息将传播到所有 AGW。相比之下,在部署了多个传统 EPC 的场景中,每个 EPC 都需要单独配置以添加新用户。
性能
Magma 的 SDN 风格架构提供了天然的性能优势。每次添加 AGW 时,都会向网络添加新的数据平面和控制平面处理能力。因此,随着基站的增加,Magma 的性能自然会上升(每个 AGW 通常支持若干个基站)。
在最近的测试中,单个 Magma AGW 数据平面可以支持约 400Mbps 流量以及 600 个 LTE 并发用户,或者 400Mbps 数据平面流量和 200 个 5G 并发用户。随着更多 AGW 被添加到网络中,数据速率和用户数量都会平滑增加。相比之下,我们对 Open5GS 的测试显示,单节点 EPC 可以支持大约 95Mbps 和 200 个并发用户(LTE)。原始数据之间的差异并不重要,重要的是 Magma 的数据平面和控制平面性能能够随着部署的 AGW 数量的增加而增加。最近提交的一篇会议论文的现场部署测试结果显示,Magma 有能力在单个协调器的控制下扩展到至少 5000 个 AGW。
跨网关移动性
在 Magma 目前的实现中,与 UE 相关的所有运行时状态都被定位到该 UE 所连接的 AGW。虽然对可扩展性有利,但这种方法确实需要权衡利弊。尤其需要考虑支持跨 AGW 的无缝移动性,以允许 UE 在漫游到另一个 AGW 时保持与核心网的连接,这需要在切换期间从一个 AGW 到另一个 AGW 同步控制面状态。这在目前还没有实现,UE 只能在一个 AGW(通常少于 10 个基站)所服务的基站群中无缝漫游。虽然没有这个功能也可以支持许多用例,但这是一个限制。Magma 社区成员已经开始设计工作,目的是解决这个限制。
结论
Magma 旨在为建设和运营移动核心网提供一种可扩展的方法。它在关键边缘接口支持 3GPP 协议,特别是与 RAN 的接口(如图 2 所示),以及与其他移动网络的联盟接口(图 3)。然而,为了获得 SDN 方法的益处,不使用 3GPP 协议在其组件之间进行内部通信。这种方法的主要缺点是,基于 Magma 的移动核心网不能混合、匹配来自多个供应商或开源项目的组件。在现在的实现中,对跨网关的移动性支持也有限制。其优点包括更高的性能和将解决方案扩展到数千个基站的能力,同时保持集中控制点以方便操作和配置。Magma 的方法还提供了一个解决方案,支持不同类型的回传链路(如卫星),具有较高的弹性,能从硬件和软件故障中优雅的恢复。
你好,我是俞凡,在 Motorola 做过研发,现在在 Mavenir 做技术工作,对通信、网络、后端架构、云原生、DevOps、CICD、区块链、AI 等技术始终保持着浓厚的兴趣,平时喜欢阅读、思考,相信持续学习、终身成长,欢迎一起交流学习。
微信公众号:DeepNoMind