ASN.1 Icon 3GPP Non-Access Stratum (NAS) API's


3GPP Non-Access Stratum (NAS) Application Programming Interfaces (API's) are pre-compiled and optimized C function libraries or Java jar files for encoding and decoding protocol messages defined within 3GPP standards documents

The NAS protocol is not implemented using any of the ASN.1 encoding rules as are most other 3GPP protocols. Instead, they use "Layer 3 messages" which consist of a set of messages specified in tabular form and "Information Elements" (IE's) contained within these tables. The IE's are also described in tabular format.

The following 3GPP specifications describe the messages and IE's that have been implemented (last update Q3 2023):

Specification Description Versions
24.501 Non-Access-Stratum (NAS) protocol for 5G System 18.5, 17.13
24.301 Non-Access-Stratum (NAS) protocol for Evolved Packet System (EPS) 18.5, 17.11
24.008 Mobile radio interface Layer 3 specification; Core network protocols 18.5, 17.9
24.007 Mobile radio interface signalling layer 3; General Aspects 18.0, 17.5

 

In order to implement the Layer 3 messages and IE's, we produced ASN.1 specifications that are an approximation of what the tabular definitions might look like in ASN.1 format. We then modified our ASN.1 compiler to generate code that supports most layer 3 features. This was then combined with custom code snippets to provide a complete solution. More details on this can be found in our white paper on the subject at the following URL:

https://obj-sys.com/docs/UsingASNtoDescribe3GPPMessages.pdf

We offer two products that support NAS encoding and decoding:

  • NAS Standalone API (DLL)
  • NAS ASN1C SDK Add-on

These are described more fully below.

NAS Standalone API

The NAS Standalone API is a pre-compiled library containing encode/decode functions generated with our compiler. We have done the building and packaging of the API. It is available in the following forms:

  • Windows Dynamically-Linked Library (DLL) in either 32 or 64-bit
  • Linux Shared Object File for 32 or 64-bit Intel x86 or ARM processors
  • Java .jar file

The package contains sample programs showing how to use the API.

Related Links:

NAS ASN1C SDK Add-on

The ASN1C NAS C or Java Development Add-on Component is an add-on that when installed within an existing ASN1C SDK installation, allows C or Java code generation of 3GPP layer 3 components. It allows for the development of new NAS messages or IE's or allows existing components to be modified. The add-on contains the following items:

  • The ASN.1 specifications that provide an approximation of the tables and message descriptions in the 3GPP specification documents. Code is generated from these ASN.1 specifications.
  • Custom code snippets for implementing the parts of the API that could not be generated with the compiler.
  • Makefiles and other build artifacts to generate and compile code from the specifications for both debug and release builds.
  • Sample programs showing how to use the API's.

Related Links: