Data transmission method, corresponding device and system

By negotiating available bandwidth during the handshake phase and delaying sending data, and adjusting the transmission rate in combination with periodic acknowledgement packets, the problem of instantaneous congestion caused by processing multiple data streams is solved, and data transmission efficiency and stability are improved.

CN119109870APending Publication Date: 2024-12-10HUAWEI TECH CO LTD
View PDF 0 Cites 0 Cited by

Patent Information

Application Number
CN202310677534.7
Authority / Receiving Office
CN · China
Patent Type
Applications(China)
Current Assignee / Owner
Filing Date
2023-06-08
Publication Date
2024-12-10

AI Technical Summary

Technical Problem

During the handshake between the sender and the receiver, the network device causes instant congestion due to processing multiple data streams, which affects the data transmission efficiency.

Method used

By negotiating available bandwidth during the handshake phase, delaying for a periodic time before sending data, periodic acknowledgement packets are used to adjust the transmission rate to reduce instantaneous congestion on the transmission path.

Benefits of technology

It effectively reduces the probability of congestion on the transmission path, improves the efficiency and stability of data transmission, and ensures the rational use of network resources.

✦ Generated by Eureka AI based on patent content.

Smart Images

  • Figure CN119109870A_ABST
    Figure CN119109870A_ABST
Patent Text Reader

Abstract

The invention discloses a data transmission method, in a handshake stage of a first device and a second device, the method comprises the following steps: the first device sends a first handshake message (HSP), the first handshake message is used by the first device to negotiate an available bandwidth with at least one transmission device, the at least one transmission device is a device on a transmission path between the first device and the second device; the first device receives a second handshake message, the second handshake message comprises a first available bandwidth, and the first available bandwidth is used for indicating a first rate of data transmission between the first device and the second device; and after receiving the second handshake message, the first device delays for a first duration, and then sends data at a first rate. In the application, after receiving the first available bandwidth, the first device delays the first duration and then sends the data, and some data streams in the transmission device have been transmitted within the first duration, so that instant congestion is not caused when the transmission device transmits newly added data streams to the first device and the second device.
Need to check novelty before this filing date? Find Prior Art

Description

Technical Field

[0001] The present application relates to the field of communication technology, and in particular to a method, corresponding device and system for data transmission. Background Art

[0002] During the handshake process between the sender and the receiver, the sender will request bandwidth through the synchronization (SYN) message of the transmission control protocol (TCP); the network device between the sender and the receiver will approve the available bandwidth in the SYN message based on the current available bandwidth; after the receiver receives the SYN message with the available bandwidth, it will add the available bandwidth to the acknowledgment (ACK) message and then return it to the sender.

[0003] When the sender receives the ACK message, it can learn the available bandwidth for communicating with the receiver, and then immediately send data at the rate indicated by the available bandwidth.

[0004] Because the network devices between the sender and the receiver are usually responsible for sending multiple data streams, the data streams sent by the sender usually cause the intermediate network devices to enter instantaneous congestion. Summary of the invention

[0005] The present application provides a data transmission method for reducing instantaneous congestion on a transmission path. The present application also provides a corresponding device, a system, a computer-readable storage medium, a computer program product, and the like.

[0006] A first aspect of the present application provides a method for data transmission. In a handshake phase between a first device and a second device, the method includes: the first device sends a first handshake packet (HSP), the first handshake packet is used for the first device to negotiate available bandwidth with at least one transmission device, and the at least one transmission device is a device on a transmission path between the first device and the second device; the first device receives a second handshake packet, the second handshake packet includes a first available bandwidth, and the first available bandwidth is used to indicate a first rate for data transmission between the first device and the second device; the first device delays for a first period of time after receiving the second handshake packet, and then sends data at the first rate.

[0007] The data transmission method of the present application can be applied to transmission control protocol (TCP), remote direct memory access (RDMA) or other protocols or scenarios involving handshake.

[0008] In the present application, the first device may be a transmitting end, and the second device may be a receiving end, or the first device may be a receiving end and the second device may be a transmitting end. The communication between the first device and the second device may be through one or more transmission devices, and the transmission device may be a router, a switch, an optical device, a gateway or an access network device, etc. The first device and the second device may be terminal devices, or servers, or network devices, etc.

[0009] In the present application, before the first device and the second device communicate, they will conduct a handshake negotiation to determine the available bandwidth for communication between the two devices, thereby determining the rate of transmitting the data stream. The first handshake message sent by the first device may carry a first bandwidth request identifier, and the first bandwidth request identifier is used to negotiate with at least one transmission device on the transmission path about the available bandwidth for sending data from the first device to the second device. The second handshake message sent by the second device may also carry a second bandwidth request identifier, and the second bandwidth request identifier is used to negotiate with at least one transmission device on the transmission path about the available bandwidth for sending data from the second device to the first device. After receiving the second handshake message, the first device may also send a third handshake message to the second device, and notify the second device of the rate of sending data to the first device through the third handshake message. The second device may also wait for a second time period before sending data. The second time period may be equal to or unequal to the first time period.

[0010] In the present application, because the transmission device on the transmission path of the first device and the second device may transmit data streams for multiple devices, each addition of a new data stream will cause the transmission rate of other data streams to decrease, causing instantaneous congestion. In the present application, after receiving the first available bandwidth, the first device delays the first time length before sending data. Some data streams in the transmission device have completed transmission within the first time length, so when the transmission device transmits the newly added data streams to the first device and the second device, it will not cause instantaneous congestion.

[0011] In a possible implementation, the method further includes: the first device receives a periodic confirmation message, the periodic confirmation message includes a second available bandwidth, and the second available bandwidth is used to indicate that the first device will update the data transmission rate with the second device to a second rate indicated by the second available bandwidth.

[0012] In this possible implementation, a periodic acknowledgement (PACK) message is an acknowledgement message sent periodically. In the present application, during the handshake phase, the reverse available bandwidth of the current period can be collected through the PACK message, thereby instructing the first device to adjust the rate of sending data in a timely manner, so that the first device and the second device can respond to network changes more quickly during the data transmission process, thereby reducing the probability of congestion.

[0013] In a possible implementation, the first available bandwidth is a stream-level available bandwidth or a host-level available bandwidth. The stream-level available bandwidth is used to transmit data streams, and the host-level available bandwidth includes multiple stream-level available bandwidths.

[0014] In this possible implementation, the available bandwidth at the host level is usually the available bandwidth for communication between two hosts, and the available bandwidth between the hosts can stably transmit data for the two hosts for a long time.

[0015] In a possible implementation, the first duration is a period for generating a periodic confirmation message.

[0016] In this possible implementation, configuring the first duration as a period of PACK is beneficial to better reduce the probability of congestion on the transmission path.

[0017] In one possible implementation, the first time length is the difference between the round-trip delay of the first data stream transmitted by the first transmission device and the round-trip delay of the second data stream, wherein the first transmission device is included in at least one transmission device, the round-trip delay of the first data stream is the data stream with the largest round-trip delay among the multiple data streams transmitted by the first transmission device, and the round-trip delay of the second data stream is the data stream with the smallest round-trip delay among the multiple data streams transmitted by the first transmission device.

[0018] In this possible implementation, the first duration is configured as the difference between the longest round-trip time (RTT) and the shortest RTT, which is conducive to reducing the probability of congestion on the transmission path.

[0019] In a possible implementation, the first available bandwidth is negatively correlated with the port outbound queue length of the second transmission device, and the second transmission device is a transmission device that provides the smallest available bandwidth for the first device and the second device among the at least one transmission device.

[0020] In this possible implementation, the first available bandwidth depends on the transmission device on the transmission path that can provide the minimum available bandwidth. If the port out-queue of the transmission device is longer, it means that more data needs to be transmitted, and the available bandwidth that can be provided is smaller. Controlling the first available bandwidth by the port out-queue of the transmission device can effectively regulate the data sending rate of the first device, thereby effectively reducing the probability of congestion on the transmission path.

[0021] A second aspect of the present application provides a method for data transmission. In a handshake phase between a first device and a second device, the method includes: after the second device receives a first handshake message, the second device sends a second handshake message, the first handshake message is used for the first device to negotiate available bandwidth with at least one transmission device, the at least one transmission device is a device on a transmission path between the first device and the second device, the second handshake message is used to transmit a first available bandwidth to the first device, the first available bandwidth is used to indicate a first rate at which the first device and the second device transmit data; after the second device sends the second handshake message, the second device sends a periodic confirmation message in each confirmation period, the periodic confirmation message is used to collect a second available bandwidth of the transmission path between the first device and the second device in the corresponding confirmation period, the second available bandwidth is used to indicate that the first device will update the rate at which data is transmitted with the second device to the second rate indicated by the second available bandwidth.

[0022] In the present application, during the handshake stage between the first device and the second device, the second device can periodically send a PACK message. In this way, the available bandwidth for communication between the first device and the second device in the current period can be collected through the PACK message, thereby instructing the first device to adjust the rate of sending data in time. In this way, the first device and the second device can respond to network changes more quickly during data transmission, thereby reducing the probability of congestion.

[0023] In a possible implementation, the first available bandwidth is a stream-level available bandwidth or a host-level available bandwidth. The stream-level available bandwidth is used to transmit data streams, and the host-level available bandwidth includes multiple stream-level available bandwidths.

[0024] In this possible implementation, the available bandwidth at the host level is usually the available bandwidth for communication between two hosts, and the available bandwidth between the hosts can stably transmit data for the two hosts for a long time.

