US20110202673A1 - Network characteristic-based compression of network traffic - Google Patents

Network characteristic-based compression of network traffic Download PDF

Info

Publication number
US20110202673A1
US20110202673A1 US13/091,966 US201113091966A US2011202673A1 US 20110202673 A1 US20110202673 A1 US 20110202673A1 US 201113091966 A US201113091966 A US 201113091966A US 2011202673 A1 US2011202673 A1 US 2011202673A1
Authority
US
United States
Prior art keywords
data
compression
dictionary
stream
network device
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Abandoned
Application number
US13/091,966
Inventor
Sravan Vadlakonda
Nitin Gugle
Rohini Kasturi
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Juniper Networks Inc
Original Assignee
Juniper Networks Inc
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Juniper Networks Inc filed Critical Juniper Networks Inc
Priority to US13/091,966 priority Critical patent/US20110202673A1/en
Publication of US20110202673A1 publication Critical patent/US20110202673A1/en
Abandoned legal-status Critical Current

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L69/00Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
    • H04L69/04Protocols for data compression, e.g. ROHC
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L69/00Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
    • H04L69/16Implementation or adaptation of Internet protocol [IP], of transmission control protocol [TCP] or of user datagram protocol [UDP]
    • H04L69/161Implementation details of TCP/IP or UDP/IP stack architecture; Specification of modified or new header fields
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L69/00Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
    • H04L69/16Implementation or adaptation of Internet protocol [IP], of transmission control protocol [TCP] or of user datagram protocol [UDP]
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L69/00Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
    • H04L69/22Parsing or analysis of headers

