Claims
- 1. A method including the acts of:
(a) generating at least one random number value with a random number generator; (b) generating a value for transmit probability T at set time intervals; (c) receiving at least one packet of information during one of the set time intervals; (d) comparing the transmit probability T generated during the one of the set time intervals with the at least one random number; (e) discarding the packet of information if the transmit probability is less than the at least one random number; and (f) forwarding the packet of information to a queue if the transmit probability is greater than or equal to the at least one random number.
- 2. The method of claim 1 wherein generating transmit probability further includes the acts of:
(g) determining the length of the queue Q(t) periodically at certain time values; (h) comparing the length of the queue Q(t) with preselected constant thresholds Q0 and Q1; and (i) using the length of queues determined in (g) to compute a subsequent transmit probability T(t+Dt).
- 3. The method of claim 2 wherein the certain time values include t−Dt, t, t+Dt and the length of queues includes Q(t−Dt) at time value t−Dt, Q(t) at time value t and Q(t+Dt) at time value t+Dt.
- 4. The method of claim 2 wherein the preselected constant thresholds Q0 and Q1 include the relation 0<Q0<Q1<Qmax, where Q represents storage capacity of a buffer holding the queue.
- 5. The method of claim 2 wherein the subsequent transmit probability and the at least one random number value are both fractions between 0 and 1.0.
- 6. The method of claim 1 further including act of updating the value for the transmit probability T; and determining a period D(t) to refresh transmit probability T.
- 7. The method according to claim 6, wherein the method of updating the value of the transmit probability T is specified by an algorithm based upon queue occupancy and rate of change of queue occupancy.
- 8. The method according to claim 6, wherein the period for refreshing the transmit probability is a small fraction such as ⅛ of the fraction Qmax/S where Qmax is maximum queue capacity and S is the highest possible rate at which the queue could be filled or drained.
- 9. The method according to claim 2, wherein Q0=Qmax/8 and, if less than or equal to Q0, updating the transmit probability by a linear increase by a constant such as {fraction (1/128)} up to a limiting value of 1.
- 10. The method according to claim 2, wherein Q0=Qmax/8 and, if greater than Q0, next comparing the length of the queue to the threshold Q1 that is greater than or equal to Q0 such as Q1=3*Qmax/8 and, if greater than Q1, updating the transmit probability by an exponential decrease by a constant multiplier such as ¾.
- 11. The method according to claim 1, further including the acts of measuring the packets in a queue (queue occupancy), then compared results to a relatively low threshold Q0 such as Q0=Qmax/8 and a relatively high threshold Q1 such as 3*Qmax/8 and, if result is greater than Q0 yet less than or equal to Q1, next comparing present queue occupancy to previous queue occupancy and, if greater than or equal updating the transmit probability by an exponential decrease by a constant multiplier such as {fraction (31/32)} or if less than, updating the transmit probability by a linear increase by a constant such as {fraction (1/128)} up to a limiting value of 1.
- 12. A method including the acts of:
a) determining a period Dt to update transmit probability T(t); b) determining queue occupancy Q(t−Dt), Q(t) and T(t) periodically at certain time values; c) comparing queue occupancy Q(t) with two preselected constant thresholds called Q0 and Q1 having the relation 0<Q0<Q1<Qmax where Qmax is the maximum storage capacity of the buffer; and d) using the values Q(t−Dt), Q(t), T(t) and comparisons from (c) to compute the subsequent transmit probability T(t+Dt).
- 13. The method according to claim 12 further including the steps of:
e) providing a random number generator; f) upon arrival of a packet in the time interval [t, Dt] performing a comparison of a current state of said random number generator with the value of the transmit probability T(t+Dt); g) discarding said packet if the current state of said random number generator is greater than said value of new transmit probability T(t+Dt); and h) transmitting said packet into a storage queue if the current state of said random number generator is less than or equal to said value of the transmit probability T(t+Dt).
- 14. The method according to claim 13, wherein said random number value and said new transmit probability T(t+Dt) are both fractions between 0 and 1.0, that is, in the interval of fractions in [0, 1].
- 15. The method according to claim 12, wherein the act of updating the value of the transmit probability T(t) is specified by an algorithm based upon queue occupancy and rate of change of queue occupancy.
- 16. The method according to claim 12 wherein the period for updating the transmit probability is a small fraction such as ⅛ of the fraction Qmax/S where Qmax is maximum queue capacity and S is the highest possible rate at which the queue could be filled or drained.
- 17. The method according to claim 12, wherein Q0=Qmax/8 and, if queue occupancy is less than or equal to Q0, updating the transmit probability by a linear increase by a constant such as {fraction (1/128)} up to a limiting value of 1.
- 18. The method according to claim 12, wherein Q0=Qmax/8 and, if greater than Q0, next comparing the length of the queue to the threshold Q1 that is greater than or equal to Q0 such as Q1=3*Qmax/8 and, if greater than Q1, updating the transmit probability by an exponential decrease by a constant multiplier such as ¾.
- 19. The method according to claim 12, further including the acts of measuring the packets in said queue (queue occupancy), then compared results to a relatively low threshold Q0 such as Q0=Qmax/8 and a relatively high threshold Q1 such as 3*Qmax/8 and, if result is greater than Q0 yet less than or equal to Q1, next comparing present queue occupancy to previous queue occupancy and, if greater than or equal updating the transmit probability by an exponential decrease by a constant multiplier such as {fraction (31/32 )} or if less than, updating the transmit probability by a linear increase by a constant such as {fraction (1/128)} up to a limiting value of 1.
- 20. A communication system comprising:
a system for receiving packets in a computer network; a mechanism for storing constant values, measured dynamic variables, and calculated variables to generate transmit probability T(t); and a flow control mechanism responsive to T(t) for transmitting a packet into a queue to await processing or, if necessary due to congestion in that queue, gracefully forwarding arriving packets with ever decreasing probability until an equilibrium that avoids overflowing the queue is reached.
- 21. A method to manage congestion in a communications network comprising the acts of:
operatively monitoring, with a device for determining the existence of queue congestion, the existence of said congestion within a communications device; and generating a transmit probability value for use in transmitting a packet or discarding a packet for the purpose of gracefully avoiding overfilling of the queue storage capacity.
- 22. A program product including:
a recording media on which computer program is recorded, said computer program including computer code responsive to a value Q(t) representing queue occupancy; computer code that compares Q(t) with a first threshold Q(0) and a second threshold Q(1), if Q(t) is less than a low threshold denoted Q0, then T(t+Dt) =minimum {1, T(t)+Inc0} where Inc0 is an increment constant greater than 0 and less than 1, wherein the low threshold is ⅛ of total queue capacity and the value of Inc0 is {fraction (1/128)}; Else, if Q(t) is above a high threshold denoted Q1, then T(t+Dt)=K0*T(t) where K0 is a constant greater than 0 and less than 1, wherein the value of the high threshold is ⅜ of the maximum queue capacity, and the value of K0 is ¾; Else, if Q(t) is greater than or equal to Q(t−Dt), then T(t+Dt)=K1*T(t) where K1 is a constant greater than K0 and less than 1 wherein the value of K1 is {fraction (31/32)}. Else, T(t+Dt)=minimum {1, T(t)+Inc1} where Inc1 is an increment constant greater than 0 and less than 1 and the value of Inc1 is {fraction (1/128)}.
CROSS REFERENCE TO RELATED PATENT APPLICATIONS
[0001] U.S. patent application Ser. No. ______ (Attorney's Docket No. RPS920020097US1) assigned to the Assignee of the present invention and incorporated herein by reference describes a Flow Control System that discards Best Effort packets retroactively after occupancy in a queue with Premium packets.