WO2020192258A1 - 一种数据传输方法及装置 - Google Patents

一种数据传输方法及装置 Download PDF

Info

Publication number
WO2020192258A1
WO2020192258A1 PCT/CN2020/072862 CN2020072862W WO2020192258A1 WO 2020192258 A1 WO2020192258 A1 WO 2020192258A1 CN 2020072862 W CN2020072862 W CN 2020072862W WO 2020192258 A1 WO2020192258 A1 WO 2020192258A1
Authority
WO
WIPO (PCT)
Prior art keywords
data
data packet
packet
sequence number
data packets
Prior art date
Application number
PCT/CN2020/072862
Other languages
English (en)
French (fr)
Inventor
李彤
郑凯
粟荡
陈鑫平
Original Assignee
华为技术有限公司
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 华为技术有限公司 filed Critical 华为技术有限公司
Priority to EP20779102.1A priority Critical patent/EP3937409A4/en
Publication of WO2020192258A1 publication Critical patent/WO2020192258A1/zh
Priority to US17/484,164 priority patent/US20220014312A1/en

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L69/00Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
    • H04L69/16Implementation or adaptation of Internet protocol [IP], of transmission control protocol [TCP] or of user datagram protocol [UDP]
    • H04L69/163In-band adaptation of TCP data exchange; In-band control procedures
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L1/00Arrangements for detecting or preventing errors in the information received
    • H04L1/12Arrangements for detecting or preventing errors in the information received by using return channel
    • H04L1/16Arrangements for detecting or preventing errors in the information received by using return channel in which the return channel carries supervisory signals, e.g. repetition request signals
    • H04L1/1607Details of the supervisory signal
    • H04L1/1642Formats specially adapted for sequence numbers
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L1/00Arrangements for detecting or preventing errors in the information received
    • H04L1/12Arrangements for detecting or preventing errors in the information received by using return channel
    • H04L1/16Arrangements for detecting or preventing errors in the information received by using return channel in which the return channel carries supervisory signals, e.g. repetition request signals
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L1/00Arrangements for detecting or preventing errors in the information received
    • H04L1/12Arrangements for detecting or preventing errors in the information received by using return channel
    • H04L1/16Arrangements for detecting or preventing errors in the information received by using return channel in which the return channel carries supervisory signals, e.g. repetition request signals
    • H04L1/1607Details of the supervisory signal
    • H04L1/1614Details of the supervisory signal using bitmaps
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L1/00Arrangements for detecting or preventing errors in the information received
    • H04L1/12Arrangements for detecting or preventing errors in the information received by using return channel
    • H04L1/16Arrangements for detecting or preventing errors in the information received by using return channel in which the return channel carries supervisory signals, e.g. repetition request signals
    • H04L1/1607Details of the supervisory signal
    • H04L1/1621Group acknowledgement, i.e. the acknowledgement message defining a range of identifiers, e.g. of sequence numbers
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L1/00Arrangements for detecting or preventing errors in the information received
    • H04L1/12Arrangements for detecting or preventing errors in the information received by using return channel
    • H04L1/16Arrangements for detecting or preventing errors in the information received by using return channel in which the return channel carries supervisory signals, e.g. repetition request signals
    • H04L1/1607Details of the supervisory signal
    • H04L1/1635Cumulative acknowledgement, i.e. the acknowledgement message applying to all previous messages
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L1/00Arrangements for detecting or preventing errors in the information received
    • H04L1/12Arrangements for detecting or preventing errors in the information received by using return channel
    • H04L1/16Arrangements for detecting or preventing errors in the information received by using return channel in which the return channel carries supervisory signals, e.g. repetition request signals
    • H04L1/18Automatic repetition systems, e.g. Van Duuren systems
    • H04L1/1809Selective-repeat protocols
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L1/00Arrangements for detecting or preventing errors in the information received
    • H04L1/12Arrangements for detecting or preventing errors in the information received by using return channel
    • H04L1/16Arrangements for detecting or preventing errors in the information received by using return channel in which the return channel carries supervisory signals, e.g. repetition request signals
    • H04L1/18Automatic repetition systems, e.g. Van Duuren systems
    • H04L1/1812Hybrid protocols; Hybrid automatic repeat request [HARQ]
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L1/00Arrangements for detecting or preventing errors in the information received
    • H04L1/12Arrangements for detecting or preventing errors in the information received by using return channel
    • H04L1/16Arrangements for detecting or preventing errors in the information received by using return channel in which the return channel carries supervisory signals, e.g. repetition request signals
    • H04L1/18Automatic repetition systems, e.g. Van Duuren systems
    • H04L1/1829Arrangements specially adapted for the receiver end
    • H04L1/1835Buffer management
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L1/00Arrangements for detecting or preventing errors in the information received
    • H04L1/12Arrangements for detecting or preventing errors in the information received by using return channel
    • H04L1/16Arrangements for detecting or preventing errors in the information received by using return channel in which the return channel carries supervisory signals, e.g. repetition request signals
    • H04L1/18Automatic repetition systems, e.g. Van Duuren systems
    • H04L1/1829Arrangements specially adapted for the receiver end
    • H04L1/1854Scheduling and prioritising arrangements
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L5/00Arrangements affording multiple use of the transmission path
    • H04L5/003Arrangements for allocating sub-channels of the transmission path
    • H04L5/0053Allocation of signaling, i.e. of overhead other than pilot signals
    • H04L5/0055Physical resource allocation for ACK/NACK
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L69/00Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
    • H04L69/30Definitions, standards or architectural aspects of layered protocol stacks
    • H04L69/32Architecture of open systems interconnection [OSI] 7-layer type protocol stacks, e.g. the interfaces between the data link level and the physical level
    • H04L69/322Intralayer communication protocols among peer entities or protocol data unit [PDU] definitions
    • H04L69/326Intralayer communication protocols among peer entities or protocol data unit [PDU] definitions in the transport layer [OSI layer 4]
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L1/00Arrangements for detecting or preventing errors in the information received
    • H04L1/12Arrangements for detecting or preventing errors in the information received by using return channel
    • H04L1/16Arrangements for detecting or preventing errors in the information received by using return channel in which the return channel carries supervisory signals, e.g. repetition request signals
    • H04L1/1607Details of the supervisory signal
    • H04L1/1671Details of the supervisory signal the supervisory signal being transmitted together with control information
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L1/00Arrangements for detecting or preventing errors in the information received
    • H04L1/12Arrangements for detecting or preventing errors in the information received by using return channel
    • H04L1/16Arrangements for detecting or preventing errors in the information received by using return channel in which the return channel carries supervisory signals, e.g. repetition request signals
    • H04L1/18Automatic repetition systems, e.g. Van Duuren systems
    • H04L1/1829Arrangements specially adapted for the receiver end
    • H04L1/1861Physical mapping arrangements

