What is Free5GC project potential in 2023?

What is Free5GC project potential in 2023?




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.

Free5GC deployment visualization


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
        
UE log

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

UPF logs
SMF logs
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.



要查看或添加评论,请登录

Dmitry Sevostsyanchuk, PMP, Telecom的更多文章

社区洞察

其他会员也浏览了