[0025] In a possible implementation, the first available bandwidth is negatively correlated with the port outbound queue length of the second transmission device, and the second transmission device is a transmission device that provides the smallest available bandwidth for the first device and the second device among the at least one transmission device.

[0026] In this possible implementation, the first available bandwidth depends on the transmission device on the transmission path that can provide the minimum available bandwidth. If the port out-queue of the transmission device is longer, it means that more data needs to be transmitted, and the available bandwidth that can be provided is smaller. Controlling the first available bandwidth by the port out-queue of the transmission device can effectively regulate the data sending rate of the first device, thereby effectively reducing the probability of congestion on the transmission path.

[0027] In a possible implementation, the second handshake message includes a bandwidth request identifier, and the bandwidth request identifier is used to negotiate with at least one transmission device on the transmission path about the available bandwidth for sending data from the second device to the first device. The method also includes: the second device receives a third handshake message, the third handshake message includes the available bandwidth for sending data from the second device to the first device, and the second device delays for the first time period or the second time period, and then sends data to the first device at a rate indicated by the available bandwidth for sending data to the first device.

[0028] In this possible implementation, the first handshake message sent by the first device may carry a first bandwidth request identifier, and the first bandwidth request identifier is used to negotiate with at least one transmission device on the transmission path for the available bandwidth for sending data from the first device to the second device. The second handshake message sent by the second device may also carry a second bandwidth request identifier, and the second bandwidth request identifier is used to negotiate with at least one transmission device on the transmission path for the available bandwidth for sending data from the second device to the first device. After receiving the second handshake message, the first device may also send a third handshake message to the second device, and notify the second device of the rate at which data is sent to the first device through the third handshake message. The second device may also wait for a second time period before sending data. The second time period may be equal to or unequal to the first time period.

[0029] A third aspect of the present application provides a method for data transmission, during a handshake phase between a first device and a second device, the method comprising: the first transmission device receives a periodic confirmation message, the first transmission device is a device on a transmission path between the first device and the second device, and the periodic confirmation message is sent by the second device; the first transmission device determines a first reverse available bandwidth in a confirmation period in which the periodic confirmation message is located, the first reverse available bandwidth being an available bandwidth provided by the first transmission device for transmitting a data stream from the first device to the second device; the first transmission device processes the periodic confirmation message according to the first reverse available bandwidth.

[0030] In the present application, during the handshake phase between the first device and the second device, the transmission device can determine the reverse available bandwidth of the first transmission device in the current confirmation cycle after receiving the PACK message, and the reverse available bandwidth is the available bandwidth for transmitting data from the first device to the second device. In this way, the available bandwidth of the current confirmation cycle can be notified to the first device in a timely manner through the PACK message, thereby instructing the first device to adjust the rate of sending data in a timely manner. In this way, the first device and the second device can respond to network changes more quickly during the data transmission process, thereby reducing the probability of congestion.

[0031] In a possible implementation, the above steps: the first transmission device processes the periodic confirmation message according to the first reverse available bandwidth, including: if the first reverse available bandwidth is less than the second reverse available bandwidth carried in the periodic confirmation message, the first transmission device replaces the second reverse available bandwidth with the first reverse available bandwidth.

[0032] In this possible implementation, when the first reverse available bandwidth is smaller than the second reverse available bandwidth in the PACK message, the first transmission device replaces the second reverse available bandwidth with the first reverse available bandwidth, thereby providing a stable transmission path for the first device and the second device.

[0033] In a possible implementation, the above step: the first transmission device processes the periodic confirmation message according to the first reverse available bandwidth, including: if the periodic confirmation message does not include the reverse available bandwidth, the first transmission device writes the first reverse available bandwidth into the periodic confirmation message.

[0034] In a possible implementation, the above step: the first transmission device processes the periodic confirmation message according to the first reverse available bandwidth, including: if the first reverse available bandwidth is greater than the second reverse available bandwidth carried in the periodic confirmation message, the first transmission device directly sends the periodic confirmation message.

[0035] In a possible implementation, the method further includes: the first transmission device determines, according to a bandwidth request identifier in the second handshake message, an available bandwidth for the second device to send data to the first device.

[0036] A fourth aspect of the present application provides a communication device, the communication device comprising:

[0037] A transceiver module, configured to send a first handshake message, wherein the first handshake message is used for the first device to negotiate available bandwidth with at least one transmission device, wherein the at least one transmission device is a device on a transmission path between the first device and the second device;

[0038] The transceiver module is further used to receive a second handshake message, where the second handshake message includes a first available bandwidth, where the first available bandwidth is used to indicate a first rate at which the first device and the second device perform data transmission;

[0039] A processing module, configured to control the delay to a first duration after receiving the second handshake message;

[0040] The transceiver module is also used to send data at a first rate after the processing module controls the delay for a first time period.

[0041] In a possible implementation, the transceiver module is used to receive a periodic confirmation message, which includes a second available bandwidth. The second available bandwidth is used to indicate that the first device will update the data transmission rate with the second device to the second rate indicated by the second available bandwidth.

[0042] In a possible implementation, the first available bandwidth is a stream-level available bandwidth or a host-level available bandwidth. The stream-level available bandwidth is used to transmit data streams, and the host-level available bandwidth includes multiple stream-level available bandwidths.

[0043] In a possible implementation, the first duration is a period for generating a periodic confirmation message.

[0044] In one possible implementation, the first time length is the difference between the round-trip delay of the first data stream transmitted by the first transmission device and the round-trip delay of the second data stream, wherein the first transmission device is included in at least one transmission device, the round-trip delay of the first data stream is the data stream with the largest round-trip delay among the multiple data streams transmitted by the first transmission device, and the round-trip delay of the second data stream is the data stream with the smallest round-trip delay among the multiple data streams transmitted by the first transmission device.

[0045] In a possible implementation, the first available bandwidth is negatively correlated with the port outbound queue length of the second transmission device, and the second transmission device is a transmission device that provides the smallest available bandwidth for the first device and the second device among the at least one transmission device.

[0046] In a possible implementation, the transceiver module is further configured to send a third handshake message, where the third handshake message includes an available bandwidth for the second device to send data to the first device.

[0047] A fifth aspect of the present application provides a communication device, the communication device comprising:

[0048] a transceiver module, configured to send a second handshake message after receiving a first handshake message, wherein the first handshake message is used for the first device to negotiate an available bandwidth with at least one transmission device, wherein the at least one transmission device is a device on a transmission path between the first device and the second device, and the second handshake message is used to transmit a first available bandwidth to the first device, wherein the first available bandwidth is used to indicate a first rate at which the first device and the second device perform data transmission;

[0049] A processing module, configured to send a periodic production periodic confirmation message in each confirmation period after the transceiver module sends the second handshake message;

[0050] The transceiver module is also used to send a periodic confirmation message in each confirmation period, and the periodic confirmation message is used to collect the second available bandwidth of the transmission path between the first device and the second device in the corresponding confirmation period. The second available bandwidth is used to indicate that the first device will update the rate of data transmission with the second device to the second rate indicated by the second available bandwidth.

[0051] In a possible implementation, the first available bandwidth is a stream-level available bandwidth or a host-level available bandwidth. The stream-level available bandwidth is used to transmit data streams, and the host-level available bandwidth includes multiple stream-level available bandwidths.

[0052] In a possible implementation, the first available bandwidth is negatively correlated with the port outbound queue length of the second transmission device, and the second transmission device is a transmission device that provides the smallest available bandwidth for the first device and the second device among the at least one transmission device.

[0053] In a possible implementation, the transceiver module is further configured to receive a third handshake message, where the third handshake message includes an available bandwidth for the second device to send data to the first device.

[0054] The processing module is further configured to delay for a second time period after receiving the third handshake message.

[0055] The transceiver module is further configured to send data to the first device at a rate indicated by an available bandwidth for sending data to the first device after the processing module controls the delay for the second time period.

[0056] A sixth aspect of the present application provides a communication device, the communication device comprising:

[0057] A transceiver module, configured to receive a periodic confirmation message, wherein the first transmission device is a device on a transmission path between the first device and the second device, and the periodic confirmation message is sent by the second device;

[0058] The processing module is used to determine a first reverse available bandwidth in a confirmation period where the periodic confirmation message is located, where the first reverse available bandwidth is an available bandwidth provided by the first transmission device for transmitting a data stream from the first device to the second device; and process the periodic confirmation message according to the first reverse available bandwidth.

[0059] In a possible implementation manner, the processing module is specifically configured to replace the second reverse available bandwidth with the first reverse available bandwidth if the first reverse available bandwidth is smaller than the second reverse available bandwidth carried in the periodic confirmation message.

[0060] In a possible implementation manner, the processing module is specifically configured to write the first reverse available bandwidth into the periodic confirmation message if the periodic confirmation message does not include the reverse available bandwidth.

[0061] In a possible implementation, the processing module is specifically configured to trigger the transceiver module to directly send the periodic confirmation message if the first reverse available bandwidth is greater than the second reverse available bandwidth carried in the periodic confirmation message.

[0062] In a possible implementation, the processing module is further configured to determine, according to a bandwidth request identifier in the second handshake message, an available bandwidth for the second device to send data to the first device.

[0063] In a seventh aspect, the present application provides a communication device, comprising: a processor, a memory, and a transceiver. The memory stores a computer program or a computer instruction, the processor is used to call and run the computer program or the computer instruction stored in the memory, so that the processor implements the processing operation in the first aspect and any one of the implementations of the first aspect, and the transceiver is used to send and receive signals, such as: implementing the operations of receiving and sending in the first aspect and any one of the implementations of the first aspect.

[0064] In an eighth aspect, the present application provides a communication device, the communication device comprising: a processor, a memory, and a transceiver. The memory stores a computer program or a computer instruction, the processor is used to call and run the computer program or the computer instruction stored in the memory, so that the processor implements the processing operation in the second aspect and any one of the implementations of the second aspect, and the transceiver is used to send and receive signals, such as: implementing the receiving and sending operations in the second aspect and any one of the implementations of the second aspect.

[0065] In a ninth aspect of the present application, a communication device is provided, the communication device comprising: a processor, a memory, and a transceiver. The memory stores a computer program or a computer instruction, the processor is used to call and run the computer program or the computer instruction stored in the memory, so that the processor implements the processing operation in the third aspect and any one of the implementations of the third aspect, and the transceiver is used to send and receive signals, such as: implementing the receiving and sending operations in the third aspect and any one of the implementations of the third aspect.

[0066] A tenth aspect of the present application provides a communication device, which includes a processor, and the processor is used to execute the first aspect and any one of the implementation methods in the first aspect.

[0067] In an eleventh aspect of the present application, a communication device is provided, which includes a processor, and the processor is used to execute the second aspect and any one of the implementation methods in the second aspect.

[0068] A twelfth aspect of the present application provides a communication device, which includes a processor, and the processor is used to execute the third aspect and any one of the implementation methods in the third aspect.

[0069] The thirteenth aspect of the present application provides a computer-readable storage medium, comprising computer instructions, which, when executed on a computer, enables the computer to execute the first aspect and any one of the implementation methods in the first aspect.

[0070] The fourteenth aspect of the present application provides a computer-readable storage medium, comprising computer instructions, which, when executed on a computer, enables the computer to execute the second aspect and any one of the implementation methods in the second aspect.

[0071] The fifteenth aspect of the present application provides a computer-readable storage medium, including computer instructions. When the instructions are executed on a computer, the computer executes the third aspect and any one of the implementation methods in the third aspect.

[0072] The sixteenth aspect of the present application provides a computer program product comprising instructions, which, when executed on a computer, enables the computer to execute the first aspect and any one of the implementation methods in the first aspect.

[0073] The seventeenth aspect of the present application provides a computer program product comprising instructions, which, when executed on a computer, enables the computer to execute the second aspect and any one of the implementation methods in the second aspect.

[0074] An eighteenth aspect of the present application provides a computer program product comprising instructions, which, when executed on a computer, enables the computer to execute the third aspect and any one of the implementation methods in the third aspect.

[0075] A nineteenth aspect of the present application provides a chip device, including a processor, for calling a computer program or computer instruction in the memory so that the processor executes the first aspect and any one of the implementation methods in the first aspect.

[0076] Optionally, the processor is coupled to the memory via an interface.

[0077] The twentieth aspect of the present application provides a chip device, including a processor, for calling a computer program or computer instruction in the memory so that the processor executes the second aspect and any one of the implementation methods in the second aspect.

[0078] Optionally, the processor is coupled to the memory via an interface.

[0079] The twenty-first aspect of the present application provides a chip device, including a processor, for calling a computer program or computer instruction in the memory so that the processor executes the third aspect and any one of the implementation methods in the third aspect.

[0080] Optionally, the processor is coupled to the memory via an interface.

[0081] In aspect 22 of the present application, a communication system is provided, including: a first device, at least one transmission device and a second device, at least one transmission device being a transmission device on a transmission path between the first device and the second device, the first device being used to execute the method described in the above-mentioned first aspect and any one of the implementation methods of the first aspect, the second device being used to execute the method described in the above-mentioned second aspect and any one of the implementation methods of the second aspect, and the transmission device being used to execute the method described in the above-mentioned third aspect and any one of the implementation methods of the third aspect.

[0082] As mentioned above, the technical effects of the fourth, seventh, tenth, thirteenth, sixteenth and nineteenth aspects of the present application can be understood by participating in the technical effects of the first aspect and any one of the implementations of the first aspect. The technical effects of the fifth, eighth, eleventh, fourteenth, seventeenth and twentieth aspects of the present application can be understood by participating in the technical effects of the second aspect and any one of the implementations of the second aspect. The technical effects of the sixth, ninth, twelfth, fifteenth, eighteenth and twenty-first aspects of the present application can be understood by participating in the technical effects of the third aspect and any one of the implementations of the third aspect. BRIEF DESCRIPTION OF THE DRAWINGS

[0083] Figure 1A It is a schematic diagram of an architecture of a communication system provided in an embodiment of the present application;

[0084] Figure 1B This is a schematic diagram of a scenario architecture of a communication system provided in an embodiment of the present application;

[0085] Figure 1C is another scenario architecture diagram of the communication system provided in an embodiment of the present application;

[0086] Figure 2 It is a schematic diagram of an embodiment of a method for data transmission provided by an embodiment of the present application;

[0087] Figure 3 is a schematic diagram of another embodiment of the method for data transmission provided by an embodiment of the present application;

[0088] Figure 4 is a schematic diagram of another embodiment of the method for data transmission provided by an embodiment of the present application;

[0089] Figure 5 is a schematic diagram of another embodiment of the method for data transmission provided by an embodiment of the present application;

[0090] Figure 6 is a schematic diagram of another embodiment of the method for data transmission provided by an embodiment of the present application;

[0091] Figure 7is a schematic diagram of another embodiment of the method for data transmission provided by an embodiment of the present application;

[0092] Figure 8 is a structural diagram of a communication device provided in an embodiment of the present application;

[0093] Fig. 9 is another structural schematic diagram of a communication device provided in an embodiment of the present application;

[0094] Fig.10 is another structural schematic diagram of a communication device provided in an embodiment of the present application;

[0095] Fig.11 is another structural schematic diagram of a communication device provided in an embodiment of the present application;

[0096] Fig.12 It is another structural schematic diagram of the communication device provided in an embodiment of the present application. DETAILED DESCRIPTION

[0097] The following describes the embodiments of the present application in conjunction with the accompanying drawings. Obviously, the described embodiments are only embodiments of a part of the present application, rather than all embodiments. It is known to those skilled in the art that with the development of technology and the emergence of new scenarios, the technical solutions provided in the embodiments of the present application are also applicable to similar technical problems.

[0098] 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 sequence. It should be understood that the data used in this way can be interchangeable where appropriate, so that the embodiments described herein can be implemented in an order other than that illustrated or described herein. In addition, the terms "including" and "having" and any of their variations are intended to cover non-exclusive inclusions, for example, a process, method, system, product or device that includes a series of steps or units is not necessarily limited to those steps or units that are clearly listed, but may include other steps or units that are not clearly listed or inherent to these processes, methods, products or devices.

[0099] The embodiment of the present application provides a method for data transmission, which is used to reduce instantaneous congestion on a transmission path. The present application also provides corresponding devices, systems, computer-readable storage media, and computer program products, etc. The following are detailed descriptions.

[0100] The data transmission method of the present application can be applied to transmission control protocol (TCP), remote direct memory access (RDMA) or other protocols or scenarios involving handshake.

[0101] Figure 1A It is a schematic diagram of the architecture of the communication system provided in an embodiment of the present application.

[0102] like Figure 1A As shown, the communication system provided by the embodiment of the present application includes a first device, at least one transmission device and a second device, and the at least one transmission device is a device on the transmission path between the first device and the second device.

[0103] In the present application, the first device may be a transmitting end, and the second device may be a receiving end, or the first device may be a receiving end and the second device may be a transmitting end. The communication between the first device and the second device may be through one or more transmission devices, and the transmission device may be a router, a switch, an optical device, a gateway or an access network device, etc. The first device and the second device may be terminal devices, or servers, or network devices, etc.

[0104] During the handshake stage, the first device can send a first handshake message. After receiving the first handshake message, the second device can send a second handshake message. After receiving the second handshake message, the first device delays for a first period of time based on the first available bandwidth in the second handshake message, and then sends data at the first rate indicated by the first available bandwidth.

[0105] Optionally, the first handshake message sent by the first device may carry a first bandwidth request identifier, and the first bandwidth request identifier is used to negotiate with at least one transmission device on the transmission path about the available bandwidth for sending data from the first device to the second device. The second handshake message sent by the second device may also carry a second bandwidth request identifier, and the second bandwidth request identifier is used to negotiate with at least one transmission device on the transmission path about the available bandwidth for sending data from the second device to the first device. After receiving the second handshake message, the first device may also send a third handshake message to the second device, and notify the second device of the rate at which data is sent to the first device through the third handshake message. The second device may also wait for the first period of time before sending data.

[0106] The solution provided in this application can be applied to a variety of communication scenarios. Figure 1B and Figure 1C Two scenarios are used as examples for introduction.

[0107] Figure 1B The figure is a schematic diagram of an architecture for a scenario in which a terminal device communicates via an access network device.

[0108] like Figure 1B As shown, in this communication scenario, the first device and the second device are both terminal devices, and the transmission device is a network device. In the handshake stage, the first device can send a first handshake message, and after the second device receives the first handshake message, it can send a second handshake message. After the first device receives the second handshake message, it delays for a first period of time according to the first available bandwidth in the second handshake message, and then sends data at the first rate indicated by the first available bandwidth.

