Methods and devices for software fault mitigation

Migrating faulty software applications to edge-cloud nodes enables reliable and resilient operation by maintaining QoS and reducing device load through edge-cloud offloading.

WO2026104046A1PCT designated stage Publication Date: 2026-05-21TELEFONAKTIEBOLAGET LM ERICSSON (PUBL)
View PDF 3 Cites 0 Cited by

Patent Information

Authority / Receiving Office
WO · WO
Patent Type
Applications
Current Assignee / Owner
TELEFONAKTIEBOLAGET LM ERICSSON (PUBL)
Filing Date
2024-11-15
Publication Date
2026-05-21

Smart Images

  • Figure EP2024082461_21052026_PF_FP_ABST
    Figure EP2024082461_21052026_PF_FP_ABST
Patent Text Reader

Abstract

The invention relates to methods (200, 300), a device (101) and an edge cloud node (106) for software fault tolerance by detecting (201) a fault in the software application; migrating (203) the software application or a part of the software application experiencing the fault to the edge cloud node of an edge-cloud system; running (205) a backup software application; receiving (207) from the edge cloud node an updated software application, wherein the updated software application is the migrated software application or the part of the software application experiencing the fault wherein the fault has been solved; and halting (209) the backup software application to run the updated software application.
Need to check novelty before this filing date? Find Prior Art

Description

[0001] METHODS AND DEVICES FOR SOFTWARE FAULT MITIGATION

[0002] TECHNICAL FIELD

[0003] The invention relates to a method for software fault tolerance performed by a device hosting a software application, a method for software fault tolerance performed by an edge cloud node of an edge system, the device hosting a software application, the edge node, and corresponding computer programs and computer program products.

[0004] BACKGROUND

[0005] Software-based systems are employed in many industries such as manufacturing, medicine, aeronautics, and nuclear energy. Software have increased in scale and complexity resulting also in more software errors. Depending on their criticality, software may need to have a high degree of resilience which means to withstand any disturbances. One of the main disturbances is indeed due to faults as errors, bugs, or flaws in the software causing unintended behavior. Software failure may lead to serious consequences like economic or reputational costs or even risk to human life. Developing fault-free software is an unaffordable task, if not altogether unachievable, therefore software fault tolerance / mitigation needs to be exploited to allow the operation of the software-based system to continue despite individual module failures during operation. Further information on software fault tolerance can be found in K. S. Trivedi, M. Grottke and J. A. Lopez, "Rethinking Software Fault Tolerance," in IEEE Transactions on Reliability, vol. 73, no. 1, pp. 67-72, March 2024.

[0006] State of the art solutions focus on locating backup software modules on a same device hosting a software application. However, resource limited devices may not be able to host the backup software modules and therefore switch to them if the software application experiences any fault or issue.

[0007] SUMMARY

[0008] An object of the invention is to provide an improved fault-tolerant mechanism for software applications.

[0009] To achieve said object, in a first aspect of the invention, there is provided a method for software fault tolerance. The method is performed by a device hosting a software application. The method comprises detecting a fault in the software application. The method comprises migrating the software application or a part of the software application experiencing the fault to an edge cloud node of an edge-cloud system. The method comprises running a backup software application. The method comprises receiving from the edge cloud node an updated software application. The updated software application is the migrated software application or the part of the software application experiencing the fault wherein the fault has been solved. The method comprises halting the backup software application to run the updated software application.

[0010] In a second aspect of the invention, there is provided a method for software fault tolerance. The method is performed by an edge cloud node of an edge-cloud system. The method comprises receiving, from a device hosting a software application experiencing a fault, the software application or a part of the software application experiencing the fault. The method comprises performing debugging of the software application or the part of the software application experiencing the fault. The method comprises transmitting an updated software application to the device, wherein the updated software application is the received software application or the part of the software application experiencing the fault wherein the fault has been solved.

[0011] In a third aspect of the invention, there is provided a device for software fault tolerance. The device comprises a processor and a memory. The memory has stored thereon instructions executable by the processor. The instructions, when executed by the processor, cause the device to detect a fault in the software application. The instructions, when executed by the processor, cause the device to migrate the software application or a part of the software application experiencing the fault to an edge cloud node of an edge-cloud system. The instructions, when executed by the processor, cause the device to run a backup software application. The instructions, when executed by the processor, cause the device to receive from the edge cloud node an updated software application, wherein the updated software application is the migrated software application or the part of the software application experiencing the fault wherein the fault has been solved. The instructions, when executed by the processor, cause the device to halt the backup software application to run the updated software application.

