Data transmission method, array server, electronic device, and storage medium

By configuring a network controller and switch for each compute node in the array server and using the PCIe protocol for communication, the problems of high cost and resource waste of Ethernet switches are solved, and efficient data transmission and resource utilization are achieved.

WO2026077000A1PCT designated stage Publication Date: 2026-04-16BEIJING YOUZHUJU NETWORK TECH CO LTD
View PDF 4 Cites 0 Cited by

Patent Information

Application Number
PCT/CN2025/102421
Authority / Receiving Office
WO · WO
Patent Type
Applications
Current Assignee / Owner
Priority Date
2024-10-09
Filing Date
2025-06-20
Publication Date
2026-04-16

AI Technical Summary

Technical Problem

The large number of computing nodes in an array server leads to high Ethernet switch costs and low data transmission efficiency. The computing power of a single computing node is insufficient, resulting in serious resource waste and making it difficult to meet the requirements of high data transmission rates.

Method used

In the array server, a first network controller and a second network controller are configured for each computing node. They are connected to the network card through multiple switches and communicate using the PCIe protocol, avoiding the use of Ethernet switching chips and enabling independent external communication between computing nodes.

Benefits of technology

It reduced costs, increased data transmission bandwidth and throughput, reduced latency, made full use of switch resources, and avoided resource waste.

✦ Generated by Eureka AI based on patent content.

Smart Images

  • Figure CN2025102421_16042026_PF_FP_ABST
    Figure CN2025102421_16042026_PF_FP_ABST
Patent Text Reader

Abstract

Provided in the present disclosure are a data transmission method, an array server, an electronic device, and a storage medium. The array server comprises a multi-root switch and a plurality of computing nodes, which are in communication connection with the multi-root switch. The method comprises: providing a first network controller and a second network controller for a first computing node among a plurality of computing nodes, wherein the first computing node is any one of the plurality of computing nodes; and connecting the first computing node among the plurality of computing nodes to a multi-root switch by means of the first network controller and the second network controller, and by means of the multi-root switch, connecting the first computing node to a network interface card that enables an array server to implement external communication. A first network controller and a second network controller are provided for each computing node, such that by means of a multi-root switch, each computing node can be connected to a network interface card for external communication and communication between any two computing nodes is realized, and it is not necessary for each computing node to be configured with a dedicated Ethernet switch chip, thereby effectively reducing the costs.
Need to check novelty before this filing date? Find Prior Art

Description

Data transmission methods, array servers, electronic devices, and storage media

[0001] This application claims priority to Chinese Patent Application No. 202411405054.6, filed on October 9, 2024, the disclosure of which is incorporated herein by reference in its entirety. Technical Field

[0002] Embodiments of this disclosure relate to a data transmission method, an array server, an electronic device, and a storage medium. Background Technology

[0003] An array server is a new server architecture, also known as a cluster server. An array server comprises a large number of computing nodes; for example, a System-on-Chip (SoC) based array server typically contains dozens or hundreds of computing nodes, characterized by high integration and high density.

[0004] Array servers are typically used in scenarios with high requirements for computing power, data processing capabilities, and data transmission speed. Therefore, data transmission speed limits the performance of array servers. In related technologies, array servers have internal network switching links. Establishing these network switching links requires the use of Ethernet switches. The more computing nodes there are, the more Ethernet switches are needed. This leads to high costs and low data transmission efficiency of the network switching itself, making it difficult to meet the ever-increasing data transmission rate requirements.

[0005] Furthermore, the computing power of a single computing node in an array server is relatively low. If it is matched with a high-bandwidth network card and corresponding switching link, it will result in high costs and wasted bandwidth resources. Summary of the Invention

[0006] One or more embodiments of this disclosure provide a data transmission method, an array server, an electronic device, and a storage medium.

[0007] At least one embodiment of this disclosure provides a data transmission method for an array server. The array server includes multiple switches and multiple computing nodes communicatively connected to the multiple switches. The method includes: providing a first network controller and a second network controller for a first computing node among the multiple computing nodes, wherein the first computing node is any one of the multiple computing nodes; connecting the first computing node among the multiple computing nodes to the multiple switches through the first network controller and the second network controller, and connecting a network interface card (NIC) that enables the array server to communicate externally through the multiple switches.

[0008] At least one embodiment of this disclosure provides an array server, including multiple computing nodes and multiple switches, wherein a first computing node is communicatively connected to the multiple switches and is configured to include a first network controller and a second network controller, wherein the first computing node is any one of the multiple computing nodes; the multiple switches are connected to the first network controller and the second network controller, and are also connected to a network interface card (NIC) that enables the array server to communicate externally.

[0009] This disclosure provides at least one embodiment of an electronic device, including: at least one processor and a memory; wherein, the memory stores a computer program, and when the computer program is executed by the processor, it implements any of the data transmission methods described in the above embodiments.

[0010] At least one embodiment of this disclosure provides a computer-readable storage medium having computer-executable instructions stored thereon, wherein when the instructions are executed by a processor, they implement the data transmission method of any of the above embodiments. Attached Figure Description

[0011] To more clearly illustrate the embodiments of this disclosure, the accompanying drawings used in the embodiments will be briefly described below. Obviously, the drawings described below are merely embodiments of this disclosure. For those skilled in the art, other drawings can be obtained based on the provided drawings without any creative effort.

[0012] Figure 1 shows a schematic diagram of an array server;

[0013] Figure 2 shows a schematic diagram of another array server;

[0014] Figure 3 shows a flowchart of a data transmission method for an array server provided in at least one embodiment of the present disclosure;

[0015] Figure 4 shows a schematic diagram of an array server provided in at least one embodiment of the present disclosure;

[0016] Figure 5 illustrates a schematic diagram of a computing node performing message transmission according to at least one embodiment of this disclosure; and

[0017] Figure 6 shows a schematic diagram of the structure of an electronic device provided by an embodiment of the present disclosure. Detailed Implementation

[0018] The technical solutions of the embodiments of this disclosure will be clearly and completely described below with reference to the accompanying drawings. Obviously, the described embodiments are only some embodiments of this disclosure, and not all embodiments. Based on the embodiments of this disclosure, all other embodiments obtained by those skilled in the art without creative effort are within the scope of protection of this disclosure.

[0019] Unless otherwise defined, all terms (including technical and scientific terms) used in the embodiments of this disclosure shall have the same meaning as commonly understood by one of ordinary skill in the art to which this disclosure pertains. It should also be understood that terms such as those defined in a common dictionary shall be interpreted as having a meaning consistent with their meaning in the context of the relevant art, and shall not be interpreted in an idealized or highly formalized sense, unless expressly defined in the embodiments of this disclosure.

[0020] The terms "first," "second," and similar words used in this disclosure do not indicate any order, quantity, or importance, but are merely used to distinguish different components. Similarly, the terms "an," "one," or "the" do not indicate a quantity limitation, but rather indicate the presence of at least one. Likewise, the terms "including" or "comprising" mean that the element or object preceding the word encompasses the elements or objects listed after the word and their equivalents, without excluding other elements or objects. The terms "connected" or "linked" are not limited to physical or mechanical connections, but can include electrical connections, whether direct or indirect. Flowcharts are used in this disclosure to illustrate the steps of the method according to embodiments of this disclosure. It should be understood that the preceding or following steps are not necessarily performed in exact order. Instead, various steps can be processed in reverse order or simultaneously. Furthermore, other operations can be added to these processes, or one or more steps can be removed from these processes.

[0021] Figure 1 shows a schematic diagram of an array server.

[0022] As shown in Figure 1, the array server 100 includes multiple computing nodes, namely computing nodes 110 to 11n, where n is a positive integer. The array server 100 also includes an Ethernet switching chip 120, which is connected to computing nodes 110 to 11n. Computing nodes 110 to 11n are not directly connected; instead, data transmission between the computing nodes is achieved through the Ethernet switching chip 120. That is, data transmission between computing nodes 110 to 11n is implemented via Ethernet. The Ethernet switching chip 120 is connected to an external Ethernet switch 130 to enable network communication between the array server 100 and the outside world. In this disclosure, computing nodes may also be referred to as computing units.

[0023] As shown in Figure 1, the performance of the array server 100 is limited. For example, the number of computing nodes is limited by the number of network ports of the Ethernet switching chip 120. The data transmission bandwidth requirement of a single computing node is low, while the data transmission bandwidth of the Ethernet switching chip 120 is high. As a result, even with a large number of computing nodes, the data transmission bandwidth of the Ethernet switching chip 120 cannot be fully utilized during operation, resulting in a waste of resources.

[0024] Figure 2 shows a schematic diagram of another array server.

[0025] As shown in Figure 2, the array server 200 includes multiple computing nodes, namely computing nodes 210 to 21n, where n is a positive integer. The array server 200 also includes multiple Ethernet switching chips 221 to 22m, where m is a positive integer and m is less than n. Computing nodes 210 to 21n are divided into m groups, each group connected to one Ethernet switching chip from 220 to 22m. For example, m groups of computing nodes are set on m substrates, each substrate having one Ethernet switching chip. An Ethernet switch 230 is connected to the Ethernet switching chip in each group, i.e., Ethernet switching chips 221 to 22m. By using multiple Ethernet switching chips, the performance requirements and cost of a single Ethernet switching chip can be reduced; however, when the number of Ethernet switching chips is large, the overall cost cannot be reduced. When the number of computing nodes connected to a single Ethernet switching chip is small, the few computing nodes still cannot fully utilize the data transmission bandwidth of the Ethernet switching chip, resulting in resource waste.

[0026] To address the issues of computing nodes being unable to fully utilize the data transmission bandwidth of Ethernet switching chips and high costs, embodiments of this disclosure provide a data transmission method for an array server, as well as an array server, electronic devices, and storage media.

[0027] At least one embodiment of this disclosure provides a data transmission method for an array server. The array server includes multiple switches and multiple computing nodes communicatively connected to the multiple switches. The method includes: providing a first network controller and a second network controller for a first computing node among the multiple computing nodes, wherein the first computing node is any one of the multiple computing nodes; connecting the first computing node among the multiple computing nodes to the multiple switches through the first network controller and the second network controller, and connecting a network interface card (NIC) that enables the array server to communicate externally through the multiple switches.

[0028] At least one embodiment of this disclosure provides an array server, including multiple computing nodes and multiple switches, wherein a first computing node is communicatively connected to the multiple switches and is configured to include a first network controller and a second network controller, wherein the first computing node is any one of the multiple computing nodes; the multiple switches are connected to the first network controller and the second network controller, and are also connected to a network interface card (NIC) that enables the array server to communicate externally.

[0029] This disclosure provides at least one embodiment of an electronic device, including: at least one processor and a memory; wherein, the memory stores a computer program, and when the computer program is executed by the processor, it implements any of the data transmission methods described in the above embodiments.

[0030] This disclosure provides at least one embodiment of a computer-readable storage medium storing computer-executable instructions, wherein when these instructions are executed by a processor, they implement the data transmission method of any of the above embodiments.

[0031] The data transmission method for an array server provided in at least one embodiment of this disclosure provides a first network controller and a second network controller for each computing node. This enables each computing node to connect to a network interface card (NIC) for external communication via multiple switches, eliminating the need for each computing node to be configured with a dedicated Ethernet switching chip, thereby effectively reducing costs. Furthermore, in at least one embodiment, through the first network controller, the second network controller, and the multiple switches, any two computing nodes in the array server can communicate via the PCIe (Peripheral Component Interconnect Express) protocol, which further reduces latency and increases bandwidth throughput compared to the Ethernet communication protocol.

[0032] The embodiments provided in this disclosure will now be described in conjunction with the accompanying drawings. The examples below are illustrative of the embodiments of this disclosure and not limiting.

[0033] Figure 3 shows a flowchart of a data transmission method for an array server provided in at least one embodiment of the present disclosure.

