Amarisoft

NR SA SDT (Small Data Transmission)

 

The purpose of this tutorial is to show you how to configure gNB so that it enables SDT (Small Data Transmission) when small sized user data meeting the sdt criteria flows.

SDT is a mechanism for UEs in RRC_INACTIVE mode to transmit (and receive) data or control without fully resuming the RRC connection. The goal is to minimize the number of exchanged messages, typically for low energy consumption scenarios in IoT with small messages sent periodically.

SDT comes with two flavors:

 

Test Procedure Summary

Overall test procedure for each mode of SDT is supposed to be carefully followed. The procedure can be summarized as follows :

RA-SDT

In that situation, the eNB reserves certain RACH preamble for SDT access with the mechanism of PRACH feature preambles partitions. The call flow is as follows :

Step 1 : eNB sends RRC Release with suspendConfig and a list of DRBs and/or SRB2 suitable for SDT access

Step 2 : UE enters RRC_INACTIVE

Step 3 : Uplink data or control arrives at UE on a DRB (or SRB2) suitable for SDT access and RSRP level satisfies a certain threshold set for SDT

Step 4 : UE selects a RA preamble in the partition reserved for SDT and performs Random Access. The UE sends a RRC Resume Request on CCCH and also the data in its MSG3 (or MSGA PUSCH for 2-steps RA)

Step 5 : eNB receives PRACH on the preamble reserved for SDT, receives the Resume request to identify the UE and is ready to handle incoming data

Step 6 : eNB does not transmit RRC Resume but can communicate with the UE using the common RA search space. The UE is not in RRC_CONNECTED and has no dedicated resources

Step 7 : Bi-directionnal data exchange can still occur up to certain duration (T319a) and a certain data volume

Step 8 : The enB can choose to resume the RRC connection if :

Step 9 : Otherwise the eNB resends the UE in RRC_INACTIVE or RRC_IDLE with a RRC Release

CG-SDT

In that situation, the eNB directly receives a periodic PUSCH resources that the UE can use to perform SDT. The call flow is as follows :

Step 1 : eNB sends RRC release with suspendConfig, the list of DRBs and/or SRB2 suitable for SDT access and a SDT-CG-Config-r17. The CG-SDT configuration contains a ConfiguredGrantConfig of type1 with all the parameters necessary to perform PUSCH. It also contains other parameters to define some thresholds and a mapping between the PUSCH occassion and the SSB index. This mapping allows the eNB to identify on which SSB beam is the UE synchronized based on the received PUSCH

Step 2 : UE enters RRC_INACTIVE

Step 3 : Uplink data or control arrives at UE on a DRB (or SRB2) suitable for SDT access and the following conditions are satisfied :

Step 4 : UE selects a PUSCH CG grant corresponding to the selected SSB index and sends a RRC Resume Request on CCCH along with its the data.

Step 5 : eNB blindly listens to all the CG-SDT PUSCH occasions and succesfully decode one and is able to confirm UE identity from the Resume Request.

Step 6 : eNB does not transmit RRC Resume but can communicate with the UE using the common SDT search space (which is usually also the RA search space). The UE is not in RRC_CONNECTED and has no dedicated resources

Step 7 : Bi-directionnal data exchange can still occur up to certain duration (T319a) and a certain data volume

Step 8 : The enB can choose to resume the RRC connection if :

Step 9 : Otherwise the eNB resends the UE in RRC_INACTIVE or RRC_IDLE with a RRC Release

 

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 setup is the case where you use a commerical UE as a DUT supporting UAI (UE-Assistance Information)

TestSetup Callbox UE 1sdr 01

 

Setup B

This setup is the case where you use a commerical Amarisoft UEsim as a DUT supporting UAI (UE-Assistance Information)

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.

NOTE : For simplicity, I listed configuration parameters which are directly related to SDT, but you sould need additional configuration to set an enviroment for SDT to be used (e.g, RRC Inactive, 2 Step RACH, Configured Grant etc). You can refer to following tutorials related to the additional configurations.

 

Test 1 : RA-SDT : FDD with 2 Step RACH

This test is to show how to configure RA-SDT (i.e, SDT via RACH, 2 step rach in this tutorial).

 

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-sdt-2step-rach.cfg which is copied and modified from gnb-sa.cfg on Callbox (gNB) and used drb_nr_sdt.cfg which is copied and modified from drb_nr.cfg

NR SA UAI Test 1 Config 01

I am using mme-ims-cn-assistance.cfg and ims config as shown below.

NR SA UAI Test 1 Config 02

