BSNL is a terrible ISP

I moved to Kochi before pandemic, and since then sort of got stuck here. But it has been a great time considering the situation, except for the internet. And I wholly blame BSNL for it.

I live on 20th Floor, which means that phone signal is quite weak. To add fire to the fuel, my primary SIM is of provider VI, which has terrible service here and may shut down if the things continue as they’re. Hence my FTTH connection, with my Teams calls for office and WhatsApp calls for personal use, is the primary mode of communication. Being a remote developer also means that I’ve to rely heavily on pushing code and Docker images, as well as connect to SSH sessions and remote screenshares etc. Internet is my livelihood and in the pandemic, life.

While my experience with BSNL started well, it became worse with time. To my dismay, the only ISP in my building which meets my speed requirement criteria of 100Mbps+ connection is BSNL. I started with a 100 Mbps Plan and then quickly opted for Fiber Ultra — 300 Mbps plan. Recently, I complained to the local representative, and he asked me to write an email about the issues and send it up via the chain. Following are excerpts from it.

I hope this results in some action and will update over here. In case you’re interested in the data, please leave a comment. I’ll upload it over Git.

I’ve basically experienced issues with BSNL in 3 categories.

1. Fluctuation / Reduction in bandwidth, particularly in uploads:

Following is the graph of recorded benchmarks since the starting. Notice that till Oct, I was on 100Mbps plan, where the peaks are symmetric, and then I shifted to 300Mbps plan. The source data is attached as CSV file at the end of the email.

Please notice that there have been many instances of speed drops, but importantly, lately the speed of both downloads and specially upload has been reduced. I understand that like every provider, BSNL has a Contention Ratio, and hence can assess the difference, but this definitely breaks my work of uploading container images and video presentations as well. Please consider the fact, that speedtest.netwas run with multiple connections, hence highest utilization was possible. This is generally not true for many applications and observed speeds are even lower then.

2. Higher latencies

With the dataset, I’ve also plotted latency with the offset of 20ms on Y axis. You can clearly see that ping latencies are slowly creeping up. This again, ignoring the spikes in the performance. However this latency plot is for hosts only.

The latencies for a ping to (Google DNS), shows that ping actually fluctuates even throughout the day. This is a plot for last 7 days.

You can see various spikes and ping almost doubles. This pattern continues for a server hosted in Delhi (and multiple server details hosted in India and Netherlands which I don’t want to share the names for as they’re named after our customers) Following server is hosted in NOIDA and previously this ping was 50ms. Unfortunately, I’ve lost this bit of data now in the yearly cleanup.

You can see that ping here is near 75 ms from 14th till 18th, with various spikes.

However, the interesting bit of point 2&3 comes from speed test on CloudFlare.

CloudFlare lets you plot distribution of the various uploads and downloads, and hence you get a more accurate picture of what is happening.

Following is a screenshot at 1:19 AM at night on Aug 20. Everything seems to be great.

Following is a screenshot at 1:57 AM at night on Aug 20 (approx. 40 mins later).

I don't think BSNL has peak utilization in the middle of the night, and hence it seems to be a case of something else going wrong here. Notice how distributions have started to shift to slower speeds for bigger uploads and downloads, which means your network routers are getting overwhelmed. You can also see latency jumps in ping. Ping log attached below. And this is not a selected event. This is just the day I happen to be writing the email on.

3. Code Injection on PlainText Requests

I don’t think this requires any data from me as this has been widely publicized already. Ref:

However, my issue is not just with the DNS, but with plain HTTP requests being rewritten, this leads to lot of failed API requests, and as developer, that becomes a headache, since I’ve to verify why certain request has failed.

As per the RTI, we can opt-in to DnD via email. Please let me know what is the mechanism for this? I really want to do this.

TBH, I do vehemently oppose the stance on privacy, but breaking the functionality is not okay. Furthermore, referring to Net Neutrality Committee in 2018 (, if you refer to Chapter 10, page 55, point 10.5: (Highlights are my own)

As voice, video & control traffic have different characteristics, they will have especially predefined QoS parameters set in the network based on the Latency, Jitter & Packet Loss requirements for voice, video and control traffic. Within ‘Internet traffic’, generally same QoS is followed irrespective of the service/ content, this is because devices operating at Layer-2 or Layer-3 do not have the intelligence to identify the type of content information available at the Application Layer or above. The differentiation of the ‘Internet traffic’ and setting the appropriate QoS level can be done only by devices having the capability of Deep Packet Inspection (DPI) which operate at Layer-7 or above. These devices can identify the type of application in the packet by (a) Inspecting the packets application layer protocol (b) Analyzing the data pattern inside the packet. Once the layer-7 device identifies the packet as belonging to a specific application like Skype, YouTube, http browsing etc, the device can set different QoS levels for these packets in its Layer-2/3 labelling. This Layer-2/3 label in the packet is used for traffic management by the routers/switches which operate in the core and aggregation network. According to Net Neutrality proponents, this type of differential treatment of IP packets is violation of Net Neutrality principles.

As per the privacy recommendations of TRAI, this is a violation, however since it is a recommendation, it may be ignored for now.

I hope above details are sufficient for my grievances with BSNL.

BSNL has now solved the ping and bandwidth issues a lot better. I’ve also forcibly enabled IPv6 which may have some part with it as well, but can’t test it out yet.

I also created a SpeedTest dashboard based on a project (Ref: and the results are consistent with my experience. Though it is not as reliable, it still seems to be much better than before. Code Injection is still an issue but now a much more rare occurrence. So overall, passable.

Subscribe to Prakhar Shukla

Don’t miss out on the latest issues. Sign up now to get access to the library of members-only issues.