I started wondering how common are partial downloads, ie. downloads which do not fetch a whole piece, but only some part of it. I kinda assumed most downloads would probably fetch a full piece, but when I compared the bandwidth usage to summing up downloads manually as they are logged, the discrepancy was quite big.
I’ve captured a few hours of traffic using tcpdump and wrote some very crude code to compare requested downloads to actual piece sizes. In this specific sample it turned out that…
- only about 10% of download attempts fetch the whole piece,
- strangely, about 20% of download attempts fetch the whole piece except for exactly 256 bytes,
- the requested amounts over the whole sample were only about 40% of the total size of requested pieces.
Remember that the requested sizes from a node’s point of view are after Reed-Solomon, so 256 bytes is probably equal to skipping around 7424 bytes of the original file.
The statistics above make me a bit suspicious about the results of my past experiments. I’d probably need to instrument a fresh node with some additional code to accurately measure the effect of this discovery on my measurements, so not going to redo them any soon.