Fault management in communication system

By adopting the active-standby redundant deployment model and the automatic role determination method of arbitrator in the contact center system, the problem of difficult to achieve high availability of contact center system in the existing technology is solved, and the system is quickly recovered after failure and service continuity is achieved. Sexual effect.

CN119452350APending Publication Date: 2025-02-14AFINITI AI LTD
View PDF 0 Cites 0 Cited by

Patent Information

Application Number
CN202380048604.0
Authority / Receiving Office
CN · China
Patent Type
Applications(China)
Current Assignee / Owner
Priority Date
2022-06-22
Filing Date
2023-06-21
Publication Date
2025-02-14

AI Technical Summary

Technical Problem

Existing high availability models are difficult to achieve high availability of active contacts and agents in contact center systems, especially the need for services to continue after multiple consecutive failures.

Method used

By introducing an active-standby redundant deployment model in the communication system and automatically determining the active and standby roles of the nodes using an arbitrator, ensuring that the system can recover quickly in the event of failure.

Benefits of technology

It realizes that the communication system can provide continuous and uninterrupted services after suffering component or network failure, ensuring high availability and reliability of services.

✦ Generated by Eureka AI based on patent content.

Smart Images

  • Figure CN119452350A_ABST
    Figure CN119452350A_ABST
Patent Text Reader

Abstract

A method performed by a first arbiter operating on a first node of a communication system, the communication system further comprising a second node and a second arbiter operating on the second node. The process includes: sending a message of whether you is active to a second arbiter; receiving a response message transmitted by the second arbiter, the response message responsive to a message whether you is active; and upon receiving the response, determining that the first node is a backup node.
Need to check novelty before this filing date? Find Prior Art

Description

Technical Field

[0001] Embodiments related to fault management in communication systems are disclosed. Background Art

[0002] An example of a communication system is a contact center system (also known as a call center system). A contact center system may employ a pairing node whose function is to assign contacts (also known as calls) to agents that are available to handle those contacts. Sometimes, a contact center may have agents available and waiting to be assigned to inbound or outbound contacts (e.g., telephone calls, Internet chat sessions, emails). At other times, a contact center may have contacts waiting in one or more queues for agents to become available for assignment. Summary of the invention

[0003] There are certain challenges. For example, for communication systems, such as, for example, contact center systems, it is advantageous to achieve high availability. That is, it is important that the system be able to provide continuous, uninterrupted service after suffering a component or network failure. Typical high availability models, such as a typical active-standby redundant deployment model, where an active node is responsible for delivering communication services, and a standby node is ready to take over service responsibilities if the active node fails, cannot achieve high availability for active contacts and agents in a contact center system. For a higher degree of service survivability, it is also desirable to have more than one standby node in the system so that service can continue even after multiple consecutive failures.

[0004] In a system with multiple nodes, only one node should be active at any given time, with the others acting as standby nodes, so it is advantageous to have an automatic mechanism that, among other things, enables the nodes to determine which node will become the active node.

[0005] Therefore, in one aspect, a method for failure recovery in a communication system including an active node and a first standby node is provided. The method is performed by a first arbitrator running on a first node of the communication system, the communication system also including a second node and a second arbitrator running on the second node.

[0006] In one embodiment, the process includes: transmitting a "are you active" message to the second arbitrator; receiving a response message transmitted by the second arbitrator, the response message being in response to the "are you active" message; and upon receiving the response, determining that the first node is a standby node.

[0007] In another embodiment, the process includes: transmitting a first "are you active" message to a second arbitrator; detecting expiration of a timer before receiving any response to the "are you active" message; and, after detecting expiration of the timer, determining whether to regard the first node as an active node.

[0008] In another aspect, a computer program comprising instructions is provided, which, when executed by a processing circuit system of a device, causes the device to perform any method disclosed herein. In one embodiment, a carrier containing the computer program is provided, wherein the carrier is one of an electronic signal, an optical signal, a radio signal, and a computer-readable storage medium. In another aspect, a device configured to perform the method disclosed herein is provided. The device may include a memory and a processing circuit system coupled to the memory. BRIEF DESCRIPTION OF THE DRAWINGS

[0009] The accompanying drawings, which are incorporated herein and form a part of the specification, illustrate various embodiments.

[0010] Figure 1A An example communication system according to an embodiment is shown.

[0011] Figure 1B An example communication system according to an embodiment is shown.

[0012] Figure 1C An example communication system according to an embodiment is shown.

[0013] Figure 1D An example communication system according to an embodiment is shown.

[0014] Figure 2 The paired nodes of the contact center according to the fourth embodiment are shown.

[0015] Figure 3A A collection of nodes of a communication system is shown.

[0016] Figure 3B An example daisy-chain node configuration is shown.

[0017] Figure 3C A collection of nodes of a communication system is shown.

[0018] Figure 3D A collection of nodes of a communication system is shown.

[0019] Figure 4 is a flow chart illustrating a process according to an embodiment.

[0020] Figure 5 is a flow chart illustrating a process according to an embodiment.

[0021] Fig. 6Ais a flow chart illustrating a process according to an embodiment.

[0022] Figure 6B is a flow chart illustrating a process according to an embodiment.

[0023] Figure 7 is a flow chart illustrating a process according to an embodiment.

[0024] Figure 8 is a flow chart illustrating a process according to an embodiment.

[0025] Fig. 9 is a flow chart illustrating a process according to an embodiment.

[0026] Fig.10 is a flow chart illustrating a process according to an embodiment.

[0027] Fig.11 is a flow chart illustrating a process according to an embodiment.

[0028] Fig.12 is a flow chart illustrating a process according to an embodiment.

[0029] Fig.13 is a block diagram of a node according to an embodiment.

[0030] Fig.14 A process according to an embodiment is shown. DETAILED DESCRIPTION

[0031] Figure 1A An example communication system 100 is shown. In this example, the communication system 100A is a contact center system. Figure 1A As shown, the communication system 100A may include a central switch 110. The central switch 110 may receive incoming contacts (e.g., callers) or support outbound connections to contacts via a telecommunications network (not shown). The central switch 110 may include contact routing hardware and software to help route contacts among one or more contact centers, or to one or more private branch exchanges (PBXs) and / or automatic call distributors (ACDs) or other queuing or switching components, including other Internet-based, cloud-based, or otherwise networked contact-agent hardware or software-based contact center solutions.

[0032] If there is only one contact center, or only one PBX / ACD routing component, in the communication system 100, the central switch 110 may not be necessary. If more than one contact center is part of the communication system 100, each contact center may include at least one contact center switch (e.g., contact center switches 120A and 120B). Contact center switches 120A and 120B may be communicatively coupled to the central switch 110. In an embodiment, a topology of various routing and network components may be configured to implement a contact center system.

[0033] Each contact center switch of each contact center may be communicatively coupled to a plurality of agents (or "agent pools"). Each contact center switch may support a certain number of agents (or "seats") logged in simultaneously. At any given time, a logged in agent may be available and waiting to be connected to a contact, or a logged in agent may be unavailable for a variety of reasons, such as being connected to another contact, performing some post-call function (such as recording information about the call), or taking a break.

