IP Library Granted Patent US 9,979,640
Granted Patent B2
US 9,979,640 · App. 14/580,981 · Granted May 22, 2018

Reorder resilient transport

Inventors: Anil Vasudevan (Portland, OR); Parthasarathy Sarangam (Portland, OR); Eric Mann (Hillsboro, OR); Daniel Cohn (Oakland, CA)
Assignee: Intel Corporation
H04L45/74H04L45/38H04L47/115H04L47/52H04L47/54
View Patent ↗
Loading inventors, assignments & file history…
Monitor This Case
Get email alerts when status or documents change.
Order Certified Copies
Most orders are placed with the USPTO same day — all within 24 business hours.
Order via The Patent Place →
Pre-filled with this patent's details
Quick Facts
Patent No.
US 9,979,640
App. No.
14/580,981
Granted
May 22, 2018
Kind
B2
Abstract

Devices and techniques for reorder resilient transport are described herein. A device may store data packets in sequential positions of a flow queue in an order in which the data packets were received. The device may retrieve a first data packet from a first sequential position and a second data packet from a second sequential position that is next in sequence to the first sequential position in the flow queue. The device may store the first data packet and the second data packet in a buffer and refrain from providing the first data packet and the second data packet to upper layer circuitry if the packet order information for the first data packet and the second data packet indicate that the first data packet and the second data packet were received out of order. Other embodiments are also described.

Claims (55)

1. A non-transitory machine-readable medium including instructions that, when executed by a first end station, cause the first end station to:

store a plurality of data packets in sequential positions of a flow queue in an order in which the plurality of data packets were received;

retrieve a first data packet of the plurality of data packets, the first data packet having first packet order information, from a first sequential position in the flow queue;

retrieve a second data packet of the plurality of data packets, the second data packet having second packet order information, from a second sequential position, the second sequential position being a next sequential position after the first sequential position in the flow queue;

store the first data packet and the second data packet in a buffer and refrain from providing the first data packet and the second data packet to upper layer circuitry responsive to the first packet order information and the second packet order information indicate that the first data packet and the second data packet were received out of order, wherein the first packet order information and the second packet order information indicate an order in which the first data packet and the second data packet were sent from a second end station;

maintain a timer based on a value for average round trip travel time for data packets between the first end station and the second end station;

initialize the timer to an initial value responsive to retrieving a data packet of the plurality of data packets; and

responsive to the data packet was received out-of-order, based on packet order information for the data packet, store the data packet in the buffer, otherwise, responsive to the timer has expired, provide the data packets in the buffer to the upper layer circuitry.

2. The non-transitory machine-readable medium of claim 1 , including further instructions that, when executed by the first end station, cause the first end station to:

provide the first data packet and the second data packet to the upper layer circuitry responsive to the buffer is empty and responsive to the first packet order information and the second packet order information indicate that the first data packet and the second data packet were received in order.

3. The non-transitory machine-readable medium of claim 1 , wherein, responsive to the first packet order information and the second packet order information indicate that the first data packet and the second data packet were received out of order, the instructions further cause the first end station to:

initialize a counter;

retrieve a third data packet having third packet order information from a third sequential position that is a next sequential position to the second sequential position in the flow queue;

store the third data packet in the buffer; and

increment the counter responsive to the buffer does not include data packets in sequential order, based on the first packet order information, the second packet order information, and the third packet order information, subsequent to storing the third data packet.

4. The non-transitory machine-readable medium of claim 3 , wherein the instructions further cause the first end station to:

repeat operations of retrieving data packets, incrementing the counter, and storing data packets in the buffer for each of the plurality of data packets, sequentially based on the sequential positions of respective data packets; and

provide a reordered buffer to the upper layer circuitry responsive to the counter being incremented past a counter limit, the reordered buffer being generated by reordering the buffer into a sequential order based on packet order information of each data packet in the buffer.

5. The non-transitory machine-readable medium of claim 4 , wherein the instructions further cause the first end station to:

responsive to detecting, based on packet order information, that a data packet was received in order, provide a reordered buffer to the upper layer circuitry, the reordered buffer being generated by reordering the buffer into a sequential order based on packet order information of each data packet in the buffer.

6. The non-transitory machine-readable medium of claim 1 , wherein the instructions further cause the first end station to: increment a counter for each data packet received out of order.

7. A device comprising:

a network interface to receive a plurality of data packets and to store the plurality of data packets in sequential positions of a flow queue in an order in which the plurality of data packets were received at the network interface; and

an out-of-order module to:

retrieve a first data packet having first packet order information from a first sequential position in the flow queue, retrieve a second data packet having second packet order information from a second sequential position in the flow queue,

store the first data packet and the second data packet in a buffer and refrain from providing the first data packet and the second data packet to upper layer circuitry responsive to the first packet order information and the second packet order information indicate that the first data packet and the second data packet were received out of order,

maintain a timer based on a value for average round trip travel time for data packets between the device and a source end station,

initialize the timer to an initial value responsive to retrieving a data packet of the plurality of data packets, and

responsive to the respective data packet is received within the average round trip travel time, store the data packet in the buffer and reorder the buffer based on the respective packet order information, otherwise, responsive to the timer has expired, provide the data packets in the buffer to the upper layer circuitry.

8. The device of claim 7 , wherein the network interface is to notify the out-of-order module that the plurality of data packets are out of order prior to storing the plurality of data packets in the flow queue.

9. The device of claim 7 , wherein the out-of-order module is further to:

provide the first data packet and the second data packet to the upper layer circuitry responsive to the butler is empty and responsive to the first packet order information and the second packet order information indicate that the first data packet and the second data packet were received in order.

10. The device of claim 7 , wherein, responsive to the first packet information and the second packet order information indicate that the first data packet and the second data packet were received out of order, the out-of-order module is further to:

initialize a counter;

retrieve a third data packet having third packet order information from a third sequential position subsequent to the second sequential position in the flow queue;

store the third data packet in the buffer; and

increment the counter responsive to the buffer does not include data packets in sequential order, based on the first packet order information, the second packet order information, and the third packet order information, subsequent to storing the third data packet.

11. The device of claim 10 , wherein the out-of-order module is further to:

repeat operations of retrieving data packets, incrementing the counter, and storing data packets in the buffer for each of the plurality of data packets, sequentially based on the sequential positions of respective data packets; and

provide a reordered buffer to the upper layer circuitry responsive to the counter being increment past a counter limit, the reordered buffer being generated by reordering the buffer into a sequential order based on packet order information of each data packet in the buffer.

12. The device of claim 7 , wherein the out-of-order module is further to:

increment a counter for each data packet received out of order.

13. A method comprising:

storing a plurality of data packets in sequential positions of a flow queue in an order in which the plurality of data packets were received;

retrieving a first data packet having first packet order information from a first sequential position in the flow queue;

retrieving a second data packet having second packet order information from a second sequential position that is a next sequential position to the first sequential position in the flow queue;

storing the first data packet and the second data packet in a buffer and refrain from pro viding the first data packet and the second data packet to upper layer circuitry responsive to the first packet order information and the second packet order information indicate that the first data packet and the second data packet were received out of order, wherein the first packet order information and the second packet order information indicate an order in which the first, data, packet, and the second data packet were sent from a second end station;

maintaining a timer based on a value for average round trip travel time for data packets between the first end station and the second end station;

initializing the timer to an initial value responsive to retrieving a data packet of the plurality of data packets; and

responsive to the data packet was received out-of-order, based on packet order information for the data packet, storing the data packet in the buffer, otherwise, responsive to the timer has expired, pro viding the data packets in the buffer to the upper layer circuitry.

14. The method of claim 13 , further comprising:

providing the first data packet and the second data packet to the upper layer circuitry responsive to the buffer is empty and responsive to the first packet order information and the second packet order information indicate that the first data packet and the second data packet were received in order.

15. The method of claim 13 , further comprising:

repeating operations of retrieving data packets, incrementing a counter, and storing data packets in the buffer for each of the plurality of data packets, sequentially based on the sequential positions of respective data packets; and

providing a reordered buffer to the upper layer circuitry responsive to the counter being incremented past a counter limit, the reordered buffer being generated by reordering the buffer into a sequential order based on packet order information of each data packet in the buffer.

Assignments (2)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Nov 29, 2017
From: VASUDEVAN, ANIL; SARANGAM, PARTHASARATHY; MANN, ERIC; COHN, DANIEL
To: INTEL CORPORATION
Reel/Frame 044247/0104 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded May 24, 2017
From: VASUDEVAN, ANIL; SARANGAM, PARTHASARATHY; MANN, ERIC
To: INTEL CORPORATION
Reel/Frame 042494/0635 →
Continuity (1)
Related Publication 20160182369A1 · Jun 23, 2016