Definitions

  • This application relates to the field of communication technology, and in particular to a data transmission method and device.
  • the rise of virtual reality, augmented reality, high-definition wireless projection, and new applications based on artificial intelligence has given birth to the demand for large-scale data transmission in wide area networks and wireless local area networks.
  • the demand for bandwidth is increasing, so data packet transmission requires high throughput.
  • the "high throughput" poses new challenges to the acknowledgement (ACK) mechanism.
  • ACK acknowledgement
  • large enterprises usually deploy dedicated lines on the wide area network to ensure fast and reliable data transmission for some of their key services.
  • most of the current services are still transmitted through the public, relatively inexpensive public network.
  • the public network has the following characteristics: high link capacity (bandwidth) (e.g. 1Gbps or 10Gbps), extended round trip time (e.g. domestic 30ms-60ms, international 100ms-300ms), non-congested packet loss (e.g. middlebox strategy, routing changes) , Packet loss caused by data errors) and network dynamic changes are difficult to predict.
  • bandwidth bandwidth
  • extended round trip time e.g. domestic 30m
  • the receiving end of data usually sends an ACK packet to inform the sending end of the data reception status.
  • Some ACK packets include information about data packets that have been successfully received by the receiving end and not confirmed when the ACK packet is generated (such as the identifier of the data packet). These data packets are still stored at the receiving end when the ACK packet is generated. Receive data packets in the buffer that have not been processed by the application layer at the receiving end. In this way, the sender can retransmit data packets not received by the receiver according to the ACK packet.
  • the existing ACK packet sending mechanism has performance in terms of packet loss retransmission. It still needs to be improved, and this impact also restricts the improvement of data transmission performance.
  • This application provides a data transmission method and device to improve the performance of data transmission.
  • an embodiment of the present application provides a data transmission method, including: a data receiving end receives multiple data packets from a data sending end; the data receiving end updates the receiving buffer of the data receiving end based on the multiple data packets ;
  • the data receiving end sends confirmation information to the data sending end according to the updated receiving buffer; wherein the confirmation information includes a blacklist, or includes a blacklist and a whitelist, and the blacklist is used to indicate The vacant data packet in the updated receiving buffer, the vacant data packet is a data packet that has been sent by the data sending end but not received by the data receiving end, and the white list is used to indicate that the data receiving end has Several received data packets, the multiple data packets include the multiple data packets.
  • the above design includes the blacklist, or blacklist and whitelist in the confirmation information, that is to say, the receiving end sends back the confirmation information to notify the sending end of the identification of multiple data packets that the receiving end has not received in time, thereby The sending end can retransmit these data packets to the receiving end in a more timely manner without waiting for the timeout to retransmit, thereby improving data transmission performance.
  • the receiving end indicates the whitelist to the sending end, so that the sending end can timely know the newly received data packets of the sending end, and to a certain extent, avoid the invalid retransmission (that is, retransmitting the received data packet) from the sending end. Waste of bandwidth.
  • the whitelist includes the identifier of the data packet with the largest sequence number in the updated receiving buffer, and the blacklist includes the identifier of the data packet with the smallest sequence number among the vacant data packets.
  • the identifier of the data packet can be the serial number or the offset of the serial number of the data packet, or other information that can distinguish each data packet.
  • the receiving end will at least promptly notify the sending end of unreceived data packets that cause line head blocking each time, so that the sending end can send the data packets that cause line head blocking to the receiving end in time, thereby improving data transmission performance.
  • the receiving end indicates to the sending end the identifier of the data packet with the largest sequence number in the receiving buffer, that is, the latest received data packet, so that the sending end can timely know the newly received data packet of the sending end, and avoiding the sending end to a certain extent Bandwidth waste caused by retransmission.
  • the whitelist further includes an identifier of a data packet with a higher priority in the updated receiving buffer, wherein the priority of the data packet is related to the importance of the data packet.
  • Data packets with the highest priority may include out-of-order packets, retransmission packets, and head-of-line packets.
  • the redundancy indicates the received data packet with a higher degree of importance at the sending end, thereby avoiding the waste of bandwidth caused by the retransmission of the sending end to a certain extent.
  • the data receiving end sending confirmation information to the data sending end includes:
  • the data receiving end sends the confirmation information to the data sending end when the feedback condition is satisfied
  • the feedback conditions include one or more of the following:
  • the number of received data packets reaches the first threshold
  • the number of received data bits reaches the second threshold
  • the time node of the feedback cycle is reached.
  • the blacklist includes the offset of the sequence number of the second data packet based on the sequence number of the first data packet, and the second data packet is the missing data packet. Any of the data packets in the data packet, the first data packet is a data packet that has been received by the data receiving end; or,
  • the whitelist includes the offset of the sequence number of the third data packet based on the sequence number of the first data packet, and the third data packet is any one of the several data packets.
  • the sequence number offset is used as the identifier of the data packet
  • the coding is relatively simple, and the space occupied by the coding can be reduced.
  • the vacant data packet includes N data packets with consecutive serial numbers
  • the blacklist also includes the sequence number offset of the data packet with the smallest serial number among the N consecutive data packets. The shift amount and the sequence number offset of the packet with the largest sequence number; or,
  • the plurality of data packets include N data packets with consecutive serial numbers, and the white list also includes the sequence number offset of the data packet with the smallest serial number among the N data packets with consecutive serial numbers and the data with the largest serial number
  • the sequence number offset of the packet, N is an integer greater than 1.
  • the sequence number offset is coded by an M-bit unsigned integer
  • the high L bits of the first unsigned integer are the first value
  • the first value indicates that the N sequence numbers are consecutive
  • the high L bit of the second unsigned integer is the second value
  • the second value indicates the Nth data packet of the N consecutive data packets.
  • the low ML bit of the signed integer is used to encode the sequence number offset of the data packet with the smallest sequence number
  • the low ML bit of the second unsigned integer is used to encode the sequence number offset of the data packet with the largest sequence number. Shift, M and L are both integers greater than 1, and M is greater than L.
  • the confirmation information also includes an identifier of the data packet with the largest sequence number of the data packet that has been confirmed to be received.
  • the confirmation information also includes the amount of data currently stored in the receiving buffer.
  • the sender can estimate the amount of data it needs to retransmit based on the sequence number of the data packet that the sender has confirmed, and further confirm the network status based on the amount of retransmitted data to determine whether to perform the transmission operation.
  • the blacklist and the whitelist are encoded in a bitmap encoding manner.
  • the vacant data packet includes N1 data packets with consecutive sequence numbers, and the blacklist includes a sequence number composed of the smallest sequence number and the largest sequence number among the N1 sequence numbers Range, N1 is an integer greater than 0; or, the several data packets include N2 data packets with consecutive serial numbers, and the whitelist includes the smallest serial number and the largest serial number among the N2 serial numbers.
  • the range of serial numbers, N2 is an integer greater than 0.
  • the confirmation information includes a blacklist and a whitelist
  • sending the confirmation information to the data sending end includes: sending a first feedback message and a second feedback message to the data sending end, so The first feedback message includes the blacklist, and the second feedback message includes the whitelist; or,
  • an embodiment of the present application provides a data transmission method, including:
  • the data sending end receives a first feedback message from the data receiving end, where the first feedback message is used to feed back a situation in which the data receiving end receives the data packet from the data sending end;
  • the data sending end sends copies of the first data packet to the data receiving end multiple times according to the first feedback message to complete a round of retransmission of the first data packet, wherein the first data packet It is a data packet that should be retransmitted by the data sending end, and there is a random time interval between the sending of every two copies.
  • the method further includes:
  • the data sending end determines again that the first data packet needs to be retransmitted according to the second feedback message sent by the data receiving end;
  • the data sending end sends copies of the first data packet to the data receiving end multiple times to complete another round of retransmission of the first data packet, wherein the another round of the first data packet In the retransmission of the data packet, every two copies are sent at a random interval, and the number of retransmissions of the first data packet in the another round of retransmission is greater than the total number of the first data packet retransmission. The number of copies of the first data packet.
  • the first feedback message includes a blacklist
  • the blacklist is used to indicate vacant data packets in the updated receiving buffer
  • the vacant data packet is the data sender A data packet that has been sent but not received by the data receiving end.
  • the first feedback message includes a white list, and the white list is used to indicate a number of data packets that the data receiving end has received.
  • the first feedback message includes a blacklist and a whitelist.
  • the first feedback message includes a blacklist.
  • a third feedback message is also received, and the third feedback message includes a white list.
  • the number of retransmissions of the first data packet in this round is positively correlated with the number of retransmissions of the first data packet.
  • the first feedback message includes the amount of data stored in the receiving buffer of the receiving end, or a white list, and the white list indicates the data packets stored in the receiving buffer, and the data According to the first feedback message, the sending end sends copies of the first data packet to the data receiving end multiple times to complete a round of retransmission of the first data packet, including:
  • the data sending end determines the first data packet according to the first feedback message, and the first data volume meets a congestion window less than the data sending end, and the first data volume is the data sending end
  • the data volume sent to the data receiving end and the data volume determined by the second data volume, where the second data volume is the data volume stored in the receiving buffer or the data in the receiving buffer determined according to the whitelist The data volume of the packet;
  • the data sending end sends copies of the first data packet to the data receiving end multiple times to complete a round of retransmission of the first data packet.
  • the first data amount is greater than or equal to the congestion window, it is prohibited to send a copy of the first data packet to the sender. That is to say, the number of bits of the data packet that has been sent but not received by the receiving end has exceeded the congestion window, indicating that the network status has deteriorated and the packet loss rate is high, so sending data to the receiving end is prohibited.
  • the minimum value of the notification window and the congestion window is compared with the number of data packets that have been sent to the receiving end and the receiving end has not confirmed the reception.
  • the number of data packets that have been sent to the receiving end but not received is compared with the notification window to determine to perform retransmission.
  • the first amount of data determined in this application will be the part of the data that has been stored in the receiving buffer. Also excluded, and then compared with the congestion window, therefore, compared with the existing, increase the amount of data allowed to be sent. Therefore, in the embodiments of this application, the redundant retransmission method is adopted, so that the retransmitted data packet can be received by the receiving end with the greatest probability, and the speculative method provided by this design is used to a certain extent. Release part of the receive buffer to relieve congestion.
  • an embodiment of the present application provides a data transmission device, including:
  • the receiving module is used to receive multiple data packets from the data sending end;
  • An update module configured to update the receiving buffer of the data receiving end based on the multiple data packets
  • a sending module configured for the data receiving end to send confirmation information to the data sending end according to the updated receiving buffer
  • the confirmation information includes a blacklist, or includes a blacklist and a whitelist
  • the blacklist is used to indicate vacant data packets in the updated receiving buffer
  • the vacant data packet is the data sender
  • the white list is used to indicate a number of data packets that have been received by the data receiving end
  • the several data packets include the multiple data packets.
  • the whitelist includes the identifier of the data packet with the largest sequence number in the updated receiving buffer, and the blacklist includes the identifier of the data packet with the smallest sequence number among the vacant data packets.
  • the whitelist further includes an identifier of a data packet with a higher priority in the updated receiving buffer, wherein the priority of the data packet is related to the importance of the data packet.
  • the sending module is specifically configured to send the confirmation information to the data sending end when the feedback condition is satisfied;
  • the feedback conditions include one or more of the following:
  • the number of received data packets reaches the first threshold
  • the number of received data bits reaches the second threshold
  • the time node of the feedback cycle is reached.
  • the blacklist includes the offset of the sequence number of the second data packet based on the sequence number of the first data packet, and the second data packet is the missing data packet. Any of the data packets in the data packet, the first data packet is a data packet that has been received by the data receiving end; or,
  • the whitelist includes the offset of the sequence number of the third data packet based on the sequence number of the first data packet, and the third data packet is any one of the several data packets.
  • the vacant data packet includes N data packets with consecutive serial numbers
  • the blacklist also includes the sequence number offset of the data packet with the smallest serial number among the N consecutive data packets. The shift amount and the sequence number offset of the packet with the largest sequence number; or,
  • the plurality of data packets include N data packets with consecutive serial numbers, and the white list also includes the sequence number offset of the data packet with the smallest serial number among the N data packets with consecutive serial numbers and the data with the largest serial number
  • the sequence number offset of the packet, N is an integer greater than 1.
  • the sequence number offset is coded by an M-bit unsigned integer
  • the high L bits of the first unsigned integer are the first value
  • the first value indicates that the N sequence numbers are consecutive
  • the high L bit of the second unsigned integer is the second value
  • the second value indicates the Nth data packet of the N consecutive data packets.
  • the low ML bit of the signed integer is used to encode the sequence number offset of the data packet with the smallest sequence number
  • the low ML bit of the second unsigned integer is used to encode the sequence number offset of the data packet with the largest sequence number. Shift, M and L are both integers greater than 1, and M is greater than L.
  • the confirmation information also includes an identifier of the data packet with the largest sequence number of the data packet that has been confirmed to be received.
  • the confirmation information also includes the amount of data currently stored in the receiving buffer.
  • the blacklist and the whitelist are encoded in a bitmap encoding manner.
  • the vacant data packet includes N1 data packets with consecutive sequence numbers
  • the blacklist includes a sequence number composed of the smallest sequence number and the largest sequence number among the N1 sequence numbers Range, N1 is an integer greater than 0; or,
  • the plurality of data packets include N2 data packets with consecutive serial numbers, and the whitelist includes a serial number range composed of the smallest serial number and the largest serial number among the N2 serial numbers, and N2 is an integer greater than 0 .
  • the confirmation information includes a blacklist and a whitelist
  • the sending module is specifically configured to:
  • an embodiment of the present application provides a data transmission device, including:
  • a receiving module configured to receive a first feedback message from a data receiving end, where the first feedback message is used to feed back a situation in which the data receiving end receives a data packet from the data sending end;
  • the retransmission module is configured to send copies of the first data packet to the data receiving end multiple times according to the first feedback message to complete a round of retransmission of the first data packet, wherein the first data packet A data packet is a data packet that should be retransmitted by the data sending end, and there is a random interval between the sending of two copies.
  • the retransmission module is further configured to determine again that the first data packet needs to be retransmitted according to the second feedback message sent by the data receiving end; Sending a copy of the first data packet to complete another round of retransmission of the first data packet, wherein in the another round of retransmission of the first data packet, every two copies are sent
  • the interval is also random, and the number of retransmissions of the first data packet in the further round of retransmission is greater than the number of retransmissions of the first data packet in the one round of retransmission.
  • the first feedback message includes a blacklist
  • the blacklist is used to indicate vacant data packets in the updated receiving buffer
  • the vacant data packet is the data sender A data packet that has been sent but not received by the data receiving end.
  • the number of retransmissions of the first data packet in this round is positively correlated with the number of retransmissions of the first data packet.
  • the first feedback message includes the amount of data stored in the receiving buffer of the receiving end, or a white list, and the white list indicates the data packets stored in the receiving buffer;
  • the retransmission module is specifically configured to determine the first data packet according to the first feedback message, and the first data volume meets a congestion window smaller than the data sending end, and the first data volume is the data
  • the sending end determines the amount of data based on the amount of data that has been sent to the data receiving end and the amount of second data, where the second amount of data is the amount of data stored in the receiving buffer or the amount of data determined according to the whitelist
  • an embodiment of the present application provides a data transmission device.
  • the device is applied to a data receiving end and includes a communication interface, a processor, and a memory.
  • the memory is used for storing software programs, and the processor is used for reading. Take the software program stored in the memory, send and receive data through the communication interface, and implement the method provided by the first aspect or any one of the above-mentioned first aspects.
  • an embodiment of the present application provides a data transmission device.
  • the device is applied to a data sending end and includes a communication interface, a processor, and a memory.
  • the memory is used to store a software program
  • the processor is used to read Take the software program stored in the memory, send and receive data through the communication interface, and implement the method provided by the second aspect or any one of the above-mentioned second aspects.
  • an embodiment of the present application provides a data processing system.
  • the system includes the device described in the third aspect and the device described in the fourth aspect.
  • the system includes the device described in the fifth aspect and the device described in the sixth aspect.
  • an embodiment of the present application also provides a computer storage medium, the storage medium stores a software program, and the software program can implement the first or second aspect when read and executed by one or more processors Any method provided by the design.
  • the embodiments of the present application provide a computer program product containing instructions, which when run on a computer, cause the computer to execute the method provided by any design of the first aspect or the second aspect.
  • an embodiment of the present application provides a chip, which is connected to a memory, and is used to read and execute a software program stored in the memory to implement any design of the first aspect or the second aspect Provided method.
  • FIG. 1 is a schematic diagram of an architecture corresponding to an application scenario provided by an embodiment of the application
  • FIG. 2 is a schematic diagram of a communication system architecture provided by an embodiment of the application.
  • FIG. 3 is a schematic flowchart of a data transmission method provided by an embodiment of the application.
  • FIG. 4 is a schematic diagram of an ACK packet structure provided by an embodiment of the application.
  • FIG. 5 is a schematic structural diagram of a DELAT.SEQ provided by an embodiment of the application.
  • FIG. 6 is a schematic diagram of data packet arrival conditions provided by an embodiment of the application.
  • Fig. 7 is a schematic diagram of another DELAT.SEQ structure provided by an embodiment of the application.
  • FIG. 8 is a schematic flowchart of a data transmission method provided by an embodiment of the application.
  • FIG. 9 is a schematic flowchart of a redundant retransmission method provided by an embodiment of the application.
  • FIG. 10 is a schematic diagram of a speculative transmission process provided by an embodiment of the application.
  • FIG. 11 is a schematic structural diagram of a data transmission device applied to a receiving end according to an embodiment of the application.
  • FIG. 12 is a schematic structural diagram of a data transmission device applied to a sending end according to an embodiment of the application.
  • FIG. 13 is a schematic structural diagram of a data transmission device 1300 provided by an embodiment of the application.
  • FIG. 14 is a schematic diagram of a test result of a scenario provided by an embodiment of the application.
  • FIG. 15 is a schematic diagram of a test result under scenario 2 provided by an embodiment of the application.
  • the data receiving end or the data sending end involved in this application can be a terminal device (also referred to as a terminal for short), such as a sensor, a mobile phone, a tablet, a notebook computer, a personal computer, a vehicle-mounted terminal, a set-top box, a TV box, etc.; or It is network equipment, such as gateway, access router, core router, front-end router, load balancer, server, etc.
  • the end-to-end scenario can be that a mobile phone projects a video on a smart TV or projects it on a display through a TV box or receiver.
  • both the data receiving end and the data sending end in this application refer to a device or an operating system.
  • the data receiving end refers to the device receiving data in a connection or the operating system in the device receiving data
  • the data sending end refers to the data sending end in a connection, so the same device can be used for a period of time.
  • the data receiving end is the data sending end for a period of time, or, since one device may be the end node of multiple connections, one device can be the data receiving end and the data sending end at the same time.
  • this application uses a connected data sending end and data receiving end as an example for description. It should be noted that, for the convenience of description, in the subsequent description, the data transmitting end is referred to as the transmitting end for short in the embodiments of the present application, and the data receiving end is referred to as the receiving end for short.
  • BDP large bandwidth-delay product
  • LPN long fat network
  • the corresponding services include public cloud massive data upload, hybrid cloud data migration, cross-datacenter (cross-DC) massive data distribution, disaster recovery, and corporate headquarters Data transmission, 2K/4K video-on-demand, live broadcast and other services with branches.
  • 2K/4K means that the total number of columns of video pixels is 2000 or 4000 columns.
  • the above-mentioned services have an urgent need for WAN transmission acceleration.
  • the method described in this application is applicable to multiple transmission protocols, such as transmission control protocol (transport control protocol, TCP), user data protocol (user data protocol, UDP), quick UDP internet connection (QUIC), flow control Transmission protocol (stream control transmission protocol, STCP), etc., can even be used in subflows in multipath transmission scenarios.
  • transmission control protocol transport control protocol
  • UDP user data protocol
  • quick UDP internet connection QUIC
  • flow control Transmission protocol stream control transmission protocol, STCP
  • TCP transport control protocol
  • CUBIC transport control protocol
  • BBR round-trip propagation time
  • FillP fill the pipe
  • the transmission acceleration effect of "high throughput scenarios" is restricted by the sending buffer and the receiving buffer.
  • the size of the sending buffer or receiving buffer required for transmission is determined by the maximum number of retransmissions of the data packet. Under the same lossy network conditions, the higher the throughput, the greater the maximum number of packet retransmissions. The greater the maximum number of packet retransmissions, the more buffering required for transmission.
  • Existing solutions mainly adjust the host cache to eliminate the impact of cache limitation, but in actual application scenarios, not all transceiver nodes are modifiable, and as traffic increases and network changes, one configuration may not meet permanent requirements. Treat the symptoms but not the root cause. Therefore, when the buffer is limited, improving the retransmission efficiency and reducing the maximum number of packet retransmissions are the key to solving this problem.
  • the embodiments of the present application provide a data transmission method and device to improve data transmission performance.
  • the method and the device are based on the same inventive concept. Since the principles of the method and the device to solve the problem are similar, the implementation of the device and the method can be referred to each other, and the repetition will not be repeated.
  • Whitelist Also called the whitelist of data packets, it is used to record the information of the data packets that the receiver has received, such as the identifier of the data packet, which can be a serial number, etc.
  • the data packet received by the receiving end is generally stored in the receiving buffer first, and then the data packet is taken out from the receiving buffer in the sequence of the data packet and sent to the application layer. For example, if data packets with sequence numbers 1, 2, 3, and 5 have been received and stored in the receive buffer, the sequence numbers 1, 2, and 3 are continuous, and the data packets with sequence number 4 are still taken out and sent to the application layer. If it is not received, the data packet with sequence number 5 in the receiving buffer will be stored in the receiving buffer until the data packet with sequence number 4 is received.
  • the data packets sent to the application layer are all data packets that are confirmed to be received, so the data packets that exist in the receiving buffer refer to the data packets that have been received but have not been confirmed.
  • the data packet with sequence number 5 belongs to the white list, in other words, the white list includes sequence number 5.
  • the white list records data packets at the application layer that have been received but not yet submitted by the receiving end when the white list is formed, in other words, data packets in the receiving buffer.
  • Blacklist It can also be called a data packet blacklist, which is used to record the data packets that the receiving end has not received. For example, the aforementioned data packet with a sequence number of 4 belongs to the blacklist.
  • the maximum number of packet retransmissions the retransmitted data packet may be lost again, and the lost packet will continue to be retransmitted until the data packet is successfully received by the receiving end.
  • the maximum number of packet retransmissions indicates the maximum number of retransmissions of a data packet in a path. The value of the maximum number of retransmissions of packets of a path can be refreshed over time.
  • Data path including the link between the data sending end and the receiving end. It can be considered that a path is composed of one or more links.
  • Reverse path also called the control path, that is, the path used to send feedback messages (such as ACK), which is the path formed by the link from the receiver to the transmitter.
  • the path for sending data packets and the path for sending feedback messages can correspond to different links.
  • retransmitted data packet is not limited by the size of the receiving buffer when it is sent. The specific implementation will be described in detail later, and the description will not be repeated here.
  • At least one refers to one or more, and “multiple or several” refers to two or more.
  • And/or describes the association relationship of the associated objects, indicating that there can be three relationships, for example, A and/or B, which can mean: A alone exists, A and B exist at the same time, and B exists alone, where A, B can be singular or plural.
  • the character “/” generally indicates that the associated objects are in an “or” relationship.
  • the following at least one item (a)” or similar expressions refers to any combination of these items, including any combination of a single item (a) or plural items (a).
  • At least one item (a) of a, b, or c can represent: a, b, c, ab, ac, bc, or abc, where a, b, and c can be single or multiple . It should be understood that although the terms first, second, etc. may be used to describe each object in the embodiments of the present application, these terms are only used to distinguish each object from each other.
  • FIG. 2 it is a schematic diagram of a specific architecture of a communication system as an example of an embodiment of this application.
  • the communication system includes a sending end and a receiving end.
  • the receiving end includes a receiving processing module 201, a packet loss detection module 202, an encoding module 203, a construction module 204, and a feedback control module 205
  • the transmitting end includes an analysis module 206 and a retransmission module 207.
  • packet loss detection can be at the sender, and the sender determines the lost packet by analyzing the ACK from the receiver.
  • the receiving processing module 201 receives data packets from the sending end, and buffers the received data packets in the receiving buffer, in other words, updating the receiving buffer of the receiving end according to the received data packets.
  • the packet loss detection module 202 determines a blacklist and/or a whitelist according to the data packets buffered in the receiving buffer.
  • the sending end may also be configured with a packet loss detection module, and the receiving end may only confirm the white list, so that the packet loss detection module at the sending end can confirm which data packets are lost and need to be retransmitted according to the white list sent by the sending end.
  • the encoding module 203 encodes the white list and/or black list determined by the packet loss detection module 202.
  • the encoding module 203 may adopt a method of marking the start data packet sequence number and the end data packet sequence number; or a bitmap encoding method, with 0 indicating that the data packet has not arrived, and 1 indicating that the data has arrived; Or adopt the method of integer coding, based on a certain data packet sequence number, and indicate the data packet through the sequence number offset (integer), thereby reducing the space occupation. Subsequent embodiments will describe in detail the encoding method adopted by the encoding module 203, and the description will not be repeated here.
  • the construction module 204 constructs an ACK packet, and the constructed ACK packet carries a blacklist and/or a whitelist.
  • the construction module 204 may add the blacklist and/or whitelist to the ACK packet based on the priority based on the left boundary data packet in the receiving buffer (the data packet with the smallest sequence number in the receiving buffer).
  • the ACK packet may be constructed using the identifier of the data packet with the smallest serial number in the blacklist; or the ACK packet may be constructed using the identifier of the data packet with the largest serial number in the whitelist; or the packet with the smallest serial number in the blacklist may be used.
  • the identifier of each data packet and the identifiers of the multiple data packets with the largest sequence number in the whitelist construct an ACK packet.
  • ACK packet when constructing an ACK packet, if certain data packets in the blacklist or whitelist are continuous, you can choose to construct the ACK packet based on the blacklist only or construct the ACK packet based on the whitelist, so that the sender can pass one of them
  • One kind of list infers another kind of list, for example, a blacklist can be used to infer a whitelist.
  • the ACK packet may also include the amount of data stored in the receive buffer.
  • the feedback control module 205 sends the ACK packet to the sender through the reverse path.
  • the feedback control module 205 may adopt event-based feedback control, such as the classic TCP packet-by-packet feedback ACK, that is, every time a certain number of data packets are received, an ACK is returned; or it is confiscated ACK is fed back to data packets with a specific amount of data; or a timer-based feedback control is adopted, such as the periodic active feedback of ACK packets of FillP, that is, an ACK packet is returned every specific time interval. You can also combine time-based feedback control and clock feedback control. As long as any one of the conditions is met, an ACK will be returned.
  • event-based feedback control such as the classic TCP packet-by-packet feedback ACK, that is, every time a certain number of data packets are received, an ACK is returned; or it is confiscated ACK is fed back to data packets with a specific amount of data; or a timer-based feedback control is adopted, such as the periodic active feedback of ACK packets of FillP, that is, an ACK packet is returned every specific
  • the sender parses the ACK packet through the parsing module 206 to obtain a parsing whitelist and/or blacklist. Specifically, the parsing module 206 reads the header and data fields of the ACK packet. For example, when the encoding module 203 adopts an integer encoding method, the parsing module 206 can obtain the blacklist and/or whitelist that have been encoded according to the offset defined by the ACK packet. Decoding according to encoding rules, obtaining information such as blacklist and/or whitelist, and the amount of data stored in the receiving buffer. The retransmission module 207 determines the lost data packet to be transmitted according to the white list and/or black list, so as to retransmit the lost data packet.
  • the retransmission module 207 performs random retransmission of data packets that need to be retransmitted in a speculative manner.
  • the methods and devices described in this application may only involve improvements to some of the above modules, while other modules may use existing technologies.
  • FIG. 3 is a schematic flowchart of a data transmission method provided by an embodiment of this application.
  • the method may include: S201, S202, and S203, and may also include S204 and S205.
  • S201 The receiving end receives multiple data packets from the data sending end.
  • the receiving end receives the data packet from the sending end through the transport layer.
  • the receiving end updates the receiving buffer of the data receiving end based on the multiple data packets.
  • the receiving buffer includes data packets that have been received and not confirmed to be received.
  • the sequence numbers of the 10 data packets are 1-10 respectively. Due to packet loss, the receiving end may only receive 5 data packets with serial numbers 1, 4, 5, 6, and 10. The receiving end stores the received 5 data packets in the receiving buffer, and schedules the data packets to be uploaded to the application layer in the order of sequence numbers.
  • the data packet with sequence number 1 is uploaded to the application layer, and the receiving buffer does not include the sequence number.
  • Data packets with serial numbers 4, 5, 6, and 10 will not be uploaded to the application layer.
  • data packets with serial numbers 2-3 are received, data with serial numbers 2-6
  • the package is uploaded to the application layer.
  • the data packets with serial numbers 7-9 are received, the data packets with serial numbers 7-10 are uploaded to the application layer.
  • S203 The receiving end sends confirmation information to the data sending end according to the updated receiving buffer, where the confirmation information includes a blacklist, or includes a blacklist and a whitelist.
  • the white list is used to indicate a number of data packets that the receiving end has received, for example, the number of data packets includes the multiple data packets. For another example, the white list indicates the data packets existing in the updated receiving buffer.
  • the blacklist is used to indicate vacant data packets in the updated receiving buffer, and the vacant data packets are data packets that have been sent by the sender and not received by the receiver.
  • the white list includes the identities of the K1 data packets with the largest sequence numbers existing in the updated receiving buffer
  • the blacklist includes the identities of the K2 data packets with the smallest sequence numbers among the vacant data packets , K1 and K2 are both integers greater than 0.
  • the sequence numbers of the 10 data packets are 1-10 respectively. Due to packet loss, the receiving end only received 5 data packets with serial numbers 1, 4, 5, 6, and 10 respectively. The receiving end stores the received 5 data packets in the receiving buffer, and schedules the data packets to be uploaded to the application layer in the order of sequence numbers, and the data packet with the sequence number 1 is uploaded to the application layer.
  • the receive buffer contains data packets with sequence numbers 4, 5, 6, and 10.
  • the unsuccessfully received data packets include data packets with sequence numbers 2, 3, 7, 8, and 9. Based on this, the whitelist may include the identifiers of data packets with serial numbers 4, 5, 6, and 10, and the blacklist may include the identifiers of data packets with serial numbers 2, 3, 7, 8, or 9.
  • the whitelist can include the identifiers of the data packets with serial numbers 6 and 10, and the blacklist can only include the serial number 2. , 3 the identification of the data packet.
  • the solution provided by this application includes the blacklist or blacklist and whitelist in the confirmation information, that is to say, the receiving end sends back the confirmation information to notify the identification of multiple data packets that the receiving end has not received in time.
  • the sending end so that the sending end can retransmit these data packets to the receiving end in a more timely manner without waiting for the timeout to retransmit, thereby improving the data transmission performance.
  • the receiving end indicates the whitelist to the sending end, so that the sending end can timely know the newly received data packets of the sending end, and to a certain extent, avoid the invalid retransmission (that is, retransmitting the received data packet) from the sending end. Waste of bandwidth.
  • the following principles can be followed when constructing an ACK packet.
  • one or more of the following principles can be selected:
  • the ACK packet can be given priority to add the identifier of the oldest data packet in the blacklist and the latest data in the whitelist The ID of the package.
  • the oldest packet refers to the packet with the smallest sequence number in the blacklist.
  • the latest data packet refers to the data packet with the largest sequence number among the data packets received and not confirmed, that is, the data packet with the largest sequence number in the receiving buffer.
  • the storage space used to carry the black and white list in the ACK packet can be filled with the identification of the latest K1 data packet in the whitelist and/or the identification of the oldest K2 data packet in the blacklist .
  • priority is defined for data packets based on their importance, and a whitelist is added to the remaining space according to the priority (for example, out-of-order packets, retransmitted packets, and head-of-line packets have high priority). That is to say, the whitelist sent to the sender in the embodiment of this application may also include the identifiers of the K3 data packets with the highest priority in the receiving buffer, where the priority of the data packet is related to the importance of the data packet . The number of K3 is related to the remaining space.
  • out-of-sequence packets refer to data packets that arrive at the receiving end not in the order of packet sequence numbers. For example, if the sequence numbers are 1, 2, 3, and 4, there are 4 data packets. If the order of arrival at the receiving end is 1, 3, 4, 2, then 2 is an out-of-sequence packet.
  • a retransmitted packet refers to a data packet that has been retransmitted by the sender and has been received by the receiver.
  • the header packet refers to the data packet with the smallest sequence number among the data packets that have been received by the receiving end.
  • the blacklist and whitelist can be fed back to the sender through a feedback message (also called an ACK packet), or the blacklist and whitelist can be fed back to the sender through different feedback messages, such as the first One feedback message includes the blacklist, and the second feedback message includes the whitelist.
  • a feedback message also called an ACK packet
  • the blacklist and whitelist can be fed back to the sender through different feedback messages, such as the first One feedback message includes the blacklist, and the second feedback message includes the whitelist.
  • the serial number of the data packet can be used to indicate whether the corresponding data packet is successfully received, that is, the blacklist and the white list are encoded based on the serial number of the data packet.
  • the encoding method adopts a sequence number (SEQ) before and after the boundary.
  • SEQ sequence number
  • the front boundary sequence number refers to the smallest sequence number among the sequence numbers of multiple data packets with continuous sequence numbers
  • the back boundary sequence number refers to the largest sequence number among the sequence numbers of multiple data packets with continuous sequence numbers. It should be understood that for a single serial number that is not adjacent to other serial numbers, the front boundary serial number is the same as the back boundary serial number.
  • the data packets existing in the updated receiving buffer include N1 data packets with consecutive serial numbers, and the whitelist may include a sequence consisting of the smallest sequence number and the largest sequence number among the N1 sequence numbers. Number range, N1 is an integer greater than 0.
  • the vacant data packet includes N2 data packets with consecutive sequence numbers, and the blacklist includes a sequence number range composed of the smallest sequence number and the largest sequence number among the N2 sequence numbers, and N2 is an integer greater than 0 .
  • the whitelist includes 1 serial number.
  • the blacklist includes 1 serial number.
  • the whitelist includes data packets with sequence numbers 4, 5, 6, and 10
  • the blacklist includes data packets with sequence numbers 2, 3, 7, 8, and 9, then [4,6],[10] means code After the whitelist, [2,3], [7,9] represent the blacklist after encoding.
  • the encoding method may adopt a bitmap encoding method.
  • the same whitelist includes data packets with sequence numbers 4, 5, 6, and 10
  • the blacklist includes data packets with sequence numbers 2, 3, 7, 8, and 9, then the blacklist and whitelist can be compiled into an ACK
  • the packet is fed back to the sender, for example, [001110001], where 1 represents a data packet in the white list, and 0 represents a data packet in the black list.
  • the encoding method may also use flagged relative integer coding (flagged relative integer coding) to encode the blacklist and the whitelist.
  • the blacklist includes the offset of the sequence number of the second data packet based on the sequence number of the first data packet, and the second data packet is any data packet among the vacant data packets,
  • the first data packet is a data packet that has been received by the data receiving end; or, the whitelist includes the offset of the sequence number of the third data packet when the sequence number of the first data packet is used as a reference
  • the third data packet is any one of the several data packets.
  • the first data packet may be the data packet with the smallest sequence number in the updated receiving buffer. That is, the minimum value of the sequence number of the data packet in the receiving buffer is used as the coding standard.
  • the data packets existing in the receiving buffer or the data packets vacant in the receiving buffer may include N data packets with continuous sequence numbers.
  • One way is to ignore the data packets with continuous sequence numbers, and for each data packet The corresponding offsets are individually coded.
  • Another way is to reduce the resources occupied by coding, when coding the black and white list, only the smallest sequence number and the largest sequence number in the N data packets with consecutive sequence numbers can be encoded. For example, the offset of the smallest sequence number and the offset of the largest sequence number among the N sequence numbers corresponding to multiple consecutive data packets are used to indicate the N data packets with consecutive sequence numbers.
  • the encoded ACK can pass the sequence number offset of the smallest sequence number among the N sequence numbers and the sequence number offset of the largest sequence number among the N sequence numbers.
  • the quantity indicates N data packets with consecutive serial numbers, and N is an integer greater than 1.
  • the sequence number offset can be encoded by an unsigned integer of M bits.
  • Example 1 The sequence number offset occupies M bits of an unsigned integer. This example 1 can be applied to the case where data packets with consecutive serial numbers are not considered, that is, a separate encoding method is adopted for each data packet.
  • Example 2 The offsets of multiple data packets with consecutive sequence numbers are only coded at the beginning and end. Specifically, the offset of the smallest sequence number and the offset of the largest sequence number in N data packets with consecutive sequence numbers can be used Encoding as follows:
  • the offset of the minimum sequence number and the offset of the maximum sequence number are encoded by two adjacent unsigned integers.
  • the high L bit of the first unsigned integer is a first value
  • the first value indicates the first data packet of N consecutive data packets
  • the high L bit of the second unsigned integer is the second value
  • the second value indicates the Nth data packet of the N data packets with consecutive serial numbers
  • the low ML bit of the first unsigned integer is used to encode the data with the smallest serial number among the N data packets with consecutive serial numbers
  • the sequence number offset of the packet is used to encode the sequence number offset of the data packet with the largest sequence number among the N consecutive data packets.
  • the first value is 1, and the second value is 0.
  • the unsigned integer whose high L bit is the first value indicates the start of multiple consecutive data packets, and the next unsigned integer (the high L bit is the second value) indicates the data packet is consecutive N in the whitelist
  • the data packet may be N consecutive data packets in the blacklist.
  • the first value can also be 0, and the second value is 1.
  • the high L bits of unsigned integers indicating other data packets with non-contiguous sequence numbers may also be the second value. Of course it can be other values.
  • Example 4 when the blacklist and whitelist can be encoded in the same ACK packet, and the offsets of multiple data packets with consecutive sequence numbers are only encoded at the beginning and end, the high T bit in the M-bit unsigned integer is the high T bit
  • the d bit is used to indicate that the unsigned integer indicates the data packet included in the whitelist or the data packet included in the blacklist
  • the L bit is used to indicate whether the data packet indicated by the unsigned integer is the first of multiple data packets with consecutive serial numbers.
  • the low M-T bits are used to encode the sequence number offset of the data packet.
  • the confirmation message also includes the identifier of the data packet with the largest sequence number of the received data packet (such as the sequence number or the sequence number offset), in other words the data that has been submitted to the application layer Maximum packet sequence number.
  • the packet header carries a 32-bit SEQ field, which represents the maximum value of the sequence number of the data packet that has been submitted to the application layer, that is, the largest sequence number of the data packet.
  • the data field carries a 32-bit HOL_SEQ.
  • the HOL_SEQ field indicates the minimum value of the sequence number of the data packet in the receiving buffer, and the minimum value of the sequence number of the data packet in the receiving buffer is used as the coding reference.
  • the sequence number offset is represented by OFFSET, which is an unsigned integer between 1-(2 ⁇ 31-1), and OFFSET is included in DELTA_SEQ.
  • DELTA_SEQ format is illustrated by taking the encoding method shown in Example 2 and the ACK packet is only included in the blacklist as an example.
  • the first position in Figure 5 is represented by M1.
  • DELTA_SEQ is defined as: if the first bit of DELTA_SEQ is 0, it means that the data packet corresponding to HOL_SEQ+OFFSET is lost; if the first bit of DELTA_SEQ is 1, it means that the packet corresponding to HOL_SEQ+OFFSET starts to the next packet corresponding to HOL_SEQ+OFFSET (the first bit of DELTA_SEQ is 0) The packets in between are lost.
  • the ACK packet may also include the number of bits used to indicate the data packet in the current receiving buffer, which is used by the subsequent sender to update the number of bits of the data packet that has been sent but not confirmed to be received. For example, see the RCV.NO field in Figure 3, which is used to indicate the number of bits of the data packet in the current receive buffer.
  • DELTA_SEQ a format of DELTA_SEQ is illustrated by taking the encoding method shown in Example 4 and the blacklist and whitelist in the ACK packet as an example.
  • the first bit of DELTA_SEQ is represented by M1
  • the second bit is represented by M2.
  • DELTA_SEQ is defined as: the first bit of DELTA_SEQ is used to indicate whether it is a blacklist. For example, if the first bit of DELTA_SEQ is 1 to indicate a data packet included in the blacklist, and the first bit of DELTA_SEQ is 0 to indicate a data packet included in the whitelist.
  • the reverse is also possible.
  • the first bit of DELTA_SEQ is 0 to indicate the data packets included in the blacklist, and the first bit of DELTA_SEQ is 1 to indicate the data packets included in the whitelist.
  • the second bit of DELTA_SEQ is used to indicate whether it is the first data packet of a continuous data packet, for example, the second bit of DELTA_SEQ is 0 to indicate that it is not the first data packet of a continuous data packet, and the second bit of DELTA_SEQ is 1 to indicate a continuous data packet If the second bit of DELTA_SEQ is 0, it means that the data packet corresponding to HOL_SEQ+OFFSET is lost; if the second bit of DELTA_SEQ is 1, it indicates that the packet corresponding to HOL_SEQ+OFFSET starts to the next HOL_SEQ+OFFSET (first bit of DELTA_SEQ) Is 0) corresponding to multiple consecutive data packets.
  • the first bit of DELTA_SEQ is 1 to indicate the data packets included in the blacklist
  • the first bit of DELTA_SEQ is 0 to indicate the data packets included in the whitelist
  • the second bit of DELTA_SEQ is 0 to indicate that the first data packet is not a continuous data packet
  • the second bit of DELTA_SEQ is For example, 1 indicates the first data packet of consecutive data packets.
  • the arrival of data packets in the receive buffer is shown in Figure 5.
  • the 9 DELTA_SEQs in the ACK packet carry information: 0x00000002, 0x80000003, 0x00000004, 0x00000005, 0xC0000006, 0x80000008, 0x40000009, 0x0000000D, 0x8000000E.
  • the information carried in the 9 DELTA_SEQs indicates that the data packets with sequence number offsets of 3, 6-8, and 14 are all lost, and data packets with sequence numbers 2, 4, 5, and 9-13 are all successfully received but not confirmed receive.
  • the ACK packet may also include an indication of the amount of data stored in the current receiving buffer, which is used by the subsequent sender to update the amount of data of a data packet that has been sent but not confirmed to be received. For example, see the RCV.NO field in Figure 4, which is used to indicate the amount of data stored in the current receive buffer.
  • the sender analyzes the information carried in the received ACK packet.
  • the [SEQ, HOL.SEQ] field collectively indicates the interval of the oldest packet sequence number included in the blacklist
  • RCV.NO indicates the number of bits of out-of-sequence packets in the current receive buffer byte_received (Alternatively referred to as the amount of data), used to subsequently update the number of bits of the data packet that has been sent but not confirmed.
  • DELTA.SEQ indicates the offset of the sequence number of other data packets except the oldest data packet included in the blacklist or The sequence number offset of the packets included in the whitelist.
  • the sender decodes DELTA.SEQ, and the [HOL.SEQ, DELTA.SEQ] field collectively indicates the sequence number of a data packet, which can be a data packet in the blacklist or a data packet in the whitelist.
  • the receiving end sends confirmation information to the sending end when the feedback condition is satisfied
  • the feedback conditions include one or more of the following:
  • the number of received data packets reaches the first threshold
  • the number of received data bits reaches the second threshold
  • the time node of the feedback cycle is reached.
  • the confirmation information may be sent through a feedback message, and the feedback message carries a blacklist and/or whitelist.
  • the confirmation information includes a blacklist and a whitelist
  • the confirmation information can be sent through two feedback messages, for example, the first feedback message includes the blacklist, and the second feedback message includes the whitelist.
  • S205 The sending end determines the data packets not received by the receiving end according to the confirmation information, and retransmits the data packets not received by the receiving end.
  • the sender may adopt a redundant retransmission mode when retransmitting a data packet not received by the receiving end.
  • Redundant retransmission means that when a data packet is retransmitted in one round, the copy of the data packet that needs to be retransmitted is repeatedly sent multiple times.
  • a copy of a data packet has the same data content as the data packet.
  • FIG. 8 is a schematic flowchart of a data transmission method (redundant retransmission method) provided by an embodiment of this application.
  • S701 A sending end receives confirmation information from a data receiving end, where the confirmation information is used to indicate that the receiving end receives a data packet from the sending end.
  • the confirmation information may only include the white list, and the white list is carried in one feedback message, that is, the existing way of feeding back the ACK packet is adopted.
  • the confirmation information may include a blacklist.
  • the blacklist is carried in a feedback message.
  • the confirmation information may include a blacklist and a whitelist.
  • the blacklist and the whitelist are carried in one feedback message, the blacklist can also be carried in the first feedback message, and the whitelist is carried in the second feedback message.
  • the sending end sends copies of the first data packet to the data receiving end multiple times according to the confirmation information to complete a round of retransmission of the first data packet, where the first data packet is A data packet that the data sender should retransmit.
  • the number of retransmissions in each round of retransmission may be the same. For example, when the first data packet is retransmitted in the first round, it is retransmitted twice, and after the first data packet is retransmitted in the first round, the receiving end does not receive the first data packet, then the first data packet is retransmitted in the second round When, it is also retransmitted twice.
  • the number of retransmissions of the data packet correspondingly increases, that is, the number of retransmissions is positively correlated with the number of retransmission rounds of the retransmitted data packet.
  • the number of retransmissions there is an association between the number of retransmissions and the number of retransmission rounds. For example, when the number of retransmission rounds is n, that is, when a data packet is retransmitted in the nth round, a copy of the data packet is retransmitted 2n-1 times.
  • the second example when the second example is adopted, before the first data packet is retransmitted in each round, it may be determined to send a copy of the first data packet in this round according to the associated management of the number of retransmissions and the number of retransmission rounds. The number of times.
  • multiple data packets that are retransmitted each time can be randomly allocated to multiple different time slices for transmission, that is to say, in a round of retransmission, every two of the first data packets
  • the random time interval between the sending of the copy of the, to a certain extent can alleviate the increase in the packet loss rate caused by continuous packet loss, and then redundancy to ensure rapid recovery of data loss.
  • the sending end repeatedly sends a copy of the first data packet to the receiving end M times during the current round of retransmission, which can be achieved in the following manner:
  • the sending end randomly generates the sending interval time between every two of the M copies of the first data packet to obtain M-1 sending interval time;
  • the sending end repeatedly sends a copy of the first data packet to the receiving end M times according to the randomly generated M-1 sending interval time.
  • the sender has three copies of the first data packet.
  • the interval between the first copy and the second copy is 0.1s, and the interval between the second copy and the third copy is 0.25s.
  • the copies of the first data packet sent three times are not continuously sent, which can reduce the probability of the retransmitted packet being lost again due to continuous packet loss on the link to a certain extent.
  • the sending end when the sending end determines the number of retransmissions of the first data packet in a round of retransmissions, it may be determined according to the redundancy retransmission level.
  • the redundancy retransmission level is related to the network status. In other words, the redundancy retransmission level can be determined according to the current network status.
  • the network status may be reflected by packet loss rate, jitter, queuing delay, receiving window size, etc.
  • the sender can determine the redundancy retransmission level according to at least one of the packet loss rate, jitter, queuing delay, and receiving window size, that is, determine the correlation between the number of redundant retransmissions and the number of retransmission rounds, and different redundancy
  • the association relationship corresponding to the retransmission level is different.
  • the sender can determine the redundancy retransmission level according to the packet loss rate detected during transmission. For example, if the packet loss rate exceeds 5%, it is determined as the high redundancy level; the packet loss rate is between 1% and 5%, and it is determined as the medium redundancy level; the packet loss rate is less than 1%, and it is determined as the low redundancy level.
  • the sender may determine the redundancy retransmission level according to the detected data packet queuing delay during transmission. For example, a round trip time (RTT) with a queuing delay exceeding 15 times can be determined as a high redundancy level; a queuing delay exceeding 5 times RTT but not more than 15 times RTT is determined as a medium redundancy level; If the time delay exceeds 5 times RTT, it is determined as a low redundancy level.
  • RTT round trip time
  • the sender determines the redundancy retransmission level according to the size of the receiving window detected during the transmission. For example, if the receiving window size is less than 5% of the total window size, it is determined as a high redundancy level; if the receiving window size is between 5% and 15% of the total window size, it is determined as a medium redundancy level; the receiving window size is less than 5% of the total window size. More than 15% is determined as a low redundancy level.
  • the sender determines the redundancy retransmission level according to the size of the packet loss rate detected during the transmission and the size of the packet queuing delay detected during the transmission. For example, RTT with a packet loss rate of more than 5% and a queuing delay of more than 15 times is determined to be a high redundancy level, with a packet loss rate of between 1% and 5% and/or queuing delay of more than 5 times RTT but not more than 15 Double RTT is determined as medium redundancy level, and other cases are determined as low redundancy level.
  • the following example is an example of the relationship between the number of redundant retransmissions corresponding to the redundant retransmission level and the number of retransmission rounds. Taking three redundant retransmission levels as an example, it can also be divided into two levels, or more Level, this embodiment of the application does not specifically limit this.
  • Low redundancy level retransmit a data packet in the nth round and send a copy of the data packet n times;
  • Medium redundancy level retransmit a data packet in the nth round, and send a copy of the data packet 2n-1 times;
  • High redundancy level Retransmit a data packet in the nth round, and send a copy of the data packet 3n-2 times.
  • different redundancy retransmission levels can ensure that the first round of transmission is not redundant, that is, a data packet is sent once in the first round of transmission.
  • a copy of the data packet can be retransmitted 7 times, if it is determined as low redundancy according to the network status Level, then a copy of the data packet can be retransmitted 3 times in the third round of retransmission.
  • whether to perform redundant retransmission may also be determined according to the network status.
  • whether to perform redundant retransmission may be determined based on at least one of packet loss rate, jitter, queuing delay, and receiving window size. For example, determine whether redundant retransmission is based on the detected packet loss rate during transmission. For example, if the packet loss rate is less than 1%, redundant retransmission is not performed. When the packet loss rate is greater than or equal to 1%, it is performed Redundant retransmission.
  • a retransmission list can be established, such as a redunList.
  • the identifier eg Sequence number
  • M-1 sending interval times may be added to the retransmission list.
  • the data packet is retransmitted according to the retransmission list.
  • redunList as an example, the redundant retransmission method is described in detail.
  • S801 Send a data packet to be sent in the first round, and it is determined that the receiving end has not received the data packet to be sent.
  • S802 Determine whether to perform redundant retransmission for the data packet to be sent. If yes, execute S803, if not, execute S808.
  • S803 Add the sequence number of the data packet to be sent to the retransmission list, and determine that in this round of retransmission, the number of retransmissions of the data packet to be sent is M.
  • S804 Randomly generate M-1 sending interval times between each of the copies of the to-be-sent data packet in the M retransmissions, and add them to the retransmission list.
  • S808 Retransmit the to-be-sent data packet once.
  • the sender determines the packet to be retransmitted through ACK, and the retransmitted packet is only retransmitted once in a round of retransmission. Once the retransmitted packet is lost, it needs to wait for the next ACK to indicate the next round of retransmission. Only in the next round of retransmission can the retransmission packet be received, which will increase the degree of congestion.
  • the retransmission packet is redundantly retransmitted multiple times during each round of retransmission, and there is an unfixed time interval between each retransmission. Network instability, etc.
  • the advertised window is the remaining space of the receiving buffer at the receiving end, and the unit is the number of bits.
  • the receiver limits the amount of data sent by the sender to the network by feeding back the notification window to the sender, and prevents the receiver's buffer from being filled. For example, if the sender's congestion window (CWND) is 10MB, but the notification window is 6MB, the sender can only take the smaller value of the two in the prior art, that is, send up to 6MB of data to the network.
  • the link In the packet loss recovery phase, the link is basically idle. In order to improve bandwidth utilization, in the packet loss recovery phase, the AWND may not be restricted.
  • the embodiment of the present application may adopt a method of sending data packets in excess. Due to the limitation of the receiving buffer, the sender can only send the next data packet after receiving the ACK packet, but if the retransmission packet is sent in excess and the retransmitted packet is successfully received by the receiving end, a large amount of receive buffer can be released to relieve congestion . For over-sending retransmission packets, it is necessary to ensure that the retransmission packets are successfully received by the receiving end as much as possible. If the retransmission is lost again, sending the retransmission packets in excess in advance will worsen the network transmission.
  • the embodiment of this application can adopt speculative transmission.
  • One method is In the recovery phase, the amount of data allowed to be sent is not limited by the notification window and congestion window, and the random redundant retransmission method is used to send retransmission packets to the sender.
  • the redundant retransmission method the retransmitted data packet can be received by the receiving end with the greatest probability, and then the speculative method can be used to release part of the receiving buffer to a certain extent and relieve congestion.
  • Another way is: after it is determined that the number of bits (the first data amount) that have been sent to the receiving end and the receiving end has not received the data packet is less than the congestion window (CWND), then send the data packet to the receiving end, that is, from Fetch the data packet from the sending buffer and send it to the receiving end.
  • the congestion window is generally related to the congestion level of the network speed and the amount of processed data.
  • the confirmation information may also include the amount of data stored in the receiving buffer of the receiving end, or a white list, where the white list indicates the data packets stored in the receiving buffer. Therefore, the sending end may determine the first data amount according to the amount of data that has been sent to the receiving end and the second data amount, for example, the difference between the amount of data that has been sent to the receiving end and the second data amount is determined Is the first data volume, and the second data volume is the data volume stored in the receiving buffer or the data volume of the data packet in the receiving buffer determined according to the white list. Therefore, when the sending end sends copies of the first data packet to the receiving end multiple times according to the first feedback message to complete a round of retransmission of the first data packet, this can be achieved in the following manner:
  • the sending end determines the first data packet according to the first feedback message. When the first data volume is less than the congestion window of the sending end, the sending end sends the first data packet to the receiving end multiple times. Copy to complete a round of retransmission of the first data packet.
  • the first data amount is greater than or equal to CWND
  • sending a copy of the first data packet to the sender is prohibited. That is to say, the number of bits of the data packet that has been sent but not received by the receiving end has exceeded the congestion window, indicating that the network status has deteriorated and the packet loss rate is high, so sending data to the receiving end is prohibited.
  • the minimum value of the notification window and the congestion window is compared with the number of data packets that have been sent to the receiving end and the receiving end has not confirmed the reception.
  • the number of data packets that have been sent to the receiving end but not received is compared with the notification window to determine to perform retransmission.
  • the first amount of data determined in this application will be the part of the data that has been stored in the receiving buffer. Also excluded, and then compared with the congestion window, therefore, compared with the existing, increase the amount of data allowed to be sent. Therefore, in the embodiments of the present application, the redundant retransmission method is adopted, so that the retransmitted data packet can be received by the receiving end with the greatest probability, and then the second speculative method is adopted, which can to a certain extent. Release part of the receive buffer to relieve congestion.
  • the first data amount may be determined in the following manner:
  • the sending end determines the first data volume (data that has been sent to the receiving end but not received by the receiving end) according to the second data volume and the number of bits of the data packet that has been sent to the sending end The amount of data in the package).
  • new_inflight_size represents the first data volume
  • byte_received represents the second data volume
  • new_inflight_size old_inflight_size-byte_received
  • old_inflight_size represents the first data volume updated according to the first data volume confirmed last time. Specifically, after the first data amount is determined, the first data amount is updated every time a data packet is sent or an acknowledgement of a data packet is received or it is determined that a certain data packet is lost. For example, after each data packet is sent, the sum of the first data amount and the number of bits of the data packet is taken as the updated first data amount.
  • S901 Determine whether it belongs to the packet loss recovery stage. If yes, execute S902, if not, execute S905.
  • new_inflight_size is updated according to byte_received.
  • S904 Obtain the data packet from the sending buffer and send it to the receiving end. Go to S903.
  • S905 Prohibit sending data packets.
  • the sending end when the sending end receives the sent confirmation information at the receiving end, taking the ACK packet as an example, the ACK packet includes the RCV.NO field, and the RCV.NO field is used to indicate the number of bits of the data packet in the receiving buffer. That is, the receiving end has received the second data amount of the data packet that has not been confirmed to be received, so the sending end can determine the first data amount according to the second data amount.
  • an embodiment of the present application also provides a data transmission device, and the data transmission module can be applied to the receiving end.
  • the device may specifically be a processor, a chip, a chip system, or a functional module for receiving.
  • the data transmission device may include a receiving module 1001, an updating module 1002, and a sending module 1003.
  • the receiving module 1001 receives multiple data packets from the sending end, and the updating module 1002 updates the receiving buffer of the data receiving end based on the multiple data packets; the sending module 1003 sends confirmation information to the sending end according to the updated receiving buffer.
  • the confirmation information includes a blacklist, or includes a blacklist and a whitelist, the blacklist is used to indicate vacant data packets in the updated receiving buffer, and the vacant data packet is the data sender
  • the white list is used to indicate a number of data packets that have been received by the data receiving end, and the several data packets include the multiple data packets.
  • the functions of the receiving module 1001 and the updating module 1002 in this embodiment may be executed by the receiving processing module 201 in FIG. 2.
  • the blacklist, or blacklist and whitelist included in the confirmation information may be a blacklist and whitelist after encoding.
  • the packet loss detection module 202 and the encoding module 203 in FIG. 2 can be executed.
  • the confirmation information may be an ACK constructed by the construction module 204 shown in FIG. 2.
  • the whitelist includes the identifier of the data packet with the largest sequence number in the updated receiving buffer, and the blacklist includes the identifier of the data packet with the smallest sequence number among the vacant data packets .
  • the whitelist further includes an identifier of a data packet with a higher priority in the updated receiving buffer, wherein the priority of the data packet is related to the importance of the data packet.
  • the sending module 1003 is specifically configured to send the confirmation information to the data sending end when the feedback condition is satisfied;
  • the feedback condition includes one or more of the following: the number of received data packets reaches a first threshold;
  • the number of received data bits reaches the second threshold
  • the time node of the feedback cycle is reached.
  • the function of the sending module 1003 can be implemented by the feedback control module 205 in FIG. 2.
  • the feedback control module 205 is used to determine whether the feedback condition is satisfied, and when the feedback condition is satisfied, instruct the sending module 1003 to send confirmation information.
  • the blacklist includes the offset of the sequence number of the second data packet based on the sequence number of the first data packet, and the second data packet is the missing data packet Any data packet in the data packet, the first data packet is a data packet that has been received by the data receiving end; or,
  • the whitelist includes an offset of the sequence number of the third data packet when the sequence number of the first data packet is used as a reference, and the third data packet is any one of the several data packets.
  • the vacant data packet includes N data packets with consecutive serial numbers
  • the blacklist further includes the serial number of the data packet with the smallest serial number among the N data packets with consecutive serial numbers.
  • the offset and the sequence number offset of the data packet with the largest sequence number; or, the several data packets include N data packets with consecutive sequence numbers
  • the whitelist also includes N data packets with consecutive sequence numbers In the sequence number offset of the packet with the smallest sequence number and the sequence number offset of the packet with the largest sequence number, N is an integer greater than 1.
  • the sequence number offset is encoded by an M-bit unsigned integer
  • the high L bits of the first unsigned integer are a first value
  • the first value indicates N sequence numbers
  • the high L bit of the second unsigned integer is the second value
  • the second value indicates the Nth data packet of the N consecutive data packets.
  • the low ML bit of the unsigned integer is used to encode the sequence number offset of the data packet with the smallest sequence number
  • the low ML bit of the second unsigned integer is used to encode the sequence number of the data packet with the largest sequence number
  • the offset, M and L are both integers greater than 1, and M is greater than L.
  • the confirmation information further includes an identifier of the data packet with the largest sequence number of the data packet that has been confirmed to be received.
  • the confirmation information also includes the amount of data currently stored in the receiving buffer.
  • the blacklist and the whitelist are encoded in a bitmap encoding manner.
  • the vacant data packet includes N1 data packets with consecutive serial numbers
  • the blacklist includes a sequence consisting of the smallest sequence number and the largest sequence number among the N1 sequence numbers.
  • Number range, N1 is an integer greater than 0; or,
  • the plurality of data packets include N2 data packets with consecutive serial numbers, and the whitelist includes a serial number range composed of the smallest serial number and the largest serial number among the N2 serial numbers, and N2 is an integer greater than 0 .
  • the confirmation information includes a blacklist and a whitelist
  • the sending module 1003 is specifically configured to: send a first feedback message and a second feedback message to the data sending end, and the first feedback message A feedback message includes the blacklist, and the second feedback message includes the whitelist.
  • an embodiment of the present application also provides a data transmission device, and the data transmission module can be applied to the sending end.
  • the device may specifically be a processor, a chip, a chip system, or a functional module for receiving.
  • the data transmission device includes a receiving module 1101 and a retransmission module 1102.
  • the retransmission module 1102 may determine the first data packet according to the feedback of the data packet received by the receiving end from the data sending end in the first feedback message When it is a data packet that should be retransmitted, it is executed multiple times to send copies of the first data packet to the data receiving end to complete a round of retransmission of the first data packet. Random time interval.
  • the function of the receiving module 1101 may be implemented by the parsing module 206 in FIG. 2, and the function of the retransmission module 1102 may be implemented by the retransmission module 1102 in FIG. 2.
  • the parsing module 206 performs the specific function of parsing the feedback message to obtain the black and white list, and then sends the black and white list to the retransmission module 1102, and the retransmission Module 1102 performs retransmission based on the black and white list.
  • the retransmission module 1102 performs a specific function of parsing the feedback message to obtain a black and white list, and performs retransmission based on the black and white list.
  • the retransmission module 1102 determines again that the first data packet needs to be retransmitted; thus, the retransmission module 1102 receives the data multiple times
  • the end sends a copy of the first data packet to complete another round of retransmission of the first data packet, wherein in the another round of retransmission of the first data packet, the The sending is also separated by a random length of time, and the number of retransmissions of the first data packet in the further round of retransmission may be greater than or equal to the number of retransmissions of the first data packet in the one round of retransmission .
  • the first feedback message includes the amount of data stored in the receiving buffer of the receiving end, or a whitelist, and the whitelist indicates the data packets stored in the receiving buffer.
  • the receiving module 1101 may send the first feedback message including the amount of data stored in the receiving buffer of the receiving end or a white list to the retransmission module 1102, so that the retransmission module 1102 may determine according to the amount of data stored in the receiving buffer or the white list
  • the retransmission module 1102 executes multiple times to send copies of the first data packet to the data receiving end to complete a round of retransmission of the first data packet when the first data volume meets the congestion window smaller than the data sending end. . In an example, when the first data amount is greater than or equal to the congestion window, the retransmission module 1102 may not send a copy of the first data packet to the receiving end.
  • the division of modules in the embodiments of the present application is illustrative, and is only a logical function division. In actual implementation, there may be other division methods.
  • the functional modules in each embodiment of the present application It can be integrated in a processor, or it can exist alone physically, or two or more modules can be integrated in one module.
  • the above-mentioned integrated modules can be implemented in the form of hardware or software functional modules.
  • the device 1300 may be a chip or a chip system.
  • the chip system in the embodiments of the present application may be composed of chips, or may include chips and other discrete devices.
  • the apparatus 1300 may include at least one processor 1310, and the apparatus 1300 may also include at least one memory 1320 for storing program instructions and/or data.
  • the memory 1320 and the processor 1310 are coupled.
  • the coupling in the embodiments of the present application is an indirect coupling or communication connection between devices, units, or modules, and may be in electrical, mechanical or other forms, and is used for information exchange between devices, units or modules.
  • the processor 1310 may operate in cooperation with the memory 1320.
  • the processor 1310 may execute program instructions stored in the memory 1320.
  • at least one of the at least one memory 1320 may be included in the processor 1310.
  • the apparatus 1300 may further include a communication interface 1330, and the apparatus 1300 may exchange information with other devices through the communication interface 1330.
  • the communication interface 1330 may be a circuit, a bus, a transceiver, or any other device that can be used for information exchange.
  • the device 1300 may be applied to the receiving end, and the specific device 1300 may be a device capable of supporting the receiving end to implement the function of the receiving end in any of the above-mentioned embodiments.
  • the memory 1320 stores necessary computer program instructions and/or data to realize the functions of the receiving end in any of the above embodiments.
  • the processor 1310 can execute the computer program instructions stored in the memory 1320 to complete the method executed by the receiving end in any of the foregoing embodiments.
  • the functions of the receiving module 1001, the updating module 1002, and the sending module 1003 shown in FIG. 11 can all be implemented by the processor 1310.
  • the functions of the receiving processing module 201, the packet loss detection module 202, the encoding module 203, the construction module 204, and the feedback control module 205 described in FIG. 2 may also be implemented by the processor 1310.
  • the apparatus 1300 may be applied to the sending end, and the specific apparatus 1300 may be a device capable of supporting the sending end to implement the function of the sending end in any of the foregoing embodiments.
  • the memory 1320 stores necessary computer program instructions and/or data to realize the function of the sending end in any of the above embodiments.
  • the processor 1310 can execute computer program instructions stored in the memory 1320 to complete the method executed by the sending end in any of the foregoing embodiments.
  • the functions of the receiving module 1101 and the retransmission module 1102 shown in FIG. 12 can all be implemented by the processor 1310.
  • the analysis module 206 and the retransmission module 207 described in FIG. 2 may also be implemented by the processor 1310.
  • the embodiment of the present application does not limit the specific connection medium between the communication interface 1330, the processor 1310, and the memory 1320.
  • the memory 1320, the processor 1310, and the communication interface 1330 are connected by a bus 1340.
  • the bus 1340 is represented by a thick line in FIG. 13.
  • the connection modes between other components are only illustrative. Explain, not to limit.
  • the bus can be divided into address bus, data bus, control bus, etc. For ease of presentation, only one thick line is used in FIG. 13, but it does not mean that there is only one bus or one type of bus.
  • the processor may be a general-purpose processor, a digital signal processor, an application specific integrated circuit, a field programmable gate array or other programmable logic device, a discrete gate or transistor logic device, a discrete hardware component, and may implement or Perform the methods, steps and logic block diagrams disclosed in the embodiments of the present application.
  • the general-purpose processor may be a microprocessor or any conventional processor. The steps of the method disclosed in the embodiments of the present application may be directly embodied as being executed and completed by a hardware processor, or executed and completed by a combination of hardware and software modules in the processor.
  • the memory may be a non-volatile memory, such as a hard disk drive (HDD) or a solid-state drive (SSD), etc., or a volatile memory (volatile memory), for example Random-access memory (random-access memory, RAM).
  • the memory may also be any other medium that can be used to carry or store desired program codes in the form of instructions or data structures and that can be accessed by a computer, but is not limited thereto.
  • the memory in the embodiments of the present application may also be a circuit or any other device capable of realizing a storage function, for storing program instructions and/or data.
  • This application adopts a redundant feedback method that combines black and white lists.
  • the black list improves the ability to respond to reverse packet loss, and the white list reduces unnecessary retransmissions, ensuring high performance in the case of packet loss on the reverse path.
  • This application can adopt a relative integer encoding method with marked bits. Using the coding method marked by (starting sequence number, ending sequence number), the coding is simple, but it occupies a large space; the coding method of bitmap marking saves a lot of space, but when the packet loss is less, the efficiency is low; and the relatively integer coding The method can have the advantages of both, not only the coding is simple, but also takes up less space. The relative integer encoding with marked bits further reduces the space occupation.
  • the sending end of the present application can adopt a random redundant retransmission method, so that under the premise of ensuring a high probability of successful retransmission, it can perform speculative transmission and improve the success rate of retransmission.
  • the embodiment of the present application may also adopt a method of cooperation between the sender and receiver, that is, the receiver judges packet loss, generates a black and white list for redundant feedback to the sender, and the sender adopts a random redundant retransmission method to improve transmission performance.
  • Scenario 1 In a lossy network with a large BDP, the bottleneck link capacity is 1Gbps, the round trip delay is 300ms, and the packet loss rate is 3%.
  • the send/receive buffer is set to 256MB.
  • test results show that the solution provided by the embodiments of this application can reduce the maximum number of data packet retransmissions by 43%, that is, all data packets will be sent to the receiving end after a maximum of 2.3 retransmissions (the original need 4 times), thereby reducing reception
  • the phenomenon of buffer squadron header waiting can increase the effective throughput by 16%.
  • Scenario 2 A lossy network with a large BDP.
  • the bottleneck link capacity is 1Gbps
  • the round-trip delay is 120ms
  • the forward packet loss rate is 3%.
  • the packet loss rates of reverse ACK packets are 0.2%, 1%, 5%, and 10% respectively.
  • the send/receive buffer is set to 256MB.
  • TCP BBR Through TCP BBR, FillP and deployment of the solution provided by this application, from the sender to the receiver, each protocol is run 100 times, the effective throughput and the average of the maximum number of retransmissions are evaluated, and the test results obtained are shown in Figure 15. Shown. The test results show that: when the reverse packet loss of this application is severe (>5%), compared with the other two, the effective throughput can be increased by more than 7-20 times.
  • the embodiments of the present application can be provided as methods, systems, or computer program products. Therefore, the present application may adopt the form of a complete hardware embodiment, a complete software embodiment, or an embodiment combining software and hardware. Moreover, this application may adopt the form of a computer program product implemented on one or more computer-usable storage media (including but not limited to disk storage, CD-ROM, optical storage, etc.) containing computer-usable program codes.
  • a computer-usable storage media including but not limited to disk storage, CD-ROM, optical storage, etc.
  • These computer program instructions can also be stored in a computer-readable memory that can guide a computer or other programmable data processing equipment to work in a specific manner, so that the instructions stored in the computer-readable memory produce an article of manufacture including the instruction device.
  • the device implements the functions specified in one process or multiple processes in the flowchart and/or one block or multiple blocks in the block diagram.
  • These computer program instructions can also be loaded on a computer or other programmable data processing equipment, so that a series of operation steps are executed on the computer or other programmable equipment to produce computer-implemented processing, so as to execute on the computer or other programmable equipment.
  • the instructions provide steps for implementing functions specified in a flow or multiple flows in the flowchart and/or a block or multiple blocks in the block diagram.

