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. I really like using linux and I absolutely Respekt the incredible amount of work that Linus Torvalds and all other contributors put into it to keep the Internet working as it Is. Being open source and well documented, there are tons of things to explore and to try out. Personally, I spend a lot of time working with UDP sockets and trying to close the performance gap to tcp, which I observed in several experiments. Consequently, there may be a bit more focus on UDP compared to TCP, bit I will try my best to cover both.

I guess you have some questions, so let me try to spoiler answers to some of them.

Who the f**k are you? Great question. My name is Marten Gartner, I‘m 28 years old and a tech enthusiast and programmer. At the moment, im working on my phd thesis on high performance applications in path aware networks.

Why do we need another blog about kernel things, there are a lot of resources provided by e.g. the kernel developers? This is absolutely correct. I‘m not targeting to replace the docs of e.g. lwn.net or the official kernel documentation, These are great, very detailed and written in a high quality. What I experienced is, that even with having a lot of great documentation, it was and is still now difficult for me to 1) understand codensamples with magic functions and macros which seem to be explained nowhere 2) understanding on how to use and configure things on my machines and 3) to get practical examples of particular features. 4) really understand particular features in their complete depth.

Just as an example: I love writing code in Go and I think it’s a really awesome programming language with a great tradeoff between productivity and application performance. There are a lot of resources explaining basic networking tasks in Go, but few that really target high performance features, like AF_XDP or raw sockets in Go. Consequently, I will try to tackle those topics.

From where do you got. your experience of these topics? Good Point, Im neither an expert nor kernel developer or network professional, Im just an interested guy who wants to help others reduce their time to research all the things covered here and to create a place with focus on practical and usable examples an addition to the great documentation we already have.

What can we expect from this blog? As mentioned before, I will try to bring practical and easy understandable examples for high-performance networking features, often in Go if its suitable. Furthermore, I will blog about issues I had in my research or interesting topics that I think could be summarised here.

So I hope I could wake your interest to continue reading this blog and please share with me any feedback or comments you have, especially about what I can improve (at the moment per mail, this site does not support any comment functionalities so far).

Cheers, Marten