NGAP Procedure Model and Message Structure
The NGAP procedure model and message structure define how NGAP elementary procedures are organized, how Class 1 and Class 2 procedures behave, how message roles are used, and how NGAP PDUs and information elements should be read during decode and troubleshooting.
Use it when you need more than a message name and want to understand where the message fits in the procedure flow, whether it starts a procedure, confirms success, reports failure, or belongs to a one-way signaling pattern.
| Technology | 5G |
|---|---|
| Area | NGAP procedure and message model |
| Scope | Elementary procedures, message roles, NGAP PDUs, and information-element structure |
| Main procedure split | Class 1 and Class 2 elementary procedures |
| Main message roles | Initiating message, successful outcome, unsuccessful outcome |
| Main use | Message decode, procedure pairing, failure reading, and message-to-procedure navigation |
| Related pages | NGAP Overview, NG Interface and Transport, Initial UE Message, Initial Context Setup, Paging, NG Reset, Error Indication |
Contents
Overview
NGAP is easier to decode when you think in procedures first and messages second. A message name tells you what was sent, but the procedure model tells you why it was sent, what should appear next, and which fields matter at that stage.
This is especially important in NGAP because many procedures use closely related message names. A correct reading depends on knowing whether the message is an initiating step, a successful outcome, an unsuccessful outcome, or a one-way message with no explicit response.
Elementary procedures
NGAP is organized into elementary procedures. Each elementary procedure defines a signaling action between the NG-RAN node and the AMF, along with the messages and rules that belong to that action.
| Concept | Meaning | Why it matters |
|---|---|---|
| Elementary procedure | One defined NGAP signaling procedure. | Gives the real unit of procedure reading and troubleshooting. |
| Message | One NGAP PDU used inside an elementary procedure. | Must be read in the context of its procedure role. |
| Information elements | Fields carried inside the message. | Explain the actual content, identity, and cause context of the procedure step. |
elementary procedure
-> message role
-> information elements
-> procedure meaning Class 1 and Class 2 procedures
One of the most important first checks is the procedure class. Class 1 and Class 2 procedures behave differently, and that changes what you should expect to see next in a trace.
| Procedure class | Structure | Expectation in traces |
|---|---|---|
| Class 1 | Initiating message with successful outcome or unsuccessful outcome when defined. | Look for paired message progression and check whether the expected outcome arrived. |
| Class 2 | Initiating message only, with no explicit outcome message. | Do not assume the procedure failed only because there is no response message. |
Class 1 pattern
Initiating message
-> Successful outcome
or
Initiating message
-> Unsuccessful outcome This is the main pairing model for response-oriented NGAP procedures. Missing outcomes often point to transport break, timeout, peer rejection, or an incomplete trace.
Class 2 pattern
Initiating message
-> no explicit outcome
-> follow later steps This is the main one-way model. The procedure is usually validated by later progression rather than by a paired outcome message.
Message roles
The role of a message inside the procedure matters more than the message name alone. NGAP PDUs are grouped by message role so the receiving side can interpret how the message fits into the procedure.
| Message role | Meaning | Typical reading question |
|---|---|---|
| Initiating message | Starts a procedure or sends the one-way procedure step. | What triggered this procedure, and what should follow next? |
| Successful outcome | Confirms the successful result of the initiating message. | Did the requested action complete as expected? |
| Unsuccessful outcome | Reports failure or rejection of the requested action. | Why did the procedure fail, and which cause-related IEs explain it? |
Trace note: The same high-level procedure family may contain multiple messages with similar names. Message role is what tells you whether you are at the start of the procedure, the success path, or the failure path.
NGAP PDU structure
At a high level, an NGAP message is carried in an NGAP PDU that identifies the message role and then carries the procedure code, criticality handling, and the list of information elements for that message.
NGAP-PDU
-> initiatingMessage
or successfulOutcome
or unsuccessfulOutcome
-> procedureCode
-> criticality
-> protocolIEs | PDU part | Purpose | Why it matters |
|---|---|---|
| Message role branch | Tells you whether the message is initiating, successful outcome, or unsuccessful outcome. | Fastest way to place the message inside the procedure. |
| Procedure code | Identifies which elementary procedure is being used. | Links the raw message to the procedure definition and expected message set. |
| Criticality | Defines handling expectations when parts of the message are problematic. | Important when analyzing invalid or partially rejected content. |
| Protocol IEs | Carry the actual content such as identities, causes, lists, and context fields. | These determine what the procedure step actually means. |
Read PDU example
NGAP-PDU
-> initiatingMessage
-> procedureCode: id-InitialContextSetup
-> criticality: reject
-> value: InitialContextSetupRequest
-> AMF-UE-NGAP-ID
-> RAN-UE-NGAP-ID
-> NAS-PDU
-> PDU Session Resource Setup List Read this from top to bottom. First identify the message role, then the procedure, then the exact message value, and finally the IEs that explain what the message is trying to do.
Information elements
Information elements are where the message becomes operational. A correct decode depends on knowing which IEs are mandatory, which are optional, and which ones are the real decision points for the procedure.
| IE category | Typical examples | Reading value |
|---|---|---|
| Identity IEs | AMF UE NGAP ID, RAN UE NGAP ID | Used to correlate messages to the correct UE context. |
| Cause-related IEs | Cause and related failure fields | Used to explain rejection, release, or failure outcomes. |
| Payload or list IEs | NAS-PDU, PDU session resource lists, setup lists | Used to understand what the procedure is actually trying to carry or configure. |
| Configuration or context IEs | Procedure-specific setup or modification fields | Used to understand the requested network action and its scope. |
Decode workflow
A repeatable decode method helps much more than trying to remember dozens of message names from memory.
1. identify the procedure code
2. identify the message role
3. decide whether an outcome is expected
4. check the key identity IEs
5. check cause or payload IEs
6. place the message in the wider call flow | Step | Main question | Result |
|---|---|---|
| Procedure | Which elementary procedure is this? | You know the valid message set and the general purpose. |
| Role | Is this initiating, successful outcome, or unsuccessful outcome? | You know whether to expect a response or to inspect a failure path. |
| Identity | Which UE or interface context does it belong to? | You avoid mixing unrelated traces or contexts. |
| Meaning | Which IEs explain the action or failure? | You move from raw decode to actual procedure understanding. |
Procedure examples
The procedure model becomes easier to remember when tied to familiar NGAP examples.
| Example | What to notice | Open next |
|---|---|---|
| Initial UE Message | A strong initiating-message example that starts access-side NGAP context. | Initial UE Message |
| Initial Context Setup | Useful for studying request, response, and failure paths together. | Initial Context Setup Request |
| NG Reset | Useful when separating interface-level procedures from UE-associated procedures. | NG Reset |
| PDU Session Resource Setup | Useful for message lists, procedure outcomes, and multi-item payload reading. | PDU Session Resource Setup Request |
| Error Indication | Useful when analyzing abnormal conditions and message-validity problems. | Error Indication |
Troubleshooting
| Symptom | Procedure-model angle | Next check |
|---|---|---|
| Expected response never appears | Check whether the procedure is actually Class 1 and whether an outcome is required. | Confirm the procedure class before treating the trace as incomplete. |
| Failure message is hard to interpret | Check message role first, then cause-related IEs. | Separate failure structure from procedure trigger. |
| Trace looks out of sequence | Check whether messages from different procedures or UEs were mixed together. | Verify procedure code and identity IEs before concluding that sequencing is wrong. |
| Message decode is technically correct but still unclear | Check which procedure stage the message belongs to. | Use the message role and wider call flow rather than the message name alone. |
References
- 3GPP TS 38.413 - NGAP procedure definitions, message roles, and ASN.1 structure
- 3GPP TS 38.410 - NG general aspects and principles
- 3GPP TS 38.412 - NG signaling transport context
- 3GPP TS 23.502 - Procedure context across the 5G System
FAQ
What is an NGAP elementary procedure?
It is one defined signaling procedure in NGAP, made up of one or more messages with clear message roles and rules.
How do I know whether a response is expected?
Check the procedure class and the message role. Class 1 procedures may have outcome messages, while Class 2 procedures are one-way.
Why is the message role so important?
Because it tells you whether the message starts the procedure, confirms success, or reports failure. Without that context, the decode remains incomplete.
What should I inspect first in a failed NGAP procedure?
First identify the procedure and message role, then check the identity IEs and cause-related IEs.
What is the fastest way to read an NGAP decode?
Start with procedure code, then message role, then identity IEs, then the main payload or cause fields, and finally place the message in the wider procedure flow.