Merge remote-tracking branch 'origin/fix_fr2_ssb_start_subcarrier' into integration_2024_w09
This commit is contained in:
+47
-89
@@ -1,41 +1,42 @@
|
|||||||
Active_gNBs = ( "gNB-Eurecom-5GNRBox");
|
Active_gNBs = ( "gNB-OAI");
|
||||||
# Asn1_verbosity, choice in: none, info, annoying
|
# Asn1_verbosity, choice in: none, info, annoying
|
||||||
Asn1_verbosity = "none";
|
Asn1_verbosity = "none";
|
||||||
|
|
||||||
|
sa = 1;
|
||||||
|
|
||||||
gNBs =
|
gNBs =
|
||||||
(
|
(
|
||||||
{
|
{
|
||||||
////////// Identification parameters:
|
////////// Identification parameters:
|
||||||
gNB_ID = 0xe00;
|
gNB_ID = 0xe00;
|
||||||
|
gNB_name = "gNB-OAI";
|
||||||
cell_type = "CELL_MACRO_GNB";
|
|
||||||
|
|
||||||
gNB_name = "gNB-Eurecom-5GNRBox";
|
|
||||||
|
|
||||||
// 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;});
|
plmn_list = ({ mcc = 208; mnc = 99; mnc_length = 2; snssaiList = ({ sst = 1; }) });
|
||||||
|
nr_cellid = 12345678L;
|
||||||
|
|
||||||
tr_s_preference = "local_mac"
|
tr_s_preference = "local_mac"
|
||||||
|
|
||||||
////////// Physical parameters:
|
////////// Physical parameters:
|
||||||
|
|
||||||
|
sib1_tda = 15;
|
||||||
min_rxtxtime = 6;
|
min_rxtxtime = 6;
|
||||||
|
|
||||||
servingCellConfigCommon = (
|
servingCellConfigCommon = (
|
||||||
{
|
{
|
||||||
#spCellConfigCommon
|
#spCellConfigCommon
|
||||||
|
|
||||||
physCellId = 0;
|
physCellId = 10;
|
||||||
|
|
||||||
# downlinkConfigCommon
|
# downlinkConfigCommon
|
||||||
#frequencyInfoDL
|
#frequencyInfoDL
|
||||||
# this is pointA + 23 PRBs@120kHz SCS (same as initial BWP)
|
# this is pointA + 16 PRBs@120kHz SCS (same as initial BWP)
|
||||||
absoluteFrequencySSB = 2071241;
|
absoluteFrequencySSB = 2071387;
|
||||||
dl_frequencyBand = 261;
|
dl_frequencyBand = 261;
|
||||||
# this is 27.900 GHz
|
# this is 27.900 GHz
|
||||||
dl_absoluteFrequencyPointA = 2070833;
|
dl_absoluteFrequencyPointA = 2071001;
|
||||||
#scs-SpecificCarrierList
|
#scs-SpecificCarrierList
|
||||||
dl_offstToCarrier = 0;
|
dl_offstToCarrier = 0;
|
||||||
# subcarrierSpacing
|
# subcarrierSpacing
|
||||||
@@ -50,7 +51,7 @@ gNBs =
|
|||||||
# 0=kHz15, 1=kHz30, 2=kHz60, 3=kHz120
|
# 0=kHz15, 1=kHz30, 2=kHz60, 3=kHz120
|
||||||
initialDLBWPsubcarrierSpacing = 3;
|
initialDLBWPsubcarrierSpacing = 3;
|
||||||
#pdcch-ConfigCommon
|
#pdcch-ConfigCommon
|
||||||
initialDLBWPcontrolResourceSetZero = 12;
|
initialDLBWPcontrolResourceSetZero = 1;
|
||||||
initialDLBWPsearchSpaceZero = 0;
|
initialDLBWPsearchSpaceZero = 0;
|
||||||
|
|
||||||
#uplinkConfigCommon
|
#uplinkConfigCommon
|
||||||
@@ -85,12 +86,12 @@ gNBs =
|
|||||||
powerRampingStep = 1;
|
powerRampingStep = 1;
|
||||||
#ra_ReponseWindow
|
#ra_ReponseWindow
|
||||||
#1,2,4,8,10,20,40,80
|
#1,2,4,8,10,20,40,80
|
||||||
ra_ResponseWindow = 7;
|
ra_ResponseWindow = 5;
|
||||||
#ssb_perRACH_OccasionAndCB_PreamblesPerSSB_PR
|
#ssb_perRACH_OccasionAndCB_PreamblesPerSSB_PR
|
||||||
#0=oneeighth,1=onefourth,2=half,3=one,4=two,5=four,6=eight,7=sixteen
|
#1=oneeighth,2=onefourth,3=half,4=one,5=two,6=four,7=eight,8=sixteen
|
||||||
ssb_perRACH_OccasionAndCB_PreamblesPerSSB_PR = 4;
|
ssb_perRACH_OccasionAndCB_PreamblesPerSSB_PR = 3;
|
||||||
#oneHalf (0..15) 4,8,12,16,...60,64
|
#oneHalf (0..15) 4,8,12,16,...60,64
|
||||||
ssb_perRACH_OccasionAndCB_PreamblesPerSSB = 7;
|
ssb_perRACH_OccasionAndCB_PreamblesPerSSB = 15;
|
||||||
#ra_ContentionResolutionTimer
|
#ra_ContentionResolutionTimer
|
||||||
#(0..7) 8,16,24,32,40,48,56,64
|
#(0..7) 8,16,24,32,40,48,56,64
|
||||||
ra_ContentionResolutionTimer = 7;
|
ra_ContentionResolutionTimer = 7;
|
||||||
@@ -101,8 +102,7 @@ gNBs =
|
|||||||
prach_RootSequenceIndex = 1;
|
prach_RootSequenceIndex = 1;
|
||||||
# SCS for msg1, can only be 15 for 30 kHz < 6 GHz, takes precendence over the one derived from prach-ConfigIndex
|
# SCS for msg1, can only be 15 for 30 kHz < 6 GHz, takes precendence over the one derived from prach-ConfigIndex
|
||||||
#
|
#
|
||||||
msg1_SubcarrierSpacing = 3,
|
msg1_SubcarrierSpacing = 3;
|
||||||
|
|
||||||
# restrictedSetConfig
|
# restrictedSetConfig
|
||||||
# 0=unrestricted, 1=restricted type A, 2=restricted type B
|
# 0=unrestricted, 1=restricted type A, 2=restricted type B
|
||||||
restrictedSetConfig = 0,
|
restrictedSetConfig = 0,
|
||||||
@@ -119,7 +119,7 @@ gNBs =
|
|||||||
# ssb_PositionsInBurs_BitmapPR
|
# ssb_PositionsInBurs_BitmapPR
|
||||||
# 1=short, 2=medium, 3=long
|
# 1=short, 2=medium, 3=long
|
||||||
ssb_PositionsInBurst_PR = 3;
|
ssb_PositionsInBurst_PR = 3;
|
||||||
ssb_PositionsInBurst_Bitmap = 0x0001000100010001L;
|
ssb_PositionsInBurst_Bitmap = 1;
|
||||||
|
|
||||||
# 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
|
||||||
@@ -152,7 +152,6 @@ gNBs =
|
|||||||
|
|
||||||
);
|
);
|
||||||
|
|
||||||
|
|
||||||
# ------- SCTP definitions
|
# ------- SCTP definitions
|
||||||
SCTP :
|
SCTP :
|
||||||
{
|
{
|
||||||
@@ -162,91 +161,58 @@ gNBs =
|
|||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
////////// MME parameters:
|
////////// AMF parameters:
|
||||||
mme_ip_address = ( { ipv4 = "192.168.18.99";
|
amf_ip_address = ( { ipv4 = "192.168.71.132";
|
||||||
ipv6 = "192:168:30::17";
|
ipv6 = "192:168:30::17";
|
||||||
active = "yes";
|
active = "yes";
|
||||||
preference = "ipv4";
|
preference = "ipv4";
|
||||||
}
|
}
|
||||||
);
|
);
|
||||||
|
|
||||||
///X2
|
|
||||||
enable_x2 = "no";
|
|
||||||
t_reloc_prep = 1000; /* unit: millisecond */
|
|
||||||
tx2_reloc_overall = 2000; /* unit: millisecond */
|
|
||||||
t_dc_prep = 1000; /* unit: millisecond */
|
|
||||||
t_dc_overall = 2000; /* unit: millisecond */
|
|
||||||
target_enb_x2_ip_address = (
|
|
||||||
{ ipv4 = "192.168.18.199";
|
|
||||||
ipv6 = "192:168:30::17";
|
|
||||||
preference = "ipv4";
|
|
||||||
}
|
|
||||||
);
|
|
||||||
|
|
||||||
NETWORK_INTERFACES :
|
NETWORK_INTERFACES :
|
||||||
{
|
{
|
||||||
|
GNB_INTERFACE_NAME_FOR_NG_AMF = "eth0";
|
||||||
GNB_INTERFACE_NAME_FOR_S1_MME = "eth0";
|
GNB_IPV4_ADDRESS_FOR_NG_AMF = "192.168.71.140/24";
|
||||||
GNB_IPV4_ADDRESS_FOR_S1_MME = "192.168.18.198/24";
|
GNB_INTERFACE_NAME_FOR_NGU = "eth0";
|
||||||
GNB_INTERFACE_NAME_FOR_S1U = "eth0";
|
GNB_IPV4_ADDRESS_FOR_NGU = "192.168.71.140/24";
|
||||||
GNB_IPV4_ADDRESS_FOR_S1U = "192.168.18.198/24";
|
|
||||||
GNB_PORT_FOR_S1U = 2152; # Spec 2152
|
GNB_PORT_FOR_S1U = 2152; # Spec 2152
|
||||||
GNB_IPV4_ADDRESS_FOR_X2C = "192.168.18.198/24";
|
|
||||||
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";
|
||||||
ofdm_offset_divisor = 8; #set this to UINT_MAX for offset 0
|
prach_dtx_threshold = 120;
|
||||||
|
#pucch0_dtx_threshold = 120;
|
||||||
}
|
}
|
||||||
);
|
);
|
||||||
|
|
||||||
RUs = (
|
RUs = ({
|
||||||
{
|
local_rf = "yes"
|
||||||
local_rf = "yes"
|
nb_tx = 1;
|
||||||
nb_tx = 1;
|
nb_rx = 1;
|
||||||
nb_rx = 1;
|
att_tx = 0;
|
||||||
att_tx = 0;
|
att_rx = 0;
|
||||||
att_rx = 0;
|
sl_ahead = 12;
|
||||||
bands = [7];
|
bands = [261];
|
||||||
sl_ahead = 12;
|
max_pdschReferenceSignalPower = -27;
|
||||||
max_pdschReferenceSignalPower = -27;
|
eNB_instances = [0];
|
||||||
max_rxgain = 75;
|
});
|
||||||
eNB_instances = [0];
|
|
||||||
sdr_addrs = "addr=192.168.10.2,second_addr=192.168.20.2";
|
|
||||||
if_freq = 5124520000L;
|
|
||||||
clock_src = "external";
|
|
||||||
time_src = "external";
|
|
||||||
}
|
|
||||||
);
|
|
||||||
|
|
||||||
rfsimulator: {
|
rfsimulator: {
|
||||||
serveraddr = "server";
|
serveraddr = "server";
|
||||||
};
|
};
|
||||||
|
|
||||||
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";
|
|
||||||
}
|
|
||||||
);
|
|
||||||
|
|
||||||
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
|
||||||
@@ -264,14 +230,6 @@ security = {
|
|||||||
drb_integrity = "no";
|
drb_integrity = "no";
|
||||||
};
|
};
|
||||||
|
|
||||||
log_config :
|
log_config: {
|
||||||
{
|
global_log_level ="info";
|
||||||
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";
|
|
||||||
};
|
|
||||||
|
|
||||||
@@ -22,13 +22,12 @@
|
|||||||
-->
|
-->
|
||||||
<testCaseList>
|
<testCaseList>
|
||||||
<htmlTabRef>rfsim-fr2-32prb-5gnr-tdd</htmlTabRef>
|
<htmlTabRef>rfsim-fr2-32prb-5gnr-tdd</htmlTabRef>
|
||||||
<htmlTabName>Monolithic FR2 do-ra gNB</htmlTabName>
|
<htmlTabName>Monolithic FR2 gNB</htmlTabName>
|
||||||
<htmlTabIcon>wrench</htmlTabIcon>
|
<htmlTabIcon>wrench</htmlTabIcon>
|
||||||
<repeatCount>1</repeatCount>
|
<repeatCount>1</repeatCount>
|
||||||
<TestCaseRequestedList>
|
<TestCaseRequestedList>
|
||||||
111111
|
111111
|
||||||
100001
|
100001
|
||||||
004000
|
|
||||||
000000
|
000000
|
||||||
000001
|
000001
|
||||||
020001
|
020001
|
||||||
@@ -44,42 +43,35 @@
|
|||||||
<images_to_pull>oai-gnb-asan oai-nr-ue-asan</images_to_pull>
|
<images_to_pull>oai-gnb-asan oai-nr-ue-asan</images_to_pull>
|
||||||
</testCase>
|
</testCase>
|
||||||
|
|
||||||
<testCase id="004000">
|
|
||||||
<class>Custom_Command</class>
|
|
||||||
<desc>Clean-Up any residual volume</desc>
|
|
||||||
<node>localhost</node>
|
|
||||||
<command>docker volume rm 5g_rfsimulator_fr2_32prb_rrc.config</command>
|
|
||||||
</testCase>
|
|
||||||
|
|
||||||
<testCase id="000000">
|
<testCase id="000000">
|
||||||
<class>DeployGenObject</class>
|
<class>DeployGenObject</class>
|
||||||
<desc>Deploy OAI gNB</desc>
|
<desc>Deploy OAI gNB</desc>
|
||||||
<yaml_path>yaml_files/5g_rfsimulator_fr2_32prb</yaml_path>
|
<yaml_path>yaml_files/5g_rfsimulator_fr2_32prb</yaml_path>
|
||||||
<services>oai-gnb</services>
|
<services>mysql oai-amf oai-smf oai-upf oai-ext-dn</services>
|
||||||
<nb_healthy>1</nb_healthy>
|
<nb_healthy>5</nb_healthy>
|
||||||
</testCase>
|
</testCase>
|
||||||
|
|
||||||
<testCase id="000001">
|
<testCase id="000001">
|
||||||
<class>DeployGenObject</class>
|
<class>DeployGenObject</class>
|
||||||
<desc>Deploy OAI NR-UE</desc>
|
<desc>Deploy OAI NR-UE</desc>
|
||||||
<yaml_path>yaml_files/5g_rfsimulator_fr2_32prb</yaml_path>
|
<yaml_path>yaml_files/5g_rfsimulator_fr2_32prb</yaml_path>
|
||||||
<services>oai-nr-ue</services>
|
<services>oai-gnb oai-nr-ue</services>
|
||||||
<nb_healthy>2</nb_healthy>
|
<nb_healthy>7</nb_healthy>
|
||||||
</testCase>
|
</testCase>
|
||||||
|
|
||||||
<testCase id="020001">
|
<testCase id="020001">
|
||||||
<class>Ping</class>
|
<class>Ping</class>
|
||||||
<desc>Ping gNB from NR-UE</desc>
|
<desc>Ping ext-dn from NR-UE</desc>
|
||||||
<id>rfsim5g_ue</id>
|
<id>rfsim5g_ue</id>
|
||||||
<ping_args>-c20 -i0.2 10.0.1.1</ping_args>
|
<ping_args>-c 20 -i0.2 192.168.72.135</ping_args>
|
||||||
<ping_packetloss_threshold>0</ping_packetloss_threshold>
|
<ping_packetloss_threshold>0</ping_packetloss_threshold>
|
||||||
</testCase>
|
</testCase>
|
||||||
|
|
||||||
<testCase id="020002">
|
<testCase id="020002">
|
||||||
<class>Ping</class>
|
<class>Ping</class>
|
||||||
<desc>Ping NR-UE from gNB</desc>
|
<desc>Ping NR-UE from ext-dn</desc>
|
||||||
<id>rfsim5g_gnb_nos1</id>
|
<id>rfsim5g_ext_dn</id>
|
||||||
<ping_args>-c20 -i0.2 10.0.1.2</ping_args>
|
<ping_args>-c 20 12.1.1.2 -i0.2</ping_args>
|
||||||
<ping_packetloss_threshold>0</ping_packetloss_threshold>
|
<ping_packetloss_threshold>0</ping_packetloss_threshold>
|
||||||
</testCase>
|
</testCase>
|
||||||
|
|
||||||
@@ -87,8 +79,8 @@
|
|||||||
<class>UndeployGenObject</class>
|
<class>UndeployGenObject</class>
|
||||||
<desc>Undeploy all OAI 5G stack</desc>
|
<desc>Undeploy all OAI 5G stack</desc>
|
||||||
<yaml_path>yaml_files/5g_rfsimulator_fr2_32prb</yaml_path>
|
<yaml_path>yaml_files/5g_rfsimulator_fr2_32prb</yaml_path>
|
||||||
<d_retx_th>0,0,0,0</d_retx_th>
|
<d_retx_th>10,0,0,0</d_retx_th>
|
||||||
<u_retx_th>0,0,0,0</u_retx_th>
|
<u_retx_th>10,0,0,0</u_retx_th>
|
||||||
</testCase>
|
</testCase>
|
||||||
|
|
||||||
</testCaseList>
|
</testCaseList>
|
||||||
|
|||||||
@@ -26,7 +26,6 @@
|
|||||||
<htmlTabIcon>trash</htmlTabIcon>
|
<htmlTabIcon>trash</htmlTabIcon>
|
||||||
<TestCaseRequestedList>
|
<TestCaseRequestedList>
|
||||||
100002
|
100002
|
||||||
004000
|
|
||||||
222222
|
222222
|
||||||
</TestCaseRequestedList>
|
</TestCaseRequestedList>
|
||||||
<TestCaseExclusionList></TestCaseExclusionList>
|
<TestCaseExclusionList></TestCaseExclusionList>
|
||||||
@@ -37,13 +36,6 @@
|
|||||||
<yaml_path>yaml_files/5g_rfsimulator_fr2_32prb</yaml_path>
|
<yaml_path>yaml_files/5g_rfsimulator_fr2_32prb</yaml_path>
|
||||||
</testCase>
|
</testCase>
|
||||||
|
|
||||||
<testCase id="004000">
|
|
||||||
<class>Custom_Command</class>
|
|
||||||
<desc>Clean-Up any residual volume</desc>
|
|
||||||
<node>localhost</node>
|
|
||||||
<command>docker volume rm 5g_rfsimulator_fr2_32prb_rrc.config</command>
|
|
||||||
</testCase>
|
|
||||||
|
|
||||||
<testCase id="222222">
|
<testCase id="222222">
|
||||||
<class>Clean_Test_Server_Images</class>
|
<class>Clean_Test_Server_Images</class>
|
||||||
<desc>Clean Test Images on Test Server</desc>
|
<desc>Clean Test Images on Test Server</desc>
|
||||||
|
|||||||
@@ -1,18 +1,99 @@
|
|||||||
version: '3.8'
|
version: '3.8'
|
||||||
services:
|
services:
|
||||||
|
mysql:
|
||||||
|
container_name: "rfsim5g-mysql"
|
||||||
|
image: mysql:8.0
|
||||||
|
volumes:
|
||||||
|
- ../5g_rfsimulator/oai_db.sql:/docker-entrypoint-initdb.d/oai_db.sql
|
||||||
|
- ../5g_rfsimulator/mysql-healthcheck.sh:/tmp/mysql-healthcheck.sh
|
||||||
|
environment:
|
||||||
|
- TZ=Europe/Paris
|
||||||
|
- MYSQL_DATABASE=oai_db
|
||||||
|
- MYSQL_USER=test
|
||||||
|
- MYSQL_PASSWORD=test
|
||||||
|
- MYSQL_ROOT_PASSWORD=linux
|
||||||
|
healthcheck:
|
||||||
|
test: /bin/bash -c "/tmp/mysql-healthcheck.sh"
|
||||||
|
interval: 10s
|
||||||
|
timeout: 5s
|
||||||
|
retries: 30
|
||||||
|
networks:
|
||||||
|
public_net:
|
||||||
|
ipv4_address: 192.168.71.131
|
||||||
|
oai-amf:
|
||||||
|
container_name: "rfsim5g-oai-amf"
|
||||||
|
image: oaisoftwarealliance/oai-amf:v2.0.0
|
||||||
|
environment:
|
||||||
|
- TZ=Europe/paris
|
||||||
|
volumes:
|
||||||
|
- ../5g_rfsimulator/mini_nonrf_config.yaml:/openair-amf/etc/config.yaml
|
||||||
|
depends_on:
|
||||||
|
- mysql
|
||||||
|
networks:
|
||||||
|
public_net:
|
||||||
|
ipv4_address: 192.168.71.132
|
||||||
|
oai-smf:
|
||||||
|
container_name: "rfsim5g-oai-smf"
|
||||||
|
image: oaisoftwarealliance/oai-smf:v2.0.0
|
||||||
|
environment:
|
||||||
|
- TZ=Europe/Paris
|
||||||
|
volumes:
|
||||||
|
- ../5g_rfsimulator/mini_nonrf_config.yaml:/openair-smf/etc/config.yaml
|
||||||
|
depends_on:
|
||||||
|
- oai-amf
|
||||||
|
networks:
|
||||||
|
public_net:
|
||||||
|
ipv4_address: 192.168.71.133
|
||||||
|
oai-upf:
|
||||||
|
container_name: "rfsim5g-oai-upf"
|
||||||
|
image: oaisoftwarealliance/oai-upf:v2.0.0
|
||||||
|
environment:
|
||||||
|
- TZ=Europe/Paris
|
||||||
|
volumes:
|
||||||
|
- ../5g_rfsimulator/mini_nonrf_config.yaml:/openair-upf/etc/config.yaml
|
||||||
|
depends_on:
|
||||||
|
- oai-smf
|
||||||
|
cap_add:
|
||||||
|
- NET_ADMIN
|
||||||
|
- SYS_ADMIN
|
||||||
|
cap_drop:
|
||||||
|
- ALL
|
||||||
|
privileged: true
|
||||||
|
networks:
|
||||||
|
public_net:
|
||||||
|
ipv4_address: 192.168.71.134
|
||||||
|
traffic_net:
|
||||||
|
ipv4_address: 192.168.72.134
|
||||||
|
oai-ext-dn:
|
||||||
|
privileged: true
|
||||||
|
container_name: rfsim5g-oai-ext-dn
|
||||||
|
image: oaisoftwarealliance/trf-gen-cn5g:focal
|
||||||
|
entrypoint: /bin/bash -c \
|
||||||
|
"iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE;"\
|
||||||
|
"ip route add 12.1.1.0/24 via 192.168.72.134 dev eth0; sleep infinity"
|
||||||
|
depends_on:
|
||||||
|
- oai-upf
|
||||||
|
networks:
|
||||||
|
traffic_net:
|
||||||
|
ipv4_address: 192.168.72.135
|
||||||
|
healthcheck:
|
||||||
|
test: /bin/bash -c "ping -c 2 192.168.72.134"
|
||||||
|
interval: 10s
|
||||||
|
timeout: 5s
|
||||||
|
retries: 5
|
||||||
|
|
||||||
oai-gnb:
|
oai-gnb:
|
||||||
image: oaisoftwarealliance/oai-gnb:develop
|
image: oaisoftwarealliance/oai-gnb:develop
|
||||||
privileged: true
|
privileged: true
|
||||||
container_name: rfsim5g-oai-gnb
|
container_name: rfsim5g-oai-gnb
|
||||||
environment:
|
environment:
|
||||||
USE_ADDITIONAL_OPTIONS: --do-ra --rfsim --rfsimulator.wait_timeout 20 --noS1 --log_config.global_log_options level,nocolor,time
|
USE_ADDITIONAL_OPTIONS: --sa --rfsim --log_config.global_log_options level,nocolor,time
|
||||||
ASAN_OPTIONS: detect_leaks=0
|
ASAN_OPTIONS: detect_leaks=0
|
||||||
networks:
|
networks:
|
||||||
public_net:
|
public_net:
|
||||||
ipv4_address: 192.168.71.140
|
ipv4_address: 192.168.71.140
|
||||||
volumes:
|
volumes:
|
||||||
- ../../conf_files/gnb.band261.32prb.rfsim.phytest-dora.conf:/opt/oai-gnb/etc/gnb.conf
|
- ../../conf_files/gnb.sa.band261.u3.32prb.rfsim.conf:/opt/oai-gnb/etc/gnb.conf
|
||||||
- rrc.config:/opt/oai-gnb/
|
|
||||||
healthcheck:
|
healthcheck:
|
||||||
test: /bin/bash -c "pgrep nr-softmodem"
|
test: /bin/bash -c "pgrep nr-softmodem"
|
||||||
interval: 10s
|
interval: 10s
|
||||||
@@ -24,11 +105,12 @@ services:
|
|||||||
privileged: true
|
privileged: true
|
||||||
container_name: rfsim5g-oai-nr-ue
|
container_name: rfsim5g-oai-nr-ue
|
||||||
environment:
|
environment:
|
||||||
USE_ADDITIONAL_OPTIONS: --do-ra --rfsim --noS1 --reconfig-file etc/rrc/reconfig.raw --rbconfig-file etc/rrc/rbconfig.raw --rfsimulator.serveraddr 192.168.71.140 --log_config.global_log_options level,nocolor,time
|
USE_ADDITIONAL_OPTIONS: --sa --rfsim
|
||||||
|
--rfsimulator.serveraddr 192.168.71.140 --log_config.global_log_options level,nocolor,time
|
||||||
|
-r 32 --numerology 3 --band 261 -C 27533160000 --ssb 73
|
||||||
ASAN_OPTIONS: detect_leaks=0
|
ASAN_OPTIONS: detect_leaks=0
|
||||||
volumes:
|
volumes:
|
||||||
- ../../conf_files/nrue.uicc.conf:/opt/oai-nr-ue/etc/nr-ue.conf
|
- ../../conf_files/nrue.uicc.conf:/opt/oai-nr-ue/etc/nr-ue.conf
|
||||||
- rrc.config:/opt/oai-nr-ue/etc/rrc/
|
|
||||||
depends_on:
|
depends_on:
|
||||||
- oai-gnb
|
- oai-gnb
|
||||||
networks:
|
networks:
|
||||||
@@ -40,9 +122,6 @@ services:
|
|||||||
timeout: 5s
|
timeout: 5s
|
||||||
retries: 5
|
retries: 5
|
||||||
|
|
||||||
volumes:
|
|
||||||
rrc.config:
|
|
||||||
|
|
||||||
networks:
|
networks:
|
||||||
public_net:
|
public_net:
|
||||||
driver: bridge
|
driver: bridge
|
||||||
@@ -52,3 +131,11 @@ networks:
|
|||||||
- subnet: 192.168.71.128/26
|
- subnet: 192.168.71.128/26
|
||||||
driver_opts:
|
driver_opts:
|
||||||
com.docker.network.bridge.name: "rfsim5g-public"
|
com.docker.network.bridge.name: "rfsim5g-public"
|
||||||
|
traffic_net:
|
||||||
|
driver: bridge
|
||||||
|
name: rfsim5g-oai-traffic-net
|
||||||
|
ipam:
|
||||||
|
config:
|
||||||
|
- subnet: 192.168.72.128/26
|
||||||
|
driver_opts:
|
||||||
|
com.docker.network.bridge.name: "rfsim5g-traffic"
|
||||||
|
|||||||
@@ -70,13 +70,25 @@ void nr_common_signal_procedures (PHY_VARS_gNB *gNB,int frame,int slot,nfapi_nr_
|
|||||||
int ssb_start_symbol_abs = nr_get_ssb_start_symbol(fp,ssb_index); // computing the starting symbol for current ssb
|
int ssb_start_symbol_abs = nr_get_ssb_start_symbol(fp,ssb_index); // computing the starting symbol for current ssb
|
||||||
ssb_start_symbol = ssb_start_symbol_abs % fp->symbols_per_slot; // start symbol wrt slot
|
ssb_start_symbol = ssb_start_symbol_abs % fp->symbols_per_slot; // start symbol wrt slot
|
||||||
|
|
||||||
// setting the first subcarrier
|
// Setting the first subcarrier
|
||||||
|
// 3GPP TS 38.211 sections 7.4.3.1 and 4.4.4.2
|
||||||
|
// for FR1 offsetToPointA and k_SSB are expressed in terms of 15 kHz SCS
|
||||||
|
// for FR2 offsetToPointA is expressed in terms of 60 kHz SCS and k_SSB expressed in terms of the subcarrier spacing provided
|
||||||
|
// by the higher-layer parameter subCarrierSpacingCommon
|
||||||
const int scs = cfg->ssb_config.scs_common.value;
|
const int scs = cfg->ssb_config.scs_common.value;
|
||||||
const int prb_offset = (fp->freq_range == nr_FR1) ? ssb_pdu.ssb_pdu_rel15.ssbOffsetPointA>>scs : ssb_pdu.ssb_pdu_rel15.ssbOffsetPointA>>(scs-2);
|
const int prb_offset = (fp->freq_range == nr_FR1) ? ssb_pdu.ssb_pdu_rel15.ssbOffsetPointA >> scs
|
||||||
const int sc_offset = (fp->freq_range == nr_FR1) ? ssb_pdu.ssb_pdu_rel15.SsbSubcarrierOffset >> scs
|
: ssb_pdu.ssb_pdu_rel15.ssbOffsetPointA >> (scs - 2);
|
||||||
: ssb_pdu.ssb_pdu_rel15.SsbSubcarrierOffset >> (scs - 2);
|
const int sc_offset =
|
||||||
|
(fp->freq_range == nr_FR1) ? ssb_pdu.ssb_pdu_rel15.SsbSubcarrierOffset >> scs : ssb_pdu.ssb_pdu_rel15.SsbSubcarrierOffset;
|
||||||
fp->ssb_start_subcarrier = (12 * prb_offset + sc_offset);
|
fp->ssb_start_subcarrier = (12 * prb_offset + sc_offset);
|
||||||
LOG_D(PHY, "SSB first subcarrier %d (%d,%d)\n", fp->ssb_start_subcarrier, prb_offset, sc_offset);
|
LOG_D(PHY,
|
||||||
|
"ssbOffsetPointA %d SSB SsbSubcarrierOffset %d prb_offset %d sc_offset %d scs %d ssb_start_subcarrier %d\n",
|
||||||
|
ssb_pdu.ssb_pdu_rel15.ssbOffsetPointA,
|
||||||
|
ssb_pdu.ssb_pdu_rel15.SsbSubcarrierOffset,
|
||||||
|
prb_offset,
|
||||||
|
sc_offset,
|
||||||
|
scs,
|
||||||
|
fp->ssb_start_subcarrier);
|
||||||
|
|
||||||
LOG_D(PHY,"SS TX: frame %d, slot %d, start_symbol %d\n",frame,slot, ssb_start_symbol);
|
LOG_D(PHY,"SS TX: frame %d, slot %d, start_symbol %d\n",frame,slot, ssb_start_symbol);
|
||||||
nr_generate_pss(&txdataF[0][txdataF_offset], gNB->TX_AMP, ssb_start_symbol, cfg, fp);
|
nr_generate_pss(&txdataF[0][txdataF_offset], gNB->TX_AMP, ssb_start_symbol, cfg, fp);
|
||||||
@@ -602,7 +614,7 @@ void fill_ul_rb_mask(PHY_VARS_gNB *gNB, int frame_rx, int slot_rx) {
|
|||||||
rb2 = rb + pucch_pdu->bwp_start +
|
rb2 = rb + pucch_pdu->bwp_start +
|
||||||
((symbol < pucch_pdu->start_symbol_index+(pucch_pdu->nr_of_symbols>>1)) || (pucch_pdu->freq_hop_flag == 0) ?
|
((symbol < pucch_pdu->start_symbol_index+(pucch_pdu->nr_of_symbols>>1)) || (pucch_pdu->freq_hop_flag == 0) ?
|
||||||
pucch_pdu->prb_start : pucch_pdu->second_hop_prb);
|
pucch_pdu->prb_start : pucch_pdu->second_hop_prb);
|
||||||
gNB->rb_mask_ul[symbol][rb2>>5] |= (1<<(rb2&31));
|
gNB->rb_mask_ul[symbol][rb2>>5] |= (((uint32_t)1)<<(rb2&31));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -183,7 +183,7 @@ static void config_common_ue_sa(NR_UE_MAC_INST_t *mac,
|
|||||||
else{
|
else{
|
||||||
for (int i=0; i<8; i++){
|
for (int i=0; i<8; i++){
|
||||||
if ((scc->ssb_PositionsInBurst.groupPresence->buf[0]>>(7-i))&0x01)
|
if ((scc->ssb_PositionsInBurst.groupPresence->buf[0]>>(7-i))&0x01)
|
||||||
cfg->ssb_table.ssb_mask_list[i>>2].ssb_mask |= scc->ssb_PositionsInBurst.inOneGroup.buf[0]<<(24-8*(i%4));
|
cfg->ssb_table.ssb_mask_list[i>>2].ssb_mask |= ((uint32_t)scc->ssb_PositionsInBurst.inOneGroup.buf[0])<<(24-8*(i%4));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -197,21 +197,21 @@ static int get_ssb_arfcn(const f1ap_served_cell_info_t *cell_info, const NR_MIB_
|
|||||||
uint32_t dl_arfcn = get_dl_arfcn(cell_info);
|
uint32_t dl_arfcn = get_dl_arfcn(cell_info);
|
||||||
int scs = get_ssb_scs(cell_info);
|
int scs = get_ssb_scs(cell_info);
|
||||||
int band = get_dl_band(cell_info);
|
int band = get_dl_band(cell_info);
|
||||||
|
uint64_t freqpointa = from_nrarfcn(band, scs, dl_arfcn);
|
||||||
|
uint64_t freqssb = 0;
|
||||||
|
// 3GPP TS 38.211 sections 7.4.3.1 and 4.4.4.2
|
||||||
|
// for FR1 offsetToPointA and k_SSB are expressed in terms of 15 kHz SCS
|
||||||
|
// for FR2 offsetToPointA is expressed in terms of 60 kHz SCS and k_SSB expressed in terms of the subcarrier spacing provided
|
||||||
|
// by the higher-layer parameter subCarrierSpacingCommon
|
||||||
// FR1 includes frequency bands from 410 MHz (ARFCN 82000) to 7125 MHz (ARFCN 875000)
|
// FR1 includes frequency bands from 410 MHz (ARFCN 82000) to 7125 MHz (ARFCN 875000)
|
||||||
// FR2 includes frequency bands from 24.25 GHz (ARFCN 2016667) to 71.0 GHz (ARFCN 2795832)
|
// FR2 includes frequency bands from 24.25 GHz (ARFCN 2016667) to 71.0 GHz (ARFCN 2795832)
|
||||||
uint64_t scaling = 0;
|
|
||||||
if (dl_arfcn >= 82000 && dl_arfcn < 875000)
|
if (dl_arfcn >= 82000 && dl_arfcn < 875000)
|
||||||
scaling = 1;
|
freqssb = freqpointa + 15000 * (offsetToPointA * 12 + kssb) + 10ll * 12 * (1 << scs) * 15000;
|
||||||
else if (dl_arfcn >= 2016667 && dl_arfcn < 2795832)
|
else if (dl_arfcn >= 2016667 && dl_arfcn < 2795832)
|
||||||
scaling = 4;
|
freqssb = freqpointa + 60000 * offsetToPointA * 12 + (1 << scs) * 15000 * (kssb + 10ll * 12);
|
||||||
else
|
else
|
||||||
AssertFatal(false, "Invalid absoluteFrequencyPointA: %d\n", dl_arfcn);
|
AssertFatal(false, "Invalid absoluteFrequencyPointA: %d\n", dl_arfcn);
|
||||||
|
|
||||||
|
|
||||||
uint64_t freqpointa = from_nrarfcn(band, scs, dl_arfcn);
|
|
||||||
// offsetToPointA and kSSB are both on 15kHz SCS for FR1 and 60kHz SCS for FR2 (see 38.211 sections 7.4.3.1 and 4.4.4.2)
|
|
||||||
// SSB uses the SCS of the cell and is 20 RBs wide, so use 10
|
|
||||||
uint64_t freqssb = freqpointa + scaling * 15000 * (offsetToPointA * 12 + kssb) + 10ll * 12 * (1 << scs) * 15000;
|
|
||||||
int bw_index = get_supported_band_index(scs, band, get_dl_bw(cell_info));
|
int bw_index = get_supported_band_index(scs, band, get_dl_bw(cell_info));
|
||||||
int band_size_hz = get_supported_bw_mhz(band > 256 ? FR2 : FR1, bw_index) * 1000 * 1000;
|
int band_size_hz = get_supported_bw_mhz(band > 256 ? FR2 : FR1, bw_index) * 1000 * 1000;
|
||||||
uint32_t ssb_arfcn = to_nrarfcn(band, freqssb, scs, band_size_hz);
|
uint32_t ssb_arfcn = to_nrarfcn(band, freqssb, scs, band_size_hz);
|
||||||
|
|||||||
Reference in New Issue
Block a user