Home

Awesome

Simple Measurement of UPF Performance 4

This describes simple performance measurements of several open source UPFs by using PacketRusher as the performance measurement tool. For this measurement, VMs in the measurement environment was changed from Virtualbox used in previous measurement to Proxmox VE. For other measurement results, please see Performance Measurement. PacketRusher is also featured on HPE Developer Blog.

Note. Performance measurement results are highly dependent on the measurement conditions. These results are only examples of results under certain measurement conditions. And this is a very simple measurement, and according to this comment, it doesn't seem to make much sense to measure between VMs. I hope it will serve as a reference for a simple configuration when measuring on real devices.


Sample Configurations and Miscellaneous for Mobile Network


<a id="toc"></a>

Table of Contents


<a id="overview"></a>

Simple Overview of UPF Performance Measurements

Using Open5GS for 5GC, I will easily measure the performance of several open source UPFs with PacketRusher. Note that this configuration is implemented with Proxmox VE VMs.

The following minimum configuration was set as a condition.

The built simulation environment is as follows.

<img src="./images/network-overview.png" title="./images/network-overview.png" width=1000px></img>

The 5GC / RAN&UE used are as follows.

The UPFs used are as follows.

Each VMs are as follows.

VMSW & RoleIP addressOSCPUMemHDD
VM1Open5GS 5GC C-Plane192.168.0.111/24Ubuntu 24.0412GB20GB
VM-UPeach UPF U-Plane192.168.0.151/24Ubuntu 24.04<br>or 22.0428GB20GB
VM-DNData Network Gateway192.168.0.152/24Ubuntu 24.0422GB10GB
VM2PacketRusher RAN&UE192.168.0.131/24Ubuntu 24.0422GB10GB

Each VM-UP(UPFs) are as follows.

#SWDateCommitOS
aOpen5GS UPF v2.7.22024.10.11606788361cb2255961f856de17d71c6b2fc86847Ubuntu 24.04
bUPG-VPP v1.13.02024.03.25dfdf64000566d35955d7c180720ff66086bd3572Ubuntu 22.04
ceUPF v0.6.42024.05.010f704deaca67766733a447f4680cf4d77e638934Ubuntu 24.04
dfree5GC UPF<br>(go-upf) v1.2.32024.10.116b73d126b8b29b4d17ff744c31ef50634ee64164Ubuntu 24.04

The network interfaces of each VM except VM-UP are as follows.

VMDeviceModelLinux BridgeIP addressInterface
VM1ens18VirtIOvmbr110.0.0.111/24(NAPT NW)
ens19VirtIOmgbr0192.168.0.111/24(Mgmt NW)
ens20VirtIOvmbr4192.168.14.111/24N4
VM-DNens18VirtIOvmbr110.0.0.152/24(NAPT NW)
ens19VirtIOmgbr0192.168.0.152/24(Mgmt NW)
ens20VirtIOvmbr6192.168.16.152/24N6 (default GW for VM-UP)
VM2ens18VirtIOvmbr110.0.0.131/24(NAPT NW)
ens19VirtIOmgbr0192.168.0.131/24(Mgmt NW)
ens20VirtIOvmbr3192.168.13.131/24N3

The network interfaces of each VM-UP(UPFs) are as follows. Note that UPFs from a to c connect to Open5GS CN, but d free5GC UPF does not support FTUP flag in PFCP Association Setup Request/Respose, so it connects to free5GC CN.

#SWDeviceModelLinux BridgeIP addressInterface
aOpen5GS UPFens18VirtIOvmbr110.0.0.151/24(NAPT NW) down
ens19VirtIOmgbr0192.168.0.151/24(Mgmt NW)
ens20VirtIOvmbr3192.168.13.151/24N3
ens21VirtIOvmbr4192.168.14.151/24N4
ens22VirtIOvmbr6192.168.16.151/24N6
bUPG-VPPens18VirtIOvmbr110.0.0.151/24(NAPT NW)
ens19VirtIOmgbr0192.168.0.151/24(Mgmt NW)
ens20VirtIOvmbr3192.168.13.151/24N3 (Under DPDK by vfio-pci)
ens21VirtIOvmbr4192.168.14.151/24N4 (Under DPDK by vfio-pci)
ens22VirtIOvmbr6192.168.16.151/24N6 (Under DPDK by vfio-pci)
ceUPFens18VirtIOvmbr110.0.0.151/24(NAPT NW) down
ens19VirtIOmgbr0192.168.0.151/24(Mgmt NW)
ens20VirtIOvmbr3192.168.13.151/24N3 (XDP)
ens21VirtIOvmbr4192.168.14.151/24N4
ens22VirtIOvmbr6192.168.16.151/24N6 (XDP)
dfree5GC UPF<br>(go-upf)ens18VirtIOvmbr110.0.0.151/24(NAPT NW) down
ens19VirtIOmgbr0192.168.0.151/24(Mgmt NW)
ens20VirtIOvmbr3192.168.13.151/24N3
ens21VirtIOvmbr4192.168.14.151/24N4
ens22VirtIOvmbr6192.168.16.151/24N6

Linux Bridges of Proxmox VE are as follows.

Linux BridgeNetwork CIDRInterface
vmbr110.0.0.0/24NAPT NW
mgbr0192.168.0.0/24Mgmt NW
vmbr3192.168.13.0/24N3
vmbr4192.168.14.0/24N4
vmbr6192.168.16.0/24N6

The main subscriber Information is as follows. Please register the subscriber information on each WebConsole of Open5GS and free5GC.

IMSIDNNDNKey & OPcS-NSSAI
001010000001000internet10.45.0.0/16Key:465B5CE8B199B49FAA5F0A2EE238A6BC<br>OPc:E8ED289DEBA952E4283B54E88E6183CASST:1<br>SD:010203

<a id="changes"></a>

Changes in configuration files of Open5GS, free5GC, UPFs and PacketRusher

Please refer to the following for building Open5GS, free5GC, UPFs and PacketRusher respectively.

<a id="changes_cp_open5gs"></a>

Changes in configuration files of Open5GS 5GC C-Plane

--- amf.yaml.orig       2024-05-11 22:43:06.000000000 +0900
+++ amf.yaml    2024-05-31 19:06:09.171978977 +0900
@@ -20,29 +20,32 @@
         - uri: http://127.0.0.200:7777
   ngap:
     server:
-      - address: 127.0.0.5
+      - address: 192.168.0.111
   metrics:
     server:
       - address: 127.0.0.5
         port: 9090
   guami:
     - plmn_id:
-        mcc: 999
-        mnc: 70
+        mcc: 001
+        mnc: 01
       amf_id:
         region: 2
         set: 1
   tai:
     - plmn_id:
-        mcc: 999
-        mnc: 70
+        mcc: 001
+        mnc: 01
       tac: 1
   plmn_support:
     - plmn_id:
-        mcc: 999
-        mnc: 70
+        mcc: 001
+        mnc: 01
       s_nssai:
         - sst: 1
+          sd: 1
+        - sst: 1
+          sd: 010203
   security:
     integrity_order : [ NIA2, NIA1, NIA0 ]
     ciphering_order : [ NEA0, NEA1, NEA2 ]
--- nrf.yaml.orig       2024-05-11 22:43:06.000000000 +0900
+++ nrf.yaml    2024-05-12 03:26:28.737595527 +0900
@@ -11,8 +11,8 @@
 nrf:
   serving:  # 5G roaming requires PLMN in NRF
     - plmn_id:
-        mcc: 999
-        mnc: 70
+        mcc: 001
+        mnc: 01
   sbi:
     server:
       - address: 127.0.0.10
--- smf.yaml.orig       2024-06-01 00:21:43.876916232 +0900
+++ smf.yaml    2024-05-12 03:30:16.250185155 +0900
@@ -20,16 +20,13 @@
         - uri: http://127.0.0.200:7777
   pfcp:
     server:
-      - address: 127.0.0.4
+      - address: 192.168.14.111
     client:
       upf:
-        - address: 127.0.0.7
-  gtpc:
-    server:
-      - address: 127.0.0.4
+        - address: 192.168.14.151
   gtpu:
     server:
-      - address: 127.0.0.4
+      - address: 192.168.14.111
   metrics:
     server:
       - address: 127.0.0.4
@@ -37,20 +34,17 @@
   session:
     - subnet: 10.45.0.0/16
       gateway: 10.45.0.1
-    - subnet: 2001:db8:cafe::/48
-      gateway: 2001:db8:cafe::1
+      dnn: internet
   dns:
     - 8.8.8.8
     - 8.8.4.4
-    - 2001:4860:4860::8888
-    - 2001:4860:4860::8844
   mtu: 1400
 #  p-cscf:
 #    - 127.0.0.1
 #    - ::1
 #  ctf:
 #    enabled: auto   # auto(default)|yes|no
-  freeDiameter: /root/open5gs/install/etc/freeDiameter/smf.conf
+#  freeDiameter: /root/open5gs/install/etc/freeDiameter/smf.conf
 
 ################################################################################
 # SMF Info

<a id="changes_cp_free5gc"></a>

Changes in configuration files of free5GC 5GC C-Plane

--- amfcfg.yaml.orig    2024-10-14 05:09:24.379203731 +0900
+++ amfcfg.yaml 2024-10-14 05:59:21.011914287 +0900
@@ -5,7 +5,7 @@
 configuration:
   amfName: AMF # the name of this AMF
   ngapIpList:  # the IP list of N2 interfaces on this AMF
-    - 127.0.0.18
+    - 192.168.0.111
   ngapPort: 38412 # the SCTP port listened by NGAP
 
   # Service-based Interface (SBI) Configuration
@@ -30,22 +30,22 @@
   servedGuamiList:
     # <GUAMI> = <MCC><MNC><AMF ID>
     - plmnId: # Public Land Mobile Network ID, <PLMN ID> = <MCC><MNC>
-        mcc: 208 # Mobile Country Code (3 digits string, digit: 0~9)
-        mnc: 93 # Mobile Network Code (2 or 3 digits string, digit: 0~9)
+        mcc: 001 # Mobile Country Code (3 digits string, digit: 0~9)
+        mnc: 01 # Mobile Network Code (2 or 3 digits string, digit: 0~9)
       amfId: cafe00 # AMF identifier (3 bytes hex string, range: 000000~FFFFFF)
 
   # the TAI (Tracking Area Identifier) list supported by this AMF
   supportTaiList:
     - plmnId: # Public Land Mobile Network ID, <PLMN ID> = <MCC><MNC>
