pespin has submitted this change. ( https://gerrit.osmocom.org/c/upf-benchmark/+/39467?usp=email )
Change subject: Move new TRex based setup to its own gtplan-sysmo2025 dir ......................................................................
Move new TRex based setup to its own gtplan-sysmo2025 dir
Some documentation regardins the setups is added/improved.
Change-Id: Ia5adb2826c30a0a4c02b091e9907e48c309ebf05 --- A testsuites/gtplab-sysmo2017/README.md A testsuites/gtplab-sysmo2017/setup.dot D testsuites/gtplab-sysmo2017/trex-tunmap/README.md A testsuites/gtplab-sysmo2025/README.md A testsuites/gtplab-sysmo2025/setup.dot A testsuites/gtplab-sysmo2025/tunmap/README.md R testsuites/gtplab-sysmo2025/tunmap/cpf/0.gtp_flood.vty R testsuites/gtplab-sysmo2025/tunmap/cpf/configure.sh R testsuites/gtplab-sysmo2025/tunmap/cpf/osmo-upf-load-gen.cfg R testsuites/gtplab-sysmo2025/tunmap/cpf/run.sh A testsuites/gtplab-sysmo2025/tunmap/topology.dot R testsuites/gtplab-sysmo2025/tunmap/trex/configure.sh R testsuites/gtplab-sysmo2025/tunmap/trex/gtp_1pkt_simple.py R testsuites/gtplab-sysmo2025/tunmap/trex/run.sh R testsuites/gtplab-sysmo2025/tunmap/trex/trex_cfg.yaml R testsuites/gtplab-sysmo2025/tunmap/upf/configure.sh R testsuites/gtplab-sysmo2025/tunmap/upf/eupf/eupf.yaml R testsuites/gtplab-sysmo2025/tunmap/upf/eupf/run.sh R testsuites/gtplab-sysmo2025/tunmap/upf/osmo-upf/osmo-upf.cfg R testsuites/gtplab-sysmo2025/tunmap/upf/osmo-upf/run.sh 20 files changed, 169 insertions(+), 5 deletions(-)
Approvals: Jenkins Builder: Verified laforge: Looks good to me, approved
diff --git a/testsuites/gtplab-sysmo2017/README.md b/testsuites/gtplab-sysmo2017/README.md new file mode 100644 index 0000000..49bb4f2 --- /dev/null +++ b/testsuites/gtplab-sysmo2017/README.md @@ -0,0 +1,3 @@ +This directory contains test scenarios (tunmap, tunend) run on a setup which consists out of 3 identical machines, each with a dualport mellanox network card and 100ge cables to the next machine. + +See setup.dot in this same directory to understand better the general topology. \ No newline at end of file diff --git a/testsuites/gtplab-sysmo2017/setup.dot b/testsuites/gtplab-sysmo2017/setup.dot new file mode 100644 index 0000000..4a67ef3 --- /dev/null +++ b/testsuites/gtplab-sysmo2017/setup.dot @@ -0,0 +1,40 @@ +digraph G { + rankdir=TB; + labelloc=t; + label="gtplab @ sysmocom"; + + subgraph cluster_gtplab0 { + label="gtplab0"; + rankdir=TB; + gtplab0_ipmi [label="ipmi\n10.9.23.50/24\nac:1f:6b:4a:78:d2\nBMC/ipmi\ndhcpc"]; + gtplab0_eno1 [label="eno1\n10.9.25.20/24\nac:1f:6b:45:1b:04\nOOB access\ndhcpc"]; + gtplab0_eno2 [label="eno2\nac:1f:6b:45:1b:05\nunused"]; + gtplab0_enp2s0f0np0 [label="enp2s0f0np0\n172.16.31.1/24\nec:0d:9a:8a:28:12\nstatic "]; + gtplab0_enp2s0f1np1 [label="enp2s0f1np1\nec:0d:9a:8a:28:13\nunused "]; + } + subgraph cluster_gtplab1 { + label="gtplab1"; + gtplab1_ipmi [label="ipmi\n10.9.23.51/24\nac:1f:6b:4a:79:84\nBMC/ipmi\ndhcpc"]; + gtplab1_eno1 [label="eno1\n10.9.25.21/24\nac:1f:6b:45:1c:68\nOOB access\ndhcpc"]; + gtplab1_eno2 [label="eno2\nac:1f:6b:45:1c:69\nunused"]; + gtplab1_enp2s0f0np0 [label="enp2s0f0np0\n172.16.31.2/24\nec:0d:9a:8a:28:1a\n100gb link\nstatic "]; + gtplab1_enp2s0f1np1 [label="enp2s0f1np1\n172.16.32.1/24\nec:0d:9a:8a:28:1b\n100gb link\nstatic "]; + } + subgraph cluster_gtplab2 { + label="gtplab2"; + gtplab2_ipmi [label="ipmi\n10.9.23.52/24\nac:1f:6b:4a:77:cd\nBMC/ipmi\ndhcpc"]; + gtplab2_eno1 [label="eno1\n10.9.25.22/24\nac:1f:6b:45:18:fe\nOOB access\ndhcpc"]; + gtplab2_eno2 [label="eno2\nac:1f:6b:45:18:ff\nunused"]; + gtplab2_enp2s0f0np0 [label="enp2s0f0np0\n172.16.32.2/24\nec:0d:9a:8a:27:52\nstatic "]; + gtplab2_enp2s0f1np1 [label="enp2s0f1np1\nec:0d:9a:8a:27:53\nunused"]; + } + + switch -> gtplab0_ipmi [constraint=false,dir=both]; + switch -> gtplab0_eno1 [constraint=false,dir=both]; + switch -> gtplab1_ipmi [constraint=false,dir=both]; + switch -> gtplab1_eno1 [constraint=false,dir=both]; + switch -> gtplab2_ipmi [constraint=false,dir=both]; + switch -> gtplab2_eno1 [constraint=false,dir=both]; + gtplab0_enp2s0f0np0 -> gtplab1_enp2s0f0np0 [label="100gb",dir=both,style=bold]; + gtplab1_enp2s0f1np1 -> gtplab2_enp2s0f0np0 [label="100gb",dir=both,style=bold]; +} diff --git a/testsuites/gtplab-sysmo2017/trex-tunmap/README.md b/testsuites/gtplab-sysmo2017/trex-tunmap/README.md deleted file mode 100644 index 17102e4..0000000 --- a/testsuites/gtplab-sysmo2017/trex-tunmap/README.md +++ /dev/null @@ -1,5 +0,0 @@ ----- -[ran](172.16.31.1) ----GTPU--> ()[upf] - | -[cn](172.16.31.100) <--GTPU--- ()[upf] ----- \ No newline at end of file diff --git a/testsuites/gtplab-sysmo2025/README.md b/testsuites/gtplab-sysmo2025/README.md new file mode 100644 index 0000000..f6c6221 --- /dev/null +++ b/testsuites/gtplab-sysmo2025/README.md @@ -0,0 +1,17 @@ +This directory contains test scenarios (tunmap, tunend) run on a setup which consists out of 3 machines, all of them are inter-connected via a Mellanox SN2700 32x 100GE switch. + +Machines: +* TRex: This machine runs TRex to generate/consume traffic emulating both RAN + and CN around the UPF. +* UPF: This machine runs the UPF under test, be it osmo-upf, eupf, etc. +* CPF: This machine runs the userspace program in charge of setting up the UPF + sessions over PFCP, hence acting as a CPF. It runs osmo-upf-load-gen tool from + this same repository. + +The CPF could actually also be run eg. at TRex machine and route PFCP traffic +over the external network towards UPF. Note it cannot easily use the network +interfaces (internal network) used to transmit GTPU, since those are controlled +by TRex and not by the linux kernel, hence why CPF is simply placed in another +machine. + +See setup.dot in this same directory to understand better the general topology. \ No newline at end of file diff --git a/testsuites/gtplab-sysmo2025/setup.dot b/testsuites/gtplab-sysmo2025/setup.dot new file mode 100644 index 0000000..d3a7a14 --- /dev/null +++ b/testsuites/gtplab-sysmo2025/setup.dot @@ -0,0 +1,49 @@ +digraph G { + rankdir=TB; + labelloc=t; + label="gtplab @ sysmocom"; + + subgraph cluster_trex { + label="TRex (gtplab2)"; + rankdir=TB; + trex_ipmi [label="ipmi\n10.9.23.52/24\nac:1f:6b:4a:77:cd\nBMC/ipmi\ndhcpc"]; + trex_eno1 [label="eno1\n10.9.25.22/24\nac:1f:6b:45:18:fe\nOOB access\ndhcpc"]; + trex_eno2 [label="eno2\nac:1f:6b:45:18:ff\nunused"]; + trex_enp2s0f0np0 [label="enp2s0f0np0\n172.16.32.2/24\nec:0d:9a:8a:27:52\nstatic (TRex)"]; + trex_enp2s0f1np1 [label="enp2s0f1np1\n172.16.31.200\nec:0d:9a:8a:27:53\nstatic (TRex)"]; + } + subgraph cluster_upf { + label="UPF (gtplab1)"; + upf_ipmi [label="ipmi\n10.9.23.51/24\nac:1f:6b:4a:79:84\nBMC/ipmi\ndhcpc"]; + upf_eno1 [label="eno1\n10.9.25.21/24\nac:1f:6b:45:1c:68\nOOB access\ndhcpc"]; + upf_eno2 [label="eno2\nac:1f:6b:45:1c:69\nunused"]; + upf_enp2s0f0np0 [label="enp2s0f0np0\n172.16.31.2/24\nec:0d:9a:8a:28:1a\n100gb link\nstatic "]; + upf_enp2s0f1np1 [label="enp2s0f1np1\n172.16.32.1/24\nec:0d:9a:8a:28:1b\n100gb link\nstatic "]; + } + subgraph cluster_test_switch { + label="Test Switch (100gb)"; + test_switch_vlan1 [label="vlan1 (RAN)"]; + test_switch_vlan2 [label="vlan2 (CN)"]; + } + subgraph cluster_cpf { + label="CPF (gtplab0)"; + cpf_ipmi [label="ipmi\n10.9.23.50/24\nac:1f:6b:4a:78:d2\nBMC/ipmi\ndhcpc"]; + cpf_eno1 [label="eno1\n10.9.25.20/24\nac:1f:6b:45:1b:04\nOOB access\ndhcpc"]; + cpf_eno2 [label="eno2\nac:1f:6b:45:1b:05\nunused"]; + cpf_enp2s0f0np0 [label="enp2s0f0np0\n172.16.31.1/24\nec:0d:9a:8a:28:12\nstatic "]; + cpf_enp2s0f1np1 [label="enp2s0f1np1\nec:0d:9a:8a:28:13\nunused "]; + } + + trex_enp2s0f0np0 -> test_switch_vlan1 [label="RAN 100gb",dir=both,style=bold]; + trex_enp2s0f1np1 -> test_switch_vlan2 [label="CN 100gb",dir=both,style=bold]; + upf_enp2s0f0np0 -> test_switch_vlan2 [label="CN 100gb",dir=both,style=bold]; + upf_enp2s0f1np1 -> test_switch_vlan1 [label="RAN 100gb",dir=both,style=bold]; + cpf_enp2s0f0np0 -> test_switch_vlan1 [label="PFCP (100gb)",dir=both,style=bold]; + + switch -> cpf_ipmi [constraint=false,dir=both]; + switch -> cpf_eno1 [constraint=false,dir=both]; + switch -> upf_ipmi [constraint=false,dir=both]; + switch -> upf_eno1 [constraint=false,dir=both]; + switch -> trex_ipmi [constraint=false,dir=both]; + switch -> trex_eno1 [constraint=false,dir=both]; +} diff --git a/testsuites/gtplab-sysmo2025/tunmap/README.md b/testsuites/gtplab-sysmo2025/tunmap/README.md new file mode 100644 index 0000000..24b0f61 --- /dev/null +++ b/testsuites/gtplab-sysmo2025/tunmap/README.md @@ -0,0 +1,18 @@ + +In this testsuite, TRex is used to generate Uplink GTPU traffic on the RAN side +towards UPF on its 1st iface and which which should be sent back patched +(tunmap) towards CN and received at TRex 2nd interface. + +The GTPU traffic is generated by gtp_1pkt_simply.py profile passed to TRex, +which emulates <enb-ip-addr,TEID> sessions based on parameters passed through +trex-console when launching the test, and which should match those configured in +cpf/0.gtp_flood.vty used by osmo-upf-load-gen to allocated the sessions at the +UPF. + +---- +[trex-ran](172.16.32.{2-101}) ----GTPU--> ()[upf] + | +[trex-cn](172.16.31.200) <---GTPU---- ()[upf] +---- + +See topoology.dot for a more detailed graph. \ No newline at end of file diff --git a/testsuites/gtplab-sysmo2017/trex-tunmap/smf/0.gtp_flood.vty b/testsuites/gtplab-sysmo2025/tunmap/cpf/0.gtp_flood.vty similarity index 100% rename from testsuites/gtplab-sysmo2017/trex-tunmap/smf/0.gtp_flood.vty rename to testsuites/gtplab-sysmo2025/tunmap/cpf/0.gtp_flood.vty diff --git a/testsuites/gtplab-sysmo2017/trex-tunmap/smf/configure.sh b/testsuites/gtplab-sysmo2025/tunmap/cpf/configure.sh similarity index 100% rename from testsuites/gtplab-sysmo2017/trex-tunmap/smf/configure.sh rename to testsuites/gtplab-sysmo2025/tunmap/cpf/configure.sh diff --git a/testsuites/gtplab-sysmo2017/trex-tunmap/smf/osmo-upf-load-gen.cfg b/testsuites/gtplab-sysmo2025/tunmap/cpf/osmo-upf-load-gen.cfg similarity index 100% rename from testsuites/gtplab-sysmo2017/trex-tunmap/smf/osmo-upf-load-gen.cfg rename to testsuites/gtplab-sysmo2025/tunmap/cpf/osmo-upf-load-gen.cfg diff --git a/testsuites/gtplab-sysmo2017/trex-tunmap/smf/run.sh b/testsuites/gtplab-sysmo2025/tunmap/cpf/run.sh similarity index 100% rename from testsuites/gtplab-sysmo2017/trex-tunmap/smf/run.sh rename to testsuites/gtplab-sysmo2025/tunmap/cpf/run.sh diff --git a/testsuites/gtplab-sysmo2025/tunmap/topology.dot b/testsuites/gtplab-sysmo2025/tunmap/topology.dot new file mode 100644 index 0000000..b1ca646 --- /dev/null +++ b/testsuites/gtplab-sysmo2025/tunmap/topology.dot @@ -0,0 +1,42 @@ +digraph G { + rankdir=TB; + labelloc=t; + label="gtplab @ sysmocom"; + + subgraph cluster_gtplab2 { + label="TRex (gtplab2)"; + trex [label="TRex",shape=box3d]; + gtplab2_172_32 [label="172.16.32.{2-101}/24"]; + gtplab2_172_31 [label="172.16.31.200/24"]; + } + subgraph cluster_switch { + label="Switch (100gb)"; + switch_vlan1 [label="vlan1"]; + switch_vlan2 [label="vlan2"]; + } + subgraph cluster_gtplab1 { + label="UPF (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_gtplab0 { + label="CPF (gtplab0)"; + rankdir=TB; + gtplab0_172_31 [label="172.16.31.1/24"]; + pfcp_tool [label="osmo-udp-load-gen",shape=box3d]; + } + + # PFCP: + pfcp_tool -> gtplab0_172_31 -> switch_vlan1 -> gtplab1_172_31 -> upf_tunmap [label="PFCP",dir=both,style=dashed,color=black]; + + # UL: + trex -> gtplab2_172_32 -> switch_vlan2 -> gtplab1_172_32 -> upf_tunmap [label="GTPU UL (RAN)",style=bold, color=red]; + upf_tunmap -> gtplab1_172_31 -> switch_vlan1 -> gtplab2_172_31 -> trex [label="GTPU UL (CN)",style=bold, color=purple]; + + # DL: + trex -> gtplab2_172_31 -> switch_vlan1 -> gtplab1_172_31 -> upf_tunmap [label="GTPU DL (CN)",style=bold,color=blue]; + upf_tunmap -> gtplab1_172_32 -> switch_vlan2 -> gtplab2_172_32 -> trex [label="GTPU DL (RAN)",style=bold,color=darkgreen]; +} + diff --git a/testsuites/gtplab-sysmo2017/trex-tunmap/trex/configure.sh b/testsuites/gtplab-sysmo2025/tunmap/trex/configure.sh similarity index 100% rename from testsuites/gtplab-sysmo2017/trex-tunmap/trex/configure.sh rename to testsuites/gtplab-sysmo2025/tunmap/trex/configure.sh diff --git a/testsuites/gtplab-sysmo2017/trex-tunmap/trex/gtp_1pkt_simple.py b/testsuites/gtplab-sysmo2025/tunmap/trex/gtp_1pkt_simple.py similarity index 100% rename from testsuites/gtplab-sysmo2017/trex-tunmap/trex/gtp_1pkt_simple.py rename to testsuites/gtplab-sysmo2025/tunmap/trex/gtp_1pkt_simple.py diff --git a/testsuites/gtplab-sysmo2017/trex-tunmap/trex/run.sh b/testsuites/gtplab-sysmo2025/tunmap/trex/run.sh similarity index 100% rename from testsuites/gtplab-sysmo2017/trex-tunmap/trex/run.sh rename to testsuites/gtplab-sysmo2025/tunmap/trex/run.sh diff --git a/testsuites/gtplab-sysmo2017/trex-tunmap/trex/trex_cfg.yaml b/testsuites/gtplab-sysmo2025/tunmap/trex/trex_cfg.yaml similarity index 100% rename from testsuites/gtplab-sysmo2017/trex-tunmap/trex/trex_cfg.yaml rename to testsuites/gtplab-sysmo2025/tunmap/trex/trex_cfg.yaml diff --git a/testsuites/gtplab-sysmo2017/trex-tunmap/upf/configure.sh b/testsuites/gtplab-sysmo2025/tunmap/upf/configure.sh similarity index 100% rename from testsuites/gtplab-sysmo2017/trex-tunmap/upf/configure.sh rename to testsuites/gtplab-sysmo2025/tunmap/upf/configure.sh diff --git a/testsuites/gtplab-sysmo2017/trex-tunmap/upf/eupf/eupf.yaml b/testsuites/gtplab-sysmo2025/tunmap/upf/eupf/eupf.yaml similarity index 100% rename from testsuites/gtplab-sysmo2017/trex-tunmap/upf/eupf/eupf.yaml rename to testsuites/gtplab-sysmo2025/tunmap/upf/eupf/eupf.yaml diff --git a/testsuites/gtplab-sysmo2017/trex-tunmap/upf/eupf/run.sh b/testsuites/gtplab-sysmo2025/tunmap/upf/eupf/run.sh similarity index 100% rename from testsuites/gtplab-sysmo2017/trex-tunmap/upf/eupf/run.sh rename to testsuites/gtplab-sysmo2025/tunmap/upf/eupf/run.sh diff --git a/testsuites/gtplab-sysmo2017/trex-tunmap/upf/osmo-upf/osmo-upf.cfg b/testsuites/gtplab-sysmo2025/tunmap/upf/osmo-upf/osmo-upf.cfg similarity index 100% rename from testsuites/gtplab-sysmo2017/trex-tunmap/upf/osmo-upf/osmo-upf.cfg rename to testsuites/gtplab-sysmo2025/tunmap/upf/osmo-upf/osmo-upf.cfg diff --git a/testsuites/gtplab-sysmo2017/trex-tunmap/upf/osmo-upf/run.sh b/testsuites/gtplab-sysmo2025/tunmap/upf/osmo-upf/run.sh similarity index 100% rename from testsuites/gtplab-sysmo2017/trex-tunmap/upf/osmo-upf/run.sh rename to testsuites/gtplab-sysmo2025/tunmap/upf/osmo-upf/run.sh