Method, apparatus, and computer program for using a highly available controller with a local area network (LAN) for a local cloud

By forming a local cloud of devices connected via LAN, the method addresses the challenge of limited resources in individual devices, enhancing processing capabilities and improving the quality of experience for resource-intensive applications like immersive technologies.

JP7697035B2Active Publication Date: 2025-06-23TENCENT AMERICA LLC
View PDF 4 Cites 0 Cited by

Patent Information

Application Number
JP2023560167
Authority / Receiving Office
JP · JP
Patent Type
Patents
Current Assignee / Owner
Priority Date
2022-10-28
Filing Date
2022-11-01
Publication Date
2025-06-23
Estimated Expiration
2042-11-01

AI Technical Summary

Technical Problem

Current technologies face challenges in providing high-availability services for edge clouds due to limited processing resources in devices, especially when handling resource-intensive applications like immersive technologies.

Method used

A method and system for creating a local cloud composed of multiple devices connected via a local area network (LAN), where a network node determines if another node is an active controller, and allocates tasks accordingly to ensure high-availability services.

Benefits of technology

This approach enhances the processing capabilities of individual devices by leveraging the collective resources of multiple devices, reducing latency, and improving the quality of experience for resource-intensive applications.

✦ Generated by Eureka AI based on patent content.

Smart Images

  • Figure 0007697035000001
    Figure 0007697035000001
  • Figure 0007697035000002
    Figure 0007697035000002
  • Figure 0007697035000003
    Figure 0007697035000003
Patent Text Reader

Abstract

A method performed by a network node connected to one or more additional network nodes, the network node and the one or more additional network nodes forming a cloud. The method includes setting a first timer to a first value, the first timer associated with determining whether another network node from the one or more additional network nodes is an active controller in the cloud. The method further includes determining whether a first message indicating that another network node from the one or more additional network nodes is an active controller is received before the first timer expires. The method further includes restarting the first timer based on a determination that the first message is received before the first timer expires. The method further includes assigning one or more tasks to at least one network node based on a determination that the first message is not received before the first timer expires.
Need to check novelty before this filing date? Find Prior Art

Description

Technical Field

[0001] Cross - Reference to Related Applications This application claims priority to U.S. Provisional Patent Application No. 63 / 284,529, filed on November 30, 2021, and U.S. Patent Application No. 17 / 976,451, filed on October 28, 2022, the disclosures of which are hereby incorporated by reference in their entireties.

[0002] The disclosed subject matter relates to methods and systems for creating a local cloud composed of multiple devices that may be used as high - availability services for edge clouds.

Background Art

[0003] Cloud computing may be defined as on - demand access via the Internet to computing resources, applications, servers, data storage devices, development tools, and networking functions. Cloud computer services may be hosted in remote data centers managed by a cloud service provider (CSP). Cloud computing may be a subscription - based service, and cloud - based subscriptions help reduce resource costs by reducing costs such as purchase and installation. Cloud computing may improve agility and time - to - value and may be more easily scalable in a cost - effective way.

[0004] Currently, applications are placing more emphasis on concepts such as the Internet of Things (IoT), artificial intelligence (AI), machine learning (MI), and immersive media. Furthermore, the number of Internet devices is increasing exponentially. Performing computations in a data center or cloud server (potentially geographically distant locations) may not be an efficient approach as these computations require a significant amount of bandwidth to move data to and from the user to the cloud or data center, increasing latency.

[0005] Edge computing brings computing capabilities closer to users by placing resources at the network edge, thereby reducing network latency, reducing bandwidth requirements for the upper cloud, and enhancing reliability and cost reduction. Edge computing enables the computing of data to be closer to the user instead of traveling further distances relying on the cloud network through multiple hops.

[0006] The main advantages that network operators consider in the use of edge computing are real-time dynamic computing closer to the user, thereby reducing latency, reducing costs because the user's load on the cloud server is low, having a higher quality of experience (QoE) because the local cloud is closer to the user, and thus enabling faster traffic delivery.

[0007] In the case of immersive technologies such as light fields, augmented reality (AR), and virtual reality (VR), high-performance hardware devices are required. This need arises because these applications are likely to require a huge amount of processing power and storage to give the user the feeling of being in a truly immersive environment. Furthermore, these applications require real-time video stream processing to recognize specific objects, and some applications even require the generation of new video frames.

[0008] Therefore, the current challenges in using immersive technologies include processing capacity, memory capacity, energy consumption, and the weight of the device. All of these challenges are becoming more prominent due to the large processing requirements of the applications executed on the device. In immersive technologies that require the user to wear a headset, heavy devices give the user an uncomfortable experience, and high processing capabilities make devices, including light field devices that rely heavily on the GPU to meet the application requirements, expensive. When the availability of resources in the device is limited, processing tasks that require more than the available resources increase the computation waiting time, and when the device is battery-powered, an increase in the computational load causes the device's battery to deplete more rapidly and shortens the service interval until the next charge. Therefore, there is a gap between the capabilities of current state-of-the-art technologies and the requirements of future devices and systems.

[0009] When the device used in immersive technology exists alone, the device itself must provide all the resources necessary to provide an acceptable QoE to the device's user. When the device is connected to other devices using a LAN, the device may request support from other devices on the LAN using very local shared resources for the device that requests support.

SUMMARY OF THE INVENTION

MEANS FOR SOLVING THE PROBLEM