Definitions

  • WAN wide area network
  • Solutions are known to help improve performance over the WAN portion of a network. These solutions may be based on a number of technologies, including data compression, data prefetching and caching, application-specific acceleration, and policy-based bandwidth allocation.
  • Data caching and compression in particular, can be used to reduce the perceived latency (response time) of data accesses over a WAN.
  • Compression and caching techniques may be disk-based, as opposed to semiconductor memory based, due to orders-of-magnitude larger storage capacity of typical hard disk drives.
  • Dictionary-based compression techniques can be particularly effective in compressing large file transfers.
  • data may be stored at compression devices at opposite ends of the WAN.
  • the compression device does not need to send the actual block of data. Instead, it may simply send a reference to the block of data to the device on the other end of the WAN.
  • a method may include receiving a stream of data; identifying a selected compression dictionary from among a number of compression dictionaries based on the stream of data; notifying a receiving device about the selected compression dictionary; compressing the stream of data using the selected compression dictionary; and transmitting the compressed stream of data to the receiving device.
  • a device for compressing data over a network may include logic to identify a compression dictionary associated with a received data stream, where the identified compression dictionary is one of a number of available compression dictionaries; logic to notify a receiving device regarding the identified compression dictionary; logic to compress the received data stream using the identified compression dictionary to generate a compressed data stream; and logic to transmit the compressed data stream to the receiving device over a network.
  • a system may include a transmitting network device to receive a data stream from a first local network and transmit a compressed data stream via a wide area network and a receiving network device to receive the compressed data stream from the wide area network.
  • the transmitting network device may include logic to identify a selected compression dictionary from a number of compression dictionaries based on the received data stream; logic to output a notification message to the receiving network device, where the notification message includes at least an identification of the selected compression dictionary; logic to receive an acknowledgement message from the receiving network device indicating receipt of the notification message; logic to compress the data stream using the selected compression dictionary; and logic to transmit the compressed data stream to the receiving network device via the wide area network.
  • the receiving network device may include logic to receive the notification message from the transmitting network device; logic to identify the selected compression dictionary from the notification message; logic to transmit the acknowledgement message to the transmitting network device; logic to receive the compressed data stream; and logic to decompress the compressed data stream using the selected compression dictionary.
  • a method for decompressing a compressed data stream may include receiving a compression dictionary notification message from a transmitting network device via a network; identifying a selected compression dictionary from the compression dictionary notification message; receiving the compressed data stream; and decompressing the compressed data stream using the selected compression dictionary.
  • FIG. 1 is a diagram of an exemplary system
  • FIG. 2 is a block diagram of an exemplary device shown in FIG. 1 ;
  • FIG. 3 is a diagram illustrating data compression over a wide area network
  • FIGS. 4A and 4B are diagrams conceptually illustrating exemplary elements of a network optimization device
  • FIG. 5 is a flow chart illustrating an exemplary process for compressing and transmitting data from a first network optimization device a second network optimization device of FIG. 3 ;
  • FIG. 6 is a flow chart illustrating an exemplary process for receiving and decompressing data at a receiving network optimization device of FIG. 3 ;
  • FIG. 7 is a diagram of an exemplary data stream compression and decompression operation conceptually illustrating certain of the operations shown in the flow chart of FIGS. 5 and 6 .
  • a network optimization device may operate to increase application performance over a wide area network.
  • the network optimization device may use disk-based compression to achieve the performance increase.
  • the disk-based compression may be performed using an efficient indexing scheme.
  • FIG. 1 is a diagram of an exemplary system 100 .
  • System 100 may include a wide area network (WAN) 170 and one or more private networks 180 -A, 180 -B, and 180 -C (collectively referred to as private networks 180 ).
  • Private networks 180 may be geographically dispersed and different ones of private networks 180 may wish to communicate with one another over WAN 170 .
  • Private networks 180 may each, for example, be a local area network (LAN) for a branch office associated with a corporation or other entity.
  • LAN local area network
  • private networks 180 -A and 180 -B may be LANs for a corporate branch office and private network 180 -C may be a data center for the corporation.
  • WAN 170 may include a public network, such as the Internet.
  • WAN 170 may be implemented by privately owned or leased data lines between private networks 180 , or by a combination of a public network and privately owned or leased data lines.
  • data traffic between private networks 180 through WAN 170 may be characterized by one or more of increased cost, higher latency, or lower bandwidth than data traffic within a single corporate network 180 . Accordingly, network applications accessing resources between a number of private networks 180 and across WAN 170 may tend to run less optimally than an application running locally at a private network 180 .
  • Private networks 180 may each include a number of computing devices, such as, for example, client computing stations 110 , network security device(s) 115 , servers 120 , and databases 125 .
  • Client computing stations 110 may include computing devices of end-users, such as desktop computers or laptops.
  • Network security devices 115 may include, for example, firewalls or other devices relating to network security.
  • Servers 120 may include one or more devices designed to interact with and deliver information to other devices, such as client computing stations 110 .
  • Databases 125 may include information repositories available on, for example, network 180 -C. Servers 120 may, for example, serve data files or network applications to computing stations 110 over WAN 170 . Servers may interact with databases 125 when providing information to client computing stations 110 .
  • private networks 180 -A and 180 -B may be branch offices that include a number of client computing stations 110 and private network 180 -C may function as a data center that includes a number of servers 120 , which may include file servers for private networks 180 -A and 180 -B.
  • servers 120 may include file servers for private networks 180 -A and 180 -B.
  • FIG. 1 three
  • the elements associated with each private network and/or the functionality of each private network is exemplary.
  • private networks may be associated with network optimization devices (NODs) 150 -A through 150 -C (collectively referred to as network optimization devices 150 ).
  • NODs network optimization devices
  • each of private networks 180 -A through 180 -C is associated with a corresponding network optimization device 150 -A, 150 -B, and 150 -C, respectively.
  • Network optimization devices 150 may generally operate to enhance the performance of applications running over WAN 170 between various ones of private networks 180 . For example, assume that a user at one of client computing stations 110 at private network 180 -A would like to retrieve a file from a file server at private network 180 -C.
  • network optimization devices 150 -A and 150 -C may operate to decrease the latency and/or increase the bandwidth of WAN 170 by providing, for example, data compression, data caching, and data prefetching services over WAN 170 .
  • network optimization devices 150 -A through 150 -C may include a compression engines 190 -A, 190 -B, and 190 -C (collectively referred to as compression engines 190 ), respectively, for facilitating and implementing the dynamic compression scheme set forth in detail below.
  • FIG. 2 is a block diagram of an exemplary device 200 , which may correspond to one or more of client computing stations 110 , network security device 115 , a server 120 (also referred to herein as file server 120 ), a database 125 , or a network optimization device 150 .
  • Device 200 may include bus 210 , processor 220 , main memory 230 , read only memory (ROM) 240 , storage device 250 , input device 260 , output device 270 , and communication interface 280 .
  • Bus 210 may include a path that permits communication among the elements of the device.
  • Processor 220 may include a processor, microprocessor, ASIC, FPGA, or processing logic that may interpret and execute instructions.
  • Main memory 230 may include a random access memory (RAM) or another type of dynamic storage device that may store information and instructions for execution by processor 220 .
  • ROM 240 may include a ROM device or another type of static storage device that may store static information and instructions for use by processor 220 .
  • Storage device 250 may include a magnetic storage medium such as a hard disk drive.
  • Input device 260 may include a mechanism that permits an operator to input information to the device, such as a keyboard, a mouse, a pen, voice recognition and/or biometric mechanisms, etc.
  • Output device 270 may include a mechanism that outputs information to the operator, including a display, a printer, a speaker, etc.
  • Communication interface 280 may include any transceiver-like mechanism that enables the device to communicate with other devices and/or systems.
  • Device 200 may perform certain operations, as described in detail below. The device may perform these operations in response to processor 220 executing software instructions contained in a computer-readable medium, such as memory 230 .
  • a computer-readable medium may be defined as a physical or logical memory device.
  • the software instructions may be read into memory 230 from another computer-readable medium, such as data storage device 250 , or from another device via communication interface 280 .
  • the software instructions contained in memory 230 may cause processor 220 to perform processes that will be described later.
  • hardwired circuitry may be used in place of or in combination with software instructions to implement processes consistent with the principles of the invention.
  • implementations consistent with the principles of the invention are not limited to any specific combination of hardware circuitry and software.
  • FIG. 3 is a block diagram illustrating data compression over a WAN to improve perceived application performance over the WAN.
  • the data may be, for example, file data being transferred to a remote server, such as a file being transferred by a client computing station 110 to a file server 120 .
  • Network optimization devices 150 -A and 150 -C may operate together to increase the perceived performance of file transfers for client computing station 110 by, among other things, using data compression when transferring data over WAN 170 .
  • pairs of network optimization devices 150 may store patterns of data, such as patterns from previously exchanged data, as strings in memory or on a hard disk drive.
  • Each string of data may be associated with an identifier or codeword, such as a location on the hard disk drive or a position in an index.
  • Each string should ideally be much longer than the corresponding codeword.
  • Dictionary-based compression techniques are often referred to as lossless compression, because no data is lost during compression and decompression of the data.
  • Network optimization device 150 -A may examine the data to either store new strings of information or look for previously stored strings of information. If network optimization device 150 -A locates a previously stored string that is also stored at network optimization device 150 -C (as part of a compression dictionary shared or independently created on various devices 150 on WAN 170 ), network optimization device 150 -A may transmit the codeword for the symbol, instead of the actual or literal string, to network optimization device 150 -C (shown as arrow 315 ). Network optimization device 150 -C may receive the codeword in the data stream from network optimization device 150 -A.
  • Network optimization device 150 -C may lookup the string corresponding to the received codeword in its own dictionary and may substitute the identified string into the data stream before transmitting the data stream to file server 120 (shown as arrow 320 ). In this manner, the actual data sent over WAN 170 is compressed relative to the original stream sent by client computing station 110 to file server 120 .
  • enhanced compression speed and efficiency may be obtained by maintaining and propagating multiple different compression dictionaries.
  • the selection or usage of a particular compression dictionary may be based on network-specific information associated with the data to be compressed, such as a network protocol associated with the data, a port or range of ports associated with the data, or a combination of network characteristics. In this manner, a size of a compression dictionary to be searched during the compression of a data stream may be minimized. Further, by restricting an applied compression dictionary to relate more specifically to a type of data being transmitted, additional compression efficiencies may be realized.
  • FIG. 4A is a diagram conceptually illustrating exemplary elements of one of network optimization devices 150 .
  • Network optimization device 150 may include compression component 420 , compression dictionary identifier logic 425 , decompression component 430 , decompression dictionary identifier logic 435 , and dictionaries 440 -A, 440 -B, and 440 -N.
  • Compression component 420 and decompression component 430 may perform dictionary-based compression and decompression of data for entities transferring data through network optimization device 150 .
  • An entity as used herein, may refer to any distinguishable unit that uses network optimization device 150 , such as a computer, a process, or a group of computers/processes.
  • FIG. 4A it can be appreciated that each of compression component 420 and decompression component 430 may be implemented using one or more physical or logical elements. Alternatively, compression component 420 and decompression component 430 may be combined as a single component.
  • compression component 420 and decompression component 430 may create and/or utilize one of compression dictionaries 440 -A to 440 -N in compressing data being sent to the WAN or decompressing data received from the WAN.
  • compression component 420 may receive data from a local network or local device, such as client computing station 110 .
  • compression component 420 may receive a TCP (transmission control protocol) data stream from a local network.
  • the received data stream may include various types of data, such as http (hypertext transfer protocol) data, sip (session initiation protocol) data, ftp (file transfer protocol) data, etc.
  • the received data stream may include packet information associated with the data being transmitted.
  • data sharing predefined network characteristics may be compressed using a common dictionary that is not applied to unrelated or dissimilar types of information.
  • compression dictionary identifier logic 425 may analyze the received data and may identify a compression dictionary (e.g., compression dictionaries 440 -A to 440 -N) to use based on predefined or automatic data compression rules.
  • compression dictionary identifier logic 425 may include a rules engine 450 for applying such compression rules to the received data stream.
  • rules engine 450 may be configured to identify data based on a number of different network-based criteria. For example, rules engine 450 may analyze the data stream for information relating to protocol types (e.g., http, sip, ftp, etc.). In addition, rules engine 450 may analyze the data stream for information relating to specific destination port numbers or ranges of destination port numbers. In yet another example, individual data flows may be identified, where a data flow may be identified based on various network characteristics, such as, for example, source and destination IP (Internet protocol) addresses, source and destination port numbers, and a protocol type associated with the flow. Consistent with embodiments described herein, network optimization device 150 may include a default compression dictionary (e.g., one of compression dictionaries 440 -A to 440 -N) that is used to compress data that does not correspond to an identified compression rule.
  • a default compression dictionary e.g., one of
  • the compression rules in rules engine 450 may be received from users via a user interface associated with network optimization device 150 .
  • rules engine 450 may be configured to automatically create compression rules based on network conditions associated with the data passing through network optimization device 150 .
  • rules engine 450 may be configured to automatically monitor the data for traffic-related criteria, such as a threshold amount of data associated with one or more network characteristics, e.g., a flow, a protocol, etc., received within a predetermined amount of time.
  • rules engine 450 may be configured to create one or more compression rules based on the identified network characteristic.
  • compression component 420 may determine whether one of existing compression dictionaries 440 -A to 440 -N corresponds to the identified compression rule. For example, compression dictionary identifier logic 425 may determine whether either the rule being applied is a newly created rule or whether the initial data associated with a rule is initially received. If an existing compression dictionary does not correspond to the identified compression rule (e.g., in storage device 250 ), compression component 420 may create a new compression dictionary in compression component 420 (e.g., in storage device 250 ).
  • each compression dictionary 440 -A to 440 -N may be dynamically created as data associated with the particular compression dictionary is received by network optimization device 150 . As more data associated with the compression dictionary is received, the compression dictionary becomes more and more populated. However, if an existing compression dictionary is identified as corresponding to the data, the identified compression dictionary may be used to compress the received data, with additional unique data being added to the dictionary in a known manner.
  • network optimization device 150 -A may also be provided with a mechanism for notifying a receiving network optimization device 150 -C of which compression dictionaries have been created and which compression dictionary is being used to compress a current data stream.
  • the notification of a compression dictionary being created and/or used may be provided via an out-of-band message, sent to receiving network optimization device 150 -C.
  • the notification message may include at least a sequence number associated with the beginning of the compressed data and information regarding which rule has been applied and/or which dictionary has been used to compress the data.
  • the notification message may be transmitted through WAN 170 via an out-of-band compression dictionary message formatted in any suitable format, such as extensible markup language (XML) or simple network management protocol (SNMP) message. Transmission of such a message is illustrated in FIG. 4A by dashed lines 455 .
  • the out-of-band compression dictionary message may be transmitted prior to using the identified dictionary, with a responsive acknowledgement message being received from receiving network optimization device 150 -C prior to usage of the identified compression dictionary. This ensures that the receiving network optimization device 150 -C will apply the appropriate compression dictionary in decompressing the received data stream.
  • the notification of a compression dictionary being created and/or used may be provided via in-band signaling, where the dictionary identification and/or compression rule information may be injected into an initial portion of the data stream being compressed.
  • receiving network optimization device 150 -C may determine the appropriate dictionary to either create or apply to the received data stream.
  • transmitting network optimization device 150 -A may require an acknowledgement message from receiving network optimization device 150 -C prior to usage of the identified dictionary.
  • Each dictionary 440 may include an index of the historical data seen by compression component 420 and decompression component 430 and identified as relating to a rule associated with that dictionary. By limiting the contents of each dictionary 440 to only entries identified by a rule, a size of each dictionary may be reduced.
  • Each dictionary 440 may be stored in, for example, a storage device, such as main memory 230 or storage device 250 .
  • each dictionary 440 may be refreshed or reinitiated in response to a user command or in response to predefined criteria, such as the passage of a set length of time, or reaching a set size limit. By providing such refreshing, a speed with which compression is accomplished may be maximized.
  • a compression dictionary notification message may be received via either in-band or out-of-band signaling.
  • the compression dictionary notification message may include a sequence number associated with the beginning of the compressed data as well as an indication of a compression dictionary and/or compression rule used to compress the data.
  • decompression component 430 may return an acknowledgement message to transmitting network optimization device 150 A.
  • decompression dictionary identifier logic 435 may then examine the compression dictionary notification message and determine whether an existing dictionary corresponds to the received message. If not, decompression component 430 may establish a new dictionary corresponding to the rule identified in the compression dictionary notification message.
  • the rule corresponding to the established dictionary may be stored in rules engine 450 for use in compressing subsequent outgoing data.
  • compressed data received from transmitting network optimization device 150 -A via WAN 170 may be decompressed using the identified compression dictionary.
  • the decompressed data may then be forwarded to local entities, applications, or devices.
  • FIG. 5 is a flow chart illustrating an exemplary process for compressing and transmitting data from compression component 420 of network optimization device 150 -A to decompression component 430 of network optimization device 150 -C.
  • Compression component 420 may receive data, such as packets, from entities local to compression component 420 (block 500 ). The data received may be treated and processed by compression component 420 as a sequential stream of data.
  • compression dictionary identifier logic 425 may compare the data with one or more compression rules maintained and/or configured by rule engine 450 to determine whether a particular compression dictionary is to be used to compress the data (block 505 ).
  • rule engine 450 may be configured to automatically create a rule and/or compression dictionary based on the satisfaction of various network-related characteristics.
  • the data may be compressed using a default or standard dictionary (block 510 ).
  • compression dictionary identifier logic 425 may determine whether a corresponding compression dictionary associated with the rule has been previously created (block 515 ). If no corresponding compression dictionary has been previously created (block 515 —NO), a compression dictionary corresponding to the identified rule may be generated (block 520 ) and the received data may be compressed using the generated compression dictionary (block 525 ).
  • the received data may be compressed using the previously established compression dictionary (block 530 ).
  • a compression dictionary notification message may be transmitted to the receiving network optimization device (block 535 ).
  • the compression dictionary notification message may include an out-of-band message transmitted to the receiving network optimization device that includes at least a sequence number associated with the compressed data and an identification of the compression dictionary and/or rule used to compress the data.
  • the compression dictionary notification message may be transmitted in-band.
  • An acknowledgement of receipt of the compression dictionary notification message may be received from the receiving network optimization device (block 540 ).
  • This acknowledgement may be in the form of an in-kind acknowledgment message (ACK).
  • ACK in-kind acknowledgment message
  • an out-of-band compression dictionary notification message may be acknowledged via a return out-of-band acknowledgement message.
  • an in-band compression dictionary notification message may be acknowledged via a return in-band acknowledgement message.
  • network optimization device 150 -A may output the compressed data via WAN 170 to receiving network optimization device 150 -C (block 545 ).
  • FIG. 6 is a flow chart illustrating an exemplary process for receiving and decompressing data by decompression component 430 of network optimization device 150 -C.
  • the process may begin with decompression component 430 of network optimization device 150 -C receiving a compression dictionary notification message from transmitting network optimization device 150 -A (block 600 ).
  • the compression dictionary notification message may include an out-of-band message transmitted to the receiving network optimization device that includes at least a sequence number associated with the compressed data and an identification of the compression dictionary and/or rule used to compress the data.
  • the compression dictionary notification message may be transmitted in-band.
  • Decompression dictionary identifier logic 435 of decompression component 430 may identify either a previously established compression dictionary to use or the basis for a newly created compression dictionary based on the received compression dictionary notification message (block 605 ). If a new compression dictionary is to be created in response to the received compression dictionary notification message, the compression dictionary may be created at block 610 .
  • An acknowledgement of receipt of the compression dictionary notification message may be transmitted to transmitting network optimization device 150 -A (block 615 ).
  • This acknowledgement may be in the form of an in-kind acknowledgment message.
  • an out-of-band compression dictionary notification message may be acknowledged via a return out-of-band acknowledgement message.
  • an in-band compression dictionary notification message may be acknowledged via a return in-band acknowledgement message.
  • Compressed data may be received from transmitting network optimization device 150 -A (block 620 ).
  • the received data may be decompressed based on the dictionary identified by or created in response to the received compression dictionary notification message (block 625 ).
  • the decompressed data may then be forwarded to a destination device or application (block 630 ).
  • FIG. 7 is a diagram illustrating an exemplary data compression operation consistent with embodiments described above in FIGS. 4A-6 .
  • a client device 110 wishes to send data 705 to a remote file server 120 via WAN 170 .
  • data 705 may include the following network characteristics: a source IP address of 10.1.1.5; a destination IP address of 10.1.8.7; a source port of 1254; a destination port on 5000; and a protocol of ftp.
  • data 705 may be received by network optimization device 150 -A prior to being transmitted across WAN 170 .
  • dictionary identifier logic 425 may determine which compression dictionary should be used to compress the data.
  • compression dictionary identifier logic 425 may consult rules engine 450 for determining whether any existing or automatically generated rules exist which apply to received data 705 .
  • rules engine 450 identifies a rule indicating that data having a destination port in the range of 4000-6000 should be compressed using compression dictionary A 710 .
  • the rule described above is merely exemplary and that any suitable network-based characteristic, such as flow, protocol, IP addresses, etc., may be used to identify and/or generate a corresponding compression dictionary.
  • a compression dictionary notification message 715 may be transmitted to network optimization device 150 -C via WAN 170 . As described in detail above, this message may be transmitted in either an out-of-band or in-band manner.
  • decompression component 430 and decompression dictionary identifier logic 435 may determine that compression dictionary A 730 is to be used to decompress data received from network optimization device 150 -A.
  • a return acknowledgement message 720 may be transmitted back to network optimization device 150 -A, thus indicating that network optimization device 150 -C is ready to receive compressed data.
  • network optimization device 150 -A compresses data 705 using compression dictionary A and transmits compressed data 725 to network optimization device 150 -C.
  • network optimization device 150 -C decompresses data 725 using compression dictionary A 730 and forwards decompressed data 735 to file sever 120 .
  • the techniques discussed above for compressing and sending data over a WAN may provide a number of advantages relative to existing techniques. For example, by using a number of customizable and dynamic compression libraries, the speed and efficiency with which compression of network traffic may be accomplished is significantly increased. This also increases bandwidth between devices on the network. Furthermore, by enabling for in-band or out-of-band exchange of a dictionary notification message, a sending device may efficiently notify a receiving device regarding the compression dictionary to be used and/or the underlying criteria on which the applied compression dictionary is based.
  • a network characteristic dependent compression technique for optimizing the performance of WAN data transfer.
  • the technique uses a rules engine to determine or initiate creation of a compression dictionary based on user-defined or automatically defined network criteria associated with received data.
  • a dictionary notification message may be sent to a receiving network optimizing device, to notify the receiving device about the compression dictionary to be used to compress the data.
  • logic that performs one or more functions.
  • This logic may include hardware, such as a processor, an application specific integrated circuit, or a field programmable gate array, software, or a combination of hardware and software.

