File:TrunkVnicsAfter.svg

// dot -Tsvg -oTrunkVnicsAfter.svg TrunkVnicsAfter.dot

digraph "Neutron vNICs: with Trunks" {

compound = true node [ shape = record ]

subgraph cluster_compute {

label = "compute host"

subgraph cluster_vm { label = "openstack instance" vnic [ label = "vNIC" ]           iface_tag_2 [ label = "eth0.20" ]           iface_untagged [ label = "eth0" ]           iface_tag_1 [ label = "eth0.10" ]           iface_tag_2 -> vnic [ dir = none color = blue ]           iface_tag_1 -> vnic [ dir = none color = red ]           iface_untagged -> vnic [ dir = none color = green ]       }

port_parent [ label = "parent port" ]

subport_tag_2 [ label = "vlan 20 subport" ]

subport_tag_1 [ label = "vlan 10 subport" ]

}

{ rank = same

net_tag_1 [ label = "net1\nvlan/vxlan/gre Y"   ]

net_untagged [ label = "net0\nvlan/vxlan/gre X"   ]

net_tag_2 [ label = "net2\nvlan/vxlan/gre Z"   ]

}

vnic -> port_parent [ dir = none color = blue ]

vnic -> port_parent [ dir = none color = red ]

vnic -> port_parent [ dir = none color = green ]

port_parent -> subport_tag_1 [ dir = none color = red ]

port_parent -> net_untagged [ dir = both color = green ]

port_parent -> subport_tag_2 [ dir = none color = blue ]

subport_tag_1 -> net_tag_1 [ dir = both color = red ]

subport_tag_2 -> net_tag_2 [ dir = both color = blue label = "remap encapsulation between\ninstance and fabric (pop, push)" fontcolor = grey ]

comment_model [ label = "trunk port model:\nmany networks in an instance\ncome with a single vNIC\nplus encapsulation" style = dotted color = grey fontcolor = grey ]

comment_model -> vnic [ style = dotted color = grey ]

trunk [ label = "trunk\n(in the API)" style = dotted color = grey fontcolor = grey ]

port_parent -> trunk [ dir = back style = dotted color = grey ]   trunk -> subport_tag_1 [ style = dotted color = grey ]   trunk -> subport_tag_2 [ style = dotted color = grey ]

}