Draft: Add more interfaces to allow for testing bond interfaces in capm3-virt
- Adds two more interfaces, ens4 + ens6 to be part of a bond0, connected to bridge
provisioning
; and likewise ens5 + ens7 be part of a bond1, connected to bridgemanagement
; - Enables STP on the bridges, to avoid a L2 loop. This would make the bridge ends of one of ens4 or ens6 (and ens5 or ens7 for the other bridge) set in a blocking state to avoid a L2 loop - introduced initially having in mind the DHCP discovery phase during BM provisioning, when all its interfaces would try to get an IP address from the DHCP server (in our case
dnsmasq
), but it very likely has the drawback of always keeping one link unable to forward traffic even when ens4 and ens6 are part of a bond and cause TCP retransmissions whenever traffic is sent over the link having the remote-end bridge port in STP blocking state.
Based on https://serverfault.com/a/273226, it was possible to pass more than one hardware address in dnsmasq --dhcp-host
argument, such that either one of the two ports can get the IP.
/opt # virsh domiflist vbmh
Interface Type Source Model MAC
-----------------------------------------------------------------
vnet36 bridge provisioning virtio 52:54:00:44:44:00
vnet37 bridge management virtio 52:54:00:55:55:00
vnet38 bridge provisioning virtio 52:54:00:66:66:00
vnet39 bridge management virtio 52:54:00:77:77:00
/opt # virsh domiflist vbmh | awk '$3=="provisioning" {print $5}'
52:54:00:44:44:00
52:54:00:66:66:00
/opt # virsh domiflist vbmh | awk '$3=="provisioning" {print $5}' | paste -sd ","
52:54:00:44:44:00,52:54:00:66:66:00
/opt #
Although it may not be the best option, some capm3-virt jobs have worked with this setup in upstream pipelines/1184687155.