Amarisoft

NAS Reject

 

The purpose of this tutorial is to show you how to Reject a NAS message that you specified.  This tutorial shows two different ways of testing NAS reject : One with configuration file and the other one with Remote API. There are roughly two ways of performing NAS Reject in Amarisoft Callbox as listed below.

This tutorial shows both ways.

NOTE : In most case, when UE get the NAS Reject message the UE retries a certain number of times and then give up if every retry fails. How may times the UE retries before it gives up usually depends on the type of NAS message. Amarisoft eNB/gNB does not support the retry count for each NAS message. However, if you want to let gNB/eNB accept the NAS message from UE while retrying, you can use Remote API to accept the message.

 

 

Table of Contents

 

 

Test Setup

This tutorial does not require any special test setup. Just to have one cell configuration with one UE connection is enough.

TestSetup Callbox UE 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 : Attach Reject with the cause # 14 (LTE)

In this test, I will configure in such a way that eNB reject every attach request from every UE with the cause #14

 

Configuration

You can use any of LTE configuration for this tutorial (e.g, enb.default.cfg).

Config enb default 01

I used mme-ims-nas-reject.cfg which is copied and modified from mme-ims.cfg

NAS Reject Config 01

Add attach_reject_filter: {"*", 0, "imsi": 1 } and attach_reject_error : error code in mme-ims-nas-reject.cfg as shown below.

NAS Reject Test 1 Config 01

 

Perform the Test

Power on UE and check the protocol log to see if the Attach is rejected as intended. You see that 'Attach Reject' is sent and check out the EMM cause as intended.

NAS Reject Test 1 Run 01

Depending on the type of reject cause, UE may retry the NAS request. The number of retry would vary depending the type of the reject cause. If you configure the reject filter in the configuration file, all of the NAS request set in the configuration will be rejected regardless of how may times it is requested. If you want to remove the reject and accept the request, you need to use RemoteAPI.

NAS Reject Test 1 Run 02

 

 

Test 2 : Attach Reject with the cause # 14 with Remote API (LTE) - attach_reject_filter

Basically what this test does is same as Test 1, but in this test I will not change any configuration in mme-ims.cfg file. I will setup the reject filter using Remote API (NOTE : If you are not familiar with RemoteAPI, please check out this tutorial and make some basic practice first about Remote API and then try this).

 

Configuration

You can use any of LTE configuration for this tutorial (e.g, enb.default.cfg).

Config enb default 01

I used mme-ims.cfg without any modification.

NAS Reject Test 2 Config 01

 

Perform the Test

Start the trace log. Do not power on UE yet. Run the remote API before powering on UE in this case because what you are trying to do in this test is to reject the initial attach. The reject should be configured before UE attempts the initial attach.

NAS Reject Test 2 Run 01

Send RemoteAPI command as shown below :  ./ws.js mme '{"message": "config_set","attach_reject_filter":{"*": 0,"001010123456789": 1}, "attach_reject_error": 14}'

NAS Reject Test 2 Run 02

 

 

Test 3 : Reject Periodic Registration with the cause # 22 and t3512with Remote API (NR SA)

I will setup the reject filter using Remote API (NOTE : If you are not familiar with RemoteAPI, please check out this tutorial and make some basic practice first about Remote API and then try this).

 

Configuration

You can use any of NR SA for this tutorial (e.g, gnb-sa.cfg).

NAS Reject Test 3 Config 01

I used mme-ims.cfg without any modification.

NAS Reject Test 2 Config 01

 

Perform the Test

Start the trace log. Do not power on UE yet. Run the remote API before powering on UE in this case because what you are trying to do in this test is to reject the initial attach. The reject should be configured before UE attempts the initial attach.

NAS Reject Test 2 Run 01

Run this remoteAPI command as shown below : ./ws.js mme '{"message": "config_set","t3512":30}'. This commend is to let UE retry periodically when the registration gets rejected.

NAS Reject Test 3 Run 02

Run this Remote API command as shown below : ./ws.js mme '{"message": "config_set","5gmm_procedure_filter":{"registration_mobility_periodic":"reject"},"registration_mobility_periodic_error":22}'

NAS Reject Test 3 Run 03