[0034] exist Figure 1A In the example of FIG. 1 , the central switch 110 routes the contact to one of the two contact centers via the contact center switch 120A and the contact center switch 120B, respectively. Each of the contact center switches 120A and 120B is shown with two agents, respectively. Agents 130A and 130B can log in to the contact center switch 120A, and agents 130C and 130D can log in to the contact center switch 120B.

[0035] The communication system 100A may also be communicatively coupled to integration services from, for example, third-party vendors. Figure 1A In an example of the present invention, the paired node 140 can be communicatively coupled to one or more switches in the switch system of the communication system 100, such as the central switch 110, the contact center switch 120A, or the contact center switch 120B. In some embodiments, the switch of the communication system 100A can be communicatively coupled to multiple paired nodes. In some embodiments, the paired node 140 can be embedded in a component of the contact center system (e.g., embedded in the switch or otherwise integrated with the switch). The paired node 140 can receive information about the seats (e.g., seats 130A and 130B) logged into the switch and information about incoming contacts via another switch (e.g., the central switch 110) from the switch (e.g., the contact center switch 120A), or in some embodiments, receive information from a network (e.g., the Internet or a telecommunications network) (not shown).

[0036] The contact center may include multiple pairing nodes. In some embodiments, one or more pairing nodes may be components of the pairing node 140, or one or more switches (such as the central switch 110 or the contact center switches 120A and 120B). In some embodiments, the pairing node may determine which pairing node may handle the pairing of a particular contact. For example, the pairing node may alternate between enabling pairing via a behavioral pairing (BP) strategy and enabling pairing using a first-in, first-out (FIFO) strategy. In other embodiments, a pairing node (e.g., a BP pairing node) may be configured to simulate other pairing strategies.

[0037] Figure 1B A second example communication system 100B is shown. Figure 1B As shown, the communication system 100B may include one or more agent endpoints 151A, 151B and one or more contact endpoints 152A, 152B. The agent endpoints 151A, 151B may include an agent terminal and / or an agent computing device (e.g., a laptop computer, a mobile phone). The contact endpoints 151A, 151B may include a contact terminal and / or a contact computing device (e.g., a laptop computer, a mobile phone). Depending on the functionality of the endpoint devices, the agent endpoints 151A, 151B and / or the contact endpoints 152A, 152B may be connected to a contact center as a service (CCaaS) 170 via the Internet or a public switched telephone network (PSTN).

[0038] Figure 1C An example communication system 100C is shown with an example configuration of a CCaaS 170. For example, the CCaaS 170 may include multiple data centers 180A, 180B. The data centers 180A, 180B may be physically separated and may even be located in different countries and / or continents. The data centers 180A, 180B may communicate with each other. For example, one data center may be a backup for another data center; thus, in some embodiments, only one data center 180A or 180B receives the agent endpoints 151A, 151B and the contact endpoints 152A, 152B at a time.

[0039] Each data center 180A, 180B includes a web demilitarized zone device 171A and 171B, respectively, which is configured to receive agent endpoints 151A, 151B and contact endpoints 152A, 152B, which are communicatively connected to CCaaS via the Internet. The web demilitarized zone (DMZ) devices 171A and 171B can operate outside the firewall to connect with the agent endpoints 151A, 151B and contact endpoints 152A, 152B, while the remaining components of the data center 180A, 180B can be within the firewall (except for the phone DMZ devices 172A, 172B, which can also be outside the firewall). Similarly, each data center 180A, 180B includes a phone DMZ device 172A and 172B, respectively, which is configured to receive agent endpoints 151A, 151B and contact endpoints 152A, 152B, which are communicatively connected to CCaaS via the PSTN. The phone DMZ devices 172A and 172B may operate outside a firewall to connect with the agent endpoints 151A, 151B and contact endpoints 152A, 152B, while the remainder of the data center 180A, 180B (excluding the web DMZ devices 171A, 171B) may be located inside the firewall.

[0040] In addition, each data center 180A, 180B may include one or more nodes 173A, 173B and 173C, 173D, respectively. All nodes 173A, 173B and 173C, 173D may communicate with web DMZ devices 171A and 171B, respectively, and with phone DMZ devices 172A and 172B, respectively. In some embodiments, only one node in each data center 180A, 180B may communicate with web DMZ devices 171A, 171B and phone DMZ devices 172A, 172B at a time.

[0041] Each node 173A, 173B, 173C, 173D may have one or more pairing modules 174A, 174B, 174C, 174D, respectively. Figure 1A Similar to the pairing module 140 of the communication system 100A of FIG. 1 , the pairing modules 174A, 174B, 174C, 174D can pair contacts with agents. For example, the pairing module can alternate between enabling pairing via a behavioral pairing (BP) module and enabling pairing using a first-in-first-out (FIFO) module. In other embodiments, a pairing module (e.g., a BP module) can be configured to emulate other pairing strategies.

[0042] Now go to Figure 1D , the disclosed CCaaS communication system (eg, Figure 1Band / or 1C) can support multi-tenancy so that multiple contact centers (or contact center operations or businesses) can operate in a shared environment. That is, the disclosed CCaaS communication system can handle multiple tenants, each tenant having its own non-overlapping set of agents, where each agent only interacts with contacts of a single tenant. Figure 1D The CCaaS 170 shown in FIG. 1 includes two tenants 190A and 190B. Return to Figure 1C For example, multiple tenants may be supported by node 173A supporting tenant 190A and node 173B supporting 190B. In another embodiment, data center 180A supports tenant 190A and data center 180B supports tenant 190B. In another example, multiple tenants may be supported by shared machines or shared virtual machines; such as node 173A may support both tenants 190A and 190B, and similarly so may nodes 173B, 173C, and 173D.

[0043] In other embodiments, the system may be configured for a single tenant within a dedicated environment, such as a private machine or private virtual machine.

[0044] Figure 2 An example paired node 200 (ie, for example, Figure 1A The L3 paired node 140 of the embodiment, or the nodes 173A, 173B, 173C, 173D that can be implemented using the paired node 200). In the illustrated embodiment, the paired node 200 includes a memory 210 (e.g., a random access memory RAM), such as a dynamic RAM (DRAM) or a static RAM (SRAM), for storing contact center information, the contact center information identifying: (i) a set of contact identifiers (IDs) associated with contacts available for pairing (i.e., contacts waiting to be connected to an agent) and (ii) a set of agent IDs associated with agents available for pairing. In some embodiments, the contact center information includes: i) for each contact ID, metadata of the contacts associated with the contact ID (the metadata may include state information indicating whether the contact is available (i.e., waiting to be paired), a score assigned to the contact, and / or information about the contact) and ii) for each agent ID, metadata of the agents associated with the agent ID (the metadata may include state information indicating whether the agent is available, a score assigned to the agent, and / or information about the agent).

[0045] Exemplary information about contacts and / or agents that may be stored in memory 210 and associated with contact IDs or agent IDs includes: attributes, arrival times, hold times or other duration data, estimated wait times, historical contact-agent interaction data, agent percentiles, contact percentiles, states (e.g., “available” when a contact or agent is waiting to be paired, “abandoned” when a contact is disconnected from the contact center, “connected” when a contact is connected to an agent or an agent is connected to a contact, “completed” when a contact has completed an interaction with an agent, “unavailable” when an agent is disconnected from the contact center), and patterns associated with agents and / or contacts.

