1 of 9

Nephio Learning: free5gc operator

2 of 9

Nephio NF Operator

2

Master Service Orchestration (MSO)/ETE Slice

GUI Server

Controller operator (s)

API Server

Infra Control-loop controller

Metrics Service

Cloud K8s Operators

Kubernetes API

Optional CI/CD

(git)

Artifact Registry (git)

Kubernetes API

Cloud API Service

Any Cloud Infrastructure

Package Mgmt API

(Porch/ kpt)

Package Ingestion (ConfigSync)

CNF

CNF

User

Open APIs

Nephio*

High-Level User Indent �OSS and Vendor CRDs

Cluster Specific Indent�K8s Resources, CRs

NFs Specific Intent �K8s Resources, CRs

Package Ingestion (ConfigSync)

Kubernetes API

NF K8s Operators

Adapters

Adapters

3 of 9

Nephio CRDs

3

AMF-

Deployment

SMF-

Deployment

UPF-

Deployment

NF-

Deployment

Capacity

Interface-

Config

Network-

Instance

Config-

Ref

IPv4 / IPv6 / VLAN

Data-

Network

BGP

4 of 9

free5gc AMF/SMF/UPF Deployment Needs

4

  • Install multus
  • Install CNI binary (macvlan) on /opt/cni/bin on all hosts that can possibly run free5gc AMF, SMF, or UPF
  • Install gtp5g on nodes that could run UPF
  • Install sctp on nodes that could run AMF
  • Connectivity:
    • IP address allocation and reachability
  • Network Attachment Definitions for all the secondary interfaces
  • 3GPP related configs (PLMN, S-NSSAI info)
  • free5gc SMF config requires connected UPF information
  • Client (such as UERANSIM) set up with corresponding IP addresses and 3GPP info

5 of 9

What does Nephio free5gc operator do?

5

  • Reconciles {AMF,SMF,UPF}Deployment CRs
  • For all three NFs, they each have a Deployment and a ConfigMap Kubernetes object, and for AMF and SMF, they also have a Service resource
    • Determines resource needs based on capacity input
    • Builds these K8s objects with XXXDeployment CRs fields as input
  • Manages dependencies
    • Ensures that the corresponding NADs exist in namespace
    • Creates ConfigMap before applying Deployment
  • Associates objects with CR
  • Updates status for XXXDeployment
  • Ensures ConfigMap updates will lead to Deployment update

6 of 9

How the Nephio free5gc operator code is structured?

6

Nephio free5gc operator (main)

free5gc AMF controller

free5gc SMF controller

free5gc UPF controller

free5gc AMF reconciler

free5gc SMF reconciler

free5gc UPF reconciler

AMFDeployment

SMFDeployment

UPFDeployment

free5gc AMF resources (Service, Deployment)

free5gc AMF

Config Template

free5gc SMF resources (Service, Deployment)

free5gc SMF

Config Template

free5gc UPF resources (Deployment)

free5gc UPF

Config Template

AMF Service

AMF Deploy-

ment

AMF Config-

Map

SMF Service

SMF Deploy-

ment

SMF Config-

Map

UPF Deploy-

ment

UPF Config-

Map

7 of 9

free5gc vendor extension

7

  • UPFs are not registered with NRF
    • Endpoints of UPFs connected to any SMF need to be manually configured on the SMF configuration
  • free5gc SMF configuration also requires the exact path of UE routing, which includes
    • N3: the connection point for gNodeB
    • N6: DNN and UE Pools
    • N9: if I-UPF is used, the connectivity between I-UPF and anchor UPFs
  • Given that the SMF configuration includes each its connected UPF’s N4, and N3 or N9 if applicable, endpoints, as well as the UE Pool CIDR for each DNN, it basically requires most of the information already contained in the corresponding UPFDeployment
    • Created a ref.nephio.org/v1alpha1 kind: Config where a full UPFDeployment can be embedded inside

8 of 9

What aren’t covered by the Nephio free5gc operator in R1?

8

  • None of the core infrastructure needs are done by free5gc operator:
    • The kernel modules (sctp for AMF, gtp5g for UPF) are loaded to all the nodes for a cluster that is slated for particular NF’s deployment
    • Multus is loaded to ALL nodes by default
    • All CNI binaries are loaded to ALL nodes by default
  • NADs are created by modules on management cluster
    • Due to network connectivity, VLAN is needed and is configured on NAD (free5gc is not VLAN aware)
    • The current R1 NADs are set up with IP and gateway IP addresses (IPv4) at the NAD definition itself
    • CNI used for each interface is determined by infra.nephio.org in ClusterContext cniConfig, which specifies both CNI type (i.e., macvlan, ipvlan…etc) and the corresponding master interface

9 of 9

Summary: lessons learned from building a Nephio NF operator?

9

  • Know the NF well
    • Assuming the NF operator will manage NF config, identify the set of Kubernetes resources that depend on such config (for free5gc, this is of form of ConfigMap, which is required to be present before pod is launched, i.e., Deployment should be managed by the operator)
    • Understand the NF infrastructure needs. For free5gc, the klms, multus, multus binaries, NADs)
  • Understand the NF configuration (as the operator will be responsible for creating and modifying that)
    • Is NFDeployment enough for the operator to generate full NF config?
    • If not, define NF extension CRDs (input likely needs to be applied manually on management cluster), and use ConfigRef to store and extract the NF extension CRs
  • Identify inter NF dependencies (for free5gc, SMF configurations require elaborate information on its connected UPFs)