BatchConn - sendmmsg/recvmmsg in Go

BatchConn - sendmmsg/recvmmsg in Go Hey all, this time I want to talk about using sendmmsg and recvmmsg in Go and their impact on performance compared to sendmsg/recvmsg. Sendmmsg aims to provide increased performance by reducing the number of syscalls required to write data to the network using sockets. This is done by transmitting multiple packets, up to X, in one syscall. Sendmmsg works in a similar way, by reading multiple packets in a single syscall.
Read full post

Hello World

Hey Folks, This weird looking domain name is my first try of writing a blog to contribute something useful to the world. Hpnpl Stands for high performance network programming on Linux. The idea behind this blog is to create practical articles and guides on writing performant network applications by benefitting from all the great optimisations the Kernel provides to us. This post is the opening of hopefully a lot of Interesting posts helping people to learn, understand and implement high performance networking features using the Linux Kernel.
Read full post

Bulktransfer via TCP and UDP - A Rabbit/Turtle Race?

Bulktransfer via TCP and UDP - A Rabbit/Turtle Race? Hey Folks, this small post is about an experiment I started to determine if a hypothesis I had was correct: “Sending large amounts of data via TCP is many times faster than UDP, because there are less syscalls involved”. I came to this hypothesis, because I did some network performance tests with iperf3 with the following outcome: With TCP, iperf3 easily reaches 10Gbit/s with a single connection.
Read full post

Recapitulating AF_XDP

Hey Folks, this time I will talk about a pretty awesome feature in the Linux kernel: AF_XDP. Please keep in mind, that this is a summary and explanation in my own words, and it’s not intended to fully cover all technical depths. The focus lies on understanding AF_XDP’s core concepts, learn how to use it, and what to consider while using it. The official kernel documentation describes AF_XDP as “an address family that is optimized for high performance packet processing”.
Read full post