1. Field of the Invention
This invention relates to networked computer systems. Particularly, this invention relates to performing connectivity mapping of nodes in a network comprising computing devices such as storage devices.
2. Description of the Related Art
Interoperability, simplicity, and flexibility are critical considerations for those who manage storage. Accordingly, the management of storage area networks (SANs) using diverse protocols and components has been a source of difficulty for both end users and vendors alike. Various interoperability issues have been a consequence of the use of uncoordinated applications from multiple vendors, creating a complex management environment. The storage management initiative specification (SMI-S) represents an attempt to alleviate some of the associated problems.
The Storage Networking Industry Association (SNIA) developed SMI-S to address the interoperability management concerns for storage networks. In general, SMI-S was designed to make it easier for the hardware and software from different storage vendors to operate together. The specification is designed to replace the disparate protocols and transport technologies from multiple vendors with common models and common protocols, making it easier for developers to support devices from other vendors. The end result is a common management interface for network components that decreases the complexity of SAN management.
SMI-S is based on existing standards such as the common information model (CIM) and web-based enterprise management (WBEM). CIM describes the management requirements and capabilities of systems and WBEM specifies how they should be used. SMI-S also includes common interoperable and extensible management transport, automated discovery and resource locking, and is specific to storage management. When a new SMI-S component is introduced to a SAN, it will identify itself and its capabilities, and will then be able to properly share its resources with multiple entities in the network.
CIM provides a common definition of management information for systems, networks, applications and services, and allows for vendor extensions. CIM's common definitions enable vendors to exchange semantically rich management information between systems throughout a network. In general, CIM is a schema. The schema provides the actual model descriptions. WBEM is the specification that defines the details for CIM's integration with other management models.
In the prior art, when employing a network of nodes with discrete node types, it is often necessary to map connectivity of two or more types of nodes. Unfortunately, SMI-S suggests using lengthy association traversals in mapping network connectivity. However, traversing the network of CIM object nodes in this manner can take several hours in some situations.
There is a time cost, i.e. a processing delay, for each occasion connectivity of a node to nodes of another type is determined. An example of this may be demonstrated with the CIM and SMI-S standards, where association traversals between CIM objects are costly in terms of time, due to a processing delay in the CIM Object Manager Server. The logical unit number (LUN) Masking and Mapping Subprofile in SMI-S provides a good example of a network of nodes, where determining connectivity between nodes in a timely fashion is important for SMI-S management applications.
It is important to note that the time cost is a consequence of determining the node connectivity whether or not a connection is actually found. Thus, there is a time cost associated with determining connectivity of a node, even if it is found that the node is not connected to anything. For example, in the
In addition, the conventional connectivity mapping algorithm may traverse the same connectivity association more than once, as illustrated in
In addition, the conventional connectivity mapping algorithm may also traverse connectivity associations, i.e. perform a connection queries, that are not necessary. For example, because node 2E 122 is not connected to any nodes of type 3106, it is not necessary to query for type 1102 nodes that are connected to 2E 122. However, the conventional connectivity mapping algorithm still performs such queries or traversals, incurring an unnecessary time cost, that finds the connectivity between type 1102 nodes and node 2E 122.
In view of the foregoing, there is a need in the art for systems and methods to determine connectivity in a network more efficiently. Particularly, there is a need in the art for systems and method to perform connectivity mapping minimizing redundant and/or unnecessary queries. These and other needs are met by the present invention as detailed hereafter.
The present invention is directed to systems and methods for improved mapping network connectivity. Redundant and unnecessary queries are reduced compared with a conventional network connectivity mapping algorithm, reducing the time cost of connectivity mapping. A table of connectivity of node types may be populated and managed to improve efficiency of the network connectivity mapping.
Tables of connectivity between nodes of two discrete types can be generated for edge nodes existing at the periphery of a network of nodes. Connectivity queries are initiated at one of an interior node type and then traverse in a first direction towards one edge node type and then in a second direction towards the other edge node type. The traversals to the second edge node type are skipped if it is determined that there is no connectivity to the nodes on the first type of edge nodes. In addition, check tables of known connectivity between node types may be populated so that the same connectivity traversal is not attempted more than once. The number of connectivity traversals and the associated time costs can be significantly reduced when compared to conventional connectivity mapping techniques.
A typical embodiment of the invention comprises a computer program embodied on a computer readable medium. The computer program includes program instructions for selecting an interior node type of at least three distinct node types in a network, program instructions for querying node connections to a first adjacent node type for each node of the selected interior node type, where the first adjacent node type is in a first direction, and program instructions for querying node connections to a second adjacent node type for each connected node of the selected interior node type, where each connected node of the selected interior node type is connected to a node of the first adjacent node type and where the second adjacent node type is in a second direction. Any connected nodes of the distinct node types may be connected in sequence across the distinct node types. In one exemplary embodiment, the network comprises a storage area network. Nodes of the network may comprise physical devices and/or logical devices.
In further embodiments of the invention, program instructions are included for querying connections for a plurality of first direction node types in the first direction in sequence such that only connected nodes are queried. Similarly, program instructions may also be included for querying connections for a plurality of second direction node types in the second direction in sequence such that only connected nodes are queried.
To facilitate execution of the connectivity mapping algorithm, any connections between connected nodes are compiled in one or more tables. For example, any connections between nodes of the interior node type and the first adjacent node type may be compiled in a first table. Similarly, any connections between connected nodes of the interior node type and the second adjacent node type are compiled in a second table.
A typical method embodiment of the invention comprises selecting an interior node type of at least three distinct node types in a network, querying node connections to a first adjacent node type for each node of the selected interior node type, where the first adjacent node type is in a first direction and querying node connections to a second adjacent node type for each connected node of the selected interior node type, where each connected node of the selected interior node type is connected to a node of the first adjacent node type and where the second adjacent node type is in a second direction. Further method embodiments of the invention may be developed consistent with the computer program embodiments of the invention.
Referring now to the drawings in which like reference numbers represent corresponding parts throughout:
1. Overview
One aspect of the present invention involves efficiently generating a table of connectivity between nodes of two discrete types, that are defined as edge nodes existing at the periphery of a network of nodes. To illustrate, referring back to the example network of FIG. IA, nodes of type 1102 and nodes of type 4108 would be considered edge nodes. Any nodes that fall between these two types of edge nodes in the network may be defined as interior nodes. In the example, nodes of type 2104 and type 3106 are considered interior nodes. Embodiments of the invention may begin the connectivity traversals at one of the interior node types and then traverse first towards the first type of edge nodes (e.g., type 4108) and then towards the second type of edge nodes (e.g., type 1102). Other embodiments of the invention may traverse to more than just two types of edge nodes. In this sense, embodiments of the invention encompass a network having more than two adjacent directions and more than two edges from a selected interior node type. The traversals to the second type of edge nodes are skipped if it is determined that there is no connectivity to the nodes on the first type of edge nodes. By doing this, embodiments of the invention skip unnecessary connectivity traversals, providing an advantage over conventional connectivity mapping algorithms.
In addition, embodiments of the invention may populate and check tables of known connectivity between node types, so that the same connectivity traversal is not attempted more than once. By doing this, embodiments of the invention avoid many unnecessary connectivity traversals that conventional connectivity mapping algorithms would have attempted. Thus, embodiments of the invention never cross the same connectivity traversal twice. This can significantly reduce the number of connectivity traversals made and the associated time costs, when compared to conventional connectivity mapping algorithms.
2. Hardware Environment
Generally, the computer 202 operates under control of an operating system 208 (e.g. z/OS, OS/2, LINUX, UNIX, WINDOWS, MAC OS) stored in the memory 206, and interfaces with the user to accept inputs and commands and to present results, for example through a graphical user interface (GUI) module 232. Although the GUI module 232 is depicted as a separate module, the instructions performing the GUI functions can be resident or distributed in the operating system 208, the computer program 210, or implemented with special purpose memory and processors. The computer 202 also implements a compiler 212 which allows an application program 210 written in a programming language such as COBOL, PL/1, C, C++, JAVA, ADA, BASIC, VISUAL BASIC or any other programming language to be translated into code that is readable by the processor 204. After completion, the computer program 210 accesses and manipulates data stored in the memory 206 of the computer 202 using the relationships and logic that was generated using the compiler 212. The computer 202 also optionally comprises an external data communication device 230 such as a modem, satellite link, ethernet card, wireless link or other device for communicating with other computers, e.g. via the Internet or other network.
In one embodiment, instructions implementing the operating system 208, the computer program 210, and the compiler 212 are tangibly embodied in a computer-readable medium, e.g., data storage device 220, which may include one or more fixed or removable data storage devices, such as a zip drive, floppy disc 224, hard drive, DVD/CD-rom, digital tape, etc., which are generically represented as the floppy disc 224. Further, the operating system 208 and the computer program 210 comprise instructions which, when read and executed by the computer 202, cause the computer 202 to perform the steps necessary to implement and/or use the present invention. Computer program 210 and/or operating system 208 instructions may also be tangibly embodied in the memory 206 and/or transmitted through or accessed by the data communication device 230. As such, the terms “article of manufacture,” “program storage device” and “computer program product” as may be used herein are intended to encompass a computer program accessible and/or operable from any computer readable device or media.
Embodiments of the present invention are generally directed to any software application program 210 that includes functions for managing a distributed computer system comprising a network of computing devices. The network may encompass one or more computers connected via a local area network and/or Internet connection (which may be public or secure, e.g. through a VPN connection), or via a Fibre Channel Storage Area Network or other known network types as will be understood by those skilled in the art.
It is also important to understand that the node types 252, 254, 256, 258 also must be arranged according to certain requirements. First, the distinct node types 252, 254, 256, 258 correspond to a required connection sequence between nodes. Thus, nodes of a type N can only be connected to lower nodes of type N−1 in a first direction and upper nodes of type N+1 in a second (e.g. opposite) direction, where N is an integer. The node types can be thought of as layers where it is only possible for a node of a particular layer to be connected to a node of a lower layer one side and/or a node of an upper layer on the other side. For example, a type 1 node cannot skip type 2 nodes and connect directly to a type 3 node. In addition, in the example network 250 it is also possible to enumerate the instances of any type of node. Thus, all the nodes of a particular type are known or listed. As previously mentioned, the objective of connectivity mapping is to determine which nodes of type 1252 at one end of the network 250 have a complete connection through to nodes of type 4258 at the opposite end. These requirements of the network 250 structure coupled with the objective of the connectivity mapping provide the impetus for the connectivity mapping process of the present invention as will be detailed in the next section.
Those skilled in the art will recognize many modifications may be made to this hardware environment without departing from the scope of the present invention. For example, those skilled in the art will recognize that any combination of the above components, or any number of different components, peripherals, and other devices, may be used with the present invention meeting the functional requirements to support and implement various embodiments of the invention described herein.
3. Node Connectivity Mapping Algorithm
As previously mentioned, distinct node types are arranged in a specified sequence, e.g. type X−1 306, type X 302, type X+1 304. Embodiments of the present invention capitalize on the fact that it is unecessary to follow connection traversals from a interior node in one direction if it is known that there is no connection in the opposite direction. Since the objective is to identify the nodes at the beginning of the network (type 1) that are connected through interior nodes to type N nodes at the end of the network, once it is determined that an interior node (e.g. type X node) is not connected to any type N nodes, it is not necessary to evalutate if any type 1 nodes are connected to the interior node.
An exemplary process of the invention can begin by enumerating the instances of a selected interior node type of the network. For example, assume that type X nodes are enumerated. For each instance of the type X nodes, 302A-302D the following processes are performed. Evaluate connectivity associations in a first direction from the selected interior node type, e.g. to node type X+1. Note that it is arbitrary which direction is evaluated first. This identifies the connected type X+1 nodes. If there are no connected type X+1 nodes, then the connectivity evaluations are restarted for the next type X node. If there are connected type X+1 nodes, add these connections to a table of type X to type X+1 connections, e.g. a table TConnX/X+1.
Following this, for each connected type X+1 node the following operations are performed. Check the table of connections between type X+1 and type X+2 (TConnX+1/X+2) for any known connections between the current type X+1 node and any type X+2 nodes. If at least one exists then the process moves to the next type X+1 node. If there is no known type X+2 nodes connected to this type X+1 node, then connectivity is queried in the same direction to determine any connected type X+2 nodes. Any connections are added to the TConn X+1/X+2 table. The connectivity evaluation will continue in the first direction until either the end node type, type N, is reached or no connections in the first direction are present.
Next, for each type X node that was determined to be connected to one or more type N nodes in the previous step, queries are performed to determine connectivity in a second direction from the current interior node. This will yield any connected type X−1 nodes. If there are no connected type X-1 nodes, then the connectivity evaluations are again restarted for the next type X node. If there are connected type X−1 nodes, these connections are added to a table of type X−1 to type X connections, e.g. TConn X−1/X. Here also, the connectivity evaluation continues in the second direction until either the first node type, type 1, is reached or a no connections in the second direction are present.
The result of the foregoing process yields a table for each pair of adjacent node types, e.g. TConn1/2, . . . TConnX−1/X, TConnX/X+1, . . . TConnN−1/N. (In the example showing only three node types only TConnX−1/X, TConnX/X+1 are generated.) These tables can be readily employed to determine the mapping between first type 1 nodes, e.g. type X−1 in the example, and the end type N nodes, e.g. type X+1 in the example, as shall be understood by those skilled in the art.
If there are, the next node of the selected interior node type is selected for connection mapping in operation 354. The corresponding connection table for the relevant node type is consulted for the presence of indicated connection in decision block 356. If the connection is already noted in the table, and it is not the last inner node, the process again returns to operation 354. If not, the node is then queried for further connections to any nodes of the next adjacent node type (in the first direction from the selected interior node type) as shown in operation 358. The query of operation 358 incurs a processing delay. Based on the results of the query in operation 358, if connections to one or more nodes of a next adjacent node type are found, as indicated in decision block 360, then they are added to the table in operation 362 and the first connected node returned from the query (of operation 358) is selected in operation 364. Following this, decision block 368 evaluates whether an end node type has been reached (in the first direction). If it has not, the process loops back to decision block 356 to evaluate the corresponding connection table and subsequent processing for the current selected node.
Looking to the alternative outcome of decision block 360, if there are no connected nodes found in the query of operation 358, the process and the final node from the query has not been reached (as determined in decision block 366), the process loops back to operation 354 to select the next node of the current node type being evaluated.
However, if either the final node from the query has been reached (as determined in decision block 366) or an end node type has been reached (as determined in decision block 368), the process then determines whether the final node from the previous query has been reached in decision block 370. If it has not, the process selects the next node of the previous node type in operation 372 and loops back to operation 358 to query for connected nodes of the next adjacent node type.
On the other hand, if the final node from the previous query has been reached (determined in decision block 370), the process checks whether the previous node type is the selected interior node type in decision block 374. If not, the node type of the previous node type is selected in operation 376 and process is returned to determine whether the final node from the previous query has been reached in decision block 370. In general, the “previous query” is not the most recent query from operation 358, but the query prior to that, which may have been either operation 358 or operation 354.
However, if the previous node type is the selected interior node type (determined in decision block 374), the first connected node of the selected of the selected interior node type is re-selected in operation 378 and the process then begins evaluating connection in a second direction as shown in
The process of
The process of
Looking to the alternative outcome of decision block 386, if there are no connected nodes found in the query of operation 384, the process and the final node from the query has not been reached (as determined in decision block 394), the process loops back to operation 382 to select the next node of the current node type being evaluated.
However, if either the final node from the query has been reached (as determined in decision block 394) or an end type node has been reached (as determined in decision block 392), the process then determines whether the final node from the previous query has been reached in decision block 396. If it has not, the process selects the next node of the previous node type in operation 398 and loops back to operation 384 to query for connected nodes of the next adjacent node type.
On the other hand, if the final node from the previous query has been reached (determined in decision block 396), the process checks whether the previous node type is the selected interior node type in decision block 351. If not, the node type of the previous node type is selected in operation 353 and process is returned to determine whether the final node from the previous query has been reached in decision block 396. If the previous node type is the selected interior node type (determined in decision block 351), the process ends and the network connectivity will be fully mapped as shown in the resulting set of tables.
The foregoing process 350 described in
The process is repeated beginning from the next interior type 2402 node until all interior type 2402 connections have been evaluated in the first direction. Following this, the interior type 2402 nodes are then evaluated in a similar manner for any connection in a second direction (e.g. to the left). However, only the type 2402 nodes having connections through to type 4406 nodes are evaluated, because it is unnecessary to check connections in the second direction if it is already known that no connection exists in the first direction. Any identified connections from type 2402 to type 1408 nodes are added to a type 1/type 2 connection table. Note that only one set of connections is evaluated in the second direction because type 1408 is the first node type. As shown in
As shown in the foregoing example, embodiments of the invention are particularly useful when there is a large number of edge nodes (e.g. type 1 nodes) that may have no connectivity at all. The algorithm avoids querying for the connectivity of each type 1 edge node for corresponding type 2 nodes. This is useful for determining host initiator access to volumes in the LUN Mapping and masking subprofile of SMI-S, because often there are a great number of type 1 nodes (e.g. volumes, such as CIM storagevolumes) that have no connectivity to type 2 nodes. For example, if a network employed 2,000 type 1 nodes where only ten of them are connected to type 2 nodes, the algorithm would save approximately 1,990 queries.
This concludes the description including the preferred embodiments of the present invention. The foregoing description including the preferred embodiment of the invention has been presented for the purposes of illustration and description. It is not intended to be exhaustive or to limit the invention to the precise forms disclosed. Many modifications and variations are possible within the scope of the foregoing teachings. Additional variations of the present invention may be devised without departing from the inventive concept as set forth in the following claims.