Modern network interface controllers allow the host to oﬄoad packet processing to hardware in order to improve performance. At the present time, the advanced features are utilized in the Linux kernel by oﬄoading the Traﬃc Control subsystem. Since this subsystem has been designed for a completely diﬀerent purpose, its usage for hardware oﬄoading is impractical and unreliable. Furthermore, in its current state the subsystem is not capable of utilizing all hardware features, which are often poorly documented. The presented work adopts a diﬀerent approach to the problem. Five high-end controllers and their packet-processing pipelines were examined in detail. Accounting for their projected future development, common traits and features were identiﬁed. The researched information was used to draft a proposal for a new Linux subsystem, more compatible with hardware oﬄoading than the current solution. The proposed subsystem deﬁnes a suﬃciently descriptive interface to utilize the majority of hardware-oﬄoaded features while avoiding common problems caused by excessively generalized approach of Traﬃc Control.
Network Interface Controller Offloading in Linux
Faculty of Mathematics and Physics
Date of Completion