-        mcc: 208 # Mobile Country Code (3 digits string, digit: 0~9)
-        mnc: 93 # Mobile Network Code (2 or 3 digits string, digit: 0~9)
+        mcc: 001 # Mobile Country Code (3 digits string, digit: 0~9)
+        mnc: 01 # Mobile Network Code (2 or 3 digits string, digit: 0~9)
       tac: 000001 # Tracking Area Code (3 bytes hex string, range: 000000~FFFFFF)
 
   # the PLMNs (Public land mobile network) list supported by this AMF
   plmnSupportList:
     - plmnId: # Public Land Mobile Network ID, <PLMN ID> = <MCC><MNC>
-        mcc: 208 # Mobile Country Code (3 digits string, digit: 0~9)
-        mnc: 93 # Mobile Network Code (2 or 3 digits string, digit: 0~9)
+        mcc: 001 # Mobile Country Code (3 digits string, digit: 0~9)
+        mnc: 01 # Mobile Network Code (2 or 3 digits string, digit: 0~9)
       snssaiList: # the S-NSSAI (Single Network Slice Selection Assistance Information) list supported by this AMF
         - sst: 1 # Slice/Service Type (uinteger, range: 0~255)
           sd: 010203 # Slice Differentiator (3 bytes hex string, range: 000000~FFFFFF)
--- ausfcfg.yaml.orig   2024-09-01 09:47:28.519041774 +0900
+++ ausfcfg.yaml        2024-09-01 09:55:53.372615743 +0900
@@ -16,10 +16,8 @@
   nrfUri: http://127.0.0.10:8000 # a valid URI of NRF
   nrfCertPem: cert/nrf.pem # NRF Certificate
   plmnSupportList: # the PLMNs (Public Land Mobile Network) list supported by this AUSF
-    - mcc: 208 # Mobile Country Code (3 digits string, digit: 0~9)
-      mnc: 93  # Mobile Network Code (2 or 3 digits string, digit: 0~9)
-    - mcc: 123 # Mobile Country Code (3 digits string, digit: 0~9)
-      mnc: 45  # Mobile Network Code (2 or 3 digits string, digit: 0~9)
+    - mcc: 001 # Mobile Country Code (3 digits string, digit: 0~9)
+      mnc: 01  # Mobile Network Code (2 or 3 digits string, digit: 0~9)
   groupId: ausfGroup001 # ID for the group of the AUSF
   eapAkaSupiImsiPrefix: false # including "imsi-" prefix or not when using the SUPI to do EAP-AKA' authentication
 
--- nrfcfg.yaml.orig    2024-09-01 09:47:28.520041774 +0900
+++ nrfcfg.yaml 2024-09-01 09:56:09.974381863 +0900
@@ -18,8 +18,8 @@
       key: cert/root.key
     oauth: true
   DefaultPlmnId:
-    mcc: 208 # Mobile Country Code (3 digits string, digit: 0~9)
-    mnc: 93 # Mobile Network Code (2 or 3 digits string, digit: 0~9)
+    mcc: 001 # Mobile Country Code (3 digits string, digit: 0~9)
+    mnc: 01 # Mobile Network Code (2 or 3 digits string, digit: 0~9)
   serviceNameList: # the SBI services provided by this NRF, refer to TS 29.510
     - nnrf-nfm # Nnrf_NFManagement service
     - nnrf-disc # Nnrf_NFDiscovery service
--- nssfcfg.yaml.orig   2024-09-01 09:47:28.521041774 +0900
+++ nssfcfg.yaml        2024-09-01 09:56:46.775178233 +0900
@@ -18,12 +18,12 @@
   nrfUri: http://127.0.0.10:8000 # a valid URI of NRF
   nrfCertPem: cert/nrf.pem # NRF Certificate
   supportedPlmnList: # the PLMNs (Public land mobile network) list supported by this NSSF
-    - mcc: 208 # Mobile Country Code (3 digits string, digit: 0~9)
-      mnc: 93 # Mobile Network Code (2 or 3 digits string, digit: 0~9)
+    - mcc: 001 # Mobile Country Code (3 digits string, digit: 0~9)
+      mnc: 01 # Mobile Network Code (2 or 3 digits string, digit: 0~9)
   supportedNssaiInPlmnList: # Supported S-NSSAI List for each PLMN
     - plmnId: # Public Land Mobile Network ID, <PLMN ID> = <MCC><MNC>
-        mcc: 208 # Mobile Country Code (3 digits string, digit: 0~9)
-        mnc: 93 # Mobile Network Code (2 or 3 digits string, digit: 0~9)
+        mcc: 001 # Mobile Country Code (3 digits string, digit: 0~9)
+        mnc: 01 # Mobile Network Code (2 or 3 digits string, digit: 0~9)
       supportedSnssaiList: # Supported S-NSSAIs of the PLMN
         - sst: 1 # Slice/Service Type (uinteger, range: 0~255)
           sd: 010203 # Slice Differentiator (3 bytes hex string, range: 000000~FFFFFF)
--- smfcfg.yaml.orig    2024-10-14 05:09:24.379203731 +0900
+++ smfcfg.yaml 2024-10-14 06:03:45.294139455 +0900
@@ -42,16 +42,16 @@
 
   # Optional: PLMN IDs configuration.
   plmnList:
-    - mcc: 208 # Mobile Country Code (3 digits string, digit: 0~9)
-      mnc: 93 # Mobile Network Code (2 or 3 digits string, digit: 0~9)
+    - mcc: 001 # Mobile Country Code (3 digits string, digit: 0~9)
+      mnc: 01 # Mobile Network Code (2 or 3 digits string, digit: 0~9)
   locality: area1 # Name of the location where a set of AMF, SMF, PCF and UPFs are located
 
   # PFCP (Packet Forwarding Control Protocol) configuration for N4 interface.
   pfcp:
     # addr config is deprecated in smf config v1.0.3, please use the following config
-    nodeID: 127.0.0.1 # the Node ID of this SMF
-    listenAddr: 127.0.0.1 # the IP/FQDN of N4 interface on this SMF (PFCP)
-    externalAddr: 127.0.0.1 # the IP/FQDN of N4 interface on this SMF (PFCP)
+    nodeID: 192.168.14.111 # the Node ID of this SMF
+    listenAddr: 192.168.14.111 # the IP/FQDN of N4 interface on this SMF (PFCP)
+    externalAddr: 192.168.14.111 # the IP/FQDN of N4 interface on this SMF (PFCP)
     assocFailAlertInterval: 10s
     assocFailRetryInterval: 30s
     heartbeatInterval: 10s
@@ -63,8 +63,8 @@
         type: AN # the type of the node (AN or UPF)
       UPF: # the name of the node
         type: UPF # the type of the node (AN or UPF)
-        nodeID: 127.0.0.8 # the Node ID of this UPF
-        addr: 127.0.0.8 # the IP/FQDN of N4 interface on this UPF (PFCP)
+        nodeID: 192.168.14.151 # the Node ID of this UPF
+        addr: 192.168.14.151 # the IP/FQDN of N4 interface on this UPF (PFCP)
         sNssaiUpfInfos: # S-NSSAI information list for this UPF
           - sNssai: # S-NSSAI (Single Network Slice Selection Assistance Information)
               sst: 1 # Slice/Service Type (uinteger, range: 0~255)
@@ -72,9 +72,9 @@
             dnnUpfInfoList: # DNN information list for this S-NSSAI
               - dnn: internet
                 pools:
-                  - cidr: 10.60.0.0/16
+                  - cidr: 10.45.0.0/16
                 staticPools:
-                  - cidr: 10.60.100.0/24
+                  - cidr: 10.45.100.0/24
           - sNssai: # S-NSSAI (Single Network Slice Selection Assistance Information)
               sst: 1 # Slice/Service Type (uinteger, range: 0~255)
               sd: 112233 # Slice Differentiator (3 bytes hex string, range: 000000~FFFFFF)
@@ -91,7 +91,7 @@
         interfaces: # Interface list for this UPF
           - interfaceType: N3 # the type of the interface (N3 or N9)
             endpoints: # the IP address of this N3/N9 interface on this UPF
-              - 127.0.0.8
+              - 192.168.13.151
             networkInstances: # Data Network Name (DNN)
               - internet
 
@@ -99,7 +99,8 @@
     links:
       - A: gNB1
         B: UPF
-
+  ulcl: false
+  nwInstFqdnEncoding: true
   # retransmission timer for PDU session modification command
   t3591:
     enable: true # true or false

<a id="changes_up"></a>

Changes in configuration files of UPFs

<a id="changes_up_a1"></a>

a-1. Changes in configuration files of Open5GS 5GC UPF (TUN)

--- upf.yaml.orig       2024-05-02 19:52:00.000000000 +0900
+++ upf.yaml        2024-05-19 12:38:00.000000000 +0900
@@ -11,18 +11,18 @@
 upf:
   pfcp:
     server:
-      - address: 127.0.0.7
+      - address: 192.168.14.151
     client:
 #      smf:     #  UPF PFCP Client try to associate SMF PFCP Server
 #        - address: 127.0.0.4
   gtpu:
     server:
-      - address: 127.0.0.7
+      - address: 192.168.13.151
   session:
     - subnet: 10.45.0.0/16
       gateway: 10.45.0.1
-    - subnet: 2001:db8:cafe::/48
-      gateway: 2001:db8:cafe::1
+      dnn: internet
+      dev: ogstun
   metrics:
     server:
       - address: 127.0.0.7

<a id="changes_up_a2"></a>

a-2. Changes in configuration files of Open5GS 5GC UPF (TAP)

--- upf.yaml.orig       2024-05-02 19:52:00.000000000 +0900
+++ upf.yaml        2024-09-23 14:00:20.724467385 +0900
@@ -11,18 +11,18 @@
 upf:
   pfcp:
     server:
-      - address: 127.0.0.7
+      - address: 192.168.14.151
     client:
 #      smf:     #  UPF PFCP Client try to associate SMF PFCP Server
 #        - address: 127.0.0.4
   gtpu:
     server:
-      - address: 127.0.0.7
+      - address: 192.168.13.151
   session:
     - subnet: 10.45.0.0/16
       gateway: 10.45.0.1
-    - subnet: 2001:db8:cafe::/48
-      gateway: 2001:db8:cafe::1
+      dnn: internet
+      dev: ogstap
   metrics:
     server:
       - address: 127.0.0.7

<a id="changes_up_b"></a>

b. Changes in configuration files of UPG-VPP

See here for the original files.

<a id="changes_up_c"></a>

c. Changes in configuration files of eUPF

See here for the original file.

<a id="changes_up_d"></a>

d. Changes in configuration files of free5GC 5GC UPF

