En el presente repositorio se ve una configuración de red básica utilizando la herramienta free5GC la cual permite crear una red centralizada 5G definida en 3GPP (R15) esto usando contenedores docker compose.
Todos los créditos a los desarrolladores de la herramienta.
Tabla de contenidos:
Puede ver los requisitos recomendados en la documentación oficial requisitos recomendados free5gc
-
Software utilizado
- OS: GNU Linux Ubuntu 18.04.3
- gcc 7.3.04
- Golang 1.14.4 linux/amd64
- kernel 5.0.0-23-generic
-
Hardware utilizado
- CPU: AMD Ryzen 7 2700X
- RAM: 16GB
- HDD: 180GB
-
Verificar la versión del kernel de linux
uname -r 5.0.0-23-generic
-
Instalación de Golang
- Verificamos la versión de
Go
go version
- Removemos si tenemos versiones distintas he instalamos
Go 1.14.4
# this assumes your current version of Go is in the default location sudo rm -rf /usr/local/go wget https://dl.google.com/go/go1.14.4.linux-amd64.tar.gz sudo tar -C /usr/local -zxvf go1.14.4.linux-amd64.tar.gz
- Para instalar esta version desde cero
wget https://dl.google.com/go/go1.14.4.linux-amd64.tar.gz sudo tar -C /usr/local -zxvf go1.14.4.linux-amd64.tar.gz mkdir -p ~/go/{bin,pkg,src} # The following assume that your shell is bash 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=auto' >> ~/.bashrc source ~/.bashrc
- Verificamos la versión de
-
Soporte para el usuario
sudo apt -y update sudo apt -y install git gcc g++ cmake autoconf libtool pkg-config libmnl-dev libyaml-dev go get -u github.com/sirupsen/logrus
-
Soporte de red
sudo sysctl -w net.ipv4.ip_forward=1 sudo iptables -t nat -A POSTROUTING -o <dn_interface> -j MASQUERADE sudo iptables -A FORWARD -p tcp -m tcp --tcp-flags SYN,RST SYN -j TCPMSS --set-mss 1400 sudo systemctl stop ufw
Nota: para saber el
<dn_interface>
consultar el siguiente enlace: -
Si desea continuar la intalacion para utilizarlo de manera local puede consultar el enlace free5gc installation
El host debe utilizar el kernel 5.0.0-23-generic
. Y debería contener el módulo del kernel gtp5g
.
git clone https://github.com/PrinzOwO/gtp5g.git
cd gtp5g
make
sudo make install
La instalación básica de docker puede verse en el siguiente enlace:
Para instalar docker compose puede seguir la siguiente guia:
Como dato para las pruebas se utilizaron las siguientes versiones
sudo apt-get install docker-ce=5:18.09.0~3-0~ubuntu-bionic docker-ce-cli=5:18.09.0~3-0~ubuntu-bionic containerd.io
Para este caso como es necesario una interfaz de túnel es necesario instanciar los contenedores con privilegios de administrador.
$ git clone https://github.com/free5gc/free5gc-compose.git
$ cd free5gc-compose
$ make base
$ docker-compose build
$ sudo docker-compose up # Recommend use with tmux to run in foreground mode
$ sudo docker-compose up -d # Run in background mode if needed
En casos es necesario realizar tomas de datos almacenados mediante mongodb
$ docker exec -it mongodb mongo
> use free5gc
> db.subscribers.drop()
> exit # (Or Ctrl-D)
Podemos ver los logs de cada imagen con docker logs
. Por ejemplo para ver los datos del SMF podemos hacerlo de la siguiente manera:
docker logs smf
NF | Exposed Ports | Dependencies | Dependencies URI |
---|---|---|---|
amf | 8000 | nrf | nrfUri: https://nrf:8000 |
ausf | 8000 | nrf | nrfUri: https://nrf:8000 |
nrf | 8000 | db | MongoDBUrl: mongodb://db:27017 |
nssf | 8000 | nrf | nrfUri: https://nrf:8000/, nrfId: https://nrf:8000/nnrf-nfm/v1/nf-instances |
pcf | 8000 | nrf | nrfUri: https://nrf:8000 |
smf | 8000 | nrf, upf | nrfUri: https://nrf:8000, node_id: upf1, node_id: upf2, node_id: upf3 |
udm | 8000 | nrf | nrfUri: https://nrf:8000 |
udr | 8000 | nrf, db | nrfUri: https://nrf:8000, url: mongodb://db:27017 |
n3iwf | N/A | amf, smf, upf | |
upf1 | N/A | pfcp, gtpu, apn | pfcp: upf1, gtpu: upf1, apn: internet |
upf2 | N/A | pfcp, gtpu, apn | pfcp: upf2, gtpu: upf2, apn: internet |
upfb (ulcl) | N/A | pfcp, gtpu, apn | pfcp: upfb, gtpu: upfb, apn: intranet |
webui | 5000 | db | MongoDBUrl: mongodb://db:27017 |
- https://github.com/open5gs/nextepc/tree/master/docker
- https://github.com/abousselmi/docker-free5gc
- https://github.com/free5gc/free5gc-compose/
- https://github.com/LABORA-INF-UFG/NetSoft2020-Tutorial4
- https://arxiv.org/abs/2006.10409
URL: http://localhost:5000
Username: admin
Password: free5gc