# US 11,307,845 B2 · Systems and methods for updating network nodes

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

- Number: US 11,307,845 B2
- Document ID: US11307845B2
- Status: Granted
- Kind: B2
- Application number: 16/367,618
- Filed: 2019-03-28
- Published: 2019-07-25
- Granted: 2022-04-19
- Earliest claimed: 2016-08-19
- Assignees: Veniam, Inc.
- Applicants: Veniam, Inc.
- Inventors: Henrique Manuel Pereira Cabral; Carlos Eduardo Braga Ameixieira
- Web page: https://patentgrep.com/patent/US11307845B2

## CPC

- G06F 8/656: while running
- G06F 8/65: Updates (security arrangements therefor G06F21/57)
- G06F 9/445: Program loading or initiating (bootstrapping G06F9/4401; security arrangements for program loading or initiating G06F21/57)
- G06F 16/00: Information retrieval; Database structures therefor; File system structures therefor
- H04L 12/4641: {Virtual LANs, VLANs, e.g. virtual private networks [VPN] (LAN interconnection over a bridge based backbone H04L12/462; encapsulation techniques H04L12/4633; routing of packets H04L45/00; packet switches H04L49/00; virtual private networks for security H04L63/0272)}
- H04W 48/20: Selecting an access point
- G06F 2221/034: Test or assess a computer or a system
- H04W 76/10: Connection setup
- G06F: ELECTRIC DIGITAL DATA PROCESSING (computer systems based on specific computational models G06N)
- H04L: TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION (arrangements common to telegraphic and telephonic communication H04M)
- H04W: WIRELESS COMMUNICATION NETWORKS (broadcast communication H04H; communication systems using wireless links for non-selective communication, e.g. wireless extensions H04M1/72)

## Abstract

Communication network architectures, systems and methods for supporting a network of mobile nodes. As a non-limiting example, various aspects of this disclosure provide communication network architectures, systems, and methods for supporting a dynamically configurable communication network comprising a complex array of both static and moving communication nodes (e.g., the Internet of moving things). Aspects of the disclosure disclose systems and methods for reliable software update in a network of moving things including, for example, autonomous vehicles.

## Claims

### Claim 1

A method for updating a first node of a plurality of nodes in a network, comprising:
receiving, by the first node, an identifier of a respective software update from a second node;
determining, by the first node, whether the identifier is on a blacklist maintained by the first node;
when the identifier is not on the blacklist:
determining, by the first node, whether the first node is a member of a seed group, wherein membership in a seed group allows for downloading of software updates regardless of any information from neighboring nodes relating to the software updates;
when the first node is a member of the seed group, downloading, by the first node, the software update associated with the identifier; and
when the first node is not a member of the seed group, downloading, by the first node, the software update associated with the identifier based on information obtained from neighboring nodes; and
validating the software update by the first node, wherein the validating comprises:
determining, after updating using the software update, that one or more update-specific metrics at the first node are within corresponding preset values; and
assessing positioning related functions and/or positioning related metrics after the updating using the software update, wherein the assessing comprises one or more of:
monitoring availability of global positioning network connectivity,
monitoring congruity based on global positioning information associated with neighboring nodes, and
determining whether global positioning coordinates measured after the updating are within an expected range for a particular location compared to coordinates for the location before the updating.

### Claim 2 (depends on 1)

The method of claim 1, comprising, prior to downloading the software update, when the first node is not a member of the seed group, sending queries to neighboring nodes regarding a status of the software update associated with the identifier.

### Claim 3 (depends on 1)

The method of claim 1, comprising designating the first node to be a member of the seed group by one or more of:
an operator of the network,
autonomously by the first node, or
at least one second node in the network.

### Claim 4 (depends on 2)

The method of claim 2, comprising, when the first node is not a member of the seed group, aborting the updating when:
a first number of the neighboring nodes that indicate that the software update associated with the identifier is a bad software update is greater than a first threshold; or
a second number of the neighboring nodes that indicate that the software update associated with the identifier is a good software update is less than a second threshold.

### Claim 5 (depends on 1)

The method of claim 1, comprising:
when the software update is valid, performing the updating using the software update; and
when the software update is not valid, aborting the updating.

### Claim 6 (depends on 1)

The method of claim 1, comprising, when the software update is valid, broadcasting by the first node to neighboring nodes that the first node is starting the updating.

### Claim 7 (depends on 1)

