IP Library Granted Patent US 12689588
Granted Patent B2
US 12689588 · App. 18/349,487 · Granted Jul 21, 2026

ISCSI load balancing for multiple SDS LUNs

Inventors: Milan Kovacik (Brno, CZ); Kenneth Van Alstyne (Mechanicsville, VA); Stephen Hardwick (Austin, TX)
Assignee: SOFTIRON LIMITED
H04L47/125H04L45/24
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 12689588
App. No.
18/349,487
Granted
Jul 21, 2026
Kind
B2
Abstract

An apparatus includes a processor and instructions to cause the processor to identify a client to connect a logical unit number (LUN) in a software defined system (SDS) through a mesh network through gateway nodes. The mesh network includes Asymmetric Logical Unit Access (ALUA) port groups, each ALUA port group including possible connection to each of the LUNs and the client. Each gateway node includes an instance of each of the ALUA port groups. The processor balances a bandwidth load for a given ALUA across each of the gateway nodes through assignment of the LUNs in the given ALUA across the gateway nodes and to select, as a preferred path, a path from the client through a selected one of the gateway nodes to an assigned LUN from the assignment of the LUNs in the given ALUA across the gateway nodes.

Claims (94)

1 . An apparatus, comprising:

a processor; and

a non-transitory machine readable medium, the medium including instructions, the instructions, when read and executed by the processor, cause the processor to:

identify a client machine to connect to one of a plurality of logical unit numbers (LUN) in a software defined system (SDS) through a mesh network, wherein:

the client machine is to connect to a given one of the LUNs through one of a plurality of gateway nodes;

the mesh network includes a plurality of Asymmetric Logical Unit Access (ALUA) port groups,

each ALUA port group to include a possible connection to each of the LUNs and to the client; and

each gateway node includes an instance of each of the plurality of ALUA port groups;

balance a bandwidth load for a given ALUA across each of the plurality of gateway nodes through assignment of the LUNs in the given ALUA across the plurality of gateway nodes; and

select, as a preferred path, a path from the client machine through a selected one of the plurality of gateway nodes to an assigned LUN from the assignment of the LUNs in the given ALUA across the plurality of gateway nodes; and

wherein the medium includes instructions to cause the processor to balance the bandwidth load for the given ALUA across each of the plurality of gateway nodes by causing the processor to:

determine a load weight of each LUN in the given ALUA;

determine a node goal weight for all of the LUNs in the given ALUA;

determine, from an initial assignment of the LUNs in the given ALUA across the plurality of gateway nodes, a variance of each of the LUNs from the node goal weight;

in a first iteration, assign N of the LUNs to N different gateway nodes, wherein there are N different gateway nodes; and

in a second iteration, assign an unassigned LUN to each of the N different gateway nodes by matching a weight of a given unassigned LUN to a given gateway node with a closet variance from the node goal weight.

2 . The apparatus of claim 1 , wherein the medium includes instructions to cause the processor to, in the first iteration, assign N of the LUNs to N different gateway nodes by selecting the N LUNs with the highest weight.

3 . The apparatus of claim 1 , wherein the medium includes instructions to cause the processor to balance the bandwidth load for the given ALUA across each of the plurality of gateway nodes by causing the processor to, in a third iteration: for each gateway node, sum the weights of all already-assigned LUNs; and from remaining unassigned LUNs, select a lowest weighted LUN and assign the lowest weighted LUN to a given gateway node with a highest summed weight from all already-assigned LUNs.

4 . The apparatus of claim 1 , wherein the medium includes instructions to cause the processor to balance the bandwidth load for the given ALUA across each of the plurality of gateway nodes by causing the processor to, after assignment of all LUNs to the plurality of gateway nodes:

select a first gateway node of the plurality of gateway nodes, the first gateway node having a lowest aggregate weight of assigned LUNs in the given ALUA;

select a second gateway node of the plurality of gateway nodes, the second gateway node having a highest aggregate weight of assigned LUNs in the given ALUA;