[0012] In a fourth aspect of the invention, there is provided an edge cloud node for software fault tolerance. The edge cloud node comprises a processor and a memory. The memory has stored thereon instructions executable by the processor. The instructions, when executed by the processor, cause the edge cloud node to receive, from a device hosting a software application experiencing a fault, the software application or a part of the software application experiencing the fault. The instructions, when executed by the processor, cause the edge cloud node to perform debugging of the software application or the part of the software application experiencing the fault. The instructions, when executed by the processor, cause the edge cloud node to transmit an updated software application to the device, wherein the updated software application is the received software application or the part of the software application experiencing the fault wherein the fault has been solved.

[0013] According to a fifth aspect of the invention, there is provided a computer program comprising instructions which, when run in a processing unit of a device, cause the device to perform the method according to the first aspect of the invention.

[0014] According to a sixth aspect of the invention, there is provided a computer-readable data carrier having stored thereon the computer program according to the fifth aspect of the invention.

[0015] According to an eight aspect of the invention, there is provided a data carrier signal carrying the computer program according to the fifth aspect of the invention.

[0016] According to a ninth aspect of the invention, there is provided a computer program comprising instructions which, when run in a processing unit of an edge cloud node, cause the edge cloud node to perform the method according to the second aspect of the invention.

[0017] According to a tenth aspect of the invention, there is provided a computer-readable data carrier having stored thereon the computer program according to the third aspect of the invention.

[0018] According to an eleventh aspect of the invention, there is provided a data carrier signal carrying the computer program according to the third aspect of the invention.

[0019] Certain embodiments may provide one or more of the following technical advantages:

[0020] providing software reliability and resilience;

[0021] ensuring Quality of Service (QoS) for a faulty software application; and

[0022] reducing computation load of a device hosting the faulty software application. BRIEF DESCRIPTION OF THE DRAWINGS

[0023] For better understanding of the present disclosure, and to show more readily how the invention may be carried into effect, reference will now be made, by way of example, to the following drawings, in which:

[0024] Figure 1 shows an example of system comprising a device hosting software applications, an edge node, and a central cloud node, according to embodiments;

[0025] Figure 2a and 2b shows a flow chart illustrating a method performed by a device hosting a software application, according to embodiments;

[0026] Figure 3 shows a flow chart illustrating a method performed by an edge cloud node of an edge system, according to embodiments;

[0027] Figure 4a shows a schematic diagram illustrating a communications system from a computing layer point of view, i.e., device layer, edge computing layer, and cloud computing layer, according to embodiments;

[0028] Figure 4b shows a sequence diagram of message exchanged between a device, a central monitor node, and an edge cloud node, according to embodiments;

[0029] Figure 5 shows a block diagram depicting a device according to an embodiment; and

[0030] Figure 6 shows a block diagram depicting an edge cloud node according to an embodiment.

[0031] DETAILED DESCRIPTION

[0032] Embodiments will be illustrated herein with reference to the accompanying drawings. These embodiments are provided by way of example so that this disclosure will be thorough and complete, and will fully convey the scope of the inventive concept to those skilled in the art.

[0033] A software-based system, for example in an industrial scenario, comprises one or more devices hosting one or more software applications. The one or more software applications, such as manufacturing and control systems, may have specific Quality of Service (QoS) requirements, e.g., downtime, delays in the software execution, and required capacity of the hosting device. These QoS requirements are dictated for example by a service level agreement (SLA) and should be maintained in all situations. In addition, the software applications may need to have a high degree of resilience which means operations should not be disrupted in case of fault.

[0034] Edge-cloud computing architecture provides computing capacity to offload tasks to edge and / or cloud nodes from devices limited in resources, e.g., user equipements (UEs), robots, mobile phones, drones, extended reality (XR) glasses, or Internet of Things (loT) devices. The invention disclosed herein makes it possible to improve fault-tolerant mechanism for software applications by benefitting from the edge-cloud computing architecture. The invention is implemented by detecting a fault in a software application hosted on a device; migrating the software application or a part of the software application experiencing the fault to an edge cloud node of an edge-cloud system; running a backup software application; receiving from the edge cloud node an updated software application, wherein the updated software application is the migrated software application or the part of the software application experiencing the fault wherein the fault has been solved; and halting the backup software application to run the updated software application.

