IP Library Granted Patent US 8,260,949
Granted Patent B2
US 8,260,949 · App. 11/761,918 · Granted Sep 4, 2012

Method and system for providing multimedia information on demand over wide area networks

Assignee: EMC Corporation
View Patent ↗
Loading inventors, assignments & file history…
Monitor This Case
Get email alerts when status or documents change.
Order Certified Copies
Most orders are placed with the USPTO same day — all within 24 business hours.
Order via The Patent Place →
Pre-filled with this patent's details
Quick Facts
Patent No.
US 8,260,949
App. No.
11/761,918
Filed
Jun 12, 2007
Granted
Sep 4, 2012
Kind
B2
Art Unit
2447
USPC
709/231
Abstract

Systems and methods for delivering streaming data content to a client device over a data communication network in response to a request for the data content from the client device. The client request is received by a server or a controller device that is typically located on a network switch device. If received by a server, the server sends a request to the controller device to control the transfer of the requested data to the client. The controller device includes the processing capability required for retrieving the streaming data and delivering the streaming data directly to the client device without involving the server system. In some cases, the controller device mirrors the data request to another controller device to handle the data processing and delivery functions. In other cases, the controller device coordinates the delivery of the requested data using one or more other similar controller devices in a pipelined fashion.

Claims (88)

1. A method of delivering streaming data content to a client device over a data communication network in response to a request for the streaming data content from the client device, the method comprising:

receiving, by a server, a first request from a first client device over the data communication network, the first request identifying streaming data content stored on a storage system;

identifying, by the server, a first controller device associated with the storage system on which the streaming data content is stored;

transmitting, by the server, a data request message to the first controller device, the data request message identifying the first client device and the streaming data content requested by the first client device;

transmitting, by the server, an address of the first controller device to the first client device to establish a network connection between the first controller device and the first client device over the data communication network;

receiving, by the first controller device and over the network connection, a second request from the first client device, the second request identifying streaming data content stored on the storage system;

retrieving, by the first controller device, the streaming data content from the storage system; and

transferring, by the first controller device, the retrieved streaming data content directly to the first client device over the data communication network from the first controller device through a communication port for communicably coupling the first controller device to the data communication network;

wherein retrieving the streaming data content from the storage system comprises caching, by the first controller device, disk blocks of data from the storage system at a first rate of speed; wherein transferring the retrieved streaming data content directly to the first client device further comprises transmitting the disk blocks of data at a second rate of speed, the second rate of speed being faster than the first rate of speed; and

wherein the first controller device includes a bus port that provides for communication with one or more other controller devices over a bus; and

wherein the method further comprises:

following transmitting, by the server, the data request message, detecting, by the first controller device, a delivery bandwidth of the streaming data content as exceeding a retrieval speed of the streaming data content from the storage system; and

decomposing, by the first controller device, the data request message received from the server into a list of disk blocks for delivery, the data request message identifying the streaming data content requested by the first client device.

2. The method as recited in claim 1 , wherein the streaming data content transferred to the client device includes a plurality of packets, each packet having headers and trailers of a network protocol stack and a data payload.

3. The method as recited in claim 1 , wherein the data request message further identifies a messaging protocol.

4. The method as recited in claim 3 , wherein the messaging protocol includes one of a Real Time Streaming Protocol (RTSP), HTTP and FTP.

5. The method as recited in claim 3 , wherein the first controller device is located in a network switch device coupled to the data communication network.

6. The method as recited in claim 5 , wherein the server is remote from the network switch device.

7. A method of delivering streaming data content to a client device over a data communication network in response to a request for the streaming data content from the client device, the method comprising:

receiving, by a server, a first request from a first client device over the data communication network, the first request identifying streaming data content stored on a storage system;

transmitting, by the server, a data request message over the data communication network to a first controller device, wherein the data request message identifies the first client device and the streaming data content requested by the first client device, and wherein the first controller is coupled to the storage system over a storage area network (SAN);

transmitting, by the server, an address of the first controller device to the first client device to establish a network connection between the first controller device and the first client device over the data communication network;

receiving, by the first controller device and over the network connection, a second request from the first client device, the second request identifying streaming data content stored on the storage system;

retrieving, by the first controller device, the streaming data content from the storage system over the SAN; and

transferring, by the first controller device, the retrieved streaming data content directly to the first client device over the data communication network from the first controller device;

wherein retrieving the streaming data content from the storage system comprises caching, by the first controller device, disk blocks of data from the storage system at a first rate of speed;

wherein transferring the retrieved streaming data content directly to the first client device further comprises transmitting the disk blocks of data at a second rate of speed, the second rate of speed being faster than the first rate of speed;

wherein the first controller device includes a bus port that provides for communication with one or more other controller devices over a bus; and

wherein the method further comprises:

following transmitting, by the server, the data request message, detecting, by the first controller device, a delivery bandwidth of the streaming data content as exceeding a retrieval speed of the streaming data content from the storage system; and

decomposing, by the first controller device, the data request message received from the server into a list of disk blocks for delivery, the data request message identifying the streaming data content requested by the first client device.

8. The method of claim 7 , wherein the first controller device is located in a network switch device coupled to the data communication network.

9. A method of delivering streaming data content to a client device over a data communication network in response to a request for the streaming data content from the client device, the method comprising:

transmitting, by a server, an address of t-he a first controller device to t-he a first client device to establish a network connection between the first controller device and the first client device over the data communication network;

receiving, by the first controller device, a request sent by the first client device to a server over the data communication network, the request identifying streaming data content stored on a storage system, wherein the first controller device and the server are coupled by the data communication network;

processing the request by the first controller device; and controlling, by the first controller device, the delivery of the requested streaming data directly to the first client device over the data communication network by one of the first controller device and a second controller device;

wherein the first controller device is coupled to the storage system over a storage area network (SAN), wherein controlling includes:

retrieving, by the first controller device, the streaming data content from the storage system over the SAN; and

transferring the retrieved streaming data content directly to the first client device over the data communication network from the first controller device;

transmitting a data request message from the first controller device to the second controller device, wherein the data request message identifies the first client device and the streaming data content requested by the first client device, and wherein the second controller device is coupled to the storage system over a storage area network (SAN);

retrieving, by the second controller device, the streaming data content from the storage system over the SAN; and

transferring the retrieved streaming data content directly to the first client device over the data communication network from the second controller device;

wherein retrieving the streaming data content from the storage system over the SAN comprises caching, by the first controller device, disk blocks of data from the storage system at a first rate of speed;

wherein transferring the retrieved streaming data content directly to the first client device over the data communication network further comprises transmitting the disk blocks of data at a second rate of speed, the second rate of speed being faster than the first rate of speed; and

wherein the method further comprises:

following transmitting, by the server, the data request message, detecting, by the first controller device, a delivery bandwidth of the streaming data content as exceeding a retrieval speed of the streaming data content from the storage system; and

decomposing, by the first controller device, the data request message received from the server into a list of disk blocks for delivery, the data request message identifying the streaming data content requested by the first client device.

10. The method of claim 9 , further including sending the request to the server.

11. The method of claim 10 , further including notifying the server that the request is being processed by the first controller device.

12. The method of claim 9 , wherein the first and second controller devices are coupled by a communication bus.

13. The method of claim 9 , wherein the first controller device is located in a first network switch device coupled to the data communication network and wherein the second controller device is located in a second network switch device coupled to the data communication network.

14. The method of claim 13 , wherein the first and second controller devices communicate over one of the data communication network that includes one of a Local Area Network (LAN), a Wide Area Network (WAN), a Metropolitan Area Network (MAN), and a Storage Area Network (SAN) and a back end network that includes one of a LAN, a WAN, a MAN, and a SAN.

15. The method of claim 1 , wherein transferring the retrieved streaming data content directly to the first client device over the data communication network from the first controller device through a communication port for communicably coupling the first controller device to the data communication network comprises transferring the retrieved streaming data content directly to the first client device over the data communication network from the first controller device through a communication port for communicably coupling the first controller device to the data communication network while bypassing the retrieved streaming data content from the server.

16. The method of claim 1 , wherein:

caching, by the first controller device, disk blocks of data at the first rate of speed comprises reading from the storage system, by the first controller device, a first disk block of data at a first rate of speed associated with the first controller device;

transmitting the disk blocks of data at the second rate of speed, the second rate of speed being faster than the first rate of speed comprises

