RSSAmplifier

Blog

/dk/tohojo/blog

Recent content on /dk/tohojo/blog

blog.tohojo.dkRSS feed ↗14 posts

Latest posts

The inner workings of TCP zero-copy

TCP zero-copy is a feature of the Linux kernel that makes it possible to send and receive data without incurring an extra copy between kernel memory and the memory buffer that holds the final data (in userspace, or even in the memory of a different device on the system). Copying data adds overhead, so avoiding it is appealing. The kernel features that enable this are quite new, and figuring out…

Using eBPF to add arbitrary delay to kernel functions

It used to be the case that eBPF programs were very limited in what they could do in the kernel; no loops, only a very limited number of instructions, etc. Over time, the capabilities of eBPF have expanded quite dramatically. And even though the verifier makes sure eBPF programs will eventually exit, “eventually” does not necessarily mean “in a timely manner”. This has been…

Putting the cart before the AI

I guess it was inevitable that I would have to write something about AI here, although I’ve been putting it off for a while now. But seeing as the hype still does not seem like it is about to die down, I feel like I can put it off no longer. I am not sure if I have anything incredibly unique to add to this topic, but I nevertheless feel like I should put a stake in the ground. First of all,…

Slow travel

As I embark on yet another cross-continent train journey, I find myself reflecting on the experience of travelling slowly. I have done nothing else since before the pandemic; the last time I was on a plane must have been in September of 2019 when I was in Lisbon for the Linux Plumber’s conference. Since then, I have avoided travelling when flying was the only option. Eschewing flying…

Remembering Dave Täht

I was devastated to learn that Dave Täht passed away. I have known and worked with Dave for over a decade, and consider him a dear friend. I will miss him tremendously. I first met Dave in Copenhagen in 2012 at the Linaro Connect / Ubuntu Developer Summit . At the time I was following the Bufferbloat mailing list where Dave, as he has done many times since, wrote a message to the bloat list saying…

ECN, ECMP and anycast: a cocktail of broken connections

This is a writeup of an issue I discovered back in 2019 with my internet provider at the time. I meant to write it up back then, but somehow never got around to it. Since I just got a reminder of this, I figured better late than never. For a TL:DR, skip to the summary at the end . The story of a failed connection This story started with me noticing that connections were randomly failing to certain…

The European Union must keep funding free software

This is an open letter in which the open source community urges the European Commission to keep funding the NGI initiative from 2025 and on. I’ve had the pleasure of being a technical reviewer for a couple of the NGI funding rounds, and there have been some pretty great projects that have been funded this way. To sign the letter, visit the link above and follow the instructions at the top of…

The Big FIFO in the Cloud

I was recently made aware of an interesting issue, which appears to be a pretty fundamental property of the departure time-based traffic shaping that is used by many BPF-based data planes, such as in the Cilium Bandwidth Manager . It’s one of those things that seem really obvious in hindsight, but that no one thought about beforehand (apparently; or at least I didn’t). So I thought…

The XDP traffic generator

An interesting feature that I implemented about a year ago (it first appeared in the 5.18 kernel), is the ability to make the BPF_PROG_RUN syscall run in a “live packet mode” for XDP. One reason this is interesting is that it makes it possible to implement a programmable packet generator, that leverages the programmability and performance of XDP to achieve very high packet rates,…

Netfilter packet drop attribution using BPF

To kick things off in this second era of my blog (ha!), I thought I’d write up an interesting investigation I recently conducted based on an, on its surface, simple question from a colleague (paraphrased): Can we use BPF to attribute a drop in a netfilter ruleset to the rule that decided to drop the packet? This turned out to be not quite straight-forward, because of the way the netfilter…

It's not dead, it's resting!

So it seems more than four years have passed since I wrote that last “nearing the end” entry. Well, as the update in that last entry indicates, the end did come, and I managed to finish my PhD studies the good way (I have a nice diploma on my wall to prove it an everything!). The thesis is even available in real dead tree form, for free! Fast forward another four years, which…

Nearing the end: Thesis defence

After almost five years of work, I am finally ready to defend my PhD thesis this Friday, November 23rd at 09:15 CET. The title of the thesis is Bufferbloat and Beyond: Removing Performance Barriers in Real-World Networks (click the link to download the full 8MB PDF), and I think it turned out pretty well. I am setting up a live stream of the thesis defence, which will be available on Youtube. The…

Building a wireless testbed... with wires!

The university lab I keep my testbeds in had to be reorganised a few months ago, and everything moved into a smallish server room (where before it was in a larger office space). Since my wireless testbed was carefully setup using the very scientific method of “moving computers further away from each other until the signal is just right”, the move of course meant that my testbed now…

Naming and service discovery on a routed IPv6 network

I tend to eschew the normal practice of bridging WiFi and Ethernet networks in my private setups, instead running them on separate subnets and routing between them. This helps keep the amount of multicast traffic on the WiFi down, which is good. But it makes some things break, most notably DNS service discovery (AKA Zeroconf; this is the thing that makes printers and airplay devices pop up…