# US 10,374,695 B2 · Temporospatial software-defined networking for NGSO satellite networks

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

- Number: US 10,374,695 B2
- Document ID: US10374695B2
- Status: Granted
- Kind: B2
- Application number: 15/954,922
- Filed: 2018-04-17
- Published: 2018-11-29
- Granted: 2019-08-06
- Earliest claimed: 2017-05-26
- Assignees: Loon LLC
- Applicants: Loon LLC
- Inventors: Brian Barritt
- Web page: https://patentgrep.com/patent/US10374695B2

## CPC

- H04B 7/18584: {Arrangements for data networking, i.e. for data packet routing, for congestion control (data switching networks H04L12/00)}
- H04B 7/18504: {Aircraft used as relay or high altitude atmospheric platform}
- H04B 7/18508: {with satellite system used as relay, i.e. aeronautical mobile satellite service}
- H04B 7/1851: {Systems using a satellite or space-based relay (H04B7/18508, H04B7/18521 take precedence; providing specific services H04B7/18523 - H04B7/18576)}
- H04B 7/18521: {Systems of inter linked satellites, i.e. inter satellite service (for optical links between satellites H04B10/118)}
- H04B 7/18589: {Arrangements for controlling an end to end session, i.e. for initialising, synchronising or terminating an end to end link}
- H04B 10/1123: {Bidirectional transmission}
- H04B 10/118: specially adapted for satellite communication
- H04L 41/12: Discovery or management of network topologies
- H04L 45/02: Topology update or discovery
- H04L 45/021: Ensuring consistency of routing table updates, e.g. by using epoch numbers
- H04L 45/127: {based on intermediate node capabilities}
- H04L 45/38: {Flow based routing}
- H04L 45/42: Centralised routing
- H04L 49/252: {Store and forward routing}
- H04L 49/254: {Centralised controller, i.e. arbitration or scheduling}
- H04B 7/195: Non-synchronous stations
- H04B: TRANSMISSION
- H04L: TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION (arrangements common to telegraphic and telephonic communication H04M)

## Abstract

The disclosure provides for a system that includes a network controller. The network controller is configured to receive information from nodes of a network, where nodes include one node that is in motion relative to another node. The network controller is also configured to generate a table representing nodes, available storage at each node, and possible links in the network over a period of time based on the information, and determine a series of topologies of the network based on the table. Based on received client data including a data amount, the network controller is configured to determine flows for the topology. The network controller then is configured to generate a schedule of network configurations based on the flows, and send instructions to the nodes of the network for implementing the network configurations and transmitting client data.

## Claims

### Claim 1

A system comprising:
a network controller configured to:
receive information from a plurality of nodes of a network, the plurality of nodes including a first node that is in motion relative to a second node;
generate a table representing nodes, available storage at each node, and possible links in the network over a period of time based on the received information;
determine a series of topologies of the network over the period of time based on the generated table;
receive client data information from one or more client devices, the client data information including a data amount;
determine a plurality of flows for the determined series of topologies based on at least the data amount and the available storage at each node, each of the plurality of flows comprising one or more requirements for a routing path through the network;
generate a schedule of network configurations for the determined series of topologies based on the determined plurality of flows; and
send instructions to the plurality of nodes of the network for implementing the schedule of network configurations and transmitting client data over the period of time.

### Claim 2 (depends on 1)

The system of claim 1, further comprising the plurality of nodes.

### Claim 3 (depends on 1)

The system of claim 1, wherein the plurality of nodes include one or more ground stations and one or more high-altitude platforms.

### Claim 4 (depends on 1)

The system of claim 1, wherein the plurality of nodes are configured to perform free-space optical communication.

### Claim 5 (depends on 1)

The system of claim 1, wherein the schedule of network configurations includes a first network configuration, a second network configuration scheduled to follow the first network configuration, a first routing path having a first portion between a first node and a second node and a second portion between the second node and a third node, and the first portion of the first routing path being a part of the first network configuration and the second portion of the first routing path being a part of the second network configuration.

### Claim 6 (depends on 5)

The system of claim 5, wherein the second node has enough available storage to store the data amount, and the second portion of the first routing path beings at the second node and the second node is configured to store the client data before transmitting the client data via the second portion of the routing path.

### Claim 7 (depends on 6)

The system of claim 6, wherein the second network configuration includes a newly established link between the second node and a next hop in the second portion of the routing path.

### Claim 8 (depends on 7)

