Message processing method and related device

By using the serial number management mechanism in network devices, the problem of packet loss during any broadcast message transmission is solved, the reliability and performance of the system is improved, and the reliable transmission of messages is ensured.

CN119676009APending Publication Date: 2025-03-21HUAWEI TECH CO LTD
View PDF 0 Cites 0 Cited by

Patent Information

Application Number
CN202311220847.6
Authority / Receiving Office
CN · China
Patent Type
Applications(China)
Current Assignee / Owner
Filing Date
2023-09-20
Publication Date
2025-03-21

AI Technical Summary

Technical Problem

In the prior art, anycast message is prone to packet loss due to the unreliability of the connectionless transmission protocol during transmission, resulting in abnormal system behavior or performance degradation.

Method used

By introducing a serial number management mechanism in the network equipment, it is ensured that each anycast message carries a unique serial number during transmission. The receiver determines whether packet loss occurs based on the serial number and takes appropriate measures to retransmit it.

Benefits of technology

It effectively improves the reliability and performance of the system, avoids system abnormalities caused by packet loss, and ensures reliable transmission of any broadcast messages.

✦ Generated by Eureka AI based on patent content.

Smart Images

  • Figure CN119676009A_ABST
    Figure CN119676009A_ABST
Patent Text Reader

Abstract

The embodiment of the invention provides a message processing method and a related device, and the method comprises the steps: carrying out the copying and forwarding of a first anycast message after the network equipment receives the first anycast message. A first serial number is carried in a first original message corresponding to the first anycast message, the first serial number corresponds to the first controller, and a destination address of the first anycast message points to the first controller. And copying the first anycast message to obtain a first copied message, the first copied message carrying a second serial number, the second serial number corresponding to the second controller, and the second controller being an attribution determined according to semantics of the first anycast message. The first serial number carried by the first original message is the same as the second serial number carried by the first copy message. The first serial number increases progressively as the network device sends the first original message, the second serial number increases progressively as the network device sends the first copy message, and the increasing amount of the first serial number is the same as the increasing amount of the second serial number.
Need to check novelty before this filing date? Find Prior Art

Description

Technical Field

[0001] The present application relates to the field of communication technology, and in particular to a message processing method and related devices. Background Art

[0002] Anycast, also known as selectcast, floodcast or anycast, is a new communication service defined in Internet Protocol Version 6 (IPv6). Specifically, anycast refers to a message sending method in which any node in the cluster can serve as a receiving end to receive messages. Anycast is different from the point-to-point message sending method of unicast. Anycast is a point-to-multipoint message sending method.

[0003] Currently, network devices such as switches are usually used to perform the load balancing function of the cluster. Specifically, the network device will copy and process the received anycast message, and then calculate the destination of the copied message according to certain rules and forward the copied message. The existing commonly used transport layer protocol is point-to-point reliable transmission, such as the Traffic Conditioning Profile (TCP) protocol or the Remote Direct Memory Access reliable connection (RDMA RC). The above transport layer protocol stipulates that the anycast message carries a sequence number in the original transmission path, resulting in the anycast message cannot be directly forwarded. Therefore, it is necessary to use a connectionless transmission protocol such as the User Datagram Protocol (UDP) or the Remote Direct Memory Access unreliable connection (RDMA UD) to copy and process the anycast message before forwarding it.

[0004] The applicant has found that the above connectionless transmission protocol has no reliability mechanism, and anycast messages may be lost due to packet loss or error during the transmission process, which may lead to abnormal system behavior or degradation of system performance. Summary of the invention

[0005] The present application proposes a message processing method and related device, wherein a controller determines whether packet loss occurs during the transmission of a duplicate message according to a sequence number carried by the received duplicate message, thereby avoiding abnormal system behavior or degradation of system performance due to loss of anycast messages, and effectively improving system reliability and system performance.

[0006] In a first aspect, an embodiment of the present application proposes a message processing method, which is applied to a network device, and the method includes:

[0007] The network device receives a first anycast message, where a destination address of the first anycast message points to a first controller;

[0008] The network device sends a first original message to the first controller, wherein the first original message includes the first anycast message, a destination address of the first original message points to the first controller, the first original message includes a first sequence number, the first sequence number belongs to a first sequence number group, and the first sequence number group has a corresponding relationship with the first controller;

[0009] The network device sends a first copy message to the second controller, wherein the first copy message includes the first anycast message, the destination address of the first copy message points to the second controller, the first copy message includes a second sequence number, the second sequence number belongs to a second sequence number group, the second sequence number group has a corresponding relationship with the second controller, and the first sequence number carried in the first original message is the same as the second sequence number carried in the first copy message.

[0010] In an embodiment of the present application, after receiving the first anycast message, the network device performs a copy and forwarding process on the first anycast message. The first original message corresponding to the first anycast message carries a first sequence number, the first sequence number corresponds to the first controller, and the destination address of the first anycast message points to the first controller. The first copied message obtained by copying the first anycast message carries a second sequence number, the second sequence number corresponds to the second controller, and the second controller is the place of attribution determined according to the semantics of the first anycast message. The first sequence number carried by the first original message is the same as the second sequence number carried by the first copied message. Through the above method, the second controller can determine whether packet loss occurs during the transmission of the copied message according to the sequence number carried by the received copied message. Avoid abnormal system behavior or degradation of system performance due to the loss of anycast messages. Effectively improve the reliability and system performance of the system.

[0011] In combination with the first aspect, in a possible implementation of the first aspect, the first sequence number is incremented as the network device sends the first original message; the second sequence number is incremented as the network device sends the first duplicate message. Further, the increment of the first sequence number is the same as the increment of the second sequence number. Through the above method, it is ensured that the sequence number of the original message sent by the network device and the sequence number of the duplicate message increase in sequence with the number of times the network device sends the message, so that the second controller can determine whether packet loss occurs according to the sequence number of the received duplicate message.

[0012] In combination with the first aspect, in a possible implementation of the first aspect, the network device determines that the destination of the first duplicate message is the second controller based on the semantics of the first anycast message. Specifically, the network device determines that the destination of the first duplicate message is the second controller based on the semantics of the first anycast message queried in the affiliation table, and the affiliation table includes one or more correspondences, and the correspondence includes the fields of the anycast message and the address information of the controller. The destination address of the duplicate message is determined according to the semantics of the anycast message so that the controller responsible for processing the duplicate message can directly receive the duplicate message, avoid forwarding again, improve processing efficiency, and improve system reliability and system performance.

[0013] In combination with the first aspect, in a possible implementation manner of the first aspect, the network device allocates the first sequence number group to the first controller according to configuration information of the first controller.

[0014] In combination with the first aspect, in a possible implementation of the first aspect, the configuration information of the first controller includes: a queue pair context of the first controller, the queue pair context of the first controller includes the address information of the first controller and the first sequence number group. Specifically, the network device obtains the queue pair context of the first controller, the queue pair context of the first controller includes the address information of the first controller and the first sequence number group; the network device configures a communication connection with the first controller according to the queue pair context of the first controller; the network device allocates the first sequence number group to the first controller according to the address information of the first controller.

[0015] Specifically, the first network device obtains the queue pair context (queue pair context, QPC) of the controller, and the queue pair context of the controller includes the address information of the controller and the first sequence number group. Regarding the queue pair context, queue pairs (queue pair, QP) can be established between the source end and the destination end respectively through the RDMA protocol, and the queue pair includes a queue pair identification number (queue pair context number, QPN). Then, the QP of the destination end is associated with the QP of the source end, and the association includes the QPN and address information of the specified QP counterpart. Exemplarily, after the QP of the network device establishes an association relationship with the QP of the controller, a queue pair context associated with the controller and the network device is generated, and the queue pair context of the controller includes the corresponding QPN, the address information of the controller, and the starting packet sequence number (packet sequence number, PSN). For the controller, the controller creates a queue pair context based on the network device connected to the controller. For example, in a dual-plane scenario, the controller is connected to network device #1 and network device #2. The controller creates QPC #1 for network device #1 and QPC #2 for network device #2, respectively. QPC #1 includes the address information of network device #1, and QPC #2 includes the address information of network device #2.

[0016] After the network device receives the queue pair context of the first controller sent by the controller, it configures the communication connection with the controller. Exemplarily, the controller assigns QPC#1 to network device #1, and the controller assigns QPC#2 to network device #2. After the network device receives the QPC information (the relevant information of QPC#1 or the relevant information of QPC#2), the control plane of the network device sends the QPC to the data plane of the network device, completes the QPC configuration, and realizes the configuration of the communication connection with the controller.

[0017] Then, the network device uses the PSN in the context of the queue pair of the controller as the corresponding sequence number group of the control. The network device assigns a sequence number group to the controller according to the address information of the controller. Specifically, the network device assigns a sequence number in the sequence number group corresponding to the control to the original message whose destination address is the controller. The network device sends an original message carrying an anycast message to the controller, carrying the sequence number of the sequence number group. The sequence number of the original message increases with the order of sending. For example, the original message #1 sent by the network device to the controller carries sequence number 1, the original message #2 sent by the network device to the controller carries sequence number 2, and the original message #3 sent by the network device to the controller carries sequence number 3, wherein the sending order of original message #2 is later than the sending order of original message #1, and the sending order of original message #3 is later than the sending order of original message #2. The communication connection between the network device and the controller is established by the above method, which improves the implementation flexibility of the solution.

[0018] In combination with the first aspect, in a possible implementation manner of the first aspect, the method further includes: the network device allocating the second sequence number group to the second controller according to configuration information of the second controller.

[0019] In combination with the first aspect, in a possible implementation of the first aspect, the configuration information of the second controller includes: a queue pair context of the second controller, the queue pair context of the second controller includes the address information of the second controller and the second sequence number group. Specifically, the network device obtains the queue pair context of the second controller, the queue pair context of the second controller includes the address information of the second controller and the second sequence number group; the network device configures a communication connection with the second controller according to the queue pair context of the second controller; the network device allocates the second sequence number group to the second controller according to the address information of the second controller. The communication connection between the network device and the controller is established by the above method, which improves the implementation flexibility of the solution.

[0020] In combination with the first aspect, in a possible implementation of the first aspect, after the network device receives the first anycast message, the method further includes: the network device receives a second anycast message; the network device determines that the destination of the second copy message is the second controller according to the semantics of the second anycast message; the network device generates a second copy message according to the second anycast message, the second copy message includes the second anycast message, the second copy message includes a third sequence number, the third sequence number is the second sequence number after incrementing, and the third sequence number belongs to the second sequence number group; the network device sends the second copy message to the second controller. In an embodiment of the present application, the second controller can determine whether packet loss occurs during the transmission of the copy message according to the sequence number carried by the received copy message. Avoid abnormal system behavior or degradation of system performance due to the loss of anycast messages. Effectively improve the reliability and performance of the system. Ensure anycast reliability.

[0021] In combination with the first aspect, in a possible implementation of the first aspect, the second duplicate message also includes the destination address of the first anycast message. The destination address of the first anycast message is the address information of the first controller. Specifically, the duplicate message may also include the destination address of the previous anycast message, the duplicate message corresponding to the anycast message received by the current network device, and the previous anycast message corresponding to the anycast message received by the network device before receiving the current anycast message. The second controller obtains the address of the previous anycast message carried in the currently received duplicate message. If the second controller determines that there is a lost target message based on the sequence number #1 of the currently received duplicate message and the sequence number #2 of the previously received duplicate message cached locally (second controller), for example, the sequence number #1 is not continuous with the sequence number #2. Then, the second controller uses the address of the previous anycast message carried by the currently received duplicate message as the address information of the anycast message corresponding to the target message. Taking the case where the address information of the anycast message corresponding to the target message is the address information of the first controller as an example, after the second controller determines the address information of the first controller from the currently received duplicate message, the second controller sends the message acquisition request to the first controller.

[0022] In combination with the first aspect, in a possible implementation of the first aspect, the method further includes: the network device receives the first original message sent by the first controller; the network device determines the destination address of the first duplicate message according to the first anycast message carried by the first original message, and the destination address of the first duplicate message points to the second controller; the network device sends the destination address of the first duplicate message to the first controller. Specifically, the first controller can send the first original message to the network device, and the corresponding network device determines the destination address of the first duplicate message according to the first anycast message carried by the first original message. Then, the network device sends the destination address of the first duplicate message to the first controller. So that the first controller generates a first duplicate message according to the destination address of the first duplicate message and the first original message, and sends the first duplicate message to the second controller. Through the above method, the retransmission efficiency is improved.

[0023] In combination with the first aspect, in a possible implementation manner of the first aspect, the first copy message is an unreliable connection UD message, or a user datagram protocol UDP message.

[0024] In a second aspect, an embodiment of the present application provides a message processing method, which is applied to a first controller and includes:

[0025] The first controller receives a first original message, wherein the first original message includes the first anycast message, the destination address of the first original message points to the first controller, the first original message includes a first sequence number, the first sequence number belongs to a first sequence number group, and the first sequence number group has a corresponding relationship with the first controller;

[0026] The first controller lists the first original message in a cache queue, wherein the cache queue is used to cache messages. The first controller suspends processing of the message in the cache queue, and removes the message from the cache queue in response to a notification that the message has been processed.

