NR SA - Network Slicing
The purpose of this tutorial is to show you how to test Network Slices. The purpose of this tutorial is to show how to configure different slices in terms of signaling message, not to show different traffic flows via each of the slide. In terms of the signaling messages, Network slicing configuration is configured by following messages.
- Registration Request : UE informs network on which slice it wants to use. UE can specify one or more of slices at this step.
- Requested NSSAI
- Network Slicing Indication
- Registration Accept : Network informs UE on what kind of slices are allowed and which slice is configured for the UE.
- Allowed NSSAI
- Configured NSSAI
- Network Slicing Indication
- NSSAI Inclusion Mode
Table of Contents
- NR SA - Network Slicing
Test Setup
I used two different setups for the test in this tutorial depending on the type of DUTs for each test. When I used a commercial UE as DUT, I used <Setup 1> and when I used a Amarisoft UEsim as DUT I used <Setup 2>.
< Setup 1 >
< Setup 2 >
Test setup with UEsim for this tutorial is as shown below.
Key Configuration Parameters
Followings are important configuration parameters for this tutorial. You may click on the items for the descriptions from Amarisoft documents.
- enb config
- nssai : In this link, you will get the descriptions for all the items listed below
- sst
- sd
- mme config
- Uesim Config
Test 1 : Network Slice with default settings - Commericial UE
This is to show a very basic test with Commercial UE. It is with almost basic configuration. In most case, commercial UE does not provide any way for the user to change Network Slice configuration on UEside. So it would be good to figure out the network slice configuration on UE before the test.
Configuration
An important thing in using UE sim is to do proper matching between UE sim configuration and Call box configuration In thisTest, I used the gnb-sa .cfg without any change.
If you use other Network (e.g, other network simulator or real network), you have to make it sure to configure UE sim according to the settings on network side
In this test, I used the default configuration for core network(i.e, mme-ims.cfg, ims.default.cfg and ue_db-ims.cfg).
Following is the configuration for network slice in gnb-sa .cfg
nssai in plmn_list indicates the list of nssai supported by the specific tracking area. Together with nssai in mme.cfg, these are used to determined the allowed NSSAI in Attach Accept message. If this is not configured, the default nssai(sst: 1 (eMBB)) is assumed.
Following is the configuration for slice in mme-ims.cfg. nssai in mme.cfg indicates the list of nssai supported by the mme. Together with nssai in enb.cfg, these are used to determined the allowed NSSAI in Attach Accept message. If this is not configured, the default nssai(sst: 1 (eMBB)) is assumed.
In this test, the slice will be applied to the "internet" PDN.
Followings are not used for this test, but if you enable this parameter (slices[]) you can apply a specific NSSAI to a specific QoS flow.
Following is the configuration for network slice in ue_db-ims.cfg. In this test, no specific pnd_list:[ ] configuration is specified.
Perform the Test
Check with cell parameter and see if it is configured as intended.
Power on UE and make it sure that UE attaches
Confirm that UE completed the attach and get the IP address. If you don't get this including IP address, you need to troubleshoot.
Log Analysis
In this section, I will show you only the portions of the log that are relavent to this tutorial. For the full log, refer to the sample log linked aboved.
In the Registration Request message in this test, UE request NSSAI {SST 1}. This is based on UE configuration. You need to change UE configuration if you want to change this contents.
In Registration Accept message, Core Network put S-NSSAI {SST=1} in Allowed NSSAI IE.
Yon can confirm the DNN used for the connection.
Now UE initiate the PDU session by sending PDU Session Establishment Request.
Network establish the PDU session by sending PDU session establishment accept. In this message, Core network informs UE of the network slice that is associated with the PDU session via S-NSSAI IE.
The PDU Session Establishment Accept message is conveyed to UE via DL NAS transport message.
Test 2 : Network Slice with Single Slices - UEsim
This is to show on how to configure single Network Slice and test with Amarisoft UEsim. Since we have full control over UE configuration with Amarisoft UEsim, we can test DUT with more detailed configurations.
Configuration
An important thing in using UE sim is to do proper matching between UE sim configuration and Call box configuration In this tutorial, I used the ue-nr-sa-slice-single.cfg that is copied and modified from the ue-nr.cfg and gnb-sa-slice.cfg that is copied and modified from gnb-sa.cfg. The mme configurations that are used for this test are mme-ims-slice-single.cfg and ue_db-ims-slice-single.cfg which are copied and modified from mme-ims.cfg and ue_db-ims.cfg
If you use other Network (e.g, other network simulator or real network), you have to make it sure to configure UE sim according to the settings on network side
I used gnb-sa-slice.cfg for enb configuration. gnb-sa-slice.cfg is copied and modified from gnb-sa.cfg
For core network configuration, I used mme-ims-slice-single.cfg which is copied and modified from mme-ims.cfg. For UE database, I used ue_db-ims-slice-single.cfg which is copied and modified from ue_db-ims.cfg
For the UEsim, I used ue-nr-sa-slice-single.cfg which is copied and modified from ue-nr-sa.cfg
Following is the configuration in gnb-sa-slice.cfg .
In this configuration, three network slices ({sst:1, sd:1}, {sst:2}, {sst:3, sd:50}) are configured for the gNB (
Followings are the configurations in mme-ims-slice-single.cfg
Same as in gNB configuration, three network slices ({sst:1, sd:1}, {sst:2}, {sst:3, sd:50}) are configured for the CORE Network.
Two of the network slices are associated with "internet" PDU for different 5QI. Slice {sst:1, sd1} is associated with 5QI 6 and {sst:3,sd:50} is associated with 5QI 7.
Followings are the configurations in ue_db-ims-slice-single.cfg
You can manually specify the APN name and the associated Network slice in pdn_list configuration parameter in UE DB on Callbox. In this test case, the "internet" APN is set as default PDU and {sst:1, sd:1} is the network slice mapped to this PDU.
Followings are the configurations in ue-nr-sa-slice-single.cfg (
On UEsim configuration as well, you can specify the default apn and the default network slice that is mapped to the apn. Here in this test, "internet" is set as the default APN and {sst:1, sd:1} is configured as the default network slice.
Perform the Test
Check with cell parameter and see if it is configured as intended.
Power on UE and make it sure that UE attaches
Confirm that UE completed the attach and get the IP address. If you don't get this including IP address, you need to troubleshoot.
Log Analysis
In this section, I will show you only the portions of the log that are relavent to this tutorial. For the full log, refer to the sample log linked above.
In case of UEsim, you may see the Registration Request in Plan 5GS NAS message without much detailed information because the UEsim does not have any stored Security Context when lte service just started/restarted and the power_on was done for the first time).
In this case, UEsim send Registration Request after Security Setup embedded within Security mode complete message. Here in Registration Request message, UE specifies 'Requested NSSAI' as set in the configuration file. In this test, it is set to SST:1, SD : 1.
Then Network specifies Allowed NSSAI in Registration Accept. In this test, it is set to SST:1, SD:1.
Then UE (UEsim) initiate PDU session by sending PDU Session Establishment Request with S-NSSAI using one of network slices listed in Allowed NSSAI.
Then Network completes PDU Session with S-NSSAI (the S-NSSAI associated with the PDU session).
Test 3 : Network Slice with Multiple Slices - UEsim
This is to show on how to configure single Network Slice and test with Amarisoft UEsim. Since we have full control over UE configuration with Amarisoft UEsim, we can test DUT with more detailed configurations.
Configuration
An important thing in using UE sim is to do proper matching between UE sim configuration and Call box configuration In this tutorial, I used the ue-nr-sa-slice-multi.cfg that is copied and modified from the ue-nr.cfg and gnb-sa-slice.cfg that is copied and modified from gnb-sa.cfg. The mme configurations that are used for this test are mme-ims-slice-multi.cfg and ue_db-ims-slice-multi.cfg which are copied and modified from mme-ims.cfg and ue_db-ims.cfg
If you use other Network (e.g, other network simulator or real network), you have to make it sure to configure UE sim according to the settings on network side
I used gnb-sa-slice.cfg for enb configuration. gnb-sa-slice.cfg is copied and modified from gnb-sa.cfg
For core network configuration, I used mme-ims-slice-multi.cfg which is copied and modified from mme-ims.cfg. For UE database, I used ue_db-ims-slice-multi.cfg which is copied and modified from ue_db-ims.cfg
For the UEsim, I used ue_db-ims-slice-multi.cfg which is copied and modified from ue-nr-sa.cfg
Following is the configuration in gnb-sa-slice.cfg
In this configuration, three network slices ({sst:1, sd:1}, {sst:2}, {sst:3, sd:50}) are configured for the gNB (
Followings are the configurations in mme-ims-slice-multi.cfg
Same as in gNB configuration, three network slices ({sst:1, sd:1}, {sst:2}, {sst:3, sd:50}) are configured for the CORE Network.
Two of the network slices are associated with "internet" PDU for different 5QI. Slice {sst:1, sd1} is associated with 5QI 6 and {sst:3,sd:50} is associated with 5QI 7.
Followings are the configurations in ue_db-ims-slice-multi.cfg
You can manually specify the APN name and the associated Network slice in pdn_list configuration parameter in UE DB on Callbox. In this test case, the "internet" APN is set as default PDU and {sst:1, sd:1} is the network slice mapped to this PDU.
Followings are the configurations in ue-nr-sa-slice-multi.cfg
On UEsim configuration as well, you can specify the default apn and the default network slice that is mapped to the apn. Here in this test, "internet" is set as the default APN. Two slices{sst:1, sd:1} and {sst:3, sd:50} are configured as the default network slice.
Perform the Test
Check with cell parameter and see if it is configured as intended.
Power on UE and make it sure that UE attaches
Confirm that UE completed the attach and get the IP address. If you don't get this including IP address, you need to troubleshoot.
Log Analysis
In this section, I will show you only the portions of the log that are relavent to this tutorial. For the full log, refer to the sample log linked aboved.
In case of UEsim, you may see the Registration Request in Plan 5GS NAS message without much detailed information because the UEsim does not have any stored Security Context when lte service just started/restarted and the power_on was done for the first time).
In this case, UEsim send Registration Request after Security Setup embedded within Security mode complete message. Here in Registration Request message, UE specifies 'Requested NSSAI' as set in the configuration file. In this test, it is set to TWO slices {SST:1, SD : 1} and {SST:3, SD : 50}.
Then Network specifies Allowed NSSAI in Registration Accept. In this test, it is set to the TWO slices {SST:1, SD:1} and {SST:3, SD:50} .
Then UE (UEsim) initiate PDU session by sending PDU Session Establishment Request with S-NSSAI using one of network slices listed in Allowed NSSAI.
Then Network completes PDU Session with S-NSSAI (the S-NSSAI associated with the PDU session).
RRC / NAS Signaling
RegistrationRequest
: This is the RegistrationRequest message sent by UE to inform the network slice configuration it wants (
Protocol discriminator = 0x7e (5GS Mobility Management)
Security header = 0x1 (Integrity protected)
Auth code = 0xc2653407
Sequence number = 0x09
Protocol discriminator = 0x7e (5GS Mobility Management)
Security header = 0x0 (Plain 5GS NAS message, not security protected)
Message type = 0x41 (Registration request)
5GS registration type:
Follow-on request bit = 1
Value = 1 (initial registration)
ngKSI:
..
5GS mobile identity:
...
UE security capability:
...
NAS message container:
Protocol discriminator = 0x7e (5GS Mobility Management)
Security header = 0x0 (Plain 5GS NAS message, not security protected)
Message type = 0x41 (Registration request)
5GS registration type:
Follow-on request bit = 1
Value = 1 (initial registration)
ngKSI:
...
5GS mobile identity:
...
5GMM capability:
0x03 (SGC=0, 5G-IPHC-CP CIoT=0, N3 data=0, 5G-CP CIoT=0, RestrictEC=0, LPP=0, HO attach=1, S1 mode=1)
UE security capability:
...
Requested NSSAI:
S-NSSAI
Length of S-NSSAI contents = 1 (SST)
SST = 0x01
Last visited registered TAI:
...
S1 UE network capability:
0xf0 (EEA0=1, 128-EEA1=1, 128-EEA2=1, 128-EEA3=1, EEA4=0, EEA5=0, EEA6=0, EEA7=0)
0x70 (EIA0=0, 128-EIA1=1, 128-EIA2=1, 128-EIA3=1, EIA4=0, EIA5=0, EIA6=0, EIA7=0)
0xc0 (UEA0=1, UEA1=1, UEA2=0, UEA3=0, UEA4=0, UEA5=0, UEA6=0, UEA7=0)
0x40 (UCS2=0, UIA1=1, UIA2=0, UIA3=0, UIA4=0, UIA5=0, UIA6=0, UIA7=0)
0x19 (ProSe-dd=0, ProSe=0, H.245-ASH=0, ACC-CSFB=1, LPP=1, LCS=0, 1xSRVCC=0, NF=1)
0x80 (ePCO=1, HC-CP CIoT=0, ERw/oPDN=0, S1-U data=0, UP CIoT=0, CP CIoT=0, ProSe-relay=0, ProSe-dc=0)
0xb0 (15 bearers=1, SGC=0, N1mode=1, DCNR=1, CP backoff=0, RestrictEC=0, V2X PC5=0, multipleDRB=0)
UE's usage setting = 0x01 (Data centric)
LADN indication:
Length = 0
Data =
Network slicing indication = 0x00 (DCNI=0, NSSCI=0)
5GS update type = 0x01 (EPS-PNB-CIoT=no additional information, 5GS-PNB-CIoT=no additional information, NG-RAN-RCU=0, SMS requested=1)
RegistrationAccept
: This is the RegistrationRequest message sent by 5G Core to inform the network slice configuration it allows (
Protocol discriminator = 0x7e (5GS Mobility Management)
Security header = 0x2 (Integrity protected and ciphered)
Auth code = 0x59b0464b
Sequence number = 0x02
Protocol discriminator = 0x7e (5GS Mobility Management)
Security header = 0x0 (Plain 5GS NAS message, not security protected)
Message type = 0x42 (Registration accept)
5GS registration result = 0x09 (Emergency registered=0, NSSAA to be performed=0, SMS allowed=1, 3GPP access)
5G-GUTI:
...
TAI list:
...
Allowed NSSAI:
S-NSSAI
Length of S-NSSAI contents = 1 (SST)
SST = 0x01
5GS network feature support:
0x03 (MPSI=0, IWK N26=0, EMF=not supported, EMC=not supported, IMS-VoPS-N3GPP=1, IMS-VoPS-3GPP=1)
0x00 (5G-UP CIoT=0, 5G-IPHC-CP CIoT=0, N3 data=0, 5G-CP CIoT=0, RestrictEC=both CE mode A and CE mode B are not restricted, MCSI=0, EMCN3=0)
T3512 value:
...
Emergency number list:
...
Tips
Network slice is a feature that are related to all the protocol stack and data path from one end to another end (End to End), so there would be separate configurations scattered around many different components which may lead to a lot of confision. In this section, I will try to put some tips that may help in terms of general understanding and some troubleshoot tips. It would be good to get familiar with general understandings on Network Slicing from this note as well.
NSSAI in NAS message from Network
There are a few different NAS messages from Core Network that carries the slice information. Since most of the configuration is configured based on the information provided by the NAS message from UE and/or the configurations in mme.cfg. It would be good to understand how the slice information gets populated in the NAS message from Network. When you want to troubleshoot for network slice test with UE, these can be a good starting point to look at.
NSSAI in Registration Accept
Basically NSSAI (Allowed NSSAI) in Registration Accept is determined by the NSSAI (Requested NSSAI) in Registration Request from UE. If UE does not specify anything in Requested NSSAI, network would configure the default NSSAI in Registration Accept. So if you think you are not getting the NSSAI from network as you expected, check out the NSSAI that UE requested. (Refer to 23.501 5.15.5.2.1 Registration to a set of Network Slices for further details)
S-NSSAI in PDU session establishment accept
The S-NSSAI sent by the AMF in PDU session establishment accept determined by the S-NSSAI in S-NSSAI in PDU session establishment Request from the UE. In this case, UE should use the NSSAI configured in ue_db.cfg. In pdn_list in ue_db, we configure a list of S-NSSAI allowed for a dnn. If the S-NSSAI requested by the UE during the PDU session establishment procedure is not in this list, the PDU session estblishment will be rejected
FAQ
[Q1] Why Amarisoft Core Network does not assign NSSAI in Allowed NSSAI as I expected in RegistrationAccept message?
[A1] Amarisoft Core Network assign NSSAI in RegistrationAccept message based on NSSAI of Requested NSSAI in RegistrationRequest from UE. If UE does not request any NSSAI in RegistrationRequest message, Amarisoft network assigns default NSSAI in RegisrationAccept message. So if you don't see NSSAI as expected in RegistrationAccept, double check on what UE requested in RegistrationRequest.
[Q2] Why Amarisoft Core Network does not assign NSSAI in S-NSSAI as I expected in PDU session establishment accept message?
[A2] Amarisoft Core Network assign S-NSSAI in PDU session establishment accept message based on S-NSSAI in PDU session establishment request from UE. So if you don't see NSSAI as expected in PDU session establishment accept double check on what UE requested in PDU session establishment request
[Q3] Why I am getting PDU session establishment reject from Network?
[A3] There can be so many different reasons for the reject, but in the context of Network slicing, it is likely to be due to followings :
- S-NSSAI in PDU session establishment request should match NSSAI configured in ue_db.cfg. In pdn_list in ue_db, we configure a list of S-NSSAI allowed for a dnn. If the S-NSSAI requested by the UE during the PDU session establishment procedure is not in this list, the PDU session estblishment will be rejected. When I say 'matched' in this context, it mean it should match all the configurations DNN, SST and SD(if present).