In the following description, reference is made to the accompanying drawings that form a part hereof, and in which is shown by way of illustration specific embodiments in which the invention may be practiced. These embodiments are described in sufficient detail to enable those skilled in the art to practice the invention, and it is to be understood that other embodiments may be utilized and that structural, logical and electrical changes may be made without departing from the scope of the present invention. The following description is, therefore, not to be taken in a limited sense, and the scope of the present invention is defined by the appended claims.
The functions or algorithms described herein are implemented in software or a combination of software and human implemented procedures in one embodiment. The software comprises computer executable instructions stored on computer readable media such as memory or other type of storage devices. The term “computer readable media” is also used to represent carrier waves on which the software is transmitted. Further, such functions correspond to modules, which are software, hardware, firmware or any combination thereof. Multiple functions are preformed in one or more modules as desired, and the embodiments described are merely examples. The software is executed on a digital signal processor, ASIC, microprocessor, or other type of processor operating on a computer system, such as a personal computer, server or other computer system.
There are many different ways in which the hosts and devices may be connected to and through the interconnection fabric. The above-identified publication, U.S. Patent Publication No. 2006/0080463, involves connecting communication links between hosts and devices in a SAN utilizing a particular template topology with specific design requirements and uses an objective function to determine connections through the fabric. The desire is to determine how such connections should be made to make efficient use of the interconnection fabric. Variables and constraints related to the hosts, devices and interconnection fabric are identified and encapsulated in a mathematical language to create a model of an optimum set of connections through the fabric based on a multitude of parameters. In one example, an integer program is used to solve the connection problem. The parameters that are used (as will be discussed) cover a wide variety of factors and from time to time can be changed as system requirements change so as to update the fabric connectivity.
The integer program is then fed into an integer programming solver to provide an output identifying a desirable solution. The solver automatically determines the connectivity of host and device nodes to the interconnection topology, and the routing of flows through the resulting network to minimize congestion and latency of flows if a feasible solution to the connectivity/routing problem exists. It can also automatically determine which parts of the given interconnection topology to exclude in order to minimize hardware costs. The connectivity provided by the solution can be cost-effective and provide low latency.
In one interconnection problem example, each host and device is defined as having two ports, each with a bandwidth of approximately 200 MBps (megabits per second). Lines are shown between selected hosts and devices in one embodiment. Each line indicates a flow requirement between a host and a device pair that needs to be connected via the fabric 105. A flow requirement is represented by a number of megabits per second. The flow requirement may be specified based on expected requirements by a designer of a system, or may be predetermined based on host and device capacities.
The switches in connection fabric 200 comprise multiple ports and links between ports, each having a bandwidth, for example, of 200 MBps. Each switch has a total bandwidth of, for example, 800 MBps and four ports. In further embodiments, different switches in the interconnection fabric may have more or fewer ports with different bandwidths.
To determine the optimal configuration, a mathematical model of an optimization problem is created. The optimization problem is drawn from a set of user inputs using, for example, a mathematical programming language such as AMPL. AMPL allows modeling of input data, decision variables, constraints, and objective functions. Other programming languages may also be used, if desired, to construct a model which will optimize the switching fabric by reducing the number of links while still maintaining speed of access and retrieval.
Input data for the model comprises host device bandwidth capability data 402, a characterization of the interconnection topology data 403, bandwidth and port availability data for SAN elements 404, and any other data pertinent to network topology, system requirements, device constraints, user desires, etc.
Input data is represented mathematically and may also include the following: Let represent a set of hosts, a set of devices, a set of core switches, a set of edge switches, a set of edge switches in that can be connected to hosts only or devices only, which is not necessarily prespecified. Further, let bij represent bandwidth capacity of port j of a host or a device i, where and let represent an estimate of bandwidth generated by a host or a device i. If bandwidth cannot be estimated, however, let
Further, let ck denote the bandwidth capacity between edge switch and any core switches that it is connected to. Note that because flows can be split, meaning that a flow from host to device may be split across different paths through the network, this is the minimum of edge switch bandwidth capacity and sum of the bandwidth capacities of the links between k and the core switches it is connected to. Finally, let qt denote the bandwidth capacity of edge switch and let pi represent the number of ports in a host, device or edge switch i open for connection, where .
Decision variables are also represented mathematically and may include the following: Let f denote the minimum fraction of input or output capability of a host or a device that can be routed simultaneously through the core; let represent the maximum flow between and through port j of i and port of k; let equal one if port j of a host or a device is open and connected to port of edge switch or zero otherwise; let denote the maximum aggregate flow between edge switch k and core switch t; let equal one if edge switch can be connected to hosts only, or zero otherwise; let equal one if edge switch can be connected to devices only, or zero otherwise.
The objectives of the integer programming problem are also represented mathematically and passed to solver 420 by program modeler 410. In one embodiment, the objective function is defined within modeler 410 to maximize the minimum fraction of input or output capability of a host or of a device simultaneously routable through the core. The notation max f denotes this.
The constraints of the integer program problem are also defined mathematically. One such constraint sums the data flow along the ports of all edge switches connected to a given host or device in the network and requires that such sum be greater than or equal to the minimum fraction of total bandwidth capability for that host or device times its total bandwidth capability. The constraint thus maximizes the minimum fraction of routable bandwidth among all hosts or devices in the network. The mathematical representation for this constraint is
Another constraint is defined such that =1 if port j of a host or a device i is open and connected to port of edge switch k. The mathematical representation of this constraint is j=1, . . . , pi=1, . . . , . Note that the flow between two ports cannot be more than the bandwidth of either of those ports. If no link exists between ports, the flow is zero. If a link exists, the flow is constrained by the minimum bandwidth between the ports.
Another constraint is defined such that a given host and a given port on that host, or a given device and given port on that device, cannot connect to more than one port on an edge switch. That is, two links cannot connect to a single port. The mathematical representation for this constraint is
Likewise, another constraint is defined such that for a given edge switch and a given port on that edge switch, more than one host or device port cannot be connected to that port on the switch. The mathematical representation for this constraint is
Three further constraints are defined such that for a given set of edge switches, the switches can be connected either to hosts only or to devices only, but not both. First, if a switch is designated as one that can only connect to hosts, then hk is equal to 1 indicating that any port on that particular switch can only connect to one host port. If hk is zero, switch is not restricted to connect only to hosts. The mathematical representations for this constraint is
Second, a similar constraint exists for devices. The mathematical representation of this constraint is
Third, switches are useless if they both must not connect to hosts nor devices, thus +≦1
This represents a restriction on the input parameters. Note that if an edge switch k is prespecified as connected to hosts only then the constraint hk=1 is added to the formulation. The reprovisioning embodiment below discusses this further.
Another constraint is defined such that the flow into and out of an edge switch does not exceed the bandwidth that could be sent between the edge switch and the core switch it is connected with. The mathematical representation for this constraint is
Another constraint is defined such that the bandwidth into and out of a given core switch cannot exceed the bandwidth capability for that core switch. The mathematical representation for this constraint is Where is the flow variable between an edge switch and core switch t.
Another constraint is defined such that all the flow into an edge switch, either from hosts or devices, has to go into the core and come out of the core. The mathematical representation of this constraint is
A relationship between the y flow variable and w flow variable is thus defined. Here, the y flow variable describes flows between hosts and devices and edge switches. The w flow variable describes flows between edge switches and core switches.
The domain of is {0,1}, that is, a pair of ports can either be connected or not, but not partially connected. The mathematical representation for this constraint is ε{0,1}j=1 . . . ,pikεE,l=1 . . . pk. The value one (1) indicates a connection exists between two ports, the value zero (0) indicates no connection. The domain of hk (respectively, dk is {0,1}), that is, they can be zero or one, representing the fact that switch k is either unexclusively or exclusively to be connected to hosts (respectively, devices). The mathematical representation for this constraint is hk, dkε{0, 1}
The objective function f and the inequality
is linearized by summing all the flow over all the edge switches to which device i can connect and then all the pairs of ports between i and those edge switches. That is, sum up all the flow over all the possible links 310 of
Once the mathematical representations of the input data, decision variables, objectives and constrains are passed to optimizing program solver 420, an optimal connectivity is established as shown at 430. One example of an optimizing solver is ILOG's solver/CPLEX, however, other solvers may be used. Solution 430 recommends to the network designer how to connect the hosts and devices to the interconnection fabric.
In further embodiments, redundancy is addressed by considering failures of edge switches and core switches. To address redundancy problems, an objective function is defined to maximize the minimum fraction of input and output over all hosts and devices that can be routed simultaneously through the core under all failure scenarios.
Here, let the decision variable represent the flow between port k of host and device i and port of edge switch k. Also, let variable wkt denote the flow between edge switch k and core switch t under the failure scenario that an edge switch fails. To consider all edge switch failures, inequality
replaces inequality
from the integer programming model above. The inequality thus considers each host and device and the minimum routable fraction of bandwidth in the case that a switch in the network fails.
The decision variable is defined as the flow between port k of host and device i and port f of edge switch k under the failure scenario that a core switch fails. The decision variable is defined as the flow between edge switch k and core switch t under the failure scenario that a core switch fails.
Further, the constraints
and ≦qt are introduced to consider core switch failures. The constraint
is also introduced. These constraints are in addition to the integer programming problem constraints set forth above. Note these constraints assume that all components are identical and core-edge is symmetric. Also note that the link failures need not be considered because they are dominated by switch failures.
Process 602 controls the gathering and storing of a set of bandwidth constraints for that same interconnection fabric. Process 603 determines when all the variables and constraints have been gathered for a particular interconnection fabric. When that occurs, process 604 presents the stored decision variables and constraints to a model to solve for an optimal interconnection. In this context, an optimal interconnection can be a maximized interconnection or a degraded interconnection as determined by the user and as programmed into the model.
Process 605 determines when all variables and constraints are available. When they are available then process 606 selects a connectivity desired while process 607 chooses a flow. Process 608 then, using the pre-established model for each flow, defines for each host or device i a fraction f(i) which represents the amount of flow routed from host to device to the fabric core divided by its total bandwidth capacity d(i).
Process 609 determines when all flows are exhausted and if they have not been, then a new flow is selected and process 608 continues. Process 610 then determines when all connectivities have been exhausted and when that occurs process 611 selects the connectivity and flow such that the minimum f(i) among all hosts and device i is optimized. When that occurs and the model is complete, then process 61, using the information from the model, establishes an interconnection with respect to the switch fabric in accordance with the selected connectivity and flow.
In a further embodiment, a linear programming problem is presented and solved. In this embodiment, the objective function of the linear program model is defined to maximize f the fraction of bandwidth routable to the core for a given core-edge SAN where hosts and devices are already connected to the edge switches. Here, the variable for the existing links between port j of host and device i and port of edge switch k. This objective function is constrained such that (i) the sum of data flow along all edge switches and all their ports for a particular host or device in the network is greater than or equal to the minimum fraction of total bandwidth capability of a given host or device times total capability of a given host or device; (ii) if port j of a host or a device i is connected to port of edge switch k; (iii) a port of a host or a device is connecting only one link to an edge switch; (iv) a port of an edge switch connects only one link to a host or a device for edge switch that can be connected to both hosts and devices.
Another embodiment determines how to reconfigure a network when new hosts or devices are added. Here, an integer program like the one described above is setup such that for the existing links between port j of a host or a device i and port of edge switch k. The decision variable is thus fixed where a link in the earlier system exists.
The present application is related to commonly-assigned U.S. Published Patent Publication No. 2006/0080463, entitled “INTERCONNECTION FABRIC CONNECTION” the disclosure of which is hereby incorporated herein by reference.