Merge remote-tracking branch 'origin/fix-handover-doc' into integration_2026_w03 (!3788)
Fix handover documentation and configuration files for event configuration
This commit is contained in:
@@ -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 = {
|
|||||||
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
|
||||||
})
|
})
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|||||||
+24
-18
@@ -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
|
|||||||
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.
|
||||||
@@ -314,21 +314,22 @@ 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:
|
|||||||
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 satellite’s 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:
|
|||||||
|
|
||||||
* 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:
|
|||||||
```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 = {
|
|||||||
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;
|
||||||
}
|
}
|
||||||
);
|
);
|
||||||
};
|
};
|
||||||
|
|||||||
Reference in New Issue
Block a user