22/01/2020, 01:05 PM
(This post was last modified: 03/12/2020, 05:09 PM by Seán.
Edit Reason: Revised for TCP BBR
)
Every mobile network mast has an uplink to provide connectivity to that mast in much the same way as any telephone exchange. Many rural masts get their connectivity over a microwave wireless link to another mast. Masts in areas with good fibre infrastructure may get their connectivity over fibre and some also provide microwave connectivity to the rural masts.
While a microwave link can provide plenty of capacity for the nodes of a single mast, some masts may be fed off a hierarchy or mesh of other masts with microwave links. This can lead to severe congestion upstream such as with the main fibre connection if it does not have enough capacity. This can lead to even quiet masts experiencing poor throughput.
Some ISPs (particularly mobile data) appear to use traffic shaping in many areas where BBR enabled hosts such as Content Delivery Networks (CDN) get priority over other types of traffic. This is particularly noticeable in rural areas that face high network contention. One good example of this is where general web browsing and downloading is incredibly slow while at the same time YouTube plays Full HD (1080p) on some videos without a glitch. This is due to Google using the BBR congestion control with its hosts (which Google developed), whereas most hosts use another TCP congestion control such as CUBIC.
In the past, Three did traffic shaping by port #. This led to the popular Ookla Speed test delivering 20Mbps+ test results when many websites were taking 10 times longer to open pages than on a 5Mbps DSL connection. Back then it was also possible to exploit this traffic prioritisation by making a VPN connection over port 8008, which Ookla uses. Three no longer prioritises by port # from what I can tell.
Testing for suspect traffic shaping
As hosts using the TCP BBR congestion control appear to escape the suspect traffic shaping, testing simply involves downloading a test file from a known fast host and then from a host that appears to use TCP BBR. If the ISP does not have traffic shaping and there is no peering issues along the route to the host, then both files should download at roughly the same speed.
Test #1 - Measurement Labs ndt5 (TCP CUBIC) vs ndt7 (TCP BBR)
Measurement Labs runs its speed test over a single connection with the test server. This is different to speedtest.net, fast.com, etc. that make lots of simultaneous connections.
The Google Internet Speed Test uses M-Lab's speed test ndt7, whereas the Measurement Lab website uses ndt5 at this time of posting. From my testing, both use the same test server, so the main difference in speed is due to the TCP congestion control algorithm, i.e. BBR vs CUBIC. Ideally, both should return the same test results.
Test #2 – Heatnet vs Fosshub
Heanet’s servers are fed by multiple 10Gbps links, so any congestion is very unlikely at that end. As they are based in Dublin, all peering should occur within Ireland. Fosshub on the other hand uses Cloudflare as its CDN, which uses the BBR congestion control.
Compare the download speed of Kodi 64-bit from Heanet and Fosshub:
Test #3 – Leaseweb vs Vultr
The Leaseweb hosting provider has test files up to 10GB in the Netherlands (when testing from Ireland), but the host serving its test files do not appear to be TCP BBR enabled. The Vultr hosting provider also has test files, which appear to be BBR enabled.
Time how long it takes to download the 100MB file from the the Leaseweb and either Vultr host:
If there is no noticeable difference between the Leaseweb and Vultr NL speed, try comparing the two DE test files.
Test #4 – TestMy London vs Colorado servers (Requires a TestMy account)
With most Irish ISPs the London server generally performs much better than the Colorado Springs server. This makes sense as Colorado Springs is in the centre of the United States. However, this TestMy host is using TCP BBR, whereas the others use another TCP congestion control algorithm. (Previously the Los Angeles server in Canada appeared to be BBR enabled, but no longer is)
TestMy simulates an actual file download by timing how long it takes to download a known block size into the browser's cache, making it a useful test on phones where it's difficult to time a file download. Don't confuse it with the popular Ookla or Fast speed tests which use very different test methodologies to determine what the connection's speed currently gets up to.
Note: Someone pointed out to me that the Colorado Springs server is only accessible while logged into TestMy. Otherwise it tests against Dallas, which is not BBR enabled.
These two links are set up to immediately start a 25MB download test against the London and Colorado Springs (Log in before testing):
The Three 4G+ mast I pick up here very rarely seldom gets over 40Mbps on the London server even early in the morning, yet the Colorado Springs server often gets over 60Mbps even at peak time!
The Three mast in Donegal town (Abbey Hotel) does not appear to be affected. With line of sight of the mast, I regularly get over 100Mbps, sometimes approaching 180Mbps with the London server:
![[Image: 06-Grus_w.png]](https://testmy.net/06-Grus_w.png)
Update 25 Aug '20: I moved the TestMy test down as the Colorado Springs test server is currently only available to members logged in. I added a second Vultr test link as Three does not always prioritise the Dutch test links.
Update 3rd December 2020: I have since revised this post as it's clearly not the ISPs prioritising specific hosts or IP ranges that I thought previously, but instead influenced by the choice of the TCP congestion control algorithm.
While a microwave link can provide plenty of capacity for the nodes of a single mast, some masts may be fed off a hierarchy or mesh of other masts with microwave links. This can lead to severe congestion upstream such as with the main fibre connection if it does not have enough capacity. This can lead to even quiet masts experiencing poor throughput.
Some ISPs (particularly mobile data) appear to use traffic shaping in many areas where BBR enabled hosts such as Content Delivery Networks (CDN) get priority over other types of traffic. This is particularly noticeable in rural areas that face high network contention. One good example of this is where general web browsing and downloading is incredibly slow while at the same time YouTube plays Full HD (1080p) on some videos without a glitch. This is due to Google using the BBR congestion control with its hosts (which Google developed), whereas most hosts use another TCP congestion control such as CUBIC.
In the past, Three did traffic shaping by port #. This led to the popular Ookla Speed test delivering 20Mbps+ test results when many websites were taking 10 times longer to open pages than on a 5Mbps DSL connection. Back then it was also possible to exploit this traffic prioritisation by making a VPN connection over port 8008, which Ookla uses. Three no longer prioritises by port # from what I can tell.
Testing for suspect traffic shaping
As hosts using the TCP BBR congestion control appear to escape the suspect traffic shaping, testing simply involves downloading a test file from a known fast host and then from a host that appears to use TCP BBR. If the ISP does not have traffic shaping and there is no peering issues along the route to the host, then both files should download at roughly the same speed.
Test #1 - Measurement Labs ndt5 (TCP CUBIC) vs ndt7 (TCP BBR)
Measurement Labs runs its speed test over a single connection with the test server. This is different to speedtest.net, fast.com, etc. that make lots of simultaneous connections.
The Google Internet Speed Test uses M-Lab's speed test ndt7, whereas the Measurement Lab website uses ndt5 at this time of posting. From my testing, both use the same test server, so the main difference in speed is due to the TCP congestion control algorithm, i.e. BBR vs CUBIC. Ideally, both should return the same test results.
- Google: https://www.google.com/search?q=internet+speed+test
- M-Lab: https://speed.measurementlab.net/#/
Test #2 – Heatnet vs Fosshub
Heanet’s servers are fed by multiple 10Gbps links, so any congestion is very unlikely at that end. As they are based in Dublin, all peering should occur within Ireland. Fosshub on the other hand uses Cloudflare as its CDN, which uses the BBR congestion control.
Compare the download speed of Kodi 64-bit from Heanet and Fosshub:
- Heanet: https://ftp.heanet.ie/pub/xbmc/releases/windows/win64/
- Fosshub: https://www.fosshub.com/Kodi.html
Test #3 – Leaseweb vs Vultr
The Leaseweb hosting provider has test files up to 10GB in the Netherlands (when testing from Ireland), but the host serving its test files do not appear to be TCP BBR enabled. The Vultr hosting provider also has test files, which appear to be BBR enabled.
Time how long it takes to download the 100MB file from the the Leaseweb and either Vultr host:
- Leaseweb (NL & DE): https://kb.leaseweb.com/network/link-speeds
- Vultr NL: https://ams-nl-ping.vultr.com/
- Vultr DE: https://fra-de-ping.vultr.com/
If there is no noticeable difference between the Leaseweb and Vultr NL speed, try comparing the two DE test files.
Test #4 – TestMy London vs Colorado servers (Requires a TestMy account)
With most Irish ISPs the London server generally performs much better than the Colorado Springs server. This makes sense as Colorado Springs is in the centre of the United States. However, this TestMy host is using TCP BBR, whereas the others use another TCP congestion control algorithm. (Previously the Los Angeles server in Canada appeared to be BBR enabled, but no longer is)
TestMy simulates an actual file download by timing how long it takes to download a known block size into the browser's cache, making it a useful test on phones where it's difficult to time a file download. Don't confuse it with the popular Ookla or Fast speed tests which use very different test methodologies to determine what the connection's speed currently gets up to.
Note: Someone pointed out to me that the Colorado Springs server is only accessible while logged into TestMy. Otherwise it tests against Dallas, which is not BBR enabled.
These two links are set up to immediately start a 25MB download test against the London and Colorado Springs (Log in before testing):
- London: https://uk.testmy.net/b/dl-25MB
- Colorado Springs: https://co.testmy.net/b/dl-25MB
![[Image: st1BtFtrV.png]](https://testmy.net/st1BtFtrV.png)
![[Image: YXZhdm1L2.png]](https://testmy.net/YXZhdm1L2.png)
The Three 4G+ mast I pick up here very rarely seldom gets over 40Mbps on the London server even early in the morning, yet the Colorado Springs server often gets over 60Mbps even at peak time!
The Three mast in Donegal town (Abbey Hotel) does not appear to be affected. With line of sight of the mast, I regularly get over 100Mbps, sometimes approaching 180Mbps with the London server:
![[Image: 06-Grus_w.png]](https://testmy.net/06-Grus_w.png)
Update 25 Aug '20: I moved the TestMy test down as the Colorado Springs test server is currently only available to members logged in. I added a second Vultr test link as Three does not always prioritise the Dutch test links.
Update 3rd December 2020: I have since revised this post as it's clearly not the ISPs prioritising specific hosts or IP ranges that I thought previously, but instead influenced by the choice of the TCP congestion control algorithm.