搞了一年多的5GC EPC IMS,大部分时间还是处于半知半解状态,工作主要是以国内专网5G和IMS为主,EPC网络虽然也搞了挺多次,架构和流程虽然都清楚,但打心底还是对底层逻辑不太熟悉,然后问了下世界上最伟大的员工Caim要了这本书看看,无古不成今。
1. 概念和架构
1.1 4G网络概念
- 早期核心网也称为
PS(package switching 分组交换),以SAE(系统架构演进 system architecture evolution)作为PS网络核心网工作项目并向4G演进; LTE(长期演进 Long Term Evolution)无线接口部分项目4G网络的演进。- EPC(4g 核心网 evolved packet core)作为SAE的研究对象;E-UTRAN(演进的UMTS陆地无线接入网络 evolved umts terrestrial radio access network)则作为LTE的研究对象。
1.2 演进过程
扁平化:从SGSN(Serving GeneralPacketRadioService Support Node)到MME,接入只需要一个节点,且该节点只处理信令流程,转控分离。IP化:除空口以外的接口均使用IP协议。共存:与2/3G或非3GPP网络还会长时间共存。
扁平化网络架构同时带来了风险更为集中的特点,如更多的信令交互、对网络的可靠性要求更高。
1.3 EPC网元
EPC包含的网元,简单概括下定位和功能。
-
eNodeB(evolved Node B):
- 定位:4G网络的无线
接入节点,负责与用户设备进行无线通信。 - 功能:
无线资源管理、上下行数据分类与 QoS 执行、空口数据压缩与加密;与 MME 完成信令处理,与 S-GW 完成用户面数据转发。
- 定位:4G网络的无线
-
MME(mobile management entity):
- 定位:EPC核心网的
控制面核心,负责移动用户的移动管理。 - 功能:
移动性管理、用户上下文与状态管理、分配用户临时身份标识;统一协调内部(Intra System)和外部(Inter System)切换。
- 定位:EPC核心网的
-
HSS(home subscriber server):
- 定位:用户
签约数据中心,类似 2G/3G 的 HLR 网元。 - 功能:
存储 LTE 用户的签约与鉴权信息,提供用户签约管理和位置管理;在 4G 网络中通常与 2G/3G 的 HLR 融合部署。
- 定位:用户
-
SGW(serving gateway):
- 定位:EPC 的
用户面锚点,终结 E-UTRAN 方向的接口。 - 功能:负责用户在不同接入技术间移动时的用户面数据交换,屏蔽 3GPP 内部接入网络的接口差异。
- 定位:EPC 的
-
PGW(packet data network gateway):
- 定位:EPC 与
外部 PDN(分组数据网络,如互联网)的网关,终结 SGi 接口。 - 功能:作为 3GPP 与非 3GPP 接入网络的用户锚点,一个终端可同时通过多个 P-GW 访问多个 PDN。
- 定位:EPC 与
-
PCRF(policy control function):
- 定位:EPC 的
策略控制中心。 - 功能:完成
动态 QoS 策略控制和基于流的计费控制;提供基于用户签约的授权控制。P-GW 识别业务流后通知 PCRF,PCRF 下发规则决定业务可用性与 QoS。
- 定位:EPC 的
1.4 EPC网络协议
全面IP化使得网络协议架构变得明显且好理解,EPC网络协议图:
这里简单记录下作用,字段后面再说。
- MME和ENB S1接口
S1AP,用于MME和ENB之间完成无线资源管理、移动性管理等。 - MME和HSS S6a接口 PGW和PCRF Gx接口
Diameter,用于MME和HSS之间传递签约信息、PGW和PCRF之间传递策略信息,diameter的AVP能够携带大量信息。
大多数情况下diameter都使用SCTP进行传输,避免TCP的拥塞。
- SGW和PGW S5/S8接口控制面
GTPv2(GTP-C),控制面协议,用于维护GTP-U的隧道。 - UE数据面 S1U SGW和PGW S5/S8接口数据面
GTPv1(GTP-U),数据面协议,基于UDP,保证功能的情况下减小开销。
1.4 EPC网络的业务
与传统有线网络不同,无线移动网由于需要考虑到无线资源,在信令面和数据面可以看作有两套协议栈。
UE-MME的控制面协议栈:

UE-MME的数据面协议栈:

EPC业务可大致分为:
- 公众应用
- 普通用户的上网业务
- 行业应用
- 行业需求,如IoT、POS机等
- 语音应用,在这存在四种方案
- SVLTE simultaneous voice and LTE 即单卡双待,能够同时在2/3G和4G中进行业务
- CSFB CS fall back 电路域回落 进行语音业务时回落到2/3G网络,需要4G网络在建立语音链接时参与
- VoLTE voice over LTE 基于IMS来提供语音业务,配合SRVCC single radio voice call continuity 来保证从4G到2/3G的语音业务连续性。
- OTT over the top 通过互联网提供语音业务,如微信语音、抖音语音等。
2. EPC网络基本流程
2.1 状态
由于空口资源和终端资源的限制,EPC定义了EMM(EPC mobile management )、ECM(EPC connection management)和RRC(radio resource control)三种状态。
- RRC状态:RRC-IDLE 和 RRC-CONNECTED
- EMM状态:EMM-DEREGISTERED 和 EMM-REGISTERED
- ECM状态:ECM-IDLE 和 ECM-CONNECTED
三种状态关系:

EMM-REGISTERED只会出现在附着的情况下。
EMM和ECM的状态转换都由流程来触发,如ECM状态可由RRC状态或S1链接状态触发转换。
2.2 附着流程
附着流程是最重要的流程之一,逐步说太多了,简化下比较好理解。
附着流程简化图如下,红色内容为流程中比较重要的字段:

这张图不涉及到新旧MME的切换流程和旧session的释放流程,简单来说就是这几步:
- ue向enb发起附着请求,enb透传该消息到MME
- MME向HSS发起鉴权请求,然后将HSS返回的鉴权信息发到UE
- 收到UE回复的鉴权响应后,MME向HSS发update location携带UE相关信息,HSS返回鉴权结果等信息,包含默认的签约信息
- MME根据attach中携带内容向SGW发起session建立(EPS 承载)请求,之后SGW向PGW发起create session request
- 如果有部署动态规则,PGW则会向PCRF获取对应的策略信息CCR消息,否则使用本地默认策略
- PCRF授权并返回决策CCA消息
- PGW创建一个EPS承载,并生产一个chargingid,并向SGW返回create session response
- SGW向MME返回create session response,包含pdn地址、SGWu地址等隧道信息。
- MME向enb发送attach accept消息,请求建立无线空口资源
- enb向ue发送RRC消息分配空口资源,并携带attach accept,之后ue回复携带attach complete消息
- 此时UE获得了APN地址并可以通过enb向SGW发送上行数据包,通过modify bearer request消息来动态调整承载QoS、速率、隧道等参数
结合报文看更为清晰(这里没有PCRF的流程):
2.3 承载
- UE到外部PDN的IP链接被称为EPS承载。
- EPS承载不仅定义终端地址,还定义QoS等参数、S5/S8接口GTP层的TEID信息等。
两种承载:
GBR(Guaranteed Bit Rate)承载:业务不低于该保证速率带宽。NonGBR(NonGuaranteed Bit Rate)承载:空闲时,业务速率可以上升到该速率;资源紧张时可能会低于该值。
Qos与承载关系:
- 默认QoS中速率控制只能是NonGBR
- 专有承载的QoS控制可以是NonGBR或GBR,但通常为GBR
EPS承载由三部分组成,包括 无线承载 S1承载 和 S5/S8承载;
无线承载 和 S1承载 合起来被称为 eRAB(eRadio Access Bearer),eRAB的建立成功率为重要指标。