[0010] The following presents a simplified overview of such embodiments in order to provide a basic understanding of one or more embodiments of the present disclosure. This overview is not an extensive overview of all contemplated embodiments, nor is it intended to identify key or critical elements of all embodiments or to delineate the scope of any or all embodiments. Its sole purpose is to present some concepts of one or more embodiments of the present disclosure in a simplified form as a prelude to the more detailed description that is presented later.

[0011] A method, device, and non-transitory computer-readable medium for creating a local cloud composed of a plurality of devices that may be used as a high-availability service for an edge cloud are disclosed by the present disclosure.

[0012] According to an exemplary embodiment, the method is executed by at least one processor of a network node connected to one or more additional network nodes via a local area network (LAN), and the network node and the one or more additional network nodes form a cloud. The method includes setting a first timer to a first value, the first timer being associated with determining whether another network node from the one or more additional network nodes is an active controller within the cloud. The method further includes starting the first timer. The method further includes determining whether a first message indicating that another network node from the one or more additional network nodes is an active controller has been received before the first timer expires. The method further includes restarting the first timer based on a determination that the first message has been received before the first timer expires. The method further includes, based on a determination that the first message has not been received before the first timer expires, allocating one or more tasks to at least one network node from the one or more additional network nodes as the active controller within the cloud.

[0013] According to an exemplary embodiment, the apparatus is connected to one or more additional network nodes via a local area network (LAN), and the apparatus and the one or more additional network nodes form a cloud. The apparatus includes at least one memory configured to store computer program code, and at least one processor configured to access the computer program code and operate as directed by the computer program code. The computer program code includes first setting code configured to cause the at least one processor to set a first timer to a first value, where the first timer is associated with determining whether another network node from one or more additional network nodes is the active controller within the cloud. The computer program code further includes first activation code configured to cause the at least one processor to activate the first timer. The computer program code further includes first determination code configured to cause the at least one processor to determine whether a first message indicating that another network node from one or more additional network nodes is the active controller has been received before the first timer expires. The computer program code further includes restart code configured to cause the at least one processor to restart the first timer based on a determination that the first message has been received before the first timer expires. The computer program code further includes first allocation code configured to cause the at least one processor to allocate one or more tasks to at least one network node from one or more additional network nodes as the active controller within the cloud based on a determination that the first message has not been received before the first timer expires.

[0014] According to an exemplary embodiment, a non-transitory computer-readable medium storing instructions, when executed by a processor of a network node connected to one or more additional network nodes via a local area network (LAN), causes the network node and the one or more additional network nodes to form a cloud, and causes the processor to execute a method including setting a first timer to a first value, the first timer being associated with determining whether another network node from the one or more additional network nodes is an active controller within the cloud. The method further includes starting the first timer and determining whether a first message indicating that another network node from the one or more additional network nodes is an active controller has been received before the first timer expires. The method further includes restarting the first timer based on a determination that the first message has been received before the first timer expires. The method further includes, based on a determination that the first message has not been received before the first timer expires, assigning one or more tasks to at least one network node from the one or more additional network nodes as the active controller within the cloud.

[0015] Additional embodiments are described in the following description, and will be apparent, in part, from the description and / or learned by practice of the presented embodiments of the disclosure.

[0016] The above and other aspects will become apparent from the following description of various embodiments taken in conjunction with the accompanying drawings.

Brief Description of the Drawings

[0017]

Figure 1

Figure 2

Figure 3

Figure 4

Figure 5

Mode for Carrying Out the Invention

[0018] The following detailed description of exemplary embodiments refers to the accompanying drawings. The same reference numerals in different drawings may identify the same or similar elements.

[0019] The foregoing disclosure provides illustrations and descriptions, but is not intended to be exhaustive or to limit the implementation forms strictly to the disclosed forms. Modifications and variations are possible in light of the above disclosure or may be obtained from the practice of the implementation forms. Further, one or more features or components of one embodiment may be incorporated into or combined with another embodiment (or one or more features of another embodiment). Further, in the flowcharts and operation descriptions provided below, one or more operations may be omitted, one or more operations may be added, one or more operations may be executed simultaneously (at least partially), and the order of one or more operations may be switched.

[0020] It will be apparent that the systems and / or methods described herein may be implemented in different forms of hardware, firmware, or a combination of hardware and software. The actual specific control hardware or software code used to implement these systems and / or methods is not limiting of the implementation form. Thus, the operation and behavior of the systems and / or methods are described herein without reference to specific software code, and it is understood that the software and hardware may be designed to implement the systems and / or methods based on the description herein.

[0021] Even if specific combinations of features are recited in the claims and / or disclosed herein, these combinations are not intended to limit the disclosure of possible implementations. Indeed, many of these features may not be specifically recited in the claims and / or disclosed herein and may be combined in ways not specifically recited and / or disclosed herein. Each of the dependent claims listed below may depend directly on only one claim, but the disclosure of possible implementations includes each dependent claim in combination with all other claims in the claim set.

[0022] Elements, operations, or instructions used in this specification should not be construed as important or essential unless specifically stated otherwise. Also, as used in this specification, the articles "a" and "an" are intended to include one or more items and may be used interchangeably with "one or more." When only one item is intended, the term "one" or similar words are used. Also, as used in this specification, terms such as "has," "have," "having," "include," "including," etc. are intended to be open-ended terms. Further, the phrase "based on" is intended to mean "at least partially based on" unless specifically stated otherwise. Further, expressions such as "at least one of [A] and [B]" or "at least one of [A] or [B]" should be understood to include only A, only B, or both A and B.

