- NIC h/w evolves slowly, while protocols, apps and system/network architectures evolve fast.
- One solution is through software - implementing NIC features in host network stack, but not good enough.
- Hybrid software hardware architecture.
- A programmable platform that allows apps to leverage NIC features implemented in software and hardware.
- Single core: multi-10G performance
- Multiple cores: scaling.
- Old NICs job: relaying traffic between a server’s CPUs and its network link
- Current NICs job: hosting advanced NIC features (protocol offloading, packet classification, rate limiting, and virtualization).
- Why NICs job change?
- New applications with intense requirements - cannot be met by networking stacks - necessitating hardware augmentation; however, hardware evolves slowly.
- Virtualization - requires NICs to support switching functionality.
- Multi-tenant datacenters & Cloud computing - NICs must provide isolation mechanisms.
- Problem: smart NICs - complex - support many features - hard to configure, compose or evolve.
- Since the performance gap between hardware and software network processing getting smaller, the paper argues that a hybrid hardware-software approach can effectively augment or extend NIC features, while providing flexibility and high performance.
- SoftNIC:
- software-augmented NIC — serves as a fallback or an alternative to the hardware NIC.
- serves as an incubator for next-generation hardware features, as well as a permanent home for features that are too complex for hardware implementation, too specialized to merit scarce NIC resources, or whose performance needs are easily met with software.
- Modern NICs offer high throughput (10–40 Gbps); low end-to-end latency (< 10 µs); guarantee performance; isolation among VMs or applications.
- SoftNIC must offer similar performance capabilities, but software implementation is hard. Why?
- Legacy kernels and hypervisors - slow and inefficient at network processing.
- While specialized packet processing frameworks offer high performance, they lack the rich programmability, or does not guarantee performance.
- Contributions of this paper:
- A new architecture for extending NIC features - developers can use this to develop features in software while incurring minimal performance overhead and leveraging features from the hardware NIC. Application developers can use SoftNIC as a hardware abstraction layer (HAL) to build software that uses NIC features without worrying about cases where they are unavailable or incomplete.
- A scheduling framework - supports a wide range of operator-specified performance isolation policies, and provide fine-grained performance guarantees for applications.
- Several use cases of SoftNIC - showing how SoftNIC can improve the flexibility and/or performance of both existing and forward-looking applications.
SoftNIC is a programmable platform that allows applications to leverage software and hardware implementations of NIC features. SoftNIC is implemented as a shim layer between applications and NIC hardware, to achieve the best of both the flexibility of software and the performance of hardware.