Claims
- 1. In a virtual circuit data network having one or more nodes, a method of adjusting the size of a window W.sub.k-1 in the node for the kth virtual circuit using a given link from the node, the method comprising the steps of:
- determining the average number of active virtual circuits J.sub.k-1 using the link prior to the addition of the kth virtual circuit; and
- adjusting the size of the window W.sub.k-1 for the kth virtual circuit from the equation ##EQU11## where W.sub.0 is a full-speed round trip window.
- 2. The method set forth in claim 1 wherein:
- a virtual circuit in intermittent use has an average service time requirement .tau. in which it is in active use and an average idle time of h.tau. and
- the step of determining the average number of active virtual circuits J.sub.k-1 is performed using the recurrence ##EQU12## starting from J.sub.0 =0.
- 3. The method set forth in claim 1 wherein:
- a virtual circuit in intermittent use has an average service time requirement .tau. in which it is in active use and an average idle time of h.tau. and
- the step of determining the average number of active virtual circuits J.sub.k-1 is performed using the approximation ##EQU13## for J.sub.k-1.
- 4. The method set forth in claim 3 wherein:
- the step of determining the average number of active virtual circuits is performed using the longest round trip time of the network as .tau. and a value of h such that h.tau. is a small number of seconds.
- 5. In a virtual circuit data network having one or more nodes, a method of adjusting the size of a window W.sub.k-1 in the node for the kth virtual circuit using a given link from the node, the method comprising the steps of:
- determining that there is to be a fixed number M of window sizes;
- dividing the number N of virtual circuits which can exist simultaneously in the network into a set of M+1 break points such that 0=N.sub.0 <N.sub.1 < . . . <N.sub.M =N;
- associating M window sizes W.sub.0 >W.sub.1 > . . . >W.sub.M-1 with the break points N.sub.0 through N.sub.M-1 such that N.sub.i is associated with W.sub.i ;
- determining the average number of active virtual circuits J.sub.Ni using the link prior to the addition of the kth virtual circuit; and
- adjusting the size of the window W.sub.i associated with virtual circuit N.sub.i from the equation ##EQU14## where N.sub.i <k.ltoreq.N.sub.i+1 and W.sub.0 is a full-speed round trip window.
- 6. The method set forth in claim 5 wherein:
- a virtual circuit in intermittent use has an average service time requirement .tau. in which it is in active use and an average idle time of h.tau. and
- the step of determining the average number of active virtual circuits J.sub.Ni is performed using the recurrence ##EQU15## starting from J.sub.0 =0 and retaining the result only for each J.sub.Ni.
- 7. The method set forth in claim 5 wherein:
- a virtual circuit in intermittent use has an average service time requirement .tau. in which it is in active use and an average idle time of h.tau. and
- the step of determining the average number of active virtual circuits J.sub.Ni is performed using the approximation ##EQU16## for J.sub.Ni.
- 8. The method set forth in claim 7 wherein:
- the step of determining the average number of active virtual circuits is performed using the longest round trip time of the network as .tau. and a value of h such that h.tau. is a small number of seconds.
- 9. The method set forth in claim 8 wherein:
- the normalized total buffer usage b is minimized by solving the system of equations for k=1, 2, . . . , M-1
- (W.sub.k-1 -W.sub.k)dN.sub.k /dw.sub.k +N.sub.k+1 -N.sub.k =0, ##EQU17##
- 10. A method employed at an edge of a virtual circuit data network in which data is transported in cells to determine the size of the window to be requested in the network for a given virtual circuit originating at the edge, the method comprising the steps of:
- keeping track of the total number of cells TC that the given virtual circuit has at the edge and in the network;
- keeping track of the cumulative throughput CT of cells of the given virtual circuit during a most recent renegotiation interval; and
- requesting a window for the virtual circuit in the network which is large enough to accommodate a number of cells which is the larger of TC and the product of CT times the quotient of the round-trip time divided by the length of the most recent renegotiation interval.
- 11. The method set forth in claim 10 further including the step of:
- keeping track of whether a cell buffer for the given virtual circuit at the edge overflows; and
- if the cell buffer overflows during the renegotiation interval, requesting a round-trip window in the step of requesting a window.
- 12. The method set forth in claim 10 wherein:
- when the requested window is larger than the current window, the step of requesting a window may be performed at any time at which there is no pending request for a window; and
- when the requested window is smaller than the current window, the step of requesting a window may not be performed until the end of the current renegotiation interval.
- 13. The method set forth in any of claims 10 through 12 wherein:
- the renegotiation interval is a small number of seconds.
- 14. A method employed in a node of a virtual circuit network for sizing a window in the node for a given one of k virtual circuits using a given link from the node in response to a request for a different-sized window in the node, the method comprising the steps of:
- determining the maximum window to which each of the k virtual circuits is entitled according to a function whereby the maximum window for a virtual circuit j is greater than the maximum window for a virtual circuit j+1, 1.ltoreq.j.ltoreq.k;
- determining the window for each virtual circuit in the node and the rank of each virtual circuit with regard to the current size of its window;
- determining a potential rank which the given virtual circuit would have if its window were the requested size; and
- changing the rank of the given virtual circuit in the direction required by the potential rank by exchanging its rank with that of the next ranking virtual circuit in the required direction until the given virtual circuit either attains the potential rank or until further changing the rank of the given virtual circuit would require changing the rank of the next ranking virtual circuit to a rank such that the current size of the window of the next ranked virtual circuit is greater than the maximum window for the rank which the next ranked virtual circuit would receive as a result of the exchange; and
- sizing the window for the given virtual circuit such that the window's size is the lesser of the size of the requested window and the size of the maximum window for the final rank attained by the given virtual circuit.
- 15. The method set forth in claim 14 wherein:
- the step of determining the maximum window W.sub.i-1 to which a given virtual circuit i is entitled includes the steps of:
- determining the average number of active virtual circuits J.sub.i-1 using the link from the node; and
- determining the maximum window W.sub.i-1 using the equation ##EQU18## , where W.sub.0 is a full-speed round-trip window.
- 16. The method set forth in claim 15 wherein:
- a virtual circuit in intermittent use has an average service time requirement .tau. in which it is in active use and an average idle time of h.tau. and
- the step of determining the average number of active virtual circuits J.sub.i-1 is performed using the recurrence ##EQU19## starting from J.sub.0 =0.
- 17. The method set forth in claim 15 wherein
- a virtual circuit in intermittent use has an average service time requirement .tau. in which it is in active use and an average idle time of h.tau. and
- the step of determining the average number of active virtual circuits J.sub.i-1 is performed using the approximation ##EQU20## for J.sub.i-1.
- 18. The method set forth in claim 16 or claim 17 wherein:
- the step of determining the maximum window size is performed using the longest round trip time of the network as .tau. and a value of h such that h.tau. is a small number of seconds.
- 19. A method of controlling the congestion of data cells in nodes of a network for carrying cells of data via virtual circuits, the method comprising the steps of:
- when a virtual circuit is established, assigning a default cell buffer for the virtual circuit at each node;
- for the duration of the virtual circuit, performing steps including
- determining from the behavior of the virtual circuit whether a different-sized cell buffer is needed;
- if a different-sized cell buffer is needed, providing a first resizing signal indicating the different size to the nodes in the virtual circuit;
- in each node of the virtual circuit, responding to the first resizing signal by indicating the buffer size which the node can provide if that is less than the different size; and
- in each node of the virtual circuit, setting the cell buffer for the virtual circuit to a buffer size which is no greater than the smallest buffer size indicated by any of the nodes.
- 20. The method set forth in claim 19 wherein:
- the step of determining whether a different-sized cell buffer is needed is performed at a first edge of the network at which the virtual circuit enters the network; and
- the method includes the further step of receiving the first resizing signal at a second edge of the network at which the virtual circuit leaves the network and selecting the buffer size to which the cell buffers in the nodes are to be set.
- 21. The method set forth in claim 20 wherein:
- the method includes the further step of providing a second resizing signal containing the selected buffer size from the second edge to the nodes; and
- the step of setting the cell buffer for the virtual circuit is performed using the selected buffer size specified in the second resizing signal.
- 22. The method set forth in claim 21 wherein:
- the step of providing the first resizing signal is performed by serially providing the first resizing signal to every node in turn.
- 23. The method set forth in claim 22 wherein:
- the step of providing the second resizing signal is performed by serially providing the second resizing signal to every node in turn.
- 24. The method set forth in claim 20 wherein:
- the step of determining whether a different-sized cell buffer is needed is performed by doing steps including:
- keeping track of the total number of cells TC that the given virtual circuit has at the first edge and in the network;
- keeping track of the cumulative throughput CT of cells of the given virtual circuit during a most recent renegotiation interval; and
- requesting a window for the virtual circuit in the network which is large enough to accommodate a number of cells which is the larger of TC and the product of CT times the quotient of the round-trip time divided by the length of the most recent renegotiation.
- 25. The method set forth in claim 24 further including the step of:
- keeping track of whether a cell buffer for the given virtual circuit at the first edge overflows; and
- if the cell buffer overflows during the renegotiation interval, requesting a round-trip window in the step of requesting a window.
- 26. The method set forth in claim 24 wherein:
- when the requested window is larger than the current window, the step of requesting a window may be performed at any time at which there is no pending request for a window; and
- when the requested window is smaller than the current window, the step of requesting a window may not be performed until the end of the current renegotiation interval.
- 27. The method set forth in claim 26 wherein:
- the renegotiation interval is a small number of seconds.
- 28. The method of claim 19 wherein the step of responding to the first resizing signal includes the steps of:
- determining the rank of each virtual circuit relative to the other virtual circuits from the current size of each virtual circuit's window;
- determining a potential rank which the given virtual circuit would have if its window were the requested size;
- changing the rank of the given virtual circuit in the direction required by the potential rank by exchanging its rank with that of the next ranking virtual circuit in the required direction until the given virtual circuit either attains the potential rank or until further changing the rank of the given virtual circuit would require changing the rank of the next ranking virtual circuit to a rank such that the current size of the window of the next ranked virtual circuit is greater than the maximum window for the rank which the next ranked virtual circuit would receive as a result of the exchange, the maximum window for a rank being determined according to a function whereby the maximum window for a virtual circuit j is greater than the maximum window for a virtual circuit j+1, 1.ltoreq.j.ltoreq.k; and
- sizing the window for the given virtual circuit such that the window's size is the lesser of the size of the requested window and the size of the maximum window for the final rank attained by the given virtual circuit.
- 29. The method set forth in claim 28 wherein:
- the maximum window W.sub.i-1 to which a given virtual circuit i is entitled is determined by steps including:
- determining the average number of active virtual circuits J.sub.k-1 using the link from the node; and
- determining the maximum window W.sub.i-1 using the equation ##EQU21## , where W.sub.0 is a full-speed round-trip window.
- 30. The method set forth in claim 29 wherein:
- a virtual circuit in intermittent use has an average service time requirement .tau. in which it is in active use and an average idle time of h.tau. and
- the step of determining the average number of active virtual circuits J.sub.i-1 is performed using the recurrence ##EQU22## starting from J.sub.0 =0.
- 31. The method set forth in claim 29 wherein
- a virtual circuit in intermittent use has an average service time requirement .tau. in which it is in active use and an average idle time of h.tau. and
- the step of determining the average number of active virtual circuits J.sub.i-1 is performed using the approximation ##EQU23## for J.sub.i-1.
- 32. The method set forth in claim 30 or claim 31 wherein:
- the step of determining the maximum window size is performed using the longest round trip time of the network as .tau. and a value of h such that h.tau. is a small number of seconds.
CROSS-REFERENCE TO RELATED APPLICATION
The present patent application is a continuation-in-part of U.S. Ser. No. 07/443,975, Hahne, Kalmanek, and Morgan, METHOD AND APPARATUS FOR CONGESTION CONTROL IN A DATA NETWORK, filed Nov. 30, 1989. The present patent application contains the complete Detailed Description and Figures of U.S. Ser. No. 07/443,975. The additional disclosure begins at the section titled "Overview of Window Sizing" and includes two new FIGS. 13 and 14.
US Referenced Citations (1)
Number |
Name |
Date |
Kind |
5014265 |
Hahne et al. |
May 1991 |
|
Continuation in Parts (1)
|
Number |
Date |
Country |
Parent |
443975 |
Nov 1989 |
|