Amarisoft

Configuration Guide

 

Following diagram shows the overall architecture of Amari Callbox. It shows various components of the Callbox Protocol stack and various configuration files for each components of the callbox software. One of the challenges to configure the callbox as per your requirement would be to figure out which configuration file you need to modify and which parameter you have to set in each of the configuration file. I hope this digram would give you a first level hints to figure out which configuration file you need to pick for your test requirement.

On gNB/eNB side, there are many different types of configuration file. It would be a little challenging to get the detailed understanding on all the details of each and every configuration file. If you are new to Amarisoft System, try to understand the configuration files in the following order. This order is the order in which most of the customer would most frequently changes for the testing. The file location in the list below is based on the assumption that you installed Amarisoft software in default location (/root)

NOTE : The cofiguration file name shown above is not the physical file. It is the just file name symbolically linked to the real physical file name. If you want to apply a specific file, create your own configuration file and make a symbolic link with the corresponding name listed above. For example, if you want to use myenb.cfg file to configure enb/gnb, just make a symbolic link as follows in /root/enb/config.  

          enb.cfg -> myenb.cfg

To create the symbolic link as shown above. Run the following command within the corresponding directory.

          ln -sf myenb.cfg enb.cfg

 

Table of Contents

 

Overview

 

ConfigurationGuide Overview 01

 

The configurations files shown in the diagram above are distributed into two directories as shown below. As shown below, enb directory carries configuration files for RAN side operation and mme directory carries configuration files for core network.

ConfigurationGuide Overview 02

 

Data Path for Internet Access

Overall data path and components during internet access is illustrated as below.

OutOfBox Internet Overall Flow 01

NOTE : You can assign IP address to each tun interface as you like in pdn_list: of mme configuration. The default configuration is shown at the section Check Up before trying UE connection

NOTE : In this example diagram, the GTPU is shown to be connected to tun 0, but the connection can be made to other tun during PDN/PDU establishement process.

NOTE : In this example diagram, DNS is specified to 8.8.8.8 (Google DNS), but this can be changed as well in  pdn_list: of of mme configuration.

NOTE : TCP/UDP port number is not shown here because it is automatically set (set differently depending on situation) when those sockets are created.

 

Core Component / Interfaces / Protocol / Port

 

Structure of Full Stack Configuration

This shows the overall configuration file structure for the full stack configuration from RAN through Core Network/Application Layer, The purpose is not to show each and every detailed parameters for the full stack. This is just to show the overall structure of each configuration file for each component (i.e, RAN, Core network, Application layer etc)  Just try to grasp the big picture of the structure of the configuration files here.

 

Structure of RAN(eNB/gNB) Configuration

This configuration is the one pointed by (symbolically linked to) enb.cfg. This is to configure the full stack of RAN (eNB or gNB or Both) from PHY through RRC/PDCP.  

