Language selection

Search

Patent 2445798 Summary

Third-party information liability

Some of the information on this Web page has been provided by external sources. The Government of Canada is not responsible for the accuracy, reliability or currency of the information supplied by external sources. Users wishing to rely upon this information should consult directly with the source of the information. Content provided by external sources is not subject to official languages, privacy and accessibility requirements.

Claims and Abstract availability

Any discrepancies in the text and image of the Claims and Abstract are due to differing posting times. Text of the Claims and Abstract are posted:

  • At the time the application is open to public inspection;
  • At the time of issue of the patent (grant).
(12) Patent Application: (11) CA 2445798
(54) English Title: A DUPLICATING SWITCH FOR STREAMING DATA UNITS TO A TERMINAL
(54) French Title: COMMUTATEUR DE DUPLICATION POUR TRANSMISSION EN CONTINU D'UNITES DE DONNEES A UN TERMINAL
Status: Deemed Abandoned and Beyond the Period of Reinstatement - Pending Response to Notice of Disregarded Communication
Bibliographic Data
(51) International Patent Classification (IPC):
  • G06F 13/00 (2006.01)
  • G06F 15/16 (2006.01)
  • H04J 03/18 (2006.01)
  • H04L 12/18 (2006.01)
  • H04L 61/00 (2022.01)
  • H04L 67/561 (2022.01)
  • H04L 69/22 (2022.01)
  • H04L 69/329 (2022.01)
(72) Inventors :
  • WEIGAND, GIL (United States of America)
  • RADUCHEL, WILLIAM J. (United States of America)
  • BROWN, SCOTT K. (United States of America)
  • BILL, DAVID (United States of America)
(73) Owners :
  • AMERICA ONLINE, INC.
(71) Applicants :
  • AMERICA ONLINE, INC. (United States of America)
(74) Agent: SMART & BIGGAR LP
(74) Associate agent:
(45) Issued:
(86) PCT Filing Date: 2002-04-30
(87) Open to Public Inspection: 2002-11-07
Examination requested: 2007-04-24
Availability of licence: N/A
Dedicated to the Public: N/A
(25) Language of filing: English

Patent Cooperation Treaty (PCT): Yes
(86) PCT Filing Number: PCT/US2002/013362
(87) International Publication Number: US2002013362
(85) National Entry: 2003-10-28

(30) Application Priority Data:
Application No. Country/Territory Date
09/893,692 (United States of America) 2001-06-29
60/286,964 (United States of America) 2001-04-30
60/343,183 (United States of America) 2001-12-31

Abstracts

English 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).


French Abstract

L'invention concerne un mode transmission en continu à un terminal au moyen d'un commutateur de duplication pour la réception d'un flux d'unités de données, et en utilisant le commutateur de duplication pour mémoriser le contenu du flux et pour générer le second flux qui incorpore le contenu qui était mémorisé et adresse l'information correspondant à plus d'un terminal dont les informations d'adressage ne faisaient pas partie du premier flux, et en utilisant ledit commutateur de duplication pour rendre le second flux d'unités de données disponible pour deux ou plusieurs terminaux.

Claims

Note: Claims are shown in the official language in which they were submitted.


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.
28

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.
29

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:
30

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.
31

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.
32

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
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
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
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
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
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.
52. The method of claim 50 wherein the request is received from a device
other than the terminals.
33

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.
34

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
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
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 units at two different temporal offsets.
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.
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
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.
73. The method of claim 72 further comprising generating perceivable
output based on the stream of data units.

74. The method of claim 72 wherein the attribute portion of the data unit
includes an IP 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;
36

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.
37

Description

Note: Descriptions are shown in the official language in which they were submitted.


CA 02445798 2003-10-28
WO 02/088885 PCT/US02/13362
A DUPLICATING SWITCH FOR STREAMING DATA
UNITS TO A TERMINAL
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
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

CA 02445798 2003-10-28
WO 02/088885 PCT/US02/13362
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
1 o 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.
~ 5 Implementations may include one or more of the following features. For
example, the attribute portions of the data units may include TP 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
2o 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
25 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
3o 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
2

CA 02445798 2003-10-28
WO 02/088885 PCT/US02/13362
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
1 o 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
15 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
2o 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. 2A.
25 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.
3