Abstract

A network optimization device may receive a stream of data and identify a selected compression dictionary from among a number of compression dictionaries based on the received stream of data. A receiving network device may be notified regarding the selected compression dictionary. The stream of data may be compressed using the selected compression dictionary and transmitted to the receiving device.

Description

    BACKGROUND OF THE INVENTION
  • 1. Field of the Invention
  • Concepts described herein relate generally to data compression, and more particularly, to a dictionary based compression scheme in a wide area network optimization device.
  • 2. Description of Related Art
  • Geographically distributed entities, such as a business with multiple local offices in different locations, frequently desire to maintain a logically unified proprietary network that is accessible by all of the geographically distributed entities. To accomplish this, a wide area network (WAN) may be used to link the different locations.
  • Information technology managers within geographically distributed entities face the conflicting requirements of keeping costs in check while providing users with new and faster applications. This conflict is most acute on the WAN, where costs can be high and getting applications to perform well is often hampered by limited bandwidth and high latency.
  • Solutions are known to help improve performance over the WAN portion of a network. These solutions may be based on a number of technologies, including data compression, data prefetching and caching, application-specific acceleration, and policy-based bandwidth allocation.
  • Data caching and compression, in particular, can be used to reduce the perceived latency (response time) of data accesses over a WAN. Compression and caching techniques may be disk-based, as opposed to semiconductor memory based, due to orders-of-magnitude larger storage capacity of typical hard disk drives.
  • Dictionary-based compression techniques can be particularly effective in compressing large file transfers. With this type of compression technique, data may be stored at compression devices at opposite ends of the WAN. When a block of data that has been previously sent is again received by the compression device, the compression device does not need to send the actual block of data. Instead, it may simply send a reference to the block of data to the device on the other end of the WAN.
  • Unfortunately, as more and more types and sizes of information are transmitted across a WAN, the data stored for execution of the compression technique grows as well, thereby decreasing the efficiency and increasing the time and processing cost associated with the compression operation.
  • SUMMARY
  • In one aspect, a method may include receiving a stream of data; identifying a selected compression dictionary from among a number of compression dictionaries based on the stream of data; notifying a receiving device about the selected compression dictionary; compressing the stream of data using the selected compression dictionary; and transmitting the compressed stream of data to the receiving device.
  • In another aspect, a device for compressing data over a network may include logic to identify a compression dictionary associated with a received data stream, where the identified compression dictionary is one of a number of available compression dictionaries; logic to notify a receiving device regarding the identified compression dictionary; logic to compress the received data stream using the identified compression dictionary to generate a compressed data stream; and logic to transmit the compressed data stream to the receiving device over a network.
  • In yet another aspect, a system may include a transmitting network device to receive a data stream from a first local network and transmit a compressed data stream via a wide area network and a receiving network device to receive the compressed data stream from the wide area network. The transmitting network device may include logic to identify a selected compression dictionary from a number of compression dictionaries based on the received data stream; logic to output a notification message to the receiving network device, where the notification message includes at least an identification of the selected compression dictionary; logic to receive an acknowledgement message from the receiving network device indicating receipt of the notification message; logic to compress the data stream using the selected compression dictionary; and logic to transmit the compressed data stream to the receiving network device via the wide area network. The receiving network device may include logic to receive the notification message from the transmitting network device; logic to identify the selected compression dictionary from the notification message; logic to transmit the acknowledgement message to the transmitting network device; logic to receive the compressed data stream; and logic to decompress the compressed data stream using the selected compression dictionary.
  • In still another aspect, a method for decompressing a compressed data stream may include receiving a compression dictionary notification message from a transmitting network device via a network; identifying a selected compression dictionary from the compression dictionary notification message; receiving the compressed data stream; and decompressing the compressed data stream using the selected compression dictionary.
  • BRIEF DESCRIPTION OF THE DRAWINGS
  • The accompanying drawings, which are incorporated in and constitute a part of this specification, illustrate one or more embodiments of the invention and, together with the description, explain the invention. In the drawings,
  • FIG. 1 is a diagram of an exemplary system;
  • FIG. 2 is a block diagram of an exemplary device shown in FIG. 1;
  • FIG. 3 is a diagram illustrating data compression over a wide area network;
  • FIGS. 4A and 4B are diagrams conceptually illustrating exemplary elements of a network optimization device;
  • FIG. 5 is a flow chart illustrating an exemplary process for compressing and transmitting data from a first network optimization device a second network optimization device of FIG. 3;
  • FIG. 6 is a flow chart illustrating an exemplary process for receiving and decompressing data at a receiving network optimization device of FIG. 3;
  • FIG. 7 is a diagram of an exemplary data stream compression and decompression operation conceptually illustrating certain of the operations shown in the flow chart of FIGS. 5 and 6.
  • DETAILED DESCRIPTION
  • The following detailed description of the invention refers to the accompanying drawings. The same reference numbers in different drawings may identify the same or similar elements. Also, the following detailed description does not limit the invention. Instead, the scope of the invention is defined by the appended claims and equivalents.
  • As described herein, a network optimization device may operate to increase application performance over a wide area network. The network optimization device may use disk-based compression to achieve the performance increase. The disk-based compression may be performed using an efficient indexing scheme.
  • Exemplary System Overview
  • FIG. 1 is a diagram of an exemplary system 100. System 100 may include a wide area network (WAN) 170 and one or more private networks 180-A, 180-B, and 180-C (collectively referred to as private networks 180). Private networks 180 may be geographically dispersed and different ones of private networks 180 may wish to communicate with one another over WAN 170. Private networks 180 may each, for example, be a local area network (LAN) for a branch office associated with a corporation or other entity. As another example, private networks 180-A and 180-B may be LANs for a corporate branch office and private network 180-C may be a data center for the corporation.
  • WAN 170 may include a public network, such as the Internet. In some implementations, WAN 170 may be implemented by privately owned or leased data lines between private networks 180, or by a combination of a public network and privately owned or leased data lines. In one implementation, data traffic between private networks 180 through WAN 170 may be characterized by one or more of increased cost, higher latency, or lower bandwidth than data traffic within a single corporate network 180. Accordingly, network applications accessing resources between a number of private networks 180 and across WAN 170 may tend to run less optimally than an application running locally at a private network 180.
  • Private networks 180 may each include a number of computing devices, such as, for example, client computing stations 110, network security device(s) 115, servers 120, and databases 125. Client computing stations 110 may include computing devices of end-users, such as desktop computers or laptops. Network security devices 115 may include, for example, firewalls or other devices relating to network security. Servers 120 may include one or more devices designed to interact with and deliver information to other devices, such as client computing stations 110. Databases 125 may include information repositories available on, for example, network 180-C. Servers 120 may, for example, serve data files or network applications to computing stations 110 over WAN 170. Servers may interact with databases 125 when providing information to client computing stations 110.
  • In the exemplary system shown in FIG. 1, private networks 180-A and 180-B may be branch offices that include a number of client computing stations 110 and private network 180-C may function as a data center that includes a number of servers 120, which may include file servers for private networks 180-A and 180-B. One of ordinary skill in the art will recognize that the number of private networks shown in FIG. 1 (three), the elements associated with each private network and/or the functionality of each private network is exemplary.
  • Consistent with an aspect of the invention, private networks may be associated with network optimization devices (NODs) 150-A through 150-C (collectively referred to as network optimization devices 150). As shown in FIG. 1, for example, each of private networks 180-A through 180-C is associated with a corresponding network optimization device 150-A, 150-B, and 150-C, respectively. Network optimization devices 150 may generally operate to enhance the performance of applications running over WAN 170 between various ones of private networks 180. For example, assume that a user at one of client computing stations 110 at private network 180-A would like to retrieve a file from a file server at private network 180-C. In this situation, network optimization devices 150-A and 150-C may operate to decrease the latency and/or increase the bandwidth of WAN 170 by providing, for example, data compression, data caching, and data prefetching services over WAN 170. Aspects of network optimization devices 150 as they relate to data compression will be particularly described in more detail herein. In particular, network optimization devices 150-A through 150-C may include a compression engines 190-A, 190-B, and 190-C (collectively referred to as compression engines 190), respectively, for facilitating and implementing the dynamic compression scheme set forth in detail below.
  • Exemplary Device Architecture
  • FIG. 2 is a block diagram of an exemplary device 200, which may correspond to one or more of client computing stations 110, network security device 115, a server 120 (also referred to herein as file server 120), a database 125, or a network optimization device 150. Device 200 may include bus 210, processor 220, main memory 230, read only memory (ROM) 240, storage device 250, input device 260, output device 270, and communication interface 280. Bus 210 may include a path that permits communication among the elements of the device.
  • Processor 220 may include a processor, microprocessor, ASIC, FPGA, or processing logic that may interpret and execute instructions. Main memory 230 may include a random access memory (RAM) or another type of dynamic storage device that may store information and instructions for execution by processor 220. ROM 240 may include a ROM device or another type of static storage device that may store static information and instructions for use by processor 220. Storage device 250 may include a magnetic storage medium such as a hard disk drive.
  • Input device 260 may include a mechanism that permits an operator to input information to the device, such as a keyboard, a mouse, a pen, voice recognition and/or biometric mechanisms, etc. Output device 270 may include a mechanism that outputs information to the operator, including a display, a printer, a speaker, etc. Communication interface 280 may include any transceiver-like mechanism that enables the device to communicate with other devices and/or systems.
  • Device 200 may perform certain operations, as described in detail below. The device may perform these operations in response to processor 220 executing software instructions contained in a computer-readable medium, such as memory 230. A computer-readable medium may be defined as a physical or logical memory device.
  • The software instructions may be read into memory 230 from another computer-readable medium, such as data storage device 250, or from another device via communication interface 280. The software instructions contained in memory 230 may cause processor 220 to perform processes that will be described later. Alternatively, hardwired circuitry may be used in place of or in combination with software instructions to implement processes consistent with the principles of the invention. Thus, implementations consistent with the principles of the invention are not limited to any specific combination of hardware circuitry and software.
  • Network, Application, and Protocol-Based Compression
  • Before describing the operation of network optimization devices 150 in additional detail, it will be helpful to generally describe compression over a wide area network.
  • FIG. 3 is a block diagram illustrating data compression over a WAN to improve perceived application performance over the WAN. The data may be, for example, file data being transferred to a remote server, such as a file being transferred by a client computing station 110 to a file server 120.
  • Assume that client computing station 110, in private network 180-A, would like to transfer a file or a portion of a file to file server 120, in private network 180-C. The file transfer is being made across WAN 170. Network optimization devices 150-A and 150-C may operate together to increase the perceived performance of file transfers for client computing station 110 by, among other things, using data compression when transferring data over WAN 170.
  • One form of data compression is known as symbol or dictionary-based compression. With this form of data compression (examples include the Lempel-Ziv (LZ) family of compression algorithms, etc.), pairs of network optimization devices 150 may store patterns of data, such as patterns from previously exchanged data, as strings in memory or on a hard disk drive. Each string of data may be associated with an identifier or codeword, such as a location on the hard disk drive or a position in an index. Each string should ideally be much longer than the corresponding codeword. When a string to be compressed is subsequently encountered, only the codeword corresponding to the string is sent, rather than the string itself. Dictionary-based compression techniques are often referred to as lossless compression, because no data is lost during compression and decompression of the data.
  • As a simplified example of the operation of data compression for transmitted data, assume that client computing station 110 initiates transmission of data to file server 120, shown as arrow 310 in FIG. 3. Network optimization device 150-A may examine the data to either store new strings of information or look for previously stored strings of information. If network optimization device 150-A locates a previously stored string that is also stored at network optimization device 150-C (as part of a compression dictionary shared or independently created on various devices 150 on WAN 170), network optimization device 150-A may transmit the codeword for the symbol, instead of the actual or literal string, to network optimization device 150-C (shown as arrow 315). Network optimization device 150-C may receive the codeword in the data stream from network optimization device 150-A. Network optimization device 150-C may lookup the string corresponding to the received codeword in its own dictionary and may substitute the identified string into the data stream before transmitting the data stream to file server 120 (shown as arrow 320). In this manner, the actual data sent over WAN 170 is compressed relative to the original stream sent by client computing station 110 to file server 120.
  • To efficiently implement a dictionary-based compression scheme, it is desirable to be able to efficiently identify data that was previously seen or sent. Unfortunately, as noted above, as increasing quantities and types of information are transmitted over WAN 170, the size of the compression dictionary will similarly increase. As the size of the compression dictionary increases, the efficiency with which previously identified strings may be identified is reduced.
  • In accordance with one implementation described herein, enhanced compression speed and efficiency may be obtained by maintaining and propagating multiple different compression dictionaries. The selection or usage of a particular compression dictionary may be based on network-specific information associated with the data to be compressed, such as a network protocol associated with the data, a port or range of ports associated with the data, or a combination of network characteristics. In this manner, a size of a compression dictionary to be searched during the compression of a data stream may be minimized. Further, by restricting an applied compression dictionary to relate more specifically to a type of data being transmitted, additional compression efficiencies may be realized.
  • FIG. 4A is a diagram conceptually illustrating exemplary elements of one of network optimization devices 150. Network optimization device 150 may include compression component 420, compression dictionary identifier logic 425, decompression component 430, decompression dictionary identifier logic 435, and dictionaries 440-A, 440-B, and 440-N.
  • Compression component 420 and decompression component 430 may perform dictionary-based compression and decompression of data for entities transferring data through network optimization device 150. An entity, as used herein, may refer to any distinguishable unit that uses network optimization device 150, such as a computer, a process, or a group of computers/processes. Although shown as a single component in FIG. 4A, it can be appreciated that each of compression component 420 and decompression component 430 may be implemented using one or more physical or logical elements. Alternatively, compression component 420 and decompression component 430 may be combined as a single component.
  • In one implementation consistent with embodiments described herein, compression component 420 and decompression component 430 may create and/or utilize one of compression dictionaries 440-A to 440-N in compressing data being sent to the WAN or decompressing data received from the WAN. For example, compression component 420 may receive data from a local network or local device, such as client computing station 110. In one implementation, compression component 420 may receive a TCP (transmission control protocol) data stream from a local network. The received data stream may include various types of data, such as http (hypertext transfer protocol) data, sip (session initiation protocol) data, ftp (file transfer protocol) data, etc. The received data stream may include packet information associated with the data being transmitted.
  • In accordance with embodiments described herein, data sharing predefined network characteristics may be compressed using a common dictionary that is not applied to unrelated or dissimilar types of information. By restricting a compression dictionary to utilize only data meeting predetermined criteria, the size of the dictionary may be kept small, thereby increasing the speed and efficiency with which it is used. In one implementation, compression dictionary identifier logic 425 may analyze the received data and may identify a compression dictionary (e.g., compression dictionaries 440-A to 440-N) to use based on predefined or automatic data compression rules.
  • For example, as shown in FIG. 4B, compression dictionary identifier logic 425 may include a rules engine 450 for applying such compression rules to the received data stream. In one embodiment, rules engine 450 may be configured to identify data based on a number of different network-based criteria. For example, rules engine 450 may analyze the data stream for information relating to protocol types (e.g., http, sip, ftp, etc.). In addition, rules engine 450 may analyze the data stream for information relating to specific destination port numbers or ranges of destination port numbers. In yet another example, individual data flows may be identified, where a data flow may be identified based on various network characteristics, such as, for example, source and destination IP (Internet protocol) addresses, source and destination port numbers, and a protocol type associated with the flow. Consistent with embodiments described herein, network optimization device 150 may include a default compression dictionary (e.g., one of compression dictionaries 440-A to 440-N) that is used to compress data that does not correspond to an identified compression rule.
  • In one implementation consistent with aspects described herein, the compression rules in rules engine 450 may be received from users via a user interface associated with network optimization device 150. In other implementations, rules engine 450 may be configured to automatically create compression rules based on network conditions associated with the data passing through network optimization device 150. For example, rules engine 450 may be configured to automatically monitor the data for traffic-related criteria, such as a threshold amount of data associated with one or more network characteristics, e.g., a flow, a protocol, etc., received within a predetermined amount of time. When it is determined that a threshold amount of data has been met, rules engine 450 may be configured to create one or more compression rules based on the identified network characteristic.
  • Once rules engine 450 of compression dictionary identifier logic 425 identifies a compression rule associated with received data, compression component 420 may determine whether one of existing compression dictionaries 440-A to 440-N corresponds to the identified compression rule. For example, compression dictionary identifier logic 425 may determine whether either the rule being applied is a newly created rule or whether the initial data associated with a rule is initially received. If an existing compression dictionary does not correspond to the identified compression rule (e.g., in storage device 250), compression component 420 may create a new compression dictionary in compression component 420 (e.g., in storage device 250). As described above in relation to known dictionary-based compression systems, each compression dictionary 440-A to 440-N may be dynamically created as data associated with the particular compression dictionary is received by network optimization device 150. As more data associated with the compression dictionary is received, the compression dictionary becomes more and more populated. However, if an existing compression dictionary is identified as corresponding to the data, the identified compression dictionary may be used to compress the received data, with additional unique data being added to the dictionary in a known manner.
  • Because each transmitting network optimization device 150-A may create and update a number of different compression dictionaries 440 for an outbound data stream, network optimization device 150-A may also be provided with a mechanism for notifying a receiving network optimization device 150-C of which compression dictionaries have been created and which compression dictionary is being used to compress a current data stream. In one implementation consistent with aspects described herein, the notification of a compression dictionary being created and/or used may be provided via an out-of-band message, sent to receiving network optimization device 150-C. For example, the notification message may include at least a sequence number associated with the beginning of the compressed data and information regarding which rule has been applied and/or which dictionary has been used to compress the data. The notification message may be transmitted through WAN 170 via an out-of-band compression dictionary message formatted in any suitable format, such as extensible markup language (XML) or simple network management protocol (SNMP) message. Transmission of such a message is illustrated in FIG. 4A by dashed lines 455. In one embodiment, the out-of-band compression dictionary message may be transmitted prior to using the identified dictionary, with a responsive acknowledgement message being received from receiving network optimization device 150-C prior to usage of the identified compression dictionary. This ensures that the receiving network optimization device 150-C will apply the appropriate compression dictionary in decompressing the received data stream.
  • In an alternative implementation, the notification of a compression dictionary being created and/or used may be provided via in-band signaling, where the dictionary identification and/or compression rule information may be injected into an initial portion of the data stream being compressed. Upon receipt of this in-band signaling information, receiving network optimization device 150-C may determine the appropriate dictionary to either create or apply to the received data stream. As with the above-described out-of-band implementation, transmitting network optimization device 150-A may require an acknowledgement message from receiving network optimization device 150-C prior to usage of the identified dictionary.
  • Each dictionary 440 may include an index of the historical data seen by compression component 420 and decompression component 430 and identified as relating to a rule associated with that dictionary. By limiting the contents of each dictionary 440 to only entries identified by a rule, a size of each dictionary may be reduced. Each dictionary 440 may be stored in, for example, a storage device, such as main memory 230 or storage device 250. In some exemplary implementations, each dictionary 440 may be refreshed or reinitiated in response to a user command or in response to predefined criteria, such as the passage of a set length of time, or reaching a set size limit. By providing such refreshing, a speed with which compression is accomplished may be maximized.
  • When acting as a receiving network optimization device 150, a compression dictionary notification message may be received via either in-band or out-of-band signaling. As described above, the compression dictionary notification message may include a sequence number associated with the beginning of the compressed data as well as an indication of a compression dictionary and/or compression rule used to compress the data.
  • Upon receipt of the compression dictionary notification message, decompression component 430 may return an acknowledgement message to transmitting network optimization device 150A. decompression dictionary identifier logic 435 may then examine the compression dictionary notification message and determine whether an existing dictionary corresponds to the received message. If not, decompression component 430 may establish a new dictionary corresponding to the rule identified in the compression dictionary notification message. In one implementation consistent with embodiments described herein, the rule corresponding to the established dictionary may be stored in rules engine 450 for use in compressing subsequent outgoing data.
  • Once an appropriate dictionary has been either identified or established, compressed data received from transmitting network optimization device 150-A via WAN 170 may be decompressed using the identified compression dictionary. The decompressed data may then be forwarded to local entities, applications, or devices.
  • FIG. 5 is a flow chart illustrating an exemplary process for compressing and transmitting data from compression component 420 of network optimization device 150-A to decompression component 430 of network optimization device 150-C. Compression component 420 may receive data, such as packets, from entities local to compression component 420 (block 500). The data received may be treated and processed by compression component 420 as a sequential stream of data.
  • Once received, compression dictionary identifier logic 425 may compare the data with one or more compression rules maintained and/or configured by rule engine 450 to determine whether a particular compression dictionary is to be used to compress the data (block 505). As described above, rule engine 450 may be configured to automatically create a rule and/or compression dictionary based on the satisfaction of various network-related characteristics.
  • If no rule applying to the received data is identified (block 505—NO), the data may be compressed using a default or standard dictionary (block 510). However, if a rule is identified (or created) that applies to the received data (block 505—YES), compression dictionary identifier logic 425 may determine whether a corresponding compression dictionary associated with the rule has been previously created (block 515). If no corresponding compression dictionary has been previously created (block 515—NO), a compression dictionary corresponding to the identified rule may be generated (block 520) and the received data may be compressed using the generated compression dictionary (block 525).
  • Returning to block 515, when it is determined that a compression dictionary corresponding to the identified rule exists or has been previously established (block 515—YES), the received data may be compressed using the previously established compression dictionary (block 530).
  • Following compression of the data using either the default compression dictionary, a newly created compression dictionary, or a previously established compression dictionary, a compression dictionary notification message may be transmitted to the receiving network optimization device (block 535). As described above, the compression dictionary notification message may include an out-of-band message transmitted to the receiving network optimization device that includes at least a sequence number associated with the compressed data and an identification of the compression dictionary and/or rule used to compress the data. In other implementations, the compression dictionary notification message may be transmitted in-band.
  • An acknowledgement of receipt of the compression dictionary notification message may be received from the receiving network optimization device (block 540). This acknowledgement may be in the form of an in-kind acknowledgment message (ACK). For example, an out-of-band compression dictionary notification message may be acknowledged via a return out-of-band acknowledgement message. Similarly, an in-band compression dictionary notification message may be acknowledged via a return in-band acknowledgement message.
  • Once the acknowledgement message has been received, network optimization device 150-A may output the compressed data via WAN 170 to receiving network optimization device 150-C (block 545).
  • FIG. 6 is a flow chart illustrating an exemplary process for receiving and decompressing data by decompression component 430 of network optimization device 150-C. The process may begin with decompression component 430 of network optimization device 150-C receiving a compression dictionary notification message from transmitting network optimization device 150-A (block 600). As described above, the compression dictionary notification message may include an out-of-band message transmitted to the receiving network optimization device that includes at least a sequence number associated with the compressed data and an identification of the compression dictionary and/or rule used to compress the data. In other implementations, the compression dictionary notification message may be transmitted in-band.
  • Decompression dictionary identifier logic 435 of decompression component 430 may identify either a previously established compression dictionary to use or the basis for a newly created compression dictionary based on the received compression dictionary notification message (block 605). If a new compression dictionary is to be created in response to the received compression dictionary notification message, the compression dictionary may be created at block 610.
  • An acknowledgement of receipt of the compression dictionary notification message may be transmitted to transmitting network optimization device 150-A (block 615). This acknowledgement may be in the form of an in-kind acknowledgment message. For example, an out-of-band compression dictionary notification message may be acknowledged via a return out-of-band acknowledgement message. Similarly, an in-band compression dictionary notification message may be acknowledged via a return in-band acknowledgement message.
  • Compressed data may be received from transmitting network optimization device 150-A (block 620). The received data may be decompressed based on the dictionary identified by or created in response to the received compression dictionary notification message (block 625). The decompressed data may then be forwarded to a destination device or application (block 630).
  • FIG. 7 is a diagram illustrating an exemplary data compression operation consistent with embodiments described above in FIGS. 4A-6. For the purposes of this example, assume that a client device 110 wishes to send data 705 to a remote file server 120 via WAN 170. Upon leaving client device 110, data 705 may include the following network characteristics: a source IP address of 10.1.1.5; a destination IP address of 10.1.8.7; a source port of 1254; a destination port on 5000; and a protocol of ftp.
  • In the manner described above, data 705 may be received by network optimization device 150-A prior to being transmitted across WAN 170. Upon receipt by network optimization device 150-A, dictionary identifier logic 425 may determine which compression dictionary should be used to compress the data. To accomplish this, compression dictionary identifier logic 425 may consult rules engine 450 for determining whether any existing or automatically generated rules exist which apply to received data 705. For the purposes of this example, assume that rules engine 450 identifies a rule indicating that data having a destination port in the range of 4000-6000 should be compressed using compression dictionary A 710. It should be noted that the rule described above is merely exemplary and that any suitable network-based characteristic, such as flow, protocol, IP addresses, etc., may be used to identify and/or generate a corresponding compression dictionary.
  • Following this determination, a compression dictionary notification message 715 may be transmitted to network optimization device 150-C via WAN 170. As described in detail above, this message may be transmitted in either an out-of-band or in-band manner. Upon receipt of compression dictionary notification message 715, decompression component 430 and decompression dictionary identifier logic 435 may determine that compression dictionary A 730 is to be used to decompress data received from network optimization device 150-A. A return acknowledgement message 720 may be transmitted back to network optimization device 150-A, thus indicating that network optimization device 150-C is ready to receive compressed data.
  • Once network optimization device 150-A has received acknowledgement message 720, network optimization device 150-A compresses data 705 using compression dictionary A and transmits compressed data 725 to network optimization device 150-C. Upon receipt of compressed data 725, network optimization device 150-C decompresses data 725 using compression dictionary A 730 and forwards decompressed data 735 to file sever 120.
  • The techniques discussed above for compressing and sending data over a WAN may provide a number of advantages relative to existing techniques. For example, by using a number of customizable and dynamic compression libraries, the speed and efficiency with which compression of network traffic may be accomplished is significantly increased. This also increases bandwidth between devices on the network. Furthermore, by enabling for in-band or out-of-band exchange of a dictionary notification message, a sending device may efficiently notify a receiving device regarding the compression dictionary to be used and/or the underlying criteria on which the applied compression dictionary is based.
  • CONCLUSION
  • A network characteristic dependent compression technique is described for optimizing the performance of WAN data transfer. The technique uses a rules engine to determine or initiate creation of a compression dictionary based on user-defined or automatically defined network criteria associated with received data. A dictionary notification message may be sent to a receiving network optimizing device, to notify the receiving device about the compression dictionary to be used to compress the data.
  • While a series of acts have been described with regard to FIGS. 5 and 6, the order of the acts may be varied in other implementations consistent with the invention. Moreover, non-dependent acts may be implemented in parallel. Also, the term “user” has been used herein. The term “user” is intended to be broadly interpreted to include a workstation or a user of a workstation.
  • It will be apparent that aspects described herein may be implemented in many different forms of software, firmware, and hardware in the implementations illustrated in the figures. The actual software code or specialized control hardware used to implement aspects does not limit the embodiments. Thus, the operation and behavior of the aspects were described without reference to the specific software code—it being understood that software and control hardware can be designed to implement the aspects based on the description herein.
  • Further, certain portions of the implementations have been described as “logic” that performs one or more functions. This logic may include hardware, such as a processor, an application specific integrated circuit, or a field programmable gate array, software, or a combination of hardware and software.
  • Even though particular combinations of features are recited in the claims and/or disclosed in the specification, these combinations are not intended to limit the invention. In fact, many of these features may be combined in ways not specifically recited in the claims and/or disclosed in the specification.
  • No element, block, or instruction used in the present application should be construed as critical or essential to the implementations described herein unless explicitly described as such. Also, as used herein, the article “a” is intended to include one or more items. Where only one item is intended, the term “one” or similar language is used. Further, the phrase “based on” is intended to mean “based, at least in part, on” unless explicitly stated otherwise.

