Try โ€‚โ€‰HackMD

๐Ÿ‡ฎ๐Ÿ‡ฉ 2023-UI-TEEP-Free5GC

written by :
Naufal and
Bachul

Overview Free5GC

What is Free5GC

Free5GC is a computer program that allows 5G networks to function properly. 5G networks are the latest generation of mobile networks, and they offer faster speeds, more reliable connections, and the ability to support more devices than previous generations. Free5GC is a particular implementation of the 5G core network that is designed to be flexible and modular, which means that it can be customized to meet the specific needs of different 5G networks.

Image Not Showing Possible Reasons
  • The image file may be corrupted
  • The server hosting the image is unavailable
  • The image path is incorrect
  • The image format is not supported
Learn More โ†’

For example, different 5G networks may require different levels of performance, security, or functionality, depending on factors such as the number of users, geographic coverage, or specific use cases.

The 3GPP (3rd Generation Partnership Project) is a global collaboration between telecommunications standards organizations that develop standards for mobile communication systems. The 3GPP standard defines the technical specifications for the design, operation, and maintenance of 5G networks, as well as previous generations of mobile networks, such as 4G/LTE and 3G.

Free5GC is open-source, which means that the program's code is publicly available for anyone to access, modify, and use. This is important because it allows researchers and developers to experiment with Free5GC and create new applications and services that can be used on 5G networks.

Free5GC is made up of several different components, which work together to make the network function properly. These components include the Access and Mobility Management Function (AMF), the User Plane Function (UPF), the Session Management Function (SMF), and the Network Repository Function (NRF). Each of these components plays an important role in making sure that data is transmitted correctly and efficiently on a 5G network.

Overall, Free5GC is an important tool for anyone who is interested in working with 5G networks. It allows researchers and developers to create new applications and services that can be used on 5G networks, and it provides a flexible and modular framework for building customized 5G core networks.

Importance of Free5GC on 5G Ecosystem

Free5GC acts as an important component of 5G in the ecosystem because it helps eneable the development and deployment of 5G in a more flexible and customized way.

Here are a few points that explain the importance of Free5GC in 5G ecosystem:
1. Flexibility and Customization
Free5GC allows service providers to make adaptation of the software to their own specific needs and requirements. It enables them to build 5G networks that are tailored to particular use cases. In Indonesia, one of the prime example is smart city applications.
2. Accelerates 5G Adoption
Free5GC accelerates the adoption of 5G technology by making it more accessible for providers to deploy and test 5G networks through built-in functions. It leads to faster commercialization of 5G services that benefit businesses and customers.
3. Open-source
Free5GC is an open-sourced project that allows everyone to access and continue the development of the software without license. This fact encourages collaboration and innovation among developers, service providers, and other stakeholders.
4. Standard Complience
Free5GC is designed to comply with the 3GPP 5G specifications, which are the industry standards for 5G networks. This means that free5GC can be used to test and evaluate new 5G features and services in a standardized and interoperable way.
5. Community Supporrt
Free5GC has a growing community of developers and contributors, which means that researchers can benefit from community-driven development, bug fixes, and other support resources.

Recommended Environtment

To support this research we need some environment that we can divide by 3 Object and each specification, that is :

  1. UE (User Equipment)
    User equipment, or UE, is a term used in LTE, 4G, and 5G wireless communications to describe a mobile device, such as a smartphone, tablet, laptop, or other type of wireless device that is used to access the network.
    Specification:
    1.1. Anything UE that could connect to wifi or the internet.

  2. eNodeB (enhanced Node Base Station)
    eNodeB (also called Evolved Node B or eNB) is a key component of the 4G LTE radio access network (RAN) and serves as the main communication interface between the user equipment (UE) and the core network.
    Specification:
    2.1 LTE Small Cell (Wistron NeWeb OSQ4G-01E2)

  3. Core Network
    The core network is a critical component of a mobile network, including 5G. It is responsible for providing various network functions that are necessary for the operation of the network and for delivering services to the end-users.

    The 5G core network is designed to be more flexible, scalable, and efficient than previous generations of mobile networks, and it is based on a service-based architecture (SBA) that uses web APIs to provide the various network functions.

    Core Network will be implemented in some modules like HSS, AMF, SMF, PCRF and UPF.

    Specification:
    3.1. The minimum Specification of Hardware is:

    • CPU: Intel i5 processor
    • RAM: 4GB
    • Hard drive: 160GB
    • NIC: Any 1Gbps Ethernet card supported in the Linux kernel

    3.2. Recommendation Specifications of Hardware is:

    • CPU: Intel i7 processor
    • RAM: 8GB
    • Hard drive: 1TB
    • NIC: Any 10Gbps Ethernet card supported in the Linux kernel

    3.3. The general Requirements are :

    • OS: Ubuntu 20.04.1
    • gcc 7.3.0
    • Go 1.14.4 linux/amd64
    • kernel version 5.4.0-42-generic

    This Information assumes that we will run all 5GC elements on a single machine.


System Architecture and Network Element & Function

AMF (Access and Mobility Management Function)

Authentication and Authorization
AMF is responsible for authenticating and authorizing user access to the network. This will be done by things such as verifying user identity and making access policies

Mobility and Session Management
AMF will be responsible for managing user mobility within the network such as handovers between different nodes in the network and tracking user location information. Besides that AMF will be working with SMF to manage user session and coordinate session establishment

Network Slicing
AMF will be responsible also for coordinating network slicing for different user groups or services

Security Management
The control plane will be handled by AMF. Such functions such as authentication and key management will be implemented

SMF (Session Management Function)

Session Management
SMF will be responsible for managing session for data and voice services.

Policy and charging Control
SMF will be responsible for policies and charging rules for user based on sessions bu enforcing data caps and applying QoS policies

Data Forwarding
SMF will be responsible for forwarding user data from network nodes (ie. UPF) to data plane processing

Encryption and Security
SMF will be also implementing security functions for the user plane such as encryption and integrity function

UPF (User Plane Function)

Packet Forwarding
UPF will be responsible for forwarding data packets between the RAN and CORE network. This will ensure the packets are delivered based on level of priority and reliability values of QoS parameters.

Traffic Management
UPF will be responsible for managing different types of traffic sych as streaming data, voice and video, and internet browsing. It will apply traffic shaping with policies so that all resources in the network is used efficiently.

HSS (Home Subscriber Server)

Subscriber Management
The HSS will be responsible for subscriber related information such as user credentials, making sure that the information is available for other network components

Security
HSS will also be responsible for some security aspects such as authenticating and authorizing subscriber acces to the network and also is responsible for implementing policy and charging rules for subscriber sessions.

Roaming
HSS is responsible for managing subscriber when they are outside their usual area in other words for roaming services

PCRF (Policy and Charging Function)

Policy and Charging Control
The PCRF will be responsible for implementing and managing policy and charging rules for user session and providing records related to the usage charging. Other than that the PCRF is also responsible for managing SLA (Service Level Agreement) for ensuring that the user gets according to what is stated in the SLA.

Network Slicing
The PCRF will also take part in coordinating network slicing functions which enables dedicated network slices for different user groups

More about 5G Core

CUPS Architecture

