WO2001058131A2 - Broadcast system - Google Patents
Broadcast system Download PDFInfo
- Publication number
- WO2001058131A2 WO2001058131A2 PCT/IL2001/000107 IL0100107W WO0158131A2 WO 2001058131 A2 WO2001058131 A2 WO 2001058131A2 IL 0100107 W IL0100107 W IL 0100107W WO 0158131 A2 WO0158131 A2 WO 0158131A2
- Authority
- WO
- WIPO (PCT)
- Prior art keywords
- data
- agent
- content
- file
- multicasting
- Prior art date
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/0703—Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation
- G06F11/0706—Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation the processing taking place on a specific hardware platform or in a specific software environment
- G06F11/0709—Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation the processing taking place on a specific hardware platform or in a specific software environment in a distributed system consisting of a plurality of standalone computer nodes, e.g. clusters, client-server systems
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L1/00—Arrangements for detecting or preventing errors in the information received
- H04L1/0001—Systems modifying transmission characteristics according to link quality, e.g. power backoff
- H04L1/0006—Systems modifying transmission characteristics according to link quality, e.g. power backoff by adapting the transmission format
- H04L1/0007—Systems modifying transmission characteristics according to link quality, e.g. power backoff by adapting the transmission format by modifying the frame length
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/0703—Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation
- G06F11/0766—Error or fault reporting or storing
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/08—Error detection or correction by redundancy in data representation, e.g. by using checking codes
- G06F11/10—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L1/00—Arrangements for detecting or preventing errors in the information received
- H04L1/12—Arrangements for detecting or preventing errors in the information received by using return channel
- H04L1/16—Arrangements for detecting or preventing errors in the information received by using return channel in which the return channel carries supervisory signals, e.g. repetition request signals
- H04L1/18—Automatic repetition systems, e.g. Van Duuren systems
- H04L1/1812—Hybrid protocols; Hybrid automatic repeat request [HARQ]
Definitions
- the present relates to content delivery of information, and in particular to broadcasting over computer networks, such as the Internet.
- Multi-casting Broadcasting of information over the Internet, from a single (or multiple) source to a plurality of target users has long been suggested in the art and is known as "multi-casting".
- multi-casting One problem with multi-casting is the lack of interactivity.
- Another problem is that many parts of the Internet do not support the available multi-casting standards.
- the Internet in general, suffers from a lack of bandwidth. It is known that many Internet users access the same data sources. Such knowledge, even though it has spawned a wealth of caching schemes, has not substantially solved the bandwidth problem and the Internet is commonly known as the "world wide wait".
- data e.g., a set of popular WWW pages
- An aspect of some embodiments of the invention relates to providing an interactive protocol, such as HTTP, using a one-way protocol, such as multicasting or unicasting.
- data for transmission is multicast at a plurality of addresses, and each client connects to those addresses that contain the data that client needs.
- an index of the channel contents is also multicast.
- a plurality of related files are combined into a single channel.
- multicasting is thus used for selective and/or active retrieving ("pull") of information by the clients. It should be noted, that in some embodiments of the invention, a non-interactive multicasting based data dissemination method is provided.
- a WWW server sends data via a multicasting server, where the data is encoded, to clients, where the data is decoded, to be received by users.
- personalized multicasting is provided, in which data from a multicast is personalized using other data, which may be unicast or multicast, possibly in multiple addresses (and/or different ports of a same address), thus providing a personalized information display for each client.
- a page background may be multi-cast, while a name of the user is unicast.
- the combining is performed by a data combination daemon residing at the user's computer.
- a combining daemon may be part of a browsing software or provided at other locations in the Internet.
- the system may use reliable UDP or even unreliable UDP (e.g., standard UDP).
- the local daemon or other server also serves to provide hints and/or reports, fcr example cookies and/or other user associated files to the remote server, so that a correct personalized service can be provided.
- the multicast data is continuously multicast.
- a data carousel is used.
- the data is encoded using an erasure code, and divided into a plurality of packets, such that the data can be reconstructed once a sufficient number of packets is received.
- the code is an infinite code, in that a very long substantially unrepeating stream can be generated from the data.
- any set of packets of sufficient number can be used to reconstruct the data.
- different receivers can receive at different data rates, since, by the slower computer receiving the same number of packets as a fast computer, only over a longer period of time.
- the data is encoded using a pyramidal encoding scheme, such that one set of packets (or multicast address) produces one quality, while receiving two sets of packets produces a second, higher quality.
- the code is set up such that the quality of reconstruction increases as a function of the number of packets received.
- a service level agreement (SLA or QoS) for the data provider, the user and/or the network is supported by the ability of the multicasting to provide graceful scalability and/or utilization of bandwidth.
- the graceful scalability is provided by the coding scheme.
- the graceful scalability is provided by data transmission, data reconstruction and/or interactivity control portions of the multicasting system.
- the encoding method and/or various parameters thereof are modified to match the instantaneous needs of the system, for example, different packet mixes being sent responsive to the percentage of lost packets.
- transmission rate and/or the channels to which a receiver is connected change.
- An aspect of some embodiments of the invention relates to continuously changing the content that is multicast, responsive to an estimation of what the most popular content will be.
- the estimation of popular content is determined responsive to gathered statistics, for example statistics gathered at the clients, at the WWW servers that provide the content and/or at various parts of the data transmission system.
- the popular content can be pre-fetched from the WWW servers and/or multicast prior to it actually being requested by the users.
- the workload estimation is forwarded to the WWW servers, to allow them to prepare for the increased workload.
- the multicast data can be pre-fetched to one or more clients.
- a content may be broadcast based on an expectation it will be found interesting, even if the data was not requested and/or responsive to a request by a commercial data provider.
- a plurality of related files are aggregated together into a single entity that is encoded as a single unit.
- the aggregation of files into content groups is based on a geographical distribution, for example, each geographical area having a different set of aggregated files.
- different transmission channels and/or content groups are created for different geographical locations.
- a content group may repeat between locations.
- each geographical location is served by a different server (which may include cached, encoded, files).
- a hierarchy is defined, in which an agent first attempts to download data from a local channel and if it fails, accesses a more remote channel.
- a feature of some embodiments of the invention is that the above cache-like behavior is initiated and/or managed by the data sender or an associated service provider (e.g., the multicasting system), rather than by the receiver.
- the caching is performed at general or dedicated cache devices along the transmission path.
- An aspect of some embodiments of the invention relates to content-free multicasting.
- an index of what could be multicast is broadcast, without any actual content of what the index refers to, except, possibly, a sample. If a small number of receivers express interest in the content, the content may be unicast. If a large number of receivers express interest, the content may be actively multicast.
- actively multicasting comprises modifying an already multicast stream to include data packets relating to the new content, together with an indication, for example in the index, of which multicast address includes the content of interest.
- An aspect of some embodiments of the invention relates to differential decoding of multicast data.
- a client can use side information, for example, previously received data, to decode only the information it is missing.
- the number of packets required to be received is small, for example on the order of the data to be differentially decoded, possibly with a small overhead.
- an index of which previously sent data can be considered side information is provided. It is noted that at least in some embodiments of the invention, the multicast server does not need to know what side information is in the possession of the client, in order for differential decoding to operate.
- differential decoding in accordance with some embodiments of the invention can utilize the partial overlap in time and partial overlap in content of Internet content pages and/or multicast information to allow faster retrieval of Internet content pages.
- a plurality of files are combined in a single content group and each receiver decodes only that part of the content group (e.g., those files) that it requires.
- An aspect of some embodiments of the invention relates to operation in imperfect computer networks. Many computer networks do not support a robust multicasting protocol. As noted herein, in some embodiments of the invention, there is great flexibility with regard to the actual packets received. Thus, lost packets and bandwidth fluctuations need to be overcome.
- parts of the communication network are bridged using a "multicasting modem" pair.
- a modem pair is a software and/or hardware construct that includes a first, transmitter, modem for receiving a broadcast in a multicast-enabled part of a network and unicasting the broadcast over a non-multicast enabled part of the network to a, second, receiver modem.
- the second modem is also located in a multicast part of the network, where the broadcast is again multi-cast.
- Judicious use of multicasting modem pairs can also be used for allowing HTTP protocols over hybrid networks.
- a satellite may be used as one of the multicasting modems, to bypass parts of a network where multicasting is not supported.
- a modem pair may be installed, for example, by a particular ISP, to allow more efficient transmission of data into and out of his local part of the network.
- a modem pair may be used to provide relatively reliable communication using UDP, since the coding and transmission method corrects for missing and out of order data packets.
- such a modeming method may also be used to translate between different transport protocols (e.g., TCP and X.25), different higher- layer transport protocols (e.g., RTP, HTTP and FTP) and/or content protocols (e.g., AVI and Quicktime).
- transport protocols e.g., TCP and X.25
- higher- layer transport protocols e.g., RTP, HTTP and FTP
- content protocols e.g., AVI and Quicktime
- the content is changed to match different standardized formats in different networks.
- the content is changed to match geographical conventions, for example date format.
- an information packet may also include routing programming instructions, so as to modify the transmission path of that packet on the Internet.
- a packet can include information requesting a particular router to use a particular path.
- the packet includes instructions for routers, in general, to use multicast enabled paths.
- such instructions can cause the formation of a multicasting modem pair.
- the network element affected by the instructions can be, for example, a router or a server.
- the packet includes a patch which may be used by a router to upgrade itself, to perform the requested function.
- a packet can include information not related to its priority, for example a flag that it contains data in a FEC format.
- An aspect of some embodiments of the invention relates to bootstrapping the transmission of information.
- the client which receives and decodes the multicast transmissions is written in a portable network language, such as Java.
- a downloaded page includes code to execute a proxy locally.
- the client is itself broadcast using some of the methods described herein.
- a WWW page which belongs to a participating server can include a short Java script for downloading and installing the Java client.
- the Java client is embedded in the page or the page includes a link to a location from which the client can be retrieved.
- An aspect of some embodiments of the invention relates to providing a content location tool.
- a UCL universal content locator
- each content page that is multicast is assigned a substantially unique identifier, for example a hash of the page content and the time and da f .e of creation, by the multicasting server.
- This identifier may be used, for example, when a c ient is instructed to use a particular previously transmitted content as side information for d fferential decoding.
- a single UCL is used for several WWW pages that are pro-fetched together.
- this UCL is used when a user wants to retrieve certain information.
- the multicasting system (or other Internet service) can maintain a copy of all multicast information and its associated identifier.
- any Internet server can export a list of the content identifiers on the server. An Internet user can thus easily retrieve any content whose ID is known.
- a scheme similar to that of the "Napster" system can be used to support easy retrieval of the content.
- a list of keywords or a short summary may also be associated with each unique ID.
- An aspect of some embodiments of the invention relates to the generation of fake hits to a source server of WWW information that is being served by an Internet accelerator in a manner that precludes at least some contact with the source server by clients requesting information.
- the hits are typically used to track the profile of users that access the site and/or for other uses.
- the accelerator keeps track of at least some statistics regarding the downloading of information related to the source server.
- the statistics may be tracked by the Internet accelerator and/or by agent-portions of the acceleration system that reside on user's computers.
- the hits are provided as a statistics file to the server, possibly in a format used by hits-analysis programs.
- the hits are provided by contacting the server. Such contacting may be provided at times when the server is experiencing less traffic and/or may not request a significant amount of information.
- the statistics gathered include dwell times in pages and/or preferred link following strategies.
- the actual identify of the users is hidden.
- a method of emulating an interactive connection comprising: generating a request for interactive data from an interactive server, at a client; intercepting said request by an agent; responsive to said request, retrieving at least some of said data from a continuous retransmission of said data, by said agent; and displaying said data including said retrieved data at said client.
- said agent emulates cookies for said client.
- said agent emulates an HTTP connection for said client.
- said agent is located at said client.
- said agent is located at a different site from said client.
- the method comprises continuously retransmitting files to create said stream.
- the method comprises grouping files into content groups for the purpose of adding or removing groups from said continuous retransmission.
- said retransmission comprises a multicast retransmission.
- said retransmission comprises a unicast retransmission.
- said data in said retransmission is encoded using a FEC (forward error correction) code.
- retrieving comprises retrieving from a plurality of retransmission sources in parallel.
- the method comprises retrieving some of said data from said interactive server, in response to said request.
- the method comprises updating a content of said retransmission in response to said request.
- a content of said retransmission is independent of said request, during said retrieving.
- said displaying comprises personalized information for a particular user.
- the method comprises: determining congestion by a network element along a path of said retransmission; and reducing said congestion by unilateral dropping of packets by said network element.
- said network element comprises a router.
- the method comprises determining by said agent a source for said data.
- said determining comprises checking against an index.
- said determining comprises analyzing said request.
- said determining comprises querying a file distribution server.
- said data is retrieved from a multi-layer stream.
- said agent selects which layers to be used for retrieval responsive to available bandwidth.
- said agent stores locally at least some data and wherein said agent downloads only enough data as needed for reconstructing said data in view of the locally stored data.
- a method of transmitting a plurality of files comprising: combining said files into a content group, at a content combiner; encoding said content group using a FEC (forward error correction code); and continuously retransmitting said encoded files.
- the method comprises stopping said retransmission if fewer than a certain number of receivers are listening to said transmission.
- the method comprises continuing to transmit at least some of said encoded files to said listening receivers, using a different transmission method than used for said continuously retransmitting.
- the method comprises: retrieving said encoded content group by an agent program; and converting said encoded content group into files, for use by a file oriented target program.
- said agent emulates an interactive connection for a user of said target program using said file.
- said combining comprises combining responsive to statistics gathered by said agent.
- the method comprises generating hit statistics for content sources based on said statistics.
- the method comprises transmitting said hit statistics to operators of said content sources.
- the method comprises transmitting at least a part of said agent as a part of a content group.
- a bootstrap part of said agent is transmitted in a preferential manner over other parts of said agent.
- the method comprises transmitting update information, for differential decoding relative to previously received content groups.
- the method comprises said update information comprises replacement files.
- said update information comprises software updates.
- the method comprises transmitting an index of content groups and locations where said content groups are available for retrieval.
- at least a part of said index is encoded in a preferential manner so that that part is preferentially received before other parts of said index.
- the method comprises generating a content locator for new data prior to the data being broadcast.
- searching comprises searching in an index that matches content locators and storage locations.
- a method of reliable UDP transmission of a data file comprising; encoding said data file using FEC (forward error correction) encoding into a plurality of packets; transmitting said packets using a UDP protocol.
- said encoding comprises continuously generating new packets for said stream, independent of a length of said data file.
- a method of emulating multicasting comprising: determining by a multicasting server a list of clients desiring a multicast transmission; generating a stream of packets for said transmission; duplicating said packet stream; and unicasting said packets to said clients.
- duplicating comprises duplicating using a zero socket duplication method.
- a method of file transmission comprising: collecting request statistics for at least two files; determining that requests for at least two files by a plurality of users are correlated part of the time but not all of the time; grouping said two files into a group; and continuously retransmitting said group by multicasting.
- said determining comprises determining according .o geographical origins of said requests.
- a method of reduced multicasting comprising: announcing the existence of multicasting location; listening for requests to connect to the multicasting location; and building a multicasting tree on a host of said multicasting location only in response to a request to connect.
- the method comprises stopping transmission of content on said tree when a count of requesters reaches zero.
- a method of multicasting a plurality of channels comprising: multicasting a plurality of channels, each channel having a respective content; and multicasting an index channel listing at least an identification of said channels and an indication of their respective content.
- said index includes an indication of a geographical region served by said channel.
- a method of multicasting over an Internet comprising: generating a multicast transmission at a first location; converting said multicasting transmission into a unicast transmission at a second location, for transmission to a third location over a part of said Internet that does not support multicasting; converting said unicast transmission into a multicast transmission at said third location.
- the method comprises transmitting said transmission using unicast transmission to a plurality of clients in said part of said Internet.
- a transmission from said first part to said second part is by a satellite.
- an interactive file transmission accelerator comprising: a file encoder that encoding a plurality of files using an FEC code, into encoded packets; a broadcast transmitter that transmits said packets in a non-personalized transmission; and an agent receiver associated with a user operative to emulate, to a user, an interactive connection to a file source of said files.
- said broadcast transmitter comprises a multicast transmitter.
- said broadcast transmitter comprises a multiple unicast transmitter that sends a same unicast transmission to a plurality of agent receivers.
- said file source is at a different site from said file encoder.
- said file source is connected to said file encoder by an Internet.
- the accelerator comprises a user computer, wherein said user computer is at a different site from said agent receiver.
- said agent is connected to said user computer via an Internet.
- the accelerator comprises at least one cache for packets on an Internet path interconnecting said transmitter and said agent.
- the accelerator comprises at least re- broadcasting station on an Internet path interconnecting said transmitter and said agent, for local broadcasting of said packets.
- the accelerator comprises a plurality of reception agents for different users, each of said reception agents having a different reception bandwidth for said transmission.
- a method of broadcasting non-computer media information comprising: encoding a media file into encoded data, using a FEC code; broadcasting said encoded data; receiving said encoded data by a plurality of receivers; and reconstructing said media at said plurality of receivers.
- each of said receivers has a different data reception rate.
- each of said receivers has a noise rate for said transmission.
- broadcasting comprises broadcasting by radio.
- broadcasting comprises broadcasting by cable TV.
- broadcasting comprises broadcasting by satellite.
- encoding comprises encoding into packets.
- FIG. 1 is a schematic block diagram of an interactive data transmission configuration, in accordance with an exemplary embodiment of the invention
- Fig. 2 is a schematic illustration showing various possible locations for a data transfer agent, in accordance with preferred embodiments of the invention
- FIG. 3 is a block diagram of an exemplary interactive data transmission configuration, in accordance with an exemplary embodiment of the invention.
- Fig. 4 is a flowchart of a typical WWW interaction by a user;
- Fig. 5 is a flowchart of an exemplary course of action by an agent, in response to the interaction of Fig. 4, in accordance with an exemplary embodiment of the invention
- Fig. 6 is a flowchart of an exemplary course of action by a multicasting server, in response to the interaction of Fig. 4, in accordance with an exemplary embodiment of the invention
- Fig. 7 is a flowchart of a channel life process, in accordance with an exemplary embodiment of the invention.
- Fig. 8 shows a method of multi-cast modeming, in which multi-cast-enabled domains of the Internet are connected using modem like servers, in accordance with an exemplary embodiment of the invention.
- Fig. 1 is a schematic block diagram of an interactive data transmission configuration 100, in accordance with an exemplary embodiment of the invention, in which a user 102 receives content from a data source 110.
- data source 110 is a WWW server sending WWW pages to user 102 using a HTTP protocol.
- other communication networks may be used, for example, cellular networks, dedicated computer networks, cable TV and/or satellite networks.
- other transmission protocols may be supported, for example RTP.
- server 108 comprises a multicast transmitter 114 which broadcast the content to a plurality of users, including user 102.
- server 108 is separate from data source 110.
- An agent 104 optionally associated with one or more users 102, receives the multicast broadcast and converts it to a format understandable by the receiving equipment used by user 102. Alternatively or additionally, agent 104 assists in emulating an interactive connection between user 102 and data source 110, over the multicast channel.
- the content is transmitted as packets, which may be encoded, for example as described below. Alternatively, the content is transmitted as a bit stream, with no discrete packets.
- server 108 comprises a feedback controller 112 that modifies the content of the multicast broadcast, responsive to the users' requests.
- request and/or other feedback may be provided, for example by agent 104 and/or determined by server 308 analyzing transmission statistics.
- Fig. 2 is a schematic illustration showing various possible locations for a data transfer agent, in accordance with preferred embodiments of the invention. Four different general schemes are shown in Fig. 2, and variations thereon are also possible. Multicasting is indicated by a dotted line, HTTP and other point-to-point connections, by a solid line.
- a web server installation comprises a plurality of server computer 210.
- a server 208 connected to servers 210, for example by a LAN, MAN (Local and Metropolitan Area Network) multicasts the data over an Internet 212 to an agent 204'", executing on a user terminal 202.
- LAN Local Area Network
- MAN Local and Metropolitan Area Network
- an agent 204 is located in Internet 212.
- Agent 204 receives a multicast broadcast of the data and unicasts the data, for example as HTTP to a user terminal 202'.
- a server 208' is also located in the Internet.
- a load balancing server 206 is provided between web servers 210 and multicasting server 208', for example to decide which server 208' to use, if any.
- An agent 204" is executing on or near a user terminal 202".
- both Internet multicasting server 208' and a user agent 204' are on an Internet, and agent 204' communicates with a user terminal 202'".
- the agent may be connected by LAN to the user terminal. Alternatively, it may execute on the same computer, as a separate program. Alternatively, it may execute as part of the browser, for example as a plug-in or as a Java applet.
- the multicast decoding agent is integrated with the browser, to allow the browser to perform various transmission-related activities, for example progressive display of images in standard formats, as multicasting data arrives. Another exemplary application is more efficient updating of changes in a display, when display updates arrive.
- an Intranet, Extranet or other type of data network may be provided instead of an
- Fig. 3 is a block diagram of an exemplary interactive data transmission configuration 300, in accordance with an exemplaiy embodiment of the invention.
- server 308 comprises a statistics server
- a requests server 318 handles requests from agent(s) 304 and/or server 310, for example, by sending content groups and/or emulating user 302 and/or server 310.
- the content groups are transmitted by multicasting, for example using a multicasting carrousel 320. Alternatively, they are transmitted by unicasting or by HTTP, for example in parts of the Internet where multicasting is not available.
- Fig. 3 Various communication options are illustrated in Fig. 3.
- Server 310 may send the content to server 308, for content builder 316 and/or to requests server 318, for dissemination. Alternatively or additionally, server 310 may send the content to agent 304, for passing on to user 302. Alternatively or additionally, server 310 may send the content to a HTTP client 338 on agent 304. As will be explained below, the different methods of providing content from server 310 to user 302 may assist in partial or complete bypassing of server 308.
- Server 308 can send content to agent 304 in many ways, for example as multicasting data to a multicast receiver 326 and/or as unicast or HTTP data to a unicast port 340.
- a logic element 324 of agent 304 may handle various commands and status reports vis-a-vis requests server 318.
- Agent 304 may also include a cache 330 (e.g., to decrease repeated downloading of same content) and a forward error correction mechanism 332 (described below). Typically, multiple agents 304 are provided, for different clients 302, as will be described below. A plurality of agents 304 may be connected to one or more servers 308, also described below. Different ones of the agents may have different capabilities. In an exemplary embodiment of the invention, agent 304 communicates with client 302 via an HTTP proxy 334, or is integrated therewith. Alternatively or additionally, agent 304 may load various user configuration setting and/or be programmed by user 302, via a configuration port 336. FLOWCHARTS OF EXEMPLARY TYPICAL INTERACTION
- Fig. 4 is a flowchart 400 of a typical WWW interaction by a user.
- Fig. 5 is a flowchart 500 of an exemplary course of action by an agent 304, in response to the interaction of Fig. 4, in accordance with an exemplary embodiment of the invention.
- Fig. 6 is a flowchart 600 of an exemplary course of action by a multicasting server 308, in response to the interaction of Fig. 4, in accordance with an exemplary embodiment of the invention.
- a user requests to view a page (402).
- this request is in HTTP form, however, other request types (e.g., for the data or for resources such as streaming video) may also be generally supported by the system.
- a page is typically composed of several URLs, each of which typically represents a file. The URLs are typically requested by user browser 302 in sequence.
- agent 304 determines the availability of the URL (502).
- Four basic types of availability are shown in Fig. 5: by-passing the system (506), reconstructing from previously acquired packets (508), downloading from a multicast stream (510) and requesting the URL from server 308 (512).
- the availability may be determined, for example using tables, rules and/or interaction with server 308 or original HTTP server 310, as described below. Various method of updating such tables and rules (504) are also described below.
- the HTTP request bypasses the system, for example, for a cgi/bin request, for non-HTTP resources, such as RTP or RTSP requests or other remote protocols, for example remote procedure call, or for pages which are indexed as not being supported.
- the request may be forwarded to the original HTTP server to which the request was directed and the reply may be handled by the system (514, below) or it may go directly to browser 302.
- a Java applet (or other network programmable module) that is executed on browser 302, may connect to its server using the bypass mechanism.
- an attempt to respond to the Java applet using one of the other information obtaining methods (508, 510 and/or 512) may be used.
- the indexes at 504 include an indication of an alternate, non-original address, for retrieving the resource, for example an alternate server (e.g., mirroring), a cache (such as Akamai) or a temporary location (e.g., an on-line computer as in Napster).
- an alternate server e.g., mirroring
- a cache such as Akamai
- a temporary location e.g., an on-line computer as in Napster.
- the indexes (and a behavior of agent 304 as a transparent proxy) are used to redirect any request to a server, as desired.
- this redirection is for load balancing.
- this reduction is for preferring commercial partners.
- data for the page is already available at agent 304, and is used to reconstruct the requested file.
- the data may, for example, have been previously received and unused, previously received and decoded and/or cached.
- the data is not available at agent 304, but it is available from a multi-cast (or unicast) stream.
- Agent 304 may be required to connect to the stream to download the data.
- the data for multicasting is forwarded to a UDP distributor (not shown), which is copied, for example, using a zero-copy socket method, and sent by UDP or other cheap, less reliable method, to all agents 302 that request the data.
- Various indexes may be provided (504), that include addresses for downloading the data using UDP.
- Other parts of system 300 may also perform zero-copying and then forwarding.
- the data is not locally available and is not earmarked for bypass.
- a request for the data is sent to server 308, as detailed in Fig. 6.
- the server refuses the request (e.g., if it is overloaded or if the request cannot be answered) and the request by-passes (506) the system.
- the page (or individual files) is generated and forwarded to the browser (516).
- a single retrieved file may be reconstructed from data available from several of the above methods, for example, two packets describing the file may be available locally (508), while two more may need to be downloaded (510).
- server 310 is a server for a news website.
- the main page at the web site is a compound page, comprising a main file that describes the page and a plurality of files that describe embedded objects, for example, images.
- server 308 connects to the news website and retrieves all the files in the main page (and also possibly in other pages).
- a user connects to the news website server, requesting to view the main page, the request is intercepted by agent 304 or forwarded to agent 304 by the CNN web site or an intermediate proxy.
- agent 304 As described above in Fig. 5, all available files are provided by agent 304 to user 302.
- the user requests another page, if those files are available they are provided to the user.
- the main file of the page is typically personalized, however, many or all of the constituent files are not, instead, the personalization is typically exhibited as a personal selecting between available files.
- the personalized page is not provided by server 308, but by the server.
- the individual image and/or other content files can be provided by server 308.
- the browser at user 302 decides which files to request, based on the description in the master file.
- the index and/or rules updated in 504 contain a pattern that matches the personalized pages, thus, agent 304 (and/or server 308) can determine if the page should be retrieved via the system or bypassed to the original server (310).
- the embedded files of a particular page may be provided in a single content group.
- server 308 and/or agent 304 may perform the logging-in to the personal page, instead of the user.
- server 308 determines ahead of time (or is provided with the information) which files are main files (which are more often provided by server 310) and which files are embedded (and are more often provided by server 308).
- server performs the determination by t acking which pages are marked by server 310 as being volatile.
- agent 304 can know ahead of time which files are main file and hich are embedded.
- the agent retains a logging of the file provider, for WWW sites frequented by user
- the identification of the page source may be used by the agent to determine where to requests a page from or it may be forwarded to server 308.
- Server 308 may aggregate this information from a plurality of agents, to build a database. Alternatively or additionally, this information may be provided periodically or on request to the agent.
- agent 304 will form at least a cursory connection with server 310, so that server 310 can retrieve cookies from the user's computer, for personalization of the page. Alternatively or additionally, agent 304 may retrieve the cookies and pass them to server 310, so server 310 can prepare the personalized main page.
- AVAILABILITY DETERMINATION Referring back to Fig. 5, at 502, the availability of a page is determined. At 504, a process of updating various tables or other data structures used to assist in the determination process, is optionally performed.
- the availability of a file can depend, for example, on one or more of: (a) file hit rate; (b) desired response time (typically paid for by page publisher)
- file staleness (e.g., text, image); (j) file size; and/or
- (k) file commonality (e.g., how personalized is it).
- the file availability can vary dynamically, for example, with files being moved from one availability channel to another as needs and/or resources change. In some files, however, the availability method is fixed, for example, in some embodiments login pages may always be provided using bypass methods.
- Availability determination may remote, for example, by agent 304 querying server 308 or an intermediate proxy server for the availability of a file.
- a hierarchy is defined, with agent 304 being sent up the hierarchy by the members of the hierarchy and/or by the content indexes indicating which member of the hierarchy to contact for certain files.
- agent 304 maintains local data structures, which can be used to determine availability. These data structures may use any of the above attributes and/or additional attributes, such as URL format and file name.
- the data structures may comprise one or more of:
- updating may take many forms, for example, the tables and/or other data structures may be continuously broadcast or unicast to agent 304. Alternatively or additionally, a periodic update is provided. Alternatively or additionally, agent 304 requests an update, for example when logging on and/or periodically. Different rules and/or records in the table may be updated at different rates. Alternatively or additionally, the rules may use various statistics, for example, page update statistics that are themselves updated. Alternatively or additionally, server 310 may send a message indicating the availability method. The update method and/or the availability options may also depend on cost considerations, for example, a payment scheme to which the user subscribes.
- the availability indication may act only as a recommendation, for example, if server 308 refuses to provide a response to a request, agent 304 may be forced to bypass, to prevent an undesirable degradation in service.
- a user can request and/or override the system settings.
- a user can request that a certain page always be acquired by bypass.
- a user can define his personal settings and/or rules.
- a user can accept system-suggested settings, even if they prevent the user from receiving a personalized version of a WWW page or other service.
- rules for fallback situations are defined in agent 304 and/or server 308, to deal with situations where server 308 does not answer and or where downloading from a content stream does not work.
- the fallback is to contact server 310.
- low rate, more dependable content streams may be provided.
- unicasting by a unicasting server may be provided.
- unencoded data packets may be available, for example from a backup stream or a backup server.
- the downloading of the index may take a non-trivial amount of time.
- agent 304 may be allowed to contact server 310 and/or 308 directly, without cost penalty, until the index is downloaded.
- the beginning of the index includes general ground rules for downloading, for example, lists of sites or domains that are not supported. Possibly, a later part of the directory includes revisions to these general rules, for example a supported part of a site that is generally unsupported.
- agent 304 contacts server 308 with a request
- the server responds with a part of the index that contains rules for the sites most likely to be later requested by agent 304, for example, based on a personalized Internet accessing profile or based on a general statistical aggregation profile.
- agent 304 may already be connected to the streams in which the data is available. In such a case, the agent will acquire packets until the data can be reconstructed from the acquired packets.
- agent 304 may be required to connect to a stream that is broadcasting the data.
- the identity of the stream may be provided by server 308, in response to a request by agent 304 (512).
- server 308 will create a new stream, in response to an identification of agent data needs.
- agent 304 may use a stream index (or search engine) to determine which stream includes the required information.
- a stream index or search engine
- a universal content locator code (described below) is used to identify the contents of each stream. This will be described in greater detail below.
- the index may be, for example, stored at agent 304, available form a proxy, be multicast and/or available from server 308, it may be updated, for example, as described above for availability indexes 504.
- the two indexes are a same index, including not only an availability type, but also an availability location.
- Configuration 300 can support one or both of pre-SSM multicasting and post-SSM multicasting.
- agent 304 provides the nearest router with a rendezvous point address, provided by an index or server 308.
- multicast carousel 320 (or a suitable proxy) can serve as the base of the multicasting tree. This represents a clear, single, sender, in compliance with the SSM protocol. So, a request to join a multicasting stream can also include the address of the multicasting server (or proxy) from which data is to be received by agent 304.
- multicasting channels are set up, but little or no actual content is transmitted therein, so that less real bandwidth is required.
- agent 304 connects to the channel
- server 308 is notified.
- This notification may be part of the multicasting protocol (not currently implemented) or it may be a separate notification, for example, by UDP or TCP/IP connection, and starts sending real content in the stream.
- the routers in the router hierarchy for the multicasting are notified of the possibility of data sending, so they store a state, even though there may be no actual data being transmitted.
- a published index includes mapping of content to channels, when an agent expresses interest in a channel (e.g., to server 308), the channel is created and/or transmission starts.
- multicasting carousel 320 transmits at least some channels by unicasting, rather than multicasting.
- Efficient unicasting can make use of a zero-copy socket (or its equivalent) available in many operating systems. This socket allows fast copying of data packets.
- carousel 320 is split into two parts, one part that prepares the information for broadcast, and another part that selectively transmits the information by unicasting (preferably using UDP) or multicasting.
- the type of actual transmission method used may depend, for example, on available bandwidth, available multicasting channels, desired service quality and/or on the type of multicasting service available at client 302.
- a plurality of acceleration servers are provided, for providing the unicast data to users. These servers may be distributed in the Internet and/or may be hierarchically organized.
- a single agent 304 may receive data from multiple senders, for example one or more unicast servers and/or one or more multicast servers. Multiple reception may be useful, for example, to overcome congestion in any one route.
- data is transmitted in packets generated using a seed-based randomization function
- different seeds are used for different servers, so that there is less likelihood of overlap between different received sets of packets.
- each such stream sends its seed, for example, periodically.
- a mapping of seeds to servers is multicast or available on request.
- server 308 receives a request for data (606), for example, if the availability method is "from server” or if no availability method is known.
- the request is supplied via multicasting, either by indicating an existing multicasting address, or by creating a new multicasting channel. Multicasting in this respect also includes unicasting broadcast emulation.
- the data is provided by unicast from server 308, or from a proxy thereof.
- the request for data is redirected to another server, for example to original WWW server 310.
- Any of these actions and/or the requests itself may be used to update various statistics stored at server 308 (614).
- One possible effect of these statistics is modifying the content and/or existence of multicasting channels and/or data requests and/or clients handled by server 308 (604).
- a server may be updated with the number, temporal distribution and/or geographical profile of users.
- server 308 periodically generates a set of hits for server 310, so that the server can be appraised of the "real" traffic through the site, using the sites existing profiling tools.
- these hits are generated at times when the server traffic is low.
- the hits are provided as a file to be assimilated by the server's profiling tools.
- usage and/or request statistics may be reported by a plurality of agents 304.
- the statistics may be reported to the agents, for example for use in pre-fetching (described below).
- the statistics are compared to those acquired by server 310 at different times or via users not connected to the system. Possibly, some requests are intentionally redirected to server 310, to test the responsiveness of server 310 and/or to generate independent statistics. Such testing may be performed, for example, by server 308, or by a third party.
- the contents of a multicast channel may be a single file.
- a channel contains a plurality of files.
- the files in a channel may be related, for example, belonging to a same page or site.
- the files combined in a single channel reflect files that are likely to be viewed by a group of users.
- the channel is designed for a particular group of users, for example, a geographically near group, or a group with a shared router.
- the "group" is generated ad hoc.
- the files are combined based on temporal coincidence in their expected viewing.
- the files are combined based on the files being related, for example, expiring at a same time, being embedded in a same web page, belonging to a same web site, being connected by a link and/or being audio and video or multiple audio tracks (e.g., different languages) of a same media content.
- the combination is related to performance, for example, being based on file size, on update rate, and/or on required response time (from the server).
- the files combinations may be optimized, for example, for cost or for ease of billing.
- the multiple files in a single group are encoded as if they were a single file.
- such an encoding potentially allows any part of the group to be reconstructed if the rest of the group is known and a minimum number of packets is received. There is no need to wait until the end of a data carousel.
- grouping potentially reduces the overhead, for example, in terms of number of files to be tracked, in number of channels for an agent to subscribe to and/or in number of ongoing reconstruction at the agent.
- the multicast channels may be made non-overlapping, in some embodiments of the invention, there is overlap in channel content between different multicast channels.
- the overlap is caused by a desire to reduce the rate of channel switching.
- the packet transmission rate for a particular file may be different in different channels, for example there being a main channel for the file, and a secondary channel in which the file is an additional broadcast file.
- Such overlap may also allow some robustness in the system, as the failure of a single multicasting channel need not be catastrophic.
- the considerations for deciding what to group and/or what to combine in a single channel may also be applied towards deciding if a channel, group or file is to be unicast or multicast.
- a channel, group or file is to be unicast or multicast.
- agent 304 requests some files by unicast, while retrieving other files being received by multicast.
- some parts of a file are received by unicast and some by multicast, for example, if the multicasting is started after unicast transmission of the file started, or if the unicasting is used to finish up the reception of a file by an agent, after multicasting of the file is stopped.
- unicasting may be used for personalized embedded files, for example for personalized advertisements in a generally multicast WWW page.
- unicasting is used in a data carousel, if the expected delay to wait for a packet is too long.
- unicasting may be used if the setup time is considerably shorted than for multicasting and/or if the bandwidth of the unicast channel is considerably greater.
- the following decision formula is used to decide if to send a file by multicasting or by unicasting.
- use is made of the non-symmetric distribution (typically Poisson) of requests for files: if ⁇ S>W then multicast, where ⁇ is the request rate for the file (e.g. requests per second), S is the file size (e.g., bytes) and W is the bandwidth allocated for multicasting the file (e.g., bytes/sec).
- the bandwidth allocated for multicasting a file is determined based on the allowed delay in receiving the file and/or the file size.
- the following formula inter-relates the minimal delay, L, possible in the system, the file size, S, and the allocated bandwidth, W: L S/W.
- agent 304 fetches and records extra packets from the multicast channels, in anticipation of user request.
- the suggestion of files for which to record packets may be provided, for example by server 308. Alternatively or additionally, it may be determined from a profile of user 302, for example at agent 304.
- Pre-fetching may be at the level of data.
- an agent 304 may pre-fetch (and store) cross-buckets. Pre-fetching may be used instead of or in addition to file aggregation.
- groups may be aggregated to form macro-groups, for example such a macro- group being defined based on personal WWW browsing statistics.
- server 308 may arrange the data in a manner that agents 304 are likely to find required data on a same stream or multicasting channel as already being received and/or in previously received packets. This data arrangement can be driven, for example, by statistics 614, or by statistics provided by server 310.
- server 308 updates the usage statistics and/or profiles of particular users or groups of users. Possibly, users are grouped automatically based on their profiles.
- agents 304 send statistics and/or other anonymous aggregations of information, to allow the discovery and/or support of communities, for example by providing raw data from which community profiles may be constructed.
- Such statistics may be used, for example, for one or more of, geographical distribution of channels, groups and files, data aggregation (e.g., for groups, channels, meta- groups and/or pre-fetching), transmission duration and/or transmission times (e.g., channel programming and/or transmission windows in general.
- agents 304 can provide various types of feedback to server 308, resulting, f or example, in modifying and/or optimizing its behavior.
- Exemplary feedback includes one or more of: (a) page hit rate;
- noise level and packet losses for example for changing the ratio of cross-bucket packets to regular packets (described below);
- the feedback may be provided as records of individual cases and/or aggregated as statistics, for example, average, variance and distribution function.
- feedback may be provided from server 308 to agent 304, for example, the number of times the answer to a request was already found in a broadcasting channel. This can drive agent 304 to update its local indexes.
- feedback may be provided between agents 304, for example, server 308 updating one agent with "discoveries" regarding suitable pre-fetching behavior.
- server 308 processes data from many agents before reporting the results to the agents.
- configuration 300 is designed to serve multiple clients 302.
- configuration 300 includes a plurality of agents 304, all connected to a same server 308.
- configuration 300 may include a plurality of servers 308.
- some of servers 308 are associated with particular servers
- some servers are geographically placed, to server a client base and/or a server base. Alternatively or additionally, some servers are general.
- server 308 is split into parts, each one of which may be multiply instantiated.
- a particular computing center may include parts for more than one server. Some parts may be shared between servers.
- multiple instantiations of multicast carousel 320 and requests server 318 are provided, to help deal with the traffic passing through them.
- multiple instantiations of content builder 318 are provided, for example to provide better communications with server 310.
- Statistics center 314, for example, may be singly and centrally instantiated, however, it may also be multiply instantiated, either at the same center or at different centers.
- the servers may be independent of each other.
- a central master server (not shown) may transfer information and/or load balance between the servers.
- the data for a page is continuously multicast, so each user can connect at a time convenient for him and download only those files that he needs.
- server 308 tracks the number and/or frequency of request for a certain page and/or other resource. As the frequency goes up, the server is more likely to start providing the page, create a multicast channel with the page in it and/or provide the page at a greater bandwidth.
- a configuration 300 can include multiple servers, for example servers associated with particular WWW servers 310 or geographically distributed servers.
- a single agent 304 may thus connect to more than one server 308, for retrieving a single file or for retrieving different files.
- agent 304 keeps track of the servers, for example associating with each server different indexes and/or other acceleration parameters, for example average response time.
- Fig. 7 is a flowchart of a channel life process 800, in accordance with an exemplary embodiment of the invention.
- requests for content are tracked. If a sufficient number of requests are found, a channel, answering these requests may be created.
- the channel is assigned an address. Possibly, there are a limited number of available multicasting channels, requiring that multicasting channels that are not needed, be reused for other content. Once the address is assigned, the channel is officially open and multicasting. Agents 304 that already downloaded part of the file using other means, such as unicasting or bypassing server 308, may download the balance of the file using the multicast transmission.
- the original requesters, agents 304 and/or other interested parties are notified about the new channel.
- a service is provided in which a user can request updates when a new channel with particular content is available.
- files may be added to the channel. This is one type of channel content modification (810).
- channel content modification 810).
- When adding a file to the channel if the file is part of an already multicast page or site, there may be no need to notify the requesters. Alternatively, various requesters may be notified, for example, those that recently requested a related file.
- the channel encoding may be changed.
- the channel bandwidth may be increased, for example by requesting greater bandwidth from the routers in the multicasting path and/or by changing the channel address to an address that has a greater bandwidth assigned to it.
- the number of subscribers to the channel may be tracked
- the channel may be closed, its bandwidth reduced and/or be assigned a new, slower, address.
- subscribers to the channel Prior to physically closing the channel, subscribers to the channel are notified (814). In some cases, the notification is explicit, for example by the server sending a closing message to the requesters. In other cases, the closure is implicit, for example, by sending a general update including the channels that are about to be opened, those about to be closed and/or those about to be modified.
- the channel is closed and the address returned to an address pool. However, some agents may have not yet completed the download of data from the channel.
- a replacement channel is provided, for retrieving additional packets of data.
- a single "closure" channel is shared between several channels, albeit at a slower bandwidth for each channel.
- the address of this channel may be provided along with the closure notice.
- the agent contacts server 308 for the missing packets and receives them by unicast (818).
- a channel address pool is used for providing addresses for new multicast channels.
- tracking the subscription to a channel may be non-trivial. For example, if agents can subscribe to a multi-casting channel without notifying server 308, for example, based on a published index, server 308 may not be aware that the channel was in use at all. Alternatively or additionally, if agents are not required to notify server 308 when use of a channel by an agent is completed, server 308 may be unaware that the channel fell out of use. In an exemplary embodiment of the invention, agents 304 do notify server 304 of their use and disuse. Possibly, only a sampling of the agents report, so that server 308 has a statistical picture and not complete knowledge of connection to its channel.
- server 308 may be notified by the router and/or may be able to ask the router to report use of its multicasting channels.
- agents 304 may be required to periodically send a message to server 308, that they are still using a channel. Otherwise, they are assumed to have left the channel. In file type channels, it may be assumed that the file was received after the agent had sufficient time (plus an additional overhead time) to retrieve the file. Alternatively, a file or a packet may have a staleness attribute attached thereto.
- an agent may request server 308 to continue transmission, at least at the lowest layer of bandwidth.
- server 308 may announce until when the transmission of a file or content group will continue and/or the size of the file.
- this information may be associated with the index updated in 504.
- modification 810 are removing and replacing files in the stream.
- the event may be treated similar to closing of the channel, except that the address is not returned to a channel address pool. Additionally, even in some embodiments where agent 304 notifies server 308 that he is connecting to a channel, the agent may not notify the server that the agent is viewing a particular file.
- a set of files may be managed as a single unit, for example, a file may be removed when files that are aggregated together with it in a single content group, are deemed to be suitable for removal.
- the effect may be the same as removing one file and adding another.
- a file is replaced with a newer version, and some support may be required for a previous version.
- the newer file is provided in a new content group and/or a new channel, so that it can be easily differentiated by agent 304.
- the file is identified by its UCL (described below) which will be different for the different versions.
- an artificial time stamp is attached to the file names, to artificially provide different versions of a same file with different (but optionally related) names.
- the rate of transmission of packets from the older file is reduced. Possibly, the rate of reduction is timed to match various expected rates of download, so that the download rate will be constant.
- a file in a content group is replaced and the rest of the content group is unchanged.
- a new content group is created.
- the old file is removed from the content group, and the new file added.
- channels can be combined together.
- channels may be split into separate channels, for example, if requests for a particular part of the channel start growing.
- multiple channels and/or content groups may be provided in a single multicasting address, for example, by differently marking packets belonging to the different channels, so that the recipient can ignore those unnecessary packets or by using different ports.
- the files may be multicast in various manners.
- the files may be divided into packets and sent one file after another. However, if part of a file is missed, the receiver may be required to wait until the transmission repeats itself. In addition, if several files are transmitted in sequence, the receiver must wait until a file he is interested in is being transmitted.
- the packets from different files are interspersed, so that at least part of the file can be received.
- a FEC (forward error correction) encoding is used.
- a desirable property of this type of encoding is that once a sufficient number of packets is received, the file can be reconstructed, substantially independently of the exact packets received.
- a packet is generated by XORing together a plurality of blocks from the file. Possibly, the probability of a block to be included in a packet is 50%. Alternatively, the probability is higher or lower, for example, 5%, 10%, 20%, 33% or 70%.
- the code used is a random code, in which packets are formed by randomly selecting blocks to participate in the packet.
- a deterministic method may be used.
- the random code is generated using a seed and a known pseudo-random number generation function.
- each packet includes an indication of the seed and/or the iteration value of the function, so that the source file parts for the packet can be reconstructed.
- a set of equations describing the relationship between the packets and the data is constructed. This set is solved, for example, by matrix inversion.
- the file is divided into buckets, so that some buckets can be solved (e.g., inverted) even before the entire file is received.
- cross-bucket packets are defined, which cross-packets define an equation between several buckets.
- the solution of several a buckets can be used to solve such a cross-packet.
- the solution of the cross-packet can be used to complete a partially-filled bucket, thus allowing an avalanche effect in solving buckets.
- a bucket may be partially solved before it is filled with packets.
- the data is compressed, typically prior to encoding, using methods known in the art, alternatively or additionally to being encoded.
- the code used allows a data file to be reconstructed if a sufficient number of any packets are received.
- this property is used to allow differential decoding, in which an agent 304 that is missing X bytes of data of a file of size Y is only required to decode about X bytes.
- previously received packets and/or previously decoded data are used to set up the equations. Thus, only a small number of packets are needed to complete a set of equations, which can be solved to yield the complete data file of size Y.
- differential decoding is only applied to whole packets and not to parts of packets.
- differential decoding is used for sending file updates, for example, by indicating only those packets that are affected by the file update and which should be replaced when resolving the equations.
- a packet includes an indication if it may be used with an earlier version packet of the file, to achieve an update.
- an update transmission includes a list of which files are being updated and/or which packets need to be replaced. Possibly, the files are broken down into parts, before being sent, in a manner that will facilitate updating, for example, a fixed part of the file is encoded in one set of packets and a varying art by another set of packets.
- the packet transmission may include an indication of which packets and/or data is being replaced by the new packets.
- UCL UNIVERSAL CONTENT LOCATORS
- the Internet as used today, defines a URL as a universal resource locator, an address for locating a resource.
- a similar scheme is used for content, e.g., UCLs.
- the actual content provided by the resource may change in time. Conversely, in a UCL, even if the location changes, the actual content is always the same.
- a UCL is used for guaranteeing delivery of content to an agent 304, when the source sender changes.
- a UCL is used to allow an agent to know if packets from different sources can be combined (yes if they are for a same UCL).
- a UCL comprises an ID that generally uniquely identifies the content.
- the UCL is a hash code, for example a 64 bit hash of the file contents. This hash is not expected to repeat itself very often.
- a UCL includes a description of the file, for example, a source, publication date, author and/or version.
- a UCL is attached to every packet.
- a user is sent an identification of the UCL of the file before he receives the file, so the user can determine if to ignore a packet.
- a blank UCL is sent instead, indicating the ambiguity.
- the UCL is used in the index tables (504, above), to identify a source and/or other properties of a file or content group, for example, creation date and aggregation date.
- a separate table is provided for such information, for example for being downloaded after the index is downloaded.
- resource groups can have UCLs.
- a hierarchy of UCLs is defined. This hierarchy may also be used for determining suitability of differential decoding, for example of a single file in a content group. It should be noted that the distribution of files between content groups do not need to match the division used by client 302, for example, if agent 304 re-divides and/or combines the files.
- associative caching is based on the UCLs. Possibly, packets are cached (in various places in the Internet) based on them having the same UCL (or content group UCL). Optionally, once a sufficient number of packets is cached for a UCL, no more caching of packets for that UCL are required, even if more are received. Optionally, a packet includes an indication of how many packets are required to reconstruct the file and/or an update, form those packets.
- the UCLs are set by the sender, e.g., multicasting carousel 320.
- UCLs may be generated and/or applied by routers and/or other intra-traffic devices.
- a router can generate a UCL for a file that passes through the router. This UCL can be transmitted to the target of the file and to a cache service. Alternatively or additionally, the UCL can be matched to a data request that caused the file to be sent. PREFERENTIAL ENCODING
- server 310 informs server 308 which parts of the content should be decodable earlier.
- preferential reception is provided by transmitted, packets correspondi lg to those parts of a file or content group that should be received first, at a higher relative rate.
- a particular application where preferential reception may be desirable is in the transmission of stream- viewed files.
- One example of such a file is a movie file, whose viewing lasts 1 hour. Simply multicasting such a file will require an average delay of 1 hour before it can be viewed. If the file is divided up into N parts, each of which is multicast, the average delay will be 1/N hours.
- the file is unevenly divided up into N parts, such that the playback time of a part is substantially equally to the expected reception time, decoding time and playback time.
- the parts are related by a factor, for example, each part being twice the size of the previous part.
- the parts are transmitted using preferential encoding of the different parts, with the first part being most preferentially encoded, the second part less so and so on.
- the parts are transmitted by dividing the file into parts and packets from each part being transmitted at a different rate.
- the different parts are transmitted on different multi-casting addresses, rather than on a same address.
- receiver driven congestion control is used, in which the receiver responds to reduce the congestion.
- centrally driven or router driven congestion control is used.
- a simple form of congestion control is applied, in that a router that notes congestion can freely drop any packet.
- congestion is detected by agent 304 and/or by server 308, for example, by agent 304 periodically reporting to server 308 an actual rate of packet reception and/or a packet delay time.
- Server 308 can compare such values for multiple agents 304, thereby generating a map of congestion locations.
- same content groups are transmitted at multiple data rates on different channels.
- Server 308 can inform agent 304, which of the different channels is the fastest that the agent can safely receive, so that the agent does not request channels that cause congestion.
- congestion is solved, at least temporarily, by unicasting packets causing congestion to agents.
- server 308 can stop channels that cause congestion, if the agents do not stop using the high rate channels.
- the different rate channels are layered.
- all the channels include the same content, albeit at different rates.
- different channels contain different packets of the same content, so the channels can be combined.
- some channels include files not found in other channels.
- the content is distributed between the channels thus that packets from all channels are required for reconstructing the data. This method may be useful in multi- resolution streams, in which a highest resolution requires all the channels to be attended to.
- transmission is initiated at one layer and after several packets are transmitted, a signal trigger bit in the packets in updated to indicate that a layer can be advanced to a higher rate layer.
- the bit is not set for a significant period of time, the layer is reduced.
- the slowest channel of a content group is used for sending completion blocks for old files in the content group (818 of Fig. 7).
- a GRA (generic router assistance) type congestion solving method is used.
- a multi-layer multi-rate congestion control method in which each layer is transmitted at a different rate, is used.
- the rate of channels automatically goes down with time and an agent must actively connect to a faster channel.
- congestion control is achieved by dynamically varying the sub-division of a file into blocks - more blocks if no congestion, fewer if there is congestion.
- FEC code a FEC code
- layering and packet dropping do not necessarily add significant overhead or bandwidth requirements to the transmission system.
- Fig. 8 shows a method 900 of multi-cast modeming, in which multi-cast-enabled domains of the Internet are connected using modem like servers, in accordance with an exemplary embodiment of the invention.
- Content from WWW server 310 is disseminated by server 308, using a multicasting protocol, to a plurality of agents 304, in a first part 902 of an Internet.
- agents 304 in a second part 904 of the Internet cannot connect by multicasting to server 308, for example, if there is no multicasting supporting path between the two parts.
- a multicasting server 906 that receives a unicast transmission from server 308 and broadcasts it using multicasting to agents 304 of Internet part 904.
- multicasting server 906 also serves as a cache.
- the link connecting server 308 and multicasting server 906 is a satellite link.
- such a modeming of multicast transmission over unicast lines is used to bypass routers that do not support multicasting and/or ISPs that charge high fees for multicasting.
- multicasting channels are set up per Internet part and/or domain.
- an agent in part 902 receives a content A, it uses a different channel from an agent in part 904.
- the actual spread of a multicasting channel may be kept small, for example to within a domain administered by a single ISP.
- Some routers might not object to multicasting if they are not required to perform any real action on the multicast data, as only a single thread passes through the router.
- the division of channels between Internet parts is achieved by indexes set up by server 308 and/or server 906.
- server 308 responds differently to requests for files from different Internet parts, e.g., unicasting or multicasting with various channels.
- agent 304 determines which channel it should best subscribe to.
- AGGREGATION POINTS In an exemplary embodiment of the invention, caching is provided at point in the
- the local caches are used to drive local broadcasting servers. Data at the caches may be received by unicast or multicast from a main server (e.g. server 308).
- a hierarchy of caches and/or local servers is defined.
- an agent can bypass a local server/cache, for example, to connect directly to a higher level in the hierarchy. Such a bypass may be temporary or may be permanent, for example if the user is originally from a different geographical location.
- a packet for example a unicast or a multicast packet, can affect its route and/or processing applied to it on the Internet.
- server 906 is actually a router. When the router receives a suitably marked UDP packet, the router sends the same packet to multiple IP addresses.
- the packet includes instructions to divert the packet to sub- domains of the Internet that include multicasting. SECURITY
- server 308 provides some measure of security for data that it transmits.
- One potential security problem is a malicious person inserting incorrect packets into a stream.
- this problem is solved by acquiring more packets than needed for decoding and solving the over-constrained set of equations, if the solution is not unique, this is an indication of tampering, which can be communicated to server 308. If the degree of tampering is low, the over constraining may suffice to overcome it.
- the files are digitally signed, so that after being decoded, they must match the checksum.
- the UCL may serve as such a checksum. Possibly, the UCL is also expected to match an entry in the index.
- the files are sent in parallel in several streams, so if one is comprised, the agent can connect to a different stream, albeit, a slower or faster stream.
- Some domains may use a firewall.
- agent 304 uses an HTTP-like protocol to connect to server 308, thus bypassing many firewall protection setups.
- PRIVACY AND BILLING In many cases, it is desirable to maintain privacy of the transmitted matter. Such privacy may be maintained, to some extent by using unicasting. However, a special type of privacy is the ability to charge for viewing the private data.
- billing and accounting for charges is handled by agent 304 and then transmitted to server 308 for bill generation and the like.
- server 308 takes into account the difficulty and/or the cost of maintaining certain channels that were used by an agent 304.
- the data is encrypted, for example, using a private or public key.
- data can be transmitted in a manner that defies decoding or make decoding difficult.
- one or more crucial packets may be sent by unicasting.
- cross-bucket packets may be sent by unicasting to subscribers.
- a decryption key may be sent by unicast.
- the packets that are selected for transmission are not random. Instead, certain packets, selected for example based on their constituent file parts, are not sent by multicast. Alternatively or additionally, garbage packets, that can only be distinguished using a subscriber's code, are transmitted.
- most of the bandwidth of a channel uses encrypted blocks, and some uses unencrypted blocks, thus allowing a free (or slow) sample to be provide in a same channel as used for paying customers.
- higher-paying customers can decode more of the blocks, for example using server-provided codes.
- the information for billing is extracted from reports that agent 304 sends to server 308.
- the billing information is converted into (or originally sent) a form recognized by standard Internet file and/or bandwidth billing systems. EXEMPLARY PACKET FORMATS
- the packets sent by server 308 include one or more of the following packet types.
- Log report packets which supply information from agents 304 to server 308, containing information regarding, for example, one or more of: (a) Usage of multicast content groups (e.g., Hits).
- the header can include, for example, an indication of the type of transport (e.g., multicast, reliable UDP or Broadband content on demand).
- the header comprises (besides the indication):
- Increase signal trigger (e.g., can a layer be advanced) 1 bit Time slot index
- Agent 304 retrieves encoded data and, after decoding sends the data to user 302. This is an integral view, in that the decoded data is transferred as a whole. Alternatively, a transactional view may be provided, in which agent 304 transfers data as it is decoded. This partial data may be used for progressive display of received images. Alternatively, the agent is integrated into the browser, so the data can be used as it is decoded.
- the system is transparent to the user, excepting possibly, for example, the user's agreement to use the system.
- a user may deliberately sign-up to download data from an encoded multicast stream.
- Another variation relates to time stamping.
- packets are time stamped.
- the time stamp is relative, rather than absolute, for example, to assist in reconstructing the seed values.
- the time stamp is used to determine when the packet is stale.
- the agent can send a request to the server to continue sending the packets, at least to him, so the agent can reconstruct a complete file.
- Another variation relates to the size of the packets.
- a continuous bit stream may be used to transmit the information.
- the effective block size is one bit.
- the value of the seed may be linked, for example, to a time clock, so that the data bits that take part in each bit of transmission can be reconstructed.
- An additional variation is using multiple servers, for example, to allow an agent to connect to multiple servers at the same time. The use of FEC encoding can reduce the danger of redundant data being retrieved. NET ACCELERATION FOR UNICASTING
- the above system may be used for network (e.g., Internet) acceleration of unicast data.
- the acceleration is achieved by multicasting the data, thus reducing the load at server 308 and/or at some parts of the Internet.
- the overhead associated with TCP/IP is overcome using methods described above for unicasting and/or multicasting.
- some types of feedback mechanisms in TCP/IP can be avoided by the use of FEC codes as described above.
- the "slow-start" problem is solved by the availability of multiple multicasting channels available.
- agent 304 is integrated into the browser of client 302.
- the integration allows partially reconstructed data to be displayed by the browser.
- the above system may alternatively or additionally be used to enhance "standard" multicasting of data. Following is a list of potential problems with multicasting and manners in which they may be overcome, using methods as described above.
- Many ISPs object to multicasting on the grounds that it might cause congestion, as multicasting is not a "nice" protocol like TCP/IP.
- various congestion detection and solving methods for example, as described above, are used.
- the congestion may be limited to the ISP's domain, in a manner which allows the ISP better control over the source of the congestion, for example, by arranging the multicasting channels by ISPs and/or by the ISP communicating with server 906.
- Switching multicasting is slower than switching unicasting, so fewer multicasting streams can be supported by a router.
- server
- D. Modeming can also overcome inter-domain connectivity requirements of pre-SSM multicasting protocols.
- E. Billing for multicasting is complex. In an exemplary embodiment of the invention, by organizing the multicasting channels, cross-ISP multicasting connections are reduced or eliminated, allowing each ISP to charge for multicasting in a desired, expense-covering manner.
- F. Reliability of multicasting is enhanced by using forward cooecting codes, multiple channels and/or UCLs, reducing or eliminating the need for large scale feedback.
- the code and/or layering protocols also allow various tradeoffs between quality of service, rate control and delay control
- UDP STREAMING By combining the UDP protocol with FEC coding, as described above, a substantially reliable UDP transmission rnethi >d can be achieved. This method can be used, for example, for streams and other resources.
- UPDATE APPLICATION The above system can be used for updating software and/or continuously publishing versions and fixes. It should be noted that a client can download substantially any packet at any time and accumulate these packets until a complete version can be reconstructed. Thus, downloading is simpler and less sensitive to interruption.
- REPORTING APPLICATION Pretty reliable UDP may also be used for various reporting applications, for example, for reporting information such as lists of used e-money tokens and/or for internal system uses, such as publishing indexes (see 504).
- configuration 300 is used for transmitting broadband content on demand.
- broadband content can include one or more of: jukeboxes, video (and other media) rentals and purchase, cable programs, books and/or documents.
- configuration 300 can also utilize slow lines and noisy lines.
- the content can be displayed as it is being provided.
- An exemplary such application is transmission of movies on demand in cable networks.
- Configuration 300 can also be implemented for non-Internet networks, for example, land telephony, cellular telephony, wireless communicators and satellite communications.
- Exemplary uses include, modem communications, media streaming, cell broadcasting, and various voice and data information services.
- the applications make use of the ability to browse through a tree of information, without being required to actually send feedback to the information source.
- the multicasting may reach the individual device (e.g. telephone).
- the agent may reside at the base station or at a cellular center.
- configuration 300 is used in a data network, for example, a LAN, such as a star network or a linear network.
- a data network for example, a LAN, such as a star network or a linear network.
- FEC code allows clashes between transmitters to be ignored, inasmuch that the loss of a small number of packets can be ignored and does not add overhead. This also allows the transmission of large files over a LAN without fear of blocking the LAN and without special scheduling algorithms. Relatively small packets may be desirable.
- Exemplary networks include Ethernet and BlueTooth.
- an agent is provided at a gateway to a network segment, for translating encoded information received outside, into the network protocol.
- the gateway is two way, also translating activity inside the network into encoded packets, for example, using two such agents to interconnect two interconnected LANs.
- the above transmission method is used for transmitting voice and/or data over broadcast radio networks, for example allowing a program to be received at multiple starting points and/or over the entire day.
Abstract
Description
Claims
Priority Applications (4)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US10/182,753 US20050259682A1 (en) | 2000-02-03 | 2001-02-02 | Broadcast system |
AU2001230480A AU2001230480A1 (en) | 2000-02-03 | 2001-02-02 | Broadcast system |
AU2001280046A AU2001280046A1 (en) | 2000-08-01 | 2001-08-01 | Data streaming |
PCT/IL2001/000716 WO2002011364A2 (en) | 2000-08-01 | 2001-08-01 | Data streaming |
Applications Claiming Priority (14)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US17992600P | 2000-02-03 | 2000-02-03 | |
US60/179,926 | 2000-02-03 | ||
US21713900P | 2000-07-10 | 2000-07-10 | |
US60/217,139 | 2000-07-10 | ||
IL137624 | 2000-08-01 | ||
IL13762400A IL137624A0 (en) | 2000-08-01 | 2000-08-01 | Media streaming |
IL138114 | 2000-08-27 | ||
IL13811400A IL138114A0 (en) | 2000-02-03 | 2000-08-27 | Coding method |
US24500000P | 2000-11-01 | 2000-11-01 | |
US60/245,000 | 2000-11-01 | ||
US24509800P | 2000-11-02 | 2000-11-02 | |
US60/245,098 | 2000-11-02 | ||
IL140504 | 2000-12-24 | ||
IL14050400A IL140504A0 (en) | 2000-02-03 | 2000-12-24 | Broadcast system |
Publications (2)
Publication Number | Publication Date |
---|---|
WO2001058131A2 true WO2001058131A2 (en) | 2001-08-09 |
WO2001058131A3 WO2001058131A3 (en) | 2002-01-10 |
Family
ID=27563028
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
PCT/IL2001/000107 WO2001058131A2 (en) | 2000-02-03 | 2001-02-02 | Broadcast system |
Country Status (3)
Country | Link |
---|---|
AU (3) | AU2001230479A1 (en) |
IL (1) | IL140504A0 (en) |
WO (1) | WO2001058131A2 (en) |
Cited By (44)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6486803B1 (en) | 2000-09-22 | 2002-11-26 | Digital Fountain, Inc. | On demand encoding with a window |
EP1528832A1 (en) | 2003-11-03 | 2005-05-04 | Nortel Networks Limited | Method for distributing a set of data, radiocommunication network and wireless station for implementing the method |
WO2005107207A1 (en) * | 2004-04-29 | 2005-11-10 | British Telecommunications Public Limited Company | Event notification network |
EP1622294A2 (en) * | 2004-07-27 | 2006-02-01 | Microsoft Corporation | Differential update for data broadcasting |
US7072971B2 (en) | 2000-11-13 | 2006-07-04 | Digital Foundation, Inc. | Scheduling of multiple files for serving on a server |
EP1793642A2 (en) * | 2002-07-09 | 2007-06-06 | Qualcom Incorporated | Method and system for a multicast service initiation in a communication background |
US7240358B2 (en) | 2000-12-08 | 2007-07-03 | Digital Fountain, Inc. | Methods and apparatus for scheduling, serving, receiving media-on demand for clients, servers arranged according to constraints on resources |
US7412508B2 (en) | 2002-09-12 | 2008-08-12 | Admeta Ab | Device for indicating downloading of data items |
US8131867B1 (en) | 2000-06-01 | 2012-03-06 | Qualcomm Incorporated | Dynamic layer congestion control for multicast transport |
US8185809B2 (en) | 2001-03-09 | 2012-05-22 | Digital Fountain, Inc. | Multi-output packet server with independent streams |
USRE43741E1 (en) | 2002-10-05 | 2012-10-16 | Qualcomm Incorporated | Systematic encoding and decoding of chain reaction codes |
US8370939B2 (en) | 2010-07-23 | 2013-02-05 | Kaspersky Lab, Zao | Protection against malware on web resources |
EP2503772A4 (en) * | 2009-11-25 | 2013-08-21 | Zte Corp | Set top box version upgrade method and system |
US8527604B2 (en) | 2004-02-12 | 2013-09-03 | Unity Works Media | Managed rich media system and method |
US8806050B2 (en) | 2010-08-10 | 2014-08-12 | Qualcomm Incorporated | Manifest file updates for network streaming of coded multimedia data |
US8887020B2 (en) | 2003-10-06 | 2014-11-11 | Digital Fountain, Inc. | Error-correcting multi-stage code generator and decoder for communication systems having single transmitters or multiple transmitters |
US8893171B2 (en) | 2007-05-24 | 2014-11-18 | Unityworks! Llc | Method and apparatus for presenting and aggregating information related to the sale of multiple goods and services |
US8918533B2 (en) | 2010-07-13 | 2014-12-23 | Qualcomm Incorporated | Video switching for streaming video data |
US8958375B2 (en) | 2011-02-11 | 2015-02-17 | Qualcomm Incorporated | Framing for an improved radio link protocol including FEC |
US8966369B2 (en) | 2007-05-24 | 2015-02-24 | Unity Works! Llc | High quality semi-automatic production of customized rich media video clips |
US9136983B2 (en) | 2006-02-13 | 2015-09-15 | Digital Fountain, Inc. | Streaming and buffering using variable FEC overhead and protection periods |
US9136878B2 (en) | 2004-05-07 | 2015-09-15 | Digital Fountain, Inc. | File download and streaming system |
US9178535B2 (en) | 2006-06-09 | 2015-11-03 | Digital Fountain, Inc. | Dynamic stream interleaving and sub-stream based delivery |
US9185439B2 (en) | 2010-07-15 | 2015-11-10 | Qualcomm Incorporated | Signaling data for multiplexing video components |
US9191151B2 (en) | 2006-06-09 | 2015-11-17 | Qualcomm Incorporated | Enhanced block-request streaming using cooperative parallel HTTP and forward error correction |
US9225961B2 (en) | 2010-05-13 | 2015-12-29 | Qualcomm Incorporated | Frame packing for asymmetric stereo video |
US9237101B2 (en) | 2007-09-12 | 2016-01-12 | Digital Fountain, Inc. | Generating and communicating source identification information to enable reliable communications |
US9236976B2 (en) | 2001-12-21 | 2016-01-12 | Digital Fountain, Inc. | Multi stage code generator and decoder for communication systems |
US9240810B2 (en) | 2002-06-11 | 2016-01-19 | Digital Fountain, Inc. | Systems and processes for decoding chain reaction codes through inactivation |
US9246633B2 (en) | 1998-09-23 | 2016-01-26 | Digital Fountain, Inc. | Information additive code generator and decoder for communication systems |
US9253233B2 (en) | 2011-08-31 | 2016-02-02 | Qualcomm Incorporated | Switch signaling methods providing improved switching between representations for adaptive HTTP streaming |
US9264069B2 (en) | 2006-05-10 | 2016-02-16 | Digital Fountain, Inc. | Code generator and decoder for communications systems operating using hybrid codes to allow for multiple efficient uses of the communications systems |
US9270299B2 (en) | 2011-02-11 | 2016-02-23 | Qualcomm Incorporated | Encoding and decoding using elastic codes with flexible source block mapping |
US9270414B2 (en) | 2006-02-21 | 2016-02-23 | Digital Fountain, Inc. | Multiple-field based code generator and decoder for communications systems |
US9281847B2 (en) | 2009-02-27 | 2016-03-08 | Qualcomm Incorporated | Mobile reception of digital video broadcasting—terrestrial services |
US9288010B2 (en) | 2009-08-19 | 2016-03-15 | Qualcomm Incorporated | Universal file delivery methods for providing unequal error protection and bundled file delivery services |
US9294226B2 (en) | 2012-03-26 | 2016-03-22 | Qualcomm Incorporated | Universal object delivery and template-based file delivery |
US9380096B2 (en) | 2006-06-09 | 2016-06-28 | Qualcomm Incorporated | Enhanced block-request streaming system for handling low-latency streaming |
US9386064B2 (en) | 2006-06-09 | 2016-07-05 | Qualcomm Incorporated | Enhanced block-request streaming using URL templates and construction rules |
US9419749B2 (en) | 2009-08-19 | 2016-08-16 | Qualcomm Incorporated | Methods and apparatus employing FEC codes with permanent inactivation of symbols for encoding and decoding processes |
US9432433B2 (en) | 2006-06-09 | 2016-08-30 | Qualcomm Incorporated | Enhanced block-request streaming system using signaling or block creation |
US9596447B2 (en) | 2010-07-21 | 2017-03-14 | Qualcomm Incorporated | Providing frame packing type information for video coding |
US9843844B2 (en) | 2011-10-05 | 2017-12-12 | Qualcomm Incorporated | Network streaming of media data |
US9917874B2 (en) | 2009-09-22 | 2018-03-13 | Qualcomm Incorporated | Enhanced block-request streaming using block partitioning or request controls for improved client-side handling |
Citations (26)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5361256A (en) * | 1992-11-27 | 1994-11-01 | International Business Machines Corporation | Inter-domain multicast routing |
US5561670A (en) * | 1994-05-13 | 1996-10-01 | Apple Computer, Inc. | Method and apparatus for operating a multicast system on an unreliable network |
US5835165A (en) * | 1995-06-07 | 1998-11-10 | Lsi Logic Corporation | Reduction of false locking code words in concatenated decoders |
US5852717A (en) * | 1996-11-20 | 1998-12-22 | Shiva Corporation | Performance optimizations for computer networks utilizing HTTP |
US5887252A (en) * | 1996-09-10 | 1999-03-23 | Nokia Mobile Phones Limited | Multicast transmission for DS-CDMA cellular telephones |
US5930248A (en) * | 1997-03-04 | 1999-07-27 | Telefonaktiebolaget Lm Ericsson | Radio communication system selectively using multicast with variable offset time |
US5936949A (en) * | 1996-09-05 | 1999-08-10 | Netro Corporation | Wireless ATM metropolitan area network |
US5956088A (en) * | 1995-11-21 | 1999-09-21 | Imedia Corporation | Method and apparatus for modifying encoded digital video for improved channel utilization |
US6014686A (en) * | 1996-06-21 | 2000-01-11 | Telcordia Technologies, Inc. | Apparatus and methods for highly available directory services in the distributed computing environment |
US6078954A (en) * | 1998-05-26 | 2000-06-20 | Williams Communications, Inc. | Server directed multicast communication method and system |
US6119163A (en) * | 1996-05-09 | 2000-09-12 | Netcast Communications Corporation | Multicasting method and apparatus |
US6141324A (en) * | 1998-09-01 | 2000-10-31 | Utah State University | System and method for low latency communication |
US6147773A (en) * | 1995-09-05 | 2000-11-14 | Hewlett-Packard Company | System and method for a communication system |
US6167441A (en) * | 1997-11-21 | 2000-12-26 | International Business Machines Corporation | Customization of web pages based on requester type |
US6173311B1 (en) * | 1997-02-13 | 2001-01-09 | Pointcast, Inc. | Apparatus, method and article of manufacture for servicing client requests on a network |
US6175869B1 (en) * | 1998-04-08 | 2001-01-16 | Lucent Technologies Inc. | Client-side techniques for web server allocation |
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 |
US6182125B1 (en) * | 1998-10-13 | 2001-01-30 | 3Com Corporation | Methods for determining sendable information content based on a determined network latency |
US6182085B1 (en) * | 1998-05-28 | 2001-01-30 | International Business Machines Corporation | Collaborative team crawling:Large scale information gathering over the internet |
US6185265B1 (en) * | 1998-04-07 | 2001-02-06 | Worldspace Management Corp. | System for time division multiplexing broadcast channels with R-1/2 or R-3/4 convolutional coding for satellite transmission via on-board baseband processing payload or transparent payload |
US6189039B1 (en) * | 1997-04-10 | 2001-02-13 | International Business Machines Corporation | Selective tunneling of streaming data |
US6208859B1 (en) * | 1997-02-26 | 2001-03-27 | Motient Services Inc. | Service preemption for mobile terminals in a mobile satellite communications system |
US6212525B1 (en) * | 1997-03-07 | 2001-04-03 | Apple Computer, Inc. | Hash-based system and method with primary and secondary hash functions for rapidly identifying the existence and location of an item in a file |
US6236999B1 (en) * | 1998-11-05 | 2001-05-22 | Bea Systems, Inc. | Duplicated naming service in a distributed processing system |
US6259701B1 (en) * | 1997-09-11 | 2001-07-10 | At&T Corp. | Method and system for a unicast endpoint client to access a multicast internet protocol (IP) session |
US6272537B1 (en) * | 1997-11-17 | 2001-08-07 | Fujitsu Limited | Method for building element manager for a computer network element using a visual element manager builder process |
-
2000
- 2000-12-24 IL IL14050400A patent/IL140504A0/en unknown
-
2001
- 2001-02-02 AU AU2001230479A patent/AU2001230479A1/en not_active Abandoned
- 2001-02-02 AU AU2001232194A patent/AU2001232194A1/en not_active Abandoned
- 2001-02-02 AU AU2001230480A patent/AU2001230480A1/en not_active Abandoned
- 2001-02-02 WO PCT/IL2001/000107 patent/WO2001058131A2/en active Application Filing
Patent Citations (26)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5361256A (en) * | 1992-11-27 | 1994-11-01 | International Business Machines Corporation | Inter-domain multicast routing |
US5561670A (en) * | 1994-05-13 | 1996-10-01 | Apple Computer, Inc. | Method and apparatus for operating a multicast system on an unreliable network |
US5835165A (en) * | 1995-06-07 | 1998-11-10 | Lsi Logic Corporation | Reduction of false locking code words in concatenated decoders |
US6147773A (en) * | 1995-09-05 | 2000-11-14 | Hewlett-Packard Company | System and method for a communication system |
US5956088A (en) * | 1995-11-21 | 1999-09-21 | Imedia Corporation | Method and apparatus for modifying encoded digital video for improved channel utilization |
US6119163A (en) * | 1996-05-09 | 2000-09-12 | Netcast Communications Corporation | Multicasting method and apparatus |
US6014686A (en) * | 1996-06-21 | 2000-01-11 | Telcordia Technologies, Inc. | Apparatus and methods for highly available directory services in the distributed computing environment |
US5936949A (en) * | 1996-09-05 | 1999-08-10 | Netro Corporation | Wireless ATM metropolitan area network |
US5887252A (en) * | 1996-09-10 | 1999-03-23 | Nokia Mobile Phones Limited | Multicast transmission for DS-CDMA cellular telephones |
US5852717A (en) * | 1996-11-20 | 1998-12-22 | Shiva Corporation | Performance optimizations for computer networks utilizing HTTP |
US6173311B1 (en) * | 1997-02-13 | 2001-01-09 | Pointcast, Inc. | Apparatus, method and article of manufacture for servicing client requests on a network |
US6208859B1 (en) * | 1997-02-26 | 2001-03-27 | Motient Services Inc. | Service preemption for mobile terminals in a mobile satellite communications system |
US5930248A (en) * | 1997-03-04 | 1999-07-27 | Telefonaktiebolaget Lm Ericsson | Radio communication system selectively using multicast with variable offset time |
US6212525B1 (en) * | 1997-03-07 | 2001-04-03 | Apple Computer, Inc. | Hash-based system and method with primary and secondary hash functions for rapidly identifying the existence and location of an item in a file |
US6189039B1 (en) * | 1997-04-10 | 2001-02-13 | International Business Machines Corporation | Selective tunneling of streaming data |
US6259701B1 (en) * | 1997-09-11 | 2001-07-10 | At&T Corp. | Method and system for a unicast endpoint client to access a multicast internet protocol (IP) session |
US6272537B1 (en) * | 1997-11-17 | 2001-08-07 | Fujitsu Limited | Method for building element manager for a computer network element using a visual element manager builder process |
US6167441A (en) * | 1997-11-21 | 2000-12-26 | International Business Machines Corporation | Customization of web pages based on requester type |
US6185265B1 (en) * | 1998-04-07 | 2001-02-06 | Worldspace Management Corp. | System for time division multiplexing broadcast channels with R-1/2 or R-3/4 convolutional coding for satellite transmission via on-board baseband processing payload or transparent payload |
US6175869B1 (en) * | 1998-04-08 | 2001-01-16 | Lucent Technologies Inc. | Client-side techniques for web server allocation |
US6078954A (en) * | 1998-05-26 | 2000-06-20 | Williams Communications, Inc. | Server directed multicast communication method and system |
US6182085B1 (en) * | 1998-05-28 | 2001-01-30 | International Business Machines Corporation | Collaborative team crawling:Large scale information gathering over the internet |
US6141324A (en) * | 1998-09-01 | 2000-10-31 | Utah State University | System and method for low latency communication |
US6182125B1 (en) * | 1998-10-13 | 2001-01-30 | 3Com Corporation | Methods for determining sendable information content based on a determined network latency |
US6236999B1 (en) * | 1998-11-05 | 2001-05-22 | Bea Systems, Inc. | Duplicated naming service in a distributed processing system |
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 |
Cited By (63)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9246633B2 (en) | 1998-09-23 | 2016-01-26 | Digital Fountain, Inc. | Information additive code generator and decoder for communication systems |
US8131867B1 (en) | 2000-06-01 | 2012-03-06 | Qualcomm Incorporated | Dynamic layer congestion control for multicast transport |
US6486803B1 (en) | 2000-09-22 | 2002-11-26 | Digital Fountain, Inc. | On demand encoding with a window |
US7072971B2 (en) | 2000-11-13 | 2006-07-04 | Digital Foundation, Inc. | Scheduling of multiple files for serving on a server |
US8495233B2 (en) | 2000-11-13 | 2013-07-23 | Digital Fountain, Inc. | Scheduling of multiple files for serving on a server |
US7512697B2 (en) | 2000-11-13 | 2009-03-31 | Digital Fountain, Inc. | Scheduling of multiple files for serving on a server |
US8122139B2 (en) | 2000-11-13 | 2012-02-21 | Qualcomm Incorporated | Scheduling of multiple files for serving on a server |
US7240358B2 (en) | 2000-12-08 | 2007-07-03 | Digital Fountain, Inc. | Methods and apparatus for scheduling, serving, receiving media-on demand for clients, servers arranged according to constraints on resources |
US8185809B2 (en) | 2001-03-09 | 2012-05-22 | Digital Fountain, Inc. | Multi-output packet server with independent streams |
US8671163B2 (en) | 2001-03-09 | 2014-03-11 | Digital Fountain, Inc. | Multi-output packet server with independent streams |
US9236976B2 (en) | 2001-12-21 | 2016-01-12 | Digital Fountain, Inc. | Multi stage code generator and decoder for communication systems |
US9240810B2 (en) | 2002-06-11 | 2016-01-19 | Digital Fountain, Inc. | Systems and processes for decoding chain reaction codes through inactivation |
EP1793642A2 (en) * | 2002-07-09 | 2007-06-06 | Qualcom Incorporated | Method and system for a multicast service initiation in a communication background |
EP1793642A3 (en) * | 2002-07-09 | 2007-08-15 | Qualcom Incorporated | Method and system for a multicast service initiation in a communication background |
US7796631B2 (en) | 2002-07-09 | 2010-09-14 | Qualcomm Incorporated | Method and system for a multicast service initiation in a communication system |
US7412508B2 (en) | 2002-09-12 | 2008-08-12 | Admeta Ab | Device for indicating downloading of data items |
USRE43741E1 (en) | 2002-10-05 | 2012-10-16 | Qualcomm Incorporated | Systematic encoding and decoding of chain reaction codes |
US9236885B2 (en) | 2002-10-05 | 2016-01-12 | Digital Fountain, Inc. | Systematic encoding and decoding of chain reaction codes |
US8887020B2 (en) | 2003-10-06 | 2014-11-11 | Digital Fountain, Inc. | Error-correcting multi-stage code generator and decoder for communication systems having single transmitters or multiple transmitters |
EP1528832A1 (en) | 2003-11-03 | 2005-05-04 | Nortel Networks Limited | Method for distributing a set of data, radiocommunication network and wireless station for implementing the method |
US8527604B2 (en) | 2004-02-12 | 2013-09-03 | Unity Works Media | Managed rich media system and method |
WO2005107207A1 (en) * | 2004-04-29 | 2005-11-10 | British Telecommunications Public Limited Company | Event notification network |
US9236887B2 (en) | 2004-05-07 | 2016-01-12 | Digital Fountain, Inc. | File download and streaming system |
US9136878B2 (en) | 2004-05-07 | 2015-09-15 | Digital Fountain, Inc. | File download and streaming system |
EP1622294A2 (en) * | 2004-07-27 | 2006-02-01 | Microsoft Corporation | Differential update for data broadcasting |
US9136983B2 (en) | 2006-02-13 | 2015-09-15 | Digital Fountain, Inc. | Streaming and buffering using variable FEC overhead and protection periods |
US9270414B2 (en) | 2006-02-21 | 2016-02-23 | Digital Fountain, Inc. | Multiple-field based code generator and decoder for communications systems |
US9264069B2 (en) | 2006-05-10 | 2016-02-16 | Digital Fountain, Inc. | Code generator and decoder for communications systems operating using hybrid codes to allow for multiple efficient uses of the communications systems |
US9209934B2 (en) | 2006-06-09 | 2015-12-08 | Qualcomm Incorporated | Enhanced block-request streaming using cooperative parallel HTTP and forward error correction |
US11477253B2 (en) | 2006-06-09 | 2022-10-18 | Qualcomm Incorporated | Enhanced block-request streaming system using signaling or block creation |
US9191151B2 (en) | 2006-06-09 | 2015-11-17 | Qualcomm Incorporated | Enhanced block-request streaming using cooperative parallel HTTP and forward error correction |
US9178535B2 (en) | 2006-06-09 | 2015-11-03 | Digital Fountain, Inc. | Dynamic stream interleaving and sub-stream based delivery |
US9628536B2 (en) | 2006-06-09 | 2017-04-18 | Qualcomm Incorporated | Enhanced block-request streaming using cooperative parallel HTTP and forward error correction |
US9432433B2 (en) | 2006-06-09 | 2016-08-30 | Qualcomm Incorporated | Enhanced block-request streaming system using signaling or block creation |
US9386064B2 (en) | 2006-06-09 | 2016-07-05 | Qualcomm Incorporated | Enhanced block-request streaming using URL templates and construction rules |
US9380096B2 (en) | 2006-06-09 | 2016-06-28 | Qualcomm Incorporated | Enhanced block-request streaming system for handling low-latency streaming |
US8966369B2 (en) | 2007-05-24 | 2015-02-24 | Unity Works! Llc | High quality semi-automatic production of customized rich media video clips |
US8893171B2 (en) | 2007-05-24 | 2014-11-18 | Unityworks! Llc | Method and apparatus for presenting and aggregating information related to the sale of multiple goods and services |
US9237101B2 (en) | 2007-09-12 | 2016-01-12 | Digital Fountain, Inc. | Generating and communicating source identification information to enable reliable communications |
US9281847B2 (en) | 2009-02-27 | 2016-03-08 | Qualcomm Incorporated | Mobile reception of digital video broadcasting—terrestrial services |
US9288010B2 (en) | 2009-08-19 | 2016-03-15 | Qualcomm Incorporated | Universal file delivery methods for providing unequal error protection and bundled file delivery services |
US9419749B2 (en) | 2009-08-19 | 2016-08-16 | Qualcomm Incorporated | Methods and apparatus employing FEC codes with permanent inactivation of symbols for encoding and decoding processes |
US9660763B2 (en) | 2009-08-19 | 2017-05-23 | Qualcomm Incorporated | Methods and apparatus employing FEC codes with permanent inactivation of symbols for encoding and decoding processes |
US9876607B2 (en) | 2009-08-19 | 2018-01-23 | Qualcomm Incorporated | Methods and apparatus employing FEC codes with permanent inactivation of symbols for encoding and decoding processes |
US9917874B2 (en) | 2009-09-22 | 2018-03-13 | Qualcomm Incorporated | Enhanced block-request streaming using block partitioning or request controls for improved client-side handling |
US11743317B2 (en) | 2009-09-22 | 2023-08-29 | Qualcomm Incorporated | Enhanced block-request streaming using block partitioning or request controls for improved client-side handling |
US10855736B2 (en) | 2009-09-22 | 2020-12-01 | Qualcomm Incorporated | Enhanced block-request streaming using block partitioning or request controls for improved client-side handling |
US11770432B2 (en) | 2009-09-22 | 2023-09-26 | Qualcomm Incorporated | Enhanced block-request streaming system for handling low-latency streaming |
EP2503772A4 (en) * | 2009-11-25 | 2013-08-21 | Zte Corp | Set top box version upgrade method and system |
US9225961B2 (en) | 2010-05-13 | 2015-12-29 | Qualcomm Incorporated | Frame packing for asymmetric stereo video |
US8918533B2 (en) | 2010-07-13 | 2014-12-23 | Qualcomm Incorporated | Video switching for streaming video data |
US9185439B2 (en) | 2010-07-15 | 2015-11-10 | Qualcomm Incorporated | Signaling data for multiplexing video components |
US9602802B2 (en) | 2010-07-21 | 2017-03-21 | Qualcomm Incorporated | Providing frame packing type information for video coding |
US9596447B2 (en) | 2010-07-21 | 2017-03-14 | Qualcomm Incorporated | Providing frame packing type information for video coding |
US8370939B2 (en) | 2010-07-23 | 2013-02-05 | Kaspersky Lab, Zao | Protection against malware on web resources |
US9456015B2 (en) | 2010-08-10 | 2016-09-27 | Qualcomm Incorporated | Representation groups for network streaming of coded multimedia data |
US9319448B2 (en) | 2010-08-10 | 2016-04-19 | Qualcomm Incorporated | Trick modes for network streaming of coded multimedia data |
US8806050B2 (en) | 2010-08-10 | 2014-08-12 | Qualcomm Incorporated | Manifest file updates for network streaming of coded multimedia data |
US9270299B2 (en) | 2011-02-11 | 2016-02-23 | Qualcomm Incorporated | Encoding and decoding using elastic codes with flexible source block mapping |
US8958375B2 (en) | 2011-02-11 | 2015-02-17 | Qualcomm Incorporated | Framing for an improved radio link protocol including FEC |
US9253233B2 (en) | 2011-08-31 | 2016-02-02 | Qualcomm Incorporated | Switch signaling methods providing improved switching between representations for adaptive HTTP streaming |
US9843844B2 (en) | 2011-10-05 | 2017-12-12 | Qualcomm Incorporated | Network streaming of media data |
US9294226B2 (en) | 2012-03-26 | 2016-03-22 | Qualcomm Incorporated | Universal object delivery and template-based file delivery |
Also Published As
Publication number | Publication date |
---|---|
WO2001058131A3 (en) | 2002-01-10 |
AU2001232194A8 (en) | 2009-07-16 |
AU2001232194A1 (en) | 2001-08-14 |
IL140504A0 (en) | 2002-02-10 |
AU2001230480A1 (en) | 2001-08-14 |
AU2001230479A1 (en) | 2001-08-14 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US20050259682A1 (en) | Broadcast system | |
WO2001058131A2 (en) | Broadcast system | |
EP1354457B1 (en) | Streaming media subscription mechanism for a content delivery network | |
US9787802B2 (en) | Technique for reliable bulk data delivery | |
JP4183170B2 (en) | Distributed multicast cache method and apparatus | |
US6785704B1 (en) | Content distribution system for operation over an internetwork including content peering arrangements | |
US7266686B1 (en) | Multicasting method and apparatus | |
EP2323333A2 (en) | Multicasting method and apparatus | |
WO1997042582A9 (en) | Multicasting method and apparatus | |
US7143179B2 (en) | Method and system for parallel data transmission on demand to an unlimited number of clients without acknowledgment and on the basis of constant data availability | |
Swan et al. | Layered transmission and caching for the multicast session directory service | |
Fuchs et al. | A naming approach for ALF design | |
Liao | Global information broadcast: an architecture for internet push channels | |
CA2434698C (en) | Multicasting method and apparatus | |
CA2614654C (en) | Methods and systems for playing media | |
Li | Content Caching and Multicast | |
Basu et al. | A multicast push caching system over a UDLR satellite link | |
Byers | Flexible transport services for emerging opportunities in Internet content delivery | |
Li | Scalable reliable multicast and its application to web caching | |
AU2002229123A1 (en) | Streaming media subscription mechanism for a content delivery network | |
Bachmeir et al. | Diversity protected, cache based reliable content distribution building on scalable, P2P, and multicast based content discovery | |
Pitkänen | Data availability in challenging networking environments in presence of failures | |
Christian Bachmeir et al. | Diversity Protected, Cache Based Reliable Content Distribution Building on Scalable, P2P, and Multicast Based Content Discovery |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
AK | Designated states |
Kind code of ref document: A2 Designated state(s): AE AG AL AM AT AU AZ BA BB BG BR BY BZ CA CH CN CR CU CZ DE DK DM DZ EE ES FI GB GD GE GH GM HR HU ID IL IN IS JP KE KG KP KR KZ LC LK LR LS LT LU LV MA MD MG MK MN MW MX MZ NO NZ PL PT RO RU SD SE SG SI SK SL TJ TM TR TT TZ UA UG US UZ VN YU ZA ZW |
|
AL | Designated countries for regional patents |
Kind code of ref document: A2 Designated state(s): GH GM KE LS MW MZ SD SL SZ TZ UG ZW AM AZ BY KG KZ MD RU TJ TM AT BE CH CY DE DK ES FI FR GB GR IE IT LU MC NL PT SE TR BF BJ CF CG CI CM GA GN GW ML MR NE SN TD TG |
|
121 | Ep: the epo has been informed by wipo that ep was designated in this application | ||
DFPE | Request for preliminary examination filed prior to expiration of 19th month from priority date (pct application filed before 20040101) | ||
AK | Designated states |
Kind code of ref document: A3 Designated state(s): AE AG AL AM AT AU AZ BA BB BG BR BY BZ CA CH CN CR CU CZ DE DK DM DZ EE ES FI GB GD GE GH GM HR HU ID IL IN IS JP KE KG KP KR KZ LC LK LR LS LT LU LV MA MD MG MK MN MW MX MZ NO NZ PL PT RO RU SD SE SG SI SK SL TJ TM TR TT TZ UA UG US UZ VN YU ZA ZW |
|
AL | Designated countries for regional patents |
Kind code of ref document: A3 Designated state(s): GH GM KE LS MW MZ SD SL SZ TZ UG ZW AM AZ BY KG KZ MD RU TJ TM AT BE CH CY DE DK ES FI FR GB GR IE IT LU MC NL PT SE TR BF BJ CF CG CI CM GA GN GW ML MR NE SN TD TG |
|
REG | Reference to national code |
Ref country code: DE Ref legal event code: 8642 |
|
32PN | Ep: public notification in the ep bulletin as address of the adressee cannot be established |
Free format text: NOTING OF LOSS OF RIGHTS PURSUANT TO RULE 69(1) EPC, FORM 1205A, DATE OF NOTIFICATION 28.01.2003 |
|
WWE | Wipo information: entry into national phase |
Ref document number: 10182753 Country of ref document: US |
|
122 | Ep: pct application non-entry in european phase | ||
NENP | Non-entry into the national phase |
Ref country code: JP |