sriov-network-device-plugin
sriov-network-device-plugin copied to clipboard
Scalable Function support
What would you like to be added?
Utilizing of Scalable Functions (SFs) as resources exposed to the cluster.
What is the use case for this feature / enhancement?
SFs are relatively new type of functions which can be created in switchdev mode. Detailed information can be found at this wiki page. Arm host of the Bluefild DPU is capable to act as node in the cluster. Due to limitations VFs are created on x86 parent host, meaning only SFs can be created on arm host itself.
From plugin point of view SFs are unusual devices. Because SFs doesn't have own dedicated PCI device, it is not possible to implement new DeviceType in addition to NetDeviceType and AcceleratorType. However SFs are created on parent PF PCI device. This pull request implements support for SFs as auxiliary devices, by extending configuration with additional field. If this field is provided resource pool of requested auxiliary devices created instead of parent PCI devices.
Perhaps handling SFs (and auxiliary network devices) with sriovdp is not correct since SFs unrelated to SRIOV at all and it is better to create brand new plugin. What do You think?
Greetings @DmytroLinkin !
I have raised this issue in today's community meeting. As its a new technology and not a trivial change in device plugin i think it would be best to have a design doc (usually we use google doc) which will serve as common ground for discussions.
This design doc should include:
- general overview of SFs (with additional links for folks who want abit more of a deepdive)
- supported kernel / userspace (e.g devlink) versions
- currently supported NICs (that you are aware of ofc)
- use-cases
- proposed external facing API changes (if any)
- proposed coded changes
- diagrams to ease understanding of code changes if needed
- proposed testing coverage (e.g feature will be covered by unit-tests, integration tests, e2e tests)
Some notes on the implementation approach of PR#435:
I think we should strive to split into a separate device type (e.g AuxDeviceType) with its own set of selectors as:
- different selectors may be used for aux/sf devices which will not be applicable for a pci network device and via versa
- an aux/sf device is a device on the Kernel Auxiliary bus and not on PCI bus
- an aux/sf device does not have PCI attributes. it does have a parent which is a PCI network device
to achieve this some refactoring may be needed but i think we would end up with a cleaner API and internal model.
Looking forward to seeing the design doc !
Design document - https://docs.google.com/document/d/10EtkmOerG6apCaRffN891y1jwmngqIqeu70O3PEgEDE/edit?usp=sharing
PR bringing refactoring of plugin layout along with additional unit tests coverage - https://github.com/k8snetworkplumbingwg/sriov-network-device-plugin/pull/441
PR Aux. network devices support - #442
Support was added in PR#442 cosing this one.
Thx for working on it @DmytroLinkin !