Hi all,
My app runs in sin, but from India my IPv4 traffic to Fly’s anycast is routed to the Amsterdam edge and then backhauled to Singapore. Over IPv6 from the same machine and connection, traffic reaches the Singapore edge directly. That makes IPv4 roughly 3× slower and adds ~300 ms per request round trip.
Setup
- Location: India
- ISP: RailTel (AS24186). Its IPv4 upstream is Bharti Airtel (AS9498), and its IPv6 upstream is Reliance Jio (AS55836).
- App region:
sin - Fly IPv4 (shared):
66.241.125.98 - Fly IPv6:
2a09:8280:1::b7:fdd6:0 - Tested: 2026-10-25, ~08:20–08:40 UTC
IPv4 → AMS edge
$ mtr -n -r -c 10 -w 66.241.125.98
HOST: fedora Loss% Snt Last Avg Best Wrst StDev
1.|-- 192.168.1.1 0.0% 10 1.4 1.5 1.4 1.7 0.1
2.|-- ??? 100.0 10 0.0 0.0 0.0 0.0 0.0
...
6.|-- 122.185.147.169 90.0% 10 10.1 10.1 10.1 10.1 0.0 # Airtel AS9498
7.|-- 116.119.33.228 0.0% 10 108.0 107.9 107.0 111.1 1.2 # Airtel AS9498
8.|-- 185.1.226.199 0.0% 10 137.5 137.6 137.2 138.2 0.3 # as57463.226.199.netix.net
9.|-- 185.1.222.47 0.0% 10 144.7 144.7 144.2 145.3 0.4 # speed-ix.cdn77.com (NL)
10.|-- 169.150.194.34 0.0% 10 145.0 144.9 144.5 145.3 0.2 # vl232.ams-eq6-core-2.cdn77.com
11.|-- 79.127.194.83 0.0% 10 137.9 137.7 137.0 138.7 0.5 # vl221.ams-eq6-dist-1.cdn77.com
12.|-- 66.241.125.98 0.0% 10 142.1 142.2 141.6 142.9 0.5
The response headers confirm the AMS edge:
$ curl -sI http://66.241.125.98/
via: 2 fly.io, 2 fly.io
fly-request-id: 01M5S2D0XKTAV10ASTPCZJRPCS-ams
More IPv4 request IDs, all -ams:
01M5S31V4A4EPWTTFK77R5RCXX-ams01M5S31VYNVQB4SZV3WBBB9MJ0-ams01M5S31WQD1WQJWBSBWN32C7EC-ams
TCP connect time over IPv4 is about 156 ms.
IPv6 → SIN edge (expected)
$ mtr -6 -n -r -c 10 -w 2a09:8280:1::b7:fdd6:0
1.|-- <home router> 0.0% 10 1.5 1.5 1.4 1.6 0.1
2.|-- 2401:b200:2060:8::1 0.0% 10 3.9 4.0 3.3 5.3 0.5 # RailTel AS24186
...
7.|-- 2405:203:881::3a9 0.0% 10 10.0 10.4 9.4 13.4 1.1 # Jio AS55836
10.|-- 2001:de8:4::6:68:1 0.0% 10 58.5 59.2 58.5 61.2 0.8 # 60068.sgw.equinix.com
12.|-- 2a02:6ea0:1:5::33 30.0% 10 59.4 86.3 59.4 127.4 24.8
13.|-- 2a09:8280:1::b7:fdd6:0 0.0% 10 60.8 59.6 59.0 60.8 0.5
fly-request-id: 01M5S32FVRKN3TA0C64SG52QT2-sin
TCP connect time over IPv6 is about 61 ms.
It’s not just my IP
Other Fly IPv4 anycast addresses also go to AMS from this network. debug.fly.dev behaves the same way:
| Address | Edge | TCP connect |
|---|---|---|
77.83.140.164 (v4) |
ams | 146 ms |
37.16.16.7 (v4) |
ams | 148 ms |
37.16.21.10 (v4) |
ams | 148 ms |
2a09:8280:1::1:2 (v6) |
sin | 61 ms |
All IPv4 paths exit Airtel and enter CDN77/Datacamp (AS60068) in Amsterdam, through NetIX and Speed-IX. The IPv6 path enters the same AS60068 at Equinix Singapore. So it looks like Airtel AS9498 prefers a European path to Fly’s IPv4 prefixes, possibly because of how they’re announced or prepended toward Airtel in Asia.
Impact
For each uncached request, the round trip is India → AMS → SIN → AMS → India, about 300+ ms, compared with about 60 ms when routed correctly. I run a DNS-over-TLS resolver on Fly, so every uncached lookup takes about 320 ms over IPv4.
Could someone on the networking side look at how Fly’s IPv4 anycast prefixes are announced to or received by Airtel (AS9498) in Asia? I’m happy to run more tests (mtr, traceroutes to specific prefixes, etc.) if that helps.
Thanks!