传统蜂窝网络一般基于特定接入技术并针对大规模公共网络设计,无法灵活适配小规模网络以及异构无线技术。本文介绍了 Magma 在构建低成本异构无线接入方面的探索。原文: Building Flexible, Low-Cost Wireless Access Networks With Magma
摘要
当今仍然有数十亿人受限于网络覆盖以及价格原因,没有接入互联网。本文将介绍一个用于建设低成本无线接入网的灵活、开放系统--Magma,该系统旨在连接因人口密度低或收入水平低等原因而被运营商忽略的用户,同时保留蜂窝网络所应有的功能,如认证和计费策略等。为了实现这一目标,与传统蜂窝网相比,Magma 采用了广泛利用互联网设计模式的方法,在边缘终止特定的接入网协议,并将接入网从核心架构中抽象出来。这一决定允许 Magma 使用 SDN(软件定义网络)原则重构无线核心网,并利用现代分布式系统的其他技术,从而降低网络运营商的成本和运营复杂性,同时实现弹性、可扩展性和丰富的策略支持。
1. 简介
良好的互联网连接已成为全世界人民和企业的基本需求。然而,全球有超过三分之一的人口没有接入互联网[54],并且还有许多用户缺乏重要应用所需的高速连接。这个问题主要是经济问题:商业网络运营商声称,互联网如今似乎已经完成了在商业上可行的用户覆盖范围[29]。为了覆盖更多用户,必须降低互联网接入成本,或者让传统、大规模商业运营商以外的实体建立可持续、可扩展的网络基础设施。我们需要有效方法来降低资本和运营成本,通过更便宜的设备和软件,减少对高技能网络管理员的依赖,以及增加对现有本地能力的利用。同时,运营商需要有效管理有限的网络资源,以实现可持续的网络运营。蜂窝网络通常通过为每个用户制定策略来实现这些目标,包括每个用户的数据上限、费率限制或基于使用量的收费策略。
不幸的是,传统无线解决方案不能很好适用于很多被服务覆盖所影响的用户场景。由于无线电的传播特性,在非授权频谱上运行的 WiFi 接入点一般不能为大的地理区域(如人口稀少的农村地区)提供有效覆盖。此外,WiFi 网络通常不提供精细策略来管理资源。相比之下,蜂窝基站提供更广泛的覆盖,支持更多用户,并连接到支持更灵活策略的核心网络。然而,今天的蜂窝接入网络依赖于昂贵的设备、复杂的协议和高度熟练的劳动力,限制了经济有效连接更多用户的能力。虽然蜂窝网可以扩展到大量用户群,但并不能很好的缩容,也就是说,小型蜂窝网络的部署通常相当昂贵。Magma 旨在弥合这两类解决方案之间的差距:具有丰富策略、大量用户群和长距离的蜂窝网络,以及更简单但扩展性较差的 WiFi 网络。
更为根本的是,我们注意到,选择使用蜂窝无线接入网(RAN)这一决策迫使网络运营商做出一系列影响深远的决定,而这些决定与他们选择的接入网技术没有内在联系。这种选择使网络运营商备受约束:(i)特定的网络架构--即 3GPP 定义的用于网络管理的接口以及策略执行路径上的设备,(ii)为满足大规模电信运营商需求而发展的供应商生态体系,以及(iii)特定的无线电频谱及相关监管要求。Magma 项目旨在改变这一切,它创建了一个开源的运营商级无线网络平台,支持广泛的部署场景。Magma 的部署可以利用任何现成的、最适合其用户密度或部署场景的无线接入技术。Magma 通过接入网关实现这一目标,接入网关在尽可能接近无线电的情况下终止特定的协议。因此,Magma 允许运营商使用单一核心网络和管理平台,在热点地区(如体育场馆)用 WiFi 热点增强现有蜂窝网络部署,或使用 LTE 基站为农村地区家庭服务。
理想情况下,可以从小规模开始部署新网络,并随着时间的推移而扩展。Magma 通过在商品硬件上运行软件组件的横向扩展实现了"随需求扩容(scale as you go)"的设计,这在云计算环境中很常见。Magma 还利用了云环境中常用的开源软件组件(如 Open vSwitch、gRPC、Kubernetes、Prometheus)。Magma 通过采用软件定义网络概念简化了网络管理,这样就可以用一个中央控制点来设置网络策略、管理用户等。Magma 采用分层控制平面来提高可扩展性。Magma 只支持高效互联网接入的基本功能(如认证、计费和基于用户的策略),而放弃了一些复杂功能。例如,虽然 Magma 支持移动性(在接入网关的服务区域内)和漫游,但还不支持接入网关之间的用户无缝移动,这是因为移动性不是 Magma 的商业部署所支持的用例要求(例如家庭宽带或回传到 WiFi 热点)。正如通过其他工作所看到的[38],现代终端主机协议和应用程序可以在没有网络内生移动性支持的情况下表现良好。
本文将介绍设计和部署 Magma 的经验教训,讨论支持异构无线电、回传技术以及灵活策略的目标,以低成本支持所有这些功能,从而引导我们开发了一个新颖的软件架构。Magma 被用于现实世界的部署,这些部署在地理范围、用户数量、技术选择和使其在财务上可持续的商业模式方面有很大不同。在第 2 节中,我们将阐述 Magma 的核心原则,即无线接入技术不应决定网络架构。然后在第 3 节讨论接入网关的设计如何使 Magma 支持各种技术、可扩展的控制平面、容错等。第 4 节介绍实验评估,证明 Magma 的设计和实施实现了良好的性能和可扩展性,同时讨论两个生产级接入网络。与传统方法相比,由于较低的运维、硬件和软件成本,在一次部署中可以节约 43%的成本。我们的部署经验也指明了 Magma 是如何向上、向下扩展的,在撰写本文时,有一个支持美国 45 个州的 800 多个 eNodeB(基站)的部署,第 5 节介绍了相关工作。最后在第 6 节讨论正在进行的关于 Magma 的工作和未来的挑战。
道德。本文没有提出任何道德问题,对于第 4 节中讨论的部署,只考虑运维数据,没有接触任何用户数据或流量。
2. 无线接入技术不应该决定网络架构
传统上,无线接入技术的选择决定了关于网络架构的一系列其他决定。相比之下,Magma 的出发点是,每一种无线接入技术在覆盖不同用户群方面都可以发挥作用,网络运营商应该能够使用最适合部署场景的无线和回传技术。简而言之,无线网络架构应该像互联网本身一样,将链路层抽象化。
2.1. WiFi vs 蜂窝接入网
作为现有有线网络的延伸而出现的两类主要的无线接入技术具有不同的设计理念,WiFi 扩展了 IP 网络,而现代蜂窝数据网络开始是对语音电话网络的扩展。两类接入网络之间的许多差异直接源于这种早期区别。
WiFi: WiFi 允许没有经验的用户自己运行简单的低成本局域网络,这些网络使用未经授权的无线电频谱(通常在 2.4GHz 和 5GHz),不需要 WiFi 网络运营商提前获得监管部门的批准。同时,任何人都可以访问相同的频谱,但要受到传输功率的限制。因此,WiFi 网络与婴儿监视器、无绳电话和智能电表等设备共享频段,所以 WiFi MAC 层必须假定 WiFi 接入点(AP)在存在物理层干扰的情况下运行。再加上限制功率从而限制了发射距离,WiFi 最适合在小范围内密集覆盖。考虑到干扰的可能性,WiFi 服务是尽力而为的,与互联网设计理念一致。企业级 WiFi 部署,如大学校园和公司办公大楼的部署,对多个接入点的重叠干扰进行更集中的管理。然而,干扰的风险意味着服务仍然是尽力而为的。
蜂窝网络: 蜂窝接入网允许电信运营商向其用户提供无线服务,通常使用运营商长期拥有或以高成本租赁的授权频谱。由于无线电对某一地理区域的频谱有独家使用权,因此蜂窝网被设计为广域覆盖和高频谱效率,由资源丰富的实体进行部署,因为只有他们才可以获得土地、建造和连接塔台,并雇用熟练的工作人员。
无论何种接入技术,任何规模的网络都需要在设备、人员方面进行大量投资,就蜂窝网络而言,还需要监管许可。因此,除了非常小的网络,运营商通过策略来管理有限的频谱,包括接入控制;根据时间、使用量或更复杂的技术来收取费用,其中包括社区价值[36];使用上限;以及节流。例如,LTE 的策略规范几乎达到 300 页[14]。一个简单的策略例子是:"客户 C 的速率限制为 X Mbps,如果在t1
时间段内发送了 Y GB 数据,就在t2
时间段内将其限制为 Z Mbps。"支持灵活的策略可以帮助运营商以经济上可持续的方式触达服务不足的用户:即使是出于社会责任原因运营的网络也会产生成本,必须有效管理有限的资源。
这些功能由复杂的分组核心网实现,该网络将多个基站连接到互联网,与互联网架构的渐进式演进相比,每一代蜂窝网络都是重新思考从认证到控制和数据平面模块化的机会。
图 1: LTE 和 5G 架构的区别。
不同世代的 3GPP 标准[15]有不同的分组核心架构,UTMS("3G")与 LTE("4G")不同,而后者又与 5G 不同,并且各代标准都与企业级 WiFi 不同。图 1 显示了 LTE 和 5G 之间的差异,图片来自[46]。不同无线技术也体现为基站的差异(eNodeB 与 gNB),但也要关注移动核心网的模块化演进。WiFi 又有所不同,而且标准化程度较低,其授权、认证和计费(AAA,Authorization, Authentication, and Accounting)等功能大致对应于 LTE 的移动管理实体(MME,Mobility Management Entity)和归属用户服务器(HSS,Home Subscriber Server)组件。
如今蜂窝网络和 WiFi 之间的界限越来越模糊,运营商将每种技术部署在该技术更适合的场景中。近年来,大型 WiFi 部署已经采用更复杂的用户认证、功率控制、无缝移动性等方法[23,24,60],Eduroam[58]和 OpenRoaming[57]等努力为 WiFi 用户提供类似蜂窝网的广域漫游。同时,蜂窝接入网络现在可以使用"轻授权(lightly licensed)"频谱,如公民频段无线服务(CBRS,Citizen’s Band Radio Service)[17],支持无线频谱动态分配,使无线系统能独占部分频谱(以数十分钟为单位)。企业正在为一系列用例部署私有蜂窝接入网络,如工业自动化、医疗应用以及酒店和体育赛事的互联网接入,这些用例需要比传统 WiFi 更好的频谱效率、认证和性能。
2.2. 降低门槛
Magma 旨在降低为缺乏网络服务的人群提供无线网络连接服务的成本。我们认为,运营商应该能够为任何部署选择合适的接入技术,而不是被锁定在只和该接入类型兼容的核心架构上。支持异构技术的统一设计可以摊薄软件构建工程成本以及培训和支持网络运维人员的费用。此外,这种设计使运营商能够在统一的核心网上支持多种无线技术(例如,在购物中心使用 WiFi,在其他地方使用蜂窝网络)。
蜂窝接入的准入门槛很高,部署蜂窝接入技术的网络运营商必须在基础设施方面进行大量资本投资(CapEx)。相比之下,WiFi 接入点的成本可能低于 100 美元,但即使是低成本的蜂窝部署,成本也至少要高出 WiFi 1-2 个数量级。传统上,蜂窝核心网络设备是为拥有数百个基站的大型部署而设计的,无法以合理成本"缩减"到小规模的初始部署。蜂窝网络的运营成本也很高(OpEx),需要依靠高技能工作人员来管理设备。此外,偏远社区可能负担不起高质量、低延迟的回传(如光纤)链接,而蜂窝网络通常依赖这种链接。相反,这些地区的网络可能使用可靠性和性能较低的卫星或无线回传链接。
相比之下,WiFi 部署可以从小规模开始,但在规模扩张方面存在很大障碍。WiFi 网络通常不需要熟练人员来部署。WiFi 本质上是一种尽力而为接入技术,可以利用任何可用的回传,甚至是基于同一物理 WiFi 的临时网格(ad-hoc mesh)回传。然而,WiFi 通常不提供可扩展的方式来实施网络策略,或者(除了专有和特定于供应商的解决方案)来管理大型网络。因此,面向 WiFi 的运营商很难像大型(通常是蜂窝)运营商那样在大范围内提供财务上可持续的服务。
尽管 WiFi 和蜂窝网络之间存在差异,但并没有根本障碍。网络策略的构建模块在每个国家都一样,缺少的只是架构支持。软件定义网络可以通过分布式基础设施支持网络范围内的控制来帮助解决这些差距,并且采用基于商品组件的可扩展技术可以降低成本。简而言之,采用并扩展成功的互联网和云原生技术实现可伸缩性和可管理性,使我们创建既灵活又低成本的无线接入网络成为可能。
图 2: Magma 在秘鲁的一个小型农村 ISP 的早期部署(他们的第一个蜂窝站点)。组件(从上到下)包括(a)点对点无线回传,(b)LTE 无线天线,(c)作为 Magma AGW 的强化嵌入式 PC,以及(d)太阳能和电池备份。
3. Magma 架构
Magma 不是通过简单的重新实现一个符合 3GPP 标准的移动核心网来克服现有解决方案的缺点。相反,如图 3 所示,Magma 通过在直连无线接入网的接入网关(AGW)中尽早终止特定无线协议,使这些接入网关在统一的设计中处理各种无线技术。Magma 架构超越了 3GPP 传统的 RAN/核心网的分解模式,将额外功能放在接入网关中,目的是使分组核心网更具可伸缩性,从而能够缩小规模。值得注意的是,Magma 采用了软件定义网络(SDN)系统架构,使用分层的控制平面设计,每个接入网关的本地控制器与集中式编排器交互。编排器是系统的中央控制点,维护与全系统配置有关的权威状态(配置状态)。与用户设备(UE)活动有关的运行时状态被定位到为特定 UE 提供服务的基站所在的 AGW。
图 3: Magma 简化体系架构
每个 AGW 都是一个小型故障域,确保任何组件故障或升级影响到的用户相对较少。通过这种方式,Magma 架构类似于现代云原生系统,旨在运行在容易发生故障的低成本硬件上[26]。Magma 采用了云计算架构的其他想法,包括使用 gRPC 进行组件间通信,用于状态同步的"期望状态(desired state)"模型,以及基于软件的、可编程的数据平面。虽然在云计算部署中很常见,但这些决定大大偏离了典型 3GPP 网络的设计和管理方式。
3.1. 无线接入技术抽象
如图 1 所示,无线接入技术的细节传统上会体现在核心网中。为了解决这个问题,Magma 确定了一套核心功能,AGW 必须为任何无线技术实现这些功能(例如,为特定用户找到合适的策略),并以独立于接入技术的方式提供这些功能。这些功能构成了 AGW 的核心,如图 4 的右侧所示。特定无线技术的控制协议在靠近无线的特定技术模块中被提前终止,这些模块在图的左边,与右边的通用功能(如用户管理、访问控制和管理)进行通信,所基于的信息与 RAN 无关。
图 4: Magma 体系架构中的通用功能和特定于 RAN 的协议。
考虑添加一个新的活跃 UE 的例子。UE 通过临时(未经认证的)无线链路与附近的基站通信。在传统 4G 实现中,基站将请求转发给移动管理实体(MME,Mobility Management Entity),MME 发起 UE 身份验证流程,查询用户数据库,对终端进行认证,创建新会话,并将为终端服务所需参数通知给其他组件,包括:(a)为终端分配 IP 地址,并在数据平面设置相应的 QoS 参数;(b)指示基站建立到终端的加密信道;和(c)向 UE 提供加密通道的对称密钥。这一系列事件完成后,UE 将和移动核心网建立一个活动会话,从而能够发送和接收数据。
这些功能在 Magma AGW 中以抽象化无线技术细节的方式进行,如图 4 右侧所示。例如,Magma 的用户数据库具有跨无线接入类型的所有能力的联合,即使数据库中的某些字段只对某些技术有效也没有关系。例如,QoS 策略在 WiFi 中不如在 4G 网络中丰富,而 4G 策略又不如 5G 策略丰富。同样,UE 认证和会话建立是由涵盖 4G、5G 和 WiFi 的通用功能以通用方式完成的。在 4G、5G 和 WiFi 的不同设备中实现的数据平面,在 Magma 中通过通用、可编程的数据平面实现。
表 1: Magma 抽象与特定无线技术的比较
表 1 显示了 4G、5G 和 WiFi 的各种组件是如何被映射到一套共同的 Magma 抽象中的。这里的核心思想是,通过执行一组功能,从而验证用户,建立会话状态,控制数据平面,等等。Magma 以一种与无线技术无关的通用方式完成所有这些工作,从而提供了一种将特定无线技术的细节从核心中抽象出来的方法,并且将相关协议终止在靠近无线本身的地方。
此外,Magma 增加了一些不属于 3GPP 标准的通用功能,如设备管理和遥测。再加上 SDN 架构,这就简化了对分布在广大地理区域的大量设备的管理。Magma 不需要登录到特定设备中去配置或检查统计数据,而是从编排器中提供中央管理和监控,并且其他接入北向 API 的系统也可以利用这些数据。我们发现,将设备管理和遥测视为 Magma 的首要职责,可以大大降低运营接入网的复杂性和成本(第 4.3.1 节)。
我们并不指望当前 Magma 的功能分解(图 4)是最基本的,但我们的经验表明,无论从工程角度还是从广泛的用例来看,至少是有用的(第 4 节将进一步讨论)。组件之间的模块化使 Magma 的内部接口可以独立于 RAN 发展,这与迭代开发方法相一致,与 3GPP 僵化的接口定义形成鲜明对比,使得团队能够对 AGW 功能进行重大改变,如添加新功能(如 5G 支持)或重构内部服务,而不需要将这些变化向南向 RAN 或向北向调度器 API 暴露。
图 4 左边特定于 RAN 的模块和右边的通用功能之间的所有通信都基于 gRPC[5],这是一个开源 RPCRPC 框架,所有长距离通信(例如从 AGW 到编排器)也是如此。虽然这是构建现代分布式系统的典型方法,但与为 3GPP 组件之间的通信协议有很大不同,后者将终端(如 UE 和 MME)的一致性要求泄露到网络级协议中。通过在 HTTP 上运行,gRPC 继承了 TCP/IP 对丢包和延迟的弹性,这在一些为更良好的受控环境(如专线)而设计的 3GPP 协议中是没有的。一个具体例子是 GTP(GPRS 隧道协议,GPRS Tunneling Protocol),它对丢包和延迟很敏感,以至于在质量较差或拥挤的回传链路(如卫星或共享微波链路)上很难运行。因此,采用 gRPC 使 Magma 有更大的自由度来实施替代的一致性模型,而不会在更多样化的回传网络条件下破坏 UE 状态机。在实践中,这种容忍度有助于减少设备上的错误处理。虽然 UE 在经历了 3GPP 协议级故障后应该重新连接,但我们发现某些使用了低端基带处理器的 UE 无法完成可靠的处理。当 UE 无法重连时,故障表现让使用这些设备的人感到困惑,他们会觉得这是因为信号不好,而且故障通常只在强制 UE 重启后才会解决。由于 Magma 在 AGW 本地终止 GTP,不用穿越回传链路,所以 UE 永远不会经历 GTP 连接中断,也不需要处理这类错误。
虽然和无线技术无关,但 Magma 必须对功能开发优先级做出实际选择。许多早期 Magma 部署使用的是 LTE,所以优先支持 LTE 功能,而把 5G 的支持放在后面。一个很好的例子是对 QoS 策略的支持,如第 2.2 节所述,今天 LTE 和 5G 都支持实行速率限制和使用上限的简单策略。当然也可以支持更复杂的策略(尤其是在 5G 中),目前正在开发对更丰富策略的全面支持。
3.2. 分层 SDN 控制平面
Magma 采用软件定义网络(SDN)架构,以减少操作复杂性以及对熟练员工的依赖。运营商不用基于分布式的设备集合进行配置,而是在编排器上指定整个网络的策略。编排器提供了中央控制点,并公开北向 API,以便与其他系统集成(例如,用于指标、警报和监控的系统)。然而,在单一中央控制器中运行整个控制平面会对系统的可扩展性造成限制。因此,像网络虚拟化平台(NVP,Network Virtualization Platform)[37]和开放虚拟网络(OVN,Open Virtual Network)[42]这样的实用 SDN 系统采用了分层的控制平面,这也是 Magma 使用的模型。
在分层控制平面设计中,我们确定控制平面中哪些组件会影响全网范围,这些组件是中央控制器的候选对象。例如,为了向网络添加新用户,关于该用户的长期信息是全网信息,由中央控制器创建和维护。相反,与 UE 相关的许多运行时状态可以被定位到单个 AGW。例如,UE 接入时与某个 AGW 相关联,UE 会话状态可以由该 AGW 的本地控制平面创建和管理。因此,大部分控制平面能够随着基站和用户数量的增加而扩展,而不会增加中央控制器的处理负载。
中央控制平面和本地控制平面之间的这种划分大致上与控制平面状态变化的时间尺度相一致。新用户的增加发生在配置时间尺度上,该状态是集中管理的。会话状态的创建(当 UE 接入并连接到 AGW 时)发生的频率更高,这种运行时状态由 AGW 的本地控制器处理。
与任何 SDN 架构一样,必须考虑"无头(headless)"操作,即数据平面节点与中央控制平面断开连接的情况。在传统 SDN 方法中,目标是确保数据平面在没有控制平面的情况下继续运行,只是在控制平面断开时,无法对数据平面进行更新。有了分层控制平面,即使无法连接中央控制器,许多本地操作仍然可以处理。例如,因为本地控制平面有足够的信息(例如,缓存的用户资料)来处理会话的建立,AGW 仍然可以为连接到基站的 UE 建立会话。相反,网络范围内的活动,如增加用户或改变用户策略,必须等到中央控制平面再次可用。Magma 对可用性和一致性进行了权衡,正如 CAP 定理[22, 28]所暗示的那样。一般来说,唯一的问题是在断开连接时,存储在 AGW 中的状态有可能是旧的,比如可能允许 UE 暂时消耗超过其配额的资源。
这种设计有助于实现 Magma 的可扩展目标,既允许最小足迹(缩容),也允许扩大规模。最小的 Magma 部署可以是单一 AGW 和一个编排器。编排器通常是部署在云上的三个虚拟机实例,而 AGW 本身是一个小型(4 核)X86 商品服务器。这比传统蜂窝式分组核心网的硬件要少得多。扩容基本上只需要增加 AGW,从而可以支持更多基站和 UE,而编排器上的负载没有增加多少。第 4.3 节将讨论我们在扩容方面的经验。
将本地控制面功能放在 AGW 上的决定,虽然有利于可扩展性,但确实需要权衡利弊,尤其是这样会让一些需要 AGW 之间协调的功能变得复杂。值得注意的是,虽然 Magma 支持同一个 AGW 提供服务的基站之间的移动性,但 AGW 之间的无缝移动性需要在切换期间从一个 AGW 到另一个 AGW 进行一些控制面状态的通信。虽然没有这个功能也能支持许多用例,但希望将来能增加这一功能。
3.3. 小型故障域的容错
基于 Magma 建立低成本解决方案的愿景,对架构如何处理容错有很大影响。低成本硬件很容易发生故障,因此 Magma 采用了大多数现代云系统的一致看法,即预计个别组件会发生故障,但必须控制单一组件故障影响到的用户(即故障域必须很小),并且不能影响其他组件。这种方法对软件升级等操作也有积极影响,因为有可能在不关闭整个系统的情况下独立升级小部件,这与传统 3GPP 实施方式形成了鲜明对比。
Magma 类似 SDN 的架构比典型 3GPP 实施更充分的将状态本地化。在标准实施中,UE 运行状态分散在几个大型组件中(例如,LTE 下的 PGW、SGW 和 MME)。相比之下,Magma 将 UE 运行状态定位到单一 AGW,从而简化了故障处理。存储在 AGW 中的运行状态被定期检查,并可能被复制到作为云服务运行的 AGW 备份实例。当一个 AGW 发生故障时,备份云实例接管服务,管理受影响的一组 UE 连接,直到主 AGW 被重启。如上所述,即使与编排器断开连接,AGW 也可以继续与 UE 建立会话。第 3.4 节中描述的状态同步方法可以减轻这种故障的长期影响。
虽然传统蜂窝分组核心网通常需要为数百万用户服务,但 Magma 将大部分功能分配给了大量接入网关,因此每个 AGW 都是一个故障域,维持少量(通常少于 10 个)基站服务的相对较少的 UE 状态。单个 AGW 故障会影响到目前由附属基站服务的 UE 集合,但对网络其他部分或其他客户没有影响,这与标准移动核心网实施中典型的大型故障域形成了鲜明对比。
3.4. 状态同步
移动核心网的状态需要在组件之间进行同步,一般来说,某个组件是某些状态的权威所有者,需要与其他组件同步状态。在 Magma 中,状态可以采取三种形式之一,Magma 对此做出不同的保证。
首先是与 UE 及其网络活动相关的运行时状态。与现有用户设备和 RAN 设备的向后兼容性要求 Magma 实现标准定义的状态机,以支持网络接入等操作。由于 UE 本身、RAN 设备或 Magma 的"核心"网元中的事件,运行时状态的修改随时可能发生。重要的是,Magma 中的运行时状态被封装在 AGW 中,如第 3.3 节所述,AGW 是 Magma 的故障域,我们为 AGW 定义了崩溃恢复故障模型。此外,大多数运行时状态都是短暂的,在发生故障时可以恢复,比如 UE 可以重新接入。
其次是配置状态,与 Magma 网络组件(如 AGW)的配置相关。该状态只会由编排器写入并异步推送到 AGW,例如应用于用户类别的网络策略,或由 AGW 应用于连接的 RAN 设备的无线配置。AGW 在崩溃后会恢复配置状态,配置状态的真实来源持久存储在编排器中(Postgres),允许通过编排器修改配置状态。配置状态通常在人能够感知的时间尺度上发生变化(即几分钟或几小时)。
最后,Magma 还管理指标状态,即来自 Magma 组件的遥测数据。这些数据虽然有用,但都是基于尽力而为模型采集的。
像其他云原生系统一样,Magma 对运行时状态和配置状态采用了"期望状态"模型。意思是,为了同步所需的状态变化(例如,在数据平面中增加一个新会话),其最终状态是通过 API 设置的。这与 3GPP 规范中常见的"CRUD(创建、读取、更新、删除)"接口形成对比。Magma 用期望状态模型取代了 CRUD 模型,以简化部分故障情况下对系统各组件变化的推理。这是在挑战环境中常见的情况,端到端系统的一部分(如回传)远不如其他部分(如 UE 和 RAN 之间的链接)可靠。下面将通过一个简单的例子来进一步解释。
考虑在 AGW 中为一组活跃会话建立数据面状态的情况。假设有两个活跃会话,X 和 Y,然后第三个 UE 接入,需要建立会话 Z。在 CRUD 模型中,控制平面将指示数据平面"添加会话 Z"。相比之下,期望状态模型将传达整个新状态:"现在会话集合是 X、Y、Z"。CRUD 模型在面对故障时很脆弱,如果丢了一个消息,或者某个组件暂时无法接收更新,接收端就会与发送端不同步。因此,控制平面有可能认为会话 X、Y 和 Z 已经建立了,而数据平面只有 X 和 Y 的状态。通过发送所有状态,可以确保一旦接收端能够再次接收消息,就会重新与发送端同步。
这种方法在云原生世界中并不新奇,但与典型的 3GPP 系统不同,从而允许 Magma 容忍偶尔的通信失败(例如由低质量回传引起的失败)或由于软件重启、硬件故障等导致的组件失效。将 3GPP 协议的范围限制在网络的最边缘,使我们能够灵活的重新考虑状态同步,以提高容错能力(此外还有上面提到的其他好处)。
最后,考虑一下 Magma 如何管理一个特别的策略状态:根据数据量向用户收费,以及重复消费的可能性。基于数据量的计费策略通常使用第三方在线收费系统(OCS)来实现,该系统与网络运营商现有的业务支持系统(BSS)以及 Magma 集成。在这种安排下,计费和收费(billing and charging) 由 OCS 处理,而 Magma 处理计量和记账(metering and accounting) 。OCS 跟踪用户账户余额(如美元),然后通过 Magma 向用户授权少量数据配额(如 1MB)。当用户接近用完其配额时,Magma 代表用户向 OCS 申请另一个配额,OCS 决定是否批准或拒绝该请求。从 Magma 的角度来看,一个用户是否被分配了配额是配置状态,而用户当前配额的剩余量是运行时状态。因此,虽然某个恶意用户有可能通过在 AGW 之间战略性移动来实现双花,但作为商业决策,允许的最大双花消费额度是以配额大小为上限的。对于那些特别关注这个问题的运营商,也可以在分布式环境中采用基于容量的记账技术[31]。