The method of claim 1, comprising, after performing the updating:
determining whether measurements of operation of the first node matches expected operation represented by information downloaded with the software update;
when the measurements match expected operation, broadcasting to neighboring nodes that the first node is operational; and
when the measurements do not match the expected operation, adding the identifier of the software update to the blacklist.

### Claim 8 (depends on 7)

The method of claim 7, when the measurements do not match the expected operation, sending notification of failure to meet the expected operation by the first node to one or both of: the second node, and the neighboring nodes.

### Claim 9 (depends on 1)

The method of claim 1, wherein neighboring nodes are within direct wireless communication range of the first node.

### Claim 10 (depends on 1)

The method of claim 1, wherein the plurality of nodes comprise a plurality of fixed nodes at known geographic locations and a plurality of mobile nodes located in respective vehicles operating in a geographic area served by a wireless network.

### Claim 11 (depends on 1)

The method of claim 1, wherein validating the software update further comprises:
determining prior to updating using the software update whether the software update is valid; and
determining after updating using the software update that network monitoring metrics of the first node are within corresponding preset values.

### Claim 12

A system for updating a first node of a plurality of nodes in a network, comprising:
one or more processors in the first node configured to:
receive an identifier of a respective software update from a second node;
determine whether the identifier is on a blacklist maintained by the first node;
when the identifier is not on the blacklist:
determine whether the first node is a member of a seed group, wherein membership in a seed group allows for downloading of software updates regardless of any information from neighboring nodes relating to the software updates;
when the first node is a member of the seed group, download the software update associated with the identifier; and
when the first node is not a member of the seed group, downloading, by the first node, the software update associated with the identifier based on information obtained from neighboring nodes; and
validate the software update by the first node, wherein the validating comprises:
determining, after updating using the software update, that one or more update-specific metrics at the first node are within corresponding preset values; and
assessing positioning related functions and/or positioning related metrics after the updating using the software update, wherein the assessing comprises one or more of:
monitoring availability of global positioning network connectivity,
monitoring congruity based on global positioning information associated with neighboring nodes, and
determining whether global positioning coordinates measured after the updating are within an expected range for a particular location compared to coordinates for the location before the updating.

### Claim 13 (depends on 12)

The system of claim 12, wherein the one or more processors is configured to, prior to downloading the software update, when the first node is not a member of the seed group, send queries to neighboring nodes regarding a status of the software update associated with the identifier.

### Claim 14 (depends on 12)

The system of claim 12, wherein the first node is designated to be a member of the seed group one or more of:
an operator of the network,
at least one second node in the network, or
autonomously by the one or more processors of the first node.

### Claim 15 (depends on 13)

The system of claim 13, wherein, when the first node is not a member of the seed group, the one or more processors is configured to abort the updating when:
a first number of the neighboring nodes that indicate that the software update associated with the identifier is a bad software update is greater than a first threshold; or
a second number of the neighboring nodes that indicate that the software update associated with the identifier is a good software update is less than a second threshold.

### Claim 16 (depends on 12)

The system of claim 12, wherein the one or more processors is configured to:
when the software update is valid, perform the updating using the software update; and
when the software update is not valid, abort the updating.

### Claim 17 (depends on 12)

The system of claim 12, when the software update is valid, the one or more processors is configured to initiate broadcasting by the first node to neighboring nodes that the first node is starting the updating.

### Claim 18 (depends on 12)

The system of claim 12, comprising, after performing the updating, the one or more processors is configured to:
determine whether measurements of operation of the first node matches expected operation represented by information downloaded with the software update;
when the measurements match expected operation, initiate broadcasting to neighboring nodes that the first node is operational; and
when the measurements do not match the expected operation, add the identifier of the software update to the blacklist.

### Claim 19 (depends on 18)

The system of claim 18, when the measurements do not match the expected operation, the one or more processors is configured to initiate sending notification of failure to meet the expected operation by the first node to one or both of the second node and the neighboring nodes.

### Claim 20 (depends on 12)

The system of claim 12, wherein neighboring nodes are within direct wireless communication range of the first node.

### Claim 21 (depends on 12)

The system of claim 12, wherein the plurality of nodes comprise a plurality of fixed nodes at known geographic locations and a plurality of mobile nodes located in respective vehicles operating in a geographic area served by a wireless network.

### Claim 22 (depends on 12)

The system of claim 12, wherein validating the software update further comprises:
determining prior to updating using the software update whether the software update is valid; and
determining after updating using the software update that network monitoring metrics of the first node are within corresponding preset values.
