Commit e3bec24e authored by Sagar Arora's avatar Sagar Arora

Separate subnets for F1U, F1C, E1, UE and Core

parent f0783731
...@@ -10,15 +10,29 @@ This docker-compose file deploys a core, RAN, and 3 UEs. Specifically: ...@@ -10,15 +10,29 @@ This docker-compose file deploys a core, RAN, and 3 UEs. Specifically:
- 3 DUs, - 3 DUs,
- 3 UEs connecting to each DU, each requesting slice SST=1,2,3. - 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 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 `f1u_netX` networks to route the user-plane traffic of each DU X/CU-UP X pair, through the `f1u_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.
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. Core network components are on `core_net` network, CU-CP <--> CU-UP X communicate via `e1_net` network, CU-CP <--> DU X communicate via `f1c_net` network and DU X <--> NR_UE X communicate via `ue_net` network.
## Connectivity
```
AMF --> 192.168.71.132 (N2,Namf)
SMF --> 192.168.71.133 (N4,Nsmf)
NRF --> 192.168.71.130 (Nnrf)
SPGWU --> 192.168.71.134 (N3)
CU-CP --> 192.168.71.X (N2), 192.168.72.2 (F1C), 192.168.77.2 (E1)
CU-UP1 --> 192.168.71.X (N3), 192.168.73.2 (F1U), 192.168.77.3 (E1)
CU-UP2 --> 192.168.71.X (N3), 192.168.74.2 (F1U), 192.168.77.4 (E1)
CU-UP3 --> 192.168.71.X (N3), 192.168.76.2 (F1U), 192.168.77.5 (E1)
DU1 --> 192.168.72.2 (F1C), 192.168.73.3 (F1U), 192.168.78.2 (RFSIM)
DU2 --> 192.168.72.3 (F1C), 192.168.74.3 (F1U), 192.168.78.3 (RFSIM)
DU3 --> 192.168.72.4 (F1C), 192.168.76.3 (F1U), 192.168.78.4 (RFSIM)
UE1 --> 192.168.78.5 (RFSIM)
UE2 --> 192.168.78.6 (RFSIM)
UE3 --> 192.168.78.7 (RFSIM)
```
## How to run ## How to run
...@@ -26,20 +40,20 @@ You should be able to deploy the [basic 5G RFsim deployment](../5g_rfsimulator/R ...@@ -26,20 +40,20 @@ You should be able to deploy the [basic 5G RFsim deployment](../5g_rfsimulator/R
First, start the MySQL server and 5GC: First, start the MySQL server and 5GC:
```bash ```bash
$ docker-compose up -d mysql oai-nrf oai-amf oai-smf oai-spgwu oai-ext-dn docker-compose up -d mysql oai-nrf oai-amf oai-smf oai-spgwu
$ docker-compose ps -a docker-compose ps -a
``` ```
Wait till everything is healthy. Wait till everything is healthy.
Next, start the RAN: Next, start the RAN:
```bash ```bash
$ docker-compose up -d oai-cucp oai-cuup{,2,3} oai-du{,2,3} 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: You can verify that the DUs and CU-UPs connected successfully:
```bash ```bash
$ docker logs rfsim5g-oai-cucp docker logs rfsim5g-oai-cucp
[...] [...]
18535.139811 [RRC] I Accepting new CU-UP ID 3585 name gNB-OAI (assoc_id 257) 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.425744 [RRC] I Accepting new CU-UP ID 3584 name gNB-OAI (assoc_id 260)
...@@ -55,18 +69,18 @@ $ docker logs rfsim5g-oai-cucp ...@@ -55,18 +69,18 @@ $ docker logs rfsim5g-oai-cucp
You should see that the CU-UP initialized two GTP instances (one for NG-U, the You should see that the CU-UP initialized two GTP instances (one for NG-U, the
other for F1-U): other for F1-U):
``` ```
$ docker logs -f rfsim5g-oai-cuup docker logs -f rfsim5g-oai-cuup
[...] [...]
18535.425535 [GTPU] I Initializing UDP for local address 192.168.72.161 with port 2152 122690.500374 [GTPU] I Initializing UDP for local address 192.168.73.2 with port 2153
18535.425571 [GTPU] I Created gtpu instance id: 96 122690.500406 [GTPU] I Created gtpu instance id: 96
18535.425577 [GTPU] I Configuring GTPu address : 192.168.71.161, port : 2152 122690.500413 [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 122690.500414 [GTPU] I Initializing UDP for local address 192.168.71.161 with port 2152
18535.425604 [GTPU] I Created gtpu instance id: 97 122690.500420 [GTPU] I Created gtpu instance id: 97
``` ```
You should see the typical periodical output at the DUs: You should see the typical periodical output at the DUs:
``` ```
$ docker logs rfsim5g-oai-du docker logs rfsim5g-oai-du
[...] [...]
18626.446953 [NR_MAC] I Frame.Slot 128.0 18626.446953 [NR_MAC] I Frame.Slot 128.0
...@@ -77,8 +91,8 @@ Next, connect the UEs. They are configured to connect to each DU by setting the ...@@ -77,8 +91,8 @@ 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, RFsimulator server address to the `public_net` IP address of each DU. For each,
you should see that they get an IP address you should see that they get an IP address
```bash ```bash
$ docker compose up -d oai-nr-ue{,2,3} docker compose up -d oai-nr-ue{,2,3}
$ docker logs oai-nr-ue docker logs oai-nr-ue
[...] [...]
18758.176149 [NR_RRC] I rrcReconfigurationComplete Encoded 10 bits (2 bytes) 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.176153 [NR_RRC] I Logical Channel UL-DCCH (SRB1), Generating RRCReconfigurationComplete (bytes 2)
...@@ -89,15 +103,15 @@ $ docker logs oai-nr-ue ...@@ -89,15 +103,15 @@ $ docker logs oai-nr-ue
Alternatively, check that they all received an IP address (the associated IP Alternatively, check that they all received an IP address (the associated IP
addresses might be different): addresses might be different):
```bash ```bash
$ docker exec -it rfsim5g-oai-nr-ue3 ip a show oaitun_ue1 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 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 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 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 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 inet 12.1.1.3/24 brd 12.1.1.255 scope global oaitun_ue1
[...] [...]
...@@ -107,7 +121,7 @@ Also, note that each DU sees only one UE! At the CU-CP, you should see that ...@@ -107,7 +121,7 @@ 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 each DU has been associated to a different CU-UP, based on the NSSAI (`exact
NSSAI match`): NSSAI match`):
```bash ```bash
$ docker logs rfsim5g-oai-cucp | grep CU-U 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.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 18757.531434 [RRC] I UE 1 associating to CU-UP assoc_id 261 out of 3 CU-UPs
...@@ -119,7 +133,7 @@ $ docker logs rfsim5g-oai-cucp | grep CU-U ...@@ -119,7 +133,7 @@ $ docker logs rfsim5g-oai-cucp | grep CU-U
Also, each UE should be able to ping the core network. For instance, with UE 1: Also, each UE should be able to ping the core network. For instance, with UE 1:
```bash ```bash
$ docker exec -it rfsim5g-oai-nr-ue ping -c1 12.1.1.1 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. 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 64 bytes from 12.1.1.1: icmp_seq=1 ttl=64 time=15.2 ms
...@@ -131,6 +145,6 @@ rtt min/avg/max/mdev = 15.155/15.155/15.155/0.000 ms ...@@ -131,6 +145,6 @@ 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 Finally, undeploy the UEs (to give them time to do deregistration), and then
the rest of the network: the rest of the network:
```bash ```bash
$ docker compose stop oai-nr-ue{,2,3} docker compose stop oai-nr-ue{,2,3}
$ docker compose down 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