{"id":5342,"date":"2024-05-06T17:14:16","date_gmt":"2024-05-07T00:14:16","guid":{"rendered":"https:\/\/blog.caida.org\/best_available_data\/?p=5342"},"modified":"2024-05-06T17:20:53","modified_gmt":"2024-05-07T00:20:53","slug":"understanding-the-deployment-of-public-recursive-resolvers","status":"publish","type":"post","link":"https:\/\/blog.caida.org\/best_available_data\/2024\/05\/06\/understanding-the-deployment-of-public-recursive-resolvers\/","title":{"rendered":"Understanding the deployment of public recursive resolvers"},"content":{"rendered":"<p><em>This is the third in a series of essays (two earlier blog posts [<a href=\"https:\/\/blog.caida.org\/best_available_data\/2024\/01\/16\/towards-a-domain-specific-language-for-internet-active-measurement\/\">1<\/a>, <a href=\"https:\/\/blog.caida.org\/best_available_data\/2024\/01\/24\/developing-software-locally-for-ark\/\">2<\/a>]) about CAIDA&#8217;s new effort to reduce the barrier to performing a variety of Internet measurements.<\/em><\/p>\n<p>We were recently asked about running <a href=\"https:\/\/cseweb.ucsd.edu\/~schulman\/docs\/imc20-trufflehunter.pdf\">Trufflehunter<\/a>, which infers the usage properties of rare domain names on the Internet by cache snooping public recursive resolvers, on <a href=\"https:\/\/www.caida.org\/projects\/ark\/locations\/\">Ark<\/a>. The basic idea of Trufflehunter is to provide a lower bound of the use of a domain name by sampling caches of large recursive resolvers.\u00a0 One component of Trufflehunter is to identify the anycast instances that would answer a given vantage point&#8217;s DNS queries.\u00a0\u00a0 Trufflehunter uses a series of TXT queries to obtain the anycast instance of a given public recursive resolver, and considers four large public recursive resolvers: Cloudflare (1.1.1.1), Google (8.8.8.8), Quad9 (9.9.9.9), and OpenDNS (208.67.220.220).\u00a0 The original paper describes the queries in section 4.1, which we summarize below, highlighting the interesting parts of each response with blue color.<\/p>\n<p>Cloudflare returns an airport code representing the anycast deployment location used by the VP:<code><br \/>\n$ host -c ch -t txt id.server 1.1.1.1<br \/>\nid.server descriptive text \"<span style=\"color: #3366ff;\">AKL<\/span>\"<\/code><\/p>\n<p>Google returns an IP address representing the anycast deployment used by the VP, which can be mapped to an anycast deployment location with a second query:<br \/>\n<code>$ host -t txt o-o.myaddr.l.google.com 8.8.8.8<br \/>\no-o.myaddr.l.google.com descriptive text \"<span style=\"color: #3366ff;\">172.253.218.133<\/span>\"<br \/>\no-o.myaddr.l.google.com descriptive text \"edns0-client-subnet &lt;redacted&gt;\/24\"<\/code><br \/>\n<code>$ host -t txt locations.publicdns.goog<br \/>\nlocations.publicdns.goog descriptive text \"34.64.0.0\/24 icn \" ... \"<span style=\"color: #3366ff;\">172.253.218.128\/26 syd<\/span> \" \"172.253.218.192\/26 cbf \" ...<\/code><\/p>\n<p>Quad9 returns the hostname representing the resolver that provides the answer:<br \/>\n<code>$ host -c ch -t txt id.server 9.9.9.9<br \/>\nid.server descriptive text \"res100.<span style=\"color: #3366ff;\">akl<\/span>.rrdns.pch.net\"<\/code><\/p>\n<p>and finally, OpenDNS returns a bunch of information in a debugging query, which includes the server that handles the query:<br \/>\n<code>$ host -t txt debug.opendns.com 208.67.220.220<br \/>\ndebug.opendns.com descriptive text \"server r2004.<span style=\"color: #3366ff;\">syd<\/span>\"<br \/>\ndebug.opendns.com descriptive text \"flags 20040020 0 70 400180000000000000000007950800000000000000\"<br \/>\ndebug.opendns.com descriptive text \"originid 0\"<br \/>\ndebug.opendns.com descriptive text \"orgflags 2000000\"<br \/>\ndebug.opendns.com descriptive text \"actype 0\"<br \/>\ndebug.opendns.com descriptive text \"source &lt;redacted&gt;:42845\"<\/code><\/p>\n<p>Each of these queries requires a slightly different approach to extract the location of the anycast instance.\u00a0 Our suggestion is for experimenters to use our newly created <a href=\"https:\/\/www.caida.org\/catalog\/software\/scamper\/python\/\">python library<\/a>, which provides programmatic access to measurement capabilities of Ark VPs (described in two earlier blog posts [<a href=\"https:\/\/blog.caida.org\/best_available_data\/2024\/01\/16\/towards-a-domain-specific-language-for-internet-active-measurement\/\">1<\/a>, <a href=\"https:\/\/blog.caida.org\/best_available_data\/2024\/01\/24\/developing-software-locally-for-ark\/\">2<\/a>]).\u00a0 The code for querying the recursive resolvers from all VPs is straight forward, and is shown below.\u00a0 First, on lines 15-27, we get the Google mapping, so that we can translate the address returned to an anycast location.\u00a0 This query requires TCP to complete, as the entry is larger than can fit in a UDP payload (the response is 9332 bytes at the time of writing this blog).\u00a0 This query is synchronous (we wait for the answer before continuing, because the google queries that follow depend on the mapping) and is issued using a randomly selected Ark VP.\u00a0 Then, on lines 29-38, we issue the four queries to each of the anycasted recursive resolvers from each VP.\u00a0 These queries are asynchronous; we receive the answers as each Ark VP obtains a response.\u00a0 On lines 40-82, we process the responses, storing the results in a multi-dimensional python dictionary, which associates each Ark VPs with their anycast recursive resolver location, as well as the RTT between asking the query and obtaining the response.\u00a0 Finally, on lines 84-96, we dump the results out in a nicely formatted table that allows us to spot interesting patterns.<\/p>\n<p><code>01 <span style=\"color: #800080;\">import<\/span> argparse<br \/>\n02 <span style=\"color: #800080;\">import<\/span> datetime<br \/>\n03 <span style=\"color: #800080;\">import<\/span> ipaddress<br \/>\n04 <span style=\"color: #800080;\">import<\/span> random<br \/>\n05 <span style=\"color: #800080;\">import<\/span> re<br \/>\n06 <span style=\"color: #800080;\">from<\/span> scamper <span style=\"color: #800080;\">import<\/span> ScamperCtrl<br \/>\n07<br \/>\n08 <span style=\"color: #800080;\">def<\/span> _main():<br \/>\n09\u00a0\u00a0 <span style=\"color: #ff6600;\">parser<\/span> = argparse.ArgumentParser(description=<span style=\"color: #993300;\">'get public recursive locs'<\/span>)<br \/>\n10\u00a0\u00a0 parser.add_argument(<span style=\"color: #993300;\">'sockets'<\/span>)<br \/>\n11\u00a0\u00a0 <span style=\"color: #ff6600;\">args<\/span> = parser.parse_args()<br \/>\n12<br \/>\n13\u00a0\u00a0 ctrl = ScamperCtrl(remote_dir=args.sockets)<br \/>\n14<br \/>\n15\u00a0\u00a0 <span style=\"color: #ff0000;\"># pick an ark VP at random to issue the query that gets the mapping<\/span><br \/>\n16\u00a0\u00a0 <span style=\"color: #ff0000;\"># of google recursive IP to location<\/span><br \/>\n17\u00a0\u00a0 <span style=\"color: #ff6600;\">goog_nets<\/span> = {}<br \/>\n18\u00a0\u00a0 <span style=\"color: #ff6600;\">obj<\/span> = ctrl.do_dns(<span style=\"color: #993300;\">'locations.publicdns.goog'<\/span>,<br \/>\n19\u00a0\u00a0\u00a0\u00a0 inst=random.choice(ctrl.instances()),<br \/>\n20\u00a0\u00a0\u00a0\u00a0 qtype=<span style=\"color: #993300;\">'txt'<\/span>, tcp=True, sync=True)<br \/>\n21\u00a0\u00a0 <span style=\"color: #800080;\">if<\/span> obj <span style=\"color: #800080;\">is<\/span> None <span style=\"color: #800080;\">or<\/span> len(obj.ans_txts()) == 0:<br \/>\n22\u00a0\u00a0\u00a0\u00a0 <span style=\"color: #800080;\">print<\/span>(<span style=\"color: #993300;\">\"could not get google mapping\"<\/span>)<br \/>\n23\u00a0\u00a0\u00a0\u00a0 <span style=\"color: #800080;\">return<\/span><br \/>\n24\u00a0\u00a0 <span style=\"color: #800080;\">for<\/span> rr <span style=\"color: #800080;\">in<\/span> obj.ans_txts():<br \/>\n25\u00a0\u00a0\u00a0\u00a0 <span style=\"color: #800080;\">for<\/span> txt <span style=\"color: #800080;\">in<\/span> rr.txt:<br \/>\n26\u00a0\u00a0\u00a0 \u00a0\u00a0 <span style=\"color: #ff6600;\">net<\/span>, <span style=\"color: #ff6600;\">loc<\/span> = txt.split()<br \/>\n27\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 <span style=\"color: #ff6600;\">goog_nets<\/span>[ipaddress.ip_network(net)] = loc<br \/>\n28<br \/>\n29\u00a0\u00a0 <span style=\"color: #ff0000;\"># issue the magic queries to get the instance that answers the query<\/span><br \/>\n30\u00a0\u00a0 <span style=\"color: #800080;\">for<\/span> inst <span style=\"color: #800080;\">in<\/span> ctrl.instances():<br \/>\n31\u00a0\u00a0\u00a0\u00a0 ctrl.do_dns(<span style=\"color: #993300;\">'o-o.myaddr.l.google.com'<\/span>, server=<span style=\"color: #993300;\">'8.8.8.8'<\/span>, qtype=<span style=\"color: #993300;\">'txt'<\/span>,<br \/>\n32\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 attempts=2, wait_timeout=2, inst=inst)<br \/>\n33\u00a0\u00a0\u00a0\u00a0 ctrl.do_dns(<span style=\"color: #993300;\">'id.server'<\/span>, server=<span style=\"color: #993300;\">'1.1.1.1'<\/span>, qclass=<span style=\"color: #993300;\">'ch'<\/span>, qtype=<span style=\"color: #993300;\">'txt'<\/span>,<br \/>\n34\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 attempts=2, wait_timeout=2, inst=inst)<br \/>\n35\u00a0\u00a0\u00a0\u00a0 ctrl.do_dns(<span style=\"color: #993300;\">'id.server'<\/span>, server=<span style=\"color: #993300;\">'9.9.9.9'<\/span>, qclass=<span style=\"color: #993300;\">'ch'<\/span>, qtype=<span style=\"color: #993300;\">'txt'<\/span>,<br \/>\n36\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 attempts=2, wait_timeout=2, inst=inst)<br \/>\n37\u00a0\u00a0\u00a0\u00a0 ctrl.do_dns(<span style=\"color: #993300;\">'debug.opendns.com'<\/span>, server=<span style=\"color: #993300;\">'208.67.220.220'<\/span>, qtype=<span style=\"color: #993300;\">'txt'<\/span>,<br \/>\n38\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 attempts=2, wait_timeout=2, inst=inst)<br \/>\n39<br \/>\n40\u00a0\u00a0 <span style=\"color: #ff0000;\"># collect the data<\/span><br \/>\n41\u00a0\u00a0 <span style=\"color: #ff6600;\">data<\/span> = {}<br \/>\n42\u00a0\u00a0 <span style=\"color: #800080;\">for<\/span> obj <span style=\"color: #800080;\">in<\/span> ctrl.responses(timeout=datetime.timedelta(seconds=10)):<br \/>\n43\u00a0\u00a0\u00a0\u00a0 <span style=\"color: #ff6600;\">vp<\/span> = obj.inst.name<br \/>\n44\u00a0\u00a0\u00a0\u00a0 <span style=\"color: #800080;\">if<\/span> vp <span style=\"color: #800080;\">not in<\/span> data:<br \/>\n45\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 data[vp] = {}<br \/>\n46\u00a0\u00a0\u00a0\u00a0 <span style=\"color: #ff6600;\">dst<\/span> = str(obj.dst)<br \/>\n47\u00a0\u00a0\u00a0\u00a0 <span style=\"color: #800080;\">if<\/span>\u00a0dst <span style=\"color: #800080;\">in<\/span> data[vp]:<br \/>\n48\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 <span style=\"color: #800080;\">continue<\/span><br \/>\n49\u00a0\u00a0\u00a0\u00a0 data[vp][dst] = {}<br \/>\n50\u00a0\u00a0\u00a0\u00a0 data[vp][dst][<span style=\"color: #993300;\">'rtt'<\/span>] = obj.rtt<br \/>\n51<br \/>\n52\u00a0\u00a0\u00a0\u00a0 <span style=\"color: #800080;\">for<\/span> rr <span style=\"color: #800080;\">in<\/span> obj.ans_txts():<br \/>\n53\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 <span style=\"color: #800080;\">for<\/span> txt <span style=\"color: #800080;\">in<\/span> rr.txt:<br \/>\n54\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 <span style=\"color: #800080;\">if<\/span> dst == <span style=\"color: #993300;\">'8.8.8.8'<\/span>:<br \/>\n55\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 <span style=\"color: #ff0000;\"># google reports an IPv4 address that represents<\/span><br \/>\n56 \u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 <span style=\"color: #ff0000;\"># the site that answers the query. we then map<\/span><br \/>\n57 \u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 <span style=\"color: #ff0000;\"># that address to a location using the mapping<\/span><br \/>\n58 \u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 <span style=\"color: #ff0000;\"># returned by the locations TCP query.<\/span><br \/>\n59\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 <span style=\"color: #800080;\">try<\/span>:<br \/>\n60\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 <span style=\"color: #ff6600;\">addr<\/span> = ipaddress.ip_address(txt)<br \/>\n61\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 <span style=\"color: #800080;\">except<\/span> ValueError:<br \/>\n62\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 <span style=\"color: #800080;\">continue<\/span><br \/>\n63\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 <span style=\"color: #800080;\">for<\/span> net, loc <span style=\"color: #800080;\">in<\/span> goog_nets.items():<br \/>\n64\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 <span style=\"color: #800080;\">if<\/span> addr <span style=\"color: #800080;\">in<\/span> net:<br \/>\n65\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 data[vp][dst][<span style=\"color: #993300;\">'loc'<\/span>] = loc<br \/>\n66\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 <span style=\"color: #800080;\">break<\/span><br \/>\n67\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 <span style=\"color: #800080;\">elif<\/span> dst == <span style=\"color: #993300;\">'1.1.1.1'<\/span>:<br \/>\n68\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 <span style=\"color: #ff0000;\"># Cloudflare replies with a single TXT record<\/span><br \/>\n69\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 <span style=\"color: #ff0000;\"># containing an airport code<\/span><br \/>\n70\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 data[vp][dst][<span style=\"color: #993300;\">'loc'<\/span>] = txt<br \/>\n71\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 <span style=\"color: #800080;\">elif<\/span> dst == <span style=\"color: #993300;\">'9.9.9.9'<\/span>:<br \/>\n72\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 <span style=\"color: #ff0000;\"># Quad9 reports a hostname with an embedded<\/span><br \/>\n73\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 <span style=\"color: #ff0000;\"># airport code.<\/span><br \/>\n74\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 <span style=\"color: #ff6600;\">match<\/span> = re.search(<span style=\"color: #993300;\">\"\\\\.(.+?)\\\\.rrdns\\\\.pch\\\\.net\"<\/span>, txt)<br \/>\n75\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 <span style=\"color: #800080;\">if<\/span> match:<br \/>\n76\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 data[vp][dst][<span style=\"color: #993300;\">'loc'<\/span>] = match.group(1)<br \/>\n77\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 <span style=\"color: #800080;\">elif<\/span> dst == <span style=\"color: #993300;\">'208.67.220.220'<\/span>:<br \/>\n78\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 <span style=\"color: #ff0000;\"># opendns reports multiple TXT records; we want the one<\/span><br \/>\n79\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 <span style=\"color: #ff0000;\"># that looks like \"server r2005.syd\"<\/span><br \/>\n80\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 <span style=\"color: #ff6600;\">match<\/span> = re.search(<span style=\"color: #993300;\">\"^server .+\\\\.(.+?)$\"<\/span>, txt)<br \/>\n81\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 <span style=\"color: #800080;\">if<\/span> match:<br \/>\n82\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 data[vp][dst][<span style=\"color: #993300;\">'loc'<\/span>] = match.group(1)<br \/>\n83<br \/>\n84\u00a0\u00a0 <span style=\"color: #ff0000;\"># format the output<\/span><br \/>\n85\u00a0\u00a0 <span style=\"color: #800080;\">print<\/span>(<span style=\"color: #993300;\">\"{:15} {:&gt;13} {:&gt;13} {:&gt;13} {:&gt;13}\"<\/span>.format(<br \/>\n86\u00a0\u00a0\u00a0\u00a0 <span style=\"color: #993300;\">\"# vp\"<\/span>, <span style=\"color: #993300;\">\"google\"<\/span>, <span style=\"color: #993300;\">\"couldflare\"<\/span>, <span style=\"color: #993300;\">\"quad9\"<\/span>, <span style=\"color: #993300;\">\"opendns\"<\/span>))<br \/>\n87\u00a0\u00a0 <span style=\"color: #800080;\">for<\/span> vp, recs <span style=\"color: #800080;\">in<\/span> sorted(data.items()):<br \/>\n88\u00a0\u00a0\u00a0\u00a0 <span style=\"color: #ff6600;\">line<\/span> = f<span style=\"color: #993300;\">\"{vp:15}\"<\/span><br \/>\n89\u00a0\u00a0\u00a0\u00a0 <span style=\"color: #800080;\">for<\/span> rec <span style=\"color: #800080;\">in<\/span> (<span style=\"color: #993300;\">'8.8.8.8'<\/span>, <span style=\"color: #993300;\">'1.1.1.1'<\/span>, <span style=\"color: #993300;\">'9.9.9.9'<\/span>, <span style=\"color: #993300;\">'208.67.220.220'<\/span>):<br \/>\n90\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 <span style=\"color: #ff6600;\">cell<\/span> = <span style=\"color: #993300;\">\"\"<\/span><br \/>\n91\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 <span style=\"color: #800080;\">if<\/span> <span style=\"color: #993300;\">'loc'<\/span> <span style=\"color: #800080;\">in<\/span> recs[rec]:<br \/>\n92\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 <span style=\"color: #ff6600;\">rtt<\/span> = recs[rec][<span style=\"color: #993300;\">'rtt'<\/span>]<br \/>\n93\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 <span style=\"color: #ff6600;\">loc<\/span> = recs[rec][<span style=\"color: #993300;\">'loc'<\/span>]<br \/>\n94\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 <span style=\"color: #ff6600;\">cell<\/span> = f<span style=\"color: #993300;\">\"{loc} {rtt.total_seconds()*1000:5.1f}\"<\/span><br \/>\n95\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 <span style=\"color: #ff6600;\">line<\/span> += f<span style=\"color: #993300;\">\" {cell:&gt;13}\"<\/span><br \/>\n96\u00a0\u00a0\u00a0\u00a0 <span style=\"color: #800080;\">print<\/span>(line)<br \/>\n97<br \/>\n98 <span style=\"color: #800080;\">if<\/span> __name__ == <span style=\"color: #993300;\">\"__main__\"<\/span>:<br \/>\n99 \u00a0\u00a0  _main()<\/code><\/p>\n<p>The code runs quickly &#8212; no longer than 10 seconds (if one of the VPs is slow to report back), illustrating the capabilities of the Ark platform.<\/p>\n<p>The output of running this program is shown below. \u00a0We have highlighted cells where the RTT was at least 50ms larger than the minimum RTT to any of the large recursive resolvers for the given VP.\u00a0 These cells identify low-hanging fruit for operators, who could examine BGP routing policies with the goal of selecting better alternative paths.<\/p>\n<p><code># vp \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 google \u00a0 couldflare \u00a0 \u00a0 \u00a0 \u00a0 quad9 \u00a0 \u00a0 \u00a0opendns<br \/>\nabz-uk.ark \u00a0 \u00a0lhr\u00a0 24.4 \u00a0 \u00a0LHR\u00a0 16.5 \u00a0 \u00a0 lhr\u00a0 16.9 \u00a0 \u00a0lon\u00a0 16.4<br \/>\nabz2-uk.ark \u00a0 lhr\u00a0 23.4 \u00a0 \u00a0MAN\u00a0\u00a0 8.7 \u00a0 \u00a0 man\u00a0\u00a0 8.4 \u00a0 man1\u00a0\u00a0 8.5<br \/>\nacc-gh.ark \u00a0 \u00a0<span style=\"color: #0000ff;\">jnb 246.7 \u00a0 \u00a0JNB 167.3<\/span> \u00a0 \u00a0 acc\u00a0\u00a0 0.5 \u00a0 <span style=\"color: #0000ff;\">cpt1 236.6<\/span><br \/>\nadl-au.ark \u00a0 \u00a0mel\u00a0 28.1 \u00a0 \u00a0ADL\u00a0\u00a0 5.5 \u00a0 \u00a0 syd\u00a0 22.6 \u00a0 mel1\u00a0 14.0<br \/>\naep-ar.ark \u00a0 \u00a0scl\u00a0 29.4 \u00a0 \u00a0EZE\u00a0\u00a0 8.0 \u00a0 qaep2\u00a0\u00a0 4.6 \u00a0 sao1\u00a0 34.0<br \/>\naep2-ar.ark \u00a0 scl\u00a0 38.2 \u00a0 \u00a0EZE\u00a0\u00a0 6.6 \u00a0 qaep2\u00a0\u00a0 5.7 \u00a0 sao1\u00a0 42.5<br \/>\nakl-nz.ark \u00a0 \u00a0syd\u00a0  26.9 \u00a0 \u00a0AKL\u00a0\u00a0 2.6 \u00a0 \u00a0akl2\u00a0\u00a0 4.0 \u00a0 \u00a0syd\u00a0 26.1<br \/>\nakl2-nz.ark \u00a0 syd\u00a0  29.2 \u00a0 \u00a0AKL\u00a0\u00a0 4.9 \u00a0 \u00a0akl2\u00a0\u00a0 4.0 \u00a0 \u00a0syd\u00a0 26.9<br \/>\nams-gc.ark \u00a0 \u00a0grq\u00a0\u00a0 5.0 \u00a0 \u00a0FRA\u00a0\u00a0 6.3 \u00a0 \u00a0 ams\u00a0\u00a0 0.8 \u00a0 \u00a0ams\u00a0\u00a0 1.1<br \/>\nams3-nl.ark \u00a0 grq\u00a0\u00a0 6.0 \u00a0 \u00a0AMS\u00a0\u00a0 2.1 \u00a0 \u00a0 ams\u00a0\u00a0 1.3 \u00a0 \u00a0ams\u00a0\u00a0 1.9<br \/>\nams5-nl.ark \u00a0 grq\u00a0\u00a0 5.1 \u00a0 \u00a0AMS\u00a0\u00a0 1.2 \u00a0 \u00a0 ams\u00a0\u00a0 1.9 \u00a0 \u00a0ams\u00a0\u00a0 1.7<br \/>\nams7-nl.ark \u00a0 grq \u00a0  6.0 \u00a0 \u00a0AMS\u00a0\u00a0 2.4 \u00a0 \u00a0 ams\u00a0\u00a0 1.8 \u00a0 \u00a0ams\u00a0\u00a0 2.3<br \/>\nams8-nl.ark \u00a0 grq\u00a0 14.8 \u00a0 \u00a0AMS\u00a0 11.5 \u00a0 \u00a0 fra\u00a0 17.7 \u00a0 \u00a0ams\u00a0 11.8<br \/>\narn-se.ark \u00a0 \u00a0lpp\u00a0\u00a0 9.7 \u00a0 \u00a0ARN\u00a0\u00a0 2.0 \u00a0 \u00a0 arn\u00a0\u00a0 0.8 \u00a0 cph1\u00a0 10.5<br \/>\nasu-py.ark \u00a0 \u00a0<span style=\"color: #0000ff;\">scl\u00a0 55.4<\/span> \u00a0 \u00a0EZE\u00a0 22.6 \u00a0 \u00a0 asu\u00a0\u00a0 0.8 \u00a0 <span style=\"color: #0000ff;\">sao1\u00a0 57.0<\/span><br \/>\natl2-us.ark \u00a0 atl\u00a0\u00a0 9.8 \u00a0 \u00a0DFW\u00a0 23.6 \u00a0 qiad3 \u00a020.5 \u00a0 atl1 \u00a0 4.6<br \/>\natl3-us.ark \u00a0 atl\u00a0 22.7 \u00a0 \u00a0ATL\u00a0 13.1 \u00a0 \u00a0 atl \u00a017.0 \u00a0 atl1 \u00a019.7<br \/>\naus-us.ark \u00a0 \u00a0<span style=\"color: #0000ff;\">dfw\u00a0 80.7<\/span> \u00a0 \u00a0DFW\u00a0 56.6 \u00a0 \u00a0 dfw \u00a046.6 \u00a0 \u00a0dfw \u00a017.6<br \/>\navv-au.ark \u00a0 \u00a0<span style=\"color: #0000ff;\">mel 142.3<\/span> \u00a0 \u00a0MEL\u00a0\u00a0 9.4 \u00a0 \u00a0 syd \u00a022.6 \u00a0 mel1 \u00a0 8.5<br \/>\nbcn-es.ark \u00a0 \u00a0mad\u00a0 38.0 \u00a0 \u00a0BCN\u00a0 13.3 \u00a0 \u00a0 bcn \u00a0 0.5 \u00a0 mad1 \u00a0 9.8<br \/>\nbdl-us.ark \u00a0 \u00a0iad\u00a0 13.3 \u00a0 \u00a0EWR\u00a0\u00a0 5.0 \u00a0 \u00a0 lga \u00a0 4.9 \u00a0 \u00a0ash \u00a010.6<br \/>\nbed-us.ark \u00a0 \u00a0iad\u00a0 30.6 \u00a0 \u00a0BOS\u00a0 15.2 \u00a0 \u00a0 bos \u00a013.5 \u00a0 bos1 \u00a019.8<br \/>\nbeg-rs.ark \u00a0 \u00a0<span style=\"color: #0000ff;\">mil\u00a0 62.5<\/span> \u00a0 \u00a0BEG\u00a0\u00a0 1.2 \u00a0 \u00a0 beg \u00a0 0.7 \u00a0 otp1 \u00a012.9<br \/>\nbfi-us.ark \u00a0 \u00a0dls\u00a0 11.7 \u00a0 \u00a0SEA\u00a0\u00a0 3.8 \u00a0 <span style=\"color: #0000ff;\">xsjc1 \u00a096.9<\/span> \u00a0 \u00a0sea \u00a010.5<br \/>\nbjl-gm.ark \u00a0 \u00a0<span style=\"color: #0000ff;\">bru\u00a0 87.5 \u00a0 \u00a0CDG\u00a0 71.1<\/span> \u00a0 \u00a0 bjl \u00a0 6.7 \u00a0 <span style=\"color: #0000ff;\">cdg1 \u00a073.4<\/span><br \/>\nbna-us.ark \u00a0 \u00a0atl\u00a0 11.4 \u00a0 \u00a0BNA\u00a0\u00a0 9.0 \u00a0 \u00a0 atl \u00a0 9.5 \u00a0 atl1 \u00a0 9.3<br \/>\nbna2-us.ark \u00a0 cbf\u00a0 25.5 \u00a0 \u00a0ORD\u00a0 19.7 \u00a0 \u00a0 ord \u00a012.8 \u00a0 \u00a0chi \u00a012.8<br \/>\nbos6-us.ark \u00a0 iad\u00a0 17.6 \u00a0 \u00a0BOS\u00a0\u00a0 5.6 \u00a0 qiad3 \u00a015.5 \u00a0 bos1 \u00a0 5.7<br \/>\nbre-de.ark \u00a0 \u00a0grq\u00a0 21.4 \u00a0 \u00a0TXL\u00a0 23.1 \u00a0 \u00a0 ber \u00a017.2 \u00a0 \u00a0ams \u00a023.7<br \/>\nbtr-us.ark \u00a0 \u00a0dfw\u00a0 20.3 \u00a0 \u00a0ORD\u00a0 29.5 \u00a0 \u00a0 dfw \u00a013.2 \u00a0 \u00a0dfw \u00a011.4<br \/>\nbwi2-us.ark \u00a0 iad\u00a0 12.7 \u00a0 \u00a0IAD\u00a0\u00a0 4.4 \u00a0 qiad3 \u00a0 3.6 \u00a0 rst1 \u00a0 3.1<br \/>\ncdg-fr.ark \u00a0 \u00a0mil\u00a0 24.9 \u00a0 \u00a0MRS\u00a0\u00a0 1.5 \u00a0 \u00a0 mrs \u00a0 1.0 \u00a0 mrs1 \u00a011.6<br \/>\ncdg3-fr.ark \u00a0 bru\u00a0\u00a0 8.5 \u00a0 \u00a0CDG\u00a0\u00a0 3.9 \u00a0 \u00a0 ams \u00a013.7 \u00a0 cdg1 \u00a0 5.5<br \/>\ncgs-us.ark \u00a0 \u00a0iad\u00a0\u00a0 4.5 \u00a0 \u00a0EWR\u00a0\u00a0 7.9 \u00a0 \u00a0 iad \u00a0 2.2 \u00a0 \u00a0ash \u00a0 2.1<br \/>\ncjj-kr.ark \u00a0 \u00a0hkg\u00a0 63.4 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0qhnd2 \u00a070.7 \u00a0 \u00a0hkg \u00a047.3<br \/>\ncld4-us.ark \u00a0 lax\u00a0 22.7 \u00a0 \u00a0LAX \u00a015.7 \u00a0 \u00a0 <span style=\"color: #0000ff;\">bur 104.1<\/span> \u00a0 \u00a0lax \u00a014.3<br \/>\ncld5-us.ark \u00a0 lax\u00a0 52.6 \u00a0 \u00a0LAX \u00a020.7 \u00a0 \u00a0 <span style=\"color: #0000ff;\">bur 103.1<\/span> \u00a0 \u00a0lax \u00a021.9<br \/>\ncld6-us.ark \u00a0 lax\u00a0 14.5 \u00a0 \u00a0LAX \u00a0 5.2 \u00a0 qlax1 \u00a0 7.0 \u00a0 \u00a0lax \u00a0 6.0<br \/>\ncos-us.ark \u00a0 \u00a0cbf\u00a0 22.9 \u00a0 \u00a0DEN \u00a0 7.3 \u00a0 \u00a0 ord \u00a036.0 \u00a0 den1 \u00a012.6<br \/>\ndar-tz.ark \u00a0 \u00a0<span style=\"color: #0000ff;\">jnb 224.6<\/span> \u00a0 \u00a0NBO \u00a014.0 \u00a0 \u00a0 dar \u00a0 1.0 \u00a0 \u00a0jnb \u00a051.1<br \/>\ndar2-tz.ark \u00a0 <span style=\"color: #0000ff;\">jnb 223.0<\/span> \u00a0 \u00a0DAR \u00a0 0.9 \u00a0 \u00a0 dar \u00a0 0.9 \u00a0 \u00a0jnb \u00a048.0<br \/>\ndmk-th.ark \u00a0 \u00a0sin\u00a0 32.2 \u00a0 \u00a0SIN \u00a028.0 \u00a0 \u00a0 bkk \u00a0 2.4 \u00a0 <span style=\"color: #0000ff;\">nrt2 \u00a095.0<\/span><br \/>\ndtw2-us.ark \u00a0 cbf\u00a0 18.1 \u00a0 \u00a0DTW \u00a0 4.6 \u00a0 \u00a0 dtw \u00a0 4.2 \u00a0 \u00a0chi \u00a010.7<br \/>\ndub-ie.ark \u00a0 \u00a0lhr\u00a0 18.9 \u00a0 \u00a0DUB \u00a0 1.2 \u00a0 \u00a0 dub \u00a0 0.7 \u00a0 dub1 \u00a0 0.7<br \/>\ndub2-ie.ark \u00a0 lhr\u00a0 18.7 \u00a0 \u00a0DUB \u00a0 1.8 \u00a0 \u00a0 dub \u00a0 1.1 \u00a0 dub1 \u00a0 1.2<br \/>\ndub3-ie.ark \u00a0 lhr\u00a0 35.5 \u00a0 \u00a0ZRH \u00a045.6 \u00a0 \u00a0 dub \u00a016.9 \u00a0 dub1 \u00a011.6<br \/>\nens-nl.ark \u00a0 \u00a0grq\u00a0\u00a0 9.3 \u00a0 \u00a0AMS \u00a0 5.2 \u00a0 \u00a0 ams \u00a0 4.0 \u00a0 \u00a0ams \u00a0 4.9<br \/>\neug-us.ark \u00a0 \u00a0dls\u00a0 15.7 \u00a0 \u00a0SJC \u00a018.3 \u00a0 \u00a0 sea \u00a0 6.5 \u00a0 \u00a0sea \u00a0 6.5<br \/>\nfra-gc.ark \u00a0 \u00a0fra\u00a0\u00a0 9.1 \u00a0 \u00a0FRA \u00a0 1.1 \u00a0 \u00a0 fra \u00a0 1.1 \u00a0 \u00a0fra \u00a0 1.1<br \/>\ngig-br.ark \u00a0 \u00a0<span style=\"color: #0000ff;\">gru 125.2<\/span> \u00a0 \u00a0GIG \u00a0 2.2 \u00a0 qrio1 \u00a0 1.4 \u00a0 rio1 \u00a0 1.1<br \/>\ngva-ch.ark \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 ZRH\u00a0\u00a0 5.3 \u00a0 \u00a0 gva \u00a0 1.0 \u00a0 \u00a0fra \u00a010.8<br \/>\ngye-ec.ark \u00a0 \u00a0<span style=\"color: #0000ff;\">chs 128.7<\/span> \u00a0 \u00a0MIA \u00a066.8 \u00a0 quio2 \u00a010.7 \u00a0 \u00a0<span style=\"color: #0000ff;\">mia \u00a077.1<\/span><br \/>\nham-de.ark \u00a0 \u00a0grq \u00a019.7 \u00a0 \u00a0HAM \u00a0 8.5 \u00a0 \u00a0 ber \u00a011.0 \u00a0 \u00a0fra \u00a017.7<br \/>\nher2-gr.ark \u00a0 <span style=\"color: #0000ff;\">mil \u00a064.9<\/span> \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0ath \u00a0 7.5 \u00a0 mil1 \u00a032.6<br \/>\nhkg4-cn.ark \u00a0 tpe \u00a013.6 \u00a0 \u00a0HKG \u00a0 1.0 \u00a0 qhkg3 \u00a0 4.9 \u00a0 \u00a0hkg \u00a0 9.5<br \/>\nhkg5-cn.ark \u00a0 hkg \u00a016.3 \u00a0 \u00a0HKG \u00a0 2.6 \u00a0 qhkg3 \u00a0 3.9 \u00a0 \u00a0hkg \u00a0 3.6<br \/>\nhlz2-nz.ark \u00a0 syd \u00a040.9 \u00a0 \u00a0AKL \u00a016.9 \u00a0 \u00a0 akl \u00a013.8 \u00a0 \u00a0syd \u00a038.2<br \/>\nhnd-jp.ark \u00a0 \u00a0nrt \u00a0 6.5 \u00a0 \u00a0NRT \u00a0 3.4 \u00a0 <span style=\"color: #0000ff;\">qhnd2 \u00a080.3<\/span> \u00a0 \u00a0nrt \u00a0 3.6<br \/>\nhnl-us.ark \u00a0 \u00a0<span style=\"color: #0000ff;\">dls \u00a082.3<\/span> \u00a0 \u00a0HNL \u00a0 1.1 \u00a0 \u00a0 <span style=\"color: #0000ff;\">sea \u00a075.2 \u00a0 \u00a0sea \u00a075.3<\/span><br \/>\niev-ua.ark \u00a0 \u00a0waw \u00a045.5 \u00a0 \u00a0FRA \u00a029.8 \u00a0 qwaw2 \u00a014.3 \u00a0 wrw1 \u00a014.9<br \/>\nigx2-us.ark \u00a0 iad \u00a016.1 \u00a0 \u00a0EWR \u00a016.9 \u00a0 qiad3 \u00a011.5 \u00a0 atl1 \u00a011.8<br \/>\nind-us.ark \u00a0 \u00a0atl \u00a025.1 \u00a0 \u00a0IND \u00a0 1.1 \u00a0 \u00a0 ord \u00a0 8.5 \u00a0 atl1 \u00a011.0<br \/>\nixc-in.ark \u00a0 \u00a0<span style=\"color: #0000ff;\">del \u00a078.8<\/span> \u00a0 \u00a0DEL \u00a0 0.8 \u00a0 qsin1 \u00a0 0.7 \u00a0 mum2 \u00a0 0.7<br \/>\njfk-us.ark \u00a0 \u00a0iad \u00a0 9.6 \u00a0 \u00a0EWR \u00a0 1.5 \u00a0 \u00a0 lga \u00a0 0.6 \u00a0 \u00a0nyc \u00a0 1.0<br \/>\nkgl-rw.ark \u00a0 \u00a0<span style=\"color: #0000ff;\">jnb 231.6<\/span> \u00a0 \u00a0NBO \u00a015.0 \u00a0 \u00a0 kgl \u00a0 3.3 \u00a0 \u00a0<span style=\"color: #0000ff;\">jnb \u00a073.6<\/span><br \/>\nktm-np.ark \u00a0 \u00a0<span style=\"color: #0000ff;\">del \u00a098.6<\/span> \u00a0 \u00a0DEL \u00a030.4 \u00a0 \u00a0 ktm \u00a0 7.6 \u00a0 <span style=\"color: #0000ff;\">mum1 \u00a094.4<\/span><br \/>\nlas-us.ark \u00a0 \u00a0lax \u00a015.5 \u00a0 \u00a0LAX \u00a0 8.4 \u00a0 \u00a0 pao \u00a015.9 \u00a0 \u00a0lax \u00a0 8.2<br \/>\nlax3-us.ark \u00a0 lax \u00a010.5 \u00a0 \u00a0LAX \u00a0 3.0 \u00a0 \u00a0 bur \u00a0 2.0 \u00a0 \u00a0lax \u00a0 2.0<br \/>\nlcy2-uk.ark \u00a0 lhr \u00a011.5 \u00a0 \u00a0MAN \u00a0 7.4 \u00a0 \u00a0 lhr \u00a011.2 \u00a0 \u00a0lon \u00a0 2.2<br \/>\nlej-de.ark \u00a0 \u00a0fra \u00a021.2 \u00a0 \u00a0FRA \u00a0 9.7 \u00a0 \u00a0 fra \u00a012.5 \u00a0 \u00a0fra \u00a0 9.6<br \/>\nlex-us.ark \u00a0 \u00a0iad \u00a017.9 \u00a0 \u00a0IAD \u00a015.7 \u00a0 \u00a0 iad \u00a017.3 \u00a0 atl1 \u00a025.9<br \/>\nlgw-uk.ark \u00a0 \u00a0lhr \u00a031.3 \u00a0 \u00a0LHR \u00a024.2 \u00a0 \u00a0 lhr \u00a024.6 \u00a0 \u00a0lon \u00a023.6<br \/>\nlhe2-pk.ark \u00a0 <span style=\"color: #0000ff;\">dia 195.0<\/span> \u00a0 \u00a0KHI \u00a035.0 \u00a0 <span style=\"color: #0000ff;\">qsin4 113.1 \u00a0 \u00a0sin 130.6<\/span><br \/>\nlis-pt.ark \u00a0 \u00a0mad \u00a033.0 \u00a0 \u00a0LIS \u00a0 4.5 \u00a0 \u00a0 lis \u00a0 3.9 \u00a0 mad1 \u00a018.0<br \/>\nlke2-us.ark \u00a0 dls \u00a021.7 \u00a0 \u00a0SEA \u00a021.4 \u00a0 \u00a0 sea \u00a015.1 \u00a0 \u00a0sea \u00a011.7<br \/>\nlun-zm.ark \u00a0 \u00a0<span style=\"color: #0000ff;\">jnb 189.9<\/span> \u00a0 \u00a0JNB \u00a032.2 \u00a0 \u00a0 jnb \u00a023.3 \u00a0 \u00a0jnb \u00a023.3<br \/>\nlwc-us.ark \u00a0 \u00a0tul \u00a018.0 \u00a0 \u00a0MCI \u00a0 1.4 \u00a0 <span style=\"color: #0000ff;\">xsjc1 106.3<\/span> \u00a0 \u00a0dfw \u00a010.4<br \/>\nlwc2-us.ark \u00a0 dfw \u00a024.4 \u00a0 \u00a0DFW \u00a015.7 \u00a0 qlax1 \u00a046.9 \u00a0 \u00a0dfw \u00a016.5<br \/>\nmdw-us.ark \u00a0 \u00a0cbf \u00a025.7 \u00a0 \u00a0ORD \u00a0 7.0 \u00a0 \u00a0 ord \u00a0 3.4 \u00a0 \u00a0chi \u00a0 4.4<br \/>\nmed2-co.ark \u00a0 <span style=\"color: #0000ff;\">mrn \u00a096.4<\/span> \u00a0 \u00a0MIA \u00a050.7 \u00a0 qbog1 \u00a022.7 \u00a0 \u00a0mia \u00a048.9<br \/>\nmhg-de.ark \u00a0 \u00a0fra \u00a030.7 \u00a0 \u00a0FRA \u00a019.1 \u00a0 \u00a0 fra \u00a021.4 \u00a0 \u00a0fra \u00a018.4<br \/>\nmia-gc.ark \u00a0 \u00a0mrn \u00a019.7 \u00a0 \u00a0MIA \u00a0 1.1 \u00a0 \u00a0 mia \u00a0 1.0 \u00a0 \u00a0mia \u00a0 0.6<br \/>\nmnl-ph.ark \u00a0 \u00a0<span style=\"color: #0000ff;\">hkg \u00a087.9<\/span> \u00a0 \u00a0MNL \u00a0 1.8 \u00a0 qsin1 \u00a050.8 \u00a0 \u00a0<span style=\"color: #0000ff;\">hkg \u00a075.8<\/span><br \/>\nmnz-us.ark \u00a0 \u00a0iad \u00a013.4 \u00a0 \u00a0IAD \u00a0 5.8 \u00a0 qiad3 \u00a0 5.2 \u00a0 rst1 \u00a0 4.0<br \/>\nmru-mu.ark \u00a0 \u00a0<span style=\"color: #0000ff;\">jnb 206.1<\/span> \u00a0 \u00a0JNB \u00a043.1 \u00a0 \u00a0 mru \u00a0 1.0 \u00a0 \u00a0jnb \u00a043.3<br \/>\nmsy-us.ark \u00a0 \u00a0dfw \u00a034.4 \u00a0 \u00a0DFW \u00a021.9 \u00a0 qlax1 \u00a055.2 \u00a0 \u00a0dfw \u00a023.0<br \/>\nmty-mx.ark \u00a0 \u00a0tul \u00a044.1 \u00a0 \u00a0MFE \u00a0 4.5 \u00a0 qiad3 \u00a039.6 \u00a0 \u00a0dfw \u00a016.7<br \/>\nmuc-de.ark \u00a0 \u00a0fra \u00a030.3 \u00a0 \u00a0FRA \u00a0 9.1 \u00a0 \u00a0 fra \u00a0 8.8 \u00a0 \u00a0fra \u00a0 8.9<br \/>\nmuc3-de.ark \u00a0 zrh \u00a025.9 \u00a0 \u00a0MUC \u00a0 6.1 \u00a0 \u00a0 fra \u00a011.0 \u00a0 \u00a0fra \u00a012.2<br \/>\nnap2-it.ark \u00a0 mil \u00a037.8 \u00a0 \u00a0MXP \u00a019.8 \u00a0 \u00a0 fra \u00a038.0 \u00a0 mil1 \u00a015.2<br \/>\nnbo-ke.ark \u00a0 \u00a0<span style=\"color: #0000ff;\">jnb 220.5<\/span> \u00a0 \u00a0NBO \u00a0 2.4 \u00a0 \u00a0 nbo \u00a0 2.2 \u00a0 \u00a0<span style=\"color: #0000ff;\">jnb \u00a060.7<\/span><br \/>\nnic-cy.ark \u00a0 \u00a0<span style=\"color: #0000ff;\">mil \u00a061.3<\/span> \u00a0 \u00a0LCA \u00a0 1.0 \u00a0 \u00a0 mrs \u00a035.2 \u00a0 mrs1 \u00a035.4<br \/>\nnrn-nl.ark \u00a0 \u00a0grq \u00a0 8.6 \u00a0 \u00a0AMS \u00a0 5.5 \u00a0 \u00a0 ams \u00a0 2.9 \u00a0 \u00a0ams \u00a0 3.1<br \/>\nnrt-jp.ark \u00a0 \u00a0nrt \u00a0 4.8 \u00a0 \u00a0NRT \u00a0 1.2 \u00a0 \u00a0 <span style=\"color: #0000ff;\">hkg 101.9<\/span> \u00a0 nrt2 \u00a0 1.0<br \/>\nnrt3-jp.ark \u00a0 nrt \u00a0 6.5 \u00a0 \u00a0NRT \u00a0 3.5 \u00a0 \u00a0 <span style=\"color: #0000ff;\">pao 101.7<\/span> \u00a0 nrt2 \u00a0 3.5<br \/>\noak5-us.ark \u00a0 lax \u00a019.3 \u00a0 \u00a0SJC \u00a0 5.9 \u00a0 \u00a0sjc0 \u00a0 4.4 \u00a0 \u00a0pao \u00a0 4.4<br \/>\nokc-us.ark \u00a0 \u00a0dfw \u00a0 9.6 \u00a0 \u00a0MCI \u00a0 9.6 \u00a0 \u00a0 dal \u00a0 8.2 \u00a0 \u00a0dfw \u00a0 7.3<br \/>\nord-us.ark \u00a0 \u00a0cbf \u00a013.0 \u00a0 \u00a0ORD \u00a0 2.9 \u00a0 \u00a0 iad \u00a019.0 \u00a0 \u00a0chi \u00a0 1.6<br \/>\nory4-fr.ark \u00a0 bru \u00a0 6.5 \u00a0 \u00a0CDG \u00a0 2.0 \u00a0 \u00a0 cdg \u00a0 1.4 \u00a0 cdg1 \u00a0 1.7<br \/>\nory6-fr.ark \u00a0 bru \u00a0 6.4 \u00a0 \u00a0LHR \u00a0 8.8 \u00a0 \u00a0 lhr \u00a0 8.4 \u00a0 \u00a0lon \u00a0 8.6<br \/>\nory7-fr.ark \u00a0 bru \u00a0 7.7 \u00a0 \u00a0CDG \u00a0 4.0 \u00a0 \u00a0 cdg \u00a0 5.0 \u00a0 cdg1 \u00a0 4.0<br \/>\nory8-fr.ark \u00a0 bru \u00a0 6.3 \u00a0 \u00a0CDG \u00a0 2.0 \u00a0 \u00a0 lhr \u00a025.7 \u00a0 \u00a0lon \u00a0 9.4<br \/>\nosl-no.ark \u00a0 \u00a0lpp \u00a046.5 \u00a0 \u00a0OSL \u00a0 0.9 \u00a0 \u00a0 osl \u00a025.8 \u00a0 sto1 \u00a0 9.0<br \/>\npbh2-bt.ark \u00a0 <span style=\"color: #0000ff;\">bom 105.2<\/span> \u00a0 \u00a0<span style=\"color: #0000ff;\">MAA \u00a092.0<\/span> \u00a0 \u00a0 pbh \u00a0 1.8 \u00a0 \u00a0<span style=\"color: #0000ff;\">sin \u00a091.7<\/span><br \/>\nper-au.ark \u00a0 \u00a0syd \u00a048.9 \u00a0 \u00a0PER \u00a0 2.0 \u00a0 \u00a0 per \u00a0 1.2 \u00a0 \u00a0syd \u00a045.3<br \/>\nper2-au.ark \u00a0 <span style=\"color: #0000ff;\">syd 140.0<\/span> \u00a0 \u00a0PER \u00a0 2.5 \u00a0 \u00a0 per \u00a0 1.5 \u00a0 \u00a0syd \u00a044.9<br \/>\nphl-us.ark \u00a0 \u00a0iad \u00a015.9 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0iad \u00a014.0 \u00a0 rst1 \u00a015.9<br \/>\npna-es.ark \u00a0 \u00a0mad \u00a033.9 \u00a0 \u00a0BCN \u00a013.5 \u00a0 \u00a0 bcn \u00a013.3 \u00a0 mad1 \u00a019.3<br \/>\nprg-cz.ark \u00a0 \u00a0fra \u00a016.9 \u00a0 \u00a0PRG \u00a0 1.1 \u00a0 qbts1 \u00a0 5.9 \u00a0 prg1 \u00a0 0.6<br \/>\nprg2-cz.ark \u00a0 fra \u00a029.8 \u00a0 \u00a0PRG \u00a0 1.7 \u00a0 qfra3 \u00a014.0 \u00a0 prg1 \u00a0 1.5<br \/>\npry-za.ark \u00a0 \u00a0<span style=\"color: #0000ff;\">jnb 167.3<\/span> \u00a0 \u00a0JNB \u00a0 1.2 \u00a0 \u00a0 jnb \u00a0 0.6 \u00a0 cpt1 \u00a018.4<br \/>\npuw-ru.ark \u00a0 \u00a0lpp \u00a018.2 \u00a0 \u00a0DME \u00a0 1.5 \u00a0 \u00a0 <span style=\"color: #0000ff;\">beg \u00a067.1<\/span> \u00a0 \u00a0fra \u00a034.3<br \/>\npvu-us.ark \u00a0 \u00a0lax \u00a025.2 \u00a0 \u00a0SLC \u00a0 3.8 \u00a0 \u00a0 slc \u00a0 2.7 \u00a0 \u00a0sea \u00a018.4<br \/>\nrdu-us.ark \u00a0 \u00a0iad \u00a0 9.5 \u00a0 \u00a0IAD \u00a0 8.1 \u00a0 \u00a0 iad \u00a0 7.7 \u00a0 \u00a0ash \u00a0 8.6<br \/>\nrdu2-us.ark \u00a0 iad \u00a011.3 \u00a0 \u00a0IAD \u00a0 8.1 \u00a0 \u00a0 iad \u00a0 8.5 \u00a0 \u00a0ash \u00a0 8.6<br \/>\nrdu3-us.ark \u00a0 iad \u00a027.5 \u00a0 \u00a0IAD \u00a018.6 \u00a0 \u00a0 iad \u00a018.4 \u00a0 atl1 \u00a023.8<br \/>\nrkv-is.ark \u00a0 \u00a0lhr \u00a049.0 \u00a0 \u00a0KEF \u00a0 2.0 \u00a0 \u00a0 kef \u00a0 0.8 \u00a0 dub1 \u00a023.0<br \/>\nsan-us.ark \u00a0 \u00a0lax \u00a010.4 \u00a0 \u00a0LAX \u00a0 4.7 \u00a0 \u00a0 <span style=\"color: #0000ff;\">bur \u00a087.2<\/span> \u00a0 \u00a0lax \u00a0 3.1<br \/>\nsan2-us.ark \u00a0 lax \u00a039.0 \u00a0 \u00a0LAX \u00a0 6.5 \u00a0 qlax1 \u00a0 7.5 \u00a0 \u00a0lax \u00a0 5.6<br \/>\nsan4-us.ark \u00a0 lax \u00a026.6 \u00a0 \u00a0LAX \u00a020.2 \u00a0 \u00a0 <span style=\"color: #0000ff;\">bur 106.8<\/span> \u00a0 \u00a0lax \u00a017.3<br \/>\nsao-br.ark \u00a0 \u00a0<span style=\"color: #0000ff;\">gru 117.3<\/span> \u00a0 \u00a0GRU \u00a0 2.5 \u00a0 qgru1 \u00a0 1.3 \u00a0 rio1 \u00a0 9.6<br \/>\nscq-es.ark \u00a0 \u00a0mad \u00a031.7 \u00a0 \u00a0MAD \u00a011.0 \u00a0 \u00a0 mad \u00a010.8 \u00a0 mad1 \u00a011.3<br \/>\nsea3-us.ark \u00a0 dls \u00a010.1 \u00a0 \u00a0SEA \u00a0 3.9 \u00a0 \u00a0 pao \u00a024.6 \u00a0 \u00a0sea \u00a0 3.0<br \/>\nsin-gc.ark \u00a0 \u00a0sin \u00a0 4.0 \u00a0 \u00a0SIN \u00a0 1.5 \u00a0 <span style=\"color: #0000ff;\">qsin1 \u00a093.5<\/span> \u00a0 \u00a0sin \u00a0 1.1<br \/>\nsin-sg.ark \u00a0 \u00a0sin \u00a0 3.2 \u00a0 \u00a0SIN \u00a0 2.3 \u00a0 qsin1 \u00a012.2 \u00a0 \u00a0sin \u00a0 0.7<br \/>\nsjc2-us.ark \u00a0 lax \u00a015.2 \u00a0 \u00a0SJC \u00a0 1.4 \u00a0 \u00a0sjc0 \u00a0 0.5 \u00a0 \u00a0pao \u00a0 2.1<br \/>\nsjj-ba.ark \u00a0 \u00a0<span style=\"color: #0000ff;\">waw \u00a071.1<\/span> \u00a0 \u00a0BUD \u00a057.5 \u00a0 \u00a0 <span style=\"color: #0000ff;\">vie 213.3<\/span> \u00a0 mil1 \u00a089.4<br \/>\nsjo-cr.ark \u00a0 \u00a0<span style=\"color: #0000ff;\">chs \u00a063.0<\/span> \u00a0 \u00a0SJO \u00a0 2.2 \u00a0 \u00a0 mia \u00a051.8 \u00a0 \u00a0<span style=\"color: #0000ff;\">mia \u00a078.6<\/span><br \/>\nsnn-ie.ark \u00a0 \u00a0lhr \u00a020.4 \u00a0 \u00a0DUB \u00a0 4.4 \u00a0 \u00a0 dub \u00a0 3.9 \u00a0 dub1 \u00a0 3.9<br \/>\nsql-us.ark \u00a0 \u00a0lax \u00a019.6 \u00a0 \u00a0SJC \u00a0 2.2 \u00a0 \u00a0 pao \u00a0 1.2 \u00a0 \u00a0pao \u00a0 0.9<br \/>\nstx-vi.ark \u00a0 \u00a0chs \u00a038.3 \u00a0 \u00a0MIA \u00a026.4 \u00a0 \u00a0 mia \u00a025.5 \u00a0 \u00a0mia \u00a025.1<br \/>\nsvo2-ru.ark \u00a0 lpp \u00a022.4 \u00a0 \u00a0DME \u00a0 5.8 \u00a0 \u00a0 fra \u00a041.1 \u00a0 \u00a0fra \u00a038.2<br \/>\nswu-kr.ark \u00a0 \u00a0<span style=\"color: #0000ff;\">hkg \u00a077.6<\/span> \u00a0 \u00a0ICN \u00a0 6.5 \u00a0 <span style=\"color: #0000ff;\">qsin1 \u00a076.9<\/span> \u00a0 nrt2 \u00a038.5<br \/>\nsyd3-au.ark \u00a0 syd \u00a0 4.8 \u00a0 \u00a0SYD \u00a0 0.9 \u00a0 \u00a0 syd \u00a0 1.0 \u00a0 \u00a0syd \u00a0 0.5<br \/>\ntij-mx.ark \u00a0 \u00a0lax \u00a015.8 \u00a0 \u00a0LAX \u00a0 6.6 \u00a0 qlax1 \u00a0 6.6 \u00a0 \u00a0lax \u00a0 5.6<br \/>\ntlv-il.ark \u00a0 \u00a0<span style=\"color: #0000ff;\">mil \u00a080.2<\/span> \u00a0 \u00a0MRS \u00a043.6 \u00a0 \u00a0 tlv \u00a0 2.0 \u00a0 mil1 \u00a050.5<br \/>\ntlv3-il.ark \u00a0 <span style=\"color: #0000ff;\">mil \u00a064.2<\/span> \u00a0 \u00a0TLV \u00a0 2.1 \u00a0 \u00a0 tlv \u00a0 2.1 \u00a0 tlv1 \u00a0 3.0<br \/>\ntnr-mg.ark \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 <span style=\"color: #0000ff;\">JNB 215.7<\/span> \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0<span style=\"color: #0000ff;\">jnb 199.1<\/span><br \/>\ntpe-tw.ark \u00a0 \u00a0tpe \u00a010.3 \u00a0 \u00a0TPE \u00a0 5.2 \u00a0 \u00a0 tpe \u00a0 3.1 \u00a0 \u00a0<span style=\"color: #0000ff;\">sin \u00a074.4<\/span><br \/>\nvdp-dk.ark \u00a0 \u00a0lpp \u00a021.9 \u00a0 \u00a0CPH \u00a0 5.6 \u00a0 \u00a0 arn \u00a013.4 \u00a0 cph1 \u00a0 5.4<br \/>\nvie-at.ark \u00a0 \u00a0fra \u00a022.5 \u00a0 \u00a0FRA \u00a013.8 \u00a0 \u00a0 vie \u00a0 2.1 \u00a0 prg1 \u00a0 6.5<br \/>\nwaw-pl.ark \u00a0 \u00a0waw \u00a020.1 \u00a0 \u00a0HAM \u00a031.3 \u00a0 qwaw2 \u00a0 1.3 \u00a0 wrw1 \u00a0 0.9<br \/>\nwbu-us.ark \u00a0 \u00a0cbf \u00a013.4 \u00a0 \u00a0DEN \u00a0 2.7 \u00a0 \u00a0 den \u00a0 1.8 \u00a0 den1 \u00a0 1.5<br \/>\nwlg2-nz.ark \u00a0 syd \u00a035.3 \u00a0 \u00a0AKL \u00a017.0 \u00a0 \u00a0akl2 \u00a016.5 \u00a0 \u00a0syd \u00a032.4<br \/>\nygk-ca.ark \u00a0 \u00a0yyz \u00a029.5 \u00a0 \u00a0YYZ \u00a016.7 \u00a0 \u00a0 iad \u00a035.5 \u00a0 \u00a0yyz \u00a016.1<br \/>\nyyc-ca.ark \u00a0 \u00a0dls \u00a026.5 \u00a0 \u00a0YYC \u00a0 4.6 \u00a0 \u00a0 sea \u00a021.8 \u00a0 \u00a0yvr \u00a016.7<br \/>\nzrh-ch.ark \u00a0 \u00a0zrh \u00a014.5 \u00a0 \u00a0ZRH \u00a0 1.1 \u00a0 \u00a0zrh2 \u00a0 0.6 \u00a0 mil1 \u00a0 8.1<br \/>\nzrh2-ch.ark \u00a0 zrh \u00a016.2 \u00a0 \u00a0ZRH \u00a0 1.1 \u00a0 \u00a0zrh2 \u00a0 1.0 \u00a0 \u00a0fra \u00a0 6.8<br \/>\nzrh4-ch.ark \u00a0 zrh \u00a015.8 \u00a0 \u00a0ZRH \u00a0 1.5 \u00a0 \u00a0zrh2 \u00a0 0.8 \u00a0 mil1 \u00a0 9.0<\/code><\/p>\n<p>&nbsp;<\/p>\n","protected":false},"excerpt":{"rendered":"<p>This is the third in a series of essays (two earlier blog posts [1, 2]) about CAIDA&#8217;s new effort to reduce the barrier to performing a variety of Internet measurements. We were recently asked about running Trufflehunter, which infers the usage properties of rare domain names on the Internet by cache snooping public recursive resolvers, [&hellip;]<\/p>\n","protected":false},"author":14,"featured_media":0,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":[],"categories":[1],"tags":[],"coauthors":[33],"_links":{"self":[{"href":"https:\/\/blog.caida.org\/best_available_data\/wp-json\/wp\/v2\/posts\/5342"}],"collection":[{"href":"https:\/\/blog.caida.org\/best_available_data\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/blog.caida.org\/best_available_data\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/blog.caida.org\/best_available_data\/wp-json\/wp\/v2\/users\/14"}],"replies":[{"embeddable":true,"href":"https:\/\/blog.caida.org\/best_available_data\/wp-json\/wp\/v2\/comments?post=5342"}],"version-history":[{"count":33,"href":"https:\/\/blog.caida.org\/best_available_data\/wp-json\/wp\/v2\/posts\/5342\/revisions"}],"predecessor-version":[{"id":5377,"href":"https:\/\/blog.caida.org\/best_available_data\/wp-json\/wp\/v2\/posts\/5342\/revisions\/5377"}],"wp:attachment":[{"href":"https:\/\/blog.caida.org\/best_available_data\/wp-json\/wp\/v2\/media?parent=5342"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/blog.caida.org\/best_available_data\/wp-json\/wp\/v2\/categories?post=5342"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/blog.caida.org\/best_available_data\/wp-json\/wp\/v2\/tags?post=5342"},{"taxonomy":"author","embeddable":true,"href":"https:\/\/blog.caida.org\/best_available_data\/wp-json\/wp\/v2\/coauthors?post=5342"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}