GUARANTEEING AVAILABILITY OF TARGET DATA TO REMOTE INITIATORS VIA A HYBRID SOURCE/TARGET CREDIT SCHEME
A device includes a converged input/output controller that includes a physical target storage media controller, a physical network interface controller and a gateway between the storage media controller and the network interface controller, wherein gateway provides a direct connection for storage traffic and network traffic between the storage media controller and the network interface controller.
1 . A converged controller for interfacing a set of sources and a set of targets with credit-based flow control, the controller comprising:
a plurality of source-oriented queues, each source-oriented queue connected to a different source of the set of sources;
a plurality of target-oriented queues, each target-oriented queue connected to a different target of the set of targets and configured with a number of target access credits; and
a multiplexer for selectively coupling a source-oriented queue of the plurality of source-oriented queues to at least one target-oriented queue of the plurality of target-oriented queues, wherein the coupling enables a number of data accesses between a source connected to the source-oriented queue and a subset of the set of targets connected to the at least one target-oriented queue according to the credit-based flow control;
wherein the credit-based flow control limits the number of data accesses according to a number of credits allocated to the source connected to the source-oriented queue; and
wherein the number of credits is computed from the number of target access credits of the at least one target-oriented queue.
2 . The controller of claim 1 , wherein the number of credits allocated to the source connected to the source-oriented queue is less than or equal to a depth of the source-oriented queue.
3 . The controller of claim 2 , wherein the depth of each of the plurality of source-oriented queues is less than or equal to a total depth of all the plurality of target-oriented queues.
4 . The controller of claim 3 , wherein at least one of the set of targets is a direct connected data storage.
5 . The controller of claim 3 , wherein at least one of the set of sources is an ethernet device.
6 . The controller of claim 1 , wherein the number of credits allocated to the source connected to the source-oriented queue is based at least in part on a size of command buffers of the subset of targets.
7 . The controller of claim 3 , wherein each of the plurality of target-oriented queues are sized according to a size of a command buffer of a connected target.
8 . The controller of claim 1 , wherein credits are allocated to the source in response a data transfer request from the source.
9 . The controller of claim 1 , further comprising a physical storage media controller, a physical network interface controller and a direct connection therebetween for performing data accesses between the source connected to the source-oriented queue and the subset of targets connected to the at least one target-oriented queue.
10 . A method for source-oriented credit-based scheduling of data flow :
providing a set of target access credits to a plurality of target-oriented queues for accessing target resources;
mapping with a multiplexer a source-oriented queue of a plurality of source-oriented queues to a portion of the plurality of target-oriented queues;
providing a set of source access credits for the source-oriented queue of the plurality of source-oriented queues responsive to a request from at least one of a plurality of source resources connected to the plurality of source-oriented queues to access the target resources; and
limiting a maximum number of source access credits for the source-oriented queue of the plurality of source-oriented queues based on a total count of target access credits provided to the portion of the plurality of target-oriented queues.
11 . The method of claim 10 , wherein providing the set of target access credits further comprises limiting the set of target access credits to a size that is less than or equal to a total depth of the plurality of target-oriented queues.
12 . The method of claim 10 , wherein at least one of the target resources is a direct connected data storage.
13 . The method of claim 10 , wherein at least one of the plurality of source resources is an ethernet device.
14 . The method of claim 10 , wherein limiting the maximum number of source access credits further comprises sizing a depth of the source-oriented queue to the maximum number of source access credits.
15 . A storage control system comprising:
a plurality of source-oriented queues that each provide access credits to network-remote sources requesting access to storage resources controlled by a physical storage controller portion of a converged network-storage controller, wherein each of the network-remote sources is a distinct instance of the converged network-storage controller;
a plurality of target-oriented queues, wherein each target-oriented queue controls access to a local, physical storage resource by limiting a count of target access credits permitted for each local physical storage resource; and
a multiplexer for mapping the plurality of source-oriented queues to the plurality of target-oriented queues, wherein a maximum number of access credits permitted for each of the plurality of source-oriented queues is limited by the multiplexer to no more than a total number of target access credits available from the plurality of target-oriented queues with which each source queue of the plurality of source-oriented queues is multiplexed.
16 . The system of claim 15 , wherein access bandwidth and access latency are guaranteed independent of a number of a local, physical storage resources.
17 . The system of claim 15 , wherein access bandwidth and access latency are guaranteed independent of a number of converged network-storage controllers.
18 . A method of guaranteeing predictable access latency in a network-distributed storage system, comprising:
multiplexing a plurality of source-oriented queues to a plurality of target-oriented queues; and
limiting a maximum size of each of the plurality of source-oriented queues to no more than a combined size of the plurality of target-oriented queues with which the plurality of source-oriented queues are multiplexed.
19 . The method of claim 18 , further comprising allocating credits to a source coupled to a multiplexed source-oriented queue in response a data transfer request from the source.
20 . The method of claim 18 , further comprising limiting a count of credits allocated to a source coupled to at least one of the plurality of source-oriented queues to the maximum size of each of the plurality of source-oriented queues for a credit-based flow control of data transfer.