# Patent

## Title
Method and apparatus for collecting and displaying data associated with network devices

## Abstract

In one particular embodiment, the disclosure is directed to a network management system. The network monitoring system includes at least one device definition file, a simple network management protocol enabled communications interface, and a data access interface. The definition file includes query instructions associated with portions of MIBs associated with a network device. The simple network management protocol enabled communications interface may access the network device using the query instructions and may receive response data from the network device. The data access interface may be configured to provide external access to the response data and configure thresholds.

## Background
CROSS-REFERENCE TO RELATED APPLICATION(S)
The present application is a divisional application of U.S. patent application Ser. No. 10/428,874, filed May 2, 2003 now U.S. Pat. No. 7,779,026, which is incorporated by reference herein in its entirety. The present application also claims priority from U.S. provisional patent application No. 60/377,708, filed May 3, 2002, entitled “Method and Apparatus for Collecting and Displaying Network Device Information,” naming inventors Gary Faulkner and Joshua Thomas Martinek, which application is incorporated by reference herein in its entirety.


TECHNICAL FIELD
This disclosure relates in general to network monitoring systems. More specifically, the disclosure relates to a method and apparatus for collecting and displaying data associated with network devices.
BACKGROUND
The Simple Network Management Protocol (SNMP) has become the standard for network management. Network management systems utilizing SNMP contain two primary elements: a manager and agents. The Manager is the console through which the network administrator performs network management functions. Agents are the entities that interface to the actual device being managed. Hubs, bridges, routers and servers are examples of managed devices that contain managed objects. These managed objects might contain hardware inventory data, configuration parameters, and performance statistics that directly relate to the current operation of the device. These objects are arranged in what is known as a management information base (MIB). Each managed object has an object identifier (OID). SNMP allows managers and agents to communicate for the purpose of accessing these objects.
With the embracing of SNMP by network device vendors, the amount of MIB data contained in an organization's information technology (IT) department has become so large that isolating useful management information requires a fair degree of knowledge, expertise, and time. As a result, much of the SNMP instrumentation developed by device vendors, and the resulting network management capabilities, are not utilized by the typical IT professional.
As such, many typical network management systems suffer from deficiencies in providing easy access to and use of management information. Accordingly, there is a need for an improved method and apparatus for collecting and displaying network device information.
SUMMARY
In one particular embodiment, the disclosure is directed to a network management system. The network monitoring system includes at least one device definition file, a simple network management protocol enabled communications interface, and a data access interface. The device definition file includes query instructions associated with a network device. The simple network management protocol enabled communications interface may access the network device using the query instructions and may receive response data from the network device. The data access interface may be configured to provide external access to the response data.
In another particular embodiment, the disclosure is directed to a network monitoring system. The network monitoring system includes at least one device definition file, a simple network management protocol communications interface, and a data access interface. The device definition file includes query instructions for accessing a management information base supporting a network device. The simple network management protocol communications interface may access the network device using the query instructions and may receive response data from the network device. The data access interface may be configured to send a notification in response to a comparison of a threshold value and the response data.
In an additional embodiment, the disclosure is directed to a device definition file. The device definition file includes query instructions for accessing a management information base using the simple network management protocol, supplemental data associated with the network device, and computer-implement instructions for unit conversion of at least one field of retrieved data associated with the query instructions.
Another embodiment disclosed is an interface. The interface is presented on a display. The interface includes response data from a query to a network device using a simple network management protocol and a device definition file. The user interface also includes supplemental data associated with the network device and stored in the device definition file. The user interface also includes converted data derived from the response data in accordance with the device definition file.
Further exemplary embodiments are directed to a method of generating a device definition file. The method includes the steps of determining an object identification associated with a management information base of a network device; generating query instructions associated with the object identification; adding supplemental data to the query instructions, and providing a unit conversion code to the query instructions. The supplemental data and unit conversion code are associated with the object identification.
Additional exemplary embodiments are directed to a method of producing data associated with a network device. The method includes the steps of accessing the network device using query instructions associated with a device definition file and an associated simple network management protocol interface; receiving response data from the network device; converting the response data in accordance with the device definition file to produce converted data.



BRIEF DESCRIPTION OF THE DRAWINGS
FIGS. 1 and 2 depict exemplary embodiments of network management systems.
FIG. 3 depicts an exemplary embodiment of a device definition file.
FIGS. 4 and 5 depict exemplary methods for use by a network management system.
FIGS. 6, 7, 8 and 9 depict exemplary interfaces of a network management system.



