MORE POSTS
July 01, 2022 1:00 PM
Optimizing TCP for high WAN throughput while preserving low latency
In this post, we describe how we modified the Linux kernel to optimize for both low latency and high throughput concurrently...
June 29, 2022 11:45 AM
Live-patching security vulnerabilities inside the Linux kernel with eBPF Linux Security Module
Learn how to patch Linux security vulnerabilities without rebooting the hardware and how to tighten the security of your Linux operating system with eBPF Linux Security Module...
June 28, 2022 12:57 PM
Hertzbleed explained
Hertzbleed is a brand-new family of side-channel attacks that monitors changes on CPU frequency...
June 24, 2022 1:45 PM
Decommissioning your VDI
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
Cloudflare blocks 15M rps HTTPS DDoS attack
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
PIPEFAIL: How a missing shell option slowed Cloudflare down
This post tells the story of how a missing shell option called “pipefail” slowed Cloudflare down....
March 20, 2022 4:58 PM
Unlocking QUIC’s proxying potential with MASQUE
We continue our technical deep dive into traditional TCP proxying over HTTP...
March 19, 2022 5:01 PM
A Primer on Proxies
A technical dive into traditional TCP proxying over HTTP...
February 04, 2022 1:58 PM
Missing Manuals - io_uring worker pool
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
How to stop running out of ephemeral ports and start to love long-lived connections
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
The tale of a single register value
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
How we built Instant Logs
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
How to execute an object file: Part 3
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
Pin, Unpin, and why Rust needs them
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. ...