Selection of program image provider
By segmenting the program image into smaller PIMs and selecting a provider within the network device, the problem of unstable network device connections during deployment and updates is resolved, enabling reliable program image downloads and updates, and improving the operational efficiency and reliability of network devices.
Patent Information
- Authority / Receiving Office
- CN · China
- Patent Type
- Applications(China)
- Current Assignee / Owner
- HEWLETT PACKARD ENTERPRISE DEV LP
- Filing Date
- 2025-07-08
- Publication Date
- 2026-06-02
AI Technical Summary
Network devices face latency and communication bottlenecks caused by unstable network connections when deploying and updating program images, especially when a large number of devices are started or updated at the same time, which existing technologies cannot effectively solve.
The program image is divided into multiple small program image modules (PIMs). The network device determines itself or other devices as PIM providers through a selection process, and stores and updates the PIMs through non-volatile memory. The failover mechanism ensures that the device can still operate normally when the connection is poor.
This enables network devices to reliably download and update program images without relying on large non-volatile memory, avoiding device startup delays and communication bottlenecks, and improving the reliability and efficiency of network devices.
Smart Images

Figure CN122137843A_ABST
Abstract
Description
background
[0001] A network includes network devices used to forward data sent by a source device to a destination device. Examples of network devices include access points (APs), switches, routers, or other types of network devices. Attached Figure Description
[0002] Some embodiments of this disclosure are described with reference to the following figures.
[0003] Figure 1 It is a block diagram of the layout of remote sources, including access points (APs) and program image modules (PIMs), based on some examples.
[0004] Figure 2 It is a block diagram of a module table based on some examples.
[0005] Figure 3 It is a flowchart of the selection process based on some examples.
[0006] Figure 4 It is a flowchart of a process involving multiple APs, based on some examples.
[0007] Figure 5 It is a flowchart of a failover process based on some examples.
[0008] Figure 6 It is a block diagram based on some example network devices.
[0009] Figure 7 It is a block diagram of a storage medium with machine-readable instructions based on some examples of storage.
[0010] Figure 8 It is a flowchart based on some examples.
[0011] In all the accompanying drawings, the same reference numerals denote similar but not necessarily identical elements. These drawings are not necessarily drawn to scale and may exaggerate the dimensions of some parts to more clearly illustrate the examples shown. Furthermore, the drawings provide examples and / or embodiments consistent with the description; however, the description is not limited to the examples and / or embodiments provided in the drawings. Detailed Implementation
[0012] Network devices can execute machine-readable instructions to perform tasks, including forwarding data within the network. Machine-readable instructions can include one or both firmware and software. During operation, these machine-readable instructions are loaded into the network device's memory and executed by its processing resources. These processing resources include one or more hardware processors. The memory loaded with the machine-readable instructions for execution can include volatile memory, such as dynamic random access memory (DRAM). Volatile memory can also include static random access memory (SRAM).
[0013] Compared to volatile memory, non-volatile memory in network devices can be relatively small. Examples of non-volatile memory include flash memory, erasable and programmable read-only memory (EPROM), electrically erasable and programmable read-only memory (EEPROM), or any other memory that retains (i.e., does not lose) the stored data when the network device is powered off. Due to the small size of non-volatile memory, it may be impossible to store the entire program image containing the machine-readable instructions of the network device in non-volatile memory. As a result, the program image is not available in the network device's non-volatile memory when the network device is initially deployed. Instead, the network device downloads the program image from a remote source, such as a storage system in a cloud computing environment, a remote server, or another remote system. The downloaded program image is loaded into the network device's volatile memory and executed.
[0014] In some cases, the network connection between network devices and the remote source of the program image may be slow, unreliable, or malfunctioning. A poor or unavailable network connection can cause delays when downloading the program image, which may prevent network devices from powering on and starting operations. If a large number of network devices start up at roughly the same time, this can render much of the network unavailable until the network devices are able to successfully download their respective program images from the remote source for execution.
[0015] Another issue relates to application image updates. When an application image is updated, network devices on the network can initiate the download of the updated application image. If there are a large number of network devices, this can cause a communication bottleneck between the network devices and the remote source of the updated application image.
[0016] According to some embodiments of this disclosure, a program image for a network device is segmented into smaller program image modules (PIMs) stored at corresponding different network devices. For example, a first network device stores a first PIM of the program image, a second network device stores a second PIM of the program image, and so on. Note that any given network device may store multiple PIMs of the program image. In some cases, multiple network devices may store the same PIM(s). Network devices may participate in a selection process to determine which network device will become the image provider (or more simply referred to as "provider") for a given PIM of the program image. As part of the selection process, network devices exchange information about the network device's operational attributes. Based on the information about the network device's operational attributes, the network device determines whether the network device is selected as the provider of the given PIM.
[0017] The techniques or mechanisms described in some examples of this disclosure allow program images of network devices with limited capacity of non-volatile memory to be reliably downloaded to the network device as separate PIMs, preventing operational delays due to poor or unavailable connectivity to the remote source of the program image. Furthermore, the network device does not need to be configured with expensive, large non-volatile memory to support large program images. Additionally, PIM updates can be downloaded by the PIM provider, preventing a large number of network devices from concurrently downloading updated PIMs, which could create communication bottlenecks with the remote source.
[0018] A program image can refer to a collection of program code (in the form of one or more files or other types of objects) that will be executed by processing resources. A "PIM" refers to a portion (less than the entirety) of a program image. A "PIM provider" (or more simply a "provider") is a network device that has a copy of the PIM stored in the non-volatile memory of the network device and that will send the PIM to another network device in response to a request for the PIM from another network device.
[0019] Figure 1 This is a block diagram illustrating an example arrangement of various access points 101, 102, 103, 104, and 105, and a remote source 110. The remote source 110 may include a cloud computing environment, a remote server, or any other system coupled via a remote link 112. The remote link 112 may include a public network (such as the Internet) or another type of network (such as a wide area network, WAN). The remote link 112 may be a wired network or a wireless network.
[0020] although Figure 1A specific number of APs is shown, but in other examples, a different number of APs may be provided. Furthermore, more generally, the techniques or mechanisms described in some examples of this disclosure are also applicable to other types of network devices besides APs, such as switches, routers, gateways, etc.
[0021] Remote source 110 includes a program image repository 111 containing PIM 1 through PIM N of program images, where N ≥ 2. The program image repository 111 can be implemented using one or more storage devices (such as disk-based storage devices, flash memory devices, or other types of storage devices). The program images may have been partitioned into PIM 1 through PIM N by remote source 110 or different entities. Note that remote source 110 can store PIMs for multiple different program images. Each different program image can be partitioned into a corresponding group of PIMs stored in the program image repository 111.
[0022] APs 101 to 105 are interconnected via inter-AP link 114, which may include a local area network (LAN), a WAN, or another type of network. Inter-AP link 114 can be a wired or wireless network. Inter-AP link 114 allows APs 101 to 105 to communicate with each other.
[0023] APs 101 through AP 105 include corresponding image module engines (IMEs) that participate in the selection process for choosing which AP will become the provider of any given PIM. AP 101 includes IME 121, AP 102 includes IME 122, AP 103 includes IME 123, AP 104 includes IME 124, and AP 105 includes IME 125. During the selection process, an AP can be selected as the provider of one or more PIMs.
[0024] Furthermore, each AP includes a corresponding failover engine (FE) to take over the provider's responsibilities in the event of a failure of the current PIM provider. AP 101 includes FE 151, AP 102 includes FE 152, AP 103 includes FE 153, AP 104 includes FE 154, and AP 105 includes FE 155.
[0025] As used herein, "engine" can refer to one or more hardware processing circuits, which may include any or a combination of a microprocessor, the core of a multi-core microprocessor, a microcontroller, a programmable integrated circuit, a programmable gate array, or another hardware processing circuit. Alternatively, "engine" can refer to a combination of one or more hardware processing circuits and machine-readable instructions (software and / or firmware) executable on one or more hardware processing circuits.
[0026] Each AP also includes a corresponding non-volatile memory. AP 101 includes non-volatile memory 131, AP 102 includes non-volatile memory 132, AP 103 includes non-volatile memory 133, AP 104 includes non-volatile memory 134, and AP 105 includes non-volatile memory 135. Each AP also includes a corresponding volatile memory (not shown). The storage capacity of the non-volatile memory in some APs may be larger than that in others.
[0027] exist Figure 1 In the example, PIM 1, PIM 2, and PIM 3 are stored in the non-volatile memory 131 of AP 101, PIM N is stored in the non-volatile memory 132 of AP 102, and PIM 4 is stored in the non-volatile memory 135 of AP 105. AP 101, AP 102, and AP 105 may have already downloaded the corresponding PIMs from remote source 110. Alternatively, an AP may have already obtained the PIMs from another AP.
[0028] exist Figure 1 In the example, AP 103 and AP 104 do not yet contain any PIM in their respective non-volatile memories 133 and 134. For example, AP 103 and AP 104 can just start operating in the network. Furthermore, in Figure 1 In the example states shown, each of APs 101 through AP 105 is missing some PIMs of the procedure image. Each AP can obtain any missing PIMs from the provider of the PIM selected during the selection process.
[0029] Each AP's non-volatile memory also contains a modules table (MT), which contains entries that associate the corresponding PIM with various information elements. The MT identifies all PIMs to be loaded into the AP's program image.
[0030] MT 141 is stored in non-volatile memory 131 of AP 101, MT 142 is stored in non-volatile memory 132 of AP 102, MT 143 is stored in non-volatile memory 133 of AP 103, MT 144 is stored in non-volatile memory 134 of AP 104, and MT 145 is stored in non-volatile memory 135 of AP 105. "Table" can refer to any data structure containing information in the corresponding entries.
[0031] Further reference Figure 2 The diagram illustrates example content of MT 141 stored in AP 101. MT 141 includes entries 202-1, 202-2, 202-3, 202-4, ..., 202-N, each containing information elements for the corresponding PIM 1, PIM 2, PIM 3, PIM 4, ..., PIM N. MTs in other APs may have a similar arrangement (but with different content).
[0032] PIM Identifier column 208 identifies a PIM. The PIM identifier can be a PIM number, where different PIMs are assigned different PIM numbers. In other examples, other types of PIM identifiers may be used. Each entry in MT 141 also includes a module present (MP) flag 210, a provider status (PS) flag 212, and provider information (PINFO) 214. A “flag” refers to any information element that can be set to one of several different values.
[0033] The MP (Module Existence) flag 210 in entry 202-j (j = 1 to N) indicates whether the corresponding PIM j exists in the non-volatile memory 131 of AP 101. If the MP flag 210 in entry 202-j is set to a first value (e.g., "1"), it indicates that PIM j exists; however, if the MP flag 210 in entry 202-j is set to a different second value (e.g., "0"), it indicates that PIM j does not exist. The MP flag 210 is set to "1" in entries 202-1, 202-2, and 202-3 to indicate that PIM 1, PIM 2, and PIM 3 exist in the non-volatile memory 131 of AP 101. The MP flag 210 is set to "0" in entries 202-4 and 202-N to indicate that PIM 4 and PIM N do not exist in the non-volatile memory 131 of AP 101. When MP flag 210 is set to “0” in entry 202-j, AP 101 will request PIM j from another AP.
[0034] The PS (Module Provider Status) flag 212 in entry 202-j indicates whether AP 101 is the provider of PIM j selected from among multiple APs during the selection process. If the PS flag 212 in entry 202-j is set to a first value (e.g., "1"), it indicates that AP 101 is the provider of PIM j; however, if the MP flag 210 in entry 202-j is set to a different second value (e.g., "0"), it indicates that AP 101 is not the provider of PIM j.
[0035] exist Figure 1 In the example, assume that AP 101 has been selected as the provider for PIM 1, PIM 2, and PIM 3. Therefore, the PS flag 212 in each of entries 202-1, 202-2, and 202-3 is set to "1". However, AP 101 has not been selected as the provider for PIM 4 and PIM N. As a result, the PS flag 212 in each of entries 202-4 and 202-N is set to "0".
[0036] In some examples, each entry in MT 141 may also store PIM Provider Information (PINFO) 214. For PIMs where AP 101 is not the image provider, PINFO 214 in each entry indicates which other AP is the image provider. The PIM Provider Information 214 in entry 202-j of MT 141 may include an identifier of the AP that is the provider of PIM j. The identifier may be in the form of a network address, such as a Media Access Control (MAC) address, an Internet Protocol (IP) address, or another type of identifier. The PIM Provider Information 214 allows AP 101 to track which other AP is the provider of a given PIM.
[0037] exist Figure 2 In the examples, PINFO 214 of entry 202-4 contains the identifier of AP 105, indicating that AP 105 is the provider of PIM 4. PINFO 214 of entry 202-N contains the identifier of AP 102, indicating that AP 102 is the provider of PIM N. PINFO 214 in entries 202-1, 202-2, and 202-3 is blank or contains empty information because AP 101 is the provider of PIM 1, PIM 2, and PIM 3.
[0038] Although not shown, it is possible for multiple APs to be selected as providers for any given PIM. Furthermore, in some examples, a primary provider and a backup provider for a given PIM can be selected. The primary provider is the AP that will provide the given PIM to the requesting AP. If the primary PIM fails, the backup AP can take over as the PIM provider.
[0039] Figure 3 This is a flowchart of the selection process 300 executed by the IME in AP k, where AP k can be... Figure 1 Any AP from AP101 to AP105 in the list. Selection process 300 can be initiated in response to a triggering event. For example, after sending a discovery message for PIM j, and after a specified timeout duration has elapsed without a response containing PIM j being received, the IME in APk can initiate selection process 300. This timeout duration indicates that a provider has not yet been selected for PIM j, or alternatively, the provider for PIM j has failed. If APk initiates selection process 300, the IME in APk can send selection trigger messages to other APs to participate in selection process 300. Another example of a triggering event for selection process 300 is receiving a selection trigger message from another AP that initiates the selection process at that other AP.
[0040] As part of the selection process 300 for PIM j, the IME in AP k is transmitted via inter-AP link 114 ( Figure 1 (At 302) Send the operational attributes of AP k to other APs. Examples of operational attributes may include any one or some combination of the following: the available memory capacity of AP k's non-volatile memory; network performance metrics (e.g., latency, error rate, etc.) associated with the network connectivity between AP k and remote source 110; uptime metrics indicating the length of time AP k has been running; metrics of AP k's processing resource usage (e.g., the number of cores used, the number of instructions executed per unit time, etc.); or any other operational attribute indicating how well AP k is performing.
[0041] Note that as (multiple) PIMs are stored in the non-volatile memory of AP k, the available storage capacity of AP k's non-volatile memory decreases. As a result, as the non-volatile memory of AP k becomes full of (multiple) PIMs, other APs will be better candidates to act as providers of other PIMs.
[0042] AP k receives the operational attributes of other APs via inter-AP link 114 (at 304). Based on (at 306) comparing the operational attributes of AP k with those of other APs, the IME of AP k can (at 308) determine whether AP k will be selected as the provider of PIM j.
[0043] In some examples, the operational attributes of each AP can be combined by aggregating the operational attributes (e.g., summing or another type of mathematical aggregation operation) to produce a score for each AP. The scores can then be compared to determine which AP will be selected as the provider of PIM j. In examples where a higher score indicates that the corresponding AP is a better candidate as the provider of PIM j, the following characteristics of AP k will tend to increase AP k's score: larger non-volatile memory capacity of AP k, network performance metrics indicating faster or more reliable connectivity between AP k and remote source 110, usage metrics indicating lower load at AP k, and so on.
[0044] If the IME of AP k determines that AP k is selected as the provider of PIM j based on a score comparison, then the IME in AP k (at 310) sets the PS flag 212 in entry 202-j to "1". If PIM j is not already present in AP k, then AP k downloads PIM j from remote source 110 and stores the downloaded PIM j in AP k's non-volatile memory. The IME in AP k also sends a provider selection message to other APs, indicating that AP k has been selected as the provider of PIM j.
[0045] Note that during selection process 300, AP k can be selected as an image provider for multiple PIMs, including PIM j. If AP k is not selected as a provider for PIM j, selection process 300 ends.
[0046] Figure 4This is a flowchart of a process involving multiple APs 402, 404, and 406. When AP 402 initially starts up (e.g., when AP 402 is initially deployed, or when AP 402 has restarted, such as due to a power cycle or reboot), AP 402 (at 412) checks its MT to determine which PIMs of the program image should be loaded for execution, and which of these PIMs are already stored in AP 402's non-volatile memory. If AP 402 determines that PIM j is not present in AP 402's non-volatile memory, AP 402 (at 414) sends a discovery message for PIM j to the other APs 404 and AP 406. The discovery message is a broadcast message sent via inter-AP link 114 to request a PIM. The broadcast message is targeted at multiple APs. For example, the broadcast message may include a destination broadcast address (such as a broadcast MAC address or broadcast IP address), indicating that the message is intended to be received by multiple target endpoints associated with the broadcast destination address.
[0047] In response to the discovery message, AP 404 (at 416) checks its MT to determine if AP 404 is the provider of PIM j. Similarly, AP 406 (at 418) checks its MT to determine if AP 406 is the provider of PIM j.
[0048] exist Figure 4 In the example, assume that AP 404 has already (at 420) determined that AP 404 is the provider of PIM j. As a result, in response to the discovery message from AP 402, AP 404 (at 422) sends PIM j, retrieved from AP 404's non-volatile memory, to AP 402. Upon receiving PIM j, AP 402 (at 424) loads PIM j into AP 402's volatile memory. AP 402 also utilizes PIM Provider Information (PINFO) to (at 426) update MT entry 202-j for PIM j, which identifies AP 404 as the provider of PIM j.
[0049] A similar process is performed for each other PIM that is not present in the non-volatile memory of AP 402. Once all the PIMs of the program image are present in AP 402 (or already present in the non-volatile memory of AP 402, or received from one or more other APs), AP 402 can (at 428) combine the PIMs to form a program image, which is then (at 430) loaded into the volatile memory of AP 402 for the execution of AP 402's tasks.
[0050] AP's FE (e.g., Figure 1(Items 151 to 155) enable failover in the event that the image provider becomes unavailable for any reason. The FE can send periodic heartbeat indicators to other APs to determine if those APs are still available. A "heartbeat indicator" can refer to a message, information element, or signal that is periodically sent to the target, where a response is expected if the target is available. The absence of a response to the heartbeat indicator from the target (after a specified heartbeat timeout duration) indicates that the target is no longer available.
[0051] Figure 5 A failover procedure 500 performed by the FE in AP k is illustrated. The FE in AP k (at 502) sends a heartbeat indicator to the target AP. The FE in AP k (at 504) determines whether a response to the heartbeat indicator has been received. If so, the failover procedure 500 terminates. However, if the FE in AP k (at 504) determines that no response to the heartbeat indicator has been received within the specified heartbeat timeout duration, the FE in AP k checks its MT to (at 506) determine whether the target AP is a provider of any PIM. If the target AP is not a provider of any PIM, the failover procedure 500 terminates. However, if the target AP is a provider of a given PIM, the FE in AP k (at 508) determines whether AP k has a copy of the given PIM in its non-volatile memory. If so, the FE in AP k can (at 510) set AP k as a provider of the given PIM. The FE in APk can (in 512) notify other APs that the FE in APk has become a provider for a given AP, such as by sending a provider selection message to other APs.
[0052] If the FE in AP k (at 508) determines that AP k does not have a copy of the given PIM, then the FE in AP k can (at 514) initiate a selection process with other APs to select which AP will become the provider of the given PIM. For example, AP k can send a selection trigger message to other APs.
[0053] Before initiating the selection process, the FE in AP k can wait to determine whether another AP has sent a provider selection message indicating that it has been set as the provider of the given PIM. If no other AP has sent a provider selection message indicating that it has been set as the provider of the given PIM, then AP k can initiate the selection process for the given PIM.
[0054] It is also possible for a FE (Feature Provider) among multiple APs to set multiple corresponding APs as providers of a given PIM. In this scenario, one or more FEs can detect that multiple APs are providers of the same PIM. If this condition is not allowed, the FE can initiate a selection process to select the provider of the given PIM. In other examples, one AP among multiple APs can be set as the primary provider of a given PIM, and another AP can be set as the backup provider of the given PIM, such as based on a backup selection process among multiple APs to select one AP as the primary provider and another AP among multiple APs as the backup provider. For example, backup selection can be based on a comparison of the operational attributes of multiple APs.
[0055] The AP providing PIM j is responsible for obtaining updates to PIM j. The updated PIM j can be downloaded from remote source 110. Alternatively, the AP providing PIM j can notify remote source 110 that an update will be provided to the AP as soon as it becomes available. Once an AP has downloaded the updated PIM j, it sends the updated PIM j to other APs across inter-AP link 114. If the network includes a large number of APs, not all APs will attempt to download the update program image from remote source 110, which could create a communication bottleneck. More precisely, the updated PIM can be distributed by the provider to the appropriate other APs.
[0056] Figure 6 This is a block diagram of a first network device 600, which can be an access point (AP) or another type of network device. The first network device 600 includes features for (such as via...) Figure 1 The inter-AP link 114) provides a communication interface 602 for communicating with other network devices. The communication interface 602 includes a signal transceiver for sending and receiving signals and one or more communication protocol layers for managing communication according to (multiple) corresponding communication protocols.
[0057] The first network device 600 includes a hardware processor 604 (or multiple hardware processors) for performing various tasks. The hardware processor may include a microprocessor, the core of a multi-core microprocessor, a microcontroller, a programmable integrated circuit, a programmable gate array, or other hardware processing circuitry. The term "hardware processor performing a task" may refer to a single hardware processor performing a task or multiple hardware processors performing a task.
[0058] The hardware processor 604 includes a selection process task 606, which performs a selection process with other network devices to determine which of a plurality of network devices, including a first network device and others, will become the provider of the first PIM of the program image. The program image has been divided into multiple PIMs.
[0059] The hardware processor 604 includes an operation attribute exchange task 608, used as part of a selection process, to exchange information about the operation attributes of multiple network devices. The exchange includes a first network device 600 sending information about its own operation attributes to other network devices. The exchange also includes the first network device 600 receiving information about the operation attributes of other network devices.
[0060] The hardware processor 604 includes an image provider selection task 610, which determines whether a first network device is selected as the provider of the first PIM based on information about the operational attributes of multiple network devices. The selected provider is responsible for providing copies of the first PIM to any other network device requesting the first PIM and for obtaining updated versions of the first PIM.
[0061] In some examples, operational attribute information includes the available storage capacity of non-volatile memory in multiple network devices. Determining whether a first network device is selected as the provider of the first PIM is based on a comparison of operational attributes, including the available storage capacity of non-volatile memory in the first network device and the available storage capacity of non-volatile memory in other network devices. Comparing the operational attributes of network devices may include calculating a score for each network device based on the operational attributes and comparing the scores.
[0062] In some examples, operational attributes include indicating multiple network devices and one or more program image sources (e.g., Figure 1 The network performance metrics of the network connection between the remote source 110 and the network device. Determining whether the first network device is selected as the provider of the first PIM is based on a comparison of operational attributes, including the network performance metrics of the first network device and the network performance metrics of other network devices.
[0063] In some examples, operational attributes include network device uptime metrics indicating how long multiple network devices have been operating. Determining whether a first network device is selected as the provider of the first PIM is based on a comparison of operational attributes, including the network device uptime metrics of the first network device and those of other network devices.
[0064] In some examples, operational attributes include processing resource usage metrics that indicate the use of processing resources across multiple network devices. Determining whether a first network device is selected as the provider of the first PIM is based on a comparison of operational attributes, including the processing resource usage metrics of the first network device and those of other network devices.
[0065] In some examples, based on the determination that a first network device is selected as the provider of a first PIM, the first network device sends a provider selection indication from the first network device to other network devices, the provider selection indication being used to indicate that the first network device has been selected as the provider of the first PIM.
[0066] In some examples, the first network device includes non-volatile memory. Based on the determination that the first network device is selected as the provider of the first PIM, the first network device downloads the first PIM from the program image source and saves the first PIM downloaded from the program image source to the non-volatile memory.
[0067] In some examples, the first network device receives a discovery message from the second network device to locate the first PIM. In response to the discovery message, the first network device sends the first PIM, retrieved from non-volatile memory, to the second network device.
[0068] In some examples, the first network device downloads an update to the first PIM from a program image source and sends the update to other network devices.
[0069] In some examples, the first network device includes storing PIM information associated with the PIM for the first network device (e.g., Figure 1 or Figure 2 The first network device uses a non-volatile memory (MT 141). Based on PIM information, the first network device determines which subset of PIMs will be downloaded to the first network device for operation. The subset may include a portion (less than all) or all of the PIMs. The first network device sends discovery messages to other network devices for the PIMs in the subset, and the first network device receives the PIMs in the subset sent by one or more of the other network devices.
[0070] In some examples, the first network device combines multiple PIMs into a program image to be used at the first network device. The first network device initiates the execution of machine-readable instructions of the program image.
[0071] In some examples, the first network device detects that the second network device, which is the provider of the second PIM (Program Image), is unavailable. In response to detecting that the second network device is unavailable, the first network device determines whether the second PIM is stored at the first network device. In response to determining that the second PIM is stored at the first network device, the first network device selects itself as the provider of the second PIM and sends a provider selection instruction indicating that the first network device has been selected as the provider of the second PIM.
[0072] In some examples, the first network device detects that the second network device, which is the provider of the second PIM (Program Image), is unavailable. The first network device then determines whether the other network device has sent a provider selection instruction indicating that the other network device has been selected as the provider of the second PIM.
[0073] In some examples, in response to determining that no network device has sent a provider selection instruction, the first network device initiates a further selection process among the available network devices in a plurality of network devices to select one of the available network devices as the provider of the second PIM.
[0074] In some examples, the first network device is selected as the provider of the second PIM through a further selection process, and the first network device downloads the second PIM from the program image source.
[0075] In some examples, the first network device performs a backup selection process with other network devices to determine which of the multiple network devices will become the backup provider of the second PIM for the program image, and the backup provider provides backups for the primary provider of the second PIM.
[0076] Figure 7 It is a block diagram of a non-transitory machine-readable or computer-readable storage medium 700 that stores machine-readable instructions, wherein the machine-readable instructions, when executed, cause a first network device to perform various tasks.
[0077] Machine-readable instructions include PIM information access instruction 702, used to access PIM information to determine which PIMs, partitioned from the program image, will be used to form the program image executed in the first network device. For example, the PIM information may include... Figure 1 or Figure 2 MT 141.
[0078] Machine-readable instructions include PIM presence determination instruction 704, used to determine, based on PIM information, that the first PIM does not exist in the non-volatile memory of the first network device. For example, this could be based on the MP flag 210 of the MT entry for the first PIM. Figure 2 ).
[0079] The machine-readable instructions include a PIM request instruction 706, used to send a request for a first PIM from a first network device. For example, the request could be a discovery message broadcast to multiple network devices.
[0080] The machine-readable instructions include a PIM receive instruction 708 for receiving a first PIM from a second network device at the first network device. The first PIM is sent by the second network device in response to a request from the first network device.
[0081] Machine-readable instructions include selection process instructions 710, which perform a selection process with other network devices to determine which of a plurality of network devices will become the provider of the second PIM for the program image.
[0082] Machine-readable instructions include operation attribute exchange instructions 712, which are used as part of a selection process to exchange information on the operation attributes of multiple network devices.
[0083] The machine-readable instructions include PIM provider selection instructions 714, which determine whether a first network device is selected as the provider of a second PIM based on information about the operational attributes of multiple network devices. The selection can be based on a comparison of the operational attributes of the multiple network devices.
[0084] Figure 8 This is a flowchart of process 800 based on some examples. For example, process 800 may be performed by a first network device. Process 800 includes (at 802) initiating a selection process involving multiple network devices, including the first network device, to select a PIM provider.
[0085] As part of the selection process, process 800 includes: (at 804) sending the operational attributes of the first network device from the first network device to other network devices via an inter-network device link; and (at 806) receiving the operational attributes of other network devices at the first network device.
[0086] Process 800 includes (at 808) comparing the operational attributes of the first network device with the operational attributes of other network devices. This comparison may include a comparison of scores derived from the operational attributes.
[0087] Based on this comparison, process 800 includes (at 810) determining whether the first network device is selected as the PIM provider.
[0088] Storage media (e.g., Figure 7The 700 in the instruction manual may include any one or a combination of the following: semiconductor memory devices such as DRAM or SRAM, EPROM, EEPROM, or flash memory; disks such as fixed disks, floppy disks, and removable disks; another magnetic medium, including magnetic tape; optical media such as compact disks (CDs) or digital video disks (DVDs); or another type of storage device. Note that the instructions discussed above may be provided on a single computer-readable or machine-readable storage medium, or alternatively, on multiple computer-readable or machine-readable storage media distributed across a large system that may have multiple nodes. One or more such computer-readable or machine-readable storage media are considered part of an article (or article of manufacture). An article or article of manufacture may refer to any single component or components made. One or more storage media may be located in a machine that executes the machine-readable instructions, or at a remote site from which machine-readable instructions can be downloaded via a network for execution.
[0089] In this disclosure, the terms “a,” “an,” or “the” are also intended to include the plural form unless the context clearly indicates otherwise. Furthermore, the terms “comprising,” “including,” “involving,” “containing,” “having,” or “possessing” are used in this disclosure to specify the presence of the stated element, but do not preclude the presence or addition of other elements.
[0090] In the foregoing description, numerous details have been set forth to provide an understanding of the subject matter disclosed herein. However, implementations may be practiced without these details. Other implementations may include modifications and variations to the details discussed above. The appended claims are intended to cover such modifications and variations.
Claims
1. A first network device, comprising: Communication interface, used to communicate with other network devices; as well as Hardware processor, used for: A selection process is performed with the other network devices to determine which of a plurality of network devices, including the first network device and the other network devices, will become the provider of the first program image module of the program image, the program image being divided into a plurality of program image modules; As part of the selection process, information on the operational attributes of the plurality of network devices is exchanged; as well as Based on the information regarding the operational attributes of the plurality of network devices, it is determined whether the first network device is selected as the provider of the first program image module.
2. The first network device of claim 1, wherein the operational attribute includes the available storage capacity of non-volatile memory in the plurality of network devices, and wherein determining whether the first network device is selected as the provider of the first program image module is based on a comparison of the operational attribute including the available storage capacity of non-volatile memory in the first network device and the available storage capacity of non-volatile memory in the other network devices.
3. The first network device of claim 1, wherein the operational attributes include network performance metrics indicating characteristics of network connectivity between the plurality of network devices and one or more program image sources, and wherein determining whether the first network device is selected as the provider of the first program image module is based on a comparison of the operational attributes, including network performance metrics of the first network device and network performance metrics of the other network devices.
4. The first network device of claim 1, wherein the operational attributes include a network device uptime metric indicating how long the plurality of network devices have been operating, and wherein determining whether the first network device is selected as the provider of the first program image module is based on a comparison of the operational attributes including the network device uptime metric of the first network device and the network device uptime metrics of the other network devices.
5. The first network device of claim 1, wherein the operational attributes include a processing resource usage metric indicating the use of processing resources among the plurality of network devices, and wherein determining whether the first network device is selected as the provider of the first program image module is based on a comparison of the operational attributes including the processing resource usage metric of the first network device and the processing resource usage metrics of the other network devices.
6. The first network device according to claim 1, wherein the hardware processor is configured to: Based on the determination that the first network device is selected as the provider of the first program image module, a provider selection instruction is sent from the first network device to the other network devices, the provider selection instruction indicating that the first network device is selected as the provider of the first program image module.
7. The first network device according to claim 1, further comprising: Non-volatile memory, The hardware processor is used to: Based on the determination that the first network device is selected as the provider of the first program image module, the first program image module is downloaded from the program image source, and the first program image module downloaded from the program image source is saved to the non-volatile memory.
8. The first network device according to claim 7, wherein the hardware processor is configured to: Receive a discovery message from the second network device to locate the first program image module; and In response to the discovery message, the first program image module retrieved from the non-volatile memory is sent to the second network device.
9. The first network device according to claim 7, wherein the hardware processor is configured to: Download the update of the first program image module from the program image source; and The update of the first program image module is sent to the other network devices.
10. The first network device according to claim 1, further comprising: Non-volatile memory, the non-volatile memory storing program image module information associated with the program image module for the first network device, The hardware processor is used to: Based on the program image module information, determine which subset of program image modules will be downloaded to the first network device for operation by the first network device. The program image modules in the subset send discovery messages to other network devices; Receive the program image modules from the subset sent by one or more of the other network devices.
11. The first network device according to claim 10, wherein the hardware processor is configured to: Combining the plurality of program image modules into a program image to be used at the first network device; and Initiate the execution of machine-readable instructions of the program image.
12. The first network device according to claim 1, wherein the hardware processor is configured to: The second network device, which is the provider of the second program image module of the program image, is detected to be unavailable; In response to detecting that the second network device is unavailable, determine whether the second program image module is stored at the first network device; as well as In response to determining that the second program image module is stored at the first network device, the first network device is selected as the provider of the second program image module, and a provider selection instruction indicating that the first network device is selected as the provider of the second program image module is sent.
13. The first network device according to claim 1, wherein the hardware processor is configured to: The second network device, which is the provider of the second program image module of the program image, is detected to be unavailable; Determine whether another network device has sent a provider selection instruction indicating that the other network device is selected as the provider of the second program image module.
14. The first network device according to claim 13, wherein the hardware processor is configured to: In response to determining that no network device has sent the provider selection instruction, a further selection process is initiated among the available network devices in the plurality of network devices to select one of the available network devices as the provider of the second program image module.
15. The first network device according to claim 14, wherein the hardware processor is configured to: Based on the fact that the first network device is selected as the provider of the second program image module through the further selection process, the second program image module is downloaded from the program image source.
16. The first network device according to claim 1, wherein the hardware processor is configured to: A backup selection process is performed with the other network devices to determine which of the plurality of network devices will become the backup provider for the second program image module of the program image, the backup provider being the primary provider of the second program image module.
17. A non-transitory machine-readable storage medium comprising instructions that, when executed, cause a first network device to: Access program image module information to determine which program image modules, partitioned from the program image, will be used to form the program image that will be executed in the first network device; Based on the program image module information, it is determined that the first program image module does not exist in the non-volatile memory of the first network device; Send a request for the first program image module from the first network device; The first program image module is received from the second network device at the first network device; A selection process is performed with other network devices to determine which of a plurality of network devices, including the first network device and the other network devices, will become the provider of the second program image module of the program image; As part of the selection process, information on the operational attributes of the plurality of network devices is exchanged; as well as Based on the information regarding the operational attributes of the plurality of network devices, it is determined whether the first network device is selected as the provider of the second program image module.
18. The non-transitory machine-readable storage medium of claim 17, wherein the program image module information includes a first entry for the first program image module and a second entry for the second program image module, and wherein the instructions, when executed, cause the first network device to: The first entry of the first program image module is updated by adding information identifying the second network device as the provider of the first program image module; and The second entry for the second program image module is updated by adding an indicator that indicates the first network device is the provider of the second program image module.
19. A method comprising: A selection process involving multiple network devices, including the first network device, is initiated at the first network device to select a provider of a program image module, which is a part of multiple program image modules divided from a program image; As part of the selection process The first network device sends its operational attributes to other network devices via inter-network device links, and The first network device receives the operational attributes of the other network device; the first network device compares the operational attributes of the first network device with the operational attributes of the other network device. Based on the comparison, the first network device determines whether it is selected as the provider of the program image module.
20. The method of claim 19, further comprising: The first network device detects that the second network device, which is the provider of the second program image module of the program image, is unavailable; In response to the detection that the second network device is unavailable, the first network device determines whether the second program image module is stored at the first network device. as well as In response to determining that the second program image module is stored at the first network device, the first network device is set as the provider of the second program image module, and a provider selection indication indicating that the first network device has been set as the provider of the second program image module is sent from the first network device.