The use of the same reference symbols in different drawings indicates similar or identical items.
DETAILED DESCRIPTION
A large number of networkable devices conform to Simple Network Management Protocol (SNMP). Each of these devices has a management information base (MIB) that may contain several thousand entries or object identifications (OID). A few of these OIDs relate to environmental and physical conditions such as temperature, power quality, and fan speed. Some other OIDs may relate to current, voltage, humidity, dew point, audio, and motion. Other OIDs provide descriptions relating to OIDs having numerical values. The present disclosure describes a system and method for accessing, collecting, and storing selected data using SNMP, MIBs, and OIDs.
The disclosure discusses a data preparation system and a network monitoring system. The data preparation system has a set of mechanisms to prepare a data file that isolates and surfaces the pertinent OIDs for a specified network-attached device, optionally adds supplemental data, and performs unit conversions. The network monitoring system displays the results from the data preparation system in a user-interface, in which typical SNMP-based monitoring activities can be performed by the user.
FIG. 1 depicts an exemplary embodiment of a network management system. The network management system 102 includes a device definition file (DDF) 104. This device definition file 104 may be considered as part of the data preparation system and may include query instructions, supplemental data, conversion instructions, and other information associated with a network device 108. The network management system 102 may be coupled to the network device 108 through the network and may communicate using network management protocols, such as Simple Network Management Protocol (SNMP), and other communications protocols. For example, the network management system 102 may use the query instructions associated with the device definition file 104 to make an SNMP query to the network device 108. The query may, for example, request physical and environmental data such as temperature, fan speeds, and power quality. In other exampled, the data may include current, voltage, humidity, dew point, audio information, and motion information. The network device 108 may then return response data to the network management system 102. The network management system 102 may augment the response data with supplemental data associated with the device definition file 104 or may perform calculation on the data such as unit conversions in accordance with the device definition file 104. The network management system 102 may also compare the response data with threshold values. In response to this comparison, the network management system 102 may send a notification to the user 106.
The network management system 102 may query the network device 108 periodically or on prompting by a user 106. The network management system 102 may monitor the performance of the network device 108 by periodically querying the network device 108 with the queries associated with the device definition file 104. Alternately, a user 106 may request information or data regarding network device 108. In response to this request, the network management system 102 may access the network device 108 with queries associated with the device definition file 104. In either case, the network device 108 returns response data, which is then augmented with supplemental data and unit conversions associated with the device definition file 104 and provided to the user 106.
The user 106 and network device 108 may be coupled to the network management system 102 through the same or different networks. The device data may be supplied to the user 106 using various transfer protocols and methods including HTTP, FTP, and TCP/IP, among others. For example, the network management system 102 may supply an HTML-based page to the user 106. Alternately, the network management system 102 may provide a data file to the user 106 through FTP transfer. In a further example, the network monitoring system 102 may send a notification of the data through Simple Mail Transfer Protocol (SMTP) or a text messaging protocol.
The network management system 102 may acquire the device definition file 104 from a repository 110. This acquisition may be in response to discovering a device 108 on the network, periodically checking for updates to device definition files, or at the prompting of the user 106.
Exemplary embodiments may be implemented on various forms of equipment. One exemplary embodiment may be implemented on a network appliance. A network appliance may be, for example, a stand-alone device built to perform a well-defined set of functions and that is capable of connecting to a global network such as the Internet. The appliance may include software to configure, monitor, and control its functions via the global network. The appliance may include a processor subsystem. The processor subsystem may have a microprocessor, memory, and associated support circuitry necessary for the microprocessor to function. One exemplary embodiment may use a 32-bit RISC processor manufactured by Motorola. Other embodiments could utilize 16-bit or even 8-bit microprocessors. Other embodiments may include 64 MB Flash memory for program storage, 128 MB of RAM for data storage, and a real time clock (RTC).
The appliance may also include nonvolatile memory for maintaining state information in the event of power loss. The information stored in nonvolatile memory may include: device definition files (DDFs), configuration files, the values of the RTC for the beginning and end of the period that network performance data was measured, the last known state of network devices, and threshold data.
In one exemplary embodiment, the network management system 102 may be a miniaturized environmental monitoring unit with a web-enabled interface. This miniaturized environmental monitoring apparatus may be coupled to an intranet. Using device definition files, the miniaturized environmental monitoring unit may also communicate with devices on the intranet. This communication may be used to monitor environmental sensors on the devices or operational characteristics of the devices. The data acquired from the devices on the intranet may then be provided to a user. The user may be on a wide-area network or global network separate from the intranet. The miniaturized environmental monitoring system may also communicate with a central data repository or centralized management system such as Netbotz Central.
FIG. 2 depicts an exemplary network management system 202. The network management system 202 may include computational circuitry 204, network connection(s) 206, a query engine 208, a device definition file(s) 210, an SNMP-enabled interface 212, and a data access interface 214. The network management system 202 may also include a device definition file generator 216 and threshold values 218.
The computational circuitry 204 may take the form of processors, memory and other communications circuitry for providing a computational platform. The network connections 206 may take various forms including wireless and hard-wired network connections such as Ethernet, wireless Ethernet, Bluetooth®, USB, serial connections, pager networks, telephone networks, other radio frequency connections, and other hard-wired connections. The network connections 206 may permit communication with other networked devices via various protocols including TCP/IP, HTTP, FTP, SNMP, SMTP, SNPP, text messaging protocols, and UDP, among others. The network management system 202 may include more than one network connection 206. For example, the network management system 202 may include a connection to an intranet. In addition, the network management system 202 may include a connection to an external network such as a wide-area network or a global network such as the Internet.
The network management system 202 may include a query engine 208 and device definition files 210 associated with devices to be monitored on a network. The query engine 208 may interpret query instructions associated with the device definition file 210. The device definition files 210 may include query instructions, associated OIDs, associated values and units, and descriptions associated with devices on the network. The device definition file 210 may also include supplemental data and conversion codes associated with the OIDs. A different device definition file 210 may be provided for each device on the network. Alternately, device definition files 210 may be provided for each type of network equipment. Also, the DDFs may be provided for each vendor of networked devices. For example, device definition files 210 may be provided for servers, routers, switches, and other SNMP-enabled networked equipment. The query engine 208 may also query a device on the network using the query instructions of the device definition file 210 to determine which subset of query instructions apply to a particular device.
The network management system 202 may also include an SNMP-enabled interface 212. The SNMP-enabled interface 212 may permit communication between the network management system 202 and devices on the network. Other interfaces may be provided for various network management protocols and the device definition files 210 or query engine 208 altered to communicate using these alternate protocols.
A data access interface 214 may also be provided. Users or central server systems may access this data access interface 214 to acquire response data from queries of network devices. The data access interface 214 may take various forms and communicate using various protocols such as HTTP, SMTP, FTP, and text messaging formats. For example, the data access interface 214 may provide an HTML, XML, or plain text file containing requested data associated with the device definition file 210 and devices on the network. Alternately, the data access interface 214 may provide for the FTP access of data files. In another embodiment, the data access interface 214 may provide for SMTP access to data. The network management system 202 may e-mail notifications and data to users. In a further embodiment, the network management system 202 may have access to pager networks or telephone networks and transmit data in associated formats. In this manner, physical and environmental data associated with a device, for example, may be supplied to a user.
The network management system 202 may also include a device definition file generator 216. The definition file generator 216 may generate device definition files from data acquired from devices on the network. The generation of the device definition file may be performed upon discovery of the device or at the direction of a user. The definition file generator 216 may acquire a device definition file from a repository or may generate a device definition file using MIB information associated with the device. In either case, the user may supplement data associated with the device object identifications and MIB. In addition the user may provide for unit conversions.
The network monitoring system 202 may also include threshold values 218. These threshold values 218 may be set by a user and compared with values acquired through queries to network devices. Threshold values 218 may also be acquired from manufacturer suggested values stored in the MIB. If a value or the response data violates or transgresses a threshold value, the network monitoring system 202 may establish an alarm or notify a user. For example, the network monitoring system 202 may email a notification to a user, page a user, or send a text message to a user's portable phone or PDA.
One exemplary embodiment may use a network appliance as the hosting platform. The network monitoring system may be software that includes the components necessary to monitor network devices via SNMP, and the components necessary to interface with the DDFs. The network monitoring subsystem may download the vendor-specific DDFs from a DDF repository located on a server on the Internet, or from the local console if the user does not have an Internet connection. It may have the capability to periodically check the repository for new and updated DDFs. The system may then use the DDF information derived from or along with the corresponding MIBs to display the monitoring information to the user. Other embodiments of the network monitoring system may display network management information that allows the user to directly manage, as well as monitor, their network devices.
A further exemplary embodiment may allow the setting of thresholds on the derived OID values so that the user can be alerted to abnormal or unwanted network device conditions via the network appliance. The format and style of the thresholds are dependent on the data type in question, and may be dependent on a series of data types in order to completely determine the threshold conditions. Other network performance data is also monitored, such as network roundtrip time. Future versions of the DDFs could contain vendor recommended threshold information.
This exemplary embodiment may allow for surfacing the current values and alert states to other network monitoring solutions, both SNMP based and non-SNMP based. SNMP traps can be generated for alert conditions, and both alarm notifications and periodic status may be reported via HTTP (both POST and GET methods), FTP (STOR method), email, and alphanumeric paging. Other embodiments of the network monitoring systems may utilize other standard network protocols available at the time. The exemplary embodiment may include provisions for the delivery of alert notifications and periodic status reports, using the previously listed methods, across both an Ethernet-based TCP/IP network, as well as using alarm-initiated modem dial out (based on PPP). Additional delivery media, including 802.11a/b/g, cellular, RS-232, and Bluetooth®, are among the additional embodiments considered.
FIG. 3 depicts an exemplary device definition file 302. The device definition file 302 includes query instructions 304, supplemental data 306, and conversion instructions 308. The query instructions 304 may be interpreted to make queries to an MIB associated with a device. A network management system may use these queries and communicate with a device using a management protocol to collect values associated with object identifiers (OIDs). For example, the network management system may query physical or environmental parameters such as temperatures, fan speeds and power quality parameters. In other examples, the parameters may relate to humidity, voltage, current, dew point, audio information, and motion.
The supplemental data 306 and the conversion instructions 308 may be used to augment the results of the queries. In one exemplary embodiment, the supplemental data 306 and the conversion instructions 308 may be integrated into the query instructions 304. The supplemental data 306 may include descriptions, descriptive names, and preset values. The conversion instructions 308 may permit the unit conversion of data acquired through the queries 304. Unit conversions may be performed on management data so that the network monitoring application displays the units as expected by the end-user. The conversion instructions 308 may also permit replacement of values and character strings, and conversion from integer values to floating point values.
The query instruction may take the form of one of three query types, among others: static (single item surfaced from an OID), table (enumerated items surfaced from an OID), and noQuery (supplemental data provided by the device definition file author). The static query type may be used to obtain data from any or all of the set of MIBs that may be implemented by a particular SNMP agent. If the MIB defines a data type for the raw value of the object being obtained then the network monitoring system may dynamically obtain that value. Alternately, the raw value data type may be statically defined on that line by the author of the device definition file, or by definition file generation software. The raw value of the object may take on several different types including integers, and strings, among others. An enumerated type may also be allowed where an integer returned by the agent can correspond to either a string or number defined in the enumeration portion of the query line. This query type may have the ability to perform calculations on the returned value.
The scale and precision may also be queryable from a static line entry for objects with numeric data types, if this information is so contained in the MIB. If this information is not in the MIB, again, the device definition file author, or definition file generation software, may designate a value for scale and precision of the object.
Descriptive information may be queried from the agent when it is available. The descriptive information may take on any data type such as integer or string, as well as an enumerated data type. Additional descriptive identification strings can be prepended and/or appended to the description of the object contained in the MIB, if any.
In one exemplary embodiment, the static query type may be formatted as follows: static : sensorDataType : sensorDataTypeOid : rawValueDataType : rawValueOid : rawValueScaleDataType : rawValueScaleOid : rawValuePrecisionDataType : rawValuePrecisionOid : descriptionDataType : descriptionOid : prependDescriptionText : appendDescriptionText :
where:


    
    
        <sensorDataType> is the type of value or data contained in the <rawValueOid>, including ‘DisplayString’, ‘Integer’, ‘am’ (Amperes), ‘dc’ (Degrees Celsius), ‘df’ (Degrees Fahrenheit), ‘fm’ (Feet/Minute), ‘ho’ (Hours), ‘hz’, (Hertz), ‘mi’ (Minutes), ‘mm’, Meters/Minute), ‘ot’ (Other), ‘pe’ (Percent), ‘rh’ (Percent Relative Humidity), ‘rp’ (Revolutions per Minute, or RPMs), ‘se’ (Seconds), ‘sp’ (Special Enumerated Type), ‘t1’, (time in HH:MM:SS:MS format), ‘t2’ (time in HH:MM:SS format), ‘t3’ (time in HH:MM format), ‘ti’ (Time Ticks), ‘un’ (Unknown), ‘va’ (Volts AC), ‘vd’ (Volts DC), ‘vo’ (Volts), ‘wa’ (Watts), among others. Additional types can be defined using the #define statement.
        <sensorDataTypeOID> is an optional OID specifiying the type of data contained in the raw value OID; only used where this type of data is enumerated.
        <rawValueDataType> is either blank or enum{x,xs, y,ys, z,zs} where x,xs, y,ys, z,zs are value-string pairs used to determine the actual value where the value from the rawValueDataType represents a finite number of enumerated values.
        <rawValueOid> the OID containing the unprocessed data.
        <rawValueScaleDataType> specifies the scale or magnitude of the raw data. It is either a power of 10, or an enum{ } string representing a power of 10, as specified above. In the enum{ } case, the value used to choose the scale is obtained from the following field OID.
        <rawValueScaleOid> specifies the OID used to determine the scale when that scale is an enumerated value from within the MIB.
        <rawValuePrecisionDataType> specifies the precision (display precision) to be used for the data type. It can also be an enum{ } string, in which case the following field is used to choose the precision.
        <rawValuePrecisionOid> specifies the OID used to determine the precision when that precision is an enumerated value from within the MIB.
        <descriptionDataType> specifies the description, as an enum{ } field, when the enum selection will be determined by the following OID.
        <descriptionOid> specifies the description of the data. It can either be a STRING value or an integer used to enumerate through the above descriptionDataType.
        <prependDescriptionText> specifies a string to be prepended to the resulting string (if any) from the combination of the descriptionOid and the descriptionDataType.
        <appendDescriptionText> specifies a string to be appended to the resulting string (if any) from the combination of the descriptionOid and the descriptionDataType.
    
    