--- upfcfg.yaml.orig    2024-10-14 04:53:12.341028732 +0900
+++ upfcfg.yaml 2024-10-14 06:11:36.636303534 +0900
@@ -4,8 +4,8 @@
 # PFCP Configuration
 # The listen IP and nodeID of the N4 interface on this UPF (Can't set to 0.0.0.0)
 pfcp:
-  addr: 127.0.0.8   # IP addr for listening
-  nodeID: 127.0.0.8 # External IP or FQDN can be reached
+  addr: 192.168.14.151   # IP addr for listening
+  nodeID: 192.168.14.151 # External IP or FQDN can be reached
   retransTimeout: 1s # retransmission timeout
   maxRetrans: 3 # the max number of retransmission
 
@@ -18,7 +18,7 @@
   # If you bind to a specific IP, ensure SMF uses the same IP in its N3 configuration.
   # If you bind to all (0.0.0.0), SMF can use any of the available UPF IPs, but do not use 0.0.0.0 in SMF.
   ifList:
-    - addr: 127.0.0.8
+    - addr: 192.168.13.151
       type: N3
       # name: upf.5gc.nctu.me
       # ifname: gtpif
@@ -28,9 +28,7 @@
 # List of Data Network Names (DNN) supported by this UPF.
 dnnList:
   - dnn: internet # Data Network Name
-    cidr: 10.60.0.0/16 # Classless Inter-Domain Routing for assigned IPv4 pool of UE
-  - dnn: internet # Data Network Name
-    cidr: 10.61.0.0/16 # Classless Inter-Domain Routing for assigned IPv4 pool of UE
+    cidr: 10.45.0.0/16 # Classless Inter-Domain Routing for assigned IPv4 pool of UE
     # natifname: eth0
 
 # Logging Configuration

<a id="changes_pr"></a>

Changes in configuration files of PacketRusher

--- config.yml.orig     2024-08-31 21:55:09.517160735 +0900
+++ config.yml  2024-06-09 22:02:26.306291660 +0900
@@ -1,32 +1,32 @@
 gnodeb:
   controlif:
-    ip: "192.168.11.13"
+    ip: "192.168.0.131"
     port: 9487
   dataif:
-    ip: "192.168.11.13"
+    ip: "192.168.13.131"
     port: 2152
   plmnlist:
-    mcc: "999"
-    mnc: "70"
+    mcc: "001"
+    mnc: "01"
     tac: "000001"
     gnbid: "000008"
   slicesupportlist:
     sst: "01"
-    sd: "000001" # optional, can be removed if not used
+    sd: "010203" # optional, can be removed if not used
 ue:
-  msin: "0000000120"
-  key: "00112233445566778899AABBCCDDEEFF"
-  opc: "00112233445566778899AABBCCDDEEFF"
+  msin: "0000001000"
+  key: "465B5CE8B199B49FAA5F0A2EE238A6BC"
+  opc: "E8ED289DEBA952E4283B54E88E6183CA"
   amf: "8000"
   sqn: "00000000"
   dnn: "internet"
   routingindicator: "0000"
   hplmn:
-    mcc: "999"
-    mnc: "70"
+    mcc: "001"
+    mnc: "01"
   snssai:
     sst: 01
-    sd: "000001" # optional, can be removed if not used
+    sd: "010203" # optional, can be removed if not used
   integrity:
     nia0: false
     nia1: false
@@ -38,7 +38,7 @@
     nea2: true
     nea3: false
 amfif:
-  - ip: "192.168.11.30"
+  - ip: "192.168.0.111"
     port: 38412
 logs:
   level: 4

<a id="network_settings"></a>

Network settings of UPFs and Data Network Gateway

<a id="network_settings_up_a1"></a>

a-1. Network settings of Open5GS 5GC UPF (TUN)

First, uncomment the next line in the /etc/sysctl.conf file and reflect it in the OS.

net.ipv4.ip_forward=1
# sysctl -p

Next, down the interface ens18 of the VM-UP and set the VM-DN IP address to default GW on the N6 interfaceens22.

# ip link set dev ens18 down
# ip route add default via 192.168.16.152 dev ens22

Then, configure the TUNnel interface.

# ip tuntap add name ogstun mode tun
# ip addr add 10.45.0.1/16 dev ogstun
# ip link set ogstun up

<a id="network_settings_up_a2"></a>

a-2. Network settings of Open5GS 5GC UPF (TAP)

First, uncomment the next line in the /etc/sysctl.conf file and reflect it in the OS.

net.ipv4.ip_forward=1
# sysctl -p

Next, down the interface ens18 of the VM-UP and set the VM-DN IP address to default GW on the N6 interfaceens22.

# ip link set dev ens18 down
# ip route add default via 192.168.16.152 dev ens22

Then, configure the TAP interface.

# ip tuntap add name ogstap mode tap
# ip addr add 10.45.0.1/16 dev ogstap
# ip link set ogstap up

<a id="network_settings_up_b"></a>

b. Network settings of UPG-VPP

See this.

<a id="network_settings_up_c"></a>

c. Network settings of eUPF

First, uncomment the next line in the /etc/sysctl.conf file and reflect it in the OS.

net.ipv4.ip_forward=1
# sysctl -p

Next, down the interface ens18 of the VM-UP and set the VM-DN IP address to default GW on the N6 interfaceens22.

# ip link set dev ens18 down
# ip route add default via 192.168.16.152 dev ens22

<a id="network_settings_up_d"></a>

d. Network settings of free5GC 5GC UPF

First, uncomment the next line in the /etc/sysctl.conf file and reflect it in the OS.

net.ipv4.ip_forward=1
# sysctl -p

Next, down the interface ens18 of the VM-UP and set the VM-DN IP address to default GW on the N6 interfaceens22.

# ip link set dev ens18 down
# ip route add default via 192.168.16.152 dev ens22

<a id="network_settings_dn"></a>

Network settings of Data Network Gateway

First, uncomment the next line in the /etc/sysctl.conf file and reflect it in the OS.

net.ipv4.ip_forward=1
# sysctl -p

Next, configure NAPT and routing to N6 IP address of UPF.

# iptables -t nat -A POSTROUTING -s 10.45.0.0/16 -j MASQUERADE
# ip route add 10.45.0.0/16 via 192.168.16.151 dev ens20

<a id="build"></a>

Build Open5GS, free5GC, UPFs and PacketRusher

Please refer to the following for building Open5GS, free5GC, UPFs and PacketRusher respectively.

Install MongoDB on Open5GS and free5GC C-Plane machines. MongoDB Compass is a convenient tool to look at the MongoDB database.

<a id="run"></a>

Run Open5GS, free5GC and UPFs

First run each UPF, then each 5GC. Each UPF uses the same IP address, so start only the UPF you want to measure.

<a id="run_up"></a>

Run UPFs

<a id="run_up_a1"></a>

a-1. Run Open5GS 5GC UPF (TUN)

Please use the configuration files changed for TUN interface.

# cd open5gs
# ./install/bin/open5gs-upfd

<a id="run_up_a2"></a>

a-2. Run Open5GS 5GC UPF (TAP)

Please use the configuration files changed for TAP interface.

# cd open5gs
# ./install/bin/open5gs-upfd

<a id="run_up_b"></a>

b. Run UPG-VPP

See this.

<a id="run_up_c"></a>

c. Run eUPF

See this.

<a id="run_up_d"></a>

d. Run free5GC 5GC UPF

# cd free5gc
# ./bin/upf

<a id="run_cp"></a>

Run 5GC C-Plane

<a id="run_cp_open5gs"></a>

Run Open5GS 5GC C-Plane

./install/bin/open5gs-nrfd &
sleep 2
./install/bin/open5gs-scpd &
sleep 2
./install/bin/open5gs-amfd &
sleep 2
./install/bin/open5gs-smfd &
./install/bin/open5gs-ausfd &
./install/bin/open5gs-udmd &
./install/bin/open5gs-udrd &
./install/bin/open5gs-pcfd &
./install/bin/open5gs-nssfd &
./install/bin/open5gs-bsfd &

<a id="run_cp_free5gc"></a>

Run free5GC 5GC C-Plane

Create the following shell script and run it.

#!/usr/bin/env bash

PID_LIST=()

NF_LIST="nrf amf smf udr pcf udm nssf ausf chf"

export GIN_MODE=release

for NF in ${NF_LIST}; do
    ./bin/${NF} &
    PID_LIST+=($!)
    sleep 1
done