evaluate a difference of weight between each assigned LUN assigned to the first gateway node and each assigned LUN assigned to the second gateway node to select a first pair of LUNs, the first pair of LUNs to include a first LUN assigned to the first gateway node and a second LUN assigned to the second gateway node, that have a lowest differential of weights compared to all combinations of LUNs between the first and second gateway nodes;

based on the difference of weight between each assigned LUN assigned to the first gateway node and each assigned LUN assigned to the second gateway node: assign the first LUN to the second gateway node in the given ALUA; and

assign the second LUN to the first gateway node in the given ALUA.

5 . The apparatus of claim 4 , wherein the medium includes instructions to cause the processor to balance the bandwidth load for the given ALUA across each of the plurality of gateway nodes by causing the processor to, after assignment of the first LUN to the second gateway node in the given ALUA and after assignment of the second LUN to the first gateway node in the given ALUA:

select a third gateway node of the plurality of gateway nodes, the third gateway node having a lowest aggregate weight of assigned LUNs in the given ALUA;

select a fourth gateway node of the plurality of gateway nodes, the fourth gateway node having a highest aggregate weight of assigned LUNs in the given ALUA;

evaluate a difference of weight between each assigned LUN assigned to the third gateway node and each assigned LUN assigned to the fourth gateway node to select a second pair of LUNs, the second pair of LUNs to include a third LUN assigned to the third gateway node and a fourth LUN assigned to the fourth gateway node, that have a lowest differential of weights compared to all combinations of LUNs between the third and fourth gateway nodes;

based on the difference of weight between each assigned LUN assigned to the third gateway node and each assigned LUN assigned to the fourth gateway node:

assign the third LUN to the fourth gateway node in the given ALUA; and

assign the fourth LUN to the third gateway node in the given ALUA.

6 . The apparatus of claim 4 , wherein the medium includes instructions to cause the processor to balance the bandwidth load for the given ALUA across each of the plurality of gateway nodes by causing the processor to, after assignment of the first LUN to the second gateway node in the given ALUA and after assignment of the second LUN to the first gateway node in the given ALUA, select the third gateway node, select the fourth gateway node, select the second pair of LUNs, assign the third LUN to the fourth gateway node, and assign the fourth LUN to the third gateway node in the given ALUA based upon a determination that assignment of the third LUN to the fourth gateway node and assignment of the fourth LUN to the third gateway node will decrease node variation.

7 . An article of manufacture comprising a non-transitory machine readable medium, the medium including instructions, the instructions, when read and executed by a processor, cause the processor to:

identify a client machine to connect to one of a plurality of logical unit numbers (LUN) in a software defined system (SDS) through a mesh network, wherein: the client machine is to connect to a given one of the LUNs through one of a plurality of gateway nodes;

the mesh network includes a plurality of Asymmetric Logical Unit Access (ALUA) port groups, each ALUA port group to include possible connection to each of the LUNs and to the client; and each gateway node includes an instance of each of the plurality of ALUA port groups;

balance a bandwidth load for a given ALUA across each of the plurality of gateway nodes through assignment of the LUNs in the given ALUA across the plurality of gateway nodes; and

select, as a preferred path, a path from the client machine through a selected one of the plurality of gateway nodes to an assigned LUN from the assignment of the LUNs in the given ALUA across the plurality of gateway nodes; and

wherein the medium includes instructions to cause the processor to balance the bandwidth load for the given ALUA across each of the plurality of gateway nodes by causing the processor to:

determine a load weight of each LUN in the given ALUA;

determine a node goal weight for all of the LUNs in the given ALUA;

determine, from an initial assignment of the LUNs in the given ALUA across the plurality of gateway nodes, a variance of each of the LUNs from the node goal weight;

in a first iteration, assign N of the LUNs to N different gateway nodes, wherein there are N different gateway nodes; and

in a second iteration, assign an unassigned LUN to each of the N different gateway nodes by matching a weight of a given unassigned LUN to a given gateway node with a closet variance from the node goal weight.

8 . The article of claim 7 , wherein the medium includes instructions to cause the processor to, in the first iteration, assign N of the LUNs to N different gateway nodes by selecting the N LUNs with the highest weight.

