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中两框之间的每条线都是某种定义为3GPP规范一部分的接口。Magma最感兴趣的是那些被标记为"边缘接口(Edge Interfaces)"的部分,这些是RAN和移动核心网之间的接口。Magma根据3GPP标准实现了在这些接口上运行的协议,并且从逻辑上尽可能接近RAN的位置,从内部终止了3GPP协议,如图2所示。
举例来说,3GPP定义的S1AP接口运行在eNodeB和MME(移动性管理实体,Mobility Management Entity)之间,S1AP消息通过SCTP(一种可靠传输协议)传递。然而在Magma中,S1AP接口终止于eNodeB旁边的模块,S1AP消息被翻译成gRPC消息,所有Magma组件之间的通信都通过gRPC进行。在尽可能接近RAN的位置终结所有特定于RAN的协议这一决定具有广泛影响,下面会详细介绍。
如上图所示,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时,这一点非常明显。在维持所需状态方法的同时,有许多方法可以提高此类更新的效率,相应工作(详细介绍参考这篇文章[1])正在进行中。
支持横向扩展的中心化控制
Magma采取的设计方法的一个有趣结果是,允许集中控制与高度分布式部署相结合,这种方法是由软件定义网络(Software-Defined Networking)运动开创的,而Magma采用了SDN式的架构。例如,虽然将UE连接到核心网的任务可以由位于基站旁的AGW通过本地操作完成,但如上所述,运营商并不需要面对独立管理数百个AGW的任务。相反,运营商通过集中化的编排器(有UI和API)(或其他软件)与整个网络进行互动。AGW通过gRPC和中央编排器进行通信,由于3GPP的标准核心网架构没有遵循SDN方法,因此没有类似的3GPP协议可以完成这项工作。3GPP确实定义了控制和用户平面的分离,但没有集中式控制器与分布式接入网关的概念,这在另一篇文章[2]中有进一步讨论。
为了理解这一决定的影响,假设某家运营商试图在回传质量较低的偏远地区提供移动电话服务。在无线电塔旁安装传统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社区成员已经开始设计工作[3],目的是解决这个限制。
结论
Magma旨在为建设和运营移动核心网提供一种可扩展的方法。它在关键边缘接口支持3GPP协议,特别是与RAN的接口(如图2所示),以及与其他移动网络的联盟接口(图3)。然而,为了获得SDN方法的益处,不使用3GPP协议在其组件之间进行内部通信。这种方法的主要缺点是,基于Magma的移动核心网不能混合、匹配来自多个供应商或开源项目的组件。在现在的实现中,对跨网关的移动性支持也有限制。其优点包括更高的性能和将解决方案扩展到数千个基站的能力,同时保持集中控制点以方便操作和配置。Magma的方法还提供了一个解决方案,支持不同类型的回传链路(如卫星),具有较高的弹性,能从硬件和软件故障中优雅的恢复。
你好,我是俞凡,在Motorola做过研发,现在在Mavenir做技术工作,对通信、网络、后端架构、云原生、DevOps、CICD、区块链、AI等技术始终保持着浓厚的兴趣,平时喜欢阅读、思考,相信持续学习、终身成长,欢迎一起交流学习。
微信公众号:DeepNoMind
参考资料
Scaling Orc8r Subscribers Codepath: https://docs.magmacore.org/docs/proposals/p010_subscriber_scaling
[2]Control Planes Are More Than Signaling: https://magmacore.org/blog/control-planes-are-more-than-signaling
[3]Inter-AGW Mobility in Magma: https://docs.google.com/document/d/1Sj8d4Inh1YBNdUqgmNgnPgREYs9VXoIqSIoekbfHR-o/edit
本文由 mdnice 多平台发布