IP Library Granted Patent US 7,460,528
Granted Patent B1
US 7,460,528 · App. 10/414,891 · Granted Dec 2, 2008

Processing data packets at a storage service module of a switch

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,460,528
App. No.
10/414,891
Granted
Dec 2, 2008
Kind
B1
Abstract

Routing a data packet of an information unit sequence includes receiving at a switch a data packet of an information unit sequence of a block storage exchange from a storage client, where the sequence is associated with a source identifier and a target identifier identifying a target. A storage resource identifier corresponding to the target identifier is determined according to a forwarding table. A sequence identifier is associated with the source identifier, where the sequence identifier corresponds to the target. The source identifier and the sequence identifier are recorded at a context table, and the data packet is routed according to the storage resource identifier.

Claims (114)

1. A method for routing a data packet of an information unit sequence, comprising:

receiving at a switch a data packet of an information unit sequence of a block storage exchange from a storage client, the sequence associated with a source identifier and a target identifier identifying a target;

determining a storage resource identifier corresponding to the target identifier according to a forwarding table;

associating a sequence identifier with the source identifier, the sequence identifier corresponding to the target;

recording the source identifier and the sequence identifier at a context table;

routing the data packet according to the storage resource identifier;

receiving a next data packet associated with the sequence identifier; and

routing the next data packet according to the context table.

2. The method of claim 1 , wherein the sequence comprises a read command, and further comprising repeating the following until a final response is received from the storage resource:

receiving data from the storage resource; and

routing the data to the storage client using a hardware accelerator.

3. The method of claim 1 , wherein the sequence comprises a write command, and further comprising repeating the following until a final response is received from the storage client:

receiving data from the storage client; and

routing the data to the storage resource using a hardware accelerator.

4. The method of claim 1 , wherein the sequence comprises a write command corresponding to a plurality of storage resources, the plurality of storage resources comprising the storage resource, and further comprising repeating the following until a final response is received from the storage client:

receiving data from the storage client; and

routing the data to the plurality of storage resources using a hardware accelerator.

5. The method of claim 1 , wherein the sequence comprises a third party copy command to copy data from the storage resource to a destination resource, and further comprising repeating the following until a final response is received from the storage resource:

receiving data from the storage resource; and

routing the data to the destination resource.

6. A system for routing a data packet of an information unit sequence, comprising:

an interface of a switch operable to receive a data packet of an information unit sequence of a block storage exchange from a storage client, the sequence associated with a source identifier and a target identifier identifying a target; and

a processor coupled to the interface and operable to:

determine a storage resource identifier corresponding to the target identifier according to a forwarding table;

associate a sequence identifier with the source identifier the sequence identifier corresponding to the target;

record the source identifier and the sequence identifier at a context table;

route the data packet according to the storage resource identifier;

receive a next data packet associated with the sequence identifier; and

route the next data packet according to the context table.

7. The system of claim 6 , wherein the sequence comprises a read command, and the processor is further operable to repeat the following until a final response is received from the storage resource:

receive data from the storage resource: and

route the data to the storage client using a hardware accelerator.

8. The system of claim 6 , wherein the sequence comprises a write command, and the processor is further operable to repeat the following until a final response is received from the storage client:

receive data from the storage client; and

route the data to the storage resource using a hardware accelerator.

9. The system of claim 6 , wherein the sequence comprises a write command corresponding to a plurality of storage resources, the plurality of storage resources comprising the storage resource, the processor is further operable to repeat the following until a final response is received from the storage client:

receive data from the storage client; and

route the data to the plurality of storage resources using a hardware accelerator.

10. The system of claim 6 , wherein the sequence comprises a third party copy command to copy data from the storage resource to a destination resource, and the processor is further operable to repeat the following until a final response is received from the storage resource:

receive data from the storage resource; and

route the data to the destination resource.

11. Logic for routing a data packet of an information unit sequence, the logic embodied in a computer readable storage medium and operable to:

receive at a switch a data packet of an information unit sequence of a block storage exchange from a storage client, the sequence associated with a source identifier and a target identifier identifying a target;

determine a storage resource identifier corresponding to the target identifier according to a forwarding table;

