NICA is a hardware and software
framework for inline application acceleration on FPGA-based SmartNICs.
FPGA based SmartNICs are network interface cards with programmable FPGAs
which are used by companies like Microsoft and Tencent for accelerating
cloud infrastructure. These SmartNICs can also be used to accelerate
application layer processing. For example, a SmartNIC may cache popular keys of a
key value store and serve requests that hit the cache directly from the SmartNIC,
reducing CPU load and improving latency. Another example uses a cryptographic
accelerator to authenticate incoming requests common in IoT servers, such as
Samsung ARTIK Cloud, thus protecting against denial of service attacks.
The deployment of SmartNIC application accelerators in the cloud
requires operating system abstractions, virtualization support, and performance
isolation guarantees. We develop the NICA framework to answer these needs.
NICA’s OS abstractions make it easy to use SmartNIC accelerators with existing
socket applications, by providing tight integration with the host network stack.
For multi-tenant deployments, NICA uses fine-grain time-sharing to allow
several applications or virtual machines to concurrently use the provided
accelerators, while providing state and performance isolation. Our evaluation
shows NICA key-value store cache can process cache hits 21 times faster than
our CPU and scales linearly with the number of virtual machines. Integrating
the cache into memcached requires only 107 lines of code.
Come hear our talk at USENIX ATC on Thursday, July 11, at 11:15.