Apparatus and method for performing fast fibre channel write operations over relatively high latency networks
First Claim
1. A switch comprising:
- a port configured to receive a write command frame, the frame having a header comprising an originator exchange identifier (OX_ID) field and a receiver exchange identifier (RX_ID) field, as well as a Host identifier field and a target identifier field, wherein the Host and the target identifier fields identify Host and target devices, and wherein the OX_ID and the RX_ID exchange identifier fields enable the Host and the target to keep track of various transactions between each other;
a trapping mechanism configured to trap the write command frame; and
a processor configured to process the trapped write command frame by modifying the OX_ID field of the write command frame header to include a new value of an OX_ID exchange identifier before sending the write command frame to the target;
wherein the processor is further configured to generate a transfer ready command frame, initialize a receiver exchange identifier (RX_ID) of the transfer ready command frame by assigning a value to the RX_ID field, the assigned RX_ID corresponding to a write command session,send the transfer ready command frame to the initiating Host before receiving a transfer ready command frame from the target;
receive a command frame with the assigned RX_ID value; and
use the RX_ID value as a handle for accessing information pertaining to the write command session in a sessions table, the sessions table storing information about one or more sessions or exchanges.
3 Assignments
0 Petitions
Accused Products
Abstract
A method and apparatus to improve the performance of a SCSI write over a high latency network. The apparatus includes a first Switch close to the initiator in a first SAN and a second Switch close to the target in a second SAN. In various embodiments, the two Switches are border switches connecting their respective SANs to a relatively high latency network between the two SANs. In addition, the initiator can be either directly connected or indirectly connected to the first Switch in the first SAN. The target can also be either directly or indirectly connected to the second Switch in the second SAN. During operation, the method includes the first Switch sending Transfer Ready (Xfr_rdy) frame(s) based on buffer availability to the initiating Host in response to a SCSI Write command from the Host directed to the target. The first and second Switches then coordinate with one another by sending Transfer Ready commands to each other independent of the target'"'"'s knowledge. The second switch buffers the data received from the Host until the target indicates it is ready to receive the data. Since the Switches send frames to the initiating Host independent of the target, the Switches manipulate the OX_ID and RX_ID fields in the Fiber Channel header of the various commands associated with the SCSI Write. The OX_ID and RX_ID fields are manipulated so as to trap the commands and so that the Switches can keep track of the various commands associated with the SCSI write.
80 Citations
26 Claims
-
1. A switch comprising:
-
a port configured to receive a write command frame, the frame having a header comprising an originator exchange identifier (OX_ID) field and a receiver exchange identifier (RX_ID) field, as well as a Host identifier field and a target identifier field, wherein the Host and the target identifier fields identify Host and target devices, and wherein the OX_ID and the RX_ID exchange identifier fields enable the Host and the target to keep track of various transactions between each other; a trapping mechanism configured to trap the write command frame; and a processor configured to process the trapped write command frame by modifying the OX_ID field of the write command frame header to include a new value of an OX_ID exchange identifier before sending the write command frame to the target; wherein the processor is further configured to generate a transfer ready command frame, initialize a receiver exchange identifier (RX_ID) of the transfer ready command frame by assigning a value to the RX_ID field, the assigned RX_ID corresponding to a write command session, send the transfer ready command frame to the initiating Host before receiving a transfer ready command frame from the target; receive a command frame with the assigned RX_ID value; and use the RX_ID value as a handle for accessing information pertaining to the write command session in a sessions table, the sessions table storing information about one or more sessions or exchanges. - View Dependent Claims (2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13)
-
-
14. A method comprising:
-
receiving a write command at a switch, the write command specifying a host identifier corresponding to a host device and a target identifier corresponding to a target device, the write command also including an originator exchange identifier (OX_ID) field with an assigned value and an uninitialized receiver exchange identifier (RX_ID) field with a default value, wherein the OX_ID and the RX_ID fields enable the host and the target to keep track of various transactions between each other; generating a transfer ready command at the switch;
initializing a receiver exchange identifier (RX_ID) of the transfer ready command by assigning a value to the RX_ID field, the assigned RX_ID value corresponding to a write command session;sending a transfer ready command including the initialized RX_ID to the host prior to receiving a transfer ready command from the target, wherein sending the transfer ready command to the host allows the switch to operate as a proxy for the target; modifying the originator exchange identifier (OX_ID) of the write command to generate a modified write command; forwarding the modified write command to the target; receiving a command with the assigned RX_ID value; and
using the RX_ID value as a handle for accessing information pertaining to the write command session in a sessions table, the sessions table storing information about one or more sessions or exchanges. - View Dependent Claims (15, 16)
-
-
17. An apparatus comprising:
-
means for receiving a write command at a switch, the write command specifying a host identifier corresponding to a host device and a target identifier corresponding to a target device, the write command also including an originator exchange identifier (OX_ID) field with an assigned value and an uninitialized receiver exchange identifier (RX_ID) field with a default value, wherein the OX_ID and the RX_ID exchange identifier fields enable the host and the target to keep track of various transactions between each other; means for generating a transfer ready command; means for initializing a RX_ID of the transfer ready command by assigning a value to the RX_ID field, the assigned RX_ID value corresponding to a write command session; means for sending a transfer ready command including the initialized RX_ID to the host prior to receiving a transfer ready command from the target, wherein sending the transfer ready command to the host allows the switch to operate as a proxy for the target; means for modifying the OX_ID field of the write command to generate a modified write command; means for forwarding the modified write command to the target; means for receiving a command with the assigned RX_ID value; and means for using the RX_ID value as a handle for accessing information pertaining to the write command session in a sessions table, the sessions table storing information about one or more sessions or exchanges.
-
-
18. A method comprising:
-
receiving a write command at a switch, the write command specifying a host identifier corresponding to a host device and a target identifier corresponding to a target device, the write command also including an originator exchange identifier (OX_ID) field and a receiver exchange identifier (RX_ID) field, wherein the OX_ID and the RX_ID exchange identifier fields enable the host and the target to keep track of various transactions between each other; assigning a new value to the OX_ID field in the write command; forwarding the write command to the target; receiving a transfer ready command from the target; sending the transfer ready command to the host; receiving a command with the assigned OX_ID value; and using the OX_ID value as a handle for accessing information pertaining to the write command session in a sessions table, the sessions table storing information about one or more sessions or exchanges.
-
-
19. A switch comprising:
-
an interface; a processor; and a memory, at least one of the interface, the processor or the memory being for; receiving a write command, the write command specifying a host identifier corresponding to a host device and a target identifier corresponding to a target device, the write command also including an originator exchange identifier (OX_ID) field and a receiver exchange identifier (RX_ID) field, wherein the OX_ID and the RX_ID exchange identifier fields enable the host and the target to keep track of various transactions between each other; assigning a new value to the OX-ID field in the write command; forwarding the write command to the target; receiving a transfer ready command from the target; sending the transfer ready command to the host; receiving a command with the assigned OX_ID value; and using the OX_ID value as a handle for accessing information pertaining to the write command session in a sessions table, the sessions table storing information about one or more sessions or exchanges. - View Dependent Claims (20, 21, 22, 23, 24, 25, 26)
-
Specification