CA 02445798 2003-10-28
WO 02/088885 PCT/US02/13362
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.
~ 5 Fig. 1 OB 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.
2o 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 slufting of the
content
for subsequent transmission. For example, an on-demand system can be created
to
25 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
4

CA 02445798 2003-10-28
WO 02/088885 PCT/US02/13362
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 commmlications 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
~5 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
2o 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
25 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 (CPI, and
memory/storage devices that store data and various programs such as an
operating
so system and one or more application programs. Other implementations of the
source

CA 02445798 2003-10-28
WO 02/088885 PCT/US02/13362
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
1 o 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
~ 5 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.
2o 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
25 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
6

CA 02445798 2003-10-28
WO 02/088885 PCT/US02/13362
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.
s 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.
1 o 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
~ 5 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
2o 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
25 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
3o permanently or temporarily in any type of machine, component, equipment,
storage

CA 02445798 2003-10-28
WO 02/088885 PCT/US02/13362
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
uW ts. 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
~ 5 micro-browser application on a reduced operating system with general
purpose and
specialized hardware capable of operating in mobile enviromnents.
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
2o 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
25 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 IP 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
3o parameters that are intended for communication from the source system and
tend to

CA 02445798 2003-10-28
WO 02/088885 PCT/US02/13362
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 210B 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 211B and 219B.
These
fields may be arranged as shown or otherwise to accommodate various protocols.
The
payload in the IP 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
~ 5 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
20 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
25 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
3o component of the duplicating switch 300 with other elements of the
duplicating

CA 02445798 2003-10-28
WO 02/088885 PCT/US02/13362
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.
15 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
2o 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.
25 One example of a network processor may include several interconnected RISC
("Reduced Tnstruction 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
30 IP stream.

CA 02445798 2003-10-28
WO 02/088885 PCT/US02/13362
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. Tlus 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.
1 o 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
11

CA 02445798 2003-10-28
WO 02/088885 PCT/US02/13362
switch 400A includes a RAM array 420A, a switching engine 430A 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
~ 5 the RAM array 420A. 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
20 otherwise.
The switching engine 430A 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
2s 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
30 one implementation, the switching engine 430A may implement a system of
pointers
12

CA 02445798 2003-10-28
WO 02/088885 PCT/US02/13362
designed to keep track of where in time or sequence number the terminals are
with
respect to the available stored content. The switching engine 430A 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 430A 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 410B is structured and arranged to store content from
within a stream of data units. The stream platform 410B includes a hard disk
drive
15 412B (or a tape drive or other magnetic memory) and optical memory 416B.
Generally, the stream platform 410B 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,
2o the stream platform 4108 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
25 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
3o the data units they need in the stream of data units.
13

CA 02445798 2003-10-28
WO 02/088885 PCT/US02/13362
The switching engine 430B 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 430A 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,
3o if the duplicating switch 500 receives an analog signal, the data unit
interface 510
14

CA 02445798 2003-10-28
WO 02/088885 PCT/US02/13362
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
1o 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.
2o 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
3o the content piece, the RAM may load a certain window of content for
transmission to

CA 02445798 2003-10-28
WO 02/088885 PCT/US02/13362
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 I30 in Fig. 1, and terminals 650 and 670 correspond to components
of the
terminal 150 in Fig. 1.
~5 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 reforniatting the input
into an
2o 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 6I0 then transmits the generated stream of data units to one or
more
switches 620 (e.g., across network 120) (step 616).
25 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
3o represented by the payload. As the data unit is being transmitted to
terminals, switch
16

CA 02445798 2003-10-28
WO 02/088885 PCT/US02/13362
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 IP 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.
~ 5 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).
2o 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
25 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
3o may communicate this election to switch 620 (step 658). When the switch 620
17

CA 02445798 2003-10-28
WO 02/088885 PCT/US02/13362
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
2o 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
25 X.1.1.1 transmits an IP packet 720 to the switch 730 with a destination
address of
Y.1.I.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 11' packet 720 also
may
include other header information 722 and a payload 728.
The switch 730, with a source address ofY.1.1.1, duplicates at least the
3o payload 728 of the IP packet 720 and transmits an IP data unit 740 to
terminal 770
with an address of Z.l.l .1. The IP data unit 740 includes the source IP
address 746 of
18

CA 02445798 2003-10-28
WO 02/088885 PCT/US02/13362
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 uuts 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
2o 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 infra-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).
19

