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 =
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";
local_s_portd = 2153;
remote_s_portd = 2153;
local_s_portd = 2153;
remote_s_portd = 2153;
# ------- SCTP definitions
SCTP :
......@@ -41,7 +41,7 @@ gNBs =
E1_INTERFACE =
(
{
type = "cp";
type = "cp";
ipv4_cucp = "192.168.71.150";
port_cucp = 38462;
ipv4_cuup = "0.0.0.0"; # multiple CU-UPs
......@@ -75,8 +75,8 @@ security = {
log_config : {
global_log_level = "info";
pdcp_log_level = "info";
rrc_log_level = "info";
f1ap_log_level = "info";
ngap_log_level = "info";
pdcp_log_level = "info";
rrc_log_level = "info";
f1ap_log_level = "info";
ngap_log_level = "info";
};
......@@ -30,26 +30,26 @@ gNBs =
# downlinkConfigCommon
#frequencyInfoDL
# this is 3610.56 MHz
absoluteFrequencySSB = 679104;
dl_frequencyBand = 77;
absoluteFrequencySSB = 679104;
dl_frequencyBand = 77;
# this is 3599.94 MHz
dl_absoluteFrequencyPointA = 678388;
dl_absoluteFrequencyPointA = 678388;
#scs-SpecificCarrierList
dl_offstToCarrier = 0;
dl_offstToCarrier = 0;
# subcarrierSpacing
# 0=kHz15, 1=kHz30, 2=kHz60, 3=kHz120
dl_subcarrierSpacing = 1;
dl_carrierBandwidth = 51;
dl_subcarrierSpacing = 1;
dl_carrierBandwidth = 51;
#initialDownlinkBWP
#genericParameters
# this is RBstart=27,L=48 (275*(L-1))+RBstart
initialDLBWPlocationAndBandwidth = 13750;
initialDLBWPlocationAndBandwidth = 13750;
# subcarrierSpacing
# 0=kHz15, 1=kHz30, 2=kHz60, 3=kHz120
initialDLBWPsubcarrierSpacing = 1;
initialDLBWPsubcarrierSpacing = 1;
#pdcch-ConfigCommon
initialDLBWPcontrolResourceSetZero = 12;
initialDLBWPsearchSpaceZero = 0;
initialDLBWPcontrolResourceSetZero = 12;
initialDLBWPsearchSpaceZero = 0;
#uplinkConfigCommon
#frequencyInfoUL
......@@ -197,10 +197,10 @@ RUs = (
att_rx = 0;
bands = [77];
max_pdschReferenceSignalPower = -27;
max_rxgain = 114;
max_rxgain = 114;
eNB_instances = [0];
clock_src = "external";
time_src = "external";
clock_src = "external";
time_src = "external";
}
);
......
......@@ -42,13 +42,13 @@ nr_measurement_configuration = {
A2 = {
enable = 1;
threshold = 110;
timeToTrigger = 1;
time_to_trigger = 1;
};
A3 = ({
cell_id = -1; #Default
physCellId = -1; #Default
offset = 10;
hysteresis = 0;
timeToTrigger = 1
time_to_trigger = 1
})
};
......@@ -57,19 +57,19 @@ nr_measurement_configuration = {
A2 = {
enable = 1;
threshold = 60;
timeToTrigger = 1;
time_to_trigger = 1;
};
A3 = ({
physCellId = -1; #Default
offset = 10;
hysteresis = 0;
timeToTrigger = 1
time_to_trigger = 1
}, {
physCellId = 2;
offset = 5;
hysteresis = 1;
timeToTrigger = 2
time_to_trigger = 2
})
};
......@@ -209,8 +209,8 @@ instead of waiting for UE measurement report.)
Our CI setup consists of:
- 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.
- Mini-Circuits RC4DAT-6G-60 programmable attenuator. To control the digital attenuator,
a Python script was developed `ci-scripts/attenuatorctl.py`.
- Mini-Circuits RC4DAT-6G-60 programmable attenuator. To control the digital
attenuator, a Python script was developed `ci-scripts/attenuatorctl.py`.
- Quectel RM520 as a UE.
- 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
Better than Serving").
The A2 event can be disabled by setting `enable = 0`.
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
prevent unnecessary or frequent handovers. It ensures that the neighbouring
cell must show sufficiently better signal quality before a handover is
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
parameter and in the configuration below it is set to 1 which corresponds to
`ms40` or 40 milliseconds.
......@@ -312,23 +312,24 @@ nr_measurement_configuration = {
};
A2 = {
enable = 1;
threshold = 60;
timeToTrigger = 1;
enable = 1;
threshold = 60;
time_to_trigger = 1;
};
A3 = (
{
cell_id = -1;
offset = 10;
hysteresis = 0;
timeToTrigger = 1;
physCellId = -1;
offset = 10;
hysteresis = 0;
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 })});
......@@ -390,7 +391,7 @@ are as follows:
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
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
advance value (independently or jointly with another trigger) to trigger a
......@@ -432,14 +433,14 @@ We assume:
* 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.
* Handover is triggered by either a decision based measurement event (e.g. A3) or
telnet command.
* Handover is triggered by either a decision based measurement event (e.g. A3)
or telnet command.
## Steps to run N2 handover with OAI UE
**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.
For example:
you need to assign a unique IP address to the second gNB to avoid network
conflicts. For example:
```sh
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:
```sh
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.
## 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).
This configuration can also be present in a different file and included in the gNB configuration file with `@include "neighbour-config-rfsim.conf"`.
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).
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 = {
A2 = {
enable = 1;
threshold = 60;
timeToTrigger = 1;
time_to_trigger = 1;
};
A3 = (
{
cell_id = 720898; # neighbour of gNB 0xe00
physCellId = 1; # neighbour of gNB 0xe00
offset = 10;
hysteresis = 0;
timeToTrigger = 1;
time_to_trigger = 1;
},
{
cell_id = 12345678; # neighbour of gNB 0xb00
physCellId = 0; # neighbour of gNB 0xb00
offset = 5;
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