[0034] As shown in Figure 3, the data transmission method 300 of the array server includes the following steps:

[0035] Step S301: Provide a first network controller and a second network controller for a first computing node among multiple computing nodes, wherein the first computing node is any one of the multiple computing nodes, and the array server includes multiple switches and multiple computing nodes that are communicatively connected to the multiple switches.

[0036] In this embodiment, the number of computing nodes can be from tens to hundreds, such as 100, 200, 500 or more. This embodiment provides a first network controller and a second network controller for each computing node. The first and second network controllers for each computing node can be configured using software or in hardware. In at least one embodiment, both the first and second network controllers are PCIe controllers, which include a controller acting as a root complex (RC) and a controller acting as an end point (EP). A multi-root switch can also be referred to as a multiple-roots-aware (MRA) switch.

[0037] Through the first network controller, the second network controller, and multiple switches, each compute node is able to communicate with other nodes via PCIe.

[0038] Step S302: The first computing node among the multiple computing nodes is connected to multiple switches through the first network controller and the second network controller, and the network card that enables the array server to communicate with the outside world is connected through the multiple switches.

[0039] Multiple switches are also connected to network interface cards (NICs) that enable the array server to communicate externally. These NICs are, for example, the Ethernet switch 130 shown in Figure 1 or the Ethernet switch 230 shown in Figure 2. This NIC is not an internal NIC of the array server. By connecting multiple switches to this external communication NIC, each compute node within the array server can independently connect to this NIC via the multiple switches, thereby enabling independent external communication.

[0040] Optionally, a data transmission method for an array server provided according to at least one embodiment of the present disclosure further includes: in response to the first message of the first computing node being a network interface card (NIC), sending the first message to a multi-root switch via a second network controller that is a root composite component, such that the multi-root switch forwards the first message to the target object of the first message, wherein the first message is generated by the first computing node, and the target object of the first message is a second computing node in the array server or an endpoint device connected to the array server.

[0041] In this embodiment, each computing node can send messages to other computing nodes through multiple switches. Each message has a target object, which can also be understood as the sending object, i.e., the object to which the message is to be sent. The target objects of messages sent by the first computing node include other computing nodes, network interface cards (NICs), or endpoint devices connected to the array server. Endpoint devices connected to the array server can be memory, PCIe-to-Ethernet chips, etc.

[0042] For example, when the target of the first message from the first computing node is another computing node or endpoint device, the first message is sent to the multi-root switch via the second network controller, which acts as the root composite component. The root composite component has the capability to send messages, while the endpoint device controller only has the capability to receive messages. Optionally, when the first network controller acts as the root composite component, it sends the first message to the multi-root switch. After receiving the first message, the multi-root switch can determine the target object through the address or identification information of the target object carried in the first message and forward the first message to the target object.

[0043] Optionally, a data transmission method for an array server provided according to at least one embodiment of the present disclosure further includes: in response to receiving a second message whose target object is a first computing node, a multi-root switch sends the second message to a first network controller that is an endpoint component.

[0044] For example, when a multi-root switch receives a message and determines that the message is destined for the first compute node, the multi-root switch will forward the message to the network controller, which is an endpoint component in the first compute node, so that the first compute node can receive messages from other compute nodes.

[0045] Optionally, a data transmission method for an array server provided according to at least one embodiment of the present disclosure further includes: in response to the first message of the first computing node being a network interface card (NIC), sending the first message to a multi-root switch via a network protocol stack and a second network controller as a root composite component, causing the multi-root switch to forward the first message to the NIC, wherein the first message is generated by the first computing node.

[0046] For example, when the target of the first message is the network interface card (NIC), the first message is sent out of the network normally via the network protocol stack and is transmitted to the multi-root switch by the second network controller, which is the root composite component. The multi-root switch determines that the target of the first message is the NIC and sends the first message to the NIC.

[0047] Optionally, a data transmission method for an array server provided according to at least one embodiment of the present disclosure further includes: a first computing node determining whether the target object of the first message is a network interface card (NIC).

[0048] In this embodiment, the first message is generated by the first computing node, and the first computing node determines whether the target object of the first message is a network interface card (NIC). In embodiments of this disclosure, the target object of the first message can be a NIC, or other computing nodes or endpoint devices. The processing method for the first message differs depending on whether the target object is a NIC or other computing nodes or endpoint devices. When the target object is a NIC, the first message needs to be routed out of the network via the network protocol stack. When the target object is other computing nodes or endpoint devices, the first message actually intends to communicate within the array server or with PCIe devices outside the array server. Therefore, if the first message in this case also goes through the network protocol stack, it will increase the complexity of communication and the time required for communication. For example, the network protocol stack is the TCP / IP (Transmission Control Protocol / Internet Protocol) stack. The first message sent through the TCP / IP stack needs to be packaged in multiple layers, and after receiving the first message, it also needs to be unpacked. This has no impact on the external communication of the array server, but for the communication between the computing nodes inside the array server or with PCIe devices connected to the array server, such packaging and unpacking processes will increase the complexity of the communication. Especially for communication between computing nodes, such packaging and unpacking processes are actually undesirable.

[0049] The embodiments of this disclosure employ different forwarding processes for the first packet when the target object is a network interface card (NIC), or other computing nodes and endpoint devices. When the target object is a NIC, the first packet is sent using a network protocol stack and a second network controller as a root composite component. When the target object is other computing nodes and endpoint devices, the first packet is sent directly via the second network controller as a root composite component, without going through the network protocol stack.

[0050] Optionally, the first computing node determines whether the target object of the first message is a network interface card (NIC) by: determining whether the target object of the first message is a NIC through the fast data plane of the first computing node based on the identification information carried in the first message, wherein the identification information is used to identify the target object.

