本文技术原理深度参考了3GPP TS 38.413 V18.5.0 (2025-03) Release 18规范中,关于“9 Elements for NGAP Communication”的前导章节,包括“9.0 General”和“9.1 Tabular Format Contents”,旨在为读者提供一份阅读和理解后续NGAP消息定义的“官方说明书”和“解码指南”。

深度解析 3GPP TS 38.413:9.0 & 9.1 NGAP通信元素与表格解读 (The Language of NGAP)

大家好,欢迎回到我们的3GPP规范深度解析之旅!在过去的系列文章中,我们已经像旅行者一样,跟随用户的足迹,探索了5G网络中各种宏观的“流程”——注册、切换、寻呼、数据会话管理等等。我们知道了网络在做什么(What),以及为什么要这么做(Why)。

从今天开始,我们将转换视角,从“旅行者”变为“语言学家”,深入到NGAP协议的微观世界,开始探索网络设备之间究竟是如何沟通的(How)。我们将逐一剖析构成这些宏大流程的基石——具体的NGAP消息(Messages)和其中承载信息的信息元素(Information Elements, IEs)

这就像学习一门新的语言。我们之前了解了各种“对话场景”(Procedures),现在我们要开始学习这门语言的“语法”(General Rules)、“词汇表”(Tabular Format)和具体的“句子”(Messages)。

为了让这个过程不那么枯燥,我们将继续邀请网络监控专家Morpheus和他的徒弟Neo。Morpheus将带领Neo进入NGAP的“代码世界”,教他如何阅读和理解那些定义了5G信令交互规则的表格和语法。

Morpheus:“Neo,你之前看到的那些流程,就像是矩阵(Matrix)表面的世界。现在,我要教你如何看懂它背后的‘绿色代码雨’。今天,我们先从这门‘代码’的语法和词典开始。”

本篇文章将是后续所有消息解析文章的“图例”和“阅读指南”,我们将重点解读第9章的9.0 General9.1 Tabular Format Contents,掌握了它们,你就拥有了解码整个NGAP协议所有消息定义的“钥匙”。


1. 9.0 General (通用规则 - 解读NGAP的“语法”)

在深入具体的“词汇”之前,我们首先要理解这本“词典”的编纂规则。

9.0 General

Subclauses 9.2 and 9.3 present the NGAP message and IE definitions in tabular format. The corresponding ASN.1 definition is presented in subclause 9.4. In case there is contradiction between the tabular format and the ASN.1 definition, the ASN.1 shall take precedence, except for the definition of conditions for the presence of conditional IEs, where the tabular format shall take precedence.

Morpheus指着规范对Neo说:“记住,这份规范是写给两种‘人’看的:人类工程师和机器。所以它提供了两种描述方式。”

  1. 表格格式(Tabular Format):在9.2和9.3节中,所有消息和IE都用人类易于阅读的表格来定义。这是我们后续文章将主要依据的形式,它清晰、直观。

  2. ASN.1定义(Abstract Syntax Notation One):在9.4节中,所有内容都用一种名为ASN.1的标准化数据描述语言来定义。这是给机器“看”的,是最终用于编码和解码的精确依据。

核心原则:ASN.1是最终权威。如果表格的描述和ASN.1的定义出现了矛盾,除了一个特例,永远以ASN.1为准。这个特例是关于“条件IE(Conditional IE)”的出现条件,此时表格的描述优先级更高,因为它通常包含了更易于理解的业务逻辑。

When specifying IEs which are to be represented by bitstrings, if not otherwise specifically stated in the semantics description of the concerned IE or elsewhere, the following principle applies with regards to the ordering of bits:

  • The first bit (leftmost bit) contains the most significant bit (MSB);
  • The last bit (rightmost bit) contains the least significant bit (LSB);

这是一个针对比特串(bitstring)类型IE的编码规则,确保了所有厂商在处理比特流时,对“高位”和“低位”的理解是一致的,即采用“大端序”(Big-Endian)。


2. 9.1 Tabular Format Contents (表格格式内容 - 掌握“词汇表”)

这部分是今天的核心。Morpheus告诉Neo,要读懂NGAP的消息定义,必须首先掌握表格中每一列的精确含义。这就像学习查字典,你得先认识“部首”、“拼音”、“释义”这些部分。

2.1 Presence (存在性) - 这个“单词”必须出现吗?

Presence列定义了一个IE在消息中是否必须存在,以及在什么条件下存在。

9.1.1 Presence

