Smart Network Interface Cards (SmartNICs) have been widely used to accelerate software-based network functions (NFs). However, from the scope of a service chain, a careless selection of NFs to offload onto SmartNIC could severely degrade the performance due to frequent communications between CPU and SmartNIC. In this paper, we present SmartChain, a high performance and efficient framework that achieves optimal partition of service chains between SmartNIC and CPU. SmartChain consists of two logical steps. First, SmartChain analyzes the suitability of elements in a chain to run on SmartNIC to exploit its high performance. Besides, SmartChain also ensures the dependencies between elements. Second, as our key novelty, SmartChain models the service chain latency and resource constraints, and solves the partition problem with 0-1 integer linear programming. We implement a SmartChain prototype based on Netronome SmartNIC. Evaluation results show that when used in real world cases, SmartChain could reduce the service chain latency by up to 87% with throughput maintained compared with strawman solutions.
智能网络接口卡(SmartNICs)已被广泛用于加速基于软件的网络功能(NFs)。然而,从服务链的范围来看,由于CPU和智能网络接口卡之间频繁通信,如果不小心选择要卸载到智能网络接口卡上的网络功能,可能会严重降低性能。在本文中,我们提出了SmartChain,这是一种高性能且高效的框架,它实现了智能网络接口卡和CPU之间服务链的最优划分。SmartChain包括两个逻辑步骤。首先,SmartChain分析链中元素在智能网络接口卡上运行的适用性以利用其高性能。此外,SmartChain还确保元素之间的依赖性。其次,作为我们的关键创新点,SmartChain对服务链延迟和资源约束进行建模,并通过0 - 1整数线性规划解决划分问题。我们基于Netronome智能网络接口卡实现了一个SmartChain原型。评估结果表明,在实际应用场景中,与简易方案相比,SmartChain在保持吞吐量的情况下,可将服务链延迟降低多达87%。