# US 10,484,467 B2 · Dynamic swarm segmentation

> Agents: this data is available as JSON from the patentgrep API and MCP server — see https://patentgrep.com/llms.txt

- Number: US 10,484,467 B2
- Document ID: US10484467B2
- Status: Granted
- Kind: B2
- Application number: 16/144,862
- Filed: 2018-09-27
- Published: 2019-01-24
- Granted: 2019-11-19
- Earliest claimed: 2015-05-29
- Assignees: Microsoft Technology Licensing, LLC
- Applicants: Microsoft Technology Licensing, LLC
- Inventors: Alexander Burba; Brandon T. Hunt
- Web page: https://patentgrep.com/patent/US10484467B2

## CPC

- H04L 67/1078: {Resource delivery mechanisms}
- G06F 16/1834: {implemented based on peer-to-peer networks, e.g. gnutella (p2p communication protocols H04L67/104)}
- H04L 67/1072: {Discovery involving ranked list compilation of candidate peers}
- H04L: TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION (arrangements common to telegraphic and telephonic communication H04M)
- G06F: ELECTRIC DIGITAL DATA PROCESSING (computer systems based on specific computational models G06N)

## Abstract

A dataset comprising a plurality of byte ranges is identified. A tree structure is created that represents different subsets of these byte ranges. The tree structure comprises a plurality of nodes that is each associated with a different subset of the byte ranges. These nodes are hierarchically-arranged, such that byte ranges associated with each child node are a subset of byte ranges associated with each parent node. One or more of the byte ranges are identified for each client of a plurality of clients. These are range(s) that the client needs to obtain. Each client is associated with one of the nodes of the tree structure that is, itself, associated with byte ranges that match the byte ranges that the client needs to obtain. Client peers are identified based on based on traversing the tree structure from a node associated with one client to a node associated with a peer.

## Claims

### Claim 1

A system, comprising:
one or more processors; and
one or more computer-readable media having stored thereon computer-executable instructions that are executable by the one or more processors to use a tree structure representing a dataset to identify a client peer for obtaining a portion of the dataset, the computer-executable instructions including instructions that are executable to cause the one or more processors to perform at least the following:
identify a dataset comprising a plurality of byte ranges;
create a tree structure that represents different subsets of the plurality of byte ranges of the dataset, the tree structure comprising a plurality of nodes that is each associated with a different subset of one or more ranges of the plurality of byte ranges, the plurality of nodes being hierarchically-arranged such that one or more byte ranges associated with each child node in the tree structure are a subset of one or more byte ranges associated with each parent node in the tree structure;
identify, for each client of a plurality of clients, one or more byte ranges of the plurality of byte ranges of the dataset that the client needs to obtain;
associate each client of the plurality of clients with one of the plurality of nodes of the tree structure, including associating each client with a node of the tree structure that is, itself, associated with one or more byte ranges that match the one or more byte ranges that the client needs to obtain; and
identify, for at least a first client of the plurality of clients, at least one second client of the plurality of clients that is a peer to the first client for obtaining at least one byte range of the dataset, the identification being based on traversing the tree structure from a first node associated with the first client to a second node associated with the second client.

### Claim 2 (depends on 1)

The system of claim 1, wherein each client associated with a particular node is configured to act as a peer to one or more other clients associated with the particular node.

### Claim 3 (depends on 1)

The system of claim 1, wherein identifying the second client of the plurality of clients that is the peer to the first client, based on traversing the tree structure from the first node associated with the first client to the second node associated with the second client, comprises traversing the tree structure to identify a parent node of the first node that is associated with at least one client that also needs to obtain the least one byte range of the dataset.

### Claim 4 (depends on 1)

The system of claim 1, wherein the computer-executable instructions also instructions that are executable to cause the one or more processors to assign a virtual content to each node based on the subset of one or more ranges of the plurality of byte ranges that is associated with the node.

### Claim 5 (depends on 1)

The system of claim 1, wherein the computer-executable instructions also instructions that are executable to cause the one or more processors to prune nodes of the tree structure that are not associated with any client.

### Claim 6 (depends on 1)

The system of claim 1, wherein each client associated with a least one node has already obtained the one or more byte ranges that the client needs to obtain.

### Claim 7 (depends on 1)

The system of claim 1, wherein additional byte ranges that a client needs to obtain are predicted for at least one client of the plurality of clients.

### Claim 8

