Server based on cloud computing technology and data transmission method thereof

By building a fault-tolerant mechanism in the server network card driver module and using a backup network card to solve network card failures, the continuity and efficiency of data transmission in the cloud computing environment are achieved, avoiding application restarts and repetitive overhead. This is suitable for scenarios such as large-scale distributed AI training.

CN120934992APending Publication Date: 2025-11-11HUAWEI CLOUD COMPUTING TECHNOLOGIES CO LTD
View PDF 0 Cites 0 Cited by

Patent Information

Application Number
CN202410588577.2
Authority / Receiving Office
CN · China
Patent Type
Applications(China)
Current Assignee / Owner
Filing Date
2024-05-10
Publication Date
2025-11-11

AI Technical Summary

Technical Problem

In cloud computing technology, server network card and network connection failures can lead to data transmission failures, affecting task execution efficiency. Existing technologies cannot effectively solve this problem, especially in large-scale distributed AI training scenarios. Network failures can cause training tasks to hang, and existing technologies require application termination, restart, and recovery, resulting in additional computing equipment overhead and user costs.

Method used

A fault-tolerance mechanism is built in the server's network card driver module. After the first network card driver module detects a fault, it switches to the backup network card to perform data transmission, shielding the fault and preventing the application and its processes from terminating and restarting. Data transmission is then performed using the second network card, thus achieving fault tolerance.

Benefits of technology

It effectively solves the problem of network failures affecting data transmission, avoids the termination and restart of applications and their processes, reduces additional computing equipment overhead and user costs, and ensures the continuity and efficiency of data transmission.

✦ Generated by Eureka AI based on patent content.

Smart Images

  • Figure CN120934992A_ABST
    Figure CN120934992A_ABST
Patent Text Reader

Abstract

The invention discloses a server based on a cloud computing technology and a data transmission method thereof, and belongs to the field of servers. The server is provided with a first processor and a second network card, and the first processor is provided with a first application program, a first network card driving module and a first network card. The first application program is used for accessing the first network card, the first network card driving module is used for obtaining a first transmission request generated when the first application program accesses the first network card and providing the first transmission request for the first network card, and the first network card is used for executing data transmission operation indicated by the first transmission request; the first network card driving module is further used for providing the first transmission request for the second network card when the first network card fails to execute the data transmission operation, and the second network card is used for executing the data transmission operation indicated by the first transmission request. According to the application, on the basis of solving the problem that data transmission is affected by network faults, extra computing equipment overhead and user cost caused by termination, restart and recovery of the application program and the process of the application program are avoided.
Need to check novelty before this filing date? Find Prior Art

Description

Technical Field

[0001] This application relates to the field of server technology, and in particular to a server based on cloud computing technology and its data transmission method. Background Technology

[0002] With the development of cloud computing technology, cloud providers are offering more and more types of cloud services, and the implementation methods of cloud services are becoming increasingly complex. At this point, ensuring the performance of cloud services is a pressing issue that all cloud providers need to address.

[0003] Currently, cloud computing technology typically requires multiple servers in a server cluster to collaborate in performing tasks, and these servers need to transfer data with each other. Data transfer between servers is achieved through network connections via their network interface cards (NICs).

[0004] However, the server's network card and network connection may malfunction, causing data transmission failures, which in turn affects the execution efficiency of multiple tasks that need to be performed by the server. Summary of the Invention

[0005] This application provides a server based on cloud computing technology and its data transmission method. This application, while addressing the impact of network failures on data transmission, avoids the additional computing equipment overhead and user costs caused by the termination, restart, and recovery of applications and processes running on the server's processor. The technical solution provided by this application is as follows:

[0006] Firstly, this application provides a server based on cloud computing technology. The server is an infrastructure managed by a cloud management platform. The server is equipped with a first processor, a first application, a first network interface card (NIC) driver module, and a first NIC. The server is also equipped with a second NIC. The first application is used to access the first NIC. The first NIC driver module is used to obtain a first transmission request generated by the first application accessing the first NIC and provide the first transmission request to the first NIC. The first NIC, upon receiving the first transmission request, executes the data transmission operation indicated by the first transmission request. Furthermore, when the first NIC malfunctions during data transmission, the first NIC driver module provides the first transmission request to the second NIC. The second NIC, upon receiving the first transmission request, executes the data transmission operation indicated by the first transmission request.

[0007] As can be seen from this, this application is equivalent to building a fault tolerance mechanism in the first network card driver module. After the first network card driver module detects a fault, it immediately switches to use the second network card to perform data transmission operations, shielding the first application from the fault. This means that the fault tolerance process does not require the participation of the first application, ensuring that the first application and its processes will not terminate, restart, or recover due to the detection of a fault. It can solve the problem of network faults affecting data transmission while avoiding the additional computing equipment overhead and user costs caused by the termination, restart, and recovery of the first application and its processes.

[0008] In one possible implementation, the server also has a network interface card (NIC) configuration interface. The first NIC driver module is further configured to obtain configuration instructions from the NIC configuration interface and, based on the instructions, provide a first transmission request to the second NIC when the first NIC fails to perform data transmission operations.

[0009] By configuring backup network interface cards (NICs), users can determine the backup NIC for each network interface card (NIC) based on factors such as the characteristics of the tasks performed by the server and environmental variables of the server's environment. This further ensures the effectiveness of data transmission operations and task completion. For example, users can determine the backup NIC for each NIC based on its communication domain or the expected data transfer volume of the task performed by the processor on which the NIC is located.

[0010] After the first network interface card (NIC) driver module switches to providing the first transmission request to the second NIC, it can optionally prioritize providing the transmission request to the first NIC each time it needs to, and only switch to providing the transmission request to the second NIC if the data transmission operation indicated by the first NIC fails. Alternatively, after switching to providing the first transmission request to the second NIC, the first NIC driver module can directly provide the transmission request to the second NIC each time it needs to, until the trigger condition for switching back to providing the transmission request to the first NIC is met. This avoids prioritizing the first NIC each time and avoids waiting for the data transmission operation indicated by the first NIC to fail before providing the transmission request to the second NIC, thus improving the execution efficiency of the transmission request.

[0011] In one possible implementation, the triggering condition can be implemented through a duration. For example, the first network card driver module is further configured to provide a third transmission request to the first network card when the duration between the time when the third transmission request needs to be provided to the network card and the time when the first network card driver module last provided a fourth transmission request to the first network card reaches a specified duration. Both the third and fourth transmission requests are transmission requests generated by the first application accessing the first network card. The generation sequence of the third transmission request is later than that of the fourth transmission request, and the generation sequence of the fourth transmission request is no earlier than that of the first transmission request. The first network card driver module is also configured to provide a third transmission request to the second network card when the duration between the time when the third transmission request needs to be provided to the network card and the time when the first network card driver module last provided a fourth transmission request to the first network card has not reached a specified duration.

[0012] In one possible implementation, in response to the first transmission request being a send request, the first network interface card (NIC) driver module is specifically used to write the first transmission request into the work queue for providing transmission requests to the second NIC when the first NIC returns failure information based on the first transmission request; in response to the first transmission request being a receive request, the first NIC driver module is specifically used to write the first transmission request into the work queue for transmission requests to the first NIC and the work queue for transmission requests to the second NIC after obtaining the first transmission request; after the first NIC successfully performs the data transmission operation, the first transmission request is cleared from the work queue for transmission requests to the second NIC; and when the first NIC fails to perform the data transmission operation, the first transmission request is cleared from the work queue for transmission requests to the first NIC.

[0013] This implementation is equivalent to the first network interface card (NIC) driver module switching to provide the first transmission request to the second NIC. Subsequently, when a transmission request needs to be provided to the NIC, it first directly provides the transmission request to the second NIC, and periodically provides transmission requests to the first NIC. The system determines whether the fault in the first NIC has been cleared by checking if the data transmission operation indicated by the transmission request fails. If the data transmission operation indicated by the transmission request fails, it means the fault in the first NIC has not been cleared, and the first NIC driver module continues to provide transmission requests to the second NIC until the next scheduled timeout. If the data transmission operation indicated by the transmission request does not fail, it means the fault in the first NIC has been cleared, and the first NIC driver module subsequently provides transmission requests directly to the first NIC until the data transmission operation indicated by the transmission request fails, at which point it switches back to providing transmission requests to the second NIC.

[0014] In this application, multiple network interface cards (NICs) in the same server can serve as backup NICs for each other. That is, one NIC in the server can be used both as the default NIC and as a backup NIC for other default NICs. For example, the server may also include a second processor, which has a second NIC, a second application program, and a second NIC driver module. The second application program accesses the second NIC, and the second NIC driver module receives and sends a second transmission request generated by the second application program accessing the second NIC. The second NIC then executes the data transmission operation indicated by the second transmission request upon receiving it.

[0015] When the same network interface card (NIC) in a server is used as both a backup NIC and a default NIC, compared to using the NIC only as a backup NIC, the number of idle NICs in the server can be reduced, the redundancy of NICs in the server can be reduced, and the server cluster can be made larger at the same cost.

[0016] In one possible implementation, the first network interface card (NIC) driver module is further configured to obtain first configuration information required for the first NIC to perform data transmission operations, obtain second configuration information required for the second NIC to perform data transmission operations, provide the first and second configuration information to the storage node, obtain other configuration information required for the NICs in other servers to perform data transmission operations from the storage node, and perform configuration operations required for data transmission operations based on the first configuration information, the second configuration information, and other configuration information.

[0017] In one possible implementation, in response to a data transfer operation being a remote direct memory access (RDMA) operation, the configuration information required for any network interface card (NIC) to perform the data transfer operation is used to indicate the information required for any NIC to perform the RDMA operation. The configuration information required for any NIC to perform the data transfer operation indicates at least one or more of the following: memory allocated to any NIC, a work request queue created for any NIC, and a completion queue.