[0109] Figure 1C The figure is a schematic diagram of an architecture in which hosts communicate through routers.

[0110] like Figure 1C As shown, in this communication scenario, the first device and the second device are both hosts, and the transmission device is a routing device. In the handshake stage, the first device can send a first handshake message. After receiving the first handshake message, the second device can send a second handshake message. After receiving the second handshake message, the first device delays for a first period of time according to the first available bandwidth in the second handshake message, and then sends data at the first rate indicated by the first available bandwidth.

[0111] In the present application, before the first device and the second device communicate, they will conduct a handshake negotiation to determine the available bandwidth for communication between the two devices, thereby determining the rate of transmitting data streams. Because the transmission device on the transmission path of the first device and the second device may transmit data streams for multiple devices, each addition of a new data stream will cause the transmission rate of other data streams to decrease, causing instantaneous congestion. In the present application, after receiving the first available bandwidth, the first device delays the first time length before sending data. Some data streams in the transmission device have completed transmission within the first time length, so when the transmission device transmits the newly added data streams to the first device and the second device, it will not cause instantaneous congestion.

[0112] above Figure 1BIn the scenario shown, the terminal device is illustrated by taking a mobile phone as an example. In fact, the terminal device can be a wireless terminal device that can receive network device scheduling and indication information. The wireless terminal device can be a device that provides voice and / or data connectivity to users, or a handheld device with wireless connection function, or other processing devices connected to a wireless modem. The wireless terminal device can communicate with one or more core networks or the Internet via a radio access network (such as a radio access network, RAN). The wireless terminal device can be a mobile terminal device, such as a mobile phone (or a "cellular" phone, mobile phone), a computer and a data card. For example, it can be a portable, pocket-sized, handheld, computer-built-in or vehicle-mounted mobile device that exchanges language and / or data with the radio access network. For example, personal communication service (PCS) phones, cordless phones, session initiation protocol (SIP) phones, wireless local loop (WLL) stations, personal digital assistants (PDAs), tablet computers (Pads), computers with wireless transceiver functions, and other devices. The wireless terminal device may also be referred to as a system, a subscriber unit, a subscriber station, a mobile station, a mobile station (MS), a remote station, an access point (AP), a remote terminal, an access terminal, a user terminal, a user agent, a subscriber station (SS), a customer premises equipment (CPE), a terminal, a user equipment (UE), a mobile terminal (MT), etc. The wireless terminal device may also be a wearable device and a next generation communication system, for example, a terminal device in a 5G network or a terminal device in a future evolved public land mobile network (PLMN) network, a terminal device in an NR communication system, etc.

[0113] above Figure 1BIn the scenario shown, the network device is illustrated by taking a base station as an example. In fact, the network device can be an entity on the network side for transmitting or receiving signals, such as a new generation base station (generation Node B, gNodeB). The network device can be a device for communicating with a mobile device. The network device can be an AP in a wireless local area network (WLAN), a base station (base transceiver station, BTS) in a global system for mobile communication (GSM) or code division multiple access (CDMA), a base station (NodeB, NB) in a wideband code division multiple access (WCDMA), an evolutionary Node B (eNB or eNodeB) in a long term evolution (LTE), or a relay station or access point, or a vehicle-mounted device, a wearable device, and a network device in a future 5G network or a network device in a future evolved public land mobile network (PLMN) network, or a gNodeB in an NR system, etc. In addition, in the embodiments of the present application, the network device provides services for the cell, and the terminal device communicates with the network device through the transmission resources used by the cell (for example, frequency domain resources, or spectrum resources). The cell can be a cell corresponding to the network device (for example, a base station), and the cell can belong to a macro base station or a base station corresponding to a small cell. The small cell here may include: a metro cell, a micro cell, a pico cell, a femto cell, etc. These small cells have the characteristics of small coverage and low transmission power, and are suitable for providing high-speed data transmission services. In addition, in other possible cases, the network device may be other devices that provide wireless communication functions for the terminal device. The embodiments of the present application do not limit the specific technology and specific device form adopted by the network device.

[0114] exist Figure 1C In the illustrated scenario, the host is illustrated by taking a server as an example, but in fact, the host can also be a physical machine of other forms or a computer device that carries a virtual machine. The routing device is illustrated by taking a router as an example, but in fact, the routing device can also be a device with routing function such as a switch or a gateway.

[0115] The communication system of the embodiment of the present application is introduced above, and the data transmission method provided by the embodiment of the present application is introduced below.

[0116] It should be noted that in the embodiments of the present application, two transmission devices are used as an example to introduce the transmission path between the first device and the second device. In fact, there may be only one transmission device or more transmission devices on the transmission path between the first device and the second device.

[0117] like Figure 2 As shown, an embodiment of the data transmission method provided in an embodiment of the present application includes:

[0118] 201. A first device sends a first handshake message. Correspondingly, a first transmission device receives the first handshake message.

[0119] The first handshake message is used for the first device to negotiate available bandwidth with at least one transmission device, where the at least one transmission device is a device on a transmission path between the first device and the second device.

[0120] 202. The first transmission device determines available bandwidth 1.

[0121] Available bandwidth 1 is an available bandwidth that the first transmission device can provide for a data stream of data transmission between the first device and the second device.

[0122] The calculation method of available bandwidth 1 can be: if there are N data streams out of the port of the current first transmission device, and the data stream between the first device and the second device is added, there are (N+1) data streams. If the total bandwidth out of the port is W, then available bandwidth 1 = W / (N+1).

[0123] 203. The first transmission device sends a first handshake message. Correspondingly, the second transmission device receives the first handshake message sent by the first transmission device.

[0124] 204. The second transmission device determines available bandwidth 2.

[0125] The calculation method of available bandwidth 2 may be based on available bandwidth 1.

[0126] 205. The second transmission device sends a first handshake message. Correspondingly, the second device receives the first handshake message sent by the second transmission device.

[0127] 206. The second device sends a second handshake message. Correspondingly, the second transmission device and the first transmission device receive and send the second handshake message respectively, and the first device receives the second handshake message.

[0128] The second handshake message received by the first device includes the first available bandwidth. If available bandwidth 1 < available bandwidth 2, the first available bandwidth is available bandwidth 1; if available bandwidth 1 > available bandwidth 2, the first available bandwidth is available bandwidth 2.

[0129] In the embodiment of the present application, the second handshake message may also negotiate an available bandwidth for sending data from the second device to the first device.

[0130] The process of determining the available bandwidth for sending data from the second device to the first device can be understood by referring to the process from step 202 to step 204, which will not be repeated here.

[0131] 207. The first device sends a third handshake message, the third handshake message includes the available bandwidth for sending data from the second device to the first device. Correspondingly, the first transmission device and the second transmission device receive and send the third handshake message respectively, and the second device receives the third handshake message.

[0132] 208. The first device sends data at the first rate after delaying for the first period of time.

[0133] The first rate is a rate indicated by the first available bandwidth.

[0134] 209. The second device sends data at a second rate after delaying for a second period of time.

[0135] The second rate is a rate indicated by available bandwidth for sending data from the second device to the first device.

[0136] In the present application, before the first device and the second device communicate, they will conduct a handshake negotiation to determine the available bandwidth for communication between the two devices, thereby determining the rate of transmitting data streams. Because the transmission device on the transmission path of the first device and the second device may transmit data streams for multiple devices, each addition of a new data stream will cause the transmission rate of other data streams to decrease, causing instantaneous congestion. In the present application, after receiving the first available bandwidth, the first device delays the first time length before sending data. Some data streams in the transmission device have completed transmission within the first time length, so when the transmission device transmits the newly added data streams to the first device and the second device, it will not cause instantaneous congestion.

[0137] In the above Figure 2In the illustrated embodiment, the first transmission device determines available bandwidth 1 through step 202. After determining available bandwidth 1, the first transmission device may write available bandwidth 1 into the first handshake message, or may not write it into the first handshake message. After the second transmission device determines available bandwidth 2 through step 204, it may write available bandwidth 2 into the first handshake message when available bandwidth 2 is less than available bandwidth 1, or may not write it into the first handshake message. If in the direction from the first device to the second device, neither the first transmission device nor the second transmission device writes the available bandwidth into the first handshake message, in the direction from the second device to the first device, the first transmission device and the second transmission device need to write the available bandwidth into the second handshake message. For these two cases, please refer to the following respectively. Figure 3 and Figure 4 Make an introduction.

[0138] like Figure 3 As shown, another embodiment of the data transmission method provided in the embodiment of the present application includes:

[0139] 301. A first device sends a first handshake message. Correspondingly, a first transmission device receives the first handshake message.

[0140] 302. The first transmission device determines available bandwidth 1 and adds available bandwidth 1 to the first handshake message.

[0141] 303. The first transmission device sends a first handshake message including available bandwidth 1. Correspondingly, the second transmission device receives the first handshake message including available bandwidth 1.

[0142] 304. The second transmission device determines available bandwidth 2, and if available bandwidth 2 is less than available bandwidth 1, replaces available bandwidth 1 in the first handshake message with available bandwidth 2.

[0143] If the available bandwidth 2> the available bandwidth 1, the second transmission device directly sends the first handshake message including the available bandwidth 1. In the embodiment of the present application, the available bandwidth 2> the available bandwidth 1 is taken as an example for description.

[0144] 305. The second transmission device sends a first handshake message (including available bandwidth 1). Correspondingly, the second device receives the first handshake message (including available bandwidth 1) sent by the second transmission device.

