Merge remote-tracking branch 'origin/oaioran_multi_ru' into integration_2024_w35
This commit is contained in:
+138
-1
@@ -626,7 +626,7 @@ In the following, we will use these short hands:
|
||||
- `du-u-plane-mac-addr`: DU U plane MAC address
|
||||
- `pci-address-u-plane-vf`: PCI bus address of the VF for U plane
|
||||
|
||||
In the configuration file, in option `fhi_72.dpdk_devices`, the first PCI address is for C-plane and the second for U-plane.
|
||||
In the configuration file, in option `fhi_72.dpdk_devices`, the first PCI address is for U-plane and the second for C-plane.
|
||||
|
||||
For both the MAC addresses, you might use the MAC addresses which are
|
||||
pre-configured in the RUs (typically `00:11:22:33:44:66`, but that is not
|
||||
@@ -891,6 +891,143 @@ do not do any jumps (during the last hour). While an occasional jump is not
|
||||
necessarily problematic for the gNB, many such messages mean that the system is
|
||||
not working, and UEs might not be able to attach or reach good performance.
|
||||
|
||||
# Operation with multiple RUs
|
||||
|
||||
It is possible to connect up to 4 RUs to one DU at the same time and operate
|
||||
them as a (single) distributed antenna (array). This works since all RUs and
|
||||
the DU are synchronized onto a common clock using PTP. The assumed
|
||||
configuration is that with N RUs each having an M×M configuration, we
|
||||
effectively reach an (N×M)×(N×M) configuration.
|
||||
|
||||
Some caveats:
|
||||
- Since it's a distributed antenna, this implies that this setup will deploy a
|
||||
single cell only -- multiple cells on different RUs are not supported.
|
||||
- All RUs should use the same MTU, so either "normal" (1500 byte) MTU or jumbo
|
||||
frames, but not a mix of both.
|
||||
- We tested only two RUs as of now, i.e., an 8×8 configuration.
|
||||
- Testing is currently limited to 4 logical antenna ports in DL; in UL, up to 8 can be used.
|
||||
|
||||
For two RUs each using a 4x4 configuration, make sure to configure the 8x8
|
||||
configuration, i.e., set `nb_tx` and `nb_rx` under `RUs` to 8 each (NOT two
|
||||
RUs!). Also, set the antenna port information as listed above, i.e.,
|
||||
|
||||
```
|
||||
pdsch_AntennaPorts_XP = 2;
|
||||
pdsch_AntennaPorts_N1 = 2;
|
||||
pusch_AntennaPorts = 8;
|
||||
maxMIMO_layers = 2;
|
||||
```
|
||||
Once testing for 8 antenna ports in DL is complete, we will change pdsch_AntennaPorts_N1 to 4.
|
||||
|
||||
Next, configure the `fhi_72` section as indicated below:
|
||||
|
||||
```
|
||||
fhi_72 = {
|
||||
dpdk_devices = ("ru1_up_vf_pci", "ru1_cp_vf_pci", "ru2_up_vf_pci", "ru2_cp_vf_pci");
|
||||
// core config as always
|
||||
du_addr = ("du_ru1_up_mac_addr", "du_ru1_cp_mac_addr", "du_ru2_up_mac_addr", "du_ru2_cp_mac_addr");
|
||||
ru_addr = ("ru1_up_mac_addr", "ru1_cp_mac_addr", "ru2_up_mac_addr", "ru2_cp_mac_addr");
|
||||
// mtu, file_prefix ...
|
||||
fh_config = (
|
||||
{
|
||||
// timing, ru_config, prach_config of RU1
|
||||
},
|
||||
{
|
||||
// timing, ru_config, prach_config of RU2
|
||||
}
|
||||
);
|
||||
};
|
||||
```
|
||||
|
||||
i.e., for `dpdk_devices`, `du_addr`, and `ru_addr` is configured for
|
||||
both RUs in a (flat) array, and the individual radio configuration is given for
|
||||
each RU individually inside the `fh_config`.
|
||||
|
||||
<details>
|
||||
<summary>Sample FHI 7.2 configuration for two RUs (Benetel 550 and 650)</summary>
|
||||
|
||||
```
|
||||
fhi_72 = {
|
||||
dpdk_devices = ("0000:01:01.0", "0000:01:01.1", "0000:01:01.2", "0000:01:01.3");
|
||||
system_core = 0;
|
||||
io_core = 1;
|
||||
worker_cores = (2);
|
||||
du_addr = ("00:11:22:33:44:66","00:11:22:33:44:67","00:11:22:33:44:66","00:11:22:33:44:67");
|
||||
ru_addr = ("70:b3:d5:e1:5b:ff","70:b3:d5:e1:5b:ff","70:b3:d5:e1:5b:81", "70:b3:d5:e1:5b:81");
|
||||
mtu = 9216;
|
||||
file_prefix = "fhi_72";
|
||||
fh_config = (
|
||||
# RAN650
|
||||
{
|
||||
Tadv_cp_dl = 125;
|
||||
T2a_cp_dl = (259, 500);
|
||||
T2a_cp_ul = (25, 500);
|
||||
T2a_up = (134, 375);
|
||||
Ta3 = (152, 160);
|
||||
T1a_cp_dl = (419, 470);
|
||||
T1a_cp_ul = (285, 336);
|
||||
T1a_up = (294, 345);
|
||||
Ta4 = (0, 200);
|
||||
ru_config = {
|
||||
iq_width = 9;
|
||||
iq_width_prach = 9;
|
||||
};
|
||||
prach_config = {
|
||||
eAxC_offset = 4;
|
||||
};
|
||||
},
|
||||
# RAN550
|
||||
{
|
||||
Tadv_cp_dl = 125;
|
||||
T2a_cp_dl = (259, 500);
|
||||
T2a_cp_ul = (25, 500);
|
||||
T2a_up = (134, 375);
|
||||
Ta3 = (152, 160);
|
||||
T1a_cp_dl = (419, 470);
|
||||
T1a_cp_ul = (285, 336);
|
||||
T1a_up = (294, 345);
|
||||
Ta4 = (0, 200);
|
||||
ru_config = {
|
||||
iq_width = 9;
|
||||
iq_width_prach = 9;
|
||||
};
|
||||
prach_config = {
|
||||
eAxC_offset = 4;
|
||||
};
|
||||
});
|
||||
```
|
||||
</details>
|
||||
|
||||
Compare also with the example (DU) configuration in
|
||||
[`gnb-du.sa.band78.106prb.fhi72.8x8-benetel-650-550.conf`](../targets/PROJECTS/GENERIC-NR-5GC/CONF/gnb-du.sa.band78.106prb.fhi72.8x8-benetel-650-550.conf).
|
||||
|
||||
Afterwards, start the gNB with the modified configuration file. If everything
|
||||
went well, you should see the RU counters for both RUs go up:
|
||||
|
||||
```
|
||||
[NR_PHY] [o-du 0][rx 614400 pps 61440 kbps 844953][tx 1275076 pps 127488 kbps 1998585][Total Msgs_Rcvd 614400]
|
||||
[NR_PHY] [o_du0][pusch0 107520 prach0 46080]
|
||||
[NR_PHY] [o_du0][pusch1 107520 prach1 46080]
|
||||
[NR_PHY] [o_du0][pusch2 107520 prach2 46080]
|
||||
[NR_PHY] [o_du0][pusch3 107520 prach3 46080]
|
||||
[NR_PHY] [o-du 1][rx 614400 pps 61440 kbps 844953][tx 1275076 pps 127488 kbps 1998585][Total Msgs_Rcvd 614400]
|
||||
[NR_PHY] [o_du1][pusch0 107520 prach0 46080]
|
||||
[NR_PHY] [o_du1][pusch1 107520 prach1 46080]
|
||||
[NR_PHY] [o_du1][pusch2 107520 prach2 46080]
|
||||
[NR_PHY] [o_du1][pusch3 107520 prach3 46080]
|
||||
```
|
||||
|
||||
You can also verify that there is signal on all RX antennas like so:
|
||||
```bash
|
||||
$ cat nrL1_stats.log
|
||||
[...]
|
||||
max_IO = 66 (81), min_I0 = 0 (53), avg_I0 = 51 dB(46.48.45.46.51.56.55.45.)
|
||||
PRACH I0 = 38.0 dB
|
||||
```
|
||||
|
||||
Note the eight entries after `avg_IO`.
|
||||
|
||||
You should be able to connect a UE now.
|
||||
|
||||
# Contact in case of questions
|
||||
|
||||
|
||||
Reference in New Issue
Block a user