[0051] The embodiments of this disclosure can determine the target object of the first message using the eXpress Data Path (XDP). For example, the first message carries identification information indicating whether the target object of the first message is a network interface card (NIC). For instance, the identification information may simply indicate whether the target object of the first message is a NIC or not. Alternatively, the identification information may indicate that the target object is a compute node, a NIC, or an endpoint device. In an alternative implementation, the identification information is used to determine whether the first message belongs to communication within the array server, where a NIC as the target object belongs to external communication of the array server, and compute nodes and endpoint devices as the target objects belong to internal communication of the array server. It is understood that although endpoint devices are not physically located within the array server, they are slave devices of the array server and are controlled by the array server; therefore, communication with endpoint devices is also classified as internal communication within the array server.

[0052] Optionally, the fast data plane of the first compute node can also be used to forward the first packet within the first compute node. For example, when it is determined that the target of the first packet is a network interface card (NIC), the fast data plane can forward the first packet to the entry point of the network protocol stack, thereby enabling the first packet to be packaged and sent to the second network controller, which is the root composite component, via the network protocol stack. When it is determined that the target of the first packet is another compute node or endpoint device, the fast data plane can directly forward the first packet to the second network controller, which is the root composite component.

[0053] Optionally, assuming the target of the first message is the second compute node in the array server, after receiving the first message, the second compute node will send a return message to the first compute node. For example, if the fast data plane in the second compute node determines that the return message belongs to the internal communication of the array server, the return message will be forwarded to the root composite component of the second compute node.

[0054] Optionally, a data transmission method for an array server provided according to at least one embodiment of the present disclosure further includes: in response to receiving a third message from a network interface card through a second network controller as a root composite component, a first computing node determines whether the target object of the third message is the first computing node based on the third message; if the target object of the third message is the first computing node, the third message is stored; if the target object of the third message is not the first computing node, the third message is discarded.

[0055] In this embodiment, when the network interface card (NIC) sends a packet to the array server, the NIC first forwards the packet to the multi-root switch. The multi-root switch can then forward the packet from the NIC to all compute nodes, which then determine whether the packet's destination is themselves. For example, after receiving a third packet from the NIC, the first compute node determines whether the packet's destination is itself. If the destination is itself, the third packet is stored; otherwise, it is discarded. Through this embodiment, the multi-root switch does not need to determine the destination of the third packet and perform precise packet forwarding, thus reducing the performance requirements of the multi-root switch.

[0056] Optionally, the first computing node determines whether the target object of the third message is the first computing node based on the third message, including: determining whether the target object of the third message is the first computing node based on the identification information carried in the third message through the fast data plane of the first computing node.

[0057] For example, when the third message carries identification information, the fast data plane of the first compute node can use the identification information to determine whether the target object of the third message is the first compute node. Similarly, when the third message carries the address information of the target object, the fast data plane of the first compute node can use this address information to determine whether the target object of the third message is the first compute node.

[0058] Optionally, a data transmission method for an array server provided according to at least one embodiment of the present disclosure further includes: broadcasting identification information of all computing nodes in the array server and devices connected to the array server when the array server is powered on, so that all computing nodes can obtain the broadcast identification information.

[0059] To enable the fast data plane to identify which identification information corresponds to the network interface card (NIC) or which belongs to internal communication within the array server, the identification information can be broadcast when the array server powers on. For example, the neighbor tables of the compute nodes and devices connected to the array server can be broadcast. Alternatively, the neighbor table can be distributed through a centralized control panel.

[0060] Figure 4 shows a schematic diagram of an array server provided in at least one embodiment of the present disclosure.

[0061] As shown in Figure 4, the array server 400 includes multiple computing nodes 411-41X and multiple switches 420, where X is a positive integer. The computing nodes 411-41X are connected to the multiple switches 420. Each computing node 411-41X includes a first network controller and a second network controller. Figure 4 only shows the first network controller 431 and the second network controller 432 in computing node 411; the other computing nodes can use the same configuration as computing node 411. The multiple switches 420 are also connected to network interface cards 401 and endpoint devices 402 external to the array server 400. The network interface card 401 enables the array server 400 to communicate externally. The multiple switches 420 can connect to one or more endpoint devices; only one endpoint device 402 is shown in Figure 4.

[0062] For ease of description and understanding, the first network controller 431 acts as an endpoint component, and the second network controller 432 acts as a root composite component. Compute node 411 needs to send packets unidirectionally to the multi-root switch 420 through the second network controller 432 and receive packets unidirectionally from the multi-root switch 420 through the first network controller 431. Thus, compute node 411 achieves bidirectional communication with the multi-root switch 420. Compute nodes 412 to 41X are the same as compute node 411 and will not be described again here. It is understood that the first network controller 431 can also act as a root composite component, and the second network controller 432 can also act as an endpoint component, but the first network controller 431 and the second network controller 432 will not simultaneously act as root composite components or simultaneously act as endpoint components. Furthermore, the first network controller 431 and the second network controller 432 operate independently; that is, the first network controller 431 and the second network controller 432 can simultaneously receive and send packets.

[0063] In this embodiment, by configuring a first network controller and a second network controller in each computing node, each computing node is equipped with the ability to communicate with multiple switches 420 according to the PCIe protocol. The multiple switches 420 are connected to all computing nodes, enabling communication between any two computing nodes according to the PCIe protocol. Therefore, configuring multiple switches in the array server and configuring a first network controller and a second network controller in each computing node allows the computing nodes within the array server to communicate using the PCIe protocol without using Ethernet, thereby reducing costs and increasing transmission bandwidth.

[0064] Optionally, the second network controller serves as a root composite component. The second network controller is configured to: in response to the first message from the first compute node being a network interface card (NIC), send the first message to a multi-root switch, causing the multi-root switch to forward the first message to the target object of the first message. The first message is generated by the first compute node, and the target object of the first message is the second compute node in the array server or an endpoint device connected to the array server.

[0065] For example, if compute node 411 is the first compute node, and the destination of the first message is not network interface card 401, the second network controller 432 sends the first message to the multi-node switch 420. For instance, if the destination of the first message is compute node 412, the multi-node switch 420 will send the first message to the first network controller of compute node 412. Similarly, if the destination of the first message is endpoint device 402, the multi-node switch 420 will send the first message to endpoint device 402.