function terminate()
{
    sudo kill -SIGTERM ${PID_LIST[${#PID_LIST[@]}-2]} ${PID_LIST[${#PID_LIST[@]}-1]}
    sleep 2
}

trap terminate SIGINT
wait ${PID_LIST}

<a id="measure"></a>

Measure using PacketRusher

This time, I will measure only one connection by one UE. First, run PacketRusher to establish a connection that will be used to measure performance. Then, start the iperf3 server on the Data Network Gateway.

<a id="run_packet_rusher"></a>

Run PacketRusher on VM2

In gtp5g v0.8.7 and later, GTP-U Sequence Number is enabled by default. In this case, eUPF will probably not be able to process GTP-U packets correctly. Therefore, if connecting to eUPF, please disable GTP-U Sequence Number of gtp5g used by PacketRusher as follows.

# echo 0 > /proc/gtp5g/seq

Also, UPF performance measurements using iperf3 tended to be better when GTP-U Sequence Number was disabled. (e.g. UPG-VPP)
This measurement will be performed with the GTP-U Sequence Number disabled.

Establish a connection for one UE.

# cd PacketRusher
# ./packetrusher ue
INFO[0000] Selecting 192.168.0.111 for host 192.168.0.111 as AMF's IP address 
INFO[0000] Selecting 192.168.13.131 for host 192.168.13.131 as gNodeB's N3/Data IP address 
INFO[0000] Selecting 192.168.0.131 for host 192.168.0.131 as gNodeB's N2/Control IP address 
INFO[0000] Loaded config at: /root/PacketRusher/config/config.yml 
INFO[0000] PacketRusher version 1.0.1                   
INFO[0000] ---------------------------------------      
INFO[0000] [TESTER] Starting test function: Testing an ue attached with configuration 
INFO[0000] [TESTER][UE] Number of UEs: 1                
INFO[0000] [TESTER][UE] disableTunnel is false          
INFO[0000] [TESTER][GNB] Control interface IP/Port: 192.168.0.131/9487~ 
INFO[0000] [TESTER][GNB] Data interface IP/Port: 192.168.13.131/2152 
INFO[0000] [TESTER][AMF] AMF IP/Port: 192.168.0.111/38412 
INFO[0000] ---------------------------------------      
INFO[0000] [GNB] SCTP/NGAP service is running           
INFO[0000] [GNB] Initiating NG Setup Request            
INFO[0000] [GNB][SCTP] Receive message in 0 stream      
INFO[0000] [GNB][NGAP] Receive NG Setup Response        
INFO[0000] [GNB][AMF] AMF Name: open5gs-amf0            
INFO[0000] [GNB][AMF] State of AMF: Active              
INFO[0000] [GNB][AMF] Capacity of AMF: 255              
INFO[0000] [GNB][AMF] PLMNs Identities Supported by AMF -- mcc: 001 mnc:01 
INFO[0000] [GNB][AMF] List of AMF slices Supported by AMF -- sst:01 sd:000001 
INFO[0000] [GNB][AMF] List of AMF slices Supported by AMF -- sst:01 sd:010203 
INFO[0001] [TESTER] TESTING REGISTRATION USING IMSI 0000001000 UE 
INFO[0001] [GNB] Received incoming connection from new UE 
INFO[0001] [UE] Initiating Registration                 
INFO[0001] [UE] Switched from state 0 to state 1        
INFO[0001] [GNB][SCTP] Receive message in 1 stream      
INFO[0001] [GNB][NGAP] Receive Downlink NAS Transport   
INFO[0001] [UE][NAS] Message without security header    
INFO[0001] [UE][NAS] Receive Authentication Request     
INFO[0001] [UE][NAS][MAC] Authenticity of the authentication request message: OK 
INFO[0001] [UE][NAS][SQN] SQN of the authentication request message: VALID 
INFO[0001] [UE][NAS] Send authentication response       
INFO[0001] [UE] Switched from state 1 to state 2        
INFO[0001] [GNB][SCTP] Receive message in 1 stream      
INFO[0001] [GNB][NGAP] Receive Downlink NAS Transport   
INFO[0001] [UE][NAS] Message with security header       
INFO[0001] [UE][NAS] Message with integrity and with NEW 5G NAS SECURITY CONTEXT 
INFO[0001] [UE][NAS] successful NAS MAC verification    
INFO[0001] [UE][NAS] Receive Security Mode Command      
INFO[0001] [UE][NAS] Type of ciphering algorithm is 5G-EA0 
INFO[0001] [UE][NAS] Type of integrity protection algorithm is 128-5G-IA2 
INFO[0001] [GNB][SCTP] Receive message in 1 stream      
INFO[0001] [GNB][NGAP] Receive Initial Context Setup Request 
INFO[0001] [GNB][UE] UE Context was created with successful 
INFO[0001] [GNB][UE] UE RAN ID 1                        
INFO[0001] [GNB][UE] UE AMF ID 1                        
INFO[0001] [GNB][UE] UE Mobility Restrict --Plmn-- Mcc: not informed Mnc: not informed 
INFO[0001] [GNB][UE] UE Masked Imeisv: 1110000000ffff00 
INFO[0001] [GNB][UE] Allowed Nssai-- Sst: [01] Sd: [010203] 
INFO[0001] [GNB][NGAP][AMF] Send Initial Context Setup Response. 
INFO[0001] [GNB] Initiating Initial Context Setup Response 
INFO[0001] [GNB][NGAP] No PDU Session to set up in InitialContextSetupResponse. 
INFO[0001] [UE][NAS] Message with security header       
INFO[0001] [UE][NAS] Message with integrity and ciphered 
INFO[0001] [UE][NAS] successful NAS CIPHERING           
INFO[0001] [UE][NAS] successful NAS MAC verification    
INFO[0001] [UE][NAS] Receive Registration Accept        
INFO[0001] [UE][NAS] UE 5G GUTI: &{119 11 [242 0 241 16 2 0 64 192 0 0 147]} 
INFO[0001] [UE] Switched from state 2 to state 3        
INFO[0001] [UE] Initiating New PDU Session              
INFO[0001] [GNB][SCTP] Receive message in 1 stream      
INFO[0001] [GNB][NGAP] Receive Downlink NAS Transport   
INFO[0001] [UE][NAS] Message with security header       
INFO[0001] [UE][NAS] Message with integrity and ciphered 
INFO[0001] [UE][NAS] successful NAS CIPHERING           
INFO[0001] [UE][NAS] successful NAS MAC verification    
INFO[0001] [UE][NAS] Receive Configuration Update Command 
INFO[0001] [UE] Initiating Configuration Update Complete 
INFO[0001] [GNB][SCTP] Receive message in 1 stream      
INFO[0001] [GNB][NGAP] Receive PDU Session Resource Setup Request 
INFO[0001] [GNB][NGAP][UE] PDU Session was created with successful. 
INFO[0001] [GNB][NGAP][UE] PDU Session Id: 1            
INFO[0001] [GNB][NGAP][UE] NSSAI Selected --- sst: NSSAI was not selected sd: NSSAI was not selected 
INFO[0001] [GNB][NGAP][UE] PDU Session Type: ipv4       
INFO[0001] [GNB][NGAP][UE] QOS Flow Identifier: 1       
INFO[0001] [GNB][NGAP][UE] Uplink Teid: 1               
INFO[0001] [GNB][NGAP][UE] Downlink Teid: 1             
INFO[0001] [GNB][NGAP][UE] Non-Dynamic-5QI: 9           
INFO[0001] [GNB][NGAP][UE] Priority Level ARP: 8        
INFO[0001] [GNB][NGAP][UE] UPF Address: 192.168.13.151 :2152 
INFO[0001] [GNB] Initiating PDU Session Resource Setup Response 
INFO[0001] [UE][NAS] Message with security header       
INFO[0001] [UE][NAS] Message with integrity and ciphered 
INFO[0001] [UE][NAS] successful NAS CIPHERING           
INFO[0001] [UE][NAS] successful NAS MAC verification    
INFO[0001] [UE][NAS] Receive DL NAS Transport           
INFO[0001] [UE][NAS] Receiving PDU Session Establishment Accept 
INFO[0001] [UE][NAS] PDU session QoS RULES: [1 0 6 49 49 1 1 255 1] 
INFO[0001] [UE][NAS] PDU session DNN: internet          
INFO[0001] [UE][NAS] PDU session NSSAI -- sst: 1 sd: 123 
INFO[0001] [UE][NAS] PDU address received: 10.45.0.2    
INFO[0002] [UE][GTP] Interface val0000001000 has successfully been configured for UE 10.45.0.2 
INFO[0002] [UE][GTP] You can do traffic for this UE using VRF vrf0000001000, eg: 
INFO[0002] [UE][GTP] sudo ip vrf exec vrf0000001000 iperf3 -c IPERF_SERVER -p PORT -t 9000

To avoid writing ip vrf exec vrf0000001000 command everytime you want to run a command in the context of the UE/VRF, run the command as follows.

# ip vrf exec vrf0000001000 bash

Then all the commands in the new shell will use the tunnel.

<a id="run_iperf3_server"></a>

Run iPerf3 server on Data Network Gateway (VM-DN)

# iperf3 -s

<a id="try_ping_iperf3"></a>

Try ping and iPerf3 client on VM2

Try ping and iperf3 client to the address(192.168.16.152) of N6 interface on Data Network Gateway.

e.g.) The UPF used in the measurement below is UPG-VPP v1.13.0.

# ping 192.168.16.152 -c 10
PING 192.168.16.152 (192.168.16.152) 56(84) bytes of data.
64 bytes from 192.168.16.152: icmp_seq=1 ttl=63 time=0.408 ms
64 bytes from 192.168.16.152: icmp_seq=2 ttl=63 time=0.426 ms
64 bytes from 192.168.16.152: icmp_seq=3 ttl=63 time=0.418 ms
64 bytes from 192.168.16.152: icmp_seq=4 ttl=63 time=0.375 ms
64 bytes from 192.168.16.152: icmp_seq=5 ttl=63 time=0.442 ms
64 bytes from 192.168.16.152: icmp_seq=6 ttl=63 time=0.424 ms
64 bytes from 192.168.16.152: icmp_seq=7 ttl=63 time=0.417 ms
64 bytes from 192.168.16.152: icmp_seq=8 ttl=63 time=0.420 ms
64 bytes from 192.168.16.152: icmp_seq=9 ttl=63 time=0.443 ms
64 bytes from 192.168.16.152: icmp_seq=10 ttl=63 time=0.422 ms

--- 192.168.16.152 ping statistics ---
10 packets transmitted, 10 received, 0% packet loss, time 9193ms
rtt min/avg/max/mdev = 0.375/0.419/0.443/0.018 ms
# iperf3 -c 192.168.16.152
Connecting to host 192.168.16.152, port 5201
[  5] local 10.45.0.2 port 42978 connected to 192.168.16.152 port 5201
[ ID] Interval           Transfer     Bitrate         Retr  Cwnd
[  5]   0.00-1.00   sec   441 MBytes  3.70 Gbits/sec  121    507 KBytes       
[  5]   1.00-2.00   sec   479 MBytes  4.02 Gbits/sec   69    401 KBytes       
[  5]   2.00-3.00   sec   427 MBytes  3.58 Gbits/sec   37    492 KBytes       
[  5]   3.00-4.00   sec   427 MBytes  3.58 Gbits/sec  132    364 KBytes       
[  5]   4.00-5.00   sec   426 MBytes  3.57 Gbits/sec   64    381 KBytes       
[  5]   5.00-6.00   sec   439 MBytes  3.69 Gbits/sec   31    527 KBytes       
[  5]   6.00-7.00   sec   446 MBytes  3.74 Gbits/sec  100    336 KBytes       
[  5]   7.00-8.00   sec   393 MBytes  3.30 Gbits/sec    0    448 KBytes       
[  5]   8.00-9.00   sec   328 MBytes  2.75 Gbits/sec    0    481 KBytes       
[  5]   9.00-10.00  sec   429 MBytes  3.59 Gbits/sec   44    427 KBytes       
- - - - - - - - - - - - - - - - - - - - - - - - -
[ ID] Interval           Transfer     Bitrate         Retr
[  5]   0.00-10.00  sec  4.24 GBytes  3.64 Gbits/sec  598             sender
[  5]   0.00-10.00  sec  4.23 GBytes  3.64 Gbits/sec                  receiver

iperf Done.

<a id="results"></a>

Results

These measurements are the values measured between the IP address 10.45.0.0/16 assigned by PacketRusher on VM2 and the IP address 192.168.16.152 of the Data Network Gateway N6 interface on VM-DN. The measurements were taken in the following pattern:

  1. iperf3 -c 192.168.16.152
  2. iperf3 -c 192.168.16.152 -u -b 5G<br>UDP packet loss is a value measured under deliberate load (5 Gbps) in order to compare performance limits.
  3. ping 192.168.16.152 -c 10
  4. These are the measured values when xdp_attach_mode is set to native. Note that generic mode is implemented at the kernel level, so it does not contribute to performance improvement. If it is set to offload(NIC-level implementation), it may be expected to more improved performance than native (Driver-level implementation). For reference, a list of drivers that support XDP can be found here.

<a id="connect_open5gs"></a>

Connected to Open5GS C-Plane

#UPFDate1) TCP<br>throughput2) UDP<br>throughput2) UDP<br>packet loss3) RTT<br>(msec)
a-1Open5GS UPF v2.7.2 (TUN)2024.10.11S:812 Mbps<br>R:811 MbpsS:2.40 Gbps<br>R:1.05 Gbps56 %0.572
a-2Open5GS UPF v2.7.2 (TAP)2024.10.11S:756 Mbps<br>R:755 MbpsS:2.39 Gbps<br>R:1.23 Gbps48 %0.607
bUPG-VPP v1.13.02024.03.25S:3.64 Gbps<br>R:3.64 GbpsS:2.24 Gbps<br>R:1.99 Gbps11 %0.419
c4) eUPF v0.6.42024.05.01S:1.33 Gbps<br>R:1.32 GbpsS:2.10 Gbps<br>R:1.34 Gbps36 %0.532
<details><summary>a-1. Ping and iPerf3 logs for Open5GS UPF v2.7.2 (TUN)</summary>
# iperf3 -c 192.168.16.152
Connecting to host 192.168.16.152, port 5201
[  5] local 10.45.0.2 port 34728 connected to 192.168.16.152 port 5201
[ ID] Interval           Transfer     Bitrate         Retr  Cwnd
[  5]   0.00-1.00   sec   104 MBytes   874 Mbits/sec  298   96.5 KBytes       
[  5]   1.00-2.00   sec  99.5 MBytes   835 Mbits/sec  302   55.2 KBytes       
[  5]   2.00-3.00   sec  98.1 MBytes   823 Mbits/sec  360   86.9 KBytes       
[  5]   3.00-4.00   sec  96.2 MBytes   807 Mbits/sec  239   74.5 KBytes       
[  5]   4.00-5.00   sec  95.5 MBytes   801 Mbits/sec  316   82.7 KBytes       
[  5]   5.00-6.00   sec  96.4 MBytes   809 Mbits/sec  259   80.0 KBytes       
[  5]   6.00-7.00   sec  94.8 MBytes   795 Mbits/sec  226   84.1 KBytes       
[  5]   7.00-8.00   sec  93.4 MBytes   783 Mbits/sec  238   84.1 KBytes       
[  5]   8.00-9.00   sec  94.6 MBytes   794 Mbits/sec  256   75.8 KBytes       
[  5]   9.00-10.00  sec  95.4 MBytes   800 Mbits/sec  237   78.6 KBytes       
- - - - - - - - - - - - - - - - - - - - - - - - -
[ ID] Interval           Transfer     Bitrate         Retr
[  5]   0.00-10.00  sec   968 MBytes   812 Mbits/sec  2731             sender
[  5]   0.00-10.00  sec   968 MBytes   811 Mbits/sec                  receiver

iperf Done.
# iperf3 -c 192.168.16.152 -u -b 5G
Connecting to host 192.168.16.152, port 5201
[  5] local 10.45.0.2 port 48408 connected to 192.168.16.152 port 5201
[ ID] Interval           Transfer     Bitrate         Total Datagrams
[  5]   0.00-1.00   sec   311 MBytes  2.61 Gbits/sec  230867  
[  5]   1.00-2.00   sec   281 MBytes  2.36 Gbits/sec  208797  
[  5]   2.00-3.00   sec   276 MBytes  2.31 Gbits/sec  204791  
[  5]   3.00-4.00   sec   283 MBytes  2.38 Gbits/sec  210503  
[  5]   4.00-5.00   sec   256 MBytes  2.14 Gbits/sec  189781  
[  5]   5.00-6.00   sec   304 MBytes  2.55 Gbits/sec  225407  
[  5]   6.00-7.00   sec   310 MBytes  2.60 Gbits/sec  229848  
[  5]   7.00-8.00   sec   271 MBytes  2.28 Gbits/sec  201619  
[  5]   8.00-9.00   sec   290 MBytes  2.43 Gbits/sec  215447  
[  5]   9.00-10.00  sec   278 MBytes  2.33 Gbits/sec  206726  
- - - - - - - - - - - - - - - - - - - - - - - - -
[ ID] Interval           Transfer     Bitrate         Jitter    Lost/Total Datagrams
[  5]   0.00-10.00  sec  2.79 GBytes  2.40 Gbits/sec  0.000 ms  0/2123786 (0%)  sender
[  5]   0.00-10.00  sec  1.22 GBytes  1.05 Gbits/sec  0.027 ms  1197596/2123626 (56%)  receiver

iperf Done.
# ping 192.168.16.152 -c 10
PING 192.168.16.152 (192.168.16.152) 56(84) bytes of data.
64 bytes from 192.168.16.152: icmp_seq=1 ttl=63 time=0.552 ms
64 bytes from 192.168.16.152: icmp_seq=2 ttl=63 time=0.625 ms
64 bytes from 192.168.16.152: icmp_seq=3 ttl=63 time=0.527 ms
64 bytes from 192.168.16.152: icmp_seq=4 ttl=63 time=0.550 ms
64 bytes from 192.168.16.152: icmp_seq=5 ttl=63 time=0.628 ms
64 bytes from 192.168.16.152: icmp_seq=6 ttl=63 time=0.488 ms
64 bytes from 192.168.16.152: icmp_seq=7 ttl=63 time=0.595 ms
64 bytes from 192.168.16.152: icmp_seq=8 ttl=63 time=0.628 ms
64 bytes from 192.168.16.152: icmp_seq=9 ttl=63 time=0.568 ms
64 bytes from 192.168.16.152: icmp_seq=10 ttl=63 time=0.562 ms

--- 192.168.16.152 ping statistics ---
10 packets transmitted, 10 received, 0% packet loss, time 9250ms
rtt min/avg/max/mdev = 0.488/0.572/0.628/0.044 ms
</details> <details><summary>a-2. Ping and iPerf3 logs for Open5GS UPF v2.7.2 (TAP)</summary>
# iperf3 -c 192.168.16.152
Connecting to host 192.168.16.152, port 5201
[  5] local 10.45.0.2 port 37814 connected to 192.168.16.152 port 5201
[ ID] Interval           Transfer     Bitrate         Retr  Cwnd
[  5]   0.00-1.00   sec  90.8 MBytes   760 Mbits/sec  273   80.0 KBytes       
[  5]   1.00-2.00   sec  90.4 MBytes   758 Mbits/sec  290   80.0 KBytes       
[  5]   2.00-3.00   sec  90.6 MBytes   760 Mbits/sec  296   97.9 KBytes       
[  5]   3.00-4.00   sec  90.2 MBytes   757 Mbits/sec  331   78.6 KBytes       
[  5]   4.00-5.00   sec  90.4 MBytes   758 Mbits/sec  252   81.4 KBytes       
[  5]   5.00-6.00   sec  90.9 MBytes   763 Mbits/sec  280   75.8 KBytes       
[  5]   6.00-7.00   sec  90.0 MBytes   755 Mbits/sec  266   75.8 KBytes       
[  5]   7.00-8.00   sec  90.2 MBytes   757 Mbits/sec  294   77.2 KBytes       
[  5]   8.00-9.00   sec  88.0 MBytes   738 Mbits/sec  302   77.2 KBytes       
[  5]   9.00-10.00  sec  89.4 MBytes   750 Mbits/sec  283   78.6 KBytes       
- - - - - - - - - - - - - - - - - - - - - - - - -
[ ID] Interval           Transfer     Bitrate         Retr
[  5]   0.00-10.00  sec   901 MBytes   756 Mbits/sec  2867             sender
[  5]   0.00-10.00  sec   900 MBytes   755 Mbits/sec                  receiver

iperf Done.
# iperf3 -c 192.168.16.152 -u -b 5G
Connecting to host 192.168.16.152, port 5201
[  5] local 10.45.0.2 port 38028 connected to 192.168.16.152 port 5201
[ ID] Interval           Transfer     Bitrate         Total Datagrams
[  5]   0.00-1.00   sec   293 MBytes  2.46 Gbits/sec  217659  
[  5]   1.00-2.00   sec   277 MBytes  2.33 Gbits/sec  206068  
[  5]   2.00-3.00   sec   283 MBytes  2.37 Gbits/sec  209866  
[  5]   3.00-4.00   sec   287 MBytes  2.41 Gbits/sec  212964  
[  5]   4.00-5.00   sec   272 MBytes  2.28 Gbits/sec  202014  
[  5]   5.00-6.00   sec   295 MBytes  2.48 Gbits/sec  219342  
[  5]   6.00-7.00   sec   289 MBytes  2.42 Gbits/sec  214251  
[  5]   7.00-8.00   sec   292 MBytes  2.45 Gbits/sec  216627  
[  5]   8.00-9.00   sec   279 MBytes  2.34 Gbits/sec  207361  
[  5]   9.00-10.00  sec   285 MBytes  2.39 Gbits/sec  211529  
- - - - - - - - - - - - - - - - - - - - - - - - -
[ ID] Interval           Transfer     Bitrate         Jitter    Lost/Total Datagrams
[  5]   0.00-10.00  sec  2.78 GBytes  2.39 Gbits/sec  0.000 ms  0/2117681 (0%)  sender
[  5]   0.00-10.00  sec  1.44 GBytes  1.23 Gbits/sec  0.004 ms  1026181/2117681 (48%)  receiver

iperf Done.
# ping 192.168.16.152 -c 10
PING 192.168.16.152 (192.168.16.152) 56(84) bytes of data.
64 bytes from 192.168.16.152: icmp_seq=1 ttl=63 time=0.596 ms
64 bytes from 192.168.16.152: icmp_seq=2 ttl=63 time=0.649 ms
64 bytes from 192.168.16.152: icmp_seq=3 ttl=63 time=0.682 ms
64 bytes from 192.168.16.152: icmp_seq=4 ttl=63 time=0.627 ms
64 bytes from 192.168.16.152: icmp_seq=5 ttl=63 time=0.580 ms
64 bytes from 192.168.16.152: icmp_seq=6 ttl=63 time=0.646 ms
64 bytes from 192.168.16.152: icmp_seq=7 ttl=63 time=0.651 ms
64 bytes from 192.168.16.152: icmp_seq=8 ttl=63 time=0.540 ms
64 bytes from 192.168.16.152: icmp_seq=9 ttl=63 time=0.550 ms
64 bytes from 192.168.16.152: icmp_seq=10 ttl=63 time=0.551 ms

--- 192.168.16.152 ping statistics ---
10 packets transmitted, 10 received, 0% packet loss, time 9223ms
rtt min/avg/max/mdev = 0.540/0.607/0.682/0.047 ms
</details> <details><summary>b. Ping and iPerf3 logs for UPG-VPP v1.13.0</summary>
# iperf3 -c 192.168.16.152
Connecting to host 192.168.16.152, port 5201
[  5] local 10.45.0.2 port 42978 connected to 192.168.16.152 port 5201
[ ID] Interval           Transfer     Bitrate         Retr  Cwnd
[  5]   0.00-1.00   sec   441 MBytes  3.70 Gbits/sec  121    507 KBytes       
[  5]   1.00-2.00   sec   479 MBytes  4.02 Gbits/sec   69    401 KBytes       
[  5]   2.00-3.00   sec   427 MBytes  3.58 Gbits/sec   37    492 KBytes       
[  5]   3.00-4.00   sec   427 MBytes  3.58 Gbits/sec  132    364 KBytes       
[  5]   4.00-5.00   sec   426 MBytes  3.57 Gbits/sec   64    381 KBytes       
[  5]   5.00-6.00   sec   439 MBytes  3.69 Gbits/sec   31    527 KBytes       
[  5]   6.00-7.00   sec   446 MBytes  3.74 Gbits/sec  100    336 KBytes       
[  5]   7.00-8.00   sec   393 MBytes  3.30 Gbits/sec    0    448 KBytes       
[  5]   8.00-9.00   sec   328 MBytes  2.75 Gbits/sec    0    481 KBytes       
[  5]   9.00-10.00  sec   429 MBytes  3.59 Gbits/sec   44    427 KBytes       
- - - - - - - - - - - - - - - - - - - - - - - - -
[ ID] Interval           Transfer     Bitrate         Retr
[  5]   0.00-10.00  sec  4.24 GBytes  3.64 Gbits/sec  598             sender
[  5]   0.00-10.00  sec  4.23 GBytes  3.64 Gbits/sec                  receiver

iperf Done.
# iperf3 -c 192.168.16.152 -u -b 5G
Connecting to host 192.168.16.152, port 5201
[  5] local 10.45.0.2 port 57518 connected to 192.168.16.152 port 5201
[ ID] Interval           Transfer     Bitrate         Total Datagrams
[  5]   0.00-1.00   sec   272 MBytes  2.28 Gbits/sec  201960  
[  5]   1.00-2.00   sec   227 MBytes  1.90 Gbits/sec  168630  
[  5]   2.00-3.00   sec   276 MBytes  2.32 Gbits/sec  205005  
[  5]   3.00-4.00   sec   290 MBytes  2.43 Gbits/sec  215515  
[  5]   4.00-5.00   sec   258 MBytes  2.16 Gbits/sec  191631  
[  5]   5.00-6.00   sec   263 MBytes  2.21 Gbits/sec  195360  
[  5]   6.00-7.00   sec   272 MBytes  2.28 Gbits/sec  201697  
[  5]   7.00-8.00   sec   280 MBytes  2.35 Gbits/sec  207626  
[  5]   8.00-9.00   sec   277 MBytes  2.32 Gbits/sec  205686  
[  5]   9.00-10.00  sec   256 MBytes  2.14 Gbits/sec  189777  
- - - - - - - - - - - - - - - - - - - - - - - - -
[ ID] Interval           Transfer     Bitrate         Jitter    Lost/Total Datagrams
[  5]   0.00-10.00  sec  2.61 GBytes  2.24 Gbits/sec  0.000 ms  0/1982887 (0%)  sender
[  5]   0.00-10.00  sec  2.31 GBytes  1.99 Gbits/sec  0.012 ms  225131/1982887 (11%)  receiver

iperf Done.
# ping 192.168.16.152 -c 10
PING 192.168.16.152 (192.168.16.152) 56(84) bytes of data.
64 bytes from 192.168.16.152: icmp_seq=1 ttl=63 time=0.408 ms
64 bytes from 192.168.16.152: icmp_seq=2 ttl=63 time=0.426 ms
64 bytes from 192.168.16.152: icmp_seq=3 ttl=63 time=0.418 ms
64 bytes from 192.168.16.152: icmp_seq=4 ttl=63 time=0.375 ms
64 bytes from 192.168.16.152: icmp_seq=5 ttl=63 time=0.442 ms
64 bytes from 192.168.16.152: icmp_seq=6 ttl=63 time=0.424 ms
64 bytes from 192.168.16.152: icmp_seq=7 ttl=63 time=0.417 ms
64 bytes from 192.168.16.152: icmp_seq=8 ttl=63 time=0.420 ms
64 bytes from 192.168.16.152: icmp_seq=9 ttl=63 time=0.443 ms
64 bytes from 192.168.16.152: icmp_seq=10 ttl=63 time=0.422 ms

--- 192.168.16.152 ping statistics ---
10 packets transmitted, 10 received, 0% packet loss, time 9193ms
rtt min/avg/max/mdev = 0.375/0.419/0.443/0.018 ms
</details> <details><summary>c. Ping and iPerf3 logs for eUPF v0.6.4</summary>
# iperf3 -c 192.168.16.152
Connecting to host 192.168.16.152, port 5201
[  5] local 10.45.0.2 port 53846 connected to 192.168.16.152 port 5201
[ ID] Interval           Transfer     Bitrate         Retr  Cwnd
[  5]   0.00-1.00   sec   160 MBytes  1.34 Gbits/sec  113   2.20 MBytes       
[  5]   1.00-2.00   sec   158 MBytes  1.32 Gbits/sec    0   2.39 MBytes       
[  5]   2.00-3.00   sec   159 MBytes  1.33 Gbits/sec    0   2.54 MBytes       
[  5]   3.00-4.00   sec   158 MBytes  1.32 Gbits/sec    0   2.66 MBytes       
[  5]   4.00-5.00   sec   157 MBytes  1.31 Gbits/sec    0   2.76 MBytes       
[  5]   5.00-6.00   sec   159 MBytes  1.33 Gbits/sec    1   2.02 MBytes       
[  5]   6.00-7.00   sec   157 MBytes  1.32 Gbits/sec    0   2.13 MBytes       
[  5]   7.00-8.00   sec   158 MBytes  1.32 Gbits/sec    0   2.22 MBytes       
[  5]   8.00-9.00   sec   158 MBytes  1.33 Gbits/sec    0   2.28 MBytes       
[  5]   9.00-10.00  sec   158 MBytes  1.33 Gbits/sec    0   2.33 MBytes       
- - - - - - - - - - - - - - - - - - - - - - - - -
[ ID] Interval           Transfer     Bitrate         Retr
[  5]   0.00-10.00  sec  1.54 GBytes  1.33 Gbits/sec  114             sender
[  5]   0.00-10.02  sec  1.54 GBytes  1.32 Gbits/sec                  receiver

iperf Done.
# iperf3 -c 192.168.16.152 -u -b 5G
Connecting to host 192.168.16.152, port 5201
[  5] local 10.45.0.2 port 60776 connected to 192.168.16.152 port 5201
[ ID] Interval           Transfer     Bitrate         Total Datagrams
[  5]   0.00-1.00   sec   242 MBytes  2.03 Gbits/sec  179498  
[  5]   1.00-2.00   sec   243 MBytes  2.04 Gbits/sec  180734  
[  5]   2.00-3.00   sec   253 MBytes  2.12 Gbits/sec  187944  
[  5]   3.00-4.00   sec   265 MBytes  2.22 Gbits/sec  196820  
[  5]   4.00-5.00   sec   262 MBytes  2.20 Gbits/sec  194586  
[  5]   5.00-6.00   sec   257 MBytes  2.16 Gbits/sec  190814  
[  5]   6.00-7.00   sec   239 MBytes  2.00 Gbits/sec  177419  
[  5]   7.00-8.00   sec   239 MBytes  2.01 Gbits/sec  177794  
[  5]   8.00-9.00   sec   252 MBytes  2.12 Gbits/sec  187435  
[  5]   9.00-10.00  sec   249 MBytes  2.09 Gbits/sec  185021  
- - - - - - - - - - - - - - - - - - - - - - - - -
[ ID] Interval           Transfer     Bitrate         Jitter    Lost/Total Datagrams
[  5]   0.00-10.00  sec  2.44 GBytes  2.10 Gbits/sec  0.000 ms  0/1858065 (0%)  sender
[  5]   0.00-10.02  sec  1.56 GBytes  1.34 Gbits/sec  0.006 ms  674176/1858034 (36%)  receiver

iperf Done.
# ping 192.168.16.152 -c 10
PING 192.168.16.152 (192.168.16.152) 56(84) bytes of data.
64 bytes from 192.168.16.152: icmp_seq=1 ttl=64 time=0.466 ms
64 bytes from 192.168.16.152: icmp_seq=2 ttl=64 time=0.559 ms
64 bytes from 192.168.16.152: icmp_seq=3 ttl=64 time=0.495 ms
64 bytes from 192.168.16.152: icmp_seq=4 ttl=64 time=0.500 ms
64 bytes from 192.168.16.152: icmp_seq=5 ttl=64 time=0.532 ms
64 bytes from 192.168.16.152: icmp_seq=6 ttl=64 time=0.519 ms
64 bytes from 192.168.16.152: icmp_seq=7 ttl=64 time=0.574 ms
64 bytes from 192.168.16.152: icmp_seq=8 ttl=64 time=0.554 ms
64 bytes from 192.168.16.152: icmp_seq=9 ttl=64 time=0.562 ms
64 bytes from 192.168.16.152: icmp_seq=10 ttl=64 time=0.568 ms

--- 192.168.16.152 ping statistics ---
10 packets transmitted, 10 received, 0% packet loss, time 9224ms
rtt min/avg/max/mdev = 0.466/0.532/0.574/0.034 ms
</details>

<a id="connect_free5gc"></a>

Connected to free5GC C-Plane

#UPFDate1) TCP<br>throughput2) UDP<br>throughput2) UDP<br>packet loss3) RTT<br>(msec)
bUPG-VPP v1.13.02024.03.25S:3.61 Gbps<br>R:3.61 GbpsS:2.19 Gbps<br>R:1.79 Gbps18 %0.406
c4) eUPF v0.6.42024.05.01S:1.22 Gbps<br>R:1.21 GbpsS:2.15 Gbps<br>R:1.24 Gbps42 %0.551
dfree5GC UPF v1.2.32024.10.11S:3.23 Gbps<br>R:3.23 GbpsS:2.14 Gbps<br>R:1.18 Gbps45 %0.501
<details><summary>b. Ping and iPerf3 logs for UPG-VPP v1.13.0</summary>
# iperf3 -c 192.168.16.152
Connecting to host 192.168.16.152, port 5201
[  5] local 10.45.0.1 port 50108 connected to 192.168.16.152 port 5201
[ ID] Interval           Transfer     Bitrate         Retr  Cwnd
[  5]   0.00-1.00   sec   398 MBytes  3.34 Gbits/sec    1    501 KBytes       
[  5]   1.00-2.00   sec   384 MBytes  3.22 Gbits/sec   74    433 KBytes       
[  5]   2.00-3.00   sec   481 MBytes  4.04 Gbits/sec   40    450 KBytes       
[  5]   3.00-4.00   sec   428 MBytes  3.59 Gbits/sec   35    582 KBytes       
[  5]   4.00-5.00   sec   406 MBytes  3.41 Gbits/sec   70    353 KBytes       
[  5]   5.00-6.00   sec   446 MBytes  3.74 Gbits/sec   41    432 KBytes       
[  5]   6.00-7.00   sec   424 MBytes  3.56 Gbits/sec   12    473 KBytes       
[  5]   7.00-8.00   sec   424 MBytes  3.56 Gbits/sec   15    389 KBytes       
[  5]   8.00-9.00   sec   419 MBytes  3.52 Gbits/sec   22    512 KBytes       
[  5]   9.00-10.00  sec   431 MBytes  3.61 Gbits/sec   22    447 KBytes       
- - - - - - - - - - - - - - - - - - - - - - - - -
[ ID] Interval           Transfer     Bitrate         Retr
[  5]   0.00-10.00  sec  4.21 GBytes  3.61 Gbits/sec  332             sender
[  5]   0.00-10.00  sec  4.21 GBytes  3.61 Gbits/sec                  receiver

