Update:
In general most of their global routing issues are because of design where 1) They use different transit players around the world, 2) Do not peer at IX and 3) Have lot of far off circuits. Having "transit 1" in Singapore and "transit 2" in Europe will cause issues in routing. Fixing this design is hard, someone needs to take initiative and change what has been working from long time.
I got one email and one Twitter DM asking to elaborate. I avoided that in last reply as it would mean long reply and ultimately one has to make up mind whether it's worth typing a super long message (at risk of people not reading it) OR relatively smaller message with summarized info.
Announcement only in one location
For BSNL's un-optimized routing from Internet > BSNL, what happens is that they taken certain transit based on certain locations. Take e.g Cogent AS174. BSNL is announcing 59.90.158.0/24 to Cogent AS174 and Sprint Busiuness AS1239 (which is also now part of Cogent). Outside of India BSNL does not peer publically at an IXP, and Cogent port in this specific case is in Singapore. So for outside world BSNL is saying "entry point for this prefix is ONLY in Singapore". This is fine when traffic is coming from Singapore itself or Hong Kong or Taiwan but is an issue for traffic from Europe.
Start: 2024-12-26T01:24:47+0530
HOST: server7.anuragbhatia.com Loss% Snt Last Avg Best Wrst StDev
1. AS51167 ip-161-97-128-12.static.contabo.net (161.97.128.12) 0.0% 10 3.4 2.7 0.5 7.8 2.5
2. AS??? 10.0.50.1 0.0% 10 0.5 1.4 0.3 6.3 1.9
3. AS3356 et-4-0-8.edge6.Dusseldorf1.Level3.net (62.67.22.193) 0.0% 10 15.6 7.5 0.6 28.1 8.6
4. AS174 be3356.rcr21.dus01.atlas.cogentco.com (130.117.14.185) 0.0% 10 5.1 3.1 1.0 6.7 1.7
5. AS174 be5490.ccr41.fra05.atlas.cogentco.com (154.54.62.213) 0.0% 10 5.1 7.7 4.3 32.6 8.8
6. AS174 be3733.ccr31.sin01.atlas.cogentco.com (154.54.166.118) 0.0% 10 162.9 164.3 161.7 175.8 4.2
7. AS??? ??? 100.0 10 0.0 0.0 0.0 0.0 0.0
8. AS??? ??? 100.0 10 0.0 0.0 0.0 0.0 0.0
9. AS??? ??? 100.0 10 0.0 0.0 0.0 0.0 0.0
10. AS9829 117.216.207.214 90.0% 10 177.0 177.0 177.0 177.0 0.0
11. AS??? ??? 100.0 10 0.0 0.0 0.0 0.0 0.0
12. AS9829 117.216.207.214 90.0% 10 177.4 177.4 177.4 177.4 0.0
13. AS??? ??? 100.0 10 0.0 0.0 0.0 0.0 0.0
14. AS9829 117.216.207.214 90.0% 10 185.6 185.6 185.6 185.6 0.0
hop 5 - Frankfurt
hop 6 - Singapore
Again it's important to understand that this is not a Cogent routing issue. It's BSNL's design issue. I can take a IPLC from my home in Haryana to US, buy IP transit only in US and do not announce routes anywhere else. How would Indian ISPs reach me in that case...ofcourse from the US!
Routing challenge / BGP behaviour
Globally networks often set three layers of localpref (local preference = attribute in BGP). Routes with high localpref take precedence over routes with lower localpref. So networks often have highest localpref towards customer routes, second highest towards peering routes and lowest towards transit routes. Broad idea here is that networks try to send traffic out from there customer facing ports whereever they can (because people are paying money for those ports and ideally more traffic = faster chance of next upgrade), if they cannot send traffic from customer ports and learning route only from a settlement free peer, they would do that and prefer to do that instead of last i.e to end via a transit and pay for it.
Take case of prefix: 59.88.176.0/20 -
59.88.176.0/20 - bgp.he.net announced to:
Tata Comm AS4755 (India), Cogent (AS174) US, NTT AS2914 (Singapore), GTT AS3257 (New York), Telecom Italia AS6762 (Singapore).
- Tata Comm drop in this specific prefix case is local within India and hence they can pick traffic globally and drop nearest to BSNL and in majority of cases routing would be ok.
- Cogent drop here is in US. Cogent (and their peers) in US -> 59.88.176.0/20 will be OK, but what about Cogent in Europe? Here's trace from their looking glass:
traceroute to 59.88.176.1 (59.88.176.1), 30 hops max, 60 byte packets
1 * *
2 be7942.ccr42.fra05.atlas.cogentco.com (154.54.57.18) 1.022 ms be5200.ccr41.fra05.atlas.cogentco.com (154.54.76.169) 0.621 ms
3 be7946.ccr42.par01.atlas.cogentco.com (154.54.72.117) 83.882 ms 10.093 ms
4 be3628.ccr42.jfk02.atlas.cogentco.com (154.54.27.169) 81.012 ms be3627.ccr41.jfk02.atlas.cogentco.com (66.28.4.197) 80.984 ms
5 be3496.ccr31.jfk10.atlas.cogentco.com (154.54.0.142) 81.123 ms 81.124 ms
6 be3207.agr61.jfk10.atlas.cogentco.com (154.54.26.234) 81.362 ms 81.199 ms
7 38.122.229.97 (38.122.229.97) 229.009 ms 228.970 ms
8 * *
9 * *
10 * *
11 * *
12 * *
13 * *
14 59.88.176.1 (59.88.176.1) 249.029 ms 250.917 ms
Frankfurt, Paris, New York >> BSNL handover >>>> IPLC to India (likely via EU again). So it's EU > US > EU > India flow and ofcourse much higher latency. Cogent here did not handover traffic in EU because 1) There is NO announcement/enty point for BSNL for this prefix in EU and 2) even if there was one, Cogent would prefer it's customer port. Same issue with traffic from say Telecom Italia in EU. It will go from EU > Singapore > India path adding to the latency.
Fix <- Purely from routing angle
- BSNL should buy from same set of players on both sides. Whatever providers they fix, they should take port from those in EU as well as Singapore. US can be optional because US via EU > India and US > Singapore > India both is mostly OK. One ideally expects US East > EU > India and US West > Asia > India but that is less of issue. If they want to have IPLC in US, they need to use same set of transits there as well.
- They can announce aggregate of their own pools everywhere but do more specific announcements limiting them by BGP community. So BSNL's announcement to Cogent in Singapore can go to Cogent's peers and customer in Singapore + US + South America but not EU. Same with GTT New York, it should stay within EU peers and customers, not export to EU or Singapore. Not perfact but solves lot of cases.
- What I put in #1 sounds easy in writing but is very hard to implement in govt. machinery going from tenders to tenders. What you do with existing capacity, 100G in US, EU and Singapore may not actually have same usage and hence it has to be caliberated effort. They add 100G and suddenly traffic hits 90G, they would have to add 100G more. But on other side 100G may go little un-utilized. But ideally it should be similar set of upstreams along with logic to announce their full routes (own originated + downstream) everywhere. This would fix 99% of the routing issues.
Fix <- With commercial angle:
- Networks like Airtel, Jio usually peer outside of India extensively besides transit. They have fair spread of transit but because peering is so extensive, usually you won't see routing issue specially kind BSNL has. Tata Comm has different routing design as they are one of few transit free networks and broad idea there is that they peer with other large networks and mostly have good routing with that. BSNL ultimately if runs this longhual network outside of India - it would have to add peering in the mix and that would involve putting gear in some participating DC, joining IX, aggressively peering etc.
- Over time a large part of content has come to India. Likely for inbound heavy network like BSNL they could potentially offload 80-85% traffic within India on peerings. Actual number might be lower because they lack bilateral BGP sessions across IXPs like DECIX Mumbai with som content players. If 80-85% is offload, is remaining 15% worth all above effort? Ultimately similar to compute & storage market, bandwidth is commodity and it makes sense to do things only at scale. Either they have massive traffic of their own or transit downstreams. In absence of both the effort may just not be worth it. I don't know their numbers and cannot say for sure but with loss of more and more customers over time it's unclear. As stated in some other reply in past, bandwidth pricing is like 1:3:10. $1 at core, $3 on middle mile and $10 on last mile. Whether BSNL buys at 3 or 2.9 or 3.1 (not actual price but example ratio), it won't make or break them (as 15% of their traffic would barely hit this) if their 10 paying customer are unhappy due to bad routing and leaving as soon as they have an alternate.