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]; } 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]; }