18 Jun

Travel of poor labourers at Delhi IGI airport

Last week while travelling to London from Delhi IGI airport I was standing in immigration queue. One of fellow passenger (likely from Bihar as per my guess from his accent) came right behind me. He was bit afraid and asked me in low voice if those (immigration) gates would get him to his flight for Dubai. I smiled and told him that it’s common passage for everyone travelling to just anywhere and explained to him about his gate by looking at his boarding pass. By this time he appeared less worried and stood silently behind me. After few mins as queue proceeded a group of 4 travellers (again of similar profile) proceeded to immigration desk and I heard multiple immigration officers screaming/shouting on them for coming to their desk without boarding pass. I even heard a loud noise “You all guys are going to return here in few days and would loose all money!” as one of immigration officer said to them. I just wondered since when did that immigration officer became career consultant! ? I noticed that person standing behind me was quite restless and was looking at my face. I told him that it’s OK and that he was already holding boarding pass and he does not need to worry.

This is pretty much same case I see every time when travelling out of Delhi IGI. I have not travelled from any other airport enough to comment about them. But in case of Delhi IGI once in a while I come across poor, uneducated/less educated or non-English speaking workers just roaming around there in complete confusion. Behavior of members from airport staff, immigration and even security guards is very rude and poor towards these people. All these people need is help in filling of immigration form and someone to explain them politely (in Hindi, Punjabi etc) on the process they need to go through. It’s just a shame that our “modern award winning” airports just fail to do that. Their social media team does mostly reaches out to me on twitter whenever I checkin on foursquare at airport but they miss out to help people who need offline help in just basic check in.

This needs to be fixed right from the top authority. Entire staff should be trained and explained with facts that not everyone is used to basic systems or just reading when travelling for first time. I often get confused when at a airport or railway outside India and everyone around is mostly very open and willing to help. They do not scream on me for asking “next-hop” for the route!  Apart from that I find a certain disrespect for labourers going to gulf countries. Why it should be?

Yes, we all have heard of stories when these people are cheated or not paid well. But that further explains how hard life they already live. Why make it more harder by putting them to go through this “exam” like condition at airport? Most of them bring foreign exchange to country while uplifting quality of their family back here in India. Instead of respecting them for their work and helping them, our system collectively works hard to make them feel low and bad about themselves. I noticed exactly same issue at Dhaka airport where when I helped one person in “filling form” I was just grouped by 5-6 more people back to back. Why can’t Govt. simply have user friendly helpdesk to help them? Also, departure form somewhat is a old and broken concept and used in very few countries like India, Bangladesh etc. If someone is crossing immigration with a passport & boarding pass, why they need to fill those details on a paper anyways?


Note: I would be presenting on “Performance of root DNS anycast in UK & Ireland” in INEX meeting on 20th in Dublin. Meet me if you are attending UK & Ireland peering forum or INEX meeting then just buzz me over and it would be great to meet. 🙂

08 Nov

Why airport wifi sucks?




Sitting at Kolkata airport. Noticed the usual “Free Wifi in the area!” message and connected to Tata Docomo Free wifi. Performance was quite poor.


Two key issues with wifi: 

  1. Using of only 2.4Ghz (802.11b/g/n with 20Mhz channel). No AP with 5Ghz box. (Click here to view scanner data). Should have been 5Ghz
  2. Entire traffic is getting tunnel via Mumbai i.e West India (while I am sitting on Eastern side). Adding up to latency and performance significantly.


Here are some of traces to random locations:

traceroute anuragbhatia.com
traceroute to anuragbhatia.com (, 64 hops max, 52 byte packets
 1 (  74.141 ms  55.771 ms  83.987 ms
 2 (  60.473 ms  56.363 ms  56.885 ms
 3  * (  57.123 ms  60.577 ms
 4 (  62.529 ms  57.420 ms  57.032 ms
 5 (  57.206 ms  57.201 ms  59.841 ms
 6  * * *
 7  ix-0-100.tcore1.mlv-mumbai.as6453.net (  60.127 ms *  59.179 ms
 8  if-9-5.tcore1.wyn-marseille.as6453.net (  163.571 ms  163.083 ms  165.671 ms
 9  if-8-1600.tcore1.pye-paris.as6453.net (  165.586 ms *  168.976 ms
10  if-2-2.tcore1.pvu-paris.as6453.net (  164.356 ms  160.600 ms  167.841 ms
11 (  204.567 ms  170.125 ms  164.025 ms
12  ae-1-19.bar1.munich1.level3.net (  187.130 ms  176.954 ms  175.734 ms
13  ae-1-19.bar1.munich1.level3.net (  173.793 ms  180.293 ms  175.585 ms
14  gw03.contabo.net (  174.955 ms * *
15  anuragbhatia.com (  179.955 ms *  179.185 ms


traceroute google.com
traceroute: Warning: google.com has multiple addresses; using
traceroute to google.com (, 64 hops max, 52 byte packets
 1 (  57.058 ms  56.659 ms  55.847 ms
 2 (  56.825 ms  58.513 ms  55.854 ms
 3 (  56.682 ms  60.542 ms  59.486 ms
 4 (  58.176 ms  57.624 ms  58.444 ms
 5 (  58.806 ms  57.714 ms  59.340 ms
 6  * * *
 7 (  58.810 ms  65.872 ms  69.436 ms
 8 (  58.748 ms  60.547 ms (  58.878 ms
 9 (  77.188 ms  80.828 ms  78.031 ms
10 (  82.458 ms  77.529 ms  79.603 ms
11  del01s07-in-f1.1e100.net (  77.242 ms *  76.067 ms


traceroute cloudaccess.net
traceroute to cloudaccess.net (, 64 hops max, 52 byte packets
 1 (  65.006 ms  73.056 ms  57.290 ms
 2  * (  55.313 ms  55.498 ms
 3 (  62.335 ms  58.146 ms  65.322 ms
 4 (  58.307 ms  64.118 ms  60.188 ms
 5 (  67.951 ms  58.059 ms  57.658 ms
 6  * * *
 7  ix-0-100.tcore1.mlv-mumbai.as6453.net (  60.601 ms  58.711 ms  58.611 ms
 8  if-9-5.tcore1.wyn-marseille.as6453.net (  170.234 ms  163.890 ms *
 9  if-8-1600.tcore1.pye-paris.as6453.net (  163.956 ms  165.691 ms  174.445 ms
10  if-2-2.tcore1.pvu-paris.as6453.net (  161.027 ms  165.970 ms  179.712 ms
11 (  164.602 ms  164.395 ms  163.093 ms
12  xe-1-2-2.chi11.ip4.gtt.net (  271.367 ms
    xe-8-2-2.chi11.ip4.gtt.net (  273.996 ms  265.810 ms
13  ip4.gtt.net (  266.941 ms  265.019 ms  265.221 ms
14  173-225-176-89.core2.sfld2.r256.net (  275.479 ms  272.507 ms  272.840 ms
15  border-router02-detroit.static.cloudaccess.net (  280.231 ms  268.907 ms  286.357 ms
16 (  269.869 ms !Z  270.031 ms !Z  270.207 ms !Z


So no matter wherever I push packets for, then hit hop 5 – Mumbai / VSNL AS4755 router because likely that is where the core L3 device (MSC/central authentication box) for this network is. This is big issue because likely Tata Docomo would be tunneling entire wifi traffic from anywhere in India, going to anywhere globally via Mumbai because that is where they put their wifi central box. What we need in India is more simpler deployments, more open source stuff so cost doesn’t becomes point of selection for keeping such devices central. And most important we need networks to peer at internet exchanges so atleast East region traffic stays within East and doesn’t has to travel thousands of kilometers to Mumbai just to hop on to another network.



Overall speeds seems to be capped at 1Mbps which is too low these days and here’s 100 packet ping to first hop ( showing how poor is the wireless signal performance.

ping -c 100
PING ( 56 data bytes
64 bytes from icmp_seq=0 ttl=255 time=52.365 ms
64 bytes from icmp_seq=1 ttl=255 time=51.391 ms
64 bytes from icmp_seq=2 ttl=255 time=48.985 ms
64 bytes from icmp_seq=3 ttl=255 time=264.974 ms
64 bytes from icmp_seq=4 ttl=255 time=252.179 ms
Request timeout for icmp_seq 5
64 bytes from icmp_seq=6 ttl=255 time=51.491 ms
64 bytes from icmp_seq=7 ttl=255 time=81.809 ms
64 bytes from icmp_seq=8 ttl=255 time=49.312 ms
64 bytes from icmp_seq=9 ttl=255 time=55.065 ms
64 bytes from icmp_seq=10 ttl=255 time=52.825 ms
64 bytes from icmp_seq=11 ttl=255 time=49.899 ms
64 bytes from icmp_seq=12 ttl=255 time=59.585 ms
64 bytes from icmp_seq=13 ttl=255 time=262.916 ms
64 bytes from icmp_seq=14 ttl=255 time=55.734 ms
64 bytes from icmp_seq=15 ttl=255 time=49.476 ms
64 bytes from icmp_seq=16 ttl=255 time=48.953 ms
Request timeout for icmp_seq 17
64 bytes from icmp_seq=18 ttl=255 time=299.531 ms
64 bytes from icmp_seq=19 ttl=255 time=315.367 ms
64 bytes from icmp_seq=20 ttl=255 time=49.276 ms
64 bytes from icmp_seq=21 ttl=255 time=48.629 ms
64 bytes from icmp_seq=22 ttl=255 time=59.231 ms
64 bytes from icmp_seq=23 ttl=255 time=54.367 ms
64 bytes from icmp_seq=24 ttl=255 time=49.607 ms
64 bytes from icmp_seq=25 ttl=255 time=62.368 ms
64 bytes from icmp_seq=26 ttl=255 time=50.263 ms
64 bytes from icmp_seq=27 ttl=255 time=167.378 ms
Request timeout for icmp_seq 28
64 bytes from icmp_seq=29 ttl=255 time=316.048 ms
64 bytes from icmp_seq=30 ttl=255 time=325.624 ms
64 bytes from icmp_seq=31 ttl=255 time=463.967 ms
64 bytes from icmp_seq=32 ttl=255 time=469.114 ms
64 bytes from icmp_seq=33 ttl=255 time=292.147 ms
64 bytes from icmp_seq=34 ttl=255 time=522.468 ms
64 bytes from icmp_seq=35 ttl=255 time=713.133 ms
64 bytes from icmp_seq=36 ttl=255 time=110.451 ms
Request timeout for icmp_seq 37
64 bytes from icmp_seq=38 ttl=255 time=342.196 ms
Request timeout for icmp_seq 39
64 bytes from icmp_seq=40 ttl=255 time=269.410 ms
64 bytes from icmp_seq=41 ttl=255 time=252.759 ms
64 bytes from icmp_seq=42 ttl=255 time=406.372 ms
64 bytes from icmp_seq=43 ttl=255 time=222.788 ms
64 bytes from icmp_seq=44 ttl=255 time=228.961 ms
64 bytes from icmp_seq=45 ttl=255 time=205.769 ms
64 bytes from icmp_seq=46 ttl=255 time=177.845 ms
Request timeout for icmp_seq 47
64 bytes from icmp_seq=48 ttl=255 time=347.503 ms
64 bytes from icmp_seq=49 ttl=255 time=285.772 ms
64 bytes from icmp_seq=50 ttl=255 time=428.171 ms
64 bytes from icmp_seq=51 ttl=255 time=306.871 ms
64 bytes from icmp_seq=52 ttl=255 time=246.806 ms
64 bytes from icmp_seq=53 ttl=255 time=213.304 ms
64 bytes from icmp_seq=54 ttl=255 time=175.060 ms
64 bytes from icmp_seq=55 ttl=255 time=262.179 ms
64 bytes from icmp_seq=56 ttl=255 time=421.965 ms
64 bytes from icmp_seq=57 ttl=255 time=339.597 ms
64 bytes from icmp_seq=58 ttl=255 time=334.415 ms
64 bytes from icmp_seq=59 ttl=255 time=461.400 ms
64 bytes from icmp_seq=60 ttl=255 time=439.854 ms
64 bytes from icmp_seq=61 ttl=255 time=475.714 ms
64 bytes from icmp_seq=62 ttl=255 time=269.855 ms
64 bytes from icmp_seq=63 ttl=255 time=223.720 ms
64 bytes from icmp_seq=64 ttl=255 time=190.660 ms
64 bytes from icmp_seq=65 ttl=255 time=70.555 ms
64 bytes from icmp_seq=66 ttl=255 time=51.592 ms
64 bytes from icmp_seq=67 ttl=255 time=57.906 ms
64 bytes from icmp_seq=68 ttl=255 time=54.205 ms
64 bytes from icmp_seq=69 ttl=255 time=250.238 ms
64 bytes from icmp_seq=70 ttl=255 time=62.416 ms
64 bytes from icmp_seq=71 ttl=255 time=51.538 ms
64 bytes from icmp_seq=72 ttl=255 time=48.953 ms
64 bytes from icmp_seq=73 ttl=255 time=193.173 ms
64 bytes from icmp_seq=74 ttl=255 time=183.505 ms
64 bytes from icmp_seq=75 ttl=255 time=371.035 ms
64 bytes from icmp_seq=76 ttl=255 time=77.897 ms
64 bytes from icmp_seq=77 ttl=255 time=51.497 ms
64 bytes from icmp_seq=78 ttl=255 time=54.808 ms
Request timeout for icmp_seq 79
64 bytes from icmp_seq=80 ttl=255 time=60.320 ms
64 bytes from icmp_seq=81 ttl=255 time=48.887 ms
64 bytes from icmp_seq=82 ttl=255 time=49.610 ms
Request timeout for icmp_seq 83
64 bytes from icmp_seq=84 ttl=255 time=51.179 ms
64 bytes from icmp_seq=85 ttl=255 time=64.214 ms
64 bytes from icmp_seq=86 ttl=255 time=64.161 ms
64 bytes from icmp_seq=87 ttl=255 time=168.550 ms
64 bytes from icmp_seq=88 ttl=255 time=163.238 ms
64 bytes from icmp_seq=89 ttl=255 time=164.712 ms
64 bytes from icmp_seq=90 ttl=255 time=62.995 ms
64 bytes from icmp_seq=91 ttl=255 time=65.484 ms
64 bytes from icmp_seq=92 ttl=255 time=50.530 ms
64 bytes from icmp_seq=93 ttl=255 time=54.615 ms
Request timeout for icmp_seq 94
64 bytes from icmp_seq=95 ttl=255 time=57.349 ms
64 bytes from icmp_seq=96 ttl=255 time=59.677 ms
64 bytes from icmp_seq=97 ttl=255 time=191.897 ms
64 bytes from icmp_seq=98 ttl=255 time=49.441 ms
--- ping statistics ---
100 packets transmitted, 90 packets received, 10.0% packet loss
round-trip min/avg/max/stddev = 48.629/182.123/713.133/147.560 ms


Since latency min is 48ms, quite clearly L3 end is far off in Mumbai and likely would be running ipsec or some other kind of VPN tunnels to the APs. This is ground level performance of what we hear in media “wifi business strategies“. Wifi as a technology is excellent but does take decent homework to deploy properly. Just hanging bunch of boxes and routing traffic from one MSC/central server placed far off doesn’t really helps. Wifi as a technology can help to offload stress on 3G/4G significantly as long as it is done in right way keeping in assumption that Wifi runs on “unlicensed spectrum” and interference can very much happen.

Time to catch up flight to next hop!