Amarisoft

RRC Reject

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

This tutorial shows both ways.

NOTE : In most case, when UE get the RRC 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 RRC message.

Table of Contents

Introduction

Radio Resource Control (RRC) is a critical protocol layer in cellular networks, responsible for the establishment, configuration, maintenance, and release of radio bearers between user equipment (UE) and the network. RRC operates within the control plane, enabling key procedures such as connection setup, mobility management, paging, and security activation. In testing and development environments, such as with the Amarisoft Callbox, it is often necessary to simulate and evaluate the UE’s response to RRC reject scenarios. This is essential for verifying UE robustness, compliance with 3GPP standards, and network resilience. The Amarisoft Callbox provides flexible mechanisms to trigger RRC reject messages, either through static configuration files or dynamically using a Remote API. Understanding how to control and test RRC reject behaviors is important for protocol engineers, testers, and developers working on network equipment and UE integration. This tutorial addresses practical methods for inducing RRC reject responses, highlights their significance in network testing, and demonstrates how these techniques integrate with the Amarisoft Callbox architecture without delving into detailed message formats or protocol data. By mastering these approaches, practitioners can ensure comprehensive and efficient protocol validation in a controlled test environment.

Summary of the Tutorial

This tutorial demonstrates various methods for testing RRC Connection Reject procedures in an LTE environment using Amarisoft eNB, focusing on different configuration approaches and the use of remote API. The test environment requires only a single cell and one UE connection; no special setup is needed.

Key configuration parameters used in these procedures include rrc_procedure_filter and its associated options such as action and ttl, as well as the use of remote API for dynamic updates. Each method allows for flexible testing of connection rejection and acceptance behaviors in a controlled LTE environment.

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 : RRC Connection Reject (LTE)

In this test, I will configure in such a way that eNB reject every RrcConnectionRequest from every UE

Configuration

In this test, I created a configuration file named enb-rrcfilter-request-reject.cfg which is copied and modified from enb.default.cfg

Config enb default 01

Then configure rrc_procedure_filter in the rool location in cell_list as you like (In this test, I set the filter for rrc_connection_request for reject (i.e, rejecting RRCConnectionRequest and sending RRCConnectionReject)

Perform the Test

Following is the cell configuration (BAND, BW etc) but this doesn't matter. You can configure the cell in anyway as long as your DUT is compatible with it.

Then power on UE and you will see the trace log something like this. This indicates that the call establishment has failed at the very early stage. But just from this trace, it is not possible to figure out exactly at which step the call failed. You need to check out the log file for further details.

Now check out the log file on WebGUI and you can confirm that every RRC Connection Request is rejected as shown below.

Sample Log

Test 2 : RRC Connection Reject (LTE) with a specified retry count

In this test, I will configure in such a way that eNB reject  RrcConnectionRequest for the specified number of time and accept it after the specified number of retrial.

Configuration

In this test, I created a configuration file named enb-rrcfilter-request-reject-ttl.cfg which is copied and modified from enb.default.cfg

Config enb default 01

Then configure rrc_procedure_filter in the rool location in cell_list as you like (In this test, I set the filter for rrc_connection_request for reject (i.e, rejecting RRCConnectionRequest and sending RRCConnectionReject and then reject it only 4 times and accept it after that)

Perform the Test

Following is the cell configuration (BAND, BW etc) but this doesn't matter. You can configure the cell in anyway as long as your DUT is compatible with it.

Then power on UE and you will see the trace log something like this. This indicates that the call establishment has failed at the very early stage. But just from this trace, it is not possible to figure out exactly at which step the call failed. You need to check out the log file for further details.

Now check out the log file on WebGUI and you can confirm that every RRC Connection Request is rejected as shown below.

Sample Log

Test 3 : RRC Connection Reject (LTE) with Remote API

In this test, I will not change/configure anything in configuration file. Instead I will use RemoteAPI and change the configuration on the fly to reject RrcConnectionRequest and accept it as I want.

Configuration

In this test, I created a configuration file named enb.default.cfg without any modification.

Config enb default 01

Perform the Test

Following is the cell configuration (BAND, BW etc) but this doesn't matter. You can configure the cell in anyway as long as your DUT is compatible with it.

Before powering on UE, you will be at the trace log as shown below.

At this point, send a remote API command as shown below (run this command at /root/enb directory). This is to reject RRC connection request. (NOTE : The exact timing you need to send the command would vary depending on the type of the command. In this case, I sent the command before powering on because the task that I want to do is reject RRC connection Request and the RrcConnectionRequest is the first RRC message after the power on)

Following is the text version of the command that I used. This is to help you copy and paste it for your own purpose.

./ws.js enb '{"message":"config_set","cells": {"1", {"rrc_procedure_filter":{"rrc_connection_request":"reject"}}}}'

Now you see that call setup keep failing. This indicates that the call establishment has failed at the very early stage. But just from this trace, it is not possible to figure out exactly at which step the call failed. You need to check out the log file for further details.

Now let's send another remote API command to accept the RRC Connection Request as shown below.

Following is the text version of the command so that you can copy and paste.

./ws.js enb '{"message":"config_set","cells": {"1", {"rrc_procedure_filter":{"rrc_connection_request":"treat"}}}}'

And then you see that the call setup gets completed as shown below.

Now check out the log file on WebGUI and you can confirm that every RRC Connection Request is rejected when you send the "rrc_connection_frequest":"reject" and get accepted when you send the "rrc_connection_frequest":"treat".