[0046] The paired node 200 also includes several modules (software and / or hardware components) (e.g., microservices), including a contact detector 202 and an agent detector 204. The contact detector 202 is operable to detect an available contact (e.g., the contact detector 202 may communicate with a switch that signals the contact detector 202 when a new contact calls the contact center), and, in response to detecting an available contact, stores at least a contact ID associated with the detected contact in the memory 210 (the aforementioned metadata may also be stored in association with the contact ID). Similarly, the agent detector 204 is operable to detect when an agent becomes available, and, in response to detecting that an agent becomes available, stores at least an agent identifier uniquely associated with the detected agent in the memory 210 (metadata related to the identified agent may also be stored in association with the agent ID). Thus, once a contact / agent becomes available, the memory 210 is updated to include the corresponding contact / agent identifier and status information indicating that the contact / agent is available. Thus, at any given point in time, the memory 210 will contain a set of zero or more contact identifiers, each of which is associated with a different contact waiting to be connected to an agent, and a set of zero or more agent identifiers, each of which is associated with a different available agent.

[0047] The pairing node 200 also includes other modules (e.g., microservices), including: (i) a contact / agent (C / A) batch selector 220, whose function is to identify (e.g., based on state information) a set of available contacts and agents for pairing, and to provide state updates (i.e., modify state information) for the contacts and agents after selecting them for pairing; and (ii) a C / A pairing evaluator 221, whose function is to evaluate information associated with available contacts and information associated with available agents in order to propose contact-agent pairings. Figure 2As shown, the C / A batch selector 220 communicates with the memory 210 so as to be able to read the contact center information stored therein (e.g., a set of contact IDs, each of which identifies an available contact, and a set of agent IDs, each of which identifies an available agent) from the memory 210. In one embodiment, the C / A batch selector 220 is configured to occasionally (e.g., periodically) read the memory 210 to obtain a list of available contacts and available agents based on the states associated with the agents and contacts listed in the memory 210. In addition, the C / A batch selector 220 is in communication with the C / A pairing evaluator 221, and after obtaining the list of available contacts and available agents, the C / A batch selector 220 may send the list to the C / A pairing evaluator 221 (e.g., send the contact ID and the agent ID to the C / A pairing evaluator 221).

[0048] After the C / A pairing evaluator 221 receives the set of contact IDs and agent IDs from the C / A batch selector 220, the C / A pairing evaluator 221 may read further information about the received contact IDs and agent IDs from the memory 210. The C / A pairing evaluator 221 uses the read information to identify and suggest agent-contact pairings for the received contact IDs and agent IDs based on a pairing strategy, which may result in no contact / agent pairing, a single contact / agent pairing, or multiple contact-agent pairings depending on the pairing strategy used and the available contacts and agents.

[0049] After identifying the contact / agent pairs, the C / A pair evaluator 221 sends the set of contact / agent pairs to the batch selector 220. The C / A batch selector 220 provides the set of contact / agent pairs to the contact / agent connector 222 (e.g., if the contact associated with contact ID C12 and the agent associated with agent ID A7 are paired, the C / A batch selector 220 provides these contact / agent IDs to the contact / agent connector 222). If the pairing process results in one or more contact / agent pairs, then for each contact / agent pairing, the C / A batch selector 220 transmits the updated state associated with each contact ID and each agent ID in the one or more contact / agent pairs to the memory 210, and then associates it with each contact ID and agent ID. Thus, the memory 210 retains the contact ID and agent ID for future analysis.

[0050] The function of the contact / agent connector 222 is to connect the identified agent with the paired identified contact. In addition, the C / A connector 222 transmits the updated state associated with each contact ID and each agent ID in one or more contact / agent pairs to the memory 210, and then associates it with each contact ID and agent ID.

[0051] Thus, in one embodiment, the paired node 200 provides an asynchronous polling process, wherein the memory 210 provides a central repository that is read and updated by the contact detector 202, the agent detector 204, the C / A batch selector 220, the C / A pairing evaluator 221, and the C / A connector 222. Thus, the objects for each agent and contact are not moved between the microservices of the paired node 200; instead, the identifiers associated with the objects are transmitted between the contact detector 202, the agent detector 204, the memory 210, the C / A batch selector 220, the C / A pairing evaluator 221, and the C / A connector 222. This process saves bandwidth, processing power, memory associated with each microservice, and is more convenient than traditional event-based paired nodes.

[0052] As described above, it is advantageous for a communication system (such as, for example, the communication systems 100A, 100B, 100C, 100D) to achieve high availability. Therefore, in the embodiments disclosed herein, an active-standby redundancy deployment model is adopted.

[0053] For example, in one possible embodiment, Figure 3A A communication system 300A including four nodes (node ​​1, node 2, node 3, and node 4) is shown. Each of these nodes can be an instance of a paired node 200. When there is no failure in the communication system, each of the four nodes can communicate with each of the other three nodes, such as Figure 3A In this example, only one of the four nodes is an active node, while the remaining three nodes act as standby nodes in the event that, for example, the active node fails. The active node is responsible for delivering communication services (e.g., pairing contacts with agents as described above), while one or more standby nodes are ready to take over service responsibilities in the event that the active node fails.

[0054] In a second possible embodiment, the nodes are logically arranged in a linear hierarchy 300B (also known as a "daisy chain topology"), such as Figure 3BAs shown, the leftmost node (node ​​3) is the active node, the node immediately to the right of the active node is the first backup node (node ​​1 in this example), the node immediately to the right of the first backup node is the second backup node, and the node immediately to the right of the second backup node is the third backup node. In a daisy chain topology, if the current active node fails, the first backup node becomes the new active node, if the current active node fails and the first backup node fails, the second backup node becomes the new active node, and if the current active node fails and both the first and second backup nodes fail, the third backup node becomes the new active node. This logical configuration is exemplary because the communication system can have any number of backup nodes. In addition, with Figure 3A compared to, Figure 3B The linear hierarchy 300B may be more efficient and reduce the computational load of the active node.

[0055] Furthermore, in one embodiment, in the communication system 300C, the memory modules of each node are arranged in a linear hierarchy, while the "arbitrator" modules of each node are arranged in a mesh topology, such as Figure 3C In a first example of a mesh topology, each arbitrator may be configured to communicate with each other's arbitrators regardless of which node is active.

[0056] like Figure 3D In the second example of the star topology shown, in the communication system 300D, the arbitrator of the active node can be configured to communicate with each arbitrator of any passive node; but the arbitrator of the passive node may not be configured to communicate with the arbitrators of other passive nodes. For example, when node 1 is the active node, arbitrator 1 can be in a star configuration with each other arbitrator, where arbitrator 1 is configured to communicate directly with arbitrator 2, arbitrator 3, and arbitrator 4. That is, when node 1 is the active node, arbitrator 2 will not communicate with arbitrator 3 or arbitrator 4, arbitrator 3 will not communicate with arbitrator 2 or arbitrator 4, and arbitrator 4 will not communicate with arbitrator 2 or arbitrator 3. Therefore, this second example of a star configuration of communications among arbitrators 1, 2, 3, and 4 can be more efficient and reduce the computational load of each passive arbitrator. Figure 3D In, synchronization between memory modules of a node can occur according to a linear topology.