[0035] By offloading to the edge-cloud system the debugging of the fault in the software application and by using a backup software in the meantime that the fault is solved, the invention disclosed herein makes it possible to

[0036] ensure the operations of the software application to continue;

[0037] ensure the QoS is guaranteed;

[0038] reduce the computation load of the device hosting the faulty software application.

[0039] Figure 1 shows a schematic diagram illustrating an example of a communications system 100 where embodiments presented herein can be applied. The communications system 100 comprises a device 101, one or more edge cloud nodes 106 (only one showed in Figure 1) and a central cloud node 110 (the central cloud node 110 may be centralized or distributed). The one or more edge cloud nodes 106 and the central cloud nodes 110 may be comprised in an edge-cloud system 110.

[0040] The communications system 100 may be according to one or more communications technologies such as for example Second Generation (2G), Third Generation (3G), Fourth Generation (4G), Fifth Generation (5G), Sixth Generation (6G) or any other Third Generation Partnership Project (3 GPP) radio access technology, or other communications network technologies including any mixed network systems, such as a wireless system including 3 GPP 4G network devices, 3GPP 5G network devices, and IEEE 802.11 access points.

[0041] A central cloud node 110 may be a remote server, router, or any device with computing, storage, and network connectivity. An edge cloud node 106 may be an edge node or a cloud node of the edge-cloud system 110. The edge cloud node 106 may be a device adapted to process, analyze, and store data. An edge node 106 is closer to clients / end users than a cloud node or central cloud node 110. An edge node may be a router, gateway, loT gateway, and any device with computing, storage, and network connectivity, few hops (e.g., one or two hops, not shown in Figure 1) away from a client (device) / end user typically connected to a communications network of a network operator. The edge node 106 may also be implemented at the client’s premises such as in a home, a vehicle, a factory site. The one or more edge cloud nodes 106 may communicate with the central cloud node through an access network.

[0042] The device 101 may be a user equipment (UE), wireless device, mobile phone, handset, wireless local loop phone, smartphone, laptop computer, tablet computer, network equipped sensor, network equipped vehicle, and loT device. The herein disclosed embodiments might, however, also be used in the context of virtualized switches, virtualized routers, or any other type of virtualized networks on top of which one or more software applications 103a-b are hosted. The one or more software applications 103a-b hosted on the device 101 may have a fault, such as error, a bug, or a flaw leading to unintended behavior of the corresponding software application. Examples of software applications 103a-b are robot control software, such as position planning, and routing algorithms on switches.

[0043] Figures 2a and 2b show a method 200 for enabling software fault tolerance. In one embodiment, the method 200 may be carried out by a device 101 hosting a software application 103a-b. The device 101 may host one or more software applications 103a-b. The method 200 comprises detecting 201 a fault in the software application! 03 a-b. More than one fault may be detected 201. The fault may be an error, a bug, or a flaw in the software leading to unintended behavior of the software application a device 101 hosting a software application 103 a-b. The fault may affect a part of the software application, therefore the detection 201 of the fault may comprise determining 221 which part of the software application is experiencing the fault. The method 200 further comprises determining 223 if the part of software application experiencing the fault has dependencies on further parts of the software application. The part and the further parts of the software application may be sub-applications or tasks. The software application a device 101 hosting a software application 103a-b experiencing a fault is also called faulty software application a device 101 hosting a software application 103a-b herein.

[0044] The detection 201 of the fault may be performed for example by using rule-based algorithms where a rule directory may be searched and if the pattern is matched then a fault is detected. Alternatively, machine learning algorithms may be used including both supervised and unsupervised to detect any anomalies including faults.

[0045] The detection 201 of the fault may further comprise determining 211 whether to migrate the faulty software application or whether to migrate the part of the software application experiencing the fault, to an edge cloud node of an edge-cloud system 110. The determination 211 on whether or not to migrate the faulty software application or whether or not to migrate the part of the software application experiencing the fault may be based on availability of resources (like central processing unit (CPU) and memory) and / or security level at the edge cloud nodes, and / or requirements of the software application, such as QoS, throughput, and delay. For example, if there is availability of resources at an edge cloud node, the software application or a part of the software application experiencing the fault may be migrated. As a further example, if the device hosts more than one software applications or parts of the software application, the software applications or parts may have a priority assigned and the faulty software applications or parts may be migrated based on the corresponding priority. The priorities may also be adjusted to increase the priority of a faulty software applications or part. As a further example, the faulty software applications or faulty parts may be decided to be migrated to an edge cloud node running dockers (not safe by design) if security is not a requirement, or to an edge cloud node running Web Assembly (secure runtime environment) if security is a requirement.

