IP Library Granted Patent US 7,876,713
Granted Patent B2
US 7,876,713 · App. 11/823,995 · Granted Jan 25, 2011

Label switched routing in SAS expanders

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,876,713
App. No.
11/823,995
Granted
Jan 25, 2011
Kind
B2
Abstract

The attaching of labels to an OPEN frame and applying label switched routing to SAS expanders is disclosed to eliminate the need for large routing tables in SAS networks. A label stack is inserted into the OPEN frame by the initiator, prior to the OPEN frame being transmitted. Each label contains the egress port for a SAS expander in the transmit path. Each SAS expander to be participating in the connection reads the labels to determine the egress port to connect to and through which data is to be sent. The SAS expander marks its label invalid or discards it and forwards the OPEN frame to the egress port where the next SAS expander will look for the first valid label. The process repeats until the OPEN frame reaches the edge device, at which time all labels are discarded and the OPEN frame is forwarded to the end device.

Claims (93)

1. A Serial Attached SCSI (SAS) expander, comprising:

a plurality of ports; and

label switching logic for assisting in establishing a connection between an initiator and a target device, the label switching logic having one or more processors configured for

receiving a forward OPEN frame containing a forward label stack of egress port labels for a forward path from the initiator to the target device through one or more SAS expanders,

identifying a first valid egress port label in the forward label stack,

altering the forward label stack to account for the identification of the first valid egress port label, and

routing the forward OPEN frame including the altered forward label stack to an egress port associated with the first valid egress port label.

2. The SAS expander of claim 1 , wherein altering the forward label stack comprises changing the first valid egress port label to an invalid state after reading the first valid egress port label.

3. The SAS expander of claim 1 , wherein altering the forward label stack comprises popping the first valid egress port label off of the forward label stack after reading the first valid egress port label.

4. The SAS expander of claim 1 , wherein altering the forward label stack comprises removing the forward label stack from the forward OPEN frame if a target device is connected to the egress port associated with the first valid egress label.

5. The SAS expander of claim 1 , further comprising a table for storing ingress port labels, wherein the one or more processors of the label switching logic are further configured for:

receiving a return OPEN frame for a return path from the target device;

constructing a return label stack from the ingress port labels stored in the table;

identifying a first valid ingress port label in the return label stack; and

routing the return OPEN frame including the return label stack to an ingress port associated with the first valid ingress port label.

6. The SAS expander of claim 5 , wherein the ingress port labels are determined during a discovery process performed by the SAS expander.

7. The SAS expander of claim 5 , wherein the ingress port labels stored in the table are determined through a process comprising:

at each of the SAS expanders that receives the forward OPEN frame, altering the forward label stack after identifying the first valid egress port label by replacing the first valid egress port label with an ingress port label associated with an ingress port through which the forward OPEN frame was received.

8. The SAS expander of claim 1 , wherein the one or more processors of the label switching logic are further configured for:

receiving a return OPEN frame containing a return label stack of ingress port labels for a return path from the target device to the initiator;

identifying a first valid ingress port label in the return label stack;

altering the return label stack to account for the identification of the first valid ingress port label; and

routing the return OPEN frame including the altered return label stack to an ingress port associated with the first valid ingress port label.

9. The SAS expander of claim 8 , wherein altering the return label stack comprises changing the first valid ingress port label to an invalid state after reading the first valid ingress port label.

10. The SAS expander of claim 8 , wherein altering the return label stack comprises popping the first valid ingress port label off of the return label stack after reading the first valid ingress port label.

11. The SAS expander of claim 8 , wherein altering the return label stack comprises removing the return label stack from the return OPEN frame if the initiator is connected to the ingress port associated with the first valid ingress label.

12. The SAS expander of claim 1 , wherein the SAS expander is integrated in a server.

13. The SAS expander of claim 1 , wherein the SAS expander is integrated in a storage network.

14. An initiator for establishing a connection between the initiator and a target device through one or more Serial Attached SCSI (SAS) expanders within a storage network, the initiator comprising:

a plurality of ports; and

a processor programmed for

determining egress ports for all SAS expanders in a forward path from the initiator to the target device during a discovery process,

constructing a forward label stack based upon the determined egress ports,

inserting the forward label stack into a forward OPEN frame, and

transmitting the forward OPEN frame to a first SAS expander in the forward path.

