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 a
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. Using bandwidth management techniques, 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
includes a buffer/queuing circuit similar to that used in the receive
path and can include another pipelined switch. Both enqueuing and
dequeuing of packets is accomplished using CoS-based decision making
apparatus, congestion avoidance, and bandwidth management hardware.