[0145] 306. The second device sends a second handshake message (including available bandwidth 1). Correspondingly, the second transmission device, the first transmission device and the first device receive and send the second handshake message (including available bandwidth 1) respectively.

[0146] Step 307 to step 309 may be understood by referring to step 207 to step 209.

[0147] like Figure 4 As shown, another embodiment of the data transmission method provided in the embodiment of the present application includes:

[0148] 401. A first device sends a first handshake message. Correspondingly, a first transmission device receives the first handshake message.

[0149] 402. The first transmission device determines available bandwidth 1.

[0150] 403. The first transmission device sends a first handshake message. Correspondingly, the second transmission device receives the first handshake message sent by the first transmission device.

[0151] 404. The second transmission device determines available bandwidth 2.

[0152] 405. The second transmission device sends a first handshake message. Correspondingly, the second device receives the first handshake message sent by the second transmission device.

[0153] 406. The second device sends a second handshake message. Correspondingly, the second transmission device receives the second handshake message.

[0154] 407. The second transmission device adds available bandwidth 2 to the second handshake message.

[0155] 408. The second transmission device sends a second handshake message including available bandwidth 2. Correspondingly, the first transmission device receives the second handshake message including available bandwidth 2.

[0156] 409. The first transmission device determines that available bandwidth 1 is smaller than available bandwidth 2, and replaces available bandwidth 2 in the second handshake message with available bandwidth 1.

[0157] 410. The first transmission device sends a second handshake message including available bandwidth 1. Correspondingly, the first device receives the second handshake message including available bandwidth 1.

[0158] Step 411 to step 413 may be understood by referring to step 207 to step 209 .

[0159] In the embodiment of the present application, during the handshake process, not only the available bandwidth from the first device to the second device can be provided in the handshake message, but also the available bandwidth from the second device to the first device can be provided.

[0160] like Figure 5 As shown, another embodiment of the data transmission method provided in the embodiment of the present application includes:

[0161] 501. A first device sends a first handshake message. Correspondingly, a first transmission device receives the first handshake message.

[0162] 502. The first transmission device determines available bandwidth 1 and adds available bandwidth 1 to the first handshake message.

[0163] 503. The first transmission device sends a first handshake message including available bandwidth 1. Correspondingly, the second transmission device receives the first handshake message including available bandwidth 1 sent by the first transmission device.

[0164] 504. The second transmission device determines available bandwidth 2.

[0165] 505. Available bandwidth 2 is less than available bandwidth 1, and the second transmission device sends a first handshake message including available bandwidth 1. Correspondingly, the second device receives the first handshake message including available bandwidth 1 sent by the second transmission device.

[0166] 506. The second device sends a second handshake message including available bandwidth 1. Correspondingly, the second transmission device receives the second handshake message including available bandwidth 1.

[0167] 507. The second transmission device adds the available bandwidth 3 in the direction from the second device to the first device to the second handshake message.

[0168] 508. The second transmission device sends a second handshake message including available bandwidth 1 and available bandwidth 3. Correspondingly, the first transmission device receives the second handshake message including available bandwidth 1 and available bandwidth 3.

[0169] 509. The first transmission device determines the available bandwidth 4 in the direction from the second device to the first device. If the available bandwidth 4 is less than the available bandwidth 3, the available bandwidth 3 in the second handshake message is replaced with the available bandwidth 4.

[0170] 510. The first transmission device sends a second handshake message including available bandwidth 1 and available bandwidth 4.

[0171] 511. After delaying for the first time period, the first device sends data at a rate indicated by available bandwidth 1, and receives data from the second device at a rate indicated by available bandwidth 4.

[0172] In the embodiment of the present application, during the handshake phase between the first device and the second device, the second device may also send a periodic acknowledgement (PACK) message, which is a periodically sent acknowledgement message. The periodic acknowledgement message is used to collect the second available bandwidth of the transmission path between the first device and the second device in the corresponding acknowledgement period, and the second available bandwidth is used to indicate that the first device will update the rate of data transmission with the second device to the second rate indicated by the second available bandwidth. In the direction of transmitting the PACK message from the second device to the first device, the second available bandwidth in the PACK message can also be understood as the reverse available bandwidth. The first transmission device can determine the first reverse available bandwidth in the confirmation period through the PACK message. The first reverse available bandwidth is the available bandwidth provided by the first transmission device for transmitting data streams from the first device to the second device; the first transmission device can determine whether the second reverse available bandwidth is already included in the PACK message, and then perform targeted processing on the PACK message. The second reverse available bandwidth can be added to the PACK message by the second transmission device that receives the PACK message before the first transmission device on the transmission path between the second device and the first device.

[0173] The process related to the PACK message in the embodiment of the present application can be found in Figure 6 To understand.

[0174] like Figure 6 As shown, an embodiment of the data transmission method provided in an embodiment of the present application includes:

[0175] 601. After sending the second handshake message, the second device sends a PACK message in each confirmation cycle.

[0176] After sending the second handshake message, the second device may start the PACK timer, and after reaching a confirmation cycle, it will send a PACK message.

[0177] 602. After receiving the PACK message, the second transmission device determines the reverse available bandwidth a and adds the available bandwidth a to the PACK message.

[0178] The PACK message may carry a bandwidth query request, and the second transmission device calculates a reverse available bandwidth a, which is an available bandwidth provided by the second transmission device when transmitting data from the first device to the second device.

[0179] The PACK message does not include the reverse available bandwidth, and the second transmission device may add the reverse available bandwidth a to the PACK message.

[0180] 603. The second transmission device sends a PACK message including the reverse available bandwidth a. Correspondingly, the first transmission device receives the PACK message including the reverse available bandwidth a.

[0181] 604. The first transmission device determines the reverse available bandwidth b.

[0182] The reverse available bandwidth b is the available bandwidth provided by the first transmission device when transmitting data from the first device to the second device.

[0183] 605. The first transmission device compares the reverse available bandwidth b with the reverse available bandwidth a.

[0184] 606. If the reverse available bandwidth b>the reverse available bandwidth a, the first transmission device sends a PACK message including the reverse available bandwidth a. Correspondingly, the first device receives the PACK message including the reverse available bandwidth a.

[0185] 607. If the reverse available bandwidth b is less than the reverse available bandwidth a, the first transmission device replaces the reverse available bandwidth a in the PACK message with the reverse available bandwidth b.

[0186] 608. If the reverse available bandwidth b is less than the reverse available bandwidth a, the first transmission device sends a PACK message including the reverse available bandwidth b. Correspondingly, the first device receives a PACK message including the reverse available bandwidth b.

[0187] 609. The first device updates the rate of data transmission with the second device to the second rate indicated by the reverse available bandwidth a or the reverse available bandwidth b.

[0188] It should be noted that the above reverse available bandwidth a can be understood as the second reverse available bandwidth, and the available bandwidth b can be understood as the first reverse available bandwidth. The first reverse available bandwidth can also be understood as the second bandwidth.

[0189] In the present application, the second device can send a PACK message in each confirmation cycle, and the PACK message can collect the latest reverse available bandwidth of the current confirmation cycle. In this way, in the handshake phase, the reverse available bandwidth of the current cycle can be collected through the PACK message, thereby instructing the first device to adjust the rate of sending data in time, so that the first device and the second device can respond to network changes more quickly during the data transmission process, thereby reducing the probability of congestion.

[0190] In the above-described embodiments, the first duration may be a period for generating periodic confirmation messages, that is, a period for sending PACK messages. Configuring the first duration as a period of PACK is conducive to reducing the probability of congestion on the transmission path.

[0191] In addition, the first time length may be the difference between the round-trip delay of the first data stream transmitted by the first transmission device and the round-trip delay of the second data stream, wherein the first transmission device is included in at least one transmission device, the round-trip delay of the first data stream is the data stream with the largest round-trip delay among the multiple data streams transmitted by the first transmission device, and the round-trip delay of the second data stream is the data stream with the smallest round-trip delay among the multiple data streams transmitted by the first transmission device.

[0192] In the embodiment of the present application, the first duration is configured as the difference between the longest round-trip time (RTT) and the shortest RTT, which is beneficial to better reduce the probability of congestion on the transmission path.

[0193] In addition, in an embodiment of the present application, the first available bandwidth is negatively correlated with the length of the port outbound queue of the second transmission device, and the second transmission device is a transmission device that provides the smallest available bandwidth for the first device and the second device among at least one transmission device. For example, combined with the length of the port outbound queue, on the basis of equal division based on the number of flows, multiply by a coefficient: available bandwidth = (export rate / number of flows) * coefficient; if the port outbound queue is long, the coefficient can be less than 1; if the port outbound queue is short, the coefficient can be greater than 1; if the queue is moderate, the coefficient can be equal to 1. The criteria for judging the length of the queue can be indicated by configuring a preset value.

[0194] The first available bandwidth depends on the transmission device that can provide the minimum available bandwidth on the transmission path. If the port out-queue of the transmission device is longer, it means that more data needs to be transmitted, and the available bandwidth that can be provided is smaller. Controlling the first available bandwidth through the port out-queue of the transmission device can effectively regulate the data sending rate of the first device, thereby effectively reducing the probability of congestion on the transmission path.

[0195] In the embodiment of the present application, the first available bandwidth is an available bandwidth at a stream level or an available bandwidth at a host level. The available bandwidth at the stream level is used to transmit data streams, and the available bandwidth at the host level includes multiple available bandwidths at stream levels.

