  Recent years have witnessed a widespread adoption of containers. While
containers simplify and accelerate application development, existing container
network technologies either incur significant overhead, which hurts performance
for distributed applications, or lose flexibility or compatibility, which
hinders the widespread deployment in production.
  We carefully analyze the kernel data path of an overlay network, quantifying
the time consumed by each segment of the data path and identifying the
\emph{extra overhead} in an overlay network compared to bare metal. We observe
that this extra overhead generates repetitive results among packets, which
inspires us to introduce caches within an overlay network.
  We design and implement ONCache (\textbf{O}verlay \textbf{N}etwork
\textbf{Cache}), a cache-based container overlay network, to eliminate the
extra overhead while maintaining flexibility and compatibility. We implement
ONCache using the extended Berkeley Packet Filter (eBPF) with only 524 lines of
code, and integrate it as a plugin of Antrea. With ONCache, containers attain
networking performance akin to that of bare metal. Compared to the standard
overlay networks, ONCache improves throughput and request-response transaction
rate by 12\% and 36\% for TCP (20\% and 34\% for UDP), respectively, while
significantly reducing per-packet CPU overhead. Popular distributed
applications also benefit from ONCache.
