Multi-core network packet steering

Network packet steering of transmitted and received traffic for multi-core architectures (multi-core network packet steering) is needed in modern network computing environment, especially in data centers, where the high bandwidth and heavy loads would easily congestion a single core's queue.

For this reason many techniques, both in hardware and in software, are used in order to distribute the incoming packets across the cores of the processor. On the traffic-receiving side, the most important techniques are RSS, aRFS, RPS and RFS. For transmission, XPS is important.

Packets coming into the network interface card (NIC) are processed and loaded to the receiving queues managed by the cores (which are usually implemented as ring buffers within the kernel space). The main objective is being able to use all the cores available within the CPU to process incoming packets, while also improving latency and throughput.