One of the first steps towards evolving from 4G to 5G core network is to apply the CUPS architecture to the 4G Evolved Packet Core (EPC). CUPS stands for Control and User Plane Separation, which means separating the user plane functionality and control plane functionality of the serving gateway (SGW) and the packet data network gateway (PGW) in 4G EPC.

The user plane functionality refers to the processing and forwarding of user data packets between the RAN and the data network. The control plane functionality refers to the signaling and management of user sessions, mobility events, policies, charging, etc. In 4G EPC, both SGW and PGW perform both user plane and control plane functions.

The CUPS architecture splits SGW and PGW into two separate entities: SGW-C (control plane) and SGW-U (user plane), PGW-C (control plane) and PGW-U (user plane). This allows more flexibility in deploying and scaling the user plane functions closer to the edge of the network, where they can reduce latency, improve user experience, and enable new services that require real-time processing. The control plane functions can be centralized or distributed depending on the operatorโ€™s preference.

The CUPS architecture also enables the virtualization of the network functions, meaning that they can be implemented as software processes that run on any commercial off-the-shelf (COTS) hardware or cloud infrastructure. This reduces the dependency on vendor-specific hardware and software solutions and allows more cost-efficiency and innovation in network deployment and operation.

The CUPS architecture is specified in release 14 of 3GPP. It is an intermediate step towards migrating from 4G EPC to 5G core network. Once CUPS is applied to 4G EPC, it becomes easier to introduce new 5G core network functions alongside existing ones.

  1. 5G Service Based Architecture
    The 5G service based architecture is a new design principle that applies IT network principles and a cloud-native approach to enable network functions to communicate with each other through a common API framework and a network repository function that enables discovery and registration of services. The service based architecture is more flexible and agile than the reference point architecture, as it allows network functions to be deployed and scaled independently and dynamically according to the network needs and demands.

    The network functions are connected to a common bus that carries the service based interfaces (SBIs) between them. The SBIs are based on RESTful API design principles, which use HTTP methods and URIs to provide a uniform interface for accessing resources and services offered by network functions. The SBIs also support two types of services: request-response services and subscription-notification services.

    Some of the key features and benefits of 5G service based architecture are:

    • Modularity: The network functions are designed as self-contained and reusable modules that can be deployed and scaled independently and dynamically according to the network needs and demands.
    • Flexibility: The network functions can communicate with each other through a common API framework that allows more flexibility in network deployment and operation. The network functions can also expose their services to external applications through the NEF (Network Exposure Function).
    • Discovery: The network functions can discover and register their services with the NRF (Network Repository Function), which acts as a directory service for the network. The NRF also provides information on the availability, location, and load of the network functions.
    • Security: The network functions can authenticate and authorize each other using certificates and tokens provided by the AUSF (Authentication Server Function). The network functions can also encrypt and protect their communications using TLS (Transport Layer Security) protocol.
    • Virtualization: The network functions are implemented as software processes that run on any commercial off-the-shelf (COTS) hardware or cloud infrastructure. This enables network virtualization, which allows multiple logical networks to share the same physical resources.
    • Slicing: The network functions can support network slicing, which allows creating multiple virtual networks on top of the same physical network. Each network slice can have its own characteristics, policies, and services tailored for different use cases and applications.
    • Edge computing: The network functions can support edge computing, which allows moving some of the processing and storage capabilities closer to the end users and devices. This reduces latency, improves user experience, and enables new services that require real-time processing and local data analysis.
  2. Category of Services in 5G
    eMBB, mMTC, and URLLC are three categories of services that can be provided by 5G networks.

    • eMBB (enhanced Mobile Broadband): This category is focused on providing high-speed, high-bandwidth services to support applications such as 4K/8K video streaming, virtual reality, and augmented reality. eMBB is designed to provide data rates of up to 20 Gbps, which is significantly faster than 4G networks.
    • mMTC (massive Machine Type Communications): This category is focused on supporting massive machine-to-machine communication for the Internet of Things (IoT) devices. This includes sensors, smart meters, and other devices that require low data rates and long battery life.
    • URLLC (Ultra-Reliable Low-Latency Communications): This category is focused on providing highly reliable, low-latency communications for mission-critical applications such as autonomous driving, industrial automation, and remote surgery. URLLC is designed to provide latencies as low as 1 ms and error rates as low as 10^-9.

    Each category has different requirements and priorities, and it is important to use the appropriate category based on the specific application or use case. Using URLLC for applications that don't require ultra-reliability or low-latency could be overkill and result in unnecessary costs, while using eMBB for mission-critical applications could lead to unacceptable delays or errors.

  3. 3GPP Release 16
    A release in 3GPP is a set of specifications that provide developers with a stable platform for the implementation of features at a given point and then allow for the addition of new functionality in subsequent releases.
    Release 16 of 3GPP is the second phase of 5G standardization that was completed in July 2020. It introduces new features and enhancements to the 5G system, such as ultra-reliable low-latency communication (URLLC), vehicle-to-everything (V2X) communication, industrial IoT, private networks, etc. It also introduces new network functions and interfaces to support non-3GPP access and interworking between different 5G networks.
    Some of the new feature of Release 16 are:

    • IMT-2020 submission: This is the formal process of submitting the 5G standard to the International Telecommunication Union (ITU) for recognition as a candidate for the IMT-2020 radio interface technology. IMT-2020 is the ITUโ€™s vision for the next generation of mobile communication systems that will provide enhanced capabilities such as higher data rates, lower latency, higher mobility, increased connectivity and better quality of service. Release 16 fulfills all the requirements and performance criteria set by the ITU for IMT-2020.
    • Multimedia Priority Service (MPS): This feature enables priority access and treatment for certain types of multimedia services over 5G networks, such as public safety communication, emergency calls, disaster relief operations, etc. MPS provides mechanisms for identifying, marking, routing and handling MPS traffic with higher priority than other traffic in the network. MPS also supports end-to-end quality of service (QoS) assurance and resource allocation for MPS users.
    • Vehicle-to-everything (V2X) application layer services: This feature defines a set of application layer services for V2X communication over 5G networks, such as cooperative awareness, basic safety message, collective perception, remote driving, etc. V2X communication enables vehicles to exchange information with other vehicles, infrastructure, pedestrians and network entities to improve road safety, traffic efficiency and user experience. V2X communication can also support autonomous driving and intelligent transportation systems.
    • 5G satellite access: This feature enables the integration of satellite networks with 5G networks to provide seamless and ubiquitous coverage for users in remote or rural areas where terrestrial networks are not available or reliable. Satellite access can also complement terrestrial networks by providing additional capacity or resilience in case of congestion or failure. Satellite access can support various use cases such as broadband access, backhaul, multicast/broadcast, IoT/MTC, etc.
    • Local Area Network support in 5G: This feature enables the support of local area network (LAN) services over 5G networks, such as Wi-Fi or Ethernet. LAN support in 5G allows users to access local resources or devices within a certain area using their 5G devices or terminals. LAN support in 5G can also enable seamless mobility and handover between different types of networks (e.g., Wi-Fi to cellular or vice versa).
    • Wireless and wireline convergence for 5G: This feature enables the convergence of wireless and wireline networks for 5G services,such as broadband access, edge computing, hybrid access, etc. Wireless and wireline convergence (WWC) provides a common control plane and user plane for both mobile and fixed subscribers, using a 5G core network and a new network function called Access Gateway Function (AGF). The AGF acts as a bridge between wireline access nodes (e.g., GPON OLTs) and the 5G core network, providing authentication, policy, QoS and traffic management functions. WWC reduces the complexity and cost of managing separate networks and enables a consistent service experience across different access technologies.
    • Terminal positioning and location: This feature enables the support of accurate and reliable positioning and location services for 5G terminals, using various methods such as GNSS, network-based or hybrid. Terminal positioning and location can support various use cases such as navigation, augmented reality, asset tracking, emergency services, etc. Release 16 enhances the positioning and location capabilities of 5G by introducing new reference signals, measurements, protocols and architectures to improve the accuracy, latency, availability and reliability of positioning information.
    • Communications in vertical domains: This feature enables the support of specific communication requirements and scenarios for different vertical domains over 5G networks, such as industrial IoT, smart grid, healthcare, automotive, etc. Communications in vertical domains can leverage the flexibility and versatility of 5G to provide customized solutions for different industries and applications. Release 16 defines new features and enhancements for communications in vertical domains such as time-sensitive networking (TSN), ultra-reliable low-latency communication (URLLC), non-public networks (NPNs), network slicing, multicast/broadcast services, etc
    • Network automation: This feature enables the automation of network operations and management for 5G networks, using artificial intelligence (AI), machine learning (ML) and data analytics. Network automation can improve the efficiency, performance and reliability of 5G networks by enabling self-configuration, self-optimization, self-healing and self-protection functions. Release 16 defines new features and enhancements for network automation such as network data analytics function (NWDAF), network exposure function (NEF), network slice management function (NSMF), etc
    • Novel radio techniques: This feature enables the exploration of novel radio techniques for 5G networks, such as massive MIMO, beamforming, full-duplex communication, non-orthogonal multiple access (NOMA), etc. Novel radio techniques can improve the spectral efficiency, capacity, coverage and quality of 5G networks by exploiting advanced signal processing and antenna technologies. Release 16 defines new features and enhancements for novel radio techniques such as integrated access and backhaul (IAB), sidelink communication (SL), dynamic spectrum sharing (DSS), etc

    Some of the new network functions of Release 16 are:

    • N3IWF: Non-3GPP Interworking Function, which is the network function that enables interworking between 5G core network and non-3GPP access networks, such as Wi-Fi or wireline. It acts as a gateway that terminates the N2 interface from the RAN and the N3 interface from the UPF and provides security, mobility, and session management for UEs accessing the 5G core network through non-3GPP access networks.
      * TNGF: Trusted Non-3GPP Gateway Function, which is the network function that enables interworking between 5G core network and trusted non-3GPP access networks, such as Wi-Fi or wireline. It acts as a gateway that terminates the N2 interface from the RAN and provides security, mobility, and session management for UEs accessing the 5G core network through trusted non-3GPP access networks. A trusted non-3GPP access network is a non-3GPP access network that belongs to the same operator as the 5G core network or has a trust relationship with it.
      * W-AGF: Wireline Access Gateway Function, which is the network function that enables interworking between 5G core network and wireline access networks, such as DSL or cable. It acts as a gateway that terminates the N2 interface from the RAN and provides security, mobility, and session management for UEs accessing the 5G core network through wireline access networks.
      • TWIF: Trusted WLAN Interworking Function, which is the network function that enables interworking between 5G core network and trusted WLAN access networks, such as Wi-Fi. It acts as a gateway that terminates the N2 interface from the RAN and provides security, mobility, and session management for UEs accessing the 5G core network through trusted WLAN access networks. A trusted WLAN access network is a WLAN access network that belongs to the same operator as the 5G core network or has a trust relationship with it.
      • SCP: Service Communication Proxy, which is the network function that enables interworking between different 5G core networks for roaming scenarios. It acts as a proxy that relays service based interface messages between different network functions in different 5G core networks. It also performs security, routing, and translation functions for interworking purposes.
      • SEPP: Security Edge Protection Proxy, which is the network function that enables interworking between different 5G core networks for roaming scenarios. It acts as a proxy that relays user data packets between different UPFs in different 5G core networks. It also performs security, routing, and translation functions for interworking purposes.
  4. Network Slicing
    Network slicing is a key feature of 5G that allows the operator to create multiple logical networks over the same physical infrastructure. Each network slice can have its own characteristics, capabilities, and resources to meet the specific requirements of a use case or a customer. For example, a network slice for eMBB can provide high bandwidth and low latency for video streaming or gaming applications, while a network slice for mMTC can provide low bandwidth and high coverage for IoT devices or smart meters.

    Each category of 5G network slicing has its own importance and use case. eMBB is important for applications that require high-speed data transmission and low latency, such as video streaming and online gaming. mMTC is important for applications that require a large number of devices to be connected, such as smart homes and industrial IoT. URLLC is important for applications that require ultra-reliable and low-latency communication, such as autonomous driving and remote surgery.

    A network slice consists of three domains: RAN, transport, and core. Each domain can be configured and optimized according to the slice requirements. For example, a RAN domain can use different radio access technologies (RATs), such as NR or LTE, or different frequency bands, such as sub-6 GHz or mmWave. A transport domain can use different transport technologies, such as Ethernet or optical fiber, or different routing protocols, such as MPLS or Segment Routing. A core domain can use different NFs or different instances of NFs to provide different control and user plane functions.

    A network slice is identified by a single network slice identifier (S-NSSAI), which consists of a slice/service type (SST) and a slice differentiation identifier (SD). The SST indicates the generic category of services that the slice supports, such as eMBB, mMTC, or URLLC. The SD indicates the specific differentiation of services within a category, such as video quality or device density. The S-NSSAI is used by the UE to request a network slice and by the network to select and assign a network slice for the UE.

    The network slicing process involves four steps: preparation, instantiation, selection, and operation :
    4.1. Preparation: The operator defines the network slice templates (NSTs) that specify the characteristics, capabilities, and resources of each network slice. The operator also defines the network slice instances (NSIs) that instantiate the NSTs on the physical infrastructure. The operator also registers the NSIs and their services in the NRF for discovery.
    4.2. Instantiation: The operator activates the NSIs on demand or in advance according to the service demand or customer agreement. The operator also configures and optimizes the RAN, transport, and core domains for each NSI. The operator also monitors and manages the NSIs using the MANO framework.
    4.3. Selection: The UE requests a network slice by sending its S-NSSAI to the network. The network selects an appropriate NSI for the UE based on its S-NSSAI, subscription, location, and availability. The network also assigns an AMF and an SMF for the UE to handle its access and session management in the selected NSI.
    4.4. Operation: The UE establishes a PDU session with the selected NSI by communicating with its assigned AMF and SMF. The UE also establishes QoS flows with different QoS parameters within the PDU session according to its service needs. The UE can access the services and applications provided by the selected NSI through its UPF and data network.

  1. Additional Information
    The source code of the latest version free5GC can be downloaded from here.

    The source code of free5GC stage 2 (ARM version) can be downloaded from here.

    The source code of free5GC stage 1 can be downloaded from here.

    Features history can be found here.