The system of claim 7, wherein the second node is in motion relative to the next hop in the second portion of the routing path.

### Claim 9 (depends on 5)

The system of claim 5, wherein the network controller is further configured to:
determine that there are no routes between the first node and the third node in each topology in the series of topologies; and
generate the schedule of network configurations in response to determining that there are no routes between the first node and the third node in each topology in the series of topologies.

### Claim 10 (depends on 1)

The system of claim 1, wherein the network controller is configured to determine a plurality of flows for the determined series of topologies based on at least the data amount and the available storage at each node by:
identifying a given node having enough available storage to store the data amount; and
determining at least one flow including the given node in which the given node is used to store the client data for a period of time in the at least one flow.

### Claim 11

A method comprising:
receiving, by a network controller for a network, information from a plurality of nodes of the network, the plurality of nodes including a first node that is in motion relative to a second node;
generating, by the network controller, a table representing nodes, storage capacity of each node, and possible links in the network over a period of time based on the received information;
determining, by the network controller, a series of topologies of the network over the period of time based on the generated table;
receiving, by the network controller, client data information from one or more client devices, the client data information including a data amount;
determining, by the network controller, a plurality of flows for the determined series of topologies based on at least the data amount and the storage capacity of each node, each of the plurality of flows comprising one or more requirements for a routing path through the network;
generating, by the network controller, a schedule of network configurations for the determined series of topologies based on the determined plurality of flows; and
sending, by the network controller, instructions to the plurality of nodes of the network for implementing the schedule of network configurations and transmitting client data over the period of time.

### Claim 12 (depends on 11)

The method of claim 11, wherein the schedule of network configurations includes a first network configuration, a second network configuration scheduled to follow the first network configuration, a first routing path having a first portion between a first node and a second node and a second portion between the second node and a third node, the first portion of the first routing path being a part of the first network configuration and the second portion of the routing path being a part of the second network configuration.

### Claim 13 (depends on 12)

The method of claim 12, wherein the second node has enough available storage to store the data amount, and the second portion of the first routing path beings at the second node, and the second node is configured to store the client data before transmitting the client data via the second portion of the routing path.

### Claim 14 (depends on 13)

The method of claim 13, wherein the second network configuration includes a newly established link between the second node and a next hop in the second portion of the routing path.

### Claim 15 (depends on 14)

The method of claim 14, wherein the second node is in motion relative to the next hop in the second portion of the routing path.

### Claim 16 (depends on 12)

The method of claim 12, further comprising:
determining, by the network controller, that there are no routes between the first node and the third node in each topology in the series of topologies; and
generating, by the network controller, the schedule of network configurations in response to determining that there are no routes between the first node and the third node in each topology in the series of topologies.

### Claim 17 (depends on 11)

The method of claim 11, wherein determining a plurality of flows for the determined series of topologies based on at least the data amount and the available storage at each node includes:
identifying a given node having enough available storage to store the data amount; and
determining at least one flow including the given node in which the given node is used to store the client data for a period of time in the at least one flow.

### Claim 18

A non-transitory, tangible computer-readable storage medium on which computer readable instructions of a program are stored, the instructions, when executed by a network controller for a network, cause the network controller to perform a method, the method comprising:
receiving information from a plurality of nodes of the network, the plurality of nodes including a first node that is in motion relative to a second node;
generating a table representing nodes, storage capacity of each node, and possible links in the network over a period of time based on the received information;
determining a series of topologies of the network over the period of time based on the generated table;
receiving client data information from one or more client devices, the client data information including a data amount;
determining a plurality of flows for the determined series of topologies based on at least the data amount and the storage capacity of each node, each of the plurality of flows comprising one or more requirements for a routing path through the network;
generating a schedule of network configurations for the determined series of topologies based on the determined plurality of flows; and
sending instructions to the plurality of nodes of the network for implementing the schedule of network configurations and transmitting client data over the period of time.

### Claim 19 (depends on 18)

The medium of claim 18, wherein the schedule of network configurations includes a first network configuration, a second network configuration scheduled to follow the first network configuration, a first routing path having a first portion between a first node and a second node and a second portion between the second node and a third node, the first portion of the first routing path being a part of the first network configuration and the second portion of the routing path being a part of the second network configuration.

### Claim 20 (depends on 19)

The medium of claim 19, wherein the second node has enough available storage to store the data amount, and the second portion of the first routing path beings at the second node, and the second node is configured to store the client data before transmitting the client data via the second portion of the first routing path.