Landscapes

  • Engineering & Computer Science (AREA)
  • Signal Processing (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Computer Security & Cryptography (AREA)
  • Detection And Prevention Of Errors In Transmission (AREA)
  • Communication Control (AREA)
  • Data Exchanges In Wide-Area Networks (AREA)

Abstract

本申请公开了一种数据传输方法及装置,用以提高数据传输的性能。接收端在向发送端发送的确认信息中包括黑名单,或者包括黑名单和白名单,也就是说接收端每次都会将多个未接收到的数据包(例如可能造成行头阻塞的包)的信息及时的通知给发送端,从而发送端能够及时向接收端重传这些数据包。另外,接收端向发送端指示白名单,使得发送端能够及时获知接收端新接收到的数据包,在一定程度上避免发送端由于无效的重传导致的带宽浪费。发送端在每轮重传时,对于一个重传包重传多次,并且重传的时间不连续,在一定程度上避免连续丢包导致的重传失败,从而可以提高重传成功率。

Description

一种数据传输方法及装置
相关申请的交叉引用
本申请要求在2019年03月25日提交中国专利局、申请号为201910229219.1、申请名称为“一种数据传输方法及装置”的中国专利申请的优先权,其全部内容通过引用结合在本申请中。
技术领域
本申请涉及通信技术领域,尤其涉及一种数据传输方法及装置。
背景技术
虚拟现实、增强现实、高清无线投屏以及基于人工智能的新型应用的兴起,催生出广域网和无线局域网上海量数据传输的需求。对带宽的需求越来越大,因此数据包传输要求高吞吐量。而“高吞吐”对确认信息(acknowledgement,ACK)机制提出新的挑战。例如,大型企业通常通过在广域网部署专线来保证其部分关键业务的快速、可靠的数据传输。然而,目前大部分的业务仍然是通过公共的、价格相对便宜的公网来进行传输。对于中小型企业来说,采用公网传输的业务所占的比重将会更大。公网具有以下特征:链路容量(带宽)高(例如1Gbps或10Gbps)、往返时延长(例如国内30ms-60ms,国际100ms-300ms)、存在非拥塞丢包(例如,中间盒策略、路由变化、数据错误导致的丢包)和网络动态变化,难以预测。
现有技术中,通常数据的接收端会发送ACK包以将数据的接收情况告知发送端。有的ACK包中包括该ACK包生成时,接收端已经成功接收到且未被确认的数据包的信息(例如数据包的标识),这些数据包是在该ACK包生成时仍然保存在接收端的接收缓存中,而未被接收端的应用层处理的数据包。这样,发送端就可以根据ACK包重传接收端未收到的数据包,然而,由于网络的复杂性和业务需求的不断提高,现有的ACK包发送机制,在丢包重传方面的性能仍然需要提升,这一方面的影响也制约了数据传输的性能的提高。
发明内容
本申请提供一种数据传输方法及装置,用以提高数据传输的性能。
第一方面,本申请实施例提供一种数据传输方法,包括:数据接收端接收来自数据发送端的多个数据包;所述数据接收端基于所述多个数据包更新所述数据接收端的接收缓存;
所述数据接收端根据所述更新的接收缓存,向所述数据发送端发送确认信息;其中,所述确认信息中包括黑名单,或者包括黑名单和白名单,所述黑名单用于指示所述更新的接收缓存中空缺的数据包,所述空缺的数据包为所述数据发送端已发送且所述数据接收端未接收的数据包,所述白名单用于指示所述数据接收端已接收的若干个数据包,所述若干个数据包中包括所述多个数据包。
上述设计通过在确认信息中包括黑名单、或者包括黑名单和白名单,也就是说接收端通过反馈确认信息,将多个接收端未接收到的数据包的标识及时的通知给发送端,从而发 送端能够更及时地向接收端重传这些的数据包而无需等待到超时再重传,从而提高数据传输性能。另外,接收端向发送端指示白名单,使得发送端能够及时获知发送端新接收到的数据包,在一定程度上避免发送端由于无效的重传(即重传已被接收的数据包)导致的带宽浪费。
在一种可能的设计中,所述白名单包括所述更新的接收缓存中序列号最大的数据包的标识,所述黑名单包括所述空缺的数据包中序列号最小的数据包的标识。
数据包的标识可以是数据包的序列号或者序列号偏移量,也可以是其他可以将各个数据包区分开的信息。
上述设计中接收端每次至少将造成行头阻塞的未接收到的数据包及时的通知给发送端,从而发送端能够及时向接收端发送造成行头阻塞的数据包,从而提高数据传输性能。另外,接收端向发送端指示接收缓存中序列号最大的数据包的标识,即最新接收到的数据包,使得发送端能够及时获知发送端新接收到的数据包,在一定程度上避免发送端由于重传导致的带宽浪费。
在一种可能的设计中,所述白名单还包括所述更新后的接收缓存中优先级较高的数据包的标识,其中,数据包的优先级与数据包的重要程度相关。
优先级最高的数据包可以包括乱序包、重传包、队头包等。
通过上述设计,冗余指示发送端重要程度较高的已接收到的数据包,从而在一定程度上避免发送端重传导致的带宽浪费。
在一种可能的设计中,所述数据接收端向数据发送端发送确认信息,包括:
所述数据接收端在满足反馈条件时,向所述数据发送端发送所述确认信息;
所述反馈条件包括如下一项或者多项:
已接收到的数据包的数量达到第一阈值;
已接收到的数据比特数达到第二阈值;或者,
达到反馈周期的时间节点。
在一种可能的设计中,所述黑名单包括以第一数据包的序列号为基准时第二数据包的序列号的偏移量,所述第二数据包为所述空缺的数据包中的任一数据包,所述第一数据包为所述数据接收端已接收到的一个数据包;或者,
所述白名单包括以所述第一数据包的序列号为基准时第三数据包的序列号的偏移量,所述第三数据包为所述若干个数据包中的任一个数据包。
上述设计中,通过序列号偏移量作为数据包的标识,编码较简单,并且可以减少编码占用的空间。
在一种可能的设计中,所述空缺的数据包中包括N个序列号连续的数据包,所述黑名单还包括N个序列号连续的数据包中序列号最小的数据包的序列号偏移量以及序列号最大的数据包的序列号偏移量;或者,
所述若干个数据包中包括N个序列号连续的数据包,所述白名单还包括N个序列号连续的数据包中序列号最小的数据包的序列号偏移量以及序列号最大的数据包的序列号偏移量,N为大于1的整数。
上述设计中,提供了一种序列号连续的多个数据包的编码方式,简单且空间占用较少。
在一种可能的设计中,所述序列号偏移量通过一个M位无符号整数来编码,第一无符号整数的高L位为第一数值,所述第一数值指示N个序列号连续的数据包的第一个数据包, 所述第二无符号整数的高L位为第二数值,所述第二数值指示N个序列号连续的数据包的第N个数据包,第一无符号整数的低M-L位用于编码所述序列号最小的数据包的序列号偏移量,所述第二无符号整数的低M-L位用于编码所述序列号最大的数据包的序列号偏移量,M和L均为大于1的整数,且M大于L。
在一种可能的设计中,所述确认信息中还包括已确认接收到的数据包的序列号最大的数据包的标识。
在一种可能的设计中,所述确认信息中还包括当前接收缓存中存储的数据量。
上述设计中可以使得发送端根据发送端已经确认的数据包的序列号估算自身需要重传数据量,进一步根据重传数据量确认网络状况,来判断是否执行传输操作。
在一种可能的设计中,所述黑名单和所述白名单采用位图编码方式编码。
在一种可能的设计中,所述空缺的数据包中包括N1个序列号连续的数据包,所述黑名单中包括由所述N1个序列号中最小序列号和最大序列号构成的序列号范围,N1为大于0的整数;或者,所述若干个数据包中包括N2个序列号连续的数据包,所述白名单中包括由所述N2个序列号中最小序列号和最大序列号构成的序列号范围,N2为大于0的整数。
在一种可能的设计中,所述确认信息中包括黑名单和白名单,所述向数据发送端发送确认信息,包括:向数据发送端发送第一反馈报文和第二反馈报文,所述第一反馈报文中包括所述黑名单,所述第二反馈报文中包括所述白名单;或者,
向数据发送端发送第三反馈报文,所述第三反馈报文包括所述黑名单和所述白名单。
第二方面,本申请实施例提供一种数据传输方法,包括:
数据发送端接收来自数据接收端的第一反馈报文,所述第一反馈报文用于反馈所述数据接收端接收来自所述数据发送端的数据包的情况;
数据发送端根据所述第一反馈报文,多次向所述数据接收端发送第一数据包的副本以完成对所述第一数据包的一轮重传,其中,所述第一数据包为所述数据发送端应重传的一个数据包,每两个所述副本的发送之间间隔随机的时长。
上述方案,在确定接收到未接收到第一数据包后,一轮重传中,冗余重传多次,且一轮重传中的每两次重传之间,间隔随机的时间,当然,这个随机的时间内数据发送端可以发送其他数据包,或者只是等待随机的时间,这样,不会将重传的数据包集中传输,从而提高重传成功率。
在一种可能的设计中,完成第一数据包的一轮重传后,所述方法还包括:
所述数据发送端根据所述数据接收端发送的第二反馈报文,再次确定所述第一数据包需要重传;
所述数据发送端多次向所述数据接收端发送所述第一数据包的副本以完成对所述第一数据包的又一轮重传,其中,所述又一轮对所述第一数据包的重传中,每两个副本的发送也间隔随机的时长,且所述又一轮重传中重传的所述第一数据包的副本的次数大于所述一轮重传的所述第一数据包的副本的次数。
上述设计中,随着重传轮数的增加,逐渐增加重传数据包的重传次数,进一步提高重传成功率。
在一种可能的设计中,所述第一反馈报文包括黑名单,所述黑名单用于指示所述更新的接收缓存中空缺的数据包,所述空缺的数据包为所述数据发送端已发送且所述数据接收端未接收的数据包。
在一种可能的设计中,所述第一反馈报文包括白名单,所述白名单用于指示所述数据接收端已接收的若干个数据包。
在一种可能的设计中,所述第一反馈报文包括黑名单和白名单。
在一种可能的设计中,所述第一反馈报文包括黑名单。在接收来自数据接收端的第一反馈报文时,还接收到第三反馈报文,第三反馈报文包括白名单。
在一种可能的设计中,所述第一数据包本轮被重传的次数,与所述第一数据包被重传的轮数正相关。
在一种可能的设计中,所述第一反馈报文包括所述接收端的接收缓存中存储的数据量,或者白名单,所述白名单指示所述接收缓存中存储的数据包,所述数据发送端根据所述第一反馈报文,多次向所述数据接收端发送第一数据包的副本以完成对所述第一数据包的一轮重传,包括:
所述数据发送端根据所述第一反馈报文确定所述第一数据包,以及第一数据量满足小于所述数据发送端的拥塞窗口,所述第一数据量为所述数据发送端根据已经向所述数据接收端发送的数据量以及第二数据量确定的数据量,所述第二数据量为所述接收缓存中存储的数据量或者根据所述白名单确定的所述接收缓存中数据包的数据量;
所述数据发送端多次向所述数据接收端发送第一数据包的副本以完成对所述第一数据包的一轮重传。
相反,当第一数据量大于或者等于拥塞窗口,禁止向发送端发送第一数据包的副本。也就是说,已经发送的且未被接收端接收到的数据包的比特数已经超过拥塞窗口,表明网络状态恶化,丢包率较高,则禁止向接收端发送数据。现有方案中,重传数据包时,会根据已向接收端发送且接收端未确认接收的数据包的数量来与通告窗口和拥塞窗口的最小值作比较。而本申请实施例根据的是已向接收端发送且接收端未接收到的数据包的数量与通告窗口作比较来确定执行重传。已向接收端发送且接收端未确认接收的数据包,有些已经被接收端到,存储在接收缓存中,而本申请中确定的第一数据量将已经存储在接收缓存中的这部分数据量也排除在外,再与拥塞窗口比较,因此,较现有来说,增大了允许发送的数据量。因此,本申请实施例中,在采用冗余重传的方式,使得重传的数据包有最大概率能够被接收端接收的情况,再采用本设计提供的投机主义的方式,在一定程度上可以释放部分接收缓存,缓解拥塞。
第三方面,本申请实施例提供一种数据传输装置,包括:
接收模块,用于接收来自数据发送端的多个数据包;
更新模块,用于基于所述多个数据包更新所述数据接收端的接收缓存;
发送模块,用于数据接收端根据所述更新的接收缓存,向所述数据发送端发送确认信息;
其中,所述确认信息中包括黑名单,或者包括黑名单和白名单,所述黑名单用于指示所述更新的接收缓存中空缺的数据包,所述空缺的数据包为所述数据发送端已发送且所述数据接收端未接收的数据包,所述白名单用于指示所述数据接收端已接收的若干个数据包,所述若干个数据包中包括所述多个数据包。
在一种可能的设计中,所述白名单包括所述更新的接收缓存中序列号最大的数据包的标识,所述黑名单包括所述空缺的数据包中序列号最小的数据包的标识。
在一种可能的设计中,所述白名单还包括所述更新后的接收缓存中优先级较高的数据 包的标识,其中,数据包的优先级与数据包的重要程度相关。
在一种可能的设计中,所述发送模块,具体用于在满足反馈条件时,向所述数据发送端发送所述确认信息;
所述反馈条件包括如下一项或者多项:
已接收到的数据包的数量达到第一阈值;
已接收到的数据比特数达到第二阈值;或者,
达到反馈周期的时间节点。
在一种可能的设计中,所述黑名单包括以第一数据包的序列号为基准时第二数据包的序列号的偏移量,所述第二数据包为所述空缺的数据包中的任一数据包,所述第一数据包为所述数据接收端已接收到的一个数据包;或者,
所述白名单包括以所述第一数据包的序列号为基准时第三数据包的序列号的偏移量,所述第三数据包为所述若干个数据包中的任一个数据包。
在一种可能的设计中,所述空缺的数据包中包括N个序列号连续的数据包,所述黑名单还包括N个序列号连续的数据包中序列号最小的数据包的序列号偏移量以及序列号最大的数据包的序列号偏移量;或者,
所述若干个数据包中包括N个序列号连续的数据包,所述白名单还包括N个序列号连续的数据包中序列号最小的数据包的序列号偏移量以及序列号最大的数据包的序列号偏移量,N为大于1的整数。
在一种可能的设计中,所述序列号偏移量通过一个M位无符号整数来编码,第一无符号整数的高L位为第一数值,所述第一数值指示N个序列号连续的数据包的第一个数据包,所述第二无符号整数的高L位为第二数值,所述第二数值指示N个序列号连续的数据包的第N个数据包,第一无符号整数的低M-L位用于编码所述序列号最小的数据包的序列号偏移量,所述第二无符号整数的低M-L位用于编码所述序列号最大的数据包的序列号偏移量,M和L均为大于1的整数,且M大于L。
在一种可能的设计中,所述确认信息中还包括已确认接收到的数据包的序列号最大的数据包的标识。
在一种可能的设计中,所述确认信息中还包括当前接收缓存中存储的数据量。
在一种可能的设计中,所述黑名单和所述白名单采用位图编码方式编码。
在一种可能的设计中,所述空缺的数据包中包括N1个序列号连续的数据包,所述黑名单中包括由所述N1个序列号中最小序列号和最大序列号构成的序列号范围,N1为大于0的整数;或者,
所述若干个数据包中包括N2个序列号连续的数据包,所述白名单中包括由所述N2个序列号中最小序列号和最大序列号构成的序列号范围,N2为大于0的整数。
在一种可能的设计中,所述确认信息中包括黑名单和白名单,所述发送模块具体用于:
向数据发送端发送第一反馈报文和第二反馈报文,所述第一反馈报文中包括所述黑名单,所述第二反馈报文中包括所述白名单。
第四方面,本申请实施例提供一种数据传输装置,包括:
接收模块,用于接收来自数据接收端的第一反馈报文,所述第一反馈报文用于反馈所述数据接收端接收来自所述数据发送端的数据包的情况;
重传模块,用于根据所述第一反馈报文,多次向所述数据接收端发送第一数据包的副 本以完成对所述第一数据包的一轮重传,其中,所述第一数据包为所述数据发送端应重传的一个数据包,每两个所述副本的发送之间间隔随机的时长。
在一种可能的设计中,所述重传模块还用于根据所述数据接收端发送的第二反馈报文,再次确定所述第一数据包需要重传;多次向所述数据接收端发送所述第一数据包的副本以完成对所述第一数据包的又一轮重传,其中,所述又一轮对所述第一数据包的重传中,每两个副本的发送也间隔随机的时长,且所述又一轮重传中重传的所述第一数据包的副本的次数大于所述一轮重传的所述第一数据包的副本的次数。
在一种可能的设计中,所述第一反馈报文包括黑名单,所述黑名单用于指示所述更新的接收缓存中空缺的数据包,所述空缺的数据包为所述数据发送端已发送且所述数据接收端未接收的数据包。
在一种可能的设计中,所述第一数据包本轮被重传的次数,与所述第一数据包被重传的轮数正相关。
在一种可能的设计中,所述第一反馈报文包括所述接收端的接收缓存中存储的数据量,或者白名单,所述白名单指示所述接收缓存中存储的数据包;
所述重传模块,具体用于根据所述第一反馈报文确定所述第一数据包,以及第一数据量满足小于所述数据发送端的拥塞窗口,所述第一数据量为所述数据发送端根据已经向所述数据接收端发送的数据量以及第二数据量确定的数据量,所述第二数据量为所述接收缓存中存储的数据量或者根据所述白名单确定的所述接收缓存中数据包的数据量;多次向所述数据接收端发送第一数据包的副本以完成对所述第一数据包的一轮重传。
第五方面,本申请实施例提供了一种数据传输装置,所述装置应用于数据的接收端,包括通信接口、处理器和存储器,所述存储器用于存储软件程序,所述处理器用于读取所述存储器中存储的软件程序,通过所述通信接口收发数据,并实现第一方面或上述第一方面的任意一种设计提供的方法。
第六方面,本申请实施例提供了一种数据传输装置,所述装置应用于数据的发送端,包括通信接口、处理器和存储器,所述存储器用于存储软件程序,所述处理器用于读取所述存储器中存储的软件程序,通过所述通信接口收发数据,并实现第二方面或上述第二方面的任意一种设计提供的方法。
第七方面,本申请实施例提供了一种数据处理系统,所述系统包括第三方面所述的装置以及第四方面所述的装置。或者系统包括第五方面所述的装置和第六方面所述的装置。
第八方面,本申请实施例中还提供一种计算机存储介质,该存储介质中存储软件程序,该软件程序在被一个或多个处理器读取并执行时可实现第一或者第二方面的任意一种设计提供的方法。
第九方面,本申请实施例提供了一种包含指令的计算机程序产品,当其在计算机上运行时,使得计算机执行上述第一方面或第二方面的任一设计提供的方法。
第十方面,本申请实施例提供了一种芯片,所述芯片与存储器相连,用于读取并执行所述存储器中存储的软件程序,以实现第一方面或第二方面的任意一种设计提供的方法。
应当理解的是,本申请的第二至第十方面与本申请的第一方面和第二方面的技术方案相同或者类似,各方面及对应的可行实施方式所取得的有益效果相似,不再赘述。
附图说明
图1为本申请实施例提供的一种应用场景对应的架构示意图;
图2为本申请实施例提供的一种通信系统架构示意图;
图3为本申请实施例提供的数据传输方法流程示意图;
图4为本申请实施例提供的一种ACK包结构示意图;
图5为本申请实施例提供的一种DELAT.SEQ结构示意图;
图6为本申请实施例提供的数据包到达情况示意图;
图7为本申请实施例提供的另一种DELAT.SEQ结构示意图;
图8为本申请实施例提供的数据传输方法流程示意图;
图9为本申请实施例提供的冗余重传方法流程示意图;
图10为本申请实施例提供的投机主义传输流程示意图;
图11为本申请实施例提供的一种应用于接收端的数据传输装置结构示意图;
图12为本申请实施例提供的一种应用于发送端的数据传输装置结构示意图;
图13为本申请实施例提供的数据传输装置1300结构示意图;
图14为本申请实施例提供的场景一下的测试结果示意图;
图15为本申请实施例提供的场景二下的测试结果示意图。
具体实施方式
本申请实施例提供的方案可用在端到端通信,端云通信以及云到云通信等多种通信场景中。因此,本申请涉及到的数据接收端或者数据发送端可以是终端设备(也可以简称为终端),例如传感器、手机、平板、笔记本电脑、个人计算机、车载终端、机顶盒,电视盒子等;也可以是网络设备,例如网关、接入路由器、核心路由器、前端路由器、负载均衡器、服务器等。例如,端到端场景可以是,手机将一段视频投屏在智能电视或者通过电视盒子或接收器投屏在显示器上。再例如,终端设备之间通过某个应用的视频通话,则其中的一个终端和该应用的服务器,就是很适用本申请描述的方法的端云场景。应理解,本申请中的数据接收端和数据发送端都指设备或者操作系统。例如,数据接收端是指一个连接中,接收数据的设备或者该接收数据的设备中的操作系统,数据发送端是指一个连接中,数据的发送端,则同一个设备可以在一段时间内是数据接收端,而一段时间内是数据发送端,或者,由于一个设备可能是多条连接的端节点,一个设备可以同时是数据接收端和数据发送端。为便于理解,本申请以一条连接的数据发送端和数据接收端为例描述。需要说明的是,为了描述方便,后续描述时,本申请实施例中将数据发送端简称为发送端,数据接收端简称为接收端。
而在一些大带宽时延积(bandwidth-delay product,BDP)、有损的广域网或者无线局域网传输加速的应用场景中(参见图1所示),效果更加明显。需要说明的是,一个具有大带宽时延积的网络也可以被称之为长胖网络(long fat network,LFN)。大BDP、有损的广域网传输加速的应用场景中,所对应的业务有公有云海量数据上传、混合云数据迁移、跨数据中心(cross datacenter,cross-DC)海量数据分发、灾备、企业总部与分支机构的数据传输、2K/4K视频点播、直播等业务。其中,2K/4K表示视频像素的总列数为2000或者4000列。一方面,上述这些业务,对广域网传输加速有着迫切的需求。另一方面,高清视 频投屏、基于无线的虚拟现实、增强现实或混合现实等应用,对无线局域网传输加速也有着迫切的需求。在需要传输加速的情况下对带宽需求也越来越大,因此数据包传输要求高吞吐量。
本申请描述的方法适用于多种传输协议,如传输控制协议(transport control protocol,TCP)、用户数据协议(user data protocol,UDP)、快速UDP网络连接(quick UDP internet connection,QUIC),流控制传输协议(stream control transmission protocol,STCP)等等,甚至可以使用在多路径传输场景的子流(subflow)。
以传输控制协议(transport control protocol,TCP)为例,传统的以丢包为拥塞信号的方案,例如CUBIC,遇到非拥塞丢包事件时,会不合理地进行退避,从而无法充分利用带宽。不以丢包为拥塞信号的TCP加速方案,例如瓶颈带宽与往返传输时延(bottleneck bandwidth and round-trip propagation time,BBR)协议和满载管道(fill the pipe,FillP)协议,具有显著的带宽提升,实现高吞吐的目标。然而,这些“高吞吐场景”在提升吞吐的同时,存在其它的问题。
首先,“高吞吐场景”的传输加速效果受到发送缓存和接收缓存的制约。传输所需要的发送缓存或者接收缓存的大小由数据包的最大重传次数决定。在相同有损网络条件下,吞吐越高,包最大重传次数越大。而包最大重传次数越大,传输需要的缓存越多。现有方案主要通过调整主机缓存来消除缓存受限的影响,但是实际应用场景中,并不是所有收发节点都是可修改的,而且随着流量增加、网络变化,一次配置可能无法满足永久需求,治标不治本。所以,当缓存受限时,提升重传效率,降低包最大重传次数,是解决这一问题的关键。
其次,“高吞吐”对ACK机制提出新的挑战。现有的ACK包中,有一类ACK可以携带的字节长度有限制,比如总字节长度不超过40字节,导致能够携带的已经成功接收到的数据包的信息比较有限。从上可以看出,现在网络的复杂性和业务需求不断提高,从而现有的ACK包发送机制,在丢包重传方面的性能仍然需要提升,这一方面的影响也制约了数据传输的性能的提高。
基于此,本申请实施例提供一种数据传输方法及装置,用以提高数据的传输性能。其中,方法和装置是基于同一发明构思的,由于方法及装置解决问题的原理相似,因此装置与方法的实施可以相互参见,重复之处不再赘述。
以下在介绍本申请提供的具体方案之前,先对本申请实施例涉及的技术概念进行解释说明。
1)、白名单:也称数据包白名单,用于记录接收端已经收到的数据包的信息,例如数据包的标识,该标识可以是序列号等。具体的,接收端接收到数据包,一般先存储在接收缓存中,然后按照数据包的序列号顺序从接收缓存取出数据包发送到应用层。比如,已经接收到序列号为1、2、3、5的数据包,并存储到接收缓存中,则序列号1、2、3连续,取出发送到应用层,但是序列号4的数据包还未接收到,则接收缓存中序列号5的数据包则会存储在接收缓存中,直到接收到序列号为4的数据包。发送到应用层的数据包均为被确定接收的数据包,因此接收缓存存在的数据包是指已经接收到但未被确认接收的数据包。序列号为5的数据包属于白名单,换句话说,白名单中包括序列号5。也就是说,白名单记录的是在该白名单形成时,接收端已经接收到但还未提交的应用层的数据包,换句话说是,接收缓存中的数据包。
2)、黑名单:也可以称为数据包黑名单,用于记录接收端未收到的数据包。比如,上述序列号为4的数据包则属于黑名单。
3)、包的最大重传次数:重传的数据包可能再次丢失,再次丢失的包将继续被重传直到该数据包成功被接收端所接收。包的最大重传次数表示一个路径中的数据包的最大被重传的次数。一条路径的包的最大重传次数的值可以随着时间的推移而被刷新。
4)、数据路径:包括数据发送端到接收端之间的链路。可以认为一条路径(path)是由一个或多个链路(link)组成的。
5)、反向路径:也称控制路径,即发送反馈报文(如ACK)所使用的路径,是接收端到发送端之间的链路组成的路径。对一条连接,发送数据包的路径和发送反馈报文的路径可以对应不同的链路。
6)、投机主义:在本申请实施例中特指重传的数据包在发送时,不受接收缓存大小的限制。具体实现方式后续会详细描述,此处不再重复描述。
另外,需要说明的是,本申请中,“至少一个”是指一个或者多个,“多个或者若干”是指两个或两个以上。“和/或”,描述关联对象的关联关系,表示可以存在三种关系,例如,A和/或B,可以表示:单独存在A,同时存在A和B,单独存在B的情况,其中A,B可以是单数或者复数。字符“/”一般表示前后关联对象是一种“或”的关系。“以下至少一项(个)”或其类似表达,是指的这些项中的任意组合,包括单项(个)或复数项(个)的任意组合。例如,a,b,或c中的至少一项(个),可以表示:a,b,c,a-b,a-c,b-c,或a-b-c,其中a,b,c可以是单个,也可以是多个。应当理解,尽管在本申请实施例中可能采用术语第一、第二等来描述各对象、但这些术语仅用来将各对象彼此区分开。
如图2所示,为本申请实施例示例的一种通信系统的具体的架构示意图。通信系统中包括发送端和接收端。示例性的,接收端包括接收处理模块201、丢包检测模块202、编码模块203、构造模块204,反馈控制模块205,发送端包括解析模块206和重传模块207。应理解,图2的架构只是一种举例,本申请不限定接收端和发送端中各自包括的模块。例如,丢包检测可以在发送端,发送端通过分析接收端的ACK确定传输丢失的包。
其中,接收处理模块201从发送端接收数据包,将接收到的数据包缓存到接收缓存中,换句话说,根据接收到的数据包更新接收端的接收缓存。丢包检测模块202根据接收缓存中的缓存的数据包情况,确定黑名单和/或白名单。在一些实施例中,发送端也可以配置丢包检测模块,接收端可以仅确认白名单,从而发送端的丢包检测模块可以根据发送端发送的白名单确认哪些数据包丢失需要重传。编码模块203对丢包检测模块202确定的白名单和/或黑名单进行编码。在一些实施例中,编码模块203,可以采用通过标记起始数据包序号和结尾数据包序号的方法;或采用位图编码的方法,用0表示数据包未到达,用1表示数据已到达;或采用整数编码的方法,以某个数据包序号为基准,通过序列号偏移量(整数)指示数据包,从而减少空间占用。后续实施例会对编码模块203所采用的编码方式详细描述,此处不再重复描述。构造模块204,构造ACK包,构造的ACK包携带黑名单和/或白名单。在一些实施例中,构造模块204可以以接收缓存中左边界数据包(接收缓存中序列号最小的数据包)为基准,基于优先级将黑名单和/或白名单加入ACK包中。示例性的,可以优先采用黑名单中序列号最小的数据包的标识构造ACK包;或优先采用白名单中序列号最大的数据包的标识构造ACK包;或采用黑名单中序列号最小的多个数据包的标识和白名单中序列号最大的多个数据包的标识构造ACK包。示例性的,构造ACK包时,如果黑名单或者白名 单中某几个数据包是连续的,则可以选择仅基于黑名单构造ACK包或者基于白名单构造ACK包,从而发送端可以通过其中一种名单推断出另外一种名单,比如用黑名单可以推断出白名单。在一些实施例中,ACK包中还可以包括接收缓存中存储的数据量。反馈控制模块205将ACK包通过反向路径发送给发送端。在一些实施例中,反馈控制模块205,可以采用基于事件的(event-based)反馈控制,比如采用TCP经典的逐包反馈ACK,即每收到特定数量的数据包,回复一个ACK;或者没收到特定数据量的数据包反馈ACK;或采用基于时钟的(timer-based)反馈控制,如FillP的周期性主动反馈ACK包,即每经过特定时间间隔,回复一个ACK包。还可以结合基于时间的反馈控制和时钟的反馈控制两种方式,只要满足任意一个条件,则回复ACK。
发送端接收到ACK包后,通过解析模块206解析ACK包,得到解析白名单和/或黑名单。具体的,解析模块206针对ACK包,读取其包头和数据字段。比如编码模块203采用整数编码方式时,解析模块206可以根据ACK包定义的偏移,获取已经编码过的黑名单和/或白名单。根据编码规则进行解码,获取黑名单和/或白名单、接收缓存中存储的数据量等信息。重传模块207根据白名单和/或黑名单确定传输丢失的数据包,从而重传丢失的数据包。在一些实施例中重传模块207进行以投机主义的方式对需要重传的数据包进行随机重传。本申请描述的方法和装置,可能只涉及对上述模块中部分模块的改进,而另一些模块可以使用现有的技术。
下面介绍本申请提供的具体方案。
参见图3所示,为本申请实施例提供的数据传输方法流程示意图。所述方法可以包括:S201、S202和S203,还可以包括S204和S205。
S201,接收端接收来自数据发送端的多个数据包。
示例性的,接收端通过传输层接收来自发送端的数据包。
S202,所述接收端基于所述多个数据包更新所述数据接收端的接收缓存。其中,所述接收缓存中包括已接收到的且未确认接收的数据包。
比如,发送端发送10个数据包,10个数据包的序列号分别1-10。由于存在丢包,接收端可能仅接收到5个数据包,序列号分别为1、4、5、6、10。接收端将接收到的5个数据包存储在接收缓存中,并按序列号的顺序调度数据包上传到应用层,序列号为1的数据包上传到应用层,而接收缓存中不包括序列号为2-3的数据包,则不会将序列号4、5、6、10的数据包上传到应用层,当序列号2-3的数据包接收到时,将序列号2-6的数据包上传到应用层。待序列号7-9的数据包接收到时,将序列号7-10的数据包上传到应用层。
S203,所述接收端根据所述更新的接收缓存,向所述数据发送端发送确认信息,其中,所述确认信息中包括黑名单,或者包括黑名单和白名单。
所述白名单用于指示接收端已接收的若干个数据包,比如,若干个数据包中包括所述多个数据包。再比如白名单指示所述更新的接收缓存中存在的数据包。所述黑名单用于指示所述更新的接收缓存中空缺的数据包,空缺的数据包为所述发送端已发送且所述接收端未接收到的数据包。
示例性的,所述白名单包括所述更新的接收缓存中存在的序列号最大的K1个数据包的标识,所述黑名单包括空缺的数据包中的序列号最小的K2个数据包的标识,K1和K2均为大于0的整数。
例如,发送端发送10个数据包,10个数据包的序列号分别1-10。由于存在丢包,接 收端仅接收到5个数据包,序列号分别为1、4、5、6、10。接收端将接收到的5个数据包存储在接收缓存中,并按序列号的顺序调度数据包上传到应用层,序列号为1的数据包上传到应用层。接收缓存中包括序列号4、5、6、10的数据包。而未被成功接收的数据包包括序列号为2、3、7、8、9的数据包。基于此,白名单中可以包括序列号4、5、6、10的数据包的标识,黑名单中可以包括序列号为2、3、7、8、9的数据包的标识。示例性的,确认信息所占的总长度较小时,比如K1和K2均为2时,白名单中可以包括序列号为6、10的数据包的标识,黑名单中可以仅包括序列号为2、3的数据包的标识。
本申请提供的方案,通过在确认信息中包括黑名单、或者包括黑名单和白名单,也就是说接收端通过反馈确认信息,将多个接收端未接收到的数据包的标识及时的通知给发送端,从而发送端能够更及时地向接收端重传这些的数据包而无需等待到超时再重传,从而提高数据传输性能。另外,接收端向发送端指示白名单,使得发送端能够及时获知发送端新接收到的数据包,在一定程度上避免发送端由于无效的重传(即重传已被接收的数据包)导致的带宽浪费。
作为一种示例,在本申请实施例中,在构造ACK包时可以遵循如下原则,具体实现中,以下原则可以任选一项或者多项:
原则一:尽可能多地携带黑(白)名单中数据包的标识;
原则二:以接收缓存中左边界数据包(即接收缓存中序列号最小的数据包)为基准,可以优先在ACK包中添加黑名单中最旧的数据包的标识,白名单中最新的数据包的标识。
最旧的数据包是指,黑名单中序列号最小的数据包。最新的数据包是指,接收到且未被确认接收的数据包中序列号最大的数据包,也就是接收缓存中序列号最大的数据包。
原则三:ACK包中用于承载黑白名单的存储空间较大时,可以在存储空间填充白名单中最新的K1个数据包的标识,和/或黑名单中最旧的K2个数据包的标识。再比如,基于重要程度为数据包定义优先级,按照优先级在剩余空间添加白名单(例如,乱序包、重传包、队头包优先级高)。也就是说本申请实施例中发送给发送端的白名单中还可以包括所述接收缓存中存在的K3个优先级最高的数据包的标识,其中,数据包的优先级与数据包的重要程度相关。K3的数量与剩余空间相关。
其中,乱序包是指,不按包序号的顺序到达接收端的数据包。例如,序列号分别为1,2,3,4共4个数据包,如果到达接收端的次序为1,3,4,2,则2是一个乱序包。
重传包是指经过发送端重传且接收端已经接收到的数据包。
队头包是指经过接收端已接收到的数据包中序列号最小的数据包。
作为一种示例,可以通过一个反馈报文(也称为ACK包)将黑名单和白名单反馈给发送端,也可以通过不同的反馈报文将黑名单和白名单反馈给发送端,比如第一反馈报文中包括所述黑名单,第二反馈报文中包括所述白名单。
本申请实施例中可以通过数据包的序列号来指示对应的数据包是否被成功接收,即基于数据包的序列号对黑名单和白名单进行编码。
一种示例中,编码方式采用前后边界序列号(sequence,SEQ)的方式。前边界序列号是指多个序列号连续的数据包的序列号中的最小序列号,后边界序列号是指多个序列号连续的数据包的序列号中的最大序列号。应理解的是,针对1个单独的序列号来说,与其它序列号不相邻,则前边界序列号与后边界序列号相同。
具体的,所述更新的接收缓存中存在的数据包中包括N1个序列号连续的数据包,所 述白名单中可以包括由所述N1个序列号中最小序列号和最大序列号构成的序列号范围,N1为大于0的整数。所述空缺的数据包中包括N2个序列号连续的数据包,所述黑名单中包括由所述N2个序列号中最小序列号和最大序列号构成的序列号范围,N2为大于0的整数。
应理解的是,N1=1时,则所述白名单包括1个序列号。或者N2=1时,则所述黑名单包括1个序列号。例如,白名单包括序列号为4、5、6、10的数据包,黑名单包括序列号为2、3、7、8、9的数据包,则[4,6],[10]表示编码后的白名单,[2,3],[7,9]表示编码后的黑名单。
在另一种示例中,编码方式可以采用位图编码的方式。例如,同样白名单包括序列号为4、5、6、10的数据包,黑名单包括序列号为2、3、7、8、9的数据包,则黑名单和白名单可以编入一个ACK包反馈给发送端,例如,[001110001],其中1表示白名单中的数据包,0表示黑名单中的数据包。
在又一种示例中,编码方式还可以采用带标记位的相对整数编码(flagged relative integer coding)来编码黑名单和白名单。
比如,所述黑名单包括以第一数据包的序列号为基准时第二数据包的序列号的偏移量,所述第二数据包为所述空缺的数据包中的任一数据包,所述第一数据包为所述数据接收端已接收到的一个数据包;或者,所述白名单包括以所述第一数据包的序列号为基准时第三数据包的序列号的偏移量,所述第三数据包为所述若干个数据包中的任一个数据包。
示例性的,第一数据包可以为更新的接收缓存中的序列号最小的数据包。即以接收缓存中的数据包的序列号的最小值,作为编码基准。
所述接收缓存存在的数据包中或者所述接收缓存中空缺的数据包中可能包括N个序列号连续的数据包,一种方式是,不考虑序列号连续的数据包,针对每个数据包对应的偏移量均单独编码。另一种方式是,为了减少编码所占的资源,可以在编码黑白名单时,仅编码N个序列号连续的数据包中的最小序列号和最大序列号。例如,通过连续多个数据包对应的N个序列号中最小序列号的偏移量和最大序列号中的偏移量来指示N个序列号连续的数据包。比如,黑名单中包括N个序列号连续的数据包的标识,则编码ACK可以通过N个序列号中最小序列号的序列号偏移量以及N个序列号中最大序列号的序列号偏移量来指示N个序列号连续的数据包,N为大于1的整数。
作为一种示例,序列号偏移量可以通过M位的无符号整数来编码。
示例1,序列号偏移量占用无符号整数的M位。该示例1可以适用于不考虑序列号连续的数据包的情况,即针对每个数据包均采用单独编码方式。
示例2,序列号连续的多个数据包的偏移量仅首尾编码,具体的,针对N个序列号连续的数据包中的最小序列号的偏移量和最大序列号的偏移量可以采用如下编码方式:
通过相邻的两个无符号整数来编码最小序列号的偏移量和最大序列号的偏移量。第一无符号整数的高L位为第一数值,所述第一数值指示N个序列号连续的数据包的第一个数据包,所述第二无符号整数的高L位为第二数值,所述第二数值指示N个序列号连续的数据包的第N个数据包,第一无符号整数的低M-L位用于编码所述N个序列号连续的数据包中序列号最小的数据包的序列号偏移量,所述第二无符号整数的低M-L位用于编码所述N个序列号连续的数据包中序列号最大的数据包的序列号偏移量,M和L均为大于1的整数,且M大于L。例如,M=32,L=1。作为一种示例,第一数值为1,第二数值为0。高L 位为第一数值的无符号整数指示连续多个数据包的开始的数据包,到下一个无符号整数(高L位为第二数值)指示的数据包为白名单中的连续N个数据包或者为黑名单中的连续N个数据包。第一数值也可以为0,则第二数值为1。
在示例2的方式中,指示其它序列号非连续的数据包的无符号整数的高L位也可以为第二数值。当然可以为其它数值。
示例3,当黑名单和白名单可以编码同一个ACK包中,且每个数据包的序列号偏移量均采用单独编码方式时,M位无符号整数中的高d位用于指示该无符号整数指示白名单包括的数据包或者黑名单包括的数据包。比如,高d位为第三数值时,指示白名单包括的数据包,高d位为第四数值时,指示黑名单包括的数据包。比如,d=1。作为一种示例,第三数值为1,第四数值为0,或者第三数值为0,第四数值为1。
示例4,当黑名单和白名单可以编码在同一ACK包中,且序列号连续的多个数据包的偏移量仅首尾编码时,M位无符号整数中的高T位中,高T位中d位用于指示该无符号整数指示白名单包括的数据包或者黑名单包括的数据包,L位用于指示无符号整数指示的数据包是否为序列号连续的多个数据包中的起始数据包(第一个数据包)。d+L=T。低M-T位用于编码数据包的序列号偏移量。
作为一种示例,确认信息中还包括已确认接收到的数据包的序列号最大的数据包的标识(比如序列号,或者序列号偏移量),换句话是已提交到应用层的数据包序列号的最大值。
参见图4所示,示例一种ACK包的格式。以无符号整数为32位为例。包头携带32位的SEQ字段,表示已提交到应用层的数据包序列号的最大值,即最大有序的数据包序号。数据字段携带32位的HOL_SEQ。HOL_SEQ字段表示接收缓存中的数据包的序列号的最小值,以该接收缓存中的数据包的序列号的最小值作为编码基准。同时携带多个32位的DELTA_SEQ。序列号偏移量通过OFFSET来表示,OFFSET是1-(2^31-1)之间的无符号整数,OFFSET包含在DELTA_SEQ中。
参见图5所示,以示例2所示的编码方式,且ACK包仅编入黑名单为例示例一种DELTA_SEQ的格式。图5中首位通过M1来表示。DELTA_SEQ定义为:若DELTA_SEQ首位为0,表示HOL_SEQ+OFFSET对应的数据包丢失;若DELTA_SEQ首位为1,表示HOL_SEQ+OFFSET对应的包开始,到下一个HOL_SEQ+OFFSET对应的包(DELTA_SEQ首位为0)之间的包都丢失。
举例说明:接收缓存中数据包到达情况参见图6所示,序列号为2、4、5、9-13的数据包接收端,但序列号3、6-8、14的数据包丢失。ACK包中4个DELTA_SEQ中携带信息分别为:0x00000003,0x80000006,0x00000008,0x0000000E。4个DELTA_SEQ中携带的信息表明序列号偏移量为3、6-8,14的数据包均丢失。
作为一种示例,ACK包中还可以包括用于指示当前接收缓存中数据包的比特数,用于后续发送端更新已经发送但未被确认接收的数据包的比特数。比如,参见图3中的RCV.NO字段,用于指示当前接收缓存中数据包的比特数。
参见图7所示,以示例4所示的编码方式,且ACK包中编入黑名单和白名单为例示例一种DELTA_SEQ的格式。图7中,DELTA_SEQ首位通过M1来表示,第二位通过M2来表示。DELTA_SEQ定义为:DELTA_SEQ首位用于指示是否为黑名单,比如,若DELTA_SEQ首位为1指示黑名单包括的数据包,DELTA_SEQ首位为0指示白名单包括 的数据包。当然反过来也可以,DELTA_SEQ首位为0指示黑名单包括的数据包,DELTA_SEQ首位为1指示白名单包括的数据包。DELTA_SEQ第二位用于指示是否为连续的数据包的首个数据包,比如,DELTA_SEQ第二位为0指示不是连续的数据包的首个数据包,DELTA_SEQ第二位为1指示连续的数据包的首个数据包,即DELTA_SEQ第二位为0,表示HOL_SEQ+OFFSET对应的数据包丢失;若DELTA_SEQ第二位为1,指示HOL_SEQ+OFFSET对应的包开始,到下一个HOL_SEQ+OFFSET(DELTA_SEQ首位为0)对应的连续多个数据包。
举例说明:以DELTA_SEQ首位为1指示黑名单包括的数据包,DELTA_SEQ首位为0指示白名单包括的数据包,DELTA_SEQ第二位为0指示不是连续的数据包的首个数据包,DELTA_SEQ第二位为1指示连续的数据包的首个数据包为例。接收缓存中数据包到达情况参见图5所示,ACK包中9个DELTA_SEQ中携带信息分别为:0x00000002、0x80000003、0x00000004、0x00000005、0xC0000006,0x80000008,0x40000009,0x0000000D,0x8000000E。9个DELTA_SEQ中携带的信息表明序列号偏移量为3、6-8,14的数据包均丢失,序列号为2、4、5、9-13的数据包均成功接收到但未被确认接收。
作为一种示例,ACK包中还可以包括用于指示当前接收缓存中存储的数据量,用于后续发送端更新已经发送但未被确认接收的数据包的数据量。比如,参见图4中的RCV.NO字段,用于指示当前接收缓存中存储的数据量。
S204,发送端接收到确认信息。
具体的,发送端解析接收到的ACK包携带的信息。以图4所示的ACK包为例,[SEQ,HOL.SEQ]字段共同指示黑名单包括的最旧的数据包序列号的区间,RCV.NO指示当前接收缓存中乱序包的比特数byte_received(或者称为数据量),用于后续更新已经发送但未确认的数据包的比特数,DELTA.SEQ指示黑名单包括的除最旧的数据包以外的其它数据包的序列号偏移量或者白名单包括的数据包的序列号偏移量。发送端对DELTA.SEQ进行解码,[HOL.SEQ,DELTA.SEQ]字段共同指示一个数据包的序列号,该数据包可以是黑名单中的数据包或者是白名单中的数据包。
在一种可能的实现方式中,所述接收端向发送端发送确认信息时,可以通过如下方式实现:
所述接收端在满足反馈条件时,向发送端发送确认信息;
所述反馈条件包括如下一项或者多项:
已接收到的数据包的数量达到第一阈值;
已接收到的数据比特数达到第二阈值;或者,
达到反馈周期的时间节点。
示例性的,确认信息可以通过一个反馈报文发送,反馈报文中携带黑名单和/或白名单。确认信息中包括黑名单和白名单时,确认信息可以通过两个反馈报文发送,比如第一反馈报文包括黑名单,第二反馈报文包括白名单。
S205,所述发送端根据确认信息确定接收端未接收到的数据包,并重传接收端未接收到的数据包。
具体的,发送端在重传接收端未接收到的数据包时,可以采用冗余重传方式。冗余重传是指,一轮重传某个数据包时,将需要重传的该数据包的副本重复发送多次。一个数据包的副本与该数据包的数据内容相同。
参见图8所示,为本申请实施例提供的一种数据传输方法(冗余重传方式)流程示意图。
S701,发送端接收来自数据接收端的确认信息,所述确认信息用于指示所述接收端接收来自所述发送端的数据包的情况。
一种示例中,确认信息中可以仅包括白名单,白名单承载于一个反馈报文中,即采用现有反馈ACK包的方式。
另一种示例中,确认信息可以包括黑名单。黑名单承载于一个反馈报文中。
又一种示例中,确认信息可以包括黑名单和白名单。黑名单和白名单承载于一个反馈报文中,还可以黑名单承载于第一反馈报文,白名单承载于第二反馈报文。
S702,发送端根据所述确认信息,多次向所述数据接收端发送第一数据包的副本以完成对所述第一数据包的一轮重传,其中,所述第一数据包为所述数据发送端应重传的一个数据包。
本申请实施例提供的方案,在确定接收到未接收到第一数据包后,一轮重传中,冗余重传多次,且一轮重传中的每两次重传之间,间隔随机的时间,当然,这个随机的时间内数据发送端可以发送其他数据包,或者只是等待随机的时间,这样,不会将重传的数据包集中传输,从而提高重传成功率。
在采用冗余重传时,第一种示例中,针对第一数据包,可以每轮重传的重传次数相同。比如第一轮重传第一数据包时,重传2次,并且第一轮重传第一数据包后,接收端未接收到该第一数据包,则第二轮重传第一数据包时,也重传2次。
第二种示例中,随着重传轮数的增加,数据包的重传次数对应也增加,即重传次数与重传数据包被重传的轮数正相关。
在第二种示例中,重传次数与重传轮数存在关联关系。比如,重传轮数为n时,即第n轮重传某数据包时,则重传2n-1次该数据包的副本。
作为一种示例,在采用第二种示例时,在每轮执行重传第一数据包前,可以根据重传次数与重传轮数的关联管理,确定本轮发送所述第一数据包副本的次数。
在一种可能的实施方式中,可以将每次重传的多个数据包随机分配到多个不同的时间片内发送,也就是说一轮重传中,每两个所述第一数据包的副本的发送之间间隔随机的时长,在一定程度上可以缓解连续丢包带来的丢包率的提高,进而冗余保证数据丢失快速恢复。基于此,所述发送端在本轮重传过程中,向所述接收端重复发送M次所述第一数据包的副本,可以通过如下方式实现:
所述发送端随机生成所述M个所述第一数据包的副本中每两个所述副本之间的发送间隔时间得到M-1个发送间隔时间;
所述发送端根据所述随机生成的M-1个发送间隔时间向所述接收端重复发送M次所述第一数据包的副本。
作为一种示例,比如一轮重传中,发送端3次第一数据包的副本。第一个副本与第二个副本之间间隔0.1s,第二个副本与第三个副本之间间隔0.25s。3次发送的第一数据包的副本之间并非连续发送,在一定程度上可以降低链路连续丢包带来的重传包再次丢失的概率。
应理解的是,若重传后第一数据包确定被接收端接收到,则不需要(即停止)再次重传该第一数据包。
作为一种示例,发送端在确定一轮重传中,第一数据包的重传次数时,可以根据冗余重传等级来确定。冗余重传等级跟网络状态相关,换句话说,可以根据当前网络状态,确定冗余重传等级。
示例性的,网络状态可以通过丢包率、抖动、排队时延、接收窗口大小等来体现。进而发送端可以根据丢包率、抖动、排队时延、接收窗口大小中的至少一项确定冗余重传等级,即确定冗余重传次数与重传轮数的关联关系,不同的冗余重传等级对应的关联关系不同。丢包率、抖动、排队时延、接收窗口大小等可以存在多种组合方式,如下仅示例其中几种。
一个可能的示例中,发送端可以根据传输过程中检测到的丢包率大小来确定冗余重传等级。例如,丢包率超过5%,确定为高冗余级别;丢包率在1%-5%之间,确定为中冗余级别;丢包率小于1%,确定为低冗余级别。
另一个可能的示例中,发送端可以根据传输过程中检测到的数据包排队时延大小来确定冗余重传等级。例如,排队时延超过15倍的往返时延(Round Trip Time,RTT),可以确定为高冗余级别;排队时延超过5倍RTT但不超过15倍RTT,确定为中冗余级别;排队时延超过不5倍RTT,确定为低冗余级别。
又一种可能的示例中,发送端根据传输过程中检测到的接收窗口大小来确定冗余重传等级。例如,接收窗口大小不足总窗口大小的5%,确定为高冗余级别;接收窗口大小在总窗口大小的5%-15%之间,确定为中冗余级别;接收窗口大小在总窗口的15%以上,确定为低冗余级别。
再一种示例中,发送端根据传输过程中检测到的丢包率大小和传输过程中检测到的数据包排队时延大小来确定冗余重传等级。例如,丢包率超过5%且排队时延超过15倍的RTT,确定为高冗余级别,丢包率在1%-5%之间和/或排队时延超过5倍RTT但不超过15倍RTT,确定为中冗余级别,其它情况确定为低冗余级别。
如下示例一种冗余重传级别所对应的冗余重传次数与重传轮数的关联关系,以分为三个冗余重传级别为例,当然还可以分为两级,或者更多级别,本申请实施例对此不作具体限定。
低冗余级别:第n轮重传一个数据包,发n次该数据包的副本;
中冗余级别:第n轮重传一个数据包,发2n-1次该数据包的副本;
高冗余级别:第n轮重传一个数据包,发3n-2次该数据包的副本。
示例性的,不同冗余重传等级可以保证第一轮传输不冗余,即第一轮传输时发送一次数据包。
比如,第3轮重传某个数据包,若根据网络状态确定高冗余级别,则第3轮重传时,可以重传7次该数据包的副本,若根据网络状态确定为低冗余级别,则第3轮重传时可以重传3次该数据包的副本。
在一种可能的实施方式中,本申请实施例中还可以根据网络状态确定是否进行冗余重传。本申请实施例中可以基于丢包率、抖动、排队时延、接收窗口大小中的至少一项来确定是否进行冗余重传。例如,根据传输过程中检测到的丢包率大小来确定是否冗余重传,比如丢包率小于1%,则不执行冗余重传,当丢包率大于或者等于1%时,则执行冗余重传。
示例性的,本申请实施例中,可以建立重传列表,比如称为redunList,在确定某个数据包需要重传时,可以将需要重传的数据包(简称重传包)的标识(例如序列号)添加在 重传列表中。在随机生成该重传包的M-1个发送间隔时间时,可以将M-1个发送间隔时间添加在重传列表中。根据重传列表对该数据包进行重传。
参见图9所示,以redunList为例,对冗余重传方式进行详细说明。
S801,第一轮发送待发送数据包,且确定所述接收端未接收到所述待发送数据包。
S802,确定是否针对所述待发送数据包执行冗余重传。若是,执行S803,若否,执行S808。
S803,将所述待发送数据包的序列号添加至重传列表,并确定本轮重传中,待发送数据包的重传次数为M次。
S804,随机生成所述M次重传所述待发送数据包的副本中每两个副本间的发送间隔时间得到M-1个发送间隔时间并添加至重传列表。
S805,根据重传列表监测到达发送时间时,从发送缓存中获取所述待发送数据包的副本并向接收端发送。
S806,监测重传列表是否为空,若是,执行S805,若否,执行S807。
S807,停止执行。
S808,重传一次所述待发送数据包。
现有技术是发送端通过ACK确定要重传包,且重传包在一轮重传中只重传一次,重传包一旦丢失,需等待下一次ACK指示下一轮的重传,接收端只有在下一轮重传时才可能接收到重传包,导致加重拥塞程度。通过上述设计,也就是在重传数据包时,每轮重传时,将重传包冗余重传多次,并且每两次重传的发送之间有不固定的时间间隔,考虑了由于网络不稳定等造成重传包丢失,ACK丢失等情况,不是单纯的依靠ACK包周期性指示重传包来解决上述问题,从而可以提高接收端接收到重传数据包的概率,提高重传成功率。
通告窗口(advertised window,AWND)为接收端接收缓存的剩余空间,单位为比特数。接收端通过向发送端反馈通告窗口,来限制发送端往网络中发送的数据量,防止接收端缓存被填满。例如,发送端拥塞窗口(CWND)为10MB,但通告窗口为6MB,则在现有技术中发送端只能取两者的较小值,即最多发送6MB的数据到网络中。
在丢包恢复阶段,链路基本是空闲的,为了提高带宽利用率,在丢包恢复阶段,可以不受AWND的限制,本申请实施例可以采用超额发送数据包的方式。由于接收缓存受限,原本发送端只有在收到ACK包后才能发送下一个数据包,但是如果超额发送重传包,且重传包成功被接收端接收,则可以释放大量接收缓存,缓解拥塞。而超额发送重传包,要尽可能保证重传包被接收端成功接收到,如果重传再次丢包时,提前超额发送重传包会使得网络传输更加恶化。
基于此,在采用冗余重传方式的基础上,即更大概率保证重传包被接收端接收到的情况下,本申请实施例中可以采用投机主义传输,一种方式是,在链路恢复阶段,允许发送的数据量不受限通告窗口和拥塞窗口,采用随机冗余重传方式向发送端发送重传包。在采用冗余重传的方式,使得重传的数据包有最大概率能够被接收端接收的情况,再采用投机主义的方式,在一定程度上可以释放部分接收缓存,缓解拥塞。另一种方式是:在确定已经向所述接收端发送且接收端未接收到数据包的比特数(第一数据量)小于拥塞窗口(CWND),则执行向接收端发送数据包,即从发送缓存中取数据包并向接收端发送。拥塞窗口一般与网络速度的拥塞程度和处理数据量相关。
确认信息中还可以包括所述接收端的接收缓存中存储的数据量,或者白名单,所述白 名单指示所述接收缓存中存储的数据包。从而,所述发送端可以根据已经向所述接收端发送的数据量以及第二数据量确定所述第一数据量,比如已经向所述接收端发送的数据量与第二数据量的差确定为第一数据量,所述第二数据量为所述接收缓存中存储的数据量或者根据所述白名单确定的所述接收缓存中数据包的数据量。从而所述发送端根据所述第一反馈报文,多次向所述接收端发送第一数据包的副本以完成对所述第一数据包的一轮重传时,可以通过如下方式实现:
发送端根据所述第一反馈报文确定所述第一数据包,当第一数据量满足小于所述发送端的拥塞窗口时,所述发送端多次向所述接收端发送第一数据包的副本以完成对所述第一数据包的一轮重传。
相反,当第一数据量大于或者等于CWND,禁止向发送端发送第一数据包的副本。也就是说,已经发送的且未被接收端接收到的数据包的比特数已经超过拥塞窗口,表明网络状态恶化,丢包率较高,则禁止向接收端发送数据。现有方案中,重传数据包时,会根据已向接收端发送且接收端未确认接收的数据包的数量来与通告窗口和拥塞窗口的最小值作比较。而本申请实施例根据的是已向接收端发送且接收端未接收到的数据包的数量与通告窗口作比较来确定执行重传。已向接收端发送且接收端未确认接收的数据包,有些已经被接收端到,存储在接收缓存中,而本申请中确定的第一数据量将已经存储在接收缓存中的这部分数据量也排除在外,再与拥塞窗口比较,因此,较现有来说,增大了允许发送的数据量。因此,本申请实施例中,在采用冗余重传的方式,使得重传的数据包有最大概率能够被接收端接收的情况,再采用该第二种投机主义的方式,在一定程度上可以释放部分接收缓存,缓解拥塞。
示例性的,第一数据量可以通过如下方式确定:
所述发送端接收所述接收端发送的所述第二数据量;
所述发送端根据所述第二数据量和已经向所述发送端发送的数据包的比特数,确定第一数据量(已经向所述接收端发送且未被所述接收端接收到的数据包的数据量)。
比如,new_inflight_size表示第一数据量,byte_received表示第二数据量;则new_inflight_size=old_inflight_size-byte_received。old_inflight_size表示根据上一次确认的第一数据量更新后的第一数据量。具体的,每次在确定第一数据量后,每发出一个数据包或者收到一个数据包的确认后或者确定某个数据包丢失时,都会更新该第一数据量。比如每发出一个数据包后,将第一数据量与该数据包的比特数的和作为更新后的第一数据量。
结合图10对投机主义传输进行说明。
S901,确定是否属于丢包恢复阶段。若是,执行S902,若否,执行S905。
示例性的,网络中存在数据包丢失(即存在丢包事件),到这些丢失的包恢复之前,确定是丢包恢复阶段。
S902,根据byte_received更新new_inflight_size=old_inflight_size-byte_received。
其中,每次接收到确认信息,则根据byte_received更新new_inflight_size。
比如,发送端向接收端发送100比特,则new_inflight_size此时为100。确定new_inflight_size后,又向接收端发送20比特,new_inflight_size变为old_inflight_size,old_inflight_size=120,接收到发送端发送的ACK包,根据ACK包确定接收端已确认接收到数据包的比特数,比如根据ACK包中SEQ字段确定接收端已确认接收到数据包的比特数,例如为20,则old_inflight_size此时应更新为120-20=100。另外ACK包中Rcv.NO字 段指示byte_received等于60,基于此,确定的new_inflight_size为100-60=40。在执行S903后,则将new_inflight_size作为old_inflight_size。
S903,new_inflight_size<CWND?,若是,执行S904,若否,执行S905。
S904,从发送缓存中获取数据包并向接收端发送。执行S903。
S905,禁止发送数据包。
示例性的,发送端在接收端接收到发送的确认信息时,以ACK包为例,ACK包中包括RCV.NO字段,该RCV.NO字段用于指示接收缓存中的数据包的比特数,即接收端已接收到且未确认接收的数据包的第二数据量,从而发送端根据该第二数据量可以确定第一数据量。
基于与上述方法实施例同样的发明构思,本申请实施例还提供一种数据传输装置,该数据传输模块可以应用于接收端。该装置具体可以是处理器、芯片、芯片系统,或是用于接收的一个功能模块等。参见图11所示,该数据传输装置可以包括接收模块1001,更新模块1002以及发送模块1003。
接收模块1001接收来自发送端的多个数据包,更新模块1002基于所述多个数据包更新所述数据接收端的接收缓存;发送模块1003根据更新的接收缓存,向所述发送端发送确认信息。其中,所述确认信息中包括黑名单,或者包括黑名单和白名单,所述黑名单用于指示所述更新的接收缓存中空缺的数据包,所述空缺的数据包为所述数据发送端已发送且所述数据接收端未接收的数据包,所述白名单用于指示所述数据接收端已接收的若干个数据包,所述若干个数据包中包括所述多个数据包。
示例性的,本实施例中接收模块1001、更新模块1002的功能可以由图2中的接收处理模块201来执行。
示例性的,确认信息中的包括的黑名单,或者包括黑名单和白名单,可以为经过编码后的黑名单和白名单。在确认黑白名单和编码黑白名单时,可以由图2中丢包检测模块202、编码模块203来执行。确认信息可以是经过图2所示的构造模块204构造的ACK。
在一种可能的实现方式中,所述白名单包括所述更新的接收缓存中序列号最大的数据包的标识,所述黑名单包括所述空缺的数据包中序列号最小的数据包的标识。
在一种可能的实现方式中,所述白名单还包括所述更新后的接收缓存中优先级较高的数据包的标识,其中,数据包的优先级与数据包的重要程度相关。
在一种可能的实现方式,所述发送模块1003,具体用于在满足反馈条件时,向所述数据发送端发送所述确认信息;
所述反馈条件包括如下一项或者多项:已接收到的数据包的数量达到第一阈值;
已接收到的数据比特数达到第二阈值;或者,
达到反馈周期的时间节点。
一种示例中,发送模块1003的功能可以由图2中的反馈控制模块205来实现。另一种示例中,反馈控制模块205用于确定是否满足反馈条件,当满足反馈条件时,指示发送模块1003发送确认信息。
在一种可能的实现方式中,所述黑名单包括以第一数据包的序列号为基准时第二数据包的序列号的偏移量,所述第二数据包为所述空缺的数据包中的任一数据包,所述第一数据包为所述数据接收端已接收到的一个数据包;或者,
所述白名单包括以所述第一数据包的序列号为基准时第三数据包的序列号的偏移量, 所述第三数据包为所述若干个数据包中的任一个数据包。
在一种可能的实现方式中,所述空缺的数据包中包括N个序列号连续的数据包,所述黑名单还包括N个序列号连续的数据包中序列号最小的数据包的序列号偏移量以及序列号最大的数据包的序列号偏移量;或者,所述若干个数据包中包括N个序列号连续的数据包,所述白名单还包括N个序列号连续的数据包中序列号最小的数据包的序列号偏移量以及序列号最大的数据包的序列号偏移量,N为大于1的整数。
在一种可能的实现方式中,所述序列号偏移量通过一个M位无符号整数来编码,第一无符号整数的高L位为第一数值,所述第一数值指示N个序列号连续的数据包的第一个数据包,所述第二无符号整数的高L位为第二数值,所述第二数值指示N个序列号连续的数据包的第N个数据包,第一无符号整数的低M-L位用于编码所述序列号最小的数据包的序列号偏移量,所述第二无符号整数的低M-L位用于编码所述序列号最大的数据包的序列号偏移量,M和L均为大于1的整数,且M大于L。
在一种可能的实现方式中,所述确认信息中还包括已确认接收到的数据包的序列号最大的数据包的标识。
在一种可能的实现方式中,所述确认信息中还包括当前接收缓存中存储的数据量。
在一种可能的实现方式中,所述黑名单和所述白名单采用位图编码方式编码。
在一种可能的实现方式中,所述空缺的数据包中包括N1个序列号连续的数据包,所述黑名单中包括由所述N1个序列号中最小序列号和最大序列号构成的序列号范围,N1为大于0的整数;或者,
所述若干个数据包中包括N2个序列号连续的数据包,所述白名单中包括由所述N2个序列号中最小序列号和最大序列号构成的序列号范围,N2为大于0的整数。
在一种可能的实现方式中,所述确认信息中包括黑名单和白名单,所述发送模块1003具体用于:向数据发送端发送第一反馈报文和第二反馈报文,所述第一反馈报文中包括所述黑名单,所述第二反馈报文中包括所述白名单。
基于与上述方法实施例同样的发明构思,本申请实施例还提供一种数据传输装置,该数据传输模块可以应用于发送端。该装置具体可以是处理器、芯片、芯片系统,或是用于接收的一个功能模块等。参见图12所示,该数据传输装置包括接收模块1101,重传模块1102。
接收模块1101接收到的来自数据接收端的第一反馈报文后,重传模块1102可以根据第一反馈报文中反馈所述接收端接收的来自所述数据发送端的数据包情况确定第一数据包为应重传的数据包时,执行多次向所述数据接收端发送第一数据包的副本以完成对所述第一数据包的一轮重传,每两个所述副本的发送之间间隔随机的时长。
一种示例中,接收模块1101的功能可以由图2中的解析模块206来实现,重传模块1102的功能可以由图2中的重传模块1102来执行。
另一种示例中,接收模块1101接收到反馈报文后,由解析模块206来执行具体的从反馈报文中解析得到黑白名单的功能,然后将黑白名单发给重传模块1102,由重传模块1102基于黑白名单执行重传。
又一种示例中,接收模块1101接收到反馈报文后,由重传模块1102执行具体的从反馈报文中解析得到黑白名单的功能,并基于黑白名单执行重传。
示例性的,重传模块1102完成一轮重传后,根据接收端发送的第二反馈报文,再次确 定所述第一数据包需要重传;从而重传模块1102多次向所述数据接收端发送所述第一数据包的副本以完成对所述第一数据包的又一轮重传,其中,所述又一轮对所述第一数据包的重传中,每两个副本的发送也间隔随机的时长,且所述又一轮重传中重传的所述第一数据包的副本的次数可以大于或者等于所述一轮重传的所述第一数据包的副本的次数。
示例性的,所述第一反馈报文包括所述接收端的接收缓存中存储的数据量,或者白名单,所述白名单指示所述接收缓存中存储的数据包。接收模块1101可以将第一反馈报文包括所述接收端的接收缓存中存储的数据量或者白名单发送给重传模块1102,从而重传模块1102可以根据接收缓存中存储的数据量或者白名单确定第一数据量,具体确定方式可以参见前面的描述,此处不再赘述。重传模块1102在第一数据量满足小于所述数据发送端的拥塞窗口,再执行多次向所述数据接收端发送第一数据包的副本以完成对所述第一数据包的一轮重传。一种示例中,重传模块1102在第一数据量大于或者等于拥塞窗口时,可以不执行向所述接收端端发送第一数据包的副本。
应理解的是,本申请实施例中对模块的划分是示意性的,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,另外,在本申请各个实施例中的各功能模块可以集成在一个处理器中,也可以是单独物理存在,也可以两个或两个以上模块集成在一个模块中。上述集成的模块既可以采用硬件的形式实现,也可以采用软件功能模块的形式实现。
基于相同的构思,如图13所示,为本申请提供的一种装置1300。示例性地,装置1300可以是芯片或芯片系统。可选的,在本申请实施例中芯片系统可以由芯片构成,也可以包含芯片和其他分立器件。装置1300可以包括至少一个处理器1310,装置1300还可以包括至少一个存储器1320,用于存储程序指令和/或数据。存储器1320和处理器1310耦合。本申请实施例中的耦合是装置、单元或模块之间的间接耦合或通信连接,可以是电性,机械或其它的形式,用于装置、单元或模块之间的信息交互。处理器1310可能和存储器1320协同操作。处理器1310可能执行存储器1320中存储的程序指令。可选的,所述至少一个存储器1320中的至少一个可以包括于处理器1310中。
装置1300中还可以包括通信接口1330,装置1300可以通过通信接口1330和其它设备进行信息交互。通信接口1330可以是电路、总线、收发器或者其它任意可以用于进行信息交互的装置。
在一种可能的实施方式中,该装置1300可以应用于接收端,具体装置1300可以是能够支持接收端实现上述涉及的任一实施例中接收端的功能的装置。存储器1320保存实现上述任一实施例中的接收端的功能的必要计算机程序指令和/或数据。所述处理器1310可执行所述存储器1320存储的计算机程序指令,完成上述任一实施例中接收端执行的方法。应用于接收端时,图11所示的接收模块1001,更新模块1002以及发送模块1003的功能均可以由处理器1310实现。另外,图2中所述的接收处理模块201、丢包检测模块202、编码模块203、构造模块204,反馈控制模块205的功能也可以由处理器1310实现。
在一种可能的实施方式中,该装置1300可以应用于发送端,具体装置1300可以是能够支持发送端实现上述任一实施例中发送端的功能的装置。存储器1320保存实现上述任一实施例中的发送端的功能的必要计算机程序指令和/或数据。所述处理器1310可执行所述存储器1320存储的计算机程序指令,完成上述任一实施例中发送端执行的方法。应用于发送端时,图12所示的接收模块1101,重传模块1102的功能均可以由处理器1310实现。另外,图2中所述的解析模块206,重传模块207也可以由处理器1310实现。
本申请实施例中不限定上述通信接口1330、处理器1310以及存储器1320之间的具体连接介质。本申请实施例在图13中以存储器1320、处理器1310以及通信接口1330之间通过总线1340连接,总线1340在图13中以粗线表示,其它部件之间的连接方式,仅是进行示意性说明,并不引以为限。所述总线可以分为地址总线、数据总线、控制总线等。为便于表示,图13中仅用一条粗线表示,但并不表示仅有一根总线或一种类型的总线。
在本申请实施例中,处理器可以是通用处理器、数字信号处理器、专用集成电路、现场可编程门阵列或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件,可以实现或者执行本申请实施例中的公开的各方法、步骤及逻辑框图。通用处理器可以是微处理器或者任何常规的处理器等。结合本申请实施例所公开的方法的步骤可以直接体现为硬件处理器执行完成,或者用处理器中的硬件及软件模块组合执行完成。
在本申请实施例中,存储器可以是非易失性存储器,比如硬盘(hard disk drive,HDD)或固态硬盘(solid-state drive,SSD)等,还可以是易失性存储器(volatile memory),例如随机存取存储器(random-access memory,RAM)。存储器还可以是能够用于携带或存储具有指令或数据结构形式的期望的程序代码并能够由计算机存取的任何其他介质,但不限于此。本申请实施例中的存储器还可以是电路或者其它任意能够实现存储功能的装置,用于存储程序指令和/或数据。
本申请采用的是黑、白名单相结合的冗余反馈方式,黑名单提高反向丢包应对能力,白名单减少不必要的重传,保证反向路径上丢包情况下的高性能。本申请可以采用的是带标记位的相对整数编码的方式。采用(起始序号,结束序号)标记的编码方式,编码简单,但占用空间较大;采用位图标记的编码方式,节省大量空间,但丢包较少时,效率低下;而相对整数编码的方式,可以兼具两者的优点,不仅编码简单,而且占用空间较少。而带标记位的相对整数编码,则进一步降低了空间的占用。本申请发送端可以采用随机冗余重传的方式,从而在保证重传大概率能成功的前提下,可以进行投机主义传输,提升重传成功率。本申请实施例还可以采用收发双方协作的方式,即接收端判断丢包,生成黑白名单冗余反馈给发送端,发送端采用随机冗余重传的方式,从而提高传输性能。
申请人对本申请实施例提供的方案在如下两种场景下进行了测试:
场景一:在大BDP的有损网络,瓶颈链路容量为1Gbps,往返时延为300ms,丢包率为3%。发送/接收缓存设置成256MB。分别通过现有的TCP CUBIC、TCP BBR、FillP以及本申请提供的方案,从发送端往接收端打流,每种协议运行100次,评估有效吞吐和最大重传次数的平均值,得到的测试结果参见图14所示。测试结果表明:通过本申请实施例提供的方案,可以将数据包最大重传次数降低43%,即所有数据包最多重传2.3次后将送达接收端(原来需要4次),从而减少接收缓存中队头包等待的现象,可以提高16%的有效吞吐。
场景二、大BDP的有损网络,瓶颈链路容量为1Gbps,往返时延为120ms,正向数据包的丢包率为3%。反向ACK包的丢包率分别为0.2%,1%,5%,10%。发送/接收缓存设置成256MB。分别通过TCP BBR、FillP以及部署了本申请提供的方案,从发送端往接收端打流,每种协议运行100次,评估有效吞吐和最大重传次数的平均值,得到的测试结果参见图15所示。测试结果表明:本申请在反向丢包严重时(>5%),相较其它两种,有效吞吐可以提高7-20倍以上。
本领域内的技术人员应明白,本申请的实施例可提供为方法、系统、或计算机程序产 品。因此,本申请可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本申请可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
本申请是参照根据本申请实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
显然,本领域的技术人员可以对本申请进行各种改动和变型而不脱离本申请的范围。这样,倘若本申请的这些修改和变型属于本申请权利要求及其等同技术的范围之内,则本申请也意图包含这些改动和变型在内。

