Chapter 6: Managed Cloud Service¶
本章讲述如何将前面章节的所有组件 (RAN, 6GC) 整合起来, 以云服务的形式提供5G连接.
这是一种与传统电信运营商完全不同的思路:
- 传统方式: 电信运营商用专有硬件, 封闭系统, 通过复杂的OSS/BSS系统管理
- 云原生方式: 用通用硬件, 开源软件, 像管理普通云应用一样管理5G网络
核心转变: 把"运营商的专属领域"变成"可以在企业自己部署的云服务", 有利于扁平化与横向扩展.
这样的5G服务, 部署在企业自己的数据中心或公有云上, 称为私有5G (Private 5G). 这也与本书的标题 Private 5G: A Systems Approach 相呼应.
私有5G的用户可以是企业, 工厂, 校园等, 他们自己管理网络, 满足特定的业务需求. 这类用例也就是很多公众号, 新闻里提及的"工业 4.0"
构建模块¶
building blocks
5G在最开始是传统运营商的专属领域 (封闭的专有硬件设备), 这种OSS/BSS系统架构与管理方式, 与我们这里提及的 cloud-native private 5G 的完全不同.
我们并不关心前者, 他们是历史的尘埃. 我们更倾向于了解后者的构建模块. 因此本章节并不会提及 prev 5G, 以及传统组件与 cloud-native 组件的关系.
我们从零起步, 只关心 cloud-native private 5G 的构建模块!
整个 cloud-native private 5G 系统, 如下图所示:

硬件层: 交换机+服务器¶
- 服务器: 普通的x86或ARM服务器, 不是专用电信设备
- 交换机: 用通用交换芯片
软件层: 云原生组件与管理平台¶
这五个工具形成一条"流水线", 各司其职:
| 工具 | 角色比喻 | 具体职责 | 谁该负责 |
|---|---|---|---|
| Docker | 打包工人 | 把软件功能打包成标准化的"集装箱" (容器), 确保在任何地方都能运行 | - |
| Kubernetes | 车间主任 | 管理这些"集装箱": 启动多少个, 分配多少资源, 坏了自动重启 | - |
| Helm | 装配图纸 | 描述一个应用由哪些容器组成, 它们之间如何连接 (由开发者编写) | 开发者 |
| Fleet | 物流调度 | 把多套Helm图纸部署到多个Kubernetes集群上 (支持GitOps方式) | 运维人员 |
| Terraform | 基建工程师 | 搭建Kubernetes集群本身. 以声明式方法配置infra | 运维人员 |
terraform 如何以声明式方式配置infra
Terraform 假设有底层的配置 API, 利用这些 API 来创建和管理资源.
用户只需编写配置文件, 描述所需的基础设施状态, Terraform 会自动处理创建, 更新和删除资源的细节
常见的 API 有:
- AKS: Azure Kubernetes Service. 来自 Microsoft Azure
- EKS: Elastic Kubernetes Service. 来自 AWS
- GKE: Google Kubernetes Engine. 来自 GCP
- RKE: Rancher Kubernetes Engine. 来自 Rancher
部署架构: 以 Aether 为例¶
以一个前几章反复提及的开源项目来展示: Aether 是一个已部署到多个站点的运营边缘云
它受到了 SDN 的启发, 将多个站点的边缘设备 (如 RAN, 核心网等) 整合起来, 以云服务的形式提供5G连接.
整个框架叫做 Hybrid Cloud Architecture, 包括两个主要部分:
- 中央大脑: Central Cloud
- 就一个. 位于云端数据中心
- 边缘站点: Edge Cloud
- 很多个. 位于网络边缘
- 在Aether中的专有名词是: ACE. Aether Connected Edge

看局部: 边缘云 ACE¶
每个企业部署一个ACE, 每一个ACE是一组基于Kubernetes的边缘节点, 运行RAN和核心网组件

本质上, 自顶向下分三层:
- Layer 3: SD-RAN, SD-Core, ...
- Layer 2: SD-Fabrics
- Layer 1: Physical Infra (k8s + server + switch)
核心组件:
- SD-RAN: 软件定义的无线接入网, 控制部署在企业的小基站
- SD-Core:
- 本质上是 Core-UP (ch2中我们提到过, local breakout架构, Core-UP放本地, Core-CP放云端)
- 处理实际的数据转发, 实现"本地分流" (Local Breakout)
- SD-Fabric: 以SDN方式管理的交换网络
看整体: Hybrid Cloud¶