[0196] In the host-level handshake scenario, the process can be seen in Figure 7 To understand.

[0197] like Figure 7 As shown, the handshake process between hosts may include:

[0198] 701. Host 1 initiates a host-level bandwidth request and sends a host-level first handshake message. Correspondingly, the first transmission device receives the host-level first handshake message.

[0199] 702. The first transmission device establishes a communication channel according to the first handshake message.

[0200] 703. If the pipeline is established successfully, the first transmission device determines the available bandwidth 1 and adds the available bandwidth 1 to the first handshake message.

[0201] 704. If the first transmission device fails to establish a pipeline, it marks resource allocation failure in the first handshake message.

[0202] 705. If the pipeline is successfully established, the first transmission device sends a first handshake message including available bandwidth 1. Correspondingly, the second transmission device receives and forwards the first handshake message including available bandwidth 1 to host 2.

[0203] 706. If the pipeline establishment fails, the first transmission device sends a first handshake message including a failure mark to the second transmission device.

[0204] 707. If the pipeline establishment of the first transmission device fails, the second transmission device establishes a communication pipeline, determines the available bandwidth 2, and adds the available bandwidth 2 to the first handshake message.

[0205] 708. The second transmission device sends a first handshake message including available bandwidth 2. Correspondingly, host 2 receives the first handshake message including available bandwidth 2.

[0206] 709. Host 2 sends a second handshake message including available bandwidth 1 or available bandwidth 2. Correspondingly, the first device receives a second handshake message including available bandwidth 1 or available bandwidth 2.

[0207] 710. Host 1 and host 2 communicate via available bandwidth 1 or available bandwidth 2.

[0208] In this possible implementation, the available bandwidth at the host level is usually the available bandwidth for communication between two hosts, and the available bandwidth between the hosts can stably transmit data for the two hosts for a long time.

[0209] The above describes the data transmission method and communication system provided by the embodiments of the present application. The following describes the communication device provided by the embodiments of the present application. Figure 8 , Figure 8 FIG. 800 is a schematic diagram of a structure of a communication device according to an embodiment of the present application. The communication device 800 may be used to perform Figures 2 to 7 For the steps performed by the first device in the embodiment shown in , please refer to the relevant introduction in the above method embodiment for details.

[0210] The communication device 800 includes a transceiver module 801 and a processing module 802. The transceiver module 801 can implement corresponding communication functions, and the processing module 802 is used for data processing. The transceiver module 801 can also be called a communication interface or a communication unit.

[0211] Optionally, the communication device 800 may further include a storage unit, which may be used to store instructions and / or data. The processing module 802 may read the instructions and / or data in the storage unit so that the communication device implements the aforementioned method embodiment.

[0212] The communication device 800 can be used to perform the actions performed by the first device in the above method embodiment. The communication device 800 can be a terminal device or a component that can be configured in a terminal device, a host or a component that can be configured in a host. The transceiver module 801 is used to perform the reception-related operations on the first device side in the above method embodiment, and the processing module 802 is used to perform the processing-related operations on the first device side in the above method embodiment.

[0213] Optionally, the transceiver module 801 may include a sending module and a receiving module. The sending module is used to perform the sending operation in the above method embodiment. The receiving module is used to perform the receiving operation in the above method embodiment.

[0214] As an example, the communication device 800 is used to perform the above Figure 2 Actions performed by the first device in the illustrated embodiment.

[0215] The transceiver module 801 is used to send a first handshake message, where the first handshake message is used for the first device to negotiate available bandwidth with at least one transmission device, where the at least one transmission device is a device on a transmission path between the first device and the second device.

[0216] The transceiver module 801 is further used to receive a second handshake message, where the second handshake message includes a first available bandwidth, where the first available bandwidth is used to indicate a first rate at which the first device and the second device perform data transmission.

[0217] The processing module 802 is configured to control a delay of a first duration after receiving the second handshake message.

[0218] The transceiver module 801 is further configured to send data at a first rate after the processing module controls the delay for a first time period.

[0219] As an example, the communication device 800 is used to perform the above Figure 3 The first device in the embodiment shown in FIG. 8 is used to perform the following operations: Figure 3 Step 301 and step 307 in the illustrated embodiment.

[0220] As an example, the communication device 800 is used to perform the above Figure 4 The first device in the embodiment shown in FIG. 8 is used to perform the following operations: Figure 4 Steps 401 and 411 in the illustrated embodiment.

[0221] As an example, the communication device 800 is used to perform the above Figure 5-Figure 6 The first device in the embodiment shown in FIG. 8 is used to perform the following operations: Figure 5-Figure 6 Steps 501, 511 and 609 in the embodiment shown.

[0222] As an example, the communication device 800 is used to perform the above Figure 7 The actions performed by the host 1 in the embodiment shown. The transceiver module 801 is used to perform Figure 7 Steps 701 and 710 in the embodiment shown.

[0223] It should be understood that the specific process of each module executing the above corresponding steps has been described in detail in the above method embodiment, and for the sake of brevity, it will not be repeated here.

[0224] The processing module 802 in the above embodiment can be implemented by at least one processor or processor-related circuit. The transceiver module 801 can be implemented by a transceiver or a transceiver-related circuit. The transceiver module 801 can also be called a communication unit or a communication interface. The storage unit can be implemented by at least one memory.

[0225] The communication device provided in the embodiment of the present application is described below. Fig. 9 , Fig. 9 900 is a schematic diagram of a structure of a communication device according to an embodiment of the present application. The communication device 900 can be used to perform Figure 2 For the steps performed by the second device in the embodiment shown in , please refer to the relevant introduction in the above method embodiment for details.

[0226] The communication device 900 includes a transceiver module 901. Optionally, the communication device 900 also includes a processing module 902. The transceiver module 901 can implement corresponding communication functions, and the processing module 902 is used to perform data processing. The transceiver module 901 can also be called a communication interface or a communication unit.

[0227] The communication device 900 can be used to execute the actions executed by the second device in the above method embodiment. The communication device 900 can be the second device or a component that can be configured in the second device. The transceiver module 901 is used to execute the reception-related operations on the second device side in the above method embodiment.

[0228] Optionally, the transceiver module 901 may include a sending module and a receiving module. The sending module is used to perform the sending operation in the above method embodiment. The receiving module is used to perform the receiving operation in the above method embodiment.

[0229] As an example, the communication device 900 is used to perform the above Figure 2 The actions performed by the second device in the illustrated embodiment.

[0230] The transceiver module 901 is used to send a second handshake message after receiving a first handshake message, where the first handshake message is used for the first device to negotiate available bandwidth with at least one transmission device, where the at least one transmission device is a device on a transmission path between the first device and the second device, and the second handshake message is used to transmit a first available bandwidth to the first device, where the first available bandwidth is used to indicate a first rate at which the first device and the second device perform data transmission.

[0231] The processing module 902 is configured to send a periodic production periodic confirmation message in each confirmation period after the transceiver module sends the second handshake message.

[0232] The transceiver module 901 is also used to send a periodic confirmation message in each confirmation period, and the periodic confirmation message is used to collect the second available bandwidth of the transmission path between the first device and the second device in the corresponding confirmation period. The second available bandwidth is used to indicate that the first device will update the rate of data transmission with the second device to the second rate indicated by the second available bandwidth.

[0233] It should be understood that the specific process of each module executing the above corresponding steps has been described in detail in the above method embodiment, and for the sake of brevity, it will not be repeated here.

[0234] The processing module 902 in the above embodiment can be implemented by at least one processor or processor-related circuit. The transceiver module 901 can be implemented by a transceiver or a transceiver-related circuit. The transceiver module 901 can also be called a communication unit or a communication interface. The storage unit can be implemented by at least one memory.

[0235] Also, see Fig. 9 , Fig. 9 It can also be a schematic diagram of a structure of a communication device according to an embodiment of the present application. The communication device 900 can be used to perform Figure 2 For the steps performed by the first transmission device or the second transmission device in the embodiment shown in , please refer to the relevant introduction in the above method embodiment for details.

[0236] The communication device 900 includes a transceiver module 901. Optionally, the communication device 900 also includes a processing module 902. The transceiver module 901 can implement corresponding communication functions, and the processing module 902 is used to perform data processing. The transceiver module 901 can also be called a communication interface or a communication unit.

[0237] The communication device 900 can be used to perform the actions performed by the first transmission device or the second transmission device in the above method embodiment. The communication device 900 can be the first transmission device or the second transmission device or a component that can be configured in the first transmission device or the second transmission device. The transceiver module 901 is used to perform the reception-related operations on the first transmission device or the second transmission device side in the above method embodiment.

[0238] Optionally, the transceiver module 901 may include a sending module and a receiving module. The sending module is used to perform the sending operation in the above method embodiment. The receiving module is used to perform the receiving operation in the above method embodiment.

[0239] As an example, the communication device 900 is used to perform the above Figure 2 The actions performed by the first transmission device or the second transmission device in the illustrated embodiment.

[0240] The transceiver module 901 is used to receive a periodic confirmation message. The first transmission device is a device on the transmission path between the first device and the second device, and the periodic confirmation message is sent by the second device.

[0241] The processing module 902 is used to determine the first reverse available bandwidth in the confirmation period where the periodic confirmation message is located, where the first reverse available bandwidth is the available bandwidth provided by the first transmission device for transmitting the data stream from the first device to the second device; and process the periodic confirmation message according to the first reverse available bandwidth.

