UPDATING THE ACCESS POINTS OF A COMMUNICATIONS NETWORK

The vertex coloring algorithm partitions APs for staggered updates, reducing partitions and downtime, ensuring efficient and reliable software updates with minimal network disruptions.

DE102024137355A1Pending Publication Date: 2025-10-09HEWLETT PACKARD ENTERPRISE DEV LP
View PDF 0 Cites 0 Cited by

Patent Information

Application Number
DE102024137355
Authority / Receiving Office
DE · DE
Patent Type
Applications
Current Assignee / Owner
Priority Date
2024-03-21
Filing Date
2024-12-12
Publication Date
2025-10-09

AI Technical Summary

Technical Problem

Existing methods for updating software on access points (APs) in a communication network, such as a WLAN, often result in excessive partitions and prolonged downtime due to serial updating, leading to network interruptions and reduced trust from customers when managed by third parties.

Method used

Implementing a vertex coloring algorithm to partition APs into a specified number of groups for staggered software updates, allowing a subset of APs to remain active while others reboot, thereby reducing the number of partitions and minimizing network interruptions.

Benefits of technology

This approach reduces the overall duration of software updates and minimizes network disruptions, enhancing the reliability and predictability of the update process, especially in high-load scenarios, thus increasing customer trust in third-party management.

✦ Generated by Eureka AI based on patent content.

Smart Images

  • Figure 00000027_0000
    Figure 00000027_0000
  • Figure 00000028_0000
    Figure 00000028_0000
  • Figure 00000029_0000
    Figure 00000029_0000
Patent Text Reader

Abstract

In certain implementations, a method comprises obtaining network information for a plurality of access points (APs) configured to provide user devices with access to a communications network, and determining, according to the network information, partitions into which to divide the APs to distribute a software update among the APs. The method comprises dividing the APs into the partitions according to a vertex coloring algorithm. The APs correspond to the vertices of the vertex coloring algorithm, and the neighbor relationships of the APs correspond to the edges of the vertex coloring algorithm.The method includes transmitting software update instructions to the APs to cause the APs of a first partition to reboot to install the software update on the APs of the first partition at a different time than the APs of a second partition reboot to install the software update on the APs of the second partition.
Need to check novelty before this filing date? Find Prior Art

Description

BACKGROUND

[0001] A communications network comprises various electronic devices that can communicate with each other via one or more communication interfaces. For example, a wireless local area network (WLAN) is a wireless computer network that connects two or more electronic devices using a wireless distribution technology (e.g., radio or infrared signals). A WLAN is typically deployed in a limited area such as a home, college, school, or office complex. A communications network, which may consist entirely or partially of a wireless network, can comprise numerous electronic devices such as user devices, access points (APs), controllers, and switches. For example, a WLAN communications network can comprise numerous electronic devices such as one or more user devices, one or more wireless APs (WAPs), one or more WLAN controllers, and one or more network switches.WAPs can be network devices to which user devices connect wirelessly to access a communications network. BRIEF DESCRIPTION OF THE DRAWINGS

[0002] For a better understanding of this disclosure and its advantages, reference is now made to the following descriptions taken in conjunction with the accompanying drawings in which: Fig. 1 illustrates an example system for updating APs of a communication network according to certain implementations; Fig. 2 illustrates an example of an update management system according to certain implementations; Fig. 3 shows an example of a partition allocation table according to certain implementations; Fig. Figure 4 shows an example of a neighborhood graph and the associated partitioning of APs according to certain implementations; Fig. 5 illustrates an example method for updating APs of a communication network according to certain implementations; Fig. 6A-6B illustrate an example method for partitioning APs of a communication network using a vertex coloring algorithm according to certain implementations; Fig. 7 shows an example of a method for updating APs of a communication network, according to certain implementations; and Fig. Figure 8 shows a block diagram of an exemplary computer system used in certain cases. DESCRIPTION

[0003] A communications network, possibly including a WLAN, can be managed by one or more network management systems (NMS), which can be connected to the switches and / or controllers of the managed communications network (e.g., WLAN), possibly via another network. The one or more NMSs can be used to maintain and secure the network. For example, an NMS can manage electronic devices connected to the communications network. Among other operations, whether for network security or other purposes, the NMS can discover and monitor electronic devices connected to the communications network or otherwise discoverable by other electronic devices in the communications network. Network information related to various electronic devices can be collected at various points within the communications network and reported to the NMS.

[0004] Within a communications network, APs may operate in part with the help of software installed on the AP or otherwise accessible to it. APs may run an operating system as well as a variety of other software to perform the AP's intended functionality. This other software may include, for example, a database that stores state information for the AP, as well as various other daemons, processes, threads, agents, etc., which may be implemented, for example, as any number of microservices running on top of the AP's operating system. For the purposes of this disclosure, software may also include software and / or firmware.

[0005] From time to time, it may be appropriate to deploy software updates to the APs, whether to improve security, provide additional / modified functionality, or for any other suitable purpose. In addition, it may be desirable to deploy software updates to APs at a time when those APs are active—that is, when those APs are available to provide user devices with access to a communications network—and may actually do so. This so-called "live update" technique can reduce or eliminate the need to search for a specific downtime, most likely at an odd time of day or month, to perform the software update, or simply accept that certain physical areas will have no network connectivity for a period of time while a software update is in progress.

[0006] The NMS can manage the software update, possibly including deploying the software update to the APs and managing which APs have completed the software update. One technique for updating such software involves installing the new versions of the updated software (e.g., from a software image containing updates for various daemons, databases, etc.) and rebooting the access device, after which the new versions of the software are executed. However, such a technique may interrupt an access device's ability to process network traffic while the access device reboot is performed.For example, rebooting an access device can disrupt service for user devices connected to a communications network through the access device, causing the user devices to become disconnected from the communications network and potentially have no other available access point to roam to reestablish network connectivity. Certain software update approaches attempt to group APs for software update execution; however, these solutions typically result in an excessive number of partitions, which can increase the overall software update duration because each partition is updated serially.

[0007] Certain implementations of this disclosure partition APs for a software update using a vertex coloring algorithm, which is an example of a graph coloring algorithm. An NMS or other suitable computing system may obtain network information for a communications network to which a software update is to be applied, which may include network topography information and / or other information. The network topography information may include the identification of network devices (e.g., APs) and neighbor information for the network devices (e.g., neighbor APs for each AP), possibly in the form of a high-frequency neighborhood graph or from which such a neighborhood graph can be generated. Other network information may include network utilization and the like. The NMS may determine the number of partitions into which the APs should be divided according to the network information.

[0008] The NMS then divides the APs into the specified number of partitions according to the network information, including the network topology information, using the vertex coloring algorithm (e.g., a modified version of a DSatur vertex coloring algorithm). The vertex coloring algorithm can be an iterative process that assigns APs to partitions one by one until the APs are assigned to a corresponding partition. Generally, the vertex coloring algorithm attempts to assign an AP to a partition that none of that AP's neighbors are assigned to, with exceptions where this goal is not possible.

[0009] Certain implementations of this disclosure may provide one or more technical advantages. Certain implementations may implement a more strategic approach to updating the software of APs deployed and operating in a communications network, allowing a subset of the APs to remain active while other APs are rebooted as part of the update process. Compared to certain other techniques for partitioning APs for software updates, certain implementations may reduce the number of partitions, which may reduce the overall duration of the software update. For example, for dense AP deployments, certain implementations may result in two to six partitions, rather than twenty or more, as may be the case with other techniques (e.g., RF channel-based partitioning) for partitioning APs for a software update.In certain implementations, the number of partitions can be adjusted based on the actual load on the communications network from user devices. For example, a lightly loaded communications network may be able to be updated more quickly with only two partitions. In certain implementations, the number of partitions may remain the same even if additional RF channels are dynamically created by the operation of the communications network, which can increase the predictability of software update time. Of course, in each of these examples, the number of partitions can depend on a variety of factors.

[0010] Certain implementations can reduce network disruptions compared to other solutions for performing a live software update, which can reduce or eliminate negative impacts on an organization during a software update. In scenarios where the software update is delivered or managed by a third party (e.g., a service provider), the reduced disruptions to a communications network can increase customer confidence in the software update process.

[0011] As for the characters, Fig. 1 illustrates an example system 100 for updating APs of a communications network according to certain implementations. In the example shown, system 100 includes a managed communications network 102, an update management system 104, and communications network 106. Although a particular implementation of system 100 is illustrated and described, this disclosure describes any suitable implementation of system 100.

[0012] In general, the update management system 104 is configured to perform a potential live software update of one or more APs of the managed communication network 102. In certain implementations, the update management system 104 may be configured to determine a number of partitions into which the APs of the managed communication network 102 are to be divided. In certain implementations, the update management system 104 is configured to divide the APs of the managed communication network 102 into the specified number of partitions according to a vertex coloring algorithm.In certain implementations, the update management system 104 is configured to partition the APs into the set of partitions according to an iterative process that includes selecting a current AP for a current iteration of the iterative process from the APs unassigned to a partition of the set of partitions; identifying a selected partition to be assigned to the current AP depending on one or more partitions assigned to neighboring APs of the current AP; assigning the selected partition to the current AP in response to identifying the selected partition; and performing a next iteration of the iterative process in response to determining that one or more APs remain unassigned to a partition.

[0013] The update management system 104 is configured to send software update instructions to the APs in response to determining that the APs have been assigned a corresponding partition of the specified number of partitions. The software update instructions are intended to cause APs of a first partition of the set of partitions to reboot to install a software update on the APs of the first partition at a different time than APs of a second partition of the set of partitions to reboot to install the software update on the APs of the second partition.

[0014] The managed communications network 102 may include controllers, APs, switches, routers, or the like to provide network connectivity to user devices. The managed communications network 102 may be a single facility or span multiple facilities, and may be located at a general geographic location or span multiple geographic locations.

[0015] The managed communications network 102 may include one or more APs 108a-108j, which may be generally referred to as AP 108 / APs 108, and one or more user devices 110a-110p, which may be generally referred to as user device 110 / user devices 110. Although in Fig. 1 illustrates that the communication network 102 includes a particular number of APs 108 and user devices 110, the managed communication network 102 may include any suitable number of APs 108 and user devices 110.

[0016] In general, APs 108 may provide an access point to a communications network, such as a managed communications network 102. APs 108 may control network access of user devices 110 and, in certain implementations, authenticate user devices 110 for connection to APs 108 and, through APs 108, potentially to other devices within or outside of the managed communications network 102. An AP 108 may be implemented using any suitable combination of hardware, firmware, and software configured to provide wireless network connectivity for wireless user devices (e.g., user devices 110). APs 108 may communicate with the network over connections that may be wired or wireless interfaces.