[0046] The method 200 may further comprise transmitting a message to a central cloud node 108 of the edge-cloud system 110. The message may include information on the faulty software application(s) and on the fault(s). The information may comprise: (i) device identification (ID) which may be a unique number in the communications system identifying the device 101 hosting the software application affected by the fault(s), e.g., an IP address, a human-readable name, and an alphanumeric name, (ii) software application ID which may be a (unique) number identifying the faulty software application, e.g., a human-readable name or an alphanumeric name, (iii) the fault ID which may be a unique (pre-defined) number indicating the type of fault, e.g., a human-readable name or an alphanumeric name. Examples of types of fault may be omission failure, timing failure, response failure, and crash failure. The central cloud node 108 may collect messages comprising information on the faulty software application(s) and on the fault(s), from the device 101 and further devices. The central cloud node 108 may further collect information on resource availability of the edge cloud nodes 106. The central cloud node 108 may determine where to migrate the software application or the part of the software application experiencing the fault based on the collected messages and the information on the resource availability. The information on where to migrate the software application or the part of the software application may be transmitted from the central cloud node 108 to the device 101.

[0047] The method 200 may further comprise obtaining 213a information on the edge cloud node 106 where to migrate the software application or the part of the software application experiencing the fault. For example, the obtained information on the edge cloud node 106 may comprise an edge cloud node ID. The information on the edge cloud node may be obtained 217a from the central could node 108. Alternatively, the method 200 may comprise obtaining 213b information, such as resource availability, (for example from the central cloud) on multiple edge cloud nodes 106. The information on the multiple edge cloud nodes may be obtained 217b from the central could node 108. The method 200 may further comprise selecting 215 one of the two or more edge cloud nodes to migrate the software application or the part of the software application experiencing the fault. The selection 215 of the one of the one or more edge cloud nodes may be based on one or more metrics, for example based on resource availability of the edge cloud nodes and requirements of the software application that needs to be migrated.

[0048] The method 200 comprises migrating 203 the software application or the part of the software application experiencing the fault to the edge node 106. If the part of the software application experiencing the fault has (software) dependencies on further parts of the software application, the further parts are also migrated 225 to the edge node 106. A software dependency is a relationship between software components where one software component relies on the other to work properly.

[0049] The method 200 comprises running 205 a backup software application on the device 101. The backup software application is an error free version of the faulty software application, e.g., a previous version or another version with similar performance. The backup software application may be obtained 219 from one of: an edge cloud node hosting the backup software application (the edge cloud node may be the same edge cloud node where the software application or the part of the software application experiencing the fault has been migrated or a different edge cloud node), a third party application provider, or a marketplace. If there are more copies of the backup software application distributed between the edge cloud nodes, a metric may be used to select which backup software application is the one obtained by the device 101. For example, the edge cloud node from which the backup software application is retrieved may be the closest to the device 101 in terms of delay and / or hops.

[0050] The method 200 comprises receiving 207 from the edge cloud node (i.e., the edge cloud node where the software application or the part of the software application experiencing the fault was migrated) an updated software application. The updated software application is the migrated software application or the part of the software application experiencing the fault wherein the fault has been solved (manually or automatically).

[0051] The method 200 comprises halting 209 the backup software application on the device 101 to run the updated software application instead.

[0052] Figure 3 shows a method 300 for enabling software fault tolerance. In one embodiment, the method 300 may be carried out by an edge cloud node 106. The method 300 comprises receiving 301, from a device 101 hosting a software application 103 a-b experiencing a fault, the software application or a part of the software application experiencing the fault. The software application may experience one or more faults. A fault may be an error, a bug, or a flaw in the software leading to unintended behavior of the software application. If the part of the software application experiencing the fault has dependencies on further parts of the software application, the method 300 further comprises receiving 307 the further parts on which the part experiencing the fault depends.

[0053] The method 300 comprises performing 303 debugging of the software application or of the part of the software application experiencing the fault to solve the fault. The software application or the part of the software application wherein the fault has been solved is referred to as updated software application. The method 300 comprises transmitting 305 the updated software application to the device 101, once the fault has been solved. Figure 4a shows a schematic diagram illustrating a communications system 400 from a computing layer point of view, i.e., device layer 401, edge computing layer 406, and cloud computing layer 408, according to embodiments.

