Efficient link layer retry protocol utilizing implicit acknowledgements
US-9397792-B2 · Jul 19, 2016 · US
US9819452B2 · US · B2
| Field | Value |
|---|---|
| Publication number | US-9819452-B2 |
| Application number | US-201615184277-A |
| Country | US |
| Kind code | B2 |
| Filing date | Jun 16, 2016 |
| Priority date | Dec 6, 2013 |
| Publication date | Nov 14, 2017 |
| Grant date | Nov 14, 2017 |
A practical reading order for non-experts. Skip the full description unless you need deep technical detail.
What the patent document calls the invention.
A short plain-language summary of the technical disclosure.
Who owns or filed the patent and who is credited as inventor.
Filing, priority, publication, and grant dates set the timeline.
The legal scope of protection — read this for what is actually claimed.
Technology tags used to group this patent with similar filings.
Prior art links and similar publications in this corpus.
Official abstract text for this publication.
Methods, apparatus, and systems for implementing a link layer retry protocol utilizing implicit ACKnowledgements (ACKs). Peer link interfaces are configured to facilitate confirmed error-free delivery of link-layer packets through use of implicit ACKs, while also providing retransmission of packets for which errors are detected and guaranteeing the link control data is either successfully received or data transfer over the link is prevented. In conjunction with transmitting packets, reliable packets are copied into sequential slots in a replay buffer. Each link interface tracks the slot at which each reliable packet is buffered, and in response to detection of an error, a retry request is sent to the transmit-side to retransmit the errant packet. The previously buffered copy of the errant packet is retrieved from the replay buffer and retransmitted. Through use of a link roundtrip detection mechanism, absence of a retry request by the time a replay buffer has returned to the slot of a reliable packet (plus a predetermined number of additional transfer cycles, if applicable) provides an implicit ACK that the packet was received without error.
Opening claim text (preview).
What is claimed is: 1. An apparatus, comprising: a link interface to support bi-directional communication over a link with a link peer, the link interface including a replay buffer, the link interface to, store in the replay buffer a copy of a packet to be transmitted over the link to the link peer; transmit the packet over the link to the link peer; determine that the packet has been received without error at the link peer without use of an explicit Acknowledgement (ACK) received from the link peer; allow the copy of the packet in the replay buffer to be overwritten if it is determined the packet has been received at the link peer without error; and determine an implicit ACK that a packet has been received by the link peer without error prior to allowing the copy of the packet in the replay buffer to be overwritten, wherein the buffer comprises a circular buffer having a depth, and in which copies of packets are written into respective slots in a sequence that is restarted when the end of the circular buffer is reached, and wherein the link interface to detect an implicit ACK by performing operations comprising: tracking, for the packet, a slot at which a copy of the packet was written to in the circular buffer; and detecting that a retry request for a retransmission of a packet copied to a given slot has not been received by the time the sequence for writing copies of packets into the circular buffer has returned to the given slot. 2. The apparatus of claim 1 , wherein the link interface is further to: determine that a number of slots in the circular buffer that would be written to during a roundtrip transmission between interface ports of the apparatus and the link peer is less than or equal to a depth of the circular buffer. 3. An apparatus, comprising: a link interface to support bi-directional communication over a link with a link peer, the link interface including a replay buffer, the link interface to, store in the replay buffer a copy of a packet to be transmitted over the link to the link peer; transmit the packet over the link to the link peer; determine that the packet has been received without error at the link peer without use of an explicit Acknowledgement (ACK) received from the link peer; allow the copy of the packet in the replay buffer to be overwritten if it is determined the packet has been received at the link peer without error; and determine an implicit ACK that a packet has been received by the link peer without error prior to allowing the copy of the packet in the replay buffer to be overwritten, wherein the buffer comprises a circular buffer having a depth, and in which copies of packets are written into respective slots in a sequence that is restarted when the end of the circular buffer is reached, and wherein the link interface is to detect an implicit ACK by, tracking, for each of multiple transmitted packets, a slot at which a copy of the packet was written to in the circular buffer; and detecting that a retry request for a retransmission of a packet copied to a given slot has not been received by the time the sequence for writing copies of packets into the circular buffer has returned to the given slot plus n additional packet transfer cycles, wherein n is an integer >0. 4. The apparatus of claim 3 , wherein the link interface is to determine the n additional packet transfer cycles by performing operations comprising: sending a first packet to the link peer, the first packet including indicia to solicit return of a roundtrip marker from the link peer in response to receipt of the first packet; beginning at a starting slot, transmitting packets retrieved from slots in the replay buffer to the link peer, wherein each packet transfer cycle advances the slot in the replay buffer by one until a last slot in the replay buffer is reached, at which point the replay buffer slot wraps to a first slot; while transmitting the packets, detecting receipt of the roundtrip marker from the link peer; and if the buffer slot has returned to the starting slot prior to receiving the roundtrip marker, starting a counter and transmitting additional packets to the link peer until the roundtrip marker is received, wherein the counter is incremented by one for each additional packet that is transmitter and wherein n is the value of the counter when the roundtrip marker is received. 5. The apparatus of claim 3 , wherein the link interface is to determine the n additional packet transfer cycles by performing operations comprising: sending a first packet to the link peer, the first packet including indicia to solicit return of a roundtrip marker from the link peer in response to receipt of the first packet; beginning at a starting slot, transmitting packets retrieved from slots in the replay buffer to the link peer, wherein each packet transfer cycle advances the slot in the replay buffer by one until a last slot in the replay buffer is reached, at which point the replay buffer slot wraps to a first slot; while transmitting the packets, detecting receipt of the roundtrip marker from the link peer; and if the roundtrip marker is received prior to the buffer slot returning to the starting slot, starting a counter at a value m and transmitting additional packets to the link peer until the buffer slot has returned to the starting slot, wherein the counter is decremented by one for each additional packet that is transmitted and wherein m is the value of the counter when the roundtrip marker is received. 6. The apparatus of claim 1 , wherein the link interface is to: receive and process packets transmitted from the link peer when operating in a normal active link transfer state; detect sequential received packets are errant packets; and in response to detecting sequential errant packets, performing at least one of taking the link offline, initiating retraining of the link, and initiating reinitialization of the link; and wherein the link interface is further to send link transfer control packets in sequential pairs such that at least one of the sequential pair of link transfer control packets is either received without error or the link is taken offline, retraining of the link is initiated, or reinitialization of the link is initiated. 7. The apparatus of claim 1 , wherein the link interface is further to: receive packets transmitted from the link peer; detect that an errant packet containing errant data has been received; and send a retry request to the link peer requesting the link peer resend the errant packet. 8. The apparatus of claim 7 , wherein the link interface is further to: determine a buffer location in a replay buffer in the link peer at which a non-errant copy of the errant packet is stored; and embed indicia in the retry request identifying the buffer location. 9. The apparatus of claim 7 , wherein the link interface is further to: in response to detecting the errant packet, switch a state of the link interface to a tossing mode under which received packets are discarded; and return the state of the link interface to a normal receive mode to receive a retransmission of the errant packet from the link peer. 10. The apparatus of claim 9 , wherein the link interface is further to: receive a retry marker sent from the link peer while the receive port is in tossing mode; and prepare to return the state of the link interface to a normal receive mode after receiving the retry marker, wherein the retry marker indicates how many packets following transmission of the retry marker will be transmitted from the link peer prior to retransmission of the non-errant copy of the errant packet. 11. The apparatus of claim 10 , wherein the link in
by repeating transmission, e.g. Verdan system {(H04L1/1858 and H04L1/189 take precedence)} · CPC title
Peer-to-peer [P2P] networks · CPC title
Implicit acknowledgement of correct or incorrect reception, e.g. with a moving window · CPC title
Buffer management · CPC title
Arrangements specially adapted for the transmitter end · CPC title
Related publications grouped by family.
Answers are generated from the same data shown on this page.