[0017] WAPs 102 may each include a device, such as a wireless router, that enables wireless devices (e.g., client devices 108) to connect to the WLAN implemented by some or all of computing environments 100. WAPs 102 may each act as radio transmitters for a WLAN. WAPs 102 may each convert data traffic from radio signals and transmit those signals to wireless managed processing devices. For example, WAPs 102 may each act as a bridge to a wired local area network (LAN). In the example shown, WAPs 102 may each be connected to a wired network via WLAN controller 104, which in turn may be coupled with a cable to enable wireless computers (e.g., client devices 108) to access a wired network.

[0018] APs 108 may be distributed within a physical environment (e.g., within a facility or on a campus) to connect to user devices 110 as those user devices 110 move through the physical environment. This disclosure describes the physical environment in which APs are distributed, which may be located in one or more geographic locations, some of which span a large area and may include multiple geographic regions that are physically separated from each other (e.g., different buildings and / or sites). APs 108 may be spaced from each other in two or more dimensions. For example, the managed communications network 102 may be a business facility, and the APs 108 may be distributed throughout the business facility to provide user devices 110 with network access to other areas of the managed communications network and / or to other communications networks (e.g.,to the Internet).

[0019] User devices 110 may represent any type of computing device capable of receiving machine-executable instructions and establishing a network connection. Examples of computing devices include a server, a desktop computer, a notebook computer, a tablet computer, a thin client, a mobile device, a personal digital assistant (PDA), a small phone, a printer, an Internet of Things device, or any other suitable type of computing device. In certain embodiments, a user device 110 includes a wireless network interface (e.g., a wireless network interface card (NIC)) that enables user device 110 to conduct wireless communication with another device, such as one or more APs 108.

[0020] One or more structures may be located in the physical environment in which the managed communications network 102 is implemented. These structures may include walls, floors, furniture, windows, or other potential obstructions that may interfere with or otherwise hinder the ability of user devices 110 to connect to a particular AP 108. Furthermore, an AP 108 may have a limited range within which user devices 110 can connect to the AP 108. In some implementations, APs 108 may be positioned within a physical environment to promote the availability of an AP 108 to a user device 110 regardless of where the user device 110 is located in the physical environment.In certain implementations, APs 108 may be positioned throughout the physical environment in a manner that allows for full or partial overlap of the coverage areas of the APs 108, potentially providing redundant available connections in certain areas. This approach may increase the chance for a user device 110 to find an available AP 108 for a connection, even if one or more APs 108 are temporarily or permanently down, as may occur if an AP 108 experiences a technical issue, reboots, or is otherwise unavailable.

[0021] Each of the APs 108 can provide network connectivity to multiple devices 110 based on the ability of the user device 110 to connect to a corresponding AP 108. As a user device 110 moves within the physical environment, the user device 110 can maintain network connectivity by connecting to multiple APs 108 sequentially (e.g., potentially based on the AP 108 providing the strongest signal to the network and / or according to other suitable factors). For example, if an enterprise occupies an entire floor of an office building with the managed communications network 102, multiple APs 108 can be positioned throughout the floor. As a user device 110 moves from one end of the floor to the other, the user device 110 can connect sequentially to multiple APs 108 to maintain network connectivity.

[0022] APs 108 may include any suitable combination of hardware, firmware, and software. For the purposes of this disclosure, it will be understood that software includes software, firmware, or both software and firmware. APs 108 may execute or otherwise utilize the software of APs 108 to provide some or all of the functionality of APs 108. The software of APs 108 may be updatable. For example, APs 108 may be configured to receive a software update and install the software update according to the techniques described in. In certain implementations, installing a software update on an AP 108 may require a reboot of the AP 108. For example, to complete a software update of an AP 108, a reboot of the AP 108 may be performed in some scenarios.

[0023] The APs 108 may be configured to provide certain network information to one or more other devices of the system 100. For example, the APs 108 may provide network information to the update management system 104 directly or potentially indirectly through one or more other devices configured to provide the network information to the update management system 104. The content of the network information is described in more detail below, but may include information useful to the update management system 104 for managing a software update of the APs 108. Some or all of this network information may be provided to another system connected to the update management system 104 for one or more purposes in addition to managing a software update of the APs 108.For example, the update management system 104 may be an NMS, or part of an NMS, and the NMS may capture the network information for a variety of purposes related to the network management communication 102.

[0024] The update management system 104 may be configured to control part or all of the managed communications network 102, including APs 108. For example, the update management system 104 may be a central control point accessible to administrators of the managed communications network 102. In certain implementations, the update management system 104 may be, or be part of, an NMS. The update management system 104 is a computer system configured to control a software update of APs 108.

[0025] The update management system 104 may be a computer system (or a portion thereof) that includes all suitable components. Suitable components may include one or more processors, one or more application-specific integrated circuits (ASICs), a microcontroller, memory, and / or other suitable components. The update management system 104 may be a physical device (e.g., an NMS computer). The update management system 104 may receive commands from a user interface and render the output via the user interface. The user interface may be a command-line interface, a graphical user interface, a web interface, or another suitable type of interface. The update management system 104 may process the commands from the user interface, validate the commands, and execute the logic specified by the commands.The update management system 104 can output the results of the commands via the user interface. An administrator can access the update management system 104 via the user interface. The user interface can be a central access point for the update management system 104.

[0026] Update management system 104 may, from time to time, attempt to deploy a software update to APs 108. For the purposes of this disclosure, a software update may include a firmware update, a firmware update, or both a software update and a firmware update. As described in detail below, update management system 104 may coordinate the software updates of APs 108. As described above, in certain computing environments, it may be desirable to perform a so-called live update. A live update generally means performing a software update when a communications network (e.g., managed communications network 102) is available to carry live traffic (e.g., in association with user devices 110) and may be doing so.For example, a live update of APs 108 may include a software update at a time when APs 108 are at least available to potentially serve a user device 110 (although at a particular time, a given AP 108 may not or could not actually serve a user device 110).

[0027] Update management system 104 may store or otherwise have access to software updates and may provide these updates to APs 108. A software update may include multiple phases. For example, a software update may include downloading the software update to an AP 108 and activating the downloaded software update. The software update may be downloaded to AP 108 in any suitable manner. For example, AP 108 may regularly (or at any suitable interval or time) check with update management system 104 whether a software update is available and, if so, request that update management system 104 transmit the software update to AP 108. As another example, update management system 104 may notify AP 108 when a software update is available. Activating the software may involve installing the software update on AP 108, such asby executing one or more installation programs or by any other suitable means. To complete the activation of some software updates, an AP 108 may be rebooted, which temporarily renders the AP 108 unavailable to user devices 110.

[0028] Generally, the update management system 104 is configured to perform a potential live software update of one or more APs of the managed communications network 102. As part of managing a software update of APs 108, the update management system 104 may divide the APs 108 into multiple partitions to distribute the software updates to APs 108. By dividing APs 108 into partitions for deploying a software update to APs 108, the times at which APs 108 are rebooted to activate the latest software and are unavailable to user devices 110 can be staggered.

[0029] The update management system 104 may partition APs 108 using a vertex coloring algorithm. Before applying the vertex coloring algorithm, the update management system 104 may be configured to determine a number of partitions into which APs 108 of the managed computer network 102 are to be divided. The update management system 104 may then be configured to divide APs 108 of the managed communications network 102 into the determined number of partitions according to a vertex coloring algorithm.In certain implementations, the update management system 104 is configured to partition APs 108 into the set of partitions according to an iterative process that includes selecting a current AP 108 for a current iteration of the iterative process from APs 108 that have not yet been assigned to a partition of the set of partitions; identifying, according to one or more partitions assigned to neighboring APs 108 of the current AP 108, a selected partition to assign to the current AP 108; assigning, in response to identifying the selected partition, the selected partition or the current AP 108; and performing, in response to determining that one or more APs 108 remain unassigned to a partition, a next iteration of the iterative process.

[0030] The update management system 104 is configured to send software update instructions to APs 108 in response to determining that APs 108 have been assigned a corresponding partition of the particular set of partitions. The software update instructions are intended to cause APs 108 of a first partition of the set of partitions to reboot to install a software update on the APs 108 of the first partition at a different time than APs 108 of one or more other partitions of the set of partitions reboot to install the software update on the APs 108 of the other partitions. In certain implementations, the APs 108 of all partitions are updated (and in particular, rebooted) at different times.

[0031] In general, the vertex coloring algorithm of certain implementations attempts to assign neighboring APs to different partitions. This may increase the chances that a user device 110 that is disconnected from a first AP 108 to allow the first AP 108 to reboot will be able to connect to a second AP 108 that is a neighbor of the first AP 108.

[0032] The update management system 104 may communicate with the components of the managed communication system via the communication network 106. The communication network 106 may enable wireless and / or wired communication. For example, the communication network 106 may convey IP packets, frame relay frames, ATM cells, voice, video, data, and other suitable information between network addresses. The communication network 106 may utilize any suitable combination of one or more local area networks (LANs), radio access networks (RANs), metropolitan area networks (MANs), wide area networks (WANs), mobile networks (e.g., using WiMax (802.16), WiFi (802.11a / b / g / n), and other suitable wireless networks.11), 3G, 4G, 5G, or other suitable wireless technologies in any possible combination), all or part of the global computer network known as the Internet, and / or any other communication system or systems at one or more locations, all of which may be a suitable combination of wireless and wired. The communication network 106 may include controllers, APs, switches, routers, or the like for forwarding traffic between the update management system 104 and the management communication network 102. In certain implementations, at least a portion of the communication network 106 may be an Ethernet network.

[0033] The update management system 104 may receive network information from components of the managed communications network 102. The network information may be received, for example, from APs 108 and / or other components of the managed communications network 102 (e.g., from one or more controllers, routers, switches, or other components). The network information may include information about network topology, network performance, and / or other suitable information. For example, the network information may include identifiers of APs 108, neighbor information for APs 108, distance information for APs 108, traffic / load information for APs 108, and / or other suitable information.

[0034] The update management system 104 may store network information that may be received from network devices in the managed communications network 102 or otherwise determined from network information received from network devices in the managed communications network 102. The network information is described below with reference to Fig. 2. The update management system 104 may use the network information to identify the APs 108 of the managed communications network 102, determine a number of APs 108 of the managed communications network 102, determine neighbors of APs 108, determine distances between APs 108, determine network traffic and / or network load of the managed communications network 102, and / or for any other suitable purpose. Some or all of the network information and / or the information determined from the network information may be used to determine a set of ranges into which to divide APs 108 and / or to divide APs 108 into the determined set of ranges using a vertex coloring algorithm.