On UEsim, I used ue-nr-sa-fdd-20Mhz-sdt.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 UAI Test 1 Config 03

 

gnb-sa-sdt-2step-rach.cfg is configured as follows.

First I configured the cell as an FDD Cell for this specific test (NR_TDD 0)

NR SA UAI Test 1 Config 04

And specify the FDD band and ARFCN as you like (band, dl_nr_arfcn)

The important setting is sdt configuration within rrc_inactive block(NOTE : For the details of rrc_inactive block, check out this tutorial). Specify the criteria to trigger sdt like rsrp_threshold, ul_data_volum_threshold and t319a etc. (Check out Key Configuration Parameter section for the details of each of these configurations)

Another important setting for RA-SDT (RACH based SDT) is to configure prach_freature_preambles_list within the rach configuration. (NOTE : From the test, it seems that sdt operation is influenced greatly by the time delay between PRACH and MsgA which is configured by time_domain_offset. I would suggest to tweak this configuration first if you get too many CRC error for msgA carrying the SDT data)

This may not be a mandatory setting, but I would recommend to set rx_to_tx_latency 2.

Since SDT is associated with a specific DRB, a specific drb file configured for sdt is used.

drb_nr_sdt.cfg is configured as follows

For this configuration, you need to figure out which DRB/5QI will be used in your test, set sdt_allowed to true for the specific 5QI that will be used in your test. (NOTE : If you are not sure which 5QI will be used for your test, first run the test without special DRB setting and check out NAS message to figure out the 5QI value).

mme-ims-cn-assistance.cfg is configured as shown below.

In mme configuration, enable cn_assistance_info_support to make core network capable of triggering RRC Inactive state.

NR SA UAI Test 1 Config 05

ue-nr-sa-fdd-20Mhz-sdt.cfg  is configured as shown below. (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 and SDT).

Set the UEsim to be FDD (TDD 0).

NR SA UAI Test 1 Config 06

Set the band and frequency (dl_nr_arfcn) to match the configuration of Callbox (gNB).

The key parameter on UEsim is to enable rrc_incative_support parameter. This parameter let UEsim to inform the supportability of rrc-inactive in UE capability information.  And set as_release to 17 which let UE notify release 17 capability like SDT.

Perform the Test

First check out the cell configuration and see if everything is configured as intended.

run 't' (trace) command and wait for the connection from UE.  Here in this example, you see the RACH for initial attach (2 step rach in this case) and then UE gets into RRC inactive state when there is no user traffic for a certain period of time.

Once the call state is in RRC Inactive, generate a traffic from UE (i.e, generating mo Data).

NOTE : If you are using Amarisoft UEsim, you may generate the traffic by executing ping from UEsim (e.g, ip netns exec ue1 ping 192.168.2.1). If you are using commercial phone, you may install an App that support ping and do ping from the App.

 

Log Analysis

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

Sample Log

There are many configurations to be checked in SIB1 for this tutorial.

Check out rach-configCommon. This configuration is not so important for this tutorial but not do harm if you check.

The important point of this tutorial is to transfer user data (Small Data) through MsgA. Check out if the IE smallData-r17 is enabled in msgA configuration(msgA-ConfigCommon).

This may not be mandatory configuration directly related to RA-SDT, but as far as I tested this seems to be affect a lot for the msgA decoding for SDT. The parameter is msgA-PUSCH-TimeDomainOffset-r16 which is set by the configuration parameter 'time_domain_offset'. This is time difference(gap) in slot between PRACH and MsgA.

Then make sure that gNB notifies that it is capable of SDT and criteria for triggering SDT. Check out sdt-ConfigCommon-r17 and featureProiorities-r17.

Now check out UE capability to check if UE support the feature (SDT)

Make it sure that UE support RA SDT by checking out the IE ra-SDT-r17 in UE capability Information message.

Now power on UE and wait until UE gets into connected state. If there is no traffic for a certain period of time, the call state gets into RRC Inactive. Make it sure that it gets into the RRC Inactive state with sdt-Config-r17 configured.

Then power on UE and wait until UE complete the initial connection and got into RRC Inactive state.

At this point, ping from UEsim (or commercial UE). Then UE would send PRACH with prach_feature_index. This indicates that the PRACH is for SDT.

Then you see RRC Resume is initiated and SDT session starts.

 

 

Test 2 : CG-SDT : FDD

This test is to show how to configure CG-SDT(i.e, SDT via Configuration Granted Physical channel).

 

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-cg-sdt.cfg which is copied and modified from gnb-sa.cfg on Callbox (gNB) and used drb_nr_sdt.cfg which is copied and modified from drb_nr.cfg