Examples of the static query type include:

    
    
        static:dc:::1.3.6.1.4.1.5528.32.10.2:1::::::Temperature::
        static:::DisplayString:1.3.6.1.4.1.674.10892.1.300.10.1.9.1:::::::Model::
    
    


Table query types may expand on the static queries by allowing the network system to apply a whole list of static queries to an index based table. Tabular MIB data is typically found in vendors' MIBS. The table query may be supplied with an object that when queried, the agent will return a list of numeric indices. These indices may then be appended to the original object and iterated through and applied to each following static entry in the table until a new entry is found in the device definition file, starting a new separate query. The static queries may take on the same form as described above in the static query type paragraph. Table queries may contain other tabular MIB objects in any of their fields. In this manner it is possible to pair object types, raw values, scales, precisions, and descriptions with data contained in separate individual tables in the MIB, by matching the index in the individual tables with the list of indices returned by the agent when the index object was queried.
In one exemplary embodiment, the table query type may be formatted as follows: table : indexOid : sensorDataType : sensorDataTypeOid : rawValueDataType : rawValueOid : rawValueScaleDataType : rawValueScaleOid : rawValuePrecisionDataType : rawValuePrecisionOid : descriptionDataType : descriptionOid : prependDescriptionText : appendDescriptionText :
where:


    
    
        <indexOid> is the base SNMP OID of the index column for the table. Each value found in this column is enumerated through and used as an index for the other OID fields within the table line (and its continuation lines).
        <sensorDataType> is the type of value or data contained in the <rawValueOid>, including ‘DisplayString’, ‘Integer’, ‘am’ (Amperes), ‘dc’ (Degrees Celsius), ‘df’ (Degrees Fahrenheit), ‘fm’ (Feet/Minute), ‘ho’ (Hours), ‘hz’, (Hertz), ‘mi’ (Minutes), ‘mm’, Meters/Minute), ‘ot’ (Other), ‘pe’ (Percent), ‘rh’ (Percent Relative Humidity), ‘rp’ (Revolutions per Minute, or RPMs), ‘se’ (Seconds), ‘sp’ (Special Enumerated Type), ‘t1’, (time in HH:MM:SS:MS format), ‘t2’ (time in HH:MM:SS format), ‘t3’ (time in HH:MM format), ‘ti’ (Time Ticks), ‘un’ (Unknown), ‘va’ (Volts AC), ‘vd’ (Volts DC), ‘vo’ (Volts), ‘wa’ (Watts), among others. Additional types can be defined using the #define statement.
        <sensorDataTypeOID>is an optional OID specifying the type of data contained in the raw value OID; only used where this type of data is enumerated.
        <rawValueDataType> is either blank or enum{x,xs, y,ys, z,zs} where x,xs, y,ys, z,zs are value-string pairs used to determine the actual value where the value from the rawValueDataType represents a finite number of enumerated values.
        <rawValueOid>the OID containing the unprocessed data.
        <rawValueScaleDataType> specifies the scale or magnitude of the raw data. It is either a power of 10, or an enum{ } string representing a power of 10, as specified above. In the enum{ } case, the value used to choose the scale is obtained from the following field OID.
        <rawValueScaleOid> specifies the OID used to determine the scale when that scale is an enumerated value from within the MIB.
        <rawValuePrecisionDataType> specifies the precision (display precision) to be used for the data type. It can also be an enum{ } string, in which case the following field is used to choose the precision.
        <rawValuePrecisionOid> specifies the OID used to determine the precision when that precision is an enumerated value from within the MIB.
        <descriptionDataType> specifies the description, as an enum{ } field, when the enum selection will be determined by the following OID.
        <descriptionOid> specifies the description of the data. It can either be a STRING value or an integer used to enumerate through the above descriptionDataType.
        <prependDescriptionText> specifies a string to be prepended to the resulting string (if any) from the combination of the descriptionOid and the descriptionDataType.
        <appendDescriptionText> specifies a string to be appended to the resulting string (if any) from the combination of the descriptionOid and the descriptionDataType.
    
    


