Commit 63e2ca15 authored by Robert Schmidt's avatar Robert Schmidt

Extend F1+E1 test for multiple CU-UPs

The 5G-RFsim F1 test tested multiple DUs at one CU. This
functionality is retained in the new F1+E1 test.

The 5G-RFsim E1 test tested a single CU-UP at a single CU-CP.  Here, we
extend to use multiple CU-UPs, one for each DU. The associated is
ensured by using three different F1-U transport networks, one for each
DU/CU-UP pair.
parent 6c830a48
...@@ -16,7 +16,7 @@ gNBs = ...@@ -16,7 +16,7 @@ gNBs =
// 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; snssaiList = ({ sst = 1, sd = 0xffffff }) }); plmn_list = ({ mcc = 208; mnc = 99; mnc_length = 2; snssaiList = ({ sst = 1 }, { sst = 2 }, { sst = 3 }) });
nr_cellid = 12345678L; nr_cellid = 12345678L;
...@@ -24,8 +24,8 @@ gNBs = ...@@ -24,8 +24,8 @@ gNBs =
tr_s_preference = "f1"; tr_s_preference = "f1";
local_s_if_name = "lo"; local_s_if_name = "lo";
local_s_address = "192.168.72.140"; local_s_address = "192.168.71.150";
remote_s_address = "192.168.72.143"; remote_s_address = "0.0.0.0"; # multiple DUs
local_s_portc = 501; local_s_portc = 501;
local_s_portd = 2152; local_s_portd = 2152;
remote_s_portc = 500; remote_s_portc = 500;
...@@ -52,9 +52,9 @@ gNBs = ...@@ -52,9 +52,9 @@ gNBs =
( (
{ {
type = "cp"; type = "cp";
ipv4_cucp = "192.168.72.140"; ipv4_cucp = "192.168.71.150";
port_cucp = 38462; port_cucp = 38462;
ipv4_cuup = "192.168.72.141"; ipv4_cuup = "0.0.0.0"; # multiple CU-UPs
port_cuup = 38462; port_cuup = 38462;
} }
) )
......
...@@ -22,12 +22,12 @@ gNBs = ...@@ -22,12 +22,12 @@ gNBs =
tr_s_preference = "f1"; tr_s_preference = "f1";
local_s_if_name = "lo"; local_s_if_name = "lo";
local_s_address = "192.168.72.141"; local_s_address = "192.168.72.161";
remote_s_address = "192.168.72.142"; remote_s_address = "192.168.72.171";
local_s_portc = 501; local_s_portc = 501;
local_s_portd = 2152; local_s_portd = 2153;
remote_s_portc = 500; remote_s_portc = 500;
remote_s_portd = 2152; remote_s_portd = 2153;
# ------- SCTP definitions # ------- SCTP definitions
SCTP : SCTP :
...@@ -41,17 +41,17 @@ gNBs = ...@@ -41,17 +41,17 @@ gNBs =
( (
{ {
type = "up"; type = "up";
ipv4_cucp = "192.168.72.140"; ipv4_cucp = "192.168.71.150";
ipv4_cuup = "192.168.72.141"; ipv4_cuup = "192.168.71.161";
} }
) )
NETWORK_INTERFACES : NETWORK_INTERFACES :
{ {
GNB_INTERFACE_NAME_FOR_NG_AMF = "demo-oai"; GNB_INTERFACE_NAME_FOR_NG_AMF = "demo-oai";
GNB_IPV4_ADDRESS_FOR_NG_AMF = "192.168.71.141/24"; GNB_IPV4_ADDRESS_FOR_NG_AMF = "192.168.71.161/24";
GNB_INTERFACE_NAME_FOR_NGU = "demo-oai"; GNB_INTERFACE_NAME_FOR_NGU = "demo-oai";
GNB_IPV4_ADDRESS_FOR_NGU = "192.168.71.141/24"; GNB_IPV4_ADDRESS_FOR_NGU = "192.168.71.161/24";
GNB_PORT_FOR_S1U = 2152; # Spec 2152 GNB_PORT_FOR_S1U = 2152; # Spec 2152
}; };
} }
......
...@@ -27,14 +27,10 @@ ...@@ -27,14 +27,10 @@
<TestCaseRequestedList> <TestCaseRequestedList>
111111 111111
100021 100021
000020
000021 000021
000022 000022
000023 000023
000024
020021 020021
020022
030021
100021 100021
</TestCaseRequestedList> </TestCaseRequestedList>
<TestCaseExclusionList></TestCaseExclusionList> <TestCaseExclusionList></TestCaseExclusionList>
...@@ -46,80 +42,38 @@ ...@@ -46,80 +42,38 @@
<images_to_pull>oai-gnb-asan oai-nr-cuup-asan oai-nr-ue-asan</images_to_pull> <images_to_pull>oai-gnb-asan oai-nr-cuup-asan oai-nr-ue-asan</images_to_pull>
</testCase> </testCase>
<testCase id="000020">
<class>DeployGenObject</class>
<desc>Deploy MySql Database</desc>
<yaml_path>yaml_files/5g_rfsimulator_e1</yaml_path>
<services>mysql</services>
<nb_healthy>1</nb_healthy>
</testCase>
<testCase id="000021"> <testCase id="000021">
<class>DeployGenObject</class> <class>DeployGenObject</class>
<desc>Deploy OAI 5G CoreNetwork</desc> <desc>Deploy OAI 5G CoreNetwork</desc>
<yaml_path>yaml_files/5g_rfsimulator_e1</yaml_path> <yaml_path>yaml_files/5g_rfsimulator_e1</yaml_path>
<services>oai-nrf oai-amf oai-smf oai-spgwu oai-ext-dn</services> <services>mysql oai-nrf oai-amf oai-smf oai-spgwu oai-ext-dn</services>
<nb_healthy>6</nb_healthy> <nb_healthy>6</nb_healthy>
</testCase> </testCase>
<testCase id="000022"> <testCase id="000022">
<class>DeployGenObject</class> <class>DeployGenObject</class>
<desc>Deploy OAI 5G CU-CP RF sim SA</desc> <desc>Deploy OAI 5G RAN RF sim SA (1 CU-CP, 3 CU-UPs, 3 DUs)</desc>
<yaml_path>yaml_files/5g_rfsimulator_e1</yaml_path> <yaml_path>yaml_files/5g_rfsimulator_e1</yaml_path>
<services>oai-cucp</services> <services>oai-cucp oai-cuup oai-cuup2 oai-cuup3 oai-du oai-du2 oai-du3</services>
<nb_healthy>7</nb_healthy> <nb_healthy>13</nb_healthy>
</testCase> </testCase>
<testCase id="000023"> <testCase id="000023">
<class>DeployGenObject</class>
<desc>Deploy OAI 5G CU-UP and DU RF sim SA</desc>
<yaml_path>yaml_files/5g_rfsimulator_e1</yaml_path>
<services>oai-cuup oai-du</services>
<nb_healthy>9</nb_healthy>
</testCase>
<testCase id="000024">
<class>DeployGenObject</class> <class>DeployGenObject</class>
<desc>Deploy OAI 5G NR-UE RF sim SA</desc> <desc>Deploy OAI 5G NR-UE RF sim SA</desc>
<yaml_path>yaml_files/5g_rfsimulator_e1</yaml_path> <yaml_path>yaml_files/5g_rfsimulator_e1</yaml_path>
<services>oai-nr-ue</services> <services>oai-nr-ue oai-nr-ue2 oai-nr-ue3</services>
<nb_healthy>10</nb_healthy> <nb_healthy>16</nb_healthy>
</testCase> </testCase>
<testCase id="020021"> <testCase id="020021">
<class>Ping</class> <class>Ping</class>
<desc>Ping ext-dn from NR-UE</desc> <desc>Ping ext-dn from all NR-UEs</desc>
<id>rfsim5g_ue</id> <id>rfsim5g_ue rfsim5g_ue2 rfsim5g_ue3</id>
<ping_args> -c 20 192.168.73.135</ping_args> <ping_args> -c 20 12.1.1.1 -i0.25</ping_args>
<ping_packetloss_threshold>5</ping_packetloss_threshold> <ping_packetloss_threshold>5</ping_packetloss_threshold>
</testCase> </testCase>
<testCase id="020022">
<class>Ping</class>
<desc>Ping NR-UE from ext-dn</desc>
<id>rfsim5g_ext_dn</id>
<ping_args>-c 20 12.1.1.2</ping_args>
<ping_packetloss_threshold>5</ping_packetloss_threshold>
</testCase>
<testCase id="030021">
<class>IperfFromContainer</class>
<desc>Iperf UDP Downlink</desc>
<server_container_name>rfsim5g-oai-nr-ue</server_container_name>
<client_container_name>rfsim5g-oai-ext-dn</client_container_name>
<server_options>-B 12.1.1.2 -u -i 1 -s</server_options>
<client_options>-c 12.1.1.2 -u -i 1 -t 30 -b 3M</client_options>
</testCase>
<testCase id="030022">
<class>IperfFromContainer</class>
<desc>Iperf UDP Uplink</desc>
<server_container_name>rfsim5g-oai-ext-dn</server_container_name>
<client_container_name>rfsim5g-oai-nr-ue</client_container_name>
<server_options>-u -i 1 -s</server_options>
<client_options>-B 12.1.1.2 -c 192.168.73.135 -u -i 1 -t 30 -b 1M</client_options>
</testCase>
<testCase id="100021"> <testCase id="100021">
<class>UndeployGenObject</class> <class>UndeployGenObject</class>
<desc>Undeploy all OAI 5G stack</desc> <desc>Undeploy all OAI 5G stack</desc>
......
...@@ -22,7 +22,7 @@ ...@@ -22,7 +22,7 @@
--> -->
<testCaseList> <testCaseList>
<htmlTabRef>rfsim-5gnr-down-e1</htmlTabRef> <htmlTabRef>rfsim-5gnr-down-e1</htmlTabRef>
<htmlTabName>CleanUp CUCP-CUUP-DU E1+F1 split</htmlTabName> <htmlTabName>CleanUp E1+F1 split</htmlTabName>
<htmlTabIcon>trash</htmlTabIcon> <htmlTabIcon>trash</htmlTabIcon>
<TestCaseRequestedList> <TestCaseRequestedList>
100022 100022
......
# CI test for 5G F1+E1 splits with RFsimulator
## General
This docker-compose file deploys a core, RAN, and 3 UEs. Specifically:
- 5GC mini deployment,
- 1 CU-CP,
- 3 CU-UPs, one for slices SST=1,2,3,
- 3 DUs,
- 3 UEs connecting to each DU, each requesting slice SST=1,2,3.
The CU-CP associates each UE X connecting through DU X to CU-UP X, X=1,2,3. To
this end, the docker-compose file deliberately employs the three `ran_netX`
networks to route the user-plane traffic of each DU X/CU-UP X pair, through the
`ran_netX` network in order to effectively test that the correct CU-UP is
associated. Basically, the traffic test will only succeed if the correct pair
of DU/CU-UP has been established; if not, the DU/CU-UP cannot communicate, as
the traffic cannot be routed.
For all other (CP, RFsim) traffic, all entities use the `public_net` network.
## How to run
You should be able to deploy the [basic 5G RFsim deployment](../5g_rfsimulator/README.md).
First, start the MySQL server and 5GC:
```bash
$ docker-compose up -d mysql oai-nrf oai-amf oai-smf oai-spgwu oai-ext-dn
$ docker-compose ps -a
```
Wait till everything is healthy.
Next, start the RAN:
```bash
$ docker-compose up -d oai-cucp oai-cuup{,2,3} oai-du{,2,3}
```
You can verify that the DUs and CU-UPs connected successfully:
```bash
$ docker logs rfsim5g-oai-cucp
[...]
18535.139811 [RRC] I Accepting new CU-UP ID 3585 name gNB-OAI (assoc_id 257)
18535.425744 [RRC] I Accepting new CU-UP ID 3584 name gNB-OAI (assoc_id 260)
18535.425757 [RRC] I Accepting new CU-UP ID 3586 name gNB-OAI (assoc_id 261)
18535.669733 [NR_RRC] I Received F1 Setup Request from gNB_DU 3585 (du-rfsim) on assoc_id 263
18535.669814 [RRC] I Accepting DU 3585 (du-rfsim), sending F1 Setup Response
18536.066417 [NR_RRC] I Received F1 Setup Request from gNB_DU 3586 (du-rfsim) on assoc_id 265
18536.066476 [RRC] I Accepting DU 3586 (du-rfsim), sending F1 Setup Response
18536.135581 [NR_RRC] I Received F1 Setup Request from gNB_DU 3584 (du-rfsim) on assoc_id 267
18536.135650 [RRC] I Accepting DU 3584 (du-rfsim), sending F1 Setup Response
```
You should see that the CU-UP initialized two GTP instances (one for NG-U, the
other for F1-U):
```
$ docker logs -f rfsim5g-oai-cuup
[...]
18535.425535 [GTPU] I Initializing UDP for local address 192.168.72.161 with port 2152
18535.425571 [GTPU] I Created gtpu instance id: 96
18535.425577 [GTPU] I Configuring GTPu address : 192.168.71.161, port : 2152
18535.425581 [GTPU] I Initializing UDP for local address 192.168.71.161 with port 2152
18535.425604 [GTPU] I Created gtpu instance id: 97
```
You should see the typical periodical output at the DUs:
```
$ docker logs rfsim5g-oai-du
[...]
18626.446953 [NR_MAC] I Frame.Slot 128.0
18629.151076 [NR_MAC] I Frame.Slot 256.0
```
Next, connect the UEs. They are configured to connect to each DU by setting the
RFsimulator server address to the `public_net` IP address of each DU. For each,
you should see that they get an IP address
```bash
$ docker compose up -d oai-nr-ue{,2,3}
$ docker logs oai-nr-ue
[...]
18758.176149 [NR_RRC] I rrcReconfigurationComplete Encoded 10 bits (2 bytes)
18758.176153 [NR_RRC] I Logical Channel UL-DCCH (SRB1), Generating RRCReconfigurationComplete (bytes 2)
18758.176154 [NAS] I [UE 0] Received NAS_CONN_ESTABLI_CNF: errCode 1, length 87
18758.176455 [OIP] I Interface oaitun_ue1 successfully configured, ip address 12.1.1.3, mask 255.255.255.0 broadcast address 12.1.1.255
```
Alternatively, check that they all received an IP address (the associated IP
addresses might be different):
```bash
$ docker exec -it rfsim5g-oai-nr-ue3 ip a show oaitun_ue1
[...]
inet 12.1.1.2/24 brd 12.1.1.255 scope global oaitun_ue1
[...]
$ docker exec -it rfsim5g-oai-nr-ue2 ip a show oaitun_ue1
[...]
inet 12.1.1.4/24 brd 12.1.1.255 scope global oaitun_ue1
[...]
$ docker exec -it rfsim5g-oai-nr-ue ip a show oaitun_ue1
[...]
inet 12.1.1.3/24 brd 12.1.1.255 scope global oaitun_ue1
[...]
```
Also, note that each DU sees only one UE! At the CU-CP, you should see that
each DU has been associated to a different CU-UP, based on the NSSAI (`exact
NSSAI match`):
```bash
$ docker logs rfsim5g-oai-cucp | grep CU-U
[...]
18757.531423 [RRC] I selecting CU-UP ID 3586 based on exact NSSAI match (3:0xffffff)
18757.531434 [RRC] I UE 1 associating to CU-UP assoc_id 261 out of 3 CU-UPs
18758.171502 [RRC] I selecting CU-UP ID 3584 based on exact NSSAI match (1:0xffffff)
18758.171510 [RRC] I UE 2 associating to CU-UP assoc_id 260 out of 3 CU-UPs
18758.772320 [RRC] I selecting CU-UP ID 3585 based on exact NSSAI match (2:0xffffff)
18758.772327 [RRC] I UE 3 associating to CU-UP assoc_id 257 out of 3 CU-UPs
```
Also, each UE should be able to ping the core network. For instance, with UE 1:
```bash
$ docker exec -it rfsim5g-oai-nr-ue ping -c1 12.1.1.1
PING 12.1.1.1 (12.1.1.1) 56(84) bytes of data.
64 bytes from 12.1.1.1: icmp_seq=1 ttl=64 time=15.2 ms
--- 12.1.1.1 ping statistics ---
1 packets transmitted, 1 received, 0% packet loss, time 0ms
rtt min/avg/max/mdev = 15.155/15.155/15.155/0.000 ms
```
Finally, undeploy the UEs (to give them time to do deregistration), and then
the rest of the network:
```bash
$ docker compose stop oai-nr-ue{,2,3}
$ docker compose down
```
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