The present application is related to a co-pending application filed coincidently herewith with common inventors under the title “SYSTEM, METHOD, AND COMPUTER PROGRAM PRODUCT FOR IP FLOW ROUTING” Ser. No. 11/335,969, which is incorporated herein by reference in its entirety for all purposes.
The present invention relates to routers, and more particularly, to routing flows of packets.
A system, method and computer program product are provided. In use, a plurality of flows associated with packets destined for an output port are identified. A utilization associated with the output port is further measured. Thus, rates of a plurality of the flows destined for the output port may be individually controlled at an input port thereof, based on the utilization to ensure that the utilization remains less than 99.9% and avoid buffering more than 400 packets with a correspondingly low delay.
Coupled to the networks 102 are server computers 104 which are capable of communicating over the networks 102. Also coupled to the networks 102 and the server computers 104 is a plurality of client computers 106. Such client computers 106 may each include a desktop computer, lap-top computer, hand-held computer, mobile phone, hand-held computer, personal video recorder (PVR), a digital media [e.g. compact disc (CD), digital video disc (DVD), MP3, etc.] player, printer, and/or any other type of logic.
In order to facilitate communication among the networks 102, at least one router 108 is coupled between the networks 102. In the context of the present description, such router 108 may include any hardware and/or software capable of facilitating the communication of packets from one point in the network architecture 100 to another. More information regarding various features for enhancing such functionality will be set forth hereinafter in greater detail.
As shown, a plurality of flows associated with packets destined for an output port are identified. Note operation 202. In the context of the present description, such packet may refer to any unit of information capable of being communicated in a computer network (e.g. see, for example, the networks 102 of
Further in the context of the present description, the term flow refers to a collection of packets that relate to a common data transfer. In various optional embodiments, however, the flow may include a bit-stream of some arbitrary length and constitute a single data transfer. In such embodiments, each flow may be broken into packets for the purpose of facilitating delay reduction and error recovery.
Still yet, the output port may refer to any logic output associated with a router (e.g. see, for example, the router 108 of
As shown in operation 204, a utilization associated with the output port is further measured. In the context of the present description, such utilization may refer to any unit of measurements that reflects an amount of usage of the capacity of the output port that is being utilized. Of course, such measurement may be performed in any desired manner that identifies such utilization.
In various embodiments, the utilization may be measured periodically. For example, the utilization may be measured periodically every millisecond. Of course, it should be noted that the measurement may occur in accordance with any desired timing.
Thus, in operation 206, rates of a plurality of the flows destined for the output port may be individually controlled at an input port thereof, based on the utilization to ensure that the utilization remains less than (and/or possibly equal to) 99.9% and avoid buffering more than 400 packets. In the context of the present description, such rates may each refer to any unit of data, packets, etc. utilizing the output port that is a function of time. Similar to the aforementioned output port, the input port may refer to any logical input associated with a router (e.g. see, for example, the router 108 of
In one embodiment, the rates may be individually by controlled by rejecting or discarding the new and/or existing flows and/or components thereof. Of course, however, the rates may be controlled in any way that impacts utilization of the output port.
In various embodiments, some or all of the flows destined for the output port may be individually controlled. Further, such control may be independent in nature, such that the rates of the plurality of flows are individually controlled in a different manner. See Table 1 which illustrates an exemplary set of individually controlled flow rates. Further, it should be noted that the rates may be more stringently controlled, so as to ensure that the utilization remains less than 95%, 90%, 80%, or less.
Of course, such table is illustrative in nature and should not be construed as limiting any manner.
Thus, in some embodiments, buffering at the output port may be reduced and/or eliminated, thereby providing a lower delay associated with packet transmission, where such lower delay “corresponds” to (e.g. results from, is a function of, and/or is associated with, etc.) such buffer reduction. For example, as mentioned previously, such buffering may amount to less than 400 packets. In still other embodiments, such buffering may require less than 1 MB of storage capacity and, in some embodiments require 250 KB or less. Even still, the buffering may be further reduced to less than 100 packets in another embodiment, less than 50 packets in another embodiment, less than 20 packets in another embodiment, less than 10 packets in another embodiment, etc.
This may be possibly beneficial particularly when transmitting streaming media (e.g. audio streaming media, video streaming media, etc.). More information regarding such optional feature will be set forth in greater detail during reference to
In one exemplary embodiment, the rates may be individually controlled utilizing an input flow manager. Further, the measuring may carried out utilizing an output flow manager. Still yet, the utilization may be reported by the output flow manager to a network processing unit (NPU). In such embodiment, such NPU may include one or more processors capable of routing packets. Thus, the input flow manager may be adapted to control the rates based on input from the NPU.
In the context of the present description, the term routing refers to any communication of packets from one point in a network architecture to another, that involves the identification of a destination address by at least being capable of identifying a “longest prefix” match. In various exemplary embodiments that are not to be construed as limiting with respect to the above definition of routing, the aforementioned “longest prefix” match may require only one memory cycle, but may, in other embodiments, require 3-5 memory cycles. Further, the match may, but need not necessarily, be a complete match. Instead, it may involve just enough bytes of the address to determine a desired output port. For example, European communications may be sent to one port so there is no need to keep track of all the Europe addresses, but rather just a first part correlating to Europe, etc.
In other exemplary embodiments that are, again, not to be construed as limiting with respect to the above definition of routing, a second router function may involve determining if traffic to or from certain addresses are to be blocked and/or discarded in relation to a denial of service (DOS) function. Optionally, more than mere addresses may be used to make such decision and an associative memory may be used to accomplish the same. Of course, various other functions may be included, such as a function for prioritizing traffic so that certain types of packets receive a lower delay during the course of traffic shaping, etc.
More illustrative information will now be set forth regarding various optional architectures and features with which the foregoing technique may or may not be implemented, per the desires of the user. It should be strongly noted that the following information is set forth for illustrative purposes and should not be construed as limiting in any manner. Any of the following features may be optionally incorporated with or without the exclusion of other features described.
As shown, the router system 300 includes an input trunk 301 and an output trunk 303. The input trunk 301 is coupled to an input transceiver 302 for receiving packets via the input trunk 301 and feeding the same to an input framer 304 for performing packet framing. In one embodiment, such packet framing may refer to the method by which packets are sent over a serial line. For example, framing options for T1 serial lines may include D4 and ESF. Further, framing options for E1 serial lines may include CRC4, no-CRC4, multiframe-CRC4, and multiframe-no-CRC4.
Further included is an input flow manager 306 coupled between the input framer 304 and a switching fabric architecture 312. In the present embodiment, the switching fabric architecture 312 may include hardware (e.g. switching integrated circuit, etc.) and/or software that switches incoming packets (e.g. moves incoming packets out via an appropriate output port, etc.) in a manner that will soon become apparent. For controlling such switching fabric architecture 312, a central processing unit 311 may be in communication therewith. Further, the input flow manager 306 may further be coupled to input flow memory 308.
Still yet, an NPU 310 may be in communication with the input flow manager 306 and/or switching fabric architecture 312 for routing incoming packets. Further included is an output flow manager 316 coupled between the switching fabric architecture 312 and an output framer 318. Similar to the input flow manager 306, the output flow manager 316 includes output flow memory 316 for performing similar functions.
Finally, the output framer 318 is coupled to an output transceiver 320 which communicates via the output trunk 303. While the various components are shown to be included in a single package associated with the router system 300, it should be noted that such components may be distributed in any desired manner.
As an option, the input flow manager 306 may function to efficiently control IP flow routing. Specifically, the input flow manager 306 may determine whether a flow associated with a received packet is new. To accomplish this, the input flow manager 306 extracts a header of the packet. In one embodiment, such header may include various fields including, but not limited to a destination address, source address, protocol, destination port, source port, and/or any other desired information.
Next, one or more of the fields are combined in the form of a hash. As an option, such hash may take the form of a 32-bit flow identifier. The input flow manager 306 then uses the hash (e.g. a lower 21 bits of the 32-bit flow identifier, etc.), and does a memory look up in a hash table stored in the input flow memory 308. Specifically, in one exemplary embodiment, a binary tree is followed using a remaining 11 bits of the 32-bit flow identifier until a pointer to a flow record is located in the input flow memory 308 that makes an exact match with the destination address, source address, protocol, destination port, and source port, etc. Such record (if it exists) constitutes a flow record for the identified flow.
If it is determined that the flow associated with the packet is new, at least a portion of the packet may be routed utilizing the NPU 310. If, on the other hand, it is determined that the flow associated with the packet is not new, at least a portion of the packet may be routed or switched utilizing the switching fabric architecture 312, which may cost at least 10 times less than the first module. More information regarding such functionality may be found in a co-pending application filed coincidently herewith with common inventors under the title “SYSTEM, METHOD, AND COMPUTER PROGRAM PRODUCT FOR IP FLOW ROUTING”, which is incorporated herein by reference in its entirety for all purposes.
Further during operation, the output flow manager 316 is equipped with output flow management functionality. Specifically, the output flow manager 316 may operate in conjunction with the remaining components shown in
In one exemplary implementation of the method 300 of
When a new flow is identified in the manner described above, it is assigned to a particular output port. At this time, by virtue of the foregoing measurement, the utilization of such output port is known. With this knowledge, a rate may be determined for the flow that will not overload the output port beyond 99.9%.
It should be noted that there are two basic types of flows, namely those that a network controls the rate (e.g. TCP, typical file transfers, etc.), and those where a sender controls the rate (e.g. UDP, typical voice and video streaming media, etc.). For those flows that the network controls, a rate may be set that will not overload the output port.
On the other hand, for flows that the user controls the rate, lost packets may be harmful. Thus, it may be beneficial to reject new flows, if they would overload the output port. This may be done when a first packet of a flow is identified. If it is discarded, no flow record need necessarily be made, and no further packets need necessarily be accepted for that flow until there is sufficient capacity.
Thus, the input frame manager 308 may be informed by the NPU 310 of the rate and/or whether to accept the new flow. The input frame manager 308 may then manage the rates by rejecting and/or discarding new flows to ensure that a sum of the rates associated with each output port is kept under a predetermined utilization (e.g. 95%, etc.). Given this technique, a queue at the output trunk 303 may be designed to be small (e.g. 100 packets or less, etc.) and an associated delay low (e.g. 100 microseconds or less, 100 packets of 1200 bytes at 10 Gbps, etc.).
Thus, a significant improvement in both buffer expense and packet delay may optionally be achieved with the present approach. These results are facilitated by separating the foregoing functionality associated with the input frame manager 308 with respect to the NPU 310, so that flows to the NPU 310 may be governed in the foregoing manner.
While various embodiments have been described above, it should be understood that they have been presented by way of example only, and not limitation. For example, any of the network elements may employ any of the desired functionality set forth hereinabove. Thus, the breadth and scope of a preferred embodiment should not be limited by any of the above-described exemplary embodiments, but should be defined only in accordance with the following claims and their equivalents.
Number | Name | Date | Kind |
---|---|---|---|
5235595 | O'Dowd | Aug 1993 | A |
5267232 | Katsube et al. | Nov 1993 | A |
5379297 | Glover | Jan 1995 | A |
5436886 | McGill | Jul 1995 | A |
5444702 | Burnett | Aug 1995 | A |
5467343 | Lee | Nov 1995 | A |
5559611 | Bloomfield | Sep 1996 | A |
5633861 | Hanson et al. | May 1997 | A |
5892924 | Lyon et al. | Apr 1999 | A |
5909440 | Ferguson | Jun 1999 | A |
5917821 | Gobuyan | Jun 1999 | A |
5933425 | Iwata | Aug 1999 | A |
5953318 | Nattkemper | Sep 1999 | A |
5991302 | Berl | Nov 1999 | A |
5995503 | Crawley | Nov 1999 | A |
6006264 | Colby | Dec 1999 | A |
6018530 | Chakravorty | Jan 2000 | A |
6072797 | Fletcher | Jun 2000 | A |
6078590 | Farinacci | Jun 2000 | A |
6081522 | Hendel | Jun 2000 | A |
6081524 | Chase | Jun 2000 | A |
6084879 | Berl | Jul 2000 | A |
6091725 | Cheriton | Jul 2000 | A |
6111877 | Wilford | Aug 2000 | A |
6122272 | Tomaszewski | Sep 2000 | A |
6147996 | Laor | Nov 2000 | A |
6157641 | Wilford | Dec 2000 | A |
6182139 | Brendel | Jan 2001 | B1 |
6182147 | Farinacci | Jan 2001 | B1 |
6185188 | Hasegawa | Feb 2001 | B1 |
6192051 | Lipman | Feb 2001 | B1 |
6195697 | Bowman-Amuah | Feb 2001 | B1 |
6195703 | Blumenau | Feb 2001 | B1 |
6212182 | McKeown | Apr 2001 | B1 |
6212183 | Wilford | Apr 2001 | B1 |
6219699 | McCloghrie | Apr 2001 | B1 |
6226750 | Trieger | May 2001 | B1 |
6243667 | Kerr et al. | Jun 2001 | B1 |
6260120 | Blumenau et al. | Jul 2001 | B1 |
6269099 | Borella et al. | Jul 2001 | B1 |
6279035 | Brown et al. | Aug 2001 | B1 |
6308219 | Hughes | Oct 2001 | B1 |
6310860 | Sheu et al. | Oct 2001 | B1 |
RE37435 | Yoshimura et al. | Nov 2001 | E |
6330599 | Harvey | Dec 2001 | B1 |
6331978 | Ravikanth | Dec 2001 | B1 |
6335927 | Elliott | Jan 2002 | B1 |
6336129 | Ise | Jan 2002 | B1 |
6343072 | Bechtolsheim | Jan 2002 | B1 |
6346874 | Maeshima | Feb 2002 | B1 |
6353856 | Kanemaki | Mar 2002 | B1 |
6356530 | Tomaszewski | Mar 2002 | B1 |
6370121 | Hausman | Apr 2002 | B1 |
6377577 | Bechtolsheim | Apr 2002 | B1 |
6381244 | Nishimura | Apr 2002 | B1 |
6385642 | Chlan | May 2002 | B1 |
6389475 | Speakman | May 2002 | B1 |
6389506 | Ross | May 2002 | B1 |
6412006 | Naudus | Jun 2002 | B2 |
6421711 | Blumenau | Jul 2002 | B1 |
6424649 | Laor | Jul 2002 | B1 |
6424934 | Welfeld | Jul 2002 | B2 |
6434120 | Natarajan | Aug 2002 | B1 |
6438595 | Blumenau | Aug 2002 | B1 |
6446126 | Huang | Sep 2002 | B1 |
6456594 | Kaplan | Sep 2002 | B1 |
6473404 | Kaplan | Oct 2002 | B1 |
6480888 | Pedersen | Nov 2002 | B1 |
6496932 | Trieger | Dec 2002 | B1 |
6499061 | Benayoun et al. | Dec 2002 | B1 |
6504817 | Oldfield et al. | Jan 2003 | B2 |
6512766 | Wilford | Jan 2003 | B2 |
6515963 | Bechtolsheim et al. | Feb 2003 | B1 |
6515999 | Nagami et al. | Feb 2003 | B1 |
6563794 | Takashima et al. | May 2003 | B1 |
6567405 | Borella et al. | May 2003 | B1 |
6574195 | Roberts | Jun 2003 | B2 |
6574667 | Blumenau | Jun 2003 | B1 |
6603772 | Moussavi | Aug 2003 | B1 |
6611522 | Zheng | Aug 2003 | B1 |
6611528 | Farinacci | Aug 2003 | B1 |
6614795 | Jimmei | Sep 2003 | B1 |
6615358 | Dowd | Sep 2003 | B1 |
6629125 | Elzur | Sep 2003 | B2 |
6643285 | Vincent | Nov 2003 | B1 |
6647208 | Kirby | Nov 2003 | B1 |
6668297 | Karr | Dec 2003 | B1 |
6690654 | Elliott | Feb 2004 | B2 |
6697354 | Borella | Feb 2004 | B1 |
6707796 | Li | Mar 2004 | B1 |
6708219 | Borella | Mar 2004 | B1 |
6718387 | Gupta et al. | Apr 2004 | B1 |
6721273 | Lyon | Apr 2004 | B1 |
6731625 | Eastep et al. | May 2004 | B1 |
6731642 | Borella et al. | May 2004 | B1 |
6732187 | Lougheed et al. | May 2004 | B1 |
6738387 | Lin et al. | May 2004 | B1 |
6754181 | Elliott et al. | Jun 2004 | B1 |
6757249 | Kejriwal et al. | Jun 2004 | B1 |
6757791 | O'Grady et al. | Jun 2004 | B1 |
6760331 | Moussavi et al. | Jul 2004 | B1 |
6763040 | Hite et al. | Jul 2004 | B1 |
6765921 | Stacey et al. | Jul 2004 | B1 |
6768743 | Borella et al. | Jul 2004 | B1 |
6771642 | Seaver et al. | Aug 2004 | B1 |
6781982 | Borella et al. | Aug 2004 | B1 |
6791979 | Berl et al. | Sep 2004 | B1 |
6798776 | Cheriton et al. | Sep 2004 | B1 |
6798788 | Viswanath et al. | Sep 2004 | B1 |
6799255 | Blumenau et al. | Sep 2004 | B1 |
6829437 | Kirby | Dec 2004 | B2 |
6831923 | Laor et al. | Dec 2004 | B1 |
6853638 | Cohen | Feb 2005 | B2 |
6862284 | Spiegel et al. | Mar 2005 | B1 |
6889181 | Kerr | May 2005 | B2 |
6914883 | Dharanikota | Jul 2005 | B2 |
6920112 | McCloghrie | Jul 2005 | B1 |
6922410 | O'Connell | Jul 2005 | B1 |
6922564 | Witana | Jul 2005 | B2 |
6948074 | Borella | Sep 2005 | B1 |
6952415 | Stern | Oct 2005 | B2 |
6954431 | Roberts | Oct 2005 | B2 |
6965572 | Boodaghians | Nov 2005 | B1 |
6977932 | Hauck | Dec 2005 | B1 |
7440403 | Rosenfled | Oct 2008 | B2 |
20010030649 | Mamiya et al. | Oct 2001 | A1 |
20020075883 | Dell et al. | Jun 2002 | A1 |
20020141379 | Davari et al. | Oct 2002 | A1 |
20030058793 | Rochon et al. | Mar 2003 | A1 |
20030112758 | Pang et al. | Jun 2003 | A1 |
20030223442 | Huang et al. | Dec 2003 | A1 |
20040085958 | Oman | May 2004 | A1 |
20040160954 | Shimizu et al. | Aug 2004 | A1 |
20050063307 | Samuels et al. | Mar 2005 | A1 |
20050201284 | Cheriton | Sep 2005 | A1 |
20050238022 | Panigrahy | Oct 2005 | A1 |
20060020691 | Patterson et al. | Jan 2006 | A1 |
20060165166 | Chou et al. | Jul 2006 | A1 |
Entry |
---|
Search Report and Written Opinion from PCT Application No. PCT/US2007/01516 mailed on Oct. 16, 2007. |
International Preliminary Examination Report from PCT Application No. PCT/US2007/01516 mailed on Jul. 31, 2008. |
U.S. Appl. No. 11/335,969, filed Jan. 20, 2006. |
Office Action Summary from U.S. Appl. No. 11/335,969 which was mailed on Dec. 12, 2008. |
Final Office Action Summary from U.S. Appl. No. 11/335,969 mailed on Jun. 11, 2009. |
“Bring on the router, I mean switches . . . ”, by Network World, Jan. 4, 1999, http://www.networkworld.com/news/power99/bringonrouters.html, pp. 1-2. |
Number | Date | Country | |
---|---|---|---|
20070171826 A1 | Jul 2007 | US |