US20160142938A1 - Byte caching in wireless communication networks - Google Patents
Byte caching in wireless communication networks Download PDFInfo
- Publication number
- US20160142938A1 US20160142938A1 US15/007,321 US201615007321A US2016142938A1 US 20160142938 A1 US20160142938 A1 US 20160142938A1 US 201615007321 A US201615007321 A US 201615007321A US 2016142938 A1 US2016142938 A1 US 2016142938A1
- Authority
- US
- United States
- Prior art keywords
- byte
- byte caching
- caching system
- packet
- wireless communication
- 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.)
- Granted
Links
Images
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04W—WIRELESS COMMUNICATION NETWORKS
- H04W28/00—Network traffic management; Network resource management
- H04W28/02—Traffic management, e.g. flow control or congestion control
- H04W28/06—Optimizing the usage of the radio link, e.g. header compression, information sizing, discarding information
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/2866—Architectures; Arrangements
- H04L67/2876—Pairs of inter-processing entities at each side of the network, e.g. split proxies
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04W—WIRELESS COMMUNICATION NETWORKS
- H04W4/00—Services specially adapted for wireless communication networks; Facilities therefor
- H04W4/18—Information format or content conversion, e.g. adaptation by the network of the transmitted or received information for the purpose of wireless delivery to users or terminals
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L47/00—Traffic control in data switching networks
- H04L47/10—Flow control; Congestion control
- H04L47/30—Flow control; Congestion control in combination with information about buffer occupancy at either end or at transit nodes
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L63/00—Network architectures or network communication protocols for network security
- H04L63/02—Network architectures or network communication protocols for network security for separating internal from external traffic, e.g. firewalls
- H04L63/0281—Proxies
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04W—WIRELESS COMMUNICATION NETWORKS
- H04W28/00—Network traffic management; Network resource management
- H04W28/02—Traffic management, e.g. flow control or congestion control
- H04W28/06—Optimizing the usage of the radio link, e.g. header compression, information sizing, discarding information
- H04W28/065—Optimizing the usage of the radio link, e.g. header compression, information sizing, discarding information using assembly or disassembly of packets
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04W—WIRELESS COMMUNICATION NETWORKS
- H04W28/00—Network traffic management; Network resource management
- H04W28/02—Traffic management, e.g. flow control or congestion control
- H04W28/10—Flow control between communication endpoints
- H04W28/12—Flow control between communication endpoints using signalling between network elements
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04W—WIRELESS COMMUNICATION NETWORKS
- H04W28/00—Network traffic management; Network resource management
- H04W28/02—Traffic management, e.g. flow control or congestion control
- H04W28/10—Flow control between communication endpoints
- H04W28/14—Flow control between communication endpoints using intermediate storage
-
- H—ELECTRICITY
- H03—ELECTRONIC CIRCUITRY
- H03M—CODING; DECODING; CODE CONVERSION IN GENERAL
- H03M7/00—Conversion of a code where information is represented by a given sequence or number of digits to a code where the same, similar or subset of information is represented by a different sequence or number of digits
- H03M7/30—Compression; Expansion; Suppression of unnecessary data, e.g. redundancy reduction
-
- H—ELECTRICITY
- H03—ELECTRONIC CIRCUITRY
- H03M—CODING; DECODING; CODE CONVERSION IN GENERAL
- H03M7/00—Conversion of a code where information is represented by a given sequence or number of digits to a code where the same, similar or subset of information is represented by a different sequence or number of digits
- H03M7/30—Compression; Expansion; Suppression of unnecessary data, e.g. redundancy reduction
- H03M7/3059—Digital compression and data reduction techniques where the original information is represented by a subset or similar information, e.g. lossy compression
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L12/00—Data switching networks
- H04L12/02—Details
- H04L12/16—Arrangements for providing special services to substations
- H04L12/18—Arrangements for providing special services to substations for broadcast or conference, e.g. multicast
- H04L12/1895—Arrangements for providing special services to substations for broadcast or conference, e.g. multicast for short real-time information, e.g. alarms, notifications, alerts, updates
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L65/00—Network arrangements, protocols or services for supporting real-time applications in data packet communication
- H04L65/60—Network streaming of media packets
- H04L65/70—Media network packetisation
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L69/00—Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
- H04L69/04—Protocols for data compression, e.g. ROHC
Definitions
- the present invention generally relates to network data transmission, and more particularly relates to byte caching in wireless communication networks.
- a key problem with communication via mobile networks is the rapid increase of data traffic.
- the density of mobile computing platforms is increasing at an exponential rate.
- Mobile computing platforms include traditional platforms such as phones, tablets and mobile broadband enabled laptops but increasingly also mobile data enabled devices, such as GPS systems, cars, even mobile medical equipment.
- MNOs Mobile Network Operators
- MNOs Mobile Network Operators
- additional base stations are fairly easy to deploy to increase the available aggregate “air interface” bandwidth
- the connections back from the base stations to the radio network controller (RNC), typically implemented as microwave links are bandwidth constrained. Upgrading these connections to fiber optic connections is very expensive.
- increasing the available bandwidth in the RNC and core network is expensive as well.
- a computer program storage product for performing byte caching in a wireless communication network device with a first byte caching system.
- the computer program storage product comprising instructions configured to perform a method.
- the method comprises receiving a plurality of data packets through an internet protocol (IP) data flow established between a wireless communication device and at least one server.
- IP internet protocol
- Each of the plurality of data packets are combined into a packet bundle.
- a determination is made as to whether a second byte caching system is available.
- the packet bundle is transformed using one or more byte caching operations based on a second byte caching system being available.
- the transformed packet bundle is sent to the second byte caching system using an IP communication mechanism.
- a byte caching system for performing byte caching in a wireless communication network device.
- the byte caching system comprises a memory and a processor that is communicatively coupled to the memory.
- a byte caching manager is communicatively coupled to the memory and the processor.
- the byte caching manager is configured to perform a method.
- the method comprises receiving a plurality of data packets through an Internet protocol (IP) data flow established between a wireless communication device and at least one server. Each of the plurality of data packets are combined into a packet bundle.
- IP Internet protocol
- a determination is made as to whether a second byte caching system is available.
- the packet bundle is transformed using one or more byte caching operations based on a second byte caching system being available.
- the transformed packet bundle is sent to the second byte caching system using an IP communication mechanism.
- IP Internet protocol
- FIG. 1 is a block diagram illustrating one example of an operating environment according to one embodiment of the present invention
- FIG. 2 is a block diagram illustrating a detailed view of a byte caching system according to one embodiment of the present invention
- FIG. 3 shows one example of a performing byte caching on a data packet according to one embodiment of the present invention
- FIG. 4 shows one example transforming a plurality of data packets into a packet bundle according to one embodiment of the present invention
- FIG. 5 shows one example of compressing a packet bundle using byte caching according to one embodiment of the present invention
- FIG. 6 shows the protocol encapsulations for IP routing according to one embodiment of the present invention
- FIG. 7 shows the protocol encapsulations for IP Tunneling according to one embodiment of the present invention.
- FIG. 8 is an operational flow diagram illustrating one example of byte caching in a wireless communication network according to one embodiment of the present invention.
- FIG. 9 is a block diagram illustrating one example of an information processing system according to one embodiment of the present invention.
- FIG. 1 shows an operating environment 100 according to one embodiment of the present invention.
- the operating environment 100 comprises one or more wireless communication networks 102 that are communicatively coupled to one or more wire line networks 104 .
- the wire line network 104 acts as a back-end for the wireless communication network 102 .
- the wire line network 104 comprises one or more access/core networks of the wireless communication network 102 and one or more Internet Protocol (IP) networks such as the Internet.
- IP Internet Protocol
- the wire line network 104 communicatively couples one or more content sources/providers, such as a server(s) 106 , to the wireless communication network 102 .
- the back-end is not a wire line network.
- the back-end is a wireless network and takes the form of a point-to-point back-end network such as a directional microwave network used to transmit and receive signals bi-directionally.
- the back-end takes the form of a network of peers in which a mobile base station (e.g., eNode B in the case of GSM and its descendants) is itself used as a back-end network for other base stations.
- a mobile base station e.g., eNode B in the case of GSM and its descendants
- the wireless communication network 102 supports any wireless communication standard such as, but not limited to, Global System for Mobile Communications (GSM), Code Division Multiple Access (CDMA), Time Division Multiple Access (TDMA), General Packet Radio Service (GPRS), Frequency Division Multiple Access (FDMA), Orthogonal Frequency Division Multiplexing (OFDM), or the like.
- GSM Global System for Mobile Communications
- CDMA Code Division Multiple Access
- TDMA Time Division Multiple Access
- GPRS General Packet Radio Service
- FDMA Frequency Division Multiple Access
- OFDM Orthogonal Frequency Division Multiplexing
- the wireless communication network 102 includes one or more networks based on such standards.
- the wireless communication network 102 comprises one or more of a Long Term Evolution (LTE) network, an Evolution Data Only (EV-DO) network, a GPRS network, a Universal Mobile Telecommunications System (UMTS) network, and the like.
- LTE Long Term Evolution
- EV-DO Evolution Data Only
- GPRS Universal Mobile Telecommunications System
- FIG. 1 further shows that one or more user devices (also referred to herein as “user equipment (UE)”) 108 , 110 are communicatively coupled to the wireless communication network 102 .
- the UE devices 108 , 110 are wireless communication devices such as two-way radios, cellular telephones, mobile phones, smartphones, two-way pagers, wireless messaging devices, laptop computers, tablet computers, desktop computers, personal digital assistants, and other similar devices.
- UE devices 108 , 110 access the wireless communication network 102 through one or more transceiver nodes 112 , 114 using one or more air interfaces 116 established between the UE devices 108 , 110 and the transceiver node 112 , 114 .
- one or more UE devices 108 , 110 access the wireless communication network 102 via a wired network and/or a non-cellular wireless network such as, but not limited to, a Wireless Fidelity (WiFi) network.
- the UE devices 108 , 110 can be communicatively coupled to one or more gateway devices via wired and/or wireless mechanisms that communicatively couples the UE devices 108 , 110 to the wireless communication network 102 .
- This gateway device(s) in this embodiment, communicates with the wireless communication network 102 via wired and/or wireless communication mechanisms.
- the UE devices 108 , 110 interact with the wireless communication network 102 to send/receive voice and data communications to/from the wireless communication network 104 .
- the UE devices 108 , 110 are able to wirelessly request and receive content (e.g., audio, video, text, web pages, etc.) from a provider, such as the server 106 , through the wireless communication network 102 .
- the requested content/service is delivered to the wireless communication network 102 through the wire line network 104 .
- a transceiver node 112 , 114 is known as a base transceiver station (BTS), a Node B, and/or an Evolved Node B (eNode B) depending on the technology being implemented within the wireless communication network 104 .
- BTS base transceiver station
- eNode B Evolved Node B
- the base station 112 , 114 is communicatively coupled to one or more antennas and a radio network controller (RNC) 118 (or base station controller (BSC)), which manages and controls one or more base station 112 , 114 .
- RNC radio network controller
- BSC base station controller
- the eNodeB communicates directly with the core of the cellular network.
- the RNC 118 can be included within or separate from a base station B 112 , 114 .
- the base stations 112 , 114 communicate with the RNC 118 over a backhaul link 120 .
- a base station 112 , 114 is communicatively coupled to a Serving GPRS (SGSN) 122 , which supports several RNCs 118 .
- the SGSN 122 is communicatively coupled to Gateway GPRS Support Node (GGSN) 124 , which communicates with the operator's service network (not shown).
- the operator's service network connects to the Internet at a peering point. It should be noted that even though UMTS components are illustrated in FIG. 1 embodiments of the present invention are applicable to other wireless communication technologies as well.
- the communication protocols between the UE devices 108 , 110 and the GGSN 124 are various 3rd Generation Partnership Project (3GPP) protocols over which the internet protocol (IP) traffic from the UE devices 108 , 110 is tunneled.
- 3GPP 3rd Generation Partnership Project
- IP internet protocol
- GTP GPRS tunneling protocol
- IP Internet Protocol
- the server(s) 106 has a TCP (Transmission Control Protocol) socket that communicates with a TCP socket at the UE devices 108 , 110 when a user wishes to access data from the server 106 .
- An IP tunnel is created from the GGSN 251 to UE devices 108 , 110 for user traffic and passes through the interim components, such as the RNC 118 and the SGSN 122 .
- one or more embodiments of the present invention implement two or more byte caching devices/systems 126 , 128 between the base stations 112 , 114 and the server(s) 106 .
- Each of these byte caching devices 126 , 128 performs byte caching operations to reduce network traffic on the network.
- the byte caching devices 126 , 128 intercept traffic that is guaranteed to go through both of the devices 126 , 128 .
- Each byte caching device 126 , 128 looks at the data passing through it and stores the byte sequences (and their corresponding hashes or signatures) that are likely to repeat again in the data.
- a stored byte sequence passes through a byte caching device again 126 , 128 the device replaces the byte sequence with its signature/fingerprint.
- this signature/fingerprint passes through the other byte caching device the signature/fingerprint replaced by the original byte sequence. Since only a (short) signature/fingerprint is transmitted instead of a long byte sequence, byte caching reduces bandwidth consumption.
- a hub and spoke arrangement is utilized for the byte caching devices 126 , 128 , where one or more hub byte caching components 126 are located deeper in the wireless communication infrastructure and each are paired with one or more spoke byte caching components 128 within or coupled to the base stations 112 , 114 or RNC 118 (as opposed to one-to-one relationship of byte caching nodes).
- FIG. 1 shows a hub or byte caching server 126 disposed between the wire line network 104 and the GGSN 124 (e.g., the point where the network connects to the peering point with the Internet).
- the byte caching server 126 operates as a conventional transparent transfer protocol proxy but has additional byte caching behavior as discussed below.
- FIG. 1 shows a hub or byte caching server 126 disposed between the wire line network 104 and the GGSN 124 (e.g., the point where the network connects to the peering point with the Internet).
- the byte caching server 126 operates as a conventional transparent
- This byte caching device 128 includes breakout and byte cache functionality to optimize data transfer. This byte caching component 128 manipulates the transfer protocol connection between the UE devices 108 , 110 and the core as discussed below.
- FIG. 2 shows a more detailed view of a byte caching system 200 such as the byte caching server 126 or the BCNB 128 .
- the byte caching system 200 comprises a byte caching manager 202 and a byte cache 204 .
- the byte caching manager 202 manages byte caching operations at the byte caching system 200 .
- the byte cache 204 is a memory cache or any other type of storage component that stores byte sequences of data objects within data packets and their signatures/hashes.
- the byte caching manager 202 comprises a packet manager 206 , a sequencing manager 212 , and a signature manager 214 .
- the packet manager 206 comprises an encoder 208 and a decoder 210 .
- the encoder 208 encodes data packets for transmission to a destination node.
- the decoder 210 decodes packets received by the byte caching system 200 for processing thereof. It should be noted that packet manager 206 can also include any other hardware and/or software for receiving, sending, and managing data packets.
- the byte caching manager 202 in one embodiment, comprises a sequencing manager 212 and a signature manager 214 .
- the sequencing manager 212 divides/partitions the data object into a plurality of byte sequences 216 (also referred to as “chunks” or “object sequences”).
- the signature manager 214 calculates a signature or fingerprint 218 for each of object sequences 216 created by the sequencing manager 212 .
- the signature/fingerprint 218 can be a hash value or any other data that can uniquely identify the object chunk.
- the byte cache 204 stores the object sequences 216 and/or the signatures 218 of the sequences 216 .
- one or more embodiments implement the byte caching devices 126 , 128 using a hub and spoke arrangement for performing byte caching operations within the wireless communication network 102 .
- the byte caching devices 126 , 128 are configured to compress a communication flow between a UE device 108 , 110 and the server(s) 106 (and vice versa) by looking across multiple IP packets and compressing these packets to create new IP packets.
- the byte caching systems 126 , 128 transport these IP packets across the wireless communication network using existing Layer 2 (data link layer) mechanisms by exploiting existing IP routing or a tunneling mechanism (depending on infrastructure support).
- the receiving byte caching device When one byte caching device receives an IP packet(s) from the other byte caching device, the receiving byte caching device recreates the original IP packet(s) and injects these packets back in the network towards the UE device(s) 108 , 110 .
- Layer 2 mechanisms can be utilized to deliver IP packets to the UE device 108 , 110 .
- This configuration enables byte-caching in the presence of end user mobility exploiting IP layer forwarding/routing mechanisms of the underlying wireless communication network. Also, bandwidth savings and higher throughput are provided as compared to TCP-layer based byte caching. It should be noted that embodiments of the present invention are also applicable outside the space of Cellular Network Providers (CNPs) as well.
- CNPs Cellular Network Providers
- the UE device 108 establishes an IP tunnel with the wireless communications network 102 in a conventional manner. For example, the UE device 108 makes a TCP connection to a port (e.g., port 80 ) at a server 106 it wishes to receive data from. This TCP connection is transparently proxied by the byte caching server 126 .
- the byte caching manager 202 at the byte caching server 126 determines whether or not the base station 112 coupled to the UE device 108 is associated with a byte caching device 126 . For example, a mapping of flows from the hub byte caching device 128 to spoke byte caching devices 128 can be maintained through various mechanisms.
- mapping mechanism is given in the commonly owned U.S. Patent Application No. ______ (Attorney Docket No. YOR920120544US1) entitled “Mobility Detection For Edge Applications In Wireless Communication Networks”, filed on ______, the entire disclosure of which is hereby incorporated by reference in its entirety.
- the byte caching server 126 can maintain a list of base stations 112 that are associated with a byte caching device 128 .
- the base station 112 can identify itself to the byte caching server 126 .
- the byte caching manager 202 at the byte caching server 126 compares an identifier received from base station to the list and determines if the base station 112 coupled to the UE device 108 is associated with a byte caching device.
- a byte caching device 128 signals to the byte caching sever 126 that it is present in the data path.
- this signaling is provided by modifying the TCP header of the TCP packet to insert a marker TCP option into the options field in the TCP header.
- the byte caching server 126 intercepts these added TCP options, interprets, and removes them.
- Alternative embodiments of this feature include sending marker IP datagrams or modifying the IP header of the TCP packets. If the byte caching server 126 does not receive a signal from a byte caching component 128 within a given amount of time the byte caching manager 202 at the byte caching server 126 determines that the base station 112 is not associated with a byte caching device 128 or that the byte device component is unavailable.
- the byte caching server 126 does not alter any data packets received from the server 106 destined for reception by the UE device 108 , 110 . However, the byte caching server 126 still examines the data packets, calculates signatures/fingerprints, and stores away chunks of the data object(s) within the data packet(s) in the byte cache 204 , which can be on their signature/fingerprint.
- the packet manager 206 sends the received packets to the sequencing manager 212 of the byte caching manager 202 .
- the sequencing manager 212 divides/partitions the data payload 304 (e.g., data object(s)) of the data packet 302 into a plurality of byte sequences (e.g., sections/chunks) 306 , 308 , as shown in FIG. 3 .
- the signature manager 214 calculates a signature/fingerprint 310 , 312 for each of the byte sequences 306 , 308 .
- a signature/fingerprint 306 , 308 can be a hash value or any other data that can uniquely identify a sequence/chunk.
- the byte caching manager 202 then compares the byte sequences 306 , 308 to byte sequences 216 stored within the byte cache 204 to determine if the data object(s) 304 within the data packet 302 has been previously received. If a match exists this indicates that the same data object has been previously received and the matching byte sequences 306 , 308 and their signatures 310 , 312 are not stored. A match also indicates that the matching byte sequences are stored within the byte cache of a spoke byte caching device since it is part of the same byte caching environment as the hub byte caching device.
- the byte cache 204 at does not comprise the byte sequences 306 , 308 (or signatures 310 , 312 ) this indicates that this data object 304 has not been previously received by the byte caching sever 126 and the byte sequences 306 , 308 and/or their signatures 310 , 312 are stored in the byte cache 204 .
- the byte caching manager 202 can also utilize the signatures 310 , 312 to determine if the data object 304 has been previously received by the byte caching sever 126 .
- the signatures of byte sequences are also stored within the byte cache 204 along with the byte sequences. If the byte caching manager 202 determines that signatures exist within the byte cache 204 that match the generated signatures then this indicates that the data object has been previously received and is stored within the byte cache of a spoke byte caching device as well.
- the byte caching server sends the data packet onward to the UE device 108 , 110 . It should be noted that the above process for caching byte sequences of a data packet is only one example of a byte caching mechanism applicable to various embodiments of the present invention.
- the byte caching server 126 performs packet bundling, data transformation, and data transportation operations.
- packet bundling the packet manager 206 at the byte caching sever 126 stores the data packets belonging to the same end-to-end network flow in a local buffer (not shown) for a given period of time, which can depend on the round-trip time of the end-to-end flow.
- the storage of received bytes in a temporary buffer allows the byte caching sever 126 to process the bytes and to eliminate redundancy across the boundaries of data packets. In other words, sequences can expand across multiple packets.
- the packet manager 206 orders the buffered data packets based on the way those packets were generated by the end nodes (e.g., server 106 ). For example, in a TCP flow, packets may be ordered by using the sequence number information attached on every TCP header. It should be noted that the ordering by TCP sequence number is not necessary since this is an IP Layer implementation. However, the ordering can still be performed to the extent possible given the constraints of buffering so that better bandwidth savings can be achieved (out of sequence bundling reduces chances of a future match of a long sequence of bytes).
- FIG. 4 shows a plurality of buffered data packets 402 , 404 , 406 associated with the same end-to-end network flow. Each of these data packets 402 , 404 , 406 comprises a payload (one or more data objects) 408 , 410 , 412 .
- FIG. 4 also shows a packet bundle 414 comprising a concatenated/combined payload 416 created from the payloads) 408 , 410 , 412 of the buffered data packets 402 , 404 , 406 .
- Each packet bundle 414 comprises some additional header information 418 that enables the correct reconstruction of the original application data.
- the header information comprises the transport header information of all the packets combined in the packet bundle.
- This header information can be compressed using standard compression techniques, such as Lempel-Ziv-Welch compression, or other compression techniques taking advantage of transport layer protocol knowledge.
- the header contains the TCP sequence number of the first byte of the concatenated data in the packet bundle.
- Other information within the bundle header can include acknowledged sequence number(s), set TCP flags, etc.
- Valid end-to-end flow packets can be reconstructed using the header information 418 . Note that the reconstructed packets may not necessarily be the same as the original packets. However, the application layer data should be the same as the original date and they should be delivered in the order generated by the application.
- the combined payload 416 within the bundle 414 is compressed by the byte caching manager 202 .
- Various compression techniques can be used. In one embodiment, the selection of the compression technique depends on the capabilities of the receiving byte-caching device 128 that the end-to-end flow goes through. As discussed above, if a receiving byte caching device does not exist in the end-to-end flow or is not available the bundling and compression operations are not performed.
- the sequencing manager 212 divides/separates the payload 416 of the packet bundle 414 into a plurality of byte sequences.
- the signature manager 214 then calculates a signature/fingerprint for each of the byte sequences.
- a signature/fingerprint can be a hash value or any other data that can uniquely identify the object chunk.
- the byte caching manager 202 compares the byte sequences and/or the signatures to the sequences and/or signatures within the byte cache 204 , as discussed above. If a match exists this indicates that the same payload (or portion of the payload) has been previously received and transmitted to the receiving byte caching device 128 . A match also indicates that the byte sequences are stored within the byte cache of the receiving byte caching device 128 since it is part of the same byte caching environment as the byte caching server 126 . If the byte cache 204 at the byte caching server 126 does not comprise the byte sequences (or signatures) this indicates that this payload (or portion of the payload) has not been previously received by the byte caching server 126 . It should be noted that the byte caching manager 202 can also utilize the signatures to determine if the payload (or portion of the payload) has been previously received, as discussed above.
- the byte caching manager 202 determines that this payload (or portion of the payload) has not been previously received and transmitted to the receiving byte caching device 128 . Therefore, the byte caching manager 202 stores the byte sequences of the payload (or portion of the payload) and its signature(s) within the byte cache 204 . In an alternative embodiment only the signature(s) is stored within the byte cache 204 . The package manager 202 then transmits packet bundle 414 to the receiving byte caching device 128 .
- the byte caching manager 202 determines that the payload (or portion thereof) in the packet bundle 414 was previously received and sent to the receiving byte caching device 128 . For example, consider three byte sequences, Seq_1, Seq_2, and Seq_3. The byte caching manager 202 determines that a match for byte sequences Seq_1 and Seq_2 exists within the byte cache 204 . The byte caching manager 202 also determines that a match does not exist within the byte cache 204 for Seq_3.
- the byte caching manager 202 determines a portion of the combined payload 414 has been a previously received payload and another portion of the combined payload 414 is new.
- the new portion, e.g., Seq_3, and its signature, e.g., Sig_3 are stored within the byte cache 204 .
- a compressed packet bundle 514 is generated, as shown in FIG. 5 , by encoding the packet bundle 514 with the signatures Sig_1 503 and Sig_2 505 for sequence Seq_1 and Seq_2 along with the byte sequence Seq_3 507 .
- the encoded packet bundle 514 is a compressed packet bundle 414 since it only includes the signatures Sig_1 503 and Sig_2 505 for sequence Seq_1 and Seq_2 as compared to comprising the actual sequences Seq_1 and Seq_2.
- each compressed packet bundle 514 is a self-contained data unit. Stated different, the original data (i.e., uncompressed data) as well as the original packets combined in the bundle can be recovered by using only information present in the bundle 514 and a local byte cache.
- the compressed packet bundle 514 does not explicitly refer to data in other bundles, although the compressed packet bundle can implicitly refer to data in other bundles if that data has not been stored in a local byte cache.
- Compressed packet bundles 514 are transported from the byte caching server 126 (e.g., the encoder) to the receiving byte caching device 128 (e.g., the decoder), using either IP Routing or IP Tunneling.
- FIG. 6 shows the protocol encapsulations for IP routing
- FIG. 7 shows the protocol encapsulations for IP Tunneling. If IP Routing is utilized each compressed packet bundle 514 is encapsulated within one IP packet using the source and destination IP addresses of the end-to-end network flow related to the bundle.
- An IP packet is packet that has an IP head and payload, with a total size that is no more than the size of the maximum transfer unit (MTU) of the path between the hub and spoke byte-caches.
- MTU maximum transfer unit
- the MTU of the end-to-end flow (between server and client) can be smaller than the MTU between the byte-caches.
- IP Routing the bundle packet 514 is forwarded as it was going to be delivered to the destination of the end-to end flow. Once the packet goes through the receiving byte caching device 128 the packet 514 is intercepted. The compressed data is reconstructed by a byte caching manager at the receiving byte caching device 128 as discussed below.
- each compressed packet bundle 514 can fit within a single IP packet. However, if a compressed packet bundle 514 cannot within a single IP packet the bundle is divided in two or more self-contained bundles, with each of them being capable of fitting within an IP packet.
- a self-contained bundle is one that contains enough information to recreate the original data and packets contained in the bundle.
- each compressed packet bundle 514 is encapsulated in one or more IP packets that are transported directly to the receiving byte caching device 128 .
- compressed packet bundles 514 are explicitly sent from one byte-cache device to another, without relying on routing the data towards the destination node of the end-to-end flow.
- This approach assumes a closer integration with the location/routing database of the CNP or availability of a network capable of connecting the two byte caching devices independently.
- this embodiment does not require splitting an IP bundle packet that is bigger than the maximum transfer unit, to smaller self-contained bundle packets, as realizable transport protocols, such as TCP, can be used for transferring the IP bundle packet to the receiving byte-cache device.
- the receiving byte caching device 128 receives a compressed packet bundle 514 it first decompresses the payload data using information from the local cache and then it constructs a number of end-to-end flow packets using the header information of the packet bundle and the decompressed payload data. For example, the receiving byte caching device 128 receives the compressed packet bundle 514 and performs a process similar to that discussed above with respect to the byte caching server 126 .
- the byte caching manager of the receiving byte caching device 128 extracts the signatures Sig_1 503 and Sig_2 505 from the packet 514 . The byte caching manager utilizes these signatures to find the corresponding byte sequences Seq_1 and Seq_2 within its byte cache.
- the byte caching manager also generates the byte sequence and signature for byte sequence Seq_3 507 that is within the packet 514 . This byte sequence and signature are then stored within the byte cache. The byte caching manager then reconstructs the packet using the retrieved byte sequences along with the byte sequence that was within the packet and sends the reconstructed packet to the UE device(s) 108 , 110 .
- one or more embodiments are able to compress payload data that spans across multiple IP packets without the need to split the end-to-end network flow into two or more intermediate flows. Also, bandwidth savings and higher throughput are provided as compared to TCP-layer based byte caching.
- Another advantage is that byte-caching is enabled in the presence of end user mobility exploiting IP layer forwarding/routing mechanisms of the underlying wireless communication network. For example, critical transient considerations are introduced as a mobile travels from one base station to another. Therefore, one or more embodiments ensure that the packet bundling and data transportation operations discussed above are correctly performed under the transient conditions induced by mobility so that the mobile application layer receives correct data as intended by the sender.
- a first situation occurs when the UE device 108 moves from a base station 112 without byte caching to a base station 112 that does support byte caching.
- the byte caching sever 126 detects a base station capable of byte caching and performs the byte caching operations discussed above.
- a second situation occurs when the UE device 108 moves between base stations capable of performing byte caching. In this situation there are three error conditions that are addressed.
- the byte caching sever 126 transforms/compresses a packet bundle, as discussed above, assuming that the UE device 108 is connected to the first base station. However, due to mobility and the L2 forwarding mechanism of the underlying wireless communication network, these packets end up at the second base station.
- the second base station which is capable of byte caching, intercepts these packets determines if it is capable of reconstructing transformed packets, as discussed above. If so, the second base station informs the byte caching sever 126 that packets transformed for the first base station were received by the second base station, reconstructed, and forwarded to the UE device 108 . The second base station also informs the byte caching server 126 that subsequent packets are to be transformed assuming that UE device 108 is attached to the second base station. If the second base station is incapable of reconstructing the packets then the second base station informs the byte caching server 126 that packets transformed for the first base station have been received and also requests the remaining information needed to reconstruct the packets. The byte caching server 126 then sends the remaining information and also determines that subsequent packets are to be transformed assuming that the UE DEVICE 108 is coupled to the second base station.
- a second error condition some IP packets are lost during the transitioning of the UE DEVICE 108 from the first base station to second base station. These IP packets do not reach the second base station (within some time window/trigger). This can occur either because packets were routed to first base station or for some other temporary reason. In this situation, lost packets are recovered by end-to-end transport protocols (e.g., TCP), or not recovered at all if the transport/application protocols do not require recovery.
- the byte caching server 126 receives inconsistent, incomplete or unstable information regarding which base station the UE device 108 is coupled to (e.g. multiple base stations claim that the UE device 108 is connected to them). In this situation, the byte caching server 126 stops byte caching and sends packets without any transformation until the status of the UE device 108 is clear.
- a UE device 108 moves from a first base station 112 that supports byte caching to a second base station 114 that does not support byte-caching.
- three types of errors can occur.
- the byte caching server 126 transforms packets (as discussed above) under the assumption that the UE device 108 is connected to the first base station 112 .
- these packets are received by the second base station 114 .
- the second base station 114 is not byte caching capable and therefore, these packets are forwarded as-is and are received by the UE device 108 .
- the UE device 108 is not be able to associate these packets to any existing flow and discards them. In a worst case scenario, this is treated as packet loss by the sender who then resends these packets. In an alternative embodiment, this is detected by the byte caching server 126 using TCP acknowledgements and/or TCP flags (if the flow is a TCP flow) from the UE device 108 . The byte caching server 126 stops applying byte-caching to that flow.
- a second error condition some IP packets are lost while the UE device 108 transitions from the first base station 112 to the second base station 114 . These packets do not reach the second base station 114 (within sometime window/trigger). In this situation, lost packets are recovered by end-to-end transport protocols (e.g. TCP), or not recovered at all if the transport/application protocols do not require recovery.
- the byte caching server 126 receives inconsistent, incomplete or unstable information regarding which base station the UE device 108 is coupled to (e.g. multiple base stations claim that the UE device 108 is connected to them).
- the byte caching server 126 stops byte caching and sends packets without any transformation until the status of the UE device 108 is clear. It should be noted that while mobility considerations have been discussed above under the assumption that the sender is located in the Internet and receiver is a UE device, similar techniques can be applied to take into account transient conditions due to mobility when the UE device is the sender and receiver is somewhere in the Internet.
- FIG. 8 is an operational flow diagram illustrating one example of performing byte caching in wireless communications network.
- the operational flow diagram of FIG. 8 begins at step 802 and flows directly to step 804 .
- a first byte caching device 128 receives at least one data packet of an end-to-end data flow through an IP tunnel.
- a byte caching manager 202 at the first byte caching device 128 at step 806 , buffers the data packet.
- the byte caching manager 202 determines if a buffering threshold (e.g., time interval, number of buffered packets, etc.) has been reached. If the result of this determination is negative, the control flow returns to step 804 .
- a buffering threshold e.g., time interval, number of buffered packets, etc.
- the byte caching manager 202 determines if a second byte caching device 128 exists on the other end of the data flow. If the result of this determination is negative, the buffered packets, at step 810 , are sent to the destined UE device 108 without any alteration. As discussed above, the byte caching manager 202 caches any byte sequences corresponding to the data packets and/or the signatures of the byte sequences for any payloads (data objects) that have not been previously received. The control flow returns to step 804 .
- the byte caching manager 202 transforms the buffered packets into a packet bundle 414 , as discussed above.
- the byte caching manager 202 performs byte caching operations on the combined payload of the packet bundles 414 . For example, the byte caching manager 202 divides/partitions the combined payload into a plurality of byte sequences/chunks.
- the byte caching manager 202 also generates signatures/fingerprints for each of these sequences and determines if any of the sequences have been previously received.
- the byte caching manager 202 compresses the bundle packet by replacing the byte sequences with their signatures/fingerprints inside the packet bundle 414 .
- a new packet bundle can be created. Any byte sequence that has not been previously received is stored in the byte cache 204 and also maintained within the compressed packet bundle.
- the byte caching manager 202 transports the compressed packet bundle to the second byte caching device 128 using one of IP Routing and IP tunneling. The control flow returns to step 804 .
- FIG. 9 this figure is a block diagram illustrating an information processing system that can be utilized in embodiments of the present invention.
- the information processing system 902 is based upon a suitably configured processing system configured to implement one or more embodiments of the present invention (e.g., byte caching systems/devices 126 , 128 of FIG. 1 ). Any suitably configured processing system can be used as the information processing system 902 in embodiments of the present invention.
- the components of the information processing system 902 can include, but are not limited to, one or more processors or processing units 904 , a system memory 906 , and a bus 908 that couples various system components including the system memory 906 to the processor 904 .
- the bus 908 represents one or more of any of several types of bus structures, including a memory bus or memory controller, a peripheral bus, an accelerated graphics port, and a processor or local bus using any of a variety of bus architectures.
- bus architectures include Industry Standard Architecture (ISA) bus, Micro Channel Architecture (MCA) bus, Enhanced ISA (EISA) bus, Video Electronics Standards Association (VESA) local bus, and Peripheral Component Interconnects (PCI) bus.
- the main memory 906 includes the byte caching manager 202 and byte cache 204 . Each of these components can reside within the processor 904 , or be a separate hardware component.
- the system memory 906 can also include computer system readable media in the form of volatile memory, such as random access memory (RAM) 910 and/or cache memory 912 .
- RAM random access memory
- the information processing system 902 can further include other removable/non-removable, volatile/non-volatile computer system storage media.
- a storage system 914 can be provided for reading from and writing to a non-removable or removable, non-volatile media such as one or more solid state disks and/or magnetic media (typically called a “hard drive”).
- a magnetic disk drive for reading from and writing to a removable, non-volatile magnetic disk e.g., a “floppy disk”
- an optical disk drive for reading from or writing to a removable, non-volatile optical disk such as a CD-ROM, DVD-ROM or other optical media
- each can be connected to the bus 908 by one or more data media interfaces.
- the memory 906 can include at least one program product having a set of program modules that are configured to carry out the functions of an embodiment of the present invention.
- Program/utility 916 having a set of program modules 918 , may be stored in memory 906 by way of example, and not limitation, as well as an operating system, one or more application programs, other program modules, and program data. Each of the operating system, one or more application programs, other program modules, and program data or some combination thereof, may include an implementation of a networking environment.
- Program modules 918 generally carry out the functions and/or methodologies of embodiments of the present invention.
- the information processing system 902 can also communicate with one or more external devices 920 such as a keyboard, a pointing device, a display 922 , etc.; one or more devices that enable a user to interact with the information processing system 902 ; and/or any devices (e.g., network card, modem, etc.) that enable computer system/server 902 to communicate with one or more other computing devices. Such communication can occur via I/O interfaces 924 . Still yet, the information processing system 902 can communicate with one or more networks such as a local area network (LAN), a general wide area network (WAN), and/or a public network (e.g., the Internet) via network adapter 926 .
- LAN local area network
- WAN wide area network
- public network e.g., the Internet
- the network adapter 926 communicates with the other components of information processing system 902 via the bus 908 .
- Other hardware and/or software components can also be used in conjunction with the information processing system 902 . Examples include, but are not limited to: microcode, device drivers, redundant processing units, external disk drive arrays, RAID systems, tape drives, and data archival storage systems.
- aspects of the present invention may be embodied as a system, method, or computer program product. Accordingly, aspects of the present invention may take the form of an entirely hardware embodiment, an entirely software embodiment (including firmware, resident software, micro-code, etc.) or an embodiment combining software and hardware aspects that may all generally be referred to herein as a “circuit,” “module” or “system.” Furthermore, aspects of the present invention may take the form of a computer program product embodied in one or more computer readable medium(s) having computer readable program code embodied thereon.
- the computer readable medium may be a computer readable signal medium or a computer readable storage medium.
- a computer readable storage medium may be, for example, but not limited to, an electronic, magnetic, optical, electromagnetic, infrared, or semiconductor system, apparatus, or device, or any suitable combination of the foregoing.
- a computer readable storage medium may be any tangible medium that can contain, or store a program for use by or in connection with an instruction execution system, apparatus, or device.
- a computer readable signal medium may include a propagated data signal with computer readable program code embodied therein, for example, in baseband or as part of a carrier wave. Such a propagated signal may take any of a variety of forms, including, but not limited to, electro-magnetic, optical, or any suitable combination thereof.
- a computer readable signal medium may be any computer readable medium that is not a computer readable storage medium and that can communicate, propagate, or transport a program for use by or in connection with an instruction execution system, apparatus, or device.
- Program code embodied on a computer readable medium may be transmitted using any appropriate medium, including but not limited to wireless, wireline, optical fiber cable, RF, etc., or any suitable combination of the foregoing.
- Computer program code for carrying out operations for aspects of the present invention may be written in any combination of one or more programming languages, including an object oriented programming language such as Java, Smalltalk, C++ or the like and conventional procedural programming languages, such as the “C” programming language or similar programming languages.
- the program code may execute entirely on the user's computer, partly on the user's computer, as a stand-alone software package, partly on the user's computer and partly on a remote computer or entirely on the remote computer or server.
- the remote computer may be connected to the user's computer through any type of network, including a local area network (LAN) or a wide area network (WAN), or the connection may be made to an external computer (for example, through the Internet using an Internet Service Provider).
- LAN local area network
- WAN wide area network
- Internet Service Provider for example, AT&T, MCI, Sprint, EarthLink, MSN, GTE, etc.
- These computer program instructions may also be stored in a computer readable medium that can direct a computer, other programmable data processing apparatus, or other devices to function in a particular manner, such that the instructions stored in the computer readable medium produce an article of manufacture including instructions which implement the function/act specified in the flowchart and/or block diagram block or blocks.
- the computer program instructions may also be loaded onto a computer, other programmable data processing apparatus, or other devices to cause a series of operational steps to be performed on the computer, other programmable apparatus or other devices to produce a computer implemented process such that the instructions which execute on the computer or other programmable apparatus provide processes for implementing the functions/acts specified in the flowchart and/or block diagram block or blocks.
Landscapes
- Engineering & Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Computer Hardware Design (AREA)
- Computer Security & Cryptography (AREA)
- Computing Systems (AREA)
- General Engineering & Computer Science (AREA)
- Mobile Radio Communication Systems (AREA)
- Data Exchanges In Wide-Area Networks (AREA)
Abstract
Description
- The present invention generally relates to network data transmission, and more particularly relates to byte caching in wireless communication networks.
- A key problem with communication via mobile networks is the rapid increase of data traffic. The density of mobile computing platforms is increasing at an exponential rate. Mobile computing platforms include traditional platforms such as phones, tablets and mobile broadband enabled laptops but increasingly also mobile data enabled devices, such as GPS systems, cars, even mobile medical equipment. This exponential increase brings significant new challenges for Mobile Network Operators (MNOs) as data becomes the majority of the content they deliver. Specifically although additional base stations are fairly easy to deploy to increase the available aggregate “air interface” bandwidth, the connections back from the base stations to the radio network controller (RNC), typically implemented as microwave links, are bandwidth constrained. Upgrading these connections to fiber optic connections is very expensive. Similarly increasing the available bandwidth in the RNC and core network is expensive as well.
- In one embodiment, a computer program storage product for performing byte caching in a wireless communication network device with a first byte caching system is disclosed. The computer program storage product comprising instructions configured to perform a method. The method comprises receiving a plurality of data packets through an internet protocol (IP) data flow established between a wireless communication device and at least one server. Each of the plurality of data packets are combined into a packet bundle. A determination is made as to whether a second byte caching system is available. The packet bundle is transformed using one or more byte caching operations based on a second byte caching system being available. The transformed packet bundle is sent to the second byte caching system using an IP communication mechanism.
- In another embodiment, a byte caching system for performing byte caching in a wireless communication network device is disclosed. The byte caching system comprises a memory and a processor that is communicatively coupled to the memory. A byte caching manager is communicatively coupled to the memory and the processor. The byte caching manager is configured to perform a method. The method comprises receiving a plurality of data packets through an Internet protocol (IP) data flow established between a wireless communication device and at least one server. Each of the plurality of data packets are combined into a packet bundle. A determination is made as to whether a second byte caching system is available. The packet bundle is transformed using one or more byte caching operations based on a second byte caching system being available. The transformed packet bundle is sent to the second byte caching system using an IP communication mechanism.
- The accompanying figures where like reference numerals refer to identical or functionally similar elements throughout the separate views, and which together with the detailed description below are incorporated in and form part of the specification, serve to further illustrate various embodiments and to explain various principles and advantages all in accordance with the present invention, in which:
-
FIG. 1 is a block diagram illustrating one example of an operating environment according to one embodiment of the present invention; -
FIG. 2 is a block diagram illustrating a detailed view of a byte caching system according to one embodiment of the present invention; -
FIG. 3 shows one example of a performing byte caching on a data packet according to one embodiment of the present invention; -
FIG. 4 shows one example transforming a plurality of data packets into a packet bundle according to one embodiment of the present invention; -
FIG. 5 shows one example of compressing a packet bundle using byte caching according to one embodiment of the present invention; -
FIG. 6 shows the protocol encapsulations for IP routing according to one embodiment of the present invention; -
FIG. 7 shows the protocol encapsulations for IP Tunneling according to one embodiment of the present invention; -
FIG. 8 is an operational flow diagram illustrating one example of byte caching in a wireless communication network according to one embodiment of the present invention; and -
FIG. 9 is a block diagram illustrating one example of an information processing system according to one embodiment of the present invention. - Operating Environment
-
FIG. 1 shows anoperating environment 100 according to one embodiment of the present invention. Theoperating environment 100 comprises one or morewireless communication networks 102 that are communicatively coupled to one or morewire line networks 104. For purposes of simplicity, only the portions of these networks that are relevant to embodiments of the present invention are described. Thewire line network 104 acts as a back-end for thewireless communication network 102. In this embodiment, thewire line network 104 comprises one or more access/core networks of thewireless communication network 102 and one or more Internet Protocol (IP) networks such as the Internet. Thewire line network 104 communicatively couples one or more content sources/providers, such as a server(s) 106, to thewireless communication network 102. In further embodiments, the back-end is not a wire line network. For example, in one embodiment the back-end is a wireless network and takes the form of a point-to-point back-end network such as a directional microwave network used to transmit and receive signals bi-directionally. Alternatively, the back-end takes the form of a network of peers in which a mobile base station (e.g., eNode B in the case of GSM and its descendants) is itself used as a back-end network for other base stations. - The
wireless communication network 102 supports any wireless communication standard such as, but not limited to, Global System for Mobile Communications (GSM), Code Division Multiple Access (CDMA), Time Division Multiple Access (TDMA), General Packet Radio Service (GPRS), Frequency Division Multiple Access (FDMA), Orthogonal Frequency Division Multiplexing (OFDM), or the like. Thewireless communication network 102 includes one or more networks based on such standards. For example, in one embodiment, thewireless communication network 102 comprises one or more of a Long Term Evolution (LTE) network, an Evolution Data Only (EV-DO) network, a GPRS network, a Universal Mobile Telecommunications System (UMTS) network, and the like. -
FIG. 1 further shows that one or more user devices (also referred to herein as “user equipment (UE)”) 108, 110 are communicatively coupled to thewireless communication network 102. The UEdevices devices wireless communication network 102 through one ormore transceiver nodes more air interfaces 116 established between the UEdevices transceiver node - In another embodiment, one or
more UE devices wireless communication network 102 via a wired network and/or a non-cellular wireless network such as, but not limited to, a Wireless Fidelity (WiFi) network. For example, the UEdevices devices wireless communication network 102. This gateway device(s), in this embodiment, communicates with thewireless communication network 102 via wired and/or wireless communication mechanisms. - The UE
devices wireless communication network 102 to send/receive voice and data communications to/from thewireless communication network 104. For example, the UEdevices server 106, through thewireless communication network 102. The requested content/service is delivered to thewireless communication network 102 through thewire line network 104. - A
transceiver node wireless communication network 104. Throughout this discussion atransceiver node base station more base station - The
RNC 118 can be included within or separate from abase station B base stations RNC 118 over abackhaul link 120. In the current example, abase station several RNCs 118. TheSGSN 122 is communicatively coupled to Gateway GPRS Support Node (GGSN) 124, which communicates with the operator's service network (not shown). The operator's service network connects to the Internet at a peering point. It should be noted that even though UMTS components are illustrated inFIG. 1 embodiments of the present invention are applicable to other wireless communication technologies as well. - In one example, the communication protocols between the
UE devices GGSN 124 are various 3rd Generation Partnership Project (3GPP) protocols over which the internet protocol (IP) traffic from theUE devices RNC 118 and theGGSN 124. A standard Internet Protocol (IP) is utilized between theGGSN 124 and thewire line network 104. The server(s) 106 has a TCP (Transmission Control Protocol) socket that communicates with a TCP socket at theUE devices server 106. An IP tunnel is created from the GGSN 251 toUE devices RNC 118 and theSGSN 122. - As noted above, increased data traffic in wireless communication networks can cause congested links and degraded network performance. Therefore, one or more embodiments of the present invention implement two or more byte caching devices/
systems base stations byte caching devices byte caching devices devices byte caching device - In one embodiment, a hub and spoke arrangement is utilized for the
byte caching devices byte caching components 126 are located deeper in the wireless communication infrastructure and each are paired with one or more spokebyte caching components 128 within or coupled to thebase stations FIG. 1 shows a hub orbyte caching server 126 disposed between thewire line network 104 and the GGSN 124 (e.g., the point where the network connects to the peering point with the Internet). Thebyte caching server 126 operates as a conventional transparent transfer protocol proxy but has additional byte caching behavior as discussed below.FIG. 1 further shows at least one spoke orbyte caching device 128 is disposed (or coupled to) one ormore base stations component 128 includes breakout and byte cache functionality to optimize data transfer. Thisbyte caching component 128 manipulates the transfer protocol connection between theUE devices -
FIG. 2 shows a more detailed view of abyte caching system 200 such as thebyte caching server 126 or theBCNB 128. In particular,FIG. 2 shows that, in one embodiment, thebyte caching system 200 comprises abyte caching manager 202 and abyte cache 204. Thebyte caching manager 202 manages byte caching operations at thebyte caching system 200. Thebyte cache 204 is a memory cache or any other type of storage component that stores byte sequences of data objects within data packets and their signatures/hashes. - The
byte caching manager 202 comprises apacket manager 206, asequencing manager 212, and asignature manager 214. Thepacket manager 206 comprises anencoder 208 and adecoder 210. Theencoder 208 encodes data packets for transmission to a destination node. Thedecoder 210 decodes packets received by thebyte caching system 200 for processing thereof. It should be noted thatpacket manager 206 can also include any other hardware and/or software for receiving, sending, and managing data packets. Thebyte caching manager 202, in one embodiment, comprises asequencing manager 212 and asignature manager 214. Thesequencing manager 212 divides/partitions the data object into a plurality of byte sequences 216 (also referred to as “chunks” or “object sequences”). Thesignature manager 214 calculates a signature orfingerprint 218 for each ofobject sequences 216 created by thesequencing manager 212. The signature/fingerprint 218 can be a hash value or any other data that can uniquely identify the object chunk. Thebyte cache 204 stores theobject sequences 216 and/or thesignatures 218 of thesequences 216. - Byte Caching For Wireless Communication Networks
- As discussed above, one or more embodiments implement the
byte caching devices wireless communication network 102. As will be discussed in greater detail below, thebyte caching devices UE device byte caching systems UE device - The
UE device 108 establishes an IP tunnel with thewireless communications network 102 in a conventional manner. For example, theUE device 108 makes a TCP connection to a port (e.g., port 80) at aserver 106 it wishes to receive data from. This TCP connection is transparently proxied by thebyte caching server 126. Once theUE device 108 establishes an IP tunnel thebyte caching manager 202 at thebyte caching server 126 determines whether or not thebase station 112 coupled to theUE device 108 is associated with abyte caching device 126. For example, a mapping of flows from the hubbyte caching device 128 to spokebyte caching devices 128 can be maintained through various mechanisms. One example of a mapping mechanism is given in the commonly owned U.S. Patent Application No. ______ (Attorney Docket No. YOR920120544US1) entitled “Mobility Detection For Edge Applications In Wireless Communication Networks”, filed on ______, the entire disclosure of which is hereby incorporated by reference in its entirety. - In addition, the
byte caching server 126 can maintain a list ofbase stations 112 that are associated with abyte caching device 128. When theUE device 108 establishes the IP tunnel thebase station 112 can identify itself to thebyte caching server 126. Thebyte caching manager 202 at thebyte caching server 126 compares an identifier received from base station to the list and determines if thebase station 112 coupled to theUE device 108 is associated with a byte caching device. In another example, abyte caching device 128 signals to the byte caching sever 126 that it is present in the data path. In one embodiment, this signaling is provided by modifying the TCP header of the TCP packet to insert a marker TCP option into the options field in the TCP header. Thebyte caching server 126 intercepts these added TCP options, interprets, and removes them. Alternative embodiments of this feature include sending marker IP datagrams or modifying the IP header of the TCP packets. If thebyte caching server 126 does not receive a signal from abyte caching component 128 within a given amount of time thebyte caching manager 202 at thebyte caching server 126 determines that thebase station 112 is not associated with abyte caching device 128 or that the byte device component is unavailable. - If the
byte caching manager 202 determines that thebase station 112 is not associated with abyte caching device 128 or that thebyte caching device 128 is unavailable thebyte caching server 126 does not alter any data packets received from theserver 106 destined for reception by theUE device byte caching server 126 still examines the data packets, calculates signatures/fingerprints, and stores away chunks of the data object(s) within the data packet(s) in thebyte cache 204, which can be on their signature/fingerprint. - For example, the
packet manager 206 sends the received packets to thesequencing manager 212 of thebyte caching manager 202. Thesequencing manager 212 divides/partitions the data payload 304 (e.g., data object(s)) of thedata packet 302 into a plurality of byte sequences (e.g., sections/chunks) 306, 308, as shown inFIG. 3 . Once thesequencing manager 212 has divided/separated thedata packet 302 into a plurality ofbyte sequences 306, 308 thesignature manager 214 calculates a signature/fingerprint byte sequences 306, 308. A signature/fingerprint 306, 308 can be a hash value or any other data that can uniquely identify a sequence/chunk. Thebyte caching manager 202 then compares thebyte sequences 306, 308 tobyte sequences 216 stored within thebyte cache 204 to determine if the data object(s) 304 within thedata packet 302 has been previously received. If a match exists this indicates that the same data object has been previously received and thematching byte sequences 306, 308 and theirsignatures byte cache 204 at does not comprise thebyte sequences 306, 308 (orsignatures 310, 312) this indicates that thisdata object 304 has not been previously received by the byte caching sever 126 and thebyte sequences 306, 308 and/or theirsignatures byte cache 204. - It should be noted that the
byte caching manager 202 can also utilize thesignatures byte cache 204 along with the byte sequences. If thebyte caching manager 202 determines that signatures exist within thebyte cache 204 that match the generated signatures then this indicates that the data object has been previously received and is stored within the byte cache of a spoke byte caching device as well. Once the byte caching manger stores the byte sequences in the byte cache or determines that the byte sequences have been previously stored in the byte cache the byte caching server sends the data packet onward to theUE device - If the byte caching manager determines that the
base station 112 is associated with abyte caching device 128 that is available for byte caching operations, thebyte caching server 126 performs packet bundling, data transformation, and data transportation operations. With respect to packet bundling, thepacket manager 206 at the byte caching sever 126 stores the data packets belonging to the same end-to-end network flow in a local buffer (not shown) for a given period of time, which can depend on the round-trip time of the end-to-end flow. The storage of received bytes in a temporary buffer allows the byte caching sever 126 to process the bytes and to eliminate redundancy across the boundaries of data packets. In other words, sequences can expand across multiple packets. Thepacket manager 206 orders the buffered data packets based on the way those packets were generated by the end nodes (e.g., server 106). For example, in a TCP flow, packets may be ordered by using the sequence number information attached on every TCP header. It should be noted that the ordering by TCP sequence number is not necessary since this is an IP Layer implementation. However, the ordering can still be performed to the extent possible given the constraints of buffering so that better bandwidth savings can be achieved (out of sequence bundling reduces chances of a future match of a long sequence of bytes). - Once a given number of packets have been buffered or a given buffering time period has been reached the
packet manager 206 concatenates and combines the payload (data objects) of the buffered data packets into a larger data unit referred to as a “packet bundle”, as shown inFIG. 4 . For example,FIG. 4 shows a plurality of buffereddata packets data packets FIG. 4 also shows apacket bundle 414 comprising a concatenated/combinedpayload 416 created from the payloads) 408, 410, 412 of the buffereddata packets - Each
packet bundle 414 comprises someadditional header information 418 that enables the correct reconstruction of the original application data. The header information comprises the transport header information of all the packets combined in the packet bundle. This header information can be compressed using standard compression techniques, such as Lempel-Ziv-Welch compression, or other compression techniques taking advantage of transport layer protocol knowledge. For example in the case of TCP flows, the header contains the TCP sequence number of the first byte of the concatenated data in the packet bundle. Other information within the bundle header can include acknowledged sequence number(s), set TCP flags, etc. Valid end-to-end flow packets can be reconstructed using theheader information 418. Note that the reconstructed packets may not necessarily be the same as the original packets. However, the application layer data should be the same as the original date and they should be delivered in the order generated by the application. - Once a
packet bundle 414 is created the combinedpayload 416 within thebundle 414 is compressed by thebyte caching manager 202. Various compression techniques can be used. In one embodiment, the selection of the compression technique depends on the capabilities of the receiving byte-cachingdevice 128 that the end-to-end flow goes through. As discussed above, if a receiving byte caching device does not exist in the end-to-end flow or is not available the bundling and compression operations are not performed. - If there is a receiving byte-caching
device 128 along the path of the end-to-end flow the combinedpayload data 416 in thebundle 414 is compressed based on the cache content of thatdevice 128, as shown inFIG. 5 . For example, similar to the process discussed above, thesequencing manager 212 divides/separates thepayload 416 of thepacket bundle 414 into a plurality of byte sequences. Thesignature manager 214 then calculates a signature/fingerprint for each of the byte sequences. As discussed above, a signature/fingerprint can be a hash value or any other data that can uniquely identify the object chunk. - The
byte caching manager 202 then compares the byte sequences and/or the signatures to the sequences and/or signatures within thebyte cache 204, as discussed above. If a match exists this indicates that the same payload (or portion of the payload) has been previously received and transmitted to the receivingbyte caching device 128. A match also indicates that the byte sequences are stored within the byte cache of the receivingbyte caching device 128 since it is part of the same byte caching environment as thebyte caching server 126. If thebyte cache 204 at thebyte caching server 126 does not comprise the byte sequences (or signatures) this indicates that this payload (or portion of the payload) has not been previously received by thebyte caching server 126. It should be noted that thebyte caching manager 202 can also utilize the signatures to determine if the payload (or portion of the payload) has been previously received, as discussed above. - If the
byte caching manager 202 does not identify any sequences/signatures corresponding to the payload (or portion of the payload) thebyte caching manager 202 determines that this payload (or portion of the payload) has not been previously received and transmitted to the receivingbyte caching device 128. Therefore, thebyte caching manager 202 stores the byte sequences of the payload (or portion of the payload) and its signature(s) within thebyte cache 204. In an alternative embodiment only the signature(s) is stored within thebyte cache 204. Thepackage manager 202 then transmitspacket bundle 414 to the receivingbyte caching device 128. - However, if the
byte caching manager 202 identifies a match for at least one of the sequences (or signatures) thebyte caching manager 202 determines that the payload (or portion thereof) in thepacket bundle 414 was previously received and sent to the receivingbyte caching device 128. For example, consider three byte sequences, Seq_1, Seq_2, and Seq_3. Thebyte caching manager 202 determines that a match for byte sequences Seq_1 and Seq_2 exists within thebyte cache 204. Thebyte caching manager 202 also determines that a match does not exist within thebyte cache 204 for Seq_3. Therefore, thebyte caching manager 202 determines a portion of the combinedpayload 414 has been a previously received payload and another portion of the combinedpayload 414 is new. The new portion, e.g., Seq_3, and its signature, e.g., Sig_3 are stored within thebyte cache 204. Acompressed packet bundle 514 is generated, as shown inFIG. 5 , by encoding thepacket bundle 514 with the signatures Sig_1 503 andSig_2 505 for sequence Seq_1 and Seq_2 along with thebyte sequence Seq_3 507. The encodedpacket bundle 514 is acompressed packet bundle 414 since it only includes the signatures Sig_1 503 andSig_2 505 for sequence Seq_1 and Seq_2 as compared to comprising the actual sequences Seq_1 and Seq_2. - The compressed payload data 516 and the packet
bundle header information 518 are then transported to that receiving byte-cache device 128. It should be noted that eachcompressed packet bundle 514 is a self-contained data unit. Stated different, the original data (i.e., uncompressed data) as well as the original packets combined in the bundle can be recovered by using only information present in thebundle 514 and a local byte cache. Thecompressed packet bundle 514 does not explicitly refer to data in other bundles, although the compressed packet bundle can implicitly refer to data in other bundles if that data has not been stored in a local byte cache. - Compressed packet bundles 514 are transported from the byte caching server 126 (e.g., the encoder) to the receiving byte caching device 128 (e.g., the decoder), using either IP Routing or IP Tunneling.
FIG. 6 shows the protocol encapsulations for IP routing andFIG. 7 shows the protocol encapsulations for IP Tunneling. If IP Routing is utilized eachcompressed packet bundle 514 is encapsulated within one IP packet using the source and destination IP addresses of the end-to-end network flow related to the bundle. An IP packet is packet that has an IP head and payload, with a total size that is no more than the size of the maximum transfer unit (MTU) of the path between the hub and spoke byte-caches. The MTU of the end-to-end flow (between server and client) can be smaller than the MTU between the byte-caches. When IP Routing is utilized thebundle packet 514 is forwarded as it was going to be delivered to the destination of the end-to end flow. Once the packet goes through the receivingbyte caching device 128 thepacket 514 is intercepted. The compressed data is reconstructed by a byte caching manager at the receivingbyte caching device 128 as discussed below. In this example, eachcompressed packet bundle 514 can fit within a single IP packet. However, if acompressed packet bundle 514 cannot within a single IP packet the bundle is divided in two or more self-contained bundles, with each of them being capable of fitting within an IP packet. A self-contained bundle is one that contains enough information to recreate the original data and packets contained in the bundle. - If IP Tunneling is utilized each
compressed packet bundle 514 is encapsulated in one or more IP packets that are transported directly to the receivingbyte caching device 128. In this embodiment, compressed packet bundles 514 are explicitly sent from one byte-cache device to another, without relying on routing the data towards the destination node of the end-to-end flow. This approach assumes a closer integration with the location/routing database of the CNP or availability of a network capable of connecting the two byte caching devices independently. Also, this embodiment does not require splitting an IP bundle packet that is bigger than the maximum transfer unit, to smaller self-contained bundle packets, as realizable transport protocols, such as TCP, can be used for transferring the IP bundle packet to the receiving byte-cache device. - Once the receiving
byte caching device 128 receives acompressed packet bundle 514 it first decompresses the payload data using information from the local cache and then it constructs a number of end-to-end flow packets using the header information of the packet bundle and the decompressed payload data. For example, the receivingbyte caching device 128 receives thecompressed packet bundle 514 and performs a process similar to that discussed above with respect to thebyte caching server 126. The byte caching manager of the receivingbyte caching device 128 extracts the signatures Sig_1503 andSig_2 505 from thepacket 514. The byte caching manager utilizes these signatures to find the corresponding byte sequences Seq_1 and Seq_2 within its byte cache. The byte caching manager also generates the byte sequence and signature forbyte sequence Seq_3 507 that is within thepacket 514. This byte sequence and signature are then stored within the byte cache. The byte caching manager then reconstructs the packet using the retrieved byte sequences along with the byte sequence that was within the packet and sends the reconstructed packet to the UE device(s) 108, 110. - By using the above unique packet combination/transformation/transportation process one or more embodiments are able to compress payload data that spans across multiple IP packets without the need to split the end-to-end network flow into two or more intermediate flows. Also, bandwidth savings and higher throughput are provided as compared to TCP-layer based byte caching.
- Mobility
- Another advantage is that byte-caching is enabled in the presence of end user mobility exploiting IP layer forwarding/routing mechanisms of the underlying wireless communication network. For example, critical transient considerations are introduced as a mobile travels from one base station to another. Therefore, one or more embodiments ensure that the packet bundling and data transportation operations discussed above are correctly performed under the transient conditions induced by mobility so that the mobile application layer receives correct data as intended by the sender.
- A first situation occurs when the
UE device 108 moves from abase station 112 without byte caching to abase station 112 that does support byte caching. In this situation, the byte caching sever 126 detects a base station capable of byte caching and performs the byte caching operations discussed above. A second situation occurs when theUE device 108 moves between base stations capable of performing byte caching. In this situation there are three error conditions that are addressed. In the first error condition, the byte caching sever 126 transforms/compresses a packet bundle, as discussed above, assuming that theUE device 108 is connected to the first base station. However, due to mobility and the L2 forwarding mechanism of the underlying wireless communication network, these packets end up at the second base station. The second base station, which is capable of byte caching, intercepts these packets determines if it is capable of reconstructing transformed packets, as discussed above. If so, the second base station informs the byte caching sever 126 that packets transformed for the first base station were received by the second base station, reconstructed, and forwarded to theUE device 108. The second base station also informs thebyte caching server 126 that subsequent packets are to be transformed assuming thatUE device 108 is attached to the second base station. If the second base station is incapable of reconstructing the packets then the second base station informs thebyte caching server 126 that packets transformed for the first base station have been received and also requests the remaining information needed to reconstruct the packets. Thebyte caching server 126 then sends the remaining information and also determines that subsequent packets are to be transformed assuming that theUE DEVICE 108 is coupled to the second base station. - In a second error condition, some IP packets are lost during the transitioning of the
UE DEVICE 108 from the first base station to second base station. These IP packets do not reach the second base station (within some time window/trigger). This can occur either because packets were routed to first base station or for some other temporary reason. In this situation, lost packets are recovered by end-to-end transport protocols (e.g., TCP), or not recovered at all if the transport/application protocols do not require recovery. In a third error condition, thebyte caching server 126 receives inconsistent, incomplete or unstable information regarding which base station theUE device 108 is coupled to (e.g. multiple base stations claim that theUE device 108 is connected to them). In this situation, thebyte caching server 126 stops byte caching and sends packets without any transformation until the status of theUE device 108 is clear. - In a third situation, a
UE device 108 moves from afirst base station 112 that supports byte caching to asecond base station 114 that does not support byte-caching. In this situation three types of errors can occur. In a first error condition, thebyte caching server 126 transforms packets (as discussed above) under the assumption that theUE device 108 is connected to thefirst base station 112. However, because of mobility and the L2 forwarding mechanism of the underlying wireless communication network, these packets are received by thesecond base station 114. Thesecond base station 114 is not byte caching capable and therefore, these packets are forwarded as-is and are received by theUE device 108. However, due to the unique port numbers and/or manipulations in the packet header used, theUE device 108 is not be able to associate these packets to any existing flow and discards them. In a worst case scenario, this is treated as packet loss by the sender who then resends these packets. In an alternative embodiment, this is detected by thebyte caching server 126 using TCP acknowledgements and/or TCP flags (if the flow is a TCP flow) from theUE device 108. Thebyte caching server 126 stops applying byte-caching to that flow. - In a second error condition, some IP packets are lost while the
UE device 108 transitions from thefirst base station 112 to thesecond base station 114. These packets do not reach the second base station 114 (within sometime window/trigger). In this situation, lost packets are recovered by end-to-end transport protocols (e.g. TCP), or not recovered at all if the transport/application protocols do not require recovery. In a third error condition, thebyte caching server 126 receives inconsistent, incomplete or unstable information regarding which base station theUE device 108 is coupled to (e.g. multiple base stations claim that theUE device 108 is connected to them). In this situation, thebyte caching server 126 stops byte caching and sends packets without any transformation until the status of theUE device 108 is clear. It should be noted that while mobility considerations have been discussed above under the assumption that the sender is located in the Internet and receiver is a UE device, similar techniques can be applied to take into account transient conditions due to mobility when the UE device is the sender and receiver is somewhere in the Internet. - Operational Flow Diagrams
-
FIG. 8 is an operational flow diagram illustrating one example of performing byte caching in wireless communications network. The operational flow diagram ofFIG. 8 begins atstep 802 and flows directly to step 804. A firstbyte caching device 128, atstep 804, receives at least one data packet of an end-to-end data flow through an IP tunnel. Abyte caching manager 202 at the firstbyte caching device 128, at step 806, buffers the data packet. Thebyte caching manager 202, atstep 808, determines if a buffering threshold (e.g., time interval, number of buffered packets, etc.) has been reached. If the result of this determination is negative, the control flow returns to step 804. If the result of this determination is positive, thebyte caching manager 202, atstep 809, determines if a secondbyte caching device 128 exists on the other end of the data flow. If the result of this determination is negative, the buffered packets, atstep 810, are sent to thedestined UE device 108 without any alteration. As discussed above, thebyte caching manager 202 caches any byte sequences corresponding to the data packets and/or the signatures of the byte sequences for any payloads (data objects) that have not been previously received. The control flow returns to step 804. - If the result of the determination at
step 809 is positive, thebyte caching manager 202, atstep 812, transforms the buffered packets into apacket bundle 414, as discussed above. Thebyte caching manager 202, atstep 814, performs byte caching operations on the combined payload of the packet bundles 414. For example, thebyte caching manager 202 divides/partitions the combined payload into a plurality of byte sequences/chunks. Thebyte caching manager 202 also generates signatures/fingerprints for each of these sequences and determines if any of the sequences have been previously received. If so, thebyte caching manager 202 compresses the bundle packet by replacing the byte sequences with their signatures/fingerprints inside thepacket bundle 414. Alternatively, a new packet bundle can be created. Any byte sequence that has not been previously received is stored in thebyte cache 204 and also maintained within the compressed packet bundle. Thebyte caching manager 202, atstep 816, transports the compressed packet bundle to the secondbyte caching device 128 using one of IP Routing and IP tunneling. The control flow returns to step 804. - Information Processing System
- Referring now to
FIG. 9 , this figure is a block diagram illustrating an information processing system that can be utilized in embodiments of the present invention. Theinformation processing system 902 is based upon a suitably configured processing system configured to implement one or more embodiments of the present invention (e.g., byte caching systems/devices FIG. 1 ). Any suitably configured processing system can be used as theinformation processing system 902 in embodiments of the present invention. The components of theinformation processing system 902 can include, but are not limited to, one or more processors orprocessing units 904, asystem memory 906, and abus 908 that couples various system components including thesystem memory 906 to theprocessor 904. - The
bus 908 represents one or more of any of several types of bus structures, including a memory bus or memory controller, a peripheral bus, an accelerated graphics port, and a processor or local bus using any of a variety of bus architectures. By way of example, and not limitation, such architectures include Industry Standard Architecture (ISA) bus, Micro Channel Architecture (MCA) bus, Enhanced ISA (EISA) bus, Video Electronics Standards Association (VESA) local bus, and Peripheral Component Interconnects (PCI) bus. - Although not shown in
FIG. 9 , themain memory 906 includes thebyte caching manager 202 andbyte cache 204. Each of these components can reside within theprocessor 904, or be a separate hardware component. Thesystem memory 906 can also include computer system readable media in the form of volatile memory, such as random access memory (RAM) 910 and/orcache memory 912. Theinformation processing system 902 can further include other removable/non-removable, volatile/non-volatile computer system storage media. By way of example only, astorage system 914 can be provided for reading from and writing to a non-removable or removable, non-volatile media such as one or more solid state disks and/or magnetic media (typically called a “hard drive”). A magnetic disk drive for reading from and writing to a removable, non-volatile magnetic disk (e.g., a “floppy disk”), and an optical disk drive for reading from or writing to a removable, non-volatile optical disk such as a CD-ROM, DVD-ROM or other optical media can be provided. In such instances, each can be connected to thebus 908 by one or more data media interfaces. Thememory 906 can include at least one program product having a set of program modules that are configured to carry out the functions of an embodiment of the present invention. - Program/
utility 916, having a set ofprogram modules 918, may be stored inmemory 906 by way of example, and not limitation, as well as an operating system, one or more application programs, other program modules, and program data. Each of the operating system, one or more application programs, other program modules, and program data or some combination thereof, may include an implementation of a networking environment.Program modules 918 generally carry out the functions and/or methodologies of embodiments of the present invention. - The
information processing system 902 can also communicate with one or moreexternal devices 920 such as a keyboard, a pointing device, adisplay 922, etc.; one or more devices that enable a user to interact with theinformation processing system 902; and/or any devices (e.g., network card, modem, etc.) that enable computer system/server 902 to communicate with one or more other computing devices. Such communication can occur via I/O interfaces 924. Still yet, theinformation processing system 902 can communicate with one or more networks such as a local area network (LAN), a general wide area network (WAN), and/or a public network (e.g., the Internet) vianetwork adapter 926. As depicted, thenetwork adapter 926 communicates with the other components ofinformation processing system 902 via thebus 908. Other hardware and/or software components can also be used in conjunction with theinformation processing system 902. Examples include, but are not limited to: microcode, device drivers, redundant processing units, external disk drive arrays, RAID systems, tape drives, and data archival storage systems. - Non-Limiting Examples
- As will be appreciated by one skilled in the art, aspects of the present invention may be embodied as a system, method, or computer program product. Accordingly, aspects of the present invention may take the form of an entirely hardware embodiment, an entirely software embodiment (including firmware, resident software, micro-code, etc.) or an embodiment combining software and hardware aspects that may all generally be referred to herein as a “circuit,” “module” or “system.” Furthermore, aspects of the present invention may take the form of a computer program product embodied in one or more computer readable medium(s) having computer readable program code embodied thereon.
- Any combination of one or more computer readable medium(s) may be utilized. The computer readable medium may be a computer readable signal medium or a computer readable storage medium. A computer readable storage medium may be, for example, but not limited to, an electronic, magnetic, optical, electromagnetic, infrared, or semiconductor system, apparatus, or device, or any suitable combination of the foregoing. More specific examples (a non-exhaustive list) of the computer readable storage medium would include the following: an electrical connection having one or more wires, a portable computer diskette, a hard disk, a random access memory (RAM), a read-only memory (ROM), an erasable programmable read-only memory (EPROM or Flash memory), an optical fiber, a portable compact disc read-only memory (CD-ROM), an optical storage device, a magnetic storage device, or any suitable combination of the foregoing. In the context of this document, a computer readable storage medium may be any tangible medium that can contain, or store a program for use by or in connection with an instruction execution system, apparatus, or device.
- A computer readable signal medium may include a propagated data signal with computer readable program code embodied therein, for example, in baseband or as part of a carrier wave. Such a propagated signal may take any of a variety of forms, including, but not limited to, electro-magnetic, optical, or any suitable combination thereof. A computer readable signal medium may be any computer readable medium that is not a computer readable storage medium and that can communicate, propagate, or transport a program for use by or in connection with an instruction execution system, apparatus, or device.
- Program code embodied on a computer readable medium may be transmitted using any appropriate medium, including but not limited to wireless, wireline, optical fiber cable, RF, etc., or any suitable combination of the foregoing.
- Computer program code for carrying out operations for aspects of the present invention may be written in any combination of one or more programming languages, including an object oriented programming language such as Java, Smalltalk, C++ or the like and conventional procedural programming languages, such as the “C” programming language or similar programming languages. The program code may execute entirely on the user's computer, partly on the user's computer, as a stand-alone software package, partly on the user's computer and partly on a remote computer or entirely on the remote computer or server. In the latter scenario, the remote computer may be connected to the user's computer through any type of network, including a local area network (LAN) or a wide area network (WAN), or the connection may be made to an external computer (for example, through the Internet using an Internet Service Provider).
- Aspects of the present invention have been discussed above with reference to flowchart illustrations and/or block diagrams of methods, apparatus (systems) and computer program products according to various embodiments of the invention. It will be understood that each block of the flowchart illustrations and/or block diagrams, and combinations of blocks in the flowchart illustrations and/or block diagrams, can be implemented by computer program instructions. These computer program instructions may be provided to a processor of a general purpose computer, special purpose computer, or other programmable data processing apparatus to produce a machine, such that the instructions, which execute via the processor of the computer or other programmable data processing apparatus, create means for implementing the functions/acts specified in the flowchart and/or block diagram block or blocks.
- These computer program instructions may also be stored in a computer readable medium that can direct a computer, other programmable data processing apparatus, or other devices to function in a particular manner, such that the instructions stored in the computer readable medium produce an article of manufacture including instructions which implement the function/act specified in the flowchart and/or block diagram block or blocks.
- The computer program instructions may also be loaded onto a computer, other programmable data processing apparatus, or other devices to cause a series of operational steps to be performed on the computer, other programmable apparatus or other devices to produce a computer implemented process such that the instructions which execute on the computer or other programmable apparatus provide processes for implementing the functions/acts specified in the flowchart and/or block diagram block or blocks.
- The terminology used herein is for the purpose of describing particular embodiments only and is not intended to be limiting of the invention. As used herein, the singular forms “a”, “an” and “the” are intended to include the plural forms as well, unless the context clearly indicates otherwise. It will be further understood that the terms “comprises” and/or “comprising,” when used in this specification, specify the presence of stated features, integers, steps, operations, elements, and/or components, but do not preclude the presence or addition of one or more other features, integers, steps, operations, elements, components, and/or groups thereof.
- The description of the present invention has been presented for purposes of illustration and description, but is not intended to be exhaustive or limited to the invention in the form disclosed. Many modifications and variations will be apparent to those of ordinary skill in the art without departing from the scope and spirit of the invention. The embodiment was chosen and described in order to best explain the principles of the invention and the practical application, and to enable others of ordinary skill in the art to understand the invention for various embodiments with various modifications as are suited to the particular use contemplated.
Claims (20)
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US15/007,321 US10171616B2 (en) | 2012-08-31 | 2016-01-27 | Byte caching in wireless communication networks |
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US13/601,306 US9351196B2 (en) | 2012-08-31 | 2012-08-31 | Byte caching in wireless communication networks |
US13/768,433 US9288718B2 (en) | 2012-08-31 | 2013-02-15 | Byte caching in wireless communication networks |
US15/007,321 US10171616B2 (en) | 2012-08-31 | 2016-01-27 | Byte caching in wireless communication networks |
Related Parent Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
US13/768,433 Continuation US9288718B2 (en) | 2012-08-31 | 2013-02-15 | Byte caching in wireless communication networks |
Publications (2)
Publication Number | Publication Date |
---|---|
US20160142938A1 true US20160142938A1 (en) | 2016-05-19 |
US10171616B2 US10171616B2 (en) | 2019-01-01 |
Family
ID=50184647
Family Applications (4)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
US13/601,306 Expired - Fee Related US9351196B2 (en) | 2012-08-31 | 2012-08-31 | Byte caching in wireless communication networks |
US13/768,433 Expired - Fee Related US9288718B2 (en) | 2012-08-31 | 2013-02-15 | Byte caching in wireless communication networks |
US15/007,321 Expired - Fee Related US10171616B2 (en) | 2012-08-31 | 2016-01-27 | Byte caching in wireless communication networks |
US15/133,358 Active 2033-01-20 US10129791B2 (en) | 2012-08-31 | 2016-04-20 | Byte caching in wireless communication networks |
Family Applications Before (2)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
US13/601,306 Expired - Fee Related US9351196B2 (en) | 2012-08-31 | 2012-08-31 | Byte caching in wireless communication networks |
US13/768,433 Expired - Fee Related US9288718B2 (en) | 2012-08-31 | 2013-02-15 | Byte caching in wireless communication networks |
Family Applications After (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
US15/133,358 Active 2033-01-20 US10129791B2 (en) | 2012-08-31 | 2016-04-20 | Byte caching in wireless communication networks |
Country Status (2)
Country | Link |
---|---|
US (4) | US9351196B2 (en) |
WO (1) | WO2014036382A2 (en) |
Families Citing this family (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9553907B2 (en) * | 2009-07-14 | 2017-01-24 | Saguna Networks Ltd. | Methods circuits devices systems and associated computer executable code for conveying information between network elements over an open dataflow |
EP2893734B1 (en) | 2012-09-06 | 2016-04-27 | Koninklijke KPN N.V. | Establishing a device-to-device communication session |
US9258666B2 (en) * | 2012-10-17 | 2016-02-09 | International Business Machines Corporation | State migration of edge-of-network applications |
EP2912866B1 (en) * | 2012-10-29 | 2019-04-17 | Koninklijke KPN N.V. | Intercepting device-to-device communication |
US9578141B2 (en) * | 2013-11-03 | 2017-02-21 | Ixia | Packet flow modification |
US10027573B2 (en) | 2014-10-10 | 2018-07-17 | At&T Intellectual Property I, L.P. | Centralized radio access network virtualization mechanism |
US9781024B2 (en) | 2015-03-25 | 2017-10-03 | International Business Machines Corporation | Supporting low latency applications at the edge of wireless communication networks |
US10346406B2 (en) * | 2016-03-28 | 2019-07-09 | International Business Machines Corporation | Decentralized autonomous edge compute coordinated by smart contract on a blockchain |
TWI682647B (en) * | 2018-03-29 | 2020-01-11 | 啓碁科技股份有限公司 | Method and device for enhancing the throughput between smart meter and server |
Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20110069715A1 (en) * | 2008-10-18 | 2011-03-24 | Fortinet, Inc. | Accelerating data communication using tunnels |
Family Cites Families (29)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6624761B2 (en) * | 1998-12-11 | 2003-09-23 | Realtime Data, Llc | Content independent data compression method and system |
US8692695B2 (en) * | 2000-10-03 | 2014-04-08 | Realtime Data, Llc | Methods for encoding and decoding data |
US6950445B2 (en) * | 2000-11-16 | 2005-09-27 | Telefonaktiebolaget Lm Ericsson (Publ) | Communication system and method for shared context compression |
US20030030575A1 (en) * | 2001-05-07 | 2003-02-13 | Harmonic Data Systems Ltd. | Lossless data compression |
KR100434055B1 (en) * | 2002-04-27 | 2004-06-04 | 엘지전자 주식회사 | Coherency maintenance method for mobile communication system |
SE0203104D0 (en) * | 2002-10-18 | 2002-10-18 | Ericsson Telefon Ab L M | Method and apparatus for network initiated rate control for P2C services in a mobile system |
US6667700B1 (en) * | 2002-10-30 | 2003-12-23 | Nbt Technology, Inc. | Content-based segmentation scheme for data compression in storage and transmission including hierarchical segment representation |
US7620071B2 (en) * | 2004-11-16 | 2009-11-17 | Intel Corporation | Packet coalescing |
US7630394B2 (en) * | 2005-04-14 | 2009-12-08 | Ramot At Tel-Aviv University Ltd. | Method, apparatus and computer-readable code for data compression of network packets |
US8311059B2 (en) * | 2005-09-07 | 2012-11-13 | Emulex Design & Manufacturing Corporation | Receive coalescing and automatic acknowledge in network interface controller |
US8832247B2 (en) * | 2006-03-24 | 2014-09-09 | Blue Coat Systems, Inc. | Methods and systems for caching content at multiple levels |
US7456760B2 (en) * | 2006-09-11 | 2008-11-25 | Apple Inc. | Complexity-aware encoding |
KR100834811B1 (en) | 2006-11-28 | 2008-06-09 | 고려대학교 산학협력단 | CoFeSiB/Pt multilayers exhibiting perpendicular magnetic anisotropy |
US8718646B2 (en) | 2006-12-21 | 2014-05-06 | Alcatel Lucent | Methods and apparatus for distributed multimedia content supporting user mobility |
US8225085B2 (en) | 2007-06-05 | 2012-07-17 | Blue Coat Systems, Inc. | System and method for distributed SSL processing between co-operating nodes |
US8391148B1 (en) * | 2007-07-30 | 2013-03-05 | Rockstar Consortion USLP | Method and apparatus for Ethernet data compression |
US8130747B2 (en) * | 2007-08-06 | 2012-03-06 | Blue Coat Systems, Inc. | System and method of traffic inspection and stateful connection forwarding among geographically dispersed network appliances organized as clusters |
US8321651B2 (en) * | 2008-04-02 | 2012-11-27 | Qualcomm Incorporated | System and method for memory allocation in embedded or wireless communication systems |
US8417766B2 (en) | 2008-06-25 | 2013-04-09 | Viasat, Inc. | Methods and systems for peer-to-peer app-level performance enhancing protocol (PEP) |
US20100017600A1 (en) * | 2008-07-15 | 2010-01-21 | Viasat, Inc. | Secure neighbor cache preload |
US8489671B2 (en) * | 2008-09-10 | 2013-07-16 | Viasat, Inc. | Dedicated shared byte cache |
US9369516B2 (en) | 2009-01-13 | 2016-06-14 | Viasat, Inc. | Deltacasting |
US8862761B1 (en) | 2009-09-14 | 2014-10-14 | The Directv Group, Inc. | Method and system for forming an audio overlay for streaming content of a content distribution system |
US8161238B2 (en) * | 2009-11-10 | 2012-04-17 | Blue Coat Systems, Inc. | Systems and methods for avoiding performance degradation due to disk fragmentation in a network caching device |
US20110125820A1 (en) | 2009-11-25 | 2011-05-26 | Yi-Neng Lin | Telecommunication network aggregation cache system and method |
CN102550006A (en) | 2010-02-12 | 2012-07-04 | 莫维克网络公司 | Charging-invariant and origin-server-friendly transit caching in mobile networks |
US20130018932A1 (en) * | 2011-07-12 | 2013-01-17 | Hughes Network Systems, Llc | System and method for long range and short range data compression |
US9942580B2 (en) * | 2011-11-18 | 2018-04-10 | At&T Intellecutal Property I, L.P. | System and method for automatically selecting encoding/decoding for streaming media |
US8832375B2 (en) * | 2012-05-24 | 2014-09-09 | International Business Machines Corporation | Object type aware byte caching |
-
2012
- 2012-08-31 US US13/601,306 patent/US9351196B2/en not_active Expired - Fee Related
-
2013
- 2013-02-15 US US13/768,433 patent/US9288718B2/en not_active Expired - Fee Related
- 2013-08-30 WO PCT/US2013/057479 patent/WO2014036382A2/en active Application Filing
-
2016
- 2016-01-27 US US15/007,321 patent/US10171616B2/en not_active Expired - Fee Related
- 2016-04-20 US US15/133,358 patent/US10129791B2/en active Active
Patent Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20110069715A1 (en) * | 2008-10-18 | 2011-03-24 | Fortinet, Inc. | Accelerating data communication using tunnels |
Also Published As
Publication number | Publication date |
---|---|
US9351196B2 (en) | 2016-05-24 |
WO2014036382A2 (en) | 2014-03-06 |
US20140064058A1 (en) | 2014-03-06 |
US9288718B2 (en) | 2016-03-15 |
US10129791B2 (en) | 2018-11-13 |
US10171616B2 (en) | 2019-01-01 |
WO2014036382A3 (en) | 2014-05-30 |
US20140067987A1 (en) | 2014-03-06 |
US20160234719A1 (en) | 2016-08-11 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US10129791B2 (en) | Byte caching in wireless communication networks | |
CN106716951B (en) | Method and device for optimizing tunnel traffic | |
US9094374B2 (en) | Bandwidth optimization for remote desktop protocol | |
US9900259B2 (en) | Data transmission method and related apparatus to compress data to be transmitted on a network | |
US10299164B2 (en) | Protocol stack adaptation method and apparatus | |
US7835391B2 (en) | Protocol DMA engine | |
WO2016197804A1 (en) | Method and device for compressing data packet | |
CN111385268B (en) | Data packet header compression confirmation method and communication equipment | |
US9794354B1 (en) | System and method for communication between networked applications | |
US10120801B2 (en) | Object caching for mobile data communication with mobility management | |
WO2015168840A1 (en) | Data processing method and apparatus | |
US9729661B2 (en) | Optimization of mobile data communication using byte caching | |
EP3186959B1 (en) | Enrichment of upper layer protocol content in tcp based session | |
CN110383787A (en) | A kind of data migration method and device | |
WO2017143538A1 (en) | Voice data transmission method and apparatus | |
CN113259958A (en) | Data transmission method and device | |
US20140254557A1 (en) | Mobile communication system and content provision method in mobile communication system | |
US20240114389A1 (en) | Locally dispersed object storage in 5g radio access nodes | |
US20200228235A1 (en) | Data recovery in unreliable packet networks | |
CN117134865A (en) | Communication method and device | |
KR20090089690A (en) | Apparatus and method for processing fragment packets in broadband wireless access system |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
AS | Assignment |
Owner name: INTERNATIONAL BUSINESS MACHINES CORPORATION, NEW Y Free format text: ASSIGNMENT OF ASSIGNORS INTEREST;ASSIGNORS:AGRAWAL, DAKSHI;KO, BONGJUN;LE, FRANCK;AND OTHERS;SIGNING DATES FROM 20130120 TO 20130130;REEL/FRAME:037593/0578 |
|
STCF | Information on status: patent grant |
Free format text: PATENTED CASE |
|
FEPP | Fee payment procedure |
Free format text: MAINTENANCE FEE REMINDER MAILED (ORIGINAL EVENT CODE: REM.); ENTITY STATUS OF PATENT OWNER: LARGE ENTITY |
|
LAPS | Lapse for failure to pay maintenance fees |
Free format text: PATENT EXPIRED FOR FAILURE TO PAY MAINTENANCE FEES (ORIGINAL EVENT CODE: EXP.); ENTITY STATUS OF PATENT OWNER: LARGE ENTITY |
|
STCH | Information on status: patent discontinuation |
Free format text: PATENT EXPIRED DUE TO NONPAYMENT OF MAINTENANCE FEES UNDER 37 CFR 1.362 |
|
FP | Lapsed due to failure to pay maintenance fee |
Effective date: 20230101 |