graph "quad" { layout="neato"; overlap="false"; splines="true"; esep="+30"; sep="+30"; node [shape=record, fontname="monospace"]; edge [color="cornflowerblue", penwidth="2"]; qn_template="infix-bios-x86_64"; qn_image="infix-x86_64-disk-test.qcow2" qn_oui="00:a0:85"; qn_append="quiet"; host [ label="host | { d1a | d1b | d1c | d1d | d2a | d2b | d2c | d2d | d3a | d3b | d3c | d3d | d4a | d4b | d4c | d4d }", color="grey", fontcolor="grey", pos="-15,15!", provides="controller", ]; dut1 [ label="{ e1 | e2 | e3 | e4 } | dut1 | { e5 | e6 | e7 | e8}", pos="10,30!", provides="infix", expected_boot="primary", qn_console=9001, qn_mem="384M", qn_usb="dut1.usb" ]; dut2 [ label="{ e1 | e2 | e3 | e4 } | dut2 | { e5 | e6 | e7 | e8}", pos="0,20!", provides="infix", expected_boot="primary", qn_console=9002, qn_mem="384M", qn_usb="dut2.usb" ]; dut3 [ label="{ e1 | e2 | e3 | e4 } | dut3 | { e5 | e6 | e7 | e8}", pos="0,10!", provides="infix", expected_boot="primary", qn_console=9003, qn_mem="384M", qn_usb="dut3.usb" ]; dut4 [ label="{ e1 | e2 | e3 | e4 } | dut4 | { e5 | e6 | e7 | e8}", pos="10,0!", provides="infix", expected_boot="primary", qn_console=9004, qn_mem="384M", qn_usb="dut4.usb" ]; host:d1a -- dut1:e1 [provides="mgmt", color="lightgray"] host:d1b -- dut1:e2 [provides="ieee-mc"] host:d1c -- dut1:e3 [provides="ieee-mc"] host:d1d -- dut1:e4 [provides="ieee-mc"] host:d2a -- dut2:e1 [provides="mgmt", color="lightgray"] host:d2b -- dut2:e2 [provides="ieee-mc"] host:d2c -- dut2:e3 [provides="ieee-mc"] host:d2d -- dut2:e4 [provides="ieee-mc"] host:d3a -- dut3:e1 [provides="mgmt", color="lightgray"] host:d3b -- dut3:e2 [provides="ieee-mc"] host:d3c -- dut3:e3 [provides="ieee-mc"] host:d3d -- dut3:e4 [provides="ieee-mc"] host:d4a -- dut4:e1 [provides="mgmt", color="lightgray"] host:d4b -- dut4:e2 [provides="ieee-mc"] host:d4c -- dut4:e3 [provides="ieee-mc"] host:d4d -- dut4:e4 [provides="ieee-mc"] // Lag dut2:e7 -- dut3:e6 [color="black", penwidth="3"] dut2:e8 -- dut3:e5 [color="black", penwidth="3"] // Ring dut1:e8 -- dut2:e5 [color="black"] dut3:e8 -- dut4:e5 [color="black"] dut4:e8 -- dut1:e5 [color="black"] // Cross-links dut1:e6 -- dut3:e7 [color="red"] dut2:e6 -- dut4:e7 [color="red"] }