Commit 22b6298e authored by Robert Schmidt's avatar Robert Schmidt

Merge remote-tracking branch 'origin/fix-handover-doc' into integration_2026_w03 (!3788)

Fix handover documentation and configuration files for event configuration
parents 75f53384 4e4023a4
...@@ -21,10 +21,10 @@ gNBs = ...@@ -21,10 +21,10 @@ gNBs =
tr_s_preference = "f1"; tr_s_preference = "f1";
local_s_address = "192.168.71.150"; local_s_address = "192.168.71.150";
remote_s_address = "192.168.71.171"; remote_s_address = "192.168.71.171";
local_s_portd = 2153; local_s_portd = 2153;
remote_s_portd = 2153; remote_s_portd = 2153;
# ------- SCTP definitions # ------- SCTP definitions
SCTP : SCTP :
...@@ -41,7 +41,7 @@ gNBs = ...@@ -41,7 +41,7 @@ gNBs =
E1_INTERFACE = E1_INTERFACE =
( (
{ {
type = "cp"; type = "cp";
ipv4_cucp = "192.168.71.150"; ipv4_cucp = "192.168.71.150";
port_cucp = 38462; port_cucp = 38462;
ipv4_cuup = "0.0.0.0"; # multiple CU-UPs ipv4_cuup = "0.0.0.0"; # multiple CU-UPs
...@@ -75,8 +75,8 @@ security = { ...@@ -75,8 +75,8 @@ security = {
log_config : { log_config : {
global_log_level = "info"; global_log_level = "info";
pdcp_log_level = "info"; pdcp_log_level = "info";
rrc_log_level = "info"; rrc_log_level = "info";
f1ap_log_level = "info"; f1ap_log_level = "info";
ngap_log_level = "info"; ngap_log_level = "info";
}; };
...@@ -30,26 +30,26 @@ gNBs = ...@@ -30,26 +30,26 @@ gNBs =
# downlinkConfigCommon # downlinkConfigCommon
#frequencyInfoDL #frequencyInfoDL
# this is 3610.56 MHz # this is 3610.56 MHz
absoluteFrequencySSB = 679104; absoluteFrequencySSB = 679104;
dl_frequencyBand = 77; dl_frequencyBand = 77;
# this is 3599.94 MHz # this is 3599.94 MHz
dl_absoluteFrequencyPointA = 678388; dl_absoluteFrequencyPointA = 678388;
#scs-SpecificCarrierList #scs-SpecificCarrierList
dl_offstToCarrier = 0; dl_offstToCarrier = 0;
# subcarrierSpacing # subcarrierSpacing
# 0=kHz15, 1=kHz30, 2=kHz60, 3=kHz120 # 0=kHz15, 1=kHz30, 2=kHz60, 3=kHz120
dl_subcarrierSpacing = 1; dl_subcarrierSpacing = 1;
dl_carrierBandwidth = 51; dl_carrierBandwidth = 51;
#initialDownlinkBWP #initialDownlinkBWP
#genericParameters #genericParameters
# this is RBstart=27,L=48 (275*(L-1))+RBstart # this is RBstart=27,L=48 (275*(L-1))+RBstart
initialDLBWPlocationAndBandwidth = 13750; initialDLBWPlocationAndBandwidth = 13750;
# subcarrierSpacing # subcarrierSpacing
# 0=kHz15, 1=kHz30, 2=kHz60, 3=kHz120 # 0=kHz15, 1=kHz30, 2=kHz60, 3=kHz120
initialDLBWPsubcarrierSpacing = 1; initialDLBWPsubcarrierSpacing = 1;
#pdcch-ConfigCommon #pdcch-ConfigCommon
initialDLBWPcontrolResourceSetZero = 12; initialDLBWPcontrolResourceSetZero = 12;
initialDLBWPsearchSpaceZero = 0; initialDLBWPsearchSpaceZero = 0;
#uplinkConfigCommon #uplinkConfigCommon
#frequencyInfoUL #frequencyInfoUL
...@@ -197,10 +197,10 @@ RUs = ( ...@@ -197,10 +197,10 @@ RUs = (
att_rx = 0; att_rx = 0;
bands = [77]; bands = [77];
max_pdschReferenceSignalPower = -27; max_pdschReferenceSignalPower = -27;
max_rxgain = 114; max_rxgain = 114;
eNB_instances = [0]; eNB_instances = [0];
clock_src = "external"; clock_src = "external";
time_src = "external"; time_src = "external";
} }
); );
......
...@@ -42,13 +42,13 @@ nr_measurement_configuration = { ...@@ -42,13 +42,13 @@ nr_measurement_configuration = {
A2 = { A2 = {
enable = 1; enable = 1;
threshold = 110; threshold = 110;
timeToTrigger = 1; time_to_trigger = 1;
}; };
A3 = ({ A3 = ({
cell_id = -1; #Default physCellId = -1; #Default
offset = 10; offset = 10;
hysteresis = 0; hysteresis = 0;
timeToTrigger = 1 time_to_trigger = 1
}) })
}; };
...@@ -57,19 +57,19 @@ nr_measurement_configuration = { ...@@ -57,19 +57,19 @@ nr_measurement_configuration = {
A2 = { A2 = {
enable = 1; enable = 1;
threshold = 60; threshold = 60;
timeToTrigger = 1; time_to_trigger = 1;
}; };
A3 = ({ A3 = ({
physCellId = -1; #Default physCellId = -1; #Default
offset = 10; offset = 10;
hysteresis = 0; hysteresis = 0;
timeToTrigger = 1 time_to_trigger = 1
}, { }, {
physCellId = 2; physCellId = 2;
offset = 5; offset = 5;
hysteresis = 1; hysteresis = 1;
timeToTrigger = 2 time_to_trigger = 2
}) })
}; };
...@@ -209,8 +209,8 @@ instead of waiting for UE measurement report.) ...@@ -209,8 +209,8 @@ instead of waiting for UE measurement report.)
Our CI setup consists of: Our CI setup consists of:
- 2 USRPs B210 that are synchronized by connecting them to an Octoclock over - 2 USRPs B210 that are synchronized by connecting them to an Octoclock over
10MHz refrence and a PPS signal. The RU hosts are synchronized via NTP. 10MHz refrence and a PPS signal. The RU hosts are synchronized via NTP.
- Mini-Circuits RC4DAT-6G-60 programmable attenuator. To control the digital attenuator, - Mini-Circuits RC4DAT-6G-60 programmable attenuator. To control the digital
a Python script was developed `ci-scripts/attenuatorctl.py`. attenuator, a Python script was developed `ci-scripts/attenuatorctl.py`.
- Quectel RM520 as a UE. - Quectel RM520 as a UE.
- The setup is run using Docker `ci-scripts/yaml_files/5g_sa_f1_b210_ho`. - The setup is run using Docker `ci-scripts/yaml_files/5g_sa_f1_b210_ho`.
...@@ -241,14 +241,14 @@ The below configuration further enables periodic measurements, A2 event ...@@ -241,14 +241,14 @@ The below configuration further enables periodic measurements, A2 event
Better than Serving"). Better than Serving").
The A2 event can be disabled by setting `enable = 0`. The A2 event can be disabled by setting `enable = 0`.
The A3 event cannot be disabled as of now. It can be made The A3 event cannot be disabled as of now. It can be made
specific to cells or set to `cell_id = -1` which means "any cell". specific to cells or set to `physCellId = -1` which means "any cell".
`hysteresis` is a margin added to the serving cell measurements to `hysteresis` is a margin added to the serving cell measurements to
prevent unnecessary or frequent handovers. It ensures that the neighbouring prevent unnecessary or frequent handovers. It ensures that the neighbouring
cell must show sufficiently better signal quality before a handover is cell must show sufficiently better signal quality before a handover is
triggered. It is an integer between 0 and 30. triggered. It is an integer between 0 and 30.
`timeToTrigger` the time during which specific criteria for the event `time_to_trigger` the time during which specific criteria for the event
needs to be met in order to trigger a measurement report. It is an enumerated needs to be met in order to trigger a measurement report. It is an enumerated
parameter and in the configuration below it is set to 1 which corresponds to parameter and in the configuration below it is set to 1 which corresponds to
`ms40` or 40 milliseconds. `ms40` or 40 milliseconds.
...@@ -312,23 +312,24 @@ nr_measurement_configuration = { ...@@ -312,23 +312,24 @@ nr_measurement_configuration = {
}; };
A2 = { A2 = {
enable = 1; enable = 1;
threshold = 60; threshold = 60;
timeToTrigger = 1; time_to_trigger = 1;
}; };
A3 = ( A3 = (
{ {
cell_id = -1; physCellId = -1;
offset = 10; offset = 10;
hysteresis = 0; hysteresis = 0;
timeToTrigger = 1; time_to_trigger = 1;
} }
) )
}; };
``` ```
`@include` this configuration file inside the gNB section of CU file as shown below. `@include` this configuration file inside the gNB section of CU file as shown
below.
``` ```
plmn_list = ({ mcc = 001; mnc = 01; mnc_length = 2; snssaiList = ({ sst = 1, sd = 0xffffff })}); plmn_list = ({ mcc = 001; mnc = 01; mnc_length = 2; snssaiList = ({ sst = 1, sd = 0xffffff })});
...@@ -390,7 +391,7 @@ are as follows: ...@@ -390,7 +391,7 @@ are as follows:
on UTC time or a timer-based solution, which can also be applied jointly (or on UTC time or a timer-based solution, which can also be applied jointly (or
not) with another trigger as the measurement-based trigger. The timer-based not) with another trigger as the measurement-based trigger. The timer-based
handover trigger considers the deterministic satellite movement to predict handover trigger considers the deterministic satellite movement to predict
the time duration for which the satellites footprint covers a certain zone. the time duration for which the satellite's footprint covers a certain zone.
- **Timing advance value-based triggering**: This method uses the timing - **Timing advance value-based triggering**: This method uses the timing
advance value (independently or jointly with another trigger) to trigger a advance value (independently or jointly with another trigger) to trigger a
...@@ -432,14 +433,14 @@ We assume: ...@@ -432,14 +433,14 @@ We assume:
* Two independent gNBs connected to the same 5GC via N2 interface. * Two independent gNBs connected to the same 5GC via N2 interface.
* A UE initially connected to gNB-PCI0, which will be handed over to gNB-PCI1. * A UE initially connected to gNB-PCI0, which will be handed over to gNB-PCI1.
* Handover is triggered by either a decision based measurement event (e.g. A3) or * Handover is triggered by either a decision based measurement event (e.g. A3)
telnet command. or telnet command.
## Steps to run N2 handover with OAI UE ## Steps to run N2 handover with OAI UE
**Note for same-machine setup:** When running both gNBs on the same machine, **Note for same-machine setup:** When running both gNBs on the same machine,
you need to assign a unique IP address to the second gNB to avoid network conflicts. you need to assign a unique IP address to the second gNB to avoid network
For example: conflicts. For example:
```sh ```sh
sudo ip addr add 192.168.71.180/24 dev rfsim5g-public sudo ip addr add 192.168.71.180/24 dev rfsim5g-public
...@@ -490,15 +491,20 @@ From gNB-PCI0, trigger handover on target gNB with PCI 1 for UE ID 1: ...@@ -490,15 +491,20 @@ From gNB-PCI0, trigger handover on target gNB with PCI 1 for UE ID 1:
```sh ```sh
echo ci trigger_n2_ho 1,1 | nc 127.0.0.1 9090 && echo echo ci trigger_n2_ho 1,1 | nc 127.0.0.1 9090 && echo
``` ```
where the input parameters correspond to the PCI of the neighbour cell and the RRC ID of the UE. where the input parameters correspond to the PCI of the neighbor cell and the
RRC ID of the UE.
This will initiate the N2 handover on the source gNB. This will initiate the N2 handover on the source gNB.
## Neighbour list and measurement configuration ## Neighbour list and measurement configuration
Make sure the configuration file contains a neighbour list and measurement configuration, e.g. [neighbour-config-rfsim.conf](../../ci-scripts/conf_files/neighbour-config.conf). Make sure the configuration file contains a neighbour list and measurement
This configuration can also be present in a different file and included in the gNB configuration file with `@include "neighbour-config-rfsim.conf"`. configuration, e.g. [neighbour-config-rfsim.conf](../../ci-scripts/conf_files/neighbour-config.conf).
This configuration can also be present in a different file and included in the
gNB configuration file with `@include "neighbour-config-rfsim.conf"`.
For each gNB there is a `neighbour_cell_configuration` linked to its serving cell ID. For each gNB there is a `neighbour_cell_configuration` linked to its serving
cell ID.
See the example above for `neighbour-config-ho.conf`. The same configuration is for both F1 and N2 handover. See the example above for `neighbour-config-ho.conf`. The same configuration
is for both F1 and N2 handover.
...@@ -57,21 +57,21 @@ nr_measurement_configuration = { ...@@ -57,21 +57,21 @@ nr_measurement_configuration = {
A2 = { A2 = {
enable = 1; enable = 1;
threshold = 60; threshold = 60;
timeToTrigger = 1; time_to_trigger = 1;
}; };
A3 = ( A3 = (
{ {
cell_id = 720898; # neighbour of gNB 0xe00 physCellId = 1; # neighbour of gNB 0xe00
offset = 10; offset = 10;
hysteresis = 0; hysteresis = 0;
timeToTrigger = 1; time_to_trigger = 1;
}, },
{ {
cell_id = 12345678; # neighbour of gNB 0xb00 physCellId = 0; # neighbour of gNB 0xb00
offset = 5; offset = 5;
hysteresis = 1; hysteresis = 1;
timeToTrigger = 2; time_to_trigger = 2;
} }
); );
}; };
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment