Login| Sign Up| Help| Contact|

Patent Searching and Data


Title:
AN APPRATUS AND A METHOD FOR SELECTIVE MULTIPLE PACKET TRANSMISSION FOR PREFERRED PACKETS
Document Type and Number:
WIPO Patent Application WO/2021/213611
Kind Code:
A1
Abstract:
A device and a method for selective multiple packet transmission for preferred packets are disclosed. In the disclosure, the device is configured to identify a packet from a plurality of successive packets to be transmitted; and repetitively transmit, over a network, for a plurality of times the identified packet together with other packets in the plurality of successive packets. The identified packet (also referred as "preferred packet") is a packet contains critical data of an application for which it is transmitted. Just as examples, the identified packet may corresponds to the first packet of each Remote Direct Memory Access, RDMA, transaction, or a packet including an Extended Transport Header, ETH, in an InfiniBand over RDMA. By transmitting in advance the identified packet repetitively multiple times, a lower delivery time is achieved at a high probability of reception for this identified packet.

Inventors:
BELKAR BEN-SHAHAR (DE)
COHEN REUVEN (DE)
SHATTAH GUY (DE)
QU HUICHUN (DE)
Application Number:
PCT/EP2020/060975
Publication Date:
October 28, 2021
Filing Date:
April 20, 2020
Export Citation:
Click for automatic bibliography generation   Help
Assignee:
HUAWEI TECH CO LTD (CN)
BELKAR BEN SHAHAR (DE)
International Classes:
H04L1/08
Foreign References:
US20190327134A12019-10-24
EP2328297A12011-06-01
US10461892B22019-10-29
Attorney, Agent or Firm:
KREUZ, Georg (DE)
Download PDF:
Claims:
CLAIMS

1. A device (210) for packet transmission, configured to: identify a packet from a plurality of successive packets to be transmitted; and repetitively transmit, over a network, for a plurality of times the identified packet together with other packets in the plurality of successive packets.

2. The device (210) according to claim 1, further configured to: dynamically monitor at least one network parameter of the network, wherein the repetitive transmission of identified packet is performed in response to the at least one network parameter that does not comply with a predefined Quality of Service, QoS, value.

3. The device (210) according to claim 1 or 2, configured to: repetitively transmit, over the network, for the plurality of times the identified packet consecutively together with other packets in the plurality of successive packets.

4. The device (210) according to claim 1 or 2, configured to: calculate a plurality of transmission intervals for repetitive transmission of the identified packet selected from the plurality of successive packets; and repetitively transmit, over the network, the identified packet in the plurality of transmission intervals together with other packets in the plurality of successive packets.

5. The device (210) according to claim 4, configured to: calculate the plurality of transmission intervals for repetitive transmission of the identified packet selected from the plurality of successive packets according to at least one of the following criteria: round-trip-time, RTT, burst size and the drop rate of the network.

6. The device (210) according to claim 4 or 5, wherein the transmission intervals are time intervals and/or location intervals among the successive packets.

7. The device (210) according to any of preceding claims, wherein the number of repetitions is a predefined, or dynamically changing, positive integral number x.

8. The device (210) according to any of preceding claims, further configured to: stop the repetitive transmission of the identified packet in response to at least one of: receiving an acknowledgement, ACK, for a successful transmission of at least one of the repetitive transmissions of the identified packet, before completing the transmission of all repetitive transmissions of the identified packet; receiving an acknowledgement, ACK, for a successful transmission of any packet sequence that was transmitted after the identified packet; and no indication of a selective ACK mechanism notifies that the identified packet has not been received.

9. The device (210) according to any of preceding claims, further configured to: retransmit repetitive transmissions of the identified packet in response to at least one of: a non-acknowledgement, NACK, received for the identified packet; a timeout occurred since the transmission of the identified packet without receiving an acknowledgement, ACK, for the identified packet; a non-acknowledgement, NACK, received for a packet sequence that was transmitted after the identified packet; and an indication of a selective ACK mechanism notifies that the identified packet has not been received.

10. The device (210) according to any of preceding claims, wherein the identified packet is defined as a first packet of each Remote Direct Memory Access, RDMA, transaction, or a packet including an Extended Transport Header, ETH, in an InfiniBand over RDMA.

11. A device (211) for packet reception, configured to: receive, over a network, a transmission of a plurality of successive packets, wherein the plurality of successive packets includes an identified packet which is repetitively transmitted a plurality of times together with other packets; store a predefined number of received packets, as long as the identified packet is not received; and process the stored received packets once the identified packet is received, according to data stored in the received packet.

12. The device (211) according to claim 11, further configured to: send an acknowledgement, ACK, for each one of received plurality of successive packets as long as the identified packet is not received, wherein one or more of the ACKs include a non-acknowledgement, NACK, for the non-received identified packet.

13. A method for packet transmission, comprising: identifying a packet from a plurality of successive packets to be transmitted; and repetitively transmitting for a plurality of times the identified packet together with other packets in the plurality of successive packets over a network. 14. A method for packet reception, comprising: receiving over a network a transmission of a plurality of successive packets, the plurality of successive packets includes an identified packet which is repetitively transmitted for a plurality of times together with other packets; storing a predefined number of received packets, as long as the identified packet is not received; and processing the stored received packets once the identified packet is received, according to data stored in the received packet.

15. A computer program product comprising a program code for carrying out, when implemented on a processor, the method according to claim 13 and/or 14.

Description:
AN APPARATUS AND A METHOD FOR SELECTIVE MULTIPLE PACKET TRANSMISSION FOR PREFERRED PACKETS

TECHNICAL FIELD

The present disclosure relate to communication systems and, more specifically, but not exclusively, to an apparatus and a method for selective multiple packet transmission for preferred packets.

BACKGROUND

Reliable transport protocols such as the Transport Control Protocol (TCP) have been deployed for many years. Reliability in these protocols is guaranteed by using Acknowledgment (ACK) messages from a receiver to a transmitter (also referred to herein as sender) for packets that have been successfully received by the receiver. Packets that have not been acknowledged are retransmitted.

Existing common retransmission approaches are Go-back-N and Selective Repeat. In the Go-Back-N approach, a sender keeps a set of up to N packets that have not yet been acknowledged, where N is a predefined number of packets. When a timeout occurs for a specific packet and no ACK is received or a when a Negative ACK (NACK) is received for a specific packet, all the (up to) N packets that have not been acknowledged yet are retransmitted.

FIG. 1A schematically shows an example for Go-back-N retransmission approach, where N=3 as an example. A sender 110 sends a plurality of packets 101, 102, 103 and 104 to a receiver 111. The packet 101 is successfully received at the receiver 111 and an ACK is sent to the sender 110 for the packet 101. The packet 102 is not received at the receiver 111 and the packets 103 and 104 are received at the receiver 111 but they are not acknowledged, as the packet 102 is missing. Therefore, the sender resends the last three packets that were not acknowledged, i.e. the packets 102, 103 and 104. After the retransmission, all three packets 102, 103 and 104 are successfully received at the receiver 111 and are acknowledged. In the Selective Repeat approach, a receiver indicates which packets are missing using a NACK message or a selective ACK (SACK) message, which informs which packets have been received and which packets are missing. In response, the sender selectively retransmits only the packets for which the NACK message was received. Not only in Go-Back-N approach, but also in selective repeat approach, the retransmission is triggered by either a timeout, when no ACK is received or when the NACK message or the SACK message is received. However, in selective repeat approach, retransmission is performed only for specific packets that have not been acknowledged, and not for the entire set of N packets.

FIG. IB schematically shows an example for Selective Repeat retransmission approach. A sender 160 sends a plurality of packets 151, 152, 153, 154, 155 and 156 to a receiver 161. The packet 151 is successfully received at the receiver 161 and an ACK is sent to the sender 160 for the packet 151. The packet 152 is not received at the receiver 161. The packets 153, 154 and 155 are received at the receiver 161 and they are acknowledged with an ACK respective for each packet 153, 154 and 155, where the ACK includes a NACK for the packet 152. The ACK message, which includes the NACK, is a SACK message. Therefore, the sender 160 resends only packet 152 after the first NACK is received, i.e. after the transmission of the packet 155.

SUMMARY

It is an object of the present disclosure to provide a device for packet transmission, a device for packet reception, a method for packet transmission, a method for packet reception and a computer program product comprising a program code for carrying out, when implemented on a processor, the method for packet transmission and/or the method for packet reception.

The foregoing and other objects are achieved by the features of the independent claims. Further implementation forms are apparent from the dependent claims, the description and the figures.

According to a first aspect of the present disclosure, a device for packet transmission is disclosed. The device is configured to identify a packet from a plurality of successive packets to be transmitted, and repetitively transmit, over a network, for a plurality of times the identified packet together with other packets in the plurality of successive packets. The identified packet (also referred as “preferred packet”) is a packet, which contains critical data of an application for which it is transmitted. When the identified packet is lost, the performance cost to the application is high. By transmitting in advance the identified packet repetitively multiple times, a lower delivery time is achieved at a high probability of reception for this identified packet. In the implementation, the device may be a network interface card (NIC), or a network apparatus in which a NIC is deployed.

In a further implementation form of the first aspect, the device is further configured to dynamically monitor at least one network parameter of the network, wherein the repetitive transmission of identified packet is performed in response to the at least one network parameter that does not comply with a predefined Quality of Service, QoS, value. Thereby, different repetitive transmission is adapted to different problems indicated by the at least one network parameter that does not comply with the predefined QoS value. The predefined QoS value may be for example, a specific priority level of the application data to be transmitted.

In a further implementation form of the first aspect, the device is configured to repetitively transmit, over the network, for the plurality of times the identified packet consecutively together with other packets in the plurality of successive packets. This implementation overcomes for example a drop rate on the network, which drops random packets. For example, any network has a drop rate of one to five percent and therefore repetitively transmitting the identified packet consecutively assures the repetitive packets are received at the receiver.

In a further implementation form of the first aspect, the device is configured to calculate a plurality of transmission intervals for repetitive transmission of the identified packet selected from the plurality of successive packets; and repetitively transmit, over the network, the identified packet in the plurality of transmission intervals together with other packets in the plurality of successive packets. In this way, the result of the calculation may provide a suitable transmission intervals for repetitive transmission, thus improve the applicability of repetitive retransmission.

In a further implementation form of the first aspect, the device is configured to calculate the plurality of transmission intervals for repetitive transmission of the identified packet selected from the plurality of successive packets according to at least one of the following criteria: round-trip-time, RTT, burst size and the drop rate of the network. In this way, the calculated transmission intervals can be determined according to the intrinsic parameter(s) of the network, and thus the implementation may be more easily realized.

In a further implementation form of the first aspect, the transmission intervals are time intervals and/or location intervals among the successive packets. Sometimes, the problem in the network is a time related problem and then every calculated time interval of a repetitive transmission allows a higher probability of reception. Sometimes the problem in the network is related to the location among successive packets and then every calculated location interval of a repetitive transmission allows a higher probability of reception. For example, in case there is a loss of a packet in every ten packets, the calculated location interval may be five, so that the identified packet is transmitted every five packets, to make sure the identified packet is received. In another case where there is a loss of packets every 10 milliseconds, the calculated time interval may be 5 milliseconds so that the identified packet is transmitted every 5 milliseconds, to make sure the identified packet is received.

In a further implementation form of the first aspect, the number of repetitions is a predefined, or dynamically changing, positive integral number x. In this way, the number of repetitions is dynamically adapted to changing network conditions allowing higher probability of reception of the identified packet.

In a further implementation form of the first aspect, the device is further configured to stop the repetitive transmission of the identified packet in response to at least one of: receiving an acknowledgement, ACK, for a successful transmission of at least one of the repetitive transmissions of the identified packet, before completing the transmission of all repetitive transmissions of the identified packet; receiving an acknowledgement, ACK, for a successful transmission of any packet sequence that was transmitted after the identified packet; and no indication of a selective ACK mechanism notifies that the identified packet has not been received. Thereby, redundant packets over the network may be saved once the identified packet has been indicated to be received, thus, the computing power of the device can be saved.

In a further implementation form of the first aspect, the device is further configured to retransmit repetitive transmissions of the identified packet in response to at least one of: a non acknowledgement, NACK, received for the identified packet; a timeout occurred since the transmission of the identified packet without receiving an acknowledgement, ACK, for the identified packet; a non-acknowledgement, NACK, received for a packet sequence that was transmitted after the identified packet; and an indication of a selective ACK mechanism notifies that the identified packet has not been received.

In a further implementation form of the first aspect, the identified packet is defined as a first packet of each Remote Direct Memory Access, RDMA, transaction, or a packet including an Extended Transport Header, ETH, in an InfiniBand over RDMA.

According to a second aspect of the present disclosure, a device for packet reception is disclosed. The device is configured to receive, over a network, a transmission of a plurality of successive packets. The plurality of successive packets includes an identified packet, which is repetitively transmitted a plurality of times together with other packets. The device is further configured to store a predefined number of received packets, as long as the identified packet is not received, and process the stored received packets once the identified packet is received, according to data stored in the received packet. The successive packets cannot be processed before the identified packet is received, since the identified packet contains critical data for the processing of the successive packets. Storing the successive packets, until the identified packet is received instead of dropping these successive packets, allows to process the successive packets immediately after the identified packet is received thereby, saving the time of requesting and receiving the successive packets again.

In a further implementation form of the second aspect, the device is further configured to send an acknowledgement, ACK, for each one of received plurality of successive packets as long as the identified packet is not received, wherein at least one of the ACKs includes a non acknowledgement, NACK, for the non-received identified packet. Thereby, indicating the device for transmitting packets to retransmit the identified packet without retransmitting the received successive packets.

According to a third aspect of the present disclosure, a method for packet transmission is disclosed. The method comprises: identifying a packet from a plurality of successive packets to be transmitted; and repetitively transmitting for a plurality of times the identified packet together with other packets in the plurality of successive packets over a network.

The method according to the third aspect can be extended into implementation forms corresponding to the implementation forms of the device for packet transmission according to the first aspect. Hence, an implementation form of the method comprises the feature(s) of the corresponding implementation form of the device for packet transmission.

The advantages of the methods according to the third aspect are the same as those for the corresponding implementation forms of the device for packet transmission according to the first aspect.

According to a fourth aspect of the present disclosure, a method for packet reception is disclosed. The method comprises: receiving over a network a transmission of a plurality of successive packets, the plurality of successive packets includes an identified packet which is repetitively transmitted for a plurality of times together with other packets; storing a predefined number of received packets, as long as the identified packet is not received; and processing the stored received packets once the identified packet is received, according to data stored in the received packet.

In a further implementation form of the third and fourth aspects, a computer program product comprising a program code for carrying out, when implemented on a processor, the method of the third aspect of the disclosure and/or the method of the fourth aspect of the present disclosure. Further, the disclosure also relates to a computer program product comprising a computer readable medium and said mentioned computer program, wherein said computer program is included in the computer readable medium, and comprises of one or more from the group: ROM (Read-Only Memory), PROM (Programmable ROM), EPROM (Erasable PROM), Flash memory, EEPROM (Electrically EPROM) and hard disk drive.

According to a fifth aspect of the present disclosure, a device for packet transmission is disclosed. The device comprises a processor, a communication interface, a memory, and a system bus. The memory and the communication interface are connected to the processor by using the system bus, and communicate with each other. The memory is configured to store computer executable instructions, the communication interface is configured to communicate with another device via a communication network, and the processor is configured to execute the computer executable instructions stored in the memory to implement the solution shown in the method of the third aspect of the disclosure and/or the method of the fourth aspect of the present disclosure.

Other systems, methods, features, and advantages of the present disclosure will be or become apparent to one with skill in the art upon examination of the following drawings and detailed description. It is intended that all such additional apparatuses, methods, features, and advantages be included within this description, be within the scope of the present disclosure, and be protected by the accompanying claims.

Unless otherwise defined, all technical and/or scientific terms used herein have the same meaning as commonly understood by one of ordinary skill in the art to which embodiments. Although methods and materials similar or equivalent to those described herein can be used in the practice or testing of embodiments, exemplary methods and/or materials are described below. In case of conflict, the patent specification, including definitions, will control. In addition, the materials, methods, and examples are illustrative only and are not intended to be necessarily limiting.

BRIEF DESCRIPTION OF THE SEVERAL VIEWS OF THE DRAWINGS)

Some embodiments are herein described, by way of example only, with reference to the accompanying drawings. With specific reference now to the drawings in detail, it is stressed that the particulars shown are by way of example and for purposes of illustrative discussion of embodiments. In this regard, the description taken with the drawings makes apparent to those skilled in the art how embodiments may be practiced.

In the drawings:

FIGs. 1A and IB are examples for Go-back-N retransmission approach and Selective Repeat retransmission approach respectively;

FIGs. 2A and 2B schematically show two examples of an apparatus for selective multiple packet transmission for preferred packets, according to some embodiments of the present disclosure;

FIG. 3 is an example of a selective multiple packet transmission for preferred packets where the preferred packets are transmitted successively, according to some embodiments of the present disclosure; FIG. 4 is an example of a selective multiple packet transmission for preferred packets where the preferred packets are transmitted intermittently, according to some embodiments of the present disclosure;

FIG. 5 schematically shows a flowchart of a method for transmitting multiple times an identified preferred packet, from a transmitter to a receiver, according to some embodiments of the present disclosure;

FIG. 6 schematically shows a flowchart of a method for receiving a selective multiple packet transmission for preferred packets, from a transmitter to a receiver , according to some embodiments of the present disclosure; and FIG. 7 is an example of a selective multiple packet transmission for preferred packets where all the copies of the preferred packets have been dropped, according to some embodiments of the present disclosure.

DETAILED DESCRIPTION Illustrative embodiments of method, apparatus, and program product for selective multiple transmission for a preferred packet are described with reference to the figures. Although this description provides a detailed example of possible implementations, it should be noted that the details are intended to be exemplary and in no way limit the scope of this patent application. Moreover, an embodiment/example may refer to other embodiments/examples. For example, any description including but not limited to terminology, element, process, explanation and/or technical advantage mentioned in one embodiment/example is applicative to the other embodiments/examples.

Some embodiments described in the present disclosure relate to apparatuses and methods for selective multiple transmission for preferred packets. More specifically, but not exclusively, to apparatuses and methods for identifying a packet from a plurality of successive packets and repetitively transmit a plurality of times the identified packet together with other packets in the plurality of successive packets over a network, according to the network conditions. In some cases, when packets of data are transmitted from a transmitter to a receiver, there are packets which contain important data and which are defined as preferred packets. These packets are of critical importance to applications for which the data is transmitted. An example of a possible preferred packet may be the first packet of a connection, which provides context about the rest of the packets. Another example may be specific packets during the life of a data flow, which include critical information for the application. A third example is a first packet of a Remote Direct Memory Access (RDMA) transaction, which includes a RDMA opcode and a memory address.

When a preferred packet is lost, the performance cost to the application is high. Even with the existing approaches for retransmission of non-received packets, the performance of the application is seriously damaged. In the Go-Back-N approach, the preferred packet loss is detected after at least one round-trip-time (RTT), which is too long and the N-l packets after the preferred packet are lost. In the Selective Repeat approach, the loss is detected after at least one round-trip-time, which is too long.

An example for a case where the loss of the preferred packet is critical is in RDMA, where the first packet of each transaction (operation) is a preferred packet as it contains the full data where to place the rest of the next packets. Losing the preferred packet (i.e. the first packet in this case) means that all the packets after the first packet are dropped too. However, if the preferred packet is received, all the packets after the preferred packet may be processed and a selective repeat algorithm only sends missing packets.

Another example is about establishing of a Hypertext Transfer Protocol (http) secure connection (HTTPS). In order to establish the connection, it is necessary to handshake on the keys (Transport Layer Security (TLS) protocol) and in case the packets carrying the keys are lost, the secured connection cannot be opened, so the packets carrying the keys are important, and must not be lost, and are therefore preferred packets.

It is therefore necessary to provide an apparatus and a method for delivering the preferred packet or packets as fast as possible with high probability for reception of the preferred packet or packets by the receiver even when there is a high packet loss rate in the network.

According to some embodiments of the present disclosure, an apparatus and method are provided for identifying a preferred packet and repetitively transmit multiple times the preferred packet in advance. The repetitive transmission of multiple times of the preferred packet is done according to the network conditions, allowing lower delivery time at a high probability of reception.

Before explaining at least one embodiment in detail, it is to be understood that embodiments are not necessarily limited in its application to the details of construction and the arrangement of the components and/or methods set forth in the following description and/or illustrated in the drawings and/or the Examples. Implementations described herein are capable of other embodiments or of being practiced or carried out in various ways.

Embodiments may be an apparatus, a method, and/or a computer program product. The computer program product may include a computer readable storage medium (or media) having computer readable program instructions thereon for causing a processor to carry out aspects of the embodiments.

The computer readable storage medium can be a tangible device that can retain and store instructions for use by an instruction execution device. The computer readable storage medium may be, for example, but is not limited to, an electronic storage device, a magnetic storage device, an optical storage device, an electromagnetic storage device, a semiconductor storage device, or any suitable combination of the foregoing. A non-exhaustive list of more specific examples of the computer readable storage medium includes the following: a portable computer diskette, a hard disk, a random access memory (RAM), a read-only memory (ROM), an erasable programmable read-only memory (EPROM or Flash memory), a static random access memory (SRAM), a portable compact disc read-only memory (CD-ROM), a digital versatile disk (DVD), a memory stick, a floppy disk, and any suitable combination of the foregoing. A computer readable storage medium, as used herein, is not to be construed as being transitory signals per se, such as radio waves or other freely propagating electromagnetic waves, electromagnetic waves propagating through a waveguide or other transmission media (e.g., light pulses passing through a fiber-optic cable), or electrical signals transmitted through a wire.

Computer readable program instructions described herein can be downloaded to respective computing/processing devices from a computer readable storage medium or to an external computer or external storage device via a network, for example, the Internet, a local area network, a wide area network and/or a wireless network. The network may comprise copper transmission cables, optical transmission fibers, wireless transmission, routers, firewalls, switches, gateway computers and/or edge servers. A network adapter card or network interface in each computing/processing device receives computer readable program instructions from the network and forwards the computer readable program instructions for storage in a computer readable storage medium within the respective computing/processing device.

Computer readable program instructions for carrying out operations of embodiments may be assembler instructions, instruction-set-architecture (ISA) instructions, machine instructions, machine dependent instructions, microcode, firmware instructions, state-setting data, or either source code or object code written in any combination of one or more programming languages, including an object oriented programming language such as Smalltalk, C++ or the like, and conventional procedural programming languages, such as the "C" programming language or similar programming languages. The computer readable program instructions may execute entirely on the user's computer, partly on the user's computer, as a stand-alone software package, partly on the user's computer and partly on a remote computer or entirely on the remote computer or server. In the latter scenario, the remote computer may be connected to the user's computer through any type of network, including a local area network (LAN) or a wide area network (WAN), or the connection may be made to an external computer (for example, through the Internet using an Internet Service Provider). In some embodiments, electronic circuitry including, for example, programmable logic circuitry, field-programmable gate arrays (FPGA), or programmable logic arrays (PLA) may execute the computer readable program instructions by utilizing state information of the computer readable program instructions to personalize the electronic circuitry, in order to perform aspects of embodiments.

Aspects of embodiments are described herein with reference to flowchart illustrations and/or block diagrams of methods, apparatus (apparatuses), and computer program products according to embodiments. It will be understood that each block of the flowchart illustrations and/or block diagrams, and combinations of blocks in the flowchart illustrations and/or block diagrams, can be implemented by computer readable program instructions.

These computer readable program instructions may be provided to a processor of a general purpose computer, special purpose computer, or other programmable data processing apparatus to produce a machine, such that the instructions, which execute via the processor of the computer or other programmable data processing apparatus, create means for implementing the functions/acts specified in the flowchart and/or block diagram block or blocks. These computer readable program instructions may also be stored in a computer readable storage medium that can direct a computer, a programmable data processing apparatus, and/or other devices to function in a particular manner, such that the computer readable storage medium having instructions stored therein comprises an article of manufacture including instructions which implement aspects of the function/act specified in the flowchart and/or block diagram block or blocks.

The computer readable program instructions may also be loaded onto a computer, other programmable data processing apparatus, or other device to cause a series of operational steps to be performed on the computer, other programmable apparatus or other device to produce a computer implemented process, such that the instructions which execute on the computer, other programmable apparatus, or other device implement the functions/acts specified in the flowchart and/or block diagram block or blocks.

The flowchart and block diagrams in the Figures illustrate the architecture, functionality, and operation of possible implementations of apparatuses, methods, and computer program products according to various embodiments. In this regard, each block in the flowchart or block diagrams may represent a module, segment, or portion of instructions, which comprises one or more executable instructions for implementing the specified logical function(s). In some alternative implementations, the functions noted in the block may occur out of the order noted in the figures. For example, two blocks shown in succession may, in fact, be executed substantially concurrently, or the blocks may sometimes be executed in the reverse order, depending upon the functionality involved. It will also be noted that each block of the block diagrams and/or flowchart illustration, and combinations of blocks in the block diagrams and/or flowchart illustration, can be implemented by special purpose hardware-based apparatuses that perform the specified functions or acts or carry out combinations of special purpose hardware and computer instructions.

References are now made to Figs. 2A and 2B, which schematically show two examples of an apparatus for selective multiple packet transmission for preferred packets according to some embodiments of the present disclosure.

In Fig.2 A, the apparatus 200A includes a transmitter 210A and a receiver 211 A. The transmitter 210A have a memory 221 A and a processor 222 A. The receiver 211 A have a memory 223 A and a processor 224A. The transmitter 210A may comprise processing circuitry (not shown in the figure) configured to perform or cause the transmitter-side operations described in this application. The processing circuitry may comprise hardware and software. The hardware may comprise analog circuitry or digital circuitry, or both analog and digital circuitry. The analog circuitry may comprise radio frequency (RF) signal generation and processing means such as a voltage-controlled oscillator, an amplifier and a mixer. The digital circuitry may comprise components such as application-specific integrated circuits (ASICs), field-programmable arrays (FPGAs), digital signal processors (DSPs), or general-purpose processors. In some embodiment, the processing circuitry comprises one or more processors and a non-transitory memory connected to the one or more processors. The non-transitory memory may carry executable program code which, when executed by the one or more processors, causes the transmitter 210A to perform the operations or methods described herein. The receiver 211 A may comprise processing circuitry (now shown in the figure) configured to perform or cause the transmitter-sider operations described in this application. The processing circuitry may comprise hardware and software. The hardware may comprise analog circuitry or digital circuitry, or both analog and digital circuitry. The analog circuitry may comprise radio frequency (RF) signal generation and processing means such as a voltage-controlled oscillator, an amplifier and a mixer. The digital circuitry may comprise components such as application- specific integrated circuits (ASICs), field-programmable arrays (FPGAs), digital signal processors (DSPs), or general-purpose processors. In one embodiment, the processing circuitry comprises one or more processors and a non-transitory memory connected to the one or more processors. The non-transitory memory may carry executable program code which, when executed by the one or more processors, causes the receiver 211 A to perform the operations or methods described herein.

According to some embodiments of the present disclosure, the processor 222A of the transmitter is on a network adapter, which is a Network Interface Card (NIC) or on any other processor on the path of the transmitter 210A.

According to some embodiments of the present disclosure, the processor 221A of transmitter 210A identifies at least one packet as a preferred packet from a plurality of successive packets to be transmitted. The processor 221 A dynamically monitors at least one network parameter of the network. When the at least one network parameter does not comply with a predefined Quality of Service (QoS) value, the transmitter 210A repetitively transmits the identified preferred packet. According to some embodiments of the present disclosure, the processor 221A of the transmitter 210A determines the pre-determined times (or time slots) for transmitting the identified preferred packet, and the transmitter 210A repetitively transmits the identified preferred packet in the pre-determined times (or time slots) together with other packets in the plurality of successive packets over the network. As an alternative, the transmitter 210A repetitively transmits the identified preferred packet for a plurality of times randomly together with other packets in the plurality of successive packets over the network.

According to some embodiments of the present disclosure, the processor 221A of the transmitter 210A calculates a plurality of transmission intervals for repetitive transmission of the identified preferred packet selected from the plurality of successive packets. The transmitter 210A repetitively transmits the identified preferred packet in the plurality of transmission intervals together with other packets in the plurality of successive packets over the network. The repetitive transmission for a plurality of times of the preferred packet may be done consecutively together with other packets in the plurality of successive packets over the network. For example, when the interval calculation result is zero. Alternatively, the repetitive transmission of the preferred packet for a plurality of times may be done intermittently every time interval according to the interval calculation result or every location interval among the successive packets, according to the interval calculation result. Location interval means, the position of where to place the preferred packet, e.g. after every successive packet, after every two successive packets, after every three successive packets and so on. For example, in case there is a loss of burst of 5 every 10 packets, then the result of the calculation of location interval may be 5, so that the preferred packet is sent after every 5 packets, so at least one preferred packet is received.

According to some embodiments of the present disclosure, the calculation of the plurality of transmission intervals for the repetitive transmission of the identified preferred packet is done according to at least one of the following criteria: round-trip-time (RTT), burst size and the drop rate of the network.

According to some embodiments of the present disclosure, the calculated intervals may be time intervals and/or location intervals. According to some embodiments of the present disclosure, the number of repetitions is a predefined, or dynamically changing, positive integral number x, which is determined according to the network condition. As an alternative implementation of the apparatus for selective multiple packet transmission for preferred packets, in fig.2B, the apparatus 200B may comprise one or more ingress ports 21 OB and/or a receiver (Rx) 220B for receiving data; a processor, logic unit, or central processing unit (CPU) 23 OB to process the data; a transmitter (Tx) 240B and/or one or more egress ports 250B for transmitting the data; and a memory 260B for storing the data. The apparatus 200B may be suitable for implementing any of the disclosed techniques, methods, and devices.

The receiver 220B may comprise processing circuitry configured to perform or cause the transmitter-sider operations described in this application. The processing circuitry may comprise hardware and software. The hardware may comprise analog circuitry or digital circuitry, or both analog and digital circuitry. The analog circuitry may comprise radio frequency (RF) signal generation and processing means such as a voltage-controlled oscillator, an amplifier and a mixer. The digital circuitry may comprise components such as application- specific integrated circuits (ASICs), field-programmable arrays (FPGAs), digital signal processors (DSPs), or general-purpose processors. In one embodiment, the processing circuitry comprises one or more processors and a non-transitory memory connected to the one or more processors. The non-transitory memory may carry executable program code which, when executed by the one or more processors, causes the receiver 220B to perform the operations or methods described herein.

The processor 230B may be implemented by hardware and/or software. The processor 23 OB may be in communication with the ingress ports 21 OB, the receiver 220B, the transmitter 240B, egress ports 250B, and memory 260B. The processor 230B may be implemented as one or more CPU chips, cores (e.g., as a multi-core processor), field-programmable gate arrays (FPGAs), application specific integrated circuits (ASICs), and/or digital signal processors (DSPs).

The memory 260B may comprise one or more disks, tape drives, or solid-state drives; may be used as an over-flow data storage device; may be used to store programs when such programs are selected for execution; and may be used to store instructions and data that are read during program execution. The memory 260B may be volatile and/or non-volatile and may be read-only memory (ROM), random-access memory (RAM), ternary content-addressable memory (TCAM), static random-access memory (SRAM), or any combination thereof. The apparatus 200A or 200B (or network device) may be implemented with a fixed terminal, or a mobile terminal.

Fig. 3 schematically shows an example of a selective multiple packet transmission for a preferred packet where the preferred packet is transmitted successively for example, three times, i.e. x=3, according to some embodiments of the present disclosure. A transmitter 310 transmits five successive data packets, 301, 302, 303, 304 and 305 to a receiver 311. The first packet - packet 301 is identified by the transmitter 310 as a preferred packet and therefore is proactively transmitted repetitively three times. The processor of the transmitter 310 calculates the transmission intervals for transmitting the preferred packet and the calculation result in this case is zero. This means that the preferred packet is successively transmitted multiple times before transmitting the rest of the successive packets 302 to 305. A calculation is carried out by the processor of the transmitter 310 and is also for defining the number of repetitive multiple transmissions of the preferred packet. In this case, the number of repetitive transmissions is x=3 as an example. By transmitting repetitively the preferred packet, the probability that at least one copy of the repetitive transmissions of the preferred packet is successfully received increases. As can be seen in FIG. 3, at the first time when the packet 301 is transmitted, the packet 301 is not received at the receiver 311. However, due to the selective multiple transmission of the preferred packet, according to some embodiments of the present disclosure, at the second time and at the third time when the packet 301 is transmitted, the packet 301, is received successfully at the receiver 311.In this way, the preferred packet is successfully received long time before a NACK is received at the transmitter 310 indicating that the first packet 301 was not received at the receiver 311 and requesting to retransmit packet 301. Once the packet 301 is received at the receiver 311 for the first time, the receiver 311 transmits an ACK to the transmitter 310. However, for other copies of the repetitive transmissions of the preferred packet, in this case, the third copy of the packet 301, no ACK is sent to the transmitter 310. This is because the packet 301 was already acknowledged on the second copy, which was at the first time when the packet 301 was received at the receiver 311. As an example of the implementation, the receiver 311 silently discarded the third copy of the packet 301.

FIG. 4 schematically shows an example of a selective multiple packet transmission for preferred packets, where the preferred packet is transmitted intermittently, for example, three times i.e. x=3, according to some embodiments of the present disclosure. A transmitter 410 transmits five successive data packets, 401, 402, 403, 404 and 405 to a receiver 411. The first packet - packet 401 is identified by the transmitter 410 as a preferred packet and therefore is proactively transmitted repetitively, for example, three times. The processor of the transmitter 410 calculates the transmission intervals of location among successive packets for transmitting the preferred packet and the calculation result in this case is, for example, one. This means that the preferred packet is intermittently transmitted, for example, three times so that after each successive packet a preferred packet is transmitted. The transmitter therefore transmits the repetitive preferred packets with the successive packets in the order as follows: the packet 401, the packet 402, the packet 401, the packet 403, the packet 401, the packet 404, and the packet 405. The preferred packet 401 is transmitted three times, intermittently, after each successive packet. Once the three copies of the preferred packet are transmitted, the transmission of the rest of the successive packets continues. As can be seen in FIG. 4, the first copy of the packet 401 is not received. The packet 402 is received, and the receiver 411 sends a SACK message to the transmitter 410 indicating that the packet 402 is received but the packet 401 is not received (i.e. an ACK is sent for the packet 402, where the ACK includes a NACK for the missing packet 401). The second copy of the packet 401 is received at the receiver 411 and in response, the receiver 411 sends an ACK to the transmitter 410. However, for the third copy of the packet 401 when received at the receiver 411, no ACK is sent to the transmitter 410, as the packet 401 was already acknowledged on the second copy, and the receiver 411 may silently discard the third copy of the packet 401 as an alternative of the implementation.

According to some embodiments of the disclosure, the preferred packet is transmitted every time interval calculated by the processor of the transmitter, according to the network condition. For example, when x=3, and the result of the time interval calculation is 5 milliseconds then the preferred packet is transmitted every 5 milliseconds, three times i.e. the preferred packet is transmitted in three copies and every 5 millisecond one copy is transmitted.

FIG. 5 schematically shows a flowchart of a method for transmitting multiple times an identified preferred packet, from a transmitter to a receiver, according to some embodiments of the present disclosure. At 501, at least one preferred packet is identified by (for example, the processor of the transmitter) the transmitter from a plurality of successive packets to be transmitted by the transmitter. At 502, at least one network parameter of the network is dynamically monitored to check when the network parameter of the network does not comply with a predefined Quality of Service (QoS) value. At 503, in case the network parameter does not comply with the predefined QoS, a plurality of transmission intervals for repetitive transmission of the at least one identified preferred packet selected from the plurality of successive packets are calculated by (for example, the processor of the transmitter) the transmitter. In some embodiments of the present disclosure, the transmission intervals are calculated according to the network parameter that is monitored. According to some embodiments of the present disclosure, the transmission intervals are time intervals and/or location intervals among the successive packets. In some embodiments of the present disclosure, the network parameters monitored are: Round-Trip-Time (RTT), burst size and the drop rate of the network, and the transmission intervals are calculated according to these network parameters. At 504, the number of times x, for repetition of the at least one preferred packet is defined by the processor of the transmitter according to the network condition. According to some embodiments of the present disclosure, the number of repetitions of the at least one preferred packet is predefined or dynamically changing, positive integral number x. At 505, the preferred packet is repetitively transmitted a plurality of times together with other packets in the plurality of successive packets over the network, according to the network parameter monitored and according to the network condition.

In some embodiment of the present disclosure, the preferred packet is repetitively transmitted a plurality of times successively with the other successive packets and in some other embodiments of the present disclosure the preferred packet is repetitively transmitted a plurality of times intermittently with the other successive packets.

According to some embodiments of the present disclosure, a computer program product is provided. The computer program product comprises a program code for carrying out, when implemented on a processor, the method described in FIG. 5.

According to some embodiments of the present disclosure, the transmitter stops the repetitive transmissions of the preferred packet in response to at least one of the following cases:

• an ACK is received at the transmitter for at least one copy of the repetitive transmissions of the preferred packet, before completing the x repetitive transmissions of the preferred packet, in this case, the transmitter stops the rest of repetitive transmissions of the preferred packet and continues the transmission of successive packets;

• an ACK is received at the transmitter for a successful transmission of any packet sequence that was transmitted after the preferred packet, since the preferred packet contains data that is critical for the correct reception of the successive packets that follows the preferred packet. This means that if the packet sequence that was transmitted after the preferred packet is correctly received the preferred packet was also correctly received; and

• no indication of a selective ACK mechanism notifies that the preferred packet has not been received.

According to some embodiments of the present disclosure, the transmitter retransmits repetitive transmissions of the preferred packet in response to at least one of the following cases:

• a non-acknowledgement (NACK) is received at the transmitter for the preferred packet;

• a predefined timeout occurred since the transmission of the last copy of the preferred packet without receiving an ACK for the preferred packet;

• a NACK is received for a packet sequence that was transmitted after the preferred packet; and

• an indication of a selective ACK mechanism notifies that the preferred packet has not been received.

FIG. 6 schematically shows a flowchart of a method for receiving a selective multiple packet transmission for preferred packets, from a transmitter to a receiver, according to some embodiments of the present disclosure. At 601, the transmission of the plurality of successive packets is received by the receiver, where the plurality of successive packets include a preferred packet which is repetitively transmitted a plurality of times together with other packets. At 602, a predefined number M of received packets is stored by the receiver, as long as the preferred packet is not received, and at 603, once the preferred packet is received, the stored received packets are processed by the processor of the receiver, according to data stored in the received preferred packet.

According to some embodiments of the present disclosure, the receiver sends an ACK for packets that are received after a missing preferred packet, but this ACK includes a NACK for the missing preferred packet. In some embodiments of the disclosure, when the receiver stores M packets that are transmitted after the missing preferred packet, at the memory of the receiver, other packets that are transmitted to the receiver are dropped (as the receiver does not store more than M packets). According to some embodiments of the disclosure, there a computer program product is provided. The computer program product comprises a program code for carrying out, when implemented on a processor, the method described in FIG. 6.

According to some embodiments of the present disclosure, the application layer (above the transport layer) uses a Remote Direct Memory Access (RDMA) approach. In this case, the preferred packet is defined as the first packet of each RDMA transaction, as the first packet of RDMA transaction includes the RDMA opcode and the corresponding memory address. Specifically, when InfiniBand over RDMA is used, the first packet of the transaction includes the Extended Transport Header (ETH), the corresponding memory address and transaction length, which is not included in other packets. In this case, the receiver is capable of performing an out-of-order placement for WRITE operations, so that even when packets are received out- of-order, the corresponding data can be stored in the memory of the receiver as long as the two following conditions are met:

• the first packet is received as early as possible, indicating the exact address of where the packet payload needs to be stored; and

• the address of the successive packets can be added from the address in the first packet (for example as the address of the successive packets is the preferred packet address plus an offset) and from the transport layer sequence number of each successive packet.

FIG. 7 schematically shows an example of selective multiple packet transmission for preferred packets where all the copies of the preferred packets are dropped, according to some embodiments of the present disclosure. In this example, the preferred packets are transmitted successively, for example, three times, so that x=3. A transmitter 710 transmits five successive data packets, 701, 702, 703, 704 and 705 to a receiver 711. The first packet - packet 701 is identified by the transmitter 710 as a preferred packet and therefore is proactively transmitted repetitively three times. As can be seen in FIG. 7 all three copies of the preferred packet 701 are not received at the receiver 711. However, the packets 702, 703 and 704, which have been transmitted after the preferred packet 701, are received at the receiver 711. Since the preferred packet 701 is missing, the successive packets 702, 703 and 704 cannot be processed by the processor of the receiver 711. However, the packets 702, 703 and 704 are stored in the memory of the receiver 711 and an ACK is sent from the receiver 711 to the transmitter 710 for each of the packets 702, 703 and 704, where the ACK includes a NACK for the missing preferred packet 701. Once the first ACK, which includes a NACK for preferred packet 701, is received at transmitter 710, the transmitter 710 retransmits the preferred packet 701, for example, three times and only then continues with the transmission of the rest of the successive packets, which is in this example, the packet 705. After the preferred packet 701 is successfully received at the receiver 711, the stored successive packets 702, 703 and 704 are processed by the processor of the receiver when the following conditions are met: a. the preferred packet 701 indicates the address of the buffer; and b. the addresses of packets 702, 703 and 704 can be added from the address in the first packet and from the transport layer sequence number of each successive packet.

According to some embodiments of the present disclosure, a possible implementation of the apparatus of the present disclosure is to allocate a dedicated Quality-of-Service (QoS) attribute to preferred packets, for example, a specific priority level, and to transmit the preferred packets on a different traffic class with a different retransmission scheme to make sure they are received at the receiver. It is noted that this implementation does not produce the same result as other implementations, since the preferred packets in this case are not necessarily received in-order with the other (non-preferred) packets.

The descriptions of the various embodiments have been presented for purposes of illustration, but are not intended to be exhaustive or limited to the embodiments disclosed. Many modifications and variations will be apparent to those of ordinary skill in the art without departing from the scope and spirit of the described embodiments. The terminology used herein was chosen to best explain the principles of the embodiments, the practical application or technical improvement over technologies found in the marketplace, or to enable others of ordinary skill in the art to understand the embodiments disclosed herein.

It is expected that during the life of a patent maturing from this application many relevant methods and apparatuses for selective multiple transmission for preferred packets will be developed and the scope of the term selective multiple transmission for preferred packets is intended to include all such new technologies a priori.

As used herein the term “about” refers to ± 10 %.

The terms "comprises", "comprising", "includes", "including", “having” and their conjugates mean "including but not limited to". This term encompasses the terms "consisting of' and "consisting essentially of'. The phrase "consisting essentially of means that the composition or method may include additional ingredients and/or steps, but only if the additional ingredients and/or steps do not materially alter the basic and novel characteristics of the claimed composition or method.

As used herein, the singular form "a", "an" and "the" include plural references unless the context clearly dictates otherwise. For example, the term "a compound" or "at least one compound" may include a plurality of compounds, including mixtures thereof.

The word “exemplary” is used herein to mean “serving as an example, instance or illustration”. Any embodiment described as “exemplary” is not necessarily to be construed as preferred or advantageous over other embodiments and/or to exclude the incorporation of features from other embodiments.

The word “optionally” is used herein to mean “is provided in some embodiments and not provided in other embodiments”. Any particular embodiment may include a plurality of “optional” features unless such features conflict.

Throughout this application, various embodiments may be presented in a range format. It should be understood that the description in range format is merely for convenience and brevity and should not be construed as an inflexible limitation on the scope of embodiments. Accordingly, the description of a range should be considered to have specifically disclosed all the possible subranges as well as individual numerical values within that range. For example, description of a range such as from 1 to 6 should be considered to have specifically disclosed subranges such as from 1 to 3, from 1 to 4, from 1 to 5, from 2 to 4, from 2 to 6, from 3 to 6 etc., as well as individual numbers within that range, for example, 1, 2, 3, 4, 5, and 6. This applies regardless of the breadth of the range.

Whenever a numerical range is indicated herein, it is meant to include any cited numeral (fractional or integral) within the indicated range. The phrases “ranging/ranges between” a first indicate number and a second indicate number and “ranging/ranges from” a first indicate number “to” a second indicate number are used herein interchangeably and are meant to include the first and second indicated numbers and all the fractional and integral numerals therebetween.

It is appreciated that certain features of embodiments, which are, for clarity, described in the context of separate embodiments, may also be provided in combination in a single embodiment. Conversely, various features of embodiments, which are, for brevity, described in the context of a single embodiment, may also be provided separately or in any suitable subcombination or as suitable in any other described embodiment. Certain features described in the context of various embodiments are not to be considered essential features of those embodiments, unless the embodiment is inoperative without those elements.

Although embodiments have been described in conjunction with specific embodiments thereof, it is evident that many alternatives, modifications and variations will be apparent to those skilled in the art. Accordingly, it is intended to embrace all such alternatives, modifications and variations that fall within the spirit and broad scope of the appended claims. All publications, patents and patent applications mentioned in this specification are herein incorporated in their entirety by reference into the specification, to the same extent as if each individual publication, patent or patent application was specifically and individually indicated to be incorporated herein by reference. In addition, citation or identification of any reference in this application shall not be construed as an admission that such reference is available as prior art to embodiments. To the extent that section headings are used, they should not be construed as necessarily limiting.