Amarisoft

NR NPN (Non Public Network)

 

This tutorial is to show you how to configure and test NR NPN.  NPN (Non Public Network) is another word for Private Network. We have used the term Private Network since long again from 4G but the implementation of Private Network hadn't clearly been defined in 3GPP.  Recently (in 3GPP Release 16) this feature is formally defined / specified in 3GPP with the name of NPN (Non Public Network). Even though I would not say every detailed implementation of NPN is defined in 3GPP, roughtly 3 or 4 different high level architecture of the implementation are frequently mentioned in various documents. Followings are a list of common architectures of NPN implementation. As of now,  Amarisoft product support [A],[B],[D].

 

NOTE : This feature is supported from Release 2022-10-21

 

 

Table of Contents

 

 

Test Setup

 

Test setup for this tutorial is as shown below.  This is just for low layer testing, you may not need any complicated IP layer setup.

If you have a commercial UE that support UE assistance information with Release Preference, you can use the Setup A. If you don't have any commercial UE supporting this feature but have Amarisoft UEsim you can use Setup B. In this Test, Setup B is used.

 

Setup A

This is the setup for the case where you use a commercial phone as DUT.

TestSetup Callbox UE 1sdr 01

 

Setup B

This is the setup for the case where you use Amarisoft UEsim as DUT.

TestSetup Callbox UEsim 1sdr 01

 

 

Key Configuration Parameters

 

Followings are important configuration parameters for this tutorial. You may click on the items for the descriptions from Amarisoft documents.

 

 

Test 1 : PNI-NPN Single Cell

This test show a test case where you configure PNI-NPN (Public Network Integrated Non-Public Network) in single cell and verify the operation.

 

Configuration

The configuration shown here is common configuration for all the subtests belonging to Test 1 and I will not show this configuration repeatedly for every subtest.

I have used gnb-sa-pni-npn-1.cfg which is copied and modified from gnb-sa.cfg on Callbox (gNB)

NR SA NPN Test 1 Config 01

I am using mme-ims-pni-npn-1.cfg and ue_db-ims-pni-npn-1.cfg  which are copied from mme-ims.cfg and ue_db-ims.cfg respectively.

NR SA NPN Test 1 Config 02