[0054] The edge computing layer 406 comprises one or more edge nodes 196a implementing a method 300 with reference to Figure 3. The cloud computing layer 408 may comprise a central cloud node 108 and one or more cloud nodes 106b implementing a method 300 with reference to Figure 3a-b. The device layer 401 comprises one or more devices lOla-b hosting one or more software applications (Appl l03a, App2 103b on device 101a, App3 103c, App4 103d on device 101b) implementing a method 200 with reference to Figures 2a-b. The one or more devices lOla-b may comprise a fault monitoring agent (Fault monitor agentl 402a on device 101a and Fault monitoring agent2 402b on device 101b). The fault monitoring agent 402a-b may monitor the software application(s) 103a-d on the corresponding device lOla-b. In case of a faulty behavior of the software application(s), a message 408a, 408b may be sent from the corresponding device lOla-b to the central cloud node 108. The central cloud node 108 may transmit 411a-b information on where to migrate the software application or the part of the software application experiencing the fault to the corresponding device lOla-b.

[0055] The one or more edge nodes 106a, the one or more devices 101 and one or more cloud nodes 106b may comprise an offloading manager 407, 403a-b, 409. The offloading managers 407, 403 a-b, 409 may handle a negotiating process 410a-b between the device 101 and the corresponding edge nodes 106a and / or cloud nodes 106b when the offload of the faulty software application is decided.

[0056] Figure 4b shows a sequence diagram with examples of messages exchanged between a device 101 implementing a method 200 with reference to Figure 2a, a central cloud node 108, and an edge cloud node 106 implementing a method 300 with reference to Figure 3. The device 101 may comprise a fault monitoring agent 402 and an offload manager 403. The edge cloud node 106 may comprise an offload manager 407 / 409. Figure 4b shows the following steps:

[0057] 408a-b: when the device 101 detects a fault in the software application hosted on the device 101, a message may be sent, for example by the fault monitor agent 403, to the central cloud node 108;

[0058] 429: the central cloud node 108 may determine based for example on QoS, security information and software application requirements, a list of offloading options, i.e., a list of edge / cloud nodes, or a single edge / cloud node candidate, where the device 101 may migrate the faulty software application;

[0059] 213a, 213b, 41 la-b the central cloud node 108 may transmit to the device 101 via for example the offload manager 403 the list of offloading options, or information on the selected candidate edge / cloud node;

[0060] 433: the device 101 may transmit a request for offloading to an edge cloud node 106 via the offload manager 407, 409. The edge cloud node 106 may have been selected between the edge cloud nodes in the list of offloading options;

[0061] 435: the device 101 may receive an approval or rejection for the offloading from the edge cloud node 106;

[0062] 203, 301 : if the device 101 received the approval for the offloading, the device 101 migrates the faulty software application to the edge cloud node 106;

[0063] 219: the device 101 receives from an edge cloud node 106, e.g., as shown in Figure 4b from the same edge cloud node 106 where the faulty software application has been migrated, a backup software application to run in the meantime that the faulty software application is fixed; 303: the edge cloud node 106 performs debugging of the software application or the part of the software application experiencing the fault; and

[0064] 207, 305: when an updated software application is ready, i.e., the fault in the faulty software application has been solved, the updated software application is sent from the edge cloud node 106 to the device 101.

[0065] Example scenarios in which the present invention may be practiced is in relation to industrial robots in factories or computing extensive software applications with QoS requirements, such as deep neural network-based classifications and image processing hosted on UEs. An industrial robot or a UE may be a device 101 according to method 200. The industrial robots may host controllers, i.e., software applications according to embodiments. The UE may host software applications such as deep neural network-based classifications and image processing. These software applications should be executed without any faults, i.e., the expectation is that the software behavior is correct under all situations. The software applications may have a set of QoS requirements, e.g., deadline to execute the software. By implementing a solution based on the embodiment, the device 101, i.e., the industrial robot or the UE, may monitor the software application and when a fault is detected, decide to migrate the software application or the part of the software application experiencing the fault to a node of an edge-cloud system to ensure healthy operation of the robot / UE. In these examples, it is implicitly assumed that the edge-cloud system is available, which is a plausible assumption as most of the industries are going towards utilization of the edge-cloud computing architectures.