[0027] In an embodiment of the present application, after the first controller receives the original message with a sequence number, it puts the original message into the cache queue and suspends it. After receiving the notification that the original message has been processed, the original message is removed from the cache queue. The original message is backed up by the above method to ensure that after the second controller finds that the duplicate message is lost, it can obtain the original message corresponding to the duplicate message from the first controller. In the event of packet loss, it can still work normally. Avoid abnormal system behavior or degradation of system performance due to the loss of anycast messages. Effectively improve the reliability and performance of the system.

[0028] In combination with the second aspect, in a possible implementation of the second aspect, the first controller receives a message acquisition request, the message acquisition request is used to request to obtain a target message, and the message acquisition request carries a target sequence number included in the target message; the first controller determines the target message from the cache queue according to the target sequence number in the message acquisition request; the first controller sends the target message. In an embodiment of the present application, the second controller can also request to retransmit the lost target message by sending a message acquisition request to ensure that the lost packet data can be successfully written to the disk. Ensure anycast reliability.

[0029] In combination with the second aspect, in a possible implementation of the second aspect, the first controller detects whether the cache time of the first original message in the cache queue has timed out; if the cache time of the first original message has timed out, the first controller determines the address information of the second controller according to the first anycast message included in the first original message; the first controller sends a first duplicate message to the second controller, the first duplicate message includes the first anycast message, the destination address of the first duplicate message points to the second controller, the first duplicate message includes a second sequence number, the second sequence number belongs to a second sequence number group, the second sequence number group has a corresponding relationship with the second controller, and the first sequence number carried in the first original message is the same as the second sequence number carried in the first duplicate message. Exemplarily, the first controller can determine whether the cache time of the original message has timed out by periodically detecting the original message cached in the cache queue. For example, the first controller detects the original message cached in the cache queue at a frequency of scanning once every 1 second. When the first controller detects that the same original message is cached in the cache queue for three consecutive times, the first controller determines that the original message has timed out. In the embodiment of the present application, the cache queue of the first controller sets a cache timeout to prevent the long-term accumulation of original messages in the cache queue from occupying the cache space of the first controller. In addition, by detecting whether the cache time of the original message has timed out, the retransmission of the anycast message corresponding to the original message is triggered. When the copy message corresponding to the anycast message is lost, the first controller can actively retransmit the anycast message to the second controller to ensure that the lost data can be successfully written to the disk. Ensure anycast reliability.

[0030] In combination with the second aspect, in a possible implementation of the second aspect, the first controller detects whether the cache time of the first original message in the cache queue has timed out; if the cache time of the first original message has timed out, the first controller determines the address information of the second controller according to the first anycast message included in the first original message; the first controller detects whether the second controller is working normally; if the second controller is abnormal, the first controller writes the first original message to the disk, wherein the disk is controlled by the second controller to perform a write operation before the second controller is abnormal. After the first controller determines the second controller, the first controller further detects whether the second controller is working normally. Specifically, since the second controller fails to successfully write the first copy message within a long period of time (the cache time of the first original message has timed out), the second controller does not send a notification of the processing of the first copy message, thereby causing the cache time of the first original message in the cache queue of the first controller to time out. Therefore, the above-mentioned write failure may be caused by the abnormal operation of the second controller. In the embodiment of the present application, the cache queue of the first controller sets the cache timeout time to avoid the long-term backlog of original messages in the cache queue occupying the cache space of the first controller. In addition, by detecting whether the cache time of the original message has timed out, the second controller is triggered to detect whether it is working properly. When the second controller works abnormally, the first controller locally performs the write disk processing of the anycast message to ensure that the packet loss data can be successfully written to the disk. The packet loss data refers to the anycast message corresponding to the original message. Ensure anycast reliability.

[0031] In the third aspect, an embodiment of the present application proposes a message processing method, which is applied to a second controller, and the method includes: the second controller receives a first replication message, wherein the first replication message includes a first anycast message, the destination address of the first replication message points to the second controller, and the first replication message includes a second sequence number, the second sequence number belongs to a second sequence number group, and the second sequence number group has a corresponding relationship with the second controller; the second controller detects whether the second sequence number and the fourth sequence number are continuous, wherein the fourth sequence number is the sequence number carried by the third replication message received by the second controller before receiving the first replication message, and the fourth sequence number belongs to the second sequence number group; if the second sequence number and the fourth sequence number are not continuous, there is a lost target message between the third replication message and the first replication message, and the second controller requests retransmission of the target message; if the second sequence number and the fourth sequence number are continuous, there is no lost target message between the third replication message and the first replication message, and the second controller writes the first replication message to the disk.

[0032] In an embodiment of the present application, the second controller receives a duplicate message carrying a sequentially increasing sequence number. The second controller determines whether packet loss occurs during the process of receiving the duplicate message based on whether the sequence number in the received duplicate message increases sequentially. In the event of packet loss, the second controller may request retransmission of the lost target message. This avoids abnormal system behavior or degradation of system performance due to loss of anycast messages. This effectively improves system reliability and system performance.

[0033] In combination with the third aspect, in a possible implementation of the third aspect, the second controller requests retransmission of the target message, including: the second controller determines the target sequence number according to the second sequence number and the fourth sequence number, and the target sequence number is the sequence number carried by the target message; the second controller sends a message acquisition request, and the message acquisition request is used to request to obtain the target message, and the message acquisition request carries the target sequence number included in the target message. In an embodiment of the present application, the second controller can determine whether packet loss occurs during the transmission of the duplicate message according to the sequence number carried by the received duplicate message. Avoid abnormal system behavior or degradation of system performance due to loss of anycast messages. Effectively improve system reliability and system performance. Ensure anycast reliability.

[0034] In combination with the third aspect, in a possible implementation of the third aspect, the second controller obtains the destination address of the anycast message corresponding to the target message from the first duplicate message; the second controller sends the message acquisition request to the first controller according to the address information of the anycast message corresponding to the target message, and the address information of the anycast message corresponding to the target message points to the first controller. Specifically, the duplicate message may also include the destination address of the last anycast message, the duplicate message corresponds to the anycast message received by the current network device, and the last anycast message corresponds to the anycast message received by the network device before receiving the current anycast message. The second controller obtains the address of the last anycast message carried in the currently received duplicate message. If the second controller determines that there is a lost target message based on the sequence number #1 of the currently received duplicate message and the sequence number #2 of the previously received duplicate message cached locally (second controller), for example, the sequence number #1 is not continuous with the sequence number #2. Then, the second controller uses the address of the last anycast message carried by the currently received duplicate message as the address information of the anycast message corresponding to the target message. Taking the case where the address information of the anycast message corresponding to the target message is the address information of the first controller as an example, after the second controller determines the address information of the first controller from the currently received duplicate message, the second controller sends the message acquisition request to the first controller.

[0035] In combination with the third aspect, in a possible implementation of the third aspect, the second controller receives the first duplicate message from the first controller. In an embodiment of the present application, the cache queue of the first controller sets a cache timeout to avoid long-term backlog of original messages in the cache queue occupying the cache space of the first controller. In addition, by detecting whether the cache time of the original message has timed out, the retransmission of the anycast message corresponding to the original message is triggered. When the duplicate message corresponding to the anycast message is lost, the first controller can actively retransmit the anycast message to the second controller to ensure that the lost data can be successfully written to the disk. Ensure anycast reliability.

[0036] In combination with the third aspect, in a possible implementation of the third aspect, after the second controller writes the first copy message to the disk, the method further includes: the second controller sends a processed notification of the first copy message, and the processed notification of the first copy message is used to indicate that the first copy message has been written to the disk. Specifically, when the second controller successfully writes the second copy message to the disk, the second controller sends a processed notification of the second copy message to the first controller, and the processed notification of the second copy message is used to indicate that the second copy message has been written to the disk. This allows the first controller to clean up the cache queue in time, for example, clear the second original message corresponding to the second copy message out of the cache queue, saving storage space of the first controller.

[0037] In combination with the third aspect, in a possible implementation manner of the third aspect, the second controller receives the first duplicate message, including: the second controller receives the first duplicate message from the network device.

[0038] In combination with the third aspect, in a possible implementation manner of the third aspect, the first copy message is an unreliable connection UD message, or a user datagram protocol UDP message.

[0039] In a fourth aspect, an embodiment of the present application provides an electronic device, which is a network device in a storage system. The electronic device includes: a transceiver module and a processing module, and the electronic device is used to execute any method in the first aspect.

[0040] In a fifth aspect, an embodiment of the present application proposes an electronic device, which is a first controller in a storage system. The electronic device includes: a transceiver module and a processing module. The electronic device is used to execute any method in the aforementioned second aspect.

[0041] In a sixth aspect, an embodiment of the present application proposes an electronic device, which is a second controller in a storage system. The electronic device includes: a transceiver module and a processing module. The electronic device is used to execute any method in the aforementioned third aspect.

[0042] The seventh aspect of the present application provides a storage system, including the electronic device as described in the fourth aspect or any implementation of the fourth aspect, the electronic device as described in the fifth aspect or any implementation of the fifth aspect, and the electronic device as described in the sixth aspect or any implementation of the sixth aspect.

[0043] In an eighth aspect, an embodiment of the present application provides an electronic device, the electronic device comprising a memory and a processor; the memory stores a code, the processor is configured to execute the code, and when the code is executed, the electronic device executes the method as described in any one of the above-mentioned first aspects. For example, the electronic device may be a switch, a router, or other device with a data interaction function, which is not limited in the embodiment of the present application.

[0044] In a ninth aspect, an embodiment of the present application provides an electronic device, the electronic device comprising a memory and a processor; the memory stores a code, the processor is configured to execute the code, and when the code is executed, the electronic device executes the method as described in any one of the above second aspects. For example, the electronic device may be a controller for managing the memory, a network card connected to the memory, or a device such as a memory, and the embodiment of the present application does not limit this.

[0045] In a tenth aspect, an embodiment of the present application provides an electronic device, the electronic device comprising a memory and a processor; the memory stores a code, the processor is configured to execute the code, and when the code is executed, the electronic device executes the method as described in any one of the above-mentioned third aspects. For example, the electronic device may be a controller for managing the memory, a network card connected to the memory, or a device such as a memory, and the embodiment of the present application does not limit this.

[0046] In an eleventh aspect, the present application provides a computer-readable storage medium, in which a computer program is stored. When the computer-readable storage medium is run on a computer, the computer executes the method described in the first, second or third aspect above.

[0047] A twelfth aspect of the present application provides a computer program product, which, when executed on a computer, enables the computer to execute the method described in the first, second or third aspect above. BRIEF DESCRIPTION OF THE DRAWINGS

[0048] Figure 1 A schematic diagram of the structure of a storage system involved in an embodiment of the present application;

[0049] Figure 2 A schematic diagram of the structure of another storage system involved in an embodiment of the present application;

[0050] Figure 3A schematic diagram of a storage cluster structure;

[0051] Figure 4 This is a schematic diagram of an embodiment of a message processing method in an embodiment of the present application;

[0052] Figure 5 This is a schematic diagram of an embodiment of a message processing method in an embodiment of the present application;

[0053] Figure 6 This is a schematic diagram of an embodiment of a message processing method in an embodiment of the present application;

[0054] Figure 7 This is a schematic diagram of an embodiment of a message processing method in an embodiment of the present application;

[0055] Figure 8 This is a schematic diagram of an embodiment of a message processing method in an embodiment of the present application;

[0056] Fig. 9 A schematic diagram of an application scenario proposed in an embodiment of the present application;

[0057] Fig.10 A schematic diagram of another application scenario proposed in the embodiment of the present application;

[0058] Fig.11 A schematic diagram of another application scenario proposed in the embodiment of the present application;

[0059] Fig.12 A schematic diagram of another application scenario proposed in the embodiment of the present application;

[0060] Fig.13 A schematic diagram of another application scenario proposed in the embodiment of the present application;

[0061] Fig.14 A schematic diagram of the structure of a server 1401 provided in an embodiment of the present application;

[0062] Fig.15 A schematic diagram of the structure of a server provided in an embodiment of the present application. DETAILED DESCRIPTION

[0063] The embodiments of the present application are described below in conjunction with the accompanying drawings. Those skilled in the art will appreciate that, with the development of technology and the emergence of new scenarios, the technical solutions provided in the embodiments of the present application are also applicable to similar technical problems.

[0064] The terms "first", "second", etc. in the specification and claims of the present application and the above-mentioned drawings are used to distinguish similar objects, and need not be used to describe a specific order or sequential order. It should be understood that the terms used in this way can be interchangeable under appropriate circumstances, which is only to describe the distinction mode adopted by the objects of the same attributes when describing in the embodiments of the present application. In addition, the terms "including" and "having" and any of their variations are intended to cover non-exclusive inclusions, so that the process, method, system, product or equipment comprising a series of units need not be limited to those units, but may include other units that are not clearly listed or inherent to these processes, methods, products or equipment.

[0065] In a possible application scenario, the storage system involved in the embodiment of the present application is as follows: Figure 1 As shown, Figure 1 This is a schematic diagram of the structure of a storage system involved in an embodiment of the present application. Figure 1 In the application scenario shown, users access data through applications. The computer running these applications is called an "application server", and the application server can also be called a host, which is not limited in this application. The application server 100 can be a physical machine or a virtual machine. Physical application servers include but are not limited to desktop computers, servers, laptops, and mobile devices. The application server accesses the storage system through the switch 110 to access data. However, the switch 110 is only an optional device, and the application server 100 can also communicate directly with the storage system 120 through the network. Alternatively, the switch 110 can also be replaced by an Ethernet switch, an InfiniBand switch, a RoCE (RDMA over Converged Ethernet) switch, etc. The switch 110 can also be replaced by a network card or other network device that implements data forwarding, which is not limited in this embodiment of the present application.