[0035] While Fig. 1 illustrates a particular configuration of components, other suitable configurations are also contemplated in this disclosure. Although Fig. 1 certain components are shown as part of one and the same device, for example, each of the components may be grouped into sets of one or more components that may exist and execute as part of any number of separate and operatively connected devices. As a further example, a single component may be configured to perform all or part of the functions described in Fig. 1. Accordingly, the implementations disclosed here should not be limited to the configuration of the components shown in Fig. 1 shown components.

[0036] Fig. 2 illustrates an example of an update management system 104, according to certain implementations. In the example, the update management system 104 includes one or more processors 200, memory 202, and one or more interfaces 204, all of which can communicate via links 206 and all of which can be referred to in the singular or for convenience. The components of the update management system 104 can be implemented in any suitable combination of hardware, firmware, and software. Portions of the update management system 104 can be described in connection with the features of the system 100 described in Fig. 1 is shown.

[0037] Processor 200 may be any component or set of components capable of performing computations and / or other processing-related tasks. Processor 200 may be, for example, a microprocessor, a microcontroller, a control circuit, a digital signal processor (FPGA), an application-specific integrated circuit (ASIC), a system-on-chip (SoC), or a combination thereof. Processor 200 may include one or more computation cores. Processor 200 may include any number of processors, or multiple processors may combine to form a single processor 200.

[0038] Memory 202 may include any suitable combination of volatile memory, non-volatile memory, and / or virtual memory thereof. For example, memory may include any suitable combination of magnetic media, optical media, Random Access Memory (RAM), Read-Only Memory (ROM), removable media, and / or any other suitable storage device. Memory 202 may include data structures used to organize and store all or a portion of the stored data. Memory 202 may include a non-transitory, computer-readable storage medium that stores programming for execution by one or more of the one or more processors 200. One or more modules of update management system 104 may be embodied in part or in whole as software and / or hardware for performing the functions described herein. For example,One or more modules of update management system 104 may be embodied as software.

[0039] Interfaces 204 represent any suitable computer element that receives information from a communications network (e.g., communications network 106 of Fig. 1) receive and transmit information through a communication network (e.g. communication network 106 of Fig. 1) or both. Interfaces 204 represent any connection or connection, real or virtual, including any suitable combination of hardware, firmware, and software, including protocol conversion and data processing capabilities, for communicating over a LAN, WAN, or other communications system that enables the exchange of information. Interfaces 204 may enable wireless and / or wired communication.

[0040] Links 206 may include any suitable wired or wireless communication medium for the components of update management system 104 to communicate with each other. For example, links 206 may include any suitable combination of a bus or communication network.

[0041] Returning to storage 202, in the illustrated example, storage 202 stores one or more software versions 208a-208n (commonly referred to as software version(s) 208), network information 210, update management logic 212, partition information 214, and update plan 216. Each of these items is described in more detail below.

[0042] The software versions 208 include one or more versions of the software or APs 108 of Fig. 1. For example, the software versions 208 may be one or more previous versions of the software installed on APs 108 of Fig. 1 installed software. Additionally or alternatively, software versions 208 may include one or more software versions installed on some or all APs 108 of Fig. 1. For example, software versions 208 may contain a software update that is available on APs 108 of Fig. 1 is to be installed. Software versions 208 may contain the software and / or firmware versions / updates.

[0043] A software version 208 may be a software package stored in a storage location, which may be a file store, a key-value store, or another suitable type of storage. The storage location may be local (e.g., on a store of the update management system 104) or remote (e.g., a remote file server accessible by the update management system 104) to the update management system 104.

[0044] Network information 210 may include information associated with a managed communications network (e.g., managed communications network 102 of Fig. 1). Network information 210 can include AP IDs of APs 108 from Fig. 1, AP neighbor information for APs 108 of Fig. 1, Distances between neighboring APs 108 of Fig. 1, network traffic / load information and / or other suitable information. At least a portion of the network in formation 210 may contain and / or be used to determine information about the network topology and / or information about network performance (e.g., information about network traffic / load). For example, at least a portion of network information 210 may contain or be used to determine a neighbor of APs 108 of managed communication network 102, an example of which is described in Fig. 4 is shown and described.

[0045] AP IDs can take any suitable form and may take multiple forms. For example, an AP ID may be reported in a first format (e.g., a Service Set Identifier (SSID) and / or Basic Service Set Identifier (BSSID)) by an AP 108; an update management system 104 may assign a further name (e.g., AP4) corresponding to that AP ID.

[0046] AP neighborhood information may include an identification of neighboring APs 108 or the AP 108, e.g., AP 108. Distances between neighboring APs 108 may include, in formation, the indication of a distance between neighboring or adjacent APs 108. In certain implementations, AP neighborhood information and distances between neighboring APs 108 may be determined using RF information associated with APs 108. For example, RF neighbor data may be generated by each AP 108. For example, each AP 108 may electronically correspond with or its neighboring APs 108 in the RF domain. Each AP 108 may learn of path loss from or its neighboring APs 108 from Media Access Control (MAC) beacon frames or over-the-air (OTA) communications. For example, as described in the Institute of Electrical and Electronics Engineers (IEEE) 802.11 (e.g.,the set of LAN protocols), the MAC beacon frame may contain information about a device (e.g., an AP 108), including an SSID, one or more BSSIDs, frequency channels, supported rates, and / or other possible information.

[0047] Each AP 108 may periodically transmit RF neighbor data and / or neighbor path loss data to the update management system 104 over the communication network 106. The update management system 104 may use the path data to create connected weighted neighborhood graphs, where each vertex x (e.g., node) of the graph corresponds to an AP 108 and each edge of the graph corresponds to a connection between an AP 108 and a neighbor AP 108. In certain implementations, if the path loss metric between two APs 108 is greater than a threshold, then the two APs 108 are not considered neighbors. In certain implementations, if the path loss metric between two APs 108 is less than a threshold, then the two APs 108 may be considered neighbors.In some scenarios, a user device 110 can roam between two neighboring APs 108 without experiencing disconnection or data loss.

[0048] In certain implementations, the update management system 104 may determine the distances between APs 108 based on network information 210 (e.g., leakage information). Additionally or alternatively, one or more devices connected to the managed communications network 102 may determine distances between APs 108 and communicate these distances to the update management system 104 as part of the network information 210. Although the use of a leakage measurement as the basis for determining between APs 108 is described, the distances between APs 108 may be determined in any suitable manner.

[0049] The network performance information, such as network traffic / load information, may include information received from managed communications network 102, such as from m APs 108 and / or other network devices, indicating an amount of traffic being processed by managed communications network 102. For example, the traffic / load information may indicate a load on the managed communications network to update management system 104. Update management system 104 may track the network traffic / load information over time. Update management system 104 may use the network traffic / load information as part of determining a number of partitions into which APs 108 are divided for performing a software update, determining a time at which to instruct APs 108 to perform a software update, and / or for other suitable reasons.

[0050] As in Fig. 2, network information 218 m can be received by update management system 104. For example, update management system 104 can receive network information 218 from APs 108 of managed communication network 102 from Fig. 1 and and / or from one or more other elements that receive network information from APs 108 of Fig. 1. For example, one or more network controllers and / or network switches of managed communication network 102 may aggregate information received from some or all APs 108 and may report this information or derivatives of this information as part of network information 218. In certain implementations, portions of network information 218 may be received from user devices 110 of managed communication network 102 of Fig. 1 may be received if appropriate.

[0051] Network information 218 can AP IDs of APs 108 of Fig. 1, AP neighbor information for APs 108 of Fig. 1, Distances between neighboring APs 108 of Fig. 1 included, RF measurements of APs 108 of Fig. 1, path loss information from APs 108, and / or other suitable information. Any information included as network information 218 may be stored as part of network information 210, and any information described as included in network in formation 210 may have been received as part of network information 218.

[0052] The update management system 104 may store some or all of the information 218 directly as network information 210. Additionally or alternatively, the update management system 104 may determine certain information in form of network information 218 and then store the determined information as part of network information 210. For example, to the extent that the network information 218 does not directly identify the neighbors of APs 108, the network information 218 may include certain information (e.g., RF measurements and the like) that can be used to update the update management system 104 to determine the neighbors of APs 108, estimates of the distances between APs 108, and / or other suitable information.

[0053] Update logic 212 may include instructions for analyzing some or all of the network information 210 / 218; determining a number of partitions into which APs 108 should be divided; dividing APs 108 into the specified number of partitions according to a vertex coloring algorithm and using at least a portion of the network information 210 / 218; and communicating software update instructions 220 (described below) to APs 108 to perform the software update. Update management logic 212 may perform the partitioning according to the techniques described in this disclosure.

[0054] Update management logic 212 may process network information 218 to determine the identities of APs 108 of managed communication network 102, a number of APs 108 of managed communication network 102, neighbors of APs 108, distances between some or all of APs 108 (e.g., distances between neighbor APs 108), network traffic and / or network load of managed communication network 102, and / or any other suitable network information 210. Network information 218 may include some of this network information 210 and / or update management logic 212 may analyze network information 218 to determine some of this network information 210.

[0055] The update management logic 212 may determine the number of partitions into which APs 108 should be divided for performing a software update. This disclosure contemplates that the update management logic uses any process or algorithm to determine the number of partitions into which APs 108 should be divided for performing a software update. Some or all of the network information 210 may be used to determine the number of partitions into which APs 108 should be divided.

[0056] In certain implementations, the number of partitions into which APs 108 are to be divided can be determined according to a current user device load in the managed network 102 (e.g., the number of user devices 110 in the managed communication network 102, which can be determined from the network information 210 / 218). For example, assume that the managed communication network 102 comprises 500 APs 108 and that each AP 108 can serve an average of 10 user devices 110. In this example, if 2500 user devices 110 are currently connected, the load is 50%, which could be borne by only 250 APs 108. If the number of partitions is chosen to be 3, then approximately 165 of the APs 108 (~500 / 3) can reboot, while the remaining 335 APs 108 can serve the user devices 110. Another example: If 3500 user devices are currently connected, the utilization is 70%.If the number of partitions is set to 5, the remaining 400 APs 108 can serve the user devices 110 when approximately 100 of the APs 108 reboot.

[0057] As a specific example, the number of partitions into which the APs 108 are to be divided can be determined according to the following formula: P=ceiling(CAPACAPA−C(1+RU))

[0058] In this example, C AP represents the number of user devices 110 that a single AP 108 can handle (e.g., the capacity of the user devices of a single AP 108); A represents the number of APs 108 in the managed communication network 102; C represents the number of user devices 110 connected to the managed communication network 102 (e.g., connected to an AP 108 of the managed communication network 102); R U is a redundancy ratio during a software update; and P represents the number of partitions.