[0066] Figure 5 shows a block diagram illustrating an embodiment of a device 101, 101a, 101b, comprising processor circuitry 501, a computer-readable data carrier, such as the memory 502, and network interface circuitry 503. The processing circuitry 501 may comprise one or more processors, such as Central Processing Units (CPUs), microprocessors, application processors, application-specific processors, Graphics Processing Units (GPUs), and Digital Signal Processors (DSPs) including image processors, or a combination thereof, and the memory 502 comprising the computer program comprising instructions. When executed by the processor(s), the instructions cause the device 101, 101a, 101b to become operative in accordance with embodiments of the invention described herein, in particular with reference to Figures 2a-b.

[0067] More specifically, the device 101, lOla-b becomes operative to detect 201 a fault in the software application. The device 101, lOla-b becomes operative to migrate 203 the software application or a part of the software application experiencing the fault to an edge cloud node of an edge-cloud system. The device 101, lOla-b becomes operative to run 205 a backup software application. The device 101, lOla-b becomes operative to receive 207 from the edge cloud node an updated software application. The updated software application is the migrated software application or the part of the software application experiencing the fault wherein the fault has been solved. The device 101, lOla-b becomes operative to halt 209 the backup software application to run the updated software application.

[0068] The device 101, lOla-b may further become operative to determine 211 whether to migrate the software application or the part of the software application experiencing the fault to the edge cloud node. The device 101, lOla-b may further become operative to obtain 213a information on the edge cloud node where to migrate the software application or the part of the software application experiencing the fault. The device 101, lOla-b may further become operative to obtain 213b information on one or more edge cloud nodes where to migrate the software application or the part of the software application experiencing the fault; and select 215 one of the one or more edge cloud nodes based on resource availability of the edge cloud nodes and requirements of the software application. The device 101, lOla-b may further become operative to obtaining information 217a, 217b from a central cloud node. The device 101, 101a-b may further become operative to obtain 219 the backup software application from one of: an edge cloud node hosting the backup software application, third party application provider or marketplace. The device 101, lOla-b may further become operative to detect 201 a fault in the software application by determining 221 which part of the software application is experiencing the fault; and determining 223 if the part of software application experiencing the fault has dependencies on further parts of the software application. The device 101, lOla-b may further become operative to migrate 203 the software application or the part of the software application experiencing the fault to an edge cloud node by migrating 225 the further parts. The device 101, lOla-b hosting the software application may be a UE.

[0069] The computer program 504 may be stored in a computer-readable data carrier, such as the memory 502. Alternatively, the computer program 504 may be carried by a data carrier signal, e.g., downloaded to the memory 502 via the network interface circuitry 503. The memory 502 may, e.g., be a Random-Access Memory (RAM), a Read-Only Memory (ROM), a Flash memory, or the like. The network interface circuitry 503 may comprise one or more of a cellular modem (e.g., GSM, UMTS, LTE, 5G, or higher generation), a WLAN / Wi-Fi modem, a Bluetooth modem, an Ethernet interface, an optical interface, or the like, for exchanging data between the device 101, 101a, 101b, one or more edge cloud nodes 106, 106a, 106b, one or more central cloud nodes 110, and other computing devices, communications devices, a radioaccess network, and / or the Internet. The processing circuitry 501 may alternatively or additionally comprise one or more Application-Specific Integrated Circuits (ASICs), Field-Programmable Gate Arrays (FPGAs), or the like, which are operative to cause the device 101, 101a, 101b to become operative in accordance with embodiments of the invention described herein.

[0070] The device 101, lOla-b may communicate with the one or more edge cloud nodes 106, 106a-b and with the central cloud node 108, through a subscription protocol, such as message queuing telemetry transport (MQTT) protocol, Open Platform Communications Unified Architecture (OPC-UA), Data Distribution Service (DDS), or utilizing any one of a number of transfer protocols, e.g., frame relay, internet protocol (IP), transmission control protocol (TCP), user datagram protocol (UDP), hypertext transfer protocol (HTTP), or by using Remote Procedure Call (RPC) protocols, such as gRPC, or Dynamic Resource Discovery (xDS) protocol. For example, the updated software application may be sent by the edge cloud node 106 as a content of a “POST” HTTP message. Figure 6 shows a block diagram illustrating an embodiment of an edge cloud node 106, 106a, 106b, comprising processor circuitry 601, a computer-readable data carrier, such as the memory 602, and network interface circuitry 603. The processing circuitry 601 may comprise one or more processors, such as CPUs, microprocessors, application processors, applicationspecific processors, GPUs, and DSPs including image processors, or a combination thereof, and the memory 602 comprising the computer program comprising instructions. When executed by the processor(s), the instructions cause the edge cloud node 106, 106a, 106b to become operative in accordance with embodiments of the invention described herein, in particular with reference to Figure 3.

