METHOD AND SYSTEM FOR CONTROLLING FLOWS IN SUB-PIPES OF COMPUTER NETWORKS

Abstract: A method and system for controlling a plurality of sub-pipes in a computer network is disclosed. The computer network includes at least one switch. The plurality of sub-pipes utilizes the switch for transmitting traffic through the network. The method and system include allowing a minimum flow to be set for each of the plurality of sub-pipes and determining whether congestion exists for the pipe. The method and system also include controlling a flow in a sub-pipe of the plurality of sub-pipes only if congestion exists. Once congestion is determined to exist, the time set to control of sub-pipes is set significantly longer than for control over individual decreases or increases of the flows in sub-pipes. The flow is controlled such that the flow for the sub-pipe may be linearly increased if the flow for the sub-pipe of the plurality of sub-pipes is less than the minimum flow. The flow is also controlled such that the flow for the sub-pipe of the plurality of sub-pipes is exponentially decreased if the flow is greater than the minimum flow. In determining whether to increase or decrease the flow in a sub-pipe, a second definition of congestion may be used. Thus the traffic through the switch is stable.

Description: METHOD AND SYSTEM FOR CONTROLLING FLOWS IN SUB-PIPES OF COMPUTER NETWORKS FIELD OF THE INVENTION The present invention relates to computer networks, and more particularly to a method and system for providing differentiated services and a fine level of control for a computer network. BACKGROUND OF THE INVENTION Driven by increasing usage of a variety of network applications, such as those involving the Internet, computer networks are of increasing interest. Figure 1 depicts conventional networks 10 and 30 which may be connected via the Internet 1. Each network 10 and 30 includes hosts 11, 12, 17, 18, 21 and 22 and 32 and 34, respectively. Each network 10 and 20 aisc includes switcnes 14, 16 and 19 and 36, respectively, and may include one or more servers such as the servers 15, 20 and 24 and 38, respectively. In addition, each network 10 and 30 may include one or more gateways 13 and 35, respectively, to the Internet 1. Not explicitly shown are routers and otr.ei portions of tne networks 10 and 30 which may also control traffic through the networks 10 and 30 and which will be considered to be inherently depicted by the switches 14, 16 and 19 and 36, respectively, ana tne networks 10 and 30 in general. In addition, the Internet 1 includes its own switches and networks that are not explicitly αepicted. A switch, such as the switch 14 or 36 and certain switches (not shown) in the Internet 1 connected to the switches such as the switches 14 or 16 are considered to be at the edge of the network 10, 30 or the Internet 1, respectively. This is because these switches send and/or receive traffic directly to and/or from entities not directly under the control of the network 10, 30 or the Internet 1. For example, a network administrator or other user of the network 10 may have control over parameters set for, use of, and performance of the network 10. However, such a network administrator typically does not control the Internet 1 and may not control the network 30. The switch 14 couples directly to tne gateway 13, which provides access to the Internet 1. This is not true of the switches 16 and 19. Thus, the switch 13 is considered to be at the edge of the network 10. Similarly, a switch (not shown) in the Internet 1 interfaces with tne gateway 13. A network administrator or other user may control performance of some or all of the Internet 1, but not that of the network 10. Sucn a switch would thus be considered to be at the edge of the Internet. Figure 2 depicts a high-level block diagram of a switch 40 which can be used in a computer network. Thus, the switch 40 may be used m the Internet 1 and for the switcnes 14, 16, 19 and 36. The switch 40 includes a switch fabric 41 coupled with blades 47, 48 and 49. Each blade 47, 48 and 49 is generally a circuit board and includes at least a network processor 42 coupled with ports 44. Thus, tne ports 44 are coupled with hosts (not shown) or other components in the network in which the switch 40 resides. The blades 47, 48 and 49 can provide traffic to tne switch fabric 41 and accept traffic from the switch fabric 41. Thus, any component connected with one of the blades 47, 48 or 49 can communicate witn another component connected to another olade 47, 48 or 49 or connected to the same blade. Figure 3A depicts another simplified block diagram of the switch 40, illustrating some of the functions performed by network processors 51 and 55. The switch 40 couples components (not shown) connected with ports A 52 with those components (not shown) connected with ports B 76. The switch 40 performs various functions including classification of data packets provided to the switch 40, transmission of data packets across the switch 40 and reassembly of packets. These functions are provided by the classifier 58, the switch fabric 64 and tne reassembler 70, respectively. The classifier 58 classifies packets whicn are provided to it and breaks each packet up into convenient-sized portions, which will be termed cells. The switch fabric 64 is a matrix of connections through which the cells are transmitted on their way through the switch 40. The reassembler 70 reassembles the cells into the appropriate packets. The packets can then be provided to the appropriate port of the ports B 76, and output to the destination hosts. The classifier 54 may be part of one network processor 51, while the reassembler 70 may be part of another network processor 55. The portions of the network processors 51 and 55 depicted perform functions for traffic traveling from ports A 52 and to ports B 76, respectively. However, the network processors 51 and 55 also perform functions for traffic traveling from ports B 76 and to ports A 52, respectively. Thus, each of the network processors 51 and 55 can perform classification and reassembly functions. Due to bottlenecks in transferring traffic across the switch 40, data pacKets may oe required to wait prior to execution of the c-assification, transmission and reassembly functions. As a result, queues 56, 62, 68 and 74 may be provided. Coupled to the queues 56, 62, 68 and 74 are enqueuing mecnamsms 54, 60, 66 and 72. The enqueuing mechanisms 54, 60, 66 and 72 place the packets or cells into the corresponding queues 56, 62, 68 and 74 and can provide a notification which is sent back to the host from whicn the packet originated. Although the queues 56, 62, 68 and 74 are depicted separately, one of ordinary skill m the art will readily realize that some or a_-_ of the queues 56, 62, 68 and 74 may be part of the same physical memory resource. Figure 3B depicts one such switch 40' . Many of the components of tne switcn 40' are analogous to components of the switch 40. Such components are, therefore, labeled similarly. For example, the ports A 52' in the switch 40' correspond to the ports A 52 in tne switch 40. In tne switch 40', the queue 54 and tne queue 62 share a single memory resource 59. Similarly, the queue 68 and the queue 74 are part of another single memory resource 71. Thus, in the switcn 40', the queues 56, 62, 68 and 74 are log-Leal queues partitioned from the memory resources 59 and 71. Currently, most conventional switches 40 treat flows of traffic across the network in which the switch is used the same. There is, however, a trend toward providing customers with different services based, for example, on tne price paid by a consumer for service. A consumer may wish to pay more to ensure a faster response or to ensure that tne traffic for the customer will be transmitted even when traffic for other customers is dropped due to congestion. Thus, the concept of differentiated services has been developed. Differentiated services can provide different levels of service, or flows of traffic tnrough the network, for different customers . DiffServ is an emerging Internet Engineering Task Force (IETE) standard for providing differentiated services (see IETF RFC 2475 and related RFCs) . DiffServ is based on behavior aggregate flows. A behavior aggregate flow can be viewed as a pipeline from one edge of the network to another edge of the network. Within each behavior aggregate flow, there could be hundreds of sessions between individual hosts. However, DiffServ is unconcerned with sessions within a behavior aggregate flow. Instead, DiffServ is concerned with allocation of bandwidth between the Joehavior aggregate flows. According to DiffServ, excess bandwidth is to be allocated fairly between behavior aggregate flows. Furthermore, DiffServ provides criteria, discussed below, for measuring the level of service provided to each behavior aggregate flow. One conventional mecnanism for providing different levels of services utilizes a combination of weights and a queue level to provide different levels of services, for example provided by Cisco Systems, Inc. of San Jose, California. Figure 4 depicts such a conventional method 80. The queue level thresholds and weights are set, via step 82. Typically, the queue level thresholds are set in step 82 by a network administrator tuning or "turning knoos . " The weights can be set for different pipes, or flows, through a particular queue, switch 40 or network processor 42. Thus, the weights are typically set for different behavior aggregate flows. The queue levels are observed, typically at tne end of a period of time known as an epoch, via step 84. The flows for the pipes are then changed based on how the queue level compares to the queue level threshold and on the weights, via step 86. Flows for pipes having a higher weight undergo a greater change in step 86. The flow for a pipe determines what fraction of traffic offered to a queue, such as the queue 56, by the pipe will be transmitted to the queue 56 by the corresponding enqueuing mechanism, such as the enqueuing mechanism 54. Traffic is thus transmitted to the queue or dropped based on the flows, via step 88. A network administrator then determines whether the desired levels of service are being met, via step 90. If so, the network administrator has accomplished congestion avoidance. However, if the desired level of service is not achieved then the queue level thresholds and, possibly, the weights are reset, via step 82 and the method 80 repeats. Further information relating to the conventional method 80 can be found at http : //www. cisco. com/univercd/cc/td/doc/product/sof ware/ IOS120/ 12cccr/qos _c/depart2 /σcconman . htm. Although the conventional method 80 functions, one of ordinary skill in the art will readily realize that it is difficult to determine what effect changing the queue level thresholds will have on particular pipes through the network. Thus, the network administrator using the method 80 may have to engage in a great deal of experimentation before reaching the desired flow rate for different customers, or pipes (behavior aggregate flows) in a computer network. Furthermore, the method 80 indirectly operates on parameters that are typically used to measure the quality of service. Queue levels are not a direct measure of criteria typically used for service. Typically, for example in DiffServ (see IETF RFC 2475 and related RFCs), levels of service are measured oy four parameters: drop rate, oandwidtn, latency ana fitter. The orop rate is the percentage of traffic that is cropped as it flows across a switch. The bandwidth of a benavior aggregate flow is a measure of the amount of traffic for tne oenavior aggregate flow which crosses the switcn and reaches its destination. Latency is the delay incurred in sending traffic across tne network. Jitter is the variation of latency with time. The queue levels are net considered to be a direct measure of quality of service. Thus, the method 80 does not directly address any of tne criteria for quality of service. Thus, it is more difficult for a network administrator to utilize the method 80 for providing different levels of service. In addition, the method 80 controls flows for benavior aggregate flows. The method 30 is unable to control traffic at a finer level than this. Otner conventional method for controlling traffic utilizes flows, minimum flows rates, weights, priorities, thresholds and a signal indicating that excess bandwidth, or ability to transmit traffic, exists m order to control flows. However, conventional methods are based upon intuition, and, while seemingly cogent, are not actually supported oy a foundation from control theory. It is not clear that this conventional method is a stable mechanism for controlling traffic through the switch. Consequently, such conventional methods may not adequately control traffic through the switcn 40. In addition, another IETF proposal is known as IntServ, for integrated services. In IntServ, every flow in a network is controlled at all times. Thus, IntServ proposes controlling each individual flow within each behavior aggregate flow, or pipe, of the network. As a result, IntServ can be used to provide differentiated services. However, controlling all flows at all times rapidly becomes unworkable. In particular, the number of flows in a network rapidly grows as the network grows and as traffic through the network grows. For most networks, controlling each flow in the network at all times consumes an extremely large amount of resources and is difficult to implement. Consequently, IntServ can not adequately control traffic througn a network. Accordingly, what is needed is a system and method for Better providing differentiated services and controlling flows at a fine level. The present invention addresses sucn a need. DISCLOSURE OF THE INVENTION The present invention provides a method and system for controlling a plurality of sub-pipes m a computer network. The computer network includes at least one switch. The plurality of sub-pipes utilizes the switcn for transmitting traffic through the network. The method and system comprise allowing a minimum flow to be set for each of tne plurality of sup-pipes and determining whether congestion exists for the pipe. The method and system also comprise controlling a flow in a sub-pipe of tne plurality of sub-pipes only if congestion exists. The flow s controlled such that tne flow for the sub-pipe may be linearly increased, or left unchanged, if the flow for the sub-pipe of the plurality of suo-pipes is less tnan tne minimum flow. The flow is also controlled such tr.at the flow for the sub-pipe of the plurality of sub-pipes is exponentιal_y decreased f tne flew is greater than the minimum flow. Thus the traffic through the switcn is stable. According to the system and method disclosed herein, the present invention provides a stable, workable mechanism for controlling traffic through a network at a fine level while allowing for differentiated services. In addition, the present invention can be used to control traffic tnrough the network at the edge of the network, thereby allowing redundant controls within the network to be eliminated. BRIEF DESCRIPTION OF THE DRAWINGS A preferred emoodiment of the present invention will now oe descrioeα with reference to the following drawings: Figure 1 is a block diagram of computer networks according to the prior art; Figure 2 is a high-level block diagram of a switch according to the prior art; Figure 3A is a simplified block diagram of a switch according to the prior art; Figure 3B is a simplified block diagram of another switch according to the prior art; Figure d is a flow cnart a conventional method for providing different levels of service through a switch according to the prior art; Fxgure 5 is a diagram dep_ctmg networks in which the present invention could be used; Figure 6 is a high-level f_ow chart depicting a method in accordance with the present invention for controlling traffic and providing different levels of service in sub-pipes; Figures 7A and 7B depict a nore detailed flow chart depicting a method in accordance with tne present invention for controlling traffJ c and providing different levels of service m sub-pipes; Figure 8 is a detailed flo. cnart depicting a first embodiment of a method m accordance with the present invention for determining whether congestion exists in a pipe; Figure 9 is a detailed f oΛ chart depicting a second embodiment of a method in accordance with the present invention for determining whether congestion exists n a pipe; Figure 10 is a detailed f cw chart depicting a third embodiment of a method in accordance with the present invention for determining whether congestion exists in a pipe; and Figure 11 is a detailed fiow chart depicting a fourth embodiment of a method m accordance witn the present invention for determining whether congestion exists in a pipe. DESCRIPTION OF THE PREFERRED EMBODIMENT The present invention will De described in terms of a particular system and particular components. However, one of ordinary skill m the art will readily recognize that this method and system will operate effectively for otner components in a computer network. The present invention will also be described m the context of a queue. However, one of ordinary skill n the art will readily recognize that the present invention functions effectively when queues are logical queues part of a single memory resource or when t-e queues are part of separate memory resources. Furtnermore, the present invention functions analogously when controlling flows into a subqueue of a particular logical queue. The present invention will also be discussed in terms of controlling network flows by proactively discarding packets. However, one of ordinary skill in the art will readily realize that the method and system control the rate of packets arriving in a queue and that a signal sent to a source and dictating a fraction of packets to be sent, with others held at the source, would be effective. Therefore, control of a transmit fraction is analogous control of a rate at which packets are offered, for example by one or more sources. Furthermore, the present invention will be described in terms of pipes and sub-pipes to a queue. However, one of ordinary skill in the art will readily realize that the pipes could be behavior aggregate flows of different or the same class or any offered rate into a particular component which utilizes a queue for storage. The present invention will also be described in the context of controlling the sub-pipes of a particular pipe. However, one of ordinary skill in the art will readily realize that the present invention can be used to control the flows in sub-pipes of a plurality of pipes. To more particularly illustrate the method and system in accordance with the present invention, refer now to Figure 5, depicting preferred embodiments networks 10' and 30' and the Internet 1' with which the present invention may be used. The networks 10' and 30' and the Internet 1' are substantially the same as the networks 10 and 30 and the Internet 1 depicted in Figure 1. However, also shown are control points 25, 26, 27 and 37. The control points 25, 26, 27 and 37 are preferably general-purpose computers coupled with switches 14', 16', 19' and 36'. The control points 25, 26, 27 and 37 preferably perform functions relating matrices and selection of bits to be used in testing filter rules, as discussed below. The switches 14', 16', 19' and 36' preferably include the software managed decision trees (not shown in Figure 5), as discussed below, and determine whether a key matches one or more of the filter rules using the decision trees. In addition, the switches 14', 16', 19' and 36' are preferably the same as the switches 40 and 40' depicted in Figures 2, 3A and 3B. Although the networks 10', 30' and the Internet 1' are preferably used, the networks 10 and 30 and the Internet 1 could also be used in conjunction with the present invention. To more particularly illustrate the method and system in accordance with the present invention, refer now to Figure 6, depicting one embodiment of a method 100 in accordance with the present invention. The method 100 is preferably accomplished using the apparatus disclosed in U.S. Patent Application Serial No. 09/384,691, filed on 27 August 1999, entitled "NETWORK PROCESSING COMPLEX AND METHODS" and assigned to the assignee of tne present application. The method 100 can Pe used witn the switch 40 or 40' shown m Figures 2, 3A and 3B. Thus, tne method 100 can be carried out m a switcn 40 having multiple blades 47, 48 and 49 and multiple ports on each olaoe 47, 48 or 49. For tne purposes of clarity, the method 100 will be explained in conjunction with the queue 74 and enqueuing mechanism 72 depicted in Figure 3A. However, the method 100 can be used with otner queues, such as the queues 56, 62, 68, 56', 62', 68' and 74'. The method 100 can also oe useα with other enqueuing mechanisms, such as the enqueuing mecnanism.s 54, 60, 66, 54', 60', 66' and 72' . In a preferred embodiment, tne method 100 is used in a system in which multiple queues are part of tne same memory resource. However, nothing prevents tne method 100 from oeir.g used in another system in which each que-.e has a separate memory resource. The method 100 is preferaoly used in a switcn residing at tne edge of the network, such as the switch 14 or 14' depicting in Figures 1 and 5. In addition, the method 100 is preferably only used n switcnes residing at the edge of the network, not switches in the interior of the network. In addition, although the method 100 s preferaoly used in controlling sub-pipes to a queue and performed using an enqueuing mechanism, nothing prevents the use of the method 100 Dy other portions of the switch. Tne method 100 is used to control the flows for sub-pipes in a network. Eacn sup-pipe is part of a pipe. The pipes also flow through the network. Thus, a p pe for a particular network can be considered to terminate at an edge of the network. Preferably, each pipe is a benavior aggregate flow. A sub-pipe is some combination of the flows in the pipe. Thus, a sub-pipe can also be considered to terminate at the edge of the network. In other words, pipes and sub-pipes are defined within the network. A sub-pipe could include a single flow or could include some combination of flows in the pipe. The method 100 is also preferably used only at switcnes the edges of the network, where the sub-pipes and, therefore, the pipe terminates. However, the method 100 could also be used in switches in tne interior of the network. Referring to Figures 3A and 6, the minimum flows for sub-pipes of certain pipes providing traffic to the switch 40 are set, via step 102. The minimum flow set in step 102 is preferably the minimum flow guaranteed to be provided for the sub-pipe. Thus, the minimum flow set in step 102 corresponds to the amount of bandwidth the sub-pipe will always be allowed to consume. Thus, tne minimum flows are preferably set such that n eacn sub-pipe carries a flow equal to tne minimum flow, the pipe wil- not be congested and traffic w ll travel through the switch and the network wittiin desired parameters. When traffic through the sub-pipe is lignt, the sub-pipe may carry less traffic than tne minimum flow. Sub-pipes might also be allowed to carry more traffic tnan the minimum flow. Also in a preferred embodiment, a maximum poss ole flow can also be set, possibly for use against denial of service attacks. In a preferred embodiment, the minimum flows are set for the sub-pipes entering a particular queue, such as one queue 74. In addition, each suo-pipe preferably offers traffic to the queue 74 at an offered rate, I . ,(t, , where I denotes the ι sub-pipe. Depending on different factors, some of tne traffic may be dropped in lieu of entering the queue. The transmit fraction for the ι th sub-pipe, T x (t), is the fraction of traffic from the i "1" sub-pipe which is transmitted to the queue 74' . Thus, the instantaneous flow for the ι th sub-pipe is f x (t) = I-(t)*T (t) . It is determined whether the pipes for which the sub-pipes may be controlled are congested, via step 104. A particular pipe can be determined to be congested based on a variety of factors. These factors are typically evaluated based on the packets, or traffic, flowing through the pipe. Note that packets as used herein refer to a variety of types of data packets including, but not limited to Ethernet packets (usually termed frames), ATM packets (usually termed cells) and IP packets (usually termed packets) . Some of the factors which may determine whether or not a pipe is congested can include tne time taken for a particular packet to be sent from a sender to a recipient and for the recipient to send back a confirmation, the number of synchronization packets, round trip time (RTT) and an explicit congestion notification (ECN) , which may be provided for packets, as discussed below with respect to Figures 8-11. Referring back to Figure 6, in general, a pipe may be considered to be congested when the pipe carries sufficient traffic that packets are delayed or dropped at a rate that is considered to be unacceptable by a user such as a network administrator. If it is determined that congestion does not exist, then the flows m the sub-pipes are not controlled, via step 108. Thus, the switch 40 need not expend resources in attempting to control flows in sub-pipes when the performance of the pipes is considered acceptable. If, however, it is determined that congestion does exist, then the flows for sub-pipes are controlled for a specified amount of time, T, via step 106. The specified amount of time T for sub-pipe control is typically many multiples (perhaps one thousand or one million) of tne time increment Dt for updating transmit fractions. Thus, during T, if a congestion signal currently indicates congestion, then flows m those sub-pipes above their guaranteed minimum rates are reduced exponentially so long as congestion persists and tne flows remain above the guaranteed minimum rates. In addition, note the distinction between T, which refers to the time interval for controlling flows in sub-pipes, and ι; which refers to the transmit fraction for a particular sub-pipe. In a preferred embodiment, step 106 induces exponentially decreasing tne flows for sub-pipes naving flows tr.at are greater than the corresponding minimum flows set in step 102. Tnus, a flow for a sub-pipe is decreased m proportion to the sub-pipe flow value. Also m a preferred embodiment, step 106 can include leaving unchanged, at least initially, the flows for sub-pipes having flows that are less tnari or equal to the corresponding minimum flows. However, during the time interval T, if congestion momentarily is not indicated, then flows in tnose sub-pipes below their maximum rates are allowed to increase linearly. In particular, as the sub-pipes continue to be controlled, those sub-pipes having flows below their set minimum are left unchanged or allowed to linearly increase, those sub-pipes above their maximum flow, if set, are forced to decrease, and those sub-pipes having flows cetween their minimum and maximum flows are allowed to linearly increase or forced to exponentially decrease. This is particularly true as the flows continue to oe controlled in step 106. Because the flows are exponentially decreased and may be linearly increased, the flows for the sub-pipes are controlled in a stable manner. Step 106 preferaoly includes setting the transmit fraction for the sub-pipes to be controlled. Also in step 106, tne number of packets for a sub-pipe entering the queue is controlled using tne transmit fraction. Thus, the method 100 control flows m sub-pipes of a pipe only when that pipe is congested. As a result, the method 100 does not unnecessarily consume resources when congestion does not exist and, therefore, traffic flows through a network as desired. Furthermore, because the metnod 100 can linear] y increase and exponentially decrease the flows m suo-pipes, control of flows through the sub-pipes will be stable. The method 100 is also preferably implemented only at the edge of a network, sucn as n the switch 14' of the network 10' depicted in Figure 5. However, pipes and, therefore, sub-pipes flow througn the entire network 10' . Thus, the method 100 of Figure 6 controls congestion for tne entire pipe of a network by controlling the sub-pipes at the edge of the network. The method 100 need not be implemented at other points in the network. Thus, redundant control of sub-pipes, which is computationally expensive and unnecessary, can be avoided. However, tne me .nod 100 can be used in conjunction with otner mechanisms for controlling traffic in a network, even when such otner mechanisms are implemented in the core and/or the edge of the network. Figures 7A and 7B depict a more detailed flow-chart of one embodiment of a method 110 for controlling flows in sub-pipes in accordance with tne present invention. The method 110 preferably commences after the minimum flows for the sub-pipes to be controlled have been set. The method 110 will also be described in the context of controlling the flows for sub-pipes of a particular pipe. However, one of ordinary skill in the art will readily realize that the method 110 can be extended for use with multiple pipes. In addition, the method 110 is similar to the method 100 and thus may Pe carried out using the same apparatus. After the minimum flows for the sup-pipes are set, constants are computed for each of the sub-pipes based on the minimum and, if set, the maximum flows for the sub-pipe, via step 112. For each sub-pipe, i, a constant C λ and a constant D, are computed in step 112. The constant C, is used for linearly increasing tne flow for sub-pipe i, as discussed below. Similarly, the constant D α is used for exponentially decreasing the flow for the sub-pipe i, as discussed below. In a preferred embodiment, the constants C 1 and D_ are both based on the minimum flows. In an alternate embodiment, weights for different sub-pipes can also be provided. In such a case, the constant d and Dj may also be oalculated based on the weights provided. Once the constants are determined, traffic is allowed to flow through the sub-pipes to the queue 74, via step 114. It is then determined whether the pipe is congested, via step 116. In a preferred embodiment, step 116 is carried out through the use of a pipe congestion level (PCL) signal for each pipe being monitored. The PCL for a pipe can be between zero and one. The closer tne PCL is to one, the more congested the pipe is. Thus, a threshold between zero and one might be set as the threshold for congestion. Step 116 would determine the PCL for the pipe. If the PCL for a pipe is less tnan or equal to this threshold, then step 116 would indicate that congestion does not exist. If the PCL is greater than the threshold, then step 116 would determine that congestion exists in the pipe. If there is no congestion, then it is determined whether an epoch, a time period over which control may be desired to be exercised, has ended, via step 134. Thus, if there is no congestion, then the flows m sub-pipes may not be controlled. If it is determined in step 116 that congestion exists, tr.eπ tne flows in suo-pipes are controlled, via steps 118 througn 132. Tne queue level, an instantaneous excess Dandwidth signal, B, with binary value 0 or 1, and the excess bandwidth value, E, a number with value n the mterva_ r 0,l], are determined for the prior epoch if not already available, via step 118. In a preferred embodiment, tne flews of the sub-pipes for the prior epoch are also made available in step 118. In other words, step 118 determines tne quantities necessary to update the system m the metncc 110. In a preferred embodiment, step 118 is usually unnecessary because the aoove-mentioned quantities were determined using the method 110 m a previous epoch. The queue level is the level of the queue into which tne suo-pipes are flowing. The queue level may ce defined as a fraction of tne maximum queue level. For example, the queue _evel may be the fractional level of fullness for the queue 74 of Figure 3A. Referring oack to Figures 7A and 7B, en a preferred emoodiment, the queue level determined s tne level for tne entire memory resource. However, nothing prevents the queue level being determined for a logical queue cr subqueue. The instantaneous excess bandwidth signal, B with binary value "0" or "1" and excess bandwidth value, E, a number with value in tne interval [0,1] are discussed below. It is determined whether excess bandwidtn exists, via step 120. In one embodiment, excess bandwidth is determined to exist only if the queue level for the queue, such as the queue 74, is zero, or is below a small value or is decreasing. However, preferably the determination of whetner excess bandwidth exists can also depend upon round trip time, or other parameter, or a single determination of the change in such a measurement. These other parameters can also be used to measure congestion as describee below. Thus, in a preferred embodiment, two definitions of congestion can be considered to be used. The first definition of congestion, in step 116, is used to trigger control over the flows of sub-pipes . The second definition of congestion can be used m step 120 to determine whether excess bandwidth exists. The second definition of congestion used m step 120 may be different from the first definition of congestion. For example, the second definition of congestion m step 120 may consider congestion to exist at a lower flow rate than the first definition of congestion used m step 116. In addition, the definition of excess bandwidth, as well as the second definition of congestion, can change over the time interval, T. For example, early in the time interval T, the definition of excess bandwidtn could include a measurement of congestion to ensure that the flows in sub-pipes will be controlled to reduce congestion. Later m the time interval T, the definition of excess bandwidth could change to exclude congest-on, raise tne flow required tor congestion to oe considered to ex_st and/or rely only on other parameters, such as tne queue _evel. In part-.cu_.ar, the difference between tne queue ±evel anc maximum puffer capacity (called headroom) could be used to define congestion. However, nothing prevents the use of another criteria for determining whether excess oandwidth exists. In general, the instantaneous excess oandwictr siσna. indicates whether during the previous epoch additiona- resources existed m the switch 40, or throughout the pipe, to handle additional traffic If excess bandwidth does not exist, then an instantaneous excess oancwidtn signal, B, is set to zero, via step 122. The signal B is termed instantaneous because it is based upon a single measurement of the σueue leve-., round trip time, or other parameter, or a sing_e determination or the change in such a measurement. Thus, because the definition of excess bancwidtn can depend upon congestion, tne instantaneous excess oanαw-αth s gna-., 3, can also depend upon congestion as used m determining whether excess bandwidth exists. An excess bandwidth value, E, is then exponentially increased toward one (e.g. if no congestion) or decreased toward zero (e.g. if congestion), via step 124. In a preferred embodiment, tne excess oandwidth value is an exponentially weighted average of tne instantaneous excess bandwidth signal. Thus, the excess bandwidth value provides a measure of available resources over previous epochs . In addition, because the excess bandwidth value, E, depends upon the instantaneous excess bandwidth signal, B, the excess bandwidth value, Ξ, may also depend upon the existence of congestion, as used in determm_ng wnetne 1 " excess bandwidth exists. If it __s determined in step 120 that excess bandwidth does exist, tnen the instantaneous excess bandwidtn value is set to one, via step 126. The excess bandwidth value is then set to an exponentially weignted average of the instantaneous excess bandwidth signal, via step 128. In a preferred embodiment, the excess bandwidth value is a first constant multiplied by a previous excess oanowidth value plus a second constant multiplied oy the instantaneous excess bandwidth value. The values of tne instantaneous excess bandwidth signal, B, and the excess bandwidtn value, E, set in steps 122 and 124 or steps 126 and 128 will preferao-_y be used in a next epocn to update control of the flows for the sub-pipes. In a preferred embodiment, the transmit fraction for eacn sub-pipe i is set, via step 130, in parallel witn the steps 120 through 128. However, in an alternate emoodiment, the transmit fraction can be updated serially with the -.nstantaneous excess bandwidth signal, B, and the excess bandwidth value, E. If the flow for the pipe is above a maximum level, t hen the ilo s exponer.t-.aliy decreased, preferadly by setting tne transmit fraction to be 31 32 multiplied by tne previous transm.t fraction. If the flow for tne suo-pipe is not above a maximum, tnen the transmit fraction is altered as follows. If the previous instantaneous excess bandwidth signal, B, was one (excess bandwidth available,, tnen step 130 would set tne transmit fraction for each sub-pipe i based on the previous transmit fraction, the constant d, and the excess bandwidth value. Preferably, the transmit fraction set in step 130 for excess bandwidth previously existing is: T.(t + Dt) = d(t) + d-Ξ(t)Dt Where : Dt = Length of an epocr (time since transmit fraction last calculated) Preferably, the flow -"its are set so that Dt and the maximum possible queue level, Qj- ax , are one. Thus, the transmit fraction for a sub-pipe may linearly increase _f excess bandwidth exists. Furtnermore, the transmit fraction may continue to linearly increase as long as excess bandwidth continues to exist. However, it is noted that in a preferred embodiment, wnen the sub-pipes are first controlled (when it s first determined that congestion exists in the pipe) there will generally be no excess bandwidth. Consequently, tne flows for sub-pipes will net be increased. Thus, the αecis-or to control sub-pipes, made in step 116, is based upon one definition of tne onset of congestion m the pipe. The sub-pipe control is enforced for a time interval T that is generally many multiples of the time increment for an epocn, Dt . Initially, during T, the flows for the sub-pipes are likely to be forced to decrease in response to the above mechanism based upon, m general, a second definition of congestion within the pipe. This second definition of congestion is used in determining whether excess Danowidth exists, at least during the early stages of the time interval T. However, there may be moments during the interval T when sub-pipe flow rates actually increase. This is particularly true near the end of the time interval T, after a certain number of epochs have expired. Thus, one definition of congestion may be used to commence control of flows n the sub-pipes. A second definition of congestion may be used n defining excess bandwidth to allow the instantaneous excess bandwidth signal, B, to be zero or one, allowing flows m sub-pipes to both increase and decrease during the t me interval T. If excess bandwidth did not exist in the previous epoch (B was zero) and the sub-pipe carries more traffic than its minimum flow, then in step 130 the transmit fraction, d(t + Dt) for a sub-pipe I is set based on a previous transmit fraction for the suo-pipe, T x (t), D x , and the previous f ow for the suo-p-pe, f ^ ' , . The transmit fraction for B = 0 for a suo-pipe carrying a higher flow than its minimum f_ow -_s prererab-y given py: T (t + Dt) = d(t) - D^f^t) In addition, when B = 0, the transmit fraction for a sub-pipe carrying its minimum flow or less is preferably given by: d (t + Dt) = d(t) Thus, tne transmit fraction set in step 130 ensures that the transmit fraction for sub-pipes carrying greater than their minimum flows and, therefore, the flows for such sub-pipes exponentially decrease as long as excess bandwidth continues not to exist. The constants d ana D x are preferably based on minimum flow values. In addition, m a preferred embodiment, when control is first imposed, excess oandwidth w ll not exist because of the congestion in the pipe. Consequently, the flows for sub-pipes exceeding tneir minimum flows will be exponentially decreased through the use of tne transmit fraction. Flows for sub-pipes not exceeding their minimum flows will be left uncnanged when excess bandwidth is not available. Congestion can thus be controlled because tne minimum values set for the sub-pipes are preferably set such that if each sub-pipe carries a flow equal to the minimum flow congestion will not exist. Thus, for congestion to exist, at least one sub-pipe carries a fiow whicn is greater than its minimum flow. Consequently, exponentially reducing the flows for such sub-pipes snould remedy congestion. As discussed above, when excess bandwidth does become available, the flows for all suc-pipes may be linearly increased. Thus, congestion may oe controlled ana the flows for sub-pipes regulated in a stable manner. Using tne transmit fraction calculated in step 130, packets passing through the switch 40 are transmitted or dropped during the epoch, via step 132. Packets are preferably discarded by not allowing the packets to enter a particular queue, such as the queue 74. In a preferred embodiment, packets are dropped based not only on the transmit fraction for the sub-pipe in which they are flowing, but also on the priority of each packet. In another embodiment, the packets are dropped randomly. In addition, instead of using the transmit fraction, a discard fraction can be used. The discard fraction for a sub-pipe is one minus the transmit fraction. Thus, the discard fraction indicates tne fraction of packets that should be dropped m order to obtain the desired transmit fraction, or traffic flow, for a particular sub-pipe. It -.3 determined whether the epoch is completed, via step 134. _f not, tnen traffic continues to be transmitted based on the same transmit fractions, via step 132. If the epoch nas finished, then the method repeats commencing with step 116. However, m one embodiment when the method 110 repeats, step 116 (determining whether congestion exists) may oe skippeα for a particular period of time or number of epochs. Skipping step 116 allows control of the flows m sup-pipes to continue for some amount of time after congestion no -onger exists. In other words, skipping step 116 al-.ows the time set to control the flows in sub-pipes, T, to expire. In such an embodiment, greater control over the sub-pipes is allowed, and the flows in suo-pipes are allowed to increase to ensure tnat excess banαwidtn is allocated. The -.ength of an epoch, Dt, over which the method 110 is performed _-s preferacly set prior to commencement of the method 110. However, n an alternate embodiment, the length of an epoch could change. In addition, the time scale for an epoch is preferably relatively long, perhaps or. the order of one to ten milliseconds or more. The length of an epoch snoulc be set in order to account for de-ays between ends of the pipe and sub-pipes. This is because control over the sub-pipes in the method 110 can change at the end of an epoch, depending on whether congestion exists and whether the excess oandwidth is available. In order to ensure that the contro- performed m an epoch has an opportunity to clear congestion in the pipe and that the appropriate feedback can be provided to the method 100 or 110, a sufficient time snould be allowed for a packet to reach its destination and provide a notification, if any, as to whether tne destination has been reached. In other words, the length of an epoch should oe large enough to allow the change in the transmit fraction to take effect and provide the system with information as to the affects of the transmit fraction. Because the method 110 increases flows linearly and decreases flews exponentially, the method 110 functions similarly to the method 100 and provides many of the same benefits. Thus, the method 110 can ensure tnat the traffic through sub-pipes can automatically and asymptotically reach stability. Furthermore, the increase and decrease in the flow for each pipe will depend upon the minimum flow for the pipe and the previous flow for the pipe. Thus, different pipes may have different levels of flow, or service. Consequently, the method 110 can produce stable behavior, allocate excess bandwidth fairly and provide differentiated services. Note, however, that although the method 110 allocates excess bandwidth fairly, the flows through sub-pipes and congestion in the pipe can be controlled without allowing for fair allocation of resources. In order to provide different levels of services for different sub-pipes, or customers, all a network administrator or other user must do is set different minimum flows and, if desired, the maximum flows for customers depending upon tne level of service αesired for the particular customer. Thus, the method 110 can be used in a variety of applications, such as in networks using DiffServ, by internet service providers desiring to provide different levels of service to different customers or for different media. In addition, the metnods 100 and 110 might be used only at the edges of tne network controlled using th<=> methods 100 or 110. For example, for the networK 10' , the metnods 100 ano 110 may be performed only at the switch 14', that is at the -.ngress of a pipe. Thus, the control of flows through sub-pipes, which is relatively computationally expensive, need not oe carried out throughout tne entire network 10' . However, pipes and sup-pipes in the network 10' are generally defined through tne entire network 10'. Thus, by controlling tne flows for sub-pipes only at the edge, it can be ensured that the corresponding pipe is not congested throughout the entire network 10' . Thus, congestion is controlled without having to perform redundant calculations and controls on sub-pipes throughout the network. However, otner, preferably simpler, methods of control might be used in conjunction with the methods 100 and 110, both in the same switch and m other switches of the network. For example a method for controlling the flows in pipes is described in co-pending PCT Patent Application Serial No. GB00/04410 and entitled "METHOD AND SYSTEM FOR CONTROLLING TRANSMISSION OF PACKETS IN COMPUTER NETWORKS" and assigned to tne assignee of the present invention. The method for controlling the flows in pipes described m the anove-mentioned co-pending application could be used with the present invention. Thus, at least two levels of control could be provided, a finer level for sub-pipes, and a coarser level for pipes. A variety of mechanisms can ce used m determining whether congestion exists in steps 104 and 116 of the methods 100 and 110, respectively, depicted in Figures 6, 7A and 7B, respectively. Figures 8-11 depict embodiments of such methods for determining whether congestion exists in a particular pipe. However, the methods depicted m Figures 8-11 could be used for multiple pipes, could be combined, and other methods (not shown) could be used. In addition, the methods depicted m Figures 8-11 could be used for the second definition of congestion that may be used m step 120 of the method 110 for determining whether excess bandwidth exists. F-gure 8 depicts one embodiment of a method 140 for determining whether congestion exists. The method 140 utilizes ECN. ECN _s described in IETF proposal RFC 2481 that is appropriate for protocols, such as TCP. In ECN, two unused bits -.n a packet are employed to indicate congestion. A switch which -.s ECN enabled and through which the packet travels sets the first bit. The ECN enabled switch through which tne packet passes sets the second bit if the ECN enabled switch is congested. Thus, tre combination of bits indicates whether at least one switch m the sub-pioe through which the packet flows is congested. These oits are typically set as tne packet travels from its source to its destination. When the recipient (destination ) sends back an acknowledgement, the resultant of tne two bits are saved and provided back to the source (sender) . Thus, ECN as represented by the two bits can be used to determine whether the pioe is congested . In particular, some measure of the number of packets wh-_ch ECN indicates passed through congested switches is determined, via step 142. In one embodiment, step 142 includes determining the fraction of packets traveling through the pipe which ECN indicates passed through a congested switch. This fraction coulα be used as the PCL, discussed above. It is then determined whether congestion exists as defined for ECN, via step 144. In one empodiment, step 144 includes determining whether tne fraction of packets which ECN indicates passed through a congested switch is greater than some threshold. However, some other statistical measure of congestion using ECN can oe employed. If it is determined that the threshold is not exceeded, then the pipe is defined to not be congested, via step 146. If it is determined that the threshold is exceeded, then the pipe s defined to be congested, via step 148. Thus, it can be determined using the method 140 whether or not the pipe is congested. Figure 9 depicts another embodiment of a method 150 for determining whether a pipe -s congested. The method 150 utilizes synchronization (SYN) packets. In TCP, a SYN pac et can indicate a start of a session Petween two components, such as hosts. When a packet for a session does not reach its destination, for example because the packet is dropped due to congestion, a new session is started oetween the components. Thus, a new SYN packet will be issued. The SYN packet can thus be used to measure congestion in a pipe because they can be used to measure the number of starts and restarts of sessions.. Some measure of the nuπuoer of SYN packets in the pipe is determined, via step 152. In one embodiment, step 152 includes determining the fraction of SYN packets to the total number of packets traveling through tne pipe. Th-_s fraction could be used as the PCL, discussed above. It is then determined whether congestion exists as defined for the SYN packets, via step 154. In one embodiment, step 154 includes determining whether the 5 fraction of SYN pacKets to the total number of packets is greater than some threshold, however, some other statistical measure of congestion using SYN packets can be employed. If it is determined that the threshold is not exceeded, tnen the pipe is defined to not be congested, via step 156. If it is determined that the threshold is exceeded, then the pipe is -.0 defined to be congested, via step 158. Thus, it can be determined using the method 150 wnetner or not the pipe is congested. Figure 10 deo-_cts another embodiment of a method 160 for determining whether a pipe is congested. The method 160 utilizes the round trip time 15 (RTT) for packets to travel between their source (sender) and destination (recipient) and to provide a notification back to the source that the packet nas been received. When a packet for a session does not reach its destination, for example because the packet _s dropped due to congestion, or when the packet takes a long time to reach the destination, the RTT 20 will be long. Longer RTT indicates more congestion in the p pe. Thus, the length of RTT can oe used to measure congestion in a pipe. In addition, the time from sender to recipient, rather than the RTT could oe used. Some statistical measure of the RTT for packets in the pipe is 25 determined, via step 162. In one embodiment, step 162 could include determining the fraction of packets naving a RTT longer than some average value. However, nothing prevents the use of another statistical measure of RTT. This statistical measure of RTT could be used to determine the PCL, discussed above. It is then determined whether congestion exists as 0 defined for the RTT, for example by determining whether the measure of RTT is above a threshold, via step 164. If it is determined that the measure of RTT indicates that the pipe is not congested, then the pipe is defined to not be congested, via step 166. If it is determined that the measure of the RTT indicates that the pipe is congested, then the pipe is defined to 5 be congested, via step 168. Thus, it can be determined using the method 160 whether or not the pipe is congested. Figure 11 depicts an embodiment of a method 170 in which a combination of ECN, SYN packets and RTT could be used to determine whether 0 a pipe is congested. A measure of the number of packets which ECN indicates passed tnrpugh congested switches is determined, v a step 172. In one embodiment, step 172 includes determining the fraction of packets that ECN indicates passed througn a congested switch. A measure of tne numoer of SYN packets m the pipe is determined, via step 174. In one empodiment, step 174 includes determining tne fraction of SYN packets to the total number of packets traveling tnro-gh the pipe. Some statistical measure of tne RTT for packets in the pipe is determined, via step 176. The measurements for ECN, SYN packets and RTT are then combined to provide a measure of congestion, such as tne PCL, via step 178. It is then determined whether congestion exists, prererably by determining whether the PCL exceeds a threshold, via step 180. If it is determined tnat the PCL indicates that the pipe is not congested, then the pipe is defined to not oe congested, via step 182. If t is determined that the PCL indicates that the pipe is congested, then the pipe _s defined to be congested, via step 184. Thus, t can be determined using tne method 170 whether or not the pipe is congested. Thus, a variety of methods can oe used to determine whether a pipe is congested. If the pipe is congested, t en the flows for the sub-pipes within tne pipe are controlled. Otherwise, the flows are not controlled on the sub-pipe level. The flows m the sub-pipes are controlled by exponentially decreasing the flows and, ir some cases, linearly increasing the flows. Thus, resources are expended in finely controlling flows at tne level of sub-pipes only when the network _s not performing as desired because congestion exists. Moreover, congestion can also be used in deciding how to finely tune the flows of sub-pipes, for example through a second definition of congestion used in determining whether excess bandwidth exists. In addition, different levels of service can be provided for different sub-pipes and, therefore, different pipes. Moreover, this level of control may be provided only at tne edge of tne network. Thus, redundant control of flows in sub-pipes becomes unnecessary. However, other methods of controlling traffic m the network can also be used. A method and system has been disclosed for controlling traffic _n sub-pipes of a network. Software written according to the present invention is to be stored n some form of computer-readable medium, such as memory, CD-ROM or transmitted over a network, and executed by a processor .

Claims: CLAIMS 1 A method for controlling a plurality of sub-pipes in a pipe of a computer network including at least one switch, the plurality of sub-pipes uti-._z-.ng the switch for transmitting traffic through the network, tne metnco comprising the steps of: (a) allowing a minimum flow to be set (102) for each of tne plurality of sub-pipes; (o, determining whether congestion exists (104,116) for ire pipe; (c) controlling a flow (106, 132) in a sub-pipe of the plurality of sub-pipes if congestion exists. 2. The method of claim 1 wherein the controlling step (c) farther includes the steps of: (cl) linearly increasing (106;, or leaving unchanged, the f--ow for the sub-pipe if the flow for the sub-pipe is less than the minimum flow; and (c2) exponentially decreasing (106) the flow for the sub-pipe if the flow for the sub-pipe is greater than the minimum flow. 3. The method of claim 1 further including the step of: (bl) determining if excess bandwidth exists (120); and wherein the controlling flow (c) further includes the steps of: (cl) linearly increasing (130) a flow for the sub-pipe f tne flow for the sub-pipe is less than the minimum flow for the suo-pipe and excess bandwidth exists; and (c2) exponentially decreasing (130) the flow for the sup-pipe of the plurality of sub-pipes if the flow for the sub-pipe is greater than the minimum flow for tne sub-pipe and excess bandwidth does not exist . 4. The method of claim 3 wherein the switch further includes a processor having a queue, the plurality of sub-pipes using the queue for transmitting traffic through the switch wherein the bandwidtn determining step (bl) determines if excess bandwidth exists based on determining if excess bandwidth exists for t.ne queue. 5. The method of claim 3 wherein the excess bandwidth determining step (bl) determines if excess oandwidth exists based on determining if a second type of congestion exists. 6. The method of any of claims 3 to 5 wherein the excess bandwidth determining step (bl) further includes the step of: (bli) setting an excess bandwidth value (128) to be an exponentially weighted average of previous excess bandwidth values. 7. The method of claim 6 wnerein the flow for the sub-pipe of the plurality of sub-pipes is an offered rate multiplied by a transmit fraction and wherein the linearly increasing step (cl) sets the transmit fraction (130) for tne sub-pipe to be a previous transmit fraction plus a first quantity, the first quantity being a first constant multiplied by the excess bandwidth value, and the exppnent ally decreasing step (c2) sets the transmit fraction for the sub-pipe to be the previous transmit fraction minus a second quantity, the second quantity being the previous flow multiplied by a second constant. 8. The method of claim 7 wherein the first constant and the second constant depend upon the minimum flow for the pipe. 9. The method of claim 7 wherein the first constant is a weight multiplied a third quantity, tne third quantity being a queue service rate plus the minimum flow for the pipe minus the sum of the minimum flow for each of the plurality of sub-pipes. 10. The method of any of claims 2 to 9 further including the step of: (al) allowing a maximum flow to be set for each of the plurality of sub-pipes; and wherein tne controlling step ' c ' farther mc-.aθes the step of (c3) decreasing (106,130) the flow for tne sub-pipe if the flow for tne sub-pipe -_s greater tnan tne maximum flow. 5 11. The method of any preceding claim wnerem the controlling step (c) is performed for each of the plurality of sub-pipes. 12. The method of any preceding claim wnerem the network rurther 10 includes an edge and wherein the switch is at tne edge of the network. 13. The method of any preceding claim further comprising the step of: (d) repeating the congestion determining step (b) after a _.r pre-determmed period of time and repeat-rg the controlling step (c) throughout the pre-determined period of time. 14 The method of any preceding claim where-n tne traffic through the switch includes a plurality of packets and wherein congestion determining 0 step (b) determines whether congestion exists based on an Explicit Congestion Notification (ECN) (140) for each of a first portion of tne plurality of packets. 15. The method of any of claims 1 to 13 claim wnerem the traffic 5 through the switch includes a plurality of packets and wherein congestion determining step (b) determines whether congestion exists based on a portion or the plurality of packets (150), the portion of tne plurality of packets including a plurality of synchronization packets. 0 16. The method of any of claims 1 to 13 wherem the traffic through the switch includes a plurality of packets, each of the plurality of packets being initiated by a sender and received by a recipient and wnerem congestion determining step (b) determines whether congestion exists based on a round trip time between the sender and tne recipient (160) for eacn 5 of the plurality of packets. 17. The method of any of claims claim 1 to 13 wherem the traffic through the switch includes a plurality of packets, each of a first portion of the plurality of packets being initiated by a sender and 0 received by a recipient, and wherein congestion determining step (b) determines whether congestion exists based on an Explicit Congestion Notification (ECN) for each of a second portion of the plurality of packets, a round tr-_p t_-me oetween the sender and the recipient for each of the first portion of the plurality of packets, and a third portion or tne p_ ralιty of packets, the third portion of the plurality of packets including a plurality of synchronization packets (170) . 18. The method of any preceding claim wnerem the flow m a suo-pipe of the plurality of pipes is decreased by randomly dropping packets from the suD-p.pe . 19. The method according to any of claims 1 to 17 wnerem the flow _- a sub-pipe j-s decreased by dropping packets cased on the priority of the packet . 20. A computer-readable medium containing a program for controlling a plurality of sub-pipes a pipe of a computer network including at leas- one sw.tc r , tne plurality of sub-pipes utilizing the switch for transmitting traffic through the network, tne program including instructions for carrying out the method as claimed m any of claims _ to 19. 21 A system for controlling a plurality of sub-pipes for a pipe in a computer network including a switch crossed by the plurality of sub-p_pes, the system comprising: a queue for use by the plurality of sub-pipes n transmitting traff_c through the switch; and an enqueuing mecnamsm, coupled with the queue, ror controlling traffic through the switch using a minimum flow set for each of the plurality of sub-pipes by a user, the enqueuing mechanism for determ-.--.ng if congestion exists for the pipe and for controlling a flow in a sub-pipe of the plurality of sub-pipes only if congestion exists such that the f_ow for tre suo-pipe may be linearly increased if the flow for the sub-pipe of the plurality of sub-pipes is less than the minimum flow and such that tne flow for tne sub-pipe of the plurality of sub-pipes is exponentially decreased if the flow is greater than the minimum flow, such that the traffic through the switch is stable. 22. The system of claim 21 wherein the enqueuing mechanism further determines whether excess bandwidth exists and increases or decreases tne flow for each of the plurality of sub-pipes based on whether or not excess bandwidth exists. 23. The system of claim 22 wnerem enqueuing mecnanism determines whether excess bandwidth exists by determining whether a second type of congestion exists, indicating that the excess bandwidth exists if the second type of congestion exists and indicating that excess bandwidth does not exist otherwise. 24. The system of claim 21 wherein the traffic through the switch includes a plurality of packets and wherein the enqueuing mechanism determines whether congestion exists based on an Explicit Congestion Notification (ECN) for each of a first portion of the plurality of packets . 25. The system of claim 21 wr.erein the traffic through the switch includes a plurality of packets and wherein the enqueuing mechanism determines whether congestion exists based on a portion of the plurality of packets, the portion of the plurality of packets including plurality of synchronization packets. 26. The system of claim 21 wr.erein the traffic through the switch includes a plurality of packets, each of the plurality of packets being initiated by a sender and received by a recipient and wherein the enqueuing mechanism determines whether congestion exists based on a round trip time between the sender and the recipient for each of the plurality of packets. 27. The system of claim 21 w.nereir. tne traffic through the switch includes a plurality of packets, each of a first portion of the plurality of packets being initiated by a sender and received by a recipient, and wherein the enqueuing mechanism determines whether congestion exists based on an Explicit Congestion Notification (ECN) for each of a second portion of the plurality of packets, a round trip time between the sender and the recipient for each of the first portion of the plurality of packets, and a third portion of the plurality of packets, the third portion of the plurality of packets including a plurality of synchronization packets. 28. The system of claim 21 wherein the switch includes a plurality of processors corresponding to a plurality of blades, each of the plurality of processors having a plurality of ports and wherein the queue is for a processor of the plurality of processors. 29. The system of claim 21 wherein the network includes an edge and wherein the switch resides at the edge of the network. 30. A processor for use Mith a switch m a computer network, tne processor oeing coupled to a plurality of ports and a switch faoπc, the processor comprising: a queue accepting traffic from a plurality of sup-pipes of a pipe in a computer network; and an enqueuing mechanism, coupled with tne queue, for controlling a flow from a sub-pipe of the plurality of sub-pipes, the enqueuing mechanism for determining if congestion exists for the pipe and for controlling the flow in a sub-pipe of the plurality of sup-pipes only if congestion exists such that the flow for the sub-pipe may be linearly increased if the flow for the sub-pipe of the plurality or sub-pipes s less than the minimum flow and such that the flow for tne sub-pipe of the plurality or sub-pipes is exponentially decreased if tne flow is greater than the minimum flow, suet that the traffic through the switch is stable. 31. A switch for use in a computer network ιnc_udιng a plurality of hosts, tne switch comprising: a plurality of processors, each of the plurality of processors coupled with a plurality of ports, the plurality of ports coupled w th a portion of the plurality of nosts, each of the plurality of processors including a queue and an enqueuing mechanism, the queue accepting traffic from a plurality of sub-pipes of a pipe n a computer network, the plurality of sub-pipes coupling a portion of the plurality of ports coupled with a first processor and a portion of tne plurality of ports coupled with a second processor, the enqueuing mechanism being coupled with the queue, tne enqueuing mechanism for determining f congestion exists and for controlling the flow a sub-pipe of the plurality of sub-pipes only if congestion exists such that tne flow for the sub-pipe may be linearly increased if the flow for the sub-pipe of tne plurality of sub-pipes is less than the minimum flow and such that the flow for the sub-pipe of the plurality of sub-pipes is exponentially decreased if the flow is greater than the minimum flow, such that the traffic through the switch is stable; and a switch fabric coupling the plurality of processors. 32. The switch of claim 31 where the network includes an edge and where the switcn resides at the edge of the network.

Inventors: GORTI BRAHMANAND KUMAR, HWANG DONGMING, JEFFERIES CLARK DEBS, SIEGEL MICHAEL STEVEN, SUDEEP KARTIK, GORTI, BRAHMANAND, KUMAR, HWANG, DONGMING, JEFFERIES, CLARK, DEBS, SIEGEL, MICHAEL, STEVEN, SUDEEP, KARTIK
Applicants: IBM, IBM UK, IBM UNITED KINGDOM LIMITED, INTERNATIONAL BUSINESS MACHINES CORPORATION
Application year: 2001
Main classification: H04L12
IPC codes: H04L12, H04Q11