Claims (21)

1-22. (canceled)
23. A method comprising:
restricting, based on a type of data associated with data received by a network device, a selection of one of a plurality of compression dictionaries;
compressing, based on the selection of the compression dictionary, the data; and
transferring, by the network device, the compressed data to another network device.
24. The method of claim 23, further comprising:
identifying a characteristic associated with transferring the data to the other network device, and
where restricting the selection of the one of the plurality of compression dictionaries is further based on the identified characteristic.
25. The method of claim 24, where identifying the characteristic associated with transferring the data includes one or more of:
determining a network protocol associated with transferring the data;
determining a port, of the network device, associated with transferring the data; or
determining a range of ports, of the network device, associated with transferring the data.
26. The method of claim 23, further comprising:
receiving the data from a client device; and
identifying the type of data associated with the received data.
27. The method of claim 23, where restricting the selection of the one of the plurality of compression dictionaries includes:
identifying a first characteristic associated with a first portion of the data;
identifying a second characteristic associated with a second portion of the data; and
where selecting the one of the plurality of compression dictionaries includes:
selecting, based on the first characteristic, a first one of the plurality of compression dictionaries for compressing the first portion of the data; and
selecting, based on the second characteristic, a second one of the plurality of compression dictionaries for compressing the second portion of the data.
28. The method of claim 23, further comprising:
identifying a network characteristic associated the data received by the network device;
creating a compression rule associated with the identified network characteristic; and
where restricting the selection of the one of the plurality of compression dictionaries is further based on the created compression rule.
29. The method of claim 23, where transferring the data includes:
identifying, to the other network device, the selected one of the plurality of compression dictionaries prior to compressing the data.
30. A system comprising:
a client device; and
a network device to:
restrict, based on a characteristic associated with a portion of a data stream received from a client device, a selection of one of a plurality of compression dictionaries,
compress, based on the selected one of the plurality of compression dictionaries, the portion of the data stream, and
transfer the data stream, including the compressed portion of the data stream, to another network device.
31. The system of claim 30, where the network device is further to:
restrict, based on another characteristic associated with another portion of the data stream, another selection of another one of the plurality of compression dictionaries,
select, based on the restriction, the other one of the plurality of compression dictionaries,
compress, based on the selected other one of the plurality of compression dictionaries, the other portion of the data stream, and
transfer the data stream, including the compressed portion of the data stream and the compressed other portion of the data stream, to another network device.
32. The system of claim 30, where the data stream comprises a transmission control protocol (TCP) data stream, and when restricting the selection of the one of the plurality of compression dictionaries, the network device is further to:
restrict, based on predefined network characteristics associated with different portions of the TCP data stream, a selection of different ones of the plurality of compression dictionaries for compressing each of the different portions of the TCP data stream.
33. The system of claim 30, where the data stream includes a plurality of data flows, and the network device is further to:
identify, based on a network characteristic associated with each of the plurality of data flows, each of the plurality of data flows,
restrict, based on a compression rule associated with the network characteristic, selection of one of a plurality of compression dictionaries for each of the plurality of data flows,
select, for each of the data flows and based on the restriction, the one of the plurality of compression dictionaries,
compress, based on the selected one of the plurality of compression dictionaries, each of the plurality of data flows, and
transfer the data stream, including the compressed plurality of data flows, to the other network device.
34. The system of claim 30, where the network device is further to:
automatically create, based on a network condition associated with transferring the data stream to the other network device, a compression rule, where the compression rule is associated with the characteristic associated with the portion of the data stream, and
where restricting the selection of the one of the plurality of compression dictionaries is further based on the compression rule.
35. The system of claim 34, where, when automatically creating the compression rule, the network device is to:
determine that the portion of the data stream comprises a threshold amount of data associated the network characteristic, and
where the network device automatically creates the compression rule in response to determining that the portion of the data stream comprises the threshold amount of data.
36. The system of claim 30, where, prior to compressing the portion of the data stream, the network device is further to:
identify, to the other network device, the selected one of the plurality of compression dictionaries.
37. A method comprising:
selecting, by a network device, a dictionary, from a plurality of dictionaries, based on a received stream of data;
transmitting, by the network device, a message to another device, where the message comprises an initial sequence number associated with a compressed stream of data and identifies the selected dictionary;
compressing, based on the selected dictionary, the stream of data to form the compressed stream of data; and
transmitting, by the network device, the compressed stream of data to the other device.
38. The method of claim 37, where selecting the dictionary, further comprises:
determining a characteristic associated with a portion of the stream of data;
identifying one or more rules associated with the characteristic; and
where selecting the dictionary is further based on the one or more rules.
39. The method of claim 38, where selecting the dictionary, further comprises:
determining another characteristic associated with another portion of the stream of data;
identifying one or more other rules associated with the other characteristic;
selecting a first dictionary, of the plurality of dictionaries, based on the one or more rules;
selecting a second dictionary, of the plurality of dictionaries, based on the one or more other rules; and
compressing the portion of the stream of data based on the first dictionary and the other portion of the stream of data based on the second dictionary to form the compressed stream of data.
40. The method of claim 38, further comprising:
determining whether the plurality of dictionaries includes the dictionary; and
creating, when the plurality of dictionaries does not include the dictionary, the dictionary.
41. The method of claim 40, where, when compressing the stream of data, the method further comprises:
populating the dictionary.
42. The method of claim 37, where transmitting the message, further comprises:
receiving an acknowledgement from the other device in response to the message, and
where the network device compresses the stream of data in response to receiving the acknowledgement.
US13/091,966 2008-06-12 2011-04-21 Network characteristic-based compression of network traffic Abandoned US20110202673A1 (en)

Priority Applications (1)

Application Number Priority Date Filing Date Title
US13/091,966 US20110202673A1 (en) 2008-06-12 2011-04-21 Network characteristic-based compression of network traffic

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US12/137,999 US7953881B1 (en) 2008-06-12 2008-06-12 Network characteristic-based compression of network traffic
US13/091,966 US20110202673A1 (en) 2008-06-12 2011-04-21 Network characteristic-based compression of network traffic

Related Parent Applications (1)

Application Number Title Priority Date Filing Date
US12/137,999 Continuation US7953881B1 (en) 2008-06-12 2008-06-12 Network characteristic-based compression of network traffic

Publications (1)

Publication Number Publication Date
US20110202673A1 true US20110202673A1 (en) 2011-08-18

Family

ID=44064170

Family Applications (2)

Application Number Title Priority Date Filing Date
US12/137,999 Expired - Fee Related US7953881B1 (en) 2008-06-12 2008-06-12 Network characteristic-based compression of network traffic
US13/091,966 Abandoned US20110202673A1 (en) 2008-06-12 2011-04-21 Network characteristic-based compression of network traffic

Family Applications Before (1)

Application Number Title Priority Date Filing Date
US12/137,999 Expired - Fee Related US7953881B1 (en) 2008-06-12 2008-06-12 Network characteristic-based compression of network traffic

Country Status (1)

Country Link
US (2) US7953881B1 (en)

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20130346483A1 (en) * 2012-06-25 2013-12-26 Radware, Ltd. System and method for creation, distribution, application, and management of shared compression dictionaries for use in symmetric http networks
US20140149605A1 (en) * 2012-11-26 2014-05-29 Saravana Annamalaisami Systems and methods for dictionary based compression
US10203897B1 (en) * 2016-12-02 2019-02-12 Nutanix, Inc. Dynamic data compression
EP4009696A4 (en) * 2019-08-05 2022-09-14 Huawei Technologies Co., Ltd. Communication method and device

Families Citing this family (27)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8549574B2 (en) * 2002-12-10 2013-10-01 Ol2, Inc. Method of combining linear content and interactive content compressed together as streaming interactive video
US8964830B2 (en) * 2002-12-10 2015-02-24 Ol2, Inc. System and method for multi-stream video compression using multiple encoding formats
US9077991B2 (en) 2002-12-10 2015-07-07 Sony Computer Entertainment America Llc System and method for utilizing forward error correction with video compression
US10201760B2 (en) 2002-12-10 2019-02-12 Sony Interactive Entertainment America Llc System and method for compressing video based on detected intraframe motion
US20090118019A1 (en) 2002-12-10 2009-05-07 Onlive, Inc. System for streaming databases serving real-time applications used through streaming interactive video
US9061207B2 (en) * 2002-12-10 2015-06-23 Sony Computer Entertainment America Llc Temporary decoder apparatus and method
US20100166056A1 (en) * 2002-12-10 2010-07-01 Steve Perlman System and method for encoding video using a selected tile and tile rotation pattern
US9108107B2 (en) * 2002-12-10 2015-08-18 Sony Computer Entertainment America Llc Hosting and broadcasting virtual events using streaming interactive video
US9314691B2 (en) 2002-12-10 2016-04-19 Sony Computer Entertainment America Llc System and method for compressing video frames or portions thereof based on feedback information from a client device
US9138644B2 (en) 2002-12-10 2015-09-22 Sony Computer Entertainment America Llc System and method for accelerated machine switching
US9192859B2 (en) 2002-12-10 2015-11-24 Sony Computer Entertainment America Llc System and method for compressing video based on latency measurements and other feedback
US20100179984A1 (en) 2009-01-13 2010-07-15 Viasat, Inc. Return-link optimization for file-sharing traffic
WO2010104927A2 (en) 2009-03-10 2010-09-16 Viasat, Inc. Internet protocol broadcasting
US8516253B1 (en) 2010-01-18 2013-08-20 Viasat, Inc. Self-keyed protection of anticipatory content
US9307003B1 (en) 2010-04-18 2016-04-05 Viasat, Inc. Web hierarchy modeling
US9106607B1 (en) 2011-04-11 2015-08-11 Viasat, Inc. Browser based feedback for optimized web browsing
US9912718B1 (en) 2011-04-11 2018-03-06 Viasat, Inc. Progressive prefetching
US9456050B1 (en) 2011-04-11 2016-09-27 Viasat, Inc. Browser optimization through user history analysis
US9037638B1 (en) 2011-04-11 2015-05-19 Viasat, Inc. Assisted browsing using hinting functionality
EP4024760A1 (en) 2011-06-14 2022-07-06 ViaSat Inc. Transport protocol for anticipatory content
US9407355B1 (en) 2011-10-25 2016-08-02 Viasat Inc. Opportunistic content delivery using delta coding
GB2496385B (en) * 2011-11-08 2014-03-05 Canon Kk Methods and network devices for communicating data packets
US8432808B1 (en) 2012-06-15 2013-04-30 Viasat Inc. Opportunistically delayed delivery in a satellite network
US10855797B2 (en) 2014-06-03 2020-12-01 Viasat, Inc. Server-machine-driven hint generation for improved web page loading using client-machine-driven feedback
CA3002517C (en) 2015-10-20 2022-06-21 Viasat, Inc. Hint model updating using automated browsing clusters
US11387844B2 (en) * 2019-04-19 2022-07-12 Preferred Networks, Inc. Data compression method, data compression apparatus, data decompression method, data decompression apparatus and data storage system
CN112148694B (en) * 2019-06-28 2022-06-14 华为技术有限公司 Data compression method and data decompression method for electronic equipment and electronic equipment