On UEsim, I used ue-nr-sa-pni-npn-1.cfg which has been copied and modified from ue-nr-sa.cfg (NOTE : If you are using the commercial UE as a DUT, you don't need this step. Just make it sure that your UE support UE-assistance-information for release-preference).

NR SA NPN Test 1 Config 03

 

gnb-sa-pni-npn-1.cfg  is configured as follows.

Configure network information for NPN which will be broadcast in SIB1 using cag_info_list parameter.

NR SA NPN Test 1 Config 04

mme-ims-pni-npn-1.cfg is configured as shown below.

Specify the plmn to which UE is supposed to camp on and enable NPN support by setting cag_supported : true. Then include a ue_db that carries the cag_info_list.

NR SA NPN Test 1 Config 05

ue_db-ims-pni-npn-1.cfg is configured as shown below.

In the ue_db, there should be at least one item that should match the plmn specified in enb.cfg and mme.cfg.

NR SA NPN Test 1 Config 06

NOTE : This configuration would work as it is, but it is recommended to specify that only one of the cag_id_list match the list you configured in gNB.  So it would be worth trying any one of following config :

      {plmn: "00104", cag_id_list: [7, 80, 90], cag_only_ind: true}

      {plmn: "00104", cag_id_list: [80,7, 90], cag_only_ind: true}

      {plmn: "00104", cag_id_list: [80,90, 7], cag_only_ind: true}

ue-nr-sa-pni-npn-1.cfg  is configured as shown below.

The ue in the ue_list should carry a cag_info_list that match the camping cag specified in callbox (enb.cfg and mme.cfg) and set as_release to 16 or higher (NOTE : If you are using the commercial UE as a DUT, you don't need this step. Just make it sure that your UE support UE-assistance-information for release-preference).

NR SA NPN Test 1 Config 07

 

Perform the Test

Run lte service on callbox and check 'cell' command. You would notice the multiple PLMNs you configured in enb.cfg as shown below. Note that the plmn in cell command output shows all the plmns specified in cell configuration.

NR SA NPN Test 1 Run 01

Check which PLMN is connected to AMF as shown below. If DUT try to attach to different PLMN from the one shown below, it will be rejected by core network (AMF).

NR SA NPN Test 1 Run 02

Now start trace logging.

NR SA NPN Test 1 Run 03

Power on UE on UEsim (If your DUT is a commercial phone, turn on the phone)

NR SA NPN Test 1 Run 04

Wait until the DUT complete the initial attach.  If UE successfully camp onto the cell, you may assume that NPN works but the details should be verified from the captured log. Not much details in the trace log shown here.

NR SA NPN Test 1 Run 05

 

Log Analysis

Following is the log snapshot that are involved in UE assistance information message and handling process.

Sample Log

Make if NG setup process is properly completed with NGAP log. Here you see gNB notifies plmn 001-01 as globalGNB-ID and notifies 001-01,001-04,001-05 as broadcast PLMNs.

NR SA NPN Test 1 Log 01

Then confirm that the plmn-IdentityInfoList and npn-IdentityInfoList in SIB1 is broadcast as configured in enb.cnf.

Here you see PLMN 001-01 is broadcast in plmn-IdentityInfoList and in npn-IdentityInfoList.

NR SA NPN Test 1 Log 02

Here you see PLMN 001-04 and 001-05 are listed in npn-IdentityInfoList as specified in enb.cfg

NR SA NPN Test 1 Log 03

When UE camp on, it notifies that the CAG plmn it selected via selectedPLMN-Identity IE in RRC setup Complete message.

NR SA NPN Test 1 Log 04

Based on the cag plmn selection from the UE, gNB notifies about the selected cag information to core network via pNI-NPN-Access-Information IE in NGAP message (Initial UE message).

NR SA NPN Test 1 Log 05

Then Network notifies the attached PLMN back to UE via 5G-GUTI in Registration Accept message.

NR SA NPN Test 1 Log 06

Core Network notifies gNB of all the plmn as associated cag id list via allowed-PNI-NPI-List in the NGAP message Initial Context Setup Message. The information in this list is configured by cag_info_list specified in ue_db.

NR SA NPN Test 1 Log 07

 

 

RRC / NAS Signaling

 

SIB1 (SA)

: This is SIB1 containing npn configurations

{

  message c1: systemInformationBlockType1: {

    cellSelectionInfo {

      ...

    },

    cellAccessRelatedInfo {

      plmn-IdentityInfoList {

        {

          plmn-IdentityList {

            {

              mcc {

                0,

                0,

                1

              },

              mnc {

                0,

                1

              }

            }

          },

          trackingAreaCode '000000'H,

          cellIdentity '001234501'H,

          cellReservedForOperatorUse notReserved

        }

      },

      cellReservedForOtherUse true,

      npn-IdentityInfoList-r16 {

        {

          npn-IdentityList-r16 {

            pni-npn-r16: {

              plmn-Identity-r16 {

                mcc {

                  0,

                  0,

                  1

                },

                mnc {

                  0,

                  1

                }

              },

              cag-IdentityList-r16 {

                {

                  cag-Identity-r16 '00000001'H

                },

                {

                  cag-Identity-r16 '00000002'H

                },

                {

                  cag-Identity-r16 '00000003'H

                },

                {

                  cag-Identity-r16 '00000004'H

                }

              }

            }

          },

          trackingAreaCode-r16 '000000'H,

          cellIdentity-r16 '001234501'H,

          cellReservedForOperatorUse-r16 reserved

        },

        {

          npn-IdentityList-r16 {

            pni-npn-r16: {

              plmn-Identity-r16 {

                mcc {

                  0,

                  0,

                  1

                },

                mnc {

                  0,

                  4

                }

              },

              cag-IdentityList-r16 {

                {

                  cag-Identity-r16 '00000007'H

                },

                {

                  cag-Identity-r16 '00000008'H

                },

                {

                  cag-Identity-r16 '00000009'H

                }

              }

            },

            pni-npn-r16: {

              plmn-Identity-r16 {

                mcc {

                  0,

                  0,

                  1

                },

                mnc {

                  0,

                  5

                }

              },

              cag-IdentityList-r16 {

                {

                  cag-Identity-r16 '00000002'H

                },

                {

                  cag-Identity-r16 '00000200'H

                }

              }

            }

          },

          trackingAreaCode-r16 '000001'H,

          cellIdentity-r16 '001234501'H,

          cellReservedForOperatorUse-r16 reserved

        }

      }

    },

    connEstFailureControl {

      ...

    },

    servingCellConfigCommon {

     ...

    },

    ue-TimersAndConstants {

      ...

    }

  }

}

 

 

RrcSetupComplete (SA)

: This is RrcSetupComplte message showing the cag plmn that UE selected

{

  message c1: rrcSetupComplete: {

    rrc-TransactionIdentifier 0,

    criticalExtensions rrcSetupComplete: {

      selectedPLMN-Identity 5,

      dedicatedNAS-Message '7E004179000D0100F110F0FF000010325476982E02E0E0'H,

      nonCriticalExtension {

        nonCriticalExtension {

          ul-RRC-Segmentation-r16 true

        }

      }

    }

  }

}