# US 11,909,638 B2 · Autonomously routing data using relay nodes pre-selected from a group of distributed computer nodes based on measured one-way latencies

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

- Number: US 11,909,638 B2
- Document ID: US11909638B2
- Status: Granted
- Kind: B2
- Application number: 17/237,026
- Filed: 2021-04-21
- Published: 2021-08-12
- Granted: 2024-02-20
- Earliest claimed: 2020-02-10
- Assignees: Syntropy Network Limited
- Applicants: Syntropy Network Limited
- Inventors: Jonas Simanavicius; William B. Norton; Domas Povilauskas; Jim X. Wen
- Web page: https://patentgrep.com/patent/US11909638B2

## CPC

- H04L 43/0858: {One way delays}
- H04L 41/0893: Assignment of logical groups to network elements
- H04L 45/021: Ensuring consistency of routing table updates, e.g. by using epoch numbers
- H04L 45/46: {Cluster building}
- H04L 45/70: {Routing based on monitoring results}
- H04L 49/102: using shared medium, e.g. bus or ring
- H04L 41/16: using machine learning or artificial intelligence
- H04L 43/065: related to network devices
- H04L 43/0864: Round trip delays
- H04L 43/10: Active monitoring, e.g. heartbeat, ping or trace-route
- H04L: TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION (arrangements common to telegraphic and telephonic communication H04M)

## Abstract

A method is disclosed for autonomously routing data using relay nodes pre-selected from a group of distributed computer nodes based on measured one-way latencies. One-way latencies between a plurality of nodes in a pulse group are automatically measured. A sending bucket of nodes are automatically selected from the pulse group based on the one-way latencies. A receiving bucket of nodes are automatically selected from the pulse group based on the one-way latencies. In response to a command to transfer data from the first node to the second node, a relay node that is both in the first sending bucket and in the first receiving bucket is automatically selected, wherein data is automatically routed from the first node to the second node via the relay node.

## Claims

### Claim 1

A method for autonomously routing data using relay nodes pre-selected from a group of distributed computer nodes based on measured one-way latencies, comprising:
automatically measuring one-way latencies between a plurality of nodes in a pulse group, wherein the pulse group includes a first node and a second node;
automatically selecting a first sending bucket of nodes from the pulse group based on the one-way latencies, wherein the nodes in the first sending bucket are candidates for relaying data from the first node;
automatically selecting a first receiving bucket of nodes from the pulse group based on the one-way latencies, wherein the nodes in the first receiving bucket are candidates for relaying data to the second node;
in response to a command to transfer data from the first node to the second node, automatically selecting a relay node that is both in the first sending bucket and in the first receiving bucket; and
automatically routing data from the first node to the second node via the relay node.

### Claim 2 (depends on 1)

The method of claim 1, wherein step of automatically measuring one-way latencies between a plurality of nodes in a pulse group comprises:
automatically sending a plurality of pulse messages from the first node to other nodes in the pulse group;
receiving one of the plurality of pulse messages by the relay node, wherein the one of the plurality of pulse messages includes a first timestamp associated with sending time by the first node, wherein the one of the plurality of pulse messages is received at a reception time associated with a second time stamp; and
automatically computing a first one-way latency from the first node to the relay node based on the first time stamp and the second time stamp.

### Claim 3 (depends on 2)

The method of claim 2, wherein step of automatically measuring one-way latencies between a plurality of nodes in a pulse group comprises:
automatically sending a plurality of pulse messages from nodes in the pulse group to the second node;
receiving one of the plurality of pulse messages from the relay node by the second node, wherein the one of the plurality of pulse messages includes a third timestamp associated with sending time by the relay node, wherein the one of the plurality of pulse messages is received at a reception time associated with a fourth time stamp; and
automatically computing a second one-way latency from the relay node to the second node based on the third time stamp and the fourth time stamp.

### Claim 4 (depends on 3)

The method of claim 3, wherein a total one-way latency for automatically routing data from the first node to the second node via the relay node is characterized by a sum of the first one-way latency and the second one-way latency.

### Claim 5 (depends on 4)

The method of claim 4, wherein the total one-way latency is smaller than a one-way latency measured in direct path from the first node to the second node.

### Claim 6 (depends on 1)

The method of claim 1, wherein step of selecting a first sending bucket of nodes from the pulse group comprises:
automatically computing total one-way latencies of relayed routing paths from the first node to other nodes in the pulse group relayed by potential relay nodes in the pulse group; and
automatically selecting and placing one or more of the potential relay nodes in the first sending bucket if the routing paths relayed by the potential relay nodes have lower total one-way latencies than respective one-way latencies of direct paths from the first node to other nodes in the pulse group.

### Claim 7 (depends on 6)

The method of claim 6, wherein at least some computer clocks at the plurality of nodes in the pulse group have skews relative to each other, wherein step of selecting a first sending bucket of nodes from the pulse group is independent of the skews among the computer clocks at the plurality of nodes in the pulse group.

### Claim 8 (depends on 1)

The method of claim 1, wherein step of selecting a first receiving bucket of nodes from the pulse group comprises:
automatically computing total one-way latencies of relayed routing paths from nodes in the pulse group to the second node relayed by potential relay nodes in the pulse group; and
automatically selecting and placing one or more of the potential relay nodes in the first receiving bucket if the routing paths relayed by the potential relay nodes have lower total one-way latencies than respective one-way latencies of direct paths from the other nodes in the pulse group to the second node.

### Claim 9 (depends on 8)

The method of claim 8, wherein at least some computer clocks at the plurality of nodes in the pulse group have skews relative to each other, wherein step of selecting a first receiving bucket of nodes from the pulse group is independent of the skews among the computer clocks at the plurality of nodes in the pulse group.

### Claim 10 (depends on 1)

The method of claim 1, wherein step of automatically selecting a relay node comprises:
automatically searching for common nodes that are in both the first sending bucket and in the first receiving bucket; and
automatically selecting the relay node from the common nodes based on total one-way latencies from the first node to one of the common nodes and from the one of the common nodes to the second node.

### Claim 11 (depends on 10)

The method of claim 10, wherein the relay node provides a lowest total one-way latency among the total one-way latencies produced by the common nodes for routing data from the first node to the relay node and from the relay node to the second node.

### Claim 12 (depends on 1)

The method of claim 1, further comprising:
automatically updating nodes in the first sending bucket or the first receiving bucket based on one-way latencies measured over a pre-determined time interval.

### Claim 13

A non-transitory computer-readable medium storing a plurality of instructions which, when executed by one or more processors, cause the one or more processors to perform operations a computer network, the operations comprising:
automatically measuring one-way latencies between a plurality of nodes in a pulse group, wherein the pulse group includes a first node and a second node;
automatically selecting a first sending bucket of nodes from the pulse group based on the one-way latencies, wherein the nodes in the first sending bucket are candidates for relaying data from the first node;
automatically selecting a first receiving bucket of nodes from the pulse group based on the one-way latencies, wherein the nodes in the first receiving bucket are candidates for relaying data to the second node;
in response to a command to transfer data from the first node to the second node, automatically selecting a relay node that is both in the first sending bucket and in the first receiving bucket; and
automatically routing data from the first node to the second node via the relay node.

### Claim 14 (depends on 13)

The non-transitory computer-readable medium of claim 13, wherein step of selecting a first sending bucket of nodes from the pulse group comprises:
automatically computing total one-way latencies of relayed routing paths from the first node to other nodes in the pulse group relayed by potential relay nodes in the pulse group; and
automatically selecting and placing one or more of the potential relay nodes in the first sending bucket if the routing paths relayed by the potential relay nodes have lower total one-way latencies than respective one-way latencies of direct paths from the first node to other nodes in the pulse group.

### Claim 15 (depends on 13)

The non-transitory computer-readable medium of claim 13, wherein step of selecting a first receiving bucket of nodes from the pulse group comprises:
automatically computing total one-way latencies of relayed routing paths from nodes in the pulse group to the second node relayed by potential relay nodes in the pulse group; and
automatically selecting and placing one or more of the potential relay nodes in the first receiving bucket if the routing paths relayed by the potential relay nodes have lower total one-way latencies than respective one-way latencies of direct paths from the other nodes in the pulse group to the second node.

### Claim 16 (depends on 13)

The non-transitory computer-readable medium of claim 13, wherein step of automatically selecting a relay node comprises:
automatically searching for common nodes that are in both the first sending bucket and in the first receiving bucket; and
automatically selecting the relay node from the common nodes based on total one-way latencies from the first node to one of the common nodes and from the one of the common nodes to the second node.

### Claim 17 (depends on 16)

The non-transitory computer-readable medium of claim 16, wherein the relay node provides a lowest total one-way latency among the total one-way latencies produced by the common nodes for routing data from the first node to the relay node and from the relay node to the second node.

### Claim 18

A computer system for autonomously selecting low-latency data routing paths across the Internet, comprising:
a server configured to send instructions to a plurality of nodes in a computer network; and
a memory storing the instructions that, when executed by the one or more processors at the plurality of nodes, cause the plurality of nodes to:
automatically measure one-way latencies between a plurality of nodes in a pulse group, wherein the pulse group includes a first node and a second node;
automatically select a first sending bucket of nodes from the pulse group based on the one-way latencies, wherein the nodes in the first sending bucket are candidates for relaying data from the first node;
automatically select a first receiving bucket of nodes from the pulse group based on the one-way latencies, wherein the nodes in the first receiving bucket are candidates for relaying data to the second node;
in response to a command to transfer data from the first node to the second node, automatically select a relay node that is both in the first sending bucket and in the first receiving bucket; and
automatically route data from the first node to the second node via the relay node.

### Claim 19 (depends on 18)

The computer system of claim 18, wherein the instructions that, when executed by the one or more processors at the plurality of nodes, cause the plurality of nodes to
when the first sending bucket of nodes is selected from the pulse group, automatically compute total one-way latencies of relayed routing paths from the first node to other nodes in the pulse group relayed by potential relay nodes in the pulse group; and
automatically select and place one or more of the potential relay nodes in the first sending bucket if the routing paths relayed by the potential relay nodes have lower total one-way latencies than respective one-way latencies of direct paths from the first node to other nodes in the pulse group.

### Claim 20 (depends on 18)

The computer system of claim 18, wherein the instructions that, when executed by the one or more processors at the plurality of nodes, cause the plurality of nodes to
when a first receiving bucket of nodes is selected from the pulse group, automatically compute total one-way latencies of relayed routing paths from nodes in the pulse group to the second node relayed by potential relay nodes in the pulse group; and
automatically select and place one or more of the potential relay nodes in the first receiving bucket if the routing paths relayed by the potential relay nodes have lower total one-way latencies than respective one-way latencies of direct paths from the other nodes in the pulse group to the second node.

### Claim 21 (depends on 18)

The computer system of claim 18, wherein the instructions that, when executed by the one or more processors at the plurality of nodes, cause the plurality of nodes to
when the relay node is automatically selected, automatically search for common nodes that are in both the first sending bucket and in the first receiving bucket; and
automatically select the relay node from the common nodes based on total one-way latencies from the first node to one of the common nodes and from the one of the common nodes to the second node.

### Claim 22 (depends on 21)

The computer system of claim 21, wherein the relay node provides a lowest total one-way latency among the total one-way latencies produced by the common nodes for routing data from the first node to the relay node and from the relay node to the second node.
