IP Library Granted Patent US 9,998,390
Granted Patent B1
US 9,998,390 · App. 14/160,360 · Granted Jun 12, 2018

Providing streaming media data

Inventor: Andrew D. Hospodor (Los Gatos, CA)
Assignee: WESTERN DIGITAL VENTURES, INC.
H04L47/70H04L45/302H04L47/72
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 9,998,390
App. No.
14/160,360
Granted
Jun 12, 2018
Kind
B1
Abstract

A system for servicing streaming media requests. The system includes stream director nodes and intelligent stream engine nodes, such as permanent storage devices with network interfaces. The stream director node receives a streaming media request and enqueues the request until all resources on a path from the stream engine node having the media object being requested to the user/client system have been reserved. Once reserved, the enqueued request is then serviced by requesting the stream object from the stream engine node, which then transfers the requested stream object between the stream engine node and the user/client system over the prepared path without involving the stream director node. Upon completion, the prepared path is torn down. In one embodiment the prepared path is a Label Switched Path. A provision is made for balancing the load among the stream engine nodes by duplicating stream objects on other stream engine nodes.

Claims (63)

1. A method for servicing a request from a client system for transferring a streaming media object, the method comprising:

receiving, at a stream director node comprising one or more hardware processors, a request from a client system for a streaming media object;

by the stream director node, identifying a stream engine node that includes the streaming media object in a networked data storage from which the streaming media object is to be transferred;

by the stream director node, authenticating and verifying that a user of the client system is able to reserve system resources; and

responsive to successful authentication and verification that the user of the client system is able to reserve system resources:

by the stream director node, passing back a location of the streaming media object to the client system;

by the stream director node, verifying that sufficient system resources are available to service the request by testing a load of the networked data storage against a load threshold;

responsive to failed verification that sufficient system resources are available to service the request, queuing, by the stream director node, the request until sufficient system resources become available; and

responsive to successful verification that sufficient system resources are available to service the request:

by the stream director node, dequeuing the request and preparing a data transfer path comprising one or more routers and one or more switches between the networked data storage and the client system that made the request, the stream director node not being included in the data transfer path;

by the stream director node, programming the one or more routers and the one or more switches to cause the one or more routers and the one or more switches to be reserved for use in a data transfer of the streaming media object; and

transferring by the stream engine node, over the data transfer path between the client system that made the request and the networked data storage, a stream of data in packets comprising the streaming media object.

2. The method of claim 1 , further comprising, upon completion of the transfer, tearing down the data transfer path and de-allocating the one or more routers.

3. The method of claim 1 , wherein a table is employed at the stream director node to keep track of a plurality of streaming data objects including the streaming media object that reside on the networked data storage.

4. The method of claim 1 , wherein a table is employed at the stream director node to keep track of the system resources that are available for servicing a streaming media request.

5. The method of claim 1 , wherein verifying that sufficient system resources are available to service the request further comprises:

determining, based on testing the load of the networked data storage against the load threshold, that the networked data storage is overloaded by requests for the streaming media object; and

copying the streaming media object to another networked data storage so that the another networked data storage is able to service the request for the streaming media object in place of the networked data storage.

6. The method of claim 1 , further comprising:

directing the networked data storage to transfer, over the data transfer path, the data to or from the client system that made the request; and

performing the data transfer while meeting a Quality of Service constraint.

7. The method of claim 6 , wherein the Quality of Service constraint includes an upper bound on a response time in servicing the request.

8. The method of claim 6 , wherein the Quality of Service constraint includes a lower bound on a throughput in servicing the request.

9. The method of claim 1 , wherein said verifying comprises verifying that sufficient system resources are available to provide and maintain a stream for the data transfer for an expected stream duration plus a margin.

10. The method of claim 9 , wherein the margin comprises 10%.

11. A system for servicing a request from a client system for a streaming media object, the system comprising:

at least one stream director node comprising a memory device and one or more hardware processors, the one or more hardware processors being configured to:

receive a request from a client system for a streaming media object;

identify a stream engine node that includes a streaming media object in a networked data storage from which the streaming media object is to be transferred;

authenticate and verify that a user of the client system is able to reserve system resources; and

in response to successful authentication and verification that the user of the client system is able to reserve system resources:

pass back a location of the streaming media object to the client system;

verify that sufficient system resources are available to service the request by testing a load of the networked data storage against a load threshold;

in response to failed verification that sufficient system resources are available to service the request, queue the request until sufficient system resources become available; and

in response to successful verification that sufficient system resources are available to service the request:

dequeue the request and prepare a data transfer path comprising one or more routers and one or more switches between the networked data storage and the client system that made the request, the at least one stream director node not being included in the data transfer path;

program the one or more routers and the one or more switches to cause the one or more routers and the one or more switches to be reserved for use in a data transfer of the streaming media object; and

initiate a transfer, over the data transfer path between the client system that made the request and the networked data storage, a stream of data in packets comprising the streaming media object.

