top of page

When the Network Breaks: Dissecting the Cascading Failures That Severely Impacted AWS, Azure, and Cloudflare

  • Writer: Cristian
    Cristian
  • 23 hours ago
  • 8 min read

Level: L400 (Expert)

Reading time: ~25 min

Category: Cloud Networking / Resilience



Between July and October 2025, three of the world’s most sophisticated infrastructure providers — AWS, Microsoft Azure, and Cloudflare — experienced significant outages that revealed strikingly similar architectural patterns. None were caused by hardware failures or cyberattacks. Instead, they were triggered by configuration-driven cascading failures affecting networking and infrastructure control systems: DNS automation race conditions, BGP route withdrawals, and control-plane configuration errors.


This article dissects the root cause of each incident, identifies the common architectural anti-patterns that made them possible, and proposes concrete defensive architectures based on control plane and data plane separation, cell-based isolation, and resilient DNS design. If you architect systems that cannot afford to go dark, this is the post you've been looking for.



The Three Incidents

Before we analyse the patterns, let's establish the facts.


Case Study 1: AWS US-EAST-1 — The DNS Race Condition (October 20, 2025)


On October 19–20, 2025, AWS’s most heavily used region — US-EAST-1 (N. Virginia) — experienced a cascading failure that disrupted thousands of organizations globally. Many widely used applications and services experienced partial or complete outages as downstream dependencies on AWS infrastructure failed.


What happened: The root cause was a latent race condition in DynamoDB’s DNS automation system responsible for managing service endpoints. Independent components responsible for planning and applying DNS updates interacted in an unexpected timing sequence, resulting in the DynamoDB regional endpoint temporarily being published with an empty DNS record.


The cascade: Once DynamoDB's DNS record was empty, client applications couldn't resolve the DynamoDB endpoint. AWS SDK retry behavior caused a surge of retry traffic, creating a retry storm that placed extreme pressure on internal DNS resolution systems. Components responsible for Network Load Balancer health checks and instance registration were indirectly affected by the DNS resolution failures, causing new EC2 instances to fail health checks and delaying service recovery. Even after DynamoDB DNS resolution was restored, EC2’s internal instance-lifecycle management systems struggled to re-establish capacity leases across the fleet quickly enough, slowing recovery. The system entered congestive collapse: leases timed out faster than they could be renewed, creating a cascading recovery failure. A single empty DNS record had become a region-wide outage lasting over fourteen hours.


Duration: Approximately 14–15 hours. DynamoDB DNS was corrupted around 6:49 AM UTC (October 19, 11:48 PM PDT). DynamoDB APIs recovered by 9:25 AM UTC, but EC2’s internal instance-lifecycle management systems struggled to re-establish capacity leases across the fleet. Full EC2 recovery was not achieved until approximately 9:20 PM UTC (1:50 PM PDT on October 20).


The critical insight: The failure exposed a fundamental architectural coupling — the data plane (DNS resolution, traffic routing) depended on the control plane (DNS automation) for runtime availability. When the control plane corrupted the DNS state, there was no independent data plane mechanism to maintain the last known good configuration.


AWS US-EAST-1 DNS Cascading Failure
AWS US-EAST-1 DNS Cascading Failure

Case Study 2: Azure Front Door — Corrupt Configuration Propagation (October 29, 2025)


Nine days after the AWS incident, Azure experienced its own global connectivity failure. Azure Front Door — Microsoft’s global anycast edge service responsible for TLS termination, HTTP routing, and global load balancing for many Azure services — experienced a prolonged outage lasting several hours. Azure Portal, Microsoft Teams, Outlook, Xbox Live, and Azure AD were all impacted.


What happened: A configuration change processed by the control plane produced inconsistent configuration metadata during rollout, which propagated globally across Front Door infrastructure and triggered failures in edge node processing. The payload didn't fail immediately — it passed all health check validations during staged rollout because the failure mode was asynchronous. The corrupted configuration even overwrote the "last known good" (LKG) snapshot, destroying the rollback path.


The cascade: Once the corrupted metadata propagated globally through the staged rollout, the data plane's asynchronous configuration processing exposed a second defect that caused edge node crashes. Front Door edge nodes began refusing incoming connections. Because Front Door sits in front of many critical Azure services, the blast radius was extremely large.


Duration: approximately 8 hours and 24 minutes, from 15:41 UTC on 29 October 2025 until 00:05 UTC on 30 October 2025, with gradual improvement beginning around 18:30 UTC.