[0057] In order for the standby node (e.g., node 1) to successfully and quickly take over the service responsibility, the standby node needs to maintain a copy of certain service information stored in the active node memory in its memory (e.g., memory 210 of node 200), such as, for example, contact attributes, seat attributes, etc. Such service information is usually highly dynamic (e.g., frequently changed) and has a large volume, especially in large communication systems. Therefore, a data replication mechanism from the memory of the active node to the memory of the standby node is required to implement such a high-availability communication system.

[0058] In one embodiment, the data replication mechanism generally includes the following steps: 1) when the active node performs an action, the active node stores the information block generated by the action in its service information storage device (e.g., the database and / or memory 210 of the active node); 2) the active node sends a copy of the information block to the standby node; and 3) when the standby receives the information block, it updates its local copy of the service information accordingly (e.g., in the service information storage device, database and / or memory 210 of the passive node).

[0059] In addition, when multiple standby nodes are configured in the system, a star topology or a daisy chain topology can be used to implement such data replication. In a star topology, the active node "pushes" service information updates to all standby nodes configured in the system so that each passive node has an updated service information storage device (e.g., the database and / or memory 210 of the active node).

[0060] In an embodiment using the daisy chain topology described above, when the active node is updating the service information storage device (e.g., database and / or memory 210) of the passive node, the active node may only provide data updates to the first standby node. In this embodiment, the first standby node then propagates the update to the second standby node, the second standby node propagates the update to the third standby node, and so on.

[0061] That is, the active node will form the head of the daisy chain 300 and will only send information update messages to the backup nodes that are logically "directly" connected to the active node (i.e., node 3 in this example). Each time backup node 1 receives an information update message (e.g., updated service information or an action identifier that enables node 1 to generate updated service information, as described below) from the active node, node 1 will update its own local copy of the service information and forward (relay) the information update to node 4, which is the "next" backup node after node 1 in the daisy chain. Similarly, backup node 4 will perform the same local update and then forward operations so that the same service information update will propagate along the daisy chain until it reaches the end of the daisy chain (node ​​2 in this example). The advantage of this daisy chain topology is that no matter how many backup nodes are configured in the system, the active node only needs to send an information update message to one backup node.

[0062] Another advantage is that the daisy-chain topology makes reconfiguration of the high availability system during operation (e.g., scaling up or down) very efficient. For example, suppose a user decides to scale up its high availability capabilities by adding a new standby node during operation. With the daisy-chain topology, the user is able to simply add the new standby node to the end of the daisy-chain topology, or insert the new standby node into the middle of the daisy-chain topology without having to make high-bandwidth changes from the active node to resynchronize with another standby node. Similarly, individual active or standby nodes can be temporarily taken offline for maintenance and then reinserted into the system without requiring downtime for the contact center system. In a traditional star topology, the active node would reboot or require a software update while the topology is reconfigured; if used in a contact center, the contact center would need to be taken offline. The daisy-chain topology allows the reconfiguration of the topology to occur while the contact center is online.

[0063] In another embodiment, in addition to or instead of using the above-mentioned daisy chain propagation technology, an "action synchronization" mechanism can also be used to synchronize the memory modules of multiple nodes. With action synchronization, unlike the active node sending an information update message including an information block generated based on the active node performing an action (i.e., a process including one or more steps) to the standby node, the active node sends an information update message including an action identifier that identifies the action. After receiving the information update message, the standby node performs the identified action, resulting in the local copy of its service information (i.e., the information block) being completely changed, thereby achieving the same effect as traditional data replication.

[0064] In some embodiments, before the action synchronization method can be used, the memory of the standby node needs to be synchronized with the memory of the active node so that the standby node has the same service information as the active node (e.g., a "brain dump", as described below with respect to Fig.14Further discussed). Once the standby node is synchronized with the active node via the currently disclosed "brain dumping" method, the active node is able to start using the application replication method. Therefore, as an example, assume that the active node has created 1000 seat objects and 50 call objects. In this case, the active node can first provide instructions to the standby node to create all 1000 seat objects and all 50 call objects, wherein all parameters are the same as the parameters currently existing on the active node, so that the memory of the standby node will be synchronized with the memory of the active node. After completing this "brain dumping", if the active node performs an action using a specific parameter set, and the execution of this action generates a new call object, the active node only copies its data to the standby node by sending an action identifier and a parameter set to the standby node, which will trigger the standby node to perform the identified action using the parameter set, which will cause the standby node to create a new call object in its memory, which is the same as the call object created by the active node in the memory of the active node. In this way, the memory of the standby node can be synchronized with the memory of the active node.

[0065] The advantage of the action synchronization method is that it uses fewer resources than traditional methods because less data is sent from the active node. The information update message identifying the action is much smaller than the data change (information block) generated by the action. For example, the information update message identifying the action "create a new call" can be conveyed using a message (e.g., 12 bytes), while the new call object generated by this action can have a relatively much larger size (e.g., several thousand bytes (KB)). Therefore, for the same system size and load level, the use of action synchronization can potentially significantly reduce the amount of synchronization business that the active node needs to send to the standby node. This reduction in business can greatly help system scalability because it saves CPU cycles and network bandwidth on the active node.

[0066] Another advantage is that information update messages identifying actions can be transmitted from the active node to the standby node more quickly (e.g., on the order of nanoseconds or microseconds) than conventional active-standby systems that use information block data transmission, which require seconds or tens of seconds for the standby node to receive updates from the active node. In addition, the action synchronization method is also faster because the information update message can be transmitted from the active node to the passive node while the active node itself is still processing the information update message. Therefore, this is different from conventional systems - in which the standby node must first wait for the active node to process the operation, create a new information state, and send the new information state to the standby node. In this way, the standby node can receive or even begin processing the action and update its own memory / state information before the active node completes. This is also helpful if the health of the active node begins to degrade; the standby node can have accurate memory / state information even if the active node's memory fails while executing the action.

[0067] Another advantage is that the action synchronization method reduces the possibility of data corruption on the standby node due to network problems (such as reconnection and data loss) on the synchronization business. In order to prevent data corruption (e.g., partial data update), traditional data replication usually needs to adopt complex data integrity protection, such as cyclic redundancy check (CRC), forward error correction (FEC) encoding, to help detect and recover synchronization business data loss. With action synchronization, this is less problematic because the action identifier sent from the active node may have built-in semantics, and the standby node can easily verify its data integrity without any additional data integrity protection. If an incomplete or damaged action identifier is received, the standby node will automatically find that the action identifier is not applicable and discard it. This may cause a slight out-of-sync situation for the objects involved, but will not cause data corruption on the standby node. The system is highly fault-tolerant, so if the standby node has slightly outdated state information for a contact object or an agent object, the standby node can still easily recover the object if necessary. Therefore, the present disclosure does not need to "brain dump" every time an imperfect action ID occurs.

[0068] As described above in the Summary of the Invention section, in a system having several nodes, only one node should be used as an active node at any given time, while the other nodes act as backup nodes, so it is advantageous to have an automatic mechanism that enables the nodes to, among other things, determine which node will become the active node, as well as determine the priority of each backup node (e.g., the position of each backup node in the daisy chain topology). To this end, Figure 2As shown, each node may have an arbitrator module 244 (or simply referred to as "arbitrator 244"). The arbitrator module has low requirements on the node and can therefore be in a mesh or star communication topology with other arbitrators, as described above with respect to Figure 3C As described above, even in a daisy chain topology, data replication / action synchronization techniques (see also Figure 3C ).

