Assembly within! BPF tail calls on x86 and ARM
October 10, 2022 1:00 PM
We have first adopted the BPF tail calls when building our XDP-based packet processing pipeline. BPF tail calls have served us well since then. But they do have their caveats...
October 10, 2022 1:00 PM
We have first adopted the BPF tail calls when building our XDP-based packet processing pipeline. BPF tail calls have served us well since then. But they do have their caveats...
September 02, 2022 3:33 PM
When a request at Cloudflare throws an error, information gets logged in our requests_error pipeline. The error logs are used to help troubleshoot customer-specific or network-wide issues...
August 25, 2022 6:08 PM
We have amazing deep dives in our blog, but also research and how the Internet works kind of stories. Here are some highlights from 2022, and before (with glimpses of our history)....
July 18, 2022 12:56 PM
A crash in a development version of flowtrackd (the daemon that powers our Advanced TCP Protection) highlighted the fact that libxdp (and specifically the AF_XDP part) was not Linux network namespace aware. This blogpost describes the debugging journey to find the bug, as well as a fix....
July 01, 2022 1:00 PM
In this post, we describe how we modified the Linux kernel to optimize for both low latency and high throughput concurrently...
June 28, 2022 12:57 PM
Hertzbleed is a brand-new family of side-channel attacks that monitors changes on CPU frequency...
June 24, 2022 1:45 PM
This blog offers Cloudflare’s perspective on how remote browser isolation can help organizations offload internal web application use cases currently secured by virtual desktop infrastructure (VDI)...
April 27, 2022 2:02 PM
Earlier this month, Cloudflare’s systems automatically detected and mitigated a 15.3 million request-per-second (rps) DDoS attack — one of the largest HTTPS DDoS attacks on record...
April 05, 2022 12:57 PM
This post tells the story of how a missing shell option called “pipefail” slowed Cloudflare down....
March 20, 2022 4:58 PM
We continue our technical deep dive into traditional TCP proxying over HTTP...
March 19, 2022 5:01 PM
A technical dive into traditional TCP proxying over HTTP...
February 04, 2022 1:58 PM
Chances are you might have heard of io_uring. It first appeared in Linux 5.1, back in 2019, and was advertised as the new API for asynchronous I/O. Its goal was to be an alternative to the deemed-to-be-broken-beyond-repair AIO, the “old” asynchronous I/O API...
February 02, 2022 9:53 AM
Often programmers have assumptions that turn out, to their surprise, to be invalid. From my experience this happens a lot. Every API, technology or system can be abused beyond its limits and break in a miserable way...
November 03, 2021 2:37 PM
It’s not every day that you get to debug what may well be a packet of death. It was certainly the first time for me. What do I mean by “a packet of death”? A software bug where the network stack crashes in reaction to a single received network packet, taking down the whole operat...
September 14, 2021 12:59 PM
In this blog post, we’ll show you how we built a new system that can give you access to your Cloudflare logs in real time, with just a single click....
September 10, 2021 12:58 PM
Continue learning how to import and execute code from an object file. In this part we will handle external library dependencies....
August 26, 2021 3:04 PM
Using async Rust libraries is usually easy. It's just like using normal Rust code, with a little async or .await here and there. But writing your own async libraries can be hard. ...
May 06, 2021 1:00 PM
Is it ok to have if clauses that will basically never be run? Surely, there must be some performance cost to that......
April 02, 2021 11:00 AM
Continue learning how to import and execute code from an object file. This time we will investigate ELF relocations....