Pipelined packet switching and queuing architecture
First Claim
1. An apparatus for switching packets, each packet having a header portion, a corresponding tail portion, and a class of service indicator, said apparatus comprising:
- a pipelined switch comprising;
a plurality of packet header buffers (PHBs);
an equal plurality of PHB pointers, each said PHB pointer pointing to a corresponding PHB; and
an equal plurality of pipeline stage circuits connected in a sequence, comprising at least a first stage circuit and a last stage circuit,wherein;
each said stage circuit begins an operation substantially simultaneously with each other;
each said stage circuit passes data to a next stage circuit in said sequence when every said operation performed by all said stage circuits is completed;
said first stage circuit reads said header portion and stores said header portion in said corresponding PHB using said corresponding PHB pointer; and
said last stage circuit outputs a modified header portion; and
a receive buffer manager (RBM) comprising;
a joining circuit connected to said pipelined switch wherein said modified header portion and said corresponding tail portion are joined to form a modified packet;
a receive queue manager connected to said joining circuit that buffers said modified packet in a receive packet buffer and enqueues said modified packet using said class of service indicator and a plurality of receive queues; and
a dequeue circuit connected to said receive queue manager and said receive packet buffer, wherein said dequeue circuit uses said class of service indicator to dequeue said modified packet to a switch fabric.
1 Assignment
0 Petitions
Accused Products
Abstract
A pipelined linecard architecture for receiving, modifying, switching, buffering, queuing and dequeuing packets for transmission in a communications network. The linecard has two paths: the receive path, which carries packets into the switch device from the network, and the transmit path, which carries packets from the switch to the network. In the receive path, received packets are processed and switched in an asynchronous, multi-stage pipeline utilizing programmable data structures for fast table lookup and linked list traversal. The pipelined switch operates on several packets in parallel while determining each packet'"'"'s routing destination. Once that determination is made, each packet is modified to contain new routing information as well as additional header data to help speed it through the switch. Each packet is then buffered and enqueued for transmission over the switching fabric to the linecard attached to the proper destination port. The destination linecard may be the same physical linecard as that receiving the inbound packet or a different physical linecard. The transmit path consists of a buffer/queuing circuit similar to that used in the receive path. Both enqueuing and dequeuing of packets is accomplished using CoS-based decision making apparatus and congestion avoidance and dequeue management hardware. The architecture of the present invention has the advantages of high throughput and the ability to rapidly implement new features and capabilities.
203 Citations
37 Claims
-
1. An apparatus for switching packets, each packet having a header portion, a corresponding tail portion, and a class of service indicator, said apparatus comprising:
-
a pipelined switch comprising; a plurality of packet header buffers (PHBs); an equal plurality of PHB pointers, each said PHB pointer pointing to a corresponding PHB; and an equal plurality of pipeline stage circuits connected in a sequence, comprising at least a first stage circuit and a last stage circuit, wherein; each said stage circuit begins an operation substantially simultaneously with each other; each said stage circuit passes data to a next stage circuit in said sequence when every said operation performed by all said stage circuits is completed; said first stage circuit reads said header portion and stores said header portion in said corresponding PHB using said corresponding PHB pointer; and said last stage circuit outputs a modified header portion; and a receive buffer manager (RBM) comprising; a joining circuit connected to said pipelined switch wherein said modified header portion and said corresponding tail portion are joined to form a modified packet; a receive queue manager connected to said joining circuit that buffers said modified packet in a receive packet buffer and enqueues said modified packet using said class of service indicator and a plurality of receive queues; and a dequeue circuit connected to said receive queue manager and said receive packet buffer, wherein said dequeue circuit uses said class of service indicator to dequeue said modified packet to a switch fabric. - View Dependent Claims (2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16)
-
-
17. A method of switching packets, which comprises:
-
receiving a packet, said packet having a header portion, a corresponding tail portion, and a class of service indicator; switching said packet through a pipelined switch having a plurality of packet header buffers (PHBs), an equal plurality of PHB pointers wherein each said PHB pointer points to a corresponding PHB, and an equal plurality of pipeline stages connected in a sequence, comprising at least a first stage and a last stage, said switching further comprising; beginning an operation in each said stage substantially simultaneously with each other said stage; passing data to a next stage circuit in said sequence when every said operation performed by all said stage circuits is completed; reading and storing said header in said corresponding PHB using said corresponding PHB pointer; and outputting a modified header portion; and buffering said modified header portion in a receive buffer manager (RBM), said buffering further comprising; joining said modified header portion and said corresponding tail portion to form a modified packet; buffering and enqueuing said modified packet using said class of service indicator; and dequeuing said modified packet using said class of service indicator. - View Dependent Claims (18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28)
-
-
29. A computer system for interfacing with a communications network, comprising computer instructions for:
-
receiving a packet, said packet having a header portion, a corresponding tail portion, and a class of service indicator; switching said packet through a pipelined switch having a plurality of packet header buffers (PHBs), an equal plurality of PHB pointers wherein each said PHB pointer points to a corresponding PHB, and an equal plurality of pipeline stages connected in a sequence, comprising at least a first stage and a last stage, said switching further comprising; beginning an operation in each said stage substantially simultaneously with each other said stage; passing data to a next stage circuit in said sequence when every said operation performed by all said stage circuits is completed; reading and storing said header in said corresponding PHB using said corresponding PHB pointer; and outputting a modified header portion; and buffering said modified header portion in a receive buffer manager (RBM), said buffering further comprising; joining said modified header portion and said corresponding tail portion to form a modified packet; buffering and enqueuing said modified packet using said class of service indicator; and dequeuing said modified packet using said class of service indicator. - View Dependent Claims (30, 31)
-
-
32. A computer readable storage medium, comprising computer instructions for:
-
receiving a packet, said packet having a header portion, a corresponding tail portion, and a class of service indicator; switching said packet through a pipelined switch having a plurality of packet header buffers (PHBs), an equal plurality of PHB pointers wherein each said PHB pointer points to a corresponding PHB, and an equal plurality of pipeline stages connected in a sequence, comprising at least a first stage and a last stage, said switching further comprising; beginning an operation in each said stage substantially simultaneously with each other said stage; passing data to a next stage circuit in said sequence when every said operation performed by all said stage circuits is completed; reading and storing said header in said corresponding PHB using said corresponding PHB pointer; and outputting a modified header portion; and buffering said modified header portion in a receive buffer manager (RBM), said buffering further comprising; joining said modified header portion and said corresponding tail portion to form a modified packet; buffering and enqueuing said modified packet using said class of service indicator; and dequeuing said modified packet using said class of service indicator. - View Dependent Claims (33, 34)
-
-
35. A computer data signal embodied in a carrier wave, comprising computer instructions for:
-
receiving a packet, said packet having a header portion, a corresponding tail portion, and a class of service indicator; switching said packet through a pipelined switch having a plurality of packet header buffers (PHBs), an equal plurality of PHB pointers wherein each said PHB pointer points to a corresponding PHB, and an equal plurality of pipeline stages connected in a sequence, comprising at least a first stage and a last stage, said switching further comprising; beginning an operation in each said stage substantially simultaneously with each other said stage; passing data to a next stage circuit in said sequence when every said operation performed by all said stage circuits is completed; reading and storing said header in said corresponding PHB using said corresponding PHB pointer; and outputting a modified header portion; and buffering said modified header portion in a receive buffer manager (RBM), said buffering further comprising; joining said modified header portion and said corresponding tail portion to form a modified packet; buffering and enqueuing said modified packet using said class of service indicator; and dequeuing said modified packet using said class of service indicator. - View Dependent Claims (36, 37)
-
Specification