[0018] Secondly, this application provides a data transmission method for a server based on cloud computing technology. The server is an infrastructure managed by a cloud management platform. The server is equipped with a first processor, a first application, a first network interface card (NIC) driver module, and a first NIC. The server is also equipped with a second NIC. The method includes: the first application accessing the first NIC; the first NIC driver module obtaining a first transmission request generated by the first application accessing the first NIC and providing the first transmission request to the first NIC; the first NIC, upon receiving the first transmission request, executing the data transmission operation indicated by the first transmission request; and when the first NIC fails to execute the data transmission operation, the first NIC driver module providing the first transmission request to the second NIC; the second NIC, upon receiving the first transmission request, executing the data transmission operation indicated by the first transmission request.

[0019] In one possible implementation, the server also has a network interface card (NIC) configuration interface. The method further includes: a first NIC driver module obtaining configuration instructions from the NIC configuration interface. When the first NIC fails to perform data transmission operations, the first NIC driver module provides a first transmission request to the second NIC, including: the first NIC driver module, according to the instructions in the configuration command, providing a first transmission request to the second NIC when the first NIC fails to perform data transmission operations.

[0020] In one possible implementation, the method further includes: when the time between when the first network card driver module needs to provide a third transmission request to the network card and the time between when the first network card driver module last provided a fourth transmission request to the first network card reaches a specified time, the first network card driver module provides a third transmission request to the first network card. Both the third transmission request and the fourth transmission request are transmission requests generated by the first application accessing the first network card. The generation sequence of the third transmission request is later than the generation sequence of the fourth transmission request, and the generation sequence of the fourth transmission request is no earlier than the generation sequence of the first transmission request. When the time between when the first network card driver module needs to provide a third transmission request to the network card and the time between when the first network card driver module last provided a fourth transmission request to the first network card does not reach a specified time, the first network card driver module provides a third transmission request to the second network card.

[0021] In one possible implementation, when the first network interface card (NIC) driver module encounters a failure in performing data transmission operations, it provides a first transmission request to the second NIC, including: the first NIC driver module responds to the first transmission request by sending a request; and when the first NIC returns failure information based on the first transmission request, the first NIC driver module writes the first transmission request into a work queue for providing transmission requests to the second NIC.

[0022] In one possible implementation, the first network interface card (NIC) driver module provides a first transmission request to the first NIC, including: the first NIC driver module responds to the first transmission request by receiving a request; after obtaining the first transmission request, the first NIC driver module writes the first transmission request into a work queue for transmission requests to the first NIC and a work queue for transmission requests to the second NIC; after the first NIC successfully performs the data transmission operation, the first transmission request is cleared from the work queue for transmission requests to the second NIC.

[0023] In one possible implementation, when the first network interface card (NIC) driver module fails to perform data transmission operation, it provides a first transmission request to the second NIC, including: the first NIC driver module responds to the first transmission request as a receive request; after obtaining the first transmission request, the first NIC driver module writes the first transmission request into the work queue for transmission requests to the first NIC and the work queue for transmission requests to the second NIC; and when the first NIC fails to perform data transmission operation, it clears the first transmission request from the work queue for transmission requests to the first NIC.

[0024] In one possible implementation, the server further includes a second processor, which includes a second network interface card (NIC), a second application program, and a second NIC driver module. The method also includes: the second application program accessing the second NIC; the second NIC driver module acquiring a second transmission request generated by the second application program accessing the second NIC and providing the second transmission request to the second NIC; and the second NIC, upon receiving the second transmission request, executing the data transmission operation indicated by the second transmission request.

[0025] In one possible implementation, the method further includes: a first network interface card (NIC) driver module obtaining first configuration information required for the first NIC to perform data transmission operations, obtaining second configuration information required for the second NIC to perform data transmission operations, providing the first and second configuration information to the storage node, obtaining other configuration information required for the NICs in other servers to perform data transmission operations from the storage node, and performing configuration operations required for data transmission operations based on the first configuration information, the second configuration information, and the other configuration information.

[0026] In one possible implementation, in response to a data transfer operation being a remote direct memory access (RDMA) operation, the configuration information required for any network interface card (NIC) to perform the data transfer operation is used to indicate the information required for any NIC to perform the RDMA operation. The configuration information required for any NIC to perform the data transfer operation indicates at least one or more of the following: memory allocated to any NIC, a work request queue created for any NIC, and a completion queue.

[0027] Thirdly, this application provides a computing device including a memory and a processor, wherein the memory stores program instructions and the processor executes the program instructions to implement the server provided in the first aspect of this application and any of its possible implementations.

[0028] Fourthly, this application provides a computing device cluster, including multiple computing devices, each computing device including multiple processors and multiple memories, the multiple memories storing program instructions, and the multiple processors executing the program instructions, so that the computing device cluster implements the server provided in the first aspect of this application and any of its possible implementations.

[0029] Fifthly, this application provides a computer-readable storage medium that is a non-volatile computer-readable storage medium, which includes program instructions that, when executed on a computing device, cause the computing device to implement the server provided in the first aspect of this application and any of its possible implementations.

[0030] Sixthly, this application provides a computer program product containing instructions that, when run on a computer, cause the computer to implement the server provided in the first aspect of this application and any of its possible implementations. Attached Figure Description

[0031] Figure 1 This is a schematic diagram of a server cluster and its network for performing large-scale distributed AI training, provided in an embodiment of this application.

[0032] Figure 2 This is a schematic diagram of the implementation scenario of a server and its data transmission method based on cloud computing technology provided in this application embodiment;

[0033] Figure 3 This is a schematic diagram illustrating the deployment of basic resources in a data center, provided in an embodiment of this application.

[0034] Figure 4 This is a schematic diagram of the structure of a server based on cloud computing technology provided in an embodiment of this application;

[0035] Figure 5 This is a schematic diagram of another cloud computing-based server structure provided in an embodiment of this application;

[0036] Figure 6 This is an equivalent schematic diagram of a server based on cloud computing technology provided in an embodiment of this application;

[0037] Figure 7 This is a schematic diagram of a configuration instruction provided in an embodiment of this application;

[0038] Figure 8 This is a schematic diagram of the structure of another cloud computing-based server provided in the embodiments of this application;

[0039] Figure 9 This is a schematic diagram of a server cluster where a server based on cloud computing technology is located, as provided in an embodiment of this application.

[0040] Figure 10 This is a schematic diagram of another server cluster based on cloud computing technology provided in this application embodiment;

[0041] Figure 11This is a flowchart illustrating a data transmission method for a server based on cloud computing technology, as provided in an embodiment of this application.

[0042] Figure 12 This is a flowchart of another data transmission method for a server based on cloud computing technology provided in an embodiment of this application;

[0043] Figure 13 This is a schematic diagram of the structure of a computing device provided in an embodiment of this application;

[0044] Figure 14 This is a schematic diagram of the structure of a computing device cluster provided in an embodiment of this application;

[0045] Figure 15 This is a schematic diagram of another computing device cluster structure provided in an embodiment of this application. Detailed Implementation

[0046] To make the objectives, technical solutions, and advantages of this application clearer, the embodiments of this application will be described in further detail below with reference to the accompanying drawings.

[0047] To facilitate understanding, the technologies and background involved in the embodiments of this application will be introduced below.

[0048] Cloud computing is a type of distributed computing that refers to a network that centrally manages and schedules a large number of computing and storage resources to provide on-demand services to users. These computing and storage resources are provided through clusters of computing devices located in data centers. Furthermore, cloud computing can provide users with various types of services, such as Infrastructure as a Service (IaaS), Platform as a Service (PaaS), and Software as a Service (SaaS). Infrastructure as a Service provides virtual machines or other resources as a service to tenants. Platform as a Service provides a development platform as a service to tenants. Software as a Service provides applications (Apps) as a service to customers.

[0049] An Internet Data Center (IDC) is a facility and related service system that provides operation and maintenance for equipment that centrally collects, stores, processes, and transmits data, based on the Internet. Conceptually, it can be understood as a public, commercial Internet "server room," and it is also a professional IT service and a crucial infrastructure for the IT industry. IDC is not only a service concept but also a network concept; it constitutes part of the network infrastructure resources, like backbone networks and access networks, providing high-end data delivery and high-speed access services. Generally, a tenant's on-premises IDC can be understood as their physical server room, where the tenant utilizes existing Internet communication lines and bandwidth resources to establish a standardized, telecommunications-grade server room environment to provide comprehensive services such as server hosting, leasing, and related value-added services. A cloud data center is an Internet data center deployed using the infrastructure resources owned by cloud vendors.

[0050] A physical machine (PM) is the physical resource used to host virtualization technology. It is also called a physical server. Typically, a physical machine is used to deploy virtual instances. A physical machine has multiple physical devices. For example, a physical server has physical devices such as processors and memory. Multiple virtual instances can be deployed on a single physical machine, sharing the machine's physical resources. Depending on the use case, multiple virtual instances deployed on a single physical machine can belong to the same tenant or to different tenants.

[0051] Direct memory access (DMA), also known as direct memory operation or group data transfer, refers to a data exchange mode where external devices access data directly from the computer's memory without going through the computer's central processing unit (CPU). During data transfer in DMA mode, the computer's CPU issues instructions to the DMA controller, instructing it to control the data transfer. After completing the data transfer, the DMA controller sends a completion message back to the CPU. It can be seen that during DMA data transfer, the computer's CPU does not need to perform data transfer operations, eliminating the need for CPU operations such as instruction fetching, data fetching, and data transfer, thus reducing CPU resource consumption and saving system resources.

[0052] DMA can include remote direct memory access (RDMA) and local DMA. RDMA refers to data transfer directly from the memory of one computer to another over a network, without the intervention of the operating systems of either computer. Local DMA refers to data transfer without the need for a network. Because RDMA does not involve the operating system, it not only saves a significant amount of CPU resources but also improves system throughput and reduces network communication latency, making it widely used in large-scale parallel computer clusters.

[0053] Peripheral Component Interconnect Express (PCIe) bus: a high-speed serial computer expansion bus.

[0054] Compute Express Link (CXL) bus: a high-speed computer fast connection bus.

[0055] Network interface card (NIC): also known as network interface controller, network adapter, or local area network receiver, is a type of computer hardware designed to allow hosts or computing devices to communicate over a network.

[0056] Memory (RAM): Also known as internal memory or main memory, its function is to temporarily store the data processed by the CPU, as well as the data exchanged with external storage devices such as hard drives.

[0057] A queue pair (QP) is a combination of a send queue (SQ) and a receive queue (RQ). The SQ is specifically used to store send requests, and the RQ is specifically used to store receive requests. A work queue (WQ) is a queue that stores work requests (WR). A work queue element (WQE) is an element in the work queue, i.e., a work request. A WQE can be considered a "task specification," issued by software to the hardware, indicating the task the software wants the hardware to perform and its related information. For example, if a WQE instructs the hardware to send 10 bytes of data located at address 0x12345678 to the receiving node, the hardware, upon receiving the task, will retrieve the 10 bytes of data from memory at address 0x12345678 via RDMA and then send the data to the receiving node.

[0058] The completion queue (CQ) is a queue that stores the execution results of job requests. A completion queue element (CQE) is an element in the CQ that indicates whether the operation specified in the job request was executed correctly or failed. If a failure occurred, the completion queue element will also indicate the reason for the failure.

[0059] In cloud computing, multiple servers in a server cluster typically need to collaborate to execute tasks, and task completion also requires data transmission between the servers. Data transmission between servers is achieved through network connections between their network interface cards (NICs). However, both the NICs and network connections can fail. A failure in at least one of these components can lead to data transmission failure, thus affecting the task's execution outcome. Therefore, handling network failures with low overhead and preventing them from causing task problems is of great importance.

[0060] For example, the demand for large-scale distributed artificial intelligence (AI) training in data centers has become increasingly widespread in recent years, especially with the recent acceleration of this demand due to the training of large language models. Distributed AI training refers to dividing a computationally intensive AI training task into many subtasks, distributing these subtasks to multiple servers for processing, and then combining the processing results from all servers handling the subtasks to obtain the final training result. Therefore, in scenarios involving large-scale distributed AI training, multiple servers are required to execute the AI ​​training task, and at least some of these servers may need to transfer the relevant training data between each other. Figure 1 This is a schematic diagram of a server cluster and its network for performing large-scale distributed AI training, provided as an embodiment of this application. Figure 1Each server in the network is used to perform AI training. Network connections between servers are implemented through multiple layers. The network consists of core switches, spine switches, and tor switches. Core switches reside in the core layer, spine switches in the aggregation layer, and tor switches in the access layer. The core layer is the top layer of the network, connecting all spine switches. Spine switches connect the core and access layers, acting as traffic aggregators and distributors. Access switches connect the servers. Each server has multiple AI training cards (e.g., neural network processing units, NPUs), each equipped with a network interface card (NIC), each with one network port. All AI training cards are connected point-to-point. In this scenario, network devices are prone to failure, such as NICs, optical modules, network cables, and switches. Furthermore, as the training scale increases, the frequency of network failures encountered by the applications performing AI training on the servers also increases. Therefore, handling network failures with low overhead and avoiding training task crashes due to network failures has become the most critical issue in large-scale AI training.

