digraph T {
    /* Make sure our payloads are always drawn below the driver node */
    subgraph cluster_driver {
        fillcolor = grey;
        style = filled;
        driver -> {payload1, payload2} [dir=none];
    }

    /* Driver malloc references */
    edge [style=dashed];
    driver -> port1;
    driver -> port2;
    driver -> port3:e;
    driver -> port4 [color=red];

    payload1:s -> port1:e;
    payload2:s -> port3:e;
    edge [style=""];

    subgraph cluster_topology {
        label="Topology Manager";
        labelloc=bottom;

        /* Topology references */
        mstb1 -> {port1, port2};
        port1 -> mstb2;
        edge [color=red];
        port2 -> mstb3 -> {port3, port4};
        port3 -> mstb4;
        edge [color=""];

        /* Malloc references */
        edge [style=dashed;dir=back];
        mstb1 -> {port1, port2};
        port1 -> mstb2;
        port2 -> mstb3 -> port3;
        edge [color=red];
        mstb3 -> port4;
        port3 -> mstb4;
    }

    mstb1 [label="MSTB #1";style=filled;fillcolor=palegreen];
    mstb2 [label="MSTB #2";style=filled;fillcolor=palegreen];
    mstb3 [label="MSTB #3";style=filled;fillcolor=palegreen];
    mstb4 [label="MSTB #4";style=filled;fillcolor=grey];

    port1 [label="Port #1"];
    port2 [label="Port #2"];
    port3 [label="Port #3"];
    port4 [label="Port #4";style=filled;fillcolor=grey];

    driver [label="DRM driver";style=filled;shape=box;fillcolor=lightblue];

    payload1 [label="Payload #1";style=filled;shape=box;fillcolor=lightblue];
    payload2 [label="Payload #2";style=filled;shape=box;fillcolor=lightblue];
}
