AppNet: Expressive, Easy to Build, and High-Performance Application Networks
What is AppNet?
AppNet is a framework designed for constructing high-performance application networks for microservices. At its core, AppNet offers a high-level abstraction that facilitates the creation of expressive and performant application networks. Users can define rich, possibly stateful, layer-7 (RPC) processing through match-action rules. AppNet's compiler compiles these specifications and generates high-performance code by optimizing where and how to execute different RPC processing functions.
Details are available in our NSDI paper.
Architecture Overview
AppNet's architecture comprises three key components:
-
AppNet Program: Orchestrates network functionality across microservices using a sequence of elements, each defined by match-action rules that control RPC content and element state.
-
Control Plane:
- A compiler that processes RPC definitions and chain specifications to generate optimized code modules
- A controller that maintains global knowledge of network topology, service locations, and available processors through integration with cluster managers (Kubernetes)
-
Data Plane: Consists of various processors (sidecars, middleboxes, and RPC libraries) that execute elemental operations. These processors:
- Receive compiled RPC processing logic from the control plane
- Continuously report logs, traces, and runtime metrics to the controller
Supported Data Plane Processors
- Istio(Envoy - via both native C++ filters and WASM plugin)
- Sidecar Mode
- Ambient Mode
- gRPC (via Interceptors)
- Only gRPC-go is supported
Contributors
AppNet is developed and maintained by:
Getting help
Please get in touch with Xiangfeng Zhu (xfzhu@cs.washington.edu).