Network congestion processing method and related device
Through the message notification of the first forwarding path head node, the sending end performs data flow speed reduction processing, which solves the problem of network congestion in the wide area network scenario and improves communication quality and throughput.
Patent Information
- Application Number
- CN202410309700.2
- Authority / Receiving Office
- CN · China
- Patent Type
- Applications(China)
- Current Assignee / Owner
- Filing Date
- 2024-03-15
- Publication Date
- 2025-09-16
AI Technical Summary
In wide area network scenarios, the path between the sender and receiver is long and often tunnel-encapsulated, making it difficult for network devices to determine to which sender to send congestion notification messages. This makes it impossible to effectively alleviate network congestion, resulting in insufficient network throughput and reduced communication quality.
The network congestion is determined through the head node of the first forwarding path and a message for speed reduction is sent to the corresponding sending end. The first device is used to detect port congestion or receive messages from downstream devices, and the sending end is notified to perform data flow speed reduction using hop-by-hop backpressure or one-hop backpressure. ECN, TCP proxy and other mechanisms are used for flow control.
It alleviates network congestion in wide area network scenarios, avoids network throughput problems, improves communication quality and user experience, and simplifies the implementation process on the sending end.
Smart Images

Figure CN120658680A_ABST
Abstract
Description
Technical Field
[0001] The present application relates to the field of communication technology, and in particular to a network congestion processing method and related devices. Background Art
[0002] In data center networks, explicit congestion notification (ECN) is a common method for handling network congestion. For easier understanding, please refer to Figure 1 , Figure 1 A schematic diagram showing a scenario of congestion notification. Figure 1 In this protocol, data is transferred between a sending device (referred to as the sender) and a receiving device (receiver) via a network device. When the network device detects network congestion on its outbound port, it sends a message carrying a congestion marker to the receiver. In response to this message, the receiver sends a congestion notification packet (CNP) to the sending device via the network device. In response to this CNP message, the sending device reduces the message sending rate, thereby alleviating network congestion.
[0003] In wide area network (WAN) scenarios, the transmission path between the sender and receiver is long, and the path between the sender and receiver is often tunneled, so the sender typically uses private network routing. When network congestion occurs, the network equipment responsible for data transfer may be unable to determine to which sender to send CNP packets, thereby reducing the packet transmission rate. For these reasons, there is an urgent need for a method to handle network congestion in WAN scenarios. Summary of the Invention
[0004] The present application proposes a network congestion processing method and related devices. After the head node of a first forwarding path determines that network congestion occurs on the first forwarding path, it can notify the sending end corresponding to the first forwarding path through a first message to perform speed reduction processing on the data flow carried by the first forwarding path to alleviate the network congestion of the first forwarding path.
[0005] In a first aspect, embodiments of the present application provide a method for handling network congestion. The method is applied to a first device, where the first device is a head node of a first forwarding path. The method comprises: first, the first device determines that network congestion occurs on the first forwarding path. Then, the first device sends a first message to a sender, instructing the sender to perform downtime processing on a data flow carried by the first forwarding path.
[0006] In the above technical solution, after the head node of the first forwarding path determines that network congestion has occurred on the first forwarding path, it can determine the corresponding sender of the first forwarding path. Because it is the head node of the first forwarding path that sends the first message to the corresponding sender of the first forwarding path to alleviate network congestion, there is no need for the network device responsible for data transfer to determine the sender of the first forwarding path. In wide area network scenarios, the head node of the forwarding path notifies the sender to perform flow control, thereby resolving network congestion in wide area network scenarios, avoiding network under-throughput, improving communication quality, and enhancing the user experience.
[0007] In combination with the first aspect, in a possible implementation of the first aspect, determining that network congestion occurs on the first forwarding path includes: the first device determines that network congestion occurs on the first forwarding path corresponding to the egress port based on network congestion occurring on the egress port of the first device.
[0008] In the above technical solution, the first device can detect whether its own egress port is congested. If the egress port corresponding to the first forwarding path is congested, it can be determined that the first forwarding path is congested, thereby improving the implementation flexibility of the solution.
[0009] In conjunction with the first aspect, in a possible implementation of the first aspect, determining that network congestion has occurred on a first forwarding path includes: first, a first device receives a first message sent by a second device, the first message indicating that network congestion has occurred on the first forwarding path, where the second device is a downstream network device of the first device on the first forwarding path. Then, the first device determines, based on the first message, that network congestion has occurred on the first forwarding path.
[0010] In the above technical solution, the first device may also determine that network congestion occurs on the first forwarding path based on the first message from the downstream network device on the first forwarding path, thereby improving the implementation flexibility of the solution.
[0011] With reference to the first aspect, in a possible implementation of the first aspect, the second device is a next-hop network device of the first device in the first forwarding path.
[0012] In the above technical solution, the second device is the next-hop node of the first device on the first forwarding path. The network device (the network device is called the third device) where network congestion occurs on the first forwarding path determines the second forwarding path, and the second forwarding path is the reverse path of the first forwarding path. Then, the first message is sent to the first device along the second forwarding path. After the second device on the second forwarding path receives the first message, it forwards the first message to the first device. Optionally, the node on the second forwarding path performs congestion relief processing on the data stream carried by the first forwarding path according to the first message, such as caching the message of the data stream. Through hop-by-hop back pressure, the nodes on the first forwarding path dilute the large traffic carried by the first forwarding path, so as to alleviate the network congestion of the first forwarding path.
[0013] In another possible implementation, the network device through which the second forwarding path passes includes a network device that needs to perform congestion control processing on the first forwarding path.
[0014] In combination with the first aspect, in a possible implementation manner of the first aspect, the second device is a network device where network congestion occurs.
[0015] In the above technical solution, the second device directly sends the first message to the first device, so that the first device receives the first message. Through one-hop backpressure, the first device can quickly learn that network congestion has occurred on the first forwarding path. The first device then notifies the sender to reduce the speed of the data flow carried by the first forwarding path, thereby quickly alleviating network congestion.
[0016] In conjunction with the first aspect, in a possible implementation of the first aspect, the method further includes: the first device determining a data flow carried by the first forwarding path, and then determining a sending end corresponding to the data flow.
[0017] In the above technical solution, after the first device determines that network congestion has occurred on the first forwarding path, the first device can also determine the data flow carried by the first forwarding path. Therefore, the first device can locate the corresponding sender of the data flow based on the data flow and notify the sender to reduce the speed of the data flow, thereby alleviating the network congestion on the first forwarding path.
[0018] In conjunction with the first aspect, in a possible implementation of the first aspect, the following further includes: first, the first device determines identification information of the first forwarding path based on the first message. Then, the first device determines identification information of the data flow from a first set based on the identification information of the first forwarding path, where the first set includes associations between identification information of one or more forwarding paths and data flows carried by the forwarding paths. Finally, the first device determines a sending end of the data flow based on the identification information of the data flow.
[0019] In one example, the first set may be a routing table.
[0020] In another example, the first set may be a Remote Direct Memory Access (RoCE) flow table of Converged Ethernet.
[0021] In the above technical solution, the first device generates a first set after obtaining identification information of the first forwarding path, identification information of the data flow carried by the first forwarding path, and the sender of the data flow based on the message carried by the first forwarding path. When the first device determines that network congestion has occurred on the first forwarding path, it can conveniently determine the data flow carried by the first forwarding path and the sender of the data flow from the first set, thereby improving the efficiency of resolving network congestion.
[0022] In combination with the first aspect, in a possible implementation manner of the first aspect, the first message further includes: identification information of the data flow.
[0023] Optionally, the identification information of the data flow includes: an Internet Protocol quintuple, or a destination queue pair, wherein the Internet Protocol quintuple includes: a source Internet Protocol address, a destination Internet Protocol address, a source port number, a destination port number and a transport layer protocol type.
[0024] In the above technical solution, the first message explicitly carries identification information of the data streams that need to be slowed down, which makes it easier for the sender to know which data streams need to be slowed down, thereby improving the processing efficiency of resolving network congestion.
[0025] In combination with the first aspect, in a possible implementation manner of the first aspect, the first message further includes: first speed reduction information, where the first speed reduction information is used to indicate an expected speed reduction range of the data stream.
[0026] In the above technical solution, the first message can also explicitly carry the first speed reduction information, making it easier for the sender to know the expected speed reduction of the data stream, simplifying the implementation of the sender. In addition, by explicitly carrying the first speed reduction information, the sender can ensure that the data stream is appropriately slowed down, alleviating network congestion while ensuring data throughput.
[0027] In combination with the first aspect, in a possible implementation of the first aspect, the first message further includes second speed reduction information, where the second speed reduction information is used to indicate an expected speed reduction time of the data flow.
[0028] In the above technical solution, the first message can also explicitly carry the second deceleration information, allowing the sender to know the expected deceleration time for the data stream, simplifying the implementation of the sender. Furthermore, by explicitly carrying the second deceleration information, the sender is ensured to appropriately decelerate the data stream, alleviating network congestion while ensuring data throughput.
[0029] The first message also includes: first information, the first information is used to indicate that the first message is a speed reduction notification message, and the speed reduction notification message is used to instruct the sending end to perform speed reduction processing on the data flow.
[0030] In the above technical solution, the first message may also explicitly carry the first information, so that the sending end can identify, based on the first information, that the first message is a speed reduction notification message for the data stream.
[0031] Optionally, the first information includes: a User Datagram Protocol UDP port number, or an operation code Opcode.
[0032] In conjunction with the first aspect, in a possible implementation of the first aspect, determining, based on identification information of the data stream, a sending end for sending the data stream includes:
[0033] First, the first device determines a first ingress port index corresponding to the data flow from a second set based on the identification information of the data flow. The second set includes one or more associations, each of which includes the identification information of the data flow, a queue carrying the data flow, and the ingress port index corresponding to the queue. Then, the first device determines a transmitting end based on the first ingress port index.
[0034] In the above technical solution, for an Internet Protocol Radio Access Network (IP RAN) scenario, for example, where the transmitting end is an access network device and the receiving end is a core network, the first device may further maintain a second set so that the first device can find the first ingress port index corresponding to a data flow that requires downscaling from the second set. This can alleviate network congestion issues in IP RAN scenarios.
[0035] In combination with the first aspect, in a possible implementation of the first aspect, the first message further includes: identification information of the queue corresponding to the data flow, and the first message is further used to instruct the sending end to perform speed reduction processing on the queue corresponding to the data flow.
[0036] In the above technical solution, after the first device determines the sending end (access network device) corresponding to the data flow based on the first ingress port index, it can also determine which queues the access network device needs to perform rate reduction processing on. The first message can explicitly notify the access network device of which queues to perform rate reduction processing, thereby resolving network congestion issues in IP RAN scenarios.
[0037] Optionally, the first message is a Transmission Control Protocol TCP message, a User Datagram Protocol UDP message, or an Internet Control Message Protocol ICMP message.
[0038] For example, the payload field of the first message carries identification information of the data flow, first speed reduction information, and / or second speed reduction information.
[0039] Optionally, the first message is a Remote Direct Memory Access (RoCE) message of Converged Ethernet.
[0040] For example, the reserved field of the first message carries the identification information of the data stream, the first information, the first speed reduction information, and / or the second speed reduction information; or, the message sequence number PSN field of the first message carries the identification information of the data stream, the first information, the first speed reduction information, and / or the second speed reduction information.
[0041] In combination with the first aspect, in a possible implementation of the first aspect, the first forwarding path carries a Transmission Control Protocol TCP session between the sender and the receiver; the first message also includes: third speed reduction information, the third speed reduction information is a receiving window value determined by the first device, and the third speed reduction information is used to indicate the sending window size of the data stream sent by the sender.
[0042] In the above technical solution, the first device may also use the TCP flow control mechanism to notify the sending end to perform speed reduction processing on the data stream, thereby improving the implementation flexibility of the solution.
[0043] In conjunction with the first aspect, in a possible implementation of the first aspect, the method further includes: the first device generating a first window value, where the first window value is a congestion window value of the transmitting end calculated by the first device. The first device obtains a second window value generated by the receiving end, where the second window value indicates a receiving window value generated by the receiving end. Finally, the first device determines third speed reduction information based on the first window value and the second window value, where the value of the third speed reduction information is the minimum of the first window value and the second window value.
[0044] In the above technical solution, the first device can also determine the third speed reduction information based on multiple factors to ensure accurate flow control of the first forwarding path, and ensure data throughput while alleviating network congestion on the first forwarding path.
[0045] In conjunction with the first aspect, in a possible implementation of the first aspect, obtaining the second window value generated by the receiving end includes: a first device obtaining the second window value from a receive window (RWND) field of a first message, where the first message is an ACK message for a Transmission Control Protocol (TCP) session established between a sending end and a receiving end. Then, the first device modifies the RWND field of the first message based on third rate reduction information to generate a first message, where the window value of the receive window (RWND) field of the first message is the same as the value of the third rate reduction information.
[0046] In the above technical solution, the first device can implement congestion control without the sender's perception by tampering with the receive window (RWND) field of the ACK message (or ACK packet) in the loop of the first forwarding path, thereby simplifying the implementation of the sender.
[0047] In conjunction with the first aspect, in a possible implementation of the first aspect, obtaining a second window value generated by a receiving end includes: first, a first device generates a third set, the third set including an association between one or more data streams and receive window values corresponding to the data streams, where the receive window value of the data stream is determined by the receiving end. Then, the first device determines the second window value corresponding to the data stream from the third set, the third set including an association between one or more data streams and receive window values corresponding to the data streams.
[0048] In the above technical solution, the first device acts as a TCP agent node between the sending end and the receiving end, and implements flow control without the sending end's perception through the TCP agent mechanism, thereby simplifying the implementation of the sending end.
[0049] Optionally, the first message is an acknowledgment ACK message of the Transmission Control Protocol TCP; wherein the receiving window field of the first message carries the third speed reduction information; or, the optional option field of the first message carries the first speed reduction information and / or the second speed reduction information.
[0050] In conjunction with the first aspect, in a possible implementation of the first aspect, the first forwarding path carries a Transmission Control Protocol (TCP) session between a sender and a receiver. The first message also includes fourth speed reduction information, which is used to instruct the sender to reduce the amount of data flow sent.
[0051] In the above technical solution, the first device adopts the ECN congestion control mechanism to implement flow control without the sender's perception, thereby simplifying the implementation of the sender.
[0052] Optionally, the fourth speed reduction information is carried in the congestion response ECE field.
[0053] Optionally, the value of the ECE field of the first message is 1.
[0054] In combination with the first aspect, in a possible implementation of the first aspect, the method also includes: after the first device determines that the first forwarding path has recovered from network congestion, the first device may also send a second message to the sending end, and the second message is used to instruct the sending end to cancel the speed reduction processing of the data flow.
[0055] In the above technical solution, after the first device senses that the first forwarding path has recovered from network congestion, it can actively notify the sending end to release the speed reduction processing of the data flow carried by the first forwarding path, so as to fully utilize the available bandwidth resources of the first forwarding path, improve network throughput, and improve communication efficiency.
[0056] In conjunction with the first aspect, in a possible implementation of the first aspect, determining that the first forwarding path has recovered from network congestion includes: a first device receiving a second message sent by a second device, where the second message is used to indicate that the first forwarding path has recovered from network congestion. Then, the first device determines, based on the second message, that the first forwarding path has recovered from network congestion.
[0057] In the above technical solution, the first device may also determine, based on a notification from a downstream node, that the first forwarding path has recovered from network congestion, thereby improving the implementation flexibility of the solution.
[0058] Optionally, the second message further includes: identification information of the data flow. Optionally, the identification information of the data flow includes: an Internet Protocol quintuple, or a destination queue pair, wherein the Internet Protocol quintuple includes: a source Internet Protocol address, a destination Internet Protocol address, a source port number, a destination port number, and a transport layer protocol type.
[0059] In the above technical solution, the second message explicitly carries identification information of the data streams that need to be decelerated, which makes it easier for the sender to know which data streams need to be released from the deceleration process, thereby improving communication efficiency and increasing data throughput.
[0060] In a second aspect, embodiments of the present application provide a method for handling network congestion, which is applied to a transmitting end and includes: first, the transmitting end receives a first message sent by a first device, the first message being used to instruct the transmitting end to perform speed reduction processing on a data stream, the first device being the head node of a first forwarding path, and the first forwarding path carrying the data stream. Then, the transmitting end reduces the transmission rate of the data stream based on the first message.
[0061] In one example, the sending end and the corresponding receiving end may be hosts with communication requirements. The host may be implemented in a variety of ways, 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.
[0062] In another example, the sending end is an RDMA network card, and the corresponding receiving end is another RDMA network card.
[0063] In another example, the sending end is the core network and the receiving end is the access network device.
[0064] In another example, the sending end is the access network device and the receiving end is the core network.
[0065] In this technical solution, the sending end can trigger a downtime for the data stream carried by the first forwarding path in response to the first message from the head node of the first forwarding path, thereby alleviating network congestion. This eliminates the need for the network device responsible for data transfer to determine the sending end of the first forwarding path, thereby resolving network congestion in wide area network scenarios and improving communication quality.
[0066] In combination with the second aspect, in a possible implementation manner of the second aspect, the first message further includes identification information of the data flow.
[0067] Optionally, the identification information of the data flow includes: an Internet Protocol quintuple, or a destination queue pair, wherein the Internet Protocol quintuple includes: a source Internet Protocol address, a destination Internet Protocol address, a source port number, a destination port number and a transport layer protocol type.
[0068] In the above technical solution, the first message explicitly carries identification information of the data streams that need to be slowed down, which makes it easier for the sender to know which data streams need to be slowed down, thereby improving the processing efficiency of resolving network congestion.
[0069] In combination with the second aspect, in a possible implementation of the second aspect, the sending end receives a second message sent by the first device, and the second message is used to instruct the sending end to perform de-speeding processing on the data stream; according to the second message, the sending rate of the data stream is increased.
[0070] In combination with the second aspect, in a possible implementation manner of the second aspect, the second message further includes identification information of the data flow.
[0071] Optionally, the second message further includes: identification information of the data flow. Optionally, the identification information of the data flow includes: an Internet Protocol quintuple, or a destination queue pair, wherein the Internet Protocol quintuple includes: a source Internet Protocol address, a destination Internet Protocol address, a source port number, a destination port number, and a transport layer protocol type.
[0072] In the above technical solution, the second message explicitly carries identification information of the data streams that need to be decelerated, which makes it easier for the sender to know which data streams need to be released from the deceleration process, thereby improving communication efficiency and increasing data throughput.
[0073] In a third aspect, an embodiment of the present application provides a method for handling network congestion, which is applied to a second device and includes:
[0074] A first message is sent to a first device, where the first message is used to indicate that network congestion occurs on a first forwarding path. The second device is a downstream network device of the first device on the first forwarding path, and the first device is a head node of the first forwarding path.
[0075] In combination with the third aspect, in a possible implementation manner of the third aspect, the first message includes: identification information of the first forwarding path.
[0076] In the above technical solution, by carrying the identification information of the first forwarding path in the first message, the first device can determine which forwarding paths have network congestion, and then determine which data flows in the forwarding path need to be slowed down to alleviate the network congestion of the forwarding path.
[0077] In combination with the third aspect, in a possible implementation manner of the third aspect, the second device is a next-hop network device of the first device in the first forwarding path.
[0078] In the above technical solution, the second device is the next-hop node of the first device on the first forwarding path. The network device (the network device is called the third device) where network congestion occurs on the first forwarding path determines the second forwarding path, and the second forwarding path is the reverse path of the first forwarding path. Then, the first message is sent to the first device along the second forwarding path. After the second device on the second forwarding path receives the first message, it forwards the first message to the first device. Optionally, the node on the second forwarding path performs congestion relief processing on the data stream carried by the first forwarding path according to the first message, such as caching the message of the data stream. Through hop-by-hop back pressure, the nodes on the first forwarding path dilute the large traffic carried by the first forwarding path, so as to alleviate the network congestion of the first forwarding path.
[0079] In combination with the third aspect, in a possible implementation of the third aspect, the second device is a network device where network congestion occurs.
[0080] In the above technical solution, the second device directly sends the first message to the first device, so that the first device receives the first message. Through one-hop backpressure, the first device can quickly learn that network congestion has occurred on the first forwarding path. The first device then notifies the sender to reduce the speed of the data flow carried by the first forwarding path, thereby quickly alleviating network congestion.
[0081] In combination with the third aspect, in a possible implementation manner of the third aspect, the method further includes: sending a second message to the first device, where the second message is used to indicate that the first forwarding path has recovered from network congestion.
[0082] In the above technical solution, after the second device senses that the first forwarding path has recovered from network congestion, it can actively notify the sending end to release the speed reduction processing of the data flow carried by the first forwarding path, so as to fully utilize the available bandwidth resources of the first forwarding path, improve network throughput, and improve communication efficiency.
[0083] In combination with the third aspect, in a possible implementation manner of the third aspect, the second message includes: identification information of the first forwarding path.
[0084] In the above technical solution, by carrying the identification information of the first forwarding path in the second message, the first device can determine which forwarding paths have recovered from network congestion, and then determine which data flows in the forwarding path need to be released from speed reduction processing to improve network throughput and communication efficiency.
[0085] In a fourth aspect, an embodiment of the present application proposes a communication device, which includes a processing unit and a transceiver unit, and is used to execute the method of the aforementioned first aspect and any one of the first aspects.
[0086] In a fifth aspect, an embodiment of the present application proposes a communication device, which includes a processing unit and a transceiver unit, and the communication device is used to execute the method of the aforementioned second aspect and any one of the second aspects.
[0087] In a sixth aspect, an embodiment of the present application proposes a communication device, which includes a processing unit and a transceiver unit, and the communication device is used to execute the method of the aforementioned third aspect and any one of the third aspects.
[0088] In a seventh aspect, an embodiment of the present application provides a chip, which includes an interface circuit and a processing circuit. The interface circuit and the processing circuit are interconnected through lines, and the processing circuit is used to run computer programs or instructions to perform the method of the first aspect, the second aspect or the third aspect.
[0089] Optionally, the chip includes at least one processor and a communication interface, the communication interface and the at least one processor are interconnected via a line, and the at least one processor is used to run a computer program or instruction to perform the method of the first aspect, the second aspect or the third aspect.
[0090] Optionally, the communication interface of the chip may be an input / output interface, a pin or a circuit, etc.
[0091] In conjunction with the seventh aspect, in one implementation of the seventh aspect of the embodiments of the present application, the chip described above in the present application further includes at least one memory, wherein the at least one memory stores instructions. The memory can be a storage unit within the chip, such as a register, a cache, etc., or can be a storage unit of the chip (such as a read-only memory, a random access memory, etc.).
[0092] An eighth aspect of an embodiment of the present application provides a computing device, comprising at least one processor coupled to a memory; the memory is used to store programs or instructions; the at least one processor is used to execute the program or instructions so that the device can implement any possible implementation method of the aforementioned first aspect, second aspect or third aspect.
[0093] A ninth aspect of an embodiment of the present application provides a computing device, comprising a communication interface for inputting and / or outputting signaling or data; and a processor for executing a computer-executable program so that the device can implement any possible implementation of the first, second or third aspects described above.
[0094] In a tenth aspect, an embodiment of the present application provides a computing device comprising at least one logic circuit and an input / output interface; the input / output interface is used to input or output information; and the logic circuit is used to execute any possible implementation method as described in the first, second or third aspects above.
[0095] In an eleventh aspect, the present application provides a communication system, comprising the communication device of the fourth aspect, the communication device of the fifth aspect and / or the communication device of the sixth aspect.
[0096] The twelfth aspect of the present application provides a computer-readable storage medium, which stores a computer program. When the computer-readable storage medium is run on a computer, it enables the computer to execute the method of the first, second or third aspect above.
[0097] The thirteenth aspect of the present application provides a computer program product, which, when executed on a computer, enables the computer to execute the method of the first, second or third aspect above.
[0098] In a fourteenth aspect, the present application provides a communication system, which includes a communication device, wherein the communication device is used to execute the method as described in any one of the first, second or third aspects above. BRIEF DESCRIPTION OF THE DRAWINGS
[0099] Figure 1 This is a flowchart of ECN;
[0100] Figure 2 This is a schematic diagram of the PFC scenario;
[0101] Figure 3 This is a networking diagram of IP RAN;
[0102] Figure 4a A schematic diagram of the structure of a communication system involved in an embodiment of the present application;
[0103] Figure 4b This is another structural diagram of a communication system involved in an embodiment of the present application;
[0104] Figure 4c This is another structural diagram of a communication system involved in an embodiment of the present application;
[0105] Figure 4d This is another structural diagram of a communication system involved in an embodiment of the present application;
[0106] Figure 5 This is another structural diagram of the communication system in the embodiment of the present application;
[0107] Figure 6 This is another structural diagram of the communication system in the embodiment of the present application;
[0108] Figure 7 This is a flow chart of a method for handling network congestion according to an embodiment of the present application;
[0109] Figure 8 This is a flow chart of a method for handling network congestion according to an embodiment of the present application;
[0110] Figure 9 A schematic diagram of a process for determining third speed reduction information in an embodiment of the present application;
[0111] Figure 10 is a structural diagram of a first message;
[0112] Figure 11 This is another structural diagram of the first message;
[0113] Figure 12 is a structural diagram of a first message;
[0114] Figure 13 A flowchart of an application scenario of an embodiment of the present application;
[0115] Figure 14 A flowchart of an application scenario of an embodiment of the present application;
[0116] Figure 15 A flowchart of an application scenario of an embodiment of the present application;
[0117] Figure 16 This is another structural diagram of the first message;
[0118] Figure 17 This is another structural diagram of the first message in the embodiment of the present application;
[0119] Figure 18A flowchart of an application scenario of an embodiment of the present application;
[0120] Figure 19 A schematic structural diagram of a communication device 1900 provided in an embodiment of the present application;
[0121] Figure 20 A schematic structural diagram of a communication device 2000 provided in an embodiment of the present application;
[0122] Figure 21 A schematic structural diagram of a communication device 2100 provided in an embodiment of the present application;
[0123] Figure 22 A schematic diagram of a communication system 2200 proposed in an embodiment of the present application. DETAILED DESCRIPTION
[0124] 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 are not necessarily 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, and this is merely a way of distinguishing the objects of the same attributes when describing them 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.
[0125] First, some concepts involved in the embodiments of this application are introduced.
[0126] 1. Explicit congestion notification.
[0127] ECN is an extension of the Transmission Control Protocol (TCP) / Internet Protocol (IP). A network that uses ECN can achieve congestion control without dropping packets.
[0128] For easier understanding, see Figure 1 , Figure 1 This is a schematic diagram of the ECN process. The specific process of ECN includes:
[0129] A1. A network device (such as a switch) determines that network congestion occurs at an outbound port.
[0130] A2. After a network device detects network congestion in the outbound direction, it will add a congestion marker (also called an ECN marker) to the IP header of the message to be forwarded. The message carrying the ECN marker informs the receiving end that network congestion has occurred.
[0131] A3. After receiving a message with an ECN mark, the receiving end can determine that network congestion has occurred on the network device. Then, the receiving end can send congestion notification packets (CNP) to the sending end.
[0132] A4. After receiving the congestion notification message, the sender reduces the rate at which it sends messages to the receiver. The above method can alleviate the network congestion of the network device, thereby achieving control over network congestion without discarding messages.
[0133] 2. Priority-based Flow Control (PFC)
[0134] For easier understanding, see Figure 2 , Figure 2 The following diagram illustrates a PFC scenario. An Ethernet link is established between devices A and B. Device A's transmit interface is divided into eight priority queues, and device B's receive interface includes eight corresponding receive buffers. When congestion occurs in a receive buffer on device B's receive interface, a backpressure signal "STOP" is sent to device A, causing device A to stop sending traffic from the corresponding priority queue.
[0135] 3. Internet protocol radio access network (IPRAN)
[0136] IP RAN is an IP-based wireless access network. It uses IP / Multi-Protocol Label Switching (MPLS) technology at the metropolitan aggregation / core layer. The access layer primarily utilizes Layer 2 Enhanced Ethernet technology, or a combination of Layer 2 Enhanced Ethernet and Layer 3 IP / MPLS. This comprehensive router / switch solution is optimized and customized for IP-based base station backhaul applications.
[0137] In the IP RAN scenario, a typical network is as follows: Figure 3 As shown, Figure 3This is a networking diagram of IP RAN. In the IP RAN network, it is necessary to build a connection from the base station to the core network gateway. From the base station side to the core network gateway, there are access rings, aggregation rings and core rings. Among them, aggregation can be further divided into access aggregation and backbone aggregation. Since there are multiple base stations connected to one access ring, and multiple access rings are connected to one aggregation ring at the same time, network congestion is more likely to occur. For example Figure 3 As shown, nodes E, F, C, and G form access ring 1, and nodes A, B, C, and G form access ring 2. The forwarding path of access ring 1 and the forwarding path of access ring 2 converge at node C. Therefore, the data flows carried by the two forwarding paths may cause network congestion at node C.
[0138] The aforementioned network congestion management methods, such as ECN and PFC, are generally suitable for short-distance data center networks. In wide area network (WAN) scenarios, because the network transmission path between the sender and receiver is long and often tunneled, the sender typically uses private network routing. When network congestion occurs, the network equipment responsible for data transfer may not be able to determine to which sender to send CNP packets, thereby reducing the packet transmission rate. Therefore, in WAN scenarios, ECN cannot alleviate network congestion between the sender and receiver. PFC technology, on the other hand, alleviates network congestion by stopping the sending queue. However, even if network congestion has been alleviated, due to the long path between the sender and receiver in WAN scenarios, the receiver or network equipment cannot promptly notify the sender of the alleviated network congestion. As a result, the sending queue may continue to stop sending, resulting in insufficient network throughput.
[0139] Based on the above reasons, an embodiment of the present application proposes a network congestion processing method suitable for wide area network scenarios, in which a first device acts as the head node of a first forwarding path, and the first device receives a first message sent by a second device, where the first message is used to indicate that network congestion has occurred on the first forwarding path, and the second device is any hop network device between the first device and the receiving end of the first forwarding path. Then, the first device determines the sending end of the data stream based on the first message, and the data stream is carried by the first forwarding path. Finally, the first device sends a first message to the sending end, where the first message carries identification information of the data stream, and the first message is used to instruct the sending end to perform speed reduction processing on the data stream.
[0140] In a wide area network scenario, after the first device receives the first message, it can determine that network congestion has occurred on the first forwarding path based on the first message. Then, the first device can determine the sender of the data stream based on the first message. The first message sent by the first device to the sender carries identification information of the data stream, ensuring that the sender is aware of the data stream that needs to be slowed down, and further ensuring that the network congestion occurring on the first forwarding path is alleviated after the sender performs speed reduction on the data stream. Through the above method, in a wide area network scenario, the head node of the forwarding path notifies the sender to perform flow control, thereby resolving network congestion occurring in a wide area network scenario, avoiding network under-throughput, improving communication quality, and improving user experience.
[0141] The following describes some communication systems involved in the embodiments of this application. Figure 4a , Figure 4a This is a schematic diagram of the structure of a communication system involved in an embodiment of the present application. In one example, the communication system includes a transmitter, a receiver, and multiple network devices, and a first forwarding path established between the transmitter and the receiver passes through multiple network devices. For example: node A ~ node B ~ node C ~ node D, where node A serves as the head node of the first forwarding path, node D serves as the tail node of the first forwarding path, and nodes B and C serve as intermediate nodes of the first forwarding path.
[0142] Optionally, the sending end and receiving end in the embodiments of the present application can be a host with communication needs. There are many possible implementation methods for 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 can be a server, such as a central server, an edge server, or a local server in a local data center. In some embodiments, the computing device can also be a terminal device such as a desktop computer, a laptop computer, or a smart phone. The server can be a server cluster consisting of multiple servers, or a cloud computing service center. The cloud computing service center is deployed with a large number of basic resources owned by the cloud service provider. For example, the cloud computing service center is deployed with a large number of basic resources such as computing resources, storage resources, and network resources. The cloud computing service center can use this large number of basic resources to implement the network congestion handling method provided in the embodiments of the present application. The sending end and receiving end in the embodiments of the present application can also be terminal devices. The terminal devices in the embodiments of the present application include but are not limited to smart phones, tablet computers, desktop computers, or Internet of Things (IoT) devices.
[0143] Optionally, the network device in the embodiment of the present application may be a physical device that supports the message forwarding function, or it may be a virtual device that supports 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 (VM) running a program for sending message functions, a virtual router, or a virtual switch. The virtualized device is deployed on a hardware device (e.g., a physical server). For example, the network 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 sending end and the receiving end in the embodiment of the present application communicate via a network device.
[0144] Optionally, Figure 4a In the example, a direct or indirect communication connection is established between the sending end and the network device (node A or node E), a direct or indirect communication connection is established between the network devices (nodes A to H), and a direct or indirect communication connection is established between the receiving end and the network device (node D or node H). Optionally, the communication system may also be provided with a network controller (or control manager).
[0145] Exemplarily, the sending end of the communication system is a remote direct memory access (RDMA) network card, and the receiving end of the communication system is another RDMA network card.
[0146] The communication system involved in the embodiments of the present application can also be applied to IP RAN scenarios, as described below:
[0147] When the communication system is applied to the uplink scenario of IP RAN, the sending end can also be an access network device, and the receiving end is a core network. In the embodiment of the present application, the data flow from the access network device to the core network is called an uplink data flow, and the access network device to the core network is called the uplink direction.
[0148] In one example, Figure 4b As shown, Figure 4bThis is another structural diagram of the communication system involved in the embodiment of the present application. The forwarding path established between the sending end (access network device A and access network device B) and the receiving end (core network) is path (path)-1. The data flows carried on the forwarding path path-1 include: flow-1 and flow-2. The forwarding path path-1 passes through node A, node B, node C, and node D. The forwarding path established between the sending end (access network device C) and the receiving end (core network) is path (path)-2. The data flows carried on the forwarding path path-2 include: flow-3. The forwarding path path-3 passes through node E, node F, node G, node C, and node D.
[0149] When the communication system is applied to the downlink scenario of IP RAN, the sending end may also be the core network, and the receiving end may be the access network device. Figure 4c As shown, Figure 4c This is another structural diagram of the communication system involved in the embodiment of the present application. The forwarding path established between the sending end (core network) and the receiving end (access network device A) includes: path (path)-1. The data flow (flow) carried on the forwarding path path-1 includes: flow-1 and flow-2, and the forwarding path path-1 passes through node D, node C, node B and node A. The egress port pointing to the access network device at node A is port (interface)-1. The egress port pointing to access network device A at node A is port (interface)-1. The forwarding path established between the sending end (core network) and the receiving end (access network device B) includes: path-2. The data flow carried on path-2 is flow-3, and the forwarding path path3 passes through node G, node F, node E and node A. The egress port pointing to access network device B at node A is interface-2. In other words, Figure 4c In the scenario shown, the port number of the tail node (node A) of the forwarding path corresponds one-to-one with the access network device, the forwarding path corresponds one-to-one with the port number of the tail node, and the forwarding path corresponds one-to-one with the access network device.
[0150] In another example, Figure 4d As shown, Figure 4dThis is another structural diagram of the communication system involved in the embodiment of the present application. The forwarding path established between the sending end (core network) and the receiving end (access network device A) includes: path (path)-1. The data flow (flow) carried on the forwarding path path-1 includes: flow-1 and flow-2, and the forwarding path path-1 passes through node D, node C, node B and node A. The egress port at node A pointing to access network device A is port (interface)-1. The forwarding path established between the sending end (core network) and the receiving end (access network device A) also includes: path-2. The data flow carried on path-2 is flow-3, and the forwarding path path3 passes through node G, node F, node E and node A. In other words, Figure 4d In the scenario shown, there is no one-to-one correspondence between forwarding paths and access network devices.
[0151] It should be noted that the above-mentioned core network can be a 5G core network (5G Core Network, 5GC), an evolved packet core network (Evolved Packet Core, EPC), or a future 6G core network, etc.
[0152] Combined with the above Figure 4a to Figure 4d The following is an illustrative communication system, and introduces the first device and the second device involved in the embodiments of the present application.
[0153] In a possible implementation, the second device is a network device where network congestion occurs, and the first device is a head node of the first forwarding path. Figure 5 As shown, Figure 5 This is another structural diagram of a communication system in an embodiment of the present application. When network congestion occurs at node C on the first forwarding path, node C acts as the second device. The head node of the first forwarding path is node A, and node A acts as the first device. In other words, the second device is the downstream network device of the first device on the first forwarding path.
[0154] In another possible implementation, the second device is the next hop network device of the first device in the first forwarding path. Figure 6 As shown, Figure 6 This is another structural diagram of the communication system in the embodiment of the present application. When the first forwarding path is congested at node C, node B acts as the second device, and the head node of the first forwarding path is node A, which acts as the first device. Figure 6 In the example, the second device is the next hop node of the first device (node A) on the first forwarding path, and the first device is the head node of the first forwarding path.
[0155] It should be noted that the first forwarding path in the embodiments of the present application includes but is not limited to: a tunnel, a path or a network slice.
[0156] Optionally, the first forwarding path may be configured with elastic bandwidth resources. For example, the bandwidth resources used by the first forwarding path may be adjusted from 100 Mbps to 500 Mbps.
[0157] Next, the network congestion processing method proposed in the embodiment of this application is introduced. Figure 7 , Figure 7 The following is a flow chart of a method for handling network congestion according to an embodiment of the present application. The method for handling network congestion according to an embodiment of the present application includes:
[0158] The first device can determine that network congestion occurs on the first forwarding path through the following two solutions:
[0159] Solution 1: The first device determines that network congestion occurs on a first forwarding path corresponding to the egress port based on network congestion occurring on its own egress port.
[0160] Step G1: The first device determines that network congestion occurs on a first forwarding path corresponding to an egress port of the first device based on network congestion occurring at the egress port.
[0161] In step G1, in one possible implementation, the first device detects network congestion at a local egress port. The first device may determine, based on the egress port experiencing network congestion, a first forwarding path corresponding to the egress port. For example, a data flow carried by the first forwarding path generates burst traffic, causing network congestion at the egress port corresponding to the first forwarding path.
[0162] In another possible implementation, the first device allocates a cache resource to the first forwarding path, the cache resource being used to cache the data stream carried by the first forwarding path. When the usage of the cache resource exceeds a preset value, the first device determines that the first forwarding path corresponding to the cache resource has experienced network congestion on the first device.
[0163] Optionally, in the embodiment of the present application, the bandwidth of the first forwarding path is allowed to be changed from a first bandwidth value to a second bandwidth value, and the second bandwidth value is greater than the first bandwidth value.
[0164] Step G4 is executed after step G1.
[0165] Solution 2: The first device determines that network congestion occurs on the first forwarding path based on a notification from a downstream node of the first device (eg, the second device).
[0166] Step G2: The second device determines that network congestion occurs on a first forwarding path corresponding to an egress port of the second device based on the network congestion occurring on the egress port.
[0167] In step G2, in a possible implementation, the second device detects that a local egress port has network congestion, and can determine a first forwarding path corresponding to the egress port based on the egress port where the network congestion occurs.
[0168] In another possible implementation, the second device allocates a cache resource to the first forwarding path, the cache resource being used to cache the data stream carried by the first forwarding path. When the usage of the cache resource exceeds a preset value, the second device determines that the first forwarding path corresponding to the cache resource has experienced network congestion on the second device.
[0169] In another possible implementation, the second device receives a notification from a downstream node and determines, based on the notification, that network congestion occurs on the first forwarding path. Figure 6 In the illustrated scenario, when the second device is node B, it receives a notification from node C indicating that network congestion has occurred on the egress port of node C corresponding to the first forwarding path. After receiving this notification, the second device determines that network congestion has occurred on the first forwarding path. This notification is similar to the first message in step G3.
[0170] In another possible implementation, when the communication system is applied to a downlink scenario of an IP RAN (eg Figure 4c or Figure 4d As shown), the second device (eg Figure 4c or Figure 4d Node A) in the access network receives a congestion notification from the access network device, and then the second device determines the corresponding forwarding path according to the congestion notification and determines that network congestion occurs on the forwarding path, specifically as follows:
[0171] The receiving end (access network device) detects the access network device to the second device (eg Figure 4cNetwork congestion occurs between node A in the access network, or the receiving end (access network device) detects that network congestion occurs between the access network device and the terminal device, the receiving end can send a priority-based flow control (Priority-based Flow Control, PFC) frame (abbreviated as PFC back pressure frame, or PFC frame, or PFC message) to the second device. The PFC frame is used to notify the second device to stop sending data from one or more queues. For example, the back pressure enable vector (Priority enable vector) included in the PFC frame indicates which queues need to stop sending data. Then, the second device determines the forwarding path corresponding to the PFC frame based on the port that receives the PFC frame, and then determines which forwarding path carries the data flow that needs to be decelerated. The second device can use a variety of methods to determine the forwarding path that needs to be decelerated, as follows:
[0172] Method 1: The second device maintains a fourth set, which includes one or more mappings, including identification information of a forwarding path and an ingress port index (or port number) corresponding to the forwarding path. When the second device receives a PFC frame from a port, it determines the corresponding forwarding path from the fourth set based on the port number. This forwarding path is used as the first forwarding path to be downgraded. For example, the fourth set is shown in Table 1.
[0173] Table 1
[0174] Forwarding path (identification information) Inbound port index (PortIndex) path-1 interface-1 path-2 interface-2
[0175] For example, the first method is applicable to Figure 4c The scenario shown. When the second device (e.g. Figure 4c Node A receives a PFC frame from interface-1. The second device determines from Table 1 based on interface-1 that the first forwarding path to be slowed down is path-1. When the second device receives a PFC frame from interface-2, the second device determines from Table 1 based on interface-2 that the first forwarding path to be slowed down is path-2.
[0176] Method 2: The second device maintains a fifth set, which includes one or more mapping relationships, including identification information of a data flow, a queue carrying the data flow, and a forwarding path carrying the data flow. Because the PFC frame indicates which queues need to stop sending, after receiving the PFC frame, the second device can determine the queue that needs to be slowed down based on the PFC frame. Based on the queue, the second device determines the data flow to which the queue belongs from the fifth set, and then determines the forwarding path to which the data flow belongs. This forwarding path serves as the first forwarding path to be slowed down. For example, the fifth set is shown in Table 2.
[0177] Table 2
[0178]
[0179] For example, the second method is applicable to Figure 4d The scenario shown. When the second device (e.g. Figure 4d Node A receives a PFC frame from interface-1. The second device determines that the queue to be slowed down is PQ[1] based on the queue PQ[1] indicated by the PFC frame. Then, based on PQ[1], the second device determines from Table 2 that the data flow to be slowed down is flow-1, and further determines that the forwarding path carrying this data flow is path-1. The second device determines that the first forwarding path to be slowed down is path-1.
[0180] In another example, if the queue requiring speed reduction indicated by the PFC frame corresponds to multiple forwarding paths, the second device determines the multiple forwarding paths as the first forwarding path to be speeded down.
[0181] Step G3: The second device sends a first message to the first device, where the first message is used to indicate that network congestion occurs on the first forwarding path.
[0182] In step G3, after the second device determines that network congestion occurs on the first forwarding path, the second device may send a first message to the first device, where the first message is used to indicate that network congestion occurs on the first forwarding path. The first message may include identification information of the first forwarding path. The identification information of the first forwarding path includes, but is not limited to: a path identifier (Path-ID), a tunnel identifier (Tunnel-id), a network slice path identifier (Slice-id), or a binding segment identifier (Binding Segment Identifier, BSID), etc.
[0183] In one possible implementation, a hop-by-hop back pressure is used for the first message, and the second device is the next-hop node of the first device on the first forwarding path. The network device (the network device is called the third device) where network congestion occurs on the first forwarding path determines the second forwarding path, and the second forwarding path is the reverse path of the first forwarding path. Then, the first message is sent to the first device along the second forwarding path. After the second device on the second forwarding path receives the first message, it forwards the first message to the first device. Optionally, the node on the second forwarding path performs congestion relief processing on the data flow carried by the first forwarding path according to the first message, such as caching the packets of the data flow. Through hop-by-hop back pressure, the nodes on the first forwarding path dilute the large traffic carried by the first forwarding path, so as to alleviate the network congestion of the first forwarding path.
[0184] In one example, the second forwarding path may be a strict path, that is, the second forwarding path strictly specifies each hop node from the third device to the first device.
[0185] In another example, the second forwarding path may be a non-strict path, i.e., the second forwarding path specifies that it must pass through the third device, the first device, and some nodes between the first and third devices, such as the second device. Alternatively, the second forwarding path only specifies that it must pass through the first and third devices.
[0186] In another possible implementation, a single-hop backpressure method is used to send the first message. The second device is the network device experiencing network congestion on the first forwarding path. The second device directly sends the first message to the first device, allowing the first device to receive the first message. This single-hop backpressure method allows the first device to quickly learn of network congestion on the first forwarding path. The first device then notifies the sender to reduce the speed of the data flow carried by the first forwarding path, thereby quickly alleviating network congestion.
[0187] Optionally, the first message may further include third speed reduction information, where the third speed reduction information is used to indicate a desired speed reduction magnitude for the first forwarding path. When the first message includes the third speed reduction information, upon receiving the first message, nodes on the second forwarding path may perform speed reduction processing on the first forwarding path, with the speed reduction magnitude determined based on the third speed reduction information.
[0188] Optionally, the first message further includes fourth speed reduction information, where the fourth speed reduction information is used to indicate an expected speed reduction time for the first forwarding path. When the first message includes the fourth speed reduction information, after receiving the first message, the node on the second forwarding path may perform speed reduction processing on the first forwarding path, with the speed reduction duration determined based on the fourth speed reduction information.
[0189] Optionally, the node on the second forwarding path may update the third speed reduction information and / or the fourth speed reduction information included in the first message.
[0190] Step G4 is executed after step G3.
[0191] Step G4: The first device determines a sending end corresponding to the first forwarding path.
[0192] In step G4, after the first device determines that network congestion occurs on the first forwarding path, the first device determines a sending end corresponding to the first forwarding path. The sending end corresponding to the first forwarding path refers to a sending end of the data flow carried by the first forwarding path.
[0193] Specifically, after receiving the first message, the first device determines the data flow carried by the first forwarding path according to the first message and then determines the sender of the data flow.
[0194] When the first device can determine the sending end of the data flow carried by the first forwarding path in multiple ways, each of which is explained below.
[0195] In a possible implementation, the first device maintains a first set, which includes: identification information of one or more forwarding paths and associations of data flows carried by the forwarding paths.
[0196] Table 3
[0197]
[0198] After determining the identification information of the first forwarding path, the first device can determine the data flows carried by the first forwarding path from Table 3, and further determine the sending ends corresponding to these data flows.
[0199] In one example, the first set may be a routing table.
[0200] In another example, the first set may be a Remote Direct Memory Access (RoCE) flow table of Converged Ethernet.
[0201] In another possible implementation, after the first device determines the data flow carried by the first forwarding path based on the first forwarding path, the first device further determines the sender of the data flow from a second set. Specifically, the first device maintains the second set, which includes one or more associations: identification information of the data flow, the queue carrying the data flow, and the ingress port index corresponding to the queue. For example, the second set is shown in Table 4.
[0202] Table 4
[0203]
[0204]
[0205] Take the uplink scenario of IP RAN as an example, that is, the sending end is the access network device and the receiving end is the core network. Figure 4b Node A in the second device (eg Figure 4bThe first device receives the first message from the node C in the network, and determines that network congestion occurs on the first forwarding path (path-1). Then, the corresponding data flows (flow-1 and flow-2) are determined from the second set (Table 4) based on the identification information of the first forwarding path (path-1). Then, the first ingress port index (Interface-1) corresponding to the data flows (flow-1 and flow-2) can be determined from Table 4. Then, the corresponding sending end is found based on the first ingress port index (Interface-1). The sending end may be an access network device. In order to further instruct the sending end (access network device) on which queues (the queue may also be called priority queues) to perform speed reduction processing, the first device also needs to determine the queue corresponding to the data flow in the sending end from Table 4. For example, if the data flow is Flow-2, then according to the second set, it is determined that the first ingress port index is Interface-1, the sending end of the data flow is RAN-1, and the queue corresponding to the data flow is Queue 2 of RAN-1. RAN-1 needs to perform speed reduction processing on the data flow of Queue-2.
[0206] Since a forwarding path may carry one or more data flows, the following describes a specific method for determining a data flow from the first forwarding path:
[0207] In a possible implementation, the first forwarding path carries a data flow, and the first device selects this data flow as the data flow to be slowed down.
[0208] In another possible implementation, the first forwarding path carries multiple data streams, and the first device can select one or more data streams as the data stream to be slowed down based on the resource occupancy information of the multiple data streams. The resource occupancy information includes, but is not limited to: information on the bandwidth resources occupied by the data stream, or information on the cache resources occupied by the data stream in the node. For example, the first forwarding path carries data stream-1, data stream-2, and data stream-3, where the bandwidth occupied by data stream-1 is 1000M, the bandwidth occupied by data stream-2 is 100M, and the bandwidth occupied by data stream-3 is 200M. The first device then selects data stream-1 as the data stream to be slowed down.
[0209] Optionally, before step G4, after the first device determines that network congestion occurs on the first forwarding path, the first device may also load-share the data stream carried by the first forwarding path to other forwarding paths to alleviate the network congestion of the first forwarding path. For example, the first device load-shares the data stream carried by the first forwarding path to multiple forwarding paths in an unequal-cost multiple path (UCMP) manner. When the first device cannot determine multiple forwarding paths for load sharing, or the remaining bandwidth resources (also called available bandwidth resources) of the multiple forwarding paths for load sharing cannot carry the data stream of the first forwarding path, step G4 is triggered.
[0210] Step G5: The first device sends a first message to the sending end, where the first message is used to instruct the sending end to perform speed reduction processing on the data flow carried by the first forwarding path.
[0211] In step G5, after determining the sending end corresponding to the data flow carried by the first forwarding path, the first device sends a first message to the sending end, where the first message is used to instruct the sending end to perform speed reduction processing on the data flow.
[0212] Specifically, after determining the data flow that needs to be decelerated, the first device determines the sender of the data flow and then sends a first message to the sender, the first message being used to instruct the sender to decelerate the data flow carried by the first forwarding path.
[0213] Optionally, the first message includes identification information of the data flow, and the identification information of the data flow includes but is not limited to: an Internet Protocol (IP) quintuple, or a destination queue pair (Dest QP), wherein the Internet Protocol quintuple includes: source Internet Protocol address, destination Internet Protocol address, source port number, destination port number and transport layer protocol type.
[0214] Optionally, the first message also includes: first speed reduction information, wherein the first speed reduction information is used to indicate the expected speed reduction range of the data stream. For example, the first speed reduction information is used to indicate the expected speed reduction range of the data stream. The first device can determine the first speed reduction information based on the third speed reduction information carried by the first message. The first device can also comprehensively determine the first speed reduction information based on the congestion level of the first forwarding path and the bandwidth resource usage of each node on the first forwarding path. This embodiment of the present application is not limited to this.
[0215] Optionally, the first message also includes: second speed reduction information, where the second speed reduction information is used to indicate the expected speed reduction time of the data flow. The first device may determine the second speed reduction information based on the fourth speed reduction information carried by the first message. The first device may also comprehensively determine the second speed reduction information based on the congestion level of the first forwarding path and the bandwidth resource usage of each node on the first forwarding path. This embodiment of the present application is not limited to this.
[0216] Optionally, the first message further includes first information, the first information being used to indicate that the first message is a speed reduction notification message, the speed reduction notification message being used to instruct the sender to perform speed reduction processing on the data stream. For example, when the first message uses a User Datagram Protocol (UDP) message, the first information may be a UDP port number. For another example, when the first message uses a Remote Direct Memory Access (RoCE) message of Converged Ethernet, the first information may be an operation code (Opcode).
[0217] Optionally, the first message further includes identification information of a queue corresponding to the data flow, and the identification information is used to instruct the sending end to perform speed reduction processing on the queue.
[0218] Optionally, the first message further includes third speed reduction information, where the third speed reduction information is a receive window (RWND) value determined by the first device, and the third speed reduction information is used to indicate a sending window size for the sender to send the data stream to be speed reduced.
[0219] The following describes a possible implementation method for the first device to determine the third speed reduction information. Figure 9 , Figure 9 This is a flow chart of determining the third speed reduction information in an embodiment of the present application. The first device determines the third speed reduction information in the following manner:
[0220] K1. Generate a first window value, where the first window value is a congestion window value of the sending end calculated by the first device.
[0221] In step K1, when a Transmission Control Protocol (TCP) session is established between a sender and a receiver, and a first forwarding path between the sender and the receiver carries the TCP session, the first device may calculate a congestion window (CWND) value of the sender. For example, if the first device detects network congestion on the first forwarding path and is unable to alleviate the network congestion on the first forwarding path through load balancing, the first device may use a TCP congestion control algorithm to calculate an expected congestion window value for the data flow carried by the first forwarding path, and use the expected congestion window value as the first window value.
[0222] K2. Obtain a second window value generated by the receiving end, where the second window value is a receiving window value generated by the receiving end.
[0223] In step K2, the receiving end feeds back a receive window (RWND) value generated by the receiving end to the sending end through an acknowledgment (ACK) message, and the first device can obtain the receive window value from the ACK message as the second window value.
[0224] After the first device receives the ACK message, it associates and stores the RWND value carried in the ACK message with the data flow corresponding to the ACK message, generating a sixth set. The sixth set includes one or more mappings, each of which includes: identification information of the data flow, performance indicators of the data flow, and the RWND value of the data flow. The performance indicators of the data flow include, but are not limited to, the packet loss rate of the data flow, the latency of the data flow, and / or status information of the data flow. For example, the sixth set is shown in Table 5.
[0225] Table 5
[0226] Data flow (identification information) Performance indicators of data flows RWND flow-1 xx / xx / xx 100 flow-2 yy / yy / yy 200 flow-3 zz / zz / zz 150
[0227] K3. Determine third speed reduction information according to the first window value and the second window value, where the value of the third speed reduction information is the minimum value of the first window value and the second window value.
[0228] In step K3, after obtaining the first window value and the second window value, the first device takes the minimum of the two window values as the value of the third speed reduction information. For example, after receiving the first message, the first device obtains the corresponding RWND value from the sixth set as the second window value based on the identification information of the data stream carried in the first message. The first device generates the first window value corresponding to the data stream. Finally, the third speed reduction information is determined based on the first window value and the second window value.
[0229] Furthermore, the embodiments of the present application provide multiple possible implementations of the first message, which are introduced below.
[0230] In one possible implementation, the first message is a TCP message, and the payload field of the TCP message (first message) is used to carry the identification information, the first information, the first speed reduction information, the second speed reduction information, and / or the third speed reduction information of the data flow. For example, the payload field of the TCP message (first message) carries an IP quintuple for identifying the data flow (the data flow to be reduced in speed).
[0231] In another possible implementation, the first message is a UDP message, and the payload field of the UDP message (first message) is used to carry the identification information of the above data flow, the first speed reduction information, the second speed reduction information and / or the third speed reduction information. Figure 10 , Figure 10 This is a schematic diagram of the structure of a first message. The first message includes a source port, a destination port, a length, a checksum, and a payload field. The destination port carries the first information, and the payload field includes identification information of the data flow. The payload field may also include first speed reduction information and / or second speed reduction information.
[0232] In another possible implementation, the first message is an Internet Control Message Protocol (ICMP) message. The payload field of the ICMP message (first message) is used to carry identification information of the data flow, the first speed reduction information, the second speed reduction information, and / or the third speed reduction information.
[0233] In another possible implementation, the first message is a RoCE message. For example, the first message is a CNP message in RoCEv2 format. In one example, the reserved field of the first message carries identification information of the data flow, the first information, the first speed reduction information, and / or the second speed reduction information. Alternatively, the message sequence number (PSN) field of the first message carries identification information of the data flow, the first information, the first speed reduction information, and / or the second speed reduction information. In the first message, the identification information of the data flow can adopt a destination queue pair.
[0234] For easier understanding, see Figure 11 , Figure 11 This is another structural diagram of the first message. The first message includes: a media access control header (MAC header), an IPv4 / IPv6 header (IPv4 / IPv6 header), a user datagram protocol header (UDP header), a base transport header (BTH), a redundancy check (ICRC) field, and a frame checksum (FCS) field. The base transport header of the first message carries the identification information and first information of the data stream, and the first information can be a newly added operation code Opcode. The reserved field of the first message carries: first speed reduction information and second speed reduction information.
[0235] In another possible implementation, when the first forwarding path carries a TCP session between the sender and the receiver, the first message may be a TCP message. The options field of the TCP message carries the identification information, the first information, the first speed reduction information, the second speed reduction information and / or the third speed reduction information of the above-mentioned data flow. For easier understanding, please refer to Figure 12 , Figure 12 This is a structural diagram of a first message. The first message includes: a source port, a destination port, a sequence number, an acknowledgment number, and an options field, wherein the destination port field carries the first information, and the options field carries the first speed reduction information, the second speed reduction information, and / or the third speed reduction information. Specifically, a type-length-value (TLV) field is added to the optional field, and the newly added TLV field is used to carry the first speed reduction information, the second speed reduction information, and / or the third speed reduction information.
[0236] In another possible implementation, when the first forwarding path carries a TCP session between the sending end and the receiving end, the first message may be an acknowledgment (ACK) message. The RWND field of the ACK message is used to carry the third speed reduction information. Specifically, after the first device receives the ACK message fed back by the receiving end, it modifies the RWND field of the ACK message according to the third speed reduction information determined by the first device. The value of the modified RWND field is the third speed reduction information, and the modified ACK message serves as the first message.
[0237] In another possible implementation, when the sending end is an access network device and the receiving end is a core network, the first message may be a PFC back pressure frame. The back pressure enable vector (Priority enable vector) field in the first message (PFC back pressure frame) indicates which priority queues (queues) corresponding to which data flows in the first forwarding path need to perform speed reduction processing. For example, Figure 16 As shown, Figure 16 This is another structural diagram of the first message. Figure 16In the Priority enable vector, E(n) indicates the priority queue n, where n is an integer greater than or equal to 0. The "Time(0)~Time(n)" (backpressure time) field indicates the backpressure time of the queue, which indicates the time when the queue needs to perform speed reduction processing. For example, when E(n) = 1, it means that queue n needs backpressure (i.e., speed reduction processing is required), and the backpressure time is Time(n); when E(n) = 0, it means that queue n does not need backpressure (i.e., speed reduction processing is not required).
[0238] In another possible implementation, when the first forwarding path carries a TCP session between a sender and a receiver, the first message may be a TCP message. The first message carries fourth speed reduction information, which is used to instruct the sender to perform speed reduction processing on the data flow carried by the first forwarding path (e.g., reduce the transmission rate of the data flow). Specifically, the fourth speed reduction information is carried in a congestion response (Echo of congestion encountered, ECE) field. For example, the value of the ECE field in the first message is 1.
[0239] In one example, after the first device obtains the ACK message sent by the receiving end, the value of the congestion response (Echo of congestion encountered, ECE) field in the ACK message is 0, and the ACK message is the ACK message corresponding to the data flow carried by the first forwarding path. Because the first device determines that network congestion has occurred on the first forwarding path, the first device modifies the ECE field of the ACK message so that the ACK message can instruct the sending end to perform speed reduction processing on the data flow of the first forwarding path. The value of the ECE field of the modified ACK message is 1, and the modified ACK message serves as the first message. The ECE field of the first message carries the fourth speed reduction information. Then, the first device sends the first message to the sending end. For ease of understanding, please refer to Figure 17 , Figure 17This is another structural diagram of the first message in the embodiment of the present application. The first message includes: a source port field, a destination port field, a sequence number field, an acknowledgment number field, a data offset field, a reserved field, a control bit field, a window size field, a checksum field, and an urgent pointer field. The control bit field specifically includes: an NS field, a congestion window reduced (CWR) field, an ECE field, an URG field, an ACK field, a PSH field, a RST field, a synchronization sequence number (SYN) field, and a FIN field. Among them, the ECE field is used to carry the fourth speed reduction information. When the value of the ECE field is equal to 1, it instructs the sender to perform speed reduction processing on the data stream corresponding to the ACK message.
[0240] Step G6: The sending end reduces the sending rate of the data flow carried by the first forwarding path according to the first message.
[0241] In step G6, after receiving the first message, the transmitting end determines the data stream that requires downscaling. The transmitting end may then determine the downscaling magnitude of the data stream based on the first downscaling information carried in the first message; or, the transmitting end may determine the downscaling duration of the data stream based on the second downscaling information carried in the first message; or, the transmitting end may determine the transmission rate of the data stream based on the third downscaling information carried in the first message.
[0242] In an embodiment of the present application, after the head node of a first forwarding path determines that network congestion has occurred on the first forwarding path, it can notify the corresponding sender of the first forwarding path via a first message to reduce the speed of the data stream carried by the first forwarding path, thereby alleviating the network congestion on the first forwarding path. Because the head node of the first forwarding path sends the first message to the corresponding sender of the first forwarding path to alleviate network congestion, there is no need for the network device responsible for data transfer to determine the sender of the first forwarding path. Therefore, network congestion can be resolved in wide area network scenarios, thereby improving communication quality.
[0243] In combination with the above embodiment, the following describes how the sending end cancels the speed reduction process on the data flow of the first forwarding path after the network congestion of the first forwarding path is relieved.
[0244] In one possible implementation, the sending end sets a timer after performing a speed reduction process on the data flow of the first forwarding path. When the timer expires, the sending end automatically releases the speed reduction process on the data flow of the first forwarding path. For example, the sending end gradually increases the sending rate of the data flow in a slow-increase manner.
[0245] In another possible implementation, the sending end releases the speed reduction process of the data flow according to the second message sent by the first device. Figure 8 , Figure 8 The following is a flow chart of a method for handling network congestion according to an embodiment of the present application. The method for handling network congestion according to an embodiment of the present application includes:
[0246] Option 1:
[0247] L1. According to whether an egress port of a first device recovers from network congestion, determine whether a first forwarding path corresponding to the egress port recovers from network congestion.
[0248] Step L1 is similar to the aforementioned step S1. The first device may detect whether its own egress port has recovered from network congestion. If recovered, it determines that the first forwarding path corresponding to the egress port has recovered from network congestion.
[0249] Option 2:
[0250] L2. According to whether the egress port of the second device recovers from network congestion, determine whether the first forwarding path corresponding to the egress port recovers from network congestion.
[0251] L3. Send a second message, where the second message is used to indicate that the first forwarding path has recovered from network congestion.
[0252] Steps L2-L3 are similar to the aforementioned steps S2-S3. The first device may also determine that the first forwarding path has recovered from network congestion based on the notification from the downstream device (the second device). The second message is similar to the first message and may also carry identification information of the first forwarding path.
[0253] L4. Determine a sending end corresponding to the first forwarding path.
[0254] Step L4 is similar to the aforementioned step S4. The first device may determine the sending end corresponding to the first forwarding path according to the second message.
[0255] L5. Send a second message to the sending end, where the second message is used to instruct the sending end to perform speed-up processing on the data flow carried by the first forwarding path.
[0256] Step L5 is similar to step S5. After the first device determines the sending end of the first forwarding path, it sends a second message to the sending end. The second message is used to instruct the sending end to remove the speed reduction processing (or perform speed increase processing) on the data carried by the first forwarding path. The specific implementation method of the second message is similar to that of the first message. For example, the second message can carry identification information of the data flow, which is not repeated here.
[0257] L6. According to the second message, increase the sending rate of the data flow carried by the first forwarding path.
[0258] In step L6, after receiving the second message, the sending end determines that the data flow needs to be released from the speed reduction process, and then increases the sending rate of the data flow.
[0259] In this embodiment of the present application, after the head node of the first forwarding path determines that the first forwarding path has recovered from network congestion, it can notify the sender corresponding to the first forwarding path through a second message to remove the speed reduction processing for the data flow carried by the first forwarding path, thereby improving network throughput. In addition, this avoids premature removal of the speed reduction processing, which could lead to further aggravation of network congestion, thereby improving communication quality.
[0260] In combination with the foregoing embodiments, some application scenarios involved in the embodiments of the present application are introduced below.
[0261] See also Figure 13 , Figure 13 This is a flow diagram of an application scenario of an embodiment of the present application. The application scenario involved in an embodiment of the present application includes: a first forwarding path between a transmitter and a receiver, the first forwarding path passing through nodes A, B, C, and D. Node A serves as the head node of the first forwarding path and acts as the first device. Node C experiences network congestion and acts as the second device.
[0262] S1. Node C generates a first message, where the first message is used to indicate that congestion occurs on a first forwarding path.
[0263] S2. Node C sends a first message to node A.
[0264] In one implementation, node C may directly send the first message to node A, that is, one-hop back pressure.
[0265] In another implementation, node C may also send a first message to node B. After node B performs speed reduction processing on the data flow of the first forwarding path (e.g., caches the data flow) based on the first message, node B generates a new first message based on the network situation. Node B then sends the new first message to node A. Node B may update the first speed reduction information and / or second speed reduction information carried in the new first message.
[0266] Exemplarily, the first message may carry identification information of the first forwarding path, first speed reduction information, and second speed reduction information.
[0267] S3. Node A determines the sending end of the data stream according to the first message.
[0268] S4. Node A sends a first message to the sending end. The first message carries identification information of the data flow and is used to instruct the sending end to perform speed reduction processing on the data flow.
[0269] Exemplarily, the first message may carry identification information of the data flow, first speed reduction information, and second speed reduction information.
[0270] In another example, the first message may be a TCP message, a UDP message, an ICMP message, or a RoCE message.
[0271] After step S4, the sending end performs speed reduction processing on the data flow according to the first message, thereby alleviating network congestion occurring on the first forwarding path.
[0272] See also Figure 14 , Figure 14 This is a flow chart of an application scenario of an embodiment of the present application. An application scenario involved in an embodiment of the present application includes: a first forwarding path between a transmitter and a receiver carries a TCP session, where the TCP session is a TCP session established between the transmitter and the receiver. The first forwarding path passes through node A, node B, node C, and node D. Node A serves as the head node of the first forwarding path, and node A serves as the first device. Node C experiences network congestion, and node C serves as the second device.
[0273] D1. The sending end and the receiving end establish a TCP session, and the first forwarding path carries the TCP session.
[0274] D2. The sending end sends a data message to the receiving end through the first forwarding path.
[0275] D3. The receiving end sends an ACK message, where the ACK message carries a second window value. The second window value indicates a receiving window value generated by the receiving end.
[0276] D4. In response to network congestion occurring on the first forwarding path, node C generates a first message, where the first message is used to indicate that congestion occurs on the first forwarding path.
[0277] D5. Node C sends a first message to node A.
[0278] D6. Node A determines the sending end of the data stream according to the first message.
[0279] D7. Node A generates a first window value, where the first window value is the congestion window value of the sending end calculated by the first device.
[0280] D8. Node A determines third speed reduction information according to the first window value and the second window value.
[0281] D9. Node A sends a first message to the transmitting end, where the first message carries the third speed reduction information.
[0282] Exemplarily, the first message may be a modified ACK message. After determining the third speed reduction information, node A modifies the RWND field of the ACK message from the receiving end to obtain the first message. The RWND field of the first message carries the third speed reduction information.
[0283] After step D9, the sending end performs a speed reduction process on the data flow according to the first message, thereby alleviating the network congestion occurring on the first forwarding path. Through the above method, network congestion control is achieved without the sending end's perception.
[0284] See also Figure 15 , Figure 15 A flow chart of an application scenario of an embodiment of the present application. An application scenario involved in an embodiment of the present application includes: a first forwarding path between a sending end and a receiving end carries a first TCP session and a second TCP session, the first TCP session is a TCP session created between the sending end and node A, the second TCP session is a TCP session created between node A and the receiving end, and node A acts as a TCP agent node. The first forwarding path passes through node A, node B, node C, and node D. Node A acts as the head node of the first forwarding path, and node A acts as the first device. Node C experiences network congestion, and node C acts as the second device.
[0285] F1. A first TCP session is established between the sender and node A.
[0286] F2: A second TCP session is established between the receiving end and node A. The first forwarding path carries both the first and second TCP sessions. Node A, acting as a TCP proxy, establishes both the first and second TCP sessions with the sending and receiving ends, respectively. The first forwarding path then carries both the first and second TCP sessions.
[0287] F3. The sending end sends the data message to the receiving end through the first forwarding path.
[0288] F4. The receiving end sends an ACK message to node A. The ACK message carries a second window value. The second window value indicates a receiving window value generated by the receiving end.
[0289] In step F4, after receiving the ACK message, node A associates the second window value (ie, RWND value) carried in the ACK message with the data flow corresponding to the ACK message and saves them to obtain a sixth set.
[0290] F5. Node C generates a first message, where the first message is used to indicate that congestion occurs on the first forwarding path.
[0291] F6. Node C sends a first message to node A.
[0292] F7. Node A determines the sending end of the data stream according to the first message.
[0293] F8. Node A generates a first window value, where the first window value is the congestion window value of the sending end calculated by the first device.
[0294] F9. Node A determines third speed reduction information according to the first window value and the second window value.
[0295] In step F9, node A determines the second window value corresponding to the data flow from the sixth set generated in step F4 based on the identification information of the data flow. Node A then determines third speed reduction information based on the first window value and the second window value. The third speed reduction information is the minimum of the first window value and the second window value.
[0296] F10. Node A sends a first message to the transmitting end, where the first message carries third speed reduction information.
[0297] In step F10, node A modifies the ACK message sent by the receiving end (the ACK message corresponding to the data flow), modifies the RWND field of the ACK message to the third speed reduction information, and then uses the modified ACK message as the first message.
[0298] See also Figure 18 , Figure 18 This is a flow chart of an application scenario of an embodiment of the present application. An application scenario proposed in an embodiment of the present application includes: a first forwarding path between a transmitter and a receiver carries a TCP session, where the TCP session is a TCP session established between the transmitter and the receiver. The first forwarding path passes through nodes A, B, C, and D. Node A serves as the head node of the first forwarding path, and node A serves as the first device. Node C experiences network congestion, and node C serves as the second device.
[0299] P1: A TCP session is established between the sender and the receiver, and the first forwarding path carries the TCP session.
[0300] After a TCP session is established between the sender and the receiver, the ECN negotiation process is carried out between the sender and the receiver. The details are as follows:
[0301] P1-1. The sender sends a synchronization sequence number (SYN) packet to the receiver. The CWR field value of the SYN packet is 1 (CWR=1), and the ECE field value of the SYN packet is 1 (ECE=1). The sender notifies the receiver through the SYN packet that the sender supports ECN.
[0302] P1-2. After the receiver receives the SYN packet, if the receiver supports ECN, it will feedback the explicit congestion reminder response (ECN Echo) code point (CWR=0, ECE=1) to the sender, indicating that the receiver supports ECN; if the receiver does not support ECN, the receiver will feedback the non-ECN setting code point (CWR=0, ECE=0) to the sender, indicating that the receiver does not support ECN.
[0303] P2. The sending end sends a data message to the receiving end through the first forwarding path.
[0304] P3. The receiving end sends an ACK message, and the ECE of the ACK message is 0.
[0305] P4. Node C generates a first message, where the first message is used to indicate that congestion occurs on the first forwarding path.
[0306] P5. Node C sends a first message to node A.
[0307] P6. Node A determines the sending end of the data stream according to the first message.
[0308] In step P6, node A determines, based on the first message, that network congestion occurs on the first forwarding path. Node A then determines a data flow whose sending rate needs to be adjusted and determines the sending end of the data flow.
[0309] P7. After node A intercepts the ACK message, node A modifies ECE of the ACK message to 1, and obtains the first message.
[0310] In step P7, after node A determines the data flow that needs to be slowed down, it finds the ACK message corresponding to the data flow among the ACK messages sent back from the receiving end to the sending end. To instruct the sending end to slow down the data flow, node A sets the value of the ECE field in the ACK message to 1. Before the modification, the value of the ECE field in the ACK message was 0.
[0311] P8. Node A sends a first message to the transmitting end, where the first message carries the fourth speed reduction information (ECE=1).
[0312] In step P8, node A uses the modified ACK message as the first message and sends the first message to the transmitting end, and the fourth speed reduction information is carried in the ECE field (ECE=1) of the message.
[0313] P9. The sending end reduces the sending rate of the data stream according to the first message.
[0314] In step P9, the sending end adjusts the sending window of the data stream according to the first message to reduce the sending rate of the data stream.
[0315] P10. The sending end sends a data message of the data flow in the first forwarding path to the receiving end, where CWR=1.
[0316] In step P10, after the sender completes modulation of the sending rate of the data stream, the sender modifies the CWR field of the data message in the data stream, and the value of the CWR field of the modified data message is 1. The modified data message indicates to the receiver that the sender has completed the sending window adjustment for the data stream.
[0317] P11. After receiving the data message in step P10, node A cancels the ECE modification of the ACK message according to the CWR of the data message = 1. In other words, node A stops sending the first message to the sender, and the sender no longer reduces the sending rate of the data flow.
[0318] The following introduces a communication device in an embodiment of the present application. The communication device introduced below has any function of the first device, the second device or the transmitting end in the above method embodiment.
[0319] Figure 19 A schematic diagram of the structure of a communication device 1900 provided in an embodiment of the present application is shown in FIG. Figure 19 As shown, the communication device 1900 includes: a transceiver module 1901, configured to execute step G3 or step G5; a processing module 1902, configured to execute step G1 or step G4. The processing module 1902 is also configured to execute step G2. The processing module 1902 is configured to execute step G6.
[0320] In one example, the communication apparatus 1900 is applied to a first device, where the first device is a head node of a first forwarding path. The method includes:
[0321] Processing module 1902, configured to determine that network congestion occurs on the first forwarding path;
[0322] The transceiver module 1901 is configured to send a first message to a transmitting end, where the first message is used to instruct the transmitting end to perform speed reduction processing on a data flow, and the first forwarding path carries the data flow.
[0323] In a possible implementation, the processing module 1902 is further configured to determine, based on network congestion occurring at an egress port of the first device, that network congestion occurs on the first forwarding path corresponding to the egress port.
[0324] In one possible implementation, the transceiver module 1901 is further configured to receive a first message sent by a second device, where the first message is used to indicate that network congestion occurs on the first forwarding path, and the second device is a downstream network device of the first device on the first forwarding path;
[0325] The processing module 1902 is further configured to determine, based on the first message, that network congestion occurs on the first forwarding path.
[0326] In a possible implementation, the second device is a next-hop network device of the first device in the first forwarding path.
[0327] In a possible implementation, the second device is a network device where the network congestion occurs.
[0328] In a possible implementation, the processing module 1902 is further configured to determine the data flow carried by the first forwarding path;
[0329] The processing module 1902 is further configured to determine the sending end corresponding to the data stream.
[0330] In a possible implementation, the processing module 1902 is further configured to determine identification information of the first forwarding path according to the first message;
[0331] The processing module 1902 is further configured to determine, based on the identification information of the first forwarding path, identification information of the data flow from a first set, where the first set includes associations between identification information of one or more forwarding paths and data flows carried by the forwarding paths;
[0332] The processing module 1902 is further configured to determine the sending end that sends the data stream according to the identification information of the data stream.
[0333] In a possible implementation, the first message further includes: identification information of the data flow.
[0334] In one possible implementation, the identification information of the data flow includes: an Internet Protocol quintuple, or a destination queue pair, wherein the Internet Protocol quintuple includes: a source Internet Protocol address, a destination Internet Protocol address, a source port number, a destination port number, and a transport layer protocol type.
[0335] In a possible implementation, the first message further includes: first speed reduction information, where the first speed reduction information is used to indicate an expected speed reduction range of the data flow.
[0336] In a possible implementation, the first message further includes second speed reduction information, where the second speed reduction information is used to indicate an expected speed reduction time of the data flow.
[0337] In a possible implementation, the first message further includes: first information, where the first information is used to indicate that the first message is a speed reduction notification message, and the speed reduction notification message is used to instruct the sending end to perform speed reduction processing on the data stream.
[0338] In one possible implementation, the processing module 1902 is further configured to determine, from a second set based on the identification information of the data flow, a first ingress port index corresponding to the data flow, where the second set includes one or more associations, each of which includes: identification information of the data flow, a queue carrying the data flow, and an ingress port index corresponding to the queue;
[0339] The processing module 1902 is further configured to determine the sending end according to the first ingress port index.
[0340] In a possible implementation, the first message further includes: identification information of the queue corresponding to the data flow, and the first message is further used to instruct the sending end to perform speed reduction processing on the queue corresponding to the data flow.
[0341] In a possible implementation, the first message is a Transmission Control Protocol (TCP) message, a User Datagram Protocol (UDP) message, or an Internet Control Message Protocol (ICMP) message.
[0342] In a possible implementation, the first set is a Remote Direct Memory Access (RoCE) flow table of converged Ethernet.
[0343] In a possible implementation, the first message is a Remote Direct Memory Access (RoCE) message of Converged Ethernet.
[0344] In a possible implementation, the first forwarding path carries a Transmission Control Protocol TCP session between the sender and the receiver;
[0345] The first message further includes: third speed reduction information, where the third speed reduction information is a receiving window value determined by the first device, and the third speed reduction information is used to indicate a sending window size for the sending end to send the data stream.
[0346] In a possible implementation, the processing module 1902 is further configured to generate a first window value, where the first window value is a congestion window value of the sender calculated by the first device;
[0347] The transceiver module 1901 is further configured to obtain a second window value generated by the receiving end, where the second window value indicates a receiving window value generated by the receiving end;
[0348] The processing module 1902 is further configured to determine the third speed reduction information according to the first window value and the second window value, wherein the value of the third speed reduction information is the minimum value of the first window value and the second window value.
[0349] In one possible implementation, the processing module 1902 is further configured to obtain the second window value from a receive window RWND field of the first message, where the first message is an ACK message of a Transmission Control Protocol TCP session established between the sender and the receiver;
[0350] The processing module 1902 is further configured to modify the RWND field of the first message according to the third speed reduction information to generate the first message, wherein the window value of the receiving window RWND field of the first message is the same as the value of the third speed reduction information.
[0351] In one possible implementation, the processing module 1902 is further configured to generate a third set, the third set including an association between one or more data streams and receive window values corresponding to the data streams, where the receive window values of the data streams are determined by the receiving end;
[0352] The processing module 1902 is further configured to determine the second window value corresponding to the data flow from a third set, where the third set includes an association relationship between one or more data flows and the receiving window values corresponding to the data flows.
[0353] In a possible implementation, the first message is an acknowledgment ACK message of the Transmission Control Protocol TCP;
[0354] The receiving window field of the first message carries the third speed reduction information;
[0355] Alternatively, the optional option field of the first message carries the first speed reduction information and / or the second speed reduction information.
[0356] In a possible implementation, the first forwarding path carries a Transmission Control Protocol TCP session between the sender and the receiver;
[0357] The first message further includes: fourth speed reduction information, where the fourth speed reduction information is used to instruct the sending end to reduce the sending amount of the data stream.
[0358] In a possible implementation, the fourth speed reduction information is carried in a congestion response ECE field.
[0359] In a possible implementation, the value of the ECE field of the first message is 1.
[0360] In a possible implementation, the processing module 1902 is further configured to determine whether the first forwarding path has recovered from the network congestion;
[0361] The transceiver module 1901 is further configured to send a second message to the sending end, where the second message is configured to instruct the sending end to release the speed reduction processing on the data flow.
[0362] In a possible implementation, the transceiver module 1901 is further configured to receive a second message sent by the second device, where the second message is used to indicate that the first forwarding path has recovered from the network congestion;
[0363] The processing module 1902 is further configured to determine, based on the second message, whether the first forwarding path has recovered from the network congestion.
[0364] In a possible implementation, the processing module 1902 is further configured to determine the data flow carried by the first forwarding path;
[0365] The processing module 1902 is further configured to determine the sending end corresponding to the data stream.
[0366] In a possible implementation, the second message further includes: identification information of the data flow.
[0367] In another example, the communication device 1900 is applied to a transmitting end, and the method includes:
[0368] The transceiver module 1901 is further configured to receive a first message sent by a first device, the first message being used to instruct the sender to perform downspeeding on a data stream, the first device being a head node of a first forwarding path, and the first forwarding path carrying the data stream;
[0369] The processing module 1902 is further configured to reduce the sending rate of the data stream according to the first message.
[0370] In a possible implementation, the first message further includes identification information of the data flow.
[0371] In one possible implementation, the transceiver module 1901 is further configured to receive a second message sent by the first device, where the second message is used to instruct the transmitter to release the speed reduction process on the data flow;
[0372] The processing module 1902 is further configured to increase the sending rate of the data stream according to the second message.
[0373] In a possible implementation, the second message further includes identification information of the data flow.
[0374] In another example, the communication apparatus 1900 is applied to a second device, and the communication apparatus 1900 includes:
[0375] The transceiver module 1901 is also used to send a first message to the first device, where the first message is used to indicate that network congestion occurs on the first forwarding path. The second device is a downstream network device of the first device on the first forwarding path, and the first device is the head node of the first forwarding path.
[0376] In a possible implementation manner, the first message includes: identification information of the first forwarding path.
[0377] In a possible implementation, the second device is a next-hop network device of the first device in the first forwarding path.
[0378] In a possible implementation, the second device is a network device where the network congestion occurs.
[0379] In a possible implementation, the transceiver module 1901 is further configured to send a second message to the first device, where the second message is used to indicate that the first forwarding path has recovered from the network congestion.
[0380] In a possible implementation manner, the second message includes: identification information of the first forwarding path.
[0381] The communication device 1900 can correspond to the first device, the second device or the transmitting end in the above-mentioned method embodiment. The various units in the communication device 1900 and the above-mentioned other operations and / or functions are respectively for implementing the various steps and methods implemented by the first device, the second device or the transmitting end in the method embodiment. For specific details, please refer to the above-mentioned method embodiment. For the sake of brevity, they will not be repeated here.
[0382] When the communication device 1900 processes a message, the division of the above functional modules is used as an example for illustration. In actual application, the above functions can be assigned to different functional modules as needed, that is, the internal structure of the communication device 1900 is divided into different functional modules to complete all or part of the functions described above. Figure 7-18 The corresponding embodiment methods belong to the same concept, and their specific implementation processes are detailed in the above method embodiments, which will not be repeated here.
[0383] In order to implement the above embodiment, the present application also provides a communication device. Figure 20 , Figure 20 A schematic structural diagram of a communication device 2000 provided in an embodiment of the present application.
[0384] Figure 20 Although the communication device 2000 shown shows certain specific features, those skilled in the art will appreciate from the embodiments of the present application that for the sake of brevity, Figure 20 Various other features are not shown to avoid obscuring more relevant aspects of the embodiments disclosed in the embodiments of the present application. To this end, as an example, in some implementations, the communication device 2000 includes one or more processing units (e.g., CPU) 2001, a network interface 2002, a programming interface 2003, a memory 2004, and one or more communication buses 2005 for interconnecting the various components. In other implementations, the communication device 2000 may also omit or add some functional components or units based on the above examples.
[0385] In some implementations, the network interface 2002 is used to connect to one or more other communication devices / servers in the communication system. In some implementations, the communication bus 2005 includes circuits for interconnecting and controlling communications between system components. The memory 2004 may include non-volatile memory, such as read-only memory (ROM), programmable read-only memory (PROM), erasable programmable read-only memory (EPROM), electrically erasable programmable read-only memory (EEPROM), or flash memory. The memory 2004 may also include volatile memory, which may be random access memory (RAM) used as an external cache.
[0386] In some implementations, memory 2004 or a non-transitory computer-readable storage medium of memory 2004 stores the following programs, modules, and data structures, or a subset thereof, including, for example, a transceiver unit (not shown), an acquisition unit 20041 , and a processing unit 20042 .
[0387] In a possible embodiment, the communication device 2000 may have the above Figure 7-18 Any function in the first device, the second device or the transmitting end in the corresponding method embodiment.
[0388] It should be understood that the communication device 2000 corresponds to the first device, the second device or the transmitting end in the above-mentioned method embodiment, and the modules in the communication device 2000 and the above-mentioned other operations and / or functions are respectively for implementing the various steps and methods implemented by the first device, the second device or the transmitting end in the above-mentioned method embodiment. For specific details, please refer to the above-mentioned Figure 7-18 For the sake of brevity, the corresponding method embodiments are not described here in detail.
[0389] It should be understood that in this application, the data sending and receiving operations can be completed by the network interface 2002 on the communication device 2000, or the processor can call the program code in the memory and cooperate with the network interface 2002 to implement the functions of the sending and receiving unit when necessary.
[0390] In various implementations, the communication device 2000 is used to execute the network congestion processing method provided in the embodiment of the present application, for example, to execute the above Figure 7-18 The network congestion processing method corresponding to the embodiment shown.
[0391] This application Figure 20 The specific structure of the communication device can be Figure 21 shown.
[0392] Figure 21 A schematic structural diagram of a communication device 2100 provided in an embodiment of the present application.
[0393] The communication device 2100 includes a main control board 2110 and an interface board 2130 .
[0394] Main control board 2110, also known as the main processing unit (MPU) or route processor, is used to control and manage various components in communication device 2100, including routing calculation, device management, device maintenance, and protocol processing. Main control board 2110 includes a central processing unit (CPU) 2111 and memory 2112.
[0395] Interface board 2130 is also known as a line processing unit (LPU), line card, or service board. It provides various service interfaces and implements data packet forwarding. Service interfaces include, but are not limited to, Ethernet interfaces and POS (Packet over SONET / SDH) interfaces. Interface board 2130 includes a central processing unit (CPU) 2131, a network processor (NPU) 2132, a forwarding table memory 2134, and a physical interface card (PIC) 2133.
[0396] The central processing unit 2131 on the interface board 2130 is used to control and manage the interface board 2130 and communicate with the central processing unit 2111 on the main control board 2110 .
[0397] The network processor 2132 is used to implement packet forwarding processing and can be in the form of a forwarding chip.
[0398] The physical interface card 2133 is used to implement the physical layer docking function. The original traffic enters the interface board 2130 from this physical interface card, and the processed message is sent from the physical interface card 2133. The physical interface card 2133 includes at least one physical interface, which is also called a physical port. The physical interface can be a Flexible Ethernet (FlexE) physical interface. The physical interface card 2133, also known as a daughter card, can be installed on the interface board 2130. It is responsible for converting the optical and electrical signals into messages and performing a validity check on the messages before forwarding them to the network processor 2132 for processing. In some embodiments, the central processing unit 2131 of the interface board 2130 can also perform the functions of the network processor 2132, such as implementing software forwarding based on a general-purpose CPU, so that the network processor 2132 is not required in the interface board 2130.
[0399] Optionally, the communication device 2100 includes multiple interface boards. For example, the communication device 2100 further includes an interface board 2140 . The interface board 2140 includes a central processing unit 2141 , a network processor 2142 , a forwarding table entry memory 2144 , and a physical interface card 2143 .
[0400] Optionally, the communication device 2100 further includes a switching fabric board 2120. The switching fabric board 2120 may also be referred to as a switch fabric unit (SFU). If the communication device includes multiple interface boards 2130, the switching fabric board 2120 is used to exchange data between the interface boards. For example, the interface board 2130 and the interface board 2140 can communicate via the switching fabric board 2120.
[0401] The main control board 2110 is coupled to the interface board. For example, the main control board 2110, the interface board 2130, the interface board 2140, and the switching network board 2120 are interconnected via a system bus and / or a system backplane. In one possible implementation, an inter-process communication (IPC) channel is established between the main control board 2110 and the interface board 2130, and communication between the main control board 2110 and the interface board 2130 is performed via the IPC channel.
[0402] Logically, the communication device 2100 comprises a control plane and a forwarding plane. The control plane includes a main control board 2110 and a central processing unit 2131. The forwarding plane includes various components that perform forwarding, such as a forwarding table entry memory 2134, a physical interface card 2133, and a network processor 2132. The control plane performs functions such as publishing routes, generating forwarding tables, processing signaling and protocol messages, and configuring and maintaining device status. The control plane sends the generated forwarding tables to the forwarding plane. On the forwarding plane, the network processor 2132 forwards messages received by the physical interface card 2133 based on the forwarding table sent by the control plane. The forwarding table sent by the control plane can be stored in the forwarding table entry memory 2134. In some embodiments, the control plane and forwarding plane can be completely separate and not located on the same device.
[0403] It should be understood that the transceiver unit in the communication device 2000 can be equivalent to the physical interface card 2133 or the physical interface card 2143 in the communication device 2100; the acquisition unit 20041 and the processing unit 20042 in the communication device 2000 can be equivalent to the central processing unit 2111 or the central processing unit 2131 in the communication device 2100, or can be equivalent to the program code or instructions stored in the memory 2112.
[0404] It should be understood that the operations on the interface board 2140 in the embodiment of the present application are consistent with the operations on the interface board 2130. For the sake of brevity, detailed description is omitted. It should be understood that the communication device 2100 of this embodiment can correspond to the first device, second device, or transmitting end in each of the above-mentioned method embodiments. The main control board 2110, interface board 2130, and / or interface board 2140 in the communication device 2100 can implement the functions and / or various steps of the first device, second device, or transmitting end in each of the above-mentioned method embodiments. For the sake of brevity, detailed description is omitted here.
[0405] It's worth noting that there may be one or more main control boards (SBCs), which may include a primary SBC and a backup SBC. There may be one or more interface boards. The higher the data processing capability of a communication device, the more interface boards are provided. An interface board may also have one or more physical interface cards. There may be no SBCs, or one or more. Multiple SBCs can be used to achieve load balancing and redundant backup. In a centralized forwarding architecture, a communication device may not require a SBC; the interface board handles service data processing for the entire system. In a distributed forwarding architecture, a communication device may have at least one SBC, which enables data exchange between multiple interface boards, providing high-capacity data exchange and processing capabilities. Alternatively, a communication device may have only one SBC, i.e., no SBC. The functions of the interface board and the SBC are integrated on this single SBC. In this case, the central processing unit (CPU) on the interface board and the CPU on the SBC can be combined into a single CPU on this single SBC, performing the combined functions of the two. The specific architecture to be adopted depends on the specific network deployment scenario and is not intended to be exclusive here.
[0406] In some possible embodiments, the first device, the second device, or the transmitting end may be implemented as a virtualized device. The virtualized device may be a virtual machine (VM), a virtual router, or a virtual switch running a program for transmitting messages. The virtualized device is deployed on a hardware device (e.g., a physical server). For example, the first device, the second device, or the transmitting end may be implemented based on a general-purpose physical server in combination with network function virtualization (NFV) technology.
[0407] It should be understood that the communication devices in the above-mentioned various product forms respectively have any functions of the first device, the second device or the transmitting end in the above-mentioned method embodiment, and will not be repeated here.
[0408] An embodiment of the present application also provides a computer-readable storage medium, comprising instructions, which, when executed on a computer, enables the computer to control a computing device to execute any one of the implementation methods shown in the aforementioned method embodiments.
[0409] An embodiment of the present application also provides a computer program product, which includes computer program code. When the computer program code runs on a computer, it enables the computer to execute any one of the implementation methods shown in the aforementioned method embodiments.
[0410] Furthermore, the embodiment of the present application also provides a computer program product, which, when executed on a communication device, enables the communication device to execute the above Figure 7-18The method executed by the first device, the second device or the sending end in the corresponding method embodiment.
[0411] The present application also provides a chip system including a processor and an interface circuit, wherein the interface circuit is configured to receive instructions and transmit them to the processor, wherein the processor is configured to implement any of the above method embodiments.
[0412] Optionally, the chip system further includes a memory, and the chip system may include one or more processors. The processor may be implemented in hardware or software. When implemented in hardware, the processor may be a logic circuit, an integrated circuit, etc. When implemented in software, the processor may be a general-purpose processor that implements any of the above method embodiments by reading software code stored in the memory.
[0413] Optionally, the memory in the chip system may be one or more memories. The memory may be integrated with the processor or may be provided separately from the processor, which is not limited in this application. For example, the memory may be a non-transient processor, such as a read-only memory (ROM), which may be integrated with the processor on the same chip or provided on different chips. This application does not specifically limit the type of memory or the configuration of the memory and the processor.
[0414] See also Figure 22 , Figure 22 This is a schematic diagram of a communication system 2200 proposed in an embodiment of the present application. The communication system 2200 includes: a first device 2201, a second device 2202, a transmitter 2204, and a controller 2203. The first device 2201 and the second device 2202 can be, for example, physical devices such as routers, switches, or gateways, or virtual devices that support route publishing and message forwarding. The transmitter 2204 can be a server, access network device, or core network. This embodiment does not limit the specific types of the first device 2201 and the second device 2202. The controller 2203 can be a server or computing device that manages the first device 2201 and the second device 2202. Optionally, the first device 2201 can be the communication device 1900, the communication device 2000, or the communication device 2100. Optionally, the second device 2202 can be the communication device 1900, the communication device 2000, or the communication device 2100. Optionally, the controller 2203 may be the communication device 1900 , the communication device 2000 , or the communication device 2100 .
[0415] The above describes the embodiments of the present application in detail. The steps in the method of the embodiments of the present application can be scheduled sequentially, merged or deleted according to actual needs; the modules in the device of the embodiments of the present application can be divided, merged or deleted according to actual needs.
[0416] It should be understood that “one embodiment” or “an embodiment” mentioned throughout the specification means that the specific features, structures or characteristics related to the embodiment are included in at least one embodiment of the present application. Therefore, “in one embodiment” or “in an embodiment” appearing throughout the specification does not necessarily refer to the same embodiment. In addition, these specific features, structures or characteristics can be combined in one or more embodiments in any suitable manner. It should be understood that in the various embodiments of the present application, the size of the sequence numbers of the above-mentioned processes does not mean the order of execution. The execution order of each process should be determined by its function and internal logic, and should not constitute any limitation on the implementation process of the embodiments of the present application.
[0417] The term "and / or" in this document simply describes a relationship between related objects, indicating that three possible relationships exist. For example, "A and / or B" can mean: A exists alone, A and B exist simultaneously, or B exists alone. Additionally, the character " / " in this document generally indicates that the related objects are in an "or" relationship.
[0418] It should be understood that in the embodiments of the present application, "B corresponding to A" means that B is associated with A and B can be determined based on A. However, it should also be understood that determining B based on A does not mean determining B based solely on A, but B can also be determined based on A and / or other information.
[0419] Those skilled in the art will clearly understand that, for the convenience and brevity of description, the specific working processes of the systems, devices and units described above can refer to the corresponding processes in the aforementioned method embodiments and will not be repeated here.
[0420] In the several embodiments provided in this 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 merely schematic. For example, the division of units is only a logical function division. In actual implementation, there may be other division methods, 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 interface, device or unit, which can be electrical, mechanical or other forms.
[0421] Units described as separate components may or may not be physically separate, and components shown as units may or may not be physical units, that is, they may be located in one place or distributed across multiple network units. Some or all of these units may be selected to achieve the purpose of this embodiment according to actual needs.
[0422] In addition, the functional units in the various embodiments of the present application may be integrated into a single processing unit, or each unit may exist physically separately, or two or more units may be integrated into a single unit. The aforementioned integrated units may be implemented in the form of hardware or software functional units.
Claims
1. A method for handling network congestion, characterized in that: The method is applied to a first device, where the first device is a head node of a first forwarding path, and includes: determining that network congestion occurs on the first forwarding path; A first message is sent to a sending end, where the first message is used to instruct the sending end to perform speed reduction processing on a data flow, and the first forwarding path carries the data flow.
2. The method according to claim 1, characterized in that The determining that network congestion occurs on the first forwarding path includes: According to the occurrence of network congestion on the egress port of the first device, it is determined that the first forwarding path corresponding to the egress port has network congestion.
3. The method according to claim 1, characterized in that The determining that network congestion occurs on the first forwarding path includes: receiving a first message sent by a second device, where the first message is used to indicate that network congestion occurs on the first forwarding path, and the second device is a downstream network device of the first device on the first forwarding path; It is determined, according to the first message, that network congestion occurs on the first forwarding path.
4. The method according to any one of claims 1 to 3, characterized in that The second device is a next-hop network device of the first device in the first forwarding path.
5. The method according to any one of claims 1 to 3, characterized in that The second device is a network device where the network congestion occurs.
6. The method according to any one of claims 1 to 5, characterized in that The method further comprises: determining the data flow carried by the first forwarding path; Determine the sending end corresponding to the data stream.
7. The method according to any one of claims 1 to 6, characterized in that The method further comprises: Determining identification information of the first forwarding path according to the first message; determining, based on the identification information of the first forwarding path, identification information of the data flow from a first set, the first set including associations between identification information of one or more forwarding paths and data flows carried by the forwarding paths; The sending end that sends the data stream is determined according to the identification information of the data stream.
8. The method according to any one of claims 1 to 7, characterized in that The first message also includes: identification information of the data flow.
9. The method according to claim 8, characterized in that The identification information of the data flow includes: an Internet Protocol quintuple, or a destination queue pair, wherein the Internet Protocol quintuple includes: a source Internet Protocol address, a destination Internet Protocol address, a source port number, a destination port number and a transport layer protocol type.
10. The method according to any one of claims 1 to 9, characterized in that The first message further includes: first speed reduction information, where the first speed reduction information is used to indicate an expected speed reduction range of the data flow.
11. The method according to any one of claims 1 to 10, characterized in that The first message also includes second speed reduction information, where the second speed reduction information is used to indicate an expected speed reduction time of the data flow.
12. The method according to any one of claims 1 to 11, characterized in that The first message further includes: first information, where the first information is used to indicate that the first message is a speed reduction notification message, and the speed reduction notification message is used to instruct the sending end to perform speed reduction processing on the data flow.
13. The method according to any one of claims 7 to 12, characterized in that Determining, according to the identification information of the data stream, the sending end that sends the data stream includes: Determine, from a second set, according to the identification information of the data flow, a first ingress port index corresponding to the data flow, wherein the second set includes one or more associations, the associations including: the identification information of the data flow, the queue carrying the data flow, and the ingress port index corresponding to the queue; The sending end is determined according to the first ingress port index.
14. The method according to any one of claims 1 to 13, characterized in that The first message also includes: identification information of the queue corresponding to the data flow, and the first message is further used to instruct the sending end to perform speed reduction processing on the queue corresponding to the data flow.
15. The method according to any one of claims 1 to 14, characterized in that The first message is a Transmission Control Protocol TCP message, a User Datagram Protocol UDP message, or an Internet Control Message Protocol ICMP message.
16. The method according to claim 14, characterized in that The first set is a Remote Direct Memory Access (RoCE) flow table for converged Ethernet.
17. The method according to any one of claims 1 to 16, characterized in that The first message is a Remote Direct Memory Access (RoCE) message of Converged Ethernet.
18. The method according to any one of claims 1 to 12, characterized in that The first forwarding path carries a Transmission Control Protocol TCP session between the sending end and the receiving end; The first message further includes: third speed reduction information, where the third speed reduction information is a receiving window value determined by the first device, and the third speed reduction information is used to indicate a sending window size for the sending end to send the data stream.
19. The method according to claim 18, characterized in that The method further comprises: Generate a first window value, where the first window value is a congestion window value of the sending end calculated by the first device; Acquire a second window value generated by the receiving end, where the second window value indicates a receiving window value generated by the receiving end; The third speed reduction information is determined according to the first window value and the second window value, and the value of the third speed reduction information is the minimum value of the first window value and the second window value.
20. The method according to claim 19, characterized in that Acquiring the second window value generated by the receiving end includes: Acquire the second window value from a receive window RWND field of the first message, where the first message is an ACK message of a Transmission Control Protocol TCP session established between the sender and the receiver; Generating the first message in response to the first message includes: According to the third speed reduction information, the RWND field of the first message is modified to generate the first message, and the window value of the receiving window RWND field of the first message is the same as the value of the third speed reduction information.
21. The method according to claim 19, wherein Acquiring the second window value generated by the receiving end includes: generating a third set, the third set including an association relationship between one or more data streams and receiving window values corresponding to the data streams, where the receiving window values of the data streams are determined by the receiving end; The second window value corresponding to the data flow is determined from a third set, where the third set includes an association relationship between one or more data flows and the receiving window values corresponding to the data flows.
22. The method according to claim 21, characterized in that The first message is an acknowledgment ACK message of the Transmission Control Protocol TCP; The receiving window field of the first message carries the third speed reduction information; Alternatively, the optional option field of the first message carries the first speed reduction information and / or the second speed reduction information.
23. The method according to any one of claims 1 to 12, characterized in that The first forwarding path carries a Transmission Control Protocol TCP session between the sending end and the receiving end; The first message further includes: fourth speed reduction information, where the fourth speed reduction information is used to instruct the sending end to reduce the sending amount of the data stream.
24. The method according to claim 23, wherein The fourth speed reduction information is carried in the congestion response ECE field.
25. The method according to claim 24, characterized in that The value of the ECE field of the first message is 1.
26. The method according to any one of claims 1 to 25, characterized in that The method further comprises: determining that the first forwarding path has recovered from the network congestion; A second message is sent to the sending end, where the second message is used to instruct the sending end to release the speed reduction processing on the data flow.
27. The method according to claim 26, characterized in that The determining that the first forwarding path has recovered from the network congestion includes: receiving a second message sent by the second device, where the second message is used to indicate that the first forwarding path has recovered from the network congestion; According to the second message, it is determined that the first forwarding path has recovered from the network congestion.
28. The method according to claim 27, characterized in that The method further comprises: determining the data flow carried by the first forwarding path; Determine the sending end corresponding to the data stream.
29. The method according to claim 28, characterized in that The second message also includes: identification information of the data flow.
30. A method for handling network congestion, characterized in that: The method is applied to a transmitting end, and the method includes: receiving a first message sent by a first device, where the first message is used to instruct the sender to perform speed reduction processing on a data flow, where the first device is a head node of a first forwarding path, and the first forwarding path carries the data flow; According to the first message, the sending rate of the data stream is reduced.
31. The method according to claim 30, wherein The first message also includes identification information of the data flow.
32. The method according to claim 30 or 31, characterized in that receiving a second message sent by the first device, where the second message is used to instruct the transmitting end to release the speed reduction process on the data flow; According to the second message, the sending rate of the data stream is increased.
33. The method according to claim 32, characterized in that The second message also includes identification information of the data flow.
34. A method for handling network congestion, characterized in that: The method is applied to a second device, and includes: A first message is sent to a first device, where the first message is used to indicate that network congestion occurs on a first forwarding path, the second device is a downstream network device of the first device on the first forwarding path, and the first device is a head node of the first forwarding path.
35. The method according to claim 34, wherein The first message includes: identification information of the first forwarding path.
36. The method according to claim 34 or 35, characterized in that The second device is a next-hop network device of the first device in the first forwarding path.
37. The method according to claim 34 or 35, characterized in that The second device is a network device where the network congestion occurs.
38. The method according to any one of claims 34 to 37, wherein: The method further comprises: A second message is sent to the first device, where the second message is used to indicate that the first forwarding path has recovered from the network congestion.
39. The method according to claim 38, wherein The second message includes: identification information of the first forwarding path.
40. A communication device, characterized in that: The device includes multiple functional modules, and the multiple functional modules interact with each other to implement the method according to any one of claims 1-39.
41. A communication system, characterized in that The communication system includes a first device, a second device and / or a transmitting end, the first device is used to execute the method described in any one of the preceding claims 1-29, the transmitting end is used to execute the method described in any one of the preceding claims 30-33, and the second device is used to execute the method described in any one of the preceding claims 34-39.
42. A communication device comprising a processor and a memory, wherein the memory is used to store program code, and the processor is used to call the program code in the memory so that the communication device executes the method according to any one of claims 1 to 39.
43. A computer-readable storage medium storing instructions, which, when executed on a computer, cause the computer to execute the method according to any one of claims 1 to 39.
44. A computer program product, characterized in that The computer program product comprises program codes, and when a computer runs the computer program product, the computer is caused to perform the method according to any one of claims 1 to 39.