iperf Done.
# iperf3 -c 192.168.16.152 -u -b 5G
Connecting to host 192.168.16.152, port 5201
[  5] local 10.45.0.1 port 42845 connected to 192.168.16.152 port 5201
[ ID] Interval           Transfer     Bitrate         Total Datagrams
[  5]   0.00-1.00   sec   274 MBytes  2.30 Gbits/sec  203297  
[  5]   1.00-2.00   sec   255 MBytes  2.14 Gbits/sec  189250  
[  5]   2.00-3.00   sec   262 MBytes  2.20 Gbits/sec  194667  
[  5]   3.00-4.00   sec   244 MBytes  2.05 Gbits/sec  181535  
[  5]   4.00-5.00   sec   261 MBytes  2.19 Gbits/sec  193772  
[  5]   5.00-6.00   sec   292 MBytes  2.45 Gbits/sec  216725  
[  5]   6.00-7.00   sec   278 MBytes  2.33 Gbits/sec  206375  
[  5]   7.00-8.00   sec   241 MBytes  2.02 Gbits/sec  179000  
[  5]   8.00-9.00   sec   234 MBytes  1.96 Gbits/sec  173646  
[  5]   9.00-10.00  sec   267 MBytes  2.24 Gbits/sec  198048  
- - - - - - - - - - - - - - - - - - - - - - - - -
[ ID] Interval           Transfer     Bitrate         Jitter    Lost/Total Datagrams
[  5]   0.00-10.00  sec  2.55 GBytes  2.19 Gbits/sec  0.000 ms  0/1936315 (0%)  sender
[  5]   0.00-10.00  sec  2.09 GBytes  1.79 Gbits/sec  0.006 ms  350485/1936249 (18%)  receiver

