Networking is all about interoperation and best way to achieve that is to use an open implementation with consistent interfaces as provided by the Linux kernel.
Currently packet processing offloading in Linux networking is being extended to support different capabilities which may have conflicting interests. A sample space is by:
- NICs that support acceleration of certain packet paths
- May include basic L2 processing
- May include flow processing
- Switches that support basic managed L2 support
- ASICs that support L2/3 and ACLs
- Switches that can pretend to be a multi-ported nic
- NICs that are multiported
- And support VEPA mode
- And support EVB mode
- Can learn, manage timers or need hypervisor/OS support to manage them
- PCIe level virtualization
- NPUs and speacial purpose packet processors that
- mangling operations in
- Load balancing at Application/L3/L2 layers
- IPSEC offload
- More complex flow graph offload
To provide uniformity in interfaces, the control interfaces via standard kernel APIs are used; and consensus needs to be reached on the different offload interfaces.
This BOF intends to bring together all the stakeholders and gather guidelines that need to be agreed upon so as to not stifle innovation, but also ensure that the concept of a Linux networking interfaces do not get diluted in the process.