All IEs are marked mandatory, optional or conditional according to table 9.1.1-1.

表格 9.1.1-1: “Presence”列内容含义

| 缩写 | 含义 |

| :--- | :--- |

| M | 标记为强制性(Mandatory)的IE必须始终包含在消息中。 |

| O | 标记为可选(Optional)的IE可以包含也可以不包含在消息中。 |

| C | 标记为条件性(Conditional)的IE仅在满足特定条件时才应包含在消息中。否则,不应包含该IE。 |

Morpheus用一个生动的比喻向Neo解释:

  • M (Mandatory):“这就像写一封信,‘收件人地址’和‘发件人地址’是强制性的,没有它们,这封信就毫无意义。” 例如,在INITIAL UE MESSAGE中,RAN UE NGAP ID就是M,因为没有它,AMF就不知道该为哪个UE创建上下文。

  • O (Optional):“这就像信件末尾的‘附言(P.S.)’。你可以写,也可以不写。写了可以提供额外信息,不写也不影响信件的核心内容。” 例如,在HANDOVER REQUEST消息中,UE History Information(UE历史小区信息)就是O,提供了可以帮助目标gNB做决策,但不提供也不会导致切换失败。

  • C (Conditional):“这就像一个‘如果…那么…’的规则。比如,‘如果包裹是易碎品,那么必须贴上易碎标签’。” 例如,在切换命令消息中,一个与EPS Fallback相关的IE就是C,它的出现条件是if handover type is "5GStoEPS"。只有当这次切换是从5G回落到4G时,这个IE才需要被包含。

2.2 Criticality (关键性) - 如果“看不懂”这个单词该怎么办?

Criticality是NGAP协议实现前向和后向兼容性的基石。它告诉接收方,当遇到一个自己“不认识”(即本地版本不支持)的IE时,应该如何处理。

9.1.2 Criticality

Each IE or group of IEs may have criticality information applied to it according to table 9.1.2-1.

表格 9.1.2-1: “Criticality”列内容含义

| 缩写 | 含义 |

| :--- | :--- |

| | 未明确应用关键性信息。 |

| YES | 应用关键性信息。仅适用于不可重复的IE。 |

| GLOBAL | 该IE及其所有重复实例共同拥有一个关键性信息。仅适用于可重复的IE。 |

| EACH | 该IE的每个重复实例都有其自己的关键性信息。不允许为重复实例分配不同的关键性值。仅适用于可重复的IE。 |

Morpheus:“Neo,想象一下,你正在运行一个旧版本的矩阵程序(Rel-15),而我给你发送了一个包含新功能(Rel-16)的指令。‘Criticality’就是预先写好的‘错误处理指南’,告诉你遇到不认识的新指令时该怎么办。”

实际的“处理指南”在**Assigned Criticality (分配的关键性)**列中定义,有三种动作:

  1. reject (拒绝)

    • 含义:这是最重要的信息,如果看不懂,整个流程都有风险。接收方必须拒绝处理整个消息,并向发送方报告失败。

    • 例子:在一个PDU SESSION RESOURCE SETUP REQUEST消息中,PDU Session ID这个IE的Assigned Criticality就是reject。如果gNB收到的这个ID格式它不认识,它就无法为这个会话建立任何资源,因此必须拒绝整个请求。

  2. ignore (忽略)

    • 含义:这是一个不重要的、补充性的信息。如果看不懂,就当它不存在,继续处理消息中其他你能看懂的部分。

    • 例子:在INITIAL CONTEXT SETUP REQUEST消息中,UE History InformationAssigned Criticalityignore。如果gNB不支持这个IE的某个新版本格式,它可以简单地忽略它,这并不会影响它为UE建立基本的上下文。

  3. notify (通知)

    • 含义:这是一个接收方应该知道,但不知道也不致命的信息。如果看不懂,接收方应该忽略它,继续处理流程,但在回复消息中要“告知”发送方:“你发的那个XX信息我没看懂”。

    • 实际操作:在NGAP中,notify通常与ignore结合出现。接收方忽略该IE,并继续流程。如果流程本身有响应消息,就在响应消息的Criticality Diagnostics IE中报告此事;如果没有响应消息,则可能需要发起一个ERROR INDICATION流程来报告。

通过这套机制,新版本的网络设备可以引入新的可选IE,而旧版本的设备可以安全地忽略它们,从而实现了网络的平滑升级。

2.3 Range (范围) - 这个“单词”可以重复几次?

9.1.3 Range

The Range column indicates the allowed number of copies of repetitive IEs/IE groups.

Range列的含义非常直观,它定义了一个列表类型的IE可以包含多少个元素。例如,一个Supported TA List中,Supported TA Item的Range可能是1..<maxnoofTACs>,这里的maxnoofTACs是一个预定义的常量(例如256),表示这个列表最少包含1个TA,最多包含256个TA。

2.4 Assigned Criticality (分配的关键性) - 最终的“行动指令”

9.1.4 Assigned Criticality

The Assigned Criticality column provides the actual criticality information as defined in subclause 10.3.2, if applicable.

如前所述,这一列明确给出了当接收方不理解某个IE时,应该执行的最终动作——reject, ignorenotify。它是Criticality概念的具体落地。

Morpheus总结道:“好了,Neo。Presence告诉你一个IE是否应该在那里,Criticality告诉你在那里但你不认识它时该怎么办,Range告诉你能有多少个,而Assigned Criticality则给出了最终的行动指令。掌握了这四点,你就掌握了阅读NGAP这门语言的基础。在我们的下一课中,我们将用这些知识,来解剖第一组真正的‘代码’——PDU会话管理消息。”


FAQ

Q1: “Optional (O)”和“Conditional (C)”存在性有什么实际区别?

A1:

“Optional”意味着发送方可以根据自己的意愿或实现,自主决定是否包含这个IE。它通常用于提供补充性、非必需的信息。

“Conditional”则意味着发送方没有选择权,其行为由一个明确的协议条件决定。如果条件满足,就必须包含该IE;如果条件不满足,就必须不包含。这个条件对于协议的正确运行至关重要。例如,一个IE的条件可能是“仅当切换类型为5G到4G时出现”,发送方必须严格遵守。

Q2: 为什么“Criticality”机制对于网络演进如此重要?

A2:

因为网络中的设备不可能在同一时间点全部升级到最新版本。在一个运营商的网络中,很可能Rel-16的gNB和Rel-17的AMF并存。Criticality机制确保了这种混合部署的可行性。当Rel-17的AMF发送了一个包含Rel-17新特性的IE(假设是ignore criticality)给Rel-16的gNB时,gNB虽然不认识这个新IE,但根据Criticality的指示,它知道可以安全地忽略它,并继续处理消息中的其他Rel-15/16内容。这保证了基本功能的兼容性,使得网络可以平滑、渐进地引入新功能,而不会因为版本不匹配导致全网瘫痪。

Q3: 如果一个IE被标记为CRITICALITY reject,是整个NGAP消息都会被拒绝吗?

A3:

是的,不仅仅是那个IE。reject指令的效力是针对**整个流程(Procedure)**的。当接收节点在一个收到的消息中,发现一个它不理解且关键性为reject的IE时,它必须中止对该消息的所有功能性请求的处理,并启动相应的失败流程。例如,如果这是一个INITIAL CONTEXT SETUP REQUEST消息,那么整个上下文建立流程都会失败,gNB会回复INITIAL CONTEXT SETUP FAILURE

Q4: 什么是ASN.1?为什么它被认为是比表格更权威的“最终仲裁者”?

A4:

ASN.1(Abstract Syntax Notation One)是一种国际标准的、用于定义数据结构的形式化语言。它非常精确、无歧义,并且与具体的编程语言和硬件平台无关。在通信协议中,ASN.1用于精确定义每一个消息、每一个IE的结构、类型、长度和约束。

表格格式虽然对人类友好,但有时可能因为自然语言的模糊性而产生歧义。而ASN.1是机器可读的,软件工程师会直接使用ASN.1编译器来生成编解码消息的代码。因此,ASN.1定义是协议实现的最终依据。当表格描述与ASN.1定义冲突时,遵循ASN.1能确保不同厂商的设备在比特层面实现真正的互操作。

Q5: 如果我想知道reject, ignore, notify这些关键性动作的具体处理细节,应该查阅规范的哪个部分?

A5:

这些具体的错误处理行为在TS 38.413的**第10章 “Handling of Unknown, Unforeseen and Erroneous Protocol Data”**中有详细的定义。本篇文章介绍的9.1节只是定义了这些“标签”的含义,而第10章则详细描述了当一个节点遇到带有这些标签的未知IE、丢失的强制IE、格式错误的IE等各种异常情况时,应该执行的确切步骤,例如是回复失败消息,还是发起ERROR INDICATION流程等。因此,第9章和第10章需要结合起来阅读,才能完整理解NGAP的健壮性设计。