15. A method for assisting in establishing a connection between an initiator and a target device through one or more Serial Attached SCSI (SAS) expanders, the method comprising:

receiving a forward OPEN frame at a Serial Attached SCSI (SAS) expander, the forward OPEN frame containing a forward label stack of egress port labels for a forward path from the initiator to the target device;

identifying a first valid egress port label in the forward label stack;

altering the forward label stack to account for the identification of the first valid egress port label; and

routing the forward OPEN frame including the altered forward label stack to an egress port associated with the first valid egress port label.

16. The method of claim 15 , wherein altering the forward label stack comprises changing the first valid egress port label to an invalid state after reading the first valid egress port label.

17. The method of claim 15 , wherein altering the forward label stack comprises popping the first valid egress port label off of the forward label stack after reading the first valid egress port label.

18. The method of claim 15 , wherein altering the forward label stack comprises removing the forward label stack from the forward OPEN frame if a target device is connected to the egress port associated with the first valid egress label.

19. The method of claim 15 , further comprising:

receiving a return OPEN frame at the SAS expander for a return path from the target device;

constructing a return label stack from ingress port labels stored in a table in the SAS expander;

identifying a first valid ingress port label in the return label stack; and

routing the return OPEN frame including the return label stack to an ingress port associated with the first valid ingress port label.

20. The method of claim 19 , further comprising determining the ingress port labels during a SAS expander discovery process.

21. The method of claim 19 , wherein the ingress port labels stored in the table are determined through a process comprising:

at each of the SAS expanders that receives the forward OPEN frame, altering the forward label stack after identifying the first valid egress port label by replacing the first valid egress port label with an ingress port label associated with an ingress port through which the forward OPEN frame was received.

22. The method of claim 15 , further comprising:

receiving a return OPEN frame at the SAS expander containing a return label stack of ingress port labels for a return path from the target device to the initiator;

identifying a first valid ingress port label in the return label stack;

altering the return label stack to account for the identification of the first valid ingress port label; and

routing the return OPEN frame including the altered return label stack to an ingress port associated with the first valid ingress port label.

23. The method of claim 22 , wherein altering the return label stack comprises changing the first valid ingress port label to an invalid state after reading the first valid ingress port label.

24. The method of claim 22 , wherein altering the return label stack comprises popping the first valid ingress port label off of the return label stack after reading the first valid ingress port label.

25. The method of claim 22 , wherein altering the return label stack comprises removing the return label stack from the return OPEN frame if the initiator is connected to the ingress port associated with the first valid ingress label.

26. A method performed by an initiator for establishing a connection between the initiator and a target device through one or more Serial Attached SCSI (SAS) expanders, the method comprising:

determining egress ports for all SAS expanders in a forward path from the initiator to the target device during a discovery process;

constructing a forward label stack based upon the determined egress ports;

inserting the forward label stack into a forward OPEN frame; and

transmitting the forward OPEN frame to a first SAS expander in the forward path.

27. A non-transitory computer-readable medium comprising processor-executable program code for assisting in establishing a connection between an initiator and a target device through one or more Serial Attached SCSI (SAS) expanders in a storage network, the program code, while executed, causing one or more processors to perform a method comprising:

receiving a forward OPEN frame at a Serial Attached SCSI (SAS) expander, the forward OPEN frame containing a forward label stack of egress port labels for a forward path from the initiator to the target device;

identifying a first valid egress port label in the forward label stack;

altering the forward label stack to account for the identification of the first valid egress port label; and

routing the forward OPEN frame including the altered forward label stack to an egress port associated with the first valid egress port label.

28. The non-transitory computer-readable medium of claim 27 , wherein altering the forward label stack comprises changing the first valid egress port label to an invalid state after reading the first valid egress port label.

29. The non-transitory computer-readable medium of claim 27 , wherein altering the forward label stack comprises popping the first valid egress port label off of the forward label stack after reading the first valid egress port label.

30. The non-transitory computer-readable medium of claim 27 , wherein altering the forward label stack comprises removing the forward label stack from the forward OPEN frame if a target device is connected to the egress port associated with the first valid egress label.

31. The non-transitory computer-readable medium of claim 27 , wherein the program code, while executed, further causes the one or more processors to perform:

receiving a return OPEN frame at the SAS expander for a return path from the target device;