Claims (37)

  1. 一种数据传输方法,其特征在于,包括:
    数据接收端接收来自数据发送端的多个数据包;
    所述数据接收端基于所述多个数据包更新所述数据接收端的接收缓存;
    所述数据接收端根据所述更新的接收缓存,向所述数据发送端发送确认信息;
    其中,所述确认信息中包括黑名单,或者包括黑名单和白名单,所述黑名单用于指示所述更新的接收缓存中空缺的数据包,所述空缺的数据包为所述数据发送端已发送且所述数据接收端未接收的数据包,所述白名单用于指示所述数据接收端已接收的若干个数据包,所述若干个数据包中包括所述多个数据包。
  2. 如权利要求1所述的方法,其特征在于,所述白名单包括所述更新的接收缓存中序列号最大的数据包的标识,所述黑名单包括所述空缺的数据包中序列号最小的数据包的标识。
  3. 如权利要求1或2所述的方法,其特征在于,所述白名单还包括所述更新后的接收缓存中优先级较高的数据包的标识,其中,数据包的优先级与数据包的重要程度相关。
  4. 如权利要求1-3任一项所述的方法,其特征在于,所述数据接收端向数据发送端发送确认信息,包括:
    所述数据接收端在满足反馈条件时,向所述数据发送端发送所述确认信息;
    所述反馈条件包括如下一项或者多项:
    已接收到的数据包的数量达到第一阈值;
    已接收到的数据比特数达到第二阈值;或者,
    达到反馈周期的时间节点。
  5. 如权利要求1-4任一项所述的方法,其特征在于,所述黑名单包括以第一数据包的序列号为基准时第二数据包的序列号的偏移量,所述第二数据包为所述空缺的数据包中的任一数据包,所述第一数据包为所述数据接收端已接收到的一个数据包;或者,
    所述白名单包括以所述第一数据包的序列号为基准时第三数据包的序列号的偏移量,所述第三数据包为所述若干个数据包中的任一个数据包。
  6. 如权利要求5所述的方法,其特征在于,所述空缺的数据包中包括N个序列号连续的数据包,所述黑名单还包括N个序列号连续的数据包中序列号最小的数据包的序列号偏移量以及序列号最大的数据包的序列号偏移量;或者,
    所述若干个数据包中包括N个序列号连续的数据包,所述白名单还包括N个序列号连续的数据包中序列号最小的数据包的序列号偏移量以及序列号最大的数据包的序列号偏移量,N为大于1的整数。
  7. 如权利要求6所述的方法,其特征在于,所述序列号偏移量通过一个M位无符号整数来编码,第一无符号整数的高L位为第一数值,所述第一数值指示N个序列号连续的数据包的第一个数据包,所述第二无符号整数的高L位为第二数值,所述第二数值指示N个序列号连续的数据包的第N个数据包,第一无符号整数的低M-L位用于编码所述序列号最小的数据包的序列号偏移量,所述第二无符号整数的低M-L位用于编码所述序列号最大的数据包的序列号偏移量,M和L均为大于1的整数,且M大于L。
  8. 如权利要求1-7任一所述的方法,其特征在于,所述确认信息中还包括已确认接收 到的数据包的序列号最大的数据包的标识。
  9. 如权利要求1-8任一所述的方法,其特征在于,所述确认信息中还包括当前接收缓存中存储的数据量。
  10. 如权利要求1-4任一项所述的方法,其特征在于,所述黑名单和所述白名单采用位图编码方式编码。
  11. 如权利要求1-4任一项所述的方法,其特征在于,所述空缺的数据包中包括N1个序列号连续的数据包,所述黑名单中包括由所述N1个序列号中最小序列号和最大序列号构成的序列号范围,N1为大于0的整数;或者,
    所述若干个数据包中包括N2个序列号连续的数据包,所述白名单中包括由所述N2个序列号中最小序列号和最大序列号构成的序列号范围,N2为大于0的整数。
  12. 如权利要求1-11任一项所述的方法,其特征在于,所述确认信息中包括黑名单和白名单,所述向数据发送端发送确认信息,包括:
    向数据发送端发送第一反馈报文和第二反馈报文,所述第一反馈报文中包括所述黑名单,所述第二反馈报文中包括所述白名单。
  13. 一种数据传输方法,其特征在于,包括:
    数据发送端接收来自数据接收端的第一反馈报文,所述第一反馈报文用于反馈所述数据接收端接收来自所述数据发送端的数据包的情况;
    数据发送端根据所述第一反馈报文,多次向所述数据接收端发送第一数据包的副本以完成对所述第一数据包的一轮重传,其中,所述第一数据包为所述数据发送端应重传的一个数据包,每两个所述副本的发送之间间隔随机的时长。
  14. 如权利要求13所述的方法,其特征在于,所述方法还包括:
    所述数据发送端根据所述数据接收端发送的第二反馈报文,再次确定所述第一数据包需要重传;
    所述数据发送端多次向所述数据接收端发送所述第一数据包的副本以完成对所述第一数据包的又一轮重传,其中,所述又一轮对所述第一数据包的重传中,每两个副本的发送也间隔随机的时长,且所述又一轮重传中重传的所述第一数据包的副本的次数大于所述一轮重传的所述第一数据包的副本的次数。
  15. 如权利要求13所述的方法,其特征在于,所述第一反馈报文包括黑名单,所述黑名单用于指示所述更新的接收缓存中空缺的数据包,所述空缺的数据包为所述数据发送端已发送且所述数据接收端未接收的数据包。
  16. 如权利要求13-15任一项所述的方法,其特征在于,所述第一数据包本轮被重传的次数,与所述第一数据包被重传的轮数正相关。
  17. 如权利要求13-16任一项所述的方法,其特征在于,所述第一反馈报文包括所述接收端的接收缓存中存储的数据量,或者白名单,所述白名单指示所述接收缓存中存储的数据包,所述数据发送端根据所述第一反馈报文,多次向所述数据接收端发送第一数据包的副本以完成对所述第一数据包的一轮重传,包括:
    所述数据发送端根据所述第一反馈报文确定所述第一数据包,以及第一数据量满足小于所述数据发送端的拥塞窗口,所述第一数据量为所述数据发送端根据已经向所述数据接收端发送的数据量以及第二数据量确定的数据量,所述第二数据量为所述接收缓存中存储的数据量或者根据所述白名单确定的所述接收缓存中数据包的数据量;
    所述数据发送端多次向所述数据接收端发送第一数据包的副本以完成对所述第一数据包的一轮重传。
  18. 一种数据传输装置,其特征在于,包括:
    接收模块,用于接收来自数据发送端的多个数据包;
    更新模块,用于基于所述多个数据包更新所述数据接收端的接收缓存;
    发送模块,用于数据接收端根据所述更新的接收缓存,向所述数据发送端发送确认信息;
    其中,所述确认信息中包括黑名单,或者包括黑名单和白名单,所述黑名单用于指示所述更新的接收缓存中空缺的数据包,所述空缺的数据包为所述数据发送端已发送且所述数据接收端未接收的数据包,所述白名单用于指示所述数据接收端已接收的若干个数据包,所述若干个数据包中包括所述多个数据包。
  19. 如权利要求18所述的装置,其特征在于,所述白名单包括所述更新的接收缓存中序列号最大的数据包的标识,所述黑名单包括所述空缺的数据包中序列号最小的数据包的标识。
  20. 如权利要求18或19所述的装置,其特征在于,所述白名单还包括所述更新后的接收缓存中优先级较高的数据包的标识,其中,数据包的优先级与数据包的重要程度相关。
  21. 如权利要求18-20任一项所述的装置,其特征在于,所述发送模块,具体用于在满足反馈条件时,向所述数据发送端发送所述确认信息;
    所述反馈条件包括如下一项或者多项:
    已接收到的数据包的数量达到第一阈值;
    已接收到的数据比特数达到第二阈值;或者,
    达到反馈周期的时间节点。
  22. 如权利要求18-21任一项所述的装置,其特征在于,所述黑名单包括以第一数据包的序列号为基准时第二数据包的序列号的偏移量,所述第二数据包为所述空缺的数据包中的任一数据包,所述第一数据包为所述数据接收端已接收到的一个数据包;或者,
    所述白名单包括以所述第一数据包的序列号为基准时第三数据包的序列号的偏移量,所述第三数据包为所述若干个数据包中的任一个数据包。
  23. 如权利要求22所述的装置,其特征在于,所述空缺的数据包中包括N个序列号连续的数据包,所述黑名单还包括N个序列号连续的数据包中序列号最小的数据包的序列号偏移量以及序列号最大的数据包的序列号偏移量;或者,
    所述若干个数据包中包括N个序列号连续的数据包,所述白名单还包括N个序列号连续的数据包中序列号最小的数据包的序列号偏移量以及序列号最大的数据包的序列号偏移量,N为大于1的整数。
  24. 如权利要求23所述的装置,其特征在于,所述序列号偏移量通过一个M位无符号整数来编码,第一无符号整数的高L位为第一数值,所述第一数值指示N个序列号连续的数据包的第一个数据包,所述第二无符号整数的高L位为第二数值,所述第二数值指示N个序列号连续的数据包的第N个数据包,第一无符号整数的低M-L位用于编码所述序列号最小的数据包的序列号偏移量,所述第二无符号整数的低M-L位用于编码所述序列号最大的数据包的序列号偏移量,M和L均为大于1的整数,且M大于L。
  25. 如权利要求18-24任一所述的装置,其特征在于,所述确认信息中还包括已确认 接收到的数据包的序列号最大的数据包的标识。
  26. 如权利要求18-25任一所述的装置,其特征在于,所述确认信息中还包括当前接收缓存中存储的数据量。
  27. 如权利要求18-21任一项所述的装置,其特征在于,所述黑名单和所述白名单采用位图编码方式编码。
  28. 如权利要求18-21任一项所述的装置,其特征在于,所述空缺的数据包中包括N1个序列号连续的数据包,所述黑名单中包括由所述N1个序列号中最小序列号和最大序列号构成的序列号范围,N1为大于0的整数;或者,
    所述若干个数据包中包括N2个序列号连续的数据包,所述白名单中包括由所述N2个序列号中最小序列号和最大序列号构成的序列号范围,N2为大于0的整数。
  29. 如权利要求18-28任一项所述的装置,其特征在于,所述确认信息中包括黑名单和白名单,所述发送模块具体用于:
    向数据发送端发送第一反馈报文和第二反馈报文,所述第一反馈报文中包括所述黑名单,所述第二反馈报文中包括所述白名单。
  30. 一种数据传输装置,其特征在于,包括:
    接收模块,用于接收来自数据接收端的第一反馈报文,所述第一反馈报文用于反馈所述数据接收端接收来自所述数据发送端的数据包的情况;
    重传模块,用于根据所述第一反馈报文,多次向所述数据接收端发送第一数据包的副本以完成对所述第一数据包的一轮重传,其中,所述第一数据包为所述数据发送端应重传的一个数据包,每两个所述副本的发送之间间隔随机的时长。
  31. 如权利要求30所述的装置,其特征在于,所述重传模块还用于根据所述数据接收端发送的第二反馈报文,再次确定所述第一数据包需要重传;多次向所述数据接收端发送所述第一数据包的副本以完成对所述第一数据包的又一轮重传,其中,所述又一轮对所述第一数据包的重传中,每两个副本的发送也间隔随机的时长,且所述又一轮重传中重传的所述第一数据包的副本的次数大于所述一轮重传的所述第一数据包的副本的次数。
  32. 如权利要求30所述的装置,其特征在于,所述第一反馈报文包括黑名单,所述黑名单用于指示所述更新的接收缓存中空缺的数据包,所述空缺的数据包为所述数据发送端已发送且所述数据接收端未接收的数据包。
  33. 如权利要求30-32任一项所述的装置,其特征在于,所述第一数据包本轮被重传的次数,与所述第一数据包被重传的轮数正相关。
  34. 如权利要求30-33任一项所述的装置,其特征在于,所述第一反馈报文包括所述接收端的接收缓存中存储的数据量,或者白名单,所述白名单指示所述接收缓存中存储的数据包,所述重传模块,具体用于:
    根据所述第一反馈报文确定所述第一数据包,以及第一数据量满足小于所述数据发送端的拥塞窗口,所述第一数据量为所述数据发送端根据已经向所述数据接收端发送的数据量以及第二数据量确定的数据量,所述第二数据量为所述接收缓存中存储的数据量或者根据所述白名单确定的所述接收缓存中数据包的数据量;
    多次向所述数据接收端发送第一数据包的副本以完成对所述第一数据包的一轮重传。
  35. 一种数据传输装置,其特征在于,所述装置应用于数据的接收端,包括:
    通信接口、处理器和存储器;
    所述存储器用于存储软件程序,所述处理器用于读取所述存储器中存储的软件程序,通过所述通信接口收发数据,并实现权利要求1至12任一项所述的方法。
  36. 一种数据传输装置,其特征在于,所述装置应用于数据的发送端,包括:
    通信接口、处理器和存储器;
    所述存储器用于存储软件程序,所述处理器用于读取所述存储器中存储的软件程序,通过所述通信接口收发数据,并实现权利要求13至17任一项所述的方法。
  37. 一种计算机可读存储介质,其特征在于,所述计算机可读存储介质中存储软件程序,所述软件程序在被一个或多个处理器读取并执行时可实现权利要求1~17任一项所述的方法。
