
<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>Wed, 15 Apr 2026 19:42:25 GMT</lastBuildDate>
        <item>
            <title><![CDATA[Route leak incident on January 22, 2026]]></title>
            <link>https://blog.cloudflare.com/route-leak-incident-january-22-2026/</link>
            <pubDate>Fri, 23 Jan 2026 14:00:00 GMT</pubDate>
            <description><![CDATA[ An automated routing policy configuration error caused us to leak some Border Gateway Protocol prefixes unintentionally from a router at our Miami data center. We discuss the impact and the changes we are implementing as a result. ]]></description>
            <content:encoded><![CDATA[ <p>On January 22, 2026, an automated routing policy configuration error caused us to leak some <a href="http://cloudflare.com/learning/security/glossary/what-is-bgp/"><u>Border Gateway Protocol (BGP)</u></a> prefixes unintentionally from a router at our data center in Miami, Florida. While the route leak caused some impact to Cloudflare customers, multiple external parties were also affected because their traffic was accidentally funnelled through our Miami data center location.</p><p>The route leak lasted 25 minutes, causing congestion on some of our backbone infrastructure in Miami, elevated loss for some Cloudflare customer traffic, and higher latency for traffic across these links. Additionally, some traffic was discarded by firewall filters on our routers that are designed to only accept traffic for Cloudflare services and our customers.</p><p>While we’ve written about route leaks before, we rarely find ourselves causing them. This route leak was the result of an accidental misconfiguration on a router in Cloudflare’s network, and only affected IPv6 traffic. We sincerely apologize to the users, customers, and networks we impacted yesterday as a result of this BGP route leak.</p>
    <div>
      <h3>BGP route leaks </h3>
      <a href="#bgp-route-leaks">
        
      </a>
    </div>
    <p>We have <a href="https://blog.cloudflare.com/how-verizon-and-a-bgp-optimizer-knocked-large-parts-of-the-internet-offline-today/"><u>written multiple times</u></a> about <a href="https://blog.cloudflare.com/cloudflare-1111-incident-on-june-27-2024/"><u>BGP route leaks</u></a>, and we even record <a href="https://blog.cloudflare.com/route-leak-detection-with-cloudflare-radar/"><u>route leak events</u></a> on Cloudflare Radar for anyone to view and learn from. To get a fuller understanding of what route leaks are, you can refer to this <a href="https://blog.cloudflare.com/bgp-route-leak-venezuela/#background-bgp-route-leaks"><u>detailed background section</u></a>, or refer to the formal definition within <a href="https://datatracker.ietf.org/doc/html/rfc7908"><u>RFC7908</u></a>. </p><p>Essentially, a route leak occurs when a network tells the broader Internet to send it traffic that it's not supposed to forward. Technically, a route leak occurs when a network, or Autonomous System (AS), appears unexpectedly in an AS path. An AS path is what BGP uses to determine the path across the Internet to a final destination. An example of an anomalous AS path indicative of a route leak would be finding a network sending routes received from a peer to a provider.</p>
          <figure>
          <img src="https://cf-assets.www.cloudflare.com/zkvhlag99gkb/30z4NDtf6DjVQZOfZatGUX/6ff06eb02c61d8e818d9da8ecd87c1c8/BLOG-3135_2.png" />
          </figure><p>During this type of route leak, the rules of <a href="https://people.eecs.berkeley.edu/~sylvia/cs268-2019/papers/gao-rexford.pdf"><u>valley-free routing</u></a> are violated, as BGP updates are sent from AS64501 to their peer (AS64502), and then unexpectedly up to a provider (AS64503). Oftentimes the leaker, in this case AS64502, is not prepared to handle the amount of traffic they are going to receive and may not even have firewall filters configured to accept all of the traffic coming in their direction. In simple terms, once a route update is sent to a peer or provider, it should only be sent further to customers and not to another peer or provider AS.</p><p>During the incident on January 22, we caused a similar kind of route leak, in which we took routes from some of our peers and redistributed them in Miami to some of our peers and providers. According to the route leak definitions in RFC7908, we caused a mixture of Type 3 and Type 4 route leaks on the Internet. </p>
    <div>
      <h3>Timeline</h3>
      <a href="#timeline">
        
      </a>
    </div>
    <table><tr><th><p><b>Time (UTC)</b></p></th><th><p><b>Event</b></p></th></tr><tr><td><p>2026-01-22 19:52 UTC</p></td><td><p>A change that ultimately triggers the routing policy bug is merged in our network automation code repository</p></td></tr><tr><td><p>2026-01-22 20:25 UTC</p></td><td><p>Automation is run on single Miami edge-router resulting in unexpected advertisements to BGP transit providers and peers</p><p><b>IMPACT START</b></p></td></tr><tr><td><p>2026-01-22 20:40 UTC</p></td><td><p>Network team begins investigating unintended route advertisements from Miami</p></td></tr><tr><td><p>2026-01-22 20:44 UTC</p></td><td><p>Incident is raised to coordinate response</p></td></tr><tr><td><p>2026-01-22 20:50 UTC</p></td><td><p>The bad configuration change is manually reverted by a network operator, and automation is paused for the router, so it cannot run again</p><p><b>IMPACT STOP</b></p></td></tr><tr><td><p>2026-01-22 21:47 UTC</p></td><td><p>The change that triggered the leak is reverted from our code repository</p></td></tr><tr><td><p>2026-01-22 22:07 UTC</p></td><td><p>Automation is confirmed by operators to be healthy to run again on the Miami router, without the routing policy bug</p></td></tr><tr><td><p>2026-01-22 22:40 UTC</p></td><td><p>Automation is unpaused on the single router in Miami</p></td></tr></table>
    <div>
      <h3>What happened: the configuration error</h3>
      <a href="#what-happened-the-configuration-error">
        
      </a>
    </div>
    <p>On January 22, 2026, at 20:25 UTC, we pushed a change via our policy automation platform to remove the BGP announcements from Miami for one of our data centers in Bogotá, Colombia. This was purposeful, as we previously forwarded some IPv6 traffic through Miami toward the Bogotá data center, but recent infrastructure upgrades removed the need for us to do so.</p><p>This change generated the following diff (a program that <a href="https://www.google.com/search?sca_esv=3236b0192813a1a3&amp;rlz=1C5GCEM_enUS1183US1183&amp;sxsrf=ANbL-n4_5E8v7Ar8tpKKnczz7xfci6HL8w:1769145786825&amp;q=compares&amp;si=AL3DRZGCrnAF0R35UNPJcgaBbCFaNwxQEU_o22EUn2GaHpSR2UyenaROnahi_5cmhKmzHjtezT-J9hw3KLJeTkLeyo7_nJgoJebLkbDRWvoJl5t5oX8bAPI%3D&amp;expnd=1&amp;sa=X&amp;ved=2ahUKEwiW1bfR9aCSAxXaOjQIHSIBDMoQyecJegQIKhAR">compares</a> configuration files in order to determine how or whether they differ):</p>
            <pre><code>[edit policy-options policy-statement 6-COGENT-ACCEPT-EXPORT term ADV-SITELOCAL-GRE-RECEIVER from]
-      prefix-list 6-BOG04-SITE-LOCAL;
[edit policy-options policy-statement 6-COMCAST-ACCEPT-EXPORT term ADV-SITELOCAL-GRE-RECEIVER from]
-      prefix-list 6-BOG04-SITE-LOCAL;
[edit policy-options policy-statement 6-GTT-ACCEPT-EXPORT term ADV-SITELOCAL-GRE-RECEIVER from]
-      prefix-list 6-BOG04-SITE-LOCAL;
[edit policy-options policy-statement 6-LEVEL3-ACCEPT-EXPORT term ADV-SITELOCAL-GRE-RECEIVER from]
-      prefix-list 6-BOG04-SITE-LOCAL;
[edit policy-options policy-statement 6-PRIVATE-PEER-ANYCAST-OUT term ADV-SITELOCAL from]
-      prefix-list 6-BOG04-SITE-LOCAL;
[edit policy-options policy-statement 6-PUBLIC-PEER-ANYCAST-OUT term ADV-SITELOCAL from]
-      prefix-list 6-BOG04-SITE-LOCAL;
[edit policy-options policy-statement 6-PUBLIC-PEER-OUT term ADV-SITELOCAL from]
-      prefix-list 6-BOG04-SITE-LOCAL;
[edit policy-options policy-statement 6-TELEFONICA-ACCEPT-EXPORT term ADV-SITELOCAL-GRE-RECEIVER from]
-      prefix-list 6-BOG04-SITE-LOCAL;
[edit policy-options policy-statement 6-TELIA-ACCEPT-EXPORT term ADV-SITELOCAL-GRE-RECEIVER from]
-      prefix-list 6-BOG04-SITE-LOCAL;</code></pre>
            <p>While this policy change looks innocent at a glance, only removing the prefix lists containing BOG04 unicast prefixes resulted in a policy that was too permissive:</p>
            <pre><code>policy-options policy-statement 6-TELIA-ACCEPT-EXPORT {
    term ADV-SITELOCAL-GRE-RECEIVER {
        from route-type internal;
        then {
            community add STATIC-ROUTE;
            community add SITE-LOCAL-ROUTE;
            community add MIA01;
            community add NORTH-AMERICA;
            accept;
        }
    }
}
</code></pre>
            <p>The policy would now mark every prefix of type “internal” as acceptable, and proceed to add some informative communities to all matching prefixes. But more importantly, the policy also accepted the route through the policy filter, which resulted in the prefix — which was intended to be “internal” —  being advertised externally. This is an issue because the “route-type internal” match in JunOS or JunOS EVO (the operating systems used by <a href="https://www.hpe.com/us/en/home.html"><u>HPE Juniper Networks</u></a> devices) will match any non-external route type, such as Internal BGP (IBGP) routes, which is what happened here.</p><p>As a result, all IPv6 prefixes that Cloudflare redistributes internally across the backbone were accepted by this policy, and advertised to all our BGP neighbors in Miami. This is unfortunately very similar to the outage we experienced in 2020, on which you can read more <a href="https://blog.cloudflare.com/cloudflare-outage-on-july-17-2020/"><u>on our blog</u></a>.</p><p>When the policy misconfiguration was applied at 20:25 UTC, a series of unintended BGP updates were sent from AS13335 to peers and providers in Miami. These BGP updates are viewable historically by looking at MRT files with the <a href="https://github.com/bgpkit/monocle"><u>monocle</u></a> tool or using <a href="https://stat.ripe.net/bgplay/2a03%3A2880%3Af312%3A%3A%2F48#starttime=1769112000&amp;endtime=1769115659&amp;instant=56,1769113845"><u>RIPE BGPlay</u></a>. </p>
            <pre><code>➜  ~ monocle search --start-ts 2026-01-22T20:24:00Z --end-ts 2026-01-22T20:30:00Z --as-path ".*13335[ \d$]32934$*"
A|1769113609.854028|2801:14:9000::6:4112:1|64112|2a03:2880:f077::/48|64112 22850 174 3356 13335 32934|IGP|2801:14:9000::6:4112:1|0|0|22850:65151|false|||pit.scl
A|1769113609.854028|2801:14:9000::6:4112:1|64112|2a03:2880:f091::/48|64112 22850 174 3356 13335 32934|IGP|2801:14:9000::6:4112:1|0|0|22850:65151|false|||pit.scl
A|1769113609.854028|2801:14:9000::6:4112:1|64112|2a03:2880:f16f::/48|64112 22850 174 3356 13335 32934|IGP|2801:14:9000::6:4112:1|0|0|22850:65151|false|||pit.scl
A|1769113609.854028|2801:14:9000::6:4112:1|64112|2a03:2880:f17c::/48|64112 22850 174 3356 13335 32934|IGP|2801:14:9000::6:4112:1|0|0|22850:65151|false|||pit.scl
A|1769113609.854028|2801:14:9000::6:4112:1|64112|2a03:2880:f26f::/48|64112 22850 174 3356 13335 32934|IGP|2801:14:9000::6:4112:1|0|0|22850:65151|false|||pit.scl
A|1769113609.854028|2801:14:9000::6:4112:1|64112|2a03:2880:f27c::/48|64112 22850 174 3356 13335 32934|IGP|2801:14:9000::6:4112:1|0|0|22850:65151|false|||pit.scl
A|1769113609.854028|2801:14:9000::6:4112:1|64112|2a03:2880:f33f::/48|64112 22850 174 3356 13335 32934|IGP|2801:14:9000::6:4112:1|0|0|22850:65151|false|||pit.scl
A|1769113583.095278|2001:504:d::4:9544:1|49544|2a03:2880:f17c::/48|49544 1299 3356 13335 32934|IGP|2001:504:d::4:9544:1|0|0|1299:25000 1299:25800 49544:16000 49544:16106|false|||route-views.isc
A|1769113583.095278|2001:504:d::4:9544:1|49544|2a03:2880:f27c::/48|49544 1299 3356 13335 32934|IGP|2001:504:d::4:9544:1|0|0|1299:25000 1299:25800 49544:16000 49544:16106|false|||route-views.isc
A|1769113583.095278|2001:504:d::4:9544:1|49544|2a03:2880:f091::/48|49544 1299 3356 13335 32934|IGP|2001:504:d::4:9544:1|0|0|1299:25000 1299:25800 49544:16000 49544:16106|false|||route-views.isc
A|1769113584.324483|2001:504:d::19:9524:1|199524|2a03:2880:f091::/48|199524 1299 3356 13335 32934|IGP|2001:2035:0:2bfd::1|0|0||false|||route-views.isc
A|1769113584.324483|2001:504:d::19:9524:1|199524|2a03:2880:f17c::/48|199524 1299 3356 13335 32934|IGP|2001:2035:0:2bfd::1|0|0||false|||route-views.isc
A|1769113584.324483|2001:504:d::19:9524:1|199524|2a03:2880:f27c::/48|199524 1299 3356 13335 32934|IGP|2001:2035:0:2bfd::1|0|0||false|||route-views.isc
{trimmed}
</code></pre>
            <p><sup><i>In the monocle output seen above, we have the timestamp of our BGP update, followed by the next-hop in the announcement, the ASN of the network feeding a given route-collector, the prefix involved, and the AS path and BGP communities if any are found. At the end of the output per-line, we also find the route-collector instance.</i></sup></p><p>Looking at the first update for prefix 2a03:2880:f077::/48, the AS path is <i>64112 22850 174 3356 13335 32934</i>. This means we (AS13335) took the prefix received from Meta (AS32934), our peer, and then advertised it toward Lumen (AS3356), one of our upstream transit providers. We know this is a route leak as routes received from peers are only meant to be readvertised to downstream (customer) networks, not laterally to other peers or up to providers.</p><p>As a result of the leak and the forwarding of unintended traffic into our Miami router from providers and peers, we experienced congestion on our backbone between Miami and Atlanta, as you can see in the graph below. </p>
          <figure>
          <img src="https://cf-assets.www.cloudflare.com/zkvhlag99gkb/SIiBSb7qnfStZ0jQAZ8ne/14009779b7551e4f26c4cc3ae2c1141b/BLOG-3135_3.png" />
          </figure><p>This would have resulted in elevated loss for some Cloudflare customer traffic, and higher latency than usual for traffic traversing these links. In addition to this congestion, the networks whose prefixes we leaked would have had their traffic discarded by firewall filters on our routers that are designed to only accept traffic for Cloudflare services and our customers. At peak, we discarded around 12Gbps of traffic ingressing our router in Miami for these non-downstream prefixes. </p>
          <figure>
          <img src="https://cf-assets.www.cloudflare.com/zkvhlag99gkb/jMaMLbijdtS8GYZOVzwoX/40325907032cbb8d27f00bc561191d23/BLOG-3135_4.png" />
          </figure>
    <div>
      <h3>Follow-ups and preventing route leaks </h3>
      <a href="#follow-ups-and-preventing-route-leaks">
        
      </a>
    </div>
    <p>We are big supporters and active contributors to efforts within the <a href="https://www.ietf.org/"><u>IETF</u></a> and <a href="https://manrs.org/"><u>infrastructure community</u></a> that strengthen routing security. We know firsthand how easy it is to cause a route leak accidentally, as evidenced by this incident. </p><p>Preventing route leaks will require a multi-faceted approach, but we have identified multiple areas in which we can improve, both short- and long-term.</p><p>In terms of our routing policy configurations and automation, we are:</p><ul><li><p>Patching the failure in our routing policy automation that caused the route leak, and will mitigate this potential failure and others like it immediately </p></li><li><p>Implementing additional BGP community-based safeguards in our routing policies that explicitly reject routes that were received from providers and peers on external export policies </p></li><li><p>Adding automatic routing policy evaluation into our <a href="https://www.cloudflare.com/learning/serverless/glossary/what-is-ci-cd/">CI/CD pipelines</a> that looks specifically for empty or erroneous policy terms </p></li><li><p>Improve early detection of issues with network configurations and the negative effects of an automated change</p></li></ul><p>To help prevent route leaks in general, we are: </p><ul><li><p>Validating routing equipment vendors' implementation of <a href="https://datatracker.ietf.org/doc/rfc9234/"><u>RFC9234</u></a> (BGP roles and the Only-to-Customer Attribute) in preparation for our rollout of the feature, which is the only way <i>independent of routing policy</i> to prevent route leaks caused at the <i>local</i> Autonomous System (AS)</p></li><li><p>Encouraging the long term adoption of RPKI <a href="https://datatracker.ietf.org/doc/draft-ietf-sidrops-aspa-verification/"><u>Autonomous System Provider Authorization (ASPA)</u></a>, where networks could automatically reject routes that contain anomalous AS paths</p></li></ul><p>Most importantly, we would again like to apologize for the impact we caused users and customers of Cloudflare, as well as any impact felt by external networks.</p><p></p> ]]></content:encoded>
            <category><![CDATA[BGP]]></category>
            <category><![CDATA[Post Mortem]]></category>
            <guid isPermaLink="false">1lDFdmcpnlPwczsEbswsTs</guid>
            <dc:creator>Bryton Herdes</dc:creator>
            <dc:creator>Tom Strickx</dc:creator>
        </item>
        <item>
            <title><![CDATA[Making progress on routing security: the new White House roadmap]]></title>
            <link>https://blog.cloudflare.com/white-house-routing-security/</link>
            <pubDate>Mon, 02 Sep 2024 23:00:00 GMT</pubDate>
            <description><![CDATA[ On September 3, 2024, the White House published a report on Internet routing security. We’ll talk about what that means and how you can help. ]]></description>
            <content:encoded><![CDATA[ <p>The Internet can feel like magic. When you load a webpage in your browser, many simultaneous requests for data fly back and forth to remote servers. Then, often in less than one second, a website appears. Many people know that DNS is used to look up a hostname, and resolve it to an IP address, but fewer understand how data flows from your home network to the network that controls the IP address of the web server.</p><p>The Internet is an interconnected network of networks, operated by thousands of independent entities. To allow these networks to communicate with each other, in 1989, <a href="https://weare.cisco.com/c/r/weare/amazing-stories/amazing-things/two-napkin.html"><u>on the back of two napkins</u></a>, three network engineers devised the <a href="https://www.cloudflare.com/learning/security/glossary/what-is-bgp/"><u>Border Gateway Protocol (BGP)</u></a>. It allows these independent networks to signal directions for IP prefixes they own, or that are reachable through their network. At that time, Internet security wasn’t a big deal — <a href="https://www.cloudflare.com/learning/ssl/what-is-ssl/"><u>SSL</u></a>, initially developed to secure websites, wasn’t developed until 1995, six years later. So BGP wasn’t originally built with security in mind, but over time, security and availability concerns have emerged.</p><p>Today, the <a href="https://bidenwhitehouse.archives.gov/oncd/"><u>White House Office of the National Cyber Director</u></a> issued the <a href="https://bidenwhitehouse.archives.gov/oncd/briefing-room/2024/09/03/fact-sheet-biden-harris-administration-releases-roadmap-to-enhance-internet-routing-security/"><u>Roadmap to Enhancing Internet Routing Security</u></a>, and we’re excited to highlight their recommendations. But before we get into that, let’s provide a quick refresher on what BGP is and why routing security is so important.</p>
    <div>
      <h2>BGP: pathways through the Internet</h2>
      <a href="#bgp-pathways-through-the-internet">
        
      </a>
    </div>
    <p>BGP is the core signaling protocol used on the Internet. It’s fully distributed, and managed independently by all the individual operators of the Internet. With BGP, operators will send messages to their neighbors (other networks they are directly connected with, either physically or through an <a href="https://www.cloudflare.com/learning/cdn/glossary/internet-exchange-point-ixp/"><u>Internet Exchange</u></a>) that indicate their network can be used to reach a specific IP prefix. These IP prefixes can be resources the network owns themselves, such as <a href="https://radar.cloudflare.com/routing/prefix/104.16.128.0/20"><u>104.16.128.0/20</u></a> for Cloudflare, or resources that are reachable through their network, by transiting the network.</p><p>By exchanging all of this information between peers, each individual network on the Internet can form a full map of what the Internet looks like, and ideally, how to reach each IP address on the Internet. This map is in an almost constant state of flux: networks disappear from the Internet for a wide variety of reasons, ranging from scheduled maintenance to catastrophic failures, like the <a href="https://blog.cloudflare.com/october-2021-facebook-outage/"><u>Facebook incident in 2021</u></a>. On top of this, the ideal path to take from point A (your home ISP) to point B (Cloudflare) can change drastically, depending on routing decisions made by your home ISP, and any or all intermediate networks between your home ISP and Cloudflare (<a href="https://blog.cloudflare.com/how-verizon-and-a-bgp-optimizer-knocked-large-parts-of-the-internet-offline-today/"><u>here’s an example from 2019</u></a>). These <a href="https://blog.cloudflare.com/prepends-considered-harmful/"><u>routing decisions</u></a> are entirely arbitrary, and left to the owners of the networks. Performance and security can be considered, but neither of these have been historically made visible through BGP itself.</p><p>As all the networks can independently make their own routing decisions, there are a lot of individual points where things can go wrong. Going wrong can have multiple meanings here: this can range from routing loops, causing Internet traffic to go back and forth repeatedly between two networks, never reaching its destination, to more malicious problems, such as traffic interception or traffic manipulation.</p><p>As routing security wasn’t accounted for in that initial two-napkin draft, it is easy for a malicious actor on the Internet to <a href="https://www.cloudflare.com/en-gb/learning/security/glossary/bgp-hijacking/"><u>pretend to either be an originating network</u></a> (where they claim to own the IP prefix, positioning themselves as the destination network), or they can pretend to be a viable middle network, getting traffic to transit through their network.</p><p>In either of these examples, the actor can manipulate the Internet traffic of unsuspecting end users and potentially steal passwords, cryptocurrency, or any other data that can be of value. While transport security (<a href="https://www.cloudflare.com/learning/ssl/transport-layer-security-tls/"><u>TLS</u></a> for HTTP/1.x and HTTP/2, <a href="https://blog.cloudflare.com/the-road-to-quic/"><u>QUIC</u></a> for HTTP/3) has reduced this risk significantly, there’s still ways this can be bypassed. Over time, the Internet community has acknowledged the security concerns with BGP, and has built infrastructure to mitigate some of these problems. </p>
    <div>
      <h3>BGP security: The RPKI is born</h3>
      <a href="#bgp-security-the-rpki-is-born">
        
      </a>
    </div>
    <p>This journey is now coming to a final destination with the development and adoption of the Resource Public Key Infrastructure (RPKI). The RPKI is a <a href="https://research.cloudflare.com/projects/internet-infrastructure/pki/"><u>PKI</u></a>, just like the Web PKI which provides security certificates for the websites we browse (the “s” in https). The RPKI is a PKI specifically with the Internet in mind: it provides core constructs for <a href="https://www.cloudflare.com/learning/dns/glossary/what-is-my-ip-address/"><u>IP addresses</u></a> and <a href="https://www.cloudflare.com/learning/network-layer/what-is-an-autonomous-system/"><u>Autonomous System Numbers (ASNs</u></a>), the numbers used to identify these individual operating networks mentioned earlier.</p><p>Through the RPKI, it’s possible for an operator to establish a cryptographically secure relationship between the IP prefixes they originate, and their ASN, through the issuance of <a href="https://www.arin.net/resources/manage/rpki/roa_request/"><u>Route Origin Authorization records (ROAs)</u></a>. These ROAs can be used by all other networks on the Internet to validate that the IP prefix update they just received for a given origin network actually belongs to that origin network, a process called <a href="https://blog.cloudflare.com/rpki-updates-data/"><u>Route Origin Validation (ROV)</u></a>. If a malicious party tries to hijack an IP prefix that has a ROA to their (different) origin network, validating networks would know this update is invalid and reject it, maintaining the origin security and ensuring reachability.</p>
    <div>
      <h2>Why does BGP security matter? Examples of route hijacks and leaks</h2>
      <a href="#why-does-bgp-security-matter-examples-of-route-hijacks-and-leaks">
        
      </a>
    </div>
    <p>But why should you care about BGP? And more importantly, why does the White House care about BGP? Put simply: BGP (in)security can cost people and companies millions of dollars and cause widespread disruptions for critical services.</p><p>In February 2022, Korean crypto platform KLAYswap was the target of a <a href="https://manrs.org/2022/02/klayswap-another-bgp-hijack-targeting-crypto-wallets/"><u>malicious BGP hijack</u></a>, which was used to steal $1.9 million of cryptocurrency from their customers. The attackers were able to serve malicious code that mimicked the service KLAYswap was using for technical support. They were able to do this by announcing the IP prefix used to serve the JavaScript SDK KLAYswap was using. When other networks accepted this announcement, end user traffic loading the technical support page instead received malicious JavaScript, which was used to drain customer wallets. As the attackers hijacked the IP address, they were also able to register a <a href="https://www.cloudflare.com/application-services/products/ssl/">TLS certificate</a> for the domain name used to serve the SDK. As a result, nothing looked out of the ordinary for Klayswap’s customers until they noticed their wallets had been drained.</p><p>However, not all BGP problems are intentional hijacks. In March 2022, <a href="https://radar.cloudflare.com/as8342"><u>RTComm (AS8342)</u></a>, a Russian ISP, announced itself as the origin of <a href="https://radar.cloudflare.com/routing/prefix/104.244.42.0/24"><u>104.244.42.0/24</u></a>, which is an IP prefix actually owned by <a href="https://radar.cloudflare.com/as13414"><u>Twitter (now X) (AS13414)</u></a>. In this case, all researchers have drawn a similar conclusion: RTComm wanted to block its users from accessing Twitter, but inadvertently advertised the route to its peers and upstream providers. Thankfully, the impact was limited, in large part due to Twitter issuing ROA records for their IP prefixes, which meant the hijack was blocked at all networks that had implemented ROV and were validating announcements.</p><p>Inadvertent incorrect advertisements passing from one network to another, or route leaks, can happen to anyone, even Cloudflare. Our <a href="https://1.1.1.1/dns"><u>1.1.1.1 public DNS service</u></a> — used by millions of consumers and businesses — is often the unintended victim. Consider this situation (versions of which have happened numerous times): a network engineer running a local ISP is testing a configuration on their router and announces to the Internet that you can reach the IP address 1.1.1.1 through their network. They will often pick this address because it’s easy to input on the router and observe in network analytics. They accidentally push that change out to all their peer networks — the networks they’re connected to — and now, if proper routing security isn’t in place, users on multiple networks around the Internet trying to reach 1.1.1.1 might be directed to this local ISP where there is no DNS service to be found. This can lead to widespread outages.</p><p>The types of routing security measures in the White House roadmap can prevent these issues. In the case of 1.1.1.1, <a href="https://rpki.cloudflare.com/?view=explorer&amp;prefix=1.1.1.0%2F24"><u>Cloudflare has ROAs in place</u></a> that tell the Internet that we originate the IP prefix that contains 1.1.1.1. If someone else on the Internet is advertising 1.1.1.1, that’s an invalid route, and other networks should stop accepting it. In the case of KLAYswap, had there been ROAs in place, other networks could have used common filtering techniques to filter out the routes pointing to the attackers malicious JavaScript. So now let’s talk more about the plan the White House has to improve routing security on the Internet, and how the US government developed its recommendations.</p>
    <div>
      <h2>Work leading to the roadmap</h2>
      <a href="#work-leading-to-the-roadmap">
        
      </a>
    </div>
    <p>The new routing security roadmap from the <a href="https://www.whitehouse.gov/oncd/"><u>Office of the National Cyber Director (ONCD)</u></a> is the product of years of work, throughout both government and industry. The <a href="https://www.nist.gov/"><u>National Institute of Standards and Technology (NIST)</u></a> has been a longstanding proponent of improving routing security, developing <a href="https://www.nist.gov/news-events/news/2014/05/nist-develops-test-and-measurement-tools-internet-routing-security"><u>test and measurement</u></a> <a href="https://rpki-monitor.antd.nist.gov/"><u>tools</u></a> and publishing <a href="https://nvlpubs.nist.gov/nistpubs/SpecialPublications/NIST.SP.1800-14.pdf"><u>special publication 1800-14</u></a> on Protecting the Integrity of Internet Routing, among many other initiatives. They are active participants in the Internet community, and an important voice for routing security.</p><p>Cloudflare first started publicly <a href="https://blog.cloudflare.com/is-bgp-safe-yet-rpki-routing-security-initiative/"><u>advocating</u></a> for adoption of security measures like RPKI after a <a href="https://blog.cloudflare.com/how-verizon-and-a-bgp-optimizer-knocked-large-parts-of-the-internet-offline-today/"><u>massive BGP route leak</u></a> took down a portion of the Internet, including websites using Cloudflare’s services, in 2019. </p><p>Since that time, the federal government has increasingly recognized the need to elevate efforts to secure Internet routing, a process that Cloudflare has helped support along the way. The <a href="https://www.solarium.gov/"><u>Cyberspace Solarium Commission report</u></a>, published in 2020, encouraged the government to develop a strategy and recommendations to define “common, implementable guidance for securing the DNS and BGP.”    </p><p>In February 2022, the Federal Communication Commission <a href="https://www.fcc.gov/document/fcc-launches-inquiry-internet-routing-vulnerabilities"><u>launched</u></a> a notice of inquiry to better understand Internet routing. Cloudflare <a href="https://www.fcc.gov/ecfs/document/10412234101460/1"><u>responded</u></a> with a detailed explanation of our history with RPKI and routing security. In July 2023, the FCC, jointly with the Director of the <a href="https://cisa.gov/"><u>Cybersecurity and Infrastructure Security Agency</u></a>, held a <a href="https://www.fcc.gov/news-events/events/2023/07/bgp-security-workshop"><u>workshop</u></a> for stakeholders, with <a href="https://youtu.be/VQhoNX2Q0aM?si=VHbB5uc-0DzHaWpL&amp;t=11462"><u>Cloudflare as one of the presenters</u></a>. In June 2024, the FCC issued a <a href="https://docs.fcc.gov/public/attachments/FCC-24-62A1.pdf"><u>Notice of Proposed Rulemaking</u></a> that would require large service providers to develop security risk management plans and report on routing security efforts, including RPKI adoption. </p><p>The White House has been involved as well. In March 2023, they cited the need to secure the technical foundation of the Internet, from issued such as BGP vulnerabilities, as one of the strategic objectives of the <a href="https://www.whitehouse.gov/wp-content/uploads/2023/03/National-Cybersecurity-Strategy-2023.pdf"><u>National Cybersecurity Strategy</u></a>. Citing those efforts, in May 2024, the Department of Commerce <a href="https://www.commerce.gov/news/press-releases/2024/05/us-department-commerce-implements-internet-routing-security"><u>issued</u></a> <a href="https://rpki.cloudflare.com/?view=explorer&amp;asn=3477"><u>ROAs signing some of its IP space</u></a>, and this roadmap strongly encourages other departments and agencies to do the same. All of those efforts and the focus on routing security have resulted in increased adoption of routing security measures. </p>
    <div>
      <h2>Report observations and recommendations</h2>
      <a href="#report-observations-and-recommendations">
        
      </a>
    </div>
    <p>The report released by the White House Office of the National Cyber Director details the current state of BGP security, and the challenges associated with Resource Public Key Infrastructure (RPKI) Route Origin Authorization (ROA) issuance and RPKI Route Origin Validation (ROV) adoption. It also provides network operators and government agencies with next steps and recommendations for BGP security initiatives. </p><p>One of the first recommendations is for all networks to create and publish ROAs. It’s important that every network issues ROAs for their IP prefixes, as it’s the only way for other networks to validate they are the authorized originator of those prefixes. If one network is advertising an IP address as their own, but a different network issued the ROA, that’s an important sign that something might be wrong!</p><p>As shown in the chart below from <a href="https://rpki-monitor.antd.nist.gov/"><u>NIST’s RPKI Monitor</u></a>, as of September 2024, at least 53% of all the IPv4 prefixes on the Internet have a valid ROA record available (IPv6 reached this milestone in late 2023), up from only 6% in 2017. (The metric is even better when measured as a percent of Internet traffic: data from <a href="https://kentik.com/"><u>Kentik</u></a>, a network observability company, <a href="https://www.kentik.com/blog/rpki-rov-deployment-reaches-major-milestone/"><u>shows</u></a> that 70.3% of Internet traffic is exchanged with IP prefixes that have a valid ROA.) This increase in the number of signed IP prefixes (ROAs) is foundational to secure Internet routing.</p>
          <figure>
          <img src="https://cf-assets.www.cloudflare.com/zkvhlag99gkb/4f4Y1fXcdxYRxUhQYjxlWp/7f26d617648539980f2c8e65873139e4/image2.png" />
          </figure><p>Unfortunately, the US is lagging behind: <a href="https://radar.cloudflare.com/routing/us"><u>Only 39% of IP prefixes</u></a> originated by US networks have a valid ROA. This is not surprising, considering the US has significantly more Internet address resources than other parts of the world. However, the report highlights the need for the US to overcome the common barriers network operators face when implementing BGP security measures. Administrative challenges, the perception of risk, and prioritization and resourcing constraints are often cited as the problems networks face when attempting to move forward with ROV and RPKI.</p><p>A related area of the roadmap highlights the need for networks that allow their customers to control IP address space to still create ROAs for those addresses. The reality of how every ISP, government, and large business allocates its IP address space is undoubtedly messy, but that doesn’t reduce the importance of making sure that the correct entity is identified in the official records with a ROA. </p><p>A network signing routes for its IP addresses is an important step, but it isn’t enough. To prevent incorrect routes — malicious or not — from spreading around the Internet, networks need to implement Route Origin Validation (ROV) and implement other BGP best practices, outlined by <a href="https://manrs.org/"><u>MANRS</u></a> in their <a href="https://manrs.org/wp-content/uploads/2023/12/The_Zen_of_BGP_Sec_Policy_Nov2023.docx.pdf"><u>Zen Guide to Routing Security Policy</u></a>. If one network incorrectly announces itself as the origin for 1.1.1.1, that won’t have any effect beyond its own borders if no other networks pick up that invalid route. The Roadmap calls out filtering invalid routes as another action for network service providers. </p><p>As of <a href="https://blog.cloudflare.com/rpki-updates-data/"><u>2022</u></a>, our data<a href="https://blog.cloudflare.com/rpki-updates-data/"><u> showed</u></a> that around 15 percent of networks were validating routes. Ongoing measurements from APNIC show progress: this year about 20 percent <a href="https://stats.labs.apnic.net/rpki/XA"><u>of APNIC probes</u></a> globally correctly filter invalid routes with ROV. <a href="https://stats.labs.apnic.net/rpki/US"><u>In the US</u></a>, it’s 70 percent. Continued growth of ROV is a critical step towards achieving better BGP security.</p>
          <figure>
          <img src="https://cf-assets.www.cloudflare.com/zkvhlag99gkb/5Ne3sPYqAEytLjO0Vm53yA/ad573ba885e61d249d0a4601b70c8df6/image1.png" />
          </figure><p>Filtering out invalid routes is prominently highlighted in the report’s recommendations. While recognizing that there’s been dramatic improvement in filtering by the large transit networks, the first report recommendation is for network service providers — large and small —  to fully deploy ROV. </p><p>In addition, the Roadmap proposes using the federal government’s considerable weight as a purchaser, writing, “<i>[Office of Management and Budget] should require the Federal Government’s contracted service providers to adopt and deploy current commercially-viable Internet routing security technologies.</i>” It goes on to say that grant programs, particularly broadband grants, “<i>should require grant recipients to incorporate routing security measures into their projects.</i>”</p><p>The roadmap doesn’t only cover well-established best practices, but also highlights emerging security technologies, such as <a href="https://datatracker.ietf.org/doc/draft-ietf-sidrops-aspa-profile/"><u>Autonomous System Provider Authorization (ASPA)</u></a> and <a href="https://datatracker.ietf.org/doc/html/rfc8205"><u>BGPsec</u></a>. ROAs only cover part of the BGP routing ecosystem, so additional work is needed to ensure we secure everything. It’s encouraging to see the work being done by the wider community to address these concerns is acknowledged, and more importantly, actively followed.</p>
    <div>
      <h2>What’s next for the Internet community</h2>
      <a href="#whats-next-for-the-internet-community">
        
      </a>
    </div>
    <p>The new roadmap is an important step in outlining actions that can be taken today to improve routing security. But as the roadmap itself recognizes, there’s more work to be done both in making sure that the steps are implemented, and that we continue to push routing security forward.</p><p>From an implementation standpoint, our hope is that the government’s focus on routing security through all the levers outlined in the roadmap will speed up ROA adoption, and encourage wider implementation of ROV and other best practices. At Cloudflare, we’ll continue to report on routing practices on <a href="https://radar.cloudflare.com/routing/us"><u>Cloudflare Radar</u></a> to help assess progress against the goals in the roadmap.</p><p>At a technical level, the wider Internet community has made massive strides in adopting RPKI ROV, and have set their sights on the next problem: we are securing the IP-to-originating network relationship, but what about the relationships between the individual networks?</p><p>Through the adoption of BGPsec and ASPA, network operators are able to not only validate the destination of a prefix, but also validate the path to get there. These two new technical additions within the RPKI will combine with ROV to ultimately provide a fully secure signaling protocol for the modern Internet. The community has actively undertaken this work, and we’re excited to see it progress!</p><p>Outside the RPKI, the community has also ratified the formalization of customer roles through <a href="https://datatracker.ietf.org/doc/rfc9234/"><u>RFC9234: Route Leak Prevention and Detection Using Roles in UPDATE and OPEN Messages</u></a>. As this new BGP feature gains support, we’re hopeful that this will be another helpful tool in the operator toolbox in preventing route leaks of any kind.</p>
    <div>
      <h2>How you can help keep the Internet secure</h2>
      <a href="#how-you-can-help-keep-the-internet-secure">
        
      </a>
    </div>
    <p>If you’re a network operator, you’ll need to sign your routes, and validate incoming prefixes. This consists of signing Route Origin Authorization (ROA) records, and performing Route Origin Validation (ROV). Route signing involves creating records with your local <a href="https://www.nro.net/about/rirs/"><u>Regional Internet Registry (RIR)</u></a> and signing to their PKI. Route validation involves only accepting routes that are signed with a ROA. This will help ensure that only secure routes get through. You can learn more about that <a href="https://blog.cloudflare.com/rpki-updates-data/"><u>here</u></a>.</p><p>If you’re not a network operator, head to <a href="http://isbgpsafeyet.com"><u>isbgpsafeyet.com</u></a>, and test your ISP. If your ISP is not keeping BGP safe, be sure to let them know how important it is. If the government has pointed out prioritization is a consistent problem, let’s help increase the priority of routing security.</p>
    <div>
      <h2>A secure Internet is an open Internet</h2>
      <a href="#a-secure-internet-is-an-open-internet">
        
      </a>
    </div>
    <p>As the report points out, one of the keys to keeping the Internet open is ensuring that users can feel safe accessing any site they need to without worrying about attacks that they can’t control. Cloudflare wholeheartedly supports the US government’s efforts to bolster routing security around the world and is eager to work to ensure that we can help create a safe, open Internet for every user.</p> ]]></content:encoded>
            <category><![CDATA[BGP]]></category>
            <category><![CDATA[RPKI]]></category>
            <category><![CDATA[Routing Security]]></category>
            <category><![CDATA[Better Internet]]></category>
            <guid isPermaLink="false">10dR1e1P8WbOojN0JGTPOp</guid>
            <dc:creator>Mike Conlow</dc:creator>
            <dc:creator>Emily Music</dc:creator>
            <dc:creator>Tom Strickx</dc:creator>
        </item>
        <item>
            <title><![CDATA[Why BGP communities are better than AS-path prepends]]></title>
            <link>https://blog.cloudflare.com/prepends-considered-harmful/</link>
            <pubDate>Thu, 24 Nov 2022 17:31:47 GMT</pubDate>
            <description><![CDATA[ Routing on the Internet follows a few basic principles. Unfortunately not everything on the Internet is created equal, and prepending can do more harm than good. In this blog post we’ll talk about the problems that prepending aims to solve, and some alternative solutions ]]></description>
            <content:encoded><![CDATA[ <p><i></i></p>
            <figure>
            
            <img src="https://cf-assets.www.cloudflare.com/zkvhlag99gkb/2E41RLSZSaS34QDzUqX1Rd/7ebce0374cd5f67f333eaf954e6f1445/image7-9.png" />
            
            </figure><p>The Internet, in its purest form, is a loosely connected graph of independent networks (also called <a href="https://www.cloudflare.com/en-gb/learning/network-layer/what-is-an-autonomous-system/">Autonomous Systems</a> (AS for short)). These networks use a signaling protocol called <a href="https://www.cloudflare.com/en-gb/learning/security/glossary/what-is-bgp/">BGP</a> (Border Gateway Protocol) to inform their neighbors (also known as peers) about the reachability of IP prefixes (a group of IP addresses) in and through their network. Part of this exchange contains useful metadata about the IP prefix that are used to inform network routing decisions. One example of the metadata is the full AS-path, which consists of the different autonomous systems an IP packet needs to pass through to reach its destination.</p><p>As we all want our packets to get to their destination as fast as possible, selecting the shortest AS-path for a given prefix is a good idea. This is where something called prepending comes into play.</p>
    <div>
      <h2>Routing on the Internet, a primer</h2>
      <a href="#routing-on-the-internet-a-primer">
        
      </a>
    </div>
    <p>Let's briefly talk about how the Internet works at its most fundamental level, before we dive into some nitty-gritty details.</p><p>The Internet is, at its core, a massively interconnected network of thousands of networks. Each network owns two things that are critical:</p><p>1. An Autonomous System Number (ASN): a 32-bit integer that uniquely identifies a network. For example, one of the Cloudflare ASNs (we have multiple) is 13335.</p><p>2. IP prefixes: An IP prefix is a range of IP addresses, bundled together in powers of two: In the IPv4 space, two addresses form a /31 prefix, four form a /30, and so on, all the way up to /0, which is shorthand for “all IPv4 prefixes''. The same applies for IPv6  but instead of aggregating 32 bits at most, you can aggregate up to 128 bits. The figure below shows this relationship between IP prefixes, in reverse -- a /24 contains two /25s that contains two /26s, and so on.</p>
            <figure>
            
            <img src="https://cf-assets.www.cloudflare.com/zkvhlag99gkb/5XUwaT0EJLzfHUwkpm7aN2/47a248cc3292ae8a970423c8f3de9f5b/image9-6.png" />
            
            </figure><p>To communicate on the Internet, you must be able to reach your destination, and that’s where routing protocols come into play. They enable each node on the Internet to know where to send your message (and for the receiver to send a message back).</p>
            <figure>
            
            <img src="https://cf-assets.www.cloudflare.com/zkvhlag99gkb/6RzDynXtAzTFAAeSRNF7Qz/f3297d7747eb351a77dfb3da7461944a/image5-21.png" />
            
            </figure><p>As mentioned earlier, these destinations are identified by IP addresses, and contiguous ranges of IP addresses are expressed as IP prefixes. We use IP prefixes for routing as an efficiency optimization: Keeping track of where to go for four billion (2<sup>32</sup>) IP addresses in IPv4 would be incredibly complex, and require a lot of resources. Sticking to prefixes reduces that number down to about one million instead.</p><p>Now recall that Autonomous Systems are independently operated and controlled. In the Internet’s network of networks, how do I tell Source A in some other network that there is an available path to get to Destination B in (or through) my network? In comes BGP! BGP is the Border Gateway Protocol, and it is used to signal reachability information. Signal messages generated by the source ASN are referred to as ‘announcements’ because they declare to the Internet that IP addresses in the prefix are online and reachable.</p>
            <figure>
            
            <img src="https://cf-assets.www.cloudflare.com/zkvhlag99gkb/cudmPAIkxVZr5tOuSqQdm/f096de61cdebaa7c9427343be70cb0ff/image4-33.png" />
            
            </figure><p>Have a look at the figure above. Source A should now know how to get to Destination B through 2 different networks!</p><p>This is what an actual BGP message would look like:</p>
            <pre><code>BGP Message
    Type: UPDATE Message
    Path Attributes:
        Path Attribute - Origin: IGP
        Path Attribute - AS_PATH: 64500 64496
        Path Attribute - NEXT_HOP: 198.51.100.1
        Path Attribute - COMMUNITIES: 64500:13335
        Path Attribute - Multi Exit Discriminator (MED): 100
    Network Layer Reachability Information (NLRI):
        192.0.2.0/24</code></pre>
            <p>As you can see, BGP messages contain more than just the IP prefix (the NLRI bit) and the path, but also a bunch of other metadata that provides additional information about the path. Other fields include communities (more on that later), as well as MED, or origin code. MED is a suggestion to other directly connected networks on which path should be taken if multiple options are available, and the lowest value wins. The origin code can be one of three values: IGP, EGP or Incomplete. IGP will be set if you originate the prefix through BGP, EGP is no longer used (it’s an ancient routing protocol), and Incomplete is set when you distribute a prefix into BGP from another routing protocol (like IS-IS or OSPF).</p><p>Now that source A knows how to get to Destination B through two different networks, let's talk about traffic engineering!</p>
    <div>
      <h2>Traffic engineering</h2>
      <a href="#traffic-engineering">
        
      </a>
    </div>
    <p>Traffic engineering is a critical part of the day to day management of any network. Just like in the physical world, detours can be put in place by operators to optimize the traffic flows into (inbound) and out of (outbound) their network. Outbound traffic engineering is significantly easier than inbound traffic engineering because operators can choose from neighboring networks, even prioritize some traffic over others. In contrast, inbound traffic engineering requires influencing a network that is operated by someone else entirely. The autonomy and self-governance of a network is paramount, so operators use available tools to inform or shape inbound packet flows from other networks. The understanding and use of those tools is complex, and can be a challenge.</p><p>The available set of traffic engineering tools, both in- and outbound, rely on manipulating attributes (metadata) of a given route. As we’re talking about traffic engineering between independent networks, we’ll be manipulating the attributes of an EBGP-learned route. BGP can be split into two categories:</p><ol><li><p>EBGP: BGP communication between two different ASNs</p></li><li><p>IBGP: BGP communication within the same ASN.</p></li></ol><p>While the protocol is the same, certain attributes can be exchanged on an IBGP session that aren’t exchanged on an EBGP session. One of those is local-preference. More on that in a moment.</p>
    <div>
      <h3>BGP best path selection</h3>
      <a href="#bgp-best-path-selection">
        
      </a>
    </div>
    <p>When a network is connected to multiple other networks and service providers, it can receive path information to the same IP prefix from many of those networks, each with slightly different attributes. It is then up to the receiving network of that information to use a BGP best path selection algorithm to pick the “best” prefix (and route), and use this to forward IP traffic. I’ve put “best” in quotation marks, as best is a subjective requirement. “Best” is frequently the shortest, but what can be best for my network might not be the best outcome for another network.</p><p>BGP will consider multiple prefix attributes when filtering through the received options. However, rather than combine all those attributes into a single selection criteria, BGP best path selection uses the attributes in tiers -- at any tier, if the available attributes are sufficient to choose the best path, then the algorithm terminates with that choice.</p><p>The BGP best path selection algorithm is extensive, containing 15 discrete steps to select the best available path for a given prefix. Given the numerous steps, it’s in the interest of the network to decide the best path as early as possible. The first four steps are most used and influential, and are depicted in the figure below as sieves.</p>
            <figure>
            
            <img src="https://cf-assets.www.cloudflare.com/zkvhlag99gkb/28iOxj73xffT9imICxgTTI/504e3ea0c7767d8acae1ee0ca0b64c4d/image2-55.png" />
            
            </figure><p>Picking the shortest path possible is usually a good idea, which is why “AS-path length” is a step executed early on in the algorithm. However, looking at the figure above, “AS-path length” appears second, despite being the attribute to find the shortest path. So let’s talk about the first step: local preference.</p><p><b>Local preference</b>Local preference is an operator favorite because it allows them to handpick a route+path combination of their choice. It’s the first attribute in the algorithm because it is unique for any given route+neighbor+AS-path combination.</p><p>A network sets the local preference on import of a route (having learned about the route from a neighbor network). Being a non-transitive property, meaning that it’s an attribute that is never sent in an EBGP message to other networks. This intrinsically means, for example, that the operator of AS 64496 can’t set the local preference of routes to their own (or transiting) IP prefixes inside neighboring AS 64511. The inability to do so is partially why inbound traffic engineering through EBGP is so difficult.</p><p><b>Prepending artificially increases AS-path length</b>Since no network is able to directly set the local preference for a prefix inside another network, the first opportunity to influence other networks’ choices is modifying the AS-path. If the next hops are valid, and the local preference for all the different paths for a given route are the same, modifying the AS-path is an obvious option to change the path traffic will take towards your network. In a BGP message, prepending looks like this:</p><p>BEFORE:</p>
            <pre><code>BGP Message
    Type: UPDATE Message
    Path Attributes:
        Path Attribute - Origin: IGP
        Path Attribute - AS_PATH: 64500 64496
        Path Attribute - NEXT_HOP: 198.51.100.1
        Path Attribute - COMMUNITIES: 64500:13335
        Path Attribute - Multi Exit Discriminator (MED): 100
    Network Layer Reachability Information (NLRI):
        192.0.2.0/24</code></pre>
            <p>AFTER:</p>
            <pre><code>BGP Message
    Type: UPDATE Message
    Path Attributes:
        Path Attribute - Origin: IGP
        Path Attribute - AS_PATH: 64500 64496 64496
        Path Attribute - NEXT_HOP: 198.51.100.1
        Path Attribute - COMMUNITIES: 64500:13335
        Path Attribute - Multi Exit Discriminator (MED): 100
    Network Layer Reachability Information (NLRI):
        192.0.2.0/24</code></pre>
            <p>Specifically, operators can do AS-path prepending. When doing AS-path prepending, an operator adds additional autonomous systems to the path (usually the operator uses their own AS, but that’s not enforced in the protocol). This way, an AS-path can go from a length of 1 to a length of 255. As the length has now increased dramatically, that specific path for the route will not be chosen. By changing the AS-path advertised to different peers, an operator can control the traffic flows coming into their network.</p><p>Unfortunately, prepending has a catch: To be the deciding factor, all the other attributes need to be equal. This is rarely true, especially in large networks that are able to choose from many possible routes to a destination.</p>
    <div>
      <h2>Business Policy Engine</h2>
      <a href="#business-policy-engine">
        
      </a>
    </div>
    <p>BGP is colloquially also referred to as a Business Policy Engine: it does <b>not</b> select the best path from a performance point of view; instead, and more often than not, it will select the best path from a <i>business</i> point of view. The business criteria could be anything from investment (port) efficiency to increased revenue, and more. This may sound strange but, believe it or not, this is what BGP is designed to do! The power (and complexity) of BGP is that it enables a network operator to make choices according to the operator’s needs, contracts, and policies, many of which cannot be reflected by conventional notions of engineering performance.</p>
    <div>
      <h3>Different local preferences</h3>
      <a href="#different-local-preferences">
        
      </a>
    </div>
    <p>A lot of networks (including Cloudflare) assign a local preference depending on the type of connection used to send us the routes. A higher value is a higher preference. For example, routes learned from transit network connections will get a lower local preference of 100 because they are the most costly to use; backbone-learned routes will be 150, Internet exchange (IX) routes get 200, and lastly private interconnect (PNI) routes get 250. This means that for egress (outbound) traffic, the Cloudflare network, by default, will prefer a PNI-learned route, even if a shorter AS-path is available through an IX or transit neighbor.</p><p>Part of the reason a PNI is preferred over an IX is reliability, because there is no third-party switching platform involved that is out of our control, which is important because we operate on the assumption that all hardware can and will eventually break. Another part of the reason is for port efficiency reasons. Here, efficiency is defined by cost per megabit transferred on each port. Roughly speaking, the cost is calculated by:</p><p><code>((cost_of_switch / port_count) + transceiver_cost)</code></p><p>which is combined with the cross-connect cost (might be monthly recurring (MRC), or a one-time fee). PNI is preferable because it helps to optimize value by reducing the overall cost per megabit transferred, because the unit price decreases with higher utilization of the port.</p><p>This reasoning is similar for a lot of other networks, and is very prevalent in transit networks. BGP is at least as much about cost and business policy, as it is about performance.</p>
    <div>
      <h3>Transit local preference</h3>
      <a href="#transit-local-preference">
        
      </a>
    </div>
    <p>For simplicity, when referring to transits, I mean the <a href="https://en.wikipedia.org/wiki/Tier_1_network">traditional tier-1 transit networks</a>. Due to the nature of these networks, they have two distinct sets of network peers:</p><p>1. Customers (like Cloudflare)2. Settlement-free peers (like other tier-1 networks)</p><p>In normal circumstances, transit customers will get a higher local preference assigned than the local preference used for their settlement-free peers. This means that, no matter how much you prepend a prefix, if traffic enters that transit network, traffic will <b>always</b> land on your interconnection with that transit network, it will not be offloaded to another peer.</p><p>A prepend can still be used if you want to switch/offload traffic from a single link with one transit if you have multiple distinguished links with them, or if the source of traffic is multihomed behind multiple transits (and they don’t have their own local preference playbook preferring one transit over another). But inbound traffic engineering traffic away from one transit port to another through AS-path prepending has significant diminishing returns: once you’re past three prepends, it’s unlikely to change much, if anything, at that point.</p><p><b>Example</b></p>
            <figure>
            
            <img src="https://cf-assets.www.cloudflare.com/zkvhlag99gkb/8QW8idtVhFb2jtY64uTLf/696a61224544698eb35a8e7ae20f8a22/image8-6.png" />
            
            </figure><p>In the above scenario, no matter the adjustment Cloudflare makes in its AS-path towards AS 64496, the traffic will keep flowing through the Transit B &lt;&gt; Cloudflare interconnection, even though the path Origin A → Transit B → Transit A → Cloudflare is shorter from an AS-path point of view.</p>
            <figure>
            
            <img src="https://cf-assets.www.cloudflare.com/zkvhlag99gkb/2uNwYLR8BdzCHVTzISwgtk/581ea233f8058f998bf00dfaa44ca3e3/image6-12.png" />
            
            </figure><p>In this scenario, not a lot has changed, but Origin A is now multi-homed behind the two transit providers. In this case, the AS-path prepending was effective, as the paths seen on the Origin A side are both the prepended and non-prepended path. As long as Origin A is not doing any egress traffic engineering, and is treating both transit networks equally, then the path chosen will be Origin A → Transit A → Cloudflare.</p>
    <div>
      <h3>Community-based traffic engineering</h3>
      <a href="#community-based-traffic-engineering">
        
      </a>
    </div>
    <p>So we have now identified a pretty critical problem within the Internet ecosystem for operators: with the tools mentioned above, it’s not always (some might even say outright impossible) possible to accurately dictate paths traffic can ingress your own network, reducing the control an autonomous system has over its own network. Fortunately, there is a solution for this problem: community-based local preference.</p><p>Some transit providers allow their customers to influence the local preference in the transit network through the use of BGP communities. BGP communities are an optional transitive attribute for a route advertisement. The communities can be informative (“I learned this prefix in Rome”), but they can also be used to trigger actions on the receiving side. For example, Cogent publishes the following action communities:</p><table>
<thead>
  <tr>
    <th>Community</th>
    <th>Local preference</th>
  </tr>
</thead>
<tbody>
  <tr>
    <td>174:10</td>
    <td>10</td>
  </tr>
  <tr>
    <td>174:70</td>
    <td>70</td>
  </tr>
  <tr>
    <td>174:120</td>
    <td>120</td>
  </tr>
  <tr>
    <td>174:125</td>
    <td>125</td>
  </tr>
  <tr>
    <td>174:135</td>
    <td>135</td>
  </tr>
  <tr>
    <td>174:140</td>
    <td>140</td>
  </tr>
</tbody>
</table><p>When you know that Cogent uses the following default local preferences in their network:</p><p>Peers → Local preference 100Customers → Local preference 130</p><p>It’s easy to see how we could use the communities provided to change the route used. It’s important to note though that, as we can’t set the local preference of a route to 100 (or 130), AS-path prepending remains largely irrelevant, as the local preference won’t ever be the same.</p><p>Take for example the following configuration:</p>
            <pre><code>term ADV-SITELOCAL {
    from {
        prefix-list SITE-LOCAL;
        route-type internal;
    }
    then {
        as-path-prepend "13335 13335";
        accept;
    }
}</code></pre>
            
            <figure>
            
            <img src="https://cf-assets.www.cloudflare.com/zkvhlag99gkb/2QJPzju5z4aHCOTxSEAO9y/21cf93066b2a67a48f530af5934c58d3/image1-71.png" />
            
            </figure><p>We’re prepending the Cloudflare ASN two times, resulting in a total AS-path of three, yet we were still seeing a lot (too much) traffic coming in on our Cogent link. At that point, an engineer could add another prepend, but for a well-connected network as Cloudflare, if two prepends didn’t do much, or three, then four or five isn’t going to do much either. Instead, we can leverage the Cogent communities documented above to change the routing within Cogent:</p>
            <pre><code>term ADV-SITELOCAL {
    from {
        prefix-list SITE-LOCAL;
        route-type internal;
    }
    then {
        community add COGENT_LPREF70;
        accept;
    }
}</code></pre>
            <p>The above configuration changes the traffic flow to this:</p>
            <figure>
            
            <img src="https://cf-assets.www.cloudflare.com/zkvhlag99gkb/1hJxj0OColxsHeP06JAfBb/8fa01b2f92b44de8b129b761dccc9acf/image3-47.png" />
            
            </figure><p>Which is exactly what we wanted!</p>
    <div>
      <h2>Conclusion</h2>
      <a href="#conclusion">
        
      </a>
    </div>
    <p>AS-path prepending is still useful, and has its use as part of the toolchain for operators to do traffic engineering, but should be used sparingly. <a href="https://ripe79.ripe.net/presentations/64-prepending_madory2.pdf">Excessive prepending opens a network up to wider spread route hijacks</a>, which should be avoided at all costs. As such, using community-based ingress traffic engineering is highly preferred (and recommended). In cases where communities aren’t available (or not available to steer customer traffic), prepends can be applied, but I encourage operators to actively monitor their effects, and roll them back if ineffective.</p><p>As a side-note, P Marcos et al. have published an interesting paper on AS-path prepending, and go into some trends seen in relation to prepending, I highly recommend giving it a read: <a href="https://www.caida.org/catalog/papers/2020_aspath_prepending/aspath_prepending.pdf">https://www.caida.org/catalog/papers/2020_aspath_prepending/aspath_prepending.pdf</a></p> ]]></content:encoded>
            <category><![CDATA[Routing]]></category>
            <category><![CDATA[BGP]]></category>
            <category><![CDATA[Network]]></category>
            <guid isPermaLink="false">7xqrew8H7IM1awzPwN3MOw</guid>
            <dc:creator>Tom Strickx</dc:creator>
        </item>
        <item>
            <title><![CDATA[Cloudflare’s view of the Rogers Communications outage in Canada]]></title>
            <link>https://blog.cloudflare.com/cloudflares-view-of-the-rogers-communications-outage-in-canada/</link>
            <pubDate>Fri, 08 Jul 2022 17:28:12 GMT</pubDate>
            <description><![CDATA[ An outage at one of the largest ISPs in Canada, Rogers Communications, started earlier today, July 8, 2022, and is ongoing (eight hours and counting), and is impacting businesses and consumers. ]]></description>
            <content:encoded><![CDATA[ 
            <figure>
            
            <img src="https://cf-assets.www.cloudflare.com/zkvhlag99gkb/5QHyZhwCGVsif9XXvbCwT1/9e2b3414f8cd59598c70a5411de5cdf3/Americas-Outage.png" />
            
            </figure><p><i>(Check for the latest updates at the end of this blog: Internet traffic started to come back at around July 9, 01:00 UTC, after 17 hours)</i></p><p>An outage at one of the largest ISPs in Canada, Rogers Communications, started earlier today, July 8, 2022, and is ongoing (eight hours and counting), and is <a href="https://www.reuters.com/business/media-telecom/rogers-communications-services-down-thousands-users-downdetector-2022-07-08/">impacting businesses</a> and consumers. At the time of writing, we are seeing a very small amount of traffic from Rogers, but we are only seeing residual traffic, and nothing close to a full recovery to normal traffic levels.</p><p>Based on what we’re seeing and similar incidents in the past, we believe this is likely to be an internal error, not a cyber attack.</p><p><a href="https://radar.cloudflare.com/ca">Cloudflare Radar</a> shows a near complete loss of traffic from Rogers <a href="https://www.cloudflare.com/learning/network-layer/what-is-an-autonomous-system/">ASN</a>, <a href="https://radar.cloudflare.com/asn/812?date_filter=last_24_hours">AS812</a>, that started around 08:45 UTC (all times in this blog are UTC).</p>
            <figure>
            
            <img src="https://cf-assets.www.cloudflare.com/zkvhlag99gkb/tZHDhahk4nR00oDfI8szG/c36a5003edbe59c3d12d780a259f4945/Rogers1.png" />
            
            </figure>
    <div>
      <h3>What happened?</h3>
      <a href="#what-happened">
        
      </a>
    </div>
    <p>Cloudflare <a href="https://radar.cloudflare.com/asn/812?date_filter=last_24_hours">data</a> shows that there was a clear spike in <a href="https://www.cloudflare.com/learning/security/glossary/what-is-bgp/">BGP</a> (Border Gateway Protocol) updates after 08:15, reaching its peak at 08:45.</p>
            <figure>
            
            <img src="https://cf-assets.www.cloudflare.com/zkvhlag99gkb/15UuM3cVejUo6RdHzU7SBq/0cc79af234bdecfb3cdd2c87582c6496/Rogers2.png" />
            
            </figure><p>BGP is a mechanism to exchange routing information between networks on the Internet. The big routers that make the Internet work have huge, constantly updated lists of the possible routes that can be used to deliver each network packet to its final destination. Without BGP, the Internet routers wouldn't know what to do, and the Internet wouldn't exist.</p><p>The Internet is literally a network of networks, or for the maths fans, a graph, with each individual network a node in it, and the edges representing the interconnections. All of this is bound together by BGP. BGP allows one network (say Rogers) to advertise its presence to other networks that form the Internet. Rogers is not advertising its presence, so other networks can’t find Rogers network and so it is unavailable.</p><p>A BGP update message informs a router of changes made to a prefix (a group of IP addresses) advertisement or entirely withdraws the prefix. In this next chart, we can see that at 08:45 there was a withdrawal of prefixes from Rogers ASN.</p>
            <figure>
            
            <img src="https://cf-assets.www.cloudflare.com/zkvhlag99gkb/6tJghQaY9RR5dE3iLz5E14/b260ad92da783d746cba02d0211d6d73/Rogers3.png" />
            
            </figure><p>Since then, at 14:30, attempts seem to be made to advertise their prefixes again. This maps to us seeing a slow increase in traffic again from Rogers’ end users.</p>
            <figure>
            
            <img src="https://cf-assets.www.cloudflare.com/zkvhlag99gkb/3yGrJKxKMEStNpw0Oz55hk/ba90dc41539d444db3baea549e0eea9d/Rogers4.png" />
            
            </figure><p>The graph below, which shows the prefixes we were receiving from Rogers in Toronto, clearly shows the withdrawal of prefixes around 08:45, and the slow start in recovery at 14:30, with another round of withdraws at around 15:45.</p>
            <figure>
            
            <img src="https://cf-assets.www.cloudflare.com/zkvhlag99gkb/2UHGDxAGNU9Y5dpi8o45zT/9bc313a2fb430b68f3c79483f73e94ea/Rogers5.png" />
            
            </figure><p>Outages happen more regularly than people think. This week we did an <a href="/q2-2022-internet-disruption-summary/">Internet disruptions overview for Q2 2022</a> where you can get a better sense of that, and on how collaborative and interconnected the Internet (the network of networks) is. And not so long ago <a href="/october-2021-facebook-outage/">Facebook had an hours long outage</a> where BGP updates showed Facebook itself disappearing from the Internet.</p><p>Follow <a href="https://twitter.com/CloudflareRadar">@CloudflareRadar</a> on Twitter for updates on Internet disruptions as they occur, and find up-to-date information on Internet trends using <a href="https://radar.cloudflare.com/">Cloudflare Radar</a>.</p><a href="https://cloudflare.tv/">
         <img src="http://staging.blog.mrk.cfdata.org/content/images/2020/06/tube-blog-banner.png" />
      </a>
<p></p><hr />
    <div>
      <h3>UPDATE: July 8, 2022, 23:00 UTC (19:00 EST)</h3>
      <a href="#update-july-8-2022-23-00-utc-19-00-est">
        
      </a>
    </div>
    <p>The Rogers outage is still ongoing after 15 hours without clear signs of Internet traffic fully coming back.</p>
            <figure>
            
            <img src="https://cf-assets.www.cloudflare.com/zkvhlag99gkb/6u44LM1dkEUH59b9hNOZnL/28357da4e5d22764488aa40fc317182b/Rogers6.png" />
            
            </figure><p>At around 18:15 there was a small bump in traffic (only around 3% of the usual traffic at that time) that lasted for about 30 minutes, quickly returning to the ongoing outage. Here is the representation of that increase in AS812.</p>
            <figure>
            
            <img src="https://cf-assets.www.cloudflare.com/zkvhlag99gkb/fclZ8O3Mku3gKRxz5Ewhm/7a62f06e01e0a8158772a9548cb3e9f0/Rogers7.png" />
            
            </figure><p>Here we can see an update on the BGP announcements. Rogers is still trying to get their services back online with new spikes in announcements to advertise their prefixes, but instants later it all seems to crumble again with the withdrawal of prefixes. The latest attempt was at 21:45 UTC:</p>
            <figure>
            
            <img src="https://cf-assets.www.cloudflare.com/zkvhlag99gkb/1H3QK3p9qoLO1cDOpyRQws/4720379465eecab90cd536e8bdad69f4/Rogers8.png" />
            
            </figure><p>It seems that the internal sessions in the Rogers core network flap, causing withdrawals when going down, and advertisements when coming up.Rogers Senior Vice President, Kye Prigg, said a few hours ago in an <a href="https://twitter.com/PnPCBC/status/1545512971878662145">interview</a> that they haven’t identified the root cause for the outage and still don’t have an estimate on when the service will be restored.</p>
    <div>
      <h3>UPDATE: July 9, 2022, 01:50 UTC (21:50 EST)</h3>
      <a href="#update-july-9-2022-01-50-utc-21-50-est">
        
      </a>
    </div>
    <p>We are seeing partial recovery of traffic from the Rogers network, mostly after 00:15 UTC. The current traffic rate (01:50 UTC) is at about 17.5% of the rate from 24 hours before, an hour ago it was 13%. More than 17 hours have passed since the outage started.</p>
            <figure>
            
            <img src="https://cf-assets.www.cloudflare.com/zkvhlag99gkb/6xfZXmAPkE2CD3LAD1zmgd/50e0d8ef5347765795d8d9ed0bf28f0e/Screen-Shot-2022-07-08-at-10.27.53-PM.png" />
            
            </figure><p>We continue to see frequent BGP announcement and withdrawals originated from Rogers network, which indicates the core network flapping issue has not been fully resolved at this moment.</p>
            <figure>
            
            <img src="https://cf-assets.www.cloudflare.com/zkvhlag99gkb/33IvZvnQPDmql9yV0P503N/811bc7e6f64336bc831f2a2291677fd0/Screen-Shot-2022-07-08-at-10.28.00-PM.png" />
            
            </figure>
    <div>
      <h3>UPDATE: July 9, 2022, 09:00 UTC (05:00 EST)</h3>
      <a href="#update-july-9-2022-09-00-utc-05-00-est">
        
      </a>
    </div>
    <p>Rogers traffic seems to be climbing back up to usual levels, for the past eight hours. Cloudflare's data shows that Saturday, July 9, at 08:40 UTC, there was around 76% of the previous day traffic at the same time. You can track it <a href="https://radar.cloudflare.com/asn/812?date_filter=last_7_days">here</a>.</p>
            <figure>
            
            <img src="https://cf-assets.www.cloudflare.com/zkvhlag99gkb/7tpuR6DegLsBaBms5scN2L/06cc0f7750cc77d39d23641ebcaa0ff4/unnamed-2.png" />
            
            </figure> ]]></content:encoded>
            <category><![CDATA[Radar]]></category>
            <category><![CDATA[Canada]]></category>
            <category><![CDATA[Outage]]></category>
            <category><![CDATA[Trends]]></category>
            <guid isPermaLink="false">4TQGpXd7gerib7iSrdPb3Z</guid>
            <dc:creator>João Tomé</dc:creator>
            <dc:creator>Tom Strickx</dc:creator>
            <dc:creator>Mingwei Zhang</dc:creator>
        </item>
        <item>
            <title><![CDATA[Cloudflare outage on June 21, 2022]]></title>
            <link>https://blog.cloudflare.com/cloudflare-outage-on-june-21-2022/</link>
            <pubDate>Tue, 21 Jun 2022 12:38:05 GMT</pubDate>
            <description><![CDATA[ Today, June 21, 2022, Cloudflare suffered an outage that affected traffic in 19 of our data centers ]]></description>
            <content:encoded><![CDATA[ 
            <figure>
            
            <img src="https://cf-assets.www.cloudflare.com/zkvhlag99gkb/2LzOzlg7mmUmt62U2SepS2/7d09343a7115e0eb064b482a6dc3df14/BLOG-1226-Global-Latency-1.png" />
            
            </figure>
    <div>
      <h3>Introduction</h3>
      <a href="#introduction">
        
      </a>
    </div>
    <p>Today, June 21, 2022, Cloudflare suffered an outage that affected traffic in 19 of our data centers. Unfortunately, these 19 locations handle a significant proportion of our global traffic. This outage was caused by a change that was part of a long-running project to increase resilience in our busiest locations. A change to the network configuration in those locations caused an outage which started at 06:27 UTC. At 06:58 UTC the first data center was brought back online and by 07:42 UTC all data centers were online and working correctly.</p><p>Depending on your location in the world you may have been unable to access websites and services that rely on Cloudflare. In other locations, Cloudflare continued to operate normally.</p><p>We are very sorry for this outage. This was our error and not the result of an attack or malicious activity.</p>
    <div>
      <h3>Background</h3>
      <a href="#background">
        
      </a>
    </div>
    <p>Over the last 18 months, Cloudflare has been working to convert all of our busiest locations to a more flexible and resilient architecture. In this time, we’ve converted 19 of our data centers to this architecture, internally called Multi-Colo PoP (MCP): Amsterdam, Atlanta, Ashburn, Chicago, Frankfurt, London, Los Angeles, Madrid, Manchester, Miami, Milan, Mumbai, Newark, Osaka, São Paulo, San Jose, Singapore, Sydney, Tokyo.</p><p>A critical part of this new architecture, which is designed as a <a href="https://en.wikipedia.org/wiki/Clos_network">Clos network</a>, is an added layer of routing that creates a mesh of connections. This mesh allows us to easily disable and enable parts of the internal network in a data center for maintenance or to deal with a problem. This layer is represented by the spines in the following diagram.</p>
            <figure>
            
            <img src="https://cf-assets.www.cloudflare.com/zkvhlag99gkb/3wHXMwydO0BJOwgL8myKrl/4c603771d020ef604f23bcbfd9b44649/image2-27.png" />
            
            </figure><p>This new architecture has provided us with significant reliability improvements, as well as allowing us to run maintenance in these locations without disrupting customer traffic. As these locations also carry a significant proportion of the Cloudflare traffic, any problem here can have a very wide impact, and unfortunately, that’s what happened today.</p>
    <div>
      <h3>Incident timeline and impact</h3>
      <a href="#incident-timeline-and-impact">
        
      </a>
    </div>
    <p>In order to be reachable on the Internet, networks like Cloudflare make use of a protocol called <a href="https://www.cloudflare.com/en-gb/learning/security/glossary/what-is-bgp/">BGP</a>. As part of this protocol, operators define policies which decide which prefixes (a collection of adjacent IP addresses) are advertised to peers (the other networks they connect to), or accepted from peers.</p><p>These policies have individual components, which are evaluated sequentially. The end result is that any given prefixes will either be advertised or not advertised. A change in policy can mean a previously advertised prefix is no longer advertised, known as being "withdrawn", and those IP addresses will no longer be reachable on the Internet.</p>
            <figure>
            
            <img src="https://cf-assets.www.cloudflare.com/zkvhlag99gkb/4oS7n2Z7dAA9LNGAsz23rf/b7e176a7985fbebef456f7fad251de24/image1-27.png" />
            
            </figure><p>While deploying a change to our prefix advertisement policies, a re-ordering of terms caused us to withdraw a critical subset of prefixes.</p><p>Due to this withdrawal, Cloudflare engineers experienced added difficulty in reaching the affected locations to revert the problematic change. We have backup procedures for handling such an event and used them to take control of the affected locations.</p><p><b>03:56 UTC</b>: We deploy the change to our first location. None of our locations are impacted by the change, as these are using our older architecture.<b>06:17</b>: The change is deployed to our busiest locations, but not the locations with the MCP architecture.<b>06:27</b>: The rollout reached the MCP-enabled locations, and the change is deployed to our spines. <b>This is when the incident started</b>, as this swiftly took these 19 locations offline.<b>06:32</b>: Internal Cloudflare incident declared.<b>06:51</b>: First change made on a router to verify the root cause.<b>06:58</b>: Root cause found and understood. Work begins to revert the problematic change.<b>07:42</b>: The last of the reverts has been completed. This was delayed as network engineers walked over each other's changes, reverting the previous reverts, causing the problem to re-appear sporadically.<b>08:00</b>: Incident closed.</p><p>The criticality of these data centers can clearly be seen in the volume of successful HTTP requests we handled globally:</p>
            <figure>
            
            <img src="https://cf-assets.www.cloudflare.com/zkvhlag99gkb/1bgGYgoUmRFFbay19ThYit/74168099ecf004a6dc1bbda9aa81919f/image3-19.png" />
            
            </figure><p>Even though these locations are only 4% of our total network, the outage impacted 50% of total requests. The same can be seen in our egress bandwidth:</p>
            <figure>
            
            <img src="https://cf-assets.www.cloudflare.com/zkvhlag99gkb/4gWQTaPkyGxypCw4LBdZML/df1e2bbe7ca4a06f5746f7be42700c37/image6-11.png" />
            
            </figure>
    <div>
      <h3>Technical description of the error and how it happened</h3>
      <a href="#technical-description-of-the-error-and-how-it-happened">
        
      </a>
    </div>
    <p>As part of our continued effort to standardize our infrastructure configuration, we were rolling out a change to standardize the BGP communities we attach to a subset of the prefixes we advertise. Specifically, we were adding informational communities to our site-local prefixes.</p><p>These prefixes allow our metals to communicate with each other, as well as connect to customer origins. As part of the change procedure at Cloudflare, a Change Request ticket was created, which includes a dry-run of the change, as well as a stepped rollout procedure. Before it was allowed to go out, it was also peer reviewed by multiple engineers. Unfortunately, in this case, the steps weren’t small enough to catch the error before it hit all of our spines.</p><p>The change looked like this on one of the routers:</p>
            <pre><code>[edit policy-options policy-statement 4-COGENT-TRANSIT-OUT term ADV-SITELOCAL then]
+      community add STATIC-ROUTE;
+      community add SITE-LOCAL-ROUTE;
+      community add TLL01;
+      community add EUROPE;
[edit policy-options policy-statement 4-PUBLIC-PEER-ANYCAST-OUT term ADV-SITELOCAL then]
+      community add STATIC-ROUTE;
+      community add SITE-LOCAL-ROUTE;
+      community add TLL01;
+      community add EUROPE;
[edit policy-options policy-statement 6-COGENT-TRANSIT-OUT term ADV-SITELOCAL then]
+      community add STATIC-ROUTE;
+      community add SITE-LOCAL-ROUTE;
+      community add TLL01;
+      community add EUROPE;
[edit policy-options policy-statement 6-PUBLIC-PEER-ANYCAST-OUT term ADV-SITELOCAL then]
+      community add STATIC-ROUTE;
+      community add SITE-LOCAL-ROUTE;
+      community add TLL01;
+      community add EUROPE;</code></pre>
            <p>This was harmless, and just added some additional information to these prefix advertisements. The change on the spines was the following:</p>
            <pre><code>[edit policy-options policy-statement AGGREGATES-OUT]
term 6-DISABLED_PREFIXES { ... }
!    term 6-ADV-TRAFFIC-PREDICTOR { ... }
!    term 4-ADV-TRAFFIC-PREDICTOR { ... }
!    term ADV-FREE { ... }
!    term ADV-PRO { ... }
!    term ADV-BIZ { ... }
!    term ADV-ENT { ... }
!    term ADV-DNS { ... }
!    term REJECT-THE-REST { ... }
!    term 4-ADV-SITE-LOCALS { ... }
!    term 6-ADV-SITE-LOCALS { ... }
[edit policy-options policy-statement AGGREGATES-OUT term 4-ADV-SITE-LOCALS then]
community delete NO-EXPORT { ... }
+      community add STATIC-ROUTE;
+      community add SITE-LOCAL-ROUTE;
+      community add AMS07;
+      community add EUROPE;
[edit policy-options policy-statement AGGREGATES-OUT term 6-ADV-SITE-LOCALS then]
community delete NO-EXPORT { ... }
+      community add STATIC-ROUTE;
+      community add SITE-LOCAL-ROUTE;
+      community add AMS07;
+      community add EUROPE;</code></pre>
            <p>An initial glance at this diff might give the impression that this change is identical, but unfortunately, that’s not the case. If we focus on one part of the diff, it might become clear why:</p>
            <pre><code>!    term REJECT-THE-REST { ... }
!    term 4-ADV-SITE-LOCALS { ... }
!    term 6-ADV-SITE-LOCALS { ... }</code></pre>
            <p>In this diff format, the exclamation marks in front of the terms indicate a re-ordering of the terms. In this case, multiple terms moved up, and two terms were added to the bottom. Specifically, the 4-ADV-SITE-LOCALS and 6-ADV-SITE-LOCALS terms moved from the top to the bottom. These terms were now behind the REJECT-THE-REST term, and as might be clear from the name, this term is an explicit reject:</p>
            <pre><code>term REJECT-THE-REST {
    then reject;
} </code></pre>
            <p>As this term is now before the site-local terms, we immediately stopped advertising our site-local prefixes, removing our direct access to all the impacted locations, as well as removing the ability of our servers to reach origin servers.</p><p>On top of the inability to contact origins, the removal of these site-local prefixes also caused our internal load balancing system Multimog (a variation of our <a href="/unimog-cloudflares-edge-load-balancer/">Unimog load-balancer</a>) to stop working, as it could no longer forward requests between the servers in our MCPs. This meant that our smaller compute clusters in an MCP received the same amount of traffic as our largest clusters, causing the smaller ones to overload.</p>
            <figure>
            
            <img src="https://cf-assets.www.cloudflare.com/zkvhlag99gkb/jBcPxvumdeOx5Ffojnwuw/d34adc458e95b357c521733a933d73bf/image4-15.png" />
            
            </figure>
    <div>
      <h3>Remediation and follow-up steps</h3>
      <a href="#remediation-and-follow-up-steps">
        
      </a>
    </div>
    <p>This incident had widespread impact, and we take availability very seriously. We have identified several areas of improvement and will continue to work on uncovering any other gaps that could cause a recurrence.</p><p>Here is what we are working on immediately:</p><p><b>Process</b>: While the MCP program was designed to improve availability, a procedural gap in how we updated these data centers ultimately caused a broader impact in MCP locations specifically. While we did use a stagger procedure for this change, the stagger policy did not include an MCP data center until the final step. Change procedures and automation need to include MCP-specific test and deploy procedures to ensure there are no unintended consequences.</p><p><b>Architecture</b>: The incorrect router configuration prevented the proper routes from being announced, preventing traffic from flowing properly to our infrastructure. Ultimately the policy statement that caused the incorrect routing advertisement will be redesigned to prevent an unintentional incorrect ordering.</p><p><b>Automation</b>: There are several opportunities in our automation suite that would mitigate some or all of the impact seen from this event. Primarily, we will be concentrating on automation improvements that enforce an improved stagger policy for rollouts of network configuration and provide an automated “commit-confirm” rollback. The former enhancement would have significantly lessened the overall impact, and the latter would have greatly reduced the Time-to-Resolve during the incident.</p>
    <div>
      <h3>Conclusion</h3>
      <a href="#conclusion">
        
      </a>
    </div>
    <p>Although Cloudflare has invested significantly in our MCP design to improve service availability, we clearly fell short of our customer expectations with this very painful incident. We are deeply sorry for the disruption to our customers and to all the users who were unable to access Internet properties during the outage. We have already started working on the changes outlined above and will continue our diligence to ensure this cannot happen again.</p> ]]></content:encoded>
            <category><![CDATA[Outage]]></category>
            <category><![CDATA[Post Mortem]]></category>
            <guid isPermaLink="false">5rERCOYkkrYTVgFUr46dlN</guid>
            <dc:creator>Tom Strickx</dc:creator>
            <dc:creator>Jeremy Hartman</dc:creator>
        </item>
        <item>
            <title><![CDATA[Understanding how Facebook disappeared from the Internet]]></title>
            <link>https://blog.cloudflare.com/october-2021-facebook-outage/</link>
            <pubDate>Mon, 04 Oct 2021 21:08:52 GMT</pubDate>
            <description><![CDATA[ Today at 1651 UTC, we opened an internal incident entitled "Facebook DNS lookup returning SERVFAIL" because we were worried that something was wrong with our DNS resolver 1.1.1.1.  But as we were about to post on our public status page we realized something else more serious was going on. ]]></description>
            <content:encoded><![CDATA[ <p></p><p>The Internet - A Network of Networks</p><p>“<i>Facebook can't be down, can it?</i>”, we thought, for a second.</p><p>Today at 15:51 UTC, we opened an internal incident entitled "Facebook DNS lookup returning SERVFAIL" because we were worried that something was wrong with our DNS resolver <a href="https://developers.cloudflare.com/warp-client/">1.1.1.1</a>.  But as we were about to post on our <a href="https://www.cloudflarestatus.com/">public status</a> page we realized something else more serious was going on.</p><p>Social media quickly burst into flames, reporting what our engineers rapidly confirmed too. Facebook and its affiliated services WhatsApp and Instagram were, in fact, all down. Their DNS names stopped resolving, and their infrastructure IPs were unreachable. It was as if someone had "pulled the cables" from their data centers all at once and disconnected them from the Internet.</p><p>This wasn't a <a href="https://www.cloudflare.com/learning/dns/common-dns-issues/">DNS issue</a> itself, but failing DNS was the first symptom we'd seen of a larger Facebook outage.</p><p>How's that even possible?</p>
    <div>
      <h3>Update from Facebook</h3>
      <a href="#update-from-facebook">
        
      </a>
    </div>
    <p>Facebook has now <a href="https://engineering.fb.com/2021/10/04/networking-traffic/outage/">published a blog post</a> giving some details of what happened internally. Externally, we saw the BGP and DNS problems outlined in this post but the problem actually began with a configuration change that affected the entire internal backbone. That cascaded into Facebook and other properties disappearing and staff internal to Facebook having difficulty getting service going again.</p><p>Facebook posted <a href="https://engineering.fb.com/2021/10/05/networking-traffic/outage-details/">a further blog post</a> with a lot more detail about what happened. You can read that post for the inside view and this post for the outside view.</p><p>Now on to what we saw from the outside.</p>
    <div>
      <h3>Meet BGP</h3>
      <a href="#meet-bgp">
        
      </a>
    </div>
    <p><a href="https://www.cloudflare.com/learning/security/glossary/what-is-bgp/">BGP</a> stands for Border Gateway Protocol. It's a mechanism to exchange routing information between autonomous systems (AS) on the Internet. The big routers that make the Internet work have huge, constantly updated lists of the possible routes that can be used to deliver every network packet to their final destinations. Without BGP, the Internet routers wouldn't know what to do, and the Internet wouldn't work.</p><p>The Internet is literally a network of networks, and it’s bound together by BGP. BGP allows one network (say Facebook) to advertise its presence to other networks that form the Internet. As we write Facebook is not advertising its presence, ISPs and other networks can’t find Facebook’s network and so it is unavailable.</p><p>The individual networks each have an ASN: an Autonomous System Number. An Autonomous System (AS) is an individual network with a unified internal routing policy. An AS can originate prefixes (say that they control a group of IP addresses), as well as transit prefixes (say they know how to reach specific groups of IP addresses).</p><p>Cloudflare's ASN is <a href="https://www.peeringdb.com/asn/13335">AS13335</a>. Every ASN needs to announce its prefix routes to the Internet using BGP; otherwise, no one will know how to connect and where to find us.</p><p>Our <a href="https://www.cloudflare.com/learning/">learning center</a> has a good overview of what <a href="https://www.cloudflare.com/learning/security/glossary/what-is-bgp/">BGP</a> and <a href="https://www.cloudflare.com/learning/network-layer/what-is-an-autonomous-system/">ASNs</a> are and how they work.</p><p>In this simplified diagram, you can see six autonomous systems on the Internet and two possible routes that one packet can use to go from Start to End. AS1 → AS2 → AS3 being the fastest, and AS1 → AS6 → AS5 → AS4 → AS3 being the slowest, but that can be used if the first fails.</p>
            <figure>
            
            <img src="https://cf-assets.www.cloudflare.com/zkvhlag99gkb/32OFXCXQN61ABya2ei1YR2/b8dc0f86b97079926dd6de75533f0912/image5-10.png" />
            
            </figure><p>At 15:58 UTC we noticed that Facebook had stopped announcing the routes to their DNS prefixes. That meant that, at least, Facebook’s DNS servers were unavailable. Because of this Cloudflare’s 1.1.1.1 DNS resolver could no longer respond to queries asking for the IP address of facebook.com.</p>
            <pre><code>route-views&gt;show ip bgp 185.89.218.0/23
% Network not in table
route-views&gt;

route-views&gt;show ip bgp 129.134.30.0/23
% Network not in table
route-views&gt;</code></pre>
            <p>Meanwhile, other Facebook IP addresses remained routed but weren’t particularly useful since without DNS Facebook and related services were effectively unavailable:</p>
            <pre><code>route-views&gt;show ip bgp 129.134.30.0   
BGP routing table entry for 129.134.0.0/17, version 1025798334
Paths: (24 available, best #14, table default)
  Not advertised to any peer
  Refresh Epoch 2
  3303 6453 32934
    217.192.89.50 from 217.192.89.50 (138.187.128.158)
      Origin IGP, localpref 100, valid, external
      Community: 3303:1004 3303:1006 3303:3075 6453:3000 6453:3400 6453:3402
      path 7FE1408ED9C8 RPKI State not found
      rx pathid: 0, tx pathid: 0
  Refresh Epoch 1
route-views&gt;</code></pre>
            <p>We keep track of all the BGP updates and announcements we see in our global network. At our scale, the data we collect gives us a view of how the Internet is connected and where the traffic is meant to flow from and to everywhere on the planet.</p><p>A BGP UPDATE message informs a router of any changes you’ve made to a prefix advertisement or entirely withdraws the prefix. We can clearly see this in the number of updates we received from Facebook when checking our time-series BGP database. Normally this chart is fairly quiet: Facebook doesn’t make a lot of changes to its network minute to minute.</p><p>But at around 15:40 UTC we saw a peak of routing changes from Facebook. That’s when the trouble began.</p>
            <figure>
            
            <img src="https://cf-assets.www.cloudflare.com/zkvhlag99gkb/5y7pAAyjmIsSJXessKptMg/0f842af9af2a9c2550ff64f43ea7c365/image4-11.png" />
            
            </figure><p>If we split this view by routes announcements and withdrawals, we get an even better idea of what happened. Routes were withdrawn, Facebook’s DNS servers went offline, and one minute after the problem occurred, Cloudflare engineers were in a room wondering why 1.1.1.1 couldn’t resolve facebook.com and worrying that it was somehow a fault with our systems.</p>
            <figure>
            
            <img src="https://cf-assets.www.cloudflare.com/zkvhlag99gkb/71IU6JSuaRY843UulhFiKW/cb6d58af732594976beb1a78c0f8d308/image3-9.png" />
            
            </figure><p>With those withdrawals, Facebook and its sites had effectively disconnected themselves from the Internet.</p>
    <div>
      <h3>DNS gets affected</h3>
      <a href="#dns-gets-affected">
        
      </a>
    </div>
    <p>As a direct consequence of this, DNS resolvers all over the world stopped resolving their domain names.</p>
            <pre><code>➜  ~ dig @1.1.1.1 facebook.com
;; -&gt;&gt;HEADER&lt;&lt;- opcode: QUERY, status: SERVFAIL, id: 31322
;facebook.com.			IN	A
➜  ~ dig @1.1.1.1 whatsapp.com
;; -&gt;&gt;HEADER&lt;&lt;- opcode: QUERY, status: SERVFAIL, id: 31322
;whatsapp.com.			IN	A
➜  ~ dig @8.8.8.8 facebook.com
;; -&gt;&gt;HEADER&lt;&lt;- opcode: QUERY, status: SERVFAIL, id: 31322
;facebook.com.			IN	A
➜  ~ dig @8.8.8.8 whatsapp.com
;; -&gt;&gt;HEADER&lt;&lt;- opcode: QUERY, status: SERVFAIL, id: 31322
;whatsapp.com.			IN	A</code></pre>
            <p>This happens because DNS, like many other systems on the Internet, also has its routing mechanism. When someone types the <a href="https://facebook.com">https://facebook.com</a> URL in the browser, the DNS resolver, responsible for translating <a href="https://www.cloudflare.com/learning/dns/glossary/what-is-a-domain-name/">domain names</a> into actual IP addresses to connect to, first checks if it has something in its cache and uses it. If not, it tries to grab the answer from the domain nameservers, typically hosted by the entity that owns it.</p><p>If the nameservers are unreachable or fail to respond because of some other reason, then a SERVFAIL is returned, and the browser issues an error to the user.</p><p>Again, our learning center provides a <a href="https://www.cloudflare.com/learning/dns/what-is-dns/">good explanation</a> on how DNS works.</p>
            <figure>
            
            <img src="https://cf-assets.www.cloudflare.com/zkvhlag99gkb/aYyNe0TkIR47XpI3RjaN4/179f32b67057dc440e1ad3af2a0061e2/image8-8.png" />
            
            </figure><p>Due to Facebook stopping announcing their DNS prefix routes through BGP, our and everyone else's DNS resolvers had no way to connect to their nameservers. Consequently, 1.1.1.1, 8.8.8.8, and other major public DNS resolvers started issuing (and caching) SERVFAIL responses.</p><p>But that's not all. Now human behavior and application logic kicks in and causes another exponential effect. A tsunami of additional DNS traffic follows.</p><p>This happened in part because apps won't accept an error for an answer and start retrying, sometimes aggressively, and in part because end-users also won't take an error for an answer and start reloading the pages, or killing and relaunching their apps, sometimes also aggressively.</p><p>This is the traffic increase (in number of requests) that we saw on 1.1.1.1:</p>
            <figure>
            
            <img src="https://cf-assets.www.cloudflare.com/zkvhlag99gkb/JgzupnGlQqx0cZjijoRfb/bce5744c0d0a655e77c9b72f9d297496/image6-9.png" />
            
            </figure><p>So now, because Facebook and their sites are so big, we have DNS resolvers worldwide handling 30x more queries than usual and potentially causing latency and timeout issues to other platforms.</p><p>Fortunately, 1.1.1.1 was built to be Free, Private, Fast (as the independent DNS monitor <a href="https://www.dnsperf.com/#!dns-resolvers">DNSPerf</a> can attest), and scalable, and we were able to keep servicing our users with minimal impact.</p><p>The vast majority of our DNS requests kept resolving in under 10ms. At the same time, a minimal fraction of p95 and p99 percentiles saw increased response times, probably due to expired TTLs having to resort to the Facebook nameservers and timeout. The 10 seconds DNS timeout limit is well known amongst engineers.</p>
            <figure>
            
            <img src="https://cf-assets.www.cloudflare.com/zkvhlag99gkb/7HcKMYPFQWk5QlVyMY4dxH/c51ddb3df72b0baec1a0ff99b1a208fc/image2-11.png" />
            
            </figure>
    <div>
      <h3>Impacting other services</h3>
      <a href="#impacting-other-services">
        
      </a>
    </div>
    <p>People look for alternatives and want to know more or discuss what’s going on. When Facebook became unreachable, we started seeing increased DNS queries to Twitter, Signal and other messaging and social media platforms.</p>
            <figure>
            
            <img src="https://cf-assets.www.cloudflare.com/zkvhlag99gkb/4LNsXe0n3q2kZgSwbiTgD8/ddc52a824634bf383fc2aaf8fbadc25e/image1-12.png" />
            
            </figure><p>We can also see another side effect of this unreachability in our WARP traffic to and from Facebook's affected ASN 32934. This chart shows how traffic changed from 15:45 UTC to 16:45 UTC compared with three hours before in each country. All over the world WARP traffic to and from Facebook’s network simply disappeared.</p>
            <figure>
            
            <img src="https://cf-assets.www.cloudflare.com/zkvhlag99gkb/6pe57CevhAkyCi0MYDHurW/fc424989247ad4faa11f3b4c64781502/image7-6.png" />
            
            </figure>
    <div>
      <h3>The Internet</h3>
      <a href="#the-internet">
        
      </a>
    </div>
    <p>Today's events are a gentle reminder that the Internet is a very complex and interdependent system of millions of systems and protocols working together. That trust, standardization, and cooperation between entities are at the center of making it work for almost five billion active users worldwide.</p>
    <div>
      <h3>Update</h3>
      <a href="#update">
        
      </a>
    </div>
    <p>At around 21:00 UTC we saw renewed BGP activity from Facebook's network which peaked at 21:17 UTC.</p>
            <figure>
            
            <img src="https://cf-assets.www.cloudflare.com/zkvhlag99gkb/47HV9JWOs1yaUtXV1g269v/1effede60e4dc9e1eab042bb1fc1b4fe/unnamed-3-3.png" />
            
            </figure><p>This chart shows the availability of the DNS name 'facebook.com' on Cloudflare's DNS resolver 1.1.1.1. It stopped being available at around 15:50 UTC and returned at 21:20 UTC.</p>
            <figure>
            
            <img src="https://cf-assets.www.cloudflare.com/zkvhlag99gkb/5y4sNviiduLRAipw6I6UHs/770e842b223754d4aa61fffe3ee8d7c6/unnamed-4.png" />
            
            </figure><p>Undoubtedly Facebook, WhatsApp and Instagram services will take further time to come online but as of 21:28 UTC Facebook appears to be reconnected to the global Internet and DNS working again.</p> ]]></content:encoded>
            <category><![CDATA[Trends]]></category>
            <category><![CDATA[Outage]]></category>
            <category><![CDATA[BGP]]></category>
            <category><![CDATA[DNS]]></category>
            <category><![CDATA[Facebook]]></category>
            <guid isPermaLink="false">7jh9UDGts4LJU26IAOLsgK</guid>
            <dc:creator>Celso Martinho</dc:creator>
            <dc:creator>Tom Strickx</dc:creator>
        </item>
        <item>
            <title><![CDATA[ASICs at the Edge]]></title>
            <link>https://blog.cloudflare.com/asics-at-the-edge/</link>
            <pubDate>Fri, 27 Nov 2020 13:00:00 GMT</pubDate>
            <description><![CDATA[ At Cloudflare, we pride ourselves in our global network that spans more than 200 cities in over 100 countries. To accelerate all that traffic through our network, there are multiple technologies at play. So let’s have a look at one of the cornerstones that makes all of this work. ]]></description>
            <content:encoded><![CDATA[ <p>At Cloudflare we pride ourselves in our global network that spans more than 200 cities in over 100 countries. To handle all the traffic passing through our network, there are multiple technologies at play. So let’s have a look at one of the cornerstones that makes all of this work… ASICs. No, not the running shoes.</p>
    <div>
      <h2>What's an ASIC?</h2>
      <a href="#whats-an-asic">
        
      </a>
    </div>
    <p>ASIC stands for Application Specific Integrated Circuit. The name already says it, it's a chip with a very narrow use case, geared towards a single application. This is in stark contrast to a CPU (Central Processing Unit), or even a GPU (Graphics Processing Unit). A CPU is designed and built for general purpose computation, and does a lot of things reasonably well. A GPU is more geared towards graphics (it's in the name), but in the last 15 years, there's been a drastic shift towards GPGPU (General Purpose GPU), in which technologies such as <a href="https://en.wikipedia.org/wiki/CUDA">CUDA</a> or <a href="https://en.wikipedia.org/wiki/OpenCL">OpenCL</a> allow you to use the highly parallel nature of the GPU to do general purpose computing. A good example of GPU use is video encoding, or more recently, computer vision, used in applications such as self-driving cars.</p><p>Unlike CPUs or GPUs, ASICs are built with a single function in mind. Great examples are the Google Tensor Processing Units (TPU), used to accelerate machine learning functions<a href="#fn1">[1]</a>, or for orbital maneuvering<a href="#fn2">[2]</a>, in which specific orbital maneuvers are encoded, like the Hohmann Transfer, used to move rockets (and their payloads) to a new orbit at a different altitude. And they are also heavily used in the networking industry. Technically, the use case in the network industry should be called an ASSP (Application Specific Standard Product), but network engineers are simple people, so we prefer to call it an ASIC.</p>
    <div>
      <h2>Why an ASIC</h2>
      <a href="#why-an-asic">
        
      </a>
    </div>
    <p>ASICs have the major benefit of being hyper-efficient. The more complex hardware is, the more it will need cooling and power. As ASICs only contain the hardware components needed for their function, their overall size can be reduced, and so are their power requirements. This has a positive impact on the overall physical size of the network (devices don’t need to be as bulky to provide sufficient cooling), and helps reduce the power consumption of a data center.</p><p>Reducing hardware complexity also reduces the failure rate of the manufacturing process, and allows for easier production.</p><p>The downside is that you need to embed a lot of your features in hardware, and once a new technology or specification comes around, any chips made without that technology baked in, won’t be able to support it (<a href="https://en.wikipedia.org/wiki/Virtual_Extensible_LAN">VXLAN</a> for example).</p><p>For network equipment, this works perfectly. Overall, the networking industry is slow-moving, and considerable time is taken before new technologies make it to the market (as can be seen with IPv6, MPLS implementations, xDSL availability, …). This means the chips don't need to evolve on a yearly basis, and can instead be created on a much slower cycle, with bigger leaps in technology. For example, it took Broadcom two years to go from Tomahawk 3 to Tomahawk 4, but in that process they doubled the throughput. The benefits listed earlier are super helpful for network equipment, as they allow for considerable throughput in a small form factor.</p>
    <div>
      <h2>Building an ASIC</h2>
      <a href="#building-an-asic">
        
      </a>
    </div>
    <p>As with chips of any kind, building an ASIC is a long-term process. Just like with CPUs, if there's a defect in the hardware design, you have to start from scratch, and scrap the entire build line. As such, the development lifecycle is incredibly long. It starts with prototyping in an FPGA (Field Programmable Gate Array), in which chip designers can program their required functionality and confirm compatibility. All of this is done in a HDL (Hardware Description Language), such as <a href="https://en.wikipedia.org/wiki/Verilog">Verilog</a>.</p><p>Once the prototyping stage is over, they move to baking the new packet processing pipeline into the chip at a foundry. After that, no more changes can be made to the chip, as it's literally baked into the hardware (unlike an FPGA, which can be reprogrammed). Further difficulty is added by the fact that there are a very small number of hardware companies that will buy ASICs in bulk to build equipment with; as such the unit cost can increase drastically.</p><p>All of this means that the iteration cycle of an ASIC tends to be on the slower side of things (compared to the yearly refreshes in the Intel Process-Architecture-Optimization model for example), and will usually be smaller incremental updates: For example, increases in port-speeds are incremental (1G → 10G → 25G → 40G → 100G → 400G → 800G → ...), and are tied into upgrades to the SerDes (Serialiser/Deserialiser) part of the chip.</p><p>New protocol support is a lot harder, and might require multiple development cycles before it shows up in a chip.</p>
    <div>
      <h2>What ASICs do</h2>
      <a href="#what-asics-do">
        
      </a>
    </div>
    <p>The ASICs in our network equipment are responsible for the switching and routing of packets, as well as being the first layer of defense (in the form of a stateless firewall). Due to the sheer nature of how fast packets get switched, fast memory access is a primary concern. Most ASICs will use a special sort of memory, called TCAM (Ternary Content-Addressable Memory). This memory will be used to store all sorts of lookup tables. These may be forwarding tables (where does this packet go), ACL (Access Control List) tables (is this packet allowed), or CoS (Class of Service) tables (which priority should be given to this packet)</p><p>CAM, and its more advanced sibling, TCAM, are fascinating kinds of memory, as they operate fundamentally different than traditional Random Access Memory (RAM). While you have to use a memory address to access data in RAM, with CAM and TCAM you can directly refer to the content you are looking for. It is a physical implementation of a key-value store.</p><p>In CAM you use the exact binary representation of a word, in a network application, that word is likely going to be an IP address, so 11001011.00000000.01110001.00000000 for example (203.0.113.0). While this is definitely useful, networks operate a big collection of IP addresses, and storing each individually would require significant memory. To remedy this memory requirement, TCAM can store three states, instead of the binary two. This third state, sometimes called ‘ignore’ state, allows for the storage of multiple sequential data words as a single entry.</p><p>In networking, these sequential data words are IP prefixes. So for the previous example, if we wanted to store the collection of that IP address, and the 254 IPs following it, in TCAM it would as follows: 11001011.00000000.01110001.XXXXXXXX (203.0.113.0/24). This storage method means we can ask questions of the ASIC such as “where should I send packets with the destination IP address of 203.0.113.19”, to which the ASIC can have a reply ready in a single clock cycle, as it does not need to run through all memory, but instead can directly reference the key. This reply will usually be a reference to a memory address in traditional RAM, where more data can be stored, such as output port, or firewall requirements for the packet.</p>
            <figure>
            
            <img src="https://cf-assets.www.cloudflare.com/zkvhlag99gkb/1UPnZE6h192rIcDFS8dDGY/8419e7d58f0540745e74d480a7903a6d/TCAM_Lookup_Table.png" />
            
            </figure><p>To dig a bit deeper into what ASICs do in network equipment, let's briefly go over some fundamentals.</p><p>Networking can be split into two primary components: routing and switching. Switching allows you to directly interconnect multiple devices, so they can talk with each other across the network. It’s what allows your phone to connect to your TV to play a new family video. Routing is the next level up. It’s the mechanism that interconnects all these switched networks into a network of networks, and eventually, the Internet.</p><p>So routers are the devices responsible for steering traffic through this complex maze of networks, so it gets to its destination safely, and hopefully, as fast as possible. On the Internet, routers will usually use a routing protocol called BGP (Border Gateway Protocol) to exchange reachability information for a prefix (a collection of IP addresses), also called NLRI (Network Layer Reachability Information).</p><p>As with navigating the roads, there are multiple ways to get from point A to point B on the Internet. To make sure the router makes the right decision, it will store all of the reachability information in the RIB (Routing Information Base). That way, if anything changes with one route, the router still has other options immediately available.</p><p>With this information, a BGP daemon can calculate the ideal path to take for any given destination from its own point-of-view. <a href="https://www.cisco.com/c/en/us/support/docs/ip/border-gateway-protocol-bgp/13753-25.html">This Cisco documentation</a> explains the decision process the daemon goes through to calculate that ideal path.</p><p>Once we have this ideal path for a given destination, we should store this information, as it would be very inefficient to calculate this every single time we need to go there. The storage database is called the FIB (Forwarding Information Base). The FIB will be a subset of the RIB, as it will only ever contain the best path for a destination at any given time, while the RIB keeps all the available paths, even the non-ideal ones.</p><p>With these individual components, routers can make packets go from point A to point B in a blink of an eye.</p><p>Here' are some of the more specific functions our ASICs need to perform:</p><ol><li><p>FIB install: Once the router has calculated its FIB, it's important the router can access this as quickly as possible. To do so, the ASIC will install (write) this calculated FIB into the TCAM, so any lookups can happen as quickly as possible.</p>
            <figure>
            
            <img src="https://cf-assets.www.cloudflare.com/zkvhlag99gkb/5ymlFMx628N3OqLyOg5a4S/63ddcbf7a3c78c2f26f9fcd600ffda6a/BGP_RIB_to_FIB.png" />
            
            </figure></li><li><p>Packet forwarding lookups: as we need to know where to send a received packet, we look up this information in TCAM, which is, as we mentioned, incredibly fast.</p></li><li><p>Stateless Firewall: while a router routes packets between destinations, you also want to ensure that certain packets don't reach a destination at all. This can be done using either a stateless or stateful firewall. “State” in this case refers to TCP state, so the router would need to understand if a connection is new, or already established. As maintaining state is a complex issue, which requires storing tables, and can quickly consume a lot of memory, most routers will only operate a stateless firewall.Instead, stateful firewalls often have their own appliances. At Cloudflare, we've opted to move maintaining state to our compute nodes, as that severely reduces the state-table (one router for all state vs X metals for all state combined). A stateless firewall makes use of the TCAM again to store rules on what to do with specific types of packets. For example, one of the rules we employ at our edge is DENY-BOGON-RANGES , in which we discard traffic sourced from RFC1918 space (and other unroutable space). As this makes use of TCAM, it can all be done at line rate (the maximum speed of the interface).</p></li><li><p>Advanced features, such as GRE encapsulation: modern networking isn't just packet switching and packet routing anymore, and more advanced features are needed. One of these is encapsulation. With packet encapsulation, a system will put a data packet into another data packet. Using this technique, it’s possible to build a network on top of an existing network (an overlay). Overlays can be used to build a virtual backbone for example, in which multiple locations can be virtually connected through the Internet.While you can encapsulate packets on a CPU (we do this for Magic Transit), there are considerable challenges in doing so in software. As such, the ASIC can have built-in functionality to encapsulate a packet in a multitude of protocols, such as GRE. You may not want encapsulated packets to have to take a second trip through your entire pipeline, as this adds latency, so these shortcuts can also be built into the chip.</p></li><li><p><a href="https://www.cloudflare.com/learning/network-layer/what-is-mpls/">MPLS</a>, EVPN, VXLAN, <a href="https://www.cloudflare.com/learning/network-layer/what-is-an-sd-wan/">SDWAN</a>, <a href="https://www.cloudflare.com/learning/network-layer/what-is-sdn/">SDN</a>, ...: I ran out of buzzwords to enumerate here, but while MPLS isn't new (the first RFC was created in 2001), it's a rather advanced requirement, just as the others listed, which means not all ASIC vendors will implement this for all their chips due to the increased complexity.</p></li></ol>
    <div>
      <h2>Vendor Landscape</h2>
      <a href="#vendor-landscape">
        
      </a>
    </div>
    <p>At Cloudflare, we interact with both hardware and software vendors on a daily basis while operating our global network. As we’re talking about ASICs today, we’ll explore the hardware landscape, but some hardware vendors also have their own NOS (Network Operating System).There’s a vast selection of hardware out there, all with different features and pricing. It can become incredibly hard to see the wood for the trees, so we’ll focus on 4 important distinguishing factors: Throughput (how many bits can the ASIC push through), buffer size (how many bits can the ASIC store in memory in case of resource contention), programmability (how easy is it for a third party programmer like Cloudflare to interact directly with the ASIC), feature set (how many advanced things outside of routing/switching can the ASIC do).</p><p>The landscape is so varied because different companies have different requirements. A company like Cloudflare has different expectations for its network hardware than your typical corner shop. Even within our own network we’ll have different requirements for the different layers that make up our network.</p>
    <div>
      <h3>Broadcom</h3>
      <a href="#broadcom">
        
      </a>
    </div>
    <p>The elephant in the networking room (or is it the jumbo frame in the switch?) is Broadcom. Broadcom is a semiconductor company, with their primary revenue in the wired infrastructure segment (over 50% of revenue<a href="#fn3">[3]</a>). While they've been around since 1991, they've become an unstoppable force in the last 10 years, in part due to their reliance on Apple (25% of revenue). As a semiconductor manufacturer, their market dominance is primarily achieved by acquiring other companies. A great example is the acquisition of Dune Networks, which has become an excellent revenue generator as the StrataDNX series of ASIC (Arad, QumranMX, Jericho). As such, they have become the biggest ASIC vendor by far, and own 59% of the entire Ethernet Integrated Circuits market<a href="#fn4">[4]</a>.</p><p>As such, they supply a lot of merchant silicon to Cisco, Juniper, Arista and others. Up until recently, if you wanted to use the Broadcom SDK to accelerate your packet forwarding, you have to sign so many NDAs you might get a hand cramp, which makes programming them a lot trickier. This changed recently when Broadcom open-sourced their <a href="https://github.com/Broadcom-Network-Switching-Software/OpenBCM">SDK</a>. Let's have a quick look at some of their products.</p>
    <div>
      <h4>Tomahawk</h4>
      <a href="#tomahawk">
        
      </a>
    </div>
    <p>The Tomahawk line of ASICs are the bread-and-butter for the enterprise market. They're cheap and incredibly fast. The first generation of Tomahawk chips did 3.2Tbps linerate, with low-latency switching. The latest generation of this chip (Tomahawk 4) does 25.6Tbps in a 7nm transistor footprint<a href="#fn5">[5]</a>). As you can't have a cheap, fast, and full feature set for a single package, this means you lose out on features. In this case, you're missing most of the more advanced networking technologies such as VXLAN, and you have no buffer to speak of.As an example of a different vendor using this silicon, you can have a look at the Juniper QFX5200 switching platform.</p>
    <div>
      <h4>StrataDNX (Arad, QumranMX, Jericho)</h4>
      <a href="#stratadnx-arad-qumranmx-jericho">
        
      </a>
    </div>
    <p>These chipsets came through the acquisition of Dune Networks, and are a collection of high-bandwidth, deep buffer (large amount of memory available to store (buffer) packets) chips, allowing them to be deployed in versatile environments, including the Cloudflare edge. The Arista DCS-7280SR that we run in some of our edge locations as edge routers run on the Jericho chipset. Since then, the chips have evolved, and with Jericho2, Broadcom now have a 10Tbps deep buffer chip<a href="#fn6">[6]</a>. With their fabric chip (this links multiple ASICs together), you can build switches with 48x400G ports<a href="#fn7">[7]</a> without much effort.Cisco built their NCS5500 line of routers using the QumranMX<a href="#fn8">[8]</a>.</p>
    <div>
      <h4>Trident</h4>
      <a href="#trident">
        
      </a>
    </div>
    <p>This ASIC is an upgrade from the Tomahawk chipset, with a complex and extensive feature set, while maintaining high throughput rates. The latest Trident4 does 12.8Tbps at incredibly low latencies<a href="#fn9">[9]</a>, making it an incredibly flexible platform. It unfortunately has no buffer space to speak of, which limits its scope for Cloudflare, as we need the buffer space to be able to switch between the different port speeds we have on our edge routers. The Arista 7050X and 7300X are built on top of this.</p>
    <div>
      <h3>Intel</h3>
      <a href="#intel">
        
      </a>
    </div>
    <p>Intel is well known in the network industry for building stable and high-performance 10G NICs (Network Interface Controller). They're not known for ASICs. They made an initial attempt with their acquisition of Fulcrum<a href="#fn10">[10]</a>, which built the FM6000<a href="#fn11">[11]</a> series of ASIC, but nothing of note was really built with them. Intel decided to try again in 2019 with their acquisition of Barefoot. This small manufacturer is responsible for the Barefoot Tofino ASIC, which may well be a fundamental paradigm shift in the network industry.</p>
    <div>
      <h4>Barefoot Tofino</h4>
      <a href="#barefoot-tofino">
        
      </a>
    </div>
    <p>The Tofino<a href="#fn12">[12]</a> is built using a PISA (Protocol Independent Switch Architecture), and using P4 (Programming Protocol-Independent Packet Processors)<a href="#fn13">[13]</a>, you can program the data-plane (packet forwarding) as you see fit. It's a drastic move away from the traditional method of networking, in which direct programming of the ASIC isn't easily possible, and definitely not through a standard programming language. As an added benefit, P4 also allows you to perform a formal verification of your forwarding program, and be sure that it will do what you expect it to. Caveat: OpenFlow tried this, but unfortunately never really got much traction.</p>
            <figure>
            
            <img src="https://cf-assets.www.cloudflare.com/zkvhlag99gkb/5joEqLM5xofTPILTkjUsTT/143ad9d4f606541100ddb805ff7719b5/p4_switch_model-600px.png" />
            
            </figure><p><a href="#fn14">[14]</a></p><p>There are multiple variations of the Tofino 1 available, but the top-end ASIC has a 6.5Tbps linerate capacity. As the ASIC is programmable, its featureset is as rich as you'd want it to be. Unfortunately, the chip does not come with a lot of buffer memory, so we can't deploy these as edge devices (yet). Both Arista (7170 Series<a href="#fn15">[15]</a>) and Cisco (Nexus 34180YC and 3464C series<a href="#fn16">[16]</a>) have built equipment with the Tofino chip inside.</p>
    <div>
      <h3>Mellanox</h3>
      <a href="#mellanox">
        
      </a>
    </div>
    <p>As some of you may know, Mellanox is the vendor that recently got acquired by Nvidia, which also provides our 25G NICs in our compute nodes. Besides NICs, Mellanox has a well-established line of ASICs, mostly for switching.</p>
    <div>
      <h4>Spectrum</h4>
      <a href="#spectrum">
        
      </a>
    </div>
    <p>The latest iteration of this ASIC, Spectrum 3 offers 12.8Tbps switching capacity, with an extensive featureset, including Deep Packet Inspection and NAT. This chip allows for building dense high-speed port devices, going up to 25.6Tbps<a href="#fn17">[17]</a>. Buffering wise, there's none to really speak of (64MB). Mellanox also builds their own hardware platforms. Unlike the other vendors below, they aren't shipped with the Mellanox Operating System, instead, they offer you a variety of choices to run on top, including Cumulus Linux (which was also acquired by Nvidia ?).</p><p>As mentioned, while we use their NIC technology extensively, we currently don't have any Mellanox ASIC silicon in our network.</p>
    <div>
      <h3>Juniper</h3>
      <a href="#juniper">
        
      </a>
    </div>
    <p>Juniper is a network hardware supplier, and currently the biggest supplier of network equipment for Cloudflare. As previously mentioned in the Broadcom section, Juniper buys some of their silicon from Broadcom, but they also have a significant lineup of home-grown silicon, which can be split into 2 families: Trio and Express.</p>
    <div>
      <h4>Express</h4>
      <a href="#express">
        
      </a>
    </div>
    <p>The Express family is the switching-skewed family, where bandwidth is a priority, while still maintaining a broad range of feature capabilities. These chips live in the same application landscape as the Broadcom StrataDNX chips.</p>
    <div>
      <h5>Paradise (Q5)</h5>
      <a href="#paradise-q5">
        
      </a>
    </div>
    <p>The Q5 is the new generation of the Juniper switching ASIC<a href="#fn18">[18]</a>. While by itself it doesn't boast high linerates (500Gbps), when combined into a chassis with a fabric chip (<a href="https://en.wikipedia.org/wiki/Clos_network">Clos network</a> in this case), they can produce switches (or line cards) with up to 12Tbps of throughput capacity<a href="#fn19">[19]</a>. In addition to allowing for high-throughput, dense network appliances, the chip also comes with a staggering amount of buffer space (4GB per ASIC), provided by external <a href="https://en.wikipedia.org/wiki/Hybrid_Memory_Cube">HMC (Hybrid Memory Cube)</a>. In this HMC, they've also decided to put the FIB, MAC and other tables (so no TCAM).The Q5 chip is used in their QFX1000 lineup of switches, which include the QFX10002-36Q, QFX10002-60C, QFX10002-72Q and QFX10008, all of which are deployed in our datacenters, as either edge routers or core aggregation switches.</p>
    <div>
      <h5>ExpressPlus (ZX)</h5>
      <a href="#expressplus-zx">
        
      </a>
    </div>
    <p>The ExpressPlus is the more feature-rich and faster evolution of the Paradise chip. It offers double the bandwidth per chip (1Tbps) and is built into a combined Clos-fabric reaching 6Tbps in a 2U form-factor (PTX10002). It also has an increased logical scale, which comes with bigger buffers, larger FIB storage, and more ACL space.</p><p>The ExpressPlus drives some of the PTX line of IP routers, together with its newest sibling, Triton.</p>
    <div>
      <h5>Triton (BT)</h5>
      <a href="#triton-bt">
        
      </a>
    </div>
    <p>Triton is the latest generation of ASIC in the Express family, with 3.6Tbps of capacity per chip, making way for some truly bandwidth-dense hardware. Both Triton and ExpressPlus are 400GE capable.</p>
    <div>
      <h4>Trio</h4>
      <a href="#trio">
        
      </a>
    </div>
    <p>The Trio family of chips are primarily used in the feature-heavy MX routing platform, and is currently at its 5th generation.</p>
            <figure>
            
            <img src="https://cf-assets.www.cloudflare.com/zkvhlag99gkb/ahV83lGRr8PKjCCbX471Z/6d4c2694c9e479edd392ea410b1a08fa/MPC4E-3D-32XGE.jpg" />
            
            </figure><p>A Juniper MPC4E-3D-32XGE line card</p>
    <div>
      <h5>Trio Eagle (Trio 4.0) (EA)</h5>
      <a href="#trio-eagle-trio-4-0-ea">
        
      </a>
    </div>
    <p>The Trio Eagle is the previous generation of the Trio Penta, and can be found on the MPC7E line cards for example. It’s a feature-rich ASIC, with a 400Gbps forwarding capacity, and significant buffer and TCAM capacity (as is to be expected from a routing platform ASIC)</p>
    <div>
      <h5>Trio Penta (Trio 5.0) (ZT)</h5>
      <a href="#trio-penta-trio-5-0-zt">
        
      </a>
    </div>
    <p>Penta is the new generation routing chip, which is built for the MX platform routers. On top of being a very beefy chip, capable of 500Gbps per ASIC, allowing Juniper to build line cards of up to 4Tbps of capacity, the chip also has a lot of baked in features, offering advanced hardware offloading for for example MACSec, or Layer 3 IPsec.</p><p>The Penta chip is packaged on the MPC10E and MPC11E line card, which can be installed in multiple variations of the MX chassis routers (MX480 included).</p>
    <div>
      <h3>Cisco</h3>
      <a href="#cisco">
        
      </a>
    </div>
    <p>Last but not least, there's Cisco. As the saying goes “nobody ever got fired for buying Cisco”, they're the biggest vendor of network solutions around. Just like Juniper, they have a mixed product fleet of merchant silicon, as well as home-grown. While we used to operate Cisco routers as edge routers (Cisco ASR 9000), this is no longer the case. We do still use them heavily for our ToR (Top-of-Rack) switching needs, utilizing both their Nexus 5000 series and Nexus 9000 series switches.</p>
    <div>
      <h4>Bigsur</h4>
      <a href="#bigsur">
        
      </a>
    </div>
    <p>Bigsur is custom silicon developed for the Nexus 6000 line of switches (confusingly, the switches themselves are called Cisco Nexus 5672UP and Cisco Nexus 6001). In our specific model, the Cisco Nexus 5672UP, there's 7 of them interconnected, providing 10G and 40G connectivity. Unfortunately Cisco is a lot more tight-lipped about their ASIC capabilities, so I can't go as deep as I did with the Juniper chips. Feature-wise, there's not a lot we require from them in our edge network. They're simple Layer 2 forwarding switches, with no added requirements. Buffer wise, they use a system called Virtual Output Queueing, just like the Juniper Express chip. Unlike the Juniper silicon, the Bigsur ASIC doesn’t come with a lot of TCAM or buffer space.</p>
    <div>
      <h4>Tahoe</h4>
      <a href="#tahoe">
        
      </a>
    </div>
    <p>The Tahoe is the Cisco ASIC found in the Cisco 9300-EX switches, also known as the LSE (Leaf Spine Engine). It offers higher-density port configurations compared to the Bigsur (1.6Tbps)<a href="#fn20">[20]</a>. Overall, this ASIC is a maturation of the Bigsur silicon, offering more advanced features such as advanced VXLAN+EVPN fabrics, greater port flexibility (10G, 25G, 40G and 100G), and increased buffer sizes (40MB). We use this ASIC extensively in both our edge data centers as well as in our core data centers.</p>
    <div>
      <h2>Conclusion</h2>
      <a href="#conclusion">
        
      </a>
    </div>
    <p>A lot of different factors come into play when making the decision to purchase the next generation of Cloudflare network equipment. This post only scratches the surface of technical considerations to be made, and doesn't come near any other factors, such as ecosystem contributions, openness, interoperability, or pricing. None of this would've been possible without the contributions from other network engineers—this post was written on the shoulders of giants. In particular, thanks to the excellent work by <a href="https://people.ucsc.edu/~warner/buffer.html">Jim Warner at UCSC</a>, the engrossing book on the new MX platforms, written by David Roy (<a href="https://www.juniper.net/documentation/en_US/day-one-books/DO_MX5G.pdf">Day One: Inside the MX 5G</a>), as well as the best book on the Juniper QFX lineup: <a href="https://www.oreilly.com/library/view/juniper-qfx10000-series/9781491922248/">Juniper QFX10000 Series</a> by Douglas Richard Hanks Jr, and to finish it off, the <a href="https://elegantnetwork.github.io/posts/A-Summary-of-Network-ASICs/">Summary of Network ASICs</a> post by Justin Pietsch.</p><hr /><ol><li><p><a href="https://cloud.google.com/tpu/">https://cloud.google.com/tpu/</a> <a href="#fnref1">↩︎</a></p></li><li><p><a href="https://angel.co/company/spacex/jobs/744408-sr-fpga-asic-design-engineer">https://angel.co/company/spacex/jobs/744408-sr-fpga-asic-design-engineer</a> <a href="#fnref2">↩︎</a></p></li><li><p><a href="https://marketrealist.com/2017/02/wired-infrastructure-segment-protects-broadcom/">https://marketrealist.com/2017/02/wired-infrastructure-segment-protects-broadcom/</a> <a href="#fnref3">↩︎</a></p></li><li><p><a href="https://www.wsj.com/articles/broadcom-lands-deals-to-place-components-in-apple-smartphones-11579821914">https://www.wsj.com/articles/broadcom-lands-deals-to-place-components-in-apple-smartphones-11579821914</a> <a href="#fnref4">↩︎</a></p></li><li><p><a href="https://www.globenewswire.com/news-release/2019/12/09/1958047/0/en/Broadcom-Ships-Tomahawk-4-Industry-s-Highest-Bandwidth-Ethernet-Switch-Chip-at-25-6-Terabits-per-Second.html">https://www.globenewswire.com/news-release/2019/12/09/1958047/0/en/Broadcom-Ships-Tomahawk-4-Industry-s-Highest-Bandwidth-Ethernet-Switch-Chip-at-25-6-Terabits-per-Second.html</a> <a href="#fnref5">↩︎</a></p></li><li><p><a href="https://www.broadcom.com/products/ethernet-connectivity/switching/stratadnx/BCM88690">https://www.broadcom.com/products/ethernet-connectivity/switching/stratadnx/BCM88690</a> <a href="#fnref6">↩︎</a></p></li><li><p><a href="https://www.ufispace.com/products/telco/core-edge/s9705-48d-400g-disaggregated-core-router">https://www.ufispace.com/products/telco/core-edge/s9705-48d-400g-disaggregated-core-router</a> <a href="#fnref7">↩︎</a></p></li><li><p><a href="https://www.ciscolive.com/c/dam/r/ciscolive/emea/docs/2019/pdf/BRKSPG-2900.pdf">https://www.ciscolive.com/c/dam/r/ciscolive/emea/docs/2019/pdf/BRKSPG-2900.pdf</a> <a href="#fnref8">↩︎</a></p></li><li><p><a href="https://www.broadcom.com/products/ethernet-connectivity/switching/strataxgs/bcm56880-series">https://www.broadcom.com/products/ethernet-connectivity/switching/strataxgs/bcm56880-series</a> <a href="#fnref9">↩︎</a></p></li><li><p><a href="https://newsroom.intel.com/news-releases/intel-to-acquire-fulcrum-microsystems/">https://newsroom.intel.com/news-releases/intel-to-acquire-fulcrum-microsystems/</a> <a href="#fnref10">↩︎</a></p></li><li><p><a href="https://www.intel.com/content/dam/www/public/us/en/documents/datasheets/ethernet-switch-fm5000-fm6000-datasheet.pdf">https://www.intel.com/content/dam/www/public/us/en/documents/datasheets/ethernet-switch-fm5000-fm6000-datasheet.pdf</a> <a href="#fnref11">↩︎</a></p></li><li><p><a href="https://barefootnetworks.com/products/brief-tofino/">https://barefootnetworks.com/products/brief-tofino/</a> <a href="#fnref12">↩︎</a></p></li><li><p><a href="http://www.sigcomm.org/node/3503">http://www.sigcomm.org/node/3503</a> <a href="#fnref13">↩︎</a></p></li><li><p><a href="https://github.com/p4lang/p4lang.github.io/blob/master/assets/p4_switch_model-600px.png">https://github.com/p4lang/p4lang.github.io/blob/master/assets/p4_switch_model-600px.png</a> <a href="#fnref14">↩︎</a></p></li><li><p><a href="https://www.arista.com/assets/data/pdf/Whitepapers/7170_White_Paper.pdf">https://www.arista.com/assets/data/pdf/Whitepapers/7170_White_Paper.pdf</a> <a href="#fnref15">↩︎</a></p></li><li><p><a href="https://www.barefootnetworks.com/press-releases/barefoot-networks-to-showcase-technologies-to-build-fast-and-resilient-networks-using-deep-insight-and-tofino-powered-cisco-nexus-switches-at-cisco-live-us-2019/">https://www.barefootnetworks.com/press-releases/barefoot-networks-to-showcase-technologies-to-build-fast-and-resilient-networks-using-deep-insight-and-tofino-powered-cisco-nexus-switches-at-cisco-live-us-2019/</a> <a href="#fnref16">↩︎</a></p></li><li><p><a href="https://www.mellanox.com/products/ethernet-switches/sn4000">https://www.mellanox.com/products/ethernet-switches/sn4000</a> <a href="#fnref17">↩︎</a></p></li><li><p><a href="https://www.juniper.net/assets/us/en/local/pdf/whitepapers/2000599-en.pdf">https://www.juniper.net/assets/us/en/local/pdf/whitepapers/2000599-en.pdf</a> <a href="#fnref18">↩︎</a></p></li><li><p><a href="https://www.juniper.net/assets/us/en/local/pdf/datasheets/1000531-en.pdf#page=7">https://www.juniper.net/assets/us/en/local/pdf/datasheets/1000531-en.pdf#page=7</a> <a href="#fnref19">↩︎</a></p></li><li><p><a href="https://www.cisco.com/c/dam/global/fr_ch/solutions/data-center-virtualization/pdf/Cisco_Nexus_9300_EX_Platform.pdf#page=8">https://www.cisco.com/c/dam/global/fr_ch/solutions/data-center-virtualization/pdf/Cisco_Nexus_9300_EX_Platform.pdf#page=8</a> <a href="#fnref20">↩︎</a></p></li></ol> ]]></content:encoded>
            <category><![CDATA[Network]]></category>
            <category><![CDATA[Hardware]]></category>
            <category><![CDATA[Deep Dive]]></category>
            <guid isPermaLink="false">4QanceP6vNJ69VeHp8l81j</guid>
            <dc:creator>Tom Strickx</dc:creator>
        </item>
        <item>
            <title><![CDATA[How Verizon and a BGP Optimizer Knocked Large Parts of the Internet Offline Today]]></title>
            <link>https://blog.cloudflare.com/how-verizon-and-a-bgp-optimizer-knocked-large-parts-of-the-internet-offline-today/</link>
            <pubDate>Mon, 24 Jun 2019 19:58:39 GMT</pubDate>
            <description><![CDATA[ Today at 10:30UTC, the Internet had a small heart attack. A small company in Northern Pennsylvania became a preferred path of many Internet routes through Verizon (AS701), a major Internet transit provider.  ]]></description>
            <content:encoded><![CDATA[ 
    <div>
      <h3>Massive route leak impacts major parts of the Internet, including Cloudflare</h3>
      <a href="#massive-route-leak-impacts-major-parts-of-the-internet-including-cloudflare">
        
      </a>
    </div>
    
    <div>
      <h4>What happened?</h4>
      <a href="#what-happened">
        
      </a>
    </div>
    <p>Today at 10:30UTC, the Internet had a small heart attack. A small company in Northern Pennsylvania became a preferred path of many Internet routes through Verizon (AS701), a major Internet transit provider. This was the equivalent of Waze routing an entire freeway down a neighborhood street — resulting in many websites on Cloudflare, and many other providers, to be unavailable from large parts of the Internet. This should never have happened because Verizon should never have forwarded those routes to the rest of the Internet. To understand why, read on.</p><p>We have blogged about these <a href="/bgp-leaks-and-crypto-currencies/">unfortunate events</a> in the past, as they are not uncommon. This time, the damage was seen worldwide. What exacerbated the problem today was the involvement of a “BGP Optimizer” product from <a href="https://www.noction.com/">Noction</a>. This product has a feature that splits up received IP prefixes into smaller, contributing parts (called more-specifics). For example, our own IPv4 route 104.20.0.0/20 was turned into 104.20.0.0/21 and 104.20.8.0/21. It’s as if the road sign directing traffic to “Pennsylvania” was replaced by two road signs, one for “Pittsburgh, PA” and one for “Philadelphia, PA”. By splitting these major IP blocks into smaller parts, a network has a mechanism to steer traffic within their network but that split should never have been announced to the world at large. When it was it caused today’s outage.</p><p>To explain what happened next, here’s a quick summary of how the underlying “map” of the Internet works. “Internet” literally means a network of networks and it is made up of networks called Autonomous Systems (AS), and each of these networks has a unique identifier, its AS number. All of these networks are interconnected using a protocol called Border Gateway Protocol (BGP). BGP joins these networks together and builds the Internet “map” that enables traffic to travel from, say, your ISP to a popular website on the other side of the globe.</p><p>Using BGP, networks exchange route information: how to get to them from wherever you are. These routes can either be specific, similar to finding a specific city on your GPS, or very general, like pointing your GPS to a state. This is where things went wrong today.</p><p>An Internet Service Provider in Pennsylvania  (<a href="https://bgp.he.net/AS33154">AS33154</a> - DQE Communications) was using a BGP optimizer in their network, which meant there were a lot of more specific routes in their network. Specific routes override more general routes (in the Waze analogy a route to, say, Buckingham Palace is more specific than a route to London).</p><p>DQE announced these specific routes to their customer (<a href="https://bgp.he.net/AS396531">AS396531</a> - Allegheny Technologies Inc). All of this routing information was then sent to their other transit provider (<a href="https://bgp.he.net/AS701">AS701</a> - Verizon), who proceeded to tell the entire Internet about these “better” routes. These routes were supposedly “better” because they were more granular, more specific.</p><p>The leak should have stopped at Verizon. However, against numerous best practices outlined below, Verizon’s lack of filtering turned this into a major incident that affected many Internet services such as <a href="https://twitter.com/atoonk/status/1143143943531454464">Amazon,  Linode and Cloudflare</a>.</p><p>What this means is that suddenly Verizon, Allegheny, and DQE had to deal with a stampede of Internet users trying to access those services through their network. None of these networks were suitably equipped to deal with this drastic increase in traffic, causing disruption in service. Even if they had sufficient capacity DQE, Allegheny and Verizon were <b>not</b> allowed to say they had the best route to Cloudflare, Amazon, Linode, etc...</p>
            <figure>
            
            <img src="https://cf-assets.www.cloudflare.com/zkvhlag99gkb/1pCvQ96MWTmJVVbpqquR2b/4be9ff9aceb6dccf8cd0c889d898c24f/leak2-2.png" />
            
            </figure><p>BGP leak process with a BGP optimizer</p><p>During the incident, we observed a loss, at the worst of the incident, of about 15% of our global traffic.</p>
            <figure>
            
            <img src="https://cf-assets.www.cloudflare.com/zkvhlag99gkb/65rX7ImarUptmbURA6PAw3/e8e8d45f09a411bd4ae2f31b8cc23a0d/Screenshot-2019-06-24-at-19.22.34.png" />
            
            </figure><p>Traffic levels at Cloudflare during the incident.</p>
    <div>
      <h4>How could this leak have been prevented?</h4>
      <a href="#how-could-this-leak-have-been-prevented">
        
      </a>
    </div>
    <p>There are multiple ways this leak could have been avoided:</p><p>A BGP session can be configured with a hard limit of prefixes to be received. This means a router can decide to shut down a session if the number of prefixes goes above the threshold. Had Verizon had such a prefix limit in place, this would not have occurred. It is a best practice to have such limits in place. It doesn't cost a provider like Verizon anything to have such limits in place. And there's no good reason, other than sloppiness or laziness, that they wouldn't have such limits in place.</p><p>A different way network operators can prevent leaks like this one is by implementing IRR-based filtering. IRR is the Internet Routing Registry, and networks can add entries to these distributed databases. Other network operators can then use these IRR records to generate specific prefix lists for the BGP sessions with their peers. If IRR filtering had been used, none of the networks involved would have accepted the faulty more-specifics. What’s quite shocking is that it appears that Verizon didn’t implement any of this filtering in their BGP session with Allegheny Technologies, even though IRR filtering has been around (and well documented) for over 24 years. IRR filtering would not have increased Verizon's costs or limited their service in any way. Again, the only explanation we can conceive of why it wasn't in place is sloppiness or laziness.</p><p>The RPKI framework that we implemented and deployed globally last year is designed to prevent this type of leak. It enables filtering on origin network and prefix size. The prefixes Cloudflare announces are signed for a maximum size of 20. RPKI then indicates any more-specific prefix should not be accepted, no matter what the path is. In order for this mechanism to take action, a network needs to enable BGP Origin Validation. Many providers like <a href="https://twitter.com/jobsnijders/status/1094976832267522048">AT&amp;T have already enabled it</a> successfully in their network.</p><p>If Verizon had used RPKI, they would have seen that the advertised routes were not valid, and the routes could have been automatically dropped by the router.</p><p>Cloudflare encourages all network operators to <a href="/rpki-details/">deploy RPKI</a> now!</p>
            <figure>
            
            <img src="https://cf-assets.www.cloudflare.com/zkvhlag99gkb/6opKKqqitidaqudxSRi9iP/1c808d3a2552e50a22ff4fe693717438/leak3-2.png" />
            
            </figure><p>Route leak prevention using IRR, RPKI, and prefix limits</p><p>All of the above suggestions are nicely condensed into MANRS (<a href="https://www.manrs.org/">Mutually Agreed Norms for Routing Security</a>)</p>
    <div>
      <h4>How it was resolved</h4>
      <a href="#how-it-was-resolved">
        
      </a>
    </div>
    <p>The network team at Cloudflare reached out to the networks involved, AS33154 (DQE Communications) and AS701 (Verizon). We had difficulties reaching either network, this may have been due to the time of the incident as it was still early on the East Coast of the US when the route leak started.</p>
            <figure>
            
            <img src="https://cf-assets.www.cloudflare.com/zkvhlag99gkb/xvqzVNjFcIjQenw3ima8a/0bc1ca2958b2920d390dcd5114749372/mail-1.png" />
            
            </figure><p>Screenshot of the email sent to Verizon</p><p>One of our network engineers made contact with DQE Communications quickly and after a little delay they were able to put us in contact with someone who could fix the problem. DQE worked with us on the phone to stop advertising these “optimized” routes to Allegheny Technologies Inc. We're grateful for their help. Once this was done, the Internet stabilized, and things went back to normal.</p>
            <figure>
            
            <img src="https://cf-assets.www.cloudflare.com/zkvhlag99gkb/2ltEfbM6zsVNot3T29wYQK/457f91c3c3b846c82a3e004cce6f0895/phonelog.png" />
            
            </figure><p>Screenshot of attempts to communicate with the support for DQE and Verizon</p><p>It is unfortunate that while we tried both e-mail and phone calls to reach out to Verizon, at the time of writing this article (over 8 hours after the incident), we have not heard back from them, nor are we aware of them taking action to resolve the issue.</p><p>At Cloudflare, we wish that events like this never take place, but unfortunately the current state of the Internet does very little to prevent incidents such as this one from occurring. It's time for the industry to adopt better routing security through systems like RPKI. We hope that major providers will follow the lead of Cloudflare, Amazon, and AT&amp;T and start <a href="/cloudflares-rpki-toolkit/">validating routes</a>. And, in particular, we're looking at you Verizon — and still waiting on your reply.</p><p>Despite this being caused by events outside our control, we’re sorry for the disruption. Our team cares deeply about our service and we had engineers in the US, UK, Australia, and Singapore online minutes after this problem was identified.</p> ]]></content:encoded>
            <category><![CDATA[BGP]]></category>
            <guid isPermaLink="false">429lJ8w7p9mpCgUIdjih2H</guid>
            <dc:creator>Tom Strickx</dc:creator>
        </item>
    </channel>
</rss>