[0023] Throughout this specification, references to "one embodiment," "an embodiment," or similar language mean that a particular feature, structure, or characteristic described in connection with the embodiment is included in at least one embodiment of the present solution. Thus, the phrases "in one embodiment," "in an embodiment," and similar language throughout this specification may, but do not necessarily, all refer to the same embodiment.

[0024] Furthermore, the described features, advantages, and characteristics of the present disclosure may be combined in any suitable manner in one or more embodiments. Those skilled in the art will recognize, in light of the description herein, that the present disclosure may be practiced without one or more of the specific features or advantages of a particular embodiment. In other instances, additional features and advantages may be recognized in certain embodiments that may not be present in all embodiments of the present disclosure.

[0025] Embodiments of the present disclosure solve the problem of using devices connected to a LAN as high-availability services for an edge cloud that shares the processing capabilities of those devices. Embodiments of the present disclosure include (i) devices that use technologies that require high computing resources, including immersive technologies, but may not have sufficient resources to execute all of the computational tasks required by these technologies alone, (ii) devices that have sufficient resources to provide some resources to a local cloud for use as needed, and (iii) any LAN-applicable methods and devices that include at least two devices that are intended to function as local cloud controllers.

[0026] In the present disclosure, the term "device" may refer to any device connected to a LAN that has the ability to access resources available from a local cloud. The term "active controller" may refer to any device that identifies resources available in the local cloud and assigns tasks on behalf of the devices. The term "worker" may refer to any device that is executing a task assigned by an active controller.

[0027] FIG. 1 shows an embodiment of a LAN network, where 108 is the gateway router of LAN 101, and devices 102, 103, 104, 105, 106, and 107 are different devices connected to the network. In some embodiments, a local cloud may be created using resources from multiple devices connected to LAN 101. The setup may include any device within the LAN that functions as an active controller 107, which is responsible for registering other devices within the LAN and managing the assignment of tasks to those devices. "Managing task assignment" includes migrating tasks among workers within the local cloud.

[0028] To process requests, an active controller may be assigned, and various embodiments may be utilized to provide a highly available local cloud service. In FIG. 1, device 6(107) functions as the active controller, but devices 1(102) and 4(106) may be available to function as the active controller if the current active controller becomes unresponsive.

[0029] FIG. 2 shows a flowchart of an embodiment of a process in which available controllers are involved in the selection process of a highly available active controller. The process may start with operation 201 in which an available controller (201) initializes two timers to two timer values T1V and T2V respectively. For example, the timers may be a T1 timer and a T2 timer. In some embodiments, the two timer values T1V and T2V may be pre-determined. The timer values T1V and T2V may be used to limit the amount of time that no controller is active when at least one controller is available. The timer value T1V may correspond to the amount of time that an available controller waits for an indication that another controller is already active. The timer value T2V may correspond to the amount of time that an active controller waits before sending an indication that it is already the active controller. In some embodiments, the timer value T1V is longer than the timer value T2V. The timer values of T1V and T2V, as well as the ratio between T1V and T2V, may be supplied, determined experimentally, or determined adaptively. In some embodiments, a 3:1 ratio between the timer value T1V and the timer value T2V allows an available controller to receive at least two "I am active" messages, except when the previous active controller is no longer active, in which case the available controller may assume the role of the active controller.

[0030] In some embodiments, to avoid synchronization between available controllers that may all simultaneously declare themselves active (e.g., after all devices on a LAN are powered on simultaneously), each available controller may add a small randomly selected time interval to the T1 timer after setting the T1 timer to T1V. In some embodiments, the device that first notifies itself as an available controller may have a priority to become the active controller.

[0031] The process proceeds from operation 201 to operation 202, and the available controller sends a "Which is active?" message to the multicast group of "all controllers". In operation 203, the available controller sets the T1 timer to T1V. In operation 204, the available controller waits until an "I am active" multicast message arrives from the current active controller or until the T1 timer expires. If an "I am active" message indicating that the LAN already has an active controller is received, the process returns from operation 204 to operation 203 and resets the T1 timer to T1V. If the T1 timer expires indicating that the LAN does not include an active controller, the process proceeds from operation 204 to operation 205.

[0032] In operation 205, the available controller multicasts an "Active" message to all the controllers so that it becomes the active controller. In operation 206, the active controller sets the T2 timer to T2V (206). In operation 207, the active controller performs the role of the active controller as described with reference to FIGS. 3 and 4. In operation 208, the active controller waits until a "Which is active?" multicast message arrives from the current active controller or until the T2 timer expires. If either of these conditions is met, the process returns to operation 205. While waiting, the active controller may also receive requests for local cloud resources and identify workers that include resources for fulfilling those requests. Regardless of whether the waiting state of the active controller is released by the reception of the "Which is active?" multicast message or the expiration of the T2 timer, the active controller transmits an "Active" message multicast to all the available controllers in operation 205, sets the T2 timer to T2V in operation 206, and then waits as before in operation 207. When an available controller becomes the active controller, this controller may continue to operate as the active controller indefinitely.