Now power on UE and check the behavior in WebGUI.

You would notice that T3512 is set as configured.

NAS Reject Test 3 Run 04

After some time in idle mode, UE attemps periodic registration.

NAS Reject Test 3 Run 05

The periodic registration is rejected with the cause as configured by the RemoteAPI.

NAS Reject Test 3 Run 06

 

 

Test 4 : Attach Reject with the cause # 20 and then Attach Accept(removing reject) with Remote API (LTE) - emm_procedure_filter

Basically what this test does is same as Test 2, but with different RemoteAPI command.  An advantage of using this command is that you can change the filter so that eNB accept Attach request again if you like.

I will setup the reject filter using Remote API (NOTE : If you are not familiar with RemoteAPI, please check out this tutorial and make some basic practice first about Remote API and then try this).

 

Configuration

You can use any of LTE configuration for this tutorial (e.g, enb.default.cfg).

Config enb default 01

I used mme-ims.cfg without any modification.

NAS Reject Test 2 Config 01

 

Perform the Test

Start the trace log. Do not power on UE yet. Run the remote API before powering on UE in this case because what you are trying to do in this test is to reject the initial attach. The reject should be configured before UE attempts the initial attach.

NAS Reject Test 2 Run 01

Send RemoteAPI command as shown below :  ./ws.js mme '{"message": "config_set","emm_procedure_filter":{"attach":"reject"},"attach_reject_error":20}'

NAS Reject Test 4 Run 02

You may let eNB accept the Attach after a few rejection. In that case, you can let it accept using following RemoteAPI command.

./ws.js mme '{"message": "config_set","emm_procedure_filter":{"attach":"treat"}}'

NAS Reject Test 4 Run 03

You can verify the operation in the log as shown below. While "attach" is set to "reject", all the Attach Request gets rejected. When "attach" is set to "treat", the Attach Request is accepted.

NAS Reject Test 4 Run 04

 

 

Test 5 : PDN Connectivity Reject with the cause # 27 with Remote API (LTE) - esm_procedure_filter

This test show you how to reject PDN Connectivity Request for a certain APN and how to remove the rejected condition and accept the message again.

I will setup the reject filter using Remote API (NOTE : If you are not familiar with RemoteAPI, please check out this tutorial and make some basic practice first about Remote API and then try this).

 

Configuration

You can use any of LTE configuration for this tutorial (e.g, enb.default.cfg).

Config enb default 01

I used mme-ims.cfg without any modification.

NAS Reject Test 2 Config 01

 

Perform the Test

Start the trace log. Do not power on UE yet. Run the remote API before powering on UE in this case because what you are trying to do in this test is to reject the initial attach. The reject should be configured before UE attempts the initial attach.

NAS Reject Test 2 Run 01

Send RemoteAPI command as shown below :  ./ws.js mme '{"message": "config_set", "pdn_list":[{"apn":"ims","esm_procedure_filter":{"pdn_connectivity":"reject"}}],"pdn_connect_reject_error":27}'

NAS Reject Test 5 Run 02

You may let eNB accept the Attach after a few rejection. In that case, you can let it accept using following RemoteAPI command.

./ws.js mme '{"message": "config_set", "pdn_list":[{"apn":"ims","esm_procedure_filter":{"pdn_connectivity":"treat"}}]}'

'NAS Reject Test 5 Run 03

You can verify the operation in the log as shown below. While "pdn_connectivity" is set to "reject", all the PDN Connectivity Request messages get rejected.

NAS Reject Test 5 Run 04

After you set "pdn_connectity" to "treat" by RemoteAPI, you see the PDN Connectivity Request gets accepted.

NAS Reject Test 5 Run 05

 

 

Test 6 : Initial Registration Reject with the cause # 22 with Remote API (NR SA)

I will setup the reject filter using Remote API (NOTE : If you are not familiar with RemoteAPI, please check out this tutorial and make some basic practice first about Remote API and then try this).

 

Configuration

You can use any of NR SA for this tutorial (e.g, gnb-sa.cfg).

NAS Reject Test 3 Config 01

I used mme-ims.cfg without any modification.

NAS Reject Test 2 Config 01

 

Perform the Test