[0069] Figure 4 is a flow chart illustrating a process 400 performed by each arbitrator 244 for determining whether the node on which the arbitrator is running should be one of an active node or a standby node, according to an embodiment. The process 400 may begin at step s402.

[0070] Step s402 includes the arbitrator obtaining (e.g., from a configuration file) the address of each other configured arbitrator (e.g., an IP address assigned to an interface of a node on which another arbitrator is running). For example, prior to performing process 400, each configured arbitrator is provided with a configuration file that lists all configured arbitrators, their corresponding IP addresses, and corresponding priority values. Step s402 also includes the arbitrator initializing a counter (e.g., setting i=0) and setting a threshold value (T). For example, the threshold value can be 100 ms, 200 ms, 250 ms, 300 ms, 500 ms, 1 second, 2 seconds, etc. In some embodiments, a low priority value indicates a high priority. Therefore, an arbitrator with a priority value of 0 has a higher priority than an arbitrator with a priority value of 1.

[0071] Step s404 includes the arbitrator transmitting an "'Are you active' message" to each other arbitrator and setting a timer to expire after some amount of time has passed. The "Are you active" message may be an application layer message or a transport layer control message (e.g., a Transmission Control Protocol (TPC) synchronization (SYN) message).

[0072] Step s406 includes the arbitrator waiting for a positive acknowledgement (ACK) or timer expiration. If an ACK is received, process 400 proceeds to step s408, where the arbitrator determines that it is one of the backup arbitrators (e.g., the arbitrator determines that the node it is running on is a backup node). If the timer expires before any ACK is received, process 400 proceeds to step s410.

[0073] Step s410 includes the arbitrator increasing a counter by 1 (i.e., ++i) and then comparing the counter to T. If the counter is greater than T, the process proceeds to step s412, otherwise it returns to step s404. Step s412 includes the arbitrator determining that it is an active arbitrator (e.g., the arbitrator determines that the node on which it is running is the active node). In some embodiments, step s412 also includes the arbitrator assigning a virtual IP (VIP) address to the network interface of the node on which the arbitrator is running. Additionally, in embodiments where there is a router or switch on the same network as the active arbitrator, the active arbitrator may cause the router / switch to update its address resolution protocol (ARP) cache so that the ARP cache associates the VIP address with the media access control (MAC) address of the network interface. In this way, an IP protocol data unit (PDU) addressed to the VIP address will be sent by the switch / router to the node on which the active arbitrator is running.

[0074] In some embodiments, before executing process 400, the arbitrator must verify that all critical modules are up and running on the same node on which the arbitrator is running. In one embodiment, this is achieved by providing the arbitrator with a list of critical modules (e.g., a list of module IDs) and having each critical module insert an "I'm ready" message into a shared message queue stored in memory 210; optionally, the "I'm ready" message also contains the module ID of the module. The arbitrator is able to read the messages stored in the shared message queue. Therefore, the arbitrator is able to determine whether each critical module has inserted its "I'm ready" message into the shared message queue. In one embodiment, as a result of determining that each critical module has inserted its "I'm ready" message into the shared message queue, the arbitrator immediately executes process 400.

[0075] In addition, in some embodiments, the arbitrator is configured to receive heartbeat messages from all modules in the node (e.g., Figure 2 ), including heartbeat messages from both critical and non-critical modules. Thus, the arbitrator can determine when a module has missed sending a heartbeat message. Based on the arbitrator's determination that a module has missed sending a heartbeat message, the arbitrator can determine (1) whether the module itself should be restarted, (2) whether the arbitrator should ignore the missed message and (e.g., the arbitrator can wait a threshold amount of time before taking a different action), or (3) whether the arbitrator should force its associated node to restart (e.g., if the module is critical). Thus, if the arbitrator forces its associated node to restart, the node can rejoin the topology via process 400.

[0076] Additionally, the arbitrator may establish a UDP port with each other node in the topology if the arbitrator determines that it is on an active node after executing process 400. A passive node may receive broadcasts on its UDP port, but cannot retain, analyze, or listen to the broadcasts while it is passive.

[0077] In some embodiments, after executing process 400, if the arbitrator determines that it is on the active node, the arbitrator will execute process 500 (see Figure 5 ) and process 600 (see FIG. 6 ), otherwise the arbitrator is on the standby node and performs process 800 (see Figure 8 ) and process 900 (see Fig. 9 ).

[0078] Figure 5 is a flow chart illustrating a process 500 that may be performed by each active arbitrator according to an embodiment. The process 500 may begin at step s502.

[0079] Step s502 includes the arbitrator listening for a "Are you active" message. In one embodiment, this includes the arbitrator creating a socket and binding its IP address and port number to the socket. If a "Are you active" message is received, the process proceeds to step s504.

[0080] Step s504 comprises the arbitrator determining the priority value of the node from which the message was sent.

[0081] Step s506 includes the arbitrator adding the node and its priority value to a node priority list. For example, the following table shows an example priority list:

[0082] Table 1 - Example Node Priority List

[0083]

[0084] In the above example, the active node is node 3, and nodes 1, 2, and 4 are all standby nodes. Therefore, the arbitrator that performs process 500 runs on node 3.

[0085] Step s508 includes the arbitrator transmitting the priority list to each standby node on the priority list. In this way, each standby node will be able to determine its position in the linear hierarchy.

[0086] Fig. 6A6 is a flow chart illustrating a process 600A that may be performed by each active arbitrator according to an embodiment. Process 600A may begin at step s602. Step s602 includes the arbitrator reevaluating the priority list (i.e., changing the priority list when it is determined that a change is needed). If the priority list has been changed, the process proceeds to step s604, otherwise to step s606. Step s604 includes the arbitrator sending the new priority list to each standby node on the list. In this way, each standby node will be able to determine its new position (if any) in the updated linear hierarchy. Step s606 includes the arbitrator waiting for X seconds, where X is a configurable amount of time (e.g., 30 seconds). After determining that the configured amount of time has passed, the arbitrator performs process 600 again. In this way, the arbitrator occasionally (e.g., periodically) reevaluates the priority list.

[0087] Figure 6B 600B is a flow chart showing an alternative process 600B to process 600A. Wherein, process 600A is a periodic re-evaluation of a priority list, while process 600B is an event-based re-evaluation of a priority list. Process 600B may start from step s610 and may be performed by an active arbitrator. Step 610 includes the arbitrator determining whether there is a change to the contact center topology, such as one or more nodes restarting, one or more nodes joining the topology, or one or more existing nodes being removed from the topology. If there is a change in the topology, the process proceeds to step s612, otherwise to step s618, and then the process ends. Step s612 includes the arbitrator re-evaluating the priority list (i.e., changing the priority list when it is determined that a change is needed). Step s614 includes determining whether the priority list has changed. If the priority list has changed, the process proceeds to step s616, otherwise it proceeds to step s618, and the process ends. For example, an event-based system (such as process 600B) may be more computationally efficient than a periodic re-evaluation of a priority list (as in process 600A).