[0066] Optionally, in an array server provided according to at least one embodiment of the present disclosure, a second network controller is configured to: in response to a first message from a first computing node whose target is a network interface card (NIC), send a first message to a multi-root switch based on a network protocol stack and the second network controller as a root composite component, such that the multi-root switch sends the first message to the NIC, wherein the first message is generated by the first computing node.

[0067] For example, if the target of the first message in the first computing node is the network card 401, the first message first passes through the network protocol stack and then reaches the second network controller 432. The second network controller 432 sends the first message to the multi-switch 420, and then the multi-switch 420 forwards the first message to the network card 401.

[0068] Optionally, after generating the first message, the compute node may also determine whether the target of the first message is a network interface card (NIC) or whether the target of the first message belongs to the array server.

[0069] For example, compute node 411 generates a first message and then determines whether the corresponding target object is network interface card 401 based on the first message. If the target object is determined to be network interface card 401, the first message is sent to multiple switches 420 based on the network protocol stack and the second network controller 432.

[0070] Optionally, in an array server provided according to at least one embodiment of the present disclosure, the first computing node is further configured to: determine whether the target object of the first message is a network interface card (NIC) through a fast data plane based on the identification information carried by the first message, wherein the identification information is used to identify the target object.

[0071] For example, compute node 411 uses the identification information carried in the first packet to determine whether the target object of the first packet is network interface card 401 via the fast data plane. In this embodiment, the fast data plane is located in the kernel space of the compute node, and the first packet is generated by the user space of the compute node.

[0072] Network interface card 401 can send a third message to compute nodes 411-41X. For example, when network interface card 401 sends a third message to compute node 414, the second network controller of compute node 414 receives the third message via multiple switches 420. It determines that the target of the third message is compute node 414 itself and stores the third message, for example, in UMEM (Userspace Memory), which is a shared memory space within user space. Other compute nodes besides compute node 414 will also receive the third message, but they will determine that the target of the third message is not themselves and discard the third message.

[0073] Optionally, the computing node can determine whether the target object of the third message is itself based on the identification information carried in the third message.

[0074] Optionally, when the array server powers on, it sends the identification information of all computing nodes in the array server and the devices connected to the array server to all computing nodes. For example, when the array server 400 powers on, it broadcasts the identification information of multiple computing nodes 411 to 41X to all computing nodes. When the array server 400 powers on, it may also send the identification information of the endpoint device 402 to all computing nodes.

[0075] Figure 5 shows a schematic diagram of a computing node transmitting messages according to at least one embodiment of the present disclosure.

[0076] Figure 5 shows compute node 500, compute node 510, multi-connector switch 520, and network interface card 530. Compute node 500 includes EP component 501 and RC component 502, and compute node 510 includes EP component 511 and RC component 512. EP component 501, RC component 502, EP component 511, and RC component 512 are connected to multi-connector switch 520. Multi-connector switch 520 is connected to network interface card 530. Compute node 500 and compute node 510 can be any two compute nodes in the array server 400 shown in Figure 4, and multi-connector switch 520 can be multi-connector switch 420. Network interface card 530 can be implemented using network interface card 401 shown in Figure 4.

[0077] When compute node 500 sends a message to compute node 510, compute node 500 generates a message in its user space and sends it to XDP. For example, after the message is generated, the application layer writes to the AF_XDP socket, so that XDP can receive the message. XDP determines whether the message is a communication message within the array server. For example, if the destination of the message is compute node 510, XDP determines that the message is a communication message within the array server, and XDP sends the message to the EP component 511 of compute node 510 via RC component 502 and multi-root switch 520.

[0078] After receiving the message, EP component 511 sends the message to XDP inside compute node 510. XDP then forwards the message to UMEM inside compute node 510. In response to receiving the message, compute node 510, after processing the message, needs to return a return message to compute node 500. The return message is generated by the user space of compute node 510 and then sent to XDP on compute node 510. XDP needs to determine whether the return message pertains to communication within the array server. If XDP determines that the return message pertains to communication within the array server, XDP sends the return message to EP component 501 of compute node 500 via RC component 512.

[0079] When compute node 500 sends a message to network interface card 530, the user space of compute node 500 generates the message, which is then sent to XDP. For example, after the message is generated, the application layer writes an AF_XDP socket, allowing XDP to receive the message. XDP determines whether the message is for communication within the array server. For example, if the destination of the message is network interface card 530, XDP determines that the message is not for communication within the array server. XDP forwards the message to the network protocol stack within the compute node, and then sends it to the multi-switch 520 via RC component 502. The multi-switch 520 then sends the message to network interface card 530.

[0080] When network interface card 530 sends a packet to compute node 510, network interface card 530 forwards the packet to multi-node switch 520. Multi-node switch 520 then forwards the packet to both compute node 500 and compute node 510. The XDP in compute node 510 determines that the target of the packet is compute node 510 and stores the packet in UMEM. If the XDP in compute node 500 determines that the target of the packet is not compute node 510, the XDP will discard the packet.

[0081] At least one embodiment of this disclosure provides an electronic device, including: at least one processor and a memory; wherein, the memory stores a computer program, and when the computer program is executed by the processor, it implements any one of the methods in the above-described data transmission method embodiments.

[0082] Figure 6 shows a schematic diagram of the structure of an electronic device provided by an embodiment of the present disclosure.

[0083] For example, as shown in FIG6, in some examples, electronic device 600 includes a processing device (e.g., central processing unit, graphics processing unit, etc.) 601, which may include the floating-point processing device of any of the above embodiments, such as a main processor and a coprocessor, the main processor and the coprocessor including the corresponding floating-point processing device described above, which can perform various appropriate actions and processes according to a program stored in read-only memory (ROM) 602 or a program loaded from storage device 608 into random access memory (RAM) 603. RAM 603 also stores various programs and data required for the operation of the computer system. Processor 601, ROM 602, and RAM 603 are connected via bus 604. Input / output (I / O) interface 605 is also connected to bus 604.