Each table line may have continuation lines which have the format: : sensorDataType : sensorDataTypeOid : rawValueDataType : rawValueOid : rawValueScaleDataType : rawValueScaleOid : rawValuePrecisionDataType : rawValuePrecisionOid : descriptionDataType : descriptionOid : prependDescriptionText : appendDescriptionText:
and where the fields have the same meanings as the primary table line.
Examples of the table query type include:

    
    
        table:1.3.6.1.4.1.674.10892.1.700.20.1.2:dc:::1.3.6.1.4.1.674.10892.1.700.2 0.1.10:1:::::1.3.6.1.4.1.674.10892.1.700.20.1.8::Upper Threshold: :dc:::1.3.6.1.4.1.674.10892.1.700.20.1.6:1:::::1.3.6.1.4.1.674.10892.1.700.2 0.1.8:::
        :dc:::1.3.6.1.4.1.674.10892.1.700.20.1.13:1:::::1.3.6.1.4.1.674.10892.1.700. 20.1.8::Lower Threshold:
        table:1.3.6.1.4.1.9.9.91.1.1.1.1.1:enum{1,ot,2,un,3, va,4, vd,5, am,6, wa,7, hz, 8, dc,9, rh,10, rp,11, cm,12, tv,13, sp}:1.3.6.1.4.1.9.9.91.1.1.1.1.1::1.3.6.1.4.1. 9.9.91.1.1.1.1.4:enum{1,−24,2,−21,3,−18,4,−15,5,−12,6,−9,7,−6,8,−3,9,0,10,3,11,6,12,9,13,12,14,18,15,15,16,21,17,24}:1.3.6.1.4.1.9.9.91.1.1. 1.1.2::1.3.6.1.4.1.9.9.91.1.1.1.1.3::1.3.6.1.2.1.47.1.1.1.1.2:::
    
    


