Free5GC: Install
Sumber: https://www.free5gc.org/installations/stage-1-all-in-one/
Kebutuhan Minimal
Software
- OS: Ubuntu 18.04
- Linux kernel: 4.15.0-43-generic
- gcc 7.3.0
- Go 1.11.4
- QEMU emulator 2.11.1
Hardware
- CPU: Intel i5 processor
- RAM: 4GB
- Hard drive: 160G
- NIC card: 1Gbps ethernet card
Hardware recommended
- CPU: Intel i7 processor
- RAM: 8GB
- Hard drive: 160G
- NIC card: 10Gbps ethernet card
Hardware Tested
eNB
- WNC OSQ4G-01E2, 3GPP Rel-13 compliance (4G LTE Small Cell)
- D-Link DWR-1012, 3GPP Rel-12 compliance (4G LTE Small Cell)
- GemTek WLTGFC-101, 3GPP Rel-9 compliance (4G LTE Small Cell)
UE
- LG C90 cellular phone
- D-Link DWR-932C dongle via USB cable
Persiapan
Setup KVM Environment
- VM NIC Cards
- NIC for connecting to the Internet
- Network source: Virtual network - NAT
- Interface name in VM: ens3 (in this example)
- NIC for connecting to eNB:
- Network source: Host device <Host Interface Name>
- Interface name in VM: ens4 (in this example)
- NIC for connecting to the Internet
Kumpulan Informasi konfigurasi eNodeB dan USIM
Informasi eNodeB (dalam contoh ini)
IP Address: 192.188.2.1 Gateway: 192.188.2.2 (IP NIC yang tersambung ke eNB) PLMN: MCC: 208 MNC: 93 MME GID: 1 MME Code: 1 TAC: 1
Informasi USIM (dalam contoh ini)
IMSI 208930000000003 K 8baf473f2f8fd09487cccbd7097c6862 OPc 8e27b6af0e692e750f32667a3b14605d
Instalasi
Ikuti instruksi dari Part A ~ Part C.
Part A. Compile Source Code
Menyiapkan aplikasi pendukung.
Install MongoDB 3.6.3, Golang 1.11.4.
sudo apt-get update sudo apt-get -y install mongodb wget git sudo systemctl start mongodb (if '/usr/bin/mongod' is not running)
Check apakah golang sudah di instalasi
go version
Jika belum, jalankan perintah di bawah ini,
wget -q https://storage.googleapis.com/golang/getgo/installer_linux chmod +x installer_linux ./installer_linux source ~/.bash_profile rm -f installer_linux
go get -u -v "github.com/gorilla/mux" go get -u -v "golang.org/x/net/http2" go get -u -v "golang.org/x/sys/unix"
Untuk menjalankan free5GC dengan least privilege, TUN device permission harus crw-rw-rw-(666).
ls -al /dev/net/tun
crw-rw-rw- 1 root root 10, 200 Jan 14 13:09 /dev/net/tun
Tulis file konfigurasi untuk TUN device.
sudo sh -c "cat << EOF > /etc/systemd/network/99-free5gc.netdev [NetDev] Name=uptun Kind=tun EOF"
sudo systemctl enable systemd-networkd sudo systemctl restart systemd-networkd
Cek konfigurasi IPv6 Kernel. Meskipun kita dapat melewati langkah ini, sangat di sarankan untuk set untuk mendukung IPv6-enabled UE.
sysctl -n net.ipv6.conf.uptun.disable_ipv6
(jika menghasilkan 0 maka IPv6 enable, kita bisa meloncati langkah berikut)
sudo sh -c "echo 'net.ipv6.conf.uptun.disable_ipv6=0' > /etc/sysctl.d/30-free5gc.conf" sudo sysctl -p /etc/sysctl.d/30-free5gc.conf
Saat ini kita siap untuk menset IP address pada TUN device. Jika IPv6 di disabled untuk TUN device, maka kita perlu menghilangkan address=cafe::1/64 from konfigurasi di bawah.
sudo sh -c "cat << EOF > /etc/systemd/network/99-free5gc.network [Match] Name=uptun [Network] Address=45.45.0.1/16 Address=cafe::1/64 EOF"
sudo systemctl enable systemd-networkd sudo systemctl restart systemd-networkd
Tambahkan kalimat-kalimat berikut ke /etc/network/interfaces untuk network-manager service
auto uptun iface uptun inet static address 45.45.0.1 netmask 255.255.0.0 iface uptun inet6 static pre-up modprobe ipv6 address cafe::1 netmask 64
Restart uptun interface
sudo ip a flush uptun sudo systemctl restart networking
Check apakah uptun sudah up
sudo apt-get -y install net-tools ifconfig uptun
AMF, SMF, UPF, HSS, dan PCRF
Instal depedency untuk membuat dari source
sudo apt-get -y install autoconf libtool gcc pkg-config git flex bison libsctp-dev libgnutls28-dev libgcrypt-dev libssl-dev libidn11-dev libmongoc-dev libbson-dev libyaml-dev
Git clone dan compile
git clone https://bitbucket.org/nctu_5g/free5gc-stage-1.git cd free5gc-stage-1 autoreconf -iv ./configure --prefix=`pwd`/install make -j `nproc` make install
Part B. VM Internal Network Environment Setting
[Option 1] perlu menjalankan secara manual setiap kali boot,
sudo ifconfig ens4 192.188.2.2 sudo sh -c 'echo 1 > /proc/sys/net/ipv4/ip_forward' sudo iptables -t nat -A POSTROUTING -o ens3 -j MASQUERADE sudo iptables -I INPUT -i uptun -j ACCEPT
[Option 2] di konfigurasi untuk auto run saat boot
sudo sh -c "cat << EOF > /etc/init.d/ngc-network-setup #!/bin/sh ### BEGIN INIT INFO # Provides: ngc-network-setup # Required-Start: networkd # Required-Stop: networkd # Default-Start: networkd # Default-Stop: networkd # Short-Description: # Description: # ### END INIT INFO ifconfig ens4 192.188.2.2 sh -c 'echo 1 > /proc/sys/net/ipv4/ip_forward' iptables -t nat -A POSTROUTING -o ens3 -j MASQUERADE iptables -I INPUT -i uptun -j ACCEPT EOF" sudo chmod 755 /etc/init.d/ngc-network-setup sudo /etc/init.d/ngc-network-setup sudo ln -s /etc/init.d/ngc-network-setup /etc/rc3.d/S99ngc-network-setup sudo ln -s /etc/init.d/ngc-network-setup /etc/rc4.d/S99ngc-network-setup sudo ln -s /etc/init.d/ngc-network-setup /etc/rc5.d/S99ngc-network-setup
Part C. Run
Run in all-in-one mode
Aplikasi (daemon) free5gc-ngcd termasuk di dalamnya AMF, SMF, UPF, HSS, dan PCRF. Jadi, daripada menjalankan semua 5 daemon, kita bisa menjalankan free5gc-ngcd di development environment kita.
./free5gc-ngcd
Saat running free5gc-ngcd
- Semua log dari AMF, SMF, UPF, HSS, dan PCRF akan di tulis ke ./install/var/log/free5gc/free5gc.log.
- Semua setting akan di managed dari satu file ./install/etc/free5gc/free5gc.conf.
- Kita akan melihat path log/conf di awal screen saat running.
- Kita dapat menggunakan argumen -f untuk menentukan config file yang akan digunakan.
Fungsi 5GC di jalankan terpisah
Sebetulnya fungsi 5GC dapat dijalankan secara terpisah.
./free5gc-upfd ./free5gc-amfd ./free5gc-smfd ./nextepc-hssd ./nextepc-pcrfd
Catatan: kita juga dapat menjalankan fungsi 5GC yang di mesin terpisah.
[Optional] Self-test
Pengembang 5GC juga menyediakan program yang memeriksa apakah penginstalan sudah benar. Setelah menjalankan wireshark, pilih interface loopback, lalu filter s1ap || diameter || gtpv2 || gtp dan jalankan,
./test/testngc
atau
./test/testngc -f install/etc/free5gc/test/free5gc.testngc.conf
Kita dapat melihat paket-paket dibuat secara virtual.
Part D. Web User Interface
Install Node.js dan NPM
sudo apt-get -y install curl curl -sL https://deb.nodesource.com/setup_8.x | sudo -E bash - sudo apt-get -y install nodejs
Install dependency untuk run WebUI (pertama kali)
cd webui npm install
Run WebUI
cd webui npm run dev
Sekarang server web berjalan di http://localhost:3000. username dan password default adalah "admin" dan "1423".
Konfigurasi Core Network
file konfigurasi free5GC Ubah ./install/etc/free5gc/free5gc.conf
amf-slap address (line 67)
amf: s1ap: addr: <IP of GW NIC to eNB: 192.188.2.2>
upf-gtpu address (line 162)
smf: upf: addr: <IP of GW NIC to eNB: 192.188.2.2>
AMF GUMMEI (line 91)
amf: gummei: plmn_id: mcc: <eNB MCC: 208> mnc: <eNB MNC: 93> mme_gid: <eNB MME GID: 1> mme_code: <eNB MME Code: 1>
AMF TAI (line 130)
amf: tai: plmn_id: mcc: <eNB MCC: 208> mnc: <eNB MNC: 93> tac: <eNB TAC: 1>
Tambahkan subscriber (UE)
Tambahkan subscriber melalui Web UI Run web server:
cd ./webui && npm run dev
Masuk ke http://localhost:3000
- Username : admin
- Password : 1423
Tambahkan subscriber dengan IMSI, K, OPc
- Masuk ke menu Subscriber.
- Click Tombol `+` untuk menambahkan subscriber baru.
- Isi IMSI, security context(K, OPc, AMF), dan APN dari subscriber.
- Click Tombol `SAVE`
Penambahan ini akan langsung berlaku di free5GC tanpa perlu me-restart daemon apa pun.
Rebuild Project
Untuk sepenuhnya membangun kembali proyek setelah memodifikasi source code
(Control-C kill free5gc-ngcd) make maintainer-clean rm -rf ./install git pull autoreconf -iv ./configure --prefix=`pwd`/install make -j `nproc` make install ./free5gc-ngcd
Troubleshooting
Catatan untuk memodifikasi file konfigurasi
- Gunakan spasi untuk indent. JANGAN gunakan tab.
- Spasi harus ditambahkan di antara titik dua dan nilai setelah nama item, mis. addr: 192.188.2.2
Jalankan,
./test/testngc test failure
Pastikan semua file konfigurasi dan pengaturan lingkungan sudah benar.
Kill semua proses testngc yang tidak selesai dengan benar
killall -9 testngc
Hapus test subscriber yang ditinggalkan oleh pengujian gagal sebelumnya (NextEPC issue #57)
$ mongo > use free5gc > db.subscribers.find() ### (Check the test subscriber) > db.subscribers.drop() ### Remove all subscriber > db.subscribers.find() ### (Check that all subscribers are empty) ./free5gc-ngcd errors
ERRR: - certificate expire (NextEPC issue #94)
cd support/freeDiameter ./make_certs.sh . cd ../.. make install
Address telah digunakan
$ killall -9 testngc
atau
$ killall -9 free5gc-ngcd
Kegagalan Rebuild
config.status: error: cannot find input file: `Makefile.in' (NextEPC issue #68) autoheader \ && aclocal \ && libtoolize --ltdl --copy --force \ && automake --add-missing --copy \ && autoconf \ && ./configure
Appendix A: Program the SIM Card
Install package:
sudo apt-get install pcscd pcsc-tools libccid python-dev swig python-setuptools python-pip libpcsclite-dev sudo pip install pycrypto
Download PySIM
git clone git://git.osmocom.org/pysim.git
CD ke folder pyscard dan install
cd <pyscard-path> sudo /usr/bin/python setup.py build_ext install
Verify bahwa reader kita sudah siap
sudo pcsc_scan
Cek apakah reader kita dapat membaca SIM card
cd <pysim-path> ./pySim-read.py –p 0
Program / isi SIM card dengan information
./pySim-prog.py -p 0 -x 208 -y 93 -t sysmoUSIM-SJS1 -i 208930000000003 --op=8e27b6af0e692e750f32667a3b14605d -k 8baf473f2f8fd09487cccbd7097c6862 -s 8988211000000088313 -a 23605945
Anda bisa mendapatkan kartu SIM Anda dari sysmocom. Anda juga memerlukan pembaca kartu untuk menulis kartu SIM Anda. Anda bisa mendapatkan pembaca kartu dari sini atau perangkat yang setara akan melakukannya.