9 . The article of claim 7 , wherein the medium includes instructions to cause the processor to balance the bandwidth load for the given ALUA across each of the plurality of gateway nodes by causing the processor to, in a third iteration:

for each gateway node, sum the weights of all already-assigned LUNs; and

from remaining unassigned LUNs, select a lowest weighted LUN and assign the lowest weighted LUN to a given gateway node with a highest summed weight from all already-assigned LUNs.

10 . The article of claim 7 , wherein the medium includes instructions to cause the processor to balance the bandwidth load for the given ALUA across each of the plurality of gateway nodes by causing the processor to, after assignment of all LUNs to the plurality of gateway nodes:

select a first gateway node of the plurality of gateway nodes, the first gateway node having a lowest aggregate weight of assigned LUNs in the given ALUA;

select a second gateway node of the plurality of gateway nodes, the second gateway node having a highest aggregate weight of assigned LUNs in the given ALUA;

evaluate a difference of weight between each assigned LUN assigned to the first gateway node and each assigned LUN assigned to the second gateway node to select a first pair of LUNs, the first pair of LUNs to include a first LUN assigned to the first gateway node and a second LUN assigned to the second gateway node, that have a lowest differential of weights compared to all combinations of LUNs between the first and second gateway nodes;

based on the difference of weight between each assigned LUN assigned to the first gateway node and each assigned LUN assigned to the second gateway node:

assign the first LUN to the second gateway node in the given ALUA; and

assign the second LUN to the first gateway node in the given ALUA.

11 . The article of claim 10 , wherein the medium includes instructions to cause the processor to balance the bandwidth load for the given ALUA across each of the plurality of gateway nodes by causing the processor to, after assignment of the first LUN to the second gateway node in the given ALUA and after assignment of the second LUN to the first gateway node in the given ALUA:

select a third gateway node of the plurality of gateway nodes, the third gateway node having a lowest aggregate weight of assigned LUNs in the given ALUA;

select a fourth gateway node of the plurality of gateway nodes, the fourth gateway node having a highest aggregate weight of assigned LUNs in the given ALUA;

evaluate a difference of weight between each assigned LUN assigned to the third gateway node and each assigned LUN assigned to the fourth gateway node to select a second pair of LUNs, the second pair of LUNs to include a third LUN assigned to the third gateway node and a fourth LUN assigned to the fourth gateway node, that have a lowest differential of weights compared to all combinations of LUNs between the third and fourth gateway nodes;

based on the difference of weight between each assigned LUN assigned to the third gateway node and each assigned LUN assigned to the fourth gateway node:

assign the third LUN to the fourth gateway node in the given ALUA; and

assign the fourth LUN to the third gateway node in the given ALUA.

12 . The article of claim 10 , wherein the medium includes instructions to cause the processor to balance the bandwidth load for the given ALUA across each of the plurality of gateway nodes by causing the processor to, after assignment of the first LUN to the second gateway node in the given ALUA and after assignment of the second LUN to the first gateway node in the given ALUA, select the third gateway node, select the fourth gateway node, select the second pair of LUNs, assign the third LUN to the fourth gateway node, and assign the fourth LUN to the third gateway node in the given ALUA based upon a determination that assignment of the third LUN to the fourth gateway node and assignment of the fourth LUN to the third gateway node will decrease node variation.

13 . A method, comprising:

identifying a client machine to connect to one of a plurality of logical unit numbers (LUN) in a software defined system (SDS) through a mesh network, wherein:

the client machine is to connect to a given one of the LUNs through one of a plurality of gateway nodes;

the mesh network includes a plurality of Asymmetric Logical Unit Access (ALUA) port groups, each ALUA port group to include possible connection to each of the LUNs and to the client; and

each gateway node includes an instance of each of the plurality of ALUA port groups;

balancing a bandwidth load for a given ALUA across each of the plurality of gateway nodes through assignment of the LUNs in the given ALUA across the plurality of gateway nodes;