iperf Done.
# ping 192.168.16.152 -c 10
PING 192.168.16.152 (192.168.16.152) 56(84) bytes of data.
64 bytes from 192.168.16.152: icmp_seq=1 ttl=63 time=0.282 ms
64 bytes from 192.168.16.152: icmp_seq=2 ttl=63 time=0.393 ms
64 bytes from 192.168.16.152: icmp_seq=3 ttl=63 time=0.399 ms
64 bytes from 192.168.16.152: icmp_seq=4 ttl=63 time=0.494 ms
64 bytes from 192.168.16.152: icmp_seq=5 ttl=63 time=0.465 ms
64 bytes from 192.168.16.152: icmp_seq=6 ttl=63 time=0.380 ms
64 bytes from 192.168.16.152: icmp_seq=7 ttl=63 time=0.456 ms
64 bytes from 192.168.16.152: icmp_seq=8 ttl=63 time=0.376 ms
64 bytes from 192.168.16.152: icmp_seq=9 ttl=63 time=0.394 ms
64 bytes from 192.168.16.152: icmp_seq=10 ttl=63 time=0.429 ms

--- 192.168.16.152 ping statistics ---
10 packets transmitted, 10 received, 0% packet loss, time 9256ms
rtt min/avg/max/mdev = 0.282/0.406/0.494/0.056 ms
</details> <details><summary>c. Ping and iPerf3 logs for eUPF v0.6.4</summary>
# iperf3 -c 192.168.16.152
Connecting to host 192.168.16.152, port 5201
[  5] local 10.45.0.1 port 54316 connected to 192.168.16.152 port 5201
[ ID] Interval           Transfer     Bitrate         Retr  Cwnd
[  5]   0.00-1.00   sec   147 MBytes  1.23 Gbits/sec  250   1.52 MBytes       
[  5]   1.00-2.00   sec   146 MBytes  1.23 Gbits/sec    0   1.61 MBytes       
[  5]   2.00-3.00   sec   145 MBytes  1.21 Gbits/sec    0   1.69 MBytes       
[  5]   3.00-4.00   sec   144 MBytes  1.21 Gbits/sec    0   1.74 MBytes       
[  5]   4.00-5.00   sec   145 MBytes  1.22 Gbits/sec    0   1.77 MBytes       
[  5]   5.00-6.00   sec   145 MBytes  1.22 Gbits/sec    0   1.82 MBytes       
[  5]   6.00-7.00   sec   145 MBytes  1.21 Gbits/sec    0   1.87 MBytes       
[  5]   7.00-8.00   sec   145 MBytes  1.21 Gbits/sec    0   1.93 MBytes       
[  5]   8.00-9.00   sec   144 MBytes  1.21 Gbits/sec    0   1.98 MBytes       
[  5]   9.00-10.00  sec   145 MBytes  1.21 Gbits/sec    0   2.03 MBytes       
- - - - - - - - - - - - - - - - - - - - - - - - -
[ ID] Interval           Transfer     Bitrate         Retr
[  5]   0.00-10.00  sec  1.42 GBytes  1.22 Gbits/sec  250             sender
[  5]   0.00-10.02  sec  1.42 GBytes  1.21 Gbits/sec                  receiver