Citations (43)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5487165A (en) * 1992-04-30 1996-01-23 Ricoh Company, Ltd. Standard page description language cleartext structure generator
US5546395A (en) * 1993-01-08 1996-08-13 Multi-Tech Systems, Inc. Dynamic selection of compression rate for a voice compression algorithm in a voice over data modem
US5561421A (en) * 1994-07-28 1996-10-01 International Business Machines Corporation Access method data compression with system-built generic dictionaries
US5606599A (en) * 1994-06-24 1997-02-25 Intel Corporation Method and apparatus for automatically converting from an analog voice mode to a simultaneous voice and data mode for a multi-modal call over a telephone line
US5617423A (en) * 1993-01-08 1997-04-01 Multi-Tech Systems, Inc. Voice over data modem with selectable voice compression
US5812534A (en) * 1993-01-08 1998-09-22 Multi-Tech Systems, Inc. Voice over data conferencing for a computer-based personal communications system
US5951623A (en) * 1996-08-06 1999-09-14 Reynar; Jeffrey C. Lempel- Ziv data compression technique utilizing a dictionary pre-filled with frequent letter combinations, words and/or phrases
US5953503A (en) * 1997-10-29 1999-09-14 Digital Equipment Corporation Compression protocol with multiple preset dictionaries
US6088699A (en) * 1998-04-22 2000-07-11 International Business Machines Corporation System for exchanging compressed data according to predetermined dictionary codes
US6388584B1 (en) * 2000-03-16 2002-05-14 Lucent Technologies Inc. Method and apparatus for data compression of network packets
US20020057715A1 (en) * 2000-11-16 2002-05-16 Hans Hannu Communication system and method utilizing request-reply communication patterns for data compression
US20020097723A1 (en) * 2000-10-18 2002-07-25 Ari Tourunen Defining header field compression for data packet connection
US6434561B1 (en) * 1997-05-09 2002-08-13 Neomedia Technologies, Inc. Method and system for accessing electronic resources via machine-readable data on intelligent documents
US6434168B1 (en) * 1996-06-07 2002-08-13 Nokia Telecommunications Oy Data compression on a data connection
US20020138654A1 (en) * 2001-03-21 2002-09-26 Zhigang Liu Apparatus, and associated method, for facilitating deletion of dictionary content pursuant to communication of signaling protocol messages
US20030030575A1 (en) * 2001-05-07 2003-02-13 Harmonic Data Systems Ltd. Lossless data compression
US20030206125A1 (en) * 2001-02-13 2003-11-06 Mosaid Technologies, Inc. Method and apparatus for adaptive data compression
US20030233478A1 (en) * 2002-06-17 2003-12-18 Chuah Mooi Choo Protocol message compression in a wireless communications system
US6750791B1 (en) * 2003-02-07 2004-06-15 Nokia Corporation Method and device for text data compression
US6782047B1 (en) * 1999-11-09 2004-08-24 Nokia Networks Oy Variable length encoding of compressed data
US20040210668A1 (en) * 2003-04-15 2004-10-21 Cisco Technology, Inc. Two stage loss-less compressor for a clear channel over a packet network
US20050027731A1 (en) * 2003-07-30 2005-02-03 Daniel Revel Compression dictionaries
US20050091415A1 (en) * 2003-09-30 2005-04-28 Robert Armitano Technique for identification of information based on protocol markers
US20050185677A1 (en) * 2004-02-19 2005-08-25 Telefonaktiebolaget Lm Ericsson (Publ) Selective updating of compression dictionary
US6985965B2 (en) * 2000-11-16 2006-01-10 Telefonaktiebolaget Lm Ericsson (Publ) Static information knowledge used with binary compression methods
US20060018556A1 (en) * 2004-07-23 2006-01-26 Hewlett-Packard Development Co., L.P. Method, apparatus and system for data block rearrangement for LZ data compression
US7002993B1 (en) * 2000-08-18 2006-02-21 Juniper Networks, Inc. Method and apparatus providing media aggregation in a packet-switched network
US20060153176A1 (en) * 1993-01-08 2006-07-13 Multi-Tech Systems, Inc. Computer-based multifunctional personal communication system with caller ID
US20060245505A1 (en) * 2005-05-02 2006-11-02 Limberg Allen L Digital television signals using linear block coding
US7177944B1 (en) * 2002-04-13 2007-02-13 Mindspeed Technologies, Inc. Trans-compression selection and configuration in modem over packet networks
US7184597B1 (en) * 2002-05-04 2007-02-27 Edward Lasar Aronov Method of compression of binary data with a random number generator
US20070085714A1 (en) * 2005-09-30 2007-04-19 Intel Corporation Apparatus, system, and method of data compression
US20070096953A1 (en) * 2005-10-31 2007-05-03 Fujitsu Limited Data compression method and compressed data transmitting method
US20080034119A1 (en) * 2006-08-03 2008-02-07 Citrix Systems, Inc. Systems and Methods of For Providing Multi-Mode Transport Layer Compression
US20080037509A1 (en) * 2006-06-30 2008-02-14 George Foti Method and communications node for creation and transmission of user specific dictionary for compression and decompression of messages
US7420992B1 (en) * 2005-03-17 2008-09-02 Packeteer, Inc. Adaptive network traffic compression mechanism including dynamic selection of compression algorithms
US20080260163A1 (en) * 2006-08-08 2008-10-23 Canon Kabushiki Kaisha Communication encryption processing apparatus
US20090019345A1 (en) * 2007-02-13 2009-01-15 Packeteer, Inc. Compression of Stream Data Using a Hierarchically-Indexed Database
US20090024763A1 (en) * 2007-07-17 2009-01-22 Microsoft Corporation Optimizing encrypted wide area network traffic
US20090052452A1 (en) * 2007-08-23 2009-02-26 Keyur Patel Signaling compression information using routing protocols
US20090204626A1 (en) * 2003-11-05 2009-08-13 Shakeel Mustafa Systems and methods for information compression
US7613131B2 (en) * 2005-11-10 2009-11-03 Citrix Systems, Inc. Overlay network infrastructure
US20100023618A1 (en) * 2002-09-19 2010-01-28 Foundry Networks, Inc. System and method for supplicant based accounting and access

