IP Library Granted Patent US 7,706,394
Granted Patent B2
US 7,706,394 · App. 10/894,582 · Granted Apr 27, 2010

System and method for collapsing VOQ's of a packet switch fabric

Assignee: International Business Machines Corporation
View Patent ↗
Loading inventors, assignments & file history…
Monitor This Case
Get email alerts when status or documents change.
Order Certified Copies
Most orders are placed with the USPTO same day — all within 24 business hours.
Order via The Patent Place →
Pre-filled with this patent's details
Quick Facts
Patent No.
US 7,706,394
App. No.
10/894,582
Granted
Apr 27, 2010
Kind
B2
Abstract

A system and a method to avoid packet traffic congestion in a shared-memory switch core, while dramatically reducing the amount of shared memory in the switch core and the associated egress buffers, is disclosed. According to the invention, the virtual output queuing (VOQ) of all ingress adapters of a packet switch fabric are collapsed into its central switch core to allow an efficient flow control. The transmission of packets from an ingress buffer to the switch core is subject to a mechanism of request/acknowledgment. Therefore, a packet is transmitted from a virtual output queue to the shared-memory switch core only if the switch core can actually forward it to the corresponding egress buffer. A token based mechanism allows the switch core to determine the egress buffer's level of occupation. Therefore, since the switch core knows the states of the input and output adapters, it is able to optimize packet switching and to avoid packet congestion. Furthermore, since a packet is admitted in the switch core only if it can be transmitted to the corresponding egress buffer, the shared memory is reduced.

Claims (48)

1. 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.

2. The method of claim 1 wherein said collapsed virtual output queuing array comprises a plurality of counters, one counter being associated to each of said virtual output queue, the counter value characterizing the number of data packets held in the corresponding virtual output queue.

3. The method of claim 2 wherein updating said collapsed virtual output queuing array further comprises incrementing by one the counter associated to the virtual output queue from which a request is received and decrementing by one the counters associated to said selected virtual output queues to which an acknowledgment is issued.

4. The method of claim 1 wherein said collapsed virtual output queuing array is made of counters, a size of which matches a size of ingress buffer operably coupled to said switch core.

5. The method of claim 1 wherein said collapsed virtual output queuing array is made of counters, a size of which is limited to count Round Trip Time (RTT) requests and wherein each of said counter has a counterpart in a corresponding ingress port adapter.

6. The method of claim 5 wherein size of said counters is further limited to one bit and wherein said requests are replaced by a set and a reset commands issued whenever, respectively, a queue is no longer empty and is becoming empty.

7. The method according to claim 1 wherein each of said requests includes the egress port destination of the corresponding data packet.

8. The method according to claim 1 wherein commands are encoded within a data packet.

9. An apparatus comprising a switch core including a plurality of input ports;

a plurality of output ports;

a shared memory to store packets ingressing on at least one of the input ports and egressing from at least one of the output ports;

memory controller operably coupled to the shared memory;

a collapsed virtual output queuing array wherein each element of the array corresponds to a virtual output queue; and

a switch controller executing an algorithm upon receiving at least one request signal and issuing at least one acknowledgment signal based upon state of at least one selective element within said array, wherein issuing said acknowledgement signal is performed only if: (a) there is enough room in the shared memory, and (b) an egress port adapter has sufficient available memory to receive a data packet;

wherein the switch controller further forwarding a received data packet to said egress port adapter, wherein said forwarding further includes:

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.

10. The apparatus of claim 9 wherein the shared-memory size is first determined according to the round trip time of the flow control information and the number of ports of said switch core.

11. The apparatus of claim 9 wherein the shared-memory size is further determined by the choice of said algorithm to select said acknowledgments returned to said ingress port adapters.

12. The apparatus according to claim 11 wherein said selection algorithm is iSLIP.

13. The apparatus of claim 9 wherein size of said egress buffer is solely determined by the round trip time of the flow control information.

14. The apparatus of claim 9 wherein commands include request, acknowledge, token, set or reset.

15. The apparatus of claim 9 further including input port adapters operably coupled to the switch core.

16. The apparatus of claim 15 further including at least one egress buffer operably coupled to the switch core.

17. The apparatus of claim 9 wherein the collapsed virtual output queue array includes a plurality of counters.

18. A method for switching data packets in a shared-memory switch core comprising:

providing, in said switch core, an array of counters wherein each counter of the array corresponds to a virtual output queue;

adjusting a value of at least one counter upon receiving request signals;

executing an algorithm which examines outstanding request signals and selecting one;

issuing from said algorithm an acknowledgment signal based upon the selected request signal, wherein issuing said acknowledgement signal is performed only if: (a) there is enough room in the shared memory, and (b) an egress port adapter has sufficient available memory to receive a data packet;

adjusting contents of a counter linked to the acknowledgment signal;

receiving, in said switch core, a data packet; and

forwarding the received data packet to selected egress port having sufficient space to accommodate said received data packet, wherein said forwarding further includes:

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.

Assignments (8)
TERMINATION AND RELEASE OF SECURITY INTEREST IN PATENT RIGHTS (REEL 062079, FRAME 0677) Recorded Mar 3, 2026
From: MORGAN STANLEY SENIOR FUNDING, INC., AS COLLATERAL AGENT
To: X CORP. (F/K/A TWITTER, INC.)
Reel/Frame 075015/0574 →
RELEASE OF SECURITY INTEREST Recorded Apr 30, 2025
From: MORGAN STANLEY SENIOR FUNDING, INC., AS COLLATERAL AGENT
To: X CORP. (F/K/A TWITTER, INC.)
Reel/Frame 071127/0240 →
RELEASE OF SECURITY INTEREST Recorded Mar 27, 2025
From: MORGAN STANLEY SENIOR FUNDING, INC.
To: X CORP. (F/K/A TWITTER, INC.)
Reel/Frame 070670/0857 →
SECURITY INTEREST Recorded Oct 28, 2022
From: TWITTER, INC.
To: MORGAN STANLEY SENIOR FUNDING, INC.
Reel/Frame 062079/0677 →
SECURITY INTEREST Recorded Oct 28, 2022
From: TWITTER, INC.
To: MORGAN STANLEY SENIOR FUNDING, INC.
Reel/Frame 061804/0001 →
SECURITY INTEREST Recorded Oct 28, 2022
From: TWITTER, INC.
To: MORGAN STANLEY SENIOR FUNDING, INC.
Reel/Frame 061804/0086 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jan 16, 2014
From: INTERNATIONAL BUSINESS MACHINES CORPORATION
To: TWITTER, INC.
Reel/Frame 032075/0404 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jan 4, 2005
From: BLANC, ALAIN; GLAISE, RENE; LE MAUT, FRANCOIS; PORET, MICHEL
To: INTERNATIONAL BUSINESS MACHINES CORPORATION
Reel/Frame 015523/0349 →
Priority Claims (1)
EP 03368073 · Jul 23, 2003 · regional
Continuity (1)
Related Publication 20050053077A1 · Mar 10, 2005