2.4具体流程分解
按书中将附着流程分为5个部分,这里还是根据书和自己的抓包来吧,全是文字流程能看下去的也是神人了。
- 初始请求阶段
- 鉴权和安全阶段
- 更新位置阶段
- 网元和拓扑选择
- 会话和承载建立阶段
2.4.1 初始请求阶段
这里不考虑UE发送RRC连接请求的随机接入。
- S1接口信令链接,UE始发的消息如下:
包含5个items:
- Id-eNB-UE-S1AP-ID:
建立 S1 接口信令连接内容。 - Id-NAS-PDU:
非接入层业务信息(UE 和 MME 交互的消息)。 - Id-TAI:用户当前所在的跟踪区。
- Id-EUTRAN-CGI:用户当前的小区。
- Id-RRC-Establishment-Cause:RRC 建立的原因,如 mo-Signalling、mo-Data、mt-Access、highPriorityAccess、emergency 等。表明终端 RRC 建立是由初始信令、初始数据,还是其他原因触发。

这里携带enb为ue分配的S1接口信令ID,在同一enb内唯一; NAS-PDU中包含UE和MME交互的消息;

随后的第一条下行消息会携带 MME和UE的S1信令链接ID,NAS-PDU中包含认证信息
TIPNAS层是在SCTP之上的,所以不需要协商地址和端口信息
- UE身份获取
首先明确两个概念:
- IMSI(International Mobile Subscriber Identity):国际移动用户识别码,用于唯一标识用户,通常在首次附着时携带,网络中尽量少使用。
- GUTI(Global Unique Tracking Identifier):MME分配,全局唯一跟踪标识符,用于在不同小区之间跟踪用户位置
UE上报的标识类型:
- IMSI
- 上一次使用的native GUTI
- 由2/3G映射而来的GUTI
倘若上报的GUTI并非本MME分配,则需要通过MME之间的交互来从old mme获取GUTI,简单流程如下:
- mme之间通过ip/gtp通信,这时候就需要根据GUTI里的内容构建old mme域名,GUTI到MME FQDN的映射如下:

- 之后MME通过dns的NAPTR类型(基于正则表达式的 DNS 查询)查询后的结果,使用A类型请求交互后获得old mme的S10地址
- 想odl mme发起identification request获取用户信息
- 若失败则直接向UE发送identification request

尽量少使用空口以提高安全性。
2.4.2 鉴权和安全流程
鉴权只看流程的话还是算比较简明的,就不深究具体加密过程了。
UE → MME:附着请求MME → HSS:请求鉴权向量HSS → MME:返回鉴权向量 (AV)MME → UE:鉴权请求 (RAND+AUTN)UE → MME:鉴权响应 (RES)MME 对比 RES = XRES → 鉴权成功之后便是NAS加密常见的错误主要有两个:
-
MAC failure问题 实际项目中常是ki值或算法问题导致
-
syn failure问题 这个遇到的比较少,简言之就是
终端计算的SQN(鉴权里的序列号,核心作用是 防重放攻击 + 保证新鲜度)比自身存储的最大SQN小,导致终端发起重新同步以获取新的鉴权结果。 在HSS和HLR分设时容易出现这个情况,在其中一个域和另外一个域不同步,如核心网和IMS不是同一厂家,HSS和HLR相互处于两个域的情况下就容易发生。
2.5 S6a接口选路
2.5.1 Gr接口
Gr是早期SGSN和HLR之间的4G/3G PS域控制接口,基于电路技术的七号信令网(SS7)。
SS7链路选路过程如图所示,采用了分层寻址,先靠GT SSN定位业务,再靠OPC/DPC选路由,最终通过MTP3转发到目标网元。
通过SCCPGT的编码转换,将E214 E164格式的地址转换为SS7的MTP信令点。
2.5.2 S5a接口选路
IP化时代,MME和HSS之间的S6a接口采用了diameter协议,diameter协议处在最上层,能够携带多个AVP,实现高效信息传递。
当前接触的环境大多是MME和HSS直连,现网环境下存在中继设备DRA(Diameter Router Agent)来实现S6a接口的选路。
- DRA完成SCTP偶联建立和diameter层转发
