Skip to main content

Module trunks

Module trunks 

Source
Expand description

802.1Q trunks: a machine on several VLANs of one LAN gets one tagged link instead of one interface per VLAN, as a router-on-a-stick or a server on a trunk port has.

Containers. Each VLAN stays a Docker network of its own (machines on one VLAN, the router, the checks and the internet work as for any network). The LAN gets a switch container on each of its VLAN networks (at the controller address, unused on Docker) and on one internal link per trunk machine; inside, a bridge per VLAN joins the VLAN network and the trunks’ .<id> subinterfaces, so frames cross the trunk tagged. The trunk machine’s network sidecar names its end after the LAN and puts its addresses on <lan>.<id>. A LAN with a switch of its own (a switch appliance) gets no switch container: the appliance takes its place on the same networks, and the trunk machines’ end is the same.

VMs. The hypervisor carries each VLAN on its own network, one NIC each, as for any network; inside, a veth pair stands for the trunk: its end named after the LAN holds the addresses on <lan>.<id>, the other end’s .<id> joins a bridge with the VLAN’s NIC. Tagged frames cross the veth (a capture on <lan> shows them). Each <lan>.<id> takes its NIC’s MAC address and the NIC, now only a bridge port, a local one, so the hypervisor still sees only the MAC it gave the VM (no promiscuous mode, on every provider).

Structs§

Trunk
A machine’s trunk on a LAN: the VLANs it carries.
Vlan
One VLAN a trunk carries.

Enums§

End
One end of a trunk’s link.

Functions§

carried
Whether a machine reaches a VLAN network through a trunk rather than an interface of its own.
containers
The trunks of the machines run as containers: each on two or more VLANs of one LAN.
interface
The interface name on the machine’s end: the LAN’s (office, then office.10), within Linux’s 15 characters with room for .<id>.
link_network
The Compose network of a trunk: an internal link between the machine and the LAN’s switch.
mac
A locally administered MAC address for one end of a trunk, so each end finds its interface whatever Docker names it: FNV-1a of <lan>/<machine>, the last bit telling the ends apart.
machine_commands
The machine’s end, first thing its network sidecar does: the link named after the LAN, and its addresses on <lan>.<id>. With no other way out, the default route goes through a VLAN with internet (Docker’s gateway on it, reached through the switch).
machine_ready
What the machine’s sidecar healthcheck waits for: its addresses on the trunk.
of
The trunks of one machine.
switch_address
The switch’s address on a VLAN network: the controller’s, which Docker leaves free.
switch_name
The LAN’s switch service.
switch_ready
What the switch’s healthcheck waits for: every bridge up.
switch_script
The switch’s start: a bridge per VLAN joining the VLAN network and every trunk’s .<id>.
vm_commands
Commands that build a VM’s trunk (once per boot: they do nothing when it’s there).
vms
The trunks of the machines run as Linux VMs: each on two or more VLANs of one LAN.