digraph G {
Start [shape=doubleoctagon];
ProxyDHCP [label="Offer ProxyDHCP"];
PXE [label="Send PXE boot config"];
TFTP [label=< Send iPXE
(TFTP) >];
ProxyDHCP_Ipxe [label=< Offer ProxyDHCP
(to iPXE) >];
HTTP_Ipxe_Script [label=< Send iPXE boot script
(HTTP) >];
HTTP_Kernel [label=< Send kernel
(HTTP) >];
HTTP_Initrd [label=< Send initrd(s)
(HTTP) >];
Booted [shape=doubleoctagon];
Start -> ProxyDHCP [label=< DHCP request >, fontsize=11];
ProxyDHCP -> PXE [label=< PXE request
(UEFI only) >, fontsize=11];
ProxyDHCP -> TFTP [label=< TFTP request
(BIOS only) >, fontsize=11];
PXE -> TFTP [label=< TFTP request >, fontsize=11];
TFTP -> ProxyDHCP_Ipxe [label=< DHCP request
(from iPXE) >, fontsize=11];
ProxyDHCP_Ipxe -> HTTP_Ipxe_Script [label=< Request boot script >, fontsize=11];
HTTP_Ipxe_Script -> HTTP_Kernel [label=< Request kernel >, fontsize=11];
HTTP_Kernel -> HTTP_Initrd [label=< Request initrd(s) >, fontsize=11];
HTTP_Initrd -> Booted;
}