Memory architecture for high speed network devices
First Claim
1. A method of forwarding a data packet using different sets of buffers of a network device, the method comprising:
- writing the data packet to a first set of buffers coupled with a first set of egress ports for the network device before determining whether to forward the data packet through the first set of egress ports based on accessing at least one forwarding database;
writing the data packet to a second set of buffers coupled with a second set of egress ports for the network device before determining whether to forward the data packet through the second set of egress ports based on accessing the at least one forwarding database;
determining whether to forward the data packet through the first set of egress ports or the second set of egress ports based on accessing the at least one forwarding database;
releasing the first set of buffers if it is determined that the data packet is to be forwarded through the second set of egress ports and not to be forwarded through the first set of egress ports; and
forwarding the data packet from the second set of buffers through a subset of the second set of egress ports if it is determined that the data packet is to be forwarded through the second set of egress ports.
2 Assignments
0 Petitions
Accused Products
Abstract
An embodiment of the present invention reduces certain memory bandwidth requirements when sending a multicast message from a network device such as a router, bridge or switch. Separate output buffers are provided for different groups of egress ports, and incoming messages are written to some or all of the output buffers. A processing determination is made as to which egress ports will forward the message. Buffers associated with non-forwarding ports are released and the message is queued at the forwarding egress ports. When the message is forwarded, data is read from the output buffers associated with the forwarding egress ports.
-
Citations
28 Claims
-
1. A method of forwarding a data packet using different sets of buffers of a network device, the method comprising:
-
writing the data packet to a first set of buffers coupled with a first set of egress ports for the network device before determining whether to forward the data packet through the first set of egress ports based on accessing at least one forwarding database; writing the data packet to a second set of buffers coupled with a second set of egress ports for the network device before determining whether to forward the data packet through the second set of egress ports based on accessing the at least one forwarding database; determining whether to forward the data packet through the first set of egress ports or the second set of egress ports based on accessing the at least one forwarding database; releasing the first set of buffers if it is determined that the data packet is to be forwarded through the second set of egress ports and not to be forwarded through the first set of egress ports; and forwarding the data packet from the second set of buffers through a subset of the second set of egress ports if it is determined that the data packet is to be forwarded through the second set of egress ports. - View Dependent Claims (2, 3, 4, 5, 6, 7, 8, 9)
-
-
10. A method of forwarding a data packet using different memory banks of a network device, the method comprising:
-
writing the data packet to a first set of buffers in a first memory bank before determining whether the data packet is to be forwarded through the first set of egress ports based on accessing at least one forwarding database, the first memory bank coupled with a first set of egress ports for the device; writing the data packet to a second set of buffers in a second memory bank before determining whether the data packet is to be forwarded through the second set of egress ports based on accessing the at least one forwarding database, the second memory bank coupled with a second set of egress ports for the device; determining whether the data packet is to be forwarded through the first set of egress ports or the second set of egress ports based on accessing the at least one forwarding database; releasing the first set of buffers if it is determined that the data packet is to be forwarded through the second set of egress ports and not to be forwarded through the first set of egress ports; queuing a descriptor of the data packet written to the second set of buffers after the first set of buffers is released, the descriptor identifying a port of the second set of egress ports through which the data packet is to be forwarded; and forwarding the data packet identified by the descriptor from the second set of buffers through the port identified in the second set of egress ports if it is determined that the data packet is to be forwarded through the second set of egress ports. - View Dependent Claims (11, 12, 13, 14)
-
-
15. An apparatus for forwarding a data packet using different sets of buffers, the apparatus comprising:
-
a plurality of egress ports; a first set of buffers coupled with a first subset of the plurality of egress ports; a second set of buffers coupled with a second subset of the plurality of egress ports; a receive unit configured to receive a data packet through an ingress port; a memory access unit configured to; write the data packet to the first set of buffers before a determination whether the data packet is to be forwarded through the first subset of the plurality of egress ports, the determination being based on accessing at least one forwarding database, write the data packet to the second set of buffers before a determination whether the data packet is to be forwarded through a second subset of the plurality of egress ports, the determination being based on accessing the at least one forwarding database determine whether to forward the data packet through the first subset of the plurality of egress ports or the second subset of the plurality of egress ports based on accessing the at least one forwarding database, and release the data packet from the first set of buffers if it is determined that the data packet is to be forwarded through the second subset of the plurality of egress ports and not to be forwarded through the first subset of the plurality of egress ports; a forwarding database configured to identify one or more ports through which a received packet is to be forwarded; a forwarding database engine configured to access the forwarding database to determine whether the data packet is to be forwarded through the first set of egress ports; and a transmit unit configured to forward the data packet from the second set of buffers through at least one port of the second subset of egress ports if it is determined that the data packet is to be forwarded through at least one port of the second subset of egress ports. - View Dependent Claims (16, 17, 18, 19, 20, 21, 22, 23)
-
-
24. An apparatus for forwarding a data packet using different memory banks, the apparatus comprising:
-
a plurality of egress ports; a first memory bank coupled with a first subset of the plurality of egress ports; a second memory bank coupled with a second subset of the plurality of egress ports; a receive unit configured to receive a data packet via an ingress port; a memory access unit configured to; write the data packet to a first set of buffers in the first memory bank before a determination is made from accessing at least one forwarding database whether the data packet is to be forwarded through the first subset of the plurality of egress ports, write the data packet to a second set of buffers in the second memory bank before a determination is made from accessing the at least one forwarding database whether the data packet is to be forwarded through the second subset of the plurality of egress ports, and release the first set of buffers in response to the determination made from accessing the at least one forwarding database that the data packet is to be forwarded through the second subset of the plurality of egress ports and not to be forwarded through the first set subset of the plurality of egress ports; a transmit queue unit configured to queue a descriptor of the data packet written to the second set of buffers after the first set of buffers are released, the descriptor identifying a port of the second subset through which the data packet is to be forwarded if it is determined that the data packet is to be forwarded through the second subset of egress ports; and a transmit unit configured to forward the data packet identified by the descriptor from the second set of buffers through the port of the second subset of egress ports if it is determined that the data packet is to be forwarded through the second subset of egress ports. - View Dependent Claims (25, 26, 27, 28)
-
Specification