IP Library Granted Patent US 10,911,560
Granted Patent B2
US 10,911,560 · App. 16/184,363 · Granted Feb 2, 2021

Partitioned serialized caching and delivery of large files

Inventors: Juan Bran (Los Angeles, CA); Derek Shiell (Los Angeles, CA)
Assignee: Verizon Digital Media Services Inc.
H04L67/2842H04L67/06
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 10,911,560
App. No.
16/184,363
Granted
Feb 2, 2021
Kind
B2
Abstract

Some embodiments provide partitioned serialized caching and delivery of large sized content and files. Some embodiments partition requests for large sized content into segment requests with each segment request identifying a different byte range of the requested content. Each segment request is hashed to identify a particular server from a set of servers tasked with caching and delivering a different segment of the requested content. In this manner, no single server caches or delivers the entirety of large sized content. The segment requests are distributed serially across the set of servers so that the segments are passed in order, wherein the serial distribution involves handing-off the requesting user's connection serially to each server of the set of server in the order with which the set of servers deliver the content segments.

Claims (39)

1. A method comprising:

receiving, from a client device at a request management server, a client request directed to a file, wherein the client request does not specify a byte range;

generating, from the client request at the request management server, a first subrequest directed to a first byte range of the file, and a second subrequest directed to a second byte range of the file that does not overlap with the first byte range, wherein the first subrequest and the second subrequest comprise at least one of a different header or Uniform Resource Locator (URL) than the client request received from the client device;

distributing (i) the first subrequest, instead of the client request, from the request management server to a first server of a set of servers in a common site with the request management server, and the second subrequest, instead of the client request, from the request management server to a second server of the set of servers;

serving the first byte range of the file to the client device from the first server in response to said distributing of the first subrequest; and

serving the second byte range of the file to the client device from the second server in response to said distributing of the second subrequest.

2. The method of claim 1 further comprising determining that a size of the file exceeds a size threshold.

3. The method of claim 2 further comprising caching the first byte range of the file at the first server, and the second byte range of the file at the second server in response to the size of the file exceeding the size threshold, wherein the first server and the second server preserve storage by caching mutually exclusive and different parts of the file.

4. The method of claim 2 further comprising selecting the first server to serve the first byte range based on the size of the file exceeding the size threshold and a result of hashing an identifier identifying the file and the first byte range, and selecting the second server to serve the second byte range based on the size of the file exceeding the size threshold and a result of hashing the identifier identifying the file and the second byte range.

5. The method of claim 1 , wherein the first subrequest specifies the first byte range in a range request HyperText Transfer Protocol (HTTP) header field of a first request message, and the second subrequest specifies the second byte range in the range request HTTP header field of a second request message.

6. The method of claim 1 further comprising routing the client request from the client device to the request management server based on a hash of an identifier identifying the file, routing the first subrequest from the request management server to the first server based on a hash of the identifier and the first byte range, and routing the second subrequest from the request management server to the second server based on a hash of the identifier and the second byte range.

7. The method of claim 1 further comprising obtaining a size of the file in response to receiving the client request from the client device.

8. The method of claim 7 , wherein obtaining the size comprises issuing a head request from the request management to an origin server that stores said file, and receiving the size without contents of the file from the origin server in response to the head request.

9. The method of claim 7 , wherein obtaining the size comprises performing a lookup of the size based on an identifier identifying the file in the client request, and identifying the size based on the lookup.

10. The method of claim 7 further comprising partitioning the client request into at least the first and second subrequests based on the size of the file exceeding a size threshold.

11. The method of claim 10 , wherein said partitioning comprises setting the first byte range to span a first number of bytes equal to a segment stripe size, and setting the second byte range to span a second number of bytes that immediately follow the first number of bytes and that equal the segment stripe size.

12. The method of claim 1 , wherein said generating comprises appending the first byte range to a URL of the first subrequest, and appending the second byte range to a URL of the second subrequest.

13. A method comprising:

receiving, from a client device, a client request directed to a first byte range of a file;

generating, from the client request, a first subrequest with a second byte range starting at a first byte of the first byte range and ending at a last byte that is before a last byte of the first byte range, wherein the first subrequest comprises at least one of a different header or Uniform Resource Locator (URL) than the client request received from the client device;

generating, from the client request, a second subrequest with a third byte range starting at a byte after the last byte of the second byte range and ending at the last byte of the first byte range, wherein the second subrequest comprises at least one of a different header or URL than the client request and the first subrequest;

distributing (i) the first subrequest, instead of the client request, to a first server of a set of servers, and (ii) the second subrequest, instead of the client request, to a second server of the set of servers;

serving the second byte range of the file to the client device directly from the first server in response to said distributing of the first subrequest; and

serving the third byte range of the file to the client device directly from the second server in response to said distributing of the second subrequest, wherein the second server is different than the first server.

