Difference between revisions of "Open5gs: docker"
Onnowpurbo (talk | contribs) |
Onnowpurbo (talk | contribs) |
||
| 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, |
| − | |||
Username : admin | Username : admin | ||
| Line 191: | Line 190: | ||
Provisioning IMSI dan MSISDN dengan OsmoHLR sebagai berikut, | Provisioning IMSI dan MSISDN dengan OsmoHLR sebagai berikut, | ||
| − | * | + | * Pertama-tama, login ke osmohlr container |
docker exec -it osmohlr /bin/bash | docker exec -it osmohlr /bin/bash | ||
| − | * | + | * Kemudian, telnet ke localhost |
| − | + | telnet localhost 4258 | |
OsmoHLR> enable | OsmoHLR> enable | ||
OsmoHLR# | OsmoHLR# | ||
| − | * | + | * 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 | ||
| − | * | + | * Ganti IMSI dan MSISDN seperti SIM yang kita program. |
| − | Provisioning | + | 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 |
{ | { | ||
| Line 220: | Line 219: | ||
} | } | ||
| − | * | + | * Catat apn_id yang di set di Response body dibawah Server response untuk internet APN |
| − | + | * Ulangi creation step untuk payload berikut, | |
| − | * | ||
{ | { | ||
| Line 230: | Line 228: | ||
} | } | ||
| − | * | + | * 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 | ||
| − | + | 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: | ||
} | } | ||
| − | + | * 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 | |
| − | |||
| − | |||
{ | { | ||
| Line 260: | Line 257: | ||
} | } | ||
| − | auc_id | + | * auc_id adalah ID untuk AUC dibuat di tahap sebelumnya. |
| − | default_apn | + | * default_apn adalah ID untuk internet APN dibuat di tahap sebelumnya |
| − | apn_list | + | * 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 | |
{ | { | ||
| Line 278: | Line 275: | ||
} | } | ||
| − | + | * Ganti imsi, msisdn dan msisdn_list sesuai dengan SIM yang kita program. | |
| − | + | * Ganti scscf_peer, scscf dan scscf_realm seperti deployment kita | |
| − | |||
==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:
- Core Network (4G/5G) - open5gs - https://github.com/open5gs/open5gs
- IMS (Only 4G supported i.e. VoLTE) - kamailio
- IMS HSS - https://github.com/nickvsnetworking/pyhss
- Osmocom HLR - https://github.com/osmocom/osmo-hlr
- Osmocom MSC - https://github.com/osmocom/osmo-msc
- srsRAN (4G/5G) - https://github.com/srsran/srsRAN
- UERANSIM (5G) - https://github.com/aligungr/UERANSIM
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