[0033] Figure 3 shows an embodiment of the connection setup between the active controller 301 and the worker 304. When a request from the local cloud comes, the active controller 301 may broadcast a message to discover the worker 304 connected to the LAN. If the device agrees to provide resources to the local cloud, the device may send a confirmation response 302 to the active controller. The active controller may then respond with an SLA request 306, which may include a request to the worker to share the worker's resources, including resource availability time and power availability. If the worker agrees, the worker may send an SLA response 303, and then the active controller may set up a connection 307. The worker may also have to share information such as the number of active applications on the worker and the energy consumption of the worker. The worker may also be required to share such information during the session.

[0034] After the active controller receives the SLA response from the worker, the active controller may start assigning tasks to various workers. Figure 4 shows an embodiment of task assignment for the active controller worker. Task 411 may correspond to one or more tasks that the active controller 412 needs to assign to workers 403, 405, 407, and 408. The active controller may divide one or more tasks into subtasks 401, 402, 404, 406, 409, and 410.

[0035] In some embodiments, the active controller may assign tasks using the resource availability of the worker (e.g., the storage the worker wishes to lease, the total storage capacity of the worker, the power availability of the worker, etc.). In some embodiments, the worker may notify the active controller to update the intention of the worker providing the resources for various reasons, including but not limited to, unrelated local computations that use a portion of the worker's resources.

[0036] In some embodiments, if for some reason a worker is no longer desired to be used, the worker may notify the active controller of this change in participation. The worker may not disconnect immediately. Instead, the active controller may check whether there are active tasks being executed on the worker. The worker may choose to finish the current task before disconnecting, or may wait until the active controller migrates the task to another worker in the network. If a worker disconnects due to network problems or other issues, the active controller may reassign the tasks assigned to the disconnected worker to other workers in the network.

[0037] In some embodiments, when the active controller becomes unresponsive and another controller becomes available, a new active controller may be selected using the process shown in FIG. 2. In some embodiments, the local cloud may be used as a subscription-based service where the LAN owner leases computing resources and storage resources in exchange for payment. An example may be using the local cloud to store images / files or to perform some image processing tasks. The local area cloud may also be used to execute any task for any device within its network. For example, if any device in the network is a streaming immersive media and the device does not have sufficient resources (decoding, stitching) to process the incoming media stream, the device may request the active controller in the network to process the media on its behalf.

[0038] A methodology for using a LAN as a high-availability service for an edge cloud may be implemented as computer software using computer-readable instructions and may be physically stored on one or more computer-readable media. For example, FIG. 5 shows one embodiment of a computer system 500 suitable for implementing embodiments of the present disclosure.

[0039] The computer software may be encoded using any suitable machine code or computer language that may be subject to the application of mechanisms such as assembly, compilation, linking, etc. to create code containing instructions that can be executed directly by, for example, a computer central processing unit (CPU), a graphics processing unit (GPU), etc., or through interpretation, execution of microcode, etc.

[0040] The instructions may be executed on various types of computers or their components, including, for example, personal computers, tablet computers, servers, smartphones, gaming devices, and Internet of Things devices.

[0041] The components shown in FIG. 5 for the computer system 500 are exemplary and are not intended to imply any limitations regarding the scope or functionality of the computer software implementing embodiments of the present disclosure. The configuration of the components should also not be construed as having any dependencies or requirements regarding any one or combination of the components shown in the exemplary embodiment of the computer system 500.

[0042] The computer system 500 may include a specific human interface input device. Such a human interface input device may respond to input by one or more human users via, for example, tactile input (e.g., keystrokes, swipes, movement of a data glove), voice input (e.g., voice, clapping), visual input (e.g., gesture), olfactory input (not shown). The human interface device may be used to capture specific media that is not necessarily directly related to conscious human input, such as voice (utterance, music, ambient sound, etc.), images (scanned images, photographic images obtained from a still image camera, etc.), video (2D video, 3D video including stereoscopic video, etc.).

[0043] The input human interface device may include one or more of a keyboard 501, a mouse 502, a trackpad 503, a touch screen 510, a data glove (not shown), a joystick 505, a microphone 506, a scanner 507, a camera 508 (each shown only one).

[0044] Computer system 500 may also include certain human interface output devices. Such human interface output devices may stimulate the senses of one or more human users, for example, via tactile output, sound, light, and smell / taste. Such human interface output devices include tactile output devices (e.g., tactile feedback by touch screen 510, data glove (not shown), or joystick 505, although there may be tactile feedback devices that do not function as input devices), audio output devices (such as speaker 509, headphones (not shown), etc.), visual output devices (screens 510 including CRT screens, LCD screens, plasma screens, OLED screens, etc., regardless of whether each has a touch screen input function and regardless of whether each has a tactile feedback function, some of which may output two-dimensional visual output or output of three or more dimensions via means such as stereographic output, virtual reality glasses (not shown), holographic display, and smoke tank (not shown)), and may also include a printer (not shown). Computer system 500 includes optical media such as CD / DVD ROM / RW Z20 with CD / DVD, or similar media 521, thumb drive 522, removable hard drive or solid state drive 523, legacy magnetic media such as tape and floppy disks (not depicted), special ROM / ASIC / PLD-based devices such as security dongles (not depicted), etc., and may include human-accessible storage devices and their related media.

[0045] One of ordinary skill in the art should also understand that the term "computer-readable medium" as used in connection with the subject matter of this disclosure does not include transmission media, carrier waves, or other transient signals.

