Merge remote-tracking branch 'origin/docker-improvements-august-2021' into integration_2021_w32
This commit is contained in:
@@ -6,10 +6,8 @@ eNBs =
|
|||||||
(
|
(
|
||||||
{
|
{
|
||||||
////////// Identification parameters:
|
////////// Identification parameters:
|
||||||
eNB_ID = 0xe00;
|
eNB_ID = 0xe01;
|
||||||
|
|
||||||
cell_type = "CELL_MACRO_ENB";
|
cell_type = "CELL_MACRO_ENB";
|
||||||
|
|
||||||
eNB_name = "eNB-Eurecom-LTEBox";
|
eNB_name = "eNB-Eurecom-LTEBox";
|
||||||
|
|
||||||
// Tracking area code, 0x0000 and 0xfffe are reserved values
|
// Tracking area code, 0x0000 and 0xfffe are reserved values
|
||||||
@@ -128,24 +126,25 @@ eNBs =
|
|||||||
rxPool_commTxResourceUC-ReqAllowed = "TRUE";
|
rxPool_commTxResourceUC-ReqAllowed = "TRUE";
|
||||||
*/
|
*/
|
||||||
// Parameters for SIB19
|
// Parameters for SIB19
|
||||||
discRxPool_cp_Len = "normal"
|
discRxPool_cp_Len = "normal"
|
||||||
discRxPool_discPeriod = "rf32"
|
discRxPool_discPeriod = "rf32"
|
||||||
discRxPool_numRetx = 1;
|
discRxPool_numRetx = 1;
|
||||||
discRxPool_numRepetition = 2;
|
discRxPool_numRepetition = 2;
|
||||||
discRxPool_ResourceConfig_prb_Num = 5;
|
discRxPool_ResourceConfig_prb_Num = 5;
|
||||||
discRxPool_ResourceConfig_prb_Start = 3;
|
discRxPool_ResourceConfig_prb_Start = 3;
|
||||||
discRxPool_ResourceConfig_prb_End = 21;
|
discRxPool_ResourceConfig_prb_End = 21;
|
||||||
discRxPool_ResourceConfig_offsetIndicator_present = "prSmall";
|
discRxPool_ResourceConfig_offsetIndicator_present = "prSmall";
|
||||||
discRxPool_ResourceConfig_offsetIndicator_choice = 0;
|
discRxPool_ResourceConfig_offsetIndicator_choice = 0;
|
||||||
discRxPool_ResourceConfig_subframeBitmap_present = "prBs40";
|
discRxPool_ResourceConfig_subframeBitmap_present = "prBs40";
|
||||||
discRxPool_ResourceConfig_subframeBitmap_choice_bs_buf = "f0ffffffff";
|
discRxPool_ResourceConfig_subframeBitmap_choice_bs_buf = "f0ffffffff";
|
||||||
discRxPool_ResourceConfig_subframeBitmap_choice_bs_size= 5;
|
discRxPool_ResourceConfig_subframeBitmap_choice_bs_size = 5;
|
||||||
discRxPool_ResourceConfig_subframeBitmap_choice_bs_bits_unused = 0;
|
discRxPool_ResourceConfig_subframeBitmap_choice_bs_bits_unused = 0;
|
||||||
|
|
||||||
|
//SSB central frequency of NR secondary cell group (for ENDC NSA)
|
||||||
|
nr_scg_ssb_freq = 641272;
|
||||||
}
|
}
|
||||||
);
|
);
|
||||||
|
|
||||||
|
|
||||||
srb1_parameters :
|
srb1_parameters :
|
||||||
{
|
{
|
||||||
# timer_poll_retransmit = (ms) [5, 10, 15, 20,... 250, 300, 350, ... 500]
|
# timer_poll_retransmit = (ms) [5, 10, 15, 20,... 250, 300, 350, ... 500]
|
||||||
@@ -175,6 +174,7 @@ eNBs =
|
|||||||
SCTP_OUTSTREAMS = 2;
|
SCTP_OUTSTREAMS = 2;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
enable_measurement_reports = "no";
|
||||||
|
|
||||||
////////// MME parameters:
|
////////// MME parameters:
|
||||||
mme_ip_address = ( { ipv4 = "CI_MME_IP_ADDR";
|
mme_ip_address = ( { ipv4 = "CI_MME_IP_ADDR";
|
||||||
@@ -185,10 +185,8 @@ eNBs =
|
|||||||
}
|
}
|
||||||
);
|
);
|
||||||
|
|
||||||
enable_measurement_reports = "no";
|
|
||||||
|
|
||||||
///X2
|
///X2
|
||||||
enable_x2 = "no";
|
enable_x2 = "no";
|
||||||
t_reloc_prep = 1000; /* unit: millisecond */
|
t_reloc_prep = 1000; /* unit: millisecond */
|
||||||
tx2_reloc_overall = 2000; /* unit: millisecond */
|
tx2_reloc_overall = 2000; /* unit: millisecond */
|
||||||
t_dc_prep = 1000; /* unit: millisecond */
|
t_dc_prep = 1000; /* unit: millisecond */
|
||||||
|
|||||||
@@ -5,110 +5,106 @@ Asn1_verbosity = "none";
|
|||||||
eNBs =
|
eNBs =
|
||||||
(
|
(
|
||||||
{
|
{
|
||||||
# real_time choice in {hard, rt-preempt, no}
|
|
||||||
real_time = "no";
|
|
||||||
////////// Identification parameters:
|
////////// Identification parameters:
|
||||||
eNB_ID = 0xe01;
|
eNB_ID = 0xe01;
|
||||||
cell_type = "CELL_MACRO_ENB";
|
cell_type = "CELL_MACRO_ENB";
|
||||||
eNB_name = "eNB-Eurecom-LTEBox";
|
eNB_name = "eNB-Eurecom-LTEBox";
|
||||||
|
|
||||||
// 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 = (
|
plmn_list = ( { mcc = 222; mnc = 01; mnc_length = 2; } );
|
||||||
{ mcc = 222; mnc = 01; mnc_length = 2; }
|
|
||||||
);
|
|
||||||
|
|
||||||
tr_s_preference = "local_mac"
|
tr_s_preference = "local_mac"
|
||||||
|
|
||||||
|
// In seconds
|
||||||
|
rrc_inactivity_threshold = 0;
|
||||||
|
|
||||||
////////// Physical parameters:
|
////////// Physical parameters:
|
||||||
|
|
||||||
component_carriers = (
|
component_carriers = (
|
||||||
{
|
{
|
||||||
node_function = "eNodeB_3GPP";
|
node_function = "3GPP_eNODEB";
|
||||||
node_timing = "synch_to_ext_device";
|
node_timing = "synch_to_ext_device";
|
||||||
node_synch_ref = 0;
|
node_synch_ref = 0;
|
||||||
nb_antenna_ports = 1;
|
frame_type = "FDD";
|
||||||
ue_TransmissionMode = 1;
|
tdd_config = 3;
|
||||||
frame_type = "FDD";
|
tdd_config_s = 0;
|
||||||
tdd_config = 3;
|
prefix_type = "NORMAL";
|
||||||
tdd_config_s = 0;
|
eutra_band = 7;
|
||||||
prefix_type = "NORMAL";
|
downlink_frequency = 2680000000L;
|
||||||
eutra_band = 7;
|
uplink_frequency_offset = -120000000;
|
||||||
downlink_frequency = 2680000000L;
|
Nid_cell = 0;
|
||||||
uplink_frequency_offset = -120000000;
|
N_RB_DL = 25;
|
||||||
|
Nid_cell_mbsfn = 0;
|
||||||
Nid_cell = 0;
|
nb_antenna_ports = 1;
|
||||||
N_RB_DL = 25;
|
nb_antennas_tx = 1;
|
||||||
Nid_cell_mbsfn = 0;
|
nb_antennas_rx = 1;
|
||||||
nb_antennas_tx = 1;
|
tx_gain = 90;
|
||||||
nb_antennas_rx = 1;
|
rx_gain = 115;
|
||||||
prach_root = 0;
|
pbch_repetition = "FALSE";
|
||||||
tx_gain = 90;
|
prach_root = 0;
|
||||||
rx_gain = 115;
|
prach_config_index = 0;
|
||||||
pbch_repetition = "FALSE";
|
prach_high_speed = "DISABLE";
|
||||||
|
prach_zero_correlation = 1;
|
||||||
prach_config_index = 0;
|
prach_freq_offset = 2;
|
||||||
prach_high_speed = "DISABLE";
|
pucch_delta_shift = 1;
|
||||||
prach_zero_correlation = 1;
|
pucch_nRB_CQI = 0;
|
||||||
prach_freq_offset = 2;
|
pucch_nCS_AN = 0;
|
||||||
|
pucch_n1_AN = 0;
|
||||||
pucch_delta_shift = 1;
|
pdsch_referenceSignalPower= -29;
|
||||||
pucch_nRB_CQI = 0;
|
pdsch_p_b = 0;
|
||||||
pucch_nCS_AN = 0;
|
pusch_n_SB = 1;
|
||||||
pucch_n1_AN = 0;
|
pusch_enable64QAM = "DISABLE";
|
||||||
pdsch_referenceSignalPower = -29;
|
pusch_hoppingMode = "interSubFrame";
|
||||||
pdsch_p_b = 0;
|
pusch_hoppingOffset = 0;
|
||||||
pusch_n_SB = 1;
|
pusch_groupHoppingEnabled = "ENABLE";
|
||||||
pusch_enable64QAM = "DISABLE";
|
pusch_groupAssignment = 0;
|
||||||
pusch_hoppingMode = "interSubFrame";
|
pusch_sequenceHoppingEnabled = "DISABLE";
|
||||||
pusch_hoppingOffset = 0;
|
pusch_nDMRS1 = 1;
|
||||||
pusch_groupHoppingEnabled = "ENABLE";
|
phich_duration = "NORMAL";
|
||||||
pusch_groupAssignment = 0;
|
phich_resource = "ONESIXTH";
|
||||||
pusch_sequenceHoppingEnabled = "DISABLE";
|
srs_enable = "DISABLE";
|
||||||
pusch_nDMRS1 = 1;
|
|
||||||
phich_duration = "NORMAL";
|
|
||||||
phich_resource = "ONESIXTH";
|
|
||||||
srs_enable = "DISABLE";
|
|
||||||
/*
|
/*
|
||||||
srs_BandwidthConfig =;
|
srs_BandwidthConfig =;
|
||||||
srs_SubframeConfig =;
|
srs_SubframeConfig =;
|
||||||
srs_ackNackST =;
|
srs_ackNackST =;
|
||||||
srs_MaxUpPts =;
|
srs_MaxUpPts =;
|
||||||
*/
|
*/
|
||||||
|
|
||||||
pusch_p0_Nominal = -96;
|
pusch_p0_Nominal = -96;
|
||||||
pusch_alpha = "AL1";
|
pusch_alpha = "AL1";
|
||||||
pucch_p0_Nominal = -96;
|
pucch_p0_Nominal = -96;
|
||||||
msg3_delta_Preamble = 6;
|
msg3_delta_Preamble = 6;
|
||||||
pucch_deltaF_Format1 = "deltaF2";
|
pucch_deltaF_Format1 = "deltaF2";
|
||||||
pucch_deltaF_Format1b = "deltaF3";
|
pucch_deltaF_Format1b = "deltaF3";
|
||||||
pucch_deltaF_Format2 = "deltaF0";
|
pucch_deltaF_Format2 = "deltaF0";
|
||||||
pucch_deltaF_Format2a = "deltaF0";
|
pucch_deltaF_Format2a = "deltaF0";
|
||||||
pucch_deltaF_Format2b = "deltaF0";
|
pucch_deltaF_Format2b = "deltaF0";
|
||||||
|
|
||||||
rach_numberOfRA_Preambles = 64;
|
rach_numberOfRA_Preambles = 64;
|
||||||
rach_preamblesGroupAConfig = "DISABLE";
|
rach_preamblesGroupAConfig = "DISABLE";
|
||||||
/*
|
/*
|
||||||
rach_sizeOfRA_PreamblesGroupA = ;
|
rach_sizeOfRA_PreamblesGroupA = ;
|
||||||
rach_messageSizeGroupA = ;
|
rach_messageSizeGroupA = ;
|
||||||
rach_messagePowerOffsetGroupB = ;
|
rach_messagePowerOffsetGroupB = ;
|
||||||
*/
|
*/
|
||||||
rach_powerRampingStep = 4;
|
rach_powerRampingStep = 4;
|
||||||
rach_preambleInitialReceivedTargetPower = -108;
|
rach_preambleInitialReceivedTargetPower = -108;
|
||||||
rach_preambleTransMax = 10;
|
rach_preambleTransMax = 10;
|
||||||
rach_raResponseWindowSize = 10;
|
rach_raResponseWindowSize = 10;
|
||||||
rach_macContentionResolutionTimer = 48;
|
rach_macContentionResolutionTimer = 48;
|
||||||
rach_maxHARQ_Msg3Tx = 4;
|
rach_maxHARQ_Msg3Tx = 4;
|
||||||
|
|
||||||
pcch_default_PagingCycle = 128;
|
pcch_default_PagingCycle = 128;
|
||||||
pcch_nB = "oneT";
|
pcch_nB = "oneT";
|
||||||
bcch_modificationPeriodCoeff = 2;
|
bcch_modificationPeriodCoeff = 2;
|
||||||
ue_TimersAndConstants_t300 = 1000;
|
ue_TimersAndConstants_t300 = 1000;
|
||||||
ue_TimersAndConstants_t301 = 1000;
|
ue_TimersAndConstants_t301 = 1000;
|
||||||
ue_TimersAndConstants_t310 = 1000;
|
ue_TimersAndConstants_t310 = 1000;
|
||||||
ue_TimersAndConstants_t311 = 10000;
|
ue_TimersAndConstants_t311 = 10000;
|
||||||
ue_TimersAndConstants_n310 = 20;
|
ue_TimersAndConstants_n310 = 20;
|
||||||
ue_TimersAndConstants_n311 = 1;
|
ue_TimersAndConstants_n311 = 1;
|
||||||
|
ue_TransmissionMode = 1;
|
||||||
|
|
||||||
//Parameters for SIB18
|
//Parameters for SIB18
|
||||||
rxPool_sc_CP_Len = "normal";
|
rxPool_sc_CP_Len = "normal";
|
||||||
@@ -120,25 +116,25 @@ eNBs =
|
|||||||
rxPool_ResourceConfig_offsetIndicator_present = "prSmall";
|
rxPool_ResourceConfig_offsetIndicator_present = "prSmall";
|
||||||
rxPool_ResourceConfig_offsetIndicator_choice = 0;
|
rxPool_ResourceConfig_offsetIndicator_choice = 0;
|
||||||
rxPool_ResourceConfig_subframeBitmap_present = "prBs40";
|
rxPool_ResourceConfig_subframeBitmap_present = "prBs40";
|
||||||
rxPool_ResourceConfig_subframeBitmap_choice_bs_buf = "00000000000000000000";
|
rxPool_ResourceConfig_subframeBitmap_choice_bs_buf = "00000000000000000000";
|
||||||
rxPool_ResourceConfig_subframeBitmap_choice_bs_size = 5;
|
rxPool_ResourceConfig_subframeBitmap_choice_bs_size = 5;
|
||||||
rxPool_ResourceConfig_subframeBitmap_choice_bs_bits_unused = 0;
|
rxPool_ResourceConfig_subframeBitmap_choice_bs_bits_unused = 0;
|
||||||
/*
|
/*
|
||||||
rxPool_dataHoppingConfig_hoppingParameter = 0;
|
rxPool_dataHoppingConfig_hoppingParameter = 0;
|
||||||
rxPool_dataHoppingConfig_numSubbands = "ns1";
|
rxPool_dataHoppingConfig_numSubbands = "ns1";
|
||||||
rxPool_dataHoppingConfig_rbOffset = 0;
|
rxPool_dataHoppingConfig_rbOffset = 0;
|
||||||
rxPool_commTxResourceUC-ReqAllowed = "TRUE";
|
rxPool_commTxResourceUC-ReqAllowed = "TRUE";
|
||||||
*/
|
*/
|
||||||
// Parameters for SIB19
|
// Parameters for SIB19
|
||||||
discRxPool_cp_Len = "normal"
|
discRxPool_cp_Len = "normal"
|
||||||
discRxPool_discPeriod = "rf32"
|
discRxPool_discPeriod = "rf32"
|
||||||
discRxPool_numRetx = 1;
|
discRxPool_numRetx = 1;
|
||||||
discRxPool_numRepetition = 2;
|
discRxPool_numRepetition = 2;
|
||||||
discRxPool_ResourceConfig_prb_Num = 5;
|
discRxPool_ResourceConfig_prb_Num = 5;
|
||||||
discRxPool_ResourceConfig_prb_Start = 3;
|
discRxPool_ResourceConfig_prb_Start = 3;
|
||||||
discRxPool_ResourceConfig_prb_End = 21;
|
discRxPool_ResourceConfig_prb_End = 21;
|
||||||
discRxPool_ResourceConfig_offsetIndicator_present = "prSmall";
|
discRxPool_ResourceConfig_offsetIndicator_present = "prSmall";
|
||||||
discRxPool_ResourceConfig_offsetIndicator_choice = 0;
|
discRxPool_ResourceConfig_offsetIndicator_choice = 0;
|
||||||
discRxPool_ResourceConfig_subframeBitmap_present = "prBs40";
|
discRxPool_ResourceConfig_subframeBitmap_present = "prBs40";
|
||||||
discRxPool_ResourceConfig_subframeBitmap_choice_bs_buf = "f0ffffffff";
|
discRxPool_ResourceConfig_subframeBitmap_choice_bs_buf = "f0ffffffff";
|
||||||
discRxPool_ResourceConfig_subframeBitmap_choice_bs_size = 5;
|
discRxPool_ResourceConfig_subframeBitmap_choice_bs_size = 5;
|
||||||
@@ -190,7 +186,7 @@ eNBs =
|
|||||||
);
|
);
|
||||||
|
|
||||||
///X2
|
///X2
|
||||||
enable_x2 = "yes";
|
enable_x2 = "yes";
|
||||||
t_reloc_prep = 1000; /* unit: millisecond */
|
t_reloc_prep = 1000; /* unit: millisecond */
|
||||||
tx2_reloc_overall = 2000; /* unit: millisecond */
|
tx2_reloc_overall = 2000; /* unit: millisecond */
|
||||||
t_dc_prep = 1000; /* unit: millisecond */
|
t_dc_prep = 1000; /* unit: millisecond */
|
||||||
@@ -198,39 +194,19 @@ eNBs =
|
|||||||
|
|
||||||
NETWORK_INTERFACES :
|
NETWORK_INTERFACES :
|
||||||
{
|
{
|
||||||
ENB_INTERFACE_NAME_FOR_S1_MME = "eth1";
|
ENB_INTERFACE_NAME_FOR_S1_MME = "eth0";
|
||||||
ENB_IPV4_ADDRESS_FOR_S1_MME = "CI_ENB_IP_ADDR";
|
ENB_IPV4_ADDRESS_FOR_S1_MME = "CI_ENB_IP_ADDR";
|
||||||
|
ENB_INTERFACE_NAME_FOR_S1U = "eth0";
|
||||||
ENB_INTERFACE_NAME_FOR_S1U = "eth1";
|
|
||||||
ENB_IPV4_ADDRESS_FOR_S1U = "CI_ENB_IP_ADDR";
|
ENB_IPV4_ADDRESS_FOR_S1U = "CI_ENB_IP_ADDR";
|
||||||
ENB_PORT_FOR_S1U = 2152; # Spec 2152
|
ENB_PORT_FOR_S1U = 2152; # Spec 2152
|
||||||
|
|
||||||
ENB_IPV4_ADDRESS_FOR_X2C = "CI_ENB_IP_ADDR";
|
ENB_IPV4_ADDRESS_FOR_X2C = "CI_ENB_IP_ADDR";
|
||||||
ENB_PORT_FOR_X2C = 36422; # Spec 36422
|
ENB_PORT_FOR_X2C = 36422; # Spec 36422
|
||||||
};
|
};
|
||||||
|
|
||||||
log_config :
|
|
||||||
{
|
|
||||||
global_log_level ="info";
|
|
||||||
global_log_verbosity ="high";
|
|
||||||
hw_log_level ="info";
|
|
||||||
hw_log_verbosity ="medium";
|
|
||||||
phy_log_level ="info";
|
|
||||||
phy_log_verbosity ="medium";
|
|
||||||
mac_log_level ="info";
|
|
||||||
mac_log_verbosity ="high";
|
|
||||||
rlc_log_level ="debug";
|
|
||||||
rlc_log_verbosity ="high";
|
|
||||||
pdcp_log_level ="info";
|
|
||||||
pdcp_log_verbosity ="high";
|
|
||||||
rrc_log_level ="info";
|
|
||||||
rrc_log_verbosity ="medium";
|
|
||||||
};
|
|
||||||
|
|
||||||
}
|
}
|
||||||
);
|
);
|
||||||
|
|
||||||
MACRLCs = (
|
MACRLCs =
|
||||||
|
(
|
||||||
{
|
{
|
||||||
num_cc = 1;
|
num_cc = 1;
|
||||||
tr_s_preference = "local_L1";
|
tr_s_preference = "local_L1";
|
||||||
@@ -238,37 +214,52 @@ MACRLCs = (
|
|||||||
phy_test_mode = 0;
|
phy_test_mode = 0;
|
||||||
puSch10xSnr = 160;
|
puSch10xSnr = 160;
|
||||||
puCch10xSnr = 160;
|
puCch10xSnr = 160;
|
||||||
}
|
|
||||||
);
|
|
||||||
|
|
||||||
THREAD_STRUCT = (
|
|
||||||
{
|
|
||||||
parallel_config = "PARALLEL_RU_L1_TRX_SPLIT";
|
|
||||||
worker_config = "WORKER_ENABLE";
|
|
||||||
}
|
}
|
||||||
);
|
);
|
||||||
|
|
||||||
L1s = (
|
L1s =
|
||||||
|
(
|
||||||
{
|
{
|
||||||
num_cc = 1;
|
num_cc = 1;
|
||||||
tr_n_preference = "local_mac";
|
tr_n_preference = "local_mac";
|
||||||
}
|
}
|
||||||
);
|
);
|
||||||
|
|
||||||
RUs = (
|
RUs =
|
||||||
{
|
(
|
||||||
local_rf = "yes"
|
{
|
||||||
nb_tx = 1
|
local_rf = "yes"
|
||||||
nb_rx = 1
|
nb_tx = 1
|
||||||
att_tx = 3
|
nb_rx = 1
|
||||||
att_rx = 0;
|
att_tx = 3
|
||||||
bands = [7];
|
att_rx = 0;
|
||||||
|
bands = [7];
|
||||||
max_pdschReferenceSignalPower = -27;
|
max_pdschReferenceSignalPower = -27;
|
||||||
max_rxgain = 115;
|
max_rxgain = 115;
|
||||||
eNB_instances = [0];
|
eNB_instances = [0];
|
||||||
# clock_src = "external";
|
# clock_src = "external";
|
||||||
}
|
}
|
||||||
);
|
);
|
||||||
|
|
||||||
|
THREAD_STRUCT =
|
||||||
|
(
|
||||||
|
{
|
||||||
|
#three config for level of parallelism "PARALLEL_SINGLE_THREAD", "PARALLEL_RU_L1_SPLIT", or "PARALLEL_RU_L1_TRX_SPLIT"
|
||||||
|
parallel_config = "PARALLEL_RU_L1_TRX_SPLIT";
|
||||||
|
#two option for worker "WORKER_DISABLE" or "WORKER_ENABLE"
|
||||||
|
worker_config = "WORKER_ENABLE";
|
||||||
|
}
|
||||||
|
);
|
||||||
|
|
||||||
|
NETWORK_CONTROLLER :
|
||||||
|
{
|
||||||
|
FLEXRAN_ENABLED = "no";
|
||||||
|
FLEXRAN_INTERFACE_NAME = "eth0";
|
||||||
|
FLEXRAN_IPV4_ADDRESS = "CI_FLEXRAN_CTL_IP_ADDR";
|
||||||
|
FLEXRAN_PORT = 2210;
|
||||||
|
FLEXRAN_CACHE = "/mnt/oai_agent_cache";
|
||||||
|
FLEXRAN_AWAIT_RECONF = "no";
|
||||||
|
};
|
||||||
|
|
||||||
log_config :
|
log_config :
|
||||||
{
|
{
|
||||||
@@ -286,4 +277,5 @@ log_config :
|
|||||||
pdcp_log_verbosity ="high";
|
pdcp_log_verbosity ="high";
|
||||||
rrc_log_level ="info";
|
rrc_log_level ="info";
|
||||||
rrc_log_verbosity ="medium";
|
rrc_log_verbosity ="medium";
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|||||||
@@ -8,7 +8,6 @@ gNBs =
|
|||||||
{
|
{
|
||||||
////////// Identification parameters:
|
////////// Identification parameters:
|
||||||
gNB_ID = 0xe00;
|
gNB_ID = 0xe00;
|
||||||
|
|
||||||
cell_type = "CELL_MACRO_GNB";
|
cell_type = "CELL_MACRO_GNB";
|
||||||
gNB_name = "gNB-Eurecom-5GNRBox";
|
gNB_name = "gNB-Eurecom-5GNRBox";
|
||||||
|
|
||||||
@@ -185,102 +184,101 @@ gNBs =
|
|||||||
|
|
||||||
|
|
||||||
////////// MME parameters:
|
////////// MME parameters:
|
||||||
mme_ip_address = ( { ipv4 = "CI_MME_IP_ADDR";
|
# mme_ip_address = ( { ipv4 = "CI_MME_IP_ADDR";
|
||||||
ipv6 = "192:168:30::17";
|
# ipv6 = "192:168:30::17";
|
||||||
port = 36412 ;
|
# port = 36412 ;
|
||||||
active = "yes";
|
# active = "yes";
|
||||||
preference = "ipv4";
|
# preference = "ipv4";
|
||||||
}
|
# }
|
||||||
);
|
# );
|
||||||
|
|
||||||
///X2
|
///X2
|
||||||
enable_x2 = "yes";
|
enable_x2 = "yes";
|
||||||
t_reloc_prep = 1000; /* unit: millisecond */
|
t_reloc_prep = 1000; /* unit: millisecond */
|
||||||
tx2_reloc_overall = 2000; /* unit: millisecond */
|
tx2_reloc_overall = 2000; /* unit: millisecond */
|
||||||
t_dc_prep = 1000; /* unit: millisecond */
|
t_dc_prep = 1000; /* unit: millisecond */
|
||||||
t_dc_overall = 2000; /* unit: millisecond */
|
t_dc_overall = 2000; /* unit: millisecond */
|
||||||
target_enb_x2_ip_address = (
|
|
||||||
{ ipv4 = "CI_FR1_CTL_ENB_IP_ADDR";
|
target_enb_x2_ip_address = ( { ipv4 = "CI_FR1_CTL_ENB_IP_ADDR";
|
||||||
ipv6 = "192:168:30::17";
|
ipv6 = "192:168:30::17";
|
||||||
preference = "ipv4";
|
preference = "ipv4";
|
||||||
}
|
}
|
||||||
);
|
);
|
||||||
|
|
||||||
NETWORK_INTERFACES :
|
NETWORK_INTERFACES :
|
||||||
{
|
{
|
||||||
|
GNB_INTERFACE_NAME_FOR_S1_MME = "eth0";
|
||||||
GNB_INTERFACE_NAME_FOR_S1_MME = "eth0";
|
GNB_IPV4_ADDRESS_FOR_S1_MME = "CI_GNB_IP_ADDR";
|
||||||
GNB_IPV4_ADDRESS_FOR_S1_MME = "CI_GNB_IP_ADDR";
|
GNB_INTERFACE_NAME_FOR_S1U = "eth0";
|
||||||
GNB_INTERFACE_NAME_FOR_S1U = "eth0";
|
GNB_IPV4_ADDRESS_FOR_S1U = "CI_GNB_IP_ADDR";
|
||||||
GNB_IPV4_ADDRESS_FOR_S1U = "CI_GNB_IP_ADDR";
|
GNB_PORT_FOR_S1U = 2152; # Spec 2152
|
||||||
GNB_PORT_FOR_S1U = 2152; # Spec 2152
|
GNB_IPV4_ADDRESS_FOR_X2C = "CI_GNB_IP_ADDR";
|
||||||
GNB_IPV4_ADDRESS_FOR_X2C = "CI_GNB_IP_ADDR";
|
GNB_PORT_FOR_X2C = 36422; # Spec 36422
|
||||||
GNB_PORT_FOR_X2C = 36422; # Spec 36422
|
|
||||||
};
|
};
|
||||||
|
|
||||||
}
|
}
|
||||||
);
|
);
|
||||||
|
|
||||||
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 = 200;
|
pusch_TargetSNRx10 = 200;
|
||||||
pucch_TargetSNRx10 = 200;
|
pucch_TargetSNRx10 = 200;
|
||||||
}
|
}
|
||||||
);
|
);
|
||||||
|
|
||||||
L1s = (
|
L1s = (
|
||||||
{
|
{
|
||||||
num_cc = 1;
|
num_cc = 1;
|
||||||
tr_n_preference = "local_mac";
|
tr_n_preference = "local_mac";
|
||||||
pusch_proc_threads = 6;
|
pusch_proc_threads = 6;
|
||||||
}
|
}
|
||||||
);
|
);
|
||||||
|
|
||||||
RUs = (
|
RUs = (
|
||||||
{
|
{
|
||||||
local_rf = "yes"
|
local_rf = "yes"
|
||||||
nb_tx = 1
|
nb_tx = 1
|
||||||
nb_rx = 1
|
nb_rx = 1
|
||||||
att_tx = 3
|
att_tx = 3
|
||||||
att_rx = 0;
|
att_rx = 0;
|
||||||
bands = [7];
|
bands = [7];
|
||||||
max_pdschReferenceSignalPower = -27;
|
max_pdschReferenceSignalPower = -27;
|
||||||
max_rxgain = 111;
|
max_rxgain = 111;
|
||||||
eNB_instances = [0];
|
eNB_instances = [0];
|
||||||
# clock_src = "external";
|
# clock_src = "external";
|
||||||
}
|
}
|
||||||
);
|
);
|
||||||
|
|
||||||
THREAD_STRUCT = (
|
THREAD_STRUCT = (
|
||||||
{
|
{
|
||||||
#three config for level of parallelism "PARALLEL_SINGLE_THREAD", "PARALLEL_RU_L1_SPLIT", or "PARALLEL_RU_L1_TRX_SPLIT"
|
#three config for level of parallelism "PARALLEL_SINGLE_THREAD", "PARALLEL_RU_L1_SPLIT", or "PARALLEL_RU_L1_TRX_SPLIT"
|
||||||
parallel_config = "PARALLEL_RU_L1_TRX_SPLIT";
|
parallel_config = "PARALLEL_RU_L1_TRX_SPLIT";
|
||||||
//parallel_config = "PARALLEL_SINGLE_THREAD";
|
|
||||||
#two option for worker "WORKER_DISABLE" or "WORKER_ENABLE"
|
#two option for worker "WORKER_DISABLE" or "WORKER_ENABLE"
|
||||||
worker_config = "WORKER_ENABLE";
|
worker_config = "WORKER_ENABLE";
|
||||||
}
|
}
|
||||||
);
|
);
|
||||||
|
|
||||||
log_config :
|
log_config :
|
||||||
{
|
{
|
||||||
global_log_level ="info";
|
global_log_level ="info";
|
||||||
global_log_verbosity ="medium";
|
global_log_verbosity ="medium";
|
||||||
hw_log_level ="info";
|
hw_log_level ="info";
|
||||||
hw_log_verbosity ="medium";
|
hw_log_verbosity ="medium";
|
||||||
phy_log_level ="info";
|
phy_log_level ="info";
|
||||||
phy_log_verbosity ="medium";
|
phy_log_verbosity ="medium";
|
||||||
mac_log_level ="info";
|
mac_log_level ="info";
|
||||||
mac_log_verbosity ="high";
|
mac_log_verbosity ="high";
|
||||||
rlc_log_level ="info";
|
rlc_log_level ="info";
|
||||||
rlc_log_verbosity ="medium";
|
rlc_log_verbosity ="medium";
|
||||||
pdcp_log_level ="info";
|
pdcp_log_level ="info";
|
||||||
pdcp_log_verbosity ="medium";
|
pdcp_log_verbosity ="medium";
|
||||||
rrc_log_level ="info";
|
rrc_log_level ="info";
|
||||||
rrc_log_verbosity ="medium";
|
rrc_log_verbosity ="medium";
|
||||||
};
|
};
|
||||||
|
|
||||||
uicc: {
|
uicc: {
|
||||||
opc = "testopc";
|
opc = "testopc";
|
||||||
};
|
};
|
||||||
|
|||||||
@@ -0,0 +1,501 @@
|
|||||||
|
<table style="border-collapse: collapse; border: none;">
|
||||||
|
<tr style="border-collapse: collapse; border: none;">
|
||||||
|
<td style="border-collapse: collapse; border: none;">
|
||||||
|
<a href="http://www.openairinterface.org/">
|
||||||
|
<img src="../../../doc/images/oai_final_logo.png" alt="" border=3 height=50 width=150>
|
||||||
|
</img>
|
||||||
|
</a>
|
||||||
|
</td>
|
||||||
|
<td style="border-collapse: collapse; border: none; vertical-align: center;">
|
||||||
|
<b><font size = "5">OAI Full Stack RF simulation with containers</font></b>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
</table>
|
||||||
|
|
||||||
|
This page is only valid for an `Ubuntu18` host.
|
||||||
|
|
||||||
|
**TABLE OF CONTENTS**
|
||||||
|
|
||||||
|
1. [Retrieving the images on Docker-Hub](#1-retrieving-the-images-on-docker-hub)
|
||||||
|
2. [Deploy containers](#2-deploy-containers)
|
||||||
|
1. [Deploy and Configure Cassandra Database](#21-deploy-and-configure-cassandra-database)
|
||||||
|
2. [Deploy OAI CN4G containers](#22-deploy-oai-cn4g-containers)
|
||||||
|
3. [Deploy OAI eNB in RF simulator mode](#23-deploy-oai-enb-in-rf-simulator-mode)
|
||||||
|
4. [Deploy OAI LTE UE in RF simulator mode](#24-deploy-oai-lte-ue-in-rf-simulator-mode)
|
||||||
|
3. [Check traffic](#3-check-traffic)
|
||||||
|
4. [Un-deployment](#4-un-deployment)
|
||||||
|
5. [Explanation on the configuration](#5-explanation-on-the-configuration)
|
||||||
|
1. [UE IMSI and Keys](#51-ue-imsi-and-keys)
|
||||||
|
2. [PLMN and TAI](#52-plmn-and-tai)
|
||||||
|
3. [Access to Internet](#53-access-to-internet)
|
||||||
|
|
||||||
|
# 1. Retrieving the images on Docker-Hub #
|
||||||
|
|
||||||
|
Currently the images are hosted under the user account `rdefosseoai`.
|
||||||
|
|
||||||
|
This may change in the future.
|
||||||
|
|
||||||
|
Once again you may need to log on [docker-hub](https://hub.docker.com/) if your organization has reached pulling limit as `anonymous`.
|
||||||
|
|
||||||
|
```bash
|
||||||
|
$ docker login
|
||||||
|
Login with your Docker ID to push and pull images from Docker Hub. If you don't have a Docker ID, head over to https://hub.docker.com to create one.
|
||||||
|
Username:
|
||||||
|
Password:
|
||||||
|
```
|
||||||
|
|
||||||
|
Now pull images.
|
||||||
|
|
||||||
|
```bash
|
||||||
|
$ docker pull cassandra:2.1
|
||||||
|
$ docker pull rdefosseoai/oai-hss:latest
|
||||||
|
$ docker pull rdefosseoai/oai-mme:latest
|
||||||
|
$ docker pull rdefosseoai/oai-spgwc:latest
|
||||||
|
$ docker pull rdefosseoai/oai-spgwu-tiny:latest
|
||||||
|
|
||||||
|
$ docker pull rdefosseoai/oai-enb:develop
|
||||||
|
$ docker pull rdefosseoai/oai-lte-ue:develop
|
||||||
|
```
|
||||||
|
|
||||||
|
And **re-tag** them for tutorials' docker-compose file to work.
|
||||||
|
|
||||||
|
```bash
|
||||||
|
$ docker image tag rdefosseoai/oai-spgwc:latest oai-spgwc:latest
|
||||||
|
$ docker image tag rdefosseoai/oai-hss:latest oai-hss:latest
|
||||||
|
$ docker image tag rdefosseoai/oai-spgwu-tiny:latest oai-spgwu-tiny:latest
|
||||||
|
$ docker image tag rdefosseoai/oai-mme:latest oai-mme:latest
|
||||||
|
|
||||||
|
$ docker image tag rdefosseoai/oai-enb:develop oai-enb:develop
|
||||||
|
$ docker image tag rdefosseoai/oai-lte-ue:develop oai-lte-ue:develop
|
||||||
|
```
|
||||||
|
|
||||||
|
```bash
|
||||||
|
$ docker logout
|
||||||
|
```
|
||||||
|
|
||||||
|
How to build the Traffic-Generator image is explained [here](https://github.com/OPENAIRINTERFACE/openair-epc-fed/blob/master/docs/GENERATE_TRAFFIC.md#1-build-a-traffic-generator-image).
|
||||||
|
|
||||||
|
# 2. Deploy containers #
|
||||||
|
|
||||||
|
**CAUTION: this SHALL be done in multiple steps.**
|
||||||
|
|
||||||
|
**Just `docker-compose up -d` WILL NOT WORK!**
|
||||||
|
|
||||||
|
## 2.1. Deploy and Configure Cassandra Database ##
|
||||||
|
|
||||||
|
It is very crutial that the Cassandra DB is fully configured before you do anything else!
|
||||||
|
|
||||||
|
```bash
|
||||||
|
$ docker-compose up -d db_init
|
||||||
|
Creating network "rfsim4g-oai-private-net" with the default driver
|
||||||
|
Creating network "rfsim4g-oai-public-net" with the default driver
|
||||||
|
Creating rfsim4g-cassandra ... done
|
||||||
|
Creating rfsim4g-db-init ... done
|
||||||
|
|
||||||
|
$ docker logs rfsim4g-db-init --follow
|
||||||
|
Connection error: ('Unable to connect to any servers', {'192.168.68.2': error(111, "Tried connecting to [('192.168.68.2', 9042)]. Last error: Connection refused")})
|
||||||
|
...
|
||||||
|
Connection error: ('Unable to connect to any servers', {'192.168.68.2': error(111, "Tried connecting to [('192.168.68.2', 9042)]. Last error: Connection refused")})
|
||||||
|
OK
|
||||||
|
```
|
||||||
|
|
||||||
|
**You SHALL wait until you HAVE the `OK` message in the logs!**
|
||||||
|
|
||||||
|
```bash
|
||||||
|
$ docker rm rfsim4g-db-init
|
||||||
|
```
|
||||||
|
|
||||||
|
At this point, you can prepare a capture on the newly-created public docker bridge:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
$ ifconfig rfsim4g-public
|
||||||
|
inet 192.168.61.1 netmask 255.255.255.192 broadcast 192.168.61.63
|
||||||
|
ether 02:42:8f:dd:ba:5a txqueuelen 0 (Ethernet)
|
||||||
|
RX packets 0 bytes 0 (0.0 B)
|
||||||
|
RX errors 0 dropped 0 overruns 0 frame 0
|
||||||
|
TX packets 0 bytes 0 (0.0 B)
|
||||||
|
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
|
||||||
|
$ sudo tshark -i rfsim4g-public -f 'port 3868 or port 2123 or port 36412 or port 36422 or port 46520 or port 8805' -w /tmp/my-oai-control-plane.pcap
|
||||||
|
```
|
||||||
|
|
||||||
|
**BE CAREFUL: please use that filter or you will also capture the data-plane with IQ samples between `eNB` and `LTE-UE`.**
|
||||||
|
|
||||||
|
**and your capture WILL become huge (10s of Gbytes).**
|
||||||
|
|
||||||
|
## 2.2. Deploy OAI CN4G containers ##
|
||||||
|
|
||||||
|
```bash
|
||||||
|
$ docker-compose up -d oai_mme oai_spgwu trf_gen
|
||||||
|
rfsim4g-cassandra is up-to-date
|
||||||
|
Creating rfsim4g-trf-gen ... done
|
||||||
|
Creating rfsim4g-oai-hss ... done
|
||||||
|
Creating rfsim4g-oai-mme ... done
|
||||||
|
Creating rfsim4g-oai-spgwc ... done
|
||||||
|
Creating rfsim4g-oai-spgwu-tiny ... done
|
||||||
|
```
|
||||||
|
|
||||||
|
You shall wait until all containers are `healthy`. About 10 seconds!
|
||||||
|
|
||||||
|
```bash
|
||||||
|
$ docker-compose ps -a
|
||||||
|
Name Command State Ports
|
||||||
|
-------------------------------------------------------------------------------------------------------------------------
|
||||||
|
rfsim4g-cassandra docker-entrypoint.sh cassa ... Up (healthy) 7000/tcp, 7001/tcp, 7199/tcp, 9042/tcp, 9160/tcp
|
||||||
|
rfsim4g-oai-hss /openair-hss/bin/entrypoin ... Up (healthy) 5868/tcp, 9042/tcp, 9080/tcp, 9081/tcp
|
||||||
|
rfsim4g-oai-mme /openair-mme/bin/entrypoin ... Up (healthy) 2123/udp, 3870/tcp, 5870/tcp
|
||||||
|
rfsim4g-oai-spgwc /openair-spgwc/bin/entrypo ... Up (healthy) 2123/udp, 8805/udp
|
||||||
|
rfsim4g-oai-spgwu-tiny /openair-spgwu-tiny/bin/en ... Up (healthy) 2152/udp, 8805/udp
|
||||||
|
rfsim4g-trf-gen /bin/bash -c ip route add ... Up (healthy)
|
||||||
|
```
|
||||||
|
|
||||||
|
## 2.3. Deploy OAI eNB in RF simulator mode ##
|
||||||
|
|
||||||
|
```bash
|
||||||
|
$ docker-compose up -d enb
|
||||||
|
Creating rfsim4g-oai-enb ... done
|
||||||
|
```
|
||||||
|
|
||||||
|
Again wait for the healthy state:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
$ docker-compose ps -a
|
||||||
|
Name Command State Ports
|
||||||
|
-------------------------------------------------------------------------------------------------------------------------
|
||||||
|
rfsim4g-cassandra docker-entrypoint.sh cassa ... Up (healthy) 7000/tcp, 7001/tcp, 7199/tcp, 9042/tcp, 9160/tcp
|
||||||
|
rfsim4g-oai-enb /opt/oai-enb/bin/entrypoin ... Up (healthy) 2152/udp, 36412/udp, 36422/udp
|
||||||
|
rfsim4g-oai-hss /openair-hss/bin/entrypoin ... Up (healthy) 5868/tcp, 9042/tcp, 9080/tcp, 9081/tcp
|
||||||
|
rfsim4g-oai-mme /openair-mme/bin/entrypoin ... Up (healthy) 2123/udp, 3870/tcp, 5870/tcp
|
||||||
|
rfsim4g-oai-spgwc /openair-spgwc/bin/entrypo ... Up (healthy) 2123/udp, 8805/udp
|
||||||
|
rfsim4g-oai-spgwu-tiny /openair-spgwu-tiny/bin/en ... Up (healthy) 2152/udp, 8805/udp
|
||||||
|
rfsim4g-trf-gen /bin/bash -c ip route add ... Up (healthy)
|
||||||
|
```
|
||||||
|
|
||||||
|
Check if the eNB connected to MME:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
$ docker logs rfsim4g-oai-mme
|
||||||
|
...
|
||||||
|
DEBUG MME-AP src/mme_app/mme_app_statistics.c:0039 ======================================= STATISTICS ============================================
|
||||||
|
|
||||||
|
DEBUG MME-AP src/mme_app/mme_app_statistics.c:0042 | Current Status| Added since last display| Removed since last display |
|
||||||
|
DEBUG MME-AP src/mme_app/mme_app_statistics.c:0048 Connected eNBs | 0 | 0 | 0 |
|
||||||
|
DEBUG MME-AP src/mme_app/mme_app_statistics.c:0054 Attached UEs | 0 | 0 | 0 |
|
||||||
|
DEBUG MME-AP src/mme_app/mme_app_statistics.c:0060 Connected UEs | 0 | 0 | 0 |
|
||||||
|
DEBUG MME-AP src/mme_app/mme_app_statistics.c:0066 Default Bearers| 0 | 0 | 0 |
|
||||||
|
DEBUG MME-AP src/mme_app/mme_app_statistics.c:0072 S1-U Bearers | 0 | 0 | 0 |
|
||||||
|
|
||||||
|
DEBUG MME-AP src/mme_app/mme_app_statistics.c:0075 ======================================= STATISTICS ============================================
|
||||||
|
|
||||||
|
DEBUG SCTP rc/sctp/sctp_primitives_server.c:0469 Client association changed: 0
|
||||||
|
DEBUG SCTP enair-mme/src/sctp/sctp_common.c:0101 ----------------------
|
||||||
|
DEBUG SCTP enair-mme/src/sctp/sctp_common.c:0102 SCTP Status:
|
||||||
|
DEBUG SCTP enair-mme/src/sctp/sctp_common.c:0103 assoc id .....: 675
|
||||||
|
DEBUG SCTP enair-mme/src/sctp/sctp_common.c:0104 state ........: 4
|
||||||
|
DEBUG SCTP enair-mme/src/sctp/sctp_common.c:0105 instrms ......: 2
|
||||||
|
DEBUG SCTP enair-mme/src/sctp/sctp_common.c:0106 outstrms .....: 2
|
||||||
|
DEBUG SCTP enair-mme/src/sctp/sctp_common.c:0108 fragmentation : 1452
|
||||||
|
DEBUG SCTP enair-mme/src/sctp/sctp_common.c:0109 pending data .: 0
|
||||||
|
DEBUG SCTP enair-mme/src/sctp/sctp_common.c:0110 unack data ...: 0
|
||||||
|
DEBUG SCTP enair-mme/src/sctp/sctp_common.c:0111 rwnd .........: 106496
|
||||||
|
DEBUG SCTP enair-mme/src/sctp/sctp_common.c:0112 peer info :
|
||||||
|
DEBUG SCTP enair-mme/src/sctp/sctp_common.c:0114 state ....: 2
|
||||||
|
DEBUG SCTP enair-mme/src/sctp/sctp_common.c:0116 cwnd .....: 4380
|
||||||
|
DEBUG SCTP enair-mme/src/sctp/sctp_common.c:0118 srtt .....: 0
|
||||||
|
DEBUG SCTP enair-mme/src/sctp/sctp_common.c:0120 rto ......: 3000
|
||||||
|
DEBUG SCTP enair-mme/src/sctp/sctp_common.c:0122 mtu ......: 1500
|
||||||
|
DEBUG SCTP enair-mme/src/sctp/sctp_common.c:0123 ----------------------
|
||||||
|
DEBUG SCTP rc/sctp/sctp_primitives_server.c:0479 New connection
|
||||||
|
DEBUG SCTP enair-mme/src/sctp/sctp_common.c:0205 ----------------------
|
||||||
|
DEBUG SCTP enair-mme/src/sctp/sctp_common.c:0206 Local addresses:
|
||||||
|
DEBUG SCTP enair-mme/src/sctp/sctp_common.c:0217 - [192.168.61.3]
|
||||||
|
DEBUG SCTP enair-mme/src/sctp/sctp_common.c:0234 ----------------------
|
||||||
|
DEBUG SCTP enair-mme/src/sctp/sctp_common.c:0151 ----------------------
|
||||||
|
DEBUG SCTP enair-mme/src/sctp/sctp_common.c:0152 Peer addresses:
|
||||||
|
DEBUG SCTP enair-mme/src/sctp/sctp_common.c:0163 - [192.168.61.20]
|
||||||
|
DEBUG SCTP enair-mme/src/sctp/sctp_common.c:0178 ----------------------
|
||||||
|
DEBUG SCTP rc/sctp/sctp_primitives_server.c:0554 SCTP RETURNING!!
|
||||||
|
DEBUG SCTP rc/sctp/sctp_primitives_server.c:0547 [675][44] Msg of length 51 received from port 36412, on stream 0, PPID 18
|
||||||
|
DEBUG SCTP rc/sctp/sctp_primitives_server.c:0554 SCTP RETURNING!!
|
||||||
|
DEBUG S1AP mme/src/s1ap/s1ap_mme_handlers.c:2826 Create eNB context for assoc_id: 675
|
||||||
|
DEBUG S1AP mme/src/s1ap/s1ap_mme_handlers.c:0361 S1-Setup-Request macroENB_ID.size 3 (should be 20)
|
||||||
|
DEBUG S1AP mme/src/s1ap/s1ap_mme_handlers.c:0321 New s1 setup request incoming from macro eNB id: 00e01
|
||||||
|
DEBUG S1AP mme/src/s1ap/s1ap_mme_handlers.c:0423 Adding eNB to the list of served eNBs
|
||||||
|
DEBUG S1AP mme/src/s1ap/s1ap_mme_handlers.c:0438 Adding eNB id 3585 to the list of served eNBs
|
||||||
|
DEBUG SCTP rc/sctp/sctp_primitives_server.c:0283 [44][675] Sending buffer 0x7f9394009f90 of 27 bytes on stream 0 with ppid 18
|
||||||
|
DEBUG SCTP rc/sctp/sctp_primitives_server.c:0296 Successfully sent 27 bytes on stream 0
|
||||||
|
DEBUG MME-AP src/mme_app/mme_app_statistics.c:0039 ======================================= STATISTICS ============================================
|
||||||
|
|
||||||
|
DEBUG MME-AP src/mme_app/mme_app_statistics.c:0042 | Current Status| Added since last display| Removed since last display |
|
||||||
|
DEBUG MME-AP src/mme_app/mme_app_statistics.c:0048 Connected eNBs | 1 | 1 | 0 |
|
||||||
|
DEBUG MME-AP src/mme_app/mme_app_statistics.c:0054 Attached UEs | 0 | 0 | 0 |
|
||||||
|
DEBUG MME-AP src/mme_app/mme_app_statistics.c:0060 Connected UEs | 0 | 0 | 0 |
|
||||||
|
DEBUG MME-AP src/mme_app/mme_app_statistics.c:0066 Default Bearers| 0 | 0 | 0 |
|
||||||
|
DEBUG MME-AP src/mme_app/mme_app_statistics.c:0072 S1-U Bearers | 0 | 0 | 0 |
|
||||||
|
|
||||||
|
DEBUG MME-AP src/mme_app/mme_app_statistics.c:0075 ======================================= STATISTICS ============================================
|
||||||
|
...
|
||||||
|
```
|
||||||
|
|
||||||
|
## 2.4. Deploy OAI LTE UE in RF simulator mode ##
|
||||||
|
|
||||||
|
```bash
|
||||||
|
$ docker-compose up -d oai_ue0
|
||||||
|
Creating rfsim4g-oai-lte-ue0 ... done
|
||||||
|
```
|
||||||
|
|
||||||
|
Again a bit of patience:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
$ docker-compose ps -a
|
||||||
|
Name Command State Ports
|
||||||
|
-------------------------------------------------------------------------------------------------------------------------
|
||||||
|
rfsim4g-cassandra docker-entrypoint.sh cassa ... Up (healthy) 7000/tcp, 7001/tcp, 7199/tcp, 9042/tcp, 9160/tcp
|
||||||
|
rfsim4g-oai-enb /opt/oai-enb/bin/entrypoin ... Up (healthy) 2152/udp, 36412/udp, 36422/udp
|
||||||
|
rfsim4g-oai-hss /openair-hss/bin/entrypoin ... Up (healthy) 5868/tcp, 9042/tcp, 9080/tcp, 9081/tcp
|
||||||
|
rfsim4g-oai-lte-ue0 /opt/oai-lte-ue/bin/entryp ... Up (healthy) 10000/tcp
|
||||||
|
rfsim4g-oai-mme /openair-mme/bin/entrypoin ... Up (healthy) 2123/udp, 3870/tcp, 5870/tcp
|
||||||
|
rfsim4g-oai-spgwc /openair-spgwc/bin/entrypo ... Up (healthy) 2123/udp, 8805/udp
|
||||||
|
rfsim4g-oai-spgwu-tiny /openair-spgwu-tiny/bin/en ... Up (healthy) 2152/udp, 8805/udp
|
||||||
|
rfsim4g-trf-gen /bin/bash -c ip route add ... Up (healthy)
|
||||||
|
Creating rfsim4g-oai-enb ... done
|
||||||
|
```
|
||||||
|
|
||||||
|
Making sure the OAI UE is connected:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
$ docker logs rfsim4g-oai-enb
|
||||||
|
...
|
||||||
|
[RRC] RRCConnectionReconfiguration Encoded 1098 bits (138 bytes)
|
||||||
|
[RRC] [eNB 0] Frame 0, Logical Channel DL-DCCH, Generate LTE_RRCConnectionReconfiguration (bytes 138, UE id 617b)
|
||||||
|
[RRC] sent RRC_DCCH_DATA_REQ to TASK_PDCP_ENB
|
||||||
|
[PDCP] [FRAME 00000][eNB][MOD 00][RNTI 617b][SRB 02] Action ADD LCID 2 (SRB id 2) configured with SN size 5 bits and RLC AM
|
||||||
|
[PDCP] [FRAME 00000][eNB][MOD 00][RNTI 617b][DRB 01] Action ADD LCID 3 (DRB id 1) configured with SN size 12 bits and RLC AM
|
||||||
|
[SCTP] Successfully sent 46 bytes on stream 1 for assoc_id 676
|
||||||
|
[RRC] [FRAME 00000][eNB][MOD 00][RNTI 617b] UE State = RRC_RECONFIGURED (default DRB, xid 0)
|
||||||
|
[PDCP] [FRAME 00000][eNB][MOD 00][RNTI 617b][SRB 02] Action MODIFY LCID 2 RB id 2 reconfigured with SN size 5 and RLC AM
|
||||||
|
[PDCP] [FRAME 00000][eNB][MOD 00][RNTI 617b][DRB 01] Action MODIFY LCID 3 RB id 1 reconfigured with SN size 1 and RLC AM
|
||||||
|
[RRC] [eNB 0] Frame 0 CC 0 : SRB2 is now active
|
||||||
|
[RRC] [eNB 0] Frame 0 : Logical Channel UL-DCCH, Received LTE_RRCConnectionReconfigurationComplete from UE rnti 617b, reconfiguring DRB 1/LCID 3
|
||||||
|
[RRC] [eNB 0] Frame 0 : Logical Channel UL-DCCH, Received LTE_RRCConnectionReconfigurationComplete, reconfiguring DRB 1/LCID 3
|
||||||
|
[MAC] UE 0 RNTI 617b adding LC 3 idx 2 to scheduling control (total 3)
|
||||||
|
[MAC] Added physicalConfigDedicated 0x7f98e0004950 for 0.0
|
||||||
|
[S1AP] initial_ctxt_resp_p: e_rab ID 5, enb_addr 192.168.61.20, SIZE 4
|
||||||
|
[SCTP] Successfully sent 40 bytes on stream 1 for assoc_id 676
|
||||||
|
[SCTP] Successfully sent 61 bytes on stream 1 for assoc_id 676
|
||||||
|
...
|
||||||
|
```
|
||||||
|
|
||||||
|
On the MME:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
$ docker logs rfsim4g-oai-mme
|
||||||
|
DEBUG MME-AP src/mme_app/mme_app_statistics.c:0039 ======================================= STATISTICS ============================================
|
||||||
|
|
||||||
|
DEBUG MME-AP src/mme_app/mme_app_statistics.c:0042 | Current Status| Added since last display| Removed since last display |
|
||||||
|
DEBUG MME-AP src/mme_app/mme_app_statistics.c:0048 Connected eNBs | 1 | 0 | 0 |
|
||||||
|
DEBUG MME-AP src/mme_app/mme_app_statistics.c:0054 Attached UEs | 1 | 0 | 0 |
|
||||||
|
DEBUG MME-AP src/mme_app/mme_app_statistics.c:0060 Connected UEs | 1 | 0 | 0 |
|
||||||
|
DEBUG MME-AP src/mme_app/mme_app_statistics.c:0066 Default Bearers| 0 | 0 | 0 |
|
||||||
|
DEBUG MME-AP src/mme_app/mme_app_statistics.c:0072 S1-U Bearers | 0 | 0 | 0 |
|
||||||
|
|
||||||
|
DEBUG MME-AP src/mme_app/mme_app_statistics.c:0075 ======================================= STATISTICS ============================================
|
||||||
|
```
|
||||||
|
|
||||||
|
On the LTE UE:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
$ docker exec rfsim4g-oai-lte-ue0 /bin/bash -c "ifconfig"
|
||||||
|
eth0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
|
||||||
|
inet 192.168.61.30 netmask 255.255.255.192 broadcast 192.168.61.63
|
||||||
|
ether 02:42:c0:a8:3d:1e txqueuelen 0 (Ethernet)
|
||||||
|
RX packets 1109931 bytes 8078031934 (8.0 GB)
|
||||||
|
RX errors 0 dropped 0 overruns 0 frame 0
|
||||||
|
TX packets 1232068 bytes 7798928848 (7.7 GB)
|
||||||
|
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
|
||||||
|
|
||||||
|
lo: flags=73<UP,LOOPBACK,RUNNING> mtu 65536
|
||||||
|
inet 127.0.0.1 netmask 255.0.0.0
|
||||||
|
loop txqueuelen 1000 (Local Loopback)
|
||||||
|
RX packets 0 bytes 0 (0.0 B)
|
||||||
|
RX errors 0 dropped 0 overruns 0 frame 0
|
||||||
|
TX packets 0 bytes 0 (0.0 B)
|
||||||
|
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
|
||||||
|
|
||||||
|
oaitun_ue1: flags=4305<UP,POINTOPOINT,RUNNING,NOARP,MULTICAST> mtu 1500
|
||||||
|
inet 12.0.0.2 netmask 255.0.0.0 destination 12.0.0.2
|
||||||
|
unspec 00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00 txqueuelen 500 (UNSPEC)
|
||||||
|
RX packets 0 bytes 0 (0.0 B)
|
||||||
|
RX errors 0 dropped 0 overruns 0 frame 0
|
||||||
|
TX packets 0 bytes 0 (0.0 B)
|
||||||
|
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
|
||||||
|
|
||||||
|
oaitun_uem1: flags=4305<UP,POINTOPOINT,RUNNING,NOARP,MULTICAST> mtu 1500
|
||||||
|
inet 10.0.2.2 netmask 255.255.255.0 destination 10.0.2.2
|
||||||
|
unspec 00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00 txqueuelen 500 (UNSPEC)
|
||||||
|
RX packets 0 bytes 0 (0.0 B)
|
||||||
|
RX errors 0 dropped 0 overruns 0 frame 0
|
||||||
|
TX packets 0 bytes 0 (0.0 B)
|
||||||
|
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
|
||||||
|
```
|
||||||
|
|
||||||
|
The tunnel `oaitun_ue1` SHALL be mounted and with an IP address in the `12.0.0.xxx` range.
|
||||||
|
|
||||||
|
# 3. Check traffic #
|
||||||
|
|
||||||
|
```bash
|
||||||
|
$ docker exec rfsim4g-oai-lte-ue0 /bin/bash -c "ping -c 2 www.lemonde.fr"
|
||||||
|
PING s2.shared.global.fastly.net (151.101.122.217) 56(84) bytes of data.
|
||||||
|
64 bytes from 151.101.122.217 (151.101.122.217): icmp_seq=1 ttl=54 time=12.9 ms
|
||||||
|
64 bytes from 151.101.122.217 (151.101.122.217): icmp_seq=2 ttl=54 time=12.9 ms
|
||||||
|
|
||||||
|
--- s2.shared.global.fastly.net ping statistics ---
|
||||||
|
2 packets transmitted, 2 received, 0% packet loss, time 1001ms
|
||||||
|
rtt min/avg/max/mdev = 12.940/12.965/12.990/0.025 ms
|
||||||
|
|
||||||
|
$ docker exec rfsim4g-oai-lte-ue0 /bin/bash -c "ping -I oaitun_ue1 -c 2 www.lemonde.fr"
|
||||||
|
PING s2.shared.global.fastly.net (151.101.122.217) from 12.0.0.2 oaitun_ue1: 56(84) bytes of data.
|
||||||
|
64 bytes from 151.101.122.217 (151.101.122.217): icmp_seq=1 ttl=53 time=23.6 ms
|
||||||
|
64 bytes from 151.101.122.217 (151.101.122.217): icmp_seq=2 ttl=53 time=29.5 ms
|
||||||
|
|
||||||
|
--- s2.shared.global.fastly.net ping statistics ---
|
||||||
|
2 packets transmitted, 2 received, 0% packet loss, time 1001ms
|
||||||
|
rtt min/avg/max/mdev = 23.659/26.626/29.593/2.967 ms
|
||||||
|
```
|
||||||
|
|
||||||
|
The 1st ping command is NOT using the OAI stack. My network infrastructure has a response of `13 ms` to reach this website.
|
||||||
|
|
||||||
|
The 2nd ping command is using the OAI stack. So the stack takes `26.6 - 12.9 = 13.7 ms`.
|
||||||
|
|
||||||
|
# 4. Un-deployment #
|
||||||
|
|
||||||
|
```bash
|
||||||
|
$ docker-compose down
|
||||||
|
Stopping rfsim4g-oai-lte-ue0 ... done
|
||||||
|
Stopping rfsim4g-oai-enb ... done
|
||||||
|
Stopping rfsim4g-oai-spgwu-tiny ... done
|
||||||
|
Stopping rfsim4g-oai-spgwc ... done
|
||||||
|
Stopping rfsim4g-oai-mme ... done
|
||||||
|
Stopping rfsim4g-oai-hss ... done
|
||||||
|
Stopping rfsim4g-trf-gen ... done
|
||||||
|
Stopping rfsim4g-cassandra ... done
|
||||||
|
Removing rfsim4g-oai-lte-ue0 ... done
|
||||||
|
Removing rfsim4g-oai-enb ... done
|
||||||
|
Removing rfsim4g-oai-spgwu-tiny ... done
|
||||||
|
Removing rfsim4g-oai-spgwc ... done
|
||||||
|
Removing rfsim4g-oai-mme ... done
|
||||||
|
Removing rfsim4g-oai-hss ... done
|
||||||
|
Removing rfsim4g-trf-gen ... done
|
||||||
|
Removing rfsim4g-cassandra ... done
|
||||||
|
Removing network rfsim4g-oai-private-net
|
||||||
|
Removing network rfsim4g-oai-public-net
|
||||||
|
```
|
||||||
|
|
||||||
|
# 5. Explanation on the configuration #
|
||||||
|
|
||||||
|
With a single `docker-compose.yml` file, it is easier to explain how I made the full connection.
|
||||||
|
|
||||||
|
Try to modify as little as possible. And if you don't understand a field/value, you'd better NOT modify it.
|
||||||
|
|
||||||
|
## 5.1. UE IMSI and Keys ##
|
||||||
|
|
||||||
|
in HSS config:
|
||||||
|
|
||||||
|
```yaml
|
||||||
|
OP_KEY: 1006020f0a478bf6b699f15c062e42b3
|
||||||
|
LTE_K: fec86ba6eb707ed08905757b1bb44b8f
|
||||||
|
APN1: oai.ipv4
|
||||||
|
APN2: internet
|
||||||
|
FIRST_IMSI: 208960100000001
|
||||||
|
NB_USERS: 10
|
||||||
|
```
|
||||||
|
|
||||||
|
in UE config:
|
||||||
|
|
||||||
|
```yaml
|
||||||
|
MCC: '208'
|
||||||
|
MNC: '96'
|
||||||
|
SHORT_IMSI: '0100000001'
|
||||||
|
LTE_KEY: 'fec86ba6eb707ed08905757b1bb44b8f'
|
||||||
|
OPC: 'c42449363bbad02b66d16bc975d77cc1'
|
||||||
|
MSISDN: '001011234561010'
|
||||||
|
HPLMN: 20896
|
||||||
|
```
|
||||||
|
|
||||||
|
As you can see: `LTE_K` and `LTE_KEY` are the same value. And `OP_KEY` and `OPC` can be deduced from each other. Look in HSS logs.
|
||||||
|
|
||||||
|
```bash
|
||||||
|
$ docker logs rfsim4g-oai-hss
|
||||||
|
...
|
||||||
|
Compute opc:
|
||||||
|
K: FEC86BA6EB707ED08905757B1BB44B8F <== `LTE_K`
|
||||||
|
In: 1006020F0A478BF6B699F15C062E42B3 <== `OP_KEY`
|
||||||
|
Rinj: D4224B3931FD5BDDD0489A9573F93E72
|
||||||
|
Out: C42449363BBAD02B66D16BC975D77CC1 <== `OPC`
|
||||||
|
...
|
||||||
|
```
|
||||||
|
|
||||||
|
In HSS, I've provisioned 10 users starting at `208960100000001` (`FIRST_IMSI` and `NB_USERS`).
|
||||||
|
|
||||||
|
My 1st UE IMSI is an aggregation of `MCC`, `MNC`, `SHORT_IMSI`.
|
||||||
|
|
||||||
|
## 5.2. PLMN and TAI ##
|
||||||
|
|
||||||
|
in MME config:
|
||||||
|
|
||||||
|
```yaml
|
||||||
|
REALM: openairinterface.org
|
||||||
|
..
|
||||||
|
MCC: '208'
|
||||||
|
MNC: '96'
|
||||||
|
MME_GID: 32768
|
||||||
|
MME_CODE: 3
|
||||||
|
TAC_0: 1
|
||||||
|
TAC_1: 2
|
||||||
|
TAC_2: 3
|
||||||
|
MME_FQDN: mme.openairinterface.org
|
||||||
|
```
|
||||||
|
|
||||||
|
in SPGW-C/-U configs:
|
||||||
|
|
||||||
|
```yaml
|
||||||
|
MCC: '208'
|
||||||
|
MNC: '96'
|
||||||
|
MNC03: '096'
|
||||||
|
TAC: 1
|
||||||
|
GW_ID: 1
|
||||||
|
REALM: openairinterface.org
|
||||||
|
```
|
||||||
|
|
||||||
|
in eNB config:
|
||||||
|
|
||||||
|
```yaml
|
||||||
|
MCC: '208'
|
||||||
|
MNC: '96'
|
||||||
|
MNC_LENGTH: 2
|
||||||
|
TAC: 1
|
||||||
|
```
|
||||||
|
|
||||||
|
The values SHALL match, and `TAC` shall match `TAC_0` from MME.
|
||||||
|
|
||||||
|
## 5.3. Access to Internet ##
|
||||||
|
|
||||||
|
In my traffic test, I was able to ping outside of my local network.
|
||||||
|
|
||||||
|
in SPGW-C config:
|
||||||
|
|
||||||
|
```yaml
|
||||||
|
DEFAULT_DNS_IPV4_ADDRESS: 192.168.18.129
|
||||||
|
DEFAULT_DNS_SEC_IPV4_ADDRESS: 8.8.4.4
|
||||||
|
PUSH_PROTOCOL_OPTION: 'true'
|
||||||
|
```
|
||||||
|
|
||||||
|
in SPGW-U config:
|
||||||
|
|
||||||
|
```yaml
|
||||||
|
NETWORK_UE_NAT_OPTION: 'yes'
|
||||||
|
```
|
||||||
|
|
||||||
|
Please put your own DNS server IP adress.
|
||||||
|
|
||||||
|
And you may have to play with `PUSH_PROTOCOL_OPTION` and `NETWORK_UE_NAT_OPTION` depending on your network.
|
||||||
|
|
||||||
@@ -32,7 +32,7 @@ services:
|
|||||||
entrypoint: /bin/bash -c "cqlsh --file /home/oai_db.cql 192.168.68.2 && echo 'OK'"
|
entrypoint: /bin/bash -c "cqlsh --file /home/oai_db.cql 192.168.68.2 && echo 'OK'"
|
||||||
|
|
||||||
oai_hss:
|
oai_hss:
|
||||||
image: oai-hss:develop-2021-06-14
|
image: oai-hss:latest
|
||||||
container_name: rfsim4g-oai-hss
|
container_name: rfsim4g-oai-hss
|
||||||
privileged: true
|
privileged: true
|
||||||
depends_on: [cassandra]
|
depends_on: [cassandra]
|
||||||
@@ -59,7 +59,7 @@ services:
|
|||||||
retries: 5
|
retries: 5
|
||||||
|
|
||||||
oai_mme:
|
oai_mme:
|
||||||
image: oai-mme:production
|
image: oai-mme:latest
|
||||||
container_name: rfsim4g-oai-mme
|
container_name: rfsim4g-oai-mme
|
||||||
privileged: true
|
privileged: true
|
||||||
depends_on: [oai_hss]
|
depends_on: [oai_hss]
|
||||||
@@ -116,7 +116,7 @@ services:
|
|||||||
retries: 5
|
retries: 5
|
||||||
|
|
||||||
oai_spgwc:
|
oai_spgwc:
|
||||||
image: oai-spgwc:develop-2021-06-14
|
image: oai-spgwc:latest
|
||||||
privileged: true
|
privileged: true
|
||||||
depends_on: [oai_mme]
|
depends_on: [oai_mme]
|
||||||
container_name: rfsim4g-oai-spgwc
|
container_name: rfsim4g-oai-spgwc
|
||||||
@@ -148,7 +148,7 @@ services:
|
|||||||
retries: 5
|
retries: 5
|
||||||
|
|
||||||
oai_spgwu:
|
oai_spgwu:
|
||||||
image: oai-spgwu-tiny:develop-2021-06-14
|
image: oai-spgwu-tiny:latest
|
||||||
privileged: true
|
privileged: true
|
||||||
container_name: rfsim4g-oai-spgwu-tiny
|
container_name: rfsim4g-oai-spgwu-tiny
|
||||||
depends_on: [oai_spgwc]
|
depends_on: [oai_spgwc]
|
||||||
@@ -177,19 +177,6 @@ services:
|
|||||||
timeout: 5s
|
timeout: 5s
|
||||||
retries: 5
|
retries: 5
|
||||||
|
|
||||||
flexran_rtc:
|
|
||||||
image: flexran-rtc:production
|
|
||||||
privileged: true
|
|
||||||
container_name: rfsim4g-flexran-rtc
|
|
||||||
networks:
|
|
||||||
public_net:
|
|
||||||
ipv4_address: 192.168.61.10
|
|
||||||
healthcheck:
|
|
||||||
test: /bin/bash -c "pgrep rt_controller"
|
|
||||||
interval: 10s
|
|
||||||
timeout: 5s
|
|
||||||
retries: 5
|
|
||||||
|
|
||||||
trf_gen:
|
trf_gen:
|
||||||
image: trf-gen:production
|
image: trf-gen:production
|
||||||
privileged: true
|
privileged: true
|
||||||
@@ -235,6 +222,11 @@ services:
|
|||||||
FLEXRAN_INTERFACE_NAME: eth0
|
FLEXRAN_INTERFACE_NAME: eth0
|
||||||
FLEXRAN_IPV4_ADDRESS: 192.168.61.10
|
FLEXRAN_IPV4_ADDRESS: 192.168.61.10
|
||||||
USE_ADDITIONAL_OPTIONS: --rfsim
|
USE_ADDITIONAL_OPTIONS: --rfsim
|
||||||
|
healthcheck:
|
||||||
|
test: /bin/bash -c "pgrep lte-softmodem"
|
||||||
|
interval: 10s
|
||||||
|
timeout: 5s
|
||||||
|
retries: 5
|
||||||
|
|
||||||
oai_ue0:
|
oai_ue0:
|
||||||
image: oai-lte-ue:develop
|
image: oai-lte-ue:develop
|
||||||
@@ -257,6 +249,11 @@ services:
|
|||||||
MSISDN: '001011234561010'
|
MSISDN: '001011234561010'
|
||||||
HPLMN: 20896
|
HPLMN: 20896
|
||||||
USE_ADDITIONAL_OPTIONS: --rfsim -C 2680000000 -r 25 --ue-rxgain 140 --ue-txgain 120 --nokrnmod 1
|
USE_ADDITIONAL_OPTIONS: --rfsim -C 2680000000 -r 25 --ue-rxgain 140 --ue-txgain 120 --nokrnmod 1
|
||||||
|
healthcheck:
|
||||||
|
test: /bin/bash -c "pgrep lte-uesoftmodem"
|
||||||
|
interval: 10s
|
||||||
|
timeout: 5s
|
||||||
|
retries: 5
|
||||||
|
|
||||||
networks:
|
networks:
|
||||||
private_net:
|
private_net:
|
||||||
@@ -264,9 +261,12 @@ networks:
|
|||||||
ipam:
|
ipam:
|
||||||
config:
|
config:
|
||||||
- subnet: 192.168.68.0/26
|
- subnet: 192.168.68.0/26
|
||||||
|
driver_opts:
|
||||||
|
com.docker.network.bridge.name: "rfsim4g-private"
|
||||||
public_net:
|
public_net:
|
||||||
name: rfsim4g-oai-public-net
|
name: rfsim4g-oai-public-net
|
||||||
ipam:
|
ipam:
|
||||||
config:
|
config:
|
||||||
- subnet: 192.168.61.0/26
|
- subnet: 192.168.61.0/26
|
||||||
|
driver_opts:
|
||||||
|
com.docker.network.bridge.name: "rfsim4g-public"
|
||||||
|
|||||||
@@ -48,6 +48,7 @@ RUN yum update -y && \
|
|||||||
yum install -y --enablerepo="ubi-8-codeready-builder" \
|
yum install -y --enablerepo="ubi-8-codeready-builder" \
|
||||||
lksctp-tools \
|
lksctp-tools \
|
||||||
nettle \
|
nettle \
|
||||||
|
procps-ng \
|
||||||
atlas \
|
atlas \
|
||||||
net-tools \
|
net-tools \
|
||||||
iputils \
|
iputils \
|
||||||
|
|||||||
@@ -51,6 +51,7 @@ RUN apt-get update && \
|
|||||||
DEBIAN_FRONTEND=noninteractive apt-get upgrade --yes && \
|
DEBIAN_FRONTEND=noninteractive apt-get upgrade --yes && \
|
||||||
DEBIAN_FRONTEND=noninteractive apt-get install --yes \
|
DEBIAN_FRONTEND=noninteractive apt-get install --yes \
|
||||||
software-properties-common \
|
software-properties-common \
|
||||||
|
procps \
|
||||||
libsctp1 \
|
libsctp1 \
|
||||||
libnettle6 \
|
libnettle6 \
|
||||||
libblas3 \
|
libblas3 \
|
||||||
|
|||||||
@@ -25,7 +25,7 @@
|
|||||||
#
|
#
|
||||||
#---------------------------------------------------------------------
|
#---------------------------------------------------------------------
|
||||||
|
|
||||||
FROM localhost/ran-build:latest AS gnb-build
|
FROM ran-build:latest AS gnb-build
|
||||||
|
|
||||||
RUN rm -Rf /oai-ran
|
RUN rm -Rf /oai-ran
|
||||||
WORKDIR /oai-ran
|
WORKDIR /oai-ran
|
||||||
@@ -37,11 +37,9 @@ RUN /bin/sh oaienv && \
|
|||||||
mkdir -p log && \
|
mkdir -p log && \
|
||||||
./build_oai --gNB --ninja -w USRP --verbose-ci
|
./build_oai --gNB --ninja -w USRP --verbose-ci
|
||||||
|
|
||||||
#debug
|
RUN yum install -y python3-pip && \
|
||||||
#RUN ldconfig -v
|
pip3 install --ignore-installed pyyaml && \
|
||||||
#RUN ldd /oai-ran/targets/bin/nr-softmodem.Rel15
|
python3 ./docker/scripts/generateTemplate.py ./docker/scripts/gnb_parameters.yaml
|
||||||
#RUN ls -lst /oai-ran/targets/bin
|
|
||||||
#RUN ls -lst /oai-ran/cmake_targets/ran_build/build/*.so
|
|
||||||
|
|
||||||
#start from scratch for target executable
|
#start from scratch for target executable
|
||||||
FROM registry.access.redhat.com/ubi8/ubi:latest as oai-gnb
|
FROM registry.access.redhat.com/ubi8/ubi:latest as oai-gnb
|
||||||
@@ -49,6 +47,7 @@ FROM registry.access.redhat.com/ubi8/ubi:latest as oai-gnb
|
|||||||
RUN yum repolist --disablerepo=* && \
|
RUN yum repolist --disablerepo=* && \
|
||||||
yum update -y && \
|
yum update -y && \
|
||||||
yum install -y --enablerepo="ubi-8-codeready-builder" \
|
yum install -y --enablerepo="ubi-8-codeready-builder" \
|
||||||
|
procps-ng \
|
||||||
libXpm \
|
libXpm \
|
||||||
libX11 \
|
libX11 \
|
||||||
atlas \
|
atlas \
|
||||||
@@ -62,6 +61,7 @@ RUN yum repolist --disablerepo=* && \
|
|||||||
|
|
||||||
WORKDIR /opt/oai-gnb/bin
|
WORKDIR /opt/oai-gnb/bin
|
||||||
COPY --from=gnb-build /oai-ran/targets/bin/nr-softmodem.Rel15 .
|
COPY --from=gnb-build /oai-ran/targets/bin/nr-softmodem.Rel15 .
|
||||||
|
COPY --from=gnb-build /oai-ran/docker/scripts/gnb_entrypoint.sh entrypoint.sh
|
||||||
|
|
||||||
WORKDIR /usr/local/lib/
|
WORKDIR /usr/local/lib/
|
||||||
COPY --from=gnb-build /oai-ran/targets/bin/liboai_eth_transpro.so.Rel15 .
|
COPY --from=gnb-build /oai-ran/targets/bin/liboai_eth_transpro.so.Rel15 .
|
||||||
@@ -99,23 +99,10 @@ COPY --from=gnb-build /lib64/libboost_timer.so.1.66.0 /lib64
|
|||||||
COPY --from=gnb-build /usr/local/lib64/libuhd.so.4.0.0 /usr/local/lib64
|
COPY --from=gnb-build /usr/local/lib64/libuhd.so.4.0.0 /usr/local/lib64
|
||||||
|
|
||||||
RUN ldconfig
|
RUN ldconfig
|
||||||
#debug
|
|
||||||
#RUN ldd /opt/oai-gnb/bin/nr-softmodem.Rel15
|
|
||||||
#RUN ldd /usr/local/lib/liboai_eth_transpro.so.Rel15
|
|
||||||
#RUN ldd /usr/local/lib/libtcp_bridge_oai.so.Rel15
|
|
||||||
#RUN ldd /usr/local/lib/librfsimulator.so.Rel15
|
|
||||||
#RUN ldd /usr/local/lib/liboai_usrpdevif.so.Rel15
|
|
||||||
#RUN ldd /usr/local/lib/libcoding.so
|
|
||||||
#RUN ldd /usr/local/lib/libparams_libconfig.so
|
|
||||||
#RUN ldd /usr/local/lib/libdfts.so
|
|
||||||
#RUN ldd /usr/local/lib/libldpc.so
|
|
||||||
#RUN ldd /usr/local/lib/libldpc_optim.so
|
|
||||||
#RUN ldd /usr/local/lib/libldpc_optim8seg.so
|
|
||||||
#RUN ldd /usr/local/lib/libldpc_orig.so
|
|
||||||
|
|
||||||
# Copy the relevant configuration files for gNB
|
# Copy the relevant configuration files for gNB
|
||||||
WORKDIR /opt/oai-gnb/etc
|
WORKDIR /opt/oai-gnb/etc
|
||||||
COPY --from=gnb-build /oai-ran/ci-scripts/conf_files/gnb.* .
|
COPY --from=gnb-build /oai-ran/docker/etc .
|
||||||
|
|
||||||
WORKDIR /opt/oai-gnb
|
WORKDIR /opt/oai-gnb
|
||||||
#EXPOSE 2152/udp # S1U, GTP/UDP
|
#EXPOSE 2152/udp # S1U, GTP/UDP
|
||||||
@@ -125,6 +112,5 @@ WORKDIR /opt/oai-gnb
|
|||||||
#EXPOSE 50000/udp # IF5 / ORI (control)
|
#EXPOSE 50000/udp # IF5 / ORI (control)
|
||||||
#EXPOSE 50001/udp # IF5 / ECPRI (data)
|
#EXPOSE 50001/udp # IF5 / ECPRI (data)
|
||||||
|
|
||||||
#CMD ["/opt/oai-gnb/bin/nr-softmodem", "-O", "/opt/oai-gnb/etc/gnb.conf"]
|
ENTRYPOINT ["/opt/oai-gnb/bin/entrypoint.sh"]
|
||||||
#ENTRYPOINT ["/opt/oai-gnb/bin/entrypoint.sh"]
|
CMD ["/opt/oai-gnb/bin/nr-softmodem", "-O", "/opt/oai-gnb/etc/gnb.conf"]
|
||||||
CMD ["sleep", "infinity"]
|
|
||||||
|
|||||||
@@ -37,23 +37,22 @@ RUN /bin/sh oaienv && \
|
|||||||
mkdir -p log && \
|
mkdir -p log && \
|
||||||
./build_oai --gNB --ninja -w USRP --verbose-ci
|
./build_oai --gNB --ninja -w USRP --verbose-ci
|
||||||
|
|
||||||
#debug
|
RUN apt-get install -y python3-pip && \
|
||||||
RUN ldconfig -v
|
pip3 install --ignore-installed pyyaml && \
|
||||||
RUN ldd /oai-ran/targets/bin/nr-softmodem.Rel15
|
python3 ./docker/scripts/generateTemplate.py ./docker/scripts/gnb_parameters.yaml
|
||||||
RUN ls -lst /oai-ran/targets/bin
|
|
||||||
RUN ls -lst /oai-ran/cmake_targets/ran_build/build/*.so
|
|
||||||
|
|
||||||
#start from scratch for target executable
|
#start from scratch for target executable
|
||||||
FROM ubuntu:bionic as oai-gnb
|
FROM ubuntu:bionic as oai-gnb
|
||||||
ENV DEBIAN_FRONTEND=noninteractive
|
ENV DEBIAN_FRONTEND=noninteractive
|
||||||
ENV TZ=Europe
|
ENV TZ=Europe
|
||||||
RUN ln -snf /usr/share/zoneinfo/$TZ /etc/localtime && echo $TZ > /etc/timezone
|
|
||||||
|
|
||||||
RUN apt-get update && \
|
RUN apt-get update && \
|
||||||
DEBIAN_FRONTEND=noninteractive apt-get upgrade --yes && \
|
DEBIAN_FRONTEND=noninteractive apt-get upgrade --yes && \
|
||||||
DEBIAN_FRONTEND=noninteractive apt-get install --yes \
|
DEBIAN_FRONTEND=noninteractive apt-get install --yes \
|
||||||
software-properties-common \
|
software-properties-common \
|
||||||
|
procps \
|
||||||
libsctp1 \
|
libsctp1 \
|
||||||
|
tzdata \
|
||||||
libnettle6 \
|
libnettle6 \
|
||||||
libblas3 \
|
libblas3 \
|
||||||
libatlas3-base \
|
libatlas3-base \
|
||||||
@@ -76,6 +75,7 @@ RUN apt-get update && \
|
|||||||
|
|
||||||
WORKDIR /opt/oai-gnb/bin
|
WORKDIR /opt/oai-gnb/bin
|
||||||
COPY --from=gnb-build /oai-ran/targets/bin/nr-softmodem.Rel15 .
|
COPY --from=gnb-build /oai-ran/targets/bin/nr-softmodem.Rel15 .
|
||||||
|
COPY --from=gnb-build /oai-ran/docker/scripts/gnb_entrypoint.sh entrypoint.sh
|
||||||
|
|
||||||
WORKDIR /usr/local/lib/
|
WORKDIR /usr/local/lib/
|
||||||
COPY --from=gnb-build /oai-ran/targets/bin/liboai_eth_transpro.so.Rel15 .
|
COPY --from=gnb-build /oai-ran/targets/bin/liboai_eth_transpro.so.Rel15 .
|
||||||
@@ -96,23 +96,10 @@ RUN /bin/bash -c "ln -s /usr/local/lib/librfsimulator.so.Rel15 /usr/local/lib/li
|
|||||||
COPY --from=gnb-build /usr/local/lib/libprotobuf-c.so.1 .
|
COPY --from=gnb-build /usr/local/lib/libprotobuf-c.so.1 .
|
||||||
|
|
||||||
RUN ldconfig
|
RUN ldconfig
|
||||||
#debug
|
|
||||||
#RUN ldd /opt/oai-gnb/bin/nr-softmodem.Rel15
|
|
||||||
#RUN ldd /usr/local/lib/liboai_eth_transpro.so.Rel15
|
|
||||||
#RUN ldd /usr/local/lib/libtcp_bridge_oai.so.Rel15
|
|
||||||
#RUN ldd /usr/local/lib/librfsimulator.so.Rel15
|
|
||||||
#RUN ldd /usr/local/lib/liboai_usrpdevif.so.Rel15
|
|
||||||
#RUN ldd /usr/local/lib/libcoding.so
|
|
||||||
#RUN ldd /usr/local/lib/libparams_libconfig.so
|
|
||||||
#RUN ldd /usr/local/lib/libdfts.so
|
|
||||||
#RUN ldd /usr/local/lib/libldpc.so
|
|
||||||
#RUN ldd /usr/local/lib/libldpc_optim.so
|
|
||||||
#RUN ldd /usr/local/lib/libldpc_optim8seg.so
|
|
||||||
#RUN ldd /usr/local/lib/libldpc_orig.so
|
|
||||||
|
|
||||||
# Copy the relevant configuration files for gNB
|
# Copy the relevant configuration files for gNB
|
||||||
WORKDIR /opt/oai-gnb/etc
|
WORKDIR /opt/oai-gnb/etc
|
||||||
COPY --from=gnb-build /oai-ran/ci-scripts/conf_files/gnb.* ./
|
COPY --from=gnb-build /oai-ran/docker/etc .
|
||||||
|
|
||||||
WORKDIR /opt/oai-gnb
|
WORKDIR /opt/oai-gnb
|
||||||
#EXPOSE 2152/udp # S1U, GTP/UDP
|
#EXPOSE 2152/udp # S1U, GTP/UDP
|
||||||
@@ -122,6 +109,5 @@ WORKDIR /opt/oai-gnb
|
|||||||
#EXPOSE 50000/udp # IF5 / ORI (control)
|
#EXPOSE 50000/udp # IF5 / ORI (control)
|
||||||
#EXPOSE 50001/udp # IF5 / ECPRI (data)
|
#EXPOSE 50001/udp # IF5 / ECPRI (data)
|
||||||
|
|
||||||
#CMD ["/opt/oai-gnb/bin/nr-softmodem", "-O", "/opt/oai-gnb/etc/gnb.conf"]
|
ENTRYPOINT ["/opt/oai-gnb/bin/entrypoint.sh"]
|
||||||
#ENTRYPOINT ["/opt/oai-gnb/bin/entrypoint.sh"]
|
CMD ["/opt/oai-gnb/bin/nr-softmodem", "-O", "/opt/oai-gnb/etc/gnb.conf"]
|
||||||
CMD ["sleep", "infinity"]
|
|
||||||
|
|||||||
@@ -48,6 +48,7 @@ ENV TZ=Europe/Paris
|
|||||||
RUN yum update -y && \
|
RUN yum update -y && \
|
||||||
yum install -y --enablerepo="ubi-8-codeready-builder" \
|
yum install -y --enablerepo="ubi-8-codeready-builder" \
|
||||||
tzdata \
|
tzdata \
|
||||||
|
procps-ng \
|
||||||
atlas \
|
atlas \
|
||||||
net-tools \
|
net-tools \
|
||||||
iputils \
|
iputils \
|
||||||
|
|||||||
@@ -50,6 +50,7 @@ RUN apt-get update && \
|
|||||||
DEBIAN_FRONTEND=noninteractive apt-get upgrade --yes && \
|
DEBIAN_FRONTEND=noninteractive apt-get upgrade --yes && \
|
||||||
DEBIAN_FRONTEND=noninteractive apt-get install --yes \
|
DEBIAN_FRONTEND=noninteractive apt-get install --yes \
|
||||||
tzdata \
|
tzdata \
|
||||||
|
procps \
|
||||||
software-properties-common \
|
software-properties-common \
|
||||||
libblas3 \
|
libblas3 \
|
||||||
libatlas3-base \
|
libatlas3-base \
|
||||||
|
|||||||
@@ -48,6 +48,7 @@ FROM registry.access.redhat.com/ubi8/ubi:latest as oai-lte-ue
|
|||||||
RUN yum update -y && \
|
RUN yum update -y && \
|
||||||
yum install -y --enablerepo="ubi-8-codeready-builder" \
|
yum install -y --enablerepo="ubi-8-codeready-builder" \
|
||||||
lksctp-tools \
|
lksctp-tools \
|
||||||
|
procps-ng \
|
||||||
nettle \
|
nettle \
|
||||||
atlas \
|
atlas \
|
||||||
iproute \
|
iproute \
|
||||||
|
|||||||
@@ -52,6 +52,7 @@ RUN apt-get update && \
|
|||||||
DEBIAN_FRONTEND=noninteractive apt-get upgrade --yes && \
|
DEBIAN_FRONTEND=noninteractive apt-get upgrade --yes && \
|
||||||
DEBIAN_FRONTEND=noninteractive apt-get install --yes \
|
DEBIAN_FRONTEND=noninteractive apt-get install --yes \
|
||||||
software-properties-common \
|
software-properties-common \
|
||||||
|
procps \
|
||||||
libsctp1 \
|
libsctp1 \
|
||||||
libnettle6 \
|
libnettle6 \
|
||||||
liblapacke \
|
liblapacke \
|
||||||
|
|||||||
@@ -25,7 +25,7 @@
|
|||||||
#
|
#
|
||||||
#---------------------------------------------------------------------
|
#---------------------------------------------------------------------
|
||||||
|
|
||||||
FROM localhost/ran-build:latest AS nr-ue-build
|
FROM ran-build:latest AS nr-ue-build
|
||||||
|
|
||||||
RUN rm -Rf /oai-ran
|
RUN rm -Rf /oai-ran
|
||||||
WORKDIR /oai-ran
|
WORKDIR /oai-ran
|
||||||
@@ -49,6 +49,7 @@ FROM registry.access.redhat.com/ubi8/ubi:latest as oai-nr-ue
|
|||||||
RUN yum update -y && \
|
RUN yum update -y && \
|
||||||
yum install -y --enablerepo="ubi-8-codeready-builder" \
|
yum install -y --enablerepo="ubi-8-codeready-builder" \
|
||||||
lksctp-tools \
|
lksctp-tools \
|
||||||
|
procps-ng \
|
||||||
nettle \
|
nettle \
|
||||||
net-tools \
|
net-tools \
|
||||||
iputils \
|
iputils \
|
||||||
|
|||||||
@@ -54,6 +54,7 @@ RUN apt-get update && \
|
|||||||
DEBIAN_FRONTEND=noninteractive apt-get install --yes \
|
DEBIAN_FRONTEND=noninteractive apt-get install --yes \
|
||||||
software-properties-common \
|
software-properties-common \
|
||||||
libsctp1 \
|
libsctp1 \
|
||||||
|
procps \
|
||||||
libnettle6 \
|
libnettle6 \
|
||||||
liblapacke \
|
liblapacke \
|
||||||
libatlas3-base \
|
libatlas3-base \
|
||||||
|
|||||||
@@ -25,7 +25,7 @@
|
|||||||
#
|
#
|
||||||
#---------------------------------------------------------------------
|
#---------------------------------------------------------------------
|
||||||
|
|
||||||
FROM localhost/ran-build:develop AS phy-sim-build
|
FROM ran-build:develop AS phy-sim-build
|
||||||
|
|
||||||
RUN rm -Rf /oai-ran
|
RUN rm -Rf /oai-ran
|
||||||
WORKDIR /oai-ran
|
WORKDIR /oai-ran
|
||||||
|
|||||||
@@ -44,8 +44,11 @@ RUN rm -f /etc/rhsm-host && \
|
|||||||
file \
|
file \
|
||||||
psmisc \
|
psmisc \
|
||||||
git \
|
git \
|
||||||
|
# python3-pip and pyyaml are used for conf template generation
|
||||||
|
python3-pip
|
||||||
#unzip is needed for protobuf
|
#unzip is needed for protobuf
|
||||||
unzip && \
|
unzip && \
|
||||||
|
pip3 install --ignore-installed pyyaml && \
|
||||||
echo "/usr/local/lib" > /etc/ld.so.conf.d/local-lib.conf && \
|
echo "/usr/local/lib" > /etc/ld.so.conf.d/local-lib.conf && \
|
||||||
echo "/usr/local/lib64" >> /etc/ld.so.conf.d/local-lib.conf
|
echo "/usr/local/lib64" >> /etc/ld.so.conf.d/local-lib.conf
|
||||||
|
|
||||||
|
|||||||
@@ -42,7 +42,10 @@ RUN apt-get update && \
|
|||||||
git \
|
git \
|
||||||
xxd \
|
xxd \
|
||||||
#unzip is needed for protobuf
|
#unzip is needed for protobuf
|
||||||
unzip
|
unzip \
|
||||||
|
# python3-pip for conf template generation
|
||||||
|
python3-pip && \
|
||||||
|
pip3 install --ignore-installed pyyaml
|
||||||
|
|
||||||
# In some network environments, GIT proxy is required
|
# In some network environments, GIT proxy is required
|
||||||
RUN /bin/bash -c "if [[ -v NEEDED_GIT_PROXY ]]; then git config --global http.proxy $NEEDED_GIT_PROXY; fi"
|
RUN /bin/bash -c "if [[ -v NEEDED_GIT_PROXY ]]; then git config --global http.proxy $NEEDED_GIT_PROXY; fi"
|
||||||
@@ -56,4 +59,3 @@ RUN /bin/sh oaienv && \
|
|||||||
cd cmake_targets && \
|
cd cmake_targets && \
|
||||||
mkdir -p log && \
|
mkdir -p log && \
|
||||||
./build_oai -I -w USRP
|
./build_oai -I -w USRP
|
||||||
|
|
||||||
|
|||||||
@@ -4,6 +4,8 @@ set -euo pipefail
|
|||||||
|
|
||||||
PREFIX=/opt/oai-enb
|
PREFIX=/opt/oai-enb
|
||||||
RRC_INACTIVITY_THRESHOLD=${RRC_INACTIVITY_THRESHOLD:-0}
|
RRC_INACTIVITY_THRESHOLD=${RRC_INACTIVITY_THRESHOLD:-0}
|
||||||
|
ENABLE_MEASUREMENT_REPORTS=${ENABLE_MEASUREMENT_REPORTS:-no}
|
||||||
|
ENABLE_X2=${ENABLE_X2:-no}
|
||||||
|
|
||||||
# Based another env var, pick one template to use
|
# Based another env var, pick one template to use
|
||||||
if [[ -v USE_FDD_CU ]]; then ln -s $PREFIX/etc/cu.fdd.conf $PREFIX/etc/enb.conf; fi
|
if [[ -v USE_FDD_CU ]]; then ln -s $PREFIX/etc/cu.fdd.conf $PREFIX/etc/enb.conf; fi
|
||||||
|
|||||||
@@ -123,7 +123,7 @@
|
|||||||
- key: bands
|
- key: bands
|
||||||
env: "@UTRA_BAND_ID@"
|
env: "@UTRA_BAND_ID@"
|
||||||
|
|
||||||
- filePrefix: enb.band7.tm1.25PRB.usrpb210
|
- filePrefix: enb.band7.tm1.fr1.25PRB.usrpb210.conf
|
||||||
outputfilename: "enb.fdd.conf"
|
outputfilename: "enb.fdd.conf"
|
||||||
config:
|
config:
|
||||||
- key: Active_eNBs
|
- key: Active_eNBs
|
||||||
@@ -147,6 +147,10 @@
|
|||||||
env: "@NID_CELL@"
|
env: "@NID_CELL@"
|
||||||
- key: N_RB_DL
|
- key: N_RB_DL
|
||||||
env: "@NB_PRB@"
|
env: "@NB_PRB@"
|
||||||
|
- key: enable_measurement_reports
|
||||||
|
env: "@ENABLE_MEASUREMENT_REPORTS@"
|
||||||
|
- key: enable_x2
|
||||||
|
env: "@ENABLE_X2@"
|
||||||
- key: ipv4
|
- key: ipv4
|
||||||
env: "@MME_S1C_IP_ADDRESS@"
|
env: "@MME_S1C_IP_ADDRESS@"
|
||||||
- key: ENB_INTERFACE_NAME_FOR_S1_MME
|
- key: ENB_INTERFACE_NAME_FOR_S1_MME
|
||||||
|
|||||||
@@ -48,18 +48,19 @@ def main():
|
|||||||
"du.band7.tm1.25PRB": f'{data[0]["paths"]["dest_dir"]}/{outputfilename}',
|
"du.band7.tm1.25PRB": f'{data[0]["paths"]["dest_dir"]}/{outputfilename}',
|
||||||
"rru.fdd": f'{data[0]["paths"]["dest_dir"]}/{outputfilename}',
|
"rru.fdd": f'{data[0]["paths"]["dest_dir"]}/{outputfilename}',
|
||||||
"rru.tdd": f'{data[0]["paths"]["dest_dir"]}/{outputfilename}',
|
"rru.tdd": f'{data[0]["paths"]["dest_dir"]}/{outputfilename}',
|
||||||
"enb.band7.tm1.25PRB.usrpb210": f'{data[0]["paths"]["dest_dir"]}/{outputfilename}',
|
"enb.band7.tm1.fr1.25PRB.usrpb210.conf": f'{data[0]["paths"]["dest_dir"]}/{outputfilename}',
|
||||||
"enb.band40.tm1.25PRB.FairScheduler.usrpb210": f'{data[0]["paths"]["dest_dir"]}/{outputfilename}',
|
"enb.band40.tm1.25PRB.FairScheduler.usrpb210": f'{data[0]["paths"]["dest_dir"]}/{outputfilename}',
|
||||||
"rcc.band7.tm1.nfapi": f'{data[0]["paths"]["dest_dir"]}/{outputfilename}',
|
"rcc.band7.tm1.nfapi": f'{data[0]["paths"]["dest_dir"]}/{outputfilename}',
|
||||||
"rcc.band7.tm1.if4p5.lo.25PRB": f'{data[0]["paths"]["dest_dir"]}/{outputfilename}',
|
"rcc.band7.tm1.if4p5.lo.25PRB": f'{data[0]["paths"]["dest_dir"]}/{outputfilename}',
|
||||||
"rcc.band40.tm1.25PRB": f'{data[0]["paths"]["dest_dir"]}/{outputfilename}',
|
"rcc.band40.tm1.25PRB": f'{data[0]["paths"]["dest_dir"]}/{outputfilename}',
|
||||||
|
"gnb.band78.tm1.fr1.106PRB.usrpb210.conf": f'{data[0]["paths"]["dest_dir"]}/{outputfilename}',
|
||||||
"ue.nfapi": f'{data[0]["paths"]["dest_dir"]}/{outputfilename}',
|
"ue.nfapi": f'{data[0]["paths"]["dest_dir"]}/{outputfilename}',
|
||||||
"ue_sim_ci": f'{data[0]["paths"]["dest_dir"]}/{outputfilename}'
|
"ue_sim_ci": f'{data[0]["paths"]["dest_dir"]}/{outputfilename}'
|
||||||
}
|
}
|
||||||
print('inputfile = ' + inputfile)
|
print('inputfile = ' + inputfile)
|
||||||
if filePrefix in prefix_outputfile:
|
if filePrefix in prefix_outputfile:
|
||||||
outputfile1 = prefix_outputfile[filePrefix]
|
outputfile1 = prefix_outputfile[filePrefix]
|
||||||
|
|
||||||
directory = f'{data[0]["paths"]["dest_dir"]}'
|
directory = f'{data[0]["paths"]["dest_dir"]}'
|
||||||
if not os.path.exists(directory):
|
if not os.path.exists(directory):
|
||||||
os.makedirs(directory, exist_ok=True)
|
os.makedirs(directory, exist_ok=True)
|
||||||
|
|||||||
Executable
+62
@@ -0,0 +1,62 @@
|
|||||||
|
#!/bin/bash
|
||||||
|
|
||||||
|
set -euo pipefail
|
||||||
|
|
||||||
|
PREFIX=/opt/oai-gnb
|
||||||
|
ENABLE_X2=${ENABLE_X2:-yes}
|
||||||
|
|
||||||
|
# Based another env var, pick one template to use
|
||||||
|
if [[ -v USE_TDD_MONO ]]; then ln -s $PREFIX/etc/gnb.tdd.conf $PREFIX/etc/gnb.conf; fi
|
||||||
|
|
||||||
|
# Only this template will be manipulated
|
||||||
|
CONFIG_FILES=`ls $PREFIX/etc/gnb.conf || true`
|
||||||
|
|
||||||
|
for c in ${CONFIG_FILES}; do
|
||||||
|
# grep variable names (format: ${VAR}) from template to be rendered
|
||||||
|
VARS=$(grep -oP '@[a-zA-Z0-9_]+@' ${c} | sort | uniq | xargs)
|
||||||
|
|
||||||
|
# create sed expressions for substituting each occurrence of ${VAR}
|
||||||
|
# with the value of the environment variable "VAR"
|
||||||
|
EXPRESSIONS=""
|
||||||
|
for v in ${VARS}; do
|
||||||
|
NEW_VAR=`echo $v | sed -e "s#@##g"`
|
||||||
|
if [[ "${!NEW_VAR}x" == "x" ]]; then
|
||||||
|
echo "Error: Environment variable '${NEW_VAR}' is not set." \
|
||||||
|
"Config file '$(basename $c)' requires all of $VARS."
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
EXPRESSIONS="${EXPRESSIONS};s|${v}|${!NEW_VAR}|g"
|
||||||
|
done
|
||||||
|
EXPRESSIONS="${EXPRESSIONS#';'}"
|
||||||
|
|
||||||
|
# render template and inline replace config file
|
||||||
|
sed -i "${EXPRESSIONS}" ${c}
|
||||||
|
done
|
||||||
|
|
||||||
|
# Load the USRP binaries
|
||||||
|
if [[ -v USE_B2XX ]]; then
|
||||||
|
/usr/lib/uhd/utils/uhd_images_downloader.py -t b2xx
|
||||||
|
elif [[ -v USE_X3XX ]]; then
|
||||||
|
/usr/lib/uhd/utils/uhd_images_downloader.py -t x3xx
|
||||||
|
elif [[ -v USE_N3XX ]]; then
|
||||||
|
/usr/lib/uhd/utils/uhd_images_downloader.py -t n3xx
|
||||||
|
fi
|
||||||
|
|
||||||
|
echo "=================================="
|
||||||
|
echo "== Starting gNB soft modem"
|
||||||
|
if [[ -v USE_ADDITIONAL_OPTIONS ]]; then
|
||||||
|
echo "Additional option(s): ${USE_ADDITIONAL_OPTIONS}"
|
||||||
|
new_args=()
|
||||||
|
while [[ $# -gt 0 ]]; do
|
||||||
|
new_args+=("$1")
|
||||||
|
shift
|
||||||
|
done
|
||||||
|
for word in ${USE_ADDITIONAL_OPTIONS}; do
|
||||||
|
new_args+=("$word")
|
||||||
|
done
|
||||||
|
echo "${new_args[@]}"
|
||||||
|
exec "${new_args[@]}"
|
||||||
|
else
|
||||||
|
echo "$@"
|
||||||
|
exec "$@"
|
||||||
|
fi
|
||||||
@@ -0,0 +1,64 @@
|
|||||||
|
#/*
|
||||||
|
# * Licensed to the OpenAirInterface (OAI) Software Alliance under one or more
|
||||||
|
# * contributor license agreements. See the NOTICE file distributed with
|
||||||
|
# * this work for additional information regarding copyright ownership.
|
||||||
|
# * The OpenAirInterface Software Alliance licenses this file to You under
|
||||||
|
# * the OAI Public License, Version 1.1 (the "License"); you may not use this file
|
||||||
|
# * except in compliance with the License.
|
||||||
|
# * You may obtain a copy of the License at
|
||||||
|
# *
|
||||||
|
# * http://www.openairinterface.org/?page_id=698
|
||||||
|
# *
|
||||||
|
# * Unless required by applicable law or agreed to in writing, software
|
||||||
|
# * distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
# * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
# * See the License for the specific language governing permissions and
|
||||||
|
# * limitations under the License.
|
||||||
|
# *-------------------------------------------------------------------------------
|
||||||
|
# * For more information about the OpenAirInterface (OAI) Software Alliance:
|
||||||
|
# * contact@openairinterface.org
|
||||||
|
# */
|
||||||
|
|
||||||
|
---
|
||||||
|
- paths:
|
||||||
|
source_dir: "ci-scripts/conf_files/"
|
||||||
|
dest_dir: docker/etc
|
||||||
|
|
||||||
|
- configurations:
|
||||||
|
- filePrefix: gnb.band78.tm1.fr1.106PRB.usrpb210.conf
|
||||||
|
outputfilename: "gnb.tdd.conf"
|
||||||
|
config:
|
||||||
|
- key: Active_gNBs
|
||||||
|
env: "@GNB_NAME@"
|
||||||
|
- key: gNB_name
|
||||||
|
env: "@GNB_NAME@"
|
||||||
|
- key: plmn_list
|
||||||
|
env:
|
||||||
|
mcc: "@MCC@"
|
||||||
|
mnc: "@MNC@"
|
||||||
|
mnc_length: "@MNC_LENGTH@"
|
||||||
|
- key: tracking_area_code
|
||||||
|
env: "@TAC@"
|
||||||
|
- key: enable_x2
|
||||||
|
env: "@ENABLE_X2@"
|
||||||
|
- key: ipv4
|
||||||
|
env: "@ENB_X2_IP_ADDRESS@"
|
||||||
|
- key: GNB_INTERFACE_NAME_FOR_S1_MME
|
||||||
|
env: "@GNB_S1C_IF_NAME@"
|
||||||
|
- key: GNB_IPV4_ADDRESS_FOR_S1_MME
|
||||||
|
env: "@GNB_S1C_IP_ADDRESS@"
|
||||||
|
- key: GNB_INTERFACE_NAME_FOR_S1U
|
||||||
|
env: "@GNB_S1U_IF_NAME@"
|
||||||
|
- key: GNB_IPV4_ADDRESS_FOR_S1U
|
||||||
|
env: "@GNB_S1U_IP_ADDRESS@"
|
||||||
|
- key: GNB_IPV4_ADDRESS_FOR_X2C
|
||||||
|
env: "@GNB_X2_IP_ADDRESS@"
|
||||||
|
- key: rrc_inactivity_threshold
|
||||||
|
env: "@RRC_INACTIVITY_THRESHOLD@"
|
||||||
|
- key: FLEXRAN_ENABLED
|
||||||
|
env: "@FLEXRAN_ENABLED@"
|
||||||
|
- key: FLEXRAN_INTERFACE_NAME
|
||||||
|
env: "@FLEXRAN_INTERFACE_NAME@"
|
||||||
|
- key: FLEXRAN_IPV4_ADDRESS
|
||||||
|
env: "@FLEXRAN_IPV4_ADDRESS@"
|
||||||
|
|
||||||
Reference in New Issue
Block a user