- 控制面集中, 用户面分布: 控制面逻辑可以共享, 用户面必须靠近用户
- 灵活配对: 一个控制面实例可以管理多个用户面实例, 隔离程度可配置
- 逻辑集群 vs 物理集群:
- 边缘 ACE 通常是物理集群 (真实硬件. 上述的 server / switch)
- 中央的 SD-Core CP 是逻辑集群 (运行在GCP/Azure/AWS上的k8s)
- 甚至可以用KIND (Kubernetes in Docker)在笔记本上跑开发环境
(1) "multi-tenant"需要区分不同角色:
| 角色 | 职责 | 访问范围 | 举例 |
|---|---|---|---|
| 云运营商 | 管理整个混合云基础设施 | 全部集群 | AWS, Azure, GCP DC管理员 |
| 企业管理员 | 决定本站点运行什么应用, 如何分配资源 | 仅自己的站点 | mint, 中国移动企业管理员 |
| 第三方服务商 | 提供边缘应用 (源码/Docker镜像) | 通过生命周期管理流水线接入 | 开源社区为❤️发电的开发者 |
(2) Aether支持从简单到复杂的多种部署形态:
- 最简配置: 单服务器, 用传统小基站 (非O-RAN), AMP和SD-Core都在本地
- 标准配置: 多服务器集群, O-RAN小基站 + SD-RAN, 控制面在云端
云管理平台: 以 AMP 为例¶
Cloud Management Platform
"AMP manages both the distributed set of ACE clusters and one or more SD-Core CP clusters running in the central cloud"
AMP (Aether Management Platform) 位于中央云端, 负责管理所有边缘 ACE 集群和中央 SD-Core CP 集群, 提供 5G-as-a-Service 服务

自顶向下看, AMP有四个子系统:
- Resource Provisioning:
- 初始化资源 (配置并启动物理和虚拟资源)
- 状态转移 (增加, 替换或升级容量)
- Lifecycle Management:
- 持续集成 + 软件组件的部署 (基于 GitOps)
- Service Orchestration:
- "manage services once they are operational"
- 定义了一个 API, 隐藏底层 micro-service 的实现细节, 并基于此管理提供的 5G 连接服务
- Monitoring & Telemetry:
- 收集, 归档, 评估和分析底层组件产生的运营数据
注意
积累! 学着点! 说不定后面我们的 dtclab-plc 项目也会用到类似的架构设计
从 workflow 的角度看 AMP (highlighting the offline and online aspects of cloud management):

离线 vs 在线的区分
- 离线: 通过提交代码/配置到Git仓库来触发系统变更
- 在线: 通过API, 实时读写运行系统的参数
Resource Provisioning¶
def(资源配置): 将虚拟和物理资源在线的过程
当 cloud 由虚拟和物理资源结合构建时, 比如像 Aether 这样的混合云, 我们需要一种无缝的方式来兼容两者

做法: 用 Terraform 把基础设施的配置"代码化" - 可版本控制, 可重复执行, 可审计
- 先在硬件资源上叠加逻辑结构
- 再在逻辑结构上部署 Kubernetes 集群
- Terraform "声明式定义" 集群
声明式定义 vs 命令式定义
- 声明式定义 (Declarative Definition) 是一种编程范式, 强调描述期望的最终状态, 而不是具体的实现步骤.
- 命令式定义 (Imperative Definition) 则侧重于逐步指令, 明确告诉系统如何一步步达到目标状态.
如果是"命令式" (比如用 Shell 脚本)
你需要写清楚每一步, 很麻烦:
| Bash | |
|---|---|
1 2 3 4 5 6 7 8 9 10 11 12 13 | |
如果是 Terraform 的"声明式定义" (.tf 描述期望状态即可)
| Terraform | |
|---|---|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 | |
声明式定义:
- 关注点在"终态": 定义的是"集群建成后长什么样"
- 代码即文档: 描述了系统应该是什么样子
- 幂等性: 同样的代码, 跑一次和跑一万次, 结果都是一样的. 极其适合自动化运维
Lifecycle Management¶
这是一条完整的CI/CD流水线:

CI (持续集成) 的"产出":
- Docker镜像 (打包好的软件)
- Helm Charts (部署配置)
CD (持续部署) 的"消费":
- 从仓库拉取镜像和配置
- 先部署到Staging测试
- 通过后再部署到Production
三大核心原则:
- 松耦合: CI和CD通过仓库中的 artifact 对接, 互不直接依赖
- Configuration-as-Code (GitOps): 所有配置都在Git仓库中, 提交即部署
- 部署门控: 可以在流水线中加入人工审核或自动化测试的关卡
Service Orchestration¶
为运行中的 5G 服务提供统一的管理 API
服务编排的四个核心任务:
- 认证: 确认是谁在发起操作
- 授权: 检查这个人有没有权限执行这个操作
- 下发: 把配置推送到后端各组件
- 持久化: 记录配置, 确保重启后仍然生效
技术实现:
- 用 YANG 语言定义数据模型
- 从模型自动生成 API
- 用 gNMI 协议向下层组件推送配置变更
- 用 Key-Value Store 存储配置状态
YANG 语言是什么
YANG 是一种数据建模语言 (Data Modeling Language), 最初是由 IETF (互联网工程任务组) 设计开发的, 专门用于网络配置协议 (NETCONF)
它的核心作用是对网络设备上的数据进行建模. 具体包括:
- 配置数据 (Configuration Data): 例如接口的 IP 地址, 路由协议的参数
- 状态数据 (State Data): 例如接口的丢包统计, 当前的 CPU 使用率等只读数据
- 远程过程调用 (RPCs): 定义设备支持的操作命令
- 通知 (Notifications): 定义设备主动上报的告警或事件
例子: 为一个网络设备的 network interface 建立模型
| YANG | |
|---|---|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 | |
Monitoring & Telemetry¶
收集三类数据来了解系统运行状态:
| 数据类型 | 特点 | 用途 | 常用工具 |
|---|---|---|---|
| Metrics (指标) | 定量数据, 周期性采集 | 性能监控, 容量规划, 告警 | Prometheus |
| Logs (日志) | 事件记录, 带时间戳 | 故障排查, 审计 | ElasticSearch |
| Traces (追踪) | 跨服务的调用链 | 理解请求路径, 定位延迟来源 | Jaeger |
Traces的特殊价值:
在微服务架构中, 一个用户请求可能经过10+个服务. Trace能告诉你"这个请求慢在哪一步"!
这在"单体应用时代"靠 调用栈 就能看到, 但在分布式系统中必须专门记录!
Connectivity API¶
这是企业管理员实际使用的接口, 用来控制5G连接服务
内容有很多:
- API 风格:
GET,POST,PUT,DELETE, ... - 核心数据模型
enterpriseslicedevice-groupapplicationtraffic-class
- QoS参数如何"注入"实际配置
详见原文: Connectivity API
注意
积累! 学着点! 我们的 dtclab-plc 项目一定会用到类似的API设计
本章核心名词¶
基础设施层
| 名词 | 解释 |
|---|---|
| Leaf-Spine Fabric | 叶脊网络架构, 一种数据中心常用的交换机互联拓扑, 提供高带宽, 低延迟的服务器间通信 |
| Helm / Helm Chart | Kubernetes的配置管理工具, Chart是描述应用如何部署的"图纸" |
| Fleet | 多集群应用部署管理器, 支持GitOps方式批量部署 |
| Terraform | 基础设施即代码工具, 用声明式配置管理云资源 |
| KIND | Kubernetes in Docker, 在Docker容器中运行Kubernetes, 用于开发测试 |
部署架构
| 名词 | 解释 |
|---|---|
| ACE | Aether Connected Edge, Aether的边缘部署单元 |
| AMP | Aether Management Platform, Aether的云管理平台 |
| SD-RAN | 软件定义的无线接入网, 基于SDN架构的RAN实现 |
| SD-Core | 软件定义的核心网, 分为CP (控制面) 和UP/UPF (用户面) |
| SD-Fabric | 软件定义的交换网络, 管理数据中心内部的流量转发 |
| Local Breakout | 本地分流, 边缘流量不绕行中央直接在本地处理 |
| Neutral Host | 中立主机, 拥有基础设施并向多个运营商出租的第三方 |
管理平台
| 名词 | 解释 |
|---|---|
| Infrastructure-as-Code | 基础设施即代码, 用代码文件定义和管理基础设施 |
| Configuration-as-Code / GitOps | 配置即代码, 配置变更通过Git提交触发自动部署 |
| CI/CD | 持续集成/持续部署, 自动化的软件构建和发布流水线 |
| YANG | 一种数据建模语言, 常用于网络设备配置 |
| gNMI | gRPC Network Management Interface, 基于gRPC的网络管理协议 |
| Prometheus | 开源的指标监控系统 |
| ElasticSearch | 开源的日志存储和分析系统 |
| Jaeger | 开源的分布式追踪系统 |
数据模型
| 名词 | 解释 |
|---|---|
| Enterprise | 企业对象, 多租户隔离的根节点 |
| Site | 站点, 企业的一个部署点 |
| Slice | 切片, 端到端的隔离通信通道 |
| Device-Group | 设备组, 通过IMSI范围定义的一组终端设备 |
| Application | 应用, 设备要访问的目标服务端点 |
| Template | 模板, 预定义的QoS配置套餐 |
| Traffic-Class | 流量类别, QoS的具体参数集合 |
| SST/SD | Slice/Service Type 和 Slice Differentiator, 3GPP定义的切片标识符 |
| MBR | Maximum Bit Rate, 最大比特率 |