[0071] More specifically, the edge cloud node 106, 106a, 106b becomes operative to receive 301, from a device 101, lOla-b hosting a software application experiencing a fault, the software application or a part of the software application experiencing the fault. The edge cloud node 106, 106a, 106b becomes operative to perform 303 debugging of the software application or the part of the software application experiencing the fault. The edge cloud node 106, 106a, 106b becomes operative to transmit 305 an updated software application to the device, wherein the updated software application is the received software application or the part of the software application experiencing the fault wherein the fault has been solved. The edge cloud node 106, 106a, 106b becomes operative to receive 301 from a device 101, lOla-b the software application experiencing a fault by receiving 307 further parts on which the part experiencing the fault depends.

[0072] The computer program 604 may be stored in a computer-readable data carrier, such as the memory 602. Alternatively, the computer program 604 may be carried by a data carrier signal, e.g., downloaded to the memory 602 via the network interface circuitry 603. The memory 602 may, e.g., be a RAM, a ROM, a Flash memory, or the like. The network interface circuitry 603 may comprise one or more of a cellular modem (e.g., GSM, UMTS, LTE, 5G, or higher generation), a WLAN / Wi-Fi modem, a Bluetooth modem, an Ethernet interface, an optical interface, or the like, for exchanging data between the edge cloud node 106, 106a, 106b, one or more further edge cloud nodes 106, 106a, 106b, one or more devices 101, 101a, 101b, one or more central cloud nodes 110, and other computing devices, communications devices, a radio-access network, and / or the Internet. The processing circuitry 601 may alternatively or additionally comprise one or more ASICs, FPGAs, or the like, which are operative to cause the edge cloud node 106, 106a, 106b to become operative in accordance with embodiments of the invention described herein.

[0073] It should be noted that the above-mentioned embodiments illustrate rather than limit the invention, and that those skilled in the art will be able to design many alternative embodiments without departing from the scope of the appended claims. The word “comprising” does not exclude the presence of elements or steps other than those listed in a claim, “a” or “an” does not exclude a plurality, and a single processor or other unit may fulfil the functions of several units recited in the claims. Any reference signs in the claims shall not be construed to limit their scope.

Claims

CLAIMS1. A method (200) for software fault tolerance, performed by a device (101) hosting a software application, the method (200) comprising:detecting (201) a fault in the software application;migrating (203) the software application or a part of the software application experiencing the fault to an edge cloud node of an edge-cloud system; running (205) a backup software application;receiving (207) from the edge cloud node an updated software application, wherein the updated software application is the migrated software application or the part of the software application experiencing the fault wherein the fault has been solved; andhalting (209) the backup software application to run the updated software application.

2. The method (200) according to claim 1, further comprising:determining (211) whether to migrate the software application or the part of the software application experiencing the fault to the edge cloud node.

3. The method (200) according to any of claims 1-2, further comprising:obtaining (213a) information on the edge cloud node where to migrate the software application or the part of the software application experiencing the fault.

4. The method (200) according to any of claims 1-2, further comprising:obtaining (213b) information on two or more edge cloud nodes where to migrate the software application or the part of the software application experiencing the fault; andselecting (215) one of the two or more edge cloud nodes based on resource availability of the edge cloud nodes and requirements of the software application.

5. The method (200) according to any of claims 3-4, wherein obtaining (213a, 2013b) information further comprisesobtaining information (217a, 217b) from a central cloud node.

6. The method (200) according to any of claims 1-5, further comprising:obtaining (219) the backup software application from one of: an edge cloud node hosting the backup software application, third party application provider or marketplace.

7. The method (200) according to any of claims 1-6, wherein detecting (201) a fault in the software application further comprises:determining (221) which part of the software application is experiencing the fault; anddetermining (223) if the part of software application experiencing the fault has dependencies on further parts of the software application.

8. The method (200) according to claims 7, wherein migrating (203) the software application or the part of the software application experiencing the fault to an edge cloud node further comprises:migrating (225) the further parts.

9. The method (200) according to any of claims 1-8, wherein the device hosting the software application is a User Equipment, UE.