associate a sequence identifier with the source identifier, the sequence identifier corresponding to the target;

record the source identifier and the sequence identifier at a context table;

route the data packet according to the storage resource identifier;

receive a next data packet associated with the sequence identifier; and

route the next data packet according to the context table.

12. The logic of claim 11 , wherein the sequence comprises a read command, and further operable to repeat the following until a final response is received from the storage resource:

receive data from the storage resource; and

route the data to the storage client using a hardware accelerator.

13. The logic of claim 11 , wherein the sequence comprises a write command, and further operable to repeat the following until a final response is received from the storage client:

receive data from the storage client; and

route the data to the storage resource using a hardware accelerator.

14. The logic of claim 11 , wherein the sequence comprises a write command corresponding to a plurality of storage resources, the plurality of storage resources comprising the storage resource, and further operable to repeat the following until a final response is received from the storage client:

receive data from the storage client; and

route the data to the plurality of storage resources using a hardware accelerator.

15. The logic of claim 11 , wherein the sequence comprises a third party copy command to copy data from the storage resource to a destination resource, and further operable to repeat the following until a final response is received from the storage resource:

receive data from the storage resource; and

route the data to the destination resource.

16. A system for routing a data packet of an information unit sequence, comprising:

means for receiving at a switch a data packet of an information unit sequence of a block storage exchange from a storage client, the sequence associated with a source identifier and a target identifier identifying a target;

means for determining a storage resource identifier corresponding to the target identifier according to a forwarding table;

means for associating a sequence identifier with the source identifier, the sequence identifier corresponding to the target;

means for recording the source identifier and the sequence identifier at a context table;

means for routing the data packet according to the storage resource identifier,

means for receiving a next data packet associated with the sequence identifier; and

routing the next data packet according to the context table.

17. A method for routing a data packet of an information unit sequence, comprising:

receiving at a switch a data packet of an information unit sequence of a block storage exchange from a storage client, the sequence associated with a source identifier and a target identifier identifying a target;

determining a storage resource identifier corresponding to the target identifier according to a forwarding table;

associating a sequence identifier with the source identifier, the sequence identifier corresponding to the target;

recording the source identifier and the sequence identifier at a context table;

routing the data packet according to the storage resource identifier;

receiving a next data packet associated with the sequence identifier, and routing the next data packet according to the context table;

repeating the following until a final response is received from the storage resource if the sequence comprises a read command: receiving data from the storage resource, and routing the data to the storage client using a hardware accelerator;

repeating the following until a final response is received from the storage client if the sequence comprises a first write command: receiving data from the storage client, and routing the data to the storage resource using a hardware accelerator;

repeating the following until a final response is received from the storage client if the sequence comprises a second write command corresponding to a plurality of storage resources, the plurality of storage resources comprising the storage resource: receiving data from the storage client, and routing the data to the plurality of storage resources using a hardware accelerator; and

repeating the following until a final response is received from the storage resource if the sequence comprises a third party copy command to copy data from the storage resource to a destination resource: receiving data from the storage resource, and routing the data to the destination resource.

18. A method for routing a data packet, comprising:

receiving at a switch a first data packet from a storage client, the first data packet having a first source address and a first destination address, the first destination address corresponding to a target identifier;

determining a storage resource address corresponding to the target identifier;

rewriting the first destination address of the first data packet at a hardware accelerator, the rewritten first destination address comprising the storage resource address;

routing the first data packet according to the rewritten first destination address;

assigning an identifier to the first data packet;

recording the first source address of the first data packet at the switch;

receiving at the switch a second data packet from a storage resource corresponding to the storage resource address, the second data packet having a second source address and a second destination address, the second data packet associated with the identifier assigned to the first data packet;

retrieving the recorded first source address in accordance with the identifier assigned to the first data packet;

rewriting the second destination address of the first data packet at the hardware accelerator, the rewritten second destination address comprising the first source address; and

routing the first data packet according to the rewritten second destination address.

19. A system for routing a data packet, comprising:

an input operable to receive at a switch a first data packet from a storage client, the first data packet having a first source address and a first destination address, the first destination address corresponding to a target identifier; and

a processor coupled to the input and operable to:

determine a storage resource address corresponding to the target identifier;

rewrite the first destination address of the first data packet at a hardware accelerator, the rewritten first destination address comprising the storage resource address;

route the first data packet according to the rewritten first destination address;

assign an identifier to the first data packet;

record the first source address of the first data packet at the switch;

receive at the switch a second data packet from a storage resource corresponding to the storage resource address, the second data packet having a second source address and a second destination address, the second data packet associated with the identifier assigned to the first data packet;

retrieve the recorded first source address in accordance with the identifier assigned to the first data packet;

rewrite the second destination address of the first data packet at the hardware accelerator, the rewritten second destination address comprising the first source address; and

route the first data packet according to the rewritten second destination address.

20. Logic for routing a data packet, the logic embodied in a computer readable storage medium and operable to:

receive at a switch a first data packet from a storage client, the first data packet having a first source address and a first destination address, the first destination address corresponding to a target identifier;

determine a storage resource address corresponding to the target identifier;

rewrite the first destination address of the first data packet at a hardware accelerator, the rewritten first destination address comprising the storage resource address;

route the first data packet according to the rewritten first destination address;

assign an identifier to the first data packet;

record the first source address of the first data packet at the switch;

receive at the switch a second data packet from a storage resource corresponding to the storage resource address, the second data packet having a second source address and a second destination address, the second data packet associated with the identifier assigned to the first data packet;

retrieve the recorded first source address in accordance with the identifier assigned to the first data packet;

rewrite the second destination address of the first data packet at the hardware accelerator, the rewritten second destination address comprising the first source address; and

route the first data packet according to the rewritten second destination address.

Assignments (8)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Oct 18, 2018
From: BROCADE COMMUNICATIONS SYSTEMS LLC
To: AVAGO TECHNOLOGIES INTERNATIONAL SALES PTE. LIMITED
Reel/Frame 047270/0247 →
CHANGE OF NAME Recorded Dec 13, 2017
From: BROCADE COMMUNICATIONS SYSTEMS, INC.
To: BROCADE COMMUNICATIONS SYSTEMS LLC
Reel/Frame 044891/0536 →
RELEASE OF SECURITY INTEREST Recorded Jan 22, 2015
From: WELLS FARGO BANK, NATIONAL ASSOCIATION, AS COLLATERAL AGENT
To: BROCADE COMMUNICATIONS SYSTEMS, INC.; FOUNDRY NETWORKS, LLC
Reel/Frame 034804/0793 →
RELEASE OF SECURITY INTEREST Recorded Jan 21, 2015
From: BANK OF AMERICA, N.A., AS ADMINISTRATIVE AGENT
To: BROCADE COMMUNICATIONS SYSTEMS, INC.; INRANGE TECHNOLOGIES CORPORATION; FOUNDRY NETWORKS, LLC
Reel/Frame 034792/0540 →
SECURITY AGREEMENT Recorded Jan 20, 2010
From: BROCADE COMMUNICATIONS SYSTEMS, INC.; FOUNDRY NETWORKS, LLC; INRANGE TECHNOLOGIES CORPORATION; MCDATA CORPORATION; MCDATA SERVICES CORPORATION
To: WELLS FARGO BANK, NATIONAL ASSOCIATION, AS COLLATERAL AGENT
Reel/Frame 023814/0587 →
SECURITY AGREEMENT Recorded Dec 22, 2008
From: BROCADE COMMUNICATIONS SYSTEMS, INC.; FOUNDRY NETWORKS, INC.; INRANGE TECHNOLOGIES CORPORATION; MCDATA CORPORATION
To: BANK OF AMERICA, N.A. AS ADMINISTRATIVE AGENT
Reel/Frame 022012/0204 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Dec 19, 2007
From: SANERA SYSTEMS, INC.
To: BROCADE COMMUNICATIONS SYSTEMS, INC.
Reel/Frame 020271/0577 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded May 28, 2003
From: CHAMDANI, JOSEPH I.; CHAN, LITKO (NMI); REOHR, JR., RICHARD D.; YEE, WILSON K.
To: SANERA SYSTEMS INC.
Reel/Frame 014105/0626 →