IP Library Granted Patent US 7,161,907
Granted Patent B2
US 7,161,907 · App. 10/092,289 · Granted Jan 9, 2007

System and method for dynamic rate flow control

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,161,907
App. No.
10/092,289
Granted
Jan 9, 2007
Kind
B2
Abstract

A system and method for providing dynamic rate flow control. An originating entity sets requested and target rates of communication within a communication sent to a destination entity. The requested and target rates may be expressed in terms of a “time to next communication” (e.g., a period of delay between transmission of successive communications). Intermediate devices (e.g., switches, routers) may decrease a target rate (thereby increasing the time between communications) but not the requested rate. Through a feedback process, the destination entity (or an intermediate entity) reports the target rate, and possibly the requested rate, back to the originator, which may accept and implement a reduced rate of communication, select a different communication channel, etc.

Claims (82)

1. A method of dynamically controlling the rate of communication between two entities, the method comprising:

if a maximum bandwidth of a relay element situated between a first entity and a second entity has not been allocated, identifying an available bandwidth of said relay element by:

(a) receiving one or more communications on one or more channels other than a first channel between the first entity and the second entity;

(b) allocating a portion of the maximum bandwidth of said relay element to said other channels;

(c) repeating said steps (a)–(b) for a predetermined period of time;

(d) summing said bandwidths allocated to said other channels to determine a total allocated bandwidth; and

(e) determining a difference between the maximum bandwidth and said total allocated bandwidth;

receiving an electronic communication on said first channel at said relay element;

retrieving from said communication a modifiable first value associated with a first target bandwidth for said first channel;

retrieving from said communication a fixed second value associated with a desired bandwidth for said first channel, wherein the desired bandwidth is never less than said first target bandwidth; and

modifying said first value in said communication to a value associated with a decreased first target bandwidth if said first target bandwidth exceeds said available bandwidth.

2. The method of claim 1 , further comprising:

forwarding said communication;

wherein said first value in said forwarded communication indicates a bandwidth allocated to said first channel by said relay element.

3. The method of claim 1 , wherein said modifying comprises changing said first value to a value associated with zero bandwidth.

4. The method of claim 1 , wherein said first value is a time value representing a time between communication transmissions from the first entity to the second entity on said first channel.

5. The method of claim 1 , wherein said electronic communication is a packet.

6. The method of claim 5 , wherein said relay element is a switch and wherein said first entity and said second entity are computer systems.

7. The method of claim 1 , wherein one of said first entity and said second entity is a computer system; and

wherein the other of said first entity and said second entity is an input/output subsystem.

8. The method of claim 1 , wherein said modifying comprises replacing said modifiable first value with a modified first value associated with a lower target bandwidth, the method further comprising:

at said relay element, allocating the lower target bandwidth to said first channel; and

at another relay element downstream of said relay element:

receiving said electronic communication containing said modified first value and said fixed second value; and

allocating to said first channel a bandwidth higher than the lower target bandwidth.

9. A computer readable storage medium storing instructions that, when executed by a computer, cause the computer to perform a method of dynamically controlling the rate of communication between two entities, the method comprising:

if a maximum bandwidth of a relay element situated between a first entity and a second entity has not been allocated, identifying an available bandwidth of said relay element by:

(a) receiving one or more communications on one or more channels other than a first channel between the first entity and the second entity;

(b) allocating a portion of the maximum bandwidth of said relay element to said other channels;

(c) repeating said steps (a)–(b) for a predetermined period of time;

(d) summing said bandwidths allocated to said other channels to determine a total allocated bandwidth; and

(e) determining a difference between the maximum bandwidth and said total allocated bandwidth;

receiving an electronic communication on said first channel at said relay element;

retrieving from said communication a modifiable first value associated with a first target bandwidth for said first channel;

retrieving from said communication a fixed second value associated with a desired bandwidth for said first channel, wherein the desired bandwidth is never less than said first target bandwidth; and

modifying said first value in said communication to a value associated with a decreased first target bandwidth if said first target bandwidth exceeds said available bandwidth.

10. A method of dynamically controlling the rate of communication between two entities, comprising:

generating at a first entity a first electronic communication for transmission to a second entity over a first communication channel, wherein said first communication includes a first value indicating a target rate of communication for said channel;

receiving said first communication at a switching element;

determining whether a maximum rate of communication of said switching element has been allocated;

if said maximum rate has not been allocated, identifying an available rate of communication of said switching element by:

(a) receiving a communication prior to said first communication at said switching element, on a channel other than said first channel;

(b) allocating a portion of the maximum rate of communication of said switching element to said other channel;

(c) repeating said steps (a)–(b) for a predetermined period of time;

(d) summing said rates of communication allocated to said other channels to determine a total allocated rate of communication; and

(e) determining the difference between the maximum rate of communication and said total allocated rate of communication;

if said switching element cannot provide said target rate of communication, altering said first value to indicate a lower target rate of communication for said first channel;

receiving said first communication at said second entity; and

communicating said first value to said first entity.

11. The method of claim 10 , further comprising determining whether said switching element previously allocated a rate of communication to said first channel.

12. The method of claim 10 , further comprising after said communicating:

transmitting one or more communications from said first entity toward said second entity at said lower target rate of communication.

13. The method of claim 10 , wherein said generating comprises storing said first value in said first communication prior to transmitting it over said first channel.

14. The method of claim 13 , wherein said generating further comprises storing a second value in said first communication; and

wherein said second value indicates a requested rate of communication for said channel.

15. The method of claim 14 , wherein said first value is equal to said second value.

16. The method of claim 14 , wherein one or more of said first value and said second value comprises a threshold value indicating a maximum rate of communication for said channel desired by the first entity.

17. The method of claim 14 , wherein one or more of said first value and said second value comprise a threshold value indicating a minimum rate of communication for said channel desired by the first entity.

18. The method of claim 17 , further comprising at said switching element:

detecting said threshold value indicating said minimum rate of communication; and

tearing down said channel.

19. The method of claim 14 , wherein one or more of said first value and said second value comprises a time period representing a delay between transmission of successive communications over said first channel from said first entity; and

wherein said rate of communication indicated by said time period is substantially equal to the inverse of said time period.

20. The method of claim 10 , wherein said altering comprises setting said first value to a threshold value indicating a minimum rate of communication.

21. The method of claim 20 , further comprising at said first entity after said communicating:

ceasing transmission of communications to said second entity over said first channel.

22. The method of claim 10 , wherein said first value is a time period between successive electronic communication transmissions from said first entity on said first channel.

23. The method of claim 22 , wherein said target rate of communication is substantially equal to the inverse of said first value.

24. The method of claim 10 , wherein said first value is a measure of bandwidth.

25. A computer readable storage medium storing instructions that, when executed by a computer, cause the computer to perform a method of dynamically controlling the rate of communication between two entities, the method comprising:

generating at a first entity a first electronic communication for transmission to a second entity over a first communication channel, wherein said first communication includes a first value indicating a target rate of communication for said channel;

receiving said first communication at a switching element;

determining whether a maximum rate of communication of said switching element has been allocated;

if said maximum rate has not been allocated, identifying an available rate of communication of said switching element by:

(a) receiving a communication prior to said first communication at said switching element, on a channel other than said first channel;

(b) allocating a portion of the maximum rate of communication of said switching element to said other channel;

(c) repeating said steps (a)–(b) for a predetermined period of time;

(d) summing said rates of communication allocated to said other channels to determine a total allocated rate of communication; and

(e) determining the difference between the maximum rate of communication and said total allocated rate of communication;

if said switching element cannot provide said target rate of communication, altering said first value to indicate a lower target rate of communication for said first channel;

receiving said first communication at said second entity; and

communicating said first value to said first entity.

Assignments (1)
MERGER AND CHANGE OF NAME Recorded Dec 16, 2015
From: ORACLE USA, INC.; SUN MICROSYSTEMS, INC.; ORACLE AMERICA, INC.
To: ORACLE AMERICA, INC.
Reel/Frame 037302/0683 →