EP1384129A2 - A duplicating switch for streaming data units to a terminal - Google Patents

A duplicating switch for streaming data units to a terminal

Info

Publication number
EP1384129A2
EP1384129A2 EP02734066A EP02734066A EP1384129A2 EP 1384129 A2 EP1384129 A2 EP 1384129A2 EP 02734066 A EP02734066 A EP 02734066A EP 02734066 A EP02734066 A EP 02734066A EP 1384129 A2 EP1384129 A2 EP 1384129A2
Authority
EP
European Patent Office
Prior art keywords
stream
switch
content
data units
duplicating
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Withdrawn
Application number
EP02734066A
Other languages
German (de)
French (fr)
Other versions
EP1384129A4 (en
Inventor
Gil Weigand
William J. Raduchel
Scott K. Brown
David Bill
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Historic AOL LLC
Original Assignee
America Online Inc
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Priority claimed from US09/893,692 external-priority patent/US7266609B2/en
Application filed by America Online Inc filed Critical America Online Inc
Publication of EP1384129A2 publication Critical patent/EP1384129A2/en
Publication of EP1384129A4 publication Critical patent/EP1384129A4/en
Withdrawn legal-status Critical Current

Links

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L12/00Data switching networks
    • H04L12/02Details
    • H04L12/16Arrangements for providing special services to substations
    • H04L12/18Arrangements for providing special services to substations for broadcast or conference, e.g. multicast
    • H04L12/1881Arrangements for providing special services to substations for broadcast or conference, e.g. multicast with schedule organisation, e.g. priority, sequence management
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L61/00Network arrangements, protocols or services for addressing or naming
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L65/00Network arrangements, protocols or services for supporting real-time applications in data packet communication
    • H04L65/60Network streaming of media packets
    • H04L65/75Media network packet handling
    • H04L65/765Media network packet handling intermediate
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/50Network services
    • H04L67/56Provisioning of proxy services
    • H04L67/561Adding application-functional data or data for application control, e.g. adding metadata
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L69/00Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
    • H04L69/22Parsing or analysis of headers
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N21/00Selective content distribution, e.g. interactive television or video on demand [VOD]
    • H04N21/20Servers specifically adapted for the distribution of content, e.g. VOD servers; Operations thereof
    • H04N21/21Server components or server architectures
    • H04N21/222Secondary servers, e.g. proxy server, cable television Head-end
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N21/00Selective content distribution, e.g. interactive television or video on demand [VOD]
    • H04N21/20Servers specifically adapted for the distribution of content, e.g. VOD servers; Operations thereof
    • H04N21/23Processing of content or additional data; Elementary server operations; Server middleware
    • H04N21/231Content storage operation, e.g. caching movies for short term storage, replicating data over plural servers, prioritizing data for deletion
    • H04N21/23106Content storage operation, e.g. caching movies for short term storage, replicating data over plural servers, prioritizing data for deletion involving caching operations
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N21/00Selective content distribution, e.g. interactive television or video on demand [VOD]
    • H04N21/60Network structure or processes for video distribution between server and client or between remote clients; Control signalling between clients, server and network components; Transmission of management data between server and client, e.g. sending from server to client commands for recording incoming content stream; Communication details between server and client 
    • H04N21/61Network physical structure; Signal processing
    • H04N21/6106Network physical structure; Signal processing specially adapted to the downstream path of the transmission network
    • H04N21/6125Network physical structure; Signal processing specially adapted to the downstream path of the transmission network involving transmission via Internet
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N21/00Selective content distribution, e.g. interactive television or video on demand [VOD]
    • H04N21/60Network structure or processes for video distribution between server and client or between remote clients; Control signalling between clients, server and network components; Transmission of management data between server and client, e.g. sending from server to client commands for recording incoming content stream; Communication details between server and client 
    • H04N21/63Control signaling related to video distribution between client, server and network components; Network processes for video distribution between server and clients or between remote clients, e.g. transmitting basic layer and enhancement layers over different transmission paths, setting up a peer-to-peer communication via Internet between remote STB's; Communication protocols; Addressing
    • H04N21/64Addressing
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L12/00Data switching networks
    • H04L12/02Details
    • H04L12/16Arrangements for providing special services to substations
    • H04L12/18Arrangements for providing special services to substations for broadcast or conference, e.g. multicast
    • H04L12/1854Arrangements for providing special services to substations for broadcast or conference, e.g. multicast with non-centralised forwarding system, e.g. chaincast
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L69/00Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
    • H04L69/30Definitions, standards or architectural aspects of layered protocol stacks
    • H04L69/32Architecture of open systems interconnection [OSI] 7-layer type protocol stacks, e.g. the interfaces between the data link level and the physical level
    • H04L69/322Intralayer communication protocols among peer entities or protocol data unit [PDU] definitions
    • H04L69/329Intralayer communication protocols among peer entities or protocol data unit [PDU] definitions in the application layer [OSI layer 7]

Definitions

  • This application relates generally to streaming media.
  • multimedia streaming describes a process for allowing access to multimedia content from one or more sources. Increased usage of the Internet has -l o resulted in an increased demand for multimedia streaming.
  • data units may be streamed to a terminal by using a duplicating switch to receive a first stream of data units, store content from the first stream, generate second streams that incorporate the stored content, and make the 15 second streams available to the terminals.
  • Implementations may include one or more of the following features.
  • using the duplicating switch to store content may include storing content that is temporally related to the data units that are being generated.
  • a location identifier may be used to indicate which portion of content is being generated into the 2o second streams. Location identifiers may be used to access the content time-shifted as two different streams.
  • Using the duplicating switch to store content also may include storing more than one instance of the same portion of content, and storing additional instances of the stream as demand for the content increases.
  • Using the duplicating switch to store content may include storing content and 25 associated header information. Using the duplicating switch to store content also may include storing a checksum describing the content.
  • a second stream may be transmitted in response to receiving a request from a terminal or a service provider.
  • Storing the content may include using location identifiers to track simultaneous transmissions of a single stored instance of a stream, and making streams available may include transmitting the different data units within the single stored instance to several requestors who have terminals receiving the stream that overlap but differ by a time differential.
  • the duplicating switch may be a specialized device including hardware configured to perform one or more of receiving a first stream of data units, storing content from the first stream, generating second streams, and making the second streams available.
  • performance of a network system may be improved by a switch that includes a communications interface to receive a stream of data units that each include a payload portion and an attribute portion, a buffer structured and arranged to store at least payload portions of the data units, a replicator structured and arranged to duplicate at least the payload portion of one or more of the data units, and a second communications interface structured and arranged to enable access to the stream of data units by two or more terminals.
  • Implementations may include one or more of the following features.
  • the attribute portions of the data units may include IP packet information and/or one or more pieces of layer three information.
  • the switch may include a processor that generates and associates an attribute portion with a payload portion that has been duplicated by the replicator.
  • the replicator may be structured and arranged to duplicate the payload portion of the attribute portion, and the processor may be structured and arranged to change an IP header on one or more of the attribute portions duplicated by the replicator.
  • the processor may be structured and arranged to change an IP destination address, which may be, for example, the IP address corresponding to the terminal to which access to the payload portion is enabled using a second communications interface.
  • the processor may be structured and arranged to specify destination information that differs among duplicated payload portions.
  • the data unit may include, for example, audio, video, and streamed media content.
  • the switch may be structured and arranged to receive a request to receive a stream of data units from a terminal. The switch then may transmit the stream of data units to the requesting terminal. Implementations may include receiving the request from a device other than the terminals that will receive a stream of data units, and the switch may transmit a stream of data units to the requesting terminals or devices. The switch may enable access to the same stream of data units at two different temporal offsets.
  • the switch may include a buffer with more than one pointer to enable access to the stream of data units at two different points and times. The buffer may store more than one instance of the stream of data units.
  • a source system may interface with the switch.
  • the source system may be capable of duplicating data units and may transmit a stream of data units to the switch.
  • one or more terminals may interface with the switch and may receive duplicated data units from the switch.
  • Implementations may include a system capable of achieving the above features, including, for instance, a source system, a switch, a terminal, and a network between these components. Implementations also may include a sequence of steps performed on the switch, the source system and/or the terminal to achieve these features.
  • Fig. 1 is a block diagram of a communications system capable of using a duplicating switch to generate a stream of data units.
  • Fig. 2A is a diagram of an exemplary data unit that may be transmitted in a communications system, such as that shown in Fig. 1.
  • Fig. 2B is a diagram illustrating one example of the structure of an attribute portion of the data unit of Fig. 2 A.
  • Fig. 3 is an exemplary component diagram of a duplicating switch suitable for use in the communications system of Fig. 1.
  • Fig. 4A is an exemplary block diagram of a duplicating switch that uses memory (e.g., RAM ("Random Access Memory”)) to store a media stream for subsequent playback.
  • Fig. 4B is an exemplary block diagram of a duplicating switch that uses storage to store a media stream for subsequent playback.
  • Fig. 5 is a block diagram of a precoder for use in a duplicating switch.
  • Fig. 6 is a flowchart illustrating a method of transmitting data units in a communications system, such the communications system of Fig. 1.
  • Fig. 7 is a flowchart illustrating movement of an IP packet through the communications system of Fig. 1.
  • Fig. 8 is a flow chart of a procedure for processing a received data unit using a duplicating switch in a communications system, such as the communications system of Fig. 1.
  • Fig. 9 is a flow chart of a procedure for providing a stream of data units in a communications system, such as the communications system of in Fig. 1.
  • Fig. 10A illustrates a duplicating switch structured and arranged to store multiple instances of a stream of data units.
  • Fig. 10B illustrates a duplicating switch structured and arranged to store multiple location identifiers.
  • Fig. 11 is a flow chart of a procedure for time-shifting content in a communications system, such as the communications system of Fig. 1.
  • a duplicating switch receives a source stream of data units and stores content of the stream to enable subsequent generation of one or more streams that incorporate the content. Storing the content permits time sliifting of the content for subsequent transmission.
  • an on-demand system can be created to transmit stored content from a source stream in response to a user's request.
  • the duplicating switch may use one or more pointers to enable simultaneous access to different portions of content from the same source stream and thus simultaneous generation of several different and offset streams from a single source stream. The generation of several different and offset streams from a single source stream.
  • the duplicating switch may store multiple instances of content from a source stream to manage increased demand. The duplicating switch also may reduce overall storage requirements by storing only certain portions of the content from within a source stream.
  • FIGs. 1-11 describe a communications system for using a duplicating switch to stream data units to a terminal.
  • FIGs. 1-11 describe a communications system for using a duplicating switch to stream data units to a terminal.
  • FIGs. 1-11 describe a communications system for using a duplicating switch to stream data units to a terminal.
  • FIG. 1-11 describe a communications system for using a duplicating switch to stream data units to a terminal.
  • FIG. 1-11 describe a communications system for using a duplicating switch to stream data units to a terminal.
  • FIG. 1-11 describe a communications system for using a duplicating switch to stream data units to a terminal.
  • Fig. 1 depicts a communications system 100 that implements techniques using a duplicating switch to stream data units to two or more terminals.
  • Communications system 100 may be structured and arranged to include a source system 110, one or more terminals 150, and communication software and hardware enabling communications between source system 110 and terminals 150. More particularly, the communications system 100 typically includes the source system 110, a network 120, a duplicating switch 130, a network 140, and terminals 150.
  • the source system 110 generally transmits one or more data units in a stream of data units across network 120 to one or more duplicating switches 130, where content from the data units is stored, duplicated and transmitted to one or more terminals 150 through network 140 in an on-demand manner.
  • the source system 110 provides a stream of one or more data units across the network 120 to the duplicating switch 130.
  • the source system 110 is structured and arranged to convert a media source (e.g., a video or audio feed) into data units for transmission across the network 120.
  • the source system 110 may include a general-purpose computer having a central processor unit (CPU), and memory/storage devices that store data and various programs such as an operating system and one or more application programs.
  • Other implementations of the source system 110 include a workstation, a server, a device, a special purpose device or component, other equipment or some combination thereof capable of responding to and executing instructions in a defined manner.
  • the source system 110 also typically includes an input/output (I/O) device (e.g., video and audio input and conversion capability), and peripheral equipment such as a display communications card or device (e.g., a modem or a network adapter) for exchanging data with the network 120.
  • I/O input/output
  • peripheral equipment such as a display communications card or device (e.g., a modem or a network adapter) for exchanging data with the network 120.
  • Implementations of the source system 110 also may include a media system that transmits one of more pieces of media content across a network 120.
  • a source system 110 may transmit signals formatted according to European Telecommunications Standards Institute (ETSI), Digital Video Broadcasting (DVB), Advanced Television Systems Committee (ATSC), or European Cable Communications Association (ECCA) standards across a network to a cable head end.
  • ETSI European Telecommunications Standards Institute
  • DVD Digital Video Broadcasting
  • ATSC Advanced Television Systems Committee
  • ECCA European Cable Communications Association
  • a cable provider may transmit or direct video signals to a cable head end for distribution in a cable network.
  • a communications link 115 is used to communicate data between source system 110 and network 120.
  • Communications link 115 may include wired or wireless modes of communication, such as a telephone line, a wireless network link, a cable network, or a direct connection.
  • the network 120 typically includes hardware and/or software capable of enabling direct or indirect communications between the source system 110 and the duplicating switch 130.
  • the network 120 may include a direct link between the source system 110 and the duplicating switch 130, or it may include one or more networks or subnetworks between them (not explicitly shown). Each network or subnetwork may include, for example, a wired or wireless data pathway capable of carrying and receiving data.
  • Examples of network 120 include the Internet, the World Wide Web, WANs ("Wide Area Network"), LANs ("Local Area Networks”), analog or digital wired and wireless telephone networks (e.g., PSTN ("Public Switched Telephone Network”), ISDN (“Integrated Services Digital Network”), or xDSL (“any form of Digital Subscriber Loop”)), radio, television, cable, satellite, and/or other delivery mechanisms for carrying data.
  • WANs Wide Area Network
  • LANs Local Area Networks
  • analog or digital wired and wireless telephone networks e.g., PSTN (“Public Switched Telephone Network”), ISDN (“Integrated Services Digital Network”), or xDSL (“any form of Digital Subscriber Loop”)
  • PSTN Public Switched Telephone Network
  • ISDN Integrated Services Digital Network
  • xDSL any form of Digital Subscriber Loop
  • the duplicating switch 130 is structured and arranged to store a received stream of data units for time-shifted transmission to more than one terminal. Implementations of the duplicating switch 130 may store one or more streams of data units.
  • the duplicating switch 130 may be capable of receiving a stream of IP ("Internet Protocol") video and storing that video for subsequent transmission.
  • Implementations of duplicating switch 130 also may include hardware or software capable of transmitting or receiving media feeds not resembling a stream of data units.
  • the duplicating switch may include a cable head end system that is capable of receiving or transmitting European Telecommunications Standards Institute (ETSI), Digital Video Broadcasting (DVB), Advanced Television Systems Committee (ATSC), or European Cable Communications Association (ECCA) for transmission on a cable distribution system.
  • ETSI European Telecommunications Standards Institute
  • DVD Digital Video Broadcasting
  • ATSC Advanced Television Systems Committee
  • ECCA European Cable Communications Association
  • the cable head end system may receive a satellite broadcast feed, convert the feed into a format suitable for storage, and thereafter convert
  • the network 140 generally includes one or more of links between the duplicating switch 130 and the terminals 150.
  • the network 140 may include a direct physical link or a series of links connected by various pieces of network equipment.
  • aspects of network 140 may resemble aspects of network 120.
  • network 120 and network 140 may share one or more hardware or software devices.
  • networks 120 and 140 may use the same type of circuits and/or equipment.
  • the terminal 150 may include one or more devices capable of receiving the stream of data units transmitted by duplicating switch 130 through network 140.
  • the terminal 150 may include a controller (not shown) that processes instructions received from or generated by a software application, a program, a piece of code, a device, a computer, a computer system, or a combination thereof, which independently or collectively direct operations of the terminal 150.
  • the instructions may be embodied permanently or temporarily in any type of machine, component, equipment, storage medium, or propagated signal that is capable of being delivered to the terminal 150 or that may reside with the controller at the terminal 150.
  • the terminal 150 may include a general-purpose computer (e.g., a personal computer) capable of responding to and executing instructions in a defined manner, a workstation, a laptop, a PDA ("Personal Digital Assistant"), a wireless phone, a component, other equipment, or some combination of these items that is capable of responding to and executing instructions.
  • a general-purpose computer e.g., a personal computer
  • PDA Personal Digital Assistant
  • wireless phone a component, other equipment, or some combination of these items that is capable of responding to and executing instructions.
  • the terminal 150 includes one or more information retrieval software applications (e.g., a browser, a mail application, an instant messaging client, an Internet service provider client, or an AOL TV ("America Online Television") or other integrated client) capable of receiving one or more data units.
  • the information retrieval applications may run on a general purpose operating system and a hardware platform that includes a general purpose processor and specialized hardware for graphics, communications and/or other capabilities.
  • terminal 150 may include a wireless telephone running a micro-browser application on a reduced operating system with general purpose and specialized hardware capable of operating in mobile environments.
  • the terminal 150 may include a simplified device capable of receiving a video signal not encapsulated in a traditional data unit.
  • the duplicating switch 130 may transmit a raw video feed formatted in accordance with specifications set forth by, e.g., European Telecommunications
  • ETSI Standards Institute
  • DVD Digital Video Broadcasting
  • ATSC Advanced Television Systems Committee
  • ECCA European Cable Communications Association
  • an example of a data unit 200A includes an attribute portion 210A and a payload 220A.
  • the attribute portion 210A typically includes parameters that are modified as the data unit 200A moves through the communications system 100.
  • an JP data unit may change the layer two addressing information as the data unit moves through the network (e.g., network 140).
  • the payload 220A typically includes information including content and/or parameters that are intended for communication from the source system and tend to change infrequently during transmission to preserve integrity of the data being transmitted.
  • the payload 220A may include audio or video content being transmitted to a personal computer (e.g., terminal 150).
  • the attribute portion 21 OB of the data unit 200B may include several distinct or intermingled fields, such as, for example, fields of an IP ("Internet Protocol") packet. More particularly, for example, attribute portion 210B may include a destination address 213B, a source address 215B, a port number 217B indicating the type of IP traffic (e.g., UDP ("User Data Protocol"), TCP ("Transmission Control Protocol”), ICMP ("Internet Control Message Protocol”)), and other parameters at various portions as represented by 211 B and 219B . These fields may be arranged as shown or otherwise to accommodate various protocols.
  • the payload in the LP data unit 200B is represented by 220B.
  • Fig. 3 illustrates a duplicating switch 300 structured and arranged to receive a stream, store content from the stream, generate data units from the stream, and transmit the generated data units as a stream.
  • the duplicating switch 300 generally corresponds to the duplicating switch 130 in Fig. 1.
  • the duplicating switch 300 generally includes a storage system 310 for storing the stream of data units, a high speed interconnect 320 between the various subsystems in the duplicating switch 300, a switching engine 330 for modifying and transmitting the stream of data units to two or more clients, a first communications interface 340 for receiving a stream of data units from a source system, and a second communications interface 350 for transmitting a stream of data units to two or more clients.
  • the storage system 310 enables the duplicating switch 300 to store at least the content portion of the data unit.
  • the storage system 310 may be volatile or nonvolatile and may include memory (e.g., RAM) and/or storage (e.g., HDDS). Implementations of storage system 310 may include a hard disk drive or a more portable media, e.g., a compact disk, a tape drive, or an optical memory device. Implementations also may include combinations of memory and storage.
  • the high speed interconnect 320 generally refers to a device that connects a component of the duplicating switch 300 with other elements of the duplicating switch 300.
  • Examples of the high speed interconnect 320 may include, but are not limited to, SCSI ("Small Computer Serial Interface"), Fibre Channel, UTOPIA ("Universal Test and Operations PHY interface for ATM (“Asynchronous Transfer Mode”)), Infiniband, and other protocols and connection methods.
  • the high speed interconnect may include physical, logical, timing and electrical connections and standards as well as protocols that enable these high speed interconnects to exchange data.
  • a switching engine 330 includes a device that performs network operations in hardware (e.g., a chip or part of chip).
  • the switching engine 330 may include an ASIC ("Application Specific Integrated
  • an ASIC chip may include a logical gate structure implemented in silicon and configured to receive a packet and filter based on examining an IP address.
  • Implementations of the switching engine 330 may include using a FPGA
  • An FPGA generally is defined as a chip fabricated to allow third parties to implement a variety of logical designs (e.g., group of gates) on the chip. For example, one designer may load a design that replaces the IP address of received IP packets with a different IP address. Another example may include a design that performs segmentation and reassembly of IP packets as they are modified during transmission of the IP packet through different networks.
  • Implementations of the switching engine 330 may include using a network processor.
  • a network processor generally is defined as a chip that, among other features, allows software to specify which network operations should be performed.
  • One example of a network processor may include several interconnected RISC
  • the switching engine 330 may include a precoder (not shown) that is structured and arranged to receive a data unit, extract a content piece from the payload portion of the data unit, determine where the content piece will be stored, and store the content piece in a structured manner so that retrieval (e.g., playback) involves retrieving neighboring content pieces, packaging data units around the content pieces, and transmitting the data units to one or more requestors. This process will be described further with respect to Fig. 5.
  • the first communications interface 340 generally is structured and arranged to receive a stream of data units from a device such as the source system 110. Implementations of the communications interface may include a LAN or WAN interface with the ability to direct the data units to one or more locations in the duplicating switch 300, using, for example, the high speed interconnect 320. Implementations also may include other forms of transmitting a media signal, including ETSI, DVB, ATSC, or ECCA.
  • the second communications interface 350 generally is structured and arranged to transmit a stream of data units from the memory system 310 to one or more devices that generally correspond with recipients, such as terminal 150 described with respect to Fig. 1.
  • Implementations of the second communications interface 350 may include a LAN or WAN interface with the ability to direct the data units to one or more locations in the duplicating switch 300 using, for example, the high speed interconnect 320. Implementations also may include other forms or transmitting a media signal other than by IP networking.
  • the second communications interface 350 is not limited to the same type of format as the first communications interface 340, though they may include the same format and even the same physical interface.
  • the first communications interface 340 may include a POS ("Packet-over-SONET") interface while the second communications interface 350 may include some form of Ethernet (e.g., 100-Base-T, Gigabit Ethernet).
  • Fig. 4A provides an exemplary block diagram of a duplicating switch (e.g., duplicating switch 130 in Fig. 1) with a memory implementation.
  • the duplicating switch 400A includes a RAM array 420 A, a switching engine 43 OA and a network interface 440A.
  • the RAM array 420A may include one or more RAM memory banks structured and arranged to store one or more pieces of content.
  • the RAM array 420A may store just a portion of the stream of data units. For example, a provider streaming out a movie may store one portion of the movie for several users to watch at one time.
  • the RAM array 420A may store a window (e.g., a ten-minute window) of the movie that a user may use to time-shift the movie (e.g., pause, stop playing, or rewind) while staying current with the movie being broadcast.
  • an OSP Online Service Provider
  • the duplicating switch loads a portion of the stream of content pieces indicated by the location identifier to the RAM array 420 A.
  • the duplicating switch may use one or more pointers to indicate which content pieces (e.g., frames) should be transmitted to which user.
  • an on-demand system may load a larger portion of the content pieces to memory and may use a first pointer to transmit one stream of data units and a second pointer to transmit a second stream of data units simultaneously or otherwise.
  • the switching engine 430 A is structured and arranged to manage the content being stored in and retrieved from the RAM array 420A. Aspects of the switching engine 430A generally correspond to aspects of the switching engine 330 in Fig. 3.
  • the switching engine 430A generally loads and retrieves content to/from the RAM array 420A. Examples of content that may be loaded and retrieved by switching engine 430A include content pieces without wrappers (e.g., OSI wrappers), such as datagrams having MPEG ("Motion Picture Experts Group") I, P, and B frames removed, video frames and differential checksum values that describe frame-to-frame changes and frames with one or more added wrappers (e.g., a layer 4 datagram).
  • OSI wrappers such as datagrams having MPEG ("Motion Picture Experts Group") I, P, and B frames removed, video frames and differential checksum values that describe frame-to-frame changes and frames with one or more added wrappers (e.g., a layer 4 datagram).
  • the switching engine 430A may implement a system of pointers designed to keep track of where in time or sequence number the terminals are with respect to the available stored content.
  • the switching engine 43 OA may include a device, a program, a software controller, or another system or device in combination with the above.
  • the switching engine 43 OA may manage overall system utilization and refuse subsequent requests for services or attempt to serve more than one terminal from one stream of data units.
  • the network interface 440A is designed to transmit and receive a stream of data units and generally corresponds to the first communications interface 440 and second communications interface 350 described in Fig. 3.
  • Fig. 4B provides another exemplary block diagram of a duplicating switch
  • the duplicating switch 400B includes a stream platform 410B, a switching engine 430B, and a network interface 440B.
  • the stream platform 41 OB is structured and arranged to store content from within a stream of data units.
  • the stream platform 41 OB includes a hard disk drive 412B (or a tape drive or other magnetic memory) and optical memory 416B .
  • the stream platform 41 OB includes memory components with low bandwidth performance but high capacities.
  • storage may include solid- state-memory (not shown) that is slower than solid-state memory used in other applications.
  • the stream platform 410B will store a larger portion of a stream (e.g., a movie), but will limit access to fewer simultaneous streams absent RAM or other cache interfaces.
  • Implementations of the storage platform 410B may include the disk storage 412B having a RAM interface to the switching engine 430B.
  • the duplicating switch may include a RAM bank and disk storage. Content pieces may be loaded to the disk storage such that the content pieces are retrieved in the order that they are transmitted. As the content pieces are being retrieved, they are loaded to the RAM bank. The higher throughput performance of the RAM banks may enable more terminals to access the same content piece. Terminals accessing the stream of data units may use a pointer to the content pieces in the RAM bank to keep track and load the data units they need in the stream of data units.
  • the switching engine 43 OB is structured and arranged to manage the content being stored and retrieved in the stream platform 410B.
  • the switching engine 430B generally corresponds to the switching engine 43 OA described with respect to Fig. 4A.
  • the network interface 440B is designed to transmit and receive a stream of data units and generally corresponds to the first communications interface 340 and second communications interface 350 described with respect to Fig. 3.
  • Figs. 4A and 4B illustrate implementations that are designed to account for common limitations of the existing memory and storage systems (e.g., solid-state RAM offers high throughput but less storage while hard drives and optical memory offer higher storage but less throughput).
  • implementations are not limited to those shown, nor are memory or storage devices necessarily subject to these constraints.
  • a disk drive may be used to implement a system managing multiple pointers and may offer higher bandwidth
  • solid-state memory may offer higher density storage than the disk drive storage.
  • Fig. 5 shows an example of a duplicating switch 500 with precoder functionality.
  • the duplicating switch 500 generally corresponds to the duplicating switch 130 of Fig. 1.
  • the duplicating switch 500 includes a data unit interface 510, a content extraction system 520, a content arrangement system 540, and a content store 550.
  • the data unit interface 510 generally is structured and arranged to interface with a network to transmit and receive a data unit from the content store 540.
  • the functionality of the data unit interface 510 corresponds to the functionality of the first communications interface 340 and the second communications interface 350 of Fig. 3.
  • Data unit interface 510 also may be configured to segment and reassemble a data unit that has been separated during transmission, or to handle unconventional data units.
  • the data unit interface 510 may be configured to transmit/receive one or more media frames (e.g., frames formatted according to one of ETSI, DVB, ATSC, or ECCA).
  • the duplicating switch 500 receives an analog signal, the data unit interface 510 may convert the signal to a recognized format that the frame or content piece may store.
  • the content extraction system 520 is structured and arranged to remove a data unit wrapper that is added around content for transmission.
  • the content extraction system 520 may remove one or more bits associated with OSI ("Open Systems Interconnect") information encapsulated along with the content for transmission.
  • the content extraction system 520 also is capable of adding the wrapper when the data is retrieved from the content store 550 for subsequent transmission.
  • the content extraction system 520 may remove wrapper information when storing a stream of data units in the content store 550 and may add a different wrapper when transmitting the stream of data units from the content store 550.
  • the content arranger 540 is structured and arranged to direct storage and retrieval of the content information such that the content information may be retrieved in a determinate manner.
  • the content may be arranged so that the addressing information may be updated in predictable increments.
  • the content may be arranged such that the difference between frames of content may be calculated by analyzing an associated checksum that then may be stored. Determining where a content piece may be stored and storing the content piece may include using hard disk drive constraints to store the content piece.
  • the content store 550 may store the content pieces such that the same "read” or data retrieval will retrieve related content pieces that are frequently transmitted in close proximity to one another (e.g., adjacent frames in a movie or adjacent I, P, and B MPEG frames).
  • Determining where a content piece may be stored and storing the content piece may include using solid-state storage (e.g., various forms of RAM) to store the content piece.
  • the solid-state storage may store all or a portion of the stream in an array of RAM memory. If a portion of the RAM memory is used to store the content piece, the RAM may load a certain window of content for transmission to one or more terminals.
  • the duplicating switch may store more than one instance of the stream of data units in the array of RAM.
  • the content store 550 is structured and arranged to store content pieces or frames. As described above with respect to the content arranger 540, the content is generally structured and arranged to be retrieved in a manner enabling transmission of related content pieces to one or more terminals.
  • the content store 550 generally corresponds to the memory system 310 of Fig. 3, the RAM array 420A of Fig. 4A, and the storage platform 410B of Fig. 4B.
  • Fig. 6 illustrates a method of transmitting a flow of data units in a communications system 600.
  • Communications system 600 generally includes a source system 610, a switch 620, and terminals 650 and 670.
  • source system 610 corresponds to the source system 110 in Fig. 1
  • switch 620 corresponds to the switch 130 in Fig. 1
  • terminals 650 and 670 correspond to components of the terminal 150 in Fig. 1.
  • source system 610 generates or enables access to a stream of data units in response to a request or otherwise (step 613).
  • an analog input e.g., analog audio or analog video
  • this may include converting the input into a stream of data units.
  • the source system 610 transmits the generated stream of data units to one or more switches 620 (e.g., across network 120) (step 616). When the switch 620 receives the data units from the source system 610 (step 616),
  • switch 620 may remove the IP header information and store only the payload and/or information represented by the payload.
  • switch 620 modifies the existing header or adds a new IP header to the payload.
  • the switch may use destination information corresponding to the IP address of the destination terminals (e.g., terminals 650 and 670) or an intermediary between switch 620 and the destination terminals as the destination information. With the newly acquired destination information, the switch 620 transmits the JP packets across the network (e.g., network 140 in Fig. 1) to the appropriate terminal, for example, terminal 670 in Fig. 6 (step 626).
  • the terminal 670 receives the stream of data units sent by the switch 620 across the network (step 672) and converts the data units into a perceivable output, manipulates the data units, or forwards the data units to another device.
  • a terminal 670 may receive a stream of IP data units containing video content and display or otherwise manipulate the video content on a personal computer or other device.
  • terminals may be capable of requesting a stream.
  • terminal 650 may be capable of generating a request to receive the stream of data units (step 652).
  • the switch 620 may transmit one or more streams of data units to terminal 650 (step 630).
  • Terminal 650 then receives the transmitted streams of data units (step 654).
  • the switch 620 and the terminals 650 and 660 may be required to communicate periodically to maintain streaming. For example, a terminal 650 may send a "keep stream alive" message every 10 seconds to indicate that the terminal 650 wishes to receive a stream during its transmission.
  • the terminal 650 While receiving a stream (step 654), the terminal 650 may request another stream (step 652) or may request termination of transmission by transmitting a request to stop sending the stream of data units (step 656).
  • the switch 620 Upon receipt of a termination request or upon detection of the conclusion of the stream (step 632), the switch 620 stops transmitting the stream of data units (step 634).
  • Terminal 650 may elect to resume transmission of the stream of data units and may communicate this election to switch 620 (step 658).
  • switch 620 receives a resume instruction (step 636)
  • the switch resumes transmission of the stream (step 638) for receipt by the terminal 650 (step 660).
  • the switch 620 may duplicate the payload portion of the data unit, and may modify or replace the IP destination address of the IP data units to specify the IP addresses of one or more conference terminals.
  • the switch 620 may duplicate any particular payload or all payloads more than once such that the payload of a received data unit is transmitted as the payload in several or all data units generated by the switch 620. Moreover, the switch 620 may receive a data unit and transmit the payload as two or more data units.
  • the switch 620 may receive and combine more than one data unit and transmit the combined payloads of the multiple data units in a single data unit, or the switch 620 may divide the payload of a received data unit and combine the divided portions with the payloads of two or more other received data units.
  • the switch 620 may produce several instantiations of the buffered payload, simultaneously, with or without offset, and may transmit those different instantiations to the same or different terminals as needed. These instantiations may be streamed to different time offsets so that terminal 650 may be listening to a stream of data units at a different point than terminal 670.
  • terminal 650 may be receiving the same song on an Internet radio station as terminal 670, but terminal 650 may be receiving data units that correspond to the song thirty (30) seconds later in time.
  • Fig. 7 illustrates one example of the flow of IP data units from a source system 710 to terminals 770, 780 and 790.
  • the source system 710 with an IP address of X.1.1.1 transmits an IP packet 720 to the switch 730 with a destination address of Y 1.1.1.
  • the IP packet 720 includes the switch address as a destination address 724 and the source system address as a source address 726.
  • the IP packet 720 also may include other header information 722 and a payload 728.
  • the switch 730 duplicates at least the payload 728 of the JP packet 720 and transmits an IP data unit 740 to terminal 770 with an address of Z.1.1.1.
  • the IP data unit 740 includes the source IP address 746 of the switch 730 with a destination address 744 of terminal 770.
  • the IP data unit 740 may include additional header information 742 and a payload 748. Similar activities take place to generate IP data units 750 and 760 for terminals 780 and 790.
  • Fig. 8 illustrates a procedure 800 for storing and transmitting a data unit using a duplicating switch.
  • the procedure 800 may be performed using one of the duplicating switches described with respect to Figs. 1-7.
  • the duplicating switch receives a data unit (step 805) and selects the content piece from the data unit (step 810).
  • selecting the content piece of the data unit involves identifying fields or portions of the data unit that correspond to the content, and removing some or all aspects not related to the content.
  • a duplicating switch may remove one or more layers of an OSI ("Open Systems Interconnection") header and store the remainder of the data unit as the content piece.
  • selecting the content may include creating or modifying location identifiers to identify which portion of the data unit should be stored when the data unit is loaded to memory.
  • Selecting the content may include enabling one or more portions of other aspects of the data unit to be retained with the content. For example, one or more fields of the OSI header may be preserved and stored as content.
  • Implementations may include using a pre-coder to modify or adjust the content for storage.
  • the pre-coder may compress the content so that less bandwidth is consumed during transmission.
  • the pre-coder may calculate a checksum or shortcut describing intra-content differences. This checksum or shortcut may be stored in place of storing some of the content pieces.
  • the duplicating switch determines the location in the memory system in which to store the content piece (step 820). Typically, the location for storage of the content piece is selected so that related content pieces may be retrieved in related operations. Examples of related content may include sequential frames in a video and/or content in a time slice.
  • the duplicating switch then stores the content piece in the determined location (step 830).
  • the duplicating switch receives a request for a content piece (step 840).
  • Receiving a request for a content piece may include having a user (e.g., terminal 150 in Fig. 1) request a video stream for display on the user's home computer. Implementations also may include having other devices request the content piece. For example, a cable modem acting as a set top box may request a content piece for display to a television.
  • Implementations also may include having a request originate from a source other than the intended destination. For example, a cable system administrator may generate a request for the content piece on behalf of one or more subscribers. The duplicating switch 130 determines which content piece has been requested
  • the requestor may designate a content piece to send.
  • a terminal may keep track of which content has been received, and may generate a request for one or more pieces of content (e.g., frame number 100 is missing).
  • Implementations also may include having the duplicating switch track which content piece is required. For example, a duplicating switch may attempt to transmit the same content piece to several users.
  • the duplicating switch 130 determines where the content piece is located (step 860). To do so, the duplicating switch may use the location identifiers described with respect to Figs. 3 and 4. Other implementations may employ a file and/or an archiving system maintained to manage access to content pieces.
  • the duplicating switch 130 retrieves the content piece (step 870).
  • the duplicating switch may do so by reading a memory location specified by a location identifier.
  • Other implementations may include retrieving multiple pieces of content information (e.g., reading a sector on a disk).
  • the duplicating switch 130 packages the content piece in a data unit (step 870).
  • the duplicating switch may add one or more layers of OSI information (e.g., addressing information). Implementations where one or more aspects of the data unit other than content are stored with the content piece may include modifying one or more parameters in those fields. For example, if an Internet Protocol packet is stored, the destination address may be modified to the addresses of requesting users.
  • OSI information e.g., addressing information
  • the duplicating switch transmits the data unit to one or more terminals (step 890).
  • the data unit may be transmitted in formats other than IP addressing.
  • transmitting the data unit may include transmitting an on-demand channel over a network.
  • Communications system 900 generally includes a source system 902, a manager 904, a duplicating switch 906, and terminals 908 and 910.
  • the source system 902 corresponds to the source system 110 of Fig. 1
  • duplicating switch 906 corresponds to duplicating switch 130 in Fig. 1
  • terminals 908 and 910 correspond to terminals 150 of Fig. 1.
  • the manager 904 may include a cable system operator, an OSP, a content provider, or an entity capable of providing instructions or direction to the duplicating switch 906.
  • the source system 902 generates a stream of data units (step 913).
  • the source system 902 transmits the stream of data units to the duplicating switch 906 (step 916).
  • the duplicating switch 906 receives the stream of data units (step 925). The duplicating switch 906 then stores at least the content pieces from the stream of data units (step 927).
  • the stream may be transmitted in a variety of ways.
  • the manager 904 waits for a condition to occur (step 918).
  • the manager may be a scheduler that is programmed to direct a duplicating switch "broadcast.”
  • the manager 904 transmits a request to the duplicating switch 906 to transmit the stream of data units (step 923).
  • a terminal 908 may generate a request for a stream (step 933).
  • the terminal 908 may generate a request to view a particular video stream.
  • the duplicating switch 906 receives the request (step 930).
  • the duplicating switch 906 may load one or more content pieces into fast memory (e.g., RAM) (step 931).
  • the duplicating switch 906 may determine that there is inadequate bandwidth to the existing storage of the content and may load frequently-accessed content pieces to the faster memory to increase capacity.
  • the duplicating switch 906 may transmit the stream of data units to two or more terminals 908, 910 (step 936).
  • a terminal receives a stream that has been broadcast or otherwise automatically transmitted to the stream recipient without requesting the stream of data units.
  • terminals 908 and 910 receive the stream of data units (step 940 and 940 A).
  • a different "stack" of content pieces may be loaded into memory to support terminal 910.
  • the terminal 908 may generate and transmit a pause message (step 945). For example, a terminal may wish to "pause" a video on-demand stream and return to the stream at a later point.
  • the duplicating switch 906 When the duplicating switch 906 receives the pause message (step 950), the duplicating switch 906 pauses transmitting to the terminal 908 (step 955).
  • the duplicating switch 906 may still transmit a stream of data units to terminal 910 (not shown).
  • the pause message may be implemented in a variety of ways. For example, terminal 908 may keep track of which data units have been received and resume where it left off by generating and transmitting a resume message (step 960). Another example may include having the terminal 908 transmit a stop message and the duplicating switch 906 keep track of where to resume when the transmit resume message is received (step 960).
  • the duplicating switch 906 transmits the stream of data units 970 to the terminal (step 970).
  • the terminal 908 then receives the stream of data units (step 975).
  • Fig. 10A depicts a duplicating switch 1000A structured and arranged to store multiple instances of the stream of data units.
  • the duplicating switch 1000 A transmits two streams of data units, stream A and stream A 1 .
  • Stream A occupies memory storage 1010A in the memory bank
  • stream A 1 occupies memory storage 1020A in the memory bank.
  • a first pointer 1015 A to the memory storage 1010A indicates which content piece, relative to other content pieces, should be encapsulated as a data unit and transmitted to a terminal requesting Stream A.
  • implementations may include storing a portion of the content pieces in the memory bank. For example, if problematic network conditions prevent a terminal from receiving some of the stream of data units, the terminal may not receive some of the content pieces and may experience gaps in receiving the stream of data units (e.g., missing time in a movie).
  • a second pointer 1025 A to the memory storage 1020A indicates which portions of content pieces encapsulated in a stream of data units are being transmitted to several terminals.
  • One or more terminals wishing to receive one or more data units in the stream of data units receive the content piece corresponding to the second pointer 1025 A, which is continuously advanced to the next content piece.
  • the second pointer 1025 A may advance several content pieces and encapsulate more than one content piece in a data unit.
  • Fig. 10B depicts a duplicating switch 1000B structured and arranged to store multiple location identifiers.
  • duplicating switch 1000B includes five content pieces in stream A: Al 1010, A2 1020, A3 1030, A4 1040, and A5 1050.
  • Duplicating switch 1000B also includes an area of memory allocated for an expected content piece A6 1060.
  • the duplicating switch 1000B enables each of terminals T, U and V to receive its own stream of data units.
  • Each of the terminals manages a location identifier (e.g., pointer) to direct the duplicating switch to select the appropriate content piece to be transmitted.
  • a location identifier e.g., pointer
  • terminals T, U, and V may begin by requesting content piece Al 1010 simultaneously.
  • the location identifier 1025 for terminal T may be referencing content piece A2 1020, while the location identifier 1042 and the location identifier 1044 for terminals U and V are referencing content piece A4 1040 that corresponds to a different time-shift than content piece A2.
  • This offset may have occurred because, for example, terminal T paused receipt of the stream of data units, and is now receiving content pieces that are delayed relative to those received by terminals U and V.
  • duplicating switch 1000B includes five content pieces in stream B: Bl 1070, B2 1071, B3 1072, B4 1073, and B5 1080.
  • Duplicating switch 1000B also includes an area of memory allocated for an expected content piece B6 1090.
  • stream B may be part of the same stream of data units as stream A, but may correspond to a different portion of the stream of data units.
  • stream A may be a "video" stream 40 minutes into a video stream while stream B is five minutes into the same video stream.
  • stream B may be identical to stream A but was added to implement better system performance.
  • stream A and stream B may represent completely different video streams (e.g., two different television channels). 5 Fig.
  • the duplicating switch receives a stream of data units (step 1110) and stores content pieces from the stream of data units (step 1120). With the content stored and ready for transmission, the duplicating switch waits to receive a request to 0 play the stream of data units (step 1130). Though the duplicating switch may wait for a request-to-play message, in some implementations, the duplicating switch may begin to transmit (e.g., play) upon receipt of the stream. In this configuration, the content might only be stored when a user requests pausing of the stream.
  • the duplicating switch may load the stream 5 (content pieces) to fast memory (step 1140). This generally corresponds to loading the stream to fast memory as described with respect to Fig. 6.
  • the duplicating switch transmits the stream of data units (step 1150). While transmitting the stream, the duplicating switch 130 may receive a pause request (step 1160). If the duplicating switch 130 receives a pause request, the duplicating switch 0 stops transmitting the stream of data units to the terminal (step 1165). With the stream of data units paused, the duplicating switch 130 may wait to receive a play request (step 1170).
  • the duplicating switch 130 continues to transmit the stream of data units where the terminal left off (step 1180). If not, the duplicating switch 130 waits for the resume request. When the terminal resumes receiving the stream of data units, the duplicating switch checks for a new pause request (step 1160).
  • the duplicating switch 130 may receive a stop request or reach the end of the stream (step 1185). If the stop request is received or the end of the stream of data units is reached, the duplicating switch ceases transmitting (step 1190). If not, the duplicating switch 130 continues transmitting and returns to waiting for a pause request (step 1160).
  • Ceasing transmitting may include automatically selecting another stream of data units to be transmitted.
  • the duplicating switch 130 may select another video to transmit when one video ends.
  • An "instant replay” or rewind feature may be created using a similar process, except instead of resuming transmission of a stream where the stream was produced, the stream is retransmitted time-shifted to an earlier moment in the stream (e.g., 30 seconds for a commercial, 15 seconds for a sporting event).
  • the duplicating switch may load content from memory representing the stream 30 seconds earlier, and may transmit that content beginning at the earlier location (continuing on from that point).
  • the terminal includes a set top tuner set to receive an analog signal.
  • the location identifiers described in Fig. 11 may be maintained on the client, or on a separate server or device to indicate which content piece the terminals may be receiving.
  • Implementations may include a manager requesting transmission of the stream to the terminals.
  • the manager may include a network operator, a managing server, a workstation, or a scheduling agent.
  • a managing workstation may request transmission of the stream of data units to terminals beginning at a certain time.
  • Implementations also may include storing more than one instance in the stream of data units in the buffer.
  • the switch may store more than one copy of the stream to accommodate large numbers of requests.
  • the stream may buffer the same stream of data units at two different spots.
  • Implementations also may include having the switch maintain state information on one or more requesting users.
  • the switch may establish or assist other devices in establishing a profile for the terminal that receives the stream of data units. In this manner, the switch leverages information available to network processors and devices, which may not ordinarily be accessible to servers, in establishing profiles.
  • implementations may include monitoring switch access and usage levels. For example, the switch may determine that the switch is operating at 85% of maximum performance in a given metric (e.g., processor use, memory use, number of users, bandwidth).
  • a given metric e.g., processor use, memory use, number of users, bandwidth.
  • Implementations may include translating or transcoding content between different formats.
  • the switch may adjust transmission of packets to minimize the bandwidth consumed.
  • the switch may convert a proprietary video-encoding format to a standards-based encoding format.
  • Implementations also may include inserting one or more pieces of content in an existing stream of data units.
  • the switch may insert video stream advertisements in a transmission of other video content.
  • the inserted video content may reside on the switch, or it may be accessed from another device distinct from the switch that is transmitting the stream of data units.
  • Implementations of inserting content may include creating tags associate with certain pieces of content being replicated.
  • the switch may be replicating a television show with commercials tagged in the video content periodically. Upon receiving the tag, the switch may stop transmitting the television show and access a series of advertisements.
  • Implementations may include having the tag designate which advertisement to access.
  • the tag may indicate the device on which the advertisement is located.
  • Implementations of tags also may enable accessing more than one selection of advertisements. The selection of advertisements may depend on one or more variables including, but not limited to, terminal information and profiling, the state of the network and other factors.
  • implementations may include inserting content based on information maintained about the user profile and user state. For example, the switch may determine that a terminal is at a suitable point in a content piece to receive an inserted advertisement for users with a particular profile.
  • the source, network, on-demand-system, and terminal also may be distributed across different entities in the communication system, and may make use of one or more agents and/or proxies to perform certain functions.

Abstract

Streaming to a terminal (150) by using a duplicating switch (130) to receive a stream of data units, using the duplicating switch (130) to store content from the stream, using the duplicating switch (130) to generate a second stream that incorporates the content that was stored and address information corresponding to more than one terminal (150) whose addressing information was not part of the first stream, and using the duplicating switch (130) to make the second stream of data units available to two or more terminals(150).

Description

A DUPLICATING SWITCH FOR STREAMING DATA UNITS TO A TERMINAL
5 TECHNICAL FIELD
This application relates generally to streaming media.
BACKGROUND
The term multimedia streaming describes a process for allowing access to multimedia content from one or more sources. Increased usage of the Internet has -l o resulted in an increased demand for multimedia streaming.
SUMMARY
In one general aspect, data units may be streamed to a terminal by using a duplicating switch to receive a first stream of data units, store content from the first stream, generate second streams that incorporate the stored content, and make the 15 second streams available to the terminals.
Implementations may include one or more of the following features. For example, using the duplicating switch to store content may include storing content that is temporally related to the data units that are being generated. A location identifier may be used to indicate which portion of content is being generated into the 2o second streams. Location identifiers may be used to access the content time-shifted as two different streams. Using the duplicating switch to store content also may include storing more than one instance of the same portion of content, and storing additional instances of the stream as demand for the content increases.
Using the duplicating switch to store content may include storing content and 25 associated header information. Using the duplicating switch to store content also may include storing a checksum describing the content.
A second stream may be transmitted in response to receiving a request from a terminal or a service provider. Storing the content may include using location identifiers to track simultaneous transmissions of a single stored instance of a stream, and making streams available may include transmitting the different data units within the single stored instance to several requestors who have terminals receiving the stream that overlap but differ by a time differential. The duplicating switch may be a specialized device including hardware configured to perform one or more of receiving a first stream of data units, storing content from the first stream, generating second streams, and making the second streams available.
In one general aspect, performance of a network system may be improved by a switch that includes a communications interface to receive a stream of data units that each include a payload portion and an attribute portion, a buffer structured and arranged to store at least payload portions of the data units, a replicator structured and arranged to duplicate at least the payload portion of one or more of the data units, and a second communications interface structured and arranged to enable access to the stream of data units by two or more terminals. Implementations may include one or more of the following features. For example, the attribute portions of the data units may include IP packet information and/or one or more pieces of layer three information. The switch may include a processor that generates and associates an attribute portion with a payload portion that has been duplicated by the replicator. The replicator may be structured and arranged to duplicate the payload portion of the attribute portion, and the processor may be structured and arranged to change an IP header on one or more of the attribute portions duplicated by the replicator.
The processor may be structured and arranged to change an IP destination address, which may be, for example, the IP address corresponding to the terminal to which access to the payload portion is enabled using a second communications interface. The processor may be structured and arranged to specify destination information that differs among duplicated payload portions. The data unit may include, for example, audio, video, and streamed media content.
The switch may be structured and arranged to receive a request to receive a stream of data units from a terminal. The switch then may transmit the stream of data units to the requesting terminal. Implementations may include receiving the request from a device other than the terminals that will receive a stream of data units, and the switch may transmit a stream of data units to the requesting terminals or devices. The switch may enable access to the same stream of data units at two different temporal offsets. The switch may include a buffer with more than one pointer to enable access to the stream of data units at two different points and times. The buffer may store more than one instance of the stream of data units.
A source system may interface with the switch. The source system may be capable of duplicating data units and may transmit a stream of data units to the switch. Likewise, one or more terminals may interface with the switch and may receive duplicated data units from the switch.
Implementations may include a system capable of achieving the above features, including, for instance, a source system, a switch, a terminal, and a network between these components. Implementations also may include a sequence of steps performed on the switch, the source system and/or the terminal to achieve these features.
Other features and advantages will be apparent from the following description, including the drawings, and the claims.
DESCRIPTION OF DRAWINGS
Fig. 1 is a block diagram of a communications system capable of using a duplicating switch to generate a stream of data units.
Fig. 2A is a diagram of an exemplary data unit that may be transmitted in a communications system, such as that shown in Fig. 1.
Fig. 2B is a diagram illustrating one example of the structure of an attribute portion of the data unit of Fig. 2 A. Fig. 3 is an exemplary component diagram of a duplicating switch suitable for use in the communications system of Fig. 1.
Fig. 4A is an exemplary block diagram of a duplicating switch that uses memory (e.g., RAM ("Random Access Memory")) to store a media stream for subsequent playback. Fig. 4B is an exemplary block diagram of a duplicating switch that uses storage to store a media stream for subsequent playback.
Fig. 5 is a block diagram of a precoder for use in a duplicating switch.
Fig. 6 is a flowchart illustrating a method of transmitting data units in a communications system, such the communications system of Fig. 1.
Fig. 7 is a flowchart illustrating movement of an IP packet through the communications system of Fig. 1.
Fig. 8 is a flow chart of a procedure for processing a received data unit using a duplicating switch in a communications system, such as the communications system of Fig. 1.
Fig. 9 is a flow chart of a procedure for providing a stream of data units in a communications system, such as the communications system of in Fig. 1.
Fig. 10A illustrates a duplicating switch structured and arranged to store multiple instances of a stream of data units. Fig. 10B illustrates a duplicating switch structured and arranged to store multiple location identifiers.
Fig. 11 is a flow chart of a procedure for time-shifting content in a communications system, such as the communications system of Fig. 1.
Like reference symbols in the various drawings may indicate like elements. DETAILED DESCRIPTION
Generally, a duplicating switch receives a source stream of data units and stores content of the stream to enable subsequent generation of one or more streams that incorporate the content. Storing the content permits time sliifting of the content for subsequent transmission. For example, an on-demand system can be created to transmit stored content from a source stream in response to a user's request. The duplicating switch may use one or more pointers to enable simultaneous access to different portions of content from the same source stream and thus simultaneous generation of several different and offset streams from a single source stream. The generation of several different and offset streams from a single source stream. The duplicating switch may store multiple instances of content from a source stream to manage increased demand. The duplicating switch also may reduce overall storage requirements by storing only certain portions of the content from within a source stream.
For illustrative purposes, Figs. 1-11 describe a communications system for using a duplicating switch to stream data units to a terminal. For brevity, several elements in the figures described below are represented as monolithic entities. However, as would be understood by one skilled in the art, these elements each may include numerous interconnected computers and components designed to perform a set of specified operations and/or dedicated to a particular geographical region.
For illustrative purposes, Fig. 1 depicts a communications system 100 that implements techniques using a duplicating switch to stream data units to two or more terminals. Communications system 100 may be structured and arranged to include a source system 110, one or more terminals 150, and communication software and hardware enabling communications between source system 110 and terminals 150. More particularly, the communications system 100 typically includes the source system 110, a network 120, a duplicating switch 130, a network 140, and terminals 150. In actual implementations, the source system 110 generally transmits one or more data units in a stream of data units across network 120 to one or more duplicating switches 130, where content from the data units is stored, duplicated and transmitted to one or more terminals 150 through network 140 in an on-demand manner.
The source system 110 provides a stream of one or more data units across the network 120 to the duplicating switch 130. Typically, the source system 110 is structured and arranged to convert a media source (e.g., a video or audio feed) into data units for transmission across the network 120. The source system 110 may include a general-purpose computer having a central processor unit (CPU), and memory/storage devices that store data and various programs such as an operating system and one or more application programs. Other implementations of the source system 110 include a workstation, a server, a device, a special purpose device or component, other equipment or some combination thereof capable of responding to and executing instructions in a defined manner. The source system 110 also typically includes an input/output (I/O) device (e.g., video and audio input and conversion capability), and peripheral equipment such as a display communications card or device (e.g., a modem or a network adapter) for exchanging data with the network 120.
Implementations of the source system 110 also may include a media system that transmits one of more pieces of media content across a network 120. For example, a source system 110 may transmit signals formatted according to European Telecommunications Standards Institute (ETSI), Digital Video Broadcasting (DVB), Advanced Television Systems Committee (ATSC), or European Cable Communications Association (ECCA) standards across a network to a cable head end. In another implementation, a cable provider may transmit or direct video signals to a cable head end for distribution in a cable network.
A communications link 115 is used to communicate data between source system 110 and network 120. Communications link 115 may include wired or wireless modes of communication, such as a telephone line, a wireless network link, a cable network, or a direct connection. The network 120 typically includes hardware and/or software capable of enabling direct or indirect communications between the source system 110 and the duplicating switch 130. The network 120 may include a direct link between the source system 110 and the duplicating switch 130, or it may include one or more networks or subnetworks between them (not explicitly shown). Each network or subnetwork may include, for example, a wired or wireless data pathway capable of carrying and receiving data. Examples of network 120 include the Internet, the World Wide Web, WANs ("Wide Area Network"), LANs ("Local Area Networks"), analog or digital wired and wireless telephone networks (e.g., PSTN ("Public Switched Telephone Network"), ISDN ("Integrated Services Digital Network"), or xDSL ("any form of Digital Subscriber Loop")), radio, television, cable, satellite, and/or other delivery mechanisms for carrying data.
Generally, the duplicating switch 130 is structured and arranged to store a received stream of data units for time-shifted transmission to more than one terminal. Implementations of the duplicating switch 130 may store one or more streams of data units. For example, the duplicating switch 130 may be capable of receiving a stream of IP ("Internet Protocol") video and storing that video for subsequent transmission. Implementations of duplicating switch 130 also may include hardware or software capable of transmitting or receiving media feeds not resembling a stream of data units. For example, the duplicating switch may include a cable head end system that is capable of receiving or transmitting European Telecommunications Standards Institute (ETSI), Digital Video Broadcasting (DVB), Advanced Television Systems Committee (ATSC), or European Cable Communications Association (ECCA) for transmission on a cable distribution system. The cable head end system may receive a satellite broadcast feed, convert the feed into a format suitable for storage, and thereafter convert the feed back to a different format for time-shifted transmission.
The network 140 generally includes one or more of links between the duplicating switch 130 and the terminals 150. For example, the network 140 may include a direct physical link or a series of links connected by various pieces of network equipment. Generally, aspects of network 140 may resemble aspects of network 120. For example, network 120 and network 140 may share one or more hardware or software devices. In another example, networks 120 and 140 may use the same type of circuits and/or equipment.
The terminal 150 may include one or more devices capable of receiving the stream of data units transmitted by duplicating switch 130 through network 140. The terminal 150 may include a controller (not shown) that processes instructions received from or generated by a software application, a program, a piece of code, a device, a computer, a computer system, or a combination thereof, which independently or collectively direct operations of the terminal 150. The instructions may be embodied permanently or temporarily in any type of machine, component, equipment, storage medium, or propagated signal that is capable of being delivered to the terminal 150 or that may reside with the controller at the terminal 150. The terminal 150 may include a general-purpose computer (e.g., a personal computer) capable of responding to and executing instructions in a defined manner, a workstation, a laptop, a PDA ("Personal Digital Assistant"), a wireless phone, a component, other equipment, or some combination of these items that is capable of responding to and executing instructions.
For instance, in one implementation, the terminal 150 includes one or more information retrieval software applications (e.g., a browser, a mail application, an instant messaging client, an Internet service provider client, or an AOL TV ("America Online Television") or other integrated client) capable of receiving one or more data units. The information retrieval applications may run on a general purpose operating system and a hardware platform that includes a general purpose processor and specialized hardware for graphics, communications and/or other capabilities. In another implementation, terminal 150 may include a wireless telephone running a micro-browser application on a reduced operating system with general purpose and specialized hardware capable of operating in mobile environments.
In another implementation, the terminal 150 may include a simplified device capable of receiving a video signal not encapsulated in a traditional data unit. For example, the duplicating switch 130 may transmit a raw video feed formatted in accordance with specifications set forth by, e.g., European Telecommunications
Standards Institute (ETSI), Digital Video Broadcasting (DVB), Advanced Television Systems Committee (ATSC), or European Cable Communications Association (ECCA) for transmission directly to a cable tuner or television.
Referring to Fig. 2A, an example of a data unit 200A includes an attribute portion 210A and a payload 220A. The attribute portion 210A typically includes parameters that are modified as the data unit 200A moves through the communications system 100. For example, an JP data unit may change the layer two addressing information as the data unit moves through the network (e.g., network 140). The payload 220A typically includes information including content and/or parameters that are intended for communication from the source system and tend to change infrequently during transmission to preserve integrity of the data being transmitted. For example, the payload 220A may include audio or video content being transmitted to a personal computer (e.g., terminal 150).
Referring to Fig. 2B, the attribute portion 21 OB of the data unit 200B may include several distinct or intermingled fields, such as, for example, fields of an IP ("Internet Protocol") packet. More particularly, for example, attribute portion 210B may include a destination address 213B, a source address 215B, a port number 217B indicating the type of IP traffic (e.g., UDP ("User Data Protocol"), TCP ("Transmission Control Protocol"), ICMP ("Internet Control Message Protocol")), and other parameters at various portions as represented by 211 B and 219B . These fields may be arranged as shown or otherwise to accommodate various protocols. The payload in the LP data unit 200B is represented by 220B.
Fig. 3 illustrates a duplicating switch 300 structured and arranged to receive a stream, store content from the stream, generate data units from the stream, and transmit the generated data units as a stream. The duplicating switch 300 generally corresponds to the duplicating switch 130 in Fig. 1. The duplicating switch 300 generally includes a storage system 310 for storing the stream of data units, a high speed interconnect 320 between the various subsystems in the duplicating switch 300, a switching engine 330 for modifying and transmitting the stream of data units to two or more clients, a first communications interface 340 for receiving a stream of data units from a source system, and a second communications interface 350 for transmitting a stream of data units to two or more clients.
The storage system 310 enables the duplicating switch 300 to store at least the content portion of the data unit. The storage system 310 may be volatile or nonvolatile and may include memory (e.g., RAM) and/or storage (e.g., HDDS). Implementations of storage system 310 may include a hard disk drive or a more portable media, e.g., a compact disk, a tape drive, or an optical memory device. Implementations also may include combinations of memory and storage.
The high speed interconnect 320 generally refers to a device that connects a component of the duplicating switch 300 with other elements of the duplicating switch 300. Examples of the high speed interconnect 320 may include, but are not limited to, SCSI ("Small Computer Serial Interface"), Fibre Channel, UTOPIA ("Universal Test and Operations PHY interface for ATM ("Asynchronous Transfer Mode")), Infiniband, and other protocols and connection methods. The high speed interconnect may include physical, logical, timing and electrical connections and standards as well as protocols that enable these high speed interconnects to exchange data.
Generally, a switching engine 330 includes a device that performs network operations in hardware (e.g., a chip or part of chip). In some implementations, the switching engine 330 may include an ASIC ("Application Specific Integrated
Circuit") implementing network operations logic directly on a chip (e.g., logical gates fabricated on a silicon wafer then manufactured into a chip). For example, an ASIC chip may include a logical gate structure implemented in silicon and configured to receive a packet and filter based on examining an IP address. Implementations of the switching engine 330 may include using a FPGA
("Field Programmable Gate Array"). An FPGA generally is defined as a chip fabricated to allow third parties to implement a variety of logical designs (e.g., group of gates) on the chip. For example, one designer may load a design that replaces the IP address of received IP packets with a different IP address. Another example may include a design that performs segmentation and reassembly of IP packets as they are modified during transmission of the IP packet through different networks.
Implementations of the switching engine 330 may include using a network processor. A network processor generally is defined as a chip that, among other features, allows software to specify which network operations should be performed. One example of a network processor may include several interconnected RISC
("Reduced Instruction Set Computer") processors fabricated in a network processor chip. The network processor chip may implement on some of the RISC processors software that change an IP address of an IP packet. Other RISC processors in the network processor may implement software that controls which terminals receive an IP stream. The switching engine 330 may include a precoder (not shown) that is structured and arranged to receive a data unit, extract a content piece from the payload portion of the data unit, determine where the content piece will be stored, and store the content piece in a structured manner so that retrieval (e.g., playback) involves retrieving neighboring content pieces, packaging data units around the content pieces, and transmitting the data units to one or more requestors. This process will be described further with respect to Fig. 5.
The first communications interface 340 generally is structured and arranged to receive a stream of data units from a device such as the source system 110. Implementations of the communications interface may include a LAN or WAN interface with the ability to direct the data units to one or more locations in the duplicating switch 300, using, for example, the high speed interconnect 320. Implementations also may include other forms of transmitting a media signal, including ETSI, DVB, ATSC, or ECCA. The second communications interface 350 generally is structured and arranged to transmit a stream of data units from the memory system 310 to one or more devices that generally correspond with recipients, such as terminal 150 described with respect to Fig. 1. Implementations of the second communications interface 350 may include a LAN or WAN interface with the ability to direct the data units to one or more locations in the duplicating switch 300 using, for example, the high speed interconnect 320. Implementations also may include other forms or transmitting a media signal other than by IP networking. In addition, the second communications interface 350 is not limited to the same type of format as the first communications interface 340, though they may include the same format and even the same physical interface. For example, the first communications interface 340 may include a POS ("Packet-over-SONET") interface while the second communications interface 350 may include some form of Ethernet (e.g., 100-Base-T, Gigabit Ethernet).
Fig. 4A provides an exemplary block diagram of a duplicating switch (e.g., duplicating switch 130 in Fig. 1) with a memory implementation. The duplicating switch 400A includes a RAM array 420 A, a switching engine 43 OA and a network interface 440A.
The RAM array 420A may include one or more RAM memory banks structured and arranged to store one or more pieces of content. The RAM array 420A may store just a portion of the stream of data units. For example, a provider streaming out a movie may store one portion of the movie for several users to watch at one time. The RAM array 420A may store a window (e.g., a ten-minute window) of the movie that a user may use to time-shift the movie (e.g., pause, stop playing, or rewind) while staying current with the movie being broadcast. Within the RAM array 420A, there may be location identifiers to keep track or indicate which content piece to package and or transmit to a terminal. For example, an OSP ("Online Service Provider") may schedule a stream of data units to be transmitted to terminals at a certain time. In one example, the duplicating switch loads a portion of the stream of content pieces indicated by the location identifier to the RAM array 420 A. In this example, the duplicating switch may use one or more pointers to indicate which content pieces (e.g., frames) should be transmitted to which user. In another example, an on-demand system may load a larger portion of the content pieces to memory and may use a first pointer to transmit one stream of data units and a second pointer to transmit a second stream of data units simultaneously or otherwise.
The switching engine 430 A is structured and arranged to manage the content being stored in and retrieved from the RAM array 420A. Aspects of the switching engine 430A generally correspond to aspects of the switching engine 330 in Fig. 3. The switching engine 430A generally loads and retrieves content to/from the RAM array 420A. Examples of content that may be loaded and retrieved by switching engine 430A include content pieces without wrappers (e.g., OSI wrappers), such as datagrams having MPEG ("Motion Picture Experts Group") I, P, and B frames removed, video frames and differential checksum values that describe frame-to-frame changes and frames with one or more added wrappers (e.g., a layer 4 datagram). In one implementation, the switching engine 430A may implement a system of pointers designed to keep track of where in time or sequence number the terminals are with respect to the available stored content. The switching engine 43 OA may include a device, a program, a software controller, or another system or device in combination with the above. In another implementation, the switching engine 43 OA may manage overall system utilization and refuse subsequent requests for services or attempt to serve more than one terminal from one stream of data units.
The network interface 440A is designed to transmit and receive a stream of data units and generally corresponds to the first communications interface 440 and second communications interface 350 described in Fig. 3. Fig. 4B provides another exemplary block diagram of a duplicating switch
400B with a storage implementation. The duplicating switch 400B includes a stream platform 410B, a switching engine 430B, and a network interface 440B.
The stream platform 41 OB is structured and arranged to store content from within a stream of data units. The stream platform 41 OB includes a hard disk drive 412B (or a tape drive or other magnetic memory) and optical memory 416B . Generally, the stream platform 41 OB includes memory components with low bandwidth performance but high capacities. For example, storage may include solid- state-memory (not shown) that is slower than solid-state memory used in other applications. Typically, because of the greater storage available with less bandwidth, the stream platform 410B will store a larger portion of a stream (e.g., a movie), but will limit access to fewer simultaneous streams absent RAM or other cache interfaces.
Implementations of the storage platform 410B may include the disk storage 412B having a RAM interface to the switching engine 430B. For example, the duplicating switch may include a RAM bank and disk storage. Content pieces may be loaded to the disk storage such that the content pieces are retrieved in the order that they are transmitted. As the content pieces are being retrieved, they are loaded to the RAM bank. The higher throughput performance of the RAM banks may enable more terminals to access the same content piece. Terminals accessing the stream of data units may use a pointer to the content pieces in the RAM bank to keep track and load the data units they need in the stream of data units. The switching engine 43 OB is structured and arranged to manage the content being stored and retrieved in the stream platform 410B. The switching engine 430B generally corresponds to the switching engine 43 OA described with respect to Fig. 4A. The network interface 440B is designed to transmit and receive a stream of data units and generally corresponds to the first communications interface 340 and second communications interface 350 described with respect to Fig. 3.
The RAM-based and storage-based systems described with respect to Figs. 4A and 4B illustrate implementations that are designed to account for common limitations of the existing memory and storage systems (e.g., solid-state RAM offers high throughput but less storage while hard drives and optical memory offer higher storage but less throughput). However, implementations are not limited to those shown, nor are memory or storage devices necessarily subject to these constraints. For example, a disk drive may be used to implement a system managing multiple pointers and may offer higher bandwidth, while solid-state memory may offer higher density storage than the disk drive storage.
Fig. 5 shows an example of a duplicating switch 500 with precoder functionality. The duplicating switch 500 generally corresponds to the duplicating switch 130 of Fig. 1. The duplicating switch 500 includes a data unit interface 510, a content extraction system 520, a content arrangement system 540, and a content store 550.
The data unit interface 510 generally is structured and arranged to interface with a network to transmit and receive a data unit from the content store 540. Generally, the functionality of the data unit interface 510 corresponds to the functionality of the first communications interface 340 and the second communications interface 350 of Fig. 3. Data unit interface 510 also may be configured to segment and reassemble a data unit that has been separated during transmission, or to handle unconventional data units. For example, the data unit interface 510 may be configured to transmit/receive one or more media frames (e.g., frames formatted according to one of ETSI, DVB, ATSC, or ECCA). In one instance, if the duplicating switch 500 receives an analog signal, the data unit interface 510 may convert the signal to a recognized format that the frame or content piece may store.
The content extraction system 520 is structured and arranged to remove a data unit wrapper that is added around content for transmission. For example, the content extraction system 520 may remove one or more bits associated with OSI ("Open Systems Interconnect") information encapsulated along with the content for transmission. The content extraction system 520 also is capable of adding the wrapper when the data is retrieved from the content store 550 for subsequent transmission. For example, the content extraction system 520 may remove wrapper information when storing a stream of data units in the content store 550 and may add a different wrapper when transmitting the stream of data units from the content store 550.
The content arranger 540 is structured and arranged to direct storage and retrieval of the content information such that the content information may be retrieved in a determinate manner. For example, the content may be arranged so that the addressing information may be updated in predictable increments. In another example, the content may be arranged such that the difference between frames of content may be calculated by analyzing an associated checksum that then may be stored. Determining where a content piece may be stored and storing the content piece may include using hard disk drive constraints to store the content piece. For example, the content store 550 (e.g., hard drive) may store the content pieces such that the same "read" or data retrieval will retrieve related content pieces that are frequently transmitted in close proximity to one another (e.g., adjacent frames in a movie or adjacent I, P, and B MPEG frames).
Determining where a content piece may be stored and storing the content piece may include using solid-state storage (e.g., various forms of RAM) to store the content piece. For example, the solid-state storage may store all or a portion of the stream in an array of RAM memory. If a portion of the RAM memory is used to store the content piece, the RAM may load a certain window of content for transmission to one or more terminals. In some implementations, the duplicating switch may store more than one instance of the stream of data units in the array of RAM.
The content store 550 is structured and arranged to store content pieces or frames. As described above with respect to the content arranger 540, the content is generally structured and arranged to be retrieved in a manner enabling transmission of related content pieces to one or more terminals. The content store 550 generally corresponds to the memory system 310 of Fig. 3, the RAM array 420A of Fig. 4A, and the storage platform 410B of Fig. 4B.
Fig. 6 illustrates a method of transmitting a flow of data units in a communications system 600. Communications system 600 generally includes a source system 610, a switch 620, and terminals 650 and 670. Generally, source system 610 corresponds to the source system 110 in Fig. 1, switch 620 corresponds to the switch 130 in Fig. 1, and terminals 650 and 670 correspond to components of the terminal 150 in Fig. 1. Initially, source system 610 generates or enables access to a stream of data units in response to a request or otherwise (step 613). When the stream is derived from an analog input (e.g., analog audio or analog video), this may include converting the input into a stream of data units. Even if the input already is in digital form, enabling access to a stream of data units may involve reformatting the input into an appropriately formatted stream of data units. The stream of data units may include a variety of media streams (e.g., video, audio, images, text, and chat). Typically, the data units are IP (Internet Protocol) packets for transmission across the Internet. The source system 610 then transmits the generated stream of data units to one or more switches 620 (e.g., across network 120) (step 616). When the switch 620 receives the data units from the source system 610 (step
622), it typically buffers and duplicates at least the payload portions of the data units (step 624). In some implementations, data unit attributes may be removed before buffering the payload. For example, for communications over the Internet, switch 620 may remove the IP header information and store only the payload and/or information represented by the payload. As the data unit is being transmitted to terminals, switch 620 modifies the existing header or adds a new IP header to the payload. The switch may use destination information corresponding to the IP address of the destination terminals (e.g., terminals 650 and 670) or an intermediary between switch 620 and the destination terminals as the destination information. With the newly acquired destination information, the switch 620 transmits the JP packets across the network (e.g., network 140 in Fig. 1) to the appropriate terminal, for example, terminal 670 in Fig. 6 (step 626).
The terminal 670 receives the stream of data units sent by the switch 620 across the network (step 672) and converts the data units into a perceivable output, manipulates the data units, or forwards the data units to another device. For example, a terminal 670 may receive a stream of IP data units containing video content and display or otherwise manipulate the video content on a personal computer or other device.
In some implementations, terminals may be capable of requesting a stream. For example, in Fig. 6, although terminal 670 is shown as automatically receiving a stream of data units (step 672), terminal 650 may be capable of generating a request to receive the stream of data units (step 652). When the switch 620 receives the request (step 628), it may transmit one or more streams of data units to terminal 650 (step 630). Terminal 650 then receives the transmitted streams of data units (step 654). In some implementations, the switch 620 and the terminals 650 and 660 may be required to communicate periodically to maintain streaming. For example, a terminal 650 may send a "keep stream alive" message every 10 seconds to indicate that the terminal 650 wishes to receive a stream during its transmission.
While receiving a stream (step 654), the terminal 650 may request another stream (step 652) or may request termination of transmission by transmitting a request to stop sending the stream of data units (step 656). Upon receipt of a termination request or upon detection of the conclusion of the stream (step 632), the switch 620 stops transmitting the stream of data units (step 634).
Terminal 650 may elect to resume transmission of the stream of data units and may communicate this election to switch 620 (step 658). When the switch 620 receives a resume instruction (step 636), the switch resumes transmission of the stream (step 638) for receipt by the terminal 650 (step 660).
In some implementations, when the switch 620 receives a stream of IP data units from source system 610, the switch 620 may duplicate the payload portion of the data unit, and may modify or replace the IP destination address of the IP data units to specify the IP addresses of one or more conference terminals.
Typically, the switch 620 may duplicate any particular payload or all payloads more than once such that the payload of a received data unit is transmitted as the payload in several or all data units generated by the switch 620. Moreover, the switch 620 may receive a data unit and transmit the payload as two or more data units.
Conversely, the switch 620 may receive and combine more than one data unit and transmit the combined payloads of the multiple data units in a single data unit, or the switch 620 may divide the payload of a received data unit and combine the divided portions with the payloads of two or more other received data units. As will be described with respect to Fig. 7, since the payloads are buffered, the switch 620 may produce several instantiations of the buffered payload, simultaneously, with or without offset, and may transmit those different instantiations to the same or different terminals as needed. These instantiations may be streamed to different time offsets so that terminal 650 may be listening to a stream of data units at a different point than terminal 670. For example, terminal 650 may be receiving the same song on an Internet radio station as terminal 670, but terminal 650 may be receiving data units that correspond to the song thirty (30) seconds later in time.
Fig. 7 illustrates one example of the flow of IP data units from a source system 710 to terminals 770, 780 and 790. The source system 710 with an IP address of X.1.1.1 transmits an IP packet 720 to the switch 730 with a destination address of Y 1.1.1. The IP packet 720 includes the switch address as a destination address 724 and the source system address as a source address 726. The IP packet 720 also may include other header information 722 and a payload 728.
The switch 730, with a source address of Y.1.1.1, duplicates at least the payload 728 of the JP packet 720 and transmits an IP data unit 740 to terminal 770 with an address of Z.1.1.1. The IP data unit 740 includes the source IP address 746 of the switch 730 with a destination address 744 of terminal 770. The IP data unit 740 may include additional header information 742 and a payload 748. Similar activities take place to generate IP data units 750 and 760 for terminals 780 and 790.
Fig. 8 illustrates a procedure 800 for storing and transmitting a data unit using a duplicating switch. In general, the procedure 800 may be performed using one of the duplicating switches described with respect to Figs. 1-7.
Initially, the duplicating switch receives a data unit (step 805) and selects the content piece from the data unit (step 810). Typically, selecting the content piece of the data unit involves identifying fields or portions of the data unit that correspond to the content, and removing some or all aspects not related to the content. For example, a duplicating switch may remove one or more layers of an OSI ("Open Systems Interconnection") header and store the remainder of the data unit as the content piece. In another example, selecting the content may include creating or modifying location identifiers to identify which portion of the data unit should be stored when the data unit is loaded to memory.
Selecting the content may include enabling one or more portions of other aspects of the data unit to be retained with the content. For example, one or more fields of the OSI header may be preserved and stored as content.
Implementations may include using a pre-coder to modify or adjust the content for storage. For example, the pre-coder may compress the content so that less bandwidth is consumed during transmission. In another example, the pre-coder may calculate a checksum or shortcut describing intra-content differences. This checksum or shortcut may be stored in place of storing some of the content pieces.
The duplicating switch determines the location in the memory system in which to store the content piece (step 820). Typically, the location for storage of the content piece is selected so that related content pieces may be retrieved in related operations. Examples of related content may include sequential frames in a video and/or content in a time slice. The duplicating switch then stores the content piece in the determined location (step 830). At some later time, the duplicating switch receives a request for a content piece (step 840). Receiving a request for a content piece may include having a user (e.g., terminal 150 in Fig. 1) request a video stream for display on the user's home computer. Implementations also may include having other devices request the content piece. For example, a cable modem acting as a set top box may request a content piece for display to a television.
Implementations also may include having a request originate from a source other than the intended destination. For example, a cable system administrator may generate a request for the content piece on behalf of one or more subscribers. The duplicating switch 130 determines which content piece has been requested
(step 850). The requestor may designate a content piece to send. For example, a terminal may keep track of which content has been received, and may generate a request for one or more pieces of content (e.g., frame number 100 is missing). Implementations also may include having the duplicating switch track which content piece is required. For example, a duplicating switch may attempt to transmit the same content piece to several users.
The duplicating switch 130 determines where the content piece is located (step 860). To do so, the duplicating switch may use the location identifiers described with respect to Figs. 3 and 4. Other implementations may employ a file and/or an archiving system maintained to manage access to content pieces.
The duplicating switch 130 retrieves the content piece (step 870). The duplicating switch may do so by reading a memory location specified by a location identifier. Other implementations may include retrieving multiple pieces of content information (e.g., reading a sector on a disk). The duplicating switch 130 packages the content piece in a data unit (step
880). For example, the duplicating switch may add one or more layers of OSI information (e.g., addressing information). Implementations where one or more aspects of the data unit other than content are stored with the content piece may include modifying one or more parameters in those fields. For example, if an Internet Protocol packet is stored, the destination address may be modified to the addresses of requesting users.
Finally, the duplicating switch transmits the data unit to one or more terminals (step 890). The data unit may be transmitted in formats other than IP addressing. For example, transmitting the data unit may include transmitting an on-demand channel over a network.
The function of a communications system 900 will now be described with respect to Fig. 9. Communications system 900 generally includes a source system 902, a manager 904, a duplicating switch 906, and terminals 908 and 910. In general, the source system 902 corresponds to the source system 110 of Fig. 1, duplicating switch 906 corresponds to duplicating switch 130 in Fig. 1, and terminals 908 and 910 correspond to terminals 150 of Fig. 1. The manager 904 may include a cable system operator, an OSP, a content provider, or an entity capable of providing instructions or direction to the duplicating switch 906. As shown, the source system 902 generates a stream of data units (step 913).
The source system 902 transmits the stream of data units to the duplicating switch 906 (step 916).
The duplicating switch 906 receives the stream of data units (step 925). The duplicating switch 906 then stores at least the content pieces from the stream of data units (step 927).
The stream may be transmitted in a variety of ways. In some implementations, the manager 904 waits for a condition to occur (step 918). For example, the manager may be a scheduler that is programmed to direct a duplicating switch "broadcast." When the condition occurs (step 920), the manager 904 transmits a request to the duplicating switch 906 to transmit the stream of data units (step 923).
Alternatively, a terminal 908 may generate a request for a stream (step 933). For example, the terminal 908 may generate a request to view a particular video stream. The duplicating switch 906 receives the request (step 930). In an implementation generally corresponding to the system described with respect to Fig. 4A, the duplicating switch 906 may load one or more content pieces into fast memory (e.g., RAM) (step 931). For example, the duplicating switch 906 may determine that there is inadequate bandwidth to the existing storage of the content and may load frequently-accessed content pieces to the faster memory to increase capacity.
Regardless of the mechanism used to indicate when to transmit the stream of data umts to a terminal, the duplicating switch 906 may transmit the stream of data units to two or more terminals 908, 910 (step 936). In some implementations, a terminal receives a stream that has been broadcast or otherwise automatically transmitted to the stream recipient without requesting the stream of data units. In either case, terminals 908 and 910 receive the stream of data units (step 940 and 940 A). Depending on the implementation, a different "stack" of content pieces may be loaded into memory to support terminal 910. In some implementations, the terminal 908 may generate and transmit a pause message (step 945). For example, a terminal may wish to "pause" a video on-demand stream and return to the stream at a later point. When the duplicating switch 906 receives the pause message (step 950), the duplicating switch 906 pauses transmitting to the terminal 908 (step 955). The duplicating switch 906 may still transmit a stream of data units to terminal 910 (not shown). The pause message may be implemented in a variety of ways. For example, terminal 908 may keep track of which data units have been received and resume where it left off by generating and transmitting a resume message (step 960). Another example may include having the terminal 908 transmit a stop message and the duplicating switch 906 keep track of where to resume when the transmit resume message is received (step 960).
If and when the duplicating switch 906 receives the resume message (step 965), the duplicating switch 906 transmits the stream of data units 970 to the terminal (step 970). The terminal 908 then receives the stream of data units (step 975).
Fig. 10A depicts a duplicating switch 1000A structured and arranged to store multiple instances of the stream of data units. The duplicating switch 1000 A transmits two streams of data units, stream A and stream A1. Stream A occupies memory storage 1010A in the memory bank, while stream A1 occupies memory storage 1020A in the memory bank. In one implementation, a first pointer 1015 A to the memory storage 1010A indicates which content piece, relative to other content pieces, should be encapsulated as a data unit and transmitted to a terminal requesting Stream A. As mentioned previously, implementations may include storing a portion of the content pieces in the memory bank. For example, if problematic network conditions prevent a terminal from receiving some of the stream of data units, the terminal may not receive some of the content pieces and may experience gaps in receiving the stream of data units (e.g., missing time in a movie).
A second pointer 1025 A to the memory storage 1020A indicates which portions of content pieces encapsulated in a stream of data units are being transmitted to several terminals. One or more terminals wishing to receive one or more data units in the stream of data units receive the content piece corresponding to the second pointer 1025 A, which is continuously advanced to the next content piece. In some implementations, the second pointer 1025 A may advance several content pieces and encapsulate more than one content piece in a data unit.
Fig. 10B depicts a duplicating switch 1000B structured and arranged to store multiple location identifiers. In this example, duplicating switch 1000B includes five content pieces in stream A: Al 1010, A2 1020, A3 1030, A4 1040, and A5 1050.
Duplicating switch 1000B also includes an area of memory allocated for an expected content piece A6 1060.
In one example, the duplicating switch 1000B enables each of terminals T, U and V to receive its own stream of data units. Each of the terminals manages a location identifier (e.g., pointer) to direct the duplicating switch to select the appropriate content piece to be transmitted. For example, terminals T, U, and V may begin by requesting content piece Al 1010 simultaneously.
After some content pieces have been transmitted, and as shown in Fig. 10B, the location identifier 1025 for terminal T may be referencing content piece A2 1020, while the location identifier 1042 and the location identifier 1044 for terminals U and V are referencing content piece A4 1040 that corresponds to a different time-shift than content piece A2. This offset may have occurred because, for example, terminal T paused receipt of the stream of data units, and is now receiving content pieces that are delayed relative to those received by terminals U and V.
5 In another example, duplicating switch 1000B includes five content pieces in stream B: Bl 1070, B2 1071, B3 1072, B4 1073, and B5 1080. Duplicating switch 1000B also includes an area of memory allocated for an expected content piece B6 1090. In one implementation, stream B may be part of the same stream of data units as stream A, but may correspond to a different portion of the stream of data units. For o example, stream A may be a "video" stream 40 minutes into a video stream while stream B is five minutes into the same video stream. In another example, stream B may be identical to stream A but was added to implement better system performance. In yet another example, stream A and stream B may represent completely different video streams (e.g., two different television channels). 5 Fig. 11 illustrates a procedure 1100 for implementing a "Pause" function on a duplicating switch, such as the duplicating switches described with respect to Figs 1- 10. Initially, the duplicating switch receives a stream of data units (step 1110) and stores content pieces from the stream of data units (step 1120). With the content stored and ready for transmission, the duplicating switch waits to receive a request to 0 play the stream of data units (step 1130). Though the duplicating switch may wait for a request-to-play message, in some implementations, the duplicating switch may begin to transmit (e.g., play) upon receipt of the stream. In this configuration, the content might only be stored when a user requests pausing of the stream.
In an optional implementation, the duplicating switch may load the stream 5 (content pieces) to fast memory (step 1140). This generally corresponds to loading the stream to fast memory as described with respect to Fig. 6.
The duplicating switch transmits the stream of data units (step 1150). While transmitting the stream, the duplicating switch 130 may receive a pause request (step 1160). If the duplicating switch 130 receives a pause request, the duplicating switch 0 stops transmitting the stream of data units to the terminal (step 1165). With the stream of data units paused, the duplicating switch 130 may wait to receive a play request (step 1170).
If the play request is received, the duplicating switch 130 continues to transmit the stream of data units where the terminal left off (step 1180). If not, the duplicating switch 130 waits for the resume request. When the terminal resumes receiving the stream of data units, the duplicating switch checks for a new pause request (step 1160).
If the duplicating switch 130 does not receive a pause request, the duplicating switch may receive a stop request or reach the end of the stream (step 1185). If the stop request is received or the end of the stream of data units is reached, the duplicating switch ceases transmitting (step 1190). If not, the duplicating switch 130 continues transmitting and returns to waiting for a pause request (step 1160).
Ceasing transmitting may include automatically selecting another stream of data units to be transmitted. For example, the duplicating switch 130 may select another video to transmit when one video ends.
An "instant replay" or rewind feature may be created using a similar process, except instead of resuming transmission of a stream where the stream was produced, the stream is retransmitted time-shifted to an earlier moment in the stream (e.g., 30 seconds for a commercial, 15 seconds for a sporting event). For example, the duplicating switch may load content from memory representing the stream 30 seconds earlier, and may transmit that content beginning at the earlier location (continuing on from that point).
Other implementations are within the scope of the following claims. In particular, in some implementations, the terminal includes a set top tuner set to receive an analog signal. Also, the location identifiers described in Fig. 11 may be maintained on the client, or on a separate server or device to indicate which content piece the terminals may be receiving.
Implementations may include a manager requesting transmission of the stream to the terminals. The manager may include a network operator, a managing server, a workstation, or a scheduling agent. For example, a managing workstation may request transmission of the stream of data units to terminals beginning at a certain time.
Implementations also may include storing more than one instance in the stream of data units in the buffer. For example, the switch may store more than one copy of the stream to accommodate large numbers of requests. In another example, the stream may buffer the same stream of data units at two different spots. Implementations also may include having the switch maintain state information on one or more requesting users. For example, the switch may establish or assist other devices in establishing a profile for the terminal that receives the stream of data units. In this manner, the switch leverages information available to network processors and devices, which may not ordinarily be accessible to servers, in establishing profiles.
Still further, implementations may include monitoring switch access and usage levels. For example, the switch may determine that the switch is operating at 85% of maximum performance in a given metric (e.g., processor use, memory use, number of users, bandwidth).
Implementations may include translating or transcoding content between different formats. For example, the switch may adjust transmission of packets to minimize the bandwidth consumed. In another example, the switch may convert a proprietary video-encoding format to a standards-based encoding format.
Implementations also may include inserting one or more pieces of content in an existing stream of data units. For example, the switch may insert video stream advertisements in a transmission of other video content. The inserted video content may reside on the switch, or it may be accessed from another device distinct from the switch that is transmitting the stream of data units. Implementations of inserting content may include creating tags associate with certain pieces of content being replicated. For example, the switch may be replicating a television show with commercials tagged in the video content periodically. Upon receiving the tag, the switch may stop transmitting the television show and access a series of advertisements. Implementations may include having the tag designate which advertisement to access. For example, the tag may indicate the device on which the advertisement is located. Implementations of tags also may enable accessing more than one selection of advertisements. The selection of advertisements may depend on one or more variables including, but not limited to, terminal information and profiling, the state of the network and other factors.
In addition, implementations may include inserting content based on information maintained about the user profile and user state. For example, the switch may determine that a terminal is at a suitable point in a content piece to receive an inserted advertisement for users with a particular profile. The source, network, on-demand-system, and terminal also may be distributed across different entities in the communication system, and may make use of one or more agents and/or proxies to perform certain functions.

Claims

WHAT IS CLAIMED IS:
1. A method of streaming data units to terminals, the method comprising: using a duplicating switch to receive a first stream of data units; using the duplicating switch to store content from the first stream; using the duplicating switch to generate second streams that incorporate the stored content for use by more terminals having addressing information that was not part of the first stream; and using the duplicating switch to make the second streams available to the terminals, wherein the duplicating switch is configured to duplicate one or more portions of the first stream.
2. The method of claim 1 wherein using the duplicating switch to store content includes storing content that is temporally related to the data units that are being generated.
3. The method of claim 1 further comprising using a location identifier to indicate which portion of content is being generated into the second streams.
4. The method of claim 3 further comprising using location identifiers to access the content time-shifted as two different streams.
5. The method of claim 1 wherein using the duplicating switch to store content includes storing more than one instance of the same portion of content.
6. The method of claim 5 wherein using the duplicating switch to store content includes storing additional instances of the stream as demand for the content increases.
7. The method of claim 1 wherein using the duplicating switch to store content includes storing content and associated header information.
8. The method of claim 1 wherein using the duplicating switch to store content includes storing a checksum describing the content.
9. The method of claim 1 wherein at least one of the second streams is transmitted in response to receiving a request from a terminal.
10. The method of claim 1 wherein the second stream is transmitted in response to receiving a request from a service provider.
11. The method of claim 1 wherein: storing the content includes using location identifiers to track simultaneous transmissions of a single stored instance of a stream, and transmitting includes transmitting the different data units within the single stored instance to several requestors who have terminals receiving the stream that overlap but differ by a time differential.
12. The method of claim 1 wherein the duplicating switch is a specialized device including hardware configured to perform one or more of receiving a first stream of data units, storing content from the first stream, generating second streams, and making the second streams available.
13. A duplicating switch comprising: means for receiving a first stream of data units; means for storing content from the first stream; generating means for generating second streams that incorporate the stored content for use by more terminals having addressing information that was not part of the first stream, the generating means being configured to duplicate one or more portions of the first stream; and means for making the second streams available to the terminals.
14. The duplicating switch of claim 13 wherein means for storing content includes means for storing content that is temporally related to the data units that are being generated.
15. The duplicating switch of claim 14 further comprising means for using a location identifier to indicate which portion of content is being generated into the second streams.
16. The duplicating switch of claim 15 further comprising means for using location identifiers to access the content time-shifted as two different streams.
17. The duplicating switch of claim 13 wherein means for storing content includes means for storing more than one instance of the same portion of content.
18. The duplicating switch of claim 17 wherein means for storing content includes means for storing additional instances of the stream as demand for the content increases.
19. The duplicating switch of claim 13 wherein means for storing content includes means for storing content and associated header information.
20. The duplicating switch of claim 13 wherein means for storing content includes means for storing a checksum describing the content.
21. The duplicating switch of claim 13 wherein the means for making the second streams available include means for transmitting at least one of the second streams in response to receiving a request from a terminal.
22. The duplicating switch of claim 13 wherein the second stream is transmitted by the means for making it available in response to receiving a request from a service provider.
23. The duplicating switch of claim 13 wherein: means for storing the content includes means for using location identifiers to track simultaneous transmissions of a single stored instance of a stream, and means for transmitting includes means for transmitting the different data units within the single stored instance to several requestors who have terminals receiving the stream that overlap but differ by a time differential.
24. The duplicating switch of claim 13 wherein the generating means include a specialized device including hardware configured to perform one or more of receiving a first stream of data units, storing content from the first stream, generating second streams, and making the second streams available.
25. A duplicating switch comprising: a first communications interface structured and arranged to receive a first stream of data units; a storage processor structured and arranged to store content from the first stream; a switching processor structured and arranged to generate second streams that incorporate the stored content for use by more terminals having addressing information that was not part of the first stream, the switching processor being configured to duplicate one or more portions of the first stream; and a second communications interface structured and arranged to make the second streams available to the terminals.
26. The duplicating switch of claim 25 wherein the storage processor is structured and arranged to store content that is temporally related to the data units that are being generated.
27. The duplicating switch of claim 26 further comprising a first memory processor structured and arranged to use a location identifier to indicate which portion of content is being generated into the second streams.
28. The duplicating switch of claim 27 further comprising a second memory processor structured and arranged to use location identifiers to access the content time-shifted as two different streams.
29. The duplicating switch of claim 25 wherein storage processor is structured and arranged to store more than one instance of the same portion of content.
30. The duplicating switch of claim 29 wherein the storage processor is structured and arranged to store additional instances of the stream as demand for the content increases.
31. The duplicating switch of claim 25 wherein the storage processor is structured and arranged to store content and associated header information.
32. The duplicating switch of claim 31 wherein the storage processor is structured and arranged to store a checksum describing the content.
33. The duplicating switch of claim 25 wherein the second communications interface is structured and arranged to make at least one of the second streams available in response to receiving a request from a terminal.
34. The duplicating switch of claim 25 wherein the second stream is transmitted by the second communications interface in response to receiving a request from a service provider.
35. The duplicating switch of claim 25 wherein: the storage processor is structured and arranged to use location identifiers to track simultaneous transmissions of a single stored instance of a stream, and the second communications interface is structured and arranged to transmit the different data units within the single stored instance to several requestors who have terminals receiving the stream that overlap but differ by a time differential.
36. The duplicating switch of claim 25 wherein the switching processor is a specialized device including hardware configured to perform one or more of receiving a first stream of data units, storing content from the first stream, generating second streams, and making the second streams available.
37. A method of transmitting packets, the method comprising: using a switch to receive a stream of data units including a payload portion and an attribute portion; using a switch to duplicate at least the payload portion of a data unit within the stream of data units; and using a switch to enable access to the duplicated payload portion of the data unit by two or more terminals.
38. The method of claim 37 wherein the data unit includes an Internet Protocol packet.
39. The method of claim 38 wherein the attribute portion of the data unit includes an Internet Protocol header.
40. The method of claim 37 wherein the attribute portion of the data unit specifies one or more pieces of layer three information.
41. The method of claim 37 further comprising using the switch to generate and associate different attribute portions with duplicates of the payload
5 portion generated by the switch.
42. The method of claim 37 wherein using the switch to duplicate at least the payload portion includes duplicating only the payload portion of the data unit.
43. The method of claim 41 wherein using the switch to associate different attribute portions with the data unit and duplicates of the payload portion includes o specifying destination information that differs among the duplicates of the payload portion.
44. The method of claim 37 wherein using the switch to duplicate includes using the switch to duplicate the payload portion and the attribute portion.
45. The method of claim 41 wherein using the switch to generate and 5 associate different attribute portions includes changing an IP destination address.
46. The method of claim 45 wherein changing the IP destination address includes changing the IP destination address to an IP address corresponding to one or more terminals to which access to the payload portion will be enabled.
47. The method of claim 37 wherein using the data unit includes audio 0 content.
48. The method of claim 37 wherein the data unit includes video content.
49. The method of claim 37 wherein the data unit includes streamed media.
50. The method of claim 37 further comprising receiving a request to 5 receive the stream of data units from at least a requesting one of the two or more terminals.
51. The method of claim 50 wherein using the switch to enable access to the payload portions of the data units includes enabling access to the at least one requesting terminal in response to the request. 0
52. The method of claim 50 wherein the request is received from a device other than the terminals.
53. A switch comprising : a first communications interface that is structured and arranged to receive a stream of one or more data units that each include a payload portion and an attribute portion; a buffer structured and arranged to store at least the payload portions of the data units included in the received stream; a replicator structured and arranged to duplicate at least the payload portions of one or more of the data units; and a second communications interface structured and arranged to enable access by two or more terminals to the payload portions that are duplicated by the replicator.
54. The switch of claim 53 wherein a data unit includes an Internet Protocol packet.
55. The switch of claim 53 wherein the attribute portion of a data unit specifies one or more pieces of layer three information.
56. The switch of claim 53 further comprising a processor structured and arranged to generate and associate different attribute portions with the payload portions that are duplicated by the replicator.
57. The switch of claim 56 wherein the processor is structured and arranged to specify destination information that differs among different duplicated versions of a payload portion.
58. The switch of claim 56 wherein the processor is structured and arranged to change an IP destination address.
59. The switch of claim 56 wherein the processor is structured and arranged to change the IP destination address to an IP address corresponding to the terminal to which access to the payload portion will be enabled using the second communications interface.
60. The switch of claim 53 wherein the replicator is structured and arranged to duplicate the payload portion and the attribute portion.
61. The switch of claim 53 wherein the data unit includes audio content.
62. The switch of claim 53 wherein the data unit includes video content.
63. The switch of claim 53 wherein the data unit includes streamed media.
64. The switch of claim 53 further comprising a third communications interface structured and arranged to receive a request to receive the stream of data
5 units from at least a requesting one of the two or more terminals.
65. The switch of claim 64 wherein the second communications interface is structured and arranged to enable access by the at least one requesting terminal to the payload portions in response to the request.
66. The switch of claim 64 wherein the requestor includes a device other o than the terminals.
67. The switch of claim 53 wherein the second communications interface transmits the duplicated stream of data units to two different terminals.
68. The switch of claim 67 wherein the two different terminals receive the stream of data umts at two different temporal offsets. 5
69. The switch of claim 53 wherein the replicator includes more than one pointer to contents of the buffer to enable a first terminal to receive the stream of data units at a different point in the stream of data units than a second terminal.
70. The switch of claim 53 wherein the buffer includes more than one instance of the stream of data units. 0
71. The switch of claim 53 wherein the replicator is structured and arranged to duplicate only the payload portion of the data unit.
72. A method of receiving a duplicated stream of data units, the method including: interfacing with a network including a switch capable of duplicating the 5 stream of data units and making the duplicated stream of data units accessible to more than one terminal; and receiving the stream of data units from the switch, wherein the data units within the stream each include a payload portion that has been duplicated by the switch and an attribute portion. 0
73. The method of claim 72 further comprising generating perceivable output based on the stream of data umts.
74. The method of claim 72 wherein the attribute portion of the data unit includes an DP header.
75. The method of claim 72 wherein the attribute portion of the data unit specifies one or more pieces of layer three information.
76. The method of claim 72 wherein the data unit includes audio content.
77. The method of claim 72 wherein the data unit includes video content.
78. The method of claim 72 wherein the data unit includes streamed media.
79. The method of claim 72 further comprising generating a request to receive the stream of data units.
80. The method of claim 79 wherein the payload portions of the data units are received in response to the request.
81. A method of distributing data units to terminals, the method comprising: interfacing with a network including one or more switches capable of duplicating at least a payload portion of a data unit within a stream of data units including an attribute portion and the payload portion; and transmitting the stream of data units to the switches for duplication of at least the payload portion of the data unit within the stream for transmission to two or more terminals.
82. The method of claim 81 wherein the data unit includes audio content.
83. The method of claim 81 wherein the data unit includes video content.
84. The method of claim 81 wherein the data unit includes streamed media.
85. The method of claim 81 wherein the attribute portion of the data unit includes an IP header.
86. The method of claim 81 wherein the attribute portion of the data unit specifies one or more pieces of layer three information.
87. A switch comprising: first communications interface means for receiving a stream of one or more data units including a payload portion and an attribute portion; buffer means for storing at least the payload portion of the data units included in the received streams; replicator means for duplicating at least the payload portion of one or more of the data units; and second communications interface means for enabling access by two or more terminals to the payload portions that are duplicated by the replicator.
88. A system comprising: a source system structured and arranged to enable access to a stream of data units; a switch structured and arranged to receive a stream of data units from a source system, to duplicate at least a payload portion of the data units in the stream, and to transmit payload portions duplicated to two or more terminals; and one or more terminals structured and arranged to receive a stream of data units that have been duplicated by the switch.
EP02734066A 2001-04-30 2002-04-30 A duplicating switch for streaming data units to a terminal Withdrawn EP1384129A4 (en)

Applications Claiming Priority (7)

Application Number Priority Date Filing Date Title
US28696401P 2001-04-30 2001-04-30
US286964P 2001-04-30
US09/893,692 US7266609B2 (en) 2001-04-30 2001-06-29 Generating multiple data streams from a single data source
US893692 2001-06-29
US34318301P 2001-12-31 2001-12-31
US343183P 2001-12-31
PCT/US2002/013362 WO2002088885A2 (en) 2001-04-30 2002-04-30 A duplicating switch for streaming data units to a terminal

Publications (2)

Publication Number Publication Date
EP1384129A2 true EP1384129A2 (en) 2004-01-28
EP1384129A4 EP1384129A4 (en) 2006-08-30

Family

ID=27403667

Family Applications (1)

Application Number Title Priority Date Filing Date
EP02734066A Withdrawn EP1384129A4 (en) 2001-04-30 2002-04-30 A duplicating switch for streaming data units to a terminal

Country Status (6)

Country Link
EP (1) EP1384129A4 (en)
JP (1) JP2004533755A (en)
CN (1) CN100449509C (en)
AU (1) AU2002305256B2 (en)
CA (1) CA2445798A1 (en)
WO (1) WO2002088885A2 (en)

Families Citing this family (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2005064848A1 (en) * 2003-12-24 2005-07-14 Telefonaktiebolaget Lm Ericsson (Publ) Distributing a data stream in a telecommunications network
US8005199B2 (en) * 2006-08-18 2011-08-23 Avaya Inc. Intelligent media stream recovery
FR2906954B1 (en) * 2006-10-10 2009-02-27 Tdf Sa METHOD FOR TIME DELAYING DIGITAL CONTENT STREAMS, DEVICE, AND CORRESPONDING COMPUTER PROGRAM PRODUCT.
US8352540B2 (en) 2008-03-06 2013-01-08 International Business Machines Corporation Distinguishing data streams to enhance data storage efficiency
JP4821843B2 (en) * 2008-12-16 2011-11-24 コニカミノルタビジネステクノロジーズ株式会社 DATA DISTRIBUTION SYSTEM, DATA DISTRIBUTION DEVICE, DATA DISTRIBUTION METHOD, AND DATA DISTRIBUTION PROGRAM
US10484487B2 (en) 2015-04-01 2019-11-19 At&T Mobility Ii Llc System and method for predictive delivery of prioritized content

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5583561A (en) * 1994-06-07 1996-12-10 Unisys Corporation Multi-cast digital video data server using synchronization groups
US5815662A (en) * 1995-08-15 1998-09-29 Ong; Lance Predictive memory caching for media-on-demand systems
US5838912A (en) * 1996-09-04 1998-11-17 International Business Machines Corporation Distribution of digitally encoded presentations

Family Cites Families (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5867502A (en) * 1996-02-15 1999-02-02 Bellsouth Corporation Method and system for interfacing an ATM switch and an optical network wherein bandwidth is maximized and non-local data streams are grouped into destination groups
US5883891A (en) * 1996-04-30 1999-03-16 Williams; Wyatt Method and apparatus for increased quality of voice transmission over the internet
US6195680B1 (en) * 1998-07-23 2001-02-27 International Business Machines Corporation Client-based dynamic switching of streaming servers for fault-tolerance and load balancing
US6363429B1 (en) * 1999-04-20 2002-03-26 3Com Corporation Method and system for automatic determination of priority data streams on computer networks
US6381746B1 (en) * 1999-05-26 2002-04-30 Unisys Corporation Scaleable video system having shared control circuits for sending multiple video streams to respective sets of viewers

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5583561A (en) * 1994-06-07 1996-12-10 Unisys Corporation Multi-cast digital video data server using synchronization groups
US5815662A (en) * 1995-08-15 1998-09-29 Ong; Lance Predictive memory caching for media-on-demand systems
US5838912A (en) * 1996-09-04 1998-11-17 International Business Machines Corporation Distribution of digitally encoded presentations

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
See also references of WO02088885A2 *

Also Published As

Publication number Publication date
AU2002305256B2 (en) 2008-11-06
JP2004533755A (en) 2004-11-04
WO2002088885A2 (en) 2002-11-07
CN1559037A (en) 2004-12-29
CN100449509C (en) 2009-01-07
WO2002088885A3 (en) 2002-12-19
CA2445798A1 (en) 2002-11-07
EP1384129A4 (en) 2006-08-30

Similar Documents

Publication Publication Date Title
US7694013B2 (en) Duplicating switch for streaming data units to a terminal
US10771834B2 (en) Personalized content
US20130010794A1 (en) Generating Multiple Data Steams From a Single Data Source
US8762575B2 (en) Inserting advertising content
EP1866788B1 (en) Stream control failover
US8572278B2 (en) Generating multiple data streams from a single data source
KR100209834B1 (en) Data communication network data communication system, multimedia contents distributing method and system, multimedia contents transmission method
US20060005224A1 (en) Technique for cooperative distribution of video content
AU2002305256B2 (en) A duplicating switch for streaming data units to a terminal
CN105900437B (en) Communication apparatus, communication data generating method, and communication data processing method
AU2002305256A1 (en) A duplicating switch for streaming data units to a terminal
Fernández et al. Video forwarding techniques for mixed wired and wireless networks

Legal Events

Date Code Title Description
PUAI Public reference made under article 153(3) epc to a published international application that has entered the european phase

Free format text: ORIGINAL CODE: 0009012

17P Request for examination filed

Effective date: 20031106

AK Designated contracting states

Kind code of ref document: A2

Designated state(s): AT BE CH CY DE DK ES FI FR GB GR IE IT LI LU MC NL PT SE TR

AX Request for extension of the european patent

Extension state: AL LT LV MK RO SI

A4 Supplementary search report drawn up and despatched

Effective date: 20060731

17Q First examination report despatched

Effective date: 20090416

STAA Information on the status of an ep patent application or granted ep patent

Free format text: STATUS: THE APPLICATION IS DEEMED TO BE WITHDRAWN

18D Application deemed to be withdrawn

Effective date: 20101102