Back pressure control system for network switch port
First Claim
1. An apparatus for receiving and storing incoming cells derived from data transmissions conveyed on a network, and for then forwarding the cells elsewhere in the network, the apparatus comprising:
- a cell memory for sequentially receiving and storing the incoming cells in separate memory blocks, each of the memory blocks being identified by a unique identification number (BLOCK_ID), and for thereafter reading out a cell stored in any one of the memory blocks when its BLOCK_ID is transmitted to the cell memory;
queuing means (36) for sequentially generating BLOCK_IDs of memory blocks storing cells to be read out of the cell memory; and
memory control means (30) for maintaining a BLOCK_ID queue, for adding BLOCK_IDs generated by the queuing means to the BLOCK_ID queue in an order in which they a generated by the queuing means, and for removing BLOCK_IDs from the BLOCK_ID queue and transmitting them to the cell memory in an order in which the BLOCK_IDs were added to the BLOCK_ID queue such that cell memory reads out the cells stored in the memory blocks identified by the BLOCK_IDs transmitted by the memory control means.
9 Assignments
0 Petitions
Accused Products
Abstract
A network switch port includes a cell memory, a queuing system, a data path controller and an output buffer. The data path controller stores incoming cells derived from network data transmissions in the cell memory. The queuing system generates the cell memory address of each stored cell when the cell is to be forwarded from the cell memory, and the data path controller appends the cell memory address of that cell to a linked list of addresses of cells to be forwarded from the memory. When the linked list is not empty, the data path controller forwards cells from the cell memory to the output buffer in the order that their cell memory addresses were appended to the linked list. The output buffer stores and then sequentially forwards the cells outward from the switch port to a receiving network component which store them in a cell buffer until it can forward them elsewhere. The receiving network component produces a multiple bit back pressure data indicating how much of its cell buffer is currently filled with cells. Depending on the fill amount the back pressure data indicates, the output buffer either halts or continues to forward cells to the receiving network component, and either halts or continues allowing the data path controller to forward cells from the cell memory to the output buffer.
61 Citations
13 Claims
-
1. An apparatus for receiving and storing incoming cells derived from data transmissions conveyed on a network, and for then forwarding the cells elsewhere in the network, the apparatus comprising:
-
a cell memory for sequentially receiving and storing the incoming cells in separate memory blocks, each of the memory blocks being identified by a unique identification number (BLOCK_ID), and for thereafter reading out a cell stored in any one of the memory blocks when its BLOCK_ID is transmitted to the cell memory; queuing means (36) for sequentially generating BLOCK_IDs of memory blocks storing cells to be read out of the cell memory; and memory control means (30) for maintaining a BLOCK_ID queue, for adding BLOCK_IDs generated by the queuing means to the BLOCK_ID queue in an order in which they a generated by the queuing means, and for removing BLOCK_IDs from the BLOCK_ID queue and transmitting them to the cell memory in an order in which the BLOCK_IDs were added to the BLOCK_ID queue such that cell memory reads out the cells stored in the memory blocks identified by the BLOCK_IDs transmitted by the memory control means. - View Dependent Claims (2, 3, 4, 5)
-
-
6. A method for receiving and storing cells derived from data transmissions conveyed on a network, and for then forwarding the cells elsewhere in the network, the method comprising the steps of;
-
a. sequentially receiving and writing the cells into separate blocks of a cell memory, wherein each memory block is identified by a unique identification number (BLOCK_ID); b. generating a sequence of BLOCK_IDs of memory blocks currently storing cells; c. adding each generated BLOCK_ID to a BLOCK_ID queue, d. successively removing each BLOCK_ID from the BLOCK_ID queue in an order in which BLOCK_IDs were added to the BLOCK_ID queue whenever the BLOCK_ID queue contains BLOCK_IDs and first back pressure data indicates that BLOCK_IDs may be removed from the BLOCK_ID queue, and refraining from removing BLOCK_IDs from the BLOCK_ID queue when the first back pressure data indicates that BLOCK_IDs may not be removed from the BLOCK_ID queue, e. reading a cell out of the cell memory whenever the BLOCK_ID of the memory block in which it is stored is removed from the BLOCK_ID queue at step d. - View Dependent Claims (7, 8)
-
-
9. A method for receiving and storing cells derived from data transmissions conveyed on a network, and for then forwarding the cells elsewhere in the network, wherein each cell is identified as belonging to one of a plurality of flows, wherein each flow has defined minimum and maximum forwarding rates, and wherein each flow is assigned to one of a plurality of virtual output queues (VOQs), the method comprising the steps of;
-
a. sequentially receiving and writing the cells into separate blocks of a cell memory, wherein each memory block is identified by a unique identification number (BLOCK_ID); b. for each flow for which cells identified as belonging thereto are currently stored in the cell memory, generating BLOCK_IDs of memory blocks storing such cells at a rate bounded by that flow'"'"'s defined minimum and maximum forwarding rates; c. establishing a separate BLOCK_ID queue corresponding to each of the VOQs, d. adding each BLOCK_ID generated at step b to a BLOCK_ID queue corresponding to the VOQ to which is assigned the flow of a cell stored in a memory block identified by the generated BLOCK_ID, e. for each VOQ providing corresponding first back pressure data indicating whether BLOCK_IDs may or may not be removed from the BLOCK_ID queue corresponding to the VOQ; f. for each VOQ, whenever the corresponding first back pressure data indicates BLOCK_IDs may be removed from the corresponding BLOCK_ID queue, successively removing BLOCK_IDs from the corresponding BLOCK_ID queue in an order which they were added to the BLOCK_ID queue; g. for each VOQ, whenever the corresponding first back pressure data indicates BLOCK_IDs may be not be removed from the corresponding BLOCK_ID queue, refraining from removing BLOCK_IDs from the corresponding BLOCK_ID queue; and h. reading a cell out of the cell memory whenever the BLOCK_ID of the memory block in which the cell is stored is removed from any BLOCK_ID queue at step f. - View Dependent Claims (10, 11, 12, 13)
-
Specification