IP Library Granted Patent US 7,236,459
Granted Patent B1
US 7,236,459 · App. 10/140,351 · Granted Jun 26, 2007

Method and apparatus for controlling data transmission volume using explicit rate control and queuing without data rate supervision

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 7,236,459
App. No.
10/140,351
Granted
Jun 26, 2007
Kind
B1
Abstract

Packet flow rate control techniques are enhanced by the interactive and early invocation of packet queuing to control short flows of packets and to eliminate undershoot and overshoot of a targeted flow rate. Packet queuing involves the scheduled release of packets in accordance with flow policies (priorities) to achieve a preselected outgoing target flow rate. The combination of controlled packet queuing and packet flow rate control with appropriate mechanisms for favoring one over the other improves the efficiency of data transmission.

Claims (34)

1. A method for controlling data flow transmission between a first host and a second host, the method implemented by a network device disposed in a communications path between the first host and the second host, the method comprising

monitoring, at the network device, the state of a data flow between the first host and the second host, wherein the monitored state includes a last sequence number of data acknowledged by the first host and the inbound rate of data transmitted by the first host to the second host;

receiving, at the network device, a data packet of the data flow transmitted from the first host to the second host, wherein the data packet comprises an acknowledgment sequence number and data;

if the acknowledgment sequence number in the received packet is greater than the last sequence number of data acknowledged by the first host, then:

creating a first new packet including the acknowledgment sequence number;

creating a second new packet including the data in the received data packet and the last sequence number of data acknowledged by the first host;

passing the first new packet to an acknowledgment packet process operative to conditionally modify the first new packet, and schedule the first new packet for transmission;

passing the second new packet to a data packet process operative to schedule the second new packet for transmission.

2. The method according to claim 1 wherein the data packet process maintains, for each data flow, a data packet queue and a queuing state, wherein the queuing state ranges from one of a build-up state, a drain-down state and queuing-done state, and wherein the data packet process comprises

initially setting a queuing state for the data flow to a build-up state;

transmitting the data packet if the queuing state for the data flow is set to the queuing done state;

otherwise:

identifying, responsive to receipt of the data packet, a target rate for the data flow;

determining whether the data packet queue corresponding to the data flow contains a previous data packet of the data flow;

if the data packet queue corresponding to the data flow is empty, determining whether the inbound rate of the data flow exceeds the target rate,

adding, if the inbound rate exceeds the target rate, the data packet to the data packet queue corresponding to the data flow;

otherwise, if the data packet queue corresponding to the data flow contains one or more packets of the flow, then

if the queuing state for the data flow is set to the build-up state and the number of packets in the data packet queue exceeds a first threshold, then setting the queuing state to the drain-down state and adding the packet to the data packet queue;

if the queuing state for the data flow is set to the build-up state and the number of packets in the data packet queue does not exceed the first threshold, then adding the packet to the data packet queue;

if the queuing state for the data flow is not set to the build-up state and the number of packets in the data packet queue is less than a second threshold, then setting the queuing state to the queuing done state and adding the packet to the data packet queue; and

if the queuing state for the data flow is not set to the built-up state and the number of packets in the data packet queue is greater than the second threshold, then adding the packet to the data packet queue.

3. The method according to claim 2 wherein the first threshold and the second threshold are equal.

4. The method according to claim 1 wherein the acknowledgment packet process maintains acknowledgment state information for each data flow, and wherein the acknowledgment packet process comprises

updating, responsive to the acknowledgment packet, acknowledgment information for the data flow;

deleting the acknowledgment packet, if a prior acknowledgment packet for the data flow has been queued;

otherwise;

determining an acknowledgment rate and a data rate at which the second host transmits packets of the data flow;

if the acknowledgement rate does not exceed an assigned acknowledgment rate, then modifying the window size in the acknowledgment packet and transmitting the acknowledgment packet;

if the acknowledgment rate exceeds the assigned acknowledgment rate, then determining one or more acknowledgment parameters comprising one or more of an acknowledgment delay, a window size, and an amount of data to acknowledge; modifying the acknowledgment packet based on the determined acknowledgment parameters; and scheduling the acknowledgment packet for transmission.

5. The method according to claim 4 wherein the acknowledgment packet is scheduled for transmission according to the acknowledgment delay.

6. The method according to claim 4 further comprising

transmitting the acknowledgment packet according to the scheduled ACK delay;

determining whether acknowledgment of all data acknowledged by the first host has been forwarded to the second hose; and

generating, response to the determining step, a second acknowledgment packet for processing by the acknowledgment packet process.

Assignments (11)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Nov 21, 2019
From: SYMANTEC CORPORATION
To: CA, INC.
Reel/Frame 051144/0918 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Aug 27, 2016
From: BLUE COAT SYSTEMS, INC.
To: SYMANTEC CORPORATION
Reel/Frame 039851/0044 →
RELEASE OF SECURITY INTEREST Recorded Aug 1, 2016
From: JEFFERIES FINANCE LLC
To: BLUE COAT SYSTEMS, INC.
Reel/Frame 039516/0929 →
RELEASE OF SECURITY INTEREST IN PATENT COLLATERAL AT REEL/FRAME NO. 30740/0181 Recorded May 29, 2015
From: JEFFERIES FINANCE LLC
To: BLUE COAT SYSTEMS, INC.
Reel/Frame 035797/0280 →
RELEASE OF SECURITY INTEREST IN PATENT COLLATERAL AT REEL/FRAME NO. 27727/0144 Recorded May 29, 2015
From: JEFFERIES FINANCE LLC
To: BLUE COAT SYSTEMS, INC.
Reel/Frame 035798/0006 →
SECURITY INTEREST Recorded May 22, 2015
From: BLUE COAT SYSTEMS, INC.
To: JEFFERIES FINANCE LLC, AS THE COLLATERAL AGENT
Reel/Frame 035751/0348 →
SECOND LIEN PATENT SECURITY AGREEMENT Recorded Jul 3, 2013
From: BLUE COAT SYSTEMS, INC.
To: JEFFERIES FINANCE LLC, AS COLLATERAL AGENT
Reel/Frame 030740/0181 →
RELEASE OF SECURITY INTEREST IN PATENT COLLATERAL RECORDED AT R/F 027727/0178 Recorded Oct 16, 2012
From: JEFFERIES FINANCE LLC, AS COLLATERAL AGENT
To: BLUE COAT SYSTEMS, INC.
Reel/Frame 029140/0170 →
FIRST LIEN PATENT SECURITY AGREEMENT Recorded Feb 16, 2012
From: BLUE COAT SYSTEMS, INC.
To: JEFFERIES FINANCE LLC
Reel/Frame 027727/0144 →
SECOND LIEN PATENT SECURITY AGREEMENT Recorded Feb 16, 2012
From: BLUE COAT SYSTEMS, INC.
To: JEFFERIES FINANCE LLC
Reel/Frame 027727/0178 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Dec 1, 2011
From: PACKETEER, INC.
To: BLUE COAT SYSTEMS, INC.
Reel/Frame 027307/0603 →