graph "2x2" { layout="neato"; overlap="false"; esep="+20"; size=10 node [shape=record, fontname="DejaVu Sans Mono, Book"]; edge [color="cornflowerblue", penwidth="2", fontname="DejaVu Serif, Book"]; PC [ label="PC | { mgmt1 | data | mgmt2 | mgmt3 }", pos="20,30!", requires="controller", ]; R1 [ label="{ mgmt | data | link} | R1 \n 192.168.100.1/32 \n(lo)", pos="160,60!", requires="infix", ]; R2 [ label="{ link | mgmt | data } | R2 \n 192.168.200.1/32 \n(lo)", pos="160,30!", requires="infix", ]; HOST [ label="{ link | mgmt } | HOST \n end-device", pos="153,0!", requires="infix", ]; PC:mgmt1 -- R1:mgmt [requires="mgmt", color="lightgray"] PC:mgmt2 -- R2:mgmt [requires="mgmt", color="lightgray"] PC:mgmt3 -- HOST:mgmt [requires="mgmt", color="lightgray"] PC:data -- R1:data [color="black", headlabel="192.168.10.1/24", taillabel="192.168.10.2/24", labeldistance=6, fontcolor="black"] R1:link -- R2:link [headlabel="192.168.50.2/24", taillabel="192.168.50.1/24", labeldistance=1, fontcolor="black", color="black"] R2:data -- HOST:link [headlabel="192.168.60.2/24", taillabel="192.168.60.1/24", labeldistance=1, fontcolor="black", color="black"] }