Patent ID: 8050251

Claim:
A method for operating a system to optimize a virtual private network by defragmentation and deduplication of large data transmissions, the system comprising: a wide area network coupling a satellite apparatus to a primary apparatus, a satellite apparatus comprising: a circuit to receive a data object and determine a plurality of data paragraphs, a circuit to compute a hash for each data paragraph, a circuit to pack a packet with a plurality of hashes; a primary apparatus comprising: a data paragraph cache store, a circuit to receive a packed packet from a satellite apparatus, a circuit to integrate data paragraphs into a data object, and network interfaces and means for sending and receiving TCP packets in each apparatus; the method comprising: opening a virtual private network connection between a satellite apparatus and a primary apparatus, establishing a persistent TCP connection between a satellite apparatus and a primary apparatus through a wide area network, setting a maximum TCP buffer size at both the satellite apparatus and the primary apparatus, setting a TCP window scale to support large transmission sizes, transmitting at least one packed packet comprising a plurality of hashes and a destination IP address between a satellite apparatus and a primary apparatus, within the primary apparatus: receiving data paragraphs and hashes from a satellite apparatus until all data paragraphs are available, receiving a packed packet comprising a plurality of hashes and a destination IP address, integrating a data object by retrieving data paragraphs from data paragraph cache store and transmitting the data object to the destination IP address; within the satellite apparatus: receiving a data object and a destination IP address, determining a plurality of data paragraphs by computing fingerprints on the data object, packing a packet with hashes computed from each data paragraph and with the destination IP address, checking a transfer diary to determine if data paragraphs are available in the primary cache, queuing data paragraphs for transmission to primary cache, transmitting a hash to a primary apparatus for each data paragraph queued for transmission to said primary apparatus, determining that all data paragraphs required for a data object are available at the primary apparatus, and transmitting the packed packet to the primary apparatus.