The critical insight: Two anti-patterns converged. First, the control plane lacked safeguards to detect configuration inconsistencies before global rollout — a known risk in systems where configuration changes propagate across heterogeneous infrastructure. Second, the corrupted configuration overwrote the LKG snapshot, eliminating the safety net. When your rollback mechanism depends on the same pipeline that caused the failure, you don't have a rollback mechanism.



Case Study 3: Cloudflare 1.1.1.1 — The Dormant BGP Configuration Error (July 14, 2025)


On July 14, 2025, Cloudflare's 1.1.1.1 DNS resolver — used by hundreds of millions of devices worldwide — went dark for 62 minutes. Initial speculation pointed to a BGP hijack after Tata Communications India (AS4755) was observed advertising 1.1.1.0/24, but Cloudflare's post-incident analysis confirmed the cause was entirely internal.


What happened: On June 6, 2025 — five weeks before the outage — an engineer introduced a configuration change to prepare for a future pre-production DLS service. The change inadvertently linked the 1.1.1.1 resolver's IP prefixes to a non-production service topology. This misconfiguration was dormant and invisible for 38 days.


On July 14, a second change added an offline data center to the pre-production service topology for internal testing. This change triggered a global refresh of network configuration. Because the 1.1.1.1 prefixes were incorrectly linked to this topology, the refresh caused BGP withdrawal of those prefixes from every production data center worldwide. The resolver simply vanished from the internet.


The cascade: The concurrent BGP hijack by AS4755 was opportunistic, not causal — but it complicated diagnosis. Cloudflare's recovery was slowed by the need to distinguish between the internal configuration error and the external hijack.

Duration: 62 minutes (21:52 to 22:54 UTC). Service began recovering after the configuration revert, with full restoration by 22:54 UTC.


The critical insight: The failure was a textbook example of latent configuration drift — a misconfiguration introduced weeks earlier, invisible to all monitoring, that only manifested when an unrelated change triggered a global configuration refresh. No test caught it because the linkage was never exercised in production conditions. The legacy configuration management system lacked progressive deployment methodology — changes applied globally and atomically rather than incrementally with health monitoring at each stage.



The Common DNA: Three Anti-Patterns


Despite operating at different layers and involving different technologies, these incidents reveal three recurring architectural anti-patterns.


Anti-Pattern 1: Control Plane and Data Plane Coupling


In all three cases, the data plane’s ability to route traffic depended on the control plane’s ability to manage configuration correctly. When the control plane produced incorrect state — through a race condition (AWS), corrupt configuration propagation (Azure), or a dormant misconfiguration (Cloudflare) — the data plane had no independent mechanism to continue operating.


This is the most dangerous coupling in distributed systems. The control plane changes state; the data plane moves packets. When the data plane requires live control-plane interaction to forward traffic, the system inherits the control plane’s failure modes — you have a single point of failure with extra steps.


The resilient pattern: Data plane components must be able to operate independently using cached or locally replicated state. Route 53 Application Recovery Controller (ARC), for example, provides data-plane-level routing controls that operate independently of the Route 53 control plane. If the control plane degrades, ARC's routing controls can still steer traffic at the data plane level using pre-provisioned failover configurations.


Control Plane vs Data Plane: Where the failure occurred
Control Plane vs Data Plane: Where the failure occurred

Anti-Pattern 2: Global Blast Radius from Configuration Changes


In all three incidents, a single configuration change propagated globally — either atomically (Cloudflare's BGP withdrawal) or through a staged rollout that lacked meaningful health gating (Azure's corrupted LKG). None of the systems contained the blast radius of the configuration change to a subset of infrastructure before expanding.


The AWS incident was regional (US-EAST-1), but the region's outsized importance — and the 14-hour recovery duration driven by cascading EC2 lease failures — made it effectively global in impact. Azure's Front Door rollout reached every edge node before the asynchronous failure manifested. Cloudflare's BGP refresh withdrew prefixes from all production data centers simultaneously.


The resilient pattern: Cell-based architecture — the most effective containment strategy available. Instead of deploying configuration changes across all infrastructure simultaneously, changes propagate cell by cell, with health checks validating each cell before proceeding to the next.


A cell is a complete, isolated unit of deployment. Each cell contains its own compute, storage, networking, and DNS configuration. A failure in Cell A does not propagate to Cell B because they share no mutable state. When combined with shuffle sharding (assigning each customer to a random subset of cells), even a complete cell failure affects only a fraction of traffic.


