Patent ID: 7636767

Claim:
A method of reducing network traffic, the method comprising the computer-implemented steps of: at a sender, receiving a data block for transmission to a receiver, wherein the sender and the receiver are connected over a communication link; identifying one or more data chunks in the data block; computing a signature for each of the one or more data chunks; for each of the one or more data chunks, performing the steps of: determining whether that data chunk has previously been transmitted by looking up the signature of that data chunk in a sender index table that associates signatures with unique index values, wherein looking up the signature of that data chunk comprises retrieving, from the sender index table, an index value that is associated with the signature of that data chunk if that data chunk has been previously transmitted; and creating a new index value, in the sender index table, that is associated with the signature of that data chunk if that data chunk has not been previously transmitted; wherein, in the sender index table, each signature is a single numeric value that does not include the associated unique index value; wherein the sender does not cache any previously transmitted data chunks; creating a message for transmitting the data block to the receiver, wherein: for each of the one or more data chunks that has previously been transmitted, the message includes the index value that is associated with the signature of that data chunk, but not that data chunk; and for each of the one or more data chunks that has not been previously transmitted, the message includes that data chunk and the new index value that is associated with the signature of that data chunk; transmitting the message to the receiver; and at the receiver, assembling the data block based on the message, wherein: for each of the one or more data chunks that has previously been transmitted, retrieving that data chunk from a receiver cache of previously transmitted data chunks, wherein that data chunk is located in the receiver cache by looking up the index value for that data chunk received in the message in a receiver index table that associates the unique index values with the locations in the receiver cache of the previously transmitted data chunks; and for each of the one or more data chunks that has not been previously transmitted, storing that data chunk in the receiver cache and associating, in the receiver index table, the new index value for that data chunk received in the message with the location of that data chunk in the receiver cache.