[0084] For example, the following components can be connected to I / O interface 605: input devices 606 including, for example, touchscreens, touchpads, keyboards, mice, cameras, microphones, accelerometers, gyroscopes, etc.; output devices 607 including, for example, liquid crystal displays (LCDs), speakers, vibrators, etc.; storage devices 608 including, for example, magnetic tapes, hard disks, etc.; and communication devices 609, such as network interface cards like LAN cards and modems, etc. Communication device 609 allows electronic device 600 to communicate wirelessly or wiredly with other devices to exchange data and perform communication processing via networks such as the Internet. Drive 710 is also connected to I / O interface 605 as needed. Removable media 711, such as disks, optical disks, magneto-optical disks, semiconductor memories, etc., are installed on drive 710 as needed so that computer programs read from them can be installed into storage device 608 as needed. Although FIG. 6 shows electronic device 600 including various devices, it should be understood that it is not required to implement or include all the devices shown. More or fewer devices may be implemented or included alternatively.

[0085] For example, the electronic device 600 may further include a peripheral interface (not shown). This peripheral interface can be various types of interfaces, such as a USB interface, a Lightning interface, etc. The communication device 609 can communicate wirelessly with a network and other devices, such as the Internet, an intranet, and / or a wireless network such as a cellular telephone network, a wireless local area network (LAN), and / or a metropolitan area network (MAN). Wireless communication can use any of a variety of communication standards, protocols, and technologies, including but not limited to Global System for Mobile Communications (GSM), Enhanced Data GSM Environment (EDGE), Wideband Code Division Multiple Access (W-CDMA), Code Division Multiple Access (CDMA), Time Division Multiple Access (TDMA), Bluetooth, Wi-Fi (e.g., based on IEEE 802.11a, IEEE 802.11b, IEEE 802.11g, and / or IEEE 802.11n standards), Voice over Internet Protocol (VoIP), Wi-MAX, protocols for email, instant messaging, and / or Short Message Service (SMS), or any other suitable communication protocol.

[0086] The electronic devices in this disclosure may include, but are not limited to, mobile terminals such as mobile phones, laptops, digital broadcast receivers, PDAs (personal digital assistants), PADs (tablet computers), PMPs (portable multimedia players), and in-vehicle terminals (e.g., in-vehicle navigation terminals), as well as fixed terminals such as digital TVs and desktop computers. The electronic device shown in Figure 6 is merely an example and should not be construed as limiting the functionality and scope of use of the embodiments of this disclosure.

[0087] For example, the electronic device 600 can be any device such as a mobile phone, tablet computer, laptop computer, e-reader, game console, television, digital photo frame, navigator, server, etc., or any combination of data processing devices and hardware. The embodiments of this disclosure do not limit this. The electronic devices in the embodiments of this disclosure may include, but are not limited to, mobile terminals such as laptop computers and tablet computers, and fixed terminals such as desktop computers. The electronic device shown in Figure 6 is merely an example and should not impose any limitations on the functionality and scope of use of the embodiments of this disclosure.

[0088] For example, according to embodiments of this disclosure, the processes described above with reference to the flowcharts can be implemented as computer software programs. For instance, embodiments of this disclosure include a computer program product comprising a computer program carried on a non-transitory computer-readable medium, the computer program containing program code for performing the methods shown in the flowcharts. When the computer program is executed by a processor, the method for managing line interrupts according to embodiments of this disclosure is performed.

[0089] This disclosure provides at least one embodiment of a computer-readable storage medium storing computer-executable instructions, wherein when these instructions are executed by a processor, they implement the method of any one of the above-described data transmission method embodiments.

[0090] It should be noted that the computer-readable medium described above in this disclosure can be a computer-readable signal medium or a computer-readable storage medium, or any combination of the two. A computer-readable storage medium can be, for example, but not limited to, an electrical, magnetic, optical, electromagnetic, infrared, or semiconductor system, apparatus, or device, or any combination thereof. More specific examples of a computer-readable storage medium may include, but are not limited to: an electrical connection having one or more wires, a portable computer disk, a hard disk, random access memory (RAM), read-only memory (ROM), erasable programmable read-only memory (EPROM or flash memory), optical fiber, portable compact disk read-only memory (CD-ROM), optical storage device, magnetic storage device, or any suitable combination thereof. In embodiments of this disclosure, a computer-readable storage medium can be any tangible medium containing or storing a program that can be used by or in conjunction with an instruction execution system, apparatus, or device. In embodiments of this disclosure, a computer-readable signal medium can include a data signal propagated in baseband or as part of a carrier wave, carrying computer-readable program code. Such propagated data signals can take various forms, including but not limited to electromagnetic signals, optical signals, or any suitable combination thereof. A computer-readable signal medium can be any computer-readable medium other than a computer-readable storage medium, which can send, propagate, or transmit a program for use by or in connection with an instruction execution system, apparatus, or device. The program code contained on the computer-readable medium can be transmitted using any suitable medium, including but not limited to: wires, optical fibers, RF (radio frequency), etc., or any suitable combination thereof.

[0091] The aforementioned computer-readable medium may be included in the aforementioned electronic device; or it may exist independently and not assembled into the electronic device.

[0092] The basic principles of this application have been described above with reference to specific embodiments. However, it should be noted that the advantages, benefits, and effects mentioned in this application are merely examples and not limitations, and should not be considered as essential features of each embodiment of this application. Furthermore, the specific details disclosed above are for illustrative and facilitative purposes only, and are not limitations. These details do not limit the application to the necessity of employing the aforementioned specific details for implementation.

[0093] It is important to note that the flowcharts and method descriptions in this application are merely illustrative examples and are not intended to require or imply that the steps of the various embodiments must be performed in the given order. Some steps may be performed in parallel, independently of each other, or in another suitable order. Furthermore, words such as "secondly," "then," "next," etc., are not intended to limit the order of steps; these words are merely used to guide the reader through the description of these methods.

