Per-flow dynamic buffer management
First Claim
1. A system comprising a plurality of input devices a plurality of buffers, and a plurality of output queues interoperably connected to each other, the system further comprising a computer readable medium encoded with computer instructions executable by a processor for:
- extracting at least one field from a data packet received via one of the plurality of input devices;
determining a flow table index value from the at least one field, wherein the flow table index value belongs to a first set of values, and wherein a maximum number of values in the first set of values is less than a maximum number of possible flows;
reading a flow table entry corresponding to the flow table index value; and
comparing the flow table entry with a buffer limit value.
0 Assignments
0 Petitions
Accused Products
Abstract
The present invention provides a per-flow dynamic buffer management scheme for a data communications device. With per-flow dynamic buffer limiting, the header information for each packet is mapped into an entry in a flow table, with a separate flow table provided for each output queue. Each flow table entry maintains a buffer count for the packets currently in the queue for each flow. On each packet enqueuing action, a dynamic buffer limit is computed for the flow and compared against the buffer count already used by the flow to make a mark, drop, or enqueue decision. A packet in a flow is dropped or marked if the buffer count is above the limit. Otherwise, the packet is enqueued and the buffer count incremented by the amount used by the newly-enqueued packet. The scheme operates independently of packet data rate and flow behavior, providing means for rapidly discriminating well-behaved flows from non-well-behaved flows in order to manage buffer allocation accordingly. Additionally, the present invention adapts to changing flow requirements by fairly sharing buffer resources among both well-behaved and non-well-behaved flows.
-
Citations
38 Claims
-
1. A system comprising a plurality of input devices a plurality of buffers, and a plurality of output queues interoperably connected to each other, the system further comprising a computer readable medium encoded with computer instructions executable by a processor for:
-
extracting at least one field from a data packet received via one of the plurality of input devices; determining a flow table index value from the at least one field, wherein the flow table index value belongs to a first set of values, and wherein a maximum number of values in the first set of values is less than a maximum number of possible flows; reading a flow table entry corresponding to the flow table index value; and comparing the flow table entry with a buffer limit value. - View Dependent Claims (2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14)
-
-
15. A system comprising a plurality of input devices, a plurality of buffers, and a plurality of output queues interoperably connected to each other, the system further comprising a computer readable medium encoded with computer instructions executable by a processor for:
-
extracting at least one field from a data packet received via one of the plurality of input devices, wherein the at least one field from a data packet includes a source address field and a destination address field; determining a flow table index value from the at least one field, wherein the computer instructions for determining a flow table index value further comprise computer instructions for at least one of; adding the source address field to the destination address field; performing an exclusive OR (XOR) operation using the source address field and the destination address field as operands; and adding the source address field to the destination address field to form a sum and performing a bit-wise shift operation on at least a portion of the sum; reading a flow table entry corresponding to the flow table index value; and comparing the flow table entry with a buffer limit value.
-
-
16. A system comprising a plurality of input devices, a plurality of buffers, and a plurality of output queues interoperably connected to each other, the system further comprising a computer readable medium encoded with computer instructions executable by a processor for:
-
extracting at least one field from a data packet received via one of the plurality of input devices; determining a flow table index value from the at least one field, wherein the computer instructions for determining a flow table index value further comprise computer instructions for using a first hashing algorithm, and wherein the system further comprises computer instructions for; determining a second flow table index value from the at least one field using a second hashing algorithm; reading a flow table entry corresponding to the flow table index value; and comparing the flow table entry with a buffer limit value. - View Dependent Claims (17)
-
-
18. A system comprising a plurality of input devices, a plurality of buffers, and a plurality of output queues interoperably connected to each other, the system further comprising a computer readable medium encoded with computer instructions executable by a processor for:
-
extracting at least one field from a data packet received via one of the plurality of input devices; determining a flow table index value from the at least one field; reading a flow table entry corresponding to the flow table index value; computing a table index based on at least one parameter describing a queue; and reading a buffer limit value from a table, wherein the reading further comprises selecting the buffer limit value from the table using the table index; and comparing the flow table entry with the buffer limit value. - View Dependent Claims (19)
-
-
20. A computer readable medium comprising program instructions executable on a processor, the computer readable medium being at least one of an electronic storage medium, a magnetic storage medium, or an optical storage medium, wherein the program instructions are executed to implement each of:
-
extracting at least one field from a data packet received via one of a plurality of input devices; determining a flow table index value from the at least one field, wherein the flow table index value belongs to a first set of values, and wherein a maximum number of values in the first set of values is less than a maximum number of possible flows; reading a flow table entry corresponding to the flow table index value; and comparing the flow table entry with a buffer limit value. - View Dependent Claims (21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33)
-
-
34. A computer readable medium comprising program instructions executable on a processor, the computer readable medium being at least one of an electronic storage medium, a magnetic storage medium, or an optical storage medium, wherein the program instructions are executed to implement each of:
-
extracting at least one field from a data packet received via one of a plurality of input devices wherein the at least one field from a data packet includes a source address field and a destination address field; determining a flow table index value from the at least one field;
wherein the program instructions executed to implement the determining a flow table index value further comprise program instructions executed to implement at least one of;adding the source address field to the destination address field; performing an exclusive OR (XOR) operation using the source address field and the destination address field as operands; and adding the source address field to the destination address field to form a sum and performing a bit-wise shift operation on at least a portion of the sum; reading a flow table entry corresponding to the flow table index value; and comparing the flow table entry with a buffer limit value.
-
-
35. A computer readable medium comprising program instructions executable on a processor, the computer readable medium being at least one of an electronic storage medium, a magnetic storage medium, or an optical storage medium, wherein the program instructions are executed to implement each of:
-
extracting at least one field from a data packet received via one of a plurality of input devices; determining a flow table index value from the at least one field;
wherein the program instructions executed to implement the determining a flow table index value further comprise program instructions executed to use a first hashing algorithm, and wherein the computer readable medium further comprises program instructions executed to implement;determining a second flow table index value from the at least one field using a second hashing algorithm; reading a flow table entry corresponding to the flow table index value; and comparing the flow table entry with a buffer limit value. - View Dependent Claims (36)
-
-
37. A computer readable medium comprising program instructions executable on a processor, the computer readable medium being at least one of an electronic storage medium, a magnetic storage medium, or an optical storage medium, wherein the program instructions are executed to implement each of:
-
extracting at least one field from a data packet received via one of a plurality of input devices; determining a flow table index value from the at least one field; reading a flow table entry corresponding to the flow table index value; computing a table index based on at least one parameter describing a queue; and reading a buffer limit value from a table, wherein the reading further comprises selecting the buffer limit value from the table using the table index; and comparing the flow table entry with the buffer limit value. - View Dependent Claims (38)
-
Specification