Skip to content

Draft: Add more interfaces to allow for testing bond interfaces in capm3-virt

Bogdan-Adrian Burciu requested to merge use-bonds into main
  • 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 bridge management;
  • 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.

Merge request reports