Outline of a networked device discovery/configuration engine.
The purpose of this document is to describe a network discovery/configuration engine which will –
The document includes algorithms for doing searches, description of tables used and its elements, and programming issues.
Background
If you have worked with the major network management products like OpenView or Spectrum from Cabletron, you should be familiar with discovery applications. These applications try to determine your network topology and "help you" draw it in a graphical way. More sophisticated discovery routines like those in the Spectrum product try to determine actual connectivity at the physical layer and pinpoint what hub port an interface is connected to and so on.
These discovery programs usually run in the background and consume low system resources. They have filter to limit the number of packets that they are putting on the network, and ranges of addresses to only check.
Notes, Concepts and Rambles
Below in no particular order are some notes about the whole process –
Algorithm
Ok, this describes the main process to find devices –
For each poller, here is its process –
Check for SNMP
Check for OIDs supported
Check for supported service
Check for interfaces supported
Issues – Next Phase
Tables Used
This section describes the data tables used and the elements on it
Configuration Tables
This table contains the name and addresses of networks we are interested in discovering all devices from.Element |
Type |
Desc |
|
Network Name |
Char |
The name we give this network (Ex. "Florida", "Accounting Building 10"). |
|
Network Address |
IP Address |
The network address (Ex. "192.168.1.0" or "192.178.0.0") |
|
Network Mask |
IP Address |
The mask to for the network (Ex. "255.255.255.0" or "255.255.255.247". |
|
Notes |
Char |
End user provided notes. |
Community Names to Check This table contains a lits of community names that you want the engine to check for every time that a device is polled. |
||
Element |
Type |
Desc |
Comm. Name |
Char |
Community Name to check (Ex. "public", "secret", etc). |
Type |
Char ("R", "W" or "RW") |
Type of check to perform – R is for read only, W is for Write and RW you know! |
Services to check for List of services to check for. |
||
Element |
Type |
Desc |
Service Name |
Char |
The name of the service (Ex. HTTP or Telnet) |
Port |
Number |
The port number where the service is at. |
OIDs to check This table will contain a list of all oids that the user is interested in having the engine check for. |
||
Element |
Type |
Desc |
OID Name |
Char (Unique) |
What English name do we give this (Ex. "RMON" "Cabletron Hub" |
OID Value |
Char |
The actual OID to check for existence (Ex. 1.3.6.1.4.99.3.2.1 ) |
Notes |
Char |
End user provided notes. |
Data Tables
Device Table The table that holds all of the device information. |
||
Element |
Type |
Desc |
Device ID |
Number (Unique) |
A unique number that identifies this device. |
Device Name |
Char |
The name of the device. Will be the SNMP Name is available, if not the DNS name of the IP found, if not the actual IP address. |
Address |
IP Address |
The IP address of the device. |
Network |
IP Address |
The IP network the device belongs to. (Ex. "205.143.103.0") |
Date Found |
Date Time |
When was it found for the first time. |
Found By |
Char |
The engine that found it (Multiple engines can be used to discover an environment). |
Last Check |
Date Time |
The last time the device was checked or verified. |
Times Checked |
Number |
The number of times we have tried checking the device. |
Last Time ICMP Check OK |
Date Time |
The last time we were able to verify the device was up through ICMP. |
SNMP Supported |
Char (Y or N) |
Does the device support SNMP ? (It could be a wrong community name, etc). |
Last Time SNMP Check OK |
Date Time |
The last time that we were able to verify that the SNMP was working OK. |
SysOID |
Char |
The System OID on the device (From the system group). |
SysContact |
Char |
The system contact field. |
SysLocation |
Char |
The system location. |
Read Comm Name |
Char |
The read community name. |
Write Comm Name |
Char |
The write community name. |
Notes |
Char |
End user supplied notes. |
Supported OIDs for device This table links what OIDs a device supports. |
||
Element |
Type |
Desc |
DeviceLink |
Number |
A number that links the record to a given device. |
OID Name |
Char |
The OID supported (See OID Table) |
Last Time OID Check OK |
Date Time |
The last date we were able to check that this OID exists on the system. |
Supported Services The services a given device supports |
||
Element |
Type |
Desc |
DeviceLink |
Number |
A number that links this record to a given device. |
Service Name |
Char |
The name of the service supported (See Services table) |
Last Time Serv Check OK |
Date Time |
The last time that the service was verified as responding. |
Interfaces Supported |
||
Element |
Type |
Desc |
DeviceLink |
Number |
A number that links this record to a given device. |
Interf Number |
Number |
The index number of the interface. |
Interf Desc |
Char |
The ifDescr field |
Interf Type |
Char |
What type of interface is it (similar to ifType values) |
Interf Speed |
Number |
The speed of the interface |
IP Address |
IP Address |
The IP address of the interface (can be blank if this is an unnumbered interface !!!) |
Phys Address |
Char |
The physical address of this interface (Mac or other). |
Interf Status |
Char |
The desired status of the interface (Up/down or Testing) |
Last Time If Check OK |
Date Time |
The last time we were able to verify the interface. |
History Table This table has a history of what the discovery system is doing. A system wide flag notes how many record it should keep before purging old ones. |
||
Element |
Type |
Desc |
Entry Number |
Number |
Integer number that keeps increasing. |
Date and Time |
Date and Time |
Date and time of the entry |
System |
Char |
The system affected. Blank if no system is affected (Ex. Start of a discovery poll) |
Level |
Number |
A number that represents the detail of the information been logged. Some examples are : 1 - Start up and shutdown of pollers and agent. 2 – Errors of any kind (SNMP mangled, etc). 3 – New system found. Etc. |
Text |
Char |
A text message to represent what the logged info means. |