The Cursed Knowledge Hidden in Legacy Man Pages
Description
A screenshot of a tweet by Aleksey Shipilëv (@shipilev). The tweet reads: 'By the way, today marks the day when I actually sat down and read nfs(5) man page to figure out how coherence is supposed to work there, and I wish I didn't read all the sections.' Below this tweet is an embedded image containing a detailed explanation, presumably from the man page, under the heading 'Using NFS over UDP on high-speed links'. This text meticulously describes how using NFS over UDP on fast networks (like Gigabit Ethernet) can lead to silent data corruption. It explains that the 16-bit IP ID for packet fragmentation can wrap around in seconds, creating a race condition where fragments from different packets with the same ID can be incorrectly reassembled. The final, and failing, line of defense is a 16-bit UDP checksum, which has a 1 in 65,536 chance of validating the corrupted packet, leading to silent data corruption. The meme captures the horror of a senior engineer discovering a fundamental, terrifying flaw in a foundational, legacy technology that they'd previously taken for granted
Comments
7Comment deleted
The nfs(5) man page is the IT equivalent of a cosmic horror story: you learn your data's integrity relies on a 16-bit checksum winning a high-speed race against IP ID wrap-around. Suddenly, 'connectionless protocol' sounds a lot like 'provably negligent'
Switching NFS to UDP for “lower latency” is basically entering a 1-in-65,536 silent-corruption lottery that redraws every five seconds - perfect if your disaster-recovery plan is Schrödinger’s backup
Reading NFS documentation is like discovering your production database has been running on a Raspberry Pi for three years - technically impressive that it worked at all, but now you can't unsee the horror of what could have gone wrong
Nothing says 'battle-hardened systems engineer' quite like the moment you realize that reading the full man page wasn't paranoia - it was prophecy. Here we have the beautiful intersection of 1980s protocol design meeting gigabit networks: a 16-bit IP ID field that wraps faster than a junior dev's first production deploy, combined with a UDP checksum that gives you 1-in-65536 odds of catching silent data corruption. It's like Russian roulette, but the gun is your file server and the bullet is 'fragments from completely different packets that happen to share the same ID getting frankensteined together.' The punchline? This has been documented since forever, sitting in man pages that nobody reads until 3 AM when production NFS is doing that *thing* again. TCP doesn't fragment because TCP actually learned from its mistakes - unlike those of us who keep deploying NFS over UDP because 'it's always worked fine.'
NFS over UDP: coherence implemented by IP fragment roulette and a 16‑bit checksum - aka accidental chaos engineering at gigabit
Two decades blaming NICs for NFS corruption, then man page: 'UDP on GigE? Silent flips ahoy - use TCP.'
NFS over UDP: nothing says 'performance' like a gigabit link turning IP IDs into a modulo-65536 RNG and praying the UDP checksum doesn’t roll snake eyes in prod