[0088] Figure 7s602 according to an embodiment. The process 700 may start from step s702. Step s702 includes the arbitrator obtaining a set of one or more performance measurements for each backup node on the priority list. For each backup node, the set of performance measurements for the backup node may include: a latency value, a processor utilization value, a memory utilization value, etc. In one embodiment, the latency value is the average round trip time (RTT) between the active node and the backup node. The average RTT value can be determined using the Internet Control Message Protocol (ICMP). For example, for each backup node on the priority list, the active node sends N ICMP echo request messages (also known as "ping" messages) to the backup node, where N>0. For each ping message sent, the arbitrator records the time it was sent and records the time it received a reply to the ping message. In this way, the arbitrator can calculate N RTTs, and then can calculate the average of these N RTTs. If the arbitrator does not receive a response to any ping messages sent to a particular backup node, then in some embodiments the arbitrator may remove the backup node from the priority list or set the average RTT value for this backup node to a high value (e.g., 999999999).

[0089] Step s704 includes the arbitrator assigning a priority value to each backup node based on the obtained measurement value. For example, assuming that the obtained measurement value consists of the average RTT of each backup node, the arbitrator can assign the priority value based on the average RTT value. For example, the backup node with the smallest RTT value will be assigned priority 1, the backup node with the second smallest RTT value will be assigned priority 2, the backup node with the third smallest RTT value will be assigned priority 3, and so on.

[0090] Step s706 comprises the arbitrator determining whether any priority values ​​have changed since the last time the priority list was propagated to each backup node. If the priority values ​​have changed, the process proceeds to step s708.

[0091] Step s708 comprises the arbitrator updating the priority list with the new priority value (in addition, as described above, if the standby node does not respond to any ping messages, then in some embodiments the standby node may be removed from the priority list).

[0092] Figure 8is a flow chart illustrating a process 800 performed by each standby arbitrator according to an embodiment. Process 800 may begin at step s802. Step s802 includes the arbitrator listening to a priority list from an active node. For example, in one embodiment, when the standby arbitrator sends its "are you active" message to the active arbitrator, the standby node initiates and establishes a TCP connection with the active arbitrator, and in step s802, the standby arbitrator waits for the active arbitrator to send a priority list via the established TCP connection. When the priority list is received, the process proceeds to step s804. Therefore, although the nodes may be logically configured to synchronize actions in a daisy chain topology, the arbitrators may be logically configured as a star or mesh topology, as described herein.

[0093] Step s804 includes the backup arbitrator setting its predecessor node and successor node. The predecessor node is the node immediately to the left of the backup arbitrator in the linear hierarchy ("daisy chain"), and the successor node is the node immediately to the right of the backup arbitrator. Figure 3B For example, when process 800 is performed by a standby arbitrator running on Node 4, the priority list received from the active node (Node 3) will indicate that Node 1 is the leader node and Node 2 is the successor node.

[0094] Step s806 includes the standby arbitrator listening to two things: i) an information update message transmitted by its predecessor node for synchronizing the standby arbitrator's memory with the memory of its predecessor node (e.g., data replication or action synchronization as discussed herein) and ii) a new priority list transmitted by the current active node.

[0095] If a new priority list is received, the standby process performs step s806 again, and if an information update message is received, the standby arbitrator performs step s810.

[0096] Step s810 includes the standby node updating its local database (e.g., memory 210) based on the content of the information update message. For example, if the information update message includes an action identifier and a set of parameter values, the standby arbitrator causes the standby node running thereon to use the set of parameter values ​​to perform the identified action, which will result in an update of the information stored in the local database of the standby node. Assuming there is no failure, after executing the action, the local database on the standby node should be the same as the local database on the active node. In this way, the standby node will maintain data synchronization with the active node. This is advantageous because if the standby node must take over the active node (e.g., due to a network failure or an active node failure), the standby node will be able to immediately take over where the active node left off. Additionally, step s810 includes the standby arbitrator propagating (e.g., forwarding or relaying) the information update message to its child nodes so that the child nodes maintain data synchronization with the active node.

[0097] Fig. 9 s900 is a flow chart illustrating a process 900 performed by each backup arbitrator according to an embodiment. The process 900 may begin at step s902. Step s902 includes the backup arbitrator determining whether the active arbitrator is reachable. If the active arbitrator is not reachable, the process 900 proceeds to step s904.

[0098] For example, step s602 includes the active arbitrator periodically sending heartbeat messages to the standby arbitrator via a TCP connection, and if such heartbeat messages are not received within a certain amount of time from the last time a heartbeat message expected was received, the standby arbitrator can declare that the active arbitrator is no longer reachable. As another example, the standby arbitrator is configured to periodically send heartbeat messages to the active arbitrator via a TCP connection, and if a heartbeat response message is not received from the active arbitrator within a certain amount of time, the standby arbitrator can declare that the active arbitrator is no longer reachable. That is, the active arbitrator can communicate bidirectionally with each standby node so that each standby node can determine whether the active arbitrator is reachable according to step s902.

[0099] Step s904 includes the standby arbitrator removing the active arbitrator from the latest priority list.

[0100] Step s906 includes the backup arbitrator determining whether it is the next active arbitrator in the queue to become active (i.e., whether the priority list indicates that it has the highest priority). If the backup arbitrator determines that it is the next active arbitrator in the queue to become active, then the backup arbitrator performs step s412 (as described above) and performs processes 500 and 600 because it is now the active arbitrator, otherwise process 900 may proceed to step s908.

[0101] Step s908 includes the standby arbitrator establishing (eg, initiating or accepting) a connection (eg, a TCP connection) with the standby node of the next-to-be active arbitrator in the queue (ie, now the new active arbitrator). After step s908, process 900 may return to step s902.

[0102] In some cases, two arbitrators can declare themselves the active arbitrator. For example, suppose Figure 3B , and assume that Node 1 and Node 2 are located in one data center (Data Center-1), while Node 3 and Node 4 are located in another data center (Data Center-2), and further assume that a network failure occurs such that no node in Data Center 1 can reach any node in Data Center 2, and vice versa. In this case, Node 3 will remain "active" while Node 1 will transition from standby to active. Thus, there will be two active arbitrators at the same time. To recover from this situation after the network failure is resolved, and nodes in Data Center 1 can now reach nodes in Data Center 2, and vice versa, each active arbitrator may perform process 1000 (see Fig.10 ).

[0103] Process 1000 may start at step s1002. Step s1002 includes an active arbitrator sending a weight value message (e.g., a node weight received from its configuration file) to all nodes in its topology at a UDP port, and the active arbitrator may be listening for other messages at the UDP port. If another active arbitrator receives the message, the second active arbitrator transmits a response message that includes the weight value assigned to the second active arbitrator. For example, the second active arbitrator may also send a weight value message at the UDP port, which the first active arbitrator may receive. The active arbitrator that receives the message (e.g., the first active arbitrator) determines whether the weight value assigned to it is greater than the weight value contained in the response message (see step s1004). If the weight value assigned to it is not greater than the weight value contained in the response message, the active arbitrator forces the node on which it is running to perform a restart.

[0104] Fig.111 is a flow chart illustrating a process 1100 according to an embodiment, the process 1100 being performed by a first arbitrator operating on a first node (e.g., node 1) of a communication system including a second node (e.g., node 2) and a second arbitrator operating on the second node. For example, the process 1100 is a registration process. The process 1100A may begin at step s1102. Step s1102 includes transmitting a "are you active" message to the second arbitrator. Step s1104 includes receiving a response message transmitted by the second arbitrator, the response message being responsive to the "are you active" message. Step s1106 includes determining, upon receiving the response, that the first node is a standby node.