{

  log_options: configure what type of log to be collected

 

  log_filename: configure log file name and location

 

  com_addr: specify IP and port number for remote API

 

  rf_driver: {

        

  },

 

  tx_gain: set TX gain

  rx_gain: set RX gain

 

 rf_ports: [

    {

       /* RF port for the first cell */

    },

    {

        /* RF port for the second cell */

    },

  ],

    

  mme_list: [

    {

        mme_addr: /* address of MME for S1AP connection. Must be modified if the MME runs on a different host. */

    },

  ],

  

  gtp_addr: GTP bind address (=address of the ethernet interface connected to the MME). Must be modified if the MME runs on a different host.

 

  enb_id: high 24 bits of SIB1.cellIdentifier

 

  amf_list: [

    {    

      amf_addr: /* address of AMF for NGAP connection. Must be modified if the AMF runs on a different host. */

    },

  ],

 

  

cell_list: [ list of LTE cells

  ],

 

 nr_cell_list: [ list of NR cells

  ],

 

cell_default: { default parameters for LTE cells

    /* PHY Configurations */    

    

    mac_config: { /* MAC configuration (same for all UEs) */

    },

    

    srb_config: [ /* SRB configuration */

    ],

 

    

    drb_config: /* DRB configuration. Links to a separate file for drb configuration */

  },

 

nr_cell_default: {   default parameters for NR cells

    /* PHY Configurations */    

    

    mac_config: { /* MAC configuration (same for all UEs) */

    },

    

    srb_config: [ /* SRB configuration */

    ],

 

    

    drb_config: /* DRB configuration. Links to a separate file for drb configuration */

}

 

Among the parameters in the RAN configuration file, there are a set of parameters that applies in common regardless of RAN type and there are a set of parameters that are specific to a specify type of RAN.

 

The set of parameters that are specific to a specific types of RAN is summarized as follows. In this overall structure, I will put only a small portions of parameters that are most frequently changed by users. You may refer to lteenb documents for those parameters that are not mentioned here.

 

Structure of NAS/Core Configuration

This configuration is the one pointed by (symbolically linked to) mme.cfg. This is to configure NAS layer and Core network

{

  log_options: configure what type of log to be collected

 

  log_filename: configure log file name and location

 

  com_addr: specify IP and port number for remote API

 

  gtp_addr: bind address for GTP-U

 

  plmn:  specify the plmn of the cell

  mme_group_id: specify mme group id

  mme_code: specify mme code

 

  ims_vops_eps:  Specify wether "IMS voice over PS session in S1 mode" is supported or not

  ims_vops_5gs_3gpp:  Specify wether "IMS voice over PS session in 5G " is supported or not

  ims_vops_5gs_n3gpp: Specify wether "IMS voice over PS session over Non 3GPP " is supported or not

 

  emergency_number_list: [  Defines a list of emergency numbers to be sent to the UE in the NAS Messages

 

  ],

 

  rx: {

 

  },

 

  network_name:  network name sent in the EMM information message to the UE

  network_short_name:  network short name in the EMM information message to the UE

 

  cp_ciot_opt: Control Plane Cellular IoT EPS optimization support

 

  ims_list: [  configure ims address  ],

 

  nssai: [  Configure AMF slices

  ],

 

  pdn_list: [ Specify PDN and APN The first one is the default.

  ]

 

  tun_setup_script: Setup script for the network interface

 

  nas_cipher_algo_pref: NAS ciphering algorithm preference. EEA0 is always the last.

  nas_integ_algo_pref: NAS integrity algorithm preference.,

 

  include  Include user data base configuration.

 

}

 

Structure of APN/QoS Configuration

APN/QoS configuration is done as a part of mme.cfg (NAS and Core configuration) and basic structure is as follows. You can configure as many as APN you want in pdn_list:[  ] Array.

{

 

  pdn_list: [ Specify PDN and APN The first one is the default.

      {

      pdn_type: ipv4, ipv6, ipv4v6, unstructured (default = ipv4). Select the PDN or PDU session type.

      access_point_name: the Access Point Name. Use dots (.) to separate the APN elements.

      first_ip_addr: first ip address of the ip address sets which are reserved for UE

      last_ip_addr: last ip address of the ip address sets which are reserved for UE

      ip_addr_shift:  The gap in the last segment of IP address from the previous IP. The gap is applied with 2^ip_addr_shift,

      dns_addr:  IPv4 or IPv6 addresses of the DNS servers.

 

      erabs: [ E-RAB (E-UTRAN Radio Access Bearer) associated to the PDN or a QoS flow associated to the PDU session. The first E-RAB or QoS flow is the default radio bearer and must always be present. The additional E-RABs and QoS flows are dedicated radio bearers and must include a Traffic Flow Template (TFT) unless they are defined as UE initiated.

        {

          qci: QoS Class Identifier of the E-RAB or 5G QoS Identifier of the QOS flow.

          priority_level: Priority level.

          pre_emption_capability: the ability of a particular type of traffic to displace other ongoing lower priority traffic when network resources are limited.

          pre_emption_vulnerability: the susceptibility of a particular type of traffic to being displaced by other traffic with higher priority and pre-emption capability.

        },

      ],

    },

  ]

 

}

 

Structure of Network Slice Configuration

Network slices are configured in both gNB and Core network configuration file.

Network Slice Configuration on gNB Configuration file (enb.cfg) is as in the following structure.  You can configure it in plmn_list[] object and put it in nr_cell_list[] or nr_cell_default: { } as shown below.

{

  /* Enable remote API and Web interface */

  com_addr: "0.0.0.0:9001",

 

  rf_driver: {Define and Configure rf_driver. this is the part in which you can configure what kind of RF hardware you use (e.g, Amarisoft SDR Card or Remote Radio Header etc)

        ...

  },

 

  amf_list: [This is the ip address of your 5Gcore network

    {

      ...

    },

  ],

 

  gtp_addr: "ip",This is the ip address of NIC that is connected to core network

 

  en_dc_support: true,

 

  rf_ports: [This is the configuration for the RF port of your hardware like frequency, sampling rate, number of antenna etc 

    {

 

    },

  ],

 

  /* list of cells */

  cell_list: [],This is configuration for NR cell, but is set to be empty when RAT is NR SA single cell

 

  nr_cell_list: [Configuration for NR Cells

  {

    rf_port: value,

    cell_id: value,

    

    /* band, arfcn, SCS, SSB bitmap */

  },

  ], /* nr_cell_list */

 

  nr_cell_default: { Default Configuration for NR Cells. This applies to every cell in nr_cell_list[]. If a configuration is not specified in nr_cell_list[], the configuration in this section is used

        plmn_list: [ List of plmns. If the plmn support network slice, specify network slice configuration here

           {

          tac: 100,

          plmn: "00101",

          reserved: false,

           nssai: [ List of S-NSSAIs served by this PLMN. Default content is sst: 1 (eMBB). This array can have one or more of objects of {sst, sd}

            {

              sst: Slice Service Type.,

              sd: (Optional) Slice Differentiator.

            }

           ],

          },

        ],

     

  },

}

 

Network Slice Configuration on Core Network Configuration (mme.cfg) is as in the following structure.

{

  nssai: [   List of S-NSSAIs served by the AMF. Default content is sst: 1 (eMBB). This array can have one or more of objects of {sst, sd}

   {

    sst: Slice Service Type.,

    sd: Slice Differentiator.

   },

  ],

 

  pdn_list: [ Specify PDN and APN The first one is the default.

      {

      ....

 

      erabs: [ E-RAB (E-UTRAN Radio Access Bearer) associated to the PDN or a QoS flow associated to the PDU session. The first E-RAB or QoS flow is the default radio bearer and must always be present. The additional E-RABs and QoS flows are dedicated radio bearers and must include a Traffic Flow Template (TFT) unless they are defined as UE initiated.

        ...

    },

    

   slices: [ Defines the QoS flows by S-NSSAI. It would carry one or multiple objects of { snssai: { }, qos_flows:[ ] } If a supported S-NSSAI is not present in the array, the QoS flows defined in erabs applies.

      {

       snssai: {  S-NSSAI value.

        sst: Slice Service Type.,

        sd: (Optional) Slice Differentiator.

       },

       qos_flows: [ Array of QoS flows. Each element of the array has the same structure as an element in erabs except that "5qi" shall be used instead of "qci".

        {

         "5qi": 5QI value

          priority_level: Priority level.

          pre_emption_capability: the ability of a particular type of traffic to displace other ongoing lower priority traffic when network resources are limited.

          pre_emption_vulnerability: the susceptibility of a particular type of traffic to being displaced by other traffic with higher priority and pre-emption capability.

        },

       ],

      },

   

     ],

  ]

 

}

 

Structure of IMS Configuration

This configuration is the one pointed by (symbolically linked to) ims.cfg. This is to configure IMS

{

  log_options: configure what type of log to be collected

 

  log_filename: configure log file name and location

 

    sip_addr: [ List of SIP Server Sockets address

        ...

    ],

 

    mms_server_bind_addr:  the network interface on which MMS server will listen. It is used to configure the MMSC in the UE

 

    sctp_addr:  the IP address (and an optional port) for MME connection. This is only necessary for SMS over SG feature.

 

    cx_server_addr: the IP address (and optional port) of Cx SCTP connection to the HSS.

    cx_bind_addr: the IP address to which the Cx SCTP connection is bound

 

    rx_server_addr: the IP address of Rx SCTP connection to the MME

 

    com_addr: specify IP and port number for remote API

 

    domain: Global domain name (May be overriden for each user)

 

    include user data base

 

    echo: [ Echo(Loopback) phone number

      ...

    ],

 

    ipsec_aalg_list:  IPsec authentication algorithm supported by IMS

    ipsec_ealg_list:  IPsec encryption algorithm supported by IMS.

 

    mt_call_sdp_file: File to use as SDP when using MT call. Overrides global parameter.

 

    ue_db_filename:  the current IMS state(particular the registration info and pending SMS) in a persistent file. Refer to this for the details of this file

 

}

 

Structure of drb Configuration

This file is to configure drb (data radio bearer). This is not a major configuration file. It is a kind of subsidiary configuration file that are included in other major configuration file like enb.cfg.

[This is made up of an array (repetition) of following structure. There are more parameters that can optionally be added.

 

  { for each qci, this structure is assigned .

    qci:

    ims_dedicated_bearer:  If set to true, it indicates that this QCI is used for IMS dedicated bearers (VoLTE, ...)

    pdcp_config: {  pdcp configuration for LTE

      

      },

      */

    },

    nr_pdcp_config: {  pdcp configuration for NR

      

      },

      restrict_to_ng_enb:  If set to true, the nr_pdcp_config settings are only used for UEs connected to the ng-eNB

    },

    rlc_config: rlc configuration

      

    },

    logical_channel_config: {  MAC Logical channel configuration.

      

  },

]

 