[0059] To further explain this example formula, some additional variables and related details may be helpful. For example, R may represent a redundancy ratio of a network in which the APs operate (e.g., managed communication network 102), A P may represent a set of APs 108 in a partition, Au may represent a set of APs 108 that are operational during a reboot of a partition (e.g., from partitions other than the partition being rebooted), and Ac may represent a set of APs 108 capable of supporting a current client load (e.g., a current set of user devices 110 in the managed communications network 102). The following equations describe certain relationships between these variables, according to certain embodiments. Au=A−AP AP=AP

[0060] To further describe a redundancy ratio (R), during the restart of a partition, it may be desirable for the client capacity (e.g., the capacity of the APs 108 to serve the user devices 110) of the remaining running APs 108 (A U ) is sufficient to support the network client load C (e.g., the number of user devices 110 connected to the managed communications network 102) and some additional capacity to provide redundancy. R U The redundancy ratio during the reboot of a partition may be the ratio of the desired additional APs 108, such as the number of APs 108 suitable for carrying the current client load (e.g., a current number of user devices 110 in the managed communication network 102). For example, if 100 APs 108 are sufficient to carry the current client load, and the desired redundancy ratio (R u) is 0.25, it may be appropriate to keep 125 APs 108 running during a reboot of the APs 108 of a partition.

[0061] In certain embodiments, the following equation may describe the number of APs 108 that are operational during a reboot of a partition (Au) (e.g., from partitions other than the partition being rebooted). Au=AC+RuAC

[0062] In certain embodiments, the following equation may represent a number of APs 108 appropriate for a current client load (e.g., a current number of user devices 110 in the managed communication network 102) (Ac). AC=CCAP

[0063] By suitable substitutions the following equation can be set up. Au=CCAP+RuCCAP

[0064] A corresponding reduction can lead to the following equation. Au=CCAP(1+Ru)

[0065] From the above equations for the number of APs 108 in operation during the partition reboot, the following equation can be determined. A−AP=CCAP(1+Ru)

[0066] Rearranging the above equation yields the following equation. AP=A−C(1+Ru)CAP

[0067] The rewriting of the right-hand side using the common denominator C AP results in the following equation and the corresponding description. AP=CAPA−C(1+Ru)CAP P=CAPACAPA−C(1+Ru)

[0068] Since this equation may result in a fraction, it may be desirable to take an upper bound on this value, as shown in the following equation, which corresponds to the example equation above for determining a number of partitions into which to divide the APs 108. P=ceiling(CAPACAPA−C(1+Ru))

[0069] In certain implementations, the "current" traffic or load for a managed communications network 102 and / or associated APs 108 generally refers to approximately the time at which partitioning and / or a software update (e.g., AP reboots associated with a software update) is scheduled to be performed. In this way, the number of partitions can be determined to flexibly adapt to the network conditions of the managed communications network 102. In some scenarios, a managed communications network 102 experiencing a high load may require a different number of partitions than a communications network 102 experiencing a lower load. This disclosure is not limited to this interpretation of "current" traffic / load.

[0070] Update logic 212 may partition APs 108 into the specified number of partitions according to a vertex coloring algorithm for the purpose of performing a software update of APs 108. In certain implementations, the vertex coloring algorithm is an iterative process in which update management logic 212 applies or APs 108 are updated individually until some or all APs 108 are assigned to a partition from the set of partitions. In certain implementations, the vertex coloring algorithm applied by update management logic 212 is a modified version of a DSatur vertex coloring algorithm. Although vertex coloring algorithms can be thought of as assigning elements to a color from a set of colors, it should be understood that colors are merely a metaphor for groups. In this example, the groups are partitions of APs for the purpose of updating the software of the APs.

[0071] Further details of an example vertex coloring algorithm in conjunction with specific implementations are given below with reference to Fig. 6A-6B. In general, however, certain implementations of the vertex coloring algorithm may attempt to assign an AP 108 to a partition that is not assigned to any of that AP 108's neighboring APs 108, with different variations when this goal is not possible. Update management logic 212 will use network information 210 to create a neighborhood graph (e.g., an RF neighborhood diagram), an example of which is shown and described below with reference to Fig. 4, and update management logic 212 may use the neighborhood graph as part of applying the vertex coloring algorithm to divide APs 108 into the specified number of partitions.

[0072] In certain implementations, the update management logic 212 may select an AP 108 during each iteration and assign that AP 108 to one of the determined number of partitions according to the vertex coloring algorithm to execute the iterative process. APs 108 may initially be marked as unpartitioned, and partitions may initially have 0 assigned APs 108. In certain implementations, while at least one AP 108 is unassigned to a partition, the update management logic 212 may execute the iterative process as follows: (1) Selecting a next AP 108 to be assigned to a partition, e.g., by selecting an AP 108 from the remaining unpartitioned APs 108 that has a large number of neighboring APs 108 assigned to a partition. If multiple APs 108 exist that have the same largest number of neighboring APs 108 assigned to an associated partition (e.g., the APs 108 and 108 have the same number of neighboring APs 108 assigned to a partition), the update management logic 212 may select the AP 108 with the most neighboring APs 108 among the APs 108 (e.g., whether these neighboring APs 108 have a partition assigned to the area or whether they have not assigned a partition). If multiple APs 108 remain connected under this additional test, the update management logic 212 may select any AP 108 that remains unassigned to a partition. The selected AP 108 may be referred to as the current AP 108. (2) The update management logic 212 may then assign a partition to the current AP 108. In this example, to select the partition to be assigned to the current AP 108, the update management logic 212 may identify (e.g., using partition IDs) the partitions that are not yet assigned to any remaining AP 108 of the current leased AP 108. If multiple partitions are not assigned to any of the neighboring APs 108 of the current AP 108, the update management logic 212 may select the partition assigned to the fewest number of APs 108 among all APs 108 (e.g., all APs 108 of the managed communication system 102). If the update logic 212 is able to identify all partitions (e.g., using partition IDs) that are not yet assigned to neighboring APs 108 of the current APs 108, then the update logic 212 may select a partition (e.g., a partition (e.g.,using a partition ID) assigned to the fewest neighboring APs 108 of the current AP 108.

[0073] The update management logic 212 may then assign the current AP 108 selected in step (1) to the partition selected in step (2). The update logic 212 may then return to step (1) to attempt to select a different AP 108 than the current AP 108 for another iteration of the iterative process. Once all APs 108 have been assigned to a partition, the iterative process may be terminated.

[0074] Update management logic 212 may use some or all of network information 210 to divide APs 108 into the specified number of partitions using a vertex coloring algorithm. For example, update management logic 212 may use the AP IDs to determine the set of APs 108 to partition for the software update. As another example, update management logic 212 may use the number of APs, the neighborhood in formation, and traffic / load information when determining the number of partitions. As another example, update management logic 212 may use the neighbor information as part of applying the vertex coloring algorithm (e.g., when determining which partition to assign to an AP 108 that is the subject of a current iteration of the iterative process) and may use the AP IDs for the purposes of recording the assignment of a partition to an AP 108.Although the update management logic 212 is described as using certain network information on 210 to perform certain operations, the update management logic 212 may use any suitable network information 210 and / or other information to perform certain operations.

[0075] The update management logic 212 may establish an update schedule to instruct the APs 108 to install an update and reboot. Further details are described below with reference to update schedule 216 of Fig. 2 described.

[0076] The update management logic 212 may transmit software update instructions to cause APs 108 to install a software update, including activating the software update, such as by rebooting. The software update instructions are described with reference to the software update instructions 220 of Fig. 2 described in more detail.

[0077] The update management logic 212 may store assignments of APs 108 to partitions as partition information 214. The partition information 214 may include the current and possibly historical assignments of the APs to the partitions. When the update management logic 212 assigns APs 108 to partitions, the update management logic 212 may update the partition information 214 to reflect the updated assignments of the APs 108 to the partitions (e.g., by storing the updated assignments of the APs 108 to the partitions as in the partition information 214). The update management logic 212 may access the partition information 214 as part of the application of the vertex coloring algorithm (e.g., to determine the assignment of APs 108 to partitions during the iterative process).

[0078] Partition information 214 may be or include a data structure (e.g., a table) with entries (e.g., rows) that map APs 108 (e.g., represented by AP IDs) to the respective partitions to which the APs 108 have been assigned. Additionally or alternatively, the table may include entries (e.g., rows) corresponding to a partition, as well as a second column listing the APs 108 (e.g., represented by AP IDs) assigned to that partition. Although primarily described as a table, partition information 214 may have any suitable data structure. Further details regarding an example of at least a portion of the partition information 214 are described below with reference to Fig. 3 shown and described.

[0079] Update schedule 216 may store a schedule for when partitions of APs 108 are to be rebooted. Update schedule 216 may include an ordered list of partitions (e.g., P1, P2, P3, P4, etc.), specific times for a reboot to be commanded by update management system 104 and / or performed by APs 108 of a partition, and / or other suitable information. Update schedule 216 may specify that the identified partitions of APs 108 be updated sequentially, with no two partitions being updated at the same time; however, the disclosure contemplates update schedule 216 specifying that two or more partitions of APs 108 be updated concurrently, if appropriate for a given implementation.

[0080] Software update instructions 220 may be communicated by update management logic 212. The software update instructions 220 may include the instructions communicated by the update management system 104 (e.g., update management logic 212) to APs 108 to use APs 108 to perform a software update according to update schedule 216. Software update instructions 220 are intended to cause APs 108 of a first partition of the deterministic partitions to reboot to install a software update on APs 108 of the first partition at a different time than APs 108 of a second partition (and potentially all other partitions) of the deterministic partitions reboot to install the software update on the APs 108 of the second partition (and potentially all other partitions).In some particular implementations, the software update instructions 220 result in the partitions being updated sequentially, such that the APs 108 of a first partition are updated first, the APs 108 of a second partition are updated second, the APs 108 of a third partition are updated third, and so on, until the partitions (the APs 108 of all partitions) have been updated. This disclosure contemplates that some partitions may be updated simultaneously.

[0081] Software update instructions 220 may cause APs 108 to reboot immediately or after another suitable timeframe to install a software update, which may cause the APs 108 to disconnect from user devices 110 or otherwise become unavailable. If available, a disconnected user device 110 may establish a potential connection to an AP 108 or another partition to resume service. For example, a user device 110 may connect to an AP 108 of a different partition than the partition of the AP 108 from which user device 110 disconnected. The design of the vertex coloring algorithm may promote the availability of an AP 108 of a different partition for user devices 110 that were previously connected to an AP 108 of a partition whose APs 108 are currently rebooting.User devices 110 that become disconnected from a rebooting AP 108 of a rebooting partition may migrate to another AP 108 of a different partition (e.g., another nearby AP 108 from a different partition) in any suitable manner.

[0082] The software update instructions 220 may include the software update (e.g., one or more files containing and / or capable of installing the software update). Additionally or alternatively, the software update may be provided separately to a user device 110, and the software update instructions 220 may include instructions regarding when the user device 110 should activate the software update (e.g., by, at least in part, rebooting). APs 108 may receive a software update (e.g., a software update image) in any manner, such as via a network connection (e.g., via communications network 106), from a software storage location, from a USB device inserted into a USB port of AP 108, etc.).