NR SA UAI Test 1 Config 01

I am using mme-ims-cn-assistance.cfg and ims config as shown below.

NR SA UAI Test 1 Config 02

On UEsim, I used ue-cg-sdt.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 UAI Test 1 Config 03

 

gnb-sa-cg-sdt.cfg  is configured as follows.

First I configured the cell as an FDD Cell for this specific test (NR_TDD 0). Set CG_SDT to 1 so that the configuration related to CG-SDT are configured.

NR SA UAI Test 1 Config 04

And specify the FDD band and ARFCN as you like (band, dl_nr_arfcn)

Change RO(RACH Occation) configuration (ssb_per_prach_occasion, cb_preambles_per_ssb) a little bit to bettr fit for CG SDT

Set prach features preambles and feature priorities to SDT (feature_combination, feature_priorities).

Configure rrc_inactive feature and put sdt configuration and configuration_grant configuration in it.

Since SDT is associated with a specific DRB, a specific drb file configured for sdt is used.

 

drb_nr_sdt.cfg is configured as follows

For this configuration, you need to figure out which DRB/5QI will be used in your test, set sdt_allowed to true for the specific 5QI that will be used in your test. (NOTE : If you are not sure which 5QI will be used for your test, first run the test without special DRB setting and check out NAS message to figure out the 5QI value).

mme-ims-cn-assistance.cfg is configured as shown below.

In mme configuration, enable cn_assistance_info_support to make core network capable of triggering RRC Inactive state.

NR SA UAI Test 1 Config 05

ue-cg-sdt.cfg  is configured as shown below. (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 and SDT).

Set the UEsim to be FDD (TDD 0).

NR SA UAI Test 1 Config 06

Set the band and frequency (dl_nr_arfcn) to match the configuration of Callbox (gNB).

The key parameter on UEsim is to enable rrc_incative_support parameter. This parameter let UEsim to inform the supportability of rrc-inactive in UE capability information.  And set as_release to 17 which let UE notify release 17 capability like SDT.

Perform the Test

First check out the cell configuration and see if everything is configured as intended.

run 't' (trace) command and wait for the connection from UE.  Here in this example, you see the RACH for initial attach (2 step rach in this case) and then UE gets into RRC inactive state when there is no user traffic for a certain period of time.

Once the call state is in RRC Inactive, generate a traffic from UE (i.e, generating mo Data).

NOTE : If you are using Amarisoft UEsim, you may generate the traffic by executing ping from UEsim (e.g, ip netns exec ue1 ping 192.168.3.1). If you are using commercial phone, you may install an App that support ping and do ping from the App.

 

Log Analysis

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

Sample Log

There are many configurations to be checked in SIB1 for this tutorial.

Check out rach-configCommon. In this test, SDT will be associated with 4 Step RACH as well as with CG (Configured Grant). Check out if featureCombinationPreambleList carries the smallData-r17 within featureCombination-r17.

Then make sure that gNB notifies that it is capable of SDT and criteria for triggering SDT. Check out sdt-ConfigCommon-r17 and featureProiorities-r17.

Now check out UE capability to check if UE support the feature (SDT)

Make it sure that UE support configured grant since this test is for SDT associated with CG (Configured Grant)

Make it sure that UE support CG SDT by checking out the IE cg-SDT-r17 in UE capability Information message.

Make it sure that UE support RA SDT by checking out the IE ra-SDT-r17 in UE capability Information message.

Now power on UE and wait until UE gets into connected state.

If there is no traffic for a certain period of time, the call state gets into RRC Inactive.

Make it sure that it gets into the RRC Inactive state with sdt-Config-r17 configured. In case of CG based SDT, all the details of the CG configuration should be embedded within sdt-Config-r17.

Then power on UE and wait until UE complete the initial connection and got into RRC Inactive state.

At this point, ping from UEsim (or commercial UE). Then UE would send PRACH with prach_feature_index. This indicates that the PRACH is for SDT. Then you see RRC Resume is initiated and SDT session starts.

You may see a lot of PUSCH marked as a error icon, but this is not really errors. The PUSCH with error followed by the message 'CG-SDT was skipped. do not request retransmission' indicates 'this slot is allowed for PUSCH, but UE does not send PUSCH because there is no user data to send'.

If the PUSCH carries the user data (SDT data in this case), you will see the additional log print like 'cg_sdt, cg_sdt_pusch_idx, cg_sdt_ssb_idx'.