US20100179984A1 - Return-link optimization for file-sharing traffic - Google Patents
Return-link optimization for file-sharing traffic Download PDFInfo
- Publication number
- US20100179984A1 US20100179984A1 US12/651,928 US65192810A US2010179984A1 US 20100179984 A1 US20100179984 A1 US 20100179984A1 US 65192810 A US65192810 A US 65192810A US 2010179984 A1 US2010179984 A1 US 2010179984A1
- Authority
- US
- United States
- Prior art keywords
- content
- data block
- content data
- identifier
- server
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Abandoned
Links
Images
Classifications
-
- 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/61—Network streaming of media packets for supporting one-way streaming services, e.g. Internet radio
- H04L65/611—Network streaming of media packets for supporting one-way streaming services, e.g. Internet radio for multicast or broadcast
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04B—TRANSMISSION
- H04B7/00—Radio transmission systems, i.e. using radiation field
- H04B7/14—Relay systems
- H04B7/15—Active relay systems
- H04B7/185—Space-based or airborne stations; Stations for satellite systems
-
- 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/1859—Arrangements for providing special services to substations for broadcast or conference, e.g. multicast adapted to provide push services, e.g. data channels
-
- 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/1863—Arrangements for providing special services to substations for broadcast or conference, e.g. multicast comprising mechanisms for improved reliability, e.g. status reports
-
- 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/1881—Arrangements for providing special services to substations for broadcast or conference, e.g. multicast with schedule organisation, e.g. priority, sequence management
-
- 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/1886—Arrangements for providing special services to substations for broadcast or conference, e.g. multicast with traffic restrictions for efficiency improvement, e.g. involving subnets or subdomains
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L45/00—Routing or path finding of packets in data switching networks
- H04L45/74—Address processing for routing
- H04L45/745—Address table lookup; Address filtering
- H04L45/7453—Address table lookup; Address filtering using hashing
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L47/00—Traffic control in data switching networks
- H04L47/70—Admission control; Resource allocation
-
- 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
-
- 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/01—Protocols
-
- 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/01—Protocols
- H04L67/10—Protocols in which an application is distributed across nodes in the network
-
- 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
-
- 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/22—Parsing or analysis of headers
Definitions
- This disclosure relates in general to communications and, but not by way of limitation, to optimization of return links of a communications system.
- a single user plays a dual role of client and server (e.g., in a peer-to-peer environment). For example, a user may desire to share previously downloaded content with another user.
- Certain types of local networking and/or shared caching techniques may be used to limit redundancies and/or other inefficiencies associated with these types of transactions. However, the techniques may rely at times on users sharing a subnet, relatively symmetric client-server storage capabilities, relatively symmetric upload-download capabilities of the network links, or other types of network characteristics.
- Embodiments operate in a client-server context (or a more generalized sender-receiver context).
- a client optimizer intercepts the download and generates one or more identifiers characterizing the content (e.g., a digest).
- the identifiers are stored in a client-side server dictionary model reflecting a presumption that the content is stored in a server-side dictionary.
- the actual data blocks (e.g., byte sequences) making up the content are not stored at the client side; only digests or other identifiers are stored.
- the server dictionary model when content is uploaded by the client at some later time, the server dictionary model is used to identify when the upload content matches previously downloaded (e.g., or, in some embodiments, previously uploaded) content. When a match is detected, the identifiers stored in the server dictionary model are used to generate a highly compressed version of the upload content, which is then uploaded to the server instead of the full content data. In this way, return-link bandwidth usage can be reduced for these types of transactions.
- a system for managing return-link resource usage in a communications system.
- the system includes a local dictionary model configured to store identifiers associated with data blocks stored on a remote dictionary, where the remote dictionary is located at a remote node of the communications system.
- the remote dictionary may be a server dictionary in communication with a server optimizer.
- the system further includes a download processor module, configured to: receive a first content data block from a remote device associated with the remote dictionary; store the first content data block in a local store (e.g., a buffer); calculate a first identifier (e.g., a digest) from the first content data block; store the first identifier in the local dictionary model; and remove the first content data block from the local store.
- a local dictionary model configured to store identifiers associated with data blocks stored on a remote dictionary, where the remote dictionary is located at a remote node of the communications system.
- the remote dictionary may be a server dictionary in communication with a server optimizer.
- the system further includes a download
- the system further includes an upload processor module, configured to: receive a second content data block for upload to the remote device; calculate a second identifier from the second content data block; determine whether the second identifier matches the first identifier stored in the local dictionary model; and when the second identifier matches the first identifier, use the first identifier or the second identifier to compress the second content data block into compressed content.
- an upload processor module configured to: receive a second content data block for upload to the remote device; calculate a second identifier from the second content data block; determine whether the second identifier matches the first identifier stored in the local dictionary model; and when the second identifier matches the first identifier, use the first identifier or the second identifier to compress the second content data block into compressed content.
- FIG. 1 shows a simplified block diagram of one embodiment of a communications system for use with various embodiments
- FIG. 2A shows a simplified block diagram of one embodiment of a client-server communications system for use with various embodiments
- FIG. 2B shows a simplified block diagram of an embodiment of a communications system having multiple user systems for use with various embodiments
- FIG. 3 shows a block diagram of an embodiment of a satellite communications system having a server system in communication with multiple user systems via a satellite over multiple spot beams, according to various embodiments;
- FIG. 4 shows a block diagram of an embodiment of a communications system, illustrating client-server interactivity through a client optimizer and a server optimizer, according to various embodiments;
- FIG. 5 shows a block diagram of an embodiment of a client optimizer having additional storage capacity and mode selection, according to various embodiments
- FIG. 6 shows an illustrative method for performing return-link optimization, according to various embodiments.
- FIG. 7 shows an illustrative method for performing return-link optimization for an upload-after-upload transaction, according to various embodiments.
- FIG. 1 a simplified block diagram is shown of one embodiment of a communications system 100 for use with various embodiments.
- the communications system 100 facilitates communications between a sender optimizer 120 on a sender side 110 and a receiver optimizer 140 on a receiver side 130 .
- the sender optimizer 120 and the receiver optimizer 140 are configured to effectively provide an optimizer tunnel 105 between the sender side 110 and the receiver side 130 of the communications system 100 , including providing certain communications functionality.
- Embodiments of the optimizers can be implemented in a number of ways without departing from the scope of the invention.
- the optimizers are implemented as proxy components (e.g., a two-part proxy client/server topology), such that the optimizer tunnel 105 is a proxy tunnel.
- a transparent intercept proxy can be used to intercept traffic in a way that is substantially transparent to users at each side of the proxy tunnel.
- the optimizers are implemented as in-line optimizers.
- the optimizers are implemented within respective user or provider terminals. Other configurations are possible in other embodiments.
- embodiments of the receiver optimizer 140 are implemented in the Internet cloud (e.g., on commercial network leased server space), and embodiments of the sender optimizer 120 are implemented within a user system (e.g., in user's personal computer, within a user's modem, in a physically separate component at the customer premises, etc.).
- Various embodiments of optimizers may include and/or have access to different amounts of storage. Some embodiments are configured to cache data, store dictionaries of byte sequences, etc.
- the receiver optimizer 140 has access to enough storage to maintain a receiver dictionary 144 .
- Embodiments of the receiver dictionary 144 include chunks of content data (e.g., implemented as delta dictionaries, wide dictionaries, byte caches, and/or other types of dictionary structures). For example, when content data is stored in the dictionary, some or all of the blocks of data defining the content are stored in the dictionary in an unordered, but indexed way. As such, content may not be directly accessible from the dictionary; rather, the set of indexes may be needed to recreate the content from the set of unordered blocks.
- optimizers have substantially limited storage.
- the sender optimizer 120 has access only to a small amount of storage.
- the storage capacity may be too limited to store a full dictionary, but sufficient to store a model of the receiver dictionary 144 , illustrated as the receiver dictionary model 124 .
- Embodiments of the receiver dictionary model 124 store digests representing data stored at the receiver dictionary 144 .
- embodiments of the sender optimizer 120 intercept traffic, and use one or more techniques to generate digests of byte sequences of the traffic. The digests are then stored in the receiver dictionary model 124 , and can be used to identify matching byte sequences in the receiver dictionary 144 .
- digests may generally include any type of fingerprint, digest, signature, hash function, and/or other functional coding of byte sequences generated so as to provide a strong enough identifier to reliably represent substantially identical matching blocks stored in a dictionary.
- a user on the sender side 110 of the communications system 100 downloads content from the receiver side 130 of the communications system 100 .
- the content is intercepted by the sender optimizer 120 and a digest is created and stored in the receiver dictionary model 124 .
- Storage of the digest in the receiver dictionary model 124 indicates that a full copy of the downloaded content is stored in the receiver dictionary 144 on the receiver side 130 of the communications system 100 without storing a copy of the data on the sender side 110 of the communications system 100 .
- embodiments of the sender optimizer 120 intercept the upload to see if the content was previously downloaded from the receiver side 130 (i.e., the content is presumed to be stored in the receiver dictionary 144 according to the receiver dictionary model 124 ). If the content is determined to be previously downloaded content, a highly compressed version of the content may be uploaded to the receiver side 130 . Notably, this technique may allow significant reductions in return-link resource usage for file sharing traffic and/or other upload-after-download traffic, even where there is a very small amount of storage capacity accessible by the sender optimizer 120 (e.g., enough to store only a receiver dictionary model 124 ).
- the limited storage capacity at the sender optimizer 120 may be considered differently in different embodiments.
- the sender optimizer 120 is implemented within a network device (e.g., a user modem) having minimal storage capacity.
- the sender optimizer 120 is configured to operate in different operating modes, where one or more operating modes is configured to use minimal storage capacity.
- the sender optimizer 120 may operate either in a normal mode that stores dictionary entries for certain types of traffic or in a file sharing mode (when file sharing traffic is detected) that only stores digests without storing the actual file sharing content.
- Embodiments of the sender optimizer 120 implement certain functionality described herein when file sharing or similar types of content are detected (e.g., resulting in switching into a file sharing mode, as described above).
- the detection involves determining that traffic intercepted during a download is likely to be uploaded at some later time. The determination may account for certain tags or protocols in the metadata, which application is downloading the data, which ports are carrying the traffic, etc.
- file sharing data may be assumed to have a high probability of upload after download, while Internet-protocol television (IPTV) or voice-over-Internet-protocol (VoIP) content may carry a low probability of upload after download.
- IPTV Internet-protocol television
- VoIP voice-over-Internet-protocol
- file sharing connotes traffic and associated environments in which a downloader of content becomes a provider (e.g., a server) of the content.
- a provider e.g., a server
- file sharing applications may allow a downloader to become a server in the context of particular traffic.
- file sharing applications fragment files for communication.
- some programs allow clients to download a content file in parallel from multiple sources (e.g., other peers on the network) by receiving fragments of the file from each source.
- embodiments generate identifiers (e.g., digests) at the data block level, rather than at the full-file level. In this way, optimization opportunities may be identified even from file fragments, and even when fragments are received asynchronously, out of order, etc.
- the storage capacity of the sender optimizer 120 may be distinct from other storage capacity at the sender side 110 of the communications system 100 .
- the user machine 114 may broadly include any type of machine through which a user may interact with content over the communications system 100 .
- the user machine 114 may include consumer premises equipment (CPE), such as computers, televisions, etc.
- CPE consumer premises equipment
- the user machines 114 may have access to their own respective machine storage 118 .
- the machine storage 118 may include hard-disk space, application storage, cache capacity, etc.
- the optimizers at each side of the communications system 100 may or may not have access to the respective machine storage 118 .
- embodiments of the sender optimizer 120 may typically have little or no access to the machine storage 118 .
- the sender optimizer 120 is an independent (e.g., transparent) network component that does not have access to the machine storage 118 .
- access to the machine storage 118 may be too slow to provide desirable optimization benefits.
- embodiments of the sender optimizer 120 are described as having limited storage capacity (e.g., or operating in a mode with limited storage capacity) even where other storage capacity is available at the sender side 110 of the communications system 100 .
- FIG. 2A shows a simplified block diagram of one embodiment of a client-server communications system 200 a for use with various embodiments.
- the communications system 200 a facilitates communications between a user system 210 and a server system 320 via a client optimizer 220 and a server optimizer 230 .
- the client optimizer 220 and the server optimizer 230 are configured to effectively provide an optimizer tunnel 205 between the user system 210 and the server system 320 , including providing certain communications functionality.
- client and server are used herein to clarify particular sides of the communications system, and are not intended to limit the respective roles, functions, direction of communications, etc. For example, in a peer-to-peer context, users may act as both clients and servers in file sharing transactions.
- the client optimizer 220 and the server optimizer 230 implement functionality of the sender optimizer 120 and the receiver optimizer 140 of FIG. 1 , respectively.
- a user downloads content from a content server 250 over a network 240 through the user system 210 .
- Embodiments of the user system 210 may include any component or components for providing a user with network interactivity.
- the user system 210 may include any type of computational device, network interface device, communications device, or other device for communicating data to and from the user.
- the communications system 200 a facilitates communications between multiple user systems 210 and a variety of content servers 250 over one or more networks 240 (only one of each is shown in FIG. 2A for the sake of clarity).
- the content servers 250 are in communication with the server optimizer 230 via one or more networks 240 .
- the network 240 may be any type of network 240 and can include, for example, the Internet, an Internet protocol (“IP”) network, an intranet, a wide-area network (“WAN”), a local-area network (“LAN”), a virtual private network (“VPN”), the Public Switched Telephone Network (“PSTN”), and/or any other type of network 240 supporting data communication between devices described herein, in different embodiments.
- IP Internet protocol
- WAN wide-area network
- LAN local-area network
- VPN virtual private network
- PSTN Public Switched Telephone Network
- the network 240 may also include both wired and wireless connections, including optical links.
- content servers is intended broadly to include any source of content in which the users may be interested.
- a content server 250 may provide website content, television content, file sharing, multimedia serving, voice-over-Internet-protocol (VoIP) handling, and/or any other useful content.
- the content servers 250 are in direct communication with the server optimizer 230 (e.g., not through the network 240 ).
- the server optimizer 230 may be located in a gateway that includes a content or application server.
- discussions of embodiments herein with respect to communications with content servers 250 over the network 240 are intended only to be illustrative, and should not be construed as limiting.
- the server optimizer 230 may be part of a server system 320 that includes components for server-side communications (e.g., base stations, gateways, satellite modem termination systems (SMTSs), digital subscriber line access multiplexers (DSLAMs), etc., as described below with reference to FIG. 3 ).
- the server optimizer 230 may act as a transparent and/or intercepting proxy.
- the client optimizer 220 is in communication with the server optimizer 230 over a client-server communication link 225
- the server optimizer 230 is in communication with the content server 250 over a content network link 235 .
- the server optimizer 230 may act as a transparent man-in-the-middle to intercept the data as it passes between the client-server communication link 225 and the content network link 235 . Further, embodiments of the server optimizer 230 maintain a server dictionary 234 (e.g., like the receiver dictionary 144 of FIG. 1 ) including byte sequences of some or all of the traffic previously seen by the server optimizer 230 .
- a server dictionary 234 e.g., like the receiver dictionary 144 of FIG. 1
- the server optimizer 230 may intercept the content and store blocks of content data in the server dictionary 234 .
- the content may then be sent (e.g., over the client-server communication link 225 ) to the user terminal 210 in response to the user's request for the content.
- the client optimizer 220 intercepts the traffic at the client side of the optimizer tunnel 205 and generates a digest of the content, as described above.
- the digest is stored in a server dictionary model 224 .
- additional data e.g., fingerprints
- the digest may be a strong identifier that can reliably represent an identical data block stored at the server dictionary 234 , and a weak identifier (e.g., a hash) may be generated for quickly finding matching candidates among a large set of digests.
- a weak identifier e.g., a hash
- the client optimizer 220 may intercept the upload (e.g., the request may be directed or redirected to the client optimizer 220 ) and look for a match in the server dictionary model 224 , indicating presumptive existence of the upload content on the server dictionary 234 . If a match is found, a highly compressed version of the content may be communicated to the server system 320 over the client-server communication link 225 . For example, the highly compressed version may use the matching digests or other identifiers (e.g., block IDs) from the server dictionary model 224 as indexes to recreate the content at the server side from byte sequences stored in the server dictionary 234 .
- the server dictionary model 224 may use the matching digests or other identifiers (e.g., block IDs) from the server dictionary model 224 as indexes to recreate the content at the server side from byte sequences stored in the server dictionary 234 .
- the upload may not be ultimately destined for the server system 320 .
- the upload may actually be from one user system 210 to another user system 210 .
- the communications system 200 a illustrated in FIG. 2A shows only one optimizer tunnel 205 between one server system 320 and one user system 210
- embodiments typically operate in the context of, and take advantage of, optimization among multiple user systems 210 .
- FIG. 2B shows a simplified block diagram of an embodiment of a communications system 200 b having multiple user systems 210 for use with various embodiments.
- the communications system 200 b facilitates communications between a server system 320 and multiple user systems 210 , via a respective server optimizer 230 and at least one client optimizer 220 .
- a first user system 210 a may desire to upload content after a previous download of the content from the server system 320 .
- return-link bandwidth may be optimized for this scenario.
- the optimized return-link bandwidth may refer to the return link between the first user system 210 a and the server system 320 , regardless of the ultimate destination of the upload content.
- the return link may be optimized even where the ultimate destination of the content is the second user system 210 n, such that the content is further communicated from the server system 320 to other nodes of the communications system 200 b.
- embodiments may optimize the return-link bandwidth, regardless of whether the ultimate destination terminal includes optimization functionality.
- some embodiments of the second user system 210 n include a second client optimizer 220 n that is in communication with the server optimizer 230 and maintains its own server dictionary model 224 n.
- the second client optimizer 220 n may be any receiving node anywhere on the network, even one having no client optimizer 220 n and/or no server dictionary model 224 n.
- the return-link optimization may be effectuated between the first user system 210 a and the server system 320 via their respective client optimizer 220 and server optimizer 230 , even where the destination for the traffic is some node of the network other than the server system 320 .
- FIGS. 1 , 2 A, and 2 B illustrate various types of communications systems for use with embodiments of the invention using generic component designations. It will be appreciated that these components may be implemented in various nodes of various types and topologies of communications systems.
- the communications systems may include cable communications systems, satellite communications systems, digital subscriber line (DSL) communications systems, local are networks (LANs), wide area networks (WANs), etc.
- the links of the communications systems may include wired and/or wireless links, Ethernet links, coaxial cable links, fiber-optic links, etc.
- Some embodiments include shared portions of the forward and/or reverse links between nodes (e.g., a shared spot beam in a satellite communications system), while other embodiments include unshared links between nodes (e.g., in an Ethernet network).
- FIG. 3 shows a block diagram of an embodiment of a satellite communications system 300 having a server system 320 in communication with multiple user systems 210 via a satellite 305 over multiple spot beams 335 , according to various embodiments.
- the server system 320 may include any server components, including base stations 315 , gateways 317 , etc.
- a base station 315 is sometimes referred to as a hub or ground station.
- the base station 315 has functionality that is the same or different from a gateway 317 .
- a gateway 317 provides an interface between the network 240 and the satellite 305 via a number of base stations 315 .
- Various embodiments provide different types of interfaces between the gateways 317 and base stations 315 .
- the gateways 317 and base stations 315 may be in communication over leased high-bandwidth lines (e.g., raw Ethernet), a virtual private large-area network service (VPLS), an Internet protocol virtual private network (IP VPN), or any other public or private, wired or wireless network.
- leased high-bandwidth lines e.g., raw Ethernet
- VPLS virtual private large-area network service
- IP VPN Internet protocol virtual private network
- Embodiments of the server system 320 are in communication with one or more content servers 250 via one or more networks 240 .
- the gateway 317 may be configured to implement multi-directional communications functionality. For example, the gateway 317 may send data to and receive data from the base stations 315 .
- the gateway 317 may be configured to receive data and information directed to one or more user systems 210 , and format the data and information for delivery to the respective destination device via the satellite 305 ; or receive signals from the satellite 305 (e.g., from one or more user systems 210 ) directed to a destination in the network 240 , and process the received signals for transmission through the network 240 .
- one or more of the satellite links are capable of communicating using one or more communication schemes.
- the communication schemes may be the same or different for different links.
- the communication schemes may include different types of coding and modulation combinations.
- various satellite links may communicate using physical layer transmission modulation and coding techniques using adaptive coding and modulation schemes, etc.
- the communication schemes may also use one or more different types of multiplexing schemes, including Multi-Frequency Time-Division Multiple Access (“MF-TDMA”), Time-Division Multiple Access (“TDMA”), Frequency Division Multiple Access (“FDMA”), Orthogonal Frequency Division Multiple Access (“OFDMA”), Code Division Multiple Access (“CDMA”), or any number of other schemes.
- MF-TDMA Multi-Frequency Time-Division Multiple Access
- TDMA Time-Division Multiple Access
- FDMA Frequency Division Multiple Access
- OFDMA Orthogonal Frequency Division Multiple Access
- CDMA Code Division Multiple Access
- the satellite 305 may operate in a multi-beam mode, transmitting a number of spot beams 335 , each directed at a different region of the earth.
- Each spot beam 335 may be associated with one of the user links, and used to communicate between the satellite 305 and a large group (e.g., thousands) of user systems 210 (e.g., user terminals 330 within the user systems 210 ).
- the signals transmitted from the satellite 305 may be received by one or more user systems 210 , via a respective user antenna 325 .
- some or all of the user systems 210 include one or more user terminals 330 and one or more CPE devices 360 .
- User terminals 330 may include modems, satellite modems, routers, or any other useful components for handling the user-side communications.
- Reference to “users” should be construed generally to include any user (e.g., subscriber, consumer, customer, etc.) of services provided over the satellite communications system 300 (e.g., by or through the server system 320 ).
- some or all of the users (e.g., user systems 210 ) serviced by the spot beam 335 may be capable of receiving all the content traversing the spot beam 335 by virtue of the fact that the satellite communications system 300 employs wireless communications via various antennae (e.g., 310 and 325 ). However, some of the content may not be intended for receipt by certain customers. As such, the satellite communications system 300 may use various techniques to “direct” content to a user or group of users.
- the content may be tagged (e.g., using packet header information according to a transmission protocol) with a certain destination identifier (e.g., an IP address), use different modcode points that can be reliably received only by certain user terminals 330 , send control information to user systems 210 to direct the user systems 210 to ignore or accept certain communications, etc.
- Each user system 210 may then be adapted to handle the received data accordingly. For example, content destined for a particular user system 210 may be passed on to its respective CPE 360 , while content not destined for the user system 210 may be ignored.
- the user system 210 caches information not destined for the associated CPE 360 for use if the information is later found to be useful in avoiding traffic over the satellite link, as described in more detail below.
- Embodiments of the server system 320 and/or the user system 210 include an accelerator module and/or other processing components.
- real-time types of data e.g., User Datagram Protocol (“UDP”) data traffic, like Internet-protocol television (“IPTV”) programming
- IPTV Internet-protocol television
- non-real-time types of data e.g., Transmission Control Protocol (“TCP”) data traffic, like web video
- UDP User Datagram Protocol
- TCP Transmission Control Protocol
- Embodiments of the accelerator module provide various types of applications, WAN/LAN, and/or other acceleration functionality.
- the accelerator module is adapted to provide high payload compression. This allows faster transfer of the data and enhances the effective capacity of the network.
- the accelerator module can also implement protocol-specific methods to reduce the number of round trips needed to complete a transaction, such as by prefetching objects embedded in HTTP pages.
- functionality of the accelerator module is closely integrated with the satellite link through other modules, including the client optimizer 220 and/or the server optimizer 230 .
- the satellite communications system 300 may be configured to implement various optimization functions through client-server interactions, implemented by the client optimizer 220 and the server optimizer 230 .
- the server optimizer 230 may be configured to maintain a server dictionary and the client optimizer 220 may be configured to maintain a model of the server dictionary.
- Embodiments of the client optimizers 220 and server optimizer 230 may act to create a virtual tunnel between the user systems 210 and the content servers 250 or the server system 320 , as described with reference to FIGS. 2A and 2B .
- a topology like the satellite communications system 300 shown in FIG. 3 , vast amounts of traffic may traverse various portions of the satellite communications system 300 at any given time.
- the optimizer functionality may help relieve the satellite communications system 300 from traffic burdens relating to file sharing and similar transactions (e.g., by optimizing return-link resources). This and other functionality of the client optimizer 220 and the server optimizer 230 are described more fully with reference to FIG. 4 .
- FIG. 4 shows a block diagram of an embodiment of a communications system 400 , illustrating client-server interactivity through a client optimizer 220 and a server optimizer 230 , according to various embodiments.
- the communications system 400 is an embodiment of the communications system 200 a of FIG. 2A or the satellite communications system 300 of FIG. 3 .
- the communications system 400 facilitates communications between a user system 210 and one or more content servers 250 via at least one client-server communication link 225 .
- interactions between the client optimizer 220 and the server optimizer 230 effectively create an optimizer tunnel 205 between the user system 210 and the content servers 250 .
- the server system 320 is in communication with the content servers 250 via one or more networks 240 , like the Internet.
- the user system 210 includes a client graphical user interface (GUI) 410 , a web browser 406 , and a redirector 408 .
- GUI client graphical user interface
- the client GUI 410 may allow a user to configure performance aspects of the user system 210 (e.g., or even aspects of the greater communications system 400 in some cases). For example, the user may adjust compression parameters and/or algorithms, alter content filters (e.g., for blocking illicit websites), or enable or disable various features used by the communications system 400 .
- some of the features may include network diagnostics, error reporting, as well as controlling, for example, components of the client optimizer 220 and/or the server optimizer 230 .
- the user selects a universal recourse locator (URL) address through the client GUI 410 which directs the web browser 406 (e.g., Internet Explorer®, Firefox®, Netscape Navigator®, etc.) to a website (e.g., cnn.com, google.com, yahoo.com, etc.).
- the web browser 406 may then issue a request for the website and associated objects to the Internet. It is worth noting that the web browser 406 is shown for illustrative purposes only.
- user systems 210 may typically include at least one web browser 406
- user systems 210 may interact with content servers 250 in a number of different ways without departing from the scope of the invention (e.g., through downloader applications, file sharing applications, applets, etc.).
- the content request from the user system 210 may be intercepted by the redirector 408 .
- the redirector 408 may be implemented in various ways. For example, embodiments of the redirector 408 are implemented within a user modem as part of the modem's internal routing functionality.
- the redirector 408 may send the request to the client optimizer 220 .
- the client optimizer 220 is shown as separate from the user machine 214 (e.g., in communication over a local bus, on a separate computer system connected to the user system 210 via a high speed/low latency link, like a branch office LAN subnet, etc.).
- embodiments of the client optimizer 220 are implemented as part of any component of the user system 210 in any useful client-side location, including as part of a user terminal, as part of a user modem, as part of a hub, as a separate hardware component, as a software application on the user machine 214 , etc.
- the client optimizer 220 includes a request manager 416 .
- the request manager 416 may be configured to perform a number of different processing functions, including Java parsing and protocol processing.
- Embodiments of the request manager 416 may process hypertext transfer protocol (HTTP), file transfer protocol (FTP), various media protocols, metadata, header information, and/or other relevant information from the request data (e.g., packets) to allow the client optimizer 220 to perform its optimizer functions.
- HTTP hypertext transfer protocol
- FTP file transfer protocol
- various media protocols e.g., packets
- metadata e.g., packets
- header information e.g., packets
- the request may be processed by the request manager 416 as part of identifying opportunities for optimizing return-link resources for previously downloaded content.
- the request manager 416 may forward the request to a request encoder 418 .
- Embodiments of the request encoder 418 encode the request using one of many possible data compression or similar types of algorithms. For example, strong identifiers and/or weak identifiers may be generated using dictionary coding techniques, including hashes, checksums, fingerprints, signatures, etc. As described below, these identifiers may be used to identify digests in a server dictionary model 224 indicating matching data blocks in a server dictionary 234 in, or in communication with, the server optimizer 230 .
- the request manager 416 and/or the request encoder 418 process the request content differently, depending on the type of data included in the request.
- the content portion e.g., byte-level data
- metadata e.g., a type of schema-specific coding.
- schema-specific coding are described in U.S. Provisional Patent Application No. 61/231,265, entitled “METHODS AND SYSTEMS FOR INTEGRATING DELTA CODING WITH SCHEMA SPECIFIC CODING” (026841-002300US), filed on Aug. 4, 2009, which is incorporated herein by reference in its entirety for all purposes.
- the request may be forwarded to a transport manager 428 a.
- the transport manager 428 a implements Intelligent Compression Technology's° (“ICT”) transport protocol (“ITP”). Nonetheless, other protocols may be used, such as the standard transmission control protocol (“TCP”).
- ITP maintains a persistent connection with the server system 320 via its server optimizer 230 .
- the persistent connection between the client optimizer 220 and the server optimizer 230 may enable the communications system 400 to eliminate or reduce inefficiencies and overhead costs associated with creating a new connection for each request.
- the encoded request is forwarded from the transport manager 428 a in the client optimizer 220 to a transport manager 428 b in the server optimizer 230 to a request decoder 436 .
- the request decoder 436 may use a decoder which is appropriate for the encoding performed by the request encoder 418 .
- the request decoder 436 may then transmit the decoded request to a content processor 442 configured to communicate the request to an appropriate content source.
- the content processor 442 may communicate with a content server 250 over a network 240 .
- the server dictionary 234 include indexed blocks of content data (e.g., byte sequences).
- response data may be received by the content processor 442 .
- the response data may be retrieved from an appropriate content server 250 , from the server dictionary 234 , etc.
- the response data may include various types of information, such as one or more attachments (e.g., media files, text files, etc.), references to “in-line” objects needed to render a web page, etc.
- Embodiments of the content processor 442 may be configured to interpret the response data, which may, for example, be received as HTML, XML, CSS, Java Scripts, or other types of data.
- the content processor 442 checks the server dictionary 234 to determine whether the content is already stored by the server system 230 . If not, the content may be stored to the server dictionary 234 .
- the response received at the content processor 442 is parsed by a response parser 444 and/or encoded by a response encoder 440 .
- the response data may then be communicated back to the user system 210 via the protocol managers 428 and the client-server communication link 225 .
- the response data is forwarded to a response manager 424 for client-side processing.
- Embodiments of the response manager 424 generate a strong identifier (e.g., a digest) of the response data for storage in the server dictionary model 224 .
- a strong identifier e.g., a digest
- the server dictionary model 224 is, in fact, a model of the server dictionary 234 without requiring any explicit messages from the server optimizer 230 to that effect.
- synchronization techniques are used to ensure that the server dictionary model 224 remains an accurate model of the server dictionary 234 .
- the server optimizer 230 may desire to remove a data block from its server dictionary 234 .
- the server optimizer 230 may notify the client optimizer 220 that is it ready to remove the data block, wait for a notification back from the client optimizer 220 confirming deletion of the data block from the server dictionary model 224 , and then remove the data block from the server dictionary 234 .
- the response manager 424 may further generate a weak identifier (e.g., a checksum, a hash, etc.).
- the weak identifier may be used to quickly find strong identifier entries in the server dictionary model 224 , as described more fully below.
- the response manager 424 may forward the response data to the user machine 214 (e.g., via its redirector 408 ).
- a user desires to upload the same content that was previously downloaded (referred to as “upload-after-download”).
- the upload-after-download may occur as part of a file sharing transaction.
- the upload-after-download content may be either identical to or different from the originally downloaded content; and where the upload-after-download content is different, it may differ in varying degrees.
- a user may download a document, modify the document, and re-upload the modified document.
- the upload-after-download content i.e., the re-uploaded, modified document
- the upload-after-download content may be slightly or significantly different (e.g., at the byte level) from the downloaded version of the document.
- the upload request may be intercepted by the redirector 408 and sent to the client optimizer 220 .
- the request manager 416 in the client optimizer 220 parses the upload request to find any object or other content data that should be evaluated for optimization.
- the parsed data may then be encoded by the request encoder 418 to generate one or more identifiers associated with the content requested for upload.
- the request encoder 418 generates a weak identifier (e.g., by applying a hashing function). The weak identifier is then used to quickly find candidate matches for the content among the digests stored in the server dictionary model 224 .
- the client optimizer 220 assume that the content (e.g., or data blocks needed to decompress a compressed version of the content) are presently stored in the server dictionary 234 ). If matches are found, the matching digests may be used to generate a highly compressed version of the upload content. The highly compressed version of the upload content may then be uploaded to the server system 320 for decompression and/or further processing.
- received data block are of variable size.
- the boundaries of the blocks are established, for example, by a function that operates on N bytes. Each time the output of this function has a particular value, a boundary is established. If the value of the function does not match the particular value, the block position may be advanced by one byte and a new function output may be calculated.
- certain embodiments of the function include a rolling checksum or other algorithm that allows the function value to be adjusted as a new byte is added and an old byte is removed from the set of N bytes used to compute the function. This approach may allow the same block boundaries to be established even when starting at different points in a stream (e.g., a session stream).
- the boundary points may delimit blocks of variable sizes, and a strong identifier can then be calculated on each block delimited in this way (e.g., using a Message-Digest algorithm 5 (MD5) technique, or other technique).
- MD5 Message-Digest algorithm 5
- the strong identifier of the completed block can be compared against the identifiers in the server dictionary model 224 to see if the new block matches data in the server dictionary 234 .
- Other techniques for delimiting blocks and identifying matching with previous blocks are possible.
- a byte sequence is received as a stream of data.
- a rolling checksum is calculated, for example, according to the equation:
- x is the value of the byte at position i, which may, for example, be in the range 0-255.
- modulo arithmetic can be applied to the total, so that the number of possible output values is the modulo value. Adjusting the modulus may then adjust the average size of the output blocks, as it sets the probability that a match with the special value S (e.g., the “particular value” discussed above) will occur at any point, where S is any value between 0 and M ⁇ 1.
- S e.g., the “particular value” discussed above
- S any value between 0 and M ⁇ 1.
- a user engages in file sharing by downloading a one-Megabyte content file and then becoming a source (e.g., a server) for that content file, uploading the file multiple times.
- a source e.g., a server
- the entire one-Megabyte of file data may be re-uploaded with each upload request.
- the client optimizer 220 uses the client optimizer 220 to minimize the return-link bandwidth usage.
- the digests in the server dictionary model 224 may provide 10,000-to-1 compression, such that the one-Megabyte file can be compressed into only one-hundred bytes of digest data. As such, even multiple upload requests may be compressed into only hundreds or thousands of bytes of total bandwidth usage on the return link.
- the optimization may be unaffected by destinations for the upload content beyond the server system 320 .
- the upload from the user system 210 via the client optimizer 220 may be destined for another user system 210 in communication with the server system 320 .
- the optimization may be unaffected by a presence or absence of a client optimizer 220 at the destination user system 210 .
- the digest-based optimization may provide optimization benefits (e.g., compression), even where portions of a content file have changed.
- revisions of large media files may be sent back and forth among a number of users.
- the server dictionary model 224 may include digests for the unchanged data blocks. As such, those unchanged blocks may still be sent in highly compressed form, while the changes are sent in uncompressed form (e.g., or, at least, not compressed according to the server dictionary model 224 ).
- the server dictionary 234 may then be used to decompress the compressed blocks of the upload and/or updated with the uncompressed revision data.
- the communications system 400 illustrated in FIG. 4 shows a client optimizer 220 having storage only for a server dictionary model 224 .
- Embodiments of the client optimizer 220 shown in FIG. 4 may have no access (e.g., or no practical or efficient access) to other storage capacity.
- the client optimizer 220 may not be authorized to access the machine storage 218 and/or may not have additional capacity of its own (e.g., for storage of its own dictionary or for a cache).
- the client optimizer 220 has additional capacity, which it may manage according to whether return-link optimization is desired.
- FIG. 5 shows a block diagram of an embodiment of a client optimizer 220 having additional storage capacity and mode selection, according to various embodiments.
- the client optimizer 220 a of FIG. 5 includes a request manager 416 , a request encoder 418 , a response manager 424 , a transport manager 428 , and a server dictionary model 224 .
- the client optimizer 220 a of FIG. 5 also includes a client dictionary 524 , a mode selector 520 , and file sharing detectors 510 .
- Embodiments of the client optimizer 220 a operate in a “file sharing” operating mode when file sharing content (e.g., or any content deemed a likely upload-after-download candidate) is detected and in a “normal” mode for other types of traffic, as described below.
- file sharing content e.g., or any content deemed a likely upload-after-download candidate
- the content is received via the transport manager 428 by the client optimizer 220 .
- the received content is evaluated by the file sharing detector 510 to determine whether the content includes file sharing content.
- file sharing content is used herein to describe any traffic having a probability of being uploaded after download. This determination can be made in a number of ways. For example, metadata may be evaluated to look for certain file sharing protocols, certain types of content (e.g., file types) may be deemed more likely to be re-uploaded, patterns of use may be evaluated to find upload-after-download candidates, etc.
- the determination of the file sharing detector 510 may be used to set the operating mode of the client optimizer 220 a for handling that content, and the response manager 424 may process the content according to that operating mode.
- the mode selector 520 may be set such that the client optimizer 220 a processes the content in “file sharing” operating mode.
- the file sharing content may be processed as described above with reference to FIG. 4 .
- the response manager 424 may generate one or more identifiers (e.g., digests) for storage in the server dictionary model 224 , and may pass the content to the user machine 214 .
- the mode selector 520 may be set such that the client optimizer 220 a processes the content in “normal” operating mode.
- the content may be processed in a number of ways, including using the client dictionary 524 for various types of optimization.
- the normal operating mode exploits deltacasting opportunities, as described in U.S. patent application Ser. No. 12/651,909, entitled “DELTACASTING” (017018-019510US), filed on Jan. 4, 2010, which is incorporated herein by reference in its entirety for all purposes.
- the normal operating mode configures the client optimizer 220 a to implement functionality of delta coders, caches, and/or other types of network components known in the art.
- the upload request may be sent to the client optimizer 220 .
- the request manager 416 in the client optimizer 220 processes (e.g., parses) the upload request to find any object or other content data that should be evaluated for optimization.
- the parsed data is then encoded by the request encoder 418 to generate one or more identifiers associated with the content requested for upload.
- the identifiers may then be evaluated against one or both of the server dictionary model 224 and the client dictionary 524 to find and/or exploit matches.
- information obtained from processing the upload request is used by the file sharing detector 510 to determine whether the upload request includes file sharing traffic.
- the operating mode may then be selected by the mode selector 520 and the upload request may be encoded by the request encoder 418 according to the determination of the file sharing detector 510 . For example, if the file sharing detector 510 detects file sharing content, the mode selector 520 may select the “file sharing” operating mode. In this mode, the request encoder 418 may generate a weak identifier for use in finding matching digests in the server dictionary model 224 without any reference to the client dictionary 524 . As discussed above, any matches found in the server dictionary model 224 may then be used to compress the upload request, for example, for return-link optimization.
- embodiments of the communication system 400 are used to provide interactive Internet services (e.g., access to the world-wide web, email communications, file serving and sharing, etc.), television services (e.g., satellite broadcast television, Internet protocol television (IPTV), on-demand programming, etc.), voice communications (e.g., telephone services, voice-over-Internet-protocol (VoIP) telephony, etc.), networking services (e.g., mesh networking, VPN, VLAN, MPLS, VPLS, etc.), and other communication services.
- interactive Internet services e.g., access to the world-wide web, email communications, file serving and sharing, etc.
- television services e.g., satellite broadcast television, Internet protocol television (IPTV), on-demand programming, etc.
- voice communications e.g., telephone services, voice-over-Internet-protocol (VoIP) telephony, etc.
- networking services e.g., mesh networking, VPN, VLAN, MPLS, VPLS, etc.
- the “response” data discussed above is intended only as an illustrative type of data that may be received by the server optimizer 230 from a content source (e.g., a content server 250 ).
- a content source e.g., a content server 250
- the “response” data may actually be pushed, multicast, or otherwise communicated to the user without an explicit request from the user.
- FIG. 6 shows an illustrative method 600 for performing return-link optimization, according to various embodiments.
- the method 600 illustrates an “upload-after-download” scenario (e.g., a re-upload to the Internet, P2P file sharing of previously downloaded content, etc.).
- the method 600 is performed by one or more components of a client optimizer 220 , as described above with reference to FIGS. 1-5 .
- the method 600 is shown with reference to client-side activities 602 and server-side activities 604 , and with reference to illustrative timing on a timeline 605 .
- client-side functions may be performed by server-side components
- server-side functions may be performed by client-side components
- specific timing of process blocks may be changed without affecting the method 600 .
- the timeline 605 is not intended to show any time scale (relative or absolute), and certain process blocks may occur in series, in parallel, or otherwise, according to various embodiments. For at least these reasons, it will be appreciated that these elements of FIG. 6 are intended only for clarity and are not intended to limit the scope of the method 600 in any way.
- Some embodiments of the method 600 begin at a first time 610 a (shown on timeline 605 ), when the client side 602 (e.g., a user of a user machine) requests content for download in block 620 .
- the server side 604 receives and processes the request at block 624 .
- the server side 604 transmits the requested content to the requesting client side 602 in response to the request.
- the server side 604 also determines whether the content represents an optimization candidate at block 636 c. For example, the server side 604 may evaluate the response data to determine whether it includes file sharing content. If the traffic is deemed an optimization candidate (e.g., or in all cases, for example, where a determination is not made at block 636 c ), the server side 604 stores the response data in a local dictionary at block 630 .
- the client side 602 receives the content at block 632 .
- the client side 602 determines whether the content represents an optimization candidate at block 636 a. Embodiments of the determination may be similar to those made at the server side 604 in block 636 c.
- the client side 602 may evaluate the response data to determine whether it includes file sharing content. If the traffic is deemed an optimization candidate, identifiers (e.g., digests) may be generated at block 640 and used to update a server dictionary model at the client side 602 .
- identifiers e.g., digests
- the client side 602 makes a request at block 644 that involves upload of the content received in block 632 .
- the client side 602 desires to re-upload the content to the another location on the Internet, share the content with another user via the communication system, etc.
- the upload request is intercepted at block 636 b and a determination is made (e.g., as in block 636 a ) as to whether the upload request includes content relating to an optimization candidate (e.g., file sharing content).
- an identifier may be generated at block 648 .
- a weak identifier may be generated by applying a hashing function to the upload content data.
- the identifier is used to find any candidate matches among the digests stored in the server dictionary model. If matches are not found, the content data may be uploaded at block 656 a. If matches are found, the matching digests may be used to generate and upload a highly compressed version of the upload content at block 656 b.
- the server side 604 may receive and process the uploaded content at block 660 .
- the server dictionary may be updated with any blocks not already in the dictionary. For example, if the content is uploaded at block 656 a without digest-based compression, or if some of the blocks of the content were uploaded without digest-based compression due to changes in the file, the server dictionary may be updated at block 664 .
- the upload-after-download scenario is part of a peer-to-peer (P2P) file sharing process, or some other process in which the upload is destined for a node of the communications system other than the server side 604 .
- P2P peer-to-peer
- the uploaded content may then be communicated to a destination node at block 668 .
- the content may be pushed to a user at the same or another client side 602 .
- FIG. 7 shows an illustrative method 700 for performing return-link optimization for an upload-after-upload transaction, according to various embodiments. As with the method 600 of FIG. 6 , the method 700 is shown with reference to client-side activities 702 and server-side activities 704 , and with reference to illustrative timing on a timeline 705 .
- Embodiments of the method 700 begin at a first time 710 a (shown on timeline 705 ), when the client side 702 (e.g., a user of a user machine) requests upload of content in block 720 .
- the upload request is intercepted at block 724 a and a determination is made as to whether the upload request includes content relating to an optimization candidate (e.g., file sharing content). If so, an identifier (e.g., a digest) may be generated at block 728 and added to the server dictionary model. For example, it may be assumed that the data will be stored in the server dictionary after it is received by the server side 704 as part of the present upload request.
- an optimization candidate e.g., file sharing content
- the content may then be uploaded at block 732 . It is assumed in the illustrative method 700 that this is the first time the content is being uploaded to the server side 704 .
- the uploaded content is received and processed by the server side 704 at block 736 .
- the server dictionary is updated to reflect the uploaded content.
- the client side 702 makes a request at block 744 that involves a second upload of the content previously uploaded in block 732 .
- the client side 702 desires to re-upload the content to another location on the Internet, share the content with another user via the communication system, etc.
- the upload request is intercepted at block 724 b and a determination is made (e.g., as in block 724 a ) as to whether the upload request includes content relating to an optimization candidate (e.g., file sharing content).
- an optimization candidate e.g., file sharing content
- an identifier may be generated at block 748 .
- a weak identifier may be generated by applying a hashing function to the upload content data.
- the identifier is used to find any candidate matches among the digests stored in the server dictionary model. If matches are not found, the content data may be uploaded at block 756 a. If matches are found, the matching digests may be used to generate and upload a highly compressed version of the upload content at block 756 b.
- the server side 704 may receive and processes the uploaded content at block 760 .
- the server dictionary may be updated with any blocks not already in the dictionary. For example, if the content is uploaded at block 756 a without digest-based compression, or if some of the blocks of the content were uploaded without digest-based compression due to changes in the file, the server dictionary may be updated at block 764 .
- the uploaded content may then be communicated to a destination node other than the server side 704 at block 768 .
- blocks 744 , 748 , 752 , 756 a, 756 b, 760 , 764 , and 768 of the method 700 of FIG. 7 may be implemented substantially identically to blocks 644 , 648 , 652 , 656 a, 656 b, 660 , 664 , and 668 of the method 600 of FIG. 6 , respectively.
- the data may be used to reduce return-link bandwidth on future uploads of the same content.
- embodiments of systems and methods described herein handle both upload-after-download and upload-after-upload transactions.
- the processing units may be implemented within one or more application specific integrated circuits (ASICs), digital signal processors (DSPs), digital signal processing devices (DSPDs), programmable logic devices (PLDs), field-programmable gate arrays (FPGAs), soft core processors, hard core processors, controllers, micro-controllers, microprocessors, other electronic units designed to perform the functions described above, and/or a combination thereof.
- ASICs application specific integrated circuits
- DSPs digital signal processors
- DSPDs digital signal processing devices
- PLDs programmable logic devices
- FPGAs field-programmable gate arrays
- Soft core processors hard core processors
- controllers micro-controllers
- microprocessors other electronic units designed to perform the functions described above, and/or a combination thereof.
- Software can be used instead of or in addition to hardware to perform the techniques, blocks, steps, and means.
- the embodiments may be described as a process which is depicted as a flowchart, a flow diagram, a data flow diagram, a structure diagram, or a block diagram. Although a flowchart may describe the operations as a sequential process, many of the operations can be performed in parallel or concurrently. In addition, the order of the operations may be re-arranged.
- a process is terminated when its operations are completed, but could have additional steps not included in the figure.
- a process may correspond to a method, a function, a procedure, a subroutine, a subprogram, etc. When a process corresponds to a function, its termination corresponds to a return of the function to the calling function or the main function.
- embodiments may be implemented by hardware, software, scripting languages, firmware, middleware, microcode, hardware description languages, and/or any combination thereof.
- the program code or code segments to perform the necessary tasks may be stored in a machine readable medium such as a storage medium.
- a code segment or machine-executable instruction may represent a procedure, a function, a subprogram, a program, a routine, a subroutine, a module, a software package, a script, a class, or any combination of instructions, data structures, and/or program statements.
- a code segment may be coupled to another code segment or a hardware circuit by passing and/or receiving information, data, arguments, parameters, and/or memory contents. Information, arguments, parameters, data, etc. may be passed, forwarded, or transmitted via any suitable means including memory sharing, message passing, token passing, network transmission, etc.
- the methodologies may be implemented with modules (e.g., procedures, functions, and so on) that perform the functions described herein.
- Any machine-readable medium tangibly embodying instructions may be used in implementing the methodologies described herein.
- software codes may be stored in a memory.
- Memory may be implemented within the processor or external to the processor.
- the term “memory” refers to any type of long term, short term, volatile, nonvolatile, or other storage medium and is not to be limited to any particular type of memory or number of memories, or type of media upon which memory is stored.
- the term “storage medium” may represent one or more memories for storing data, including read only memory (ROM), random access memory (RAM), magnetic RAM, core memory, magnetic disk storage mediums, optical storage mediums, flash memory devices and/or other machine readable mediums for storing information.
- ROM read only memory
- RAM random access memory
- magnetic RAM magnetic RAM
- core memory magnetic disk storage mediums
- optical storage mediums flash memory devices and/or other machine readable mediums for storing information.
- cache are intended to broadly include any type of storage, including temporary or persistent storage, queues (e.g., FIFO, LIFO, etc.), buffers (e.g., circular, etc.), etc.
- machine-readable medium includes, but is not limited to, portable or fixed storage devices, optical storage devices, wireless channels, and/or various other storage mediums capable of storing that contain or carry instruction(s) and/or data.
Landscapes
- Engineering & Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Multimedia (AREA)
- Computer Security & Cryptography (AREA)
- Aviation & Aerospace Engineering (AREA)
- Astronomy & Astrophysics (AREA)
- General Physics & Mathematics (AREA)
- Physics & Mathematics (AREA)
- Data Exchanges In Wide-Area Networks (AREA)
- Radio Relay Systems (AREA)
- Mobile Radio Communication Systems (AREA)
- Information Transfer Between Computers (AREA)
Abstract
Methods, apparatuses, and systems for return-link optimization are provided. Embodiments identify upload-after-download content (e.g., file sharing content) upon download, and generate one or more identifiers characterizing the content (e.g., a digest). The identifiers are stored in a client-side server dictionary model reflecting a presumption that the content is stored in a server-side dictionary. When content is later uploaded, the server dictionary model is used to identify when the upload content matches previously downloaded content. When a match is detected, the stored identifiers are used to generate a highly compressed version of the upload content, which is then uploaded to the server instead of uploading the full content data. In some embodiments, similar techniques are used to optimize return link bandwidth usage for upload-after-upload transactions.
Description
- This application claims the benefit of and is a non-provisional of co-pending U.S. Provisional Application Ser. No. 61/144,363, filed on Jan. 13, 2009, titled “SATELLITE MULTICASTING”; and co-pending U.S. Provisional Application Ser. No. 61/170,359, filed on Apr. 17, 2009, titled “DISTRIBUTED BASE STATION SATELLITE TOPOLOGY,” both of which are hereby expressly incorporated by reference in their entirety for all purposes.
- This disclosure relates in general to communications and, but not by way of limitation, to optimization of return links of a communications system.
- In some satellite communications systems, a single user plays a dual role of client and server (e.g., in a peer-to-peer environment). For example, a user may desire to share previously downloaded content with another user. Certain types of local networking and/or shared caching techniques may be used to limit redundancies and/or other inefficiencies associated with these types of transactions. However, the techniques may rely at times on users sharing a subnet, relatively symmetric client-server storage capabilities, relatively symmetric upload-download capabilities of the network links, or other types of network characteristics.
- As such, it may be desirable to further mitigate inefficiencies associated with these types of communications while avoiding limitations of current approaches.
- Among other things, methods, systems, devices, and software are provided for improving utilization of a communications system (e.g., a satellite communications system) through techniques referred to herein as return-link optimization. Embodiments operate in a client-server context (or a more generalized sender-receiver context). When content is downloaded by a client from a server, a client optimizer intercepts the download and generates one or more identifiers characterizing the content (e.g., a digest). The identifiers are stored in a client-side server dictionary model reflecting a presumption that the content is stored in a server-side dictionary. In some embodiments, the actual data blocks (e.g., byte sequences) making up the content are not stored at the client side; only digests or other identifiers are stored.
- In some embodiments, when content is uploaded by the client at some later time, the server dictionary model is used to identify when the upload content matches previously downloaded (e.g., or, in some embodiments, previously uploaded) content. When a match is detected, the identifiers stored in the server dictionary model are used to generate a highly compressed version of the upload content, which is then uploaded to the server instead of the full content data. In this way, return-link bandwidth usage can be reduced for these types of transactions.
- In one set of embodiments, a system is provided for managing return-link resource usage in a communications system. The system includes a local dictionary model configured to store identifiers associated with data blocks stored on a remote dictionary, where the remote dictionary is located at a remote node of the communications system. For example, the remote dictionary may be a server dictionary in communication with a server optimizer. The system further includes a download processor module, configured to: receive a first content data block from a remote device associated with the remote dictionary; store the first content data block in a local store (e.g., a buffer); calculate a first identifier (e.g., a digest) from the first content data block; store the first identifier in the local dictionary model; and remove the first content data block from the local store. The system further includes an upload processor module, configured to: receive a second content data block for upload to the remote device; calculate a second identifier from the second content data block; determine whether the second identifier matches the first identifier stored in the local dictionary model; and when the second identifier matches the first identifier, use the first identifier or the second identifier to compress the second content data block into compressed content.
- Further areas of applicability of the present disclosure will become apparent from the detailed description provided hereinafter. It should be understood that the detailed description and specific examples, while indicating various embodiments, are intended for purposes of illustration only and are not intended to necessarily limit the scope of the disclosure.
- The present disclosure is described in conjunction with the appended figures:
-
FIG. 1 shows a simplified block diagram of one embodiment of a communications system for use with various embodiments; -
FIG. 2A shows a simplified block diagram of one embodiment of a client-server communications system for use with various embodiments; -
FIG. 2B shows a simplified block diagram of an embodiment of a communications system having multiple user systems for use with various embodiments; -
FIG. 3 shows a block diagram of an embodiment of a satellite communications system having a server system in communication with multiple user systems via a satellite over multiple spot beams, according to various embodiments; -
FIG. 4 shows a block diagram of an embodiment of a communications system, illustrating client-server interactivity through a client optimizer and a server optimizer, according to various embodiments; -
FIG. 5 shows a block diagram of an embodiment of a client optimizer having additional storage capacity and mode selection, according to various embodiments; -
FIG. 6 shows an illustrative method for performing return-link optimization, according to various embodiments; and -
FIG. 7 shows an illustrative method for performing return-link optimization for an upload-after-upload transaction, according to various embodiments. - In the appended figures, similar components and/or features may have the same reference label. Further, various components of the same type may be distinguished by following the reference label by a dash and a second label that distinguishes among the similar components. If only the first reference label is used in the specification, the description is applicable to any one of the similar components having the same first reference label irrespective of the second reference label.
- The ensuing description provides preferred exemplary embodiment(s) only, and is not intended to limit the scope, applicability, or configuration of the disclosure. Rather, the ensuing description of the preferred exemplary embodiment(s) will provide those skilled in the art with an enabling description for implementing a preferred exemplary embodiment. It is understood that various changes may be made in the function and arrangement of elements without departing from the spirit and scope as set forth in the appended claims.
- Referring first to
FIG. 1 , a simplified block diagram is shown of one embodiment of acommunications system 100 for use with various embodiments. Thecommunications system 100 facilitates communications between asender optimizer 120 on asender side 110 and areceiver optimizer 140 on areceiver side 130. Thesender optimizer 120 and thereceiver optimizer 140 are configured to effectively provide anoptimizer tunnel 105 between thesender side 110 and thereceiver side 130 of thecommunications system 100, including providing certain communications functionality. - Embodiments of the optimizers (e.g., the
sender optimizer 120 and/or the receiver optimizer 140) can be implemented in a number of ways without departing from the scope of the invention. In some embodiments, the optimizers are implemented as proxy components (e.g., a two-part proxy client/server topology), such that theoptimizer tunnel 105 is a proxy tunnel. For example, a transparent intercept proxy can be used to intercept traffic in a way that is substantially transparent to users at each side of the proxy tunnel. In other embodiments, the optimizers are implemented as in-line optimizers. For example, the optimizers are implemented within respective user or provider terminals. Other configurations are possible in other embodiments. For example, embodiments of thereceiver optimizer 140 are implemented in the Internet cloud (e.g., on commercial network leased server space), and embodiments of thesender optimizer 120 are implemented within a user system (e.g., in user's personal computer, within a user's modem, in a physically separate component at the customer premises, etc.). - Various embodiments of optimizers may include and/or have access to different amounts of storage. Some embodiments are configured to cache data, store dictionaries of byte sequences, etc. For example, in the
communications system 100, thereceiver optimizer 140 has access to enough storage to maintain areceiver dictionary 144. Embodiments of thereceiver dictionary 144 include chunks of content data (e.g., implemented as delta dictionaries, wide dictionaries, byte caches, and/or other types of dictionary structures). For example, when content data is stored in the dictionary, some or all of the blocks of data defining the content are stored in the dictionary in an unordered, but indexed way. As such, content may not be directly accessible from the dictionary; rather, the set of indexes may be needed to recreate the content from the set of unordered blocks. - Other embodiments of optimizers have substantially limited storage. For example, in the
communications system 100, thesender optimizer 120 has access only to a small amount of storage. The storage capacity may be too limited to store a full dictionary, but sufficient to store a model of thereceiver dictionary 144, illustrated as thereceiver dictionary model 124. Embodiments of thereceiver dictionary model 124 store digests representing data stored at thereceiver dictionary 144. For example, as described more fully below, embodiments of thesender optimizer 120 intercept traffic, and use one or more techniques to generate digests of byte sequences of the traffic. The digests are then stored in thereceiver dictionary model 124, and can be used to identify matching byte sequences in thereceiver dictionary 144. - As used herein, “digests” may generally include any type of fingerprint, digest, signature, hash function, and/or other functional coding of byte sequences generated so as to provide a strong enough identifier to reliably represent substantially identical matching blocks stored in a dictionary. For example, a user on the
sender side 110 of thecommunications system 100 downloads content from thereceiver side 130 of thecommunications system 100. In one embodiment, the content is intercepted by thesender optimizer 120 and a digest is created and stored in thereceiver dictionary model 124. Storage of the digest in thereceiver dictionary model 124 indicates that a full copy of the downloaded content is stored in thereceiver dictionary 144 on thereceiver side 130 of thecommunications system 100 without storing a copy of the data on thesender side 110 of thecommunications system 100. - If the user at the
sender side 110 later uploads the content to thereceiver side 130, embodiments of thesender optimizer 120 intercept the upload to see if the content was previously downloaded from the receiver side 130 (i.e., the content is presumed to be stored in thereceiver dictionary 144 according to the receiver dictionary model 124). If the content is determined to be previously downloaded content, a highly compressed version of the content may be uploaded to thereceiver side 130. Notably, this technique may allow significant reductions in return-link resource usage for file sharing traffic and/or other upload-after-download traffic, even where there is a very small amount of storage capacity accessible by the sender optimizer 120 (e.g., enough to store only a receiver dictionary model 124). - It will be appreciated that the limited storage capacity at the
sender optimizer 120 may be considered differently in different embodiments. In one embodiment, thesender optimizer 120 is implemented within a network device (e.g., a user modem) having minimal storage capacity. In another embodiment, thesender optimizer 120 is configured to operate in different operating modes, where one or more operating modes is configured to use minimal storage capacity. For example, thesender optimizer 120 may operate either in a normal mode that stores dictionary entries for certain types of traffic or in a file sharing mode (when file sharing traffic is detected) that only stores digests without storing the actual file sharing content. - Embodiments of the
sender optimizer 120 implement certain functionality described herein when file sharing or similar types of content are detected (e.g., resulting in switching into a file sharing mode, as described above). In some embodiments, the detection involves determining that traffic intercepted during a download is likely to be uploaded at some later time. The determination may account for certain tags or protocols in the metadata, which application is downloading the data, which ports are carrying the traffic, etc. For example, file sharing data may be assumed to have a high probability of upload after download, while Internet-protocol television (IPTV) or voice-over-Internet-protocol (VoIP) content may carry a low probability of upload after download. As used herein, “file sharing” connotes traffic and associated environments in which a downloader of content becomes a provider (e.g., a server) of the content. For example, peer-to-peer and other types of file sharing applications may allow a downloader to become a server in the context of particular traffic. - It is worth noting that many file sharing applications fragment files for communication. For example, some programs allow clients to download a content file in parallel from multiple sources (e.g., other peers on the network) by receiving fragments of the file from each source. As discussed more fully below, embodiments generate identifiers (e.g., digests) at the data block level, rather than at the full-file level. In this way, optimization opportunities may be identified even from file fragments, and even when fragments are received asynchronously, out of order, etc.
- It is worth noting that the storage capacity of the
sender optimizer 120, as discussed above, may be distinct from other storage capacity at thesender side 110 of thecommunications system 100. For example, there may be a user machine 114 at one or both sides of thecommunications system 100. The user machine 114 may broadly include any type of machine through which a user may interact with content over thecommunications system 100. For example, the user machine 114 may include consumer premises equipment (CPE), such as computers, televisions, etc. Further, as illustrated, the user machines 114 may have access to their own respective machine storage 118. The machine storage 118 may include hard-disk space, application storage, cache capacity, etc. - Notably, the optimizers at each side of the
communications system 100 may or may not have access to the respective machine storage 118. For example, embodiments of thesender optimizer 120 may typically have little or no access to the machine storage 118. In some embodiments, thesender optimizer 120 is an independent (e.g., transparent) network component that does not have access to the machine storage 118. In other embodiments, it is inefficient or impractical for thesender optimizer 120 to access machine storage 118 for various optimization processes. For example, access to the machine storage 118 may be too slow to provide desirable optimization benefits. As such, embodiments of thesender optimizer 120 are described as having limited storage capacity (e.g., or operating in a mode with limited storage capacity) even where other storage capacity is available at thesender side 110 of thecommunications system 100. - While the
communications system 100 ofFIG. 1 is illustrated generically as asender side 110 andreceiver side 130, some typical embodiments operate in a client-server context.FIG. 2A shows a simplified block diagram of one embodiment of a client-server communications system 200 a for use with various embodiments. Thecommunications system 200 a facilitates communications between a user system 210 and aserver system 320 via aclient optimizer 220 and aserver optimizer 230. Theclient optimizer 220 and theserver optimizer 230 are configured to effectively provide anoptimizer tunnel 205 between the user system 210 and theserver system 320, including providing certain communications functionality. Notably, client and server are used herein to clarify particular sides of the communications system, and are not intended to limit the respective roles, functions, direction of communications, etc. For example, in a peer-to-peer context, users may act as both clients and servers in file sharing transactions. - In an illustrative file sharing transaction, the
client optimizer 220 and theserver optimizer 230 implement functionality of thesender optimizer 120 and thereceiver optimizer 140 ofFIG. 1 , respectively. For example, a user downloads content from acontent server 250 over anetwork 240 through the user system 210. Embodiments of the user system 210 may include any component or components for providing a user with network interactivity. For example, the user system 210 may include any type of computational device, network interface device, communications device, or other device for communicating data to and from the user. Typically, thecommunications system 200 a facilitates communications between multiple user systems 210 and a variety ofcontent servers 250 over one or more networks 240 (only one of each is shown inFIG. 2A for the sake of clarity). Thecontent servers 250 are in communication with theserver optimizer 230 via one ormore networks 240. Thenetwork 240 may be any type ofnetwork 240 and can include, for example, the Internet, an Internet protocol (“IP”) network, an intranet, a wide-area network (“WAN”), a local-area network (“LAN”), a virtual private network (“VPN”), the Public Switched Telephone Network (“PSTN”), and/or any other type ofnetwork 240 supporting data communication between devices described herein, in different embodiments. Thenetwork 240 may also include both wired and wireless connections, including optical links. - As used herein, “content servers” is intended broadly to include any source of content in which the users may be interested. For example, a
content server 250 may provide website content, television content, file sharing, multimedia serving, voice-over-Internet-protocol (VoIP) handling, and/or any other useful content. It is worth noting that, in some embodiments, thecontent servers 250 are in direct communication with the server optimizer 230 (e.g., not through the network 240). For example, theserver optimizer 230 may be located in a gateway that includes a content or application server. As such, discussions of embodiments herein with respect to communications withcontent servers 250 over thenetwork 240 are intended only to be illustrative, and should not be construed as limiting. - As described below, the
server optimizer 230 may be part of aserver system 320 that includes components for server-side communications (e.g., base stations, gateways, satellite modem termination systems (SMTSs), digital subscriber line access multiplexers (DSLAMs), etc., as described below with reference toFIG. 3 ). Theserver optimizer 230 may act as a transparent and/or intercepting proxy. For example, theclient optimizer 220 is in communication with theserver optimizer 230 over a client-server communication link 225, and theserver optimizer 230 is in communication with thecontent server 250 over a content network link 235. Theserver optimizer 230 may act as a transparent man-in-the-middle to intercept the data as it passes between the client-server communication link 225 and the content network link 235. Further, embodiments of theserver optimizer 230 maintain a server dictionary 234 (e.g., like thereceiver dictionary 144 ofFIG. 1 ) including byte sequences of some or all of the traffic previously seen by theserver optimizer 230. - For example, when the user system 210 downloads content from the
content server 250, theserver optimizer 230 may intercept the content and store blocks of content data in theserver dictionary 234. The content may then be sent (e.g., over the client-server communication link 225) to the user terminal 210 in response to the user's request for the content. Theclient optimizer 220 intercepts the traffic at the client side of theoptimizer tunnel 205 and generates a digest of the content, as described above. The digest is stored in aserver dictionary model 224. In some embodiments, additional data (e.g., fingerprints) are generated to facilitate efficient searches for the digests in theserver dictionary model 224. For example, the digest may be a strong identifier that can reliably represent an identical data block stored at theserver dictionary 234, and a weak identifier (e.g., a hash) may be generated for quickly finding matching candidates among a large set of digests. - In the event that the content is later uploaded to the
communications system 200 a, theclient optimizer 220 may intercept the upload (e.g., the request may be directed or redirected to the client optimizer 220) and look for a match in theserver dictionary model 224, indicating presumptive existence of the upload content on theserver dictionary 234. If a match is found, a highly compressed version of the content may be communicated to theserver system 320 over the client-server communication link 225. For example, the highly compressed version may use the matching digests or other identifiers (e.g., block IDs) from theserver dictionary model 224 as indexes to recreate the content at the server side from byte sequences stored in theserver dictionary 234. - It is worth noting that the upload may not be ultimately destined for the
server system 320. For example, in a peer-to-peer context, the upload may actually be from one user system 210 to another user system 210. While thecommunications system 200 a illustrated inFIG. 2A shows only oneoptimizer tunnel 205 between oneserver system 320 and one user system 210, embodiments typically operate in the context of, and take advantage of, optimization among multiple user systems 210.FIG. 2B shows a simplified block diagram of an embodiment of acommunications system 200 b having multiple user systems 210 for use with various embodiments. Thecommunications system 200 b facilitates communications between aserver system 320 and multiple user systems 210, via arespective server optimizer 230 and at least oneclient optimizer 220. - As described above with reference to
FIG. 2A , afirst user system 210 a may desire to upload content after a previous download of the content from theserver system 320. Using theclient optimizer 220, theserver optimizer 230, theserver dictionary 234, and theserver dictionary model 224, return-link bandwidth may be optimized for this scenario. Notably, the optimized return-link bandwidth may refer to the return link between thefirst user system 210 a and theserver system 320, regardless of the ultimate destination of the upload content. For example, the return link may be optimized even where the ultimate destination of the content is thesecond user system 210 n, such that the content is further communicated from theserver system 320 to other nodes of thecommunications system 200 b. - Further, it is worth noting that embodiments may optimize the return-link bandwidth, regardless of whether the ultimate destination terminal includes optimization functionality. For example, some embodiments of the
second user system 210 n include asecond client optimizer 220 n that is in communication with theserver optimizer 230 and maintains its ownserver dictionary model 224 n. In other embodiments, however, thesecond client optimizer 220 n may be any receiving node anywhere on the network, even one having noclient optimizer 220 n and/or noserver dictionary model 224 n. For example, the return-link optimization may be effectuated between thefirst user system 210 a and theserver system 320 via theirrespective client optimizer 220 andserver optimizer 230, even where the destination for the traffic is some node of the network other than theserver system 320. -
FIGS. 1 , 2A, and 2B illustrate various types of communications systems for use with embodiments of the invention using generic component designations. It will be appreciated that these components may be implemented in various nodes of various types and topologies of communications systems. For example, the communications systems may include cable communications systems, satellite communications systems, digital subscriber line (DSL) communications systems, local are networks (LANs), wide area networks (WANs), etc. Further, the links of the communications systems may include wired and/or wireless links, Ethernet links, coaxial cable links, fiber-optic links, etc. Some embodiments include shared portions of the forward and/or reverse links between nodes (e.g., a shared spot beam in a satellite communications system), while other embodiments include unshared links between nodes (e.g., in an Ethernet network). - In one illustrative example,
FIG. 3 shows a block diagram of an embodiment of asatellite communications system 300 having aserver system 320 in communication with multiple user systems 210 via asatellite 305 over multiple spot beams 335, according to various embodiments. Theserver system 320 may include any server components, including base stations 315,gateways 317, etc. A base station 315 is sometimes referred to as a hub or ground station. In certain embodiments, the base station 315 has functionality that is the same or different from agateway 317. For example, as illustrated, agateway 317 provides an interface between thenetwork 240 and thesatellite 305 via a number of base stations 315. Various embodiments provide different types of interfaces between thegateways 317 and base stations 315. For example, thegateways 317 and base stations 315 may be in communication over leased high-bandwidth lines (e.g., raw Ethernet), a virtual private large-area network service (VPLS), an Internet protocol virtual private network (IP VPN), or any other public or private, wired or wireless network. Embodiments of theserver system 320 are in communication with one ormore content servers 250 via one ormore networks 240. - As traffic traverses the
satellite communications system 300 in multiple directions, thegateway 317 may be configured to implement multi-directional communications functionality. For example, thegateway 317 may send data to and receive data from the base stations 315. - Similarly, the
gateway 317 may be configured to receive data and information directed to one or more user systems 210, and format the data and information for delivery to the respective destination device via thesatellite 305; or receive signals from the satellite 305 (e.g., from one or more user systems 210) directed to a destination in thenetwork 240, and process the received signals for transmission through thenetwork 240. - In various embodiments, one or more of the satellite links are capable of communicating using one or more communication schemes. In various embodiments, the communication schemes may be the same or different for different links. The communication schemes may include different types of coding and modulation combinations. For example, various satellite links may communicate using physical layer transmission modulation and coding techniques using adaptive coding and modulation schemes, etc. The communication schemes may also use one or more different types of multiplexing schemes, including Multi-Frequency Time-Division Multiple Access (“MF-TDMA”), Time-Division Multiple Access (“TDMA”), Frequency Division Multiple Access (“FDMA”), Orthogonal Frequency Division Multiple Access (“OFDMA”), Code Division Multiple Access (“CDMA”), or any number of other schemes.
- The
satellite 305 may operate in a multi-beam mode, transmitting a number of spot beams 335, each directed at a different region of the earth. Each spot beam 335 may be associated with one of the user links, and used to communicate between thesatellite 305 and a large group (e.g., thousands) of user systems 210 (e.g., user terminals 330 within the user systems 210). The signals transmitted from thesatellite 305 may be received by one or more user systems 210, via a respective user antenna 325. In some embodiments, some or all of the user systems 210 include one or more user terminals 330 and one or more CPE devices 360. User terminals 330 may include modems, satellite modems, routers, or any other useful components for handling the user-side communications. Reference to “users” should be construed generally to include any user (e.g., subscriber, consumer, customer, etc.) of services provided over the satellite communications system 300 (e.g., by or through the server system 320). - In a given spot beam 335, some or all of the users (e.g., user systems 210) serviced by the spot beam 335 may be capable of receiving all the content traversing the spot beam 335 by virtue of the fact that the
satellite communications system 300 employs wireless communications via various antennae (e.g., 310 and 325). However, some of the content may not be intended for receipt by certain customers. As such, thesatellite communications system 300 may use various techniques to “direct” content to a user or group of users. For example, the content may be tagged (e.g., using packet header information according to a transmission protocol) with a certain destination identifier (e.g., an IP address), use different modcode points that can be reliably received only by certain user terminals 330, send control information to user systems 210 to direct the user systems 210 to ignore or accept certain communications, etc. Each user system 210 may then be adapted to handle the received data accordingly. For example, content destined for a particular user system 210 may be passed on to its respective CPE 360, while content not destined for the user system 210 may be ignored. In some cases, the user system 210 caches information not destined for the associated CPE 360 for use if the information is later found to be useful in avoiding traffic over the satellite link, as described in more detail below. - Embodiments of the
server system 320 and/or the user system 210 include an accelerator module and/or other processing components. In one embodiment, real-time types of data (e.g., User Datagram Protocol (“UDP”) data traffic, like Internet-protocol television (“IPTV”) programming) bypass the accelerator module, while non-real-time types of data (e.g., Transmission Control Protocol (“TCP”) data traffic, like web video) are routed through the accelerator module for processing. Embodiments of the accelerator module provide various types of applications, WAN/LAN, and/or other acceleration functionality. - In some embodiments, the accelerator module is adapted to provide high payload compression. This allows faster transfer of the data and enhances the effective capacity of the network. The accelerator module can also implement protocol-specific methods to reduce the number of round trips needed to complete a transaction, such as by prefetching objects embedded in HTTP pages. In other embodiments, functionality of the accelerator module is closely integrated with the satellite link through other modules, including the
client optimizer 220 and/or theserver optimizer 230. - As discussed above, the
satellite communications system 300 may be configured to implement various optimization functions through client-server interactions, implemented by theclient optimizer 220 and theserver optimizer 230. Theserver optimizer 230 may be configured to maintain a server dictionary and theclient optimizer 220 may be configured to maintain a model of the server dictionary. Embodiments of theclient optimizers 220 andserver optimizer 230 may act to create a virtual tunnel between the user systems 210 and thecontent servers 250 or theserver system 320, as described with reference toFIGS. 2A and 2B . In a topology, like thesatellite communications system 300 shown inFIG. 3 , vast amounts of traffic may traverse various portions of thesatellite communications system 300 at any given time. The optimizer functionality may help relieve thesatellite communications system 300 from traffic burdens relating to file sharing and similar transactions (e.g., by optimizing return-link resources). This and other functionality of theclient optimizer 220 and theserver optimizer 230 are described more fully with reference toFIG. 4 . -
FIG. 4 shows a block diagram of an embodiment of acommunications system 400, illustrating client-server interactivity through aclient optimizer 220 and aserver optimizer 230, according to various embodiments. In some embodiments, thecommunications system 400 is an embodiment of thecommunications system 200 a ofFIG. 2A or thesatellite communications system 300 ofFIG. 3 . As shown, thecommunications system 400 facilitates communications between a user system 210 and one ormore content servers 250 via at least one client-server communication link 225. For example, interactions between theclient optimizer 220 and theserver optimizer 230 effectively create anoptimizer tunnel 205 between the user system 210 and thecontent servers 250. In some embodiments, theserver system 320 is in communication with thecontent servers 250 via one ormore networks 240, like the Internet. - In some embodiments, the user system 210 includes a client graphical user interface (GUI) 410, a
web browser 406, and aredirector 408. Theclient GUI 410 may allow a user to configure performance aspects of the user system 210 (e.g., or even aspects of thegreater communications system 400 in some cases). For example, the user may adjust compression parameters and/or algorithms, alter content filters (e.g., for blocking illicit websites), or enable or disable various features used by thecommunications system 400. In one embodiment, some of the features may include network diagnostics, error reporting, as well as controlling, for example, components of theclient optimizer 220 and/or theserver optimizer 230. - In one embodiment, the user selects a universal recourse locator (URL) address through the
client GUI 410 which directs the web browser 406 (e.g., Internet Explorer®, Firefox®, Netscape Navigator®, etc.) to a website (e.g., cnn.com, google.com, yahoo.com, etc.). Theweb browser 406 may then issue a request for the website and associated objects to the Internet. It is worth noting that theweb browser 406 is shown for illustrative purposes only. While embodiments of the user system 210 may typically include at least oneweb browser 406, user systems 210 may interact withcontent servers 250 in a number of different ways without departing from the scope of the invention (e.g., through downloader applications, file sharing applications, applets, etc.). - The content request from the user system 210 (e.g., download request from the web browser 406) may be intercepted by the
redirector 408. It is worth noting that embodiments of theredirector 408 are implemented in various ways. For example, embodiments of theredirector 408 are implemented within a user modem as part of the modem's internal routing functionality. Theredirector 408 may send the request to theclient optimizer 220. It is worth noting that theclient optimizer 220 is shown as separate from the user machine 214 (e.g., in communication over a local bus, on a separate computer system connected to the user system 210 via a high speed/low latency link, like a branch office LAN subnet, etc.). However, embodiments of theclient optimizer 220 are implemented as part of any component of the user system 210 in any useful client-side location, including as part of a user terminal, as part of a user modem, as part of a hub, as a separate hardware component, as a software application on theuser machine 214, etc. - In some embodiments, the
client optimizer 220 includes arequest manager 416. Therequest manager 416 may be configured to perform a number of different processing functions, including Java parsing and protocol processing. Embodiments of therequest manager 416 may process hypertext transfer protocol (HTTP), file transfer protocol (FTP), various media protocols, metadata, header information, and/or other relevant information from the request data (e.g., packets) to allow theclient optimizer 220 to perform its optimizer functions. For example, the request may be processed by therequest manager 416 as part of identifying opportunities for optimizing return-link resources for previously downloaded content. - The
request manager 416 may forward the request to arequest encoder 418. Embodiments of therequest encoder 418 encode the request using one of many possible data compression or similar types of algorithms. For example, strong identifiers and/or weak identifiers may be generated using dictionary coding techniques, including hashes, checksums, fingerprints, signatures, etc. As described below, these identifiers may be used to identify digests in aserver dictionary model 224 indicating matching data blocks in aserver dictionary 234 in, or in communication with, theserver optimizer 230. - In some embodiments, the
request manager 416 and/or therequest encoder 418 process the request content differently, depending on the type of data included in the request. For example, the content portion (e.g., byte-level data) of the data may be processed according to metadata. Some types of schema-specific coding are described in U.S. Provisional Patent Application No. 61/231,265, entitled “METHODS AND SYSTEMS FOR INTEGRATING DELTA CODING WITH SCHEMA SPECIFIC CODING” (026841-002300US), filed on Aug. 4, 2009, which is incorporated herein by reference in its entirety for all purposes. - In some embodiments, the request may be forwarded to a
transport manager 428 a. In one embodiment, thetransport manager 428 a implements Intelligent Compression Technology's° (“ICT”) transport protocol (“ITP”). Nonetheless, other protocols may be used, such as the standard transmission control protocol (“TCP”). In one embodiment, ITP maintains a persistent connection with theserver system 320 via itsserver optimizer 230. The persistent connection between theclient optimizer 220 and theserver optimizer 230 may enable thecommunications system 400 to eliminate or reduce inefficiencies and overhead costs associated with creating a new connection for each request. - In one embodiment, the encoded request is forwarded from the
transport manager 428 a in theclient optimizer 220 to atransport manager 428 b in theserver optimizer 230 to arequest decoder 436. Therequest decoder 436 may use a decoder which is appropriate for the encoding performed by therequest encoder 418. Therequest decoder 436 may then transmit the decoded request to acontent processor 442 configured to communicate the request to an appropriate content source. For example, thecontent processor 442 may communicate with acontent server 250 over anetwork 240. Of course, other types of content sources are possible. For example, some or all of the data blocks that make up the requested content may be available in theserver dictionary 234. As discussed above, embodiments of theserver dictionary 234 include indexed blocks of content data (e.g., byte sequences). - In response to the request, response data may be received by the
content processor 442. For example, the response data may be retrieved from anappropriate content server 250, from theserver dictionary 234, etc. The response data may include various types of information, such as one or more attachments (e.g., media files, text files, etc.), references to “in-line” objects needed to render a web page, etc. Embodiments of thecontent processor 442 may be configured to interpret the response data, which may, for example, be received as HTML, XML, CSS, Java Scripts, or other types of data. In some embodiments, when response data is received, thecontent processor 442 checks theserver dictionary 234 to determine whether the content is already stored by theserver system 230. If not, the content may be stored to theserver dictionary 234. - In some embodiments, the response received at the
content processor 442 is parsed by aresponse parser 444 and/or encoded by aresponse encoder 440. The response data may then be communicated back to the user system 210 via theprotocol managers 428 and the client-server communication link 225. After the response data is received at theclient optimizer 220 by itstransport manager 428 a, the response data is forwarded to aresponse manager 424 for client-side processing. - Embodiments of the
response manager 424 generate a strong identifier (e.g., a digest) of the response data for storage in theserver dictionary model 224. For example, certain embodiments assume that response data is stored in the server dictionary 234 (i.e., the response data was stored either prior to or upon receipt by thecontent processor 442 in theserver optimizer 230. As such, it may be assumed by embodiments of theclient optimizer 220 that theserver dictionary model 224 is, in fact, a model of theserver dictionary 234 without requiring any explicit messages from theserver optimizer 230 to that effect. It is worth noting that, in some embodiments, synchronization techniques are used to ensure that theserver dictionary model 224 remains an accurate model of theserver dictionary 234. For example, theserver optimizer 230 may desire to remove a data block from itsserver dictionary 234. Theserver optimizer 230 may notify theclient optimizer 220 that is it ready to remove the data block, wait for a notification back from theclient optimizer 220 confirming deletion of the data block from theserver dictionary model 224, and then remove the data block from theserver dictionary 234. - In certain embodiments, the
response manager 424 may further generate a weak identifier (e.g., a checksum, a hash, etc.). The weak identifier may be used to quickly find strong identifier entries in theserver dictionary model 224, as described more fully below. Once theserver dictionary model 224 is updated, theresponse manager 424 may forward the response data to the user machine 214 (e.g., via its redirector 408). - At some later time, a user desires to upload the same content that was previously downloaded (referred to as “upload-after-download”). For example, the upload-after-download may occur as part of a file sharing transaction. It is worth noting that the upload-after-download content may be either identical to or different from the originally downloaded content; and where the upload-after-download content is different, it may differ in varying degrees. For example, a user may download a document, modify the document, and re-upload the modified document. Depending on the amount of modification, the upload-after-download content (i.e., the re-uploaded, modified document) may be slightly or significantly different (e.g., at the byte level) from the downloaded version of the document.
- When the user uploads the content in the upload-after-download context, the upload request may be intercepted by the
redirector 408 and sent to theclient optimizer 220. Therequest manager 416 in theclient optimizer 220 parses the upload request to find any object or other content data that should be evaluated for optimization. The parsed data may then be encoded by therequest encoder 418 to generate one or more identifiers associated with the content requested for upload. - In some embodiments, the
request encoder 418 generates a weak identifier (e.g., by applying a hashing function). The weak identifier is then used to quickly find candidate matches for the content among the digests stored in theserver dictionary model 224. As noted above, when matches are found, embodiments of theclient optimizer 220 assume that the content (e.g., or data blocks needed to decompress a compressed version of the content) are presently stored in the server dictionary 234). If matches are found, the matching digests may be used to generate a highly compressed version of the upload content. The highly compressed version of the upload content may then be uploaded to theserver system 320 for decompression and/or further processing. - It is worth noting that strong and weak identifiers, as used herein, may be generated in different ways according to different functions. In some embodiments, received data block are of variable size. The boundaries of the blocks are established, for example, by a function that operates on N bytes. Each time the output of this function has a particular value, a boundary is established. If the value of the function does not match the particular value, the block position may be advanced by one byte and a new function output may be calculated. For computational efficiency, certain embodiments of the function include a rolling checksum or other algorithm that allows the function value to be adjusted as a new byte is added and an old byte is removed from the set of N bytes used to compute the function. This approach may allow the same block boundaries to be established even when starting at different points in a stream (e.g., a session stream).
- The boundary points may delimit blocks of variable sizes, and a strong identifier can then be calculated on each block delimited in this way (e.g., using a Message-Digest algorithm 5 (MD5) technique, or other technique). When a boundary point is reached, the strong identifier of the completed block can be compared against the identifiers in the
server dictionary model 224 to see if the new block matches data in theserver dictionary 234. Other techniques for delimiting blocks and identifying matching with previous blocks are possible. - In one illustrative embodiment, a byte sequence is received as a stream of data. For each N bytes, a rolling checksum is calculated, for example, according to the equation:
-
- According to this equation, “i” is the position of a byte in the sequence, so that i=0 for the first byte in the block and i=N−1 for the last byte in the block. Also according to the equation, “x” is the value of the byte at position i, which may, for example, be in the range 0-255. Further according to the equation, “f(x,i)” is a function applied to each entry. For example, the function may use x as an index into an array of prime values “P,” which may be multiplied by the local offset i, so that f(x,i)=P[x]*i. And further, according to the equation, modulo arithmetic can be applied to the total, so that the number of possible output values is the modulo value. Adjusting the modulus may then adjust the average size of the output blocks, as it sets the probability that a match with the special value S (e.g., the “particular value” discussed above) will occur at any point, where S is any value between 0 and M−1. Each time the sum equals the special value S, a boundary point is established in the incoming stream. Each pair of boundary points may define a dictionary block, and a strong identifier is calculated on each such block. The rolling checksum function is applied to every block of N bytes in the incoming stream.
- In one example, a user engages in file sharing by downloading a one-Megabyte content file and then becoming a source (e.g., a server) for that content file, uploading the file multiple times. Without return-link optimization, the entire one-Megabyte of file data may be re-uploaded with each upload request. Using the
client optimizer 220, however, the return-link bandwidth usage may be minimized. For example, the digests in theserver dictionary model 224 may provide 10,000-to-1 compression, such that the one-Megabyte file can be compressed into only one-hundred bytes of digest data. As such, even multiple upload requests may be compressed into only hundreds or thousands of bytes of total bandwidth usage on the return link. - Notably, as the optimization occurs on the return link from the
client optimizer 220 to theserver optimizer 230, the optimization may be unaffected by destinations for the upload content beyond theserver system 320. For example, the upload from the user system 210 via theclient optimizer 220 may be destined for another user system 210 in communication with theserver system 320. As discussed above, the optimization may be unaffected by a presence or absence of aclient optimizer 220 at the destination user system 210. - Further, it is worth noting that the digest-based optimization may provide optimization benefits (e.g., compression), even where portions of a content file have changed. For example, in a collaborative media editing environment, revisions of large media files may be sent back and forth among a number of users. When each revision upload is intercepted by a
client optimizer 220, theserver dictionary model 224 may include digests for the unchanged data blocks. As such, those unchanged blocks may still be sent in highly compressed form, while the changes are sent in uncompressed form (e.g., or, at least, not compressed according to the server dictionary model 224). Upon receipt at theserver optimizer 230, theserver dictionary 234 may then be used to decompress the compressed blocks of the upload and/or updated with the uncompressed revision data. - The
communications system 400 illustrated inFIG. 4 shows aclient optimizer 220 having storage only for aserver dictionary model 224. Embodiments of theclient optimizer 220 shown inFIG. 4 may have no access (e.g., or no practical or efficient access) to other storage capacity. For example, theclient optimizer 220 may not be authorized to access themachine storage 218 and/or may not have additional capacity of its own (e.g., for storage of its own dictionary or for a cache). However, in other embodiments, theclient optimizer 220 has additional capacity, which it may manage according to whether return-link optimization is desired. -
FIG. 5 shows a block diagram of an embodiment of aclient optimizer 220 having additional storage capacity and mode selection, according to various embodiments. As in theclient optimizer 220 ofFIG. 4 , theclient optimizer 220 a ofFIG. 5 includes arequest manager 416, arequest encoder 418, aresponse manager 424, atransport manager 428, and aserver dictionary model 224. However, theclient optimizer 220 a ofFIG. 5 also includes aclient dictionary 524, amode selector 520, and file sharing detectors 510. Embodiments of theclient optimizer 220 a operate in a “file sharing” operating mode when file sharing content (e.g., or any content deemed a likely upload-after-download candidate) is detected and in a “normal” mode for other types of traffic, as described below. - When the user downloads content from the
server system 320, the content is received via thetransport manager 428 by theclient optimizer 220. The received content is evaluated by the file sharing detector 510 to determine whether the content includes file sharing content. As discussed above, “file sharing” content is used herein to describe any traffic having a probability of being uploaded after download. This determination can be made in a number of ways. For example, metadata may be evaluated to look for certain file sharing protocols, certain types of content (e.g., file types) may be deemed more likely to be re-uploaded, patterns of use may be evaluated to find upload-after-download candidates, etc. - The determination of the file sharing detector 510 may be used to set the operating mode of the
client optimizer 220 a for handling that content, and theresponse manager 424 may process the content according to that operating mode. In some embodiments, if the file sharing detector 510 determines that the content includes file sharing content, themode selector 520 may be set such that theclient optimizer 220 a processes the content in “file sharing” operating mode. For example, the file sharing content may be processed as described above with reference toFIG. 4 . Theresponse manager 424 may generate one or more identifiers (e.g., digests) for storage in theserver dictionary model 224, and may pass the content to theuser machine 214. - If the file sharing detector 510 determines that there is no file sharing content, the
mode selector 520 may be set such that theclient optimizer 220 a processes the content in “normal” operating mode. According to the normal operating mode, the content may be processed in a number of ways, including using theclient dictionary 524 for various types of optimization. In one embodiment, the normal operating mode exploits deltacasting opportunities, as described in U.S. patent application Ser. No. 12/651,909, entitled “DELTACASTING” (017018-019510US), filed on Jan. 4, 2010, which is incorporated herein by reference in its entirety for all purposes. In other embodiments, the normal operating mode configures theclient optimizer 220 a to implement functionality of delta coders, caches, and/or other types of network components known in the art. - When the user uploads content from the
user machine 214, the upload request may be sent to theclient optimizer 220. Therequest manager 416 in theclient optimizer 220 processes (e.g., parses) the upload request to find any object or other content data that should be evaluated for optimization. In some embodiments, the parsed data is then encoded by therequest encoder 418 to generate one or more identifiers associated with the content requested for upload. The identifiers may then be evaluated against one or both of theserver dictionary model 224 and theclient dictionary 524 to find and/or exploit matches. - In other embodiments, information obtained from processing the upload request is used by the file sharing detector 510 to determine whether the upload request includes file sharing traffic. The operating mode may then be selected by the
mode selector 520 and the upload request may be encoded by therequest encoder 418 according to the determination of the file sharing detector 510. For example, if the file sharing detector 510 detects file sharing content, themode selector 520 may select the “file sharing” operating mode. In this mode, therequest encoder 418 may generate a weak identifier for use in finding matching digests in theserver dictionary model 224 without any reference to theclient dictionary 524. As discussed above, any matches found in theserver dictionary model 224 may then be used to compress the upload request, for example, for return-link optimization. - It will be appreciated that, while the above descriptions of content transactions focus on requests and responses, these terms are intended to be broadly construed, and embodiments of the invention function within many other contexts. For example, embodiments of the
communication system 400 are used to provide interactive Internet services (e.g., access to the world-wide web, email communications, file serving and sharing, etc.), television services (e.g., satellite broadcast television, Internet protocol television (IPTV), on-demand programming, etc.), voice communications (e.g., telephone services, voice-over-Internet-protocol (VoIP) telephony, etc.), networking services (e.g., mesh networking, VPN, VLAN, MPLS, VPLS, etc.), and other communication services. As such, the “response” data discussed above is intended only as an illustrative type of data that may be received by theserver optimizer 230 from a content source (e.g., a content server 250). For example, the “response” data may actually be pushed, multicast, or otherwise communicated to the user without an explicit request from the user. - It will be further appreciated that embodiments of systems and components described above include merely some exemplary embodiments, and various methods of the invention can be performed by those and other system embodiments.
FIG. 6 shows anillustrative method 600 for performing return-link optimization, according to various embodiments. Particularly, themethod 600 illustrates an “upload-after-download” scenario (e.g., a re-upload to the Internet, P2P file sharing of previously downloaded content, etc.). In some embodiments, themethod 600 is performed by one or more components of aclient optimizer 220, as described above with reference toFIGS. 1-5 . - For the sake of added clarity, the
method 600 is shown with reference to client-side activities 602 and server-side activities 604, and with reference to illustrative timing on atimeline 605. Of course, certain client-side functions may be performed by server-side components, certain server-side functions may be performed by client-side components, and specific timing of process blocks may be changed without affecting themethod 600. Further, it will be appreciated that thetimeline 605 is not intended to show any time scale (relative or absolute), and certain process blocks may occur in series, in parallel, or otherwise, according to various embodiments. For at least these reasons, it will be appreciated that these elements ofFIG. 6 are intended only for clarity and are not intended to limit the scope of themethod 600 in any way. - Some embodiments of the
method 600 begin at afirst time 610 a (shown on timeline 605), when the client side 602 (e.g., a user of a user machine) requests content for download inblock 620. At asecond time 610 b, (e.g., after some delay due to latency of a satellite communication link, etc.), theserver side 604 receives and processes the request atblock 624. Atblock 628, theserver side 604 transmits the requested content to the requestingclient side 602 in response to the request. In some embodiments, theserver side 604 also determines whether the content represents an optimization candidate atblock 636 c. For example, theserver side 604 may evaluate the response data to determine whether it includes file sharing content. If the traffic is deemed an optimization candidate (e.g., or in all cases, for example, where a determination is not made atblock 636 c), theserver side 604 stores the response data in a local dictionary atblock 630. - At a
third time 610 c, theclient side 602 receives the content atblock 632. In some embodiments, theclient side 602 determines whether the content represents an optimization candidate atblock 636 a. Embodiments of the determination may be similar to those made at theserver side 604 inblock 636 c. For example, theclient side 602 may evaluate the response data to determine whether it includes file sharing content. If the traffic is deemed an optimization candidate, identifiers (e.g., digests) may be generated atblock 640 and used to update a server dictionary model at theclient side 602. - Sometime later, at a
fourth time 610 d, theclient side 602 makes a request atblock 644 that involves upload of the content received inblock 632. For example, theclient side 602 desires to re-upload the content to the another location on the Internet, share the content with another user via the communication system, etc. In some embodiments, at afifth time 610 e, the upload request is intercepted atblock 636 b and a determination is made (e.g., as inblock 636 a) as to whether the upload request includes content relating to an optimization candidate (e.g., file sharing content). - If the upload request includes optimizable content, according to the determination of
block 636 b, an identifier may be generated atblock 648. For example, a weak identifier may be generated by applying a hashing function to the upload content data. Atblock 652, the identifier is used to find any candidate matches among the digests stored in the server dictionary model. If matches are not found, the content data may be uploaded atblock 656 a. If matches are found, the matching digests may be used to generate and upload a highly compressed version of the upload content atblock 656 b. - At a
sixth time 610 f, (e.g., again after some delay due to latency), theserver side 604 may receive and process the uploaded content atblock 660. Atblock 664, the server dictionary may be updated with any blocks not already in the dictionary. For example, if the content is uploaded atblock 656 a without digest-based compression, or if some of the blocks of the content were uploaded without digest-based compression due to changes in the file, the server dictionary may be updated atblock 664. - In some embodiments, the upload-after-download scenario is part of a peer-to-peer (P2P) file sharing process, or some other process in which the upload is destined for a node of the communications system other than the
server side 604. In embodiments of these transactions, the uploaded content may then be communicated to a destination node atblock 668. For example, the content may be pushed to a user at the same or anotherclient side 602. - It will be appreciated that various embodiments have been described herein with reference to upload-after-download transactions. However, similar functionality may be used to optimize return-link bandwidth usage in the context of multiple uploads of the same content.
FIG. 7 shows anillustrative method 700 for performing return-link optimization for an upload-after-upload transaction, according to various embodiments. As with themethod 600 ofFIG. 6 , themethod 700 is shown with reference to client-side activities 702 and server-side activities 704, and with reference to illustrative timing on atimeline 705. - Embodiments of the
method 700 begin at afirst time 710 a (shown on timeline 705), when the client side 702 (e.g., a user of a user machine) requests upload of content inblock 720. At asecond time 710 b, the upload request is intercepted atblock 724 a and a determination is made as to whether the upload request includes content relating to an optimization candidate (e.g., file sharing content). If so, an identifier (e.g., a digest) may be generated atblock 728 and added to the server dictionary model. For example, it may be assumed that the data will be stored in the server dictionary after it is received by theserver side 704 as part of the present upload request. - The content may then be uploaded at
block 732. It is assumed in theillustrative method 700 that this is the first time the content is being uploaded to theserver side 704. At athird time 710 c, the uploaded content is received and processed by theserver side 704 atblock 736. In some embodiments, atblock 740, the server dictionary is updated to reflect the uploaded content. - Sometime later, at a
fourth time 710 d, theclient side 702 makes a request atblock 744 that involves a second upload of the content previously uploaded inblock 732. For example, theclient side 702 desires to re-upload the content to another location on the Internet, share the content with another user via the communication system, etc. In some embodiments, at afifth time 710 e, the upload request is intercepted atblock 724 b and a determination is made (e.g., as inblock 724 a) as to whether the upload request includes content relating to an optimization candidate (e.g., file sharing content). - If the upload request includes optimizable content, according to the determination of
block 724 b, an identifier may be generated atblock 748. For example, a weak identifier may be generated by applying a hashing function to the upload content data. Atblock 752, the identifier is used to find any candidate matches among the digests stored in the server dictionary model. If matches are not found, the content data may be uploaded atblock 756 a. If matches are found, the matching digests may be used to generate and upload a highly compressed version of the upload content atblock 756 b. - At a
sixth time 710 f, theserver side 704 may receive and processes the uploaded content atblock 760. Atblock 764, the server dictionary may be updated with any blocks not already in the dictionary. For example, if the content is uploaded atblock 756 a without digest-based compression, or if some of the blocks of the content were uploaded without digest-based compression due to changes in the file, the server dictionary may be updated atblock 764. In some embodiments, the uploaded content may then be communicated to a destination node other than theserver side 704 atblock 768. - It is worth noting, that blocks 744, 748, 752, 756 a, 756 b, 760, 764, and 768 of the
method 700 ofFIG. 7 may be implemented substantially identically toblocks method 600 ofFIG. 6 , respectively. For example, once content is uploaded once to the server (e.g., either after a download, as inFIG. 6 , or not, as inFIG. 7 ) the data may be used to reduce return-link bandwidth on future uploads of the same content. As such, embodiments of systems and methods described herein handle both upload-after-download and upload-after-upload transactions. - The above description is intended to provide various embodiments of the invention, but does not represent an exhaustive list of all embodiments. For example, those of skill in the art will appreciate that various modifications are available within the scope of the invention. Further, while the disclosure includes various sections and headings, the sections and headings are not intended to limit the scope of any embodiment of the invention. Rather, disclosure presented under one heading may inform disclosure presented under a different heading. For example, descriptions of embodiments of method steps for handling overlapping content requests may be used to inform embodiments of methods for handling anticipatory requests.
- Specific details are given in the above description to provide a thorough understanding of the embodiments. However, it is understood that the embodiments may be practiced without these specific details. For example, well-known processes, algorithms, structures, and techniques may be shown without unnecessary detail in order to avoid obscuring the embodiments. Implementation of the techniques, blocks, steps, and means described above may be done in various ways. For example, these techniques, blocks, steps, and means may be implemented in hardware, software, or a combination thereof. For a hardware implementation, the processing units may be implemented within one or more application specific integrated circuits (ASICs), digital signal processors (DSPs), digital signal processing devices (DSPDs), programmable logic devices (PLDs), field-programmable gate arrays (FPGAs), soft core processors, hard core processors, controllers, micro-controllers, microprocessors, other electronic units designed to perform the functions described above, and/or a combination thereof. Software can be used instead of or in addition to hardware to perform the techniques, blocks, steps, and means.
- Also, it is noted that the embodiments may be described as a process which is depicted as a flowchart, a flow diagram, a data flow diagram, a structure diagram, or a block diagram. Although a flowchart may describe the operations as a sequential process, many of the operations can be performed in parallel or concurrently. In addition, the order of the operations may be re-arranged. A process is terminated when its operations are completed, but could have additional steps not included in the figure. A process may correspond to a method, a function, a procedure, a subroutine, a subprogram, etc. When a process corresponds to a function, its termination corresponds to a return of the function to the calling function or the main function.
- Furthermore, embodiments may be implemented by hardware, software, scripting languages, firmware, middleware, microcode, hardware description languages, and/or any combination thereof. When implemented in software, firmware, middleware, scripting language, and/or microcode, the program code or code segments to perform the necessary tasks may be stored in a machine readable medium such as a storage medium. A code segment or machine-executable instruction may represent a procedure, a function, a subprogram, a program, a routine, a subroutine, a module, a software package, a script, a class, or any combination of instructions, data structures, and/or program statements. A code segment may be coupled to another code segment or a hardware circuit by passing and/or receiving information, data, arguments, parameters, and/or memory contents. Information, arguments, parameters, data, etc. may be passed, forwarded, or transmitted via any suitable means including memory sharing, message passing, token passing, network transmission, etc.
- For a firmware and/or software implementation, the methodologies may be implemented with modules (e.g., procedures, functions, and so on) that perform the functions described herein. Any machine-readable medium tangibly embodying instructions may be used in implementing the methodologies described herein. For example, software codes may be stored in a memory. Memory may be implemented within the processor or external to the processor. As used herein the term “memory” refers to any type of long term, short term, volatile, nonvolatile, or other storage medium and is not to be limited to any particular type of memory or number of memories, or type of media upon which memory is stored.
- Moreover, as disclosed herein, the term “storage medium” may represent one or more memories for storing data, including read only memory (ROM), random access memory (RAM), magnetic RAM, core memory, magnetic disk storage mediums, optical storage mediums, flash memory devices and/or other machine readable mediums for storing information. Similarly, terms like “cache” are intended to broadly include any type of storage, including temporary or persistent storage, queues (e.g., FIFO, LIFO, etc.), buffers (e.g., circular, etc.), etc. The term “machine-readable medium” includes, but is not limited to, portable or fixed storage devices, optical storage devices, wireless channels, and/or various other storage mediums capable of storing that contain or carry instruction(s) and/or data.
- Further, certain portions of embodiments (e.g., method steps) are described as being implemented “as a function of” other portions of embodiments. This and similar phraseologies, as used herein, intend broadly to include any technique for determining one element partially or completely according to another element. In various embodiments, determinations “as a function of” a factor may be made in any way, so long as the outcome of the determination is at least partially dependant on the factor.
- While the principles of the disclosure have been described above in connection with specific apparatuses and methods, it is to be clearly understood that this description is made only by way of example and not as limitation on the scope of the disclosure.
Claims (24)
1. A method for managing return-link resource usage in a communications system, the method comprising:
receiving a first content data block at a client-side device from a server-side device, the server-side device being communicatively coupled with a server dictionary and the client-side device being communicatively coupled with a server dictionary model, the server dictionary model configured to store identifiers associated with data blocks stored on the server dictionary, each identifier having a substantially smaller file size than its associated data block;
calculating a first identifier from the first content data block;
storing the first identifier in the server dictionary model at the client-side device;
removing the first content data block from the client-side device;
subsequent to storing the first identifier, receiving a second content data block at the client-side device for upload to the server-side device;
calculating a second identifier from the second content data block;
determining whether the second identifier matches the first identifier stored in the server dictionary model; and
when the second identifier matches the first identifier, using the first identifier or the second identifier to compress the second content data block into compressed content.
2. The method of claim 1 , further comprising:
communicating the compressed content to the server-side device.
3. The method of claim 2 , wherein the compressed content is the second identifier.
4. The method of claim 1 , wherein the first content data block is removed from the client-side device substantially upon calculating the first identifier.
5. The method of claim 1 , further comprising:
determining whether the first content data block comprises file sharing content,
wherein the first content data block is removed from the client-side device only when the content data block comprises file sharing content.
6. The method of claim 5 , wherein determining whether the first content data block comprises file sharing content comprises:
determining whether the first content data block is configured according to a file sharing protocol.
7. The method of claim 5 , wherein determining whether the first content data block comprises file sharing content comprises:
determining a probability that a substantially identical content data block will be received by the client-side device for upload to the server-side device at a subsequent time.
8. The method of claim 1 , further comprising:
storing the first content data block in a client data store configured such that the client-side device has substantially no access to the content data block when stored in the client data store.
9. The method of claim 1 , wherein the first identifier and the second identifier are calculated such that a probability of the first identifier and the second identifier matching when the first content data block and the second content data block are not identical is effectively zero.
10. A method for managing return-link resource usage in a communications system, the method comprising:
receiving a first content data block at a client-side device from a server-side device, the server-side device being communicatively coupled with a server dictionary and the client-side device being communicatively coupled with a server dictionary model;
calculating a first identifier from the first content data block, such that the first identifier has a substantially smaller file size than the first content data block;
storing the first identifier in the server dictionary model at the client-side device;
determining whether the first content data block comprises file sharing content;
removing the first content data block from the client-side device when the first content data block comprises file sharing content;
subsequent to storing the first identifier, receiving a second content data block at the client-side device for upload to the server-side device;
calculating a second identifier from the second content data block;
determining whether the second identifier matches the first identifier stored in the server dictionary model; and
when the second identifier matches the first identifier, using the first identifier or the second identifier to compress the second content data block into compressed content.
11. The method of claim 10 , further comprising:
communicating the compressed content to the server-side device.
12. The method of claim 10 , wherein the first content data block is removed from the client-side device prior to receiving the second content data block at the client-side device.
13. The method of claim 10 , wherein determining whether the first content data block comprises file sharing content comprises determining whether the first content data block is configured according to a file sharing protocol.
14. The method of claim 10 , wherein determining whether the first content data block comprises file sharing content comprises determining a probability that a substantially identical content data block will be received by the client-side device for upload to the server-side device at a subsequent time.
15. The method of claim 10 , wherein the first identifier and the second identifier are calculated such that a probability of the first identifier and the second identifier matching when the first content data block and the second content data block are not identical is effectively zero.
16. A system for managing return-link resource usage in a communications system, the system comprising:
a local dictionary model configured to store identifiers associated with data blocks stored on a remote dictionary, the remote dictionary located at a remote node of the communications system;
a download processor module, configured to:
receive a first content data block from a remote device associated with the remote dictionary;
store the first content data block in a local store;
calculate a first identifier from the first content data block;
store the first identifier in the local dictionary model; and
remove the first content data block from the local store; and
an upload processor module, configured to:
receive a second content data block for upload to the remote device;
calculate a second identifier from the second content data block;
determine whether the second identifier matches the first identifier stored in the local dictionary model; and
when the second identifier matches the first identifier, use the first identifier or the second identifier to compress the second content data block into compressed content.
17. The system of claim 16 , further comprising:
a communications module configured to communicate the compressed content to the remote device.
18. The system of claim 16 , wherein the download processor module is configured to remove the first content data block from the local store substantially upon calculating the first identifier.
19. The system of claim 16 , further comprising:
a file sharing detector, communicatively coupled with the download processor module, and configured to:
determine whether the first content data block comprises file sharing content,
wherein the download processor module is configured to remove the first content data block from the local store only when the content data block comprises file sharing content.
20. The system of claim 19 , wherein the file sharing detector is configured to determine whether the first content data block comprises file sharing content by determining whether the first content data block is configured according to a file sharing protocol.
21. The system of claim 19 , wherein the file sharing detector is configured to determine whether the first content data block comprises file sharing content by determining a probability that a substantially identical content data block will be received for upload to the remote device at a subsequent time.
22. The system of claim 16 , further comprising:
a client storage module, configured to store the first content data block such that the download processor module has substantially no access to the first content data block when stored in the client storage module.
23. The system of claim 16 , wherein the local store is a buffer.
24. The system of claim 16 , wherein:
the remote device is a server and the remote dictionary is a server dictionary.
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US12/651,928 US20100179984A1 (en) | 2009-01-13 | 2010-01-04 | Return-link optimization for file-sharing traffic |
US14/046,781 US20140040353A1 (en) | 2009-01-13 | 2013-10-04 | Return-link optimization for file-sharing traffic |
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US14436309P | 2009-01-13 | 2009-01-13 | |
US17035909P | 2009-04-17 | 2009-04-17 | |
US12/651,928 US20100179984A1 (en) | 2009-01-13 | 2010-01-04 | Return-link optimization for file-sharing traffic |
Related Child Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
US14/046,781 Continuation-In-Part US20140040353A1 (en) | 2009-01-13 | 2013-10-04 | Return-link optimization for file-sharing traffic |
Publications (1)
Publication Number | Publication Date |
---|---|
US20100179984A1 true US20100179984A1 (en) | 2010-07-15 |
Family
ID=42123182
Family Applications (18)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
US12/651,909 Active 2033-11-25 US9369516B2 (en) | 2009-01-13 | 2010-01-04 | Deltacasting |
US12/651,928 Abandoned US20100179984A1 (en) | 2009-01-13 | 2010-01-04 | Return-link optimization for file-sharing traffic |
US12/684,648 Active 2032-07-25 US8639744B2 (en) | 2009-01-13 | 2010-01-08 | Deltacasting for live content |
US12/684,726 Active 2033-04-24 US8775503B2 (en) | 2009-01-13 | 2010-01-08 | Deltacasting for overlapping requests |
US12/685,920 Active 2031-11-18 US8489673B2 (en) | 2009-01-13 | 2010-01-12 | Content set based pre-positioning |
US12/685,729 Active 2031-09-19 US8489672B2 (en) | 2009-01-13 | 2010-01-12 | Content set based deltacasting |
US12/686,744 Active 2031-11-16 US8477635B2 (en) | 2009-01-13 | 2010-01-13 | Correlative anticipatory deltacasting |
US13/908,960 Active US8842553B2 (en) | 2009-01-13 | 2013-06-03 | Correlative anticipatory deltacasting |
US13/919,888 Active 2032-08-05 US10187436B2 (en) | 2009-01-13 | 2013-06-17 | Content set based deltacasting |
US13/919,861 Active 2032-10-07 US9762635B2 (en) | 2009-01-13 | 2013-06-17 | Content set based pre-positioning |
US14/288,188 Active US9172748B2 (en) | 2009-01-13 | 2014-05-27 | Deltacasting for overlapping requests |
US14/453,479 Active US9363308B2 (en) | 2009-01-13 | 2014-08-06 | Correlative anticipatory deltacasting |
US15/148,897 Active 2032-04-24 US10547655B2 (en) | 2009-01-13 | 2016-05-06 | Deltacasting |
US16/247,702 Active US10536495B2 (en) | 2009-01-13 | 2019-01-15 | Content set based deltacasting |
US16/723,851 Active US10951671B2 (en) | 2009-01-13 | 2019-12-20 | Content set based deltacasting |
US17/172,757 Active US11252210B2 (en) | 2009-01-13 | 2021-02-10 | Content set based deltacasting |
US17/576,664 Active US11916990B2 (en) | 2009-01-13 | 2022-01-14 | Content set based deltacasting |
US18/437,142 Pending US20240305680A1 (en) | 2009-01-13 | 2024-02-08 | Content set based deltacasting |
Family Applications Before (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
US12/651,909 Active 2033-11-25 US9369516B2 (en) | 2009-01-13 | 2010-01-04 | Deltacasting |
Family Applications After (16)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
US12/684,648 Active 2032-07-25 US8639744B2 (en) | 2009-01-13 | 2010-01-08 | Deltacasting for live content |
US12/684,726 Active 2033-04-24 US8775503B2 (en) | 2009-01-13 | 2010-01-08 | Deltacasting for overlapping requests |
US12/685,920 Active 2031-11-18 US8489673B2 (en) | 2009-01-13 | 2010-01-12 | Content set based pre-positioning |
US12/685,729 Active 2031-09-19 US8489672B2 (en) | 2009-01-13 | 2010-01-12 | Content set based deltacasting |
US12/686,744 Active 2031-11-16 US8477635B2 (en) | 2009-01-13 | 2010-01-13 | Correlative anticipatory deltacasting |
US13/908,960 Active US8842553B2 (en) | 2009-01-13 | 2013-06-03 | Correlative anticipatory deltacasting |
US13/919,888 Active 2032-08-05 US10187436B2 (en) | 2009-01-13 | 2013-06-17 | Content set based deltacasting |
US13/919,861 Active 2032-10-07 US9762635B2 (en) | 2009-01-13 | 2013-06-17 | Content set based pre-positioning |
US14/288,188 Active US9172748B2 (en) | 2009-01-13 | 2014-05-27 | Deltacasting for overlapping requests |
US14/453,479 Active US9363308B2 (en) | 2009-01-13 | 2014-08-06 | Correlative anticipatory deltacasting |
US15/148,897 Active 2032-04-24 US10547655B2 (en) | 2009-01-13 | 2016-05-06 | Deltacasting |
US16/247,702 Active US10536495B2 (en) | 2009-01-13 | 2019-01-15 | Content set based deltacasting |
US16/723,851 Active US10951671B2 (en) | 2009-01-13 | 2019-12-20 | Content set based deltacasting |
US17/172,757 Active US11252210B2 (en) | 2009-01-13 | 2021-02-10 | Content set based deltacasting |
US17/576,664 Active US11916990B2 (en) | 2009-01-13 | 2022-01-14 | Content set based deltacasting |
US18/437,142 Pending US20240305680A1 (en) | 2009-01-13 | 2024-02-08 | Content set based deltacasting |
Country Status (2)
Country | Link |
---|---|
US (18) | US9369516B2 (en) |
WO (2) | WO2010083248A2 (en) |
Cited By (64)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20100179987A1 (en) * | 2009-01-13 | 2010-07-15 | Viasat, Inc. | Content set based pre-positioning |
KR101035302B1 (en) | 2010-10-11 | 2011-05-19 | (주)이스트소프트 | A cloud system and a method of compressing and transmtting files in a cloud system |
US8010705B1 (en) | 2008-06-04 | 2011-08-30 | Viasat, Inc. | Methods and systems for utilizing delta coding in acceleration proxy servers |
WO2012030110A2 (en) * | 2010-08-31 | 2012-03-08 | 레이져라이팅(주) | Device for laser-processing light guide plate having laser beam cut-off means |
US8396836B1 (en) | 2011-06-30 | 2013-03-12 | F5 Networks, Inc. | System for mitigating file virtualization storage import latency |
US8463850B1 (en) | 2011-10-26 | 2013-06-11 | F5 Networks, Inc. | System and method of algorithmically generating a server side transaction identifier |
US8516253B1 (en) | 2010-01-18 | 2013-08-20 | Viasat, Inc. | Self-keyed protection of anticipatory content |
US20130218855A1 (en) * | 2012-02-16 | 2013-08-22 | Cortado Ag | Method and system for managing data and a corresponding computer program and a corresponding computer-readable storage medium |
CN103503417A (en) * | 2011-01-31 | 2014-01-08 | 阿尔特布里奇有限公司 | A communication system |
US20140046988A1 (en) * | 2012-01-17 | 2014-02-13 | Panasonic Corporation | Content management apparatus, content management method, and program |
US20140172950A1 (en) * | 2012-12-13 | 2014-06-19 | Ca, Inc. | Methods And Systems For Speeding Up Data Recovery |
US20140185499A1 (en) * | 2012-12-31 | 2014-07-03 | Nokia Corporation | Method and apparatus for ad-hoc content sharing |
US8806056B1 (en) | 2009-11-20 | 2014-08-12 | F5 Networks, Inc. | Method for optimizing remote file saves in a failsafe way |
US20140297591A1 (en) * | 2013-03-30 | 2014-10-02 | International Business Machines Corporation | Providing efficient data replication for a transaction processing server |
US8879431B2 (en) | 2011-05-16 | 2014-11-04 | F5 Networks, Inc. | Method for load balancing of requests' processing of diameter servers |
US8897302B2 (en) | 2011-06-14 | 2014-11-25 | Viasat, Inc. | Transport protocol for anticipatory content |
US8984048B1 (en) | 2010-04-18 | 2015-03-17 | Viasat, Inc. | Selective prefetch scanning |
US9037638B1 (en) | 2011-04-11 | 2015-05-19 | Viasat, Inc. | Assisted browsing using hinting functionality |
US9065906B2 (en) | 2012-06-15 | 2015-06-23 | Viasat Inc. | Opportunistic delivery of cacheable content in a communications network |
US20150215229A1 (en) * | 2014-01-29 | 2015-07-30 | Microsoft Corporation | Resource affinity in a dynamic resource pool |
US9106607B1 (en) | 2011-04-11 | 2015-08-11 | Viasat, Inc. | Browser based feedback for optimized web browsing |
US9143451B2 (en) | 2007-10-01 | 2015-09-22 | F5 Networks, Inc. | Application layer network traffic prioritization |
US20150270930A1 (en) * | 2014-03-18 | 2015-09-24 | Qualcomm Incorporated | Transport accelerator implementing selective utilization of redundant encoded content data functionality |
US9244843B1 (en) | 2012-02-20 | 2016-01-26 | F5 Networks, Inc. | Methods for improving flow cache bandwidth utilization and devices thereof |
US9407355B1 (en) | 2011-10-25 | 2016-08-02 | Viasat Inc. | Opportunistic content delivery using delta coding |
US9420049B1 (en) | 2010-06-30 | 2016-08-16 | F5 Networks, Inc. | Client side human user indicator |
US9456050B1 (en) | 2011-04-11 | 2016-09-27 | Viasat, Inc. | Browser optimization through user history analysis |
US9497614B1 (en) | 2013-02-28 | 2016-11-15 | F5 Networks, Inc. | National traffic steering device for a better control of a specific wireless/LTE network |
US9503375B1 (en) | 2010-06-30 | 2016-11-22 | F5 Networks, Inc. | Methods for managing traffic in a multi-service environment and devices thereof |
US9578090B1 (en) | 2012-11-07 | 2017-02-21 | F5 Networks, Inc. | Methods for provisioning application delivery service and devices thereof |
US9912718B1 (en) | 2011-04-11 | 2018-03-06 | Viasat, Inc. | Progressive prefetching |
US10033837B1 (en) | 2012-09-29 | 2018-07-24 | F5 Networks, Inc. | System and method for utilizing a data reducing module for dictionary compression of encoded data |
CN108388813A (en) * | 2018-02-28 | 2018-08-10 | 中国平安财产保险股份有限公司 | Electronic endorsement method, user equipment, storage medium and device |
USRE47019E1 (en) | 2010-07-14 | 2018-08-28 | F5 Networks, Inc. | Methods for DNSSEC proxying and deployment amelioration and systems thereof |
US10085123B2 (en) | 2013-02-27 | 2018-09-25 | Saturn Licensing Llc | Information processing apparatus and method, program, and content supply system |
US10097616B2 (en) | 2012-04-27 | 2018-10-09 | F5 Networks, Inc. | Methods for optimizing service of content requests and devices thereof |
US20190012053A1 (en) * | 2017-07-07 | 2019-01-10 | Open Text Sa Ulc | Systems and methods for content sharing through external systems |
US10182013B1 (en) | 2014-12-01 | 2019-01-15 | F5 Networks, Inc. | Methods for managing progressive image delivery and devices thereof |
US10187317B1 (en) | 2013-11-15 | 2019-01-22 | F5 Networks, Inc. | Methods for traffic rate control and devices thereof |
US10230566B1 (en) | 2012-02-17 | 2019-03-12 | F5 Networks, Inc. | Methods for dynamically constructing a service principal name and devices thereof |
US10375155B1 (en) | 2013-02-19 | 2019-08-06 | F5 Networks, Inc. | System and method for achieving hardware acceleration for asymmetric flow connections |
US10404698B1 (en) | 2016-01-15 | 2019-09-03 | F5 Networks, Inc. | Methods for adaptive organization of web application access points in webtops and devices thereof |
US10412198B1 (en) | 2016-10-27 | 2019-09-10 | F5 Networks, Inc. | Methods for improved transmission control protocol (TCP) performance visibility and devices thereof |
US10505818B1 (en) | 2015-05-05 | 2019-12-10 | F5 Networks. Inc. | Methods for analyzing and load balancing based on server health and devices thereof |
US10505792B1 (en) | 2016-11-02 | 2019-12-10 | F5 Networks, Inc. | Methods for facilitating network traffic analytics and devices thereof |
US10721269B1 (en) | 2009-11-06 | 2020-07-21 | F5 Networks, Inc. | Methods and system for returning requests with javascript for clients before passing a request to a server |
US10749702B2 (en) * | 2016-06-09 | 2020-08-18 | Telefonaktiebolaget Lm Ericsson (Publ) | Multicast service translation in internet protocol television systems |
US10797888B1 (en) | 2016-01-20 | 2020-10-06 | F5 Networks, Inc. | Methods for secured SCEP enrollment for client devices and devices thereof |
US10812266B1 (en) | 2017-03-17 | 2020-10-20 | F5 Networks, Inc. | Methods for managing security tokens based on security violations and devices thereof |
US10834065B1 (en) | 2015-03-31 | 2020-11-10 | F5 Networks, Inc. | Methods for SSL protected NTLM re-authentication and devices thereof |
US10855797B2 (en) | 2014-06-03 | 2020-12-01 | Viasat, Inc. | Server-machine-driven hint generation for improved web page loading using client-machine-driven feedback |
US11063758B1 (en) | 2016-11-01 | 2021-07-13 | F5 Networks, Inc. | Methods for facilitating cipher selection and devices thereof |
USRE48725E1 (en) | 2012-02-20 | 2021-09-07 | F5 Networks, Inc. | Methods for accessing data in a compressed file system and devices thereof |
US11122042B1 (en) | 2017-05-12 | 2021-09-14 | F5 Networks, Inc. | Methods for dynamically managing user access control and devices thereof |
US11178150B1 (en) | 2016-01-20 | 2021-11-16 | F5 Networks, Inc. | Methods for enforcing access control list based on managed application and devices thereof |
US11200292B2 (en) | 2015-10-20 | 2021-12-14 | Viasat, Inc. | Hint model updating using automated browsing clusters |
US11223689B1 (en) | 2018-01-05 | 2022-01-11 | F5 Networks, Inc. | Methods for multipath transmission control protocol (MPTCP) based session migration and devices thereof |
US11343237B1 (en) | 2017-05-12 | 2022-05-24 | F5, Inc. | Methods for managing a federated identity environment using security and access control data and devices thereof |
US11350254B1 (en) | 2015-05-05 | 2022-05-31 | F5, Inc. | Methods for enforcing compliance policies and devices thereof |
US11757946B1 (en) | 2015-12-22 | 2023-09-12 | F5, Inc. | Methods for analyzing network traffic and enforcing network policies and devices thereof |
US11838851B1 (en) | 2014-07-15 | 2023-12-05 | F5, Inc. | Methods for managing L7 traffic classification and devices thereof |
US11895138B1 (en) | 2015-02-02 | 2024-02-06 | F5, Inc. | Methods for improving web scanner accuracy and devices thereof |
US11983233B2 (en) | 2011-04-11 | 2024-05-14 | Viasat, Inc. | Browser based feedback for optimized web browsing |
US12003422B1 (en) | 2018-09-28 | 2024-06-04 | F5, Inc. | Methods for switching network packets based on packet data and devices |
Families Citing this family (157)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7886024B2 (en) * | 2004-07-01 | 2011-02-08 | Microsoft Corporation | Sharing media objects in a network |
US8166189B1 (en) * | 2008-03-25 | 2012-04-24 | Sprint Communications Company L.P. | Click stream insertions |
US8655878B1 (en) * | 2010-05-06 | 2014-02-18 | Zeitera, Llc | Scalable, adaptable, and manageable system for multimedia identification |
AU2010276462B1 (en) * | 2010-12-27 | 2012-01-12 | Limelight Networks, Inc. | Partial object caching |
US9197690B2 (en) * | 2008-09-25 | 2015-11-24 | Arris Enterprises, Inc. | Method and system for transmitting content |
US8483217B2 (en) | 2009-03-10 | 2013-07-09 | Viasat, Inc. | Internet protocol broadcasting |
JP5003701B2 (en) * | 2009-03-13 | 2012-08-15 | ソニー株式会社 | Server apparatus and setting information sharing method |
JP5381194B2 (en) * | 2009-03-16 | 2014-01-08 | 富士通株式会社 | Communication program, relay node, and communication method |
US8054764B2 (en) * | 2009-06-04 | 2011-11-08 | International Business Machines Corporation | Transmitting critical table information in databases |
JP5556104B2 (en) * | 2009-09-24 | 2014-07-23 | ブラザー工業株式会社 | Information communication system, information communication method, and information communication program |
US20110078017A1 (en) * | 2009-09-29 | 2011-03-31 | Selina Lam | Systems and methods for rating an originator of an online publication |
US8620879B2 (en) * | 2009-10-13 | 2013-12-31 | Google Inc. | Cloud based file storage service |
CN104394487B (en) * | 2010-03-05 | 2018-02-06 | 三星电子株式会社 | The method and apparatus that self adaptation stream is generated and reproduced based on file format |
US20110231482A1 (en) * | 2010-03-22 | 2011-09-22 | Strangeloop Networks Inc. | Automated Optimization Based On Determination Of Website Usage Scenario |
US9374231B2 (en) * | 2010-03-22 | 2016-06-21 | Alcatel Lucent | Controller providing gradual transition of multiple terminals from unicast transmission |
US8244874B1 (en) * | 2011-09-26 | 2012-08-14 | Limelight Networks, Inc. | Edge-based resource spin-up for cloud computing |
US8732208B2 (en) * | 2010-04-19 | 2014-05-20 | Facebook, Inc. | Structured search queries based on social-graph information |
US9307304B2 (en) * | 2010-05-11 | 2016-04-05 | Comcast Cable Communications, Llc | Dynamic assignment of signals to ports in an access platform |
US11777809B2 (en) | 2010-05-11 | 2023-10-03 | Comcast Cable Communications, Llc | Dynamic assignment of signals to ports in an access platform |
US8995439B2 (en) | 2010-05-13 | 2015-03-31 | Comcast Cable Communications, Llc | Control of multicast content distribution |
US8839278B2 (en) * | 2010-06-09 | 2014-09-16 | At&T Intellectual Property I, L.P. | Modeling user activity information associated with a network system |
US8954490B2 (en) | 2010-06-24 | 2015-02-10 | International Business Machines Corporation | Speculative and coordinated data access in a hybrid memory server |
US8898324B2 (en) | 2010-06-24 | 2014-11-25 | International Business Machines Corporation | Data access management in a hybrid memory server |
US9762639B2 (en) | 2010-06-30 | 2017-09-12 | Brightcove Inc. | Dynamic manifest generation based on client identity |
US9817637B2 (en) * | 2010-07-01 | 2017-11-14 | Salesforce.Com, Inc. | Methods and systems for providing enhancements to a business networking feed |
WO2012011467A1 (en) * | 2010-07-20 | 2012-01-26 | シャープ株式会社 | Data distribution system, data distribution method, data relay device on distribution side, and data relay device on reception side |
US20120023201A1 (en) * | 2010-07-26 | 2012-01-26 | Atlas Advisory Partners, Llc | Unified Content Delivery Platform |
PL3367252T3 (en) | 2010-07-26 | 2020-05-18 | Seven Networks, Llc | Context aware traffic management for resource conservation in a wireless network |
WO2012018556A2 (en) * | 2010-07-26 | 2012-02-09 | Ari Backholm | Mobile application traffic optimization |
WO2013015835A1 (en) | 2011-07-22 | 2013-01-31 | Seven Networks, Inc. | Mobile application traffic optimization |
US20120036188A1 (en) * | 2010-08-06 | 2012-02-09 | Nokia Corporation | Method and Apparatus for Aggregating Document Information |
US9170123B2 (en) | 2010-08-06 | 2015-10-27 | Nokia Technologies Oy | Method and apparatus for generating information |
US8392533B2 (en) * | 2010-08-24 | 2013-03-05 | Comcast Cable Communications, Llc | Dynamic bandwidth load balancing in a data distribution network |
US10511887B2 (en) * | 2010-08-30 | 2019-12-17 | Saturn Licensing Llc | Reception apparatus, reception method, transmission apparatus, transmission method, program, and broadcasting system |
US8554938B2 (en) * | 2010-08-31 | 2013-10-08 | Millind Mittal | Web browser proxy-client video system and method |
US20120059884A1 (en) * | 2010-09-07 | 2012-03-08 | Matthew Inventions Llc | Devices, systems, and methods of accessing and sharing digital media content among users with a web based server |
US9276997B2 (en) * | 2011-01-14 | 2016-03-01 | Millind Mittal | Web browser proxy—client video system and method |
US9560468B2 (en) | 2011-01-31 | 2017-01-31 | Parallel Limited, LLC | Communication system |
EP2924990A1 (en) * | 2011-03-16 | 2015-09-30 | Electronics and Telecommunications Research Institute | Apparatus and method for providing streaming content using representations |
US10075505B2 (en) * | 2011-05-30 | 2018-09-11 | International Business Machines Corporation | Transmitting data including pieces of data |
US8843584B2 (en) * | 2011-06-02 | 2014-09-23 | Google Inc. | Methods for displaying content on a second device that is related to the content playing on a first device |
US10331658B2 (en) * | 2011-06-03 | 2019-06-25 | Gdial Inc. | Systems and methods for atomizing and individuating data as data quanta |
US8812609B2 (en) * | 2011-06-06 | 2014-08-19 | Jaguna Networks Ltd | Methods, circuits, devices, systems and associated computer executable code for distributed content caching and delivery |
US9319842B2 (en) | 2011-06-27 | 2016-04-19 | At&T Intellectual Property I, L.P. | Mobile device configured point and shoot type weapon |
FR2978889B1 (en) * | 2011-08-04 | 2013-09-20 | Centre Nat Etd Spatiales | SYSTEM AND METHOD FOR MULTIPLE MANAGEMENT OF TRANSMISSION RESOURCES OF A SPACE RADIO MULTICELLULAR RADIOCOMMUNICATION SYSTEM. |
CN102957718B (en) * | 2011-08-23 | 2018-04-03 | 中兴通讯股份有限公司 | The method of User Agreement message synchronization between a kind of service node and service node |
US9858551B2 (en) * | 2011-09-02 | 2018-01-02 | Bbs Technologies, Inc. | Ranking analysis results based on user perceived problems in a database system |
US9577824B2 (en) * | 2011-09-23 | 2017-02-21 | CSC Holdings, LLC | Delivering a content item from a server to a device |
US8849976B2 (en) * | 2011-09-26 | 2014-09-30 | Limelight Networks, Inc. | Dynamic route requests for multiple clouds |
US8874781B2 (en) * | 2011-10-17 | 2014-10-28 | Qualcomm Incorporated | System and apparatus for power efficient delivery of social network updates to a receiver device in a broadcast network |
US9614688B2 (en) * | 2011-11-15 | 2017-04-04 | Canon Kabushiki Kaisha | Providing image data to a client display device |
US8918503B2 (en) | 2011-12-06 | 2014-12-23 | Seven Networks, Inc. | Optimization of mobile traffic directed to private networks and operator configurability thereof |
US8611730B2 (en) | 2011-12-08 | 2013-12-17 | At&T Intellectual Property I, L.P. | System and method of recording media content |
US8744419B2 (en) | 2011-12-15 | 2014-06-03 | At&T Intellectual Property, I, L.P. | Media distribution via a scalable ad hoc geographic protocol |
KR101181558B1 (en) | 2011-12-29 | 2012-09-10 | 경일대학교산학협력단 | Anonymous Authentication Method For Mobile Satellite Communication Systems |
KR101173825B1 (en) | 2011-12-29 | 2012-08-16 | 경일대학교산학협력단 | Key agreement method of vsat satellite communications system base on elliptic curve cryptosystem |
US10257109B2 (en) | 2012-01-18 | 2019-04-09 | International Business Machines Corporation | Cloud-based content management system |
US9001651B2 (en) * | 2012-02-06 | 2015-04-07 | Verizon Patent And Licensing Inc. | Method for call admission control in MPLS networks |
DE102012202315A1 (en) * | 2012-02-16 | 2013-08-22 | Robert Bosch Gmbh | Video system for displaying image data, methods and computer program |
GB2500374A (en) * | 2012-03-13 | 2013-09-25 | Ibm | Optimisation of mobile data communication using byte caching |
US9454531B1 (en) * | 2012-04-03 | 2016-09-27 | Google Inc. | Media content presentation by categorizing and formatting media types |
JP5318247B1 (en) * | 2012-04-20 | 2013-10-16 | 株式会社東芝 | Communication control apparatus and communication control method |
US20130298175A1 (en) * | 2012-05-02 | 2013-11-07 | International Business Machines Corporation | Constructing a customized message in a video-on-demand service |
US9258382B2 (en) * | 2012-06-21 | 2016-02-09 | Microsoft Technology Licensing, Llc | User-specific roaming settings |
US9215269B2 (en) * | 2012-08-23 | 2015-12-15 | Amazon Technologies, Inc. | Predictive caching for content |
US9351196B2 (en) * | 2012-08-31 | 2016-05-24 | International Business Machines Corporation | Byte caching in wireless communication networks |
US9288136B2 (en) * | 2012-09-21 | 2016-03-15 | Cisco Technology, Inc. | Method and apparatus for in-band channel change for multicast data |
US9258666B2 (en) * | 2012-10-17 | 2016-02-09 | International Business Machines Corporation | State migration of edge-of-network applications |
US20140122645A1 (en) * | 2012-10-25 | 2014-05-01 | Openpeak Inc. | Method and system for automatic agnostic provisioning of a computing device |
US9660745B2 (en) * | 2012-12-12 | 2017-05-23 | At&T Intellectual Property I, L.P. | Geocast-based file transfer |
US9705754B2 (en) * | 2012-12-13 | 2017-07-11 | Level 3 Communications, Llc | Devices and methods supporting content delivery with rendezvous services |
US20140199044A1 (en) | 2013-01-15 | 2014-07-17 | Qualcomm Incorporated | Supporting transport diversity and time-shifted buffers for media streaming over a network |
US9154436B2 (en) | 2013-03-14 | 2015-10-06 | Viasat Inc. | Delaycast queue prioritization |
US9276665B1 (en) | 2013-03-15 | 2016-03-01 | Viasat, Inc. | Satellite network service sharing |
US10554707B2 (en) | 2013-08-13 | 2020-02-04 | Imvision Software Technologies Ltd. | Method and system for self-detection and efficient transmission of real-time popular recorded over-the-top streams over communication networks |
US9674252B2 (en) * | 2013-07-17 | 2017-06-06 | Imvision Software Technologies Ltd. | System and method for efficient delivery of repetitive multimedia content |
CN104301353B (en) * | 2013-07-18 | 2019-10-08 | 腾讯科技(深圳)有限公司 | A kind of methods, devices and systems for subscribing to long-tail category information |
US20150089072A1 (en) * | 2013-09-25 | 2015-03-26 | Ericsson Television Inc | System and method for managing adjacent channels in an adaptive streaming environment |
US20150089073A1 (en) | 2013-09-25 | 2015-03-26 | Ericsson Television Inc | System and method for effectuating fast channel change in an adpative streaming environment |
US9444856B2 (en) * | 2013-09-25 | 2016-09-13 | Ericsson Ab | System and method for managing adjacent channels in an adaptive streaming environment |
US9332047B2 (en) | 2013-09-30 | 2016-05-03 | Brightcove Inc. | Dynamic chunk manipulation for streaming mixed live and on-demand media: dynamic permutation layer |
US9749431B1 (en) * | 2013-11-21 | 2017-08-29 | Mashable, Inc. | Finding a potentially viral first media content and transmitting a second media content that is selected based on the first media content and based on the determination that the first media content exceeds a velocity threshold |
JP2015108970A (en) * | 2013-12-04 | 2015-06-11 | ソニー株式会社 | Server device and information processing method |
US9225522B2 (en) | 2013-12-27 | 2015-12-29 | Linkedin Corporation | Techniques for populating a content stream on a mobile device |
CN104811392B (en) | 2014-01-26 | 2018-04-17 | 国际商业机器公司 | For handling the method and system of the resource access request in network |
CA2942569A1 (en) * | 2014-03-31 | 2015-10-08 | Intelsat Corporation | Multichannel content distribution via satellite to broadcast-capable mobile networks |
US10698569B2 (en) | 2014-04-03 | 2020-06-30 | Centurylink Intellectual Property Llc | System and method for implementing customer control point or customer portal |
US10110710B2 (en) | 2014-04-03 | 2018-10-23 | Centurylink Intellectual Property Llc | System and method for implementing extension of customer LAN at provider network service point |
CN104330649A (en) * | 2014-04-24 | 2015-02-04 | 广东电网公司江门供电局 | On-line power transmission line monitoring method and device based on Beidou communication |
US9544388B1 (en) | 2014-05-09 | 2017-01-10 | Amazon Technologies, Inc. | Client-side predictive caching for content |
US9819785B2 (en) * | 2014-06-23 | 2017-11-14 | Verizon Patent And Licensing Inc. | Multimedia messaging service communication using a two way push connection |
US9979644B2 (en) * | 2014-07-13 | 2018-05-22 | Cisco Technology, Inc. | Linking to content using information centric networking |
WO2016029936A1 (en) * | 2014-08-26 | 2016-03-03 | Telefonaktiebolaget L M Ericsson (Publ) | Technique for analytical identification of spatio-temporal relationships in a mobile communications network |
US10506027B2 (en) * | 2014-08-27 | 2019-12-10 | Tensera Networks Ltd. | Selecting a content delivery network |
US9712546B2 (en) | 2014-09-12 | 2017-07-18 | Level 3 Communications, Llc | Dynamic configuration of settings in response to DDOS attack |
US9565129B2 (en) | 2014-09-30 | 2017-02-07 | International Business Machines Corporation | Resource provisioning planning for enterprise migration and automated application discovery |
US9646154B2 (en) * | 2014-12-12 | 2017-05-09 | Microsoft Technology Licensing, Llc | Return oriented programming (ROP) attack protection |
US10313486B2 (en) | 2015-01-07 | 2019-06-04 | Sonicwall Inc. | Optimizing transfer of fragmented packetized data |
FR3032580B1 (en) * | 2015-02-06 | 2017-12-29 | Thales Sa | DYNAMIC ADJUSTMENT OF TRANSMISSION MODE IN A SATELLITE COMMUNICATION SYSTEM |
US9961004B2 (en) * | 2015-02-18 | 2018-05-01 | Viasat, Inc. | Popularity-aware bitrate adaptation of linear programming for mobile communications |
US9326046B1 (en) | 2015-03-19 | 2016-04-26 | Amazon Technologies, Inc. | Uninterrupted playback of video streams using lower quality cached files |
US10628439B1 (en) * | 2015-05-05 | 2020-04-21 | Sprint Communications Company L.P. | System and method for movie digital content version control access during file delivery and playback |
US10481938B2 (en) | 2015-05-06 | 2019-11-19 | Centurylink Intellectual Property Llc | System and method for implementing network experience shifting |
US10673978B2 (en) | 2015-05-06 | 2020-06-02 | Centurylink Intellectual Property Llc | Method and system for implementing network experience shifting using shared objects |
US9813526B2 (en) | 2015-05-26 | 2017-11-07 | Sonicwall Inc. | Reducing transmission pathway lengths within a distributed network |
US9954782B2 (en) | 2015-07-07 | 2018-04-24 | At&T Intellectual Property I, L.P. | Network for providing appropriate content delivery network selection |
US10277703B2 (en) | 2015-07-22 | 2019-04-30 | International Business Machines Corporation | Optimizing bandwidth usage and improving performance for web page caching |
US10158735B2 (en) * | 2015-08-07 | 2018-12-18 | Sonicwall Inc. | Read-ahead on signed connections with unsigning, inline, transparent proxies |
US9906590B2 (en) * | 2015-08-20 | 2018-02-27 | Verizon Digital Media Services Inc. | Intelligent predictive stream caching |
US10349304B2 (en) | 2015-09-23 | 2019-07-09 | Cloudflare, Inc. | Software defined dynamic filtering |
US11336928B1 (en) | 2015-09-24 | 2022-05-17 | Amazon Technologies, Inc. | Predictive caching of identical starting sequences in content |
US10075751B2 (en) * | 2015-09-30 | 2018-09-11 | Rovi Guides, Inc. | Method and system for verifying scheduled media assets |
US10193943B2 (en) | 2015-11-09 | 2019-01-29 | T-Mobile Usa, Inc. | Data-plan-based quality setting suggestions and use thereof to manage content provider services |
US10305952B2 (en) | 2015-11-09 | 2019-05-28 | T-Mobile Usa, Inc. | Preference-aware content streaming |
US10445755B2 (en) * | 2015-12-30 | 2019-10-15 | Paypal, Inc. | Data structures for categorizing and filtering content |
US10609175B2 (en) | 2015-12-31 | 2020-03-31 | Hughes Newtwork Systems, LLC | Apparatus and method for broadcast/multicast content delivery and opportunistic caching in a broadband communications network |
US9936055B2 (en) * | 2016-01-27 | 2018-04-03 | Dell Products L.P. | Using multicasting to concurrently image multiple client devices |
US10728152B2 (en) | 2016-02-08 | 2020-07-28 | T-Mobile Usa, Inc. | Dynamic network rate control |
US10033733B2 (en) * | 2016-03-25 | 2018-07-24 | Experian Health, Inc. | Biometric metadata bureau |
US10237187B2 (en) * | 2016-04-29 | 2019-03-19 | Citrix Systems, Inc. | System and method for service chain load balancing |
US10389775B2 (en) * | 2016-05-20 | 2019-08-20 | Hughes Network Systems, Llc | Multicast aggregation of multiple streaming connections |
GB2551153A (en) * | 2016-06-07 | 2017-12-13 | Avanti Communications Group Plc | Satellite communications |
EP3279301A1 (en) * | 2016-08-04 | 2018-02-07 | The Procter & Gamble Company | Water-soluble unit dose article comprising a cleaning amine |
US10873650B2 (en) * | 2016-10-07 | 2020-12-22 | Cox Communications, Inc. | System, methods, and devices for distributed physical layer networks |
CN107918065B (en) * | 2016-10-10 | 2020-01-31 | 京元电子股份有限公司 | Fingerprint identification electronic component testing device and testing equipment thereof |
FR3060920B1 (en) * | 2016-12-20 | 2019-07-05 | Thales | SYSTEM AND METHOD FOR DATA TRANSMISSION IN A SATELLITE SYSTEM |
CN106841915B (en) * | 2017-01-15 | 2020-03-10 | 东北电力大学 | Power transmission line fault positioning method based on compressed sensing |
US10412038B2 (en) * | 2017-03-20 | 2019-09-10 | International Business Machines Corporation | Targeting effective communication within communities |
US11860942B1 (en) * | 2017-05-15 | 2024-01-02 | Amazon Technologies, Inc. | Predictive loading and unloading of customer data in memory |
US10271077B2 (en) | 2017-07-03 | 2019-04-23 | At&T Intellectual Property I, L.P. | Synchronizing and dynamic chaining of a transport layer network service for live content broadcasting |
US11108840B2 (en) * | 2017-07-03 | 2021-08-31 | At&T Intellectual Property I, L.P. | Transport layer network service for live content broadcasting |
US11570124B2 (en) * | 2017-12-01 | 2023-01-31 | At&T Intellectual Property I, L.P. | Predictive network capacity scaling based on customer interest |
US10764650B2 (en) | 2017-12-07 | 2020-09-01 | At&T Intellectual Property I, L.P. | Video optimization proxy system and method |
US10796022B2 (en) | 2018-05-16 | 2020-10-06 | Ebay Inc. | Weighted source data secured on blockchains |
CN108882374B (en) * | 2018-05-25 | 2023-04-18 | 西南电子技术研究所(中国电子科技集团公司第十研究所) | Ka frequency band multi-address measurement and control resource scheduling method |
US11595456B2 (en) * | 2018-05-31 | 2023-02-28 | Microsoft Technology Licensing, Llc | Modifying content streaming based on device parameters |
CN108924899B (en) * | 2018-06-28 | 2021-10-26 | 太原科技大学 | Double-relay selection method of two-hop multi-relay system |
US10917165B2 (en) | 2018-07-02 | 2021-02-09 | Intelsat US LLC | Base station architecture integrating satellite-based content delivery with 4G/LTE mobile network |
US10743049B2 (en) | 2018-10-24 | 2020-08-11 | At&T Intellectual Property I, L.P. | Pre-positioning of streaming content onto communication devices for future content recommendations |
US20200153889A1 (en) * | 2018-11-12 | 2020-05-14 | Asd Korea | Method for uploading and downloading file, and server for executing the same |
US10990939B2 (en) | 2019-04-15 | 2021-04-27 | Advanced New Technologies Co., Ltd. | Method and device for voice broadcast |
US20220321368A1 (en) * | 2019-08-29 | 2022-10-06 | Intellectual Discovery Co., Ltd. | Method, device, computer program, and recording medium for audio processing in wireless communication system |
US11188546B2 (en) * | 2019-09-24 | 2021-11-30 | International Business Machines Corporation | Pseudo real time communication system |
DE102020003383B4 (en) * | 2020-06-04 | 2021-12-30 | MERCK Patent Gesellschaft mit beschränkter Haftung | Method for storing and method for transmitting at least one piece of data, corresponding computer program products and devices |
US11533366B2 (en) * | 2020-10-04 | 2022-12-20 | Siden, Inc. | Method and system for controlling the use of dormant capacity for distributing data |
CN114465989B (en) * | 2020-10-30 | 2024-07-02 | 京东方科技集团股份有限公司 | Streaming media data processing method, server, electronic device and readable storage medium |
CN112600952B (en) * | 2020-12-10 | 2022-09-27 | 四川迅游网络科技股份有限公司 | Method and system for accelerating distribution of mobile terminal network |
US11889348B2 (en) * | 2021-02-19 | 2024-01-30 | Qualcomm Incorporated | Techniques for compressing feedback values in wireless communications |
CN112954665B (en) * | 2021-03-16 | 2023-04-07 | 西安电子科技大学 | Satellite network mobility management method based on dynamic service domain |
US11734012B2 (en) * | 2021-03-31 | 2023-08-22 | Bmc Software, Inc. | Systems and methods for efficient transfer of log data |
US11916950B1 (en) | 2021-04-12 | 2024-02-27 | Vmware, Inc. | Coordinating a distributed vulnerability network scan |
US11528317B1 (en) * | 2021-05-05 | 2022-12-13 | Vmware, Inc. | Proxy-enabled communication across network boundaries by self-replicating applications |
EP4409918A1 (en) * | 2021-10-19 | 2024-08-07 | ViaSat Inc. | Reducing network bandwidth consumption using generically encoded media objects |
AU2022370219A1 (en) * | 2021-10-19 | 2024-05-09 | Viasat, Inc. | Reducing network bandwidth consumption of real-time broadcasts using generically encoded media objects |
CN114172563B (en) * | 2021-12-09 | 2022-09-13 | 广州爱浦路网络技术有限公司 | Communication satellite dormancy control method, heaven-earth integrated communication network and storage medium |
US11776507B1 (en) | 2022-07-20 | 2023-10-03 | Ivan Svirid | Systems and methods for reducing display latency |
CN116660680B (en) * | 2023-05-31 | 2024-05-24 | 国家电网有限公司 | Node power line communication-based power outage event studying and judging method |
Citations (28)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5408470A (en) * | 1993-10-14 | 1995-04-18 | Intel Corporation | Deferred synchronization of distributed objects |
US5740367A (en) * | 1995-11-03 | 1998-04-14 | Spilo; Michael L. | Method and apparatus for improving the throughput of a local area network |
US5870754A (en) * | 1996-04-25 | 1999-02-09 | Philips Electronics North America Corporation | Video retrieval of MPEG compressed sequences using DC and motion signatures |
US6339787B1 (en) * | 1995-11-30 | 2002-01-15 | Stampede Technologies, Inc. | Apparatus and method for increasing speed in a network file/object oriented server/client system |
US20020026478A1 (en) * | 2000-03-14 | 2002-02-28 | Rodgers Edward B. | Method and apparatus for forming linked multi-user groups of shared software applications |
US20020188735A1 (en) * | 2001-06-06 | 2002-12-12 | Needham Bradford H. | Partially replicated, locally searched peer to peer file sharing system |
US20050010870A1 (en) * | 2003-07-09 | 2005-01-13 | Jinsheng Gu | Post-processing algorithm for byte-level file differencing |
US20050033747A1 (en) * | 2003-05-25 | 2005-02-10 | Erland Wittkotter | Apparatus and method for the server-sided linking of information |
US20050131903A1 (en) * | 2000-02-18 | 2005-06-16 | Margolus Norman H. | Data repository and method for promoting network storage of data |
US20060253444A1 (en) * | 2005-05-05 | 2006-11-09 | Cisco Technology, Inc. | Method and system for dynamically pre-positioning content in a network based detecting or predicting user presence |
US7340510B1 (en) * | 2003-11-18 | 2008-03-04 | Cisco Technology, Inc. | Content delivery network (CDN) replication status reporter |
US20080066182A1 (en) * | 2006-09-12 | 2008-03-13 | Andrew Hickmott | Security techniques for cooperative file distribution |
US7359956B2 (en) * | 2001-03-12 | 2008-04-15 | Kabushiki Kaisha Toshiba | Data transfer scheme using caching and differential compression techniques for reducing network load |
US20080205396A1 (en) * | 2007-02-22 | 2008-08-28 | Cisco Technology, Inc., A California Corporation | Time-based authorization of Internet Protocol (IP) multicast subscription services |
US7430331B2 (en) * | 2000-07-25 | 2008-09-30 | Juniper Networks, Inc. | System and method for incremental and continuous data compression |
US20090234809A1 (en) * | 2008-03-17 | 2009-09-17 | Michael Bluger | Method and a Computer Program Product for Indexing files and Searching Files |
US20090313329A1 (en) * | 2008-06-13 | 2009-12-17 | International Business Machines Corporation | Methods, Systems and Computer Program Products for Communication of Information in Electronic Conferences |
US7636767B2 (en) * | 2005-11-29 | 2009-12-22 | Cisco Technology, Inc. | Method and apparatus for reducing network traffic over low bandwidth links |
US7681032B2 (en) * | 2001-03-12 | 2010-03-16 | Portauthority Technologies Inc. | System and method for monitoring unauthorized transport of digital content |
US20100177642A1 (en) * | 2009-01-13 | 2010-07-15 | Viasat, Inc. | Correlative anticipatory deltacasting |
US7778438B2 (en) * | 2002-09-30 | 2010-08-17 | Myport Technologies, Inc. | Method for multi-media recognition, data conversion, creation of metatags, storage and search retrieval |
US7814149B1 (en) * | 2008-09-29 | 2010-10-12 | Symantec Operating Corporation | Client side data deduplication |
US7917531B2 (en) * | 2001-02-07 | 2011-03-29 | Sony Corporation | Information processing apparatus |
US7941409B2 (en) * | 2007-09-11 | 2011-05-10 | Hitachi, Ltd. | Method and apparatus for managing data compression and integrity in a computer storage system |
US7953881B1 (en) * | 2008-06-12 | 2011-05-31 | Juniper Networks, Inc. | Network characteristic-based compression of network traffic |
US8041677B2 (en) * | 2005-10-12 | 2011-10-18 | Datacastle Corporation | Method and system for data backup |
US8055616B2 (en) * | 2004-06-25 | 2011-11-08 | International Business Machines Corporation | Application sharing smoothness |
US8082228B2 (en) * | 2008-10-31 | 2011-12-20 | Netapp, Inc. | Remote office duplication |
Family Cites Families (125)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5905981A (en) | 1996-12-09 | 1999-05-18 | Microsoft Corporation | Automatically associating archived multimedia content with current textual content |
US6253264B1 (en) * | 1997-03-07 | 2001-06-26 | Intelligent Compression Technologies | Coding network grouping data of same data type into blocks using file data structure and selecting compression for individual block base on block data type |
US5953503A (en) * | 1997-10-29 | 1999-09-14 | Digital Equipment Corporation | Compression protocol with multiple preset dictionaries |
US6182133B1 (en) | 1998-02-06 | 2001-01-30 | Microsoft Corporation | Method and apparatus for display of information prefetching and cache status having variable visual indication based on a period of time since prefetching |
US20010016836A1 (en) | 1998-11-02 | 2001-08-23 | Gilles Boccon-Gibod | Method and apparatus for distributing multimedia information over a network |
US6178461B1 (en) | 1998-12-08 | 2001-01-23 | Lucent Technologies Inc. | Cache-based compaction technique for internet browsing using similar objects in client cache as reference objects |
EP1022875B1 (en) * | 1999-01-25 | 2005-06-01 | Nippon Telegraph and Telephone Corporation | Push network |
US7129860B2 (en) * | 1999-01-29 | 2006-10-31 | Quickshift, Inc. | System and method for performing scalable embedded parallel data decompression |
US20070111713A1 (en) | 1999-05-25 | 2007-05-17 | Silverbrook Research Pty Ltd | Method for accessing content from a computer network via a mobile phone using a two-step retrieval process |
US6941338B1 (en) * | 1999-09-01 | 2005-09-06 | Nextwave Telecom Inc. | Distributed cache for a wireless communication system |
US6721780B1 (en) | 1999-11-09 | 2004-04-13 | Fireclick, Inc. | Predictive pre-download of network objects |
US7310629B1 (en) * | 1999-12-15 | 2007-12-18 | Napster, Inc. | Method and apparatus for controlling file sharing of multimedia files over a fluid, de-centralized network |
US6947440B2 (en) * | 2000-02-15 | 2005-09-20 | Gilat Satellite Networks, Ltd. | System and method for internet page acceleration including multicast transmissions |
US20030018581A1 (en) | 2000-02-16 | 2003-01-23 | Bratton Timothy R. | Delivering media data to portable computing devices |
US20010032336A1 (en) * | 2000-02-23 | 2001-10-18 | Jason Kaufman | Broadcast system |
US7856485B2 (en) | 2000-03-08 | 2010-12-21 | Music Choice | Systems and methods for providing customized media channels |
US6701316B1 (en) | 2000-04-07 | 2004-03-02 | Nec Corporation | Method and apparatus for intelligent network bandwidth and system resource utilization for web content fetch and refresh |
US20020006116A1 (en) * | 2000-05-04 | 2002-01-17 | Reed Burkhart | Distributed content management and open broadcast system using satellites and the internet |
US6769010B1 (en) | 2000-05-11 | 2004-07-27 | Howzone.Com Inc. | Apparatus for distributing information over a network-based environment, method of distributing information to users, and method for associating content objects with a database wherein the content objects are accessible over a network communication medium by a user |
US7716367B1 (en) * | 2000-07-20 | 2010-05-11 | Akamai Technologies, Inc. | Network performance monitoring in a content delivery service |
US7023818B1 (en) * | 2000-07-27 | 2006-04-04 | Bbnt Solutions Llc | Sending messages to radio-silent nodes in ad-hoc wireless networks |
US8831995B2 (en) | 2000-11-06 | 2014-09-09 | Numecent Holdings, Inc. | Optimized server for streamed applications |
AU2001211244A1 (en) | 2000-11-09 | 2002-05-27 | Swisscom Ag | Method for grouping and transmitting multimedia data |
US6879808B1 (en) | 2000-11-15 | 2005-04-12 | Space Systems/Loral, Inc | Broadband communication systems and methods using low and high bandwidth request and broadcast links |
US6965683B2 (en) | 2000-12-21 | 2005-11-15 | Digimarc Corporation | Routing networks for use with watermark systems |
US20020154887A1 (en) | 2001-04-23 | 2002-10-24 | Koninklijke Philips Electronics N.V. | System and method for storing digital broadcast data |
JP2002359641A (en) | 2001-05-31 | 2002-12-13 | Matsushita Electric Ind Co Ltd | File distribution system, file distribution server unit, and reception client unit |
US7100200B2 (en) | 2001-06-13 | 2006-08-29 | Citrix Systems, Inc. | Method and apparatus for transmitting authentication credentials of a user across communication sessions |
US6912645B2 (en) | 2001-07-19 | 2005-06-28 | Lucent Technologies Inc. | Method and apparatus for archival data storage |
US7509372B2 (en) | 2001-09-13 | 2009-03-24 | International Business Machines Corporation | Method and system for redirecting data requests in peer-to-peer data networks |
US6865655B1 (en) | 2002-07-30 | 2005-03-08 | Sun Microsystems, Inc. | Methods and apparatus for backing up and restoring data portions stored in client computer systems |
US7509667B1 (en) | 2002-08-15 | 2009-03-24 | Sprint Communications Company L.P. | Broadband content jukebox with profile-based caching |
US20080022135A1 (en) | 2002-08-27 | 2008-01-24 | Apple Inc. | Method and apparatus for uploading mass-distributed content to a server |
US7130890B1 (en) | 2002-09-04 | 2006-10-31 | Hewlett-Packard Development Company, L.P. | Method and system for adaptively prefetching objects from a network |
WO2004036362A2 (en) | 2002-10-15 | 2004-04-29 | Ingrian Networks, Inc. | Compression of secure content |
US20040081199A1 (en) | 2002-10-29 | 2004-04-29 | Lopez Ricardo Jorge | Multi-channel communication system and method based on class of service requirements |
US8176186B2 (en) | 2002-10-30 | 2012-05-08 | Riverbed Technology, Inc. | Transaction accelerator for client-server communications systems |
CN101448012B (en) * | 2002-11-12 | 2013-04-24 | 雷特泽遥距管理有限责任公司 | Data storage devices having IP capablity partitions |
US20090005547A1 (en) | 2002-11-14 | 2009-01-01 | Dharmacon, Inc. | siRNa targeting neuropilin 1 (NRP1) |
EP1434385A1 (en) | 2002-12-23 | 2004-06-30 | Koninklijke KPN N.V. | A system, a method and a message interceptor for overload protection in a data network |
US7809154B2 (en) * | 2003-03-07 | 2010-10-05 | Technology, Patents & Licensing, Inc. | Video entity recognition in compressed digital video streams |
US7680897B1 (en) | 2003-04-08 | 2010-03-16 | Novell, Inc. | Methods and systems for managing network traffic |
US7810122B2 (en) | 2003-05-09 | 2010-10-05 | At&T Intellectual Property I, L.P. | Application services coordinated satellite multicast content delivery |
US20070276823A1 (en) * | 2003-05-22 | 2007-11-29 | Bruce Borden | Data management systems and methods for distributed data storage and management using content signatures |
US7143251B1 (en) | 2003-06-30 | 2006-11-28 | Data Domain, Inc. | Data storage using identifiers |
WO2005043279A2 (en) * | 2003-10-31 | 2005-05-12 | Disksites Research And Development Ltd. | Device, system and method for storage and access of computer files |
US20050249231A1 (en) | 2003-11-25 | 2005-11-10 | Asif Khan | Methods and systems for reliable distribution of media over a network |
EP1728391A1 (en) | 2004-03-10 | 2006-12-06 | Koninklijke Philips Electronics N.V. | System and method for remote recording |
US20060047855A1 (en) | 2004-05-13 | 2006-03-02 | Microsoft Corporation | Efficient chunking algorithm |
US7437364B1 (en) | 2004-06-30 | 2008-10-14 | Google Inc. | System and method of accessing a document efficiently through multi-tier web caching |
US7376150B2 (en) | 2004-07-30 | 2008-05-20 | Nokia Corporation | Point-to-point repair response mechanism for point-to-multipoint transmission systems |
US7165050B2 (en) | 2004-09-20 | 2007-01-16 | Aaron Marking | Media on demand via peering |
US7487169B2 (en) * | 2004-11-24 | 2009-02-03 | International Business Machines Corporation | Method for finding the longest common subsequences between files with applications to differential compression |
US7716306B2 (en) | 2005-01-25 | 2010-05-11 | International Business Machines Corporation | Data caching based on data contents |
US20080005086A1 (en) | 2006-05-17 | 2008-01-03 | Moore James F | Certificate-based search |
US20060184960A1 (en) | 2005-02-14 | 2006-08-17 | Universal Music Group, Inc. | Method and system for enabling commerce from broadcast content |
US8312172B2 (en) * | 2005-05-26 | 2012-11-13 | Bytemobile, Inc. | Method and system for delta compression |
US7882181B2 (en) | 2005-06-03 | 2011-02-01 | Microsoft Corporation | Minimizing data transfer from POP3 servers |
CN100588203C (en) * | 2005-07-12 | 2010-02-03 | 国际商业机器公司 | Data storage method and system |
US20070033408A1 (en) | 2005-08-08 | 2007-02-08 | Widevine Technologies, Inc. | Preventing illegal distribution of copy protected content |
ES2726017T3 (en) * | 2005-10-28 | 2019-10-01 | Viasat Inc | Adaptive coding and modulation for broadband data transmission |
US8230059B1 (en) | 2005-11-08 | 2012-07-24 | Hewlett-Packard Development Company, L.P. | Method of monitoring resource usage in computing environment |
CN100486170C (en) | 2005-12-15 | 2009-05-06 | 国际商业机器公司 | Method and device for transmitting pro-active HTTP content |
US8191098B2 (en) | 2005-12-22 | 2012-05-29 | Verimatrix, Inc. | Multi-source bridge content distribution system and method |
US20070174246A1 (en) | 2006-01-25 | 2007-07-26 | Sigurdsson Johann T | Multiple client search method and system |
JP4701148B2 (en) | 2006-03-02 | 2011-06-15 | アラクサラネットワークス株式会社 | Failure recovery system and server |
US7644111B2 (en) * | 2006-05-02 | 2010-01-05 | Microsoft Corporation | Framework for content representation and delivery |
WO2007131132A2 (en) | 2006-05-03 | 2007-11-15 | Voxant, Inc. | System and method for collecting and distributing content |
US7945689B2 (en) | 2007-03-23 | 2011-05-17 | Sony Corporation | Method and apparatus for transferring files to clients using a peer-to-peer file transfer model and a client-server transfer model |
EP2036354A1 (en) * | 2006-06-20 | 2009-03-18 | Koninklijke Philips Electronics N.V. | Generating fingerprints of video signals |
WO2008011388A2 (en) | 2006-07-15 | 2008-01-24 | Solid State Networks, Inc. | Methods and apparatus for transferring data |
US8230361B2 (en) | 2006-09-28 | 2012-07-24 | Google Inc. | Content feed user interface |
JP4680860B2 (en) * | 2006-09-29 | 2011-05-11 | 富士通株式会社 | Data communication method |
US20080115125A1 (en) * | 2006-11-13 | 2008-05-15 | Cingular Wireless Ii, Llc | Optimizing static dictionary usage for signal compression and for hypertext transfer protocol compression in a wireless network |
US8819724B2 (en) | 2006-12-04 | 2014-08-26 | Qualcomm Incorporated | Systems, methods and apparatus for providing sequences of media segments and corresponding interactive data on a channel in a media distribution system |
US7961665B2 (en) | 2006-12-13 | 2011-06-14 | Viasat, Inc. | Terminal aware multicasting |
US20080144713A1 (en) | 2006-12-13 | 2008-06-19 | Viasat, Inc. | Acm aware encoding systems and methods |
US20080152316A1 (en) * | 2006-12-21 | 2008-06-26 | Nortel Networks Limited | Remote control of media content delivery to a digital media recorder |
US20080175239A1 (en) | 2007-01-23 | 2008-07-24 | Yipes Enterprise Services, Inc | Multicast wide-area network for distributing data to selected destinations with limited or no replication |
US8131723B2 (en) | 2007-03-30 | 2012-03-06 | Quest Software, Inc. | Recovering a file system to any point-in-time in the past with guaranteed structure, content consistency and integrity |
US20080263130A1 (en) | 2007-04-23 | 2008-10-23 | Nir Michalowitz | Apparatus, system and method of digital content distribution |
US20090006368A1 (en) * | 2007-06-29 | 2009-01-01 | Microsoft Corporation | Automatic Video Recommendation |
US8151004B1 (en) | 2007-07-13 | 2012-04-03 | Adobe Systems Incorporated | File processing to accelerate image viewer initialization |
US8505046B2 (en) | 2007-08-17 | 2013-08-06 | At&T Intellectual Property I, L.P. | Targeted online, telephone and television advertisements based on cross-service subscriber profiling |
US8930989B2 (en) | 2007-08-20 | 2015-01-06 | AdsVantage | System and method for providing supervised learning to associate profiles in video audiences |
US8078729B2 (en) | 2007-08-21 | 2011-12-13 | Ntt Docomo, Inc. | Media streaming with online caching and peer-to-peer forwarding |
US8284773B1 (en) | 2007-11-01 | 2012-10-09 | Sprint Spectrum L.P. | Advanced joining into multicast group to facilitate later communication among group members |
US7697557B2 (en) | 2007-12-26 | 2010-04-13 | Alcatel Lucent | Predictive caching content distribution network |
US7975071B2 (en) | 2008-01-18 | 2011-07-05 | Microsoft Corporation | Content compression in networks |
US8200969B2 (en) | 2008-01-31 | 2012-06-12 | Hewlett-Packard Development Company, L.P. | Data verification by challenge |
US8166260B2 (en) | 2008-04-18 | 2012-04-24 | Netapp, Inc. | Method and system for managing inactive snapshot blocks |
US8010705B1 (en) | 2008-06-04 | 2011-08-30 | Viasat, Inc. | Methods and systems for utilizing delta coding in acceleration proxy servers |
US8195689B2 (en) * | 2009-06-10 | 2012-06-05 | Zeitera, Llc | Media fingerprinting and identification system |
US8019882B2 (en) | 2008-06-27 | 2011-09-13 | Microsoft Corporation | Content identification for peer-to-peer content retrieval |
US8799955B2 (en) | 2008-08-26 | 2014-08-05 | At&T Intellectual Property I, Lp | Apparatus and method for managing media content |
US20100083322A1 (en) | 2008-09-29 | 2010-04-01 | Alan Rouse | Providing selective video program content and associated license in response to a promotion token |
US20100158391A1 (en) * | 2008-12-24 | 2010-06-24 | Yahoo! Inc. | Identification and transfer of a media object segment from one communications network to another |
US20140040353A1 (en) | 2009-01-13 | 2014-02-06 | Viasat, Inc. | Return-link optimization for file-sharing traffic |
US8483217B2 (en) * | 2009-03-10 | 2013-07-09 | Viasat, Inc. | Internet protocol broadcasting |
US8000259B2 (en) | 2009-09-04 | 2011-08-16 | Viasat, Inc. | Distributed cache—adaptive multicast architecture for bandwidth reduction |
US8791787B2 (en) | 2009-12-11 | 2014-07-29 | Sony Corporation | User personalization with bezel-displayed identification |
WO2011123705A1 (en) | 2010-03-31 | 2011-10-06 | Platform Design, Inc. | System for subscriber-specific tv and multimedia content distribution over high speed broadcast mediums |
US9043385B1 (en) * | 2010-04-18 | 2015-05-26 | Viasat, Inc. | Static tracker |
US8898324B2 (en) * | 2010-06-24 | 2014-11-25 | International Business Machines Corporation | Data access management in a hybrid memory server |
US8954490B2 (en) * | 2010-06-24 | 2015-02-10 | International Business Machines Corporation | Speculative and coordinated data access in a hybrid memory server |
US8493902B2 (en) | 2010-08-16 | 2013-07-23 | Florida Institute for Human and Machine Cognition | Opportunistic listening system and method |
EP2437498A1 (en) * | 2010-09-30 | 2012-04-04 | British Telecommunications Public Limited Company | Digital video fingerprinting |
US20120184309A1 (en) | 2011-01-19 | 2012-07-19 | Cohen Robert H | Provision of content to mobile communication devices |
US9912718B1 (en) * | 2011-04-11 | 2018-03-06 | Viasat, Inc. | Progressive prefetching |
US9106607B1 (en) * | 2011-04-11 | 2015-08-11 | Viasat, Inc. | Browser based feedback for optimized web browsing |
EP2536065B1 (en) | 2011-06-14 | 2019-11-27 | ViaSat, Inc. | Transport protocol for anticipatory content |
US9407355B1 (en) | 2011-10-25 | 2016-08-02 | Viasat Inc. | Opportunistic content delivery using delta coding |
CN104081739B (en) | 2011-12-23 | 2018-03-02 | 阿卡麦科技公司 | Compression and the data difference device and system in Intrusion Detection based on host/path of differentiation engine are utilized in overlay network |
US9351037B2 (en) | 2012-02-07 | 2016-05-24 | Turner Broadcasting System, Inc. | Method and system for contextual advertisement replacement utilizing automatic content recognition |
US8432808B1 (en) * | 2012-06-15 | 2013-04-30 | Viasat Inc. | Opportunistically delayed delivery in a satellite network |
US9146990B2 (en) | 2013-01-07 | 2015-09-29 | Gracenote, Inc. | Search and identification of video content |
US20150127715A1 (en) | 2013-11-04 | 2015-05-07 | Viasat Inc. | Decoupled dictionary and transmission services over communications networks |
US9749431B1 (en) * | 2013-11-21 | 2017-08-29 | Mashable, Inc. | Finding a potentially viral first media content and transmitting a second media content that is selected based on the first media content and based on the determination that the first media content exceeds a velocity threshold |
US10855797B2 (en) * | 2014-06-03 | 2020-12-01 | Viasat, Inc. | Server-machine-driven hint generation for improved web page loading using client-machine-driven feedback |
US10478127B2 (en) * | 2014-06-23 | 2019-11-19 | Sherlock Solutions, LLC | Apparatuses, methods, processes, and systems related to significant detrimental changes in health parameters and activating lifesaving measures |
US11310257B2 (en) * | 2019-02-27 | 2022-04-19 | Microsoft Technology Licensing, Llc | Anomaly scoring using collaborative filtering |
US11902963B2 (en) * | 2020-04-17 | 2024-02-13 | Intel Corporation | Coverage enhancement for physical uplink control channel transmissions in new radio |
US11638040B2 (en) * | 2020-08-24 | 2023-04-25 | Schmied Enterprises LLC | Eco-friendly codec-based system for low latency transmission |
US20220311837A1 (en) * | 2021-03-29 | 2022-09-29 | Amazon Technologies, Inc. | Customizable data-processing network functions for radio-based networks |
US11785272B1 (en) * | 2021-12-03 | 2023-10-10 | Amazon Technologies, Inc. | Selecting times or durations of advertisements during episodes of media programs |
-
2010
- 2010-01-04 US US12/651,909 patent/US9369516B2/en active Active
- 2010-01-04 US US12/651,928 patent/US20100179984A1/en not_active Abandoned
- 2010-01-08 US US12/684,648 patent/US8639744B2/en active Active
- 2010-01-08 US US12/684,726 patent/US8775503B2/en active Active
- 2010-01-12 US US12/685,920 patent/US8489673B2/en active Active
- 2010-01-12 US US12/685,729 patent/US8489672B2/en active Active
- 2010-01-13 US US12/686,744 patent/US8477635B2/en active Active
- 2010-01-13 WO PCT/US2010/020940 patent/WO2010083248A2/en active Application Filing
- 2010-01-13 WO PCT/US2010/020897 patent/WO2010083214A2/en active Application Filing
-
2013
- 2013-06-03 US US13/908,960 patent/US8842553B2/en active Active
- 2013-06-17 US US13/919,888 patent/US10187436B2/en active Active
- 2013-06-17 US US13/919,861 patent/US9762635B2/en active Active
-
2014
- 2014-05-27 US US14/288,188 patent/US9172748B2/en active Active
- 2014-08-06 US US14/453,479 patent/US9363308B2/en active Active
-
2016
- 2016-05-06 US US15/148,897 patent/US10547655B2/en active Active
-
2019
- 2019-01-15 US US16/247,702 patent/US10536495B2/en active Active
- 2019-12-20 US US16/723,851 patent/US10951671B2/en active Active
-
2021
- 2021-02-10 US US17/172,757 patent/US11252210B2/en active Active
-
2022
- 2022-01-14 US US17/576,664 patent/US11916990B2/en active Active
-
2024
- 2024-02-08 US US18/437,142 patent/US20240305680A1/en active Pending
Patent Citations (33)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5408470A (en) * | 1993-10-14 | 1995-04-18 | Intel Corporation | Deferred synchronization of distributed objects |
US5740367A (en) * | 1995-11-03 | 1998-04-14 | Spilo; Michael L. | Method and apparatus for improving the throughput of a local area network |
US6339787B1 (en) * | 1995-11-30 | 2002-01-15 | Stampede Technologies, Inc. | Apparatus and method for increasing speed in a network file/object oriented server/client system |
US5870754A (en) * | 1996-04-25 | 1999-02-09 | Philips Electronics North America Corporation | Video retrieval of MPEG compressed sequences using DC and motion signatures |
US20050131903A1 (en) * | 2000-02-18 | 2005-06-16 | Margolus Norman H. | Data repository and method for promoting network storage of data |
US7124305B2 (en) * | 2000-02-18 | 2006-10-17 | Permabit, Inc. | Data repository and method for promoting network storage of data |
US20020026478A1 (en) * | 2000-03-14 | 2002-02-28 | Rodgers Edward B. | Method and apparatus for forming linked multi-user groups of shared software applications |
US7430331B2 (en) * | 2000-07-25 | 2008-09-30 | Juniper Networks, Inc. | System and method for incremental and continuous data compression |
US7917531B2 (en) * | 2001-02-07 | 2011-03-29 | Sony Corporation | Information processing apparatus |
US7359956B2 (en) * | 2001-03-12 | 2008-04-15 | Kabushiki Kaisha Toshiba | Data transfer scheme using caching and differential compression techniques for reducing network load |
US7681032B2 (en) * | 2001-03-12 | 2010-03-16 | Portauthority Technologies Inc. | System and method for monitoring unauthorized transport of digital content |
US20020188735A1 (en) * | 2001-06-06 | 2002-12-12 | Needham Bradford H. | Partially replicated, locally searched peer to peer file sharing system |
US7778438B2 (en) * | 2002-09-30 | 2010-08-17 | Myport Technologies, Inc. | Method for multi-media recognition, data conversion, creation of metatags, storage and search retrieval |
US20050033747A1 (en) * | 2003-05-25 | 2005-02-10 | Erland Wittkotter | Apparatus and method for the server-sided linking of information |
US20050010870A1 (en) * | 2003-07-09 | 2005-01-13 | Jinsheng Gu | Post-processing algorithm for byte-level file differencing |
US7340510B1 (en) * | 2003-11-18 | 2008-03-04 | Cisco Technology, Inc. | Content delivery network (CDN) replication status reporter |
US8055616B2 (en) * | 2004-06-25 | 2011-11-08 | International Business Machines Corporation | Application sharing smoothness |
US20060253444A1 (en) * | 2005-05-05 | 2006-11-09 | Cisco Technology, Inc. | Method and system for dynamically pre-positioning content in a network based detecting or predicting user presence |
US8041677B2 (en) * | 2005-10-12 | 2011-10-18 | Datacastle Corporation | Method and system for data backup |
US7636767B2 (en) * | 2005-11-29 | 2009-12-22 | Cisco Technology, Inc. | Method and apparatus for reducing network traffic over low bandwidth links |
US20080066182A1 (en) * | 2006-09-12 | 2008-03-13 | Andrew Hickmott | Security techniques for cooperative file distribution |
US20080205396A1 (en) * | 2007-02-22 | 2008-08-28 | Cisco Technology, Inc., A California Corporation | Time-based authorization of Internet Protocol (IP) multicast subscription services |
US7941409B2 (en) * | 2007-09-11 | 2011-05-10 | Hitachi, Ltd. | Method and apparatus for managing data compression and integrity in a computer storage system |
US20090234809A1 (en) * | 2008-03-17 | 2009-09-17 | Michael Bluger | Method and a Computer Program Product for Indexing files and Searching Files |
US7953881B1 (en) * | 2008-06-12 | 2011-05-31 | Juniper Networks, Inc. | Network characteristic-based compression of network traffic |
US20090313329A1 (en) * | 2008-06-13 | 2009-12-17 | International Business Machines Corporation | Methods, Systems and Computer Program Products for Communication of Information in Electronic Conferences |
US7814149B1 (en) * | 2008-09-29 | 2010-10-12 | Symantec Operating Corporation | Client side data deduplication |
US8082228B2 (en) * | 2008-10-31 | 2011-12-20 | Netapp, Inc. | Remote office duplication |
US20100185730A1 (en) * | 2009-01-13 | 2010-07-22 | Viasat, Inc. | Deltacasting for overlapping requests |
US20100179986A1 (en) * | 2009-01-13 | 2010-07-15 | Viasat, Inc. | Content set based deltacasting |
US20100180046A1 (en) * | 2009-01-13 | 2010-07-15 | Viasat, Inc. | Deltacasting |
US20100179987A1 (en) * | 2009-01-13 | 2010-07-15 | Viasat, Inc. | Content set based pre-positioning |
US20100177642A1 (en) * | 2009-01-13 | 2010-07-15 | Viasat, Inc. | Correlative anticipatory deltacasting |
Cited By (125)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9143451B2 (en) | 2007-10-01 | 2015-09-22 | F5 Networks, Inc. | Application layer network traffic prioritization |
US8010705B1 (en) | 2008-06-04 | 2011-08-30 | Viasat, Inc. | Methods and systems for utilizing delta coding in acceleration proxy servers |
US8671223B1 (en) | 2008-06-04 | 2014-03-11 | Viasat, Inc. | Methods and systems for utilizing delta coding in acceleration proxy servers |
US8489672B2 (en) | 2009-01-13 | 2013-07-16 | Viasat, Inc. | Content set based deltacasting |
US11916990B2 (en) | 2009-01-13 | 2024-02-27 | Viasat, Inc. | Content set based deltacasting |
US20100281105A1 (en) * | 2009-01-13 | 2010-11-04 | Viasat, Inc. | Deltacasting for live content |
US9369516B2 (en) | 2009-01-13 | 2016-06-14 | Viasat, Inc. | Deltacasting |
US20100180046A1 (en) * | 2009-01-13 | 2010-07-15 | Viasat, Inc. | Deltacasting |
US9762635B2 (en) | 2009-01-13 | 2017-09-12 | Viasat, Inc. | Content set based pre-positioning |
US9172748B2 (en) | 2009-01-13 | 2015-10-27 | Viasat, Inc. | Deltacasting for overlapping requests |
US10536495B2 (en) | 2009-01-13 | 2020-01-14 | Viasat, Inc. | Content set based deltacasting |
US9363308B2 (en) | 2009-01-13 | 2016-06-07 | Viasat, Inc. | Correlative anticipatory deltacasting |
US8477635B2 (en) | 2009-01-13 | 2013-07-02 | Viasat, Inc. | Correlative anticipatory deltacasting |
US8489673B2 (en) | 2009-01-13 | 2013-07-16 | Viasat, Inc. | Content set based pre-positioning |
US10547655B2 (en) | 2009-01-13 | 2020-01-28 | Viasat, Inc. | Deltacasting |
US20100179987A1 (en) * | 2009-01-13 | 2010-07-15 | Viasat, Inc. | Content set based pre-positioning |
US11252210B2 (en) | 2009-01-13 | 2022-02-15 | Viasat, Inc. | Content set based deltacasting |
US20100179986A1 (en) * | 2009-01-13 | 2010-07-15 | Viasat, Inc. | Content set based deltacasting |
US8639744B2 (en) | 2009-01-13 | 2014-01-28 | Viasat, Inc. | Deltacasting for live content |
US10187436B2 (en) | 2009-01-13 | 2019-01-22 | Viasat, Inc. | Content set based deltacasting |
US20100177642A1 (en) * | 2009-01-13 | 2010-07-15 | Viasat, Inc. | Correlative anticipatory deltacasting |
US10951671B2 (en) | 2009-01-13 | 2021-03-16 | Viasat, Inc. | Content set based deltacasting |
US20100185730A1 (en) * | 2009-01-13 | 2010-07-22 | Viasat, Inc. | Deltacasting for overlapping requests |
US8775503B2 (en) | 2009-01-13 | 2014-07-08 | Viasat, Inc. | Deltacasting for overlapping requests |
US8842553B2 (en) | 2009-01-13 | 2014-09-23 | Viasat, Inc. | Correlative anticipatory deltacasting |
US11108815B1 (en) | 2009-11-06 | 2021-08-31 | F5 Networks, Inc. | Methods and system for returning requests with javascript for clients before passing a request to a server |
US10721269B1 (en) | 2009-11-06 | 2020-07-21 | F5 Networks, Inc. | Methods and system for returning requests with javascript for clients before passing a request to a server |
US8806056B1 (en) | 2009-11-20 | 2014-08-12 | F5 Networks, Inc. | Method for optimizing remote file saves in a failsafe way |
US8516253B1 (en) | 2010-01-18 | 2013-08-20 | Viasat, Inc. | Self-keyed protection of anticipatory content |
US9405924B2 (en) | 2010-01-18 | 2016-08-02 | Viasat, Inc. | Self-keyed protection of anticipatory content |
US10645143B1 (en) | 2010-04-18 | 2020-05-05 | Viasat, Inc. | Static tracker |
US9407717B1 (en) | 2010-04-18 | 2016-08-02 | Viasat, Inc. | Selective prefetch scanning |
US8984048B1 (en) | 2010-04-18 | 2015-03-17 | Viasat, Inc. | Selective prefetch scanning |
US9307003B1 (en) | 2010-04-18 | 2016-04-05 | Viasat, Inc. | Web hierarchy modeling |
US10171550B1 (en) | 2010-04-18 | 2019-01-01 | Viasat, Inc. | Static tracker |
US9043385B1 (en) | 2010-04-18 | 2015-05-26 | Viasat, Inc. | Static tracker |
US9497256B1 (en) | 2010-04-18 | 2016-11-15 | Viasat, Inc. | Static tracker |
US9420049B1 (en) | 2010-06-30 | 2016-08-16 | F5 Networks, Inc. | Client side human user indicator |
US9503375B1 (en) | 2010-06-30 | 2016-11-22 | F5 Networks, Inc. | Methods for managing traffic in a multi-service environment and devices thereof |
USRE47019E1 (en) | 2010-07-14 | 2018-08-28 | F5 Networks, Inc. | Methods for DNSSEC proxying and deployment amelioration and systems thereof |
WO2012030110A3 (en) * | 2010-08-31 | 2012-06-07 | 레이져라이팅(주) | Device for laser-processing light guide plate having laser beam cut-off means |
WO2012030110A2 (en) * | 2010-08-31 | 2012-03-08 | 레이져라이팅(주) | Device for laser-processing light guide plate having laser beam cut-off means |
KR101035302B1 (en) | 2010-10-11 | 2011-05-19 | (주)이스트소프트 | A cloud system and a method of compressing and transmtting files in a cloud system |
CN103503417A (en) * | 2011-01-31 | 2014-01-08 | 阿尔特布里奇有限公司 | A communication system |
US9912718B1 (en) | 2011-04-11 | 2018-03-06 | Viasat, Inc. | Progressive prefetching |
US10972573B1 (en) | 2011-04-11 | 2021-04-06 | Viasat, Inc. | Browser optimization through user history analysis |
US10491703B1 (en) | 2011-04-11 | 2019-11-26 | Viasat, Inc. | Assisted browsing using page load feedback information and hinting functionality |
US10735548B1 (en) | 2011-04-11 | 2020-08-04 | Viasat, Inc. | Utilizing page information regarding a prior loading of a web page to generate hinting information for improving load time of a future loading of the web page |
US10789326B2 (en) | 2011-04-11 | 2020-09-29 | Viasat, Inc. | Progressive prefetching |
US10372780B1 (en) | 2011-04-11 | 2019-08-06 | Viasat, Inc. | Browser based feedback for optimized web browsing |
US12061663B2 (en) | 2011-04-11 | 2024-08-13 | Viasat, Inc. | Accelerating hint information in web page transactions |
US9037638B1 (en) | 2011-04-11 | 2015-05-19 | Viasat, Inc. | Assisted browsing using hinting functionality |
US9456050B1 (en) | 2011-04-11 | 2016-09-27 | Viasat, Inc. | Browser optimization through user history analysis |
US9106607B1 (en) | 2011-04-11 | 2015-08-11 | Viasat, Inc. | Browser based feedback for optimized web browsing |
US11256775B1 (en) | 2011-04-11 | 2022-02-22 | Viasat, Inc. | Progressive prefetching |
US11983234B2 (en) | 2011-04-11 | 2024-05-14 | Viasat, Inc. | Progressive prefetching |
US11983233B2 (en) | 2011-04-11 | 2024-05-14 | Viasat, Inc. | Browser based feedback for optimized web browsing |
US11176219B1 (en) | 2011-04-11 | 2021-11-16 | Viasat, Inc. | Browser based feedback for optimized web browsing |
US8879431B2 (en) | 2011-05-16 | 2014-11-04 | F5 Networks, Inc. | Method for load balancing of requests' processing of diameter servers |
US9356998B2 (en) | 2011-05-16 | 2016-05-31 | F5 Networks, Inc. | Method for load balancing of requests' processing of diameter servers |
US11139919B2 (en) | 2011-06-14 | 2021-10-05 | Viasat, Inc. | Transport protocol for anticipatory content |
US9935740B2 (en) | 2011-06-14 | 2018-04-03 | Viasat, Inc. | Transport protocol for anticipatory content |
US8897302B2 (en) | 2011-06-14 | 2014-11-25 | Viasat, Inc. | Transport protocol for anticipatory content |
US11777654B2 (en) | 2011-06-14 | 2023-10-03 | Viasat, Inc. | Transport protocol for anticipatory content |
US8396836B1 (en) | 2011-06-30 | 2013-03-12 | F5 Networks, Inc. | System for mitigating file virtualization storage import latency |
US9407355B1 (en) | 2011-10-25 | 2016-08-02 | Viasat Inc. | Opportunistic content delivery using delta coding |
US11290525B2 (en) | 2011-10-25 | 2022-03-29 | Viasat, Inc. | Opportunistic content delivery using delta coding |
US11575738B2 (en) | 2011-10-25 | 2023-02-07 | Viasat, Inc. | Opportunistic content delivery using delta coding |
US10270842B2 (en) | 2011-10-25 | 2019-04-23 | Viasat, Inc. | Opportunistic content delivery using delta coding |
US8463850B1 (en) | 2011-10-26 | 2013-06-11 | F5 Networks, Inc. | System and method of algorithmically generating a server side transaction identifier |
US9081793B2 (en) * | 2012-01-17 | 2015-07-14 | Panasonic Intellectual Property Corporation Of America | Content management apparatus, content management method, and program |
US20140046988A1 (en) * | 2012-01-17 | 2014-02-13 | Panasonic Corporation | Content management apparatus, content management method, and program |
US9378217B2 (en) * | 2012-02-16 | 2016-06-28 | Cortado Ag | Method and system for managing data and a corresponding computer program and a corresponding computer-readable storage medium |
US20130218855A1 (en) * | 2012-02-16 | 2013-08-22 | Cortado Ag | Method and system for managing data and a corresponding computer program and a corresponding computer-readable storage medium |
US10230566B1 (en) | 2012-02-17 | 2019-03-12 | F5 Networks, Inc. | Methods for dynamically constructing a service principal name and devices thereof |
US9244843B1 (en) | 2012-02-20 | 2016-01-26 | F5 Networks, Inc. | Methods for improving flow cache bandwidth utilization and devices thereof |
USRE48725E1 (en) | 2012-02-20 | 2021-09-07 | F5 Networks, Inc. | Methods for accessing data in a compressed file system and devices thereof |
US10097616B2 (en) | 2012-04-27 | 2018-10-09 | F5 Networks, Inc. | Methods for optimizing service of content requests and devices thereof |
US11743207B2 (en) | 2012-06-15 | 2023-08-29 | Viasat, Inc. | Opportunistic delivery of cacheable content in a communications network |
US11070490B2 (en) | 2012-06-15 | 2021-07-20 | Viasat, Inc. | Opportunistic delivery of cacheable content in a communications network |
US9065906B2 (en) | 2012-06-15 | 2015-06-23 | Viasat Inc. | Opportunistic delivery of cacheable content in a communications network |
US10594624B2 (en) | 2012-06-15 | 2020-03-17 | Viasat, Inc. | Opportunistic delivery of cacheable content in a communications network |
US10044637B2 (en) | 2012-06-15 | 2018-08-07 | Viasat, Inc. | Opportunistic delivery of cacheable content in a communications network |
US10033837B1 (en) | 2012-09-29 | 2018-07-24 | F5 Networks, Inc. | System and method for utilizing a data reducing module for dictionary compression of encoded data |
US9578090B1 (en) | 2012-11-07 | 2017-02-21 | F5 Networks, Inc. | Methods for provisioning application delivery service and devices thereof |
US9241046B2 (en) * | 2012-12-13 | 2016-01-19 | Ca, Inc. | Methods and systems for speeding up data recovery |
US20140172950A1 (en) * | 2012-12-13 | 2014-06-19 | Ca, Inc. | Methods And Systems For Speeding Up Data Recovery |
US9100989B2 (en) * | 2012-12-31 | 2015-08-04 | Nokia Technologies Oy | Method and apparatus for ad-hoc content sharing |
US20140185499A1 (en) * | 2012-12-31 | 2014-07-03 | Nokia Corporation | Method and apparatus for ad-hoc content sharing |
US10375155B1 (en) | 2013-02-19 | 2019-08-06 | F5 Networks, Inc. | System and method for achieving hardware acceleration for asymmetric flow connections |
US10085123B2 (en) | 2013-02-27 | 2018-09-25 | Saturn Licensing Llc | Information processing apparatus and method, program, and content supply system |
US9497614B1 (en) | 2013-02-28 | 2016-11-15 | F5 Networks, Inc. | National traffic steering device for a better control of a specific wireless/LTE network |
US20140297591A1 (en) * | 2013-03-30 | 2014-10-02 | International Business Machines Corporation | Providing efficient data replication for a transaction processing server |
US9600387B2 (en) * | 2013-03-30 | 2017-03-21 | International Business Machines Corporation | Providing efficient data replication for a transaction processing server |
US10187317B1 (en) | 2013-11-15 | 2019-01-22 | F5 Networks, Inc. | Methods for traffic rate control and devices thereof |
US20150215229A1 (en) * | 2014-01-29 | 2015-07-30 | Microsoft Corporation | Resource affinity in a dynamic resource pool |
US10097628B2 (en) * | 2014-01-29 | 2018-10-09 | Microsoft Technology Licensing, Llc | Resource affinity in a dynamic resource pool |
US20150270930A1 (en) * | 2014-03-18 | 2015-09-24 | Qualcomm Incorporated | Transport accelerator implementing selective utilization of redundant encoded content data functionality |
US9350484B2 (en) * | 2014-03-18 | 2016-05-24 | Qualcomm Incorporated | Transport accelerator implementing selective utilization of redundant encoded content data functionality |
US10855797B2 (en) | 2014-06-03 | 2020-12-01 | Viasat, Inc. | Server-machine-driven hint generation for improved web page loading using client-machine-driven feedback |
US11310333B2 (en) | 2014-06-03 | 2022-04-19 | Viasat, Inc. | Server-machine-driven hint generation for improved web page loading using client-machine-driven feedback |
US11838851B1 (en) | 2014-07-15 | 2023-12-05 | F5, Inc. | Methods for managing L7 traffic classification and devices thereof |
US10182013B1 (en) | 2014-12-01 | 2019-01-15 | F5 Networks, Inc. | Methods for managing progressive image delivery and devices thereof |
US11895138B1 (en) | 2015-02-02 | 2024-02-06 | F5, Inc. | Methods for improving web scanner accuracy and devices thereof |
US10834065B1 (en) | 2015-03-31 | 2020-11-10 | F5 Networks, Inc. | Methods for SSL protected NTLM re-authentication and devices thereof |
US11350254B1 (en) | 2015-05-05 | 2022-05-31 | F5, Inc. | Methods for enforcing compliance policies and devices thereof |
US10505818B1 (en) | 2015-05-05 | 2019-12-10 | F5 Networks. Inc. | Methods for analyzing and load balancing based on server health and devices thereof |
US11200292B2 (en) | 2015-10-20 | 2021-12-14 | Viasat, Inc. | Hint model updating using automated browsing clusters |
US11757946B1 (en) | 2015-12-22 | 2023-09-12 | F5, Inc. | Methods for analyzing network traffic and enforcing network policies and devices thereof |
US10404698B1 (en) | 2016-01-15 | 2019-09-03 | F5 Networks, Inc. | Methods for adaptive organization of web application access points in webtops and devices thereof |
US10797888B1 (en) | 2016-01-20 | 2020-10-06 | F5 Networks, Inc. | Methods for secured SCEP enrollment for client devices and devices thereof |
US11178150B1 (en) | 2016-01-20 | 2021-11-16 | F5 Networks, Inc. | Methods for enforcing access control list based on managed application and devices thereof |
US10749702B2 (en) * | 2016-06-09 | 2020-08-18 | Telefonaktiebolaget Lm Ericsson (Publ) | Multicast service translation in internet protocol television systems |
US10412198B1 (en) | 2016-10-27 | 2019-09-10 | F5 Networks, Inc. | Methods for improved transmission control protocol (TCP) performance visibility and devices thereof |
US11063758B1 (en) | 2016-11-01 | 2021-07-13 | F5 Networks, Inc. | Methods for facilitating cipher selection and devices thereof |
US10505792B1 (en) | 2016-11-02 | 2019-12-10 | F5 Networks, Inc. | Methods for facilitating network traffic analytics and devices thereof |
US10812266B1 (en) | 2017-03-17 | 2020-10-20 | F5 Networks, Inc. | Methods for managing security tokens based on security violations and devices thereof |
US11343237B1 (en) | 2017-05-12 | 2022-05-24 | F5, Inc. | Methods for managing a federated identity environment using security and access control data and devices thereof |
US11122042B1 (en) | 2017-05-12 | 2021-09-14 | F5 Networks, Inc. | Methods for dynamically managing user access control and devices thereof |
US20190012053A1 (en) * | 2017-07-07 | 2019-01-10 | Open Text Sa Ulc | Systems and methods for content sharing through external systems |
US11829583B2 (en) * | 2017-07-07 | 2023-11-28 | Open Text Sa Ulc | Systems and methods for content sharing through external systems |
US11635879B2 (en) | 2017-07-07 | 2023-04-25 | Open Text Corporation | Systems and methods for content sharing through external systems |
US11223689B1 (en) | 2018-01-05 | 2022-01-11 | F5 Networks, Inc. | Methods for multipath transmission control protocol (MPTCP) based session migration and devices thereof |
CN108388813A (en) * | 2018-02-28 | 2018-08-10 | 中国平安财产保险股份有限公司 | Electronic endorsement method, user equipment, storage medium and device |
US12003422B1 (en) | 2018-09-28 | 2024-06-04 | F5, Inc. | Methods for switching network packets based on packet data and devices |
Also Published As
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US20100179984A1 (en) | Return-link optimization for file-sharing traffic | |
US20140040353A1 (en) | Return-link optimization for file-sharing traffic | |
US11777654B2 (en) | Transport protocol for anticipatory content | |
US11575738B2 (en) | Opportunistic content delivery using delta coding |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
AS | Assignment |
Owner name: VIASAT, INC., CALIFORNIA Free format text: ASSIGNMENT OF ASSIGNORS INTEREST;ASSIGNOR:SEBASTIAN, WILLIAM B.;REEL/FRAME:023762/0222 Effective date: 20100107 |
|
AS | Assignment |
Owner name: UNION BANK, N.A., CALIFORNIA Free format text: SECURITY AGREEMENT;ASSIGNOR:VIASAT, INC.;REEL/FRAME:028184/0152 Effective date: 20120509 |
|
STCB | Information on status: application discontinuation |
Free format text: ABANDONED -- FAILURE TO RESPOND TO AN OFFICE ACTION |