Structure of ue-db Configuration

This file is to configure USIM / ISIM information. This is not a major configuration file. It is a kind of subsidiary configuration file that are included in other major configuration file like mme.cfg and ims.cfg.

{

ue_db: [ This is made up of an array (repetition) of following structure. There are more parameters that can optionally be added.

  {

    sim_algo: USIM authentication algorithm: xor, milenage or tuak

    imsi: IMSI value

    amf: Authentication Management Field

    sqn: Sequence Number

    K: K value

 

    impi: IMS priviate user identity

    impu: IMS public user identity

    domain: Home Network Domain name

    authent_type: Athentication Algorithm

},

 

Structure of Single LTE Cell

This shows the overall configuration file structure for Single LTE Cell. This is based on enb.default.cfg and you can refer to enb.default.cfg file for the example of detailed parameters.  Just try to grasp the big picture of the structure of the configuration file here.

The key points to note here are

{

  /* Enable remote API and Web interface */

  com_addr: "ip",

  /* RF driver configuration. sdr card mapping is configured in the file : rf_driver/config.cfg */

  include "rf_driver/config.cfg",  

 

  mme_list: [   This is the ip address of your LTE core network

    {

      /* address of MME for S1AP connection. Must be modified if the MME runs on a different host. */

      mme_addr: "ip",

    },

  ],

  /* GTP bind address (=address of the ethernet interface connected to the MME). Must be modified if the MME runs on a different host. */

  gtp_addr: "ip", This is the ip address of NIC that is connected to core network

 

  /* high 20 bits of SIB1.cellIdentifier */

  enb_id: 0x1A2D0,

 

  /* list of cells */

  cell_list: [  Configuration for LTE Cells

  {

    /* Broadcasted PLMN identities */

    plmn_list: [

      "mccmnc",   plmn (mccmnc)

    ],

 

    dl_earfcn: value, dl earfcn. ul earfcn is automatically configured if not specified

 

    /* cell ID */

    /* RACH Config applicable only to this cell */

  },

  ], /* cell_list */

 

  /* default cell parameters */

  cell_default: {  Default Configuration for LTE Cells. . This applies to every cell in cell_list[]. If a configuration is not specified in cell_list[], the configuration in this section is used

 

    /* Number of Antenna for DL/UL and Bandwidth*/

    n_antenna_dl: value,  number of DL antennas

    n_antenna_ul: value,  number of UL antennas

    n_rb_dl:  LTE bandwidth in the unit of RBs 

 

    /* phich configuration */

    /* SIB Configuration */

    /* PDSCH dedicated config (currently same for all UEs) */

    /* PRACH Config */

    /* PUCCH dedicated config (currently same for all UEs) */

    /* PUSCH dedicated config (currently same for all UEs) */

    /* Scheduling request period (ms). Must be >= 40 for HD-FDD */

    /* CQI report config */

    /* RI reporting config */

    /* transmission mode */

    /* SRS dedicated config. */

    /* MAC configuration (same for all UEs) */

    /* CPU load limitation */

    /* dynamic power control */

    /* RRC/UP ciphering algorithm preference. EEA0 is always the last. */

    /* RRC integrity algorithm preference. EIA0 is always the last. */

    /* (in ms) send RRC connection release after this time of network inactivity */

    /* SRB configuration */

    /* DRB configuration */

  },

 

Structure of Single NR/SA Cell

This shows the overall configuration file structure for Single NR/SA Cell. This is based on gnb-sa.cfg and you can refer to gnb-sa.cfg file for the example of detailed parameters.  Just try to grasp the big picture of the structure of the configuration file here.

The key points to note here are

{

  /* Enable remote API and Web interface */

  com_addr: "0.0.0.0:9001",

 

  rf_driver: {  Define and Configure rf_driver. this is the part in which you can configure what kind of RF hardware you use (e.g, Amarisoft SDR Card or Remote Radio Header etc)

        name: "sdr",

        /* list of devices. 'dev0' is always the master. */

        /* TDD: force the RX antenna on the RX connector */

        /* synchronisation source: none, internal, gps, external (default = none) */

        // sync: "gps",

  },

 

  amf_list: [    This is the ip address of your 5Gcore network

    {

      /* address of AMF for NGAP connection. Must be modified if the AMF runs on a different host. */

      amf_addr: "ip",

    },

  ],

 

  /* GTP bind address (=address of the ethernet interface connected to the AMF). Must be modified if the AMF runs on a different host. */

  gtp_addr: "ip", This is the ip address of NIC that is connected to core network

 

  en_dc_support: true,

 

  rf_ports: [ This is the configuration for the RF port of your hardware like frequency, sampling rate, number of antenna etc 

    {

 

    },

  ],

 

  /* list of cells */

  cell_list: [],  This is configuration for NR cell, but is set to be empty when RAT is NR SA single cell

 

  nr_cell_list: [  Configuration for NR Cells

  {

    rf_port: value,

    cell_id: value,

    

    /* band, arfcn, SCS, SSB bitmap */

    band: NR band

    dl_nr_arfcn: NR dl arfcn. ul_nr_arfcn is automatically configured if not specified

    subcarrier_spacing: subcarrier spacing of DL / UL

    ssb_pos_bitmap: ssb bitmap

  },

  ], /* nr_cell_list */

 

  nr_cell_default: { Default Configuration for NR Cells. This applies to every cell in nr_cell_list[]. If a configuration is not specified in nr_cell_list[], the configuration in this section is used

    /* number of antenna for DL, UL, CBW */

    bandwidth:  channel bandwidth 

    n_antenna_dl: value,  number of DL antennas

    n_antenna_ul: value,  number of UL antennas

    /* UL/DL Pattern (Applicable to TDD only) */

    /* PLMN List */

    /* SIB scheduling */

    /* Basic MIB/SIB1 Parameters */

    /* PRACH Params */

    /* PDCCH Params */

    /* PDSCH Params */

    /* CSI-RS Params */   

    /* PUCCH Params */

    /* SRS Params */

    /* PUSCH Params */

    /* MAC configuration */

    /* Ciphering, Integrity Option */

    /* DRB Config */

  },

}

 

Structure of NR/NSA Cell (1 LTE + 1 NR)

This shows the overall configuration file structure for NR/NSA Cell(1 LTE + 1NR). This is based on gnb-nsa.cfg and you can refer to gnb-nsa.cfg file for the example of detailed parameters.  Just try to grasp the big picture of the structure of the configuration file here.

The key points to note here are

  /* Enable remote API and Web interface */

  com_addr: "0.0.0.0:9001",

 

 rf_driver: {  Define and Configure rf_driver. this is the part in which you can configure what kind of RF hardware you use (e.g, Amarisoft SDR Card or Remote Radio Header etc)

        name: "sdr",

 

        /* list of devices. 'dev0' is always the master. */

        /* TDD: force the RX antenna on the RX connector */

        /* synchronisation source: none, internal, gps, external (default = none) */

 

  },

 

 

  rf_ports: [ This is the configuration for the RF port of your hardware like frequency, sampling rate, number of antenna etc 

    {

       /* RF port for the LTE cell */

    },

    {

        /* RF port for the NR cell */

    },

  ],

    

  mme_list: [   This is the ip address of your LTE core network. In case of NR NSA, LTE Core  (not 5G Core) is used

    {

      /* address of MME for S1AP connection. Must be modified if the MME runs on a different host. */

    },

  ],

 

  /* GTP bind address (=address of the ethernet interface connected to the MME). Must be modified if the MME runs on a different host. */

 

  en_dc_support: true, indicates NR NSA support

 

  /* list of cells */

  cell_list: [  Configuration for LTE Cells

  {

    rf_port: 0,

    /* Broadcasted PLMN identities */

    plmn_list: [

      "00101",

    ],

    /* Cell Frequency */

    dl_earfcn: value, dl earfcn. ul earfcn is automatically configured if not specified

    /* Cell ID - PCI, TAC */

    /* PRACH Root Sequence */  

 

    en_dc_scg_cell_list: [  Specify the NR cell that will be added during the NSA setup procedure

      { cell_id: id_value } Specify NR cell id that will be added

    ],

  },

  ], /* cell_list */

 

  nr_cell_list: [  Configuration for NR Cells

  {

    rf_port: 1,

    /* Cell ID */

    /* Cell Frequency - ARFCN, SCS, SSB Position */

    band:NR band

    dl_nr_arfcn:NR dl arfcn. ul_nr_arfcn is automatically configured if not specified

    subcarrier_spacing:subcarrier spacing of DL / UL

    ssb_pos_bitmap:ssb bitmap

  },

  ], /* nr_cell_list */

 

  /* default cell parameters for LTE */

  cell_default: {  Default Configuration for LTE Cells. . This applies to every cell in cell_list[]. If a configuration is not specified in cell_list[], the configuration in this section is used

    /* Number of DL / UL Antenna */

    n_antenna_dl: , number of DL antennas

    n_antenna_ul: , number of UL antennas

 

    /* Number of DL RB */

    n_rb_dl: LTE bandwidth in the unit of RBs 

 

    /* SIB1 */

    /* SIB schedule for Other SIBs */#if N_RB_DL == 6

    /* PDSCH dedicated config (currently same for all UEs) */

    /* RACH Config */

    /* PUCCH dedicated config (currently same for all UEs) */

    /* PUSCH dedicated config (currently same for all UEs) */

    /* MCS for Msg3 (=CCCH RRC Connection Request) */

    /* this CQI value is assumed when none is received from the UE */

    /* Scheduling request period (ms). Must be >= 40 for HD-FDD */

    /* CQI report config */

    /* RI reporting is done with a period of m_ri * cqi_period. m_ri = 0 (default) disables RI reporting. */

    /* transmission mode */

    /* SRS dedicated config. All UEs share these parameters. srs_config_index and freq_domain_position are allocated for each UE) */

    /* MAC configuration (same for all UEs) */

    /* CPU load limitation */

    /* dynamic power control */

    /* RRC/UP ciphering algorithm preference. EEA0 is always the last. */

    /* RRC integrity algorithm preference. EIA0 is always the last. */

    /* (in ms) send RRC connection release after this time of network inactivity */

    /* SRB configuration */

    /* measurement configuration */

    /* DRB configuration */

  },

 

  /* default cell parameters for NR */

  nr_cell_default: { Default Configuration for NR Cells. This applies to every cell in nr_cell_list[]. If a configuration is not specified in nr_cell_list[], the configuration in this section is used

    /* NR Bandwidth, Number of DL / UL Antenna */

     bandwidth: channel bandwidth 

    n_antenna_dl: value, number of DL antennas

    n_antenna_ul: value, number of UL antennas

    /* force the timing TA offset (optional) */

    /* TDD Pattern (Applicable only to TDD) */

    /* SSB Period */

    /* Cell ID (PCI) */

    /* Scheduling request period (slots). */

    /* DMRS A Pos */

    /* RACH Config */

    /* PDCCH Config - Both Common and Dedicated */

    /* PDSCH Config */

    /* CSI-RS Config */

    /* PUCCH Config */    

    /* SRS Config */

    /* PUSCH Config */

    /* MAC configuration */

    /* Ciphering / Integrity Config */

    /* SRB Support - Enable/Disable */

    /* DRB Config */

  },

}

 

Structure of NB-IoT Cell

This shows the overall configuration file structure for NB-IoT Cell. This is based on enb-nbiot.cfg and you can refer to enb-nbiot.cfg file for the example of detailed parameters. Basically the overall structure of NB-IoT cell configuration is same as LTE cell configuration because NB-IoT is also a type of LTE protocol. There are differences only in terms of detailed configurations  Just try to grasp the big picture of the structure of the configuration file here.

The key points to note here are

{

  /* Enable remote API and Web interface */

  com_addr: "ip",

  /* RF driver configuration. sdr card mapping is configured in the file : rf_driver/config.cfg */

  include "rf_driver/config.cfg",  

 

  mme_list: [   This is the ip address of your LTE core network

    {

      /* address of MME for S1AP connection. Must be modified if the MME runs on a different host. */

      mme_addr: "ip",

    },

  ],

  /* GTP bind address (=address of the ethernet interface connected to the MME). Must be modified if the MME runs on a different host. */

  gtp_addr: "ip", This is the ip address of NIC that is connected to core network

 

  /* high 20 bits of SIB1.cellIdentifier */

  enb_id: 0x1A2D0,

 

  /* list of cells */

  cell_list: [  Configuration for LTE Cells. You only need this block only when the NB IoT Operation mode is NOT standalone mode

  {

    /* Broadcasted PLMN identities */

    plmn_list: [

      "mccmnc",   plmn (mccmnc)

    ],

 

    dl_earfcn: , dl earfcn. ul earfcn is automatically configured if not specified

 

    /* cell ID */

    /* RACH Config applicable only to this cell */

  },

  ], /* cell_list */

 

  nb_cell_list: [  

    {

      plmn_list: [ plmn (mccmnc)

      ],

      n_antenna_dl: ,

      n_antenna_ul: ,

      operation_mode:

      dl_prb:   DL PRB number in the base LTE cell

      ul_prb:   UL PRB number in the base LTE cell

      base_cell_id:,

      operation_mode: NB IoT Operation Mode

      dl_earfcn: , dl earfcn. ul earfcn is automatically configured if not specified

     

      non_anchor_list : [  Non-anchor carriers : dl and ul_prb can be chosen more freely

        {

             dl_prb: ,   DL PRB number in the base LTE cell

             ul_prb: ,   UL PRB number in the base LTE cell

             operation_mode: NB IoT Operation Mode

        },

      ],

 

    },

  ], /* nbcell_list */

 

  /* default cell parameters */

  nb_cell_default: {  Default Configuration for LTE Cells. . This applies to every cell in cell_list[]. If a configuration is not specified in cell_list[], the configuration in this section is used

 

     r_sib1:  number of SIB1 repetitions

    coverage_levels: [  each coverage level corresponds to a NPRACH configuration. Depending on the coverage level, you may need to multiple blocks {  } of the following configurations 

      {

          /* RACH Configuration */

          /* msg3 configuration */

          /* Paging */

          /* NPDCCH User Search Space */

          /* NPDSCH config */

          /* NPUSCH config */

       },

   ];

    two_harq_support : eNB will use two HARQ processes in UL and DL for UE declaring two HARQ process support (UE category NB2 only)

    

    /* SIB Configuration */

    /* SRB configuration */

  },

 

 

 

Structure of  LTE Carrier Aggregation

This shows the overall configuration file structure for Single LTE Cell. This is based on enb-3cc.cfg and you can refer to enb-3cc.cfg file for the example of detailed parameters.  Just try to grasp the big picture of the structure of the configuration file here.

The key points to note here are

{

  /* Enable remote API and Web interface */

  com_addr: "ip",

  /* RF driver configuration. sdr card mapping is configured in the file : rf_driver/config.cfg */

  include "rf_driver/config.cfg",  

 

  mme_list: [   This is the ip address of your LTE core network

    {

      /* address of MME for S1AP connection. Must be modified if the MME runs on a different host. */

      mme_addr: "ip",

    },

  ],

  /* GTP bind address (=address of the ethernet interface connected to the MME). Must be modified if the MME runs on a different host. */

  gtp_addr: "ip", This is the ip address of NIC that is connected to core network

 

  /* high 20 bits of SIB1.cellIdentifier */

  enb_id: 0x1A2D0,

 

  /* list of cells */

  cell_list: [  Configuration for LTE Cells. In this configuration, you need to configure the multiple blocks of cell configuration that are used for the carrier aggregation. In this example, three cells are configured meaning it is for 3CC CA, but you can remove or add more cells depending on your test requirement

    {  Configuration for the first cell

      rf_port: ,Specify the rf_port (sdr card)  for the first cell

      n_id_cell: ,Physical Cell ID for the first cell

      

    dl_earfcn: ,DL Frequency for the first cell

 

    scell_list: [  Configuration for the cells that are used as secondary cells. You can configure as many as the secondary cell here, but all of the cell should be configured in cell_list. In this example, Refer to this document for further details

      {

        cell_id: ,Cell ID for a secondary cell

        cross_carrier_scheduling: ,enable / disable cross carrier scheduling

        scheduling_cell_id: ,  specify the scheduling cell id when cross carrier scheduling is enabled

        ul_allowed,specify whether UL is allowed for this cell or not

        rrc_configuration ,specify how to trigger carrier aggregation :  initial, measurement, api_only

       

      },

     {

        cell_id: ,Cell ID for a secondary cell

        cross_carrier_scheduling: ,enable / disable cross carrier scheduling

        scheduling_cell_id: ,  specify the scheduling cell id when cross carrier scheduling is enabled

        ul_allowed,specify whether UL is allowed for this cell or not

        rrc_configuration ,specify how to trigger carrier aggregation :  initial, measurement, api_only

       

      },

    ],

  },

    {  Configuration for the second cell

      rf_port: ,Specify the rf_port (sdr card)  for the second cell

      n_id_cell: ,Physical Cell ID for the second cell

      

    dl_earfcn: ,DL Frequency for the second cell

 

    scell_list: [  Configuration for the cells that are used as secondary cells. You can configure as many as the secondary cell here, but all of the cell should be configured in cell_list. In this example, Refer to this document for further details

      {

        cell_id: ,Cell ID for a secondary cell

        cross_carrier_scheduling: ,enable / disable cross carrier scheduling

        scheduling_cell_id: ,  specify the scheduling cell id when cross carrier scheduling is enabled

        ul_allowed,specify whether UL is allowed for this cell or not

        rrc_configuration ,specify how to trigger carrier aggregation :  initial, measurement, api_only

       

      },

     {

        cell_id: ,Cell ID for a secondary cell

        cross_carrier_scheduling: ,enable / disable cross carrier scheduling

        scheduling_cell_id: ,  specify the scheduling cell id when cross carrier scheduling is enabled

        ul_allowed,specify whether UL is allowed for this cell or not

        rrc_configuration ,specify how to trigger carrier aggregation :  initial, measurement, api_only

       

      },

    ],

  },

    {  Configuration for the 3rd cell

      rf_port: ,Specify the rf_port (sdr card)  for the third cell

      n_id_cell: ,Physical Cell ID for the third cell

      

    dl_earfcn: ,DL Frequency for the third cell

 

    scell_list: [  Configuration for the cells that are used as secondary cells. You can configure as many as the secondary cell here, but all of the cell should be configured in cell_list. In this example, Refer to this document for further details

      {

        cell_id: ,Cell ID for a secondary cell

        cross_carrier_scheduling: ,enable / disable cross carrier scheduling

        scheduling_cell_id: ,  specify the scheduling cell id when cross carrier scheduling is enabled

        ul_allowed,specify whether UL is allowed for this cell or not

        rrc_configuration ,specify how to trigger carrier aggregation :  initial, measurement, api_only

       

      },

     {

        cell_id: ,Cell ID for a secondary cell

        cross_carrier_scheduling: ,enable / disable cross carrier scheduling

        scheduling_cell_id: ,  specify the scheduling cell id when cross carrier scheduling is enabled

        ul_allowed,specify whether UL is allowed for this cell or not

        rrc_configuration ,specify how to trigger carrier aggregation :  initial, measurement, api_only

       

      },

    ],

  },

  ], /* cell_list */

 

  /* default cell parameters */

  cell_default: {  Default Configuration for LTE Cells. . This applies to every cell in cell_list[]. If a configuration is not specified in cell_list[], the configuration in this section is used

 

    /* Number of Antenna for DL/UL and Bandwidth*/

    n_antenna_dl: value, number of DL antennas

    n_antenna_ul: value, number of UL antennas

    n_rb_dl: LTE bandwidth in the unit of RBs 

 

    /* phich configuration */

    /* SIB Configuration */

    /* PDSCH dedicated config (currently same for all UEs) */

    /* PRACH Config */

    /* PUCCH dedicated config (currently same for all UEs) */

    /* PUSCH dedicated config (currently same for all UEs) */

    /* Scheduling request period (ms). Must be >= 40 for HD-FDD */

    /* CQI report config */

    /* RI reporting config */

    /* transmission mode */

    /* SRS dedicated config. */

    /* MAC configuration (same for all UEs) */

    /* CPU load limitation */

    /* dynamic power control */

    /* RRC/UP ciphering algorithm preference. EEA0 is always the last. */

    /* RRC integrity algorithm preference. EIA0 is always the last. */

    /* (in ms) send RRC connection release after this time of network inactivity */

    /* SRB configuration */

    /* DRB configuration */

  },

 

Structure of  LTE Handover

This shows the overall configuration file structure for Handover between LTE Cells. This is based on enb-2cell-ho.cfg  and you can refer to enb-2cell-ho.cfg file for the example of detailed parameters.  Just try to grasp the big picture of the structure of the configuration file here.

The key points to note here are

{

  /* Enable remote API and Web interface */

  com_addr: "ip",

  /* RF driver configuration. sdr card mapping is configured in the file : rf_driver/config.cfg */

  include "rf_driver/config.cfg",  

 

  mme_list: [   This is the ip address of your LTE core network

    {

      /* address of MME for S1AP connection. Must be modified if the MME runs on a different host. */

      mme_addr: "ip",

    },

  ],

  /* GTP bind address (=address of the ethernet interface connected to the MME). Must be modified if the MME runs on a different host. */

  gtp_addr: "ip", This is the ip address of NIC that is connected to core network

 

  /* high 20 bits of SIB1.cellIdentifier */

  enb_id: 0x1A2D0,

 

  /* list of cells */

  cell_list: [  Configuration for LTE Cells. In this configuration, you need to configure the multiple blocks of cell configuration that are used for the carrier aggregation. In this example, three cells are configured meaning it is for 3CC CA, but you can remove or add more cells depending on your test requirement

    {  Configuration for the first cell

      rf_port: ,Specify the rf_port (sdr card)  for the first cell

      n_id_cell: ,Physical Cell ID for the first cell

      

    dl_earfcn: ,DL Frequency for the first cell

 

    ncell_list: [   This is the configuration for neghbour cell list. In the context of Handover scenario, this is the place where you specify the destination/target cell

      {

        n_id_cell: ,  Physical Cell ID for the target/destination cell

        dl_earfcn: ,  DL frequency for the target/destination cell

      },

    ],

  },

    {  Configuration for the second cell

      rf_port: ,Specify the rf_port (sdr card)  for the second cell

      n_id_cell: ,Physical Cell ID for the second cell

      

    dl_earfcn: ,DL Frequency for the second cell

 

    ncell_list: [

      {

        n_id_cell: ,  Physical Cell ID for the target/destination cell

        dl_earfcn: ,  DL frequency for the target/destination cell

      },

    ],

  },

  ], /* cell_list */

 

  /* default cell parameters */

  cell_default: {  Default Configuration for LTE Cells. . This applies to every cell in cell_list[]. If a configuration is not specified in cell_list[], the configuration in this section is used

 

    /* Number of Antenna for DL/UL and Bandwidth*/

    n_antenna_dl: value, number of DL antennas

    n_antenna_ul: value, number of UL antennas

    n_rb_dl: LTE bandwidth in the unit of RBs 

 

    /* phich configuration */

    /* SIB Configuration */

    /* PDSCH dedicated config (currently same for all UEs) */

    /* PRACH Config */

    /* PUCCH dedicated config (currently same for all UEs) */

    /* PUSCH dedicated config (currently same for all UEs) */

    /* Scheduling request period (ms). Must be >= 40 for HD-FDD */

    /* CQI report config */

    /* RI reporting config */

    /* transmission mode */

    /* SRS dedicated config. */

    /* MAC configuration (same for all UEs) */

    /* CPU load limitation */

    /* dynamic power control */

    /* RRC/UP ciphering algorithm preference. EEA0 is always the last. */

    /* RRC integrity algorithm preference. EIA0 is always the last. */

    /* (in ms) send RRC connection release after this time of network inactivity */

    /* SRB configuration */

    /* DRB configuration */

 

    meas_config_desc: {   If this is present, and if meas_config object is not present, the eNB will dynamically build the measurement configuration sent to the UE based on the content of this object and the list of neighbour cells defined in ncell_list object.  Refer to this document for the details.  Refer to this tutorial for real test example : Inter Frequency HO, Intra Frequency HO  

      a1_report_type: ,

      a1_rsrp: ,

      a1_hysteresis: ,

      a1_time_to_trigger: ,

      a2_report_type: ,

      a2_rsrp: ,

      a2_hysteresis: ,

      a2_time_to_trigger: ,

      eutra_handover: {   Existance of this configuration indicates this measurement is for Handover  

        a3_report_type: ,

        a3_offset: ,

        hysteresis: ,

        time_to_trigger:

      }

    },

 

    meas_gap_config:   measurement gap configuration  

 

    ho_from_meas: ,   enable / disable to trigger handover when the required measurement report is recieved  Refer to this document for the details.  

  },