Analysing Starlink's upstreams in India
On 10th July, Starlink was approved by the Indian Govt as reported in various news articles.
In past I was tracking their GeoIP allocation sheet, but lost track of it over time as my tracking system was broken. Yesterday saw their IP allocations for Mumbai:
anurag@desktop ~> curl -s https://geoip.starlinkisp.net/feed.csv | grep Mumbai
150.228.128.0/24,IN,IN-MH,Mumbai,
150.228.129.0/24,IN,IN-MH,Mumbai,
150.228.130.0/24,IN,IN-MH,Mumbai,
150.228.131.0/24,IN,IN-MH,Mumbai,
150.228.132.0/24,IN,IN-MH,Mumbai,
150.228.133.0/24,IN,IN-MH,Mumbai,
150.228.164.0/24,IN,IN-MH,Mumbai,
150.228.165.0/24,IN,IN-MH,Mumbai,
150.228.166.0/24,IN,IN-MH,Mumbai,
150.228.167.0/24,IN,IN-MH,Mumbai,
2406:2d40:2800::/40,IN,IN-MH,Mumbai,
2406:2d40:2900::/40,IN,IN-MH,Mumbai,
2406:2d40:2a00::/40,IN,IN-MH,Mumbai,
2406:2d40:2b00::/40,IN,IN-MH,Mumbai,
anurag@desktop ~>
As of now, they have 10 x /24s IPv4 and 4 x /40 IPv6. Let’s explore the BGP announcement of these prefixes:
The first 4 are visible in the aggregate announcement of 150.228.128.0/22, the next four in 150.228.132.0/23 & 150.228.166.0/23. All these are visible in the global routing table. Due to Indian norms, these must be routed from within India. In simpler terms Starlink cannot beam internet in India while using ground stations from outside of India.
Upstream for Starlink gateway in India
Source: https://bgp.he.net/net/150.228.128.0/22#_graph
Source: https://bgp.he.net/net/150.228.132.0/23#_graph
Source: https://bgp.he.net/net/150.228.166.0/23#_graph
Thus they seem to be having Reliance Jio (AS55836) and Telstra (AS4637) as upstreams in India.
Quick points on their transit
- Starlink seems to be using Jio & Telstra both for global reach. For domestic routing with Jio, it is via their Jio transit.
- For domestic routing with other major networks - Airtel & Tata Comm - it seems to be via Telstra. I see announcements of Starlink behind Tata Comm AS4755 as well as to Airtel directly within India. All these are on the downstream side of Airtel & Tata Comm. So Startlink is an indirect customer of Airtel & Tata Comm in India for now.
- Jio + Airtel + Tata Comm largely form the Indian routing table, as the majority of Indian routes are in the downstream of these networks. With these, they should be able to reach the majority of local networks. May still get some odd issues with Vodafone IDEA, Sify and BSNL, though, depending on whether the network of those prefixes is announced in domestic BGP sessions with Jio/Airtel/Tata Comm mix or not.
Telstra transit location
How to know if Telstra’s drop is within India? Well, their routing table as viewed from their looking glass gives hints.
Notice the tag 4637:30310. This matches 4637:3xx10,India as listed in the Telstra BGP community reference here.
Trace from Airtel to Starlink
Here’s a trace from Airtel FTTH in Haryana to Starlink Mumbai:
1. AS??? 172.16.36.1 (172.16.36.1) 0.0% 10 0.2 0.3 0.2 0.4 0.1
2. AS??? 10.240.9.204 (10.240.9.204) 0.0% 10 4.5 9.2 4.5 25.1 6.7
3. AS??? 172.31.0.195 (172.31.0.195) 0.0% 10 5.2 16.8 5.2 56.7 15.0
4. AS9498 173.168.18.125.dhcp.anaronline.net (125.18.168.173) 0.0% 10 5.3 6.4 4.7 8.4 1.3
5. AS9498 116.119.33.34 (116.119.33.34) 0.0% 10 31.1 35.4 29.4 47.8 6.9
6. AS9498 nsg-static-042.114.72.182.airtel.in (182.72.114.42) 0.0% 10 29.8 30.6 29.3 32.0 0.9
7. AS4637 194.50.57.210.adispace.co.jp (210.57.50.194) 0.0% 10 30.3 29.7 28.4 32.0 1.0
8. AS14593 undefined.hostname.localhost (206.224.75.121) 0.0% 10 29.6 30.0 28.4 31.9 1.0
9. AS14593 undefined.hostname.localhost (206.224.75.165) 0.0% 10 30.4 30.4 29.2 32.4 1.0
10. AS??? ??? 100.0 10 0.0 0.0 0.0 0.0 0.0
Connectivity with Tata Comm
Telstra AS4637 outside of India usually seems to be a peer of Tata Comm AS6453; however, in this setup, they seem to be a customer of Tata Comm domestic AS4755 to route these prefixes.
SELECT prefix, as_path
FROM bgp.`table`
WHERE toDate(timestamp) = today() AND hasAll(as_path, [14593, 4755]) AND ((as_path[1]) = 6453)
Query id: 10b94036-1549-4111-817e-2bd59a6454b8
┌─prefix──────────────┬─as_path────────────────┐
1. │ 2406:2d40:2800::/40 │ [6453,4755,4637,14593] │
2. │ 2406:2d40:2900::/40 │ [6453,4755,4637,14593] │
3. │ 2406:2d40:2a00::/40 │ [6453,4755,4637,14593] │
4. │ 2406:2d40:2b00::/40 │ [6453,4755,4637,14593] │
└─────────────────────┴────────────────────────┘
┌─prefix──────────────┬─as_path────────────────┐
5. │ 2605:59c0:5035::/48 │ [6453,4755,4637,14593] │
└─────────────────────┴────────────────────────┘
┌─prefix───────────┬─as_path────────────────┐
6. │ 144.126.110.0/24 │ [6453,4755,4637,14593] │
7. │ 144.126.77.0/24 │ [6453,4755,4637,14593] │
8. │ 144.126.78.0/24 │ [6453,4755,4637,14593] │
└──────────────────┴────────────────────────┘
┌─prefix───────────┬─as_path────────────────┐
9. │ 150.228.128.0/22 │ [6453,4755,4637,14593] │
10. │ 150.228.132.0/23 │ [6453,4755,4637,14593] │
└──────────────────┴────────────────────────┘
┌─prefix──────────────┬─as_path────────────────┐
11. │ 2406:2d40:2800::/40 │ [6453,4755,4637,14593] │
12. │ 2406:2d40:2900::/40 │ [6453,4755,4637,14593] │
13. │ 2406:2d40:2a00::/40 │ [6453,4755,4637,14593] │
14. │ 2406:2d40:2b00::/40 │ [6453,4755,4637,14593] │
└─────────────────────┴────────────────────────┘
┌─prefix───────────┬─as_path────────────────┐
15. │ 144.126.110.0/24 │ [6453,4755,4637,14593] │
16. │ 144.126.77.0/24 │ [6453,4755,4637,14593] │
17. │ 144.126.78.0/24 │ [6453,4755,4637,14593] │
└──────────────────┴────────────────────────┘
┌─prefix──────────────┬─as_path────────────────┐
18. │ 2605:59c0:5035::/48 │ [6453,4755,4637,14593] │
└─────────────────────┴────────────────────────┘
┌─prefix───────────┬─as_path────────────────┐
19. │ 150.228.128.0/22 │ [6453,4755,4637,14593] │
20. │ 150.228.132.0/23 │ [6453,4755,4637,14593] │
└──────────────────┴────────────────────────┘
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.