{"id":1709,"date":"2023-09-13T14:09:00","date_gmt":"2023-09-13T14:09:00","guid":{"rendered":"https:\/\/www.dnsfilter.com\/blog\/dns-network-why-it-wont-go-down"},"modified":"2023-09-13T14:09:00","modified_gmt":"2023-09-13T14:09:00","slug":"our-dns-network-wont-go-down-heres-why-dnsfilter","status":"publish","type":"post","link":"https:\/\/ddi.mohflo.net\/index.php\/2023\/09\/13\/our-dns-network-wont-go-down-heres-why-dnsfilter\/","title":{"rendered":"Our DNS Network Won\u2019t Go Down, Here\u2019s Why | DNSFilter"},"content":{"rendered":"<p>At DNSFilter, we\u2019ve never had a global outage. You\u2019ve probably heard us say that before. We repeat that because it\u2019s something we\u2019re proud of, and we\u2019ve done a lot of work to ensure that our DNS network (our anycast network) has 100% uptime. What I want to address here is <em>how<\/em> we achieve that uptime.<\/p>\n<p><!--more--><\/p>\n<p>We take pride in this because most other DNS filtering providers don\u2019t go to the lengths that we do to ensure our network is both fast (we\u2019re the fastest DNS resolver in the world <span>and <\/span>North America&nbsp;according to <a href=\"https:\/\/www.dnsperf.com\/#!dns-resolvers,North%20America\" target=\"_blank\" rel=\"noopener\">dnsperf.com<\/a>) and redundant. We\u2019ll explore here how and why our network was built to be resilient.<\/p>\n<figure class=\"w-richtext-align-fullwidth w-richtext-figure-type-image\"><img data-recalc-dims=\"1\" loading=\"lazy\" decoding=\"async\" src=\"https:\/\/i0.wp.com\/ddi.mohflo.net\/wp-content\/uploads\/2023\/09\/our-dns-network-wont-go-down-heres-why-dnsfilter.gif?resize=640%2C310&#038;ssl=1\" width=\"640\" height=\"310\" loading=\"lazy\" alt=\"fastest-dns-resolver\" srcset=\"https:\/\/ddi.mohflo.net\/wp-content\/uploads\/2023\/09\/our-dns-network-wont-go-down-heres-why-dnsfilter-1.gif 400w, https:\/\/ddi.mohflo.net\/wp-content\/uploads\/2023\/09\/our-dns-network-wont-go-down-heres-why-dnsfilter.gif 800w, https:\/\/ddi.mohflo.net\/wp-content\/uploads\/2023\/09\/our-dns-network-wont-go-down-heres-why-dnsfilter.gif 1200w, https:\/\/ddi.mohflo.net\/wp-content\/uploads\/2023\/09\/our-dns-network-wont-go-down-heres-why-dnsfilter.gif 1600w, https:\/\/ddi.mohflo.net\/wp-content\/uploads\/2023\/09\/our-dns-network-wont-go-down-heres-why-dnsfilter.gif 2000w, https:\/\/ddi.mohflo.net\/wp-content\/uploads\/2023\/09\/our-dns-network-wont-go-down-heres-why-dnsfilter.gif 2400w\" sizes=\"auto, (max-width: 800px) 100vw, 800px\"><\/figure>\n<h2>&nbsp;<\/h2>\n<h2>Our DNS network<\/h2>\n<p>Anycast is a way to route a network when there are multiple routing paths available. In our case, we have nearly 90 data centers globally in over 60 cities that someone\u2019s DNS request might go through. We announce the same IPs from those data centers, from Singapore to New York City.<\/p>\n<p>Our users point their DNS requests to the IP addresses we supply. Depending on which data center you\u2019re closest to, your DNS requests will be sent to that data center. So if you\u2019re in Germany, your requests might go through our Frankfurt location, while if you\u2019re in the Pacific Northwest your requests will likely go through our Seattle location.<\/p>\n<p>We\u2019re able to do this through BGP (Border Gateway Protocol) and announcing our IP space from multiple locations; this is what enables anycast. We use a technology called ECS to pass along a portion of your source IP so that <a href=\"https:\/\/www.dnsfilter.com\/blog\/authoritative-vs-recursive-dns\">authoritative DNS<\/a> servers and CDNs can determine your \u201ctrue\u201d location and point you to the best servers for them. Using that information, our servers send your DNS requests to the closest server based on your location. As an example, if you\u2019re in Portland, using our Seattle anycast POP, but the website you\u2019re using happens to have a Portland CDN location, ECS will enable that provider to send you to the Portland CDN location instead of the more-distant Seattle location. This results in a much faster experience for you as an end user.<\/p>\n<p>This differs from the alternate method used in DNS resolution by other providers called unicast. In a unicast network, a <em>single<\/em> server is spun up in a <em>single<\/em> location. This means, whether you get online in Frankfurt or Seattle is irrelevant. No matter what, your DNS requests will travel to the same server. This is not an optimal method in DNS resolution as it creates more latency and higher end-user risk because if that single server goes down, everything goes down.<\/p>\n<p>But, our service is actually comprised of <em>two<\/em> separate anycast networks (DNS1 and DNS2).<\/p>\n<p>So if you\u2019re in Germany, and you send a DNS request but DNS1 doesn\u2019t answer, DNS2 will return your request instead with no impact on speed.<\/p>\n<p>Further, the parts that make up DNS1 are not identical to the components that make up DNS2, even in the same city. For instance, we use Hurricane Electric for DNS1, but not for DNS2. That\u2019s because if we only used Hurricane Electric and they had a global outage, <em>so would we<\/em>.<\/p>\n<p>Our DNS1 and DNS2 networks are totally different. We use different hosting providers, data centers, and server architectures. This same strategy is actually used by the root DNS servers of the Internet. Setting up our network in this way benefits our customers by protecting them from issues that could be caused by our third party providers, such as:<\/p>\n<ul role=\"list\">\n<li>Hard drive failure<\/li>\n<li>Power loss<\/li>\n<li>Network connectivity<\/li>\n<\/ul>\n<p>Further, if <em>both<\/em> Frankfurt servers were to go down, you wouldn\u2019t be completely out of luck. The BGP routing in our anycast network would start sending your requests to the <em>next<\/em> nearest node, and we\u2019d be working with our third party providers to get both Frankfurt nodes up and running.<\/p>\n<h2>Lessons learned in DNS networking<\/h2>\n<p>We never said we were perfect! While we\u2019ve always run on an anycast network and had that vision from the start, we\u2019ve run into many situations that have illuminated the need for changes within our process.<\/p>\n<p>When we initially built our anycast network in 2015, we primarily had clients on the US east coast and Canada, but we needed to be ready to expand. So we built a DNS network where we could add new servers as our customer base grew, enabling us to reduce latency despite increasing the number of DNS requests we\u2019d be resolving.<\/p>\n<p>In 2017, we started using two global anycast networks: DNS1 and DNS2. We did this in collaboration with <a href=\"https:\/\/www.packet.com\/customers\/dnsfilter\/\" target=\"_blank\" rel=\"noopener\">Packet<\/a> and <a href=\"https:\/\/netactuate.com\/\" target=\"_blank\" rel=\"noopener\">NetActuate<\/a>, two flexible hosting providers that enabled us to use the same IPs across both platforms. This technology helped us create our fully redundant anycast network.<\/p>\n<p>Another occasion where we learned from our mistakes occurred in 2019. We experienced an incident after updating a few anycast servers, but failing to create a flag that would stop BGP from announcing before those updates. Because of this, we caused errors to a small subset of customers. In total, this impacted less than 20% of our dns1 anycast network for <strong>5 seconds<\/strong> and remains our largest outage to date. After this, we modified our testing environment and sent instructions to our clients who were immediately affected.<\/p>\n<p>The redundancy we\u2019ve built into our product, through our DNS1 and DNS2 anycast networks, is a major part of the foundation of DNSFilter. From the beginning we\u2019ve strived to provide a product that will work for the end user, no matter what might be happening on the server-side behind the scenes.<\/p>\n<p>Our customers shouldn\u2019t have to worry about things like that! It should just work.<\/p>\n<p><a href=\"https:\/\/app.dnsfilter.com\/signup\">Get a free trial<\/a><\/p>\n<p><a href=\"https:\/\/www.dnsfilter.com\/blog\/dns-network-why-it-wont-go-down\">Source<\/a><\/p>\n","protected":false},"excerpt":{"rendered":"<p>At DNSFilter, we\u2019ve never had a global outage. You\u2019ve probably<\/p>\n","protected":false},"author":8,"featured_media":0,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"_jetpack_memberships_contains_paid_content":false,"footnotes":""},"categories":[432,222],"tags":[433,230],"class_list":["post-1709","post","type-post","status-publish","format-standard","hentry","category-anycast","category-featured","tag-anycast","tag-featured"],"featured_image_urls":{"full":"","thumbnail":"","medium":"","medium_large":"","large":"","1536x1536":"","2048x2048":"","chromenews-featured":"","chromenews-large":"","chromenews-medium":""},"author_info":{"display_name":"DNSFilter","author_link":"https:\/\/ddi.mohflo.net\/index.php\/author\/dnsfilter\/"},"category_info":"<a href=\"https:\/\/ddi.mohflo.net\/index.php\/category\/anycast\/\" rel=\"category tag\">Anycast<\/a> <a href=\"https:\/\/ddi.mohflo.net\/index.php\/category\/featured\/\" rel=\"category tag\">Featured<\/a>","tag_info":"Featured","comment_count":"0","jetpack_featured_media_url":"","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/ddi.mohflo.net\/index.php\/wp-json\/wp\/v2\/posts\/1709","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/ddi.mohflo.net\/index.php\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/ddi.mohflo.net\/index.php\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/ddi.mohflo.net\/index.php\/wp-json\/wp\/v2\/users\/8"}],"replies":[{"embeddable":true,"href":"https:\/\/ddi.mohflo.net\/index.php\/wp-json\/wp\/v2\/comments?post=1709"}],"version-history":[{"count":0,"href":"https:\/\/ddi.mohflo.net\/index.php\/wp-json\/wp\/v2\/posts\/1709\/revisions"}],"wp:attachment":[{"href":"https:\/\/ddi.mohflo.net\/index.php\/wp-json\/wp\/v2\/media?parent=1709"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/ddi.mohflo.net\/index.php\/wp-json\/wp\/v2\/categories?post=1709"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/ddi.mohflo.net\/index.php\/wp-json\/wp\/v2\/tags?post=1709"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}