US9270786B1ActiveUtility

System and method for proxying TCP connections over a SCSI-based transport

81
Assignee: PITTMAN JOSEPH CPriority: Dec 21, 2012Filed: Dec 21, 2012Granted: Feb 23, 2016
Est. expiryDec 21, 2032(~6.5 yrs left)· nominal 20-yr term from priority
H04L 67/01H04L 67/1097H04L 67/42G06F 3/0661G06F 3/067G06F 3/0607
81
PatentIndex Score
7
Cited by
100
References
33
Claims

Abstract

A system and method for executed by a server for communicating between the server and a client over a Fiber Channel (FC) network. The method includes receiving, from the client, a first SCSI request including an identifier for a virtual connection and a descriptor for a server process at the server, creating a socket to the server process using the process descriptor, associating the socket with the virtual connection, receiving, from the client, a second SCSI request, including the virtual connection identifier and a call message, and writing the call message to the socket associated with the virtual connection.

Claims

exact text as granted — not AI-modified
What is claimed is: 
     
       1. A computer-implemented method executed by a server for communicating between the server and a client over a Fibre Channel (FC) network, the method comprising:
 receiving, at a server, a catalog of available transport paths from a client over the FC network, the transport paths established based on fibre channel protocol, each transport path having a load indicator indicating a measured condition of resource usage for the transport path; 
 in response to receiving a request from the client for a virtual connection to communicate using Small Computer System Interface (SCSI) request/response, establishing the virtual connection based a transport path selected from the catalog, the virtual connection identified by a virtual connection identifier, wherein the transport path is selected at the server based on the load indicator to minimize the measured condition of the resource usage; 
 receiving, from the client over the FC network, a first SCSI request including the virtual connection identifier for the virtual connection and a process descriptor for a server process at the server; 
 creating a socket to the server process using the process descriptor; 
 associating the socket with the virtual connection; 
 receiving, from the client over the FC network, a second SCSI request, including the virtual connection identifier and a call message, wherein the second SCSI request is created by the client in response to a status of the first SCSI request, wherein the status indicates that the first SCSI request is failed based on a transport path failure between the client and the server over the FC network, and wherein the second SCSI request is received via a new transport path in response to the transport path failure; and 
 writing the call message to the socket associated with the virtual connection. 
 
     
     
       2. The method of  claim 1 , wherein the virtual connection identifier is included in a logical block address field of a command descriptor block of the first SCSI request. 
     
     
       3. The method of  claim 1 , further comprising:
 reading a reply message from the socket associated with the virtual connection; 
 receiving, from the client over the FC network, a third SCSI request, including the virtual connection identifier; and 
 responding to the third SCSI request by sending a reply SCSI response, including the virtual connection identifier and the reply message, to the client over the FC network. 
 
     
     
       4. The method of  claim 3 , further comprising:
 polling the socket associated with the virtual connection for the reply message. 
 
     
     
       5. The method of  claim 1 , further comprising:
 responding to the first SCSI request by sending a first SCSI response to the client over the FC network, wherein the first SCSI response indicates that the virtual connection can be established, responding to the second SCSI request by sending a second SCSI response to the client over the FC network, wherein the second SCSI response includes a status code. 
 
     
     
       6. The method of  claim 1 , wherein the socket is a stream socket. 
     
     
       7. The method of  claim 3 , wherein the virtual connection identifier and the reply message are included in a payload of the reply SCSI response. 
     
     
       8. The method of  claim 7 , wherein the payload of the reply SCSI response further includes one of a virtual connection tuple value and a sequence number. 
     
     
       9. The method of  claim 2 , wherein the second SCSI request includes a payload having the call message and a logical block address field having a plurality of parameters, including the virtual connection identifier. 
     
     
       10. The method of  claim 9 , further comprising:
 validating the second SCSI request; and 
 extracting the call message from the second SCSI request. 
 
     
     
       11. The method of  claim 10 , wherein validating the second SCSI request comprises:
 comparing a parameter of the plurality included in the logical block address of the second SCSI request to an expected parameter. 
 
     
     
       12. A non-transitory computer-readable storage medium having instructions stored therein, which when executed by a server computer, cause the server computer to:
 receive a catalog of available transport paths from a client over a Fibre Channel (FC) network, the transport paths established based on fibre channel protocol each transport path having a load indictor indicating a measured condition of resource usage for the transport path; 
 in response to receiving a request from the client for a virtual connection to communicate using Small Computer System Interface (SCSI) request/response, establish the virtual connection based a transport path selected from the catalog of available transport paths, the virtual connection identified by a virtual connection identifier, wherein the transport path is selected at the server based on the load indicator to minimize the measured condition of the resource usage; 
 receive, from the client over the FC network, a first SCSI request including the virtual connection identifier and a descriptor for a server process at the server; 
 create a socket to the server process using the process descriptor; 
 associate the socket with the virtual connection identifier; 
 receive, from the client over the FC network, a second SCSI request including a call message, wherein the second SCSI request is created by the client in response to a status of the first SCSI request, wherein the status indicates that the first SCSI request is failed based on a transport path failure between the client and the server over the FC network, and wherein the second SCSI request is received via a new transport path in response to the transport path failure; and 
 write the call message to the socket associated with the virtual connection identifier. 
 
     
     
       13. The non-transitory computer-readable storage medium of  claim 12 , wherein the virtual connection identifier is included in a logical block address field of a command descriptor block of the first SCSI request. 
     
     
       14. The non-transitory computer-readable storage medium of  claim 12 , wherein the instructions when executed by the server computer further cause the server computer to:
 read a reply message from the socket associated with the virtual connection; receive, from the client over the FC network, a third SCSI request, including the virtual connection identifier; and 
 respond to the third SCSI request by sending a reply SCSI response, including the virtual connection identifier and the reply message, to the client over the FC network. 
 
     
     
       15. The non-transitory computer-readable storage medium of  claim 14 , wherein the instructions when executed by the server computer further cause the server computer to:
 poll the socket associated with the virtual connection for the reply message. 
 
     
     
       16. The non-transitory computer-readable storage medium of  claim 12 , wherein the instructions when executed by the server computer further cause the server computer to:
 respond to the first SCSI request by sending a first SCSI response to the client over the FC network, wherein the first SCSI response indicates that the virtual connection can be established, respond to the second SCSI request by sending a second SCSI response to the client over the FC network, wherein the second SCSI response includes a status code. 
 
     
     
       17. The non-transitory computer-readable storage medium of  claim 12 , wherein the socket is a stream socket. 
     
     
       18. The non-transitory computer-readable storage medium of  claim 14 , wherein the virtual connection identifier and the reply message are included in a payload of the reply SCSI response. 
     
     
       19. The non-transitory computer-readable storage medium of  claim 18 , wherein the payload of the reply SCSI response further includes one of a virtual connection tuple value and a sequence number. 
     
     
       20. The non-transitory computer-readable storage medium of  claim 13 , wherein the second SCSI request includes a payload having the call message and a logical block address field having a plurality of parameters, including the virtual connection identifier. 
     
     
       21. The non-transitory computer-readable storage medium of  claim 20 , wherein the instructions when executed by the server computer further cause the server computer to:
 validate the second SCSI request; and 
 extract the call message from the second SCSI request. 
 
     
     
       22. The non-transitory computer-readable storage medium of  claim 21 , wherein validating the second SCSI request comprises:
 comparing a parameter of the plurality included in the logical block address of the second SCSI request to an expected parameter. 
 
     
     
       23. A server system, comprising:
 a server host bus adapter to communicate Small Computer System Interface (SCSI) requests and responses over a Fibre Channel (FC) network with a client; 
 
       a processor communicatively coupled with the server host bus adapter, the processor to execute a server Fibre Channel adapter configured
 to receive a catalog of available transport paths from the client over the FC network, the transport paths established based on fibre channel protocol, each transport path having a load indicator indicating a measured condition of resource usage for the transport path; 
 in response to receiving a request from the client for a virtual connection to communicate using SCSI request/response, establish the virtual connection based a transport path selected from the catalog of available transport paths, the virtual connection identified by a virtual connection identifier, wherein the transport path is selected at the server based on the load indicator to minimize the measured condition of the resource usage; 
 to receive, from the client over the FC network, a first SCSI request including the virtual connection identifier and a descriptor for a server process at the server; to create a socket to the server process using the process descriptor; 
 to associate the socket with the virtual connection identifier; to receive, from the client over the FC network, a second SCSI request including a call message, wherein the second SCSI request is created by the client in response to a status of the first SCSI request, wherein the status indicates that the first SCSI request is failed based on a transport path failure between the client and the server over the FC network, and wherein the second SCSI request is received via a new transport path in response to the transport path failure; and 
 to write the call message to the socket associated with the virtual connection identifier. 
 
     
     
       24. The server system of  claim 23 , wherein the virtual connection identifier is included in a logical block address field of a command descriptor block of the first SCSI request. 
     
     
       25. The server system of  claim 23 , wherein the server Fibre Channel adapter is further configured to read a reply message from the socket associated with the virtual connection identifier; to receive, from the client over the FC network, a third SCSI request, including a virtual connection identifier; and to respond to the third SCSI request by sending a reply SCSI response, including the reply message and the virtual connection identifier, to the client over the FC network. 
     
     
       26. The server system of  claim 25 , wherein the server Fibre Channel adapter is further configured to poll the socket associated with the virtual connection identifier for the reply message. 
     
     
       27. The server system of  claim 25 , wherein the server Fibre Channel adapter is further configured to respond to the first SCSI request by sending a first SCSI response, wherein the reply SCSI response includes an indication that the call message is received. 
     
     
       28. The server system of  claim 23 , wherein the socket is a stream socket. 
     
     
       29. The server system of  claim 28 , wherein the virtual connection identifier and the reply message are included in a payload of the reply SCSI response. 
     
     
       30. The server system of  claim 29 , wherein the payload of the reply SCSI response further includes one of a virtual connection tuple value and a sequence number. 
     
     
       31. The server system of  claim 28 , wherein the logical block address field of the first SCSI request further includes a timeout for writing the call message to the socket associated with the virtual connection identifier. 
     
     
       32. The server system of  claim 23 , wherein the server Fibre Channel adapter is further configured to validate the second SCSI request; and to extract the call message from the second SCSI request. 
     
     
       33. The server system of  claim 32 , wherein to validate the second SCSI request comprises:
 to compare a parameter included in a logical block address of the second SCSI request to an expected parameter.

Cited by (0)

No later patents cite this yet.

References (0)

No backward citations on record.