not to be dramatic, but

Network throughput

I started to wonder, is my ISP providing me 1 gigabit as promised? So I started to think about how to measure this. A simple approach is visiting speedtest.net in a web browser. This resulted in a measurement of 185 mbps one way and 279 mbps the other. In addition, I found that the website recommended "For downloads speeds over 100Mbps we recommend downloading the Speedtest app[sic]". The offered application didn't support my operating system, so I started looking for measurement tools that did. I did a bit of research to check what my ISP offered, and while they claim to provide a Speedtest service of their own, all that they provide is an "Apache2 Debian Default Page". I suppose that I could download this repeatedly, but I imagine they might frown on this.

And so I looked for other options. With the surfacing of some latent data in my brain, and a conversation with Shao, I settled upon iperf3 as the first piece of my measurement infrastructure. I found that the always-interested-in-pressuring-their-competition Hurricane Electric, claims to offer an iperf server and that the tool authors provide an address for it. This is the healthy sort of software ecosystem which I am pleased to find.

I ran some tests and found that with the Hurricane Electric server I got around 600mbps downstream:

$ iperf3 -c iperf.he.net -R -t 3
Connecting to host iperf.he.net, port 5201
Reverse mode, remote host iperf.he.net is sending
[  5] local 2604:4080:1500:8029:cad3:ffff:fea4:89c8 port 56138 connected to 2001:470:0:236::2 port 5201
[ ID] Interval           Transfer     Bitrate
[  5]   0.00-1.00   sec  68.9 MBytes   578 Mbits/sec                  
[  5]   1.00-2.00   sec  74.9 MBytes   628 Mbits/sec                  
[  5]   2.00-3.00   sec  76.5 MBytes   642 Mbits/sec                  
- - - - - - - - - - - - - - - - - - - - - - - - -
[ ID] Interval           Transfer     Bitrate         Retr
[  5]   0.00-3.05   sec   224 MBytes   617 Mbits/sec    0             sender
[  5]   0.00-3.00   sec   220 MBytes   616 Mbits/sec                  receiver

This iperf server is physically 800 miles away and networkly twelve hops:

mtr -4 --show-ips --tcp --port 5201 -rwz iperf.he.net
Start: 2025-08-03T22:11:09-0700
HOST: thich                                                               Loss%   Snt   Last   Avg  Best  Wrst StDev
  1. AS???    router.lan (5.4.4.1)                                     0.0%    10    0.9   0.8   0.5   1.0   0.1
  2. AS54858  br1-rollinst-v100.bb.as54858.net (104.156.111.129)           0.0%    10    1.8   3.1   1.4  15.0   4.2
  3. AS???    172.16.100.34                                                0.0%    10    1.7   1.6   1.2   2.0   0.2
  4. AS11404  cr2-sea-a-be100-4000.bb.as11404.net (216.243.28.205)         0.0%    10    1.4   1.4   0.9   1.8   0.2
  5. AS11404  be11.cr3-sea-a.bb.as11404.net (174.127.151.11)               0.0%    10    1.5   5.4   1.1  34.4  10.4
  6. AS11404  be55.cr2-sea-a.bb.as11404.net (65.50.198.67)                 0.0%    10    1.8   1.6   1.2   1.9   0.2
  7. AS11404  be1.cr2-sea-b.bb.as11404.net (174.127.149.137)               0.0%    10    1.7   1.7   1.4   1.9   0.1
  8. AS???    100ge14-2.core1.sea1.he.net (206.81.80.40)                  80.0%    10    1.9 516.7   1.9 1031. 728.0
  9. AS???    hurricane.nwax.net (198.32.195.42)                           0.0%    10    5.1 208.6   4.7 1033. 429.0
 10. AS45430  as6939.equinix-palo-alto.core2.pao1.he.net (198.32.176.20)  40.0%    10  7180. 1383.  20.4 7180. 2868.7
 11. AS6939   port-channel4.core1.fmt1.he.net (72.52.92.66)                0.0%    10   21.2 121.3  21.0 1022. 316.5
 12. AS6939   216.218.207.42                                               0.0%    10   21.2  21.2  20.7  21.5   0.2

Thinking about that distance led me to realize that I am measuring a lot of things that aren't the gigabit that my ISP promised me, so I decided to measure fewer things at a time. The simplest measurement I could think of is two hosts on my local network.

So I set up two hosts with iperf and ran a couple tests:

thich# iperf3  -c maya
Connecting to host maya, port 5201
[  5] local 5.4.4.4 port 33468 connected to 5.4.4.5 port 5201
[ ID] Interval           Transfer     Bitrate         Retr  Cwnd
[  5]   0.00-1.00   sec  39.9 MBytes   334 Mbits/sec    0   89.1 KBytes       
[  5]   1.00-2.00   sec  58.6 MBytes   491 Mbits/sec    0   99.0 KBytes       
[  5]   2.00-3.00   sec  73.5 MBytes   617 Mbits/sec    0    137 KBytes       
[  5]   3.00-4.00   sec  91.8 MBytes   770 Mbits/sec    0    168 KBytes       
[  5]   4.00-5.00   sec   105 MBytes   885 Mbits/sec    0    201 KBytes       
[  5]   5.00-6.00   sec   109 MBytes   916 Mbits/sec    0    201 KBytes       
[  5]   6.00-7.00   sec   109 MBytes   916 Mbits/sec    0    201 KBytes       
[  5]   7.00-8.00   sec   109 MBytes   916 Mbits/sec    0    201 KBytes       
[  5]   8.00-9.00   sec   109 MBytes   914 Mbits/sec    0    201 KBytes       
[  5]   9.00-10.00  sec   109 MBytes   916 Mbits/sec    0    201 KBytes       
- - - - - - - - - - - - - - - - - - - - - - - - -
[ ID] Interval           Transfer     Bitrate         Retr
[  5]   0.00-10.00  sec   915 MBytes   768 Mbits/sec    0             sender
[  5]   0.00-10.00  sec   914 MBytes   767 Mbits/sec                  receiver

iperf Done.
thich# iperf3 -c maya -R
Connecting to host maya, port 5201
Reverse mode, remote host maya is sending
[  5] local 5.4.4.4 port 39224 connected to 5.4.4.5 port 5201
[ ID] Interval           Transfer     Bitrate
[  5]   0.00-1.00   sec   111 MBytes   930 Mbits/sec                  
[  5]   1.00-2.00   sec   111 MBytes   933 Mbits/sec                  
[  5]   2.00-3.00   sec   111 MBytes   933 Mbits/sec                  
[  5]   3.00-4.00   sec   111 MBytes   933 Mbits/sec                  
[  5]   4.00-5.00   sec   111 MBytes   933 Mbits/sec                  
[  5]   5.00-6.00   sec   111 MBytes   933 Mbits/sec                  
[  5]   6.00-7.00   sec   111 MBytes   933 Mbits/sec                  
[  5]   7.00-8.00   sec   111 MBytes   933 Mbits/sec                  
[  5]   8.00-9.00   sec   111 MBytes   933 Mbits/sec                  
[  5]   9.00-10.00  sec   111 MBytes   933 Mbits/sec                  
- - - - - - - - - - - - - - - - - - - - - - - - -
[ ID] Interval           Transfer     Bitrate         Retr
[  5]   0.00-10.00  sec  1.09 GBytes   933 Mbits/sec    0             sender
[  5]   0.00-10.00  sec  1.09 GBytes   933 Mbits/sec                  receiver

I find these tests interesting because I get different behavior depending which direction I go, and one of these days I will get back to seeing if I can close on the differences.