<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
  <channel>
    <title>Personal blog of Anurag Bhatia</title>
    <link>https://anuragbhatia.com/</link>
    <description>Recent content on Personal blog of Anurag Bhatia</description>
    <generator>Hugo -- gohugo.io</generator>
    <language>en-us</language>
    <lastBuildDate>Thu, 06 Aug 2026 03:18:07 +0530</lastBuildDate><atom:link href="https://anuragbhatia.com/index.xml" rel="self" type="application/rss+xml" />
    <item>
      <title>Fascinating history of transit-free tier 1 networks</title>
      <link>https://anuragbhatia.com/post/2026/08/history-of-transit-free-networks/</link>
      <pubDate>Thu, 06 Aug 2026 03:18:07 +0530</pubDate>
      
      <guid>https://anuragbhatia.com/post/2026/08/history-of-transit-free-networks/</guid>
      <description>&lt;p&gt;&lt;img src=&#34;https://cdn.anuragbhatia.com/web/post/2026/08/Night-story-on-tier1-networks.png&#34; alt=&#34;&#34;&gt;&lt;/p&gt;
&lt;p&gt;I find the concept of transit-free / Tier 1 networks fascinating. These are networks which, by definition, are transit-free. They do not have any transit and can reach the entire routing table just through peering relationships. The importance of these networks has reduced over time as more and more peering happens directly between eyeball networks and content networks. But regardless, I always find it fascinating that these networks effectively define the full autonomy of the internet routing table. Together with the trust in 13 magical root DNS servers and these transit-free networks define what we call &amp;ldquo;the internet&amp;rdquo; today.&lt;/p&gt;
&lt;p&gt;I was once chatting with my friend and guru &lt;a href=&#34;https://mahtin.net&#34;&gt;Martin Levy&lt;/a&gt; &lt;em&gt;(now happily retired)&lt;/em&gt; about which networks were possibly transit-free when the internet started. He suggested that Wikipedia history on Tier 1 networks has many of them. The challenge with the Wikipedia page on Tier 1 networks is that the &lt;a href=&#34;https://en.wikipedia.org/w/index.php?title=Tier_1_network&amp;amp;oldid=28256391&#34;&gt;list of transit-free networks appears on 14 Nov 2005&lt;/a&gt;. This leaves a gap around which networks were transit-free before Nov 2005.&lt;/p&gt;
&lt;p&gt;&lt;br /&gt;&lt;br /&gt;&lt;/p&gt;
&lt;h3 id=&#34;before-nov-2005-nov-2005-and-till-now&#34;&gt;Before Nov 2005, Nov 2005 and till now&lt;/h3&gt;
&lt;p&gt;I had an email exchange with &lt;a href=&#34;https://en.wikipedia.org/wiki/Randy_Bush_(scientist)&#34;&gt;Mr Randy Bush&lt;/a&gt; and he kindly replied with some hints. According to him AS701/702/703/704 (UUnet / now Verizon), AS174 (PSI / now Cogent), AS1 (BBN) and AS1239 (Sprint) were transit-free networks before this period. The oldest routing dump on RIPE RIS is from 1999 but those dumps are very small and contain too few routes to establish anything. RIPE RRC00 from September 1999 has &amp;ldquo;view&amp;rdquo; files, which are essentially a &amp;ldquo;sh ip bgp dump&amp;rdquo; and the following month they seem to have moved to the MRT format. On Oregon Route Views, the oldest I can find is &lt;a href=&#34;https://archive.routeviews.org/oix-route-views/1997.11/oix-full-1997-11-08-1724.dat.bz2&#34;&gt;this dump&lt;/a&gt; from 08 Nov 1997.&lt;/p&gt;
&lt;p&gt;This brings me to a possible, although not perfect, method to document the history of transit-free networks.&lt;/p&gt;
&lt;table&gt;
	&lt;thead&gt;
			&lt;tr&gt;
					&lt;th&gt;Timeline&lt;/th&gt;
					&lt;th&gt;Method&lt;/th&gt;
			&lt;/tr&gt;
	&lt;/thead&gt;
	&lt;tbody&gt;
			&lt;tr&gt;
					&lt;td&gt;Before-Nov 1997&lt;/td&gt;
					&lt;td&gt;Assume AS1, AS1239, AS701 and AS174 to be transit-free and find who else was adjacent to all of them along with BGP routing table dumps&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;Pre - Nov 2005&lt;/td&gt;
					&lt;td&gt;Use Wikipedia&amp;rsquo;s first documented list of tier 1 networks&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;Nov 2005 - Aug 2006 &amp;amp; onwards&lt;/td&gt;
					&lt;td&gt;With some scripting, dump &lt;a href=&#34;https://en.wikipedia.org/w/index.php?title=Tier_1_network&amp;amp;action=history&amp;amp;dir=prev&#34;&gt;Wikipedia page history&lt;/a&gt; &amp;amp; parse who became tier 1 when along with the support of BGP routing table dumps to cross-validate it via public route collectors&lt;/td&gt;
			&lt;/tr&gt;
	&lt;/tbody&gt;
&lt;/table&gt;
&lt;br /&gt;
&lt;h3 id=&#34;limitations&#34;&gt;Limitations&lt;/h3&gt;
&lt;p&gt;There are some key limitations in my method:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;Ignore paid peering&lt;/strong&gt;: Because it&amp;rsquo;s impossible to know about all paid peering agreements, I think, from a technical perspective, it makes sense to focus on &amp;ldquo;adjacencies&amp;rdquo; and finding whether a network is transiting via a transit-free network to another transit-free network or not. Take AS174 (earlier PSI and now Cogent) for example &lt;a href=&#34;https://www.cogentco.com/en/news/press-releases/225-level-3-and-cogent-reach-agreement-on-equitable-peering-terms&#34;&gt;publicly states in this release&lt;/a&gt; on this release of possible paid peering outside of settlement-free terms with Level 3 in 2005. The Wikipedia article uses this as a reference, as it didn&amp;rsquo;t classify AS174 as transit-free until 2014. On technical grounds I am just ignoring that, as we never know who else in the list also had similar arrangements. If AS X transits via Y to reach Z&amp;quot;, then X is not tier 1. If X has direct adjacency to Y and Z, I assume it is to be &amp;ldquo;transit-free&amp;rdquo; (with a mix of settlement-free and/or paid peerings).&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Unknown relation with last transit&lt;/strong&gt;: If X transits via Y to reach Z and later establishes settlement-free peering with Z, X will appear to be directly adjacent to Y &amp;amp; Z, while X-Y is still a transit relation. Unless X negotiates with its last transit to become a peer as well. Take the case of AS7922 (Comcast) - which is adjacent to all networks but was transiting via AS6453 until recently. AS6453 still tags them as &amp;ldquo;6453:50 - Customer route&amp;rdquo;. It would be hard to state AS7922 as transit-free or not. Technically AS7922 is not transiting AS6453 to reach other transit-free networks but at the same time they are transiting AS6453 to reach AS6453 downstreams.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Lack of data:&lt;/strong&gt; The Internet itself was new back in the 1990s, BGP was new and so was the concept of route collectors. So what is visible did exist but there could be more that was not visible at the public collectors.&lt;/li&gt;
&lt;/ol&gt;
&lt;br /&gt;
&lt;h2 id=&#34;history-of-transit-free--tier-1-networks&#34;&gt;History of transit-free / tier 1 networks&lt;/h2&gt;
&lt;p&gt;&lt;em&gt;Based on BGP routing table data + Wikipedia Tier 1 history page + other publicly available data&lt;/em&gt;&lt;/p&gt;
&lt;table&gt;
	&lt;thead&gt;
			&lt;tr&gt;
					&lt;th&gt;Month/Year&lt;/th&gt;
					&lt;th&gt;Data Source&lt;/th&gt;
					&lt;th&gt;Known transit-free networks&lt;/th&gt;
					&lt;th&gt;Comments&lt;/th&gt;
			&lt;/tr&gt;
	&lt;/thead&gt;
	&lt;tbody&gt;
			&lt;tr&gt;
					&lt;td&gt;Before-Nov 1997&lt;/td&gt;
					&lt;td&gt;Randy Bush&lt;/td&gt;
					&lt;td&gt;&lt;strong&gt;AS701&lt;/strong&gt; (UUnet), &lt;strong&gt;AS174&lt;/strong&gt; (PSI), &lt;strong&gt;AS1&lt;/strong&gt; (BBN) &amp;amp; &lt;strong&gt;AS1239&lt;/strong&gt; (Sprint)&lt;/td&gt;
					&lt;td&gt;Assumed to have been transit-free ASNs based on Randy&amp;rsquo;s information for further mapping. Full direct AS_PATHs between them are visible in the November 1997 Route Views dump.&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;Nov 1997&lt;/td&gt;
					&lt;td&gt;&lt;a href=&#34;https://archive.routeviews.org/oix-route-views/1997.11/oix-full-1997-11-08-1724.dat.bz2&#34;&gt;rviews dump&lt;/a&gt;&lt;/td&gt;
					&lt;td&gt;AS701 (UUnet), AS174 (PSI), AS1 (BBN), AS1239 (Sprint) +  &lt;strong&gt;(AS3561) C&amp;amp;W America&lt;/strong&gt;&lt;/td&gt;
					&lt;td&gt;&lt;strong&gt;AT&amp;amp;T AS7018/6478 was likely not tier 1&lt;/strong&gt; at this point as routes visible with path &amp;ldquo;701 1 6478 7018&amp;rdquo; while some direct paths indicate that AT&amp;amp;T was transiting from BBN AS1 to UUnet AS701. &lt;strong&gt;Global Crossing was not a tier 1 at this point&lt;/strong&gt; - AS3549 had transit via AS6196 (ISI) to reach AS1239 (Sprint) while direct adjacency to PSI AS174, AS701 (UUNET) etc. &lt;strong&gt;Unable to establish the situation with AS3356&lt;/strong&gt; as it had adjancency to AS701 but no (direct/indirect) routes visible to AS174/AS1/AS1239. &lt;strong&gt;Verio AS2914 was not tier 1 at this point&lt;/strong&gt; as it had transit to via ISC AS1280 to reach UUNET AS701 but does have direct adjacency to AS1/174/1239. &lt;strong&gt;Qwest AS209 was not Tier 1, as it had transit&lt;/strong&gt; to reach AS701 &amp;amp; others. &lt;strong&gt;Teleglobe AS6453 was not transit-free&lt;/strong&gt; and was using UUNET AS701 to reach PSI AS174.  &lt;strong&gt;Tiscali / Tinet AS3257 was not a tier 1&lt;/strong&gt; and was using AS6453 to reach UUNET AS701. &lt;strong&gt;TeliaSonera International Carrier AS1299 was not a tier 1&lt;/strong&gt; as it was many ASNs away from AS1239/AS3541 etc using AS4200 as transit. &lt;strong&gt;The situation with AboveNet AS6461 is unclear&lt;/strong&gt; as it has adjacency with 701/1239/3561 but unclear with others.&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;June 1998&lt;/td&gt;
					&lt;td&gt;rviews dump&lt;/td&gt;
					&lt;td&gt;AS701 (MCI UUNET), AS174 (PSI), AS1 (BBN), AS1239 (Sprint) +  AS3561 (C&amp;amp;W America) + &lt;strong&gt;AS7018 (AT&amp;amp;T)&lt;/strong&gt; + &lt;strong&gt;AS2914 (Verio)&lt;/strong&gt;&lt;/td&gt;
					&lt;td&gt;AS7018 (AT&amp;amp;T ) got adjacency with AS701, AS1238, AS1, AS3561 etc and thus likely &lt;strong&gt;AS7018 became transit-free&lt;/strong&gt; around this time&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;Sep 1998&lt;/td&gt;
					&lt;td&gt;&lt;a href=&#34;https://en.wikipedia.org/wiki/MCI_Inc.&#34;&gt;Wikipedia page on MCI&lt;/a&gt;&lt;/td&gt;
					&lt;td&gt;&lt;strong&gt;AS701 (MCI UUNET)&lt;/strong&gt;, AS174 (PSI), AS1 (BBN), AS1239 (Sprint) +  (AS3561) C&amp;amp;W America&lt;/td&gt;
					&lt;td&gt;WorldCom (which acquired UUNET earlier) merged with MCI creating MCI WorldCom &amp;amp; thus &lt;strong&gt;AS701 becomes MCI UUNET&lt;/strong&gt;&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;May 2000&lt;/td&gt;
					&lt;td&gt;&lt;a href=&#34;https://www.lightreading.com/business-management/ntt-buys-verio-for-5-5-billion&#34;&gt;Lightreading&lt;/a&gt;&lt;/td&gt;
					&lt;td&gt;AS701 (MCI UUNET), AS174 (PSI), AS1 (BBN), AS1239 (Sprint) +  AS3561 (C&amp;amp;W America) + AS7018 (AT&amp;amp;T) + &lt;strong&gt;AS2914 (NTT)&lt;/strong&gt;&lt;/td&gt;
					&lt;td&gt;NTT buys Verio, and thus &lt;strong&gt;AS2914 becomes NTT&lt;/strong&gt; from this point onwards&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;Jun 2000&lt;/td&gt;
					&lt;td&gt;&lt;a href=&#34;https://www.verizon.com/about/sites/default/files/gte/index.html&#34;&gt;Verizon&lt;/a&gt;&lt;/td&gt;
					&lt;td&gt;AS701 (MCI UUNET), AS174 (PSI), &lt;strong&gt;AS1 (Genuity)&lt;/strong&gt;, AS1239 (Sprint) +  AS3561 (C&amp;amp;W America) + AS7018 (AT&amp;amp;T) + AS2914 (NTT)&lt;/td&gt;
					&lt;td&gt;GTE Corp. merged with Bell Atlantic Corp to form Verizon. They barred Verizon from offering long-distance voice/data services in certain regions due to regulation &amp;amp; thus BBN IP assets including &lt;strong&gt;AS1 went to Genuity&lt;/strong&gt;.&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;Aug 2000&lt;/td&gt;
					&lt;td&gt;RIPE RIS RRC00 dump&lt;/td&gt;
					&lt;td&gt;AS701 (MCI UUNET), AS174 (PSI), AS1 (Genuity), AS1239 (Sprint) +  AS3561 (C&amp;amp;W America) + AS7018 (AT&amp;amp;T) + AS2914 (NTT) + &lt;strong&gt;AS3539 (Global Crossing)&lt;/strong&gt; + &lt;strong&gt;AS3356 (Level 3)&lt;/strong&gt; + &lt;strong&gt;AS6461 (Metromedia)&lt;/strong&gt;&lt;/td&gt;
					&lt;td&gt;AS3549 (Global Crossing) establishes direct adjacency to AS701 and AS3356 (Level 3) also establishes adjacency to AS1239 and seems to be directly adjacent to all known transit-free networks. Thus &lt;strong&gt;Both AS3549 and AS3356 likely became tier 1 around this point&lt;/strong&gt;. Also, AS6461 (Metromedia) got adjacency to AS1239 and had the rest already by now. So &lt;strong&gt;AS6461 (Metromedia) became transit-free around this point&lt;/strong&gt;&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;Sept 2001&lt;/td&gt;
					&lt;td&gt;route-views dump + RIPE RIS RRC03&lt;/td&gt;
					&lt;td&gt;AS701 (MCI UUNET), AS174 (PSI), AS1 (Genuity), AS1239 (Sprint) +  AS3561 (C&amp;amp;W America) + AS7018 (AT&amp;amp;T) + AS2914 (NTT) + AS3539 (Global Crossing) + AS3356 (Level 3) + AS6461 (Metromedia) + &lt;strong&gt;AS6453 (Teleglobe)&lt;/strong&gt;&lt;/td&gt;
					&lt;td&gt;Teleglobe AS6453 connects to Savvis AS3561. Got other adjacencies also within this year and thus &lt;strong&gt;likely AS6453 becomes transit-free network&lt;/strong&gt;&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;April 2002&lt;/td&gt;
					&lt;td&gt;&lt;a href=&#34;https://www.cogentco.com/en/news/press-releases/279-cogent-communications-acquires-us-operations-of-psinet&#34;&gt;Cogent press release&lt;/a&gt;&lt;/td&gt;
					&lt;td&gt;AS701 (MCI UUNET), AS174 (&lt;strong&gt;Cogent&lt;/strong&gt;), AS1 (Genuity), AS1239 (Sprint) +  AS3561 (C&amp;amp;W America) + AS7018 (AT&amp;amp;T) + AS2914 (NTT) + AS3539 (Global Crossing) + AS3356 (Level 3) + AS6461 (Metromedia) + AS6453 (Teleglobe)&lt;/td&gt;
					&lt;td&gt;Cogent acquires PSI AS174 and thus AS174 becomes Cogent from this point onwards. Besides getting the network they also get &lt;a href=&#34;https://www.iana.org/domains/root/servers&#34;&gt;C-root DNS server&lt;/a&gt;&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;Jan 2003&lt;/td&gt;
					&lt;td&gt;&lt;a href=&#34;https://static.hlt.bme.hu/semantics/external/pages/John_McCarthy/en.wikipedia.org/wiki/BBN_Technologies.html&#34;&gt;Budapest University of Technology and Economics&lt;/a&gt;&lt;/td&gt;
					&lt;td&gt;AS701 (MCI UUNET), AS174 (Cogent), AS1 (&lt;strong&gt;Level 3&lt;/strong&gt;), AS1239 (Sprint) +  AS3561 (C&amp;amp;W America) + AS7018 (AT&amp;amp;T) + AS2914 (NTT) + AS3539 (Global Crossing) + AS3356 (Level 3) + AS6461 (Metromedia) + AS6453 (Teleglobe)&lt;/td&gt;
					&lt;td&gt;Level 3 acquires Genuity which had assets from previous spun off in 2000s when BBN merged with Bell Atlantic to form Verizon. AS1 was included in the assets and thus &lt;strong&gt;AS1 goes to Level 3&lt;/strong&gt;&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;May 2003&lt;/td&gt;
					&lt;td&gt;RIPE RIS &amp;amp; RRC03 dumps&lt;/td&gt;
					&lt;td&gt;AS701 (MCI UUNET), AS174 (Cogent), AS1239 (Sprint) +  AS3561 (C&amp;amp;W America) + AS7018 (AT&amp;amp;T) + AS2914 (NTT) + AS3539 (Global Crossing) + AS3356 (Level 3) + AS6461 (Metromedia) + AS6453 (Teleglobe)&lt;/td&gt;
					&lt;td&gt;&lt;strong&gt;AS1 loses adjacency with most of transit-free ASNs&lt;/strong&gt; including AS701, AS6453 etc &amp;amp; losses its transit-free network status&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;Sep 2003&lt;/td&gt;
					&lt;td&gt;&lt;a href=&#34;https://www.nytimes.com/2003/09/09/business/technology-briefing-hardware-abovenet-emerges-from-bankruptcy.html&#34;&gt;The New York times&lt;/a&gt;&lt;/td&gt;
					&lt;td&gt;AS701 (MCI UUNET) + AS174 (Cogent) + AS1239 (Sprint) +  AS3561 (C&amp;amp;W America) + AS7018 (AT&amp;amp;T) + AS2914 (NTT) + AS3539 (Global Crossing) + AS3356 (Level 3) + AS6461 (&lt;strong&gt;AboveNet&lt;/strong&gt;) + AS6453 (Teleglobe)&lt;/td&gt;
					&lt;td&gt;&lt;strong&gt;AS6461 emerged from bankruptcy and becomes AboveNet&lt;/strong&gt;&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;Jan 2004&lt;/td&gt;
					&lt;td&gt;&lt;a href=&#34;https://www.nytimes.com/2004/01/24/business/company-news-cable-and-wireless-wins-approval-to-sell-us-unit.html&#34;&gt;The New York times&lt;/a&gt;&lt;/td&gt;
					&lt;td&gt;AS701 (MCI UUNET) + AS174 (Cogent), AS1239 (Sprint) +  AS3561 (&lt;strong&gt;Savvis&lt;/strong&gt;) + AS7018 (AT&amp;amp;T) + AS2914 (NTT) + AS3539 (Global Crossing) + AS3356 (Level 3) + AS6461 (AboveNet) + AS6453 (Teleglobe)&lt;/td&gt;
					&lt;td&gt;Savvis buys C&amp;amp;W America, and thus &lt;strong&gt;AS3561 becomes Savvis&lt;/strong&gt;&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;June 2004&lt;/td&gt;
					&lt;td&gt;rviews dump&lt;/td&gt;
					&lt;td&gt;AS701 (MCI UUNET), AS174 (Cogent), AS1239 (Sprint) +  AS3561 (Savvis) + AS7018 (AT&amp;amp;T) + AS2914 (NTT) + AS3539 (Global Crossing) + AS3356 (Level 3) + AS6461 (AboveNet) + AS6453 (Teleglobe)&lt;/td&gt;
					&lt;td&gt;&lt;strong&gt;AS1299&lt;/strong&gt; (TeliaSonera International Carrier) has adjacency to all known transit-free networks by this point although it was added to the Wikipedia list a few years later&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;Nov 2005&lt;/td&gt;
					&lt;td&gt;&lt;a href=&#34;https://en.wikipedia.org/w/index.php?title=Tier_1_network&amp;amp;oldid=28256391&#34;&gt;Wikipedia&lt;/a&gt;&lt;/td&gt;
					&lt;td&gt;AS7018 (AT&amp;amp;T) + AS3539 (Global Crossing) + AS3356 (Level 3) + AS701 (MCI WorldCom) + AS2914 (NTT) + &lt;strong&gt;AS209 (Qwest)&lt;/strong&gt; + AS3561 (Savvis) + AS1239 (Sprint) + AS6461 (AboveNet) + AS6453 (Teleglobe)&lt;/td&gt;
					&lt;td&gt;First list out on Wikipedia + existing known transit-free networks via BGP table guess work&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;Jan 2006&lt;/td&gt;
					&lt;td&gt;&lt;a href=&#34;https://en.wikipedia.org/wiki/MCI_Inc.&#34;&gt;Wikipedia page on MCI&lt;/a&gt;&lt;/td&gt;
					&lt;td&gt;AS7018 (AT&amp;amp;T) + AS3539 (Global Crossing) + AS3356 (Level 3) + AS701 (&lt;strong&gt;Verizon&lt;/strong&gt;) + AS2914 (NTT) + AS209 (Qwest) + AS3561 (Savvis) + AS1239 (Sprint) + AS6461 (AboveNet) + AS6453 (Teleglobe) + AS1299 (Telia)&lt;/td&gt;
					&lt;td&gt;Verizon acquires MCI and thus &lt;strong&gt;AS701 becomes Verizon&lt;/strong&gt; along with other AS702, 703, 704 etc&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;Feb 2006&lt;/td&gt;
					&lt;td&gt;&lt;a href=&#34;https://www.sec.gov/Archives/edgar/data/1278739/000119312506030346/dex101.htm&#34;&gt;SEC filing&lt;/a&gt;&lt;/td&gt;
					&lt;td&gt;AS7018 (AT&amp;amp;T) + AS3539 (Global Crossing) + AS3356 (Level 3) + AS701 (Verizon) + AS2914 (NTT) + AS209 (Qwest) + AS3561 (Savvis) + AS1239 (Sprint) + AS6461 (AboveNet) + AS6453 (&lt;strong&gt;VSNL&lt;/strong&gt;)&lt;/td&gt;
					&lt;td&gt;VSNL acquires AS6453 (Teleglobe) and thus from this point onwards &lt;strong&gt;AS6453 becomes VSNL&lt;/strong&gt;&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;May 2006&lt;/td&gt;
					&lt;td&gt;&lt;a href=&#34;https://en.wikipedia.org/w/index.php?title=Tier_1_network&amp;amp;oldid=51359798&#34;&gt;Wikipedia&lt;/a&gt;&lt;/td&gt;
					&lt;td&gt;AS7018 (AT&amp;amp;T) + AS3539 (Global Crossing) + AS3356 (Level 3) + AS701 (Verizon) + AS2914 (NTT) + AS209 (Qwest) + AS3561 (Savvis) + AS1239 (Sprint) + AS6461 (AboveNet) + AS6453 (VSNL) + &lt;strong&gt;AS174 (Cogent)&lt;/strong&gt; + &lt;strong&gt;AS1668 (AOL/ATDN)&lt;/strong&gt;&lt;/td&gt;
					&lt;td&gt;AS174 (Cogent) reappears in here as it&amp;rsquo;s there in the Wikipedia list + &lt;strong&gt;AS1668 (AOL / ATDN)&lt;/strong&gt; appears in the list&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;Dec 2007&lt;/td&gt;
					&lt;td&gt;&lt;a href=&#34;https://economictimes.indiatimes.com/industry/telecom/vsnl-renamed-as-tata-communications/articleshow/2622719.cms?from=mdr&#34;&gt;Economic Times, India&lt;/a&gt;&lt;/td&gt;
					&lt;td&gt;AS7018 (AT&amp;amp;T) + AS3539 (Global Crossing) + AS3356 (Level 3) + AS701 (Verizon) + AS2914 (NTT) + AS209 (Qwest) + AS3561 (Savvis) + AS1239 (Sprint) + AS6461 (AboveNet) + AS6453 (&lt;strong&gt;Tata Comm&lt;/strong&gt;) + AS174 (Cogent)&lt;/td&gt;
					&lt;td&gt;Tata Group renames VSNL to Tata Communications and thus &lt;strong&gt;AS6453 becomes Tata Communications&lt;/strong&gt; from this point onwards. This single entity gets assets of VSNL + Teleglobe + Tyco etc under the brand name Tata Comm&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;May 2008&lt;/td&gt;
					&lt;td&gt;&lt;a href=&#34;https://en.wikipedia.org/w/index.php?title=Tier_1_network&amp;amp;oldid=214693210&#34;&gt;Wikipedia&lt;/a&gt;&lt;/td&gt;
					&lt;td&gt;AS7018 (AT&amp;amp;T) + AS3539 (Global Crossing) + AS3356 (Level 3) + AS701 (Verizon) + AS2914 (NTT) + AS209 (Qwest) + AS3561 (Savvis) + AS1239 (Sprint) + AS6461 (AboveNet) + AS6453 (Tata Comm) + AS174 (Cogent) + AS1668 (AOL/ATDN) + &lt;strong&gt;AS1299 (Telia)&lt;/strong&gt;&lt;/td&gt;
					&lt;td&gt;AS1299 (Telia) added to the list as per Wikipedia&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;Apr 2010&lt;/td&gt;
					&lt;td&gt;&lt;a href=&#34;https://en.wikipedia.org/w/index.php?title=Tier_1_network&amp;amp;oldid=357963683&#34;&gt;Wikipedia&lt;/a&gt;&lt;/td&gt;
					&lt;td&gt;AS7018 (AT&amp;amp;T) + AS3539 (Global Crossing) + AS3356 (Level 3) + AS701 (Verizon) + AS2914 (NTT) + AS209 (Qwest) + AS3561 (Savvis) + AS1239 (Sprint) + AS6461 (AboveNet) + AS6453 (Tata Comm) + AS174 (Cogent) + AS1668 (AOL/ATDN) + AS1299 (Telia) + &lt;strong&gt;AS3257 (Tinet)&lt;/strong&gt;&lt;/td&gt;
					&lt;td&gt;&lt;strong&gt;AS3257 (Tinet)&lt;/strong&gt; added to Wikipedia list&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;Nov 2010&lt;/td&gt;
					&lt;td&gt;&lt;a href=&#34;https://ir.lumen.com/news/news-details/2010/CenturyLink-and-Qwest-Reach-Merger-Agreement-With-Arizona-Corporate-Commission-Staff/default.aspx&#34;&gt;CenturyLink press release&lt;/a&gt;&lt;/td&gt;
					&lt;td&gt;AS7018 (AT&amp;amp;T) + AS3539 (Global Crossing) + AS3356 (Level 3) + AS701 (Verizon) + AS2914 (NTT) + AS209 (&lt;strong&gt;CenturyLink&lt;/strong&gt;) + AS3561 (Savvis) + AS1239 (Sprint) + AS6461 (AboveNet) + AS6453 (Tata Comm) + AS174 (Cogent) + AS1668 (AOL/ATDN) + AS1299 (Telia) + AS3257 (Tinet)&lt;/td&gt;
					&lt;td&gt;CenturyLink merges with Qwest &amp;amp; &lt;strong&gt;AS209 becomes CenturyLink&lt;/strong&gt;&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;Feb 2011&lt;/td&gt;
					&lt;td&gt;&lt;a href=&#34;https://en.wikipedia.org/w/index.php?title=Tier_1_network&amp;amp;oldid=414419992&#34;&gt;Wikipedia&lt;/a&gt;&lt;/td&gt;
					&lt;td&gt;AS7018 (AT&amp;amp;T) + AS3539 (Global Crossing) + AS3356 (Level 3) + AS701 (Verizon) + AS2914 (NTT) + AS209 (CenturyLink) + AS3561 (Savvis) + AS1239 (Sprint) + AS6461 (AboveNet) + AS6453 (Tata Comm) + AS174 (Cogent) + AS1668 (AOL/ATDN) + AS1299 (Telia) + AS3257 (Tinet) + &lt;strong&gt;AS3320 (DTAG)&lt;/strong&gt;&lt;/td&gt;
					&lt;td&gt;&lt;strong&gt;AS3320 (DTAG)&lt;/strong&gt; added to the Wikipedia list&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;Apr 2011&lt;/td&gt;
					&lt;td&gt;&lt;a href=&#34;https://techcrunch.com/2011/04/11/level-3-to-acquire-global-crossing-for-3-billion-in-stock/&#34;&gt;Techcrunch&lt;/a&gt;&lt;/td&gt;
					&lt;td&gt;AS7018 (AT&amp;amp;T) + AS3356/&lt;strong&gt;AS3539&lt;/strong&gt; (Level 3) + AS701 (Verizon) + AS2914 (NTT) + AS209 (CenturyLink) + AS3561 (Savvis) + AS1239 (Sprint) + AS6461 (AboveNet) + AS6453 (Tata Comm) + AS174 (Cogent) + AS1668 (AOL/ATDN) + AS1299 (Telia) + AS3257 (Tinet) + AS3320 (DTAG)&lt;/td&gt;
					&lt;td&gt;Level 3 acquires Global Crossing and thus &lt;strong&gt;AS3549 starts fading behind AS3356&lt;/strong&gt; from this point onwards&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;Jul 2011&lt;/td&gt;
					&lt;td&gt;&lt;a href=&#34;https://ir.lumen.com/news/news-details/2011/CenturyLink-and-Savvis-Complete-Merger/default.aspx&#34;&gt;CenturyLink press release&lt;/a&gt;&lt;/td&gt;
					&lt;td&gt;AS7018 (AT&amp;amp;T) + AS3356/AS3539/&lt;strong&gt;AS3561&lt;/strong&gt; (Level 3) + AS701 (Verizon) + AS2914 (NTT) + AS209 (CenturyLink) + AS1239 (Sprint) + AS6461 (AboveNet) + AS6453 (Tata Comm) + AS174 (Cogent) + AS1668 (AOL/ATDN) + AS1299 (Telia) + AS3257 (Tinet) + AS3320 (DTAG)&lt;/td&gt;
					&lt;td&gt;CenturyLink merges with Savvis &amp;amp; thus &lt;strong&gt;AS3561 moves to  CenturyLink&lt;/strong&gt;&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;Mar 2012&lt;/td&gt;
					&lt;td&gt;&lt;a href=&#34;https://www.sec.gov/Archives/edgar/data/1043533/000114420412015938/v306443_ex99-1.htm&#34;&gt;SEC filing&lt;/a&gt;&lt;/td&gt;
					&lt;td&gt;AS7018 (AT&amp;amp;T) + AS3356/AS3539/AS3561 (Level 3) + AS701 (Verizon) + AS2914 (NTT) + AS209 (CenturyLink) + AS1239 (Sprint) + AS6461 (&lt;strong&gt;Zayo&lt;/strong&gt;) + AS6453 (Tata Comm) + AS174 (Cogent) + AS1668 (AOL/ATDN) + AS1299 (Telia) + AS3257 (Tinet) + AS3320 (DTAG)&lt;/td&gt;
					&lt;td&gt;Zayo acquires Abovenet and thus &lt;strong&gt;AS6461 moves to Zayo&lt;/strong&gt;&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;May 2012&lt;/td&gt;
					&lt;td&gt;&lt;a href=&#34;https://en.wikipedia.org/w/index.php?title=Tier_1_network&amp;amp;oldid=493216698&#34;&gt;Wikipedia&lt;/a&gt;&lt;/td&gt;
					&lt;td&gt;AS7018 (AT&amp;amp;T) + AS3356/AS3539/AS3561 (Level 3) + AS701 (Verizon) + AS2914 (NTT) + AS209 (CenturyLink) + AS1239 (Sprint) + AS6461 (Zayo) + AS6453 (Tata Comm) + AS174 (Cogent) + AS1668 (AOL/ATDN) + AS1299 (Telia) + AS3257 (Tinet) + AS3320 (DTAG) + &lt;strong&gt;AS6762 (Telecom Italia)&lt;/strong&gt;&lt;/td&gt;
					&lt;td&gt;AS6762 (Telecom Italia added to Wikipedia list)&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;Jun 2012&lt;/td&gt;
					&lt;td&gt;&lt;a href=&#34;https://en.wikipedia.org/w/index.php?title=Tier_1_network&amp;amp;oldid=498852017&#34;&gt;Wikipedia&lt;/a&gt;&lt;/td&gt;
					&lt;td&gt;AS7018 (AT&amp;amp;T) + AS3356/AS3539/AS3561 (Level 3) + AS701 (Verizon) + AS2914 (NTT) + AS209 (CenturyLink) + AS1239 (Sprint) + AS6461 (Zayo) + AS6453 (Tata Comm) + AS174 (Cogent) + AS1668 (AOL/ATDN) + AS1299 (Telia) + AS3257 (Tinet) + AS3320 (DTAG) + AS6762 (Telecom Italia) + &lt;strong&gt;AS2828 (XO Comm)&lt;/strong&gt;&lt;/td&gt;
					&lt;td&gt;&lt;strong&gt;AS2828 (XO Communications)&lt;/strong&gt; is listed as tier 1 network this time onwards&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;Aug 2012&lt;/td&gt;
					&lt;td&gt;&lt;a href=&#34;https://en.wikipedia.org/w/index.php?title=Tier_1_network&amp;amp;oldid=509953665&#34;&gt;Wikipedia&lt;/a&gt;&lt;/td&gt;
					&lt;td&gt;AS7018 (AT&amp;amp;T) + AS3356/AS3539/AS3561 (Level 3) + AS701 (Verizon) + AS2914 (NTT) + AS209 (CenturyLink) + AS1239 (Sprint) + AS6461 (Zayo) + AS6453 (Tata Comm) + AS174 (Cogent) + AS1668 (AOL/ATDN) + AS1299 (Telia) + AS3257 (Tinet) + AS3320 (DTAG) + AS6762 (Telecom Italia) + AS2828 (XO Comm) + &lt;strong&gt;AS5511 (France Telecom)&lt;/strong&gt;&lt;/td&gt;
					&lt;td&gt;Wikipedia reports AS5511 (France Telecom) became transit-free around this time based on Renesys &amp;amp; CAIDA&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;Sept 2012&lt;/td&gt;
					&lt;td&gt;RIPE RIS RRC00 + &lt;a href=&#34;https://en.wikipedia.org/w/index.php?title=Tier_1_network&amp;amp;oldid=511149313&#34;&gt;Wikipedia&lt;/a&gt;&lt;/td&gt;
					&lt;td&gt;AS7018 (AT&amp;amp;T) + AS3356/AS3539/AS3561 (Level 3) + AS701 (Verizon) + AS2914 (NTT) + AS209 (CenturyLink) + AS1239 (Sprint) + AS6461 (Zayo) + AS6453 (Tata Comm) + AS174 (Cogent) + AS1668 (AOL/ATDN) + AS1299 (Telia) + AS3257 (Tinet) + AS3320 (DTAG) + AS6762 (Telecom Italia) + AS2828 (XO Comm) + AS5511 (France Telecom) + &lt;strong&gt;AS12956 (Telefonia)&lt;/strong&gt;&lt;/td&gt;
					&lt;td&gt;&lt;strong&gt;AS12956 (Telefonia)&lt;/strong&gt; got adjacency to all known transit-free networks earlier in the year around Feb 2012 &amp;amp; by Sep 2012 it is listed in Wikipedia list as transit-free network&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;Apr 2013&lt;/td&gt;
					&lt;td&gt;&lt;a href=&#34;https://www.telecomramblings.com/2013/04/network-ma-gtt-buys-inteliquents-data-network/&#34;&gt;Telecom Ramblings&lt;/a&gt;&lt;/td&gt;
					&lt;td&gt;AS7018 (AT&amp;amp;T) + AS3356/AS3539/AS3561 (Level 3) + AS701 (Verizon) + AS2914 (NTT) + AS209 (CenturyLink) + AS1239 (Sprint) + AS6461 (Zayo) + AS6453 (Tata Comm) + AS174 (Cogent) + AS1668 (AOL/ATDN) + AS1299 (Telia) + AS3257 (&lt;strong&gt;GTT&lt;/strong&gt;) + AS3320 (DTAG) + AS6762 (Telecom Italia) + AS2828 (XO Comm) + AS5511 (France Telecom) + AS12956 (Telefonia)&lt;/td&gt;
					&lt;td&gt;GTT Buys Inteliquent’s Data Network and thus &lt;strong&gt;AS3257 moves to GTT&lt;/strong&gt;&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;Jul 2013&lt;/td&gt;
					&lt;td&gt;&lt;a href=&#34;https://www.lightreading.com/video-broadcast/france-telecom-to-become-orange&#34;&gt;Lightreading&lt;/a&gt;&lt;/td&gt;
					&lt;td&gt;AS7018 (AT&amp;amp;T) + AS3356/AS3539/AS3561 (Level 3) + AS701 (Verizon) + AS2914 (NTT) + AS209 (CenturyLink) + AS1239 (Sprint) + AS6461 (Zayo) + AS6453 (Tata Comm) + AS174 (Cogent) + AS1668 (AOL/ATDN) + AS1299 (Telia) + AS3257 (GTT) + AS3320 (DTAG) + AS6762 (Telecom Italia) + AS2828 (XO Comm) + AS5511 (&lt;strong&gt;Orange&lt;/strong&gt;) + AS12956 (Telefonia)&lt;/td&gt;
					&lt;td&gt;France telecom renames to Orange and thus &lt;strong&gt;AS5511 becomes Orange&lt;/strong&gt; from this point onwards&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;Feb 2014&lt;/td&gt;
					&lt;td&gt;&lt;a href=&#34;https://en.wikipedia.org/w/index.php?title=Tier_1_network&amp;amp;oldid=596749247&#34;&gt;Wikipedia&lt;/a&gt;&lt;/td&gt;
					&lt;td&gt;AS7018 (AT&amp;amp;T) + AS3356/AS3539/AS3561 (Level 3) + AS701 (Verizon) + AS2914 (NTT) + AS209 (CenturyLink) + AS1239 (Sprint) + AS6461 (Zayo) + AS6453 (Tata Comm) + AS174 (Cogent) + AS1299 (Telia) + AS3257 (GTT) + AS3320 (DTAG) + AS6762 (Telecom Italia) + AS2828 (XO Comm) + AS5511 (Orange) + AS12956 (Telefonia)&lt;/td&gt;
					&lt;td&gt;AS1668 (AOL/ATDN) was removed from the list as it started taking transit via AS3356 (Level 3) and AS1273 (Sprint)&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;Apr 2016&lt;/td&gt;
					&lt;td&gt;&lt;a href=&#34;https://en.wikipedia.org/w/index.php?title=Tier_1_network&amp;amp;oldid=715281783&#34;&gt;Wikipedia&lt;/a&gt;&lt;/td&gt;
					&lt;td&gt;AS7018 (AT&amp;amp;T) + AS3356/AS3539/AS3561 (Level 3) + AS701 (Verizon) + AS2914 (NTT) + AS209 (CenturyLink) + AS1239 (Sprint) + AS6461 (Zayo) + AS6453 (Tata Comm) + AS174 (Cogent) + AS1299 (Telia) + AS3257 (GTT) + AS3320 (DTAG) + AS6762 (Telecom Italia) + AS2828 (XO Comm) + AS5511 (Orange) + AS12956 (Telefonia) + &lt;strong&gt;AS286 (KPN)&lt;/strong&gt;&lt;/td&gt;
					&lt;td&gt;AS286 (KPN) appears in the Wikipedia list as tier 1 network&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;October 2016&lt;/td&gt;
					&lt;td&gt;&lt;a href=&#34;https://ir.lumen.com/news/news-details/2016/CENTURYLINK-TO-ACQUIRE-LEVEL-3-COMMUNICATIONS/default.aspx&#34;&gt;CenturyLink press release&lt;/a&gt;&lt;/td&gt;
					&lt;td&gt;AS7018 (AT&amp;amp;T) + AS701 (Verizon) + AS2914 (NTT) + AS209/&lt;strong&gt;AS3356/AS3539/AS3561&lt;/strong&gt; (CenturyLink) + AS1239 (Sprint) + AS6461 (Zayo) + AS6453 (Tata Comm) + AS174 (Cogent) + AS1299 (Telia) + AS3257 (GTT) + AS3320 (DTAG) + AS6762 (Telecom Italia) + AS2828 (XO Comm) + AS5511 (Orange) + AS12956 (Telefonia) + AS286 (KPN)&lt;/td&gt;
					&lt;td&gt;CenturyLink acquires Level 3 and thus &lt;strong&gt;AS3356 moves to CenturyLink&lt;/strong&gt;. While CenturyLink acquired it, the Level 3 IP network was huge and over time AS3356 remained, while the other ASNs went behind it&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;Nov 2016&lt;/td&gt;
					&lt;td&gt;&lt;a href=&#34;https://en.wikipedia.org/w/index.php?title=Tier_1_network&amp;amp;oldid=748710858&#34;&gt;Wikipedia&lt;/a&gt;&lt;/td&gt;
					&lt;td&gt;AS7018 (AT&amp;amp;T) + AS701 (Verizon) + AS2914 (NTT) + AS209/AS3356/AS3539/AS3561 (CenturyLink) + AS1239 (Sprint) + AS6461 (Zayo) + AS6453 (Tata Comm) + AS174 (Cogent) + AS1299 (Telia) + AS3257 (GTT) + AS3320 (DTAG) + AS6762 (Telecom Italia) + AS2828 (XO Comm) + AS5511 (Orange) + AS12956 (Telefonia) + AS286 (KPN) + &lt;strong&gt;AS6830 (Liberty Global)&lt;/strong&gt;&lt;/td&gt;
					&lt;td&gt;&lt;strong&gt;AS6830 (Liberty Global)&lt;/strong&gt; gets added to the list on Wikipedia&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;Feb 2017&lt;/td&gt;
					&lt;td&gt;&lt;a href=&#34;https://www.lightreading.com/5g/verizon-completes-xo-fiber-buy-5g-stage-set&#34;&gt;Lightreading&lt;/a&gt;&lt;/td&gt;
					&lt;td&gt;AS7018 (AT&amp;amp;T) + AS701/&lt;strong&gt;AS2828&lt;/strong&gt; (Verizon) + AS2914 (NTT) + AS209/AS3356/AS3539/AS3561 (CenturyLink) + AS1239 (Sprint) + AS6461 (Zayo) + AS6453 (Tata Comm) + AS174 (Cogent) + AS1299 (Telia) + AS3257 (GTT) + AS3320 (DTAG) + AS6762 (Telecom Italia)  + AS5511 (Orange) + AS12956 (Telefonia) + AS286 (KPN) + AS6830 (Liberty Global)&lt;/td&gt;
					&lt;td&gt;AS701 (Verizon) buys XO Communications and slowly integrates it in it&amp;rsquo;s backbone. &lt;strong&gt;Thus AS2828 is no longer transit-free&lt;/strong&gt;.&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;April 2017&lt;/td&gt;
					&lt;td&gt;&lt;a href=&#34;https://en.wikipedia.org/w/index.php?title=Tier_1_network&amp;amp;oldid=775538505&#34;&gt;Wikipedia&lt;/a&gt;&lt;/td&gt;
					&lt;td&gt;AS7018 (AT&amp;amp;T) + AS701 (Verizon) + AS2914 (NTT) + AS209/AS3356/AS3539/AS3561 (CenturyLink) + AS1239 (Sprint) + AS6461 (Zayo) + AS6453 (Tata Comm) + AS1299 (Telia) + AS3257 (GTT) + AS3320 (DTAG) + AS6762 (Telecom Italia) + AS5511 (Orange) + AS12956 (Telefonia) + AS286 (KPN) + AS6830 (Liberty Global)&lt;/td&gt;
					&lt;td&gt;AS174 (Cogent) is removed from the Wikipedia tier 1 list due to a lack of IPv6 routes with AS6939 (HE)&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;Sep 2017&lt;/td&gt;
					&lt;td&gt;&lt;a href=&#34;https://en.wikipedia.org/w/index.php?title=Tier_1_network&amp;amp;oldid=799522101&#34;&gt;Wikipedia&lt;/a&gt; + route-views2 + rrc03 dump&lt;/td&gt;
					&lt;td&gt;AS7018 (AT&amp;amp;T) + AS701 (Verizon) + AS2914 (NTT) + AS209/AS3356/AS3539/AS3561 (CenturyLink) + AS1239 (Sprint) + AS6461 (Zayo) + AS6453 (Tata Comm) + AS1299 (Telia) + AS3257 (GTT) + AS3320 (DTAG) + AS6762 (Telecom Italia) + AS5511 (Orange) + AS12956 (Telefonia) + AS286 (KPN) + AS6830 (Liberty Global) + &lt;strong&gt;AS3491 (PCCW)&lt;/strong&gt;&lt;/td&gt;
					&lt;td&gt;&lt;strong&gt;AS3491 (PCCW)&lt;/strong&gt; established direct adjacency to AS1299 (TeliaSonera International) earlier in the year. Was already connected to others by now. By Sep 2017 it was added to the list of transit-free networks by Wikipedia&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;Dec 2019&lt;/td&gt;
					&lt;td&gt;&lt;a href=&#34;https://as286.net/AS286-routing-policy.html&#34;&gt;KPN AS286 website&lt;/a&gt;&lt;/td&gt;
					&lt;td&gt;AS7018 (AT&amp;amp;T) + AS701 (Verizon) + AS2914 (NTT) + AS209/AS3356/AS3539/AS3561 (CenturyLink) + AS1239 (Sprint) + AS6461 (Zayo) + AS6453 (Tata Comm) + AS1299 (Telia) + AS3257 (GTT) + AS3320 (DTAG) + AS6762 (Telecom Italia) + AS5511 (Orange) + AS12956 (Telefonia) + AS6830 (Liberty Global) + AS3491 (PCCW)&lt;/td&gt;
					&lt;td&gt;&lt;strong&gt;(AS286) KPN&lt;/strong&gt; was taken over by AS3257 (GTT), and thus AS286 was integrated into it and is removed from the list of tier 1 networks&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;Sep 2020&lt;/td&gt;
					&lt;td&gt;&lt;a href=&#34;https://ir.lumen.com/news/news-details/2020/CenturyLink-Transforms-Rebrands-as-Lumen/default.aspx&#34;&gt;CenturyLink press release&lt;/a&gt;&lt;/td&gt;
					&lt;td&gt;AS7018 (AT&amp;amp;T) + AS701 (Verizon) + AS2914 (NTT) + AS3356 (&lt;strong&gt;Lumen&lt;/strong&gt;) + AS1239 (Sprint) + AS6461 (Zayo) + AS6453 (Tata Comm) + AS1299 (Telia) + AS3257 (GTT) + AS3320 (DTAG) + AS6762 (Telecom Italia) + AS5511 (Orange) + AS12956 (Telefonia) + AS6830 (Liberty Global) + AS3491 (PCCW)&lt;/td&gt;
					&lt;td&gt;CenturyLink rebranded as Lumen and thus &lt;strong&gt;AS3356 becomes Lumen&lt;/strong&gt; from this point onwards and most of its other ASNs had slowly moved behind AS3356 by this time.&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;Jan 2022&lt;/td&gt;
					&lt;td&gt;&lt;a href=&#34;https://www.telecomtv.com/content/access-evolution/new-owner-new-name-telia-carrier-becomes-arelion-43388/&#34;&gt;Telecom TV&lt;/a&gt;&lt;/td&gt;
					&lt;td&gt;AS7018 (AT&amp;amp;T) + AS701 (Verizon) + AS2914 (NTT) + AS3356 (Lumen) + AS1239 (Sprint) + AS6461 (Zayo) + AS6453 (Tata Comm) + AS1299 (&lt;strong&gt;Arelion&lt;/strong&gt;) + AS3257 (GTT) + AS3320 (DTAG) + AS6762 (Telecom Italia) + AS5511 (Orange) + AS12956 (Telefonia) + AS6830 (Liberty Global) + AS3491 (PCCW)&lt;/td&gt;
					&lt;td&gt;Telia becomes Arelion and thus &lt;strong&gt;AS1299 becomes Arelion&lt;/strong&gt;&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;May 2023&lt;/td&gt;
					&lt;td&gt;&lt;a href=&#34;https://www.sec.gov/Archives/edgar/data/1158324/000110465923089811/tm2323172d2_ex99-1.htm&#34;&gt;SEC filing&lt;/a&gt;&lt;/td&gt;
					&lt;td&gt;AS7018 (AT&amp;amp;T) + AS701 (Verizon) + AS2914 (NTT) + AS3356 (Lumen) + AS6461 (Zayo) + AS6453 (Tata Comm) + AS1299 (Arelion) + AS3257 (GTT) + AS3320 (DTAG) + AS6762 (Telecom Italia) + AS5511 (Orange) + AS12956 (Telefonia) + AS6830 (Liberty Global) + AS3491 (PCCW)&lt;/td&gt;
					&lt;td&gt;Cogent acquires Sprint&amp;rsquo;s IP network as Sprint&amp;rsquo;s mobile network goes to T-Mobile and and shortly afterwards &lt;strong&gt;AS1239 goes behind AS174&lt;/strong&gt;&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;Nov 2023&lt;/td&gt;
					&lt;td&gt;&lt;a href=&#34;https://www.colt.net/resources/insights/colt-lumen-emea&#34;&gt;Colt press release&lt;/a&gt;&lt;/td&gt;
					&lt;td&gt;AS7018 (AT&amp;amp;T) + AS701 (Verizon) + AS2914 (NTT) + AS3356 (&lt;strong&gt;Lumen + Colt jointly maintaining it&lt;/strong&gt;) + AS6461 (Zayo) + AS6453 (Tata Comm) + AS1299 (Arelion) + AS3257 (GTT) + AS3320 (DTAG) + AS6762 (Telecom Italia) + AS5511 (Orange) + AS12956 (Telefonia) + AS6830 (Liberty Global) + AS3491 (PCCW)&lt;/td&gt;
					&lt;td&gt;Colt buys Lumen&amp;rsquo;s EMEA network and from this point onwards &lt;strong&gt;AS3356 becomes a split network&lt;/strong&gt; jointly owned by Lumen (in North America, Singapore etc) and Colt in Europe, the Middle East and Africa&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;Aug 2026&lt;/td&gt;
					&lt;td&gt;&lt;a href=&#34;https://en.wikipedia.org/wiki/Tier_1_network&#34;&gt;Wikipedia page on Tier 1 networks&lt;/a&gt;&lt;/td&gt;
					&lt;td&gt;AS7018 (AT&amp;amp;T) + AS701 (Verizon) + AS2914 (NTT), AS3356 (Lumen + Colt) + AS6461 (Zayo) + AS6453 (Tata Comm) + AS1299 (Arelion) +  AS3257 (GTT) + AS3320 (DTAG) + AS6762 (Telecom Italia) + AS5511 (Orange) + AS12956 (Telefonia/Telxius) + AS6830 (Liberty Global) + AS3491 (PCCW)&lt;/td&gt;
					&lt;td&gt;Current situation! :-)&lt;/td&gt;
			&lt;/tr&gt;
	&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;&lt;br /&gt;&lt;br /&gt;&lt;/p&gt;
&lt;h3 id=&#34;notes-on-as174--cogent--psi&#34;&gt;Notes on AS174 / Cogent / PSI&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;While Randy&amp;rsquo;s email listed PSI (AS174) which later became Cogent as transit-free from the early days, I do not see that from &lt;a href=&#34;https://en.wikipedia.org/w/index.php?title=Tier_1_network&amp;amp;oldid=28256391&#34;&gt;Wikipedia&amp;rsquo;s first list&lt;/a&gt; in 2005.&lt;/li&gt;
&lt;li&gt;It was added as Tier 1 in the &lt;a href=&#34;https://en.wikipedia.org/w/index.php?title=Tier_1_network&amp;amp;oldid=51359798&#34;&gt;May 2006 list&lt;/a&gt; and was repeatedly added and removed due to their &lt;a href=&#34;https://www.cogentco.com/en/news/press-releases/225-level-3-and-cogent-reach-agreement-on-equitable-peering-terms&#34;&gt;declared paid peering agreement&lt;/a&gt; with AS3356 (Level 3). I considered it transit-free until the 2017 change because I am excluding &amp;ldquo;paid peering&amp;rdquo; logic for any given ASN. (Just looking at whether transit exists or not).&lt;/li&gt;
&lt;li&gt;There is a genuine possibility of AS174 being transit-free earlier and not later for a few years as they expanded to Asia. &lt;a href=&#34;https://conference.apnic.net/20/docs/sigs/routing/routing-sig-Upadhaya-as-pathanalysis.pdf&#34;&gt;This slide&lt;/a&gt; from Gaurab Upadhaya (PCH) shows AS_PATH: &lt;strong&gt;1239 2914 174&lt;/strong&gt; on slide 7 showing that there was a transit via AS2914 (NTT).&lt;/li&gt;
&lt;li&gt;Since its status is not clear, &lt;strong&gt;I will just follow the Wikipedia list&lt;/strong&gt;. It might be worth exploring through each available collector, including those in Asia, if this situation changed at some other time.&lt;/li&gt;
&lt;li&gt;It was removed from the list in &lt;a href=&#34;https://en.wikipedia.org/w/index.php?title=Tier_1_network&amp;amp;oldid=775538505&#34;&gt;April 2017&lt;/a&gt; due to a lack of IPv6 peering with AS6939 (Hurricane Electric).  My table is reflecting the same. Since I am not a neutral person on this, I will avoid any further comment and simply follow what others have documented on the Wikipedia page.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;br /&gt;&lt;br /&gt;&lt;/p&gt;
&lt;h3 id=&#34;interesting-history-verio---ntt&#34;&gt;Interesting history Verio -&amp;gt; NTT&lt;/h3&gt;
&lt;p&gt;Verio had an interesting history of being a web hosting provider in 1996 &amp;amp; was acquired by NTT in 2000. Wikipedia has a &lt;a href=&#34;https://en.wikipedia.org/wiki/Verio&#34;&gt;fascinating history&lt;/a&gt; of the transaction and it is worth reading:&lt;/p&gt;
&lt;p&gt;&lt;em&gt;By the year 2000, Verio had purchased 55 ISP/Hosting companies, most in the U.S. but some in Europe. During this time Verio went public on the NASDAQ, trading under the symbol VRIO, with a market value exceeding $1 billion. Shortly after the IPO, in early 2000, Verio was sold to NTT at a per-share price of $73, a total cost slightly exceeding $5 billion. Because NTT was a 53% Japanese government-owned company, foreigners were not allowed to own NTT stock, according to Japanese law at the time,[2] and therefore the buy-out was a 100% cash deal, making it one of the highest grossing deals of the dotcom era. The United States Congress held hearings over the transaction to ensure it did not violate national security concerns. The Justice Department and the Federal Bureau of Investigation expressed concern that the Japanese government, which owned 53 percent of NTT at the time, could gain access to classified information should the U.S. government use Verio&amp;rsquo;s network to tap Internet communications during an investigation. To placate these concerns, NTT agreed to form a separate division within the company staffed only by U.S. citizens to handle any work in support of government investigations. As a result, the Committee on Foreign Investment in the United States recommended that President Clinton allow the $5.5 billion purchase to proceed. The deal also prompted scrutiny of Japan&amp;rsquo;s openness to foreign telecom competitors.&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;&lt;em&gt;Shortly after the announced deal, the NASDAQ stock market crashed in the spring of 2000 in the dot-com bubble burst. The agreed price of $73 remained and NTT and Verio completed the transaction by the fall of 2000.&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;Eventually, it became NTT AS2914 as we know it today and the hosting part was &lt;a href=&#34;https://btw.media/en/verio-sells-hosting-memory-after-the-internet-brand-changes-hands&#34;&gt;sold off to Endurance&lt;/a&gt; in 2015.&lt;/p&gt;
&lt;br /&gt;
&lt;h3 id=&#34;transit-but-cannot-transit&#34;&gt;Transit but cannot transit!&lt;/h3&gt;
&lt;p&gt;Another important thing to mention here is that - there are cases of large networks that have transit but are not completely open to receiving any traffic from transit. When Wikipedia states that &amp;ldquo;X buys transit from Y&amp;rdquo; - one may or may not be able to reach X via Y due to the way they control the announcements.&lt;/p&gt;
&lt;p&gt;Here&amp;rsquo;s an example:&lt;/p&gt;
&lt;p&gt;Let&amp;rsquo;s look for a random IP (1.71.103.0/24) from AS4809 (China Telecom) in AS1299 (Arelion) &lt;a href=&#34;https://lg.twelve99.net/&#34;&gt;looking glass&lt;/a&gt;:&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://cdn.anuragbhatia.com/web/post/2026/08/4809_1299.png&#34; alt=&#34;&#34;&gt;&lt;/p&gt;
&lt;br /&gt;
&lt;p&gt;Notice the use of:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;1299:2009 (Do NOT announce to ANY peer in Europe)&lt;/li&gt;
&lt;li&gt;1299:5009 (Do NOT announce to ANY peer in North America)&lt;/li&gt;
&lt;li&gt;1299:7009 (Do NOT announce to ANY peer in Asia)&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Thus even though it&amp;rsquo;s tagged as 1299:37000 (APAC customer) - most of the peers of AS1299 will not get this route because AS4809 is maintaining a direct relationship with those networks &amp;amp; seems to be using AS1299 for very selective announcements. It&amp;rsquo;s hard to locate all these historical cases but in the present scenario consider these networks to not have full transit. They have their own peerings with many other transit-free networks, along with AS_PATH filters dropping those tier1s from other paths (i.e peer lock).&lt;/p&gt;
&lt;br /&gt;
&lt;h3 id=&#34;feedback--updates&#34;&gt;Feedback &amp;amp; updates&lt;/h3&gt;
&lt;p&gt;I have very likely missed some data here. Feedback via the comments below or through the direct &lt;a href=&#34;https://anuragbhatia.com/contact&#34;&gt;contact page&lt;/a&gt; is welcome. I will update the page accordingly.&lt;/p&gt;
&lt;br /&gt;
&lt;p&gt;&lt;img src=&#34;https://cdn.anuragbhatia.com/web/post/2026/08/Night-story-depeering.png&#34; alt=&#34;&#34;&gt;&lt;/p&gt;
</description>
    </item>
    
    <item>
      <title>Use of VRF in dual WAN setup</title>
      <link>https://anuragbhatia.com/post/2026/08/mikrotik-vrf-dual-wan/</link>
      <pubDate>Tue, 04 Aug 2026 02:28:23 +0530</pubDate>
      
      <guid>https://anuragbhatia.com/post/2026/08/mikrotik-vrf-dual-wan/</guid>
      <description>&lt;p&gt;Over the weekend I migrated my home router from multiple routing tables to a VRF-based design, placing each WAN uplink into its own VRF. While multiple routing tables worked for basic policy routing, they have some limitations and that led to several edge cases that became increasingly difficult to work around.&lt;/p&gt;
