IP Library Granted Patent US 11,233,734
Granted Patent B2
US 11,233,734 · App. 16/840,027 · Granted Jan 25, 2022

Decentralized content fabric

Inventors: Michelle Munson (Berkeley, CA); Serban Simu (Berkeley, CA)
Assignee: Eluvio, Inc.
H04L45/64G06F9/4552G06F9/45516G06F21/602G06N20/00G06Q10/10G06Q20/1235G06Q20/3674G06Q20/3825G06Q20/3829G06Q20/401G06Q50/265H04L9/0637H04L9/0643H04L9/083H04L9/0861H04L9/14H04L9/3213H04L9/3234H04L9/3239H04L9/3247H04L41/20H04L45/04H04L45/08H04L45/14H04L45/70H04L45/7453H04L49/1553H04L49/25H04L49/602H04L63/0428H04L63/0478H04L65/4084H04L65/60H04L67/104H04L67/108H04L67/1065H04L67/1076H04L67/1091H04L67/2842H04L69/325G06Q2220/10H04L67/42H04L69/329H04L2209/38H04L2209/56
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 11,233,734
App. No.
16/840,027
Granted
Jan 25, 2022
Kind
B2
Abstract

Disclosed are examples of systems, apparatus, devices, computer program products, and methods implementing aspects of digital content retrieval using a decentralized content fabric. In some implementations, fabric nodes of an overlay network are provided. A first fabric node is configured to: determine, responsive to a client request for a content object part, that the content object part is not stored locally at the first fabric node; identify a second one or more fabric nodes as a best match; send a network request for the content object part to the second one or more fabric nodes; obtain the content object part from the second one or more fabric nodes; and process the content object part with further content object parts to produce the digital content for the client.

Claims (55)

1. A decentralized system for retrieving digital content from 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 a first fabric node and a plurality of fabric nodes of an overlay network implemented in an application layer differentiated from an internet protocol layer, the first fabric node situated in a first network domain, the plurality of fabric nodes situated in a second one or more network domains external to the first network domain, the first fabric node configured to:

obtain, from a client, a client request for a content object part, the content object part representing, in the overlay network, a portion of the digital content,

determine, responsive to the client request for the content object part, that the content object part is not stored locally at the first fabric node by at least:

calculating a partition for the content object part, and

determining that the calculated partition does not match one or more node partitions of the first fabric node,

identify a second one or more of the plurality of fabric nodes in communication with the first fabric node as a best match for a target partition using an inter-domain routing tree,

send, responsive to determining that the content object part is not stored locally at the first fabric node, an inter-domain network request for the content object part to the second one or more fabric nodes, each second fabric node having been assigned to store the content object part by at least:

computing an exclusive or (XOR) distance between the calculated partition and a second partition managed by the second fabric node, and

determining that the XOR distance traverses 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,

obtain, from the second one or more fabric nodes, the content object part,

process the content object part with a plurality of further content object parts to produce the digital content, and

provide the digital content to the client.

2. The system of claim 1 , wherein the inter-domain network request is generated using one or more of: a multicast address for the calculated partition, a part identifier (ID) for the content object part, or one or more node identifiers (IDs) of one or more of the plurality of fabric nodes identified based on one or more predicted performance scores for the identified one or more fabric nodes.

3. The system of claim 1 , the first fabric node further configured to send an intra-domain network request for the content object part to a third one or more of the plurality of fabric nodes.

4. The system of claim 1 , the second one or more fabric nodes each storing a respective non-overlapping segment of the content object part.

5. The system of claim 1 , the first fabric node further configured to determine that the content object part is not stored at a plurality of intra-domain nodes situated with the first fabric node in the first network domain.

6. The system of claim 1 , the first fabric node further configured to update the inter-domain routing tree with one or more node IDs of the second one or more fabric nodes for a designated partition.

7. 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 a first fabric node and a plurality of fabric nodes of an overlay network implemented in an application layer differentiated from an internet protocol layer, the first fabric node situated in a first network domain, the plurality of fabric nodes situated in a second one or more network domains external to the first network domain, the first fabric node configured to:

