laforge has submitted this change. (
https://gerrit.osmocom.org/c/upf-benchmark/+/38353?usp=email )
Change subject: Initial tunend and tunmap testsuites for osmo-upf
......................................................................
Initial tunend and tunmap testsuites for osmo-upf
Change-Id: Iffe344975fa16621959f7306e095451e4421de26
---
A testsuites/gtplab-sysmo2017/overview_only_tunend.dot
A testsuites/gtplab-sysmo2017/overview_only_tunmap.dot
A testsuites/gtplab-sysmo2017/overview_tunmap_and_tunend.dot
A testsuites/gtplab-sysmo2017/tunend/cn/configure.sh
A testsuites/gtplab-sysmo2017/tunend/cn/run.sh
A testsuites/gtplab-sysmo2017/tunend/osmo-pfcp-tool.cfg
A testsuites/gtplab-sysmo2017/tunend/ran/0.gtp_flood.vty
A testsuites/gtplab-sysmo2017/tunend/ran/configure.sh
A testsuites/gtplab-sysmo2017/tunend/ran/osmo-pfcp-tool.cfg
A testsuites/gtplab-sysmo2017/tunend/ran/run.sh
A testsuites/gtplab-sysmo2017/tunend/upf/configure.sh
A testsuites/gtplab-sysmo2017/tunend/upf/eupf/1.eupf.yaml
A testsuites/gtplab-sysmo2017/tunend/upf/eupf/1.run_eupf.sh
A testsuites/gtplab-sysmo2017/tunend/upf/osmo-upf/osmo-upf.cfg
A testsuites/gtplab-sysmo2017/tunend/upf/osmo-upf/run.sh
A testsuites/gtplab-sysmo2017/tunmap/cn/configure.sh
A testsuites/gtplab-sysmo2017/tunmap/cn/run.sh
A testsuites/gtplab-sysmo2017/tunmap/ran/0.gtp_flood.vty
A testsuites/gtplab-sysmo2017/tunmap/ran/configure.sh
A testsuites/gtplab-sysmo2017/tunmap/ran/osmo-pfcp-tool.cfg
A testsuites/gtplab-sysmo2017/tunmap/ran/run.sh
A testsuites/gtplab-sysmo2017/tunmap/upf/configure.sh
A testsuites/gtplab-sysmo2017/tunmap/upf/eupf/1.eupf.yaml
A testsuites/gtplab-sysmo2017/tunmap/upf/eupf/1.run_eupf.sh
A testsuites/gtplab-sysmo2017/tunmap/upf/osmo-upf/osmo-upf.cfg
A testsuites/gtplab-sysmo2017/tunmap/upf/osmo-upf/run.sh
26 files changed, 722 insertions(+), 0 deletions(-)
Approvals:
laforge: Looks good to me, approved; Verified
diff --git a/testsuites/gtplab-sysmo2017/overview_only_tunend.dot
b/testsuites/gtplab-sysmo2017/overview_only_tunend.dot
new file mode 100644
index 0000000..067f091
--- /dev/null
+++ b/testsuites/gtplab-sysmo2017/overview_only_tunend.dot
@@ -0,0 +1,35 @@
+digraph G {
+ rankdir=TB;
+ labelloc=t;
+ label="gtplab @ sysmocom";
+
+ subgraph cluster_gtplab0 {
+ label="gtplab0";
+ rankdir=TB;
+ gtplab0_172_31 [label="172.16.31.1/24"];
+ tool [label="osmo-pfcp-tool",shape=box3d];
+ }
+ subgraph cluster_gtplab1 {
+ label="gtplab1";
+ gtplab1_172_31 [label="172.16.31.2/24"];
+ gtplab1_172_32 [label="172.16.32.1/24"];
+
+ upf_tunend [label="UPF\ntunend",shape=box3d];
+ }
+ subgraph cluster_gtplab2 {
+ label="gtplab2";
+ gtplab2_172_32 [label="172.16.32.2/24"];
+
+ responder [label="osmo-udp-responder",shape=box3d];
+ }
+
+
+ tool -> gtplab0_172_31 -> gtplab1_172_31 -> upf_tunend [label="PFCP",
dir=both];
+
+ tool -> gtplab0_172_31 -> gtplab1_172_31 -> upf_tunend [label="GTP
tun",style=bold];
+ upf_tunend -> gtplab1_172_32 -> gtplab2_172_32 -> responder
[label="UDP/IP",style=bold];
+
+ tool -> gtplab0_172_31 -> gtplab1_172_31 -> upf_tunend
[style=dotted,dir=back];
+ upf_tunend -> gtplab1_172_32 -> gtplab2_172_32 -> responder
[style=dotted,dir=back];
+
+}
diff --git a/testsuites/gtplab-sysmo2017/overview_only_tunmap.dot
b/testsuites/gtplab-sysmo2017/overview_only_tunmap.dot
new file mode 100644
index 0000000..96d5dcf
--- /dev/null
+++ b/testsuites/gtplab-sysmo2017/overview_only_tunmap.dot
@@ -0,0 +1,37 @@
+digraph G {
+ rankdir=TB;
+ labelloc=t;
+ label="gtplab @ sysmocom";
+
+ subgraph cluster_gtplab0 {
+ label="gtplab0";
+ rankdir=TB;
+ gtplab0_172_31 [label="172.16.31.1/24"];
+ tool [label="osmo-pfcp-tool",shape=box3d];
+ insert_teid [label="insert return TEID\nin UDP payload",shape=note];
+ }
+ subgraph cluster_gtplab1 {
+ label="gtplab1";
+ gtplab1_172_31 [label="172.16.31.2/24"];
+ gtplab1_172_32 [label="172.16.32.1/24"];
+
+ upf_tunmap [label="UPF\ntunmap",shape=box3d];
+ }
+ subgraph cluster_gtplab2 {
+ label="gtplab2";
+ gtplab2_172_32 [label="172.16.32.2/24"];
+
+ responder [label="osmo-udp-responder",shape=box3d];
+ send_to_teid [label="use TEID from\nUDP payload",shape=note];
+ }
+
+
+ tool -> gtplab0_172_31 -> gtplab1_172_31 -> upf_tunmap [label="PFCP",
dir=both];
+
+ tool -> insert_teid -> gtplab0_172_31 -> gtplab1_172_31 -> upf_tunmap
[label="GTP tun",style=bold];
+ upf_tunmap -> gtplab1_172_32 -> gtplab2_172_32 -> responder [label="GTP
tun",style=bold];
+
+ tool -> gtplab0_172_31 -> gtplab1_172_31 -> upf_tunmap
[style=dotted,dir=back];
+ upf_tunmap -> gtplab1_172_32 -> gtplab2_172_32 -> send_to_teid -> responder
[style=dotted,dir=back];
+
+}
diff --git a/testsuites/gtplab-sysmo2017/overview_tunmap_and_tunend.dot
b/testsuites/gtplab-sysmo2017/overview_tunmap_and_tunend.dot
new file mode 100644
index 0000000..6d82dd9
--- /dev/null
+++ b/testsuites/gtplab-sysmo2017/overview_tunmap_and_tunend.dot
@@ -0,0 +1,43 @@
+digraph G {
+ rankdir=TB;
+ labelloc=t;
+ label="gtplab @ sysmocom";
+
+ subgraph cluster_gtplab0 {
+ label="gtplab0";
+ rankdir=TB;
+ gtplab0_10 [label="10.9.25.20/24"];
+ gtplab0_172_31 [label="172.16.31.1/24"];
+ tool [label="osmo-pfcp-tool",shape=box3d];
+ }
+ subgraph cluster_gtplab1 {
+ label="gtplab1";
+ gtplab1_10 [label="10.9.25.21/24"];
+ gtplab1_172_31 [label="172.16.31.2/24"];
+ gtplab1_172_32 [label="172.16.32.1/24"];
+
+ upf1 [label="UPF\ntunmap",shape=box3d];
+ }
+ subgraph cluster_gtplab2 {
+ label="gtplab2";
+ gtplab2_10 [label="10.9.25.22/24"];
+ gtplab2_172_32 [label="172.16.32.2/24"];
+
+ upf2 [label="UPF\ntunend",shape=box3d];
+
+ responder [label="osmo-udp-responder",shape=box3d];
+ }
+
+
+ tool -> gtplab0_10 -> gtplab1_10 -> upf1 [label="PFCP", dir=both];
+ gtplab0_10 -> gtplab2_10 -> upf2 [label="PFCP", dir=both];
+
+ tool -> gtplab0_172_31 -> gtplab1_172_31 -> upf1 [label="GTP
tun",style=bold];
+ upf1 -> gtplab1_172_32 -> gtplab2_172_32 -> upf2 [label="GTP
tun",style=bold];
+ upf2 -> responder [label="UDP/IP",style=bold];
+
+ upf2 -> responder [style=dotted,dir=back];
+ upf1 -> gtplab1_172_32 -> gtplab2_172_32 -> upf2 [style=dotted,dir=back];
+ tool -> gtplab0_172_31 -> gtplab1_172_31 -> upf1 [style=dotted,dir=back];
+
+}
diff --git a/testsuites/gtplab-sysmo2017/tunend/cn/configure.sh
b/testsuites/gtplab-sysmo2017/tunend/cn/configure.sh
new file mode 100755
index 0000000..256bd14
--- /dev/null
+++ b/testsuites/gtplab-sysmo2017/tunend/cn/configure.sh
@@ -0,0 +1,29 @@
+#!/bin/bash -xe
+
+# Interface towards UPF:
+IFACE_UPF="enp2s0f0np0"
+IPADR_UPF="172.16.32.1"
+NUM_CN=50
+
+# Disable ethernet flow control:
+sudo ethtool -A $IFACE_UPF autoneg off rx off tx off
+# Increase NIC buffers:
+sudo ethtool -G $IFACE_UPF rx 8192 tx 8192
+# Increase Adapter Transmit Queue:
+sudo ip link set dev $IFACE_UPF txqueuelen 2000
+
+# 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 CN IP addresses:
+for i in $(seq "0" "$((NUM_CN - 1))"); do
+ sudo ip addr add "$(printf "172.16.32.2%02u/24" $i)" brd
172.16.32.255 dev $IFACE_UPF || true;
+done
+sudo ip route add 192.168.0.0/16 via $IPADR_UPF dev $IFACE_UPF
diff --git a/testsuites/gtplab-sysmo2017/tunend/cn/run.sh
b/testsuites/gtplab-sysmo2017/tunend/cn/run.sh
new file mode 100755
index 0000000..dab8b3c
--- /dev/null
+++ b/testsuites/gtplab-sysmo2017/tunend/cn/run.sh
@@ -0,0 +1,2 @@
+#!/bin/bash -xe
+osmo-udp-responder -l 0.0.0.0 -p 23000 --io-uring-queue 16000 --workers 6 -n 1 -a
diff --git a/testsuites/gtplab-sysmo2017/tunend/osmo-pfcp-tool.cfg
b/testsuites/gtplab-sysmo2017/tunend/osmo-pfcp-tool.cfg
new file mode 100644
index 0000000..6e80e6e
--- /dev/null
+++ b/testsuites/gtplab-sysmo2017/tunend/osmo-pfcp-tool.cfg
@@ -0,0 +1,12 @@
+log stderr
+ logging color 1
+ logging print category-hex 0
+ logging print category 1
+ logging timestamp 0
+ logging print file basename last
+ logging print level 1
+ logging level set-all info
+ logging level lpfcp error
+
+local-addr 0.0.0.0
+listen
diff --git a/testsuites/gtplab-sysmo2017/tunend/ran/0.gtp_flood.vty
b/testsuites/gtplab-sysmo2017/tunend/ran/0.gtp_flood.vty
new file mode 100644
index 0000000..9d197ab
--- /dev/null
+++ b/testsuites/gtplab-sysmo2017/tunend/ran/0.gtp_flood.vty
@@ -0,0 +1,135 @@
+# Establish N PFCP sessions for tunend, and emit massive GTP traffic to the UPF
+# to each established tunnel.
+#
+# osmo-pfcp-tool UPF "internet host"
+# |GTP-ep -------GTP-----> GTP-ep|UE-IP-addr -------IP------> arbitrary-IP|
+# |10.0.1.1 10.0.2.1|192.168.10.23 123.234.42.23|
+# |10.0.1.2
+# ^ ^ ^
+# ^ | | |
+# | | configure by configure by
+# configure by from UPF 'ue ip' 'payload target
ip',
+# 'gtp ip' ("F-TEID=choose")
'payload target port'
+
+# Configure CPU related settings:
+cpu-sched
+ !policy rr 18
+ ! All Rx in hyperthreads within same cores:
+ ! core-id=0, processor=0:
+ cpu-affinity GtpFloodTx0 0x0001 delay
+ ! core-id=0, processor=6:
+ cpu-affinity GtpFloodTx1 0x0040 delay
+ ! core-id=1, processor=1:
+ cpu-affinity GtpFloodTx2 0x0002 delay
+ ! core-id=1, processor=7:
+ cpu-affinity GtpFloodTx3 0x0080 delay
+ ! core-id=2, processor=2:
+ cpu-affinity GtpFloodTx4 0x0004 delay
+ ! core-id=2, processor=8: SPARE
+ ! core-id=3, processor=3:
+ cpu-affinity GtpFloodRx0 0x0008 delay
+ ! core-id=3, processor=9:
+ cpu-affinity GtpFloodRx1 0x0200 delay
+ ! core-id=4, processor=4:
+ cpu-affinity GtpFloodRx2 0x0010 delay
+ ! core-id=4, processor=10:
+ cpu-affinity GtpFloodRx3 0x0400 delay
+ ! core-id=5, processor=5:
+ cpu-affinity GtpFloodRx4 0x0020 delay
+ ! core-id=2, processor=11: SPARE
+
+# Configure one or more local GTP endpoints to emit GTP packets from.
+# Established sessions will use these round-robin.
+# These need to be local IP addresses for 'gtp flood' to work.
+gtp local 172.16.31.100
+gtp local 172.16.31.101
+gtp local 172.16.31.102
+gtp local 172.16.31.103
+gtp local 172.16.31.104
+gtp local 172.16.31.105
+gtp local 172.16.31.106
+gtp local 172.16.31.107
+gtp local 172.16.31.108
+gtp local 172.16.31.109
+gtp local 172.16.31.110
+gtp local 172.16.31.111
+gtp local 172.16.31.112
+gtp local 172.16.31.113
+gtp local 172.16.31.114
+gtp local 172.16.31.115
+gtp local 172.16.31.116
+gtp local 172.16.31.117
+gtp local 172.16.31.118
+gtp local 172.16.31.119
+gtp local 172.16.31.120
+gtp local 172.16.31.121
+gtp local 172.16.31.122
+gtp local 172.16.31.123
+gtp local 172.16.31.124
+gtp local 172.16.31.125
+gtp local 172.16.31.126
+gtp local 172.16.31.127
+gtp local 172.16.31.128
+gtp local 172.16.31.129
+gtp local 172.16.31.130
+gtp local 172.16.31.131
+gtp local 172.16.31.132
+gtp local 172.16.31.133
+gtp local 172.16.31.134
+gtp local 172.16.31.135
+gtp local 172.16.31.136
+gtp local 172.16.31.137
+gtp local 172.16.31.138
+gtp local 172.16.31.139
+gtp local 172.16.31.140
+gtp local 172.16.31.141
+gtp local 172.16.31.142
+gtp local 172.16.31.143
+gtp local 172.16.31.144
+gtp local 172.16.31.145
+gtp local 172.16.31.146
+gtp local 172.16.31.147
+gtp local 172.16.31.148
+gtp local 172.16.31.149
+gtp local 172.16.31.150
+
+gtp core 172.16.32.2
+
+# use UE IP addresses from this range, +1 for each new UE:
+# 192.168.0.1, 192.168.0.2, ...
+ue ip range 192.168.1.2 192.168.254.254
+
+# now associate with UPF and start N sessions.
+pfcp-peer 172.16.31.2
+ tx assoc-setup-req
+ sleep 1
+ date
+
+ n 50000 session create tunend
+ wait responses
+ # All sessions established
+ date
+
+# For each established PFCP session, emit GTP packets
+gtp flood
+ rx-workers 5
+ tx-workers 5
+ io-uring queue-size 4000
+ flows-per-session 1
+ packets-per-flow infinite
+
+ # configure the generated GTP payload: send UDP packets from the UE address
+ # and these source UDP ports to these target addresses and target UDP ports.
+ # They are used round-robin.
+ # Source IP is the UE IP address.
+ payload source port udp range 10000 10010
+ payload target ip range 172.16.32.200 172.16.32.223
+ payload target port udp range 23000 23000
+
+date
+# All GTP is flowing.
+# osmo-pfcp-tool will keep this up for as long as there still are active GTP flows,
+# or until receiving a signal interrupt (ctrl-C).
+
+# give some time to gather counters before the tunnel is removed
+sleep 1
diff --git a/testsuites/gtplab-sysmo2017/tunend/ran/configure.sh
b/testsuites/gtplab-sysmo2017/tunend/ran/configure.sh
new file mode 100755
index 0000000..4b80fab
--- /dev/null
+++ b/testsuites/gtplab-sysmo2017/tunend/ran/configure.sh
@@ -0,0 +1,27 @@
+#!/bin/bash -xe
+
+# Interface towards UPF:
+IFACE_UPF="enp2s0f0np0"
+NUM_ENB=50
+
+# Disable ethernet flow control:
+sudo ethtool -A $IFACE_UPF autoneg off rx off tx off
+# Increase NIC buffers:
+sudo ethtool -G $IFACE_UPF rx 8192 tx 8192
+# Increase Adapter Transmit Queue:
+sudo ip link set dev $IFACE_UPF txqueuelen 2000
+
+# 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 IP addresses:
+for i in $(seq "0" "$((NUM_ENB - 1))"); do
+ sudo ip addr add "$(printf "172.16.31.1%02u/24" $i)" dev $IFACE_UPF
|| true;
+done
diff --git a/testsuites/gtplab-sysmo2017/tunend/ran/osmo-pfcp-tool.cfg
b/testsuites/gtplab-sysmo2017/tunend/ran/osmo-pfcp-tool.cfg
new file mode 100644
index 0000000..6e80e6e
--- /dev/null
+++ b/testsuites/gtplab-sysmo2017/tunend/ran/osmo-pfcp-tool.cfg
@@ -0,0 +1,12 @@
+log stderr
+ logging color 1
+ logging print category-hex 0
+ logging print category 1
+ logging timestamp 0
+ logging print file basename last
+ logging print level 1
+ logging level set-all info
+ logging level lpfcp error
+
+local-addr 0.0.0.0
+listen
diff --git a/testsuites/gtplab-sysmo2017/tunend/ran/run.sh
b/testsuites/gtplab-sysmo2017/tunend/ran/run.sh
new file mode 100755
index 0000000..cfd313c
--- /dev/null
+++ b/testsuites/gtplab-sysmo2017/tunend/ran/run.sh
@@ -0,0 +1,5 @@
+#!/bin/bash -xe
+
+SCRIPT_DIR=$( cd -- "$( dirname -- "${BASH_SOURCE[0]}" )" &>
/dev/null && pwd )
+
+osmo-pfcp-tool -c "$SCRIPT_DIR/osmo-pfcp-tool.cfg"
"$SCRIPT_DIR/0.gtp_flood.vty"
\ No newline at end of file
diff --git a/testsuites/gtplab-sysmo2017/tunend/upf/configure.sh
b/testsuites/gtplab-sysmo2017/tunend/upf/configure.sh
new file mode 100755
index 0000000..dd48c7e
--- /dev/null
+++ b/testsuites/gtplab-sysmo2017/tunend/upf/configure.sh
@@ -0,0 +1,35 @@
+#!/bin/bash -xe
+
+# Interface towards UPF:
+IFACE_RAN="enp2s0f0np0"
+IFACE_CN="enp2s0f1np1"
+IFACE_APN="apn-flood"
+
+# 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
+# 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.31.2/24 dev $IFACE_RAN || true;
+sudo ip addr add 172.16.32.1/24 dev $IFACE_CN || true;
+
+# Set up UE IP routes:
+# FIXME: These 2 below need to be done *after* osmo-upf creates the iface....
+#sudo ip addr add 192.168.1.1/16 dev $IFACE_APN
+sudo ip route add 192.168.0.0/16 dev $IFACE_APN
diff --git a/testsuites/gtplab-sysmo2017/tunend/upf/eupf/1.eupf.yaml
b/testsuites/gtplab-sysmo2017/tunend/upf/eupf/1.eupf.yaml
new file mode 100644
index 0000000..cd49159
--- /dev/null
+++ b/testsuites/gtplab-sysmo2017/tunend/upf/eupf/1.eupf.yaml
@@ -0,0 +1,13 @@
+interface_name: [enp2s0f0np0]
+xdp_attach_mode: generic
+api_address: :8080
+pfcp_address: 172.16.31.2:8805
+pfcp_node_id: 172.16.31.2
+metrics_address: :9090
+n3_address: 172.16.31.2
+qer_map_size: 1000000
+far_map_size: 1000000
+pdr_map_size: 1000000
+feature_ueip: true
+feature_ftup: true
+teid_pool: 1000000
diff --git a/testsuites/gtplab-sysmo2017/tunend/upf/eupf/1.run_eupf.sh
b/testsuites/gtplab-sysmo2017/tunend/upf/eupf/1.run_eupf.sh
new file mode 100755
index 0000000..12e0b27
--- /dev/null
+++ b/testsuites/gtplab-sysmo2017/tunend/upf/eupf/1.run_eupf.sh
@@ -0,0 +1,3 @@
+#!/bin/sh
+set -x
+sudo eupf --config 1.eupf.yaml
diff --git a/testsuites/gtplab-sysmo2017/tunend/upf/osmo-upf/osmo-upf.cfg
b/testsuites/gtplab-sysmo2017/tunend/upf/osmo-upf/osmo-upf.cfg
new file mode 100644
index 0000000..b1f5804
--- /dev/null
+++ b/testsuites/gtplab-sysmo2017/tunend/upf/osmo-upf/osmo-upf.cfg
@@ -0,0 +1,25 @@
+log stderr
+ logging filter all 1
+ logging color 1
+ logging print category-hex 0
+ logging print category 1
+ logging timestamp 0
+ logging print file basename last
+ logging print level 1
+ logging level set-all notice
+ logging level set-all info
+ logging level session debug
+ logging level nft debug
+ logging level gtp debug
+ logging level set-all error
+
+line vty
+ bind 127.0.0.1
+ctrl
+ bind 127.0.0.1
+
+timer pfcp x24 5000
+pfcp
+ local-addr 172.16.31.2
+tunend
+ dev create apn-flood 172.16.31.2
diff --git a/testsuites/gtplab-sysmo2017/tunend/upf/osmo-upf/run.sh
b/testsuites/gtplab-sysmo2017/tunend/upf/osmo-upf/run.sh
new file mode 100755
index 0000000..41f4616
--- /dev/null
+++ b/testsuites/gtplab-sysmo2017/tunend/upf/osmo-upf/run.sh
@@ -0,0 +1,5 @@
+#!/bin/bash -xe
+
+SCRIPT_DIR=$( cd -- "$( dirname -- "${BASH_SOURCE[0]}" )" &>
/dev/null && pwd )
+
+sudo osmo-upf -c "$SCRIPT_DIR/osmo-upf.cfg"
diff --git a/testsuites/gtplab-sysmo2017/tunmap/cn/configure.sh
b/testsuites/gtplab-sysmo2017/tunmap/cn/configure.sh
new file mode 100755
index 0000000..15dd2f8
--- /dev/null
+++ b/testsuites/gtplab-sysmo2017/tunmap/cn/configure.sh
@@ -0,0 +1,27 @@
+#!/bin/bash -xe
+
+# Interface towards UPF:
+IFACE_UPF="enp2s0f0np0"
+NUM_CN=50
+
+# Disable ethernet flow control:
+sudo ethtool -A $IFACE_UPF autoneg off rx off tx off
+# Increase NIC buffers:
+sudo ethtool -G $IFACE_UPF rx 8192 tx 8192
+# Increase Adapter Transmit Queue:
+sudo ip link set dev $IFACE_UPF txqueuelen 2000
+
+# 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 CN IP addresses:
+for i in $(seq "0" "$((NUM_CN - 1))"); do
+ sudo ip addr add "$(printf "172.16.32.2%02u/24" $i)" brd
172.16.32.255 dev $IFACE_UPF || true;
+done
diff --git a/testsuites/gtplab-sysmo2017/tunmap/cn/run.sh
b/testsuites/gtplab-sysmo2017/tunmap/cn/run.sh
new file mode 100755
index 0000000..8d1c14d
--- /dev/null
+++ b/testsuites/gtplab-sysmo2017/tunmap/cn/run.sh
@@ -0,0 +1,3 @@
+#!/bin/bash -xe
+
+osmo-udp-responder -l 0.0.0.0 -p 2152 --io-uring-queue 16000 --workers 6 -n 1 -a
diff --git a/testsuites/gtplab-sysmo2017/tunmap/ran/0.gtp_flood.vty
b/testsuites/gtplab-sysmo2017/tunmap/ran/0.gtp_flood.vty
new file mode 100644
index 0000000..611065c
--- /dev/null
+++ b/testsuites/gtplab-sysmo2017/tunmap/ran/0.gtp_flood.vty
@@ -0,0 +1,155 @@
+# Establish N PFCP sessions for tunmap, and emit massive GTP traffic to the UPF
+# to each established tunnel.
+#
+# osmo-pfcp-tool UPF "core"
+# |GTP-ep -------GTP-----> GTP-ep|GTP-ep ----------IP------> GTP-ep
+# |10.0.1.1 10.0.2.1|10.0.3.1 10.0.3.2
+# |10.0.1.2
+# ^ ^ ^
+# ^ | | |
+# | | / configure by
+# configure by from UPF 'gtp core'
+# 'gtp ip' ("F-TEID=choose")
+
+# Configure CPU related settings:
+cpu-sched
+ !policy rr 18
+ ! All Rx in hyperthreads within same cores:
+ ! core-id=0, processor=0:
+ cpu-affinity GtpFloodTx0 0x0001 delay
+ ! core-id=0, processor=6:
+ cpu-affinity GtpFloodTx1 0x0040 delay
+ ! core-id=1, processor=1:
+ cpu-affinity GtpFloodTx2 0x0002 delay
+ ! core-id=1, processor=7:
+ cpu-affinity GtpFloodTx3 0x0080 delay
+ ! core-id=2, processor=2:
+ cpu-affinity GtpFloodTx4 0x0004 delay
+ ! core-id=2, processor=8: SPARE
+ ! core-id=3, processor=3:
+ cpu-affinity GtpFloodRx0 0x0008 delay
+ ! core-id=3, processor=9:
+ cpu-affinity GtpFloodRx1 0x0200 delay
+ ! core-id=4, processor=4:
+ cpu-affinity GtpFloodRx2 0x0010 delay
+ ! core-id=4, processor=10:
+ cpu-affinity GtpFloodRx3 0x0400 delay
+ ! core-id=5, processor=5:
+ cpu-affinity GtpFloodRx4 0x0020 delay
+ ! core-id=2, processor=11: SPARE
+
+# Configure one or more local GTP endpoints to emit GTP packets from.
+# Established sessions will use these round-robin.
+# These need to be local IP addresses for 'gtp flood' to work.
+gtp local 172.16.31.100
+gtp local 172.16.31.101
+gtp local 172.16.31.102
+gtp local 172.16.31.103
+gtp local 172.16.31.104
+gtp local 172.16.31.105
+gtp local 172.16.31.106
+gtp local 172.16.31.107
+gtp local 172.16.31.108
+gtp local 172.16.31.109
+gtp local 172.16.31.110
+gtp local 172.16.31.111
+gtp local 172.16.31.112
+gtp local 172.16.31.113
+gtp local 172.16.31.114
+gtp local 172.16.31.115
+gtp local 172.16.31.116
+gtp local 172.16.31.117
+gtp local 172.16.31.118
+gtp local 172.16.31.119
+gtp local 172.16.31.120
+gtp local 172.16.31.121
+gtp local 172.16.31.122
+gtp local 172.16.31.123
+gtp local 172.16.31.124
+gtp local 172.16.31.125
+gtp local 172.16.31.126
+gtp local 172.16.31.127
+gtp local 172.16.31.128
+gtp local 172.16.31.129
+gtp local 172.16.31.130
+gtp local 172.16.31.131
+gtp local 172.16.31.132
+gtp local 172.16.31.133
+gtp local 172.16.31.134
+gtp local 172.16.31.135
+gtp local 172.16.31.136
+gtp local 172.16.31.137
+gtp local 172.16.31.138
+gtp local 172.16.31.139
+gtp local 172.16.31.140
+gtp local 172.16.31.141
+gtp local 172.16.31.142
+gtp local 172.16.31.143
+gtp local 172.16.31.144
+gtp local 172.16.31.145
+gtp local 172.16.31.146
+gtp local 172.16.31.147
+gtp local 172.16.31.148
+gtp local 172.16.31.149
+gtp local 172.16.31.150
+
+gtp core 172.16.32.200
+gtp core 172.16.32.201
+gtp core 172.16.32.202
+gtp core 172.16.32.203
+gtp core 172.16.32.204
+gtp core 172.16.32.205
+gtp core 172.16.32.206
+gtp core 172.16.32.207
+gtp core 172.16.32.208
+gtp core 172.16.32.209
+gtp core 172.16.32.210
+gtp core 172.16.32.211
+gtp core 172.16.32.212
+gtp core 172.16.32.213
+gtp core 172.16.32.214
+gtp core 172.16.32.215
+gtp core 172.16.32.216
+gtp core 172.16.32.217
+gtp core 172.16.32.218
+gtp core 172.16.32.219
+gtp core 172.16.32.220
+gtp core 172.16.32.221
+gtp core 172.16.32.222
+gtp core 172.16.32.223
+
+ue ip range 192.168.1.2 192.168.254.254
+
+# now associate with UPF and start N sessions.
+pfcp-peer 172.16.31.2
+ tx assoc-setup-req
+ sleep 1
+ date
+
+ n 50 session create tunmap
+ wait responses
+ # All sessions established
+ date
+
+# For each established PFCP session, emit GTP packets
+gtp flood
+ rx-workers 5
+ tx-workers 5
+ io-uring queue-size 4000
+ flows-per-session 1
+ packets-per-flow infinite
+
+ # configure the generated GTP payload: include in the payload each tunnel's
+ # GTP TEID needed to correctly echo the GTP payload back with
+ # osmo-udp-responder.
+ payload append-info
+
+ #slew 10000
+
+date
+# All GTP is flowing.
+# osmo-pfcp-tool will keep this up for as long as there still are active GTP flows,
+# or until receiving a signal interrupt (ctrl-C).
+
+# give some time to gather counters before the tunnel is removed
+sleep 1
diff --git a/testsuites/gtplab-sysmo2017/tunmap/ran/configure.sh
b/testsuites/gtplab-sysmo2017/tunmap/ran/configure.sh
new file mode 100755
index 0000000..4b80fab
--- /dev/null
+++ b/testsuites/gtplab-sysmo2017/tunmap/ran/configure.sh
@@ -0,0 +1,27 @@
+#!/bin/bash -xe
+
+# Interface towards UPF:
+IFACE_UPF="enp2s0f0np0"
+NUM_ENB=50
+
+# Disable ethernet flow control:
+sudo ethtool -A $IFACE_UPF autoneg off rx off tx off
+# Increase NIC buffers:
+sudo ethtool -G $IFACE_UPF rx 8192 tx 8192
+# Increase Adapter Transmit Queue:
+sudo ip link set dev $IFACE_UPF txqueuelen 2000
+
+# 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 IP addresses:
+for i in $(seq "0" "$((NUM_ENB - 1))"); do
+ sudo ip addr add "$(printf "172.16.31.1%02u/24" $i)" dev $IFACE_UPF
|| true;
+done
diff --git a/testsuites/gtplab-sysmo2017/tunmap/ran/osmo-pfcp-tool.cfg
b/testsuites/gtplab-sysmo2017/tunmap/ran/osmo-pfcp-tool.cfg
new file mode 100644
index 0000000..6e80e6e
--- /dev/null
+++ b/testsuites/gtplab-sysmo2017/tunmap/ran/osmo-pfcp-tool.cfg
@@ -0,0 +1,12 @@
+log stderr
+ logging color 1
+ logging print category-hex 0
+ logging print category 1
+ logging timestamp 0
+ logging print file basename last
+ logging print level 1
+ logging level set-all info
+ logging level lpfcp error
+
+local-addr 0.0.0.0
+listen
diff --git a/testsuites/gtplab-sysmo2017/tunmap/ran/run.sh
b/testsuites/gtplab-sysmo2017/tunmap/ran/run.sh
new file mode 100755
index 0000000..277bb4a
--- /dev/null
+++ b/testsuites/gtplab-sysmo2017/tunmap/ran/run.sh
@@ -0,0 +1,5 @@
+#!/bin/bash -xe
+
+SCRIPT_DIR=$( cd -- "$( dirname -- "${BASH_SOURCE[0]}" )" &>
/dev/null && pwd )
+
+osmo-pfcp-tool -c "$SCRIPT_DIR/osmo-pfcp-tool.cfg"
"$SCRIPT_DIR/0.gtp_flood.vty"
diff --git a/testsuites/gtplab-sysmo2017/tunmap/upf/configure.sh
b/testsuites/gtplab-sysmo2017/tunmap/upf/configure.sh
new file mode 100755
index 0000000..f812c45
--- /dev/null
+++ b/testsuites/gtplab-sysmo2017/tunmap/upf/configure.sh
@@ -0,0 +1,29 @@
+#!/bin/bash -xe
+
+# Interface towards UPF:
+IFACE_RAN="enp2s0f0np0"
+IFACE_CN="enp2s0f1np1"
+
+# 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
+# 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.31.2/24 dev $IFACE_RAN || true;
+sudo ip addr add 172.16.32.1/24 dev $IFACE_CN || true;
diff --git a/testsuites/gtplab-sysmo2017/tunmap/upf/eupf/1.eupf.yaml
b/testsuites/gtplab-sysmo2017/tunmap/upf/eupf/1.eupf.yaml
new file mode 100644
index 0000000..8ff3444
--- /dev/null
+++ b/testsuites/gtplab-sysmo2017/tunmap/upf/eupf/1.eupf.yaml
@@ -0,0 +1,13 @@
+interface_name: [enp2s0f0np0,enp2s0f1np1]
+xdp_attach_mode: generic
+api_address: :8080
+pfcp_address: 172.16.31.2:8805
+pfcp_node_id: 172.16.31.2
+metrics_address: :9090
+n3_address: 172.16.31.2
+qer_map_size: 1000000
+far_map_size: 1000000
+pdr_map_size: 1000000
+feature_ueip: true
+feature_ftup: true
+teid_pool: 1000000
diff --git a/testsuites/gtplab-sysmo2017/tunmap/upf/eupf/1.run_eupf.sh
b/testsuites/gtplab-sysmo2017/tunmap/upf/eupf/1.run_eupf.sh
new file mode 100755
index 0000000..12e0b27
--- /dev/null
+++ b/testsuites/gtplab-sysmo2017/tunmap/upf/eupf/1.run_eupf.sh
@@ -0,0 +1,3 @@
+#!/bin/sh
+set -x
+sudo eupf --config 1.eupf.yaml
diff --git a/testsuites/gtplab-sysmo2017/tunmap/upf/osmo-upf/osmo-upf.cfg
b/testsuites/gtplab-sysmo2017/tunmap/upf/osmo-upf/osmo-upf.cfg
new file mode 100644
index 0000000..ef9050f
--- /dev/null
+++ b/testsuites/gtplab-sysmo2017/tunmap/upf/osmo-upf/osmo-upf.cfg
@@ -0,0 +1,25 @@
+log stderr
+ logging filter all 1
+ logging color 1
+ logging print category-hex 0
+ logging print category 1
+ logging timestamp 0
+ logging print file basename last
+ logging print level 1
+ logging level set-all notice
+ logging level set-all info
+ logging level session debug
+ logging level nft debug
+ logging level gtp debug
+ logging level set-all error
+
+line vty
+ bind 127.0.0.1
+ctrl
+ bind 127.0.0.1
+
+timer pfcp x24 5000
+pfcp
+ local-addr 172.16.31.2
+tunend
+ dev create gtp-echo
diff --git a/testsuites/gtplab-sysmo2017/tunmap/upf/osmo-upf/run.sh
b/testsuites/gtplab-sysmo2017/tunmap/upf/osmo-upf/run.sh
new file mode 100755
index 0000000..41f4616
--- /dev/null
+++ b/testsuites/gtplab-sysmo2017/tunmap/upf/osmo-upf/run.sh
@@ -0,0 +1,5 @@
+#!/bin/bash -xe
+
+SCRIPT_DIR=$( cd -- "$( dirname -- "${BASH_SOURCE[0]}" )" &>
/dev/null && pwd )
+
+sudo osmo-upf -c "$SCRIPT_DIR/osmo-upf.cfg"
--
To view, visit
https://gerrit.osmocom.org/c/upf-benchmark/+/38353?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: Iffe344975fa16621959f7306e095451e4421de26
Gerrit-Change-Number: 38353
Gerrit-PatchSet: 1
Gerrit-Owner: pespin <pespin(a)sysmocom.de>
Gerrit-Reviewer: laforge <laforge(a)osmocom.org>