开源移动核心网Magma架构设计启示

news2024/11/18 12:37:50

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. LTE和5G移动核心网接口

图1中两框之间的每条线都是某种定义为3GPP规范一部分的接口。Magma最感兴趣的是那些被标记为"边缘接口(Edge Interfaces)"的部分,这些是RAN和移动核心网之间的接口。Magma根据3GPP标准实现了在这些接口上运行的协议,并且从逻辑上尽可能接近RAN的位置,从内部终止了3GPP协议,如图2所示。

图2. 在接近RAN的位置终结3GPP协议
图2. 在接近RAN的位置终结3GPP协议

举例来说,3GPP定义的S1AP接口运行在eNodeB和MME(移动性管理实体,Mobility Management Entity)之间,S1AP消息通过SCTP(一种可靠传输协议)传递。然而在Magma中,S1AP接口终止于eNodeB旁边的模块,S1AP消息被翻译成gRPC消息,所有Magma组件之间的通信都通过gRPC进行。在尽可能接近RAN的位置终结所有特定于RAN的协议这一决定具有广泛影响,下面会详细介绍。

图3. 联邦Magma架构
图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时,这一点非常明显。在维持所需状态方法的同时,有许多方法可以提高此类更新的效率,相应工作(详细介绍参考这篇文章[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

参考资料

[1]

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

- END -

本文由 mdnice 多平台发布

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1142154.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Steger算法实现结构光光条中心提取(python版本)

Steger算法原理 对结构光进行光条中心提取时,Steger算法是以Hessian矩阵为基础的。它的基础步骤如下所示: 从Hessian矩阵中求出线激光条纹的法线方向在光条纹法线方向上将其灰度分布按照泰勒多项式展开,求取的极大值即为光条在该法线方向上的亚像素坐标。对于二维离散图像来…

Java之JavaConfig

Java-JavaConfig 一,什么是JavaConfig 1.介绍 JavaConfig是一种用于配置Java应用程序的方法。它是Spring框架提供的一种替代XML配置的方式,旨在简化和增强应用程序的配置过程。 传统上,Spring框架使用XML文件来定义应用程序的配置信息&am…

神经网络与深度学习第四章前馈神经网络习题解答

[习题4-1] 对于一个神经元 ,并使用梯度下降优化参数时,如果输入恒大于0,其收敛速度会比零均值化的输入更慢。 首先看一下CSDN的解释: 如果输入x恒大于0,使用sigmoid作为激活函数的神经元的输出值将会处于饱和状态&a…

postman做接口自动化测试

接口是用来连接服务端和客户端,一般返回的数据都是json。 get和post请求的区别: 1. get请求比post请求安全 2. get请求参数有长度限制,post请求没有 3. get请求没有body,参数都是放在url里面,而post请求是放在body…

Pytorch从零开始实战07

Pytorch从零开始实战——咖啡豆识别 本系列来源于365天深度学习训练营 原作者K同学 文章目录 Pytorch从零开始实战——咖啡豆识别环境准备数据集模型选择训练模型可视化模型预测其他问题总结 环境准备 本文基于Jupyter notebook,使用Python3.8,Pytor…

MobPush厂商通道回执配置指南(Vivo,荣耀)

MobPush作为一款好用、可靠的智能推送开发者工具,为APP开发者提供了推送后用户行为的全链路数据分析,从而开发者可以更好地了解用户行为,优化推送策略,提高消息送达率,从而提升用户体验。 但这需要通过在后台配置厂商…

计算机网络重点概念整理-第二章 物理层【期末复习|考研复习】

第二章 物理层 【期末复习|考研复习】 计算机网络系列文章传送门: 第一章 计算机网络概述 第二章 物理层 第三章 数据链路层 第四章 网络层 第五章 传输层 第六章 应用层 第七章 网络安全 计算机网络整理-简称&缩写 文章目录 第二章 物理层 【期末复习|考研复习…

『51单片机』 DS1302时钟

🚩 WRITE IN FRONT 🚩 🔎 介绍:"謓泽"正在路上朝着"攻城狮"方向"前进四" 🔎🏅 荣誉:2021|2022年度博客之星物联网与嵌入式开发TOP5|TOP4、2021|2222年获评百大…

查找mac硬盘序列号的方法

需要查找macbook pro的硬盘序列号信息,找了好几个帖子,发现都不见效,需要花费时间找的东西都有必要记录下来,防止下次重复浪费时间。 macbook pro macos版本: 根据百度提供的方法,并不能得到相应的效果&am…

React JSX常用语法总结

React JSX语法 什么是React JSX JSX(javascript xml) 就是JavaScript和XML结合的一种格式,是JavaScript的语法扩展,只要把HTML代码写在JS中,就为JSX。用于动态构建用户界面的Javascript库,发送请求获取数据…

【Unity】RenderFeature应用(简单场景扫描效果)

【Unity】RenderFeature应用(简单场景扫描效果) RenderFeature 是一个用于渲染图形的概念,通常在图形引擎或游戏引擎中使用。它是一个模块化的组件,负责处理特定的渲染功能,例如阴影、光照、粒子效果等。 点击地面生成…

linux新建账号并配置权限

一、新建用户testuser useradd testuser二、设置新用户的密码为1234ABcd# passwd testuser之后输入两遍1234ABcd#。 三、提升用户testuser权限 这个个人理解是提升到root权限,需要修改一个配置文件。(明天老师可能会讲文件读写权限,那就需…

数据分析和互联网医院小程序:提高医疗决策的准确性和效率

互联网医院小程序已经在医疗领域取得了显著的进展,为患者和医疗从业者提供了更便捷和高效的医疗服务。随着数据分析技术的快速发展,互联网医院小程序能够利用大数据来提高医疗决策的准确性和效率。本文将探讨数据分析在互联网医院小程序中的应用&#xf…

UVa1354,ACM/ICPC Tokyo 2005,Mobile Computing(天平难题)

1、题目 2、题意 给出房间的宽度 r r r 和 s s s 个挂坠的重量 w i w_i wi​。设计一个尽量宽(但宽度不能超过房间宽度 r r r)的天平,挂着所有挂坠。 天平由一些长度为1的木棍组成。木棍的每一端要么挂一个挂坠,要么挂另外一…

Spring体系结构

Spring体系结构 核心容器 核心容器由 spring-core,spring-beans,spring-context,spring-context-support和spring-expression(SpEL,Spring 表达式语言,Spring Expression Language)等模块组成&…

CMake aux_source_directory 学习

如下&#xff0c;prj是空文件夹&#xff1b; add.h; #include <iostream>using namespace std;int add1(int a, int b); num.h; int num1100; int num2301; add.cpp&#xff1b; #include "add.h"int add1(int i, int j) {return i j; } main.cpp&#x…

GPT做SQL查询引擎的自然语言

目录 面向企业查询的生成式人工智能 步骤1&#xff1a;将示例数据转换为单字符字符串 步骤2&#xff1a;为大型语言模型&#xff08;LM&#xff09;创建提示符 步骤3&#xff1a;将数据发送到OpenAI的API 步骤4&#xff1a;执行GPT返回的SQL代码的结果 步骤5(可选)&#…

SQL-正则表达式和约束

文章目录 主要内容一.正则表达式1.操作1代码如下&#xff08;示例&#xff09;: 2.操作2代码如下&#xff08;示例&#xff09;: 3.操作3代码如下&#xff08;示例&#xff09;: 4.操作4代码如下&#xff08;示例&#xff09;: 二.约束1.主键约束 2.自增长约束3.非空约束4.唯一…

专业135总400+合工大合肥工业大学833信号分析与处理信息通信上岸经验分享

专业135总400合工大合肥工业大学833信号分析与处理信息通信上岸经验分享 基础课经验很多&#xff0c;大同小异&#xff0c;我分享一下自己的833专业课复习经验。 一&#xff1a;用到的书本 1.《信号与系统》&#xff08;第三版&#xff09;郑君里&#xff0c;高等教育出版社…

计算机视觉-光源的目的和作用

光源的目的 机器视觉系统的核心是图像采集和图像处理&#xff0c;而光源则是影响图像水平的重要因素&#xff0c;通过适当的光源照明&#xff0c;使图像中的目标信息与背景信息得到更好的分离&#xff0c;可大大降低图像识别难度&#xff0c;提高系统的精度和可靠性。 对于机器…