Speaker
Description
BIG TCP is a kernel feature that allows aggregating SKBs bigger than 64k, aiming to reduce per-packet overhead for high-throughput network traffic. Until now, it has mostly been practical for direct-routing deployments. A large class of production environments, including Kubernetes+Cilium setups, relies on UDP-based overlay networks, such as VXLAN and GENEVE.
This talk will walk through the challenges of adding BIG TCP support to encapsulated traffic, such as having to deal with multiple variations of IPv6 HBH extension header in every driver, which resulted in unification with BIG TCP IPv4 and dropping the HBH header from IPv6 too. This talk will also walk you through other gaps that prevented BIG TCP from working with UDP tunnels out of the box, as well as other related parts like adding support in tcpdump, and possible caveats. The performance numbers on Mellanox NIC will be included, showing gains with 1.5k and 8k MTU, as well as the software GSO paths when tunnel offloads are unavailable.
This effort resulted in two patchsets on LKML: "BIG TCP without HBH in IPv6" and "BIG TCP for UDP tunnels". The first part solves the issue with convoluted packet parsing in the fast path on driver level. The second part addresses the remaining gaps to handle encapsulated BIG TCP SKBs correctly, and switches to using UDP length = 0 for oversized aggregated packets and restoring the real length when parsing or segmenting such packets. It also takes care of checking the length of untrusted ingress packets.
The goal of this session is to gather feedback from users of overlay networking and driver authors for possible future improvements and evolution.