移动性管理原理 · 第3轮:从跟踪区到注册区更新信令的完整推演
想象你住在一座超级大城市,没有固定地址,每天在几十个城区之间晃荡。现在有一个快递要送给你,快递公司该怎么办?
最笨的办法是派出快递员满城扫街,逐门逐户地问"张三在吗"。这显然不现实——城市太大,扫一遍要好几天。聪明的做法是:让你主动"报到"。你每到一个新的城区,就给快递公司发条消息:"我现在在A区,接下来会在A区附近活动。"快递公司把这条信息记在档案里。等真有快递要送时,快递员只需要去你最后一次报到的城区找你,而不是满城跑。
移动通信网络面对的就是这个问题。一部手机在城市里游走,随时可能有来电或下行数据要送达,但网络不可能逐个基站去问"这部手机在我这儿吗"——全国几百万个基站、十几亿用户,那样做的信令开销会把网络冲垮。
这套"主动报到"的机制,就是本文的主角——注册区更新(Registration Area Update),4G 时代叫跟踪区更新(Tracking Area Update, TAU)。它是移动性管理里"空闲态寻人"的上半场:手机告诉网络"我在哪",网络才能在需要时去那个地方寻呼(Paging)它。两者一前一后,构成完整的空闲态移动性闭环。
小贴士:如果你已经读过本系列《寻呼:网络如何在亿万人海找到你》,可以把本文当作它的"前传"。寻呼解决"网络→手机"的找人,本文解决"手机→网络"的报到。
要理解注册区的设计动机,先得理解它要解决的核心矛盾:用最小的报到信令,换最小的寻呼开销。
先看一个反例:如果网络对每个手机做到"基站级"精度的定位(即精确知道手机此刻在哪个小区),寻呼就极其高效——直接去那一个小区叫它即可。但代价是,手机每次从一个小区移动到相邻小区,都要向网络报告一次。
我们来算一笔账。假设:
手机每次穿过小区边界,就要上报一次。单位时间内的报到次数近似为:
$$ f_{\text{TAU}} \approx \frac{v \cdot P_{\text{cell}}}{S_{\text{cell}}} = \frac{v \cdot 2\sqrt{\pi S_{\text{cell}}}}{S_{\text{cell}}} $$
其中 $P_{\text{cell}}$ 是小区周长。直观结论是:小区越小、移动越快,报到越频繁。在一座几亿用户的大网里,如果每人每分钟都报到几次,核心网会瞬间被信令风暴淹没。
反过来,如果完全不让手机报到(网络只在全网寻呼),寻呼开销又会爆炸。所以工程上的解法是——不要追踪到"小区"那么细,而是追踪到"一组小区"那么粗。这就引出了跟踪区(Tracking Area, TA)的概念。
跟踪区是一组相邻小区的逻辑集合,每个 TA 用一个全局唯一标识 TAI(Tracking Area Identity) 标记:
$$ \text{TAI} = \text{PLMN ID} + \text{TAC} $$
其中 PLMN ID 标识运营商网络,TAC(Tracking Area Code)是该网络内的跟踪区编号。
这样一来,寻呼时网络不再向全网上百万个小区广播,而是只向手机当前所在 TA 内的几十个小区广播,寻呼范围缩小了好几个数量级。手机在 TA 内部怎么移动都不用报到,只有当它跨出 TA 边界时才发起一次更新。
graph TB
subgraph City["某运营商网络"]
direction TB
TA1["跟踪区 TA-1<br/>TAC=0x0001<br/>含 ~30 个小区"]
TA2["跟踪区 TA-2<br/>TAC=0x0002<br/>含 ~30 个小区"]
TA3["跟踪区 TA-3<br/>TAC=0x0003<br/>含 ~30 个小区"]
TA4["跟踪区 TA-4<br/>TAC=0x0004<br/>含 ~30 个小区"]
end
UE((📱 手机))
UE -.在 TA-1 内自由移动<br/>无需报到.-> TA1
TA1 -.跨入 TA-2 边界<br/>触发更新.-> TA2
style TA1 fill:#cfe8ff,stroke:#1f77b4,stroke-width:3px
style UE fill:#fff3c4,stroke:#d4a017,stroke-width:2px
到这里逻辑很顺:用 TA 把粒度从"小区"放大到"几十个小区",报到和寻呼的开销都被压下来了。但故事到这里只讲了一半,因为只用单个 TA 还有一个致命缺陷——边界乒乓。
假设你住的地方正好在 TA-1 和 TA-2 的边界上,你家里 TA-1 信号、阳台 TA-2 信号。如果网络只分配单个 TA 给你,会发生什么?
你每次从客厅走到阳台,手机从 TA-1 切到 TA-2 → 发起一次更新;你走回客厅,又从 TA-2 切回 TA-1 → 再发一次更新。一天下来,你可能因为在家来回走动就触发了几十次信令交互。这就是臭名昭著的乒乓效应(Ping-Pong)——边界用户的信令开销被严重放大。
sequenceDiagram
participant U as 📱 边界用户
participant N as 🌐 网络
Note over U,N: 单 TA 分配 → 乒乓地狱
U->>N: 到阳台,进入 TA-2,发起更新
N-->>U: 确认,新 TA = TA-2
U->>N: 回客厅,进入 TA-1,发起更新
N-->>U: 确认,新 TA = TA-1
U->>N: 又到阳台,进入 TA-2,发起更新
N-->>U: 确认,新 TA = TA-2
Note over U,N: 在家踱步就刷掉几十次信令
聪明的工程师给了一个优雅的解法:不要只给手机一个 TA,而给一张 TA 清单——这就是 TAI List(跟踪区标识列表),5G 中称为 Registration Area List(注册区列表)。
核心规则只有一条:
手机只有当移动到一个"不在清单里"的 TA 时,才发起更新。
清单内的 TA 之间随便穿越,一律不报到。回到刚才那个边界用户,如果网络把 TA-1 和 TA-2 都放进他的清单,那么他在客厅和阳台之间走动就完全静默——两次过界都不触发任何信令,乒乓效应被彻底消灭。
graph TD
subgraph MyList["我的 TAI List = {TA-1, TA-2, TA-3}"]
direction LR
TA1["TA-1<br/>客厅"]
TA2["TA-2<br/>阳台"]
TA3["TA-3<br/>办公室"]
end
TA4["TA-4<br/>清单外❌"]
UE((📱 我))
UE -->|清单内任意穿梭<br/>零报到| TA1
UE -->|清单内任意穿梭<br/>零报到| TA2
UE -->|清单内任意穿梭<br/>零报到| TA3
TA1 -.清单内相互穿越<br/>全部静默.-> TA2
TA2 -.清单内相互穿越<br/>全部静默.-> TA3
TA3 ==>|进入清单外<br/>才触发更新| TA4
style MyList fill:#e8f5e9,stroke:#2e7d32,stroke-width:2px
style TA4 fill:#ffe0e0,stroke:#c62828,stroke-width:2px
这是一个非常典型的"工程权衡"设计。TAI List 越大,手机越不用报到(TAU 开销低),但寻呼范围越大(寻呼开销高);TAI List 越小,则相反。运营商需要根据用户移动性特征来调优清单大小,背后是一个经典的优化问题。
TAI List 还有一个妙处——它是逐用户分配的。不同用户可以拿到不同的清单,这让网络可以做精细的优化。比如:
这种"因人而异"的灵活分配,是 TAI List 设计相比固定注册区的最大智慧所在。
理解了"为什么",我们来看"什么时候"。TAU/Registration Update 的触发条件主要有以下几类:
| 触发类型 | 触发条件 | 典型场景 | 网络反应 |
|---|---|---|---|
| 移动性更新 | 手机进入一个不在 TAI List 内的新 TA | 乘车出城、跨区活动 | 分配新的 TAI List |
| 周期性更新 | 周期定时器(5G: T3512 / 4G: T3412)超时 | 手机长时间静止不动 | 确认手机仍在线、可达 |
| 强制更新 | 网络下发"重新注册"指令或核心网重组 | 网络维护、AMF 容灾迁移 | 重新走完整注册流程 |
| 能力/状态变化 | 手机能力改变、从非 3GPP 接入返回、CM 状态切换 | WiFi 通话切回蜂窝 | 更新签约与策略 |
其中最容易被新手忽略、却最影响现网表现的是周期性更新,我们单独细讲。
你可能会问:我手机放在桌上一天没动,也没出 TA,为什么还要报到?
答案是——网络必须确认你还"活着"且"可达"。手机可能因为电池耗尽、进入电梯盲区、掉线、关机等原因而失联。如果网络一直以为你还注册着,等真有人打电话给你时,网络会去你的 TA 寻呼,结果寻呼半天没人应答,白白浪费寻呼资源,还让主叫方傻等。
周期性更新就是手机与网络之间的心跳机制:每隔一段时间(T3512,典型值 54 分钟到几小时不等,可运营配置),手机主动报一次到,告诉网络"我还在线"。如果网络在更长的窗口内始终收不到心跳,就判定手机失联,做隐式去注册。
这三个定时器协同工作,构成了网络判断手机可达性的完整机制:
flowchart TD
A["注册完成<br/>AMF 下发 T3512"] --> B["UE 启动 T3512<br/>网络启动 Mobile Reachability"]
B --> C{"T3512 超时?"}
C -->|是| D["UE 发起<br/>周期性注册更新"]
D --> E["网络收到<br/>重置三件套"]
E --> B
C -->|否, 手机失联| F{"Mobile Reachability<br/>超时? ≈ T3512"}
F -->|是| G["标记 UE<br/>不可达 (Purge)"]
G --> H["启动 Implicit<br/>Deregister 定时器<br/>(+4 分钟宽限)"]
H --> I{"期间收到更新?"}
I -->|是| E
I -->|否, 宽限耗尽| J["隐式去注册<br/>删除上下文<br/>释放 PDU 会话"]
style J fill:#ffe0e0,stroke:#c62828,stroke-width:2px
style D fill:#cfe8ff,stroke:#1f77b4
三个定时器的关系可以总结为:
| 定时器 | 位置 | 作用 | 典型取值关系 |
|---|---|---|---|
| T3512(5G)/ T3412(4G) | UE 侧 | 周期性更新触发,由 Registration Accept 下发 | 基准值 |
| Mobile Reachability Timer | AMF 侧(网络) | 检测 UE 长期无心跳 | $\approx$ T3512 |
| Implicit Deregistration Timer | AMF 侧(网络) | 宽限期,期满则删除 UE 上下文 | Mobile Reachability + 约 4 分钟 |
为什么 Implicit Deregister 要比 Mobile Reachability 多出一个宽限?因为手机可能正在做最后一次更新的重传,或刚进盲区又出来,给几分钟缓冲能避免误删还活着的用户——宁可多等,不可误杀。
实际配置中,T3512 通常取 54 分钟 这类"非整数值",而不是 60 分钟。原因在于避免信令同步风暴:如果全网手机都在整点报到期,整点时刻核心网会瞬间涌入海量更新请求。用 54 分钟这类与小时无公约数的值,能让数亿用户的报到时间自然打散,平滑信令负载。这是一个典型的"反共振"工程技巧。
现在我们把所有零件组装起来,看一次完整的移动性注册更新(Mobility Registration Update)信令交互。注意,5G 把 4G 的 TAU 概念统一进了"注册"框架——任何注册区变化都通过注册流程上报,注册类型区分为初始注册、移动性更新、周期性更新等。
sequenceDiagram
autonumber
participant UE as 📱 UE
participant gNB as gNB (R)AN
participant nAMF as 新 AMF
participant oAMF as 旧 AMF
participant AUSF as AUSF
participant UDM as UDM
participant SMF as SMF
participant PCF as PCF
Note over UE: 进入清单外新 TA,触发更新
UE->>gNB: RRC: Registration Request<br/>(类型=移动性更新, 携带旧 5G-GUTI)
gNB->>nAMF: N2: 转发注册请求<br/>(按 GUAMI 选 AMF)
Note over nAMF,oAMF: AMF 变更则转移上下文
nAMF->>oAMF: Namf: 索取 UE 上下文 (旧 GUTI)
oAMF-->>nAMF: 返回 UE 上下文、安全信息
Note over UE,AUSF: 鉴权与安全模式(按需)
nAMF->>AUSF: 发起鉴权
AUSF-->>UE: 鉴权挑战
UE-->>AUSF: 鉴权响应
nAMF->>UE: NAS Security Mode Command
UE-->>nAMF: NAS Security Mode Complete
Note over nAMF,UDM: 更新签约与 AMF 归属
nAMF->>UDM: Nudm_UECM: 更新服务 AMF 记录
nAMF->>UDM: Nudm_SDM: 拉取签约数据
UDM-->>nAMF: 返回签约、切片信息
Note over nAMF,SMF: 已有 PDU 会话更新 AMF 引用
nAMF->>SMF: Nsmf: 更新会话的服务 AMF
SMF-->>nAMF: 确认
Note over nAMF,PCF: 更新接入与移动性策略
nAMF->>PCF: Npcf_AMPolicy: 获取/更新策略
PCF-->>nAMF: 返回 AM Policy
Note over nAMF,UE: 分配新注册区,完成
nAMF-->>UE: Registration Accept<br/>(新 5G-GUTI + 新 TAI List)
UE->>nAMF: Registration Complete
Note over UE: 启动新一轮 T3512 心跳
这条时序线虽然看起来很长,但可以拆成五个清晰的阶段,便于记忆:
注意第 14 步的"新 TAI List"——这才是整个更新的真正产物。UE 拿到新清单后,又获得了一段"自由活动"的免报到空间,新一轮循环开始。
5G 并非简单沿用 4G 的 TAU,而是在架构上做了重要统一。下表把两者对照清楚:
| 维度 | 4G(EPS) | 5G(5GC) |
|---|---|---|
| 流程名称 | TAU(Tracking Area Update) | Registration Update(注册更新) |
| 控制面网元 | MME | AMF |
| 区域粒度 | 单一 TAI List | Registration Area List(5G TAI List) |
| 流程统一性 | 注册(Attach)与 TAU 是两套流程 | 统一为 Registration,靠"注册类型"区分 |
| 鉴权方式 | EPS-AKA | 5G-AKA / EAP-AKA'(增强隐私) |
| 临时身份 | GUTI | 5G-GUTI |
| 与切片关系 | 无切片概念 | 注册时确定 Allowed NSSAI,影响 AMF 选择 |
| RRC 新状态 | RRC_IDLE / RRC_CONNECTED | 新增 RRC_INACTIVE(与 AN-based Notification Area 配合) |
| 周期定时器 | T3412 | T3512 |
最大的理念变化是第 4 行:5G 把"开机注册"和"位置更新"合并成了同一种流程。这对工程师的好处是流程统一、信令处理逻辑收敛;4G 里 Attach 和 TAU 是两条不同的信令路径,5G 里它们共享同一套消息和状态机,只是注册类型字段不同。这意味着读懂一条注册流程,就读懂了 5G 移动性管理的核心骨架。
另外两个值得注意的演进:一是 5G 引入了 RRC_INACTIVE 状态,手机可以"轻量休眠"(保持核心网连接、释放空口),配合 AN-based Notification Area(接入网通知区,一种更细粒度的寻呼范围)实现"休眠却不失联",这是我们此前《非激活态:休眠却不失联》的主题;二是注册流程与网络切片强绑定,UE 可用切片(Allowed NSSAI)在注册时就确定下来,会反过来影响 AMF 选择——这是 4G 完全没有的维度。
理论讲完,落到现网。一个有 1-3 年经验的工程师,在哪里会和真正用到这些知识?
在核心网或网优岗位,最常见的工作是抓 NAS 信令分析用户行为。当你看到一段 Registration Request,首先要看的就是注册类型字段:
initial registration → 用户刚开机或重新入网mobility registration updating → 用户跨出了注册区(移动性事件)periodic registration updating → 周期心跳到期emergency registration → 紧急呼叫光看这一个字段,你就能判断用户此刻是在"刚开机""出门了"还是"只是报个平安"。结合时间戳和地理位置,可以还原用户的移动轨迹和信令健康度。
如果你在监控大屏上发现某区域周期性注册请求的速率异常下降,往往意味着用户掉线、覆盖变差或终端省电策略异常。更直接的排查路径是看 Mobile Reachability Timer 和 Implicit Deregistration Timer 的到期事件——如果某段时间隐式去注册事件激增,说明大量用户在失联后宽限期内没有回来,通常是覆盖盲区、设备故障或核心网与无线之间的 N2 链路出了问题。
把乒乓当故障:边界小区出现 TAU 突增,别急着判故障,先查 AMF 分配的 TAI List 是否合理——很多"高信令"投诉其实是清单设计问题,调一下清单(把相邻 TA 包进来)就能解决。
混淆 TAI 与 CGI:TAI 是逻辑跟踪区标识,不是物理小区标识。排查"用户寻呼不到"时,要先确认 AMF 里记录的 TAI List 是否与用户实际所在 TA 一致,而不是只盯着小区。
忽视周期值的反共振设计:自己搭测试环境时,把 T3512 设成 60 分钟整数,几个测试终端会同步报到期,看起来像信令洪峰,其实是共振假象。用 54 分钟之类非整数值更接近真实负载分布。
5G/4G 互操作下的区域管理:在 EPS Fallback 或 4G/5G 互操作场景下,TAI List 和 EPS 的 TAI List 要协同规划,否则用户在两网间切换时会反复触发更新。
把整篇文章串起来看,注册区更新的设计本质上是在三个层次上做"省":
每一层都是对前一层局限的补丁,最终拼出一个报到尽量少、寻呼尽量准、失联能自愈的精巧系统。理解了这个层层递进的"省",你就理解了空闲态移动性管理的全部灵魂。
Q1:TAU(4G)和 Registration Update(5G)本质是一回事吗? A:核心目的一样——都是让网络知道空闲态手机的位置,但 5G 做了架构统一。4G 里"开机注册(Attach)"和"位置更新(TAU)"是两套独立流程;5G 把它们合并成单一的 Registration 流程,用"注册类型"字段区分初始/移动性/周期性更新。此外 5G 还引入了切片感知(Allowed NSSAI)和 RRC_INACTIVE 状态,让区域管理更精细。
Q2:TAI List 越大越好吗? A:不是。这是一对经典权衡。TAI List 越大,手机越不用报到(TAU 开销低),但寻呼时要广播的范围越大(寻呼开销高);越小则相反。运营商需要根据用户密度、移动性和核心网信令容量来调优,通常会给高移动性用户分配较大清单、给静止用户分配较小清单。
Q3:手机长时间不动,为什么也要发起更新? A:这是周期性更新,是手机和网络之间的心跳。网络必须定期确认手机"还活着且可达",否则手机可能已因掉电、进盲区而失联。如果网络一直以为它在线,下次来电话会去它的 TA 白白寻呼,浪费资源还让主叫傻等。所以即便静止,也要按 T3512 心跳报到期。
Q4:注册区更新和寻呼是什么关系? A:它们是空闲态移动性管理的"前半场"和"后半场"。注册区更新解决"手机→网络"(手机告诉网络我在哪),寻呼解决"网络→手机"(网络在手机报到的区域内找它)。没有准确的注册区更新,寻呼就不知道往哪发;两者配合,网络才能在亿万人海里精确找到某一部手机。
Q5:周期定时器为什么常取 54 分钟而不是 1 小时? A:为了避免信令共振。如果全网终端都在整点报到期,整点时刻核心网会瞬间涌入海量更新请求,形成信令洪峰。取与小时无公约数的非整数值(如 54 分钟),能让数亿用户的报到时间自然打散,平滑网络负载。这是一个工程上常用的"反共振"技巧。
本文由「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 等场景全覆盖。
