DEPLOY_SA5G_WITH_DS_TESTER.md 21.2 KB
Newer Older
arora's avatar
arora committed
1 2 3 4 5 6 7 8 9
<table style="border-collapse: collapse; border: none;">
  <tr style="border-collapse: collapse; border: none;">
    <td style="border-collapse: collapse; border: none;">
      <a href="http://www.openairinterface.org/">
         <img src="./images/oai_final_logo.png" alt="" border=3 height=50 width=150>
         </img>
      </a>
    </td>
    <td style="border-collapse: collapse; border: none; vertical-align: center;">
arora's avatar
arora committed
10
      <b><font size = "5">OpenAirInterface 5G Core Network Deployment using Docker-Compose and Testing with dsTest</font></b>
arora's avatar
arora committed
11 12 13 14
    </td>
  </tr>
</table>

arora's avatar
arora committed
15

arora's avatar
arora committed
16
![SA dsTest Demo](./images/docker-compose/5gCN.jpg)
arora's avatar
arora committed
17

arora's avatar
arora committed
18 19


arora's avatar
arora committed
20
This tutorial will help in understanding how to deploy OAI core network using docker-compose. In this tutorial we have used [dsTest](https://www.developingsolutions.com/products/dstest-5g-core-network-testing/) a commercial paid gNB emulator. Though instead of this readers can also use gNBsim (an opensource gNB emulator), you can follow another tutorial for [this](./DEPLOY_SA5G_WITH_GNBSIM.md). Please follow the tutorial step by step to create a stable working testbed. 
arora's avatar
arora committed
21

arora's avatar
arora committed
22
**Reading time: ~20mins**
arora's avatar
arora committed
23

arora's avatar
arora committed
24
**Tutorial replication time: ~1hr**
arora's avatar
arora committed
25 26 27

Note: In case readers are interested in deploying debuggers/developers core network environment with more logs please follow [this tutorial](./DEBUG_5G_CORE.md)

arora's avatar
arora committed
28 29
**TABLE OF CONTENTS**

arora's avatar
arora committed
30
1.  [Pre-requisites](#1-pre-requisites)
arora's avatar
arora committed
31
2.  [Network Function Container Images](#2-network-function-container-images)
arora's avatar
arora committed
32 33 34 35 36 37 38
3.  [Configuring Host Machines](#3-configuring-host-machines)
4.  [Configuring OAI 5G Core Network Functions](#4-configuring-the-oai-5g-core-network-functions)
5.  [Configuring dsTest Scenario](#5-configuring-dstester-scenario)
6.  [Deploying OAI 5G Core Network](#6-deploying-oai-5g-core-network)
7.  [Executing dsTest Scenario](#7-executing-the-dstest-scenario)
8.  [Analysing Scenario Results](#8-analysing-the-scenario-results)
9.  [Demo Video](#9-demo-video)
39
10. [Notes](#10-notes)
arora's avatar
arora committed
40 41 42 43 44 45 46 47 48 49 50 51 52 53

## 1. Pre-requisites ##

The container images are built using `docker build` command on Ubuntu 18.04 host machine. The base image for all the containers is Ubuntu 18.04. 

The requried softwares and their respected versions are listed below. To replicate the testbed use these versions. 


| Software                   | Version                         |
|:-------------------------- |:------------------------------- |
| docker engine              | 19.03.6, build 369ce74a3c       |
| docker-compose             | 1.27.4, build 40524192          |
| Host operating system      | Ubuntu 18.04.4 LTS              |
| Container operating system | Ubuntu 18.04                    |
arora's avatar
arora committed
54
| dsTest (Licensed)          | 5.5                             |
arora's avatar
arora committed
55 56 57
| tshark                     | 3.4.4 (Git commit c33f6306cbb2) |
| wireshark                  | 3.4.4 (Git commit c33f6306cbb2) |

58
The new version of `wireshark` may not be available in the ubuntu repository so it is better to build it from source.
arora's avatar
arora committed
59

60
Most of the times the `docker-compose-host` machine is not configured with packet forwarding then it can be done using below command (if you have already done it in any other section then don't repeat).
arora's avatar
arora committed
61

62 63 64 65 66 67
**This is the most important step towards end-to-end connectivity.**

```bash
(docker-compose-host)$ sudo sysctl net.ipv4.conf.all.forwarding=1
(docker-compose-host)$ sudo iptables -P FORWARD ACCEPT
```
arora's avatar
arora committed
68 69 70 71

To know how to configure the machine with the above requirements vist [pre-requisites](./DEPLOY_PRE_REQUESITES.md) page.

## 2. Network Function Container Images ##
arora's avatar
arora committed
72

73
- In this demo the network function branch and tags which were used are listed below, follow the [Retrieving images](./RETRIEVE_OFFICIAL_IMAGES.md) or the [Building images](./BUILD_IMAGES.md) to build images with below tags.
arora's avatar
arora committed
74

arora's avatar
arora committed
75 76 77 78 79 80
| CNF Name    | Branch Name | Tag      | Ubuntu 18.04 | RHEL8 (UBI8)    |
| ----------- | ----------- | -------- | ------------ | ----------------|
| AMF         | `master`    | `v1.1.0` | X            | X               |
| SMF         | `master`    | `v1.1.0` | X            | X               |
| NRF         | `master`    | `v1.1.0` | X            | X               |
| SPGW-U-TINY | `master`    | `v1.1.2` | X            | X               |
arora's avatar
arora committed
81

82
- In case readers are interested in making images using different branch then **they have to build images from scratch they can't use the docker-hub images**.
arora's avatar
arora committed
83

arora's avatar
arora committed
84 85
## 3. Configuring Host Machines ##

86
All the network functions are connected using `demo-oai-net` bridge. There are two ways to create this bridge either manually or automatically using docker-compose. The manual version will allow packet capturing while network functions are getting deployed. So the initial tested setup packets can be captured for debugging purposes or checking if network functions registered properly to nrf. The second option of automatic deployment is good when initial packet capture is not important.
arora's avatar
arora committed
87 88 89

### 3.1 Creating bridge manually 

90
- Make sure that the below line is commented in [docker-compose file](../docker-compose/docker-compose.yaml) and uncomment the line above this,
arora's avatar
arora committed
91 92 93 94 95 96 97 98 99 100 101 102 103

```
    networks:
          public_net:
              driver: bridge
              name: demo-oai-net
              ipam:
                  config:
                      - subnet: 192.168.70.128/26
              driver_opts:
                  com.docker.network.bridge.name: "demo-oai"
```

104
- The `docker-compose-host` machine needs to be configured with `demo-oai-net` bridge before deploying core network components. To capture initial message exchange between smf<-->nrf<-->upf.
arora's avatar
arora committed
105 106

    ```bash
arora's avatar
arora committed
107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123
    (docker-compose-host)$ docker network create \
      --driver=bridge \
      --subnet=192.168.70.128/26 \
      -o "com.docker.network.bridge.name"="demo-oai" \
      demo-oai-public-net
    455631b3749ccd6f10a366cd1c49d5a66cf976d176884252d5d88a1e54049bc5
    (docker-compose-host)$ ifconfig demo-oai
    demo-oai: flags=4099<UP,BROADCAST,MULTICAST>  mtu 1500
            inet 192.168.70.129  netmask 255.255.255.192  broadcast 192.168.70.191
            RX packets 0  bytes 0 (0.0 B)
            RX errors 0  dropped 0  overruns 0  frame 0
            TX packets 0  bytes 0 (0.0 B)
            TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0
    (docker-compose-host)$ docker network ls
    NETWORK ID          NAME                  DRIVER              SCOPE
    d2d34e05bb2d        bridge                bridge              local
    455631b3749c        demo-oai-public-net   bridge              local
arora's avatar
arora committed
124
    ```
arora's avatar
arora committed
125

arora's avatar
arora committed
126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141
### 3.1 Create bridge automatically  

- Though the bridge can be automatically created using docker-compose file if there is no need to capture initial packets. Uncomment the last lines of the [docker-compose.yaml](../docker-compose/docker-compose.yaml) or docker-compose-no-nrf.yaml. Else replace with below section

    ```
    networks:
          public_net:
              driver: bridge
              name: demo-oai-net
              ipam:
                  config:
                      - subnet: 192.168.70.128/26
              driver_opts:
                  com.docker.network.bridge.name: "demo-oai"
    ```

142
- If the `docker-compose-host` machine is not configured with packet forwarding then it can be done using below command (**important step**), 
arora's avatar
arora committed
143 144 145

    ```bash
    (docker-compose-host)$ sudo sysctl net.ipv4.conf.all.forwarding=1
146
    (docker-compose-host)$ sudo iptables -P FORWARD ACCEPT
arora's avatar
arora committed
147 148 149 150 151
    ```

- The `dsTest-host` needs to configured with a route to reach `docker-compose-host`. Assuming `dsTest-host` physical interface which is connected with `docker-compose-host` is NIC1 and the ip-address of this interface is IP_ADDR_NIC1 then,

    ```bash
152 153 154
    (dsTest-host)$ sudo ip route add route 192.168.70.128/26 \
                           via IP_ADDR_NIC1\
                           dev NIC1_NAME
arora's avatar
arora committed
155
    ```
arora's avatar
arora committed
156

157
- To verify ping the ip-address of the `docker-compose-host` interface connected to demo-oai bridge, if possible also ping amf from the dsTest-host machine.
arora's avatar
arora committed
158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174

    ```bash
    (dsTest-host)$ ping 192.168.70.129
    PING 192.168.70.129 (192.168.70.129) 56(84) bytes of data.
    64 bytes from 192.168.70.129: icmp_seq=1 ttl=64 time=0.260 ms
    64 bytes from 192.168.70.129: icmp_seq=2 ttl=64 time=0.147 ms
    64 bytes from 192.168.70.129: icmp_seq=3 ttl=64 time=0.187 ms
    64 bytes from 192.168.70.129: icmp_seq=4 ttl=64 time=0.187 ms
    64 bytes from 192.168.70.129: icmp_seq=5 ttl=64 time=0.181 ms
    ^C
    --- 192.168.70.129 ping statistics ---
    5 packets transmitted, 5 received, 0% packet loss, time 108ms
    rtt min/avg/max/mdev = 0.147/0.192/0.260/0.038 ms    
    ```
    
## 4. Configuring the OAI-5G Core Network Functions ##

arora's avatar
arora committed
175
- **Core Network Configuration**: The docker-compose file has configuration parameters of each core network component. The file is pre-configured with parameters related to this scenario. The table contains the location of the configuration files. These files contains allowed configurable parameters. **Keep checking this file it is possible that we will add new parameters for new features.**  
arora's avatar
arora committed
176 177 178

    | File Name   | Repository                                   | Location        |
    |:----------- |:-------------------------------------------- |:--------------- |
arora's avatar
arora committed
179 180 181 182
    | amf.conf    | (Gitlab) cn5g/oai-cn5g-amf                   | [etc/amf.conf](https://gitlab.eurecom.fr/oai/cn5g/oai-cn5g-amf/-/blob/develop/etc/amf.conf)    |
    | smf.conf    | (Gitlab) cn5g/oai-cn5g-smf                   | [etc/smf.conf](https://gitlab.eurecom.fr/oai/cn5g/oai-cn5g-smf/-/blob/develop/etc/smf.conf)    |
    | nrf.conf    | (Gilab) cn5g/oai-cn5g-nrf                    | [etc/nrf.conf](https://gitlab.eurecom.fr/oai/cn5g/oai-cn5g-nrf/-/blob/develop/etc/nrf.conf)   |
    | spgw_u.conf | (Github) OPENAIRINTERFACE/openair-spgwu-tiny | [etc/spgw_u.conf](https://github.com/OPENAIRINTERFACE/openair-spgwu-tiny/blob/gtp_extension_header/etc/spgw_u.conf) |
arora's avatar
arora committed
183 184


arora's avatar
arora committed
185
- **User Subscprition Profile**: The dsTest UE which will request for a PDU session will have this user profile. Verify that this entry is present in the oai_db.sql file located in [docker-compose/oai-db.sql](../docker-compose/oai_db.sql).  
arora's avatar
arora committed
186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226

    ```
    IMSI - 208950000000031
    IMEI - 55000000000001
    Secret Key (K) - 0x0C0A34601D4F07677303652C0462535B
    OPc - 0x63bfa50ee6523365ff14c1f45f88737d
    ``` 

- **Optional**: Incase, the user subscription entry is missing from oai_db.sql file then it can be added using below commands,

    ```bash
    #Login to mysql container once the container is running
    (docker-compose-host)$ docker exec -it mysql /bin/bash
    (mysql-container)$ mysql -uroot -plinux -D oai_db
    mysql> INSERT INTO users VALUES
    ('208950000000031','380561234567','55000000000001',NULL,'PURGED',50,40000000,100000000,47,0000000000,1,0x0C0A34601D4F07677303652C0462535B,0,0,0x40,'ebd07771ace8677a',0x63bfa50ee6523365ff14c1f45f88737d);
    ```

## 5. Configuring DsTester Scenario ##

- **User Subscription Profile**: The user profile used for dsTest scenario is below. Verify that this entry is present in the oai_db.sql file located in docker-compose/oai-db.sql.  

    ```
    IMSI - 208950000000031
    IMEI - 55000000000001
    Secret Key (K) - 0x0C0A34601D4F07677303652C0462535B
    OPc - 0x63bfa50ee6523365ff14c1f45f88737d
    ```

- **gNB Parameters for dsTest**: 

    ```
    TAC - 0xa000
    MCC - 208
    MNC - 95
    NSSAI SST - 222
    NSSAI SD - 123
    ```

- [SmartEvents State Machine](https://www.developingsolutions.com/Help/Topics/SmartFlow-SmartEvents-State-Machines.htm) used for this dsTest scenario is below, the number on each arrow between different states depicts transition interval in milli seconds. 

arora's avatar
arora committed
227
![SmartEvent State Machine](./images/docker-compose/smartevent.png)
arora's avatar
arora committed
228 229 230 231 232



## 6. Deploying OAI 5g Core Network ##

arora's avatar
arora committed
233
- The core network is deployed using a [bash script](../docker-compose/core-network.sh) which is a wrapper around `docker-compose` and `docker` command. 
arora's avatar
arora committed
234
- The script informs the user when the core-network is correctly configured by checking health status of containers and connectivity between different core network components.
235
- In case if there is a problem in using the script then use docker-compose manually read the [notes section](#10-notes)
arora's avatar
arora committed
236
- If the script is executed without any arguments then the helper menu is visible 
arora's avatar
arora committed
237 238 239 240

    ```bash
    (docker-compose-host)$ pwd
    /home/<docker-compose-host>/oai/oai-cn-fed/docker-compose
241
    (docker-compose-host)$ ./core-network.sh
Rohan's avatar
Rohan committed
242

arora's avatar
arora committed
243 244
    Only use the following options

Rohan's avatar
Rohan committed
245 246 247 248
    start [option1] [option2]: start the 5gCN
    stop [option1] [option2]: stops the 5gCN

    --option1
arora's avatar
arora committed
249 250
    nrf: nrf should be used
    no-nrf: nrf should not be used
Rohan's avatar
Rohan committed
251 252 253 254 255 256 257 258 259

    --option2
    vpp-upf: vpp-upf should be used (only works without nrf, no-nrf option1)
    spgwu : spgwu should be used as upf (works with or without nrf, nrf or no-nrf option1)

    Example 1 : ./core-network.sh start nrf spgwu
    Example 2: ./core-network.sh start no-nrf vpp-upf
    Example 1 : ./core-network.sh stop nrf spgwu
    Example 2: ./core-network.sh stop no-nrf vpp-upf
arora's avatar
arora committed
260 261 262 263 264 265 266 267 268
    ```
- Before executing the script it is better to start capturing packets to see the message flow between smf <--> nrf <--> upf. The packets will be captured on **demo-oai** bridge which should be configured on the `docker-compose-host` machine. 

    ```bash
    (docker-compose-host)$ tshark -i demo-oai -w 5gcn-deployment.pcap
    ```
- Starting the core network components, 

    ```bash
269
    (docker-compose-host)$ ./core-network.sh start nrf spgwu
arora's avatar
arora committed
270 271 272 273 274 275 276 277 278 279 280 281 282 283 284 285 286 287 288 289 290 291 292 293 294 295 296 297 298 299 300 301 302 303 304 305 306 307 308 309 310 311 312 313 314 315 316 317 318 319 320 321 322 323 324 325 326 327 328 329 330 331 332 333 334
    Starting 5gcn components in the order nrf, mysql, amf, smf, spgwu...
    Creating mysql   ... done
    Creating oai-nrf ... done
    Creating oai-amf   ... done
    Creating oai-smf   ... done
    Creating oai-spgwu ... done
    Creating oai-ext-dn ... done
    Checking the health status of the containers...
    oai-nrf : "healthy", mysql : "starting", oai-amf : "healthy", oai-smf : "healthy", oai-spgwu : "healthy"
    All components are healthy...
    Checking if SMF and UPF registered with nrf core network
    For example: oai-smf Registration with oai-nrf can be checked on this url /nnrf-nfm/v1/nf-instances?nf-type='SMF' {"_links":{"item":[{"href":"192.168.70.133"}],"self":""}}
    SMF and UPF are registered to NRF...
    Core network is configured and healthy, total time taken 49293 milli seconds
    ```

## 7. Executing the dsTest Scenario ##

- **Optional**, in case there is a need to maintain two different pcap files one for capturing initial message exchange between core network components and second for scenario execution then stop the previous packet capturing process and run a new one,

    ``` bash
    (docker-compose-host)$ tshark -i demo-oai -w scenario-execution.pcap    
    ```

- **Scenario Execution**: On the dsTest host run the scenario either using the dsClient GUI or command line. Below are the commands to run it using the command line.

    ```bash
    (dsTest-host)$ dsClient -d 127.0.0.1 -c "source dsTestScenario.xml"
    ```
- **Verify PDN session establishment**: To check if a PDN session is properly estabilished there is an extra external data network container only for this demo purpose. The dsTest UE can be reached using this container to validate the PDN session establishment. To understand the packet flow read the next analysis section. In our settings the UE network is 12.1.1.0/24 the configuration can be seen in smf.conf and spgw_u.conf. The allocated IP address to dsTest UE can be seen in smf logs. Generally, if there is a single UE then the allocated ip address will be 12.1.1.2.

    ```bash
    (docker-compose-host)$ docker exec -it oai-ext-dn ping 12.1.1.2
    64 bytes from 12.1.1.2: icmp_seq=3 ttl=63 time=0.565 ms
    64 bytes from 12.1.1.2: icmp_seq=4 ttl=63 time=0.629 ms
    64 bytes from 12.1.1.2: icmp_seq=5 ttl=63 time=0.542 ms
    64 bytes from 12.1.1.2: icmp_seq=6 ttl=63 time=0.559 ms
    ^c
    ```

- **Stop PCAP collection**: Stop the wireshark or tshark process on the docker-compose-host.

- **Undeploy the core network**: Before undeploying collect all the logs from each component for analysis. 

    ```bash
    (docker-compose-host)$ docker logs oai-amf > amf.log
    (docker-compose-host)$ docker logs oai-smf > smf.log
    (docker-compose-host)$ docker logs oai-nrf > nrf.log
    (docker-compose-host)$ docker logs oai-spgwu > spgwu.log  
    (docker-compose-host)$ ./core-network.sh stop nrf
    Stopping the core network...
    Stopping oai-ext-dn ... done
    Stopping oai-smf    ... done
    Stopping oai-spgwu  ... done
    Stopping oai-amf    ... done
    Stopping mysql      ... done
    Stopping oai-nrf    ... done
    Removing oai-ext-dn ... done
    Removing oai-smf    ... done
    Removing oai-spgwu  ... done
    Removing oai-amf    ... done
    Removing mysql      ... done
    Removing oai-nrf    ... done
    Network demo-oai-public-net is external, skipping
    Core network stopped
arora's avatar
arora committed
335
    ```
arora's avatar
arora committed
336 337 338 339 340 341 342 343 344 345 346 347 348 349 350 351 352

## 8. Analysing the Scenario Results ##

This section is subdivided in two parts the first part for analysing the message exchange between core network components at the time of deployment. Second, for analysing the dsTest scenario.

| Container     | Ip-address     |
| ------------- |:-------------- |
| mysql         | 192.168.70.131 |
| oai-amf       | 192.168.70.132 |
| oai-smf       | 192.168.70.133 |
| oai-nrf       | 192.168.70.130 |
| oai-spgwu     | 192.168.70.134 |
| oai-ext-dn    | 192.168.70.135 |
| Host Machine  | 192.168.70.129 |
| dsTest gNB/UE | 192.168.18.184 |


arora's avatar
arora committed
353 354 355 356 357 358 359 360
| Pcap/log files                                                                                           |
|:-------------------------------------------------------------------------------------------------------- |
| [5gcn-deployment.pcap](./results/dsTest/pcap/5gcn-deployment.pcap)                                       |
| [scenario-execution.pcap](./results/dsTest/pcap/scenario-execution.pcap)                                 |
| [amf.log](./results/dsTest/logs/amf.log), [initialmessage.log](./results/dsTest/logs/initialmessage.log) |
| [smf.log](./results/dsTest/logs/smf.log)                                                                 |
| [nrf.log](./results/dsTest/logs/nrf.log)                                                                 |
| [spgwu.log](./results/dsTest/logs/spgwu.log)                                                             |
arora's avatar
arora committed
361 362 363 364 365 366 367 368 369 370 371 372 373


### Analysing initial message exchange

Using wireshark open 5gcn-deployment.pcap use the filter http || pfcp

- SMF request to NRF for subscribing UPF registration/de-registration events: Packet 13, POST request 
- SMF registration with NRF: Packet 23, PUT request
- UPF(SPGWU) registration with NRF: Packet 35, PUT request
- NRF notification to SMF for UPF registration: Packet 40, POST request
- SMF <--> UPF PFCP Association Setup request and response: Packet 42, 46
- Message exchange between SMF, NRF and UPF can be seen in nrf.log but the name of the network function is replaced with a unique identifier (UUID). 

arora's avatar
arora committed
374
![Analysing initial message exchange](./images/docker-compose/start.png)
arora's avatar
arora committed
375 376 377 378


### Analysing scenario execution

arora's avatar
arora committed
379
Using wireshark open scenario-execution.pcap use the filter ngap || http || pfcp || gtp
arora's avatar
arora committed
380 381 382 383 384 385 386 387 388 389 390 391

- NG Setup request reponse: Packet 19,21
- Initial UE Message registration request: Packet 23
- Authentication and security processL: Packet 49-52
- Registration complete: Packet 55
- PDU session establishment request: Packet 72
- AMF requesting NRF for SMF address: Packet 78 & 80 GET Request
- AMF <--> SMF PDU session request: Packet 90 & 92 POST Request
- SMF <--> UPF PFCP session establishment: Packet 93 & 98
- Allocated UE IP-address can be seen in Packet 93, 102, 109
- Echo request response between UE and oai-ext-dn container: Packet 129, 130

arora's avatar
arora committed
392
![Scenario execution 1](./images/docker-compose/scenario-1.png)
arora's avatar
arora committed
393 394 395

- UE PDU session release request: Packet 394
- AMF <--> SMF PDU session release request: Packet 398
arora's avatar
arora committed
396
- NGreset : Packet 473
arora's avatar
arora committed
397

arora's avatar
arora committed
398
![Scenario execution 2](./images/docker-compose/scenario-2.png)
arora's avatar
arora committed
399 400 401 402


## 9. Demo Video ##

arora's avatar
arora committed
403
- Here is the link to the [youtube video](https://www.youtube.com/watch?v=ENQiwl2EYl8) 
arora's avatar
arora committed
404 405 406 407

## 10. Notes ##

- The `oai-ext-dn` container is optional and is only required if the user wants to ping the dsTest UE. In general this container is not required except for testing purposes. 
arora's avatar
arora committed
408
- There is a possibility to perform the same test or setup the core network without nrf by using `docker-compose/docker-compose-no-nrf.yaml` [file](../docker-compose/docker-compose-no-nrf.yaml) . Check the configuration before using the compose file.
arora's avatar
arora committed
409 410
- This tutorial can be taken as reference to test the OAI 5G core with a COTS UE. The configuration files has to be changed according to the gNB and COTS UE information should be present in the mysql database. 
- Generally, in a COTS UE two PDN sessions are created by default so configure the IMS in SMF properly. Currently some parameters can not be configured via [docker-compose.yaml](../docker-compose/docker-compose.yaml). We recommend you directly configure them in the conf file and mount the file in the docker during run time. 
411
- Its not necessary to use [core-network.sh](../docker-compose/core-network.sh) bash script, it is possible to directly deploy using `docker-compose` command
arora's avatar
arora committed
412
- In case you want to deploy debuggers/developers core network environment with more logs please follow [this tutorial](./DEBUG_5G_CORE.md)
413 414 415 416 417 418 419 420

    ```
    #To start the containers 
    docker-compose -f <file-name> -p <project-name> up -d
    #To check their health status
    docker-compose -f <file-name> -p <project-name> ps -a
    #To stop the containers 
    docker-compose -f <file-name> -p <project-name> down
421
    ```