# Simulasi 5G Menggunakan Open5GS dan UERANSIM ## Tugas Simulasi 5G 1. Gunakan VM Ubuntu 22.04 sebagai OS pada semua laptop 2. Gunakan Open5GS sebagai 5G Core 3. Gunakan UERANSIM sebagai gNB dan UE 4. Gunakan pembagian tugas seperti: - 1 Laptop sebagai Server - 1 Laptop sebagai gNB - 2 Laptop sebagai UE 5. Gunakan format IMSI: - "123" sebagai angka tetap - "01" sesuai dengan nomor kelompok - "xxxxxxxxx" sebagai angka unik untuk setiap UE 6. UE harus bisa mengakses internet (bisa melakukan ping google.com) 7. UE harus bisa berkomunikasi satu sama lain dalam jaringan 8. Analisis protokol komunikasi yang digunakan selama simulasi berlangsung ## VM1: Server (Open5GS Core dengan MongoDB) ### 1. Instalasi MongoDB 4.4.18 ```bash # Impor kunci publik MongoDB wget -qO - https://www.mongodb.org/static/pgp/server-4.4.asc | sudo apt-key add - # Buat file list untuk MongoDB echo "deb [ arch=amd64,arm64 ] https://repo.mongodb.org/apt/ubuntu focal/mongodb-org/4.4 multiverse" | sudo tee /etc/apt/sources.list.d/mongodb-org-4.4.list # Perbarui database paket sudo apt update # Instal versi spesifik MongoDB 4.4.18 sudo apt install -y mongodb-org=4.4.18 mongodb-org-server=4.4.18 mongodb-org-shell=4.4.18 mongodb-org-mongos=4.4.18 mongodb-org-tools=4.4.18 # Cegah upgrade otomatis versi MongoDB echo "mongodb-org hold" | sudo dpkg --set-selections echo "mongodb-org-server hold" | sudo dpkg --set-selections echo "mongodb-org-shell hold" | sudo dpkg --set-selections echo "mongodb-org-mongos hold" | sudo dpkg --set-selections echo "mongodb-org-tools hold" | sudo dpkg --set-selections # Mulai dan aktifkan MongoDB sudo systemctl start mongod sudo systemctl enable mongod ``` ### 2. Instalasi Open5GS dari PPA ```bash # Instal dependensi sudo apt install -y software-properties-common # Tambahkan PPA Open5GS sudo add-apt-repository ppa:open5gs/latest sudo apt update # Instal Open5GS sudo apt install -y open5gs ``` ### 3. Konfigurasi Open5GS ```bash # Verifikasi status layanan systemctl status open5gs-* | grep Active # Aktifkan IP forwarding echo "net.ipv4.ip_forward=1" | sudo tee -a /etc/sysctl.conf sudo sysctl -p # Atur NAT (ganti enp0s3 dengan interface jaringan Anda) sudo iptables -t nat -A POSTROUTING -s 10.45.0.0/16 -o enp0s3 -j MASQUERADE sudo iptables -A FORWARD -s 10.45.0.0/16 -m conntrack --ctstate NEW -j ACCEPT sudo iptables -A FORWARD -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT # Buat aturan permanen sudo apt install -y iptables-persistent sudo netfilter-persistent save ``` ### 4. Instalasi dan penggunaan open5gs-dbctl Tool `open5gs-dbctl` digunakan untuk mempermudah pengelolaan subscriber pada Open5GS. ```bash # Unduh open5gs-dbctl dari GitHub wget https://raw.githubusercontent.com/open5gs/open5gs/main/misc/db/open5gs-dbctl sudo mv open5gs-dbctl /usr/bin/ sudo chmod +x /usr/bin/open5gs-dbctl # Periksa help dari open5gs-dbctl open5gs-dbctl help # Jika terjadi error karena mongosh tidak ditemukan # Edit file open5gs-dbctl untuk menggunakan mongo alih-alih mongosh sudo nano /usr/bin/open5gs-dbctl # Ganti semua instance "mongosh" dengan "mongo" # Tambahkan subscriber pertama (1230122222222) open5gs-dbctl add 1230122222222 465B5CE8B199B49FAA5F0A2EE238A6BC E8ED289DEBA952E4283B54E88E6183CA internet # Tambahkan subscriber kedua (12301333333333) open5gs-dbctl add 12301333333333 465B5CE8B199B49FAA5F0A2EE238A6BC E8ED289DEBA952E4283B54E88E6183CA internet # Melihat daftar subscriber open5gs-dbctl list ``` Format perintah basic untuk menambahkan subscriber adalah: ``` open5gs-dbctl add <IMSI> <Key> <OPC> <APN> ``` ## VM2: Setup gNB dengan UERANSIM ### Langkah 1: Persiapan Sistem ```bash # Update paket sistem sudo apt update && sudo apt upgrade -y # Instal dependensi yang dibutuhkan sudo apt install -y git cmake make gcc g++ libsctp-dev lksctp-tools iproute2 net-tools iputils-ping ``` ### Langkah 2: Pengunduhan dan Kompilasi UERANSIM ```bash # Clone repository UERANSIM cd ~ git clone https://github.com/aligungr/UERANSIM cd UERANSIM # Kompilasi UERANSIM make ``` ### Langkah 3: Konfigurasi gNB ```bash # Dapatkan alamat IP IP_ADDRESS=$(ip -4 addr show $(ip route | grep default | awk '{print $5}') | grep -oP '(?<=inet\s)\d+(\.\d+){3}') echo "Alamat IP: $IP_ADDRESS" # Buat direktori konfigurasi mkdir -p ~/etc/ueransim # Buat konfigurasi gNB cat > ~/UERANSIM/config/gnb.yaml << EOF # UERANSIM gNB Configuration mcc: '123' # Mobile Country Code mnc: '01' # Mobile Network Code untuk kelompok 01 nci: '0x000000010' # NR Cell Identity idLength: 32 # ID Length tac: 1 # Tracking Area Code linkIp: $IP_ADDRESS # IP laptop gNB (otomatis terdeteksi) ngapIp: $IP_ADDRESS # IP untuk NGAP interface gtpIp: $IP_ADDRESS # IP untuk GTP interface # Alamat IP AMF (Open5GS server) amfConfigs: - address: 192.168.1.1 # Ganti dengan alamat IP server Open5GS port: 38412 # Port default AMF # Konfigurasi Slice slices: - sst: 1 # Slice Service Type (default: 1) sd: 0x000001 # Slice Differentiator (opsional) # Informasi debug logLevel: info # debug, info, warn, error, fatal EOF echo "Konfigurasi gNB disimpan ke ~/UERANSIM/config/gnb.yaml" ``` **Catatan**: Pastikan untuk mengganti alamat IP server Open5GS dengan IP yang benar (VM1). ### Langkah 4: Skrip Menjalankan gNB ```bash # Buat skrip untuk menjalankan gNB cat > ~/start-gnb.sh << 'EOF' #!/bin/bash cd ~/UERANSIM sudo ./build/nr-gnb -c config/gnb.yaml EOF # Berikan izin eksekusi chmod +x ~/start-gnb.sh echo "Skrip start-gnb.sh telah dibuat dan diberikan izin eksekusi" ``` ### Langkah 5: Konfigurasi Firewall (Opsional) ```bash # Mengizinkan traffic SCTP untuk NGAP (gNB ke AMF) sudo ufw allow 38412/sctp # Mengizinkan traffic UDP untuk GTP (gNB ke UPF) sudo ufw allow 2152/udp # Aktifkan firewall jika belum aktif sudo ufw enable ``` ### Langkah 6: Verifikasi Konektivitas ke Server Open5GS ```bash # Periksa konektivitas ke server Open5GS ping -c 4 192.168.1.1 # Ganti dengan alamat IP server Open5GS # Periksa port SCTP (NGAP) terbuka di server nc -zv 192.168.1.1 38412 # Periksa port UDP (GTP) terbuka di server nc -zvu 192.168.1.1 2152 ``` ### Langkah 7: Menjalankan gNB ```bash # Jalankan gNB (ini akan menampilkan log) ~/start-gnb.sh ``` Output yang diharapkan: ``` [2024-03-10 10:00:00.000] [sctp] [info] Trying to establish SCTP connection... (192.168.1.1:38412) [2024-03-10 10:00:00.100] [sctp] [info] SCTP connection established (192.168.1.1:38412) [2024-03-10 10:00:00.200] [ngap] [info] NGSetupRequest sent [2024-03-10 10:00:00.300] [ngap] [info] NGSetupResponse received ``` ### Langkah 8: Pemecahan Masalah Jika terjadi masalah konektivitas: 1. **Periksa konfigurasi jaringan** pada kedua VM (pastikan keduanya bisa saling ping) ```bash ip addr ip route ping 192.168.1.1 # Alamat server Open5GS ``` 2. **Periksa layanan AMF di Open5GS** berjalan dengan baik: ```bash # Di VM1 (Server) sudo systemctl status open5gs-amfd ``` 3. **Periksa firewall** untuk memastikan port diizinkan: ```bash sudo ufw status ``` 4. **Periksa log AMF** di server Open5GS: ```bash # Di VM1 (Server) sudo tail -f /var/log/open5gs/amf.log ``` ## Langkah Selanjutnya Setelah VM2 (gNB) berhasil terhubung ke VM1 (Open5GS Core), langkah berikutnya adalah menyiapkan VM3 dan VM4 sebagai UE menggunakan UERANSIM.