[0046] The computer system 500 may also include an interface to one or more communication networks. The network may be, for example, wireless, wired, or optical. The network may further be local, wide area, metropolitan, vehicle and industrial, real-time, delay tolerant, etc. Examples of networks include LANs such as Ethernet and wireless LAN, cellular networks including GSM, 3G, 4G, 5G, LTE, etc., wired or wireless wide area digital networks for TV including cable TV, satellite TV, and terrestrial broadcast TV, vehicle and industrial including CANBus, etc. Certain networks generally require an external network interface adapter connected to a specific general-purpose data port or peripheral bus (549) (such as a USB port of the computer system 500), while others are generally integrated into the core of the computer system 500 by connection to the system bus as described below (such as an Ethernet interface to a PC computer system or a cellular network interface to a smartphone computer system). Using any of these networks, the computer system 500 may communicate with other entities. Such communication may be only unidirectional reception (such as broadcast TV), only unidirectional transmission (such as CANBus to a specific CANbus device), or bidirectional, such as communication to other computer systems using a local area or wide area digital network. Specific protocols and protocol stacks may be used for each of those networks and network interfaces as described above.

[0047] The aforementioned human interface device, human-accessible memory device, and network interface may be attached to the core 540 of the computer system 500.

[0048] The core 540 may include one or more central processing units (CPUs) 541, a graphics processing unit (GPU) 542, a dedicated programmable processing device 543 in the form of a field programmable gate array (FPGA), and a hardware accelerator 544 for specific tasks, etc. These devices may be connected via a system bus 548 together with a read-only memory (ROM) 545, a random access memory 546, and an internal mass storage device 547 such as a built-in hard drive or SSD that is not accessible to the user. In some computer systems, the system bus 548 may be accessible in the form of one or more physical plugs to enable expansion by additional CPUs, GPUs, etc. Peripheral devices may be directly attached to the core's system bus 548 or may be attached via a peripheral bus 549. Architectures for peripheral buses include PCI, USB, etc.

[0049] The CPU 541, GPU 542, FPGA 543, and accelerator 544 may execute specific instructions that can together constitute the above-described computer code. The computer code may be stored in the ROM 545 or the RAM 546. Temporary data may also be stored in the RAM 546, while persistent data may be stored, for example, in the internal mass storage device 547. Fast storage and retrieval to any memory device may be enabled by the use of cache memory that may be closely associated with one or more of the CPU 541, GPU 542, mass storage device 547, ROM 545, RAM 546, etc.

[0050] The computer-readable medium may have computer code for performing various computer-implemented operations. The medium and the computer code may be specially designed and configured for the purposes of the present disclosure or may be of the types available to those skilled in the art of computer software technology.

[0051] By way of example and not limitation, a computer system having an architecture 500, particularly a core 540, may provide functionality as a result of software embodied on one or more tangible computer-readable media being executed by a processor (including a CPU, GPU, FPGA, accelerator, etc.). Such computer-readable media may be associated with a user-accessible mass storage device as described above, as well as media associated with a specific storage device of the core 540 of a non-transitory nature, such as the on-core mass storage device 547 or the ROM 545. The software implementing various embodiments of the present disclosure may be stored on such devices and executed by the core 540. The computer-readable media may include one or more memory devices or chips, depending on specific requirements. The software may include defining data structures stored in the RAM 546 for the core 540, and specifically the processor therein (including a CPU, GPU, FPGA, etc.), and modifying such data structures according to processes defined by the software, to cause the core 540 to execute a specific process described herein, or a specific portion of a specific process. Additionally, or alternatively, the computer system may provide functionality as a result of logic wired or otherwise embodied in a circuit (e.g., an accelerator 544), which may operate instead of or in conjunction with software to execute a specific process described herein, or a specific portion of a specific process. References to software may include logic, and vice versa. References to computer-readable media may include circuits (such as integrated circuits (ICs)) that store software for execution, circuits that embody logic for execution, or both. The present disclosure encompasses any suitable combination of hardware and software.

[0052] Although this disclosure describes some exemplary embodiments, there are changes, substitutions, and various alternative equivalents that fall within the scope of this disclosure. Accordingly, those skilled in the art will understand that, although not explicitly shown or described herein, many systems and methods can be devised that embody the principles of this disclosure and are thus within its spirit and scope.

[0053] The foregoing disclosure provides examples and explanations, but is not intended to be exhaustive or to limit the implementation forms strictly to the disclosed forms. Modifications and variations are possible in light of the above disclosure or may be obtained from the practice of the implementation forms.

[0054] It is understood that the specific order or hierarchy of blocks in the process / flowchart disclosed herein is an example of an exemplary approach. Based on design preferences, it is understood that the specific order or hierarchy of blocks in the process / flowchart may be rearranged. Also, some blocks may be combined or omitted. The appended method claims present the elements of the various blocks in a sample order and are not meant to be limited to the specific order or hierarchy presented.

[0055] Some embodiments may relate to systems, methods, and / or computer-readable media at any possible level of integration of technical details. Further, one or more of the components described above may be implemented as instructions stored on a computer-readable medium and executable by at least one processor (and / or may include at least one processor). The computer-readable medium may include a computer-readable non-transitory storage medium having computer-readable program instructions for causing a processor to execute operations.

