Difference between revisions of "Open5gs: docker"

From OnnoWiki
Jump to navigation Jump to search
Line 181: Line 181:
 
Provisioning SIM information di open5gs HSS sebagai berikut:
 
Provisioning SIM information di open5gs HSS sebagai berikut:
  
* Buka (http://<DOCKER_HOST_IP>:3000) di web browser, dimana <DOCKER_HOST_IP> adalah IP dari machine/VM yang  
+
* Buka (http://<DOCKER_HOST_IP>:3000) di web browser, dimana <DOCKER_HOST_IP> adalah IP dari machine/VM yang menjalankan open5gs container. Login dengan credential berikut,
menjalankan open5gs container. Login dengan credential berikut,
 
  
 
  Username : admin
 
  Username : admin
Line 191: Line 190:
 
Provisioning IMSI dan MSISDN dengan OsmoHLR sebagai berikut,
 
Provisioning IMSI dan MSISDN dengan OsmoHLR sebagai berikut,
  
* First, login to the osmohlr container
+
* Pertama-tama, login ke osmohlr container
  
 
  docker exec -it osmohlr /bin/bash
 
  docker exec -it osmohlr /bin/bash
  
* Then, telnet to localhost
+
* Kemudian, telnet ke localhost
  
  $ telnet localhost 4258
+
  telnet localhost 4258
  
 
  OsmoHLR> enable
 
  OsmoHLR> enable
 
  OsmoHLR#
 
  OsmoHLR#
  
* Finally, register the subscriber information as in following example:
+
* Akhirnya, register subscriber information contoh berikut,
  
 
  OsmoHLR# subscriber imsi 001010123456790 create
 
  OsmoHLR# subscriber imsi 001010123456790 create
 
  OsmoHLR# subscriber imsi 001010123456790 update msisdn 9076543210
 
  OsmoHLR# subscriber imsi 001010123456790 update msisdn 9076543210
  
* Replace IMSI and MSISDN as per your programmed SIM
+
* Ganti IMSI dan MSISDN seperti SIM yang kita program.
  
Provisioning of SIM information in pyHSS is as follows:
+
Provisioning SIM information di pyHSS sebagai berikut,
  
* Goto http://172.22.0.18:8080/docs/
+
* Akses  http://172.22.0.18:8080/docs/
* Select apn -> Create new APN -> Press on Try it out. Then, in payload section use the below JSON and then press Execute
+
* Pilih apn -> Create new APN -> Press Try it out. Kemudian, di payload section gunakan contoh JSON berikut dan tekan Execute
  
 
  {
 
  {
Line 220: Line 219:
 
  }
 
  }
  
* Take note of apn_id specified in Response body under Server response for internet APN
+
* Catat apn_id yang di set di Response body dibawah Server response untuk internet APN
 
+
* Ulangi creation step untuk payload berikut,
* Repeat creation step for following payload
 
  
 
  {
 
  {
Line 230: Line 228:
 
  }
 
  }
  
* Take note of apn_id specified in Response body under Server response for ims APN
+
* Catat apn_id yang di set di Response body dibawah Server response untuk ims APN
 
* Execute this step of APN creation only once
 
* Execute this step of APN creation only once
  
Next, select auc -> Create new AUC -> Press on Try it out. Then, in payload section use the below example JSON to fill in ki, opc and amf for your SIM and then press Execute
+
Selanjutnya, select auc -> Create new AUC -> Press Try it out. Kemudian, di payload section gunakan contoh JSON berikut untuk mengisi ki, opc dan amf untuk SIM dan press Execute
  
 
  {
 
  {
Line 243: Line 241:
 
  }
 
  }
  
Take note of auc_id specified in Response body under Server response
+
* Catat auc_id yang di set di Response body dibawah Server response
 +
* Ganti imsi, ki, opc dan amf sesuai yang kita ingin program ke SIM
  
Replace imsi, ki, opc and amf as per your programmed SIM
+
Selanjutnya, select subscriber -> Create new SUBSCRIBER -> Press Try it out. Selanjutnya, di payload section gunakan contoh JSON berikut untuk mengisi in imsi, auc_id dan apn_list untuk SIM dan press Execute
 
 
Next, select subscriber -> Create new SUBSCRIBER -> Press on Try it out. Then, in payload section use the below example JSON to fill in imsi, auc_id and apn_list for your SIM and then press Execute
 
  
 
  {
 
  {
Line 260: Line 257:
 
  }
 
  }
  
auc_id is the ID of the AUC created in the previous steps
+
* auc_id adalah ID untuk AUC dibuat di tahap sebelumnya.
default_apn is the ID of the internet APN created in the previous steps
+
* default_apn adalah ID untuk internet APN dibuat di tahap sebelumnya
apn_list is the comma separated list of APN IDs allowed for the UE i.e. APN ID for internet and ims APN created in the previous steps
+
* apn_list adalah comma separated list dari APN ID yang diijinkan untuk UE i.e. APN ID untuk internet dan ims APN dibuat di tahap sebelumnya
Replace imsi and msisdn as per your programmed SIM
+
* Ganti imsi dan msisdn sesuai dengan SIM yang kita program
  
Finally, select ims_subscriber -> Create new IMS SUBSCRIBER -> Press on Try it out. Then, in payload section use the below example JSON to fill in imsi, msisdn, msisdn_list, scscf_peer, scscf_realm and scscf for your SIM/deployment and then press Execute
+
Akhirnya, select ims_subscriber -> Create new IMS SUBSCRIBER -> Press Try it out. Selanjutnya, di payload section gunakan contoh JSON berikut untuk mengisi imsi, msisdn, msisdn_list, scscf_peer, scscf_realm dan scscf untuk SIM/deployment dan press Execute
  
 
  {
 
  {
Line 278: Line 275:
 
  }
 
  }
  
Replace imsi, msisdn and msisdn_list as per your programmed SIM
+
* Ganti imsi, msisdn dan msisdn_list sesuai dengan SIM yang kita program.
 
+
* Ganti scscf_peer, scscf dan scscf_realm seperti deployment kita
Replace scscf_peer, scscf and scscf_realm as per your deployment
 
  
 
==Referensi==
 
==Referensi==
  
 
* https://github.com/herlesupreeth/docker_open5gs
 
* https://github.com/herlesupreeth/docker_open5gs

Revision as of 08:02, 28 August 2023

Sumber: https://github.com/herlesupreeth/docker_open5gs

Berbeda dengan nama repositorinya, repositori ini berisi file buruh docker untuk deploy jaringan 4G/5G simulasi Over-The-Air (OTA) atau RF menggunakan proyek berikut:

Test Setup

Docker host machine

  • Ubuntu 20.04 or 22.04

Over-The-Air (OTA) setup:

  • srsRAN (eNB/gNB) menggunakan Ettus USRP B210
  • srsRAN eNB menggunakan LimeSDR Mini v1.3
  • srsRAN eNB menggunakan LimeSDR-USB

RF simulasi setup:

  • srsRAN (gNB + UE) simulasi menggunakan ZMQ
  • UERANSIM (gNB + UE) simulator


Persyaratan wajib:

docker-ce - Version 22.0.5 atau yang lebih tinggi
docker-compose - Version 2.14 atau yang lebih tinggi


Setup IP Statik

Edit

sudo su
apt update
apt -y install net-tools
vi /etc/netplan/00-installer-config.yaml

Pastikan,

# This is the network config written by 'subiquity'
# network:
#   ethernets:
#     enp0s31f6:
#       dhcp4: true
#   version: 2
#

network:
    version: 2
    renderer: networkd
    ethernets:
        enp0s31f6:
            addresses:
                - 192.168.0.5/24
            nameservers:
                addresses: [8.8.8.8, 8.8.4.4]
            routes:
                - to: default
                  via: 192.168.0.222

Install

Clone repositori dan buat image docker dari open5gs, kamailio, ueransim

cd /usr/local/src/
git clone https://github.com/herlesupreeth/docker_open5gs
cd docker_open5gs/base
docker build --no-cache --force-rm -t docker_open5gs .
cd ../ims_base
docker build --no-cache --force-rm -t docker_kamailio .
cd ../srslte
docker build --no-cache --force-rm -t docker_srslte .
cd ../srsran
docker build --no-cache --force-rm -t docker_srsran .
cd ../ueransim
docker build --no-cache --force-rm -t docker_ueransim .

Build dan Run menggunakan docker-compose

cd ..
set -a
source .env
sudo ufw disable
docker-compose -f 4g-volte-deploy.yaml build
docker-compose -f sa-deploy.yaml build
sudo sysctl -w net.ipv4.ip_forward=1
sudo cpupower frequency-set -g performance

4G deployment

# 4G Core Network + IMS + SMS over SGs
docker-compose -f 4g-volte-deploy.yaml up
# srsRAN eNB using SDR (OTA)
docker-compose -f srsenb.yaml up -d && docker container attach srsenb
# srsRAN ZMQ eNB (RF simulated)
docker-compose -f srsenb_zmq.yaml up -d && docker container attach srsenb_zmq
# srsRAN ZMQ 4G UE (RF simulated)
docker-compose -f srsue_zmq.yaml up -d && docker container attach srsue_zmq

5G SA deployment

# 5G Core Network
docker-compose -f sa-deploy.yaml up
# srsRAN gNB using SDR (OTA)
docker-compose -f srsgnb.yaml up -d && docker container attach srsgnb
# srsRAN ZMQ gNB (RF simulated)
docker-compose -f srsgnb_zmq.yaml up -d && docker container attach srsgnb_zmq
# srsRAN ZMQ 5G UE (RF simulated)
docker-compose -f srsue_5g_zmq.yaml up -d && docker container attach srsue_5g_zmq
# UERANSIM gNB (RF simulated)
docker-compose -f nr-gnb.yaml up -d && docker container attach nr_gnb
# UERANSIM NR-UE (RF simulated)
docker-compose -f nr-ue.yaml up -d && docker container attach nr_ue

Konfigurasi

Untuk quick run (eNB/gNB, CN berada dalam docker network yang sama), edit hanya parameter berikut di .env sesuai setup kita

  • MCC
  • MNC
  • TEST_NETWORK --> Ubah ini hanya jika bentrok dengan jaringan internal di rumah/kantor Anda
  • DOCKER_HOST_IP --> Ini adalah alamat IP dari host yang menjalankan pengaturan docker Anda
  • SGWU_ADVERTISE_IP --> Ubah ini ke nilai DOCKER_HOST_IP yang ditetapkan di atas hanya jika eNB tidak menjalankan jaringan/host docker yang sama
  • UPF_ADVERTISE_IP --> Ubah ini ke nilai DOCKER_HOST_IP yang ditetapkan di atas hanya jika gNB tidak menjalankan jaringan/host docker yang sama
  • UE_IPV4_INTERNET --> Ubah ini ke rentang ip jaringan UE yang Anda inginkan (agar tidak konflik) untuk APN internet
  • UE_IPV4_IMS --> Ubah ini ke rentang ip jaringan UE yang Anda inginkan (agar tidak konflik) untuk ims APN

Jika eNB/gNB TIDAK berjalan di jaringan/host docker yang sama dengan host yang menjalankan Core/IMS yang melakukan docker, ikuti langkah-langkah tambahan di bawah ini

4G deployment

Di bawah mme section di docker compose file (4g-volte-deploy.yaml), uncomment bagian berikut,

...
    # ports:
    #   - "36412:36412/sctp"
...

Kemudian, uncomment bagian berikut di bawah sgwu section

...
    # ports:
    #   - "2152:2152/udp"
...

5G SA deployment

Di bawah amf section di docker compose file (sa-deploy.yaml), uncomment bagian berikut,

...
    # ports:
    #   - "38412:38412/sctp"
...

Kemudian, uncomment bagian berikut dibawah upf section

...
    # ports:
    #   - "2152:2152/udp"
...

Provisioning SIM information

Provisioning SIM information di open5gs HSS sebagai berikut:

  • Buka (http://<DOCKER_HOST_IP>:3000) di web browser, dimana <DOCKER_HOST_IP> adalah IP dari machine/VM yang menjalankan open5gs container. Login dengan credential berikut,
Username : admin
Password : 1423
  • Gunakan Web UI, tambahkan subscriber

Provisioning IMSI dan MSISDN dengan OsmoHLR sebagai berikut,

  • Pertama-tama, login ke osmohlr container
docker exec -it osmohlr /bin/bash
  • Kemudian, telnet ke localhost
telnet localhost 4258
OsmoHLR> enable
OsmoHLR#
  • Akhirnya, register subscriber information contoh berikut,
OsmoHLR# subscriber imsi 001010123456790 create
OsmoHLR# subscriber imsi 001010123456790 update msisdn 9076543210
  • Ganti IMSI dan MSISDN seperti SIM yang kita program.

Provisioning SIM information di pyHSS sebagai berikut,

  • Akses http://172.22.0.18:8080/docs/
  • Pilih apn -> Create new APN -> Press Try it out. Kemudian, di payload section gunakan contoh JSON berikut dan tekan Execute
{
  "apn": "internet",
  "apn_ambr_dl": 0,
  "apn_ambr_ul": 0
}
  • Catat apn_id yang di set di Response body dibawah Server response untuk internet APN
  • Ulangi creation step untuk payload berikut,
{
  "apn": "ims",
  "apn_ambr_dl": 0,
  "apn_ambr_ul": 0
}
  • Catat apn_id yang di set di Response body dibawah Server response untuk ims APN
  • Execute this step of APN creation only once

Selanjutnya, select auc -> Create new AUC -> Press Try it out. Kemudian, di payload section gunakan contoh JSON berikut untuk mengisi ki, opc dan amf untuk SIM dan press Execute

{
  "ki": "8baf473f2f8fd09487cccbd7097c6862",
  "opc": "8E27B6AF0E692E750F32667A3B14605D",
  "amf": "8000",
  "sqn": 0,
  "imsi": "001010123456790"
}
  • Catat auc_id yang di set di Response body dibawah Server response
  • Ganti imsi, ki, opc dan amf sesuai yang kita ingin program ke SIM

Selanjutnya, select subscriber -> Create new SUBSCRIBER -> Press Try it out. Selanjutnya, di payload section gunakan contoh JSON berikut untuk mengisi in imsi, auc_id dan apn_list untuk SIM dan press Execute

{
  "imsi": "001010123456790",
  "enabled": true,
  "auc_id": 1,
  "default_apn": 1,
  "apn_list": "0,1",
  "msisdn": "9076543210",
  "ue_ambr_dl": 0,
  "ue_ambr_ul": 0
}
  • auc_id adalah ID untuk AUC dibuat di tahap sebelumnya.
  • default_apn adalah ID untuk internet APN dibuat di tahap sebelumnya
  • apn_list adalah comma separated list dari APN ID yang diijinkan untuk UE i.e. APN ID untuk internet dan ims APN dibuat di tahap sebelumnya
  • Ganti imsi dan msisdn sesuai dengan SIM yang kita program

Akhirnya, select ims_subscriber -> Create new IMS SUBSCRIBER -> Press Try it out. Selanjutnya, di payload section gunakan contoh JSON berikut untuk mengisi imsi, msisdn, msisdn_list, scscf_peer, scscf_realm dan scscf untuk SIM/deployment dan press Execute

{
    "imsi": "001010123456790",
    "msisdn": "9076543210",
    "sh_profile": "string",
    "scscf_peer": "scscf.ims.mnc001.mcc001.3gppnetwork.org",
    "msisdn_list": "[9076543210]",
    "ifc_path": "default_ifc.xml",
    "scscf": "sip:scscf.ims.mnc001.mcc001.3gppnetwork.org:6060",
    "scscf_realm": "ims.mnc001.mcc001.3gppnetwork.org"
}
  • Ganti imsi, msisdn dan msisdn_list sesuai dengan SIM yang kita program.
  • Ganti scscf_peer, scscf dan scscf_realm seperti deployment kita

Referensi