[0066] Figure 1 The storage system 120 shown is a centralized storage system. The centralized storage system is characterized by having a unified entrance through which all data from external devices must pass, and this entrance is the engine 121 of the centralized storage system. The engine 121 is the core component of the centralized storage system, and many advanced functions of the storage system are implemented in it.

[0067] like Figure 1 As shown, the engine 121 has one or more controllers. Figure 1Take the example of an engine containing two controllers. There is a mirror channel between controller 0 and controller 1. Then, when controller 0 writes a copy of data into its memory 124, it can send a copy of the data to controller 1 through the mirror channel, and controller 1 stores the copy in its local memory 124. In this way, controller 0 and controller 1 back up each other. When controller 0 fails, controller 1 can take over the business of controller 0, and when controller 1 fails, controller 0 can take over the business of controller 1, thereby avoiding the unavailability of the entire storage system 120 due to hardware failure. When 4 controllers are deployed in the engine 121, there is a mirror channel between any two controllers, so any two controllers back up each other.

[0068] The engine 121 also includes a front-end interface 125 and a back-end interface 126, wherein the front-end interface 125 is used to communicate with the application server 100, thereby providing storage services for the application server 100. The back-end interface 126 is used to communicate with the hard disk 134 to expand the capacity of the storage system. Through the back-end interface 126, the engine 121 can connect more hard disks 134, thereby forming a very large storage resource pool.

[0069] In hardware, such as Figure 1 As shown, the controller 0 includes at least a processor 123 and a memory 124. The processor 123 is a central processing unit (CPU) used to process data access requests from outside the storage system (server or other storage system), and also used to process requests generated inside the storage system. Exemplarily, when the processor 123 receives a write data request sent by the application server 100 through the front-end port 125, the data in these write data requests will be temporarily stored in the memory 124. When the total amount of data in the memory 124 reaches a certain threshold, the processor 123 sends the data stored in the memory 124 to the hard disk 134 through the back-end port for persistent storage.