[0056] A computer-readable storage medium may be a tangible device that holds and stores instructions for use by an instruction execution device. The computer-readable storage medium may be, for example, an electronic storage device, a magnetic storage device, an optical storage device, an electromagnetic storage device, a semiconductor storage device, or any suitable combination of the foregoing, but is not limited thereto. A non-exhaustive list of more specific examples of computer-readable storage media includes the following, namely, portable computer diskettes, hard disks, random access memory (RAM), read-only memory (ROM), erasable programmable read-only memory (EPROM or flash memory), static random access memory (SRAM), portable compact disc read-only memory (CD-ROM), digital versatile discs (DVDs), memory sticks, floppy disks, mechanically encoded devices such as punch cards or raised structures in grooves in which instructions are recorded, and any suitable combination of the foregoing. As used herein, a computer-readable storage medium should not be construed to be a transient signal itself, such as a radio wave or other freely propagating electromagnetic wave, an electromagnetic wave propagating through a waveguide or other transmission medium (e.g., an optical pulse passing through an optical fiber cable), or an electrical signal transmitted through a wire.

[0057] The computer-readable program instructions described herein may be downloaded from a computer-readable storage medium to respective computing / processing devices, or may be downloaded from an external computer or an external storage device via a network, such as the Internet, a local area network, a wide area network, and / or a wireless network. The network may include a copper transmission cable, an optical transmission fiber, a wireless transmission, a router, a firewall, a switch, a gateway computer, and / or an edge server. A network adapter card or network interface within each computing / processing device receives the computer-readable program instructions from the network and transfers the computer-readable program instructions for storage on a computer-readable storage medium within each respective computing / processing device.

[0058] The computer-readable program code / instructions for performing the operations may be in any combination of one or more programming languages including assembly instructions, instruction set architecture (ISA) instructions, machine instructions, machine-dependent instructions, microcode, firmware instructions, state-setting data, configuration data for integrated circuits, or source code or object code written in any combination of object-oriented programming languages such as Smalltalk or C++, and procedural programming languages such as the "C" programming language or similar programming languages. The computer-readable program instructions may be executed entirely on the user's computer, partially on the user's computer, as a stand-alone software package, partially on the user's computer and partially on a remote computer, or entirely on the remote computer or server. In the latter scenario, the remote computer may be connected to the user's computer via any type of network including a local area network (LAN) or a wide area network (WAN), or may be connected to an external computer (e.g., via the Internet using an Internet service provider). In some embodiments, an electronic circuit including, for example, a programmable logic circuit, a field programmable gate array (FPGA), or a programmable logic array (PLA) may execute the computer-readable program instructions by personalizing the electronic circuit using the state information of the computer-readable program instructions to perform the aspects or operations.

[0059] These computer-readable program instructions may be provided to a processor of a general purpose computer, special purpose computer, or other programmable data processing apparatus to produce a machine, such that the instructions, which are executed by the processor of the computer or other programmable data processing apparatus, create means for implementing the functions / operations specified in the flowchart and / or block diagram blocks. These computer-readable program instructions may also be stored in a computer-readable storage medium that includes instructions for causing a computer, programmable data processing apparatus, and / or other device to function in a particular manner, such that the computer-readable storage medium includes a product comprising instructions for implementing the functions / operations specified in the flowchart and / or block diagram blocks.

[0060] The computer-readable program instructions may also be loaded onto a computer, other programmable data processing apparatus, or other device, such that a series of operational steps are performed on the computer, other programmable apparatus, or other device to produce a computer-implemented process, thereby implementing the functions / operations specified in the flowchart and / or block diagram blocks.

[0061] The flowcharts and block diagrams in the figures illustrate the architecture, functionality, and operation of possible implementations of systems, methods, and computer-readable media according to various embodiments. In this regard, each block in the flowchart or block diagram may represent a module, segment, or portion of one or more executable instructions for implementing the specified logical function. The methods, computer systems, and computer-readable media may include additional blocks, fewer blocks, different blocks, or differently arranged blocks compared to those shown in the figures. In some alternative implementations, the functions described in the blocks may be executed in an order different from that described in the figures. For example, two blocks shown in succession may actually be executed simultaneously or substantially simultaneously, or the blocks may be executed in the reverse order, depending on the related functionality. It should also be noted that each block of the block diagrams and / or flowchart diagrams, as well as combinations of blocks in the block diagrams and / or flowchart diagrams, may be implemented by a dedicated hardware-based system that performs the specified function or operation, or that realizes a combination of dedicated hardware and computer instructions.

[0062] It will be apparent that the systems and / or methods described herein may be implemented in different forms of hardware, firmware, or a combination of hardware and software. It is understood that the actual specific control hardware or software code used to implement these systems and / or methods is not limiting of the implementations. Thus, the operation and behavior of the systems and / or methods are described herein without reference to specific software code, and software and hardware may be designed to implement the systems and / or methods based on the description herein.

[0063] The above disclosure also encompasses the embodiments listed below.

[0064] A method executed by at least one processor of a network node connected to one or more additional network nodes via a local area network (LAN), wherein the network node and the one or more additional network nodes form a cloud, the method comprising: setting a first timer to a first value, the first timer being associated with determining whether another network node from one or more additional network nodes is an active controller within the cloud; starting the first timer; determining, before the first timer expires, whether a first message indicating that another network node from one or more additional network nodes is an active controller has been received; restarting the first timer based on a determination that the first message has been received before the first timer expires; and allocating one or more tasks to at least one network node from one or more additional network nodes as the active controller within the cloud based on a determination that the first message has not been received before the first timer expires.