transmitting, by the first controller, the first disk block of data at a second rate of speed associated with the first controller device, the second rate of speed associated with the first controller device being faster than the first rate of speed associated with the first controller device; and

further comprising, at the conclusion of transmitting the first disk block of data at the second rate of speed associated with the first controller device, transmitting a synchronization message, by the first controller, to a second controller via the bus port, the synchronization message being operable to cause the second controller to transmit a second disk block of data at a second rate of speed associated with the second controller device, the second rate of speed being faster than a first rate of speed associated with the second controller device when reading the second disk block of data from the storage system.

17. The method of claim 7 , wherein:

caching, by the first controller device, disk blocks of data at the first rate of speed comprises reading from the storage system, by the first controller device, a first disk block of data at a first rate of speed associated with the first controller device;

transmitting the disk blocks of data at the second rate of speed, the second rate of speed being faster than the first rate of speed comprises transmitting, by the first controller, the first disk block of data at a second rate of speed associated with the first controller device, the second rate of speed associated with the first controller device being faster than the first rate of speed associated with the first controller device; and

further comprising, at the conclusion of transmitting the first disk block of data at the second rate of speed associated with the first controller device, transmitting a synchronization message, by the first controller, to a second controller via the bus port, the synchronization message being operable to cause the second controller to transmit a second disk block of data at a second rate of speed associated with the second controller device, the second rate of speed being faster than a first rate of speed associated with the second controller device when reading the second disk block of data from the storage system.

18. The method of claim 9 , wherein:

caching, by the first controller device, disk blocks of data at the first rate of speed comprises reading from the storage system, by the first controller device, a first disk block of data at a first rate of speed associated with the first controller device;

transmitting the disk blocks of data at the second rate of speed, the second rate of speed being faster than the first rate of speed comprises transmitting, by the first controller, the first disk block of data at a second rate of speed associated with the first controller device, the second rate of speed associated with the first controller device being faster than the first rate of speed associated with the first controller device; and

controlling, by the first controller device, the delivery of the requested streaming data directly to the first client device over the data communication network by one of the first controller device and a second controller device comprises transmitting a synchronization message, by the first controller, to a second controller via a bus port, the synchronization message being operable to cause the second controller to transmit a second disk block of data at a second rate of speed associated with the second controller device, the second rate of speed being faster than a first rate of speed associated with the second controller device when reading the second disk block of data from the storage system.

19. The method of claim 1 , wherein transferring the retrieved streaming data content directly to the first client device over the data communication network from the first controller device through a communication port for communicably coupling the first controller device to the data communication network comprises transferring the retrieved streaming data content directly to the first client device over the network connection established between the first controller device and the first client device from the first controller device through a communication port for communicably coupling the first controller device to the data communication network.

20. The method of claim 7 , wherein transferring the retrieved streaming data content directly to the first client device over the data communication network from the first controller device through a communication port for communicably coupling the first controller device to the data communication network comprises transferring the retrieved streaming data content directly to the first client device over the network connection established between the first controller device and the first client device from the first controller device through a communication port for communicably coupling the first controller device to the data communication network.

21. The method of claim 9 , wherein transferring the retrieved streaming data content directly to the first client device over the data communication network from the first controller device through a communication port for communicably coupling the first controller device to the data communication network comprises transferring the retrieved streaming data content directly to the first client device over the network connection established between the first controller device and the first client device from the first controller device through a communication port for communicably coupling the first controller device to the data communication network.

22. The method of claim 9 , wherein:

retrieving, by the second controller device, the streaming data content from the storage system over the SAN comprises caching, by the second controller device, disk blocks of data from the storage system at a first rate of speed; and

transferring the retrieved streaming data content directly to the first client device over the data communication network from the second controller device comprises transmitting the disk blocks of data at a second rate of speed, the second rate of speed being faster than the first rate of speed.

23. The method of claim 5 , wherein receiving the second request from the first client device includes:

obtaining the second request from the network switch device in which the first controller device is located;

wherein retrieving the streaming data content from the storage system includes: receiving the streaming data content from the network switch device; and wherein transferring the retrieved streaming data content includes:

sending the retrieved streaming data content to the first client device via the network switch device.

24. The method of claim 8 , wherein receiving the second request from the first client device includes:

obtaining the second request from the network switch device in which the first controller device is located;