[0242] It should be understood that the specific process of each module executing the above corresponding steps has been described in detail in the above method embodiment, and for the sake of brevity, it will not be repeated here.

[0243] The processing module 902 in the above embodiment can be implemented by at least one processor or processor-related circuit. The transceiver module 901 can be implemented by a transceiver or a transceiver-related circuit. The transceiver module 901 can also be called a communication unit or a communication interface. The storage unit can be implemented by at least one memory.

[0244] The embodiment of the present application also provides a communication device 1000. The communication device 1000 includes a processor 1010, the processor 1010 is coupled to a memory 1020, the memory 1020 is used to store computer programs or instructions and / or data, and the processor 1010 is used to execute the computer programs or instructions and / or data stored in the memory 1020, so that the method in the above method embodiment is executed.

[0245] Optionally, the communication device 1000 includes one or more processors 1010.

[0246] Alternatively, if Fig.10As shown, the communication device 1000 may further include a memory 1020 .

[0247] Optionally, the communication device 1000 may include one or more memories 1020 .

[0248] Optionally, the memory 1020 may be integrated with the processor 1010 or provided separately.

[0249] Alternatively, if Fig.10 As shown, the communication device 1000 may further include a transceiver 1030, and the transceiver 1030 is used for receiving and / or sending signals. For example, the processor 1010 is used to control the transceiver 1030 to receive and / or send signals.

[0250] As a solution, the communication device 1000 is used to implement the operations performed by the first device or the second device in the above method embodiment.

[0251] For example, the processor 1010 is used to implement processing-related operations performed by the first device or the second device in the above method embodiment, and the transceiver 1030 is used to implement transceiver-related operations performed by the first device or the second device in the above method embodiment.

[0252] As another solution, the communication device 1000 is used to implement the operations performed by the transmission device in the above method embodiment.

[0253] For example, the processor 1010 is used to implement the processing-related operations performed by the transmission device in the above method embodiment, and the transceiver 1030 is used to implement the sending and receiving-related operations performed by the transmission device in the above method embodiment.

[0254] The embodiment of the present application further provides a communication device 1100, which may be a first device or a second device or a chip. The communication device 1100 may be used to execute the operations executed by the first device or the second device in the above method embodiment.

[0255] When the communication device 1100 is a first device or a second device, Fig.11 A simplified schematic diagram of the structure of the first device or the second device is shown. Fig.11As shown, the first device or the second device includes a processor, a memory, and a transceiver, wherein the memory can store computer program codes, and the transceiver includes a transmitter 1131, a receiver 1132, a radio frequency circuit (not shown in the figure), an antenna 1133, and an input-output device (not shown in the figure). The processor is mainly used to process the communication protocol and communication data, and to control the first device or the second device, execute the software program, process the data of the software program, etc. The memory is mainly used to store software programs and data. The radio frequency circuit is mainly used for conversion between baseband signals and radio frequency signals and processing of radio frequency signals. The antenna is mainly used to transmit and receive radio frequency signals in the form of electromagnetic waves. The input-output device, such as a touch screen, a display screen, a keyboard, etc., is mainly used to receive data input by a user and output data to the user. It should be noted that some types of the first device or the second device may not have an input-output device.

[0256] When data needs to be sent, the processor performs baseband processing on the data to be sent, and then outputs the baseband signal to the RF circuit. The RF circuit performs RF processing on the baseband signal and then sends the RF signal outward in the form of electromagnetic waves through the antenna. When data is sent to the first device or the second device, the RF circuit receives the RF signal through the antenna, converts the RF signal into a baseband signal, and outputs the baseband signal to the processor. The processor converts the baseband signal into data and processes the data. For ease of explanation, Fig.11 Only one memory, processor and transceiver are shown. In the actual first device or second device product, there may be one or more processors and one or more memories. The memory may also be referred to as a storage medium or a storage device. The memory may be set independently of the processor or integrated with the processor, and the embodiments of the present application do not limit this.

[0257] In the embodiment of the present application, the antenna and the radio frequency circuit with transceiver functions can be regarded as the transceiver unit of the first device or the second device, and the processor with processing function can be regarded as the processing unit of the first device or the second device.

[0258] like Fig.11 As shown, the first device or the second device includes a processor 1110, a memory 1120, and a transceiver 1130. The processor 1110 may also be referred to as a processing unit, a processing board, a processing module, a processing device, etc., and the transceiver 1130 may also be referred to as a transceiver unit, a transceiver, a transceiver device, etc.

[0259] Optionally, the device for implementing the receiving function in the transceiver 1130 may be regarded as a receiving unit, and the device for implementing the transmitting function in the transceiver 1130 may be regarded as a transmitting unit, that is, the transceiver 1130 includes a receiver and a transmitter. A transceiver may sometimes be referred to as a transceiver, a transceiver unit, or a transceiver circuit, etc. A receiver may sometimes be referred to as a receiver, a receiving unit, or a receiving circuit, etc. A transmitter may sometimes be referred to as a transmitter, a transmitting unit, or a transmitting circuit, etc.

[0260] For example, in one implementation, the processor 1110 is configured to execute Figure 2 In the embodiment shown, the transceiver 1130 is used to perform the processing action on the first device or the second device side. Figure 2 For example, the transceiver 1130 is used to perform the transceiver operation on the first device or the second device side. Figure 2 The sending and receiving operations of steps 201, 205, 206, and 207 in the embodiment shown. The processor 1110 is configured to execute Figure 2 In the embodiment shown, the operation of delaying the first time length in step 208 or the operation of delaying the second time length in step 209. Optionally, the transceiver 1130 is further configured to execute Figure 2 The sending operation of step 208 or step 209 in the illustrated embodiment.

[0261] For example, in one implementation, the transceiver 1130 is configured to perform Figures 3 to 7 The data transmission and reception operation on the first device or the second device side in the illustrated embodiment.

[0262] It should be understood that Fig.11 This is only an example and not a limitation. The first device or the second device including the transceiver unit and the processing unit may not depend on Fig.11 The structure shown.

[0263] When the communication device 1100 is a chip, the chip includes a processor, a memory and a transceiver. The transceiver may be an input / output circuit or a communication interface; the processor may be a processing unit or a microprocessor or an integrated circuit integrated on the chip. The sending operation of the first device or the second device in the above method embodiment may be understood as the output of the chip, and the receiving operation of the first device or the second device in the above method embodiment may be understood as the input of the chip.

[0264] The embodiment of the present application further provides a communication device 1200, which can be a transmission device or a chip. The communication device 1200 can be used to execute the operations executed by the transmission device in the above method embodiment.

[0265] When the communication device 1200 is a transmission device, for example, it is a base station. Fig.12A simplified schematic diagram of the base station structure is shown. The base station includes part 1210, part 1220 and part 1230. Part 1210 is mainly used for baseband processing, controlling the base station, etc.; part 1210 is usually the control center of the base station, which can be usually called a processor, and is used to control the base station to perform the processing operations on the transmission device side in the above method embodiment. Part 1220 is mainly used to store computer program code and data. Part 1230 is mainly used for receiving and sending radio frequency signals and converting radio frequency signals to baseband signals; part 1230 can usually be called a transceiver unit, a transceiver, a transceiver circuit, or a transceiver. The transceiver unit of part 1230 can also be called a transceiver or a transceiver, etc., which includes an antenna 1233 and a radio frequency circuit (not shown in the figure), wherein the radio frequency circuit is mainly used for radio frequency processing. Optionally, the device used to implement the receiving function in part 1230 can be regarded as a receiver, and the device used to implement the sending function can be regarded as a transmitter, that is, part 1230 includes a receiver 1232 and a transmitter 1231. A receiver may also be referred to as a receiving unit, a receiver, or a receiving circuit, etc., and a transmitter may be referred to as a transmitting unit, a transmitter, or a transmitting circuit, etc.

[0266] Part 1210 and part 1220 may include one or more single boards, each of which may include one or more processors and one or more memories. The processor is used to read and execute the program in the memory to realize the baseband processing function and the control of the base station. If there are multiple single boards, each single board can be interconnected to enhance the processing capability. As an optional implementation, multiple single boards may share one or more processors, or multiple single boards may share one or more memories, or multiple single boards may share one or more processors at the same time.

[0267] For example, in one implementation, the transceiver unit of part 1230 is used to execute Figure 2 The steps related to sending and receiving are performed by the transmission device in the embodiment shown. The processor in part 1210 is used to perform Figure 2 The illustrated embodiment relates to the processing steps performed by the transmission device.

[0268] It should be understood that Fig.12 This is only an example and not a limitation. The transmission device including the processor, the memory and the transceiver may not rely on Fig.12 The structure shown.

[0269] When the communication device 1200 is a chip, the chip includes a transceiver, a memory and a processor. The transceiver may be an input / output circuit or a communication interface; the processor may be a processor or a microprocessor or an integrated circuit integrated on the chip. The sending operation of the transmission device in the above method embodiment may be understood as the output of the chip, and the receiving operation of the transmission device in the above method embodiment may be understood as the input of the chip.

[0270] An embodiment of the present application also provides a computer-readable storage medium on which computer instructions are stored for implementing the method executed by the first device or the second device in the above method embodiment, or the method executed by the transmission device.

[0271] For example, when the computer program is executed by a computer, the computer can implement the method executed by the first device or the second device in the above method embodiment, or the method executed by the transmission device.