[0065] Further comprising: setting a second timer to a second value; starting the second timer based on a determination that the first message has not been received before the first timer expires; and broadcasting a second message indicating that the network node is an active controller within the cloud to each network node from one or more additional network nodes based on expiration of the second timer or receipt from another network node within the plurality of network nodes of a third message requesting identification of the active controller, the method according to feature (1).

[0066] The method according to feature (2), wherein the first timer is longer than the second timer.

[0067] (4) While the network node is the active controller, to discover available controllers, broadcasting a fourth message from one or more additional network nodes to each network node, and based on the fourth message, receiving from the available network nodes from one or more additional network nodes a fifth message indicating that the available network node is an available controller, the method according to any one of features (1) to (3).

[0068] (5) Based on the reception of the fifth message, sending a sixth message to the available network node requesting the available network node to specify one or more resources of the available network node, based on the sixth message, receiving a seventh message specifying at least one of the one or more resources of the available network node, and based on the reception of the sixth message, allocating one or more tasks to the available network node based on at least one resource, the method according to feature (4).

[0069] (6) Receiving from the available network node a seventh message indicating that the available network node is no longer an available controller, and based on the reception of the seventh message, determining whether one or more incomplete tasks are allocated to the available network node, the method according to feature (5).

[0070] (7) Based on the determination that one or more incomplete tasks are allocated to the available network node, waiting until the available network node completes one or more tasks before disconnecting from the available network node, the method according to feature (6).

[0071] Based on a determination that one or more tasks that are not completed are assigned to an available network node, further comprising the step of migrating one or more tasks from one or more additional network nodes to another available network node, the method according to feature (6).

[0072] (9) An apparatus connected to one or more additional network nodes via a local area network (LAN), wherein the apparatus and the one or more additional network nodes form a cloud, and the apparatus includes at least one memory configured to store computer program code, and at least one processor configured to access the computer program code and operate as instructed by the computer program code. The computer program includes first setting code configured to cause the at least one processor to set a first timer to a first value, where the first timer is associated with determining whether another network node from one or more additional network nodes is an active controller within the cloud; first activation code configured to cause the at least one processor to activate the first timer; first determination code configured to cause the at least one processor to determine whether a first message indicating that another network node from one or more additional network nodes is an active controller is received before the first timer expires; restart code configured to cause the at least one processor to restart the first timer based on a determination that the first message is received before the first timer expires; and first allocation code configured to cause the at least one processor to allocate one or more tasks from one or more additional network nodes to at least one network node as an active controller within the cloud based on a determination that the first message is not received before the first timer expires.

[0073] (10) The computer program code further includes: a second setting code configured to cause at least one processor to set a second timer to a second value; a second activation code configured to cause at least one processor to activate the second timer based on a determination that a first message has not been received before the first timer expires; and a first broadcast code configured to cause at least one processor to broadcast, to each network node from one or more additional network nodes, a second message indicating that the network node is an active controller in the cloud, based on the expiration of the second timer or on the receipt from another network node within a plurality of network nodes of a third message requesting identification of an active controller. The apparatus according to feature (9).

[0074] (11) The apparatus according to feature (11), wherein the first timer is longer than the second timer.

[0075] (12) The computer program code further includes: a second broadcast code configured to cause at least one processor to broadcast, to each network node from one or more additional network nodes, a fourth message for discovering available controllers while the network node is an active controller; and a first reception code configured to cause at least one processor to receive, from an available network node from one or more additional network nodes, a fifth message indicating that the available network node is an available controller, based on the fourth message. The apparatus according to features (9) to (11).

[0076] (13) The computer program code is further configured to include a first transmission code that causes an available network node to send a sixth message to the available network node, which requests the available network node to specify one or more resources of the available network node for at least one processor based on the reception of a fifth message; a second reception code that causes at least one processor to receive a seventh message that specifies at least one resource out of one or more resources of the available network node based on the sixth message; and a second allocation code that causes at least one processor to allocate one or more tasks to an available network node based on at least one resource based on the reception of the sixth message, for the apparatus according to feature (12).

[0077] (14) The computer program code is further configured to include a second reception code that causes at least one processor to receive a seventh message from an available network node indicating that the available network node is no longer an available controller; and a second determination code that causes at least one processor to determine whether one or more incomplete tasks are allocated to the available network node based on the reception of the seventh message, for the apparatus according to feature (13).

[0078] (15) The computer program code is further configured to include a standby code that causes at least one processor to wait for the available network node to complete one or more tasks before disconnecting the connection with the available network node based on the determination that one or more incomplete tasks are allocated to the available network node, for the apparatus according to feature (14).

[0079] (16) The apparatus according to feature (15), further comprising migration code configured to cause at least one processor to migrate one or more tasks from one or more additional network nodes to another network node based on a determination that one or more incomplete tasks are assigned to a network node available on the network.

[0080] (17) A non-transitory computer-readable medium storing instructions that, when executed by a processor of a network node connected to one or more additional network nodes via a local area network (LAN), cause the network node and the one or more additional network nodes to form a cloud, and cause the processor to: set a first timer to a first value, the first timer being associated with determining whether another network node from the one or more additional network nodes is an active controller within the cloud; start the first timer; determine whether a first message indicating that another network node from the one or more additional network nodes is an active controller has been received before the first timer expires; restart the first timer based on a determination that the first message has been received before the first timer expires; and assign one or more tasks to at least one network node from the one or more additional network nodes as an active controller within the cloud based on a determination that the first message has not been received before the first timer expires.