iperf Done.
# iperf3 -c 192.168.16.152 -u -b 5G
Connecting to host 192.168.16.152, port 5201
[  5] local 10.45.0.1 port 54359 connected to 192.168.16.152 port 5201
[ ID] Interval           Transfer     Bitrate         Total Datagrams
[  5]   0.00-1.00   sec   259 MBytes  2.17 Gbits/sec  192256  
[  5]   1.00-2.00   sec   268 MBytes  2.24 Gbits/sec  198662  
[  5]   2.00-3.00   sec   261 MBytes  2.19 Gbits/sec  193740  
[  5]   3.00-4.00   sec   246 MBytes  2.06 Gbits/sec  182715  
[  5]   4.00-5.00   sec   241 MBytes  2.02 Gbits/sec  178614  
[  5]   5.00-6.00   sec   251 MBytes  2.10 Gbits/sec  186307  
[  5]   6.00-7.00   sec   268 MBytes  2.25 Gbits/sec  199061  
[  5]   7.00-8.00   sec   260 MBytes  2.18 Gbits/sec  193034  
[  5]   8.00-9.00   sec   248 MBytes  2.08 Gbits/sec  184280  
[  5]   9.00-10.00  sec   258 MBytes  2.16 Gbits/sec  191450  
- - - - - - - - - - - - - - - - - - - - - - - - -
[ ID] Interval           Transfer     Bitrate         Jitter    Lost/Total Datagrams
[  5]   0.00-10.00  sec  2.50 GBytes  2.15 Gbits/sec  0.000 ms  0/1900119 (0%)  sender
[  5]   0.00-10.02  sec  1.45 GBytes  1.24 Gbits/sec  0.010 ms  800831/1900096 (42%)  receiver

iperf Done.
# ping 192.168.16.152 -c 10
PING 192.168.16.152 (192.168.16.152) 56(84) bytes of data.
64 bytes from 192.168.16.152: icmp_seq=1 ttl=64 time=0.432 ms
64 bytes from 192.168.16.152: icmp_seq=2 ttl=64 time=0.523 ms
64 bytes from 192.168.16.152: icmp_seq=3 ttl=64 time=0.493 ms
64 bytes from 192.168.16.152: icmp_seq=4 ttl=64 time=0.607 ms
64 bytes from 192.168.16.152: icmp_seq=5 ttl=64 time=0.630 ms
64 bytes from 192.168.16.152: icmp_seq=6 ttl=64 time=0.552 ms
64 bytes from 192.168.16.152: icmp_seq=7 ttl=64 time=0.671 ms
64 bytes from 192.168.16.152: icmp_seq=8 ttl=64 time=0.591 ms
64 bytes from 192.168.16.152: icmp_seq=9 ttl=64 time=0.444 ms
64 bytes from 192.168.16.152: icmp_seq=10 ttl=64 time=0.572 ms