The noQuery type may be used to publish additional data to the user interface that is desirable to be shown with the data being monitored, but the vendor failed to include in any MIB file implemented by the agent. The noQuery line may have the ability to specify the data type of the raw value to be displayed. The raw value may be in this case, of course, statically defined in the device definition file itself. In order for this data to qualify for being displayed with the other data being monitored from a specific agent, the noQuery type may specify an object in the agent's MIB. In one exemplary embodiment, the data will not be displayed if the agent does not return a value. This validates that the agent is one that the network system software knows this data should be displayed for, as long as a token object exists in its MIB. A description of the data being displayed may be specified as well in the device definition file.
The noQuery type may be formatted as follows:


    noQuery:<rawValueDataType>:<rawValue>:<requiredOid>:<optionalDescriptionText>

where:
    
        <rawValueDataType> is the type of data to be displayed, including ‘DisplayString’, ‘Integer’, ‘am’ (Amperes), ‘dc’ (Degrees Celsius), ‘df’ (Degrees Fahrenheit), ‘fm’ (Feet/Minute), ‘ho’ (Hours), ‘hz’, (Hertz), ‘mi’ (Minutes), ‘mm’, Meters/Minute), ‘ot’ (Other), ‘pe’ (Percent), ‘rh’ (Percent Relative Humidity), ‘rp’ (Revolutions per Minute, or RPMs), ‘se’ (Seconds), ‘sp’ (Special Enumerated Type), ‘t1’, (time in HH:MM:SS:MS format), ‘t2’ (time in HH:MM:SS format), ‘t3’ (time in HH:MM format), ‘ti’ (Time Ticks), ‘un’ (Unknown), ‘va’ (Volts AC), ‘vd’ (Volts DC), ‘vo’ (Volts), ‘wa’ (Watts). Additional types can be defined using the #define statement.
        <rawValue> is the value of the attribute
        <requiredOid> is the SNMP OID of an object that exist on the device in order for the attribute to be relevant
        <optionalDescriptionText> is a user-friendly label for the attribute Examples of the noQuery type include:
        noQuery:DisplayString:NetBotz:1.3.6.1.4.1.5528.30.10.1:Vendor
        noQuery:DisplayString:Compaq:1.3.6.1.4.1.232.2.2.4.2:Vendor:
    
    


