<!-- title: 笔记本上搭核心网：故障复现记 -->

# 笔记本上搭核心网：故障复现记

**概述**：核心网运维最尴尬的一件事是想练手却没处练——现网不敢动，商用测试床要立项要预算，新人的第一次实操往往就是凌晨的割接窗口。本文回答一个问题：能否用一台笔记本、零预算，复刻一张5G核心网，把现网最经典的几类故障搬进来反复演练？答案是四个开源项目：free5gc、Open5GS、UERANSIM、Wireshark。本文以 free5gc 与 Open5GS 官方仓库/文档及 3GPP 相关规范（TS 24.501、29.244、23.501）为锚定来源，给出从搭网到故障注入的完整练兵路径。

## 目录

- 一、现网练不了兵，是运维这行的老尴尬
- 二、开源四件套：各管一段
- 三、半小时，把一张5G核心网立起来
- 四、四个经典故障，搬进笔记本
  - 场景一：注册风暴——AMF如何体面地认怂
  - 场景二：N4心跳一断，计费先瞎
  - 场景三：NRF失踪——缓存在裸奔
  - 场景四：DNS配错一行，网元互相失联
- 五、从练兵场到现网：演练要有闭环
- 六、实验室的天花板：哪些坑复现不了
- 参考来源

## 一、现网练不了兵，是运维这行的老尴尬

干了十几年核心网，我对一个事实深有体会：**核心网运维的技能，九成是在深夜事故里逼出来的**。带过的年轻工程师，成长路径几乎一模一样——前两年跟着看告警、抄命令，第一次独立处置就是凌晨两点的割接保障。练手机会？没有。现网是生产环境，没人敢让新人碰；商用协议测试床动辄百万级投入，各省就那么几套，排期比现网割接还紧。

代价在事故复盘里写得明明白白。2022年7月2日凌晨，日本KDDI在替换语音处理设备的割接中出事：注册话务激增叠加流量控制缺陷，故障像雪球一样滚过整个网络，语音、数据大面积中断。据KDDI官方调查报告和NHK等公开报道，波及用户以千万计，大部分区域语音业务持续异常约两天，全网完全恢复用了更久，事后被定性为影响日本通信史上罕见的大规模事故。近三年从东京到北美，多起全国级断网的复盘报告里，反复出现同一类结论：**变更前的测试环境没有覆盖到这条路径**。

环境问题不解决，练兵就是一句空话。好消息是，5GC标准化十年后，开源社区已经把“协议实现”这件事做平了：核心网的全部网元行为，都有高质量的开放代码可以跑在一台笔记本上。现网不敢动的故障，实验室里随便造。

## 二、开源四件套：各管一段

先把四个项目摆清楚，各有各的岗位，别装错位置：

| 项目 | 语言 | 定位 | 能力范围 | 存储依赖 | 典型搭档 |
|---|---|---|---|---|---|
| free5gc | Go | 研究与教学导向的5GC | 5GC全套SBA网元（AMF/SMF/UPF/NRF/UDM/AUSF/PCF等） | MongoDB | UERANSIM |
| Open5GS | C | 工程化双模核心网 | 5GC + EPC 双模 | MongoDB（另有WebUI开户） | UERANSIM/srsRAN |
| UERANSIM | C++ | UE与gNB纯软件仿真 | 空口与N2仿真，不含核心网功能 | 无 | 任一5GC |
| srsRAN Project | C++ | 真空口基站 | gNB/CU-DU，支持O-RAN 7.2分流 | 无 | USRP等SDR硬件+5GC |

几句话点评：

- **free5gc**（https://github.com/free5gc/free5gc ）是学SBA架构最好的活教材——每个网元一个独立进程，代码按3GPP流程分模块，读代码就像读规范。它还自带webconsole，开户点几下鼠标就行。
- **Open5GS**（官方文档 https://docs.open5gs.org/open5gs/main/ ）工程味更浓：C语言实现、配置文件驱动，最大卖点是**EPC和5GC双模**——想复现4/5G互操作类故障（比如EPS Fallback），它是唯一顺手的选择。
- **UERANSIM**（https://github.com/ueransim/ueransim ）是这套组合拳的“假基站+假手机”：不发射任何射频，纯软件模拟gNB和UE，一条命令起几十个UE。练核心网，它就是你的话务发生器。
- **srsRAN Project**（https://github.com/srsran/srsRAN_Project ）是进阶选项，配合SDR硬件能打真空口。但练核心网故障用不上它，先放一边。

本文的搭配建议：**Open5GS 或 free5gc 二选一当核心网，UERANSIM 当无线侧，Wireshark 当眼睛**。这也是开源社区事实上的标准实验组合——连现网厂家的研发团队，内部测试也常拿这套当沙盘。