12. The system of claim 11 , wherein the one or more hardware processors of the at least one stream director node is further configured to, upon completion of the transfer, tear down the data transfer path and de-allocate the one or more routers.

13. The system of claim 11 , wherein the one or more hardware processors of the at least one stream director node is further configured to track a plurality of streaming data objects including the streaming media object that reside on the networked data storage.

14. The system of claim 11 , wherein the one or more hardware processors of the at least one stream director node is further configured to keep track of the system resources that are available for servicing a streaming media request.

15. The system of claim 11 , wherein the one or more hardware processors of the at least one stream director node is further configured to load balance requests between the networked data storage and another networked data storage.

16. The system of claim 11 , wherein verification comprises the one or more hardware processors being further configured to:

determine, based on testing the load of the networked data storage against the load threshold, that the networked data storage is overloaded by requests for the streaming media object; and

copy the streaming media object to another networked data storage so that the another networked data storage is able to service the request for the streaming media object in place of the networked data storage.

17. The system of claim 11 , further comprising:

the networked data storage configured to:

store a plurality of streaming media objects including the streaming media object; and

transfer, over the data transfer path, the data between the networked data storage and the client system that made the request.

18. The system of claim 17 , wherein the networked data storage is further configured to transfer, over the data transfer path, the data between the networked data storage and the client system that made the request while meeting a Quality of Service constraint.

19. The system of claim 11 , wherein the one or more hardware processors of the at least one stream director is further configured to verify that sufficient system resources are available to provide and maintain a stream for the data transfer for an expected stream duration plus a margin.

20. The system of claim 19 , wherein the margin comprises 10%.

21. A system for servicing a request from a client system for transferring a streaming media object, the system comprising:

means for receiving a request from a client system for a streaming media object;

means for identifying a stream engine node that includes a streaming media object in a networked data storage from which the streaming media object is to be transferred;

means for authenticating and verifying that a user of the client system is able to reserve system resources;

means for passing back, responsive to successful authentication and verification that the user of the client system is able to reserve system resources, a location of the streaming media object to the client system;

means for verifying that sufficient system resources are available to service the request by testing a load of the networked data storage against a load threshold;

means for queuing, responsive to failed verification that sufficient system resources are available to service the request, the request until sufficient system resources become available;

means for dequeuing, responsive to successful verification that sufficient system resources are available to service the request, the request;

means for preparing a data transfer path comprising one or more routers and one or more switches between the networked data storage and the client system that made the request;

means for programing the one or more routers and the one or more switches to cause the one or more routers and the one or more switches to be reserved for use in a data transfer of the streaming media object; and

means for initiating a transfer, over the data transfer path between the client system that made the request and the networked data storage, a stream of data in packets comprising the streaming media object.

Assignments (9)
PATENT COLLATERAL AGREEMENT - DDTL LOAN AGREEMENT Recorded Aug 21, 2023
From: WESTERN DIGITAL TECHNOLOGIES, INC.
To: JPMORGAN CHASE BANK, N.A.
Reel/Frame 067045/0156 →
PATENT COLLATERAL AGREEMENT - A&R LOAN AGREEMENT Recorded Aug 21, 2023
From: WESTERN DIGITAL TECHNOLOGIES, INC.
To: JPMORGAN CHASE BANK, N.A.
Reel/Frame 064715/0001 →
RELEASE OF SECURITY INTEREST AT REEL 053926 FRAME 0446 Recorded Feb 8, 2022
From: JPMORGAN CHASE BANK, N.A.
To: WESTERN DIGITAL TECHNOLOGIES, INC.
Reel/Frame 058966/0321 →
SECURITY INTEREST Recorded Sep 29, 2020
From: WESTERN DIGITAL TECHNOLOGIES, INC.
To: JPMORGAN CHASE BANK, N.A., AS AGENT
Reel/Frame 053926/0446 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jul 14, 2020
From: WESTERN DIGITAL CAPITAL, LLC
To: WESTERN DIGITAL TECHNOLOGIES, INC.
Reel/Frame 053208/0828 →
CHANGE OF NAME Recorded Jun 15, 2020
From: WESTERN DIGITAL CAPITAL, INC
To: WESTERN DIGITAL CAPITAL, LLC
Reel/Frame 052945/0476 →
CHANGE OF NAME Recorded Jun 11, 2020
From: WESTERN DIGITAL VENTURES, INC
To: WESTERN DIGITAL CAPITAL, INC
Reel/Frame 052919/0177 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Mar 31, 2014
From: HOSPODOR, ANDREW D.
To: PLUSTREAM, INC.
Reel/Frame 032564/0938 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Mar 31, 2014
From: COROSOFT, INC. (FORMERLY PLUSTREAM, INC.)
To: WESTERN DIGITAL VENTURES, INC.
Reel/Frame 032565/0053 →
Continuity (3)
Continuation 11846657 · Aug 29, 2007
Division 10176498 · Jun 21, 2002
Provisional Application 60308918 · Jul 27, 2001