CA 02445798 2003-10-28
WO 02/088885 PCT/US02/13362
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
2o 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

CA 02445798 2003-10-28
WO 02/088885 PCT/US02/13362
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.
~ 5 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
2o 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
25 a request to the duplicating switch 906 to transmit the stream of data
units (step 923).
Alternatively, a terminal 908 rnay 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).
21

CA 02445798 2003-10-28
WO 02/088885 PCT/US02/13362
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 units 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
940A). Depending on the implementation, a different "stack" of content pieces
may
be loaded into memory to support terminal 910.
15 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
20 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
25 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
3o multiple instances of the stream of data units. The duplicating switch
1000A
22

CA 02445798 2003-10-28
WO 02/088885 PCT/US02/13362
transmits two streams of data units, stream A and stream Al. Stream A occupies
memory storage l OlOA in the memory bank, while stream A1 occupies memory
storage 1020A in the memory bank. In one implementation, a first pointer l
O15A to
the memory storage l OlOA 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 1025A to the memory storage 1020A indicates which
portions of content pieces encapsulated in a stream of data units axe being
transmitted
to several terminals. One or more terminals wishing to receive one or more
data nits
in the stream of data units receive the content piece corresponding to the
second
~ 5 pointer 1025A, which is continuously advanced to the next content piece.
In some
implementations, the second pointer 1025A 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
2o content pieces in stream A: A1 1010, A2 1020, A3 1030, A4 1040, and AS
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
25 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 A1 1010 simultaneously.
After some content pieces have bean transmitted, and as shown in Fig. l OB,
the location identifier 1025 for terminal T may be referencing content piece
A2 1020,
3o while the location identif er 1042 and the location identifier 1044 for
terminals U and
23

