06.02 Kernel High Performance Networking
Network Performance in the Linux Kernel, Getting the most out of the Hardware - YouTube
Packet Processing. - Single CPU getting interrupts.
N Tuple Flow - 2 tuple flows. for L2/L3 traffic - 5 tuple flows. for application flows.
Receive Packet Steering - software only optimization. - soft-irq CPU core schedules processing of sk_buff on other cores.
Receive Side Scaling - Hardware version of RPS - n-tuple RSS id is computed in hardware - RSS table defined in driver or via sysfs/ethtool to define how packets are spread across cores. - can speed up packet forwarding 3x! used for openwrt and friends.
Receive Flow Steering - RSS/RPS dont care about which cpu-core runs the consuming userspace process. - kernel maintains an RFS steering table within the kernel . - Updated dynamically by the kernel - Software only solution.
aRFS
- accelerated RFS.
- Hardware solution.
- kernel needs to be compiled with
CONFIG_RFS_ACCEL
- Driver + HW needed which can support n-tuple filtering.
- Manual steering can be optionally configured using
tc flower
,
ethtool
RSS Context
Checksum Offload
Mac Filtering
Data Insertion and Segmentation
XDP
DPDK - bypass kernel AF_XDP -