obtain, from a client, a client request for a content object part, the content object part representing, in the overlay network, a portion of digital content,

determine, responsive to the client request for the content object part, that the content object part is not stored locally at the first fabric node by at least:

calculating a partition for the content object part, and

determining that the calculated partition does not match one or more node partitions of the first fabric node,

identify a second one or more of the plurality of fabric nodes in communication with the first fabric node as a best match for a target partition using an inter-domain routing tree,

send, responsive to determining that the content object part is not stored locally at the first fabric node, an inter-domain network request for the content object part to the second one or more fabric nodes, each second fabric node having been assigned to store the content object part by at least:

computing an exclusive or (XOR) distance between the calculated partition and a second partition managed by the second fabric node, and

determining that the XOR distance traverses 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,

obtain, from the second one or more fabric nodes, the content object part,

process the content object part with a plurality of further content object parts to produce the digital content, and

provide the digital content to the client.

8. The non-transitory computer-readable medium of claim 7 , wherein the inter-domain network request is generated using one or more of: a multicast address for the calculated partition, a part identifier (ID) for the content object part, or one or more node identifiers (IDs) of one or more of the plurality of fabric nodes identified based on one or more predicted performance scores for the identified one or more fabric nodes.

9. The non-transitory computer-readable medium of claim 7 , the first fabric node further configured to send an intra-domain network request for the content object part to a third one or more of the plurality of fabric nodes.

10. The non-transitory computer-readable medium of claim 7 , the second one or more fabric nodes each storing a respective non-overlapping segment of the content object part.

11. The non-transitory computer-readable medium of claim 7 , the first fabric node further configured to determine that the content object part is not stored at a plurality of intra-domain nodes situated with the first fabric node in the first network domain.

12. The non-transitory computer-readable medium of claim 7 , the first fabric node further configured to update the inter-domain routing tree with one or more node IDs of the second one or more fabric nodes for a designated partition.

13. A method comprising:

obtaining, from a client, at a first fabric node of an overlay network implemented in an application layer differentiated from an internet protocol layer, a client request for a content object part, the content object part representing, in the overlay network, a portion of digital content, the first fabric node situated in a first network domain and a plurality of fabric nodes situated in a second one or more network domains external to the first network domain;

determining, responsive to the client request for the content object part, that the content object part is not stored locally at the first fabric node by at least:

calculating a partition for the content object part, and

determining that the calculated partition does not match one or more node partitions of the first fabric node;

identifying a second one or more of the plurality of fabric nodes in communication with the first fabric node as a best match for a target partition using an inter-domain routing tree;

sending, responsive to determining that the content object part is not stored locally at the first fabric node, an inter-domain network request for the content object part to the second one or more fabric nodes, each second fabric node having been assigned to store the content object part by at least:

computing an exclusive or (XOR) distance between the calculated partition and a second partition managed by the second fabric node, and

determining that the XOR distance traverses 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; obtaining, from the second one or more fabric nodes, the content object part;

processing the content object part with a plurality of further content object parts to produce the digital content; and

providing the digital content to the client.

14. The method of claim 13 , wherein the inter-domain network request is generated using one or more of: a multicast address for the calculated partition, a part identifier (ID) for the content object part, or one or more node identifiers (IDs) of one or more of the plurality of fabric nodes identified based on one or more predicted performance scores for the identified one or more fabric nodes.

15. The method of claim 13 , the first fabric node further configured to send an intra-domain network request for the content object part to a third one or more of the plurality of fabric nodes.

16. The method of claim 13 , the second one or more fabric nodes each storing a respective non-overlapping segment of the content object part.

17. The method of claim 13 , further comprising:

determining that the content object part is not stored at a plurality of intra-domain nodes situated with the first fabric node in the first network domain.

18. The method of claim 13 , further comprising:

updating the inter-domain routing tree with one or more node IDs of the second one or more fabric nodes for a designated partition.

Continuity (3)
Continuation 16655033 · Oct 16, 2019
Provisional Application 62746475 · Oct 16, 2018
Related Publication 20210112117A1 · Apr 15, 2021
Cited By (2)
US 12,477,028 US 12,706,842