PCT/CN2020/072862 2019-03-25 2020-01-17 一种数据传输方法及装置 WO2020192258A1 (zh)

Priority Applications (2)

Application Number Priority Date Filing Date Title
EP20779102.1A EP3937409A4 (en) 2019-03-25 2020-01-17 DATA TRANSMISSION METHOD AND APPARATUS
US17/484,164 US20220014312A1 (en) 2019-03-25 2021-09-24 Data transmission method and apparatus

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
CN201910229219.1A CN111740808B (zh) 2019-03-25 2019-03-25 一种数据传输方法及装置
CN201910229219.1 2019-03-25

Related Child Applications (1)

Application Number Title Priority Date Filing Date
US17/484,164 Continuation US20220014312A1 (en) 2019-03-25 2021-09-24 Data transmission method and apparatus

Publications (1)

Publication Number Publication Date
WO2020192258A1 true WO2020192258A1 (zh) 2020-10-01

Family

ID=72610918

Family Applications (1)

Application Number Title Priority Date Filing Date
PCT/CN2020/072862 WO2020192258A1 (zh) 2019-03-25 2020-01-17 一种数据传输方法及装置

Country Status (4)

Country Link
US (1) US20220014312A1 (zh)
EP (1) EP3937409A4 (zh)
CN (3) CN111740808B (zh)
WO (1) WO2020192258A1 (zh)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN114499777A (zh) * 2022-04-15 2022-05-13 四川腾盾科技有限公司 一种集群无人系统数据传输方法