[0081] (18) A step of setting a second timer to a second value, a step of starting the second timer based on a determination that a first message has not been received before the first timer expires, and based on the expiration of the second timer or on reception from another network node within a plurality of network nodes of a third message requesting identification of an active controller, a step of broadcasting, to each network node from one or more additional network nodes, a second message indicating that the network node is an active controller within the cloud, further comprising the non-transitory computer-readable medium according to feature (17).

[0082] (19) The non-transitory computer-readable medium according to feature (18), wherein the first timer is longer than the second timer.

[0083] (20) While the network node is an active controller, a step of broadcasting, to each network node from one or more additional network nodes, a fourth message to discover available controllers, and a step of receiving, based on the fourth message, from an available network node among one or more additional network nodes, a fifth message indicating that the available network node is an available controller, further comprising the non-transitory computer-readable medium according to any one of features (17) to (19).

Explanation of Signs

[0084] 101 Local Area Network (LAN) 102 Device 103 Device 104 Device 105 Device 106 Device 107 Active Controller 301 Active Controller 302 Confirmation Response 303 SLA Response 304 Worker 306 SLA Requirements 307 Connection 401 Subtask 402 Subtask 403 Worker 404 Subtask 405 Worker 406 Subtask 407 Worker 408 Worker 409 Subtask 410 Subtask 411 Task 412 Active Controller 500 Computer System 501 Keyboard 502 Mouse 503 Trackpad 505 Joystick 506 Microphone 507 Scanner 508 Camera 509 Speaker 510 Touch Screen 521 Media 522 Thumb Drive 523 Removable Hard Drive or Solid State Drive 540 Core 541 Central Processing Unit (CPU) 542 Graphics Processing Unit (GPU) 543 Field Programmable Gate Array (FPGA) 544 Hardware Accelerator 545 Read Only Memory (ROM) 546 Random Access Memory 547 Internal Mass Storage Device 548 System Bus 549 Peripheral Bus

Claims

1. A method executed by at least one processor of a first network node connected to one or more additional network nodes via a local area network (LAN), wherein the first network node and the one or more additional network nodes form a cloud, and the method comprises: Setting a first timer to a first value, wherein the first timer is associated with determining whether another network node from the one or more additional network nodes is an active controller within the cloud; Starting the first timer; Determining whether a first message indicating that another network node from the one or more additional network nodes is the active controller has been received before the first timer expires; Restarting the first timer based on a determination that the first message has been received before the first timer expires; Based on a determination that the first message has not been received before the first timer expires, the first network node allocating one or more tasks to at least one network node from the one or more additional network nodes as the active controller within the cloud; A method comprising.

2. Setting a second timer to a second value; Starting the second timer based on a determination that the first message has not been received before the first timer expires; Based on the expiration of the second timer or based on the reception from another network node within the plurality of network nodes of a third message requesting identification of the active controller, broadcasting, to each network node from the one or more additional network nodes, a second message indicating that the first network node is the active controller within the cloud The method according to claim 1, further comprising.

3. The method according to claim 2, wherein the first value of the first timer is longer than the second value of the second timer.

4. While the first network node is the active controller Broadcasting, to each network node from the one or more additional network nodes, a fourth message to discover available controllers Receiving, from an available network node from the one or more additional network nodes, a fifth message indicating that the available network node is an available controller based on the fourth message The method according to claim 1, further comprising.

5. Based on the reception of the fifth message Sending, to the available network node, a sixth message requesting the available network node to specify one or more resources of the available network node Receiving, based on the sixth message, a seventh message specifying at least one resource of the one or more resources of the available network node Based on the reception of the sixth message, assigning one or more tasks to the available network node based on the at least one resource The method according to claim 4, further comprising **Claim 6** Receiving, from the available network node, a seventh message indicating that the available network node is no longer the available controller; Determining, based on the reception of the seventh message, whether one or more tasks that are not completed are assigned to the available network node; The method according to claim 5, further comprising **Claim 7** Based on the determination that one or more tasks that are not completed are assigned to the available network node, waiting for the available network node to complete the one or more tasks before disconnecting the connection with the available network node; The method according to claim 6, further comprising **Claim 8** Based on the determination that one or more tasks that are not completed are assigned to the available network node, migrating the one or more tasks from the one or more additional network nodes to another available network node; The method according to claim 6, further comprising **Claim 9** An apparatus connected to one or more additional network nodes via a local area network (LAN), wherein the apparatus and the one or more additional network nodes form a cloud, and the apparatus comprises: At least one memory configured to store computer program code; At least one processor configured to access the computer program code and operate as instructed by the computer program code, the computer program code including code for causing the at least one processor to execute the method according to any one of claims 1 to 8. Claim 10 A computer program including instructions which, when executed by a processor of a network node connected to one or more additional network nodes via a local area network (LAN), cause the network node and the one or more additional network nodes to form a cloud and cause the processor to execute the method according to any one of claims 1 to 8.

Citation Information

Patent Citations

  • Codeword mapping method

    JP2004312779A

  • Method for performing handoff of slave unit

    JP2009153152A

  • Cluster-based work cell orchestrator

    US10761520B1

  • Method and apparatus for dynamic channel access within wireless networks

    US7639663B1