Earlier this year the FreeBSD Foundation announced that together with iXsystems it had awarded Bjoern Zeeb a grant to analyze the performance of FreeBSD’s Internet Protocol version 6 (IPv6) stack.
FreeBSD is well known as a network stack reference and research platform. With the expanding installed base of IPv6 systems throughout the world, more focus was brought to making sure that the IPv6 subsystem remained at performance parity with its IPv4 counterpart.
“‘IP feature parity’ is what our users expect. Closing the gap between IPv6 and IPv4 in terms of performance has become more important as IPv6 is seeing a significant increase in public deployments”, says Bjoern Zeeb. “This will help to keep the resource usage at the same level as traffic patterns shift towards IPv6.”
One feature that received special attention was hardware assisted offload support: Large/TCP Segment Offload (LSO/TSO) and Large Receive Offload (LRO). Getting the basic support done was very important, as it allows FreeBSD, together with network card vendors, to further improve performance. IPv6 Extension Headers can be taken into account when defining new interfaces and improved basic network packet data types will ease offload implementations in all network card drivers in the future.
Having offload support in the network stack immediately helps loopback performance. Turning on “offloading” for IPv6 avoids expensive calculation and validation of upper layer (TCP and UDP) checksums.
With IPv6, TCP performance is now basically on par with IPv4 in the offloading case, allowing 10 Gbps line speed connections. This is a huge step forward. UDP throughput has increased and is closer to the level of IPv4. Changes to locking allowing better parallelism, which is a step in the right direction.
Initial numbers showing the differences of the work can be found here.
“I’d love to thank the FreeBSD Foundation and iXsystems for sponsoring the project and hope that it will help the community deploying IPv6” closes Bjoern.