WO2021248886A1 - 数据传输方法、发送侧设备和接收侧设备 - Google Patents
数据传输方法、发送侧设备和接收侧设备 Download PDFInfo
- Publication number
- WO2021248886A1 WO2021248886A1 PCT/CN2020/140851 CN2020140851W WO2021248886A1 WO 2021248886 A1 WO2021248886 A1 WO 2021248886A1 CN 2020140851 W CN2020140851 W CN 2020140851W WO 2021248886 A1 WO2021248886 A1 WO 2021248886A1
- Authority
- WO
- WIPO (PCT)
- Prior art keywords
- path
- side device
- sending
- data
- data packets
- Prior art date
Links
Images
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L47/00—Traffic control in data switching networks
- H04L47/10—Flow control; Congestion control
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L49/00—Packet switching elements
- H04L49/90—Buffering arrangements
Definitions
- This application relates to the field of data transmission, and more specifically, to a data transmission method, a sending-side device, and a receiving-side device.
- multi-path TCP multi-path TCP
- MPTCP transmission control protocol
- any two paths in a multi-path may be homogeneous paths or heterogeneous paths.
- the path is also called a channel or a link.
- the most core part of the design of MPTCP is the design of the scheduler.
- the role of the MPTCP scheduler is to decide when and how to allocate the data packets to be sent to the sub-streams corresponding to each path.
- the current MPTCP default scheduling algorithm is the minimum round trip time (minRTT) algorithm.
- the specific method of the minRTT algorithm is to detect the round trip time (RTT) of the substream corresponding to each path currently available before allocating data packets, and then first allocate the substream with the shortest RTT to full data packets, and then According to the RTT from short to long, the data packets are allocated to each path in turn.
- the existing MPTCP default scheduling algorithm (for example, the minRTT algorithm) has poor effect in some scenarios, and the aggregate transmission rate in a multipath network is low.
- the present application provides a data transmission method, a sending-side device, and a receiving-side device, which can improve the aggregate transmission rate of a multipath network.
- a data transmission method which is applied to a sending-side device, and the method includes:
- path status information includes information about delay and bandwidth
- the path of multipath data transmission includes a first path and a second path
- the first path is a multipath The path with the longest delay among all the paths of data transmission;
- the path status information of the first path and the second path calculate the first number X of data packets scheduled to the first path and the second number Y of data packets scheduled to the second path;
- the first number of X data packets are sent to the receiving side device through the first path, and the second number of Y data packets are sent to the receiving side device through the second path.
- the sequence numbers of the Y data packets sent through the second path are all less than those passed through Sequence number of X data packets sent by the first path.
- the data transmission method of the first aspect obtains path status information such as the delay and bandwidth of each path in multi-path data transmission, calculates the first number of data packets scheduled to the first path with the longest delay, and schedules them to the second path.
- the second number of data packets of the path, the sequence numbers of the second number of data packets sent through each path and the second number of data packets sent through the second path are all less than the sequence numbers of the first number of data packets sent through the first path, which can be very good
- multi-path data transmission is based on the combined data transmission of multiple transmission control protocol TCP paths of the same sending-side device and the same receiving-side device.
- the same sending-side device and the same receiving-side device refer to the data stream from the same sending-side device through multiple paths of combined data transmission to the same receiving-side device.
- Multi-path data transmission is data transmission at the MPTCP layer of the multi-path transmission control protocol.
- multi-path data transmission is based on a reliable combined data transmission based on a user datagram protocol (UDP) path (link) of the same sending-side device and the same receiving-side device.
- UDP user datagram protocol
- the bandwidth information in the path state information acquired by the sending-side device may be sent by the receiving-side device, or may be obtained by measurement by the sending-side device according to data acknowledgment (ACK) information and the like.
- ACK data acknowledgment
- At least one path in the multipath may include multiple TCP connections, the multiple TCP connections have the same source Internet Protocol (IP) address, and the multiple TCP connections have the same destination IP address.
- IP Internet Protocol
- multiple TCP connections with the same source IP address and the same destination IP address belong to the same path.
- the path status information may also include information about the use of the path's sending window and the maximum segment size (MSS) of the data packet, where the sending window is used to cache the path
- MSS maximum segment size
- any two paths in the multi-path data transmission are based on different network cards or different chips.
- one network card or one chip can correspond to one path.
- the multi-path transmission only includes the transmission of the first path and the second path, and the data packets scheduled to the first path are calculated according to the path status information of the first path and the second path.
- This possible implementation is compatible with existing TCP, that is, each data packet is scheduled one by one.
- the method before acquiring the path status information of each path in the multipath data transmission, the method further includes: performing data transmission through the minimum round-trip delay minRTT algorithm, and determining the path status of each path Path status information.
- This possible implementation uses the minRTT scheduling algorithm for data packet scheduling in the initial stage of data transmission. After the delay and bandwidth of each path, switch to the data scheduling method described above. The scheduling effect is more matched with the actual situation of each path. It is helpful to improve the aggregate transmission rate of the multi-path network.
- the data can be scheduled through the minRTT algorithm within a preset time period; or the data can be scheduled through the minRTT algorithm until the delay, bandwidth and other parameters change less than a certain threshold, or the delay, bandwidth and other parameters reach the preset value
- the sending-side device finds that there is head-of-line congestion, it switches from the minRTT algorithm to the scheduling algorithm in the embodiment of the present application.
- the method is executed when the last round of scheduling is completed and there are still data packets to be scheduled in the sending queue of the sending side device; or when a data packet enters the sending queue of the sending side device, Or executed when the sending-side device receives the data packet confirmation message sent by the receiving-side device. This allows the data transmission method to run dynamically.
- the first number X of data packets scheduled to the first path and the number of data packets scheduled to the second path are calculated.
- the second number Y includes: calculating the first number X and the second number Y according to the path status information of the first path and the second path, so that X data packets scheduled to the first path and Y scheduled to the second path A data packet arrives at the receiving device at the same time.
- calculating the first number X and the second number Y according to the path state information of the first path and the second path includes:
- L 1 is the delay of the first path
- L 2 is the delay of the second path
- B 1 is the bandwidth of the first path
- B 2 is the bandwidth of the second path
- D 1 is the transmission window of the first path
- MSS is the maximum fragment size of the data packet.
- the multi-path data transmission is also performed on a third path, and the delay of the third path is less than the delay of the first path and greater than the delay of the second path
- the method further includes : According to the path status information of the first path and the third path, and the first number X of data packets scheduled to the first path, calculate the third number Z of data packets scheduled to the third path;
- the side device sends a third number of Z data packets, and the sequence numbers of all the data packets of the Z data packets sent through the third path are less than the sequence numbers of any X data packets sent through the first path, and greater than any one of the X data packets sent through the second path.
- This possible implementation allows the last data packet in all first data packets, the last data packet in all second data packets, and the last data packet in all third data packets to pass through the first path and the second path, respectively Try to reach the receiving device at the same time as the third path.
- a data transmission method which is applied to a receiving side device, and the method includes:
- path status information includes information about delay and bandwidth
- the path of multipath data transmission includes a first path and a second path
- the first path is a multipath The path with the longest delay among all the paths of data transmission;
- the path status information of the first path and the second path calculate the first number X of data packets scheduled to the first path and the second number Y of data packets scheduled to the second path;
- the scheduling information is used to instruct the sending-side device to send the first number of X data packets to the receiving-side device through the first path, and instruct the sending-side device to send the second number to the receiving-side device through the second path Y packets.
- the multi-path data transmission is based on the combined data transmission of multiple transmission control protocol TCP paths of the same sending-side device and the same receiving-side device.
- the multi-path data transmission is data transmission at the MPTCP layer of the multi-path transmission control protocol.
- the path status information also includes information about the use of the sending window of the path and the maximum fragment size MSS of the data packet, where the sending window is used to cache the sent but not received information on the path.
- any two paths in the multi-path data transmission are based on different network cards or different chips.
- the scheduling information is further used to indicate that the sequence numbers of the Y data packets sent through the second path are all less than the sequence numbers of the X data packets sent through the first path.
- the delay information is received by the receiving-side device from the sending-side device.
- At least one path in the multipath includes multiple Transmission Control Protocol TCP connections, the multiple TCP connections have the same source Internet Protocol IP address, and the multiple TCP connections have the same purpose IP address.
- the method before acquiring the path status information of each path in the multipath data transmission, the method further includes: performing data transmission through the minimum round-trip delay minRTT algorithm, and determining the path status of each path Path status information.
- the method is executed after the receiving side device sends a data packet confirmation message to the sending side device.
- the first number X of data packets scheduled to the first path and the number of data packets scheduled to the second path are calculated.
- the second number Y includes: calculating the first number X and the second number Y according to the path status information of the first path and the second path, so that X data packets scheduled to the first path and Y scheduled to the second path A data packet arrives at the receiving device at the same time.
- calculating the first number X and the second number Y according to the path status information of the first path and the second path includes:
- L 1 is the delay of the first path
- L 2 is the delay of the second path
- B 1 is the bandwidth of the first path
- B 2 is the bandwidth of the second path
- D 1 is the transmission window of the first path
- MSS is the maximum fragment size of the data packet.
- the multi-path data transmission is also performed on a third path, and the delay of the third path is less than the delay of the first path and greater than the delay of the second path
- the method further includes : According to the path status information of the first path and the third path, and the first number X of data packets scheduled to the first path, calculate the third number Z of data packets scheduled to the third path; the scheduling information is also used to indicate
- the sending-side device sends a third number of Z data packets to the receiving-side device through the third path, and the sequence numbers of all the Z data packets sent through the third path are less than those of any X data packets sent through the first path
- the sequence number is greater than the sequence number of any Y data packets sent through the second path.
- a data transmission method is provided, which is applied to a sending-side device, including:
- path status information includes information about delay and bandwidth
- the path of multipath data transmission includes a first path and a second path
- the first path is a multipath The path with the longest delay among all the paths of data transmission;
- the data packet with sequence number N is sent through the first path at the first time, and the data packet with sequence number N-1 is sent through the second path at the second time.
- the time difference between the time and the second time is greater than the first threshold, the first threshold is determined by the path state information of the first path and the second path, and the first threshold is greater than 0.5 ms.
- the data transmission method of the third aspect determines the data packets scheduled on each path according to the path status information of each path in the multi-path data transmission, so that the path with a small delay is adjacent to another path with a large delay.
- the time difference between the sending moments of the two data packets is greater than the first threshold.
- the multi-path data transmission is based on the combined data transmission of multiple transmission control protocol TCP paths of the same sending-side device and the same receiving-side device.
- the multi-path data transmission is data transmission of the MPTCP layer of the multi-path transmission control protocol
- the sequence number is the MPTCP sequence number
- any two paths in the multi-path data transmission are based on different network cards or different chips.
- the first threshold is positively correlated with the delay of the first path, and negatively correlated with the delay of the second path.
- the first threshold is negatively correlated with the bandwidth of the first path, and positively correlated with the bandwidth of the second path.
- the first threshold is positively correlated with the amount of data already existing in the sending window of the first path, and negatively correlated with the amount of data already existing in the sending window of the second path.
- the first threshold is greater than 2 ms.
- a transmitting-side device including: an acquisition module for acquiring path status information of each path in multi-path data transmission, where the path status information includes information about delay and bandwidth, and the multipath
- the data transmission path includes a first path and a second path.
- the first path is the path with the longest delay among all paths of multi-path data transmission; Path status information, calculating the first number X of data packets scheduled to the first path and the second number Y of data packets scheduled to the second path; the sending module is used to send the first number to the receiving device through the first path X data packets, and send a second number of Y data packets to the receiving device through the second path, and the sequence numbers of the Y data packets sent through the second path are all less than the sequence numbers of the X data packets sent through the first path.
- the multipath transmission only includes the transmission of the first path and the second path
- the processing module is specifically configured to calculate the first number X before scheduling each data packet of the sending side device.
- the second number Y; the sending module is specifically configured to allocate a data packet currently to be allocated by the sending side device to the second path when the second number Y is greater than zero and the sending window of the second path has remaining space, otherwise A data packet currently to be allocated is allocated to the first path.
- the processing module is further configured to: before the acquiring module acquires the path status information of each path in the multipath data transmission, perform data transmission through the minimum round-trip delay minRTT algorithm, and determine Path status information for each path.
- the acquiring module, the processing module, and the sending module perform operations when the sending-side device receives the data packet confirmation message sent by the receiving-side device.
- the processing module is specifically configured to: calculate the first number X and the second number Y according to the path status information of the first path and the second path, so as to make the scheduling to the first path X data packets and Y data packets scheduled to the second path arrive at the receiving side device at the same time.
- the second number Y is 1; where L 1 is the delay of the first path, L 2 is the delay of the second path, B 1 is the bandwidth of the first path, B 2 is the bandwidth of the second path, and D 1 is The amount of data already existing in the sending window of the first path, D 2 is the amount of data already existing in the sending window of the second path, and MSS is the maximum fragment size of the data packet.
- the multi-path data transmission is also performed on the third path, and the delay of the third path is less than the delay of the first path and greater than the delay of the second path
- the processing module further It is used to calculate the third number Z of data packets scheduled to the third path according to the path status information of the first path and the third path, and the first number X of data packets scheduled to the first path; the sending module also uses Yu: Send a third number of Z data packets to the receiving device through the third path, and the sequence numbers of all the Z data packets sent through the third path are less than the sequence numbers of any X data packets sent through the first path , And greater than any sequence number of Y data packets sent through the second path.
- a receiving side device including: an acquisition module for acquiring path status information of each path in multipath data transmission, where the path status information includes information about delay and bandwidth, and the multipath
- the data transmission path includes a first path and a second path.
- the first path is the path with the longest delay among all paths of multi-path data transmission; Path status information, calculating the first number X of data packets scheduled to the first path and the second number Y of data packets scheduled to the second path; the sending module is used to send scheduling information to the sending side device, and the scheduling information is used to Instruct the sending-side device to send a first number of X data packets to the receiving-side device through the first path, and instruct the sending-side device to send a second number of Y data packets to the receiving-side device through the second path.
- the processing module is further configured to: before the acquiring module acquires the path status information of each path in the multi-path data transmission, perform data transmission through the minimum round-trip delay minRTT algorithm, and determine Path status information for each path.
- the acquiring module, the processing module, and the sending module perform operations.
- the processing module is specifically configured to: calculate the first number X and the second number Y according to the path status information of the first path and the second path, so that the number X and the second number Y are scheduled to be assigned to the first path X data packets and Y data packets scheduled to the second path arrive at the receiving side device at the same time.
- the second number Y is 1; where L 1 is the delay of the first path, L 2 is the delay of the second path, B 1 is the bandwidth of the first path, B 2 is the bandwidth of the second path, and D 1 is The amount of data already existing in the sending window of the first path, D 2 is the amount of data already existing in the sending window of the second path, and MSS is the maximum fragment size of the data packet.
- the multi-path data transmission is also performed on the third path, and the delay of the third path is less than the delay of the first path and greater than the delay of the second path
- the processing module further It is used to calculate the third number Z of data packets scheduled to the third path according to the path state information of the first path and the third path, and the first number X of data packets scheduled to the first path; the scheduling information is also used
- the sequence numbers of all the data packets of the Z data packets sent through the third path are less than any one of the X data packets sent through the first path
- the sequence number of the packet is greater than the sequence number of any one of the Y data packets sent through the second path.
- a device on the sending side including: an acquisition module for acquiring path status information of each path in multi-path data transmission, where the path status information includes information about delay and bandwidth, and the multipath
- the data transmission path includes a first path and a second path.
- the first path is the path with the longest delay among all paths of multi-path data transmission; Path status information.
- a data packet with a sequence number of N is sent through the first path, and a data packet with a sequence number of N-1 is sent through the second path at the second time.
- the time difference between the first time and the second time is greater than the first time.
- a threshold, the first threshold is determined by the path status information of the first path and the second path, and the first threshold is greater than 0.5 ms.
- the multi-path data transmission is based on the combined data transmission of multiple transmission control protocol TCP paths of the same sending-side device and the same receiving-side device.
- the multipath data transmission is data transmission of the MPTCP layer of the multipath transmission control protocol
- the sequence number is the MPTCP sequence number
- any two paths in the multipath data transmission are based on different network cards or different chips.
- the first threshold is positively correlated with the delay of the first path, and negatively correlated with the delay of the second path.
- the first threshold is negatively correlated with the bandwidth of the first path, and positively correlated with the bandwidth of the second path.
- the first threshold is positively correlated with the amount of data already existing in the sending window of the first path, and negatively correlated with the amount of data already existing in the sending window of the second path.
- the first threshold is greater than 2 ms.
- a sending-side device including a processor and a memory, the processor is coupled to the memory, the memory is used to store computer programs or instructions, and the processor is used to execute the computer programs or instructions in the memory to execute the first aspect Or the method in any possible implementation of the first aspect.
- the sending-side device further includes a communication interface, and the processor is coupled with the communication interface.
- the communication interface may be a transceiver, or an input/output interface.
- processors there are one or more processors and one or more memories.
- the memory may be integrated with the processor, or the memory and the processor may be provided separately.
- ROM Read only memory
- the memory can be non-transitory (non-transitory) memory, for example, only set in different On the chip.
- sending instruction information may be a process of outputting instruction information from the processor
- receiving capability information may be a process of the processor receiving input capability information.
- the processed output data may be output to the transmitter, and the input data received by the processor may come from the receiver.
- the transmitter and receiver can be collectively referred to as a transceiver.
- a receiving-side device including a processor and a memory, the processor is coupled to the memory, the memory is used to store computer programs or instructions, and the processor is used to execute the computer programs or instructions in the memory to execute the second aspect Or the method in any possible implementation of the second aspect.
- the receiving side device further includes a communication interface, and the processor is coupled with the communication interface.
- the communication interface may be a transceiver, or an input/output interface.
- processors there are one or more processors and one or more memories.
- the memory may be integrated with the processor, or the memory and the processor may be provided separately.
- ROM Read only memory
- the memory can be non-transitory (non-transitory) memory, for example, only set in different On the chip.
- sending instruction information may be a process of outputting instruction information from the processor
- receiving capability information may be a process of the processor receiving input capability information.
- the processed output data may be output to the transmitter, and the input data received by the processor may come from the receiver.
- the transmitter and receiver can be collectively referred to as a transceiver.
- a sending-side device including a processor and a memory, the processor is coupled to the memory, the memory is used to store computer programs or instructions, and the processor is used to execute the computer programs or instructions in the memory to execute the third aspect Or the method in any possible implementation of the third aspect.
- the sending-side device further includes a communication interface, and the processor is coupled with the communication interface.
- the communication interface may be a transceiver, or an input/output interface.
- processors there are one or more processors and one or more memories.
- the memory may be integrated with the processor, or the memory and the processor may be provided separately.
- ROM Read only memory
- the memory can be non-transitory (non-transitory) memory, for example, only set in different On the chip.
- sending instruction information may be a process of outputting instruction information from the processor
- receiving capability information may be a process of the processor receiving input capability information.
- the processed output data may be output to the transmitter, and the input data received by the processor may come from the receiver.
- the transmitter and receiver can be collectively referred to as a transceiver.
- a computer-readable storage medium which stores a computer program or instruction, and the computer program or instruction is used to implement the first aspect and the method in any one of the possible implementation manners of the first aspect.
- a computer-readable storage medium which stores a computer program or instruction, and the computer program or instruction is used to implement the second aspect and the method in any one of the possible implementation manners of the second aspect.
- a computer-readable storage medium which stores a computer program or instruction, and the computer program or instruction is used to implement the third aspect and the method in any one of the possible implementation manners of the third aspect.
- Figure 1 is a schematic diagram of an example of MPTCP usage scenarios.
- Figure 2 is a schematic diagram of performing data scheduling under the existing minRTT algorithm.
- Figure 3 is a schematic diagram of the actual situation of the two-path downloading process in a strong and weak dual-path downloading scenario.
- Figure 4 is a schematic diagram of a fast path low bandwidth utilization scenario.
- Figure 5 is a schematic diagram of a packet loss scenario for a receiving device.
- Fig. 6 is a schematic diagram of a packet loss scenario of an intermediate network device.
- Fig. 7 is a schematic diagram of the principle of the existing minRTT algorithm.
- Fig. 8 is a schematic diagram of the principle of the existing minRTT algorithm.
- Fig. 9 is a schematic diagram of a device-cloud communication mode scenario according to an embodiment of the present application.
- Fig. 10 is a schematic diagram of an end-to-end communication mode scenario of an embodiment of the present application.
- Fig. 11 is a schematic diagram of a cloud-cloud communication mode scenario according to an embodiment of the present application.
- FIG. 12 is a schematic flowchart of a data scheduling method according to an embodiment of the present application.
- FIG. 13 is a schematic diagram of a data scheduling method according to an embodiment of the present application.
- Fig. 14 is a schematic diagram of data packet allocation according to an embodiment of the present application.
- FIG. 15 is another schematic diagram of data packet distribution according to an embodiment of the present application.
- FIG. 16 is a schematic flowchart of a data transmission method according to another embodiment of the present application.
- FIG. 17 is a schematic flowchart of a data transmission method according to another embodiment of the present application.
- FIG. 18 is a schematic block diagram of a sending-side device according to an embodiment of the present application.
- FIG. 19 is a schematic block diagram of a sending-side device according to another embodiment of the present application.
- FIG. 20 is a schematic block diagram of a receiving side device according to an embodiment of the present application.
- FIG. 21 is a schematic block diagram of a receiving side device according to another embodiment of the present application.
- FIG. 22 is a schematic block diagram of a sending-side device according to an embodiment of the present application.
- FIG. 23 is a schematic block diagram of a sending-side device according to another embodiment of the present application.
- the multi-path data transmission in this application is based on the combined data transmission of multiple TCP paths (links) of the same sending-side device and the same receiving-side device.
- the multi-path data transmission is data transmission at the MPTCP layer.
- the multi-path data transmission is based on the reliable combined data transmission on the user datagram protocol (user datagram protocol, UDP) path (link) based on the same sending-side device and the same receiving-side device , But this application is not limited to this.
- the same sending-side device and the same receiving-side device refer to the data stream from the same sending-side device through multiple paths of combined data transmission to the same receiving-side device.
- the data source of the data stream sent by the sending-side device to the receiving-side device may be the sending-side device, or one or more other devices.
- the scenario where the data source of the data stream is multiple other devices may be the following scenario.
- the data source may include multiple content delivery network (CDN) servers, and data is collected from the multiple CDN servers to a proxy server, and then sent from the proxy server to the receiving side device.
- CDN content delivery network
- the proxy server is the sending-side device.
- the serial number (the serial number of the data packet) in this application is the serial number of the data packet in the sending-side device, and the serial number of the multipath data transmission layer.
- the serial number in this application may be an MPTCP serial number, but this application is not limited to this.
- the scenarios where MPTCP corresponds to the most common use of homogeneous paths include, for example, data center networks.
- the server in the data center has multiple homogeneous Ethernet network ports, and the server performs high-speed data transmission with external devices through these network ports.
- FIG. 1 is a schematic diagram of an example of MPTCP usage scenarios.
- Terminal devices such as mobile phones
- Wi-Fi wireless fidelity
- LTE long-term evolution
- MPTCP has been submitted to the Linux kernel, and will be more and more applied to terminal devices.
- mobile phones such as Huawei, Apple, and Samsung have launched applications that can enable MPTCP.
- the existing MPTCP default scheduling algorithm (for example, the minRTT algorithm) can generally be better used in homogeneous multi-path transmission, but because the path status is constantly changing, there are also minRTT algorithms used in homogeneous multi-path transmission. There are situations where the aggregate transmission rate is low. For multi-paths with large difference in path status, the effect of the scheduling algorithm is poor, which makes the aggregate transmission rate of the existing MPTCP in the multi-path network low.
- Figure 2 is a schematic diagram of performing data scheduling under the existing minRTT algorithm.
- the sending side device Before allocating data packets, detect the RTT of the corresponding substreams of each path currently available (in this example, two paths, path 1 and path 2 are taken as examples).
- the sending side device first allocates data packets from the sending queue (MPTCP layer sliding window) in the sending buffer to the substream with the shortest RTT (substream 1 corresponding to path 1), until the sending window of path 1 (also called congestion window) 1 Full data packets are allocated. Then the sending side device allocates the data packet from the sending queue to path 2, where path 2 has a sending window 2, and path 2 corresponds to substream 2.
- Sub-flow 1 corresponding to path 1 and sub-flow 2 corresponding to path 2 pass through an in-network (in-network) device, such as a router, to reach the receiving-side device.
- the sub-stream 1 reaches the receiving window (also called the notification window) 1 of the path 1
- the sub-stream 2 reaches the receiving window 2 of the path 2.
- the data in the receiving window 1 and the receiving window 2 enters the receiving queue of the receiving buffer of the receiving side device.
- the receiving side device sends data acknowledgment (data ACK) information to the sending side device, where TCP acknowledgment (TCP ACK) information is sent through two paths respectively.
- data ACK data acknowledgment
- TCP ACK TCP acknowledgment
- FIG. 3 is a schematic diagram of the actual situation of the two-path downloading process in a strong and weak dual-path downloading scenario.
- the low aggregate transmission rate mainly includes the following three problems: 1. The problem of low bandwidth utilization of the fast path; 2. The problem of packet loss on the receiving side equipment; 3. The packet loss problem of the intermediate network equipment. These three problems together cause the current multi-path multi-path concurrent data transmission rate to be low.
- FIG 4 is a schematic diagram of a fast path low bandwidth utilization scenario.
- the delays (ie, RTT) of multiple paths have large differences, the path with a larger RTT will reduce the rate of the path with a smaller RTT, that is, the strong road is dragged down by the weak road.
- the RTT of path A is smaller, and the RTT of path B is larger.
- the allocated data packet 31-80 of path A with the smaller RTT has arrived at the receiving device, and the TCP ACK message for data packet 31-80 has been received.
- the pointer of the sending window 1 of path A is on the far right side, and path A
- the sending window 1 is empty.
- the assigned data packet 21-30 of path B with the larger RTT has been sent out, and the pointer of the sending window 2 of path B is after the data packet 21-30, but has not reached the receiving device, that is, the data packet 21-30 has not been received.
- TCP ACK information The application (APP) of the receiving side device takes out the data packets in the order of packet sequence number, so the receiving queue of the receiving buffer of the receiving side device is in a waiting state.
- the sending-side device Since the sending-side device needs to wait for the data ACK message from the receiving-side device to release the data packet in the sending buffer, when the sending buffer of the sending-side device is small, there will be a state where no data can be allocated, and the fast path (path A) will Being idle, causing a waste of fast path bandwidth.
- FIG 5 is a schematic diagram of a packet loss scenario for a receiving device.
- the delays (ie RTT) of multiple paths are quite different, and the sending buffer of the sending side device is large, the data packets of the path with a small RTT continue to arrive at the receiving side device from the fast path, which will eventually lead to the reception of the receiving side device.
- the buffer is full and the packet has to be discarded.
- the RTT of path A is smaller, and the RTT of path B is larger.
- Data packets 221-230 are allocated to path B for transmission, data packets 231-280 and data packets 281-300 are allocated to path A for transmission, and the pointer of the sending queue of the sending-side device points to the back of data packets 281-300.
- the data packets 231-280 of path A with a smaller RTT reach the receiving buffer of the receiving side device before the data packets 221-230 of path B, and the TCP ACK information for the data packets 231-280 has been received.
- the data packets 281-300 of path A have also been sent out, and the pointer of the sending window 1 of path A is after the data packets 281-300.
- the data packets 221-230 of path B have been sent, but have not yet reached the receiving buffer of the receiving device, and the pointer of the sending window 2 of path B is after the data packets 221-230.
- the arrival of data packets 231-280 makes the receiving buffer of the receiving device full.
- the data packets 281-300 of path A are about to reach the receiving buffer of the receiving device, and the data packets of path A with a small RTT are still arriving at the receiving device continuously. Because the receiving buffer of the receiving side device is full, the data packet has to be discarded, causing packet loss problems on the receiving side device.
- the existing TCP congestion control algorithm when packet loss occurs on a certain path (for example, path A), it is considered that the path is congested.
- the sending window on the path will be reduced to half of the original window size, which causes the actual sending rate of the path to drop.
- Fig. 6 is a schematic diagram of a packet loss scenario of an intermediate network device.
- the delay (ie RTT) of multiple paths when the data packet allocated on the slow path finally reaches the receiving device, the data packet will be taken out from the receiving buffer by the application of the receiving device.
- the sending-side device will receive the data ACK message from the receiving-side device, and the sending-side device will immediately allocate a large number of data packets on the fast path.
- the RTT of path A is smaller, and the RTT of path B is larger.
- the sending device will immediately allocate a large amount on the fast path (path A) Packets.
- Data packets 331-430 are allocated to path A for transmission, data packets 431-460 are allocated to path B for transmission, and the pointer of the sending queue of the sending buffer of the sending side device points after the data packets 431-460.
- the data packets 331-430 of route A have been sent, and the pointer of the sending window 1 of route A is after the data packets 331-430.
- the data packets 431-460 of route B have also been sent, and the pointer of the sending window 2 of route B is after the data packets 431-460.
- This non-smooth data packet distribution may cause the intermediate network equipment of the fast path (path A) to be unable to process such a large amount of data suddenly, and have to discard these data. This will also cause packet loss on the path, causing the path sending window size to be halved, which in turn causes the actual sending rate of the fast path to drop.
- FIG. 7 is a schematic diagram of the principle of an existing data packet scheduling algorithm (minRTT algorithm).
- FIG. 8 is a schematic diagram of another principle of the existing data packet scheduling algorithm (minRTT algorithm).
- the sending buffer of the sending side device can hold 10 data packets
- the sending window 1 of path A can hold 2 data packets
- the sending window 2 of path B can hold 2 data packets.
- the RTT of A is shorter than the RTT of path B (for example, assume that the RTT of path B is 4 times the RTT of path A).
- the 10 data packets in the sending queue of the sending side device are: data packet 1, data packet 2, data packet 3, data packet 4, ... data packet 10.
- the minRTT algorithm schedules data packets, according to the RTT from short to long, first allocate full data packets to path A, that is, allocate data packets 1 and 2, and then allocate full data packets to path B, that is, allocate data packets 3 and data Pack 4. Since the RTT of path A is shorter than that of path B, and data packets 1 and 2 can reach the receiving device soon, the minRTT algorithm will then schedule data packet 5 and data packet 6 to path A, data packet 5 and data packet 6. It also reaches the receiving device, and the data packet 3 of path B also reaches the receiving device.
- the minRTT algorithm will then schedule data packet 7 and data packet 8 to path A, and schedule data packet 9 to path B.
- the data packet 10 hence is dispatched to the path A,.
- the arrival order of data packets is data packet 1, data packet 2, data packet 5, data packet 6, data packet 3, data packet 7, data packet 8, data packet 10....
- Data packet 4 and data packet 9 will take a long time to reach the receiving device. That is, data packets arrive out of order, which will cause bandwidth waste and packet loss problems, and ultimately manifests as a lower transmission rate for multi-path aggregation.
- the present application provides a data transmission method and a data scheduling device, such as a transmitting-side device or a receiving-side device.
- Any two paths in the multipath can be homogeneous paths or heterogeneous paths.
- Any two paths in multi-path data transmission can be based on different network cards or different chips, that is, each path corresponds to a network card or a chip.
- the two paths in the multi-path data transmission may also correspond to the same network card or the same chip, which is not limited in this application.
- the two paths in the multipath can correspond to different communication systems.
- These communication systems may include, for example: global system of mobile communication (GSM) system, code division multiple access (CDMA) system, wideband code division multiple access (WCDMA) system , General packet radio service (general packet radio service, GPRS), LTE system, LTE frequency division duplex (FDD) system, LTE time division duplex (TDD), universal mobile communication system (universal mobile) telecommunication system, UMTS), Wi-Fi communication system, worldwide interoperability for microwave access (WiMAX) communication system, the future 5th generation (5G) system or new radio (NR) Wait.
- GSM global system of mobile communication
- CDMA code division multiple access
- WCDMA wideband code division multiple access
- GPRS General packet radio service
- LTE system LTE frequency division duplex
- FDD frequency division duplex
- TDD LTE time division duplex
- UMTS universal mobile communication system
- Wi-Fi communication system worldwide interoperability for microwave access (WiMAX)
- This application can but is not limited to be applied to Wi-Fi+Wi-Fi, Wi-Fi+LTE (4G), 4G+4G, 4G+5G (NR), 5G+5G, Wi-Fi+4G+5G, DCN+ Multi-path data transmission scenarios such as DCN, as well as multi-path data transmission scenarios of other networks where the transmission protocol is based on the transmission control protocol/Internet protocol (transmission control protocol/internet protocol, TCP/IP) protocol stack.
- transmission control protocol/Internet protocol transmission control protocol/internet protocol, TCP/IP
- This application can be applied to communication between devices, and can be end-to-end, end-cloud, cloud-cloud and other different communication methods.
- the application scenarios of this application include, but are not limited to, application scenarios that require high-speed transmission, such as offline download of files, online viewing of high-definition videos, and file transfer between devices.
- the sending-side device and the receiving-side device of this application may be terminal devices.
- Terminal equipment may refer to user equipment, access terminal, user unit, user station, mobile station, mobile station, remote station, remote terminal, mobile device, user terminal, terminal, wireless communication device, user agent, or user device.
- the terminal device can also be a cellular phone, a cordless phone, a session initiation protocol (SIP) phone, a wireless local loop (WLL) station, a personal digital assistant (PDA), with wireless communication Functional handheld devices, computing devices, or other processing devices connected to wireless modems, in-vehicle devices, wearable devices, terminal devices in the future 5G network, or future evolution of the public land mobile network (PLMN) Terminal equipment, etc., this application is not limited to this.
- the terminal device of this application needs to have a Wi-Fi chip, a 4G communication module, a 5G communication module, or a DCN transmission module, etc.
- the sending-side device and the receiving-side device of this application may be server devices.
- a network card device is required on the server equipment.
- Fig. 9 is a schematic diagram of a device-cloud communication mode scenario according to an embodiment of the present application.
- terminal devices and server devices can use multiple paths (for example, LTE and Wi-Fi dual paths) for data transmission on strong and weak paths.
- the calculation of data scheduling in this application can be performed by a sending-side device such as a proxy server or a web server, or can be performed by a receiving-side device such as a terminal device, or by other computing devices (such as data scheduling Device or management equipment), which is not limited in this application.
- Fig. 10 is a schematic diagram of an end-to-end communication mode scenario of an embodiment of the present application.
- the terminal devices can also use multiple paths (or channels). Path to communicate.
- terminal devices and terminal devices can perform heterogeneous multi-path remote point-to-peer (peer to peer, P2P) communication transmission or heterogeneous multi-path client/server (client/server, C/S) communication transmission or homogeneous multi-path Communication transmission.
- Figure 10 still takes LTE and Wi-Fi dual-path communication transmission as an example.
- the data scheduling calculation can be performed in the kernel of the terminal device A (sending side device) to distribute the data on the multipath, or the terminal device B (receiving side device) Equipment), it can also be executed by other computing equipment (for example, a data scheduling device or a management device).
- the data scheduling calculation of this application can be performed in the kernel of terminal device B (sending side device) to distribute data on multipaths, or the terminal device A (receiving-side device) is executed, and it can also be executed by other computing devices (for example, a data scheduling device or a management device), which is not limited in this application.
- FIG. 11 is a schematic diagram of a cloud-cloud communication mode scenario according to an embodiment of the present application.
- FIG. 11 specifically shows a scenario where a data terminal communicates with a data center server to obtain data.
- the data terminal and the data center server carry out data transmission through multiple wired paths.
- the data scheduling method of the embodiment of this application can be executed in the data center server (sending side device) to distribute the data on multiple paths, or the data terminal (receiving side device) Equipment), it can also be executed by other computing equipment (for example, a data scheduling device or a management device), which is not limited in this application.
- the following describes the data transmission method of the present application from the perspective of the sending side device.
- FIG. 12 is a schematic flowchart of a data transmission method 1200 according to an embodiment of the present application. As shown in FIG. 12, the method 1200 may include the following steps. S1210.
- path status information of each path in multi-path data transmission where the path status information includes information about delay and bandwidth, where the path of multi-path data transmission includes a first path and a second path, and the first path is The path with the longest delay among all paths of multi-path data transmission; S1220, according to the path status information of the first path and the second path, calculate the first number X of data packets scheduled to the first path and schedule them to the second path The second number of data packets Y; S1230, the first number of X data packets are sent to the receiving side device through the first path, and the second number of Y data packets are sent to the receiving side device through the second path, through the second path The sequence numbers of the Y data packets sent are all smaller than the sequence numbers of the X data packets sent through the first path.
- the data transmission method obtaineds path status information such as the delay and bandwidth of each path in multi-path data transmission, and calculates the first number of data packets scheduled to the first path with the longest delay and the scheduling to The second number of data packets of the second path, the data packets sent through each path and the sequence numbers of the second number of data packets sent through the second path are all less than the sequence numbers of the first number of data packets sent through the first path, can It solves the problem of low concurrency rate in a multipath environment, and obtains high aggregate transmission rate.
- IP Internet Protocol
- multiple TCP connections with the same source IP address and the same destination IP address belong to the same path.
- the delay information may include RTT, and may also include the single-channel (only sending process) delay of data transmission, where the single-channel delay can be calculated based on the RTT and/or the time stamp of data transmission.
- the data transmission method provided by the embodiments of the present application discards the existing path sequence of RTT from short to long, and allocates the sending window of one path to full data packets according to the data packet sequence number, and then allocates the sending window of the other path to full data.
- the packet scheduling scheme calculates the number of data packets scheduled to different paths based on the path status information, assigns data packets with a small sequence number to paths with a short RTT according to the calculated number, and assigns data with a large sequence number to paths with a long RTT. Packets, so that the data packets arrive in order as much as possible on the receiving side equipment.
- the data packets may not be allocated in the manner of assigning data packets with a small sequence number to a path with a short RTT and data packets with a large sequence number in a path with a long RTT.
- the above uses a more flexible allocation method, which is not limited in this application.
- the bandwidth information in the path state information acquired by the sending-side device may be sent by the receiving-side device.
- the receiving device measures the bandwidth and sends the bandwidth information to the sending device.
- the bandwidth information can also be measured by the sending side device according to data ACK information, etc., which is not limited in this application.
- the path status information may also include information about the use of the respective sending windows of the first path and the second path, for example, the amount of data that already exists in the sending windows of each path.
- the information about the usage of the sending window may also be the remaining space size of the sending window or the information about the usage of the sending window refers to the size of the sending window, etc., which is not limited in this application.
- the sending window in this application is used to buffer the data packets that have been sent but not received the data packet confirmation message and the data packets that are allowed to be sent but have not been sent.
- the path state information may also include the maximum segment size (MSS) of the data packet.
- MSS is also called the maximum packet length. It is an option defined by TCP.
- TCP Transmission Control Protocol
- the sender and receiver negotiate the maximum data length that each packet segment can carry (the maximum data packet that can be transmitted each time). Data segmentation).
- the value of MSS can be obtained by measurement, or it can be stipulated by agreement or defaulted by the system, which is not limited in this application.
- the path state information may also include other parameters that can characterize the size of the data packet, which is not limited in this application.
- the path state information may also include packet loss rate information, and the packet loss rate information may also be measured and provided by the receiving side device.
- S1220 calculates the first number X of data packets scheduled to the first path and the second number of data packets scheduled to the second path according to the path status information of the first path and the second path Y may include: calculating the first number X and the second number Y according to the path state information of the first path and the second path, so that X data packets scheduled to the first path and Y data packets scheduled to the second path The packet arrives at the receiving device at the same time.
- the first number X data packets scheduled to the first path are the first data packets
- the second number Y data packets scheduled to the second path are the first data packets.
- Two data packets L 1 is the delay of the first path
- L 2 is the delay of the second path
- B 1 is the bandwidth of the first path
- B 2 is the bandwidth of the second path
- D 1 is the transmission window of the first path.
- the amount of existing data D 2 is the amount of data that already exists in the sending window of the second path
- MSS is the maximum fragment size of the data packet.
- T 1 The time for all first data packets to reach the receiving device from channel 1 .
- T 1 may be based on the delay L 1 of the first path, the bandwidth B 1 of the first path, the amount of data D 1 and the MSS that already exist in the sending window of the first path in the following formula, or it may be based on other parameters. T 1 may be based on the following formula or other formulas, which is not limited in this application.
- T 2 The time for all second data packets to reach the receiving device from channel 2 is T 2 . Similar to T 1 , T 2 can be based on the following formula or other formulas, which is not limited in this application.
- the number of first data packets X and the number of second data packets Y that reach the receiving-side device through the first path and the second path are roughly obtained by calculation. The reason here is that it roughly makes it reach the receiving device at the same time.
- the measured path status information is a statistical value over a period of time, and there is a certain error in this value;
- the number of first data packets obtained by the preliminary calculation X The number Y of the second data packet and the second data packet may not be an integer. In each embodiment of the present application, an integer number can be obtained after rounding up, rounding down, and rounding.
- the data scheduling algorithm in the data transmission method of the embodiment of the application discards the existing path sequence of RTT from short to long, and allocates the sending window of one path to full data packets according to the data packet sequence number before sending another path A scheduling scheme in which the window is allocated full of data packets.
- the sending window that fills the path is no longer the standard, and the sequence numbers of the data packets allocated for different paths have a gap (gap) difference, so as to achieve the order of the data packets allocated by each path to arrive at the reception.
- the purpose of the side device is used to achieve the order of the data packets allocated by each path to arrive at the reception.
- the sequence numbers of all data packets allocated for the first path are continuous, and the sequence numbers of all data packets allocated for the second path are continuous, and because the delay of the second path is shorter than that of the first path, the second path
- the sequence numbers of the Y data packets sent are all smaller than the sequence numbers of the X data packets (any data packet among the X data packets) sent through the first path.
- the data packets in the X data packets are filled into the sending window of the first path in order of sequence number and sent out; in the same way, when there is space in the sending window of the second path, Y
- the data packets in each data packet are filled in the sending window of the second path in sequence number order and sent out.
- FIG. 13 is a schematic diagram of a data transmission method according to an embodiment of the present application.
- the sending side device sends the data packet to the first path and the second path from the sending buffer.
- the sending side device is based on MPTCP, and the first path and the second path are based on TCP.
- the delay of the first path is greater than the delay of the second path.
- the two blocks corresponding to TCP are the packet sequence axis, which represents the number of data packets that the path is allocated to send.
- the gap between the sequence number of the initial data packet on the first path and the sequence number of the initial data packet on the second path is 6.
- the following uses a specific example to illustrate the process of calculating the number of data packets on each path based on the path status information.
- X can take an appropriate value, such as 1 or 2.
- the calculated Y can be an integer, such as rounding up, rounding down, or rounding to the nearest integer.
- the value of X can be selected according to the size of the sending buffer of each path.
- the first intermediate quantity X' is 1 (assuming that 1 data packet is allocated to the time-extended path), and the second intermediate quantity is determined
- the multi-path transmission only includes the transmission of the first path and the second path.
- S1220 calculates the first path of the data packet scheduled to the first path according to the path status information of the first path and the second path.
- S1230 sends the first number X data packets to the receiving side device through the first path, and sends the second number Y data packets to the receiving side device through the second path
- the data packet may include: calculating the first number X and the second number Y before scheduling each data packet of the sending side device, and when the second number Y is greater than zero, and the sending window of the second path has free space, it will send A data packet currently to be allocated of the side device is allocated to the second path; otherwise, a data packet currently to be allocated is allocated to the first path.
- calculating the first number X and the second number Y, and then scheduling the final scheduling result of a data packet currently to be allocated can be compatible with the existing TCP, that is, Each data packet is scheduled one by one.
- the first number X and the second number Y are calculated, and then the final scheduling result of scheduling a data packet currently to be allocated can usually be compared with the calculation of the first number X and the second number. The result of scheduling X+Y packets directly after Y is the same.
- the specific allocation of data packets can also refer to the congestion situation of the path, for example, when a certain path has a congestion state, no data packets are allocated on the path.
- other parameters or information can also be referred to, which is not limited in this application.
- the data transmission method of the embodiment of the present application may be applicable to data transmission scenarios with more than two paths.
- multi-path data transmission can also be performed on the third path.
- the data packets can be allocated sequentially according to the path delay from small to large, that is, the data packets are allocated preferentially for the path with small delay.
- the multi-path data transmission is also performed on the third path, and the delay of the third path is less than the delay of the first path and greater than the delay of the second path
- the method further includes: The path status information of the path and the third path, and the first number X of data packets scheduled to the first path, calculate the third number Z of data packets scheduled to the third path; send the first number to the receiving device through the third path
- Three numbers of Z data packets, the sequence numbers of all the data packets of the Z data packets sent through the third path are less than the sequence number of any X data packets sent through the first path, and greater than any Y sent through the second path The sequence number of a data packet.
- the delay L 3 of the third path is greater than the delay L 2 of the second path, and the delay L 3 of the third path is less than the delay L 1 of the first path, that is, L 2 ⁇ L 3 ⁇ L 1 .
- B 1 is the bandwidth of the first path
- B 2 is the bandwidth of the second path
- B 3 is the bandwidth of the third path
- D 1 is the amount of data that already exists in the sending window of the first path
- D 2 is the bandwidth of the second path the amount of data already present in the transmission window, the transmission window data amount D 3 of the third path already exists
- the MSS maximum Segment size of the packet is the MSS maximum Segment size of the packet.
- the time for all second data packets to reach the receiving device from channel 2 is T 2 :
- the time for all third data packets to reach the receiving device from channel 3 is T 3 :
- Fig. 14 is a schematic diagram of data packet allocation according to an embodiment of the present application.
- FIG. 15 is another schematic diagram of data packet distribution according to an embodiment of the present application.
- the data packets waiting to be sent in the sending buffer of the sending side device are data packets 1-10.
- the remaining space of the sending window of the path B with the shorter RTT can accommodate 1 data packet, and then the data packet 1 is allocated to the path B, and the data packet 4 is allocated to the path A with the longer RTT. Due to the short RTT, the sending window of path B will soon have room.
- data packet 2 and data packet 3 are placed in the sending window of path B in order and sent out in sequence.
- the receiving-side device receives data packet 1, data packet 2, data packet 3, and data packet 4 in the order of data packet sequence numbers.
- data packets arrive at the receiving side device out of order, and when the receiving buffer of the receiving side device cannot hold the data packet, it will overflow and lose the packet, resulting in retransmission and reduced bandwidth.
- the data packets arrive at the receiving side device in order, which can greatly reduce the probability of packet loss due to overflow of the receiving buffer of the receiving side device, and increase the aggregate transmission rate of the multipath network.
- the method 1200 may further include: performing data transmission through the minRTT algorithm, and determining the path status information of each path.
- the minRTT algorithm can be used for data scheduling within a preset time period, and path status information can be determined.
- the original MPTCP default scheduling algorithm (minRTT scheduling algorithm) is used for data packet scheduling within a preset time period, and then the statistics and measurement of path status information are performed on this basis.
- the delay and bandwidth tend to stabilize, and then use the data scheduling method described above to schedule data packets.
- the delay and bandwidth of each path are very unstable. If the data transmission method described above is used to schedule data packets at this time, the results obtained by the scheduling algorithm are also unstable.
- the minRTT algorithm can be used to schedule data until the delay, bandwidth and other parameters are less than a certain threshold, or the delay, bandwidth and other parameters reach the preset standard, and the minRTT algorithm is determined to be used. Path status information within a certain period of time. For example, when the number of data packets ack received by the sending device exceeds half of the data packets that can be buffered in the current MPTCP transmission buffer, the minRTT algorithm is switched to the scheduling algorithm in the embodiment of the present application. Or, in the process of using the minRTT algorithm, when the transmitting-side device finds that there is head-of-line blocking, the minRTT algorithm is switched to the scheduling algorithm in the embodiment of the present application. That is, when the sending-side device finds that the data packet ack with the previous sequence number has not arrived and the data packet ack with the next sequence number has arrived, it switches from the minRTT algorithm to the scheduling algorithm of the embodiment of the present application.
- the method 1200 when the method 1200 is executed in the last round of scheduling and there are still data packets to be scheduled in the sending queue of the sending side device; or when the data packet enters the sending data queue of the sending side device, or when sending Execute when the side device receives the data packet ACK message sent by the receiving side device.
- This allows the data transmission method to run dynamically.
- the data transmission method of the embodiment of the present application may be called again to detect whether data distribution is required.
- the data transmission method in the embodiment of this application can also be executed based on other judgment criteria, which is not limited in this application.
- the data transmission method can be executed by the data sending side device, that is, the server device, for example, by a proxy server or a web server ( web server) execution. This can be done by the scheduler in the server device.
- the server device sends a first number of X data packets to the terminal device through the first path, and sends a second number of Y data packets to the terminal device through the second path.
- data scheduling may also be performed by the terminal device, and then the terminal device notifies the server device of the scheduling result, which will be described in detail below.
- the data transmission method in the end-to-end communication mode as described above, can be executed by the data sending side device, that is, the first terminal device. Specifically, it can be executed by the kernel of the first terminal device.
- the scheduler is complete.
- the first terminal device sends a first number of X data packets to the second terminal device through the first path, and sends a second number of Y data packets to the second terminal device through the second path.
- data scheduling may also be performed by the second terminal device, and then the second terminal device notifies the first terminal device of the scheduling result, which will be described in detail below.
- FIG. 16 is a schematic flowchart of a data transmission method 1600 according to another embodiment of the present application.
- the data transmission method 1600 may include the following steps. S1610. Obtain path status information of each path in multipath data transmission, where the path status information includes information about delay and bandwidth, where the path for multipath data transmission includes a first path and a second path, and the first path is The path with the longest delay among all paths of multi-path data transmission; S1620, according to the path status information of the first path and the second path, calculate the first number X of data packets scheduled to the first path and schedule them to the second path The second number of data packets Y; S1630, sending scheduling information to the sending side device, the scheduling information is used to instruct the sending side device to send the first number X data packets to the receiving side device through the first path, and instruct the sending side device to pass The second path sends a second number of Y data packets to the receiving device.
- the receiving side device obtains path status information such as the delay and bandwidth of each path in multi-path data transmission, and calculates the first number of data packets scheduled to the first path with the longest delay
- the sending side device is notified to send data packets through each path, which can solve the problem of low concurrency in a multipath environment and obtain a high aggregate transmission rate.
- multi-path data transmission is based on combined data transmission of multiple TCP paths of the same sending-side device and the same receiving-side device.
- the scheduling information is also used to indicate that the sequence numbers of the Y data packets sent through the second path are all less than the sequence numbers of the X data packets sent through the first path.
- the multi-path data transmission is data transmission of the MPTCP layer of the multi-path transmission control protocol.
- the path status information also includes information about the use of the sending window of the path and the maximum fragment size MSS of the data packet, where the sending window is used to buffer the data packet confirmation message that has been sent but not received on the path Data packets that are allowed to be sent but have not yet been sent.
- any two paths in the multi-path data transmission are based on different network cards or different chips.
- the delay information is received by the receiving side device from the sending side device.
- the first path and the second path are heterogeneous paths.
- At least one path in the multipath includes multiple TCP connections, the multiple TCP connections have the same source IP address, and the multiple TCP connections have the same destination IP address.
- the method before acquiring the path state information of each path in the multi-path data transmission, the method further includes: performing data transmission through the minRTT algorithm, and determining the path state information of each path.
- the method is executed after the receiving side device sends a data packet confirmation message to the sending side device.
- the first number X of data packets scheduled to the first path and the second number Y of data packets scheduled to the second path are calculated according to the path status information of the first path and the second path , Including: calculating the first number X and the second number Y according to the path status information of the first path and the second path, so that the X data packets scheduled to the first path and the Y data packets scheduled to the second path are at the same time Reach the receiving device.
- the second number Y is 1; where L 1 is the delay of the first path, L 2 is the delay of the second path, B 1 is the bandwidth of the first path, B 2 is the bandwidth of the second path, and D 1 is The amount of data already existing in the sending window of the first path, D 2 is the amount of data already existing in the sending window of the second path, and MSS is the maximum fragment size of the data packet.
- the multi-path data transmission is also performed on the third path, and the delay of the third path is less than the delay of the first path and greater than the delay of the second path
- the method further includes: The path status information of the path and the third path, and the first number X of data packets scheduled to the first path, calculate the third number Z of data packets scheduled to the third path; the scheduling information is also used to instruct the sending-side device to pass
- the third path sends a third number of Z data packets to the receiving device.
- the sequence numbers of all the data packets of the Z data packets sent through the third path are less than the sequence numbers of any X data packets sent through the first path, and are greater than The sequence number of any Y data packets sent through the second path.
- the present application also provides a data transmission method, which can be executed by a sending-side device, and the method includes: acquiring path status information of each path in multi-path data transmission, where the path status information includes information about delay and bandwidth, Among them, the path of multi-path data transmission includes a first path and a second path.
- the first path is the path with the longest delay among all paths of multi-path data transmission; calculate according to the path status information of the first path and the second path The first number X of data packets scheduled to the first path and the second number Y of data packets scheduled to the second path; the first number of X data packets are sent to the receiving device through the first path, and the second path is passed Send a second number of Y data packets to the receiving side device, so that Y data packets and X data packets arrive at the receiving side device in ascending order of data packet sequence numbers.
- the present application also provides a data transmission method, which can be executed by a sending-side device, and the method includes: acquiring path status information of each path in multi-path data transmission, where the path status information includes information about delay and bandwidth, Among them, the path of multi-path data transmission includes a first path and a second path.
- the first path is the path with the longest delay among all paths of multi-path data transmission; according to the path status information of the first path and the second path, The first path sends a first number of X data packets to the receiving side device, and sends a second number of Y data packets to the receiving side device through the second path, so that the Y data packets and the X data packets are in descending order of data packet sequence numbers. To the large order to reach the receiving side equipment.
- the present application also provides a data transmission method, which can be executed by a receiving-side device.
- the method includes: acquiring path state information of each path in multi-path data transmission, where the path state information includes information on delay and bandwidth, Among them, the path of multi-path data transmission includes a first path and a second path.
- the first path is the path with the longest delay among all paths of multi-path data transmission; calculate according to the path status information of the first path and the second path The first number X of data packets scheduled to the first path and the second number Y of data packets scheduled to the second path; the scheduling information is sent to the sending-side device, and the scheduling information is used to instruct the sending-side device to receive the data through the first path
- the side device sends a first number of X data packets, and instructs the sending side device to send a second number of Y data to the receiving side device through the second path, so that the Y data packets and X data packets are in descending order of data packet sequence numbers Sequentially arrive at the receiving device.
- each socket corresponds to a path
- the time delay of socket 1 is short, corresponding to the second path
- the time of socket 2 is extended, corresponding to the first path.
- MPTCP scheduler determines to which socket a data packet should be sent currently.
- MPTCP will trigger the execution of this function when one of the following conditions is met:
- the sending buffer (buffer) of the MPTCP link of the sending side device is not empty, and the previous data packet scheduling is completed;
- the sending side device receives an ack message from the receiving side device
- the socket must meet the following two conditions:
- inf1---socket 1 The current amount of data that has been sent but not received the packet confirmation message (the number of inflight packets), inf2---socket 2
- the current number of inflight packets, wnd1---socket 1 is sent Window size, the sending window size of wnd2---socket 2.
- FIG. 17 is a schematic flowchart of a data transmission method 1700 according to another embodiment of the present application.
- the data transmission method 1700 may include the following steps.
- S1720 according to the path status information of the first path and the second path, send a data packet with sequence number N through the first path at the first time, and at the second time Send a data packet with a sequence number of N-1 through the second path, where the time difference between the first time and the second time is greater than the first threshold, the first threshold is determined by the path state information of the first path and the second path, and the first threshold More than 0.5ms.
- the data transmission method provided by the embodiment of the present application determines the data packets scheduled on each path according to the path state information of each path in the multi-path data transmission, so that the sequence number on the path with the smaller delay is the same as the sequence number on the other path with the larger delay.
- the time difference between the sending moments of two adjacent data packets is greater than the first threshold.
- the time difference between the sending time of the data packet 3 of the path B with a small delay and the data packet 4 of the path A with the large delay is relatively large, which is greater than the first threshold, which is about 0.5 ms.
- a data packet with sequence number N is sent through the first path at the first time, and a data packet with sequence number N-1 is sent through the second path at the second time.
- the time difference between the first moment and the second moment is greater than the first threshold.
- the path status information of the first path and the second path may also be used to make the time difference between the first time and the second time greater than the first threshold through a timer or the like.
- the first threshold is positively correlated with the delay of the first path, and negatively correlated with the delay of the second path.
- the first threshold is negatively correlated with the bandwidth of the first path, and positively correlated with the bandwidth of the second path.
- the first threshold is positively correlated with the amount of data already existing in the sending window of the first path, and negatively correlated with the amount of data already existing in the sending window of the second path.
- the first threshold is greater than 2 ms.
- multi-path data transmission is based on the combined data transmission of multiple transmission control protocol TCP paths of the same sending-side device and the same receiving-side device.
- the multi-path data transmission is data transmission of the MPTCP layer of the multi-path transmission control protocol
- the sequence number is the MPTCP sequence number
- any two paths in the multi-path data transmission are based on different network cards or different chips.
- the first path and the second path are heterogeneous paths.
- the data scheduling method proposed in this application significantly improves the download rate of heterogeneous multi-path data transmission.
- the following tables are the comparison results of file download rates in different two-way network environments under the current network environment of the end-cloud communication mode.
- the following table 4-7 is the comparison result of downloading video rate using Wi-Fi and 4G dual-path environment.
- FIG. 18 is a schematic block diagram of a sending-side device 1800 according to an embodiment of the present application.
- the sending-side device 1800 includes: an acquiring module 1810, configured to acquire path status information of each path in multipath data transmission, where the path status information includes information about delay and bandwidth, and the multipath data
- the transmission path includes the first path and the second path.
- the first path is the path with the longest delay among all the paths of multi-path data transmission; the processing module 1820 is used to obtain the first path and the second path according to the acquisition module.
- Path status information calculating the first number X of data packets scheduled to the first path and the second number Y of data packets scheduled to the second path; the sending module 1830 is used to send the first number to the receiving device through the first path
- the number of X data packets, and the second number of Y data packets are sent to the receiving device through the second path, the sequence numbers of the Y data packets sent through the second path are all less than the sequence numbers of the X data packets sent through the first path .
- multi-path data transmission is based on the combined data transmission of multiple transmission control protocol TCP paths of the same sending-side device and the same receiving-side device.
- the multi-path data transmission is data transmission of the MPTCP layer of the multi-path transmission control protocol.
- the path status information also includes information about the use of the sending window of the path and the maximum fragment size MSS of the data packet, where the sending window is used to buffer the data packet confirmation message that has been sent but not received on the path Data packets and data packets that are allowed to be sent but have not yet been sent.
- any two paths in the multi-path data transmission are based on different network cards or different chips.
- At least one path in the multipath includes multiple Transmission Control Protocol TCP connections, the multiple TCP connections have the same source Internet Protocol IP address, and the multiple TCP connections have the same destination IP address.
- the multi-path transmission only includes the transmission of the first path and the second path
- the processing module 1820 is specifically configured to calculate the first number X and the second number X before scheduling each data packet of the sending side device.
- Number Y the sending module 1830 is specifically used to allocate a data packet currently to be allocated by the sending side device to the second path when the second number Y is greater than zero and the sending window of the second path has remaining space; otherwise, the current waiting One data packet allocated is allocated to the first path.
- the processing module 1820 is further configured to: before the acquiring module acquires the path status information of each path in the multi-path data transmission, perform data transmission through the minimum round-trip delay minRTT algorithm, and determine each path The path status information.
- the acquiring module 1810, the processing module 1820, and the sending module 1830 perform operations when receiving the data packet confirmation message sent by the receiving-side device.
- the processing module 1820 is specifically configured to: calculate the first number X and the second number Y according to the path status information of the first path and the second path, so that X pieces of data scheduled for the first path The packet and the Y data packets scheduled to the second path arrive at the receiving device at the same time.
- the processing module 1820 is specifically configured to:
- L 1 is the delay of the first path
- L 2 is the delay of the second path
- B 1 is the bandwidth of the first path
- B 2 is the bandwidth of the second path
- D 1 is the transmission window of the first path
- MSS is the maximum fragment size of the data packet.
- multi-path data transmission is also performed on the third path, and the delay of the third path is less than the delay of the first path and greater than the delay of the second path
- the processing module 1820 is further configured to: According to the path status information of the first path and the third path, and the first number X of data packets scheduled to the first path, calculate the third number Z of data packets scheduled to the third path
- the sending module 1830 is further configured to: Send a third number of Z data packets to the receiving device through the third path, and the sequence numbers of all the data packets of the Z data packets sent through the third path are less than the sequence numbers of any X data packets sent through the first path, and The sequence number is greater than any one of the Y data packets sent through the second path.
- FIG. 19 is a schematic block diagram of a sending-side device 1900 according to another embodiment of the present application.
- the sending-side device 1900 includes a processor 1910, which is coupled with a memory 1920.
- the memory 1920 is used to store computer programs or instructions or and/or data, and the processor 1910 is used to execute a computer stored in the memory 1920. Programs or instructions and/or data to enable the methods in the above method embodiments to be executed
- the sending-side device 1900 includes one or more processors 1910.
- the sending-side device 1900 may further include a memory 1920.
- the memory 1920 included in the sending-side device 1900 may be one or more.
- the memory 1920 may be integrated with the processor 1910 or provided separately.
- the sending-side device 1900 may be used to implement the operations performed by the sending-side device in the above method embodiment, and may correspond to the units in the sending-side device 1800 above.
- the transmitting-side device 1900 further includes a transceiver 1930, and the transceiver 1930 is used for receiving and/or transmitting signals.
- the processor 1910 is configured to control the transceiver 1930 to receive and/or send signals, so that the methods in the above method embodiments are executed.
- the transceiver 1930 may be a communication interface.
- the sending-side device 1900 may be a chip or a chip system.
- the communication interface may be an input/output interface, interface circuit, output circuit, input circuit, pin, or related circuit on the chip or chip system.
- the processor can also be embodied as a processing circuit or a logic circuit.
- FIG. 20 is a schematic block diagram of a receiving device 2000 according to an embodiment of the present application.
- the acquiring module 2010 is used to acquire path status information of each path in multi-path data transmission, where the path status information includes information about delay and bandwidth, and the path of multi-path data transmission includes first Path and second path, the first path is the path with the longest delay among all paths of multi-path data transmission;
- the processing module 2020 is configured to calculate the schedule based on the path status information of the first path and the second path acquired by the acquiring module The first number X of data packets for the first path and the second number Y of data packets for the second path;
- the sending module 2030 is used to send scheduling information to the sending-side device, and the scheduling information is used to instruct the sending-side device to pass The first path sends a first number of X data packets to the receiving side device, and instructs the sending side device to send a second number of Y data packets to the receiving side device through the second path.
- multi-path data transmission is based on the combined data transmission of multiple transmission control protocol TCP paths of the same sending-side device and the same receiving-side device.
- the multi-path data transmission is data transmission of the MPTCP layer of the multi-path transmission control protocol.
- the path status information also includes information about the use of the sending window of the path and the maximum fragment size MSS of the data packet, where the sending window is used to buffer the data packet confirmation message that has been sent but not received on the path Data packets and data packets that are allowed to be sent but have not yet been sent.
- any two paths in the multi-path data transmission are based on different network cards or different chips.
- the scheduling information is also used to indicate that the sequence numbers of the Y data packets sent through the second path are all less than the sequence numbers of the X data packets sent through the first path.
- the time delay information is received by the receiving-side device 2000 from the sending-side device.
- At least one path in the multipath includes multiple Transmission Control Protocol TCP connections, the multiple TCP connections have the same source Internet Protocol IP address, and the multiple TCP connections have the same destination IP address.
- the processing module 2020 may also be used to: before the acquiring module acquires the path status information of each path in the multipath data transmission, perform data transmission through the minimum round-trip delay minRTT algorithm, and determine each path Path status information of the path.
- the obtaining module 2010, the processing module 2020, and the sending module 2030 perform operations.
- the processing module 2020 is specifically configured to: calculate the first number X and the second number Y according to the path status information of the first path and the second path, so that X pieces of data scheduled for the first path The packet and the Y data packets scheduled to the second path arrive at the receiving device at the same time.
- processing module 2020 is specifically configured to:
- L 1 is the delay of the first path
- L 2 is the delay of the second path
- B 1 is the bandwidth of the first path
- B 2 is the bandwidth of the second path
- D 1 is the transmission window of the first path
- MSS is the maximum fragment size of the data packet.
- the multi-path data transmission is also performed on the third path, and the delay of the third path is less than the delay of the first path and greater than the delay of the second path
- the processing module 2020 is further configured to: According to the path status information of the first path and the third path, and the first number X of data packets scheduled to the first path, the third number Z of data packets scheduled to the third path is calculated; the scheduling information is also used to indicate transmission
- the side device sends a third number of Z data packets to the receiving side device through the third path, and the sequence numbers of all the Z data packets sent through the third path are less than the sequence numbers of any X data packets sent through the first path , And greater than any sequence number of Y data packets sent through the second path.
- FIG. 21 is a schematic block diagram of a receiving device 2100 according to another embodiment of the present application.
- the receiving-side device 2100 includes a processor 2110, which is coupled to a memory 2120.
- the memory 2120 is used to store computer programs or instructions or and/or data, and the processor 2110 is used to execute a computer stored in the memory 2120. Programs or instructions and/or data to enable the methods in the above method embodiments to be executed
- the receiving-side device 2100 includes one or more processors 2110.
- the receiving-side device 2100 may further include a memory 2120.
- the memory 2120 included in the receiving-side device 2100 may be one or more.
- the memory 2120 may be integrated with the processor 2110 or provided separately.
- the receiving-side device 2100 may be used to implement the operations performed by the receiving-side device in the above method embodiments, and may correspond to the units in the receiving-side device 2000 above.
- the receiving device 2100 further includes a transceiver 2130, and the transceiver 2130 is used for receiving and/or sending signals.
- the processor 2110 is configured to control the transceiver 2130 to receive and/or send signals, so that the methods in the above method embodiments are executed.
- the transceiver 2130 may be a communication interface.
- the receiving device 2100 may be a chip or a chip system.
- the communication interface may be an input/output interface, interface circuit, output circuit, input circuit, pin or related circuit on the chip or chip system.
- the processor can also be embodied as a processing circuit or a logic circuit.
- FIG. 22 is a schematic block diagram of a sending-side device 2200 according to an embodiment of the present application.
- the sending-side device 2200 includes: an acquiring module 2210 for acquiring path status information of each path in multipath data transmission, where the path status information includes information about delay and bandwidth, and the multipath data
- the transmission path includes a first path and a second path.
- the first path is the path with the longest delay among all paths of multi-path data transmission; the sending module 2220 is used to obtain the first path and the second path according to the path obtained by the acquiring module.
- Path status information At the first time, a data packet with a sequence number of N is sent through the first path, and a data packet with a sequence number of N-1 is sent through the second path at the second time. The time difference between the first time and the second time is greater than the first time.
- a threshold, the first threshold is determined by the path status information of the first path and the second path, and the first threshold is greater than 0.5 ms.
- multi-path data transmission is based on the combined data transmission of multiple transmission control protocol TCP paths of the same sending-side device and the same receiving-side device.
- the multi-path data transmission is data transmission of the MPTCP layer of the multi-path transmission control protocol
- the sequence number is the MPTCP sequence number
- any two paths in the multi-path data transmission are based on different network cards or different chips.
- the first threshold is positively correlated with the delay of the first path, and negatively correlated with the delay of the second path.
- the first threshold is negatively correlated with the bandwidth of the first path, and positively correlated with the bandwidth of the second path.
- the first threshold is positively correlated with the amount of data already existing in the sending window of the first path, and negatively correlated with the amount of data already existing in the sending window of the second path.
- the first threshold is greater than 2 ms.
- FIG. 23 is a schematic block diagram of a sending-side device 2300 according to another embodiment of the present application.
- the sending-side device 2300 includes a processor 2310, which is coupled to a memory 2320.
- the memory 2320 is used to store computer programs or instructions or and/or data, and the processor 2310 is used to execute a computer stored in the memory 2320. Programs or instructions and/or data to enable the methods in the above method embodiments to be executed
- the sending-side device 2300 includes one or more processors 2310.
- the sending-side device 2300 may further include a memory 2320.
- the memory 2320 may be integrated with the processor 2310 or provided separately.
- the sending-side device 2300 may be used to implement the operations performed by the sending-side device in the foregoing method embodiment, and may correspond to the units in the foregoing sending-side device 2200.
- the transmitting-side device 2300 further includes a transceiver 2330, and the transceiver 2330 is used for signal reception and/or transmission.
- the processor 2310 is configured to control the transceiver 2330 to receive and/or send signals, so that the methods in the above method embodiments are executed.
- the transceiver 2330 may be a communication interface.
- the sending-side device 2300 may be a chip or a chip system.
- the communication interface may be an input/output interface, interface circuit, output circuit, input circuit, pin, or related circuit on the chip or chip system.
- the processor can also be embodied as a processing circuit or a logic circuit.
- the above processor may be a chip, and the processor may be implemented by hardware or software.
- the processor When implemented by hardware, the processor may be a logic circuit, integrated circuit, etc.; when implemented by software, the processor
- the processor may be a general-purpose processor, which is implemented by reading software codes stored in the memory.
- the memory may be integrated in the processor, may be located outside the processor, and exist independently.
- the processor mentioned in the embodiments of the present application may include a central processing unit (central processing pnit, CPU), a network processor (network processor, NP), or a combination of a CPU and NP.
- the processor may further include a hardware chip.
- the aforementioned hardware chip may be an application-specific integrated circuit (ASIC), a programmable logic device (PLD), or a combination thereof.
- ASIC application-specific integrated circuit
- PLD programmable logic device
- the above-mentioned PLD may be a complex programmable logic device (CPLD), a field-programmable gate array (FPGA), a general array logic (generic array logic, GAL), or any combination thereof.
- CPLD complex programmable logic device
- FPGA field-programmable gate array
- GAL general array logic
- the memory mentioned in the embodiments of the present application may be a volatile memory (volatile memory) or a non-volatile memory (non-volatile memory), or may include both volatile and non-volatile memory.
- the non-volatile memory can be read-only memory (ROM), programmable read-only memory (programmable ROM, PROM), erasable programmable read-only memory (erasable PROM, EPROM), and electrically available Erase programmable read-only memory (electrically EPROM, EEPROM), flash memory (flash memory), hard disk (HDD) or solid-state drive (SSD).
- the volatile memory may be random access memory (RAM), which is used as an external cache.
- RAM random access memory
- static random access memory static random access memory
- dynamic RAM dynamic RAM
- DRAM dynamic random access memory
- synchronous dynamic random access memory synchronous DRAM, SDRAM
- double data rate synchronous dynamic random access memory double data rate SDRAM, DDRSDRAM
- enhanced synchronous dynamic random access memory enhanced SDRAM, ESDRAM
- synchronous connection dynamic random access memory serial DRAM, SLDRAM
- direct rambus RAM direct rambus RAM, DR RAM
- the processor is a general-purpose processor, DSP, ASIC, FPGA or other programmable logic device, discrete gate or transistor logic device, or discrete hardware component
- the memory storage module
- the present application also provides a computer program product.
- the computer program product includes: a computer program (also called code or instruction), which when the computer program is executed, causes the computer to perform the operation of the sending-side device in the foregoing method embodiment.
- the present application also provides a computer program product.
- the computer program product includes: a computer program (also called code or instruction), which when the computer program is executed, causes the computer to perform the operation of the receiving-side device in the foregoing method embodiment.
- the present application also provides a computer-readable storage medium.
- the computer-readable storage medium stores a computer program (also called code, or instruction) when it runs on a computer, so that the computer executes the sending side in the above method embodiment. Operation of the equipment.
- the present application also provides a computer-readable storage medium.
- the computer-readable storage medium stores a computer program (also called code, or instruction) when it runs on a computer, so that the computer executes the receiving side in the above-mentioned method embodiment. Operation of the equipment.
- the devices provided by the embodiments of the present application may be implemented in whole or in part by software, hardware, firmware, or any combination thereof.
- software When implemented by software, it can be implemented in the form of a computer program product in whole or in part.
- the computer program product includes one or more computer instructions. When the computer instructions are loaded and executed on the computer, all or part of the processes or functions described in the embodiments of the present application are generated.
- the computer may be a general-purpose computer, a special-purpose computer, a computer network, or other programmable devices.
- the computer instructions may be stored in a computer-readable storage medium, or transmitted from one computer-readable storage medium to another computer-readable storage medium. For example, the computer instructions may be transmitted from a website, computer, server, or data center.
- the computer-readable storage medium may be any available medium that can be accessed by a computer or a data storage device such as a server or a data center integrated with one or more available media.
- the usable medium may be a magnetic medium (for example, a floppy disk, a hard disk, and a magnetic tape), an optical medium (for example, a high-density digital video disc (digital video disc, DVD)), or a semiconductor medium (for example, SSD).
- the size of the sequence numbers of the above-mentioned processes does not mean the order of execution, and the execution order of the processes should be determined by their functions and internal logic, rather than corresponding to the implementation process of the embodiments of the present application. Constitute any limitation.
- the disclosed system, device, and method can be implemented in other ways.
- the device embodiments described above are merely illustrative, for example, the division of the units is only a logical function division, and there may be other divisions in actual implementation, for example, multiple units or components can be combined or It can be integrated into another system, or some features can be ignored or not implemented.
- the displayed or discussed mutual coupling or direct coupling or communication connection may be indirect coupling or communication connection through some interfaces, devices or units, and may be in electrical, mechanical or other forms.
- the units described as separate components may or may not be physically separated, and the components displayed as units may or may not be physical units, that is, they may be located in one place, or they may be distributed on multiple network units. Some or all of the units may be selected according to actual needs to achieve the objectives of the solutions of the embodiments.
- the functional units in the various embodiments of the present application may be integrated into one processing unit, or each unit may exist alone physically, or two or more units may be integrated into one unit.
Landscapes
- Engineering & Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Data Exchanges In Wide-Area Networks (AREA)
Abstract
一种数据传输方法、发送侧设备和接收侧设备,获取多路径数据传输中每个路径的路径状态信息,其中,路径状态信息包括时延和带宽的信息,其中,多路径数据传输的路径包括第一路径和第二路径,第一路径为多路径数据传输的所有路径中时延最长的路径;根据第一路径和第二路径的路径状态信息,计算调度给第一路径的数据包的第一数量X和调度给第二路径的数据包的第二数量Y;通过第一路径向接收侧设备发送第一数量X个数据包,并通过第二路径向接收侧设备发送第二数量Y个数据包,通过第二路径发送的Y个数据包的序号均小于通过第一路径发送的X个数据包的序号。
Description
本申请要求于2020年6月11日提交俄罗斯联邦专利局、申请号为RU2020119417、申请名称为“数据传输方法、发送侧设备和接收侧设备”的俄罗斯专利申请的优先权,其全部内容通过引用结合在本申请中。
本申请涉及数据传输领域,并且更具体地,涉及一种数据传输方法、发送侧设备和接收侧设备。
随着网络用户和网络应用的规模快速持续增长,用户和应用对网络带宽的需求也迅速的提高。例如,高清视频流媒体应用、云计算以及虚拟现实对网络带宽的需求都是巨大的。为了获得更大的网络带宽,当前一种称为多路径TCP(multi-path TCP,MPTCP)的新型传输控制协议(transmission control protocol,TCP)被工业界广泛使用。其中,多路径(multi-path,MP)中的任意两个路径可以是同构的路径也可以是异构的路径。其中,路径也称为通道或链路。
MPTCP的设计中最核心的部分是调度器的设计。MPTCP的调度器的作用是决定何时以及何种方式将要发送的数据包分配到每个路径对应的子流中。当前MPTCP默认的调度算法是最小往返时延(minimum round trip time,minRTT)算法。minRTT算法的具体做法是,在分配数据包之前,检测当前可用的各条路径对应的子流的往返时延(round trip time,RTT),然后先将RTT最短的子流分配满数据包,再按照RTT由短到长的次序依次往各路径上分配数据包。现有的MPTCP默认的调度算法(例如minRTT算法)在一些场景下效果较差,多路径网络中的聚合传输速率低。
发明内容
本申请提供一种数据传输方法、发送侧设备和接收侧设备,能够改善多路径网络的聚合传输速率。
第一方面,提供了一种数据传输方法,应用于发送侧设备,该方法包括:
获取多路径数据传输中每个路径的路径状态信息,其中,路径状态信息包括时延和带宽的信息,其中,多路径数据传输的路径包括第一路径和第二路径,第一路径为多路径数据传输的所有路径中时延最长的路径;
根据第一路径和第二路径的路径状态信息,计算调度给第一路径的数据包的第一数量X和调度给第二路径的数据包的第二数量Y;
通过第一路径向接收侧设备发送第一数量X个数据包,并通过第二路径向接收侧设备发送第二数量Y个数据包,通过第二路径发送的Y个数据包的序号均小于通过第一路径 发送的X个数据包的序号。
第一方面的数据传输方法,获取多路径数据传输中每个路径的时延和带宽等路径状态信息,计算调度给时延最长的第一路径的数据包的第一数量和调度给第二路径的数据包的第二数量,通过各路径发送数据包且通过第二路径发送的第二数量个数据包的序号均小于通过第一路径发送的第一数量个数据包的序号,能够很好的解决在多路径环境下并发速率低的问题,获得高聚合传输速率。
应理解,多路径数据传输是基于同一个发送侧设备和同一个接收侧设备的多个传输控制协议TCP路径的合并数据传输。同一个发送侧设备和同一个接收侧设备是指数据流从同一个发送侧设备经过多条路径的合并数据传输到达同一个接收侧设备。多路径数据传输是多路径传输控制协议MPTCP层的数据传输。或者,多路径数据传输是基于同一个发送侧设备和同一个接收侧设备的基于用户数据报协议(user datagram protocol,UDP)路径(链路)之上进行的可靠的合并数据传输。
还应理解,发送侧设备获取的路径状态信息中的带宽信息可以是由接收侧设备发送的,也可以由发送侧设备根据数据确认(ACK)信息等进行测量得到。
还应理解,多路径中可以存在至少一个路径包括多个TCP连接,多个TCP连接具有相同的源互联网协议(internet protocol,IP)地址,多个TCP连接具有相同的目的IP地址。换而言之,具有相同的源IP地址和相同的目的IP地址的多个TCP连接属于同一路径。
在第一方面的一种可能的实现方式中,路径状态信息还可以包括路径的发送窗口使用情况的信息和数据包的最大分片大小(maximum segment size,MSS),其中发送窗口用于缓存路径上已发送但未收到数据包确认消息的数据包和允许发送但尚未发送的数据包。
在第一方面的一种可能的实现方式中,多路径数据传输中的任意两条路径基于不同的网卡或不同的芯片。本可能的实现方式中一个网卡或一个芯片可以对应一条路径。
在第一方面的一种可能的实现方式中,多路径传输仅包括第一路径和第二路径的传输,根据第一路径和第二路径的路径状态信息,计算调度给第一路径的数据包的第一数量X和调度给第二路径的数据包的第二数量Y;通过第一路径向接收侧设备发送第一数量X个数据包,并通过第二路径向接收侧设备发送第二数量Y个数据包,包括:在调度发送侧设备的每个数据包之前,计算第一数量X和第二数量Y,当第二数量Y大于零,且第二路径的发送窗口有剩余空间,将发送侧设备的当前待分配的一个数据包分配给第二路径,否则将当前待分配的一个数据包分配给第一路径。本可能的实现方式能够与现有的TCP兼容,即对每个数据包逐一进行调度。
在第一方面的一种可能的实现方式中,在获取多路径数据传输中每个路径的路径状态信息之前,方法还包括:通过最小往返时延minRTT算法进行数据传输,并确定每个路径的路径状态信息。本可能的实现方式在数据传输的初始阶段利用minRTT调度算法进行数据包调度,等到各路径的时延和带宽后,再切换到前文描述的数据调度方法,调度效果与各路径实际情况更匹配,有利于提高多路径网络的聚合传输速率。
其中,可以在预设时间段内通过minRTT算法进行数据调度;或者可以通过minRTT算法进行数据调度直至时延、带宽等参数的变化小于一定的阈值,或者时延、带宽等参数的值达到预设的标准;或者,当发送侧设备收到的数据包ack的数量超过当前MPTCP发送缓存可缓存的数据包的一半时,由minRTT算法切换到本申请实施例的调度算法;或者, 使用minRTT算法的过程中,当发送侧设备发现存在队头阻塞时,由minRTT算法切换到本申请实施例的调度算法。
在第一方面的一种可能的实现方式中,方法在上轮调度执行完毕且当前发送侧设备的发送队列仍有数据包待调度时;或在有数据包进入发送侧设备的发送队列时,或在发送侧设备接收到接收侧设备发送的数据包确认消息时执行。这样可以使数据传输方法动态运行起来。
在第一方面的一种可能的实现方式中,根据第一路径和第二路径的路径状态信息,计算调度给第一路径的数据包的第一数量X和调度给第二路径的数据包的第二数量Y,包括:根据第一路径和第二路径的路径状态信息,计算第一数量X和第二数量Y,使得调度给第一路径的X个数据包与调度给第二路径的Y个数据包同时到达接收侧设备。
在第一方面的一种可能的实现方式中,根据第一路径和第二路径的路径状态信息,计算第一数量X和第二数量Y,包括:
当Y’=0时,确定第一数量X为1,第二数量Y为0;
其中,L
1为第一路径的时延,L
2为第二路径的时延,B
1为第一路径的带宽,B
2为第二路径的带宽,D
1为第一路径的发送窗口中已经存在的数据量,D
2为第二路径的发送窗口中已经存在的数据量,MSS为数据包的最大分片大小。
在第一方面的一种可能的实现方式中,多路径数据传输还在第三路径上进行,第三路径的时延小于第一路径的时延且大于第二路径的时延,方法还包括:根据第一路径和第三路径的路径状态信息,以及调度给第一路径的数据包的第一数量X,计算调度给第三路径的数据包的第三数量Z;通过第三路径向接收侧设备发送第三数量Z个数据包,通过第三路径发送的Z个数据包的所有数据包的序号小于任意一个通过第一路径发送的X个数据包的序号,且大于任意一个通过第二路径发送的Y个数据包的序号。本可能的实现方式使得所有第一数据包中的最后一个数据包、所有第二数据包中的最后一个数据包和所有第三数据包中的最后一个数据包分别通过第一路径、第二路径和第三路径尽量同时到达接收侧设备。
第二方面,提供了一种数据传输方法,应用于接收侧设备,该方法包括:
获取多路径数据传输中每个路径的路径状态信息,其中,路径状态信息包括时延和带宽的信息,其中,多路径数据传输的路径包括第一路径和第二路径,第一路径为多路径数据传输的所有路径中时延最长的路径;
根据第一路径和第二路径的路径状态信息,计算调度给第一路径的数据包的第一数量 X和调度给第二路径的数据包的第二数量Y;
向发送侧设备发送调度信息,调度信息用于指示发送侧设备通过第一路径向接收侧设备发送第一数量X个数据包,并指示发送侧设备通过第二路径向接收侧设备发送第二数量Y个数据包。
在第二方面的一种可能的实现方式中,多路径数据传输是基于同一个发送侧设备和同一个接收侧设备的多个传输控制协议TCP路径的合并数据传输。
在第二方面的一种可能的实现方式中,多路径数据传输是多路径传输控制协议MPTCP层的数据传输。
在第二方面的一种可能的实现方式中,路径状态信息还包括路径的发送窗口使用情况的信息和数据包的最大分片大小MSS,其中发送窗口用于缓存路径上已发送但未收到数据包确认消息的数据包和允许发送但尚未发送的数据包。
在第二方面的一种可能的实现方式中,多路径数据传输中的任意两条路径基于不同的网卡或不同的芯片。
在第二方面的一种可能的实现方式中,调度信息还用于指示通过第二路径发送的Y个数据包的序号均小于通过第一路径发送的X个数据包的序号。
在第二方面的一种可能的实现方式中,时延的信息是接收侧设备从发送侧设备接收的。
在第二方面的一种可能的实现方式中,多路径中存在至少一个路径包括多个传输控制协议TCP连接,多个TCP连接具有相同的源互联网协议IP地址,多个TCP连接具有相同的目的IP地址。
在第二方面的一种可能的实现方式中,在获取多路径数据传输中每个路径的路径状态信息之前,方法还包括:通过最小往返时延minRTT算法进行数据传输,并确定每个路径的路径状态信息。
在第二方面的一种可能的实现方式中,方法在接收侧设备向发送侧设备发送数据包确认消息后执行。
在第二方面的一种可能的实现方式中,根据第一路径和第二路径的路径状态信息,计算调度给第一路径的数据包的第一数量X和调度给第二路径的数据包的第二数量Y,包括:根据第一路径和第二路径的路径状态信息,计算第一数量X和第二数量Y,使得调度给第一路径的X个数据包与调度给第二路径的Y个数据包同时到达接收侧设备。
在第二方面的一种可能的实现方式中,根据第一路径和第二路径的路径状态信息,计算第一数量X和第二数量Y,包括:
当Y’=0时,确定第一数量X为1,第二数量Y为0;
其中,L
1为第一路径的时延,L
2为第二路径的时延,B
1为第一路径的带宽,B
2为第二路径的带宽,D
1为第一路径的发送窗口中已经存在的数据量,D
2为第二路径的发送窗口中已经存在的数据量,MSS为数据包的最大分片大小。
在第二方面的一种可能的实现方式中,多路径数据传输还在第三路径上进行,第三路径的时延小于第一路径的时延且大于第二路径的时延,方法还包括:根据第一路径和第三路径的路径状态信息,以及调度给第一路径的数据包的第一数量X,计算调度给第三路径的数据包的第三数量Z;调度信息还用于指示发送侧设备通过第三路径向接收侧设备发送第三数量Z个数据包,通过第三路径发送的Z个数据包的所有数据包的序号小于任意一个通过第一路径发送的X个数据包的序号,且大于任意一个通过第二路径发送的Y个数据包的序号。
第三方面,提供了一种数据传输方法,应用于发送侧设备,包括:
获取多路径数据传输中每个路径的路径状态信息,其中,路径状态信息包括时延和带宽的信息,其中,多路径数据传输的路径包括第一路径和第二路径,第一路径为多路径数据传输的所有路径中时延最长的路径;
根据第一路径和第二路径的路径状态信息,在第一时刻通过第一路径发送序号为N的数据包,在第二时刻通过第二路径发送序号为N-1的数据包,其中第一时刻和第二时刻的时间差大于第一阈值,第一阈值由第一路径和第二路径的路径状态信息决定,且第一阈值大于0.5ms。
第三方面的数据传输方法,根据多路径数据传输中每个路径的路径状态信息确定每个路径上调度的数据包,使得时延小的路径与时延大的另一路径上序号相邻的两个数据包的发送时刻的时间差大于第一阈值。从而使得数据包能够大约同时到达接收侧设备,能够很好的解决在多路径环境下并发速率低的问题,获得高聚合传输速率。
在第三方面的一种可能的实现方式中,多路径数据传输是基于同一个发送侧设备和同一个接收侧设备的多个传输控制协议TCP路径的合并数据传输。
在第三方面的一种可能的实现方式中,多路径数据传输是多路径传输控制协议MPTCP层的数据传输,序号为MPTCP序号。
在第三方面的一种可能的实现方式中,其特征在于,多路径数据传输中的任意两条路径基于不同的网卡或不同的芯片。
在第三方面的一种可能的实现方式中,第一阈值与第一路径的时延正相关,与第二路径的时延负相关。
在第三方面的一种可能的实现方式中,第一阈值与第一路径的带宽负相关,与第二路径的带宽正相关。
在第三方面的一种可能的实现方式中,第一阈值与第一路径的发送窗口中已经存在的数据量正相关,与第二路径的发送窗口中已经存在的数据量负相关。
在第三方面的一种可能的实现方式中,第一阈值大于2ms。
第四方面,提供了一种发送侧设备,包括:获取模块,用于获取多路径数据传输中每 个路径的路径状态信息,其中,路径状态信息包括时延和带宽的信息,其中,多路径数据传输的路径包括第一路径和第二路径,第一路径为多路径数据传输的所有路径中时延最长的路径;处理模块,用于根据获取模块获取的第一路径和第二路径的路径状态信息,计算调度给第一路径的数据包的第一数量X和调度给第二路径的数据包的第二数量Y;发送模块,用于通过第一路径向接收侧设备发送第一数量X个数据包,并通过第二路径向接收侧设备发送第二数量Y个数据包,通过第二路径发送的Y个数据包的序号均小于通过第一路径发送的X个数据包的序号。
在第四方面的一种可能的实现方式中,多路径传输仅包括第一路径和第二路径的传输,处理模块具体用于在调度发送侧设备的每个数据包之前,计算第一数量X和第二数量Y;发送模块具体用于当第二数量Y大于零,且第二路径的发送窗口有剩余空间,将发送侧设备的当前待分配的一个数据包分配给第二路径,否则将当前待分配的一个数据包分配给第一路径。
在第四方面的一种可能的实现方式中,处理模块还用于:在获取模块获取多路径数据传输中每个路径的路径状态信息之前,通过最小往返时延minRTT算法进行数据传输,并确定每个路径的路径状态信息。
在第四方面的一种可能的实现方式中,在上轮调度执行完毕且当前发送侧设备的发送队列仍有数据包待调度时;或在有数据包进入发送侧设备的发送队列时,或在发送侧设备接收到接收侧设备发送的数据包确认消息时获取模块、处理模块和发送模块执行操作。
在第四方面的一种可能的实现方式中,处理模块具体用于:根据第一路径和第二路径的路径状态信息,计算第一数量X和第二数量Y,使得调度给第一路径的X个数据包与调度给第二路径的Y个数据包同时到达接收侧设备。
在第四方面的一种可能的实现方式中,处理模块具体用于:假设第一中间数量X’为1,确定第二中间数量
当Y’>0时,确定第一数量X为1,第二数量
当Y’=0时,确定第一数量X为1,第二数量Y为0;当Y’<0时,确定第一数量
第二数量Y为1;其中,L
1为第一路径的时延,L
2为第二路径的时延,B
1为第一路径的带宽,B
2为第二路径的带宽,D
1为第一路径的发送窗口中已经存在的数据量,D
2为第二路径的发送窗口中已经存在的数据量,MSS为数据包的最大分片大小。
在第四方面的一种可能的实现方式中,多路径数据传输还在第三路径上进行,第三路径的时延小于第一路径的时延且大于第二路径的时延,处理模块还用于:根据第一路径和第三路径的路径状态信息,以及调度给第一路径的数据包的第一数量X,计算调度给第三路径的数据包的第三数量Z;发送模块还用于:通过第三路径向接收侧设备发送第三数量Z个数据包,通过第三路径发送的Z个数据包的所有数据包的序号小于任意一个通过第一路径发送的X个数据包的序号,且大于任意一个通过第二路径发送的Y个数据包的序号。
第五方面,提供了一种接收侧设备,包括:获取模块,用于获取多路径数据传输中每 个路径的路径状态信息,其中,路径状态信息包括时延和带宽的信息,其中,多路径数据传输的路径包括第一路径和第二路径,第一路径为多路径数据传输的所有路径中时延最长的路径;处理模块,用于根据获取模块获取的第一路径和第二路径的路径状态信息,计算调度给第一路径的数据包的第一数量X和调度给第二路径的数据包的第二数量Y;发送模块,用于向发送侧设备发送调度信息,调度信息用于指示发送侧设备通过第一路径向接收侧设备发送第一数量X个数据包,并指示发送侧设备通过第二路径向接收侧设备发送第二数量Y个数据包。
在第五方面的一种可能的实现方式中,处理模块还用于:在获取模块获取多路径数据传输中每个路径的路径状态信息之前,通过最小往返时延minRTT算法进行数据传输,并确定每个路径的路径状态信息。
在第五方面的一种可能的实现方式中,在接收侧设备向发送侧设备发送数据包确认消息后,获取模块、处理模块和发送模块执行操作。
在第五方面的一种可能的实现方式中,处理模块具体用于:根据第一路径和第二路径的路径状态信息,计算第一数量X和第二数量Y,使得调度给第一路径的X个数据包与调度给第二路径的Y个数据包同时到达接收侧设备。
在第五方面的一种可能的实现方式中,处理模块具体用于:假设第一中间数量X’为1,确定第二中间数量
当Y’>0时,确定第一数量X为1,第二数量
当Y’=0时,确定第一数量X为1,第二数量Y为0;当Y’<0时,确定第一数量
第二数量Y为1;其中,L
1为第一路径的时延,L
2为第二路径的时延,B
1为第一路径的带宽,B
2为第二路径的带宽,D
1为第一路径的发送窗口中已经存在的数据量,D
2为第二路径的发送窗口中已经存在的数据量,MSS为数据包的最大分片大小。
在第五方面的一种可能的实现方式中,多路径数据传输还在第三路径上进行,第三路径的时延小于第一路径的时延且大于第二路径的时延,处理模块还用于:根据第一路径和第三路径的路径状态信息,以及调度给第一路径的数据包的第一数量X,计算调度给第三路径的数据包的第三数量Z;调度信息还用于指示发送侧设备通过第三路径向接收侧设备发送第三数量Z个数据包,通过第三路径发送的Z个数据包的所有数据包的序号小于任意一个通过第一路径发送的X个数据包的序号,且大于任意一个通过第二路径发送的Y个数据包的序号。
第六方面,提供了一种发送侧设备,包括:获取模块,用于获取多路径数据传输中每个路径的路径状态信息,其中,路径状态信息包括时延和带宽的信息,其中,多路径数据传输的路径包括第一路径和第二路径,第一路径为多路径数据传输的所有路径中时延最长的路径;发送模块,用于根据获取模块获取的第一路径和第二路径的路径状态信息,在第一时刻通过第一路径发送序号为N的数据包,在第二时刻通过第二路径发送序号为N-1的数据包,其中第一时刻和第二时刻的时间差大于第一阈值,第一阈值由第一路径和第二 路径的路径状态信息决定,且第一阈值大于0.5ms。
在第六方面的一种可能的实现方式中,多路径数据传输是基于同一个发送侧设备和同一个接收侧设备的多个传输控制协议TCP路径的合并数据传输。
在第六方面的一种可能的实现方式中,多路径数据传输是多路径传输控制协议MPTCP层的数据传输,序号为MPTCP序号。
在第六方面的一种可能的实现方式中,多路径数据传输中的任意两条路径基于不同的网卡或不同的芯片。
在第六方面的一种可能的实现方式中,第一阈值与第一路径的时延正相关,与第二路径的时延负相关。
在第六方面的一种可能的实现方式中,第一阈值与第一路径的带宽负相关,与第二路径的带宽正相关。
在第六方面的一种可能的实现方式中,第一阈值与第一路径的发送窗口中已经存在的数据量正相关,与第二路径的发送窗口中已经存在的数据量负相关。
在第六方面的一种可能的实现方式中,第一阈值大于2ms。
第七方面,提供了一种发送侧设备,包括处理器和存储器,处理器与存储器耦合,存储器用于存储计算机程序或指令,处理器用于执行存储器中的计算机程序或指令,以执行第一方面或第一方面中任一种可能实现方式中的方法。
可选地,该发送侧设备还包括通信接口,处理器与通信接口耦合。
在第七方面的一种可能的实现方式中,通信接口可以是收发器,或,输入/输出接口。
在第七方面的一种可能的实现方式中,处理器为一个或多个,存储器为一个或多个。
在第七方面的一种可能的实现方式中,存储器可以与处理器集成在一起,或者存储器与处理器分离设置。
读存储器(read only memory,ROM),其可以与处理器集成在同一块芯片上,也可以在具体实现过程中,存储器可以为非瞬时性(non-transitory)存储器,例如只分别设置在不同的芯片上。
应理解,相关的数据交互过程例如发送指示信息可以为从处理器输出指示信息的过程,接收能力信息可以为处理器接收输入能力信息的过程。具体地,处理输出的数据可以输出给发射器,处理器接收的输入数据可以来自接收器。其中,发射器和接收器可以统称为收发器。
第八方面,提供了一种接收侧设备,包括处理器和存储器,处理器与存储器耦合,存储器用于存储计算机程序或指令,处理器用于执行存储器中的计算机程序或指令,以执行第二方面或第二方面中任一种可能实现方式中的方法。
可选地,该接收侧设备还包括通信接口,处理器与通信接口耦合。
在第八方面的一种可能的实现方式中,通信接口可以是收发器,或,输入/输出接口。
在第八方面的一种可能的实现方式中,处理器为一个或多个,存储器为一个或多个。
在第八方面的一种可能的实现方式中,存储器可以与处理器集成在一起,或者存储器与处理器分离设置。
读存储器(read only memory,ROM),其可以与处理器集成在同一块芯片上,也可以在具体实现过程中,存储器可以为非瞬时性(non-transitory)存储器,例如只分别设置 在不同的芯片上。
应理解,相关的数据交互过程例如发送指示信息可以为从处理器输出指示信息的过程,接收能力信息可以为处理器接收输入能力信息的过程。具体地,处理输出的数据可以输出给发射器,处理器接收的输入数据可以来自接收器。其中,发射器和接收器可以统称为收发器。
第九方面,提供了一种发送侧设备,包括处理器和存储器,处理器与存储器耦合,存储器用于存储计算机程序或指令,处理器用于执行存储器中的计算机程序或指令,以执行第三方面或第三方面中任一种可能实现方式中的方法。
可选地,该发送侧设备还包括通信接口,处理器与通信接口耦合。
在第九方面的一种可能的实现方式中,通信接口可以是收发器,或,输入/输出接口。
在第九方面的一种可能的实现方式中,处理器为一个或多个,存储器为一个或多个。
在第九方面的一种可能的实现方式中,存储器可以与处理器集成在一起,或者存储器与处理器分离设置。
读存储器(read only memory,ROM),其可以与处理器集成在同一块芯片上,也可以在具体实现过程中,存储器可以为非瞬时性(non-transitory)存储器,例如只分别设置在不同的芯片上。
应理解,相关的数据交互过程例如发送指示信息可以为从处理器输出指示信息的过程,接收能力信息可以为处理器接收输入能力信息的过程。具体地,处理输出的数据可以输出给发射器,处理器接收的输入数据可以来自接收器。其中,发射器和接收器可以统称为收发器。
第十方面,提供了一种计算机可读存储介质,存储有计算机程序或指令,计算机程序或指令用于实现第一方面以及第一方面中任一种可能的实现方式中的方法。
第十一方面,提供了一种计算机可读存储介质,存储有计算机程序或指令,计算机程序或指令用于实现第二方面以及第二方面中任一种可能的实现方式中的方法。
第十二方面,提供了一种计算机可读存储介质,存储有计算机程序或指令,计算机程序或指令用于实现第三方面以及第三方面中任一种可能的实现方式中的方法。
图1是MPTCP使用场景的一个例子的示意图。
图2是在现有的minRTT算法下执行数据调度的示意图。
图3是强弱双路下载场景中两条路径下载过程的实际状况示意图。
图4是快路径低带宽利用率场景的示意图。
图5是接收侧设备丢包场景的示意图。
图6是中间网络设备丢包场景的示意图。
图7是现有的minRTT算法的原理示意图。
图8是现有的minRTT算法的原理示意图。
图9是本申请的一个实施例的端-云通信方式场景的示意图。
图10是本申请的一个实施例的端-端通信方式场景的示意图。
图11是本申请的一个实施例的云-云通信方式场景的示意图。
图12是本申请的一个实施例的数据调度方法的示意性流程图。
图13是本申请的一个实施例的数据调度方法的示意图。
图14是本申请的一个实施例的数据包分配的示意图。
图15是本申请的一个实施例的数据包分配的另一示意图。
图16是本申请的另一个实施例的数据传输方法的示意性流程图。
图17是本申请的另一个实施例的数据传输方法的示意性流程图。
图18是本申请的一个实施例的发送侧设备的示意性框图。
图19是本申请另一个实施例的发送侧设备的示意性框图。
图20是本申请的一个实施例的接收侧设备的示意性框图。
图21是本申请另一个实施例的接收侧设备的示意性框图。
图22是本申请的一个实施例的发送侧设备的示意性框图。
图23是本申请另一个实施例提供的发送侧设备的示意性框图。
下面将结合附图,对本申请中的技术方案进行描述。
首先对本申请中涉及的一些术语进行简单地说明。
本申请的多路径数据传输是基于同一个发送侧设备和同一个接收侧设备的多个TCP路径(链路)的合并数据传输。例如,多路径数据传输有是MPTCP层的数据传输。或者,可替代地,多路径数据传输是基于同一个发送侧设备和同一个接收侧设备的基于用户数据报协议(user datagram protocol,UDP)路径(链路)之上进行的可靠的合并数据传输,但本申请不仅限于此。
本申请中同一个发送侧设备和同一个接收侧设备是指数据流从同一个发送侧设备经过多条路径的合并数据传输到达同一个接收侧设备。
本申请中发送侧设备向接收侧设备发送的数据流的数据源可以是发送侧设备,也可以是一个或多个其他设备。数据流的数据源是多个其他设备的场景可以是如下场景。数据源可以包括多个内容分发网络(content delivery network,CDN)服务器,数据从该多个CDN服务器汇集到一个代理服务器处,再从该代理服务器发送到接收侧设备。其中,该代理服务器即为发送侧设备。
本申请中的序号(数据包的序号)是数据包在发送侧设备中的序号,是多路径数据传输层面的序号。例如,本申请中的序号可以是MPTCP序号,但本申请不仅限于此。
MPTCP对应同构路径的使用最多的场景包括例如数据中心网络。数据中心的服务器中拥有多个同构的以太网网口,服务器通过这些网口与外部设备进行高速地数据传输。
MPTCP对应异构路径的场景可以如下。利用MPTCP,终端设备可以在一个应用中建立多条并行的通道与其他设备上的应用进行通信。图1是MPTCP使用场景的一个例子的示意图。终端设备(例如手机)上通常具有两个网口,一个是连接本地网络的无线保真(wireless fidelity,Wi-Fi)网口,一个是连接外部网络的蜂窝网络网口,例如长期演进(long term evolution,LTE)网口。当手机上的某个应用使能MPTCP后,该应用的数据流可以通过Wi-Fi网口和LTE网口同时与外界(例如应用服务器)进行通信。此外,MPTCP已经被提交到Linux内核中,进而会被越来越多的应用到终端设备中去。例如,在华为、苹 果、三星等的手机中都推出了能够使能MPTCP的应用。
本申请中,不论路径是基于同样的通信技术还是基于不同的通信技术,只要路径状态差异较大,则认为该两条路径或多于两条的路径统称为异构路径。
现有的MPTCP默认的调度算法(例如minRTT算法)一般情况下能够较好地应用在同构多路径传输中,但由于路径状态是不断变化的,因此也有minRTT算法应用于同构多路径传输时聚合传输速率低的情况存在。对于路径状态相差较大的多路径,该调度算法的效果较差,这使得现有的MPTCP在多路径网络中的聚合传输速率低。
图2是在现有的minRTT算法下执行数据调度的示意图。在分配数据包之前,检测当前可用的各条路径(本例以两条路径,路径1和路径2作为示例)对应的子流的RTT。发送侧设备先从发送缓存中的发送队列(MPTCP层滑窗)中分配数据包给RTT最短的子流(路径1对应的子流1),直至路径1的发送窗口(也称拥塞窗口)1被分配满数据包。然后发送侧设备从发送队列中分配数据包给路径2,其中路径2具有发送窗口2,路径2对应子流2。路径1对应的子流1和路径2对应的子流2经过中间网络(in-network)设备,例如路由器,到达接收侧设备。其中,子流1到达路径1的接收窗口(也称通知窗口)1,子流2到达路径2的接收窗口2。接收窗口1和接收窗口2内的数据进入接收侧设备的接收缓存的接收队列。之后,接收侧设备向发送侧设备发送数据确认(data ACK)信息,其中分别通过两个路径发送TCP确认(TCP ACK)信息。
现有的调度算法(例如minRTT算法)没有考虑路径之间的差异,使得调度算法的效果较差,导致MPTCP在同构多路径网络或异构多路径网络中的聚合传输速率低。路径状态之间的差异主要体现在路径的带宽、RTT以及丢包率存在较大差别。实际测试结果显示对于使用Wi-Fi路径和LTE路径的终端设备,两条不同路径的RTT存在着非常大的差别,特别是当终端设备所处的Wi-Fi或者LTE网络环境不好时,二者的RTT、带宽和丢包率差别巨大。链路状态差距较大时,现有的调度算法minRTT算法会存在多路径发送的数据包乱序到达问题,进而导致接收侧设备的接收缓存数据包溢出,引起丢包,从而导致现有的MPTCP在利用这种多路径网络进行并发数据传输时速率较低。测试结果显示,大多数异构网络场景下MPTCP的并发数据传输速率低于利用传统的单路径TCP的数据传输速率。图3是强弱双路下载场景中两条路径下载过程的实际状况示意图。如图3所示,对于RTT相差较大、带宽分别为20Mbps和5Mbps的强弱双路下载场景,两条路径下载过程的实际状况强弱双路聚合后的带宽均明显小于两条路径中带宽较大的那一路的带宽。其中图3的横坐标为采样点,纵坐标为下载速率。
MPTCP在多路径网络尤其是强弱多路并发数据传输中,聚合传输速率低主要包括以下三个方面的问题:1、快路径的低带宽利用率问题;2、接收侧设备的丢包问题;3、中间网络设备的丢包问题。这三个问题共同导致了当前的多路径多路径并发数据传输速率较低。
1、快路径的低带宽利用率问题
图4是快路径低带宽利用率场景的示意图。当多条路径的时延(即RTT)存在较大差异时,RTT较大的路径会使得RTT较小的路径的速率降低,即强路被弱路所拖累。如图4所示的场景,路径A的RTT较小,路径B的RTT较大。发送侧设备的发送缓存的发送队列中有数据包21-30和数据包31-80。数据包21-30被分配到路径B传输,数据包31-80 被分配到路径A传输,发送侧设备的发送队列的指针指向数据包31-80之后。RTT较小的路径A被分配的数据包31-80已经到达接收侧设备,并已收到针对数据包31-80的TCP ACK信息,路径A的发送窗口1的指针在最右侧,路径A的发送窗口1为空。RTT较大的路径B被分配的数据包21-30已经发出,路径B的发送窗口2的指针在数据包21-30之后,但并未到达接收侧设备,即未收到数据包21-30的TCP ACK信息。接收侧设备的应用(application,APP)是按包序号顺序取出数据包的,所以接收侧设备的接收缓存的接收队列处在等待状态。由于发送侧设备需等待接收侧设备回复的数据ACK信息后才能释放发送缓存的数据包,所以当发送侧设备的发送缓存较小时就会出现无数据可分配的状态,快路径(路径A)会处于空闲之中,造成快路径的带宽浪费问题。
2、接收侧设备的丢包问题
图5是接收侧设备丢包场景的示意图。当多条路径的时延(即RTT)存在较大差异、发送侧设备的发送缓存较大时,RTT小的路径的数据包源源不断从快路径到达接收侧设备,最终导致接收侧设备的接收缓存满,不得不将数据包丢弃。如图5所示,路径A的RTT较小,路径B的RTT较大。发送侧设备的发送缓存的发送队列中有数据包221-230、数据包231-280和数据包281-300。数据包221-230被分配到路径B传输,数据包231-280和数据包281-300被分配到路径A传输,发送侧设备的发送队列的指针指向数据包281-300之后。RTT小的路径A的数据包231-280比路径B的数据包221-230还要先到达接收侧设备的接收缓存,并已收到针对数据包231-280的TCP ACK信息。此外路径A的数据包281-300也已发出,路径A的发送窗口1的指针在数据包281-300之后。路径B的数据包221-230已发出,但还未到达接收侧设备的接收缓存,路径B的发送窗口2的指针在数据包221-230之后。数据包231-280的到达使得接收侧设备的接收缓存满。并且,路径A的数据包281-300也即将到达接收侧设备的接收缓存,RTT小的路径A数据包还在源源不断到达接收侧设备。由于接收侧设备的接收缓存满,不得不将数据包丢弃,造成接收侧设备出现丢包问题。根据现有的TCP拥塞控制算法,当某个路径(例如路径A)出现丢包后,即认为该路径出现了拥塞。该路径上的发送窗口会被减小为原有窗口大小的一半,这导致路径的实际发送速率下降。
3、中间网络设备的丢包问题
图6是中间网络设备丢包场景的示意图。多条路径的时延(即RTT)存在较大差异的情况下,当慢路径上分配的数据包终于到达接收侧设备后,数据包会被接收侧设备的应用从接收缓存中全部取出。此时发送侧设备会收到接受侧设备的数据ACK信息,发送侧设备会立刻在快路径上分配大量的数据包。如图6所示,路径A的RTT较小,路径B的RTT较大。发送侧设备的发送缓存的发送队列中有数据包331-430和数据包431-460。当接收侧设备的应用从接收缓存中按包顺序将数据包201-230,数据包231-280以及数据包281-330全部取出后,发送侧设备会立刻在快路径(路径A)上分配大量的数据包。数据包331-430被分配到路径A传输,数据包431-460被分配到路径B传输,发送侧设备的发送缓存的发送队列的指针指向数据包431-460之后。路径A的数据包331-430已发出,路径A的发送窗口1的指针在数据包331-430之后。路径B的数据包431-460也已发出,路径B的发送窗口2的指针在数据包431-460之后。这种非平滑的数据包分配,可能会导致快路径(路径A)的中间网络设备来不及处理突然到来的如此大量的数据,而不得不将这 些数据丢掉。这样也会造成路径上出现丢包,引发路径发送窗口大小减半,进而导致快路径的实际发送速率下降。
综上,在多路径的离线下载场景中,多路径之间的链路差异是客观事实。图7是现有的数据包调度算法(minRTT算法)的原理示意图。图8是现有的数据包调度算法(minRTT算法)的另一原理示意图。如图7和图8所示,假设发送侧设备的发送缓存可以容纳10个数据包,路径A的发送窗口1可以容纳2个数据包,路径B的发送窗口2可以容纳2个数据包,路径A的RTT短于路径B的RTT(例如,假设路径B的RTT是路径A的RTT的4倍)。发送侧设备的发送队列中的10个数据包为:数据包1、数据包2、数据包3、数据包4、……数据包10。minRTT算法调度数据包时,依RTT由短到长,先将路径A分配满数据包,即分配数据包1和数据包2,之后再把路径B分配满数据包,即分配数据包3和数据包4。由于路径A的RTT短于路径B,数据包1和数据包2很快就能到达接收侧设备,则minRTT算法会再调度数据包5和数据包6给路径A,数据包5和数据包6也到达接收侧设备,同时路径B的数据包3也到达接收侧设备。minRTT算法会再调度数据包7和数据包8给路径A,调度数据包9给路径B。数据包7和数据包8到达接收侧设备后,再调度数据包10……给路径A,……。然而在接收侧设备的接收队列中,数据包的到达顺序是数据包1、数据包2、数据包5、数据包6、数据包3、数据包7、数据包8、数据包10……。数据包4和数据包9则还要经过较长的时间才能到达接收侧设备。即数据包是乱序到达的,这会造成带宽浪费和丢包问题,最终表现为多路径聚合传输速率较低。
为解决上述问题,本申请提供了一种数据传输方法和数据调度装置,例如发送侧设备或接收侧设备。
本申请实施例的技术方案可以应用于利用多路径进行并行数据传输的场景。多路径中的任意两条路径可以是同构路径,也可以是异构路径。多路径数据传输中的任意两条路径可以基于不同的网卡或不同的芯片,即每条路径对应一个网卡或一个芯片。多路径数据传输中的两条路径也可以对应同一个网卡或同一个芯片,本申请对此不做限定。
多路径中的两条路径可以对应不同的通信系统。这些通信系统可以包括例如:全球移动通讯(global system of mobile communication,GSM)系统、码分多址(code division multiple access,CDMA)系统、宽带码分多址(wideband code division multiple access,WCDMA)系统、通用分组无线业务(general packet radio service,GPRS)、LTE系统、LTE频分双工(frequency division duplex,FDD)系统、LTE时分双工(time division duplex,TDD)、通用移动通信系统(universal mobile telecommunication system,UMTS)、Wi-Fi通信系统、全球互联微波接入(worldwide interoperability for microwave access,WiMAX)通信系统、未来的第五代(5th generation,5G)系统或新无线(new radio,NR)等。本申请实施例的技术方案还可以应用于有线传输的数据中心网络(data center network,DCN)。
本申请可以但不限于应用于Wi-Fi+Wi-Fi、Wi-Fi+LTE(4G)、4G+4G、4G+5G(NR)、5G+5G、Wi-Fi+4G+5G、DCN+DCN等多路径数据传输场景,以及传输协议基于传输控制协议/互联网协议(transmission control protocol/internet protocol,TCP/IP)协议栈的其他网络的多路径数据传输场景。
本申请可以应用于设备之间的通信,可以是端-端、端-云、云-云等不同的通信方式。
本申请的应用场景包括但不限于文件的离线下载、高清视频的在线观看、设备之间的 文件传输等需要高速传输的应用场景。
本申请的发送侧设备和接收侧设备可以是终端设备。终端设备可以指用户设备、接入终端、用户单元、用户站、移动站、移动台、远方站、远程终端、移动设备、用户终端、终端、无线通信设备、用户代理或用户装置。终端设备还可以是蜂窝电话、无绳电话、会话启动协议(session initiation protocol,SIP)电话、无线本地环路(wireless local loop,WLL)站、个人数字处理(personal digital assistant,PDA)、具有无线通信功能的手持设备、计算设备或连接到无线调制解调器的其它处理设备、车载设备、可穿戴设备,未来5G网络中的终端设备或者未来演进的公用陆地移动通信网络(public land mobile network,PLMN)中的终端设备等,本申请对此并不限定。本申请的终端设备上需要具备Wi-Fi芯片、4G通信模块、5G通信模块或者DCN传输模块等。
本申请的发送侧设备和接收侧设备可以是服务器设备。服务器设备上需要具备网卡装置。
图9是本申请的一个实施例的端-云通信方式场景的示意图。在端-云通信方式下,终端设备和服务器设备可以在强弱路径上利用多路径(例如,LTE和Wi-Fi双路径)进行数据传输。本申请的数据调度的计算可以由代理服务器(proxy server)或网络服务器(web server)等发送侧设备执行,也可以由终端设备等接收侧设备执行,还可以由其他的计算设备(例如数据调度装置或管理设备)执行,本申请对此不作限定。
图10是本申请的一个实施例的端-端通信方式场景的示意图。在端-端通信方式下,由于当前终端设备的内核中已经实现了MPTCP,通信双方建链时可以协商多个路径(或通道),所以在端-端通信方式中终端设备间也可以使用多路径进行通信。例如,终端设备和终端设备可以进行异构多路径远程点对点(peer to peer,P2P)通信传输或异构多路径客户端/服务端(client/server,C/S)通信传输或同构多路径通信传输。图10中仍以LTE和Wi-Fi双路径通信传输为例。当终端设备A向终端设备B发送数据时,可以在终端设备A(发送侧设备)的内核中执行数据调度的计算,以进行数据在多路径上的分配,也可以由终端设备B(接收侧设备)执行,还可以由其他的计算设备(例如数据调度装置或管理设备)执行。同理当终端设备B向终端设备A发送数据时,可以在终端设备B(发送侧设备)的内核中执行本申请的数据调度的计算,以进行数据在多路径上的分配,也可以由终端设备A(接收侧设备)执行,还可以由其他的计算设备(例如数据调度装置或管理设备)执行,本申请对此不作限定。
图11是本申请的一个实施例的云-云通信方式场景的示意图。图11所示的具体为数据终端与数据中心服务器通信,来获取数据的场景。数据终端与数据中心服务器通过有线的多条路径进行数据传输。当数据中心服务器向数据终端发送数据时,可以在数据中心服务器(发送侧设备)中执行本申请实施例的数据调度方法,以进行数据在多路径上的分配,也可以由数据终端(接收侧设备)执行,还可以由其他的计算设备(例如数据调度装置或管理设备)执行,本申请对此不作限定。
下面从发送侧设备的角度说明本申请的数据传输方法。
本申请提供了一种数据传输方法,其应用于发送侧设备。图12是本申请的一个实施例的数据传输方法1200的示意性流程图。如图12所示,方法1200可以包括以下步骤。S1210,获取多路径数据传输中每个路径的路径状态信息,其中,路径状态信息包括时延 和带宽的信息,其中,多路径数据传输的路径包括第一路径和第二路径,第一路径为多路径数据传输的所有路径中时延最长的路径;S1220,根据第一路径和第二路径的路径状态信息,计算调度给第一路径的数据包的第一数量X和调度给第二路径的数据包的第二数量Y;S1230,通过第一路径向接收侧设备发送第一数量X个数据包,并通过第二路径向接收侧设备发送第二数量Y个数据包,通过第二路径发送的Y个数据包的序号均小于通过第一路径发送的X个数据包的序号。
本申请实施例提供的数据传输方法,获取多路径数据传输中每个路径的时延和带宽等路径状态信息,计算调度给时延最长的第一路径的数据包的第一数量和调度给第二路径的数据包的第二数量,通过各路径发送数据包且通过第二路径发送的第二数量个数据包的序号均小于通过第一路径发送的第一数量个数据包的序号,能够很好的解决在多路径环境下并发速率低的问题,获得高聚合传输速率。
在本申请的一些实施例中,多路径中可以存在至少一个路径包括多个TCP连接,多个TCP连接具有相同的源互联网协议(internet protocol,IP)地址,多个TCP连接具有相同的目的IP地址。换而言之,本申请一些实施例中,具有相同的源IP地址和相同的目的IP地址的多个TCP连接属于同一路径。
其中,时延的信息可以包括RTT,也可以包括数据传输的单路(仅发送过程)时延,其中单路时延可以根据RTT和/或数据发送的时间戳等测算。本申请实施例提供的数据传输方法,放弃现有的依RTT由短到长的路径顺序,按数据包序号将一条路径的发送窗口分配满数据包之后再把另一条路径的发送窗口分配满数据包这样的调度方案,而是根据路径状态信息,计算调度给不同路径的数据包的数量,根据计算的数量为RTT短的路径分配序号小的数据包,为RTT长的路径分配序号大的数据包,使得数据包在接收侧设备尽量按序到达。
当然,本申请其他的实施例中也可以不按照为RTT短的路径分配序号小的数据包,为RTT长的路径分配序号大的数据包的方式调度数据包,而是在数据包序号的分配上采用更灵活的分配方式,本申请对此不做限定。
在本申请的一些实施例中,发送侧设备获取的路径状态信息中的带宽信息可以是由接收侧设备发送的。在这些实施例中,接收侧设备测量带宽,并把带宽信息发送给发送侧设备。带宽的信息也可以由发送侧设备根据数据ACK信息等进行测量得到,本申请对此不做限定。
在本申请的一些实施例中,路径状态信息还可以包括第一路径和第二路径各自的发送窗口使用情况的信息,例如各路径发送窗口中已经存在的数据量。此外,发送窗口使用情况的信息还可以是发送窗口剩余的空间大小或者发送窗口使用情况的信息是指发送窗口的大小等,本申请对此不作限定。其中,本申请中发送窗口用于缓存路径上已发送但未收到数据包确认消息的数据包和允许发送但尚未发送的数据包。
在本申请的一些实施例中,路径状态信息还可以包括数据包的最大分片大小(maximum segment size,MSS)。MSS也称为最大报文长度,是TCP定义的一个选项,用于在TCP连接建立时,收发双方协商通信时每一个报文段所能承载的最大数据长度(数据包每次能够传输的最大数据分段)。MSS的值可以是测量得到的,也可以是协议规定或系统默认的,本申请对此不作限定。可替代地,路径状态信息还可以包括能够表征数据 包大小的其他参数,本申请对此不作限定。
此外,路径状态信息还可以包括丢包率信息,该丢包率信息也可以由接收侧设备测量并提供。
应理解,本申请的一些实施例中,路径状态信息中的某一个或某几个信息可以是测量得到的,测量的结果可能并不准确。
在本申请的一些实施例中,可以判断路径状态信息中的某一个或某几个信息是否符合预设的判断条件。当符合判断条件时,对路径状态信息中的某一个或某几个信息进行调整或校正。例如,如果第二路径的带宽b2>=第一路径的带宽b1,则判断第一路径的发送窗口中已经存在的数据量d1的情况和第一路径上已发送但未收到数据包确认消息的数据量inf1的情况。当d1==0并且inf1<=第一路径的发送窗口1的大小wnd1/2,则增加第一路径的发送速率(带宽),b1=2*b1。本申请其他的实施例可以基于其他的判断条件和调整方式,对第一路径的带宽进行校正。本申请其他的实施例还可以基于一定的判断条件和调整方式,对第一路径的其他路径状态信息进行校正,本申请对此不做限定。
在本申请的一些实施例中,S1220根据第一路径和第二路径的路径状态信息,计算调度给第一路径的数据包的第一数量X和调度给第二路径的数据包的第二数量Y,可以包括:根据第一路径和第二路径的路径状态信息,计算第一数量X和第二数量Y,使得调度给第一路径的X个数据包与调度给第二路径的Y个数据包同时到达接收侧设备。
例如,具体而言,可以假设调度给第一路径(channel 1)的第一数量X个数据包为第一数据包,调度给第二路径(channel 2)的第二数量Y个数据包为第二数据包。假设L
1为第一路径的时延,L
2为第二路径的时延;B
1为第一路径的带宽,B
2为第二路径的带宽;D
1为第一路径的发送窗口中已经存在的数据量,D
2为第二路径的发送窗口中已经存在的数据量;MSS为数据包的最大分片大小。所有第一数据包从channel 1到达接收侧设备的时间为T
1。T
1可以基于如下公式的第一路径的时延L
1、第一路径的带宽B
1、第一路径的发送窗口中已经存在的数据量D
1和MSS,也可以基于其他参数。T
1可以基于以下公式,也可以基于其他公式,本申请对此不做限定。
所有第二数据包从channel 2到达接收侧设备的时间为T
2。类似T
1地,T
2可以基于以下公式,也可以基于其他公式,本申请对此不做限定。
要使得所有第一数据包中的最后一个数据包和所有第二数据包中的最后一个数据包分别通过第一路径和第二路径同时到达接收侧设备,则应有T
1=T
2。
应理解,在本申请的一些实施例中,计算得到大致使得通过第一路径和第二路径同时到达接收侧设备的第一数据包的数量X和第二数据包的数量Y。这里之所是大致使得同时到达接收侧设备是由于,一来测量得到的路径状态信息是一段时间的统计值,该值存在一定的误差;二来,初步计算得到的第一数据包的数量X和第二数据包的数量Y很有可能不是整数,本申请各实施例可以采取上取整、下取整、四舍五入取整之后获得整数数量。
本申请实施例的数据传输方法中的数据调度算法,放弃现有的依RTT由短到长的路径顺序,按数据包序号将一条路径的发送窗口分配满数据包之后再把另一条路径的发送窗口分配满数据包这样的调度方案。在各条路径上分配数据包时,不再以填满路径的发送窗口为标准,为不同路径分配的数据包的序号存在间隔(gap)差值,从而达到各路径分配的数据包顺序到达接收侧设备的目的。为第一路径分配的所有数据包的序号是连续的,为第二路径分配的所有数据包的序号是连续的,且由于第二路径的时延短与第一路径的时延,第二路径发送的Y个数据包的序号均小于通过第一路径发送的X个数据包(X个数据包中的任一个数据包)的序号。当第一路径的发送窗口有空间时,便将X个数据包中的数据包按序号顺序填入第一路径的发送窗口并发出;同理第二路径的发送窗口有空间时,便将Y个数据包中的数据包按序号顺序填入第二路径的发送窗口并发出。
图13是本申请的一个实施例的数据传输方法的示意图。如图13所示,发送侧设备从发送缓存中将数据包发送到第一路径和第二路径。其中发送侧设备处基于MPTCP,第一路径和第二路径基于TCP。在一个具体的例子中,第一路径的时延大于第二路径的时延,根据本申请实施例的方法计算得到第二路径发送6个数据包(例如数据包11-16),第一路径上发送1个数据包(例如数据包17)。TCP对应的两个条块为包序列轴,表示路径被分配发送的数据包的数量。第一路径上起始数据包的序号与第二路径上起始数据包的序号的间隔(gap)为6。
下面以一个具体的例子说明根据路径状态信息,计算各路径上数据包数量的过程。
假设,第一路径的时延大于第二路径的时延,即L
1>L
2,基于前文的等式T
1=T
2,有:
X可以取适当大小的数值,例如1或2等。计算得到的Y可以取整数,例如向上取整、向下取整或四舍五入取整等。X的取值可以根据各路径的发送缓存的大小选取。
当Y’>0时,确定第一数量X为1,第二数量
当Y’=0时,确定第一数量X为1,第二数量Y为0;
接下来,再对数据包的具体分配进行详细的说明。
在本申请的一些实施例中,多路径传输仅包括第一路径和第二路径的传输,S1220根据第一路径和第二路径的路径状态信息,计算调度给第一路径的数据包的第一数量X和调度给第二路径的数据包的第二数量Y;S1230通过第一路径向接收侧设备发送第一数量X个数据包,并通过第二路径向接收侧设备发送第二数量Y个数据包,可以包括:在调度发送侧设备的每个数据包之前,计算第一数量X和第二数量Y,当第二数量Y大于零,且 第二路径的发送窗口有剩余空间,将发送侧设备的当前待分配的一个数据包分配给第二路径,否则将当前待分配的一个数据包分配给第一路径。
应理解,在调度发送侧设备的每个数据包之前,计算第一数量X和第二数量Y,然后调度当前待分配的一个数据包的最终调度结果,能够与现有的TCP兼容,即对每个数据包逐一进行调度。并且,在调度发送侧设备的每个数据包之前,计算第一数量X和第二数量Y,然后调度当前待分配的一个数据包的最终调度结果通常能够与计算第一数量X和第二数量Y后直接调度X+Y个数据包的结果相同。
此外,对数据包的具体分配还可以参考路径的拥塞情况,例如当某路径出具拥塞状态时不在该路径上分配数据包。对数据包的具体分配还可以参考其他参数或信息,本申请对此不做限定。
本申请实施例的数据传输方法可以适用于多于两条路径的数据传输场景。例如,多路径数据传输还可以在第三路径上进行。当本申请的数据传输方法适用于多于两条路径的数据传输场景时,可以按照路径的时延从小到大,依次分配数据包,即为时延小的路径优先分配数据包。
在本申请的一些实施例中,多路径数据传输还在第三路径上进行,第三路径的时延小于第一路径的时延且大于第二路径的时延,方法还包括:根据第一路径和第三路径的路径状态信息,以及调度给第一路径的数据包的第一数量X,计算调度给第三路径的数据包的第三数量Z;通过第三路径向接收侧设备发送第三数量Z个数据包,通过第三路径发送的Z个数据包的所有数据包的序号小于任意一个通过第一路径发送的X个数据包的序号,且大于任意一个通过第二路径发送的Y个数据包的序号。
具体而言,假设第三路径的时延L
3大于第二路径的时延L
2,且第三路径的时延L
3小于第一路径的时延L
1,即L
2<L
3<L
1。B
1为第一路径的带宽,B
2为第二路径的带宽,B
3为第三路径的带宽;D
1为第一路径的发送窗口中已经存在的数据量,D
2为第二路径的发送窗口中已经存在的数据量,D
3为第三路径的发送窗口中已经存在的数据量;MSS为数据包的最大分片大小。
假设调度给第一路径(channel 1)的第一数据包的数量为X,调度给第二路径(channel2)的第二数据包的数量为Y,调度给第三路径(channel 3)的第三数据包的数量为Z。则所有第一数据包从channel 1到达接收侧设备的时间为T
1:
所有第二数据包从channel 2到达接收侧设备的时间为T
2:
所有第三数据包从channel 3到达接收侧设备的时间为T
3:
要使得所有第一数据包中的最后一个数据包、所有第二数据包中的最后一个数据包和所有第三数据包中的最后一个数据包分别通过第一路径、第二路径和第三路径同时到达接 收侧设备,则应有T
1=T
2=T
3。由此计算出X、Y和Z的大小,并按数据包序号依次为第一路径、第二路径和第三路径分配数据包,此处不再赘述。
在一个具体的例子中,经过上述计算,确定调度给第一路径(路径A)的第一数量X为1,调度给第二路径(路径B)的第二数量Y为3。图14是本申请的一个实施例的数据包分配的示意图。图15是本申请的一个实施例的数据包分配的另一示意图。如图14和15所示,发送侧设备的发送缓存中等待发送的数据包有数据包1-10。RTT较短的路径B的发送窗口的剩余空间可以容纳1个数据包,则将数据包1分配给路径B,同时将数据包4分配给RTT较长的路径A。由于RTT较短,路径B的发送窗口很快便有空间了,此时将数据包2和数据包3依序放至路径B的发送窗口,并依序发出。接收侧设备按数据包序号顺序接收数据包1、数据包2、数据包3和数据包4。现有的数据调度方案中,数据包乱序到达接收侧设备,当接收侧设备的接收缓存装不下数据包时就会溢出丢包,导致重传发生和带宽降低。而本申请实施例中,数据包顺序到达接收侧设备,可以大大降低接收侧设备的接收缓存溢出丢包的概率,提高多路径网络的聚合传输速率。
在本申请的一些实施例中,在S1210在获取多路径数据传输中每个路径的路径状态信息之前,方法1200还可以包括:通过minRTT算法进行数据传输,并确定每个路径的路径状态信息。
在一些具体的例子中,可以在预设时间段内通过minRTT算法进行数据调度,并确定路径状态信息。在数据传输的初始阶段先在预设时间段内使用原MPTCP默认的调度算法(minRTT调度算法)进行数据包调度,在此基础上进行路径状态信息的统计和测量。在经过预设时间段后,时延和带宽等趋于稳定,再使用前文描述的数据调度方法调度数据包。在数据传输的初始阶段,由于TCP的慢启动,各路径的时延和带宽等很不稳定,如果在此时利用前文描述的数据传输方法调度数据包,那调度算法获得的结果也不稳定。在数据传输的初始阶段利用minRTT调度算法进行数据包调度,等到各路径的时延和带宽后,再切换到前文描述的数据调度方法,调度效果与各路径实际情况更匹配,有利于提高多路径网络的聚合传输速率。
在另一些具体的例子中,可以通过minRTT算法进行数据调度直至时延、带宽等参数的变化小于一定的阈值,或者时延、带宽等参数的值达到预设的标准,并确定使用minRTT算法这段时间内路径状态信息。例如,当发送侧设备收到的数据包ack的数量超过当前MPTCP发送缓存可缓存的数据包的一半时,由minRTT算法切换到本申请实施例的调度算法。或者,使用minRTT算法的过程中,当发送侧设备发现存在队头阻塞时,由minRTT算法切换到本申请实施例的调度算法。即当发送侧设备发现存在序号在前的数据包ack未到达而序号在后的数据包ack已到达的情况时,由minRTT算法切换到本申请实施例的调度算法。
在本申请的一些实施例中,方法1200在上轮调度执行完毕且当前发送侧设备的发送队列仍有数据包待调度时;或在数据包进入发送侧设备的发送数据队列时,或在发送侧设备接收到接收侧设备发送的数据包ACK消息时执行。这样可以使数据传输方法动态运行起来。此外,可以在执行一次本申请实施例的数据传输方法后,再调用一次本申请实施例的数据传输方法检测是否需要进行数据分配。或者,还可以基于其他的判断标准执行本申请实施例的数据传输方法,本申请对此不做限定。
在本申请的一些实施例中,如前文中描述的在端-云通信方式下,数据传输方法可以由数据的发送侧设备,即服务器设备执行,例如由代理服务器(proxy server)或网络服务器(web server)执行。具体可以由服务器设备中的调度器完成。相对应地,服务器设备通过第一路径向终端设备发送第一数量X个数据包,并通过第二路径向终端设备发送第二数量Y个数据包。在本申请的另一些实施例中,数据调度也可以由终端设备执行,然后终端设备将调度结果通知服务器设备,下文将进行详细说明。
在本申请的一些实施例中,如前文中描述的在端-端通信方式下,数据传输方法可以由数据的发送侧设备,即第一终端设备执行,具体可以由第一终端设备内核中的调度器完成。相对应地,第一终端设备通过第一路径向第二终端设备发送第一数量X个数据包,并通过第二路径向第二终端设备发送第二数量Y个数据包。在本申请的另一些实施例中,数据调度也可以由第二终端设备执行,然后第二终端设备将调度结果通知第一终端设备,下文将进行详细说明。
本申请还提供了一种数据传输方法,应用于接收侧设备。图16是本申请的另一个实施例的数据传输方法1600的示意性流程图。数据传输方法1600可以包括以下步骤。S1610,获取多路径数据传输中每个路径的路径状态信息,其中,路径状态信息包括时延和带宽的信息,其中,多路径数据传输的路径包括第一路径和第二路径,第一路径为多路径数据传输的所有路径中时延最长的路径;S1620,根据第一路径和第二路径的路径状态信息,计算调度给第一路径的数据包的第一数量X和调度给第二路径的数据包的第二数量Y;S1630,向发送侧设备发送调度信息,调度信息用于指示发送侧设备通过第一路径向接收侧设备发送第一数量X个数据包,并指示发送侧设备通过第二路径向接收侧设备发送第二数量Y个数据包。
本申请实施例提供的数据传输方法,接收侧设备获取多路径数据传输中每个路径的时延和带宽等路径状态信息,计算调度给时延最长的第一路径的数据包的第一数量和调度给第二路径的数据包的第二数量,通知发送侧设备通过各路径发送数据包,能够很好的解决在多路径环境下并发速率低的问题,获得高聚合传输速率。
在本申请的一些实施例中,多路径数据传输是基于同一个发送侧设备和同一个接收侧设备的多个TCP路径的合并数据传输。
在本申请的一些实施例中,调度信息还用于指示通过第二路径发送的Y个数据包的序号均小于通过第一路径发送的X个数据包的序号。
在本申请的一些实施例中,多路径数据传输是多路径传输控制协议MPTCP层的数据传输。
在本申请的一些实施例中,路径状态信息还包括路径的发送窗口使用情况的信息和数据包的最大分片大小MSS,其中发送窗口用于缓存路径上已发送但未收到数据包确认消息的数据包和允许发送但尚未发送的数据包。
在本申请的一些实施例中,多路径数据传输中的任意两条路径基于不同的网卡或不同的芯片。
在本申请的一些实施例中,时延的信息是接收侧设备从发送侧设备接收的。
在本申请的一些实施例中,第一路径和第二路径为异构路径。
在本申请的一些实施例中,多路径中存在至少一个路径包括多个TCP连接,该多个 TCP连接具有相同的源IP地址,多个TCP连接具有相同的目的IP地址。
在本申请的一些实施例中,在获取多路径数据传输中每个路径的路径状态信息之前,方法还包括:通过minRTT算法进行数据传输,并确定每个路径的路径状态信息。
在本申请的一些实施例中,方法在接收侧设备向发送侧设备发送数据包确认消息后执行。
在本申请的一些实施例中,根据第一路径和第二路径的路径状态信息,计算调度给第一路径的数据包的第一数量X和调度给第二路径的数据包的第二数量Y,包括:根据第一路径和第二路径的路径状态信息,计算第一数量X和第二数量Y,使得调度给第一路径的X个数据包与调度给第二路径的Y个数据包同时到达接收侧设备。
在本申请的一些实施例中,根据第一路径和第二路径的路径状态信息,计算第一数量X和第二数量Y,包括:根据第一路径和第二路径的路径状态信息,计算第一数量X和第二数量Y,包括:假设第一中间数量X’为1,确定第二中间数量
当Y’>0时,确定第一数量X为1,第二数量
当Y’=0时,确定第一数量X为1,第二数量Y为0;当Y’<0时,确定第一数量
第二数量Y为1;其中,L
1为第一路径的时延,L
2为第二路径的时延,B
1为第一路径的带宽,B
2为第二路径的带宽,D
1为第一路径的发送窗口中已经存在的数据量,D
2为第二路径的发送窗口中已经存在的数据量,MSS为数据包的最大分片大小。
在本申请的一些实施例中,多路径数据传输还在第三路径上进行,第三路径的时延小于第一路径的时延且大于第二路径的时延,方法还包括:根据第一路径和第三路径的路径状态信息,以及调度给第一路径的数据包的第一数量X,计算调度给第三路径的数据包的第三数量Z;调度信息还用于指示发送侧设备通过第三路径向接收侧设备发送第三数量Z个数据包,通过第三路径发送的Z个数据包的所有数据包的序号小于任意一个通过第一路径发送的X个数据包的序号,且大于任意一个通过第二路径发送的Y个数据包的序号。
本申请还提供一种数据传输方法,该方法可以由发送侧设备执行,该方法包括:获取多路径数据传输中每个路径的路径状态信息,其中,路径状态信息包括时延和带宽的信息,其中,多路径数据传输的路径包括第一路径和第二路径,第一路径为多路径数据传输的所有路径中时延最长的路径;根据第一路径和第二路径的路径状态信息,计算调度给第一路径的数据包的第一数量X和调度给第二路径的数据包的第二数量Y;通过第一路径向接收侧设备发送第一数量X个数据包,并通过第二路径向接收侧设备发送第二数量Y个数据包,使得Y个数据包和X个数据包按数据包序号由小到大顺序到达接收侧设备。
本申请还提供一种数据传输方法,该方法可以由发送侧设备执行,该方法包括:获取多路径数据传输中每个路径的路径状态信息,其中,路径状态信息包括时延和带宽的信息,其中,多路径数据传输的路径包括第一路径和第二路径,第一路径为多路径数据传输的所有路径中时延最长的路径;根据第一路径和第二路径的路径状态信息,通过第一路径向 接收侧设备发送第一数量X个数据包,并通过第二路径向接收侧设备发送第二数量Y个数据包,使得Y个数据包和X个数据包按数据包序号由小到大顺序到达接收侧设备。
本申请还提供一种数据传输方法,该方法可以由接收侧设备执行,该方法包括:获取多路径数据传输中每个路径的路径状态信息,其中,路径状态信息包括时延和带宽的信息,其中,多路径数据传输的路径包括第一路径和第二路径,第一路径为多路径数据传输的所有路径中时延最长的路径;根据第一路径和第二路径的路径状态信息,计算调度给第一路径的数据包的第一数量X和调度给第二路径的数据包的第二数量Y;向发送侧设备发送调度信息,调度信息用于指示发送侧设备通过第一路径向接收侧设备发送第一数量X个数据包,并指示发送侧设备通过第二路径向接收侧设备发送第二数量Y个数据,使得Y个数据包和X个数据包按数据包序号由小到大顺序到达接收侧设备。
下面以一段伪代码说明本申请实施例的数据传输方法。该段伪代码以发送侧设备进行数据调度计算为例进行说明。其中,每个套接字(socket)对应一个路径,socket 1的时延短,对应第二路径;socket 2的时延长,对应第一路径。
函数名:mptcp_next_segment()
功能:MPTCP调度器确定当前应该向哪个socket发送一个数据包。
调用周期:满足下列条件之一时,MPTCP会触发执行该函数:
1)发送侧设备的MPTCP链路的发送buffer(缓存)不为空,且先前的数据包调度执行完毕;
2)发送侧设备收到接收侧设备回复的数据包确认(ack)消息;
3)发送侧设备当前发送buffer为空,并出现第一个数据包。
执行:
1、使用原始的minRTT算法来确定MPTCP下各个路径(TCP链路)上发送的数据包及数量。当达到如下条件时minRTT算法将会被关闭,执行后序的调度算法:当前MPTCP通信连接发送的数据包及收到相应的数据包ack的数量超过当前MPTCP发送buffer对应数据包的一半。
2、对MPTCP链路执行how_many_packets_to_put_to_every_socket()功能,计算每个路径上发送的数据包的数量;
3、获得待分配数据包的socket,该socket需满足以下两个条件:
1)socket_is_in_blocking_state()==False,即该socket不能处在拥塞状态(通过函数func socket_is_in_blocking_state(socket,current_packet)判断);
2)向该socket增加的数据包的数量应该大于0。
4、从MPTCP链路的发送队列或者重传队列中取出第一个数据包(优先从重传队列中取数据包),作为步骤3中确认的socket的待发送数据包,分配给该socket。
函数名:how_many_packets_to_put_to_every_socket()
功能:计算当前调用时期,每条路径上应该发送的数据包的数量
1、如果任意socket的发送窗口均满则跳出本次数据包分配。
2、对当前的两个socket链路按照时延值由低到高进行排序,假设时延低的socket为socket1,另一个为socket 2;
3、分别计算两个socket的链路属性值:b1---socket 1的平均带宽,b2---socket 2的平均带宽,d1---socket 1的发送窗口中已经存在的数据量,d2---socket 2的发送窗口中已经存在的数据量,l1---socket 1的平均单向(one-way)时延,l2---socket 2的平均one-way时延,
inf1---socket 1当前的已发送但未收到数据包确认消息的数据量(inflight的数据包数量),inf2---socket 2当前的inflight的包数量,wnd1---socket 1的发送窗口大小,wnd2---socket 2的发送窗口大小。
4、执行数据包计算
Part 1:如果b1>=b2,则
Part 2:如果if(b1<b2and part_to_add<=0)or(Part 1中出现了part_to_add<=0)then,则
Part 3:如果if(part_to_add<=0)and(was not in first part)and(was in second part)则
Part 4:如果part_to_add<=0then
add_to_first_socket=1
add_to_second_socket=1
end if
函数名:func socket_is_in_blocking_state(socket,current_packet)
如果当前从发送队列中获得的处理的包和上一次调度时处理的包相同,则执行:
本申请还提供了一种数据传输方法,应用于接收侧设备。图17是本申请的另一个实施例的数据传输方法1700的示意性流程图。数据传输方法1700可以包括以下步骤。S1710,获取多路径数据传输中每个路径的路径状态信息,其中,路径状态信息包括时延和带宽的信息,其中,多路径数据传输的路径包括第一路径和第二路径,第一路径为多路径数据传输的所有路径中时延最长的路径;S1720,根据第一路径和第二路径的路径状态信息,在第一时刻通过第一路径发送序号为N的数据包,在第二时刻通过第二路径发送序号为N-1的数据包,其中第一时刻和第二时刻的时间差大于第一阈值,第一阈值由第一路径和第二路径的路径状态信息决定,且第一阈值大于0.5ms。
本申请实施例提供的数据传输方法,根据多路径数据传输中每个路径的路径状态信息确定每个路径上调度的数据包,使得时延小的路径与时延大的另一路径上序号相邻的两个数据包的发送时刻的时间差大于第一阈值。从而使得数据包能够大约同时到达接收侧设备,能够很好的解决在多路径环境下并发速率低的问题,获得高聚合传输速率。
例如如图15所示,时延小的路径B的数据包3与时延大的路径A的数据包4的发送时刻的时间差较大,大于第一阈值,第一阈值大约0.5ms。
本申请的一个实施例中,可以基于前文描述的调度算法使得在第一时刻通过第一路径发送序号为N的数据包,在第二时刻通过第二路径发送序号为N-1的数据包,其中第一时刻和第二时刻的时间差大于第一阈值。
本申请的另一个实施例中,也可以第一路径和第二路径的路径状态信息,通过计时器等使得第一时刻和第二时刻的时间差大于第一阈值。
本申请的其他实施例中,还可以通过其他方式控制,使得第一时刻和第二时刻的时间差大于第一阈值,本申请对此不做限定。
在本申请的一些实施例中,第一阈值与第一路径的时延正相关,与第二路径的时延负相关。
在本申请的一些实施例中,第一阈值与第一路径的带宽负相关,与第二路径的带宽正相关。
在本申请的一些实施例中,第一阈值与第一路径的发送窗口中已经存在的数据量正相关,与第二路径的发送窗口中已经存在的数据量负相关。
根据全文描述的数据包到达接收侧设备的时间公式,可以得到上述结论。
在本申请的一些实施例中,第一阈值大于2ms。
在本申请的一些实施例中,多路径数据传输是基于同一个发送侧设备和同一个接收侧设备的多个传输控制协议TCP路径的合并数据传输。
在本申请的一些实施例中,多路径数据传输是多路径传输控制协议MPTCP层的数据传输,序号为MPTCP序号。
在本申请的一些实施例中,多路径数据传输中的任意两条路径基于不同的网卡或不同的芯片。
在本申请的一些实施例中,第一路径和第二路径为异构路径。
相对于现有的基于minRTT调度算法的多路径数据传输,本申请提出的数据调度方法在异构的多路经数据传输的下载速率有明显提升。下面几个表格是在端-云通信方式的现网环境下,不同的双路网络环境下进行文件下载的速率对比结果。
表1
表2
表3
通过表1-3的对比结果可以看出,在异构的双路强弱路径条件下,本申请提出的方案下载速率平均提升161%,最高提升了507%。
以下表4-7是利用Wi-Fi和4G双路径环境下载视频的速率的对比结果。
表4
表5
表6
表7
通过4-7的对比结果可以看出,在端-云通信方式的异构的双路强弱路径条件下,本申请提出的方案的下载速率平均提升了140%,最高提升了244%。
应理解,上述表1至7中线程数对应于路径中TCP连接的数量。基于表1至7中的数据结果,路径中TCP连接的数量越多,使用本申请实施例的数据传输方法对聚合传输速率的提升效果越明显。
上文详细说明了本申请实施例的数据传输方法,下面结合图18至图23说明本申请实施例的发送侧设备和接收侧设备。
图18是本申请的一个实施例的发送侧设备1800的示意性框图。如图18所示,发送侧设备1800包括:获取模块1810,用于获取多路径数据传输中每个路径的路径状态信息,其中,路径状态信息包括时延和带宽的信息,其中,多路径数据传输的路径包括第一路径和第二路径,第一路径为多路径数据传输的所有路径中时延最长的路径;处理模块1820,用于根据获取模块获取的第一路径和第二路径的路径状态信息,计算调度给第一路径的数据包的第一数量X和调度给第二路径的数据包的第二数量Y;发送模块1830,用于通过第一路径向接收侧设备发送第一数量X个数据包,并通过第二路径向接收侧设备发送第二数量Y个数据包,通过第二路径发送的Y个数据包的序号均小于通过第一路径发送的X个数据包的序号。
在本申请的一些实施例中,多路径数据传输是基于同一个发送侧设备和同一个接收侧设备的多个传输控制协议TCP路径的合并数据传输。
在本申请的一些实施例中,多路径数据传输是多路径传输控制协议MPTCP层的数据传输。
在本申请的一些实施例中,路径状态信息还包括路径的发送窗口使用情况的信息和数据包的最大分片大小MSS,其中发送窗口用于缓存路径上已发送但未收到数据包确认消息的数据包和允许发送但尚未发送的数据包。
在本申请的一些实施例中,多路径数据传输中的任意两条路径基于不同的网卡或不同的芯片。
在本申请的一些实施例中,多路径中存在至少一个路径包括多个传输控制协议TCP连接,多个TCP连接具有相同的源互联网协议IP地址,多个TCP连接具有相同的目的IP地址。
在本申请的一些实施例中,多路径传输仅包括第一路径和第二路径的传输,处理模块1820具体用于在调度发送侧设备的每个数据包之前,计算第一数量X和第二数量Y;发送模块1830具体用于当第二数量Y大于零,且第二路径的发送窗口有剩余空间,将发送侧设备的当前待分配的一个数据包分配给第二路径,否则将当前待分配的一个数据包分配给第一路径。
在本申请的一些实施例中,处理模块1820还用于:在获取模块获取多路径数据传输中每个路径的路径状态信息之前,通过最小往返时延minRTT算法进行数据传输,并确定每个路径的路径状态信息。
在本申请的一些实施例中,在上轮调度执行完毕且当前发送侧设备的发送队列仍有数据包待调度时;或在有数据包进入发送侧设备的发送队列时,或在发送侧设备接收到接收侧设备发送的数据包确认消息时获取模块1810、处理模块1820和发送模块1830执行操作。
在本申请的一些实施例中,处理模块1820具体用于:根据第一路径和第二路径的路径状态信息,计算第一数量X和第二数量Y,使得调度给第一路径的X个数据包与调度给第二路径的Y个数据包同时到达接收侧设备。
在本申请的一些实施例中,处理模块1820具体用于:
当Y’=0时,确定第一数量X为1,第二数量Y为0;
其中,L
1为第一路径的时延,L
2为第二路径的时延,B
1为第一路径的带宽,B
2为第二路径的带宽,D
1为第一路径的发送窗口中已经存在的数据量,D
2为第二路径的发送窗口中已经存在的数据量,MSS为数据包的最大分片大小。
在本申请的一些实施例中,多路径数据传输还在第三路径上进行,第三路径的时延小于第一路径的时延且大于第二路径的时延,处理模块1820还用于:根据第一路径和第三路径的路径状态信息,以及调度给第一路径的数据包的第一数量X,计算调度给第三路径的数据包的第三数量Z;发送模块1830还用于:通过第三路径向接收侧设备发送第三数量Z个数据包,通过第三路径发送的Z个数据包的所有数据包的序号小于任意一个通过第一路径发送的X个数据包的序号,且大于任意一个通过第二路径发送的Y个数据包的序号。
图19是本申请另一个实施例的发送侧设备1900的示意性框图。如图19所示,该发送侧设备1900包括处理器1910,处理器1910与存储器1920耦合,存储器1920用于存储计算机程序或指令或者和/或数据,处理器1910用于执行存储器1920存储的计算机程序或指令和/或者数据,使得上文方法实施例中的方法被执行
可选地,该发送侧设备1900包括的处理器1910为一个或多个。
可选地,如图19所示,该发送侧设备1900还可以包括存储器1920。
可选地,该发送侧设备1900包括的存储器1920可以为一个或多个。
可选地,该存储器1920可以与该处理器1910集成在一起,或者分离设置。
可选地,该发送侧设备1900可以用于实现上文方法实施例中由发送侧设备执行的操作,并可以对应于上文的发送侧设备1800中的各单元。
可选地,该发送侧设备1900还包括收发器1930,收发器1930用于信号的接收和/或 发送。处理器1910用于控制收发器1930进行信号的接收和/或发送,使得上文方法实施例中的方法被执行。收发器1930可以是通信接口。
可选地,该发送侧设备1900可以为芯片或芯片系统。当该发送侧设备1900为芯片或芯片系统时,通信接口可以是该芯片或芯片系统上的输入/输出接口、接口电路、输出电路、输入电路、管脚或相关电路等。处理器也可以体现为处理电路或逻辑电路。
图20是本申请的一个实施例的接收侧设备2000的示意性框图。如图20所示,获取模块2010,用于获取多路径数据传输中每个路径的路径状态信息,其中,路径状态信息包括时延和带宽的信息,其中,多路径数据传输的路径包括第一路径和第二路径,第一路径为多路径数据传输的所有路径中时延最长的路径;处理模块2020,用于根据获取模块获取的第一路径和第二路径的路径状态信息,计算调度给第一路径的数据包的第一数量X和调度给第二路径的数据包的第二数量Y;发送模块2030,用于向发送侧设备发送调度信息,调度信息用于指示发送侧设备通过第一路径向接收侧设备发送第一数量X个数据包,并指示发送侧设备通过第二路径向接收侧设备发送第二数量Y个数据包。
在本申请的一些实施例中,多路径数据传输是基于同一个发送侧设备和同一个接收侧设备的多个传输控制协议TCP路径的合并数据传输。
在本申请的一些实施例中,多路径数据传输是多路径传输控制协议MPTCP层的数据传输。
在本申请的一些实施例中,路径状态信息还包括路径的发送窗口使用情况的信息和数据包的最大分片大小MSS,其中发送窗口用于缓存路径上已发送但未收到数据包确认消息的数据包和允许发送但尚未发送的数据包。
在本申请的一些实施例中,多路径数据传输中的任意两条路径基于不同的网卡或不同的芯片。
在本申请的一些实施例中,调度信息还用于指示通过第二路径发送的Y个数据包的序号均小于通过第一路径发送的X个数据包的序号。
在本申请的一些实施例中,时延的信息是接收侧设备2000从发送侧设备接收的。
在本申请的一些实施例中,多路径中存在至少一个路径包括多个传输控制协议TCP连接,多个TCP连接具有相同的源互联网协议IP地址,多个TCP连接具有相同的目的IP地址。
在本申请的一些实施例中,处理模块2020还可以用于:在获取模块获取多路径数据传输中每个路径的路径状态信息之前,通过最小往返时延minRTT算法进行数据传输,并确定每个路径的路径状态信息。
在本申请的一些实施例中,在接收侧设备2000向发送侧设备发送数据包确认消息后,获取模块2010、处理模块2020和发送模块2030执行操作。
在本申请的一些实施例中,处理模块2020具体用于:根据第一路径和第二路径的路径状态信息,计算第一数量X和第二数量Y,使得调度给第一路径的X个数据包与调度给第二路径的Y个数据包同时到达接收侧设备。
在本申请的一些实施例中,处理模块2020具体用于:
当Y’=0时,确定第一数量X为1,第二数量Y为0;
其中,L
1为第一路径的时延,L
2为第二路径的时延,B
1为第一路径的带宽,B
2为第二路径的带宽,D
1为第一路径的发送窗口中已经存在的数据量,D
2为第二路径的发送窗口中已经存在的数据量,MSS为数据包的最大分片大小。
在本申请的一些实施例中,多路径数据传输还在第三路径上进行,第三路径的时延小于第一路径的时延且大于第二路径的时延,处理模块2020还用于:根据第一路径和第三路径的路径状态信息,以及调度给第一路径的数据包的第一数量X,计算调度给第三路径的数据包的第三数量Z;调度信息还用于指示发送侧设备通过第三路径向接收侧设备发送第三数量Z个数据包,通过第三路径发送的Z个数据包的所有数据包的序号小于任意一个通过第一路径发送的X个数据包的序号,且大于任意一个通过第二路径发送的Y个数据包的序号。
图21是本申请另一个实施例的接收侧设备2100的示意性框图。如图21所示,该接收侧设备2100包括处理器2110,处理器2110与存储器2120耦合,存储器2120用于存储计算机程序或指令或者和/或数据,处理器2110用于执行存储器2120存储的计算机程序或指令和/或者数据,使得上文方法实施例中的方法被执行
可选地,该接收侧设备2100包括的处理器2110为一个或多个。
可选地,如图21所示,该接收侧设备2100还可以包括存储器2120。
可选地,该接收侧设备2100包括的存储器2120可以为一个或多个。
可选地,该存储器2120可以与该处理器2110集成在一起,或者分离设置。
可选地,该接收侧设备2100可以用于实现上文方法实施例中由接收侧设备执行的操作,并可以对应于上文的接收侧设备2000中的各单元。
可选地,该接收侧设备2100还包括收发器2130,收发器2130用于信号的接收和/或发送。处理器2110用于控制收发器2130进行信号的接收和/或发送,使得上文方法实施例中的方法被执行。收发器2130可以是通信接口。
可选地,该接收侧设备2100可以为芯片或芯片系统。当该接收侧设备2100为芯片或芯片系统时,通信接口可以是该芯片或芯片系统上的输入/输出接口、接口电路、输出电路、输入电路、管脚或相关电路等。处理器也可以体现为处理电路或逻辑电路。
图22是本申请的一个实施例的发送侧设备2200的示意性框图。如图22所示,发送侧设备2200包括:获取模块2210,用于获取多路径数据传输中每个路径的路径状态信息,其中,路径状态信息包括时延和带宽的信息,其中,多路径数据传输的路径包括第一路径 和第二路径,第一路径为多路径数据传输的所有路径中时延最长的路径;发送模块2220,用于根据获取模块获取的第一路径和第二路径的路径状态信息,在第一时刻通过第一路径发送序号为N的数据包,在第二时刻通过第二路径发送序号为N-1的数据包,其中第一时刻和第二时刻的时间差大于第一阈值,第一阈值由第一路径和第二路径的路径状态信息决定,且第一阈值大于0.5ms。
在本申请的一些实施例中,多路径数据传输是基于同一个发送侧设备和同一个接收侧设备的多个传输控制协议TCP路径的合并数据传输。
在本申请的一些实施例中,多路径数据传输是多路径传输控制协议MPTCP层的数据传输,序号为MPTCP序号。
在本申请的一些实施例中,多路径数据传输中的任意两条路径基于不同的网卡或不同的芯片。
在本申请的一些实施例中,第一阈值与第一路径的时延正相关,与第二路径的时延负相关。
在本申请的一些实施例中,第一阈值与第一路径的带宽负相关,与第二路径的带宽正相关。
在本申请的一些实施例中,第一阈值与第一路径的发送窗口中已经存在的数据量正相关,与第二路径的发送窗口中已经存在的数据量负相关。
在本申请的一些实施例中,第一阈值大于2ms。
图23是本申请另一个实施例提供的发送侧设备2300的示意性框图。如图23所示,该发送侧设备2300包括处理器2310,处理器2310与存储器2320耦合,存储器2320用于存储计算机程序或指令或者和/或数据,处理器2310用于执行存储器2320存储的计算机程序或指令和/或者数据,使得上文方法实施例中的方法被执行
可选地,该发送侧设备2300包括的处理器2310为一个或多个。
可选地,如图23所示,该发送侧设备2300还可以包括存储器2320。
可选地,该发送侧设备2300包括的存储器2320可以为一个或多个。
可选地,该存储器2320可以与该处理器2310集成在一起,或者分离设置。
可选地,该发送侧设备2300可以用于实现上文方法实施例中由发送侧设备执行的操作,并可以对应于上文的发送侧设备2200中的各单元。
可选地,该发送侧设备2300还包括收发器2330,收发器2330用于信号的接收和/或发送。处理器2310用于控制收发器2330进行信号的接收和/或发送,使得上文方法实施例中的方法被执行。收发器2330可以是通信接口。
可选地,该发送侧设备2300可以为芯片或芯片系统。当该发送侧设备2300为芯片或芯片系统时,通信接口可以是该芯片或芯片系统上的输入/输出接口、接口电路、输出电路、输入电路、管脚或相关电路等。处理器也可以体现为处理电路或逻辑电路。
上文中处理器可以是一个芯片,该处理器可以通过硬件来实现也可以通过软件来实现,当通过硬件实现时,该处理器可以是逻辑电路、集成电路等;当通过软件来实现时,该处理器可以是一个通用处理器,通过读取存储器中存储的软件代码来实现,该存储器可以集成在处理器中,可以位于该处理器之外,独立存在。
应理解,本申请实施例中提及的处理器可以包括中央处理器(central processing pnit, CPU),网络处理器(network processor,NP)或者CPU和NP的组合。处理器还可以进一步包括硬件芯片。上述硬件芯片可以是专用集成电路(application-specific integrated circuit,ASIC),可编程逻辑器件(programmable logic device,PLD)或其组合。上述PLD可以是复杂可编程逻辑器件(complex programmable logic device,CPLD),现场可编程逻辑门阵列(field-programmable gate array,FPGA),通用阵列逻辑(generic array logic,GAL)或其任意组合。
还应理解,本申请实施例中提及的存储器可以是易失性存储器(volatile memory)或非易失性存储器(non-volatile memory),或可包括易失性和非易失性存储器两者。其中,非易失性存储器可以是只读存储器(read-only memory,ROM)、可编程只读存储器(programmable ROM,PROM)、可擦除可编程只读存储器(erasable PROM,EPROM)、电可擦除可编程只读存储器(electrically EPROM,EEPROM)、快闪存储器(flash memory)、硬盘(hard disk drive,HDD)或固态硬盘(solid-state drive,SSD)。易失性存储器可以是随机存取存储器(random access memory,RAM),其用作外部高速缓存。通过示例性但不是限制性说明,许多形式的RAM可用,例如静态随机存取存储器(static RAM,SRAM)、动态随机存取存储器(dynamic RAM,DRAM)、同步动态随机存取存储器(synchronous DRAM,SDRAM)、双倍数据速率同步动态随机存取存储器(double data rate SDRAM,DDRSDRAM)、增强型同步动态随机存取存储器(enhanced SDRAM,ESDRAM)、同步连接动态随机存取存储器(synchlink DRAM,SLDRAM)和直接内存总线随机存取存储器(direct rambus RAM,DR RAM)。
需要说明的是,当处理器为通用处理器、DSP、ASIC、FPGA或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件时,存储器(存储模块)集成在处理器中。
应注意,本文描述的存储器旨在包括但不限于这些和任意其它适合类型的存储器。
本申请还提供了一种计算机程序产品,计算机程序产品包括:计算机程序(也可以称为代码,或指令),当计算机程序被运行时,使得计算机执行上述方法实施例中发送侧设备的操作。
本申请还提供了一种计算机程序产品,计算机程序产品包括:计算机程序(也可以称为代码,或指令),当计算机程序被运行时,使得计算机执行上述方法实施例中接收侧设备的操作。
本申请还提供了一种计算机可读存储介质,计算机可读存储介质存储有计算机程序(也可以称为代码,或指令)当其在计算机上运行时,使得计算机执行上述方法实施例中发送侧设备的操作。
本申请还提供了一种计算机可读存储介质,计算机可读存储介质存储有计算机程序(也可以称为代码,或指令)当其在计算机上运行时,使得计算机执行上述方法实施例中接收侧设备的操作。
所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的系统、装置和单元的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
本申请实施例提供给的设备,可以全部或部分地通过软件、硬件、固件或者其任意组合来实现。当使用软件实现时,可以全部或部分地以计算机程序产品的形式实现。所述计算机程序产品包括一个或多个计算机指令。在计算机上加载和执行所述计算机指令时,全 部或部分地产生按照本申请实施例所述的流程或功能。所述计算机可以是通用计算机、专用计算机、计算机网络、或者其他可编程装置。所述计算机指令可以存储在计算机可读存储介质中,或者从一个计算机可读存储介质向另一个计算机可读存储介质传输,例如,所述计算机指令可以从一个网站站点、计算机、服务器或数据中心通过有线(例如同轴电缆、光纤、数字用户线(digital subscriber line,DSL))或无线(例如红外、无线、微波等)方式向另一个网站站点、计算机、服务器或数据中心进行传输。所述计算机可读存储介质可以是计算机能够存取的任何可用介质或者是包含一个或多个可用介质集成的服务器、数据中心等数据存储设备。所述可用介质可以是磁性介质(例如,软盘、硬盘、磁带)、光介质(例如,高密度数字视频光盘(digital video disc,DVD))、或者半导体介质(例如,SSD)等。
应理解,本文中涉及的第一、第二以及各种数字编号仅为描述方便进行的区分,并不用来限制本申请的范围。
应理解,本文中术语“和/或”,仅仅是一种描述关联对象的关联关系,表示可以存在三种关系,例如,A和/或B,可以表示:单独存在A,同时存在A和B,单独存在B这三种情况。另外,本文中字符“/”,一般表示前后关联对象是一种“或”的关系。
应理解,在本申请实施例中,上述各过程的序号的大小并不意味着执行顺序的先后,各过程的执行顺序应以其功能和内在逻辑确定,而不应对本申请实施例的实施过程构成任何限定。
本领域普通技术人员可以意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、或者计算机软件和电子硬件的结合来实现。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本申请的范围。
所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的系统、装置和单元的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
在本申请所提供的几个实施例中,应该理解到,所揭露的系统、装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
另外,在本申请各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。
以上所述,仅为本申请的具体实施方式,但本申请的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本申请揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本申请的保护范围之内。因此,本申请的保护范围应所述以权利要求的保护范围为准。
Claims (72)
- 一种数据传输方法,应用于发送侧设备,其特征在于,包括:获取多路径数据传输中每个路径的路径状态信息,其中,所述路径状态信息包括时延和带宽的信息,其中,所述多路径数据传输的路径包括第一路径和第二路径,所述第一路径为所述多路径数据传输的所有路径中时延最长的路径;根据所述第一路径和所述第二路径的所述路径状态信息,计算调度给所述第一路径的数据包的第一数量X和调度给所述第二路径的数据包的第二数量Y;通过所述第一路径向接收侧设备发送所述第一数量X个数据包,并通过所述第二路径向所述接收侧设备发送所述第二数量Y个数据包,通过所述第二路径发送的所述Y个数据包的序号均小于通过所述第一路径发送的所述X个数据包的序号。
- 根据权利要求1所述的方法,其特征在于,所述多路径数据传输是基于同一个发送侧设备和同一个接收侧设备的多个传输控制协议TCP路径的合并数据传输。
- 根据权利要求1或2所述的方法,其特征在于,所述多路径数据传输是多路径传输控制协议MPTCP层的数据传输。
- 根据权利要求1至3中任一项所述的方法,其特征在于,所述路径状态信息还包括路径的发送窗口使用情况的信息和数据包的最大分片大小MSS,其中所述发送窗口用于缓存路径上已发送但未收到数据包确认消息的数据包和允许发送但尚未发送的数据包。
- 根据权利要求1至4中任一项所述的方法,其特征在于,所述多路径数据传输中的任意两条路径基于不同的网卡或不同的芯片。
- 根据权利要求1至5中任一项所述的方法,其特征在于,所述多路径中存在至少一个路径包括多个传输控制协议TCP连接,所述多个TCP连接具有相同的源互联网协议IP地址,多个TCP连接具有相同的目的IP地址。
- 根据权利要求1至6任一项所述的方法,其特征在于,所述多路径传输仅包括所述第一路径和所述第二路径的传输,根据所述第一路径和所述第二路径的所述路径状态信息,计算调度给所述第一路径的数据包的第一数量X和调度给所述第二路径的数据包的第二数量Y;通过所述第一路径向接收侧设备发送所述第一数量X个数据包,并通过所述第二路径向所述接收侧设备发送所述第二数量Y个数据包,包括:在调度发送侧设备的每个数据包之前,计算所述第一数量X和所述第二数量Y,当所述第二数量Y大于零,且所述第二路径的发送窗口有剩余空间,将所述发送侧设备的当前待分配的一个数据包分配给所述第二路径,否则将所述当前待分配的一个数据包分配给所述第一路径。
- 根据权利要求1至7中任一项所述的方法,其特征在于,在所述获取多路径数据传输中每个路径的路径状态信息之前,所述方法还包括:通过最小往返时延minRTT算法进行数据传输,并确定所述每个路径的所述路径状态信息。
- 根据权利要求1至8中任一项所述的方法,其特征在于,所述方法在上轮调度执行完毕且当前所述发送侧设备的发送队列仍有数据包待调度时;或在有数据包进入所述发 送侧设备的发送队列时,或在所述发送侧设备接收到所述接收侧设备发送的数据包确认消息时执行。
- 根据权利要求1至9中任一项所述的方法,其特征在于,所述根据所述第一路径和所述第二路径的所述路径状态信息,计算调度给所述第一路径的数据包的第一数量X和调度给所述第二路径的数据包的第二数量Y,包括:根据所述第一路径和所述第二路径的所述路径状态信息,计算所述第一数量X和所述第二数量Y,使得调度给所述第一路径的X个数据包与调度给所述第二路径的Y个数据包同时到达所述接收侧设备。
- 根据权利要求1至11中任一项所述的方法,其特征在于,所述多路径数据传输还在第三路径上进行,所述第三路径的时延小于所述第一路径的时延且大于所述第二路径的时延,所述方法还包括:根据所述第一路径和所述第三路径的所述路径状态信息,以及调度给所述第一路径的数据包的第一数量X,计算调度给所述第三路径的数据包的第三数量Z;通过所述第三路径向接收侧设备发送所述第三数量Z个数据包,通过所述第三路径发送的所述Z个数据包的所有数据包的序号小于任意一个通过所述第一路径发送的所述X个数据包的序号,且大于任意一个通过所述第二路径发送的所述Y个数据包的序号。
- 一种数据传输方法,应用于接收侧设备,其特征在于,包括:获取多路径数据传输中每个路径的路径状态信息,其中,所述路径状态信息包括时延和带宽的信息,其中,所述多路径数据传输的路径包括第一路径和第二路径,所述第一路径为所述多路径数据传输的所有路径中时延最长的路径;根据所述第一路径和所述第二路径的所述路径状态信息,计算调度给所述第一路径的数据包的第一数量X和调度给所述第二路径的数据包的第二数量Y;向发送侧设备发送调度信息,所述调度信息用于指示发送侧设备通过所述第一路径向 接收侧设备发送所述第一数量X个数据包,并指示所述发送侧设备通过所述第二路径向所述接收侧设备发送所述第二数量Y个数据包。
- 根据权利要求13所述的方法,其特征在于,所述多路径数据传输是基于同一个发送侧设备和同一个接收侧设备的多个传输控制协议TCP路径的合并数据传输。
- 根据权利要求13或14所述的方法,其特征在于,所述多路径数据传输是多路径传输控制协议MPTCP层的数据传输。
- 根据权利要求13至15中任一项所述的方法,其特征在于,所述路径状态信息还包括路径的发送窗口使用情况的信息和数据包的最大分片大小MSS,其中所述发送窗口用于缓存路径上已发送但未收到数据包确认消息的数据包和允许发送但尚未发送的数据包。
- 根据权利要求13至16中任一项所述的方法,其特征在于,所述多路径数据传输中的任意两条路径基于不同的网卡或不同的芯片。
- 根据权利要求13至17中任一项所述的方法,其特征在于,所述调度信息还用于指示通过所述第二路径发送的所述Y个数据包的序号均小于通过所述第一路径发送的所述X个数据包的序号。
- 根据权利要求13至18中任一项所述的方法,其特征在于,所述时延的信息是所述接收侧设备从所述发送侧设备接收的。
- 根据权利要求13至19中任一项所述的方法,其特征在于,所述多路径中存在至少一个路径包括多个传输控制协议TCP连接,所述多个TCP连接具有相同的源互联网协议IP地址,多个TCP连接具有相同的目的IP地址。
- 根据权利要求13至20中任一项所述的方法,其特征在于,在所述获取多路径数据传输中每个路径的路径状态信息之前,所述方法还包括:通过最小往返时延minRTT算法进行数据传输,并确定所述每个路径的所述路径状态信息。
- 根据权利要求13至21中任一项所述的方法,其特征在于,所述方法在所述接收侧设备向所述发送侧设备发送数据包确认消息后执行。
- 根据权利要求13至22中任一项所述的方法,其特征在于,所述根据所述第一路径和所述第二路径的所述路径状态信息,计算调度给所述第一路径的数据包的第一数量X和调度给所述第二路径的数据包的第二数量Y,包括:根据所述第一路径和所述第二路径的所述路径状态信息,计算所述第一数量X和所述第二数量Y,使得调度给所述第一路径的X个数据包与调度给所述第二路径的Y个数据包同时到达所述接收侧设备。
- 根据权利要求13至24中任一项所述的方法,其特征在于,所述多路径数据传输还在第三路径上进行,所述第三路径的时延小于所述第一路径的时延且大于所述第二路径的时延,所述方法还包括:根据所述第一路径和所述第三路径的所述路径状态信息,以及调度给所述第一路径的数据包的第一数量X,计算调度给所述第三路径的数据包的第三数量Z;所述调度信息还用于指示所述发送侧设备通过所述第三路径向接收侧设备发送所述第三数量Z个数据包,通过所述第三路径发送的所述Z个数据包的所有数据包的序号小于任意一个通过所述第一路径发送的所述X个数据包的序号,且大于任意一个通过所述第二路径发送的所述Y个数据包的序号。
- 一种数据传输方法,应用于发送侧设备,其特征在于,包括:获取多路径数据传输中每个路径的路径状态信息,其中,所述路径状态信息包括时延和带宽的信息,其中,所述多路径数据传输的路径包括第一路径和第二路径,所述第一路径为所述多路径数据传输的所有路径中时延最长的路径;根据所述第一路径和所述第二路径的所述路径状态信息,在第一时刻通过所述第一路径发送序号为N的数据包,在第二时刻通过所述第二路径发送序号为N-1的数据包,其中所述第一时刻和所述第二时刻的时间差大于第一阈值,所述第一阈值由所述第一路径和所述第二路径的所述路径状态信息决定,且所述第一阈值大于0.5ms。
- 根据权利要求26所述的方法,其特征在于,所述多路径数据传输是基于同一个发送侧设备和同一个接收侧设备的多个传输控制协议TCP路径的合并数据传输。
- 根据权利要求26或27所述的方法,其特征在于,所述多路径数据传输是多路径传输控制协议MPTCP层的数据传输,所述序号为MPTCP序号。
- 根据权利要求26至28中任一项所述的方法,其特征在于,所述多路径数据传输中的任意两条路径基于不同的网卡或不同的芯片。
- 根据权利要求26至29中任一项所述的方法,其特征在于,所述第一阈值与所述第一路径的时延正相关,与所述第二路径的时延负相关。
- 根据权利要求26至30中任一项所述的方法,其特征在于,所述第一阈值与所述第一路径的带宽负相关,与所述第二路径的带宽正相关。
- 根据权利要求26至31中任一项所述的方法,其特征在于,所述第一阈值与所述第一路径的发送窗口中已经存在的数据量正相关,与所述第二路径的发送窗口中已经存在 的数据量负相关。
- 根据权利要求26至32中任一项所述的方法,其特征在于,所述第一阈值大于2ms。
- 一种发送侧设备,其特征在于,包括:获取模块,用于获取多路径数据传输中每个路径的路径状态信息,其中,所述路径状态信息包括时延和带宽的信息,其中,所述多路径数据传输的路径包括第一路径和第二路径,所述第一路径为所述多路径数据传输的所有路径中时延最长的路径;处理模块,用于根据所述获取模块获取的所述第一路径和所述第二路径的所述路径状态信息,计算调度给所述第一路径的数据包的第一数量X和调度给所述第二路径的数据包的第二数量Y;发送模块,用于通过所述第一路径向接收侧设备发送所述第一数量X个数据包,并通过所述第二路径向所述接收侧设备发送所述第二数量Y个数据包,通过所述第二路径发送的所述Y个数据包的序号均小于通过所述第一路径发送的所述X个数据包的序号。
- 根据权利要求34所述的发送侧设备,其特征在于,所述多路径数据传输是基于同一个发送侧设备和同一个接收侧设备的多个传输控制协议TCP路径的合并数据传输。
- 根据权利要求34或35所述的发送侧设备,其特征在于,所述多路径数据传输是多路径传输控制协议MPTCP层的数据传输。
- 根据权利要求34至36中任一项所述的发送侧设备,其特征在于,所述路径状态信息还包括路径的发送窗口使用情况的信息和数据包的最大分片大小MSS,其中所述发送窗口用于缓存路径上已发送但未收到数据包确认消息的数据包和允许发送但尚未发送的数据包。
- 根据权利要求34至37中任一项所述的发送侧设备,其特征在于,所述多路径数据传输中的任意两条路径基于不同的网卡或不同的芯片。
- 根据权利要求34至38中任一项所述的发送侧设备,其特征在于,所述多路径中存在至少一个路径包括多个传输控制协议TCP连接,所述多个TCP连接具有相同的源互联网协议IP地址,多个TCP连接具有相同的目的IP地址。
- 根据权利要求34至39任一项所述的发送侧设备,其特征在于,所述多路径传输仅包括所述第一路径和所述第二路径的传输,所述处理模块具体用于在调度发送侧设备的每个数据包之前,计算所述第一数量X和所述第二数量Y;所述发送模块具体用于当所述第二数量Y大于零,且所述第二路径的发送窗口有剩余空间,将所述发送侧设备的当前待分配的一个数据包分配给所述第二路径,否则将所述当前待分配的一个数据包分配给所述第一路径。
- 根据权利要求34至40中任一项所述的发送侧设备,其特征在于,所述处理模块还用于:在所述获取模块获取多路径数据传输中每个路径的路径状态信息之前,通过最小往返时延minRTT算法进行数据传输,并确定所述每个路径的所述路径状态信息。
- 根据权利要求34至41中任一项所述的发送侧设备,其特征在于,在上轮调度执行完毕且当前所述发送侧设备的发送队列仍有数据包待调度时;或在有数据包进入所述发 送侧设备的发送队列时,或在所述发送侧设备接收到所述接收侧设备发送的数据包确认消息时所述获取模块、所述处理模块和所述发送模块执行操作。
- 根据权利要求34至42中任一项所述的发送侧设备,其特征在于,所述处理模块具体用于:根据所述第一路径和所述第二路径的所述路径状态信息,计算所述第一数量X和所述第二数量Y,使得调度给所述第一路径的X个数据包与调度给所述第二路径的Y个数据包同时到达所述接收侧设备。
- 根据权利要求34至44中任一项所述的发送侧设备,其特征在于,所述多路径数据传输还在第三路径上进行,所述第三路径的时延小于所述第一路径的时延且大于所述第二路径的时延,所述处理模块还用于:根据所述第一路径和所述第三路径的所述路径状态信息,以及调度给所述第一路径的数据包的第一数量X,计算调度给所述第三路径的数据包的第三数量Z;所述发送模块还用于:通过所述第三路径向接收侧设备发送所述第三数量Z个数据包,通过所述第三路径发送的所述Z个数据包的所有数据包的序号小于任意一个通过所述第一路径发送的所述X个数据包的序号,且大于任意一个通过所述第二路径发送的所述Y个数据包的序号。
- 一种接收侧设备,其特征在于,包括:获取模块,用于获取多路径数据传输中每个路径的路径状态信息,其中,所述路径状态信息包括时延和带宽的信息,其中,所述多路径数据传输的路径包括第一路径和第二路径,所述第一路径为所述多路径数据传输的所有路径中时延最长的路径;处理模块,用于根据所述获取模块获取的所述第一路径和所述第二路径的所述路径状态信息,计算调度给所述第一路径的数据包的第一数量X和调度给所述第二路径的数据包的第二数量Y;发送模块,用于向发送侧设备发送调度信息,所述调度信息用于指示发送侧设备通过所述第一路径向接收侧设备发送所述第一数量X个数据包,并指示所述发送侧设备通过所述第二路径向所述接收侧设备发送所述第二数量Y个数据包。
- 根据权利要求46所述的接收侧设备,其特征在于,所述多路径数据传输是基于同一个发送侧设备和同一个接收侧设备的多个传输控制协议TCP路径的合并数据传输。
- 根据权利要求46或47所述的接收侧设备,其特征在于,所述多路径数据传输是多路径传输控制协议MPTCP层的数据传输。
- 根据权利要求46至48中任一项所述的接收侧设备,其特征在于,所述路径状态信息还包括路径的发送窗口使用情况的信息和数据包的最大分片大小MSS,其中所述发送窗口用于缓存路径上已发送但未收到数据包确认消息的数据包和允许发送但尚未发送的数据包。
- 根据权利要求46至49中任一项所述的接收侧设备,其特征在于,所述多路径数据传输中的任意两条路径基于不同的网卡或不同的芯片。
- 根据权利要求46至50中任一项所述的接收侧设备,其特征在于,所述调度信息还用于指示通过所述第二路径发送的所述Y个数据包的序号均小于通过所述第一路径发送的所述X个数据包的序号。
- 根据权利要求46至51中任一项所述的接收侧设备,其特征在于,所述时延的信息是所述接收侧设备从所述发送侧设备接收的。
- 根据权利要求46至52中任一项所述的接收侧设备,其特征在于,所述多路径中存在至少一个路径包括多个传输控制协议TCP连接,所述多个TCP连接具有相同的源互联网协议IP地址,多个TCP连接具有相同的目的IP地址。
- 根据权利要求46至53中任一项所述的接收侧设备,其特征在于,所述处理模块还用于:在所述获取模块获取多路径数据传输中每个路径的路径状态信息之前,通过最小往返时延minRTT算法进行数据传输,并确定所述每个路径的所述路径状态信息。
- 根据权利要求46至54中任一项所述的接收侧设备,其特征在于,在所述接收侧设备向所述发送侧设备发送数据包确认消息后,所述获取模块、所述处理模块和所述发送模块执行操作。
- 根据权利要求46至55中任一项所述的接收侧设备,其特征在于,所述处理模块具体用于:根据所述第一路径和所述第二路径的所述路径状态信息,计算所述第一数量X和所述第二数量Y,使得调度给所述第一路径的X个数据包与调度给所述第二路径的Y个数据包同时到达所述接收侧设备。
- 根据权利要求46至57中任一项所述的接收侧设备,其特征在于,所述多路径数据传输还在第三路径上进行,所述第三路径的时延小于所述第一路径的时延且大于所述第二路径的时延,所述处理模块还用于:根据所述第一路径和所述第三路径的所述路径状态信息,以及调度给所述第一路径的数据包的第一数量X,计算调度给所述第三路径的数据包的第三数量Z;所述调度信息还用于指示所述发送侧设备通过所述第三路径向接收侧设备发送所述第三数量Z个数据包,通过所述第三路径发送的所述Z个数据包的所有数据包的序号小于任意一个通过所述第一路径发送的所述X个数据包的序号,且大于任意一个通过所述第二路径发送的所述Y个数据包的序号。
- 一种发送侧设备,其特征在于,包括:获取模块,用于获取多路径数据传输中每个路径的路径状态信息,其中,所述路径状态信息包括时延和带宽的信息,其中,所述多路径数据传输的路径包括第一路径和第二路径,所述第一路径为所述多路径数据传输的所有路径中时延最长的路径;发送模块,用于根据获取模块获取的所述第一路径和所述第二路径的所述路径状态信息,在第一时刻通过所述第一路径发送序号为N的数据包,在第二时刻通过所述第二路径发送序号为N-1的数据包,其中所述第一时刻和所述第二时刻的时间差大于第一阈值,所述第一阈值由所述第一路径和所述第二路径的所述路径状态信息决定,且所述第一阈值大于0.5ms。
- 根据权利要求59所述的发送侧设备,其特征在于,所述多路径数据传输是基于同一个发送侧设备和同一个接收侧设备的多个传输控制协议TCP路径的合并数据传输。
- 根据权利要求59或60所述的发送侧设备,其特征在于,所述多路径数据传输是多路径传输控制协议MPTCP层的数据传输,所述序号为MPTCP序号。
- 根据权利要求59至61中任一项所述的发送侧设备,其特征在于,所述多路径数据传输中的任意两条路径基于不同的网卡或不同的芯片。
- 根据权利要求59至62中任一项所述的发送侧设备,其特征在于,所述第一阈值与所述第一路径的时延正相关,与所述第二路径的时延负相关。
- 根据权利要求59至63中任一项所述的发送侧设备,其特征在于,所述第一阈值与所述第一路径的带宽负相关,与所述第二路径的带宽正相关。
- 根据权利要求59至64中任一项所述的发送侧设备,其特征在于,所述第一阈值与所述第一路径的发送窗口中已经存在的数据量正相关,与所述第二路径的发送窗口中已经存在的数据量负相关。
- 根据权利要求59至65中任一项所述的发送侧设备,其特征在于,所述第一阈值大于2ms。
- 一种发送侧设备,其特征在于,包括处理器和存储器,所述处理器与所述存储器耦合,所述存储器用于存储计算机程序或指令,所述处理器用于执行所述存储器中的所述计算机程序或指令,使得权利要求1至12中任一项所述的方法被执行。
- 一种接收侧设备,其特征在于,包括处理器和存储器,所述处理器与所述存储器耦合,所述存储器用于存储计算机程序或指令,所述处理器用于执行所述存储器中的所述计算机程序或指令,使得权利要求13至25中任一项所述的方法被执行。
- 一种发送侧设备,其特征在于,包括处理器和存储器,所述处理器与所述存储器耦合,所述存储器用于存储计算机程序或指令,所述处理器用于执行所述存储器中的所述计算机程序或指令,使得权利要求26至33中任一项所述的方法被执行。
- 一种计算机可读存储介质,其特征在于,存储有计算机程序或指令,所述计算机程序或指令用于实现权利要求1至12中任一项所述的方法。
- 一种计算机可读存储介质,其特征在于,存储有计算机程序或指令,所述计算机程序或指令用于实现权利要求13至25中任一项所述的方法。
- 一种计算机可读存储介质,其特征在于,存储有计算机程序或指令,所述计算机程序或指令用于实现权利要求26至33中任一项所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202080065990.0A CN114556883B (zh) | 2020-06-11 | 2020-12-29 | 数据传输方法、发送侧设备和接收侧设备 |
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
RU2020119417 | 2020-06-11 | ||
RU2020119417 | 2020-06-11 |
Publications (1)
Publication Number | Publication Date |
---|---|
WO2021248886A1 true WO2021248886A1 (zh) | 2021-12-16 |
Family
ID=78846920
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
PCT/CN2020/140851 WO2021248886A1 (zh) | 2020-06-11 | 2020-12-29 | 数据传输方法、发送侧设备和接收侧设备 |
Country Status (2)
Country | Link |
---|---|
CN (1) | CN114556883B (zh) |
WO (1) | WO2021248886A1 (zh) |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN116761211A (zh) * | 2023-08-17 | 2023-09-15 | 鹏城实验室 | 基于多径传输的数据包调度方法、装置、设备及存储介质 |
CN116775345A (zh) * | 2023-08-21 | 2023-09-19 | 荣耀终端有限公司 | 一种数据传输方法及电子设备 |
WO2023193689A1 (zh) * | 2022-04-08 | 2023-10-12 | 华为技术有限公司 | 报文传输方法、装置、设备及计算机可读存储介质 |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN117997856A (zh) * | 2024-04-03 | 2024-05-07 | 山东浪潮数据库技术有限公司 | 一种用于网络消息排序的方法、系统及可编程交换机 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20160218979A1 (en) * | 2015-01-23 | 2016-07-28 | Electronics And Telecommunications Research Institute | Apparatus and method for transmitting packets through multi-homing based network |
CN106656856A (zh) * | 2016-12-16 | 2017-05-10 | 浙江大学 | 一种抵抗mptcp接收缓冲区阻塞的数据包调度方法 |
CN110380978A (zh) * | 2018-04-13 | 2019-10-25 | 清华大学 | 多路径传输的调度方法、装置、计算机设备和存储介质 |
Family Cites Families (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20170034843A1 (en) * | 2015-07-29 | 2017-02-02 | Qualcomm Incorporated | Scheduler methods for data aggregation over multiple links |
KR102352514B1 (ko) * | 2017-01-26 | 2022-01-19 | 삼성전자주식회사 | 다중 경로 전송 시스템의 데이터 전송 방법 및 장치 |
CN110557297B (zh) * | 2018-06-04 | 2021-06-08 | 华为技术有限公司 | 链路检测方法及相关装置 |
-
2020
- 2020-12-29 CN CN202080065990.0A patent/CN114556883B/zh active Active
- 2020-12-29 WO PCT/CN2020/140851 patent/WO2021248886A1/zh active Application Filing
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20160218979A1 (en) * | 2015-01-23 | 2016-07-28 | Electronics And Telecommunications Research Institute | Apparatus and method for transmitting packets through multi-homing based network |
CN106656856A (zh) * | 2016-12-16 | 2017-05-10 | 浙江大学 | 一种抵抗mptcp接收缓冲区阻塞的数据包调度方法 |
CN110380978A (zh) * | 2018-04-13 | 2019-10-25 | 清华大学 | 多路径传输的调度方法、装置、计算机设备和存储介质 |
Cited By (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2023193689A1 (zh) * | 2022-04-08 | 2023-10-12 | 华为技术有限公司 | 报文传输方法、装置、设备及计算机可读存储介质 |
CN116761211A (zh) * | 2023-08-17 | 2023-09-15 | 鹏城实验室 | 基于多径传输的数据包调度方法、装置、设备及存储介质 |
CN116761211B (zh) * | 2023-08-17 | 2023-11-17 | 鹏城实验室 | 基于多径传输的数据包调度方法、装置、设备及存储介质 |
CN116775345A (zh) * | 2023-08-21 | 2023-09-19 | 荣耀终端有限公司 | 一种数据传输方法及电子设备 |
CN116775345B (zh) * | 2023-08-21 | 2023-12-19 | 荣耀终端有限公司 | 一种数据传输方法及电子设备 |
Also Published As
Publication number | Publication date |
---|---|
CN114556883B (zh) | 2024-07-30 |
CN114556883A (zh) | 2022-05-27 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
WO2021248886A1 (zh) | 数据传输方法、发送侧设备和接收侧设备 | |
CN109120544B (zh) | 一种数据中心网络中基于主机端流量调度的传输控制方法 | |
US9961585B2 (en) | Network-side buffer management | |
US9979653B2 (en) | System and method of providing improved throughput control under delay-based congestion situation in a network | |
WO2018086076A1 (zh) | 数据传输方法及装置 | |
CN108540380B (zh) | 多子流网络传输方法及装置 | |
JP2020502948A (ja) | パケット伝送システムおよび方法 | |
Sarwar et al. | Mitigating receiver's buffer blocking by delay aware packet scheduling in multipath data transfer | |
JP2015181248A (ja) | ネットワーク中で通信するためのシステムおよび方法 | |
JP2018507666A (ja) | データフローを調整するシステム及び方法 | |
US20190149475A1 (en) | Unified streamlining for data traffic | |
EP3120521A1 (en) | Transport accelerator implementing request manager and connection manager functionality | |
US10374945B1 (en) | Application-centric method to find relative paths | |
CN106878192B (zh) | 一种自适应mptcp的数据调度方法 | |
US20210105659A1 (en) | Systems and methods for congestion control on mobile edge networks | |
US8885476B2 (en) | TCP flow control optimized for networks having radio segments | |
CN105025524A (zh) | 一种多路径并行传输数据调度方法及传输控制协议 | |
JP2018511275A (ja) | Tcpトンネル及びネイティブtcp情報に基づくバンドリングシナリオにおけるパケットのスケジューリングのための方法及びシステム | |
WO2019001484A1 (zh) | 一种实现发送端调速的方法、装置和系统 | |
CN104092625A (zh) | 一种用于dcn中的自适应请求分批调度方法 | |
CN118264620A (zh) | 用于多路径网络上的灵活负载均衡的计算系统和方法 | |
Yang et al. | Work in progress: Using one-way communication delay for in-order arrival MPTCP scheduling | |
WO2018157819A1 (zh) | 多子流网络传输方法及装置 | |
Halepoto et al. | Management of buffer space for the concurrent multipath transfer over dissimilar paths | |
Halepoto et al. | Scheduling over dissimilar paths using CMT-SCTP |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
121 | Ep: the epo has been informed by wipo that ep was designated in this application |
Ref document number: 20939927 Country of ref document: EP Kind code of ref document: A1 |
|
NENP | Non-entry into the national phase |
Ref country code: DE |
|
122 | Ep: pct application non-entry in european phase |
Ref document number: 20939927 Country of ref document: EP Kind code of ref document: A1 |