[0272] An embodiment of the present application also provides a computer program product comprising instructions, which, when executed by a computer, enables the computer to implement the method executed by the first device or the second device in the above method embodiment, or the method executed by the transmission device.

[0273] An embodiment of the present application further provides a communication system, which includes the transmission device in the above embodiment and the first device or the second device.

[0274] The present application also provides a chip device, including a processor, configured to call a computer program or computer instruction stored in the memory, so that the processor executes the above Figures 2 to 7 The data transmission method of the embodiment is shown.

[0275] In a possible implementation, the input of the chip device corresponds to the above Figures 2 to 7 In the receiving operation of the embodiment shown, the output of the chip device corresponds to the above Figures 2 to 7 The sending operation in the embodiment shown.

[0276] Optionally, the processor is coupled to the memory via an interface.

[0277] Optionally, the chip device further comprises a memory, in which computer programs or computer instructions are stored.

[0278] The processor mentioned in any of the above places can be a general-purpose central processing unit, a microprocessor, an application-specific integrated circuit (ASIC), or one or more processors for controlling the above Figures 2 to 7 The integrated circuit for executing the program of the data transmission method of the embodiment shown. The memory mentioned in any of the above places can be a read-only memory (ROM) or other types of static storage devices that can store static information and instructions, a random access memory (RAM), etc.

[0279] Those skilled in the art can clearly understand that, for the sake of convenience and brevity of description, the explanation of the relevant contents and beneficial effects in any of the communication devices provided above can refer to the corresponding method embodiments provided above, and will not be repeated here.

[0280] In an embodiment of the present application, the first device or the second device or the transmission device may include a hardware layer, an operating system layer running on the hardware layer, and an application layer running on the operating system layer. Among them, the hardware layer may include hardware such as a central processing unit (CPU), a memory management unit (MMU), and a memory (also called main memory). The operating system of the operating system layer may be any one or more computer operating systems that implement business processing through processes, such as Linux operating system, Unix operating system, Android operating system, iOS operating system, or Windows operating system. The application layer may include applications such as browsers, address books, word processing software, and instant messaging software.

[0281] Those skilled in the art can 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.

[0282] In the several embodiments provided in the present application, it should be understood that the disclosed systems, devices and methods can be implemented in other ways. For example, the device embodiments described above are only schematic. For example, the division of the units is only a logical function division. There may be other division methods in actual implementation, such as multiple units or components can be combined or integrated into another system, or some features can be ignored or not executed. Another point is that the mutual coupling or direct coupling or communication connection shown or discussed can be an indirect coupling or communication connection through some interfaces, devices or units, which can be electrical, mechanical or other forms.

[0283] The units described as separate components may or may not be physically separated, and the components shown as units may or may not be physical units, that is, they may be located in one place or distributed on multiple network units. Some or all of the units may be selected according to actual needs to achieve the purpose of the solution of this embodiment.

[0284] In addition, each functional unit in each embodiment of the present application may be integrated into one processing unit, or each unit may exist physically separately, or two or more units may be integrated into one unit. The above-mentioned integrated unit may be implemented in the form of hardware or in the form of software functional units.

[0285] If the integrated unit is implemented in the form of a software functional unit and sold or used as an independent product, it can be stored in a computer-readable storage medium. Based on this understanding, the part that essentially contributes to the technical solution of the present application or all or part of the technical solution can be embodied in the form of a software product, and the computer software product is stored in a storage medium, including a number of instructions for a computer device (which can be a personal computer, a server, or a network device, etc.) to perform all or part of the steps of the method described in each embodiment of the present application. The aforementioned storage medium includes: various media that can store program codes, such as a USB flash drive, a mobile hard disk, a read-only memory, a random access memory, a magnetic disk or an optical disk.

Claims

1. A method for data transmission, characterized in that: During the handshake phase between the first device and the second device, the method includes: The first device sends a first handshake message, where the first handshake message is used for the first device to negotiate available bandwidth with at least one transmission device, where the at least one transmission device is a device on a transmission path between the first device and the second device; The first device receives a second handshake message, where the second handshake message includes a first available bandwidth, where the first available bandwidth is used to indicate a first rate at which the first device and the second device perform data transmission; After receiving the second handshake message, the first device delays for a first time period and then sends data at the first rate.

2. The method according to claim 1, characterized in that The method further comprises: The first device receives a periodic confirmation message, wherein the periodic confirmation message includes a second available bandwidth, and the second available bandwidth is used to indicate that the first device updates a rate of data transmission with the second device to a second rate indicated by the second available bandwidth.

3. The method according to claim 1, characterized in that The first available bandwidth is a stream-level available bandwidth or a host-level available bandwidth. The stream-level available bandwidth is used to transmit data streams. The host-level available bandwidth includes multiple stream-level available bandwidths.

4. The method according to any one of claims 1 to 3, characterized in that: The first time length is a period for generating periodic confirmation messages.

5. The method according to any one of claims 1 to 3, characterized in that: The first duration is the difference between the round-trip delay of the first data stream transmitted by the first transmission device and the round-trip delay of the second data stream, wherein the first transmission device is included in the at least one transmission device, the round-trip delay of the first data stream is the data stream with the largest round-trip delay among the multiple data streams transmitted by the first transmission device, and the round-trip delay of the second data stream is the data stream with the smallest round-trip delay among the multiple data streams transmitted by the first transmission device.

6. The method according to any one of claims 1 to 5, characterized in that: The first available bandwidth is negatively correlated with a port outbound queue length of a second transmission device, and the second transmission device is a transmission device that provides the smallest available bandwidth for the first device and the second device among the at least one transmission device.

7. A method for data transmission, characterized in that: During the handshake phase between the first device and the second device, the method includes: After receiving the first handshake message, the second device sends a second handshake message, where the first handshake message is used for the first device to negotiate available bandwidth with at least one transmission device, where the at least one transmission device is a device on a transmission path between the first device and the second device, and the second handshake message is used to transmit a first available bandwidth to the first device, where the first available bandwidth is used to indicate a first rate at which the first device and the second device perform data transmission; After sending the second handshake message, the second device sends a periodic confirmation message in each confirmation period, and the periodic confirmation message is used to collect the second available bandwidth of the transmission path between the first device and the second device in the corresponding confirmation period, and the second available bandwidth is used to indicate that the first device will update the rate of data transmission with the second device to the second rate indicated by the second available bandwidth.

8. The method according to claim 7, characterized in that The first available bandwidth is a stream-level available bandwidth or a host-level available bandwidth. The stream-level available bandwidth is used to transmit data streams. The host-level available bandwidth includes multiple stream-level available bandwidths.

9. The method according to claim 7 or 8, characterized in that: The first available bandwidth is negatively correlated with a port outbound queue length of a second transmission device, and the second transmission device is a transmission device that provides the smallest available bandwidth for the first device and the second device among the at least one transmission device.

10. A method for data transmission, characterized in that: During the handshake phase between the first device and the second device, the method includes: A first transmission device receives a periodic confirmation message, where the first transmission device is a device on a transmission path between the first device and the second device, and the periodic confirmation message is sent by the second device; The first transmission device determines a first reverse available bandwidth in a confirmation period where the periodic confirmation message is located, where the first reverse available bandwidth is an available bandwidth provided by the first transmission device for transmitting a data stream from the first device to the second device; The first transmission device processes the periodic confirmation message according to the first reverse available bandwidth.

11. The method according to claim 10, characterized in that The first transmission device processes the periodic confirmation message according to the first reverse available bandwidth, including: If the first reverse available bandwidth is smaller than the second reverse available bandwidth carried in the periodic confirmation message, the first transmission device replaces the second reverse available bandwidth with the first reverse available bandwidth.

12. The method according to claim 10, characterized in that The first transmission device processes the periodic confirmation message according to the first reverse available bandwidth, including: If the periodic confirmation message does not include the reverse available bandwidth, the first transmission device writes the first reverse available bandwidth into the periodic confirmation message.

13. The method according to claim 10, characterized in that The first transmission device processes the periodic confirmation message according to the first reverse available bandwidth, including: If the first reverse available bandwidth is greater than the second reverse available bandwidth carried in the periodic confirmation message, the first transmission device directly sends the periodic confirmation message.

14. A communication device, characterized in that: The communication device includes a transceiver module and a processing module, the transceiver module is used to perform the transceiver operation of the method described in any one of claims 1-6, 7-9 and 10-13, and the processing module is used to perform the processing operation of the method described in any one of claims 1-6, 7-9 and 10-13.

15. A communication device, characterized in that: The communication device comprises: Memory, for storing computer instructions; A processor, configured to execute a computer program or computer instructions stored in the memory, so that the communication device executes the method according to any one of claims 1-6, 7-9 and 10-13.

16. A communication device, characterized in that: The communication device comprises a processor configured to execute the method of any one of claims 1-6, 7-9, and 10-13.

17. A computer-readable storage medium, characterized in that: A computer program is stored thereon, and when the computer program is executed by a communication device, the communication device executes the method according to any one of claims 1-6, 7-9 and 10-13.

18. A computer program product comprising program instructions, characterized in that When the program instructions are executed on a computer, the computer is caused to execute the method according to any one of claims 1 to 6, 7 to 9 and 10 to 13.

19. A communication system, characterized in that: include: A first device, a transmission device, and a second device, wherein the first device is used to execute the method as claimed in any one of claims 1 to 6, the second device is used to execute the method as claimed in any one of claims 7 to 9, and the transmission device is used to execute the method as claimed in any one of claims 10 to 13.