## 三、半小时，把一张5G核心网立起来

硬件门槛低到离谱：一台4核8G的虚拟机（或笔记本装Ubuntu 22.04）足够跑全套。建议核心网和UERANSIM分两台虚拟机部署，中间隔一张NAT网卡——这样后面做链路故障注入才有“真的断”的感觉。

整体拓扑如下，这也是后面所有故障演练的战场：

```mermaid
flowchart TD
    UE["模拟UE<br/>UERANSIM"] -->|空口仿真| GNB["模拟gNB<br/>UERANSIM"]
    GNB -->|N2 NGAP| AMF["AMF<br/>注册与移动性"]
    AMF -->|N12 鉴权| AUSF["AUSF"]
    AMF -->|N8 签约| UDM["UDM"]
    AMF -->|N11 会话| SMF["SMF"]
    SMF -->|N7 策略| PCF["PCF"]
    SMF -->|N10 签约| UDM
    SMF -->|N4 PFCP| UPF["UPF<br/>用户面锚点"]
    UPF -->|N6| DN["数据网<br/>NAT出口"]
    AMF -->|服务注册| NRF["NRF"]
    SMF -->|服务发现| NRF
```

搭建步骤，以Open5GS为例（free5gc同理，官方文档都有逐步指引）：

1. **装核心网**。Ubuntu下按官方文档走PPA最省事：`sudo add-apt-repository ppa:open5gs/latest`，然后 `sudo apt install open5gs`。装完是一组独立服务：amfd、smfd、upfd、nrfd……每个对应一个网元。
2. **装MongoDB和WebUI**，在WebUI里开户一个测试用户：填IMSI、K、OPc三件套。这三个值等下要原样抄进UE配置——**鉴权五元组对不上，注册第一步就会死在AUSF门口**，这是新手第一坑。
3. **编译UERANSIM**，改两个YAML：gNB配置里填AMF的IP、PLMN和TAC；UE配置里填IMSI/K/OPc和DNN（默认internet）。
4. **按序点亮**：先起NRF和AMF，再跑UERANSIM的gNB——**观察AMF日志里NG Setup成功**，这是N2通了的标志；然后起UE，看Registration Request一路走到Registration Accept；最后PDU Session Establishment Complete，UE拿到地址，ping通对端，全网拉通。

验收标准就一句话：UE能ping出去。到这里你拥有了人生第一张私有的5G核心网。抓包建议全程开着，Wireshark的显示过滤串后面要用：`ngap`、`nas-5gs`、`pfcp`、`http2`（SBI信令走HTTP/2）。看信令是核心网运维的基本功，实验室里每一帧都值得逐条读懂。

## 四、四个经典故障，搬进笔记本

网立起来只是及格线。真正的价值在下面：把现网反复杀伤的四类故障注入进去，练到形成条件反射。

### 场景一：注册风暴——AMF如何体面地认怂

**复现方法**：写个循环脚本，让UERANSIM并发拉起几十上百个UE，同时把周期性注册间隔调小，人为制造信令洪峰。

**你会看到什么**：AMF先是注册成功率掉头向下，接着日志里出现NAS拒绝，原因值#22（Congestion），拒绝消息里带着退避计时器T3346——UE收到后必须安静到计时器超时才能再试。再往下压，gNB侧会收到NGAP的Overload Start消息：AMF在告诉接入网“我顶不住了，少放人进来”。

**这一幕对应的现网剧本**：KDDI事故的引擎正是注册风暴——割接后全网终端重新注册，信令洪峰压垮控制面，再扩散到用户面。3GPP在TS 24.501里定义了NAS级过载控制（T3346退避），在TS 38.413里定义了NGAP级过载（Overload Start/Stop），两层闸门就是为了这一天设计的。过载时先拒谁、拒多少、退避多长，标准允许多种实现，具体行为以各厂家官方文档为准——但“要有闸门、闸门要分级”这件事，标准是强制表态的。

**练兵要点**：观察你的AMF在多大压力下开始拒绝，拒绝的顺序是什么，gNB侧如何配合。把数值记下来，你就理解了现网割接方案里“灰度放量、分片升档”为什么是铁律——**放量曲线要坡度，不能跳崖**。

### 场景二：N4心跳一断，计费先瞎

**复现方法**：核心网全绿、用户正打着流量的时候，在宿主机上敲一条iptables，把UDP 8805端口（PFCP注册端口）双向丢弃，模拟SMF与UPF之间的N4链路中断：

```
sudo iptables -A INPUT  -p udp --dport 8805 -j DROP
sudo iptables -A OUTPUT -p udp --dport 8805 -j DROP
```

