  People have shown that in-network computation (INC) significantly boosts
performance in many application scenarios include distributed training,
MapReduce, agreement, and network monitoring. However, existing INC programming
is unfriendly to the normal application developers, demanding tedious network
engineering details like flow control, packet organization, chip-specific
programming language, and ASIC architecture with many limitations. We propose a
general INC-enabled RPC system, NetRPC. NetRPC provides a set of familiar and
lightweight interfaces for software developers to describe an INC application
using a traditional RPC programming model. NetRPC also proposes a
general-purpose INC implementation together with a set of optimization
techniques to guarantee the efficiency of various types of INC applications
running on a shared INC data plane. We conduct extensive experiments on
different types of applications on the real testbed. Results show that using
only about 5% or even fewer human-written lines of code, NetRPC can achieve
performance similar to the state-of-the-art INC solutions.