[0061] Currently, network rerouting, application fault tolerance, and application fault recovery technologies can be used to address the impact of network failures on data transmission. Furthermore, applications running AI training on servers can utilize RDMA to achieve high throughput, low latency, and low overhead. In this scenario, RDMA NIC aggregation technology can also address the impact of network failures on data transmission. Network rerouting, by configuring routing policies on network switches (e.g., configuring Border Gateway Protocol (BGP), ensures that when access layer switches and their upper-layer devices fail, subsequent packets are routed to other equivalent paths, bypassing the faulty device and achieving network fault tolerance. RDMA NIC aggregation combines two ports of a physical NIC into a single logical NIC for application use; if one port's path fails, communication continues via the other. Application fault tolerance automatically removes faulty processes and automatically adds a new process to the distributed application, thus achieving application fault tolerance. Application fault recovery technology can save application checkpoints according to certain rules, and after a distributed application fails and exits, it can use the latest saved checkpoints to restore the application's running progress at that time, thereby achieving application fault recovery with low overhead.

[0062] However, rerouting techniques in the network can only resolve faults within the network (such as access layer switches and their upper-layer devices), and cannot handle faults at the edge layer (such as devices between the network interface card (NIC) and the access layer switch). RDMA NIC aggregation technology cannot further tolerate situations where the entire NIC or network fails. Furthermore, this technology requires handling out-of-order delivery between two NICs. At the same cost, using this technology would halve the network size, making it unsuitable for large-scale server clusters, such as ultra-large-scale AI clusters. Moreover, due to hardware limitations, it requires the NIC to have two NICs, a requirement that many servers in various scenarios (such as typical AI training servers) do not meet. Application fault tolerance and application fault recovery technologies require the entire application or at least one process to terminate, restart, and recover from network faults, which incurs additional computing overhead and increases user costs.

[0063] In view of this, embodiments of this application provide a server based on cloud computing technology and a data transmission method thereof. The server is an infrastructure managed by a cloud management platform. The server is equipped with a first processor and a second processor. The first processor is equipped with a first application, a first network interface card (NIC) driver module, and a first NIC. The second processor is equipped with a second NIC. The first application is used to access the first NIC, and the first NIC driver module is used to obtain a first transmission request generated by the first application accessing the first NIC and provide the first transmission request to the first NIC. The first NIC, upon receiving the first transmission request, executes the data transmission operation indicated by the first transmission request. The first NIC driver module is also used to provide the first transmission request to the second NIC when the first NIC malfunctions during data transmission. The second NIC, upon receiving the first transmission request, executes the data transmission operation indicated by the first transmission request.

[0064] As can be seen from this, this application is equivalent to building a fault tolerance mechanism in the first network card driver module. After the first network card driver module detects a fault, it immediately switches to use the second network card to perform data transmission operations, shielding the first application from the fault. This means that the fault tolerance process does not require the participation of the first application, ensuring that the first application and its processes will not terminate, restart, or recover due to the detection of a fault. It can solve the problem of network faults affecting data transmission while avoiding the additional computing equipment overhead and user costs caused by the termination, restart, and recovery of the first application and its processes.

[0065] This article provides a detailed introduction to the technical solution of this application from multiple perspectives, including implementation scenarios, methods and processes, hardware devices, and software devices.

[0066] The following are examples illustrating the implementation scenarios of the embodiments of this application.

[0067] Figure 2This is a structural diagram illustrating an implementation scenario of a server and its data transmission method based on cloud computing technology provided in this application. For example... Figure 2 As shown, the implementation scenario includes: data center 1 and client 2. Data center 1 and client 2 can establish a communication connection via a network. Optionally, this network can be the Internet, or other networks; this embodiment is not limited to any particular network. Tenants can interact with data center 1 through client 2. For example, a tenant can send cloud service requests and other information to data center 1 through client 2. Data center 1 responds based on the information sent by client 2.

[0068] Data Center 1 houses a large amount of infrastructure owned by the cloud service provider, such as computing resources, storage resources, and network resources. For example, computing resources can be computing devices (such as servers) capable of providing computing power. Figure 2 As shown, data center 1 includes a cloud management platform and infrastructure ( Figure 2 (Not shown in the image). The cloud management platform and the infrastructure are connected via an internal data center network. The cloud management platform is used to manage the infrastructure. The infrastructure is used to provide public cloud services. The infrastructure includes multiple servers. Cloud services are optionally deployed on the servers. Cloud services are implemented by running virtual instances, and are therefore also referred to as virtual instances deployed on servers to implement tenant business. Tenants can send cloud service requests and related information to the server through their client 2. The server can process the cloud service requests and related information and provide cloud services to the tenant based on the processed cloud service requests and related information. For example, the server can realize the data transmission of applications on the server through the data transmission method of the server based on cloud computing technology provided in the embodiments of this application.

[0069] The cloud management platform can be logically divided into: tenant console, compute management service, network management service, storage management service, authentication service, and image management service. The tenant console provides a user interface or application programming interface (API) for interaction with tenants. The compute management service manages servers running virtual instances and bare metal servers. The network management service manages network services (such as gateways and firewalls). The storage management service manages storage services (such as data bucket services). The authentication service manages tenant accounts and passwords. The image management service manages virtual instance images.

[0070] exist Figure 2In the illustrated implementation scenario, a data center contains multiple servers. The servers consist of a hardware layer and a software layer. The hardware layer comprises the standard server configuration, including processors, memory, network interface cards (NICs), disks, and buses. The software layer includes the operating system installed and running on the server. This operating system, relative to the virtual machine, can be called the host operating system. The host operating system runs a virtual machine manager (also known as a hypervisor). The hypervisor's role is to implement compute virtualization, network virtualization, and storage virtualization, and to manage the virtual machines.

[0071] The virtual machine manager runs a cloud management platform client. This client receives control plane commands from the cloud management platform, creates virtual instances on the server based on these commands, and manages the virtual instances throughout their lifecycle. For example, the client can monitor the hardware resource usage of the server in real time and report it to the cloud management platform. When the cloud management platform confirms that a virtual instance needs to be created on a specific server, it sends a virtual instance creation command to the client on that server. Upon receiving the command, the client creates the virtual instance on that server. In this way, tenants can create, manage, log in to, and operate virtual instances within the data center through the cloud management platform.

[0072] Servers can run virtual machines (VMs) of different specifications. VM specifications are categorized as general-purpose computing, memory-optimized, and ultra-large memory, with specific specifications within each category. After a tenant selects a VM specification, the cloud management platform selects a server in the data center that supports that specification and ensures sufficient available hardware resources on that server. Then, it creates and configures the VM with that specification on that server. Configuring servers through the cloud management platform allows for the analysis and planning of server hardware resources. Based on the server's hardware performance, it plans the corresponding computing products for the physical hardware, such as planning VMs of different specifications, to meet the diverse needs of different tenants. Furthermore, differentiated pricing strategies can be implemented based on the performance differences of different VM specifications. For example, high-performance VMs can be sold at a higher price, while standard-performance VMs can be sold at a lower price, allowing tenants to purchase VMs as needed.

[0073] In one implementation, such as Figure 3As shown, the location of basic resources in a data center can be described using cloud resource deployment regions (regions) and availability zones (AZs). Tenants can choose to deploy cloud services based on resources within a specific region or AZ. A region is defined by geographical location and network latency. Using the same resource pool within the same region can be understood as sharing common services such as elastic computing, block storage, object storage, virtual private cloud (VPC) networks, elastic internet protocol (EIP) addresses, and images. Regions are divided into general-purpose regions and dedicated regions. A general-purpose region refers to a region that provides general cloud services to public tenants. A dedicated region refers to a region that hosts the same type of business or provides business services to specific tenants. A region typically includes multiple AZs. Multiple AZs within a region are connected via high-speed fiber optic cables to meet the needs of tenants building high-availability systems across AZs. An AZ is one or more... Figure 3 The data center shown is a collection of data centers. Within an Availability Zone (AZ), computing, networking, and storage resources are logically divided into multiple clusters.

[0074] Tenants can send instructions to the cloud management platform through their client 2 to create, manage, log in to, and operate virtual instances on the server, and use the cloud services provided by these virtual instances. For example, the cloud management platform can provide an access interface. This interface can be provided either as a user interface or an API. Tenants can operate their client to remotely access the access interface to register a cloud account and password on the cloud management platform, and then log in using these accounts and passwords. The cloud management platform can also authenticate the cloud account and password. After successful authentication, the tenant can further select and purchase a virtual instance with specific specifications (processor, memory, disk) on the cloud management platform. After the tenant successfully purchases the virtual instance, the cloud management platform provides the tenant with a remote login account and password for the purchased virtual instance. The tenant can use the remote login account and password to remotely log in to the virtual instance on their client, install and run their application within the virtual instance, and use the application to implement their business operations.

[0075] Client 2 can be selected from computers, personal computers, laptops, mobile phones, smartphones, tablets, cloud servers, portable mobile terminals, multimedia players, e-book readers, wearable devices, smart home appliances, artificial intelligence devices, smart wearable devices, smart in-vehicle devices, or Internet of Things devices, etc.

[0076] In one implementation, the cloud computing-based server and its data transmission method provided in this application embodiment can be implemented by running an executable program on a computing device in data center 1. Optionally, the cloud computing-based server and its data transmission method provided in this application embodiment can be applied to a cloud computing-based server. This cloud computing-based server is infrastructure managed by a cloud management platform. By running the executable program of the cloud computing-based server data transmission method provided in this application embodiment, the cloud computing-based server can implement the data transmission method provided in this application embodiment. Furthermore, the executable program implementing the cloud computing-based server data transmission method can optionally be presented in the form of an application installation package. After the server installs the application installation package, it can implement the cloud computing-based server data transmission method provided in this application embodiment by running the executable program therein.

[0077] It should be understood that the above content is an exemplary description of the implementation scenarios of the cloud computing-based server and its data transmission method provided in the embodiments of this application, and does not constitute a limitation on the implementation scenarios of the cloud computing-based server and its data transmission method. Those skilled in the art will know that as business needs change, the implementation scenarios can be adjusted according to application requirements, and the embodiments of this application do not specifically limit them. Furthermore, when the cloud computing-based server and its data transmission method provided in the embodiments of this application are applied to other scenarios, the executable program of the method can also be presented in the form of an application installation package or in other ways, and the embodiments of this application do not list them all.

[0078] The implementation method of the cloud computing-based server provided in this application will be introduced below.

[0079] Figure 4 This is a schematic diagram of the structure of a server based on cloud computing technology provided in an embodiment of this application. Figure 4 As shown, server 40 is equipped with a first processor 401. The first processor 401 includes a first application program 4011, a first network interface card (NIC) driver module 4012, and a first NIC 4013. The server also includes a second NIC 4023. This second NIC can be located either within or outside the first processor. Figure 4 This diagram illustrates a second network interface card (NIC) located outside the first processor. The type of the first processor can be adjusted according to application requirements. For example, in a distributed AI training scenario, the first processor can be an AI training card, such as an NPU.

[0080] The first application is used to access the first network interface card (NIC). The first NIC driver module is used to obtain the first transmission request generated by the first application accessing the first NIC and to provide the first transmission request to the first NIC. The first NIC is used to execute the data transmission operation indicated by the first transmission request after receiving the first transmission request.

[0081] The first network card driver module is also used to provide a first transmission request to the second network card when the first network card fails to perform data transmission operation. The second network card is used to perform the data transmission operation indicated by the first transmission request after receiving the first transmission request.

[0082] When the first application needs to transmit data, it can call the access interface of the first network interface card (NIC) driver module to instruct access to the first NIC. This call triggers a first transmission request, which instructs the first NIC to perform data transmission operations for the first application. The first NIC driver interface can obtain this first transmission request. If the first NIC driver module does not receive a message indicating a failure in instructing the first NIC to perform data transmission operations, it will prioritize providing the first transmission request to the first NIC. After receiving the first transmission request, the first NIC can execute the data transmission operation indicated by the first transmission request. If the first NIC fails to execute the data transmission operation indicated by the first transmission request, the first NIC driver module switches to providing the first transmission request to the second NIC. After receiving the first transmission request, the second NIC can execute the data transmission operation indicated by the first transmission request. The failure in the first NIC's execution of the data transmission operation indicated by the first transmission request can be determined by the first NIC driver module through detection, or it can be obtained by the first NIC reporting a failure to the first NIC driver module when performing a data transmission operation. The access interface of the first NIC driver module is an interface that can be called, and it can be changed according to application requirements. For example, when the first processor uses RDMA technology to transmit data, the access interface of the first network card driver module is, for example, the Verbs call interface.

[0083] Therefore, this application essentially constructs a fault-tolerance mechanism within the first network interface card (NIC) driver module. Upon detecting a fault, the first NIC driver module immediately switches to using the second NIC to perform data transmission operations, shielding the first application from the fault. This eliminates the need for the first application to participate in the fault-tolerance process, ensuring that the first application and its processes will not terminate, restart, or recover upon detecting a fault. This addresses the impact of network faults on data transmission while avoiding the additional computing overhead and user costs associated with the termination, restart, and recovery of the first application and its processes. As discussed earlier, when a fault occurs in the data transmission operation indicated by the first NIC's transmission request in the first application, the second NIC takes over. In this case, the second NIC can be considered a backup NIC for the first NIC, and the first NIC can be considered the default NIC for executing the first application's transmission request.

[0084] A failure in the data transmission operation of the first network interface card (NIC) can be caused by various reasons. For example, it could be due to NIC damage, NIC disconnection, intermittent NIC outages, the disappearance of the object associated with the first NIC, or problems with the network link where the first NIC resides. When the first processor uses RDMA technology to transmit data, the object associated with the first NIC can be the work queue configured for the first NIC.

[0085] In this application, multiple network interface cards (NICs) on the same server can serve as backup NICs for each other. That is, one NIC in the server can be used both as the default NIC and as a backup NIC for other default NICs. For example, such as... Figure 5As shown, server 40 is equipped with a first processor 401 and a second processor 402. The first processor 401 is equipped with a first network interface card (NIC) 4013, a first application program 4011, and a first NIC driver module 4012. The second processor 402 is equipped with a second NIC 4023, a second application program 4021, and a second NIC driver module 4022. The second application program is used to access the second NIC. The second NIC driver module is used to obtain a second transmission request generated by the second application program accessing the second NIC and to provide the second transmission request to the second NIC. The second NIC is also used to execute the data transmission operation indicated by the second transmission request after receiving it. That is, the second NIC is the default NIC for performing data transmission operations for the second application program in the second processor. When the second NIC is used as a backup NIC for the first NIC, it can be considered that the second NIC is used both as a backup NIC and as the default NIC. When the same network interface card (NIC) in a server is used as both a backup NIC and a default NIC, compared to using the NIC only as a backup NIC, it reduces the number of idle NICs in the server, lowers the redundancy of NICs, and allows for a larger server cluster at the same cost. The type of the second processor can be adjusted according to application requirements. For example, in a distributed AI training scenario, both the first and second processors can be AI training cards, such as an NPU. Furthermore, the first and second processors can have the same hardware architecture or different hardware architectures; this application does not specifically limit their implementation.

[0086] The first application 4011, the first network interface card (NIC) driver module 4012, the second application 4021, and the second NIC driver module 4022 are all implemented in software. In some scenarios, the first NIC driver module 4012 and the second NIC driver module 4022 can be considered as the same NIC driver library, which combines the functions of both the first NIC driver module 4012 and the second NIC driver module 4022. Similarly, in some scenarios, the first application 4011 and the second application 4021 can be considered as belonging to the same set of communication applications, which have the functions of both the first application 4011 and the second application 4021. For example, when the server 40 uses RDMA technology to transmit data, this logic can be applied to... Figure 4 and Figure 5 Simplify to obtain Figure 6 At this time, the network card driver library is the RDMA user driver library.

[0087] In one possible implementation, the second network interface card (NIC), serving as a backup for the first NIC, can be configured by a user. This user can be a server administrator or a tenant using the first application to implement business logic. The server also has a NIC configuration interface. For example, this NIC configuration interface is implemented through an application programming interface (API). In this case, the first NIC driver module is also used to obtain configuration instructions from the NIC configuration interface and, according to the instructions, provide a first transmission request to the second NIC when the first NIC fails to perform data transmission operations. For example, the user can... Figure 7 The configuration instructions shown configure a backup network card for each network interface card (NIC) in the server. After the first NIC driver module receives the configuration instructions carrying this configuration file, it can determine that the second NIC (rank2) is the backup NIC for the first NIC (rank1). Then, the first NIC driver module performs the relevant configuration on the second NIC to act as the backup NIC for the first NIC. For example... Figure 8 As shown, the first network interface card (NIC) driver module is configured with a work queue pair QP1 and a corresponding completion queue CQ1. The configuration of the second NIC as a backup for the first NIC includes: configuring QP2 and CQ2 of the second NIC in the first processor; configuring a first connection channel for the second NIC to read work queue elements (WQEs) (i.e., transmission requests) from QP2; and configuring a second connection channel for the second NIC to write completion queue elements (CQEs) to CQ2. Optionally, the first and second connection channels can be implemented using shared memory. Figure 9 As shown, the first processor is configured with a first memory and a first network interface card (NIC), and the second processor is configured with a second memory and a second NIC. The first and second processors are connected via a bus. When the first NIC driver module writes a transmission request into QP2, the memory block configured for QP2 in the first memory is updated with data, which is the transmission request. Based on the principle of shared memory, the second memory can obtain the updated data in the memory block configured for QP2, thus obtaining the transmission request. When the second NIC completes the data transmission operation indicated by the transmission request, it writes the information indicating the completion of the data transmission operation into the memory block allocated to CQ2 in the second memory. Based on the principle of shared memory, the first memory can obtain the information indicating the completion of the data transmission operation and write a completion queue element to CQ2 based on this information. Figure 9 Both the first and second memory are high bandwidth memory (HBM). Figure 9The solid arrow in the middle represents the data transmission path between the first network card of the server on the left and the third network card of the server on the right via a network connection. Figure 9 The dashed arrow in the middle indicates the data transmission path between the second network interface card (NIC) of the server on the left and the third NIC of the server on the right via a network connection. The network connections between the NICs of different servers pass through access switches and aggregation switches.

[0088] By configuring backup network interface cards (NICs), users can determine the backup NIC for each network interface card (NIC) based on factors such as the characteristics of the tasks performed by the server and environmental variables of the server's environment. This further ensures the effectiveness of data transmission operations and task completion. For example, users can determine the backup NIC for each NIC based on its communication domain or the expected data transfer volume of the task performed by the processor on which the NIC is located.

[0089] In one possible implementation, when the network interface card (NIC) and its driver module exchange transmission requests via a work queue, the first NIC driver module provides the first transmission request to both the first and second NICs by writing the first transmission request into the work queue. Optionally, this work queue is configured in the first NIC driver module. For example, when the NIC transmits data using RDMA technology, such as... Figure 8 and Figure 9 As shown, the first network interface card (NIC) driver module is configured with a first NIC work queue pair QP1 and a second NIC work queue pair QP2. When the first NIC driver module needs to provide a first transmission request to the first NIC, it can write the first transmission request into the corresponding work queue in work queue pair QP1, and the first NIC reads the first transmission request from the corresponding work queue in work queue pair QP1, thus enabling the transmission of the first transmission request between the first NIC and the first NIC. Similarly, when the first NIC driver module needs to provide a first transmission request to the second NIC, it can write the first transmission request into the corresponding work queue in work queue pair QP2, and the second NIC reads the first transmission request from the corresponding work queue in work queue pair QP2, thus enabling the transmission of the first transmission request between the first NIC and the second NIC. Each work queue pair is a combination of a send work queue and a receive work queue, referred to as the send queue (SQ) and the receive queue (RQ), respectively. The send queue stores send requests, and the receive queue stores receive requests. Figure 8 and Figure 9 The middle arrow is used to indicate the direction of transmission of a transmission request.

[0090] In this application, the implementation principle of the first network interface card (NIC) driver module switching to writing transmission requests to the work queue for providing transmission requests to the second NIC can be the same as or different from the implementation principle of switching to writing reception requests to the work queue for providing reception requests to the second NIC. In the first implementation, after receiving a transmission request, the first NIC driver module first writes the transmission request to the work queue for providing transmission requests to the first NIC. When the first NIC returns a failure message indicating that the transmission operation instructed by the transmission request failed, the transmission request is then written to the work queue for providing transmission requests to the second NIC. Similarly, after receiving a reception request, the first NIC driver module first writes the reception request to the work queue for providing transmission requests to the first NIC. When the first NIC returns a failure message indicating that the reception operation instructed by the reception request failed, the reception request is then written to the work queue for providing transmission requests to the second NIC. In this case, the implementation principle of the first NIC driver module switching to writing transmission requests to the work queue for providing transmission requests to the second NIC is the same as the implementation principle of switching to writing reception requests to the work queue for providing reception requests to the second NIC.

[0091] In the second implementation, after receiving a send request, the first network interface card (NIC) driver module first writes the send request to the work queue for providing transmission requests to the first NIC. When the first NIC returns a failure message indicating a failure in executing the send request, it writes the send request to the work queue for providing transmission requests to the second NIC. After receiving a receive request, the first NIC driver module writes the receive request to both the work queue for providing transmission requests to the first NIC and the work queue for providing transmission requests to the second NIC. When the first NIC returns a failure message indicating a failure in executing the send request, it clears the receive request from the work queue for providing transmission requests to the first NIC. Similarly, after the first NIC successfully executes the data transmission operation indicated by the receive request, it clears the receive request from the work queue for providing transmission requests to the second NIC. For example, when the NIC performs data transmission using RDMA technology, such as... Figure 8As shown, when the first transmission request is a receive request, the first network card driver module, after receiving the receive request, sends the receive request to both the first network card's QP and the second network card's QP. After the receive request in the first network card's QP is executed, the first network card driver module synchronously clears the receive request from the second network card's QP. At this time, the implementation principle of the first network card driver module switching to writing the send request into the work queue for providing transmission requests to the second network card is different from the implementation principle of switching to writing the receive request into the work queue for providing receive requests to the second network card. It should be noted that both the first and second implementation methods are illustrated using the example of the first network card reporting failure information to the first network card driver module when a data transmission operation fails. When the first network card fails to perform the data transmission operation indicated by the first transmission request, as determined by the first network card driver module through detection, the implementation principle of the first network card driver module switching to writing the send request into the work queue for providing transmission requests to the second network card, and the implementation principle of switching to writing the receive request into the work queue for providing receive requests to the second network card, can be referred to the above description accordingly, and will not be repeated here.

[0092] When the first network interface card (NIC) driver module provides a first transmission request to both the first NIC and the second NIC by writing the first transmission request into a work queue, the NIC that completes the data transmission operation indicated by the first transmission request can also write information indicating the completion of the first transmission request into the completion queue. This allows the first NIC driver module to determine, based on this information, that the NIC has completed the data transmission operation indicated by the first transmission request. Optionally, the completion queue is configured in the first NIC driver module. For example, when the NIC transmits data using RDMA technology, such as... Figure 8 As shown, the first network interface card (NIC) driver module is configured with a work queue pair QP1 for the first NIC and a work queue pair QP2 for the second NIC. It also has a completion queue CQ1 corresponding to work queue pair QP1 and a completion queue CQ2 corresponding to work queue pair QP2. After the first NIC reads a first transmission request from work queue pair QP1, and completes the data transmission operation indicated by the first transmission request, it writes information indicating the completion of the data transmission operation indicated by the first transmission request into the completion queue CQ1. The first NIC driver module, after reading this information from the completion queue CQ1, can determine that the first NIC has completed the data transmission operation indicated by the first transmission request. Similarly, after the second NIC reads a first transmission request from work queue pair QP2, and completes the data transmission operation indicated by the first transmission request, it writes information indicating the completion of the data transmission operation indicated by the first transmission request into the completion queue CQ2. The first NIC driver module, after reading this information from the completion queue CQ2, can determine that the second NIC has completed the data transmission operation indicated by the first transmission request.

[0093] After the first network interface card (NIC) driver module switches to providing the first transmission request to the second NIC, it can optionally prioritize providing the transmission request to the first NIC each time it needs to, and only switch to providing the transmission request to the second NIC if the data transmission operation indicated by the first NIC fails. Alternatively, after switching to providing the first transmission request to the second NIC, the first NIC driver module can directly provide the transmission request to the second NIC each time it needs to, until the trigger condition for switching back to providing the transmission request to the first NIC is met. This avoids prioritizing the first NIC each time and avoids waiting for the data transmission operation indicated by the first NIC to fail before providing the transmission request to the second NIC, thus improving the execution efficiency of the transmission request.

[0094] In one possible implementation, the triggering condition can be implemented through a duration. After the first network interface card (NIC) driver module switches to provide a first transmission request to the second NIC, the first NIC driver module is further configured to provide a third transmission request to the first NIC when the duration between the time when a third transmission request needs to be provided and the time between the time when the first NIC driver module last provided a fourth transmission request to the first NIC reaches a specified duration; and to provide a third transmission request to the second NIC when the duration between the time when a third transmission request needs to be provided and the time between the time when the first NIC driver module last provided a fourth transmission request to the first NIC does not reach the specified duration. Both the third and fourth transmission requests are transmission requests generated by the first application accessing the first NIC. The generation timing of the third transmission request is later than that of the fourth transmission request. The generation timing of the fourth transmission request is not earlier than that of the first transmission request. For example, the generation timing of the fourth transmission request is later than that of the first transmission request. In this case, "the time when the fourth transmission request was last provided to the first NIC" is used. The last time a transmission request was provided to the first network card was the closest to the current time of providing the transmission request, after the first network card driver module switched to providing the first transmission request to the second network card. Alternatively, the generation sequence of the fourth transmission request is the same as that of the first transmission request. In this case, the fourth transmission request can be regarded as the first transmission request. In this case, "the last time a fourth transmission request was provided to the first network card" is the time when the first network card driver module provided the first transmission request to the first network card before switching to providing the first transmission request to the second network card.

[0095] This implementation is equivalent to the first network interface card (NIC) driver module switching to provide the first transmission request to the second NIC. Subsequently, when a transmission request needs to be provided to the NIC, it first directly provides the transmission request to the second NIC, and periodically provides transmission requests to the first NIC. The system determines whether the fault in the first NIC has been cleared based on whether a failure occurs during the data transmission operation indicated by the transmission request. If the first NIC fails during the data transmission operation indicated by the transmission request, it means the fault in the first NIC has not been cleared, and the first NIC driver module continues to provide transmission requests to the second NIC until the next timed interval arrives. If the first NIC does not fail during the data transmission operation indicated by the transmission request, it means the fault in the first NIC has been cleared, and the first NIC driver module subsequently provides transmission requests directly to the first NIC until a failure occurs during the data transmission operation indicated by the transmission request, at which point it switches back to providing transmission requests to the second NIC. The time interval here is the aforementioned specified duration. The value of this specified duration can be determined according to application requirements. For example, the value of this specified duration can be specified by the first application program. When the first application has a high tolerance for failures, the specified duration can be set to a smaller value. This maintenance mechanism ensures that path switching does not lead to packet loss of transmission requests, and allows for the switching of transmission requests between the first and second network interface cards (NICs) while remaining transparent to the first application.

[0096] Optionally, the aforementioned timing can also be implemented using queues. For example, the first network interface card (NIC) driver module can record the timestamp of switching to send the first transmission request to the second NIC or the timestamp of reaching a specified duration in the second NIC's work queue pair QP2. Since the second NIC writes the completion queue element corresponding to the WQE to the completion queue CQ2 after completing the task indicated by the work queue element in the work queue pair QP2, the first NIC driver module can poll the CQE corresponding to the timestamp in the completion queue CQ2 after writing the timestamp to the work queue pair QP2. When the time interval between polling the CQE corresponding to the timestamp and the timestamp is longer than the specified duration, the first NIC driver module marks the first NIC's work queue pair QP1 as a used QP and provides a transmission request to the first NIC through QP1.

[0097] In addition, when the first network card driver module switches to provide the first transmission request to the second network card, the first network card driver module can reset the first network card and its work queue to troubleshoot the problem.

[0098] It should be noted that before performing data transmission operations using the first and second network interface cards (NICs), both NICs need to be configured. This process is called the initialization process. The first NIC driver module is also used to obtain the first configuration information required for the first NIC to perform data transmission operations, the second configuration information required for the second NIC to perform data transmission operations, and other configuration information required for NICs in other servers to perform data transmission operations. Then, based on the first configuration information, the second configuration information, and the other configuration information, it performs the configuration operations required for the data transmission operations.

[0099] In one possible implementation, different servers can exchange configuration information through a storage node. For example, after obtaining first and second configuration information, the first network interface card (NIC) driver module provides the first and second configuration information to the storage node and obtains other configuration information required by the NICs of other servers to perform data transmission operations from the storage node. This storage node can be implemented in various ways. For example, the server cluster of this application can be configured with a distributed storage system, which is used to implement the function of the storage node. For example, such as... Figure 9 and Figure 10 As shown, this distributed storage system can be ETCD. ETCD is a distributed key-value (KV) store system used for shared configuration and service discovery. A server cluster consists of multiple servers collaborating on the same task. For example, a server cluster may consist of multiple servers executing the same training job.

[0100] Corresponding to the exchange of configuration information between different servers via storage nodes, each server in the server cluster is also configured with modules or processes to cooperate in implementing this function. For example, Figure 9 and Figure 10 As shown, a daemon process is configured in the server. The daemon process runs on each server and is an extension of the ETCD distributed key-value storage system. Daemons on different servers in the server cluster can share key-value pairs stored in the ETCD. After obtaining first and second configuration information, the first network interface card (NIC) driver module provides this information to the daemon process. The daemon process provides the first and second configuration information to the storage node and obtains other configuration information required by the NICs in other servers to perform data transmission operations from the storage node, then provides this other configuration information to the first NIC driver module. By using the daemon process to exchange configuration information, the storage node can perform data transmission operations using the second NIC without being aware of user information, allowing the first application to be unaware of the process.

[0101] The configuration information required for a network interface card (NIC) to perform data transfer operations comprises all the configuration information needed by the NIC when performing data transfer operations. For example, when the NIC transfers data via RDMA technology, the configuration information required for the NIC to perform data transfer operations indicates the information needed for the NIC to perform RDMA operations. The configuration information required for the NIC to perform data transfer operations indicates at least one or more of the following: memory allocated to the NIC, work request queues created for the NIC, and completion queues.

[0102] For example, when the first network interface card (NIC) transmits data via RDMA technology, the first NIC driver module first needs to initialize the RDMA resources of the first NIC, including starting the first NIC, registering memory for the first NIC, registering protection domains, creating CQ and QP, etc., and obtaining the RDMA resource information of the first NIC, including information indicating the memory registered for the first NIC (referred to as memory information), and information indicating the CQ and QP created for the first NIC (referred to as CQ and QP information), etc. Similarly, the first NIC driver module also performs similar operations on the second NIC to obtain the RDMA resource information of the second NIC. The starting of the first NIC, the second NIC, and the initialization of the first and second NICs by the first NIC driver module can all be implemented using Verbs. Protection domains are used to associate work queues with memory regions and memory windows as a means of enabling and controlling network adapter access to memory. Then, as... Figure 9 and Figure 10 As shown, the first network interface card (NIC) driver module provides this information to the daemon process, which then provides this information to the storage node via existing Transmission Control Protocol (TCP) connections. Subsequently, when configuring the QPs of the first and second NICs, the daemon process obtains this information from the NICs of other servers on the storage node to exchange RDMA resource information with the RDMA communication peer. Afterward, the first NIC driver module configures the QPs of the first and second NICs based on this information, completing the connection establishment between the first and second NICs and achieving out-of-band global state maintenance. The initialization process is complete after the first NIC driver module configures the QPs of the first and second NICs to the ready-to-send (RTS) state.

[0103] It should be noted that the daemon process can provide different types of configuration information to the storage node in batches. For example, after the memory registration operation is completed, the first network interface card (NIC) driver module stores the memory registration results (including the memory address and the key required to access the memory) of the first and second NICs as key-value pairs in the storage node. Similarly, after the QP creation operation is completed, the first NIC driver module stores the QP information (QP serial number and QP network address) of the first and second NICs as key-value pairs in the storage node. After the CQ creation operation is completed, the first NIC driver module stores the CQ information (CQ serial number and CQ network address) of the first and second NICs as key-value pairs in the storage node. Furthermore, configuration information from other servers can be obtained as needed. The configuration QP is configured only before subsequent data transmission operations are performed. During this configuration process, the daemon process retrieves the configuration information of the peer server for the data transmission operation from the storage node using the QP information of the first NIC and the memory registration results.

[0104] It should be noted that the above description pertains to the working principle of the first processor in a server within a server cluster. Any processor in any server within the cluster can operate according to the working principle of the first processor, and the implementation process of any processor in any server can refer to the aforementioned description of the working principle of the first processor. For example, the server may also have a second processor, and the components of the second processor can operate in the same way as the components of the first processor. For instance, the second network interface card (NIC) may be configured with a backup NIC. When the second NIC fails to execute the data transmission operation indicated by the second transmission request of the second application, the second NIC driver module can switch to providing the second transmission request to the backup NIC. The implementation process of this is not detailed in this application.

[0105] The first network interface card (NIC) driver module of this application can be implemented by modifying currently open-source NIC driver libraries. For example, when the NIC uses RDMA technology for data transmission, the first NIC driver module can be obtained by modifying currently open-source RDMA user driver libraries. This driver library, as a dynamic link library, is called during application runtime. In this way, this application can achieve implementation by modifying its actual execution actions while maintaining the Verbs call interface of the RDMA user driver library unchanged. Furthermore, to ensure the implementation of this application, it can optionally construct a virtual queue to send the first transmission request to both the first NIC and the second NIC respectively. Figure 8As shown, this application constructs a virtual work queue (vQP) and a virtual completion queue (vCQ). When no fault occurs, the virtual work queue (vQP) in the first processor writes a transmission request to the QP1 of the first network interface card (NIC), and the CQ1 of the first NIC provides the virtual completion queue (vCQ) with a message indicating that a completion queue element has been written. When a fault occurs, the virtual work queue (vQP) in the first processor writes a transmission request to the QP2 of the second NIC, and the CQ2 of the second NIC provides the virtual completion queue (vCQ) with a message indicating that a completion queue element has been written. Furthermore, as... Figure 8 As shown, server 40 also includes a cache for storing transmission requests and / or transmission request completion queue elements. For example, this cache stores transmission requests. If the first network interface card (NIC) fails to execute the data transmission operation indicated by the transmission request after the first NIC driver module provides the transmission request to the first NIC, vQP can retrieve the transmission request from the cache and provide the retrieved transmission request to the second NIC.

[0106] Therefore, this application essentially constructs a fault-tolerance mechanism within the first network interface card (NIC) driver module. Upon detecting a fault, the first NIC driver module immediately switches to using the second NIC to perform data transmission operations, shielding the first application from the fault. This eliminates the need for the first application to participate in the fault-tolerance process, ensuring that the first application and its processes will not terminate, restart, or recover upon detecting a fault. This addresses the impact of network faults on data transmission while avoiding the additional computing overhead and user costs associated with the termination, restart, and recovery of the first application and its processes. Furthermore, this application solves the problem that current AI distributed training RDMA networks cannot tolerate faults in the edge layer network (devices between the NIC and the edge layer switch), while relying on application-based fault tolerance and recovery incurs excessive overhead. Consequently, it reduces the processing time for faults such as optical module intermittent failures in large-scale RDMA networks from hours using checkpoint schemes to seconds or sub-minutes.

[0107] The above describes a server based on cloud computing technology provided by the embodiments of this application. Corresponding to the above method, the embodiments of this application also provide a data transmission method for a server based on cloud computing technology. Figure 11 This is a flowchart illustrating a data transmission method for a server based on cloud computing technology, as provided in an embodiment of this application. Figure 11 As shown, the data transmission method of this cloud computing-based server includes the following steps:

[0108] Step 1101: The first application accesses the first network card.

[0109] Step 1102: The first network card driver module obtains the first transmission request generated by the first application accessing the first network card, and provides the first transmission request to the first network card.

[0110] Step 1103: After receiving the first transmission request, the first network card executes the data transmission operation indicated by the first transmission request.

[0111] Step 1104: When the first network card driver module encounters a failure in performing data transmission operations on the first network card, it provides a first transmission request to the second network card.

[0112] Step 1105: After receiving the first transmission request, the second network card executes the data transmission operation indicated by the first transmission request.

[0113] In one possible implementation, the server also has a network interface card (NIC) configuration interface. For example... Figure 12 As shown, the method further includes: step 1106, the first network card driver module obtains configuration instructions from the network card configuration interface. Correspondingly, step 1104 includes: step 11041, the first network card driver module provides a first transmission request to the second network card when the first network card fails to perform data transmission operation, according to the instructions of the configuration instructions.

[0114] In one possible implementation, such as Figure 12 As shown, the method further includes: step 1107, when the time between the time when the first network card driver module needs to provide a third transmission request to the network card and the time between the time when the first network card driver module last provided a fourth transmission request to the first network card reaches a specified time, the first network card driver module provides a third transmission request to the second network card; when the time between the time when the first network card driver module needs to provide a third transmission request to the network card and the time between the time when the first network card driver module last provided a fourth transmission request to the first network card does not reach a specified time, the first network card driver module provides a third transmission request to the second network card. Both the third transmission request and the fourth transmission request are transmission requests generated by the first application accessing the first network card. The generation time of the third transmission request is later than the generation time of the fourth transmission request, and the generation time of the fourth transmission request is no earlier than the generation time of the first transmission request.

[0115] In one possible implementation, when the first network interface card (NIC) driver module encounters a failure in performing data transmission operations, it provides a first transmission request to the second NIC, including: the first NIC driver module responds to the first transmission request by sending a request; and when the first NIC returns failure information based on the first transmission request, the first NIC driver module writes the first transmission request into a work queue for providing transmission requests to the second NIC.

[0116] In one possible implementation, the first network interface card (NIC) driver module provides a first transmission request to the first NIC, including: the first NIC driver module responds to the first transmission request by receiving a request; after obtaining the first transmission request, the first NIC driver module writes the first transmission request into a work queue for transmission requests to the first NIC and a work queue for transmission requests to the second NIC; after the first NIC successfully performs the data transmission operation, the first transmission request is cleared from the work queue for transmission requests to the second NIC.

[0117] In one possible implementation, when the first network interface card (NIC) driver module fails to perform data transmission operation, it provides a first transmission request to the second NIC, including: the first NIC driver module responds to the first transmission request as a receive request; after obtaining the first transmission request, the first NIC driver module writes the first transmission request into the work queue for transmission requests to the first NIC and the work queue for transmission requests to the second NIC; and when the first NIC fails to perform data transmission operation, it clears the first transmission request from the work queue for transmission requests to the first NIC.

[0118] In one possible implementation, the server further includes a second processor, which in turn includes a second network interface card (NIC), a second application program, and a second NIC driver module. For example... Figure 12 As shown, the method further includes: Step 1108, the second application accesses the second network card. Step 1109, the second network card driver module obtains the second transmission request generated by the second application accessing the second network card, and provides the second transmission request to the second network card. Step 1110, after receiving the second transmission request, the second network card executes the data transmission operation indicated by the second transmission request.

[0119] In one possible implementation, such as Figure 12 As shown, the method further includes: step 1111, the first network card driver module obtains the first configuration information required for the first network card to perform data transmission operation, obtains the second configuration information required for the second network card to perform data transmission operation, provides the first configuration information and the second configuration information to the storage node, and obtains other configuration information required for the network cards in other servers to perform data transmission operation from the storage node, and performs the configuration operation required for data transmission operation according to the first configuration information, the second configuration information and other configuration information.

[0120] In one possible implementation, in response to a data transfer operation being a remote direct memory access (RDMA) operation, the configuration information required for any network interface card (NIC) to perform the data transfer operation is used to indicate the information required for any NIC to perform the RDMA operation. The configuration information required for any NIC to perform the data transfer operation indicates at least one or more of the following: memory allocated to any NIC, a work request queue created for any NIC, and a completion queue.

[0121] It should be noted that the order of steps in the data transmission method for a server based on cloud computing technology provided in this application embodiment can be appropriately adjusted, and steps can also be added or removed as needed. Any variations that can be easily conceived by those skilled in the art within the scope of the technology disclosed in this application should be included within the protection scope of this application, and therefore will not be elaborated further.

[0122] Those skilled in the art will understand that, for the sake of convenience and brevity, the specific working process of each step described above can be referred to the corresponding content in the aforementioned server embodiment, and will not be repeated here.

[0123] The following provides examples illustrating the basic hardware structures involved in the embodiments of this application.

[0124] This application also provides a computing device. This computing device is used to implement the cloud computing-based server and its data transmission method provided in this application. Figure 13 As shown, the computing device 1300 includes a bus 1302, a processor 1304, a memory 1306, and a communication interface 1308. The processor 1304, the memory 1306, and the communication interface 1308 communicate with each other via the bus 1302. The computing device 1300 can be a server or a terminal device. It should be understood that this application does not limit the number of processors and memories in the computing device 1300.

[0125] Bus 1302 can be a Peripheral Component Interconnect (PCI) bus or an Extended Industry Standard Architecture (EISA) bus, etc. Buses can be divided into address buses, data buses, control buses, etc. For ease of representation, Figure 13 The bus 1302 may be represented by a single line, but this does not mean that there is only one bus or one type of bus. The bus 1302 may include a path for transmitting information between various components of the computing device 1300 (e.g., memory 1306, processor 1304, communication interface 1308).

[0126] The processor 1304 may include any one or more processors such as a central processing unit (CPU), a graphics processing unit (GPU), a microprocessor (MP), or a digital signal processor (DSP).

[0127] The memory 1306 may include volatile memory, such as random access memory (RAM). The processor 1304 may also include non-volatile memory, such as read-only memory (ROM), flash memory, hard disk drive (HDD), or solid state drive (SSD).

[0128] The memory 1306 stores executable program code, and the processor 1304 executes the executable program code to implement the data transmission method of the cloud computing-based server described in this application. That is, the memory 1306 stores instructions for executing the data transmission method of the cloud computing-based server.

[0129] The communication interface 1308 uses transceiver modules such as, but not limited to, network interface cards and transceivers to enable communication between the computing device 1300 and other devices or communication networks.

[0130] This application also provides a computing device cluster. The computing device cluster includes at least one computing device. The computing device can 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 can also be a terminal device such as a desktop computer, a laptop computer, or a smartphone.

[0131] like Figure 14 As shown, the computing device cluster includes at least one computing device 1300. The memory 1306 of one or more computing devices 1300 in the computing device cluster may store the same instructions for executing data transmission methods for servers based on cloud computing technology.

[0132] In some possible implementations, the memory 1306 of one or more computing devices 1300 in the computing device cluster may also store partial instructions for executing data transmission methods for a cloud computing-based server. In other words, a combination of one or more computing devices 1300 can jointly execute instructions for executing data transmission methods for a cloud computing-based server.

[0133] It should be noted that the memory 1306 in different computing devices 1300 within the computing device cluster can store different instructions, each used to execute a portion of the functions of the server's data transmission device. That is, the instructions stored in the memory 1306 of different computing devices 1300 can implement the functions of one or more modules among the acquisition module 1701, interaction module 1702, testing module 1703, and processing module 1704.

[0134] In some possible implementations, one or more computing devices in a computing device cluster can be connected via a network. This network can be a wide area network (WAN), a local area network (LAN), or similar. Figure 15 One possible implementation is shown. For example... Figure 15 As shown, the two computing devices 1300A and 1300B are connected via a network. Specifically, they are connected to the network through the communication interfaces in each computing device. In this type of possible implementation, both computing device 1300A and computing device 1300B are servers in the server cluster of this application.

[0135] This application also provides another computing device cluster. The connection relationships between the computing devices in this computing device cluster can be similarly referred to... Figure 14 and Figure 15 The connection method of the computing device cluster. The difference is that the memory 1306 of one or more computing devices 1300 in this computing device cluster can store the same instructions for executing data transmission methods of servers based on cloud computing technology.

[0136] In some possible implementations, the memory 1306 of one or more computing devices 1300 in the computing device cluster may also store partial instructions for executing data transmission methods for a cloud computing-based server. In other words, a combination of one or more computing devices 1300 can jointly execute instructions for executing data transmission methods for a cloud computing-based server.

[0137] This application also provides a computer program product containing instructions. The computer program product may be software or program products containing instructions, capable of running on a computing device or stored on any usable medium. When the computer program product runs on at least one computing device, it causes the at least one computing device to execute a data transmission method of a cloud computing-based server or implement a cloud computing-based server.

[0138] This application also provides a computer-readable storage medium. The computer-readable storage medium can be any available medium that a computing device can store, or a data storage device such as a data center containing one or more available media. The available medium can be a magnetic medium (e.g., floppy disk, hard disk, magnetic tape), an optical medium (e.g., DVD), or a semiconductor medium (e.g., solid-state drive). The computer-readable storage medium includes instructions that instruct the computing device to perform a data transmission method for a cloud computing-based server or to implement a cloud computing-based server, or instruct the computing device to perform a data transmission method for a cloud computing-based server or to implement a cloud computing-based server.

[0139] Those skilled in the art will understand that all or part of the steps of the above embodiments can be implemented by hardware or by a program instructing related hardware. The program can be stored in a computer-readable storage medium, such as a read-only memory, a disk, or an optical disk.

[0140] It should be noted that all information (including but not limited to user device information, user personal information, etc.), data (including but not limited to data used for analysis, stored data, displayed data, etc.), and signals involved in this application have been authorized by the user or fully authorized by all parties, and the collection, use, and processing of related data must comply with the relevant laws, regulations, and standards of the relevant countries and regions. For example, the raw data and executable code involved in this application were obtained with full authorization.

[0141] In the embodiments of this application, the terms "first," "second," and "third" are used for descriptive purposes only and should not be construed as indicating or implying relative importance. The term "at least one" refers to one or more, and the term "multiple" refers to two or more, unless otherwise expressly defined.

[0142] In this application, the term "and / or" is merely a description of the relationship between related objects, indicating that three relationships can exist. For example, A and / or B can represent: A existing alone, A and B existing simultaneously, or B existing alone. Additionally, the character " / " in this document generally indicates that the preceding and following related objects have an "or" relationship.

[0143] Finally, it should be noted that the above embodiments are only used to illustrate the technical solutions of the present invention, and not to limit them; although the present invention has been described in detail with reference to the foregoing embodiments, those skilled in the art should understand that modifications can still be made to the technical solutions described in the foregoing embodiments, or equivalent substitutions can be made to some of the technical features; and these modifications or substitutions do not cause the essence of the corresponding technical solutions to deviate from the protection scope of the technical solutions of the embodiments of the present invention.

Claims

1. A server based on cloud computing technology, characterized in that, The server is an infrastructure managed by a cloud management platform. The server is equipped with a first processor, which includes a first application program, a first network interface card (NIC) driver module, and a first NIC. The server also includes a second NIC. The first application is used to access the first network card, the first network card driver module is used to obtain the first transmission request generated by the first application accessing the first network card, and provide the first transmission request to the first network card, and the first network card is used to execute the data transmission operation indicated by the first transmission request after receiving the first transmission request; The first network card driver module is further configured to provide the first transmission request to the second network card when the first network card fails to perform the data transmission operation, and the second network card is configured to perform the data transmission operation indicated by the first transmission request after receiving the first transmission request.

2. The server as described in claim 1, characterized in that, The server is also equipped with a network card configuration interface; The first network card driver module is further configured to obtain configuration instructions from the network card configuration interface, and provide the first transmission request to the second network card when the first network card fails to perform the data transmission operation according to the instructions of the configuration instructions.

3. The server as described in claim 1 or 2, characterized in that, The first network interface card (NIC) driver module is further configured to provide the third transmission request to the first NIC when the time between the time when the third transmission request needs to be provided to the NIC and the time between the time when the first NIC driver module last provided the fourth transmission request to the first NIC reaches a specified time, wherein the third transmission request and the fourth transmission request are both transmission requests generated by the first application accessing the first NIC, the generation time of the third transmission request is later than the generation time of the fourth transmission request, and the generation time of the fourth transmission request is no earlier than the generation time of the first transmission request; The first network card driver module is further configured to provide the third transmission request to the second network card when the time between the time when the third transmission request needs to be provided to the network card and the time when the first network card driver module last provided the fourth transmission request to the first network card has not reached the specified time.

4. The server as described in any one of claims 1 to 3, characterized in that, In response to the first transmission request being a send request, the first network card driver module is specifically used to write the first transmission request into the work queue for providing transmission requests to the second network card when the first network card returns failure information based on the first transmission request; In response to the first transmission request being a receive request, the first network card driver module is specifically configured to, after acquiring the first transmission request, write the first transmission request into the work queue for transmission requests to the first network card and the work queue for transmission requests to the second network card; after the first network card successfully executes the data transmission operation, clear the first transmission request from the work queue for transmission requests to the second network card; and when the first network card fails to execute the data transmission operation, clear the first transmission request from the work queue for transmission requests to the first network card.

5. The server as described in any one of claims 1 to 4, characterized in that, The server is also equipped with a second processor, which is equipped with a second network card, a second application program, and a second network card driver module. The second application is used to access the second network card, the second network card driver module is used to obtain the second transmission request generated by the second application accessing the second network card, and provide the second transmission request to the second network card, and the second network card is also used to execute the data transmission operation indicated by the second transmission request after receiving the second transmission request.

6. The server as described in any one of claims 1 to 5, characterized in that, The first network interface card (NIC) driver module is further configured to obtain first configuration information required for the first NIC to perform data transmission operations, obtain second configuration information required for the second NIC to perform data transmission operations, provide the first configuration information and the second configuration information to the storage node, obtain other configuration information required for NICs in other servers to perform data transmission operations from the storage node, and perform configuration operations required for data transmission operations based on the first configuration information, the second configuration information and the other configuration information.

7. The server as described in claim 6, characterized in that, In response to the data transfer operation being a Remote Direct Memory Access (RDMA) operation, the configuration information required for any network interface card (NIC) to perform the data transfer operation is used to indicate the information required for the NIC to perform the RDMA operation. The configuration information required for the NIC to perform the data transfer operation indicates at least one or more of the following: memory allocated to the NIC, a work request queue created for the NIC, and a completion queue.

8. A data transmission method for a server based on cloud computing technology, characterized in that, The server is an infrastructure managed by a cloud management platform. The server is equipped with a first processor, which includes a first application, a first network interface card (NIC) driver module, and a first NIC. The server also includes a second NIC. The method includes: The first application accesses the first network card, the first network card driver module obtains the first transmission request generated by the first application accessing the first network card, and provides the first transmission request to the first network card. After receiving the first transmission request, the first network card executes the data transmission operation indicated by the first transmission request. When the first network card driver module fails to perform the data transmission operation, it provides the first transmission request to the second network card. After receiving the first transmission request, the second network card performs the data transmission operation indicated by the first transmission request.

9. The method as described in claim 8, characterized in that, The server is also equipped with a network card configuration interface, and the method further includes: The first network card driver module obtains configuration instructions from the network card configuration interface; When the first network interface card (NIC) driver module encounters a failure in performing the data transmission operation, it provides the first transmission request to the second NIC, including: When the first network card driver module fails to perform the data transmission operation, it provides the first transmission request to the second network card according to the configuration instruction.

10. The method as described in claim 8 or 9, characterized in that, The method further includes: When the time between when the first network card driver module needs to provide a third transmission request to the network card and the time between when the first network card driver module last provided a fourth transmission request to the first network card reaches a specified time, the first network card driver module provides the third transmission request to the first network card. The third transmission request and the fourth transmission request are both transmission requests generated by the first application accessing the first network card. The generation time of the third transmission request is later than the generation time of the fourth transmission request, and the generation time of the fourth transmission request is no earlier than the generation time of the first transmission request. When the time when the first network card driver module needs to provide the third transmission request to the network card is less than the specified time elapsed since the time when the first network card driver module last provided the fourth transmission request to the first network card, the first network card driver module provides the third transmission request to the second network card.

11. The method as described in any one of claims 8 to 10, characterized in that, When the first network interface card (NIC) driver module encounters a failure in performing the data transmission operation, it provides the first transmission request to the second NIC, including: In response to the first transmission request being a send request, the first network card driver module writes the first transmission request into the work queue for providing transmission requests to the second network card when the first network card returns failure information based on the first transmission request. The first network interface card (NIC) driver module provides the first transmission request to the first NIC, including: The first network card driver module responds to the first transmission request as a receive request. After obtaining the first transmission request, the first network card driver module writes the first transmission request into the work queue for transmission requests to the first network card and the work queue for transmission requests to the second network card. After the first network card successfully executes the data transmission operation, the first transmission request is cleared from the work queue for transmission requests to the second network card. When the first network interface card (NIC) driver module encounters a failure in performing the data transmission operation, it provides the first transmission request to the second NIC, including: The first network card driver module responds to the first transmission request as a receive request. After obtaining the first transmission request, the first network card driver module writes the first transmission request into the work queue for transmission requests to the first network card and the work queue for transmission requests to the second network card. When the first network card fails to perform the data transmission operation, the first transmission request is cleared from the work queue for transmission requests to the first network card.

12. The method as described in any one of claims 8 to 11, characterized in that, The server is further provided with a second processor, the second processor being provided with a second network interface card (NIC), a second application program, and a second NIC driver module; the method further includes: The second application accesses the second network card. The second network card driver module obtains the second transmission request generated by the second application accessing the second network card and provides the second transmission request to the second network card. After receiving the second transmission request, the second network card executes the data transmission operation indicated by the second transmission request.

13. The method as described in any one of claims 8 to 12, characterized in that, The method further includes: The first network interface card (NIC) driver module obtains first configuration information required for the first NIC to perform data transmission operations, obtains second configuration information required for the second NIC to perform data transmission operations, provides the first configuration information and the second configuration information to the storage node, and obtains other configuration information required for NICs in other servers to perform data transmission operations from the storage node. The module then performs the configuration operations required for data transmission operations based on the first configuration information, the second configuration information, and the other configuration information.

14. The method as described in claim 13, characterized in that, In response to the data transfer operation being a Remote Direct Memory Access (RDMA) operation, the configuration information required for any network interface card (NIC) to perform the data transfer operation is used to indicate the information required for the NIC to perform the RDMA operation. The configuration information required for the NIC to perform the data transfer operation indicates at least one or more of the following: memory allocated to the NIC, a work request queue created for the NIC, and a completion queue.

15. A computing device, characterized in that, The device includes a processor and a memory, the memory storing program instructions, and the processor executing the program instructions to cause the computing device to implement the server according to any one of claims 1 to 7.

16. A computer-readable storage medium, characterized in that, Includes program instructions that, when executed on a computing device, cause the computing device to implement the server as described in any one of claims 1 to 7.

17. A computer program product containing instructions, characterized in that, When the instructions are executed by the computing device, the computing device enables the server as described in any one of claims 1 to 7.