Network architecture and methods for transparent on-line cross-sessional encoding and transport of network communications data
DCFirst Claim
1. A system for encoding one or more repetitive data blocks in data communicated over a network comprising:
- an encoder module, coupled in the network, the encoder module intercepting data communicated from a server to a client device, the encoder module extracting data blocks from different communication sessions from the intercepted data, each extracted block having a destination address of the client device, the encoder module determining whether the client device is supported for decoding by at least one corresponding decoder module based on the destination address of the client device, and the encoder module passing through the data when the destination address of the client device is not supported for decoding by a decoder module; and
a memory, accessible to the encoder module, for storing the contents of one or more data blocks previously transmitted by the encoder module wherein the encoder module determines whether there is a match between the contents of each of the extracted data blocks and the contents of at least one previously transmitted data block,wherein the memory comprises a least recently used data structure for storing one or more previously transmitted unique data blocks, said least recently used data structure having a maximum capacity and each of the previously transmitted unique data blocks having a unique identifier and a position in an order of most recently used to least recently used of the one or more stored blocks,wherein responsive to said match, the encoder module encodes the respective extracted data block, transmits the respective extracted data block in encoded form to the at least one corresponding decoder module and associates the previously transmitted data block having the matching contents with the position in the least recently used data structure indicating the most recently used previously transmitted data block, andwherein responsive to no match, the encoder module transmits the respective extracted data block in intercepted form to the at least one corresponding decoder module.
16 Assignments
Litigations
0 Petitions
Accused Products
Abstract
A computer implemented method and system for transferring data packets includes intercepting a stream of data packets at the connectionless network layer from a client or server, encoding and encapsulating the data packets, transmitting the encoded data packets, decoding and decapsulating the data packets, and injecting the decoded and decapsulated data packets into the connectionless network layer at a client or server. The encoding of the packets is based on detecting repetitions that could exist anywhere in the data stream. The repetitions are not necessarily within a single packet but could occur across multiple packets and multiple sessions. One of the encoding algorithms includes comparing the payloads of packets with identical signatures and transmitting the full packet only when the payload had not previously been sent.
81 Citations
89 Claims
-
1. A system for encoding one or more repetitive data blocks in data communicated over a network comprising:
-
an encoder module, coupled in the network, the encoder module intercepting data communicated from a server to a client device, the encoder module extracting data blocks from different communication sessions from the intercepted data, each extracted block having a destination address of the client device, the encoder module determining whether the client device is supported for decoding by at least one corresponding decoder module based on the destination address of the client device, and the encoder module passing through the data when the destination address of the client device is not supported for decoding by a decoder module; and a memory, accessible to the encoder module, for storing the contents of one or more data blocks previously transmitted by the encoder module wherein the encoder module determines whether there is a match between the contents of each of the extracted data blocks and the contents of at least one previously transmitted data block, wherein the memory comprises a least recently used data structure for storing one or more previously transmitted unique data blocks, said least recently used data structure having a maximum capacity and each of the previously transmitted unique data blocks having a unique identifier and a position in an order of most recently used to least recently used of the one or more stored blocks, wherein responsive to said match, the encoder module encodes the respective extracted data block, transmits the respective extracted data block in encoded form to the at least one corresponding decoder module and associates the previously transmitted data block having the matching contents with the position in the least recently used data structure indicating the most recently used previously transmitted data block, and wherein responsive to no match, the encoder module transmits the respective extracted data block in intercepted form to the at least one corresponding decoder module. - View Dependent Claims (2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 21, 22, 25, 26, 27, 28, 29, 30, 31, 32, 33)
-
-
15. A system for encoding one or more repetitive data blocks in data communicated over a network comprising:
-
an encoder module, coupled in the network, the encoder module intercepting data communicated from at least one server to at least one client device, the encoder module extracting data blocks from different communication sessions from the intercepted data, each extracted block having a destination address of the client device to which the extracted data block is destined, the encoder module determining whether the client device is supported for decoding by at least one corresponding decoder module based on the destination address of the client device, and the encoder module passing through data when the destination address of the client device is not supported for decoding by a decoder module; and a memory, accessible to the encoder module, having a least recently used data structure for storing the contents of one or more unique data blocks previously transmitted by the encoder module, said least recently used data structure having a maximum capacity and each of the previously transmitted unique data blocks having a unique identifier and a position in an order of most recently used to least recently used of the one or more stored blocks, wherein the encoder module determines whether there is a match between the contents of each of the extracted data blocks and the contents of at least one previously transmitted data block, wherein responsive to said match, die encoder module encodes the respective extracted data block and transmits the respective extracted data block in encoded form to the at least one corresponding decoder module, and wherein responsive to no match, the encoder module transmits the respective extracted data block in intercepted form to the at least one corresponding decoder module, stores the extracted data block in the least recently used data structure, and associates the position of most recently used with the extracted data block. - View Dependent Claims (16)
-
-
17. A system for encoding one or more repetitive data blocks in data communicated over a network comprising:
-
an encoder module, coupled in the network, the encoder module intercepting the data, the encoder module extracting data blocks from different communication sessions from the intercepted data; a memory, accessible to the encoder module, having a least recently used data structure for storing the contents of one or more unique data blocks previously transmitted by the encoder module, said least recently used data structure having a maximum capacity and each of the previously transmitted unique data blocks having a unique identifier and a position in an order of mast recently used to least recently used of the one or more stored blocks, wherein, responsive to the least recently used data structure being at the maximum capacity, the encoder module deletes the previously transmitted data block having the order position of the least recently used data block, wherein the encoder module determines whether there is a match between the contents of each of the extracted data blocks and the contents of at least one previously transmitted data block, wherein responsive to said match, the encoder module encodes the respective extracted data block and transmits the respective extracted data block in encoded form to at least one corresponding decoder module, and wherein responsive to no match, the encoder module transmits the respective extracted data block in intercepted form to the at least one corresponding decoder module, stores the extracted data block in the least recently used data structure, and associates the position of most recently used with the extracted data block; and a synchronization mechanism including a same size for the least recently used data structure as the size of a second least recently used data structure accessible by the corresponding decoder module receiving the respective extracted data block, and a reliable network transport protocol being used for the transmission of the respective extracted data block.
-
-
18. A system for encoding one or more repetitive data blocks in data communicated over a network comprising:
-
an encoder module, coupled in the network, the encoder module intercepting the data, the encoder module extracting data blocks from different communication sessions from the intercepted data; a memory, accessible to the encoder module, having a least recently used data structure for storing the contents of one or more unique data blocks previously transmitted by the encoder module, said least recently used data structure having a maximum capacity and each of the previously transmitted unique data blocks having a unique identifier and a position in an order of most recently used to least recently used of the one or more stored blocks, wherein, responsive to the least recently used data structure being at the maximum capacity, the encoder module deletes the previously transmitted data block having the order position of the least recently used data block, wherein the encoder module determines whether there is a match between the contents of each of the extracted data blocks and the contents of at least one previously transmitted data block, wherein responsive to said match, the encoder module encodes the respective extracted data block and transmits the respective extracted data block in encoded form to at least one corresponding decoder module, and wherein responsive to no match, the encoder module transmits the respective extracted data block in intercepted form to the at least one corresponding decoder module, stores the extracted data block in the least recently used data structure, and associates the position of most recently used with the extracted data block; and a synchronization mechanism including an indicator for each transmitted extracted data block indicating whether the data block has been associated with the least recently used data structure and an installed flag associated with each of the previously transmitted data blocks in the least recently used data structure, the installed flag indicating whether the associated data block has been stored in a second least recently used data structure accessible by the corresponding decoder module that has received the respective extracted data block. - View Dependent Claims (19, 20)
-
-
23. A system for encoding one or more repetitive data blocks in data communicated over a network comprising:
-
an encoder module intercepting the data and extracting data blocks from different communication sessions from the intercepted data, each extracted block having a destination address of a client device to which the extracted data block is destined and that is supported for decoding by at least one corresponding decoder module, and the encoder module passing through data not having a supported destination address; a memory, accessible to the encoder module, for storing the contents of one or more data blocks previously transmitted by the encoder module; and a hash table having one or more bins for associating a signature with one or more of the previously transmitted data blocks, wherein the encoder module determines whether there is a match between the contents of each of the extracted data blocks and the contents of at least one previously transmitted data block by computing a signature for the respective extracted data block and comparing the computed signature with at least one signature associated with the one or more previously transmitted data blocks, the computed signature value being less than the number of hash table bins, wherein, responsive to a match in signature, the encoder selects the one or more previously transmitted data blocks having the match in signature for content comparison with the respective extracted data block, encodes the respective extracted data block and transmits the respective extracted data block in encoded form to the at least one corresponding decoder module, and wherein, responsive to no match, the encoder module transmits the respective extracted data block in intercepted form to the at least one corresponding decoder module.
-
-
24. A system for encoding one or more repetitive data blocks in data communicated over a network comprising:
-
an encoder module intercepting the data and extracting data blocks from different communication sessions from the intercepted data, each extracted block having a destination address of a client device to which the extracted data block is destined and that is supported for decoding by at least one corresponding decoder module, and the encoder module passing through data not having a supported destination address; a memory, accessible to the encoder module, for storing the contents of one or more data blocks previously transmitted by the encoder module; and a hash table having one or more bins for associating a signature with one or more of the previously transmitted data blocks, wherein the encoder module determines whether there is a match between the contents of each of the extracted data blocks and the contents of at least one previously transmitted data block by computing a signature for the respective extracted data block and comparing the computed signature with at least one signature associated with the one or more previously transmitted data blocks, the computed signature value being computed as a modulo of the number of bins, wherein, responsive to a match in signature, the encoder selects the one or more previously transmitted data blocks baying the match in signature for content comparison with the respective extracted data block, encodes the respective extracted data block and transmits the respective extracted data block in encoded form to the at least one corresponding decoder module, and wherein, responsive to no match, the encoder module transmits the respective extracted data block in intercepted form to the at least one corresponding decoder module.
-
-
34. A system for encoding one or more repetitive data blocks in data communicated over a network comprising:
-
an encoder module intercepting data communicated from a server to a client device and extracting data blocks from different communication sessions from the intercepted data, each extracted block having a destination address of the client device, the encoder module determining whether the client device is supported for decoding by at least one corresponding decoder module based on the destination address of the client device, and the encoder module passing through the data when the destination address of the client device is not supported for decoding by a decoder module; and a memory, accessible to the encoder module, for storing the contents of one or more data blocks previously transmitted by the encoder module, wherein the encoder module determines whether there is a match between the contents of each of the extracted data blocks and the contents of at least one previously transmitted data block, wherein responsive to said match, the encoder module encodes the respective extracted data block and transmits the respective extracted data block in encoded form to the at least one corresponding decoder module, wherein responsive to no match, the encoder module transmits the respective extracted data block in intercepted form to the at least one corresponding decoder module, and wherein the encoder module receives routing information in accordance with a routing protocol over the network from each of one or mote corresponding decoder modules with which it communicates and determines the one or more addresses supported by each respective decoder module from the routing information, wherein the routing information includes network topology information for the network. - View Dependent Claims (35, 36, 37, 38)
-
-
39. A system for decoding one or more repetitive data blocks in data communicated over a network comprising:
-
a decoder module being coupled in the network, the decoder module transmitting routing information over the network to a corresponding encoder module in accordance with a routing protocol, the routing information including network topology information for the network and identifying one or more addresses of client devices that the decoder module supports to control selective encoding of data at the encoder module based on the client devices supported by the decoder module by determining with the encoder module whether client devices are supported for decoding by at least one corresponding decoder module based on destination addresses of the client devices and passing through the data when the destination addresses of the client devices are not supported by decoding by a decoder module, the decoder module receiving data blocks for different communication sessions from the corresponding encoder module, each of the data blocks having a destination address of a client device to which the extracted data block is destined; and a memory accessible to the decoder module for storing the contents of one or more data blocks previously received from the corresponding encoder module wherein the decoder module determines whether the contents of each of the received data blocks is in encoded form, wherein the memory stores the previously received data blocks in a least recently used data structure for storing one or more previously received unique data blocks, the least recently used data structure having a maximum capacity and each of the previously received unique data blocks having a unique identifier and a position in an order of most recently used to least recently used of the one or more previously received blocks, wherein responsive to the respective data block being in encoded form, the decoder module selects the contents of a matching previously received block as the contents for the respective encoded block and associates the previously received data block having the matching contents with the position in the least recently used data structure indicating the most recently used previously received data, and wherein responsive to the data block being encoded, the decoder module stores the contents of the respective received data block as a previously received data block. - View Dependent Claims (40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 58, 59, 60, 61, 62, 63)
-
-
55. A system for decoding one or more repetitive data blocks in data communicated over a network comprising:
-
a decoder module receiving data blocks from an encoder module; a memory having a least recently used data structure for storing one or more previously received unique data blocks, each of the previously received unique data blocks having a unique identifier and a position from a most recently used to least recently used of the one or more previously received blocks; a synchronization mechanism including a same size for the least recently used data structure as the size of a second least recently used data structure accessible by the corresponding encoder module that transmitted the respective received data block, a reliable network transport protocol being used for the transmission of the respective received data block, wherein the decoder module determines whether the contents of each of the received data blocks is in encoded form, wherein responsive to the respective data block being in encoded four, the decoder module selects the contents of a matching previously received block as the contents for the respective encoded block, and wherein responsive to the data block being unencoded, the decoder module stores the contents of the respective received data block as a previously received data block.
-
-
56. A system for decoding one or more repetitive data blocks in data communicated over a network comprising:
-
a decoder module receiving data blocks from an encoder module; a memory having a least recently used data structure for storing one or more previously received unique data blocks, each of the previously received unique data blocks having a unique identifier and a position from a most recently used to least recently used of the one or more previously received blocks; a synchronization mechanism including a same size for the least recently used data structure as the size of a second least recently used data structure accessible by the corresponding encoder module, an indicator for each received data block indicating whether the received data block has been previously associated with the second least recently used data structure, and an installation acknowledgement transmitting by the decoder module to the corresponding encoder module responsive to an installation of each received block in the least recently used data structure, wherein the decoder module determines whether the contents of each of the received data blocks is in encoded form, wherein responsive to the respective data block being in encoded form, the decoder module selects the contents of a matching previously received block as the contents for the respective encoded block, and wherein responsive to the data block being unencoded, the decoder module stores the contents of the respective received data block as a previously received data block.
-
-
57. A system for decoding one or more repetitive data blocks in data communicated over a network comprising:
-
a decoder module receiving data blocks from an encoder module; a memory having a least recently used data structure for storing one or more previously received unique data blocks, each of the previously received unique data blocks having a unique identifier and a position from a most recently used to least recently used of the one or more previously received blocks; a synchronization mechanism wherein the decoder module receives a version number of the previously received data block having the matching contents, the version number indicating bow many times the identifier for this data block has been re-used, wherein the decoder module determines whether the contents of each of the received data blocks is in encoded form, wherein responsive to the respective data block being in encoded form, the decoder module selects the contents of a matching previously received block as the contents for the respective encoded block, and wherein responsive to the data block being unencoded, the decoder module stores the contents of the respective received data block as a previously received data block.
-
-
64. A system for decoding one or more repetitive data blocks in data communicated over a network comprising:
-
a decoder module that transmits to the encoder module over the network routing information in accordance with a routing protocol, the routing information including network topology information for the network for identifying one or more addresses of client devices that the decoder module supports to control selective encoding of data at the encoder module based on the client devices supported by the decoder module by determining with the encoder module whether client devices are supported for decoding by at least one corresponding decoder module based on destination addresses of the client devices and passing through the data when the destination addresses of the client devices are not supported for decoding by a decoder module, the decoder module receiving data blocks from an encoder module; and a memory accessible to the decoder module for storing the contents of one or more of the data blocks previously received from the encoder module, wherein the decoder module determines whether the contents of each of the received data blocks is in encoded form, wherein responsive to the respective data block being in encoded form, the decoder module selects the contents of a matching previously received block as the contents for the respective encoded block, and wherein responsive to the data block being unencoded, the decoder module stores the contents of the respective received data block as a previously received data block. - View Dependent Claims (65)
-
-
66. A system for decreasing one or more repetitive data blocks in data communicated over a network comprising:
-
an encoder module, coupled in the network, the encoder module intercepting the data, the encoder module extracting data blocks from different communication sessions from the intercepted data, each extracted block having a destination address of a client device to which the extracted date block is destined, the encoder module determining whether the client device is supported for decoding by at least one corresponding decoder module based on the destination address of the client device, and the encoder module passing through the data when the destination address of the client device that is not supported for decoding by at least one decoder module; a first memory, accessible to the encoder module, for storing the contents of one or more data blocks previously transmitted by the encoder module, wherein the encoder module determines whether there is a match between the contents of each of the extracted data blocks and the contents of at least one previously transmitted data block, wherein responsive to a match, the encoder module encodes the respective extracted data block and transmits the respective extracted data block in encoded form to the at least one corresponding decoder module, and responsive to no match, the encoder module transmits the respective extracted data block in intercepted form to the at least one corresponding decoder module; the at least one corresponding decoder module being coupled in the network, the decoder module receiving data blocks for different communication sessions from the encoder module; and a second memory accessible to the decoder module for storing the contents of one or more data blacks previously received from the encoder module, wherein the at least one corresponding decoder module determines whether the contents of each of the received data blocks is in encoded form, wherein responsive to the respective data block being in encoded form, the decoder module selects the contents of a matching previously received block as the contents for the respective encoded block, and responsive to the data block being unencoded, the decoder module stores the contents of the respective received data block as a previously received data block, and wherein the decoder module transmits routing information in accordance with a routing protocol, the routing information including network topology information for the network for identifying one or more addresses it supports over the network to the encoder module.
-
-
67. A method for encoding one or more repetitive data blocks in data communicated over a network comprising:
-
receiving routing information in accordance with a routing protocol over the network from one or more decoder modules, the routing information including network topology information for the network; determining, from the routing information, one or more destination addresses of client devices that is supported by each respective decoder module; intercepting data communicated from a server to a client device; extracting data blocks from different communication sessions from the intercepted data, each extracted block having a destination addresses for the client device to which the intercepted data in destined; passing through the data when the destination address of the client device to which the intercepted data is destined is not one of the client devices supported for decoding by the one or more decoder modules; storing the contents of one or more data blocks previously transmitted; determining whether there is a match between the contents of each of the extracted data blocks and the contents of at least one previously transmitted data block; responsive to a match encoding the respective extracted data block, and transmitting the respective extracted data block in encoded form to the at least one corresponding decoder module; and responsive to no match, the encoder module transmitting over the network the respective extracted data block in intercepted form. - View Dependent Claims (68, 69, 70, 71, 73, 74, 75, 76, 77, 78)
-
-
72. A method for encoding one or more repetitive data blocks in data communicated over a network comprising:
-
intercepting data communicated from at least one server to at least one client device; extracting data blocks from different communication sessions from the intercepted data, each extracted block having a destination address of the client device to which the extracted data block is destined and determining, based on the destination address of the client device, whether the client device is supported for decoding by at least one corresponding decoder module; passing through the data when the destination address of the client device to which the intercepted data is destined is not supported for decoding by the at least one corresponding decoder module; storing one or more previously transmitted unique data blocks in a least recently used data structure, each of the previously transmitted unique data blocks having a unique identifier and a position in an order of most recently used to least recently used of the one or more stored blocks; determining whether there is a match between the contents of each of the extracted data blocks and the contents of at least one previously transmitted data block; responsive to a match in contents, encoding the respective extracted data block, transmitting the respective extracted data block in encoded form to the at least one corresponding decoder module, and associating the previously transmitted data block having the matching contents with the position in the least recently used data structure indicating the most recently used previously transmitted data block; and responsive to no match, transmitting over the network the respective extracted data block in intercepted form.
-
-
79. A method for decoding one or more repetitive data blocks in data communicated over a network comprising:
-
transmitting routing information in accordance with a routing protocol for identifying one or more addresses of client devices that a decoder module supports over a network to an encoder module, to control selective encoding of data at the encoder module based on the client devices supported by the decoder module by determining with the encoder module whether client devices are supported for decoding by at least one corresponding decoder module based on destination addresses of the client devices and passing through the data when the destination addresses of the client devices are not supported for decoding by a decoder module, wherein the routing information includes network topology information for the network; receiving data blocks with the decoder module for different communication sessions from the encoder module; storing the contents of one or more data blocks previously received from the encoder module; determining whether the contents of each of the received data blocks is in encoded form; responsive to the respective data block being in encoded form, selecting the contents of a matching previously received block as the contents for the respective encoded block; and responsive to the data block being unencoded, storing the contents of the respective received data block as a previously received data block. - View Dependent Claims (80, 81, 82, 83, 84, 85, 86, 87, 88, 89)
-
Specification