Message transmission method and device, electronic equipment, related medium and program product
By generating and updating data packets with bottleneck congestion window values and load levels, and combining them with acknowledgment packets for fast route switching, the problem of low efficiency in communication path congestion detection in existing technologies is solved, and message transmission efficiency is improved.
Patent Information
- Authority / Receiving Office
- CN · China
- Patent Type
- Applications(China)
- Current Assignee / Owner
- TENCENT TECHNOLOGY (SHENZHEN) CO LTD
- Filing Date
- 2024-12-03
- Publication Date
- 2026-06-05
AI Technical Summary
Existing technologies are inefficient at detecting communication path congestion in message transmission networks, leading to long-term path congestion and affecting transmission efficiency.
By generating and updating data packets containing bottleneck congestion window values and bottleneck load levels, and combining them with acknowledgment packets for rapid route switching, accurate congestion detection and timely route switching of communication paths can be achieved.
It enables fast and accurate congestion detection of communication paths, reduces path switching delay, and improves message transmission efficiency.
Smart Images

Figure CN122160308A_ABST
Abstract
Description
Technical Field
[0001] This disclosure relates to the field of computers, and in particular to a message transmission method, apparatus, electronic device, related media, and program product. Background Technology
[0002] A message transmission network is a bearer network composed of various electronic devices (such as servers and switches) connected by physical links. It provides the physical path and network connectivity for message transmission, enabling data transmission, storage, and computation. Currently, the Equal-Cost-Multi-Path (ECMP) routing hash algorithm is widely used for routing in message transmission networks. However, in actual message transmission networks, hash polarization occurs to varying degrees, meaning that multiple data streams transmitting through the same communication path cause congestion on that path. Therefore, there is a need to detect congestion on communication paths.
[0003] To address these needs, relevant technologies offer Protective Load Balancing (PLB) to detect congestion on communication paths. PLB relies on counting the number of Explicit Congestion Notification (ECN) signals. If a certain number of ECN signals are detected for a given communication path over multiple consecutive periods, the path is considered congested. However, PLB requires multiple periods to detect congestion, resulting in low detection efficiency and potentially leading to prolonged congestion and impacting message transmission efficiency. Summary of the Invention
[0004] This disclosure provides a message transmission method, apparatus, electronic device, computer-readable storage medium, and computer program product that can quickly and accurately detect congestion in communication paths and enable timely route switching, thereby helping to improve message transmission efficiency.
[0005] According to one aspect of this disclosure, a message transmission method is provided, applied to a sending device in a message transmission network; wherein the message transmission network further includes a receiving device and a plurality of forwarding devices, and a communication path is formed between the sending device and the receiving device through the forwarding devices; the message transmission method includes: Generate a first data packet; wherein the first data packet has a first bottleneck congestion window value and a first bottleneck load level, the first bottleneck congestion window value is used to indicate the smallest outgoing port congestion window value among the forwarding devices of the current communication path, and the first bottleneck load level is used to indicate the largest outgoing port load level among the forwarding devices of the current communication path. Initialize the first bottleneck congestion window value and the first bottleneck load level, and send the first data packet so that each forwarding device of the current communication path updates the first bottleneck congestion window value with the outgoing port congestion window value when the outgoing port congestion window value of the forwarding device is smaller than the first bottleneck congestion window value, and updates the first bottleneck load level with the outgoing port load level when the outgoing port load level of the forwarding device is larger than the first bottleneck load level. Receive a first acknowledgment message; wherein the first acknowledgment message is generated by the receiving device based on the first bottleneck congestion window value and the first bottleneck load level in the first data packet; Based on the first bottleneck congestion window value and the first bottleneck load level in the first confirmation message, a routing process is performed.
[0006] According to one aspect of this disclosure, a message transmission method is provided, applied to any one of a plurality of forwarding devices included in a message transmission network; wherein the message transmission network further includes a sending device and a receiving device, and the sending device and the receiving device form a communication path through the forwarding device; the message transmission method includes: Receive a first data packet; wherein the first data packet has a first bottleneck congestion window value and a first bottleneck load level, the first bottleneck congestion window value is used to indicate the smallest outgoing port congestion window value among the forwarding devices of the current communication path, and the first bottleneck load level is used to indicate the largest outgoing port load level among the forwarding devices of the current communication path. When the outgoing port congestion window value of the forwarding device is smaller than the first bottleneck congestion window value, the first bottleneck congestion window value is updated with the outgoing port congestion window value; when the outgoing port load level of the forwarding device is larger than the first bottleneck load level, the first bottleneck load level is updated with the outgoing port load level. The first data packet is sent so that the receiving device generates a first acknowledgment packet based on the first bottleneck congestion window value and the first bottleneck load level in the first data packet, and the sending device performs a routing process based on the first bottleneck congestion window value and the first bottleneck load level in the first acknowledgment packet.
[0007] According to one aspect of this disclosure, a message transmission method is provided, applied to a receiving device in a message transmission network; wherein the message transmission network further includes a sending device and a plurality of forwarding devices, and a communication path is formed between the sending device and the receiving device through the forwarding devices; the message transmission method includes: A first data packet is received; wherein the first data packet has a first bottleneck congestion window value and a first bottleneck load level, the first bottleneck congestion window value is used to indicate the smallest outgoing port congestion window value among all forwarding devices in the current communication path, and the first bottleneck load level is used to indicate the largest outgoing port load level among all forwarding devices in the current communication path; each forwarding device in the current communication path updates the first bottleneck congestion window value with the outgoing port congestion window value when the outgoing port congestion window value of the forwarding device is smaller than the first bottleneck congestion window value, and updates the first bottleneck load level with the outgoing port load level when the outgoing port load level of the forwarding device is larger than the first bottleneck load level. A first confirmation message is generated based on the first bottleneck congestion window value and the first bottleneck load level in the first data message; The first confirmation message is sent so that the sending device can perform a routing process based on the first bottleneck congestion window value and the first bottleneck load level in the first confirmation message.
[0008] According to one aspect of this disclosure, a message transmission apparatus is provided, applied to a sending device in a message transmission network; wherein the message transmission network further includes a receiving device and a plurality of forwarding devices, and the sending device and the receiving device form a communication path through the forwarding devices; the message transmission apparatus includes: A data packet generation module is used to generate a first data packet; wherein the first data packet has a first bottleneck congestion window value and a first bottleneck load level, the first bottleneck congestion window value is used to indicate the smallest outgoing port congestion window value among the various forwarding devices of the current communication path, and the first bottleneck load level is used to indicate the largest outgoing port load level among the various forwarding devices of the current communication path. The data packet sending module is used to initialize the first bottleneck congestion window value and the first bottleneck load level, and send the first data packet so that each forwarding device of the current communication path updates the first bottleneck congestion window value with the outgoing port congestion window value when the outgoing port congestion window value of the forwarding device is smaller than the first bottleneck congestion window value, and updates the first bottleneck load level with the outgoing port load level when the outgoing port load level of the forwarding device is larger than the first bottleneck load level. The acknowledgment message receiving module is used to receive a first acknowledgment message; wherein, the first acknowledgment message is generated by the receiving device based on the first bottleneck congestion window value and the first bottleneck load level in the first data message; The routing module is used to perform routing processing based on the first bottleneck congestion window value and the first bottleneck load level in the first confirmation message.
[0009] Optionally, the switching module is specifically used for: Based on the first bottleneck congestion window value and the first bottleneck load level in the first confirmation message, a switch to the current communication path is determined; Determine the target communication path from multiple candidate communication paths; Switch the current communication path to the target communication path.
[0010] Optionally, the switching module is specifically used for: The current available bandwidth of the current communication path is determined based on the first bottleneck congestion window value and the first bottleneck load level in the first confirmation message. If the currently available bandwidth is less than the required bandwidth, then a switch to the current communication path is determined.
[0011] Optionally, the switching module is specifically used for: Multiple probe messages are generated for the multiple candidate communication paths, each probe message having a second bottleneck congestion window value and a second bottleneck load level. The second bottleneck congestion window value is used to indicate the minimum outgoing port congestion window value among the forwarding devices of the candidate communication path corresponding to the probe message, and the second bottleneck load level is used to indicate the maximum outgoing port load level among the forwarding devices of the candidate communication path corresponding to the probe message. Initialize the second bottleneck congestion window value and the second bottleneck load level, and send the probe message so that each forwarding device of the candidate communication path updates the second bottleneck congestion window value with the outgoing port congestion window value when the outgoing port congestion window value of the forwarding device is smaller than the second bottleneck congestion window value, and updates the second bottleneck load level with the outgoing port load level when the outgoing port load level of the forwarding device is larger than the second bottleneck load level. Receive a probe confirmation message; wherein the probe confirmation message is generated by the receiving device based on the second bottleneck congestion window value and the second bottleneck load level in the probe message; Based on the second bottleneck congestion window value and the second bottleneck load level in the detection confirmation message, the target communication path is determined from the plurality of candidate communication paths.
[0012] Optionally, the multiple detection messages are sent in multiple batches; the switching module is specifically used for: For the detection confirmation messages received in the current batch, perform the following processing: Based on the second bottleneck congestion window value and the second bottleneck load level in the probe confirmation message, the predicted available bandwidth of the candidate communication path corresponding to the probe confirmation message is predicted. Candidate communication paths whose predicted available bandwidth is greater than or equal to the required bandwidth are identified as filtered communication paths. In the filtered communication paths, the target communication path is determined based on the second bottleneck load level; If the target communication path is not determined in the current batch, the target communication path is determined in the next batch of the current batch, until all batches have been traversed.
[0013] Optionally, the switching module is specifically used for: If the target communication path is not determined after traversing the multiple batches, then the candidate communication path corresponding to the probe confirmation message with the lowest second bottleneck load in the multiple batches is determined as the target communication path. If the target communication path is not determined after traversing the multiple batches, and the second bottleneck load level in the probe confirmation messages of the multiple batches is equal, then the candidate communication path corresponding to the probe confirmation message with the largest second bottleneck congestion window value in the multiple batches is determined as the target communication path.
[0014] Optionally, the message transmission device further includes a path control module, used for: Different values are configured for the path control field in the plurality of probe messages; wherein, the path control field is a portion of a plurality of routing factor fields, and the plurality of routing factor fields are used to perform routing calculations to obtain the communication path between the sending device and the receiving device; The switching module is specifically used for: Configure a target value for the path control field in the second data packet, so that the second data packet is transmitted through the target communication path; wherein the target value represents the value of the path control field in the probe packet corresponding to the target communication path.
[0015] Optionally, the switching module is specifically used for: The multiple probe messages are alternately transmitted through multiple output ports of the transmitting device; The second data packet is sent through the target output port, so that the second data packet is transmitted through the target communication path; wherein, the target output port refers to the output port through which the sending device sends the probe packet corresponding to the target communication path.
[0016] Optionally, the message transmission device further includes a path mapping module, used for: Configure different values for the probe message identifier field in the plurality of probe messages to identify the corresponding candidate communication path; Based on the value of the probe message identifier field in the probe confirmation message, the candidate communication path corresponding to the probe confirmation message is determined, so as to determine the target communication path among the multiple candidate communication paths according to the second bottleneck congestion window value and the second bottleneck load level in the probe confirmation message.
[0017] Optionally, the message transmission device further includes an adding module for: A current congestion window value is added to the first data packet so that after receiving the first data packet, the forwarding device can determine the egress port congestion window value after receiving the first data packet based on the current congestion window value in the first data packet and the historical egress port congestion window value before receiving the first data packet; wherein, the current congestion window value is used to indicate the congestion window value of the current communication path.
[0018] Optionally, the message transmission device further includes a message type configuration module, used for: Configure a target type value for the message type field in the first data packet, so that when the forwarding device reads that the value of the message type field in the first data packet is the target type value, it reads the probe tag field in the first data packet; The message transmission device further includes a detection tag configuration module, used for: Configure a target flag value for the probe flag field in the first data packet so that when the forwarding device reads that the value of the probe flag field in the first data packet is the target flag value, it performs the following processing: when the outgoing port load level of the forwarding device is greater than the first bottleneck load level and the outgoing port congestion window value of the forwarding device is smaller than the first bottleneck congestion window value, update the first bottleneck load level with the outgoing port load level and update the first bottleneck congestion window value with the outgoing port congestion window value.
[0019] According to one aspect of this disclosure, a message transmission apparatus is provided, applied to any one of a plurality of forwarding devices included in a message transmission network; wherein the message transmission network further includes a sending device and a receiving device, and the sending device and the receiving device form a communication path through the forwarding device; the message transmission apparatus includes: A data packet forwarding module is used to receive a first data packet; wherein the first data packet has a first bottleneck congestion window value and a first bottleneck load level, the first bottleneck congestion window value is used to indicate the smallest outgoing port congestion window value among the forwarding devices of the current communication path, and the first bottleneck load level is used to indicate the largest outgoing port load level among the forwarding devices of the current communication path. The data packet update module is used to update the first bottleneck congestion window value with the outgoing port congestion window value when the outgoing port congestion window value of the forwarding device is smaller than the first bottleneck congestion window value, and to update the first bottleneck load level with the outgoing port load level when the outgoing port load level of the forwarding device is larger than the first bottleneck load level. The data packet forwarding module is further configured to send the first data packet so that the receiving device generates a first acknowledgment packet based on the first bottleneck congestion window value and the first bottleneck load level in the first data packet, and enables the sending device to perform routing processing based on the first bottleneck congestion window value and the first bottleneck load level in the first acknowledgment packet.
[0020] Optionally, the first data packet further includes a current congestion window value, which indicates the congestion window value of the current communication path; the data packet update module is specifically used for: The current congestion window value in the first data packet and the historical outgoing port congestion window value before the first data packet was received are fused to obtain the outgoing port congestion window value after the first data packet was received.
[0021] According to one aspect of this disclosure, a message transmission apparatus is provided, applied to a receiving device in a message transmission network; wherein the message transmission network further includes a sending device and a plurality of forwarding devices, and the sending device and the receiving device form a communication path through the forwarding devices; the message transmission apparatus includes: A data packet receiving module is configured to receive a first data packet; wherein the first data packet has a first bottleneck congestion window value and a first bottleneck load level, the first bottleneck congestion window value is used to indicate the smallest outgoing port congestion window value among all forwarding devices in the current communication path, and the first bottleneck load level is used to indicate the largest outgoing port load level among all forwarding devices in the current communication path; each forwarding device in the current communication path is configured to update the first bottleneck congestion window value with the outgoing port congestion window value when the outgoing port congestion window value of the forwarding device is smaller than the first bottleneck congestion window value, and update the first bottleneck load level with the outgoing port load level when the outgoing port load level of the forwarding device is larger than the first bottleneck load level. The acknowledgment message generation module is used to generate a first acknowledgment message based on the first bottleneck congestion window value and the first bottleneck load level in the first data message; The acknowledgment message sending module is used to send the first acknowledgment message so that the sending device can perform a routing process based on the first bottleneck congestion window value and the first bottleneck load level in the first acknowledgment message.
[0022] According to one aspect of this disclosure, a message transmission system is provided for use in a message transmission network, the message transmission network including a sending device, a receiving device, and multiple forwarding devices, wherein the sending device and the receiving device form a communication path through the forwarding devices; wherein... The transmitting device is configured to generate a first data packet; wherein the first data packet has a first bottleneck congestion window value and a first bottleneck load level, the first bottleneck congestion window value being used to indicate the smallest outgoing port congestion window value among all forwarding devices in the current communication path, and the first bottleneck load level being used to indicate the largest outgoing port load level among all forwarding devices in the current communication path; initialize the first bottleneck congestion window value and the first bottleneck load level, and send the first data packet; receive a first acknowledgment packet; and perform routing processing based on the first bottleneck congestion window value and the first bottleneck load level in the first acknowledgment packet; The forwarding device is configured to receive the first data packet; when the outgoing port congestion window value of the forwarding device is smaller than the first bottleneck congestion window value, the first bottleneck congestion window value is updated with the outgoing port congestion window value; when the outgoing port load level of the forwarding device is larger than the first bottleneck load level, the first bottleneck load level is updated with the outgoing port load level. The receiving device is configured to receive the first data packet; generate the first acknowledgment packet based on the first bottleneck congestion window value and the first bottleneck load level in the first data packet; and send the first acknowledgment packet.
[0023] 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.
[0024] 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. 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 an electronic device, causing the electronic device to perform the message transmission method as described above.
[0025] This disclosure relates to a sending device, a forwarding device, and a receiving device in a message transmission network. For the sending device, a first data packet is generated, a first bottleneck congestion window value and a first bottleneck load level are initialized in the first data packet, and the first data packet is sent, i.e., the first data packet is transmitted through the current communication path. For the forwarding device located on the current communication path, if the outgoing port congestion window value of the forwarding device is smaller than the first bottleneck congestion window value, it is determined that a new bottleneck has appeared in the first bottleneck congestion window value. Therefore, the first bottleneck congestion window value is updated using the outgoing port congestion window value, and the outgoing port load level of the forwarding device is adjusted accordingly. When the load level is greater than the first bottleneck load level, it is determined that a new bottleneck has appeared in the first bottleneck load level. Therefore, the first bottleneck load level is updated with the outgoing port load level. Then, the forwarding device continues to send the first data packet along the current communication path until the first data packet reaches the receiving device. For the receiving device, a first acknowledgment packet is generated based on the first bottleneck congestion window value and the first bottleneck load level in the first data packet. The first acknowledgment packet is then sent to the sending device through the current communication path so that the sending device can perform routing processing based on the first bottleneck congestion window value and the first bottleneck load level in the first acknowledgment packet.
[0026] The outgoing port load level of the forwarding device reflects the busyness of the outgoing port, while the outgoing port congestion window value reflects the data flow contention level (number of data flows) of the outgoing port. Combining these two indicators can comprehensively and accurately reflect the port congestion situation. Based on this, the first bottleneck congestion window value in the first acknowledgment message received by the sending device indicates the smallest outgoing port congestion window value in the current communication path, and the first bottleneck load level in the first acknowledgment message indicates the largest outgoing port load level in the current communication path. Therefore, the congestion situation of the current communication path can be accurately detected based on the first bottleneck congestion window value and the first bottleneck load level in the first acknowledgment message, which facilitates effective routing decisions and effectively solves the congestion problem. At the same time, the outgoing port load level has strong real-time performance, and based on the characteristics of congestion control, the outgoing port congestion window value can also converge in a very short time. Therefore, the embodiments of this disclosure can quickly detect the congestion situation of the current communication path by sending data packets and receiving acknowledgment messages without waiting for multiple consecutive cycles.
[0027] 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
[0028] 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. Figure 1A This is a first architecture diagram of a system to which the message transmission method according to embodiments of this disclosure is applied; Figure 1B This is a second architecture diagram of a system to which the message transmission method according to embodiments of this disclosure is applied; Figure 1C This is a third-architecture diagram of a system for which the message transmission method according to embodiments of this disclosure is applied; Figure 2 This is a schematic diagram illustrating the application of the message transmission method according to the embodiments of this disclosure in a data center network scenario; Figure 3 This is a schematic diagram illustrating the application of the message transmission method according to the embodiments of this disclosure to a Redis data service scenario; Figure 4 This is a schematic diagram illustrating the application of the message transmission method according to the embodiments of this disclosure to a cloud disk storage scenario; Figure 5 This is a general flowchart of a message transmission method according to an embodiment of the present disclosure; Figure 6 This is a schematic diagram of the current communication path in the data center network; Figure 7 This is a diagram illustrating message transmission via the current communication path; Figure 8 yes Figure 5 A detailed flowchart of step 580; Figure 9 yes Figure 8 A detailed flowchart of step 810; Figure 10 yes Figure 8 A detailed flowchart of step 820; Figure 11 This is a schematic diagram of multiple candidate communication paths between the sending and receiving devices; Figure 12 yes Figure 10 A detailed flowchart of step 1080; Figure 13 Based on Figure 10 A flowchart for implementing path control; Figure 14 This is a schematic diagram of routing operations based on quintuples; Figure 15 This is a schematic diagram of obtaining probe messages by incrementing the source port number; Figure 16 Based on Figure 13 A flowchart illustrating how to lock the first hop of a probe message by using the output port of the sending device; Figure 17 Based on Figure 10 A flowchart for determining the candidate communication path corresponding to the probe confirmation message; Figure 18 Based on Figure 5 A flowchart for determining the congestion window value of an output port; Figure 19 Based on Figure 5 A flowchart for implementing enable detection; Figure 20 This is a fourth architecture diagram of a system for which the message transmission method according to embodiments of this disclosure is applied; Figure 21 This is a schematic diagram of an adaptive routing module in a server; Figure 22 It is a flowchart of the server's workflow; Figure 23 This is a schematic diagram of the message format of the first data message and the first acknowledgment message; Figure 24 This is a schematic diagram of the message format for probe messages and probe confirmation messages; Figure 25 This is a schematic diagram of a switch implementing load feedback; Figure 26 This is a schematic diagram of obtaining a probe message by incrementing the source port number and the probe sequence number; Figure 27 This is a schematic diagram of iterative detection in multiple batches; Figure 28 This is a diagram illustrating how a server selects a target communication path. Figure 29 This is another diagram illustrating how the server selects the target communication path; Figure 30 This is a diagram illustrating path switching in a data center network. Figure 31 This is a schematic diagram comparing the experimental results of the embodiments of this disclosure with related technologies; Figure 32This is another schematic diagram comparing the experimental results of the embodiments of this disclosure with related technologies; Figure 33 This is a module block diagram of a message transmission apparatus applied to a transmitting device according to an embodiment of the present disclosure; Figure 34 This is a block diagram of a message transmission apparatus applied to a forwarding device according to an embodiment of the present disclosure; Figure 35 This is a block diagram of a message transmission apparatus applied to a receiving device according to an embodiment of the present disclosure; Figure 36 It is implemented according to the embodiments of this disclosure. Figure 5 The terminal structure diagram of the message transmission method shown; Figure 37 It is implemented according to the embodiments of this disclosure. Figure 5 The diagram shows the structure of a forwarding device for the message transmission method shown. Figure 38 It is implemented according to the embodiments of this disclosure. Figure 5 The server structure diagram for the message transmission method shown is illustrated. Detailed Implementation 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.
[0029] 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: 1) Message transmission network: This generally refers to a network architecture that includes sending devices, receiving devices, and multiple forwarding devices. For example, a message transmission network can be a data center network. A data center network is an infrastructure used to provide network, storage, and computing resources to support enterprises or data center tenants in performing a wide range of workloads. The core components of a data center network include multiple servers and multiple switches, where servers are used as sending or receiving devices, and switches are used as forwarding devices.
[0030] 2) Congestion Control: By detecting congestion in the communication path and dynamically adjusting the transmission rate of the sending end (sending device), excessive data injection into the communication path can prevent overload of forwarding devices. In the congestion control algorithm, a congestion window (cwnd) is maintained for each communication connection. The congestion window determines the maximum amount of data the sending end can transmit within a round-trip time (RTT). The size (value) of the congestion window is dynamically adjusted based on the current congestion level of the communication path. If the communication path becomes more congested, the congestion window value decreases; if the communication path becomes smoother, the congestion window value increases. It is worth noting that while the congestion control algorithm has the ability to detect congestion in the communication path, the embodiments of this disclosure can detect congestion in the communication path more accurately and comprehensively based on the congestion control algorithm.
[0031] 3) Equal Cost Multi Path (ECMP): This is a technique that selects multiple equivalent communication paths in a message transmission network and distributes traffic across these paths to achieve load balancing and network redundancy.
[0032] 4) Communication connection: refers to the communication connection between the sending device and the receiving device.
[0033] 5) Communication path: refers to the combination of a series of forwarding devices and links that the transmitting device and the receiving device must pass through to transmit messages.
[0034] In message transmission networks, equal-cost multipath routing hash algorithms are widely used for routing, selecting one communication path from multiple equivalent paths for message transmission. However, in real-world message transmission networks, hash polarization inevitably occurs to some extent, where multiple data streams transmit through the same communication path, causing congestion and resulting in significantly lower throughput than ideal. Therefore, there is a need to detect congestion on communication paths.
[0035] To address this need, the relevant technologies mainly provide the following two solutions: 1) The native Transmission Control Protocol (TCP) scheme. For TCP connections, congestion control algorithms detect the congestion status of the current communication path and adjust the congestion window value. This means that TCP connections have to endure low throughput caused by congestion, even if there are other communication paths in the network that are idle. In addition, the congestion status detected by the congestion control algorithm is too one-sided and cannot effectively reflect the real situation.
[0036] 2) PLB Scheme. The PLB scheme is applied to TCP connections in IPv6 networks. On one hand, the routing hash algorithm of the switch is configured to include the Flow Label field in the IPv6 header as a hash factor field (routing factor field). On the other hand, the code of the server's TCP protocol stack is modified to allow the server to count the number of ECN signals. For a certain communication path, if a certain number of ECN signals are counted in several consecutive periods, it is determined that the communication path is congested. Then, the server will randomly modify the Flow Label field in the IPv6 header to achieve random routing. However, the PLB scheme has the following problems: it requires a certain period of time to detect congestion on the communication path, which is typically at least tens to hundreds of RTTs, or 1 to 10 ms in data center networks; the communication path obtained after random routing may still pass through congestion points (bottlenecks), requiring another waiting period before random routing can be performed again. Therefore, the PLB scheme often requires multiple random routing attempts to find a relatively free communication path. In addition, due to hash polarization, there is a probability that even after a large number of random routing attempts, a sufficiently free communication path cannot be found; the number of ECN signals is closely related to the congestion control algorithm used and the configuration of the message transmission network, such as Data Center Quantized Congestion Notification. The Notification (DCQCN) algorithm differs greatly from other ECN-based algorithms in the number of ECNs generated in steady state. The DCQCN algorithm generates a very low percentage of steady-state ECNs (e.g., 1%), and may not even generate the number of ECNs required for PLB to detect congestion, even in severe congestion scenarios. In addition, the uncertainty of ECN signals is very high, and it is difficult to guarantee that there will be more than a certain number of ECN signals in multiple consecutive cycles. For example, packet loss may prevent the counting of ECN signals.
[0037] Both of the above approaches are prone to causing long-term congestion in the communication path, thereby affecting message transmission efficiency. Modern message transmission networks are very sensitive to message throughput and latency. A decrease in throughput will directly reduce the input output per second (IOPS) of the application layer, and the increased latency caused by congestion may significantly increase service latency. Both throughput degradation and latency degradation may violate service commitment terms.
[0038] In response to this, embodiments of this disclosure provide a message transmission method, apparatus, electronic device, computer-readable storage medium, and computer program product that can quickly and accurately detect congestion in the communication path and achieve timely route switching, thereby helping to improve message transmission efficiency.
[0039] System architecture and scenario description of the embodiments disclosed herein Figure 1A This is a first system architecture diagram of the message transmission method provided in this embodiment of the disclosure, which includes a terminal 130, a forwarding device 120, a server 110, etc.
[0040] Terminal 130 can take various forms, including desktop computers, laptops, personal digital assistants (PDAs), mobile phones, in-vehicle terminals, and dedicated terminals. Furthermore, it can be a single device or a collection of multiple devices. For example, multiple desktop computers connected via a local area network, sharing a single monitor, can work collaboratively to form a single terminal 130. Terminal 130 can communicate with relay device 120 via wired or wireless means to exchange data.
[0041] Server 110 refers to a computer system capable of providing certain services to terminal 130. Compared to ordinary terminal 130, 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). Server 110 can also communicate with forwarding device 120 via wired or wireless means to exchange data.
[0042] Forwarding device 120 is used to realize message transmission between different network nodes (network nodes refer to terminal 130 or server 110) in the message transmission network. Forwarding device 120 typically has multiple ports, through which multiple network nodes can be connected. These ports can be physical ports or virtual ports. Forwarding device 120 can be a switch or router, or other device capable of receiving and forwarding messages. Messages sent from terminal 130 to server 110 must reach the corresponding server 110 through forwarding device 120; messages sent from server 110 to terminal 130 must also reach the corresponding terminal 130 through forwarding device 120. Figure 1A In this configuration, terminal 130 can be used as a sending device and server 110 can be used as a receiving device; or, server 110 can be used as a sending device and terminal 130 can be used as a receiving device, without any limitation.
[0043] Figure 1B This is a second system architecture diagram for the message transmission method provided in this embodiment of the disclosure. It includes a forwarding device 120 and a server 110, etc., wherein some servers 110 are used as sending devices and other servers 110 are used as receiving devices.
[0044] Figure 1C This is a third system architecture diagram for the message transmission method provided in this embodiment of the disclosure. It includes a terminal 130 and a server 110, wherein some terminals 130 are used as sending devices and other terminals 130 are used as receiving devices.
[0045] The embodiments disclosed herein can be applied in various scenarios, such as Figure 2 The data center network scenario shown is as follows: Figure 3 The Redis data service scenario shown, and such as Figure 4 The cloud disk storage scenario shown.
[0046] (a) Data center network scenario.
[0047] Data center networks typically use a Clos / Fat-tree architecture (Layer 3 or Layer 2 switches), such as Figure 2 As shown, a data center network has three layers of switches: access layer (Leaf), aggregation layer (Spine), and core layer (Core). The data center network also includes a host layer, where servers act as sending or receiving devices, and the Layer 3 switches act as forwarding devices. An access layer switch and all its downstream servers are collectively called a rack; for example, access layer switches L0 and L1 and their downstream servers H0 and H1 together form rack 0. An access layer switch, all its upstream aggregation layer switches, and all its downstream servers are collectively called a network module (Pod); for example, access layer switches L0, L1, L2, and L3, along with their upstream aggregation layer switches S0, S1, S2, and S3 and their downstream servers H0, H1, H2, and H3, together form network module 0. It is worth noting that in a data center network, to increase communication bandwidth and connection reliability between servers, servers can connect to different access layer switches via multiple links, for example... Figure 2 In this configuration, server H0 is connected to access layer switch L0 through one outgoing port and to access layer switch L1 through another outgoing port. The outgoing port of the server is the network port.
[0048] by Figure 2 Taking the example of servers H0 and H4 having a communication connection and the current communication path being H0-L0-S0-C0-S4-L4-H4, we can illustrate two solutions provided by related technologies. In this case, server H0 is used as a sending device and server H4 is used as a receiving device. The symbol "-" indicates a physical link. For example, "H0-L0" means that server H0 and access layer switch L0 are connected through a physical link.
[0049] 1) Native TCP Scheme. In the native TCP scheme, server H0, acting as the sending device, uses a congestion control algorithm to detect the congestion status of the current communication path H0-L0-S0-C0-S4-L4-H4. If server H0 detects congestion, it will reduce the congestion window size accordingly, but will not switch routes (TCP connections can only switch routes after being disconnected and re-established). This forces the TCP connection between servers H0 and H4 to endure low throughput due to congestion, even if other communication paths in the data center network are idle. Furthermore, the congestion detected by the congestion control algorithm is too one-sided and cannot effectively reflect the true situation.
[0050] 2) PLB Scheme. In the PLB scheme, for the current communication path H0-L0-S0-C0-S4-L4-H4, if server H0, acting as the sending device, detects a certain number of ECN signals over multiple consecutive periods, then the current communication path H0-L0-S0-C0-S4-L4-H4 is considered congested. However, this results in a delay in detecting the congestion on the communication path, typically on the order of 1-10ms in data center networks. During this time, the current communication path remains congested. Furthermore, the number of ECN signals is closely related to the congestion control algorithm used and the configuration of the message transmission network. Relatedly, the DCQCN algorithm differs greatly from other ECN-based algorithms in the number of ECNs generated in steady state. The DCQCN algorithm generates a very low proportion of steady-state ECNs (e.g., 1%), and even in severe congestion scenarios, it may not generate enough ECNs for the PLB to detect congestion. This means that even if the current communication path H0-L0-S0-C0-S4-L4-H4 is congested, the server H0 may not be able to detect it. In addition, the uncertainty of ECN signals is very high, and it is difficult to guarantee that there will be more than a certain number of ECN signals in multiple consecutive periods. For example, packet loss may prevent the server H0 from counting a sufficient number of ECN signals.
[0051] By using the message transmission method provided in this embodiment, server H0 generates a first data packet, initializes the first bottleneck congestion window value and the first bottleneck load level in the first data packet, and sends the first data packet to server H4 through the current communication path H0-L0-S0-C0-S4-L4-H4. That is, the first data packet will arrive at access layer switch L0, aggregation layer switch S0, core layer switch C0, aggregation layer switch S4, and access layer switch L4 in sequence. Each switch will perform the following processing: when the outgoing port congestion window value of the switch is smaller than the first bottleneck congestion window value, the first bottleneck congestion window value is updated with the outgoing port congestion window value; when the outgoing port load level of the switch is larger than the first bottleneck load level, the first bottleneck load level is updated with the outgoing port load level. After receiving the first data packet, server H4 generates a first acknowledgment message based on the first bottleneck congestion window value and the first bottleneck load level in the first data packet. This first acknowledgment message is then sent to server H0 via the current communication path H0-L0-S0-C0-S4-L4-H4. Specifically, the first acknowledgment message will sequentially reach access layer switch L4, aggregation layer switch S4, core layer switch C0, aggregation layer switch S0, and access layer switch L0. Upon receiving the first acknowledgment message, server H0 can detect the congestion status of the current communication path H0-L0-S0-C0-S4-L4-H4 based on the first bottleneck congestion window value and the first bottleneck load level in the first acknowledgment message, and promptly perform routing switching. For example, it can switch the current communication path H0-L0-S0-C0-S4-L4-H4 to a less congested target communication path H0-L1-S1-C2-S5-L5-H4, thereby improving packet transmission efficiency. In this embodiment, by combining the first bottleneck congestion window value and the first bottleneck load level, the congestion status of the current communication path can be accurately detected, facilitating accurate routing decisions and effectively resolving congestion issues. Simultaneously, the outgoing port load level and the outgoing port congestion window value are maintained by the switch itself. The outgoing port load level can be collected in real time, ensuring accuracy, and the outgoing port congestion window value can converge (reach steady state) within a very short time (e.g., 1-2 RTTs). Therefore, by sending data packets and receiving acknowledgment packets, the congestion status of the current communication path can be quickly detected, unlike the PLB scheme which requires waiting for multiple consecutive cycles.
[0052] (ii) Redis data service scenario.
[0053] like Figure 3The diagram illustrates a terminal 340, an overlay network 330, a proxy server 320, and a base network 310 (message transmission network). The base network 310 is an underlay network, meaning it's a network established directly at the physical layer; for example, it could be a data center network. The overlay network 330 is an overlay network, created using virtualization technology. The proxy server 320 facilitates communication between the base network 310 and the overlay network 330. The overlay network 330, proxy server 320, and base network 310 work together to provide Redis data services to the terminal 340. The overlay network 330 can be considered the front end of the Redis database, offering advantages in flexibility, security, and virtualization technology, thus meeting the external access and connection requirements of the Redis data service. The base network 310 can be considered the back end of the Redis database, focusing on high performance and stability to ensure the Redis data service can efficiently process data and provide services externally.
[0054] If the solutions provided by related technologies are applied in the basic network 310, problems such as terminal 340 request timeout and data loss will occur, which will seriously affect the availability and performance of Redis data services. For application scenarios that require high reliability and low latency (such as real-time data analysis and online transaction processing), the decline in service quality may lead to serious business losses. In addition, the basic network 310 and the overlay network 330 cannot exert their full performance, which can easily lead to a waste of computing resources.
[0055] If the message transmission method provided in this embodiment is applied to the basic network 310, the congestion problem faced by the basic network 310 can be solved quickly and effectively, giving full play to the performance of the basic network 310 itself, without limiting the performance of the overlay network 330; it can achieve efficient data processing, ensure high availability and timely feedback of Redis data services, and avoid serious business losses.
[0056] (III) Cloud disk storage scenario.
[0057] like Figure 4The diagram illustrates a terminal 420 and a basic network 410 (message transmission network). The basic network 410 is an underground network, meaning it's a network established directly at the physical layer; for example, it could be a data center network. The basic network 410 provides cloud disk storage services to the terminal 420. These cloud disk storage services support data creation, deletion, modification, and retrieval. For instance, in response to a data storage request initiated by the terminal 420, the basic network 410 stores the data carried in the data storage request. Alternatively, in response to a data read request initiated by the terminal 420, the basic network 410 retrieves the required data from its stored data and sends the retrieved data to the terminal 420.
[0058] If the solution provided by the relevant technology is applied in the basic network 410, the requests initiated by the terminal 420 may not be processed in a timely manner or may even fail to be processed, which will seriously affect the service quality and availability of cloud disk storage services.
[0059] If the message transmission method provided in this embodiment is applied in the basic network 410, the basic network 410 can quickly respond to the request initiated by the terminal 420, achieve more effective data balancing, and improve the service quality and availability of cloud disk storage services; at the same time, it also helps to improve the flexibility and scalability of cloud disk storage services, and provides strong support for functions such as online expansion and contraction.
[0060] It is worth noting that the examples above only illustrate 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.
[0061] General Description of Embodiments in this Disclosure According to one embodiment of this disclosure, a message transmission method is provided. This method is applied to a message transmission network, which generally refers to a network architecture including a sending device, a receiving device, and multiple forwarding devices. For example, a message transmission network can be as follows: Figure 2 The data center network shown is as follows: A sending device is an electronic device used to send messages to a receiving device and receive acknowledgments from the receiving device; a sending device can be a terminal or a server. A receiving device is an electronic device used to receive messages from a sending device and send acknowledgments back to the sending device; a receiving device can be a terminal or a server. A forwarding device is an electronic device capable of receiving and forwarding messages; for example, a forwarding device can be a switch or a router.
[0062] The message transmission method provided in this disclosure can be implemented collaboratively by a sending device, a forwarding device, and a receiving device, and will combine... Figure 5 Please provide an explanation.
[0063] like Figure 5 As shown, a message transmission method according to an embodiment of this disclosure includes: Step 510: The sending device generates a first data packet; wherein the first data packet has a first bottleneck congestion window value and a first bottleneck load level, the first bottleneck congestion window value is used to indicate the smallest outgoing port congestion window value among the forwarding devices in the current communication path, and the first bottleneck load level is used to indicate the largest outgoing port load level among the forwarding devices in the current communication path. Step 520: The transmitting device initializes the first bottleneck congestion window value and the first bottleneck load level; Step 530: The sending device sends the first data packet; Step 540: When the congestion window value of the forwarding device's output port is smaller than the first bottleneck congestion window value, the forwarding device updates the first bottleneck congestion window value with the output port congestion window value; when the load level of the forwarding device's output port is greater than the load level of the first bottleneck, the forwarding device updates the load level of the first bottleneck with the load level of the output port. Step 550: The forwarding device sends the first data packet; Step 560: The receiving device generates a first acknowledgment message based on the first bottleneck congestion window value and the first bottleneck load level in the first data packet; Step 570: The receiving device sends the first confirmation message; Step 580: The sending device performs a routing process based on the first bottleneck congestion window value and the first bottleneck load level in the first confirmation message.
[0064] Steps 510-580 are described in detail below.
[0065] In step 510, the sending device generates a first data packet; wherein the first data packet has a first bottleneck congestion window value and a first bottleneck load level, the first bottleneck congestion window value is used to indicate the smallest outgoing port congestion window value among the various forwarding devices in the current communication path, and the first bottleneck load level is used to indicate the largest outgoing port load level among the various forwarding devices in the current communication path.
[0066] After the sending device has established a communication connection with the receiving device, and this communication connection uses a certain communication path (named the current communication path) for message transmission, the sending device generates a data packet. In the payload field of the data packet, it adds the service data to be transmitted. This service data refers to the data that the sending device expects the receiving device to process; for example, it could be data that the sending device expects the receiving device to store, or data that the sending device expects the receiving device to calculate. There are no restrictions on this. For ease of distinction, the data packet generated by the sending device here is named the first data packet.
[0067] The first data packet, in addition to the traditional packet format, defines a bottleneck congestion window value field and a bottleneck load level field. The bottleneck congestion window value field contains the first bottleneck congestion window value, which indicates the smallest outgoing port congestion window value among all forwarding devices in the current communication path. The bottleneck load level field contains the first bottleneck load level, which indicates the largest outgoing port load level among all forwarding devices in the current communication path. These bottleneck congestion window value and bottleneck load level fields are non-payload fields and can be located in the header of the first data packet, such as a custom header or a transport layer header; there are no restrictions on their location.
[0068] In step 520, the transmitting device initializes the first bottleneck congestion window value and the first bottleneck load level.
[0069] After generating the first data packet, the transmitting device initializes the first bottleneck congestion window value and the first bottleneck load level in the first data packet to reserve update space for each forwarding device in the current communication path, ensuring the accuracy of the first bottleneck congestion window value and the first bottleneck load level in the first data packet ultimately received by the receiving device. For example, the transmitting device can initialize the first bottleneck congestion window value to the maximum congestion window value and the first bottleneck load level to 0. This initialization essentially assumes that there is no data flow transmission in the current communication path. The maximum congestion window value is the bandwidth-delay product (BDP) of the current communication path, which represents the maximum amount of data that the current communication path can accommodate within one RTT.
[0070] It is worth noting that data streams are generated by communication connections, and each active communication connection (referring to a communication connection that is currently transmitting messages) can generate a data stream.
[0071] In step 530, the transmitting device sends a first data packet.
[0072] The transmitting device sends a first data packet, that is, transmits the first data packet through the current communication path. For ease of explanation, the embodiments of this disclosure... Figure 2 Based on this, it provides such as Figure 6 The diagram shown illustrates a data center network. Figure 6 In this process, the sending device is server H0 and the receiving device is server H4. The two transmit messages through the current communication path H0-L0-S0-C0-S4-L4-H4. Based on this, server H0 first sends the first data packet to access layer switch L0.
[0073] In step 540, when the congestion window value of the forwarding device's output port is smaller than the first bottleneck congestion window value, the forwarding device updates the first bottleneck congestion window value with the output port congestion window value; when the load level of the forwarding device's output port is greater than the load level of the first bottleneck, the forwarding device updates the load level of the first bottleneck with the output port load level.
[0074] In a packet transmission network, forwarding devices maintain outgoing port congestion window values and outgoing port load levels for their own outgoing ports. The outgoing port congestion window value is a statistical value of the congestion window values of packets (which can be data packets or both data packets and probe packets) flowing through the outgoing port within a certain period of time (this period can be arbitrarily set). The statistical method can be averaged or the minimum value is taken. The outgoing port load level can be measured by indicators such as outgoing port utilization rate. Outgoing port utilization rate indicates the utilization rate of bandwidth by the outgoing port. For example, an outgoing port utilization rate of 60% means that 60% of the bandwidth is occupied. These indicators can be detected by the forwarding device itself. In one embodiment of this disclosure, the forwarding device can maintain an outgoing port congestion window value and an outgoing port load level for each of its outgoing ports. These outgoing ports include those connected to other electronic devices (such as transmitting devices, receiving devices, or other forwarding devices), and may also include idle outgoing ports not connected to any electronic devices. The forwarding device can also maintain the outgoing port congestion window value and outgoing port load level only for outgoing ports connected to other electronic devices, thereby avoiding the resource waste caused by maintaining the outgoing port congestion window value and outgoing port load level for idle outgoing ports. The forwarding device can also maintain the outgoing port congestion window value and outgoing port load level only for outgoing ports used to send data packets or probe packets, thereby further saving computing resources. The reason is that network traffic is asymmetrical, and the amount of data sent by the transmitting device to the receiving device is often greater than the amount of data sent by the receiving device to the transmitting device. Therefore, the congestion situation from the transmitting device to the receiving device can be mainly focused on. Based on this, the forwarding device can maintain the outgoing port congestion window value and outgoing port load level only for outgoing ports used to send data packets or probe packets.
[0075] For a forwarding device located on the current communication path, after receiving the first data packet, it firstly reads the first bottleneck congestion window value and the first bottleneck load level from the first data packet; secondly, it determines the output port used to send the first data packet from among the multiple output ports of the forwarding device, and further determines the output port congestion window value and output port load level maintained for that output port. Then, the forwarding device independently makes judgments based on the first bottleneck congestion window value and the first bottleneck load level: 1) When the outgoing port congestion window value is smaller than the first bottleneck congestion window value, it proves that the outgoing port congestion window value constitutes a new bottleneck. Therefore, the first bottleneck congestion window value is updated with the outgoing port congestion window value. When the outgoing port congestion window value is greater than or equal to the first bottleneck congestion window value, the first bottleneck congestion window value is kept unchanged.
[0076] 2) When the load level of the output port is greater than the load level of the first bottleneck, it proves that the load level of the output port constitutes a new bottleneck. Therefore, the load level of the first bottleneck is updated with the load level of the output port. When the load level of the output port is less than or equal to the load level of the first bottleneck, the load level of the first bottleneck remains unchanged.
[0077] by Figure 6 For example, after receiving the first data packet, access layer switch L0 reads the first bottleneck congestion window value and the first bottleneck load level from the first data packet. Here, the first bottleneck congestion window value and the first bottleneck load level in the first data packet are obtained by server H0 initialization. For example, the first bottleneck congestion window value in the first data packet is 128, and the first bottleneck load level in the first data packet is 0. On the other hand, it determines the output port used to send the first data packet among the multiple output ports of access layer switch L0, and further determines the output port congestion window value and output port load level maintained for that output port. For example, the output port used to send the first data packet is output port 9 (referring to the port number as 9), and the output port congestion window value of output port 9 of access layer switch L0 is 64, and the output port load level of output port 9 of access layer switch L0 is 60%. Since the congestion window value of port 9 of access layer switch L0 is 64, which is less than the first bottleneck congestion window value of 128 in the first data packet, the first bottleneck congestion window value in the first data packet is updated from 128 to 64. Since the load level of port 9 of access layer switch L0 is 60%, which is greater than the first bottleneck load level of 0 in the first data packet, the first bottleneck load level in the first data packet is updated from 0 to 60%.
[0078] Then, after receiving the first data packet, the aggregation layer switch S0 reads the first bottleneck congestion window value and the first bottleneck load level from the first data packet. Simultaneously, it determines the output port used to send the first data packet from among the multiple output ports of the aggregation layer switch S0, and further determines the output port congestion window value and output port load level maintained for that output port. For example, the output port used to send the first data packet is output port 1, and the output port congestion window value of output port 1 of the aggregation layer switch S0 is 32, and the output port load level of output port 1 of the aggregation layer switch S0 is 100%. Since the output port congestion window value of output port 1 of the aggregation layer switch S0, 32, is less than the first bottleneck congestion window value of 64 in the first data packet, the first bottleneck congestion window value in the first data packet is updated from 64 to 32. Since the output port load level of output port 1 of the aggregation layer switch S0, 100%, is greater than the first bottleneck load level of 60% in the first data packet, the first bottleneck load level in the first data packet is updated from 60% to 100%. This improves the accuracy and rationality of updating the first bottleneck congestion window value and the first bottleneck load level in the first data packet, ensuring that the first bottleneck congestion window value in the first data packet is the smallest outgoing port congestion window value among the forwarding devices to which the first data packet has arrived, and that the first bottleneck load level in the first data packet is the largest outgoing port load level among the forwarding devices to which the first data packet has arrived.
[0079] In most cases, the first bottleneck congestion window value and the first bottleneck load level in the first data packet correspond to the same forwarding device. However, it is possible that the first bottleneck congestion window value and the first bottleneck load level in the first data packet correspond to different forwarding devices. Examples will be provided below.
[0080] by Figure 6For example, if the egress port 9 of access layer switch L0, used to send the first data packet, has a load level of 60% and an egress port congestion window value of 64, and the egress port 1 of aggregation layer switch S0, used to send the first data packet, has a load level of 100% and an egress port congestion window value of 128, then after receiving the first data packet, aggregation layer switch S0 will maintain the first bottleneck congestion window value of 64 in the first data packet because the egress port congestion window value of 128 is greater than the first bottleneck congestion window value of 64 in the first data packet; and because the egress port load level of 100% of aggregation layer switch S0 is greater than the first bottleneck load level of 60% in the first data packet, it will update the first bottleneck load level in the first data packet from 60% to 100%. It can be observed that after the first data packet is processed by the aggregation layer switch S0, the first bottleneck congestion window value in the first data packet is actually the congestion window value of the output port 9 of the access layer switch L0, and the first bottleneck load level in the first data packet is actually the load level of the output port 1 of the aggregation layer switch S0.
[0081] For example, the egress port 9 of access layer switch L0, used to send the first data packet, has a load level of 100% and an egress port congestion window value of 128. The egress port 1 of aggregation layer switch S0, used to send the first data packet, has a load level of 60% and an egress port congestion window value of 64. After receiving the first data packet, aggregation layer switch S0 updates the first bottleneck congestion window value in the first data packet from 128 to 64 because the egress port congestion window value of aggregation layer switch S0 (64) is less than the first bottleneck congestion window value of 128 in the first data packet. However, because the egress port load level of aggregation layer switch S0 (60%) is less than the first bottleneck load level of 100%, the first bottleneck load level in the first data packet remains unchanged. It can be observed that after the first data packet is processed by the aggregation layer switch S0, the first bottleneck congestion window value in the first data packet is actually the congestion window value of the output port 1 of the aggregation layer switch S0, and the first bottleneck load level in the first data packet is actually the load level of the output port 9 of the access layer switch L0.
[0082] In step 550, the forwarding device sends the first data packet.
[0083] Here, the forwarding device continues to send the first data packet along the current communication path. The first data packet may reach another forwarding device or the receiving device at the next hop. It is worth noting that the current communication path includes at least one forwarding device. Figure 5 The following explanation uses a forwarding device as an example.
[0084] For ease of understanding, the embodiments of this disclosure are as follows: Figure 6 Based on this, it provides such as Figure 7 The diagram shows a message transmission process. Figure 7 As shown, after receiving the first data packet from server H0, access layer switch L0 forwards the first data packet to aggregation layer switch S0; after receiving the first data packet from access layer switch L0, aggregation layer switch S0 forwards the first data packet to core layer switch C0. This process continues until access layer switch L4 forwards the first data packet to server H4.
[0085] In step 560, the receiving device generates a first acknowledgment message based on the first bottleneck congestion window value and the first bottleneck load level in the first data message.
[0086] After receiving the first data packet, the receiving device generates a first acknowledgment packet (ACK packet) based on the first bottleneck congestion window value and the first bottleneck load level in the first data packet. For example, the receiving device additionally defines a bottleneck congestion window value field and a bottleneck load level field in the first acknowledgment packet. Based on this, the first bottleneck congestion window value in the first data packet is written into the bottleneck congestion window value field of the first acknowledgment packet, and the first bottleneck load level in the first data packet is written into the bottleneck load level field of the first acknowledgment packet.
[0087] In step 570, the receiving device sends a first acknowledgment message.
[0088] The receiving device sends a first acknowledgment message so that the first acknowledgment message can be transmitted through the current communication path. It is worth noting that during the transmission of the first acknowledgment message, the forwarding devices on the current communication path do not update the first bottleneck congestion window value and the first bottleneck load level in the first acknowledgment message. That is, the purpose of the first acknowledgment message is to convey the first bottleneck congestion window value and the first bottleneck load level.
[0089] by Figure 7For example, after receiving the first acknowledgment message from server H4, access layer switch L4 will send the first acknowledgment message to aggregation layer switch S4; after receiving the first acknowledgment message from access layer switch L4, aggregation layer switch S4 will send the first acknowledgment message to core layer switch C0. This process continues until access layer switch L0 sends the first acknowledgment message to server H0.
[0090] In step 580, the sending device performs a routing process based on the first bottleneck congestion window value and the first bottleneck load level in the first confirmation message.
[0091] After receiving the first acknowledgment message, the transmitting device can determine the congestion status of the current communication path based on the first bottleneck congestion window value and the first bottleneck load level in the first acknowledgment message, so as to perform route switching. This route switching process has two meanings: first, determining whether to switch the current communication path; and second, determining which communication path is most suitable to switch to.
[0092] In steps 510-580 above, the sending device generates a first data packet, initializes the first bottleneck congestion window value and the first bottleneck load level in the first data packet, and sends the first data packet, that is, transmits the first data packet through the current communication path; the forwarding device located on the current communication path updates the first bottleneck congestion window value with the outgoing port congestion window value when the outgoing port congestion window value of the forwarding device is smaller than the first bottleneck congestion window value, and updates the first bottleneck load level with the outgoing port load level when the outgoing port load level of the forwarding device is larger than the first bottleneck load level. Then, the forwarding device continues to send the first data packet along the current communication path until the first data packet reaches the receiving device; the receiving device generates a first acknowledgment message based on the first bottleneck congestion window value and the first bottleneck load level in the first data packet, and sends the first acknowledgment message to the sending device through the current communication path, so that the sending device can perform routing processing based on the first bottleneck congestion window value and the first bottleneck load level in the first acknowledgment message.
[0093] The outgoing port load level of the forwarding device reflects the busyness of the outgoing port, while the outgoing port congestion window value reflects the data flow contention level (number of data flows) of the outgoing port. Combining these two indicators can comprehensively and accurately reflect the port congestion situation. Based on this, the first bottleneck congestion window value in the first acknowledgment message received by the sending device indicates the smallest outgoing port congestion window value in the current communication path, and the first bottleneck load level in the first acknowledgment message indicates the largest outgoing port load level in the current communication path. Therefore, the congestion situation of the current communication path can be accurately detected based on the first bottleneck congestion window value and the first bottleneck load level in the first acknowledgment message, which facilitates effective routing decisions and effectively solves the congestion problem. At the same time, the outgoing port load level has strong real-time performance, and based on the characteristics of congestion control, the outgoing port congestion window value can also converge in a very short time. Therefore, the embodiments of this disclosure can quickly detect the congestion situation of the current communication path by sending data packets and receiving acknowledgment messages without waiting for multiple consecutive cycles.
[0094] The above is a general description of steps 510 to 580. Below, we will focus on a more detailed description of the relevant details of step 580.
[0095] Detailed description of step 580 In step 580, the sending device performs a routing process based on the first bottleneck congestion window value and the first bottleneck load level in the first confirmation message.
[0096] After receiving the first acknowledgment message, the sending device can perform route switching based on the first bottleneck congestion window value and the first bottleneck load level in the first acknowledgment message, which can reflect the congestion status of the current communication path as a whole, thereby helping to achieve load balancing in the message transmission network.
[0097] In one embodiment of this disclosure, reference is made to Figure 8 Step 580 includes: Step 810: The sending device determines to switch the current communication path based on the first bottleneck congestion window value and the first bottleneck load level in the first confirmation message; Step 820: The transmitting device determines the target communication path from multiple candidate communication paths; Step 830: Switch the current communication path to the target communication path.
[0098] Steps 810 to 830 are described in detail below.
[0099] In step 810, the sending device determines to switch the current communication path based on the first bottleneck congestion window value and the first bottleneck load level in the first confirmation message.
[0100] After receiving the first acknowledgment message, the sending device determines whether the current communication path is congested based on the first bottleneck congestion window value and the first bottleneck load level in the first acknowledgment message. If the current communication path is congested, it will lead to low message transmission efficiency in the communication connection between the sending and receiving devices, so the sending device decides to switch to the current communication path; if the current communication path is not congested, the sending device decides not to switch to the current communication path, that is, to continue to transmit messages through the current communication path.
[0101] In step 820, the transmitting device determines the target communication path from multiple candidate communication paths.
[0102] A candidate communication path refers to a communication path in the message transmission network that differs from the current communication path. Based on the decision to switch to the current communication path, the sending device determines the target communication path from among multiple candidate paths. For example, the sending device may randomly select one of the multiple candidate communication paths as the target communication path, or determine the target communication path through other means; there are no restrictions on this.
[0103] In one embodiment of this disclosure, a candidate communication path refers to a communication path in the message transmission network that is different from the current communication path but equivalent to the current communication path. Here, "equivalent" means that the different communication paths traverse the same number of forwarding devices (i.e., the same number of hops). Figure 6 For example, the current communication path is H0-L0-S0-C0-S4-L4-H4, which requires passing through five forwarding devices: access layer switch L0, aggregation layer switch S0, core layer switch C0, aggregation layer switch S4, and access layer switch L4. Another communication path is H0-L0-S0-C1-S4-L4-H4, which also requires passing through the same five forwarding devices: access layer switch L0, aggregation layer switch S0, core layer switch C1, aggregation layer switch S4, and access layer switch L4. Since this communication path has the same number of forwarding devices as the current path, it is considered equivalent to the current path and can be selected as a candidate communication path. Considering that equivalent communication paths have similar network characteristics, switching between equivalent communication paths in this way optimizes traffic distribution, allowing traffic to be more evenly distributed throughout the packet transmission network, effectively avoiding overload and bottleneck problems on certain communication paths (such as the current path).
[0104] In step 830, the transmitting device switches the current communication path to the target communication path.
[0105] The communication connection between the sending device and the receiving device originally used the current communication path for message transmission. Here, the sending device switches the current communication path to the target communication path. After the switch, the communication connection between the sending device and the receiving device uses the target communication path for message transmission, such as transmitting the second data message and the second acknowledgment message.
[0106] In steps 810-830 above, the sending device can understand the network status of the current communication path in real time based on the first bottleneck congestion window value and the first bottleneck load level in the first confirmation message, accurately determine whether there is a congestion problem in the current communication path, and make a decision to switch paths when there is a congestion problem in the current communication path, thereby solving the adverse effects of congestion on message transmission. The sending device determines the target communication path from multiple candidate communication paths, which increases the diversity of communication path selection and helps to find a better communication path when the current communication path is congested. The sending device switches the current communication path to the target communication path. Through a smooth switching process, the continuity of message transmission can be ensured, and problems such as data loss or transmission interruption can be avoided as much as possible. At the same time, the message transmission efficiency of the communication connection between the sending device and the receiving device on the target communication path may be improved.
[0107] In one embodiment of this disclosure, reference is made to Figure 9 Step 810 includes: Step 910: The sending device determines the current available bandwidth of the current communication path based on the first bottleneck congestion window value and the first bottleneck load level in the first confirmation message; Step 920: If the available bandwidth is less than the required bandwidth, the sending device determines to switch the current communication path.
[0108] Steps 910 to 920 are described in detail below.
[0109] In step 910, the sending device determines the current available bandwidth of the current communication path based on the first bottleneck congestion window value and the first bottleneck load level in the first confirmation message.
[0110] Here, the current available bandwidth of the current communication path refers to the available bandwidth of the communication connection between the sending device and the receiving device on the current communication path.
[0111] In one embodiment of this disclosure, the formula for calculating the current available bandwidth of the current communication path is as follows: Current available bandwidth of the current communication path = (First bottleneck congestion window value / Maximum congestion window value) First bottleneck load level The total bandwidth of the current communication path, where " / " indicates division. "" indicates multiplication. For example, if the maximum congestion window value is 128, the first bottleneck congestion window value is 64, the first bottleneck load is 100%, and the total bandwidth of the current communication path is 100G, then the currently available bandwidth of the current communication path can be calculated to be 50G. It's worth noting that (maximum congestion window value / first bottleneck congestion window value) represents the number of data streams on the current communication path, and (first bottleneck load) represents the number of data streams on the current bottleneck. The total bandwidth of the current communication path represents the bandwidth shared by these data streams. The above formula is calculated based on the premise that these data streams share the bandwidth equally, and can calculate the current available bandwidth of the current communication path as accurately as possible.
[0112] In step 920, if the currently available bandwidth is less than the required bandwidth, the transmitting device determines to switch the current communication path.
[0113] For the communication connection between the sending and receiving devices, a required bandwidth is pre-set. If the currently available bandwidth of the current communication path is less than the required bandwidth, it proves that the current communication path cannot meet the expected throughput requirements, that is, the current communication path is congested, and therefore the sending device decides to switch to the current communication path. If the currently available bandwidth of the current communication path is greater than or equal to the required bandwidth, it proves that the current communication path can meet the expected throughput requirements, that is, the current communication path is not congested, and therefore the sending device decides not to switch to the current communication path, that is, to continue message transmission through the current communication path.
[0114] In one embodiment of this disclosure, a first threshold and a second threshold are pre-set for the required bandwidth. By comparing a first bottleneck congestion window value with the first threshold and a first bottleneck load level with the second threshold, the relationship between the currently available bandwidth and the required bandwidth is indirectly obtained. For example, if the transmitting device determines that the currently available bandwidth is less than the required bandwidth when the first bottleneck congestion window value is less than the first threshold and the first bottleneck load level is not less than the second threshold, then the currently available bandwidth is determined to be greater than or equal to the required bandwidth; otherwise, the currently available bandwidth is determined to be greater than or equal to the required bandwidth. For example, if the maximum congestion window value is 128, the total bandwidth of the current communication path is 100G, and the required bandwidth is 50G, then the first threshold can be set to 64 and the second threshold to 100%. Based on this, when the first bottleneck congestion window value is less than the first threshold and the first bottleneck load level is not less than the second threshold, it proves that more than two data streams are sharing the 100G bandwidth. If the bandwidth is evenly distributed among these data streams, then the currently available bandwidth of the current communication path is less than 50G. The above method, through numerical comparison, can quickly obtain the relationship between the currently available bandwidth and the required bandwidth, which helps to improve the efficiency of making switching decisions.
[0115] In steps 910-920 above, the sending device can accurately calculate the current available bandwidth of the current communication path based on the first bottleneck congestion window value and the first bottleneck load level in the first confirmation message; if the current available bandwidth is less than the required bandwidth, the sending device determines to switch the current communication path, thereby effectively solving the congestion problem faced in the current communication path and helping to improve message transmission efficiency.
[0116] In one embodiment of this disclosure, reference is made to Figure 10 Step 820 includes: Step 1010: The sending device generates multiple probe messages for multiple candidate communication paths. The probe messages have a second bottleneck congestion window value and a second bottleneck load level. The second bottleneck congestion window value is used to indicate the minimum outgoing port congestion window value among the forwarding devices of the candidate communication path corresponding to the probe message, and the second bottleneck load level is used to indicate the maximum outgoing port load level among the forwarding devices of the candidate communication path corresponding to the probe message. Step 1020: The transmitting device initializes the second bottleneck congestion window value and the second bottleneck load level; Step 1030: The sending device sends multiple probe messages; Step 1040: When the congestion window value of the forwarding device's output port is smaller than the second bottleneck congestion window value, the forwarding device updates the second bottleneck congestion window value with the output port congestion window value; when the load level of the forwarding device's output port is greater than the load level of the second bottleneck, the forwarding device updates the load level of the second bottleneck with the load level of the output port. Step 1050: The forwarding device sends a probe message; Step 1060: The receiving device generates a probe confirmation message based on the second bottleneck congestion window value and the second bottleneck load level in the probe message; Step 1070: The receiving device sends a detection confirmation message; Step 1080: The sending device determines the target communication path from multiple candidate communication paths based on the second bottleneck congestion window value and the second bottleneck load level in the detection confirmation message.
[0117] Steps 1010 to 1080 are described in detail below.
[0118] In step 1010, the sending device generates multiple probe messages for multiple candidate communication paths. The probe messages have a second bottleneck congestion window value and a second bottleneck load level. The second bottleneck congestion window value is used to indicate the minimum outgoing port congestion window value among the forwarding devices of the candidate communication path corresponding to the probe message, and the second bottleneck load level is used to indicate the maximum outgoing port load level among the forwarding devices of the candidate communication path corresponding to the probe message.
[0119] The transmitting device generates multiple probe messages, each used to probe the congestion status of a candidate communication path. That is, each probe message is transmitted through a candidate communication path, such as... Figure 11 As shown. It is worth noting that different probe messages may correspond to different or the same candidate communication paths. In one embodiment of this disclosure, all candidate communication paths can be probed and the target communication path can be determined, thus the determined target communication path is globally optimal; alternatively, a subset of candidate communication paths can be probed and the target communication path can be determined, thus the determined target communication path is locally optimal, which can improve the efficiency of determining the target communication path and also ensure that the target communication path meets the requirements.
[0120] The format of probe messages is similar to that of data messages. Probe messages define a bottleneck congestion window value field and a bottleneck load level field. The bottleneck congestion window value field contains a second bottleneck congestion window value, indicating the minimum outgoing port congestion window value among all forwarding devices in the candidate communication path corresponding to the probe message. The bottleneck load level field contains a second bottleneck load level, indicating the maximum outgoing port load among all forwarding devices in the candidate communication path corresponding to the probe message. Unlike data messages, the payload field of probe messages does not include the service data to be transmitted. For example, the payload field of probe messages can be empty. Alternatively, the payload field can include a specific probe message, which triggers the receiving device to send a probe acknowledgment message.
[0121] In step 1020, the transmitting device initializes the second bottleneck congestion window value and the second bottleneck load level.
[0122] For example, the transmitting device initializes the second bottleneck congestion window value to the maximum congestion window value and initializes the second bottleneck load level to 0. Of course, this does not constitute a limitation on the embodiments of this disclosure.
[0123] In step 1030, the transmitting device sends multiple probe messages.
[0124] Here, the sending device can send multiple probe messages at once, or it can send multiple probe messages in batches.
[0125] In step 1040, when the congestion window value of the forwarding device's output port is smaller than the second bottleneck congestion window value, the forwarding device updates the second bottleneck congestion window value with the output port congestion window value; when the load level of the forwarding device's output port is greater than the load level of the second bottleneck, the forwarding device updates the load level of the second bottleneck with the output port load level.
[0126] The forwarding device in step 1040 refers to the forwarding device located in the candidate communication path. The operation performed by the forwarding device is similar to that in step 540 above, and you can refer to the relevant description of step 540.
[0127] In step 1050, the forwarding device sends multiple probe messages.
[0128] Step 1050 is similar to step 550 above, and you can refer to the relevant description of step 550.
[0129] In step 1060, the receiving device generates a probe confirmation message based on the second bottleneck congestion window value and the second bottleneck load level in the probe message.
[0130] Here, for ease of distinction, the acknowledgment message (ACK message) generated by the receiving device based on the probe message is named the probe acknowledgment message. The second bottleneck congestion window value in the probe acknowledgment message is the same as the second bottleneck congestion window value in the probe message, and the second bottleneck load level in the probe acknowledgment message is the same as the second bottleneck load level in the probe message.
[0131] In step 1070, the receiving device sends multiple detection confirmation messages.
[0132] The probe confirmation message generated based on the probe message will be transmitted along the candidate communication path corresponding to the probe message. For example... Figure 11 As shown, if the probe message 1 generated by the sending device reaches the receiving device along the candidate communication path 1, then the probe confirmation message 1 generated by the receiving device will also reach the sending device along the candidate communication path 1.
[0133] In step 1080, the sending device determines the target communication path from multiple candidate communication paths based on the second bottleneck congestion window value and the second bottleneck load level in the detection confirmation message.
[0134] Here, the transmitting device receives multiple probe acknowledgment messages. For each probe acknowledgment message, the transmitting device can determine the congestion status of the candidate communication path corresponding to the probe acknowledgment message based on the second bottleneck congestion window value and the second bottleneck load level in the probe acknowledgment message. Then, the transmitting device selects the optimal (least congested) candidate communication path from among the multiple candidate communication paths as the target communication path.
[0135] In one embodiment of this disclosure, after the transmitting device sends multiple probe messages, it further includes: If no acknowledgment message is received after a waiting time threshold following the sending of a probe message, the reception of the acknowledgment message will be abandoned.
[0136] For example, if a transmitting device sends probe messages 1 to 10 at once, and within the waiting time threshold after sending, only probe acknowledgment messages corresponding to probe messages 1 to 9 are received, but not the probe acknowledgment message corresponding to probe message 10, then the transmitting device abandons receiving the probe acknowledgment message corresponding to probe message 10 and directly proceeds to step 1080 based on the probe acknowledgment messages corresponding to probe messages 1 to 9. The waiting time threshold can be set according to the actual application scenario, such as setting it to 2 RTTs. In the above method, considering that the candidate communication path traversed by a delayed probe acknowledgment message is likely to be more congested than that traversed by an earlier probe acknowledgment message, and that the delayed probe acknowledgment message is likely to contain invalid information, abandoning the reception of delayed probe acknowledgment messages can avoid long periods of invalid waiting, save computing resources, and help improve the efficiency of route switching.
[0137] In steps 1010-1080 above, the sending device concurrently sends multiple probe messages; the forwarding device updates the second bottleneck congestion window value based on the outgoing port congestion window value and updates the second bottleneck load level based on the outgoing port load level; the receiving device generates a probe acknowledgment message based on the probe messages and sends the probe acknowledgment message to the sending device. Thus, the sending device can accurately detect the congestion status of candidate communication paths based on the second bottleneck congestion window value and the second bottleneck load level in the probe acknowledgment message, facilitating the selection of the optimal candidate communication path as the target communication path from multiple candidate communication paths. Compared to randomly selecting multiple candidate communication paths, this significantly improves the efficiency of message transmission on the target communication path. Simultaneously, the outgoing port load level has strong real-time performance, and based on the characteristics of congestion control, the outgoing port congestion window value can converge in a very short time. Therefore, this embodiment of the present disclosure can quickly detect the congestion status of candidate communication paths by sending probe messages and receiving probe acknowledgment messages, without waiting for multiple consecutive cycles.
[0138] In one embodiment of this disclosure, multiple probe messages are sent in multiple batches, referring to... Figure 12 , Figure 10 The illustrated step 1080 may include: Step 1210: The sending device predicts the predicted available bandwidth of the candidate communication path corresponding to the probe confirmation message based on the second bottleneck congestion window value and the second bottleneck load level in the probe confirmation message of the current batch. Step 1220: The transmitting device will determine the candidate communication paths whose available bandwidth is greater than or equal to the required bandwidth as the filtered communication paths; Step 1230: The sending device determines the target communication path based on the second bottleneck load level among the filtered communication paths; Step 1240: If the target communication path is not determined in the current batch, the sending device determines the target communication path in the next batch of the current batch, until multiple batches have been traversed.
[0139] Steps 1210 to 1240 are described in detail below.
[0140] In step 1210, the sending device predicts the predicted available bandwidth of the candidate communication path corresponding to the probe confirmation message based on the second bottleneck congestion window value and the second bottleneck load level in the probe confirmation message of the current batch.
[0141] The sending device can send multiple probe messages in multiple batches, for example, multiple probe messages can be sent in M batches. The following explanation, using the m-th batch as an example, illustrates the process of determining the target communication path. Here, m and M are both integers greater than 0, and m is less than or equal to M. There is no limit to the number of probe messages to be sent in each batch.
[0142] After sending the m-th batch of probe messages, the transmitting device will receive a probe acknowledgment message corresponding to the m-th batch of probe messages (hereinafter referred to as the m-th batch of probe acknowledgment messages). For each probe acknowledgment message in the m-th batch, the transmitting device predicts the predicted available bandwidth of the candidate communication path corresponding to the probe acknowledgment message based on the second bottleneck congestion window value and the second bottleneck load level in the probe acknowledgment message. The predicted available bandwidth of the candidate communication path refers to the available bandwidth of the communication connection between the transmitting device and the receiving device on the candidate communication path.
[0143] In one embodiment of this disclosure, the predicted available bandwidth of a candidate communication path is calculated using the following formula: Predicted available bandwidth of candidate communication path = (Second bottleneck congestion window value / (Maximum congestion window value + Second bottleneck congestion window value)) Second bottleneck load level Total bandwidth of candidate communication paths + (1 - second bottleneck load level) The total bandwidth of the candidate communication path. For example, if the maximum congestion window is 128, the second bottleneck congestion window is 128, the second bottleneck load is 60%, and the total bandwidth of the candidate communication path is 100G, then the predicted available bandwidth of the candidate communication path can be calculated as 70G. This can be understood as the data flow corresponding to the communication connection between the sending and receiving devices sharing the bandwidth with the original data flow of the candidate communication path for 60% of the time, and the data flow corresponding to the communication connection between the sending and receiving devices exclusively occupying the total bandwidth of the candidate communication path for 40% of the time. The above formula is calculated based on the premise that the data flow in the candidate communication path shares the bandwidth equally, and can predict the predicted available bandwidth of the candidate communication path as accurately as possible.
[0144] In step 1220, the transmitting device will predict candidate communication paths with available bandwidth greater than or equal to the required bandwidth and determine them as the filtered communication paths.
[0145] For the communication connection between the transmitting and receiving devices, a required bandwidth is pre-defined. After obtaining the predicted available bandwidth of the candidate communication paths, if the predicted available bandwidth is greater than or equal to the required bandwidth, the candidate communication path is determined as the filtered communication path.
[0146] For example, the m-th batch probes candidate communication paths 1, 2, 3, and 4. The predicted available bandwidth of candidate communication path 1 is 30G, that of candidate communication path 2 is 40G, that of candidate communication path 3 is 50G, and that of candidate communication path 4 is 60G. The required bandwidth is 50G. Since the predicted available bandwidth of candidate communication path 3 is equal to the required bandwidth, candidate communication path 3 is selected as the filtered communication path. Since the predicted available bandwidth of candidate communication path 4 is greater than the required bandwidth, candidate communication path 4 is selected as the filtered communication path.
[0147] In one embodiment of this disclosure, a third threshold and a fourth threshold are pre-set for the required bandwidth. By comparing the second bottleneck congestion window value with the third threshold and the second bottleneck load level with the fourth threshold, the relationship between the predicted available bandwidth and the required bandwidth is indirectly obtained. For example, if the transmitting device determines that the predicted available bandwidth is less than the required bandwidth when the second bottleneck congestion window value is less than the third threshold and the second bottleneck load level is not less than the fourth threshold, then the predicted available bandwidth is determined to be greater than or equal to the required bandwidth; otherwise, the predicted available bandwidth is determined to be greater than or equal to the required bandwidth. This method, through numerical comparison, can quickly obtain the relationship between the predicted available bandwidth and the required bandwidth, which helps improve the efficiency of screening candidate communication paths.
[0148] In step 1230, the transmitting device determines the target communication path based on the second bottleneck load level among the filtered communication paths.
[0149] If there is only one filtered communication path in the m-th batch, then that filtered communication path is directly determined as the target communication path. If there are multiple filtered communication paths in the m-th batch, then the target communication path is determined based on the second bottleneck load level. For example, the filtered communication path corresponding to the probe acknowledgment message with the lowest second bottleneck load level is determined as the target communication path. In this way, the idle bandwidth of the target communication path is larger than that of other filtered communication paths, and the target communication path can allocate more bandwidth to the data stream corresponding to the communication connection between the sending and receiving devices. If there are multiple filtered communication paths in the m-th batch, and if there are multiple probe acknowledgment messages with the lowest second bottleneck load level in the m-th batch, then the filtered communication path corresponding to the probe acknowledgment message with the largest second bottleneck congestion window value is determined as the target communication path (if there are multiple probe acknowledgment messages with the largest second bottleneck congestion window value, then the filtered communication path corresponding to one of the randomly selected probe acknowledgment messages is determined as the target communication path). In this way, the data stream contention level of the target communication path is lower than that of other filtered communication paths, which is beneficial for the data stream corresponding to the communication connection between the sending and receiving devices to compete for more bandwidth.
[0150] For example, candidate communication path 3 and candidate communication path 4 are obtained through step 1220. For instance, if the second bottleneck load level in the probe confirmation message corresponding to candidate communication path 3 is 50% and the second bottleneck load level in the probe confirmation message corresponding to candidate communication path 4 is 60%, then the filtered communication path corresponding to the probe confirmation message with the smallest second bottleneck load level is determined as the target communication path, that is, candidate communication path 3 is determined as the target communication path.
[0151] In step 1240, if the target communication path is not determined in the current batch, the sending device determines the target communication path in the next batch of the current batch, until multiple batches have been traversed.
[0152] If the target communication path is not determined in the m-th batch (for example, the predicted available bandwidth of all candidate communication paths in the m-th batch is less than the required bandwidth), the sending device continues to send probe messages in the (m+1)-th batch and determines the target communication path in the (m+1)-th batch, until all M batches have been traversed.
[0153] In one embodiment of this disclosure, if the target communication path is not determined in the current batch, the target communication path is determined in the next batch after the current batch, until multiple batches have been traversed, further comprising: If the target communication path is not determined after traversing multiple batches, the candidate communication path corresponding to the probe confirmation message with the lowest second bottleneck load among the multiple batches is determined as the target communication path. If the target communication path is not determined after traversing multiple batches, and the second bottleneck load level is equal in the probe confirmation messages of multiple batches, then the candidate communication path corresponding to the probe confirmation message with the largest second bottleneck congestion window value among the multiple batches is determined as the target communication path.
[0154] After traversing M batches, if the target communication path is still not determined, the candidate communication path corresponding to the probe acknowledgment message with the lowest second bottleneck load among the M batches is identified as the target communication path. This results in a larger idle bandwidth for the target communication path compared to other candidate paths, allowing it to allocate more bandwidth to the data stream corresponding to the communication connection between the sending and receiving devices. If, after traversing M batches, the target communication path is still not determined, and the second bottleneck load is equal in all M batches of probe acknowledgment messages, the candidate communication path corresponding to the probe acknowledgment message with the largest second bottleneck congestion window value among the M batches is identified as the target communication path. This results in lower data stream contention for the target communication path compared to other candidate paths, which is beneficial for the data stream corresponding to the communication connection between the sending and receiving devices to compete for more bandwidth. Furthermore, if, after traversing M batches, the target communication path is still not determined, and the probe acknowledgment message with the lowest second bottleneck load among the M batches includes multiple such messages, the candidate communication path corresponding to the probe acknowledgment message with the largest second bottleneck congestion window value is identified as the target communication path.
[0155] For ease of explanation, a schematic diagram of the detection results is provided as shown in Table 1: Table 1 Schematic diagram of detection results
[0156] In Table 1, Probe Acknowledgment Message 1 refers to the probe acknowledgment message corresponding to Probe Message 1 sent in the first batch. The second bottleneck load level in Probe Acknowledgment Message 1 is 100%, the second bottleneck congestion window value in Probe Acknowledgment Message 1 is 32, and the candidate communication path corresponding to Probe Acknowledgment Message 1 is Candidate Communication Path 1, and so on. In addition, the batch number M in Table 1 is 2.
[0157] For example, if the target communication path is still not determined after traversing two batches according to Table 1, the candidate communication path corresponding to the probe confirmation message with the lowest second bottleneck load recorded in Table 2 is determined as the target communication path. Since the second bottleneck load in all probe confirmation messages recorded in Table 2 is 100%, the candidate communication path corresponding to the probe confirmation message with the largest second bottleneck congestion window value recorded in Table 2 is determined as the target communication path, that is, candidate communication path 8 is determined as the target communication path.
[0158] In steps 1210-1240 above, the sending device sends multiple probe messages in multiple batches, and determines the target communication path in the current batch. If the target communication path is not determined in the current batch, it is determined in the next batch, and so on, until all batches have been traversed. Compared with sending all probe messages at once, this embodiment of the disclosure introduces a batch processing mechanism, which can determine the target communication path more quickly, thereby improving the efficiency of route switching. At the same time, it can avoid network fluctuations and other problems caused by sending a large number of probe messages at once.
[0159] In one embodiment of this disclosure, reference is made to Figure 13 , Figure 10 Following step 1010 shown, the following is also included: Step 1310: The sending device configures different values for the path control field in multiple probe messages; wherein, the path control field is a part of multiple routing factor fields, and the multiple routing factor fields are used to perform routing calculations to obtain the communication path between the sending device and the receiving device; Reference Figure 13 , Figure 10 Step 830 shown can be updated to step 1320: Step 1320: The sending device configures a target value for the path control field in the second data packet, so that the second data packet is transmitted through the target communication path; wherein, the target value represents the value of the path control field in the probe packet corresponding to the target communication path.
[0160] Steps 1310 and 1320 are described in detail below.
[0161] In step 1310, the sending device configures different values for the path control field in the multiple probe messages; wherein, the path control field is a part of the multiple routing factor fields, and the multiple routing factor fields are used to perform routing calculations to obtain the communication path between the sending device and the receiving device.
[0162] First, the routing algorithm is explained. The packets involved in this embodiment include multiple routing factor fields, which are used to perform routing calculations to obtain the communication path between the sending and receiving devices. These routing factor fields can refer to 5-tuples (source IP address, destination IP address, transport layer protocol, source port number, destination port number), 4-tuples (source IP address, destination IP address, source port number, destination port number), 7-tuples (source IP address, destination IP address, transport layer protocol, source port number, destination port number, service type, interface index), etc. In IPv6 networks, the Flow Label field in the IPv6 packet header can also be used as a routing factor field.
[0163] For ease of understanding, this explanation will use an example where multiple routing factor fields refer to quintuples and the routing operation employs a routing hash algorithm. This disclosure provides, for instance, the following embodiments. Figure 14 The diagram shown illustrates the routing operation, which will be explained step-by-step: 1) When a forwarding device receives a message, it determines multiple equivalent communication paths in the message transmission network that can reach the destination IP address based on the destination IP address in the message. It then constructs a candidate outgoing port list based on the candidate outgoing ports (referring to the outgoing ports in the forwarding device) that these communication paths will take, such as [8, 9, 10, 11], where 8 represents the port number of the outgoing port. 2) The forwarding device performs a hash calculation on the five-tuple in the packet to obtain the hash value; 3) The forwarding device performs a modulo operation between the hash value and the length of the candidate outgoing port list to obtain the target index number of the candidate outgoing port list. Then, it determines the target outgoing port corresponding to the target index number in the candidate outgoing port list and sends the packet out through the target outgoing port.
[0164] For example, if the hash value obtained by hashing the 5-tuple in the message is 13, and the length of the candidate outgoing port list [8, 9, 10, 11] is 4, then the target index number obtained by performing the modulo operation is 1. Therefore, the second-ranked outgoing port 9 in the candidate outgoing port list [8, 9, 10, 11] is taken as the target outgoing port. The index number of the candidate outgoing port list starts from 0.
[0165] It's worth noting that routing operations also apply to sending and receiving devices in a message transmission network. For example, after generating a message, the sending device needs to use routing operations to determine which output port to send the message through. Furthermore, the source and destination port numbers in the 5-tuple differ in meaning from the output ports of electronic devices (such as the output ports of forwarding devices). The source and destination port numbers in the 5-tuple are transport layer concepts used to identify specific applications / processes within the transport layer; while the output ports of electronic devices are data link layer concepts used to send messages.
[0166] Figure 14 The diagram also illustrates a hash seed, which is a random number or string used to initialize a hash function (used to perform hash calculations). In embodiments of this disclosure, different hash seeds can be configured for different electronic devices in the message transmission network, and / or different hash functions can be configured for different electronic devices in the message transmission network, thereby introducing differentiation and minimizing hash polarization.
[0167] Based on the routing algorithm described above, after generating multiple probe packets, the sending device configures different values for the path control field in each probe packet. The path control field is a subset of multiple routing factor fields, meaning it participates in the routing calculation. Thus, by sending multiple probe packets, multiple candidate communication paths can be probed. For example, the path control field can be a source port number field, a destination port number field, or a Flow Label field; there are no restrictions on which field to use.
[0168] In one embodiment of this disclosure, the value of the path control field in the probe packet differs from the value of the path control field in the first data packet. Here, the value of the path control field in the first data packet can be changed to obtain the value that needs to be configured for the path control field in the probe packet. The method of change is not limited, such as incrementing or decrementing. Taking the path control field as the source port number field, and the value of the source port number field in the first data packet as 120, 120 can be incremented to obtain 121, 122, 123, etc., and these incremented values can be configured for the path control field in the probe packet, such as... Figure 15 As shown in the diagram. This method avoids generating messages with duplicate values in the path control field, effectively saving computational resources; simultaneously, it enables faster detection of different candidate communication paths.
[0169] In one embodiment of this disclosure, a connection identifier field can be used to identify the communication connection between the sending device and the receiving device. This connection identifier field differs from the routing factor field. Given an established communication connection between the sending and receiving devices, the value of the connection identifier field is identical for all messages generated by the sending device and intended for transmission to the receiving device. This ensures that messages can be successfully transmitted from the sending device to the receiving device. The location of the connection identifier field is not limited; for example, it can be located in a custom header of the message. In this approach, using a connection identifier field instead of a routing factor field to identify the communication connection between the sending and receiving devices ensures that even if multiple probe messages have different values for their path control fields, all probe messages will successfully reach the receiving device.
[0170] In step 1320, the sending device configures a target value for the path control field in the second data packet, so that the second data packet is transmitted through the target communication path; wherein, the target value represents the value of the path control field in the probe packet corresponding to the target communication path.
[0171] After the transmitting device has determined the target communication path from multiple candidate communication paths, it sets the value of the path control field in the probe message corresponding to the target communication path as the target value. Then, the transmitting device configures the target value for the path control field in the second data message, enabling the second data message to be transmitted through the target communication path, thereby achieving the switch from the current communication path to the target communication path.
[0172] In steps 1310 and 1320 above, path control is implemented through the path control field in the message, which is relatively simple to operate and can improve the efficiency of path detection and path switching. For example, different values can be configured for the path control field in multiple probe messages, thereby probing multiple candidate communication paths by sending multiple probe messages; or, for example, a target value can be configured for the path control field in the second data message, so that the second data message is transmitted through the target communication path.
[0173] In one embodiment of this disclosure, reference is made to Figure 16 , Figure 13 Step 1030 shown can be updated to step 1610: Step 1610: The transmitting device alternately sends multiple probe messages through multiple output ports of the transmitting device; Reference Figure 16 , Figure 13 Following step 1320 shown, the following is also included: Step 1620: The sending device sends a second data packet through the target output port, so that the second data packet is transmitted through the target communication path; wherein, the target output port refers to the output port of the sending device that sends the probe packet corresponding to the target communication path.
[0174] Steps 1610 and 1620 are described in detail below.
[0175] In step 1610, the transmitting device alternately sends multiple probe messages through multiple output ports of the transmitting device.
[0176] Considering that the same candidate communication path may still be obtained through routing calculations when the value of the path control field in the probe message changes, in this embodiment of the disclosure, the sending device can alternately send multiple probe messages through multiple output ports, where each output port is connected to a different forwarding device. For example, if the sending device has two output ports connected to different forwarding devices, the relationship between the sending device's output ports and the sent probe messages is shown in Table 2: Table 2. Outgoing Port-Probe Message Relationship Table
[0177] It's worth noting that sending a probe packet through a specific outgoing port means that the first hop of that probe packet no longer depends on routing calculations, but rather on that outgoing port. (Compare Table 2 with...) Figure 2 For example, if the sending device is server H0 and the receiving device is server H4, with server H0's output port 1 connected to access layer switch L0 and output port 2 connected to access layer switch L1, the candidate communication path obtained by routing calculation based on the multiple routing factor fields in probe message 1 is H0-L1-S1-C2-S5-L4-H4. Similarly, the candidate communication path obtained by routing calculation based on the multiple routing factor fields in probe message 2 is also H0-L1-S1-C2-S5. Based on this, if probe packet 1 is sent through port 1 of server H0, the candidate communication path probed by probe packet 1 changes from H0-L1-S1-C2-S5-L4-H4 to H0-L0-S1-C2-S5-L4-H4, meaning the first hop of probe packet 1 is no longer "H0-L1". If probe packet 2 is sent through port 2 of server H0, the candidate communication path probed by probe packet 2 remains H0-L1-S1-C2-S5-L4-H4. From the above example, it can be seen that sending multiple probe packets alternately through multiple outgoing ports increases the probability of detecting more candidate communication paths, thus improving detection efficiency.
[0178] In step 1620, the sending device sends a second data packet through the target output port, so that the second data packet is transmitted through the target communication path; wherein, the target output port refers to the output port through which the sending device sends the probe packet corresponding to the target communication path.
[0179] Here, the target communication path is determined by the routing calculation results of multiple routing factor fields in the probe message corresponding to the target communication path, and the output port of the sending device used to send the probe message corresponding to the target communication path. Therefore, the sending device determines the output port used to send the probe message corresponding to the target communication path as the target output port, and sends the second data message through the target output port, so that the second data message is transmitted through the target communication path, thereby realizing the switching from the current communication path to the target communication path.
[0180] Taking the example from step 1610 again, for instance, the target communication path is the candidate communication path detected by probe packet 1, namely H0-L0-S1-C2-S5-L4-H4. Based on this, if server H0 only configures the target value in the path control field of the second data packet and sends the second data packet, it will cause the second data packet to be transmitted along the communication path H0-L1-S1-C2-S5-L4-H4. Therefore, server H0 also needs to send the second data packet through outgoing port 1 (target outgoing port) so that the first hop of the second data packet reaches the access layer switch L0, that is, the second data packet will be transmitted along the target communication path H0-L0-S1-C2-S5-L4-H4.
[0181] In steps 1610 and 1620 above, by alternately sending multiple probe messages through multiple output ports of the sending device, more candidate communication paths can be detected with a greater probability, and duplicate candidate communication paths can be avoided as much as possible, which helps to improve detection efficiency. Based on the determination of the target communication path, a second data message is sent through the target output port, so that the second data message is transmitted through the target communication path, ensuring a successful switch from the current communication path to the target communication path.
[0182] In one embodiment of this disclosure, reference is made to Figure 17 , Figure 10 Following step 1010 shown, the following is also included: Step 1710: The sending device configures different values for the probe message identifier field in multiple probe messages to identify the corresponding candidate communication paths; Reference Figure 17 , Figure 10 Following step 1070 shown, the following is also included: Step 1720: The sending device determines the candidate communication path corresponding to the probe confirmation message based on the value of the probe message identifier field in the probe confirmation message, so as to determine the target communication path among multiple candidate communication paths based on the second bottleneck congestion window value and the second bottleneck load level in the probe confirmation message.
[0183] Steps 1710 and 1720 are described in detail below.
[0184] In step 1710, the sending device configures different values for the probe message identifier field in multiple probe messages to identify the corresponding candidate communication paths.
[0185] The sending device defines a probe message identifier field in the probe message. After generating multiple probe messages, the sending device configures different values for the probe message identifier field in each probe message to identify the candidate communication path corresponding to the probe message. The probe message identifier field is different from the routing factor field and can be located in a custom packet header.
[0186] It is worth noting that the probe message identifier field can be used to identify the path control field in the probe message, or to identify both the path control field in the probe message and the outgoing port used by the sending device to send the probe message, thereby identifying the candidate communication path corresponding to the probe message. Taking the latter case as an example, assuming the path control field is the source port number field, the following table 3 illustrates this: Table 3. Relationship between Probe Message Identifier, Source Port Number, and Outgoing Port
[0187] In Table 3, taking the probe message with probe message identifier 1 as an example, the source port number in the probe message is 121, and the output port used by the sending device to send the probe message is output port 1. These two factors can uniquely determine the candidate communication path probed by the probe message. Therefore, the probe message identifier can play the role of identifying the candidate communication path corresponding to the probe message.
[0188] In step 1720, the sending device determines the candidate communication path corresponding to the probe confirmation message based on the value of the probe message identifier field in the probe confirmation message, so as to determine the target communication path among multiple candidate communication paths based on the second bottleneck congestion window value and the second bottleneck load level in the probe confirmation message.
[0189] After receiving a probe message, the receiving device writes the value of the probe message identifier field from the probe message into the probe message identifier field of the probe acknowledgment message. In this way, after receiving a probe acknowledgment message, the sending device can determine the candidate communication path corresponding to the probe acknowledgment message based on the value of the probe message identifier field in the probe acknowledgment message. This clarifies the correspondence between the probe acknowledgment message and the candidate communication path, facilitating the subsequent determination of the target communication path from multiple candidate paths.
[0190] In steps 1710 and 1720 above, the sending device configures different values for the probe message identifier field in multiple probe messages, thereby distinguishing different probe messages by the value of the probe message identifier field. At the same time, the value of the probe message identifier field can identify the candidate communication path corresponding to the probe message. After receiving the probe confirmation message, the sending device can determine the candidate communication path corresponding to the probe confirmation message based on the value of the probe message identifier field in the probe confirmation message. That is, the sending device can accurately determine the correspondence between the probe confirmation message and the candidate communication path, thereby ensuring the accuracy of filtering multiple candidate communication paths.
[0191] Scheme for determining the outgoing port congestion window size Reference Figure 18 ,exist Figure 5 Following step 510 shown, the following is also included: Step 1810: The transmitting device adds the current congestion window value to the first data packet; Reference Figure 18 ,exist Figure 5 Following step 530, the following is also included: Step 1820: The forwarding device performs a fusion process on the current congestion window value in the first data packet and the historical outgoing port congestion window value before receiving the first data packet to obtain the outgoing port congestion window value after receiving the first data packet.
[0192] Steps 1810 and 1820 are described in detail below.
[0193] In step 1810, the sending device adds the current congestion window value to the first data packet.
[0194] The transmitting device can determine the current congestion window value of the current communication path through a congestion control algorithm. There are no restrictions on the congestion control algorithm used. For example, the TCP congestion control algorithm can be used, or a custom congestion control algorithm can be used.
[0195] The first data packet defines a current congestion window value field. After generating the first data packet, the sending device writes the current congestion window value obtained through the congestion control algorithm into the current congestion window value field of the first data packet. The aforementioned current congestion window value field is a non-payload field and can be located in the header of the first data packet, such as a custom header or a transport layer header; there are no restrictions on this.
[0196] In step 1820, the forwarding device performs a fusion process on the current congestion window value in the first data packet and the historical outgoing port congestion window value before receiving the first data packet to obtain the outgoing port congestion window value after receiving the first data packet.
[0197] After receiving the first data packet, the forwarding device reads the current congestion window value from the first data packet and simultaneously determines the historical outgoing port congestion window value of the outgoing port used by the forwarding device to send the first data packet (i.e., the historical outgoing port congestion window value before receiving the first data packet). Considering that the sending device continuously uses the congestion control algorithm to determine the current congestion window value, meaning the current congestion window value is constantly changing, the current congestion window value in the first data packet received by the forwarding device may contain fluctuation noise. Therefore, the forwarding device performs a fusion process on the current congestion window value and the historical outgoing port congestion window value to filter out fluctuation noise as much as possible, obtaining the outgoing port congestion window value after receiving the first data packet. Then, the forwarding device uses the outgoing port congestion window value after receiving the first data packet in step 540. The fusion process is not limited; for example, it can be averaging, taking the maximum value, etc.
[0198] In one embodiment of this disclosure, the forwarding device performs a fusion process on the current congestion window value in the first data packet and the historical outgoing port congestion window value before receiving the first data packet to obtain the outgoing port congestion window value after receiving the first data packet, including: The forwarding device performs a weighted average of the current congestion window value in the first data packet and the historical outgoing port congestion window value before receiving the first data packet to obtain the outgoing port congestion window value after receiving the first data packet; wherein, the weight corresponding to the current congestion window value is less than the weight corresponding to the historical outgoing port congestion window value.
[0199] Here, the fusion processing can be weighted average processing, as shown in the following formula: Outgoing port congestion window value after receiving the first data packet = (1 - ... ) Historical outgoing port congestion window value before receiving the first data packet + The current congestion window value in the first data packet. Where 1- > Since the historical outgoing port congestion window value is obtained by combining multiple packets that have flowed through the outgoing port of the forwarding device in history, it has high accuracy and reliability. Therefore, referring more to the historical outgoing port congestion window value in the above weighted average processing can improve the noise filtering effect and make the final outgoing port congestion window value more accurate.
[0200] In steps 1810 and 1820 above, the sending device adds a current congestion window value to the first data packet. The current congestion window value reflects the current data flow contention level detected by the sending device. The forwarding device merges the current congestion window value in the first data packet with the historical outgoing port congestion window value before receiving the first data packet to obtain the outgoing port congestion window value after receiving the first data packet. The historical outgoing port congestion window value reflects the data flow contention level obtained by the forwarding device in the past statistics. By merging the current congestion window value and the historical outgoing port congestion window value, noise filtering can be effectively achieved, so that the obtained outgoing port congestion window value can accurately reflect the data flow contention level of the port, which helps to accurately detect the congestion status of the current communication path.
[0201] Enable detection scheme Reference Figure 19 ,exist Figure 5 Following step 510 shown, the following is also included: Step 1910: The sending device configures the target type value for the message type field in the first data message; Step 1920: The sending device configures the target tag value for the probe tag field in the first data packet; Reference Figure 19 ,exist Figure 5 Before step 540 shown, the following is also included: Step 1930: When the forwarding device reads that the value of the message type field in the first data packet is the target type value, it reads the probe tag field in the first data packet; Reference Figure 19 , Figure 5 Step 540 shown can be updated to step 1940: Step 1940: When the forwarding device reads that the value of the probe tag field in the first data packet is the target tag value, it performs the following processing: when the outgoing port congestion window value of the forwarding device is smaller than the first bottleneck congestion window value, it updates the first bottleneck congestion window value with the outgoing port congestion window value; when the outgoing port load level of the forwarding device is larger than the first bottleneck load level, it updates the first bottleneck load level with the outgoing port load level.
[0202] The following is a detailed description of steps 1910 to 1940 above.
[0203] In step 1910, the sending device configures a target type value for the message type field in the first data message.
[0204] The first data packet also defines a message type field. After generating the first data packet, the sending device configures a target type value for the message type field. The value range of the message type field can be divided into two types: target type value and non-target type value. For example, the target type value can be 1, and the non-target type value can be 0, or any number other than 1 can be classified as a non-target type value. The target type value is used to enable the forwarding device to read the probe flag field in the first data packet, and the non-target type value is used to disable (i.e., prohibit) the forwarding device from reading the probe flag field in the first data packet. The aforementioned message type field is a non-payload field and can be located in the header of the first data packet, such as a custom header or a transport layer header; there are no restrictions on this.
[0205] In step 1920, the transmitting device configures a target tag value for the probe tag field in the first data packet.
[0206] The first data packet also defines a probe flag field. After generating the first data packet, the sending device configures a target flag value for the probe flag field in the first data packet. The value range of the probe flag field can be divided into two types: target flag value and non-target flag value. For example, the target flag value can be 1, and the non-target flag value can be 0, or any number other than 1 can be classified as a non-target flag value. The target flag value is used to enable the forwarding device to make update decisions on the first bottleneck congestion window value and the first bottleneck load level in the first data packet, that is, to determine whether to update the first bottleneck congestion window value and the first bottleneck load level in the first data packet. The non-target flag value is used to prevent the forwarding device from making update decisions on the first bottleneck congestion window value and the first bottleneck load level in the first data packet. The probe flag field mentioned above is a non-payload field and can be located in the header of the first data packet, such as a custom header or a transport layer header, without limitation.
[0207] In step 1930, when the forwarding device reads that the value of the message type field in the first data packet is the target type value, it reads the probe tag field in the first data packet.
[0208] After receiving the first data packet, the forwarding device first reads the packet type field in the first data packet. If the value of the packet type field in the first data packet is a target type value, the forwarding device continues to read the probe flag field in the first data packet. If the value of the packet type field in the first data packet is a non-target type value, the forwarding device directly sends the first data packet.
[0209] In step 1940, when the forwarding device reads that the value of the probe tag field in the first data packet is the target tag value, it performs the following processing: when the outgoing port congestion window value of the forwarding device is smaller than the first bottleneck congestion window value, it updates the first bottleneck congestion window value with the outgoing port congestion window value; when the outgoing port load level of the forwarding device is larger than the first bottleneck load level, it updates the first bottleneck load level with the outgoing port load level.
[0210] If the forwarding device reads that the value of the probe flag field in the first data packet is the target flag value, the forwarding device makes an update decision on the first bottleneck congestion window value and the first bottleneck load level in the first data packet. That is, if the forwarding device's outgoing port congestion window value is smaller than the first bottleneck congestion window value, the outgoing port congestion window value is used to update the first bottleneck congestion window value; if the forwarding device's outgoing port load level is larger than the first bottleneck load level, the outgoing port load level is used to update the first bottleneck load level. If the forwarding device reads that the value of the probe flag field in the first data packet is not the target flag value, the forwarding device directly sends the first data packet.
[0211] It is worth noting that if the value of the message type field in the first data packet is not a target type value, the receiving device, after receiving the first data packet, writes the value of the message type field in the first data packet into the message type field of the first acknowledgment message; if the value of the message type field in the first data packet is a target type value and the value of the probe flag field in the first data packet is not a target flag value, the receiving device, after receiving the first data packet, writes the value of the message type field in the first data packet into the message type field of the first acknowledgment message and writes the value of the probe flag field in the first data packet into the probe flag field of the first acknowledgment message; if the value of the message type field in the first data packet is a target type value and the value of the probe flag field in the first data packet is a target flag value, the receiving device, after receiving the first data packet, writes the value of the message type field in the first data packet into the message type field of the first acknowledgment message and simultaneously configures a non-target flag value for the probe flag field in the first acknowledgment message. Through the above processing, the forwarding device can directly send the first acknowledgment message after receiving it, avoiding the need for the forwarding device to update the first bottleneck congestion window value and the first bottleneck load level in the first acknowledgment message.
[0212] It is worth noting that the enable detection scheme based on the message type field and probe flag field described above is also applicable to other messages. Taking probe messages as an example, after generating the probe message, the sending device configures the target type value for the message type field in the probe message and the target flag value for the probe flag field in the probe message.
[0213] The above enable detection scheme can be applied to a variety of application scenarios. The following will illustrate this with two application scenarios as examples.
[0214] (a) Gray-scale deployment scenario.
[0215] For example, if the embodiments of this disclosure are gradually applied to a packet transmission network in a gray-scale deployment manner, then the packet transmission network will simultaneously contain old and new versions of packets. The old versions of packets use traditional packet formats (such as traditional TCP or UDP packets) and do not support the embodiments of this disclosure; while the new versions of packets use the packet format provided by the embodiments of this disclosure and can support them. Based on this, after receiving a packet, the forwarding device in the packet transmission network first determines whether the packet includes a packet type field and a probe flag field. If not, it proves that the packet is an old version, and the forwarding device directly sends the packet; if they are included, it proves that the packet is a new version, and the forwarding device processes the packet in a manner similar to steps 1930 to 1940 above. Through the above gray-scale deployment scenario, various uncontrollable problems caused by a large number of new version packets appearing in the packet transmission network can be avoided, effectively reducing risks and helping relevant personnel to promptly discover and fix problems that arise during the gray-scale deployment process.
[0216] (ii) Differentiate configuration scenarios.
[0217] For example, in a message transmission network, multiple communication connections are established. Some of these connections (taking communication connection 1 as an example) require continuous message transmission and do not allow route switching. For messages (such as data messages) involved in communication connection 1, a non-target type value can be configured for the message type field, or a target type value can be configured for the message type field, while a non-target flag value is configured for the probe flag field. This way, route switching will not be triggered, and messages will always be transmitted through a fixed communication path. However, some communication connections (such as communication connection 2) do not strictly require continuous message transmission and allow route switching. For messages (such as data messages) involved in communication connection 2, a target type value can be configured for the message type field, while a target flag value can be configured for the probe flag field, thereby triggering route switching. Based on the message type field and probe flag field, this embodiment of the disclosure can achieve differentiated configuration, thereby meeting the communication needs of different communication connections.
[0218] In steps 1910 to 1940 above, the message type field is used to control whether the forwarding device reads the probe flag field, and the probe flag field is used to control whether the forwarding device makes update decisions on the message. This can improve the accuracy and flexibility of message processing. For example, it can support detecting the congestion of the communication path and performing timely route switching, or it can support not detecting the congestion of the communication path and always transmitting messages through the communication path, thus meeting the diverse needs in different application scenarios.
[0219] Example of the specific usage process of the message transmission method in this disclosure embodiment Below, we will use Figure 2 Taking the data center network shown as an example, the specific usage process of the message transmission method of this disclosure embodiment is illustrated.
[0220] Reference Figure 20 , Figure 20 This is a schematic diagram of an implementation architecture of the message transmission method provided in this disclosure, involving an adaptive switching module (similar to a kernel module in a Linux system) in the server data transmission stack and a load feedback module in the switch. The adaptive switching module in the server is connection-level, and its logic is implemented for each communication connection. Figure 21 As shown, the adaptive switching module is used to perform congestion detection on the current communication path. When the current communication path is detected to be congested, it is also used to perform congestion detection on multiple candidate communication paths to determine the target communication path from the multiple candidate communication paths and switch the current communication path to the target communication path. The load feedback module in the switch is used to maintain load indicators and put the load indicators into the message so that the load indicators are finally fed back to the sending device. The load indicators are the port congestion window value and the load level of the output port.
[0221] Reference Figure 22 , Figure 22 This is a schematic diagram of the workflow of a server provided in an embodiment of this disclosure, which will be combined with... Figure 22 Provide a detailed description: Step 1: After establishing a communication connection, the server, acting as the sending device, first initializes itself. During the initialization process, the values involved in the path control field need to be configured. Taking the source port number field as an example, the source port number can be randomly selected from the range of source port numbers as the server's source port number, or a preset source port number can be used. Step 2: After initialization is complete, generate the first data packet; Step 3: After generating the first data packet, configure the source port number field in the first data packet according to the source port number obtained in step 1, and also configure the custom header in the first data packet. Here, the custom protocol refers to the protocol defined to implement the message transmission method provided in this embodiment of the disclosure, and the custom header refers to the header corresponding to the custom protocol. Step 4: After configuring the first data packet, send the first data packet; Step 5: After receiving the first acknowledgment message, check the congestion status of the current communication path based on the load index carried in the first acknowledgment message; Step 6: If the available bandwidth of the current communication path is less than the required bandwidth, it proves that the current communication path is congested. Then, probes are initiated for multiple candidate communication paths, that is, probe messages are sent for multiple candidate communication paths. Step 7: The probe confirmation message corresponding to the probe message will return to the server within the RTT time granularity. The server will determine the candidate communication path with the lightest load among multiple candidate communication paths based on the load index carried by the probe confirmation message, and use it as the target communication path. If the load of the target communication path is lighter than that of the current communication path, the communication path used by the communication connection will be switched from the current communication path to the target communication path. Step 8: For the received messages (such as the first acknowledgment message, probe acknowledgment message, etc.), perform subsequent protocol stack processing.
[0222] Taking the example of a message using the UDP protocol at the transport layer in an embodiment of this disclosure, the following is provided: Figure 23 The diagram shows the message format of the first data message and the first acknowledgment message, and as shown below. Figure 24 The diagram showing the message formats of probe messages and probe confirmation messages will be combined with... Figure 23 as well as Figure 24 This will be described from the perspectives of both switches and servers.
[0223] (a) Switches.
[0224] The primary function of a switch is to maintain load metrics and update these metrics in the first data packet or probe packet. Below, we will combine... Figure 25 This explains the working process of the switch.
[0225] 1) Inspection of testing requirements.
[0226] Before sending a packet out of queue, each output port of the switch checks whether the destination port number in the UDP header of the packet matches the destination port number corresponding to the custom protocol (e.g., 51000). See [link / reference]. Figure 25If step ① in the code is correct, then further check whether the value of the probe flag field in the custom header is 1, see [link to step ①]. Figure 25 If step ② in the above is 1, then subsequent indicator maintenance and message updates will be performed. The destination port number field corresponds to the message type field mentioned above, and the destination port number 51000 corresponds to the target type value mentioned above; the probe flag field value of 1 corresponds to the target flag value mentioned above, and the probe flag field value of 0 corresponds to the non-target flag value mentioned above.
[0227] 2) Indicator maintenance.
[0228] The switch maintains an outgoing port congestion window value for each outgoing port. This outgoing port congestion window value is updated packet-by-packet (one packet at a time) using a moving average method. See [link / details]. Figure 25 Step ③ in the process. The formula for updating the outgoing port congestion window value is as follows:
[0229] in, This represents the historical outgoing port congestion window value; This represents the latest obtained output port congestion window value; This represents the sliding coefficient (e.g., 0.01). This represents the current congestion window value in the message to be sent from the outgoing port. By using a moving average method, fluctuation noise can be filtered out as much as possible, so that the final outgoing port congestion window value can accurately reflect the level of data flow contention at the port.
[0230] 3) Message update.
[0231] The switch independently determines the bottleneck congestion window size and bottleneck load level in the packet: a) If the outgoing port congestion window value of the switch's outgoing port is less than the bottleneck congestion window value in the packet, the switch updates the bottleneck congestion window value in the packet with the outgoing port congestion window value, see [link to relevant documentation]. Figure 25 Step 4 in the process; b) If the outgoing port load level of the switch is greater than the bottleneck load level in the packet, the switch updates the bottleneck load level in the packet with the outgoing port load level, see [link to relevant documentation]. Figure 25 Step 5 in the process.
[0232] After processing the packets, the bottleneck congestion window value in the packets indicates the smallest outgoing port congestion window value among the switches in the communication path, and the bottleneck load level in the packets indicates the largest outgoing port load level among the switches in the communication path.
[0233] It is worth noting that the bottleneck congestion window value is required in this embodiment because, for reasons such as cost reduction and low actual average traffic intensity, data center networks are often designed with bandwidth convergence. This means that the total uplink bandwidth of the access layer switches (i.e., the link bandwidth between the access layer switches and the aggregation layer switches) is less than the total downlink bandwidth (i.e., the link bandwidth between the access layer switches and the servers). The ratio of the total uplink bandwidth to the total downlink bandwidth may reach 1:3 or even 1:6. In this situation, if the current communication path is congested and needs to be rerouted, it is very likely that the bandwidth utilization of most (or even all) candidate communication paths will be 100%. At this point, other indicators are needed to determine which candidate communication path is less congested and less competitive. Indicators such as queue height (indicating the number of packets waiting to be sent at a port) and real-time time-to-transmission (RTT) are unreliable because queue height changes drastically in real data center networks (leading to significant changes in RTT). The indicator detection process is actually just a single sampling. Even in a highly competitive candidate communication path, the probability of sampling a low queue height is not small. If further judgments are made based on queue height or real-time RTT, it is easy to lead to misjudgments. Therefore, the embodiments of this disclosure use a bottleneck congestion window value that is easier to converge and more accurate.
[0234] (ii) Server.
[0235] Here, we will use a server as an example to illustrate the concept.
[0236] 1) Perform congestion detection on the current communication path.
[0237] After generating the first data packet, the server needs to perform the following configurations: configure the source port number field in the UDP header; configure the destination port number field in the UDP header according to the destination port number corresponding to the custom protocol; configure the probe flag field in the custom header to 1; configure the current congestion window value field in the custom header according to the current congestion window value obtained through the congestion control algorithm; initialize the bottleneck congestion window value field in the custom header to the maximum congestion window value; and initialize the bottleneck load level field in the custom header to 0. It is worth noting that the probe flag field in both the first data packet and the probe packet has a value of 1 (or a magic number such as 0x8af53eb2), indicating that the detection function is enabled, i.e., enabling the switch to perform indicator maintenance and packet updates; while the probe flag field in both the first acknowledgment packet and the probe acknowledgment packet has a value of 0 (or a non-magic number), indicating that the detection function is disabled.
[0238] Then, the server sends a first data packet and receives a first acknowledgment packet corresponding to the first data packet. It uses the load metrics carried in the first acknowledgment packet to determine whether the current communication path is congested. For example, if the bottleneck load level in the first acknowledgment packet reaches 100% (corresponding to the second threshold mentioned above), and the bottleneck congestion window value in the first acknowledgment packet is less than the first threshold, then the current communication path is determined to be congested. This means that the available bandwidth of the communication connection on the current communication path is less than the required bandwidth, and the current communication path cannot meet the throughput requirements of the communication connection, triggering congestion detection on multiple candidate communication paths.
[0239] The bottleneck congestion window value in the first confirmation message being less than the first threshold can be expressed as:
[0240] in, This represents the bottleneck congestion window value in the first acknowledgment message; This represents the maximum congestion window value; This represents the detection threshold coefficient (e.g., 0.4).
[0241] 2) Perform congestion detection on multiple candidate communication paths.
[0242] After detecting congestion on the current communication path, it is necessary to quickly find an idle communication path for switching. This embodiment of the disclosure finds an idle communication path by sending probe messages. (Refer to...) Figure 24 The probe message format shown in this disclosure uses a fixed destination port number (e.g., 51000) to identify messages using a custom protocol, while the source port number is variable. Therefore, path control can be implemented using the source port number. It is worth noting that this disclosure identifies the communication connection using a connection identifier field in the custom header, rather than the traditional five-tuple. Therefore, changing the source port number does not affect the identification of the communication connection. In one embodiment of this disclosure, a fixed source port number can also be used to identify messages using a custom protocol, and the destination port number can be used for path control. In an IPv6 network, path control can also be implemented using the Flow Label field in the IPv6 header; this is not limited.
[0243] After generating probe packets, the server needs to configure them. The configuration process for probe packets is similar to that for the first data packet, but with the following differences: probe packets require configuration of the source port number field according to a specific pattern. For example, if the source port number in the first data packet is 120, then each generated probe packet can use sequentially increasing source port numbers, such as 121, 122, 123, ... Probe packets also need configuration of the probe sequence number field (corresponding to the probe packet identifier field mentioned above) to distinguish different probe packets and identify the candidate communication paths corresponding to each probe packet. For example... Figure 26 As shown.
[0244] This disclosure embodiment can employ iterative detection in multiple batches, such as... Figure 27 As shown, the server sends K probe messages in each batch to probe K candidate communication paths (there may be duplicates among the K candidate communication paths). If the target communication path can be determined in the current batch, the iteration stops; if the target communication path cannot be determined in the current batch, the server continues to send the next batch of K probe messages until all batches have been traversed.
[0245] Based on this, the two network ports of the server's network card can be used alternately to send probe packets, as shown in Table 4: Table 4. Source Port Number and Network Interface Number Allocation Diagram
[0246] In Table 4, src-port refers to the source port number in the first data packet.
[0247] The reason for alternately using the two network ports of the server's network card to send probe packets is that if only the 5-tuple in the probe packet is relied upon to determine the candidate communication path for transmitting the probe packet, then even if the source port number changes slightly (e.g., increases by no more than 4 times), the calculated hash value is likely to remain unchanged, meaning that duplicate candidate communication paths are likely to be detected. Therefore, by alternately using the two network ports of the server's network card to send probe packets, the first hop of the probe packet no longer depends on the 5-tuple, which can generate more variations, thereby enabling the detection of different candidate communication paths more quickly.
[0248] The probe acknowledgment messages corresponding to the probe messages sent by the server in each batch are typically returned to the server within 1-2 RTTs (depending on network conditions). After receiving the probe acknowledgment messages, the server saves the bottleneck congestion window value and bottleneck load level from the probe sequence number in the probe acknowledgment message to the corresponding candidate communication path. That is, the bottleneck congestion window value in the probe acknowledgment message is used as the bottleneck congestion window value for the candidate communication path corresponding to the probe acknowledgment message, and the bottleneck load level is treated similarly. Taking Table 4 as an example, if the probe sequence number in a probe acknowledgment message is 1, then the bottleneck congestion window value and bottleneck load level in that probe acknowledgment message are saved to the first row of Table 4.
[0249] The server can implement timeout control for sent probe messages. If a probe acknowledgment message is not received after a waiting time threshold (e.g., 2 RTTs) following the sending of a probe message, the server can directly determine the target communication path based on the received probe acknowledgment message, or send the next batch of probe messages. This is because the candidate communication path experienced by a delayed probe acknowledgment message is likely to be more congested than that experienced by an earlier probe acknowledgment message, and the delayed probe acknowledgment message is likely to contain invalid information; therefore, there is no need to continue waiting for the delayed probe acknowledgment message.
[0250] For the current batch, the server's decision flow is as follows: a) If there are candidate communication paths in the current batch that meet the throughput requirements (i.e., the predicted available bandwidth of the candidate communication path is greater than the required bandwidth), then the candidate communication path with the lowest bottleneck load among those meeting the throughput requirements will be determined as the target communication path. For example, in Figure 28 The system will determine path 4 as the target communication path; b) If there is no candidate communication path that meets the throughput requirements in the current batch, the probe for the next batch will be initiated until a candidate communication path that meets the throughput requirements is found or multiple batches have been traversed. c) If no candidate communication path that meets the throughput requirements is found after traversing multiple batches, the candidate communication path with the lowest bottleneck load among all the candidate communication paths that have been detected is determined as the target communication path. d) If, after traversing multiple batches, no candidate communication path is found that meets the throughput requirements, and the bottleneck load of all detected candidate communication paths is 100%, then the candidate communication path with the largest bottleneck congestion window value among all detected candidate communication paths is determined as the target communication path. For example, in Figure 29 The system will determine path 7 as the target communication path.
[0251] For example, such as Figure 30As shown, in a data center network with a maximum congestion window value of 128 and a total link bandwidth of 100G (for ease of explanation), Figure 30 In the context of the core layer switch (ignoring the core layer switch), server H0 and server H3 have established a communication connection. The current communication path used by the connection is H0-L0-S0-L2-H3. Server H0 detects that the bottleneck load of the current communication path is 100%, and the bottleneck congestion window value is 32. This means that at the bottleneck of the current communication path (the outgoing port p2 of the aggregation layer switch S0), there are 4 (128 / 32=4) large data streams being transmitted. The average throughput of each data stream is less than 25G (100 / 4=25, the reason for less than 25G is that there may be other overhead in the data center network). Therefore, server H0 determines that the current communication path is congested.
[0252] Subsequently, server H0 initiated path probing, covering... Figure 30 Eight candidate communication paths are represented by dashed lines. After probing, it was found that the bottleneck load of the candidate communication path flowing through the outgoing port p3 of the aggregation layer switch S1 was only 60%, and the bottleneck congestion window value was 128. This means that this candidate communication path still has idle bandwidth. There is only one data flow in this candidate communication path, and the intensity of this data flow is not high. Therefore, this candidate communication path is determined as the target communication path. Then, server H0 switches the current communication path H0-L0-S0-L2-H3 to the target communication path H0-L1-S1-L3-H3. For the communication connection between server H0 and server H4, approximately 70G of bandwidth can be obtained in the end (which can be understood as sharing bandwidth with the original data flow in the target communication path 60% of the time, and exclusively occupying bandwidth for 40% of the time).
[0253] 3) Path switching.
[0254] Once the target communication path has been determined, the network port number and source port number corresponding to the target communication path are configured on the communication connection between the sending and receiving devices to complete the path switching. Taking Table 4 as an example, if the target communication path is a candidate communication path probed by the probe packet with sequence number 1, then network port number 1 and source port number src-port+1 are configured on the communication connection between the sending and receiving devices. That is, for subsequent packets generated by the sending device, the sending device configures the source port number field in the packet according to the source port number src-port+1, and sends the packet through the network port with network port number 1, so that the packet can be transmitted through the target communication path.
[0255] The embodiments disclosed herein can achieve at least the following technical effects: 1) Congestion can be detected accurately and reliably. The embodiments of this disclosure are based on the load indicators (bottleneck congestion window value and bottleneck load level) brought back by ACK messages (such as first acknowledgment messages and probe acknowledgment messages) to achieve congestion detection, rather than counting the received ECN signals. Therefore, congestion can be detected accurately and reliably, regardless of the actual congestion control algorithm and network configuration (such as ECN configuration) used.
[0256] 2) It can quickly detect congestion and effectively switch paths in a timely manner. This embodiment of the disclosure simultaneously detects the congestion of multiple candidate communication paths through concurrent probing, completing path detection and switching within 1-2 RTTs. This reduces the time affected by congestion to the order of 100µs and lowers the P99 quantile of service latency by more than 90% (compared to solutions provided by related technologies). In contrast, the PLB solution requires running on the communication path for a period of time (e.g., dozens of RTTs) to detect congestion.
[0257] Experimental results example Reference Figure 31 The communication connection transmits messages through the current communication path. New traffic enters the current communication path at the 10-second mark, causing the throughput of the communication connection to drop from 100G to 30G. The performance of the three solutions in this situation is as follows: 1) Native TCP solution. TCP connections do not switch paths due to congestion on the current communication path, so the throughput of TCP connections will remain at 30G after the 10th second.
[0258] 2) PLB solution. The PLB solution took 500ms to find a less congested communication path, but the throughput of the communication connection on that path could only reach 50G.
[0259] 3) The solution provided in this embodiment of the present disclosure. The target communication path is detected within 1 RTT, and the traffic of the communication connection is switched from the current communication path to the target communication path. Therefore, the communication connection only experiences congestion briefly, and the throughput quickly recovers to 100G after dropping to 30G.
[0260] Reference Figure 32 ( Figure 32 The height of the rectangle represents the throughput. Communication connections transmit messages through the current communication path, and new traffic enters the current communication path at some point. The three schemes perform as follows in this scenario: 1) Native TCP solution. TCP connections cannot switch routes after encountering congestion, and continue to operate at the post-congestion throughput.
[0261] 2) PLB Scheme. The PLB scheme detects congestion on the current communication path only after a certain period (20ms) of new traffic entering, and performs a random rerouting. For the communication path obtained by the first random rerouting, congestion is still detected after a period of time, and a second random rerouting is performed. For the communication path obtained by the second random rerouting, congestion is still detected after a period of time, and finally, K random reroutings are performed to finally switch to an uncongested communication path. At this time, the throughput of the communication connection is 60% of the initial throughput, and 500ms has been consumed.
[0262] 3) The solution provided in this embodiment. In this embodiment, congestion on the current communication path is detected within 100µs after new traffic enters, triggering path detection and path switching. The path switching is completed within 120µs, and the communication connection regains 100% throughput, which is the same as the throughput before the new traffic entered.
[0263] Description of apparatus and devices according to embodiments of this disclosure 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.
[0264] Reference Figure 33 , Figure 33 This is a schematic diagram of the structure of a message transmission device 3300 provided in an embodiment of the present disclosure. The message transmission device 3300 includes: The data packet generation module 3310 is used to generate a first data packet; wherein the first data packet has a first bottleneck congestion window value and a first bottleneck load level, the first bottleneck congestion window value is used to indicate the smallest outgoing port congestion window value among the various forwarding devices in the current communication path, and the first bottleneck load level is used to indicate the largest outgoing port load level among the various forwarding devices in the current communication path. The data packet sending module 3320 is used to initialize the first bottleneck congestion window value and the first bottleneck load level, and send the first data packet so that each forwarding device in the current communication path updates the first bottleneck congestion window value with the outgoing port congestion window value when the outgoing port congestion window value of the forwarding device is smaller than the first bottleneck congestion window value, and updates the first bottleneck load level with the outgoing port load level when the outgoing port load level of the forwarding device is larger than the first bottleneck load level. The acknowledgment message receiving module 3330 is used to receive a first acknowledgment message; wherein, the first acknowledgment message is generated by the receiving device based on the first bottleneck congestion window value and the first bottleneck load level in the first data message; The switching module 3340 is used to perform switching processing based on the first bottleneck congestion window value and the first bottleneck load level in the first confirmation message. Optionally, the switching module 3340 is specifically used for: Based on the first bottleneck congestion window value and the first bottleneck load level in the first confirmation message, determine the switching of the current communication path; Determine the target communication path from multiple candidate communication paths; Switch the current communication path to the target communication path.
[0265] Optionally, the switching module 3340 is specifically used for: The current available bandwidth of the current communication path is determined based on the first bottleneck congestion window value and the first bottleneck load level in the first confirmation message. If the available bandwidth is less than the required bandwidth, then the current communication path will be switched.
[0266] Optionally, the switching module 3340 is specifically used for: Multiple probe messages are generated for multiple candidate communication paths. The probe messages have a second bottleneck congestion window value and a second bottleneck load level. The second bottleneck congestion window value is used to indicate the minimum outgoing port congestion window value among the forwarding devices of the candidate communication path corresponding to the probe message, and the second bottleneck load level is used to indicate the maximum outgoing port load level among the forwarding devices of the candidate communication path corresponding to the probe message. Initialize the second bottleneck congestion window value and the second bottleneck load level, and send probe messages so that each forwarding device of the candidate communication path updates the second bottleneck congestion window value with the outgoing port congestion window value when the outgoing port congestion window value of the forwarding device is smaller than the second bottleneck congestion window value, and updates the second bottleneck load level with the outgoing port load level when the outgoing port load level of the forwarding device is larger than the second bottleneck load level. Receive probe confirmation messages; wherein, the probe confirmation message is generated by the receiving device based on the second bottleneck congestion window value and the second bottleneck load level in the probe message; Based on the second bottleneck congestion window value and the second bottleneck load level in the detection confirmation message, the target communication path is determined from multiple candidate communication paths.
[0267] Optionally, multiple probe messages are sent in multiple batches; the switching module 3340 is specifically used for: For the detection confirmation messages received in the current batch, perform the following processing: Based on the second bottleneck congestion window value and the second bottleneck load level in the probe confirmation message, the predicted available bandwidth of the candidate communication path corresponding to the probe confirmation message is predicted. Candidate communication paths whose predicted available bandwidth is greater than or equal to the required bandwidth are selected as the filtered communication paths. Among the filtered communication paths, the target communication path is determined based on the load level of the second bottleneck; If the target communication path is not determined in the current batch, the target communication path will be determined in the next batch, and so on, until all batches have been traversed.
[0268] Optionally, the switching module 3340 is specifically used for: If the target communication path is not determined after traversing multiple batches, the candidate communication path corresponding to the probe confirmation message with the lowest second bottleneck load among the multiple batches is determined as the target communication path. If the target communication path is not determined after traversing multiple batches, and the second bottleneck load level is equal in the probe confirmation messages of multiple batches, then the candidate communication path corresponding to the probe confirmation message with the largest second bottleneck congestion window value among the multiple batches is determined as the target communication path.
[0269] Optionally, the message transmission device 3300 further includes a path control module (not shown) for: Configure different values for the path control field in multiple probe messages; the path control field is a subset of multiple routing factor fields, which are used to perform routing calculations to obtain the communication path between the sending and receiving devices; The 3340 switching module is specifically used for: Configure a target value for the path control field in the second data packet so that the second data packet is transmitted through the target communication path; wherein, the target value represents the value of the path control field in the probe packet corresponding to the target communication path.
[0270] Optionally, the switching module 3340 is specifically used for: Multiple probe messages are sent alternately through multiple output ports of the sending device; The second data packet is sent through the target output port, so that the second data packet is transmitted through the target communication path; wherein, the target output port refers to the output port through which the sending device sends the probe packet corresponding to the target communication path.
[0271] Optionally, the message transmission device 3300 further includes a path mapping module (not shown), used for: Configure different values for the probe message identifier field in multiple probe messages to identify the corresponding candidate communication paths; Based on the value of the probe message identifier field in the probe confirmation message, the candidate communication path corresponding to the probe confirmation message is determined, so as to determine the target communication path among multiple candidate communication paths according to the second bottleneck congestion window value and the second bottleneck load level in the probe confirmation message.
[0272] Optionally, the message transmission device 3300 also includes an addition module (not shown) for: A current congestion window value is added to the first data packet so that the forwarding device can determine the egress port congestion window value after receiving the first data packet based on the current congestion window value in the first data packet and the historical egress port congestion window value before receiving the first data packet; wherein, the current congestion window value is used to indicate the congestion window value of the current communication path.
[0273] Optionally, the message transmission apparatus 3300 further includes a message type configuration module (not shown), used for: Configure a target type value for the message type field in the first data packet so that when the forwarding device reads that the value of the message type field in the first data packet is the target type value, it can read the probe tag field in the first data packet. The message transmission device 3300 also includes a probe tag configuration module (not shown), used for: Configure a target flag value for the probe flag field in the first data packet so that when the forwarding device reads that the value of the probe flag field in the first data packet is the target flag value, it performs the following processing: when the load level of the forwarding device's outgoing port is greater than the load level of the first bottleneck, and the congestion window value of the forwarding device's outgoing port is smaller than the congestion window value of the first bottleneck, update the load level of the first bottleneck with the load level of the outgoing port, and update the congestion window value of the first bottleneck with the congestion window value of the outgoing port.
[0274] Reference Figure 34 , Figure 34 This is a schematic diagram of the structure of a message transmission device 3400 provided in an embodiment of the present disclosure. The message transmission device 3400 includes: The data packet forwarding module 3410 is used to receive a first data packet; wherein the first data packet has a first bottleneck congestion window value and a first bottleneck load level, the first bottleneck congestion window value is used to indicate the smallest outgoing port congestion window value among the forwarding devices in the current communication path, and the first bottleneck load level is used to indicate the largest outgoing port load level among the forwarding devices in the current communication path. The data packet update module 3420 is used to update the first bottleneck congestion window value with the outgoing port congestion window value when the outgoing port congestion window value of the forwarding device is smaller than the first bottleneck congestion window value, and to update the first bottleneck load level with the outgoing port load level when the outgoing port load level of the forwarding device is larger than the first bottleneck load level. The data packet forwarding module 3410 is also used to send a first data packet so that the receiving device can generate a first acknowledgment packet based on the first bottleneck congestion window value and the first bottleneck load level in the first data packet, and enable the sending device to perform routing processing based on the first bottleneck congestion window value and the first bottleneck load level in the first acknowledgment packet.
[0275] Optionally, the first data packet also includes a current congestion window value, which indicates the congestion window value of the current communication path; the data packet update module 3420 is specifically used for: The current congestion window value in the first data packet and the historical outgoing port congestion window value before the first data packet was received are fused to obtain the outgoing port congestion window value after the first data packet was received.
[0276] Reference Figure 35 , Figure 35 This is a schematic diagram of the structure of a message transmission device 3500 provided in an embodiment of the present disclosure. The message transmission device 3500 includes: The data packet receiving module 3510 is used to receive a first data packet; wherein the first data packet has a first bottleneck congestion window value and a first bottleneck load level, the first bottleneck congestion window value is used to indicate the smallest outgoing port congestion window value among all forwarding devices in the current communication path, and the first bottleneck load level is used to indicate the largest outgoing port load level among all forwarding devices in the current communication path; each forwarding device in the current communication path is used to update the first bottleneck congestion window value with the outgoing port congestion window value when the outgoing port congestion window value of the forwarding device is smaller than the first bottleneck congestion window value, and to update the first bottleneck load level with the outgoing port load level when the outgoing port load level of the forwarding device is larger than the first bottleneck load level; The acknowledgment message generation module 3520 is used to generate a first acknowledgment message based on the first bottleneck congestion window value and the first bottleneck load level in the first data message. The acknowledgment message sending module 3530 is used to send a first acknowledgment message so that the sending device can perform a routing process based on the first bottleneck congestion window value and the first bottleneck load level in the first acknowledgment message.
[0277] Reference Figure 36 , Figure 36 To implement the structural block diagram of a portion of the terminal 130 in the message transmission method of this embodiment, the terminal includes: a radio frequency (RF) circuit 3610, a memory 3615, an input unit 3630, a display unit 3640, a sensor 3650, an audio circuit 3660, a wireless fidelity (WiFi) module 3670, a processor 3680, and a power supply 3690, etc. Those skilled in the art will understand that... Figure 36 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.
[0278] The RF circuit 3610 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 3680; in addition, it transmits uplink data to the base station.
[0279] The memory 3615 can be used to store software programs and modules. The processor 3680 executes various terminal functions and data processing by running the software programs and modules stored in the memory 3615.
[0280] The input unit 3630 can be used to receive input numeric or character information, and to generate key signal inputs related to the terminal's settings and function control. Specifically, the input unit 3630 may include a touch panel 3631 and other input devices 3632.
[0281] Display unit 3640 can be used to display input or provided information, as well as various menus of the terminal. Display unit 3640 may include display panel 3641.
[0282] Audio circuit 3660, speaker 3661, and microphone 3662 provide an audio interface.
[0283] In this embodiment, the processor 3680 included in the terminal can execute the message transmission method of the previous embodiment. 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 disclosure can be applied to various scenarios, including but not limited to cloud technology, artificial intelligence, smart transportation, and assisted driving.
[0284] Reference Figure 37 , Figure 37 This is a partial structural block diagram of a forwarding device 120 implementing the message transmission method of this disclosure embodiment. The forwarding device 120 can vary significantly due to different configurations or performance characteristics. It may include one or more central processing units (CPUs) 3722 (e.g., one or more processors) and a memory 3732, and one or more storage media 3730 (e.g., one or more mass storage devices) storing application programs 3742 or data 3744. The memory 3732 and storage media 3730 can be temporary or persistent storage. The program stored in the storage media 3730 may include one or more modules (not shown in the diagram), each module including a series of instruction operations on the forwarding device 3700. Furthermore, the CPU 3722 may be configured to communicate with the storage media 3730 and execute the series of instruction operations in the storage media 3730 on the forwarding device 3700.
[0285] The forwarding device 3700 may also include one or more power supplies 3726, one or more wired or wireless network interfaces 3750, one or more input / output interfaces 3758, and / or one or more operating systems 3741.
[0286] The processor in the forwarding device 3700 can be used to execute the message transmission method of the present disclosure embodiments.
[0287] Reference Figure 38 , Figure 38 This is a partial structural block diagram of a server 110 implementing the message transmission method of this disclosure embodiment. The server 110 can vary significantly due to different configurations or performance characteristics. It may include one or more central processing units (CPUs) 3822 (e.g., one or more processors) and a memory 3832, and one or more storage media 3830 (e.g., one or more mass storage devices) storing application programs 3842 or data 3844. The memory 3832 and storage media 3830 may be temporary or persistent storage. The program stored in the storage media 3830 may include one or more modules (not shown in the diagram), each module including a series of instruction operations on the server 3800. Furthermore, the CPU 3822 may be configured to communicate with the storage media 3830 and execute the series of instruction operations in the storage media 3830 on the server 3800.
[0288] Server 3800 may also include one or more power supplies 3826, one or more wired or wireless network interfaces 3850, one or more input / output interfaces 3858, and / or one or more operating systems 3841, such as Windows Server™, Mac OS X™, Unix™, Linux™, FreeBSD™, etc.
[0289] The processor in server 3800 can be used to execute the message transmission method of the embodiments of this disclosure.
[0290] This disclosure also provides a computer-readable storage medium for storing a computer program for executing the message transmission methods of the foregoing embodiments.
[0291] This disclosure also provides a computer program product, which includes a computer program. The processor of an electronic device reads and executes the computer program, causing the electronic device to perform the message transmission method described above.
[0292] The terms “first,” “second,” “third,” “fourth,” etc. (if present) in this disclosure and the accompanying drawings are used to distinguish similar objects and are not necessarily used to describe a particular order or sequence. It should be understood that such 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 apparatus.
[0293] It should be understood that in this disclosure, "at least one item" means one or more, and "more than one" means two or more. "And / or" is used to describe the relationship between related objects, 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 objects 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.
[0294] It should be understood that in the description of the embodiments of this disclosure, "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.
[0295] In the several 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. Furthermore, the coupling or direct coupling or communication connection shown or discussed may be through some interfaces, or indirect coupling or communication connection between apparatuses or units, and may be electrical, mechanical, or other forms.
[0296] 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.
[0297] 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.
[0298] 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 (computer programs) to cause an electronic device (which may be a personal computer, server, 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 computer programs, such as USB flash drives, portable hard drives, read-only memory (ROM), random access memory (RAM), magnetic disks, or optical disks.
[0299] It should also be understood that the various implementation methods provided in this disclosure can be combined arbitrarily to achieve different technical effects. In this disclosure, the terms "module" or "unit" refer to a computer program or part of a computer program that has a predetermined function and works with other related parts to achieve a predetermined goal, and can be implemented wholly or partially using software, hardware (such as processing circuitry or memory), or a combination thereof. Similarly, a processor (or multiple processors or memory) can be used to implement one or more modules or units. Furthermore, each module or unit can be part of an overall module or unit that includes the functionality of that module or unit.
[0300] 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, A sending device applied in a message transmission network; wherein the message transmission network further includes a receiving device and multiple forwarding devices, and the sending device and the receiving device form a communication path through the forwarding devices; the message transmission method includes: Generate a first data packet; wherein the first data packet has a first bottleneck congestion window value and a first bottleneck load level, the first bottleneck congestion window value is used to indicate the smallest outgoing port congestion window value among the forwarding devices of the current communication path, and the first bottleneck load level is used to indicate the largest outgoing port load level among the forwarding devices of the current communication path. Initialize the first bottleneck congestion window value and the first bottleneck load level, and send the first data packet so that each forwarding device of the current communication path updates the first bottleneck congestion window value with the outgoing port congestion window value when the outgoing port congestion window value of the forwarding device is smaller than the first bottleneck congestion window value, and updates the first bottleneck load level with the outgoing port load level when the outgoing port load level of the forwarding device is larger than the first bottleneck load level. Receive a first acknowledgment message; wherein the first acknowledgment message is generated by the receiving device based on the first bottleneck congestion window value and the first bottleneck load level in the first data packet; Based on the first bottleneck congestion window value and the first bottleneck load level in the first confirmation message, a routing process is performed.
2. The message transmission method according to claim 1, characterized in that, The step of performing route switching based on the first bottleneck congestion window value and the first bottleneck load level in the first confirmation message includes: Based on the first bottleneck congestion window value and the first bottleneck load level in the first confirmation message, a switch to the current communication path is determined; Determine the target communication path from multiple candidate communication paths; Switch the current communication path to the target communication path.
3. The message transmission method according to claim 2, characterized in that, The step of determining the switching of the current communication path based on the first bottleneck congestion window value and the first bottleneck load level in the first confirmation message includes: The current available bandwidth of the current communication path is determined based on the first bottleneck congestion window value and the first bottleneck load level in the first confirmation message. If the currently available bandwidth is less than the required bandwidth, then a switch to the current communication path is determined.
4. The message transmission method according to claim 2, characterized in that, Determining the target communication path from multiple candidate communication paths includes: Multiple probe messages are generated for the multiple candidate communication paths, each probe message having a second bottleneck congestion window value and a second bottleneck load level. The second bottleneck congestion window value is used to indicate the minimum outgoing port congestion window value among the forwarding devices of the candidate communication path corresponding to the probe message, and the second bottleneck load level is used to indicate the maximum outgoing port load level among the forwarding devices of the candidate communication path corresponding to the probe message. Initialize the second bottleneck congestion window value and the second bottleneck load level, and send the probe message so that each forwarding device of the candidate communication path updates the second bottleneck congestion window value with the outgoing port congestion window value when the outgoing port congestion window value of the forwarding device is smaller than the second bottleneck congestion window value, and updates the second bottleneck load level with the outgoing port load level when the outgoing port load level of the forwarding device is larger than the second bottleneck load level. Receive a probe confirmation message; wherein the probe confirmation message is generated by the receiving device based on the second bottleneck congestion window value and the second bottleneck load level in the probe message; Based on the second bottleneck congestion window value and the second bottleneck load level in the detection confirmation message, the target communication path is determined from the plurality of candidate communication paths.
5. The message transmission method according to claim 4, characterized in that, The multiple probe messages are sent in multiple batches; the step of determining the target communication path from the multiple candidate communication paths based on the second bottleneck congestion window value and the second bottleneck load level in the probe confirmation message includes: For the detection confirmation messages received in the current batch, perform the following processing: Based on the second bottleneck congestion window value and the second bottleneck load level in the probe confirmation message, the predicted available bandwidth of the candidate communication path corresponding to the probe confirmation message is predicted. Candidate communication paths whose predicted available bandwidth is greater than or equal to the required bandwidth are identified as filtered communication paths. In the filtered communication paths, the target communication path is determined based on the second bottleneck load level; If the target communication path is not determined in the current batch, the target communication path is determined in the next batch of the current batch, until all batches have been traversed.
6. The message transmission method according to claim 5, characterized in that, If the target communication path is not determined in the current batch, the target communication path is determined in the next batch of the current batch, and this process continues until all batches have been traversed. The message transmission method further includes: If the target communication path is not determined after traversing the multiple batches, then the candidate communication path corresponding to the probe confirmation message with the lowest second bottleneck load in the multiple batches is determined as the target communication path. If the target communication path is not determined after traversing the multiple batches, and the second bottleneck load level in the probe confirmation messages of the multiple batches is equal, then the candidate communication path corresponding to the probe confirmation message with the largest second bottleneck congestion window value in the multiple batches is determined as the target communication path.
7. The message transmission method according to claim 4, characterized in that, After generating multiple probe messages for the multiple candidate communication paths, the message transmission method further includes: Different values are configured for the path control field in the plurality of probe messages; wherein, the path control field is a portion of a plurality of routing factor fields, and the plurality of routing factor fields are used to perform routing calculations to obtain the communication path between the sending device and the receiving device; Switching the current communication path to the target communication path includes: Configure a target value for the path control field in the second data packet, so that the second data packet is transmitted through the target communication path; wherein the target value represents the value of the path control field in the probe packet corresponding to the target communication path.
8. The message transmission method according to claim 7, characterized in that, Sending the probe message includes: The multiple probe messages are alternately transmitted through multiple output ports of the transmitting device; After configuring the target value for the path control field in the second data message, the message transmission method further includes: The second data packet is sent through the target output port, so that the second data packet is transmitted through the target communication path; wherein, the target output port refers to the output port through which the sending device sends the probe packet corresponding to the target communication path.
9. The message transmission method according to claim 4, characterized in that, After generating multiple probe messages for the multiple candidate communication paths, the message transmission method further includes: Configure different values for the probe message identifier field in the plurality of probe messages to identify the corresponding candidate communication path; After receiving the probe confirmation message, the message transmission method further includes: Based on the value of the probe message identifier field in the probe confirmation message, the candidate communication path corresponding to the probe confirmation message is determined, so as to determine the target communication path among the multiple candidate communication paths according to the second bottleneck congestion window value and the second bottleneck load level in the probe confirmation message.
10. The message transmission method according to any one of claims 1 to 9, characterized in that, After generating the first data message, the message transmission method further includes: A current congestion window value is added to the first data packet so that after receiving the first data packet, the forwarding device can determine the egress port congestion window value after receiving the first data packet based on the current congestion window value in the first data packet and the historical egress port congestion window value before receiving the first data packet; wherein, the current congestion window value is used to indicate the congestion window value of the current communication path.
11. The message transmission method according to any one of claims 1 to 9, characterized in that, After generating the first data message, the message transmission method further includes: Configure a target type value for the message type field in the first data packet, so that when the forwarding device reads that the value of the message type field in the first data packet is the target type value, it reads the probe tag field in the first data packet; Configure a target flag value for the probe flag field in the first data packet so that when the forwarding device reads that the value of the probe flag field in the first data packet is the target flag value, it performs the following processing: when the outgoing port congestion window value of the forwarding device is smaller than the first bottleneck congestion window value, update the first bottleneck congestion window value with the outgoing port congestion window value; when the outgoing port load level of the forwarding device is larger than the first bottleneck load level, update the first bottleneck load level with the outgoing port load level.
12. A message transmission method, characterized in that, The method is applied to any one of a plurality of forwarding devices in a message transmission network; wherein the message transmission network further includes a sending device and a receiving device, and the sending device and the receiving device form a communication path through the forwarding device; the message transmission method includes: Receive a first data packet; wherein the first data packet has a first bottleneck congestion window value and a first bottleneck load level, the first bottleneck congestion window value is used to indicate the smallest outgoing port congestion window value among the forwarding devices of the current communication path, and the first bottleneck load level is used to indicate the largest outgoing port load level among the forwarding devices of the current communication path. When the outgoing port congestion window value of the forwarding device is smaller than the first bottleneck congestion window value, the first bottleneck congestion window value is updated with the outgoing port congestion window value; when the outgoing port load level of the forwarding device is larger than the first bottleneck load level, the first bottleneck load level is updated with the outgoing port load level. The first data packet is sent so that the receiving device generates a first acknowledgment packet based on the first bottleneck congestion window value and the first bottleneck load level in the first data packet, and the sending device performs a routing process based on the first bottleneck congestion window value and the first bottleneck load level in the first acknowledgment packet.
13. The message transmission method according to claim 12, characterized in that, The first data packet also has a current congestion window value, which is used to indicate the congestion window value of the current communication path; After receiving the first data packet, the packet transmission method further includes: The current congestion window value in the first data packet and the historical outgoing port congestion window value before the first data packet was received are fused to obtain the outgoing port congestion window value after the first data packet was received.
14. A message transmission method, characterized in that, A receiving device used in a message transmission network; wherein the message transmission network further includes a sending device and multiple forwarding devices, and the sending device and the receiving device form a communication path through the forwarding devices; the message transmission method includes: A first data packet is received; wherein the first data packet has a first bottleneck congestion window value and a first bottleneck load level, the first bottleneck congestion window value is used to indicate the smallest outgoing port congestion window value among all forwarding devices in the current communication path, and the first bottleneck load level is used to indicate the largest outgoing port load level among all forwarding devices in the current communication path; each forwarding device in the current communication path updates the first bottleneck congestion window value with the outgoing port congestion window value when the outgoing port congestion window value of the forwarding device is smaller than the first bottleneck congestion window value, and updates the first bottleneck load level with the outgoing port load level when the outgoing port load level of the forwarding device is larger than the first bottleneck load level. A first confirmation message is generated based on the first bottleneck congestion window value and the first bottleneck load level in the first data message; The first confirmation message is sent so that the sending device can perform a routing process based on the first bottleneck congestion window value and the first bottleneck load level in the first confirmation message.
15. A message transmission device, characterized in that, A sending device used in a message transmission network; wherein the message transmission network further includes a receiving device and multiple forwarding devices, and the sending device and the receiving device form a communication path through the forwarding devices; the message transmission device includes: A data packet generation module is used to generate a first data packet; wherein the first data packet has a first bottleneck congestion window value and a first bottleneck load level, the first bottleneck congestion window value is used to indicate the smallest outgoing port congestion window value among the various forwarding devices of the current communication path, and the first bottleneck load level is used to indicate the largest outgoing port load level among the various forwarding devices of the current communication path. The data packet sending module is used to initialize the first bottleneck congestion window value and the first bottleneck load level, and send the first data packet so that each forwarding device of the current communication path updates the first bottleneck congestion window value with the outgoing port congestion window value when the outgoing port congestion window value of the forwarding device is smaller than the first bottleneck congestion window value, and updates the first bottleneck load level with the outgoing port load level when the outgoing port load level of the forwarding device is larger than the first bottleneck load level. The acknowledgment message receiving module is used to receive a first acknowledgment message; wherein, the first acknowledgment message is generated by the receiving device based on the first bottleneck congestion window value and the first bottleneck load level in the first data message; The routing module is used to perform routing processing based on the first bottleneck congestion window value and the first bottleneck load level in the first confirmation message.
16. A message transmission device, characterized in that, The message transmission device is applied to any one of a plurality of forwarding devices included in a message transmission network; wherein, the message transmission network further includes a sending device and a receiving device, and the sending device and the receiving device form a communication path through the forwarding device; the message transmission device includes: A data packet forwarding module is used to receive a first data packet; wherein the first data packet has a first bottleneck congestion window value and a first bottleneck load level, the first bottleneck congestion window value is used to indicate the smallest outgoing port congestion window value among the forwarding devices of the current communication path, and the first bottleneck load level is used to indicate the largest outgoing port load level among the forwarding devices of the current communication path. The data packet update module is used to update the first bottleneck congestion window value with the outgoing port congestion window value when the outgoing port congestion window value of the forwarding device is smaller than the first bottleneck congestion window value, and to update the first bottleneck load level with the outgoing port load level when the outgoing port load level of the forwarding device is larger than the first bottleneck load level. The data packet forwarding module is further configured to send the first data packet so that the receiving device generates a first acknowledgment packet based on the first bottleneck congestion window value and the first bottleneck load level in the first data packet, and enables the sending device to perform routing processing based on the first bottleneck congestion window value and the first bottleneck load level in the first acknowledgment packet.
17. A message transmission device, characterized in that, A receiving device used in a message transmission network; wherein the message transmission network further includes a sending device and multiple forwarding devices, and the sending device and the receiving device form a communication path through the forwarding devices; the message transmission device includes: A data packet receiving module is configured to receive a first data packet; wherein the first data packet has a first bottleneck congestion window value and a first bottleneck load level, the first bottleneck congestion window value is used to indicate the smallest outgoing port congestion window value among all forwarding devices in the current communication path, and the first bottleneck load level is used to indicate the largest outgoing port load level among all forwarding devices in the current communication path; each forwarding device in the current communication path is configured to update the first bottleneck congestion window value with the outgoing port congestion window value when the outgoing port congestion window value of the forwarding device is smaller than the first bottleneck congestion window value, and update the first bottleneck load level with the outgoing port load level when the outgoing port load level of the forwarding device is larger than the first bottleneck load level. The acknowledgment message generation module is used to generate a first acknowledgment message based on the first bottleneck congestion window value and the first bottleneck load level in the first data message; The acknowledgment message sending module is used to send the first acknowledgment message so that the sending device can perform a routing process based on the first bottleneck congestion window value and the first bottleneck load level in the first acknowledgment message.
18. An electronic device comprising a memory and a processor, the memory storing 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 14.
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 14.
20. A computer program product, the computer program product comprising a computer program, characterized in that, The computer program is read and executed by the processor of the electronic device, causing the electronic device to perform the message transmission method according to any one of claims 1 to 14.