14. The method of claim 13 further comprising determining that the first byte range is larger than a segment stripe size for cached segments of the particular file, and partitioning the request into at least the first subrequest and the second subrequest based on said determining.

15. The method of claim 13 further comprising routing the first subrequest to the first server based on hashing an identifier and the second byte range of the first subrequest, and routing the second subrequest to the second server based on hashing the identifier and the third byte range of the second subrequest.

16. The method of claim 13 , wherein said generating the first subrequest comprises setting a first byte of the second byte range to coincide with the first byte of the first byte range, and setting a last byte of the second byte range to span a segment stripe size from the first byte of the second byte range.

17. The method of claim 13 further comprising caching the second byte range of the file at the first server, and caching the third byte range of the file at the second server.

18. The method of claim 13 , wherein the first subrequest specifies the second byte range in a range request HyperText Transfer Protocol (HTTP) header field, and the second subrequest specifies the third byte range in the range request HTTP header field.

19. The method of claim 13 , wherein the first subrequest specifies the second byte range as parameters of a URL directed to said file.

20. A system comprising:

a first server comprising storage caching a first byte range of a file;

a second server comprising storage caching a second non-overlapping byte range of the file;

a third server comprising:

one or more processors configured to:

receive a client request that is directed to the file from a client device;

generate, from the client request, a first subrequest directed to the first byte range of the file, and a second subrequest directed to the second byte range of the file that does not overlap with the first byte range, wherein the first subrequest and the second subrequest comprise at least one of a different header or Uniform Resource Locator (URL) than the client request received from the client device;

route, to the first server, the first subrequest directed to the file and the first byte range of the file instead of the client request, wherein the first server serves the first byte range of the file directly to the client device in response to receiving the first subrequest;

route, to the second server, the second subrequest directed to the file and the second byte range of the file instead of the client request, and wherein the second server directly serves the second byte range of the file to the client device in response to receiving the second subrequest.

Assignments (11)
RELEASE OF PATENT SECURITY AGREEMENT [RECORDED AT REEL/FRAME 065597/0406] Recorded Jul 9, 2025
From: U.S. BANK TRUST COMPANY, NATIONAL ASSOCIATION
To: UPLYNK, INC. (F/K/A EDGIO, INC.)
Reel/Frame 071875/0105 →
RELEASE OF PATENT SECURITY AGREEMENT [RECORDED AT REEL/FRAME 065597/0212] Recorded Jul 3, 2025
From: LYNROCK LAKE MASTER FUND LP
To: UPLYNK, INC. (F/K/A EDGIO, INC.); MOJO MERGER SUB, LLC
Reel/Frame 071817/0877 →
RELEASE OF PATENT SECURITY AGREEMENT [RECORDED AT REEL/FRAME 068763/0276] Recorded Jul 3, 2025
From: LYNROCK LAKE MASTER FUND LP
To: UPLYNK, INC. (F/K/A EDGIO, INC.); MOJO MERGER SUB, LLC
Reel/Frame 071818/0022 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jan 30, 2025
From: EDGIO, INC.
To: DRNC HOLDINGS, INC.
Reel/Frame 070071/0327 →
PATENT SECURITY AGREEMENT Recorded Aug 23, 2024
From: EDGIO, INC.; MOJO MERGER SUB, LLC
To: LYNROCK LAKE MASTER FUND LP [LYNROCK LAKE PARTNERS LLC, ITS GENERAL PARTNER]
Reel/Frame 068763/0276 →
PATENT SECURITY AGREEMENT Recorded Nov 15, 2023
From: EDGIO, INC.; MOJO MERGER SUB, LLC
To: LYNROCK LAKE MASTER FUND LP [LYNROCK LAKE PARTNERS LLC, ITS GENERAL PARTNER]
Reel/Frame 065597/0212 →
PATENT SECURITY AGREEMENT Recorded Nov 15, 2023
From: EDGIO, INC.; MOJO MERGER SUB, LLC
To: U.S. BANK TRUST COMPANY, NATIONAL ASSOCIATION
Reel/Frame 065597/0406 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Oct 21, 2022
From: EDGECAST INC.
To: EDGIO, INC.
Reel/Frame 061738/0972 →
CHANGE OF NAME Recorded Mar 15, 2022
From: VERIZON DIGITAL MEDIA SERVICES INC.
To: EDGECAST INC.
Reel/Frame 059367/0990 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Nov 8, 2018
From: BRAN, JUAN; SHIELL, DEREK
To: EDGECAST NETWORKS, INC.
Reel/Frame 047453/0957 →
CHANGE OF NAME Recorded Nov 8, 2018
From: EDGECAST NETWORKS, INC.
To: VERIZON DIGITAL MEDIA SERVICES INC.
Reel/Frame 047476/0192 →
Continuity (2)
Continuation 14996930 · Jan 15, 2016
Related Publication 20190075182A1 · Mar 7, 2019