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-upf-load-gen",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]; }