[0094] The block diagrams of devices, apparatuses, devices, and systems involved in this application are merely illustrative examples and are not intended to require or imply that connections, arrangements, or configurations must be made in the manner shown in the block diagrams. It should also be noted that in the apparatuses and methods of this application, components or steps can be disassembled and / or recombined. Such disassembly and / or recombination should be considered equivalent solutions to those in this application.

[0095] Embodiment 1 of this disclosure provides a data transmission method for an array server. The array server includes multiple switches and multiple computing nodes communicatively connected to the multiple switches. The method includes: providing a first network controller and a second network controller for a first computing node among the multiple computing nodes, wherein the first computing node is any one of the multiple computing nodes; connecting the first computing node among the multiple computing nodes to the multiple switches through the first network controller and the second network controller, and connecting a network interface card (NIC) through the multiple switches to enable the array server to communicate externally.

[0096] In Embodiment 2, the data transmission method of the array server according to Embodiment 1 further includes: in response to the fact that the target object of the first message of the first computing node is not a network card, the first message is sent to the multi-root switch via the second network controller as a root composite component, so that the multi-root switch forwards the first message to the target object of the first message, wherein the first message is generated by the first computing node, and the target object of the first message is the second computing node in the array server or the endpoint device connected to the array server.

[0097] In Embodiment 3, the data transmission method of the array server according to Embodiment 1 or Embodiment 2 further includes: in response to the first message of the first computing node being a network interface card (NIC), sending the first message to a multi-root switch through a network protocol stack and a second network controller as a root composite component, causing the multi-root switch to forward the first message to the NIC, wherein the first message is generated by the first computing node.

[0098] In Embodiment 4, the data transmission method of the array server according to any one of Embodiments 1 to 3 further includes: in response to receiving a second message whose target object is a first computing node, the multi-root switch sends the second message to a first network controller as an endpoint component.

[0099] In Embodiment 5, the data transmission method of the array server according to any one of Embodiments 1 to 4 further includes: in response to receiving a third message from a network interface card through a second network controller as a root composite component, the first computing node determines whether the target object of the third message is the first computing node based on the third message; if the target object of the third message is the first computing node, the third message is stored; if the target object of the third message is not the first computing node, the third message is discarded.

[0100] In Embodiment 6, the data transmission method of the array server according to any one of Embodiments 1 to 5 further includes: a first computing node determining whether the target object of the first message is a network interface card (NIC).

[0101] In Embodiment 7, in the data transmission method of the array server according to any one of Embodiments 1 to 6, the first computing node determines whether the target object of the first message is a network interface card (NIC) by: determining whether the target object of the first message is a NIC through the fast data plane of the first computing node based on the identification information carried in the first message, wherein the identification information is used to identify the target object.

[0102] In Embodiment 8, in the data transmission method of the array server according to any one of Embodiments 1 to 7, the first computing node determines whether the target object of the third message is the first computing node based on the third message, including: determining whether the target object of the third message is the first computing node based on the identification information carried by the third message through the fast data plane of the first computing node.

[0103] In Embodiment 9, the data transmission method of the array server according to any one of Embodiments 1 to 8 further includes: when the array server is powered on, broadcasting the identification information of all computing nodes in the array server and the devices connected to the array server, so that all computing nodes can obtain the broadcast identification information.

[0104] Embodiment 10 of this disclosure provides an array server, including multiple computing nodes and multiple switches. A first computing node is communicatively connected to the multiple switches and is configured to include a first network controller and a second network controller. The first computing node is any one of the multiple computing nodes. The multiple switches are connected to the first network controller and the second network controller, and are also connected to a network interface card (NIC) that enables the array server to communicate with the outside world.

[0105] In Embodiment 11, in the array server according to Embodiment 10, the second network controller serves as a root composite component. The second network controller is configured to: in response to the first message of the first computing node being a network interface card (NIC), send the first message to a multi-root switch, causing the multi-root switch to forward the first message to the target object of the first message. The first message is generated by the first computing node, and the target object of the first message is the second computing node in the array server or an endpoint device connected to the array server.

[0106] In Embodiment 12, in the array server according to Embodiment 10 or Embodiment 11, the second network controller is configured to: in response to the first message of the first computing node being a network interface card (NIC), send the first message to a multi-root switch based on the network protocol stack, causing the multi-root switch to send the first message to the NIC, wherein the first message is generated by the first computing node.

[0107] Optionally, in an array server provided according to at least one embodiment of the present disclosure, the multiple switches are further configured to: in response to receiving a second message whose target is a first computing node, send the second message to a first network controller as an endpoint component.

[0108] In Embodiment 13, in the array server according to any one of Embodiments 10 to 12, the first computing node is further configured to: in response to receiving a third message from a network interface card via a second network controller as a root composite component, determine whether the target object of the third message is the first computing node; if the target object of the third message is the first computing node, store the third message; if the target object of the third message is not the first computing node, discard the third message.

[0109] In Example 14, in the array server according to any one of Examples 10 to 13, the first computing node is further configured to: determine whether the target object of the first message is a network interface card (NIC).

[0110] In Embodiment 15, in the array server according to any one of Embodiments 10 to 14, the first computing node is further configured to: determine whether the target object of the first message is a network interface card (NIC) through a fast data plane based on the identification information carried by the first message, wherein the identification information is used to identify the target object.

[0111] In Embodiment 16, in the array server according to any one of Embodiments 10 to 15, the first computing node is further configured to: determine whether the target object of the third message is the first computing node through the fast data plane based on the identification information carried by the third message.

[0112] In Embodiment 17, in the array server according to any one of Embodiments 10 to 16, the multiple switches are further configured to send identification information of all compute nodes in the array server and devices connected to the array server to all compute nodes when the array server is powered on.

[0113] Embodiment 18 of this disclosure provides an electronic device, including: at least one processor and a memory; wherein, the memory stores a computer program, and when the computer program is executed by the processor, it implements the data transmission method of any of the above embodiments.

[0114] Embodiment 19 of this disclosure provides a computer-readable storage medium storing computer-executable instructions thereon, wherein when the instructions are executed by a processor, they implement the data transmission method of any of the above embodiments.

