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].
翻译:近年来,部分应用层(L7)处理功能被迁移至网络协议栈(包括代理),旨在为安全策略提供通用且与应用无关的接口,并简化服务管理等。本文探讨能否将L7网络功能卸载到智能网卡以提升性能、降低开销。我们通过研究如何将L7分发任务卸载到FPGA网卡来回答这一问题——该任务需确定哪个应用进程应处理特定应用请求。研究发现现有协议(如基于TCP或QUIC的gRPC)会阻碍卸载,因为做出L7分发决策所需的数据可能分散在多个数据包中,要求网卡缓冲并解析大量数据包以重构L7数据。本文提出QingNiao——一种协同设计应用库、网络协议与硬件的方法——使得在网卡内存约束下实现L7分发成为可能。我们在100Gbps FPGA网卡上实现了QingNiao原型。基于真实应用的实验表明,QingNiao支持多种分发规则,其吞吐量达现有最先进软件L7分发器的7.5至8倍。我们已在[1]中开源了QingNiao。