Installing VMBox and Ubuntu

To run the fee5GC that we will be using, we need several tools to be installed on our device. Specifically, we need the Virtual Machine Box software application and the Linux Ubuntu Operating System to run the server that we will use for free5GC.

Install VMBox

  1. We can download the VMBox application from the following link :
    https://virtualbox.org/
    Then, an image similar to the following will appear :

  2. After that, select the Downloads sidebar and there will be a display as follows :

  3. Choose the default Operating System that we use to download VM Box. If it has been installed, then the VMBox display will look like this :

Install Ubuntu

In addition, we need to download the Ubuntu version ubuntu-20.04.1-live-server-amd64.iso from the following link:
https://old-releases.ubuntu.com/releases/20.04.1/

  1. Choose the specified version of Ubuntu to use the correct kernel, which is ubuntu-20.04.1-live-server-amd64.iso :

  2. Then, go back to VMBox and select the "New" menu to create a new OS with the Linux OS option and select the Ubuntu 64-bit version.

  3. Set the amount of RAM to be allocated, with a recommendation of 2 to 4 GB.

  4. Continue the installation by clicking the "Continue" button until it finishes (assuming default settings).

  5. Once it's finished, select the "Settings" menu and then select the "System" submenu to change the number of processors used to 2. Then, go to the "Storage" submenu and add a new IDE, and select the Ubuntu file we downloaded earlier, which is ubuntu-20.04.1-live-server-amd64.iso. Next, select the "Network" submenu, choose "Network 2", and enable the network adapter with the "Host-only Adapter" option.

