laforge has submitted this change. (
https://gerrit.osmocom.org/c/upf-benchmark/+/39590?usp=email )
Change subject: testsuites/gtplab-sysmo2025/tunend: Initial eupf setup
......................................................................
testsuites/gtplab-sysmo2025/tunend: Initial eupf setup
Change-Id: I82ebaa785c67fc7a28a0e71eac55fe31a21d13d5
---
A doc/manuals/chapters/eupf_setup.adoc
M doc/manuals/upfbenchmark-usermanual.adoc
A testsuites/gtplab-sysmo2025/tunend/upf/eupf/configure.sh
A testsuites/gtplab-sysmo2025/tunend/upf/eupf/eupf.yaml
A testsuites/gtplab-sysmo2025/tunend/upf/eupf/run.sh
5 files changed, 119 insertions(+), 0 deletions(-)
Approvals:
osmith: Looks good to me, but someone else must approve
laforge: Looks good to me, approved
Jenkins Builder: Verified
diff --git a/doc/manuals/chapters/eupf_setup.adoc b/doc/manuals/chapters/eupf_setup.adoc
new file mode 100644
index 0000000..2a07b00
--- /dev/null
+++ b/doc/manuals/chapters/eupf_setup.adoc
@@ -0,0 +1,52 @@
+[[eupf_setup]]
+== eupf setup
+
+[[eupf_install]]
+=== eupf install
+
+Install eupf dependencies:
+----
+$ sudo apt install wget git clang llvm gcc-multilib libbpf-dev
+----
+
+Download eupf:
+----
+$ mkdir $HOME/git
+$ cd $HOME/git
+$ git clone
https://github.com/edgecomllc/eupf.git
+----
+
+Install swag:
+----
+$ cd $HOME
+$ go install
github.com/swaggo/swag/cmd/swag@v1.8.12
+----
+
+Add to .bashrc:
+----
+$ export PATH="${HOME}/go/bin:/usr/local/go/bin:${PATH}"
+----
+
+Build & install eupf:
+----
+$ cd ~/git/eupf
+$ go generate -v ./cmd/...
+$ go build -v -o bin/eupf ./cmd/
+$ sudo cp bin/eupf /usr/local/bin/eupf
+----
+
+[[eupf_debug]]
+=== eupf debug
+
+To enable XDP tracing, recompile like this:
+----
+$ cd ~/git/eupf
+$ BPF_CFLAGS="-DENABLE_LOG" go generate -v ./cmd/...
+$ go build -v -o bin/eupf ./cmd/
+$ sudo cp bin/eupf /usr/local/bin/eupf
+----
+
+Then start eupf, run the test, cat will keep reading until killed, and you'll get
output generated by the xdp code:
+----
+$ cat /sys/kernel/debug/tracing/trace_pipe
+----
diff --git a/doc/manuals/upfbenchmark-usermanual.adoc
b/doc/manuals/upfbenchmark-usermanual.adoc
index 9445fa2..3817acc 100644
--- a/doc/manuals/upfbenchmark-usermanual.adoc
+++ b/doc/manuals/upfbenchmark-usermanual.adoc
@@ -13,6 +13,8 @@
include::{srcdir}/chapters/osmo_upf_setup.adoc[]
+include::{srcdir}/chapters/eupf_setup.adoc[]
+
include::./common/chapters/vty.adoc[]
include::./common/chapters/logging.adoc[]
diff --git a/testsuites/gtplab-sysmo2025/tunend/upf/eupf/configure.sh
b/testsuites/gtplab-sysmo2025/tunend/upf/eupf/configure.sh
new file mode 100755
index 0000000..fcadf89
--- /dev/null
+++ b/testsuites/gtplab-sysmo2025/tunend/upf/eupf/configure.sh
@@ -0,0 +1,45 @@
+#!/bin/bash -xe
+
+# Interface towards UPF:
+IFACE_RAN="enp2s0f1np1"
+IFACE_CN="enp2s0f0np0"
+ADDR_GW_CN="172.16.31.200"
+NUM_ENB=100
+
+# Disable ethernet flow control:
+sudo ethtool -A $IFACE_RAN autoneg off rx off tx off
+sudo ethtool -A $IFACE_CN autoneg off rx off tx off
+# Disable GRO / LRO:
+sudo ethtool -K $IFACE_RAN gro off lro off
+sudo ethtool -K $IFACE_CN gro off lro off
+# Increase NIC buffers:
+sudo ethtool -G $IFACE_RAN rx 8192 tx 8192
+sudo ethtool -G $IFACE_CN rx 8192 tx 8192
+
+# Enable IP forwarding:
+sudo sysctl -w net.ipv4.ip_forward=1
+
+# Increase UDP buffer memory:
+sudo sysctl -w net.ipv4.udp_mem="763563 900000000 1000000000"
+sudo sysctl -w net.core.optmem_max=16000000
+sudo sysctl -w net.core.rmem_max=2000000000
+sudo sysctl -w net.core.rmem_default=2000000000
+sudo sysctl -w net.core.wmem_max=2000000000
+sudo sysctl -w net.core.wmem_default=2000000000
+sudo sysctl -w net.core.netdev_max_backlog=2000
+sudo sysctl -w net.core.netdev_budget=600
+
+# Set up UPF address:
+sudo ip addr add 172.16.32.1/24 dev $IFACE_RAN || true
+sudo ip addr add 172.16.31.2/24 dev $IFACE_CN || true
+
+# TRex doesn't answer ARPs, so we need to set up the peers:
+for i in $(seq "2" "$((NUM_ENB + 1))"); do
+ # Delete needed to potentially drop incomplet entries created when trying to Tx
traffic:
+ sudo ip neigh del "$(printf "172.16.32.%02u" "$i")"
lladdr ec:0d:9a:8a:27:52 nud permanent dev $IFACE_RAN || true
+ sudo ip neigh add "$(printf "172.16.32.%02u" "$i")"
lladdr ec:0d:9a:8a:27:52 nud permanent dev $IFACE_RAN || true
+done
+sudo ip neigh add 172.16.31.200 lladdr ec:0d:9a:8a:27:53 nud permanent dev $IFACE_CN ||
true
+
+# Add route towards HTTP server on the CN side, aka "the Internet"
+sudo ip route add 48.0.0.0/16 via $ADDR_GW_CN dev $IFACE_CN || true
diff --git a/testsuites/gtplab-sysmo2025/tunend/upf/eupf/eupf.yaml
b/testsuites/gtplab-sysmo2025/tunend/upf/eupf/eupf.yaml
new file mode 100644
index 0000000..2d41730
--- /dev/null
+++ b/testsuites/gtplab-sysmo2025/tunend/upf/eupf/eupf.yaml
@@ -0,0 +1,15 @@
+interface_name: [enp2s0f0np0, enp2s0f1np1]
+xdp_attach_mode: native
+api_address: :8080
+pfcp_address: 172.16.31.2:8805
+pfcp_node_id: 172.16.31.2
+metrics_address: :9090
+n3_address: 172.16.32.1
+n9_address: 172.16.31.2
+qer_map_size: 4000000
+far_map_size: 4000000
+pdr_map_size: 4000000
+feature_ueip: false
+feature_ftup: true
+teid_pool: 4000000
+logging_level: 2
\ No newline at end of file
diff --git a/testsuites/gtplab-sysmo2025/tunend/upf/eupf/run.sh
b/testsuites/gtplab-sysmo2025/tunend/upf/eupf/run.sh
new file mode 100755
index 0000000..1532b76
--- /dev/null
+++ b/testsuites/gtplab-sysmo2025/tunend/upf/eupf/run.sh
@@ -0,0 +1,5 @@
+#!/bin/bash -xe
+
+SCRIPT_DIR=$( cd -- "$( dirname -- "${BASH_SOURCE[0]}" )" &>
/dev/null && pwd )
+
+sudo eupf --config "$SCRIPT_DIR/eupf.yaml"
--
To view, visit
https://gerrit.osmocom.org/c/upf-benchmark/+/39590?usp=email
To unsubscribe, or for help writing mail filters, visit
https://gerrit.osmocom.org/settings?usp=email
Gerrit-MessageType: merged
Gerrit-Project: upf-benchmark
Gerrit-Branch: master
Gerrit-Change-Id: I82ebaa785c67fc7a28a0e71eac55fe31a21d13d5
Gerrit-Change-Number: 39590
Gerrit-PatchSet: 3
Gerrit-Owner: pespin <pespin(a)sysmocom.de>
Gerrit-Reviewer: Jenkins Builder
Gerrit-Reviewer: laforge <laforge(a)osmocom.org>
Gerrit-Reviewer: osmith <osmith(a)sysmocom.de>