&lt;p&gt;Issues with the setup:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;If the active default route pointed to ISP1, traffic arriving on ISP1 naturally returned via ISP1. However, traffic terminating on the router and arriving via ISP2 would also be replied to through ISP1, since both uplinks still shared the same routing domain. This did not cause issues for traffic on devices below the router but was bad for traffic terminating on the router interface itself.&lt;/li&gt;
&lt;li&gt;Due to the above reason, I recently lost access to my home router while I was out of the country because ISP1 had a partial outage (their transit went down, peering stayed up) &amp;amp; due to distributed tooling, the auto switch trigger could not happen either to take care of it. Packets from ISP 2 were being returned via the ISP1 route &amp;amp; thus blackholed.&lt;/li&gt;
&lt;li&gt;I have a special case where I want most of the devices on a redundant setup but some devices (containers) on specific ISP only. These are measurement containers running &lt;a href=&#34;https://github.com/prometheus/blackbox_exporter&#34;&gt;blackbox exporter&lt;/a&gt; behind a specific ISP as well as &lt;a href=&#34;https://github.com/Jamesits/docker-ripe-atlas&#34;&gt;RIPE Atlas&lt;/a&gt;. I don&amp;rsquo;t want these to switch over for accuracy of measurement. Without VRF it was ugly config-wise, as ISP1 failure will lead to ISP2 routing even when the specific routing table did not have that route.&lt;/li&gt;
&lt;/ol&gt;
&lt;br /&gt;
&lt;h3 id=&#34;old-setup&#34;&gt;Old Setup&lt;/h3&gt;
&lt;p&gt;My old setup was running multiple routing table pairs:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;ISP1 only &amp;amp; ISP1 as primary (ISP2 as secondary)&lt;/li&gt;
&lt;li&gt;ISP2 only &amp;amp; ISP2 as primary (ISP1 as secondary)&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;All WAN interfaces, LAN interfaces and routing tables were in the same single &amp;ldquo;Main&amp;rdquo; VRF. This by default takes care of full outage events, fibre cuts, etc. For packet loss-based switchover, I have set up Prometheus + Semaphore as covered in &lt;a href=&#34;https://anuragbhatia.com/post/2025/01/event-driven-automation-with-prometheus/&#34;&gt;this post&lt;/a&gt; last year.&lt;/p&gt;
&lt;br /&gt;
&lt;h3 id=&#34;understanding-vrf&#34;&gt;Understanding VRF&lt;/h3&gt;
&lt;p&gt;VRF is Virtual Routing and Forwarding. It allows &amp;ldquo;virtual partitioning&amp;rdquo; of the router in L3 terms. Different physical &amp;amp; VLAN interfaces can be part of different VRFs, and they have no connectivity with each other at all unless routes are leaking between the VRFs. Thus a router with VRF - Main, ISP1 &amp;amp; ISP2 acts like three separate routers. It&amp;rsquo;s like a VLAN for layer3. In Mikrotik it can get confusing as one can create multiple isolated routing tables in the same Main VRF however since WAN interfaces are also in the same main VRF, the default route from the main table takes out if a next-hop becomes unavailable on an interface.&lt;/p&gt;
&lt;br /&gt;
&lt;h3 id=&#34;new-setup&#34;&gt;New Setup&lt;/h3&gt;
&lt;p&gt;With three VRFs in place (default + 2 other), I have isolated each uplink in its own VRF. Also, removed the ISP1-only &amp;amp; ISP2-only routing tables, as VRF creates its own isolated table. Most of the policy-routing logic remains unchanged. Mangle does the marking of routing to steer traffic &amp;amp; mangle rules for an address list where IPs are enabled or disabled from external tooling based on how I want to route the traffic. Every WAN-facing route now belongs to the corresponding VRF instead of the Main routing domain. And since these act like separate routers, I had to add a path for the return route as well. So e.g if 172.16.0.0/24 on say VLAN10 (in Main VRF) communicates via VRF-ISP2 via mangle-marked routing, the VRF-ISP2 routing table needed an interface route to return the traffic. For VLANs specific to these ISPs, I added them in the respective ISP VRF. These VLANs are also trunked to my home server, where they map directly onto Docker networks, allowing selected containers to live natively inside a specific ISP VRF&lt;/p&gt;
&lt;p&gt;In hindsight, I should have switched to VRFs much earlier. Multiple routing tables worked for a long time, but they started showing their limits as the network became more complex. VRFs make the separation explicit, and the router behaves much closer to how I actually expect it to.&lt;/p&gt;
</description>
    </item>
    
    <item>
      <title>Beyond 5G: The Two Biggest Challenges for India&#39;s Internet</title>
      <link>https://anuragbhatia.com/post/2026/07/indian-internet-challenges/</link>
      <pubDate>Fri, 03 Jul 2026 01:20:52 +0530</pubDate>
      
      <guid>https://anuragbhatia.com/post/2026/07/indian-internet-challenges/</guid>
      <description>&lt;p&gt;The recent debate around Airtel&amp;rsquo;s priority 5G generated plenty of noise. Personally, I&amp;rsquo;m not a fan of it either but Airtel and Jio are private companies. Their job is to maximise shareholder value, not to maintain market competition. The real question is why competition remains so limited. And by competition, I don&amp;rsquo;t mean another mobile operator. I mean fixed-line broadband.&lt;/p&gt;
&lt;br /&gt;
&lt;p&gt;Two long-standing problems continue to hold India&amp;rsquo;s internet ecosystem back.&lt;/p&gt;
&lt;br /&gt;
&lt;h3 id=&#34;1-every-isp-builds-its-own-last-mile&#34;&gt;1. Every ISP builds its own last mile&lt;/h3&gt;
&lt;p&gt;In the early days of FTTH this was understandable. In 2026, it feels increasingly wasteful.&lt;/p&gt;
&lt;p&gt;At my home in Haryana, around a dozen FTTH providers are available. The pole outside carries 14 fibre cables from different operators — all solving the same problem independently. The last mile isn&amp;rsquo;t where ISPs differentiate. Fibre from ISP A isn&amp;rsquo;t inherently &amp;ldquo;faster&amp;rdquo; than fibre from ISP B. The real differentiation is in the network behind that fibre capacity, routing, peering, resilience and customer support. Yet every provider continues deploying duplicate infrastructure. Even Airtel and Jio increasingly push Fixed Wireless Access because expanding FTTH remains expensive.&lt;/p&gt;
&lt;p&gt;Instead of parallel deployments, we should encourage neutral last-mile infrastructure. A small number of regulated fibre providers could deploy high core count cables, while ISPs lease strands and compete on service quality rather than digging the same streets repeatedly. This will also help in fixing streets which look quite ugly with excess fibre routing in all directions.&lt;/p&gt;
&lt;p&gt;Earlier this year, Stefan Schüller published an excellent article, &lt;a href=&#34;https://stefan.schueller.net/posts/the-free-market-lie/&#34;&gt;The Free Market Lie: Why Switzerland Has 25 Gbit Internet and America Doesn&amp;rsquo;t&lt;/a&gt; comparing broadband infrastructure in Switzerland, the US and Germany. It&amp;rsquo;s well-researched and provides useful context for many of the points discussed here.I do disagree with one aspect of the article - its comparison of Passive Optical Networks (PON) and Active Optical Networks (AON). Contention exists throughout the internet, from access networks to the application layer. Networks are engineered with reasonable headroom, but oversubscription is a fundamental part of how the internet operates. So I don&amp;rsquo;t believe PON is inherently the limitation it&amp;rsquo;s sometimes portrayed to be. That said, it&amp;rsquo;s still an insightful read about the topic.&lt;/p&gt;
&lt;br /&gt;
&lt;h3 id=&#34;2-wi-fi-is-surprisingly-difficult-to-share-legally&#34;&gt;2. Wi-Fi is surprisingly difficult to share legally&lt;/h3&gt;
&lt;p&gt;India has fibre in many of the urban areas from homes to offices, but we don&amp;rsquo;t make full use of it. The biggest reason isn&amp;rsquo;t technology, it&amp;rsquo;s regulation and liability. Because ISPs must maintain subscriber and CGNAT logs for Law Enforcement Agencies (LEAs), sharing a normal retail broadband connection publicly becomes legally risky. In practice, the compliant solution is managed Wi-Fi provided by a licensed ISP.&lt;/p&gt;
&lt;p&gt;That&amp;rsquo;s why places like gyms,  cafes or small businesses often avoid offering Wi-Fi even when a fibre connection is sitting right there for their own usage.&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;https://pmwani.gov.in/&#34;&gt;PM-WANI&lt;/a&gt; attempted to address this, but its focus evolved around commercial hotspot operators and it got projected more as a &amp;ldquo;make side money&amp;rdquo; scheme instead. It has many issues, some of which were covered by Mr Parag Kar in &lt;a href=&#34;https://youtu.be/muOPStQ7GDI&#34;&gt;this video&lt;/a&gt; in Hindi last month. The bigger opportunity is making secure Wi-Fi sharing simple, not selling.&lt;/p&gt;
&lt;br /&gt;
&lt;h3 id=&#34;centralised-wifi-authentication--logging&#34;&gt;Centralised wifi authentication &amp;amp; logging&lt;/h3&gt;
&lt;p&gt;Imagine a nationwide authentication platform:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;One-time user verification (both for the end user and for the person offering the Wi-Fi hotspot)&lt;/li&gt;
&lt;li&gt;Certified Wi-Fi hardware that securely streams required logs to central infra &lt;em&gt;(host gets a unique token when setting it up &amp;amp; the same is used to stream logs&lt;/em&gt;)&lt;/li&gt;
&lt;li&gt;Seamless automatic connection across compliant hotspots with the end-user device holding a certificate to prove identity&lt;/li&gt;
&lt;li&gt;No traffic tunnelling or unnecessary complexity&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Homes, offices, hotels,  cafes, gyms and other venues could legally offer Wi-Fi while preserving the audit trail required by law enforcement by just getting the compliant hardware and signing up with it.&lt;/p&gt;
&lt;br /&gt;
&lt;p&gt;The next leap probably isn&amp;rsquo;t faster 5G or 6G. It&amp;rsquo;s building shared infrastructure where duplication adds little value and removing regulatory friction that prevents existing connectivity from being used more effectively.&lt;/p&gt;
</description>
    </item>
    
    <item>
      <title>RFC8950: Announce IPv4 with an IPv6 next-hop</title>
      <link>https://anuragbhatia.com/post/2026/06/rfc8950-announce-ipv4-with-ipv6-next-hop/</link>
      <pubDate>Mon, 22 Jun 2026 14:04:09 +0530</pubDate>
      
      <guid>https://anuragbhatia.com/post/2026/06/rfc8950-announce-ipv4-with-ipv6-next-hop/</guid>
      <description>&lt;p&gt;For the last few days I have been playing with &lt;a href=&#34;https://datatracker.ietf.org/doc/rfc8950/&#34;&gt;RFC8950&lt;/a&gt; setup, which allows routing of IPv4 on top of IPv6. While logically it&amp;rsquo;s quite simple, it has a very powerful application towards making &amp;ldquo;&lt;strong&gt;IPv4 an optional&lt;/strong&gt;&amp;rdquo; feature riding on top of an IPv6 network (&lt;strong&gt;but without any tunnels!&lt;/strong&gt;)&lt;/p&gt;
&lt;br /&gt;
&lt;p&gt;Some of the interesting use cases:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;A large network can run IPv6 only everywhere on its core and leave IPv4 only on edge devices. This can work without customers doing any tweaking at their end. They still do things the old way but Backbone can run IPv6 only at its core.&lt;/li&gt;
&lt;li&gt;An IP transit backbone can run IPv6 only while exchanging IPv4 routes with its customers/peers/upstream over IPv6 sessions. So IPv4 as a &amp;ldquo;feature&amp;rdquo; stays but the network in itself is IPv6 only without the overhead of IPv4 interface config, BGP session config, firewall config, etc.&lt;/li&gt;
&lt;li&gt;An IXP can offer services without IPv4 essentually by using a (unique) IPv6 at the IX LAN &amp;amp; running route server to exchange both IPv4 &amp;amp; IPv6 routes over the IPv6 only session.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Thus what 464XLAT did to the mobile networks - this has the potential to do that for the backbone networks.&lt;/p&gt;
&lt;p&gt;&lt;br /&gt;&lt;br /&gt;&lt;/p&gt;
&lt;h3 id=&#34;how-does-it-work&#34;&gt;How does it work?&lt;/h3&gt;
&lt;p&gt;Multi-protocol BGP (MP-BGP) supports announcement of IPv4 routes over IPv6 sessions with IPv4 next-hops and IPv6 routes over IPv4 sessions with IPv6 next-hops. RFC8950 extends this feature for IPv4 to have IPv6 next-hops. So for IPv4 address, next hop is IPv6, IPv6 reach works via usual NDP and IPv4 rides on ethernet frames to the same MAC as discovered by the NDP. Technically RFC8950 only impacts control plane decisions by using IPv6 as the control plane but keeps the data plane as it is. IPv4 stays IPv4 &amp;amp; goes as IPv4 over the wire unlike say some tunnel or 464xLAT etc.&lt;/p&gt;
&lt;p&gt;&lt;br /&gt;&lt;br /&gt;&lt;/p&gt;
&lt;h3 id=&#34;hardware-support&#34;&gt;Hardware support&lt;/h3&gt;
&lt;p&gt;As of now it&amp;rsquo;s quite widely supported by a lot of routing platforms like Juniper JunOS, Cisco IOS XR, Nokia SR OS, Mikrotik, Huawei, BIRD, FRR etc. So, it is very likely supported if you are running a recent version of the OS.&lt;/p&gt;
&lt;p&gt;&lt;br /&gt;&lt;br /&gt;&lt;/p&gt;
&lt;h3 id=&#34;demo-lab&#34;&gt;Demo lab&lt;/h3&gt;
&lt;p&gt;&lt;img src=&#34;https://cdn.anuragbhatia.com/web/post/2026/06/rfc8950-announce-ipv4-with-ipv6-next-hop/topology.png&#34; alt=&#34;&#34;&gt;&lt;/p&gt;
&lt;p&gt;Here&amp;rsquo;s a fun lab with two customer routers: C1 &amp;amp; C2 connected via provider routers R1-R2-R3 in &lt;a href=&#34;https://containerlab.dev/&#34;&gt;Container Lab&lt;/a&gt;. All routers here are running &lt;a href=&#34;https://frrouting.org/&#34;&gt;open source FRR&lt;/a&gt;.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;C1 is IPv6 only on the WAN side facing R1. It originates 10.0.0.0/24 to R1 over an IPv6 session.&lt;/li&gt;
&lt;li&gt;R1 &amp;amp; R2 are IPv6 only with no IPv4 anywhere on their interfaces (but carry IPv4 routes in their table)&lt;/li&gt;
&lt;li&gt;R3 has IPv6 with R2 but just IPv4 only with C2. So C2 is like a typical enterprise user who lacks IPv6 deployment and still wants IPv4 only to work.&lt;/li&gt;
&lt;li&gt;R3 has 100.64.0.0/24 and originates it in the IPv4 table (to IPv6 adjacency - R2)&lt;/li&gt;
&lt;li&gt;C2 sits on 100.64.0.2/30 given by R3 and communicate in IPv4 only.&lt;/li&gt;
&lt;li&gt;C1 and C2 can reach each other over this network with parts being IPv6 only without any tunnel.&lt;/li&gt;
&lt;/ul&gt;
&lt;br /&gt;
&lt;p&gt;&lt;strong&gt;topology.yml&lt;/strong&gt;&lt;/p&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;name: rfc8950

