Every source behind this page, graded. Filter by kind.
Postmortem
AWS2025-10
Summary of the Amazon DynamoDB Service Disruption in US-EAST-1
The most detailed public description of a DNS record control plane anywhere: planner,
redundant enactors, the race, the empty record, and the admission that the automation
was disabled worldwide afterwards.
Carry forwardYour zone automation is a distributed system; version and fence its writes, including deletes.
aws.amazon.com/message/101925
Postmortem
Meta2021-10
More details about the October 4 outage
The self-dependency incident: DNS servers designed to withdraw their BGP routes on
lost backbone connectivity all did so at once, and the repair tooling resolved through
the thing that failed.
Carry forwardHealth-triggered self-removal needs a floor; repair paths must not resolve through what they repair.
engineering.fb.com
Postmortem
Slack2021-11
What happened during Slack's DNSSEC rollout
A vendor bug in NSEC synthesis for wildcards let resolvers cache a denial of
slack.com's existence; the rollback was fast and irrelevant, because caches held the
wound open for up to 24 hours.
Carry forwardCompute the rollback horizon (the slowest TTL in the chain) before shipping any naming change.
slack.engineering
Postmortem
Cloudflare2025-07
Cloudflare 1.1.1.1 incident on July 14, 2025
A config error dormant since June was shipped globally by an unrelated change's
refresh; 62 minutes without the world's second-largest public resolver.
Carry forwardValidate desired state on every global refresh, not just the delta; latent config is live.
blog.cloudflare.com
Postmortem
Salesforce2021-05
Multi-Instance Service Disruption on May 11-12, 2021
A DNS change pushed through the emergency lane without an emergency; servers failed
to restart after a zone transfer. Unusually frank about the process failure.
Carry forwardThe change process is part of the naming architecture; close the bypass lane for global-blast changes.
help.salesforce.com
Postmortem
Roblox2022-01
Roblox Return to Service 10/28-10/31 2021
The registry version of this failure: one Consul cluster under everything, a
streaming feature and a BoltDB pathology, and telemetry that depended on the system it
watched. 73 hours.
Carry forwardThe discovery layer is your most critical database; shard it and monitor it from outside itself.
blog.roblox.com
Design doc
Kubernetes SIG-Network2019
KEP-1024: NodeLocal DNS Cache
The accepted design that ended the 5-second-delay era: per-node cache, conntrack
bypass, TCP upstream. The motivation section is a compressed history of everything
wrong with in-cluster DNS.
Carry forwardWhen you cannot fix the client or the kernel, interpose a cache you control on the same host.
github.com/kubernetes/enhancements
RFC
IETF2020-03
RFC 8767: Serving Stale Data to Improve DNS Resiliency
Standardises answering with expired records when the authority is unreachable,
suggested cap seven days, and records Akamai running it in production since 2011.
Carry forwardServe stale on outage signals; keep it away from records whose job is to change.
datatracker.ietf.org/doc/html/rfc8767
Design doc
gRPCmaintained
gRPC Name Resolution (doc/naming.md)
DNS as the default name system, deliberately behind a plugin interface so deployments
can substitute xDS or registry resolvers per channel.
Carry forwardIf you own the client, resolution is a swappable policy, not a fact of the platform.
github.com/grpc/grpc/doc/naming.md
Issue thread
Kubernetes2017-12
#56903: DNS intermittent delays of 5s
The thread where a platform's worth of users converged on the same symptom and traced
it to kernel conntrack races on parallel UDP queries, not to any DNS server.
Carry forwardA resolution SLO must include the client side; the server fleet can be perfect while every lookup stalls 5 s.
github.com/kubernetes/kubernetes/issues/56903
Issue thread
CoreDNS2020-11
#4309: Add support for serving stale data according to RFC 8767
Serve-stale demand arriving in cluster DNS by RFC number; the cache plugin gained
serve_stale as a result.
Carry forwardResilience features standardised for the public DNS migrate inward; check what your resolver already ships.
github.com/coredns/coredns/issues/4309
Mailing list
musl2020-04
Thread: TCP support in the stub resolver
The recorded argument for the rejected approach: truncated UDP answers treated as
acceptable, bounded, and cheaper than TCP round trips. Every Alpine image carried the
consequence.
Carry forwardA rejected fix in a dependency is a standing production risk you inherit silently; read your libc's position, not just its docs.
openwall.com/lists/musl/2020/04/21/8
Release notes
musl2023-05
musl 1.2.4 released: TCP fallback lands
The reversal, in the project's own words: "fixing the longstanding inability to query
large DNS records". A decade of ecosystem pain closed in one release.
Carry forwardPin base images with eyes open: resolver behaviour is part of the image contract.
openwall.com/lists/musl/2023/05/02/1
Docs-as-source
Netflixchecked 2026
Eureka at a glance
Netflix's own statement of why internal traffic bypasses DNS: registry with 30-second
heartbeats, ~90-second eviction, and clients that survive registry outages on cached
state.
Carry forwardThe client-side registry cache is the load-bearing feature; a registry without it is just slower DNS.
github.com/Netflix/eureka/wiki
Paper
MIT (Jung, Sit, Balakrishnan, Morris)2001
DNS Performance and the Effectiveness of Caching
The foundational measurement: cutting A-record TTLs to a few hundred seconds barely
hurts hit rates, NS-record caching is what protects the system, and 23% of traced
lookups got no answer at all.
Carry forwardShort leaf TTLs are cheap; long TTLs high in the tree are what actually shield you.
conferences.sigcomm.org (PDF)
Paper
Moura, Heidemann, Hardaker, Schmidt2019
Cache Me If You Can: Effects of DNS Time-to-Live (IMC '19)
TTL as a latency lever, measured: one ccTLD's raise from five minutes to a day cut
median latency from 183 ms to 28.7 ms, and the operator changed production after
seeing the data.
Carry forwardAudit inherited TTLs; someone chose them years ago for reasons that no longer apply.
dl.acm.org/10.1145/3355369.3355568
Paper
Moura et al.2018
When the Dike Breaks: Dissecting DNS Defenses During DDoS (IMC '18)
Caching quantified as the DNS's principal outage defence: full caches carry about
half of clients through an authoritative outage, while client retries multiply load on
the struggling authority up to 8×.
Carry forwardCache warmth is an availability asset; measure your resolvers' hit rates as reliability, not just performance.
dl.acm.org/10.1145/3278532.3278534
Talk
Slack at USENIX SREcon22 EMEA2022-10
Slack's DNSSEC Rollout: Third Time's the Outage
The conference version of the postmortem, with the attempt-by-attempt history the
blog compresses; the title alone records that two aborted rollouts preceded the
incident. Slides linked from the session page.
Carry forwardAborted attempts are evidence about your rollback story; two clean aborts do not prove the third will roll back.
usenix.org/conference/srecon22emea
Talk
Moura at RIPE 772018-10
When the Dike Breaks (operator presentation)
The IMC '18 findings presented to the operator community that runs the resolvers in
question; the slide deck is the fastest way into the caching-as-defence data.
Carry forwardThe measured defence of the whole system is caches you do not operate; design assuming both their help and their memory.
ripe77.ripe.net (slides PDF)
Eng blog
Stripe2019
The secret life of DNS packets: investigating complex networks
The clearest published internal resolution path: Unbound on every host and as a
shared fleet, per-domain forwarding rules, per-rule timeout state, and the metrics
pipeline watching it all.
Carry forwardIsolate timeout and retry state per upstream rule, or one slow forwarder poisons the rest.
stripe.com/blog/secret-life-of-dns
Eng blog
Martynas Pumputis2018-08
Racy conntrack and DNS lookup timeouts
The kernel-level diagnosis behind the 5-second delays, written by the engineer who
then fixed part of it upstream: parallel A and AAAA queries over one socket race in
conntrack insertion and one packet is silently dropped.
Carry forwardUDP through NAT is where resolution goes to be flaky; prefer TCP or NOTRACK on the DNS path.
lambda.lt/blog/2018/racy_conntrack
Eng blog
Marco Pracucci2019
Kubernetes pods, /etc/resolv.conf ndots:5, and application performance
The measurement that made ndots:5 famous: every external lookup from a
default pod walks the search domains first, multiplying queries and latency.
Carry forwardUse FQDNs with trailing dots or per-pod dnsConfig; defaults chosen for cluster names tax every external call.
pracucci.com
Analysis
Geoff Huston / APNIC2021-12
ISP Column: notes from DNS-OARC 36
Independent expert corroboration of the Slack mechanism: the NSEC type-bitmap error
and why aggressively-caching validating resolvers kept denying slack.com after the
rollback.
Carry forwardNegative answers are cached too; a bug that synthesises denials is worse than one that drops queries.
potaroo.net/ispcol/2021-12/oarc36
Analysis
Kentik2021-10
Facebook's historic outage, explained
The outside view of Meta's incident: global BGP monitoring watched the nameserver
prefixes withdraw minutes before resolution failed worldwide.
Carry forwardExternal synthetic resolution checks see what your internal monitoring, inside the blast radius, cannot.
kentik.com/blog
Analysis
Internet Society2025-07
Lessons from the Cloudflare 1.1.1.1 outage: a resilience perspective
Puts the 62 minutes in ecosystem terms: ~1.9 trillion queries a day, and the plain
warning that one upstream resolver, however good, is a single point of failure.
Carry forwardConfigure resolver diversity across providers, not just across addresses of one provider.
pulse.internetsociety.org
Vendor
AWSchecked 2026
Amazon Route 53 Service Level Agreement
The 100% availability SLA on query answering, and, by its silence, the absence of any
equivalent commitment on record changes. The asymmetry is the thesis of this page in
contract form.
Carry forwardRead what the SLA covers; the write path of your naming layer carries no availability promise anywhere in the industry.
aws.amazon.com/route53/sla
Vendor
AWS Well-Architected2025-02
REL11-BP04: Rely on the data plane and not the control plane during recovery
AWS's own doctrine: Route 53's control plane lives in us-east-1, its data plane
in 200+ PoPs, and failover should ride health checks, never emergency record edits.
Published months before the October 2025 incident tested the write path.
Carry forwardAnything you must do during an incident should require zero record writes.
docs.aws.amazon.com
Vendor
ThousandEyes2025-10
AWS Outage Analysis: October 20, 2025
Independent external timeline of the DynamoDB incident, corroborating the repair time
and the long dependent-service tail after the record was fixed.
Carry forwardFixing the record is the start of recovery, not the end; budget for the dependency tail.
thousandeyes.com/blog