Following on from my last post about Virgin Broadband and their traffic management, I came to a realisation. I phoned them up and asked about the current usage for our account over the last few weeks or so. They gave me this data:
Daily Downstream Total:
Period Total (GB)
26/03/2011 0.432 GB
27/03/2011 0.362 GB
28/03/2011 0.748 GB
…
17/04/2011 0.591 GB
18/04/2011 0.863 GB
20/04/2011 9.496 GB
21/04/2011 9.912 GB
iperf -c www.example.com -P 4 -f k -w 256k -t 60
This was using a TCP window of 256k, a transmit window of 60 seconds and four threads in parallel (-P 4). The net result of this is that I was sending 70MB of data from the client to the server six times an hour. Multiply this by 24, and you get a number very close to 10GB (which is what Virgin indicated we were downloading). So, after a bit of reading, I changed the client iperf options:
iperf -c www.example.com -P 1 -f k -t 5 -x CMSV
Now, I only have one thread running for five seconds with a default TCP window length and a single thread. The addition of -x CMSV reduces the output from iperf and means I don’t have to grep SUM to get the relevant line. Furthermore, I think a 10 minute sampling frequency is a little on the high side, so I changed the cronjob to only run the iperf script every half an hour, which should still give the granularity I wanted.
Of note is that with a smaller TCP window and a shorter transmit time, the results are slightly more erratic. They are, however, still showing the same pattern as before.
So, it seems Virgin were correctly measuring our downloads and managing our traffic accordingly. What caused the initial slow-down that prompted me to measure the bandwidth remains a mystery.