Claims
- 1. A system comprising:
a plurality of storage devices to store data; a plurality of data processing devices to couple with a network communication device, each of the plurality of data processing devices coupled with at least one of the plurality of storage devices, each of the plurality of data processing devices including:
a module to retrieve a data segment from one of the plurality of storage devices coupled with the respective data processing device; a module to schedule transmission of the data segment to a client in sequence with other data segments; and a module to transmit the data segment to the client and not to another of the plurality of data processing devices.
- 2. The system of claim 1, wherein at least one of the plurality of data processing devices includes a module to provide control information to transmit a data stream comprising a sequence of data segments to the client.
- 3. The system of claim 1, wherein the module to retrieve a data segment from one of the plurality of storage devices coupled with the respective data processing device, the module to schedule transmission of the data segment to a client in sequence with other data segments, and the module to transmit the data segment to the client and not to another of the plurality of data processing devices are implemented at least partially in software.
- 4. The system of claim 1, wherein the module to retrieve a data segment from one of the plurality of storage devices coupled with the respective data processing device, the module to schedule transmission of the data segment to a client in sequence with other data segments, and the module to transmit the data segment to the client and not to another of the plurality of data processing devices are implemented at least partially in hardware.
- 5. The system of claim 4, wherein the module to retrieve a data segment from one of the plurality of storage devices coupled with the respective data processing device, the module to schedule transmission of the data segment to a client in sequence with other data segments, and the module to transmit the data segment to the client and not to another of the plurality of data processing devices are at least partially implemented as circuitry in one or more integrated circuits.
- 6. The system of claim 1, further including a module to place data segments on the plurality of storage devices.
- 7. The system of claim 6, wherein the module to place data segments on the plurality of-storage devices is to place the data segments in a round-robin placement scheme.
- 8. The system of claim 6, wherein the module to place data segments on the plurality of storage devices is to place the data segments in a random placement scheme.
- 9. The system of claim 6, wherein the module to place data segments on the plurality of storage devices is to place the data segments in a pseudorandom placement scheme.
- 10. The system of claim 1, wherein the module to retrieve a data segment from one of the plurality of storage devices coupled with the respective data processing device includes one or more file input/output modules.
- 11. The system of claim 1, wherein at least one of the plurality of data processing devices comprises a central processing unit.
- 12. The system of claim 1, wherein at least one of the plurality of storage devices comprises a disk drive.
- 13. The system of claim 12, wherein the storage device is implemented in at least one medium chosen from group consisting of a magnetic medium, a semiconductor medium, and an optical medium.
- 14. The system of claim 1, further including a network communication device.
- 15. The system of claim 14, wherein the network communication device is a local network switch.
- 16. The system of claim 1, wherein each of the plurality of data processing devices are coupled with the network communication device via a network interface module.
- 17. The system of claim 16, wherein the network interface module comprises a network interface card (NIC).
- 18. The system of claim 1, wherein the module to transmit the data segment to the client and not to another of the plurality of data processing devices includes a real-time transport protocol (RTP) module.
- 19. A method, comprising:
receiving a request for a data stream from a client; designating one of a plurality of nodes of a continuous media server to provide control information to transmit the data stream to the client; transmitting the data stream as a sequence of data segments to the client, wherein transmitting the data stream comprises transmitting a first data segment from a first node of the plurality of nodes to the client according to a scheduler module of the first node, and wherein transmitting the data stream further comprises subsequently transmitting a second data segment from a second node of the plurality of nodes to the client according to a scheduler module of the second node.
- 20. The method of claim 19, further comprising transmitting control information from the one of the plurality of nodes to the first node.
- 21. The method of claim 20, further comprising transmitting at least some of the control information to the scheduler of the first node and subsequently scheduling the transmission of the first data segment using the control information.
- 22. The method of claim 19, further comprising transmitting control information from the one of the plurality of nodes to the second node.
- 23. The method of claim 22, further comprising transmitting at least some of the control information to the scheduler of the second node and subsequently scheduling the transmission of the second data segment using the control information.
- 24. The method of claim 19, wherein transmitting the data stream further comprises transmitting a third data segment from the one node of the plurality of nodes to the client according to a scheduler module of the one node of the plurality of nodes.
- 25. The method of claim 19, wherein the one of a plurality of nodes of a continuous media server provides control information to transmit the data stream to the client according to the real-time streaming protocol (RTSP).
- 26. A system, comprising:
a controller module to transmit a request for a data stream to a server having a plurality of nodes, the controller module further to receive the data stream as a sequence of data segments, wherein the controller module is to receive the data segments from more than one of the plurality of nodes.
- 27. The system of claim 26, further comprising a buffer to store at least some of the data segments.
- 28. The system of claim 26, further comprising a decoder to decode the data.
- 29. The system of claim 28, wherein the decoder comprises an MPEG decoder.
- 30. The system of claim 28, wherein the decoder comprises a sound card.
- 31. The system of claim 28, wherein the decoder comprises a high definition television decoder.
- 32. The system of claim 26, wherein the controller includes a real-time streaming protocol (RTSP) module.
- 33. The system of claim 26, wherein the controller includes a real-time transport protocol (RTP) module.
- 34. The system of claim 33, wherein the controller is to receive data packets, each data packet including at least a portion of a data segment, the data packets further including a local sequence number, the local sequence number indicating which of the plurality of nodes transmitted the data packet.
- 35. The system of claim 34, further including a memory to store the local sequence numbers for the data packets.
- 36. The system of claim 34, further including a module to determine whether there is a gap in the local sequence numbers.
- 37. The system of claim 34, further including a module to determine a particular server node corresponding to a gap in the local sequence numbers.
- 38. The system of claim 37, further including a module to send a retransmission request to the particular server node.
- 39. The system of claim 26, further including a user interface module.
- 40. The system of claim 26, further including a playback module.
- 41. The system of claim 26, further including at least one of a display and a speaker to present the data stream to a user.
- 42. A method, comprising:
requesting a first data stream, the first data stream including a first segment of continuous media data to be presented to a user; requesting a second data stream, the second data stream including a second segment of different continuous media data, the second segment to be presented to the user in synchronization with the first segment; receiving the first segment from a node of a continuous media server; receiving the second segment from a different node of the continuous media server; decoding the first segment to produce a decoded first segment; decoding the second segment to produce a decoded second segment; and presenting the decoded first segment and the decoded second segment to the user at substantially the same time.
- 43. The method of claim 42, wherein the first data stream comprises video data and the second data stream comprises audio data.
- 44. The method of claim 42, wherein the first data stream and the second data stream comprise video data.
- 45. A method, comprising:
transmitting a request for a data stream to a server, the server including a plurality of nodes, each of the nodes to store segments of the data stream and to transmit the segments of the data stream in a sequence according to a scheduler module on the respective node; receiving a plurality of data packets from the plurality of nodes, each of the plurality of data packets including at least a portion of one of the segments, each of the data packets further including a local sequence number indicating which of the plurality of nodes transmitted the respective data packet.
- 46. The method of claim 45, further comprising determining whether a data packet was not received by detecting a gap in the local sequence number.
- 47. The method of claim 46, wherein if a data packet was not received, determining which of the plurality of nodes transmitted the data packet that was not received using the local sequence number.
- 48. The method of claim 47, further including transmitting a retransmission request to the one of the plurality of nodes that transmitted the data packet that was not received.
- 49. The method of claim 45, wherein each of the data packets further includes a global sequence number.
CROSS-REFERENCE TO RELATED APPLICATIONS
[0001] The present application claims priority to U.S. Provisional Patent Application No. 60/351,656, entitled “YIMA JADE: A SCALABLE LOW-COST STREAMING MEDIA SYSTEM,” filed on Jan. 24, 2002, which is hereby incorporated by reference in its entirety;
[0002] The present application claims priority to U.S. Provisional Patent Application attorney reference number 06666-127P02, filed Jan. 17, 2003, entitled “RETRANSMISSION-BASED ERROR CONTROL IN A MANY-TO-MANY CLIENT-SERVER ENVIRONMENT,” which is hereby incorporated by reference in its entirety.
STATEMENT AS TO FEDERALLY SPONSORED RESEARCH
[0003] The invention described herein was made in the performance of work funded in part by NSF grants EEC-9529152 (IMSC ERC) and IIS-0082826, and is subject to the provisions of Public Law 96-517 (35 U.S.C. 202) in which the contractor has elected to retain title.
Provisional Applications (1)
|
Number |
Date |
Country |
|
60351656 |
Jan 2002 |
US |