[0070] Controller 1 (and others Figure 1 The hardware components and software structure of the controller (not shown in the figure) are similar to those of the controller 0 and will not be repeated here.

[0071] Figure 1 The illustrated embodiment is a centralized storage system with a disk-controller separation. In the system, the engine 121 may not have a hard disk slot, and the hard disk 134 needs to be placed in the hard disk frame 130, and the back-end interface 126 communicates with the hard disk frame 130. The back-end interface 126 exists in the engine 121 in the form of an adapter card, and two or more back-end interfaces 126 can be used simultaneously on one engine 121 to connect multiple hard disk frames. Alternatively, the adapter card can also be integrated on the motherboard, and the adapter card can communicate with the processor 123 via the PCIE bus.

[0072] It should be noted that Figure 1 Only one engine 121 is shown in the figure. However, in actual applications, the storage system may include two or more engines 121, and redundancy or load balancing is performed between the multiple engines 121.

[0073] The hard disk enclosure 130 includes a control unit 131 and a plurality of hard disks 134. The control unit 131 may have various forms. In one embodiment, the hard disk enclosure 130 is an intelligent disk enclosure, such as Figure 1As shown, the control unit 131 includes a CPU and a memory. The CPU is used to perform operations such as address conversion and reading and writing data. The memory is used to temporarily store data to be written to the hard disk 134, or read from the hard disk 134 to be sent to the controller. In another case, the control unit 131 is a programmable electronic component, such as a data processing unit (DPU). The DPU has the versatility and programmability of the CPU, but is more specialized and can run efficiently on network data packets, storage requests or analysis requests. The DPU is distinguished from the CPU by a greater degree of parallelism (needing to process a large number of requests). Optionally, the DPU here can also be replaced by a processing chip such as a graphics processing unit (GPU), an embedded neural network processor (neural-networkprocessing units, NPU). Generally, the number of control units 131 can be one, or two or more. When the hard disk frame 130 includes at least two control units 131, the hard disk 134 and the control unit 131 may have an ownership relationship. If there is an ownership relationship between the hard disk 134 and the control unit 131, then each control unit can only access the hard disk belonging to it, which often involves forwarding read / write data requests between the control units 131, resulting in a longer data access path. In addition, if the storage space is insufficient, when adding a new hard disk 134 to the hard disk frame 130, it is necessary to rebind the ownership relationship between the hard disk 134 and the control unit 131, which is complicated to operate and results in poor scalability of the storage space. Therefore, in another embodiment, the function of the control unit 131 can be unloaded to the network card 104. In other words, in this embodiment, the hard disk frame 130 does not have a control unit 131 inside, but the network card 104 completes data reading and writing, address conversion and other computing functions. At this time, the network card 104 is an intelligent network card. It can include a CPU and memory. In some application scenarios, the network card 104 may also have a persistent memory medium, such as a persistent memory (PM), or a non-volatile random access memory (NVRAM), or a phase change memory (PCM). The CPU is used to perform operations such as address conversion and reading and writing data. The memory is used to temporarily store data to be written to the hard disk 134, or read data from the hard disk 134 to be sent to the controller. It can also be a programmable electronic component, such as a data processing unit (DPU).The DPU has the versatility and programmability of the CPU, but is more specialized and can run efficiently on network data packets, storage requests or analysis requests. The DPU is distinguished from the CPU by a greater degree of parallelism (needing to process a large number of requests). Optionally, the DPU here can also be replaced with processing chips such as graphics processing units (GPUs) and embedded neural network processors (NPUs). There is no ownership relationship between the network card 104 and the hard disk 134 in the hard disk frame 130. The network card 104 can access any hard disk 134 in the hard disk frame 130, so it is more convenient to expand the hard disk when the storage space is insufficient.

[0074] According to the type of communication protocol between the engine 121 and the hard disk frame 130, the hard disk frame 130 may be a SAS hard disk frame, or an NVMe hard disk frame, an IP hard disk frame, or other types of hard disk frames. The SAS hard disk frame uses the SAS3.0 protocol, and each frame supports 25 SAS hard disks. The engine 121 is connected to the hard disk frame 130 through an onboard SAS interface or a SAS interface module. The NVMe hard disk frame is more like a complete computer system, and the NVMe hard disk is inserted in the NVMe hard disk frame. The NVMe hard disk frame is then connected to the engine 121 through the RDMA port.

[0075] In another possible application scenario, the storage system involved in the embodiment of the present application is as follows: Figure 2 As shown, Figure 2 FIG. 1 is a schematic diagram of the structure of another storage system involved in an embodiment of the present application. Figure 2 In the application scenario shown, users access data through applications. The computers running these applications are called "application servers". The application server 100 can be a physical machine or a virtual machine. Physical application servers include but are not limited to desktop computers, servers, laptops, and mobile devices. The application server 100 accesses the storage system 120 through the fiber optic switch 110 to access data. However, the switch 110 is only an optional device, and the application server 100 can also communicate with the storage system 120 directly through the network.

[0076] Figure 2 The storage system 120 shown is a centralized storage system. The centralized storage system is characterized by having a unified entrance through which all data from external devices must pass. This entrance is the engine of the centralized storage system. The engine 121 is the core component of the centralized storage system, and many advanced functions of the storage system are implemented in it.

[0077] like Figure 2As shown, the engine 121 has one or more controllers. Figure 2 Take the example that engine 121 includes two controllers. There is a mirror channel between controller 0 and controller 1. Then, when controller 0 writes a copy of data into its memory 124, it can send a copy of the data to controller 1 through the mirror channel, and controller 1 stores the copy in its local memory 124. In this way, controller 0 and controller 1 back up each other. When controller 0 fails, controller 1 can take over the business of controller 0, and when controller 1 fails, controller 0 can take over the business of controller 1, thereby avoiding the unavailability of the entire storage system due to hardware failure. When 4 controllers are deployed in engine 121, there is a mirror channel between any two controllers, so any two controllers back up each other.

[0078] The engine 121 also includes a front-end interface 125 and a back-end interface 126, wherein the front-end interface 125 is used to communicate with the application server 100, thereby providing storage services for the application server 100. The back-end interface 126 is used to communicate with the hard disk 134 to expand the capacity of the storage system. Through the back-end interface 126, the engine 121 can connect more hard disks 134, thereby forming a very large storage resource pool.

[0079] In hardware, such as Figure 2 As shown, the controller 0 includes at least a processor 123 (CPU 123) and a memory 124. The processor 123 is a central processing unit (CPU) for processing data access requests from outside the storage system (server or other storage system), and is also used to process requests generated inside the storage system. Exemplarily, when the processor 123 receives a write data request sent by the application server 100 through the front-end port 125, the data in the write data request will be temporarily stored in the memory 124. When the total amount of data in the memory 124 reaches a certain threshold, the processor 123 sends the data stored in the memory 124 to the hard disk 134 through the back-end port for persistent storage.

[0080] The memory 124 refers to an internal memory that directly exchanges data with the processor. It can read and write data at any time and at a very fast speed. It serves as a temporary data storage for the operating system or other running programs. The memory includes at least two types of memories. For example, the memory can be either a random access memory or a read-only memory (ROM). For example, the random access memory is a dynamic random access memory (DRAM) or a storage class memory (SCM). DRAM is a semiconductor memory, and like most random access memories (RAM), it is a volatile memory device. SCM is a composite storage technology that combines the characteristics of traditional storage devices and memory. Storage class memory can provide faster read and write speeds than hard disks, but the access speed is slower than DRAM, and the cost is cheaper than DRAM. However, DRAM and SCM are only exemplary descriptions in this embodiment, and the memory can also include other random access memories, such as static random access memories (SRAM). As for the read-only memory, for example, it can be a programmable read-only memory (PROM), an erasable programmable read-only memory (EPROM), etc. In addition, the memory 124 can also be a dual in-line memory module or a dual-line memory module (DIMM), that is, a module composed of a dynamic random access memory (DRAM), or a solid state disk (SSD). In actual applications, multiple memories 124 and different types of memories 124 can be configured in the controller 0. This embodiment does not limit the number and type of memory 124. In addition, the memory 124 can be configured to have a power-saving function. The power-saving function means that when the system loses power and then powers on again, the data stored in the memory 124 will not be lost. The memory with a power-saving function is called a non-volatile memory.

[0081] The memory 124 stores software programs, and the processor 123 runs the software programs in the memory 124 to manage the hard disk. For example, the hard disk is abstracted into a storage resource pool, and then divided into LUNs for use by the server. The LUN here is actually the hard disk seen on the server. Of course, some centralized storage systems are also file servers themselves, which can provide shared file services for the server.

[0082] Controller 1, and others Figure 2 The hardware components and software structure of the controller not shown in the figure are similar to those of the controller 0 and will not be repeated here.

[0083] It should be noted that Figure 2 Only one engine 121 is shown in the figure. However, in actual applications, the storage system may include two or more engines 121, and redundancy or load balancing is performed between the multiple engines 121.

[0084] Figure 2 The system is a centralized storage system with integrated disk and controller. In the system, the engine 121 has a hard disk slot, and the hard disk 134 can be directly deployed in the engine 121. The back-end interface 126 is an optional configuration. When the storage space of the system is insufficient, more hard disks or hard disk frames can be connected through the back-end interface 126.

[0085] Currently, network devices such as switches are usually used to perform cluster load balancing. For easier understanding, please refer to Figure 3 , Figure 3 A schematic diagram of a storage cluster structure. Figure 3 The illustrated storage cluster includes a network device and a controller 1 and a controller 2 connected to the network device, and the controller 1 and the controller 2 are used to manage disks. Specifically, after the network device receives an anycast message from a host (such as an application server), the network device replicates the received anycast message, and then calculates the destination of the replicated message according to a certain rule and forwards the replicated message.

[0086] It should be noted that there are many possible implementations of the host in the embodiments of the present application, including but not limited to: computing devices, computing units, cloud devices, virtual machines, or physical machines. The computing device may be a server, such as a central server, an edge server, or a local server in a local data center. In some embodiments, the computing device may also be a terminal device such as a desktop, a laptop, or a smart phone. The server may be a server cluster consisting of multiple servers, or a cloud computing service center. Among them, a large number of basic resources owned by a cloud service provider are deployed in the cloud computing service center. For example, a large number of basic resources such as computing resources, storage resources, and network resources are deployed in the cloud computing service center. The cloud computing service center can use this large number of basic resources to implement the network operation and maintenance method provided in the embodiments of the present application, as well as to implement more services.

[0087] In one example, the host (virtual machine) needs to read the data of address block #1 in the disk. The host sends an Anycast message #1 to the network device, which requests to read the data of address block 1. After receiving Anycast message #1, the network device replicates Anycast message #1 and forwards the replicated message carrying Anycast message #1 to the corresponding controller. The controller reads the data of address block 1 according to the replicated message.

[0088] The specific copy and forwarding process is as follows: The currently commonly used transport layer protocol is point-to-point reliable transmission, such as the Traffic Conditioning Profile (TCP) protocol or the Remote Direct Memory Access reliable connection (RDMA RC). The above transport layer protocol stipulates that anycast messages carry sequence numbers in the original transmission path, resulting in the inability to directly forward the anycast messages. Therefore, network devices need to use connectionless transmission protocols such as the User Datagram Protocol (UDP) or Remote Direct Memory Access unreliable connection (RDMAUD) to copy and process anycast messages before forwarding them. For example Figure 3In the example, the network device forwards message 1, message 2 and message 3 to controller 1 respectively, and the network device copies message 1, message 2 and message 3 to obtain message 1 (copy), message 2 (copy) and message 3 (copy), and the network device forwards message 1 (copy), message 2 (copy) and message 3 (copy) to controller 2. However, during the transmission between the network device and controller 2, message 2 (copy) is lost. The applicant has found that the above connectionless transmission protocol has no reliability mechanism, and anycast messages are lost due to packet loss or error packets during the transmission process, which leads to abnormal system behavior or degradation of system performance.

[0089] Based on this, an embodiment of the present application proposes a message processing method. After receiving a first anycast message, the network device performs a copy and forwarding process on the first anycast message. The first original message corresponding to the first anycast message carries a first sequence number, the first sequence number corresponds to the first controller, and the destination address of the first anycast message points to the first controller. The first copy message obtained by copying the first anycast message carries a second sequence number, the second sequence number corresponds to the second controller, and the second controller is the home determined according to the semantics of the first anycast message. The first sequence number carried by the first original message is the same as the second sequence number carried by the first copy message. The first sequence number increases as the network device sends the first original message, and the second sequence number increases as the network device sends the first copy message, and the increment of the first sequence number is the same as the increment of the second sequence number. Through the above method, the second controller can determine whether packet loss occurs during the transmission of the copy message according to the sequence number carried by the received copy message. Avoid abnormal system behavior or degradation of system performance due to the loss of anycast messages. Effectively improve the reliability and system performance of the system.

[0090] The following is an introduction to the embodiments of the present application in conjunction with the accompanying drawings. Figure 4 , Figure 4 Schematic diagram of a message processing method in an embodiment of the present application. A message processing method proposed in an embodiment of the present application includes:

[0091] S0. The network device sends a third copy message to the second controller. The first copy message includes a third anycast message. The third copy message includes a fourth sequence number. The fourth sequence number belongs to a second sequence number group. The second sequence number group corresponds to the second controller.

[0092] In step S0, after receiving the anycast message (e.g., the third anycast message), the network device generates a corresponding original message (e.g., the third original message) according to the destination address of the anycast message. The destination address of the original message is the same as the destination address of the anycast message, for example, pointing to the first controller. The original message includes the anycast message. The network device generates a duplicate message (e.g., the third duplicate message) according to the semantics of the anycast message, and the destination address of the duplicate message points to the second controller. The destination of the duplicate message is determined by the network device according to the semantics of the anycast message.

[0093] Specifically, in step S0, the copy message sent by the network device is called the third copy message, the destination address of the third copy message is the second controller, the third copy message carries a fourth sequence number, the fourth sequence number belongs to the second sequence number group, and the second sequence number group has a corresponding relationship with the second controller.

[0094] S1. A network device receives a first anycast message, where a destination address of the first anycast message points to a first controller.

[0095] In step S1, the network device receives a first anycast message, which may be an anycast message sent by a host (or an application server) to the network device. The destination address of the first anycast message points to a first controller, for example, the destination Internet Protocol (IP) address carried by the first anycast message points to the first controller.

[0096] Optionally, the first controller may be a controller on a reliable connection transmission (RC) side. Correspondingly, the second controller may be a controller on an unreliable connection (UD) side.

[0097] Exemplarily, the first anycast message may be a remote direct memory access (RDMA) message.

[0098] S2. The network device sends a first original message to the first controller. The first original message includes a first anycast message. The first original message includes a first sequence number. The first sequence number belongs to a first sequence number group. The first sequence number group corresponds to the first controller.

[0099] After step S1, in step S2, the network device generates a first original message according to the first anycast message, and the destination address of the first original message points to the first controller. In the embodiment of the present application, the message sent by the network device to the first controller according to the first anycast message is called the first original message, and the first original message includes the first anycast message, and the destination address of the first original message is the first controller. It can be understood that the first original message in the embodiment of the present application can also be implemented in other ways, including but not limited to data packets or messages. That is, the first original message is replaced with the first original data packet or the first original message, etc., and the embodiment of the present application does not limit this.

[0100] The first original message includes a first sequence number, the first sequence number belongs to a first sequence number group, and the first sequence number group has a corresponding relationship with the first controller. Specifically, the network device manages one or more sequence number groups, and each sequence number group has a corresponding relationship with a controller. The message carrying the anycast message sent by the network device to the controller carries the sequence number in the sequence number group. For the message carrying the anycast message with the same controller as the destination, the sequence number carried by the message increases successively as the network device continues to send the message. Exemplarily, as shown in Table 1.

[0101] Table 1

[0102]

[0103] As shown in Table 1, the first message carrying anycast message sent by the network device to controller #1 (the destination address of the anycast message is controller #1) carries the sequence number "0"; the second message carrying anycast message sent by the network device to controller #1 (the destination address of the anycast message is controller #1) carries the sequence number "1"; the third message carrying anycast message sent by the network device to controller #1 (the destination address of the anycast message is controller #1) carries the sequence number "2", and so on.

[0104] Optionally, the multiple sequence number groups managed by the network device may include the same sequence number or different sequence numbers. As shown in Table 1, controller #1 corresponds to sequence number group #1, and sequence number group #1 includes sequence numbers {0, 1, 2...}. Controller #2 corresponds to sequence number group #2, and sequence number group #2 includes sequence numbers {0, 1, 2...}. The sequence numbers included in sequence number group #1 and sequence number group #2 are the same. Controller #3 corresponds to sequence number group #3, and sequence number group #3 includes sequence numbers {10000, 10001, 10002...}. Controller #4 corresponds to sequence number group #4, and sequence number group #4 includes sequence numbers {100000, 100001, 100002...}. The sequence numbers included in sequence number group #3 and sequence number group #4 are different.

[0105] Exemplarily, taking the first controller as an example, the first sequence number group assigned by the network device to the first controller may be sequence number group #1 in Table 1. The first original message #1 sent by the network device to the first controller carries the sequence number "0" in the first sequence number group; the first original message #2 sent by the network device to the first controller carries the sequence number "1" in the first sequence number group; the first original message #3 sent by the network device to the first controller carries the sequence number "2" in the first sequence number group; the first original message #4 sent by the network device to the first controller carries the sequence number "3" in the first sequence number group. The sending order of the first original message #2 is later than the sending order of the first original message #1, the sending order of the first original message #3 is later than the sending order of the first original message #2, and the sending order of the first original message #4 is later than the sending order of the first original message #3. By analogy, as the sending order of the original messages increases, the sequence numbers carried by the original messages sent by the network device to the first controller increase successively.

[0106] Exemplarily, the first sequence number is carried in a newly added field of the first original message, and the newly added field may be an unreliable connection start packet sequence number (UDPSN).

[0107] Exemplarily, the newly added field is carried in the RDMA payload of the first original message. For example, the newly added field is carried in the non-volatile memory express (NVMe) field. Alternatively, the newly added field is carried in the custom field of the first original message. Alternatively, the newly added field is carried in the extended field of the payload of the first original message.

[0108] Next, we will describe how the network device assigns serial number groups to the controller.

[0109] In one possible implementation, the network device obtains the queue pair context (queue pair context, QPC) of the controller, and the queue pair context of the controller includes the address information of the controller and the first sequence number group. Regarding the queue pair context, queue pairs (queue pair, QP) can be established between the source and the destination through the RDMA protocol, and the queue pairs include queue pair identification numbers (queue pair context number, QPN). Then, the QP of the destination is associated with the QP of the source, and the association includes the QPN and address information of the specified QP counterpart. Exemplarily, after the QP of the network device establishes an association relationship with the QP of the controller, a queue pair context associated with the controller and the network device is generated, and the queue pair context of the controller includes the corresponding QPN, the address information of the controller, and the starting packet sequence number (packet sequence number, PSN). For the controller, the controller creates a queue pair context based on the network device connected to the controller. For example, in a dual-plane scenario, the controller is connected to network device #1 and network device #2. The controller creates QPC #1 for network device #1 and QPC #2 for network device #2, respectively. QPC #1 includes the address information of network device #1, and QPC #2 includes the address information of network device #2.

[0110] After the network device receives the queue pair context of the first controller sent by the controller, it configures the communication connection with the controller. Exemplarily, the controller assigns QPC#1 to network device #1, and the controller assigns QPC#2 to network device #2. After the network device receives the QPC information (the relevant information of QPC#1 or the relevant information of QPC#2), the control plane of the network device sends the QPC to the data plane of the network device, completes the QPC configuration, and realizes the configuration of the communication connection with the controller.

[0111] Then, the network device uses the PSN in the context of the queue pair of the controller as the corresponding sequence number group of the control. The network device assigns a sequence number group to the controller according to the address information of the controller. Specifically, the network device assigns a sequence number in the sequence number group corresponding to the control to the original message whose destination address is the controller. The network device sends an original message carrying an anycast message to the controller, carrying the sequence number of the sequence number group. The sequence number of the original message increases in this order with the order of sending. For example, the original message #1 sent by the network device to the controller carries sequence number 1, the original message #2 sent by the network device to the controller carries sequence number 2, and the original message #3 sent by the network device to the controller carries sequence number 3, wherein the sending order of original message #2 is later than the sending order of original message #1, and the sending order of original message #3 is later than the sending order of original message #2.

[0112] Exemplarily, the first controller sends a queue pair context of the first controller to the network device, and the queue pair context of the first controller includes the address information of the first controller and a first sequence number group. After the network device obtains the queue pair context of the first controller, it configures a communication connection with the first controller according to the queue pair context of the first controller. Specifically, the network device configures the queue pair context of the first controller to the data plane of the network device. Then, the network device assigns the first sequence number group carried in the queue pair context of the first controller to the first controller according to the address information of the first controller. Specifically, the message carrying the anycast message sent by the network device to the first controller (such as the first original message) carries the sequence number in the first sequence number group.

[0113] S3. The network device sends a first copy message to the second controller, the first copy message includes a first anycast message, the first copy message includes a second sequence number, the second sequence number belongs to a second sequence number group, and the second sequence number group has a corresponding relationship with the second controller.

[0114] After step S1, in step S3, the network device generates a first copy message according to the first anycast message, the first copy message includes the first anycast message, and the destination address of the first copy message is the second controller. In the embodiment of the present application, the message sent by the network device to the second controller according to the first anycast message is called the first original message, the first original message includes the first anycast message, and the destination address of the first original message is the first controller. It can be understood that the first copy message in the embodiment of the present application can also be implemented in other ways, including but not limited to data packets or messages. That is, the first copy message is replaced with a first copy data packet or a first copy message, etc., which is not limited to the embodiment of the present application.

[0115] The network device can determine the destination address of the first replicated message in a variety of ways: In one possible implementation, the network device determines the second controller based on the semantics of the first anycast message. Specifically, the network device performs a table lookup in the attribution table based on one or more fields in the first anycast message to obtain the address information of the second controller corresponding to the first anycast message, and the second controller serves as the destination of the first replicated message. The attribution table includes one or more correspondences, which include the fields of the anycast message and the address information of the controller. Regarding the attribution table, for example, as shown in Table 2:

[0116] Table 2

[0117] Fields of anycast messages Controller Controller address information AAA Controller #1 192.168.16.100 BBB Controller #2 192.168.16.200 CCC Controller #3 192.168.16.400

[0118] As shown in Table 2, when the first anycast message carries the field "CCC", the network device performs semantic analysis based on the field "CCC" carried by the first anycast message, and determines from the attribution table that the UD side controller corresponding to the first anycast message is controller #2. The network device uses controller #2 as the second controller, and the network device configures the destination address of the first copy message to the address "192.168.16.200" of controller #2. The network device sends the first copy message to controller #2.

[0119] The first replication message includes a second sequence number, the second sequence number belongs to a second sequence number group, and the second sequence number group has a corresponding relationship with the second controller. Specifically, the network device allocates the second sequence number group to the second controller, and the replication message (the replication message carries the anycast message) sent by the network device to the second controller carries the sequence number of the second sequence number group.

[0120] The method for the network device to allocate the second serial number group to the second controller is similar to the method for the network device to allocate the first serial number group to the first controller in the aforementioned step S2, and will not be described in detail here.

[0121] Exemplarily, taking the second controller as an example, the second sequence number group allocated by the network device to the second controller may be sequence number group #2 in Table 1. The first copy message #1 sent by the network device to the second controller carries the sequence number "0" in the second sequence number group; the first copy message #2 sent by the network device to the second controller carries the sequence number "1" in the second sequence number group; the first copy message #3 sent by the network device to the second controller carries the sequence number "2" in the second sequence number group; the first copy message #4 sent by the network device to the second controller carries the sequence number "3" in the second sequence number group. The sending order of the first copy message #2 is later than the sending order of the first copy message #1, the sending order of the first copy message #3 is later than the sending order of the first copy message #2, and the sending order of the first copy message #4 is later than the sending order of the first copy message #3. By analogy, as the sending order of the copy messages increases, the sequence numbers carried by the copy messages sent by the network device to the second controller increase successively.

[0122] Exemplarily, the second controller sends a queue pair context of the second controller to the network device, and the queue pair context of the second controller includes the address information of the second controller and the second sequence number group. After the network device obtains the queue pair context of the second controller, it configures a communication connection with the second controller according to the queue pair context of the second controller. Specifically, the network device configures the queue pair context of the second controller to the data plane of the network device. Then, the network device assigns the second sequence number group carried in the queue pair context of the second controller to the second controller according to the address information of the second controller. Specifically, the message carrying the anycast message sent by the network device to the second controller (such as the first copy message) carries the sequence number in the second sequence number group.

[0123] Exemplarily, the second sequence number is carried in a newly added field of the first duplicate message, and the newly added field may be an unreliable connection start packet sequence number (UDPSN).

[0124] Exemplarily, the newly added field is carried in the RDMA payload of the first replicated message. For example, the newly added field is carried in the NVMe field. Alternatively, the newly added field is carried in the custom field of the first original message. Alternatively, the newly added field is carried in the extended field of the payload of the first original message.

[0125] It should be noted that the first sequence number increases as the network device sends the first original message, and the second sequence number increases as the network device sends the first duplicate message. The first sequence number is the same as the second sequence number, and the increment of the first sequence number is the same as the increment of the second sequence number. It is ensured that the sequence number carried by the duplicate message sent by the network device for the same anycast message is the same as the sequence number carried by the original message. In addition, it is ensured that the sequence number carried by the duplicate message sent by the network device increases sequentially, and the sequence number carried by the original message sent by the network device increases sequentially.

[0126] It should be noted that the execution order of step S2 and step S3 is not limited in the embodiment of the present application. For example, step S2 may be executed first and then step S3, or step S3 may be executed first and then step S2, or steps S2 and S3 may be executed simultaneously.

[0127] S4: The first controller puts the first original message into a cache queue, and the first controller suspends processing of the messages in the cache queue.

[0128] After step S2, in step S4, after receiving the first original message, the first controller puts the first original message into the cache queue for temporary processing, that is, suspends the first original message and temporarily suspends processing of the first original message. The first controller temporarily suspends processing of the message in the cache queue.

[0129] Exemplarily, the cache queue includes multiple implementation methods, such as a linked list, or a red-black tree, etc., which is not limited in the embodiments of the present application.

[0130] S5. The second controller detects whether the second serial number and the fourth serial number are continuous.

[0131] After step S3, in step S5, after receiving the first duplicate message, the second controller extracts the second sequence number from the first duplicate message. Then, the second controller detects whether the second sequence number is continuous with the fourth sequence number.

[0132] Regarding the fourth sequence number, after step S0, after the second controller receives the third duplicate message, the second controller extracts the fourth sequence number from the third duplicate message and then stores the fourth sequence number.

[0133] If the second sequence number is continuous with the fourth sequence number, the second controller determines that there is no lost target message between the third duplicate message and the first duplicate message, and executes step S6. For example, if the second sequence number is 3, the fourth sequence number is 2, and the second sequence number group is {0, 1, 2, 3, 4, ...}, then the second sequence number is considered to be continuous with the fourth sequence number.

[0134] If the second sequence number is not continuous with the fourth sequence number, the second controller considers that there is a lost target message between the third copy message and the first copy message, and executes step S7. For example, if the second sequence number is 4, the fourth sequence number is 2, and the second sequence number group is {0, 1, 2, 3, 4, ...}, then the second sequence number is considered to be not continuous with the fourth sequence number.

[0135] S6. If the second sequence number is continuous with the fourth sequence number, the second controller determines that there is no lost target message between the third copy message and the first copy message, and the second controller writes the first copy message to the disk.

[0136] In step S6, the second controller determines, based on the detection result, that there is no lost target message between the third copy message and the first copy message, that is, the third copy message and the first copy message are continuous. The second controller writes the first copy message to the disk, and no write error or other problems occur. Therefore, the second controller writes the first copy message to the disk.

[0137] After step S6, step S8 is performed.

[0138] S7. If the second sequence number is not continuous with the fourth sequence number, the second controller determines that there is a lost target message between the third copy message and the first copy message, and the second controller requests to retransmit the target message.

[0139] In step S7, the second controller determines, based on the detection result, that the third copy message is discontinuous with the first copy message, and there is a lost target message between the third copy message and the first copy message, and then the second controller requests to retransmit the target message. For the method of the second controller requesting to retransmit the target message, please refer to the subsequent embodiments, which will not be described here.

[0140] In another possible implementation, the first controller triggers the retransmission of the target message. The specific method is similar to the above step S4 and will not be described in detail here.

[0141] When the second controller receives the target message, the second controller writes the target message to the disk. Further, the second controller detects whether the target message is continuous with the first copy message, that is, detects whether the sequence number carried by the target message and the second sequence number carried by the first copy message are continuous and increasing. If so, the second controller writes the first copy message to the disk.

[0142] S8. The second controller sends a notification to the first controller that the first duplicate message has been processed.

[0143] In step S8, if the second controller writes the first copy message to the disk, the second controller sends a processing notification of the first copy message to the first controller. The processing notification of the first copy message indicates that the second controller has written the first copy message to the disk, so that the first controller can clean up the cache queue in time and save the storage space of the first controller.

[0144] In the embodiment of the present application, the second controller can determine whether packet loss occurs during the transmission of the duplicate message according to the sequence number carried by the received duplicate message. This avoids abnormal system behavior or degradation of system performance due to loss of anycast messages. This effectively improves the reliability and performance of the system. This ensures anycast reliability.

[0145] In combination with the above-mentioned embodiment, the following describes the actions of the network device after receiving the second anycast message, where the second anycast message is an anycast message that is later than the first anycast message in terms of timing. Figure 5 , Figure 5 Schematic diagram of an embodiment of a message processing method in an embodiment of the present application. A message processing method proposed in an embodiment of the present application further includes:

[0146] D1. The network device receives a second anycast message, and the destination address of the second anycast message points to the first controller.

[0147] In step D1, the network device receives a second anycast message sent by the host (or application server), and the destination address of the second anycast message points to the first controller. For example, the destination IP address carried by the second anycast message points to the first controller.

[0148] Exemplarily, the second anycast message may be an RDMA message.

[0149] D2. The network device sends a second original message to the first controller, where the second original message includes a second anycast message and a fifth sequence number, and the fifth sequence number belongs to the first sequence number group.

[0150] In step D2, the network device generates a second original message according to the second anycast message, the second original message includes the second anycast message, the second original message includes the sequence number in the first sequence number group, for ease of explanation, the sequence number included in the second original message is called the fifth sequence number.

[0151] If the network device receives only the second anycast message with the destination address being the first controller after receiving the first anycast message in the aforementioned step S1, the fifth sequence number is in an increasing relationship with the first sequence number. For example, the first sequence number is 0, the fifth sequence number is 1, and the first sequence number group includes: {0, 1, 2, 3...}.

[0152] D3. The network device sends a second copy message to the second controller, the second copy message includes a second anycast message, the second copy message includes a third sequence number, the third sequence number belongs to the second sequence number group, and the third sequence number is the incremented second sequence number.

[0153] In step D3, the network device generates a second copy message according to the second anycast message, and the second copy message includes the second anycast message. Specifically, according to the semantics of the second anycast message, it is determined that the destination address of the second copy message is the second controller. Since the destination address of the second copy message is the second controller, the second copy message is assigned a sequence number of the second sequence number group. For ease of explanation, the sequence number included in the second copy message is referred to as a third sequence number, and the third sequence number belongs to the second sequence number group.

[0154] Similar to step D2, if the network device has not sent a copy message to the second controller after receiving the first anycast message of the aforementioned step S1 and sending the first copy message to the second controller (the first copy message carries the second sequence number), the third sequence number is in an increasing relationship with the second sequence number. For example, the second sequence number is 0, the third sequence number is 1, and the second sequence number group includes: {0, 1, 2, 3...}.

[0155] Optionally, the duplicate message may also include the destination address of the last anycast message, the duplicate message corresponds to the anycast message received by the current network device, and the last anycast message corresponds to the anycast message received by the network device before receiving the current anycast message. Taking the second anycast message as an example, the anycast message received by the network device before receiving the second anycast message is the first anycast message. The destination address of the first anycast message is the address information of the first controller. Therefore, the network device may also add the address information of the first controller in the second duplicate message. So that after the second controller receives the current duplicate message, when it is determined that the target message is lost before the current duplicate message, the second controller can determine the target controller corresponding to the target message according to the destination address of the anycast message carried by the current duplicate message. Then, the second controller may request the target controller to retransmit the lost target message. For example, after the second controller receives the second duplicate message, it determines that there is a lost target message before the second duplicate message, that is, the first duplicate message is not successfully received. The second controller requests the first controller to retransmit the first original message corresponding to the first duplicate message according to the address information of the first controller carried by the second duplicate message. The second controller writes the first anycast message carried by the first original message into the disk according to the first original message from the first controller, thereby retransmitting and writing the lost target message, and effectively improving the reliability and performance of the system.

[0156] Exemplarily, the second field in the duplicate message carries the destination address of the previous anycast message, and the second field is a reserved field in the duplicate message or a newly added field in the duplicate message.

[0157] D4. The first controller adds the second original message to the cache queue, and the first controller suspends processing of the messages in the cache queue.

[0158] Step D4 is similar to the aforementioned step S4, and after receiving the second original message, the first controller puts the second original message into the cache queue, which will not be described in detail here.

[0159] D5. The second controller detects whether the second serial number and the third serial number are continuous.

[0160] Step D5 is similar to the aforementioned step S5, after receiving the second duplicate message, the second controller extracts the third sequence number from the second duplicate message, and then detects whether the third sequence number is continuous with the second sequence number.

[0161] If the third sequence number is continuous with the second sequence number, the third controller determines that there is no lost target message between the second duplicate message and the first duplicate message, and executes step D6. For example, if the third sequence number is 4, the second sequence number is 3, and the second sequence number group is {0, 1, 2, 3, 4, ...}, then the third sequence number is considered to be continuous with the second sequence number.

[0162] If the third sequence number is not continuous with the second sequence number, the third controller considers that there is a lost target message between the second duplicate message and the first duplicate message, and executes step S7. For example, if the third sequence number is 5, the second sequence number is 2, and the second sequence number group is {0, 1, 2, 3, 4, ...}, then the third sequence number is considered to be not continuous with the second sequence number.

[0163] Optionally, if the third sequence number is in a decreasing relationship with the second sequence number, for example, the third sequence number is 6, the second sequence number is 5, and the second sequence number group is {0, 1, 2, 3, 4...}, it is considered that the second controller is out of order in the process of receiving the duplicate message sent by the network device. The second controller performs error processing.

[0164] D6. If the second sequence number is continuous with the third sequence number, the second controller confirms that there is no lost target message between the second copy message and the first copy message, and the second controller writes the second copy message to the disk.

[0165] Step D6 is similar to the aforementioned step S6. The second controller determines, based on the detection result, that there is no lost target message between the second copy message and the first copy message, that is, the second copy message and the first copy message are continuous. The second controller writes the second copy message to the disk, and no write error or other problems occur. Therefore, the second controller writes the second copy message to the disk.

[0166] Optionally, after the second controller successfully writes the second copy message to the disk, the second controller sends a processing notification of the second copy message to the first controller, and the processing notification of the second copy message is used to indicate that the second copy message has been written to the disk, so that the first controller can clean up the cache queue in time, for example, clean up the second original message corresponding to the second copy message from the cache queue, saving storage space of the first controller.

[0167] D7. If the second sequence number is not continuous with the third sequence number, the second controller confirms that there is a lost target message between the second copy message and the first copy message, and the second controller requests to retransmit the target message.

[0168] Step D7 is similar to the aforementioned step S7. The second controller determines, based on the detection results, that the second copy message is discontinuous with the first copy message and that there is a lost target message. The second controller then requests retransmission of the target message. The target message in step D7 refers to the copy message lost between the second copy message and the first copy message.

[0169] In another possible implementation manner, the first controller triggers the retransmission of the target message.

[0170] Optionally, after the second controller successfully writes the second copy message to the disk, the second controller sends a processing notification of the second copy message to the first controller, and the processing notification of the second copy message is used to indicate that the second copy message has been written to the disk, so that the first controller can clean up the cache queue in time, for example, clean up the second original message corresponding to the second copy message from the cache queue, saving storage space of the first controller.

[0171] In the embodiment of the present application, the second controller can determine whether packet loss occurs during the transmission of the duplicate message according to the sequence number carried by the received duplicate message. This avoids abnormal system behavior or degradation of system performance due to loss of anycast messages. This effectively improves the reliability and performance of the system. This ensures anycast reliability.

[0172] In combination with the above-mentioned embodiment, the following describes how the second controller requests to retransmit the target message. Figure 6 , Figure 6 Schematic diagram of an embodiment of a message processing method in an embodiment of the present application. A message processing method proposed in an embodiment of the present application further includes:

[0173] F1. The first controller receives a message acquisition request from the second controller.

[0174] In step F1, after the second controller determines that the target message is lost, the second controller initiates a retransmission process of the target message.

[0175] In a possible implementation, the second controller broadcasts the message acquisition request regarding the target message by means of broadcast access, and one or more controllers managed by the network device receive the message acquisition request.

[0176] In another possible implementation, the duplicate message may also include the destination address of the last anycast message, the duplicate message corresponds to the anycast message received by the current network device, and the last anycast message corresponds to the anycast message received by the network device before receiving the current anycast message. The second controller obtains the address of the last anycast message carried in the currently received duplicate message. If the second controller determines that there is a lost target message based on the sequence number #1 of the currently received duplicate message and the sequence number #2 of the previously received duplicate message cached locally (second controller), for example, the sequence number #1 is not continuous with the sequence number #2. Then, the second controller uses the address of the last anycast message carried by the currently received duplicate message as the address information of the anycast message corresponding to the target message. Taking the example that the address information of the anycast message corresponding to the target message is the address information of the first controller, after the second controller determines the address information of the first controller from the currently received duplicate message, the second controller sends the message acquisition request to the first controller.

[0177] Specifically, the message acquisition request carries the target sequence number included in the target message, and the target sequence number is the sequence number carried by the target message. After the second controller determines that the target message is lost based on the sequence numbers carried by the two received duplicate messages, it determines the sequence number of the lost target message based on the sequence numbers of the two duplicate messages. For example, the second sequence number of the first duplicate message received by the second controller is 5, and the third sequence number of the second duplicate message most recently received by the second controller is 7. Since 5 and 7 are incremented but not continuous, packet loss is detected, so the sequence number of the lost target message is determined to be 6. The sequence number 6 is carried in the message acquisition request sent by the second controller to the first controller.

[0178] F2. The first controller determines a target message from the cache queue according to the message acquisition request.

[0179] In step F2, the first controller is taken as an example for explanation. After receiving the message acquisition request, the first controller finds the target message including the target sequence number from the cache queue according to the target sequence number in the message acquisition request.

[0180] F3. The first controller sends a target message to the second controller.

[0181] In step F3, after the first controller determines the target message from the cache queue, the first controller determines the second controller according to the message acquisition request. Then, the first controller sends the target message to the second controller. Correspondingly, after receiving the target message, the second controller extracts the anycast message from the target message and writes the anycast message to the disk.

[0182] Optionally, after the second controller writes the anycast message of the target message to the disk, the second controller sends a processed notification of the target message to the first controller, and the processed notification of the target message indicates that the anycast message corresponding to the target message has been written to the disk. The first controller removes the target message from the cache queue according to the processed notification of the target message, so as to save storage space of the first controller.

[0183] In the embodiment of the present application, the controller on the UD side, such as the second controller, can also request retransmission of the lost target message by sending a message acquisition request to ensure that the lost packet data can be successfully written to the disk. Ensure anycast reliability.

[0184] In combination with the above-mentioned embodiment, the first controller triggers the retransmission of the duplicate message in response to the buffer time of the buffer queue. Figure 7 , Figure 7 Schematic diagram of an embodiment of a message processing method in an embodiment of the present application. A message processing method proposed in an embodiment of the present application further includes:

[0185] G1. The first controller detects whether the cache time of the first original message in the cache queue has timed out.

[0186] In step G1, after the first controller lists the first original message in the cache queue, it records the cache time for the first original message. When the first controller receives the processed notification of the first duplicate message from the second controller, the first controller removes the first original message from the cache queue and clears the cache time of the first original message. The first controller sets a timeout for the cache time. When the cache time of an original message is greater than or equal to the timeout, the retransmission processing of the original message is triggered.

[0187] Exemplarily, the first controller can determine whether the cache time of the original message has timed out by periodically detecting the original message cached in the cache queue. For example, the first controller detects the original message cached in the cache queue at a frequency of scanning once every 1 second. When the first controller detects that the same original message is cached in the cache queue for three consecutive times, the first controller determines that the original message has timed out and enters step G2.

[0188] G2. If the timeout occurs, the first controller determines the address information of the second controller according to the first anycast message included in the first original message.

[0189] In step G2, in a possible implementation, taking the cache time of the first original message being greater than or equal to the timeout time as an example, after the first controller determines that the cache time of the first original message has timed out, the first controller determines the address information of the second controller based on the first anycast message included in the first original message. The first controller may perform semantic analysis based on the first anycast message to determine the address information of the second controller. Alternatively, the first controller may also send a request to the network device to request the destination address of the copy message (i.e., the first copy message) corresponding to the first anycast message. Then, the first controller receives a response from the network device, which carries the address information of the second controller. After obtaining the address information of the second controller, the first controller generates a first copy message based on the first anycast message, and the destination address of the first copy message is the address information of the second controller. The first controller sends the first copy message to the second controller.

[0190] In another possible implementation, illustratively, taking the cache time of the first original message being greater than or equal to the timeout time as an example, after the first controller determines that the cache time of the first original message has timed out, the first controller sends a timeout notification of the first original message to the network device, and the timeout notification indicates that the cache time of the first original message in the cache queue of the first controller has timed out. The network device determines, based on the timeout notification, that an abnormality has occurred in the write disk operation of the first duplicate message by the second controller, and the network device resends the first duplicate message to the second controller.

[0191] G3. The first controller sends a first copy message to the second controller.

[0192] In step G3, in a possible implementation manner, after the first controller generates the first copy message, the first controller sends the first copy message to the second controller.

[0193] In another possible implementation manner, after the first controller obtains the first anycast message from the first original message, the first controller forwards the first anycast message to the second controller.

[0194] In another possible implementation manner, the first controller notifies the network device to send the first copy message to the second controller.

[0195] In the embodiment of the present application, the cache queue of the first controller sets a cache timeout to prevent the long-term accumulation of original messages in the cache queue from occupying the cache space of the first controller. In addition, by detecting whether the cache time of the original message has timed out, the retransmission of the anycast message corresponding to the original message is triggered. When the copy message corresponding to the anycast message is lost, the first controller can actively retransmit the anycast message to the second controller to ensure that the lost data can be successfully written to the disk. Ensure anycast reliability.

[0196] In combination with the above-mentioned embodiment, the following describes that the first controller writes the first original message to the disk in response to the abnormality of the second controller. Figure 8 , Figure 8 Schematic diagram of an embodiment of a message processing method in an embodiment of the present application. A message processing method proposed in an embodiment of the present application further includes:

[0197] H1. The first controller detects whether the cache time of the first original message in the cache queue has timed out.

[0198] H2. If the timeout occurs, the first controller determines the address information of the second controller according to the first anycast message included in the first original message.

[0199] Steps H1 to H2 are similar to the aforementioned steps G1 to G2 and are not described in detail here.

[0200] H3. The first controller detects whether the second controller works normally.

[0201] In step H3, after the first controller determines the second controller, the first controller further detects whether the second controller is working properly. Specifically, because the second controller fails to successfully write the first copy message within a long period of time (the cache time of the first original message has timed out), the second controller does not send a notification of processing of the first copy message, which causes the cache time of the first original message in the cache queue of the first controller to time out. Therefore, the above-mentioned write failure may be caused by abnormal operation of the second controller.

[0202] In the embodiment of the present application, there is no limitation on how the first controller detects whether the second controller is working properly. For example, the first controller may directly send a working status query request to the second controller, and the first controller determines the working status of the second controller based on the feedback from the second controller. For another example, the first controller sends a working status query request to the second controller to a network device or a network management device, and the working status of the second controller is determined by the network device or the network management device, and the network management device is used to manage network devices and controllers in the current network.

[0203] Optionally, when the first controller determines that the second controller is operating normally, the first controller may trigger a retransmission process to the second controller. The specific retransmission method is similar to the aforementioned step G3 and will not be described in detail here.

[0204] When the first controller determines that the second controller is abnormal, it goes to step H4.

[0205] H4. If the second controller is abnormal, the first original message is written to the disk.

[0206] In step H4, when the first controller determines that the working state of the second controller is abnormal, the second controller writes the first original message to the disk. Specifically, the second controller writes the first anycast message in the first original message to the disk.

[0207] It should be noted that in an embodiment of the present application, the controller writes the original message or the copied message to the disk, including but not limited to: the controller writes the original message or the copied message to the disk, or the controller writes the anycast message included in the original message or the copied message to the disk, or the controller performs a write operation on the disk in response to the anycast message, etc.

[0208] In the embodiment of the present application, the cache queue of the first controller sets a cache timeout to avoid long-term backlog of original messages in the cache queue occupying the cache space of the first controller. In addition, by detecting whether the cache time of the original message has timed out, a trigger is triggered to detect whether the second controller is working properly. When the second controller works abnormally, the first controller locally performs the write disk processing of the anycast message to ensure that the packet loss data can be successfully written to the disk. The packet loss data refers to the anycast message corresponding to the original message. Ensure anycast reliability.

[0209] In combination with the above embodiments, the following describes the application scenarios proposed in the embodiments of the present application. Fig. 9 , Fig. 9 A schematic diagram of an application scenario proposed in an embodiment of the present application. Fig. 9 In the example, the network device manages controllers A0 to A3, and the network device is also used to manage controllers B0 to B3. The above controllers A0 to A3 and controllers B0 to B3 belong to storage controllers. The storage controller is used to manage disks. Exemplarily, the storage controller can be a server, which includes a processor and a network card responsible for communication. The network device is used to forward anycast messages from the host to the storage controller in the form of original messages and copied messages. Exemplarily, the network device can be a switch.

[0210] Each of the above storage controllers (including controllers A0 to A3 and controllers B0 to B3) creates a queue pair context of the storage controller according to the number of network devices, and then the storage controller configures the queue pair context of the storage controller to the network device. The queue pair context of each storage controller includes the address information of the storage controller and the serial number group of the storage controller, and the serial number group of each storage controller has a unique corresponding relationship with the address information of the storage controller. Optionally, the initial serial number of the serial number group of each storage controller is 0.

[0211] For anycast message Msg I, the destination address of the anycast message Msg I is controller A0. The network device calculates the destination address of the duplicate message Msg I as controller B0 according to the semantics of the anycast message Msg I. The network device forwards the anycast message Msg I to controller A0 in the form of the original message Msg I, and the sequence number carried by the original message Msg I is UDPSN=0. The network device replicates the original message Msg I to obtain a duplicate message Msg I, and the destination address of the duplicate message Msg I is controller B0, and the sequence number carried by the duplicate message Msg I is UDPSN=0. Then, the network device sends the original message Msg I to controller A0, and the network device sends the duplicate message Msg I to controller B0. The sequence number of controller A0 in the network device increases from 0 to 1, and the sequence number of controller B0 in the network device increases from 0 to 1.

[0212] For anycast message Msg II, the destination address of the anycast message Msg II is controller A1. The network device calculates the destination address of the duplicate message Msg II as controller B0 based on the semantics of the anycast message Msg II. The network device forwards the anycast message Msg II to controller A1 in the form of the original message Msg II, and the sequence number carried by the original message Msg II is UDPSN=0. The network device replicates the original message Msg II to obtain a duplicate message Msg II, and the destination address of the duplicate message Msg II is controller B0, and the sequence number carried by the duplicate message Msg II is UDPSN=1. Then, the network device sends the original message Msg II to controller A1, and the network device sends the duplicate message Msg II to controller B0. The sequence number of controller A1 in the network device increases from 0 to 1, and the sequence number of controller B0 in the network device increases from 1 to 2.

[0213] For anycast message Msg III, the destination address of the anycast message Msg III is controller A2. The network device calculates the destination address of the duplicate message Msg III as controller B1 based on the semantics of the anycast message Msg III. The network device forwards the anycast message Msg III to controller A2 in the form of the original message Msg III, and the sequence number carried by the original message Msg III is UDPSN=0. The network device replicates the original message Msg III to obtain a duplicate message Msg III, and the destination address of the duplicate message Msg III is controller B1, and the sequence number carried by the duplicate message Msg III is UDPSN=0. Then, the network device sends the original message Msg III to controller A2, and the network device sends the duplicate message Msg III to controller B1. The sequence number of controller A2 in the network device increases from 0 to 1, and the sequence number of controller B1 in the network device increases from 0 to 1.

[0214] Packet loss detection in anycast messaging scenarios is achieved by adding an increasing sequence number associated with the destination address in the message.

[0215] In conjunction with the above embodiments, please refer to Fig.10 , Fig.10 A schematic diagram of another application scenario proposed in an embodiment of the present application. Fig.10 The illustrated scene and Fig. 9 The illustrated scenario is similar. The network device sends an original message Msg I to the controller A0 according to the anycast message Msg I, and the sequence number carried by the original message Msg I is 100; the network device sends a duplicate message Msg I to the controller B0 according to the anycast message Msg I, and the sequence number carried by the duplicate message Msg I is 100. The network device sends an original message Msg II to the controller A1 according to the anycast message Msg II, and the sequence number carried by the original message Msg II is 101; the network device sends a duplicate message Msg II to the controller B0 according to the anycast message Msg II, and the sequence number carried by the duplicate message Msg II is 101. The network device sends an original message Msg III to controller A2 according to the anycast message Msg III, and the sequence number carried by the original message MsgIII is 102; the network device sends a duplicate message MsgIII to controller B0 according to the anycast message Msg III, and the sequence number carried by the duplicate message Msg III is 102. The network device sends an original message Msg IIII to controller A3 according to the anycast message Msg IIII, and the sequence number carried by the original message Msg IIII is 103; the network device sends a duplicate message Msg IIII to controller B0 according to the anycast message Msg IIII, and the sequence number carried by the duplicate message Msg IIII is 103.

[0216] During the transmission process, controller B0 determines that duplicate message Msg II and duplicate message Msg III are lost according to the sequence number of the duplicate message. Controller B0 determines that the sequence number corresponding to duplicate message Msg II is 101, and controller B0 determines that the sequence number corresponding to duplicate message Msg III is 102, then the second controller sends a message acquisition request for duplicate message Msg II and a message acquisition request for duplicate message Msg III in a broadcast form, the message acquisition request for duplicate message Msg II carries the sequence number 101 of duplicate message Msg II, and the message acquisition request for duplicate message Msg III carries the sequence number 102 of duplicate message Msg III. Controller A1 determines the original message Msg II in response to the message acquisition request for duplicate message Msg II, and then controller A1 forwards the original message Msg II to controller B0. Controller B0 obtains the anycast message Msg II in the original message Msg II, and writes the anycast message Msg II to the disk. Controller A2 determines the original message Msg III in response to the message acquisition request of the duplicate message Msg III, and then forwards the original message Msg III to controller B0. Controller B0 acquires the anycast message Msg III in the original message Msg III and writes the anycast message Msg III to the disk.

[0217] Through the above method, packet retransmission is achieved when multiple data packets are lost in anycast scenarios.

[0218] In conjunction with the above embodiments, please refer to Fig.11 , Fig.11 A schematic diagram of another application scenario proposed in an embodiment of the present application. Fig.11 The illustrated scene and Fig. 9The illustrated scenario is similar. The duplicate message sent by the network device carries the destination address of the anycast message of the previous duplicate message. The network device sends a duplicate message Msg I to the controller B0. Since the duplicate message MsgI is the first duplicate message, it does not carry the destination address of the anycast message of the previous duplicate message. The network device sends a duplicate message Msg II to the controller B0. The duplicate message Msg II carries the destination address of the anycast message Msg I corresponding to the duplicate message Msg I, and the destination address of the anycast message Msg I is the address of the controller A0. Therefore, the duplicate message Msg II also includes the address information of the controller A0. The network device sends a duplicate message Msg III to the controller B0. The duplicate message Msg III carries the destination address of the anycast message Msg II corresponding to the duplicate message Msg II, and the destination address of the anycast message Msg II is the address of the controller A1. Therefore, the duplicate message Msg III also includes the address information of the controller A1.

[0219] During the transmission process, after controller B0 receives duplicate message Msg III, it obtains the serial number of duplicate message Msg III as 102, while the serial number carried by the previous duplicate message received by controller B0 is 100, and 102 is not continuous with 100. Controller B0 determines that there is a lost duplicate message between duplicate message Msg III and duplicate message Msg I, and the lost duplicate message is used as the target message, and the serial number of the target message is 101. Controller B0 sends a message acquisition request for the target message to controller A1 according to the address information of controller A1 carried in duplicate message Msg III, and the message acquisition request for the target message carries the target serial number 101. Controller A1 determines the corresponding original message Msg II according to the target serial number in the message acquisition request for the target message, and the serial number of the original message Msg II is the same as the target serial number. Then, controller A1 sends the original message Msg II to controller B0, where the original message Msg II includes anycast message Msg II, to achieve retransmission of anycast message Msg II. Controller B0 obtains anycast message Msg II in the original message Msg II and writes anycast message Msg II to the disk.

[0220] Through the above method, packet retransmission is achieved when a single data packet is lost in the anycast scenario.

[0221] In conjunction with the above embodiments, please refer to Fig.12 , Fig.12 A schematic diagram of another application scenario proposed in an embodiment of the present application. Fig.12 The illustrated scene and Fig. 9The illustrated scenario is similar. After receiving the anycast message Msg III, the network device sends the original message Msg III to the controller A2 and sends the duplicate message Msg III to the controller B0. Before the controller B0 completes processing the duplicate message Msg III, the controller B0 fails. The controller A0 scans the cache queue at a frequency of once per second. The original message included in the cache queue can also be called the request suspended by the cache queue. When the controller A0 finds the original message Msg III in the cache queue three times in a row, that is, the duplicate message Msg III corresponding to the original message Msg III has not been processed. The controller A0 triggers the retransmission of the anycast message Msg III, that is, the controller A0 determines that the destination address of the duplicate message is the controller B0 according to the semantics of the anycast message Msg III. Then, the controller A2 sends the original message Msg III to the controller B0 to realize the retransmission of the anycast message Msg III. The controller B0 obtains the anycast message Msg III in the original message Msg III and writes the anycast message Msg III to the disk.

[0222] Through the above method, packet retransmission is achieved when the tail data packet is lost in the anycast scenario.

[0223] In conjunction with the above embodiments, please refer to Fig.13 , Fig.13 A schematic diagram of another application scenario proposed in an embodiment of the present application. Fig.13 The illustrated scene and Fig. 9 The illustrated scenario is similar. After the network device receives the anycast message Msg I, it sends the original message Msg I to the controller A2 and sends the duplicate message Msg I to the controller B0. Before the controller B0 completes processing the duplicate message Msg I, the controller B0 fails. The controller A0 scans the cache queue at a frequency of once per second. The original message included in the cache queue can also be called the request suspended by the cache queue. When the controller A0 finds the original message Msg I in the cache queue for three consecutive times, the duplicate message Msg I corresponding to the original message Msg I has not been processed. The controller A0 determines that the destination address of the duplicate message is the controller B0 based on the semantics of the anycast message Msg I. Then, the controller A0 detects whether the controller B0 is working normally. If the working state of the controller B0 is abnormal, the controller A0 writes the anycast message Msg I to the disk locally.

[0224] Through the above method, anycast reliability is guaranteed, and reliable data processing is achieved in the scenario of controller failure.

[0225] It should be noted that, in addition to being applicable to anycast communication in RDMA scenarios, the embodiments of the present application can also be applied to anycast communication in TCP scenarios, and the embodiments of the present application are not limited to this.

[0226] exist Figures 1 to 13 On the basis of the corresponding embodiments, in order to better implement the above-mentioned solutions of the embodiments of the present application, related devices for implementing the above-mentioned solutions are also provided below.

[0227] In this embodiment, the network device, the first controller or the second controller in the storage system may be, for example, a server.

[0228] See also Fig.14 , Fig.14 A schematic diagram of the structure of a server 1401 provided in an embodiment of the present application. Fig.14 As shown, the server 1401 includes a processor 1403, and the processor 1403 is coupled to a system bus 1405. The processor 1403 can be one or more processors, each of which can include one or more processor cores. A display adapter (video adapter) 1407, which can drive a display 1409, and the display 1409 is coupled to the system bus 1405. The system bus 1405 is coupled to an input / output (I / O) bus via a bus bridge 1411. An I / O interface 1415 is coupled to the I / O bus. The I / O interface 1415 communicates with a variety of I / O devices, such as an input device 1417 (such as a touch screen, etc.), an external memory 1421 (for example, a hard disk, a floppy disk, an optical disk or a USB flash drive), a multimedia interface, etc.). A transceiver 1423 (which can send and / or receive radio communication signals), and an external USB port 1425. Optionally, the interface connected to the I / O interface 1415 can be a USB interface.

