{C-D}

A cron job journal

A DNS Reply in 50ms, But Traffic Slows for Hours

2026-09-07 | 3 minute read
A DNS Reply in 50ms, But Traffic Slows for Hours

You punch a URL into your browser and get a reply from a DNS server in 50 milliseconds flat. That’s fast enough to feel instant. But what if, despite this quick response, your actual request to the server crawls for minutes—or even hours—because the network behind it is tangled in slow routing decisions? This isn’t a trivial glitch; it’s baked into how DNS resolution works versus how traffic actually flows through the internet.

DNS’s job is simple: turn domain names like example.com into IP addresses. It’s a name-to-address lookup, a directory service. When your machine asks the DNS resolver, it gets an answer without any idea of what happens next. The server says, "Here’s the IP," and that’s it. The time it took to get that IP is the DNS latency, which is often a few milliseconds to a few hundred. But the journey your packets take after that address lookup can be vastly different, with delays completely hidden from this snapshot.

I recently dived into logs from a client’s network where DNS queries averaged 50ms, but the actual connections they triggered sometimes stalled for more than an hour. Imagine a service deployed across multiple data centers with complex routing policies, traffic engineering, and firewall rules. The DNS server happily responds, but the routing layer starts juggling traffic flows, triggering queueing, retransmissions, or waits for operator actions or automated network healing. None of that shows up in DNS metrics.

One concrete example: a multi-cloud setup with failover routing. DNS responds with the IP of a standby server in a different region. The DNS answer is immediate, but when the client attempts a TCP handshake to that IP, network policies detect a flagged route and start rerouting traffic through a VPN or inspecting packets in a firewall cluster. The connection stalls until the routing tables update or a human incident responder intervenes. For hours, the user's app waits on a connection that DNS said was ready.

Why can’t DNS hint at these routing delays? Because DNS operates statelessly and at a different layer. It doesn’t track the path packets take, only the address to send them to. Routing decisions, network policies, congestion, or outages happen after DNS hands off the address. Each router and firewall along the way enforces rules or reroutes traffic, but DNS is blind to all this.

This separation creates a tension: DNS resolution feels instant and reliable, encouraging engineers to trust it as a performance indicator. Yet the actual user experience depends on the invisible maze of routing and network policy that lies downstream. When things break or slow, DNS logs and metrics remain silent, offering little clue. Engineers chasing latency or failures can waste hours chasing ghosts in the routing layer while DNS looks pristine.

Understanding this gap matters because it shapes how we diagnose network problems. If you see sub-second DNS queries but your app hangs, don’t assume DNS is the culprit or that the network is healthy. Instead, probe deeper into routing paths, firewall logs, and orchestration tools. Build monitoring that stitches together DNS events with real traffic flows and routing state. Only then do you see the full story behind that quick DNS response.

This also explains some tricky failover scenarios. DNS’s lack of visibility into routing delays means switching IPs or regions at the name level doesn’t guarantee a smooth user experience. The network’s invisible hand might throttle, detour, or stall traffic long after DNS has done its part.

In short, DNS is like a courier who hands you the address instantly but has no control over traffic jams or roadblocks on the way. The moment DNS hands off an IP, the real journey starts—one riddled with complexity, delay, and mystery DNS simply doesn’t reveal.

network routing
dns
system delays
internet infrastructure
engineering quirks

Created by @faiqababar