What is Free5GC project potential in 2023?
Dmitry Sevostsyanchuk, PMP, Telecom
Project Director– ZTE Corporation
I reviewed several articles to assess the level of maturity of Free5GC. In the engineering realm, we don't solely rely on descriptions. Testing is the cornerstone of our work.
I decided to deploy both Free5GC and UERANSIM on my laptop and to check everything from the first hand. For the sake the simplicity I limited myself by only one VM.
Enviroment: Ubuntu 22.04.3 Server VM (2CPU and 8G RAM) on VirtualBox 7.0.10. 5GC is connected to RAN via GTP and SCTP , gtp5g and sctp driver have been installed and activated.
NOTE: Using UE , Core Network control plane and user plane on the same VM usually causes problems. In case of real simulation is required at least 3 different VMs
Docker Compose is the most appropriate tool for deploying and running multi-container Docker applications in the test ?environment.
Initial setting review
There are available two Free5GC Docker compose deployment options either?to build necessary?NEs images locally or to use pre-built ?images?from ?Docker Hub. ?I have analyzed both docker compose files and corresponding Dockerfiles. I have found that local images building does not get any benefits in my lab case. For example, there are no security concern or CI/CD pipeline.
Free5GC adheres to the cloud-native principle, employing stateless applications and ensuring a clear separation between logic and configuration. The configuration files are executed upon container startup, a process consistent across both options.
This is code snippet for AMF deployment:
free5gc-amf:
container_name: amf
image: free5gc/amf:v3.3.0
command: ./amf -c ./config/amfcfg.yaml
expose:
- "8000"
volumes:
- ./config/amfcfg.yaml:/free5gc/config/amfcfg.yaml
environment:
GIN_MODE: release
networks:
privnet:
aliases:
- amf.free5gc.org
depends_on:
- free5gc-nrf
networks:
privnet:
ipam:
driver: default
config:
- subnet: 10.100.200.0/24
driver_opts:
com.docker.network.bridge.name: br-free5gc
volumes:
dbdata:
Analyzing config files I have faced first Free5GC potential limitation factor.
The limited flexibility of configuration files
I understand that is "apples and oranges" comparison, but xGW(SGW/PGW) in EPC has config file with 7K lines and UPF and SMF default configs have only 200 in total.
The configuration files are mostly about defining integration logic between NEs. The ability to customize the NEW behavior is limited by a small services number. For example: UPF does not have the DPI functionality, SMF does not have the PCC rules, charging function is almost not exist.
There are some examples:
#AMF
serviceNameList: # the SBI services provided by this AMF, refer to TS 29.518
- namf-comm # Namf_Communication service
- namf-evts # Namf_EventExposure service
- namf-mt # Namf_MT service
- namf-loc # Namf_Location service
- namf-oam # OAM service
#SMF
serviceNameList: # the SBI services provided by this SMF, refer to TS 29.502
- nsmf-pdusession # Nsmf_PDUSession service
- nsmf-event-exposure # Nsmf_EventExposure service
- nsmf-oam # OAM service
#AUSF
serviceNameList: # the SBI services provided by this AUSF, refer to TS 29.509
- nausf-auth # Nausf_UEAuthentication service
#PCF
serviceList: # the SBI services provided by this PCF, refer to TS 29.507
- serviceName: npcf-am-policy-control # Npcf_AMPolicyControl service
- serviceName: npcf-smpolicycontrol # Npcf_SMPolicyControl service
suppFeat: 3fff # the features supported by Npcf_SMPolicyControl,
- serviceName: npcf-bdtpolicycontrol # Npcf_BDTPolicyControl service
- serviceName: npcf-policyauthorization # Npcf_PolicyAuthorization
suppFeat: 3 # the features supported by Npcf_PolicyAuthorization
- serviceName: npcf-eventexposure # Npcf_EventExposure service
- serviceName: npcf-ue-policy-control # Npcf_UEPolicyControl service
Deployment
# Clone the project
git clone https://github.com/free5gc/free5gc-compose.git
cd free5gc-compose
root@master:/home/dima/free5gc-compose# ls
docker-compose.yaml nf_ausf nf_pcf
base gtp5g nf_chf nf_smf README.md config LICENSE.txt nf_n3iwf nf_udm script docker-compose-build.yaml Makefile nf_nrf nf_udr ueransim nf_amf nf_nssf nf_upf webui
root@master:/home/dima/free5gc-compose# docker-compose up
[+] Running 13/0
? Container upf Created
? Container mongodb Created
? Container nrf Created
? Container amf Created
? Container ueransim Created
? Container webui Created
? Container ausf Created
? Container nssf Created
? Container smf Created
? Container n3iwf Created
? Container pcf Created
? Container udm Created
? Container udr Created
root@master:/home/dima/free5gc-compose# docker-compose ls
NAME STATUS CONFIG FILES
free5gc-compose running(13) ~/free5gc-compose/docker-compose.yaml
Let's visualized the the deployed 5G network.
I have used the "docker-compose-viz” The Docker compose visualization allows to clear see the networking and the Logic and Configuration Separation concept that is the basis for flexible architecture deployment.
If you connect to any container you will find the same content.
This is the example of AMF container:
root@master:/home/dima/free5gc-compose# docker exec -it 14be53160779 sh
/free5gc # ls -l
total 21596
-rwxr-xr-x 1 root root 22100820 Jun 8 16:36 amf
drwxr-xr-x 1 root root 4096 Jun 8 16:45 cert
drwxr-xr-x 3 root root 4096 Oct 2 11:41 config
drwxr-xr-x 2 root root 4096 Jun 8 16:45 log
/free5gc # cd config/
/free5gc/config # ls
TLS amfcfg.yaml
领英推荐
The first call
I have connected to Free5GC Web UI via localhost:5000 (Container webui )to add New Subscriber with msi-208930000000001.
The Web UI functionality is extremely?simple. You are able to just add the new subscribers with basic QoS and S-NSSAI. There are no traditional for telco options like topology management, performance management, logs management etc.
The first step is UE initialization and the second is verification that traffic goes via UPF (upf.free5gc-compose_privnet,10.100.200.3) and logs validation on some NEs.
#Connect to ueransim container
root@master:~/free5gc-compose# docker exec -it 91c66debc41f sh
# ./nr-gnb -c ./config/gnbcfg.yaml
# ./nr-ue -c ./config/uecfg.yaml
# exit
#Get the logs
root@master:~/free5gc-compose# docker-compose logs
You can see the NGAP signaling connection establishment between gNB and AMF.
# UE is repreasented as interface uesimtun1(inet 10.60.0.3/32)
# traceroute -i uesimtun1 google.com
traceroute to google.com (142.250.78.174), 30 hops max, 60 byte packets
1 upf.free5gc-compose_privnet (10.100.200.3) 2.041 ms 4.233 ms 4.222 ms
2 master (10.100.200.1) 4.201 ms 4.138 ms 4.111 ms
........
There are UPF, SMP and AMF logs
The system works
The most major drawback is lack of O&M functionality
If you want to deploy the Free5GC production environment you should consider the Free5GC instrumentation by other monitoring system like Prometheus and Grafana for example. The traditional Linux networking troubleshooting tools like tcpdump help also.
Conclusion
Free5GC project is all about learning. It extremely useful as entry point to 5GC professional domain. I know from first hands how the initial onboarding process is painful for the new engineers. They usually begin from reading the documentation and assistance to senior engineers in simple tasks. They miss the whole picture on system functioning and get the initial fragmented experience.
Free5GC really?helps here because it allows to play with different architectures deployment and signaling?validation on different steps and interfaces. I think that 2 weeks of experimentation is enough to lay the first experience foundation.
It will be useful to deploy something like?this to play with network slicing?concept.
More technical details can be found here: free5gc
The possible imaginable Free5GC implementation is private 5G network market. There are many competitors on this market. For example ZTE has ZXUN i5GC and it is just from the different league.
Unfortunately, Free5GC had very low development activity in recent months
I don't see the Free5GC disruptive potential like O-RAN Alliance or Openstack and Kubernetes. Free5GC is just emulation tool.