[0229] The processor 1403 may be any conventional processor, including a reduced instruction set computing (RISC) processor, a complex instruction set computing (CISC) processor, or a combination thereof. Alternatively, the processor may be a dedicated device such as an ASIC.

[0230] The hard disk drive interface 1431 is coupled to the system bus 1405. The hard disk drive interface is connected to the hard disk drive 1433. The internal memory 1435 is coupled to the system bus 1405. The data running in the internal memory 1435 may include an operating system (OS) 1437 of the server 1401, an application program 1436, and a scheduler.

[0231] The processor 1403 can communicate with the internal memory 1435 through the system bus 1405, and retrieve instructions and data in the application program 1436 from the internal memory 1435, thereby implementing program execution.

[0232] The operating system consists of a shell 1439 and a kernel 1438. The shell 1439 is an interface between the user and the kernel of the operating system. The shell is the outermost layer of the operating system. The shell manages the interaction between the user and the operating system: it waits for user input, interprets user input to the operating system, and processes various operating system output results.

[0233] The kernel 1438 consists of those parts of the operating system that manage memory, files, peripherals, and system resources. The kernel 1438 interacts directly with the hardware. The operating system kernel usually runs processes and provides communication between processes, provides CPU time slice management, interrupts, memory management, IO management, etc.

