Data transmission method and related device
By identifying data flows in the communication device and performing load balancing strategies for non-CC data flows, the problem of the independent mutuality of congestion control strategies and load balancing strategies in the prior art is solved, and the congestion convergence speed and throughput of the network are improved.
Patent Information
- Application Number
- CN202311375776.7
- Authority / Receiving Office
- CN · China
- Patent Type
- Applications(China)
- Current Assignee / Owner
- Filing Date
- 2023-10-20
- Publication Date
- 2025-04-22
AI Technical Summary
The congestion control strategies and load balancing strategies in the existing network are independent of each other, resulting in a decrease in the convergence speed of solving network congestion and affecting network throughput.
By identifying the data flow in the communication device, load balancing policies are performed for the non-congestion control (CC) data flow, making full use of the network's spare bandwidth; no load balancing policies are performed for the CC data flow, avoiding incorrect adjustment of the forwarding path.
It improves the convergence speed of solving network congestion, improves network throughput, and ensures the order of data flows.
Smart Images

Figure CN119865459A_ABST
Abstract
Description
Technical Field
[0001] The present application relates to the field of communication technology, and in particular to a data transmission method and related devices. Background Art
[0002] When data streams from multiple senders arrive at the same receiver at the same time, the multiple data streams are called many-to-one incast data streams, or incast data streams. In a network, the presence of incast data streams causes network congestion. Currently, common solutions to network congestion include: a congestion control strategy that controls the sending rate of data streams, or a load balancing strategy that adjusts the transmission path of data streams.
[0003] In one example, the congestion control (CC) strategy includes a data center quantized congestion notification (DCQCN). In the DCQCN scheme, the communication device determines whether congestion occurs when forwarding a message. For example, the communication device determines whether congestion occurs based on the queue length of the port. If congested, the communication device marks the message with an explicit congestion notification (ECN). When the receiving end receives a message marked with an ECN, it replies to the sending end with a congestion notification packet (CNP). After receiving the CNP message, the sending end reduces the transmission rate of the data stream. In one example, the load balancing strategy includes adaptive routing. The communication device or the sending end dynamically adjusts the transmission path of the data stream based on the congestion information of the local port and the congestion information of the downstream transmission path to avoid the congested transmission path.
[0004] However, in current networks, congestion control strategies and load balancing strategies act independently of each other, and therefore are prone to mutual influence, which reduces the convergence speed of solving network congestion and affects network throughput. Summary of the invention
[0005] In the first aspect, an embodiment of the present application proposes a data processing method, which is applied to a first communication device, and the first communication device can be a sender of a data stream in a network, or any hop communication device in the network for forwarding data streams. The method includes: the first communication device receives a first message; then, the first communication device determines, based on the first message, that the first data stream corresponding to the first message is a non-congestion controlled CC data stream; finally, the first communication device executes a load balancing strategy on the first data stream corresponding to the first message based on the first data stream being the non-CC data stream.
[0006] Specifically, the congestion control (CC) data flow in the embodiment of the present application includes but is not limited to: many-to-one incast data flow or high-speed-to-low-speed data flow (or high-rate-to-low-rate data flow).
[0007] Regarding incast data flow, it refers to when multiple data flows from multiple sending ends arrive at the same receiving end at the same time, and cause congestion at the egress port of the receiving end, the multiple data flows are called incast data flow. Regarding incast data flow, it can also refer to the traffic of multiple hosts being sent to the same host at the same time, and the egress port receiving the traffic of the multiple hosts is in a congested state, and the traffic of the multiple hosts is called incast traffic. Incast data flow can also be called polycast data flow, which is not limited in the embodiments of the present application.
[0008] Regarding high-speed beating low-speed data flow, it means that the rate of the input port of the communication device is high and the rate of the output port of the communication device is low. The data flow congested due to the flow rate difference between the input port and the output port is called high-speed beating low-speed data flow. It should be noted that the data flow congested due to the flow rate difference between the input port and the output port can also be called a data flow with a high rate beating a data flow with a low rate, or a data flow with a high rate beating a data flow with a low rate, and the embodiments of the present application do not limit this.
[0009] Other data flows relative to CC data flows are called non-congestion control (non-CC) data flows, or non-CC data flows. The embodiments of the present application do not limit this.
[0010] Further, the first communication device may determine that the first data stream is a non-CC data stream according to one message of the first data stream or multiple messages of the first data stream.
[0011] Optionally, the first data flow may be a data flow after the CC data flow is released from congestion.
[0012] It should be noted that the load balancing strategy in the embodiment of the present application includes multiple possible implementation methods, which are not limited in the embodiment of the present application. Exemplarily, the load balancing strategy in the embodiment of the present application includes but is not limited to: adaptive routing, equal cost multi-path routing ECMP, packet-level load balancing, or sub-flow flowlet load balancing.
[0013] In the embodiment of the present application, the communication device can identify the data flow, execute the load balancing strategy for the non-CC data flow, make full use of the spare bandwidth of the network, and improve the network throughput.
[0014] In combination with the first aspect, in a possible implementation of the first aspect, after executing the load balancing strategy on the first message, the method further includes: when the result of the load balancing is that there is no switchable path, performing congestion control on the first data flow.
[0015] Specifically, the result of the load balancing is that there is no switchable path, which means that there is no switchable path locally in the first communication device and there is no switchable path in the upstream communication device of the first communication device. The switchable path refers to a non-congested path, or a path in a non-congested state. The path in the embodiment of the present application can also be replaced by a link, a tunnel, or a channel, etc., which is not limited here.
[0016] In combination with the first aspect, in a possible implementation of the first aspect, the method also includes: receiving a second message; determining that the second data flow corresponding to the second message is a CC data flow; and based on the second data flow being the CC data flow, not executing a load balancing strategy for the second data flow corresponding to the second message.
[0017] It should be noted that the above-mentioned first data stream and the second data stream can be the same data stream. In other words, as the network status changes, the data stream changes from a CC data stream to a non-CC data stream, or the data stream changes from a non-CC data stream to a CC data stream; the above-mentioned first data stream and the second data stream can also be different data streams.
[0018] Further, the first communication device may determine that the second data stream is a CC data stream according to one message of the second data stream or multiple messages of the second data stream.
[0019] In the embodiment of the present application, the communication device can identify the data flow and not execute the load balancing strategy for the CC data flow, thereby avoiding disorder caused by incorrect execution of the load balancing strategy for the CC data flow. Through the above method, the convergence speed of solving network congestion is improved, and the network throughput is improved.
[0020] In combination with the first aspect, in a possible implementation of the first aspect, the method further includes: performing congestion control on the second data stream. It should be noted that the congestion control strategy in the embodiment of the present application includes a variety of possible implementations, which are not limited by the embodiment of the present application. Exemplarily, the congestion control strategy in the embodiment of the present application includes but is not limited to: DCQCN strategy, TIMELY strategy, "Swift" algorithm, or High-Performance Computing Cluster (HPCC) strategy.
[0021] In one possible implementation, after receiving a message about the second data stream, the first communication device determines that the second data stream needs to be congested controlled based on the congestion identifier carried in the message. The first communication device triggers congestion control on the second data stream based on the congestion identifier carried in the message. In one example, the first communication device reduces the sending rate of the second data stream. In another example, the first communication device measures the round-trip time (RTT) of the second data stream, and then determines whether to reduce the sending rate of the second data stream based on the RTT of the second data stream. The RTT of the second data stream can be the RTT between the sending end of the second data stream (the first communication device) and the receiving end of the second data stream.
[0022] In the embodiment of the present application, network congestion is resolved by performing congestion control on the second data stream.
[0023] In combination with the first aspect, in a possible implementation of the first aspect, the method also includes: receiving first label information sent by a third communication device, the first label information being used to indicate that a non-congested path exists for the third communication device; determining that a non-congested path exists for the third communication device based on the first label information; after receiving the first message, the method also includes: when no non-congested path exists locally for the first communication device, sending first indication information to the third communication device, the first indication information being used to instruct the third communication device to switch the forwarding path of the first data stream.
[0024] In an embodiment of the present application, when the third communication device determines that there are multiple non-congested paths locally, the third communication device can perform path switching processing on the non-CC data flow. The third communication device sends a first label information to the downstream communication device, and the first label information is used to indicate that there is a non-congested path for the third communication device. The specific location of the communication device that can switch the path is notified by the first label information. When the non-CC data flow needs to be congested, it can quickly switch to the non-congested path to forward the non-CC data flow, thereby improving the speed of congestion control and improving network throughput.
[0025] In combination with the first aspect, in a possible implementation of the first aspect, the receiving the first tag information sent by the third communication device includes: receiving the first message sent by the third communication device, the first message carrying the first tag information. That is, the third communication device sends the first tag information along with the stream. In another possible implementation, the first tag information is independent of the message of the data stream. The first tag information can be transmitted to the downstream communication device in a variety of ways, thereby improving the implementation flexibility of the solution.
[0026] In combination with the first aspect, in a possible implementation of the first aspect, there are multiple possible implementations of the first tag information. In one possible implementation, the first tag information is used to identify a third communication device. When a downstream communication device receives the first tag information, the downstream communication device determines that there are multiple non-congested paths to the third communication device based on the first tag information. In another possible implementation, the first tag information includes identity information of the third communication device, and the first tag information also includes a congestion status identifier associated with the third communication device, and the congestion status identifier indicates whether there are multiple non-congested paths to the third communication device. In another possible implementation, the first tag information includes the congestion status of at least one local egress port in the third communication device, and / or the congestion status of the next hop corresponding to at least one local egress port in the third communication device. Since there are multiple possible implementations of the first tag information, the implementation flexibility of the solution is improved.
[0027] In combination with the first aspect, in a possible implementation of the first aspect, the first tag information includes any one or more of the following information: the hierarchical information of the third communication device in the network, the address information of the third communication device, the identity of the third communication device, or the location information of the third communication device. Exemplarily, the first tag information is the hierarchical information of the third communication device in the network, and the hierarchical information indicates the location of the third communication device in the network, for example, the third communication device is a layer 2 communication device in the network. In another example, the first tag information is the address information of the third communication device, such as the IP address or the media access control (Media Access Control, MAC) address of the third communication device. In another example, the first tag information is the location information of the third communication device, for example, the number of hops of the third communication device relative to the communication device passed by the sending end.
[0028] In combination with the first aspect, in a possible implementation of the first aspect, the sending the first indication information to the third communication device includes: sending a first notification message to the third communication device, the first notification message carrying the first indication information, the first notification message also including any one or more of the following fields: the source address of the first data stream, the destination address of the first data stream, the source port of the first data stream, the destination port of the first data stream, the transport layer protocol information of the first data stream, or the identity of the first data stream. Optionally, the first notification message may also include a queue pair (QP) of the first data stream, a service type of the first data stream, or a port index of the first data stream, which can be used to identify the identity of the first data stream.
[0029] In combination with the first aspect, in a possible implementation of the first aspect, the method further includes: receiving a third message, the third message is used to indicate that the first data flow is the non-CC data flow, and the third message is also used to indicate that a load balancing strategy is executed on the first data flow. Specifically, the third message may be sent by the last-hop communication device in the network. When the last-hop communication device identifies the first data flow as a non-CC data flow, the communication device in the network is notified that the first data flow is a non-CC data flow by sending the third message. The third message may also be called a CC flow congestion relief notification message.
[0030] In the embodiment of the present application, the first data stream is notified by the third message, so that the communication device can accurately identify the first data stream as a non-CC data stream.
[0031] In combination with the first aspect, in a possible implementation manner of the first aspect, the third message includes any one or more of the following fields: a third message type identifier, the source address of the first data stream, the destination address of the first data stream, the source port of the first data stream, the destination port of the first data stream, the transport layer protocol information of the first data stream, the identity identifier of the first data stream, or a CC indication, wherein the third message type identifier indicates that the third message is a notification message for notifying the non-CC data stream, and the CC indication is used to indicate that the third message is about the CC data stream or the non-CC data stream.
[0032] In combination with the first aspect, in a possible implementation manner of the first aspect, after receiving the third message, the method also includes: updating data stream matching information according to the third message, the data stream matching information including an association relationship between a data stream and an attribute of the data stream, the updated data stream matching information indicating that the first data stream is the non-CC data stream, and the data stream matching information is used to detect the data stream.
[0033] Specifically, based on the relevant information of the first data stream and the data stream matching information, it is determined that the first data stream is the non-CC data stream, wherein the relevant information of the first data stream includes any one or more of the following information: the source address of the first data stream, the destination address of the first data stream, the source port of the first data stream, the destination port of the first data stream, the transport layer protocol information of the first data stream, or the identity of the first data stream.
[0034] In an embodiment of the present application, after the communication device receives a message of a data stream, the communication device obtains relevant information of the data stream from the message, and the relevant information of the data stream indicates the data stream corresponding to the message. Then the communication device determines the data stream corresponding to the message based on the relevant information of the data stream and the data stream matching information. The data stream matching information includes the association relationship between the data stream and the data stream, and the data stream matching information can also be called a CC data stream table. The relevant information of the data stream is used to identify the data stream. Exemplarily, the relevant information of the data stream includes but is not limited to: the source address of the data stream, the destination address of the data stream, the source port of the data stream, the destination port of the data stream, the transport layer protocol information of the data stream, the queue pair (queue pair, QP) of the data stream, the service type of the data stream, or the port index of the data stream. Through the data stream matching information, it is possible to accurately identify whether the data stream is a CC data stream or a non-CC data stream, thereby improving the implementation flexibility of the solution.
[0035] In combination with the first aspect, in a possible implementation manner of the first aspect, determining that the first data stream corresponding to the first message is the non-CC data stream includes: determining that the first data stream corresponding to the first message is the non-CC data stream based on the fact that the first message does not include a CC indication.
[0036] In another example, the first communication device determines the data stream corresponding to the message according to the value of the CC indication (or CC field, or CC identifier, or CC indication field, etc.) in the message. When the value of the CC indication is a first value, the data stream corresponding to the message is a CC data stream; when the value of the CC indication is a second value, the data stream corresponding to the message is a non-CC data stream. The first value may be "1" and the second value may be "0".
[0037] In the embodiment of the present application, the data flow corresponding to the message is determined by whether the message of the data flow carries a CC indication. The data flow corresponding to the message can be determined in a variety of ways, which improves the implementation flexibility of the solution.
[0038] In combination with the first aspect, in a possible implementation of the first aspect, the method further includes: receiving a fourth message, the fourth message being used to indicate that the second data flow is the CC data flow, and the fourth message being used to indicate that a load balancing strategy is not executed on the second data flow. Specifically, the fourth message may be sent by the last-hop communication device in the network, and when the last-hop communication device identifies the second data flow as a CC data flow, the fourth message is sent to notify the communication device in the network that the second data flow is a CC data flow. The fourth message may also be referred to as a CC flow congestion notification message.
[0039] In the embodiment of the present application, the second data stream is notified by the fourth message, so that the communication device can accurately identify the second data stream as a CC data stream.
[0040] In combination with the first aspect, in a possible implementation manner of the first aspect, the fourth message includes any one or more of the following fields: a fourth message type identifier, the source address of the first data stream, the destination address of the first data stream, the source port of the first data stream, the destination port of the first data stream, the transport layer protocol information of the first data stream, the identity identifier of the first data stream, or a CC indication, wherein the fourth message type identifier indicates that the fourth message is a notification message for notifying the CC data stream, and the CC indication is used to indicate that the fourth message is about the CC data stream or the non-CC data stream.
[0041] In combination with the first aspect, in a possible implementation of the first aspect, after receiving the fourth message, the method further includes: updating data stream matching information according to the fourth message, the data stream matching information including an association relationship between a data stream and an attribute of the data stream, the updated data stream matching information indicating that the second data stream is the CC data stream, and the data stream matching information is used to detect the data stream; determining that the second data stream corresponding to the second message is the CC data stream includes: determining that the second data stream is the CC data stream according to relevant information of the second data stream and the data stream matching information, wherein the relevant information of the second data stream includes any one or more of the following information: the source address of the second data stream, the destination address of the second data stream, the source port of the second data stream, the destination port of the second data stream, the transport layer protocol information of the second data stream, or the identity of the second data stream. Through the data stream matching information, it is possible to accurately identify whether the data stream is a CC data stream or a non-CC data stream, thereby improving the implementation flexibility of the solution.
[0042] In combination with the first aspect, in a possible implementation manner of the first aspect, determining that the second data stream corresponding to the second message is the CC data stream includes: determining that the second data stream is the CC data stream based on second information of the second message and the data stream matching information, wherein the second information includes any one or more of the following information: the source address of the second data stream, the destination address of the second data stream, the source port of the second data stream, the destination port of the second data stream, the transport layer protocol information of the second data stream, or the identity of the second data stream.
[0043] In combination with the first aspect, in a possible implementation manner of the first aspect, determining that the second data stream corresponding to the second message is the CC data stream includes: determining that the second data stream corresponding to the second message is the CC data stream according to a CC indication included in the second message.
[0044] In combination with the first aspect, in a possible implementation of the first aspect, after determining that the second data stream corresponding to the second message is the CC data stream, the method further includes: generating the second message with a CC indication added according to the second message, the CC indication being used to indicate that the second data stream is the CC data stream; and sending the second message with the CC indication added. In an embodiment of the present application, the data stream corresponding to the message is determined by whether the message of the data stream carries a CC indication. The data stream corresponding to the message can be determined in a variety of ways, which improves the implementation flexibility of the solution.
[0045] In a second aspect, an embodiment of the present application proposes a data processing method, which is applied to a second communication device, and the second communication device may be a last-hop communication device on a forwarding path of a data stream in a network. The method comprises: first, the second communication device determines that a local egress port is congested; then, the second communication device determines that a second data stream transmitted in the local egress port is a CC data stream according to the local egress port being in a congested state; finally, the second communication device sends a fourth message, and the fourth message is used to indicate that the second data stream is the CC data stream, and the fourth message is also used to indicate that a load balancing strategy is not executed on the second data stream.
[0046] In one possible implementation, the second communication device sends the fourth message to a receiving end of the second data stream, and notifies a sending end of the second data stream of the second data stream through the receiving end. In another possible implementation, the second communication device sends the fourth message to a sending end of the second data stream.
[0047] In the embodiment of the present application, the last-hop communication device in the network detects and determines the data flow, and then the last-hop communication device notifies the sending end and any hop communication device in the network of the data flow. After receiving the data flow, the communication device can determine the attributes of the data flow, and then the load balancing strategy is not executed for the data flow with the attribute of CC data flow. By identifying and notifying the CC data flow, the forwarding path is avoided from being adjusted incorrectly when the CC data flow executes the load balancing strategy. The convergence speed of solving network congestion is improved.
[0048] In combination with the second aspect, in a possible implementation of the second aspect, the sending of the fourth message includes: the second communication device receives the second message sent by the upstream communication device, the second message belongs to the second data stream; then, the second communication device generates the fourth message according to the second message, the fourth message includes the second message, the fourth message also includes a CC indication, the CC indication of the fourth message is used to indicate that the second data stream is the CC data stream; the fourth message is sent to the receiving end of the second data stream. By sending the fourth message to the receiving end of the second data stream, the notification that the second data stream is a CC data stream is achieved, thereby improving the implementation flexibility of the method.
[0049] In combination with the second aspect, in a possible implementation of the second aspect, sending the fourth message includes: sending the fourth message to the previous hop of the second communication device, that is, the second communication device sends the fourth message along the reverse path of the forwarding path of the second data stream; or, sending the fourth message to the first communication device, which is the sending end of the second data stream.
[0050] In combination with the second aspect, in a possible implementation manner of the second aspect, the fourth message further includes a congestion indicator, and the congestion indicator indicates that the second data flow is in a congested state. Optionally, the congestion indicator is an explicit congestion notification (ECN).
[0051] In combination with the second aspect, in a possible implementation manner of the second aspect, the fourth message includes any one or more of the following fields: a fourth message type identifier, the source address of the first data stream, the destination address of the first data stream, the source port of the first data stream, the destination port of the first data stream, the transport layer protocol information of the first data stream, the identity identifier of the first data stream, or a CC indication, wherein the fourth message type identifier indicates that the fourth message is a notification message for notifying the CC data stream, and the CC indication is used to indicate that the fourth message is about the CC data stream or the non-CC data stream.
[0052] In combination with the second aspect, in a possible implementation manner of the second aspect, the method also includes: the second communication device determines that the local egress port is in a non-congested state; then, based on the local egress port being in a non-congested state, the second communication device determines that the first data stream transmitted in the local egress port is a non-CC data stream; the second communication device sends a third message, and the third message is used to indicate that the first data stream is the non-CC data stream, and the third message is also used to indicate that a load balancing strategy is executed on the first data stream.
[0053] In one possible implementation, the second communication device sends the third message to the receiving end of the second data stream, and notifies the sending end of the first data stream of the first data stream through the receiving end. In another possible implementation, the second communication device sends the third message to the sending end of the first data stream.
[0054] In the embodiment of the present application, the first data stream is notified by the third message, so that the communication device can accurately identify the first data stream as a non-CC data stream.
[0055] In combination with the second aspect, in a possible implementation manner of the second aspect, the third message includes any one or more of the following fields: a fourth message type identifier, the source address of the first data stream, the destination address of the first data stream, the source port of the first data stream, the destination port of the first data stream, the transport layer protocol information of the first data stream, the identity identifier of the first data stream, or a CC indication, wherein the fourth message type identifier indicates that the third message is a notification message for notifying the non-CC data stream, and the CC indication is used to indicate that the third message is about the CC data stream or the non-CC data stream.
[0056] In combination with the second aspect, in a possible implementation of the second aspect, the sending of the third message includes: a second communication device receives a first message, the first message belongs to the first data stream, the first message carries a CC indication, and the CC indication is used to indicate that the first data stream is the CC data stream; the second communication device generates the third message according to the second message, the third message is the first message with the CC indication removed; the second communication device sends the third message to the receiving end of the first data stream. The second communication device can notify the first data stream through the receiving end of the first data stream, thereby improving the implementation flexibility of the solution.
[0057] In combination with the second aspect, in a possible implementation of the second aspect, sending the third message includes: sending the third message to the previous hop of the second communication device, that is, the second communication device sends the third message along the reverse path of the forwarding path of the first data flow; or, sending the third message to the first communication device, which is the sending end of the first data flow.
[0058] In combination with the second aspect, in a possible implementation manner of the second aspect, the load balancing strategy includes: adaptive routing, equal cost multi-path routing ECMP, packet-level load balancing, or sub-flow flowlet load balancing.
[0059] In a third aspect, an embodiment of the present application proposes a data processing method, the method is applied to a receiving end, the receiving end is a receiving end in a network for receiving a second data stream or a first data stream, the method comprising: the receiving end receives a fourth message, the fourth message is used to indicate that the second data stream is a CC data stream, and the fourth message is also used to indicate that a load balancing strategy is not executed for the second data stream; the receiving end sends a fifth message to a sending end according to the fourth message, the fifth message is used to indicate that the second data stream is the CC data stream, the sending end is used to send the second data stream, and the fifth message is used to indicate that the load balancing strategy is not executed for the second data stream. The sending end is the sending end of the second data stream.
[0060] In the embodiment of the present application, the communication device in the network notifies the second data stream through the fourth message, and the receiving end generates a fifth message accordingly after receiving the fourth message, and notifies the second data stream through the fifth message, so that the communication device can accurately identify the second data stream as a CC data stream. By identifying and notifying the CC data stream or the non-CC data stream, the forwarding path is avoided from being adjusted incorrectly when the CC data stream executes the load balancing strategy.
[0061] In combination with the third aspect, in a possible implementation of the third aspect, the fourth message further includes a congestion indicator, and the congestion indicator instructs the sender of the second message to reduce the rate of sending the second data stream. By adding the congestion indicator to the fourth message, while notifying the second data stream, the sender can also be instructed to reduce the sending rate of the second data stream, saving communication resources and improving the convergence rate for resolving network congestion.
[0062] In combination with the third aspect, in a possible implementation manner of the third aspect, the congestion indicator is an explicit congestion notification ECN.
[0063] In combination with the third aspect, in a possible implementation manner of the third aspect, the fourth message includes any one or more of the following fields: a fourth message type identifier, the source address of the first data stream, the destination address of the first data stream, the source port of the first data stream, the destination port of the first data stream, the transport layer protocol information of the first data stream, the identity identifier of the first data stream, or a CC indication, wherein the fourth message type identifier indicates that the fourth message is a notification message for notifying the CC data stream, and the CC indication is used to indicate that the fourth message is about the CC data stream or the non-CC data stream.
[0064] In combination with the third aspect, in a possible implementation of the third aspect, the method also includes: receiving a third message, the third message is used to indicate that the first data stream is a non-CC data stream, and the third message is also used to indicate that a load balancing strategy is executed on the first data stream; according to the third message, sending a sixth message to the sending end, the sixth message is used to indicate that the first data stream is the non-CC data stream, and the sixth message is also used to indicate that a load balancing strategy is executed on the first data stream.
[0065] In an embodiment of the present application, a communication device in the network notifies the first data stream through a third message, and the receiving end generates a sixth message accordingly after receiving the third message, and notifies the first data stream through the sixth message, so that the communication device can accurately identify the first data stream as a non-CC data stream. By identifying and notifying CC data streams or non-CC data streams, it is avoided that the forwarding path is adjusted incorrectly when the CC data stream executes the load balancing strategy. For non-CC data streams, the load balancing strategy is executed first, and then the congestion control strategy is executed to make full use of the network's spare bandwidth and improve network throughput. Improve the convergence speed of resolving network congestion.
[0066] In combination with the third aspect, in a possible implementation manner of the third aspect, the third message includes any one or more of the following fields: a third message type identifier, the source address of the first data stream, the destination address of the first data stream, the source port of the first data stream, the destination port of the first data stream, the transport layer protocol information of the first data stream, the identity identifier of the first data stream, or a CC indication, wherein the third message type identifier indicates that the third message is a notification message for notifying the non-CC data stream, and the CC indication is used to indicate that the third message is about the CC data stream or the non-CC data stream.
[0067] In combination with the third aspect, in a possible implementation method of the third aspect, sending the third message includes: receiving a first message, the first message belongs to the first data stream, the first message carries a CC indication, and the CC indication is used to indicate that the first data stream is the CC data stream; generating the third message according to the second message, the third message is the first message with the CC indication removed; and sending the third message to a receiving end of the first data stream.
[0068] In combination with the third aspect, in a possible implementation of the third aspect, the load balancing strategy includes: adaptive routing, equal cost multi-path routing ECMP, packet-level load balancing, or sub-flow flowlet load balancing.
[0069] In a fourth aspect, an embodiment of the present application proposes a data processing method, which is applied to a third communication device, and the third communication device is any hop communication device between the sending end and the receiving end of the data stream in the network. Relative to the first communication device in the network, the third communication device is an upstream communication device of the first communication device, that is, the message of the data stream sent by the sending end first arrives at the third communication device, and then arrives at the first communication device. Relatively speaking, the first communication device is a downstream communication device of the third communication device. The method includes: sending first label information to a downstream device of the third communication device, the first label information is used to indicate that there is a non-congested path for the third communication device, and the first label information is used to indicate that when there is no non-congested path locally for the downstream device of the third communication device, the third communication device is instructed to switch the forwarding path of the data stream associated with the first label information.
[0070] In an embodiment of the present application, the specific location of the communication device of the switchable path is notified through the first label information. When congestion control is required for a non-CC data flow, the non-CC data flow can be quickly switched to a non-congested path to forward the non-CC data flow, thereby increasing the speed of congestion control and improving network throughput.
[0071] In combination with the fourth aspect, in a possible implementation of the fourth aspect, the method further includes: receiving first indication information, the first indication information is used to instruct the third communication device to switch the forwarding path of the first data stream, the first data stream is a non-CC data stream; determining a target path according to multiple non-congested paths local to the third communication device, the target path belonging to the multiple non-congested paths; and forwarding the first data stream on the target path. In an embodiment of the present application, according to the first indication information sent by the downstream communication device, the forwarding path of the data stream is quickly switched, thereby improving the convergence speed for resolving network congestion.
[0072] In combination with the fourth aspect, in a possible implementation manner of the fourth aspect, sending the first label information includes: sending a first message, the first message belongs to a first data stream, the first data stream is a non-CC data stream, and the first message carries the first label information.
[0073] In combination with the fourth aspect, in a possible implementation of the fourth aspect, there are multiple possible implementations of the first tag information. In one possible implementation, the first tag information is used to identify the third communication device. When the downstream communication device receives the first tag information, the downstream communication device determines that there are multiple non-congested paths for the third communication device based on the first tag information. In another possible implementation, the first tag information includes the identity information of the third communication device, and the first tag information also includes a congestion status identifier associated with the third communication device, and the congestion status identifier indicates whether there are multiple non-congested paths for the third communication device. In another possible implementation, the first tag information includes the congestion status of at least one local egress port in the third communication device, and / or the congestion status of the next hop corresponding to at least one local egress port in the third communication device. Since there are multiple possible implementations of the first tag information, the implementation flexibility of the solution is improved.
[0074] In combination with the fourth aspect, in a possible implementation of the fourth aspect, the first label information includes any one or more of the following information: the hierarchical information of the third communication device in the network, the address information of the third communication device, the identity of the third communication device, or the location information of the third communication device. Exemplarily, the first label information is the hierarchical information of the third communication device in the network, and the hierarchical information indicates the location of the third communication device in the network, for example, the third communication device is a layer 2 communication device in the network. In another example, the first label information is the address information of the third communication device, such as the IP address or media access control address of the third communication device. In another example, the first label information is the location information of the third communication device, for example, the number of hops of the third communication device relative to the communication device passed by the sending end.
[0075] In combination with the fourth aspect, in a possible implementation method of the fourth aspect, the receiving the first indication information includes: receiving a first notification message sent by a downstream device of a third communication device, the first notification message carrying the first indication information, indicating that there is no non-congested path for the downstream device of the third communication device; the first notification message also includes any one or more of the following fields: the source address of the first data stream, the destination address of the first data stream, the source port of the first data stream, the destination port of the first data stream, the transport layer protocol information of the first data stream, or the identity of the first data stream.
[0076] In a possible implementation, the first indication information is carried in a first notification message, the destination address of the first notification message points to the third communication device, and the source address of the first notification message points to the first communication device. The first notification message also includes relevant information of the first data stream, including but not limited to: the source address of the first data stream, the destination address of the first data stream, the source port of the first data stream, the destination port of the first data stream, the transport layer protocol information of the first data stream, the queue pair (QP) of the first data stream, the service type of the first data stream, or the port index of the first data stream. Optionally, the first notification message may also include a first message type identifier, and the first message type identifier indicates that the first notification message is a message used to instruct the communication device to switch the forwarding path of the data stream to a non-congested path.
[0077] In another possible implementation, the first communication device directly sends the first indication information to the third communication device, or the first communication device sends the first indication information to the third communication device through a network manager (or a network controller).
[0078] In the embodiment of the present application, the first indication information can be transmitted through a variety of methods, thereby improving the implementation flexibility of the solution.
[0079] In combination with the fourth aspect, in a possible implementation of the fourth aspect, the load balancing strategy includes: adaptive routing, equal cost multi-path routing ECMP, packet-level load balancing, or sub-flow flowlet load balancing.
[0080] In a fifth aspect, an embodiment of the present application proposes a data processing method, which is applied to a first communication device. The first communication device is any hop communication device between the sending end of the data stream and the receiving end of the data stream in the network, and the third communication device is any hop communication device between the sending end of the data stream and the receiving end of the data stream in the network. Relative to the first communication device in the network, the third communication device is an upstream communication device of the first communication device, that is, the message of the data stream sent by the sending end first arrives at the third communication device, and then arrives at the first communication device. Relatively, the first communication device is a downstream communication device of the third communication device. The method includes: the first communication device receives first label information sent by the third communication device, and the first label information is used to indicate that the third communication device has a non-congested path; the first communication device determines that the third communication device has a non-congested path according to the first label information; the first communication device receives a first message, the first message belongs to a first data stream, and the first data stream is a non-CC data stream; when the first communication device does not have a non-congested path locally, the first indication information is sent to the third communication device, and the first indication information is used to instruct the third communication device to switch the forwarding path of the first data stream.
[0081] In an embodiment of the present application, the specific location of the communication device of the switchable path is notified through the first label information. When congestion control is required for a non-CC data flow, the non-CC data flow can be quickly switched to a non-congested path to forward the non-CC data flow, thereby increasing the speed of congestion control and improving network throughput.
[0082] In combination with the fifth aspect, in a possible implementation manner of the fifth aspect, the first message carries the first label information.
[0083] In combination with the fifth aspect, in a possible implementation manner of the fifth aspect, sending the first label information includes: sending a first message, the first message belongs to a first data stream, the first data stream is a non-CC data stream, and the first message carries the first label information.
[0084] In conjunction with the fifth aspect, in a possible implementation of the fifth aspect, there are multiple possible implementations of the first tag information. In one possible implementation, the first tag information is used to identify the third communication device. When the downstream communication device receives the first tag information, the downstream communication device determines that there are multiple non-congested paths to the third communication device based on the first tag information. In another possible implementation, the first tag information includes the identity information of the third communication device, and the first tag information also includes a congestion status identifier associated with the third communication device, and the congestion status identifier indicates whether there are multiple non-congested paths to the third communication device. In another possible implementation, the first tag information includes the congestion status of at least one local egress port in the third communication device, and / or the congestion status of the next hop corresponding to at least one local egress port in the third communication device. Since there are multiple possible implementations of the first tag information, the implementation flexibility of the solution is improved.
[0085] In combination with the fifth aspect, in a possible implementation of the fifth aspect, the first label information includes any one or more of the following information: the hierarchical information of the third communication device in the network, the address information of the third communication device, the identity of the third communication device, or the location information of the third communication device. Exemplarily, the first label information is the hierarchical information of the third communication device in the network, and the hierarchical information indicates the location of the third communication device in the network, for example, the third communication device is a layer 2 communication device in the network. In another example, the first label information is the address information of the third communication device, such as the IP address or media access control address of the third communication device. In another example, the first label information is the location information of the third communication device, for example, the number of hops of the third communication device relative to the communication device passed by the sending end.
[0086] In combination with the fifth aspect, in a possible implementation method of the fifth aspect, the sending the first indication information to the third communication device includes: sending a first notification message to the third communication device, the first notification message carrying the first indication information; the first notification message also includes any one or more of the following fields: the source address of the first data stream, the destination address of the first data stream, the source port of the first data stream, the destination port of the first data stream, the transport layer protocol information of the first data stream, or the identity of the first data stream.
[0087] The first indication information is carried in a first notification message, the destination address of the first notification message points to the third communication device, and the source address of the first notification message points to the first communication device. The first notification message also includes relevant information of the first data stream, including but not limited to: the source address of the first data stream, the destination address of the first data stream, the source port of the first data stream, the destination port of the first data stream, the transport layer protocol information of the first data stream, the queue pair (QP) of the first data stream, the service type of the first data stream, or the port index of the first data stream. Optionally, the first notification message may also include a fourth message type identifier, and the fourth message type identifier indicates that the first notification message is a message used to instruct the communication device to switch the forwarding path of the data stream to a non-congested path.
[0088] In another possible implementation, the third communication device directly receives the first indication information from the first communication device, or the third communication device receives the first indication information sent by the first communication device from a network manager (or a network controller).
[0089] In the embodiment of the present application, the first indication information can be transmitted through a variety of methods, thereby improving the implementation flexibility of the solution.
[0090] In a sixth aspect, an embodiment of the present application provides a communication device, where the communication device is applied to a first communication device, and the communication device includes:
[0091] A transceiver module, used for receiving a first message;
[0092] A processing module, configured to determine that a first data flow corresponding to the first message is a non-congestion controlled CC data flow;
[0093] The processing module is further configured to execute a load balancing strategy on the first data flow corresponding to the first message according to the fact that the first data flow is the non-CC data flow.
[0094] In one possible implementation,
[0095] The processing module is further configured to perform congestion control on the first data flow when a result of the load balancing is that there is no switchable path.
[0096] In one possible implementation,
[0097] The transceiver module is further used to receive a second message;
[0098] The processing module is further used to determine that the second data flow corresponding to the second message is a CC data flow;
[0099] The processing module is further configured to not execute a load balancing strategy on the second data flow corresponding to the second message according to the second data flow being the CC data flow.
[0100] In one possible implementation,
[0101] The processing module is further configured to perform congestion control on the second data flow.
[0102] In one possible implementation,
[0103] The transceiver module is further used to receive first label information sent by a third communication device, where the first label information is used to indicate that a non-congested path exists for the third communication device;
[0104] The processing module is further configured to determine, based on the first label information, that a non-congested path exists for the third communication device;
[0105] The transceiver module is further used to send first indication information to the third communication device when there is no non-congested path locally in the first communication device, wherein the first indication information is used to instruct the third communication device to switch the forwarding path of the first data flow.
[0106] In one possible implementation,
[0107] The transceiver module is further used to receive the first message sent by the third communication device, where the first message carries the first label information.
[0108] In a possible implementation, the first tag information includes any one or more of the following information:
[0109] The layer information of the third communication device in the network, the address information of the third communication device, the identity of the third communication device, or the location information of the third communication device.
[0110] In one possible implementation,
[0111] The transceiver module is further used to receive a third message, where the third message is used to indicate that the first data flow is the non-CC data flow, and the third message is further used to indicate that a load balancing strategy is executed on the first data flow.
[0112] In a possible implementation manner, the third message includes any one or more of the following fields:
[0113] a third message type identifier, a source address of the first data stream, a destination address of the first data stream, a source port of the first data stream, a destination port of the first data stream, transport layer protocol information of the first data stream, an identity identifier of the first data stream, or a CC indication, wherein the third message type identifier indicates that the third message is a notification message for notifying the non-CC data stream, and the CC indication is used to indicate that the third message is about the CC data stream or the non-CC data stream.
[0114] In one possible implementation,
[0115] The transceiver module is further used to receive a fourth message, where the fourth message is used to indicate that the second data flow is the CC data flow, and the fourth message is further used to indicate that a load balancing strategy is not executed on the second data flow.
[0116] In a possible implementation manner, the fourth message includes any one or more of the following fields:
[0117] a fourth message type identifier, a source address of the first data stream, a destination address of the first data stream, a source port of the first data stream, a destination port of the first data stream, transport layer protocol information of the first data stream, an identity identifier of the first data stream, or a CC indication, wherein the fourth message type identifier indicates that the fourth message is a notification message for notifying the CC data stream, and the CC indication is used to indicate that the fourth message is about the CC data stream or the non-CC data stream.
[0118] In one possible implementation,
[0119] The processing module is further configured to determine, according to a CC indication included in the second message, that the second data flow corresponding to the second message is the CC data flow.
[0120] In one possible implementation,
[0121] The processing module is further used to generate, according to the second message, the second message with a CC indication added thereto, where the CC indication is used to indicate that the second data flow is the CC data flow;
[0122] The transceiver module is further used to send the second message with the CC indication added.
[0123] In a possible implementation, the load balancing strategy includes: adaptive routing, equal cost multi-path routing ECMP, packet-level load balancing, or flow splitting flowlet.
[0124] In a seventh aspect, an embodiment of the present application provides a communication device, where the communication device is applied to a second communication device, and the communication device includes:
[0125] A processing module for determining local egress port congestion;
[0126] The processing module is further configured to determine that the second data stream transmitted in the local output port is a CC data stream;
[0127] The transceiver module is used to send a fourth message, where the fourth message is used to indicate that the second data flow is the CC data flow, and the fourth message is also used to indicate that the load balancing strategy is not executed on the second data flow.
[0128] In one possible implementation,
[0129] The transceiver module is further used to receive a second message, where the second message belongs to the second data flow;
[0130] The processing module is further used to generate the fourth message according to the second message, the fourth message includes the second message, the fourth message also includes a CC indication, and the CC indication of the fourth message is used to indicate that the second data flow is the CC data flow;
[0131] The transceiver module is further used to send the fourth message to the receiving end of the second data stream.
[0132] In one possible implementation,
[0133] The transceiver module is further configured to send the fourth message to the previous hop of the second communication device;
[0134] Alternatively, the transceiver module is further used to send the fourth message to a first communication device, and the first communication device is a sender of the second data stream.
[0135] In a possible implementation manner, the fourth message includes any one or more of the following fields:
[0136] a fourth message type identifier, a source address of the first data stream, a destination address of the first data stream, a source port of the first data stream, a destination port of the first data stream, transport layer protocol information of the first data stream, an identity identifier of the first data stream, or a CC indication, wherein the fourth message type identifier indicates that the fourth message is a notification message for notifying the CC data stream, and the CC indication is used to indicate that the fourth message is about the CC data stream or the non-CC data stream.
[0137] In one possible implementation,
[0138] The processing module is further used to determine that the local egress port is in a non-congested state;
[0139] The processing module is further configured to determine that the first data stream transmitted in the local egress port is a non-CC data stream;
[0140] The transceiver module is further used to send a third message, where the third message is used to indicate that the first data flow is the non-CC data flow, and the third message is further used to indicate that a load balancing strategy is executed on the first data flow.
[0141] In a possible implementation manner, the third message includes any one or more of the following fields:
[0142] a fourth message type identifier, a source address of the first data stream, a destination address of the first data stream, a source port of the first data stream, a destination port of the first data stream, transport layer protocol information of the first data stream, an identity identifier of the first data stream, or a CC indication, wherein the fourth message type identifier indicates that the third message is a notification message for notifying the non-CC data stream, and the CC indication is used to indicate that the third message is about the CC data stream or the non-CC data stream.
[0143] In one possible implementation,
[0144] The transceiver module is further configured to send the third message to the previous hop of the second communication device;
[0145] Alternatively, the transceiver module is further used to send the third message to a first communication device, and the first communication device is a sender of the first data stream.
[0146] In a possible implementation, the load balancing strategy includes: adaptive routing, equal cost multi-path routing ECMP, packet-level load balancing, or sub-flow flowlet load balancing.
[0147] In an eighth aspect, an embodiment of the present application provides a communication device, which is applied to a receiving end, and the communication device includes:
[0148] A transceiver module, used to receive a fourth message, wherein the fourth message is used to indicate that the second data flow is a CC data flow, and the fourth message is also used to indicate that a load balancing strategy is not executed on the second data flow;
[0149] The transceiver module is also used to send a fifth message to the sending end according to the fourth message, the fifth message is used to indicate that the second data flow is the CC data flow, the sending end is used to send the second data flow, and the fifth message is used to indicate that the load balancing strategy is not executed on the second data flow.
[0150] In a possible implementation manner, the fourth message further includes a congestion flag, and the congestion flag instructs a sender of the second message to reduce a rate of sending a data stream.
[0151] In a possible implementation manner, the fourth message includes any one or more of the following fields:
[0152] a fourth message type identifier, a source address of the first data stream, a destination address of the first data stream, a source port of the first data stream, a destination port of the first data stream, transport layer protocol information of the first data stream, an identity identifier of the first data stream, or a CC indication, wherein the fourth message type identifier indicates that the fourth message is a notification message for notifying the CC data stream, and the CC indication is used to indicate that the fourth message is about the CC data stream or the non-CC data stream.
[0153] In one possible implementation,
[0154] The transceiver module is further used to receive a third message, where the third message is used to indicate that the first data flow is a non-CC data flow, and the third message is further used to indicate that a load balancing strategy is executed on the first data flow;
[0155] The processing module is further used to send a sixth message to the sending end according to the third message, wherein the sixth message is used to indicate that the first data flow is the non-CC data flow, and the sixth message is also used to indicate to execute a load balancing strategy for the first data flow.
[0156] In a possible implementation manner, the third message includes any one or more of the following fields:
[0157] a third message type identifier, a source address of the first data stream, a destination address of the first data stream, a source port of the first data stream, a destination port of the first data stream, transport layer protocol information of the first data stream, an identity identifier of the first data stream, or a CC indication, wherein the third message type identifier indicates that the third message is a notification message for notifying the non-CC data stream, and the CC indication is used to indicate that the third message is about the CC data stream or the non-CC data stream.
[0158] In a possible implementation, the load balancing strategy includes: adaptive routing, equal cost multi-path routing ECMP, packet-level load balancing, or sub-flow flowlet load balancing.
[0159] In a ninth aspect, an embodiment of the present application provides a communication device, where the communication device is applied to a third communication device, and the communication device includes:
[0160] A transceiver module is used to send first label information to a downstream device of the third communication device, wherein the first label information is used to indicate that a non-congested path exists for the third communication device, and the first label information is used to instruct the downstream device of the third communication device to switch the forwarding path of the data stream associated with the first label information when a non-congested path does not exist locally.
[0161] In one possible implementation,
[0162] The transceiver module is further used to send a first message, where the first message belongs to a first data stream, the first data stream is a non-CC data stream, and the first message carries the first label information.
[0163] In a possible implementation manner, the first label information includes a congestion status of at least one local egress port in the third communication device and / or a congestion status of a next hop corresponding to at least one local egress port in the third communication device.
[0164] In a possible implementation, the first tag information includes any one or more of the following information:
[0165] The layer information of the third communication device in the network, the address information of the third communication device, the identity of the third communication device, or the location information of the third communication device.
[0166] In a possible implementation, the load balancing strategy includes: adaptive routing, equal cost multi-path routing ECMP, packet-level load balancing, or sub-flow flowlet load balancing.
[0167] In a tenth aspect, an embodiment of the present application provides a communication device, where the communication device is applied to a first communication device, and the communication device includes:
[0168] a transceiver module, configured to receive first label information sent by a third communication device, wherein the first label information is used to indicate that a non-congested path exists for the third communication device;
[0169] a processing module, configured to determine, according to the first label information, that a non-congested path exists for the third communication device;
[0170] The transceiver module is further used to receive a first message, where the first message belongs to a first data stream, and the first data stream is a non-CC data stream;
[0171] The transceiver module is further used to send first indication information to the third communication device when there is no non-congested path locally in the first communication device, wherein the first indication information is used to instruct the third communication device to switch the forwarding path of the first data flow.
[0172] In a possible implementation manner, the first message carries the first label information.
[0173] In a possible implementation, the first tag information includes any one or more of the following information:
[0174] The layer information of the third communication device in the network, the address information of the third communication device, the identity of the third communication device, or the location information of the third communication device.
[0175] In an eleventh aspect, an embodiment of the present application provides a communication device, which is applied to a first communication device, and includes: a processor and a communication interface connected to the processor;
[0176] A communication interface, configured to receive a first message;
[0177] The processor is configured to determine that the first data flow corresponding to the first message is a non-congestion controlled CC data flow;
[0178] The processor is further configured to execute a load balancing strategy on the first data flow corresponding to the first message according to the fact that the first data flow is the non-CC data flow.
[0179] In one possible implementation,
[0180] The processor is further configured to perform congestion control on the first data flow when a result of the load balancing is that there is no switchable path.
[0181] In one possible implementation,
[0182] The communication interface is further used to receive a second message;
[0183] The processor is further configured to determine that the second data stream corresponding to the second message is a CC data stream;
[0184] The processor is further configured to, based on the second data flow being the CC data flow, not execute a load balancing strategy on the second data flow corresponding to the second message.
[0185] In one possible implementation,
[0186] The processor is further configured to perform congestion control on the second data flow.
[0187] In one possible implementation,
[0188] The communication interface is further used to receive first label information sent by a third communication device, where the first label information is used to indicate that a non-congested path exists for the third communication device;
[0189] The processor is further configured to determine, according to the first label information, that a non-congested path exists for the third communication device;
[0190] The communication interface is further used to send first indication information to the third communication device when there is no non-congested path locally in the first communication device, wherein the first indication information is used to instruct the third communication device to switch the forwarding path of the first data flow.
[0191] In one possible implementation,
[0192] The communication interface is further used to receive the first message sent by the third communication device, where the first message carries the first label information.
[0193] In a possible implementation, the first tag information includes any one or more of the following information:
[0194] The layer information of the third communication device in the network, the address information of the third communication device, the identity of the third communication device, or the location information of the third communication device.
[0195] In one possible implementation,
[0196] The communication interface is further used to receive a third message, where the third message is used to indicate that the first data flow is the non-CC data flow, and the third message is further used to indicate that a load balancing strategy is executed on the first data flow.
[0197] In a possible implementation manner, the third message includes any one or more of the following fields:
[0198] a third message type identifier, a source address of the first data stream, a destination address of the first data stream, a source port of the first data stream, a destination port of the first data stream, transport layer protocol information of the first data stream, an identity identifier of the first data stream, or a CC indication, wherein the third message type identifier indicates that the third message is a notification message for notifying the non-CC data stream, and the CC indication is used to indicate that the third message is about the CC data stream or the non-CC data stream.
[0199] In one possible implementation,
[0200] The communication interface is further used to receive a fourth message, where the fourth message is used to indicate that the second data flow is the CC data flow, and the fourth message is further used to indicate that a load balancing strategy is not executed on the second data flow.
[0201] In a possible implementation manner, the fourth message includes any one or more of the following fields:
[0202] a fourth message type identifier, a source address of the first data stream, a destination address of the first data stream, a source port of the first data stream, a destination port of the first data stream, transport layer protocol information of the first data stream, an identity identifier of the first data stream, or a CC indication, wherein the fourth message type identifier indicates that the fourth message is a notification message for notifying the CC data stream, and the CC indication is used to indicate that the fourth message is about the CC data stream or the non-CC data stream.
[0203] In one possible implementation,
[0204] The processor is further configured to determine, according to a CC indication included in the second message, that the second data flow corresponding to the second message is the CC data flow.
[0205] In one possible implementation,
[0206] The processor is further configured to generate, according to the second message, the second message to which a CC indication is added, where the CC indication is used to indicate that the second data flow is the CC data flow;
[0207] The communication interface is further used to send the second message to which the CC indication is added.
[0208] In a possible implementation, the load balancing strategy includes: adaptive routing, equal cost multi-path routing ECMP, packet-level load balancing, or flow splitting flowlet.
[0209] In a twelfth aspect, an embodiment of the present application provides a communication device, which is applied to a second communication device, and includes: a processor and a communication interface connected to the processor;
[0210] a processor for determining local egress port congestion;
[0211] The processor is further configured to determine that the second data stream transmitted in the local egress port is a CC data stream;
[0212] The communication interface is used to send a fourth message, wherein the fourth message is used to indicate that the second data flow is the CC data flow, and the fourth message is also used to indicate that a load balancing strategy is not executed on the second data flow.
[0213] In one possible implementation,
[0214] The communication interface is further used to receive a second message, where the second message belongs to the second data flow;
[0215] The processor is further configured to generate the fourth message according to the second message, where the fourth message includes the second message, and the fourth message further includes a CC indication, where the CC indication of the fourth message is used to indicate that the second data flow is the CC data flow;
[0216] The communication interface is further used to send the fourth message to the receiving end of the second data stream.
[0217] In one possible implementation,
[0218] The communication interface is further used to send the fourth message to the previous hop of the second communication device;
[0219] Alternatively, the communication interface is further used to send the fourth message to a first communication device, and the first communication device is a sender of the second data stream.
[0220] In a possible implementation manner, the fourth message includes any one or more of the following fields:
[0221] a fourth message type identifier, a source address of the first data stream, a destination address of the first data stream, a source port of the first data stream, a destination port of the first data stream, transport layer protocol information of the first data stream, an identity identifier of the first data stream, or a CC indication, wherein the fourth message type identifier indicates that the fourth message is a notification message for notifying the CC data stream, and the CC indication is used to indicate that the fourth message is about the CC data stream or the non-CC data stream.
[0222] In one possible implementation,
[0223] The processor is further configured to determine that the local egress port is in a non-congested state;
[0224] The processor is further configured to determine that the first data stream transmitted in the local egress port is a non-CC data stream;
[0225] The communication interface is further used to send a third message, where the third message is used to indicate that the first data flow is the non-CC data flow, and the third message is further used to indicate that a load balancing strategy is executed on the first data flow.
[0226] In a possible implementation manner, the third message includes any one or more of the following fields:
[0227] a fourth message type identifier, a source address of the first data stream, a destination address of the first data stream, a source port of the first data stream, a destination port of the first data stream, transport layer protocol information of the first data stream, an identity identifier of the first data stream, or a CC indication, wherein the fourth message type identifier indicates that the third message is a notification message for notifying the non-CC data stream, and the CC indication is used to indicate that the third message is about the CC data stream or the non-CC data stream.
[0228] In one possible implementation,
[0229] The communication interface is further used to send the third message to the previous hop of the second communication device;
[0230] Alternatively, the communication interface is further used to send the third message to a first communication device, and the first communication device is a sender of the first data stream.
[0231] In a possible implementation, the load balancing strategy includes: adaptive routing, equal cost multi-path routing ECMP, packet-level load balancing, or sub-flow flowlet load balancing.
[0232] In a thirteenth aspect, an embodiment of the present application provides a communication device, the communication device is applied to a receiving end, and the communication device includes: a processor and a communication interface connected to the processor;
[0233] A communication interface, used to receive a fourth message, wherein the fourth message is used to indicate that the second data flow is a CC data flow, and the fourth message is also used to indicate that a load balancing strategy is not executed on the second data flow;
[0234] The communication interface is also used to send a fifth message to the sending end according to the fourth message, the fifth message is used to indicate that the second data stream is the CC data stream, the sending end is used to send the second data stream, and the fifth message is used to indicate that the load balancing strategy is not executed on the second data stream.
[0235] In a possible implementation manner, the fourth message further includes a congestion flag, and the congestion flag instructs a sender of the second message to reduce a rate of sending a data stream.
[0236] In a possible implementation manner, the fourth message includes any one or more of the following fields:
[0237] a fourth message type identifier, a source address of the first data stream, a destination address of the first data stream, a source port of the first data stream, a destination port of the first data stream, transport layer protocol information of the first data stream, an identity identifier of the first data stream, or a CC indication, wherein the fourth message type identifier indicates that the fourth message is a notification message for notifying the CC data stream, and the CC indication is used to indicate that the fourth message is about the CC data stream or the non-CC data stream.
[0238] In one possible implementation,
[0239] The communication interface is further used to receive a third message, where the third message is used to indicate that the first data flow is a non-CC data flow, and the third message is further used to indicate that a load balancing strategy is executed on the first data flow;
[0240] The processor is further used to send a sixth message to the sending end according to the third message, wherein the sixth message is used to indicate that the first data flow is the non-CC data flow, and the sixth message is further used to indicate that a load balancing strategy is executed on the first data flow.
[0241] In a possible implementation manner, the third message includes any one or more of the following fields:
[0242] a third message type identifier, a source address of the first data stream, a destination address of the first data stream, a source port of the first data stream, a destination port of the first data stream, transport layer protocol information of the first data stream, an identity identifier of the first data stream, or a CC indication, wherein the third message type identifier indicates that the third message is a notification message for notifying the non-CC data stream, and the CC indication is used to indicate that the third message is about the CC data stream or the non-CC data stream.
[0243] In a possible implementation, the load balancing strategy includes: adaptive routing, equal cost multi-path routing ECMP, packet-level load balancing, or sub-flow flowlet load balancing.
[0244] In a fourteenth aspect, an embodiment of the present application provides a communication device, which is applied to a third communication device, and includes: a processor and a communication interface connected to the processor;
[0245] A communication interface, used to send first label information to a downstream device of the third communication device, wherein the first label information is used to indicate that a non-congested path exists for the third communication device, and the first label information is used to instruct the downstream device of the third communication device to switch the forwarding path of the data stream associated with the first label information when no non-congested path exists locally.
[0246] In one possible implementation,
[0247] The communication interface is further used to send a first message, where the first message belongs to a first data stream, the first data stream is a non-CC data stream, and the first message carries the first label information.
[0248] In a possible implementation manner, the first label information includes a congestion status of at least one local egress port in the third communication device and / or a congestion status of a next hop corresponding to at least one local egress port in the third communication device.
[0249] In a possible implementation, the first tag information includes any one or more of the following information:
[0250] The layer information of the third communication device in the network, the address information of the third communication device, the identity of the third communication device, or the location information of the third communication device.
[0251] In a possible implementation, the load balancing strategy includes: adaptive routing, equal cost multi-path routing ECMP, packet-level load balancing, or sub-flow flowlet load balancing.
[0252] In a fifteenth aspect, an embodiment of the present application provides a communication device, the communication device being applied to a first communication device, the communication device comprising: a processor and a communication interface connected to the processor;
[0253] A communication interface, used to receive first label information sent by a third communication device, wherein the first label information is used to indicate that a non-congested path exists for the third communication device;
[0254] a processor, configured to determine, according to the first tag information, that a non-congested path exists for the third communication device;
[0255] The communication interface is further used to receive a first message, where the first message belongs to a first data stream, and the first data stream is a non-CC data stream;
[0256] The communication interface is further used to send first indication information to the third communication device when there is no non-congested path locally in the first communication device, wherein the first indication information is used to instruct the third communication device to switch the forwarding path of the first data flow.
[0257] In a possible implementation manner, the first message carries the first label information.
[0258] In a possible implementation, the first tag information includes any one or more of the following information:
[0259] The layer information of the third communication device in the network, the address information of the third communication device, the identity of the third communication device, or the location information of the third communication device.
[0260] In the sixteenth aspect of the present application, a communication device is provided, which includes: a processor, a memory, an input / output device, and a bus; the memory stores computer instructions; when the processor executes the computer instructions in the memory, the memory stores computer instructions; when the processor executes the computer instructions in the memory, it is used to implement any one of the implementation methods of the first aspect, the second aspect, the third aspect, the fourth aspect, or the fifth aspect.
[0261] In a possible implementation manner of the sixteenth aspect, the processor, the memory, and the input and output devices are respectively connected to the bus.
[0262] The seventeenth aspect of the present application provides a computer program product comprising instructions, characterized in that when the computer program product is run on a computer, the computer is caused to execute any one of the implementation methods of the first aspect, the second aspect, the third aspect, the fourth aspect or the fifth aspect.
[0263] The eighteenth aspect of the present application provides a computer-readable storage medium, characterized in that it includes instructions, which, when executed on a computer, enable the computer to execute any one of the implementation methods of the first aspect, the second aspect, the third aspect, the fourth aspect or the fifth aspect.
[0264] The nineteenth aspect of the present application provides a computer-readable storage medium, characterized in that it includes instructions, which, when executed on a computer, enable the computer to execute any one of the implementation methods of the first aspect, the second aspect, the third aspect, the fourth aspect or the fifth aspect.
[0265] The twentieth aspect of the present application provides a chip system, which includes a processor, which is used to execute a computer program or instruction stored in a memory, so that the processor executes any implementation method of any of the above-mentioned first aspect, second aspect, third aspect, fourth aspect or fifth aspect.
[0266] In a possible design of the twentieth aspect, the chip system further includes a memory, the memory being used to store computer programs or instructions necessary for the computer device. The processor is used to call and run the computer program or instruction from the memory. The chip system may be composed of a chip, or may include a chip and other discrete devices.
[0267] In a possible design of the twentieth aspect, the chip system also includes an input port and an output port, which are used to execute the receiving function and the sending function of the terminal device in any implementation of the first aspect, the second aspect, the third aspect, the fourth aspect or the fifth aspect, wherein the receiving function corresponds to the input port, and the sending function corresponds to the output port.
[0268] In aspect 21 of the present application, a communication system is provided, which includes a first communication device as in the first aspect, a second communication device as in the second aspect, and / or a receiving end as in the third aspect.
[0269] A twenty-second aspect of the present application provides a communication system, which includes the third communication device as in the fourth aspect and / or the first communication device as in the fifth aspect. BRIEF DESCRIPTION OF THE DRAWINGS
[0270] Figure 1 This is a schematic diagram of a small-scale network;
[0271] Figure 2 This is a schematic diagram of large-scale networking;
[0272] Figure 3 A schematic diagram of the structure of a data processing system provided in an embodiment of the present application;
[0273] Figure 4 A schematic diagram of another structure of a data processing system provided in an embodiment of the present application;
[0274] Figure 5 This is a schematic diagram of an example flow of a data processing method in an embodiment of the present application;
[0275] Figure 6 This is a flow chart of another embodiment of the data processing method in the embodiment of the present application;
[0276] Figure 7 This is a flow chart of another embodiment of the data processing method in the embodiment of the present application;
[0277] Figure 8 This is a flow chart of another embodiment of the data processing method in the embodiment of the present application;
[0278] Fig. 9 A schematic diagram of an implementation of the communication device provided by the present application;
[0279] Fig.10 Another structural schematic diagram of the communication device provided by the present application;
[0280] Fig.11 Another structural schematic diagram of the communication device provided by the present application;
[0281] Fig.12 Another structural schematic diagram of the communication device provided in this application. DETAILED DESCRIPTION
[0282] The terms "first", "second", etc. in the specification and claims of the present application and the above-mentioned drawings are used to distinguish similar objects, and need not be used to describe a specific order or sequential order. It should be understood that the terms used in this way can be interchangeable under appropriate circumstances, which is only to describe the distinction mode adopted by the objects of the same attributes when describing in the embodiments of the present application. In addition, the terms "including" and "having" and any of their variations are intended to cover non-exclusive inclusions, so that the process, method, system, product or equipment comprising a series of units need not be limited to those units, but may include other units that are not clearly listed or inherent to these processes, methods, products or equipment.
[0283] First, some concepts involved in the embodiments of the present application are introduced.
[0284] 1. Multi-stage switching network (Claus CLOS network).
[0285] The CLOS network includes: spine nodes, leaf nodes, and top-of-rack (ToR) nodes. The server accesses the network by connecting to the ToR node, which is connected to each leaf node, and each leaf node is connected to each spine node, and vice versa.
[0286] See also Figure 1 , Figure 1This is a small-scale network diagram. On a 2-level CLOS network, there is usually only one traffic load balancing, which occurs in the forwarding direction from TOR to Leaf switch. Each 2-level CLOS network is called a group (POD).
[0287] See also Figure 2 , Figure 2 This is a diagram of a large-scale network. On a 3-level CLOS network, there are usually two traffic load balancings, one in the forwarding direction from TOR to Leaf switch within the POD, and one in the forwarding direction from Leaf to Spine switch when leaving the POD. Load balancing is to evenly forward traffic through multiple links, and load balancing is usually called load balancing.
[0288] 2. Load balancing strategy.
[0289] Currently, in networks that use multipath routing technology for traffic forwarding, the load balancing strategies used to achieve link load balancing mainly include load balancing strategies with data flows as the scheduling granularity, load balancing strategies with data packets as the scheduling granularity, and load balancing strategies with flowet granularity.
[0290] Among them, the load balancing strategy with data flow as the scheduling granularity is also called a per flow load balancing strategy. By running the per flow load balancing strategy, the communication device can evenly distribute different data flows to different links. For example, equal cost multi-path (ECMP) technology is a common per flow load balancing strategy. There are many path selection methods for ECMP technology, such as hash-based routing, polling-based routing, and path weight-based routing. Among them, the hash-based routing method can be, for example, selecting a path for the data flow according to the hash value of the source Internet Protocol (IP) address, and specifically, the data flow with the same source IP address can be allocated to the same path, and the data flow with different source IP addresses can be allocated to different paths. The polling-based routing method is to poll and allocate different received data flows to different paths. The path weight-based routing method is to allocate data flows according to the weight of the path, and the path with the larger weight allocates more data flows. Among them, the weight of the path is usually positively correlated with the path bandwidth. The embodiment of the present application does not limit the routing method of ECMP technology.
[0291] A data stream includes multiple data packets. In the three-layer routing scenario, the header of the data packet includes a five-tuple, and the data stream can be divided based on the five-tuple. Specifically, the data packets with the same five-tuple can be regarded as belonging to the same data stream, and the data packets with different five-tuples can be regarded as belonging to different data streams, that is, the five-tuples of the data packets in the same data stream are the same, and the five-tuples of the data packets in different data streams are different. After a data packet enters the communication device, the communication device extracts part or all of the information of the five-tuple in the data packet by parsing the header, and performs a hash calculation on the extracted information, and then selects the corresponding egress port to forward the data packet according to the calculation result. Since the five-tuples of all data packets in the same data stream are the same, the calculation results obtained by performing a hash calculation on the information extracted from the headers of different data packets in the same data stream are also the same, and then the egress ports selected for different data packets in the same data stream are also the same, so that all data packets belonging to the same data stream can be forwarded from the same egress port on the communication device, that is, the data packets belonging to the same data stream are allocated to the same link.
[0292] The load balancing strategy with data packets as the scheduling granularity is also called a per-packet load balancing strategy. By running a per-packet load balancing strategy, the communication device can evenly distribute different data packets to different links. When the communication device runs a per-packet load balancing strategy, it selects the best transmission path for each data packet according to the link congestion. For example, adaptive routing (AR) technology is a common load balancing strategy. After the data packet enters the communication device, the communication device first obtains several transmittable paths from the routing table according to the destination address of the data packet, and then compares the current congestion of these transmittable paths, and selects an optimal path to transmit the data packet. Among them, the best path can be the path with the lowest congestion, specifically, it can be the path with the smallest load, the lowest delay or the largest remaining bandwidth.
[0293] It should be noted that the load balancing strategy in the embodiment of the present application includes multiple possible implementation methods, which are not limited in the embodiment of the present application. Exemplarily, the load balancing strategy in the embodiment of the present application includes but is not limited to: adaptive routing, equal cost multi-path routing ECMP, packet-level load balancing, or sub-flow flowlet load balancing.
[0294] It should be noted that the load balancing strategy in the embodiment of the present application can also be called a load balancing algorithm.
[0295] 3. Congestion control strategy.
[0296] Taking data center quantized congestion notification (DCQCN) as an example, the congestion control strategy is introduced. Exemplarily, the network includes: a sending end network interface controller (NIC), a switch and a receiving end NIC. Among them, the sending end NIC is a response point (RP), the switch is a congestion point (CP), and the receiving end NIC is a notification point (NP).
[0297] On the switch side, when a packet arrives at the egress port of the switch, the switch checks the queue buffer length of the egress port of the switch. If the queue buffer length at the egress port of the switch exceeds a given threshold, the packet is marked with an explicit congestion notification (ECN) flag according to the marking probability. ECN is defined as a congestion indicator embedded in the IP header and a congestion confirmation embedded in the Transmission Control Protocol (TCP) header when the switch detects congestion. The Remote Direct Memory Access (RDMA over Converged Ethernet, RoCE) v2 standard defines RoCEv2 congestion management (RCM). With ECN enabled, once the switch detects congestion in RoCEv2 traffic, it marks it in the ECN field of the IP header of the packet. When the ECN-marked packet arrives at the destination it was originally intended to reach, the congestion notification is fed back to the source node (e.g., the sender), and the source node responds to the congestion notification by rate limiting the network packets for the problematic queue pairs (QP).
[0298] Exemplarily, when the queue buffer length at the egress end of the switch is less than a given lower threshold value Kmin, the marking probability is 0%; when the queue buffer length at the egress end of the switch is greater than a given upper threshold value Kmax, the marking probability is 100%; when the queue buffer length at the egress end of the switch is between Kmin and Kmax, the marking probability increases linearly with the queue buffer length.
[0299] On the receiving side, when a data packet carrying an ECN identifier arrives at the receiving NIC, it indicates that congestion has occurred in the network, and the receiving NIC returns a congestion notification packet (CNP) message for the message carrying the ECN identifier, so as to pass the congestion information to the sending NIC through the CNP message. Exemplarily, if a data packet carrying an ECN identifier in a data stream arrives at the receiving NIC, and no corresponding CNP message has been sent in the previous reference time period, the receiving NIC immediately sends a CNP message. The length of the reference time period is N microseconds, and the value of N can be configured to 0, that is, the receiving NIC returns a CNP message for each message carrying the ECN identifier received.
[0300] As a congestion control message, CNP messages will also experience delays and packet loss. Each hop device and each link from the sender to the receiver will have a certain delay, which will eventually increase the time it takes for the sender to receive the CNP message. At the same time, the congestion under the switch's output port will gradually increase. If the sender cannot reduce the speed in time, packet loss may still occur. Therefore, on the sender side, the sender NIC controls the sending rate of each data stream. For example, the received CNP message is used to trigger the speed reduction control of the data stream, and the time timer and byte counter are used to trigger the speed increase control of the data stream. The speed increase control and speed reduction control are independent of each other.
[0301] It should be noted that the congestion control strategy in the embodiment of the present application includes multiple possible implementation methods, which are not limited in the embodiment of the present application. Exemplarily, the congestion control strategy in the embodiment of the present application includes but is not limited to: DCQCN strategy, TIMELY strategy, "Swift" algorithm, or High-Performance Computing Cluster (HPCC) strategy.
[0302] It should be noted that the congestion control strategy in the embodiment of the present application can also be called a congestion control algorithm.
[0303] 4. Congestion Control (CC) data flow.
[0304] The congestion control (CC) data flow in the embodiment of the present application includes but is not limited to: many-to-one incast data flow or high-speed-to-low-speed data flow (or high-rate-to-low-rate data flow).
[0305] Regarding incast data flow, it refers to when multiple data flows from multiple sending ends arrive at the same receiving end at the same time, and cause congestion at the egress port of the receiving end, the multiple data flows are called incast data flow. Regarding incast data flow, it can also refer to the traffic of multiple hosts being sent to the same host at the same time, and the egress port receiving the traffic of the multiple hosts is in a congested state, and the traffic of the multiple hosts is called incast traffic. Incast data flow can also be called polycast data flow, which is not limited in the embodiments of the present application.
[0306] Regarding high-speed beating low-speed data flow, it means that the rate of the input port of the communication device is high and the rate of the output port of the communication device is low. The data flow congested due to the flow rate difference between the input port and the output port is called high-speed beating low-speed data flow. It should be noted that the data flow congested due to the flow rate difference between the input port and the output port can also be called a data flow with a high rate beating a data flow with a low rate, or a data flow with a high rate beating a data flow with a low rate, and the embodiments of the present application do not limit this.
[0307] Other data flows relative to CC data flows are called non-congestion control (non-CC) data flows, or non-CC data flows. The embodiments of the present application do not limit this.
[0308] Next, the communication scenarios to which the embodiments of the present application are applicable are introduced. Figure 3 , Figure 3 A schematic diagram of the structure of a data processing system provided in an embodiment of the present application. Figure 3 As shown, the data processing system includes a transmitting end 301, a receiving end 302, and communication devices 303A-303F (collectively referred to as communication devices 303) in a communication network. Figure 3 The number of communication devices is used only as an example and is not intended to limit the communication network provided in the embodiments of the present application.
[0309] The communication network provided in the embodiment of the present application has the characteristics of multi-path routing. Figure 3 There are four paths between the communication device 303A and the communication device 303F, including path 1 (communication device 303A → communication device 303B → communication device 303C → communication device 303F), path 2 (communication device 303A → communication device 303B → communication device 303E → communication device 303F), path 3 (communication device 303A → communication device 303D → communication device 303C → communication device 303F) and path 4 (communication device 303A → communication device 303D → communication device 303E → communication device 303F). The communication network runs a multipath routing protocol so that all four paths can transmit traffic between the communication device 303A and the communication device 303F.
[0310] Optionally, the communication network provided in the embodiment of the present application may be a data center network, a metropolitan area network, a wide area network, or a campus network. The communication network provided in the embodiment of the present application may adopt a three-layer fat tree networking topology, a dragonfly networking topology, a "mesh" networking topology, or a three-dimensional torus networking topology. The network protocol adopted by the data processing system provided in the embodiment of the present application may be, for example, a remote direct memory access (RDMA) protocol. The embodiment of the present application does not limit the type of communication network, the networking topology adopted by the communication network, and the network protocol adopted by the data processing system.
[0311] Optionally, the transmitting end and the receiving end in the embodiment of the present application may be a host with communication requirements. There are many possible implementations of the host, including but not limited to: a computing device, a computing unit, a cloud device, a virtual machine, or a physical machine. The computing device may be a server, such as a central server, an edge server, or a local server in a local data center. In some embodiments, the computing device may also be a terminal device such as a desktop, a laptop, or a smart phone. The server may be a server cluster composed of multiple servers, or a cloud computing service center. Among them, a large number of basic resources owned by a cloud service provider are deployed in the cloud computing service center. For example, a large number of basic resources such as computing resources, storage resources, and network resources are deployed in the cloud computing service center. The cloud computing service center can use this large number of basic resources to implement the data processing method provided in the embodiment of the present application. The transmitting end and the receiving end in the embodiment of the present application may also be a terminal device. The terminal device in the embodiment of the present application includes but is not limited to a smart phone, a tablet computer, a desktop computer, or an Internet of Things (IoT) device.
[0312] Optionally, the communication device in the embodiment of the present application may be a physical device supporting the message forwarding function, or a virtual device supporting the message forwarding function. Specifically, the physical device includes but is not limited to routers, switches, gateways, firewalls, chips, chipsets, or boards, etc. The virtual device may also be referred to as a virtualized device, which may be a virtual machine (virtual machine, VM), a virtual router or a virtual switch running a program for sending a message function. The virtualized device is deployed on a hardware device (e.g., a physical server). For example, the communication device in the embodiment of the present application may be implemented based on a general physical server in combination with network function virtualization (NFV) technology. The transmitting end and the receiving end in the embodiment of the present application communicate via a communication device.
[0313] Optionally, Figure 3 In the example, the transmitting end 301 and the communication device 303A are directly connected or indirectly connected. For example, a network controller ( Figure 3 not shown).
[0314] For another example, see Figure 4 , Figure 4 Another structural diagram of a data processing system provided for an embodiment of the present application. A data processing system proposed in an embodiment of the present application includes: a first communication device, a second communication device and a receiving end. Optionally, the data processing system also includes a third communication device. With respect to the first communication device, it can be a transmitting end in the data processing system, or it can be other communication devices other than the last hop communication device in the data processing system. With respect to the second communication device, it can be the last hop communication device in the data processing system. With respect to the third communication device, it can be any upstream hop communication device of the second communication device. For example, when the first communication device is any hop communication device other than the last hop in the data processing system, the third communication device is the upstream communication device of the first communication device, and correspondingly, the first communication device is the downstream communication device of the third communication device. The first communication device (transmitting end) and the third communication device can be directly connected or connected through one or more hop communication devices. The third communication device and the first communication device (communication device) can be directly connected or connected through one or more hop communication devices. The first communication device (communication device) and the second communication device can be directly connected or connected through one or more hop communication devices.
[0315] In the above data processing system, the CC data flow causes network congestion. Currently, common solutions to network congestion include: a congestion control strategy that controls the sending rate of the data flow, or a load balancing strategy that adjusts the transmission path of the data flow. However, the congestion control strategy and the load balancing strategy in the current network act independently of each other, so they are prone to mutual influence, reducing the convergence speed of solving network congestion and affecting network throughput.
[0316] Based on this, the embodiment of the present application proposes a data processing method, in which the communication device identifies the data flow, executes the load balancing strategy for the non-CC data flow, and fully utilizes the spare bandwidth of the network; the load balancing strategy is not executed for the CC data flow, so as to avoid disorder caused by the incorrect execution of the load balancing strategy for the CC data flow. Through the above method, the convergence speed of solving network congestion is improved, and the network throughput is improved.
[0317] Next, the embodiments of the present application are described in conjunction with the accompanying drawings. Figure 5, Figure 5 The following is a flow chart of a data processing method according to an embodiment of the present application. A data processing method according to an embodiment of the present application includes:
[0318] G1. The communication device receives a message.
[0319] In step G1, the communication device receives a message from an upstream communication device, where the message corresponds to a data flow.
[0320] G2. The communication device determines whether the data flow corresponding to the message is a CC data flow or a non-CC data flow.
[0321] In step G2, the communication device determines the attribute of the data flow corresponding to the message according to the message. Specifically, the attribute of the data flow includes a CC data flow or a non-CC data flow.
[0322] In a possible implementation, the message may carry a CC indication. The communication device (any hop communication device in the network) determines the data flow corresponding to the message by detecting whether the message carries a CC indication. If the message carries a CC indication, the data flow corresponding to the message is a CC data flow. If the message does not carry a CC indication, the data flow corresponding to the message is a non-CC data flow.
[0323] Further, the sender of the data stream determines whether to add a CC indication in the message of the data stream based on the data stream. For example, the last-hop communication device of the first data stream in the network detects that the first data stream is a CC data stream, and the last-hop communication device notifies the sender that the first data stream is a CC data stream. In response to the notification, the sender adds a CC indication (CCindicator) in the second message of the second data stream. The notification can be a fourth message (or a CC stream congestion notification message), and the fourth message includes one or more of the following fields: relevant information of the second data stream (for example, a binary or quintuple of the second data stream, etc., used to identify the second data stream), a fourth message type identifier, the fourth message type identifier indicates that the fourth message is a notification message for notifying the CC data stream, or a CC indication, the CC indication is used to indicate that the fourth message is about a CC data stream or a non-CC data stream.
[0324] For another example, the last-hop communication device of the second data stream in the network detects that the second data stream is a non-CC data stream, then the last-hop communication device notifies the sender that the second data stream is a non-CC data stream. In response to the notification, the sender does not add (or remove) the CC indication in the first message of the first data stream. The notification can be a third message (or a CC stream congestion relief notification message), and the third message includes one or more of the following fields: relevant information of the first data stream (for example, a binary or quintuple of the first data stream, etc., used to identify the first data stream), a third message type identifier, the third message type identifier indicates that the third message is a notification message for notifying a non-CC data stream, or a CC indication, the CC indication is used to indicate that the third message is about a CC data stream or a non-CC data stream.
[0325] For another example, the communication device determines the data stream corresponding to the message according to the value of the CC indicator (or CC field, or CC indicator field, etc.) in the message. When the value of the CC indicator is a first value, the data stream corresponding to the message is a CC data stream; when the value of the CC indicator is a second value, the data stream corresponding to the message is a non-CC data stream. The first value may be "1" and the second value may be "0".
[0326] It should be noted that the above-mentioned first data stream and the second data stream can be the same data stream. In other words, as the network status changes, the data stream changes from a CC data stream to a non-CC data stream, or the data stream changes from a non-CC data stream to a CC data stream; the above-mentioned first data stream and the second data stream can also be different data streams.
[0327] In another possible implementation, the communication device obtains relevant information of the data stream from the message, and the relevant information of the data stream indicates the data stream corresponding to the message. Then the communication device determines whether the data stream corresponding to the message is a CC data stream or a non-CC data stream based on the relevant information of the data stream and the data stream matching information. The data stream matching information includes the association relationship between the data stream and the attributes of the data stream, and the data stream matching information can also be called a CC data stream table. The relevant information of the data stream is used to identify the data stream. Exemplarily, the relevant information of the data stream includes but is not limited to: the source address of the data stream, the destination address of the data stream, the source port of the data stream, the destination port of the data stream, the transport layer protocol information of the data stream, the queue pair (QP) of the data stream, the service type of the data stream, or the port index of the data stream. Optionally, the relevant information of the data stream also includes the identity of the data stream. Regarding the data stream matching information, an example is shown in Table 1.
[0328] Table 1
[0329]
[0330] Another example of data stream matching information is shown in Table 2. The data streams shown in Table 2 are all CC data streams.
[0331] Table 2
[0332]
[0333] Further, the data stream matching information can be updated according to the notification of the last-hop communication device in the network. For example, the last-hop communication device determines that the first data stream is a CC data stream. The last-hop communication device notifies all communication devices on the forwarding path of the first data stream to update local data stream matching information, and the updated data stream matching information indicates that the first data stream is a CC data stream. For example, the last-hop communication device determines that the second data stream changes from a CC data stream to a non-CC data stream. The last-hop communication device notifies all communication devices on the forwarding path of the second data stream to update local data stream matching information, and the updated data stream matching information indicates that the second data stream is a non-CC data stream. Alternatively, if the data stream matching information only includes associations related to CC data streams, the updated data stream matching information does not include relevant information about the second data stream.
[0334] After determining that the data stream is a non-CC data stream, proceed to step G3; after determining that the data stream is a CC data stream, proceed to step G4.
[0335] G3. When the data flow is a non-CC data flow, the communication device executes a load balancing strategy on the data flow corresponding to the message.
[0336] In step G3, after determining that the data flow is a non-CC data flow, the communication device executes a load balancing strategy on the data flow corresponding to the message. Taking the first data flow as an example, the communication device determines that the first data flow is a non-CC data flow based on the first message of the first data flow. Then, the communication device executes a load balancing strategy on the first data flow.
[0337] Specifically, the communication device first determines whether there is a switchable non-congested path (or multiple non-congested paths, or multiple non-congested links, or multiple non-congested channels), and obtains a load balancing result, which indicates the presence or absence of a switchable non-congested path.
[0338] In a possible implementation, when the load balancing result indicates that there are multiple non-congested paths locally in the communication device, a non-congested path is selected from the multiple non-congested paths as the target path, and the communication device forwards the first data flow on the target path.
[0339] In another possible implementation, when the load balancing result indicates that there is only one non-congested path locally in the communication device, the non-congested path is determined to be the target path, and the communication device forwards the first data flow on the target path.
[0340] In another possible implementation, a communication device (e.g., a first communication device) obtains first label information, and the first label information indicates that an upstream device (e.g., a third communication device) has a non-congested path. When the load balancing result indicates that there is no non-congested path locally in the first communication device, the first communication device determines the third communication device based on the first label information. Then, the first communication device sends first indication information to the third communication device, and the first indication information is used to instruct the third communication device to switch the forwarding path of the first data stream.
[0341] In another possible implementation, when the result of load balancing indicates that there is no non-congested path locally in the first communication device, and there is no switchable non-congested path in the upstream communication devices of the first communication device. The first communication device performs congestion control on the first data stream. Specifically, the first communication device instructs the sender of the first data stream to reduce the sending rate of the first data stream. In an example, the first communication device sends a first message carrying a congestion identifier to the receiver of the first data stream, and the congestion identifier indicates that the first data stream corresponding to the first message is in a congested state. The congestion identifier can be an explicit congestion notification (ECN). Then, the receiver of the first data stream responds to the first message carrying the congestion identifier and notifies the sender of the first data stream to reduce the sending rate of the first data stream. For example, the receiver of the first data stream sends a congestion notification message (CNP message) about the first data stream to the sender of the first data stream, which is used to notify the sender of the first data stream to reduce the sending rate of the first data stream. In another example, the first communication device sends a notification message to a transmitter of the first data stream, the notification message indicating that the first data stream is in a congested state. In response to the notification message, the transmitter of the first data stream reduces a sending rate of the first data stream.
[0342] Optionally, the first communication device selects a congested path with a relatively lower load from multiple local congested paths to forward the first data flow.
[0343] Optionally, when the load balancing result indicates that there are multiple non-congested paths locally in the communication device, the communication device sends label information downstream, where the label information indicates that there is a non-congested path in the communication device. The communication device may perform a path switching operation on the non-CC data flow.
[0344] Exemplarily, there are multiple possible implementations of the tag information, including but not limited to: the hierarchical information of the communication device in the network, the address information of the communication device, the identity of the communication device, or the location information of the communication device. Exemplarily, the location information of the communication device may be the relative location information of the communication device relative to the sending end, for example, the location information of the sending end is recorded as 0, and the location information increases by 1 for each hop of the communication device after the message is sent from the sending end.
[0345] It should be noted that the load balancing strategy in the embodiments of the present application includes but is not limited to: adaptive routing, equal-cost multi-path routing ECMP, packet-level load balancing, or sub-flow flowlet load balancing, etc.
[0346] G4. When the data flow is a CC data flow, the communication device does not execute the load balancing strategy for the data flow corresponding to the message.
[0347] In step G4, after determining that the data flow is a CC data flow, the communication device does not execute the load balancing strategy for the data flow corresponding to the message. Taking the second data flow as an example, the communication device determines that the second data flow is a CC data flow based on the second message of the second data flow. Then, the communication device determines not to execute the load balancing strategy for the second data flow.
[0348] In one possible implementation, after the last-hop communication device (e.g., the second communication device) in the network receives the second message, it determines that the second data stream corresponding to the second message is a CC data stream. In one example, the second communication device sends a second message carrying a congestion identifier to a receiving end of the second data stream. The receiving end of the second data stream responds to the second message carrying the congestion identifier and determines that the second data stream is in a congested state. The receiving end sends a congestion notification message (CNP message) about the second data stream to the sending end of the second data stream, which is used to notify the sending end of the second data stream to perform congestion control on the second data stream. In another example, the second communication device sends a notification message to the sending end of the second data stream, and the notification message indicates that the second data stream is in a congested state. In response to the notification message, the sending end of the second data stream reduces the sending rate of the second data stream.
[0349] In another possible implementation, after any hop communication device in the network (for example, the first communication device) receives the second message, it determines that the second data stream is a CC data stream based on the second message. In one example, the first communication device sends a second message carrying a congestion identifier to a receiving end of the second data stream. The receiving end of the second data stream determines that the second data stream is in a congested state in response to the second message carrying the congestion identifier. The receiving end sends a congestion notification message (CNP message) about the second data stream to the sending end of the second data stream, which is used to notify the sending end of the second data stream to perform congestion control on the second data stream. In another example, the first communication device sends a notification message to the sending end of the second data stream, and the notification message indicates that the second data stream is in a congested state. In response to the notification message, the sending end of the second data stream reduces the sending rate of the second data stream.
[0350] In the embodiment of the present application, the communication device identifies the data flow, executes the load balancing strategy for the non-CC data flow, and fully utilizes the spare bandwidth of the network; the load balancing strategy is not executed for the CC data flow, so as to avoid disorder caused by the incorrect execution of the load balancing strategy for the CC data flow. Through the above method, the convergence speed of solving network congestion is improved, and the network throughput is improved.
[0351] In combination with the above-mentioned embodiment, the following further introduces a data processing method for collaborative processing between a transmitting end, a receiving end, and a communication device. The data processing system applied by the data processing method includes: a transmitting end, a third communication device, a first communication device, a second communication device, and a receiving end. Figure 6 , Figure 6 A data processing method proposed in an embodiment of the present application further includes:
[0352] S1. The second communication device detects a congestion status of a local outbound port.
[0353] In step S1, the second communication device can detect the congestion status of the local egress port in a variety of ways. It should be noted that the congestion status of the local egress port may also refer to the congestion status of the path corresponding to the local egress port, or the congestion status of the link corresponding to the local egress port. The embodiment of the present application does not limit this.
[0354] In a possible implementation, the communication device determines the congestion state of the local egress port by judging the queue depth of the local egress port. The greater the queue depth of an egress port, the higher the congestion level of the egress port.
[0355] In another possible implementation, the communication device exchanges load information with neighboring devices by periodic communication, and determines the congestion state of the local egress port based on its own load information and the load information of the neighboring devices. If the load level of the neighboring device is higher, the congestion level of the local egress port when the neighboring device is used as the next hop is higher. The embodiment of the present application does not limit the manner in which the communication device detects the congestion state of the local egress port.
[0356] S2. When the local egress port is congested, determine that the second data flow transmitted in the local egress port is a CC data flow.
[0357] In step S2, since the second communication device is the last hop communication device in the network, when the second communication device detects that the local egress port is congested, the second data stream transmitted in the local egress port is a CC data stream. It should be noted that when the local egress port is congested, all data streams in the local egress port can be determined to be CC data streams.
[0358] When the second data stream is determined to be a CC data stream, the transmitter of the second data stream (hereinafter referred to as the transmitter) can be notified that the second data stream is a CC data stream in either mode (1) or mode (2).
[0359] Method (1):
[0360] S3-1. The second communication device sends a fourth message to the transmitting end, where the fourth message is used to indicate that the second data stream is a CC data stream.
[0361] In step S3-1, the second communication device sends a fourth message to the transmitting end, where the fourth message is used to indicate that the second data flow is a CC data flow, and the fourth message is also used to indicate that the second data flow does not execute a load balancing strategy.
[0362] The fourth message may also be referred to as a CC stream congestion notification message, and the fourth message includes one or more of the following information (or fields): relevant information of the second data stream (e.g., a binary or quintuple of the second data stream, etc., used to identify the second data stream), a fourth message type identifier, the fourth message type identifier indicates that the fourth message is a notification message for notifying the CC data stream, or a CC indication, the CC indication is used to indicate that the fourth message is about a CC data stream or a non-CC data stream. Exemplarily, the relevant information of the second data stream includes, but is not limited to: the source address of the second data stream, the destination address of the second data stream, the source port of the second data stream, the destination port of the second data stream, the transport layer protocol information of the second data stream, the queue pair (QP) of the second data stream, the service type of the second data stream, or the port index of the second data stream. The source address of the fourth message is the address of the second communication device, and the destination address of the fourth message is the address of the sender.
[0363] Optionally, the fourth message further includes a congestion flag, where the congestion flag indicates that the second data flow is in a congested state.
[0364] Exemplarily, the congestion indicator is ECN.
[0365] In a possible implementation manner, the second communication device sends the fourth message to the upstream communication device along a reverse path of the forwarding path of the second data flow.
[0366] In another possible implementation manner, the second communication device directly sends the fourth message to the sending end.
[0367] Further optionally, after sending the fourth message, the second communication device records the sending time of sending the fourth message.
[0368] Method (2):
[0369] S3-2. The second communication device sends a fourth message to the receiving end.
[0370] In step S3-2, after the second communication device receives the message (eg, the sixth message) in the second data stream, the second communication device determines that the second data stream is a CC data stream. Then, the second communication device can notify the sending end through the receiving end that the second data stream is a CC data stream.
[0371] In a possible implementation, the second communication device adds a CC indication in the sixth message, where the CC indication is used to indicate that the second data stream corresponding to the sixth message is a CC data stream. The sixth message to which the CC indication is added is called a fourth message. Then the second communication device sends the fourth message to the receiving end.
[0372] In another possible implementation, the second communication device updates the CC indication carried by the sixth message, and refers to the updated sixth message as the fourth message. For example, the value of the CC indication in the sixth message received by the second communication device is the second value, and the second value indicates that the data stream corresponding to the message carrying the CC indication is a non-CC data stream. Since the second communication device determines that the second data stream is a CC data stream after receiving the sixth message, the second communication device updates the CC indication in the sixth message to obtain the fourth message. The value of the updated CC indication is the first value, and the first value indicates that the second data stream corresponding to the fourth message carrying the CC indication is a CC data stream. Then, the second communication device sends the fourth message to the receiving end.
[0373] Optionally, the fourth message further includes a congestion flag, where the congestion flag indicates that the second data flow is in a congested state.
[0374] Exemplarily, the congestion indicator is ECN.
[0375] S3-3. The receiving end sends a fifth message to the sending end, where the fifth message is used to indicate that the second data flow is a CC data flow.
[0376] In step S3-3, after receiving the fourth message, the receiving end determines that the second data stream is a CC data stream. Then, the receiving end sends a fifth message to the sending end, and the fifth message is used to indicate that the second data stream is a CC data stream. The fifth message is also used to indicate that the second data stream does not execute the load balancing strategy. The receiving end can send the fifth message to the sending end in a variety of ways, and the embodiment of the present application does not limit this.
[0377] In another possible implementation manner, the receiving end may also notify the sending end that the second data stream is a CC data stream through a network manager or a management platform that manages the network.
[0378] Optionally, the receiving end may also notify the sending end that the second data flow is in a congested state. For example, the fifth message is a congestion notification CNP message, which is used to indicate that the second data flow is in a congested state, and the CNP message is also used to indicate that the second data flow is a CC data flow.
[0379] S4. The sending end reduces the sending rate of the second data stream.
[0380] In step S4, after the sender determines that the second data flow is in a congested state, the sender triggers and executes congestion control on the second data flow. Specifically, the sender reduces the sending rate of the second data flow.
[0381] In another possible implementation, after the transmitting end determines that the second data stream is in a congested state, the transmitting end triggers measurement of a round trip time (RTT) between the transmitting end and the receiving end regarding the second data stream, and then determines whether to reduce the transmission rate of the second data stream according to the RTT.
[0382] It should be noted that the sending end may also use other congestion control methods to process the second data stream, and the embodiments of the present application do not limit this.
[0383] S5. The sending end determines, according to the second message, that the second data flow is a CC data flow.
[0384] In step S5, after the transmitting end determines that the second data stream is a CC data stream according to the notification of the second communication device (for example, the fourth message from the second communication device or the fifth message from the receiving end), the transmitting end updates the local data stream matching information. The data stream matching information includes the association relationship between data streams. The updated data stream matching information indicates that the second data stream is a CC data stream.
[0385] After the sending end generates the second message, it determines that the second data flow corresponding to the second message is a CC data flow according to the data flow matching information and the related information of the second data flow in the second message.
[0386] S6. The transmitting end generates a second message with a CC indication added thereto according to the fact that the second data flow is a CC data flow.
[0387] In step S6, a possible implementation is that the sender adds a CC indication in the second message according to the second data stream being a CC data stream, and generates a second message with a CC indication added (the second message in the subsequent steps refers to the second message with a CC indication added). It can be understood that when the message does not carry a CC indication, the data stream corresponding to the message is a non-CC data stream.
[0388] In another possible implementation, the second message already has a CC indication (or CC field, or CC identifier, or CC indication field), and the value of the CC indication is a second value, and the second value indicates that the data stream corresponding to the message carrying the CC indication is a non-CC data stream. When the sending end determines that the second data stream is a CC data stream, the sending end updates the value of the CC indication in the second message, and the value of the CC indication in the second message after the update is the first value, and the first value indicates that the data stream corresponding to the message carrying the CC indication is a CC data stream. The second message in the subsequent steps refers to the second message whose CC indication value is the first value.
[0389] S7. The sending end sends a second message to the third communication device.
[0390] S8. The third communication device determines, according to the second message, that the corresponding second data flow is a CC data flow.
[0391] In step S8, after receiving the second message, the third communication device determines, according to the CC indication carried in the second message, that the second data flow corresponding to the second message is a CC data flow.
[0392] Alternatively, the third communication device determines, according to the value of the CC indicator in the second message, that the second data flow corresponding to the second message is a CC data flow.
[0393] S9. The third communication device does not execute a load balancing strategy on the second data flow according to the fact that the second data flow is a CC data flow.
[0394] S10. The third communication device sends a second message to the first communication device.
[0395] In step S10, the third communication device sends a second message to a downstream communication device (eg, the first communication device).
[0396] S11. The first communication device determines, according to the second message, that the corresponding second data flow is a CC data flow.
[0397] S12: The first communication device does not execute a load balancing strategy on the second data flow based on the fact that the second data flow is a CC data flow.
[0398] S13. The first communication device sends a second message to the second communication device.
[0399] Steps S11 to S13 are similar to the aforementioned steps S8 to S10 and are not described in detail here.
[0400] S14: The second communication device detects a congestion status of a local outbound port.
[0401] Step S14 is consistent with the aforementioned step S1 and will not be described in detail here.
[0402] It should be noted that the execution order of step S14 and step S1 is not limited in the embodiment of the present application. Step S1 may be executed first and then step S14; step S14 may be executed first and then step S1; or step S1 and step S14 may be executed simultaneously.
[0403] S15: When the local egress port is in a non-congested state, the second communication device determines that the first data flow transmitted in the local egress port is a non-CC data flow.
[0404] In step S15, since the second communication device is the last hop communication device in the network, when the second communication device detects that the local egress port is in a non-congested state, the first data stream transmitted in the local egress port is a non-CC data stream. It should be noted that when the local egress port is in a non-congested state, it can be determined that all data streams in the local egress port are non-CC data streams.
[0405] It should be noted that the above-mentioned first data stream and the second data stream can be the same data stream. In other words, as the network status changes, the data stream changes from a CC data stream to a non-CC data stream, or the data stream changes from a non-CC data stream to a CC data stream; the above-mentioned first data stream and the second data stream can also be different data streams.
[0406] When the first data stream is determined to be a non-CC data stream, the transmitter of the second data stream (hereinafter referred to as the transmitter) can be notified that the first data stream is a non-CC data stream in either mode (1) or mode (2).
[0407] Method (1):
[0408] S16-1. The second communication device sends a third message to the transmitting end, where the third message is used to indicate that the first data stream is a non-CC data stream.
[0409] In step S16-1, the second communication device sends a third message to the transmitting end, the third message is used to indicate that the first data flow is a non-CC data flow, and the third message is also used to instruct the first data flow to execute the load balancing strategy (or preferentially execute the load balancing strategy).
[0410] The third message may also be referred to as a CC flow congestion relief notification message, and the third message includes one or more of the following information (or fields): relevant information of the first data flow (for example, a binary or quintuple of the first data flow, etc., used to identify the first data flow), a third message type identifier, the third message type identifier indicates that the third message is a notification message for notifying a non-CC data flow, or a CC indication, the CC indication is used to indicate that the third message is about a CC data flow or a non-CC data flow. Exemplarily, the relevant information of the first data flow includes but is not limited to: the source address of the first data flow, the destination address of the first data flow, the source port of the first data flow, the destination port of the first data flow, the transport layer protocol information of the first data flow, the queue pair (QP) of the first data flow, the service type of the first data flow, or the port index of the first data flow. The source address of the third message is the address of the first communication device, and the destination address of the third message is the address of the sender.
[0411] In a possible implementation, the second communication device sends the third message to the upstream communication device along a reverse path of the forwarding path of the first data flow.
[0412] In another possible implementation manner, the second communication device directly sends the third message to the sending end.
[0413] Further optionally, in the aforementioned step S3-1 or step S3-2, the second communication device records the sending time of sending the fourth message after sending the fourth message. If the first data stream and the second data stream are the same data stream, the second communication device may also determine the time to send the third message according to the sending time of the fourth message. For example, if the waiting time after the second communication device records the sending time of the fourth message exceeds the first time period, and the second communication device determines that the first data stream is a non-CC data stream, the second communication device sends the third message.
[0414] Method (2):
[0415] S16-2. The second communication device sends a third message to the receiving end.
[0416] In step S16-2, after the second communication device receives the seventh message in the first data stream, the second communication device determines that the first data stream is a non-CC data stream. Then, the second communication device can notify the sending end through the receiving end that the first data stream is a non-CC data stream.
[0417] In a possible implementation, the seventh message received by the second communication device carries a CC indication. Since the second communication device determines that the first data stream corresponding to the seventh message is a non-CC data stream, the second communication device removes the existing CC indication in the seventh message, and the seventh message with the CC indication removed indicates that the first data stream corresponding to the message is a non-CC data stream. The seventh message with the CC indication removed is called a third message. Then the second communication device sends the third message to the receiving end.
[0418] In another possible implementation, the second communication device updates the CC indication carried by the seventh message, and the updated seventh message is referred to as the third message. For example, the value of the CC indication in the seventh message received by the second communication device is the first value, and the first value indicates that the data stream corresponding to the message carrying the CC indication is a CC data stream. Since the second communication device determines that the first data stream is a non-CC data stream after receiving the seventh message, the second communication device updates the CC indication in the seventh message to obtain the third message. The value of the updated CC indication is the second value, and the second value indicates that the first data stream corresponding to the third message carrying the CC indication is a non-CC data stream. Then, the second communication device sends the third message to the receiving end.
[0419] S16-3. The receiving end sends a sixth message to the sending end, where the sixth message is used to indicate that the first data stream is a non-CC data stream.
[0420] In step S16-3, after receiving the third message, the receiving end determines that the first data stream is a non-CC data stream. Then, the receiving end sends a sixth message to the sending end, and the sixth message is used to indicate that the first data stream is a non-CC data stream. The sixth message is also used to indicate that the first data stream executes a load balancing strategy. The receiving end can send the sixth message to the sending end in a variety of ways, and the embodiment of the present application does not limit this.
[0421] In another possible implementation manner, the receiving end may also notify the sending end that the first data stream is a non-CC data stream through a network manager or a management platform that manages the network.
[0422] S17: The transmitting end determines, according to the first message, that the first data flow is a non-CC data flow.
[0423] In step S17, after the transmitting end determines that the first data stream is a non-CC data stream according to the notification of the second communication device (for example, the third message from the second communication device or the sixth message from the receiving end), the transmitting end updates the local data stream matching information. The data stream matching information includes the association relationship between the data streams. The updated data stream matching information indicates that the first data stream is a non-CC data stream.
[0424] When the transmitting end receives the first message sent by other communication devices or generates the first message, it determines that the first data stream corresponding to the first message is a non-CC data stream according to the data stream matching information and the relevant information of the first data stream in the first message.
[0425] S18. The sending end sends a first message to the third communication device.
[0426] In step S18, a possible implementation is that the transmitting end removes the CC indication in the first message according to the first data stream being a non-CC data stream, generates a second message from which the CC indication is removed (the first message in the subsequent steps refers to the first message not including the CC indication), and then the transmitting end sends the first message to the third communication device. It can be understood that when the message does not carry the CC indication, the data stream corresponding to the message is a non-CC data stream.
[0427] In another possible implementation, the first message already has a CC indication (or a CC field or a CC indication field), and the value of the CC indication is a first value, and the first value indicates that the data stream corresponding to the message carrying the CC indication is a CC data stream. When the transmitting end determines that the first data stream is a non-CC data stream, the transmitting end updates the value of the CC indication in the first message, and the value of the CC indication in the first message after the update is a second value, and the second value indicates that the data stream corresponding to the message carrying the CC indication is a non-CC data stream. The first message in the subsequent steps refers to the first message whose CC indication value is the second value. The transmitting end then sends the first message to the third communication device.
[0428] S19. The third communication device determines, according to the first message, that the first data stream is a non-CC data stream.
[0429] In step S19, after receiving the first message, the third communication device determines that the first data flow corresponding to the first message is a non-CC data flow according to the fact that the first message does not include a CC indication.
[0430] Alternatively, the third communication device determines, according to a value of a CC indicator in the first message, that the first data stream corresponding to the first message is a non-CC data stream.
[0431] S20. The third communication device executes a load balancing strategy on the first data flow according to the first data flow being a non-CC data flow.
[0432] In step S20, when the third communication device determines that the first data flow is a non-CC data flow, the load balancing strategy is executed on the first data flow. The specific execution method is described in the following Figure 8 The corresponding embodiments are described and will not be elaborated here.
[0433] Further optionally, when the third communication device determines that there is no non-congested path locally and in the upstream communication device, the third communication device triggers a congestion control strategy for the first data stream. For example, the third communication device notifies the sender of the first data stream that the first data stream is in a congested state. Conversely, after the sender determines that the first data stream is in a congested state, the sender triggers the execution of congestion control on the first data stream. Specifically, the sender reduces the sending rate of the first data stream. In another possible implementation, after the sender determines that the first data stream is in a congested state, the sender triggers the measurement of the round-trip time (RTT) between the sender and the receiver regarding the first data stream. Then, it is determined whether to reduce the sending rate of the first data stream based on the RTT.
[0434] S21. The third communication device sends a first message to the first communication device.
[0435] S22. The first communication device determines, according to the first message, that the first data flow is a non-CC data flow.
[0436] S23. The first communication device executes a load balancing strategy on the first data flow according to the first data flow being a non-CC data flow.
[0437] Steps S22 to S23 are similar to the aforementioned steps S19 to S20 and are not described in detail here.
[0438] S24. The first communication device sends a first message to the second communication device.
[0439] In an embodiment of the present application, the last-hop communication device in the network detects and determines the data flow, and then the last-hop communication device notifies the sending end and any hop communication device in the network of the data flow through a CC flow congestion notification message and a CC flow congestion relief notification message. After receiving the data flow, the communication device can determine the attributes of the data flow, and then does not execute the load balancing strategy for the data flow with the attribute of CC data flow, and preferentially executes load balancing processing for the non-CC data flow type. By identifying and notifying CC data flows or non-CC data flows, the forwarding path is avoided from being adjusted incorrectly when the load balancing strategy is executed for CC data flows. For non-CC data flows, the load balancing strategy is preferentially executed, and then the congestion control strategy is executed to make full use of the network's spare bandwidth and improve network throughput. Improve the convergence speed of resolving network congestion.
[0440] In combination with the above-mentioned embodiment, the following further introduces a data processing method that is only processed by a communication device. The data processing system to which the data processing method is applied includes: a third communication device, a first communication device, and a second communication device. Figure 7 , Figure 7 A data processing method proposed in an embodiment of the present application further includes:
[0441] D1. The second communication device detects a congestion status of a local outbound port.
[0442] Step D1 is consistent with the aforementioned step S1 and will not be described in detail here.
[0443] D2. When the local egress port is congested, the second communication device determines that the second data flow transmitted in the local egress port is a CC data flow.
[0444] D3. The second communication device sends a fourth message to the first communication device, where the fourth message is used to indicate that the second data stream is a CC data stream.
[0445] Steps D2 to D3 are similar to the aforementioned steps S2 to S3-1 and are not described in detail here.
[0446] In step D3, after generating the fourth message, the second communication device sends the fourth message to the upstream communication device along the reverse path of the forwarding path of the second data flow. For example, the second communication device sends the fourth message to the first communication device.
[0447] D4. The first communication device updates the data flow matching information according to the fourth message.
[0448] In step D4, after receiving the fourth message, the first communication device updates the local data flow matching information according to the fourth message. The updated data flow matching information includes the relevant information of the second data flow and the second data flow.
[0449] Specifically, the first communication device obtains relevant information of the second data stream from the fourth message, and the relevant information of the second data stream indicates the second data stream. Exemplarily, the relevant information of the second data stream includes, but is not limited to: the source address of the second data stream, the destination address of the second data stream, the source port of the second data stream, the destination port of the second data stream, the transport layer protocol information of the second data stream, the queue pair (QP) of the second data stream, the service type of the second data stream, or the port index of the second data stream. Optionally, the relevant information of the second data stream also includes an identity identifier of the second data stream.
[0450] In one example, after receiving the fourth message, the first communication device adds the relevant information of the second data stream and the second data stream to the local data stream matching information. The data stream matching information is shown in Table 1 above.
[0451] In another example, after receiving the fourth message, the first communication device adds relevant information of the second data stream to the local data stream matching information. The data stream matching information is shown in Table 2 above.
[0452] After receiving the fourth message, the first communication device forwards the fourth message to the upstream communication device along the reverse path of the forwarding path of the second data stream, for example, sending the fourth message to the third communication device.
[0453] D5. The first communication device sends a fourth message to the third communication device, where the fourth message is used to indicate that the second data stream is a CC data stream.
[0454] D6. The third communication device updates the data flow matching information according to the fourth message.
[0455] Steps D5 to D6 are similar to the aforementioned steps D3 to D4 and are not described in detail here.
[0456] After step D6, the third communication device may forward the fourth message to the transmitter, and the fourth message may trigger step D7. For example, the fourth message carries a congestion indicator, so that the transmitter determines that the second data flow is a CC data flow and is in a congested state, and needs to execute a congestion control strategy for the second data flow.
[0457] D7. The sending end reduces the sending rate of the second data stream.
[0458] In step D7, the transmitting end may determine that the second data flow is a CC data flow according to the fourth message from the third communication device. Then, the transmitting end executes a congestion control strategy on the second data flow, such as reducing the transmission rate of the second data flow.
[0459] Alternatively, after the second communication device determines that the second data stream is a CC data stream, a fourth message is generated according to the second message in the second data stream, and the fourth message carries a congestion identifier. Then the second communication device directly sends the fourth message to the sending end. The sending end determines that the second data stream is in a congested state according to the fourth message, and executes a congestion control strategy on the second data stream, such as reducing the sending rate of the second data stream.
[0460] D8. The sending end sends a second message to the third communication device.
[0461] D9. The third communication device determines that the second data stream is a CC data stream according to the second message and the data stream matching information.
[0462] In step D9, after receiving the second message, the third communication device obtains the relevant information of the second data stream from the second message. Then, the third communication device determines the second data stream according to the relevant information of the second data stream and the data stream matching information.
[0463] In a possible implementation, the data stream matching information only records the relevant information of the CC data stream type, and when the third communication device determines that there is information in the data stream matching information that is consistent with the relevant information of the second data stream, the second data stream is determined to be a CC data stream. It can be understood that when there is no information in the data stream matching information that is consistent with the relevant information of the data stream, the data stream is determined to be a non-CC data stream.
[0464] In another possible implementation, the data stream matching information records the relevant information of the type of data stream and the attribute association relationship of the data stream. The third communication device determines from the data stream matching information whether the attribute of the second data stream is a CC data stream or a non-CC data stream according to the relevant information of the second data stream.
[0465] D10. The third communication device does not execute the load balancing strategy for the second data flow because the second data flow is a CC data flow.
[0466] Optionally, after the third communication device determines that the second data flow is a CC data flow, a congestion control strategy is executed on the second data flow. For example, the third communication device generates a fourth message based on the second message, and the fourth message carries a congestion indicator. Then the third communication device sends the fourth message to the sending end, instructing the sending end to execute the congestion control strategy on the second data flow.
[0467] D11. The third communication device sends a second message to the first communication device.
[0468] In step D11, the third communication device sends a second message to the next-hop communication device (eg, the first communication device).
[0469] D12. The first communication device determines that the second data stream is a CC data stream according to the second message and the data stream matching information.
[0470] D13. The first communication device does not execute a load balancing strategy on the second data flow because the second data flow is a CC data flow.
[0471] Steps D12 to D13 are similar to the aforementioned steps D9 to D10 and are not described in detail here.
[0472] D14. The second communication device detects a congestion status of a local egress port.
[0473] Step D14 is consistent with the aforementioned step S1 and will not be described in detail here.
[0474] It should be noted that the execution order of step D14 and step D1 is not limited in the embodiment of the present application. Step D1 may be executed first and then step D14; step D14 may be executed first and then step D1; or step D1 and step D14 may be executed simultaneously.
[0475] D15. When the local egress port is in a non-congested state, the second communication device determines that the first data flow transmitted in the local egress port is a non-CC data flow.
[0476] Step D15 is similar to the aforementioned step S15 and will not be described in detail here.
[0477] D16. The second communication device sends a third message to the first communication device, where the third message is used to indicate that the first data stream is a non-CC data stream.
[0478] Step D16 is similar to the aforementioned step S16-1 and will not be described in detail here.
[0479] In step D16, after generating the third message, the second communication device sends the third message to the upstream communication device along the reverse path of the forwarding path of the first data flow. For example, the second communication device sends the third message to the first communication device.
[0480] D17. The first communication device updates the data flow matching information according to the third message.
[0481] In step D17, after receiving the third message, the first communication device updates the local data flow matching information according to the third message. The updated data flow matching information indicates that the first data flow is a non-CC data flow.
[0482] Specifically, the first communication device obtains relevant information of the first data stream from the third message, and the relevant information of the first data stream indicates the first data stream. Exemplarily, the relevant information of the first data stream includes, but is not limited to: the source address of the first data stream, the destination address of the first data stream, the source port of the first data stream, the destination port of the first data stream, the transport layer protocol information of the first data stream, the queue pair (QP) of the first data stream, the service type of the first data stream, or the port index of the first data stream. Optionally, the relevant information of the first data stream also includes an identity identifier of the first data stream.
[0483] In one example, after receiving the third message, the first communication device adds the relevant information of the first data stream and the first data stream to the local data stream matching information. The data stream matching information is shown in Table 1 above.
[0484] In another example, after receiving the third message, the first communication device removes the relevant information of the first data stream from the local data stream matching information, provided that the local data stream matching information before step D17 includes the relevant information of the first data stream. The data stream matching information is shown in Table 2 above.
[0485] After receiving the third message, the first communication device forwards the third message to the upstream communication device along the reverse path of the forwarding path of the first data stream, for example, sending the third message to the third communication device.
[0486] D18. The first communication device sends a third message to the third communication device, where the third message is used to indicate that the first data stream is a non-CC data stream.
[0487] D19. The third communication device updates the data flow matching information according to the third message.
[0488] Step D19 is similar to the aforementioned step D17 and will not be described in detail here.
[0489] D20. The sending end sends a first message to the third communication device.
[0490] D21. The third communication device determines that the first data stream is a non-CC data stream according to the first message and the data stream matching information.
[0491] In step D21, after receiving the first message, the third communication device obtains relevant information of the first data stream from the first message. Then, the third communication device determines that the first data stream is a non-CC data stream according to the relevant information of the first data stream and the data stream matching information.
[0492] In a possible implementation, the data stream matching information only records the relevant information of the CC data stream type, and when the third communication device determines that there is no information consistent with the relevant information of the first data stream in the data stream matching information, the first data stream is determined to be a non-CC data stream. It can be understood that when there is information consistent with the relevant information of the data stream in the data stream matching information, the data stream is determined to be a CC data stream.
[0493] In another possible implementation, the data stream matching information records the relevant information of the data stream type and the association relationship of the attributes of the data stream. The third communication device determines from the data stream matching information that the first data stream is a non-CC data stream according to the relevant information of the first data stream.
[0494] D22. The third communication device executes a load balancing strategy on the first data flow according to the fact that the first data flow is a non-CC data flow.
[0495] In step D22, when the third communication device determines that the first data flow is a non-CC data flow, the load balancing strategy is executed on the first data flow. The specific execution method is described in the following Figure 8 The corresponding embodiments are described and will not be elaborated here.
[0496] D23. The third communication device sends a first message to the first communication device.
[0497] D24. The first communication device determines, based on the first message, that the first data stream is a non-CC data stream.
[0498] D25. The first communication device executes a load balancing strategy on the first data flow based on the fact that the first data flow is a non-CC data flow.
[0499] Steps D24 to D25 are consistent with the aforementioned steps S22 to S24 and are not described in detail here.
[0500] D26. The first communication device sends a first message to the second communication device.
[0501] In an embodiment of the present application, the last-hop communication device in the network detects and determines the data flow, and then the last-hop communication device notifies the data flow of any hop communication device in the network through a CC flow congestion notification message and a CC flow congestion relief notification message. After receiving the data flow, the communication device can determine the attributes of the data flow, and then do not execute the load balancing strategy for the data flow with the attribute of CC data flow, and preferentially execute load balancing processing for the non-CC data flow type. By identifying and notifying CC data flows or non-CC data flows, the forwarding path is avoided from being adjusted incorrectly when the load balancing strategy is executed for CC data flows. For non-CC data flows, the load balancing strategy is preferentially executed, and then the congestion control strategy is executed to make full use of the network's spare bandwidth and improve network throughput. Improve the convergence speed of resolving network congestion.
[0502] In combination with the above-mentioned embodiment, the following describes how the communication device performs load balancing processing on the non-CC data flow. The data processing system applied by the data processing method includes: a third communication device and a first communication device. Figure 8 , Figure 8 A data processing method proposed in an embodiment of the present application further includes:
[0503] F1. The third communication device determines that there are multiple non-congested paths locally.
[0504] In step F1, the third communication device may determine whether there are multiple non-congested paths locally in a variety of ways. For example, as shown in the aforementioned step S1, it is not repeated here. When the third communication device determines that there are multiple non-congested paths locally, the third communication device may perform a path switching process on the non-CC data flow. The third communication device sends first label information to the downstream communication device, and the first label information is used to indicate that the third communication device has a non-congested path.
[0505] There are many possible implementations of the first tag information. In one possible implementation, the first tag information is used to identify the third communication device. When the downstream communication device receives the first tag information, the downstream communication device determines that there are multiple non-congested paths to the third communication device based on the first tag information. Conversely, if the downstream communication device does not receive the first tag information, the downstream communication device determines that there are no multiple non-congested paths to the third communication device, and the third communication device cannot perform path switching processing on the non-CC data stream. Exemplarily, the first tag information is the hierarchical information of the third communication device in the network, and the hierarchical information indicates the position of the third communication device in the network, for example, the third communication device is a layer 2 communication device in the network. In another example, the first tag information is the address information of the third communication device, such as the IP address or media access control (MAC) address of the third communication device. In another example, the first tag information is the location information of the third communication device, for example, the number of hops of the third communication device relative to the communication device passed by the sending end.
[0506] In another possible implementation, the first tag information includes identity information of the third communication device, such as the above-mentioned hierarchical information, address information, or location information. The first tag information also includes a congestion status identifier associated with the third communication device, and the congestion status identifier indicates whether the third communication device has multiple non-congested paths. For example, if the congestion status identifier is "1", the third communication device has multiple non-congested paths; if the congestion status identifier is "0", the third communication device does not have a non-congested path.
[0507] In another possible implementation, the first label information includes the congestion status of at least one local egress port in the third communication device, and / or the congestion status of the next hop corresponding to at least one local egress port in the third communication device. The downstream communication device needs to determine whether there are multiple non-congested paths to the third communication device based on the first label information. Exemplarily, the third communication device includes three local egress ports: local egress port #1, local egress port #2, and local egress port #3. Then the first label includes: local egress port #1 is in a congested state, local egress port #2 is in a non-congested state, and local egress port #3 is in a non-congested state. In another example, the first label information includes the congestion status of the next hop corresponding to at least one local egress port in the third communication device. For example, the third communication device includes three local egress ports: local egress port #1, local egress port #2, and local egress port #3, wherein the next hop corresponding to local egress port #1 is communication device #1, the next hop corresponding to local egress port #2 is communication device #2, and the next hop corresponding to local egress port #3 is communication device #3. The first tag includes: the communication device #1 corresponding to the local egress port #1 is in a congested state, the communication device #2 corresponding to the local egress port #2 is in a non-congested state, and the communication device #3 corresponding to the local egress port #3 is in a non-congested state.
[0508] Exemplarily, the first label information may be carried in a “Switch ID” field of the first message.
[0509] Specifically, the downstream communication device (eg, the first communication device) may be notified by method (1) or method (2), which are described below respectively.
[0510] Method (1), the first label information and the message of the data stream are independent of each other. Method (1), comprising:
[0511] F2-1. The third communication device sends first tag information to the first communication device.
[0512] F2-2. The third communication device sends a first message to the first communication device.
[0513] Method (2), the first label information is carried in the first message:
[0514] F3. The third communication device sends a first message carrying first tag information to the first communication device.
[0515] In step F3, after the third communication device generates the first label information, it fills the first label information into the first message. It can be understood that when the first message flows through other communication devices and there are multiple non-congested paths in the other communication devices, the other communication devices can fill the first label information corresponding to themselves into the first message, or update the first label information already in the first message. For example, after the first message is sent from the sending end, it passes through the third communication device #1, the third communication device #2 and the third communication device #3 respectively. Among them, the third communication device #1 has multiple non-congested paths, the third communication device #2 does not have a non-congested path, and the third communication device #3 has multiple non-congested paths. Then, after the first message is sent from the third communication device #3, it carries the first label information #1 corresponding to the third communication device #1 and the first label information #3 corresponding to the third communication device #3. Alternatively, after the first message is sent from the third communication device #3, the first label information carried indicates that there are non-congested paths between the third communication device #1 and the third communication device #3.
[0516] F4. The first communication device determines that the first data stream corresponding to the first message is a non-CC data stream.
[0517] F5. The first communication device executes a load balancing strategy on the first data flow corresponding to the first message according to the fact that the first data flow is a non-CC data flow.
[0518] Steps F4 to F5 are consistent with the aforementioned steps S22 to S24 and are not described in detail here.
[0519] F6. The first communication device detects whether there are multiple non-congested paths locally.
[0520] Step F6 is similar to the aforementioned step S1. In step F6, according to the number of non-congested paths in the first communication device, there are multiple possible implementations, namely, situation (1) to situation (4). They are described below:
[0521] Case (1):
[0522] F7-1. If the first communication device has multiple non-congested paths, the first communication device selects a non-congested path from the multiple non-congested paths to forward the first message.
[0523] In step F7-1, a relatively lightly loaded path among multiple non-congested paths may be selected as a target path to forward the first message, or any non-congested path may be selected as a target path to forward the first message.
[0524] F7-2. The first communication device updates the first label information, and the updated first label information indicates that the first communication device has multiple non-congested paths.
[0525] The first label information in step F7-2 is similar to the first label information in the aforementioned step F1, and is not described in detail here.
[0526] F7-3. The first communication device sends the updated first label information to the next-hop device.
[0527] Step F7-3 is similar to the aforementioned steps F2-1, F2-2 and F3, and will not be described in detail here.
[0528] Case (2):
[0529] F8. If the first communication device has a non-congested path, the first communication device determines the non-congested path as a target path to forward the first message.
[0530] Case (3):
[0531] F9-1. If the first communication device does not have a non-congested path, the first communication device determines a third communication device according to the first label information.
[0532] In step F9-1, when the first communication device detects that there is no non-congested path locally, it determines the first label information from the first message. Since the first label information indicates that there is a third communication device with a switchable path upstream, the first communication device determines the third communication device according to the first label information.
[0533] F9-2. The first communication device sends first indication information to the third communication device, where the first indication information is used to instruct the third communication device to switch a forwarding path of the first data stream.
[0534] In step F9-2, when the first communication device determines that there is a third communication device with a switchable path, that is, there is a third communication device with a switchable non-congested path upstream, the first communication device sends a first indication message to the third communication device, and the first indication message is used to instruct the third communication device to switch the forwarding path of the first data stream.
[0535] In a possible implementation, the first indication information is carried in a first notification message, the destination address of the first notification message points to the third communication device, and the source address of the first notification message points to the first communication device. The first notification message also includes relevant information of the first data stream, including but not limited to: the source address of the first data stream, the destination address of the first data stream, the source port of the first data stream, the destination port of the first data stream, the transport layer protocol information of the first data stream, the queue pair (QP) of the first data stream, the service type of the first data stream, or the port index of the first data stream. Optionally, the first notification message may also include a first message type identifier, and the first message type identifier indicates that the first notification message is a message used to instruct the communication device to switch the forwarding path of the data stream to a non-congested path.
[0536] In another possible implementation, the first communication device directly sends the first indication information to the third communication device, or the first communication device sends the first indication information to the third communication device through a network manager (or a network controller).
[0537] F9-3. The third communication device selects a non-congested path from multiple local non-congested paths to forward the first data stream according to the first indication information.
[0538] In step F9-3, after receiving the first indication information, the third communication device selects a non-congested path from the local multiple non-congested paths as the target path to forward the first data flow. Then, the local flow table of the non-congested path for forwarding the first data flow is updated, so that subsequent messages of the first data flow are forwarded from the target path. For example, please refer to Table 3 for the flow table.
[0539] Table 3
[0540]
[0541] Case (4):
[0542] F10: If there is no switchable non-congested path between the local device and the upstream device of the first communication device, the first communication device performs congestion control on the first data flow.
[0543] In step F10, if the first communication device detects that there is no switchable non-congested path locally, and the first label information in the first message indicates that there is no switchable non-congested path for the upstream device of the first communication device (or the first message does not include the first label information), then the first communication device considers that the result of load balancing of the first data stream corresponding to the first message is that there is no switchable path. The first communication device performs congestion control on the first data stream. Specifically, the first communication device instructs the sender of the first data stream to reduce the sending rate of the first data stream. Optionally, the first communication device can also select a relatively lightly loaded congested path from multiple local congested paths for forwarding the first data stream. In another possible implementation, the first communication device triggers the measurement of the round-trip time (RTT) between the first communication device (sender) and the receiver regarding the first data stream. Then, it is determined whether to reduce the sending rate of the first data stream based on the RTT.
[0544] In the embodiment of the present application, the communication device can also notify the first label information to perceive the congestion state of the upstream communication device. When there is no non-congested path to switch locally, the communication device can also quickly notify the upstream communication device to switch the data flow to the non-congested path for forwarding through the first indication information. Accurate and fast notification is achieved, the path selection convergence time of the load balancing strategy is reduced, the network throughput is improved, and the convergence speed of solving network congestion is improved.
[0545] The present application is described above from the perspective of method, and other embodiments provided by the present application will be further described below.
[0546] See also Fig. 9 , Fig. 9 A schematic diagram of an implementation of a communication device provided in the present application, the communication device 900 includes a processing module 901 and a transceiver module 902. The communication device 900 can implement the functions of the communication device (including the first communication device, the second communication device, the third communication device and / or the receiving end, etc.) in the above method embodiment, and thus can also achieve the beneficial effects possessed by the above method embodiment. In the embodiment of the present application, the communication device 900 can be the first communication device, the second communication device, the third communication device and / or the receiving end, or it can be an integrated circuit or component inside the first communication device, the second communication device, the third communication device and / or the receiving end, such as a chip.
[0547] The transceiver module 902 can realize corresponding communication functions, and can also be called a communication interface or a communication unit, for realizing signal transmission and reception or signal input and output. The processing module 901 is used to perform processing operations other than signal transmission and reception.
[0548] Optionally, the communication device 900 may further include a storage module, which may be used to store instructions and / or data, and the processing module 901 may read the instructions and / or data in the storage module so that the communication device implements any of the method embodiments shown in the aforementioned embodiments.
[0549] The communication device 900 can be used to perform the actions performed by the communication devices (first communication device, second communication device, third communication device and / or receiving end) in the above method embodiments. The communication device 900 can be a communication device or a component that can be configured in a communication device. The transceiver module 902 is used to perform the transceiver-related operations on the communication device side in the above method embodiments, and the processing module 901 is used to perform the processing-related operations on the communication device side in the above method embodiments.
[0550] Optionally, the transceiver module 902 may include a sending module and a receiving module. The sending module is used to perform the sending operation of the communication device in each method embodiment shown in the above embodiment. The receiving module is used to perform the receiving operation of the communication device in each method embodiment shown in the above embodiment.
[0551] It should be noted that the communication device 900 may include a sending module but not a receiving module. Alternatively, the communication device 900 may include a receiving module but not a sending module. Specifically, it may depend on whether the above solution executed by the communication device 900 includes a sending action and a receiving action.
[0552] See also Fig.10 , Fig.10 This is another structural diagram of a communication device provided in the present application, where the communication device 1000 at least includes an input / output interface 1002. The communication device 1000 may be a chip or an integrated circuit.
[0553] Optionally, the communication device further includes a logic circuit 1001 .
[0554] in, Fig. 9 The transceiver module 902 shown may be a communication interface, which may be Fig.10 The input / output interface 1002 in the embodiment may include an input interface and an output interface. Alternatively, the communication interface may also be a transceiver circuit, which may include an input interface circuit and an output interface circuit.
[0555] Optionally, when the communication device 1000 is the session management function (or a component in the session management function) in the aforementioned embodiment, the input and output interface 1002 is used to input and output information; the logic circuit 1001 is used to execute the method executed by the first communication device, the second communication device, the third communication device and / or the receiving end in the aforementioned embodiment.
[0556] The logic circuit 1001 and the input / output interface 1002 may also execute other steps executed by the communication device in any embodiment and achieve corresponding beneficial effects, which will not be described in detail here.
[0557] In one possible implementation, Fig. 9 The processing module 901 shown can be Fig.10 The logic circuit 1001 in FIG.
[0558] Optionally, the logic circuit 1001 may be a processing device, and the functions of the processing device may be partially or completely implemented by software. The functions of the processing device may be partially or completely implemented by software.
[0559] Optionally, the processing device may include a memory and a processor, wherein the memory is used to store a computer program, and the processor reads and executes the computer program stored in the memory to perform corresponding processing and / or steps in any one of the method embodiments.
[0560] Alternatively, the processing device may include only a processor. A memory for storing a computer program is located outside the processing device, and the processor is connected to the memory via a circuit / wire to read and execute the computer program stored in the memory. The memory and the processor may be integrated together, or may be physically independent of each other.
[0561] Optionally, the processing device may be one or more chips, or one or more integrated circuits. For example, the processing device may be one or more field-programmable gate arrays (FPGA), application specific integrated circuits (ASIC), system on chip (SoC), central processor unit (CPU), network processor (NP), digital signal processor (DSP), microcontroller unit (MCU), programmable logic device (PLD) or other integrated chips, or any combination of the above chips or processors.
[0562] See also Fig.11 , Fig.11 This is another structural schematic diagram of a communication device provided in the present application. The communication device 1100 may specifically be a communication device serving as the first communication device, the second communication device, the third communication device and / or the receiving end in the above embodiments.
[0563] Herein, a possible logical structure diagram of the communication device 1100 is shown. The communication device 1100 may include but is not limited to at least one processor 1101 and a communication port 1102 .
[0564] Further optionally, the device may also include at least one of a memory 1103 and a bus 1104 . In an embodiment of the present application, the at least one processor 1101 is used to control and process the actions of the communication device 1100 .
[0565] In addition, the processor 1101 can be a central processing unit, a general-purpose processor, a digital signal processor, an application-specific integrated circuit, a field programmable gate array or other programmable logic device, a transistor logic device, a hardware component or any combination thereof. It can implement or execute various exemplary logic blocks, modules and circuits described in conjunction with the disclosure of this application. The processor can also be a combination that implements a computing function, such as a combination of one or more microprocessors, a combination of a digital signal processor and a microprocessor, and the like. Those skilled in the art can clearly understand that for the convenience and simplicity of description, the specific working process of the above-described system, device and unit can refer to the corresponding process in the aforementioned method embodiment, and will not be repeated here.
[0566] It should be noted that Fig.11 The communication device 1100 shown can be specifically used to implement the steps implemented by the first communication device, the second communication device, the third communication device and / or the receiving end in the aforementioned method embodiment, and to achieve the corresponding technical effects of the first communication device, the second communication device, the third communication device and / or the receiving end. Fig.11 The specific implementation methods of the communication device shown can all refer to the description in the aforementioned method embodiment, and will not be described in detail here.
[0567] See also Fig.12 , Fig.12 This is another structural diagram of the communication device provided in the present application. The communication device 1200 may specifically be a communication device as the first communication device, the second communication device, the third communication device and / or the receiving end in the above-mentioned embodiment. The structure of the communication device may refer to Fig.12 The structure shown.
[0568] The communication device 1200 includes at least one processor 1201 and at least one network interface 1204. Further optionally, the communication device also includes at least one memory 1202, at least one transceiver 1203 and one or more antennas 1205. The processor 1201, the memory 1202, the transceiver 1203 and the network interface 1204 are connected, for example, through a bus. In an embodiment of the present application, the connection may include various interfaces, transmission lines or buses, etc., which are not limited in this embodiment. The antenna 1205 is connected to the transceiver 1203. The network interface 1204 is used to enable the communication device to communicate with other communication devices through a communication link. For example, the network interface 1204 may include a network interface between the communication device and the core network device, such as an S1 interface, and the network interface may include a network interface between the communication device and other communication devices (such as other wireless access networks or core network devices), such as an X2 or Xn interface.
[0569] The processor 1201 is mainly used to process the communication protocol and communication data, and to control the entire communication device, execute the software program, and process the data of the software program, for example, to support the communication device to perform the actions described in the embodiment. The communication device may include a baseband processor and a central processing unit, the baseband processor is mainly used to process the communication protocol and communication data, and the central processing unit is mainly used to control the entire communication device, execute the software program, and process the data of the software program. Fig.12 The processor 1201 in the embodiment can integrate the functions of the baseband processor and the central processor. It can be understood by those skilled in the art that the baseband processor and the central processor can also be independent processors, which are interconnected through technologies such as buses. It can be understood by those skilled in the art that the communication device can include multiple baseband processors to adapt to different network formats, and the communication device can include multiple central processors to enhance its processing capabilities. The various components of the communication device can be connected through various buses. The baseband processor can also be described as a baseband processing circuit or a baseband processing chip. The central processor can also be described as a central processing circuit or a central processing chip. The function of processing the communication protocol and the communication data can be built into the processor, or it can be stored in the memory in the form of a software program, and the processor executes the software program to realize the baseband processing function.
[0570] The memory is mainly used to store software programs and data. The memory 1202 can be independent and connected to the processor 1201. Optionally, the memory 1202 can be integrated with the processor 1201, for example, integrated into a chip. Among them, the memory 1202 can store program codes for executing the technical solutions of the embodiments of the present application, and the execution is controlled by the processor 1201. The various types of computer program codes executed can also be regarded as drivers of the processor 1201.
[0571] Fig.12 Only one memory and one processor are shown. In the actual first communication device, there may be multiple processors and multiple memories. The memory may also be referred to as a storage medium or a storage device, etc. The memory may be a storage element on the same chip as the processor, i.e., an on-chip storage element, or an independent storage element, which is not limited in the embodiments of the present application.
[0572] The transceiver 1203 can be used to support the reception or transmission of radio frequency signals between the communication device and the terminal, and the transceiver 1203 can be connected to the antenna 1205. The transceiver 1203 includes a transmitter Tx and a receiver Rx. Specifically, one or more antennas 1205 can receive radio frequency signals, and the receiver Rx of the transceiver 1203 is used to receive the radio frequency signal from the antenna, convert the radio frequency signal into a digital baseband signal or a digital intermediate frequency signal, and provide the digital baseband signal or the digital intermediate frequency signal to the processor 1201, so that the processor 1201 further processes the digital baseband signal or the digital intermediate frequency signal, such as demodulation processing and decoding processing. In addition, the transmitter Tx in the transceiver 1203 is also used to receive a modulated digital baseband signal or a digital intermediate frequency signal from the processor 1201, and convert the modulated digital baseband signal or the digital intermediate frequency signal into a radio frequency signal, and send the radio frequency signal through one or more antennas 1205. Specifically, the receiver Rx can selectively perform one or more stages of down-mixing and analog-to-digital conversion processing on the RF signal to obtain a digital baseband signal or a digital intermediate frequency signal, and the order of the down-mixing and analog-to-digital conversion processing is adjustable. The transmitter Tx can selectively perform one or more stages of up-mixing and digital-to-analog conversion processing on the modulated digital baseband signal or digital intermediate frequency signal to obtain a RF signal, and the order of the up-mixing and digital-to-analog conversion processing is adjustable. The digital baseband signal and the digital intermediate frequency signal can be collectively referred to as a digital signal.
[0573] The transceiver 1203 may also be referred to as a transceiver module, a transceiver, a transceiver device, etc. Optionally, a device in the transceiver module for implementing a receiving function may be regarded as a receiving unit, and a device in the transceiver module for implementing a sending function may be regarded as a sending unit, that is, the transceiver module includes a receiving unit and a sending unit, the receiving unit may also be referred to as a receiver, an input port, a receiving circuit, etc., and the sending unit may be referred to as a transmitter, a transmitter, or a transmitting circuit, etc.
[0574] In the embodiment of the present application, the antenna and the radio frequency circuit having the transceiver function may be regarded as the transceiver 1203 of the communication device, and the processing unit having the processing function may be regarded as the processor 1201 of the first communication device. Fig.12 As shown, the communication device includes a transceiver 1203 and a processor 1201. The transceiver 1203 may also be referred to as a transceiver unit, a transceiver, a transceiver device, etc. The processor 1201 may also be referred to as a processing unit, a processing board, a processing module, a processing device, etc.
[0575] Optionally, the device used to implement the receiving function in the transceiver 1203 may be regarded as a receiving unit, and the device used to implement the sending function in the transceiver 1203 may be regarded as a sending unit, that is, the transceiver 1203 includes a receiving unit and a sending unit. The transceiver unit may sometimes be referred to as a transceiver, or a transceiver circuit, etc. The receiving unit may sometimes be referred to as a receiver, a receiver, or a receiving circuit, etc. The sending unit may sometimes be referred to as a transmitter, a transmitter, or a transmitting circuit, etc.
[0576] It should be understood that the transceiver 1203 is used to perform sending operations and receiving operations of the communication device (first communication device, second communication device, third communication device and / or receiving end) in the above-mentioned method embodiments, and the processor 1201 is used to perform other operations except sending and receiving operations on the communication device (first communication device, second communication device, third communication device and / or receiving end) in the above-mentioned method embodiments.
[0577] When the communication device is a chip, the chip includes a transceiver unit and a processing unit, wherein the transceiver unit may be an input / output circuit or a communication interface; and the processing unit may be a processor or a microprocessor or an integrated circuit or a logic circuit integrated on the chip.
[0578] It should be noted that Fig.12 The communication device 1200 shown can be specifically used to implement the steps implemented by the first communication device, the second communication device, the third communication device and / or the receiving end in the aforementioned method embodiment, and to achieve the corresponding technical effects of the first communication device, the second communication device, the third communication device and / or the receiving end. Fig.12 The specific implementation methods of the communication device 1200 shown can refer to the description in the aforementioned method embodiment, and will not be described in detail here.
[0579] An embodiment of the present application also provides a computer-readable storage medium storing one or more computer-executable instructions. When the computer-executable instructions are executed by a processor, the processor executes the method as a possible implementation method of the first communication device, the second communication device, the third communication device and / or the receiving end in the aforementioned embodiment.
[0580] An embodiment of the present application also provides a computer program product (or computer program) storing one or more computers. When the computer program product is executed by the processor, the processor executes the method of the possible implementation method of the above-mentioned first communication device, second communication device, third communication device and / or receiving end.
[0581] The embodiment of the present application also provides a chip system, which includes at least one processor for supporting a communication device to implement the functions involved in the possible implementation methods of the above-mentioned communication device. Optionally, the chip system also includes an interface circuit, which provides program instructions and / or data to the at least one processor. In one possible design, the chip system may also include a memory, which is used to store the necessary program instructions and data for the communication device. The chip system can be composed of chips, and may also include chips and other discrete devices, wherein the communication device can specifically be the first communication device, the second communication device, the third communication device and / or the receiving end in the aforementioned method embodiment.
[0582] An embodiment of the present application also provides a communication system, which includes the first communication device, the second communication device, the third communication device and / or the receiving end in any of the above embodiments.
[0583] In the several embodiments provided in the present application, it should be understood that the disclosed systems, devices and methods can be implemented in other ways. For example, the device embodiments described above are only schematic. For example, the division of the unit is only a logical function division. There may be other division methods in actual implementation, such as multiple units or components can be combined or integrated into another system, or some features can be ignored or not executed. Another point is that the mutual coupling or direct coupling or communication connection shown or discussed can be an indirect coupling or communication connection through some interfaces, devices or units, which can be electrical, mechanical or other forms.
[0584] The units described as separate components may or may not be physically separated, and the components shown as units may or may not be physical units, that is, they may be located in one place or distributed on multiple network units. Some or all of the units may be selected according to actual needs to achieve the purpose of the solution of this embodiment.
[0585] In addition, each functional unit in each embodiment of the present application can be integrated into a processing module, or each unit can exist physically separately, or two or more units can be integrated into one unit. The above-mentioned integrated unit can be implemented in the form of hardware or in the form of a software functional unit. If the integrated unit is implemented in the form of a software functional unit and sold or used as an independent product, it can be stored in a computer-readable storage medium. Based on this understanding, the technical solution of the present application is essentially or the part that contributes or all or part of the technical solution can be embodied in the form of a software product, and the computer software product is stored in a storage medium, including several instructions for a computer device (which can be a personal computer, a server, or a wireless access network, etc.) to perform all or part of the steps of the method of each embodiment of the present application. The aforementioned storage medium includes: U disk, mobile hard disk, read-only memory (ROM, Read-Only Memory), random access memory (RAM, Random Access Memory), disk or optical disk and other media that can store program code.
Claims
1. A data processing method, characterized in that: The method is applied to a first communication device, and the method includes: receiving a first message; Determining that a first data flow corresponding to the first message is a non-congestion controlled CC data flow; According to the fact that the first data flow is the non-CC data flow, a load balancing strategy is executed on the first data flow corresponding to the first message.
2. The method according to claim 1, characterized in that After executing the load balancing strategy on the first message, the method further includes: When the result of the load balancing is that there is no switchable path, congestion control is performed on the first data flow.
3. The method according to claim 1 or 2, characterized in that: The method further comprises: receiving a second message; Determine that the second data flow corresponding to the second message is a CC data flow; According to the second data flow being the CC data flow, no load balancing strategy is executed on the second data flow corresponding to the second message.
4. The method according to claim 3, characterized in that The method further comprises: Congestion control is performed on the second data flow.
5. The method according to any one of claims 1 to 4, characterized in that The method further comprises: receiving first label information sent by a third communication device, where the first label information is used to indicate that a non-congested path exists for the third communication device; determining, according to the first tag information, that a non-congested path exists for the third communication device; After receiving the first message, the method further includes: When there is no non-congested path locally in the first communication device, first indication information is sent to the third communication device, where the first indication information is used to instruct the third communication device to switch the forwarding path of the first data flow.
6. The method according to claim 5, characterized in that The receiving the first tag information sent by the third communication device includes: The first message sent by the third communication device is received, where the first message carries the first label information.
7. The method according to claim 5 or 6, characterized in that: The first tag information includes any one or more of the following information: The layer information of the third communication device in the network, the address information of the third communication device, the identity of the third communication device, or the location information of the third communication device.
8. The method according to any one of claims 1 to 7, characterized in that The method further comprises: A third message is received, where the third message is used to indicate that the first data flow is the non-CC data flow, and the third message is also used to indicate that a load balancing strategy is executed on the first data flow.
9. The method according to claim 8, characterized in that The third message includes any one or more of the following fields: a third message type identifier, a source address of the first data stream, a destination address of the first data stream, a source port of the first data stream, a destination port of the first data stream, transport layer protocol information of the first data stream, an identity identifier of the first data stream, or a CC indication, wherein the third message type identifier indicates that the third message is a notification message for notifying the non-CC data stream, and the CC indication is used to indicate that the third message is about the CC data stream or the non-CC data stream.
10. The method according to any one of claims 3 to 9, characterized in that: The method further comprises: A fourth message is received, where the fourth message is used to indicate that the second data flow is the CC data flow, and the fourth message is also used to indicate that a load balancing strategy is not executed on the second data flow.
11. The method according to claim 10, characterized in that The fourth message includes any one or more of the following fields: a fourth message type identifier, a source address of the first data stream, a destination address of the first data stream, a source port of the first data stream, a destination port of the first data stream, transport layer protocol information of the first data stream, an identity identifier of the first data stream, or a CC indication, wherein the fourth message type identifier indicates that the fourth message is a notification message for notifying the CC data stream, and the CC indication is used to indicate that the fourth message is about the CC data stream or the non-CC data stream.
12. The method according to any one of claims 3 to 11, characterized in that: The determining that the second data flow corresponding to the second message is the CC data flow includes: According to the CC indication included in the second message, it is determined that the second data flow corresponding to the second message is the CC data flow.
13. The method according to any one of claims 3 to 12, characterized in that: After determining that the second data flow corresponding to the second message is the CC data flow, the method further includes: generating, according to the second message, the second message to which a CC indication is added, where the CC indication is used to indicate that the second data flow is the CC data flow; Sending the second message to which the CC indication is added.
14. The method according to any one of claims 1 to 13, characterized in that The load balancing strategies include: adaptive routing, equal cost multi-path routing ECMP, packet level load balancing, or sub-flow flowlet load balancing.
15. A data processing method, characterized in that: The method is applied to a second communication device, and the method includes: Determine local egress port congestion; Determining that the second data stream transmitted in the local outbound port is a CC data stream; A fourth message is sent, where the fourth message is used to indicate that the second data flow is the CC data flow, and the fourth message is also used to indicate that a load balancing strategy is not executed on the second data flow.
16. The method according to claim 15, characterized in that The sending the fourth message includes: receiving a second message, where the second message belongs to the second data flow; Generate the fourth message according to the second message, the fourth message including the second message, the fourth message also including a CC indication, the CC indication of the fourth message being used to indicate that the second data flow is the CC data flow; Send the fourth message to a receiving end of the second data stream.
17. The method according to claim 15, characterized in that The sending the fourth message includes: Sending the fourth message to the previous hop of the second communication device; Alternatively, the fourth message is sent to a first communication device, where the first communication device is a sender of the second data stream.
18. The method according to any one of claims 15 to 17, characterized in that: The fourth message includes any one or more of the following fields: a fourth message type identifier, a source address of the first data stream, a destination address of the first data stream, a source port of the first data stream, a destination port of the first data stream, transport layer protocol information of the first data stream, an identity identifier of the first data stream, or a CC indication, wherein the fourth message type identifier indicates that the fourth message is a notification message for notifying the CC data stream, and the CC indication is used to indicate that the fourth message is about the CC data stream or the non-CC data stream.
19. The method according to any one of claims 15 to 18, characterized in that The method further comprises: Determining that the local egress port is in a non-congested state; Determining that the first data stream transmitted in the local outbound port is a non-CC data stream; A third message is sent, where the third message is used to indicate that the first data flow is the non-CC data flow, and the third message is also used to indicate that a load balancing strategy is executed on the first data flow.
20. The method according to claim 19, characterized in that The third message includes any one or more of the following fields: a fourth message type identifier, a source address of the first data stream, a destination address of the first data stream, a source port of the first data stream, a destination port of the first data stream, transport layer protocol information of the first data stream, an identity identifier of the first data stream, or a CC indication, wherein the fourth message type identifier indicates that the third message is a notification message for notifying the non-CC data stream, and the CC indication is used to indicate that the third message is about the CC data stream or the non-CC data stream.
21. The method according to claim 19 or 20, characterized in that The sending of the third message includes: Sending the third message to the previous hop of the second communication device; Alternatively, the third message is sent to a first communication device, where the first communication device is a sender of the first data stream.
22. The method according to any one of claims 15 to 21, characterized in that The load balancing strategies include: adaptive routing, equal cost multi-path routing ECMP, packet level load balancing, or sub-flow flowlet load balancing.
23. A data processing method, characterized in that: The method is applied to a receiving end, and the method comprises: receiving a fourth message, wherein the fourth message is used to indicate that the second data flow is a CC data flow, and the fourth message is also used to indicate that a load balancing strategy is not executed on the second data flow; According to the fourth message, a fifth message is sent to the sending end, the fifth message is used to indicate that the second data flow is the CC data flow, the sending end is used to send the second data flow, and the fifth message is used to indicate that the load balancing strategy is not executed on the second data flow.
24. The method according to claim 23, characterized in that The fourth message also includes a congestion flag, and the congestion flag instructs the sender of the second message to reduce the rate of sending the data flow.
25. The method according to claim 23 or 24, characterized in that The fourth message includes any one or more of the following fields: a fourth message type identifier, a source address of the first data stream, a destination address of the first data stream, a source port of the first data stream, a destination port of the first data stream, transport layer protocol information of the first data stream, an identity identifier of the first data stream, or a CC indication, wherein the fourth message type identifier indicates that the fourth message is a notification message for notifying the CC data stream, and the CC indication is used to indicate that the fourth message is about the CC data stream or the non-CC data stream.
26. The method according to any one of claims 23 to 25, characterized in that The method further comprises: receiving a third message, wherein the third message is used to indicate that the first data flow is a non-CC data flow, and the third message is also used to indicate that a load balancing strategy is executed on the first data flow; According to the third message, a sixth message is sent to the sending end, where the sixth message is used to indicate that the first data flow is the non-CC data flow, and the sixth message is also used to indicate that a load balancing strategy is executed on the first data flow.
27. The method according to claim 26, characterized in that The third message includes any one or more of the following fields: a third message type identifier, a source address of the first data stream, a destination address of the first data stream, a source port of the first data stream, a destination port of the first data stream, transport layer protocol information of the first data stream, an identity identifier of the first data stream, or a CC indication, wherein the third message type identifier indicates that the third message is a notification message for notifying the non-CC data stream, and the CC indication is used to indicate that the third message is about the CC data stream or the non-CC data stream.
28. The method according to any one of claims 23 to 27, characterized in that The load balancing strategies include: adaptive routing, equal cost multi-path routing ECMP, packet level load balancing, or sub-flow flowlet load balancing.
29. A data processing method, characterized in that: The method is applied to a third communication device, and the method includes: Sending first label information to a downstream device of the third communication device, wherein the first label information is used to indicate that a non-congested path exists for the third communication device, and the first label information is used to instruct the downstream device of the third communication device to switch a forwarding path of a data stream associated with the first label information when a non-congested path does not exist locally.
30. The method according to claim 29, characterized in that The sending the first tag information includes: A first message is sent, where the first message belongs to a first data flow, the first data flow is a non-CC data flow, and the first message carries the first label information.
31. The method according to claim 29 or 30, characterized in that The first label information includes a congestion status of at least one local egress port in the third communication device and / or a congestion status of a next hop corresponding to at least one local egress port in the third communication device.
32. The method according to any one of claims 29 to 31, characterized in that The first tag information includes any one or more of the following information: The layer information of the third communication device in the network, the address information of the third communication device, the identity of the third communication device, or the location information of the third communication device.
33. The method according to any one of claims 29 to 32, characterized in that The load balancing strategies include: adaptive routing, equal cost multi-path routing ECMP, packet level load balancing, or sub-flow flowlet load balancing.
34. A data processing method, characterized in that: The method is applied to a first communication device, and the method includes: receiving first label information sent by a third communication device, where the first label information is used to indicate that a non-congested path exists for the third communication device; determining, according to the first tag information, that a non-congested path exists for the third communication device; receiving a first message, where the first message belongs to a first data stream, and the first data stream is a non-CC data stream; When there is no non-congested path locally in the first communication device, first indication information is sent to the third communication device, where the first indication information is used to instruct the third communication device to switch the forwarding path of the first data flow.
35. The method according to claim 34, characterized in that The first message carries the first label information.
36. The method according to claim 35, characterized in that The first tag information includes any one or more of the following information: The layer information of the third communication device in the network, the address information of the third communication device, the identity of the third communication device, or the location information of the third communication device.
37. A communication device, characterized in that: The communication device is applied to a first communication device, and the communication device includes: A transceiver module, used for receiving a first message; A processing module, configured to determine that a first data flow corresponding to the first message is a non-congestion controlled CC data flow; The processing module is further configured to execute a load balancing strategy on the first data flow corresponding to the first message according to the fact that the first data flow is the non-CC data flow.
38. A communication device, characterized in that: The communication device is applied to a second communication device, and the communication device includes: A processing module for determining local egress port congestion; The processing module is further configured to determine that the second data stream transmitted in the local output port is a CC data stream; The transceiver module is used to send a fourth message, where the fourth message is used to indicate that the second data flow is the CC data flow, and the fourth message is also used to indicate that the load balancing strategy is not executed on the second data flow.
39. A communication device, characterized in that: The communication device is applied to a receiving end, and the communication device includes: A transceiver module, used to receive a fourth message, wherein the fourth message is used to indicate that the second data flow is a CC data flow, and the fourth message is also used to indicate that a load balancing strategy is not executed on the second data flow; The transceiver module is also used to send a fifth message to the sending end according to the fourth message, the fifth message is used to indicate that the second data flow is the CC data flow, the sending end is used to send the second data flow, and the fifth message is used to indicate that the load balancing strategy is not executed on the second data flow.
40. A communication device, characterized in that: The communication device is applied to a third communication device, and the communication device includes: A transceiver module is used to send first label information to a downstream device of the third communication device, wherein the first label information is used to indicate that a non-congested path exists for the third communication device, and the first label information is used to instruct the downstream device of the third communication device to switch the forwarding path of the data stream associated with the first label information when a non-congested path does not exist locally.
41. A communication device, characterized in that: The communication device is applied to a first communication device, and the communication device includes: a transceiver module, configured to receive first label information sent by a third communication device, wherein the first label information is used to indicate that a non-congested path exists for the third communication device; a processing module, configured to determine, according to the first label information, that a non-congested path exists for the third communication device; The transceiver module is further used to receive a first message, where the first message belongs to a first data stream, and the first data stream is a non-CC data stream; The transceiver module is further used to send first indication information to the third communication device when there is no non-congested path locally in the first communication device, wherein the first indication information is used to instruct the third communication device to switch the forwarding path of the first data flow.
42. A communication device, characterized in that: Including communication interface and processor: The communication interface is used to input and / or output signaling or data; The processor is used to execute a computer-executable program so that the method described in any one of claims 1 to 14 is executed, or the method described in any one of claims 15 to 22 is executed, or the method described in any one of claims 23 to 28 is executed, or the method described in any one of claims 29 to 33 is executed, or the method described in any one of claims 34 to 36 is executed.
43. A communication device, characterized in that: including a processor and memory, The memory is used to store computer programs or instructions; The processor is used to execute a computer program or instruction in the memory, so that the method described in any one of claims 1 to 14 is executed, or the method described in any one of claims 15 to 22 is executed, or the method described in any one of claims 23 to 28 is executed, or the method described in any one of claims 29 to 33 is executed, or the method described in any one of claims 34 to 36 is executed.
44. A computer-readable storage medium comprising instructions, characterized in that: When the instructions are executed by the processor, the method of claims 1-14, or any one of claims 15-22, or any one of claims 23-28, or any one of claims 29-33, or any one of claims 34-36 is implemented.
45. A computer program product, characterized in that The computer program product stores instructions, which, when executed by a computer, enable the computer to implement the method of any one of claims 1-14, or claims 15-22, or claims 23-28, or claims 29-33, or claims 34-36.
46. A chip system, characterized in that: The chip system includes at least one processor, and when the program instructions are executed in the at least one processor, the method described in any one of claims 1-14, or claims 15-22, or claims 23-28, or claims 29-33, or claims 34-36 is implemented.
47. A communication system, characterized in that: The invention comprises a communication device for executing the method according to any one of claims 1 to 14, a communication device for executing the method according to any one of claims 15 to 22, and / or a communication device for executing the method according to any one of claims 23 to 28.
48. A communication system, characterized in that: A communication device comprising a method for executing any one of claims 29-33, and / or a communication device for executing any one of claims 34-36.