constructing a return label stack from ingress port labels stored in the SAS expander;

identifying a first valid ingress port label in the return label stack; and

routing the return OPEN frame including the return label stack to an ingress port associated with the first valid ingress port label.

32. The non-transitory computer-readable medium of claim 31 , wherein the program code, while executed, further causes the one or more processors to perform determining the ingress port labels during a SAS expander discovery process.

33. The non-transitory computer-readable medium of claim 31 , wherein the ingress port labels stored in the SAS expander are determined by:

at each of the SAS expanders that receives the forward OPEN frame, altering the forward label stack after identifying the first valid egress port label by replacing the first valid egress port label with an ingress port label associated with an ingress port through which the forward OPEN frame was received.

34. The non-transitory computer-readable medium of claim 27 , wherein the program code, while executed, further causes the one or more processors to perform:

receiving a return OPEN frame at the SAS expander containing a return label stack of ingress port labels for a return path from the target device to the initiator;

identifying a first valid ingress port label in the return label stack;

altering the return label stack to account for the identification of the first valid ingress port label; and

routing the return OPEN frame including the altered return label stack to an ingress port associated with the first valid ingress port label.

35. The non-transitory computer-readable medium of claim 34 , wherein altering the return label stack comprises changing the first valid ingress port label to an invalid state after reading the first valid ingress port label.

36. The non-transitory computer-readable medium of claim 34 , wherein altering the return label stack comprises popping the first valid ingress port label off of the return label stack after reading the first valid ingress port label.

37. The non-transitory computer-readable medium of claim 34 , wherein altering the return label stack comprises removing the return label stack from the return OPEN frame if the initiator is connected to the ingress port associated with the first valid ingress label.

38. A non-transitory computer-readable medium within an initiator comprising processor-executable program code for establishing a connection between the initiator and a target device through one or more Serial Attached SCSI (SAS) expanders, the program code, while executed, causing one or more processors to perform a method comprising:

determining egress ports for all SAS expanders in a forward path from the initiator to the target device during a discovery process;

constructing a forward label stack based on the determined egress ports;

inserting the forward label stack into a forward OPEN frame; and

transmitting the forward OPEN frame to a first SAS expander in the forward path.

Assignments (7)
CORRECTIVE ASSIGNMENT TO CORRECT THE EXECUTION DATE PREVIOUSLY RECORDED AT REEL: 047422 FRAME: 0464. ASSIGNOR(S) HEREBY CONFIRMS THE MERGER. Recorded Mar 6, 2019
From: AVAGO TECHNOLOGIES GENERAL IP (SINGAPORE) PTE. LTD.
To: AVAGO TECHNOLOGIES INTERNATIONAL SALES PTE. LIMITED
Reel/Frame 048883/0702 →
MERGER Recorded Oct 5, 2018
From: AVAGO TECHNOLOGIES GENERAL IP (SINGAPORE) PTE. LTD.
To: AVAGO TECHNOLOGIES INTERNATIONAL SALES PTE. LIMITED
Reel/Frame 047422/0464 →
TERMINATION AND RELEASE OF SECURITY INTEREST IN PATENTS Recorded Feb 3, 2017
From: BANK OF AMERICA, N.A., AS COLLATERAL AGENT
To: AVAGO TECHNOLOGIES GENERAL IP (SINGAPORE) PTE. LTD.
Reel/Frame 041710/0001 →
PATENT SECURITY AGREEMENT Recorded Feb 11, 2016
From: AVAGO TECHNOLOGIES GENERAL IP (SINGAPORE) PTE. LTD.
To: BANK OF AMERICA, N.A., AS COLLATERAL AGENT
Reel/Frame 037808/0001 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Oct 23, 2015
From: EMULEX CORPORATION
To: AVAGO TECHNOLOGIES GENERAL IP (SINGAPORE) PTE. LTD.
Reel/Frame 036942/0213 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jan 17, 2014
From: EMULEX DESIGN AND MANUFACTURING CORPORATION
To: EMULEX CORPORATION
Reel/Frame 032087/0842 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Sep 24, 2007
From: DOHERTY, TERRENCE R.; MIES, CARL JOSEPH; WARREN, BRUCE GREGORY
To: EMULEX DESIGN & MANUFACTURING CORPORATION
Reel/Frame 019869/0465 →