[0234] See also Fig.15 , Fig.15 A schematic diagram of the structure of a server provided in an embodiment of the present application. The server is a network device, a first controller and / or a second controller in a storage system. The server includes: a transceiver module 1501 and a processing module 1502, wherein the transceiver module 1501 may also include a receiving module and a sending module.

[0235] In one embodiment, the server is a network device in a storage system, and the server includes:

[0236] The transceiver module 1501 is configured to receive a first anycast message, wherein the destination address of the first anycast message points to the first controller;

[0237] The transceiver module 1501 is further configured to send a first original message to the first controller, wherein the first original message includes the first anycast message, the destination address of the first original message points to the first controller, the first original message includes a first sequence number, the first sequence number belongs to a first sequence number group, and the first sequence number group has a corresponding relationship with the first controller;

[0238] The transceiver module 1501 is also used to send a first copy message to the second controller, wherein the first copy message includes the first anycast message, the destination address of the first copy message points to the second controller, the first copy message includes a second sequence number, the second sequence number belongs to a second sequence number group, the second sequence number group has a corresponding relationship with the second controller, and the first sequence number carried in the first original message is the same as the second sequence number carried in the first copy message.

[0239] In a possible implementation, the first sequence number increases as the network device sends the first original message; and the second sequence number increases as the network device sends the first duplicate message.