**你会看到什么**：世界安静了几秒——用户流量居然还在跑。然后SMF日志开始报PFCP Heartbeat Request无响应，重试若干次后把UPF标记为不可用。此后新会话建立失败；更要命的是存量会话的用量报告停了，**计费系统对这个UPF下的所有流量瞬间失明**。

**这一幕对应的现网剧本**：用户面照转、计费先瞎，是N4故障最阴险的地方。控制面断了，业务表面无恙，故障发现靠的往往不是告警而是账务对账——等计费部门找上门，故障已经烧了好几个小时。TS 29.244定义的PFCP心跳机制就是为此而设，心跳间隔与重试次数的取值，直接决定“误判摘除”与“带病运行”之间的天平。

**练兵要点**：记录从断链到UPF被摘除经历了几个心跳周期；再想一层——你的现网监控里，有没有一条告警能在第一分钟就抓住“PFCP会话报告断流”？

### 场景三：NRF失踪——缓存在裸奔

**复现方法**：直接停掉NRF进程（或封掉它的SBI端口，Open5GS默认7777）。

**你会看到什么**：先是什么都不发生。已注册的UE照常上网，已建立的会话纹丝不动。很多人第一次做这个实验都会愣住：**NRF全挂了，网络怎么没瘫？** 答案在SBA的设计里：TS 23.501允许消费网元缓存服务发现结果，NRF返回的NF Profile自带有效期，有效期内网元直接用缓存互访，不走NRF。缓存在替NRF裸奔。然后，在缓存到期、恰好又有新业务要发现的时刻，雪崩才开始：新PDU会话建立失败，AMF与SMF之间查不到可用实例，日志里刷满发现失败。

**练兵要点**：量出你这套网从“NRF死”到“业务开始坏”的真实间隔，这就是SBA网络的“缓冲垫厚度”。现网启示有两条：NRF必须部署成Pool/Set级高可用；监控要看“缓存剩余有效期分布”，而不是等发现失败告警——**等到告警响，缓冲垫已经磨穿了**。

### 场景四：DNS配错一行，网元互相失联

**复现方法**：把核心网内部DNS指到一台自建dnsmasq，跑通后故意改坏一条记录——比如让SMF解析UPF的主机名返回空，或者干脆停掉resolver。

**你会看到什么**：注册流程开始变得极慢，UE侧表现为超时重试；SMF日志里是解析失败或解析超时。注意关键现象：**不是报错，是慢**。DNS故障最典型的伪装是“网络性能劣化”，一线最容易按“拥塞”方向去查，白白烧掉黄金处置时间。

**这一幕对应的现网剧本**：EPC/互操作世界里DNS是隐形地基——APN解析、TAI-FQDN、漫游路由查询（机制见TS 29.303），任何一个解析环节数秒的超时，乘以全网用户就是一场事故。运营商内部DNS出问题引发大面积业务劣化，在历年故障通报里从来不缺席。4/5G互操作（N26接口、EPS Fallback）对DNS的依赖比纯5G场景更深，这也是我推荐用Open5GS练这套场景的原因。

**练兵要点**：先练“识别”——看到注册建立时延抬升而信令内容正常，第一反应应该有一项是查DNS；再练“兜底”——看看你的配置里resolver配了几个、超时多少、能否降级。

## 五、从练兵场到现网：演练要有闭环

单点复现只是入门，练兵要成体系。我给团队定过一个规矩：**每月一个“故障日”，从现网事故库里选题，进实验室盲演**。流程如下：

```mermaid
flowchart TD
    A["月初选题<br/>从事故库挑场景"] --> B["注入故障<br/>iptables或停进程"]
    B --> C["盲演定位<br/>只看告警与日志"]
    C --> D{"10分钟内<br/>给出第一假设?"}
    D -->|是| E["验证根因<br/>抓包对时间轴"]
    D -->|否| F["记卡点<br/>回炉补课"]
    E --> G["复盘归档<br/>更新SOP"]
    F --> G
    G --> A
```

盲演的意思是：处置人只知道“网络坏了”，不知道注入了什么，只许看告警、日志和抓包。这是对现网值班场景的最大还原。每季度把四个场景升级一个难度，例如叠加故障（N4断链同时来一波注册风暴）或加时间压力。

四个场景的标准演练清单，拿去就能用：

| 场景 | 注入方法 | 关键观测点 | 对应规范 |
|---|---|---|---|
| 注册风暴 | 脚本并发拉起大量UE | NAS拒绝原因#22、T3346、NGAP Overload Start | TS 24.501 / TS 38.413 |
| N4断链 | iptables封UDP 8805 | PFCP心跳超时、UPF摘除耗时、用量报告断流 | TS 29.244 |
| NRF失联 | 停进程或封SBI端口 | 缓存兜底时长、到期后的发现失败 | TS 23.501 |
| DNS失联 | 停resolver或改坏记录 | 注册建立时延、解析超时重试 | TS 29.303 |

