Giter Club home page Giter Club logo

free5gc_docker_compose's Introduction

Desarrollo de un entorno integrado para arquitecturas 5G

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:


Requisitos

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

Instalación

Componentes básicos

  1. Verificar la versión del kernel de linux

    uname -r
    5.0.0-23-generic
    
  2. 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
      
  3. 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
    
    
  4. 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:

  5. Si desea continuar la intalacion para utilizarlo de manera local puede consultar el enlace free5gc installation

GTP5G kernel module

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

Docker

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

Inicialización

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

Solución de problemas comunes

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)

Visualización de datos

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 dependencias y puertos

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

Referencias

Anexos

Consola web

img

URL: http://localhost:5000
Username: admin
Password: free5gc

free5gc_docker_compose's People

Contributors

ema11412 avatar

Stargazers

 avatar  avatar

Watchers

 avatar  avatar  avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.