free5GC Stage 2 Installation Guide
Minimum Requirement
- Software
- OS: Ubuntu 18.04 or later versions
- gcc 7.3.0
- Go 1.12.9 linux/amd64
- QEMU emulator 2.11.1
**Note:** Please use Ubuntu 18.04 or later versions and go 1.12.9 linux/amd64
You can use go version
to check your current Go version.
- 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
There are no gNB and UE for standalone 5GC available in the market yet.
Installation
A. Install Control Plane Entities
-
Install the required packages
sudo apt -y update
sudo apt -y install mongodb wget git
sudo systemctl start mongodb
-
Go installation
- If another version of Go is installed
- Please remove the previous Go version
sudo rm -rf /usr/local/go
- Install Go 1.12.9
wget https://dl.google.com/go/go1.12.9.linux-amd64.tar.gz
sudo tar -C /usr/local -zxvf go1.12.9.linux-amd64.tar.gz
- Clean installation
- Install Go 1.12.9
wget https://dl.google.com/go/go1.12.9.linux-amd64.tar.gz
sudo tar -C /usr/local -zxvf go1.12.9.linux-amd64.tar.gz
mkdir -p ~/go/{bin,pkg,src}
echo 'export GOPATH=$HOME/go' >> ~/.bashrc
echo 'export GOROOT=/usr/local/go' >> ~/.bashrc
echo 'export PATH=$PATH:$GOPATH/bin:$GOROOT/bin' >> ~/.bashrc
echo 'export GO111MODULE=off' >> ~/.bashrc
source ~/.bashrc
-
Clone free5GC project in $GOPATH/src
cd $GOPATH/src
git clone https://bitbucket.org/free5GC/free5gc-stage-2.git free5gc
-
Run the script to install dependent packages
-
Extract the free5gc_libs.tar.gz
to setup the environment for compiling
cd $GOPATH/src/free5gc
tar -C $GOPATH -zxvf free5gc_libs.tar.gz
-
Compile network function services in $GOPATH/src/free5gc
, e.g. AMF:
cd $GOPATH/src/free5gc
go build -o bin/amf -x src/amf/amf.go
-
Run network function services, e.g. AMF:
B. Install User Plane Entity (UPF)
- Install the required packages
sudo apt -y update
sudo apt -y install git gcc cmake autoconf libtool pkg-config libmnl-dev libyaml-dev
go get -u github.com/sirupsen/logrus
- Enter the UPF directory
cd $GOPATH/src/free5gc/src/upf
- Build from sources
mkdir build
cd build
cmake ..
make -j `nproc`
- Run UPF library test
(In directory: $GOPATH/src/free5gc/src/upf/build)
sudo ./bin/testgtpv1
- Config is located at
$GOPATH/src/free5gc/src/upf/build/config/upfcfg.yaml
C. Run Procedure Tests
Start Wireshark to capture any interface with pfcp||icmp||gtp filter and run the tests below to simulate the procedures:
cd $GOPATH/src/free5gc
chmod +x ./test.sh
a. TestRegistration
(In directory: $GOPATH/src/free5gc)
sudo ./test.sh TestRegistration
b. TestServiceRequest
sudo ./test.sh TestServiceRequest
c. TestXnHandover
sudo ./test.sh TestXnHandover
d. TestDeregistration
sudo ./test.sh TestDeregistration
e. TestPDUSessionReleaseRequest
sudo ./test.sh TestPDUSessionReleaseRequest
Appendix A: System Environment Cleaning
The below commands may be helpful for development purposes.
- Remove POSIX message queues
ls /dev/mqueue/
rm /dev/mqueue/*
- Remove gtp tunnels (using tools in libgtpnl)
cd ./src/upf/lib/libgtpnl-1.2.1/tools
./gtp-tunnel list
- Remove gtp devices (using tools in libgtpnl)
cd ./src/upf/lib/libgtpnl-1.2.1/tools
sudo ./gtp-link del {Dev-Name}
Appendix B: Program the SIM Card
Install packages:
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
Change to pyscard folder and install
cd <pyscard-path>
sudo /usr/bin/python setup.py build_ext install
Verify your reader is ready
sudo pcsc_scan
Check whether your reader can read the SIM card
cd <pysim-path>
./pySim-read.py –p 0
Program your SIM card information
./pySim-prog.py -p 0 -x 208 -y 93 -t sysmoUSIM-SJS1 -i 208930000000003 --op=8e27b6af0e692e750f32667a3b14605d -k 8baf473f2f8fd09487cccbd7097c6862 -s 8988211000000088313 -a 23605945
You can get your SIM card from sysmocom. You also need a card reader to write your SIM card. You can get a card reader from here or use other similar devices.
Release Note
v2.0.1
v2.0.2
- Add debug mode on NFs
- Auto add Linux routing when UPF runs
- Add AMF consumer for AM policy
- Add SM policy
- Allow security NIA0 and NEA0
- Add handover feature
- Add webui
- Update license
- Bugfix for incorrect DNN
- Bugfix for NFs registering to NRF