--- 192.168.16.152 ping statistics ---
10 packets transmitted, 10 received, 0% packet loss, time 9212ms
rtt min/avg/max/mdev = 0.432/0.551/0.671/0.074 ms
</details> <details><summary>d. Ping and iPerf3 logs for free5GC UPF v1.2.3</summary>
# iperf3 -c 192.168.16.152
Connecting to host 192.168.16.152, port 5201
[  5] local 10.45.0.1 port 41702 connected to 192.168.16.152 port 5201
[ ID] Interval           Transfer     Bitrate         Retr  Cwnd
[  5]   0.00-1.00   sec   401 MBytes  3.35 Gbits/sec  130   2.37 MBytes       
[  5]   1.00-2.00   sec   392 MBytes  3.30 Gbits/sec   65   1.79 MBytes       
[  5]   2.00-3.00   sec   393 MBytes  3.29 Gbits/sec    0   1.92 MBytes       
[  5]   3.00-4.00   sec   392 MBytes  3.29 Gbits/sec    0   2.04 MBytes       
[  5]   4.00-5.00   sec   392 MBytes  3.28 Gbits/sec    0   2.15 MBytes       
[  5]   5.00-6.00   sec   384 MBytes  3.22 Gbits/sec    0   2.24 MBytes       
[  5]   6.00-7.00   sec   389 MBytes  3.27 Gbits/sec    0   2.33 MBytes       
[  5]   7.00-8.00   sec   372 MBytes  3.12 Gbits/sec  214   1.75 MBytes       
[  5]   8.00-9.00   sec   371 MBytes  3.11 Gbits/sec    0   1.92 MBytes       
[  5]   9.00-10.00  sec   359 MBytes  3.01 Gbits/sec    0   2.05 MBytes       
- - - - - - - - - - - - - - - - - - - - - - - - -
[ ID] Interval           Transfer     Bitrate         Retr
[  5]   0.00-10.00  sec  3.76 GBytes  3.23 Gbits/sec  409             sender
[  5]   0.00-10.00  sec  3.76 GBytes  3.23 Gbits/sec                  receiver

iperf Done.
# iperf3 -c 192.168.16.152 -u -b 5G
Connecting to host 192.168.16.152, port 5201
[  5] local 10.45.0.1 port 53188 connected to 192.168.16.152 port 5201
[ ID] Interval           Transfer     Bitrate         Total Datagrams
[  5]   0.00-1.00   sec   255 MBytes  2.13 Gbits/sec  189016  
[  5]   1.00-2.00   sec   252 MBytes  2.11 Gbits/sec  187059  
[  5]   2.00-3.00   sec   255 MBytes  2.14 Gbits/sec  189384  
[  5]   3.00-4.00   sec   260 MBytes  2.18 Gbits/sec  192788  
[  5]   4.00-5.00   sec   262 MBytes  2.20 Gbits/sec  194859  
[  5]   5.00-6.00   sec   252 MBytes  2.11 Gbits/sec  187220  
[  5]   6.00-7.00   sec   264 MBytes  2.21 Gbits/sec  196035  
[  5]   7.00-8.00   sec   242 MBytes  2.03 Gbits/sec  179720  
[  5]   8.00-9.00   sec   244 MBytes  2.05 Gbits/sec  181499  
[  5]   9.00-10.00  sec   261 MBytes  2.19 Gbits/sec  194150  
- - - - - - - - - - - - - - - - - - - - - - - - -
[ ID] Interval           Transfer     Bitrate         Jitter    Lost/Total Datagrams
[  5]   0.00-10.00  sec  2.49 GBytes  2.14 Gbits/sec  0.000 ms  0/1891730 (0%)  sender
[  5]   0.00-10.00  sec  1.37 GBytes  1.18 Gbits/sec  0.005 ms  848401/1891603 (45%)  receiver

iperf Done.
# ping 192.168.16.152 -c 10
PING 192.168.16.152 (192.168.16.152) 56(84) bytes of data.
64 bytes from 192.168.16.152: icmp_seq=1 ttl=63 time=0.407 ms
64 bytes from 192.168.16.152: icmp_seq=2 ttl=63 time=0.503 ms
64 bytes from 192.168.16.152: icmp_seq=3 ttl=63 time=0.523 ms
64 bytes from 192.168.16.152: icmp_seq=4 ttl=63 time=0.480 ms
64 bytes from 192.168.16.152: icmp_seq=5 ttl=63 time=0.493 ms
64 bytes from 192.168.16.152: icmp_seq=6 ttl=63 time=0.503 ms
64 bytes from 192.168.16.152: icmp_seq=7 ttl=63 time=0.569 ms
64 bytes from 192.168.16.152: icmp_seq=8 ttl=63 time=0.503 ms
64 bytes from 192.168.16.152: icmp_seq=9 ttl=63 time=0.513 ms
64 bytes from 192.168.16.152: icmp_seq=10 ttl=63 time=0.520 ms

--- 192.168.16.152 ping statistics ---
10 packets transmitted, 10 received, 0% packet loss, time 9197ms
rtt min/avg/max/mdev = 0.407/0.501/0.569/0.038 ms
</details>

<a id="summary"></a>

Summary

These measurement results show that UPG-VPP has relatively outstanding performance even on Proxmox VE VM. If measuring using virtual machines, it would be better to measure on VMs on a hypervisor such as Proxmox VE. Also, it is good to select VirtIO as the network interface to ensure that the network does not become a bottleneck in the measurement.

It is very simple mesurement and may not be very meaningful when measuring between virtual machines, but it may be a little helpful when comparing the relative performance of UPF. I would appreciate it if you could use this as a reference as a configuration example when measuring with real devices.

<a id="n6_performance"></a>

Performance of N6 interface only

I simply measured the raw communication performance between VM-UP and VM-DN. This is a measurement of the N6 interface and therefore does not include communication over GTP-U.

A--B1) TCP<br>throughput2) UDP<br>throughput2) UDP<br>packet loss3) RTT<br>(msec)
VM-UP --(N6)-- VM-DNS:25.6 Gbps<br>R:25.5 GbpsS:2.99 Gbps<br>R:2.83 Gbps6.9 %0.260
<details><summary>1. iperf3 -c 192.168.16.152</summary>
# iperf3 -c 192.168.16.152
Connecting to host 192.168.16.152, port 5201
[  5] local 192.168.16.151 port 49214 connected to 192.168.16.152 port 5201
[ ID] Interval           Transfer     Bitrate         Retr  Cwnd
[  5]   0.00-1.00   sec  2.97 GBytes  25.5 Gbits/sec    0   2.63 MBytes       
[  5]   1.00-2.00   sec  2.96 GBytes  25.4 Gbits/sec    0   2.91 MBytes       
[  5]   2.00-3.00   sec  2.94 GBytes  25.2 Gbits/sec    0   3.52 MBytes       
[  5]   3.00-4.00   sec  2.98 GBytes  25.6 Gbits/sec    0   3.52 MBytes       
[  5]   4.00-5.00   sec  2.98 GBytes  25.6 Gbits/sec    0   3.52 MBytes       
[  5]   5.00-6.00   sec  2.97 GBytes  25.5 Gbits/sec    0   3.52 MBytes       
[  5]   6.00-7.00   sec  2.97 GBytes  25.5 Gbits/sec    0   3.52 MBytes       
[  5]   7.00-8.00   sec  3.00 GBytes  25.8 Gbits/sec    0   3.72 MBytes       
[  5]   8.00-9.00   sec  2.99 GBytes  25.7 Gbits/sec    0   3.72 MBytes       
[  5]   9.00-10.00  sec  2.99 GBytes  25.7 Gbits/sec    0   3.72 MBytes       
- - - - - - - - - - - - - - - - - - - - - - - - -
[ ID] Interval           Transfer     Bitrate         Retr
[  5]   0.00-10.00  sec  29.8 GBytes  25.6 Gbits/sec    0             sender
[  5]   0.00-10.01  sec  29.8 GBytes  25.5 Gbits/sec                  receiver

iperf Done.
</details> <details><summary>2. iperf3 -c 192.168.16.152 -u -b 5G</summary>
# iperf3 -c 192.168.16.152 -u -b 5G
Connecting to host 192.168.16.152, port 5201
[  5] local 192.168.16.151 port 58877 connected to 192.168.16.152 port 5201
[ ID] Interval           Transfer     Bitrate         Total Datagrams
[  5]   0.00-1.00   sec   316 MBytes  2.65 Gbits/sec  228619  
[  5]   1.00-2.00   sec   317 MBytes  2.66 Gbits/sec  229287  
[  5]   2.00-3.00   sec   315 MBytes  2.65 Gbits/sec  228422  
[  5]   3.00-4.00   sec   364 MBytes  3.05 Gbits/sec  263482  
[  5]   4.00-5.00   sec   380 MBytes  3.19 Gbits/sec  275106  
[  5]   5.00-6.00   sec   374 MBytes  3.14 Gbits/sec  271097  
[  5]   6.00-7.00   sec   375 MBytes  3.14 Gbits/sec  271209  
[  5]   7.00-8.00   sec   378 MBytes  3.17 Gbits/sec  274073  
[  5]   8.00-9.00   sec   372 MBytes  3.12 Gbits/sec  269176  
[  5]   9.00-10.00  sec   372 MBytes  3.12 Gbits/sec  269731  
- - - - - - - - - - - - - - - - - - - - - - - - -
[ ID] Interval           Transfer     Bitrate         Jitter    Lost/Total Datagrams
[  5]   0.00-10.00  sec  3.48 GBytes  2.99 Gbits/sec  0.000 ms  0/2580202 (0%)  sender
[  5]   0.00-9.84   sec  3.24 GBytes  2.83 Gbits/sec  0.002 ms  176852/2580202 (6.9%)  receiver

iperf Done.
</details> <details><summary>3. ping 192.168.16.152 -c 10</summary>
# ping 192.168.16.152 -c 10
PING 192.168.16.152 (192.168.16.152) 56(84) bytes of data.
64 bytes from 192.168.16.152: icmp_seq=1 ttl=64 time=0.263 ms
64 bytes from 192.168.16.152: icmp_seq=2 ttl=64 time=0.266 ms
64 bytes from 192.168.16.152: icmp_seq=3 ttl=64 time=0.222 ms
64 bytes from 192.168.16.152: icmp_seq=4 ttl=64 time=0.235 ms
64 bytes from 192.168.16.152: icmp_seq=5 ttl=64 time=0.295 ms
64 bytes from 192.168.16.152: icmp_seq=6 ttl=64 time=0.293 ms
64 bytes from 192.168.16.152: icmp_seq=7 ttl=64 time=0.238 ms
64 bytes from 192.168.16.152: icmp_seq=8 ttl=64 time=0.275 ms
64 bytes from 192.168.16.152: icmp_seq=9 ttl=64 time=0.246 ms
64 bytes from 192.168.16.152: icmp_seq=10 ttl=64 time=0.274 ms

--- 192.168.16.152 ping statistics ---
10 packets transmitted, 10 received, 0% packet loss, time 9193ms
rtt min/avg/max/mdev = 0.222/0.260/0.295/0.023 ms
</details>

I would like to thank all the excellent developers and contributors who created PacketRusher and other great systems and tools.

<a id="changelog"></a>

Changelog (summary)