DPU Integration¶
MicroOVN detects if it is running on the DPU side of the PCI complex as part of
bootstrap/join. It uses devlink to find a valid port representing host facing resources, valid
ports are either "pcivf" flavour ports or "pcipf" flavour ports with the
controller value being 1. This is due to the fact that local DPU side controller
ports will have the controller value as 1 according to the
Devlink Port Documentation, but this does not guarantee it is a local
controller port on the DPU side, which is why we also check the port flavour.
Note
For further understanding on our reasoning, check out:
Devlink Controller Commit
Devlink Port Code
We then use lspci to extract the serial number for the given port (identified by its PCI address). This is then inserted into the card-serial-number key in the external-ids:ovn-cms-options dictionary.
This serial number acts as a bridge for discovery and coordination. Allowing the networking control plane to match the hypervisor host’s VF with the correct DPU, despite them running separate operating systems with different hostnames, in order to properly handle port binding