[0083] The update management logic 212 may repartition the APs 108 at any suitable time, whether according to a set schedule or otherwise. For example, the update management logic 212 may redetermine the appropriate number of partitions and execute the iterative process to assign APs 108 to the determined number of partitions to account for changes in the load of the managed communications network 102, the addition / removal of APs 108 to / from the managed communications network 102, or for any other suitable reason. In certain implementations, the update management logic 212 may sometimes or always repartition before deploying a software update.

[0084] The interfaces 204 facilitate the communication (reception and / or transmission) of messages via one or two communication media, such as via the communication network 106 of Fig. 1. In certain implementations, interfaces 204 include one or more ports. Interfaces 204 may facilitate communication (including the transmission and / or reception) of network information 218, software update instructions 220, and / or other suitable information. Interfaces 204 may be implemented using any combination of hardware, firmware, and software.

[0085] The update management system 104 may be implemented using any suitable combination of hardware, firmware, and software. Some or all components of the update management system 104 may include programming for execution by the processor 200, the programming including instructions for performing some or all of the functions of the update management system 104. As just two examples, the update management logic 212 and update schedule 216 (along with all other components of the update management system 104) may include programming for execution by the processor 200, the programming including instructions for performing some or all of the functions of the update management system 104, including determining a number of partitions for partitioning APs 108 and dividing APs 108 into the determined number of partitions according to a vertex coloring algorithm.

[0086] At least a portion of the memory 202 may be considered a computer-readable medium on which computer code (e.g., instructions such as may be associated with the update management logic 212) is stored. References to a computer-readable medium, a computer-readable storage medium, a computer program product, a tangible computer program, or the like, or a controller, circuit, computer, processor, or the like should be understood to include not only computers with different architectures such as single or multiple i-processor architectures and sequential (Von Neumann) or parallel architectures, but also specialized circuits such as FPGAs, ASICs, signal processing devices, and other devices. References to a computer program, instructions, logic, code, or the like should be understood to include comprehensive software for a programmable processor or firmware such as, for example,, the programmable contents of a hardware device, whether instructions for a processor, or configuration settings for a fixed function device, gate circuit, or programmable logic device, or the like.

[0087] Although in Fig. 2 shows a specific configuration of components, other configurations are also conceivable in this document. For example, although Fig. 2 shows certain components as part of the same device, each of the components can be grouped into sets of one or more that can exist and execute as part of any number of separate and operatively connected devices. Another example: A single component can be configured to perform all or part of the functions described in Fig. 2. Accordingly, the implementations disclosed here should not be limited to the configuration of the components shown in Fig. 2 shown components.

[0088] Fig. 3 shows an exemplary partition allocation table 300 corresponding to certain implementations. In particular, the partition allocation table 300 shows as signatures of APs (e.g., APs 108 of Fig. 1) to partitions as defined by the Update Management System 102 of the Fig. 1 and Fig. 2 (e.g. Update Management Logic 212 of Fig. 2) can be determined. The partition allocation table 300 can be part of the partition information 214 of Fig. 2. Although presented in a table format, the partition assignments can be saved in a suitable format.

[0089] In the example illustration, the partition assignment includes column 300 including column 302 and column 304. Column 302 contains AP IDs corresponding to the APs 108 and 108 that are divided into partitions (e.g., APs 108 of the managed communication network 102 of Fig. 1). In this example, column 302 contains the AP IDs AP1 through APN, where N is any integer greater than 18. Although the partition assignment table 300 contains a specific number of AP IDs (corresponding to a specific number of APs 108), the partition assignment table 300 can, of course, contain any suitable number of AP IDs for the communication network to be managed. The column around 304 contains partition IDs that identify the respective partitions assigned to the APs 108 identified by the AP IDs displayed in column 302. AP IDs and partition IDs can have any suitable format.

[0090] In the example shown, some APs have been assigned a partition (e.g., AP1, AP3, AP4, AP5, AP7, AP8, AP9, AP11, AP12, AP13, AP14, AP15, AP17, AP18 and APN have been assigned partitions 2, 2, 1, 5, 5, 4, 1, 5, 3, 3, 5, 4, 1, 2 and 3, while other APs have not yet received a partition (e.g., AP2, AP6, AP10, and AP16). This may mean that the update management system 104 of Fig. 1 (e.g. Update Management Logic 212 of Fig. 2) in the process of applying the vertex coloring algorithm to divide the APs 108 into partitions. Although shown to provide a single assignment of APs 108 to partitions, this disclosure contemplates update management system 104 of Fig. 1 Storing historical mappings, if possible.

[0091] Fig. 4 illustrates an example of a neighborhood graph 400 and the associated partition of APs, according to certain implementations. In general, a neighborhood graph for a communication network may provide a visualization of specific devices in a communication network (e.g., in this example, APs of a managed communication network), neighborhood relationships of those devices, and possibly the relative distances (e.g., to scale) between and among those devices. The neighborhood graph 400 may be a representation of a managed communication network (e.g., managed communication network 102 or Fig. 1), which is derived from the network information 210 / 218 from Fig. 2) can be created. The neighbor diagram 400 may or may not be evaluated and may or may not be displayed (e.g., by update management system 104 of Fig. 1) and 2) for executing the partition algorithm of this disclosure.

[0092] In the example shown, neighbor graph 400 comprises vertices 402 and edges 404, the latter of which are the connecting lines between vertices 402. The vertices 402 may represent APs 406, and the edges 404 may represent a neighbor relationship between the APs 406 connected to the vertices 402 connected by the edge 404. In certain implementations, APs 406 may be examples of APs 108 of Fig. 1, and APs 406 may be part of a managed communications network similar to the managed communications network 102 of Fig. be 1

[0093] An edge 404 may indicate that the APs 406 corresponding to the vertices 402 connected by this edge 404 can hear each other and are neighbors. The network information received by the update management system (e.g., the network information 218 received from the update management system 104 of Fig. 2) may contain path loss information that can be used to determine the distances between APs 406. A user device or an AP may send a broadcast message, and the devices that can receive the broadcast message may be identified using the RF neighbor data. Each loss of the broadcast message may correspond to the neighbors' path loss data and identify the strength or weakness of the network connection from a particular location. The path loss associated with an edge 404 may indicate how far away the APs 406 corresponding to the vertices 402 connected by that edge 404 are. For example, a low path loss may indicate that the APs 406 are closer than a higher path loss might indicate. As described above, path loss is only one method for determining the distance between APs, e.g., APs 406.If there is no edge 404 between two devices 402, the APs 406 corresponding to these two devices 402 cannot hear each other.

[0094] An update management system (e.g. Update Management System 104 of the Fig. 1 and Fig. 2) may have determined a number of partitions into which APs 406 are to be divided, and may have securely divided APs 406 into the determined number of partitions using a vertex coloring algorithm in accordance with certain implementations of this disclosure. In the example shown, the number of partitions determined for APs 406 is five and includes partitions P1, P2, P3, P4, and P5. Partitions P1 through P5 are represented by corresponding shading, as shown in legend 408. A vertex 402 is shaded according to the partition associated with the AP 406 corresponding to vertex 402.

[0095] As can be seen from the example of Fig. 4, the APs 406 have generally been partitioned such that neighboring APs 406 are assigned to different partitions, although this partitioning contemplates that some neighboring APs 406 may be assigned to the same partition, which may result from the application of the disclosed algorithm and / or other factors. This distribution of partitions may help ensure that if a particular AP 406 reboots (along with the other APs assigned to the same partition as the particular AP 406), a user device that was connected to the particular AP 406 can maintain its service with little or no interruption by connecting to another neighboring AP 406 of the particular AP 406, likely assigned to a different partition that is not rebooting at the same time.

[0096] It should be understood that the particular arrangement of the APs 406 serves only as an example. The division of the APs 406 into the illustrated partitions P1 through P5 also serves only as an example. Furthermore, the number of partitions (5) is only an example and may, but does not have to, correspond to the number of APs 406 in the neighborhood graph 400.

[0097] Fig. 5 illustrates an example method 500 for updating APs of a communication network, according to certain implementations. The method 500 is described using the managed communication network 102, the APs 108, the user devices 110, and the update system as examples. In certain implementations, some or all of the operations of the method 500 are performed by the update management system 104 (e.g., by the update management logic 212 of Fig. 2).

[0098] At step 502, the update management system 104 may obtain network information 210 for APs 108 from the managed communications network 102. As described above, APs 108 are configured to provide one or more user devices 110 with access to a communications network. For example, APs 108 may provide user devices 110 with access to the managed communications network 102 and / or other communications networks (e.g., communications network 106). Network information 210 may include network topology information for the managed communications network 102, network performance information for the managed communications 102, and / or other suitable information. For example, the network in formation 210 may obtain AP IDs of APs 108 from Fig. 1, AP neighbor information for APs 108 of Fig. 1, Distances between neighboring APs 108 of Fig. 1, network traffic / load information and / or other appropriate information.

[0099] The managed communications network 102 may include APs 108 in a variety of arrangements. For example, the APs 108 may include a first AP 108, a second AP 108, a third AP 108, and a fourth AP 108. In partial implementations, the first AP 108 is a neighbor of the second AP 108; the second AP 108 is a neighbor of the third AP 108; the first AP 108 and the third AP 108 are a neighbor; and the fourth AP 108 is not a neighbor of the first AP 108, the second AP 108, or the third AP 108.

[0100] At step 504, the update management system 104 may determine, according to the network information 210, a number of partitions into which APs 108 are to be divided for providing a software update to APs 108. The update management system 104 may determine the number of partitions based on any suitable information and in any possible manner.

[0101] For example, the update management system 104 may determine the number of partitions based on one or more of the following: the number of APs 108, the number of user devices 110 served by APs 108, the time of day a software update is performed (e.g., reboots are instructed by APs 108), the network traffic associated with APs 108, and / or other suitable information, each of which may be indicated in or otherwise determined from network information 210. The number of user devices 110 served by APs 108 could be the number at a particular (possibly current) point in time, an average over time, or some other measure of the number of user devices 110 served by APs 108.The network traffic associated with APs 108 could be a measure of network traffic at a particular (possibly current) point in time, an average over time, or another measure of network traffic associated with APs 108. In one example, the update management system 104 may determine the number of partitions based on the number of APs 108 and the number of user devices 110 served by the APs 108.

