US20100179984A1 - Return-link optimization for file-sharing traffic - Google Patents

Return-link optimization for file-sharing traffic Download PDF

Info

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
Application number
US12/651,928
Inventor
William B. Sebastian
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Viasat Inc
Original Assignee
Viasat Inc
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Viasat Inc filed Critical Viasat Inc
Priority to US12/651,928 priority Critical patent/US20100179984A1/en
Assigned to VIASAT, INC. reassignment VIASAT, INC. ASSIGNMENT OF ASSIGNORS INTEREST (SEE DOCUMENT FOR DETAILS). Assignors: SEBASTIAN, WILLIAM B.
Publication of US20100179984A1 publication Critical patent/US20100179984A1/en
Assigned to UNION BANK, N.A. reassignment UNION BANK, N.A. SECURITY AGREEMENT Assignors: VIASAT, INC.
Priority to US14/046,781 priority patent/US20140040353A1/en
Abandoned legal-status Critical Current

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L65/00Network arrangements, protocols or services for supporting real-time applications in data packet communication
    • H04L65/60Network streaming of media packets
    • H04L65/61Network streaming of media packets for supporting one-way streaming services, e.g. Internet radio
    • H04L65/611Network streaming of media packets for supporting one-way streaming services, e.g. Internet radio for multicast or broadcast
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04BTRANSMISSION
    • H04B7/00Radio transmission systems, i.e. using radiation field
    • H04B7/14Relay systems
    • H04B7/15Active relay systems
    • H04B7/185Space-based or airborne stations; Stations for satellite systems
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L12/00Data switching networks
    • H04L12/02Details
    • H04L12/16Arrangements for providing special services to substations
    • H04L12/18Arrangements for providing special services to substations for broadcast or conference, e.g. multicast
    • H04L12/1859Arrangements for providing special services to substations for broadcast or conference, e.g. multicast adapted to provide push services, e.g. data channels
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L12/00Data switching networks
    • H04L12/02Details
    • H04L12/16Arrangements for providing special services to substations
    • H04L12/18Arrangements for providing special services to substations for broadcast or conference, e.g. multicast
    • H04L12/1863Arrangements for providing special services to substations for broadcast or conference, e.g. multicast comprising mechanisms for improved reliability, e.g. status reports
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L12/00Data switching networks
    • H04L12/02Details
    • H04L12/16Arrangements for providing special services to substations
    • H04L12/18Arrangements for providing special services to substations for broadcast or conference, e.g. multicast
    • H04L12/1881Arrangements for providing special services to substations for broadcast or conference, e.g. multicast with schedule organisation, e.g. priority, sequence management
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L12/00Data switching networks
    • H04L12/02Details
    • H04L12/16Arrangements for providing special services to substations
    • H04L12/18Arrangements for providing special services to substations for broadcast or conference, e.g. multicast
    • H04L12/1886Arrangements 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
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L45/00Routing or path finding of packets in data switching networks
    • H04L45/74Address processing for routing
    • H04L45/745Address table lookup; Address filtering
    • H04L45/7453Address table lookup; Address filtering using hashing
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L47/00Traffic control in data switching networks
    • H04L47/70Admission control; Resource allocation
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L65/00Network arrangements, protocols or services for supporting real-time applications in data packet communication
    • H04L65/60Network streaming of media packets
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/10Protocols in which an application is distributed across nodes in the network
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L69/00Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
    • H04L69/04Protocols for data compression, e.g. ROHC
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L69/00Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
    • H04L69/22Parsing 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.

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

    CROSS-REFERENCES
  • 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.
  • BACKGROUND
  • 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.
  • SUMMARY
  • 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.
  • BRIEF DESCRIPTION OF THE DRAWINGS
  • 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.
  • DETAILED DESCRIPTION
  • 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 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 (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 the optimizer 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 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. For example, in the communications system 100, 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.
  • Other embodiments of optimizers have substantially limited storage. For example, in the communications system 100, 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. For example, as described more fully below, 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.
  • 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 the communications system 100 downloads content from the receiver side 130 of the communications system 100. In one embodiment, 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.
  • If the user at the sender side 110 later uploads the content to the receiver side 130, 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).
  • It will be appreciated that the limited storage capacity at the sender optimizer 120 may be considered differently in different embodiments. In one embodiment, the sender optimizer 120 is implemented within a network device (e.g., a user modem) having minimal storage capacity. In another embodiment, 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. For example, 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). 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 the sender side 110 of the communications system 100. For example, there may be a user machine 114 at one or both sides 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. 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 the sender optimizer 120 may typically have little or no access to the machine storage 118. In some embodiments, the sender 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 the sender 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 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.
  • While the communications system 100 of FIG. 1 is illustrated generically as a sender side 110 and receiver 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. 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. 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 the server optimizer 230 implement functionality of the sender optimizer 120 and the receiver optimizer 140 of FIG. 1, respectively. For example, 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. 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, 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. The network 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, the content servers 250 are in direct communication with the server optimizer 230 (e.g., not through the network 240). For example, the server 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 with content servers 250 over the network 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 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. For example, the client optimizer 220 is in communication with the server optimizer 230 over a client-server communication link 225, and 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.
  • For example, when the user system 210 downloads content from the content server 250, 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. In some embodiments, additional data (e.g., fingerprints) are generated to facilitate efficient searches for the digests in the server dictionary model 224. For example, 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.
  • In the event that the content is later uploaded to the communications system 200 a, 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.
  • 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 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.
  • As described above with reference to FIG. 2A, a first user system 210 a may desire to upload content after a previous download of the content from the server system 320. Using the client optimizer 220, the server optimizer 230, the server dictionary 234, and the server 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 the first user system 210 a and the server 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 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.
  • 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 a second client optimizer 220 n that is in communication with the server optimizer 230 and maintains its own server dictionary model 224 n. In other embodiments, however, 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. For example, 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, 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 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. In certain embodiments, the base station 315 has functionality that is the same or different from a gateway 317. For example, as illustrated, 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. For example, 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. Embodiments of the server system 320 are in communication with one or more content servers 250 via one or more networks 240.
  • As traffic traverses the satellite communications system 300 in multiple directions, 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.
  • 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 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.
  • 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 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. 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, the satellite 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 the server optimizer 230.
  • As discussed above, 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. In 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. In some 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. As shown, 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. For example, 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. In some embodiments, the server system 320 is in communication with the content servers 250 via one or more 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 a redirector 408. 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. In one embodiment, 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.
  • 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.). 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. While embodiments of the user system 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 (e.g., download request from the web browser 406) may be intercepted by the redirector 408. It is worth noting that embodiments of the redirector 408 are 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. It is worth noting that 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.). However, 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.
  • In some embodiments, 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. For example, 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.
  • In some embodiments, 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. 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, 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”). In one embodiment, 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.
  • In one embodiment, 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. For example, the content processor 442 may communicate with a content server 250 over a network 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 the server dictionary 234. As discussed above, embodiments of the server 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 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. In some embodiments, when response data is received, 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.
  • In some embodiments, 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. After the response data is received at the client optimizer 220 by its transport manager 428 a, 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. 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 the content processor 442 in the server optimizer 230. As such, it may be assumed by embodiments of the client optimizer 220 that 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. It is worth noting that, in some embodiments, synchronization techniques are used to ensure that the server dictionary model 224 remains an accurate model of the server dictionary 234. For example, 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.
  • 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 the server dictionary model 224, as described more fully below. Once the server dictionary model 224 is updated, the response 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 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.
  • 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 the server dictionary model 224. As noted above, when matches are found, embodiments of 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.
  • 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 the server 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:
  • ( i = 0 N - 1 f ( x , i ) ) mod M .
  • 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 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.
  • Notably, as the optimization occurs on the return link from the client optimizer 220 to the server optimizer 230, the optimization may be unaffected by destinations for the upload content beyond the server system 320. For example, 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. As discussed above, the optimization may be unaffected by a presence or absence of a client 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, 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). Upon receipt at the server optimizer 230, 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. For example, 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). However, in other embodiments, 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. As in the client optimizer 220 of FIG. 4, 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. However, 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.
  • When the user downloads content from the server system 320, 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. 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 the response 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, the mode selector 520 may be set such that the client 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 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.
  • If the file sharing detector 510 determines that there is no file sharing content, the mode selector 520 may be set such that the client 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 the client 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 the client 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 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. In some embodiments, 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.
  • 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 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.
  • 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 the server 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 an illustrative method 600 for performing return-link optimization, according to various embodiments. Particularly, 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.). In some embodiments, the method 600 is performed by one or more components of a client optimizer 220, as described above with reference to FIGS. 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 a timeline 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 the method 600. Further, it will be appreciated that 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. At a second time 610 b, (e.g., after some delay due to latency of a satellite communication link, etc.), the server side 604 receives and processes the request at block 624. At block 628, the server side 604 transmits the requested content to the requesting client side 602 in response to the request. In some embodiments, 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.
  • At a third time 610 c, the client side 602 receives the content at block 632. In some embodiments, 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. For example, 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.
  • Sometime later, at a fourth time 610 d, the client side 602 makes a request at block 644 that involves upload of the content received in block 632. For example, 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. In some embodiments, at a fifth time 610 e, 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).
  • If the upload request includes optimizable content, according to the determination of block 636 b, an identifier may be generated at block 648. For example, a weak identifier may be generated by applying a hashing function to the upload content data. At block 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 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.
  • At a sixth time 610 f, (e.g., again after some delay due to latency), the server side 604 may receive and process the uploaded content at block 660. At block 664, 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.
  • 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 at block 668. For example, the content may be pushed to a user at the same or another client 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 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. At a second time 710 b, 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.
  • 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. At a third time 710 c, the uploaded content is received and processed by the server side 704 at block 736. In some embodiments, at block 740, the server dictionary is updated to reflect the uploaded content.
  • Sometime later, at a fourth time 710 d, the client side 702 makes a request at block 744 that involves a second upload of the content previously uploaded in block 732. For example, 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. In some embodiments, at a fifth time 710 e, 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).
  • If the upload request includes optimizable content, according to the determination of block 724 b, an identifier may be generated at block 748. For example, a weak identifier may be generated by applying a hashing function to the upload content data. At block 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 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.
  • At a sixth time 710 f, the server side 704 may receive and processes the uploaded content at block 760. At block 764, 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. In some embodiments, the uploaded content may then be communicated to a destination node other than the server side 704 at block 768.
  • It is worth noting, that 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. For example, once content is uploaded once to the server (e.g., either after a download, as in FIG. 6, or not, as in FIG. 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.
US12/651,928 2009-01-13 2010-01-04 Return-link optimization for file-sharing traffic Abandoned US20100179984A1 (en)

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 (17)

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,726 Active 2033-04-24 US8775503B2 (en) 2009-01-13 2010-01-08 Deltacasting for overlapping requests
US12/684,648 Active 2032-07-25 US8639744B2 (en) 2009-01-13 2010-01-08 Deltacasting for live content
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,861 Active 2032-10-07 US9762635B2 (en) 2009-01-13 2013-06-17 Content set based pre-positioning
US13/919,888 Active 2032-08-05 US10187436B2 (en) 2009-01-13 2013-06-17 Content set based deltacasting
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

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 (15)

Application Number Title Priority Date Filing Date
US12/684,726 Active 2033-04-24 US8775503B2 (en) 2009-01-13 2010-01-08 Deltacasting for overlapping requests
US12/684,648 Active 2032-07-25 US8639744B2 (en) 2009-01-13 2010-01-08 Deltacasting for live content
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,861 Active 2032-10-07 US9762635B2 (en) 2009-01-13 2013-06-17 Content set based pre-positioning
US13/919,888 Active 2032-08-05 US10187436B2 (en) 2009-01-13 2013-06-17 Content set based deltacasting
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

Country Status (2)

Country Link
US (17) US9369516B2 (en)
WO (2) WO2010083214A2 (en)

Cited By (62)

* Cited by examiner, † Cited by third party
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
US10505792B1 (en) 2016-11-02 2019-12-10 F5 Networks, Inc. Methods for facilitating network traffic analytics 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
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

Families Citing this family (155)

* Cited by examiner, † Cited by third party
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
WO2010104927A2 (en) 2009-03-10 2010-09-16 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
CN102783167B (en) * 2010-03-05 2015-10-14 三星电子株式会社 Generate based on file format and reproduce the method and apparatus of self adaptation stream
US9374231B2 (en) * 2010-03-22 2016-06-21 Alcatel Lucent Controller providing gradual transition of multiple terminals from unicast transmission
US20110231482A1 (en) * 2010-03-22 2011-09-22 Strangeloop Networks Inc. Automated Optimization Based On Determination Of Website Usage Scenario
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
US9197688B2 (en) 2013-09-30 2015-11-24 Brightcove, Inc. Dynamic chunk manipulation for streaming mixed live and on-demand media: application programming interface
US9817637B2 (en) * 2010-07-01 2017-11-14 Salesforce.Com, Inc. Methods and systems for providing enhancements to a business networking feed
JPWO2012011467A1 (en) * 2010-07-20 2013-09-09 シャープ株式会社 Data distribution system, data distribution method, distribution side data relay device, and reception side data relay device
WO2013015835A1 (en) 2011-07-22 2013-01-31 Seven Networks, Inc. Mobile application traffic optimization
US20120023201A1 (en) * 2010-07-26 2012-01-26 Atlas Advisory Partners, Llc Unified Content Delivery Platform
CA2806549C (en) 2010-07-26 2014-10-28 Seven Networks, Inc. Context aware traffic management for resource conservation in a wireless network
CA2857458A1 (en) 2010-07-26 2012-02-09 Michael Luna 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
EP2688297A4 (en) 2011-03-16 2014-08-27 Korea Electronics Telecomm 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
US8934414B2 (en) * 2011-12-06 2015-01-13 Seven Networks, Inc. Cellular or WiFi mobile traffic optimization based on public or private network destination
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
US9654353B2 (en) * 2012-12-13 2017-05-16 Level 3 Communications, Llc Framework supporting content delivery with rendezvous services network
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
US9455777B1 (en) 2013-03-15 2016-09-27 Viasat, Inc. Satellite network service sharing
US9674252B2 (en) * 2013-07-17 2017-06-06 Imvision Software Technologies Ltd. System and method for efficient delivery of repetitive multimedia content
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
CN104301353B (en) * 2013-07-18 2019-10-08 腾讯科技(深圳)有限公司 A kind of methods, devices and systems for subscribing to long-tail category information
US9444856B2 (en) * 2013-09-25 2016-09-13 Ericsson Ab System and method for managing adjacent channels in an adaptive streaming environment
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
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
JP2017518660A (en) * 2014-03-31 2017-07-06 インテルサット コーポレーション Distribution method and distribution apparatus
US10698569B2 (en) 2014-04-03 2020-06-30 Centurylink Intellectual Property Llc System and method for implementing customer control point or customer portal
US10616377B2 (en) * 2014-04-03 2020-04-07 Centurylink Intellectual Property Llc System and method for implementing network enhanced gateway functionality
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
US10673978B2 (en) 2015-05-06 2020-06-02 Centurylink Intellectual Property Llc Method and system for implementing network experience shifting using shared objects
US10481938B2 (en) 2015-05-06 2019-11-19 Centurylink Intellectual Property Llc System and method for implementing network experience shifting
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
US10305952B2 (en) 2015-11-09 2019-05-28 T-Mobile Usa, Inc. Preference-aware content streaming
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
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
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
CN114465989A (en) * 2020-10-30 2022-05-10 京东方科技集团股份有限公司 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
WO2023069288A1 (en) * 2021-10-19 2023-04-27 Viasat, Inc. Reducing network bandwidth consumption using generically encoded media objects
WO2023069289A1 (en) * 2021-10-19 2023-04-27 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

Citations (28)

* Cited by examiner, † Cited by third party
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
US20100179987A1 (en) * 2009-01-13 2010-07-15 Viasat, Inc. Content set based pre-positioning
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 (122)

* Cited by examiner, † Cited by third party
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
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
WO2002041579A1 (en) 2000-11-09 2002-05-23 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
AU2003279970A1 (en) 2002-10-15 2004-05-04 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
WO2004044753A1 (en) * 2002-11-12 2004-05-27 Zetera Corporation Data storage devices having ip capable 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
CN1930885A (en) 2004-03-10 2007-03-14 皇家飞利浦电子股份有限公司 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
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
US7680040B2 (en) * 2005-10-28 2010-03-16 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
US20070288518A1 (en) 2006-05-03 2007-12-13 Jeff Crigler 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
JP2009542081A (en) * 2006-06-20 2009-11-26 コーニンクレッカ フィリップス エレクトロニクス エヌ ヴィ Generate fingerprint for video signal
US20080016201A1 (en) 2006-07-15 2008-01-17 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
WO2008074020A2 (en) 2006-12-13 2008-06-19 Viasat, Inc. Acm aware encoding systems and methods
US7961665B2 (en) 2006-12-13 2011-06-14 Viasat, Inc. Terminal aware multicasting
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
WO2010104927A2 (en) 2009-03-10 2010-09-16 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
US20120072933A1 (en) 2010-03-31 2012-03-22 Platform Design, Inc. System for Subscriber-Specific TV and Multimedia Content Distribution Over High Speed Broadcast Mediums
US8984048B1 (en) * 2010-04-18 2015-03-17 Viasat, Inc. Selective prefetch scanning
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
US8897302B2 (en) 2011-06-14 2014-11-25 Viasat, Inc. Transport protocol for anticipatory content
US9407355B1 (en) 2011-10-25 2016-08-02 Viasat Inc. Opportunistic content delivery using delta coding
US9112826B2 (en) 2011-12-23 2015-08-18 Akamai Technologies, Inc. Data differencing across peers in an overlay network
US8893167B2 (en) 2012-02-07 2014-11-18 Turner Broadcasting System, Inc. Method and system for automatic content recognition based on customized user preferences
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

Patent Citations (33)

* Cited by examiner, † Cited by third party
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
US20100177642A1 (en) * 2009-01-13 2010-07-15 Viasat, Inc. Correlative anticipatory deltacasting
US20100180046A1 (en) * 2009-01-13 2010-07-15 Viasat, Inc. Deltacasting
US20100179986A1 (en) * 2009-01-13 2010-07-15 Viasat, Inc. Content set based deltacasting
US20100179987A1 (en) * 2009-01-13 2010-07-15 Viasat, Inc. Content set based pre-positioning

Cited By (121)

* Cited by examiner, † Cited by third party
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
US11252210B2 (en) 2009-01-13 2022-02-15 Viasat, Inc. Content set based deltacasting
US20100281105A1 (en) * 2009-01-13 2010-11-04 Viasat, Inc. Deltacasting for live content
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
US10547655B2 (en) 2009-01-13 2020-01-28 Viasat, Inc. Deltacasting
US9369516B2 (en) 2009-01-13 2016-06-14 Viasat, Inc. Deltacasting
US11916990B2 (en) 2009-01-13 2024-02-27 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
US20100179986A1 (en) * 2009-01-13 2010-07-15 Viasat, Inc. Content set based deltacasting
US10536495B2 (en) 2009-01-13 2020-01-14 Viasat, Inc. Content set based deltacasting
US20100185730A1 (en) * 2009-01-13 2010-07-22 Viasat, Inc. Deltacasting for overlapping requests
US10187436B2 (en) 2009-01-13 2019-01-22 Viasat, Inc. Content set based deltacasting
US8639744B2 (en) 2009-01-13 2014-01-28 Viasat, Inc. Deltacasting for live content
US9762635B2 (en) 2009-01-13 2017-09-12 Viasat, Inc. Content set based pre-positioning
US20100180046A1 (en) * 2009-01-13 2010-07-15 Viasat, Inc. Deltacasting
US10951671B2 (en) 2009-01-13 2021-03-16 Viasat, Inc. Content set based deltacasting
US9172748B2 (en) 2009-01-13 2015-10-27 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
US9307003B1 (en) 2010-04-18 2016-04-05 Viasat, Inc. Web hierarchy modeling
US9043385B1 (en) 2010-04-18 2015-05-26 Viasat, Inc. Static tracker
US9497256B1 (en) 2010-04-18 2016-11-15 Viasat, Inc. Static tracker
US10645143B1 (en) 2010-04-18 2020-05-05 Viasat, Inc. Static tracker
US8984048B1 (en) 2010-04-18 2015-03-17 Viasat, Inc. Selective prefetch scanning
US9407717B1 (en) 2010-04-18 2016-08-02 Viasat, Inc. Selective prefetch scanning
US10171550B1 (en) 2010-04-18 2019-01-01 Viasat, Inc. Static tracker
US9503375B1 (en) 2010-06-30 2016-11-22 F5 Networks, Inc. Methods for managing traffic in a multi-service environment and devices thereof
US9420049B1 (en) 2010-06-30 2016-08-16 F5 Networks, Inc. Client side human user indicator
USRE47019E1 (en) 2010-07-14 2018-08-28 F5 Networks, Inc. Methods for DNSSEC proxying and deployment amelioration and systems thereof
WO2012030110A2 (en) * 2010-08-31 2012-03-08 레이져라이팅(주) Device for laser-processing light guide plate having laser beam cut-off means
WO2012030110A3 (en) * 2010-08-31 2012-06-07 레이져라이팅(주) 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
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
US11176219B1 (en) 2011-04-11 2021-11-16 Viasat, Inc. Browser based feedback for optimized web browsing
US10372780B1 (en) 2011-04-11 2019-08-06 Viasat, Inc. Browser based feedback for optimized web browsing
US10491703B1 (en) 2011-04-11 2019-11-26 Viasat, Inc. Assisted browsing using page load feedback information and hinting functionality
US10972573B1 (en) 2011-04-11 2021-04-06 Viasat, Inc. Browser optimization through user history analysis
US10789326B2 (en) 2011-04-11 2020-09-29 Viasat, Inc. Progressive prefetching
US9456050B1 (en) 2011-04-11 2016-09-27 Viasat, Inc. Browser optimization through user history analysis
US9037638B1 (en) 2011-04-11 2015-05-19 Viasat, Inc. Assisted browsing using hinting functionality
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
US9912718B1 (en) 2011-04-11 2018-03-06 Viasat, Inc. Progressive prefetching
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
US9935740B2 (en) 2011-06-14 2018-04-03 Viasat, Inc. Transport protocol for anticipatory content
US11139919B2 (en) 2011-06-14 2021-10-05 Viasat, Inc. Transport protocol for anticipatory content
US11777654B2 (en) 2011-06-14 2023-10-03 Viasat, Inc. Transport protocol for anticipatory content
US8897302B2 (en) 2011-06-14 2014-11-25 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
US10270842B2 (en) 2011-10-25 2019-04-23 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
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
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
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
US10230566B1 (en) 2012-02-17 2019-03-12 F5 Networks, Inc. Methods for dynamically constructing a service principal name 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
US9244843B1 (en) 2012-02-20 2016-01-26 F5 Networks, Inc. Methods for improving flow cache bandwidth utilization and devices thereof
US10097616B2 (en) 2012-04-27 2018-10-09 F5 Networks, Inc. Methods for optimizing service of content requests and devices thereof
US9065906B2 (en) 2012-06-15 2015-06-23 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
US11070490B2 (en) 2012-06-15 2021-07-20 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
US11743207B2 (en) 2012-06-15 2023-08-29 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
US9600387B2 (en) * 2013-03-30 2017-03-21 International Business Machines Corporation Providing efficient data replication for a transaction processing server
US20140297591A1 (en) * 2013-03-30 2014-10-02 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
US10097628B2 (en) * 2014-01-29 2018-10-09 Microsoft Technology Licensing, Llc Resource affinity in a dynamic resource pool
US20150215229A1 (en) * 2014-01-29 2015-07-30 Microsoft Corporation 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
US11635879B2 (en) 2017-07-07 2023-04-25 Open Text Corporation 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
US20190012053A1 (en) * 2017-07-07 2019-01-10 Open Text Sa Ulc 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

Also Published As

Publication number Publication date
US9369516B2 (en) 2016-06-14
WO2010083214A3 (en) 2010-10-07
US10547655B2 (en) 2020-01-28
US20150032848A1 (en) 2015-01-29
US9762635B2 (en) 2017-09-12
US20100180046A1 (en) 2010-07-15
US9363308B2 (en) 2016-06-07
US20100179986A1 (en) 2010-07-15
US20100179987A1 (en) 2010-07-15
US8775503B2 (en) 2014-07-08
US10536495B2 (en) 2020-01-14
US20220141275A1 (en) 2022-05-05
US9172748B2 (en) 2015-10-27
US20140029612A1 (en) 2014-01-30
US20150026241A1 (en) 2015-01-22
US11916990B2 (en) 2024-02-27
US10951671B2 (en) 2021-03-16
US20190306210A1 (en) 2019-10-03
US8639744B2 (en) 2014-01-28
US20100281105A1 (en) 2010-11-04
WO2010083248A3 (en) 2010-11-04
US20160330259A1 (en) 2016-11-10
US10187436B2 (en) 2019-01-22
US20100177642A1 (en) 2010-07-15
US11252210B2 (en) 2022-02-15
WO2010083248A2 (en) 2010-07-22
WO2010083214A2 (en) 2010-07-22
US8477635B2 (en) 2013-07-02
US20130282863A1 (en) 2013-10-24
US8489672B2 (en) 2013-07-16
US20200322402A1 (en) 2020-10-08
US8489673B2 (en) 2013-07-16
US20130282796A1 (en) 2013-10-24
US20210281619A1 (en) 2021-09-09
US20100185730A1 (en) 2010-07-22
US8842553B2 (en) 2014-09-23

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