A method, implemented at a computer system that include one or more processors, for using a tree structure representing a dataset to identify a client peer for obtaining a portion of the dataset, the method comprising:
identifying a dataset comprising a plurality of byte ranges;
creating a tree structure that represents different subsets of the plurality of byte ranges of the dataset, the tree structure comprising a plurality of nodes that is each associated with a different subset of one or more ranges of the plurality of byte ranges, the plurality of nodes being hierarchically-arranged such that one or more byte ranges associated with each child node in the tree structure are a subset of one or more byte ranges associated with each parent node in the tree structure;
identifying, for each client of a plurality of clients, one or more byte ranges of the plurality of byte ranges of the dataset that the client needs to obtain;
associating each client of the plurality of clients with one of the plurality of nodes of the tree structure, including associating each client with a node of the tree structure that is, itself, associated with one or more byte ranges that match the one or more byte ranges that the client needs to obtain; and
identifying, for at least a first client of the plurality of clients, at least one second client of the plurality of clients that is a peer to the first client for obtaining at least one byte range of the dataset, the identification being based on traversing the tree structure from a first node associated with the first client to a second node associated with the second client.

### Claim 9 (depends on 8)

The method of claim 8, wherein each client associated with a particular node is configured to act as a peer to one or more other clients associated with the particular node.

### Claim 10 (depends on 8)

The method of claim 8, wherein identifying the second client of the plurality of clients that is the peer to the first client, based on traversing the tree structure from the first node associated with the first client to the second node associated with the second client, comprises traversing the tree structure to identify a parent node of the first node that is associated with at least one client that also needs to obtain the least one byte range of the dataset.

### Claim 11 (depends on 8)

The method of claim 8, further comprising assigning a virtual content to each node based on the subset of one or more ranges of the plurality of byte ranges that is associated with the node.

### Claim 12 (depends on 8)

The method of claim 8, further comprising pruning nodes of the tree structure that are not associated with any client.

### Claim 13 (depends on 8)

The method of claim 8, wherein each client associated with a least one node has already obtained the one or more byte ranges that the client needs to obtain.

### Claim 14 (depends on 8)

The method of claim 8, wherein additional byte ranges that a client needs to obtain are predicted for at least one client of the plurality of clients.

### Claim 15

A computer program product comprising one or more hardware storage devices having stored thereon computer-executable instructions that are executable by one or more processors to use a tree structure representing a dataset to identify a client peer for obtaining a portion of the dataset, the computer-executable instructions including instructions that are executable to cause the one or more processors to perform at least the following:
identify a dataset comprising a plurality of byte ranges;
create a tree structure that represents different subsets of the plurality of byte ranges of the dataset, the tree structure comprising a plurality of nodes that is each associated with a different subset of one or more ranges of the plurality of byte ranges, the plurality of nodes being hierarchically-arranged such that one or more byte ranges associated with each child node in the tree structure are a subset of one or more byte ranges associated with each parent node in the tree structure;
identify, for each client of a plurality of clients, one or more byte ranges of the plurality of byte ranges of the dataset that the client needs to obtain;
associate each client of the plurality of clients with one of the plurality of nodes of the tree structure, including associating each client with a node of the tree structure that is, itself, associated with one or more byte ranges that match the one or more byte ranges that the client needs to obtain; and
identify, for at least a first client of the plurality of clients, at least one second client of the plurality of clients that is a peer to the first client for obtaining at least one byte range of the dataset, the identification being based on traversing the tree structure from a first node associated with the first client to a second node associated with the second client.

### Claim 16 (depends on 15)

The computer program product of claim 15, wherein each client associated with a particular node is configured to act as a peer to one or more other clients associated with the particular node.

### Claim 17 (depends on 15)

The computer program product of claim 15, wherein identifying the second client of the plurality of clients that is the peer to the first client, based on traversing the tree structure from the first node associated with the first client to the second node associated with the second client, comprises traversing the tree structure to identify a parent node of the first node that is associated with at least one client that also needs to obtain the least one byte range of the dataset.

### Claim 18 (depends on 15)

The computer program product of claim 15, wherein the computer-executable instructions also instructions that are executable to cause the one or more processors to assign a virtual content to each node based on the subset of one or more ranges of the plurality of byte ranges that is associated with the node.

### Claim 19 (depends on 15)

The computer program product of claim 15, wherein the computer-executable instructions also instructions that are executable to cause the one or more processors to prune nodes of the tree structure that are not associated with any client.

### Claim 20 (depends on 15)

The computer program product of claim 15, wherein each client associated with a least one node has already obtained the one or more byte ranges that the client needs to obtain.