After completing all of the above steps, the installation and configuration between the Virtual Machine and the OS used should be correct. Next, we will configure the settings in VMBox that we have created.

Configuring OS Ubuntu

To configure this OS, we need to run the OS that we created by clicking on the OS and then the "Run" button in the VMBox menu. Please note that the OS we are using is a live server, so there is no GUI when using the OS.

  1. Once it's running, the program will run an automatic configuration and prompt you to select a language.
    Choose the preffered language (In this case, We'll go with english)

  2. Next, the program will recommend that you update your OS version. However, choose to continue without updating, as we will be using the appropriate version so that the kernel we will use is correct. Continue the configuration by selecting the "Done" option or continue until you see the following image :





  3. Enable the disk that we will use according to the image by pressing the "Enter" button and continue the configuration:




    No partitions will be used so we'll use the entire hard disk.

  4. Next, set up our user profile according to our needs and preferences. Do not forget the password that you write down as it will be used later on. Select the "Reboot" menu and the program will automatically reboot our VM.


  5. The program will automatically reboot and wait until it is finished. After finishing the reboot, login using the username and password that we have created before:

  6. To install ifconfig using the terminal prompt, follow these steps:

ubuntu@ubuntu:~$ sudo apt install net-tools

  1. Run the ifconfig prompt to check the network interface:
ubuntu@ubuntu:~$ ifconfig

Your display may be different, but note the IP address of the Host-only interface. In the example above, it shows 192.168.56.101. You can SSH from the host machine into this virtual Ubuntu machine using that IP address later. (The other IP address, 10.0.2.15, is the IP address of the NAT interface, which applications on your host machine cannot access).

Configuration to connect VM with SSH.

  1. Choose the IP address that you obtained in your laptop's configuration. Type the following prompt:

    โ€‹โ€‹โ€‹โ€‹ssh ip_address -I ubuntu
    

    The command "ssh ip_address -I ubuntu" is used to remotely log in to a host identified by its IP address (ip_address) using the Secure Shell (SSH) protocol. The option "-I ubuntu" specifies the user identity used when logging into the target host. In this case, the user identity used is "ubuntu".

  2. Please provide the prompts you are referring to as they seem to be missing in the message :

    โ€‹โ€‹โ€‹โ€‹sudo apt update
    โ€‹โ€‹โ€‹โ€‹sudo apt upgrade
    

    Both of these commands are used on Ubuntu operating systems or other Linux distributions to update and upgrade the installed packages on the system.

    The sudo apt update command is used to update the package list from the repositories or package sources available on the system. After running this command, it will check if there are any changes or updates to the package list, so the package list on the system will be updated.

    Meanwhile, the sudo apt upgrade command is used to upgrade or update the installed packages on the system. After running this command, it will check the version of the packages available in the repository with the version of the packages installed on the system. If there is a newer version in the repository, then the package version on the system will be upgraded or updated to the newer version.

    By running these two commands regularly, the system will always have updated and latest packages, which can improve the performance and security of the system.

  3. After configuring these settings, the Ubuntu interface will look like the following:

Free5GC Installation

This section is written by Daniel and Joshevan

This installation is done on Ubuntu 20.04 VM

Install Prequisites

  1. Install Go 1.17.8
    For x86 Architecture:

    โ€‹โ€‹โ€‹โ€‹wget https://dl.google.com/go/go1.17.8.linux-amd64.tar.gz
    โ€‹โ€‹โ€‹โ€‹sudo tar -C /usr/local -zxvf go1.17.8.linux-amd64.tar.gz
    โ€‹โ€‹โ€‹โ€‹mkdir -p ~/go/{bin,pkg,src}
    

    For macOS with ARM-based Chip :

    โ€‹โ€‹โ€‹โ€‹wget https://dl.google.com/go/go1.17.8.darwin-amd64.tar.gz
    โ€‹โ€‹โ€‹โ€‹sudo tar -C /usr/local -zxvf go1.17.8.go1.17.8.darwin-amd64.tar.gz
    โ€‹โ€‹โ€‹โ€‹mkdir -p ~/go/{bin,pkg,src}
    


    These commands are used to install the Go programming language version 1.17.8 on a Linux system.

    • First command uses wget (a command-line utility for downloading files from the web) to download the Go language archive file in .tar.gz format.
    • Second command extracts the contents of the Go archive file to the /usr/local directory on the Linux system.
    • Then, It attempts to create a directory structure in the home directory of the current user for storing Go packages and projects.
  2. Configure Environment for go by modifying bashrc file

    โ€‹โ€‹โ€‹โ€‹sudo nano ~/.bashrc
    โ€‹โ€‹โ€‹โ€‹export GOPATH=$HOME/go
    โ€‹โ€‹โ€‹โ€‹export GOROOT=/usr/local/go
    โ€‹โ€‹โ€‹โ€‹export PATH=$PATH:$GOPATH/bin:$GOROOT/bin
    โ€‹โ€‹โ€‹โ€‹export GO111MODULE=auto
    โ€‹โ€‹โ€‹โ€‹source ~/.bashrc
    



    These commands are used to configure the Go programming language environment variables on a Linux system.

    • First command opens the user's bash configuration file, .bashrc, in the Nano text editor.
    • Second command sets the GOPATH environment variable to the go directory in the user's home directory.
    • The GOROOT environment variable is used by Go to locate its binary files and resources.
    • 'source ~/.bashrc' This command reloads the user's bash configuration file, so that the changes made in the previous steps take effect.
  3. Install mongodb
    For x86 Architecture:

    โ€‹โ€‹โ€‹โ€‹sudo apt -y update
    โ€‹โ€‹โ€‹โ€‹sudo apt -y install mongodb wget git
    โ€‹โ€‹โ€‹โ€‹sudo systemctl start mongodb
    

    For System with ARM-based Chip:

    โ€‹โ€‹โ€‹โ€‹sudo apt -y update
    โ€‹โ€‹โ€‹โ€‹sudo apt -y install wget git
    โ€‹โ€‹โ€‹โ€‹wget https://fastdl.mongodb.org/linux/mongodb-linux-aarch64-ubuntu2004-4.4.19.tgz
    โ€‹โ€‹โ€‹โ€‹tar -zxvf mongodb-linux-aarch64-ubuntu2004-4.4.19.tgz
    

    These commands are used to update the system package repository, install MongoDB, Git, and Wget, and start the MongoDB service.

    • First command updates the system package repository with the latest version of available packages.
    • Second command installs MongoDB, Git, and Wget on the Linux system.
    • Third command starts the MongoDB service on the Linux system using the systemctl command. The start subcommand is used to start the service. Once started, MongoDB will be available for use on the system.
  4. Install Control-Plane and User-Plane Supporting Packages

    โ€‹โ€‹โ€‹โ€‹sudo apt -y update
    โ€‹โ€‹โ€‹โ€‹sudo apt -y install git gcc g++ cmake autoconf libtool pkg-config libmnl-dev libyaml-dev
    

    These commands are used to update the system package repository and install several development tools and libraries on a Linux system.

    • First command update system package repository
    • Second command installs several development tools and libraries like git, gcc, g++, cmake, autoconf, libtool, etc
  5. Configuration for Linux Host Network

    โ€‹โ€‹โ€‹โ€‹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
    

    Replace <dn_interface> with the host interface. We can check the host interface information by typing ifconfig on terminal.

    These commands are used to configure network settings on a Linux system for routing and forwarding of network traffic.

    • First command sets the net.ipv4.ip_forward kernel parameter to 1, which enables IP forwarding on the Linux system. IP forwarding allows packets to be forwarded between network interfaces on the system.
    • Second command configures NAT (Network Address Translation) on the Linux system. It sets up a rule in the nat table of the iptables firewall to masquerade outgoing packets from the specified interface (<dn_interface>) with the IP address of that interface. This allows packets to be sent to the internet and return to the correct interface.
    • Third command sets a rule in the iptables firewall to limit the maximum segment size (MSS) for TCP connections. It limits the MSS to 1400 bytes for packets that are part of a TCP connection. This helps to avoid issues with packet fragmentation.
    • Last command stops the ufw (Uncomplicated Firewall) service on the Linux system. This is necessary because ufw may interfere with the iptables firewall rules that were just set up. By stopping ufw, the iptables rules will be the only firewall rules in effect.

Install Control Plane Elements

  1. Clone Free5GC Respository

    โ€‹โ€‹โ€‹โ€‹    cd ~
    โ€‹โ€‹โ€‹โ€‹    git clone --recursive -b v3.2.1 -j `nproc` https://github.com/free5gc/free5gc.git
    โ€‹โ€‹โ€‹โ€‹    cd free5gc
    

    The given commands are used to clone and navigate to the free5gc repository on a Linux system.

  2. Compile Network Functions in Free5GC

    โ€‹โ€‹โ€‹โ€‹    cd ~/free5gc
    โ€‹โ€‹โ€‹โ€‹    make
    

    This command invokes the make tool to build the free5gc project.

    The Makefile in the root of the project directory specifies the build process, which may involve compiling source code, linking object files, and producing executable files.

    Once the build process is complete, the resulting executables can be found in the relevant directories under ~/free5gc.

Install User Plane Functions (UPF)

  1. Retrieve the 5G GTP-U kernel module using git and build it
    โ€‹โ€‹โ€‹โ€‹git clone -b v0.6.8 https://github.com/free5gc/gtp5g.git
    โ€‹โ€‹โ€‹โ€‹cd gtp5g
    โ€‹โ€‹โ€‹โ€‹make
    โ€‹โ€‹โ€‹โ€‹sudo make install
    


    The given commands are used to download and install the gtp5g library on a Linux system.

    • First command clones the gtp5g repository from GitHub onto the Linux system. The -b flag is used to specify the branch (v0.6.8) to be checked out.
    • Second command navigates to the gtp5g directory that was just cloned. This directory contains the source code for the gtp5g library.
    • 'make' command invokes the make tool to build the gtp5g library.
    • Last command installs the gtp5g library system-wide, making it available for other programs to use. The make install command typically copies the library file to a standard location such as /usr/local/lib, and may also copy header files to a standard location such as /usr/local/include.

Install Web Console

  1. Install Node.js and Yarn

    โ€‹โ€‹โ€‹โ€‹sudo apt remove cmdtest
    โ€‹โ€‹โ€‹โ€‹sudo apt remove yarn
    โ€‹โ€‹โ€‹โ€‹curl -sS https://dl.yarnpkg.com/debian/pubkey.gpg | sudo apt-key add -
    โ€‹โ€‹โ€‹โ€‹echo "deb https://dl.yarnpkg.com/debian/ stable main" | sudo tee /etc/apt/sources.list.d/yarn.list
    โ€‹โ€‹โ€‹โ€‹curl -sL https://deb.nodesource.com/setup_12.x | sudo -E bash -
    โ€‹โ€‹โ€‹โ€‹sudo apt-get update
    โ€‹โ€‹โ€‹โ€‹sudo apt-get install -y nodejs yarn
    




    The given commands are used to install Node.js and Yarn

    The given commands are used to install Node.js and Yarn on a Linux system. First, the cmdtest package is removed from the system, which can conflict with Node.js installations. Next, the yarn package is removed, if it is already installed. Then, the GPG public key for the Yarn repository is downloaded and added to the system's keyring, followed by adding the Yarn repository to the system's list of software sources. The Node.js repository is also added to the system's list of software sources by downloading a script from the NodeSource repository and running it with elevated privileges. After updating the package list on the system to include the newly added repositories, both Node.js and Yarn are installed on the system using the package manager. The -y flag is used to automatically confirm any prompts during installation. Once completed, Node.js and Yarn should be successfully installed on the Linux system.

  2. Build Web Console

    โ€‹โ€‹โ€‹โ€‹cd ~/free5gc
    โ€‹โ€‹โ€‹โ€‹make webconsole
    

    The command 'cd ~/free5gc' changes the current directory to the free5gc directory in the user's home directory. The next command make webconsole builds the web console module of the free5gc project.

    The web console is a user interface that allows users to interact with the 5G Core Network's management plane. It enables the user to view and modify network configurations and monitor network status. The make webconsole command runs the build process for the web console module using the Makefile in the project's root directory.

    This command may take some time to complete depending on the system's resources and the size of the project. Once the build process is complete, the web console module should be successfully built and ready to use.

  1. Web Console run

    โ€‹โ€‹โ€‹โ€‹go run server.go
    

    The command go run server.go runs a Go program called server.go.

  2. Web Console interface


Free5GC Testing

This section is written by Daniel and Joshevan

TestRegistration

using this code:

./test.sh TestRegistration

TestRegistration is used to register a user to the 5G Core Network by sending a registration request to the Authentication and Authorization Server (AUSF) and the Home Subscriber Server (HSS). The function handles the registration process by verifying the user's identity and authentication information, generating and storing session keys, and providing the necessary information to the other network functions for further communication.

TestGUTIRegistration

using this command:

./test.sh TestGUTIRegistration

TestGUTIRegistration is used to register a user using their GUTI. It sends a registration request to the MME, which verifies the GUTI and performs the necessary authentication and authorization procedures with the AUSF and HSS. Once the registration is complete, the MME assigns a permanent identity to the user, known as the Subscriber Permanent Identifier (SUPI), which is used for subsequent communication with the user.

TestServiceRequest

using this command:

./test.sh TestServiceRequest

TestServiceRequest is a test function that allows simulation of service requests from users in the 5G Core Network. It generates a service request message and sends it to the SEAF (Service Authorization Function) to check user authorization and network conditions. If authorized, the SEAF sends a response message to TestServiceRequest, which proceeds with setting up the necessary resources for the requested service.

TestXnHandover

using this command:

./test.sh TestXnHandover

Xn handover is a procedure used for transferring the data session of a user from the source base station (gNB) to the target base station (gNB) during handover. TestXnHandover simulates this process by initiating the handover procedure and exchanging messages between the source gNB, target gNB, and other network functions involved in the handover process.

TestDeregistration

using this command:

./test.sh TestDeregistration

TestDeregistration is a test function that enables the simulation of user deregistration by generating a deregistration request message and sending it to the AMF. It facilitates the termination of the user's connection with the network and releases the resources allocated to the user by communicating with other network functions.

TestPDUSessionReleaseRequest

using this command:

./test.sh TestPDUSessionReleaseRequest

TestPDUSessionReleaseRequest is a test function that attempts to simulate PDU session released by generating a release request message and sending it to the SMF. It facilitates the termination of the PDU session and releases the resources allocated to the session by communicating with other network functions.

TestPaging

using this command:

./test.sh TestPaging

TestPaging is a test function simulates the paging procedure by initiating the paging request, exchanging messages between the network functions involved in the process, and setting up the necessary resources for the requested service.

TestN2Handover

using this command:

./test.sh TestN2Handover

TestN2Handover is a test function that simulates the N2 handover procedure by exchanging messages between the source gNB, target gNB, and other network functions involved in the handover process. It facilitates the transfer of the control plane and user plane connections from the source gNB to the target gNB, while maintaining the session and routing information for the user.

TestNon3GPP

using this command:

./test.sh TestNon3GPP

TestNon3GPP is a function in the 5G Core Network that simulates the Non-3GPP Access procedure by initiating the registration process, exchanging messages between the network functions involved in the process, and setting up the necessary resources for the requested service.

TestReSynchronization

using this command:

./test.sh TestReSynchronization

TestReSynchronization is a test function that simulates the Re-Synchronization procedure by initiating the procedure, exchanging messages between the network functions involved in the process, and verifying that synchronization has been re-established between the network functions after a temporary loss of synchronization.

TestULCL

using this command:

./test_ulcl.sh TestRequestTwoPDUSessions

TestULCL is a test function that simulates the ULI Consolidation List (ULCL) procedure by initiating the consolidation of ULI from multiple sources into a single list, verifying that the consolidation is successful, and returning a response based on the result of the consolidation.

Installing UERANSIM - a UE/RAN Simulator

To install and testing the UERANSIM, we need to clone our previous VM

VM for UERANSIM

  1. Clone the VM UERANSIM FROM PREVIOUS VM
  2. Try to login using SSH
  3. Change the hostname to ueransim

    hostnamectl set-hostname ueransim

  4. Set Static IP Address
  5. Reboot the VM Ware

    sudo reboot

  6. Try to ping to another VM free5gc
    6.1 ip address VM free5gc
    Image Not Showing Possible Reasons
    • The image file may be corrupted
    • The server hosting the image is unavailable
    • The image path is incorrect
    • The image format is not supported
    Learn More โ†’

    6.2 Ping from VM UERANSIM
    Image Not Showing Possible Reasons
    • The image file may be corrupted
    • The server hosting the image is unavailable
    • The image path is incorrect
    • The image format is not supported
    Learn More โ†’

Install UERANSIM

Clone the code of installation UERANSIM from this github

  1. Using this command to install and clone the resource
cd ~
git clone https://github.com/aligungr/UERANSIM
cd UERANSIM
git checkout v3.1.0

Image Not Showing Possible Reasons
  • The image file may be corrupted
  • The server hosting the image is unavailable
  • The image path is incorrect
  • The image format is not supported
Learn More โ†’

  1. Update and Upgrade VM
    Using this command :
sudo apt update
sudo apt upgrade

Image Not Showing Possible Reasons
  • The image file may be corrupted
  • The server hosting the image is unavailable
  • The image path is incorrect
  • The image format is not supported
Learn More โ†’

  1. Install required tools:
    using this command :
sudo apt install make
sudo apt install g++
sudo apt install libsctp-dev lksctp-tools
sudo apt install iproute2
sudo snap install cmake --classic

Image Not Showing Possible Reasons
  • The image file may be corrupted
  • The server hosting the image is unavailable
  • The image path is incorrect
  • The image format is not supported
Learn More โ†’

  1. Build UERANSIM
    Using this command :
cd ~/UERANSIM
make

Image Not Showing Possible Reasons
  • The image file may be corrupted
  • The server hosting the image is unavailable
  • The image path is incorrect
  • The image format is not supported
Learn More โ†’

Image Not Showing Possible Reasons
  • The image file may be corrupted
  • The server hosting the image is unavailable
  • The image path is incorrect
  • The image format is not supported
Learn More โ†’

Install free5gc webconsole

To build WebConsole we need Node.js and Yarn.

  1. SSH to main VM
    Remove obsolete tools that may exists
sudo apt remove cmdtest
sudo apt remove yarn

Image Not Showing Possible Reasons
  • The image file may be corrupted
  • The server hosting the image is unavailable
  • The image path is incorrect
  • The image format is not supported
Learn More โ†’

  1. Install Node.js and Yarn
curl -sS https://dl.yarnpkg.com/debian/pubkey.gpg | sudo apt-key add -
echo "deb https://dl.yarnpkg.com/debian/ stable main" | sudo tee /etc/apt/sources.list.d/yarn.list
sudo apt-get update
sudo apt-get install -y nodejs yarn

Image Not Showing Possible Reasons
  • The image file may be corrupted
  • The server hosting the image is unavailable
  • The image path is incorrect
  • The image format is not supported
Learn More โ†’

  1. Build WebConsole
cd ~/free5gc
make webconsole

Use WebConsole to Add an UE

  1. Start up the webconsole server
cd ~/free5gc/webconsole
go run server.go

Image Not Showing Possible Reasons
  • The image file may be corrupted
  • The server hosting the image is unavailable
  • The image path is incorrect
  • The image format is not supported
Learn More โ†’

The port number will be used at 5000. Try to access them using your web browser :
http://yourmainvmip:5000
For me it is :
http://172.20.10.6:5000

  1. Dashboard Login Page
    In the login page, you can input the username of admin and the password is free5gc.
    Image Not Showing Possible Reasons
    • The image file may be corrupted
    • The server hosting the image is unavailable
    • The image path is incorrect
    • The image format is not supported
    Learn More โ†’

You will see the dashboard once you have login like this :

Image Not Showing Possible Reasons
  • The image file may be corrupted
  • The server hosting the image is unavailable
  • The image path is incorrect
  • The image format is not supported
Learn More โ†’

Choose Subscribers and create a new data:

  • Note that other than the โ€œOperator Code Typeโ€ field which you should choose โ€œOPโ€ for now, leave other fields unchanged. This registration data is used for ease of testing and actual use later.
    Image Not Showing Possible Reasons
    • The image file may be corrupted
    • The server hosting the image is unavailable
    • The image path is incorrect
    • The image format is not supported
    Learn More โ†’

    Image Not Showing Possible Reasons
    • The image file may be corrupted
    • The server hosting the image is unavailable
    • The image path is incorrect
    • The image format is not supported
    Learn More โ†’

After the data is created successfully, you can press Ctrl-C on the terminal to quit WebConsole

Image Not Showing Possible Reasons
  • The image file may be corrupted
  • The server hosting the image is unavailable
  • The image path is incorrect
  • The image format is not supported
Learn More โ†’

Cloud Computing

Written by Bachul

What is Cloud Computing


Cloud computing is an abstraction of a computer that integrates an internet network to enable the application and use of resources without having to possess complex infrastructure or software systems in that environment. The use of cloud computing includes data storage, data processing, and applications.

In cloud computing, computing resources are provided by a cloud service provider and can be accessed by users via the internet. Users only need to pay for the resources they use, making the use of computing resources more efficient and cost-effective.

Cloud computing is like renting computer resources (storage, processing power, and applications) over the internet from a provider, instead of buying and managing them yourself. It saves you money and makes using technology more efficient.

Types of Services in Cloud Computing

There are 4 types of services in cloud computing, namely On-Premise, SaaS, PaaS, and IaaS. Each service has a different purpose and implementation, and we need to determine which service is suitable for us based on cost and environment. Here's a brief explanation:

  1. On-Premise: This type of service requires us to fully manage and prepare everything from networking, storage, servers, to applications, and we need a physical server and a dedicated room for it.
  2. Infrastructure as a Service (IaaS): Most of the infrastructure is managed by the provider, and we only need to manage around 60% of it, such as the operating system, middleware, and applications. We don't need to worry about the size, server, or hardware characteristics.
  3. Platform as a Service (PaaS): This is where we can deploy a program or application we have created without having to install the operating system or middleware.
  4. Software as a Service (SaaS): This is the simplest and easiest service for users, where we can operate the software available and enjoy the results of the application, such as Gmail, Google Docs, and others.

Example application that using cloud computing:

Choosing the right type of cloud computing service depends on factors such as the level of control and customization required, the type of application being developed, and the resources and budget available.

Deployment Model of Cloud Computing


Deployment model refers to the way in which cloud computing services are deployed and provided to users. There are four main deployment models: public cloud, private cloud, community cloud, and hybrid cloud.

  1. Public Cloud: A public cloud is a deployment model where the cloud services are offered over a public network and can be used by anyone who subscribes to the service. The infrastructure is owned and operated by a third-party cloud provider, and users can access services on a pay-per-use basis.
  2. Private Cloud: A private cloud is a deployment model where the cloud services are offered to a single organization or entity. The infrastructure can be owned and operated by the organization itself or by a third-party provider. Private clouds are typically used by organizations that require high levels of security and control over their data.
  3. Community Cloud: A community cloud is a deployment model where the cloud services are shared by several organizations with similar requirements, such as security or compliance. The infrastructure can be owned and operated by one or more of the organizations in the community or by a third-party provider.
  4. Hybrid Cloud: A hybrid cloud is a deployment model that combines two or more of the above deployment models. For example, an organization may use a private cloud for its sensitive data and a public cloud for its less sensitive data. The different clouds are integrated through standardized or proprietary technology to ensure data and application portability.

Different deployment models offer different levels of control and security, so it's important to choose one that fits your specific needs and requirements. When choosing a deployment model, consider factors such as cost, scalability, security, compliance requirements, and the level of control you need over your resources.

For the free5gc project, we will use the Amazon Web Services (AWS) platform as a tool for cloud computing.

What is Amazon Web Server

Written by Fateen

Amazon Web Services (AWS) is a cloud computing platform that provides a wide range of services to help individuals and organizations build and deploy their applications and services in the cloud. AWS is one of the largest cloud providers in the world, offering a variety of services, including computing, storage, databases, networking, analytics, machine learning, security, and more.


AWS allows users to select the specific services they need, and pay only for what they use, without needing to invest in physical hardware or infrastructure. This makes it a cost-effective solution for businesses of all sizes. Some of the most popular AWS services include Amazon Elastic Compute Cloud (EC2), Amazon Simple Storage Service (S3), Amazon Relational Database Service (RDS), Amazon Lambda, and Amazon Elastic Beanstalk.

Services Used by Free5GC in Amazon Web Services

  1. Computing:
    • Amazon Elastic Compute Cloud (EC2): A web service that provides scalable compute capacity in the cloud, allowing users to run applications on virtual machines.
  2. Networking and Content Delivery:
    • Amazon Virtual Private Cloud (VPC): A virtual network that allows you to launch AWS resources into a virtual network that you define.

Installing Free5GC in Amazon Web Services

This part is done by
Fateen,
Naufal and Natthan

  1. Make EC2 Instance in AWS

  2. Create AWS account.

  3. We want to create a VM. So, launch instances

  4. Setup the name and choose the OS

  5. Choose the instance type that matches Free5GC specification and cheap

    Also create the key pair for connecting the VM using SSH. We need to allow SSH from anywhere just to make it easy for us (it is not the best practice as far as i know)

  6. Launch instance!

  7. The instance will be automatically started

  8. Click connect

  9. Connect with SSH client. I'm using Windows Powershell here.

  10. However, if we follow the command directly, it will show that the .pem key has bad permission. This is because we only want the private key to be read only.

  11. In Ubuntu, we should do this to our private key (.pem file)

    โ€‹โ€‹โ€‹โ€‹chmod 400 free5gc-1.pem
    

    This command will change the permissions of the file to read and write only for the owner, and no permissions for anyone else.
    However, I'm using Windows. So, we need to disable the inheritance permission for the private key file and add full control over my username like this.

  12. Connect using ssh with private key

    โ€‹โ€‹โ€‹โ€‹ssh -i "free5gc-1.pem" ubuntu@ec2-18-141-209-116.ap-southeast-1.compute.amazonaws.com
    

  13. Checking Golang Version

    โ€‹โ€‹โ€‹โ€‹Go Version
    

  14. Installing control-plane Supporting Packages

    โ€‹โ€‹โ€‹โ€‹sudo apt -y update
    โ€‹โ€‹โ€‹โ€‹sudo apt -y install mongodb wget git
    โ€‹โ€‹โ€‹โ€‹sudo systemctl start mongodb
    

  15. Installing user-plane Supporting Packages

    โ€‹โ€‹โ€‹โ€‹sudo apt -y update
    

    โ€‹โ€‹โ€‹โ€‹sudo apt -y install git gcc g++ cmake autoconf libtool pkg-config libmnl-dev libyaml-dev
    

  16. Linux Host Network Settings

    โ€‹โ€‹โ€‹โ€‹sudo sysctl -w net.ipv4.ip_forward=1
    

    โ€‹โ€‹โ€‹โ€‹sudo iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
    

    โ€‹โ€‹โ€‹โ€‹sudo iptables -A FORWARD -p tcp -m tcp --tcp-flags SYN,RST SYN -j TCPMSS --set-mss 1400
    โ€‹โ€‹โ€‹โ€‹sudo systemctl stop ufw
    โ€‹โ€‹โ€‹โ€‹sudo sysctl -w net.ipv4.ip_forward=1
    

  17. Installing Control Plan Elements

    โ€‹โ€‹โ€‹โ€‹cd ~
    โ€‹โ€‹โ€‹โ€‹git clone --recursive -b v3.2.1 -j `nproc`         https://github.com/free5gc/free5gc.git
    โ€‹โ€‹โ€‹โ€‹cd free5gc
    

    โ€‹โ€‹โ€‹โ€‹cd ~/free5gc
    โ€‹โ€‹โ€‹โ€‹make
    

  18. Installing User Plane Function (UPF)

    โ€‹โ€‹โ€‹โ€‹git clone -b v0.6.8 https://github.com/free5gc/gtp5g.git
    โ€‹โ€‹โ€‹โ€‹cd gtp5g
    โ€‹โ€‹โ€‹โ€‹make
    โ€‹โ€‹โ€‹โ€‹sudo make install
    

  19. Installing WebConsole

    โ€‹โ€‹โ€‹โ€‹sudo apt remove cmdtest
    โ€‹โ€‹โ€‹โ€‹sudo apt remove yarn
    โ€‹โ€‹โ€‹โ€‹curl -sS https://dl.yarnpkg.com/debian/pubkey.gpg | sudo apt-key add -
    โ€‹โ€‹โ€‹โ€‹echo "deb https://dl.yarnpkg.com/debian/ stable main" | sudo tee /etc/apt/sources.list.d/yarn.list
    โ€‹โ€‹โ€‹โ€‹curl -sL https://deb.nodesource.com/setup_12.x | sudo -E bash -
    โ€‹โ€‹โ€‹โ€‹sudo apt-get update
    โ€‹โ€‹โ€‹โ€‹sudo apt-get install -y nodejs yarn
    

Testing the Free5GC in AWS

  1. Prequisite

    โ€‹โ€‹โ€‹โ€‹cd ~/free5gc
    โ€‹โ€‹โ€‹โ€‹make upf
    โ€‹โ€‹โ€‹โ€‹chmod +x ./test.sh
    

  2. Testing for Registration

    Registration testing is used to send request to Access and Mobility and Management Function AMF to register the number so user can access the core network.

    โ€‹โ€‹โ€‹โ€‹./test.sh TestRegistration
    

  3. Testing for GUTI Registration

    GUTI stands for Globally Unique Temporary Identifier. GUTI is provided by AMF. It used by sistem to increase privacy because each UE is asigned to GUTI.

    โ€‹โ€‹โ€‹โ€‹./test.sh TestGUTIRegistration
    

  4. Testing for service request

    service request is activating user plan to have a PDU session. This request is made with UEs and AMF

    โ€‹โ€‹โ€‹โ€‹./test.sh TestServiceRequest
    

  5. Testing for Xn Handover

    Xn Handover is a process to hand over the UEs from one gNB to other gNB closest to the UEs. this test determining where this hand over works or not.

    โ€‹โ€‹โ€‹โ€‹./test.sh TestXnHandover
    

  6. Testing for deregistration

    Testing deregistration in Free5GC involves verifying the ability of the system to handle the request from the User Equipment (UE) or the network to unregister or remove the UE from the network.

    โ€‹โ€‹โ€‹โ€‹./test.sh TestDeregistration
    

  7. Testing for PDU Session Release Request

    Testing PDU (Packet Data Unit) Session Release Request in Free5GC involves verifying the ability of the system to release a user's PDU session and free up network resources when the session is no longer needed.

    โ€‹โ€‹โ€‹โ€‹./test.sh TestPDUSessionReleaseRequest
    

  8. Testing for paging

    Testing Paging in Free5GC involves verifying the ability of the system to locate and notify a user of an incoming call or message.

    โ€‹โ€‹โ€‹โ€‹./test.sh TestPaging
    

  9. Testing for N2 Handover

    Testing N2 Handover in Free5GC involves verifying the ability of the system to handover a user's session from one Access and Mobility Management Function (AMF) to another AMF, while maintaining the continuity of the session.

    โ€‹โ€‹โ€‹โ€‹./test.sh TestN2Handover
    

  10. Testing for Non 3GPP

    Testing Non-3GPP (Third Generation Partnership Project) access in Free5GC involves verifying the ability of the system to support communication with devices that are not based on the 3GPP standards.

    โ€‹โ€‹โ€‹โ€‹./test.sh TestNon3GPP
    


    error after terminating the Unified Data Management

  11. Testing for resynchronization

    Testing resynchronization in Free5GC involves verifying the ability of the system to recover from failures or disruptions and resynchronize the state of the network elements.

    โ€‹โ€‹โ€‹โ€‹./test.sh TestReSynchronization
    

  12. Testing for requesting two PDU sessions

    This testing is done to make sure that multiple PDU sessions is supported in the 5G Network. In an actual 5G network, a PDU session represent point to point connection between the UE and the PDN (Packet Data Network). In this case it is testing if the UE will be able to establish multiple PDU sessions.

    โ€‹โ€‹โ€‹โ€‹./test_ulcl.sh TestRequestTwoPDUSessions
    

Running Free5GC and WebConsole

  1. Running WebConsole

    โ€‹โ€‹โ€‹โ€‹cd ~/free5gc
    โ€‹โ€‹โ€‹โ€‹make webconsole
    

    โ€‹โ€‹โ€‹โ€‹http://52.221.237.5:5000
    

  2. Running Free5GC

    โ€‹โ€‹โ€‹โ€‹cd ~/free5gc
    โ€‹โ€‹โ€‹โ€‹./run.sh
    

Notes on Development of ORAN Strategy MNO-A Architecture Facing Merger MNO C+D Using Tactical Benchmarking in Java

Seminar Notes

The current MNO-A now have reach the limit of its performance in terms of frequency capacity. While facing the challenge, MNO C+D merger is outrunning the MNO-A performance. On this issue, the paper have the solution to resolve this by implementing ORAN strategy in the MNO-A Architecture. By implementing ORAN, MNO-A can simplify infrastructure development strategies, including the plan of deploying 2000 sites with 323.3 MHz frequency bandwidth and service coverage operation of 26.89%. In term of cost, the investment could reduce Capex (Capital Expenses) by 36.7% and Opex (Operational Expenses) by 17.36% with business value of IRR more than 100% and BCR (Benefit Cost Ration) that exceeds 6.18 or 37% more than traditional architecture.