
<rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:media="http://search.yahoo.com/mrss/">
    <channel>
        <title><![CDATA[ The Cloudflare Blog ]]></title>
        <description><![CDATA[ Get the latest news on how products at Cloudflare are built, technologies used, and join the teams helping to build a better Internet. ]]></description>
        <link>https://blog.cloudflare.com</link>
        <atom:link href="https://blog.cloudflare.com/" rel="self" type="application/rss+xml"/>
        <language>en-us</language>
        <image>
            <url>https://blog.cloudflare.com/favicon.png</url>
            <title>The Cloudflare Blog</title>
            <link>https://blog.cloudflare.com</link>
        </image>
        <lastBuildDate>Sat, 11 Apr 2026 04:24:38 GMT</lastBuildDate>
        <item>
            <title><![CDATA[How does Cloudflare’s Speed Test really work?]]></title>
            <link>https://blog.cloudflare.com/how-does-cloudflares-speed-test-really-work/</link>
            <pubDate>Mon, 27 Oct 2025 12:00:00 GMT</pubDate>
            <description><![CDATA[ In this blog post we’ll discuss how Cloudflare thinks about measuring Internet quality, how our own Cloudflare speed test works, and our future plans for providing Internet measurement tools that help everyone build a better Internet. ]]></description>
            <content:encoded><![CDATA[ <p>Anyone can <i>say </i>their Internet service is fast, but how do you really know if it is? Just as we check our temperature to see if a fever has gone down or test the air to know its quality, users of the Internet run speed tests to answer: “How fast is my connection?” Since it is common to talk about Internet connectivity in terms of “speed,” you might think this is a straightforward concept to measure, but there are actually many different ways to do so. For Cloudflare’s Speed Test, we set out to measure your connection’s quality and what it realistically provides, rather than focusing on peak bandwidth. In this blog post we’ll discuss how Cloudflare thinks about measuring Internet quality, how our own Cloudflare speed test works, and our future plans for providing Internet measurement tools that help everyone build a better Internet. </p>
    <div>
      <h2>What is a speed test? </h2>
      <a href="#what-is-a-speed-test">
        
      </a>
    </div>
    <p>Before diving into Cloudflare’s speed test, let’s take a moment to understand what a speed test actually is. There’s no <i>one</i> definition of what Internet “speed” means, but what people are typically referring to is the measurement of <i>throughput</i> or the rate at which data is sent between sender and receiver within a network. Throughput is typically expressed in mega or gigabits per second (Mbps or Gbps), which are units that end users are usually familiar with, due to how commercial Internet Service Providers (ISPs) often market their packages (500 Mbps, 1 Gbps, increasingly 10 Gbps and so on). In light of this popular association, speed tests are typically designed to send data until the maximum throughput of a connection is met.</p><p>Most speed tests are run from end user devices such as laptops, mobile phones and sometimes routers, but where the test sends data <i>to</i>, meaning where the server is in the network, differs from test to test. These variances can impact results dramatically. For example, consider a user in New York City running one speed test that sends data to New Jersey, while another connects to a server in Singapore. Even if both tests use the exact same methodology, their results will differ noticeably due to the distance they have to travel and the network links they have to cross to get there. </p><p>Server locations are one of many ways speed tests vary from one another. They may also differ in how the test decides to send more data, the number of TCP/UDP streams it opens to send data, which congestion control algorithm it uses, how it aggregates the samples it collects, etc. Each of these decisions influences what the end user sees as their final “speed”. It is also common for speed tests to measure <a href="https://www.cloudflare.com/learning/performance/glossary/what-is-latency/"><u>latency</u></a>, packet loss and sometimes latency variation (jitter), though as important as they are, and as we’ll discuss in more detail below, these metrics are not always intuitive for end users to understand. </p><p>Speed tests gained popularity in the early days of the Internet, when bandwidth was the primary obstacle to a quality end user experience. But as the Internet has progressed and its use cases have expanded, bandwidth has become less of a limitation and, in some geographies, almost plentiful. Now, other challenges that can degrade your video calls or gaming sessions, such as latency under load (<a href="https://en.wikipedia.org/wiki/Bufferbloat"><u>bufferbloat</u></a>) and packet loss, have become the industry focus as key metrics to optimize when improving Internet connectivity. Nevertheless, speed tests remain a valuable tool for assessing Internet quality, in part because of their popularity with end users. Speed tests are by far the most well-known kind of Internet measurement and for that reason, Cloudflare is proud to provide one.</p>
    <div>
      <h2>How does Cloudflare’s Speed Test work? </h2>
      <a href="#how-does-cloudflares-speed-test-work">
        
      </a>
    </div>
    <p>When you visit <a href="https://speed.cloudflare.com/"><u>Cloudflare’s Speed Test</u></a>, results start appearing right away. That’s because as soon as the page loads, your browser begins sending data requests to Cloudflare’s Network Quality API and recording how long each exchange takes. The API runs on Cloudflare’s global network using <a href="https://workers.cloudflare.com/"><u>Workers</u></a>, leveraging our <a href="https://www.cloudflare.com/learning/cdn/glossary/anycast-network/"><u>anycast</u></a> architecture to automatically route you to the nearest data center.</p>
          <figure>
          <img src="https://cf-assets.www.cloudflare.com/zkvhlag99gkb/2PGrZTYBlsK0kW8H8EY97T/abc44cdad820c143756dc4056883b9ee/image4.png" />
          </figure><p>Unlike many other speed test methodologies that focus on absolute maximum throughput, Cloudflare’s Speed Test doesn’t try to saturate your connection. Instead, it sends a series of data payloads of predefined sizes—what we call data blocks—to assess your connection’s quality under more realistic usage patterns. Each data block is transmitted a fixed number of times, and once the sequence completes, the detailed results are displayed in box-and-whisker plots to show the observed ranges and percentiles.</p><p>To generate each individual result, we record the time it takes to establish the connection and the time required for the data transfer to finish, subtracting any server “thinking time”. Establishing a connection involves exchanging individual packets back and forth and happens as quickly as network latency permits, while the data transfer time is limited by network bandwidth, congestion, server limits, and even the amount of data transferred—perhaps surprisingly, smaller transfers also have their throughput limited by network latency.</p><p>As throughput measurements run, the test also sends empty requests at regular intervals to measure loaded latency: the round-trip time (RTT) it takes for data to travel to Cloudflare’s network and back while your connection is busy. Loaded latency differs from idle latency, which measures RTT to Cloudflare’s network when no data is being transferred. Idle latency is recorded first, as soon as the page loads, and reflects the lowest expected latency. The test also measures loaded and idle jitter, the average variation between consecutive RTT measurements—reflecting network stability—and packet loss, the percentage of packets that fail to reach their destination when relayed through a WebRTC TURN server over a period of time.</p><p>Throughout the test, you can watch the aggregate results for each metric update in real time, but the final result isn’t calculated until all test sequences are complete. Once they are, the full set of measurements is used to compute an <a href="https://developers.cloudflare.com/speed/aim/"><u>Aggregated Internet Measurement</u></a> (AIM) score—a metric designed to translate your connection’s performance into end-user-friendly terms, such as how well it supports streaming, gaming, or video conferencing. The AIM score provides a convenient summary of overall performance, but in this deep dive, we’ll focus on what the detailed Cloudflare Speed Test results actually tell you—and what they don’t—about your Internet connection.</p>
    <div>
      <h2>What do the Cloudflare Speed Test results represent? </h2>
      <a href="#what-do-the-cloudflare-speed-test-results-represent">
        
      </a>
    </div>
    <p>A defining feature of Cloudflare’s Speed Test is that it runs on Cloudflare’s own global network. Other speed test providers place their servers closer to end users or major exchange points to capture how the network performs under specific conditions. Cloudflare’s Speed Test, however—and any test built on our Network Quality API—measures performance in a context that mirrors what users actually do every day: accessing content delivered through Cloudflare’s network.</p><p>Additionally, since Cloudflare’s Speed Test does not strive to saturate a user’s connection, its download and upload tests do not technically measure maximum throughput, but rather the rate at which you can reliably expect to send various sizes of data. While this may seem like a small distinction, it means that Cloudflare’s Speed Test is not trying to show what your connection is capable of at its peak, but rather what it typically delivers—its <i>quality</i>.</p><p>Day to day, most users are not maximizing their available bandwidth. Video conferencing, streaming, web browsing, and even gaming all require minimal bandwidth and are much more sensitive to latency, jitter, and packet loss. In other words, achieving a high score on a throughput-saturating speed test—one that mirrors the service level you purchased from your ISP—does not necessarily equate to a high-quality online experience. The finer details of which metrics matter most for evaluating network quality depend on individual use cases. For example, a gamer might benefit more from lower latency (lower lag), while a remote worker may benefit more from lower jitter (smoother video conferencing). For the majority of modern use cases, throughput is just one of many metrics that contribute to a quality Internet connection</p><p>It’s also important to note that Cloudflare’s Speed Test runs primarily from an end-user device, within the browser. As a result, its measurements include potential bottlenecks beyond the access network—such as the browser itself, the local Wi-Fi network, and other factors. This means the results don’t solely reflect the performance of your ISP, but rather the combined performance of all components along the path to the content.</p><p>It’s common for end users to run speed tests to check whether they’re getting the Internet service they pay for. While that’s a perfectly reasonable question, there’s no standardized definition for how to answer it. This means that no speed test—including Cloudflare’s—is a definitive measure of ISP service. However, it is a helpful resource for assessing the quality of experience when accessing content delivered by Cloudflare’s vast global network.</p>
    <div>
      <h2>How do I interpret my Cloudflare Speed Test results?</h2>
      <a href="#how-do-i-interpret-my-cloudflare-speed-test-results">
        
      </a>
    </div>
    <p>In this section, we’ll interpret the results from two speed test examples: the first test scoring <b>“Great”</b> on all three <a href="https://developers.cloudflare.com/speed/aim/"><u>network quality rubrics</u></a>, and the second scoring a mere <b>“Average”</b>. In your own tests, you may get a consistent score, or you may get different scores for video streaming, online gaming and video chatting, depending on how well-balanced your Internet connection is over these three use cases.</p><p>From these scores we already get a high-level interpretation of the test results. You can expect consistently good quality from the <b>“Great”</b> connection and reasonable quality with occasional glitches from the <b>“Average”</b> connection – but to understand <i>why</i>, we must look at the numbers.</p>
    <div>
      <h3>Example 1: Wi-Fi over a residential fiber connection</h3>
      <a href="#example-1-wi-fi-over-a-residential-fiber-connection">
        
      </a>
    </div>
    
          <figure>
          <img src="https://cf-assets.www.cloudflare.com/zkvhlag99gkb/42aa3c4PsRf5R9q3FxF2Af/e0125315a1417cf7040060fa7012a21a/image5.png" />
          </figure><p>This test ran from a laptop connected over Wi-Fi inside a single-family home served by a 500 Mbps residential fiber connection, and we can already see that we can’t quite reach the contracted download speed, topping off at 406 Mbps. The culprit here is Wi-Fi, which is usually the bottleneck on high-speed connections, and a common cause of observable instability.</p><p>But here we can see that we’re probably in an area of the house with good reception and without significant activity from neighboring Wi-Fi networks (the two most common causes of poor Wi-Fi). We can tell from the relatively consistent shape of the download and upload graphs, and from the low jitter.</p><p>The latency is well within what’s expected in an urban area (and could be 2 milliseconds lower by switching to a wired connection), and the difference between the numbers at idle and the numbers while loaded (downloading or uploading) is relatively small. This means you can expect to attend a video call while your files synchronize to and from your cloud drive of choice in the background, without any glitches. Large differences between the idle and loaded numbers are a common indicator of a poor connection—if you observe differences approaching 100 milliseconds or more over a wired connection, your ISP is likely at fault.</p><blockquote><p><i>Higher-bandwidth connections should display lower idle to loaded latency differences. The higher the bandwidth, the less likely it is to be fully utilized in practice. However, congestion further upstream in the network can drive these numbers up, especially if your ISP is oversubscribing its capacity.</i></p></blockquote><p>You might be wondering why the download and upload graphs start slow and ramp up. This happens because data transfers progressively send more packets at once for each required acknowledgment, starting by one acknowledgment for each packet. The consequence is that small data transfers are limited in speed by latency—the longer it takes for a packet to reach its destination, the longer it takes the acknowledgment packet to make its way back to the sender, and the longer it takes for the next data packet to be sent.</p><p>If you’re technically inclined, you may enjoy learning about <a href="https://en.wikipedia.org/wiki/TCP_congestion_control"><u>congestion control algorithms</u></a>, but that topic alone can fill entire books. For now, you can see this effect in the charts for each download size: transfers smaller than 10 MB can’t utilize the full bandwidth of this connection.</p>
          <figure>
          <img src="https://cf-assets.www.cloudflare.com/zkvhlag99gkb/38crAmjPGHbeSQPhCrjUR9/4cb604373b23a92add26224fd22d710b/image2.png" />
          </figure><p>If you’re left wondering if this means that your normal day-to-day web browsing, composed primarily of relatively small data transfers, is mostly unable to fully utilize the available bandwidth above a certain level, then you have successfully grasped one of the reasons why pure speed is no longer the main indicator of quality of experience in modern broadband connections.</p>
    <div>
      <h3>Example 2: Cellular 5G connection</h3>
      <a href="#example-2-cellular-5g-connection">
        
      </a>
    </div>
    
          <figure>
          <img src="https://cf-assets.www.cloudflare.com/zkvhlag99gkb/38bPiw8YyT0zxzUZsbhmcd/acc76a83c616ca7de10b3219b417eca7/image1.png" />
          </figure><p>The second test ran from the same laptop using a cellular 5G connection, and the results are very different. The speeds are much lower and inconsistent over time, the latency numbers are higher (especially under load), and the latency jitter is quite high.</p><p>From the download and upload speeds we can guess that we’re probably not in a densely populated area—in areas of dense 5G coverage you can expect higher speeds and lower latencies. On the other hand, in densely populated areas you can also expect more people to be using the network at the same time, driving speeds down and latencies up (due to congestion). From the detailed latency charts we can observe how irregular latencies are in this case, with some numbers above 100 milliseconds. </p>
          <figure>
          <img src="https://cf-assets.www.cloudflare.com/zkvhlag99gkb/1BxebFqhpduYBbCrBeou4p/adebd47d72e8af8bcdb0351f25301baa/image3.png" />
          </figure><p>Connection quality and convenience are often at odds with each other. The convenience of being able to access the Internet from anywhere in your house, or from a park or the beach, comes with quality tradeoffs. The Cloudflare Speed Test reports allows you to better understand those tradeoffs, <a href="https://radar.cloudflare.com/quality"><u>compare your results</u></a> against your peers or other available providers, and make more informed choices.</p>
    <div>
      <h2>Why does Cloudflare provide a speed test?</h2>
      <a href="#why-does-cloudflare-provide-a-speed-test">
        
      </a>
    </div>
    <p>Cloudflare provides its speed test to empower end users with greater insight into their connectivity and to help improve the Internet by offering transparency into how it performs. The engine that runs the test is <a href="https://github.com/cloudflare/speedtest"><u>open source</u></a>, which means that anyone can use our speed test to facilitate their own research and can always verify how the results are produced. To enable researchers, policymakers, network operators, and other stakeholders to analyze Internet connectivity, all results from Cloudflare’s Speed Tests are published to Measurement Lab’s <a href="https://www.measurementlab.net/blog/cloudflare-aimscoredata-announcement/"><u>public Internet measurement dataset</u></a> in BigQuery and are also accessible through Cloudflare’s <a href="https://radar.cloudflare.com/quality"><u>Radar API</u></a>. We share this data to advance open Internet research, but every result is anonymized to protect user privacy and is never used for commercial purposes.</p>
    <div>
      <h2>What’s next for Cloudflare’s Speed Test? </h2>
      <a href="#whats-next-for-cloudflares-speed-test">
        
      </a>
    </div>
    <p>Originally developed in 2020, Cloudflare’s speed test has become a go-to resource for measuring end user network quality. In particular, we receive a lot of positive feedback about its easy-to-understand user interface and the metrics that it reports alongside throughput.</p><p>But at Cloudflare, we are always improving – so here’s what we’re planning to make Cloudflare’s speed test even better.</p><p><b>Increased Measurement</b></p><p>We’re continuing to expand the reach and scalability of Cloudflare’s Network Quality API to make it easier for third parties to integrate and use. Our goal is to empower customers to measure their users' connectivity by utilizing Cloudflare's network. We’re already proud to partner with UNICEF, which uses Cloudflare’s Speed Test as part of its Giga project to connect every school in the world to the Internet, and with <a href="https://orb.net/docs/getting-started/what-is-orb"><u>Orb</u></a>, which enables end users to continuously monitor the quality of their Internet connections from any platform or device using Cloudflare’s Network Quality API as part of its diagnostic measurement suite. Throughout 2026, we plan to significantly increase the number of third parties using our Speed Test and Network Quality API to power their own measurement tools and initiatives.</p><p><b>Additional Capabilities</b></p><p>To make the Speed Test more valuable for third parties, we’re also developing new capabilities that enable more detailed performance analysis. This includes support for higher throughput measurements—which, while not the sole indicator of connection quality, remain important for diagnosing network performance, especially in enterprise or shared-office environments where multiple users share the same connection. These enhancements will help make our platform a more comprehensive tool for understanding and improving network health.</p><p><b>Improved Diagnostics</b></p><p>Many users turn to speed tests not only to verify that they’re getting the service they’ve paid for, but also to diagnose connectivity issues. We want to make that diagnostic process even more effective. Our goal is to expose richer metrics and more advanced functionality to help users answer key questions, such as: Where’s the bottleneck? Is it within my local network or my ISP’s? Does this issue occur only with specific applications? Is it unique to me, or are others in my region experiencing it too? By providing deeper insight into these questions, we aim to make Cloudflare’s Speed Test a more powerful tool for understanding and improving real-world Internet performance.</p>
    <div>
      <h2>Try It Now</h2>
      <a href="#try-it-now">
        
      </a>
    </div>
    <p>Try running a Cloudflare Speed Test to test your connectivity today by visiting <a href="http://speed.cloudflare.com"><u>speed.cloudflare.com</u></a>.</p> ]]></content:encoded>
            <category><![CDATA[Research]]></category>
            <category><![CDATA[Speed]]></category>
            <guid isPermaLink="false">6JKtIeRYl1gOCq1Jf2yonN</guid>
            <dc:creator>Lai Yi Ohlsen</dc:creator>
            <dc:creator>Carlos Rodrigues</dc:creator>
        </item>
        <item>
            <title><![CDATA[Explore your Cloudflare data with Python notebooks, powered by marimo]]></title>
            <link>https://blog.cloudflare.com/marimo-cloudflare-notebooks/</link>
            <pubDate>Wed, 16 Jul 2025 13:00:00 GMT</pubDate>
            <description><![CDATA[ We’ve partnered with marimo to bring their best-in-class Python notebook experience to your Cloudflare data. ]]></description>
            <content:encoded><![CDATA[ <p>Many developers, data scientists, and researchers do much of their work in Python notebooks: they’ve been the de facto standard for data science and sharing for well over a decade. Notebooks are popular because they make it easy to code, explore data, prototype ideas, and share results. We use them heavily at Cloudflare, and we’re seeing more and more developers use notebooks to work with data – from analyzing trends in HTTP traffic, querying <a href="https://developers.cloudflare.com/analytics/analytics-engine/"><u>Workers Analytics Engine</u></a> through to querying their own <a href="https://blog.cloudflare.com/r2-data-catalog-public-beta/"><u>Iceberg tables stored in R2</u></a>.</p><p>Traditional notebooks are incredibly powerful — but they were not built with collaboration, reproducibility, or deployment as data apps in mind. As usage grows across teams and workflows, these limitations face the reality of work at scale.</p><p><a href="https://marimo.io/"><b><u>marimo</u></b></a> reimagines the notebook experience with these <a href="https://marimo.io/blog/lessons-learned"><u>challenges in mind</u></a>. It’s an <a href="https://github.com/marimo-team/marimo"><u>open-source</u></a> reactive Python notebook that’s built to be reproducible, easy to track in Git, executable as a standalone script, and deployable. We have partnered with the marimo team to bring this streamlined, production-friendly experience to Cloudflare developers. Spend less time wrestling with tools and more time exploring your data.</p><p>Today, we’re excited to announce three things:</p><ul><li><p><a href="https://notebooks.cloudflare.com/html-wasm/_start"><u>Cloudflare auth built into marimo notebooks</u></a> – Sign in with your Cloudflare account directly from a notebook and use Cloudflare APIs without needing to create API tokens</p></li><li><p><a href="https://github.com/cloudflare/notebook-examples"><u>Open-source notebook examples</u></a> – Explore your Cloudflare data with ready-to-run notebook examples for services like <a href="https://developers.cloudflare.com/r2/"><u>R2</u></a>, <a href="https://developers.cloudflare.com/workers-ai/"><u>Workers AI</u></a>, <a href="https://developers.cloudflare.com/d1/"><u>D1</u></a>, and more</p></li><li><p><a href="https://github.com/cloudflare/containers-demos"><u>Run marimo on Cloudflare Containers</u></a> – Easily deploy marimo notebooks to Cloudflare Containers for scalable, long-running data workflows</p></li></ul><p>Want to start exploring your Cloudflare data with marimo right now? Head over to <a href="http://notebooks.cloudflare.com"><u>notebooks.cloudflare.com</u></a>. Or, keep reading to learn more about marimo, how we’ve made authentication easy from within notebooks, and how you can use marimo to explore and share notebooks and apps on Cloudflare.</p>
    <div>
      <h3>Why marimo?</h3>
      <a href="#why-marimo">
        
      </a>
    </div>
    <p>marimo is an <a href="https://docs.marimo.io/"><u>open-source</u></a> reactive Python notebook designed specifically for working with data, built from the ground up to solve many problems with traditional notebooks.</p><p>The core feature that sets marimo apart from traditional notebooks is its <a href="https://marimo.io/blog/lessons-learned"><u>reactive execution model</u></a>, powered by a statically inferred dataflow graph on cells. Run a cell or interact with a <a href="https://docs.marimo.io/guides/interactivity/"><u>UI element</u></a>, and marimo either runs dependent cells or marks them as stale (your choice). This keeps code and outputs consistent, prevents bugs before they happen, and dramatically increases the speed at which you can experiment with data. </p><p>Thanks to reactive execution, notebooks are also deployable as data applications, making them easy to share. While you can run marimo notebooks locally, on cloud servers, GPUs — anywhere you can traditionally run software — you can also run them entirely in the browser <a href="https://docs.marimo.io/guides/wasm/"><u>with WebAssembly</u></a>, bringing the cost of sharing down to zero.</p><p>Because marimo notebooks are stored as Python, they <a href="https://marimo.io/blog/python-not-json"><u>enjoy all the benefits of software</u></a>: version with Git, execute as a script or pipeline, test with pytest, inline package requirements with uv, and import symbols from your notebook into other Python modules. Though stored as Python, marimo also <a href="https://docs.marimo.io/guides/working_with_data/sql/"><u>supports SQL</u></a> and data sources like DuckDB, Postgres, and Iceberg-based data catalogs (which marimo's <a href="https://docs.marimo.io/guides/generate_with_ai/"><u>AI assistant</u></a> can access, in addition to data in RAM).</p><p>To get an idea of what a marimo notebook is like, check out the embedded example notebook below:</p><div>
   <div>
       
   </div>
</div>
<p></p>
    <div>
      <h3>Exploring your Cloudflare data with marimo</h3>
      <a href="#exploring-your-cloudflare-data-with-marimo">
        
      </a>
    </div>
    <p>Ready to explore your own Cloudflare data in a marimo notebook? The easiest way to begin is to visit <a href="http://notebooks.cloudflare.com"><u>notebooks.cloudflare.com</u></a> and run one of our example notebooks directly in your browser via <a href="https://webassembly.org/"><u>WebAssembly (Wasm)</u></a>. You can also browse the source in our <a href="https://github.com/cloudflare/notebook-examples"><u>notebook examples GitHub repo</u></a>.</p><p>Want to create your own notebook to run locally instead? Here’s a quick example that shows you how to authenticate with your Cloudflare account and list the zones you have access to:</p><ol><li><p>Install <a href="https://docs.astral.sh/uv/"><u>uv</u></a> if you haven’t already by following the <a href="https://docs.astral.sh/uv/getting-started/installation/"><u>installation guide</u></a>.</p></li><li><p>Create a new project directory for your notebook:</p></li></ol>
            <pre><code>mkdir cloudflare-zones-notebook
cd cloudflare-zones-notebook</code></pre>
            <p>3. Initialize a new uv project (this creates a <code>.venv</code> and a <code>pyproject.toml</code>):</p>
            <pre><code>uv init</code></pre>
            <p>4. Add marimo and required dependencies:</p>
            <pre><code>uv add marimo</code></pre>
            <p>5. Create a file called <code>list-zones.py</code> and paste in the following notebook:</p>
            <pre><code>import marimo

__generated_with = "0.14.10"
app = marimo.App(width="full", auto_download=["ipynb", "html"])


@app.cell
def _():
    from moutils.oauth import PKCEFlow
    import requests

    # Start OAuth PKCE flow to authenticate with Cloudflare
    auth = PKCEFlow(provider="cloudflare")

    # Renders login UI in notebook
    auth
    return (auth,)


@app.cell
def _(auth):
    import marimo as mo
    from cloudflare import Cloudflare

    mo.stop(not auth.access_token, mo.md("Please **sign in** using the button above."))
    client = Cloudflare(api_token=auth.access_token)

    zones = client.zones.list()
    [zone.name for zone in zones.result]
    return


if __name__ == "__main__":
    app.run()</code></pre>
            <p>6. Open the notebook editor:</p>
            <pre><code>uv run marimo edit list-zones.py --sandbox</code></pre>
            <p>7. Log in via the OAuth prompt in the notebook. Once authenticated, you’ll see a list of your Cloudflare zones in the final cell.</p><p>That’s it! From here, you can expand the notebook to call <a href="https://developers.cloudflare.com/workers-ai/"><u>Workers AI</u></a> models, query Iceberg tables in <a href="https://developers.cloudflare.com/r2/data-catalog/"><u>R2 Data Catalog</u></a>, or interact with any Cloudflare API.</p>
    <div>
      <h3>How OAuth works in notebooks</h3>
      <a href="#how-oauth-works-in-notebooks">
        
      </a>
    </div>
    <p>Think of OAuth like a secure handshake between your notebook and Cloudflare. Instead of copying and pasting API tokens, you just click “Sign in with Cloudflare” and the notebook handles the rest.</p><p>We built this experience using PKCE (Proof Key for Code Exchange), a secure OAuth 2.0 flow that avoids client secrets and protects against code interception attacks. PKCE works by generating a one-time code that’s exchanged for a token after login, without ever sharing a client secret. <a href="https://auth0.com/docs/get-started/authentication-and-authorization-flow/authorization-code-flow-with-pkce"><u>Learn more about how PKCE works</u></a>.</p><p>The login widget lives in <a href="https://github.com/marimo-team/moutils/blob/main/notebooks/pkceflow_login.py"><u>moutils.oauth</u></a>, a collaboration between Cloudflare and marimo to make OAuth authentication simple and secure in notebooks. To use it, just create a cell like this:</p>
            <pre><code>auth = PKCEFlow(provider="cloudflare")

# Renders login UI in notebook
auth</code></pre>
            <p>When you run the cell, you’ll see a Sign in with Cloudflare button:</p>
          <figure>
          <img src="https://cf-assets.www.cloudflare.com/zkvhlag99gkb/2r3Dmuwcm4AZrhV39Gkhyl/c3f98a3780bc29f1c01ea945621fc005/image2.png" />
          </figure><p>Once logged in, you’ll have a read-only access token you can pass when using the Cloudflare API.</p>
    <div>
      <h3>Running marimo on Cloudflare: Workers and Containers</h3>
      <a href="#running-marimo-on-cloudflare-workers-and-containers">
        
      </a>
    </div>
    <p>In addition to running marimo notebooks locally, you can use Cloudflare to share and run them via <a href="https://developers.cloudflare.com/workers/static-assets/"><u>Workers Static Assets</u></a> or <a href="https://developers.cloudflare.com/containers/"><u>Cloudflare Containers</u></a>.</p><p>If you have a local notebook you want to share, you can publish it to Workers. This works because marimo can export notebooks to WebAssembly, allowing them to run entirely in the browser. You can get started with just two commands:</p>
            <pre><code>marimo export html-wasm notebook.py -o output_dir --mode edit --include-cloudflare
npx wrangler deploy
</code></pre>
            <p>If your notebook needs authentication, you can layer in <a href="https://developers.cloudflare.com/cloudflare-one/policies/access/"><u>Cloudflare Access</u></a> for secure, authenticated access.</p><p>For notebooks that require more compute, persistent sessions, or long-running tasks, you can deploy marimo on our <a href="https://blog.cloudflare.com/containers-are-available-in-public-beta-for-simple-global-and-programmable/"><u>new container platform</u></a>. To get started, check out our <a href="https://github.com/cloudflare/containers-demos/tree/main/marimo"><u>marimo container example</u></a> on GitHub.</p>
    <div>
      <h3>What’s next for Cloudflare + marimo</h3>
      <a href="#whats-next-for-cloudflare-marimo">
        
      </a>
    </div>
    <p>This blog post marks just the beginning of Cloudflare's partnership with marimo. While we're excited to see how you use our joint WebAssembly-based notebook platform to explore your Cloudflare data, we also want to help you bring serious compute to bear on your data — to empower you to run large scale analyses and batch jobs straight from marimo notebooks. Stay tuned!</p> ]]></content:encoded>
            <category><![CDATA[Developer Platform]]></category>
            <category><![CDATA[API]]></category>
            <category><![CDATA[R2]]></category>
            <category><![CDATA[Data Catalog]]></category>
            <category><![CDATA[Notebooks]]></category>
            <guid isPermaLink="false">1oYZ3vFOAUy5PhZyKNm286</guid>
            <dc:creator>Carlos Rodrigues</dc:creator>
            <dc:creator>Jorge Pacheco</dc:creator>
            <dc:creator>Keith Adler</dc:creator>
            <dc:creator>Akshay Agrawal (Guest Author)</dc:creator>
            <dc:creator>Myles Scolnick (Guest Author)</dc:creator>
        </item>
        <item>
            <title><![CDATA[Some TXT about, and A PTR to, new DNS insights on Cloudflare Radar]]></title>
            <link>https://blog.cloudflare.com/new-dns-section-on-cloudflare-radar/</link>
            <pubDate>Thu, 27 Feb 2025 14:00:00 GMT</pubDate>
            <description><![CDATA[ The new Cloudflare Radar DNS page provides increased visibility into aggregate traffic and usage trends seen by our 1.1.1.1 resolver ]]></description>
            <content:encoded><![CDATA[ <p>No joke – Cloudflare's <a href="https://www.cloudflare.com/en-gb/learning/dns/what-is-1.1.1.1/"><u>1.1.1.1 resolver</u></a> was <a href="https://blog.cloudflare.com/dns-resolver-1-1-1-1"><u>launched</u></a> on April Fool's Day in 2018. Over the last seven years, this highly <a href="https://www.dnsperf.com/#!dns-resolvers"><u>performant</u></a> and <a href="https://developers.cloudflare.com/1.1.1.1/privacy/public-dns-resolver/"><u>privacy</u></a>-<a href="https://blog.cloudflare.com/announcing-the-results-of-the-1-1-1-1-public-dns-resolver-privacy-examination"><u>conscious</u></a> service has grown to handle an average of 1.9 Trillion queries per day from approximately 250 locations (countries/regions) around the world. Aggregated analysis of this traffic provides us with unique insight into Internet activity that goes beyond simple Web traffic trends, and we currently use analysis of 1.1.1.1 data to power Radar's <a href="https://radar.cloudflare.com/domains"><u>Domains</u></a> page, as well as the <a href="https://blog.cloudflare.com/radar-domain-rankings"><u>Radar Domain Rankings</u></a>.</p><p>In December 2022, Cloudflare <a href="https://blog.cloudflare.com/the-as112-project/"><u>joined the AS112 Project</u></a>, which helps the Internet deal with misdirected DNS queries. In March 2023, we launched an <a href="https://radar.cloudflare.com/as112"><u>AS112 statistics</u></a> page on Radar, providing insight into traffic trends and query types for this misdirected traffic. Extending the basic analysis presented on that page, and building on the analysis of resolver data used for the Domains page, today we are excited to launch a dedicated DNS page on Cloudflare Radar to provide increased visibility into aggregate traffic and usage trends seen across 1.1.1.1 resolver traffic. In addition to looking at global, location, and <a href="https://www.cloudflare.com/learning/network-layer/what-is-an-autonomous-system/"><u>autonomous system (ASN)</u></a> traffic trends, we are also providing perspectives on protocol usage, query and response characteristics, and <a href="https://www.cloudflare.com/learning/dns/dnssec/how-dnssec-works/"><u>DNSSEC</u></a> usage.</p><p>The traffic analyzed for this new page may come from users that have manually configured their devices or local routers to use 1.1.1.1 as a resolver, ISPs that set 1.1.1.1 as the default resolver for their subscribers, ISPs that use 1.1.1.1 as a resolver upstream from their own, or users that have installed Cloudflare’s <a href="https://one.one.one.one/"><u>1.1.1.1/WARP app</u></a> on their device. The traffic analysis is based on anonymised DNS query logs, in accordance with <a href="https://www.cloudflare.com/privacypolicy/"><u>Cloudflare’s Privacy Policy</u></a>, as well as our <a href="https://developers.cloudflare.com/1.1.1.1/privacy/public-dns-resolver/"><u>1.1.1.1 Public DNS Resolver privacy commitments</u></a>.</p><p>Below, we walk through the sections of Radar’s new DNS page, reviewing the included graphs and the importance of the metrics they present. The data and trends shown within these graphs will vary based on the location or network that the aggregated queries originate from, as well as on the selected time frame.</p>
    <div>
      <h3>Traffic trends</h3>
      <a href="#traffic-trends">
        
      </a>
    </div>
    <p>As with many Radar metrics, the <a href="https://radar.cloudflare.com/dns"><u>DNS page</u></a> leads with traffic trends, showing normalized query volume at a worldwide level (default), or from the selected location or <a href="https://www.cloudflare.com/learning/network-layer/what-is-an-autonomous-system/"><u>autonomous system (ASN)</u></a>. Similar to other Radar traffic-based graphs, the time period shown can be adjusted using the date picker, and for the default selections (last 24 hours, last 7 days, etc.), a comparison with traffic seen over the previous period is also plotted.</p><p>For location-level views (such as <a href="https://radar.cloudflare.com/dns/lv"><u>Latvia</u></a>, in the example below), a table showing the top five ASNs by query volume is displayed alongside the graph. Showing the network’s share of queries from the selected location, the table provides insights into the providers whose users are generating the most traffic to 1.1.1.1.</p>
            <figure>
            
            <img src="https://cf-assets.www.cloudflare.com/zkvhlag99gkb/4tFv24QhHPReek393iHte7/03894de5973a1fed2805f69dcd9323c6/01.png" />
            
            </figure><p>When a country/region is selected, in addition to showing an aggregate traffic graph for that location, we also show query volumes for the <a href="https://en.wikipedia.org/wiki/Country_code_top-level_domain"><u>country code top level domain (ccTLD)</u></a> associated with that country. The graph includes a line showing worldwide query volume for that ccTLD, as well as a line showing the query volume based on queries from the associated location. <a href="https://radar.cloudflare.com/dns/ai#dns-query-volume-for-ai-domains"><u>Anguilla’s</u></a> ccTLD is .ai, and is a popular choice among the growing universe of AI-focused companies. While most locations see a gap between the worldwide and “local” query volume for their ccTLD, Anguilla’s is rather significant — as the graph below illustrates, this size of the gap is driven by both the popularity of the ccTLD and Anguilla’s comparatively small user base. (Traffic for <a href="https://www.cloudflare.com/application-services/products/registrar/buy-ai-domains/">.ai domains</a> from Anguilla is shown by the dark blue line at the bottom of the graph.) Similarly, sizable gaps are seen with other “popular” ccTLDs as well, such as .io (<a href="https://radar.cloudflare.com/dns/io#dns-query-volume-for-io-domains"><u>British Indian Ocean Territory</u></a>), .fm (<a href="https://radar.cloudflare.com/dns/fm#dns-query-volume-for-fm-domains"><u>Federated States of Micronesia</u></a>), and .co (<a href="https://radar.cloudflare.com/dns/co#dns-query-volume-for-co-domains"><u>Colombia</u></a>). A higher “local” ccTLD query volume in other locations results in smaller gaps when compared to the worldwide query volume.</p>
            <figure>
            
            <img src="https://cf-assets.www.cloudflare.com/zkvhlag99gkb/6LXc2OLAoHqAVbgspo5cjb/c01b9f7e90d1d27f66eb3dcb35bf2622/02.png" />
            
            </figure><p>Depending on the strength of the signal (that is, the volume of traffic) from a given location or ASN, this data can also be used to corroborate reported Internet outages or shutdowns, or reported blocking of 1.1.1.1. For example, the <a href="https://radar.cloudflare.com/dns/as8048?dateStart=2025-01-10&amp;dateEnd=2025-02-06"><u>graph below</u></a> illustrates the result of Venezuelan provider <a href="https://radar.cloudflare.com/as8048"><u>CANTV</u></a> reportedly <a href="https://x.com/vesinfiltro/status/1879943715537711233"><u>blocking access to 1.1.1.1</u></a> for its subscribers. A <a href="https://radar.cloudflare.com/dns/as22313?dateStart=2025-01-10&amp;dateEnd=2025-01-23"><u>comparable drop</u></a> is visible for <a href="https://radar.cloudflare.com/as22313"><u>Supercable</u></a>, another Venezuelan provider that also reportedly blocked access to Cloudflare’s resolver around the same time.</p>
            <figure>
            
            <img src="https://cf-assets.www.cloudflare.com/zkvhlag99gkb/1hR11TuJDhzWDFhoCo3Uh7/970ecbc951edd352f80a3b87f607e580/03.png" />
            
            </figure><p>Individual domain pages (like the one for <a href="https://radar.cloudflare.com/domains/domain/cloudflare.com"><u>cloudflare.com</u></a>, for example) have long had a choropleth map and accompanying table showing the <a href="https://radar.cloudflare.com/domains/domain/cloudflare.com#visitor-location"><u>popularity of the domain by location</u></a>, based on the share of DNS queries for that domain from each location. A <a href="https://radar.cloudflare.com/dns#geographical-distribution"><u>similar view</u></a> is included at the bottom of the worldwide overview page, based on the share of total global queries to 1.1.1.1 from each location.</p>
            <figure>
            
            <img src="https://cf-assets.www.cloudflare.com/zkvhlag99gkb/2kchGpH4fmYxmX4up953VC/744632815d78a9a77526e97d8c4d1664/04.png" />
            
            </figure>
    <div>
      <h3>Query and response characteristics</h3>
      <a href="#query-and-response-characteristics">
        
      </a>
    </div>
    <p>While traffic trends are always interesting and important to track, analysis of the characteristics of queries to 1.1.1.1 and the associated responses can provide insights into the adoption of underlying transport protocols, record type popularity, cacheability, and security.</p><p>Published in November 1987, <a href="https://datatracker.ietf.org/doc/html/rfc1035#section-4.2"><u>RFC 1035 notes</u></a> that “<i>The Internet supports name server access using TCP [</i><a href="https://datatracker.ietf.org/doc/html/rfc793"><i><u>RFC-793</u></i></a><i>] on server port 53 (decimal) as well as datagram access using UDP [</i><a href="https://datatracker.ietf.org/doc/html/rfc768"><i><u>RFC-768</u></i></a><i>] on UDP port 53 (decimal).</i>” Over the subsequent three-plus decades, UDP has been the primary transport protocol for DNS queries, falling back to TCP for a limited number of use cases, such as when the response is too big to fit in a single UDP packet. However, as privacy has become a significantly greater concern, encrypted queries have been made possible through the specification of <a href="https://datatracker.ietf.org/doc/html/rfc7858"><u>DNS over TLS</u></a> (DoT) in 2016 and <a href="https://datatracker.ietf.org/doc/html/rfc8484"><u>DNS over HTTPS</u></a> (DoH) in 2018. Cloudflare’s 1.1.1.1 resolver has <a href="https://blog.cloudflare.com/announcing-1111/#toward-a-better-dns-infrastructure"><u>supported both of these privacy-preserving protocols since launch</u></a>. The <a href="https://radar.cloudflare.com/dns#dns-transport-protocol"><b><u>DNS transport protocol</u></b></a> graph shows the distribution of queries to 1.1.1.1 over these four protocols. (Setting up 1.1.1.1 <a href="https://one.one.one.one/dns/"><u>on your device or router</u></a> uses DNS over UDP by default, although recent versions of <a href="https://developers.cloudflare.com/1.1.1.1/setup/android/#configure-1111-manually"><u>Android</u></a> support DoT and DoH. The <a href="https://one.one.one.one/"><u>1.1.1.1 app</u></a> uses DNS over HTTPS by default, and users can also <a href="https://developers.cloudflare.com/1.1.1.1/encryption/dns-over-https/encrypted-dns-browsers/"><u>configure their browsers</u></a> to use DNS over HTTPS.)</p><p>Note that Cloudflare's resolver also services queries over DoH and <a href="https://blog.cloudflare.com/oblivious-dns/"><u>Oblivious DoH (ODoH)</u></a> for <a href="https://developers.cloudflare.com/1.1.1.1/privacy/cloudflare-resolver-firefox/"><u>Mozilla</u></a> and other large platforms, but this traffic is not currently included in our analysis. As such, DoH adoption is under-represented in this graph.</p><p>Aggregated worldwide between February 19 - February 26, distribution of transport protocols was 86.6% for UDP, 9.6% for DoT, 2.0% for TCP, and 1.7% for DoH. However, in some locations, these ratios may shift if users are more privacy conscious. For example, the graph below shows the distribution for <a href="https://radar.cloudflare.com/dns/eg"><u>Egypt</u></a> over the same time period. In that country, the UDP and TCP shares are significantly lower than the global level, while the DoT and DoH shares are significantly higher, suggesting that users there may be more concerned about the privacy of their DNS queries than the global average, or that there is a larger concentration of 1.1.1.1 users on Android devices who have set up 1.1.1.1 using DoT manually. (The 2024 Cloudflare Radar Year in Review found that <a href="https://radar.cloudflare.com/year-in-review/2024/eg#ios-vs-android"><u>Android had an 85% mobile device traffic share in Egypt</u></a>, so mobile device usage in the country leans very heavily toward Android.)</p>
            <figure>
            
            <img src="https://cf-assets.www.cloudflare.com/zkvhlag99gkb/1srd6prVQCUxHvxw8eFNjL/987f2d925120be867174fd04a8c7eb2c/05-b.png" />
            
            </figure><p>RFC 1035 also defined a number of <a href="https://datatracker.ietf.org/doc/html/rfc1035#section-3.3"><u>standard</u></a> and <a href="https://datatracker.ietf.org/doc/html/rfc1035#section-3.4"><u>Internet specific</u></a> resource record types that return the associated information about the submitted query name. The most common record types are <code>A</code> and <code>AAAA</code>, which return the hostname’s IPv4 and IPv6 addresses respectively (assuming they exist). The <a href="https://radar.cloudflare.com/dns#dns-query-type"><b><u>DNS query type</u></b></a> graph below shows that globally, these two record types comprise on the order of 80% of the queries received by 1.1.1.1. Among the others shown in the graph, <a href="https://blog.cloudflare.com/speeding-up-https-and-http-3-negotiation-with-dns/#service-bindings-via-dns"><code><u>HTTPS</u></code></a> records can be used to signal HTTP/3 and HTTP/2 support, <a href="https://www.cloudflare.com/learning/dns/dns-records/dns-ptr-record/"><code><u>PTR</u></code></a> records are used in reverse DNS records to look up a domain name based on a given IP address, and <a href="https://www.cloudflare.com/learning/dns/dns-records/dns-ns-record/"><code><u>NS</u></code></a> records indicate authoritative nameservers for a domain.</p>
            <figure>
            
            <img src="https://cf-assets.www.cloudflare.com/zkvhlag99gkb/3LI2EW249EtFFX5FvlONDg/4b150dfbdd8de5c0e9def9eb18c81d70/06.png" />
            
            </figure><p>A response code is sent with each response from 1.1.1.1 to the client. Six possible values were <a href="https://datatracker.ietf.org/doc/html/rfc1035#section-4.1.1"><u>originally defined in RFC 1035</u></a>, with the list <a href="https://www.iana.org/assignments/dns-parameters/dns-parameters.xhtml#dns-parameters-6"><u>further extended</u></a> in <a href="https://datatracker.ietf.org/doc/html/rfc2136"><u>RFC 2136</u></a> and <a href="https://datatracker.ietf.org/doc/html/rfc2671"><u>RFC 2671</u></a>. <code>NOERROR</code>, as the name suggests, means that no error condition was encountered with the query. Others, such as <code>NXDOMAIN</code>, <code>SERVFAIL</code>, <code>REFUSED</code>, and <code>NOTIMP</code> define specific error conditions encountered when trying to resolve the requested query name. The response codes may be generated by 1.1.1.1 itself (like <code>REFUSED</code>) or may come from an upstream authoritative nameserver (like <code>NXDOMAIN</code>).</p><p>The <a href="https://radar.cloudflare.com/dns#dns-response-code"><b><u>DNS response code</u></b></a> graph shown below highlights that the vast majority of queries seen globally do not encounter an error during the resolution process (<code>NOERROR</code>), and that when errors are encountered, most are <a href="https://datatracker.ietf.org/doc/html/rfc8020"><code><u>NXDOMAIN</u></code></a> (no such record). It is worth noting that <code>NOERROR</code> also includes empty responses, which occur when there are no records for the query name and query type, but there are records for the query name and some other query type.</p>
            <figure>
            
            <img src="https://cf-assets.www.cloudflare.com/zkvhlag99gkb/6ZXQ8kcT0H7zfb8najn42C/df8c8c2f54c492484bb5d59f437eee5d/07.png" />
            
            </figure><p>With DNS being a first-step dependency for many other protocols, the amount of queries of particular types can be used to indirectly measure the adoption of those protocols. But to effectively measure adoption, we should also consider the fraction of those queries that are met with useful responses, which are represented with the <a href="https://radar.cloudflare.com/dns#dns-record-adoption"><b><u>DNS record adoption</u></b></a> graphs.</p><p>The example below shows that queries for <code>A</code> records are met with a useful response nearly 88% of the time. As IPv4 is an established protocol, the remaining 12% are likely to be queries for valid hostnames that have no <code>A </code>records (e.g. email domains that only have MX records). But the same graph also shows that there’s still a <a href="https://blog.cloudflare.com/ipv6-from-dns-pov/"><u>significant adoption gap</u></a> where IPv6 is concerned.</p>
            <figure>
            
            <img src="https://cf-assets.www.cloudflare.com/zkvhlag99gkb/6blxaHcK6UtPp67V3SGNML/daed03be6793aab32ec21b2bb2f08374/08.png" />
            
            </figure><p>When Cloudflare’s DNS resolver gets a response back from an upstream authoritative nameserver, it caches it for a specified amount of time — more on that below. By caching these responses, it can more efficiently serve subsequent queries for the same name. The <a href="https://radar.cloudflare.com/dns#dns-cache-hit-ratio"><b><u>DNS cache hit ratio</u></b></a> graph provides insight into how frequently responses are served from cache. At a global level, as seen below, over 80% of queries have a response that is already cached. These ratios will vary by location or ASN, as the query patterns differ across geographies and networks.</p>
            <figure>
            
            <img src="https://cf-assets.www.cloudflare.com/zkvhlag99gkb/sj0gBv53GdPF0slfGlKlr/fa86ff6fc610aefad2e675c5dc926f54/09.png" />
            
            </figure><p>As noted in the preceding paragraph, when an authoritative nameserver sends a response back to 1.1.1.1, each record inside it includes information about how long it should be cached/considered valid for. This piece of information is known as the <a href="https://developers.cloudflare.com/dns/manage-dns-records/reference/ttl/"><u>Time-To-Live (TTL)</u></a> and, as a response may contain multiple records, the smallest of these TTLs (the “minimum” TTL) defines how long 1.1.1.1 can cache the entire response for. The TTLs on each response served from 1.1.1.1’s cache decrease towards zero as time passes, at which point 1.1.1.1 needs to go back to the authoritative nameserver. Hostnames with relatively low TTL values suggest that the records may be somewhat dynamic, possibly due to traffic management of the associated resources; longer TTL values suggest that the associated resources are more stable and expected to change infrequently.</p><p>The <a href="https://radar.cloudflare.com/dns#dns-minimum-ttl"><b><u>DNS minimum TTL</u></b></a> graphs show the aggregate distribution of TTL values for five popular DNS record types, broken out across seven buckets ranging from under one minute to over one week. During the third week of February, for example, <code>A</code> and <code>AAAA</code> responses had a concentration of low TTLs, with over 80% below five minutes. In contrast, <code>NS</code> and <code>MX</code> responses were more concentrated across 15 minutes to one hour and one hour to one day. Because <code>MX</code> and <code>NS</code> records change infrequently, they are generally configured with higher TTLs. This allows them to be cached for longer periods in order to achieve faster DNS resolution.</p>
            <figure>
            
            <img src="https://cf-assets.www.cloudflare.com/zkvhlag99gkb/3r6ppahpkqyfAHi89LWNA1/6dc6f52e92c1d7aa2dfaeaa411deb982/10.png" />
            
            </figure>
    <div>
      <h3>DNS security</h3>
      <a href="#dns-security">
        
      </a>
    </div>
    <p><a href="https://www.cloudflare.com/learning/dns/dns-security/"><u>DNS Security Extensions (DNSSEC)</u></a> add an extra layer of authentication to DNS establishing the integrity and authenticity of a DNS response. This ensures subsequent HTTPS requests are not routed to a spoofed domain. When sending a query to 1.1.1.1, a DNS client can indicate that it is DNSSEC-aware by setting a specific flag (the “DO” bit) in the query, which lets our resolver know that it is OK to return DNSSEC data in the response. The <a href="https://radar.cloudflare.com/dns#dnssec-client-awareness"><b><u>DNSSEC client awareness</u></b></a> graph breaks down the share of queries that 1.1.1.1 sees from clients that understand DNSSEC and can require validation of responses vs. those that don’t. (Note that by default, 1.1.1.1 tries to protect clients by always validating DNSSEC responses from authoritative nameservers and not forwarding invalid responses to clients, unless the client has explicitly told it not to by setting the “CD” (checking-disabled) bit in the query.)</p><p>Unfortunately, as the graph below shows, nearly 90% of the queries seen by Cloudflare’s resolver are made by clients that are not DNSSEC-aware. This broad lack of client awareness may be due to several factors. On the client side, DNSSEC is not enabled by default for most users, and enabling DNSSEC requires extra work, even for technically savvy and security conscious users. On the authoritative side, for domain owners, supporting DNSSEC requires extra operational maintenance and knowledge, and a mistake can cost your domain to <a href="https://blog.cloudflare.com/dnssec-issues-fiji/"><u>disappear from the Internet</u></a>, causing significant (including financial) issues.</p><p>The companion <a href="https://radar.cloudflare.com/dns#end-to-end-security"><b><u>End-to-end security</u></b></a> graph represents the fraction of DNS interactions that were protected from tampering, when considering the client’s DNSSEC capabilities and use of encryption (use of DoT or DoH). This shows an even greater imbalance at a global level, and highlights the importance of further adoption of encryption and DNSSEC.</p>
            <figure>
            
            <img src="https://cf-assets.www.cloudflare.com/zkvhlag99gkb/6nErpp8o9tPuE0jt5PQ3fg/3e509065967a8f43c6679d400fd31454/11.png" />
            
            </figure><p>For DNSSEC validation to occur, the query name being requested must be part of a DNSSEC-enabled domain, and the <a href="https://radar.cloudflare.com/dns#dnssec-validation-status"><b><u>DNSSEC validation status</u></b></a> graph represents the share of queries where that was the case under the <b>Secure</b> and <b>Invalid</b> labels. Queries for domains without DNSSEC are labeled as <b>Insecure</b>, and queries where DNSSEC validation was not applicable (such as various kinds of errors) fall under the <b>Other</b> label. Although nearly 93% of generic Top Level Domains (TLDs) and 65% of country code Top Level Domains (ccTLDs) are <a href="https://ithi.research.icann.org/graph-m7.html"><u>signed with DNSSEC</u></a> (as of February 2025), the adoption rate across individual (child) domains lags significantly, as the graph below shows that over 80% of queries were labeled as <b>Insecure</b>.</p>
            <figure>
            
            <img src="https://cf-assets.www.cloudflare.com/zkvhlag99gkb/3shBkfRYcpHKgXI6Y9jcjq/26929261c5c6800fa1fee562dad5ce53/12.png" />
            
            </figure>
    <div>
      <h3>Conclusion</h3>
      <a href="#conclusion">
        
      </a>
    </div>
    <p>DNS is a fundamental, foundational part of the Internet. While most Internet users don’t think of DNS beyond its role in translating easy-to-remember hostnames to IP addresses, there’s a lot going on to make even that happen, from privacy to performance to security. The new DNS page on Cloudflare Radar endeavors to provide visibility into what’s going on behind the scenes, at a global, national, and network level.</p><p>While the graphs shown above are taken from the DNS page, all the underlying data is available via the <a href="https://developers.cloudflare.com/api/resources/radar/subresources/dns/"><u>API</u></a> and can be interactively explored in more detail across locations, networks, and time periods using Radar’s <a href="https://radar.cloudflare.com/explorer?dataSet=dns"><u>Data Explorer and AI Assistant</u></a>. And as always, Radar and Data Assistant charts and graphs are downloadable for sharing, and embeddable for use in your own blog posts, websites, or dashboards.</p><p>If you share our DNS graphs on social media, be sure to tag us: <a href="https://x.com/CloudflareRadar"><u>@CloudflareRadar</u></a> and <a href="https://x.com/1111Resolver"><u>@1111Resolver</u></a> (X), <a href="https://noc.social/@cloudflareradar"><u>noc.social/@cloudflareradar</u></a> (Mastodon), and <a href="https://bsky.app/profile/radar.cloudflare.com"><u>radar.cloudflare.com</u></a> (Bluesky). If you have questions or comments, you can reach out to us on social media, or contact us via <a><u>email</u></a>.</p> ]]></content:encoded>
            <category><![CDATA[1.1.1.1]]></category>
            <category><![CDATA[Radar]]></category>
            <category><![CDATA[DNS]]></category>
            <category><![CDATA[Resolver]]></category>
            <category><![CDATA[DNSSEC]]></category>
            <category><![CDATA[DoH]]></category>
            <category><![CDATA[Traffic]]></category>
            <guid isPermaLink="false">2aI8Y4m36DD0HQghRNFZ2n</guid>
            <dc:creator>David Belson</dc:creator>
            <dc:creator>Carlos Rodrigues</dc:creator>
            <dc:creator>Vicky Shrestha</dc:creator>
            <dc:creator>Hannes Gerhart</dc:creator>
        </item>
        <item>
            <title><![CDATA[Using DNS to estimate the worldwide state of IPv6 adoption]]></title>
            <link>https://blog.cloudflare.com/ipv6-from-dns-pov/</link>
            <pubDate>Thu, 14 Dec 2023 15:05:52 GMT</pubDate>
            <description><![CDATA[ In the last decade, IPv6 adoption on the client side went from under 1% to somewhere in the high 30 to low 40 percent, depending on who’s reporting, but there’s also the other end of the equation: the server side ]]></description>
            <content:encoded><![CDATA[ <p></p>
            <figure>
            
            <img src="https://cf-assets.www.cloudflare.com/zkvhlag99gkb/7lHuJcdFLT7jwhT2jjmVcF/997e67f3e714f3019d109c7c97c85ea7/image2-3.png" />
            
            </figure><p>In order for one device to talk to other devices on the Internet using the aptly named <a href="https://en.wikipedia.org/wiki/Internet_Protocol">Internet Protocol</a> (IP), it must first be assigned a unique numerical address. What this address looks like depends on the version of IP being used: <a href="https://en.wikipedia.org/wiki/Internet_Protocol_version_4">IPv4</a> or <a href="https://en.wikipedia.org/wiki/IPv6">IPv6</a>.</p><p>IPv4 was first deployed in 1983. It’s the IP version that gave birth to the modern Internet and still remains dominant today. IPv6 can be traced back to as early as 1998, but only in the last decade did it start to gain significant traction — rising from less than 1% to somewhere between 30 and 40%, depending on who’s reporting and what and how they’re measuring.</p><p>With the growth in connected devices far exceeding the number of IPv4 addresses available, <a href="/amazon-2bn-ipv4-tax-how-avoid-paying/">and its costs rising</a>, the much larger address space provided by IPv6 should have made it the dominant protocol by now. However, as we’ll see, this is not the case.</p><p>Cloudflare has been a strong advocate of IPv6 <a href="https://www.cloudflare.com/press-releases/2011/cloudflare-announces-the-automatic-ipv6-gateway/">for many years</a> and, through <a href="https://radar.cloudflare.com/">Cloudflare Radar</a>, we’ve been closely following IPv6 adoption across the Internet. At three years old, Radar is still a relatively recent platform. To go further back in time, we can briefly turn to our friends at <a href="https://stats.labs.apnic.net/ipv6/XA">APNIC</a><sup>1</sup> — one of the five Regional Internet Registries (<a href="https://en.wikipedia.org/wiki/Regional_Internet_registry">RIRs</a>). Through their data, going back to 2012, we can see that IPv6 experienced a period of seemingly exponential growth until mid-2017, after which it entered a period of linear growth that’s still ongoing:</p>
            <figure>
            
            <img src="https://cf-assets.www.cloudflare.com/zkvhlag99gkb/37xEnfcqqKABkXWhnETnXK/30e3c5afa1d14896deb307d028785913/pasted-image-0--7--2.png" />
            
            </figure><p>IPv6 adoption is slowed down by the lack of compatibility between both protocols — devices must be assigned both an IPv4 <i>and</i> an IPv6 address — along with the fact that virtually all devices on the Internet still support IPv4. Nevertheless, IPv6 is critical for the future of the Internet, and continued effort is required to increase its deployment.</p><p>Cloudflare Radar, like APNIC and most other sources today, publishes numbers that primarily reflect the extent to which Internet Service Providers (ISPs) have deployed IPv6: the <i>client side</i>. It’s a very important angle, and one that directly impacts end users, but there’s also the other end of the equation: the <i>server side</i>.</p><p>With this in mind, we invite you to follow us on a quick experiment where we aim for a glimpse of server side IPv6 adoption, and how often clients are actually (or likely) able to talk to servers over IPv6. We’ll rely on DNS for this exploration and, as they say, the results may surprise you.</p>
    <div>
      <h3>IPv6 Adoption on the Client Side (from HTTP)</h3>
      <a href="#ipv6-adoption-on-the-client-side-from-http">
        
      </a>
    </div>
    <p>By the end of October 2023, from Cloudflare’s <a href="https://radar.cloudflare.com/adoption-and-usage?dateStart=2023-08-01&amp;dateEnd=2023-10-31">perspective</a>, IPv6 adoption across the Internet was at roughly <b>36%</b> of all traffic, with slight variations depending on the time of day and day of week. When excluding bots the estimate goes up to just over 46%, while excluding humans pushes it down close to 24%. These numbers refer to the share of HTTP requests served over IPv6 <a href="https://developers.cloudflare.com/radar/glossary/#ipv6-adoption">across all IPv6-enabled content</a> (the default setting).</p>
            <figure>
            
            <img src="https://cf-assets.www.cloudflare.com/zkvhlag99gkb/VZUSDQeWI7eZ8TQheZ6lP/7ef2aac52c4fd62912f8d83f45fa6f7f/pasted-image-0-2.png" />
            
            </figure><p>For this exercise, what matters most is the number for both humans <i>and</i> bots. There are many reasons for the adoption gap between both kinds of traffic — from varying levels of IPv6 support in the plethora of client software used, to varying levels of IPv6 deployment inside the many networks where traffic comes from, to the varying size of such networks, etc. — but that’s a rabbit hole for another day. If you’re curious about the numbers for a particular country or network, you can find them on <a href="https://radar.cloudflare.com/adoption-and-usage/">Cloudflare Radar</a> and in our <a href="https://radar.cloudflare.com/year-in-review/2023#ipv6-adoption">Year in Review</a> report for 2023.</p>
    <div>
      <h3>It Takes Two to Dance</h3>
      <a href="#it-takes-two-to-dance">
        
      </a>
    </div>
    <p>You, the reader, might point out that measuring the client side of the client-server equation only tells half the story: for an IPv6-capable client to establish a connection with a server via IPv6, the server must also be IPv6-capable.</p><p>This raises two questions:</p><ol><li><p>What’s the extent of IPv6 adoption on the server side?</p></li><li><p>How well does IPv6 adoption on the client side align with adoption on the server side?</p></li></ol><p>There are several possible answers, depending on whether we’re talking about users, devices, bytes transferred, and so on. We’ll focus on <i>connections</i> (it will become clear why in a moment), and the combined question we’re asking is:</p><blockquote><p><i>How often can an IPv6-capable client use IPv6 when connecting to servers on the Internet, under typical usage patterns?</i></p></blockquote><p>Typical usage patterns include people going about their day visiting some websites more often than others or automated clients calling APIs. We’ll turn to DNS to get this perspective.</p>
    <div>
      <h3>Enter DNS</h3>
      <a href="#enter-dns">
        
      </a>
    </div>
    <p>Before a client can attempt to establish a connection with a server by name, using either the classic IPv4 protocol or the more modern IPv6, it must look up the server’s IP address in the <a href="https://en.wikipedia.org/wiki/Telephone_directory">phonebook</a> of the Internet, the <a href="https://www.cloudflare.com/learning/dns/what-is-dns/">Domain Name System (DNS)</a>.</p><p>Looking up a hostname in DNS <a href="https://www.cloudflare.com/learning/dns/what-is-dns/">is a recursive process</a>. To find the IP address of a server, the domain hierarchy (the dot-separated components of a server’s name) must be followed across several DNS authoritative servers until one of them returns the desired response<sup>2</sup>. Most clients, however, don’t do this directly and instead ask an intermediary server called a <a href="https://www.cloudflare.com/learning/dns/what-is-recursive-dns/">recursive resolver</a> to do it for them. Cloudflare operates one such recursive resolver that anyone can use: <a href="https://one.one.one.one/dns/">1.1.1.1</a>.</p>
            <figure>
            
            <img src="https://cf-assets.www.cloudflare.com/zkvhlag99gkb/7osVQH3ASy6i4puJ0UBUJc/192ecf4472c1917ff7ed4273df0bd0c1/pasted-image-0--1--2.png" />
            
            </figure><p>As a simplified example, when a client asks 1.1.1.1 for the IP address where “<a href="http://www.example.com”">www.example.com”</a> lives, 1.1.1.1 will go out and ask the DNS root servers<sup>3</sup> about “.com”, then ask the .com DNS servers about “example.com”, and finally ask the example.com DNS servers about “www.example.com”, which has direct knowledge of it and answers with an IP address. To make things faster for the next client asking a similar question, 1.1.1.1 caches (remembers for a while) both the final answer and the steps in between.</p>
            <figure>
            
            <img src="https://cf-assets.www.cloudflare.com/zkvhlag99gkb/4jugLCRvQVB2NUC0i3qMY/8b12ffa0a9eddb76ba40dbf7051c76c7/pasted-image-0--2--3.png" />
            
            </figure><p>This means 1.1.1.1 is in a very good position to count how often clients try to look up IPv4 addresses (A-type queries) <i>vs.</i> how often they try to look up IPv6 addresses (AAAA-type queries), covering most of the observable Internet.</p><p>But how does a client know when to ask for a server’s IPv4 address or its IPv6 address?</p><p>The short answer is that clients with IPv6 available to them just ask for both — doing separate <a href="https://www.cloudflare.com/learning/dns/dns-records/dns-a-record/">A</a> and <a href="https://www.cloudflare.com/learning/dns/dns-records/dns-aaaa-record/">AAAA</a> lookups for every server they wish to connect to. These IPv6-capable clients will prioritize connecting over IPv6 when they get a non-empty AAAA answer, whether they also get a non-empty A answer (which they almost always get, as we’ll see). The algorithm driving this preference for modernity is called <a href="https://en.wikipedia.org/wiki/Happy_Eyeballs">Happy Eyeballs</a>, if you’re interested in the details.</p><p>We’re now ready to start looking at some actual data…</p>
    <div>
      <h3>IPv6 Adoption on the Client Side (from DNS)</h3>
      <a href="#ipv6-adoption-on-the-client-side-from-dns">
        
      </a>
    </div>
    <p>The first step is establishing a baseline by measuring client IPv6 deployment from 1.1.1.1’s perspective and comparing it with the numbers from HTTP requests that we started with.</p>
            <figure>
            
            <img src="https://cf-assets.www.cloudflare.com/zkvhlag99gkb/MDeID398Kzy28RT52PMFH/a2553d58d669cbd46f284ca909620c4b/pasted-image-0--3--2.png" />
            
            </figure><p>It’s tempting to count how often clients connect to 1.1.1.1 using IPv6, but the results are misleading for a couple of reasons, the strongest one being hidden in plain sight: 1.1.1.1 is the most memorable <b>address</b> of the set of IPv4 and IPv6 addresses that clients can use to perform DNS lookups through the 1.1.1.1 <b>service</b>. Ideally, IPv6-capable clients using 1.1.1.1 as their recursive resolver should have all four of the following IP addresses configured, not just the first two:</p><ul><li><p><b>1.1.1.1</b> (IPv4)</p></li><li><p><b>1.0.0.1</b> (IPv4)</p></li><li><p><b>2606:4700:4700::1111</b> (IPv6)</p></li><li><p><b>2606:4700:4700::1001</b> (IPv6)</p></li></ul><p>But, when manual configuration is involved4, humans find IPv6 addresses less memorable than IPv4 addresses and are less likely to configure them, viewing the IPv4 addresses as enough.</p><p>A related, but less obvious, confounding factor is that many IPv6-capable clients will still perform DNS lookups over IPv4 even when they have 1.1.1.1’s IPv6 addresses configured, as spreading lookups over the available addresses is a popular default option.</p><p>A more sensible approach to assess IPv6 adoption from DNS client activity is calculating the percentage of AAAA-type queries over the total amount of A-type queries, assuming IPv6-clients always perform both<sup>5</sup>, as mentioned earlier.</p>
            <figure>
            
            <img src="https://cf-assets.www.cloudflare.com/zkvhlag99gkb/1ShMNUPncOEfKH8OCGoaKI/96c261719b4916f8fac67e7ce1015673/pasted-image-0--4--2.png" />
            
            </figure><p>Then, from 1.1.1.1’s perspective, IPv6 adoption on the <b>client side</b> is estimated at <b>30.5%</b> by query volume. This is a bit under what we observed from HTTP traffic over the same time period (35.9%) but such a difference between two different perspectives is not unexpected.</p>
    <div>
      <h3>A Note on TTLs</h3>
      <a href="#a-note-on-ttls">
        
      </a>
    </div>
    <p>It’s not only recursive resolvers that cache DNS responses, most DNS clients have their own local caches as well. Your web browser, operating system, and even your home router, keep answers around hoping to speed up subsequent queries.</p><p>How long each answer remains in cache depends on the <a href="https://developers.cloudflare.com/dns/manage-dns-records/reference/ttl/">time-to-live</a> (TTL) field sent back with DNS records. If you’re familiar with DNS, you might be wondering if A and AAAA records have similar TTLs. If they don’t, we may be getting fewer queries for just one of these two types (because it gets cached for longer at the client level), biasing the resulting adoption figures.</p>
            <figure>
            
            <img src="https://cf-assets.www.cloudflare.com/zkvhlag99gkb/3qY93uvMa7SIV80OxTPBVS/db694e99691dfa04825897c69f6f3f14/pasted-image-0--5--2.png" />
            
            </figure><p>The pie charts here break down the minimum TTLs sent back by 1.1.1.1 in response to A and AAAA queries<sup>6</sup>. There is some difference between both types, but the difference is very small.</p>
    <div>
      <h3>IPv6 Adoption on the Server Side</h3>
      <a href="#ipv6-adoption-on-the-server-side">
        
      </a>
    </div>
    <p>The following graph shows how often A and AAAA-type queries get non-empty responses, shedding light on <b>server side</b> IPv6 adoption and getting us closer to the answer we’re after:</p>
            <figure>
            
            <img src="https://cf-assets.www.cloudflare.com/zkvhlag99gkb/3aYzrPLYLFqxH9ublQtOCm/045cf3e5a35bc208775fd531466234e6/pasted-image-0--6--2.png" />
            
            </figure><p>IPv6 adoption by servers is estimated at <b>43.3%</b> by query volume, noticeably higher than what was observed for clients.</p>
    <div>
      <h3>How Often Both Sides Swipe Right</h3>
      <a href="#how-often-both-sides-swipe-right">
        
      </a>
    </div>
    <p>If 30.5% of IP address lookups handled by 1.1.1.1 could make use of an IPv6 address to connect to their intended destinations, but only 43.3% of those lookups get a non-empty response, that can give us a pretty good basis for how often IPv6 connections are made between client and server — roughly <b>13.2%</b> of the time.</p>
    <div>
      <h3>The Potential Impact of Popular Domains</h3>
      <a href="#the-potential-impact-of-popular-domains">
        
      </a>
    </div>
    <p>IPv6 server side adoption measured by query volume for the domains in Radar’s <a href="https://radar.cloudflare.com/domains">Top 100</a> list is 60.8%. If we exclude these domains from our overall calculations, the previous 13.2% figure drops to 8%. This is a significant difference, but not unexpected, as the Top 100 domains make up over 55% of all A and AAAA queries to 1.1.1.1.</p>
            <figure>
            
            <img src="https://cf-assets.www.cloudflare.com/zkvhlag99gkb/6cJtOVRwoLQluKLLd0QVzv/38e0caab4e079e60a9b41f4b8a80e78e/pasted-image-0--8--2.png" />
            
            </figure><p>If just a few more of these highly popular domains were to deploy IPv6 today, observed adoption would noticeably increase and, with it, the chance of IPv6-capable clients establishing connections using IPv6.</p>
    <div>
      <h3>Closing Thoughts</h3>
      <a href="#closing-thoughts">
        
      </a>
    </div>
    <p>Observing the extent of IPv6 adoption across the Internet can mean different things:</p><ul><li><p>Counting <b>users</b> with IPv6-capable Internet access;</p></li><li><p>Counting IPv6-capable <b>devices</b> or software on those devices (clients and/or servers);</p></li><li><p>Calculating the amount of <b>traffic</b> flowing through IPv6 connections, measured in bytes;</p></li><li><p>Counting the fraction of <b>connections</b> (or individual <b>requests</b>) over IPv6.</p></li></ul><p>In this exercise we chose to look at connections and requests. Keeping in mind that the underlying reality can only be truly understood by considering several different perspectives, we saw three different IPv6 adoption figures:</p><ul><li><p><b>35.9%</b> (client side) when counting HTTP requests served from Cloudflare's CDN;</p></li><li><p><b>30.5%</b> (client side) when counting A and AAAA-type DNS queries handled by <a href="https://one.one.one.one/dns/">1.1.1.1</a>;</p></li><li><p><b>43.3%</b> (server side) of positive responses to AAAA-type DNS queries, also from 1.1.1.1.</p></li></ul><p>We combined the <i>client side</i> and <i>server side</i> figures from the DNS perspective to estimate how often connections to third-party servers are likely to be established over IPv6 rather than IPv4: just <b>13.2%</b> of the time.</p><p>To improve on these numbers, ISPs, cloud and hosting providers, and corporations alike must increase the rate at which they make IPv6 available for devices in their networks. But large websites and content sources also have a critical role to play in enabling IPv6-capable clients to use IPv6 more often, as <b>39.2%</b> of queries for domains in the Radar <a href="https://radar.cloudflare.com/domains">Top 100</a> (representing over half of all A and AAAA queries to 1.1.1.1) are still limited to IPv4-only responses.</p><p>On the road to full IPv6 adoption, the Internet isn’t quite there yet. But continued effort from all those involved can help it to continue to move forward, and perhaps even accelerate progress.</p><p><i>On the server side, Cloudflare has been helping with this worldwide effort for many years by providing free </i><a href="https://developers.cloudflare.com/support/network/understanding-and-configuring-cloudflares-ipv6-support/"><i>IPv6 support</i></a><i> for all domains. On the client side, the </i><a href="https://1.1.1.1/"><i>1.1.1.1 app</i></a><i> automatically enables your device for IPv6 even if your ISP doesn’t provide any IPv6 support. And, if you happen to manage an IPv6-only network, 1.1.1.1’s </i><a href="https://developers.cloudflare.com/1.1.1.1/infrastructure/ipv6-networks/"><i>DNS64 support</i></a><i> also has you covered.</i></p><p>***</p><p><sup>1</sup>Cloudflare’s public DNS resolver (1.1.1.1) is operated in partnership with APNIC. You can read more about it in the original <a href="/dns-resolver-1-1-1-1/">announcement blog post</a> and in 1.1.1.1’s <a href="https://developers.cloudflare.com/1.1.1.1/privacy/public-dns-resolver/">privacy policy</a>.</p><p><sup>2</sup>There’s more information on how DNS works in the “<a href="https://www.cloudflare.com/learning/dns/what-is-dns/">What is DNS?</a>” section of our website. If you’re a hands-on learner, we suggest you take a look at Julia Evans’ “<a href="https://messwithdns.net/">mess with dns</a>”.</p><p><sup>3</sup>Any recursive resolver will already know the IP addresses of the <a href="https://www.iana.org/domains/root/servers">13 root servers</a> beforehand. Cloudflare also participates at the topmost level of DNS by <a href="/f-root/">providing anycast service to the E and F-Root instances</a>, which means 1.1.1.1 doesn’t need to go far for that first lookup step.</p><p><sup>4</sup>When using the <a href="https://one.one.one.one/">1.1.1.1 app</a>, all four IP addresses are configured automatically.</p><p><sup>5</sup>For simplification, we assume the amount of IPv6-only clients is still negligibly small. It’s a reasonable assumption in general, and other datasets available to us confirm it.</p><p><sup>6</sup>1.1.1.1, like other recursive resolvers, returns adjusted TTLs: the record’s original TTL minus the number of seconds since the record was last cached. Empty A and AAAA answers get cached for the amount of time defined in the domain’s <a href="https://www.cloudflare.com/learning/dns/dns-records/dns-soa-record/">Start of Authority</a> (SOA) record, as specified by RFC 2308.</p> ]]></content:encoded>
            <category><![CDATA[Radar]]></category>
            <category><![CDATA[IPv6]]></category>
            <category><![CDATA[DNS]]></category>
            <guid isPermaLink="false">59O01jCNT1TaLCjWJaDu5m</guid>
            <dc:creator>Carlos Rodrigues</dc:creator>
        </item>
        <item>
            <title><![CDATA[Introducing the Cloudflare Radar Internet Quality Page]]></title>
            <link>https://blog.cloudflare.com/introducing-radar-internet-quality-page/</link>
            <pubDate>Fri, 23 Jun 2023 13:00:09 GMT</pubDate>
            <description><![CDATA[ The new Internet Quality page on Cloudflare Radar provides both country and network (autonomous system) level insight into Internet connection performance (bandwidth) and quality (latency, jitter) over time based on benchmark test data as well as speed.cloudflare.com test results ]]></description>
            <content:encoded><![CDATA[ <p></p>
            <figure>
            
            <img src="https://cf-assets.www.cloudflare.com/zkvhlag99gkb/1j9oLJBK7nXXluuX8PL5AS/142eb5799625609bc9f2e77b6fc20b7d/image6-8.png" />
            
            </figure><p>Internet connections are most often marketed and sold on the basis of "speed", with providers touting the number of megabits or gigabits per second that their various service tiers are supposed to provide. This marketing has largely been successful, as most subscribers believe that "more is better”. Furthermore, many national broadband plans in countries around the world include specific target connection speeds. However, even with a high speed connection, gamers may encounter sluggish performance, while video conference participants may experience frozen video or audio dropouts. Speeds alone don't tell the whole story when it comes to Internet connection quality.</p><p>Additional factors like latency, jitter, and packet loss can significantly impact end user experience, potentially leading to situations where higher speed connections actually deliver a worse user experience than lower speed connections. Connection performance and quality can also vary based on usage – measured average speed will differ from peak available capacity, and latency varies under loaded and idle conditions.</p>
    <div>
      <h2>The new Cloudflare Radar Internet Quality page</h2>
      <a href="#the-new-cloudflare-radar-internet-quality-page">
        
      </a>
    </div>
    <p>A little more than three years ago, as residential Internet connections were strained because of the shift towards working and learning from home due to the COVID-19 pandemic, <a href="/test-your-home-network-performance/">Cloudflare announced the speed.cloudflare.com speed test tool</a>, which enabled users to test the performance and quality of their Internet connection. Within the tool, users can download the results of their individual test as a CSV, or share the results on social media. However, there was no aggregated insight into Cloudflare speed test results at a network or country level to provide a perspective on connectivity characteristics across a larger population.</p><p>Today, we are launching these long-missing aggregated connection performance and quality insights on Cloudflare Radar. The new <a href="https://radar.cloudflare.com/quality">Internet Quality page</a> provides both country and network (<a href="https://www.cloudflare.com/learning/network-layer/what-is-an-autonomous-system/">autonomous system</a>) level insight into Internet connection performance (<a href="/aim-database-for-internet-quality/">bandwidth</a>) and quality (<a href="https://www.cloudflare.com/learning/performance/glossary/what-is-latency/">latency</a>, <a href="/aim-database-for-internet-quality/">jitter</a>) over time. (Your Internet service provider is likely an autonomous system with its own autonomous system number (ASN), and many large companies, online platforms, and educational institutions also have their own autonomous systems and associated ASNs.) The insights we are providing are presented across two sections: the Internet Quality Index (IQI), which estimates average Internet quality based on aggregated <a href="/benchmarking-edge-network-performance/">measurements against a set of Cloudflare &amp; third-party targets</a>, and Connection Quality, which presents peak/best case connection characteristics based on <a href="https://speed.cloudflare.com/">speed.cloudflare.com</a> test results aggregated over the previous 90 days. (Details on our approach to the analysis of this data are presented below.)</p><p>Users may note that individual speed test results, as well as the aggregate speed test results presented on the Internet Quality page will likely differ from those presented by other speed test tools. <a href="https://cacm.acm.org/magazines/2020/12/248801-measuring-internet-speed/fulltext">This can be due to a number of factors</a> including differences in test endpoint locations (considering both geographic and network distance), test content selection, the impact of “rate boosting” by some ISPs, and testing over a single connection vs. multiple parallel connections. Infrequent testing (on any speed test tool) by users seeking to confirm perceived poor performance or validate purchased speeds will also contribute to the differences seen in the results published by the various speed test platforms.</p><p>And as we announced in April, <a href="/aim-database-for-internet-quality/">Cloudflare has partnered with Measurement Lab (M-Lab)</a> to create a <a href="https://colab.research.google.com/drive/1xgc-7L1Okr04MSjsYJfiFeUN0Gu05bpQ?usp=sharing">publicly-available, queryable repository</a> for speed test results. M-Lab is a non-profit third-party organization dedicated to providing a representative picture of Internet quality around the world. M-Lab produces and hosts the <a href="https://www.measurementlab.net/tests/ndt/">Network Diagnostic Tool</a>, which is a very popular network quality test that records millions of samples a day. Given their mission to provide a publicly viewable, representative picture of Internet quality, we chose to partner with them to provide an accurate view of your Internet experience and the experience of others around the world using openly available data.</p>
    <div>
      <h2>Connection speed &amp; quality data is important</h2>
      <a href="#connection-speed-quality-data-is-important">
        
      </a>
    </div>
    <p>While most advertisements for fixed broadband and mobile connectivity tend to focus on download speeds (and peak speeds at that), there’s more to an Internet connection, and the user’s experience with that Internet connection, than that single metric. In addition to download speeds, users should also understand the upload speeds that their connection is capable of, as well as the quality of the connection, as expressed through metrics known as latency and jitter. Getting insight into all of these metrics provides a more well-rounded view of a given Internet connection, or in aggregate, the state of Internet connectivity across a geography or network.</p><p>The concept of download speeds are fairly well understood as a measure of performance. However, it is important to note that the average download speeds experienced by a user during common Web browsing activities, which often involves the parallel retrieval of multiple smaller files from multiple hosts, can differ significantly from peak download speeds, where the user is downloading a single large file (such as a video or software update), which allows the connection to reach maximum performance. The bandwidth (speed) available for upload is sometimes mentioned in ISP advertisements, but doesn’t receive much attention. (And depending on the type of Internet connection, there’s often a significant difference between the available upload and download speeds.) However, the importance of upload came to the forefront in 2020 as video conferencing tools saw a surge in usage as both work meetings and school classes shifted to the Internet during the COVID-19 pandemic. To share your audio and video with other participants, you need sufficient upload bandwidth, and this issue was often compounded by multiple people sharing a single residential Internet connection.</p><p><a href="https://www.cloudflare.com/learning/performance/glossary/what-is-latency/">Latency</a> is the time it takes data to move through the Internet, and is measured in the number of milliseconds that it takes a packet of data to go from a client (such as your computer or mobile device) to a server, and then back to the client. In contrast to speed metrics, lower latency is preferable. This is especially true for use cases like online gaming where latency can make a difference between a character’s life and death in the game, as well as video conferencing, where higher latency can cause choppy audio and video experiences, but it also <a href="/making-home-internet-faster/">impacts web page performance</a>. The latency metric can be further broken down into loaded and idle latency. The former measures latency on a loaded connection, where bandwidth is actively being consumed, while the latter measures latency on an “idle” connection, when there is no other network traffic present. (These specific loaded and idle definitions are from the device’s perspective, and more specifically, from the speed test application’s perspective. Unless the speed test is being performed directly from a router, the device/application doesn't have insight into traffic on the rest of the network.) <a href="/test-your-home-network-performance/">Jitter</a> is the average variation found in consecutive latency measurements, and can be measured on both idle and loaded connections. A lower number means that the latency measurements are more consistent. As with latency, Internet connections should have minimal jitter, which helps provide more consistent performance.</p>
    <div>
      <h2>Our approach to data analysis</h2>
      <a href="#our-approach-to-data-analysis">
        
      </a>
    </div>
    <p>The Internet Quality Index (IQI) and Connection Quality sections get their data from two different sources, providing two different (albeit related) perspectives. Under the hood they share some common principles, though.</p><p>IQI builds upon the <a href="/benchmarking-edge-network-performance/">mechanism</a> we already use to regularly benchmark ourselves against other industry players. It is based on end user measurements against a set of Cloudflare and third-party targets, meant to represent a pattern that has become very common in the modern Internet, where most content is served from distribution networks with points of presence spread throughout the world. For this reason, and by design, IQI will show worse results for regions and Internet providers that rely on international (rather than peering) links for most content.</p><p>IQI is also designed to reflect the traffic load most commonly associated with web browsing, rather than more intensive use. This, and the chosen set of measurement targets, effectively biases the numbers towards what end users experience in practice (where latency plays an <a href="/making-home-internet-faster/">important role</a> in how fast things can go).</p><p>For each metric covered by IQI, and for each ASN, we calculate the 25th percentile, median, and 75th percentile at 15 minute intervals. At the country level and above, the three calculated numbers for each ASN visible from that region are independently aggregated. This aggregation takes the <a href="https://stats.labs.apnic.net/aspop">estimated user population of each ASN</a> into account, biasing the numbers away from networks that source a lot of automated traffic but have few end users.</p><p>The Connection Quality section gets its data from the <a href="https://speed.cloudflare.com">Cloudflare Speed Test</a> tool, which exercises a user's connection in order to see how well it is able to perform. It measures against the closest Cloudflare location, providing a good balance of realistic results and network proximity to the end user. We have a presence in <a href="https://www.cloudflare.com/network/">285 cities around the world</a>, allowing us to be pretty close to most users.</p><p>Similar to the IQI, we calculate the 25th percentile, median, and 75th percentile for each ASN. But here these three numbers are immediately combined using an operation called the <a href="https://en.wikipedia.org/wiki/Trimean">trimean</a> — a single number meant to balance the best connection quality that most users have, with the best quality available from that ASN (users may not subscribe to the best available plan for a number of reasons).</p><p>Because users may choose to run a speed test for different motives at different times, and also because we take privacy very seriously and don’t record any personally identifiable information along with test results, we aggregate at 90-day intervals to capture as much variability as we can.</p><p>At the country level and above, the calculated trimean for each ASN in that region is aggregated. This, again, takes the estimated user population of each ASN into account, biasing the numbers away from networks that have few end users but which may still have technicians using the Cloudflare Speed Test to assess the performance of their network.</p>
    <div>
      <h2>Navigating the Internet Quality page</h2>
      <a href="#navigating-the-internet-quality-page">
        
      </a>
    </div>
    <p>The new <a href="https://radar.cloudflare.com/quality">Internet Quality page</a> includes three views: Global, country-level, and autonomous system (AS). In line with the other pages on Cloudflare Radar, the country-level and AS pages show the same data sets, differing only in their level of aggregation. Below, we highlight the various components of the Internet Quality page.</p>
    <div>
      <h3>Global</h3>
      <a href="#global">
        
      </a>
    </div>
    
            <figure>
            
            <img src="https://cf-assets.www.cloudflare.com/zkvhlag99gkb/2cMIwMf2Eb3K7ijLgnZwJV/dee237e425616488b7cbabb76177b91d/image10.png" />
            
            </figure><p>The top section of the <a href="https://radar.cloudflare.com/quality">global (worldwide) view</a> includes time series graphs of the Internet Quality Index metrics aggregated at a continent level. The time frame shown in the graphs is governed by the selection made in the time frame drop down at the upper right of the page, and at launch, data for only the last three months is available. For users interested in examining a specific continent, clicking on the other continent names in the legend removes them from the graph. Although continent-level aggregation is still rather coarse, it still provides some insight into regional Internet quality around the world.</p>
            <figure>
            
            <img src="https://cf-assets.www.cloudflare.com/zkvhlag99gkb/3uw2wOQ826I1ZI4pSoIPTk/591560341fa18488928e1eac82b44829/image2-32.png" />
            
            </figure><p>Further down the page, the Connection Quality section presents a <a href="https://en.wikipedia.org/wiki/Choropleth_map">choropleth map</a>, with countries shaded according to the values of the speed, latency, or jitter metric selected from the drop-down menu. Hovering over a country displays a label with the country’s name and metric value, and clicking on the country takes you to the country’s Internet Quality page. Note that in contrast to the IQI section, the Connection Quality section always displays data aggregated over the previous 90 days.</p><h3>Country-level<p>Within the country-level page (using <a href="https://radar.cloudflare.com/quality/ca">Canada</a> as an example in the figures below), the country’s IQI metrics over the selected time frame are displayed. These time series graphs show the median bandwidth, latency, and DNS response time within a shaded band bounded at the 25th and 75th percentile and represent the average expected user experience across the country, as discussed in the <i>Our approach to data analysis</i> section above.</p>
            <figure>
            
            <img src="https://cf-assets.www.cloudflare.com/zkvhlag99gkb/2hk4e79T8ZLr0CN9qOkVsg/3b42c6353c777b66ec7e3df2b65b0207/image3-25.png" />
            
            </figure>
            <figure>
            
            <img src="https://cf-assets.www.cloudflare.com/zkvhlag99gkb/7iMlQAaL6UNZAHWlNKqm6R/d46de0c921ac57dcd0d1aef48d023009/image7-7.png" />
            
            </figure>
            <figure>
            
            <img src="https://cf-assets.www.cloudflare.com/zkvhlag99gkb/4hnrODy4OgChr7Fy27enNp/bd6463cbc96f97d92a97a48993ba3d1b/image12-1.png" />
            
            </figure><p>Below that is the Connection Quality section, which provides a summary view of the country’s measured upload and download speeds, as well as latency and jitter, over the previous 90 days. The colored wedges in the Performance Summary graph are intended to illustrate aggregate connection quality at a glance, with an “ideal” connection having larger upload and download wedges and smaller latency and jitter wedges. Hovering over the wedges displays the metric’s value, which is also shown in the table to the right of the graph.</p>
            <figure>
            
            <img src="https://cf-assets.www.cloudflare.com/zkvhlag99gkb/7h0DIEi3JxWQlljgXCxASm/e42075ccd1d2da264aa85b502266b245/image4-21.png" />
            
            </figure><p>Below that, the Bandwidth and Latency/Jitter histograms illustrate the bucketed distribution of upload and download speeds, and latency and jitter measurements. In some cases, the speed histograms may show a noticeable bar at 1 Gbps, or 1000 ms (1 second) on the latency/jitter histograms. The presence of such a bar indicates that there is a set of measurements with values greater than the 1 Gbps/1000 ms maximum histogram values.</p>
            <figure>
            
            <img src="https://cf-assets.www.cloudflare.com/zkvhlag99gkb/QL7897X8IVsuAOzjxKr8u/6dc623de0c8d7e3b170ef37a93ee72c5/image11-3.png" />
            
            </figure>
    <div>
      <h3>Autonomous system level</h3>
      <a href="#autonomous-system-level">
        
      </a>
    </div>
    <p>Within the upper-right section of the country-level page, a list of the <a href="/asn-on-radar/">top five autonomous systems</a> within the country is shown. Clicking on an ASN takes you to the Performance page for that autonomous system. For others not displayed in the top five list, you can use the search bar at the top of the page to search by autonomous system name or number. The graphs shown within the AS level view are identical to those shown at a country level, but obviously at a different level of aggregation. You can find the ASN that you are connected to from the <a href="https://radar.cloudflare.com/ip">My Connection page</a> on Cloudflare Radar.</p>
    <div>
      <h2>Exploring connection performance &amp; quality data</h2>
      <a href="#exploring-connection-performance-quality-data">
        
      </a>
    </div>
    <p>Digging into the IQI and Connection Quality visualizations can surface some interesting observations, including characterizing Internet connections, and the impact of Internet disruptions, including shutdowns and network issues. We explore some examples below.</p>
    <div>
      <h3>Characterizing Internet connections</h3>
      <a href="#characterizing-internet-connections">
        
      </a>
    </div>
    <p><a href="https://www.verizon.com/home/fios/">Verizon FiOS</a> is a residential fiber-based Internet service available to customers in the United States. Fiber-based Internet services (as opposed to cable-based, DSL, dial-up, or satellite) will generally offer symmetric upload and download speeds, and the FiOS <a href="https://www.verizon.com/home/fios-fastest-internet/">plans page</a> shows this to be the case, offering 300 Mbps (upload &amp; download), 500 Mbps (upload &amp; download), and “1 Gig” (Verizon claims average wired speeds between 750-940 Mbps download / 750-880 Mbps upload) plans. Verizon carries FiOS traffic on <a href="https://radar.cloudflare.com/quality/as701">AS701</a> (labeled <a href="https://en.wikipedia.org/wiki/UUNET">UUNET</a> due to a historical acquisition), and in looking at the bandwidth histogram for AS701, several things stand out. The first is a rough symmetry in upload and download speeds. (A cable-based Internet service provider, in contrast, would generally show a wide spread of download speeds, but have upload speeds clustered at the lower end of the range.) Another is the peaks around 300 Mbps and 750 Mbps, suggesting that the 300 Mbps and “1 Gig” plans may be more popular than the 500 Mbps plan. It is also clear that there are a significant number of test results with speeds below 300 Mbps. This is due to several factors: one is that Verizon also carries lower speed non-FiOS traffic on AS701, while another is that erratic nature of in-home WiFi often means that the speeds achieved on a test will be lower than the purchased service level.</p>
            <figure>
            
            <img src="https://cf-assets.www.cloudflare.com/zkvhlag99gkb/6wjsM0gTtzNBqeU7n8npg6/07c1de6472b7a8f22535ba4be44f034e/image13.png" />
            
            </figure>
    <div>
      <h3>Traffic shifts drive latency shifts</h3>
      <a href="#traffic-shifts-drive-latency-shifts">
        
      </a>
    </div>
    <p>On May 9, 2023, the government of <a href="https://radar.cloudflare.com/pk">Pakistan</a> ordered the shutdown of mobile network services in the wake of protests following the arrest of former Prime Minister Imran Khan. Our blog post covering this <a href="/cloudflares-view-of-internet-disruptions-in-pakistan/">shutdown</a> looked at the impact from a traffic perspective. Within the post, we noted that autonomous systems associated with fixed broadband networks saw significant increases in traffic when the mobile networks were shut down – that is, some users shifted to using fixed networks (home broadband) when mobile networks were unavailable.</p><p>Examining IQI data after the blog post was published, we found that the impact of this traffic shift was also visible in our latency data. As can be seen in the shaded area of the graph below, the shutdown of the mobile networks resulted in the median latency dropping about 25% as usage shifted from higher latency mobile networks to lower latency fixed broadband networks. An increase in latency is visible in the graph when mobile connectivity was restored on May 12.</p>
            <figure>
            
            <img src="https://cf-assets.www.cloudflare.com/zkvhlag99gkb/5bMBKpVtEY49leTuopoTHf/4bc57ff4c4e85e3143b331a0f3d81b89/image8-3.png" />
            
            </figure>
    <div>
      <h3>Bandwidth shifts as a potential early warning sign</h3>
      <a href="#bandwidth-shifts-as-a-potential-early-warning-sign">
        
      </a>
    </div>
    <p>On April 4, UK mobile operator <a href="https://twitter.com/CloudflareRadar/status/1643070260130504704">Virgin Media suffered several brief outages</a>. In examining the IQI bandwidth graph for <a href="https://radar.cloudflare.com/quality/as5089">AS5089</a>, the ASN used by Virgin Media (formerly branded as <a href="https://en.wikipedia.org/wiki/NTL_Incorporated">NTL</a>), indications of a potential problem are visible several days before the outages occurred, as median bandwidth dropped by about a third, from around 35 Mbps to around 23 Mbps. The outages are visible in the circled area in the graph below. <a href="https://www.ispreview.co.uk/index.php/2023/04/major-network-outage-strikes-broadband-isp-virgin-media-uk.html">Published reports</a> indicate that the problems lasted into April 5, in line with the lower median bandwidth measured through mid-day.</p>
            <figure>
            
            <img src="https://cf-assets.www.cloudflare.com/zkvhlag99gkb/7iJ8Kk0I1TyLMf0r3edCjw/aca8ca531143e0da750205e1cd2032f9/image1-34.png" />
            
            </figure>
    <div>
      <h3>Submarine cable issues cause slower browsing</h3>
      <a href="#submarine-cable-issues-cause-slower-browsing">
        
      </a>
    </div>
    <p>On June 5, Philippine Internet provider <a href="https://pldt.com/">PLDT</a> <a href="https://twitter.com/pldt/status/1665670783388254208">Tweeted</a> an advisory that noted “One of our submarine cable partners confirms a loss in some of its internet bandwidth capacity, and thus causing slower Internet browsing.” IQI latency and bandwidth graphs for <a href="https://radar.cloudflare.com/quality/as9299">AS9299</a>, a primary ASN used by PLDT, shows clear shifts starting around 06:45 UTC (14:45 local time). Median bandwidth dropped by half, from 17 Mbps to 8 Mbps, while median latency increased by 75% from 37 ms to around 65 ms. 75th percentile latency also saw a significant increase, nearly tripling from 63 ms to 180 ms coincident with the reported submarine cable issue.</p>
            <figure>
            
            <img src="https://cf-assets.www.cloudflare.com/zkvhlag99gkb/lAnA7kxm6DSC7bKYxN2Oo/f70e019d7950b43eb3d03907fc58055b/June-5---Philippines---PLDT---bandwidth---shaded.png" />
            
            </figure>
            <figure>
            
            <img src="https://cf-assets.www.cloudflare.com/zkvhlag99gkb/2wSAez7ZOMj6rnH2h4xnfv/07f99ef661079c5e8d4f5141a73b0567/image9.png" />
            
            </figure>
    <div>
      <h2>Conclusion</h2>
      <a href="#conclusion">
        
      </a>
    </div>
    <p>Making network performance and quality insights available on Cloudflare Radar supports Cloudflare’s mission to help build a better Internet. However, we’re not done yet – we have more enhancements planned. These include making data available at a more granular geographical level (such as state and possibly city), incorporating <a href="/aim-database-for-internet-quality/">AIM scores</a> to help assess Internet quality for specific types of use cases, and embedding the Cloudflare speed test directly on Radar using the <a href="https://github.com/cloudflare/speedtest?ref=blog.cloudflare.com">open source JavaScript module</a>.</p><p>In the meantime, we invite you to use <a href="https://speed.cloudflare.com/">speed.cloudflare.com</a> to test the performance and quality of your Internet connection, share any country or AS-level insights you discover on social media (tag <a href="https://twitter.com/cloudflareradar">@CloudflareRadar</a> on Twitter or <a href="https://noc.social/@cloudflareradar">https://noc.social/@cloudflareradar</a> on Mastodon), and explore the underlying data through the <a href="https://colab.research.google.com/drive/1xgc-7L1Okr04MSjsYJfiFeUN0Gu05bpQ?usp=sharing">M-Lab repository</a> or the <a href="https://developers.cloudflare.com/api/">Radar API</a>.</p>
    <div>
      <h3>Watch on Cloudflare TV</h3>
      <a href="#watch-on-cloudflare-tv">
        
      </a>
    </div>
    <div></div><p></p></h3> ]]></content:encoded>
            <category><![CDATA[Speed Week]]></category>
            <category><![CDATA[Radar]]></category>
            <category><![CDATA[Internet Quality]]></category>
            <category><![CDATA[Performance]]></category>
            <category><![CDATA[Speed]]></category>
            <guid isPermaLink="false">6T1IGaRvIoNpdBuOKcixG8</guid>
            <dc:creator>David Belson</dc:creator>
            <dc:creator>Carlos Rodrigues</dc:creator>
        </item>
        <item>
            <title><![CDATA[Helping build a safer Internet by measuring BGP RPKI Route Origin Validation]]></title>
            <link>https://blog.cloudflare.com/rpki-updates-data/</link>
            <pubDate>Fri, 16 Dec 2022 14:00:00 GMT</pubDate>
            <description><![CDATA[ Is BGP safe yet? If the question needs asking, then it isn't. But how far the Internet is from this goal is what we set out to answer. ]]></description>
            <content:encoded><![CDATA[ 
            <figure>
            
            <img src="https://cf-assets.www.cloudflare.com/zkvhlag99gkb/1VWVhVnz5Xbv2u1jm48KeJ/dd52aaf9426c64b5d2b68a0b7651cb93/image7-7.png" />
            
            </figure><p>The <a href="https://www.cloudflare.com/learning/security/glossary/what-is-bgp/">Border Gateway Protocol</a> (BGP) is the glue that keeps the entire Internet together. However, despite its vital function, BGP wasn't originally designed to protect against malicious actors or routing mishaps. It has since been updated to account for this shortcoming with the <a href="https://en.wikipedia.org/wiki/Resource_Public_Key_Infrastructure">Resource Public Key Infrastructure</a> (RPKI) framework, but can we declare it to be safe yet?</p><p>If the question needs asking, you might suspect we can't. There is a shortage of reliable data on how much of the Internet is protected from preventable routing problems. Today, we’re releasing a new method to measure exactly that: what percentage of Internet users are protected by their Internet Service Provider from these issues. We find that there is a long way to go before the Internet is protected from routing problems, though it varies dramatically by country.</p>
    <div>
      <h3>Why RPKI is necessary to secure Internet routing</h3>
      <a href="#why-rpki-is-necessary-to-secure-internet-routing">
        
      </a>
    </div>
    <p>The Internet is a network of independently-managed networks, called <a href="https://www.cloudflare.com/learning/network-layer/what-is-an-autonomous-system/">Autonomous Systems (ASes)</a>. To achieve global reachability, ASes interconnect with each other and determine the feasible paths to a given destination IP address by exchanging routing information using BGP. BGP enables routers with only local network visibility to construct end-to-end paths based on the arbitrary preferences of each administrative entity that operates that equipment. Typically, Internet traffic between a user and a destination traverses multiple AS networks using paths constructed by BGP routers.</p><p>BGP, however, lacks built-in security mechanisms to protect the integrity of the exchanged routing information and to provide authentication and authorization of the advertised IP address space. Because of this, AS operators must implicitly trust that the routing information exchanged through BGP is accurate. As a result, the Internet is vulnerable to the injection of bogus routing information, which cannot be mitigated by security measures at the client or server level of the network.</p><p>An adversary with access to a BGP router can inject fraudulent routes into the routing system, which can be used to execute an array of attacks, including:</p><ul><li><p>Denial-of-Service (DoS) through traffic blackholing or redirection,</p></li><li><p>Impersonation attacks to eavesdrop on communications,</p></li><li><p>Machine-in-the-Middle exploits to modify the exchanged data, and subvert reputation-based filtering systems.</p></li></ul><p>Additionally, local misconfigurations and fat-finger errors can be propagated well beyond the source of the error and cause major disruption across the Internet.</p><p>Such an incident happened on <a href="/how-verizon-and-a-bgp-optimizer-knocked-large-parts-of-the-internet-offline-today/">June 24, 2019</a>. Millions of users were unable to access Cloudflare address space when a regional ISP in Pennsylvania accidentally advertised routes to Cloudflare through their capacity-limited network. This was effectively the Internet equivalent of routing an entire freeway through a neighborhood street.</p><p>Traffic misdirections like these, either unintentional or intentional, are not uncommon. The Internet Society’s <a href="https://www.manrs.org/">MANRS</a> (Mutually Agreed Norms for Routing Security) initiative estimated that in 2020 alone there were <a href="https://www.manrs.org/2021/03/a-regional-look-into-bgp-incidents-in-2020/">over 3,000 route leaks and hijacks</a>, and new occurrences can be <a href="/route-leak-detection-with-cloudflare-radar/">observed every day through Cloudflare Radar.</a></p><p>The most prominent proposals to secure BGP routing, standardized by the <a href="https://www.ietf.org/about/introduction/">IETF</a> focus on validating the origin of the advertised routes using <a href="https://en.wikipedia.org/wiki/Resource_Public_Key_Infrastructure">Resource Public Key Infrastructure</a> (RPKI) and verifying the integrity of the paths with <a href="https://en.wikipedia.org/wiki/BGPsec">BGPsec</a>. Specifically, RPKI (defined in <a href="https://www.rfc-editor.org/rfc/rfc7115.html">RFC 7115</a>) relies on a <a href="https://en.wikipedia.org/wiki/Public_key_infrastructure">Public Key Infrastructure</a> to validate that an AS advertising a route to a destination (an IP address space) is the legitimate owner of those IP addresses.</p><p>RPKI has been defined for a long time but lacks adoption. It requires network operators to cryptographically sign their prefixes, and routing networks to perform an RPKI Route Origin Validation (ROV) on their routers. This is a two-step operation that requires coordination and participation from many actors to be effective.</p>
    <div>
      <h3>The two phases of RPKI adoption: signing origins and validating origins</h3>
      <a href="#the-two-phases-of-rpki-adoption-signing-origins-and-validating-origins">
        
      </a>
    </div>
    <p>RPKI has two phases of deployment: first, an AS that wants to protect its own IP prefixes can cryptographically sign Route Origin Authorization (ROA) records thereby attesting to be the legitimate origin of that signed IP space. Second, an AS can avoid selecting invalid routes by performing Route Origin Validation (ROV, defined in <a href="https://www.rfc-editor.org/rfc/rfc6483">RFC 6483</a>).</p><p>With ROV, a BGP route received by a neighbor is validated against the available RPKI records. A route that is valid or missing from RPKI is selected, while a route with RPKI records found to be invalid is typically rejected, thus preventing the use and propagation of hijacked and misconfigured routes.</p><p>One issue with RPKI is the fact that implementing ROA is meaningful only if other ASes implement ROV, and vice versa. Therefore, securing BGP routing requires a united effort and a lack of broader adoption disincentivizes ASes from commiting the resources to validate their own routes. Conversely, increasing RPKI adoption can lead to network effects and accelerate RPKI deployment. Projects like MANRS and Cloudflare’s <a href="https://isbgpsafeyet.com/">isbgpsafeyet.com</a> are promoting good Internet citizenship among network operators, and make the benefits of RPKI deployment known to the Internet. You can check whether your own ISP is being a good Internet citizen by testing it on <a href="https://isbgpsafeyet.com/">isbgpsafeyet.com</a>.</p><p>Measuring the extent to which both ROA (signing of addresses by the network that controls them) and ROV (filtering of invalid routes by ISPs) have been implemented is important to evaluating the impact of these initiatives, developing situational awareness, and predicting the impact of future misconfigurations or attacks.</p><p>Measuring ROAs is straightforward since ROA data is <a href="https://ftp.ripe.net/rpki/">readily available</a> from RPKI repositories. Querying RPKI repositories for publicly routed IP prefixes (e.g. prefixes visible in the <a href="http://www.routeviews.org/">RouteViews</a> and <a href="https://www.ripe.net/analyse/internet-measurements/routing-information-service-ris">RIPE RIS</a> routing tables) allows us to estimate the percentage of addresses covered by ROA objects. Currently, there are 393,344 IPv4 and 86,306 IPv6 ROAs in the global RPKI system, covering about 40% of the globally routed prefix-AS origin pairs<sup>1</sup>.</p><p>Measuring ROV, however, is significantly more challenging given it is configured inside the BGP routers of each AS, not accessible by anyone other than each router’s administrator.</p>
    <div>
      <h3>Measuring ROV deployment</h3>
      <a href="#measuring-rov-deployment">
        
      </a>
    </div>
    <p>Although we do not have direct access to the configuration of everyone’s BGP routers, it is possible to infer the use of ROV by comparing the reachability of RPKI-valid and RPKI-invalid prefixes from measurement points within an AS<sup>2</sup>.</p><p>Consider the following toy topology as an example, where an RPKI-invalid origin is advertised through AS0 to AS1 and AS2. If AS1 filters and rejects RPKI-invalid routes, a user behind AS1 would not be able to connect to that origin. By contrast, if AS2 does not reject RPKI invalids, a user behind AS2 would be able to connect to that origin.</p><p>While occasionally a user may be unable to access an origin due to transient network issues, if multiple users act as vantage points for a measurement system, we would be able to collect a large number of data points to infer which ASes deploy ROV.</p>
            <figure>
            
            <img src="https://cf-assets.www.cloudflare.com/zkvhlag99gkb/3ix5pgVzjgMlL7BugvGJDD/aff6d6eaf101da010a24fa8e7908b106/1-1.png" />
            
            </figure><p>If, in the figure above, AS0 filters invalid RPKI routes, then vantage points in both AS1 and AS2 would be unable to connect to the RPKI-invalid origin, making it hard to distinguish if ROV is deployed at the ASes of our vantage points or in an AS along the path. One way to mitigate this limitation is to announce the RPKI-invalid origin from multiple locations from an anycast network taking advantage of its direct interconnections to the measurement vantage points as shown in the figure below. As a result, an AS that does not itself deploy ROV is less likely to observe the benefits of upstream ASes using ROV, and we would be able to accurately infer ROV deployment per AS<sup>3</sup>.</p><p><i>Note that it’s also important that the IP address of the RPKI-invalid origin should not be covered by a less specific prefix for which there is a valid or unknown RPKI route, otherwise even if an AS filters invalid RPKI routes its users would still be able to find a route to that IP.</i></p>
            <figure>
            
            <img src="https://cf-assets.www.cloudflare.com/zkvhlag99gkb/7HDnUbqxvRQ3DbhArqJsMg/a21bfe1ef026a4aa615ac21f759d3f3f/2-1.png" />
            
            </figure><p>The measurement technique described here is the one implemented by Cloudflare’s <a href="https://isbgpsafeyet.com">isbgpsafeyet.com</a> website, allowing end users to assess whether or not their ISPs have deployed BGP ROV.</p><p>The <a href="https://isbgpsafeyet.com/">isbgpsafeyet.com</a> website itself doesn't submit any data back to Cloudflare, but recently we started measuring whether end users’ browsers can successfully connect to invalid RPKI origins when ROV is present. We use the same mechanism as is used for <a href="/network-performance-update-developer-week/">global performance data</a><sup>4</sup>. In particular, every measurement session (an individual end user at some point in time) attempts a request to both valid.rpki.cloudflare.com, which should always succeed as it’s RPKI-valid, and invalid.rpki.cloudflare.com, which is RPKI-invalid and should fail when the user’s ISP uses ROV.</p><p>This allows us to have continuous and up-to-date measurements from hundreds of thousands of browsers on a daily basis, and develop a greater understanding of the state of ROV deployment.</p>
    <div>
      <h3>The state of global ROV deployment</h3>
      <a href="#the-state-of-global-rov-deployment">
        
      </a>
    </div>
    <p>The figure below shows the raw number of ROV probe requests per hour during October 2022 to <i>valid.rpki.cloudflare.com</i> and <i>invalid.rpki.cloudflare.com</i>. In total, we observed 69.7 million successful probes from 41,531 ASNs.</p>
            <figure>
            
            <img src="https://cf-assets.www.cloudflare.com/zkvhlag99gkb/16AWpr0oNevsWJynpNN1v4/51885d284ed9360416c915a935f19d6d/3-1.png" />
            
            </figure><p>Based on <a href="https://labs.apnic.net/?p=526">APNIC's estimates</a> on the number of end users per ASN, our weighted<sup>5</sup> analysis covers 96.5% of the world's Internet population. As expected, the number of requests follow a diurnal pattern which reflects established user behavior in daily and weekly Internet activity<sup>6</sup>.</p><p>We can also see that the number of successful requests to <i>valid.rpki.cloudflare.com</i> (<b><i>gray line</i></b>) closely follows the number of sessions that issued at least one request (<b><i>blue line</i></b>), which works as a smoke test for the correctness of our measurements.</p><p>As we don't store the IP addresses that contribute measurements, we don’t have any way to count individual clients and large spikes in the data may introduce unwanted bias. We account for that by capturing those instants and excluding them.</p>
            <figure>
            
            <img src="https://cf-assets.www.cloudflare.com/zkvhlag99gkb/2rou45RM7Y0NdF2opTgGZE/0e708f6e801926147cd498a355751b21/4-1.png" />
            
            </figure><p>Overall, we estimate that out of the four billion Internet users, <b>only 261 million (6.5%) are protected by BGP Route Origin Validation</b>, but the true state of global ROV deployment is more subtle than this.</p><p>The following map shows the fraction of dropped RPKI-invalid requests from ASes with over 200 probes over the month of October. It depicts how far along each country is in adopting ROV but doesn’t necessarily represent the fraction of protected users in each country, as we will discover.</p>
            <figure>
            
            <img src="https://cf-assets.www.cloudflare.com/zkvhlag99gkb/3UzNnhgQaIpcQktYHwNwpf/b6a389c9ed94e49456c75aa0f8689264/5-1.png" />
            
            </figure><p>Sweden and Bolivia appear to be the countries with the highest level of adoption (over 80%), while only a few other countries have crossed the 50% mark (e.g. Finland, Denmark, Chad, Greece, the United States).</p><p>ROV adoption may be driven by a few ASes hosting large user populations, or by many ASes hosting small user populations. To understand such disparities, the map below plots the contrast between overall adoption in a country (as in the previous map) and median adoption over the individual ASes within that country. Countries with stronger reds have relatively few ASes deploying ROV with high impact, while countries with stronger blues have more ASes deploying ROV but with lower impact per AS.</p>
            <figure>
            
            <img src="https://cf-assets.www.cloudflare.com/zkvhlag99gkb/6m2lvwtrbDEzDObM6NfW5W/2371a8bdb5f7ed5ed4981103d4aad4c5/6-1.png" />
            
            </figure><p>In the Netherlands, Denmark, Switzerland, or the United States, adoption appears mostly driven by their larger ASes, while in Greece or Yemen it’s the smaller ones that are adopting ROV.</p><p>The following histogram summarizes the worldwide level of adoption for the 6,765 ASes covered by the previous two maps.</p>
            <figure>
            
            <img src="https://cf-assets.www.cloudflare.com/zkvhlag99gkb/5zg7hScwuknrlGP0z76zvx/6fa811c1f9f92f50397ec64267b0af73/7.png" />
            
            </figure><p>Most ASes either don’t validate at all, or have close to 100% adoption, which is what we’d intuitively expect. However, it's interesting to observe that there are small numbers of ASes all across the scale. ASes that exhibit partial RPKI-invalid drop rate compared to total requests may either implement ROV partially (on some, but not all, of their BGP routers), or appear as dropping RPKI invalids due to ROV deployment by other ASes in their upstream path.</p><p>To estimate the number of users protected by ROV we only considered ASes with an observed adoption above <b>95%</b>, as an AS with an incomplete deployment still leaves its users vulnerable to route leaks from its BGP peers.</p><p>If we take the previous histogram and summarize by the number of users behind each AS, the green bar on the right corresponds to the <b>261 million</b> users currently protected by ROV according to the above criteria (686 ASes).</p>
            <figure>
            
            <img src="https://cf-assets.www.cloudflare.com/zkvhlag99gkb/NAtYPcWbDWsiBiMfX56es/40a59d3253b0cba83c6e1bde2bbf83a6/8.png" />
            
            </figure><p>Looking back at the country adoption map one would perhaps expect the number of protected users to be larger. But worldwide ROV deployment is still mostly partial, lacking larger ASes, or both. This becomes even more clear when compared with the next map, plotting just the fraction of fully protected users.</p>
            <figure>
            
            <img src="https://cf-assets.www.cloudflare.com/zkvhlag99gkb/7kAM05eOwaPusgkvSIASoB/e86386a84c161919b3bdc9018145eb1c/9.png" />
            
            </figure><p>To wrap up our analysis, we look at two world economies chosen for their contrasting, almost symmetrical, stages of deployment: the United States and the European Union.</p>
            <figure>
            
            <img src="https://cf-assets.www.cloudflare.com/zkvhlag99gkb/3DShkKyva4l7rm5qC7gQnP/2ba1802f7d305815450bc1b9df372abb/10.png" />
            
            </figure>
            <figure>
            
            <img src="https://cf-assets.www.cloudflare.com/zkvhlag99gkb/4Q0ipIYrllZ63MXSRYEh59/bc25c31c0de0b71c157f909e5eb8522f/11.png" />
            
            </figure><p>112 million Internet users are protected by 111 ASes from the United States with comprehensive ROV deployments. Conversely, more than twice as many ASes from countries making up the European Union have fully deployed ROV, but end up covering only half as many users. This can be reasonably explained by end user ASes being more likely to operate within a single country rather than span multiple countries.</p>
    <div>
      <h3>Conclusion</h3>
      <a href="#conclusion">
        
      </a>
    </div>
    <p>Probe requests were performed from end user browsers and very few measurements were collected from transit providers (which have few end users, if any). Also, paths between end user ASes and Cloudflare are often very short (a nice outcome of our extensive peering) and don't traverse upper-tier networks that they would otherwise use to reach the rest of the Internet.</p><p>In other words, the methodology used focuses on ROV adoption by <b>end user networks</b> (e.g. ISPs) and isn’t meant to reflect the eventual effect of indirect validation from (perhaps validating) upper-tier transit networks. While indirect validation may limit the "blast radius" of (malicious or accidental) route leaks, it still leaves non-validating ASes vulnerable to leaks coming from their peers.</p><p>As with indirect validation, an AS remains vulnerable until its ROV deployment reaches a sufficient level of completion. We chose to only consider AS deployments above 95% as truly comprehensive, and <a href="https://radar.cloudflare.com">Cloudflare Radar</a> will soon begin using this threshold to track ROV adoption worldwide, as part of our mission to help build a better Internet.</p><p>When considering only comprehensive ROV deployments, some countries such as Denmark, Greece, Switzerland, Sweden, or Australia, already show an effective coverage above 50% of their respective Internet populations, with others like the Netherlands or the United States slightly above 40%, mostly driven by few large ASes rather than many smaller ones.</p><p>Worldwide we observe a very low effective coverage of just <b>6.5%</b> over the measured ASes, corresponding to <b>261 million</b> end users currently safe from (malicious and accidental) route leaks, which means there’s still a long way to go before we can declare BGP to be safe.</p><p>......</p><p><sup>1</sup><a href="https://rpki.cloudflare.com/">https://rpki.cloudflare.com/</a></p><p><sup>2</sup>Gilad, Yossi, Avichai Cohen, Amir Herzberg, Michael Schapira, and Haya Shulman. "Are we there yet? On RPKI's deployment and security." Cryptology ePrint Archive (2016).</p><p><sup>3</sup>Geoff Huston. “Measuring ROAs and ROV”. <a href="https://blog.apnic.net/2021/03/24/measuring-roas-and-rov/">https://blog.apnic.net/2021/03/24/measuring-roas-and-rov/</a>
<sup>4</sup>Measurements are issued stochastically when users encounter 1xxx error pages from default (non-customer) configurations.</p><p><sup>5</sup>Probe requests are weighted by AS size as calculated from Cloudflare's <a href="https://radar.cloudflare.com/">worldwide HTTP traffic</a>.</p><p><sup>6</sup>Quan, Lin, John Heidemann, and Yuri Pradkin. "When the Internet sleeps: Correlating diurnal networks with external factors." In Proceedings of the 2014 Conference on Internet Measurement Conference, pp. 87-100. 2014.</p> ]]></content:encoded>
            <category><![CDATA[Impact Week]]></category>
            <category><![CDATA[Radar]]></category>
            <category><![CDATA[BGP]]></category>
            <category><![CDATA[RPKI]]></category>
            <category><![CDATA[Routing Security]]></category>
            <category><![CDATA[Better Internet]]></category>
            <guid isPermaLink="false">dMGl1iwWVn3YZWRTxIzgV</guid>
            <dc:creator>Carlos Rodrigues</dc:creator>
            <dc:creator>Vasilis Giotsas</dc:creator>
        </item>
    </channel>
</rss>