FIG. 4 depicts a method for generating a device definition file (DDF). At step 402, the MIB is located for a device. This MIB may be provided by the vendor or acquired from the device. The MIB may then be parsed, as shown in step 404. The parsing may use a keyword search within the MIB to produce the initial DDF, which may then be modified by the DDF author with management information that is not derived programmatically. The keywords may be used to determine or surface the OIDs of interest, as shown in step 406. These OIDs may include different types of management data, such as environmental, performance, or inventory data.
Using the OIDs, query instructions may be written, as shown at step 408. If available, these query instructions may be correlated with other OIDs indicating description data, as shown at step 410. The query instructions may be static, table, or noQuery type instructions. The static query instructions may include a reference to the OID and a reference to the correlated description OID. A table query instruction may include a reference to a wildcard or MIB branch starting point. The table query may also include a reference to a correlated description OID starting point.
The data format of the values returned through queries associated with the query instructions may be determined, as shown at step 412. This data format may include characters, integers, and other formats. The data may be supplemented and converted. Integer values may be converted to floating point values. Integers may be replaced with descriptive strings and non-query data may be supplied as descriptions. The supplemental data and conversion codes may be added to the query instructions, as shown in step 414. A set of query instructions including OIDs, supplemental data, and conversion codes may then be saved as a device definition file, as shown in step 416.
The device definition file may be made manually or automatically. Other embodiments could utilize a graphical user-interface that builds the device definition file interactively, depending on the type of network management the user was interested in, or employ the internet to search known MIB repositories from specific network device vendors. Additional query types can be added to handle changes or additions to the MIB structure as needed.
FIG. 5 depicts a method for providing access to data associated with a network device using a device definition file. A target device may be defined, as shown in step 502. An interface may be provided to a user to provide the address and other information associated with the device. A device definition file associated with the device may also be installed, as shown in step 504. Also, multiple device definition files may be installed. Multiple device definitions files may apply to a single device. Device definition files may be structured so that they are generic or cover a class of devices or similar devices from a specific vendor. Therefore a device definition file associated with the device may be installed prior to the definition of the target device.
In step 506, an initial query is made to the device to determine what portion of the device definition file(s) applies to the device. The device definition file may be written in a device specific form. In which case, the whole device definition file may be applicable. However, if the device definition file is written to cover a class of devices or devices with similar MIBs, a subset of the query instructions may apply or a wildcard reference to a branch in the MIB tree may return a different set of OIDs. The results of the initial queries may be stored as selected queries associated with the device, as shown in step 508.
Periodically or on-demand, the network monitoring system may query the device, as shown in step 510. The device may provide response data to the network monitoring system. The network monitoring system may interpret these results and provide the response data or interpreted response data to a user or user interface, as shown in step 512. The network monitoring system may convert units and numerical types, replace integers with corresponding entries in an enumerated list, replace descriptive names, and perform other functions in accordance with the device definition file to provide the interpreted response data to the user.
The response data may also be compared to threshold values, as shown in step 514. If the response data transgresses threshold values or violates rules associated with the threshold values, a notification may be sent to a user, as shown in step 516. This notification may be an email, page, text message, or other communications. Alternately, the notification may be a visual change or audio alarm encoded in an HTML page.
Using the descriptions provided by the DDF, an exemplary embodiment may provide an easy to use and friendly presentation of the desired SNMP data provided by the device. Unlike typical SNMP tools, the labels presented may be easy to read and have plain meaning, as opposed to the symbolic names dictated by the MIB syntax standard. In an exemplary embodiment, the user is presented with only relevant desired SNMP data, as opposed to all objects in a MIB. An example panel, derived from a DDF, is shown in FIG. 6.
In this example, several of the aspects of the interface are evident. The description labels are clear and descriptive, as opposed to being cryptic and symbolic. The values of many of the fields are floating point (a format not supported by SNMP natively). In the example shown in FIG. 6, the DDF provides a scaling factor to convert the raw data (which was an integer number of millivolts) to the more familiar unit (volts). By using the table query, coupled with the description OIDs, a number of different attributes (the various voltages instrumented by the vendor MIB) are presented in a clear and easy to identify manner, without requiring explicit definitions for each attribute.
The Network Monitor may also provide an interface for the definition of thresholds, as shown in FIG. 7 and FIG. 8. This interface may provide support for a variety of logical comparison operations (greater-than, less-than, not-equal, etc), allowing a high degree of control over threshold definitions.
The user may also enter in custom OIDs, allowing support of additional, device-specific or application-specific instrumentation. As shown in FIG. 8, the user is enabled to enter in a description of the field, as well as being allowed to select between a variety of interpretations of the data (including scaling of the values).
The network monitoring system may also collect a variety of generic or device independent information, including various MIB-2 SNMP data and trace route information. The trace route information describes the routing of packets between the network monitoring system and the device being monitored. This information may be summarized, and presented for user viewing as shown in FIG. 9. This information may also be monitored, and alert notifications generated, when abnormal results are obtained. The routing information may also be included in any alarm notifications, which can prove invaluable when attempting to determine the source of a network outage since loss of contact with a device may mean the device has failed or the network between the network monitoring system and the device has failed.
Example device definition files are provided. The following device definition file is an example of a 3rd party equipment device definition file.
NBOCFV3F1.0 Example Corporation
static:::DisplayString:1.3.6.1.4.1.674.10892.1.300.10.1.8.1:::::::Vendor::
static:::DisplayString:1.3.6.1.4.1.674.10892.1.300.10.1.9.1:::::::Model::
table:1.3.6.1.4.1.674.10892.1.600.12.1.2:::enum{1,Other,2,Unknown,3,OK,4,Non-critical,5,Critical,6,Nonrecoverable}:1.3.6.1.4.1.674.10892.1.600.12.1.5:::::: 1.3.6.1.4.1.674.10892.1.600.12.1.8:::
:::enum{1,Other,2,Unknown,3,Full,4,Degraded,5,Lost,6,Not Redundant,7,Redundancy Offline}:1.3.6.1.4.1.674.10892.1.600.10.1.5::::::1.3.6.1.4.1.674.10892.1. 600.10.1.7:::
table:1.3.6.1.4.1.674.10892.1.700.20.1.2:dc:::1.3.6.1.4.1.674.10892.1.700.20.1.10 :1:::::1.3.6.1.4.1.674.10892.1.700.20.1.8::Upper Threshold:
:dc:::1.3.6.1.4.1.674.10892.1.700.20.1.6:1:::::1.3.6.1.4.1.674.10892.1.700.20.1.8:: :
:dc:::1.3.6.1.4.1.674.10892.1.700.20.1.13:1:::::1.3.6.1.4.1.674.10892.1.700.20.1.8:: Lower Threshold:
table:1.3.6.1.4.1.674.10892.1.700.12.1.2:rp:::1.3.6.1.4.1.674.10892.1.700.12.1.10: :::::1.3.6.1.4.1.674.10892.1.700.12.1.8::Upper Threshold:
:rp:::1.3.6.1.4.1.674.10892.1.700.12.1.6::::::1.3.6.1.4.1.674.10892.1.700.12.1.8:::
:rp:::1.3.6.1.4.1.674.10892.1.700.12.1.13::::::1.3.6.1.4.1.674.10892.1.700.12.1.8::Lower Threshold:
table:1.3.6.1.4.1.674.10892.1.600.20.1.2:vo:::1.3.6.1.4.1.674.10892.1.600.20.1.10: 3:::::1.3.6.1.4.1.674.10892.1.600.20.1.8::Upper Threshold:
:vo:::1.3.6.1.4.1.674.10892.1.600.20.1.6:3:::::1.3.6.1.4.1.674.10892.1.600.20.1.8:: :
:vo:::1.3.6.1.4.1.674.10892.1.600.20.1.13:3:::::1.3.6.1.4.1.674.10892.1.600.20.1.8::Lower Threshold:
table:1.3.6.1.4.1.674.10892.1.600.30.1.2:am:::1.3.6.1.4.1.674.10892.1.600.30.1.1 0:3:::::1.3.6.1.4.1.674.10892.1.600.30.1.8::Upper Threshold:
:am:::1.3.6.1.4.1.674.10892.1.600.30.1.6:3:::::1.3.6.1.4.1.674.10892.1.600.30.1.8: ::
:am:::1.3.6.1.4.1.674.10892.1.600.30.1.13:3:::::1.3.6.1.4.1.674.10892.1.600.30.1.8::Lower Threshold:
The following is an example of a network appliance device definition file.
NBOCFV3F1.0 Company
noQuery:DisplayString:Company:1.3.6.1.4.1.5528.30.10.1:Vendor:
static:::DisplayString:1.3.6.1.4.1.5528.32.10.1:::::::Model::
static:dc:::1.3.6.1.4.1.5528.32.10.2:1::::::Temperature::
static:rh:::1.3.6.1.4.1.5528.32.10.3:::::::Humidity::
static:mm:::1.3.6.1.4.1.5528.32.10.4:::::::Airflow::
static:::enum{0,No,1,Yes}:1.3.6.1.4.1.5528.32.10.5:::::::Audio Alarm::
static:::enum{1,Open,0,Closed}:1.3.6.1.4.1.5528.32.10.6:::::::Door Switch::
static:dc:::1.3.6.1.4.1.5528.32.10.7:1::::::Temperature Lower Threshold::
static:dc:::1.3.6.1.4.1.5528.32.10.8:1::::::Temperature Upper Threshold::
static:rh:::1.3.6.1.4.1.5528.32.10.9:::::::Humidity Lower Threshold::
static:rh:::1.3.6.1.4.1.5528.32.10.10:::::::Humidity Upper Threshold::
static:::Integer:1.3.6.1.4.1.5528.32.10.11:::::::Airflow Minutes Off Before Alarm::
static:::Integer:1.3.6.1.4.1.5528.32.10.12:::::::Seconds of Audio Before Alarm::
static:::enum{0,Alarm on Closed,1,Alarm on Open}:1.3.6.1.4.1.5528.32.10.13:::::::Door Switch Alarm Setting::
static:::Integer:1.3.6.1.4.1.5528.32.10.14:::::::Audio Sensor Sensitivity:
static:mm:::1.3.6.1.4.1.5528.32.10.15:::::::Airflow Lower Threshold::
static:::enum{0,No Motion,1,Motion Detected,−1,Not Licensed}:1.3.6.1.4.1.5528.32.10.16:::::::Camera Motion::
static:::Integer:1.3.6.1.4.1.5528.32.10.17:::::::Camera Motion Sensitivity (1-max, 15-min, 0-disabled)::
The above disclosed subject matter is to be considered illustrative, and not restrictive, and the appended claims are intended to cover all such modifications, enhancements, and other embodiments which fall within the true spirit and scope of the present invention. Thus, to the maximum extent allowed by law, the scope of the present invention is to be determined by the broadest permissible interpretation of the following claims and their equivalents, and shall not be restricted or limited by the foregoing detailed description.

