IP Library › Granted Patent US 10,797,994
Granted Patent B1
US 10,797,994 · App. 16/840,014 · Granted Oct 6, 2020

Decentralized system for distributing digital content

Inventors: Michelle Munson (Berkeley, CA); Serban Simu (Berkeley, CA)
Assignee: Eluvio, Inc.
H04L45/64G06F21/602H04L9/0643H04L9/3239H04L49/1553H04L49/602H04L67/104H04L2209/38
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,797,994
App. No.
16/840,014
Granted
Oct 6, 2020
Kind
B1
Abstract

Disclosed are examples of decentralized systems and related apparatus, devices, computer program products, and methods for distributing digital content. In some implementations, an overlay network of fabric nodes is implemented in an application layer differentiated from an internet protocol layer. One or more network-wide parameters and a node identifier (ID) identifying a fabric node are obtained. A set of partition identifiers (IDs) for the node ID is determined using the one or more network-wide parameters. The partition IDs identify partitions to be managed by the fabric node. At least a portion of digital content in the overlay network can be distributed using a partition ID.

Claims (95)

1. A decentralized system for distributing digital content in an overlay network of nodes, the system comprising:

a memory device; and

one or more processors in communication with the memory device, the one or more processors configured to execute a software stack to provide one or more of a plurality of fabric nodes of an overlay network implemented in an application layer differentiated from an internet protocol (IP) layer, the overlay network configured to:

obtain, for a fabric node:

a node identifier (ID) identifying the fabric node, and

one or more network-wide parameters;

determine, using the one or more network-wide parameters, a set of partition identifiers (IDs) for the node ID, the partition IDs comprising:

a first partition ID identifying a first partition to be managed by the fabric node, and

a second one or more partition IDs identifying a second one or more partitions to be managed by the fabric node;

provide the first partition and the second one or more partitions to be managed by the fabric node; and

distribute at least a portion of the digital content in the overlay network using at least the first partition ID, the distributing of at least the portion of digital content in the overlay network comprising:

computing a partition for a content object part,

computing an exclusive or (XOR) distance between the content object part partition and the first partition,

comparing the XOR distance with a number of partitions per fabric node in the overlay network, the number of partitions per fabric node in the overlay network being a network-wide parameter, and

determining an assignment for the content object part with respect to the fabric node based on the comparison of the XOR distance with the number of partitions per fabric node in the overlay network.

2. The system of claim 1 , wherein the content object part partition has a prefix comprising a portion of a hash of the content object part, and the first partition is a base partition having a prefix comprising a portion of the node ID.

3. The system of claim 2 , wherein the portion of the hash of the content object part and the portion of the node ID both have a number of digits equal to a number of partitions in the overlay network, the number of partitions in the overlay network being a network-wide parameter.

4. The system of claim 1 , the second one or more partition IDs being determined according to a distance property, the distance property being that an XOR distance between each second partition ID and the first partition ID is less than or equal to the number of partitions per fabric node in the overlay network.

5. The system of claim 1 , wherein obtaining the node ID identifying the fabric node comprises:

the fabric node self-generating and self-assigning the node ID.

6. The system of claim 1 , wherein a number of the partition IDs in the set is equal to the number of partitions per fabric node in the overlay network.

7. The system of claim 1 , wherein each second partition has a bit size matching a bit size of the first partition.

8. The system of claim 1 , the overlay network further configured to:

obtain a join request from a new fabric node;

send to the new fabric node:

network addresses of at least a subset of the plurality of fabric nodes, and

the one or more network-wide parameters;

obtain a routing tree request from the new fabric node; and

send one or more routing trees to the new fabric node.

9. The system of claim 8 , the one or more network-wide parameters comprising one or more of: a network address of the new fabric node, one or more partition IDs identifying one or more partitions to be managed by the new fabric node, a number of copies of each partition, or a template for IP multicast group subscription.

10. The system of claim 8 , the overlay network further configured to authenticate the new fabric node.

11. The system of claim 8 , the overlay network further configured to send one or more content object parts for one or more partitions to be managed by the new fabric node.

12. A non-transitory computer-readable medium storing program code to be executed by one or more processors, the program code comprising instructions configured to cause:

providing one or more of a plurality of fabric nodes of an overlay network implemented in an application layer differentiated from an internet protocol (IP) layer, the overlay network configured to:

obtain, for a fabric node:

a node identifier (ID) identifying the fabric node, and

one or more network-wide parameters;

determine, using the one or more network-wide parameters, a set of partition identifiers (IDs) for the node ID, the partition IDs comprising:

a first partition ID identifying a first partition to be managed by the fabric node, and

a second one or more partition IDs identifying a second one or more partitions to be managed by the fabric node;

provide the first partition and the second one or more partitions to be managed by the fabric node; and

distribute at least a portion of digital content in the overlay network using at least the first partition ID, the distributing of at least the portion of digital content in the overlay network comprising:

computing a partition for a content object part,

computing an exclusive or (XOR) distance between the content object part partition and the first partition,

