Message transmission method and device, electronic equipment and medium
By distinguishing data flow types and selecting appropriate transmission paths at the source node side, the out-of-order problem of throughput-sensitive and latency-sensitive data flows in VPC networks is solved, improving network throughput and reducing communication latency of latency-sensitive data flows.
Patent Information
- Application Number
- CN202510220120.0
- Authority / Receiving Office
- CN · China
- Patent Type
- Applications(China)
- Current Assignee / Owner
- Filing Date
- 2025-02-25
- Publication Date
- 2026-08-25
AI Technical Summary
In Virtual Private Cloud (VPC) networks, out-of-order packet transmission of throughput-sensitive and latency-sensitive data streams leads to increased communication latency and reduced throughput.
By distinguishing data stream types at the source node, the transmission path with the least congestion is selected for throughput-sensitive data streams to transmit messages, while delay-sensitive data streams are transmitted sequentially along the first addressing information, ensuring that messages arrive in order.
It improves network throughput and reduces communication latency and message retransmission probability for latency-sensitive data streams.
Smart Images

Figure CN122640345A_ABST
Abstract
Description
Technical Field
[0001] This disclosure relates to the field of data communication, and in particular to a message transmission method, apparatus, electronic device, and medium. Background Technology
[0002] A Virtual Private Cloud (VPC) is a cloud computing service that allows users to create a logically isolated virtual network environment on a public cloud infrastructure. In a VPC network, data streams emitted by applications running in virtual machines (referred to as cloud applications) can generally be categorized as throughput-sensitive or latency-sensitive. Throughput-sensitive data streams typically contain larger packets, requiring high network throughput, while latency-sensitive data streams typically contain smaller packets, requiring low communication latency. In data centers, the number of packets in throughput-sensitive data streams is far less than that in latency-sensitive data streams; however, throughput-sensitive data stream traffic accounts for the majority of data center network traffic.
[0003] With the widespread deployment of cloud applications requiring high throughput, high-throughput VPC networks have become a key factor in enhancing the competitiveness of cloud products. In data centers, multiple paths exist between two servers for transmitting packets. Common technologies utilize different transmission paths to transmit different packets within the data stream, thereby increasing network throughput. However, due to varying transmission delays along each path, this multipath transmission method can lead to out-of-order packets. This not only causes packet retransmissions but can also drastically reduce the sending speed at the sending end. Given the large number of packets in latency-sensitive data streams, this significantly increases communication latency and reduces communication efficiency. Summary of the Invention
[0004] This disclosure provides a message transmission method, apparatus, electronic device, and medium that can improve network throughput while ensuring that delay-sensitive data stream messages arrive in order, thereby reducing the communication latency of delay-sensitive messages.
[0005] According to one aspect of this disclosure, a message transmission method is provided, applied to a source node, the message transmission method comprising:
[0006] Acquire a data stream, wherein the data stream includes multiple messages, and the first addressing information of the multiple messages is the same, and there are multiple candidate transmission paths between the source node and the destination node;
[0007] Determine the stream type of the data stream;
[0008] If the flow type is throughput sensitive, for each packet in the data flow, at the routing time of the packet, based on the congestion level of the multiple candidate transmission paths at the routing time, the first transmission path corresponding to the packet is determined, and the packet is transmitted to the destination node through the first transmission path.
[0009] If the stream type is delay-sensitive, each packet in the data stream is transmitted along the second transmission path corresponding to the first addressing information, according to the order of the packets in the data stream.
[0010] According to one aspect of this disclosure, a message transmission method is provided, applied to a destination node, the destination node having multiple queue areas corresponding to multiple aggregated data streams, each queue area having a desired message sequence number and multiple ordered buffer queues, the desired message sequence number being initialized to the maximum message sequence number of a message that has been removed from the queue area and sent to the application plus 1;
[0011] The message transmission method includes:
[0012] A packet is received from a throughput-sensitive aggregated data stream via a first transmission path between the source node and the destination node, wherein the first transmission path is determined based on the congestion level of multiple candidate transmission paths during the routing time of the packet, the multiple candidate transmission paths being located between the source node and the destination node, and the packet having an aggregated data stream identifier of the aggregated data stream and a packet sequence number of the packet in the aggregated data stream;
[0013] Based on the aggregated data stream identifier, the message is allocated to the queue area corresponding to the aggregated data stream;
[0014] Based on the message sequence number, the message is cached in the target cache queue among the plurality of ordered cache queues in the queue area;
[0015] If the message sequence number is equal to the expected message sequence number, the contents of the target cache queue are removed and sent to the application.
[0016] According to one aspect of this disclosure, a message transmission apparatus is provided, disposed in a source node, the message transmission apparatus comprising:
[0017] The first acquisition unit is used to acquire a data stream, wherein the data stream includes multiple messages, and the first addressing information of the multiple messages is the same, and there are multiple candidate transmission paths between the source node and the destination node;
[0018] The first determining unit is used to determine the stream type of the data stream;
[0019] If the flow type is throughput sensitive, the first transmission unit is used to determine the first transmission path corresponding to each message in the data flow based on the congestion level of the multiple candidate transmission paths at the routing time of the message, and transmit the message to the destination node through the first transmission path.
[0020] If the stream type is delay-sensitive, the second transmission unit is used to transmit each message in the data stream along the second transmission path corresponding to the first addressing information, according to the order of the messages in the data stream.
[0021] Optionally, the first determining unit is specifically used for:
[0022] The messages in the data stream are sequentially used as the target messages;
[0023] If the length of the target message is greater than the first threshold, or the length of other messages preceding the target message in the data stream is greater than the first threshold, the stream type is determined to be throughput sensitive.
[0024] If the length of the target message is not greater than the first threshold, and the length of other messages preceding the target message in the data stream is not greater than the first threshold, the stream type is determined to be latency-sensitive.
[0025] Optionally, the first determining unit is specifically used for:
[0026] If the length of a predetermined number of consecutive packets following the target packet in the data stream is not greater than the first threshold, the stream type is converted to latency-sensitive.
[0027] Optionally, the first transmission unit is specifically used for:
[0028] Based on the first addressing information of each message, each message is added to the aggregated data stream;
[0029] For each message in the aggregated data stream, at the routing time of the message, based on the congestion level of the multiple candidate transmission paths at the routing time, the first transmission path corresponding to the message is determined.
[0030] Optionally, the first transmission unit is specifically used for:
[0031] Perform a digest operation on the first addressing information of the message to obtain an addressing information digest;
[0032] Calculate the first remainder after modifying the target parameters of the addressing information digest;
[0033] All messages with the same first remainder are added to the same aggregated data stream.
[0034] Optionally, the first transmission unit is specifically used for:
[0035] The first remainder is determined as the aggregated data stream identifier of the aggregated data stream;
[0036] Each message added to the aggregated data stream is assigned a message sequence number, which indicates the order of the message in the aggregated data stream;
[0037] The aggregate data stream identifier of the aggregate data stream to which the message is added is filled into the aggregate data stream identifier field of the message, and the message sequence number is filled into the message sequence number field of the message.
[0038] Optionally, the first transmission unit is specifically used for:
[0039] In each cycle, probe information is sent to the destination node through the multiple candidate transmission paths to obtain the congestion level of the multiple candidate transmission paths in that cycle;
[0040] Determine the period to which the route selection time belongs;
[0041] For each packet in the aggregated data stream, at the routing time of the packet, the first transmission path corresponding to the packet is determined based on the congestion level of the multiple candidate transmission paths in the previous period of the period to which the routing time belongs.
[0042] Optionally, the first transmission unit is specifically used for:
[0043] In each cycle, the probe information is sent to the destination node through the multiple candidate transmission paths, and the acknowledgment response is received from the destination node;
[0044] For each of the candidate transmission paths, calculate the message transmission time from sending the probe information to receiving the acknowledgment response;
[0045] Based on the message transmission time corresponding to each of the candidate transmission paths, the congestion level of each candidate transmission path in the period is determined.
[0046] Optionally, the first transmission unit is specifically used for:
[0047] Determine the second addressing information corresponding to the first transmission path;
[0048] The message is encapsulated using the second addressing information, wherein the second addressing information takes precedence over the first addressing information, so that the switching nodes on the first transmission path address according to the second addressing information.
[0049] Optionally, there are multiple layers of switching nodes between the source node and the destination node; the second addressing information includes a network interface card (NIC) port number and a User Datagram Protocol (UDP) source port number; the NIC port number indicates the output port number through which the source node connects to the first-layer switching node; the UDP source port number indicates the path number through which the first-layer switching node connects to the destination node via other layers of switching nodes in the multiple layers of switching nodes for each first-layer switching node to which the source node connects.
[0050] The first transmission unit is specifically used for:
[0051] Obtain the network interface card port number and the user datagram protocol source port number of the first transmission path;
[0052] The message is encapsulated based on the network interface card port number and the User Datagram Protocol (UDP) source port number.
[0053] Optionally, the second transmission unit is specifically used for:
[0054] Perform a digest operation on the first addressing information to obtain an addressing information digest;
[0055] The second remainder after calculating the addressing information digest modulo the total number of candidate transmission paths;
[0056] The candidate transmission path with the second remainder as its index is determined as the second transmission path;
[0057] The messages in the data stream are transmitted along the second transmission path according to the order of the messages in the data stream.
[0058] According to one aspect of this disclosure, a message transmission apparatus is provided, disposed in a destination node, the destination node having multiple queue areas corresponding to multiple aggregated data streams, each queue area having a desired message sequence number and multiple ordered buffer queues, the desired message sequence number being initialized to the maximum message sequence number of a message that has been removed from the queue area and sent to an application plus 1;
[0059] The message transmission device includes:
[0060] A receiving unit is configured to receive packets from a throughput-sensitive aggregated data stream from a first transmission path between a source node and the destination node, wherein the first transmission path is determined based on the congestion level of multiple candidate transmission paths during the routing time of the packet, the multiple candidate transmission paths are located between the source node and the destination node, and the packet has an aggregated data stream identifier of the aggregated data stream and a packet sequence number of the packet in the aggregated data stream;
[0061] The allocation unit is configured to allocate the packet to the queue area corresponding to the aggregated data stream based on the aggregated data stream identifier;
[0062] A caching unit is used to cache the message into a target caching queue among the plurality of ordered caching queues in the queue area based on the message sequence number.
[0063] If the message sequence number is equal to the expected message sequence number, the sending unit is used to remove the content from the target cache queue and send it to the application.
[0064] Optionally, the message transmission device further includes an update unit, which is specifically used for:
[0065] Update the expected message sequence number to the maximum message sequence number of the message removed from the target cache queue plus 1.
[0066] Optionally, the cache unit is specifically used for:
[0067] If the message sequence number is equal to the smallest message sequence number in the ordered cache queue minus 1, the message is cached at the head of the ordered cache queue;
[0068] If the message sequence number is equal to the maximum message sequence number in the ordered cache queue plus 1, the message is cached at the end of the ordered cache queue;
[0069] If the message sequence number is neither equal to the minimum message sequence number minus 1 in one of the ordered cache queues, nor equal to the maximum message sequence number plus 1 in one of the ordered cache queues, the message is cached in one of the ordered cache queues that does not have any messages cached.
[0070] Optionally, the cache unit is specifically used for:
[0071] If the message sequence number is equal to the maximum message sequence number in another ordered cache queue plus 1, clear the other ordered cache queue and move it to the head of the ordered cache queue.
[0072] Optionally, the cache unit is specifically used for:
[0073] If the message sequence number is equal to the minimum message sequence number in another ordered buffer queue minus 1, then the other ordered buffer queue is cleared and the message is moved to the tail of the ordered buffer queue.
[0074] According to one aspect of this disclosure, an electronic device is provided, including a memory and a processor, the memory storing a computer program, the processor executing the computer program to implement the message transmission method as described above.
[0075] According to one aspect of this disclosure, a computer-readable storage medium is provided, the storage medium storing a computer program that, when executed by a processor, implements the message transmission method as described above.
[0076] According to one aspect of this disclosure, a computer program product is provided, the computer program product including a computer program that is read and executed by a processor of a computer device, causing the computer device to perform the message transmission method as described above.
[0077] This embodiment of the disclosure distinguishes between throughput-sensitive and latency-sensitive data streams by determining the stream type, based on the characteristic that data streams from throughput-sensitive cloud applications typically contain long packets, while those from latency-sensitive cloud applications typically contain short packets. Then, for packets in a throughput-sensitive data stream, the candidate transmission path with the least congestion during the packet routing time is selected as the first transmission path, and the packet is transmitted to the destination node via this first transmission path. This process allows multiple different candidate transmission paths to be used to transmit multiple packets in a throughput-sensitive data stream, improving network throughput. For multiple packets in a latency-sensitive data stream, a second transmission path can be determined based on the packet's first addressing information, and the multiple packets are transmitted according to their order within the data stream. Because the first addressing information of multiple packets in the same data stream is the same, this processing ensures that all packets in the same data stream use the same second transmission path, instead of being transmitted through multiple candidate transmission paths. This effectively guarantees that packets in delay-sensitive data streams arrive in order, greatly reducing the probability of packet retransmission and communication latency. Unlike transmitting all packets in a data stream through multiple paths, this embodiment of the present disclosure distinguishes the flow type of the data stream at the source node side and determines different packet transmission methods for packets in data streams of different flow types. This improves network throughput while ensuring that packets in delay-sensitive data streams arrive in order, reducing communication latency.
[0078] Other features and advantages of this disclosure will be set forth in the following description and will be apparent in part from the description or may be learned by practicing the disclosure. The objectives and other advantages of this disclosure may be realized and obtained by means of the structures particularly pointed out in the description, claims and drawings. Attached Figure Description
[0079] The accompanying drawings are provided to further understand the technical solutions of this disclosure and constitute a part of the specification. They are used together with the embodiments of this disclosure to explain the technical solutions of this disclosure and do not constitute a limitation on the technical solutions of this disclosure.
[0080] Figure 1 This is an architecture diagram of a message transmission method according to embodiments of the present disclosure;
[0081] Figure 2 This is a schematic diagram of the topology of a data center network to which the message transmission method according to an embodiment of the present disclosure is applied;
[0082] Figure 3 This is a general flowchart of the message transmission method performed by the source node according to embodiments of the present disclosure;
[0083] Figure 4 This is a schematic diagram of multiple data streams to be transmitted to a destination node according to an embodiment of the present disclosure;
[0084] Figure 5 This is a schematic diagram of a data flow according to an embodiment of the present disclosure;
[0085] Figure 6 This is a schematic diagram illustrating the determination of a first transmission path corresponding to a message based on the congestion level of multiple candidate transmission paths during routing time, according to an embodiment of this disclosure.
[0086] Figure 7 This is a schematic diagram illustrating the determination of a second transmission path corresponding to a message based on the first addressing information of each message in a data stream, according to an embodiment of this disclosure.
[0087] Figure 8 This is a flowchart for determining the stream type of a data stream according to embodiments of the present disclosure;
[0088] Figure 9 This is a schematic diagram illustrating the determination of the data stream type based on the message length of the target message according to an embodiment of this disclosure;
[0089] Figure 10A This is a schematic diagram illustrating the determination of the flow type of a data stream based on the message length of multiple messages in a data stream according to an embodiment of this disclosure;
[0090] Figure 10BThis is a schematic diagram illustrating the determination of the flow type of a data stream based on the message length of multiple messages in a data stream, according to another embodiment of this disclosure.
[0091] Figure 11 This is a flowchart illustrating the conversion of a stream type to a latency-sensitive type according to embodiments of the present disclosure;
[0092] Figure 12 This is a schematic diagram illustrating the conversion of a stream type to a latency-sensitive type according to an embodiment of this disclosure;
[0093] Figure 13 This is a flowchart illustrating the determination of the first transmission path corresponding to a message according to embodiments of this disclosure;
[0094] Figure 14 This is a schematic diagram illustrating how, according to an embodiment of the present disclosure, each message is added to an aggregated data stream based on its first addressing information.
[0095] Figure 15 This is a schematic diagram illustrating the determination of a first transmission path corresponding to a message based on the congestion level of multiple candidate transmission paths during the routing time of a message, according to an embodiment of this disclosure.
[0096] Figure 16 This is a flowchart illustrating how each message is added to an aggregated data stream based on the first addressing information of each message, according to an embodiment of this disclosure.
[0097] Figure 17 This is a schematic diagram illustrating how, according to an embodiment of the present disclosure, each message is added to an aggregated data stream based on its first addressing information.
[0098] Figure 18 This is a flowchart illustrating how messages with the same first remainder are added to the same aggregated data stream according to an embodiment of this disclosure.
[0099] Figure 19 This is a schematic diagram illustrating, according to an embodiment of the present disclosure, the aggregation data stream identifier of the aggregated data stream to which the message is added is filled into the aggregation data stream identifier field of the message, and the message sequence number is filled into the message sequence number field of the message.
[0100] Figure 20 This is a flowchart illustrating how, according to an embodiment of the present disclosure, a first transmission path corresponding to a message is determined based on the congestion level of multiple candidate transmission paths during the routing time of a message.
[0101] Figure 21 This is a flowchart illustrating how multiple candidate transmission paths are sent to a destination node through multiple candidate transmission paths according to an embodiment of the present disclosure to obtain the congestion level of multiple candidate transmission paths during a period.
[0102] Figure 22 This is a schematic diagram illustrating how, according to an embodiment of the present disclosure, probe information is sent to a destination node through multiple candidate transmission paths to obtain the congestion level of multiple candidate transmission paths during a period.
[0103] Figure 23 This is a flowchart illustrating the transmission of a message to a destination node via a first transmission path according to an embodiment of the present disclosure;
[0104] Figure 24 This is a schematic diagram illustrating the determination of second addressing information corresponding to a first transmission path according to an embodiment of the present disclosure;
[0105] Figure 25 This is a flowchart illustrating the encapsulation of a message using second addressing information according to an embodiment of the present disclosure;
[0106] Figure 26 This is a flowchart illustrating how, according to an embodiment of the present disclosure, each message in a data stream is transmitted along a second transmission path corresponding to the first addressing information, in accordance with the order of the messages in the data stream.
[0107] Figure 27 This is a schematic diagram illustrating the determination of a candidate transmission path with a second remainder as the sequence number as an embodiment of the present disclosure.
[0108] Figure 28 This is a general flowchart of the message transmission method performed by the destination node according to embodiments of the present disclosure;
[0109] Figure 29 This is a schematic diagram illustrating the allocation of messages to the queue area corresponding to the aggregated data stream according to an embodiment of this disclosure;
[0110] Figure 30 This is a flowchart of the operations performed after removing the contents of the target cache queue and sending them to the application, according to embodiments of this disclosure;
[0111] Figure 31 This is a flowchart illustrating how a message is cached into a target cache queue among multiple ordered cache queues in a queue area, according to an embodiment of the present disclosure.
[0112] Figure 32A This is a schematic diagram illustrating the caching of messages into the header of an ordered cache queue according to an embodiment of the present disclosure;
[0113] Figure 32B This is a schematic diagram illustrating the caching of messages to the tail of an ordered cache queue according to an embodiment of the present disclosure;
[0114] Figure 32C This is a schematic diagram illustrating the caching of messages into an ordered cache queue that does not cache any messages, according to an embodiment of the present disclosure.
[0115] Figure 33 This is a flowchart of the operations performed after a message is cached into the header of an ordered cache queue according to embodiments of the present disclosure;
[0116] Figure 34 This is a schematic diagram illustrating the clearing of another ordered cache queue and the moving of an element into the head of the ordered cache queue according to an embodiment of the present disclosure.
[0117] Figure 35 This is a flowchart of the operations performed after a message is cached to the tail of an ordered cache queue according to embodiments of the present disclosure;
[0118] Figure 36 This is a schematic diagram illustrating the clearing of another ordered cache queue and the moving of an element to the tail of the ordered cache queue according to an embodiment of the present disclosure.
[0119] Figure 37 This is a schematic diagram of an overall embodiment of caching packets into a target cache queue among multiple ordered cache queues in a queue area based on the packet sequence number, according to an embodiment of the present disclosure;
[0120] Figure 38 This is a block diagram of a message transmission apparatus applied to the source node side according to an embodiment of the present disclosure;
[0121] Figure 39 This is a block diagram of a message transmission apparatus applied to the destination node side according to an embodiment of the present disclosure;
[0122] Figure 40 This is a terminal structure diagram of an embodiment of the message transmission method according to the present disclosure;
[0123] Figure 41 This is a server structure diagram of an implementation message transmission method according to an embodiment of the present disclosure. Detailed Implementation
[0124] To make the objectives, technical solutions, and advantages of this disclosure clearer, the following detailed description is provided in conjunction with the accompanying drawings and embodiments. It should be understood that the specific embodiments described herein are merely illustrative and are not intended to limit the scope of this disclosure.
[0125] Before providing a further detailed description of the embodiments of this disclosure, the terms and concepts used in these embodiments are explained, and they are subject to the following interpretations:
[0126] A message is a data unit exchanged and transmitted in a network; it is a block of data that a node sends at one time. Messages are also the unit of network transmission. During transmission, they are continuously encapsulated into packets, frames, and groups. Encapsulation involves adding information segments, which are the data organized in a specific format as the message header. A message contains complete data information to be sent, and its length varies considerably, being unlimited and variable.
[0127] Virtual Private Cloud (VPC): A Virtual Private Cloud is a cloud computing service model that allows users to create an isolated, virtualized network environment within a public cloud infrastructure. This network environment is similar to a private network in a traditional data center. Users can customize network topology, IP address ranges, subnet configurations, routing tables, and other network settings, and achieve network isolation and traffic control through security groups and network access control lists (ACLs).
[0128] Throughput-sensitive applications: Throughput refers to the amount of data or tasks a system can process per unit of time, and is typically used to measure system performance and efficiency. Throughput-sensitive applications are applications that have high throughput requirements. They usually need to process large amounts of data or tasks in a short period of time, such as large-scale data processing, high-performance computing, and parallel computing. Therefore, throughput-sensitive applications place high demands on the system's processing power.
[0129] Latency-sensitive applications are those with strict requirements for response time, typically needing to complete processing within milliseconds or even microseconds. The core of latency-sensitive applications lies in the need for low latency. For example, autonomous vehicles need to identify road conditions and react within milliseconds to ensure safety; financial trading platforms also require transaction requests to be completed in extremely short times to avoid transaction failures. Furthermore, latency-sensitive applications typically include real-time data processing, high-performance computing, financial trading systems, and online games.
[0130] Virtual Private Cloud (VPC) is a cloud computing service that allows users to create a logically isolated virtual network environment on a public cloud infrastructure. In a VPC network, data streams emitted by applications running in virtual machines (referred to as cloud applications) can generally be categorized as throughput-sensitive or latency-sensitive. Throughput-sensitive data streams typically contain larger packets, requiring high network throughput, while latency-sensitive data streams typically contain smaller packets, requiring low communication latency. In data centers, the number of packets in throughput-sensitive data streams is far less than that in latency-sensitive data streams; however, throughput-sensitive data stream traffic accounts for the majority of data center network traffic.
[0131] With the widespread deployment of cloud applications requiring high throughput, high-throughput VPC networks have become a key factor in enhancing the competitiveness of cloud products. In data centers, multiple paths exist between two servers for transmitting packets. Common technologies utilize different transmission paths to transmit different packets within the data stream, thereby increasing network throughput. However, due to varying transmission delays along each path, this multipath transmission method can lead to out-of-order packets. This not only causes packet retransmissions but can also drastically reduce the sending speed at the sending end. Given the large number of packets in latency-sensitive data streams, this significantly increases communication latency and reduces communication efficiency.
[0132] Based on this, embodiments of this disclosure provide a message transmission method, apparatus, electronic device, and medium. The message transmission method provided in these embodiments is based on the characteristic that messages in data streams from throughput-sensitive cloud applications are typically very long, while messages in data streams from latency-sensitive cloud applications are typically short. It distinguishes between throughput-sensitive and latency-sensitive data streams by determining the stream type. Then, for messages in throughput-sensitive data streams, the candidate transmission path with the least congestion during the message routing time can be selected as the first transmission path, and the message is transmitted to the destination node through the first transmission path. This process allows multiple different candidate transmission paths to be used to transmit multiple messages in throughput-sensitive data streams, improving network throughput. For multiple messages in latency-sensitive data streams, a second transmission path can be determined based on the first addressing information of the messages, and the multiple messages are transmitted according to their order in the data stream. Because the first addressing information of multiple packets in the same data stream is the same, this processing ensures that all packets in the same data stream use the same second transmission path, instead of being transmitted through multiple candidate transmission paths. This effectively guarantees that packets in delay-sensitive data streams arrive in order, greatly reducing the probability of packet retransmission and communication latency. Unlike transmitting all packets in a data stream through multiple paths, this embodiment of the present disclosure distinguishes the flow type of the data stream at the source node side and determines different packet transmission methods for packets in data streams of different flow types. This improves network throughput while ensuring that packets in delay-sensitive data streams arrive in order, reducing communication latency.
[0133] System architecture and scenario description of the embodiments disclosed herein
[0134] Figure 1 This is a system architecture diagram of the message transmission method applied according to the embodiments of this disclosure. Figure 1 This includes terminal 140, Internet 130, gateway 120, server 110, etc.
[0135] Terminal 140 can take various forms, including desktop computers, laptops, PDAs (personal digital assistants), mobile phones, in-vehicle terminals, home theater terminals, and dedicated terminals. Furthermore, it can be a single device or a collection of multiple devices. Terminal 140 can communicate with the Internet 130 via wired or wireless means to exchange data.
[0136] Server 110 refers to a computer system capable of providing certain services to terminal 140. Compared to ordinary terminal 140, server 110 has higher requirements in terms of stability, security, and performance. Server 110 can be a single high-performance computer in a network platform, a cluster of multiple high-performance computers, a portion of a single high-performance computer (e.g., a virtual machine), or a combination of portions of multiple high-performance computers (e.g., virtual machines). In a distributed system, multiple servers 110 are interconnected as computing and storage units to transmit data and coordinate task processing using shared communication lines. It is understood that the source node and destination node of the message transmission method in this embodiment of the disclosure are both server 110.
[0137] Gateway 120, also known as an internetwork connector or protocol converter, is a computer system or device that acts as a translator, enabling network interconnection at the transport layer. It bridges the gap between two systems using different communication protocols, data formats, languages, or even completely different architectures. Gateways can also provide filtering and security functions. Messages sent from terminal 140 to server 110 are forwarded to the corresponding server 110 via gateway 120. Messages sent from server 110 to terminal 140 are also forwarded to the corresponding terminal 140 via gateway 120.
[0138] This disclosure can be applied to cloud application data transmission, where a cloud application refers to an application running in a virtual machine. (See also...) Figure 2 , Figure 2 This is a schematic diagram of the topology of a data center network to which the message transmission method according to an embodiment of the present disclosure is applied. Figure 2 In this context, H0-H15 can represent multiple servers within a data center. These servers can connect to multiple external virtual machines (VMs) to receive cloud application data streams sent by the VMs and transmit them to other servers in the data center network. These other servers then transmit the cloud application data streams to other VMs. The cloud application data stream refers to the data stream emitted by applications running within VMs, and this stream includes multiple messages.
[0139] Figure 2The data center uses three layers of switches: access layer, aggregation layer, and core layer. The access layer switches include LA16-LA31, the aggregation layer switches include LA0-LA15, and the core layer switches include LC0-LC7. Servers connect to the access layer switches. It's worth noting that in mainstream data center networks, to increase communication bandwidth and connection reliability between servers, servers typically use two links connected to two switches in the access layer (i.e., each of the server's two network ports is connected to one of two switches). For example, switch H0 uses two links connected to access layer switches LA16 and LA17.
[0140] Furthermore, this section combines the process of the server sending cloud application data streams to... Figure 2 The network architecture of the data center will be explained: Figure 2 In this architecture, each server connects to multiple virtual machines to receive cloud application data streams from these machines. If a source server needs to send a cloud application data stream to a destination server, it first sends packets from the cloud application data stream to the access layer switch. The access layer switch then forwards these packets to the aggregation layer switch, which in turn forwards them to the core layer switch. Upon receiving the packets from the aggregation layer switch, the core layer switch forwards them to the aggregation layer switch, which then forwards them to the access layer switch. Finally, the access layer switch forwards the received packets from the cloud application data stream to the destination server.
[0141] It is understandable that multiple transmission paths consisting of switches exist between the source node server and the destination node server. For example, if the source node server H1 receives a cloud application data stream from virtual machine 1 and needs to send multiple packets from the cloud application data stream to the destination node server H9, multiple transmission paths exist. Here, we explain the process of server H1 sending packets from the cloud application data stream to server H9 via one of these transmission paths: Server H1 first sends the packets from the cloud application data stream to the access layer switch LA16. Switch LA16 forwards the packets to the aggregation layer switch LA1, which then forwards them to the core layer switch LC2. Then, switch LC2 forwards the packets to the aggregation layer switch LA9, which then forwards them to the access layer switch LA24. Finally, switch LA24 forwards the packets to server H9, enabling server H9 to transmit the packets from the cloud application data stream to the corresponding virtual machine.
[0142] It should be understood that the above description only illustrates some application scenarios of this disclosure. The business scenarios to which this disclosure can be applied may include, but are not limited to, the specific embodiments described above.
[0143] General Description of Embodiments in this Disclosure
[0144] In related technologies, data streams emitted by applications running in virtual machines (referred to as cloud applications) within a VPC network can generally be categorized into throughput-sensitive and latency-sensitive streams. Throughput-sensitive data streams typically contain larger packets, requiring high network throughput, while latency-sensitive data streams generally contain smaller packets, requiring low communication latency. In data centers, the number of packets in throughput-sensitive data streams is far less than that in latency-sensitive data streams; however, throughput-sensitive data stream traffic accounts for the majority of data center network traffic. With the widespread deployment of cloud applications with high throughput requirements, high-throughput VPC networks have become a key factor in improving the competitiveness of cloud products. In data centers, multiple packet transmission paths exist between two servers. Related technologies generally use different transmission paths to transmit different packets within the data stream to improve network throughput. However, because each transmission path has different transmission latency, this multi-path transmission method can lead to out-of-order packets. Out-of-order packets not only cause retransmissions but can also drastically reduce the sending speed of the sending end. Because delay-sensitive data streams contain a large number of messages, this significantly increases communication latency and reduces communication efficiency.
[0145] Some embodiments of this disclosure provide message transmission methods, apparatus, electronic devices, and media. The server at the source node can distinguish between throughput-sensitive data streams and latency-sensitive data streams, employing different transmission methods to transmit messages in the throughput-sensitive data stream and messages in the latency-sensitive data stream. This improves network throughput while ensuring that messages in the latency-sensitive data stream arrive in order, reducing communication latency for latency-sensitive messages.
[0146] According to one embodiment of this disclosure, a message transmission method is provided. This method can be applied to application scenarios such as cloud application data transmission.
[0147] like Figure 3 As shown, a message transmission method according to an embodiment of this disclosure is applied to a source node. The message transmission method includes:
[0148] Step 310: Obtain the data stream, wherein the data stream includes multiple messages, and the first addressing information of the multiple messages is the same, and there are multiple candidate transmission paths between the source node and the destination node;
[0149] Step 320: Determine the stream type of the data stream;
[0150] Step 330: If the flow type is throughput sensitive, for each packet in the data flow, at the routing time of the packet, based on the congestion level of multiple candidate transmission paths at the routing time, determine the first transmission path corresponding to the packet, and transmit the packet to the destination node through the first transmission path.
[0151] Step 340: If the stream type is delay-sensitive, transmit each message in the data stream along the second transmission path corresponding to the first addressing information, according to the order of the messages in the data stream.
[0152] The following is a brief description of steps 310-340 above.
[0153] In step 310, a data stream is obtained, wherein the data stream includes multiple messages, and the first addressing information of the multiple messages is the same, and there are multiple candidate transmission paths between the source node and the destination node.
[0154] According to embodiments of this disclosure, the source node can be a server sending a data stream, and the destination node can be a server receiving a data stream. For a single data stream, the source node and the destination node are two different servers. Here, the data stream refers to data sent by an application running in a virtual machine to the server acting as the source node. Furthermore, a server can connect to multiple virtual machines and receive data streams sent by these multiple virtual machines. For example, refer to... Figure 4The source node (i.e., the server acting as the sender) is connected to virtual machines 1, 2, 3, 4, and 5. The source node can receive data stream 1 from the application running in virtual machine 1, data stream 2 from the application running in virtual machine 2, data stream 3 from the application running in virtual machine 3, data stream 4 from the application running in virtual machine 4, and data stream 5 from the application running in virtual machine 5. Afterward, the source node sends data streams 1, 2, 3, 4, and 5 to the destination node (i.e., the server acting as the receiver), so that the destination node forwards these data streams to the corresponding virtual machines.
[0155] It is understandable that, such as Figure 5 As shown, a single data stream comprises multiple packets, and these packets all share the same first addressing information. This first addressing information indicates the destination node and transmission path corresponding to the packet. Based on this first addressing information, the source node can determine the destination node corresponding to the packet, and the switching node between the source and destination nodes can determine how to forward the packet. Identical first addressing information means that the destination node and transmission path of the packets are consistent. More specifically, the first addressing information is a field within the packet, which can be represented as a five-tuple of information. This five-tuple includes the source IP (the IP address of the source node), the destination IP (the IP address of the destination node), the protocol number (used to ensure the packet can be correctly sent and received), the UDP source port number (UDP (User Datagram Protocol) is a connectionless transport layer protocol with a relatively simple packet structure. In a UDP packet, the source port number is an important field used to identify the port where the application sending the packet resides), and the destination port number (the destination port number can be used to identify the port where the application receiving the packet resides). For multiple packets in a single data stream, the source IP, destination IP, protocol number, UDP source port number, and destination port number of the packets are consistent.
[0156] It is understandable that there are multiple candidate transmission paths between the source node and the destination node. A candidate transmission path refers to a physical transmission path that can transmit a message to the destination node. For example, refer to... Figure 2 If the source node is server H0 and the destination node is server H8, based on Figure 2It can be determined that there are multiple candidate transmission paths between server H0 and server H8. The candidate transmission path could be: server H0 - switch node LA16 - switch node LA0 - switch node LC0 - switch node LA8 - switch node LA24 - server H8; or it could be: server H0 - switch node LA17 - switch node LA0 - switch node LC1 - switch node LA8 - switch node LA25 - server H8. Here, "switch node" refers to a switch.
[0157] In step 320, the stream type of the data stream is determined.
[0158] According to embodiments of this disclosure, stream type refers to the type of data stream, and the stream type affects the transmission method of messages in the data stream. Stream types can generally be divided into throughput-sensitive and latency-sensitive types. Data streams with a throughput-sensitive stream type typically have larger messages, requiring higher throughput from the data center network. If the throughput of the data center network is close to the bandwidth-latency product, the data center network can be considered to have high throughput. Data streams with a latency-sensitive stream type typically have smaller messages, requiring lower communication latency from the data center network. Generally, 0-50 milliseconds is very low communication latency, 50-100 milliseconds is low communication latency, 100-150 milliseconds is medium latency, and above 150 milliseconds is high latency. The stream type of a data stream can usually be determined comprehensively based on the messages in the data stream. Because a data stream typically contains multiple messages of varying lengths, the stream type is not fixed but dynamically changes with the messages in the data stream. If most packets in the current data stream are large, the flow type can be determined as throughput-sensitive. If most packets in the current data stream are small, the flow type can be determined as latency-sensitive.
[0159] Understandably, the flow type of a data stream can be determined by comparing the length of the message that the source node needs to send to the destination node in the current data stream with a first threshold. If the length of the message is greater than the first threshold, or if the length of other messages preceding the message in the data stream is greater than the first threshold, the flow type can be determined as throughput-sensitive. If the length of the message is less than or equal to the first threshold, and the length of other messages preceding the message in the data stream is less than or equal to the first threshold, the flow type can be determined as latency-sensitive.
[0160] For example, with a first threshold of 100KB, if the length of a packet that the source node needs to send to the destination node in the current data stream is greater than 100KB, or the length of a packet preceding that packet is greater than 100KB, the flow type can be determined as throughput-sensitive. If the length of a packet that the source node needs to send to the destination node in the current data stream is less than or equal to 100KB, and the length of a packet preceding that packet is also less than or equal to 100KB, the flow type can be determined as latency-sensitive.
[0161] For example, with a first threshold of 40KB, if the length of a packet that the source node needs to send to the destination node in the current data stream is greater than 40KB, or the length of a packet preceding that packet is greater than 40KB, the flow type can be determined as throughput-sensitive. If the length of a packet that the source node needs to send to the destination node in the current data stream is less than or equal to 40KB, and the length of a packet preceding that packet is also less than or equal to 40KB, the flow type can be determined as latency-sensitive.
[0162] In step 330, if the flow type is throughput sensitive, for each packet in the data flow, at the routing time of the packet, based on the congestion level of multiple candidate transmission paths at the routing time, the first transmission path corresponding to the packet is determined, and the packet is transmitted to the destination node through the first transmission path.
[0163] Understandably, if the flow type is throughput-sensitive, it means that most packets in the current data flow are large in size, requiring high network throughput. Therefore, for multiple packets in a data flow, during packet routing time, the candidate transmission path with the least congestion can be selected to transmit packets in the throughput-sensitive data flow. This candidate transmission path for transmitting packets in the throughput-sensitive data flow is the first transmission path corresponding to the packet. The congestion level of the candidate transmission path can be used to indicate the packet backlog height at the switching nodes along that path. A higher congestion level indicates a higher packet backlog height at the switching nodes along that path, leading to greater transmission delays if packets are transmitted using that path. Conversely, a lower congestion level indicates a lower packet backlog height at the switching nodes along that path, resulting in shorter transmission times if packets are transmitted using that path. The congestion level of candidate transmission paths is not constant but varies with the number of packets in the data center network. If a source node continuously selects the same candidate transmission path to transmit packets, the congestion level of that candidate transmission path will increase, while the congestion level of other candidate transmission paths will decrease. Therefore, to ensure the accuracy of routing, this embodiment of the present disclosure needs to determine the first transmission path for a packet based on the congestion level of multiple candidate transmission paths during the packet's routing time, to ensure that the selected candidate transmission path has the lowest congestion level at present. Here, routing time refers to the time period for determining the first transmission path for packets in a throughput-sensitive data stream.
[0164] For example, refer to Figure 6 There are candidate transmission paths 1, 2, 3, 4, and 5 between the source and destination nodes. When the virtual machine sends data stream 1 to the source node, and the flow type of data stream 1 is throughput-sensitive, if, for a specific packet within data stream 1, at the routing time for that packet, the congestion level of candidate transmission path 1 is level 1, candidate transmission path 2 is level 4, candidate transmission path 3 is level 2, candidate transmission path 4 is level 5, and candidate transmission path 5 is level 3, then candidate transmission path 1 can be determined as the first transmission path for that packet, and the packet will be transmitted to the destination node via the first transmission path.
[0165] Furthermore, in this embodiment of the disclosure, the candidate transmission path with the least congestion during the routing time of the packet can be used as the first transmission path of the packet, and the packet is transmitted to the destination node through the first transmission path. Because the congestion level of the candidate transmission path can vary, multiple different candidate transmission paths can be used to transmit multiple packets in a throughput-sensitive data stream, which not only improves network throughput but also reduces the probability of congestion on the candidate transmission path.
[0166] In step 340, if the stream type is delay-sensitive, each message in the data stream is transmitted along the second transmission path corresponding to the first addressing information, according to the order of the messages in the data stream.
[0167] Understandably, if the flow type is latency-sensitive, it means that most of the packets in the current data flow are small in size, and these packets require low communication latency. Moreover, because latency-sensitive data flows have a large number of packets, it is also necessary to ensure that the packets arrive at the destination node in order while maintaining low communication latency. Based on this, after determining that the flow type is latency-sensitive, this embodiment of the disclosure determines the candidate transmission path indicated by the first addressing information, i.e., the second transmission path, based on the first addressing information carried by the packet, and transmits the packets using the second transmission path according to the order of the packets in the data flow. The order of the packets in the data flow can be determined based on the time when the application running in the virtual machine sends the packet to the source node. If the application sends packet A to source node 1 before the application sends packet B to source node 1, then packet A is ordered before packet B in the data flow. Similarly, if the application sends packet A to source node 1 after the application sends packet B to source node 1, then packet A is ordered after packet B in the data flow.
[0168] Because the first addressing information of multiple packets in the same data stream is the same, the above processing can ensure that all packets in the same data stream use the same second transmission path instead of being transmitted through multiple candidate transmission paths. This effectively ensures that packets in delay-sensitive data streams arrive in order, greatly reduces the probability of packet retransmission, and reduces communication latency.
[0169] For example, refer to Figure 7There are candidate transmission paths 1, 2, 3, 4, and 5 between the source and destination nodes. When the virtual machine sends data stream 2 containing packets 1, 2, 3, and 4 to the source node, and data stream 2 is of latency-sensitive type, for each packet in data stream 2, the second transmission path corresponding to that packet can be determined as candidate transmission path 2 based on the packet's first addressing information. Then, after determining the second transmission path, candidate transmission path 2 can be used to transmit packets 1, 2, 3, and 4 in data stream 2 in sequence. Through this process, packets 1, 2, 3, and 4 in data stream 2 can arrive at the destination node in order.
[0170] The embodiments of steps 310 to 340 above are based on the characteristic that packets in data streams from throughput-sensitive cloud applications are typically long, while packets in data streams from latency-sensitive cloud applications are typically short. By determining the flow type of the data stream, throughput-sensitive and latency-sensitive data streams are distinguished. Then, for packets in throughput-sensitive data streams, the candidate transmission path with the least congestion during the packet routing time can be selected as the first transmission path for the packet, and the packet is transmitted to the destination node through the first transmission path. In this way, multiple different candidate transmission paths can be used to transmit multiple packets in throughput-sensitive data streams, improving network throughput. For multiple packets in latency-sensitive data streams, a second transmission path can be determined based on the first addressing information of the packets, and the multiple packets are transmitted according to their order in the data stream. Because the first addressing information of multiple packets in the same data stream is the same, this processing ensures that all packets in the same data stream use the same second transmission path, instead of being transmitted through multiple candidate transmission paths. This effectively guarantees that packets in delay-sensitive data streams arrive in order, greatly reducing the probability of packet retransmission and communication latency. Unlike transmitting all packets in a data stream through multiple paths, this embodiment of the present disclosure distinguishes the flow type of the data stream at the source node side and determines different packet transmission methods for packets in data streams of different flow types. This improves network throughput while ensuring that packets in delay-sensitive data streams arrive in order, reducing communication latency.
[0171] The above is a general description of steps 310 to 340. Since step 310 has been described in sufficient detail above, the specific implementation process of steps 320 to 340 will be described in detail below.
[0172] Detailed description of step 320
[0173] In step 320, the stream type of the data stream is determined.
[0174] In one embodiment, reference is made to Figure 8 Step 320 includes:
[0175] Step 810: Sequentially select the packets in the data stream as the target packets;
[0176] Step 820: If the length of the target packet is greater than the first threshold, or the length of other packets preceding the target packet in the data stream is greater than the first threshold, the stream type is determined to be throughput sensitive.
[0177] Step 830: If the length of the target message is not greater than the first threshold, and the length of other messages preceding the target message in the data stream is not greater than the first threshold, the stream type is determined to be latency-sensitive.
[0178] Steps 810, 820, and 830 are described in detail below:
[0179] In step 810, the messages in the data stream are sequentially used as target messages.
[0180] According to embodiments of this disclosure, a target message refers to a message that the current source node needs to send to the destination node. For example, if data stream 1 includes message 1, message 2, message 3, and message 4, then after receiving data stream 1, the source node can sequentially send message 1, message 2, message 3, and message 4 as target messages.
[0181] Understandably, a data stream typically contains multiple packets, and the stream type is not fixed but dynamically changes based on the packet sizes within the stream. In this case, packets in the data stream can be sequentially used as target packets. The stream type of the current data stream is determined based on the target packet and other packets preceding it, and the transmission path corresponding to the target packet is then determined based on the current stream type. This process not only improves the real-time performance of the data stream's stream type but also enhances the accuracy of determining the transmission path for the target packet.
[0182] In step 820, if the length of the target message is greater than the first threshold, or the length of other messages preceding the target message in the data stream is greater than the first threshold, the stream type is determined to be throughput sensitive.
[0183] Understandably, since packets in throughput-sensitive data streams are generally longer than packets in latency-sensitive data streams, the first threshold can be defined as the critical value between the packet lengths of throughput-sensitive and latency-sensitive data streams. If this critical value is exceeded, the data stream type can be determined as throughput-sensitive.
[0184] According to embodiments of this disclosure, in some cases, even in a throughput-sensitive data stream, there may be a small number of packets with a length not exceeding a first threshold. Therefore, it is necessary to comprehensively determine the flow type of the data stream by considering all packets in the data stream that precede the target packet. So, if the target packet's length is not greater than the first threshold, but the lengths of other packets in the data stream preceding the target packet are greater than the first threshold, the flow type can still be determined as throughput-sensitive. Figure 9 As shown.
[0185] For example, refer to Figure 10A If data stream 1 contains message 1, message 2, message 3, and message 4, and the first threshold is 40KB, then after receiving data stream 1, the source node will first use message 1 as the target message because its length is greater than 40KB. Therefore, the flow type of data stream 1 can be determined as throughput-sensitive. Then, after sending message 1, it will use message 2 as the target message because its length is also greater than 40KB. Similarly, after sending message 2, it will use message 3 as the target message because its length is also greater than 40KB. Therefore, the flow type of data stream 1 can be determined as throughput-sensitive. After sending message 3, message 4 is used as the target message. Although the message length of message 4 is less than 40KB, the message lengths of messages 1, 2 and 3 before message 4 are all greater than 40KB. Therefore, the flow type of data flow 1 can be determined as throughput sensitive.
[0186] In step 830, if the length of the target message is not greater than the first threshold, and the lengths of other messages preceding the target message in the data stream are not greater than the first threshold, the stream type is determined to be latency-sensitive.
[0187] Understandably, as mentioned above, in some cases, even in throughput-sensitive data streams, there may be a small number of packets with a length not exceeding the first threshold. Based on this, referring to... Figure 9 This method allows for the determination of a data stream's flow type as latency-sensitive when the length of the target message is no greater than a first threshold, and the lengths of other messages preceding the target message in the data stream are also no greater than the first threshold. This approach effectively, quickly, and accurately determines the flow type of a data stream.
[0188] For example, refer to Figure 10B If data stream 2 contains packets 5, 6, 7, and 8, and the first threshold is 40KB, then after receiving data stream 2, the source node will first target packet 5. Since packet 5's length is no greater than 40KB and there are no other packets preceding it, the flow type of data stream 2 can be determined as latency-sensitive. Then, after sending packet 5, it will target packet 6. Again, since packet 6's length is no greater than 40KB and the length of packet 5 preceding it is no greater than the first threshold, the flow type of data stream 2 can be determined as latency-sensitive. Similarly, after sending packet 6, it will target packet 7. Since packet 7's length is greater than 40KB, the flow type of data stream 1 can be converted to throughput-sensitive. After sending message 7, message 8 is used as the target message. Although the message length of message 8 is less than 40KB, the message length of message 7 before message 8 is greater than 40KB. Therefore, the flow type of data flow 2 can be determined as throughput sensitive.
[0189] The embodiments of steps 810 to 830 described above can sequentially use the packets in the data stream as target packets to determine the current data stream type based on the target packets and other packets preceding the target packets in the data stream, thereby improving the real-time performance of the data stream type. Furthermore, embodiments of this disclosure can also define the first threshold as a critical value between the packet length of a throughput-sensitive data stream and the packet length of a latency-sensitive data stream, and quickly and accurately determine the data stream type based on this critical value.
[0190] In one embodiment, reference is made to Figure 11 After step 820, the message transmission method further includes:
[0191] Step 1110: If the length of a predetermined number of consecutive packets following the target packet in the data stream is not greater than the first threshold, convert the stream type to latency-sensitive.
[0192] Understandably, to avoid a situation where only a very small number of packets in a data stream have a length greater than the first threshold, but the data stream's flow type is determined to be throughput-sensitive, this embodiment of the disclosure also employs a mechanism to convert a throughput-sensitive data stream into a latency-sensitive data stream. Specifically, if the length of a predetermined number of consecutive packets following the target packet in a data stream is not greater than the first threshold, then the flow type of the data stream is converted to latency-sensitive. Here, the predetermined number refers to the maximum number of packets in a data stream whose length is not greater than the first threshold, allowed by this embodiment of the disclosure. Through this processing, the flow type of the data stream can be accurately determined, avoiding the situation where a large number of packets with a length not greater than the first threshold exist in a throughput-sensitive data stream.
[0193] For example, refer to Figure 12 If data stream 1 contains message 1, message 2, message 3, and message 4, with a first threshold of 40KB and a predetermined number of messages of 3, then after receiving data stream 1, the source node will first use message 1 as the target message because its length is greater than 40KB. Therefore, the flow type of data stream 1 can be determined as throughput-sensitive. Then, after sending message 1, message 2 will be used as the target message. Although message 2's length is not greater than 40KB, the length of message 1 preceding message 2 is greater than 40KB, so the flow type of data stream 1 can still be determined as throughput-sensitive. Similarly, after sending message 2, message 3 will be used as the target message. Although message 3's length is not greater than 40KB, the length of message 1 preceding message 3 is greater than 40KB, so the flow type of data stream 1 can still be determined as throughput-sensitive. After sending message 3, message 4 is used as the target message. The message length of message 4 is still less than 40KB, and the message length of the three consecutive messages is not greater than the first threshold. Therefore, the flow type of data stream 1 is determined to be latency sensitive.
[0194] The embodiment of step 1110 above can convert the flow type of the data flow to latency-sensitive if the length of a predetermined number of consecutive messages after the target message in the data flow is not greater than the first threshold. This avoids the situation where there are a large number of messages with a length not greater than the first threshold in the throughput-sensitive data flow, and improves the accuracy of determining the flow type of the data flow.
[0195] Detailed description of step 330
[0196] Step 330: If the flow type is throughput sensitive, for each packet in the data flow, at the routing time of the packet, based on the congestion level of multiple candidate transmission paths at the routing time, determine the first transmission path corresponding to the packet, and transmit the packet to the destination node through the first transmission path.
[0197] In one embodiment, reference is made to Figure 13 Step 330 includes:
[0198] Step 1310: Based on the first addressing information of each message, add each message to the aggregated data stream;
[0199] Step 1320: For each message in the aggregated data stream, at the routing time of the message, determine the first transmission path corresponding to the message based on the congestion level of multiple candidate transmission paths at the routing time.
[0200] Steps 1310 to 1320 are described in detail below:
[0201] In step 1310, each message is added to the aggregated data stream based on the first addressing information of each message.
[0202] It's understandable that an aggregated data stream refers to a larger-granularity data stream obtained by aggregating multiple data streams. When the data stream type is throughput-sensitive, packets can be added to the aggregated data stream based on their first addressing information. All packets in a single aggregated data stream have the same source and destination nodes. Furthermore, because the first addressing information is identical for all packets in a single data stream, for a throughput-sensitive data stream, multiple packets from that stream will be added to the same aggregated data stream.
[0203] It should be noted that packets from a data stream will only be added to the aggregated data stream if the data stream's flow type is throughput-sensitive. If the data stream's flow type is converted to latency-sensitive, then packets from the data stream will not be added to the aggregated data stream; instead, packets will be transmitted directly based on the second transmission path corresponding to the first addressing information of the packets, according to the order of the packets in the data stream.
[0204] For example, refer to Figure 14If message 1 can be added to aggregated data stream 1 based on its first addressing information, then message 2 can also be added to aggregated data stream 1 based on its first addressing information. Since the first addressing information of message 3 in data stream 2 is different from that of message 1, message 3 cannot be added to aggregated data stream 1, but it can be added to aggregated data stream 2 based on its first addressing information. Since the first addressing information of message 4 in data stream 2 is the same as that of message 3, message 4 can also be added to aggregated data stream 2. Since the first addressing information of message 5 in data stream 3 is different from both the first addressing information of message 1 and message 3, message 5 cannot be added to either aggregated data stream 1 or aggregated data stream 2, but it can be added to aggregated data stream 3 based on its first addressing information.
[0205] The specific method for adding each message to the aggregated data stream based on the first addressing information of each message will be described in detail later.
[0206] In step 1320, for each message in the aggregated data stream, at the routing time of the message, the first transmission path corresponding to the message is determined based on the congestion level of multiple candidate transmission paths at the routing time.
[0207] Understandably, since an aggregated data stream often contains packets from multiple data streams, and these multiple data streams are sent to the source node by the virtual machine at different times, the source node selects a route for each packet in the aggregated data stream at different times. Furthermore, the congestion level of each candidate transmission path changes constantly. To adapt to this change, embodiments of this disclosure can frequently probe candidate transmission paths to obtain their real-time congestion levels. Moreover, during packet routing, the first transmission path corresponding to the packet is determined based on the congestion levels of multiple candidate transmission paths at that time. This process ensures that the first transmission path selected for the packet is always the candidate transmission path with the lowest current congestion level, thereby improving network throughput.
[0208] For example, refer to Figure 15The aggregated data stream 1 contains messages 1, 2, 3, and 4. For message 1, during the routing time of message 1, the first transmission path for message 1 can be determined as candidate transmission path 1 based on the congestion levels of multiple candidate transmission paths at that time. For message 2, during the routing time of message 2, the congestion levels of multiple candidate transmission paths have not yet changed, so candidate transmission path 1 can still be determined as the first transmission path for message 2. For message 3, during the routing time of message 3, the congestion levels of multiple candidate transmission paths have changed, so the first transmission path for message 3 can be determined as candidate transmission path 3 based on the congestion levels of multiple candidate transmission paths at that time. Similarly, for message 4, during the routing time of message 4, the first transmission path for message 4 can be determined as candidate transmission path 5 based on the congestion levels of multiple candidate transmission paths at that time.
[0209] The specific method for "determining the first transmission path corresponding to a packet based on the congestion level of multiple candidate transmission paths during the routing time of each packet in the aggregated data stream" will be described in detail later.
[0210] The embodiments of steps 1310 and 1320 described above can add packets from the data stream to the aggregated data stream when the data stream type is determined to be throughput-sensitive. Furthermore, for packets in the aggregated data stream, the first transmission path corresponding to the packet can be determined based on the congestion levels of multiple candidate transmission paths at the routing time. This process ensures that the first transmission path selected for the packet is always the candidate transmission path with the lowest current congestion level, thereby improving network throughput.
[0211] In one embodiment, reference is made to Figure 16 Step 1310 includes:
[0212] Step 1610: Perform a digest operation on the first addressing information of the message to obtain the addressing information digest;
[0213] Step 1620: Calculate the first remainder after modifying the target parameters of the addressing information digest;
[0214] Step 1630: Add all messages with the same first remainder to the same aggregated data stream.
[0215] Steps 1610 to 1630 are described in detail below:
[0216] In step 1610, a digest operation is performed on the first addressing information of the message to obtain the addressing information digest.
[0217] As can be understood, hash function digests are a process of converting an input of arbitrary length into a fixed-length output using a hash function. Furthermore, hash function digests will produce the same output result when applied to the same input data. Hash function digests can be used to process the input data.
[0218] Furthermore, as explained above, the first addressing information of a message includes the source IP, destination IP, protocol number, UDP source port number, and destination port number. The output data after performing digest calculation on these data is the addressing information digest.
[0219] In step 1620, the first remainder after the target parameter of the addressing information digest is calculated.
[0220] According to embodiments of this disclosure, the target parameter is a value defined by the source node, and the target parameter can be determined based on the number of data streams and packets actually transmitted in the data center network. If the number of data streams and packets in the data center network is large, the target parameter can be set to a larger parameter. Correspondingly, if the number of data streams and packets in the data center network is small, the target parameter can be set to a smaller parameter. Modulo operation can be used to calculate the remainder after dividing two numbers. Based on this, it can be determined that "calculating the addressing information digest modulo the target parameter" means calculating the remainder after dividing the addressing information digest by the target parameter, and the remainder after dividing the addressing information digest by the target parameter is also the first remainder.
[0221] For example, if the addressing message digest is 100 and the target parameter is 6, then the first remainder after calculating the addressing message digest modulo the target parameter is 4.
[0222] In step 1630, messages with the same first remainder are added to the same aggregated data stream.
[0223] According to embodiments of this disclosure, the first remainder can be understood as an index, which can be used to determine the aggregated data stream corresponding to the packet. Specifically, for packets in a single data stream, the first addressing information of multiple packets in that data stream is the same. If the flow type of the data stream is throughput-sensitive, then the addressing information digests obtained after performing digest operations on the first addressing information of these packets are all the same. Correspondingly, the first remainders are also the same, so these packets will be added to the same aggregated data stream. For packets in different data streams, although the first addressing information of packets in different data streams is not the same, and the addressing information digests obtained after performing digest operations on the first addressing information of the packets are also different, the first remainders obtained by modulo the target parameter on the addressing information digests corresponding to packets with different first addressing information may be the same. Based on this, packets belonging to different data streams and having the same first remainder can also be added to the same aggregated data stream. By doing this, when the destination node receives a message from the source node that has been added to the aggregated data stream, it only needs to sort the multiple messages that have already been received in the aggregated data stream based on the dimension of the aggregated data stream, instead of sorting all the received messages. This decouples the destination node from the massive amount of data stream and greatly reduces the consumption of storage and computing resources by reordering.
[0224] For example, refer to Figure 17 In data stream 1, messages 1 and 2 have the same first addressing information. After performing digest operations on their first addressing information, the first remainder after calculating the addressing information digest modulo the target parameter is also the same. Therefore, messages 1 and 2 can be added to aggregated data stream 4 based on this first remainder. Similarly, in data stream 2, messages 3 and 4 have the same first addressing information. After performing digest operations on their first addressing information, the first remainder after calculating the addressing information digest modulo the target parameter is also the same. Therefore, messages 3 and 4 can be added to aggregated data stream 3 based on this first remainder. Although the first addressing information of message 5 in data stream 3 is different from that of the messages in data stream 2, the first remainder obtained after modulo the addressing information digest of message 5 is also 3. Therefore, message 5 can also be added to aggregated data stream 3.
[0225] The specific method for "adding messages with the same first remainder to the same aggregated data stream" will be described in detail later.
[0226] The embodiments of steps 1610 to 1630 described above obtain an addressing information digest by performing a digest operation on the first addressing information of the message, and calculate the first remainder after modulo the target parameter of the addressing information digest. Messages with the same first remainder are then added to the same aggregated data stream. Through this processing, when the destination node receives messages added to the aggregated data stream from the source node, it only needs to sort the multiple messages already received in the aggregated data stream based on the dimension of the aggregated data stream, without needing to sort all received messages. This achieves decoupling from the massive data stream and significantly reduces the consumption of storage and computing resources by reordering.
[0227] In one embodiment, reference is made to Figure 18 Step 1630 includes:
[0228] Step 1810: Determine the first remainder as the aggregated data stream identifier of the aggregated data stream;
[0229] Step 1820: Assign a sequence number to each message added to the aggregated data stream. The sequence number indicates the order of the message in the aggregated data stream.
[0230] Step 1830: Fill the aggregate data stream identifier of the aggregate data stream to which the message is added into the aggregate data stream identifier field of the message, and fill the message sequence number into the message sequence number field of the message.
[0231] Steps 1810 to 1830 are described in detail below:
[0232] In step 1810, the first remainder is determined as the aggregated data stream identifier of the aggregated data stream.
[0233] It is understandable that the aggregated data flow identifier refers to the unique identity of an aggregated data flow within a data center network. Based on the aggregated data flow identifier, the source and destination nodes can quickly determine the corresponding aggregated data flow. When multiple aggregated data flows exist, by determining the first remainder as the aggregated data flow identifier, the aggregated data flow to which the packet should be joined can be quickly determined based on the first remainder corresponding to the packet, thus improving the efficiency of packet routing.
[0234] In step 1820, a message sequence number is assigned to each message added to the aggregated data stream. The message sequence number indicates the order of the messages in the aggregated data stream.
[0235] Understandably, since aggregated data streams are larger-granular data streams obtained by aggregating multiple data streams, they often contain numerous messages. When a destination node receives messages added to the aggregated data stream from the source node, it sorts the received messages within that aggregated data stream based on the dimension of the aggregated data stream. Therefore, to accurately distinguish the multiple messages within the aggregated data stream, a message sequence number can be assigned to each message added to it. This message sequence number is a unique identifier for the message within the aggregated data stream, indicating not only its order within the stream but also the order in which it was added. Through this process, when the destination node receives messages added to the aggregated data stream from the source node, it can sort the received messages based on their order within the stream (i.e., their sequence numbers), improving reordering efficiency and reducing the computational resource consumption of reordering.
[0236] For example, if message 1 joins aggregated data stream 1 at 12:00, message 2 joins aggregated data stream 1 at 12:03, message 3 joins aggregated data stream 1 at 12:02, and message 4 joins aggregated data stream 1 at 12:05, then message 1 can be assigned message sequence number 1, message 3 can be assigned message sequence number 2, message 2 can be assigned message sequence number 3, and message 4 can be assigned message sequence number 4.
[0237] In step 1830, the aggregate data stream identifier of the aggregate data stream to which the message is added is filled into the aggregate data stream identifier field of the message, and the message sequence number is filled into the message sequence number field of the message.
[0238] Understandably, the aggregated data stream identifier field stores the aggregated data stream identifier to which the message is added, and the message sequence number field stores the message sequence number within the aggregated data stream. Furthermore, both the aggregated data stream identifier field and the message sequence number field belong to the message header fields, such as... Figure 19 As shown, by filling the aggregate data stream identifier of the aggregate data stream to which the message is added into the aggregate data stream identifier field of the message, and filling the message sequence number into the message sequence number field of the message, the destination node can quickly determine the aggregate data stream to which the message is added and the message sequence number of the message in that aggregate data stream by extracting the aggregate data stream identifier field and the message sequence number field when it receives the message, so as to facilitate the subsequent reordering of the message.
[0239] For example, refer to Figure 19If the aggregate data stream identifier of the aggregate data stream to which message 1 is added is 4, then the message sequence number of message 1 in that aggregate data stream is 1. Based on this, 4 can be filled into the aggregate data stream identifier field of message 1, and 1 can be filled into the message sequence number field of message 1.
[0240] The embodiments of steps 1810 to 1830 described above can assign a message sequence number to each message added to the aggregated data stream, fill the aggregated data stream identifier of the aggregated data stream to which the message is added into the aggregated data stream identifier field of the message, and fill the message sequence number into the message sequence number field of the message. Through this processing, when the destination node receives a message, it can quickly determine the aggregated data stream to which the message is added and the message sequence number of the message in that aggregated data stream, thereby reordering the messages, improving the efficiency of reordering, and reducing the consumption of computing resources by reordering.
[0241] In one embodiment, reference is made to Figure 20 Step 1320 includes:
[0242] Step 2010: In each period, probe information is sent to the destination node through multiple candidate transmission paths to obtain the congestion level of multiple candidate transmission paths in the period.
[0243] Step 2020: Determine the cycle to which the route selection time belongs;
[0244] Step 2030: For each message in the aggregated data stream, at the routing time of the message, determine the first transmission path corresponding to the message based on the congestion level of multiple candidate transmission paths in the previous period of the period to which the routing time belongs.
[0245] Steps 2010 to 2030 are described in detail below:
[0246] In step 2010, in each period, probe information is sent to the destination node through multiple candidate transmission paths to obtain the congestion level of the multiple candidate transmission paths in the period.
[0247] According to embodiments of this disclosure, in order to detect the congestion level of each candidate transmission path in real time, so as to determine the first transmission path corresponding to each packet in the aggregated data stream, the source node sends probe information to the destination node in each period. The period can be determined based on the actual packet transmission situation. If there are a large number of packets waiting to be transmitted in the current data center network, or if the packets to be transmitted have high real-time requirements, the period can be set to a smaller value. If there are only a few packets waiting to be transmitted in the current data center network, or if the packets to be transmitted have low real-time requirements, the period can be set to a larger value. The probe information can be an independent packet sent by the source node to the destination node to detect the congestion level of the candidate transmission paths, or it can be carried and sent to the destination node by other packets.
[0248] The specific method of "sending probe information to the destination node through multiple candidate transmission paths in each cycle to obtain the congestion level of multiple candidate transmission paths in the cycle" will be described in detail later.
[0249] In step 2020, the cycle to which the route selection time belongs is determined.
[0250] Understandably, to ensure that the first transmission path selected for a message is always the candidate transmission path with the least current congestion, it is necessary to obtain the real-time congestion level of the candidate transmission paths. Therefore, it is first necessary to determine the period to which the routing time belongs, so as to quickly identify the period closest to the current period and obtain the congestion level of each candidate transmission path measured in that period.
[0251] In step 2030, for each message in the aggregated data stream, at the routing time of the message, the first transmission path corresponding to the message is determined based on the congestion level of multiple candidate transmission paths in the previous period of the period to which the routing time belongs.
[0252] Understandably, because it takes time for the source node to send probe information to the destination node and determine the congestion levels of multiple candidate transmission paths in the current period, it may not be able to obtain the congestion levels of multiple candidate transmission paths in the period to which the routing time belongs when the source node determines the first transmission path for a packet. In other words, if the source node needs to wait for a period of time based on the congestion levels of multiple candidate transmission paths in the period to which the routing time belongs, this will actually reduce the efficiency of packet routing. Therefore, for each packet in the aggregated data stream, at the packet's routing time, the first transmission path corresponding to the packet can be determined based on the congestion levels of multiple candidate transmission paths in the previous period to which the routing time belongs. This approach not only ensures the real-time availability of the obtained congestion levels of candidate transmission paths but also improves the efficiency of packet routing.
[0253] For example, if aggregated data stream 1 includes message 1, message 2, and message 3, every 2 minutes, the source node sends probe information to the destination node through multiple candidate transmission paths to determine the congestion level of the multiple candidate transmission paths in that period. If the routing time of message 1 falls within the period of 10:10-10:12, the first transmission path corresponding to message 1 can be determined based on the congestion level of the multiple candidate transmission paths from 10:08-10:10. If the routing time of message 2 falls within the period of 10:12-10:14, the first transmission path corresponding to message 2 can be determined based on the congestion level of the multiple candidate transmission paths from 10:10-10:12. If the routing time of message 3 falls within the period of 11:32-11:34, the first transmission path corresponding to message 3 can be determined based on the congestion level of the multiple candidate transmission paths from 11:30-11:32.
[0254] The embodiments of steps 2010 to 2030 described above can determine the first transmission path corresponding to the message based on the congestion level of multiple candidate transmission paths in the previous period of the period to which the routing time belongs during the message routing time. Because the congestion level of multiple candidate transmission paths in the previous period of the period to which the routing time belongs is the most real-time known data, this processing not only ensures the real-time nature of the obtained congestion level of the candidate transmission paths, but also improves the efficiency of message routing.
[0255] In one embodiment, reference is made to Figure 21 Step 2010 includes:
[0256] Step 2110: In each cycle, send probe information to the destination node through multiple candidate transmission paths and receive the confirmation response returned by the destination node.
[0257] Step 2120: For each candidate transmission path, calculate the message transmission time from sending the probe information to receiving the acknowledgment response;
[0258] Step 2130: Determine the congestion level of each candidate transmission path in a given period based on the message transmission time corresponding to each candidate transmission path.
[0259] Steps 2110 to 2130 are described in detail below:
[0260] In step 2110, during each cycle, probe information is sent to the destination node through multiple candidate transmission paths, and confirmation responses are received from the destination node.
[0261] According to one embodiment of this disclosure, a single probe message can be constructed based on probe information. In each cycle, the source node sends a single probe message to the destination node through multiple candidate transmission paths, so that the destination node, upon receiving the probe message, returns a corresponding acknowledgment response to the source node.
[0262] According to another embodiment of this disclosure, probe information can also be carried by other conventional messages. That is, conventional messages are modified based on probe information to carry probe information. In each cycle, the source node sends conventional messages carrying probe information to the destination node through multiple candidate transmission paths, so that the destination node, upon receiving the message, extracts the probe information from the message and returns a corresponding acknowledgment response to the source node.
[0263] In step 2120, for each candidate transmission path, the message transmission time from sending the probe information to receiving the acknowledgment response is calculated.
[0264] Understandably, message transmission time refers to the time elapsed from when the source node sends a probe message to when the source node receives an acknowledgment from the destination node. The congestion level of each candidate transmission path varies, and the message transmission time for sending probe messages using each candidate path also differs. Specifically, the more severe the congestion of a candidate transmission path, the longer it takes for the switching nodes on that path to process and forward the probe message, and the longer the message transmission time for the probe message itself. Conversely, the less congested a candidate transmission path is, the shorter the time it takes for the switching nodes on that path to process and forward the probe message, and the shorter the message transmission time for the probe message itself.
[0265] In step 2130, the congestion level of each candidate transmission path in a period is determined based on the message transmission time corresponding to each candidate transmission path.
[0266] According to embodiments of this disclosure, after the source node receives acknowledgment responses corresponding to the probe information returned by each candidate transmission path, the congestion level of each candidate transmission path in a period can be determined based on the message transmission time corresponding to each candidate transmission path. The longer the message transmission time of a candidate transmission path, the more severe the congestion level of that candidate transmission path in a period. Conversely, the shorter the message transmission time of a candidate transmission path, the less severe the congestion level of that candidate transmission path in a period.
[0267] For example, refer to Figure 22 When there are five candidate transmission paths between the source node and the destination node, in the current cycle, the source node sends probe information to the destination node through all five candidate paths and receives acknowledgment responses from the destination node. Figure 22 It can be seen that, for candidate transmission path 1, the message transmission time from sending probe information 1 to receiving acknowledgment response 1 is 0.15 seconds. For candidate transmission path 2, the message transmission time from sending probe information 2 to receiving acknowledgment response 2 is 0.1 seconds. For candidate transmission path 3, the message transmission time from sending probe information 3 to receiving acknowledgment response 3 is 0.05 seconds. For candidate transmission path 4, the message transmission time from sending probe information 4 to receiving acknowledgment response 4 is 0.2 seconds. For candidate transmission path 5, the message transmission time from sending probe information 5 to receiving acknowledgment response 5 is 0.03 seconds. Based on this, it can be determined that the congestion level of candidate transmission path 1 in the current period is level 4, the congestion level of candidate transmission path 2 in the current period is level 3, the congestion level of candidate transmission path 3 in the current period is level 2, the congestion level of candidate transmission path 4 in the current period is level 5, and the congestion level of candidate transmission path 5 in the current period is level 1. In other words, candidate transmission path 5 has the least congestion, while candidate transmission path 4 has the most severe congestion.
[0268] In the embodiments of steps 2110 to 2130 above, for each candidate transmission path, the message transmission time from sending the probe information to receiving the acknowledgment response can be calculated, and the congestion level of each candidate transmission path in the period can be determined based on the message transmission time corresponding to each candidate transmission path. This process improves the accuracy of congestion judgment for each candidate transmission path, facilitating the subsequent determination of the candidate transmission path with the lowest congestion level for each message in the aggregated data stream.
[0269] In one embodiment, reference is made to Figure 23 Step 330 includes:
[0270] Step 2310: Determine the second addressing information corresponding to the first transmission path;
[0271] Step 2320: Encapsulate the message using the second addressing information, wherein the second addressing information takes precedence over the first addressing information, so that the switching nodes on the first transmission path can address according to the second addressing information.
[0272] Steps 2310 to 2320 are described in detail below:
[0273] In step 2310, the second addressing information corresponding to the first transmission path is determined.
[0274] It is understood that the first addressing information refers to the inherent inner 5-tuple of the packet. When the virtual machine sends a data stream to the source node, the packet in the data stream already carries the first addressing information. Normally, packets are transmitted along the second transmission path corresponding to the first addressing information. However, to increase the throughput of the data center network, the method used in this disclosure embodiment re-routes the packet based on the congestion level of multiple candidate transmission paths during routing time, and determines the first transmission path as the packet's transmission path. Based on this, to ensure that the switching nodes between the source and destination nodes clearly understand that the packet is transmitted along the first transmission path and not the second transmission path, it is first necessary to determine the second addressing information corresponding to the first transmission path so that the packet can be encapsulated using the second addressing information. Through this processing, the switching node will not use the first transmission path when forwarding packets, but will use the second transmission path instead. The second addressing information is also used to indicate the destination node and transmission path corresponding to the packet.
[0275] For example, refer to Figure 24 If, based on the congestion levels of multiple candidate transmission paths during the routing time, the first transmission path corresponding to the message is determined to be candidate transmission path 1, then candidate transmission path 1 is server 1 - switching node 1 - switching node 5 - switching node 3 - server 2. Figure 24 The table on the right shows that the second addressing information corresponding to candidate transmission path 1 is (eth0, srcport0).
[0276] In step 2320, the message is encapsulated using the second addressing information, wherein the second addressing information takes precedence over the first addressing information, so that the switching nodes on the first transmission path address according to the second addressing information.
[0277] As can be understood, as mentioned above, in order for the exchange nodes between the source and destination nodes to clearly understand that the message is transmitted according to the first transmission path and not the second transmission path, it is necessary to use the second addressing information to encapsulate the message and send the encapsulated message. Encapsulating the message using the second addressing information refers to mapping the second addressing information to the payload of the transmission protocol and appending header information to form the data packet corresponding to the message.
[0278] Furthermore, for the switching nodes between the source and destination nodes, the second addressing information in the outer layer of the message takes precedence over the first addressing information. After receiving a message encapsulated with the second addressing information, the switching node will directly forward the message according to the second addressing information.
[0279] The embodiments of steps 2310 to 2320 described above can determine the second addressing information corresponding to the first transmission path and use the second addressing information to encapsulate the message, so that the switching nodes on the first transmission path can perform addressing according to the second addressing information. Through this processing, the message can be re-routed based on the congestion level of multiple candidate transmission paths during routing time, increasing the throughput of the data center network.
[0280] In one embodiment, there are multiple layers of switching nodes between the source node and the destination node; the second addressing information includes a network interface card (NIC) port number and a User Datagram Protocol (UDP) source port number; the NIC port number indicates the outgoing port number from which the source node connects to the first-layer switching node; the UDP source port number indicates the path number from which the first-layer switching node connects to the destination node through other layers of switching nodes in the multiple layers of switching nodes for each first-layer switching node to which the source node connects.
[0281] Reference Figure 25 Step 2320 includes:
[0282] Step 2510: Obtain the network card port number and the user datagram protocol source port number of the first transmission path;
[0283] Step 2520: Encapsulate the packet based on the network card port number and the user datagram protocol source port number.
[0284] Steps 2510 to 2520 are described in detail below:
[0285] In step 2510, the network card port number and the user datagram protocol source port number of the first transmission path are obtained.
[0286] It is understandable that, such as Figure 2 As shown, there are multiple layers of switching nodes between the source node and the destination node, including the access layer switching node (first layer switching node) of the next hop of the source node, the aggregation layer switching node (second layer switching node) of the next hop of the access layer switching node, the core layer switching node (third layer switching node) of the next hop of the aggregation layer switching node, the aggregation layer switching node (fourth layer switching node) of the next hop of the core layer switching node, and the access layer switching node (fifth layer switching node) of the next hop of the aggregation layer switching node.
[0287] Furthermore, the second addressing information includes the network interface card (NIC) port number and the User Datagram Protocol (UDP) source port number. The NIC port number indicates the output port number from which the source node connects to the first-layer switching node. By setting the NIC port number, the first-layer switching nodes traversed by packets sent from the source node can be controlled. The UDP source port number indicates the path number from which each first-layer switching node connected to the source node connects to the destination node via other layer switching nodes in the multi-layer switching network. By setting the UDP source port number, the second, third, fourth, and fifth layer switching nodes traversed by the packet after it leaves the first-layer switching node can be controlled. Based on this, after determining the first transmission path corresponding to the packet based on the congestion level of multiple candidate transmission paths during routing time, the NIC port number of the first transmission path can be obtained to control the packet's arrival at the first-layer switching node on the first transmission path. The UDP source port number can also be obtained to control the packet's arrival at the multi-layer switching nodes on the first transmission path after it leaves the first-layer switching node.
[0288] For example, refer to Figure 24 If the first transmission path is determined to be candidate transmission path 1, then the network interface port number of the first transmission path can be obtained as eth0, and the source port number of the User Datagram Protocol (UDP) can be obtained as srcport0. By setting eth0, the transmission path can be controlled to travel from server 1 to switch node 1. By setting srcport0, the transmission path can be controlled to travel from switch node 1 to switch node 5, and from switch node 5 to switch node 3.
[0289] In step 2520, the packet is encapsulated based on the network interface card port number and the User Datagram Protocol (UDP) source port number.
[0290] Understandably, after determining the network interface card (NIC) port number and the User Datagram Protocol (UDP) source port number for the first transmission path, these port numbers can be mapped to the payload of the transport protocol, and header information can be appended to form the corresponding data packet, thus completing the outer encapsulation of the packet. Correspondingly, when the destination node receives the packet, it first needs to decapsulate the outer encapsulation before it can extract the service information from the packet.
[0291] The embodiments of steps 2510 to 2520 described above can obtain the network interface card (NIC) port number and the User Datagram Protocol (UDP) source port number of the first transmission path, and use the NIC port number and UDP source port number to encapsulate the message. Through this process, while controlling the message to use the first transmission path corresponding to the second addressing information for transmission, the first addressing information within the message layer is protected from tampering, thus improving the security of message transmission.
[0292] Detailed description of step 340
[0293] Step 340: If the stream type is delay-sensitive, transmit each message in the data stream along the second transmission path corresponding to the first addressing information, according to the order of the messages in the data stream.
[0294] In one embodiment, reference is made to Figure 26 Step 340 includes:
[0295] Step 2610: Perform a digest operation on the first addressing information to obtain the addressing information digest;
[0296] Step 2620: Calculate the second remainder after calculating the total number of candidate transmission paths for the addressing information digest module;
[0297] Step 2630: Determine the candidate transmission path with the second remainder as the sequence number as the second transmission path;
[0298] Step 2640: Transmit the messages in the data stream along the second transmission path according to the order of the messages in the data stream.
[0299] Steps 2610 to 2640 are described in detail below:
[0300] In step 2610, a digest operation is performed on the first addressing information to obtain an addressing information digest.
[0301] It is understood that the specific implementation of step 1610 above has already explained the method of "performing a digest operation on the first addressing information to obtain an addressing information digest", and will not be repeated here.
[0302] In step 2620, the second remainder is calculated after calculating the total number of candidate transmission paths for the addressing information digest module.
[0303] According to embodiments of this disclosure, the total number of candidate transmission paths refers to the number of all candidate transmission paths between the source node and the destination node. "Calculating the addressing message digest modulo the total number of candidate transmission paths" means calculating the remainder after dividing the addressing message digest by the total number of candidate transmission paths, and the remainder after dividing the addressing message digest by the total number of candidate transmission paths is also the second remainder.
[0304] For example, if the addressing message digest is 200 and the total number of candidate transmission paths is 9, then the second remainder after calculating the addressing message digest modulo the total number of candidate transmission paths is 2.
[0305] In step 2630, the candidate transmission path with the second remainder as the sequence number is determined as the second transmission path.
[0306] According to embodiments of this disclosure, the second remainder can be understood as an index that can be used to determine the candidate transmission path corresponding to the message. Specifically, for messages in a single data stream, the first addressing information of multiple messages in that data stream is the same. If the stream type of the data stream is delay-sensitive, then the addressing information digests obtained after performing digest operations on the first addressing information of these messages are all the same. Correspondingly, the second remainders are also the same, so these messages will use the same candidate transmission path for transmission.
[0307] For example, refer to Figure 27 In data stream 1, messages 1 and 2 have the same first addressing information. After performing a digest operation on the first addressing information of messages 1 and 2, the second remainder after calculating the total number of candidate transmission paths is also the same. Therefore, candidate transmission path 4 is determined as the second transmission path for messages 1 and 2. Similarly, in data stream 2, messages 3 and 4 have the same first addressing information. After performing a digest operation on the first addressing information of messages 3 and 4, the second remainder after calculating the total number of candidate transmission paths is also the same. Therefore, candidate transmission path 3 is determined as the second transmission path for messages 3 and 4. The first addressing information of message 5 in data stream 3 is different from that of messages in data streams 1 and 2. After performing a digest operation on the first addressing information of message 5, the second remainder after calculating the total number of candidate transmission paths is 1. Therefore, candidate transmission path 1 is determined as the second transmission path for message 5.
[0308] In step 2640, the messages in the data stream are transmitted along the second transmission path according to the order of the messages in the data stream.
[0309] Understandably, for packets in a delay-sensitive data stream, once the second transmission path corresponding to the packet is determined, the packets can be sent sequentially using the second transmission path according to their order within the data stream. Because the first addressing information of multiple packets within the same data stream is identical, this process ensures that all packets in the same data stream use the same second transmission path, effectively guaranteeing that packets in a delay-sensitive data stream arrive in order, significantly reducing the probability of packet retransmission, and lowering communication latency.
[0310] In the embodiments of steps 2610 to 2640 above, for packets in a delay-sensitive data stream, a digest operation can be performed on the first addressing information to obtain an addressing information digest. Then, a second remainder is calculated after subtracting the total number of candidate transmission paths from the addressing information digest. The candidate transmission path with the second remainder as its index is determined as the second transmission path, and the packet is sent using the second transmission path. This process ensures that all packets in the same data stream use the same second transmission path, effectively guaranteeing that packets in a delay-sensitive data stream arrive in order, significantly reducing the probability of packet retransmission and communication latency.
[0311] Detailed description of the message received by the destination node
[0312] In one embodiment, the message transmission method is applied to a destination node, which has multiple queue areas corresponding to multiple aggregated data streams. Each queue area has a desired message sequence number and multiple ordered buffer queues. The desired message sequence number is initialized to the maximum message sequence number of a message that has been removed from the queue area and sent to the application plus 1.
[0313] Reference Figure 28 The message transmission methods include:
[0314] Step 2810: Receive packets from the first transmission path between the source node and the destination node in a throughput-sensitive aggregated data stream, wherein the first transmission path is determined based on the congestion level of multiple candidate transmission paths during the routing time of the packet, the multiple candidate transmission paths are located between the source node and the destination node, and the packet has the aggregated data stream identifier of the aggregated data stream and the packet sequence number in the aggregated data stream.
[0315] Step 2820: Based on the aggregated data stream identifier, allocate the packet to the queue area corresponding to the aggregated data stream;
[0316] Step 2830: Based on the message sequence number, cache the message into the target cache queue among multiple ordered cache queues in the queue area;
[0317] Step 2840: If the message sequence number is equal to the expected message sequence number, remove the contents from the target cache queue and send them to the application.
[0318] Steps 2810 to 2840 are described in detail below:
[0319] In step 2810, a packet from a throughput-sensitive aggregated data stream is received from a first transmission path between the source node and the destination node. The first transmission path is determined based on the congestion level of multiple candidate transmission paths during the routing time of the packet. The multiple candidate transmission paths are located between the source node and the destination node. The packet has an aggregated data stream identifier and a packet sequence number in the aggregated data stream.
[0320] Understandably, for each aggregated data stream, the destination node maintains a corresponding queue area. This queue area is used to temporarily store packets belonging to the aggregated data stream received by the destination node. By setting up queue areas for each aggregated data stream at the destination node, when the destination node receives packets from the aggregated data stream sent by the source node, it only needs to sort the multiple packets already received in that aggregated data stream based on the dimension of the aggregated data stream, without needing to sort all received packets. Based on this, decoupling from the massive number of data streams is achieved, significantly reducing the consumption of storage and computing resources by reordering.
[0321] Furthermore, each queue area has expected message sequence numbers and multiple ordered buffer queues. The expected message sequence number refers to the smallest message sequence number in the aggregated data stream that the current destination node has not yet received, and it is initialized to the largest message sequence number of a message that has been removed from the queue area and sent to the application plus 1. The ordered buffer queues are queue areas used to temporarily store messages belonging to the aggregated data stream received by the destination node, and if multiple messages are buffered in an ordered buffer queue, their sequence numbers are consecutive.
[0322] Understandably, after receiving a packet from a throughput-sensitive aggregated data stream via the first transmission path, the destination node first needs to extract the aggregated data stream identifier and the packet's sequence number within the aggregated data stream to determine the aggregated data stream to which the packet belongs and its order within that stream. This process facilitates subsequent sorting of the packet by the destination node.
[0323] In step 2820, the packet is allocated to the queue area corresponding to the aggregated data stream based on the aggregated data stream identifier.
[0324] Understandably, the destination node maintains a queue area corresponding to each aggregated data stream. In order to facilitate the sorting of multiple packets in each aggregated data stream, after determining the aggregated data stream identifier in the packet, the packet can be allocated to the queue area corresponding to the aggregated data stream based on the aggregated data stream identifier.
[0325] For example, refer to Figure 29After receiving message 3, the destination node can extract the aggregated data stream identifier 4 from message 3, and the message sequence number in the aggregated data stream is 1. Based on this, message 3 can be assigned to the queue area corresponding to aggregated data stream 4.
[0326] In step 2830, based on the message sequence number, the message is cached into the target cache queue among multiple ordered cache queues in the queue area.
[0327] Understandably, the destination node sorts packets according to their sequence numbers within the aggregated data stream. If the sequence number of a packet cached in any ordered buffer queue in the queue area corresponding to the aggregated data stream is consecutive to the sequence number of the packet received by the destination node within the aggregated data stream, then the packet received by the destination node is cached in this ordered buffer queue. If the sequence number of a packet cached in any ordered buffer queue in the queue area corresponding to the aggregated data stream is not consecutive to the sequence number of the packet received by the destination node within the aggregated data stream, then the packet received by the destination node is cached in any empty ordered buffer queue. For this packet received by the destination node, the ordered buffer queue used to cache this packet is the target buffer queue.
[0328] For example, refer to Figure 29 As described above, after receiving message 3, the destination node allocates message 3 to the queue area corresponding to aggregated data stream 4. Because message 3 has a sequence number of 1 in aggregated data stream 4, and all the ordered buffer queues in the current queue area are empty, message 3 can be directly buffered in ordered buffer queue 1. Ordered buffer queue 1 is the target buffer queue.
[0329] In step 2840, if the message sequence number is equal to the expected message sequence number, the contents of the target cache queue are removed and sent to the application.
[0330] Understandably, when the sequence numbers of packets cached in any ordered buffer queue of the queue area corresponding to the aggregated data stream are consecutive to the sequence numbers of packets received by the destination node in the aggregated data stream, the content of the target buffer queue is a queue of packets with consecutive sequence numbers. When the sequence numbers of packets cached in any ordered buffer queue of the queue area corresponding to the aggregated data stream are not consecutive to the sequence numbers of packets received by the destination node in the aggregated data stream, the content of the target buffer queue only contains packets received by the destination node.
[0331] Furthermore, the expected sequence number is not only the smallest sequence number of packets in the aggregated data stream that the current destination node has not yet received, but also indicates the queue area of the aggregated data stream and the next packet that the application expects to receive. If the sequence number of a packet received by the destination node in the aggregated data stream is equal to the expected sequence number, it means that the smallest sequence number in the current target cache queue and the largest sequence number of packets that have been removed from the queue area and sent to the application are consecutive. Based on this, the content in the target cache queue can be removed and sent to the application. Through this processing, packets that have been sorted in the queue area corresponding to the aggregated data stream can be immediately forwarded to the application, greatly reducing the latency of waiting for packet sorting.
[0332] For example, refer to Figure 29 As mentioned above, message 3 has a sequence number of 1 in aggregated data stream 4, and all ordered cache queues in the current queue area are empty, so message 3 can be directly cached in ordered cache queue 1. Moreover, at this time, the sequence number of message 3 in aggregated data stream 4 is equal to the expected sequence number, so the contents of ordered cache queue 1 can be directly removed and sent to the application.
[0333] In the embodiments described in steps 2810 to 2840 above, when the destination node receives a packet from a throughput-sensitive aggregated data stream sent by the source node, it can determine the queue area corresponding to the aggregated data stream based on the aggregated data stream identifier in the packet, and cache the packet into the target cache queue among multiple ordered cache queues in the queue area based on the packet sequence number in the aggregated data stream. Through this processing, multiple packets already received in this aggregated data stream can be sorted based on the dimension of the aggregated data stream, without needing to sort all packets received by the destination node. Based on this, decoupling from the massive data stream is achieved, greatly reducing the consumption of storage and computing resources by reordering. Moreover, embodiments of this disclosure can immediately forward the sorted packets in the queue area corresponding to the aggregated data stream to the application, greatly reducing the latency of waiting for packet sorting.
[0334] In one embodiment, reference is made to Figure 30 After step 2840, the message transmission method further includes:
[0335] Step 3010: Update the expected message sequence number to the maximum message sequence number of the message removed from the target buffer queue plus 1.
[0336] Understandably, since the expected sequence number is the smallest sequence number of packets in the aggregated data stream that the current destination node has not yet received, the expected sequence number also needs to be updated once the destination node receives a packet with a sequence number in the aggregated data stream that equals the expected sequence number. The content that the destination node removes from the target cache queue and sends to the application may be a single packet or multiple packets with consecutive sequence numbers. Therefore, the expected sequence number needs to be updated to the largest sequence number of the packets removed from the target cache queue plus 1.
[0337] For example, refer to Figure 29 Here, we will explain the case where the destination node removes only one message from the target cache queue and sends it to the application: As mentioned above, the sequence number of message 3 in the aggregated data stream 4 is equal to the expected sequence number, so the content in the ordered cache queue 1 can be directly removed and sent to the application. Since the maximum sequence number of the message removed from the target cache queue is 1, the expected sequence number can be updated to 2 at this time.
[0338] For example, the case where the destination node removes multiple packets with consecutive sequence numbers from the target cache queue and sends them to the application is illustrated here: If the packet received by the destination node has a sequence number of 4 in the aggregated data stream, and the queue area corresponding to this aggregated data stream has an ordered cache queue A that caches packets with sequence numbers 5 and 6, then the packet with sequence number 4 can be cached in the ordered cache queue A, which is the target cache queue. At this time, the ordered cache queue A caches packets with sequence numbers 4, 5, and 6. If the desired sequence number is 4, then the content in the ordered cache queue A can be removed and sent to the application. Because the maximum sequence number of the packet removed from the ordered cache queue A is 6, the desired sequence number can be updated to 7.
[0339] The embodiment of step 3010 described above can update the expected packet sequence number in real time to the smallest packet removed from the target cache queue after the content in the target cache queue is removed and sent to the application. This processing facilitates the subsequent destination node in quickly determining the packets that should be removed and sent to the application, improving the efficiency of packet reordering.
[0340] In one embodiment, reference is made to Figure 31 Step 2830 includes:
[0341] Step 3110: If the message sequence number is equal to the smallest message sequence number in an ordered buffer queue minus 1, cache the message at the head of the ordered buffer queue;
[0342] Step 3120: If the message sequence number is equal to the maximum message sequence number in an ordered buffer queue plus 1, buffer the message at the end of the ordered buffer queue;
[0343] Step 3130: If the message sequence number is neither equal to the minimum message sequence number minus 1 in an ordered cache queue, nor equal to the maximum message sequence number plus 1 in an ordered cache queue, cache the message in an ordered cache queue that has not cached any messages.
[0344] Steps 3110, 3120, and 3130 are described in detail below:
[0345] In step 3110, if the message sequence number is equal to the smallest message sequence number in an ordered cache queue minus 1, the message is cached at the head of the ordered cache queue.
[0346] Understandably, if the sequence number of a packet received by the destination node in the aggregated data stream is equal to the smallest sequence number in an ordered cache queue minus 1, it means that the packet received by the destination node in the aggregated data stream is ordered before the packet with the smallest sequence number in the ordered cache queue. Based on this, the packet can be cached at the head of the ordered cache queue, so that the packet and the packets already cached in the ordered cache queue form an ordered queue.
[0347] For example, refer to Figure 32A If the destination node receives message A and extracts the aggregated data stream identifier as 2 from message A, and the message's sequence number within the aggregated data stream is 2, then message A is assigned to the queue area corresponding to aggregated data stream 2. Figure 32A It can be deduced that in the queue area corresponding to aggregated data stream 2, the sequence number of message A is equal to the smallest message in the ordered buffer queue 1 minus 1. Based on this, message A (i.e. Figure 32A P2) is cached at the head of ordered cache queue 1.
[0348] In step 3120, if the message sequence number is equal to the maximum message sequence number in an ordered cache queue plus 1, the message is cached at the end of the ordered cache queue.
[0349] Understandably, if the sequence number of a packet received by the destination node in the aggregated data stream is equal to the maximum sequence number of a packet in an ordered buffer queue plus 1, it means that the packet received by the destination node in the aggregated data stream is ordered after the packet with the maximum sequence number in that ordered buffer queue. Based on this, the packet can be cached at the end of the ordered buffer queue, so that the packet and the already cached packets in the ordered buffer queue form an ordered queue. Through this process, when the destination node receives a new packet, it does not need to check the sequence numbers of all received packets in the aggregated data stream; it only needs to check the minimum and maximum sequence numbers of each ordered buffer queue in the queue area of the aggregated data stream containing the packet. Compared to the conventional bubble sort method, this significantly reduces the computational overhead of sorting.
[0350] For example, refer to Figure 32B If the destination node receives message B and extracts the aggregated data stream identifier as 3 from message B, and the message's sequence number within the aggregated data stream is 5, then message B is assigned to the queue area corresponding to aggregated data stream 3. Figure 32B It can be deduced that in the queue area corresponding to aggregated data stream 3, the sequence number of message B is equal to the maximum message in the ordered buffer queue 1 plus 1. Based on this, message B (i.e. Figure 32B The P5 in the cache is cached at the tail of the ordered cache queue 1.
[0351] In step 3130, if the message sequence number is neither equal to the minimum message sequence number minus 1 in an ordered cache queue, nor equal to the maximum message sequence number plus 1 in an ordered cache queue, the message is cached in an ordered cache queue that does not have any messages cached.
[0352] Understandably, if the sequence number of a packet received by the destination node in the aggregated data stream is neither equal to the minimum sequence number minus 1 in an ordered buffer queue, nor equal to the maximum sequence number plus 1 in an ordered buffer queue, it indicates that there is no continuous relationship between the sequence number of the packet received by the destination node in the data stream and the sequence numbers of packets already buffered in each ordered buffer queue. Based on this, packets can be buffered in an ordered buffer queue that currently has no packets buffered, to await subsequent reception of other packets by the destination node.
[0353] For example, refer to Figure 32C If the destination node receives message C, it extracts the aggregated data stream identifier as 4 from message C, and the message's sequence number within the aggregated data stream is 6. Therefore, message C is assigned to the queue area corresponding to aggregated data stream 4. Figure 32CIt can be deduced that in the queue area corresponding to aggregated data stream 4, the sequence number of message C is neither equal to the minimum sequence number in an ordered buffer queue minus 1, nor equal to the maximum sequence number in an ordered buffer queue plus 1. Based on this, message C (i.e. Figure 32C P6) is cached into an ordered cache queue 2 that does not cache any messages.
[0354] According to embodiments of this disclosure, each queue area also has an out-of-order buffer queue. The out-of-order buffer queue serves the same purpose as the ordered buffer queue, temporarily storing packets belonging to the aggregated data stream received by the destination node. Since the number of ordered buffer queues in each queue area is limited, it is possible that every ordered buffer queue may have packets buffered. In this case, the out-of-order buffer queue can serve as a substitute for the ordered buffer queues. That is, if the packet sequence number is neither equal to the minimum packet sequence number minus 1 in an ordered buffer queue nor equal to the maximum packet sequence number plus 1 in an ordered buffer queue, and there is currently no ordered buffer queue that has not buffered any packets, the packet can be buffered in the out-of-order buffer queue.
[0355] In the embodiments described in steps 3110 to 3130 above, when the destination node receives a new message, it does not need to check the sequence numbers of all received messages in the aggregated data stream. It only needs to check the minimum and maximum sequence numbers in each ordered buffer queue of the queue area of the aggregated data stream where the message resides. Furthermore, the buffer location of the message is determined based on the minimum and maximum sequence numbers in each ordered buffer queue. Compared to the conventional bubble sort method, which requires checking the sequence numbers of all received messages in the data stream, this embodiment significantly reduces the computational overhead of sorting.
[0356] In one embodiment, reference is made to Figure 33 After step 3110, the following also includes:
[0357] Step 3310: If the message sequence number is equal to the maximum message sequence number in another ordered buffer queue plus 1, clear the other ordered buffer queue and move it to the head of the ordered buffer queue.
[0358] Understandably, if the sequence number of a packet received by the destination node in the aggregated data stream is equal to the minimum sequence number minus 1 in one ordered cache queue and equal to the maximum sequence number plus 1 in another ordered cache queue, it means that in the aggregated data stream, the packet received by the destination node simultaneously satisfies the condition of being ordered before the packet with the minimum sequence number in the previous ordered cache queue and after the packet with the maximum sequence number in the next ordered cache queue. In this case, after caching the packet at the head of the previous ordered cache queue, the next ordered cache queue can be cleared and moved to the head of the previous ordered cache queue to complete the merging operation of the previous and next ordered cache queues. Through this process, it is unnecessary to check the sequence numbers of all received packets in the aggregated data stream; only the minimum and maximum sequence numbers in each ordered cache queue of the aggregated data stream's queue area need to be checked to achieve the merging of ordered cache queues with consecutive sequence numbers, greatly reducing the computational overhead of sorting.
[0359] For example, refer to Figure 34 If the destination node receives message A and extracts the aggregated data stream identifier as 2 from message A, and the message's sequence number within the aggregated data stream is 4, then message A is assigned to the queue area corresponding to aggregated data stream 2. Figure 34 It can be deduced that in the queue area corresponding to aggregated data stream 2, the sequence number of message A is equal to the minimum sequence number in ordered buffer queue 1 minus 1, and equal to the maximum sequence number in ordered buffer queue 2 plus 1. Based on this, when message A (i.e. Figure 34 After P4 is cached at the head of ordered cache queue 1, ordered cache queue 2 can be cleared and the packets in ordered cache queue 2 can be moved to the head of ordered cache queue 1 to complete the merging of ordered cache queue 1 and ordered cache queue 2.
[0360] According to one embodiment of this disclosure, if data center network congestion occurs, packets may be dropped by switching nodes during transmission. In this case, some ordered buffer queues may continuously store packets that cannot be merged with packets in other ordered buffer queues (because the sequence number of the packet dropped by the switching node may be the smallest sequence number in this ordered buffer queue minus 1), causing packets in this ordered buffer queue to remain at the destination node for a long time and unable to be sent to the application. To avoid this situation, a timer is set in the queue area corresponding to each aggregated data stream in the destination node. Whenever the timer reaches a preset waiting time, the destination node will transmit the packets that cannot be merged with packets in other ordered buffer queues to the application in ascending order of their sequence numbers. By handling this, the waiting time for packets on the application side can be reduced when packets are dropped, thus improving the packet transmission efficiency.
[0361] In the embodiment of step 3310 above, if the message sequence number is equal to both the minimum message sequence number in one ordered buffer queue minus 1 and the maximum message sequence number in another ordered buffer queue plus 1, the other ordered buffer queue is cleared and moved to the head of the ordered buffer queue. Through this processing, only the minimum and maximum message sequence numbers in each ordered buffer queue of the aggregated data stream's queue area need to be checked to achieve the merging of ordered buffer queues with consecutive message sequence numbers. Compared to conventional sorting methods that require checking the message sequence numbers of all received messages in the aggregated data stream, this embodiment significantly reduces the computational overhead of sorting.
[0362] In one embodiment, reference is made to Figure 35 After step 3120, the following also includes:
[0363] Step 3510: If the message sequence number is equal to the smallest message sequence number in another ordered buffer queue minus 1, clear the other ordered buffer queue and move it to the tail of the ordered buffer queue.
[0364] Understandably, if the sequence number of a packet received by the destination node in the aggregated data stream is equal to the maximum sequence number in one ordered buffer queue plus 1, and equal to the minimum sequence number in another ordered buffer queue minus 1, it means that in the aggregated data stream, the packet received by the destination node simultaneously satisfies the condition of being ordered after the packet with the maximum sequence number in the previous ordered buffer queue and before the packet with the minimum sequence number in the next ordered buffer queue. In this case, after buffering the packet at the end of the previous ordered buffer queue, the next ordered buffer queue can be cleared and moved to the end of the previous ordered buffer queue to complete the merging operation of the previous and next ordered buffer queues. Through this process, it is unnecessary to check the sequence numbers of all received packets in the aggregated data stream; only the minimum and maximum sequence numbers in each ordered buffer queue of the aggregated data stream's queue area need to be checked. This allows for the merging of ordered buffer queues with consecutive sequence numbers, significantly reducing the computational overhead of sorting.
[0365] For example, refer to Figure 36 If the destination node receives message B and extracts the aggregated data stream identifier as 3 from message B, and the message's sequence number within the aggregated data stream is 5, then message B is assigned to the queue area corresponding to aggregated data stream 3. Figure 36 It can be deduced that in the queue area corresponding to aggregated data stream 3, the sequence number of message B is equal to the maximum sequence number of the message in ordered buffer queue 1 plus 1, and equal to the minimum sequence number of the message in ordered buffer queue 2 minus 1. Based on this, when message B (i.e. Figure 36 After the P5 in the ordered cache queue 1 is cached to the end of the ordered cache queue 1, the ordered cache queue 2 can be cleared and the packets in the ordered cache queue 2 can be moved to the end of the ordered cache queue 1 to complete the merging of the ordered cache queue 1 and the ordered cache queue 2.
[0366] For example, refer to Figure 37 Here, for the queue area of a single aggregated data stream, the operation performed by the destination node after receiving a throughput-sensitive aggregated data stream is explained: In one step, after the destination node receives a message with sequence number 2, since message sequence number 2 is neither equal to the minimum message sequence number minus 1 in an ordered cache queue, nor equal to the maximum message sequence number plus 1 in an ordered cache queue (because at this time, none of the multiple ordered cache queues in the queue area have any messages cached), the message with sequence number 2 is cached in an ordered cache queue 1 that has no messages cached.
[0367] In the second step, after receiving the message with sequence number 4, the destination node caches the message with sequence number 4 into an ordered cache queue 2 that does not have any messages cached, since the message sequence number 4 is neither equal to the smallest message sequence number minus 1 in the ordered cache queue 1 nor equal to the largest message sequence number in the ordered cache queue 1 plus 1.
[0368] In the third step, after the destination node receives the message with sequence number 3, since the message sequence number 3 is equal to the maximum message sequence number in the ordered cache queue 1 plus 1 and equal to the minimum message sequence number in the ordered cache queue 2 minus 1, the message with sequence number 3 is cached at the end of the ordered cache queue 1, and the ordered cache queue 2 is cleared, and the messages in the ordered cache queue 2 are moved to the end of the ordered cache queue 1.
[0369] In the fourth step, after receiving the message with sequence number 1, the destination node, since sequence number 1 equals the smallest message sequence number in ordered cache queue 1 minus 1, caches this message with sequence number 1 at the head of ordered cache queue 1. Furthermore, at this point, message sequence number 1 equals the expected message sequence number. Ordered cache queue 1 is then designated as the target cache queue, and its contents are removed and sent to the application. Further, the expected message sequence number is updated to the largest message sequence number removed from the target cache queue (i.e., message sequence number 4) plus 1. In other words, the expected message number is updated to 5.
[0370] In the fifth step, after receiving the message with sequence number 7, the destination node caches the message with sequence number 7 into an ordered cache queue 1 that does not have any messages cached at this time, since the message sequence number 7 is neither equal to the minimum message sequence number minus 1 in an ordered cache queue, nor equal to the maximum message sequence number plus 1 in an ordered cache queue (because at this time, none of the multiple ordered cache queues in the queue area have any messages cached).
[0371] In step six, after receiving the message with sequence number 5, the destination node, since sequence number 5 is neither equal to the smallest sequence number minus 1 nor the largest sequence number plus 1 in ordered cache queue 1, caches this message with sequence number 5 into ordered cache queue 2, which currently has no cached messages. Further, because sequence number 5 is now equal to the expected message sequence number, ordered cache queue 2 is designated as the target cache queue, and its contents are removed and sent to the application. Further, the expected message sequence number is updated to the largest sequence number of the messages removed from the target cache queue (i.e., sequence number 5) plus 1. In other words, the expected message number is updated to 6.
[0372] In step seven, after receiving the message with sequence number 8, the destination node caches the message with sequence number 8 at the end of the ordered cache queue 1, since the message sequence number 8 is equal to the maximum message sequence number in the ordered cache queue 1 plus 1.
[0373] In step eight, after receiving the message with sequence number 6, the destination node, since sequence number 6 is equal to the smallest message sequence number in ordered cache queue 1 minus 1, caches this message with sequence number 6 at the head of ordered cache queue 1. Furthermore, at this point, message sequence number 6 equals the expected message sequence number. Ordered cache queue 1 is then designated as the target cache queue, and its contents are removed and sent to the application. Further, the expected message sequence number is updated to the largest message sequence number removed from the target cache queue (i.e., message sequence number 8) plus 1. In other words, the expected message number is updated to 9.
[0374] In the embodiment of step 3510 described above, if the message sequence number is equal to both the maximum message sequence number in one ordered buffer queue plus 1 and the minimum message sequence number in another ordered buffer queue minus 1, the other ordered buffer queue is cleared and moved to the tail of the ordered buffer queue. Through this processing, only the minimum and maximum message sequence numbers in each ordered buffer queue of the aggregated data stream's queue area need to be checked to achieve the merging of ordered buffer queues with consecutive message sequence numbers. Compared to conventional sorting methods that require checking the message sequence numbers of all received messages in the aggregated data stream, this embodiment of the disclosure significantly reduces the computational overhead of sorting.
[0375] Description of apparatus and devices according to embodiments of this disclosure
[0376] It is understood that although the steps in the above flowcharts are shown sequentially according to the arrows, these steps are not necessarily executed in the order indicated by the arrows. Unless explicitly stated in this embodiment, there is no strict order restriction on the execution of these steps, and they can be executed in other orders. Moreover, at least some steps in the above flowcharts may include multiple steps or multiple stages. These steps or stages are not necessarily completed at the same time, but can be executed at different times. The execution order of these steps or stages is not necessarily sequential, but can be performed alternately or in turn with other steps or at least some of the steps or stages in other steps.
[0377] It should be noted that in various specific embodiments of this application, when processing data related to object characteristics, such as object attribute information or sets of attribute information, is required, the object's permission or consent will be obtained first. Furthermore, the collection, use, and processing of this data will comply with relevant laws, regulations, and standards. In addition, when embodiments of this application require obtaining object attribute information, separate permission or consent from the object will be obtained through pop-ups or redirection to a confirmation page. Only after obtaining the object's separate permission or consent will the necessary object-related data for the proper functioning of these embodiments be acquired.
[0378] Figure 38 This is a schematic diagram of the structure of a message transmission device 3800 provided in an embodiment of this disclosure. The message transmission device 3800 is disposed in a source node and includes:
[0379] The first acquisition unit 3810 is used to acquire a data stream, wherein the data stream includes multiple messages, and the first addressing information of the multiple messages is the same, and there are multiple candidate transmission paths between the source node and the destination node.
[0380] The first determining unit 3820 is used to determine the stream type of the data stream;
[0381] If the flow type is throughput sensitive, the first transmission unit 3830 is used to determine the first transmission path corresponding to each message in the data flow based on the congestion level of multiple candidate transmission paths during the routing time of the message, and transmit the message to the destination node through the first transmission path.
[0382] If the stream type is delay-sensitive, the second transmission unit 3840 is used to transmit each message in the data stream along the second transmission path corresponding to the first addressing information, according to the order of the messages in the data stream.
[0383] Optionally, the first determining unit 3820 is specifically used for:
[0384] The messages in the data stream are sequentially used as the target messages;
[0385] If the length of the target message is greater than the first threshold, or the length of other messages preceding the target message in the data stream is greater than the first threshold, the stream type is determined to be throughput sensitive.
[0386] If the length of the target message is not greater than the first threshold, and the length of other messages preceding the target message in the data stream is not greater than the first threshold, the stream type is determined to be latency-sensitive.
[0387] Optionally, the first determining unit 3820 is specifically used for:
[0388] If the length of a predetermined number of consecutive packets following the target packet in the data stream is not greater than the first threshold, the stream type is converted to latency-sensitive.
[0389] Optionally, the first transmission unit 3830 is specifically used for:
[0390] Based on the first addressing information of each message, each message is added to the aggregated data stream;
[0391] For each message in the aggregated data stream, during the routing time of the message, the first transmission path corresponding to the message is determined based on the congestion level of multiple candidate transmission paths during the routing time.
[0392] Optionally, the first transmission unit 3830 is specifically used for:
[0393] Perform a digest operation on the first addressing information of the message to obtain the addressing information digest;
[0394] The first remainder after calculating the addressing information digest modulo the target parameters;
[0395] All messages with the same first remainder are added to the same aggregated data stream.
[0396] Optionally, the first transmission unit 3830 is specifically used for:
[0397] The first remainder is determined as the aggregated data stream identifier;
[0398] Assign a sequence number to each message added to the aggregated data stream. The sequence number indicates the order of the message in the aggregated data stream.
[0399] The aggregate data stream identifier of the aggregate data stream to which the message is added is filled into the aggregate data stream identifier field of the message, and the message sequence number is filled into the message sequence number field of the message.
[0400] Optionally, the first transmission unit 3830 is specifically used for:
[0401] In each cycle, probe information is sent to the destination node through multiple candidate transmission paths to obtain the congestion level of the multiple candidate transmission paths in the cycle;
[0402] Determine the time period to which the route selection time belongs;
[0403] For each packet in the aggregated data stream, during the routing time of the packet, the first transmission path corresponding to the packet is determined based on the congestion level of multiple candidate transmission paths in the previous period of the period to which the routing time belongs.
[0404] Optionally, the first transmission unit 3830 is specifically used for:
[0405] In each cycle, probe information is sent to the destination node through multiple candidate transmission paths, and confirmation responses are received from the destination node.
[0406] For each candidate transmission path, calculate the message transmission time from sending the probe information to receiving the acknowledgment response;
[0407] Based on the message transmission time corresponding to each candidate transmission path, the congestion level of each candidate transmission path in a period is determined.
[0408] Optionally, the first transmission unit 3830 is specifically used for:
[0409] Determine the second addressing information corresponding to the first transmission path;
[0410] The message is encapsulated using the second addressing information, which takes precedence over the first addressing information, so that the switching nodes on the first transmission path can perform addressing based on the second addressing information.
[0411] Optionally, there are multiple layers of switching nodes between the source node and the destination node; the second addressing information includes the network interface card (NIC) port number and the User Datagram Protocol (UDP) source port number; the NIC port number indicates the output port number from which the source node connects to the first-layer switching node; the UDP source port number indicates the path number from which the first-layer switching node connects to the destination node through other layers of switching nodes in the multiple layers of switching nodes for each first-layer switching node to which the source node connects.
[0412] The first transmission unit 3830 is specifically used for:
[0413] Obtain the network interface card port number and the user datagram protocol source port number for the first transmission path;
[0414] The message is encapsulated based on the network card port number and the user datagram protocol source port number.
[0415] Optionally, the second transmission unit 3840 is specifically used for:
[0416] Perform a digest operation on the first addressing information to obtain the addressing information digest;
[0417] The second remainder after calculating the total number of candidate transmission paths for the addressing message digest module;
[0418] The candidate transmission path with the second remainder as its index is determined as the second transmission path;
[0419] The messages in the data stream are transmitted along the second transmission path according to their order in the data stream.
[0420] Figure 39 This is a schematic diagram of the structure of the message transmission device 3900 provided in an embodiment of this disclosure. The message transmission device 3900 is disposed in a destination node, and the destination node has multiple queue areas corresponding to multiple aggregated data streams. Each queue area has a desired message sequence number and multiple ordered buffer queues. The desired message sequence number is initialized to the maximum message sequence number of the message that has been removed from the queue area and sent to the application plus 1.
[0421] The message transmission device 3900 includes:
[0422] The receiving unit 3910 is used to receive packets from a throughput-sensitive aggregated data stream from a first transmission path between a source node and a destination node. The first transmission path is determined based on the congestion level of multiple candidate transmission paths during the routing time of the packet. The multiple candidate transmission paths are located between the source node and the destination node. The packet has an aggregated data stream identifier and a packet sequence number in the aggregated data stream.
[0423] The allocation unit 3920 is used to allocate packets to the queue area corresponding to the aggregated data stream based on the aggregated data stream identifier;
[0424] The cache unit 3930 is used to cache packets into the target cache queue among multiple ordered cache queues in the queue area based on the packet sequence number.
[0425] If the message sequence number is equal to the expected message sequence number, the sending unit 3940 is used to remove the contents from the target buffer queue and send them to the application.
[0426] Optionally, the message transmission device 3900 further includes an update unit, which is specifically used for:
[0427] Update the expected message sequence number to the maximum sequence number of the message removed from the target buffer queue plus 1.
[0428] Optionally, cache unit 3930 is specifically used for:
[0429] If the message sequence number is equal to the smallest message sequence number in an ordered buffer queue minus 1, the message is buffered at the head of the ordered buffer queue;
[0430] If the message sequence number is equal to the maximum message sequence number in an ordered buffer queue plus 1, the message is buffered at the end of the ordered buffer queue;
[0431] If the message sequence number is neither equal to the minimum message sequence number minus 1 in an ordered cache queue, nor equal to the maximum message sequence number plus 1 in an ordered cache queue, cache the message in an ordered cache queue that does not have any messages cached.
[0432] Optionally, cache unit 3930 is specifically used for:
[0433] If the message sequence number is equal to the maximum message sequence number in another ordered buffer queue plus 1, clear the other ordered buffer queue and move it to the head of the ordered buffer queue.
[0434] Optionally, cache unit 3930 is specifically used for:
[0435] If the message sequence number is equal to the smallest message sequence number in another ordered buffer queue minus 1, clear the other ordered buffer queue and move it to the tail of the ordered buffer queue.
[0436] Reference Figure 40 , Figure 40 To implement the structural block diagram of the terminal portion of the message transmission method according to the embodiments of this disclosure, the terminal includes: a radio frequency (RF) circuit 4010, a memory 4015, an input unit 4030, a display unit 4040, a sensor 4050, an audio circuit 4060, a wireless fidelity (WiFi) module 4070, a processor 4080, and a power supply 4090, etc. Those skilled in the art will understand that... Figure 40 The terminal structure shown does not constitute a limitation on mobile phones or computers and may include more or fewer components than shown, or combine certain components, or have different component arrangements.
[0437] The RF circuit 4010 can be used to receive and transmit signals during information transmission or calls. In particular, it receives downlink information from the base station and processes it with the processor 4080; in addition, it transmits uplink data to the base station.
[0438] The memory 4015 can be used to store software programs and modules. The processor 4080 executes various functional applications and data processing of the content terminal by running the software programs and modules stored in the memory 4015.
[0439] The input unit 4030 can be used to receive input numeric or character information, and to generate key signal inputs related to the settings and function control of the content terminal. Specifically, the input unit 4030 may include a touch panel 4031 and other input devices 4032.
[0440] Display unit 4040 can be used to display input or provided information, as well as various menus of the content terminal. Display unit 4040 may include display panel 4041.
[0441] Audio circuit 4060, speaker 4061, and microphone 4062 provide an audio interface.
[0442] In this embodiment, the processor 4080 included in the terminal can execute the message transmission method of the previous embodiment.
[0443] The terminals disclosed in this embodiment include, but are not limited to, mobile phones, computers, intelligent voice interaction devices, smart home appliances, vehicle terminals, and aircraft. The embodiments of this invention can be applied to various scenarios, including but not limited to cloud application data transmission.
[0444] Figure 41 This is a partial structural block diagram of a server for implementing the message transmission method of this disclosure. The server can vary significantly due to different configurations or performance characteristics, and may include one or more central processing units (CPUs) 4122 (e.g., one or more processors) and memory 4132, and one or more storage media 4130 (e.g., one or more mass storage devices) for storing application programs 4142 or data 4144. The memory 4132 and storage media 4130 may be temporary or persistent storage. The program stored in the storage media 4130 may include one or more modules (not shown in the diagram), each module including a series of instruction operations on the server. Furthermore, the CPU 4122 may be configured to communicate with the storage media 4130 and execute the series of instruction operations in the storage media 4130 on the server.
[0445] The server may also include one or more power supplies 4126, one or more wired or wireless network interfaces 4150, one or more input / output interfaces 4158, and / or one or more operating systems 4141, such as Windows Server™, Mac OS X™, Unix™, Linux™, FreeBSD™, etc.
[0446] The central processing unit 4122 in the server can be used to execute the message transmission method of the present disclosure embodiments.
[0447] This disclosure also provides a computer-readable storage medium for storing program code for executing the message transmission methods of the foregoing embodiments.
[0448] This disclosure also provides a computer program product comprising a computer program. A processor of a computer device reads and executes the computer program, causing the computer device to perform the message transmission method described above.
[0449] The terms “first,” “second,” “third,” “fourth,” etc. (if present) in this disclosure and the foregoing drawings are used to distinguish similar terms and are not necessarily used to describe a particular order or sequence. It should be understood that such use of data can be interchanged where appropriate so that embodiments of this disclosure described herein can be implemented, for example, in orders other than those illustrated or described herein. Furthermore, the terms “comprising” and “including,” and any variations thereof, are intended to cover non-exclusive inclusion; for example, a process, method, system, product, or apparatus that includes a series of steps or units is not necessarily limited to those steps or units explicitly listed, but may include other steps or units not explicitly listed or inherent to such processes, methods, products, or apparatuses.
[0450] It should be understood that in this disclosure, "at least one item" refers to one or more items, and "more than one item" refers to two or more items. "And / or" is used to describe the relationship between related content, indicating that three relationships can exist. For example, "A and / or B" can represent three cases: only A exists, only B exists, and both A and B exist simultaneously, where A and B can be singular or plural. The character " / " generally indicates that the preceding and following related content are in an "or" relationship. "At least one of the following" or similar expressions refer to any combination of these items, including any combination of single or plural items. For example, at least one of a, b, or c can represent: a, b, c, "a and b", "a and c", "b and c", or "a and b and c", where a, b, and c can be single or multiple.
[0451] It should be understood that in the description of the embodiments disclosed herein, "multiple" means two or more, "greater than", "less than", "exceeding" etc. are understood to exclude the number itself, and "above", "below", "within" etc. are understood to include the number itself.
[0452] In the embodiments provided in this disclosure, it should be understood that the disclosed systems, apparatuses, and methods can be implemented in other ways. For example, the apparatus embodiments described above are merely illustrative; for instance, the division of units is only a logical functional division, and in actual implementation, there may be other division methods. For example, multiple units or components may be combined or integrated into another system, or some features may be ignored or not executed. The couplings or direct couplings or communication connections shown or discussed may be indirect couplings or communication connections between apparatuses or units through some interfaces, and may be electrical, mechanical, or other forms.
[0453] The units described as separate components may or may not be physically separate. The components shown as units may or may not be physical units; that is, they may be located in one place or distributed across multiple network units. Some or all of the units can be selected to achieve the purpose of this embodiment according to actual needs.
[0454] Furthermore, the functional units in the various embodiments of this disclosure can be integrated into one processing unit, or each unit can exist physically separately, or two or more units can be integrated into one unit. The integrated unit can be implemented in hardware or as a software functional unit.
[0455] If the integrated unit is implemented as a software functional unit and sold or used as an independent product, it can be stored in a computer-readable storage medium. Based on this understanding, the technical solution of this disclosure, in essence, or the part that contributes to the prior art, or all or part of the technical solution, can be embodied in the form of a software product. This computer software product is stored in a storage medium and includes several instructions to cause a computer device (which may be a personal computer, server 130, or network device, etc.) to execute all or part of the steps of the methods of the various embodiments of this disclosure. The aforementioned storage medium includes various media capable of storing program code, such as a USB flash drive, a portable hard drive, read-only memory (ROM), random access memory (RAM), a magnetic disk, or an optical disk.
[0456] It should also be understood that the various implementation methods provided in this disclosure can be combined arbitrarily to achieve different technical effects.
[0457] The above is a detailed description of the embodiments of this disclosure. However, this disclosure is not limited to the above embodiments. Those skilled in the art can make various equivalent modifications or substitutions without departing from the spirit of this disclosure. All such equivalent modifications or substitutions are included within the scope defined by the claims of this disclosure.
Claims
1. A message transmission method, characterized in that, Applied to the source node, the message transmission method includes: Acquire a data stream, wherein the data stream includes multiple messages, and the first addressing information of the multiple messages is the same, and there are multiple candidate transmission paths between the source node and the destination node; Determine the stream type of the data stream; If the flow type is throughput sensitive, for each packet in the data flow, at the routing time of the packet, based on the congestion level of the multiple candidate transmission paths at the routing time, the first transmission path corresponding to the packet is determined, and the packet is transmitted to the destination node through the first transmission path. If the stream type is delay-sensitive, each packet in the data stream is transmitted along the second transmission path corresponding to the first addressing information, according to the order of the packets in the data stream.
2. The message transmission method according to claim 1, characterized in that, Determining the stream type of the data stream includes: The messages in the data stream are sequentially used as the target messages; If the length of the target message is greater than the first threshold, or the length of other messages preceding the target message in the data stream is greater than the first threshold, the stream type is determined to be throughput sensitive. If the length of the target message is not greater than the first threshold, and the length of other messages preceding the target message in the data stream is not greater than the first threshold, the stream type is determined to be latency-sensitive.
3. The message transmission method according to claim 2, characterized in that, After determining the flow type as throughput-sensitive if the length of the target message is greater than a first threshold, or the length of other messages preceding the target message in the data stream is greater than the first threshold, the message transmission method further includes: If the length of a predetermined number of consecutive packets following the target packet in the data stream is not greater than the first threshold, the stream type is converted to latency-sensitive.
4. The message transmission method according to claim 1, characterized in that, For each packet in the data stream, at the routing time of the packet, determining the first transmission path corresponding to the packet based on the congestion level of the multiple candidate transmission paths at the routing time includes: Based on the first addressing information of each message, each message is added to the aggregated data stream; For each message in the aggregated data stream, at the routing time of the message, based on the congestion level of the multiple candidate transmission paths at the routing time, the first transmission path corresponding to the message is determined.
5. The message transmission method according to claim 4, characterized in that, The step of adding each packet to the aggregated data stream based on the first addressing information of each packet includes: Perform a digest operation on the first addressing information of the message to obtain an addressing information digest; Calculate the first remainder after modifying the target parameters of the addressing information digest; All messages with the same first remainder are added to the same aggregated data stream.
6. The message transmission method according to claim 5, characterized in that, The step of adding messages with the same first remainder to the same aggregated data stream includes: The first remainder is determined as the aggregated data stream identifier of the aggregated data stream; Each message added to the aggregated data stream is assigned a message sequence number, which indicates the order of the message in the aggregated data stream; The aggregate data stream identifier of the aggregate data stream to which the message is added is filled into the aggregate data stream identifier field of the message, and the message sequence number is filled into the message sequence number field of the message.
7. The message transmission method according to claim 4, characterized in that, For each packet in the aggregated data stream, determining the first transmission path corresponding to the packet at the routing time of the packet, based on the congestion level of the multiple candidate transmission paths at the routing time, includes: In each cycle, probe information is sent to the destination node through the multiple candidate transmission paths to obtain the congestion level of the multiple candidate transmission paths in that cycle; Determine the period to which the route selection time belongs; For each packet in the aggregated data stream, at the routing time of the packet, the first transmission path corresponding to the packet is determined based on the congestion level of the multiple candidate transmission paths in the previous period of the period to which the routing time belongs.
8. The message transmission method according to claim 7, characterized in that, In each cycle, sending probe information to the destination node through the multiple candidate transmission paths to obtain the congestion level of the multiple candidate transmission paths in that cycle includes: In each cycle, the probe information is sent to the destination node through the multiple candidate transmission paths, and the acknowledgment response is received from the destination node; For each of the candidate transmission paths, calculate the message transmission time from sending the probe information to receiving the acknowledgment response; Based on the message transmission time corresponding to each of the candidate transmission paths, the congestion level of each candidate transmission path in the period is determined.
9. The message transmission method according to claim 1, characterized in that, The step of transmitting the message to the destination node through the first transmission path includes: Determine the second addressing information corresponding to the first transmission path; The message is encapsulated using the second addressing information, wherein the second addressing information takes precedence over the first addressing information, so that the switching nodes on the first transmission path address according to the second addressing information.
10. The message transmission method according to claim 9, characterized in that, There are multiple layers of switching nodes between the source node and the destination node; the second addressing information includes a network interface card (NIC) port number and a User Datagram Protocol (UDP) source port number; the NIC port number indicates the outgoing port number of the source node connecting to the first-layer switching node; the UDP source port number indicates the path number through which the first-layer switching node connects to the destination node via other layers of switching nodes in the multiple layers of switching nodes for each first-layer switching node to which the source node is connected. The encapsulation of the message using the second addressing information includes: Obtain the network interface card port number and the user datagram protocol source port number of the first transmission path; The message is encapsulated based on the network interface card port number and the User Datagram Protocol (UDP) source port number.
11. The message transmission method according to claim 1, characterized in that, The step of transmitting each message in the data stream along the second transmission path corresponding to the first addressing information, according to the order of the messages in the data stream, includes: Perform a digest operation on the first addressing information to obtain an addressing information digest; The second remainder after calculating the addressing information digest modulo the total number of candidate transmission paths; The candidate transmission path with the second remainder as its index is determined as the second transmission path; The messages in the data stream are transmitted along the second transmission path according to the order of the messages in the data stream.
12. A message transmission method, characterized in that, Applied to a destination node, the destination node has multiple queue areas corresponding to multiple aggregated data streams. Each queue area has a desired message sequence number and multiple ordered buffer queues. The desired message sequence number is initialized to the maximum message sequence number of the message that has been removed from the queue area and sent to the application plus 1. The message transmission method includes: A packet is received from a throughput-sensitive aggregated data stream via a first transmission path between the source node and the destination node, wherein the first transmission path is determined based on the congestion level of multiple candidate transmission paths during the routing time of the packet, the multiple candidate transmission paths being located between the source node and the destination node, and the packet having an aggregated data stream identifier of the aggregated data stream and a packet sequence number of the packet in the aggregated data stream; Based on the aggregated data stream identifier, the message is allocated to the queue area corresponding to the aggregated data stream; Based on the message sequence number, the message is cached in the target cache queue among the plurality of ordered cache queues in the queue area; If the message sequence number is equal to the expected message sequence number, the contents of the target cache queue are removed and sent to the application.
13. The message transmission method according to claim 12, characterized in that, After removing the contents of the target cache queue and sending them to the application if the message sequence number equals the expected message sequence number, the message transmission method further includes: Update the expected message sequence number to the maximum message sequence number of the message removed from the target cache queue plus 1.
14. The message transmission method according to claim 12, characterized in that, The step of caching the message into a target cache queue among the plurality of ordered cache queues in the queue area based on the message sequence number includes: If the message sequence number is equal to the smallest message sequence number in the ordered cache queue minus 1, the message is cached at the head of the ordered cache queue; If the message sequence number is equal to the maximum message sequence number in the ordered cache queue plus 1, the message is cached at the end of the ordered cache queue; If the message sequence number is neither equal to the minimum message sequence number minus 1 in one of the ordered cache queues, nor equal to the maximum message sequence number plus 1 in one of the ordered cache queues, the message is cached in one of the ordered cache queues that does not have any messages cached.
15. The message transmission method according to claim 14, characterized in that, After buffering the message at the head of the ordered buffer queue if the message sequence number is equal to the smallest message sequence number in the ordered buffer queue minus 1, the message transmission method further includes: If the message sequence number is equal to the maximum message sequence number in another ordered cache queue plus 1, clear the other ordered cache queue and move it to the head of the ordered cache queue.
16. The message transmission method according to claim 14, characterized in that, After buffering the message at the tail of the ordered buffer queue if the message sequence number is equal to the maximum message sequence number in the ordered buffer queue plus 1, the message transmission method further includes: If the message sequence number is equal to the minimum message sequence number in another ordered buffer queue minus 1, then the other ordered buffer queue is cleared and the message is moved to the tail of the ordered buffer queue.
17. A message transmission device, characterized in that, The message transmission device, configured in the source node, includes: The first acquisition unit is used to acquire a data stream, wherein the data stream includes multiple messages, and the first addressing information of the multiple messages is the same, and there are multiple candidate transmission paths between the source node and the destination node; The first determining unit is used to determine the stream type of the data stream; If the flow type is throughput sensitive, the first transmission unit is used to determine the first transmission path corresponding to each message in the data flow based on the congestion level of the multiple candidate transmission paths at the routing time of the message, and transmit the message to the destination node through the first transmission path. If the stream type is delay-sensitive, the second transmission unit is used to transmit each message in the data stream along the second transmission path corresponding to the first addressing information, according to the order of the messages in the data stream.
18. An electronic device comprising a memory and a processor, wherein the memory stores a computer program, characterized in that, When the processor executes the computer program, it implements the message transmission method according to any one of claims 1 to 16.
19. A computer-readable storage medium storing a computer program, characterized in that, When the computer program is executed by the processor, it implements the message transmission method according to any one of claims 1 to 16.
20. A computer program product comprising a computer program that is read and executed by a processor of a computer device, causing the computer device to perform the message transmission method according to any one of claims 1 to 16.