考核标准定成行为化的：**10分钟内给出第一假设并说出验证路径**。比如N4断链场景的满分答案应该是三句话：用户面在跑控制面异常，先查N4；抓包过滤`pfcp`看心跳有没有去有回；顺手确认计费侧是否已受影响、要不要提前通报。能把“顺手通报计费”说出来，说明演练真正长成了意识。

复盘产物只有一份：更新后的SOP。每次演练的卡点，就是SOP该加的那一行。半年之后，这份SOP会比任何厂家培训都贴合你自己的网络。

## 六、实验室的天花板：哪些坑复现不了

最后泼三盆冷水，免得练兵练出错觉。

**第一，容量差着数量级**。笔记本上几十个UE就是极限，现网AMF面对的是百万级注册用户。过载控制的“阈值行为”可以理解机理，绝对数值没有参考意义。容量类问题还是要靠厂家实验室和现网灰度，实验室解决的是“行为学”，不是“容量学”。

**第二，空口是假的**。UERANSIM没有无线信道，不存在弱覆盖、干扰、切换测量这些无线世界的烦恼。想碰真空口，上srsRAN加SDR，但那是另一个维度的投入，而且依然替代不了真实商用终端的芯片行为——现网排查里大量怪问题（终端不回Registration Complete、鉴权向量兼容性）只有真机才能触发。

**第三，代码不等于产品**。开源实现是理解协议的最佳教具，但厂家设备在可靠性、运维接口、容量调度上有大量规范之外的工程化设计，这部分实验室里看不到。开源代码以学习研究为主，任何想直接用于生产环境的想法都应先做完整评估。

天花板之上，这套实验室的价值依然是无可替代的：它把“事故”从一条新闻变成了你亲手摸过的一条条信令。KDDI那种级别的雪崩，没人希望在现场第二次见到——但每个核心网工程师都应该在笔记本上见过一次。见过了，真轮到你值那班夜岗时，手不会抖。

## 参考来源

1. [free5gc 官方仓库](https://github.com/free5gc/free5gc) — 本文主轴来源之一：Go语言开源5GC，网元组成与部署方式以官方README/文档为准
2. [Open5GS 官方文档](https://docs.open5gs.org/open5gs/main/) — 本文主轴来源之一：双模核心网安装、配置与WebUI开户的官方指引
3. [UERANSIM 官方仓库](https://github.com/ueransim/ueransim) — 开源UE/gNB仿真器，实验组合的无线侧
4. [3GPP TS 29.244（PFCP规范）](https://www.etsi.org/deliver/etsi_ts/129200_129299/129244/) — N4接口PFCP心跳与会话报告机制（ETSI交付页）
5. [3GPP TS 24.501（5G NAS协议）](https://www.etsi.org/deliver/etsi_ts/124500_124599/124501/) — NAS过载拒绝原因值与T3346退避计时器定义
6. [2022年KDDI通信障害（Wikipedia条目）](https://en.wikipedia.org/wiki/2022_KDDI_outage) — 事故时间线整理，转述KDDI官方调查报告要点，具体数据以官方报告为准

---
> 本文由「51学通信」技术团队出品。51学通信由通信行业18年老兵**爱卫生**（微信ID: gprshome201101）维护，聚焦5G/6G核心网、3GPP标准解读、通信前沿技术深度分析。
> 出版作品有《5G核心网原理与实践》《IMS原理与实践》等4本通信专业书籍。知识星球「51学通信」提供深度技术答疑和行业洞察。

> [!tip] 51学通信知识星球
> **星主：爱卫生**（微信：gprshome201101）——公众号「51学通信」创办者，19 年通信行业运维与讲师经验，著有《GPRS网络信令实例详解》《EPC原理与实践》《5G核心网原理与实践》三本纸质书（各大电商平台有售）。
> **星球定位**：深耕 5G 核心网、IMS、NFV/AI、云原生等 ICT 领域，主打运维岗位与信令分析。
> **当前规模**：5200 篇主题 / 990 个回答，198 元/年。
> **加入福利**：加入星球后请加爱卫生微信，拉您进知识星球年度陪伴与答疑群——不限量回复您的各种问题，另有群内分享。
> **AI 加持**：51学通信知识星球已作为 skill 接入 WorkBuddy，使用 deepseek-4-flash 在海量星球帖子中精准找贴、找视频、找 FAQ 和案例，做总结、找文档和 PPT 等场景全覆盖。

![51学通信知识星球海报-扫码加入](https://wiki.500nian.com/images/zhixingqiu_qrcode.png)