comparing the XOR distance with a number of partitions per fabric node in the overlay network, the number of partitions per fabric node in the overlay network being a network-wide parameter, and

determining an assignment for the content object part with respect to the fabric node based on the comparison of the XOR distance with the number of partitions per fabric node in the overlay network.

13. The non-transitory computer-readable medium of claim 12 , wherein the content object part partition has a prefix comprising a portion of a hash of the content object part, and the first partition is a base partition having a prefix comprising a portion of the node ID.

14. The non-transitory computer-readable medium of claim 13 , wherein the portion of the hash of the content object part and the portion of the node ID both have a number of digits equal to a number of partitions in the overlay network, the number of partitions in the overlay network being a network-wide parameter.

15. The non-transitory computer-readable medium of claim 12 , the second one or more partition IDs being determined according to a distance property, the distance property being that an XOR distance between each second partition ID and the first partition ID is less than or equal to the number of partitions per fabric node in the overlay network.

16. The non-transitory computer-readable medium of claim 12 , wherein a number of the partition IDs in the set is equal to the number of partitions per fabric node in the overlay network.

17. The non-transitory computer-readable medium of claim 12 , the overlay network further configured to:

obtain a join request from a new fabric node;

send to the new fabric node:

network addresses of at least a subset of the plurality of fabric nodes, and

the one or more network-wide parameters;

obtain a routing tree request from the new fabric node; and

send one or more routing trees to the new fabric node.

18. The non-transitory computer-readable medium of claim 17 , the one or more network-wide parameters comprising one or more of: a network address of the new fabric node, one or more partition IDs identifying one or more partitions to be managed by the new fabric node, a number of copies of each partition, or a template for IP multicast group subscription.

19. The non-transitory computer-readable medium of claim 17 , the overlay network further configured to:

authenticate the new fabric node; and

send one or more content object parts for one or more partitions to be managed by the new fabric node.

20. The non-transitory computer-readable medium of claim 12 , wherein obtaining the node ID identifying the fabric node comprises:

the fabric node self-generating and self-assigning the node ID.

21. The non-transitory computer-readable medium of claim 12 , wherein each second partition has a bit size matching a bit size of the first partition.

22. A method comprising:

providing one or more of a plurality of fabric nodes of an overlay network implemented in an application layer differentiated from an internet protocol (IP) layer, the overlay network configured to:

obtain, for a fabric node:

a node identifier (ID) identifying the fabric node, and

one or more network-wide parameters;

determine, using the one or more network-wide parameters, a set of partition identifiers (IDs) for the node ID, the partition IDs comprising:

a first partition ID identifying a first partition to be managed by the fabric node, and

a second one or more partition IDs identifying a second one or more partitions to be managed by the fabric node;

provide the first partition and the second one or more partitions to be managed by the fabric node; and

distribute at least a portion of digital content in the overlay network using at least the first partition ID, the distributing of at least the portion of digital content in the overlay network comprising:

computing a partition for a content object part,

computing an exclusive or (XOR) distance between the content object part partition and the first partition,

comparing the XOR distance with a number of partitions per fabric node in the overlay network, the number of partitions per fabric node in the overlay network being a network-wide parameter, and

determining an assignment for the content object part with respect to the fabric node based on the comparison of the XOR distance with the number of partitions per fabric node in the overlay network.

23. The method of claim 22 , wherein the content object part partition has a prefix comprising a portion of a hash of the content object part, and the first partition is a base partition having a prefix comprising a portion of the node ID.

24. The method of claim 23 , wherein the portion of the hash of the content object part and the portion of the node ID both have a number of digits equal to a number of partitions in the overlay network, the number of partitions in the overlay network being a network-wide parameter.

25. The method of claim 22 , the second one or more partition IDs being determined according to a distance property, the distance property being that an XOR distance between each second partition ID and the first partition ID is less than or equal to the number of partitions per fabric node in the overlay network.

26. The method of claim 22 , wherein a number of the partition IDs in the set is equal to the number of partitions per fabric node in the overlay network.

27. The method of claim 22 , the overlay network further configured to:

obtain a join request from a new fabric node;

send to the new fabric node:

network addresses of at least a subset of the plurality of fabric nodes, and

the one or more network-wide parameters;

obtain a routing tree request from the new fabric node; and

send one or more routing trees to the new fabric node.

28. The method of claim 27 , the one or more network-wide parameters comprising one or more of: a network address of the new fabric node, one or more partition IDs identifying one or more partitions to be managed by the new fabric node, a number of copies of each partition, or a template for IP multicast group subscription.

29. The method of claim 27 , the overlay network further configured to:

authenticate the new fabric node; and

send one or more content object parts for one or more partitions to be managed by the new fabric node.

30. The method of claim 22 , wherein obtaining the node ID identifying the fabric node comprises:

the fabric node self-generating and self-assigning the node ID.

Continuity (2)
Continuation 16655033 · Oct 16, 2019
Provisional Application 62746475 · Oct 16, 2018
Cited By (2)
US 12,477,028 US 12,706,842