US 12,261,760 B2
Self-election processes in managed subnets implementing modified swim protocols
Gregory Paul Olsen, Lindon, UT (US); Rex Michael McMillan, South Jordan, UT (US); Blake Thompson, South Jordan, UT (US); and Scot Emery Swan, Mapleton, UT (US)
Assigned to Ivanti, Inc., South Jordan, UT (US)
Filed by Ivanti, Inc., South Jordan, UT (US)
Filed on Jan. 5, 2024, as Appl. No. 18/406,035.
Application 18/406,035 is a continuation of application No. 17/231,698, filed on Apr. 15, 2021, granted, now 11,870,672.
Claims priority of provisional application 63/011,142, filed on Apr. 16, 2020.
Prior Publication US 2024/0146634 A1, May 2, 2024
Int. Cl. H04L 43/106 (2022.01); H04L 43/06 (2022.01); H04L 43/08 (2022.01); H04L 61/103 (2022.01); H04L 61/5069 (2022.01); H04L 101/668 (2022.01)
CPC H04L 43/106 (2013.01) [H04L 43/06 (2013.01); H04L 61/103 (2013.01); H04L 61/5069 (2022.05); H04L 43/08 (2013.01); H04L 2101/668 (2022.05)] 20 Claims
OG exemplary drawing
 
1. A method of self-election of a node in a subnet, the method comprising:
receiving, by a first node of a plurality of nodes in a subnet, a first ping message, wherein the first ping message is unicast from a second node of the plurality of nodes in the subnet and the first ping message includes direct information related to the second node;
updating a first status of the second node in a status list stored at the first node consistent with the direct information;
determining whether statuses have been received from a threshold number of nodes of the plurality of nodes in the status list;
responsive to the threshold number of nodes being received, performing a local election operation,
responsive to a current election score of the first node determined from the local election operation being greater than determined election scores of the threshold number of nodes, executing, by the first node, a service in the subnet without oversight by an administration device;
during a first Scalable, Weakly-Consistent, Infection-Style, Processes Group Membership Protocol (SWIM) period:
identifying a first subset of receiving nodes from a receiving node pool, wherein, during the first SWIM period, the receiving node pool includes the plurality of nodes except the first node;
identifying a first subset of ancillary nodes from an ancillary node pool, wherein, during the first SWIM period, the ancillary node pool includes the plurality of nodes except the first node;
generating a second ping message for the first SWIM period, wherein the second ping message includes indirect information related to the first subset of ancillary nodes and direct information of the first node;
propagating the second ping message to the first subset of receiving nodes; and
removing the first subset of ancillary nodes from the ancillary node pool and the first subset of receiving nodes from the receiving node pool; and
during a second SWIM period that is after the first SWIM period:
identifying a second subset of receiving nodes from the receiving node pool, wherein, during the second SWIM period, the receiving node pool includes the plurality of nodes except the first node and the first subset of receiving nodes;
identifying a second subset of ancillary nodes from the ancillary node pool. wherein, during the second SWIM period, the ancillary node pool includes the plurality of nodes except the first node and the first subset of ancillary nodes;
generating a third ping message for the second SWIM period, wherein the third ping message includes indirect information related to the second subset of ancillary nodes and direct information of the first node;
propagating the third ping message to the second subset of receiving nodes; and
removing the second subset of ancillary nodes from the ancillary node pool and the second subset of receiving nodes from the receiving node pool.