IP Library Granted Patent US 9,887,885
Granted Patent B2
US 9,887,885 · App. 14/579,640 · Granted Feb 6, 2018

Dynamic fill target selection in a content delivery framework

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,887,885
App. No.
14/579,640
Granted
Feb 6, 2018
Kind
B2
Abstract

In a content delivery framework including a network with multiple delivery service endpoints running on devices, the multiple service endpoints forming a plurality of sub-clusters, a group is defined from a set of nodes comprising delivery service instances across the devices of the plurality of sub-clusters. Each node in the group assumes one or more discrete responsibilities involved in processing of a request across the group, the discrete responsibilities including being fill-responsible. A fill-responsible node is selected from the group to be responsible for processing a request made at a node of the group, the request relating to a particular resource. Selection of the fill-responsible node is based on the particular resource, and the fill-responsible node is selected from a set of one or more nodes in the group that are fill-responsible for the particular resource, the set being defined based on a policy associated with the particular resource.

Claims (49)

1. A computer-implemented method, in a content delivery framework including a network comprising multiple content delivery service endpoints, said content delivery service endpoints running on a plurality of devices, wherein said multiple content service endpoints form a plurality of sub-clusters, the method operable on a device comprising hardware including memory and at least one processor, the method comprising:

(A) defining a group from a first set of nodes comprising content delivery service instances across the devices of said plurality of sub-clusters, wherein each node in the group assumes one or more discrete responsibilities involved in processing of a content delivery request across the group, wherein said discrete responsibilities include being fill-responsible for said content delivery request, and wherein the defining of the group is according to a peering policy at least based on capabilities and capacities of nodes in the group, wherein said peering policy maps different request types to different responsibility chains;

(B) selecting, from a second set, a particular fill-responsible node to be responsible for processing a particular content delivery request made at a node of the group, said particular content delivery request relating to particular content comprising a particular resource, said particular resource comprising content deliverable by the content delivery framework, said selecting of said particular fill-responsible node being based on said particular resource,

wherein the second set comprises nodes that are fill-responsible for the particular resource, including (i) one or more nodes in the group that are fill-responsible for the particular resource, and (ii) at least one fill-responsible node outside the group,

said second set being defined based on a policy associated with the particular resource; and (C) one of:

(C)(1) redirecting said particular content delivery request to said particular fill-responsible node; and

(C)(2) filling the particular resource from said particular fill-responsible node, wherein, in (C)(1) and (C)(2), if said particular fill-responsible node does not have said particular resource in a cache thereof, said particular fill-responsible node fills the particular resource from a remote fill target.

2. The method of claim 1 wherein the second set of fill-responsible nodes for the particular resource is defined based on one or more of: (i) popularity of the particular resource, (ii) cacheability of the particular resource, and (iii) size of the particular resource.

3. The method of claim 1 wherein the policy associated with the particular resource is determined at request time.

4. The method of claim 3 wherein the policy associated with the particular resource is determined at request time based on one or more of: (i) estimates of the particular resource's popularity, (ii) the particular resource's cacheability, and (iii) the particular resource's size.

5. The method of claim 4 wherein the policy associated with the particular resource is also determined using at least one capability of a receiving cluster.

6. The method of claim 1 wherein the defining of the group in (A) is repeated.

7. The method of claim 6 wherein the defining of the group in (A) is based on capacity of nodes in the group.

8. The method of claim 1 further comprising:

(D) processing the particular content delivery request using the particular fill-responsible node.

9. The method of claim 1 wherein the one or more fill-responsible nodes in the sat are selected based on (i) a policy in effect at the time of the particular content delivery request, and (ii) a capacity of nodes in the group.

10. The method of claim 1 wherein the policy associated with the particular resource is defined for a group of resources deliverable by the content delivery framework.

11. The method of claim 10 wherein the group of resources comprises a property, said property comprising one or more resources associated with a subscriber to the content delivery framework.

12. The method of claim 1 wherein said group comprises a peer group.

13. The method of claim 1 wherein two or more of said sub-clusters form a super-cluster.

14. A device, operable in a content delivery framework including a network comprising multiple delivery service endpoints, said delivery service endpoints running on a plurality of devices, wherein said multiple service endpoints form a plurality of sub-clusters, the device comprising:

hardware including memory and at least one processor, and

a service running on said hardware, wherein said service is configured to:

(a) define a group from a first set of nodes comprising content delivery service instances across the devices of said plurality of sub-clusters, wherein each node in the group assumes one or more discrete responsibilities involved in processing of a content delivery request across the group, wherein said discrete responsibilities include being fill-responsible for said content delivery request, and wherein the defining of the group is according to a peering policy at least based on capabilities and capacities of nodes in the group, wherein said peering policy maps different request types to different responsibility chains; and

(b) select, from a second set, a particular fill-responsible node to be responsible for processing a particular content delivery request made at a node of the group, said particular content delivery request relating to a particular resource, said selecting of said particular fill-responsible node being based on said particular resource,

wherein the second set comprises nodes that are fill-responsible for the particular resource, including (i) one or more nodes in the group that are fill-responsible for the particular resource, and (ii) at least one fill-responsible node outside the group,

said particular resource comprising content deliverable by the content delivery framework, said second set being defined based on a policy associated with the particular resource; and

(c) one of:

(c)(1) redirect said particular content delivery request to said particular fill-responsible node; and

(c)(2) fill the particular resource from said particular fill-responsible node, wherein, in (c)(1) and (c)(2), if said particular fill-responsible node does not have said particular resource in a cache thereof, said particular fill-responsible node fills the particular resource from a remote fill target.

15. A system comprising at least two devices according to claim 14 .

16. An article of manufacture, comprising non-transitory computer-readable media having computer-readable instructions stored thereon, the computer readable instructions including instructions for implementing a computer-implemented method, said method operable on a device comprising hardware including memory and at least one processor and running a service on said hardware, said method operable in a content delivery framework including a network comprising multiple delivery service endpoints, said delivery service endpoints running on a plurality of devices, wherein said multiple service endpoints form a plurality of sub-clusters, the method operable on a device comprising hardware including memory and at least one processor,

said method comprising:

(A) defining a group from a first set of nodes comprising delivery service instances across the devices of said plurality of sub-clusters, wherein each node in the group assumes one or more discrete responsibilities involved in processing of a content delivery request across the group, wherein said discrete responsibilities include being fill-responsible for said content delivery request, and wherein the defining of the group is according to a peering policy at least based on capabilities and capacities of nodes in the group, wherein said peering policy maps different request types to different responsibility chains;

(B) selecting, from a second set, a particular fill-responsible node to be responsible for processing a particular content delivery request made at a node of the group, said particular content delivery request relating to a particular resource, said selecting of said fill-responsible node being based on said particular resource,

wherein the second set comprises nodes that are fill-responsible for the particular resource, including (i) one or more nodes in the group that are fill-responsible for the particular resource, and (ii) at least one fill-responsible node outside the group,

said particular resource comprising content deliverable by the content delivery framework, said second set being defined based on a policy associated with the particular resource;

(C) one of:

(C)(1) redirect said particular content delivery request to said particular fill-responsible node; or

(C)(2) fill the particular resource from said particular fill-responsible node, wherein, in (C)(1) and (C)(2), if said particular fill-responsible node does not have said particular resource in a cache thereof, said particular fill-responsible node fills the particular resource from a remote fill target.

17. The method of claim 1 wherein act (C) to comprises one of (C)(1), (C)(2), and

(C)(3) proxying said particular content delivery request to said particular fill-responsible node,

wherein, in (C)(3), if said particular fill-responsible node does not have said particular resource in a cache thereof, said particular fill-is responsible node fills the particular resource from a remote fill target.

18. The device of claim 14 wherein (c) comprises one of (c)(1), (c)(2), and

(c)(3) proxy said particular content delivery request to said particular fill-responsible node,

wherein, in (c)(3), if said particular fill-responsible node does not have said particular resource in a cache thereof, said particular fill-responsible node fills the particular resource from a remote fill target.

19. The article of manufacture of claim 16 wherein (C) comprises one of (C)(1), (C)(2), and

(C)(3) proxy said particular content delivery request to said particular fill-responsible node,

wherein, in (C)(3), if said particular fill-responsible node does not have said particular resource in a cache thereof, said particular fill-responsible node fills the particular resource from a remote fill target.

Assignments (2)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jul 9, 2024
From: LEVEL 3 COMMUNICATIONS, LLC
To: SANDPIPER CDN, LLC
Reel/Frame 068256/0091 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Dec 23, 2014
From: NEWTON, CHRISTOPHER; VARNEY, L. ROBERT; LIPSTONE, LAURENCE R.; CROWDER, WILLIAM; SWART, ANDREW
To: LEVEL 3 COMMUNICATIONS, LLC
Reel/Frame 034577/0321 →