[0105] Fig.12 1 is a flow chart illustrating a process 1200 according to an embodiment, the process 1200 being performed by a first arbitrator operating on a first node of a communication system including a second node and a second arbitrator operating on the second node. The process 1200 may begin at step s1202. Step s1202 includes transmitting a first "are you active" message to the second arbitrator. Step s1204 includes detecting expiration of a timer before receiving any response to the "are you active" message. Step s1206 includes determining whether to treat the first node as an active node after detecting expiration of the timer.

[0106] Now go to Fig.14 , an exemplary process 1400 is shown according to some embodiments. The process 1400 begins at step 1410 when one or more passive nodes or standby nodes send a "brain dump" request message to an active node. The process 1400 shows an exemplary three nodes requesting a "brain dump", for example, when all nodes join the node topology at a similar time. A similar process can be followed for any number of nodes.

[0107] Step 1420 includes the active node sending a "brain dump start allowed" instruction message to the passive node with the highest priority (e.g., the standby node). The first passive node with the highest priority sends a "brain dump start" message to the active node, and the first passive node performs a complete memory state synchronization process with the active node (e.g., through data replication or action synchronization). When the complete memory state synchronization process is completed, the first passive node then sends a "brain dump complete" message to the active node.

[0108] After receiving the "brain dump complete" message from the first passive node, step 1430 includes the active node sending a "allow brain dump to start" instruction message to the passive node with the second highest priority. The second passive node sends the "brain dump start" message to the active node, and the second passive node performs a complete memory state synchronization process with the first passive node (e.g., through data replication or action synchronization). That is, the active node does not need to provide complete memory state synchronization for any node other than the first standby node with the highest priority. When the complete memory state synchronization process is completed, the second passive node then sends a "brain dump complete" message to the active node.

[0109] After receiving the "brain dump complete" message from the first passive node, step 1430 includes the active node sending a "allow brain dump to start" instruction message to the passive node with the second highest priority. The second passive node sends the "brain dump start" message to the active node, and the second passive node performs a complete memory state synchronization process with the first passive node (e.g., through data replication or action synchronization). That is, the active node does not need to provide complete memory state synchronization for any node other than the first standby node with the highest priority. When the complete memory state synchronization process is completed, the second passive node then sends a "brain dump complete" message to the active node.

[0110] After receiving the "brain dumping completed" message from the second passive node, step 1440 includes the active node sending a "allow brain dumping to start" instruction message to the passive node with the next highest priority. The third passive node sends a "brain dumping started" message to the active node, and the third passive node performs a complete memory state synchronization process with the second passive node (e.g., through data replication or action synchronization). That is, the first passive node does not need to provide complete memory state synchronization for any node except the second passive node with the highest priority. Then, when the complete memory state synchronization process is completed, the third passive node sends a "brain dumping completed" message to the active node.

[0111] For example, process 1400 may be performed in the following situations: when one or more nodes join the node topology; after a data center becomes non-operational (e.g., Figure 1C 180A, 180B in the data center); and / or after a node restart. Therefore, process 1400 provides a resource-efficient and high-precision method to synchronize the memory states of multiple nodes, wherein all nodes have approximately equal utilization.

[0112] Fig.131 is a block diagram of a node 1300 according to some embodiments. The node 1300 can be an active node or a standby node. Fig.13 As shown, the node 1300 may include: a processing circuit system (PC) 1302, which may include one or more processors (P) 1355 (e.g., one or more general-purpose microprocessors and / or one or more other processors, such as application-specific integrated circuits (ASICs), field-programmable gate arrays (FPGAs), etc.), which may be co-located in a single housing or a single data center, or may be geographically distributed (i.e., the node 1300 may be a distributed computing device); at least one network interface 1349 (e.g., a physical interface or an air interface), which includes a transmitter (Tx) 1345 and a receiver (Rx) 1347, for enabling the node 1300 to connect to a network 110 (e.g., an Internet Protocol (IP) network) The network 110 may include a network interface 1349 connected to the network 110 (physically or wirelessly) (e.g., the network interface 1349 may be coupled to an antenna arrangement including one or more antennas for enabling the node 1300 to transmit / receive data wirelessly); and a storage unit (also known as a "data storage system") 1309, which may include one or more non-volatile storage devices and / or one or more volatile storage devices. In an embodiment in which the PC 1302 includes a programmable processor, a computer-readable storage medium (CRSM) 1342 may be provided. The CRSM 1342 may store a computer program (CP) 1343 including computer-readable instructions (CRI) 1344. The CRSM 1342 may be a non-transitory computer-readable medium, such as a magnetic medium (e.g., a hard disk), an optical medium, a storage device (e.g., a random access memory, a flash memory), etc. In some embodiments, the CRI 1344 of the computer program 1343 is configured such that when executed by the PC 1302, the CRI causes the node 1300 to perform the steps described herein (e.g., the steps described herein with reference to the flowcharts). In other embodiments, the node 1300 may be configured to perform the steps described herein without code. That is, for example, the PC 1302 may consist solely of one or more ASICs. Thus, the features of the embodiments described herein may be implemented in hardware and / or software.

[0113] Summary of various embodiments

[0114] A1. A method performed by a first arbitrator running on a first node of a communication system, the communication system comprising a second node and a second arbitrator running on the second node, the method comprising: transmitting a "are you active" message to the second arbitrator; receiving a response message transmitted by the second arbitrator, the response message being responsive to the "are you active" message; and upon receiving the response, determining that the first node is a backup node.

[0115] A2. The method of embodiment A1 further comprising receiving a first priority list from a second arbitrator after determining that the first node is a backup node.

[0116] A3. The method according to embodiment A2 further includes: determining a first leading node based on information in the first priority list; and monitoring an information update message from the first leading node.

[0117] A4. The method according to embodiment A3 further includes: determining a first successor node based on the first priority list; receiving a first update message transmitted by the first predecessor node; and in response to receiving the first update message, transmitting a second update message to the first successor node.

[0118] A5. The method of embodiment A4, wherein the first update message has a payload, the second update message has a payload, and the payload of the second update message is the same as the payload of the first update message.

[0119] A6. The method described in any one of embodiments A2-A5 further includes: after receiving the first priority list, receiving a second priority list; determining a second leading node based on information in the second priority list; monitoring information update messages from the second leading node; determining a second successor node based on the second priority list; receiving an update message transmitted by the second leading node; and in response to receiving the update message transmitted by the second leading node, transmitting an update message to the second successor node.

[0120] A7. The method according to any one of embodiments A1-A6, further comprising: determining that the second arbitrator is unreachable; and as a result of determining that the second arbitrator is unreachable, determining whether to become an active arbitrator.

[0121] A8. The method of embodiment A7, further comprising: establishing a connection with a third arbitrator as a result of determining not to become the active arbitrator.

[0122] A9. The method of embodiment A8, wherein assigning a priority to the first arbitrator and determining whether to become the active arbitrator comprises comparing the priority assigned to the third arbitrator with the priority assigned to the first arbitrator.