## Claims

1. A method for presenting a user interface on a display of a computer system using a network appliance, the method comprising:
executing, by the network appliance, an initial query to a network device, the initial query requesting a set of information;
receiving, by the network appliance, a subset of the set of information;
determining, by the network appliance using the subset, at least one selected query associated with the network device;
executing, by the network appliance, the at least one selected query to the network device using simple network management protocol (SNMP), wherein the at least one selected query is stored in a device definition file;
receiving response data by the network appliance;
reading, by the network appliance from the device definition file, supplemental data associated with the network device;
converting, by the network appliance, a first portion of the response data into converted data in accordance with the device definition file;
providing, by the network appliance, a portion of the response data other than the first portion, the supplemental data and the converted data to the computer system;
comparing, by the network appliance, the response data to a threshold value;
generating, by the network appliance, a notification where the response data transgresses the threshold value; and
presenting a portion of the response data other than the first portion, the notification, the supplemental data and the converted data on the display of the computer system.

2. The method according to claim 1, further comprising:
receiving trace route information associated with the network device; and
providing the trace route information to the computer system.

3. The method according to claim 1, further comprising:
receiving SNMP Management Information Base-2 (MIB-2) data associated with the network device; and
providing the SNMP MIB-2 data to the computer system.

4. The method according to claim 1, wherein executing the at least one selected query includes executing a static query.