topology:
 nodes:
 R1:
 kind: linux
 image: frr-with-bgpd
 binds:
 - configs/R1.conf:/etc/frr/frr.conf            

 R2:
 kind: linux
 image: frr-with-bgpd
 binds:
 - configs/R2.conf:/etc/frr/frr.conf     

 R3:
 kind: linux
 image: frr-with-bgpd
 binds:
 - configs/R3.conf:/etc/frr/frr.conf                     

 C1:
 kind: linux
 image: frr-with-bgpd
 binds:
 - configs/C1.conf:/etc/frr/frr.conf         

 C2:
 kind: linux
 image: frr-with-bgpd
 binds:
 - configs/C2.conf:/etc/frr/frr.conf               


 links:
 - endpoints: [&amp;#34;C1:eth1&amp;#34;, &amp;#34;R1:eth1&amp;#34;]
 - endpoints: [&amp;#34;R1:eth2&amp;#34;, &amp;#34;R2:eth1&amp;#34;]    
 - endpoints: [&amp;#34;R2:eth2&amp;#34;, &amp;#34;R3:eth1&amp;#34;]  
 - endpoints: [&amp;#34;R3:eth2&amp;#34;, &amp;#34;C2:eth1&amp;#34;]      
&lt;/code&gt;&lt;/pre&gt;&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;&amp;gt; clab deploy -t topology.yml
16:37:08 INFO Containerlab started version=0.76.1
16:37:08 INFO Parsing &amp;amp; checking topology file=topology.yml
16:37:09 INFO Creating lab directory path=~/ipv4-over-ipv6/clab-rfc8950
16:37:09 INFO Creating container name=C2
16:37:09 INFO Creating container name=C1
16:37:09 INFO Creating container name=R1
16:37:09 INFO Creating container name=R2
16:37:09 INFO Creating container name=R3
16:37:09 INFO Created link: R3:eth2 ▪┄┄▪ C2:eth1
16:37:09 INFO Created link: C1:eth1 ▪┄┄▪ R1:eth1
16:37:09 INFO Created link: R1:eth2 ▪┄┄▪ R2:eth1
16:37:09 INFO Created link: R2:eth2 ▪┄┄▪ R3:eth1
16:37:09 INFO Adding host entries path=/etc/hosts
16:37:09 INFO Adding SSH config for nodes path=/etc/ssh/ssh_config.d/clab-rfc8950.conf
╭─────────────────┬───────────────┬─────────┬───────────────────╮
│       Name      │   Kind/Image  │  State  │   IPv4/6 Address  │
├─────────────────┼───────────────┼─────────┼───────────────────┤
│ clab-rfc8950-C1 │ linux         │ running │ 172.20.20.6       │
│                 │ frr-with-bgpd │         │ 3fff:172:20:20::6 │
├─────────────────┼───────────────┼─────────┼───────────────────┤
│ clab-rfc8950-C2 │ linux         │ running │ 172.20.20.4       │
│                 │ frr-with-bgpd │         │ 3fff:172:20:20::4 │
├─────────────────┼───────────────┼─────────┼───────────────────┤
│ clab-rfc8950-R1 │ linux         │ running │ 172.20.20.2       │
│                 │ frr-with-bgpd │         │ 3fff:172:20:20::2 │
├─────────────────┼───────────────┼─────────┼───────────────────┤
│ clab-rfc8950-R2 │ linux         │ running │ 172.20.20.8       │
│                 │ frr-with-bgpd │         │ 3fff:172:20:20::8 │
├─────────────────┼───────────────┼─────────┼───────────────────┤
│ clab-rfc8950-R3 │ linux         │ running │ 172.20.20.5       │
│                 │ frr-with-bgpd │         │ 3fff:172:20:20::5 │
╰─────────────────┴───────────────┴─────────┴───────────────────╯
&lt;/code&gt;&lt;/pre&gt;&lt;br /&gt;
&lt;p&gt;&lt;strong&gt;Checking C1 for route to C2&lt;/strong&gt;&lt;/p&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;C1# show ip bgp 100.64.0.2
BGP routing table entry for 100.64.0.0/24, version 2
Paths: (1 available, best #1, table default)
 Advertised to non peer-group peers:
 2001:db8:0:1::1
 65501 65502 65503
 2001:db8:0:1::1 from 2001:db8:0:1::1 (172.20.20.2)
 (fe80::a8c1:abff:fe60:5467) (used)
 Origin IGP, valid, external, best (First path received)
 Last update: Mon Jun 22 18:57:38 2026
C1# 
&lt;/code&gt;&lt;/pre&gt;&lt;br /&gt;
&lt;p&gt;&lt;strong&gt;C1 -&amp;gt; C2 trace&lt;/strong&gt;&lt;/p&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;C1# traceroute 100.64.0.2
traceroute to 100.64.0.2 (100.64.0.2), 30 hops max, 46 byte packets
 1  clab-rfc8950-R1.clab (172.20.20.2)  0.004 ms  0.004 ms  0.002 ms
 2  clab-rfc8950-R2.clab (172.20.20.8)  0.002 ms  0.003 ms  0.003 ms
 3  clab-rfc8950-R3.clab (172.20.20.5)  0.002 ms  0.003 ms  0.003 ms
 4  100.64.0.2 (100.64.0.2)  0.002 ms  0.006 ms  0.003 ms
C1# 
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Note: It took IPv4 from the eth0 management interfaces as deployed by Container Lab for TTL exceeded used in the trace.&lt;/p&gt;
&lt;br /&gt;
&lt;p&gt;&lt;strong&gt;If I check R1, it has only IPv6 sessions but no IPv6 prefixes&lt;/strong&gt;&lt;/p&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;R1# sh bgp ipv6 summary 

IPv6 Unicast Summary (VRF default):
BGP router identifier 172.20.20.2, local AS number 65501 vrf-id 0
BGP table version 0
RIB entries 0, using 0 bytes of memory
Peers 2, using 1434 KiB of memory

Neighbor        V         AS   MsgRcvd   MsgSent   TblVer  InQ OutQ  Up/Down State/PfxRcd   PfxSnt Desc
2001:db8:0:1::2 4      64512       151       141        0    0    0 00:39:19            0        0 N/A
2001:db8:0:2::2 4      65502        65        64        0    0    0 00:36:46            0        0 N/A

Total number of neighbors 2
R1# 
&lt;/code&gt;&lt;/pre&gt;&lt;br /&gt;
&lt;p&gt;&lt;strong&gt;Checking for IPv4 routes on R1&lt;/strong&gt;&lt;/p&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;R1# sh bgp ipv4 
BGP table version is 4, local router ID is 172.20.20.2, vrf id 0
Default local pref 100, local AS 65501
Status codes:  s suppressed, d damped, h history, * valid, &amp;gt; best, = multipath,
 i internal, r RIB-failure, S Stale, R Removed
Nexthop codes: @NNN nexthop&amp;#39;s vrf id, &amp;lt; announce-nh-self
Origin codes:  i - IGP, e - EGP, ? - incomplete
RPKI validation codes: V valid, I invalid, N Not found

 Network          Next Hop            Metric LocPrf Weight Path
*&amp;gt; 10.0.0.0/24      fe80::a8c1:abff:fe44:afb8
 0             0 64512 i
*&amp;gt; 100.64.0.0/24    fe80::a8c1:abff:fed8:5eb5
 0 65502 65503 i

Displayed  2 routes and 2 total paths
R1# 
&lt;/code&gt;&lt;/pre&gt;&lt;br /&gt;
&lt;h3 id=&#34;router-configs&#34;&gt;Router Configs&lt;/h3&gt;
&lt;table&gt;
	&lt;thead&gt;
			&lt;tr&gt;
					&lt;th&gt;Router&lt;/th&gt;
					&lt;th&gt;Link&lt;/th&gt;
			&lt;/tr&gt;
	&lt;/thead&gt;
	&lt;tbody&gt;
			&lt;tr&gt;
					&lt;td&gt;R1&lt;/td&gt;
					&lt;td&gt;&lt;a href=&#34;https://cdn.anuragbhatia.com/web/post/2026/06/rfc8950-announce-ipv4-with-ipv6-next-hop/R1.conf&#34;&gt;Click here&lt;/a&gt;&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;R2&lt;/td&gt;
					&lt;td&gt;&lt;a href=&#34;https://cdn.anuragbhatia.com/web/post/2026/06/rfc8950-announce-ipv4-with-ipv6-next-hop/R2.conf&#34;&gt;Click here&lt;/a&gt;&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;R3&lt;/td&gt;
					&lt;td&gt;&lt;a href=&#34;https://cdn.anuragbhatia.com/web/post/2026/06/rfc8950-announce-ipv4-with-ipv6-next-hop/R3.conf&#34;&gt;Click here&lt;/a&gt;&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;C1&lt;/td&gt;
					&lt;td&gt;&lt;a href=&#34;https://cdn.anuragbhatia.com/web/post/2026/06/rfc8950-announce-ipv4-with-ipv6-next-hop/C1.conf&#34;&gt;Click here&lt;/a&gt;&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;C2&lt;/td&gt;
					&lt;td&gt;&lt;a href=&#34;https://cdn.anuragbhatia.com/web/post/2026/06/rfc8950-announce-ipv4-with-ipv6-next-hop/C2.conf&#34;&gt;Click here&lt;/a&gt;&lt;/td&gt;
			&lt;/tr&gt;
	&lt;/tbody&gt;
&lt;/table&gt;
</description>
    </item>
    
    <item>
      <title>Telegram BGP hijack due to weird blackholing config</title>
      <link>https://anuragbhatia.com/post/2026/06/telegram-bgp-hijack-and-blackholing/</link>
      <pubDate>Thu, 18 Jun 2026 05:22:47 +0530</pubDate>
      
      <guid>https://anuragbhatia.com/post/2026/06/telegram-bgp-hijack-and-blackholing/</guid>
      <description>&lt;p&gt;Since the &lt;a href=&#34;https://anuragbhatia.com/post/2026/06/telegram-prefix-hijack-by-rcom/&#34;&gt;Telegram&amp;rsquo;s prefix hijack&lt;/a&gt; (4 days ago on 17-Jun-2026) by RCom, there is visible noise in the BGP routing table from multiple other Indian ISPs, including Tata Teleservices (AS45820) / Lightstorm (AS135709/AS152144), etc. mostly in IPv6.&lt;/p&gt;
&lt;p&gt;Let&amp;rsquo;s look at 2a0a:f280::/48 (&lt;a href=&#34;https://bgp.he.net/super-lg/#2a0a:f280::/48?tob=none&amp;amp;els=exact&#34;&gt;Live lookup here&lt;/a&gt;)&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://cdn.anuragbhatia.com/web/post/2026/06/telegram-bgp-hijack-and-blackholing/ttsl-telegram-ipv6-hijack.png&#34; alt=&#34;&#34;&gt;&lt;/p&gt;
&lt;p&gt;Notice all the ASNs here largely seem to be downstreams or peers of AS45820 in India, no major large peer or upstream that would take this announcement outside of India. Similarly, take the case of aggregate - 2a0a:f280::/32. This has TTSL (AS45820) as well as Lightstrom (AS152144/135709) originating these prefixes to smaller peers.&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://cdn.anuragbhatia.com/web/post/2026/06/telegram-bgp-hijack-and-blackholing/ttsl-and-lightstorm-telegram-hijack.png&#34; alt=&#34;&#34;&gt;&lt;/p&gt;
&lt;p&gt;&lt;br /&gt;&lt;br /&gt;&lt;/p&gt;
&lt;h3 id=&#34;analysis-possible-reason-and-impact-of-this-behaviour&#34;&gt;Analysis: Possible reason and impact of this behaviour&lt;/h3&gt;
&lt;p&gt;Today I tested some config in lab to see why this could be happening.
Here&amp;rsquo;s what I strongly feel is happening &lt;em&gt;(quite sure, unless someone has a better explanation)&lt;/em&gt;:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Indian Govt. has asked ISPs to block Telegram and unlike past blocks mostly at the DNS layer, ISPs have been asked to drop IPs as well.&lt;/li&gt;
&lt;li&gt;Technically in these cases ISPs could simply add a blackhole route and that would drop traffic going towards these prefixes (&lt;em&gt;from their customers&lt;/em&gt;) and that would not be visible at BGP (control plane) but only in traceroutes (data plane). If any of these customers had a full routing feed from those respective ISPs, they would keep on learning Telegram&amp;rsquo;s route with the correct/expected AS_PATH and expected origin AS.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Very likely these players had blackhole config setup for the DDoS protection and ended up using the same i.e they are treating Telegram&amp;rsquo;s IPv6 prefixes like they would treat their own when under attack.&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;Also, blackholing is a common practice during DDoS attacks. Imagine a network with a 100G uplink gets hit by a 400G volumetric attack. It will take up all the link bandwidth and thus in these cases ISPs blackhole their own (or downstream) IPs (&lt;em&gt;often small - single /32s or a few&lt;/em&gt;) and they signal this to their BGP adjacencies as well. There is a standard BGP blackhole community: 65535:666 as defined in &lt;a href=&#34;https://datatracker.ietf.org/doc/html/rfc7999&#34;&gt;RFC7999&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;To make things worse - RPKI RoV usually excludes RFC7999, so this would not be easy to catch with RPKI as well for networks that support blackholing with these ASNs.&lt;/li&gt;
&lt;li&gt;Normally ISPs are not supposed to blackhole and BGP announces the blackhole unless it&amp;rsquo;s their own or downstream prefix where they have an understanding with downstream to do it (or downstream triggers it) to protect other IPs which are not under the attack. It&amp;rsquo;s incorrect for some Indian ISPs to be blackholing and BGP originating the blackhole to their adjacencies. The effect of this so far has been harmless because these are just going to the customers, however it&amp;rsquo;s not ideal.&lt;/li&gt;
&lt;li&gt;It can still create unexpected complications. Lightstorm for instance also has customers outside of India (Nepal) where Telegram is not blocked. By &amp;ldquo;BGP originating&amp;rdquo; blackhole, they would end up in creating a short AS_PATH (and hence usually preferred unless their customer de-pref it) by their multi-homed users steering traffic towards them and then drop it (as blackhole exists). Also, while they are originating /32, but if they originate a smaller more specific one that would also end up in steering traffic which is not needed otherwise.&lt;/li&gt;
&lt;/ul&gt;
&lt;br /&gt;
&lt;h3 id=&#34;note&#34;&gt;Note&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;Check out this discussion on X with my friend Bryton Herdes &lt;a href=&#34;https://x.com/anurag_bhatia/status/2067553124735492443?s=46&#34;&gt;here&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Also, Bryton / Cloudflare talk at Chicago NOG last month on how remote-triggered blackhole can bypass RoV - False immunity: long prefixes that bypass ROV: &lt;a href=&#34;https://chinog.org/wp-content/uploads/2026/06/bryton_herdes_false_immunity_long_prefixes_rov.pdf&#34;&gt;Slide&lt;/a&gt; and &lt;a href=&#34;https://youtu.be/XDt9mx9z3A4&#34;&gt;Video&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;br /&gt;
&lt;p&gt;&lt;strong&gt;Disclaimer&lt;/strong&gt;: This is my personal blog, and hence, posts made here are in my personal capacity. These do not represent the views of my employer.&lt;/p&gt;
</description>
    </item>
    
    <item>
      <title>Telegram prefixes hijack by Rcom AS18101</title>
      <link>https://anuragbhatia.com/post/2026/06/telegram-prefix-hijack-by-rcom/</link>
      <pubDate>Wed, 17 Jun 2026 01:14:03 +0530</pubDate>
      
      <guid>https://anuragbhatia.com/post/2026/06/telegram-prefix-hijack-by-rcom/</guid>
      <description>&lt;p&gt;The last few hours were quite noisy with a lot of discussion around Telegram block and Rcom&amp;rsquo;s hijack of Telegram prefixes. For those who may not know, Telegram has been blocked in India till 22 June 2026 (&lt;a href=&#34;https://www.thehindu.com/news/national/neet-ug-re-exam-telegram-app-restricted-in-india-at-nta-request/article71107894.ece&#34;&gt;news here&lt;/a&gt;). The justification has been to avoid paper leak over the telegram. Anyways, I am not going into whether the block is good or bad as it can be part of an endless discussion depending on how one views it. Maybe some separate time but let&amp;rsquo;s look at the BGP routing side of things.&lt;/p&gt;
&lt;p&gt;ISPs went for blocking it in all possible ways - from the usual DNS layer to block resolution of Telegram to also blackhole its prefixes. Telegram is a special case as they have their &lt;a href=&#34;https://bgp.he.net/search?search%5Bsearch%5D=telegram&amp;amp;commit=Search&#34;&gt;own ASN, IP prefixes&lt;/a&gt; etc making it easy to block them at the routing layer directly. I saw this on Airtel, where traffic seems to be dropping at their routers.&lt;/p&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;mtr -wby0 -4 web.telegram.org
Start: 2026-06-17T01:20:46+0530
HOST: desktop                                                      Loss%   Snt   Last   Avg  Best  Wrst StDev
  1. AS???    _gateway (172.16.0.1)                                 0.0%    10    0.2   0.2   0.2   0.2   0.0
  2. AS???    10.240.9.204                                          0.0%    10    4.6   7.4   4.2  25.7   6.5
  3. AS???    172.31.0.154                                          0.0%    10    8.1  13.5   6.4  26.4   6.2
  4. AS9498   169.168.18.125.dhcp.anaronline.net (125.18.168.169)   0.0%    10    5.2   6.8   4.9  13.6   2.6
  5. AS???    ???                                                  100.0    10    0.0   0.0   0.0   0.0   0.0
&lt;/code&gt;&lt;/pre&gt;&lt;br /&gt;
&lt;p&gt;At 11:58 PM - Telegram CEO Pavel Durov tweeted and accused Reliance &lt;em&gt;(technically Rcom and not Jio)&lt;/em&gt; for outage of Telegram outside of India by BGP hijacking.&lt;/p&gt;
&lt;blockquote class=&#34;twitter-tweet&#34;&gt;&lt;p lang=&#34;en&#34; dir=&#34;ltr&#34;&gt;Indian telecom Reliance is sabotaging access to Telegram for millions of users OUTSIDE India (including the UAE) via a rogue method called BGP hijacking.&lt;br&gt;&lt;br&gt;The sabotage seems intentional, as Reliance has ignored multiple reports. &lt;br&gt;&lt;br&gt;This may be part of a competitive war, as…&lt;/p&gt;&amp;mdash; Pavel Durov (@durov) &lt;a href=&#34;https://x.com/durov/status/2066945969854234977?ref_src=twsrc%5Etfw&#34;&gt;June 16, 2026&lt;/a&gt;&lt;/blockquote&gt;
&lt;script async src=&#34;https://platform.x.com/widgets.js&#34; charset=&#34;utf-8&#34;&gt;&lt;/script&gt;


&lt;br /&gt;
&lt;p&gt;Technically it&amp;rsquo;s true that Rcom AS18101 has hijacked Telegram&amp;rsquo;s prefixes. Take e.g 91.105.192.0/23 - AS18101 started originating this prefix at 16:14:19 GMT / 21:44:19 IST on 16 June as visible from many RIPE RIS collectors including RIPE RIS RRC01 in London. It&amp;rsquo;s bad and they should not have done it. With that being said I strongly feel it&amp;rsquo;s a &amp;ldquo;fat finger mistake&amp;rdquo;.&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://cdn.anuragbhatia.com/web/post/2026/06/telegram-prefix-hijack-by-rcom/AS18101-telegram-origination.png&#34; alt=&#34;&#34;&gt;
&lt;a href=&#34;https://bgp.he.net/AS18101#_prefixes&#34;&gt;https://bgp.he.net/AS18101#_prefixes&lt;/a&gt;&lt;/p&gt;
&lt;br /&gt;
&lt;h3 id=&#34;likely-was-not-intentional-and-heres-why&#34;&gt;Likely was not intentional and here&amp;rsquo;s why:&lt;/h3&gt;
&lt;p&gt;Rcom would have a bunch of their own super-set prefixes in their router with BGP communities acting as the pull-up route. It&amp;rsquo;s quite common to blackhole one&amp;rsquo;s own superset prefix and then use slices of it on interfaces, static routes, etc. Likely they would have copy-pasted the existing prefix list and added Telegram prefixes to the list and boom!&lt;/p&gt;
&lt;p&gt;The impact here varies as Telegram itself has multiple ASNs - AS62041, AS62014, AS59930, AS44907 and AS211157. These prefixes have different set of upstreams. The ones which are learning hijacked prefixes directly from Telegram, they normally won&amp;rsquo;t have an impact.&lt;/p&gt;
&lt;p&gt;If it was actually intentional, one would have kept the origin ASN the same and faked Telegram AS211157 behind AS18101 or so. That would not trigger RPKI RoV filtering across a larger transit-free tier-1 layer as well as various backbones and IXPs.&lt;/p&gt;
&lt;br /&gt;
&lt;h3 id=&#34;technically-what-failed&#34;&gt;Technically what failed?&lt;/h3&gt;
&lt;p&gt;Well, besides the fat finger mistake by Rcom AS18101 here, what failed was the lack of RPKI RoV by their upstreams - FLAG AS15412 and Tata Comm AS4755. Since these prefixes were signed, an RPKI RoV deployment would have easily filtered these and restricted routes within AS18101 and any of its downstream that were not filtering.&lt;/p&gt;
&lt;p&gt;&lt;br /&gt;&lt;br /&gt;&lt;/p&gt;
&lt;h4 id=&#34;update-17-june-2026---0147-ist&#34;&gt;Update: 17 June 2026 - 01:47 IST&lt;/h4&gt;
&lt;p&gt;AS I am writing this, I see the prefix has gone behind FLAG AS15412. Either they have filtered it or Rcom has stopped announcing it and it&amp;rsquo;s slowly fading away from the global table. Write now, the prefix is visible only behind AS4755 and that too only in India. That&amp;rsquo;s for some of the prefixes, some are still visible.&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://cdn.anuragbhatia.com/web/post/2026/06/telegram-prefix-hijack-by-rcom/limited-visibily-hijack.png&#34; alt=&#34;&#34;&gt;
&lt;a href=&#34;https://bgp.he.net/super-lg/#91.105.192.0/23?tob=none&amp;amp;mt=include&amp;amp;ma=18101&amp;amp;els=exact&#34;&gt;Source&lt;/a&gt;&lt;/p&gt;
&lt;br /&gt;
&lt;p&gt;&lt;strong&gt;Disclaimer&lt;/strong&gt;: This is my personal blog, and hence, posts made here are in my personal capacity. These do not represent the views of my employer.&lt;/p&gt;
</description>
    </item>
    
    <item>
      <title>Mapping major CDNs across the globe</title>
      <link>https://anuragbhatia.com/post/2026/06/cdn-mapping-across-the-globe/</link>
      <pubDate>Sat, 06 Jun 2026 18:47:04 +0530</pubDate>
      
      <guid>https://anuragbhatia.com/post/2026/06/cdn-mapping-across-the-globe/</guid>
      <description>&lt;p&gt;In Dec 2022 I mapped popular CDNs like Google GGC, Facebook FNA, Akamai, etc. across Indian networks (&lt;a href=&#34;https://anuragbhatia.com/post/2022/12/mapping_cdn_across_india/&#34;&gt;post here&lt;/a&gt;). Since it&amp;rsquo;s been close to 4 years now, I wanted to do that again. This time, I decided to expand the scope to the entire globe instead of just the Indian networks.&lt;/p&gt;
&lt;br /&gt;
&lt;h3 id=&#34;mapping-logic&#34;&gt;Mapping logic&lt;/h3&gt;
&lt;p&gt;The logic here is simple: get unique prefixes from the global routing table, break them into /24s, uniquely sort out /24s, and this gives all routed IP addresses in the world in batches of /24s (256 IPs). Next, identify the ones with an open port 443 and then connect to each of them to figure out the TLS certificate common name. Next, map those IP addresses to AS numbers, locations, etc., using Maxmind&amp;rsquo;s GeoIP Lite databases. Essentially, I am using the BGP routing table instead of scanning the entire 0.0.0.0/0 to avoid scanning for prefixes which are not routed in the global table as well as reserved private IPs, etc.&lt;/p&gt;
&lt;br /&gt;
&lt;h3 id=&#34;global-stats&#34;&gt;Global stats&lt;/h3&gt;
&lt;table&gt;
	&lt;thead&gt;
			&lt;tr&gt;
					&lt;th&gt;CDN Provider&lt;/th&gt;
					&lt;th&gt;No. unique ASNs&lt;/th&gt;
					&lt;th&gt;TLS domain&lt;/th&gt;
					&lt;th&gt;Details list URL&lt;/th&gt;
			&lt;/tr&gt;
	&lt;/thead&gt;
	&lt;tbody&gt;
			&lt;tr&gt;
					&lt;td&gt;Google GGC&lt;/td&gt;
					&lt;td&gt;4247&lt;/td&gt;
					&lt;td&gt;googlevideo.com&lt;/td&gt;
					&lt;td&gt;&lt;a href=&#34;https://cdn.anuragbhatia.com/web/post/2026/06/cdn-mapping-across-the-globe/ggc.csv&#34;&gt;csv&lt;/a&gt; &amp;amp; &lt;a href=&#34;https://cdn.anuragbhatia.com/web/post/2026/06/cdn-mapping-across-the-globe/ggc.json&#34;&gt;json&lt;/a&gt;&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;Netflix OCA&lt;/td&gt;
					&lt;td&gt;2903&lt;/td&gt;
					&lt;td&gt;oca.nflxvideo.net, assets.nflxext.com&lt;/td&gt;
					&lt;td&gt;&lt;a href=&#34;https://cdn.anuragbhatia.com/web/post/2026/06/cdn-mapping-across-the-globe/oca.csv&#34;&gt;csv&lt;/a&gt; &amp;amp; &lt;a href=&#34;https://cdn.anuragbhatia.com/web/post/2026/06/cdn-mapping-across-the-globe/oca.json&#34;&gt;json&lt;/a&gt;&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;Facebook FNA&lt;/td&gt;
					&lt;td&gt;2548&lt;/td&gt;
					&lt;td&gt;&amp;lsquo;fbcdn.net&amp;rsquo;, fna.whatsapp.net&lt;/td&gt;
					&lt;td&gt;&lt;a href=&#34;https://cdn.anuragbhatia.com/web/post/2026/06/cdn-mapping-across-the-globe/fna.csv&#34;&gt;csv&lt;/a&gt; &amp;amp; &lt;a href=&#34;https://cdn.anuragbhatia.com/web/post/2026/06/cdn-mapping-across-the-globe/fna.json&#34;&gt;json&lt;/a&gt;&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;Akamai&lt;/td&gt;
					&lt;td&gt;1094&lt;/td&gt;
					&lt;td&gt;edgesuite.net, edgekey.net, akamaized.net, akamaihd.net, akamaized.net, akamai.net&lt;/td&gt;
					&lt;td&gt;&lt;a href=&#34;https://cdn.anuragbhatia.com/web/post/2026/06/cdn-mapping-across-the-globe/akamai.csv&#34;&gt;csv&lt;/a&gt; &amp;amp; &lt;a href=&#34;https://cdn.anuragbhatia.com/web/post/2026/06/cdn-mapping-across-the-globe/akamai.json&#34;&gt;json&lt;/a&gt;&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;Microsoft&lt;/td&gt;
					&lt;td&gt;1655&lt;/td&gt;
					&lt;td&gt;microsoft.com&lt;/td&gt;
					&lt;td&gt;&lt;a href=&#34;https://cdn.anuragbhatia.com/web/post/2026/06/cdn-mapping-across-the-globe/microsoft.csv&#34;&gt;csv&lt;/a&gt; &amp;amp; &lt;a href=&#34;https://cdn.anuragbhatia.com/web/post/2026/06/cdn-mapping-across-the-globe/microsoft.json&#34;&gt;json&lt;/a&gt;&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;Apple&lt;/td&gt;
					&lt;td&gt;974&lt;/td&gt;
					&lt;td&gt;apple.com &amp;amp; itunes.apple.com&lt;/td&gt;
					&lt;td&gt;&lt;a href=&#34;https://cdn.anuragbhatia.com/web/post/2026/06/cdn-mapping-across-the-globe/apple.csv&#34;&gt;csv&lt;/a&gt; &amp;amp; &lt;a href=&#34;https://cdn.anuragbhatia.com/web/post/2026/06/cdn-mapping-across-the-globe/apple.json&#34;&gt;json&lt;/a&gt;&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;AWS Cloudfront&lt;/td&gt;
					&lt;td&gt;217&lt;/td&gt;
					&lt;td&gt;*.amazonaws.com &amp;amp; *.awsstatic.com&lt;/td&gt;
					&lt;td&gt;&lt;a href=&#34;https://cdn.anuragbhatia.com/web/post/2026/06/cdn-mapping-across-the-globe/aws-cloudfront.csv&#34;&gt;csv&lt;/a&gt; &amp;amp; &lt;a href=&#34;https://cdn.anuragbhatia.com/web/post/2026/06/cdn-mapping-across-the-globe/aws-cloudfront.json&#34;&gt;json&lt;/a&gt;&lt;/td&gt;
			&lt;/tr&gt;
	&lt;/tbody&gt;
&lt;/table&gt;
&lt;br /&gt;
&lt;h3 id=&#34;asn-cdn-mapping-table&#34;&gt;ASN-CDN Mapping table&lt;/h3&gt;
&lt;p&gt;I have mapped ASNs with the presence of each of these CDNs like last time. This makes it easy to read the data instead of going through each of the files separately.&lt;/p&gt;
&lt;p&gt;Full data in Google Sheet &lt;a href=&#34;https://docs.google.com/spreadsheets/d/1KMVtOQoNKH6zZU1MeaX61PPOOOIzSinfUxk2yjo043s/edit?usp=sharing&#34;&gt;link here&lt;/a&gt; and raw CSV is also published &lt;a href=&#34;https://cdn.anuragbhatia.com/web/post/2026/06/cdn-mapping-across-the-globe/ASN-wise-CDN-mapping.csv&#34;&gt;here&lt;/a&gt;.&lt;/p&gt;
&lt;br /&gt;
&lt;p&gt;&lt;strong&gt;Notes&lt;/strong&gt;:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Facebook FNA serving Facebook with *.fbcdn.net is almost the same if I look for *.fna.whatsapp.net.&lt;/li&gt;
&lt;li&gt;Apple seems to have presence in over 236 locations with PCH/Woodynet for hosting their DNS over HTTPS endpoint: doh.dns.apple.com (detailed list here)&lt;/li&gt;
&lt;li&gt;GGC has a global coverage across 215 countries across the world, followed by Facebook FNA/MNA at 204, Netflix at 181 and Akamai at 146. Out of these 172 are common countries across all these.&lt;/li&gt;
&lt;/ul&gt;
&lt;br /&gt;
&lt;h3 id=&#34;map&#34;&gt;Map&lt;/h3&gt;
&lt;iframe src=&#34;https://www.google.com/maps/d/u/0/embed?mid=1AHRJ8wfAVk2nHYWuO8Mojs0zp__9V0o&amp;ehbc=2E312F&#34; width=&#34;640&#34; height=&#34;480&#34;&gt;&lt;/iframe&gt;
&lt;p&gt;&lt;br /&gt;&lt;br /&gt;&lt;/p&gt;
&lt;h3 id=&#34;indian-summary&#34;&gt;Indian summary&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;GGC increased from 228 Indian ASNs to 252 between Dec 2022 and June 2026&lt;/li&gt;
&lt;li&gt;FNA increased from 125 Indian ASNs to 199 between May 2025 and June 2026&lt;/li&gt;
&lt;li&gt;Akamai has increased from 70 Indians to 74 Indian ASNs between Dec 2022 and June 2026&lt;/li&gt;
&lt;/ul&gt;
&lt;br /&gt;
&lt;h3 id=&#34;notes-on-the-accuracy-of-data&#34;&gt;Notes on the accuracy of data&lt;/h3&gt;
&lt;p&gt;As explained in the logic - the data is based on the common name in the TLS certificates. If a server does not present the certificate or if these CDNs are using a domain which is not well known yet, I would miss that in this data. Thus as usual - what you see here does exist for sure but there could be more outside of this data.&lt;/p&gt;
&lt;br /&gt;
&lt;p&gt;&lt;strong&gt;Disclaimer&lt;/strong&gt;: This is my personal blog, and hence, posts made here are in my personal capacity. These do not represent the views of my employer.&lt;/p&gt;
</description>
    </item>
    
    <item>
      <title>Measuring IPv6 deployment on Indian Govt websites</title>
      <link>https://anuragbhatia.com/post/2026/06/ipv6-on-indian-govt-websites/</link>
      <pubDate>Fri, 05 Jun 2026 01:49:53 +0530</pubDate>
      
      <guid>https://anuragbhatia.com/post/2026/06/ipv6-on-indian-govt-websites/</guid>
      <description>&lt;p&gt;India has done well on IPv6 deployment thanks to Jio taking the lead in 2016, along with Airtel &amp;amp; VI aggressively catching up. Many of us in the industry are very proud of the work done by these players, resulting in over 78% deployment of IPv6 when measured by &lt;a href=&#34;https://stats.labs.apnic.net/ipv6/IN?o=cXTw30x1r1&#34;&gt;APNIC&lt;/a&gt; / &lt;a href=&#34;https://www.google.com/intl/en/ipv6/statistics.html#tab=per-country-ipv6-adoption&#34;&gt;Google&lt;/a&gt;, etc. Jio and Airtel numbers are as high as 95% IPv6 preferred at this point in time.&lt;/p&gt;
&lt;p&gt;But that&amp;rsquo;s one part of the Indian metrics. IPv6 deployment, DNSSEC usage or even Internet Exchange peering - one can find very different metrics depending on how one is measuring. Both APNIC &amp;amp; Google rely on Google&amp;rsquo;s network and judge how (largely mobile) end users across India are connecting to their (IPv6-enabled) services, and this gives the &amp;ldquo;eyeballs&amp;rdquo; side of specs.&lt;/p&gt;
&lt;p&gt;One key element missing in the picture is IPv6 support on the Government of India websites. I am using &amp;ldquo;Govt. of India&amp;rdquo; loosely here. I mean the Central Govt, state governments, as well as UTs and any of their departments. I have always felt that deployment is very poor, as randomly looking across the critical government websites. The service either shows no DNS AAAA record or may have a AAAA record but does not respond to port 80/443, giving an idea of a broken deployment.&lt;/p&gt;
&lt;p&gt;Measuring deployment is hard since &lt;em&gt;(as far as I know)&lt;/em&gt; there is no authoritative source of government domains. Likely NIXI or ERNET, etc. may hold them but then getting them may be a long process and may not work at all. Then I thought of certificate transparency logs. Most of the CAs would log TLS certificates issued in public logs. One can read these logs for *.gov.in and *.nic.in to get a list of all government. used domains under those well-known TLDs and the ones which took a TLS certificate. I did some extra checks, like verifying the A record, working website on IPv4, before looking for IPv6. That way I remove all non-existent/old/expired websites. Also, looked for &lt;domain&gt; and www.&lt;domain&gt; in some cases as TLS may be issued for both. In case of wildcard TLS certificates like *.&lt;something-here&gt;.gov.in, I looked at &lt;something-here&gt;.gov.in again to see if the website exists on IPv4 and if yes, explored IPv6 deployment on it.&lt;/p&gt;
&lt;br /&gt;
&lt;h4 id=&#34;result&#34;&gt;Result&lt;/h4&gt;
&lt;ul&gt;
&lt;li&gt;There are 3068 visible domains under *.gov.in (with TLS) with a working website IPv4.&lt;/li&gt;
&lt;li&gt;Out of these 3068, only 140 have working IPv6 on the web, i.e., an IPv6 endpoint is successfully serving the website.&lt;/li&gt;
&lt;li&gt;There are 1856 domains under *.nic.in (with TLS) with a working website on IPv4.&lt;/li&gt;
&lt;li&gt;Out of these 1856, only 34 have working IPv6 on the web&lt;/li&gt;
&lt;li&gt;Majority of websites with working IPv6 are on either Cloudflare, Akamai or Amazon AWS.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;img src=&#34;https://cdn.anuragbhatia.com/web/post/2026/06/ipv6-on-indian-govt-websites/goi_web_ipv6.svg&#34; alt=&#34;&#34;&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://cdn.anuragbhatia.com/web/post/2026/06/ipv6-on-indian-govt-websites/ipv6-chart.svg&#34; alt=&#34;&#34;&gt;&lt;/p&gt;
&lt;p&gt;Thus, out of the total websites (4924), only 174 i.e 3.5% seems to have IPv6 deployed. There are also 13 websites which have DNS AAAA record pointing these domains to an IPv6 address but they don&amp;rsquo;t reply on port 443 when queried over IPv6.&lt;/p&gt;
&lt;br /&gt;
&lt;p&gt;&lt;strong&gt;Sites&amp;rsquo;s with broken IPv6 deployment:&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;meity.gov.in&lt;/li&gt;
&lt;li&gt;accounting.sthreenidhi.ap.gov.in&lt;/li&gt;
&lt;li&gt;dgma.gov.in&lt;/li&gt;
&lt;li&gt;digitalgujarat.gov.in&lt;/li&gt;
&lt;li&gt;lms.istart.rajasthan.gov.in&lt;/li&gt;
&lt;li&gt;sampada-mofpi.gov.in&lt;/li&gt;
&lt;li&gt;serp.ap.gov.in&lt;/li&gt;
&lt;li&gt;sthreenidhi.ap.gov.in&lt;/li&gt;
&lt;li&gt;wdra.gov.in&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://www.aistic.gov.in&#34;&gt;www.aistic.gov.in&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://www.statedrugs.gov.in&#34;&gt;www.statedrugs.gov.in&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;mpforest.gov.in&lt;/li&gt;
&lt;li&gt;wdra.gov.in&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Raw data: Raw CSV for the lookup is &lt;a href=&#34;https://cdn.anuragbhatia.com/web/post/2026/06/ipv6-on-indian-govt-websites/gov.in_lookup.txt&#34;&gt;here&lt;/a&gt; for *.gov.in and &lt;a href=&#34;https://cdn.anuragbhatia.com/web/post/2026/06/ipv6-on-indian-govt-websites/nic.in_lookup.txt&#34;&gt;here&lt;/a&gt; for *.nic.in.&lt;/p&gt;
</description>
    </item>
    
    <item>
      <title>Airtel-Tata Comm routing is cold potato in India?</title>
      <link>https://anuragbhatia.com/post/2026/05/airtel-tata-comm-routing/</link>
      <pubDate>Wed, 20 May 2026 18:50:53 +0530</pubDate>
      
      <guid>https://anuragbhatia.com/post/2026/05/airtel-tata-comm-routing/</guid>
      <description>&lt;p&gt;Over the years, I have seen a number of traces between Airtel (AS9498) and Tata Comm (AS4755) in India, which strongly suggests that routing tends to be &amp;lsquo;cold potato&amp;rsquo; between them. By default, routing between large backbones that interconnect across different locations is typically &amp;lsquo;hot potato&amp;rsquo; - meaning traffic exits to other ASNs as close to the source as possible&lt;/p&gt;
&lt;br /&gt;
&lt;h3 id=&#34;hot-potato-routing-is-common&#34;&gt;Hot potato routing is common&lt;/h3&gt;
&lt;p&gt;Hot potato routing is quite common across large backbones. Let&amp;rsquo;s analyse this concept by tracing between Arelion AS1299 and Cogent AS174 from their respective looking glasses.&lt;/p&gt;
&lt;p&gt;Trace Arelion AS1299 (Frankfurt) -&amp;gt; Cogent AS174 (San Francisco) - 66.250.250.146 (ism01.sfo01.atlas.cogentco.com):&lt;/p&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;Router: ffm-b11 / Frankfurt (Equinix FR5, Kleyerstrasse)
Command: traceroute ipv4 66.250.250.146 timeout 1 source Loopback0

Tracing the route to 66.250.250.146

1   *  *  * 
2  be7948.ccr42.fra05.atlas.cogentco.com (154.54.72.126) 1 msec  1 msec 
be5484.ccr41.fra05.atlas.cogentco.com (130.117.1.1) 1 msec 
3  be3343.ccr41.ams03.atlas.cogentco.com (154.54.62.142) 9 msec 
be2950.ccr42.ams03.atlas.cogentco.com (154.54.72.41) 9 msec 
be3343.ccr41.ams03.atlas.cogentco.com (154.54.62.142) 9 msec 
4  be9036.ccr82.lon05.atlas.cogentco.com (154.54.72.185) 104 msec 
be2182.ccr21.lpl01.atlas.cogentco.com (154.54.77.246) 104 msec  104 msec 
5  port-channel8444.ccr92.lhr01.atlas.cogentco.com (154.54.72.182) 16 msec 
port-channel3464.ccr91.lhr01.atlas.cogentco.com (154.54.75.150) 17 msec  17 msec 
6  be8668.ccr31.bos01.atlas.cogentco.com (154.54.167.29) 99 msec 
be3501.ccr42.jfk02.atlas.cogentco.com (154.54.95.101) 101 msec 
be8668.ccr31.bos01.atlas.cogentco.com (154.54.167.29) 104 msec 
7  be8030.ccr22.alb02.atlas.cogentco.com (154.54.169.226) 104 msec 
port-channel2994.ccr92.cle04.atlas.cogentco.com (154.54.31.233) 99 msec 
be8029.ccr21.alb02.atlas.cogentco.com (154.54.169.222) 104 msec 
8  be2718.ccr42.ord01.atlas.cogentco.com (154.54.7.129) 101 msec 
port-channel8023.ccr92.cle04.atlas.cogentco.com (154.54.169.197) 99 msec  99 msec 
9  be5214.ccr31.oma02.atlas.cogentco.com (154.54.165.133) 126 msec 
be2717.ccr41.ord01.atlas.cogentco.com (154.54.6.221) 103 msec  103 msec 
10 be5214.ccr31.oma02.atlas.cogentco.com (154.54.165.133) 115 msec  115 msec 
be5068.ccr32.oma02.atlas.cogentco.com (154.54.166.73) 116 msec 
11 be6904.ccr81.den01.atlas.cogentco.com (154.54.95.97) 124 msec 
be8568.ccr82.den01.atlas.cogentco.com (154.54.95.109) 126 msec 
be2353.ccr81.slc03.atlas.cogentco.com (154.54.5.102) 132 msec 
12 be3906.ccr22.sfo01.atlas.cogentco.com (154.54.5.154) 152 msec 
be9563.ccr82.slc03.atlas.cogentco.com (154.54.163.206) 135 msec 
be2353.ccr81.slc03.atlas.cogentco.com (154.54.5.102) 159 msec 
13 be3906.ccr22.sfo01.atlas.cogentco.com (154.54.5.154) 150 msec 
be2902.agr21.sfo01.atlas.cogentco.com (154.54.3.50) 149 msec 
be3905.ccr21.sfo01.atlas.cogentco.com (154.54.1.210) 150 msec 
14 be2903.agr21.sfo01.atlas.cogentco.com (154.54.6.202) 151 msec 
be2902.agr21.sfo01.atlas.cogentco.com (154.54.3.50) 153 msec 
be2903.agr21.sfo01.atlas.cogentco.com (154.54.6.202) 151 msec 
15 ism01.sfo01.atlas.cogentco.com (66.250.250.146) !A  !A  !A 
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;The trace shows the first hop timed out, and the second hop indicates a handover to Cogent, which subsequently routes the traffic to the US. This suggests that &lt;strong&gt;Cogent is responsible for carrying traffic between Germany and the US&lt;/strong&gt; when the destination is also on the Cogent network.&lt;/p&gt;
&lt;p&gt;Let&amp;rsquo;s check the reverse:&lt;/p&gt;
&lt;p&gt;Cogent San Francisco -&amp;gt; Arelion Frankfurt - 62.115.129.161 (ffm-b11.ip.twelve99.net):&lt;/p&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt; traceroute to ffm-b11.ip.twelve99.net. (62.115.129.161), 30 hops max, 60 byte packets
 1  gi100-0-0-40.agr21.sfo01.atlas.cogentco.com (66.250.250.145)  0.673 ms  0.641 ms
 2  be2903.ccr22.sfo01.atlas.cogentco.com (154.54.6.201)  0.917 ms  1.010 ms
 3  be2379.ccr31.sjc04.atlas.cogentco.com (154.54.42.158)  1.431 ms be2430.ccr31.sjc04.atlas.cogentco.com (154.54.88.186)  1.518 ms
 4  palo-b24-link.ip.twelve99.net (62.115.174.64)  1.185 ms  1.190 ms
 5  palo-bb4-link.ip.twelve99.net (62.115.139.110)  4.864 ms  4.172 ms
 6  den-bb2-link.ip.twelve99.net (62.115.139.113)  354.428 ms  26.677 ms
 7  kanc-bb2-link.ip.twelve99.net (62.115.137.115)  39.102 ms chi-bb1-link.ip.twelve99.net (62.115.115.77)  48.806 ms
 8  chi-bb2-link.ip.twelve99.net (62.115.136.102)  46.750 ms  46.933 ms
 9  ldn-bb1-link.ip.twelve99.net (62.115.139.245)  136.341 ms ewr-bb2-link.ip.twelve99.net (62.115.132.134)  63.423 ms
10  ldn-bb2-link.ip.twelve99.net (62.115.139.247)  134.406 ms  134.345 ms
11  prs-bb2-link.ip.twelve99.net (62.115.133.239)  135.638 ms  135.602 ms
12  * ffm-b11-link.ip.twelve99.net (62.115.124.117)  148.809 ms
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;As is visible, traffic is handed over to Arelion on the 4th hop to Arelion within the Bay area (San Jose) and then Arelion carries it to Europe. &lt;strong&gt;It&amp;rsquo;s a standard practice and almost all major backbones have it&lt;/strong&gt; as long as they are peering on multiple continents.&lt;/p&gt;
&lt;br /&gt;
&lt;h3 id=&#34;airtel---tata-comm-routing-in-india&#34;&gt;Airtel - Tata Comm routing in India&lt;/h3&gt;
&lt;p&gt;Coming to the Airtel - Tata Comm routing case, I don&amp;rsquo;t have access to full tables with BGP tables with BGP communities, but can certainly trace &amp;amp; do some tricks with trace to establish whether it&amp;rsquo;s hot potato or cold potato routing.&lt;/p&gt;
&lt;p&gt;Trace from Airtel Haryana -&amp;gt; Tata Comm Chennai speedtest node:&lt;/p&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;mtr ookla.cn.as6453.net -wby0 -4
Start: 2026-05-20T18:51:59+0530
HOST: rtk01.anuragbhatia.com                                                Loss%   Snt   Last   Avg  Best  Wrst StDev
 1. AS???    172.16.16.1                                                    0.0%    10    0.3   0.3   0.3   0.4   0.0
 2. AS???    10.240.9.204                                                   0.0%    10    6.2   6.3   4.2  12.8   2.5
 3. AS???    ???                                                           100.0    10    0.0   0.0   0.0   0.0   0.0
 4. AS9498   169.168.18.125.dhcp.anaronline.net (125.18.168.169)            0.0%    10    5.0   8.8   4.9  22.0   5.9
 5. AS???    116.119.164.99                                                 0.0%    10   28.5  30.1  28.5  31.9   1.1
 6. AS4755   115.110.234.141.static.Mumbai.vsnl.net.in (115.110.234.141)    0.0%    10   31.9  33.5  31.9  35.8   1.3
 7. AS???    ???                                                           100.0    10    0.0   0.0   0.0   0.0   0.0
 8. AS4755   115.110.96.156.static-Ahmedabad.vsnl.net.in (115.110.96.156)   0.0%    10   50.4  50.9  49.2  52.1   0.9
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Ignore AS6453 in hostname (it&amp;rsquo;s AS4755), ignore Ahmedabad in reverse DNS as it&amp;rsquo;s Chennai and also ignore &amp;ldquo;anaronline.net&amp;rdquo; in hope 4 - it&amp;rsquo;s just an Airtel router with this outdated PTR in Saha, Ambala, Haryana. 😀
With those three things out of the way, the trace shows Hop 5 with 28ms latency, indicating a Mumbai-based hop, followed by Hop 6, which is the Tata Comm IP.&lt;/p&gt;
&lt;p&gt;So there are two possibilities here:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;Hop 5 is Tata Comm AS4755 router sitting on Airtet&amp;rsquo;s IPv4. The chance of it is very low because a) Hop 4 is a known non-peering location (Ambala) for Airtel. It would be very unusual for them to have a circuit from Ambala to Mumbai with Airtel side in Ambala peering with the Tata Comm side in Mumbai. b) Usually networks interconnect over a /30 or /31. If it were a /30 CIDR block, 116.119.164.99 would fall within 116.119.164.96/30, requiring the use of .97 and .98, which is not the case. If it were a /31, it would be 116.119.164.98/31, with one side at .98 (Ambala) and the other at .99 (Mumbai). 116.119.164.99 is in Mumbai for sure as I have servers in Mumbai directly connected to Airtel and it&amp;rsquo;s 1.7ms away but then .98 from my home in Haryana should be 5ms, but it&amp;rsquo;s 85ms.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Hop 5 is Airtel, hop 6 is Tata Comm and interconnection (PNI) is between hop 5 and hop 6.  In this case likely 115.110.234.140/30 is used with .141 on the Tata Comm side and .142 on the Airtel side. It cannot be /31 as in that case it would be .141 and .140 and .140 is not reachable. From my server in Mumbai connected to Tata Comm, I see 4 hops to .141 and 5 hops to .142. So it&amp;rsquo;s safe to establish that this is indeed the case.&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;So for traffic from Airtel Haryana to Tata Comm Chennai, traffic handover happened far off in Mumbai with &lt;strong&gt;Airtel carrying traffic till Mumbai&lt;/strong&gt;.
Let&amp;rsquo;s see how it is in reverse: OVH Mumbai (behind Tata Comm) to speedtestsaha1.airtel.in (Airtel Ambala Speedtest):&lt;/p&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;&amp;gt; Mumbai, IN, AS, OVH (AS16276)
Host                                                                    Loss% Drop Rcv  Avg  StDev  Javg 
 1. AS16276 _gateway (148.113.1.252)                                     0.0%    0   3  0.5    0.0   0.3
 2. AS???   10.164.249.124 (10.164.249.124)                              0.0%    0   3  0.3    0.1   0.1
 3. AS???   10.133.49.24 (10.133.49.24)                                  0.0%    0   3  0.4    0.1   0.3
 4. AS???   10.75.24.26 (10.75.24.26)                                    0.0%    0   3  0.2    0.0   0.1
 5. AS???   10.75.248.194 (10.75.248.194)                                0.0%    0   3  2.3    0.5   1.9
 6. AS???   10.75.248.200 (10.75.248.200)                                0.0%    0   3  2.4    0.6   2.0
 7. AS16276 bom-ynm1-sbb1-8k.ind.asia (103.5.12.8)                       0.0%    0   3  2.2    0.6   1.7
 8. AS???   10.200.4.7 (10.200.4.7)                                      0.0%    0   3  0.3    0.0   0.2
 9. AS???   (waiting for reply)                                       
10. AS???   (waiting for reply)                                       
11. AS4755  115.110.210.66.static-Delhi.vsnl.net.in (115.110.210.66)     0.0%    0   3 52.6    0.1  26.4
12. AS9498  116.119.50.26 (116.119.50.26)                                0.0%    0   3 57.2    0.1  28.7
13. AS9498  nsg-corporate-130.219.185.122.airtel.in (122.185.219.130)    0.0%    0   3 57.0    0.1  28.6
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Hops 8, 9 &amp;amp; 10 keep timing out no matter how many times I try. Hop 11 - that&amp;rsquo;s a Tata Comm IP as visible from reverse DNS and ASN mapping. This could actually be Tata Comm IP on Tata Comm router OR Tata Comm IP on Airtel router (part of /30 peering). 115.110.210.66 is from 115.110.210.64/30 with .65 and .66 as usable IPs.&lt;/p&gt;
&lt;p&gt;Let&amp;rsquo;s trace from my home:&lt;/p&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;HOST: rtk01.anuragbhatia.com                                            Loss%   Snt   Last   Avg  Best  Wrst StDev
 1. AS???    172.16.16.1                                                0.0%    10    0.3   0.3   0.2   0.4   0.1
 2. AS???    10.240.9.204                                               0.0%    10   27.8  17.6   4.2  64.0  18.9
 3. AS???    172.31.0.195                                               0.0%    10  1171. 1352. 1068. 1656. 231.4
 4. AS9498   173.168.18.125.dhcp.anaronline.net (125.18.168.173)        0.0%    10   12.6   8.1   4.9  13.1   2.8
 5. AS4755   115.110.210.66.static-Delhi.vsnl.net.in (115.110.210.66)   0.0%    10   11.2  11.7   9.5  13.8   1.5
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;This strongly hints that 115.110.210.66 is a Tata Comm IP on an Airtel router because hop 4 (Ambala) is not known to be connecting to outside networks. So, it is highly likely that 115.110.210.66 is IPv4 on an Airtel router in Delhi NCR. Let&amp;rsquo;s check for .65 to see if it adds exactly one hop extra:&lt;/p&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;HOST: rtk01.anuragbhatia.com                                            Loss%   Snt   Last   Avg  Best  Wrst StDev
 1. AS???    172.16.16.1                                                0.0%    10    0.3   0.4   0.2   0.7   0.1
 2. AS???    10.240.9.204                                               0.0%    10    5.0   7.6   4.5  22.5   5.4
 3. AS???    ???                                                       100.0    10    0.0   0.0   0.0   0.0   0.0
 4. AS9498   169.168.18.125.dhcp.anaronline.net (125.18.168.169)        0.0%    10    4.4   6.4   4.4   8.6   1.4
 5. AS???    116.119.161.28                                             0.0%    10   15.8  19.0  10.6  32.7   6.4
 6. AS4755   115.110.210.65.static-Delhi.vsnl.net.in (115.110.210.65)   0.0%    10   13.1  12.4  10.5  14.4   1.3
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;With this it&amp;rsquo;s safe to say that in OVH trace, hop 11 is an Airtel router on Tata Comm IP &amp;amp; both .65 (Tata Comm) - .66 (Airtel) are in Delhi NCR. This means routing was as follows: OVH Mumbai &amp;gt; Tata Comm Mumbai &amp;gt; Tata Comm Delhi (one of those hops timing out) &amp;gt; Airtel Delhi &amp;gt; Airtel Ambala. So again, &lt;strong&gt;handover happened near destination &amp;amp; not the source - cold potato routing&lt;/strong&gt;.&lt;/p&gt;
&lt;p&gt;One more trace: Tata Comm AS4755 Bangalore -&amp;gt; speedtestggn1.airtel.in (Airtel speeddtest, Gurgaon) from active RIPE Atlas probe (#50525):&lt;/p&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;RESOLVED speedtestggn1.airtel.in TO 223.224.79.2
STARTED QUERY AT 2026/05/20 14:44:28 UTC

Fetching Measurement: 172850592
Traceroute from 193.32.247.8 to 223.224.79.2 (223.224.79.2):
1 121.242.164.33.static-Bangalore.vsnl.net.in (121.242.164.33) 1.239ms 0.764ms 0.716ms  
2 219.65.110.33.static-bangalore.vsnl.net.in (219.65.110.33) 1.837ms 2.054ms 1.606ms  
3 172.31.155.74 44.018ms 33.515ms 33.377ms  
4 115.110.232.174.static.Delhi.vsnl.net.in (115.110.232.174) 39.724ms 39.559ms 39.534ms  
5 116.119.109.16 35.586ms 35.628ms 35.488ms  
6 dsl-tn-dynamic-138.223.22.125.airtelbroadband.in (125.22.223.138) 37.125ms 37.273ms 37.094ms  
7 223.224.79.2 37.375ms 37.318ms 37.437ms  
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Again, hop 4 - 115.110.232.174 is Tata Comm&amp;rsquo;s IP on the Airtel router and thus interconnection happens before that. Hop 3 has to be Tata Comm and since latency is already 33ms, it confirms &lt;strong&gt;Tata Comm carried traffic till Delhi NCR and handover happened far from the origin&lt;/strong&gt;.&lt;/p&gt;
&lt;p&gt;Another test: RIPE Atlas probe (#1009203) on Excitel Delhi (behind Tata Comm) &amp;gt; Airtel Mumbai speedtest:&lt;/p&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;Fetching Measurement: 172853300
Traceroute from 172.21.0.2 to 182.78.248.10 (182.78.248.10):
1 172.21.0.1 0.101ms 0.073ms 0.111ms  
2 192.168.1.1 1.222ms 0.678ms 1.024ms  
3 103.212.157.10 1.496ms 1.94ms 2.639ms  
4 103.212.157.1 4.718ms 4.759ms 9.593ms  
5 14.140.113.29.static-Delhi-vsnl.net.in (14.140.113.29) 3.302ms 3.987ms 3.292ms  
6 172.23.78.234 25.475ms 25.656ms 25.618ms  
7 115.110.234.142.static.Mumbai.vsnl.net.in (115.110.234.142) 29.061ms 53.108ms 29.121ms  
8 116.119.121.198 26.656ms 26.289ms 26.564ms  
9 speedtestmum1.airtel.in (182.78.248.10) 29.857ms 28.881ms 28.397ms  
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Excitel hands over to Tata Comm within Delhi (3ms latency). Hop 6 is Mumbai-based on latency (likely Tata Comm&amp;rsquo;s private IP) and hop 7 is Tata&amp;rsquo;s IP on Airtel.
Again, hop 7 - 115.110.234.142 is part of 115.110.234.140/30 with .141 and .142. Likely .142 is Airtel and .141 is Tata Comm. Let&amp;rsquo;s verify with trace to see if there&amp;rsquo;s an exact 1 hop difference:&lt;/p&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;HOST: bom01.anuragbhatia.com                                               Loss%   Snt   Last   Avg  Best  Wrst StDev
 1. AS31898  140.91.204.7                                                  0.0%    10    0.3   0.3   0.2   0.3   0.0
 2. AS4755   121.241.5.170.mumbai-static.vsnl.net.in (121.241.5.170)       0.0%    10    1.0   1.1   0.9   1.6   0.2
 3. AS4755   121.241.5.169.mumbai-static.vsnl.net.in (121.241.5.169)       0.0%    10    1.4   1.3   1.1   1.5   0.1
 4. AS4755   115.110.234.141.static.Mumbai.vsnl.net.in (115.110.234.141)   0.0%    10    1.9   2.3   1.6   7.1   1.7
&lt;/code&gt;&lt;/pre&gt;&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;HOST: bom01.anuragbhatia.com                                               Loss%   Snt   Last   Avg  Best  Wrst StDev
 1. AS31898  140.91.204.33                                                 0.0%    10    0.2   0.3   0.2   0.4   0.1
 2. AS4755   121.241.5.170.mumbai-static.vsnl.net.in (121.241.5.170)       0.0%    10    1.0   1.0   0.8   1.2   0.1
 3. AS4755   121.241.5.169.mumbai-static.vsnl.net.in (121.241.5.169)       0.0%    10    1.3   1.4   1.2   1.6   0.1
 4. AS???    ???                                                          100.0    10    0.0   0.0   0.0   0.0   0.0
 5. AS4755   115.110.234.142.static.Mumbai.vsnl.net.in (115.110.234.142)   0.0%    10    2.3   3.9   2.0  18.5   5.1
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;This confirms hop 7 in the Excitel trace is Tata Comm&amp;rsquo;s IP on the Airtel router and hence handover happened between 6 &amp;amp; 7 with 6 in Mumbai itself. So again, &lt;strong&gt;Tata Comm carried over traffic over long distance Delhi -&amp;gt; Mumbai when the destination was Airtel&lt;/strong&gt;.&lt;/p&gt;
&lt;p&gt;I think it&amp;rsquo;s safe to conclude with all these traces that &lt;strong&gt;Airtel &amp;amp; Tata Comm follow cold potato routing in India&lt;/strong&gt;. Each carries traffic over its own backbone over long distances and hands it over only close to the destination.&lt;/p&gt;
&lt;br /&gt;
&lt;h3 id=&#34;why-its-cold-potato-routing&#34;&gt;Why it&amp;rsquo;s cold potato routing?&lt;/h3&gt;
&lt;p&gt;Hard to know for sure but I guess the same set of people would have handled Airtel - Tata Comm PNI who also handled NIXI peering. Operators were used to regional route announcement (only) at NIXI and hence the same continued in private peering as well. Likely Airtel is announcing North Indian routes to Tata Comm in Delhi PNI (only), Western routes in Mumbai PNI etc with some overlap between Mumbai &amp;amp; Chennai for Bangalore/Kolkata routes to balance off PNIs. Same with the Tata Comm side as well. Changing it at later stage would need coordination for re-balancing traffic over PNIs which would add to the friction.&lt;/p&gt;
&lt;p&gt;This can always lead to some missed routes, resulting in them not being announced at any peering &amp;amp; thus would take a scenic route via transit-free settlement backbones like AS6453 (technical upstream of AS4755, partially of AS9498 as well) and for AS9498 - AS1299/174/AS2914 etc.&lt;/p&gt;
&lt;br /&gt;
&lt;p&gt;&lt;strong&gt;Disclaimer&lt;/strong&gt;: This is my personal blog, and hence, posts made here are in my personal capacity. These do not represent the views of my employer.&lt;/p&gt;
</description>
    </item>
    
    <item>
      <title>Strange route with Jio and GTT as adjacency</title>
      <link>https://anuragbhatia.com/post/2026/05/jio-gtt-strange-route/</link>
      <pubDate>Fri, 01 May 2026 01:12:16 +0530</pubDate>
      
      <guid>https://anuragbhatia.com/post/2026/05/jio-gtt-strange-route/</guid>
      <description>&lt;p&gt;Last month (on 18th April 2026), I saw an alert for a strange route announcement:&lt;/p&gt;
&lt;table&gt;
	&lt;thead&gt;
			&lt;tr&gt;
					&lt;th&gt;Prefix&lt;/th&gt;
					&lt;th&gt;AS Path&lt;/th&gt;
					&lt;th&gt;Origin ASN&lt;/th&gt;
			&lt;/tr&gt;
	&lt;/thead&gt;
	&lt;tbody&gt;
			&lt;tr&gt;
					&lt;td&gt;117.120.58.0/23&lt;/td&gt;
					&lt;td&gt;262427 262761 263444 6453 3257 55836 9498 134863&lt;/td&gt;
					&lt;td&gt;134863&lt;/td&gt;
			&lt;/tr&gt;
	&lt;/tbody&gt;
&lt;/table&gt;
&lt;br /&gt;
&lt;h3 id=&#34;background&#34;&gt;Background&lt;/h3&gt;
&lt;p&gt;While this specific alert triggered because it had three large Indian backbones - Tata Comm (AS6453), Jio (AS55836) and Airtel (AS9498) and normally this would appear just as a leak by Jio for routes learnt from Airtel (a known peer of Jio), but AS3257 before Jio makes it strange and interesting. AS3257 is a known transit-free network GTT. Jio is not known to be connected to them at all. Jio does have a mix of transit &amp;amp; peering internationally via AS64049 but not via AS55836. When they started, they had some transit via Tata Comm (AS4755) for a few early days of the launch. After that AS55836 only has peering with Tata Comm (AS4755) and Airtel (AS9498), besides technically transit via their own AS64049 which takes transit from Arelion (AS1299), Cogent (AS174) and NTT (AS2914) and a mix of transit/peering relations with Lumen (AS3356).&lt;/p&gt;
&lt;br /&gt;
&lt;h3 id=&#34;who-possibly-caused-it&#34;&gt;Who possibly caused it?&lt;/h3&gt;
&lt;p&gt;The AS_PATH here: &lt;code&gt;262427 262761 263444 6453 3257 55836 9498 134863&lt;/code&gt; can be read backwards to understand the announcement:&lt;/p&gt;
&lt;p&gt;SP Internet (134863) &amp;gt; Airtel (9498) &amp;gt; Jio (55836) &amp;gt; GTT (AS3257) &amp;gt; Tata Comm (AS6453) &amp;gt;  Open X Tecnologia (AS263444) &amp;gt; Sinal Br Telecom (AS262761) &amp;gt; Invista Net Provedor (AS262427). As mentioned in a &lt;a href=&#34;https://anuragbhatia.com/post/2025/02/analysing-transit-free-networks/&#34;&gt;post last year&lt;/a&gt;, I hold recent routes in a Clickhouse table from various route collectors. This makes it easy to query a large number of routes quickly.&lt;/p&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;SELECT count(*)
FROM bgp.table

Query id: df33f954-7fbd-41a3-8de2-184990ca06d4

   ┌─────count()─┐
1. │ 68882920533 │ -- 68.88 billion
   └─────────────┘

1 row in set. Elapsed: 0.034 sec. 
&lt;/code&gt;&lt;/pre&gt;&lt;br /&gt;
&lt;p&gt;Let&amp;rsquo;s ask this table of 68.88 billion routes for routes matching AS_PATH: 3257 55836:&lt;/p&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;SELECT timestamp, prefix, as_path, collector
FROM bgp.table
WHERE arrayExists(i -&amp;gt; ((i &amp;lt; length(as_path)) AND ((as_path[i]) = 3257) AND ((as_path[i + 1]) = 55836)), arrayEnumerate(as_path))

Query id: 6805de6a-c1c5-47e8-ab83-9e1549527d65

   ┌───────────timestamp─┬─prefix──────────┬─as_path────────────────────────────────────────────┬─collector─────────────┐
1. │ 2026-04-19 02:00:03 │ 117.120.58.0/23 │ [262427,262761,263444,6453,3257,55836,9498,134863] │ route-views.rio       │
2. │ 2026-04-19 02:00:03 │ 117.120.58.0/23 │ [262427,262761,263444,6453,3257,55836,9498,134863] │ route-views.fortaleza │
   └─────────────────────┴─────────────────┴────────────────────────────────────────────────────┴───────────────────────┘
   ┌───────────timestamp─┬─prefix──────────┬─as_path────────────────────────────────────────────┬─collector───────┐
3. │ 2026-04-19 04:00:02 │ 117.120.58.0/23 │ [262427,262761,263444,6453,3257,55836,9498,134863] │ route-views.rio │
   └─────────────────────┴─────────────────┴────────────────────────────────────────────────────┴─────────────────┘
   ┌───────────timestamp─┬─prefix──────────┬─as_path────────────────────────────────────────────┬─collector─────────────┐
4. │ 2026-04-19 04:00:03 │ 117.120.58.0/23 │ [262427,262761,263444,6453,3257,55836,9498,134863] │ route-views.fortaleza │
5. │ 2026-04-19 06:00:03 │ 117.120.58.0/23 │ [262427,262761,263444,6453,3257,55836,9498,134863] │ route-views.fortaleza │
   └─────────────────────┴─────────────────┴────────────────────────────────────────────────────┴───────────────────────┘
   ┌───────────timestamp─┬─prefix──────────┬─as_path────────────────────────────────────────────┬─collector───────┐
6. │ 2026-04-19 06:00:04 │ 117.120.58.0/23 │ [262427,262761,263444,6453,3257,55836,9498,134863] │ route-views.rio │
7. │ 2026-04-18 16:00:03 │ 117.120.58.0/23 │ [262427,262761,263444,6453,3257,55836,9498,134863] │ route-views.rio │
   └─────────────────────┴─────────────────┴────────────────────────────────────────────────────┴─────────────────┘
   ┌───────────timestamp─┬─prefix──────────┬─as_path────────────────────────────────────────────┬─collector─────────────┐
8. │ 2026-04-18 16:00:04 │ 117.120.58.0/23 │ [262427,262761,263444,6453,3257,55836,9498,134863] │ route-views.fortaleza │
   └─────────────────────┴─────────────────┴────────────────────────────────────────────────────┴───────────────────────┘
    ┌───────────timestamp─┬─prefix──────────┬─as_path────────────────────────────────────────────┬─collector─────────────┐
 9. │ 2026-04-18 18:00:03 │ 117.120.58.0/23 │ [262427,262761,263444,6453,3257,55836,9498,134863] │ route-views.rio       │
10. │ 2026-04-18 18:00:03 │ 117.120.58.0/23 │ [262427,262761,263444,6453,3257,55836,9498,134863] │ route-views.fortaleza │
11. │ 2026-04-18 20:00:03 │ 117.120.58.0/23 │ [262427,262761,263444,6453,3257,55836,9498,134863] │ route-views.fortaleza │
    └─────────────────────┴─────────────────┴────────────────────────────────────────────────────┴───────────────────────┘
    ┌───────────timestamp─┬─prefix──────────┬─as_path────────────────────────────────────────────┬─collector───────┐
12. │ 2026-04-18 20:00:04 │ 117.120.58.0/23 │ [262427,262761,263444,6453,3257,55836,9498,134863] │ route-views.rio │
    └─────────────────────┴─────────────────┴────────────────────────────────────────────────────┴─────────────────┘
    ┌───────────timestamp─┬─prefix──────────┬─as_path────────────────────────────────────────────┬─collector─────────────┐
13. │ 2026-04-18 22:00:03 │ 117.120.58.0/23 │ [262427,262761,263444,6453,3257,55836,9498,134863] │ route-views.rio       │
14. │ 2026-04-18 22:00:03 │ 117.120.58.0/23 │ [262427,262761,263444,6453,3257,55836,9498,134863] │ route-views.fortaleza │
15. │ 2026-04-19 00:00:03 │ 117.120.58.0/23 │ [262427,262761,263444,6453,3257,55836,9498,134863] │ route-views.fortaleza │
    └─────────────────────┴─────────────────┴────────────────────────────────────────────────────┴───────────────────────┘
    ┌───────────timestamp─┬─prefix──────────┬─as_path────────────────────────────────────────────┬─collector───────┐
16. │ 2026-04-19 00:00:04 │ 117.120.58.0/23 │ [262427,262761,263444,6453,3257,55836,9498,134863] │ route-views.rio │
    └─────────────────────┴─────────────────┴────────────────────────────────────────────────────┴─────────────────┘
&lt;/code&gt;&lt;/pre&gt;&lt;br /&gt;
&lt;p&gt;So routes were only visible at route-views in &lt;strong&gt;Rio de Janeiro (Brazil)&lt;/strong&gt; and &lt;strong&gt;Fortaleza (Brazil)&lt;/strong&gt;, not any other collector or by any other ASN other than &lt;strong&gt;AS262427&lt;/strong&gt; which is feeding these routes in both the collectors. Both GTT (AS3257) and Tata Comm (AS6453) feed a few collectors but this route is not visible in their feeds. So it&amp;rsquo;s safe to say that this route is &amp;ldquo;generated&amp;rdquo; by the ASNs on the left side of AS6453 in the above AS_PATH. It&amp;rsquo;s either AS262427, AS262761 or AS263444 that &amp;ldquo;generated&amp;rdquo; this route.&lt;/p&gt;
&lt;p&gt;I cannot find exactly which one of these three because:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Route is historical (no point of live lookup now)&lt;/li&gt;
&lt;li&gt;AS262761 and AS263444 are not feeding any of the known public collectors and hence routes cannot be compared between these three.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;It could be some sort of BGP route optimiser&amp;rsquo;s work in (AS262427, AS262761 or AS263444) but I fail to understand why they would show this fake adjacency between 3257 &amp;amp; 55836. For all this time the prefix 117.120.58.0/23 in reality was not in the downstream of Airtel (AS9498) but Vodafone IDEA (AS55410).&lt;/p&gt;
</description>
    </item>
    
    <item>
      <title>Netflow for home router &amp; Linux servers</title>
      <link>https://anuragbhatia.com/post/2026/04/netflow-for-personal-devices/</link>
      <pubDate>Fri, 10 Apr 2026 01:50:00 +0530</pubDate>
      
      <guid>https://anuragbhatia.com/post/2026/04/netflow-for-personal-devices/</guid>
      <description>&lt;p&gt;For the last few weeks, I have been running a NetFlow collector for the home router. This is something I wanted to do for a long time, but I was missing the time to invest. There are a few open source options, and I guess many commercial solutions offering NetFlow, often bundled with other products.&lt;/p&gt;
&lt;p&gt;My personal monitoring is 100% open source and presently running Prometheus + Thanos + Node Exporter + Blackbox Exporter + SNMP Exporter  + Grafana + Grafana Loki + a few more exporters. So I started looking for open source options which are still under active development and supported.&lt;/p&gt;
&lt;p&gt;Two of them are quite popular  - &lt;a href=&#34;https://github.com/pmacct/pmacct&#34;&gt;Pmacct&lt;/a&gt; and &lt;a href=&#34;https://github.com/akvorado/akvorado&#34;&gt;Akvorado&lt;/a&gt;. Pmacct is extremely advanced, flexible, but at the same time overall complicated to set up (and maintain). Even their &lt;a href=&#34;https://github.com/pmacct/pmacct/blob/master/QUICKSTART&#34;&gt;quickstart file&lt;/a&gt; 3100-line file is full of setup options. On the other hand, Akvorado seems simpler to maintain. Some complications, anyway, are expected with NetFlow because the goal is not just to collect the data but also to have a system to store it, analyse it, map IPs to location/AS numbers, etc., dashboards, etc. It&amp;rsquo;s a tool developed by French ISP Free, which is part of the Iliad group, which also owns Scaleway.&lt;/p&gt;
&lt;p&gt;Setting up Akvorado is easy if you are familiar with Docker. They have a simple 4 command &lt;a href=&#34;https://demo.akvorado.net/docs/intro#quick-start&#34;&gt;quick-start&lt;/a&gt; which deploys all their containers as part of the stack. They deploy a few containers as part of the overall stack.&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://cdn.anuragbhatia.com/web/post/2026/04/netflow-for-personal-devices/akvorado_design.png&#34; alt=&#34;&#34;&gt;&lt;/p&gt;
&lt;p&gt;The &lt;a href=&#34;https://demo.akvorado.net/docs/intro#big-picture&#34;&gt;big picture page&lt;/a&gt; on their demo site documentation covers the overall architecture. I started feeding it data from the home (Mikrotik) router and later also added various Linux servers/VMs I manage for R&amp;amp;D, DNS, as well as to host this blog and other infrastructure. For Linux, I am using Pmacct as an exporter, as &lt;a href=&#34;https://demo.akvorado.net/docs/operations#gnulinux&#34;&gt;Akvorado&amp;rsquo;s documentation&lt;/a&gt; suggests using it in exporter mode and has a sample config which works.&lt;/p&gt;
&lt;h3 id=&#34;some-data&#34;&gt;Some data&lt;/h3&gt;
&lt;p&gt;Now that it&amp;rsquo;s been running for a few weeks, I can see major sources of data coming to the home. Before jumping to data, it&amp;rsquo;s important to note that I have regular camera feeds uploading traffic to my server in Mumbai, and some backups, route collector data pull and automated speedtests at home. All these kinds of &amp;ldquo;pollute&amp;rdquo; data, and thus, it is more fun to exclude and look for remaining data coming from regular usage by end devices at home. In the setup, I can easily filter data based on srcAS, dstAS, srcIP, dstIP, port, in and out interfaces, etc.&lt;/p&gt;
&lt;p&gt;Here&amp;rsquo;s the data for the last 10 days towards end devices (excluding home server and camera traffic)&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://cdn.anuragbhatia.com/web/post/2026/04/netflow-for-personal-devices/Home_traffic_last-10days.png&#34; alt=&#34;&#34;&gt;&lt;/p&gt;
&lt;p&gt;While most of ASNs here are expected, but just for the context, Esto AS135817 is one of the upstreams at home (friendly ISP that I reach over a GRE tunnel over an IX from an underlying ISP), and most of the traffic hitting it is actually CDN traffic for Google GGC, Facebook FNA, etc., sitting on their IPs.&lt;/p&gt;
&lt;p&gt;What is more fun here are the Sankey graphs, where for a given interval, I can map ANY attribute -&amp;gt; ANY other attribute. e.g., srcAS -&amp;gt; Home Out interfaces or SrcPort -&amp;gt; SrcAS -&amp;gt; Destination IPs, etc.&lt;/p&gt;
&lt;p&gt;Here&amp;rsquo;s the Sankey Graph for SrcPort -&amp;gt; SrcAS -&amp;gt; In Interface at home&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://cdn.anuragbhatia.com/web/post/2026/04/netflow-for-personal-devices/sankey1.png&#34; alt=&#34;&#34;&gt;&lt;/p&gt;
&lt;p&gt;On this connection, I get most of Google traffic from Google&amp;rsquo;s AS directly; however, for a few days, I was on Airtel as primary due to an outage on the underlying ISP and thus could not reach Esto over the tunnel. For those days, traffic patterns were very different. Both Google and Akamai terminated most of the traffic on caching nodes within Airtel.&lt;/p&gt;
&lt;p&gt;Traffic profile when running home traffic via Airtel:&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://cdn.anuragbhatia.com/web/post/2026/04/netflow-for-personal-devices/sankey2.png&#34; alt=&#34;&#34;&gt;&lt;/p&gt;
&lt;br /&gt;
&lt;p&gt;Akvorado has support for Grafana, and while their dashboard seems good for usual lookups, I miss a pie chart. Let&amp;rsquo;s see what the pie chart of the last 10 days&amp;rsquo; traffic looks like:&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://cdn.anuragbhatia.com/web/post/2026/04/netflow-for-personal-devices/pie3.png&#34; alt=&#34;&#34;&gt;&lt;/p&gt;
&lt;p&gt;Another fun thing is to look for traffic by Etype for IPv4 Vs IPv6 comparison. Let&amp;rsquo;s see how much IPv4 Vs IPv6 traffic there is in the last week:&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://cdn.anuragbhatia.com/web/post/2026/04/netflow-for-personal-devices/sankey3.png&#34; alt=&#34;&#34;&gt;&lt;/p&gt;
&lt;br /&gt;
&lt;p&gt;The same logic can be used to have a pie chart, but it has to be in Grafana.&lt;/p&gt;
&lt;figure&gt;&lt;img src=&#34;https://cdn.anuragbhatia.com/web/post/2026/04/netflow-for-personal-devices/pie4.png&#34; width=&#34;300&#34; height=&#34;120&#34;&gt;
&lt;/figure&gt;

&lt;p&gt;Thus for now 89% of traffic is IPv6 at home. On that note, time to end this post.  😀&lt;/p&gt;
</description>
    </item>
    
    <item>
      <title>Who can light fibre in India?</title>
      <link>https://anuragbhatia.com/post/2026/02/who-can-light-fibre-in-india/</link>
      <pubDate>Sun, 22 Feb 2026 02:19:05 +0530</pubDate>
      
      <guid>https://anuragbhatia.com/post/2026/02/who-can-light-fibre-in-india/</guid>
      <description>&lt;h3 id=&#34;friend-and-his-two-homes&#34;&gt;Friend and his two homes&amp;hellip;&lt;/h3&gt;
&lt;p&gt;Recently, a friend of mine mentioned his plan to procure dark fibre to connect two of his homes. His idea was straightforward - get LCO to give a dark strand between
both homes and run Bidi optics over it. I ended up telling him that while his idea is technically fine, as modern optics can easily cover that sort of distance, it would be illegal as per Indian telecom laws!&lt;/p&gt;
&lt;p&gt;It wasn&amp;rsquo;t just him, but numerous content players, hosting companies, and Cloud players find it a bit odd when they find this out. In this post, I will document what is allowed and what is not allowed.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Advance warning&lt;/strong&gt;: I am a technical person &amp;amp; do not know much about regulatory. Whatever I am sharing here is what I have learned from my friends who have expertise in the subject. Indian telecom rules are overly complex and can have a different set of interpretations, and often go into the grey area. I welcome readers to share feedback if they are aware of something which isn&amp;rsquo;t correct as per the regulation. With that warning out of the way, I will proceed with the post.&lt;/p&gt;
&lt;br /&gt;
&lt;h3 id=&#34;understanding-licensing&#34;&gt;Understanding licensing&lt;/h3&gt;
&lt;p&gt;In India, when fibre is going outside of a given building, one needs to have a license to light it. In fact, not just &amp;ldquo;lighting up a dark fibre&amp;rdquo; but to deploy and resell dark fibre, one needs a license (IP-1). Infrastructure Provider Category 1 (or IP-1) is considered an easy license which can be used to sell passive assets such as dark fibre, ducts, towers, etc. Active infra i.e lighting up fibre, is not allowed under this license, and it&amp;rsquo;s expected that an IP-1 holder leases their dark fibre only to a license holder who is authorised to light the fibre. Within a building, campus, datacenter, home etc one can deploy a light fibre but as soon as it goes outside of that it becomes a bit of a grey area depending on the use case.&lt;/p&gt;
&lt;p&gt;An Internet Service Provider (ISP) holding an ISP license or Unified License with ISP authorisation can light fibre but only for two specific purposes:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Offering internet drop to the end user (quite obvious)&lt;/li&gt;
&lt;li&gt;Their own backhaul connectivity between routers, switches, OLTs, etc located anywhere within their authorisation area&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;While this looks quite straightforward, it specifically excludes point-to-point connectivity. An ISP cannot offer point-to-point connectivity under its license. So for my friend&amp;rsquo;s use case - he cannot buy a point-to-point link using any technology (MPLS, layer 2 VLAN, DWDM wavelength or dark fibre strands) from the ISP as the ISP under the ISP license is not authorised to sell those. But funny enough if the same ISP sells him &amp;ldquo;internet drop&amp;rdquo; under ISP license and two routers (outside of core ISP business) and &amp;ldquo;helps&amp;rdquo; in setting VPN over the public internet, it&amp;rsquo;s largely legal because from ISP and DoT&amp;rsquo;s point of view this is an internet product. About #2 - For a long time ISPs could not procure dark fibre and make use of it because they could not make full use of the capacity. They could not light it with say DWDM &amp;amp; resell wavelengths. However recently it was clarified that an ISP can sell capacity to other licensed ISPs only (not end non-licensed customers). When researching I found some friends not being aware of it as well as some calling it a grey area rule.&lt;/p&gt;
&lt;br /&gt;
&lt;h3 id=&#34;access-license--nld&#34;&gt;Access License &amp;amp; NLD&lt;/h3&gt;
&lt;p&gt;An Access license in India for selling circuits. It allows many things including selling p2p circuits, voice, mobile, etc. Many networks use an access license along with NLD (National Long Distance) which allows these services across India. It&amp;rsquo;s a vast license due to involvement of voice and mobile permissions but for the context of this post - it&amp;rsquo;s the ultimate license needed by players to do things without going into the grey area.&lt;/p&gt;
&lt;br /&gt;
&lt;h3 id=&#34;debate-on-captive&#34;&gt;Debate on captive&lt;/h3&gt;
&lt;p&gt;I have heard of different opinions around captive traffic. An ISP friend of mine who has expertise in regulation (and doesn&amp;rsquo;t want to be named in this post) recently bid for a government contract. A project where the goal was to offer dark fibre to one department of the government. He had an ISP license while the government department that was taking fibre had no license. Their end goal was to connect to their own infra. This raised some concerns from other bidders. For now it&amp;rsquo;s unclear and I guess subject to interpretation on whether someone can light fibre for their captive use or not when the end product itself does not resell the capacity. Most large projects end up taking NLD and access licenses anyway because they intend to sell excess capacity. Thus networks like Railtel (by Indian Railway), Oil India, Powergrid Corp, etc all take NLD license to have legal ability to light fibre for their own use as well as to resell excess capacity. Industry-wide I hear that private players taking dark fibre and lighting it themselves is absolutely not allowed while for the government. bodies it remains a grey area.&lt;/p&gt;
&lt;br /&gt;
&lt;h3 id=&#34;cloud-and-content-players&#34;&gt;Cloud and content players&lt;/h3&gt;
&lt;p&gt;Modern cloud and content players are major users of dark fibres, especially within metros. Hyperscalars like Amazon AWS, Google Cloud and Microsoft Azure deploy their infra in three datacenters in a given region &amp;amp; these have to be technically connected with dark fibre. There&amp;rsquo;s massive East-West traffic due to replication, high availability &amp;amp; many other reasons. In the majority of markets these companies can procure dark fibre between their datacenters and light it themselves but in India they cannot. In India, it&amp;rsquo;s a known case that they get external license-holding players to light fibre for them. In most of these cases hyperscalars work very closely with those players, they define network topology, hardware, configs etc but ultimately someone else executes it for them. Most of the Cloud players will never take a telecom license (ISP, access, NLD, ILD etc) in India simply because then they would be subject to many of the telecom-related rules and regulations. That brings business, security and many concerns. Take e.g the long over-discussed AGR case. If any of the Cloud players had a license, under older terms their compute, storage (and just anything) revenue would be subject to AGR / license fees. In a way, it&amp;rsquo;s good that Cloud players work well without a license as that keeps things simple. The fact that they cannot light fibre themselves is a drawback of our Indian licensing system and should be fixed. In most other markets including the US, UK, Germany, Singapore etc - lighting of fibre does not need a license.&lt;/p&gt;
&lt;br /&gt;
&lt;h3 id=&#34;status-of-datacenters&#34;&gt;Status of datacenters&lt;/h3&gt;
&lt;p&gt;Over time datacenters have taken an NLD license. List includes but is not limited to NTT Netmagic, Yotta, Ctrls etc. This is mostly because these players have multiple datacenters in a given area, and they want to connect and resell lit services. They can in theory do without NLD by using IP-1 and then reselling dark fibre strands only but that does not scale up, plus their customers who are buying would need to have a license to light the fibre.&lt;/p&gt;
&lt;br /&gt;
&lt;h3 id=&#34;old-and-outdated-ideas-around-regulation&#34;&gt;Old and outdated ideas around regulation&lt;/h3&gt;
&lt;p&gt;Most of these ideas around licensing in the fixed-line market do not make sense anymore, simply because everything runs on fibre and fibre is not a scarce resource. ISP license somewhat makes sense (excluding the AGR part) because there is a requirement of URL filtering, CGNAT logging, etc., but outside of that, it&amp;rsquo;s largely an inflated set of rules. On the access side, the requirement of a license to light fibre simply promotes more rent-seeking behaviour instead of cleaner, competitive and optimised deployments. AGR on fixedline (and probably mobile telephony) also doesn&amp;rsquo;t make sense. In case of fixed line, the network runs on optical fibre which is laid by vendors who pay Rights of Way (RoW) to municipalities, State and central government (whichever road they use). There is taxation in the form of GST in the system on top of RoW. So the AGR on top doesn&amp;rsquo;t make sense as bits are not flowing over any scarce resource. It&amp;rsquo;s largely over privately built infrastructure, for which RoW and GST are already being paid.&lt;/p&gt;
&lt;p&gt;With those thoughts I think my friend needs an access license to connect his homes and his LCO (or ISP who actually runs it) needs a IP-1 license to legally re-sell him dark fibre. 😀&lt;/p&gt;
&lt;br /&gt;
&lt;p&gt;Disclaimer: This is my personal blog, and hence, posts made here are in my personal capacity. These do not represent the views of my employer.&lt;/p&gt;
&lt;p&gt;&lt;br /&gt;&lt;br /&gt;&lt;/p&gt;
&lt;h3 id=&#34;update---18-mar-2026&#34;&gt;Update - 18 Mar 2026&lt;/h3&gt;
&lt;p&gt;I cannot count how many people by now have told me that new rules are just about to be notified and changes are inevitable. New rules will allow ISP license holders (or folks with UL license with ISP authorization) to be able to sell point to point services. That won&amp;rsquo;t fix the problem completely but greatly reduces it.&lt;/p&gt;
&lt;p&gt;Another point to mention here is that in Nov 2022 &lt;a href=&#34;https://tele.net.in/dot-amends-scope-of-ip-1-registration-ip-1s-to-share-infrastructure-with-specified-entities/&#34;&gt;DoT tweaked IP-1 license rules&lt;/a&gt; to allow them to give dark fibre to non-licence holders which are specified by DoT.&lt;/p&gt;
</description>
    </item>
    
    <item>
      <title>Airtel India - Europe routing issues</title>
      <link>https://anuragbhatia.com/post/2026/01/eu-india-routing-issues/</link>
      <pubDate>Thu, 29 Jan 2026 03:45:04 +0530</pubDate>
      
      <guid>https://anuragbhatia.com/post/2026/01/eu-india-routing-issues/</guid>
      <description>&lt;p&gt;Since &lt;strong&gt;20:08 IST / 14:38 GMT on 28 Jan 2026&lt;/strong&gt;, the latency between Airtel India and Europe has gone up along with significant packet loss.&lt;/p&gt;
&lt;p&gt;Here&amp;rsquo;s an example of shortlist 300+ endpoints from Airtel India with European endpoints:&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://cdn.anuragbhatia.com/web/post/2026/01/eu-india-routing-issues/rtk-eu-airtel.png&#34; alt=&#34;&#34;&gt;&lt;/p&gt;
&lt;h2 id=&#34;traceroutes&#34;&gt;Traceroutes&lt;/h2&gt;
&lt;h3 id=&#34;airtel-haryana---contabo-europe&#34;&gt;Airtel Haryana -&amp;gt; Contabo Europe&lt;/h3&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;Start: 2026-01-29T03:52:33+0530
HOST: desktop                                                                  Loss%   Snt   Last   Avg  Best  Wrst StDev
 1. AS???    _gateway (172.16.0.1)                                             0.0%    10    0.2   0.2   0.2   0.2   0.0
 2. AS???    10.240.9.204                                                      0.0%    10    6.2   7.7   4.6  17.7   3.7
 3. AS???    172.31.0.155                                                      0.0%    10   12.1   8.4   5.0  12.8   3.2
 4. AS9498   173.168.18.125.dhcp.anaronline.net (125.18.168.173)               0.0%    10    5.1   6.5   5.0   8.0   1.2
 5. AS???    182.79.243.34                                                     0.0%    10  266.6 262.7 259.1 276.3   5.3
 6. AS1299   lax-b22-link.ip.twelve99.net (62.115.162.62)                      0.0%    10  259.4 258.1 256.6 259.9   1.1
 7. AS1299   lax-bb2-link.ip.twelve99.net (62.115.140.156)                    10.0%    10  256.7 257.9 256.6 259.6   1.2
 8. AS1299   dls-b7-link.ip.twelve99.net (62.115.140.247)                     20.0%    10  323.4 324.2 322.6 326.2   1.2
 9. AS1299   atl-b24-link.ip.twelve99.net (62.115.140.32)                      0.0%    10  336.4 336.5 335.4 338.0   0.9
 10. AS1299   atl-bb2-link.ip.twelve99.net (62.115.143.236)                     0.0%    10  323.1 321.7 320.2 323.4   1.0
 11. AS1299   ash-bb2-link.ip.twelve99.net (62.115.137.132)                    40.0%    10  320.9 321.1 320.6 321.7   0.4
 12. AS1299   prs-bb2-link.ip.twelve99.net (62.115.140.106)                     0.0%    10  318.8 318.3 317.2 319.5   0.9
 13. AS1299   laut-b2-link.ip.twelve99.net (62.115.136.185)                     0.0%    10  325.7 326.0 324.3 327.7   1.3
 14. AS1299   contabohubeurope-ic-385701.ip.twelve99-cust.net (213.248.67.11)   0.0%    10  325.8 324.4 322.8 326.4   1.2
 15. AS???    ???                                                              100.0    10    0.0   0.0   0.0   0.0   0.0
 16. AS???    ???                                                              100.0    10    0.0   0.0   0.0   0.0   0.0
 17. AS51167  eu01.anuragbhatia.com (213.199.54.67)                             0.0%    10  323.1 323.5 322.4 324.9   0.9
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Reading this trace: This is Ambala &amp;raquo; Airtel MPLS &amp;raquo; Los Angeles Arelion AS1299 handover &amp;gt; Arelion Dallas &amp;gt; Arelion Atlanta &amp;gt; Arelion Ashburn &amp;gt; Arelion Paris &amp;gt; Europe&lt;/p&gt;
&lt;br /&gt;
&lt;h3 id=&#34;contabo-europe---airtel-haryana-cgnat-ip-terminating-in-saha-ambala-haryana&#34;&gt;Contabo Europe -&amp;gt; Airtel Haryana (CGNAT IP terminating in Saha (Ambala) Haryana):&lt;/h3&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;Start: 2026-01-29T03:53:51+0530
HOST: eu01.anuragbhatia.com                                                Loss%   Snt   Last   Avg  Best  Wrst StDev
 1. AS???    10.243.1.101                                                  0.0%    10    0.2   0.3   0.2   0.4   0.1
 2. AS???    10.0.66.2                                                     0.0%    10    0.3   0.3   0.2   0.3   0.0
 3. AS1299   laut-b2-link.ip.twelve99.net (213.248.70.176)                 0.0%    10    2.7   2.8   1.4   4.7   1.0
 4. AS1299   laut-b1-link.ip.twelve99.net (62.115.136.194)                 0.0%    10    3.6   2.7   1.9   3.6   0.6
 5. AS1299   ffm-bb1-link.ip.twelve99.net (62.115.136.146)                 0.0%    10    2.9   3.0   2.9   3.5   0.2
 6. AS1299   mei-b5-link.ip.twelve99.net (62.115.124.59)                   0.0%    10   18.4  18.3  18.2  18.7   0.1
 7. AS1299   sng-b7-link.ip.twelve99.net (62.115.134.229)                  0.0%    10  155.1 155.2 154.9 155.6   0.3
 8. AS1299   sng-b5-link.ip.twelve99.net (62.115.139.1)                   80.0%    10  162.5 162.5 162.5 162.6   0.1
 9. AS1299   bhartiairtel-ic-375944.ip.twelve99-cust.net (62.115.49.157)   0.0%    10  238.1 236.2 233.5 252.4   5.9
 10. AS9498   116.119.44.230                                                0.0%    10  320.7 321.0 320.5 323.2   0.8
 11. AS9498   170.168.18.125.dhcp.anaronline.net (125.18.168.170)           0.0%    10  327.1 328.9 319.4 355.2  13.6
 12. AS???    ???    
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;This one is handover to Arelion AS1299 Europe locally &amp;gt; Arelion Frankfurt &amp;gt; Arelion Marseille &amp;raquo; Arelion Singapore &amp;gt; Bharti Airtel AS9498 Singapore handover &amp;raquo;&amp;gt; Airtel MPLS &amp;gt; Haryana&lt;/p&gt;
&lt;p&gt;How to know that it&amp;rsquo;s not just me on both ends - my home connection in Haryana and my server in EU being impacted?&lt;/p&gt;
&lt;p&gt;Let&amp;rsquo;s look for average latency to a few dozen Airtel endpoints in India from Contabo, Hetzner, hosting.de:&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://cdn.anuragbhatia.com/web/post/2026/01/eu-india-routing-issues/EU-Airtel-India-latency.png&#34; alt=&#34;&#34;&gt;&lt;/p&gt;
&lt;br /&gt;
&lt;h3 id=&#34;impact-from-bgp-routing-table&#34;&gt;Impact from BGP routing table&lt;/h3&gt;
&lt;p&gt;Let&amp;rsquo;s compare Airtel AS9498 routes inside Arelion AS1299 table with BGP community tags: 1299:30000 (EU Customers) Vs 1299:37000 (APAC customers) based on routes visible from various downstreams of AS1299 across public route collectors (since Arelion&amp;rsquo;s own direct feed does not include the BGP community tag):&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://cdn.anuragbhatia.com/web/post/2026/01/eu-india-routing-issues/Arelion-Airtel-learning.png&#34; alt=&#34;&#34;&gt;&lt;/p&gt;
&lt;p&gt;Within a few hours Arelion&amp;rsquo;s learning of Airtel AS9498 routes in Europe (1299:30000) went down by 7000 routes and APAC (1299:37000) went up by over 6000 routes.&lt;/p&gt;
&lt;p&gt;&lt;br /&gt;&lt;br /&gt;&lt;/p&gt;
&lt;h3 id=&#34;what-about-other-indian-telcos&#34;&gt;What about other Indian telcos?&lt;/h3&gt;
&lt;p&gt;There seems some minor impact on Tata Comm but it is largely contained. Average latency from EU - Tata Comm Indian endpoint went up from 164ms to 180ms. In the case of Jio, it also shows the same behaviour as usual. However, on Jio, there&amp;rsquo;s a visible jump in latency every late evening for months, and this jump seems to follow the same pattern.&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://cdn.anuragbhatia.com/web/post/2026/01/eu-india-routing-issues/EU-TataComm.png&#34; alt=&#34;&#34;&gt;&lt;/p&gt;
&lt;br /&gt;
&lt;p&gt;Trace from EU to Tata Comm AS4755 Delhi confirms largely normal routing.&lt;/p&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;Start: 2026-01-29T04:16:29+0530
HOST: eu01.anuragbhatia.com                                                Loss%   Snt   Last   Avg  Best  Wrst StDev
 1. AS???    10.243.1.101                                                  0.0%    10    0.2   0.2   0.2   0.3   0.0
 2. AS???    10.0.66.2                                                     0.0%    10    0.2   0.2   0.2   0.3   0.0
 3. AS1299   laut-b1-link.ip.twelve99.net (62.115.45.148)                  0.0%    10    2.5   3.1   1.6   4.7   1.0
 4. AS1299   ffm-bb1-link.ip.twelve99.net (62.115.136.146)                 0.0%    10    3.2   3.1   2.9   3.4   0.2
 5. AS1299   ffm-b5-link.ip.twelve99.net (62.115.136.213)                  0.0%    10    3.5   3.2   3.0   3.5   0.1
 6. AS1299   tata-ic-378325.ip.twelve99-cust.net (213.248.78.41)          60.0%    10    4.3   4.3   3.9   4.7   0.3
 7. AS6453   if-bundle-56-2.qcore2.pvu-paris.as6453.net (80.231.245.40)   60.0%    10   16.1  16.0  15.6  16.4   0.4
 8. AS6453   if-bundle-12-2.qcore1.pvu-paris.as6453.net (80.231.245.12)    0.0%    10   15.4  15.8  15.4  16.8   0.4
 9. AS6453   if-bundle-22-3.qcore1.pye-paris.as6453.net (80.231.154.200)  50.0%    10   15.7  15.9  15.6  16.3   0.3
 10. AS6453   if-bundle-2-2.qcore2.pye-paris.as6453.net (80.231.154.27)     0.0%    10   15.5  15.9  15.4  16.4   0.4
 11. AS6453   if-bundle-13-2.qcore1.ldn-london.as6453.net (80.231.196.37)  90.0%    10   20.5  20.5  20.5  20.5   0.0
 12. AS6453   195.219.213.129                                              70.0%    10   15.4  15.5  15.4  15.7   0.2
 13. AS6453   80.231.131.77                                                 0.0%    10  123.0 125.2 123.0 144.3   6.7
 14. AS???    ???                                                          100.0    10    0.0   0.0   0.0   0.0   0.0
 15. AS4755   115.114.73.212.static-delhi.vsnl.net.in (115.114.73.212)      0.0%    10  158.5 158.6 158.5 158.7   0.1
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;With hope that your packets won&amp;rsquo;t be spread at the bottom of the ocean, it&amp;rsquo;s time for me to end this post and get back to work. 😀&lt;/p&gt;
&lt;p&gt;&lt;br /&gt;&lt;br /&gt;&lt;/p&gt;
&lt;h3 id=&#34;update---29-jan-2026--1714-ist&#34;&gt;Update - 29 Jan 2026 / 17:14 IST&lt;/h3&gt;
&lt;p&gt;A friend from the industry has confirmed that &lt;a href=&#34;https://www.submarinenetworks.com/en/systems/asia-europe-africa/mena&#34;&gt;MENA cable&lt;/a&gt; has went down around the same time.&lt;/p&gt;
&lt;br /&gt;
&lt;h3 id=&#34;update---04-mar-2026&#34;&gt;Update - 04 Mar 2026&lt;/h3&gt;
&lt;p&gt;Significant traffic routing between India and EU seems direct now.&lt;/p&gt;
&lt;br /&gt;
&lt;h3 id=&#34;update---13-mar-2026&#34;&gt;Update - 13 Mar 2026&lt;/h3&gt;
&lt;p&gt;MENA Cable has been fixed and connectivity between India and EU is back online. Since evening there&amp;rsquo;s a visible further drop in average latency between India and EU over the Airtel.&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://cdn.anuragbhatia.com/web/post/2026/01/eu-india-routing-issues/India-EU-Airtel-latency.png&#34; alt=&#34;&#34;&gt;&lt;/p&gt;
</description>
    </item>
    
    <item>
      <title>When BGP lies, the internet believes!</title>
      <link>https://anuragbhatia.com/post/2026/01/when-bgp-lies/</link>
      <pubDate>Wed, 21 Jan 2026 00:02:42 +0530</pubDate>
      
      <guid>https://anuragbhatia.com/post/2026/01/when-bgp-lies/</guid>
      <description>&lt;p&gt;Earlier in the day, I came across Liberty Global (AS6830) seemingly originating several Vodafone Romania (AS12302) prefixes.&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://cdn.anuragbhatia.com/web/post/2026/01/when-bgp-lies/as6839_1.png&#34; alt=&#34;&#34;&gt;
Source: &lt;a href=&#34;https://bgp.he.net/AS6830#_prefixes&#34;&gt;https://bgp.he.net/AS6830#_prefixes&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;This is highly unusual because AS6830 is a large transit-free network. I have seen some transit-free networks leaking routes, but originating a large number of prefixes is not common. It has massive stakes from Belgium-based Telenet to Virgin Media, etc. To verify if they are actually originating these or not, let&amp;rsquo;s check from &lt;a href=&#34;https://lg.aorta.net&#34;&gt;their looking glass&lt;/a&gt; for one of the prefixes here: &lt;strong&gt;46.97.104.0/24&lt;/strong&gt; via their PoP at &lt;strong&gt;Interxion FRA6 Frankfurt&lt;/strong&gt;:&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://cdn.anuragbhatia.com/web/post/2026/01/when-bgp-lies/as6839_2.png&#34; alt=&#34;&#34;&gt;&lt;/p&gt;
&lt;p&gt;This clearly shows that their own router is learning it from Vodafone C&amp;amp;W AS1273 and not holding the fake route. The origin is AS12302 &lt;em&gt;(Vodafone Romania)&lt;/em&gt;. So why does that prefix appear in bgp.he.net?&lt;/p&gt;
&lt;p&gt;Let&amp;rsquo;s look at real-time lookup from &lt;a href=&#34;https://bgp.he.net/super-lg/#46.97.104.0/24?tob=none&amp;amp;mt=include&amp;amp;ma=6830&amp;amp;els=exact&#34;&gt;super-lg&lt;/a&gt;:&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://cdn.anuragbhatia.com/web/post/2026/01/when-bgp-lies/superlg.png&#34; alt=&#34;&#34;&gt;&lt;/p&gt;
&lt;p&gt;Reading this AS_PATH: &lt;strong&gt;35505 44682 8751 6830&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;So &lt;a href=&#34;https://www.ris.ripe.net/peerlist/rrc22.shtml&#34;&gt;RIPE RIS RRC22&lt;/a&gt; in Bucharest, Romania &amp;ldquo;learns&amp;rdquo; this from AS35505 &lt;em&gt;(Pronet Solutii IT SRL)&lt;/em&gt; which learns it from AS44682 &lt;em&gt;(SIL-MIRO COM SRL)&lt;/em&gt; which learns it from AS8751 &lt;em&gt;(MEDIA SAT SRL)&lt;/em&gt; which &amp;ldquo;claims&amp;rdquo; to have learnt it from AS6830. This very much smells like a &amp;ldquo;fake route&amp;rdquo; generated by someone here likely from a route optimiser. From the Liberty Global looking glass, it&amp;rsquo;s clear that AS6830 does not have it. So it has to be either AS8751 or AS44682 or AS35505 having this route in their table. It&amp;rsquo;s hard to verify and be 100% sure who since those three ASNs don&amp;rsquo;t have a looking glass or a RIPE Atlas probe for me to see their routing. Thus &lt;strong&gt;&lt;em&gt;when BGP lies, the internet believes!&lt;/em&gt;&lt;/strong&gt;&lt;/p&gt;
&lt;br /&gt;
&lt;p&gt;Disclaimer: This is my personal blog, and hence, posts made here are in my personal capacity. These do not represent the views of my employer.&lt;/p&gt;
</description>
    </item>
    
    <item>
      <title>Opentofu &#43; Tailscale = Bootstrapped DevOps environment with VPN</title>
      <link>https://anuragbhatia.com/post/2026/opentofu-tailscale/</link>
      <pubDate>Sun, 18 Jan 2026 02:58:46 +0530</pubDate>
      
      <guid>https://anuragbhatia.com/post/2026/opentofu-tailscale/</guid>
      <description>&lt;p&gt;For the last few days, I have been playing with &lt;a href=&#34;https://opentofu.org&#34;&gt;OpenTofu&lt;/a&gt;. For those who may not know, it&amp;rsquo;s a fork of last Terraform as Terraform&amp;rsquo;s license was changed due to IBM&amp;rsquo;s acquisition of Hashicorp and is a Cloud Native Foundation project. It can be used to quickly deploy (and remove) resources from various cloud players.&lt;/p&gt;
&lt;p&gt;Yesterday came across this tweet from Tailscale about tailscale&amp;rsquo;s module for deployment.&lt;/p&gt;
&lt;blockquote class=&#34;twitter-tweet&#34;&gt;&lt;p lang=&#34;en&#34; dir=&#34;ltr&#34;&gt;Cloud-init can be tough, and we&amp;#39;ve heard all about it. So we built an open-source Terraform module, one that helps provide a more consistent Tailscale experience across AWS, Azure, GCP, and everywhere. No more surprises, OS quirks, or other mysteries: &lt;a href=&#34;https://t.co/vn1ITU7Fgz&#34;&gt;https://t.co/vn1ITU7Fgz&lt;/a&gt; &lt;a href=&#34;https://t.co/stcF6WuiD7&#34;&gt;pic.twitter.com/stcF6WuiD7&lt;/a&gt;&lt;/p&gt;&amp;mdash; Tailscale (@Tailscale) &lt;a href=&#34;https://x.com/Tailscale/status/2011924373754597419?ref_src=twsrc%5Etfw&#34;&gt;January 15, 2026&lt;/a&gt;&lt;/blockquote&gt;
&lt;script async src=&#34;https://platform.x.com/widgets.js&#34; charset=&#34;utf-8&#34;&gt;&lt;/script&gt;


&lt;p&gt;It&amp;rsquo;s cool and useful, though I find Cloud init way more useful since for me these tools are more useful for quick testing rather than a permanent production server. The idea of tailscale on devops VMs as they come up is pretty powerful, as it takes care of the private network between these machines, plus underlay doesn&amp;rsquo;t matter, and hence one can use (cheaper) IPv6-only VMs.&lt;/p&gt;
&lt;p&gt;An example of OpenTofu config &lt;em&gt;(which is similar to Terraform)&lt;/em&gt; to deploy three IPv6 only servers on players like Hetzner across Nuremberg, Helsinki, and Ashburn:&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;main.tf&lt;/strong&gt;&lt;/p&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;terraform {
  required_providers {
    hcloud = {
      source  = &amp;#34;hetznercloud/hcloud&amp;#34;
      version = &amp;#34;~&amp;gt; 1.59.0&amp;#34;
    }
  }
}

provider &amp;#34;hcloud&amp;#34; {
  token = var.hcloud_token
}


data &amp;#34;hcloud_ssh_key&amp;#34; &amp;#34;desktop&amp;#34; {
  name = &amp;#34;desktop&amp;#34;
}

data &amp;#34;hcloud_image&amp;#34; &amp;#34;ubuntu&amp;#34; {
  name   = &amp;#34;debian-13&amp;#34;
  most_recent = true
}

resource &amp;#34;hcloud_server&amp;#34; &amp;#34;vms&amp;#34; {
  for_each = var.vms

  name        = each.key
  image       = data.hcloud_image.ubuntu.id
  server_type = each.value.server_type
  location    = each.value.location
  ssh_keys    = [data.hcloud_ssh_key.desktop.id]

  user_data = &amp;lt;&amp;lt;-EOF
    #cloud-config
    package_upgrade: true
    packages:
      - curl
    runcmd:
      - curl -fsSL https://tailscale.com/install.sh | sh
      - tailscale up --authkey=${var.tailscale_authkey} --accept-routes
  EOF

  public_net {
    ipv4_enabled = false
    ipv6_enabled = true
  }

  labels = {
    managed-by = &amp;#34;opentofu&amp;#34;
  }

  lifecycle {
    ignore_changes = [user_data]
  }  
}

output &amp;#34;vm_ips&amp;#34; {
  value = { for k, vm in hcloud_server.vms : k =&amp;gt; vm.ipv6_address }
}
&lt;/code&gt;&lt;/pre&gt;&lt;br /&gt;
&lt;p&gt;&lt;strong&gt;variables.tf&lt;/strong&gt; &lt;em&gt;(to hold non-secret variables)&lt;/em&gt;&lt;/p&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;variable &amp;#34;hcloud_token&amp;#34; {
  description = &amp;#34;Hetzner Cloud API Token&amp;#34;
  type        = string
  sensitive   = true
}

variable &amp;#34;vms&amp;#34; {
  description = &amp;#34;Map of VMs with locations&amp;#34;
  type = map(object({
    location    = string
    server_type = optional(string, &amp;#34;cx23&amp;#34;)
  }))
  default = {
    devops01 = { location = &amp;#34;nbg1&amp;#34; }
    devops02 = { location = &amp;#34;ash&amp;#34;, server_type = &amp;#34;cpx11&amp;#34; }
    devops03 = { location = &amp;#34;hel1&amp;#34; }
  }
}

variable &amp;#34;tailscale_authkey&amp;#34; {
  description = &amp;#34;Tailscale Auth key&amp;#34;
  type        = string
  sensitive   = true
}
&lt;/code&gt;&lt;/pre&gt;&lt;br /&gt;
&lt;p&gt;&lt;strong&gt;terraform.tfvars&lt;/strong&gt; &lt;em&gt;(to hold secret variables)&lt;/em&gt;&lt;/p&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;hcloud_token = &amp;#34;XXX&amp;#34;
tailscale_authkey = &amp;#34;tskey-auth-XXXXXX&amp;#34;
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;&lt;br /&gt;&lt;br /&gt;&lt;/p&gt;
&lt;h3 id=&#34;triggering-machines-with-vpn-built-in&#34;&gt;Triggering machines (with VPN built in)&lt;/h3&gt;
&lt;p&gt;Initiating (to install providers, initiate backend etc)&lt;/p&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;anurag@desktop ~/R/P/c/a/test (main)&amp;gt; tofu init

...

anurag@desktop ~/R/P/c/a/test (main)&amp;gt; 
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;And the deployment!&lt;/p&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;anurag@desktop ~/R/P/c/a/test (main)&amp;gt; tofu apply
data.hcloud_image.ubuntu: Reading...
data.hcloud_ssh_key.desktop: Reading...
data.hcloud_ssh_key.desktop: Read complete after 0s [name=desktop]
data.hcloud_image.ubuntu: Read complete after 0s [name=debian-13]

OpenTofu used the selected providers to generate the following execution plan. Resource actions are indicated with
the following symbols:
  + create

OpenTofu will perform the following actions:

  # hcloud_server.vms[&amp;#34;devops01&amp;#34;] will be created
  + resource &amp;#34;hcloud_server&amp;#34; &amp;#34;vms&amp;#34; {
      + allow_deprecated_images    = false
      + backup_window              = (known after apply)
      + backups                    = false
      + datacenter                 = (known after apply)
      + delete_protection          = false
      + firewall_ids               = (known after apply)
      + id                         = (known after apply)
      + ignore_remote_firewall_ids = false
      + image                      = &amp;#34;310554929&amp;#34;
...
...

Plan: 3 to add, 0 to change, 0 to destroy.

Changes to Outputs:
  + vm_ips = {
      + devops01 = (known after apply)
      + devops02 = (known after apply)
      + devops03 = (known after apply)
    }

Do you want to perform these actions?
  OpenTofu will perform the actions described above.
  Only &amp;#39;yes&amp;#39; will be accepted to approve.

  Enter a value: yes

hcloud_server.vms[&amp;#34;devops02&amp;#34;]: Creating...
hcloud_server.vms[&amp;#34;devops01&amp;#34;]: Creating...
hcloud_server.vms[&amp;#34;devops03&amp;#34;]: Creating...
hcloud_server.vms[&amp;#34;devops01&amp;#34;]: Still creating... [10s elapsed]
hcloud_server.vms[&amp;#34;devops03&amp;#34;]: Still creating... [10s elapsed]
hcloud_server.vms[&amp;#34;devops02&amp;#34;]: Still creating... [10s elapsed]
hcloud_server.vms[&amp;#34;devops01&amp;#34;]: Creation complete after 19s [id=117722922]
hcloud_server.vms[&amp;#34;devops02&amp;#34;]: Still creating... [20s elapsed]
hcloud_server.vms[&amp;#34;devops03&amp;#34;]: Still creating... [20s elapsed]
hcloud_server.vms[&amp;#34;devops02&amp;#34;]: Creation complete after 26s [id=117722920]
hcloud_server.vms[&amp;#34;devops03&amp;#34;]: Still creating... [30s elapsed]
hcloud_server.vms[&amp;#34;devops03&amp;#34;]: Creation complete after 35s [id=117722921]

Apply complete! Resources: 3 added, 0 changed, 0 destroyed.

Outputs:

vm_ips = {
  &amp;#34;devops01&amp;#34; = &amp;#34;2a01:4f8:1c1f:88df::1&amp;#34;
  &amp;#34;devops02&amp;#34; = &amp;#34;2a01:4ff:f0:7df7::1&amp;#34;
  &amp;#34;devops03&amp;#34; = &amp;#34;2a01:4f9:c013:f6e0::1&amp;#34;
}
anurag@desktop ~/R/P/c/a/test (main)&amp;gt; 
&lt;/code&gt;&lt;/pre&gt;&lt;br /&gt;
&lt;p&gt;In the Hetzner console for this project, three VMs appear:&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://cdn.anuragbhatia.com/web/post/2026/opentofu-tailscale/hetzner-vms.png&#34; alt=&#34;&#34;&gt;&lt;/p&gt;
&lt;br /&gt;
&lt;h4 id=&#34;reaching-devops01---devops02&#34;&gt;Reaching devops01 -&amp;gt; devops02&lt;/h4&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;root@devops01:~# tailscale ping devops02
pong from devops02 (100.68.146.42) via [2a01:4ff:f0:7df7::1]:41641 in 111ms
root@devops01:~# 

root@devops01:~# ping -c 5 devops02
PING devops02.tail362a2.ts.net (100.116.50.72) 56(84) bytes of data.
64 bytes from devops02.tail362a2.ts.net (100.116.50.72): icmp_seq=1 ttl=64 time=106 ms
64 bytes from devops02.tail362a2.ts.net (100.116.50.72): icmp_seq=2 ttl=64 time=106 ms
64 bytes from devops02.tail362a2.ts.net (100.116.50.72): icmp_seq=3 ttl=64 time=106 ms
64 bytes from devops02.tail362a2.ts.net (100.116.50.72): icmp_seq=4 ttl=64 time=106 ms
64 bytes from devops02.tail362a2.ts.net (100.116.50.72): icmp_seq=5 ttl=64 time=106 ms

--- devops02.tail362a2.ts.net ping statistics ---
5 packets transmitted, 5 received, 0% packet loss, time 4006ms
rtt min/avg/max/mdev = 105.735/106.012/106.243/0.197 ms
root@devops01:~# 
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;It can reach devops02 over IPv6 transport.&lt;/p&gt;
</description>
    </item>
    
    <item>
      <title>NCMC design and technical limitations</title>
      <link>https://anuragbhatia.com/post/2026/ncmc-design-and-limitations/</link>
      <pubDate>Sun, 04 Jan 2026 00:16:00 +0530</pubDate>
      
      <guid>https://anuragbhatia.com/post/2026/ncmc-design-and-limitations/</guid>
      <description>&lt;p&gt;I was in Mumbai a few months ago for the Equinix India Peering forum. The event happened to be very near the airport &amp;amp; I found that the airport, conference venue, hotel, and a few other locations I was visiting were all near the newly built Mumbai Line 3 (Aqua Line). To save on hassle with regular tickets, I went for an NCMC (National Common Mobility Card). Most people travelling in the Delhi metro would be aware of it by now, thanks to a bit of marketing push inside the metro train with announcements. Mumbai line 3 has a tie-up with SBI for the card, and thus, I got the SBI card. Ended up using it in Mumbai, Delhi and Chennai over the last few months.&lt;/p&gt;
&lt;p&gt;Lately, I have been reading about way NCMC works, the limitations of the Indian NCMC design compared to other mass transit systems. In many countries, mass transit systems simply use MasterCard/Visa/Apple Pay tap and charge directly from the respective card (credit/debit card, etc.), like the London tube, Stockholm metro, HK airport express, Singapore, etc. Indian deployment is bit different.&lt;/p&gt;
&lt;br /&gt;
&lt;h3 id=&#34;indian-ncmc-offline-wallet-concept&#34;&gt;Indian NCMC offline wallet concept&lt;/h3&gt;
&lt;p&gt;The whole idea of NCMC is to have a single card which can make payment for public transport, including metro, buses etc across the country digitally. It has to be fast and reliable, and this is where the whole tech differs from systems like UPI or Visa/MasterCard/Rupay POS payments. In case of UPI as well as credit/debit card payments on POS machines - entire transaction runs online. Money goes from the person paying the amount to the receiver as part of a settlement facilitated by NPCI. I don’t need to go in detailed steps involved there, but the key idea is that there’s an active involvement of 1) Payer’s APP 2) Payer’s bank 3) Receiver’s PSP 4) Receiver’s bank 5) NPCI UPI switch, etc. All these have to work and most important - internet has to work. 😀&lt;/p&gt;
&lt;p&gt;All this largely works well for casual payments across the vendors, but not for transit payments, especially at metro stations. It easily takes 2-3 seconds in best case scenario for these online payments, which can result in a massive queue at the metro station gate, besides the risk of it not working at all if “the internet goes down” or the app freezes and whatnot. To deal with these issues, most of the mass transit systems work in hybrid mode, where the money is collected locally offline, and details of such transactions are uploaded in bulk transactions (&lt;em&gt;which, if delayed, do not cause any major issue&lt;/em&gt;). A regular Delhi (or any other) metro card follows that. When money is added to the card, it is literally added to the card via an NFC operation with cryptography in place. One can add money to that card online but it won’t reflect unless a sync operation is performed at the metro station where online balance is literally written to the card. While there is of course UPI support where tickets can be bought online using UPI &amp;amp; processed by the gate via QR code but anyone who has used that would know it’s very slow. There has been some development at the UPI front with UPI Lite X supporting local on-device wallet with the option of offline transaction, but yet to see it in action. NCMC is much ahead compared to UPI Lite X for now.&lt;/p&gt;
&lt;p&gt;NPCI seems to have taken these same concepts of offline wallet into a rupay card. So one can have a prepaid/debit/credit Rupay card from any (supported) bank and can request the creation of a “service area” in the card, and then an offline wallet balance can be stored in that service area. So while this ensures there remains a single card for transit across India &lt;em&gt;(which I personally find very useful)&lt;/em&gt; but it’s not a simple &lt;em&gt;“you can use your Rupay card to tap and pay”&lt;/em&gt; concept that exists in some countries, etc. To pay for transit, existing debit/credit card one must have support on the card itself, the bank, metro station (to create a service area). That’s quite a lot of moving parts and feels a bit fragile. Adding insulting to injury - NCMC is often markted as card which can pay outside of transit systems as well on the POS machines. Credit/Debit could anyway do that but this projection is often made for the prepaid cards &amp;amp; all this adds to chaos KYC &amp;amp; extra steps.&lt;/p&gt;
&lt;br /&gt;
&lt;h3 id=&#34;direct-use-of-visamastercardapple-pay&#34;&gt;Direct use of Visa/MasterCard/Apple Pay&lt;/h3&gt;
&lt;p&gt;While the Indian system doesn’t support Visa/MasterCard/Apple Pay for transit payments and rightfully so as the early days of Russia-Ukriane conflict have taught us, with Visa/Mastercard &lt;a href=&#34;https://www.reuters.com/business/finance/visa-suspends-operations-russia-over-ukraine-invasion-2022-03-05/&#34;&gt;suspending their operations in Russia&lt;/a&gt;, besides the high MDR rates. But concept-wise, these implementation are interesting. No special service account, no special permissions - just directly tap the card &amp;amp; go. And ofcourse they are not processing these payments in real time either (&lt;em&gt;same latency/uptime/performance challenge&lt;/em&gt;). What they do instead is that their system records each tap, and at the end of the day they do a batch settlement with the card issuer. The fun part implementation comes in how they detect fraud. Imagine someone tapping a debit card with no balance in a bank account or a credit card with no credit limit - they would let such a card pass initially, but once the system detects it during the batch settlement, they will simply block it and upload the blocked card data in batch operation across all terminals. Thus frauds can happen, but is largely contained. Unsure why NPCI didn’t go for a similar design with Rupay cards.&lt;/p&gt;
&lt;br &gt;
&lt;h3 id=&#34;ncmc-is-the-default-new-card&#34;&gt;NCMC is the default new card&lt;/h3&gt;
&lt;p&gt;Due to the “service account creation” process, use of Rupay debit/credit didn’t really picked up at metro stations, but prepaid NCMC with pre-created service area has become de-facto for the newly issued cards. Logically, that makes sense as that removes the metro operator from payment handling &amp;amp; puts an RBI authorized full fledged bank or payments bank to deal with the balance money. Delhi Metro went with Paytm initially and later moved to Airtel NCMC as RBI imposed restrictions on Paytm. Mumbai metro went for SBI, and many state transport systems did their own partership for issuing these cards.&lt;/p&gt;
&lt;br /&gt;
&lt;h3 id=&#34;offline-balance-limitations&#34;&gt;Offline balance limitations&lt;/h3&gt;
&lt;p&gt;Since these NCMCs are holding an offline balance, there are some interesting and weird limitations in the way they work.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Similar to older non-NCMC metro cards, these can be recharged online but a “sync” operation has to be performed either by metro station staff or newly installed machines or with the limited support in the Android app (&lt;em&gt;Apple’s NFC is still closed &amp;amp; yet not supported&lt;/em&gt;). This adds a bottleneck at busy stations.&lt;/li&gt;
&lt;li&gt;If a card is lost, the bank either cannot refund the balance at all or can only do so after the card actually expires. This is because the card has an offline balance &amp;amp; there’s no way for the bank to claim &amp;amp; credit it back unless the card cryptographically expires.&lt;/li&gt;
&lt;li&gt;For a credit/debit card, this is an entirely different account unrelated to their primary “online” balance. Money can be moved from an online balance to an offline balance, but again would require a sync operation by an NFC terminal.&lt;/li&gt;
&lt;li&gt;The apps/websites connected to an NCMC gets updated with a delay of days as the payments are processed.&lt;/li&gt;
&lt;li&gt;While the app/websites take time to update, card themselves hold recent transactions locally. I noticed this when I paid via NCMC in Chennai for a bus to the airport, that same transaction was visible at the DMRC terminal in Delhi metro, but not one the bank portal for the next few days.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;a href=&#34;https://www.youtube.com/watch?v=o6l7tApYbag&amp;amp;feature=youtu.be&#34;&gt;This talk&lt;/a&gt; from Sandesh Kunder (NCPI) at Global Fintech Fest 23 covers the concept as well as ideas from NPCI’s point of view.&lt;/p&gt;
&lt;br /&gt;
&lt;h3 id=&#34;fragile-system&#34;&gt;Fragile system&lt;/h3&gt;
&lt;p&gt;While there is a conceptual idea of full compatibility across NCMC - cards, terminals, etc., it’s not smooth. E.g initially I got “ECH_0007” error on DMRC terminals when doing a sync operation on the Mumbai metro-issued SBI card. It’s hard to know what went wrong since so many people were involved. Thus I could not move &amp;ldquo;online balance&amp;rdquo; which I paid via an UPI app to the card&amp;rsquo;s offline balance.&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://cdn.anuragbhatia.com/web/post/2026/ncmc-design-and-limitations/ncnc-sync-error.png&#34; alt=&#34;&#34;&gt;&lt;/p&gt;
&lt;br /&gt;
&lt;p&gt;I think at some point, NPCI will ditch this overly complicated system and will bring NCMC version 2 with a direct charge option for the Rupay card. That, along with a mix of tech like UPI Lite X with NFC, will act as a reliable, fast option for transit payments. Remember there are over 600 million rupay debit cards alone. Making them directly compatible while keeping single &amp;ldquo;online&amp;rdquo; balance which can be settled in batch operations.&lt;/p&gt;
</description>
    </item>
    
    <item>
      <title>Understanding multiple routes from same ASN</title>
      <link>https://anuragbhatia.com/post/2025/12/understanding-multiple-routes-from-same-asn/</link>
      <pubDate>Tue, 02 Dec 2025 00:24:58 +0530</pubDate>
      
      <guid>https://anuragbhatia.com/post/2025/12/understanding-multiple-routes-from-same-asn/</guid>
      <description>&lt;p&gt;A while back bgp.he.net added the feature of a live route propagation graph for a given prefix. Besides being near real-time, it is also specific to a prefix, e.g let&amp;rsquo;s look up for 2401:4900:87f0::/44 (Airtel mobility - 5G prefix):&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://cdn.anuragbhatia.com/web/post/2025/12/understanding-multiple-routes-from-same-asn/as45609.png&#34; alt=&#34;&#34;&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;https://bgp.he.net/net/2401:4900:87f0::/44#_graph&#34;&gt;https://bgp.he.net/net/2401:4900:87f0::/44#_graph&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;What sometimes confuses people is why there are multiple paths from a given ASN towards the originator ASN. Many people assume multiple paths exist for different prefixes only, and that is not true. Take e.g in the above route propagation graph AS3356 has a direct route to AS9498 as well as via AS2914, AS6939, AS6453, etc. And this kind of multiple paths is not limited just to AS3356 (&lt;em&gt;which is run by three companies as of now - Lumen in North America, Colt in the EU and Cirion in South America&lt;/em&gt;). Notice GTT AS3257 is also learning it via Cogent AS174 as well as Tata Comm AS6453. Which is actually &amp;ldquo;best path&amp;rdquo; as determined by the BGP? Quick short answer: Both!&lt;/p&gt;
&lt;p&gt;&lt;br /&gt;&lt;br /&gt;&lt;/p&gt;
&lt;h2 id=&#34;why-does-this-happen&#34;&gt;Why does this happen?&lt;/h2&gt;
&lt;p&gt;This kind of routing often happens when the other side is a large network with multiple routers doing eBGP with multiple other larger networks &amp;amp; not anywhere in the upstream path. Let&amp;rsquo;s take the GTT AS3257 example first before coming to AS3356 case (as AS3356 has something more to it as well, which I will cover after this one).&lt;/p&gt;
&lt;p&gt;Let&amp;rsquo;s query 2401:4900:87f0::/44 on Hurricane Electric&amp;rsquo;s super-lg and restrict output with AS3257 in the path - &lt;a href=&#34;https://bgp.he.net/super-lg/#2401:4900:87f0::/44?tob=brief&amp;amp;mt=include&amp;amp;ma=3257&amp;amp;els=exact&#34;&gt;output here&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://cdn.anuragbhatia.com/web/post/2025/12/understanding-multiple-routes-from-same-asn/gtt-lookup.png&#34; alt=&#34;&#34;&gt;&lt;/p&gt;
&lt;p&gt;Path 2 shows GTT AS3257 learning it from Cogent AS174 but path 4 shows it&amp;rsquo;s learning it from Tata Comm AS6453. Both of these are &lt;strong&gt;&amp;ldquo;best paths&amp;rdquo;&lt;/strong&gt; as determined by BGP in the respective routers that feed the routes. Path 2 via Cogent is being fed into route-views.chicago while path 4 is being fed into RIPE RIS RRC12 (DE-CIX, Frankfurt).&lt;/p&gt;
&lt;p&gt;Let&amp;rsquo;s look at the &lt;a href=&#34;https://www.as3257.net/lg/&#34;&gt;GTT looking glass&lt;/a&gt; and trace to this route in the Chicago and Frankfurt router:&lt;/p&gt;
&lt;h3 id=&#34;gtt-chicago--2401490087f01&#34;&gt;GTT Chicago &amp;gt; 2401:4900:87f0::1&lt;/h3&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;IPv6 traceroute to 2401:4900:87f0::1
HOST: cr1-chi1-re1                Loss%   Snt   Last   Avg  Best  Wrst StDev
 1. 2001:668:0:2:ffff:0:d5c8:7ff  0.0%     5    0.5   1.2   0.5   1.9   0.6 &amp;lt;- GTT AS3257
 2. 2001:550:3::18d              40.0%     5    2.7   1.9   1.3   2.7   0.7 &amp;lt;- Cogent AS174
 3. 2001:550:0:1000::9a36:2eb1   40.0%     5    1.2   1.3   1.2   1.6   0.3
 4. ???                          100.0     5    0.0   0.0   0.0   0.0   0.0
 5. 2001:550:0:1000::9a36:5f6d   80.0%     5   31.9  31.9  31.9  31.9   0.0
 6. 2001:550:0:1000::9a36:5a15   80.0%     5   29.1  29.1  29.1  29.1   0.0
 7. 2001:550:0:1000::9a36:a3fa   60.0%     5   38.5  50.8  38.5  63.0  17.3
 8. 2001:550:0:1000::9a36:59a     0.0%     5  181.7 181.5 180.7 183.1   1.0
 9. 2001:550:0:1000::9a36:a8fd    0.0%     5  188.2 188.4 187.9 189.8   0.8
 10. 2001:550:0:1000::9a36:a902    0.0%     4  188.0 188.3 187.7 189.6   0.8
 11. 2001:550:0:1000::9a36:1996    0.0%     4  222.2 204.6 187.3 222.2  19.0
 12. 2001:550:0:1000::9a36:5e71   75.0%     4  182.2 182.2 182.2 182.2   0.0
 13. static-36-2-68-128.xxxxx.svi  0.0%     4  182.7 182.7 181.9 184.2   1.0
 14. 2404:a800::106                0.0%     4  280.8 270.9 266.9 280.8   6.6
 15. 2404:a800:1a00:800::72        0.0%     4  262.1 263.2 262.0 265.1   1.4
 16. ???                          100.0     4    0.0   0.0   0.0   0.0   0.0
&lt;/code&gt;&lt;/pre&gt;&lt;br /&gt;
&lt;h3 id=&#34;gtt-frankfurt--2401490087f01&#34;&gt;GTT Frankfurt &amp;gt; 2401:4900:87f0::1&lt;/h3&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;IPv6 traceroute to 2401:4900:87f0::1
HOST: cr10-fra2-re0               Loss%   Snt   Last   Avg  Best  Wrst StDev
1. 2001:668:0:2:ffff:0:8d88:6be  0.0%     5    1.3  20.2   1.3  89.5  38.8 &amp;lt;- GTT AS3257
2. 2001:668:0:3:ffff:0:9a0e:9aa  0.0%     5    1.1   1.1   1.0   1.2   0.1 &amp;lt;- GTT AS3257
3. 2a01:3e0:ff20::110           80.0%     5    7.3   7.3   7.3   7.3   0.0 &amp;lt;- Tata Comm AS6453
4. 2a01:3e0:ff20:110::3         80.0%     5    6.8   6.8   6.8   6.8   0.0
5. ???                          100.0     5    0.0   0.0   0.0   0.0   0.0
6. ???                          100.0     5    0.0   0.0   0.0   0.0   0.0
7. 2a01:3e0:3900::48             0.0%     5   15.6  15.7  15.5  16.0   0.3
8. 2a01:3e0:3900::17            80.0%     5  230.8 230.8 230.8 230.8   0.0
9. 2405:2000:d00:100::14         0.0%     5  231.1 231.1 230.9 231.3   0.1
10. 2001:5a0:2300:200::d2         0.0%     5  129.6 129.4 129.2 129.6   0.2
11. 2404:a800::106                0.0%     4  160.6 162.8 160.3 169.7   4.6
12. 2404:a800:1a00:800::72        0.0%     4  162.3 162.3 162.2 162.4   0.1
13. ???                          100.0     4    0.0   0.0   0.0   0.0   0.0
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Essentially, what is happening here is that for the GTT Chicago route via Cogent AS174 became the best path, while for GTT&amp;rsquo;s router in Frankfurt, the route via Tata Comm AS6453 became the best path.&lt;/p&gt;
&lt;p&gt;Revisiting the BGP route selection algorithm:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Weight - Cisco specific, higher weight wins&lt;/li&gt;
&lt;li&gt;Local preference, higher localpref wins&lt;/li&gt;
&lt;li&gt;Locally Originated wins (over externally originated)&lt;/li&gt;
&lt;li&gt;AS_Path - Shorter AS_PATH wins&lt;/li&gt;
&lt;li&gt;Origin code preference i&amp;gt;e&amp;gt;? - Not common these days&lt;/li&gt;
&lt;li&gt;MED, low MED wins (used in multiple sessions across the same set of ASNs)&lt;/li&gt;
&lt;li&gt;eBGP wins over iBGP (enables hot potato)&lt;/li&gt;
&lt;li&gt;Lowest IGP metric to next-hop&lt;/li&gt;
&lt;li&gt;Oldest route&lt;/li&gt;
&lt;li&gt;Lowest router-id&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;So if weight is different, the higher weight wins; if weight is the same, localpref is matched etc. In this case #1, #2, #3, #4, #5, #6 and #7 are likely all the same as far as I can think. So, deal breaker becomes #8 which is the lowest IGP metric to the next-hop. If e.g for this specific router in Chicago, the IGP metric is lower to the router connected to Cogent vs. Tata Comm it will prefer Cogent and vice versa in Frankfurt. If the IGP metric is the same and if both Cogent &amp;amp; Tata Comm are on the same set of devices, then the next one #9, the oldest route will take over. It could be a case that the Chicago router first learnt this route from Cogent via the Frankfurt router learnt it from Tata Comm and hence the case.&lt;/p&gt;
&lt;p&gt;&lt;br /&gt;&lt;br /&gt;&lt;/p&gt;
&lt;h4 id=&#34;what-about-multiple-paths-to-as3356&#34;&gt;What about multiple paths to AS3356?&lt;/h4&gt;
&lt;p&gt;AS3356 is a rather interesting case because a direct path exists in this case as visible in the route propagation chart. So based on BGP route selection #4, the shortest AS_PATH wins should take over if everything else is the same.&lt;/p&gt;
&lt;p&gt;Let&amp;rsquo;s query 2401:4900:87f0::/44 again and filter all routes with 3356 in the path - &lt;a href=&#34;https://bgp.he.net/super-lg/#2401:4900:87f0::/44?tob=detail&amp;amp;mt=include&amp;amp;ma=3356&amp;amp;els=exact&#34;&gt;output here&lt;/a&gt;:&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://cdn.anuragbhatia.com/web/post/2025/12/understanding-multiple-routes-from-same-asn/as3356-lookup.png&#34; alt=&#34;&#34;&gt;&lt;/p&gt;
&lt;p&gt;Let&amp;rsquo;s compare a direct path vs an indirect path:&lt;/p&gt;
&lt;p&gt;2401:4900:87f0::/44 - 38008 3356 9498 45609 fed via rrc25.ripe.net (RIPE RRC in Amsterdam)&lt;/p&gt;
&lt;p&gt;This has BGP communities:&lt;/p&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;3356:4 - APAC
3356:666 - Peer route
3356:703 - Singapore
3356:2172 - SNG3 - Singapore3
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;So this is a &amp;ldquo;peer route&amp;rdquo; in Singapore.&lt;/p&gt;
&lt;p&gt;Vs&lt;/p&gt;
&lt;p&gt;2401:4900:87f0::/44 - 209 3356 174 9498 45609&lt;/p&gt;
&lt;p&gt;This has the following communities:&lt;/p&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;3356:3 - North America
3356:575 - USA
3356:666 - Peer route
3356:2003 - LAX1 - Los Angeles
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;So both are &amp;ldquo;peer routes&amp;rdquo; - one learnt from a peer in Singapore (short AS_PATH) while the other learnt from a peer in the US (longer AS_PATH). The localpref has to be the same in these cases because if localpref is higher on any route, AS_PATH would not be compared at all and that path would become the best path. To find what is happening, let&amp;rsquo;s query the Los Angeles router of AS3356 via &lt;a href=&#34;https://lookingglass.centurylink.com/&#34;&gt;their looking glass&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Output is &lt;a href=&#34;https://cdn.anuragbhatia.com/web/post/2025/12/understanding-multiple-routes-from-same-asn/as3356-lookup-los.txt&#34;&gt;here&lt;/a&gt;. Basically, the Singapore route is not there at all. Hence it seems like a special setup where AS3356 peers with AS9498 in Singapore, keeps the route local for APAC and does not export them in US/EU PoPs, etc. The same is reflected by Asia Vs non-Asia downstreams of AS3356 when they feed routes to public collectors and hence multiple paths. Since there isn&amp;rsquo;t a peering in the US/EU with AS9498, they would pick one of the few upstreams of AS9498, depending on their lowest IGP metric cost (or the oldest route if IGP metric cost is the same).&lt;/p&gt;
&lt;p&gt;BGP is fascinating!&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Disclaimer&lt;/strong&gt;: This is my personal blog, and hence, posts made here are in my personal capacity. These do not represent the views of my employer.&lt;/p&gt;
</description>
    </item>
    
    <item>
      <title>Mapping Starlink&#39;s global IP transit providers</title>
      <link>https://anuragbhatia.com/post/2025/10/starlink-global-interconnection/</link>
      <pubDate>Fri, 24 Oct 2025 00:48:35 +0530</pubDate>
      
      <guid>https://anuragbhatia.com/post/2025/10/starlink-global-interconnection/</guid>
      <description>&lt;p&gt;A while back, I posted about &lt;a href=&#34;https://anuragbhatia.com/post/2025/08/starlink-upstreams-in-india/&#34;&gt;Starlink&amp;rsquo;s Indian upstream&lt;/a&gt;. It&amp;rsquo;s interesting that now their prefixes are not visible behind routed via Telstra - AS4637 anymore, but it seems like they are testing Mumbai-based Microscan - AS55352.&lt;/p&gt;
&lt;p&gt;I have always been curious about how they interconnect globally, particularly with which IP transit providers. To find out, I have to establish a relation between their GeoIP data and their BGP announcements globally. They have 2161 IP pools in the GeoIP sheet while originating an aggregate of 1109 prefixes from Starlink - AS14593.&lt;/p&gt;
&lt;p&gt;Hurricane Electric&amp;rsquo;s &lt;a href=&#34;https://bgp.he.net/AS14593#_graph4&#34;&gt;Graph_v4 for AS14593&lt;/a&gt; shows a rather complicated graph because they have different upstreams at different locations.&lt;/p&gt;
&lt;figure&gt;&lt;img src=&#34;https://cdn.anuragbhatia.com/web/post/2025/10/starlink-global-interconnection/startlink-upstream-bgp-tools.png&#34; width=&#34;700&#34; height=&#34;120&#34;&gt;
&lt;/figure&gt;

&lt;p&gt;Here&amp;rsquo;s the logic I can follow to map:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Their GeoIP is either /24 or smaller than /24. I created a unique pair for the aggregate /24-city pair and did a lookup only for that. E.g for Luxembourg they have 4 x /27 (87.251.24.0/27, 87.251.24.32/27, 87.251.24.192/27 and 87.251.24.224/27) coming from same /24 (87.251.24.0/24). That way, I match this with the BGP table only once and not 4 times to get the same result.&lt;/li&gt;
&lt;li&gt;Extract all routes from the global routing table dump I carry in my ClickHouse table for AS14593.&lt;/li&gt;
&lt;li&gt;Get a subset of routes which are visible behind known transit-free tier 1 networks (to filter out announcements via peering)&lt;/li&gt;
&lt;li&gt;Break BGP table prefix,as_path mappings to /24 ASNs - AS_PATH mappings to easily map the data.&lt;/li&gt;
&lt;li&gt;Look for ASN on the left side of AS_PATH as visible from various transit-free tier 1 networks. E.g. a few lines of output for 87.251.24.0/24, I get:&lt;/li&gt;
&lt;/ol&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;&amp;#34;87.251.24.0/24&amp;#34;,&amp;#34;[28624,61568,2914,14593]&amp;#34;
&amp;#34;87.251.24.0/24&amp;#34;,&amp;#34;[262462,12956,1299,14593]&amp;#34;
&amp;#34;87.251.24.0/24&amp;#34;,&amp;#34;[20253,6762,2914,14593]&amp;#34;
&amp;#34;87.251.24.0/24&amp;#34;,&amp;#34;[54309,1299,14593]&amp;#34;
&amp;#34;87.251.24.0/24&amp;#34;,&amp;#34;[398465,3257,1299,14593]&amp;#34;
&amp;#34;87.251.24.0/24&amp;#34;,&amp;#34;[49544,2914,14593]&amp;#34;
&amp;#34;87.251.24.0/24&amp;#34;,&amp;#34;[13786,2914,14593]&amp;#34;
&amp;#34;87.251.24.0/24&amp;#34;,&amp;#34;[199524,3356,2914,14593]&amp;#34;
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;This means AS2914 and AS1299 are the upstreams here. This is just an example. Actual output has 1005 routes, and I cannot post that long list here.&lt;/p&gt;
&lt;p&gt;&lt;br /&gt;&lt;br /&gt;&lt;/p&gt;
&lt;h3 id=&#34;result&#34;&gt;Result&lt;/h3&gt;
&lt;br /&gt;
&lt;p&gt;Since the number of transits is smaller than the number of locations, I mapped each location to a given transit provider. Here&amp;rsquo;s what it looks like:&lt;/p&gt;
&lt;table&gt;
	&lt;thead&gt;
			&lt;tr&gt;
					&lt;th&gt;ASN&lt;/th&gt;
					&lt;th&gt;AS Name&lt;/th&gt;
					&lt;th&gt;Upstream for following locations&lt;/th&gt;
			&lt;/tr&gt;
	&lt;/thead&gt;
	&lt;tbody&gt;
			&lt;tr&gt;
					&lt;td&gt;AS10075&lt;/td&gt;
					&lt;td&gt;Fiber@Home Global Limited&lt;/td&gt;
					&lt;td&gt;Dhaka (Bangladesh)&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;AS12956&lt;/td&gt;
					&lt;td&gt;TELXIUS Cable&lt;/td&gt;
					&lt;td&gt;Buenos Aires (Argentina), Chicago (US), Dallas (US), Doha (Qatar), Guatemala City (Guatemala), Kuujjuaq (Canada), Lima (Peru), Managua (Nicaragua), Mexico City (Mexico), Montevideo (Uruguay), Panama City (Panama), Paris (France), Quito (Ecuador), San Jose (Costa Rica), San Salvador (El Salvador), Santiago (Chile), Sao Paulo (Brazil), Seattle (US), Stanley (Falkland Islands), Tegucigalpa (Honduras)&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;AS1299&lt;/td&gt;
					&lt;td&gt;Arelion/Telia Carrier&lt;/td&gt;
					&lt;td&gt;Aden (Yemen), Amsterdam (Netherlands), Anchorage (US), Andorra la Vella (Andorra), Ashburn (US), Astana (Kazakhstan), Athens (Greece), Atlanta (US), Baku (Azerbaijan), Bamako (Mali), Basse-Terre (Guadeloupe), Beirut (Lebanon), Belgrade (Serbia), Berlin (Germany), Bratislava (Slovakia), Brucejack (Canada), Brussels (Belgium), Bucharest (Romania), Budapest (Hungary), Calgary (Canada), Cape Canaveral (US), Charlotte Amalie (U.S. Virgin Islands), Chicago (US), Chisinau (Moldova), Colombo (Sri Lanka), Copenhagen (Denmark), Dallas (US), Denver (US), Dhaka (Bangladesh), Doha (Qatar), Dublin (Ireland), Dushanbe (Tajikistan), Dutch Harbor (US), Fort-de-France (Martinique), Guatemala City (Guatemala), Gustavia (Saint Barthélemy), Helsinki (Finland), Jerusalem (Israel), Kansas City (US), Khartoum (Sudan), Kingston (Jamaica), Kuala Lumpur (Malaysia), Kukes (Albania), Kuujjuaq (Canada), Kyiv (Ukraine), Lisbon (Portugal), Ljubljana (Slovenia), London (United Kingdom), Longyearben (Svalbard, Norway), Luxembourg (Luxembourg), Madrid (Spain), Malé (Maldives), Managua (Nicaragua), Manila (Philippines), Mariehamn (Åland Islands, Finland), Marigot (Saint Martin), Mexico City (Mexico), Miami (US), Minneapolis (US), N&amp;rsquo;Djamena (Chad), Nassau (Bahamas), Nicosia (Cyprus), Nome (US), Oslo (Norway), Panama City (Panama), Paris (France), Philipsburg (Sint Maarten), Phoenix (US), Podgorica (Montenegro), Port-au-Prince (Haiti), Prague (Czech Republic), Praia (Cape Verde), Regina (Canada), Reykjavik (Iceland), Riga (Latvia), Rome (Italy), Roseau (Dominica), Saint John&amp;rsquo;s (Antigua and Barbuda), Saint Peter Port (Guernsey), Salt Lake City (US), San Jose (Costa Rica), San Juan (Puerto Rico), San Salvador (El Salvador), Santo Domingo (Dominican Republic), Sarajevo (Bosnia and Herzegovina), Seattle (US), Singapore (Singapore), Skopje (North Macedonia), Sofia (Bulgaria), Stockholm (Sweden), Tallinn (Estonia), Tbilisi (Georgia), Tegucigalpa (Honduras), Tempe (US), Thimphu (Bhutan), Tirana (Albania), Toronto (Canada), Valletta (Malta), Vancouver (Canada), Vienna (Austria), Vilnius (Lithuania), Warsaw (Poland), Winnipeg (Canada), Yangon (Myanmar), Yerevan (Armenia), Zagreb (Croatia), Zurich (Switzerland)&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;AS137409&lt;/td&gt;
					&lt;td&gt;GSL Networks Pty LTD&lt;/td&gt;
					&lt;td&gt;Adamstown (Pitcairn Islands), Apia (Samoa), Auckland (New Zealand), Avarua District (Cook Islands), Brisbane (Australia), Chicago (US), Christchurch (New Zealand), Colombo (Sri Lanka), Dallas (US), Dhaka (Bangladesh), Dili (Timor-Leste), Doha (Qatar), Funafuti (Tuvalu), Hobart (Australia), Honiara (Solomon Islands), Honolulu (US), Kuala Lumpur (Malaysia), Malé (Maldives), Melbourne (Australia), Nuku&amp;rsquo;alofa (Tonga), Pago Pago (American Samoa), Paris (France), Perth (Australia), Port-Vila (Vanuatu), Seattle (US), Singapore (Singapore), Suva (Fiji), Sydney (Australia), Tarawa (Kiribati), Thimphu (Bhutan), Yangon (Myanmar), Yaren (Nauru)&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;AS13786&lt;/td&gt;
					&lt;td&gt;SEABORN, US&lt;/td&gt;
					&lt;td&gt;Asuncion (Paraguay), Buenos Aires (Argentina), Cayenne (French Guiana), Fortaleza (Brazil), Georgetown (Guyana), Paramaribo (Suriname), Santiago (Chile), Sao Paulo (Brazil)&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;AS21859&lt;/td&gt;
					&lt;td&gt;ZEN-ECN, US&lt;/td&gt;
					&lt;td&gt;Bandar Seri Begawan (Brunei), Hagatna (Guam), Kuala Lumpur (Malaysia), Manila (Philippines), Palikir (Federated States of Micronesia), Saipan (Northern Mariana Islands)&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;AS2516&lt;/td&gt;
					&lt;td&gt;KDDI&lt;/td&gt;
					&lt;td&gt;Chicago (US), Dallas (US), Doha (Qatar), Honolulu (US), Majuro (Marshall Islands), Paris (France), Seattle (US), Seoul (South Korea), Tokyo (Japan), Ulaanbaatar (Mongolia), Yangon (Myanmar)&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;AS267613&lt;/td&gt;
					&lt;td&gt;ELETRONET S.A., BR&lt;/td&gt;
					&lt;td&gt;Brasilia (Brazil), Kuala Lumpur (Malaysia)&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;AS2914&lt;/td&gt;
					&lt;td&gt;NTT&lt;/td&gt;
					&lt;td&gt;London (United Kingdom), Longyearben (Svalbard, Norway), Luxembourg (Luxembourg), Madrid (Spain), Mariehamn (Åland Islands, Finland), Montreal (Canada), New York (US), Oslo (Norway), Paris (France), Prague (Czech Republic), Praia (Cape Verde), Reykjavik (Iceland), Saint Peter Port (Guernsey), Saint-Pierre (Saint Pierre and Miquelon), Seattle (US), Stockholm (Sweden), Toronto (Canada), Vienna (Austria), Warsaw (Poland), Zurich (Switzerland)&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;AS30844&lt;/td&gt;
					&lt;td&gt;LIQUID-AS, GB&lt;/td&gt;
					&lt;td&gt;Aden (Yemen), Antananarivo (Madagascar), Chicago (US), Dallas (US), Doha (Qatar), Gaborone (Botswana), Gitega (Burundi), Harare (Zimbabwe), Johannesburg (South Africa), Juba (South Sudan), Khartoum (Sudan), Kigali (Rwanda), Kinshasa (Democratic Republic of the Congo), Lilongwe (Malawi), Lusaka (Zambia), Maputo (Mozambique), Mayotte (France), Mbabane (Eswatini), Mogadishu (Somalia), Nairobi (Kenya), Paris (France), Reunion (France), Seattle (US)&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;AS3257&lt;/td&gt;
					&lt;td&gt;GTT&lt;/td&gt;
					&lt;td&gt;Ashburn (US), Astana (Kazakhstan), Athens (Greece), Baku (Azerbaijan), Basse-Terre (Guadeloupe), Beirut (Lebanon), Belgrade (Serbia), Berlin (Germany), Bratislava (Slovakia), Bucharest (Romania), Budapest (Hungary), Charlotte Amalie (U.S. Virgin Islands), Chicago (US), Chisinau (Moldova), Dallas (US), Doha (Qatar), Dushanbe (Tajikistan), Fort-de-France (Martinique), Fredericton (Canada), Gustavia (Saint Barthélemy), Halifax (Canada), Hawthorne (US), Honolulu (US), Iqaluit (Canada), Kansas City (US), Khartoum (Sudan), Kingston (Jamaica), Kukes (Albania), Kuujjuaq (Canada), Kyiv (Ukraine), Ljubljana (Slovenia), Los Angeles (US), Manila (Philippines), Marigot (Saint Martin), Mexico City (Mexico), Miami (US), Milan (Italy), Minneapolis (US), Montreal (Canada), N&amp;rsquo;Djamena (Chad), Nassau (Bahamas), New York (US), Nicosia (Cyprus), Paris (France), Philipsburg (Sint Maarten), Podgorica (Montenegro), Port-au-Prince (Haiti), Portland (US), Prague (Czech Republic), Regina (Canada), Riga (Latvia), Rome (Italy), Roseau (Dominica), Saigon (Vietnam), Saint John&amp;rsquo;s (Antigua and Barbuda), Saint-Pierre (Saint Pierre and Miquelon), San Jose (Costa Rica), San Juan (Puerto Rico), Santo Domingo (Dominican Republic), Sarajevo (Bosnia and Herzegovina), Seattle (US), Skopje (North Macedonia), Sofia (Bulgaria), Tallinn (Estonia), Tbilisi (Georgia), Tirana (Albania), Toronto (Canada), Vaduz (Liechtenstein), Valletta (Malta), Vienna (Austria), Vilnius (Lithuania), Warsaw (Poland), Winnipeg (Canada), Yerevan (Armenia), Zagreb (Croatia), Zurich (Switzerland)&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;AS3356&lt;/td&gt;
					&lt;td&gt;Lumen/Colt/Level3&lt;/td&gt;
					&lt;td&gt;Anchorage (US), Asuncion (Paraguay), Atlanta (US), Bogota (Colombia), Brasilia (Brazil), Brasília (Brazil), Bridgetown (Barbados), Brucejack (Canada), Buenos Aires (Argentina), Calgary (Canada), Caracas (Venezuela), Castries (Saint Lucia), Chicago (US), Dallas (US), Denver (US), Doha (Qatar), Hawthorne (US), Honolulu (US), Kingstown (Saint Vincent and the Grenadines), Kralendijk (Bonaire), Kuala Lumpur (Malaysia), Lima (Peru), Los Angeles (US), Mexico City (Mexico), Montevideo (Uruguay), Nome (US), Panama City (Panama), Paris (France), Port of Spain (Trinidad and Tobago), Quito (Ecuador), Saint George&amp;rsquo;s (Grenada), San Jose (Costa Rica), Santiago (Chile), Sao Paulo (Brazil), Seattle (US), Stanley (Falkland Islands), Vancouver (Canada)&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;AS37282&lt;/td&gt;
					&lt;td&gt;MAINONE, NG&lt;/td&gt;
					&lt;td&gt;Abdijan (Côte d&amp;rsquo;Ivoire), Accra (Ghana), Bissau (Guinea-Bissau), Freetown (Sierra Leone), Lagos (Nigeria), Monrovia (Liberia), N&amp;rsquo;Djamena (Chad), Niamey (Niger), Porto-Novo (Benin), Yaoundé (Cameroon)&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;AS37662&lt;/td&gt;
					&lt;td&gt;WIOCC-AS, MU&lt;/td&gt;
					&lt;td&gt;Abdijan (Côte d&amp;rsquo;Ivoire), Accra (Ghana), Bissau (Guinea-Bissau), Dakar (Senegal), Freetown (Sierra Leone), Harare (Zimbabwe), Juba (South Sudan), Kinshasa (Democratic Republic of the Congo), Lagos (Nigeria), Maputo (Mozambique), Maseru (Lesotho), Monrovia (Liberia), N&amp;rsquo;Djamena (Chad), Niamey (Niger), Ouagadougou (Burkina Faso), Porto-Novo (Benin), Sao Tome (São Tomé and Príncipe), Yaoundé (Cameroon)&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;AS4826&lt;/td&gt;
					&lt;td&gt;Vocus Connect&lt;/td&gt;
					&lt;td&gt;Brisbane (Australia), Dili (Timor-Leste), Hobart (Australia), Honiara (Solomon Islands), Honolulu (US), Melbourne (Australia), Nuku&amp;rsquo;alofa (Tonga), Perth (Australia), Suva (Fiji), Sydney (Australia), Yaren (Nauru)&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;AS48728&lt;/td&gt;
					&lt;td&gt;VODAFONEQATAR, QA&lt;/td&gt;
					&lt;td&gt;No mapping to PoP but visible upstream for non-GeoIP tagged prefixes / might be up for testing&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;AS52468&lt;/td&gt;
					&lt;td&gt;UFINET PANAMA S.A., PA&lt;/td&gt;
					&lt;td&gt;Guatemala City (Guatemala), Kuujjuaq (Canada), Mexico City (Mexico), Panama City (Panama), San Jose (Costa Rica), San Salvador (El Salvador), Tegucigalpa (Honduras)&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;AS5405&lt;/td&gt;
					&lt;td&gt;INTERDOTLINK powered by Inter.link, DE&lt;/td&gt;
					&lt;td&gt;Berlin (Germany), Chicago (US), Dallas (US), Doha (Qatar), Ljubljana (Slovenia), Milan (Italy), Paris (France), Seattle (US), Vaduz (Liechtenstein), Vienna (Austria), Zagreb (Croatia), Zurich (Switzerland)&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;AS5416&lt;/td&gt;
					&lt;td&gt;Beyon&lt;/td&gt;
					&lt;td&gt;Manama (Bahrain)&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;AS55352&lt;/td&gt;
					&lt;td&gt;Microscan&lt;/td&gt;
					&lt;td&gt;No mapping to PoP but visible upstream for non-GeoIP tagged prefixes / might be up for testing&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;AS55836&lt;/td&gt;
					&lt;td&gt;Reliance Jio&lt;/td&gt;
					&lt;td&gt;Mumbai (India)&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;AS55850&lt;/td&gt;
					&lt;td&gt;Mercury NZ Limited&lt;/td&gt;
					&lt;td&gt;Adamstown (Pitcairn Islands), Apia (Samoa), Auckland (New Zealand), Avarua District (Cook Islands), Christchurch (New Zealand), Funafuti (Tuvalu), Honolulu (US), Pago Pago (American Samoa), Port-Vila (Vanuatu), Tarawa (Kiribati)&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;AS58717&lt;/td&gt;
					&lt;td&gt;Summit Communications&lt;/td&gt;
					&lt;td&gt;Dhaka (Bangladesh)&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;AS60849&lt;/td&gt;
					&lt;td&gt;ILEVANT-AS&lt;/td&gt;
					&lt;td&gt;Amman (Jordan)&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;AS6327&lt;/td&gt;
					&lt;td&gt;SHAW&lt;/td&gt;
					&lt;td&gt;Billings (US), Calgary (Canada), Regina (Canada), Vancouver (Canada)&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;AS63927&lt;/td&gt;
					&lt;td&gt;RISE-HK RISE, HK&lt;/td&gt;
					&lt;td&gt;Hagatna (Guam), Kuala Lumpur (Malaysia), Manila (Philippines), Palikir (Federated States of Micronesia), Saipan (Northern Mariana Islands)&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;AS6453&lt;/td&gt;
					&lt;td&gt;Tata Comm&lt;/td&gt;
					&lt;td&gt;No mapping to PoP but visible upstream for non-GeoIP tagged prefixes&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;AS6461&lt;/td&gt;
					&lt;td&gt;Zayo&lt;/td&gt;
					&lt;td&gt;Chicago (US), Dallas (US), Doha (Qatar), Fredericton (Canada), Halifax (Canada), Iqaluit (Canada), Kansas City (US), Kuujjuaq (Canada), Mexico City (Mexico), Montreal (Canada), Paris (France), Phoenix (US), Portland (US), Regina (Canada), Saint John&amp;rsquo;s (Canada), Salt Lake City (US), Seattle (US), Tempe (US), Toronto (Canada), Vancouver (Canada)&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;AS6762&lt;/td&gt;
					&lt;td&gt;TELECOM ITALIA SPARKLE&lt;/td&gt;
					&lt;td&gt;Asuncion (Paraguay), Buenos Aires (Argentina), Cayenne (French Guiana), Chicago (US), Dallas (US), Doha (Qatar), Fortaleza (Brazil), Georgetown (Guyana), Paramaribo (Suriname), Paris (France), Santiago (Chile), Sao Paulo (Brazil), Seattle (US)&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;AS7195&lt;/td&gt;
					&lt;td&gt;EDGEUNO&lt;/td&gt;
					&lt;td&gt;Bogota (Colombia), Bridgetown (Barbados), Caracas (Venezuela), Castries (Saint Lucia), Kingstown (Saint Vincent and the Grenadines), Kralendijk (Bonaire), Kuujjuaq (Canada), Mexico City (Mexico), Panama City (Panama), Port of Spain (Trinidad and Tobago), Quito (Ecuador), Saint George&amp;rsquo;s (Grenada), San Jose (Costa Rica), Sao Paulo (Brazil)&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;AS8529&lt;/td&gt;
					&lt;td&gt;Zain Omantel International&lt;/td&gt;
					&lt;td&gt;Muscat (Oman)&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;AS8551&lt;/td&gt;
					&lt;td&gt;Bezeqint Internet Backbone&lt;/td&gt;
					&lt;td&gt;Jerusalem (Israel), Ramallah (Palestine)&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;AS8781&lt;/td&gt;
					&lt;td&gt;Ooredoo&lt;/td&gt;
					&lt;td&gt;Chicago (US), Dallas (US), Doha (Qatar), Dubai (United Arab Emirates), Paris (France), Seattle (US)&lt;/td&gt;
			&lt;/tr&gt;
	&lt;/tbody&gt;
&lt;/table&gt;
&lt;br /&gt;
&lt;p&gt;The above data has been mapped from raw data which is &lt;a href=&#34;https://cdn.anuragbhatia.com/web/post/2025/10/starlink-global-interconnection/PoP-wise-result.txt&#34;&gt;posted here&lt;/a&gt;&lt;/p&gt;
&lt;br /&gt;
&lt;h4 id=&#34;misc-notes&#34;&gt;Misc notes:&lt;/h4&gt;
&lt;ul&gt;
&lt;li&gt;Some providers are visible in the list as transit players like Tata Comm (AS6453), Vodafone Qatar (AS48728) and Microscan (AS55352), but no PoP is mapped to them. This is either because they are just testing and these are indeed their upstreams, but no mapping found in GeoIP data, OR they are upstream for a large number of prefixes as well as downstreams, which are again not in the GeoIP mapping.&lt;/li&gt;
&lt;li&gt;This table above is simply showing upstream for a PoP. In many cases, the drop is local, while in many cases, the drop is not local. E.g. Arelion (AS1299) seems to be upstream in Starlink Sri Lanka IPs, while actually that&amp;rsquo;s a drop for Arelion in Singapore.&lt;/li&gt;
&lt;li&gt;This post is going live on 24 Oct 2025, while I worked on most of this data on 14 Oct 2025. Routing might have changed a little bit in the last 10 days.&lt;/li&gt;
&lt;/ul&gt;
&lt;br /&gt;
&lt;p&gt;Disclaimer: This is my personal blog, and hence, posts made here are in my personal capacity. These do not represent the views of my employer.&lt;/p&gt;
</description>
    </item>
    
    <item>
      <title>BSNL drops IP transit from BSCCL Bangladesh</title>
      <link>https://anuragbhatia.com/post/2025/10/bsnl-drops-transit-from-bsccl/</link>
      <pubDate>Wed, 22 Oct 2025 01:23:54 +0530</pubDate>
      
      <guid>https://anuragbhatia.com/post/2025/10/bsnl-drops-transit-from-bsccl/</guid>
      <description>&lt;p&gt;Multiple news articles came earlier in the day in Bangladeshi media, suggesting that BSNL (AS9829) has dropped its 10G link from BSCCL (AS132602) at 00:00 on 21st Oct. This was in use for connectivity in North Eastern states of India.&lt;/p&gt;
&lt;br /&gt;
&lt;p&gt;Checking routing table for routes with AS_PATH &amp;ldquo;&lt;strong&gt;132602 9829&lt;/strong&gt;&amp;rdquo; from a combined view of various route-collectors.&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://cdn.anuragbhatia.com/web/post/2025/10/bsnl-drops-transit-from-bsccl/BSNL-routes-behind-BSCCL.png&#34; alt=&#34;&#34;&gt;&lt;/p&gt;
&lt;table&gt;
	&lt;thead&gt;
			&lt;tr&gt;
					&lt;th&gt;Date&lt;/th&gt;
					&lt;th&gt;BSNL prefixes behind BSSCL&lt;/th&gt;
			&lt;/tr&gt;
	&lt;/thead&gt;
	&lt;tbody&gt;
			&lt;tr&gt;
					&lt;td&gt;2025-10-06&lt;/td&gt;
					&lt;td&gt;57&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;2025-10-07&lt;/td&gt;
					&lt;td&gt;57&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;2025-10-08&lt;/td&gt;
					&lt;td&gt;57&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;2025-10-09&lt;/td&gt;
					&lt;td&gt;57&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;2025-10-10&lt;/td&gt;
					&lt;td&gt;57&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;2025-10-11&lt;/td&gt;
					&lt;td&gt;57&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;2025-10-12&lt;/td&gt;
					&lt;td&gt;57&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;2025-10-13&lt;/td&gt;
					&lt;td&gt;57&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;2025-10-14&lt;/td&gt;
					&lt;td&gt;57&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;2025-10-15&lt;/td&gt;
					&lt;td&gt;57&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;2025-10-16&lt;/td&gt;
					&lt;td&gt;57&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;2025-10-17&lt;/td&gt;
					&lt;td&gt;57&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;2025-10-18&lt;/td&gt;
					&lt;td&gt;57&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;2025-10-19&lt;/td&gt;
					&lt;td&gt;57&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;2025-10-20&lt;/td&gt;
					&lt;td&gt;57&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;2025-10-21&lt;/td&gt;
					&lt;td&gt;0&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;2025-10-22&lt;/td&gt;
					&lt;td&gt;0&lt;/td&gt;
			&lt;/tr&gt;
	&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;So indeed seems to have gone for now &lt;a href=&#34;https://anuragbhatia.com/2016/04/networking/isp-column/india-bangladesh-bandwidth-agreement-bsnl-routing-more/&#34;&gt;after 9 years of the agreement&lt;/a&gt; between India and Bangladesh.&lt;/p&gt;
</description>
    </item>
    
    <item>
      <title>Large scale optical switching at Google - AS15169</title>
      <link>https://anuragbhatia.com/post/2025/10/large-scale-optical-switching-at-google/</link>
      <pubDate>Mon, 20 Oct 2025 03:55:52 +0530</pubDate>
      
      <guid>https://anuragbhatia.com/post/2025/10/large-scale-optical-switching-at-google/</guid>
      <description>&lt;p&gt;It&amp;rsquo;s the day of Diwali. Happy Diwali 🪔 to everyone reading this post. 😀&lt;/p&gt;
&lt;p&gt;I am in holiday mode from couple of days and mostly reading (and binge watching). While reading paper on &lt;a href=&#34;https://arxiv.org/pdf/2208.10041&#34;&gt;Apollo - Google&amp;rsquo;s optical circuit switching&lt;/a&gt;, I looked around and came across a fascinating &lt;a href=&#34;https://youtu.be/tOzg-2kVfWs&#34;&gt;Google&amp;rsquo;s talk&lt;/a&gt; from last year. This talk covers how they made their own optical switches.&lt;/p&gt;
&lt;div style=&#34;position: relative; padding-bottom: 56.25%; height: 0; overflow: hidden;&#34;&gt;
			&lt;iframe allow=&#34;accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share; fullscreen&#34; loading=&#34;eager&#34; referrerpolicy=&#34;strict-origin-when-cross-origin&#34; src=&#34;https://www.youtube.com/embed/tOzg-2kVfWs?autoplay=0&amp;amp;controls=1&amp;amp;end=0&amp;amp;loop=0&amp;amp;mute=0&amp;amp;start=0&#34; style=&#34;position: absolute; top: 0; left: 0; width: 100%; height: 100%; border:0;&#34; title=&#34;YouTube video&#34;&gt;&lt;/iframe&gt;
		&lt;/div&gt;

&lt;br /&gt;
&lt;br /&gt;
&lt;h2 id=&#34;quick-notes&#34;&gt;Quick notes&lt;/h2&gt;
&lt;p&gt;&lt;em&gt;(Advanced warning: These are from eyes of network engineer working mostly at IP/ethernet layer with poor idea about optical layer)&lt;/em&gt;&lt;/p&gt;
&lt;br /&gt;
&lt;h4 id=&#34;architecture-design&#34;&gt;Architecture design&lt;/h4&gt;
&lt;p&gt;&lt;img src=&#34;https://cdn.anuragbhatia.com/web/post/2025/10/large-scale-optical-switching-at-google/jupier-dc-arch.png&#34; alt=&#34;&#34;&gt;&lt;/p&gt;
&lt;p&gt;Google&amp;rsquo;s Jupiter datacenter architecture had typical Spine, aggregation and TOR switches. The idea here is to have big fat switches on top forming the &amp;ldquo;spine&amp;rdquo;. Next, aggregation switches, which are meshed with spine switches and these aggregation switches serve top of the rack (TOR) switches where servers connect. This helps to aggregate all servers in a given rack within the ToR switch(es) within that rack. Because of the mesh between aggregation &amp;amp; spine, the actual connections here are very high. Around 8 years ago, Google started replacing these Spine switches with optical switches. This essentially gives them a way to mesh all switches within the aggregation layer and control that optical connectivity from software. If you are watching the above embedded video from YouTube, those bits are coming from one of these optically switched systems.&lt;/p&gt;
&lt;br /&gt;
&lt;h4 id=&#34;optical-switches&#34;&gt;Optical Switches&lt;/h4&gt;
&lt;p&gt;&lt;img src=&#34;https://cdn.anuragbhatia.com/web/post/2025/10/large-scale-optical-switching-at-google/optical-switch.png&#34; alt=&#34;&#34;&gt;&lt;/p&gt;
&lt;p&gt;(Image source &lt;a href=&#34;https://youtu.be/tOzg-2kVfWs?t=301&#34;&gt;here&lt;/a&gt;)&lt;/p&gt;
&lt;br/&gt;
&lt;p&gt;Oftentimes in the IP world, to actually call an Ethernet switch with SFP optical ports an &amp;ldquo;optical switch&amp;rdquo;, but this is a different case.
Imagine having a &amp;ldquo;hardware&amp;rdquo; where 100s of fibres land, say from Input 1, Input 2,&amp;hellip; Input 100 and next 100s of fibre going out - Output 1, output 2&amp;hellip;output 100. Next, this hardware can optically route a given input (say, e.g input 1) to any given output (e.g output 10). To do this, there are a few methods. Google&amp;rsquo;s one is based on MEMS mirrors. These are tiny (less than 1mm) mirror arrays which can steer a given optical input at a given angle to a pre-defined path. They do this within milli-second range which is crazy fast.&lt;/p&gt;
&lt;figure&gt;&lt;img src=&#34;https://cdn.anuragbhatia.com/web/post/2025/10/large-scale-optical-switching-at-google/optical-mirrors.png&#34; width=&#34;800&#34; height=&#34;120&#34;&gt;
&lt;/figure&gt;

&lt;br /&gt;
&lt;figure&gt;&lt;img src=&#34;https://storage.googleapis.com/gweb-cloudblog-publish/images/2_Jupiter.max-2000x2000.jpg&#34; width=&#34;700&#34; height=&#34;120&#34;&gt;
&lt;/figure&gt;

&lt;p&gt;(Image source &lt;a href=&#34;https://cloud.google.com/blog/topics/systems/the-evolution-of-googles-jupiter-data-center-network&#34;&gt;here&lt;/a&gt;)&lt;/p&gt;
&lt;br /&gt;
&lt;p&gt;&lt;img src=&#34;https://cdn.anuragbhatia.com/web/post/2025/10/large-scale-optical-switching-at-google/design.png&#34; alt=&#34;&#34;&gt;&lt;/p&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;h4 id=&#34;east-west-traffic-is-huge&#34;&gt;East-West traffic is huge&lt;/h4&gt;
&lt;p&gt;Google started deploying this 7 years ago, and all their datacenters are using it. A considerable part of it comes from modern workloads as datacenters have a lot of East-West traffic (within DC) these days, compared to North-South (outside of DC). Google Cloud largely defines Google&amp;rsquo;s network decisions these days, and besides internal traffic for analytics, logs, backups, replications, there would be a major traffic between GPUs, compute, storage, etc. Thus, they need a mesh of aggregation switches to ensure traffic goes directly between them instead of another layer on top, which would get quite hot and become the congestion point. To deal with that, they need to connect big fat switches with lots of ports in a mesh. It&amp;rsquo;s quite interesting how, back in 2015-2016, when traffic was shooting up due to streaming, a lot of them ended up going to / aggregating on CDNs. Now, in the next bandwidth jump, it&amp;rsquo;s all local traffic to AI-based workloads and not even hitting internet but staying mostly within a DC.&lt;/p&gt;
</description>
    </item>
    
  </channel>
</rss>