US2002059439A1PendingUtilityA1

Streaming method and system for fibre channel network devices

Priority: Feb 26, 1999Filed: Nov 30, 2001Published: May 16, 2002
Est. expiryFeb 26, 2019(expired)· nominal 20-yr term from priority
H04L 49/90H04L 49/9005G06F 3/0659G06F 3/0626H04L 67/1097G06F 3/067H04L 45/60H04L 69/18H04L 47/6245
44
PatentIndex Score
0
Cited by
0
References
0
Claims

Abstract

A system and method are disclosed for processing commands to network target devices through a SCSI router in a Fiber Channel network having a plurality of Fiber Channel hosts. The system and method are implemented in the SCSI router and include receiving a command from one of the plurality of Fiber Channel hosts and, if the command is for a transfer of data larger than a threshold size, streaming the data to the target device. If a preset size memory block is free, a data block is requested from the Fiber Channel host that issued the command. Otherwise, the method of this invention waits to request the data block until the preset size memory block is free. The SCSI router receives the data block and stores the data block in a FIFO queue. The method of this invention repeats until an initial number of data blocks are stored in the FIFO queue. The command and the first data block received are forwarded to the network target device. The target device requests additional data blocks as needed and the SCSI router forwards the data blocks in the FIFO queue until a trigger number of data blocks remain in the FIFO queue. Additional data blocks are requested and received from the Fiber Channel host simultaneously with the forwarding of data blocks to the target device. The target device requests data blocks from the SCSI router until all of the data associated with the command has been transferred.

Claims

