The Linux kernel is the backbone of Linux operating systems (OS), and is the fundamental interface between a computer's hardware and its processes.
The Kernel version of Linux 6.7 was released just a few weeks ago (at the beginning of January) and since then Work on the development of Linux 6.8 was launched and currently he is already in his second CR and so far it has seen a variety of improvements in different areas, with a focus on networking, core protocols, BPF, driver APIs, support for new hardware, and driver updates.
Y among the most important changes that have been made known, one of them stands out and that is that The improvements driven by the TCP stack have been implemented, which results in substantial improvements in performance, especially in scenarios involving multiple parallel TCP connections. These improvements have led to an acceleration that can reach up to 40%.
La Optimization focused on reorganizing the fields within network stack structures such as socks, netdev, netns, and mibs. These adjustments, which were implemented due to historical reasons, have allowed for better efficiency in managing the processor's cache. In particular, the use of cache lines during data transfer was minimized and access to relevant variables was optimized.
Currently, structures with many variables in the networking stack are organized chronologically, logically, and sometimes by cache line access.
This series of patches attempts to reorganize the core networking stack to minimize cache line consumption during the data transfer phase. Specifically, we look at the TCP/IP stack and speed in TCP.
As a result of these reviews, A significant increase in TCP speed has been observed, especially when it comes to handling a large number of simultaneous TCP connections. This improvement is especially notable in environments where network operations are intensive and efficient management of TCP connections is crucial.
Of the Other changes and improvementswhich stand out:
- Added netlink-based introspection to expose memory usage and recycling statistics.
- Refactoring SYN-Cookie TCP handling for future eBPF compatibility.
- Reduced extension header parsing overhead in GRO.
- Reorganizes the members of the nftables structure to keep the data accessed by datapath at the beginning.
- Introduced support for bulk deletion of MDB bridge entries and monitoring of TC blocking ports.
- Verifier improvements, including BPF logging limits logic, logging improvements, and support for global BPF user applet arguments.
- Initial implementation of TX metadata for AF_XDP with support in mlx5 and stmmac drivers.
- Fixed kCFI bugs in all forms of BPF indirect calls.
- Support for uid/gid options when mounting bpffs and additional extensions to the verifier.
- Automatic generation of Netlink family documentation from YAML specifications and additional corrections to module descriptions.
- Prevention of incorrect release of pages belonging to a page pool.
- Abstractions in Rust for network PHY drivers and introduction of queuing and NAPI support in the netdev Netlink interface.
- Notification filtering for devlink and improvements in PHY validation.
- Exposing the fractional frequency offset value and converting old handlers to platform removal callbacks that return void.
- Added support for reading/writing PHY MMD packets.
- Added support for various Ethernet devices, including Octeon CN10K devices, Broadcom 5760X P7, Qualcomm SM8550 SoC, and Texas Instrument DP83TG720S PHY.
- Introduction of the IMC Networks Bluetooth radio.
- Upgrades for high-speed NICs, embedded NICs, data center switches, embedded switches, and Ethernet PHYs.
- Support improvements and additions for various WiFi and Bluetooth controllers.
- Removal of various WiFi drivers including libertas, Atmel at76c50x, HostAP, zd1201, Orinoco, Aviator/Raytheon, Planet WL3501 and USB 802.11b RNDIS drivers.
finally if you are interested in knowing more about it, you can check the details in the following link.