[0240] In a possible implementation, the processing module 1502 is configured to allocate, by the network device, the first sequence number group to the first controller according to configuration information of the first controller.

[0241] In a possible implementation, the configuration information of the first controller includes: a queue pair context of the first controller, and the queue pair context of the first controller includes address information of the first controller and the first sequence number group.

[0242] In a possible implementation, the processing module 1502 is further configured to allocate the second serial number group to the second controller according to configuration information of the second controller.

[0243] In a possible implementation, the configuration information of the second controller includes: a queue pair context of the second controller, and the queue pair context of the second controller includes address information of the second controller and the second sequence number group.

[0244] In one possible implementation,

[0245] The processing module 1502 is used to determine that the destination of the first replication message is the second controller according to the semantics of the first anycast message.

[0246] In one possible implementation,

[0247] The transceiver module 1501 is also used to receive a second anycast message;

[0248] The processing module 1502 is further configured to determine, according to the semantics of the second anycast message, that the destination of the second replicated message is the second controller;

[0249] The processing module 1502 is further configured to generate a second copy message according to the second anycast message, where the second copy message includes the second anycast message, where the second copy message includes a third sequence number, where the third sequence number is the incremented second sequence number, and where the third sequence number belongs to the second sequence number group;

[0250] The transceiver module 1501 is further configured to send the second copy message to the second controller.

[0251] In a possible implementation manner, the second copy message also includes a destination address of the first anycast message.

[0252] In a possible implementation, the transceiver module 1501 is further configured to receive the first original message sent by the first controller;

[0253] The processing module 1502 is further configured to determine a destination address of the first duplicate message according to the first anycast message carried by the first original message, wherein the destination address of the first duplicate message points to the second controller;

[0254] The transceiver module 1501 is further configured to send the destination address of the first copy message to the first controller.

[0255] In a possible implementation, the first copy message is an unreliable connection UD message, or a User Datagram Protocol UDP message.

[0256] In another embodiment, the server is a first controller in a storage system, and the server includes:

[0257] The transceiver module 1501 is configured to receive a first original message, wherein the first original message includes the first anycast message, the destination address of the first original message points to the first controller, the first original message includes a first sequence number, the first sequence number belongs to a first sequence number group, and the first sequence number group has a corresponding relationship with the first controller;

[0258] The processing module 1502 is used to list the first original message in a cache queue, wherein the cache queue is used to cache messages, the first controller suspends processing of the message in the cache queue, and removes the message from the cache queue in response to a notification that the message has been processed.

[0259] In one possible implementation,

[0260] The transceiver module 1501 is further used to receive a message acquisition request, where the message acquisition request is used to request to acquire a target message, and the message acquisition request carries a target sequence number included in the target message;

[0261] The processing module 1502 is further configured to determine the target message from the cache queue according to the target sequence number in the message acquisition request;

[0262] The transceiver module 1501 is also used to send the target message.

[0263] In one possible implementation,

[0264] The processing module 1502 is further configured to detect whether the cache time of the first original message in the cache queue has timed out;

[0265] The processing module 1502 is further configured to determine address information of a second controller according to the first anycast message included in the first original message if the cache time of the first original message has timed out;

[0266] The transceiver module 1501 is also used to send a first copy message to the second controller, the first copy message includes the first anycast message, the destination address of the first copy message points to the second controller, the first copy message includes a second sequence number, the second sequence number belongs to a second sequence number group, the second sequence number group has a corresponding relationship with the second controller, and the first sequence number carried in the first original message is the same as the second sequence number carried in the first copy message.

[0267] In one possible implementation,