Anti-Pattern 3: Monitoring That Depends on the System Being Monitored


Perhaps the most insidious pattern: in both the AWS and Azure incidents, the monitoring and health-check systems that should have detected the failure were themselves impacted by it. Components responsible for instance registration and health validation were indirectly affected by the DNS resolution failures. Azure's health check validations passed because the failure mode was asynchronous — the corruption only manifested after the rollout completed.


The resilient pattern: Out-of-band monitoring using independent infrastructure. CloudWatch Synthetics canaries running in separate accounts, external synthetic monitoring (e.g., Route 53 health checks pointing to endpoints from outside the region), and multi-provider observability stacks that don't share failure domains with the system under observation. If your alerting pipeline runs on the same infrastructure it's monitoring, it will fail silently at precisely the moment you need it most.



Defensive Architecture: Building for the Next Outage


Based on the patterns above, here are three concrete architectural recommendations — each mapped to the anti-patterns they address.


1. Decouple Your Data Plane from Your Control Plane

Implementation: Use Route 53 ARC routing controls to provide data-plane-level traffic steering that is independent of the Route 53 control plane. Configure readiness checks to validate that failover targets are healthy before you need them. Pre-provision routing control states so that in a control plane degradation scenario, you can flip traffic at the data plane level.

For DNS specifically, implement multi-provider DNS with at least two independent DNS authorities. Use multi-signer DNSSEC (RFC 8901) to maintain cryptographic integrity across providers without sharing private keys. Ensure TTLs on failover records are low enough (60 seconds) to enable rapid traffic steering, while keeping NS and SOA records at higher TTLs for stability.


2. Contain Blast Radius with Cell-Based Architecture

Implementation: Design your infrastructure as a collection of independent cells, each containing its own load balancer, compute, database replica, and cache layer. Use Route 53 weighted routing or ARC routing controls to distribute traffic across cells. Deploy configuration changes to one cell at a time, validating health metrics (error rate, latency P99, success rate) before proceeding.

Each cell should have its own CI/CD pipeline. A deployment to Cell A should not share any mutable state with Cell B. Even your deployment automation should be cell-scoped — a bug in your deployment pipeline should not be able to affect all cells simultaneously.

The bulkhead pattern (from naval architecture: watertight compartments that prevent a hull breach from sinking the entire ship) is the mental model. Your cells are your compartments.


3. Monitor from Outside Your Blast Radius

Implementation: Deploy CloudWatch Synthetics canaries in separate AWS accounts (cross-account monitoring) to probe your endpoints. Use Route 53 health checks from AWS edge locations — these operate independently of your regional infrastructure. Implement CloudWatch Internet Monitor for path-level visibility into internet routing health. Build composite alarms that correlate signals from multiple independent sources before triggering automated remediation.


For BGP monitoring specifically, subscribe to BGP stream monitoring services and set up alerting for unexpected route withdrawals or origin AS changes for your prefixes. The Cloudflare incident demonstrated that a dormant misconfiguration can withdraw your prefixes without any BGP hijack — your monitoring must cover both external threats and internal misconfigurations.


Resilient DNS Architecture - Reference Design
Resilient DNS Architecture - Reference Design

The Uncomfortable Truth


These outages were not caused by unprecedented technical challenges. They were caused by well-understood failure modes — race conditions, configuration drift, missing validation gates — applied at unprecedented scale. The techniques to prevent them are not theoretical; they are documented, available, and implementable today.


At hyperscale, cascading failures are statistically inevitable. The question is whether your architecture can contain the blast radius when they occur.

Cell-based architectures, control plane and data plane decoupling, multi-provider DNS, and out-of-band monitoring are not premium features — they are baseline requirements for any system where downtime costs more than the engineering effort to prevent it.


Recovery in resilient systems should feel boring. If your incident response requires heroics, your architecture has already failed.

Cristian Critelli is the EMEA Lead for Networking and Resilience Specialist Solutions Architect at AWS focusing on networking and resilience. His upcoming book, Cloud Networking and Resilience (Apress, May 2026), covers these patterns in depth.

The views expressed in this article are the author's own and do not represent the views of Amazon Web Services.

Comments


bottom of page
Cloud Networking and Resilience cover
Cloud Networking and Resilience
By Cristian Critelli · Apress · May 2026 — Pre-order now