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