Abstract:
A method of presenting a network architecture includes identifying two or more network devices for interconnection analysis, collecting information describing communications paths between two or more network devices, and converting the collected information into a markup language format. The method further includes generating, from the markup language format, a listing of the network devices and a listing of connections between the network devices. The method also includes instantiating, based on the listing of the network devices, one or more images depicting each of the two or more network devices. The method further includes instantiating, based on the listing of connections, one or more images depicting connections between the two or more network devices.

Description:
BACKGROUND OF THE INVENTION 
       [0001]    A Storage Area Network (SAN) is a dedicated network that provides access to consolidated groups of block-level storage devices. A SAN enables multiple servers to share the storage devices, so that SAN users do not need to acquire additional servers to increase storage capacity. 
         [0002]    A SAN environment can have architectures can that are extensive and complex, with a large number of components and connections between those components. Troubleshooting SAN environments can be very difficult and time consuming without documentation describing how the system is interconnected. 
         [0003]    Existing data gathering and analysis tools do not produce clear and precise configuration documentation that SAN support teams need to efficiently perform their tasks. Without precise information about the target SAN environment, the amount of time and effort it takes to analyze the environment and identify solutions can be significant. Further, without accurate documentation, the support team may have no alternative but to purchase components to solve problems that would be unnecessary if the team had adequate visibility into the system. 
       SUMMARY OF THE INVENTION 
       [0004]    The described embodiments may enable SAN support teams to quickly and accurately characterize components and connections with an SAN environment. 
         [0005]    In one aspect, the described embodiments include a method of presenting a network architecture, including identifying two or more network devices for interconnection analysis, collecting information describing communications paths between two or more network devices, and converting the collected information into a markup language format. The method further includes generating, from the markup language format, a listing of the network devices and a listing of connections therebetween. The method also includes instantiating, based on the listing of the network devices, one or more images depicting each of the two or more network devices. The method further includes instantiating, based on the listing of connections therebetween, one or more images depicting connections between the two or more network devices. 
         [0006]    One embodiment further includes storing the collected information in a storage medium. In another embodiment, the storage medium is associated with a database. In another embodiment, the collecting information generates one or more log files. In yet another embodiment, the markup language is extensible markup language (XML). 
         [0007]    One embodiment further includes providing a graphical user interface upon which to instantiate the images depicting each of the two or more network devices and the images depicting connections between the two or more network devices. In one embodiment, identifying two or more network devices further includes identifying one or more categories of network devices. In another embodiment, the one or more categories of network devices includes one or more of storage devices, host devices, switch devices and router devices. 
         [0008]    In one embodiment, instantiating images depicting each of the two or more network devices further includes selecting the images from an image database. In another embodiment, instantiating images depicting connections between the two or more network devices further includes rendering a trace from one of the two or more network devices to another of the two or more network devices, wherein the trace is characterized at least by a width. In another embodiment, the two or more network devices include components of a storage array network. 
         [0009]    In another aspect, the described embodiments are a tangible, non-transitory, computer readable medium for storing computer executable instructions for presenting a network architecture, with the computer executable instructions for identifying two or more network devices for interconnection analysis, collecting information describing communications paths between two or more network devices and converting the collected information into a markup language format. The medium further includes instructions for generating, from the markup language format, a listing of the network devices and a listing of connections therebetween. The medium also includes instructions for instantiating, based on the listing of the network devices, one or more images depicting each of the two or more network devices. The medium further includes instructions for instantiating, based on the listing of connections therebetween, one or more images depicting connections between the two or more network devices. 
         [0010]    One embodiment further includes instructions for storing the collected information in a storage medium. Another embodiment further includes instructions for storing the collected information in a database system. Another embodiment includes instructions for converting the collected information into an XML format. 
         [0011]    One embodiment includes instructions for providing a graphical user interface upon which to instantiate the images depicting each of the two or more network devices and the images depicting connections between the two or more network devices. Another embodiment includes instructions for identifying one or more categories of network devices. Yet another embodiment includes instructions for selecting the images from an image database. 
         [0012]    One embodiment includes instructions for rendering a trace from one of the two or more network devices to another of the two or more network devices. The trace is characterized at least by a width. Another embodiment includes instructions for identifying two or more storage area network components. 
     
    
     
       BRIEF DESCRIPTION OF THE DRAWINGS 
         [0013]    The foregoing will be apparent from the following more particular description of example embodiments of the invention, as illustrated in the accompanying drawings in which like reference characters refer to the same parts throughout the different views. The drawings are not necessarily to scale, emphasis instead being placed upon illustrating embodiments of the present invention. 
           [0014]      FIG. 1  illustrates an exemplary procedure that may be associated with the described embodiments. 
           [0015]      FIG. 2  illustrates an example of a point-to-point spreadsheet according to the described embodiments. 
           [0016]      FIG. 3  shows an example of the information from the connection XML files, mapped to a graphical format according to the described embodiments. 
           [0017]      FIG. 4  illustrates the correspondence between the graphical elements of  FIG. 3  with the point-to-point elements of  FIG. 2 . 
           [0018]      FIG. 5  illustrates an exemplary flow diagram constructed according to the described embodiments. 
           [0019]      FIG. 6A  illustrates an exemplary excerpt from an acl log file. 
           [0020]      FIG. 6B  illustrates an exemplary excerpt from a connection log file. 
           [0021]      FIG. 7  illustrates an example procedure for generating  524  a topological drawing according to the described embodiments. 
           [0022]      FIG. 8A  shows example code associated with parsing an XML file. 
           [0023]      FIG. 8B  shows example code associated with storing device connections. 
           [0024]      FIG. 8C  shows example code associated with rendering device images. 
           [0025]      FIG. 8D  example code associated with rendering connections between device images. 
       
    
    
     DETAILED DESCRIPTION OF THE INVENTION 
       [0026]    A description of example embodiments of the invention follows. 
         [0027]    The described embodiments provide a user with a graphical depiction of a network topology. While exemplary embodiments describe analysis of a Storage Area Network (SAN), the underlying concepts may also apply to other types of network architectures. Further, the exemplary embodiments describe the use of the Lasso tool (a product of Dell Inc.) to gather information about network elements and connections between those elements, other techniques for gathering such information may also be used. 
         [0028]      FIG. 1  illustrates an exemplary procedure that may be associated with the described embodiments. A user may initially identify  102  certain network elements to include in the depicted topology. In one exemplary embodiment, the user identifies  102  the network elements by selecting “check boxes” associated with the network elements in a Graphical User Interface (GUI). In other embodiments, the user may identify  102  network elements through other selection techniques know in the art, for example by entering device names at a command prompt or using a mouse or other data entry device to select network element icons in the GUI. 
         [0029]    Topology data is collected 104 against the selected network elements. By collecting against only the selected network elements, the user has the option of evaluating the overall network or only a portion of the overall network. The collected data is stored in one or more data logs. In an exemplary embodiment, each network element against which data is collected may have its own dedicated data log, although in other embodiments certain network elements may share data logs. 
         [0030]    The data logs are retrieved and unpacked  106 , and information is extracted  108  from certain selected fields within the data logs. The certain selected fields may generally include identification information (e.g., network element device make, model, name), port information (e.g., Internet Small Computer System Interface (iSCSI) ports, iSCSI Media Access Control (MAC) addresses) and interconnection information (e.g., identification of connected port, identification of connection destination, type of connection media), although in some embodiments the certain selected fields may include other information. Further, the certain selected fields may include fields that were pre-determined prior to beginning data collection, and/or information specifically selected by the user when the data is collected. The information extracted from the data logs is stored in an SQL database. 
         [0031]    The information stored in the SQL database is used to generate XML files  110  that organize the information. The XML files are further processed to generate connection XML files  112 , which contain information concerning interconnection between network elements. 
         [0032]    The connection XML files are used to generate  114  a table of “point-to-point” connections within the network. In an exemplary embodiment, the point-to-point table is a spread sheet, each row of which describes a connection between two network elements. 
         [0033]      FIG. 2  illustrates an example of a point-to-point spreadsheet  200  according to the described embodiments. The “FROM” portion  202  of the spreadsheet  200  describes a first end of one or more connections. In some embodiments, the first end may be a signal source, although the first end may describe a connection terminal regardless of its role as a signal source or sink. 
         [0034]    The FROM portion  202  of the spreadsheet  200  includes a column identifying the network element device make  204 , a column identifying the network element device model  206  and a column identifying the network element device name  208 . The FROM portion  202  of the spreadsheet  200  further includes a column identifying a port  210  of the network element (in this example, the port is an iSCSI port) and a MAC address  212  of the port. 
         [0035]    The “TO” portion  214  of the spreadsheet  200  describes a second end of the one or more connections. In some embodiments, the second end may be a signal sink, although the second end may describe a connection terminal regardless of its role as a signal source or sink. The TO portion  214  of the spreadsheet  200  includes a column describing Switch Name and/or Switch Management IP-Address  216 , a column describing a port name  218  and a column describing the media type  220  of the connection. 
         [0036]    The shaded area  222  of one row of the spreadsheet  200  describes one connection. The connection goes from network element C2-M4220-M2-CM0, which is a model 70-0450of device make PS-M4110. The connection goes to switch C2-MXL-B1 at IP Address 10.126.124.169. The connection couples iSCSI port Eth0 (MAC address 90:b1:1c:08:07:f0) of C2-M4220-M2-CM0 to port Te 0/14 of switch C2-MXL-B1. The media type  220  is listed as “bck-plane,” which means that the connection is a backplane connection. 
         [0037]    The information within the connection XML files may also be mapped  116  into a graphical format. In an exemplary embodiment, the graphical format is a block diagram, with network elements depicted as device icons, and connections depicted as lines, bars or icons that represent specific media types. For example, the network element device make, model and name information in the point-to-point connection table is mapped to device icons. Similarly, the port and interconnection information is mapped to lines, bars or media icons that are shown connecting the device icons. 
         [0038]      FIG. 3  shows an example of the information from the connection XML files, set forth in the point-to-point table  200  of  FIG. 2 , mapped to a graphical format according to the described embodiments.  FIG. 3  shows a PowerEdge M420  302 , a PS-M4110  304 , two Force10 MXL switches  306 ,  308  and two other Force10 switches  310 ,  312 . 
         [0039]    The spreadsheet of  FIG. 2  is copied in  FIG. 4 , and superimposed with the network element reference numbers from  FIG. 3  to illustrate the correspondence between the graphical elements of  FIG. 3  with the point-to-point elements of  FIG. 2 . The first four populated rows at the top of the spreadsheet of  FIG. 4  thus describe two connections between PS-M4110  304  and a first Force10 MXL switch  306 , and two connections between PS-M4110  304  and a second Force10 MXL switch  308 . The 5th and 6th populated rows in the spreadsheet of  FIG. 4  describe two connections between M420  302  and a first Force10 MXL switch  306 . The 7th and 8th populated lines in spreadsheet of  FIG. 4  describe the interconnections between first Force10 MXL switches,  306  and  308  to second Force10 switches  310  and  312  respectively as shown in  FIG. 3   
         [0040]      FIG. 5  illustrates an exemplary flow diagram constructed according to the described embodiments. This example provides a more detailed description of the processing that occurs in blocks  106  and  108  of  FIG. 1 . In this example, the Lasso is used to collect data against multiple network elements. 
         [0041]    At the “Start Analysis” point  502  of the flow diagram, Lasso has already collected data against selected network elements and stored collected data in data logs, as described in blocks  102  and  104  of  FIG. 1 . Certain of the stored log files are selected  504  for analysis, by for example an existing configuration file or through live selection by a user (e.g., using checkboxes or other selection techniques known in the art). 
         [0042]    The next three blocks  506 ,  508 ,  510  in the flow diagram relate to analysis of storage arrays, hosts and switches, respectively. Each of these three blocks makes a determination about whether a complete or partial collection has occurred. 
         [0043]    If it is determined  506  that all available storage groups and/or members have been collected against, specific storage log files  512  are analyzed. In this example, log files relating to storage access control list (acl) information, storage connection information, storage enclosure information, storage group information and storage network information are analyzed.  FIG. 6A  illustrates an exemplary excerpt from an acl log file and  FIG. 6B  illustrates an exemplary excerpt from a connection log file. 
         [0044]    If it is determined  508  that all available host devices have been collected against, specific host log files  514  are analyzed. If it is determined  510  that all available SAN switch devices have been collected against, specific switch log files  516  are analyzed. 
         [0045]    If any of the determinations  506 ,  508  or  510  indicates that some of the corresponding files have not been collected against, analysis  518  of partial log collections is performed. Following these determinations, the available log data is extracted and stored  520  in an SQL database. A partial or incomplete collection of device information and/or log files may result in an incomplete point-to-point table and topological drawing, although such a partial table or drawing may provide useful information to the user. 
         [0046]    The data stored in the SQL database is used to generate  522  a topology XML file, from which a topological drawing is generated  524 . 
         [0047]      FIG. 7  illustrates an example procedure for generating  524  a topological drawing according to the described embodiments. Once the topology XML file is generated, the Dom Parser parses  702  the XML file. Example code associated with parsing the XML file is shown in  FIG. 8A . 
         [0048]    Device connections extracted from the XML file are stored  704  in MAP. Example code associated with storing device connections is shown in  FIG. 8B . 
         [0049]    If device images corresponding to device information from the XML files, those images are loaded  706 . Otherwise the required images are created (e.g., drawn)  708  using for example a drawing utility such as Java Swings. Example code associated with rendering device images is shown in  FIG. 8C . 
         [0050]    Once the necessary device images are either loaded or drawn, point-to-point connections between the device images are drawn  710  using interconnection information from the XML file. The connections may be drawn  710  using a drawing software application such as PAINT or other such drawing tool known in the art. Example code associated with rendering connections between device images is shown in  FIG. 8D . 
         [0051]    It will be apparent that one or more embodiments described herein may be implemented in many different forms of software and hardware. Software code and/or specialized hardware used to implement embodiments described herein is not limiting of the embodiments of the invention described herein. Thus, the operation and behavior of embodiments are described without reference to specific software code and/or specialized hardware—it being understood that one would be able to design software and/or hardware to implement the embodiments based on the description herein. 
         [0052]    Further, certain embodiments of the example embodiments described herein may be implemented as logic that performs one or more functions. This logic may be hardware-based, software-based, or a combination of hardware-based and software-based. Some or all of the logic may be stored on one or more tangible, non-transitory, computer-readable storage media and may include computer-executable instructions that may be executed by a controller or processor. The computer-executable instructions may include instructions that implement one or more embodiments of the invention. The tangible, non-transitory, computer-readable storage media may be volatile or non-volatile and may include, for example, flash memories, dynamic memories, removable disks, and non-removable disks. 
         [0053]    While this invention has been particularly shown and described with references to example embodiments thereof, it will be understood by those skilled in the art that various changes in form and details may be made therein without departing from the scope of the invention encompassed by the appended claims.