[0102] In step 506, the update management system 104 may partition APs 108 into the specified partitions according to a vertex coloring algorithm implemented by update management logic 212. For example, using network information 210, update management logic 212 may create a neighbor graph (e.g., neighbor graph 400 of Fig. 4), in which APs 108 can correspond to the nodes of the neighbor graph and the neighbor relationships of APs 108 can correspond to the edges of the neighbor graph. In certain implementations that use the neighbor graph, update management system 104 divides APs 108 into the determined partitions such that each AP 108 is assigned to a single corresponding partition and APs 108 of one partition do not overlap APs 108 of another partition. The vertex coloring algorithm can attempt to divide APs 108 into the determined number of partitions so that neighboring APs 108 are not assigned to the same partition; however, in some cases, one or more groups of neighboring APs 108 are assigned to the same partition. Additional details regarding an example of an iterative method for dividing APs 108 of the determined set of partitions are described below in connection with Fig. 6A-6B.

[0103] In step 508, the update management system 104 may transmit the software update instructions 220 to APs 108. Software update instructions 220 are intended to cause APs 108 of a first partition of the particular partitions to perform a reboot to install a software update on APs 108 of the first partition at a different time than APs 108 of one or more other partitions of the particular partitions to perform a reboot to install the software update on the APs 108 or other partition. In certain implementations, the instructions 220 are used to update the partitions in order, such that the APs 108 of the first partition are updated first, the APs 108 of a second partition are updated second, the APs 108 of a third partition are updated third, and so on, until all partitions (the APs 108 of all partitions) have been updated.In certain implementations, the APs 108 of all partitions are updated (and specifically, started) at specific times. However, this disclosure contemplates updating some partitions at the same time, if appropriate.

[0104] Software update instructions 220 may cause APs 108 to reboot immediately or after another suitable timeframe to install a software update, which may cause the APs to disconnect from or otherwise become unavailable to user devices 110. If available, a disconnected user device 110 may be able to connect to an AP 108 of a different subscriber to resume service. For example, a user device 110 may reconnect to an AP 108 of a different subscriber than the partition of the AP 108 from which the user device 110 was disconnected.

[0105] The software update instructions may include the software update (e.g., one or more files containing the software and / or capable of installing the software). Additionally or alternatively, the software update may be provided separately to a user device 110, and the software update instructions 220 may provide instructions as to when the user device 110 should activate the software update (e.g., by, at least in part, rebooting). APs 108 may obtain a software update (e.g., a software update image) in any suitable manner, such as via a network connection (e.g., via communications network 106), from a software storage location, from a USB device inserted into a USB port of AP 108, etc.).

[0106] Fig. 6A-6B illustrate an example method 600 for dividing APs of a communication network into partitions using a vertex coloring algorithm, according to certain implementations. The method 600 is described using the example of the managed communication network 102, the APs 108, the user device 110, and the update management system 104. In some implementations, some or all of the operations of method 600 are performed by the update management system 104 (e.g., by the update management logic 212 of Fig. 2) was carried out.

[0107] The method 600 may be an iterative process. In certain implementations, at the beginning of the method 600, APs 108 are initially categorized as unpartitioned, and each partition initially contains no ignored APs 108. Furthermore, in certain implementations, the update management system 102 (e.g., update management logic 212) has already determined a set of partitions into which APs 108 are to be divided. In some specific implementations, the update management logic 212 may have generated a neighborhood graph using network information 210 prior to applying the iterative process (e.g., neighbor or graph 400 of Fig. 4) in which APs 108 can correspond to vertices of the neighbor graph, and neighbor relationships of APs 108 can correspond to edges of the neighbor graph. When applying the iterative process, the management system can access the information of the network 210, the generated neighbor graph, the partition information 214, and / or any other suitable information.

[0108] In step 602, update management system 104 may select, according to network information 210, a current AP 108 from the APs 108 of managed communication network 102 that represents a partition of certain partitions, if any, in unassigned partitions. This disclosure contemplates any suitable techniques for update management system 104 to make this selection. Steps 602a through 602h illustrate an example technique for update management system 104 to make this selection.

[0109] In step 602a, update management system 104 may attempt to identify, from the one or two APs 108 not assigned to a partition, a first particular AP 108 that has the largest number of neighboring APs 108 assigned to a partition. In step 602b, update management system 104 may determine whether a first particular AP 108 that has the largest number of neighboring APs 108 assigned to a partition was identified in step 602a. In certain implementations, steps 602a and 602b may be combined into a single determination.

[0110] If the update management system 104 is unable to identify, from one or more APs 108 not yet assigned to a partition, a first particular AP 108 having the largest number of neighbor APs 108 assigned to a partition, method 600 may proceed to step 602h, which is described in more detail below. If the update management system 104 identifies, from one or more APs 108 not assigned to a partition, a first particular AP 108 having the largest number of neighbor APs 108 assigned to a partition, method 600 may proceed to step 602c. At step 602c, the update management system 104 may determine whether multiple APs 108 having a largest number of neighbor APs 108 assigned to a partition have been identified from one or more APs 108 not assigned to a partition.If update management system 104 determines that multiple APs 108 have not been identified (e.g., only the first particular AP 108 has been identified), method 600 may proceed to 602d, where update management system 104 identifies the first particular AP 108 as the current AP 108, and method 600 may proceed to step 604, where the first particular AP 108 is used as the current AP 108.

[0111] Returning to step 602c, if the update management system 104 determines that multiple APs 108 have been identified (e.g., multiple APs 108 with the largest number of neighbor APs 108 assigned to a partition have been identified from one or more APs 108 not assigned to a partition), then method 600 may proceed to 602e. In step 602e, the update management system 104 may attempt to identify a second particular AP 108 from the multiple candidate APs 108 identified in steps 602a-602c. In certain implementations, the update management system 104 may select the AP 108 having the largest number of neighbor APs 108 as the second particular AP 108, regardless of whether or not those neighbor APs 108 have been assigned a partition. In step 602f, update management system 104 may determine whether a second particular AP 108 was identified in step 602e.If the update management system 104 was able to identify a second particular AP 108 at steps 602e-602f, then the update management system 104 may identify the second particular AP 108 as the current AP 108, and the method 600 may proceed to step 604 with the second particular AP 108 as the current AP 108. If the update management system 104 was unable to identify a second particular AP 108 (e.g., at steps 602e-602g), the method 600 may proceed to step 602h.

[0112] In step 602h, the update management system 104 may identify one or more other APs 108 that are not associated with a partition, identify the third specific AP 108 as the current AP 108, and method 600 may continue with step 604 using the third specific AP 108 as the current AP 108. In the example shown, 602h may be reached if update management system 104 is unable to identify either a first particular AP 108 (an AP 108 from which one or more APs 108 are not assigned to a partition, which has a large number of neighboring APs 108 that have been assigned to a partition) or a second particular AP 108 (an AP 108 from among several candidate APs 108 identified at steps 602a-602c that have the large number of neighboring APs 108, regardless of whether these neighboring APs 108 have been assigned a partition or not).

[0113] In step 604, the update management system 104 may determine a current partition to be assigned to the current AP 108, according to the partitions assigned to neighboring APs 108 of the current AP 108. This disclosure contemplates any suitable technique for the update management system 104 to make this determination. Steps 604a through 604h illustrate an example technique for the update management system 104 to make this determination.

[0114] At step 604a, the update management system 104 may attempt to identify one or more unassigned partitions of neighboring APs 108 of the current AP 108. At step 604b, the update management system 104 may determine whether any unassigned partitions were identified at step 604a. In certain implementations, steps 604a and 604b may be combined into a single determination.

[0115] If update management system 104 is unable to identify one or more unassigned partitions of neighboring APs 108 of the current AP 108, then method 600 will proceed to step 604h, as described in more detail below. If update management system 104 identifies one or more unassigned partitions of neighboring APs 108 of the current AP 108, then method 600 may proceed to step 604c. In step 604c, update management system 104 may determine whether multiple unassigned partitions of neighboring APs 108 of the current AP 108 were identified at step 604a. If update management system 104 determines that multiple unassigned partitions of neighboring APs 108 of the current AP 108 were not identified (e.g.,, to an unassigned partition from neighboring APs 108), then method 600 may proceed to 604d where the update management system 104 identifies the single unassigned partition from neighboring APs 108 as the current partition, and method 600 may proceed to step 606 using the single unassigned partition as the current partition.

[0116] Returning to step 604c, if the update management system 104 determines that multiple unassigned partitions were identified by neighboring APs 108 of the current AP 108 at step 604a, then method 600 may proceed to 604e. At step 604e, the update management system 104 may attempt to identify a first particular unassigned portion of the multiple unassigned partitions as being assigned to the fewest set of APs 108. At step 604f, the update management system 104 may determine if a first particular partition was identified at step 604e. If the update management system 104 was able to identify a first particular partition at steps 604e-604f, then the update management system 104 may identify the first particular partition as the current partition, and method 600 will proceed to step 604 using the first partition as the current partition.If the update management system 104 is unable to identify a first particular partition (e.g., at steps 604e through 604g), then method 600 may continue with step 604h.

[0117] In step 604h, the update management system 104 may identify, from one or more partitions assigned to neighboring APs 108 or the current AP 108, a second particular partition of partitions assigned to neighboring APs 108 of the current AP 108 to which a smallest number of neighboring APs 108 have been assigned. In other words, if the update management system 104 is unable to identify an unassigned partition among the neighboring APs 108 of the current APs 108 (e.g., in steps 604a-604g), then in step 604h, the update management system 104 may identify as the second particular partition the partition assigned to at least one of the neighboring APs 108 of the current AP 108, and identify this second particular partition as the current partition.

[0118] In step 606, the update management system 104 may assign the current partition to the current AP 108. In certain implementations, the update management system 104 may update the partition information 214 to reflect the assignment of the current partition to the current AP 108.

[0119] In step 608, the update management system 104 may determine if any APs 108 are not assigned to a partition. If the update management system 104 determines at step 608 that one or more APs 108 are not assigned to a partition, then method 600 may return to step 602 to perform a next iteration of the iterative process of method 600. If the update management system 104 determines at step 608 that no APs 108 remain that are not assigned to a partition (e.g., that all APs 108 have been assigned to a partition), then method 600 may terminate, possibly returning to step 508 of Fig. 5 is returned to transmit software update instructions 220 according to the partitioning of APs 108.

[0120] Fig. 7 illustrates an example method 700 for updating APs of a communication network, according to certain implementations. The method 700 is described using the managed communication network 102, the APs 108, the user devices 110, and the update management system 104 as an example. In certain implementations, some or all of the operations of the method 700 are performed by the update management system 104 (e.g., by the update management logic 212 of Fig. 2) was carried out.