Families Citing this family (15)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN112769526B (zh) * 2020-12-11 2022-06-21 邦彦技术股份有限公司 数据包重传方法、系统和存储介质
CN114650124B (zh) * 2020-12-18 2023-10-03 中国联合网络通信集团有限公司 数据传输的同步方法和装置
CN112887505B (zh) * 2021-01-12 2022-03-29 深圳震有科技股份有限公司 一种提高卫星大时延丢包环境下传真成功率的装置及方法
CN112925632B (zh) * 2021-05-08 2022-02-25 支付宝(杭州)信息技术有限公司 处理方法及装置、处理器、电子设备及存储介质
CN115499932B (zh) * 2021-07-02 2023-07-18 华为技术有限公司 通信方法及装置
CN114374474A (zh) * 2021-12-29 2022-04-19 苏州摩比信通智能系统有限公司 一种数据传输系统及方法
CN115001632A (zh) * 2022-06-09 2022-09-02 咪咕文化科技有限公司 一种信息传输方法、装置、电子设备及可读存储介质
CN115276914B (zh) * 2022-06-21 2024-02-02 北京网聚云联科技有限公司 一种基于多级缓存重传机制的udp传输方法、装置以及设备
CN115134292B (zh) * 2022-06-28 2023-11-28 王蕊 基于接收窗口的多路径传输实时流媒体的路径管理方法
WO2024022334A1 (zh) * 2022-07-26 2024-02-01 抖音视界有限公司 数据传输方法、装置和系统
CN115361104B (zh) * 2022-08-26 2024-06-14 深圳市欧瑞博科技股份有限公司 智能设备升级方法、系统、计算机设备和存储介质
CN115694874B (zh) * 2022-08-26 2024-06-11 重庆长安汽车股份有限公司 一种车载大数据的传输方法、系统、设备、介质
CN116137560B (zh) * 2023-04-14 2023-06-30 海马云(天津)信息技术有限公司 处理重传请求的方法及装置、数据发送端设备和存储介质
CN116527205B (zh) * 2023-06-30 2023-09-05 芯耀辉科技有限公司 数据传输方法、装置及存储介质
CN117318898B (zh) * 2023-11-24 2024-02-09 合肥奎芯集成电路设计有限公司 高速串行接口中重复数据包的处理方法

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2001058077A2 (en) * 2000-02-03 2001-08-09 Telefonaktiebolaget Lm Ericsson (Publ) Ping-pong protocol with variable length packets
CN108337242A (zh) * 2018-01-03 2018-07-27 西安万像电子科技有限公司 传输数据的方法、存储介质及处理器
CN108631954A (zh) * 2017-03-24 2018-10-09 电信科学技术研究院 一种数据传输方法及装置
CN108965308A (zh) * 2018-07-26 2018-12-07 西安万像电子科技有限公司 传输数据的方法、装置和系统