[0115] In addition to the above non-restrictive disclosure, the following points need to be explained in this disclosure:

[0116] (1) The accompanying drawings of the embodiments of this disclosure only involve the structures involved in the embodiments of this disclosure. Other structures can be referred to the general design.

[0117] (2) Where there is no conflict, the embodiments of this disclosure and the features in the embodiments can be combined with each other to obtain new embodiments.

[0118] The above are merely specific embodiments of this disclosure, but the scope of protection of this disclosure is not limited thereto. The scope of protection of this disclosure shall be determined by the scope of the claims.

Claims

1. A data transmission method for an array server, the array server comprising multiple switches and multiple computing nodes communicatively connected to the multiple switches, the method comprising: A first network controller and a second network controller are provided for a first computing node among the plurality of computing nodes, wherein the first computing node is any one of the plurality of computing nodes; The first computing node among the plurality of computing nodes is connected to the plurality of switches through the first network controller and the second network controller, and the array server is connected to a network card through the plurality of switches to enable external communication.

2. The data transmission method according to claim 1 further includes: In response that the target of the first message of the first computing node is not the network interface card, the first message is sent to the multi-root switch via the second network controller, which is a root composite component, so that the multi-root switch forwards the first message to the target of the first message. The first message is generated by the first computing node, and the target of the first message includes the second computing node in the array server and the endpoint device connected to the array server.

3. The data transmission method according to claim 1 or 2 further includes: In response to the first message from the first computing node, whose target is the network interface card (NIC), the first message is sent to the multi-root switch via the network protocol stack and the second network controller, which is a root composite component. This causes the multi-root switch to forward the first message to the NIC. The first message is generated by the first computing node.

4. The data transmission method according to any one of claims 1-3, further comprising: In response to receiving a second message whose target is the first computing node, the multi-root switch sends the second message to the first network controller, which is an endpoint component.

5. The data transmission method according to any one of claims 1-4, further comprising: In response to receiving a third message from the network interface card via the second network controller, which is a root composite component, the first computing node determines whether the target of the third message is the first computing node based on the third message. When the target of the third message is the first computing node, the third message is stored; If the target of the third message is not the first computing node, the third message is discarded.

6. The data transmission method according to claim 2, further comprising: The first computing node determines whether the target object of the first message is a network interface card (NIC).

7. The data transmission method according to claim 6, wherein, The first computing node determines whether the target of the first packet is a network interface card (NIC), including: Based on the identification information carried in the first message, the target object of the first message is determined to be the network interface card (NIC) through the fast data plane of the first computing node, wherein the identification information is used to identify the target object.

8. The data transmission method according to claim 5, wherein, The first computing node determines whether the target object of the third message is the first computing node based on the third message, including: Based on the identification information carried in the third message, the target object of the third message is determined to be the first computing node through the fast data plane of the first computing node.

9. The data transmission method according to any one of claims 1-8, further comprising: When the array server is powered on, the identification information of all computing nodes in the array server and devices connected to the array server is broadcast so that all computing nodes can obtain the broadcast identification information.

10. An array server comprising multiple compute nodes and multiple switches, wherein, The first computing node is communicatively connected to the plurality of switches and is configured to include a first network controller and a second network controller, wherein the first computing node is any one of the plurality of computing nodes; The multiple switches are connected to the first network controller and the second network controller, and are also connected to the network interface card (NIC) that enables the array server to communicate with the outside world.

11. The array server according to claim 10, wherein, The second network controller, as the root composite component, is configured as follows: In response to the fact that the target of the first message of the first computing node is not the network interface card, the first message is sent to the multi-root switch, so that the multi-root switch forwards the first message to the target of the first message, wherein the first message is generated by the first computing node, and the target of the first message is the second computing node in the array server or the endpoint device connected to the array server.

12. The array server according to claim 11 or 10, wherein, The second network controller is configured as follows: In response to the first message from the first computing node, whose target is the network interface card (NIC), the first message is sent to the multi-root switch based on the network protocol stack, causing the multi-root switch to send the first message to the NIC. The first message is generated by the first computing node.

13. The array server according to any one of claims 10-12, wherein, The multiple switches are also configured to: In response to receiving a second message whose target is the first computing node, the second message is sent to the first network controller, which is an endpoint component.

14. The array server according to any one of claims 10-13, wherein, The first computing node is also configured as follows: In response to receiving a third message from the network interface card via the second network controller, which is a root composite component, the system determines whether the target object of the third message is the first computing node based on the third message. When the target of the third message is the first computing node, the third message is stored; If the target of the third message is not the first computing node, the third message is discarded.

15. The array server according to claim 11, wherein, The first computing node is also configured as follows: Determine whether the target of the first message is a network interface card (NIC).

16. The array server according to claim 15, wherein, The first computing node is also configured as follows: Based on the identification information carried in the first message, the target object of the first message is determined to be the network interface card (NIC) through the fast data plane, wherein the identification information is used to identify the target object.

17. The array server according to claim 14, wherein, The first computing node is also configured as follows: Based on the identification information carried in the third message, the target object of the third message is determined to be the first computing node through the fast data plane.

18. The array server according to any one of claims 10-17, wherein, The multiple switches are also configured to: When the array server is powered on, the identification information of all computing nodes in the array server and the devices connected to the array server is sent to all computing nodes.

19. An electronic device comprising: At least one processor and memory; The memory stores computer programs. When the computer program is executed by the processor, it implements the data transmission method according to any one of claims 1 to 9.

20. A computer-readable storage medium having stored thereon computer-executable instructions, wherein, When the instruction is executed by the processor, it implements the data transmission method according to any one of claims 1 to 9.

Citation Information

Patent Citations

  • SoC array server based on two-stage network architecture design

    CN116450567A

  • Multi-network card management system, multi-network card management method and computer equipment

    CN117278398A

  • Double-node BMC (Baseboard Management Controller) management device and method

    CN118524102A

  • Fabric Independent PCIE Cluster Manager

    US20170017585A1