Start the trace log. Do not power on UE yet. Run the remote API before powering on UE in this case because what you are trying to do in this test is to reject the initial attach. The reject should be configured before UE attempts the initial attach.

NAS Reject Test 2 Run 01

Before powering on UE, run this Remote API command as shown below : ./ws.js mme '{"message": "config_set","5gmm_procedure_filter":{"registration_initial":"reject"},"registration_initial_reject_error": 22}' and confirm that the initial registration get rejected. '

NAS Reject Test 6 Run 02

Now power on UE and check the behavior in WebGUI.  You see the registration got rejected with the cause of 22.

NAS Reject Test 6 Run 03

Now tun the following command as below : ./ws.js mme '{"message": "config_set","5gmm_procedure_filter":{"registration_initial":"treat"}}'. This let mme to allow registration.

NAS Reject Test 6 Run 04

Confirm that registration gets accepted. (NOTE : You may need to power cycle the UE again if UE is already in limited service allowing Emergency call only)

NAS Reject Test 6 Run 05

 

 

Test 7 : Attach Reject/TAU Reject with the cause # 22 with Remote API (LTE) - T3412, T3402

The purpose of this test is to show how to configure Attach Reject and TAU Reject and see how follow up sequence goes on depending on T3402.

 

Configuration

You can use any of LTE configuration for this tutorial (e.g, enb.default.cfg).

Config enb default 01

I used mme-ims.cfg without any modification.

NAS Reject Test 2 Config 01

 

Sub test 1 : Attach Reject with #22 - default T3402

The purpose of this sub test is to verify if UE retries Attach Request based on T3402 in response to Attach Reject with #22. Overall verification sequence is

 

Perform the Test

Start the trace log. Do not power on UE yet. Run the remote API before powering on UE in this case because what you are trying to do in this test is to reject the initial attach. The reject should be configured before UE attempts the initial attach.

NAS Reject Test 2 Run 01

Send RemoteAPI command as shown below :  ./ws.js mme '{"message": "config_set","attach_reject_filter":{"*": 0,"001010123456789": 1}, "attach_reject_error": 22}''

And then Power on UE and check out the log to see if UE works as expected

 

UE send Attach Request.

Network send Attach Reject with the cause of #20(0x16) and UE start retry Attach Request

After 5 times of retry of Attach Request and Reject, UE wait for t3412 expiration and then retry on t3412 expiration. In this case, Network didn't send any message(e.g, Attach Accept) with t3412 value. so UE applies the default t3412 value(12 min).

 

Sub test 2 : TAU Reject with #22 - user specified T3402

The purpose of this sub test is to verify if UE retries Tracking Area Update Request based on T3402 in response to Tracking Area Update  Reject with #22. Overall verification sequence is

NOTE : I've tried this test with two commercial UE and Amarisoft UEsim. Commerical UE does not seem to work as expected but Amarisoft UEsim worked as expected.

 

Perform the Test

Start the trace log. Do not power on UE yet. Run the remote API before powering on UE in this case because what you are trying to do in this test is to reject the initial attach. The reject should be configured before UE attempts the initial attach.

NAS Reject Test 2 Run 01

Send RemoteAPI command as shown below :  ./ws.js mme '{"message": "config_set","t3412":120}'

Send RemoteAPI command as shown below :  ./ws.js mme '{"message": "config_set","t3402":60}'

Send RemoteAPI command as shown below :  ./ws.js mme '{"message": "config_set","emm_procedure_filter":{"tracking_area_updating":"reject"},"tracking_area_update_reject_error": 22}'

And then Power on UE and check out the log to see if UE works as expected

UE send Attach Request.

Network send Attach Accept with both t3412 (2min) and t3402(one min).

After attach complete, UE wait for t3412 expiration (2 min in this case) and start sending Tracking Area Update Request.

Network send Tracking Area Update Reject with #22 (0x16).

Sample Log

Following is the Amarisoft UEsim log from the same test. The good thing about UEsim log for UEtimer test is that it shows Timer status in the log. If you are using commercial UE for this test, you need to get measure to check out the UE log showing Timer status, otherwise troubleshoot (finding the root cause of the problem) is impossible.

Sample Log