wherein retrieving the streaming data content from the storage system includes:

receiving the streaming data content from the network switch device; and wherein transferring the retrieved streaming data content includes: sending the retrieved streaming data content to the first client device via the network switch device.

25. The method of claim 13 , wherein receiving the request sent by the first client device to a server over the data communication network includes:

obtaining the request from the first network switch device in which the first controller device is located;

wherein retrieving the streaming data content from the storage system over the SAN includes:

receiving the streaming data content from the first network switch device;

wherein transferring the retrieved streaming data content directly to the first client device over the data communication network from the first controller device includes:

sending the retrieved streaming data content to the first client device via the first network switch device; and

wherein transmitting the data request message from the first controller device to the second controller device includes:

sending the data request message to the second network switch device in which the second controller device is located via the first network switch device.

Assignments (11)
RELEASE OF SECURITY INTEREST IN PATENTS PREVIOUSLY RECORDED AT REEL/FRAME (053546/0001) Recorded Jun 23, 2022
From: THE BANK OF NEW YORK MELLON TRUST COMPANY, N.A., AS NOTES COLLATERAL AGENT
To: DELL MARKETING L.P. (ON BEHALF OF ITSELF AND AS SUCCESSOR-IN-INTEREST TO CREDANT TECHNOLOGIES, INC.); DELL INTERNATIONAL L.L.C.; DELL PRODUCTS L.P.; DELL USA L.P.; EMC CORPORATION; DELL MARKETING CORPORATION (SUCCESSOR-IN-INTEREST TO FORCE10 NETWORKS, INC. AND WYSE TECHNOLOGY L.L.C.); EMC IP HOLDING COMPANY LLC
Reel/Frame 071642/0001 →
RELEASE OF SECURITY INTEREST IN PATENTS PREVIOUSLY RECORDED AT REEL/FRAME (045455/0001) Recorded May 20, 2022
From: THE BANK OF NEW YORK MELLON TRUST COMPANY, N.A., AS NOTES COLLATERAL AGENT
To: DELL USA L.P.; DELL INTERNATIONAL L.L.C.; DELL PRODUCTS L.P.; DELL MARKETING CORPORATION (SUCCESSOR-IN-INTEREST TO FORCE10 NETWORKS, INC. AND WYSE TECHNOLOGY L.L.C.); DELL MARKETING CORPORATION (SUCCESSOR-IN-INTEREST TO ASAP SOFTWARE EXPRESS, INC.); DELL MARKETING L.P. (ON BEHALF OF ITSELF AND AS SUCCESSOR-IN-INTEREST TO CREDANT TECHNOLOGIES, INC.); EMC CORPORATION (ON BEHALF OF ITSELF AND AS SUCCESSOR-IN-INTEREST TO MAGINATICS LLC); EMC IP HOLDING COMPANY LLC (ON BEHALF OF ITSELF AND AS SUCCESSOR-IN-INTEREST TO MOZY, INC.); SCALEIO LLC
Reel/Frame 061753/0001 →
RELEASE OF SECURITY INTEREST IN PATENTS PREVIOUSLY RECORDED AT REEL/FRAME (040136/0001) Recorded Apr 26, 2022
From: THE BANK OF NEW YORK MELLON TRUST COMPANY, N.A., AS NOTES COLLATERAL AGENT
To: DELL MARKETING CORPORATION (SUCCESSOR-IN-INTEREST TO ASAP SOFTWARE EXPRESS, INC.); DELL MARKETING L.P. (ON BEHALF OF ITSELF AND AS SUCCESSOR-IN-INTEREST TO CREDANT TECHNOLOGIES, INC.); DELL USA L.P.; DELL INTERNATIONAL L.L.C.; DELL PRODUCTS L.P.; DELL MARKETING CORPORATION (SUCCESSOR-IN-INTEREST TO FORCE10 NETWORKS, INC. AND WYSE TECHNOLOGY L.L.C.); EMC CORPORATION (ON BEHALF OF ITSELF AND AS SUCCESSOR-IN-INTEREST TO MAGINATICS LLC); EMC IP HOLDING COMPANY LLC (ON BEHALF OF ITSELF AND AS SUCCESSOR-IN-INTEREST TO MOZY, INC.); SCALEIO LLC
Reel/Frame 061324/0001 →
RELEASE OF SECURITY INTEREST Recorded Nov 3, 2021
From: CREDIT SUISSE AG, CAYMAN ISLANDS BRANCH
To: ASAP SOFTWARE EXPRESS, INC.; AVENTAIL LLC; CREDANT TECHNOLOGIES, INC.; DELL USA L.P.; DELL INTERNATIONAL, L.L.C.; DELL MARKETING L.P.; DELL PRODUCTS L.P.; DELL SOFTWARE INC.; DELL SYSTEMS CORPORATION; EMC CORPORATION; EMC IP HOLDING COMPANY LLC; FORCE10 NETWORKS, INC.; MAGINATICS LLC; MOZY, INC.; SCALEIO LLC; WYSE TECHNOLOGY L.L.C.
Reel/Frame 058216/0001 →
SECURITY AGREEMENT Recorded Apr 22, 2020
From: CREDANT TECHNOLOGIES INC.; DELL INTERNATIONAL L.L.C.; DELL MARKETING L.P.; DELL PRODUCTS L.P.; DELL USA L.P.; EMC CORPORATION; FORCE10 NETWORKS, INC.; WYSE TECHNOLOGY L.L.C.; EMC IP HOLDING COMPANY LLC
To: THE BANK OF NEW YORK MELLON TRUST COMPANY, N.A.
Reel/Frame 053546/0001 →
SECURITY AGREEMENT Recorded Mar 21, 2019
From: CREDANT TECHNOLOGIES, INC.; DELL INTERNATIONAL L.L.C.; DELL MARKETING L.P.; DELL PRODUCTS L.P.; DELL USA L.P.; EMC CORPORATION; FORCE10 NETWORKS, INC.; WYSE TECHNOLOGY L.L.C.; EMC IP HOLDING COMPANY LLC
To: THE BANK OF NEW YORK MELLON TRUST COMPANY, N.A.
Reel/Frame 049452/0223 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Sep 29, 2016
From: EMC CORPORATION
To: EMC IP HOLDING COMPANY LLC
Reel/Frame 040203/0001 →
SECURITY AGREEMENT Recorded Sep 21, 2016
From: ASAP SOFTWARE EXPRESS, INC.; AVENTAIL LLC; CREDANT TECHNOLOGIES, INC.; DELL USA L.P.; DELL INTERNATIONAL L.L.C.; DELL MARKETING L.P.; DELL PRODUCTS L.P.; DELL SOFTWARE INC.; DELL SYSTEMS CORPORATION; EMC CORPORATION; EMC IP HOLDING COMPANY LLC; FORCE10 NETWORKS, INC.; MAGINATICS LLC; MOZY, INC.; SCALEIO LLC; SPANNING CLOUD APPS LLC; WYSE TECHNOLOGY L.L.C.
To: THE BANK OF NEW YORK MELLON TRUST COMPANY, N.A., AS NOTES COLLATERAL AGENT
Reel/Frame 040136/0001 →
SECURITY AGREEMENT Recorded Sep 21, 2016
From: ASAP SOFTWARE EXPRESS, INC.; AVENTAIL LLC; CREDANT TECHNOLOGIES, INC.; DELL USA L.P.; DELL INTERNATIONAL L.L.C.; DELL MARKETING L.P.; DELL PRODUCTS L.P.; DELL SOFTWARE INC.; DELL SYSTEMS CORPORATION; EMC CORPORATION; EMC IP HOLDING COMPANY LLC; FORCE10 NETWORKS, INC.; MAGINATICS LLC; MOZY, INC.; SCALEIO LLC; SPANNING CLOUD APPS LLC; WYSE TECHNOLOGY L.L.C.
To: CREDIT SUISSE AG, CAYMAN ISLANDS BRANCH, AS COLLATERAL AGENT
Reel/Frame 040134/0001 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Dec 8, 2008
From: EMC CORPORATION OF CANADA
To: EMC CORPORATION
Reel/Frame 021936/0238 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Sep 22, 2008
From: YOTTAYOTTA, INC.
To: EMC CORPORATION OF CANADA
Reel/Frame 021561/0597 →
Continuity (3)
Continuation 09815824 · Mar 22, 2001
Provisional Application 60191237 · Mar 22, 2000
Related Publication 20070233893A1 · Oct 4, 2007