Family Cites Families (17)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20060117387A1 (en) * 2004-11-30 2006-06-01 Gunsalus Bradley W Propagation protection of email within a network
US20080222532A1 (en) * 2004-11-30 2008-09-11 Mester Michael L Controlling and Monitoring Propagation Within a Network
US7478424B2 (en) * 2004-11-30 2009-01-13 Cymtec Systems, Inc. Propagation protection within a network
US8031701B2 (en) * 2006-09-11 2011-10-04 Cisco Technology, Inc. Retransmission-based stream repair and stream join
US7664857B2 (en) * 2007-01-26 2010-02-16 Citrix Systems, Inc. Systems and methods of using an IP ID field for automatic WAN/LAN detection
US10263734B2 (en) * 2013-11-12 2019-04-16 Telefonaktiebolaget Lm Ericsson (Publ) Devices and methods for handling blind (re) transmissions in a network
EP2887595B8 (en) * 2013-12-23 2019-10-16 Rohde & Schwarz GmbH & Co. KG Method and node for retransmitting data packets in a tcp connection
KR101610715B1 (ko) * 2014-06-11 2016-04-08 한국전자통신연구원 단방향 데이터 송수신 시스템 및 방법
US9961581B2 (en) * 2014-10-31 2018-05-01 Qualcomm Incorporated Status prohibition timer disabling for partial status report
CN106656431B (zh) * 2015-09-21 2020-09-29 华为技术有限公司 一种报文传输方法及用户设备
CN109327288B (zh) * 2015-12-14 2023-11-10 华为技术有限公司 数据传输加速方法、装置及系统
JP7154739B2 (ja) * 2016-05-23 2022-10-18 コネクティヴィティ・システムズ・インコーポレーテッド IPv6 TCP/IPネットワークを介する高度な大規模データ伝送および致命的輻輳回避
CA3049157A1 (en) * 2017-01-04 2018-07-12 Guangdong Oppo Mobile Telecommunications Corp., Ltd. Rlc layer status report control pdu transmitting method and related device
CN108631963B (zh) * 2017-03-24 2021-01-12 华为技术有限公司 用于传输数据的方法和网络侧节点
US10419377B2 (en) * 2017-05-31 2019-09-17 Apple Inc. Method and system for categorizing instant messages
US10355827B2 (en) * 2017-08-08 2019-07-16 Telefonaktiebolaget Lm Ericsson (Publ) Status reporting in a wireless communication system
US20200280539A1 (en) * 2019-02-28 2020-09-03 Andrew Navamoni Jebasingh Real-time third-party authorization of communication sessions

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2001058077A2 (en) * 2000-02-03 2001-08-09 Telefonaktiebolaget Lm Ericsson (Publ) Ping-pong protocol with variable length packets
CN108631954A (zh) * 2017-03-24 2018-10-09 电信科学技术研究院 一种数据传输方法及装置
CN108337242A (zh) * 2018-01-03 2018-07-27 西安万像电子科技有限公司 传输数据的方法、存储介质及处理器
CN108965308A (zh) * 2018-07-26 2018-12-07 西安万像电子科技有限公司 传输数据的方法、装置和系统

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
See also references of EP3937409A4 *

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN114499777A (zh) * 2022-04-15 2022-05-13 四川腾盾科技有限公司 一种集群无人系统数据传输方法
CN114499777B (zh) * 2022-04-15 2022-07-22 四川腾盾科技有限公司 一种集群无人系统数据传输方法

Also Published As

Publication number Publication date
US20220014312A1 (en) 2022-01-13
CN111740808A (zh) 2020-10-02
EP3937409A1 (en) 2022-01-12
CN111740808B (zh) 2022-07-22
CN115396077A (zh) 2022-11-25
EP3937409A4 (en) 2022-05-04
CN115396078A (zh) 2022-11-25

Similar Documents

Publication Publication Date Title
WO2020192258A1 (zh) 一种数据传输方法及装置
CN109936510B (zh) 多路径rdma传输
Cui et al. FMTCP: A fountain code-based multipath transmission control protocol
JP6284549B2 (ja) マルチパスストリーミングのためのfecベースの信頼性のある転送制御プロトコル
WO2017211096A1 (zh) 传输数据流的方法与设备
CN109327288A (zh) 数据传输加速方法、装置及系统
CN101729228B (zh) 丢包抑制重传的方法、网络节点和系统
US9282049B2 (en) Systems, methods, and computer program products providing feedback for network congestion management
EP3252979B1 (en) Requesting retransmission of data in a multicast network
Dong et al. In-packet network coding for effective packet wash and packet enrichment
CN111131179B (zh) 业务处理方法、装置、网络设备及存储介质
WO2020163124A1 (en) In-packet network coding
KR20100112151A (ko) 네트워크 카드 및 정보 처리 장치
JP5998923B2 (ja) プログラム、情報処理装置、及び通信方法
CN114500672A (zh) 数据传输方法及系统
CN109792444B (zh) 实况内容分发系统中的播出缓冲
WO2022098377A1 (en) Qualitative communication using adaptive network coding with a sliding window
Ma et al. Sliding-window based batch forwarding using intra-flow random linear network coding
Cheng et al. Improving transmission quality of MPEG video stream by SCTP multi-streaming and differential RED mechanisms
KR102140267B1 (ko) 적어도 둘 이상의 무선 경로들을 통해 비디오 데이터 프레임의 패킷을 전송하는 적응적 비디오 스트리밍 방법 및 시스템
US11853261B2 (en) Coded-caching in a wireless communication network
Ortiz et al. SCTP as scalable video coding transport
Huang et al. The unreliable-concurrent multipath transfer (U-CMT) protocol for multihomed networks: U-CMT
Han et al. MPR-QUIC: Multi-path partially reliable transmission for priority and deadline-aware video streaming
Arefin et al. Modified SACK-TCP and some application level techniques to support real-time application

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: 20779102

Country of ref document: EP

Kind code of ref document: A1

NENP Non-entry into the national phase

Ref country code: DE

ENP Entry into the national phase

Ref document number: 2020779102

Country of ref document: EP

Effective date: 20211008