Claims
- 1. An asynchronous transfer mode switch, comprising:
a plurality of input/output ports for receiving and transmitting ATM cells; a cell header filter for decoding ATM cell headers to determine the cell's ATM channel; at least one processor for manipulating the ATM cell in response to the ATM channel identified by the cell header filter and outputting the manipulated ATM cell on one of the input/output ports; and at least one memory structure associated with the at least one processor for storing ATM cell data prior to transmission on one of the input/output ports, wherein each available ATM channel is represented by a flow data structure in the at least one memory structure, the flow data structure including a plurality of state variables associated with the ATM channel and further including
memory addresses for a cell reception handler routine and a cell transmission handler routine.
- 2. The asynchronous transfer mode switch of claim 1, wherein the plurality of state variables may include the following information: static parameters such as the ATM channel's output port, priority and cell header rewriting rules, a memory address to a queue of buffered cells awaiting transmission; the ATM channel's early packet discard/partial packet discard state, and channel statistics such as a count of cells passing through the channel.
- 3. The asynchronous transfer mode switch of claim 1, wherein the at least one memory structure further comprises:
a plurality of cell buffers; and a plurality of first-in-first-out circular arrays respectively associated with the plurality of ATM channels for holding a plurality of cell buffer pointers, wherein, upon reception of an ATM cell on a particular ATM channel, the cell is placed into a selected one of the plurality of cell buffers and a cell buffer pointer pointing to the selected one of the plurality of cell buffers is placed into the first-in-first-out circular array associated with the ATM channel.
- 4. The asynchronous transfer mode switch of claim 3, wherein the plurality of first-in-first-out circular arrays respectively associated with the plurality of ATM channels have predetermined sizes based upon the respective ATM channel with which they are associated.
- 5. A method for switching asynchronous transfer mode cells, comprising the steps of:
receiving an ATM cell at an input port; identifying an ATM flow associated with the received ATM cell, wherein the ATM flow includes at least memory addresses for an cell reception handler routine and a cell transmission handler routine; reading the contents of the ATM flow into a plurality of registers, including
reading the memory address for the cell reception handler routine into a program counter register for immediate execution; determining whether the received ATM cell is subject to retransmission; and performing the following steps if it is determined that the received ATM cell is subject to retransmission:
allocating a cell buffer; copying the cell contents from the input port to the allocated buffer; determining whether a circular array of buffer pointers associated with the identified ATM flow is full; and placing a pointer to the cell buffer into the circular array if it is determined that the circular array is not full.
- 6. The method of claim 5, further comprising the following steps:
determining that an output port associated with the identified ATM flow is available; reading a next cell buffer pointer from the circular array into the cell transmission handler routine, the next cell buffer pointer indicating the memory address of the buffer holding the next cell for transmission on the output port; and transmitting the next cell on the output port.
- 7. The method of claim 5, wherein the step of determining whether the received ATM cell is subject to retransmission further comprising the steps of:
determining whether the received ATM cell is an operations and management cell; diverting the received ATM cell to an operations and management flow if it is determined that the received ATM cell is an operations and management cell; determining whether the received ATM cell is a subject to packet discard; discarding the received ATM cell if it is determined that the received ATM cell is a subject to packet discard.
- 8. The method of claim 7, wherein the step of determining whether the received ATM cell is subject to packet discard further comprises the steps of:
determining whether the received ATM cell is the first cell of a multi-cell packet; performing the following steps if it is determined that the received ATM cell is the first cell of a multi-cell packet:
determining whether sufficient buffer space is available to handle the entire multi-cell packet; discarding the received ATM cell and all subsequent cells in the multi-cell packet if it is determined that the sufficient buffer space is not available to handle the entire multi-cell packet; performing the following steps if it is determined that the received ATM cell is not the first cell of a multi-cell packet:
determining whether sufficient buffer space is available for the received ATM cell; discarding the received ATM cell and all subsequent cells except the last cell in the multi-cell packet if it is determined that sufficient buffer space is not available for the received ATM cell.
- 9. The method of claim 8, further comprising the steps of:
determining whether an EPD_ACTIVE flag in the ATM flow associated with the received ATM cell has been set to enable or disable early packet discard or partial packet discard for the identified ATM flow; preventing packet discard if it is determined that an EPD_ACTIVE flag in the ATM flow associated with the received ATM cell has been set to disable.
- 10. The method of claim 8, wherein the step of determining whether the received ATM cell is the first cell of a multi-cell packet further comprises the step of determining whether an EPD_SEEN_END flag in the ATM flow associated with the received ATM cell has been set to indicate whether the next received cell is predicted to be the start of a new packet.
- 11. The method of claim 8, wherein the step of discarding the received ATM cell and all subsequent cells except the last cell in the multi-cell packet if it is determined that sufficient buffer space is not available for the received ATM cell further comprises the steps of:
determining whether an EPD_DISCARD_PARTIAL flag in the ATM flow associated with the received ATM cell has been set to indicate that a buffer overload has occurred; discarding all received ATM cells for which the EPD_DISCARD_PARTIAL flag is set; and clearing the EPD_DISCARD_PARTIAL flag upon receipt of an end-of packet cell.
- 12. The method of claim 8, wherein the step of discarding the received ATM cell and all subsequent cells in the multi-cell packet if it is determined that the sufficient buffer space is not available to handle the entire multi-cell packet further comprises the step of:
determining whether an EPD_DISCARD_WHOLE flag in the ATM flow associated with the received ATM cell has been set to indicate that a sufficient buffer space is not available to handle the entire multi-cell packet; discarding all received ATM cells for which the EPD_DISCARD_WHOLE flag is set; and clearing the EPD_DISCARD_PARTIAL flag upon the discard of an end-of packet cell.
- 13. The method of claim 8, wherein the step of determining whether sufficient buffer space is available to handle the entire multi-cell packet further comprises the steps of:
determining whether half of the ATM flow's available buffer is filled; and setting a EPD_DISCARD_WHOLE flag in the ATM flow associated with the received ATM cell to indicate that a sufficient buffer space is not available to handle the entire multi-cell packet if it is determined that half of the ATM flow's available buffer is filled.
- 14. The method of claim 5, further comprising the steps of:
determining that multicast switching of the received ATM cell to a plurality of output ports is required; identifying a plurality of branch flows associated with the ATM channel and the plurality of output ports; reading a next cell buffer pointer from the circular array into the cell transmission handler routine, the next cell buffer pointer indicating the memory address of the buffer holding the next cell for transmission; and replicating the next cell to each of the plurality of branch flows.
- 15. A computer readable medium incorporating instructions for switching asynchronous transfer mode cells, the instructions comprising:
one or more instructions for receiving an ATM cell at an input port; one or more instructions for identifying an ATM flow associated with the received ATM cell, wherein the ATM flow includes at least memory addresses for an cell reception handler routine and a cell transmission handler routine; one or more instructions for reading the contents of the ATM flow into a plurality of registers, including reading the memory address for the cell reception handler routine into a program counter register for immediate execution; one or more instructions for determining whether the received ATM cell is subject to retransmission; and performing the following instructions if it is determined that the received ATM cell is subject to retransmission:
one or more instructions for allocating a cell buffer; one or more instructions for copying the cell contents from the input port to the allocated buffer; one or more instructions for determining whether a circular array of buffer pointers associated with the identified ATM flow is full; and one or more instructions for placing a pointer to the cell buffer into the circular array if it is determined that the circular array is not full.
- 16. The computer readable medium of claim 15, the instructions further comprising:
one or more instructions for determining that an output port associated with the identified ATM flow is available; one or more instructions for reading a next cell buffer pointer from the circular array into the cell transmission handler routine, the next cell buffer pointer indicating the memory address of the buffer holding the next cell for transmission on the output port; and one or more instructions for transmitting the next cell on the output port.
- 17. The computer readable medium of claim 15, wherein the one or more instructions for determining whether the received ATM cell is subject to retransmission further comprising the following instructions:
one or more instructions for determining whether the received ATM cell is an operations and management cell; one or more instructions for diverting the received ATM cell to an operations and management flow if it is determined that the received ATM cell is an operations and management cell; one or more instructions for determining whether the received ATM cell is a subject to packet discard; one or more instructions for discarding the received ATM cell if it is determined that the received ATM cell is a subject to packet discard.
- 18. The computer readable medium of claim 17, wherein the one or more instructions for of determining whether the received ATM cell is subject to packet discard further comprises the steps of:
one or more instructions for determining whether the received ATM cell is the first cell of a multi-cell packet; performing the following instructions if it is determined that the received ATM cell is the first cell of a multi-cell packet:
one or more instructions for determining whether sufficient buffer space is available to handle the entire multi-cell packet; one or more instructions for discarding the received ATM cell and all subsequent cells in the multi-cell packet if it is determined that the sufficient buffer space is not available to handle the entire multi-cell packet; performing the following instructions if it is determined that the received ATM cell is not the first cell of a multi-cell packet:
one or more instructions for determining whether sufficient buffer space is available for the received ATM cell; one or more instructions for discarding the received ATM cell and all subsequent cells except the last cell in the multi-cell packet if it is determined that sufficient buffer space is not available for the received ATM cell.
- 19. The computer readable medium of claim 18, further comprising the following instructions:
one or more instructions for determining whether an EPD_ACTIVE flag in the ATM flow associated with the received ATM cell has been set to enable or disable early packet discard or partial packet discard for the identified ATM flow; one or more instructions for preventing packet discard if it is determined that an EPD_ACTIVE flag in the ATM flow associated with the received ATM cell has been set to disable.
- 20. The computer readable medium of claim 18, wherein the one or more instructions for determining whether the received ATM cell is the first cell of a multi-cell packet further comprises one or more instructions for determining whether an EPD_SEEN_END flag in the ATM flow associated with the received ATM cell has been set to indicate whether the next received cell is predicted to be the start of a new packet.
- 21. The computer readable medium of claim 18, wherein the one or more instructions for discarding the received ATM cell and all subsequent cells except the last cell in the multi-cell packet if it is determined that sufficient buffer space is not available for the received ATM cell further comprises the following instructions:
one or more instructions for determining whether an EPD_DISCARD_PARTIAL flag in the ATM flow associated with the received ATM cell has been set to indicate that a buffer overload has occurred; one or more instructions for discarding all received ATM cells for which the EPD_DISCARD_PARTIAL flag is set; and one or more instructions for clearing the EPD_DISCARD_PARTIAL flag upon receipt of an end-of packet cell.
- 22. The computer readable medium of claim 18, wherein the one or more instructions for discarding the received ATM cell and all subsequent cells in the multi-cell packet if it is determined that the sufficient buffer space is not available to handle the entire multi-cell packet further comprises the following instructions:
one or more instructions for determining whether an EPD_DISCARD_WHOLE flag in the ATM flow associated with the received ATM cell has been set to indicate that a sufficient buffer space is not available to handle the entire multi-cell packet; one or more instructions for discarding all received ATM cells for which the EPD_DISCARD_WHOLE flag is set; and one or more instructions for clearing the EPD_DISCARD_PARTIAL flag upon the discard of an end-of packet cell.
- 23. The computer readable medium of claim 18, wherein the one or more instructions for determining whether sufficient buffer space is available to handle the entire multi-cell packet further comprises the following instructions:
one or more instructions for determining whether half of the ATM flow's available buffer is filled; and one or more instructions for setting a EPD_DISCARD_WHOLE flag in the ATM flow associated with the received ATM cell to indicate that a sufficient buffer space is not available to handle the entire multi-cell packet if it is determined that half of the ATM flow's available buffer is filled.
- 24. The computer readable medium of claim 15, further comprising the following instructions:
one or more instructions for determining that multicast switching of the received ATM cell to a plurality of output ports is required; one or more instructions for identifying a plurality of branch flows associated with the ATM channel and the plurality of output ports; one or more instructions for reading a next cell buffer pointer from the circular array into the cell transmission handler routine, the next cell buffer pointer indicating the memory address of the buffer holding the next cell for transmission; and one or more instructions for replicating the next cell to each of the plurality of branch flows.
CROSS REFERENCE TO RELATED APPLICATIONS
[0001] This application claims the benefit of U.S. provisional patent application Serial No. 60/284,168 filed Apr. 17, 2001, the disclosure of which is incorporated herein by reference.
Provisional Applications (1)
|
Number |
Date |
Country |
|
60284168 |
Apr 2001 |
US |