CA 02445798 2003-10-28
WO 02/088885 PCT/US02/13362
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.
In another example, duplicating switch 1000B includes five content pieces in
stream B: B1 1070, B2 1071, B3 1072, B4 1073, and BS 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
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).
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 I-
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
2o 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
(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 I30 may receive a pause
request (step
1160). If the duplicating switch 130 receives a pause request, the duplicating
switch
3o stops transmitting the stream of data units to the terminal (step 1165).
With the stream
24

CA 02445798 2003-10-28
WO 02/088885 PCT/US02/13362
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
1 o 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
2o 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
25 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

CA 02445798 2003-10-28
WO 02/088885 PCT/US02/13362
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
~5 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
2o minimize the bandwidth consumed. In another example, the switch may convert
a
proprietary video-encoding format to a standards-based encoding format.
hnplementations 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
25 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
3o switch may stop transmitting the television show and access a series of
advertisements. Implementations may include having the tag designate which
26

CA 02445798 2003-10-28
WO 02/088885 PCT/US02/13362
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.
27

Representative Drawing
A single figure which represents the drawing illustrating the invention.
Administrative Status

2024-08-01:As part of the Next Generation Patents (NGP) transition, the Canadian Patents Database (CPD) now contains a more detailed Event History, which replicates the Event Log of our new back-office solution.

Please note that "Inactive:" events refers to events no longer in use in our new back-office solution.

For a clearer understanding of the status of the application/patent presented on this page, the site Disclaimer , as well as the definitions for Patent , Event History , Maintenance Fee  and Payment History  should be consulted.

Event History

Description Date
Inactive: IPC from PCS 2022-01-01
Inactive: IPC from PCS 2022-01-01
Inactive: IPC from PCS 2022-01-01
Inactive: IPC expired 2022-01-01
Inactive: IPC expired 2022-01-01
Inactive: IPC expired 2022-01-01
Inactive: IPC from PCS 2022-01-01
Application Not Reinstated by Deadline 2011-05-02
Time Limit for Reversal Expired 2011-05-02
Inactive: IPC expired 2011-01-01
Deemed Abandoned - Failure to Respond to Maintenance Fee Notice 2010-04-30
Amendment Received - Voluntary Amendment 2009-11-04
Amendment Received - Voluntary Amendment 2009-08-12
Amendment Received - Voluntary Amendment 2009-02-17
Amendment Received - Voluntary Amendment 2008-07-24
Letter Sent 2007-05-25
All Requirements for Examination Determined Compliant 2007-04-24
Request for Examination Received 2007-04-24
Amendment Received - Voluntary Amendment 2007-04-24
Request for Examination Requirements Determined Compliant 2007-04-24
Inactive: IPC from MCD 2006-03-12
Inactive: IPC from MCD 2006-03-12
Inactive: IPC from MCD 2006-03-12
Inactive: IPC from MCD 2006-03-12
Inactive: IPC from MCD 2006-03-12
Letter Sent 2005-03-15
Letter Sent 2005-03-15
Inactive: Single transfer 2005-02-01
Inactive: IPRP received 2004-05-07
Inactive: Courtesy letter - Evidence 2004-01-13
Inactive: Cover page published 2004-01-12
Inactive: Notice - National entry - No RFE 2004-01-08
Application Received - PCT 2003-11-20
National Entry Requirements Determined Compliant 2003-10-28
Application Published (Open to Public Inspection) 2002-11-07

Abandonment History

Abandonment Date Reason Reinstatement Date
2010-04-30

Maintenance Fee

The last payment was received on 2009-03-31

Note : If the full payment has not been received on or before the date indicated, a further fee may be required which may be one of the following

  • the reinstatement fee;
  • the late payment fee; or
  • additional fee to reverse deemed expiry.

Patent fees are adjusted on the 1st of January every year. The amounts above are the current amounts if received by December 31 of the current year.
Please refer to the CIPO Patent Fees web page to see all current fee amounts.

Fee History

Fee Type Anniversary Year Due Date Paid Date
Basic national fee - standard 2003-10-28
MF (application, 2nd anniv.) - standard 02 2004-04-30 2004-03-31
Registration of a document 2005-02-01
MF (application, 3rd anniv.) - standard 03 2005-05-02 2005-03-31
MF (application, 4th anniv.) - standard 04 2006-05-01 2006-04-03
MF (application, 5th anniv.) - standard 05 2007-04-30 2007-04-02
Request for examination - standard 2007-04-24
MF (application, 6th anniv.) - standard 06 2008-04-30 2008-04-01
MF (application, 7th anniv.) - standard 07 2009-04-30 2009-03-31
Owners on Record

Note: Records showing the ownership history in alphabetical order.

Current Owners on Record
AMERICA ONLINE, INC.
Past Owners on Record
DAVID BILL
GIL WEIGAND
SCOTT K. BROWN
WILLIAM J. RADUCHEL
Past Owners that do not appear in the "Owners on Record" listing will appear in other documentation within the application.
Documents

To view selected files, please enter reCAPTCHA code :



To view images, click a link in the Document Description column. To download the documents, select one or more checkboxes in the first column and then click the "Download Selected in PDF format (Zip Archive)" or the "Download Selected as Single PDF" button.

List of published and non-published patent-specific documents on the CPD .

If you have any difficulty accessing content, you can call the Client Service Centre at 1-866-997-1936 or send them an e-mail at CIPO Client Service Centre.


Document
Description 
Date
(yyyy-mm-dd) 
Number of pages   Size of Image (KB) 
Description 2003-10-27 27 1,491
Claims 2003-10-27 10 438
Drawings 2003-10-27 13 195
Abstract 2003-10-27 2 71
Representative drawing 2003-10-27 1 9
Reminder of maintenance fee due 2004-01-07 1 109
Notice of National Entry 2004-01-07 1 204
Request for evidence or missing transfer 2004-10-31 1 102
Courtesy - Certificate of registration (related document(s)) 2005-03-14 1 105
Courtesy - Certificate of registration (related document(s)) 2005-03-14 1 105
Reminder - Request for Examination 2007-01-02 1 124
Acknowledgement of Request for Examination 2007-05-24 1 177
Courtesy - Abandonment Letter (Maintenance Fee) 2010-06-27 1 172
PCT 2003-10-27 3 82
Correspondence 2004-01-07 1 26
PCT 2003-10-28 3 145