exact text as granted — not AI-modified
What is claimed is:  
     
         1 . A method for processing a command to a sequential access target device (“SATD”) through a first router, capable of communicating using a first protocol, in a network having a first host, capable of communicating using a second protocol different from the first protocol, the method comprising, in the first router: 
 receiving the command from the first host;  
 if the command requires a transfer of data larger than a threshold size, streaming the data to the SATD; and  
 if the command requires a data transfer smaller than the threshold size, storing the data in one or more memory buffers as they become available and forwarding the data to the SATD.  
 
     
     
         2 . The method of  claim 1 , wherein streaming the data to the SATD comprises: 
 (a) determining if a preset size memory block is free;    (b) if the preset size memory block is free, requesting a data block from the first host, otherwise holding-off the first host;    (c) receiving the data block from the first host and storing the data block in a FIFO queue;    (d) repeating (a)-(c) until an initial number of data blocks are received and stored in the FIFO queue;    (e) forwarding the command and a first data block in the FIFO queue to the SATD;    (f) receiving a request from the SATD for a next data block;    (g) forwarding the next data block in the FIFO queue to the SATD;    (h) repeating (f)-(g) until a trigger number of data blocks remain in the FIFO queue;    (i) requesting an additional data block from the first host;    (j) receiving the additional data block and storing it in the FIFO queue;    (k) receiving a request from the SATD for the next data block and forwarding the next data block in the FIFO queue; and    ( 1 ) repeating (i)-(k) until all the data has been transferred.    
     
     
         3 . The method of  claim 2 , wherein holding-off the first host comprises: 
 placing the command in a command queue; and    reissuing the command internally in the first router and responding to the command once the preset size memory block is free.    
     
     
         4 . The method of  claim 2 , wherein said requesting the data block from the first host comprises issuing a transfer ready signal.  
     
     
         5 . The method of  claim 2 , wherein the one or more memory buffers are 4 kilobyte buffers, the threshold size is 192 kilobytes, the preset size memory block is 64 kilobytes, the initial number of data blocks stored in the FIFO queue is three, and the trigger number of data blocks is one.  
     
     
         6 . The method of  claim 2 , wherein the data block size is equal to the preset size memory block.  
     
     
         7 . The method of  claim 2 , wherein the one or more memory buffers comprise at least two different sizes.  
     
     
         8 . The method of  claim 2 , further comprising initializing one or more memory modules as the one or more memory buffers and wherein the preset size memory block comprises at least one of the one or more memory buffers.  
     
     
         9 . The method of  claim 8 , further comprising creating a buffer queue having pointers to empty ones of the one or more memory buffers.  
     
     
         10 . The method of  claim 1 , wherein the command is a write command.  
     
     
         11 . The method of  claim 1 , wherein the network comprises a single host, which is the first host.  
     
     
         12 . The method of  claim 1 , wherein the network comprises a plurality of routers including the first router.  
     
     
         13 . The method of  claim 12 , wherein at least one sequential access target device is communicatively connected to each of the plurality of routers.  
     
     
         14 . The method of  claim 1 , wherein said first protocol is a SCSI protocol.  
     
     
         15 . The method of  claim 17  wherein said second protocol is a Fibre Channel protocol.  
     
     
         16 . The method of  claim 1 , wherein said first router is a Fibre Channel-to-SCSI router, said network is a Fibre Channel network, said host is a Fibre Channel host and said SATD is a SCSI device.  
     
     
         17 . A method for processing a command to a sequential access target device (“SATD”) through a first router, capable of communicating using a first protocol, in a network having a first host capable of communicating using a second protocol different from the first protocol, the method comprising, in the first router: 
 receiving a command from the first host;  
 if the command requires a data transfer larger than a threshold size, streaming the data from the SATD; and  
 if the command requires a data transfer smaller than the threshold size, storing the data in one or more memory buffers as they become available and forwarding the data to the first host.  
 
     
     
         18 . The method of  claim 17 , wherein streaming the data comprises: 
 (a) determining if a threshold number of memory blocks are free;    (b) if the threshold number of memory blocks are free, placing the threshold number of memory blocks in a buffer FIFO queue, otherwise holding-off the first host;    (c) forwarding the command and a first memory block in the buffer FIFO queue to the SATD;    (d) receiving a data block and a request for more free memory blocks from the SATD;    (e) placing the data block in a data FIFO queue;    (f) forwarding a next memory block in the buffer FIFO queue to the SATD;    (g) repeating (d)-(f) until a trigger number of memory blocks remain in the buffer FIFO queue;    (h) forwarding a first data block in the data FIFO queue to the first host;    (i) placing an additional memory block in the buffer FIFO queue and forwarding the next memory block in the buffer FIFO queue to the SATD;    (j) receiving a data block and a request for more free memory blocks from the SATD; and    (k) repeating (h)-(j) until all the data has been transferred.    
     
     
         19 . The method of  claim 18 , wherein holding-off the first host comprises: 
 placing the command in a command queue; and    reissuing the command internally in the first router and responding to the command once the threshold number of memory blocks are free.    
     
     
         20 . The method of  claim 18 , wherein the one or more memory buffers are 4 kilobyte buffers, the threshold number of memory blocks is three, each memory block is a 64 kilobyte memory block, and the trigger number of memory blocks is one.  
     
     
         21 . The method of  claim 18 , wherein the data block size is equal to the memory block size.  
     
     
         22 . The method of  claim 18 , further comprising the step of initializing one or more memory modules as the one or more memory buffers and wherein each memory block comprises at least one of the one or more memory buffers.  
     
     
         23 . The method of  claim 22 , further comprising creating a buffer queue having pointers to empty ones of the one or more memory buffers.  
     
     
         24 . The method of  claim 17 , wherein the command is a read command.  
     
     
         25 . The method of  claim 17 , wherein the network further comprises a single host, which is the first host.  
     
     
         26 . The method of  claim 17 , wherein the network further comprises a plurality of routers including the first router.  
     
     
         27 . The method of  claim 26 , wherein at least one streaming target device is communicatively connected to each of the plurality of routers.  
     
     
         28 . The method of  claim 17 , wherein said first protocol is a SCSI protocol.  
     
     
         29 . The method of  claim 17 , wherein said second protocol is a Fibre Channel protocol.  
     
     
         30 . The method of  claim 17 , wherein said first router is a Fibre Channel-to-SCSI router, said network is a Fibre Channel network, said host is a Fibre Channel host and said SATD is a SCSI device.  
     
     
         31 . A method for processing a command to a random access target device (“RATD”) through a first router, capable of communicating using a first protocol, in a network having a first host, capable of communicating using a second protocol different from the first protocol, the method comprising, in the first router: 
 receiving a command from the first host;  
 if the command requires a transfer of data larger than a threshold size, streaming the data to the RATD; and  
 if the command requires a data transfer smaller than the threshold size, storing the data in one or more memory buffers as they become available and forwarding the data to the RATD.  
 
     
     
         32 . The method of  claim 31 , wherein streaming the data to the RATD comprises: 
 (a) determining if a preset size memory block is free;    (b) if the preset size memory block is free, requesting a data block from the first host, otherwise holding-off the first host;    (c) receiving the data block, setting the transfer length and starting address, and storing the data block in a FIFO queue;    (d) repeating (a)-(c) until an initial number of data blocks are received and stored in the FIFO queue;    (e) forwarding to the RATD a first data block in the FIFO queue and a new command for a data transfer equal to the transfer length;    (f) receiving a command complete message from the RATD;    (g) forwarding to the RATD a next data block in the FIFO queue and a next new command for a data transfer equal to the transfer length;    (h) repeating (f)-(g) until a trigger number of data blocks remain in the FIFO queue;    (i) requesting an additional data block from the first host;    (j) receiving the additional data block, setting the transfer length and starting address, and storing the data block in the FIFO queue;    (k) forwarding to the RATD the next data block in the FIFO queue and a new command for a data transfer equal to the transfer length;    (l) receiving a command complete message from the RATD; and    (m) repeating (i)-(l) until all the data has been transferred.    
     
     
         33 . The method of  claim 32 , wherein holding-off the first host comprises: 
 placing the command in a command queue; and    reissuing the command internally in the first router and responding to the command once the preset size memory block is free.    
     
     
         34 . The method of  claim 32 , wherein the one or more memory buffers are 4 kilobyte buffers, the threshold size is 192 kilobytes, the preset size memory block is 64 kilobytes, the initial number of data blocks stored in the FIFO queue is one, the trigger number of data blocks is zero, and the transfer length is equal to the data block size.  
     
     
         35 . The method of  claim 32 , wherein the data block size is equal to the preset size memory block.  
     
     
         36 . The method of  claim 32 , further comprising initializing one or more memory modules as the one or more memory buffers and wherein the preset size memory block comprises at least one of the one or more memory buffers.  
     
     
         37 . The method of  claim 36 , further comprising creating a buffer queue having pointers to empty ones of the one or more memory buffers.  
     
     
         38 . The method of  claim 31 , wherein the command is a write command.  
     
     
         39 . The method of  claim 31 , wherein the network further comprises a single host, which is the first host.  
     
     
         40 . The method of  claim 31 , wherein the network further comprises a plurality of routers, including the first router.  
     
     
         41 . The method of  claim 40 , wherein at least one random access target device is communicatively connected to each of the plurality of routers.  
     
     
         42 . The method of  claim 31 , wherein said first protocol is a SCSI protocol.  
     
     
         43 . The method of  claim 31 , wherein said second protocol is a Fibre Channel protocol.  
     
     
         44 . The method of  claim 31 , wherein said first router is a Fibre Channel-to-SCSI router, said network is a Fibre Channel network, said host is a Fibre Channel host and said RATD is a SCSI device.  
     
     
         45 . A method for processing a command to a random access target device (“RATD”) through a first router, capable of communicating using a first protocol, in a network having a first host capable of communicating using a second protocol different from the first protocol, the method comprising, in the first router: 
 receiving a command from the first host;  
 if the command requires a data transfer larger than a threshold size, streaming the data from the RATD; and  
 if the command requires a data transfer smaller than the threshold size, storing the data in one or more memory buffers as they become available and forwarding the data to the first host.  
 
     
     
         46 . The method of  claim 45 , wherein streaming the data comprises: 
 (a) determining if a threshold number of memory blocks are free;    (b) if the threshold number of memory blocks are free, placing the threshold number of memory blocks in a buffer FIFO queue, otherwise holding-off the first host;    (c) setting the data transfer length and starting address, and forwarding to the RATD a first memory block in the buffer FIFO queue and a new command for a data transfer equal to the data transfer length;    (d) receiving a data block and a command complete message from the RATD, and placing the data block in a data FIFO queue;    (e) repeating (c)-(d) until a trigger number of memory blocks remain in the buffer FIFO queue;    (f) forwarding a first data block in the data FIFO queue to the first host;    (g) placing an additional memory block in the buffer FIFO queue, setting the data transfer length and starting address, and forwarding to the RATD the next memory block in the buffer FIFO queue and a next new command for a data transfer equal to the data transfer length;    (h) receiving a data block and command complete message from the RATD and placing the data block in the data FIFO queue; and    (i) repeating (f)-(h) until all the data has been transferred.    
     
     
         47 . The method of  claim 46 , wherein holding-off the first host: 
 placing the command in a command queue; and    reissuing the command internally in the first router and responding to the command once the threshold number of memory blocks are free.    
     
     
         48 . The method of  claim 43 , wherein the one or more memory buffers are 4 kilobyte buffers, the threshold number of memory blocks is three, each memory block is a 64 kilobyte memory block, and the trigger number of memory blocks is one.  
     
     
         49 . The method of  claim 46 , wherein the data block size is equal to the memory block size, and the transfer length is equal to the data block size.  
     
     
         50 . The method of  claim 46 , further comprising initializing one or more memory modules as one or more memory buffers and wherein each memory block comprises at least one of the one or more memory buffers.  
     
     
         51 . The method of  claim 50 , further comprising creating a buffer queue having pointers to empty ones of the one or more memory buffers.  
     
     
         52 . The method of  claim 45 , wherein the command is a read command.  
     
     
         53 . The method of  claim 45 , wherein the network further comprises a single host, which is the first host.  
     
     
         54 . The method of  claim 45 , wherein the network further comprises a plurality of routers, including the first router.  
     
     
         55 . The method of  claim 54 , wherein at least one RATD is communicatively connected to each of the plurality of routers.  
     
     
         56 . The method of  claim 45 , wherein said first protocol is a SCSI protocol.  
     
     
         57 . The method of  claim 45 , wherein said second protocol is a Fibre Channel protocol.  
     
     
         58 . The method of  claim 45 , wherein said first router is a Fibre Channel-to-SCSI router, said network is a Fibre Channel network, said host is a Fibre Channel host and said RATD is a SCSI device.

Join the waitlist — get patent alerts

Track US2002059439A1 — get alerts on status changes and closely related new filings.

We store only your email — no account needed. See our privacy policy.