selecting, as a preferred path, a path from the client machine through a selected one of the plurality of gateway nodes to an assigned LUN from the assignment of the LUNs in the given ALUA across the plurality of gateway nodes; and

balancing the bandwidth load for the given ALUA across each of the plurality of gateway nodes by:

determining a load weight of each LUN in the given ALUA;

determining a node goal weight for all of the LUNs in the given ALUA;

determining, from an initial assignment of the LUNs in the given ALUA across the plurality of gateway nodes, a variance of each of the LUNs from the node goal weight;

in a first iteration, assigning N of the LUNs to N different gateway nodes, wherein there are N different gateway nodes; and

in a second iteration, assigning an unassigned LUN to each of the N different gateway nodes by matching a weight of a given unassigned LUN to a given gateway node with a closet variance from the node goal weight.

14 . The method of claim 13 , comprising, in the first iteration, assigning N of the LUNs to N different gateway nodes by selecting the N LUNs with the highest weight.

15 . The method of claim 13 , comprising balancing the bandwidth load for the given ALUA across each of the plurality of gateway nodes by causing the processor to, in a third iteration:

for each gateway node, summing the weights of all already-assigned LUNs; and

from remaining unassigned LUNs, selecting a lowest weighted LUN and assign the lowest weighted LUN to a given gateway node with a highest summed weight from all already-assigned LUNs.

16 . The method of claim 13 , comprising balancing the bandwidth load for the given ALUA across each of the plurality of gateway nodes by, after assignment of all LUNs to the plurality of gateway nodes:

selecting a first gateway node of the plurality of gateway nodes, the first gateway node having a lowest aggregate weight of assigned LUNs in the given ALUA;

selecting a second gateway node of the plurality of gateway nodes, the second gateway node having a highest aggregate weight of assigned LUNs in the given ALUA;

evaluating a difference of weight between each assigned LUN assigned to the first gateway node and each assigned LUN assigned to the second gateway node to select a first pair of LUNs, the first pair of LUNs to include a first LUN assigned to the first gateway node and a second LUN assigned to the second gateway node, that have a lowest differential of weights compared to all combinations of LUNs between the first and second gateway nodes;

based on the difference of weight between each assigned LUN assigned to the first gateway node and each assigned LUN assigned to the second gateway node:

assign the first LUN to the second gateway node in the given ALUA; and

assign the second LUN to the first gateway node in the given ALUA.

17 . The method of claim 16 , comprising balancing the bandwidth load for the given ALUA across each of the plurality of gateway nodes by to, after assignment of the first LUN to the second gateway node in the given ALUA and after assignment of the second LUN to the first gateway node in the given ALUA:

selecting a third gateway node of the plurality of gateway nodes, the third gateway node having a lowest aggregate weight of assigned LUNs in the given ALUA;

selecting a fourth gateway node of the plurality of gateway nodes, the fourth gateway node having a highest aggregate weight of assigned LUNs in the given ALUA;

evaluating a difference of weight between each assigned LUN assigned to the third gateway node and each assigned LUN assigned to the fourth gateway node to select a second pair of LUNs, the second pair of LUNs to include a third LUN assigned to the third gateway node and a fourth LUN assigned to the fourth gateway node, that have a lowest differential of weights compared to all combinations of LUNs between the third and fourth gateway nodes; and

based on the difference of weight between each assigned LUN assigned to the third gateway node and each assigned LUN assigned to the fourth gateway node:

assigning the third LUN to the fourth gateway node in the given ALUA; and

assigning the fourth LUN to the third gateway node in the given ALUA.

18 . The method of claim 16 , comprising balancing the bandwidth load for the given ALUA across each of the plurality of gateway nodes by causing the processor to, after assignment of the first LUN to the second gateway node in the given ALUA and after assignment of the second LUN to the first gateway node in the given ALUA, selecting the third gateway node, selecting the fourth gateway node, selecting the second pair of LUNs, assigning the third LUN to the fourth gateway node, and assigning the fourth LUN to the third gateway node in the given ALUA based upon a determination that assignment of the third LUN to the fourth gateway node and assignment of the fourth LUN to the third gateway node will decrease node variation.