[0121] In step 702, the update management system 104 may divide the APs 108 into multiple partitions according to an iterative process. In certain implementations, the update management system 104 may have previously determined a number of partitions into which APs 108 are to be divided. In certain implementations, prior to applying the iterative process, update management logic 212 may have generated a neighbor graph using network information 210 (e.g., neighbor graph 400 of Fig. 4), in which APs 108 may correspond to the vertices of the neighbor graph, and the neighborhood relationships of APs 108 may correspond to the edges of the neighbor graph. In applying the iterative process, the management system accesses the network information 210, the generated neighbor graph, partition information 214, and / or any other suitable information. In certain implementations, the iterative process includes steps 702a-702d, which are described below.

[0122] In step 702a, the update management system 104 may select a current AP 108 for a current iteration of the iterative process from the APs 108 that are not assigned to a partition of the set of partitions. In step 702b, the update management system 104 may identify a selected partition to be assigned to the current AP 108 based on one or more partitions assigned to the neighboring APs 108 of the current AP 108. In step 702c, in response to identifying the selected partition, the update management system 104 may assign the selected partition to the current AP 108. At step 702d, the update management system 104 may perform a next iteration of the iterative process in response to determining that one or more of the APs 108 of the APs 108 are not yet assigned to a partition after assigning the selected partition to the current AP 108.

[0123] In step 704, in response to determining that the APs 108 (e.g., all APs 108 of the managed communications network 102) have been assigned to a corresponding partition of the determined partitions, the update management system 104 may transmit software update instructions 220 to APs 108. Software update instructions 220 are intended to cause APs 108 of a first partition of the plurality of partitions to perform a reboot to install a software update (e.g., a software version 208) on the APs 108 of the first partition at a different time than APs 108 of a second partition of the plurality of partitions perform a reboot to install the software update (e.g., a software version 208) on APs 108 of the second partition.

[0124] Fig. Figure 8 shows a block diagram of an example computing device 800, according to certain implementations. As described above, implementations of this disclosure may be performed using computing devices. For example, all or a portion of the Fig. 1-7 (e.g., system 100, update management system 104, APs 108, user devices 110, and methods 500-700) may be implemented at least in part with one or more computing devices, such as computing device 800.

[0125] Computing device 800 may include one or more computer processors 802, non-persistent memory 804 (e.g., volatile memory such as RAM, cache memory, etc.), persistent storage 806 (e.g., a hard drive, an optical drive such as a CD drive or a DVD drive, flash memory, etc.), a communications interface 812 (e.g., Bluetooth interface, infrared interface, network interface, optical interface, etc.), input devices 810, output devices 808, and numerous other elements and functions. Each of these components is described below.

[0126] In certain embodiments, computer processor(s) 802 may be an integrated circuit for processing instructions. Computer processor(s) may be, for example, one or more cores or micro-cores of a processor. Processor 802 may be a general-purpose processor configured to execute program code included in software executing on computing device 800. Processor 802 may be a special-purpose processor in which certain instructions are integrated into the processor design. Although in Fig. 10 only one processor 802 is shown, the computing device 800 may include any number of processors.

[0127] Computing device 800 may also include one or more input devices 810, such as a touchscreen, a keyboard, a mouse, a microphone, a touchpad, an electronic pen, a motion sensor, or another type of input device. Input devices 810 may enable a user to interact with computing device 800. In certain implementations, computing device 800 may include one or more output devices 808, such as a screen (e.g., a liquid crystal display (LCD), a plasma display, a touchscreen, a cathode ray tube (CRT) monitor, a projector, or other display device), a printer, external storage, or other output device. One or more of the output devices may be the same as or different from the input device(s).The input and output device(s) may be connected locally or remotely to the computer processor(s) 802, the non-persistent memory 804, and the persistent memory 806. There are many different types of computing devices, and the above-mentioned input and output devices may also take other forms. In some cases, multimodal systems may allow a user to provide multiple types of input / output to communicate with the computing device 800.

[0128] Additionally, the communications interface 812 may facilitate connection of the computing device 800 to a network (e.g., a LAN, WAN) such as the Internet, a mobile network, or another type of network) and / or to another device, such as another computing device.The communication interface 812 can perform or facilitate the reception and / or transmission of wired or wireless communications using wired and / or wireless transceiver devices, including those having an audio port / connector, a microphone port / connector, a USB port / connector, an Apple® Lightning® port / connector, an Ethernet port / connector, a fiber optic port / connector, a proprietary wired port / connector, Bluetooth® wireless signaling, Bluetooth® Low Energy (BLE) wireless signaling, IBEACON® wireless signaling, RFID wireless signaling, Near Field Communication (NFC) wireless signaling, Dedicated Short Range Communication (DSRC) wireless signaling, an 802.11 Wi-Fi radio signal transmission, WLAN signal transmission, Visible Light Communication (VLC), Worldwide Interoperability for Microwave Access (WiMAX), IR communication radio signal transmission, Public Switched Telephone Network (PSTN) signal transmission, Integrated Services Digital Network (ISDN) signal transmission, 3G / 4G / 5G / LTE cellular data network radio signal transmission, Ad Hoc Network signal transmission, radio wave signal transmission, microwave signal transmission, infrared signal transmission, visible light signal transmission, ultraviolet light signal transmission, radio signal transmission along the electromagnetic spectrum, or any combination thereof.

[0129] The communications interface 812 may also include one or more Global Navigation Satellite System (GNSS) receivers or transceivers used to determine the location of the computing device 800 based on the reception of one or more signals from one or more satellites associated with one or more GNSS systems. GNSS systems include, among others, the U.S. Global Positioning System (GPS), the Russian Global Navigation Satellite System (GLONASS), the Chinese BeiDou Navigation Satellite System (BDS), and the European Galileo GNSS. There is no restriction on operation on any particular hardware arrangement, and therefore the basic functions here can be easily replaced with improved hardware or firmware arrangements as they are developed.

[0130] The term "computer-readable medium" includes, but is not limited to, portable or non-portable storage devices, optical storage devices, and various other media capable of storing, containing, or transmitting instructions and / or data. A computer-readable medium may be a non-transitory medium capable of storing data and which does not contain carrier waves and / or transitory electronic signals that propagate wirelessly or over wired connections. Examples of a non-transitory medium may include, but are not limited to, a magnetic disk or tape, optical storage media such as CDs or DVDs, flash memory, storage, or memory devices.A computer-readable medium may store code and / or machine-executable instructions that may represent a procedure, function, subroutine, program, routine, subprogram, module, software package, class, or any combination of instructions, data structures, or program instructions. A code segment may be coupled to another code segment or hardware circuit by passing and / or receiving information, data, arguments, parameters, or memory contents. Information, arguments, parameters, data, etc., may be passed, relayed, or transmitted by any means, such as memory sharing, message passing, token passing, network transmission, or the like.

[0131] All or a portion of the components of computing device 800 may be implemented in circuitry. For example, the components may include electronic circuitry or other electronic hardware and / or may be implemented using electronic circuitry that may include one or more programmable electronic circuits (e.g., microprocessors, graphics processing units (GPUs), digital signal processors (DSPs), CPUs, and / or other suitable electronic circuitry) and / or may be implemented using computer software, firmware, or any combination thereof to perform the various operations described herein. In some aspects, the computer-readable storage devices, media, and memories may include a wired or wireless signal containing a bitstream and the like.However, non-transitory computer-readable storage media explicitly exclude media such as energy, carrier signals, electromagnetic waves and signals per se when mentioned.

[0132] Certain implementations may provide none, some, or all of the following technical advantages. These and other potential technical advantages may be described elsewhere in this disclosure or may be readily apparent to one of ordinary skill in the art based on this disclosure.

[0133] Certain implementations of this disclosure may provide one or more technical advantages. Certain implementations may implement a more strategic approach to updating the software of APs deployed and operating in a communications network, allowing a subset of the APs to remain active while other APs are rebooted as part of the update process. Compared to certain other techniques for partitioning APs for software updates, certain implementations may reduce the number of partitions, which may reduce the overall duration of the software update. For example, for dense AP deployments, certain implementations may result in two to six partitions, rather than twenty or more, as may be the case with other techniques (e.g., RF channel-based partitioning) for partitioning APs for a software update.In certain implementations, the number of partitions can be adjusted based on the actual load on the communications network from user devices. For example, a lightly loaded communications network may be able to be updated more quickly with only two partitions. In certain implementations, the number of partitions may remain the same even if additional RF channels are dynamically created by the operation of the communications network, which can increase the predictability of software update time. Of course, in each of these examples, the number of partitions can depend on a variety of factors.

[0134] Certain implementations can reduce network disruptions compared to other solutions for performing a live software update, which can reduce or eliminate negative impacts on a business during a software update. In scenarios where the software update is deployed or managed by a third party (e.g., a service provider), the reduced disruptions to a communications network can increase customer confidence in the software update process.

[0135] It is understood that the systems and methods described in this disclosure may be combined in any suitable manner.

[0136] Although certain operations are described or illustrated in a particular order in this disclosure, the operations may occur in any suitable order. Furthermore, it is contemplated throughout this disclosure that any suitable operations may be repeated one or more times in any order. Although certain operations are described or illustrated in this disclosure as occurring sequentially, all suitable operations may occur at substantially the same time, where appropriate. Any suitable operation or sequence of operations described or illustrated herein may be interrupted, suspended, or otherwise controlled by another process, such as an operating system or kernel, where appropriate.The actions may be performed within an operating system environment or as stand-alone routines that consume all or a substantial portion of the system processing.

[0137] Although this disclosure has been described with reference to illustrative implementations, this description is not intended to be taken in a limiting sense. Various modifications and combinations of the illustrative implementations, as well as other implementations of the disclosure, will be apparent to those skilled in the art from this description. Therefore, the appended claims are intended to encompass all such modifications or implementations.

Claims

