  Recently, some application (L7) processing has been moved to the network
stack (including proxies) as a way to provide a common and application-agnostic
interface for security policies, simplify service management, etc. This paper
looks at whether L7 network functionality can be offloaded to SmartNICs to
improve performance and reduce overheads. We investigate this question by
examining how to offload to FPGA NICs the task of L7 dispatch: determining
which application process must handle a particular application request. We find
that existing protocols, e.g., gRPC on TCP or QUIC, are a hindrance for
offloading because the data required to make L7 dispatch decisions can be
spread out over many packets, requiring the NIC to buffer and parse a large
number of packets to reconstruct L7 data. This paper presents QingNiao-an
approach that co-designs application libraries, network protocols, and
hardware-to make L7 dispatch feasible under NIC memory constraints. We
prototype QingNiao on a 100Gbps FPGA NIC. Experiments with real-world
applications show that QingNiao supports a variety of dispatch rules and
achieves 7.5x to 8x throughput compared to state-of-the-art software L7
dispatcher. We have open-sourced QingNiao at [1].