[0123] A10. The method of embodiments A8 or A9, wherein establishing a connection with the third arbitrator comprises initiating a TCP connection with the third arbitrator (ie, transmitting a TCP SYN message to the third arbitrator).

[0124] B1. A method performed by a first arbitrator running on a first node of a communication system, the communication system comprising a second node and a second arbitrator running on the second node, the method comprising: transmitting a first "are you active" message to the second arbitrator; detecting expiration of a timer before receiving any response to the "are you active" message; after detecting expiration of the timer, determining whether to regard the first node as an active node.

[0125] B2. The method of embodiment B1, wherein determining whether to consider the first node as an active node comprises comparing a priority assigned to the first arbitrator with a priority assigned to the second arbitrator.

[0126] B3. The method of embodiment B1, wherein determining whether to consider the first node as an active node comprises comparing a counter to a threshold.

[0127] B4. The method of embodiment B3, wherein the value of the threshold is set based on a priority assigned to the first arbitrator.

[0128] B5. The method according to any one of embodiments B1-B4 further includes: after determining whether to regard the first node as an active node after detecting expiration of the timer, transmitting a second "are you active" message to the second arbitrator.

[0129] B6. The method according to any one of embodiments B1-B4 also includes: determining to regard the first node as an active node; generating (e.g., creating or updating) a priority list; and transmitting the priority list to the second arbitrator, wherein generating the priority list includes determining the priority of the second node, and the priority list indicates the priority of the second node.

[0130] B7. The method of embodiment B6, wherein determining the priority of the second node comprises obtaining a set of one or more measurements of the first node and using the set of measurements to determine the priority.

[0131] B8. The method of embodiment B7, wherein the set of measurement values ​​includes latency values ​​(eg, average RTT values).

[0132] B9. The method according to embodiment B8, wherein obtaining the delay value includes transmitting N ping messages to the second node, N>0.

[0133] B10. The method of embodiment B7, B8 or B9, wherein the set of measured values ​​includes one or both of a processor utilization value or a memory utilization value of the second node.

[0134] C1. A computer program 1343 comprising instructions 1344 which, when executed by a processing circuit system 1302 of a node, cause the node to perform a method according to any one of the above embodiments.

[0135] C2. A carrier containing the computer program according to embodiment C1, wherein the carrier is one of an electronic signal, an optical signal, a radio signal and a computer-readable storage medium 1342.

[0136] D1. A node 1300 in a communication system, the node being configured to execute the method according to any one of embodiments A1-A10 or B1-B10.

[0137] Although various embodiments are described herein, it should be understood that these embodiments are presented by way of example only and not limitation. Therefore, the breadth and scope of the present disclosure should not be limited by any of the above-mentioned exemplary embodiments. In addition, unless otherwise specified herein or clearly contradictory to the context, the present disclosure encompasses any combination of the above-mentioned elements in all possible variations thereof.

[0138] Additionally, although the processes described above and shown in the accompanying drawings are shown in the form of a sequence of steps, this is for illustration only. Therefore, it is conceivable to add some steps, omit some steps, rearrange the order of steps, and perform some steps in parallel.

Claims

1. A method (1100) performed by a first arbitrator running on a first node of a communication system, the communication system comprising a second node and a second arbitrator running on the second node, the method comprising: transmitting (s1102) a message to the second arbitrator indicating whether you are active; receiving (s1104) a response message transmitted by the second arbitrator, the response message being responsive to the message whether you are active; as well as After receiving the response, it is determined (s1106) that the first node is a standby node.

2. The method according to claim 1, further comprising: After determining that the first node is a standby node, a first priority list is received from the second arbitrator.

3. The method according to claim 2, further comprising: determining a first leading node based on the information in the first priority list; as well as Monitor the information update message from the first leading node.

4. The method according to claim 3, further comprising: determining a first successor node based on the first priority list; receiving a first update message transmitted by the first leader node; as well as In response to receiving the first update message, a second update message is transmitted to the first successor node.

5. The method according to claim 4, wherein: The first update message has a payload, The second update message has a payload, and The payload of the second update message is the same as the payload of the first update message.

6. The method according to any one of claims 2 to 5, further comprising: After receiving the first priority list, receiving a second priority list; determining a second leading node based on the information in the second priority list; monitoring an information update message from the second leading node; determining a second successor node based on the second priority list; receiving an update message transmitted by the second leading node; as well as In response to receiving the update message transmitted by the second predecessor node, an update message is transmitted to the second successor node.

7. The method according to any one of claims 1 to 6, further comprising: determining that the second arbitrator is unreachable; as well as As a result of determining that the second arbitrator is unreachable, it is determined whether to become an active arbitrator.

8. The method according to claim 7, further comprising: As a result of determining not to be the active arbitrator, a connection is established with a third arbitrator.

9. The method according to claim 8, wherein: assigning a priority to the first arbitrator, and Determining whether to become the active arbitrator includes comparing the priority assigned to the third arbitrator with the priority assigned to the first arbitrator.

10. The method according to claim 8 or 9, wherein: Establishing a connection with the third arbitrator includes: initiating establishment of a TCP connection with the third arbitrator (ie, transmitting a TCP SYN message to the third arbitrator).

11. A method (1200) performed by a first arbitrator running on a first node of a communication system, the communication system comprising a second node and a second arbitrator running on the second node, the method comprising: transmitting (s1202) a first message of whether you are active to the second arbitrator; detecting (s1204) expiry of a timer before receiving any response to the message whether you are active; After detecting said expiry of said timer, it is determined (s1206) whether said first node is considered as an active node.

12. The method according to claim 11, wherein: Determining whether to consider the first node as an active node includes comparing a priority assigned to the first arbitrator with a priority assigned to the second arbitrator.

13. The method according to claim 11, wherein: Determining whether to consider the first node as an active node includes comparing a counter to a threshold.

14. The method according to claim 13, wherein: The value of the threshold is set based on the priority assigned to the first arbitrator.

15. The method according to any one of claims 11 to 14, further comprising: After determining whether to regard the first node as an active node after detecting the expiration of the timer, a second whether you are active message is transmitted to the second arbitrator.

16. The method according to any one of claims 11 to 14, further comprising: Determining to regard the first node as the active node; generating (e.g., creating or updating) a priority list; as well as transmitting the priority list to the second arbitrator, in, Generating the priority list includes: determining the priority of the second node, and The priority list indicates the priority of the second node.

17. The method according to claim 16, wherein: Determining the priority of the second node includes obtaining a set of one or more measurement values ​​of the first node, and using the set of measurement values ​​to determine the priority.

18. The method according to claim 17, wherein: The set of measured values ​​includes a latency value (eg, an average RTT value).

19. The method according to claim 18, wherein: Acquiring the delay value includes: transmitting N ping messages to the second node, where N>0.

20. The method according to claim 17, 18 or 19, wherein: The set of measured values ​​includes: one or both of a processor utilization value or a memory utilization value for the second node.

21. A computer program (1343) comprising instructions (1344) which, when executed by processing circuitry (1302) of a node, cause the node to perform a method according to any preceding claim.

22. A carrier comprising a computer program according to claim 21, wherein: The carrier is one of an electronic signal, an optical signal, a radio signal, and a computer-readable storage medium (1342).

23. A node (1300) in a communication system, the node being configured to perform the method of any one of claims 1 to 20.