Pushing the Limits of In-Network Caching for Key-Value Stores
Gyuyeong Kim
TL;DR
This work tackles load balancing for distributed key-value stores under skew by enabling in-network caching of variable-length items. It introduces OrbitCache, which circulating cache packets in the switch data plane using packet recirculation and cloning to cache both keys and values without being constrained by hardware item-size limits, while a control plane updates hot keys based on server reports and local popularity counters. The design includes a hash-based cache lookup, a circular-queue request buffer, client-side hash collision resolution, and an invalidation-based coherence protocol, achieving high throughput and robustness across diverse workloads and changing conditions. The evaluation on an 8-node testbed shows OrbitCache delivering significantly higher throughput and balanced server loads compared with NoCache and NetCache, with manageable latency overhead and good adaptability to dynamic workloads. Overall, OrbitCache demonstrates the feasibility and potential of variable-length, in-network caching to boost performance for distributed KV stores and informs future directions for programmable-switch architectures.
Abstract
We present OrbitCache, a new in-network caching architecture that can cache variable-length items to balance a wide range of key-value workloads. Unlike existing works, OrbitCache does not cache hot items in the switch memory. Instead, we make hot items revisit the switch data plane continuously by exploiting packet recirculation. Our approach keeps cached key-value pairs in the switch data plane while freeing them from item size limitations caused by hardware constraints. We implement an OrbitCache prototype on an Intel Tofino switch. Our experimental results show that OrbitCache can balance highly skewed workloads and is robust to various system conditions.
