blob: e5b91ae1d37a9b3d9eacd94bce41dde4f64a9f93 [file] [log] [blame]
..
SPDX-FileCopyrightText: © 2022 Open Networking Foundation <support@opennetworking.org>
SPDX-License-Identifier: Apache-2.0
.. _deployment_gnbsim_guide:
gNBSim Deployment Guide
========================
gNBSim in AIAB mode with 2 interfaces
```````````````````````````````````````
- This is default mode of deployment for gNB Simulator
- Multus cni needs to be enabled on cluster. Required for bess-upf & gNBSim
- `make 5gc` will by default deploy gNB Simulator in this mode
- One interface is used for user plane traffic towards UPF
- Second interface is used to send traffic towards control plane (i.e. AMF).
- UPF network & default gateway is provided in the override values.
- Route to UPF network is added when POD comes up
- defaultAs is configured per profile. This address is used to send data traffic during test
.. note::
Multiple gNB's in one simulator instance need more changes in helm chart. This is pending work.
To add UPF routes. Following is example of override values ::
config:
gnbsim:
gnb:
ip: 192.168.251.5/24 #user plane IP at gnb if 2 separate interface provided
singleInterface: false
networkTopo:
- upfAddr: "192.168.252.3/32"
upfGw: "192.168.251.1"
.. image:: ../_static/images/Single-cluster_2_interface.jpg
:width: 700px
gNB simulator running standalone with single interface
``````````````````````````````````````````````````````
- Install gNB Simulator on any K8s cluster
- Multus cni needs to be enabled for the K8s cluster where bess-upf runs
- Make sure gNB Simulator can communicate with AMF & UPF
- *TODO* - New Makefile target will deploy just 5G control plane
- *TODO* - New Makefile target will deploy only gNB Simulator
- Single interface is used for user plane traffic towards UPF & as well traffic towards AMF
- defaultAs is configured per profile. This address is used to send data traffic during test
- configure AMF address or FQDN appropriately
.. note::
Multiple gNB's can not be simulated since only 1 gNB will be able to use 2152 port
Following is example of override values ::
config:
gnbsim:
singleInterface: true
yamlCfgFiles:
gnb.conf:
configuration:
gnbs: # pool of gNodeBs
gnb1:
n3IpAddr: "POD_IP" # set if singleInterface is true
.. image:: ../_static/images/Separate-cluster_Single_interface.jpg
:width: 700px
gNBSim running standalone with 2 or more interfaces
```````````````````````````````````````````````````
- Install gNB Simulator on any K8s cluster
- Multus cni needs to be enabled on cluster. Required for bess-upf & gNB
- Make sure gNB Simulator can communicate with AMF & UPF
- *TODO* - New Makefile target will deploy just 5G control plane
- *TODO* - New Makefile target will deploy only gNB Simulator
- One interface is used for user plane traffic towards UPF
- Second interface is used to send traffic towards control plane (i.e. AMF).
- UPF network & default gateway is provided in the override values.
- Route to UPF network is added when POD comes up
- defaultAs is configured per profile. This address is used to send data traffic during test
- configure AMF address or FQDN appropriately
.. note::
Multiple gNB's in one simulator instance need more changes in helm chart. This is pending work.
To add UPF routes. Following is example of override values ::
config:
gnbsim:
gnb:
ip: 192.168.251.5/24 #user plane IP at gnb if 2 separate interface provided
singleInterface: false
networkTopo:
- upfAddr: "192.168.252.3/32"
upfGw: "192.168.251.1"
.. image:: ../_static/images/Separate-cluster_2_interface.jpg
:width: 700px
Running gNBSim Standalone Application in or out of a Docker
```````````````````````````````````````````````````````````
.. image:: ../_static/images/Standalone_gnbsim_1_interface.jpg
:width: 1000px
Note that ``DATA-IFACE`` is ens1f0, this interface to be used for both control and data traffic
We need two VMs, in this example we call one is SD-Core VM, other one is Simulator VM
* SD-Core VM: to Deploy AIAB
* Simulator VM: to Run gnbsim process in or out of Docker
SD-Core VM Preparation:
- To Expose External IP and Port of amf service, update sd-core-5g-values.yaml ::
amf:
# use externalIP if you need to access your AMF from remote setup and you don't
# want setup NodePort Service Type
ngapp:
externalIp: <DATA_IFACE_IP>
nodePort: 38412
- Deploy 5g core with options DATA_IFACE=ens1f0 and ENABLE_GNBSIM=false, sample command::
$ ENABLE_GNBSIM=false DATA_IFACE=ens1f0 CHARTS=release-2.0 make 5g-core
- Make sure that ``DATA_IFACE`` connected with Simulator VM
Simulator VM Preparation
- Single interface is used for user plane traffic towards UPF
- Single interface is used to send traffic towards control plane (i.e. AMF).
- Checkout gnbsim code using the following command::
$ git clone https://github.com/omec-project/gnbsim.git
- Install 'go' if you want to run with local executable ::
$ wget https://go.dev/dl/go1.19.linux-amd64.tar.gz
$ sudo tar -xvf go1.19.linux-amd64.tar.gz
$ mv go /usr/local
$ export PATH=$PATH:/usr/local/go/bin
- To Compile the code locally, you can use below commands::
$ ``go build`` or ``make docker-build``
- Add following route in routing table for sending traffic over ``DATA_IFACE`` interface ::
$ ip route add 192.168.252.3 via <DATA-IFACE-IP-IN-SD-CORE-VM>
- Just to Make sure the data connectivity, ping UPF IP from ``DATA_IFACE``::
$ ping 192.168.252.3 -I <DATA_IFACE>
- configure correct n2 and n3 addresses in config/gnbsim.yaml ::
configuration:
singleInterface: false #default value
execInParallel: false #run all profiles in parallel
gnbs: # pool of gNodeBs
gnb1:
n2IpAddr: <DATA-IFACE-IP>># gNB N2 interface IP address used to connect to AMF
n2Port: 9487 # gNB N2 Port used to connect to AMF
n3IpAddr: <DATA-IFACE-IP> # gNB N3 interface IP address used to connect to UPF. when singleInterface mode is false
n3Port: 2152 # gNB N3 Port used to connect to UPF
name: gnb1 # gNB name that uniquely identify a gNB within application
- configure AMF address or FQDN appropriately in gnbsim.yaml ::
configuration:
singleInterface: false #default value
execInParallel: false #run all profiles in parallel
gnbs: # pool of gNodeBs
gnb1:
defaultAmf:
hostName: # Host name of AMF
ipAddr: <AMF-SERVICE-EXTERNAL-IP> ># AMF Service external IP address in SD-Core VM
port: 38412 # AMF port
- Run gnbsim application using the following command::
$ ./gnbsim -cfg config/gnbsim.yaml
(or)
- Install Docker and run gnbsim inside a Docker with Docker hub Image or locally created Image ::
$ docker run --privileged -it -v ~/gnbsim/config:/gnbsim/config --net=host <Docker-Image> bash
$ ./gnbsim -cfg config/gnbsim.yaml
Note: gnbsim docker images found at https://hub.docker.com/r/omecproject/5gc-gnbsim/tags