10. A method (300) for software fault tolerance, performed by an edge cloud node (106) of an edge-cloud system, the method comprising:receiving (301), from a device hosting a software application experiencing a fault, the software application or a part of the software application experiencing the fault;performing (303) debugging of the software application or the part of the software application experiencing the fault; and- transmitting (305) an updated software application to the device, wherein the updated software application is the received software application or the part of the software application experiencing the fault wherein the fault has been solved.

11. The method (300) according to claim 10, wherein receiving (301) from a device the software application experiencing a fault further comprises:receiving (307) further parts on which the part experiencing the fault depends.1812. A device (101) for software fault tolerance, the device (101) comprising a processor (501) and a memory (502), the memory (502) having stored thereon instructions executable by the processor (501), wherein the instructions, when executed by the processor (501), cause the device (101) to:detect (201) a fault in the software application;migrate (203) the software application or a part of the software application experiencing the fault to an edge cloud node of an edge-cloud system; run (205) a backup software application;receive (207) from the edge cloud node an updated software application, wherein the updated software application is the migrated software application or the part of the software application experiencing the fault wherein the fault has been solved; andhalt (209) the backup software application to run the updated software application.

13. The device (101) according to claim 12, wherein the instructions, when executed by the processor (501), cause the device (101) to:determine (211) whether to migrate the software application or the part of the software application experiencing the fault to the edge cloud node.

14. The device (101) according to any of claims 12-13, wherein the instructions, when executed by the processor (501), cause the device (101) toobtain (213a) information on the edge cloud node where to migrate the software application or the part of the software application experiencing the fault.

15. The device (101) according to any of claims 12-13, wherein the instructions, when executed by the processor (501), cause the device (101) to:obtain (213b) information on one or more edge cloud nodes where to migrate the software application or the part of the software application experiencing the fault; andselect (215) one of the one or more edge cloud nodes based on resource availability of the edge cloud nodes and requirements of the software application.1916. The device (101) according to any of claims 14-15, wherein the instructions, when executed by the processor (501), cause the device (101) to obtain (213a, 2013b) information byobtaining information (217a, 217b) from a central cloud node.

17. The device (101) according to any of claims 12-16, wherein the instructions, when executed by the processor (501), cause the device (101) to:obtain (219) the backup software application from one of: an edge cloud node hosting the backup software application, third party application provider or marketplace.

18. The device (101) according to any of claims 12-17, wherein the instructions, when executed by the processor (501), cause the device (101) to detect (201) a fault in the software application by:determining (221) which part of the software application is experiencing the fault; anddetermining (223) if the part of software application experiencing the fault has dependencies on further parts of the software application.

19. The device (101) according to claims 18, wherein the instructions, when executed by the processor (501), cause the device (101) to migrate (203) the software application or the part of the software application experiencing the fault to an edge cloud node by:migrating (225) the further parts.

20. The device (101) according to any of claims 12-19, wherein the device (101) hosting the software application is a User Equipment, UE.

21. An edge cloud node (106) for software fault tolerance, the edge cloud node (106) comprising a processor (601) and a memory (602), the memory (602) having stored thereon instructions executable by the processor (601), wherein the instructions, when executed by the processor (601), cause the edge cloud node (106) to:receive (301), from a device (101) hosting a software application experiencing a fault, the software application or a part of the software application experiencing the fault;20perform (303) debugging of the software application or the part of the software application experiencing the fault; and- transmit (305) an updated software application to the device, wherein the updated software application is the received software application or the part of the software application experiencing the fault wherein the fault has been solved.

22. The edge cloud node (106) according to claim 21, wherein the instructions, when executed by the processor (601), cause the edge cloud node (106) to receive (301) from a device (101) the software application experiencing a fault by:receiving (307) further parts on which the part experiencing the fault depends.

23. A computer program (504) comprising instructions which, when executed by a processor (501) of a device (101), cause the device (101) to perform the method (200) according to any one of claims 1 to 9.

24. A computer-readable data carrier (502) having stored thereon the computer program (504) according to claim 23.

25. A data carrier signal carrying the computer program (504) according to claim 23.

26. A computer program (604) comprising instructions which, when executed by a processor (601) of an edge cloud node (106), cause the edge cloud node (106) to perform the method (300) according to any one of claims 10 to 11.

27. A computer-readable data carrier (602) having stored thereon the computer program (504) according to claim 26.

28. A data carrier signal carrying the computer program (604) according to claim 26.