Configurable virtual output queues in a scalable switching system
First Claim
Patent Images
1. A port processor configured to receive data packets from a line card, each data packet comprising a destination port address and data, the port processor comprising:
- a random access memory (RAM) configured to store packets from the line card;
a content addressable memory (CAM) configured to store a plurality of entries, each CAM entry configured to comprise (a) a destination port address field and (b) a pointer field, wherein each CAM entry has a memory address corresponding to a memory location of the RAM;
a storage unit configured to store a plurality of queue entries, each queue entry configured to comprise (a) a destination port address of a set of one or more CAM entries, (b) a header pointer field equal to a pointer field of a first CAM entry in the set, and (c) a tail pointer field equal to a pointer field of a last CAM entry in the set; and
a controller configured to control the RAM, CAM and storage unit.
1 Assignment
0 Petitions
Accused Products
Abstract
Configurable virtual output queues (VOQs) in a scalable switching system and methods of using the queues are provided. The system takes advantage of the fact that not all VOQs are active or need to exist at one time. Thus, the system advantageously uses configurable VOQs and may not dedicate memory space and logic to all possible VOQs at one time.
-
Citations
46 Claims
-
1. A port processor configured to receive data packets from a line card, each data packet comprising a destination port address and data, the port processor comprising:
-
a random access memory (RAM) configured to store packets from the line card; a content addressable memory (CAM) configured to store a plurality of entries, each CAM entry configured to comprise (a) a destination port address field and (b) a pointer field, wherein each CAM entry has a memory address corresponding to a memory location of the RAM; a storage unit configured to store a plurality of queue entries, each queue entry configured to comprise (a) a destination port address of a set of one or more CAM entries, (b) a header pointer field equal to a pointer field of a first CAM entry in the set, and (c) a tail pointer field equal to a pointer field of a last CAM entry in the set; and a controller configured to control the RAM, CAM and storage unit. - View Dependent Claims (2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14)
-
-
15. A port processor configured to receive data packets from a line card, each data packet comprising a destination port address, a priority level and data, the port processor comprising:
-
a random access memory (RAM) configured to store packets from the line card; a content addressable memory (CAM) configured to store a plurality of entries, each CAM entry configured to comprise (a) a destination port address field, (b) a priority level, and (c) a pointer field, wherein each CAM entry has a memory address corresponding to a memory location of the RAM; a storage unit configured to store a plurality of queue entries, each queue entry configured to comprise (a) a destination port address of a set of one or more CAM entries, (b) a priority level of the set of one or more CAM entries, (c) a header pointer field equal to a pointer field of a first CAM entry in the set, and (d) a tail pointer field equal to a pointer field of a last CAM entry in the set; and a controller configured to control the RAM, CAM and storage unit. - View Dependent Claims (16, 17, 18)
-
- 19. A controller in a packet switching system, the controller being configured to (a) receive a packet from a line card, (b) find a queue entry in a storage unit, the queue entry comprising a destination port address equal to a destination port address of the packet, (c) write an entry in a content addressable memory (CAM), the CAM entry comprising the destination port address of the packet and a pointer value from the queue entry, and (d) store the packet in a location in a random access memory (RAM) corresponding to a memory address of the CAM entry.
- 22. A controller in a packet switching system, the controller being configured to (a) find a queue entry in a storage unit with a destination port address that matches a destination port address of a request grant from a scheduler, (b) send the destination port address and a head pointer field of the queue entry to a content addressable memory (CAM), (c) receive a memory address of an entry in the CAM, the CAM entry having a destination port address and pointer field that match the destination port address and head pointer field of the queue entry, and (d) transfer a packet from a location in a random access memory (RAM) to a switch fabric, the location corresponding to the memory address of the CAM entry.
- 24. A content addressable memory (CAM) in a packet switching system, the CAM being configured to store a plurality of entries, each CAM entry configured to comprise (a) a destination port address and (b) a pointer field, each CAM entry having a memory address corresponding to a memory location of a random access memory (RAM), the CAM being configured to receive a destination port address and a pointer value and output a memory address of a CAM entry comprising the same destination port address and pointer value.
- 27. A storage unit in a packet switching system, the storage unit being configured to store a plurality of queue entries, each queue entry configured to comprise (a) a destination port address common to a set of one or more entries in a content addressable memory (CAM), (b) a header pointer field equal to a pointer field of a first entry in the set of CAM entries, and (c) a tail pointer field equal to a pointer field of a last entry in the set of CAM entries, the storage unit being configured to output the destination port address, header pointer and the tail pointer.
- 35. A controller in a packet switching system, the controller being configured to (a) receive a multicast packet from a line card, the packet comprising data and a plurality of destination port addresses, (b) store an entry in a storage unit, the entry comprising the destination port addresses of the packet and an address of a location in a random access memory (RAM) configured to store the packet, and (c) store the packet in the location of the RAM.
-
41. A storage unit in a packet switching system, the storage unit being configured to store a plurality of entries, each entry configured to comprise (a) a plurality of destination port addresses of a multicast packet and (b) an address of a location in a random access memory (RAM) configured to store the packet.
-
42. A method of managing a packet in a packet switching system, the method comprising:
-
creating a queue entry based on a destination port address of a packet received from a line card, the queue entry comprising the destination port address of the packet and a tail pointer value; transferring the destination address and tail pointer value to an available entry in a content addressable memory (CAM); and writing the packet to a location in a random access memory (RAM) that corresponds to an address of the entry in the CAM. - View Dependent Claims (43)
-
-
44. A method of using a port processor in a packet switching system, the method comprising:
-
creating a queue entry based on a destination port address and a priority level of a packet received from a line card, the queue entry comprising the destination port address and priority level of the packet and a tail pointer value; transferring the destination address, priority level and tail pointer value to an available entry in a content addressable memory (CAM); and writing the packet to a location in a random access memory (RAM) that corresponds to an address of the entry in the CAM.
-
-
45. A method of processing a schedule request grant from a scheduler, the method comprises:
-
receiving a schedule request grant from a scheduler; finding a queue entry in a storage unit with a destination port address that matches a destination port address of the schedule request grant; sending the destination port address and a head pointer field of the queue entry to a content addressable memory (CAM); receiving a memory address of an entry in the CAM, the CAM entry having a destination port address and pointer field that match the destination port address and head pointer field of the queue entry; and transferring a packet from a location in a random access memory (RAM) to a switch fabric, the location corresponding to the memory address of the CAM entry.
-
-
46. A method of processing a multicast packet, the method comprising:
-
receiving a multicast packet from a line card, the packet comprising data and a plurality of destination port addresses; storing an entry in a storage unit, the entry comprising the destination port addresses of the packet and an address of a location in a random access memory (RAM) configured to store the packet; and storing the packet in the location of the RAM.
-
Specification