In a unicast network, FEC encoding can be applied for improved caching efficiency at the server [36]. Since a minimum number of any distinct blocks can be used for reconstructing a transmitted file, the FEC codes make the data retrieved from the disk useful to multiple clients concurrently served. Retransmissions triggered by packet losses can be satisfied with any blocks not yet sent to the client, and are not limited to the actually lost blocks. Thus, caching of transmitted data packets on the sender becomes unnecessary. However, channel transmission efficiency requires avoidance of duplicate packets received by an individual client [11,36]. In a typical heterogeneous environment, where client receiving rates can differ by several orders of magnitude, the encoded version of the transmitted file should be accordingly orders of magnitude larger than the original. This cost scales with the skew in client transfer rates. Recent theoretical work begins to address this problem [25]; if a satisfactory solution is found, then FEC could meet our objectives for downloading large files with a high degree of sharing as well as reducing total network impact, assuming multicasting is available.
In the present paper, we demonstrate that it is possible to directly address the problem of sending unique data to each client according to its individual receiving rate without FEC codes, and at the same time maximize the advantage from data sharing across concurrent requests within a unicasting environment. If multicast is available, Circus can also use it to send shared blocks to all clients who will receive it, but its choice is to improve download performance and reduce the storage system cost to achieve a given network bandwidth.