Patent ID: 7706394

Claim:
A method for switching data packets in a shared-memory switch core: providing in said shared-memory switch core a collapsed virtual output queuing array with elements of said array corresponding to virtual output queues; updating, in said switch core, the collapsed virtual output queuing array upon reception of transmission requests; determining whether there is enough room in the shared memory switch core to store at least one data packet; determining whether an egress port adapter to which the at least one data packet is destined has sufficient available memory to receive at least one data packet; selecting one virtual output queue holding at least one data packet, wherein said selecting is performed only if: (a) there is enough room in the shared memory switch core, and (b) the egress port adapter has sufficient available memory to receive at least one data packet; updating said collapsed virtual output queuing array according to said virtual output queue selection; transmitting an acknowledgment to said selected virtual output queue; and forwarding a received data packet of the at least one data packet to said egress port adapter, wherein said forwarding further comprises: determining an availability of space in a relevant egress port adapter, wherein the space available in an egress port adapter is determined according to a counter associated to said egress port adapter, said counter being decremented when a data packet is forwarded to said egress port adapter and incremented upon reception of a token returned from said egress port adapter for each space becoming available; and if there is available space, transmitting immediately said received data packet to said relevant egress port adapter; else, holding said received data packet in said shared memory switch core until space becomes available in said relevant egress port adapter.