Commit e04ff5ef authored by Jaroslava Fiedlerova's avatar Jaroslava Fiedlerova

Merge remote-tracking branch 'origin/fhi-72-improvements' into integration_2024_w47 (!3110)

Fronthaul 7.2 improvements (1. step towards M-plane integration)

- added explanations for each parameter used for XRAN library
- added new config files for VVDN, Benetel 550 and Metanoia RUs
- changed config file for Benetel 650
- deleted 8x8 650-550, and added 8x8 650-650 config file
- updated FHI README
  - setting one or more VFs; compatibility with Mellanox NIC as well
  - fhi_72 section
parents f36eda16 b334feb9
...@@ -13,7 +13,6 @@ gNBs = ...@@ -13,7 +13,6 @@ gNBs =
tracking_area_code = 1; tracking_area_code = 1;
plmn_list = ({ mcc = 208; mnc = 97; mnc_length = 2; snssaiList = ( { sst = 1; }); }); plmn_list = ({ mcc = 208; mnc = 97; mnc_length = 2; snssaiList = ( { sst = 1; }); });
//nr_cellid = 12345678L;
nr_cellid = 1; nr_cellid = 1;
////////// Physical parameters: ////////// Physical parameters:
...@@ -23,7 +22,7 @@ gNBs = ...@@ -23,7 +22,7 @@ gNBs =
maxMIMO_layers = 2; maxMIMO_layers = 2;
pusch_AntennaPorts = 4; pusch_AntennaPorts = 4;
do_CSIRS = 1; do_CSIRS = 1;
do_SRS = 0 ; do_SRS = 0;
pdcch_ConfigSIB1 = ( pdcch_ConfigSIB1 = (
{ {
...@@ -38,10 +37,11 @@ gNBs = ...@@ -38,10 +37,11 @@ gNBs =
physCellId = 0; physCellId = 0;
# downlinkConfigCommon # downlinkConfigCommon
#frequencyInfoDL #frequencyInfoDL
# this is 3450.72 MHz (center frequency) # center frequency = 3999.36 MHz
# selected SSB frequency = 3999.36 MHz
absoluteFrequencySSB = 666624; absoluteFrequencySSB = 666624;
dl_frequencyBand = 77; dl_frequencyBand = 77;
# this is 3401.58 MHz # frequency point A = 3950.22 MHz
dl_absoluteFrequencyPointA = 663348; dl_absoluteFrequencyPointA = 663348;
#scs-SpecificCarrierList #scs-SpecificCarrierList
dl_offstToCarrier = 0; dl_offstToCarrier = 0;
...@@ -186,8 +186,8 @@ MACRLCs = ( ...@@ -186,8 +186,8 @@ MACRLCs = (
tr_n_preference = "local_RRC"; tr_n_preference = "local_RRC";
pusch_TargetSNRx10 = 180; pusch_TargetSNRx10 = 180;
pucch_TargetSNRx10 = 230; pucch_TargetSNRx10 = 230;
ul_bler_target_upper=.35; ul_bler_target_upper = .35;
ul_bler_target_lower=.15; ul_bler_target_lower = .15;
pusch_FailureThres = 100; pusch_FailureThres = 100;
} }
); );
...@@ -211,7 +211,7 @@ RUs = ( ...@@ -211,7 +211,7 @@ RUs = (
local_rf = "no"; local_rf = "no";
nb_tx = 4; nb_tx = 4;
nb_rx = 4; nb_rx = 4;
att_tx = 0 att_tx = 0;
att_rx = 0; att_rx = 0;
bands = [77]; bands = [77];
max_pdschReferenceSignalPower = -27; max_pdschReferenceSignalPower = -27;
...@@ -220,21 +220,11 @@ RUs = ( ...@@ -220,21 +220,11 @@ RUs = (
eNB_instances = [0]; eNB_instances = [0];
ru_thread_core = 5; ru_thread_core = 5;
sl_ahead = 5; sl_ahead = 5;
clock_src = "internal";
tr_preference = "raw_if4p5"; # important: activate FHI7.2 tr_preference = "raw_if4p5"; # important: activate FHI7.2
do_precoding = 0; # needs to match O-RU configuration do_precoding = 0; # needs to match O-RU configuration
} }
); );
rfsimulator :
{
serveraddr = "server";
serverport = "4043";
options = (); #("saviq"); or/and "chanmod"
modelname = "AWGN";
IQfile = "/tmp/rfsimulator.iqs";
};
security = { security = {
# preferred ciphering algorithms # preferred ciphering algorithms
# the first one of the list that an UE supports in chosen # the first one of the list that an UE supports in chosen
...@@ -252,7 +242,8 @@ security = { ...@@ -252,7 +242,8 @@ security = {
drb_integrity = "no"; drb_integrity = "no";
}; };
log_config : { log_config :
{
global_log_level = "info"; global_log_level = "info";
hw_log_level = "info"; hw_log_level = "info";
phy_log_level = "info"; phy_log_level = "info";
...@@ -269,25 +260,21 @@ fhi_72 = { ...@@ -269,25 +260,21 @@ fhi_72 = {
system_core = 0; system_core = 0;
io_core = 1; io_core = 1;
worker_cores = (2); worker_cores = (2);
du_addr = ("76:76:64:6e:00:01", "76:76:64:6e:00:01");
ru_addr = ("98:ae:71:01:c5:eb", "98:ae:71:01:c5:eb"); ru_addr = ("98:ae:71:01:c5:eb", "98:ae:71:01:c5:eb");
mtu = 9216; # check if xran uses this properly mtu = 9600;
fh_config = ({ fh_config = ({
Tadv_cp_dl = 125; Tadv_cp_dl = 125;
T2a_cp_dl = (285, 429); # (min, max) T2a_cp_dl = (285, 429);
T2a_cp_ul = (285, 429); # (min, max) T2a_cp_ul = (285, 429);
T2a_up = (125, 428); # (min, max) T2a_up = (125, 428);
Ta3 = (130, 170); # (min, max) Ta3 = (130, 170);
T1a_cp_dl = (285, 470); # (min, max) T1a_cp_dl = (285, 470);
T1a_cp_ul = (285, 429); # (min, max) T1a_cp_ul = (285, 429);
T1a_up = (125, 350); # (min, max) T1a_up = (125, 350);
Ta4 = (110, 180); # (min, max) Ta4 = (110, 180);
ru_config = { ru_config = {
iq_width = 9; iq_width = 9;
iq_width_prach = 9; iq_width_prach = 9;
}; };
prach_config = {
eAxC_offset = 4;
};
}); });
}; };
...@@ -22,9 +22,9 @@ gNBs = ...@@ -22,9 +22,9 @@ gNBs =
maxMIMO_layers = 2; maxMIMO_layers = 2;
pusch_AntennaPorts = 4; pusch_AntennaPorts = 4;
do_CSIRS = 1; do_CSIRS = 1;
do_SRS = 0 ; do_SRS = 0;
sib1_tda = 15; sib1_tda = 15;
# force_UL256qam_off = 1; # force_UL256qam_off = 1;
pdcch_ConfigSIB1 = ( pdcch_ConfigSIB1 = (
{ {
...@@ -41,10 +41,11 @@ gNBs = ...@@ -41,10 +41,11 @@ gNBs =
# n_TimingAdvanceOffset = 0; # n_TimingAdvanceOffset = 0;
# downlinkConfigCommon # downlinkConfigCommon
#frequencyInfoDL #frequencyInfoDL
# this is 3450.72 MHz (center frequency) # center frequency = 3350.01 MHz
# selected SSB frequency = 3349.92 MHz
absoluteFrequencySSB = 623328; absoluteFrequencySSB = 623328;
dl_frequencyBand = 78; dl_frequencyBand = 78;
# this is 3401.58 MHz # frequency point A = 3300.87 MHz
dl_absoluteFrequencyPointA = 620052; dl_absoluteFrequencyPointA = 620052;
#scs-SpecificCarrierList #scs-SpecificCarrierList
dl_offstToCarrier = 0; dl_offstToCarrier = 0;
...@@ -189,10 +190,10 @@ MACRLCs = ( ...@@ -189,10 +190,10 @@ MACRLCs = (
tr_n_preference = "local_RRC"; tr_n_preference = "local_RRC";
pusch_TargetSNRx10 = 100; pusch_TargetSNRx10 = 100;
pucch_TargetSNRx10 = 200; pucch_TargetSNRx10 = 200;
dl_bler_target_upper=.35; dl_bler_target_upper = .35;
dl_bler_target_lower=.15; dl_bler_target_lower = .15;
ul_bler_target_upper=.35; ul_bler_target_upper = .35;
ul_bler_target_lower=.15; ul_bler_target_lower = .15;
pusch_FailureThres = 1000; pusch_FailureThres = 1000;
ul_max_mcs = 28; ul_max_mcs = 28;
} }
...@@ -218,7 +219,7 @@ RUs = ( ...@@ -218,7 +219,7 @@ RUs = (
local_rf = "no"; local_rf = "no";
nb_tx = 4; nb_tx = 4;
nb_rx = 4; nb_rx = 4;
att_tx = 0 att_tx = 0;
att_rx = 0; att_rx = 0;
bands = [78]; bands = [78];
max_pdschReferenceSignalPower = -27; max_pdschReferenceSignalPower = -27;
...@@ -228,7 +229,7 @@ RUs = ( ...@@ -228,7 +229,7 @@ RUs = (
ru_thread_core = 5; ru_thread_core = 5;
sl_ahead = 10; sl_ahead = 10;
tr_preference = "raw_if4p5"; # important: activate FHI7.2 tr_preference = "raw_if4p5"; # important: activate FHI7.2
do_precoding = 0; # needs to match O-RU configuration do_precoding = 0; # needs to match O-RU configuration
} }
); );
...@@ -251,15 +252,15 @@ security = { ...@@ -251,15 +252,15 @@ security = {
log_config : log_config :
{ {
global_log_level ="info"; global_log_level = "info";
hw_log_level ="info"; hw_log_level = "info";
phy_log_level ="info"; phy_log_level = "info";
mac_log_level ="info"; mac_log_level = "info";
rlc_log_level ="info"; rlc_log_level = "info";
pdcp_log_level ="info"; pdcp_log_level = "info";
rrc_log_level ="info"; rrc_log_level = "info";
ngap_log_level ="info"; ngap_log_level = "info";
f1ap_log_level ="info"; f1ap_log_level = "info";
}; };
fhi_72 = { fhi_72 = {
...@@ -267,10 +268,8 @@ fhi_72 = { ...@@ -267,10 +268,8 @@ fhi_72 = {
system_core = 0; system_core = 0;
io_core = 1; io_core = 1;
worker_cores = (2); worker_cores = (2);
du_addr = ("00:11:22:33:44:66", "00:11:22:33:44:67");
ru_addr = ("70:b3:d5:e1:5b:81", "70:b3:d5:e1:5b:81"); ru_addr = ("70:b3:d5:e1:5b:81", "70:b3:d5:e1:5b:81");
mtu = 9216; mtu = 9600;
file_prefix = "fhi_72";
fh_config = ({ fh_config = ({
Tadv_cp_dl = 125; Tadv_cp_dl = 125;
T2a_cp_dl = (259, 500); T2a_cp_dl = (259, 500);
...@@ -285,8 +284,5 @@ fhi_72 = { ...@@ -285,8 +284,5 @@ fhi_72 = {
iq_width = 9; iq_width = 9;
iq_width_prach = 9; iq_width_prach = 9;
}; };
prach_config = {
eAxC_offset = 4;
};
}); });
}; };
This diff is collapsed.
This diff is collapsed.
...@@ -26,13 +26,13 @@ ...@@ -26,13 +26,13 @@
#include "stdint.h" #include "stdint.h"
struct xran_fh_init; struct xran_fh_init;
void print_fh_init(const struct xran_fh_init *fh_init);
struct xran_fh_config; struct xran_fh_config;
void print_fh_config(const struct xran_fh_config *fh_config);
bool set_fh_init(struct xran_fh_init *fh_init);
struct openair0_config; struct openair0_config;
bool set_fh_config(int ru_idx, int num_rus, const struct openair0_config *oai0_cfg, struct xran_fh_config *fh_config);
bool get_xran_config(const struct openair0_config *openair0_cfg, struct xran_fh_init *fh_init, struct xran_fh_config *fh_config);
void print_fh_init(const struct xran_fh_init *fh_init);
void print_fh_config(const struct xran_fh_config *fh_config);
// hack to workaround LiteOn limitation // hack to workaround LiteOn limitation
extern int g_kbar; extern int g_kbar;
......
...@@ -396,35 +396,20 @@ static void oran_allocate_buffers(void *handle, ...@@ -396,35 +396,20 @@ static void oran_allocate_buffers(void *handle,
xran_5g_prach_req(pi->instanceHandle, prach, prachdecomp, oai_xran_fh_rx_prach_callback, &portInstances->prach_tag); xran_5g_prach_req(pi->instanceHandle, prach, prachdecomp, oai_xran_fh_rx_prach_callback, &portInstances->prach_tag);
} }
int *oai_oran_initialize(const openair0_config_t *openair0_cfg) int *oai_oran_initialize(struct xran_fh_init *xran_fh_init, struct xran_fh_config *xran_fh_config)
{ {
int32_t xret = 0; int32_t xret = 0;
struct xran_fh_init init = {0}; print_fh_init(xran_fh_init);
if (!set_fh_init(&init)) { xret = xran_init(0, NULL, xran_fh_init, NULL, &gxran_handle);
printf("could not read FHI 7.2/ORAN config\n");
return NULL;
}
print_fh_init(&init);
/* read all configuration before starting anything */
struct xran_fh_config xran_fh_config[XRAN_PORTS_NUM] = {0};
for (int32_t o_xu_id = 0; o_xu_id < init.xran_ports; o_xu_id++) {
if (!set_fh_config(o_xu_id, init.xran_ports, openair0_cfg, &xran_fh_config[o_xu_id])) {
printf("could not read FHI 7.2/RU-specific config\n");
return NULL;
}
print_fh_config(&xran_fh_config[o_xu_id]);
}
xret = xran_init(0, NULL, &init, NULL, &gxran_handle);
if (xret != XRAN_STATUS_SUCCESS) { if (xret != XRAN_STATUS_SUCCESS) {
printf("xran_init failed %d\n", xret); printf("xran_init failed %d\n", xret);
exit(-1); exit(-1);
} }
/** process all the O-RU|O-DU for use case */ /** process all the O-RU|O-DU for use case */
for (int32_t o_xu_id = 0; o_xu_id < init.xran_ports; o_xu_id++) { for (int32_t o_xu_id = 0; o_xu_id < xran_fh_init->xran_ports; o_xu_id++) {
print_fh_config(&xran_fh_config[o_xu_id]);
xret = xran_open(gxran_handle, &xran_fh_config[o_xu_id]); xret = xran_open(gxran_handle, &xran_fh_config[o_xu_id]);
if (xret != XRAN_STATUS_SUCCESS) { if (xret != XRAN_STATUS_SUCCESS) {
printf("xran_open failed %d\n", xret); printf("xran_open failed %d\n", xret);
...@@ -432,7 +417,7 @@ int *oai_oran_initialize(const openair0_config_t *openair0_cfg) ...@@ -432,7 +417,7 @@ int *oai_oran_initialize(const openair0_config_t *openair0_cfg)
} }
int sector = 0; int sector = 0;
printf("Initialize ORAN port instance %d (%d) sector %d\n", o_xu_id, init.xran_ports, sector); printf("Initialize ORAN port instance %d (%d) sector %d\n", o_xu_id, xran_fh_init->xran_ports, sector);
oran_port_instance_t *pi = &gPortInst[o_xu_id][sector]; oran_port_instance_t *pi = &gPortInst[o_xu_id][sector];
struct xran_cb_tag tag = {.cellId = sector, .oXuId = o_xu_id}; struct xran_cb_tag tag = {.cellId = sector, .oXuId = o_xu_id};
pi->prach_tag = tag; pi->prach_tag = tag;
......
...@@ -57,7 +57,6 @@ typedef struct oran_port_instance_t { ...@@ -57,7 +57,6 @@ typedef struct oran_port_instance_t {
extern struct xran_fh_config gxran_fh_config[XRAN_PORTS_NUM]; extern struct xran_fh_config gxran_fh_config[XRAN_PORTS_NUM];
extern void *gxran_handle; extern void *gxran_handle;
struct openair0_config; int *oai_oran_initialize(struct xran_fh_init *fh_init, struct xran_fh_config *fh_config);
int *oai_oran_initialize(const struct openair0_config *openair0_cfg);
#endif /* ORAN_INIT_H */ #endif /* ORAN_INIT_H */
...@@ -31,7 +31,6 @@ ...@@ -31,7 +31,6 @@
#define ORAN_CONFIG_SYSTEM_CORE "system_core" #define ORAN_CONFIG_SYSTEM_CORE "system_core"
#define ORAN_CONFIG_IO_CORE "io_core" #define ORAN_CONFIG_IO_CORE "io_core"
#define ORAN_CONFIG_WORKER_CORES "worker_cores" #define ORAN_CONFIG_WORKER_CORES "worker_cores"
#define ORAN_CONFIG_DU_ADDR "du_addr"
#define ORAN_CONFIG_RU_ADDR "ru_addr" #define ORAN_CONFIG_RU_ADDR "ru_addr"
#define ORAN_CONFIG_MTU "mtu" #define ORAN_CONFIG_MTU "mtu"
#define ORAN_CONFIG_FILE_PREFIX "file_prefix" #define ORAN_CONFIG_FILE_PREFIX "file_prefix"
...@@ -47,9 +46,8 @@ ...@@ -47,9 +46,8 @@
{ORAN_CONFIG_SYSTEM_CORE, "DPDK control threads core\n", PARAMFLAG_MANDATORY, .iptr=NULL, .defintval=0, TYPE_INT, 0}, \ {ORAN_CONFIG_SYSTEM_CORE, "DPDK control threads core\n", PARAMFLAG_MANDATORY, .iptr=NULL, .defintval=0, TYPE_INT, 0}, \
{ORAN_CONFIG_IO_CORE, "DPDK Core used for IO\n", PARAMFLAG_MANDATORY, .iptr=NULL, .defintval=4, TYPE_INT, 0}, \ {ORAN_CONFIG_IO_CORE, "DPDK Core used for IO\n", PARAMFLAG_MANDATORY, .iptr=NULL, .defintval=4, TYPE_INT, 0}, \
{ORAN_CONFIG_WORKER_CORES, "CPU Cores to use for workers\n", PARAMFLAG_MANDATORY, .uptr=NULL, .defintarrayval=NULL,TYPE_UINTARRAY, 0}, \ {ORAN_CONFIG_WORKER_CORES, "CPU Cores to use for workers\n", PARAMFLAG_MANDATORY, .uptr=NULL, .defintarrayval=NULL,TYPE_UINTARRAY, 0}, \
{ORAN_CONFIG_DU_ADDR, "Ether addr of DU\n", PARAMFLAG_MANDATORY, .strlistptr=NULL, .defstrlistval=NULL, TYPE_STRINGLIST, 0}, \
{ORAN_CONFIG_RU_ADDR, "Ether addr of RU\n", PARAMFLAG_MANDATORY, .strlistptr=NULL, .defstrlistval=NULL, TYPE_STRINGLIST, 0}, \ {ORAN_CONFIG_RU_ADDR, "Ether addr of RU\n", PARAMFLAG_MANDATORY, .strlistptr=NULL, .defstrlistval=NULL, TYPE_STRINGLIST, 0}, \
{ORAN_CONFIG_MTU, "MTU of Eth interface\n", PARAMFLAG_MANDATORY, .uptr=NULL, .defuintval=1500, TYPE_UINT, 0}, \ {ORAN_CONFIG_MTU, "MTU of Eth interface\n", 0, .uptr=NULL, .defuintval=1500, TYPE_UINT, 0}, \
{ORAN_CONFIG_FILE_PREFIX, "DPDK file-prefix\n", 0, .strptr=NULL, .defstrval="wls_0", TYPE_STRING, 0}, \ {ORAN_CONFIG_FILE_PREFIX, "DPDK file-prefix\n", 0, .strptr=NULL, .defstrval="wls_0", TYPE_STRING, 0}, \
{ORAN_CONFIG_NETHPERPORT, "number of links per port\n", 0, .uptr=NULL, .defuintval=1, TYPE_UINT, 0}, \ {ORAN_CONFIG_NETHPERPORT, "number of links per port\n", 0, .uptr=NULL, .defuintval=1, TYPE_UINT, 0}, \
{ORAN_CONFIG_NETHSPEED, "ethernet speed link\n", 0, .uptr=NULL, .defuintval=10, TYPE_UINT, 0}, \ {ORAN_CONFIG_NETHSPEED, "ethernet speed link\n", 0, .uptr=NULL, .defuintval=10, TYPE_UINT, 0}, \
......
...@@ -33,6 +33,7 @@ ...@@ -33,6 +33,7 @@
#include "openair1/PHY/defs_gNB.h" #include "openair1/PHY/defs_gNB.h"
#include "common/utils/threadPool/thread-pool.h" #include "common/utils/threadPool/thread-pool.h"
#include "oaioran.h" #include "oaioran.h"
#include "oran-config.h"
// include the following file for VERSIONX, version of xran lib, to print it during // include the following file for VERSIONX, version of xran lib, to print it during
// startup. Only relevant for printing, if it ever makes problem, remove this // startup. Only relevant for printing, if it ever makes problem, remove this
...@@ -317,7 +318,16 @@ __attribute__((__visibility__("default"))) int transport_init(openair0_device *d ...@@ -317,7 +318,16 @@ __attribute__((__visibility__("default"))) int transport_init(openair0_device *d
LOG_I(HW, "Initializing O-RAN 7.2 FH interface through xran library (compiled against headers of %s)\n", VERSIONX); LOG_I(HW, "Initializing O-RAN 7.2 FH interface through xran library (compiled against headers of %s)\n", VERSIONX);
initNotifiedFIFO(&oran_sync_fifo); initNotifiedFIFO(&oran_sync_fifo);
eth->oran_priv = oai_oran_initialize(openair0_cfg);
struct xran_fh_init fh_init = {0};
struct xran_fh_config fh_config[XRAN_PORTS_NUM] = {0};
#ifndef OAI_MPLANE_SUPPORT
bool success = get_xran_config(openair0_cfg, &fh_init, fh_config);
AssertFatal(success, "cannot get configuration for xran\n");
#else
/* TODO: M-plane integration */
#endif
eth->oran_priv = oai_oran_initialize(&fh_init, fh_config);
AssertFatal(eth->oran_priv != NULL, "can not initialize fronthaul"); AssertFatal(eth->oran_priv != NULL, "can not initialize fronthaul");
// create message queues for ORAN sync // create message queues for ORAN sync
return 0; return 0;
......
Active_gNBs = ( "gNB-OAI-DU");
# Asn1_verbosity, choice in: none, info, annoying
Asn1_verbosity = "none";
gNBs =
(
{
////////// Identification parameters:
gNB_ID = 0xe00;
gNB_DU_ID = 0xe00;
gNB_name = "gNB-OAI-DU";
// Tracking area code, 0x0000 and 0xfffe are reserved values
tracking_area_code = 1;
plmn_list = ({ mcc = 208; mnc = 99; mnc_length = 2; snssaiList = ( { sst = 1; }); });
nr_cellid = 1;
////////// Physical parameters:
pdsch_AntennaPorts_XP = 2;
pdsch_AntennaPorts_N1 = 2;
pusch_AntennaPorts = 4;
do_CSIRS = 1;
do_SRS = 0;
sib1_tda = 15;
force_UL256qam_off = 1;
# maxMIMO_layers = 2;
pdcch_ConfigSIB1 = (
{
controlResourceSetZero = 11;
searchSpaceZero = 0;
}
);
servingCellConfigCommon = (
{
#spCellConfigCommon
physCellId = 0;
# n_TimingAdvanceOffset = 0;
# downlinkConfigCommon
#frequencyInfoDL
# center frequency = 3950.4 MHz
# selected SSB frequency = 3950.4 MHz
absoluteFrequencySSB = 663360;
dl_frequencyBand = 77;
# frequency point A = 3901.26 MHz
dl_absoluteFrequencyPointA = 660084;
#scs-SpecificCarrierList
dl_offstToCarrier = 0;
# subcarrierSpacing
# 0=kHz15, 1=kHz30, 2=kHz60, 3=kHz120
dl_subcarrierSpacing = 1;
dl_carrierBandwidth = 273;
#initialDownlinkBWP
#genericParameters
initialDLBWPlocationAndBandwidth = 1099; #38.101-1 Table 5.3.2-1
#
# subcarrierSpacing
# 0=kHz15, 1=kHz30, 2=kHz60, 3=kHz120
initialDLBWPsubcarrierSpacing = 1;
#pdcch-ConfigCommon
initialDLBWPcontrolResourceSetZero = 11;
initialDLBWPsearchSpaceZero = 0;
#uplinkConfigCommon
#frequencyInfoUL
ul_frequencyBand = 77;
#scs-SpecificCarrierList
ul_offstToCarrier = 0;
# subcarrierSpacing
# 0=kHz15, 1=kHz30, 2=kHz60, 3=kHz120
ul_subcarrierSpacing = 1;
ul_carrierBandwidth = 273;
pMax = 23;
#initialUplinkBWP
#genericParameters
initialULBWPlocationAndBandwidth = 1099;
# subcarrierSpacing
# 0=kHz15, 1=kHz30, 2=kHz60, 3=kHz120
initialULBWPsubcarrierSpacing = 1;
#rach-ConfigCommon
#rach-ConfigGeneric
prach_ConfigurationIndex = 151;
#prach_msg1_FDM
#0 = one, 1=two, 2=four, 3=eight
prach_msg1_FDM = 0;
prach_msg1_FrequencyStart = 0;
zeroCorrelationZoneConfig = 0;
preambleReceivedTargetPower = -100;
#preamblTransMax (0...10) = (3,4,5,6,7,8,10,20,50,100,200)
preambleTransMax = 8;
#powerRampingStep
# 0=dB0,1=dB2,2=dB4,3=dB6
powerRampingStep = 3;
#ra_ReponseWindow
#1,2,4,8,10,20,40,80
ra_ResponseWindow = 5;
#ssb_perRACH_OccasionAndCB_PreamblesPerSSB_PR
#1=oneeighth,2=onefourth,3=half,4=one,5=two,6=four,7=eight,8=sixteen
ssb_perRACH_OccasionAndCB_PreamblesPerSSB_PR = 3;
#oneHalf (0..15) 4,8,12,16,...60,64
ssb_perRACH_OccasionAndCB_PreamblesPerSSB = 15;
#ra_ContentionResolutionTimer
#(0..7) 8,16,24,32,40,48,56,64
ra_ContentionResolutionTimer = 7;
rsrp_ThresholdSSB = 19;
#prach-RootSequenceIndex_PR
#1 = 839, 2 = 139
prach_RootSequenceIndex_PR = 2;
prach_RootSequenceIndex = 1;
# SCS for msg1, can only be 15 for 30 kHz < 6 GHz, takes precendence over the one derived from prach-ConfigIndex
#
msg1_SubcarrierSpacing = 1,
# restrictedSetConfig
# 0=unrestricted, 1=restricted type A, 2=restricted type B
restrictedSetConfig = 0,
# this is the offset between the last PRACH preamble power and the Msg3 PUSCH, 2 times the field value in dB
msg3_DeltaPreamble = 2;
p0_NominalWithGrant = -96;
# pucch-ConfigCommon setup :
# pucchGroupHopping
# 0 = neither, 1= group hopping, 2=sequence hopping
pucchGroupHopping = 0;
hoppingId = 0;
p0_nominal = -96;
ssb_PositionsInBurst_Bitmap = 0x1;
# ssb_periodicityServingCell
# 0 = ms5, 1=ms10, 2=ms20, 3=ms40, 4=ms80, 5=ms160, 6=spare2, 7=spare1
ssb_periodicityServingCell = 2;
# dmrs_TypeA_position
# 0 = pos2, 1 = pos3
dmrs_TypeA_Position = 0;
# subcarrierSpacing
# 0=kHz15, 1=kHz30, 2=kHz60, 3=kHz120
subcarrierSpacing = 1;
#tdd-UL-DL-ConfigurationCommon
# subcarrierSpacing
# 0=kHz15, 1=kHz30, 2=kHz60, 3=kHz120
referenceSubcarrierSpacing = 1;
# pattern1
# dl_UL_TransmissionPeriodicity
# 0=ms0p5, 1=ms0p625, 2=ms1, 3=ms1p25, 4=ms2, 5=ms2p5, 6=ms5, 7=ms10
dl_UL_TransmissionPeriodicity = 5;
nrofDownlinkSlots = 3;
nrofDownlinkSymbols = 6;
nrofUplinkSlots = 1;
nrofUplinkSymbols = 4;
ssPBCH_BlockPower = 5;
}
);
# ------- SCTP definitions
SCTP :
{
# Number of streams to use in input/output
SCTP_INSTREAMS = 2;
SCTP_OUTSTREAMS = 2;
};
}
);
MACRLCs = (
{
num_cc = 1;
tr_s_preference = "local_L1";
tr_n_preference = "f1";
local_n_if_name = "enp193s0f0";
local_n_address = "172.21.16.51";
remote_n_address = "172.21.6.90";
local_n_portc = 500;
local_n_portd = 2153;
remote_n_portc = 501;
remote_n_portd = 2153;
pusch_TargetSNRx10 = 170;
pucch_TargetSNRx10 = 230;
dl_bler_target_upper = .35;
dl_bler_target_lower = .15;
ul_bler_target_upper = .35;
ul_bler_target_lower = .15;
pusch_FailureThres = 100;
ul_max_mcs = 28;
min_grant_prb = 1;
}
);
L1s = (
{
num_cc = 1;
tr_n_preference = "local_mac";
prach_dtx_threshold = 100;
pucch0_dtx_threshold = 80;
pusch_dtx_threshold = 10;
max_ldpc_iterations = 10;
tx_amp_backoff_dB = 12; # needs to match O-RU configuration
L1_rx_thread_core = 8;
L1_tx_thread_core = 10; # relevant after merge of l1_tx_thread
phase_compensation = 0; # needs to match O-RU configuration
}
);
RUs = (
{
local_rf = "no";
nb_tx = 4;
nb_rx = 4;
att_tx = 0;
att_rx = 0;
bands = [77];
max_pdschReferenceSignalPower = -27;
max_rxgain = 75;
sf_extension = 0;
eNB_instances = [0];
ru_thread_core = 9;
sl_ahead = 5;
tr_preference = "raw_if4p5"; # important: activate FHI7.2
do_precoding = 0; # needs to match O-RU configuration
}
);
log_config :
{
global_log_level = "info";
hw_log_level = "info";
phy_log_level = "info";
mac_log_level = "info";
rlc_log_level = "info";
pdcp_log_level = "info";
rrc_log_level = "info";
ngap_log_level = "info";
f1ap_log_level = "info";
};
fhi_72 = {
dpdk_devices = ("0000:c1:11.0", "0000:c1:11.1"); # one VF can be used as well
system_core = 0;
io_core = 1;
worker_cores = (2);
ru_addr = ("8c:1f:64:d1:10:46","8c:1f:64:d1:10:46");
mtu = 9600;
fh_config = ({
Tadv_cp_dl = 125;
T2a_cp_dl = (259, 500);
T2a_cp_ul = (25, 500);
T2a_up = (134, 375);
Ta3 = (152, 160);
T1a_cp_dl = (419, 470);
T1a_cp_ul = (285, 336);
T1a_up = (294, 345);
Ta4 = (0, 200);
ru_config = {
iq_width = 9;
iq_width_prach = 9;
};
});
};
...@@ -22,10 +22,11 @@ gNBs = ...@@ -22,10 +22,11 @@ gNBs =
pdsch_AntennaPorts_N1 = 2; pdsch_AntennaPorts_N1 = 2;
pusch_AntennaPorts = 8; pusch_AntennaPorts = 8;
do_CSIRS = 1; do_CSIRS = 1;
do_SRS = 0 ; do_SRS = 0;
sib1_tda = 15; sib1_tda = 15;
# force_UL256qam_off = 1; force_UL256qam_off = 1;
maxMIMO_layers = 2; maxMIMO_layers = 2;
pdcch_ConfigSIB1 = ( pdcch_ConfigSIB1 = (
{ {
controlResourceSetZero = 11; controlResourceSetZero = 11;
...@@ -41,20 +42,21 @@ gNBs = ...@@ -41,20 +42,21 @@ gNBs =
# n_TimingAdvanceOffset = 0; # n_TimingAdvanceOffset = 0;
# downlinkConfigCommon # downlinkConfigCommon
#frequencyInfoDL #frequencyInfoDL
# this is 3430.56 MHz (center frequency) # center frequency = 3950.4 MHz
absoluteFrequencySSB = 628704; # selected SSB frequency = 3950.4 MHz
dl_frequencyBand = 78; absoluteFrequencySSB = 663360;
# this is 3411.48 MHz dl_frequencyBand = 77;
dl_absoluteFrequencyPointA = 627432; # frequency point A = 3901.26 MHz
dl_absoluteFrequencyPointA = 660084;
#scs-SpecificCarrierList #scs-SpecificCarrierList
dl_offstToCarrier = 0; dl_offstToCarrier = 0;
# subcarrierSpacing # subcarrierSpacing
# 0=kHz15, 1=kHz30, 2=kHz60, 3=kHz120 # 0=kHz15, 1=kHz30, 2=kHz60, 3=kHz120
dl_subcarrierSpacing = 1; dl_subcarrierSpacing = 1;
dl_carrierBandwidth = 106; dl_carrierBandwidth = 273;
#initialDownlinkBWP #initialDownlinkBWP
#genericParameters #genericParameters
initialDLBWPlocationAndBandwidth = 28875; #38.101-1 Table 5.3.2-1 initialDLBWPlocationAndBandwidth = 1099; #38.101-1 Table 5.3.2-1
# #
# subcarrierSpacing # subcarrierSpacing
# 0=kHz15, 1=kHz30, 2=kHz60, 3=kHz120 # 0=kHz15, 1=kHz30, 2=kHz60, 3=kHz120
...@@ -65,23 +67,23 @@ gNBs = ...@@ -65,23 +67,23 @@ gNBs =
#uplinkConfigCommon #uplinkConfigCommon
#frequencyInfoUL #frequencyInfoUL
ul_frequencyBand = 78; ul_frequencyBand = 77;
#scs-SpecificCarrierList #scs-SpecificCarrierList
ul_offstToCarrier = 0; ul_offstToCarrier = 0;
# subcarrierSpacing # subcarrierSpacing
# 0=kHz15, 1=kHz30, 2=kHz60, 3=kHz120 # 0=kHz15, 1=kHz30, 2=kHz60, 3=kHz120
ul_subcarrierSpacing = 1; ul_subcarrierSpacing = 1;
ul_carrierBandwidth = 106; ul_carrierBandwidth = 273;
pMax = 23; pMax = 23;
#initialUplinkBWP #initialUplinkBWP
#genericParameters #genericParameters
initialULBWPlocationAndBandwidth = 28875; initialULBWPlocationAndBandwidth = 1099;
# subcarrierSpacing # subcarrierSpacing
# 0=kHz15, 1=kHz30, 2=kHz60, 3=kHz120 # 0=kHz15, 1=kHz30, 2=kHz60, 3=kHz120
initialULBWPsubcarrierSpacing = 1; initialULBWPsubcarrierSpacing = 1;
#rach-ConfigCommon #rach-ConfigCommon
#rach-ConfigGeneric #rach-ConfigGeneric
prach_ConfigurationIndex = 154; prach_ConfigurationIndex = 151;
#prach_msg1_FDM #prach_msg1_FDM
#0 = one, 1=two, 2=four, 3=eight #0 = one, 1=two, 2=four, 3=eight
prach_msg1_FDM = 0; prach_msg1_FDM = 0;
...@@ -127,7 +129,7 @@ gNBs = ...@@ -127,7 +129,7 @@ gNBs =
hoppingId = 0; hoppingId = 0;
p0_nominal = -96; p0_nominal = -96;
ssb_PositionsInBurst_Bitmap = 0x10001L; ssb_PositionsInBurst_Bitmap = 0x1;
# ssb_periodicityServingCell # ssb_periodicityServingCell
# 0 = ms5, 1=ms10, 2=ms20, 3=ms40, 4=ms80, 5=ms160, 6=spare2, 7=spare1 # 0 = ms5, 1=ms10, 2=ms20, 3=ms40, 4=ms80, 5=ms160, 6=spare2, 7=spare1
...@@ -142,16 +144,20 @@ gNBs = ...@@ -142,16 +144,20 @@ gNBs =
subcarrierSpacing = 1; subcarrierSpacing = 1;
#tdd-UL-DL-ConfigurationCommon #tdd-UL-DL-ConfigurationCommon
# 0=ms0p5, 1=ms0p625, 2=ms1, 3=ms1p25, 4=ms2, 5=ms2p5, 6=ms5, 7=ms10 8=ms3 9=ms4 # subcarrierSpacing
# 0=kHz15, 1=kHz30, 2=kHz60, 3=kHz120
referenceSubcarrierSpacing = 1; referenceSubcarrierSpacing = 1;
dl_UL_TransmissionPeriodicity = 8; # pattern1
nrofDownlinkSlots = 3; # dl_UL_TransmissionPeriodicity
nrofDownlinkSymbols = 6; # 0=ms0p5, 1=ms0p625, 2=ms1, 3=ms1p25, 4=ms2, 5=ms2p5, 6=ms5, 7=ms10
nrofUplinkSlots = 2; dl_UL_TransmissionPeriodicity = 5;
nrofUplinkSymbols = 4; nrofDownlinkSlots = 3;
nrofDownlinkSymbols = 6;
nrofUplinkSlots = 1;
nrofUplinkSymbols = 4;
ssPBCH_BlockPower = 10; ssPBCH_BlockPower = 10;
} }
); );
...@@ -180,14 +186,15 @@ MACRLCs = ( ...@@ -180,14 +186,15 @@ MACRLCs = (
local_n_portd = 2153; local_n_portd = 2153;
remote_n_portc = 501; remote_n_portc = 501;
remote_n_portd = 2153; remote_n_portd = 2153;
pusch_TargetSNRx10 = 230; pusch_TargetSNRx10 = 120;
pucch_TargetSNRx10 = 270; pucch_TargetSNRx10 = 200;
dl_bler_target_upper = .35; dl_bler_target_upper = .35;
dl_bler_target_lower = .15; dl_bler_target_lower = .15;
ul_bler_target_upper = .35; ul_bler_target_upper = .35;
ul_bler_target_lower = .15; ul_bler_target_lower = .15;
pusch_FailureThres = 100; pusch_FailureThres = 100;
ul_max_mcs = 28; ul_max_mcs = 28;
min_grant_prb = 1;
} }
); );
...@@ -211,18 +218,17 @@ RUs = ( ...@@ -211,18 +218,17 @@ RUs = (
local_rf = "no"; local_rf = "no";
nb_tx = 8; nb_tx = 8;
nb_rx = 8; nb_rx = 8;
att_tx = 0 att_tx = 0;
att_rx = 0; att_rx = 0;
bands = [78]; bands = [77];
max_pdschReferenceSignalPower = -27; max_pdschReferenceSignalPower = -27;
max_rxgain = 75; max_rxgain = 75;
sf_extension = 0; sf_extension = 0;
eNB_instances = [0]; eNB_instances = [0];
ru_thread_core = 9; ru_thread_core = 9;
sl_ahead = 10; sl_ahead = 10;
clock_src = "internal";
tr_preference = "raw_if4p5"; # important: activate FHI7.2 tr_preference = "raw_if4p5"; # important: activate FHI7.2
do_precoding = 0; # needs to match O-RU configuration do_precoding = 0; # needs to match O-RU configuration
} }
); );
...@@ -233,21 +239,22 @@ log_config : ...@@ -233,21 +239,22 @@ log_config :
phy_log_level = "info"; phy_log_level = "info";
mac_log_level = "info"; mac_log_level = "info";
rlc_log_level = "info"; rlc_log_level = "info";
pdcp_log_level = "info";
rrc_log_level = "info";
ngap_log_level = "info";
f1ap_log_level = "info"; f1ap_log_level = "info";
}; };
fhi_72 = { fhi_72 = {
dpdk_devices = ("0000:01:01.0", "0000:01:01.1", "0000:01:01.2", "0000:01:01.3"); dpdk_devices = ("0000:01:01.0", "0000:01:01.1", "0000:01:01.2", "0000:01:01.3"); # two VFs can be used as well
system_core = 0; system_core = 0;
io_core = 1; io_core = 1;
worker_cores = (2); worker_cores = (2);
du_addr = ("00:11:22:33:44:66","00:11:22:33:44:67","00:11:22:33:44:68","00:11:22:33:44:69"); ru_addr = ("8c:1f:64:d1:10:46","8c:1f:64:d1:10:46","8c:1f:64:d1:10:43","8c:1f:64:d1:10:43"); # if two VFs, set two RU MAC addresses (one per RU)
ru_addr = ("70:b3:d5:e1:5b:ff","70:b3:d5:e1:5b:ff","70:b3:d5:e1:5b:81", "70:b3:d5:e1:5b:81"); mtu = 9600;
mtu = 9216;
file_prefix = "fhi_72";
fh_config = ( fh_config = (
# RAN650 # RAN650 #1
{ {
Tadv_cp_dl = 125; Tadv_cp_dl = 125;
T2a_cp_dl = (259, 500); T2a_cp_dl = (259, 500);
T2a_cp_ul = (25, 500); T2a_cp_ul = (25, 500);
...@@ -261,11 +268,8 @@ fhi_72 = { ...@@ -261,11 +268,8 @@ fhi_72 = {
iq_width = 9; iq_width = 9;
iq_width_prach = 9; iq_width_prach = 9;
}; };
prach_config = {
eAxC_offset = 4;
};
}, },
# RAN550 # RAN650 #2
{ {
Tadv_cp_dl = 125; Tadv_cp_dl = 125;
T2a_cp_dl = (259, 500); T2a_cp_dl = (259, 500);
...@@ -280,8 +284,5 @@ fhi_72 = { ...@@ -280,8 +284,5 @@ fhi_72 = {
iq_width = 9; iq_width = 9;
iq_width_prach = 9; iq_width_prach = 9;
}; };
prach_config = {
eAxC_offset = 4;
};
}); });
}; };
Active_gNBs = ( "gNB-OAI");
# Asn1_verbosity, choice in: none, info, annoying
Asn1_verbosity = "none";
gNBs =
(
{
////////// Identification parameters:
gNB_ID = 0xe00;
gNB_name = "gNB-OAI";
// Tracking area code, 0x0000 and 0xfffe are reserved values
tracking_area_code = 1;
plmn_list = ({ mcc = 208; mnc = 99; mnc_length = 2; snssaiList = ( { sst = 1; }); });
nr_cellid = 1;
////////// Physical parameters:
pdsch_AntennaPorts_XP = 2;
pdsch_AntennaPorts_N1 = 2;
maxMIMO_layers = 2;
pusch_AntennaPorts = 4;
do_CSIRS = 1;
do_SRS = 0;
sib1_tda = 15;
pdcch_ConfigSIB1 = (
{
controlResourceSetZero = 11;
searchSpaceZero = 0;
}
);
servingCellConfigCommon = (
{
#spCellConfigCommon
physCellId = 0;
# n_TimingAdvanceOffset = 0;
# downlinkConfigCommon
#frequencyInfoDL
# center frequency = 3999.36 MHz
# selected SSB frequency = 3999.36 MHz
absoluteFrequencySSB = 666624;
dl_frequencyBand = 77;
# frequency point A = 3980.28 MHz
dl_absoluteFrequencyPointA = 665352;
#scs-SpecificCarrierList
dl_offstToCarrier = 0;
# subcarrierSpacing
# 0=kHz15, 1=kHz30, 2=kHz60, 3=kHz120
dl_subcarrierSpacing = 1;
dl_carrierBandwidth = 106;
#initialDownlinkBWP
#genericParameters
initialDLBWPlocationAndBandwidth = 28875; #38.101-1 Table 5.3.2-1
#
# subcarrierSpacing
# 0=kHz15, 1=kHz30, 2=kHz60, 3=kHz120
initialDLBWPsubcarrierSpacing = 1;
#pdcch-ConfigCommon
initialDLBWPcontrolResourceSetZero = 11;
initialDLBWPsearchSpaceZero = 0;
#uplinkConfigCommon
#frequencyInfoUL
ul_frequencyBand = 77;
#scs-SpecificCarrierList
ul_offstToCarrier = 0;
# subcarrierSpacing
# 0=kHz15, 1=kHz30, 2=kHz60, 3=kHz120
ul_subcarrierSpacing = 1;
ul_carrierBandwidth = 106;
pMax = 23;
#initialUplinkBWP
#genericParameters
initialULBWPlocationAndBandwidth = 28875;
# subcarrierSpacing
# 0=kHz15, 1=kHz30, 2=kHz60, 3=kHz120
initialULBWPsubcarrierSpacing = 1;
#rach-ConfigCommon
#rach-ConfigGeneric
prach_ConfigurationIndex = 159;
#prach_msg1_FDM
#0 = one, 1=two, 2=four, 3=eight
prach_msg1_FDM = 0;
prach_msg1_FrequencyStart = 0;
zeroCorrelationZoneConfig = 0;
preambleReceivedTargetPower = -100;
#preamblTransMax (0...10) = (3,4,5,6,7,8,10,20,50,100,200)
preambleTransMax = 7;
#powerRampingStep
# 0=dB0,1=dB2,2=dB4,3=dB6
powerRampingStep = 2;
#ra_ReponseWindow
#1,2,4,8,10,20,40,80
ra_ResponseWindow = 5;
#ssb_perRACH_OccasionAndCB_PreamblesPerSSB_PR
#1=oneeighth,2=onefourth,3=half,4=one,5=two,6=four,7=eight,8=sixteen
ssb_perRACH_OccasionAndCB_PreamblesPerSSB_PR = 3;
#oneHalf (0..15) 4,8,12,16,...60,64
ssb_perRACH_OccasionAndCB_PreamblesPerSSB = 15;
#ra_ContentionResolutionTimer
#(0..7) 8,16,24,32,40,48,56,64
ra_ContentionResolutionTimer = 7;
rsrp_ThresholdSSB = 19;
#prach-RootSequenceIndex_PR
#1 = 839, 2 = 139
prach_RootSequenceIndex_PR = 2;
prach_RootSequenceIndex = 1;
# SCS for msg1, can only be 15 for 30 kHz < 6 GHz, takes precendence over the one derived from prach-ConfigIndex
#
msg1_SubcarrierSpacing = 1,
# restrictedSetConfig
# 0=unrestricted, 1=restricted type A, 2=restricted type B
restrictedSetConfig = 0,
# this is the offset between the last PRACH preamble power and the Msg3 PUSCH, 2 times the field value in dB
msg3_DeltaPreamble = 2;
p0_NominalWithGrant = -100;
# pucch-ConfigCommon setup :
# pucchGroupHopping
# 0 = neither, 1= group hopping, 2=sequence hopping
pucchGroupHopping = 0;
hoppingId = 0;
p0_nominal = -96;
ssb_PositionsInBurst_Bitmap = 0x1;
# ssb_periodicityServingCell
# 0 = ms5, 1=ms10, 2=ms20, 3=ms40, 4=ms80, 5=ms160, 6=spare2, 7=spare1
ssb_periodicityServingCell = 2;
# dmrs_TypeA_position
# 0 = pos2, 1 = pos3
dmrs_TypeA_Position = 0;
# subcarrierSpacing
# 0=kHz15, 1=kHz30, 2=kHz60, 3=kHz120
subcarrierSpacing = 1;
#tdd-UL-DL-ConfigurationCommon
# subcarrierSpacing
# 0=kHz15, 1=kHz30, 2=kHz60, 3=kHz120
referenceSubcarrierSpacing = 1;
# pattern1
# dl_UL_TransmissionPeriodicity
# 0=ms0p5, 1=ms0p625, 2=ms1, 3=ms1p25, 4=ms2, 5=ms2p5, 6=ms5, 7=ms10
dl_UL_TransmissionPeriodicity = 5;
nrofDownlinkSlots = 3;
nrofDownlinkSymbols = 6;
nrofUplinkSlots = 1;
nrofUplinkSymbols = 4;
ssPBCH_BlockPower = 0;
}
);
# ------- SCTP definitions
SCTP :
{
# Number of streams to use in input/output
SCTP_INSTREAMS = 2;
SCTP_OUTSTREAMS = 2;
};
////////// AMF parameters:
amf_ip_address = ({ ipv4 = "172.21.6.5"; });
NETWORK_INTERFACES :
{
GNB_IPV4_ADDRESS_FOR_NG_AMF = "172.21.16.51";
GNB_IPV4_ADDRESS_FOR_NGU = "172.21.16.51";
GNB_PORT_FOR_S1U = 2152; # Spec 2152
};
}
);
MACRLCs = (
{
num_cc = 1;
tr_s_preference = "local_L1";
tr_n_preference = "local_RRC";
pusch_TargetSNRx10 = 200;
pucch_TargetSNRx10 = 200;
# dl_bler_target_upper = .35;
# dl_bler_target_lower = .15;
ul_bler_target_upper = .35;
ul_bler_target_lower = .15;
pusch_FailureThres = 100;
}
);
L1s = (
{
num_cc = 1;
tr_n_preference = "local_mac";
prach_dtx_threshold = 110;
pucch0_dtx_threshold = 80;
pusch_dtx_threshold = -100;
# thread_pool_size = 8;
tx_amp_backoff_dB = 3;
L1_rx_thread_core = 8;
L1_tx_thread_core = 10;
phase_compensation = 0; # needs to match O-RU configuration
}
);
RUs = (
{
local_rf = "no";
nb_tx = 4;
nb_rx = 4;
att_tx = 0;
att_rx = 0;
bands = [77];
max_pdschReferenceSignalPower = -27;
max_rxgain = 75;
sf_extension = 0;
eNB_instances = [0];
ru_thread_core = 9;
sl_ahead = 5;
tr_preference = "raw_if4p5"; # important: activate FHI7.2
do_precoding = 0; # needs to match O-RU configuration
}
);
security = {
# preferred ciphering algorithms
# the first one of the list that an UE supports in chosen
# valid values: nea0, nea1, nea2, nea3
ciphering_algorithms = ( "nea0" );
# preferred integrity algorithms
# the first one of the list that an UE supports in chosen
# valid values: nia0, nia1, nia2, nia3
integrity_algorithms = ( "nia2", "nia0" );
# setting 'drb_ciphering' to "no" disables ciphering for DRBs, no matter
# what 'ciphering_algorithms' configures; same thing for 'drb_integrity'
drb_ciphering = "yes";
drb_integrity = "no";
};
log_config :
{
global_log_level = "info";
hw_log_level = "info";
phy_log_level = "info";
mac_log_level = "info";
rlc_log_level = "info";
pdcp_log_level = "info";
rrc_log_level = "info";
ngap_log_level = "info";
f1ap_log_level = "info";
};
fhi_72 = {
dpdk_devices = ("0000:c1:11.0", "0000:c1:11.1"); # one VF can be used as well
system_core = 0;
io_core = 1;
worker_cores = (2);
ru_addr = ("98:ae:71:01:c5:eb", "98:ae:71:01:c5:eb");
mtu = 9600;
fh_config = ({
Tadv_cp_dl = 125;
T2a_cp_dl = (285, 429);
T2a_cp_ul = (285, 429);
T2a_up = (125, 428);
Ta3 = (130, 170);
T1a_cp_dl = (285, 470);
T1a_cp_ul = (285, 429);
T1a_up = (125, 350);
Ta4 = (110, 180);
ru_config = {
iq_width = 9;
iq_width_prach = 9;
};
});
};
Active_gNBs = ( "gNB-OAI");
# Asn1_verbosity, choice in: none, info, annoying
Asn1_verbosity = "none";
gNBs =
(
{
////////// Identification parameters:
gNB_ID = 0xe00;
gNB_name = "gNB-OAI";
// Tracking area code, 0x0000 and 0xfffe are reserved values
tracking_area_code = 1;
plmn_list = ({ mcc = 208; mnc = 99; mnc_length = 2; snssaiList = ( { sst = 1; }); });
nr_cellid = 1;
////////// Physical parameters:
pdsch_AntennaPorts_XP = 2;
pusch_AntennaPorts = 2;
do_CSIRS = 1;
do_SRS = 0;
sib1_tda = 15;
pdcch_ConfigSIB1 = (
{
controlResourceSetZero = 11;
searchSpaceZero = 0;
}
);
servingCellConfigCommon = (
{
#spCellConfigCommon
physCellId = 0;
# n_TimingAdvanceOffset = 0;
# downlinkConfigCommon
#frequencyInfoDL
# center frequency = 3999.36 MHz
# selected SSB frequency = 3999.36 MHz
absoluteFrequencySSB = 666624;
dl_frequencyBand = 77;
# frequency point A = 3950.22 MHz
dl_absoluteFrequencyPointA = 663348;
#scs-SpecificCarrierList
dl_offstToCarrier = 0;
# subcarrierSpacing
# 0=kHz15, 1=kHz30, 2=kHz60, 3=kHz120
dl_subcarrierSpacing = 1;
dl_carrierBandwidth = 273;
#initialDownlinkBWP
#genericParameters
initialDLBWPlocationAndBandwidth = 1099; #38.101-1 Table 5.3.2-1
#
# subcarrierSpacing
# 0=kHz15, 1=kHz30, 2=kHz60, 3=kHz120
initialDLBWPsubcarrierSpacing = 1;
#pdcch-ConfigCommon
initialDLBWPcontrolResourceSetZero = 11;
initialDLBWPsearchSpaceZero = 0;
#uplinkConfigCommon
#frequencyInfoUL
ul_frequencyBand = 77;
#scs-SpecificCarrierList
ul_offstToCarrier = 0;
# subcarrierSpacing
# 0=kHz15, 1=kHz30, 2=kHz60, 3=kHz120
ul_subcarrierSpacing = 1;
ul_carrierBandwidth = 273;
pMax = 23;
#initialUplinkBWP
#genericParameters
initialULBWPlocationAndBandwidth = 1099;
# subcarrierSpacing
# 0=kHz15, 1=kHz30, 2=kHz60, 3=kHz120
initialULBWPsubcarrierSpacing = 1;
#rach-ConfigCommon
#rach-ConfigGeneric
prach_ConfigurationIndex = 159;
#prach_msg1_FDM
#0 = one, 1=two, 2=four, 3=eight
prach_msg1_FDM = 0;
prach_msg1_FrequencyStart = 0;
zeroCorrelationZoneConfig = 0;
preambleReceivedTargetPower = -100;
#preamblTransMax (0...10) = (3,4,5,6,7,8,10,20,50,100,200)
preambleTransMax = 7;
#powerRampingStep
# 0=dB0,1=dB2,2=dB4,3=dB6
powerRampingStep = 2;
#ra_ReponseWindow
#1,2,4,8,10,20,40,80
ra_ResponseWindow = 5;
#ssb_perRACH_OccasionAndCB_PreamblesPerSSB_PR
#1=oneeighth,2=onefourth,3=half,4=one,5=two,6=four,7=eight,8=sixteen
ssb_perRACH_OccasionAndCB_PreamblesPerSSB_PR = 3;
#oneHalf (0..15) 4,8,12,16,...60,64
ssb_perRACH_OccasionAndCB_PreamblesPerSSB = 15;
#ra_ContentionResolutionTimer
#(0..7) 8,16,24,32,40,48,56,64
ra_ContentionResolutionTimer = 7;
rsrp_ThresholdSSB = 19;
#prach-RootSequenceIndex_PR
#1 = 839, 2 = 139
prach_RootSequenceIndex_PR = 2;
prach_RootSequenceIndex = 1;
# SCS for msg1, can only be 15 for 30 kHz < 6 GHz, takes precendence over the one derived from prach-ConfigIndex
#
msg1_SubcarrierSpacing = 1,
# restrictedSetConfig
# 0=unrestricted, 1=restricted type A, 2=restricted type B
restrictedSetConfig = 0,
# this is the offset between the last PRACH preamble power and the Msg3 PUSCH, 2 times the field value in dB
msg3_DeltaPreamble = 2;
p0_NominalWithGrant = -100;
# pucch-ConfigCommon setup :
# pucchGroupHopping
# 0 = neither, 1= group hopping, 2=sequence hopping
pucchGroupHopping = 0;
hoppingId = 0;
p0_nominal = -96;
ssb_PositionsInBurst_Bitmap = 0x1;
# ssb_periodicityServingCell
# 0 = ms5, 1=ms10, 2=ms20, 3=ms40, 4=ms80, 5=ms160, 6=spare2, 7=spare1
ssb_periodicityServingCell = 2;
# dmrs_TypeA_position
# 0 = pos2, 1 = pos3
dmrs_TypeA_Position = 0;
# subcarrierSpacing
# 0=kHz15, 1=kHz30, 2=kHz60, 3=kHz120
subcarrierSpacing = 1;
#tdd-UL-DL-ConfigurationCommon
# subcarrierSpacing
# 0=kHz15, 1=kHz30, 2=kHz60, 3=kHz120
referenceSubcarrierSpacing = 1;
# pattern1
# dl_UL_TransmissionPeriodicity
# 0=ms0p5, 1=ms0p625, 2=ms1, 3=ms1p25, 4=ms2, 5=ms2p5, 6=ms5, 7=ms10
dl_UL_TransmissionPeriodicity = 5;
nrofDownlinkSlots = 3;
nrofDownlinkSymbols = 6;
nrofUplinkSlots = 1;
nrofUplinkSymbols = 4;
ssPBCH_BlockPower = 0;
}
);
# ------- SCTP definitions
SCTP :
{
# Number of streams to use in input/output
SCTP_INSTREAMS = 2;
SCTP_OUTSTREAMS = 2;
};
////////// AMF parameters:
amf_ip_address = ({ ipv4 = "172.21.6.5"; });
NETWORK_INTERFACES :
{
GNB_IPV4_ADDRESS_FOR_NG_AMF = "172.21.16.51";
GNB_IPV4_ADDRESS_FOR_NGU = "172.21.16.51";
GNB_PORT_FOR_S1U = 2152; # Spec 2152
};
}
);
MACRLCs = (
{
num_cc = 1;
tr_s_preference = "local_L1";
tr_n_preference = "local_RRC";
pusch_TargetSNRx10 = 180;
pucch_TargetSNRx10 = 250;
# dl_bler_target_upper = .35;
# dl_bler_target_lower = .15;
ul_bler_target_upper = .35;
ul_bler_target_lower = .15;
pusch_FailureThres = 100;
}
);
L1s = (
{
num_cc = 1;
tr_n_preference = "local_mac";
prach_dtx_threshold = 130
pucch0_dtx_threshold = 80;
pusch_dtx_threshold = -100;
# thread_pool_size = 8;
tx_amp_backoff_dB = 3;
L1_rx_thread_core = 8;
L1_tx_thread_core = 10;
phase_compensation = 0; # needs to match O-RU configuration
}
);
RUs = (
{
local_rf = "no";
nb_tx = 2;
nb_rx = 2;
att_tx = 0;
att_rx = 0;
bands = [77];
max_pdschReferenceSignalPower = -27;
max_rxgain = 75;
sf_extension = 0;
eNB_instances = [0];
ru_thread_core = 9;
sl_ahead = 5;
tr_preference = "raw_if4p5"; # important: activate FHI7.2
do_precoding = 0; # needs to match O-RU configuration
}
);
security = {
# preferred ciphering algorithms
# the first one of the list that an UE supports in chosen
# valid values: nea0, nea1, nea2, nea3
ciphering_algorithms = ( "nea0" );
# preferred integrity algorithms
# the first one of the list that an UE supports in chosen
# valid values: nia0, nia1, nia2, nia3
integrity_algorithms = ( "nia2", "nia0" );
# setting 'drb_ciphering' to "no" disables ciphering for DRBs, no matter
# what 'ciphering_algorithms' configures; same thing for 'drb_integrity'
drb_ciphering = "yes";
drb_integrity = "no";
};
log_config :
{
global_log_level = "info";
hw_log_level = "info";
phy_log_level = "info";
mac_log_level = "info";
rlc_log_level = "info";
pdcp_log_level = "info";
rrc_log_level = "info";
ngap_log_level = "info";
f1ap_log_level = "info";
};
fhi_72 = {
dpdk_devices = ("0000:c1:11.0", "0000:c1:11.1"); # one VF can be used as well
system_core = 0;
io_core = 1;
worker_cores = (2);
ru_addr = ("98:ae:71:01:c5:eb", "98:ae:71:01:c5:eb");
mtu = 9600;
fh_config = ({
Tadv_cp_dl = 125;
T2a_cp_dl = (285, 429);
T2a_cp_ul = (285, 429);
T2a_up = (125, 428);
Ta3 = (130, 170);
T1a_cp_dl = (285, 470);
T1a_cp_ul = (285, 429);
T1a_up = (125, 350);
Ta4 = (110, 180);
ru_config = {
iq_width = 16;
iq_width_prach = 16;
};
});
};
...@@ -13,18 +13,17 @@ gNBs = ...@@ -13,18 +13,17 @@ gNBs =
tracking_area_code = 1; tracking_area_code = 1;
plmn_list = ({ mcc = 208; mnc = 99; mnc_length = 2; snssaiList = ( { sst = 1; }); }); plmn_list = ({ mcc = 208; mnc = 99; mnc_length = 2; snssaiList = ( { sst = 1; }); });
//nr_cellid = 12345678L;
nr_cellid = 1; nr_cellid = 1;
////////// Physical parameters: ////////// Physical parameters:
pdsch_AntennaPorts_XP = 2; pdsch_AntennaPorts_XP = 2;
pdsch_AntennaPorts_N1 = 2; pdsch_AntennaPorts_N1 = 2;
maxMIMO_layers = 2; maxMIMO_layers = 2;
pusch_AntennaPorts = 4; pusch_AntennaPorts = 4;
do_CSIRS = 1; do_CSIRS = 1;
do_SRS = 0 ; do_SRS = 0;
sib1_tda = 15; sib1_tda = 15;
pdcch_ConfigSIB1 = ( pdcch_ConfigSIB1 = (
{ {
...@@ -41,10 +40,11 @@ gNBs = ...@@ -41,10 +40,11 @@ gNBs =
# n_TimingAdvanceOffset = 0; # n_TimingAdvanceOffset = 0;
# downlinkConfigCommon # downlinkConfigCommon
#frequencyInfoDL #frequencyInfoDL
# this is 3450.72 MHz (center frequency) # center frequency = 3999.36 MHz
# selected SSB frequency = 3999.36 MHz
absoluteFrequencySSB = 666624; absoluteFrequencySSB = 666624;
dl_frequencyBand = 77; dl_frequencyBand = 77;
# this is 3401.58 MHz # frequency point A = 3950.22 MHz
dl_absoluteFrequencyPointA = 663348; dl_absoluteFrequencyPointA = 663348;
#scs-SpecificCarrierList #scs-SpecificCarrierList
dl_offstToCarrier = 0; dl_offstToCarrier = 0;
...@@ -157,7 +157,6 @@ gNBs = ...@@ -157,7 +157,6 @@ gNBs =
ssPBCH_BlockPower = 0; ssPBCH_BlockPower = 0;
} }
); );
...@@ -175,8 +174,8 @@ gNBs = ...@@ -175,8 +174,8 @@ gNBs =
NETWORK_INTERFACES : NETWORK_INTERFACES :
{ {
GNB_IPV4_ADDRESS_FOR_NG_AMF = "172.21.16.108/22"; GNB_IPV4_ADDRESS_FOR_NG_AMF = "172.21.16.51";
GNB_IPV4_ADDRESS_FOR_NGU = "172.21.16.108/22"; GNB_IPV4_ADDRESS_FOR_NGU = "172.21.16.51";
GNB_PORT_FOR_S1U = 2152; # Spec 2152 GNB_PORT_FOR_S1U = 2152; # Spec 2152
}; };
} }
...@@ -187,12 +186,12 @@ MACRLCs = ( ...@@ -187,12 +186,12 @@ MACRLCs = (
num_cc = 1; num_cc = 1;
tr_s_preference = "local_L1"; tr_s_preference = "local_L1";
tr_n_preference = "local_RRC"; tr_n_preference = "local_RRC";
pusch_TargetSNRx10 = 300; pusch_TargetSNRx10 = 180;
pucch_TargetSNRx10 = 200; pucch_TargetSNRx10 = 250;
# dl_bler_target_upper=.35; # dl_bler_target_upper = .35;
# dl_bler_target_lower=.15; # dl_bler_target_lower = .15;
ul_bler_target_upper=.35; ul_bler_target_upper = .35;
ul_bler_target_lower=.15; ul_bler_target_lower = .15;
pusch_FailureThres = 100; pusch_FailureThres = 100;
} }
); );
...@@ -204,7 +203,7 @@ L1s = ( ...@@ -204,7 +203,7 @@ L1s = (
prach_dtx_threshold = 130 prach_dtx_threshold = 130
pucch0_dtx_threshold = 80; pucch0_dtx_threshold = 80;
pusch_dtx_threshold = -100; pusch_dtx_threshold = -100;
#thread_pool_size = 8; # thread_pool_size = 8;
tx_amp_backoff_dB = 3; tx_amp_backoff_dB = 3;
L1_rx_thread_core = 8; L1_rx_thread_core = 8;
L1_tx_thread_core = 10; L1_tx_thread_core = 10;
...@@ -217,30 +216,20 @@ RUs = ( ...@@ -217,30 +216,20 @@ RUs = (
local_rf = "no"; local_rf = "no";
nb_tx = 4; nb_tx = 4;
nb_rx = 4; nb_rx = 4;
att_tx = 0 att_tx = 0;
att_rx = 0; att_rx = 0;
bands = [77]; bands = [77];
max_pdschReferenceSignalPower = -27; max_pdschReferenceSignalPower = -27;
max_rxgain = 75; max_rxgain = 75;
sf_extension = 0; sf_extension = 0;
eNB_instances = [0]; eNB_instances = [0];
ru_thread_core = 6; ru_thread_core = 9;
sl_ahead = 5; sl_ahead = 5;
clock_src = "internal";
tr_preference = "raw_if4p5"; # important: activate FHI7.2 tr_preference = "raw_if4p5"; # important: activate FHI7.2
do_precoding = 0; # needs to match O-RU configuration do_precoding = 0; # needs to match O-RU configuration
} }
); );
rfsimulator :
{
serveraddr = "server";
serverport = "4043";
options = (); #("saviq"); or/and "chanmod"
modelname = "AWGN";
IQfile = "/tmp/rfsimulator.iqs";
};
security = { security = {
# preferred ciphering algorithms # preferred ciphering algorithms
# the first one of the list that an UE supports in chosen # the first one of the list that an UE supports in chosen
...@@ -258,7 +247,8 @@ security = { ...@@ -258,7 +247,8 @@ security = {
drb_integrity = "no"; drb_integrity = "no";
}; };
log_config : { log_config :
{
global_log_level = "info"; global_log_level = "info";
hw_log_level = "info"; hw_log_level = "info";
phy_log_level = "info"; phy_log_level = "info";
...@@ -271,29 +261,25 @@ log_config : { ...@@ -271,29 +261,25 @@ log_config : {
}; };
fhi_72 = { fhi_72 = {
dpdk_devices = ("0000:31:06.0", "0000:31:06.1"); dpdk_devices = ("0000:c1:11.0", "0000:c1:11.1"); # one VF can be used as well
system_core = 0; system_core = 0;
io_core = 4; io_core = 1;
worker_cores = (2); worker_cores = (2);
du_addr = ("76:76:64:6e:00:01", "76:76:64:6e:00:01");
ru_addr = ("98:ae:71:01:c5:eb", "98:ae:71:01:c5:eb"); ru_addr = ("98:ae:71:01:c5:eb", "98:ae:71:01:c5:eb");
mtu = 9216; # check if xran uses this properly mtu = 9600;
fh_config = ({ fh_config = ({
Tadv_cp_dl = 125; Tadv_cp_dl = 125;
T2a_cp_dl = (285, 429); # (min, max) T2a_cp_dl = (285, 429);
T2a_cp_ul = (285, 429); # (min, max) T2a_cp_ul = (285, 429);
T2a_up = (125, 428); # (min, max) T2a_up = (125, 428);
Ta3 = (130, 170); # (min, max) Ta3 = (130, 170);
T1a_cp_dl = (285, 470); # (min, max) T1a_cp_dl = (285, 470);
T1a_cp_ul = (285, 429); # (min, max) T1a_cp_ul = (285, 429);
T1a_up = (125, 350); # (min, max) T1a_up = (125, 350);
Ta4 = (110, 180); # (min, max) Ta4 = (110, 180);
ru_config = { ru_config = {
iq_width = 9; iq_width = 9;
iq_width_prach = 9; iq_width_prach = 9;
}; };
prach_config = {
eAxC_offset = 4;
};
}); });
}; };
...@@ -11,20 +11,18 @@ gNBs = ...@@ -11,20 +11,18 @@ gNBs =
// Tracking area code, 0x0000 and 0xfffe are reserved values // Tracking area code, 0x0000 and 0xfffe are reserved values
tracking_area_code = 1; tracking_area_code = 1;
plmn_list = ({ mcc = 208; mnc = 99; mnc_length = 2; snssaiList = ( { sst = 1;}); }); plmn_list = ({ mcc = 208; mnc = 99; mnc_length = 2; snssaiList = ( { sst = 1; }); });
nr_cellid = 1; nr_cellid = 1;
////////// Physical parameters: ////////// Physical parameters:
pdsch_AntennaPorts_XP = 2; pdsch_AntennaPorts_XP = 2;
pdsch_AntennaPorts_N1 = 2; pusch_AntennaPorts = 2;
maxMIMO_layers = 2;
pusch_AntennaPorts = 4;
do_CSIRS = 1; do_CSIRS = 1;
do_SRS = 0 ; do_SRS = 0;
sib1_tda = 15; sib1_tda = 15;
#force_UL256qam_off = 1; # force_UL256qam_off = 1;
pdcch_ConfigSIB1 = ( pdcch_ConfigSIB1 = (
{ {
...@@ -41,11 +39,12 @@ gNBs = ...@@ -41,11 +39,12 @@ gNBs =
# n_TimingAdvanceOffset = 0; # n_TimingAdvanceOffset = 0;
# downlinkConfigCommon # downlinkConfigCommon
#frequencyInfoDL #frequencyInfoDL
# this is 3450.72 MHz (center frequency) # center frequency = 3350.01 MHz
# selected SSB frequency = 3349.92 MHz
absoluteFrequencySSB = 623328; absoluteFrequencySSB = 623328;
dl_frequencyBand = 78; dl_frequencyBand = 78;
# this is 3401.58 MHz # frequency point A = 3300.87 MHz
dl_absoluteFrequencyPointA = 620052; dl_absoluteFrequencyPointA = 620058;
#scs-SpecificCarrierList #scs-SpecificCarrierList
dl_offstToCarrier = 0; dl_offstToCarrier = 0;
# subcarrierSpacing # subcarrierSpacing
...@@ -155,11 +154,11 @@ gNBs = ...@@ -155,11 +154,11 @@ gNBs =
nrofUplinkSlots = 2; nrofUplinkSlots = 2;
nrofUplinkSymbols = 4; nrofUplinkSymbols = 4;
ssPBCH_BlockPower = 10; ssPBCH_BlockPower = 0;
} }
); );
# ------- SCTP definitions # ------- SCTP definitions
SCTP : SCTP :
{ {
...@@ -181,23 +180,22 @@ gNBs = ...@@ -181,23 +180,22 @@ gNBs =
} }
); );
MACRLCs = ( MACRLCs = (
{ {
num_cc = 1; num_cc = 1;
tr_s_preference = "local_L1"; tr_s_preference = "local_L1";
tr_n_preference = "local_RRC"; tr_n_preference = "local_RRC";
pusch_TargetSNRx10 = 230; pusch_TargetSNRx10 = 180;
pucch_TargetSNRx10 = 230; pucch_TargetSNRx10 = 220;
dl_bler_target_upper=.35; dl_bler_target_upper = .35;
dl_bler_target_lower=.15; dl_bler_target_lower = .15;
ul_bler_target_upper=.35; ul_bler_target_upper = .35;
ul_bler_target_lower=.15; ul_bler_target_lower = .15;
pusch_FailureThres = 100; pusch_FailureThres = 1000;
ul_max_mcs = 28;
} }
); );
L1s = ( L1s = (
{ {
num_cc = 1; num_cc = 1;
...@@ -205,10 +203,10 @@ L1s = ( ...@@ -205,10 +203,10 @@ L1s = (
prach_dtx_threshold = 100; prach_dtx_threshold = 100;
pucch0_dtx_threshold = 80; pucch0_dtx_threshold = 80;
pusch_dtx_threshold = 10; pusch_dtx_threshold = 10;
max_ldpc_iterations = 10; max_ldpc_iterations = 15;
tx_amp_backoff_dB = 12; # needs to match O-RU configuration tx_amp_backoff_dB = 12; # needs to match O-RU configuration
L1_rx_thread_core = 8; L1_rx_thread_core = 8;
L1_tx_thread_core = 10; # relevant after merge of l1_tx_thread L1_tx_thread_core = 10;
phase_compensation = 0; # needs to match O-RU configuration phase_compensation = 0; # needs to match O-RU configuration
} }
); );
...@@ -217,8 +215,8 @@ RUs = ( ...@@ -217,8 +215,8 @@ RUs = (
{ {
local_rf = "no"; local_rf = "no";
nb_tx = 4; nb_tx = 4;
nb_rx = 4; nb_rx = 2;
att_tx = 0 att_tx = 0;
att_rx = 0; att_rx = 0;
bands = [78]; bands = [78];
max_pdschReferenceSignalPower = -27; max_pdschReferenceSignalPower = -27;
...@@ -228,7 +226,7 @@ RUs = ( ...@@ -228,7 +226,7 @@ RUs = (
ru_thread_core = 9; ru_thread_core = 9;
sl_ahead = 10; sl_ahead = 10;
tr_preference = "raw_if4p5"; # important: activate FHI7.2 tr_preference = "raw_if4p5"; # important: activate FHI7.2
do_precoding = 0; # needs to match O-RU configuration do_precoding = 0; # needs to match O-RU configuration
} }
); );
...@@ -251,26 +249,24 @@ security = { ...@@ -251,26 +249,24 @@ security = {
log_config : log_config :
{ {
global_log_level ="info"; global_log_level = "info";
hw_log_level ="info"; hw_log_level = "info";
phy_log_level ="info"; phy_log_level = "info";
mac_log_level ="info"; mac_log_level = "info";
rlc_log_level ="info"; rlc_log_level = "info";
pdcp_log_level ="info"; pdcp_log_level = "info";
rrc_log_level ="info"; rrc_log_level = "info";
ngap_log_level ="info"; ngap_log_level = "info";
f1ap_log_level ="info"; f1ap_log_level = "info";
}; };
fhi_72 = { fhi_72 = {
dpdk_devices = ("0000:c1:11.0", "0000:c1:11.1"); dpdk_devices = ("0000:c1:11.0", "0000:c1:11.1"); # one VF can be used as well
system_core = 0; system_core = 0;
io_core = 1; io_core = 1;
worker_cores = (2); worker_cores = (2);
du_addr = ("00:11:22:33:44:66", "00:11:22:33:44:67"); ru_addr = ("70:b3:d5:e1:5b:81", "70:b3:d5:e1:5b:81");
ru_addr = ("70:b3:d5:e1:5b:ff", "70:b3:d5:e1:5b:ff"); mtu = 9600;
mtu = 9216;
file_prefix = "fhi_72";
fh_config = ({ fh_config = ({
Tadv_cp_dl = 125; Tadv_cp_dl = 125;
T2a_cp_dl = (259, 500); T2a_cp_dl = (259, 500);
...@@ -285,8 +281,5 @@ fhi_72 = { ...@@ -285,8 +281,5 @@ fhi_72 = {
iq_width = 9; iq_width = 9;
iq_width_prach = 9; iq_width_prach = 9;
}; };
prach_config = {
eAxC_offset = 4;
};
}); });
}; };
...@@ -11,20 +11,20 @@ gNBs = ...@@ -11,20 +11,20 @@ gNBs =
// Tracking area code, 0x0000 and 0xfffe are reserved values // Tracking area code, 0x0000 and 0xfffe are reserved values
tracking_area_code = 1; tracking_area_code = 1;
plmn_list = ({ mcc = 001; mnc = 01; mnc_length = 2; snssaiList = ( { sst = 1; }); }); plmn_list = ({ mcc = 208; mnc = 99; mnc_length = 2; snssaiList = ( { sst = 1; }); });
nr_cellid = 1; nr_cellid = 1;
////////// Physical parameters: ////////// Physical parameters:
pdsch_AntennaPorts_XP = 2; pdsch_AntennaPorts_XP = 2;
pdsch_AntennaPorts_N1 = 2; pdsch_AntennaPorts_N1 = 2;
maxMIMO_layers = 2; maxMIMO_layers = 2;
pusch_AntennaPorts = 4; pusch_AntennaPorts = 4;
do_CSIRS = 1; do_CSIRS = 1;
do_SRS = 0 ; do_SRS = 0;
sib1_tda = 15; sib1_tda = 15;
# force_UL256qam_off = 1; # force_UL256qam_off = 1;
pdcch_ConfigSIB1 = ( pdcch_ConfigSIB1 = (
{ {
...@@ -41,11 +41,12 @@ gNBs = ...@@ -41,11 +41,12 @@ gNBs =
# n_TimingAdvanceOffset = 0; # n_TimingAdvanceOffset = 0;
# downlinkConfigCommon # downlinkConfigCommon
#frequencyInfoDL #frequencyInfoDL
# this is 3450.72 MHz (center frequency) # center frequency = 3350.01 MHz
# selected SSB frequency = 3349.92 MHz
absoluteFrequencySSB = 623328; absoluteFrequencySSB = 623328;
dl_frequencyBand = 78; dl_frequencyBand = 78;
# this is 3401.58 MHz # frequency point A = 3300.87 MHz
dl_absoluteFrequencyPointA = 620052; dl_absoluteFrequencyPointA = 620058;
#scs-SpecificCarrierList #scs-SpecificCarrierList
dl_offstToCarrier = 0; dl_offstToCarrier = 0;
# subcarrierSpacing # subcarrierSpacing
...@@ -157,7 +158,6 @@ gNBs = ...@@ -157,7 +158,6 @@ gNBs =
ssPBCH_BlockPower = 0; ssPBCH_BlockPower = 0;
} }
); );
...@@ -187,12 +187,12 @@ MACRLCs = ( ...@@ -187,12 +187,12 @@ MACRLCs = (
num_cc = 1; num_cc = 1;
tr_s_preference = "local_L1"; tr_s_preference = "local_L1";
tr_n_preference = "local_RRC"; tr_n_preference = "local_RRC";
pusch_TargetSNRx10 = 230; pusch_TargetSNRx10 = 180;
pucch_TargetSNRx10 = 250; pucch_TargetSNRx10 = 220;
dl_bler_target_upper=.35; dl_bler_target_upper = .35;
dl_bler_target_lower=.15; dl_bler_target_lower = .15;
ul_bler_target_upper=.35; ul_bler_target_upper = .35;
ul_bler_target_lower=.15; ul_bler_target_lower = .15;
pusch_FailureThres = 1000; pusch_FailureThres = 1000;
ul_max_mcs = 28; ul_max_mcs = 28;
} }
...@@ -218,7 +218,7 @@ RUs = ( ...@@ -218,7 +218,7 @@ RUs = (
local_rf = "no"; local_rf = "no";
nb_tx = 4; nb_tx = 4;
nb_rx = 4; nb_rx = 4;
att_tx = 0 att_tx = 0;
att_rx = 0; att_rx = 0;
bands = [78]; bands = [78];
max_pdschReferenceSignalPower = -27; max_pdschReferenceSignalPower = -27;
...@@ -228,7 +228,7 @@ RUs = ( ...@@ -228,7 +228,7 @@ RUs = (
ru_thread_core = 9; ru_thread_core = 9;
sl_ahead = 10; sl_ahead = 10;
tr_preference = "raw_if4p5"; # important: activate FHI7.2 tr_preference = "raw_if4p5"; # important: activate FHI7.2
do_precoding = 0; # needs to match O-RU configuration do_precoding = 0; # needs to match O-RU configuration
} }
); );
...@@ -251,26 +251,24 @@ security = { ...@@ -251,26 +251,24 @@ security = {
log_config : log_config :
{ {
global_log_level ="info"; global_log_level = "info";
hw_log_level ="info"; hw_log_level = "info";
phy_log_level ="info"; phy_log_level = "info";
mac_log_level ="info"; mac_log_level = "info";
rlc_log_level ="info"; rlc_log_level = "info";
pdcp_log_level ="info"; pdcp_log_level = "info";
rrc_log_level ="info"; rrc_log_level = "info";
ngap_log_level ="info"; ngap_log_level = "info";
f1ap_log_level ="info"; f1ap_log_level = "info";
}; };
fhi_72 = { fhi_72 = {
dpdk_devices = ("0000:c1:11.0", "0000:c1:11.1"); dpdk_devices = ("0000:c1:11.0", "0000:c1:11.1"); # one VF can be used as well
system_core = 0; system_core = 0;
io_core = 1; io_core = 1;
worker_cores = (2); worker_cores = (2);
du_addr = ("00:11:22:33:44:66", "00:11:22:33:44:67");
ru_addr = ("70:b3:d5:e1:5b:81", "70:b3:d5:e1:5b:81"); ru_addr = ("70:b3:d5:e1:5b:81", "70:b3:d5:e1:5b:81");
mtu = 9216; mtu = 9600;
file_prefix = "fhi_72";
fh_config = ({ fh_config = ({
Tadv_cp_dl = 125; Tadv_cp_dl = 125;
T2a_cp_dl = (259, 500); T2a_cp_dl = (259, 500);
...@@ -285,8 +283,5 @@ fhi_72 = { ...@@ -285,8 +283,5 @@ fhi_72 = {
iq_width = 9; iq_width = 9;
iq_width_prach = 9; iq_width_prach = 9;
}; };
prach_config = {
eAxC_offset = 4;
};
}); });
}; };
...@@ -17,13 +17,13 @@ gNBs = ...@@ -17,13 +17,13 @@ gNBs =
////////// Physical parameters: ////////// Physical parameters:
pdsch_AntennaPorts_XP = 2; pdsch_AntennaPorts_XP = 2;
pdsch_AntennaPorts_N1 = 2; pdsch_AntennaPorts_N1 = 2;
maxMIMO_layers = 2; maxMIMO_layers = 2;
pusch_AntennaPorts = 4; pusch_AntennaPorts = 4;
do_CSIRS = 1; do_CSIRS = 1;
do_SRS = 0 ; do_SRS = 0;
sib1_tda = 15; sib1_tda = 15;
pdcch_ConfigSIB1 = ( pdcch_ConfigSIB1 = (
{ {
...@@ -40,10 +40,11 @@ gNBs = ...@@ -40,10 +40,11 @@ gNBs =
# n_TimingAdvanceOffset = 0; # n_TimingAdvanceOffset = 0;
# downlinkConfigCommon # downlinkConfigCommon
#frequencyInfoDL #frequencyInfoDL
# this is 3450.72 MHz (center frequency) # center frequency = 3450.72 MHz
# selected SSB frequency = 3450.72 MHz
absoluteFrequencySSB = 630048; absoluteFrequencySSB = 630048;
dl_frequencyBand = 78; dl_frequencyBand = 78;
# this is 3401.58 MHz # frequency point A = 3401.58 MHz
dl_absoluteFrequencyPointA = 626772; dl_absoluteFrequencyPointA = 626772;
#scs-SpecificCarrierList #scs-SpecificCarrierList
dl_offstToCarrier = 0; dl_offstToCarrier = 0;
...@@ -156,7 +157,6 @@ gNBs = ...@@ -156,7 +157,6 @@ gNBs =
ssPBCH_BlockPower = 0; ssPBCH_BlockPower = 0;
} }
); );
...@@ -174,8 +174,8 @@ gNBs = ...@@ -174,8 +174,8 @@ gNBs =
NETWORK_INTERFACES : NETWORK_INTERFACES :
{ {
GNB_IPV4_ADDRESS_FOR_NG_AMF = "172.21.16.108/22"; GNB_IPV4_ADDRESS_FOR_NG_AMF = "172.21.16.51";
GNB_IPV4_ADDRESS_FOR_NGU = "172.21.16.108/22"; GNB_IPV4_ADDRESS_FOR_NGU = "172.21.16.51";
GNB_PORT_FOR_S1U = 2152; # Spec 2152 GNB_PORT_FOR_S1U = 2152; # Spec 2152
}; };
} }
...@@ -186,12 +186,12 @@ MACRLCs = ( ...@@ -186,12 +186,12 @@ MACRLCs = (
num_cc = 1; num_cc = 1;
tr_s_preference = "local_L1"; tr_s_preference = "local_L1";
tr_n_preference = "local_RRC"; tr_n_preference = "local_RRC";
pusch_TargetSNRx10 = 300; pusch_TargetSNRx10 = 200;
pucch_TargetSNRx10 = 200; pucch_TargetSNRx10 = 200;
# dl_bler_target_upper=.35; # dl_bler_target_upper = .35;
# dl_bler_target_lower=.15; # dl_bler_target_lower = .15;
ul_bler_target_upper=.35; ul_bler_target_upper = .35;
ul_bler_target_lower=.15; ul_bler_target_lower = .15;
pusch_FailureThres = 100; pusch_FailureThres = 100;
} }
); );
...@@ -215,18 +215,17 @@ RUs = ( ...@@ -215,18 +215,17 @@ RUs = (
local_rf = "no"; local_rf = "no";
nb_tx = 4; nb_tx = 4;
nb_rx = 4; nb_rx = 4;
att_tx = 0; # TODO relevant? att_tx = 0;
att_rx = 0; # TODO relevant? att_rx = 0;
bands = [78]; bands = [78];
max_pdschReferenceSignalPower = -27; max_pdschReferenceSignalPower = -27;
max_rxgain = 75; # TODO relevant? max_rxgain = 75;
sf_extension = 0; # TODO relevant? sf_extension = 0;
eNB_instances = [0]; # TODO is relevant? eNB_instances = [0];
ru_thread_core = 6; ru_thread_core = 9;
sl_ahead = 5; sl_ahead = 5;
tr_preference = "raw_if4p5"; # important: activate FHI7.2 tr_preference = "raw_if4p5"; # important: activate FHI7.2
do_precoding = 0; # needs to match O-RU configuration do_precoding = 0; # needs to match O-RU configuration
} }
); );
...@@ -249,41 +248,38 @@ security = { ...@@ -249,41 +248,38 @@ security = {
log_config : log_config :
{ {
global_log_level ="info"; global_log_level = "info";
hw_log_level ="info"; hw_log_level = "info";
phy_log_level ="info"; phy_log_level = "info";
mac_log_level ="info"; mac_log_level = "info";
rlc_log_level ="info"; rlc_log_level = "info";
pdcp_log_level ="info"; pdcp_log_level = "info";
rrc_log_level ="info"; rrc_log_level = "info";
ngap_log_level ="info"; ngap_log_level = "info";
f1ap_log_level ="info"; f1ap_log_level = "info";
}; };
fhi_72 = { fhi_72 = {
dpdk_devices = ("0000:31:06.0", "0000:31:06.1"); dpdk_devices = ("0000:c1:11.0", "0000:c1:11.1"); # one VF can be used as well
system_core = 0; system_core = 0;
io_core = 4; io_core = 1;
worker_cores = (2); worker_cores = (2);
du_addr = ("00:11:22:33:44:99", "00:11:22:33:44:99");
ru_addr = ("e8:c7:4f:1e:c7:11", "e8:c7:4f:1e:c7:11"); ru_addr = ("e8:c7:4f:1e:c7:11", "e8:c7:4f:1e:c7:11");
mtu = 1500; # check if xran uses this properly
fh_config = ({ fh_config = ({
Tadv_cp_dl = 125; Tadv_cp_dl = 125;
T2a_cp_dl = (285, 429); # (min, max) T2a_cp_dl = (285, 429);
T2a_cp_ul = (285, 429); # (min, max) T2a_cp_ul = (285, 429);
T2a_up = (125, 428); # (min, max) T2a_up = (125, 428);
Ta3 = (130, 170); # (min, max) Ta3 = (130, 170);
T1a_cp_dl = (285, 429); # (min, max) T1a_cp_dl = (285, 429);
T1a_cp_ul = (285, 429); # (min, max) T1a_cp_ul = (285, 429);
T1a_up = (96, 196); # (min, max) T1a_up = (96, 196);
Ta4 = (110, 180); # (min, max) Ta4 = (110, 180);
ru_config = { ru_config = {
iq_width = 9; iq_width = 8;
iq_width_prach = 9; iq_width_prach = 8;
}; };
prach_config = { prach_config = {
eAxC_offset = 4;
kbar = 0; kbar = 0;
}; };
}); });
......
Active_gNBs = ( "oai-du");
# Asn1_verbosity, choice in: none, info, annoying
Asn1_verbosity = "none";
gNBs =
(
{
////////// Identification parameters:
gNB_ID = 0xe00;
gNB_name = "oai-du";
// Tracking area code, 0x0000 and 0xfffe are reserved values
tracking_area_code = 1;
plmn_list = ({ mcc = 208; mnc = 99; mnc_length = 2; snssaiList = ( { sst = 1; }); });
nr_cellid = 1;
////////// Physical parameters:
pdsch_AntennaPorts_XP = 2;
pusch_AntennaPorts = 4;
pdsch_AntennaPorts_N1 = 2;
maxMIMO_layers = 4;
do_CSIRS = 1;
do_SRS = 0;
force_UL256qam_off = 1;
# sib1_tda = 15;
pdcch_ConfigSIB1 = (
{
controlResourceSetZero = 12;
searchSpaceZero = 0;
}
);
servingCellConfigCommon = (
{
#spCellConfigCommon
physCellId = 0;
# downlinkConfigCommon
#frequencyInfoDL
# center frequency = 3750 MHz
# selected SSB frequency = 3748.8 MHz
absoluteFrequencySSB = 649920;
dl_frequencyBand = 78;
# frequency point A = 3700.86 MHz
dl_absoluteFrequencyPointA = 646724;
#scs-SpecificCarrierList
dl_offstToCarrier = 0;
# subcarrierSpacing
# 0=kHz15, 1=kHz30, 2=kHz60, 3=kHz120
dl_subcarrierSpacing = 1;
dl_carrierBandwidth = 273;
#initialDownlinkBWP
#genericParameters
# this is RBstart=0,L=162 (275*(275-L+1))+(274-RBstart))
initialDLBWPlocationAndBandwidth = 1099;
#
# subcarrierSpacing
# 0=kHz15, 1=kHz30, 2=kHz60, 3=kHz120
initialDLBWPsubcarrierSpacing = 1;
#pdcch-ConfigCommon
initialDLBWPcontrolResourceSetZero = 12;
initialDLBWPsearchSpaceZero = 0;
#uplinkConfigCommon
#frequencyInfoUL
ul_frequencyBand = 78;
#scs-SpecificCarrierList
ul_offstToCarrier = 0;
# subcarrierSpacing
# 0=kHz15, 1=kHz30, 2=kHz60, 3=kHz120
ul_subcarrierSpacing = 1;
ul_carrierBandwidth = 273;
pMax = 20;
#initialUplinkBWP
#genericParameters
initialULBWPlocationAndBandwidth = 1099;
# subcarrierSpacing
# 0=kHz15, 1=kHz30, 2=kHz60, 3=kHz120
initialULBWPsubcarrierSpacing = 1;
#rach-ConfigCommon
#rach-ConfigGeneric
prach_ConfigurationIndex = 151;
#prach_msg1_FDM
#0 = one, 1=two, 2=four, 3=eight
prach_msg1_FDM = 0;
prach_msg1_FrequencyStart = 0;
zeroCorrelationZoneConfig = 12;
preambleReceivedTargetPower = -96;
#preamblTransMax (0...10) = (3,4,5,6,7,8,10,20,50,100,200)
preambleTransMax = 6;
#powerRampingStep
# 0=dB0,1=dB2,2=dB4,3=dB6
powerRampingStep = 1;
#ra_ReponseWindow
#1,2,4,8,10,20,40,80
ra_ResponseWindow = 5;
#ssb_perRACH_OccasionAndCB_PreamblesPerSSB_PR
#1=oneeighth,2=onefourth,3=half,4=one,5=two,6=four,7=eight,8=sixteen
ssb_perRACH_OccasionAndCB_PreamblesPerSSB_PR = 3;
#oneHalf (0..15) 4,8,12,16,...60,64
ssb_perRACH_OccasionAndCB_PreamblesPerSSB = 15;
#ra_ContentionResolutionTimer
#(0..7) 8,16,24,32,40,48,56,64
ra_ContentionResolutionTimer = 7;
rsrp_ThresholdSSB = 19;
#prach-RootSequenceIndex_PR
#1 = 839, 2 = 139
prach_RootSequenceIndex_PR = 2;
prach_RootSequenceIndex = 1;
# SCS for msg1, can only be 15 for 30 kHz < 6 GHz, takes precendence over the one derived from prach-ConfigIndex
#
msg1_SubcarrierSpacing = 1,
# restrictedSetConfig
# 0=unrestricted, 1=restricted type A, 2=restricted type B
restrictedSetConfig = 0,
msg3_DeltaPreamble = 1;
p0_NominalWithGrant = -90;
# pucch-ConfigCommon setup :
# pucchGroupHopping
# 0 = neither, 1= group hopping, 2=sequence hopping
pucchGroupHopping = 0;
hoppingId = 40;
p0_nominal = -90;
# ssb_PositionsInBurs_BitmapPR
# 1=short, 2=medium, 3=long
ssb_PositionsInBurst_PR = 2;
ssb_PositionsInBurst_Bitmap = 1;
# ssb_periodicityServingCell
# 0 = ms5, 1=ms10, 2=ms20, 3=ms40, 4=ms80, 5=ms160, 6=spare2, 7=spare1
ssb_periodicityServingCell = 2;
# dmrs_TypeA_position
# 0 = pos2, 1 = pos3
dmrs_TypeA_Position = 0;
# subcarrierSpacing
# 0=kHz15, 1=kHz30, 2=kHz60, 3=kHz120
subcarrierSpacing = 1;
#tdd-UL-DL-ConfigurationCommon
# subcarrierSpacing
# 0=kHz15, 1=kHz30, 2=kHz60, 3=kHz120
referenceSubcarrierSpacing = 1;
# pattern1
# dl_UL_TransmissionPeriodicity
# 0=ms0p5, 1=ms0p625, 2=ms1, 3=ms1p25, 4=ms2, 5=ms2p5, 6=ms5, 7=ms10
dl_UL_TransmissionPeriodicity = 5; #6;
nrofDownlinkSlots = 3; #7;
nrofDownlinkSymbols = 6;
nrofUplinkSlots = 1; #2;
nrofUplinkSymbols = 4;
ssPBCH_BlockPower = -10;
}
);
# ------- SCTP definitions
SCTP :
{
# Number of streams to use in input/output
SCTP_INSTREAMS = 2;
SCTP_OUTSTREAMS = 2;
};
////////// AMF parameters:
amf_ip_address = ({ ipv4 = "172.21.6.5"; });
NETWORK_INTERFACES :
{
GNB_IPV4_ADDRESS_FOR_NG_AMF = "172.21.16.51";
GNB_IPV4_ADDRESS_FOR_NGU = "172.21.16.51";
GNB_PORT_FOR_S1U = 2152; # Spec 2152
};
}
);
MACRLCs = (
{
num_cc = 1;
tr_s_preference = "local_L1";
tr_n_preference = "local_RRC";
pusch_TargetSNRx10 = 220;
pucch_TargetSNRx10 = 220;
ul_bler_target_upper = .35;
ul_bler_target_lower = .15;
pusch_FailureThres = 100;
ul_max_mcs = 28;
}
);
L1s = (
{
num_cc = 1;
tr_n_preference = "local_mac";
prach_dtx_threshold = 130;
pucch0_dtx_threshold = 80;
pusch_dtx_threshold = 10;
max_ldpc_iterations = 15;
tx_amp_backoff_dB = 12; # needs to match O-RU configuration
L1_rx_thread_core = 8;
L1_tx_thread_core = 10; # relevant after merge of l1_tx_thread
phase_compensation = 0; # needs to match O-RU configuration
}
);
RUs = (
{
local_rf = "no";
nb_tx = 4;
nb_rx = 4;
att_tx = 0;
att_rx = 0;
bands = [78];
max_pdschReferenceSignalPower = -27;
max_rxgain = 75;
sf_extension = 0;
eNB_instances = [0];
ru_thread_core = 9;
sl_ahead = 10;
tr_preference = "raw_if4p5"; # important: activate FHI7.2
do_precoding = 0; # needs to match O-RU configuration
}
);
security = {
# preferred ciphering algorithms
# the first one of the list that an UE supports in chosen
# valid values: nea0, nea1, nea2, nea3
ciphering_algorithms = ( "nea0" );
# preferred integrity algorithms
# the first one of the list that an UE supports in chosen
# valid values: nia0, nia1, nia2, nia3
integrity_algorithms = ( "nia2", "nia0" );
# setting 'drb_ciphering' to "no" disables ciphering for DRBs, no matter
# what 'ciphering_algorithms' configures; same thing for 'drb_integrity'
drb_ciphering = "yes";
drb_integrity = "no";
};
log_config :
{
global_log_level = "info";
hw_log_level = "info";
phy_log_level = "info";
mac_log_level = "info";
rlc_log_level = "info";
pdcp_log_level = "info";
rrc_log_level = "info";
ngap_log_level = "info";
f1ap_log_level = "info";
};
fhi_72 = {
dpdk_devices = ("0000:c1:11.0", "0000:c1:11.1"); # one VF can be used as well
system_core = 0;
io_core = 1;
worker_cores = (2);
ru_addr = ("00:e0:0c:00:ae:06", "00:e0:0c:00:ae:06");
mtu = 9000;
fh_config = ({
Tadv_cp_dl = 125;
T2a_cp_dl = (285, 429);
T2a_cp_ul = (285, 429);
T2a_up = (125, 428);
Ta3 = (130, 170);
T1a_cp_dl = (285, 470);
T1a_cp_ul = (285, 429);
T1a_up = (125, 350);
Ta4 = (110, 180);
ru_config = {
iq_width = 9;
iq_width_prach = 9;
};
});
};
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment