Transmission control protocol queue sorting
First Claim
Patent Images
1. An apparatus that queues and transmits data packets, comprising:
- a queue configured to store data packets awaiting transmission;
a controller configured to dynamically determine an order in which the data packets are transmitted from the queue using Transmission Control Protocol (TCP) sequence numbers and/or TCP timestamps contained in the data packets in the queue, wherein while removing a data packet from the head of the queue in preparation for transmission, the controller is further configured to ensure that the packets are transmitted in the determined order by;
searching the queue for the data packet with an earliest sequence number belonging to a same TCP connection as the data packet at the head of the queue;
determining that the data packet with an earliest sequence number is not the data packet currently at the head of the queue; and
swapping the data packet at the head of the queue with the earliest data packet, wherein swapping the data packets involves modifying a preference value associated with the packets to cause the earliest data packet to be processed before any other data packets for the same TCP connection; and
a transmission mechanism configured to transmit the data packets from the queue in the determined order.
1 Assignment
0 Petitions
Accused Products
Abstract
A device that queues and transmits data packets is described. This device includes: a queue configured to store data packets awaiting transmission; a controller configured to dynamically determine an order in which the data packets are transmitted from the queue; and a transmission mechanism configured to transmit the data packets from the queue in the determined order. The transmission order is determined using Transmission Control Protocol (TCP) sequence numbers and/or TCP timestamps contained in the data packets in the queue in order to provide increased utility without reducing existing fairness between independent data streams.
-
Citations
20 Claims
-
1. An apparatus that queues and transmits data packets, comprising:
-
a queue configured to store data packets awaiting transmission; a controller configured to dynamically determine an order in which the data packets are transmitted from the queue using Transmission Control Protocol (TCP) sequence numbers and/or TCP timestamps contained in the data packets in the queue, wherein while removing a data packet from the head of the queue in preparation for transmission, the controller is further configured to ensure that the packets are transmitted in the determined order by; searching the queue for the data packet with an earliest sequence number belonging to a same TCP connection as the data packet at the head of the queue; determining that the data packet with an earliest sequence number is not the data packet currently at the head of the queue; and swapping the data packet at the head of the queue with the earliest data packet, wherein swapping the data packets involves modifying a preference value associated with the packets to cause the earliest data packet to be processed before any other data packets for the same TCP connection; and a transmission mechanism configured to transmit the data packets from the queue in the determined order. - View Dependent Claims (2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12)
-
-
13. A method for queuing and transmitting data packets, comprising:
-
queuing data packets awaiting transmission; dynamically determining an order in which the data packets are transmitted from the queue using Transmission Control Protocol (TCP) sequence numbers and/or TCP timestamps contained in the data packets in the queue, wherein while removing a data packet from the head of the queue in preparation for transmission, the method further comprises ensuring that the packets are transmitted in the determined order by; searching the queue for the data packet with an earliest sequence number belonging to the same a same TCP connection as the data packet at the head of the queue; determining that the data packet with the earliest sequence number is not the data packet currently at the head of the queue; and swapping the data packet at the head of the queue with the earliest data packet, wherein swapping the data packets involves modifying a preference value associated with the packets to cause the earliest data packet to be processed before any other data packets for the same TCP connection; and transmitting data packets from the queue in the determined order. - View Dependent Claims (14, 15, 16, 17, 18, 19)
-
-
20. A non-transitory computer-readable storage medium storing instructions that when executed by a computer cause the computer to perform a method, the method comprising:
-
queuing data packets awaiting transmission; dynamically determining an order in which the data packets are transmitted from the queue using Transmission Control Protocol (TCP) sequence numbers and/or TCP timestamps contained in the data packets in the queue, wherein while removing a data packet from the head of the queue in preparation for transmission, the method further comprises ensuring that the packets are transmitted in the determined order by; searching the queue for the data packet with an earliest sequence number belonging to a same TCP connection as the data packet at the head of the queue; determining that the data packet with the earliest sequence number is not the data packet currently at the head of the queue; and swapping the data packet at the head of the queue with the earliest data packet, wherein swapping the data packets involves modifying a preference value associated with the packets to cause the earliest data packet to be processed before any other data packets for the same TCP connection; and transmitting data packets from the queue in the determined order.
-
Specification