5. The method according to claim 1, wherein executing the at least one selected query includes executing a table query.

6. The method according to claim 1, wherein receiving the response data includes receiving data representing a physical measurement.

7. The method according to claim 6, wherein receiving the data representing a physical measurement includes receiving data representing at least one physical measurement selected from fan speed, temperature and power quality.

8. The method according to claim 1, wherein receiving the response data includes receiving data associated with at least one SNMP object identifier, reading the supplemental data includes reading a description associated with the at least one SNMP object identifier and providing the portion of the response data other than the first portion, the supplemental data and the converted data includes providing the description in association with the data associated with the at least one SNMP object identifier.

9. The method according to claim 1, wherein converting the first portion of the response data includes replacing an integer value in the response data with a description.

10. The method according to claim 1, wherein converting the first portion of the response data includes performing a unit conversion.

11. The method according to claim 10, wherein performing the unit conversion includes scaling some of the first portion of the response data.

12. The method according to claim 1, wherein providing the portion of the response data other than the first portion, the supplemental data and the converted data includes providing data types not supported by SNMP.

13. The method according to claim 12, wherein providing data types not supported by SNMP includes providing floating point data types.

14. A network appliance comprising a processor and a memory coupled to the processor, the memory having stored thereon sequences of instruction including executable instructions configuring the processor to:
execute an initial query to a network device, the initial query requesting a set of information;
receive a subset of the set of information;
determine, using the subset, at least one selected query associated with the network device;
execute the at least one selected query to a network device using simple network management protocol (SNMP), wherein the at least one selected query is stored in a device definition file;
receive response data;
read supplemental data associated with the network device and stored in the device definition file;
convert a first portion of the response data into converted data in accordance with the device definition file;
compare the response data to a threshold value;
generate a notification where the response data transgress a threshold value; and
provide, via a hypertext markup language page, a portion of the response data other than the first portion, the notification, the supplemental data and the converted data.

15. The network appliance according to claim 14, wherein the executable instructions will further configure cause the processor to:
receive trace route information associated with the network device; and
provide, via the hypertext markup language page, the trace route information.

16. The network appliance according to claim 14, wherein the executable instructions further configure the processor to:
receive SNMP Management Information Base-2 (MIB-2) data associated with the network device; and
provide, via the hypertext markup language page, the SNMP MIB-2 data.

17. The network appliance according to claim 14, wherein the executable instructions further configure the processor to receive data representing a physical measurement.

18. The network appliance according to claim 14, wherein the executable instructions further configure the processor to receive at least one physical measurement selected from fan speed, temperature and power quality.

19. The network appliance according to claim 14, wherein the executable instructions further configure the processor to provide data types not supported by SNMP.

20. The network appliance according to claim 14, wherein the executable instructions further configure the processor to provide floating point data types.