Patent Citations (43)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5487165A (en) * 1992-04-30 1996-01-23 Ricoh Company, Ltd. Standard page description language cleartext structure generator
US5546395A (en) * 1993-01-08 1996-08-13 Multi-Tech Systems, Inc. Dynamic selection of compression rate for a voice compression algorithm in a voice over data modem
US5617423A (en) * 1993-01-08 1997-04-01 Multi-Tech Systems, Inc. Voice over data modem with selectable voice compression
US5812534A (en) * 1993-01-08 1998-09-22 Multi-Tech Systems, Inc. Voice over data conferencing for a computer-based personal communications system
US20060153176A1 (en) * 1993-01-08 2006-07-13 Multi-Tech Systems, Inc. Computer-based multifunctional personal communication system with caller ID
US5606599A (en) * 1994-06-24 1997-02-25 Intel Corporation Method and apparatus for automatically converting from an analog voice mode to a simultaneous voice and data mode for a multi-modal call over a telephone line
US5561421A (en) * 1994-07-28 1996-10-01 International Business Machines Corporation Access method data compression with system-built generic dictionaries
US6434168B1 (en) * 1996-06-07 2002-08-13 Nokia Telecommunications Oy Data compression on a data connection
US5951623A (en) * 1996-08-06 1999-09-14 Reynar; Jeffrey C. Lempel- Ziv data compression technique utilizing a dictionary pre-filled with frequent letter combinations, words and/or phrases
US6434561B1 (en) * 1997-05-09 2002-08-13 Neomedia Technologies, Inc. Method and system for accessing electronic resources via machine-readable data on intelligent documents
US5953503A (en) * 1997-10-29 1999-09-14 Digital Equipment Corporation Compression protocol with multiple preset dictionaries
US6088699A (en) * 1998-04-22 2000-07-11 International Business Machines Corporation System for exchanging compressed data according to predetermined dictionary codes
US6782047B1 (en) * 1999-11-09 2004-08-24 Nokia Networks Oy Variable length encoding of compressed data
US6388584B1 (en) * 2000-03-16 2002-05-14 Lucent Technologies Inc. Method and apparatus for data compression of network packets
US7002993B1 (en) * 2000-08-18 2006-02-21 Juniper Networks, Inc. Method and apparatus providing media aggregation in a packet-switched network
US20020097723A1 (en) * 2000-10-18 2002-07-25 Ari Tourunen Defining header field compression for data packet connection
US20020057715A1 (en) * 2000-11-16 2002-05-16 Hans Hannu Communication system and method utilizing request-reply communication patterns for data compression
US6985965B2 (en) * 2000-11-16 2006-01-10 Telefonaktiebolaget Lm Ericsson (Publ) Static information knowledge used with binary compression methods
US20030206125A1 (en) * 2001-02-13 2003-11-06 Mosaid Technologies, Inc. Method and apparatus for adaptive data compression
US20020138654A1 (en) * 2001-03-21 2002-09-26 Zhigang Liu Apparatus, and associated method, for facilitating deletion of dictionary content pursuant to communication of signaling protocol messages
US20030030575A1 (en) * 2001-05-07 2003-02-13 Harmonic Data Systems Ltd. Lossless data compression
US7177944B1 (en) * 2002-04-13 2007-02-13 Mindspeed Technologies, Inc. Trans-compression selection and configuration in modem over packet networks
US7184597B1 (en) * 2002-05-04 2007-02-27 Edward Lasar Aronov Method of compression of binary data with a random number generator
US20030233478A1 (en) * 2002-06-17 2003-12-18 Chuah Mooi Choo Protocol message compression in a wireless communications system
US20100023618A1 (en) * 2002-09-19 2010-01-28 Foundry Networks, Inc. System and method for supplicant based accounting and access
US6750791B1 (en) * 2003-02-07 2004-06-15 Nokia Corporation Method and device for text data compression
US20040210668A1 (en) * 2003-04-15 2004-10-21 Cisco Technology, Inc. Two stage loss-less compressor for a clear channel over a packet network
US20050027731A1 (en) * 2003-07-30 2005-02-03 Daniel Revel Compression dictionaries
US20050091415A1 (en) * 2003-09-30 2005-04-28 Robert Armitano Technique for identification of information based on protocol markers
US20090204626A1 (en) * 2003-11-05 2009-08-13 Shakeel Mustafa Systems and methods for information compression
US20050185677A1 (en) * 2004-02-19 2005-08-25 Telefonaktiebolaget Lm Ericsson (Publ) Selective updating of compression dictionary
US20060018556A1 (en) * 2004-07-23 2006-01-26 Hewlett-Packard Development Co., L.P. Method, apparatus and system for data block rearrangement for LZ data compression
US7420992B1 (en) * 2005-03-17 2008-09-02 Packeteer, Inc. Adaptive network traffic compression mechanism including dynamic selection of compression algorithms
US20060245505A1 (en) * 2005-05-02 2006-11-02 Limberg Allen L Digital television signals using linear block coding
US20070085714A1 (en) * 2005-09-30 2007-04-19 Intel Corporation Apparatus, system, and method of data compression
US20070096953A1 (en) * 2005-10-31 2007-05-03 Fujitsu Limited Data compression method and compressed data transmitting method
US7613131B2 (en) * 2005-11-10 2009-11-03 Citrix Systems, Inc. Overlay network infrastructure
US20080037509A1 (en) * 2006-06-30 2008-02-14 George Foti Method and communications node for creation and transmission of user specific dictionary for compression and decompression of messages
US20080034119A1 (en) * 2006-08-03 2008-02-07 Citrix Systems, Inc. Systems and Methods of For Providing Multi-Mode Transport Layer Compression
US20080260163A1 (en) * 2006-08-08 2008-10-23 Canon Kabushiki Kaisha Communication encryption processing apparatus
US20090019345A1 (en) * 2007-02-13 2009-01-15 Packeteer, Inc. Compression of Stream Data Using a Hierarchically-Indexed Database
US20090024763A1 (en) * 2007-07-17 2009-01-22 Microsoft Corporation Optimizing encrypted wide area network traffic
US20090052452A1 (en) * 2007-08-23 2009-02-26 Keyur Patel Signaling compression information using routing protocols

Cited By (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20130346483A1 (en) * 2012-06-25 2013-12-26 Radware, Ltd. System and method for creation, distribution, application, and management of shared compression dictionaries for use in symmetric http networks
US9455864B2 (en) * 2012-06-25 2016-09-27 Radware, Ltd. System and method for creation, distribution, application, and management of shared compression dictionaries for use in symmetric HTTP networks
US20140149605A1 (en) * 2012-11-26 2014-05-29 Saravana Annamalaisami Systems and methods for dictionary based compression
CN105284052B (en) * 2012-11-26 2018-12-21 思杰系统有限公司 System and method for the compression based on dictionary
US10203897B1 (en) * 2016-12-02 2019-02-12 Nutanix, Inc. Dynamic data compression
US10776026B2 (en) 2016-12-02 2020-09-15 Nutanix, Inc. Dynamic data compression
US11740818B2 (en) 2016-12-02 2023-08-29 Nutanix, Inc. Dynamic data compression
EP4009696A4 (en) * 2019-08-05 2022-09-14 Huawei Technologies Co., Ltd. Communication method and device

Also Published As

Publication number Publication date
US7953881B1 (en) 2011-05-31

Similar Documents

Publication Publication Date Title
US7953881B1 (en) Network characteristic-based compression of network traffic
US7961119B1 (en) Memory efficient indexing for disk-based compression
US8018866B1 (en) Adaptively applying network acceleration services with an intermediate network device
US7420992B1 (en) Adaptive network traffic compression mechanism including dynamic selection of compression algorithms
US8694684B2 (en) Systems and methods of symmetric transport control protocol compression
US7154416B1 (en) Adaptive control of codebook regeneration in data compression mechanisms
EP2050250B1 (en) System and method for providing multi-mode transport layer compression
US8832300B2 (en) Systems and methods for identifying long matches of data in a compression history
US8786473B2 (en) Systems and methods for sharing compression histories between multiple devices
US8352605B2 (en) Systems and methods for providing dynamic ad hoc proxy-cache hierarchies
US7619545B2 (en) Systems and methods of using application and protocol specific parsing for compression
US8255570B2 (en) Systems and methods of compression history expiration and synchronization
US7453379B2 (en) Systems and methods for identifying long matches of data in a compression history
US20100281112A1 (en) Systems and methods of revalidating cached objects in parallel with request for object
US20130103791A1 (en) Optimizing content delivery over a protocol that enables request multiplexing and flow control
Zhang et al. On wide area network optimization
US8077622B2 (en) Systems and methods for efficiently load balancing based on least connections
EP2070297A2 (en) Systems and methods for using an http-aware client agent
US8605605B1 (en) Setting initial data transmission size based on prior transmission
WO2023284626A1 (en) Method for optimizing data access performance, and intermediate device
Dong et al. Split-TCP based acceleration gateway over packet lossy networks
AU2012201975B2 (en) Systems and methods for providing multi-mode transport layer compression

Legal Events

Date Code Title Description
STCB Information on status: application discontinuation

Free format text: ABANDONED -- FAILURE TO RESPOND TO AN OFFICE ACTION