[0268] The processing module 1502 is further configured to detect whether the cache time of the first original message in the cache queue has timed out;

[0269] The processing module 1502 is further configured to determine address information of a second controller according to the first anycast message included in the first original message if the cache time of the first original message has timed out;

[0270] The processing module 1502 is further used to detect whether the second controller works normally;

[0271] The processing module 1502 is further configured to write the first original message to a disk if the second controller is abnormal, wherein the disk is controlled by the second controller to perform a write operation before the second controller is abnormal.

[0272] In another embodiment, the server is a second controller in a storage system, and the server includes:

[0273] The transceiver module 1501 is configured to receive a first copy message, wherein the first copy message includes a first anycast message, the destination address of the first copy message points to the second controller, the first copy message includes a second sequence number, the second sequence number belongs to a second sequence number group, and the second sequence number group has a corresponding relationship with the second controller;

[0274] A processing module 1502 is used to detect whether the second sequence number and a fourth sequence number are continuous, wherein the fourth sequence number is a sequence number carried by a third copy message received by the second controller before receiving the first copy message, and the fourth sequence number belongs to the second sequence number group;

[0275] The transceiver module 1501 is further configured to request retransmission of the target message if the second sequence number is not continuous with the fourth sequence number and there is a target message lost between the third copy message and the first copy message;

[0276] The processing module 1502 is further configured to write the first copy message to a disk if the second sequence number is continuous with the fourth sequence number and there is no lost target message between the third copy message and the first copy message.

[0277] In one possible implementation,

[0278] The processing module 1502 is further configured to determine a target sequence number according to the second sequence number and the fourth sequence number, where the target sequence number is a sequence number carried by the target message;

[0279] The transceiver module 1501 is further used to send a message acquisition request, where the message acquisition request is used to request to acquire the target message, and the message acquisition request carries the target sequence number included in the target message.

[0280] In one possible implementation,

[0281] The transceiver module 1501 is further configured to obtain a destination address of the anycast message corresponding to the target message from the first duplicate message;

[0282] The transceiver module 1501 is further configured to send the message acquisition request to the first controller according to the address information of the anycast message corresponding to the target message, and the address information of the anycast message corresponding to the target message points to the first controller.

[0283] In one possible implementation,

[0284] The transceiver module 1501 is further configured to receive the first duplicate message from the first controller.

[0285] In one possible implementation,

[0286] The transceiver module 1501 is further configured to send a notification indicating that the first copy message has been processed, where the notification indicating that the first copy message has been processed is used to indicate that the first copy message has been written into the disk.

[0287] In a possible implementation, the transceiver module 1501 is further configured to receive the first duplicate message from a network device.

[0288] In one possible implementation,

[0289] The first copy message is an unreliable connection UD message, or a User Datagram Protocol UDP message.

[0290] An embodiment of the present application also provides a computer program product, which, when executed on a computer, enables the computer to execute the steps executed by the aforementioned network device, the first controller or the second controller.

[0291] A computer-readable storage medium is also provided in an embodiment of the present application. The computer-readable storage medium stores a program for signal processing. When the program is run on a computer, the computer executes the steps executed by the aforementioned network device, the first controller or the second controller.

[0292] The network device, the first controller or the second controller provided in the embodiment of the present application may specifically be a chip, and the chip includes: a processing unit and a communication unit, wherein the processing unit may be, for example, a processor, and the communication unit may be, for example, an input / output interface, a pin or a circuit, etc. The processing unit may execute the computer execution instructions stored in the storage unit so that the chip in the execution device executes the message processing method described in the above embodiment. Optionally, the storage unit is a storage unit in the chip, such as a register, a cache, etc. The storage unit may also be a storage unit located outside the chip in the wireless access device, such as a read-only memory (ROM) or other types of static storage devices that can store static information and instructions, a random access memory (RAM), etc.

[0293] Those skilled in the art can clearly understand that, for the convenience and brevity of description, the specific working processes of the systems, devices and units described above can refer to the corresponding processes in the aforementioned method embodiments and will not be repeated here.

[0294] In the several embodiments provided in the present application, it should be understood that the disclosed systems, devices and methods can be implemented in other ways. For example, the device embodiments described above are only schematic. For example, the division of the units is only a logical function division. There may be other division methods in actual implementation, such as multiple units or components can be combined or integrated into another system, or some features can be ignored or not executed. Another point is that the mutual coupling or direct coupling or communication connection shown or discussed can be an indirect coupling or communication connection through some interfaces, devices or units, which can be electrical, mechanical or other forms.

[0295] The units described as separate components may or may not be physically separated, and the components shown as units may or may not be physical units, that is, they may be located in one place or distributed on multiple network units. Some or all of the units may be selected according to actual needs to achieve the purpose of the solution of this embodiment.

[0296] In addition, each functional unit in each embodiment of the present application may be integrated into one processing unit, or each unit may exist physically separately, or two or more units may be integrated into one unit. The above-mentioned integrated unit may be implemented in the form of hardware or in the form of software functional units.

[0297] If the integrated unit is implemented in the form of a software functional unit and sold or used as an independent product, it can be stored in a computer-readable storage medium. Based on this understanding, the technical solution of the present application is essentially or the part that contributes to the prior art or all or part of the technical solution can be embodied in the form of a software product, and the computer software product is stored in a storage medium, including a number of instructions to enable a computer device (which can be a personal computer, a server, or a network device, etc.) to perform all or part of the steps of the method described in each embodiment of the present application. The aforementioned storage medium includes: various media that can store program codes, such as a USB flash drive, a mobile hard disk, a read-only memory, a random access memory, a magnetic disk or an optical disk.

Claims

1. A message processing method, characterized in that: The method is applied to a network device, and the method comprises: The network device receives a first anycast message, where a destination address of the first anycast message points to a first controller; The network device sends a first original message to the first controller, wherein the first original message includes the first anycast message, a destination address of the first original message points to the first controller, the first original message includes a first sequence number, the first sequence number belongs to a first sequence number group, and the first sequence number group has a corresponding relationship with the first controller; The network device sends a first copy message to the second controller, wherein the first copy message includes the first anycast message, the destination address of the first copy message points to the second controller, the first copy message includes a second sequence number, the second sequence number belongs to a second sequence number group, the second sequence number group has a corresponding relationship with the second controller, and the first sequence number carried in the first original message is the same as the second sequence number carried in the first copy message.

2. The method according to claim 1, characterized in that The first sequence number increases as the network device sends the first original message; The second sequence number increases as the network device sends the first copy message.

3. The method according to claim 1 or 2, characterized in that: The method further comprises: The network device determines, according to the semantics of the first anycast message, that the destination of the first replicated message is the second controller.

4. The method according to any one of claims 1 to 3, characterized in that The method further comprises: The network device allocates the first sequence number group to the first controller according to configuration information of the first controller.

5. The method according to claim 4, characterized in that The configuration information of the first controller includes: a queue pair context of the first controller, and the queue pair context of the first controller includes address information of the first controller and the first sequence number group.

6. The method according to any one of claims 1 to 5, characterized in that The method further comprises: The network device allocates the second sequence number group to the second controller according to the configuration information of the second controller.

7. The method according to claim 6, characterized in that The configuration information of the second controller includes: a queue pair context of the second controller, and the queue pair context of the second controller includes address information of the second controller and the second sequence number group.

8. The method according to any one of claims 1 to 7, characterized in that After the network device receives the first anycast message, the method further includes: The network device receives a second anycast message; The network device determines, according to the semantics of the second anycast message, that the destination of the second replicated message is the second controller; The network device generates a second copy message according to the second anycast message, where the second copy message includes the second anycast message, the second copy message includes a third sequence number, the third sequence number is the incremented second sequence number, and the third sequence number belongs to the second sequence number group; The network device sends the second copy message to the second controller.

9. The method according to claim 8, characterized in that The second duplicate message also includes a destination address of the first anycast message.

10. The method according to any one of claims 1 to 9, characterized in that The method further comprises: The network device receives the first original message sent by the first controller; The network device determines, according to the first anycast message carried by the first original message, a destination address of the first duplicate message, where the destination address of the first duplicate message points to the second controller; The network device sends the destination address of the first copy message to the first controller.

11. The method according to any one of claims 1 to 10, characterized in that The first copy message is an unreliable connection UD message, or a User Datagram Protocol UDP message.

12. A message processing method, characterized in that: The method is applied to a first controller, and the method comprises: The first controller receives a first original message, wherein the first original message includes the first anycast message, the destination address of the first original message points to the first controller, the first original message includes a first sequence number, the first sequence number belongs to a first sequence number group, and the first sequence number group has a corresponding relationship with the first controller; The first controller lists the first original message in a cache queue, wherein the cache queue is used to cache messages. The first controller suspends processing of the message in the cache queue, and removes the message from the cache queue in response to a notification that the message has been processed.

13. The method according to claim 12, characterized in that The method further comprises: The first controller receives a message acquisition request, where the message acquisition request is used to request to acquire a target message, and the message acquisition request carries a target sequence number included in the target message; The first controller determines the target message from the cache queue according to the target sequence number in the message acquisition request; The first controller sends the target message.

14. The method according to any one of claims 12 or 13, characterized in that The method further comprises: The first controller detects whether the cache time of the first original message in the cache queue has timed out; If the cache time of the first original message has timed out, the first controller determines address information of the second controller according to the first anycast message included in the first original message; The first controller sends a first copy message to the second controller, the first copy message includes the first anycast message, the destination address of the first copy message points to the second controller, the first copy message includes a second sequence number, the second sequence number belongs to a second sequence number group, the second sequence number group has a corresponding relationship with the second controller, and the first sequence number carried in the first original message is the same as the second sequence number carried in the first copy message.

15. The method according to any one of claims 12 to 14, characterized in that: The method further comprises: The first controller detects whether the cache time of the first original message in the cache queue has timed out; If the cache time of the first original message has timed out, the first controller determines address information of the second controller according to the first anycast message included in the first original message; The first controller detects whether the second controller works normally; If the second controller is abnormal, the first controller writes the first original message into the disk, wherein the disk is controlled by the second controller to perform a write operation before the second controller is abnormal.

16. A message processing method, characterized in that: The method is applied to a second controller, and the method comprises: The second controller receives a first replication message, wherein the first replication message includes a first anycast message, a destination address of the first replication message points to the second controller, the first replication message includes a second sequence number, the second sequence number belongs to a second sequence number group, and the second sequence number group has a corresponding relationship with the second controller; The second controller detects whether the second sequence number and a fourth sequence number are continuous, wherein the fourth sequence number is a sequence number carried by a third copy message received by the second controller before receiving the first copy message, and the fourth sequence number belongs to the second sequence number group; If the second sequence number is not continuous with the fourth sequence number, the target message is lost between the third copy message and the first copy message, and the second controller requests to retransmit the target message; If the second sequence number is continuous with the fourth sequence number, there is no lost target message between the third copy message and the first copy message, and the second controller writes the first copy message to the disk.

17. The method according to claim 16, characterized in that The second controller requests retransmission of the target message, including: The second controller determines a target sequence number according to the second sequence number and the fourth sequence number, where the target sequence number is a sequence number carried by the target message; The second controller sends a message acquisition request, where the message acquisition request is used to request to acquire the target message, and the message acquisition request carries the target sequence number included in the target message.

18. The method according to claim 17, characterized in that The second controller requests retransmission of the target message, including: The second controller obtains the destination address of the anycast message corresponding to the target message from the first copy message; The second controller sends the message acquisition request to the first controller according to the address information of the anycast message corresponding to the target message, and the address information of the anycast message corresponding to the target message points to the first controller.

19. The method according to any one of claims 16 to 18, characterized in that: The second controller receives the first copy message, including: The second controller receives the first duplicate message from a network device.

20. The method according to any one of claims 16 to 19, characterized in that The method further comprises: The second controller receives the first duplicate message from the first controller.

21. The method according to any one of claims 16 to 20, characterized in that After the second controller writes the first copy message into the disk, the method further includes: The second controller sends a notification that the first copy message has been processed, where the notification that the first copy message has been processed is used to indicate that the first copy message has been written into the disk.

22. The method according to any one of claims 16 to 21, characterized in that The first copy message is an unreliable connection UD message, or a User Datagram Protocol UDP message.

23. An electronic device, characterized in that: The electronic device comprises a memory and a processor; the memory stores codes, the processor is configured to execute the codes, and when the codes are executed, the electronic device executes the method according to any one of claims 1 to 11.

24. An electronic device, characterized in that: It comprises a memory and a processor; the memory stores codes, the processor is configured to execute the codes, and when the codes are executed, the electronic device executes the method as claimed in any one of claims 12 to 15.

25. An electronic device, characterized in that: The electronic device comprises a memory and a processor; the memory stores codes, the processor is configured to execute the codes, and when the codes are executed, the electronic device executes the method according to any one of claims 16 to 22.

26. A storage system, characterized in that: include: The electronic device as claimed in claim 23, the electronic device as claimed in claim 24 and the electronic device as claimed in claim 25.

27. A computer storage medium, characterized in that The computer storage medium stores instructions, which, when executed by a computer, cause the computer to implement the method of any one of claims 1 to 22.

28. A computer program product, characterized in that The computer program product stores instructions, which, when executed by a computer, cause the computer to implement the method according to any one of claims 1 to 22.