[1] A computer system consisting of: one or more processors; and one or more non-transitory, computer-readable storage media storing programming for execution by the one or more processors, the programming comprising instructions to: Obtaining network information for a plurality of access points (APs), the plurality of APs configured to provide one or more user devices with access to a communications network; Determining, according to the network information, a plurality of partitions into which the plurality of APs are to be divided in order to distribute a software update to the plurality of APs; Dividing the plurality of APs into the plurality of partitions according to a vertex coloring algorithm, wherein the APs of the plurality of APs correspond to vertices of the vertex coloring algorithm and neighbor relationships of the APs of the plurality of APs correspond to edges of the vertex coloring algorithm; and Transmitting software update instructions to the plurality of APs, wherein the software update instructions cause APs of a first partition of the plurality of partitions to reboot to install the software update on the APs of the first partition at a different time than APs of a second partition of the plurality of partitions reboot to install the software update on the APs of the second partition. [2] The computer system of claim 1, wherein the network information comprises: Device identifiers for each of the plurality of APs; and Neighborhood information for each of the multitude of APs. [3] A computer system according to claim 1, wherein the instructions further include instructions to, in accordance with the network information: a number of APs in the plurality of APs; and a number of user devices served by the plurality of APs; to determine, and the instructions for determining the plurality of partitions comprise instructions for determining the plurality of partitions according to the number of APs in the plurality of APs and the number of user devices served by the plurality of APs. [4] A computer system according to claim 1, wherein: the plurality of APs comprises a first AP, a second AP, a third AP, and a fourth AP; the first AP is a neighbor of the second AP; the second AP is a neighbor of the third AP; the first AP and the third AP are not adjacent; and the fourth AP is not a neighbor of the first AP, the second AP, or the third AP. [5] The computer system of claim 1, wherein the instructions for dividing the plurality of APs into the plurality of partitions according to the vertex coloring algorithm comprise instructions for performing an iterative process comprising, for each AP of the plurality of APs: selecting a current AP from one or more APs of the plurality of APs that are not assigned to a partition of the plurality of partitions according to the network information; determining a current partition to be assigned to the current AP depending on which partitions of the plurality of partitions are assigned to the neighboring APs of the current AP; Assign the current partition to the current AP; and Performing a next iteration of the iterative process in response to determining that one or more APs of the plurality of APs are not assigned to a partition of the plurality of partitions. [6] The computer system of claim 5, wherein the instructions for selecting the current AP from the one or more APs of the plurality of APs not assigned to a partition of the plurality of partitions according to the network information comprise instructions for: attempting to identify, from the one or more APs of the plurality of APs that remain unassigned to a partition, a first particular AP that has the largest number of neighbor APs that have been assigned to a partition of the plurality of partitions; in response to identifying the first particular AP from the one or more APs of the plurality of APs remaining unassigned to a partition that has the largest number of neighbor APs assigned to a partition of the plurality of partitions, identifying the first particular AP as the current AP; in response to identifying a plurality of candidate particular APs from the one or more APs of the plurality of APs remaining unassigned to a partition as having the same largest number of neighbor APs assigned to a partition of the plurality of partitions, attempting to identify a second particular AP from the plurality of candidate particular APs that has a largest number of neighbor APs; in response to identifying a second particular AP from the one or more APs of the plurality of APs that remain unassigned to a partition as having the same largest number of neighboring APs that have been assigned to a partition of the plurality of partitions, identifying the second particular AP as the current AP; and in response to not being able to identify a second particular AP from the one or more APs of the plurality of APs remaining unassigned to a partition as having the same largest number of neighbor APs assigned to a partition of the plurality of partitions, identifying any third particular AP from the one or more APs of the plurality of APs remaining unassigned to a partition of the plurality of partitions as the current AP. [7] The computer system of claim 5, wherein the instructions for determining the current partition to be assigned to the current AP depending on which partitions of the plurality of partitions are assigned to the neighboring APs of the current APs comprise instructions for: Attempt to identify one or more unassigned partitions of neighboring APs of the current AP; in response to identifying a single unassigned partition from neighboring APs of the current AP, identifying the single unassigned partition as the current partition; in response to identifying a plurality of unassigned partitions of neighboring APs of the current AP, identifying a first particular unassigned partition of the plurality of unassigned partitions as being assigned to a fewest set of APs of the plurality of APs, and identifying the first particular unassigned partition as the current partition; and in response to not being able to identify one or more unassigned partitions of neighbor APs of the current AP, identifying a first particular assigned partition from among partitions assigned to neighbor APs of the current AP to which a least amount of neighbor APs has been assigned, and identifying the first particular assigned partition as the current partition. [8] A computer system according to claim 5, wherein: the plurality of APs are initially categorized as unpartitioned; and each partition of the plurality of partitions contains no assigned APs. [9] A computer-implemented method comprising: Obtaining network information for a plurality of access points (APs), the plurality of APs configured to provide one or more user devices with access to a communications network; Determining, according to the network information, a plurality of partitions into which the plurality of APs are to be divided to provide a software update to the plurality of APs; Dividing the plurality of APs into the plurality of partitions according to a vertex coloring algorithm, wherein the APs of the plurality of APs correspond to vertices of the vertex coloring algorithm and neighbor relationships of the APs of the plurality of APs correspond to edges of the vertex coloring algorithm; and Transmitting software update instructions to the plurality of APs, wherein the software update instructions cause APs of a first partition of the plurality of partitions to reboot to install the software update on the APs of the first partition at a different time than APs of a second partition of the plurality of partitions reboot to install the software update on the APs of the second partition. [10] The computer-implemented method of claim 9, wherein the network information comprises: Device identifiers for each of the plurality of APs; and Neighborhood information for each of the multitude of APs. [11] A computer-implemented method according to claim 9, wherein: the method further comprising determining, according to the network information: a number of APs in the plurality of APs; and a number of user devices served by the plurality of APs; includes; and determining the plurality of partitions comprises determining the plurality of partitions according to the number of APs in the plurality of APs and the number of user devices served by the plurality of APs. [12] The computer-implemented method of claim 9, wherein dividing the plurality of APs into the plurality of partitions according to the vertex coloring algorithm comprises performing an iterative process comprising, for each AP of the plurality of APs: selecting a current AP from one or more APs of the plurality of APs that are not assigned to a partition of the plurality of partitions according to the network information; determining a current partition to be assigned to the current AP depending on which partitions of the plurality of partitions are assigned to the neighboring APs of the current AP; Assign the current partition to the current AP; and Performing a next iteration of the iterative process in response to determining that one or more APs of the plurality of APs are not assigned to a partition of the plurality of partitions. [13] The computer-implemented method of claim 12, wherein selecting the current AP from the one or more APs of the plurality of APs that remain unassigned to a partition of the plurality of partitions according to the network information comprises: Attempting to identify a first particular AP from the one or more APs of the plurality of APs that remain unassigned to a partition that has the largest number of neighbor APs that have been assigned to a partition of the plurality of partitions; and Identifying, in response to identifying the first particular AP of the one or more APs of the plurality of APs remaining unassigned to a partition that has the largest number of neighbor APs assigned to a partition of the plurality of partitions, the first particular AP as the current AP. [14] The computer-implemented method of claim 12, wherein selecting the current AP from the one or more APs of the plurality of APs that remain unassigned to a partition of the plurality of partitions according to the network information comprises: attempting to identify a first particular AP from the one or more APs of the plurality of APs that remain unassigned to a partition that has the largest number of neighbor APs that have been assigned to a partition of the plurality of partitions; in response to identifying a plurality of candidate particular APs from the one or more APs of the plurality of APs that remain unassigned to a partition as having an equal largest number of neighboring APs that have been assigned to a partition from the plurality of partitions, attempting to identify a second particular AP from the plurality of candidate particular APs that has the largest number of neighboring APs; and in response to identifying a second particular AP from the one or more APs of the plurality of APs remaining unassigned to a partition that has an equal greatest number of neighbor APs assigned to a partition of the plurality of partitions, identifying the second particular AP as the current AP. [15] The computer-implemented method of claim 12, wherein selecting, according to the network information, the current AP from the one or more APs of the plurality of APs that remain unassigned to a partition of the plurality of partitions comprises: Attempting to identify a first particular AP from the one or more APs of the plurality of APs that remain unassigned to a partition that has the largest number of neighbor APs that have been assigned to a partition of the plurality of partitions; in response to identifying a plurality of candidate particular APs from the one or more APs of the plurality of APs that remain unassigned to a partition as having an equal largest number of neighbor APs assigned to a partition of the plurality of partitions, attempting to identify a second particular AP from the plurality of candidate particular APs that has the largest number of neighbor APs; and in response to not being able to identify a second particular AP from the one or more APs of the plurality of APs that remain unassigned to a partition as an AP having the same largest number of neighbor APs that have been assigned to a partition of the plurality of partitions, identifying any third particular AP from the one or more APs of the plurality of APs that remain unassigned to a partition of the plurality of partitions as the current AP. [16] The computer-implemented method of claim 12, wherein determining the current partition to be assigned to the current AP depending on which partitions of the plurality of partitions are assigned to the neighboring APs of the current APs comprises: Attempt to identify one or more unassigned partitions of neighboring APs of the current AP; and In response to identifying a single unassigned partition from neighboring APs of the current AP, identifying the single unassigned partition as the current partition. [17] The computer-implemented method of claim 12, wherein determining the current partition to be assigned to the current AP depending on which partitions of the plurality of partitions are assigned to the neighboring APs of the current APs comprises: Attempt to identify one or more unassigned partitions of neighboring APs of the current AP; and Identifying, in response to identifying a plurality of unassigned partitions of neighboring APs of the current AP, a first particular unassigned partition of the plurality of unassigned partitions assigned as a minimum set of APs of the plurality of APs, and identifying the first particular unassigned partition as the current partition. [18] The computer-implemented method of claim 12, wherein determining the current partition to be assigned to the current AP depending on which partitions of the plurality of partitions are assigned to the neighboring APs of the current APs comprises: Attempt to identify one or more unassigned partitions of neighboring APs of the current AP; and in response to one or more unassigned partitions of neighbor APs of the current AP not being identifiable, identifying a first particular assigned partition from among partitions assigned to neighbor APs of the current AP to which a least amount of neighbor APs has been assigned, and identifying the first particular assigned partition as the current partition. [19] A computer-implemented method according to claim 12, wherein: the plurality of APs are initially categorized as unpartitioned; and each partition of the plurality of partitions contains no assigned APs. [20] One or more non-transitory, computer-readable storage media storing programming for execution by one or more processors, the programming comprising instructions for Dividing a plurality of access points (APs) into a plurality of partitions according to an iterative process, the iterative process comprising: Selecting a current access point for a current iteration of the iterative process from one or more access points of the plurality of access points that are not assigned to a partition of the plurality of partitions; Identifying, according to one or more partitions assigned to neighboring APs of the current AP, a selected partition to be assigned to the current AP; Assigning the selected partition to the current AP in response to identifying the selected partition; and Performing a next iteration of the iterative process in response to determining that one or more APs of the plurality of APs remain unassigned to a partition of the plurality of partitions after the current AP assigns the selected partition to the current AP; and Transmitting software update instructions to the plurality of APs in response to determining that the APs of the plurality of APs have been assigned a corresponding partition of the plurality of partitions, the software update instructions causing APs of a first partition of the plurality of partitions to reboot to install a software update on the APs of the first partition at a different time than APs of a second partition of the plurality of partitions reboot to install the software update on the APs of the second partition.