Netdisco Pooling


Pooling of managed device in Netdisco is based on several different data sources. Based on collected data Netdisco is able to create topology of managed infrastructure.

Netdisco is using this pooling data sources:
- ARP table of the managed device (SNMP polling is used)
- MAC table of managed device (SNMP polling is used)
- LLDP / CDP/ … discovery of neighbors of managed device (SNMP polling is used)
- NetBIOS discovery of the topology (NetBIOS protocol is used)

Pooled data

Main functionality of Netdisco is to collecting information related to the Infrastructure topology with help of SNMP requests for data related to ARP, MAC, and LLDP/CDP information.

On another hand Netdisco is collecting as well additional information related to the Interface like speed and duplex. According to this Netdisco is able to provide you as well Speed/Duplex mismatch errors.

Netdisc is able to collect information related to:
- List of Interfaces related to the device
- Interface description
- SNMP Contact for device
- SNMP Location of device
- Interface speed / duplex
- Device vendor
- Device model
- Device OS version
- Vlan information
- Device uptime
- ARP, MAC table information from devices
- LLDP / CDP information
- Device Module information
- …

Pooling management

Periodical pooling of discovered devices is handled like standard “cron” job. According to this it is possible to customize this pooling.

Please prevent too aggressive pooling as some devices (I know about old CatOS 8.X) can run out of resources and reboot. According to this prevent parallel polling for example ARP and MAC table pooling at same time.

[root@Netdisco ~]# crontab -u netdisco -l
# Netdisco - crontab
#       This is the crontab for the netdisco user
#       Output is found in /data/netdisco/logs
# $Id$


# -- Weekly --

# Walk network for new devices once a week (Wed @ 14:00)
0 14 * * 3      /usr/local/netdisco/netdisco -b -r

# -- Daily --

# Backup at 1am every day
0 1 * * *       /usr/local/netdisco/netdisco -b -B

# Restart admin panel daemon nightly
0 2 * * *       /usr/local/netdisco/netdisco -b -p restart

# Refresh Graph every day
0 3 * * *       /usr/local/netdisco/netdisco -b -g 2>&1

# Refresh Devices at 9:00 every day
0 9 * * *      /usr/local/netdisco/netdisco -b -R

# -- Hourly --

# Arp Nip every hour on the half hour
30 * * * *  /usr/local/netdisco/netdisco -b -a

# Save configs every hour on the hour (only necessary if network includes
# devices that do not permanently save SNMP changes, such as Cisco IOS)
#0 * * * *  /usr/local/netdisco/netdisco -b -j 61

# Mac Suck every 2 hours
0 */2 * * * /usr/local/netdisco/netdisco -b -m

# Grab NetBios Info from Nodes three times a day
0 8,13,21 * * * /usr/local/netdisco/netdisco -b -w

Pooling configuration

SNMP read / write string

To be able to use SNMP protocol for device pooling at Netdisco, we will need to configure at least SNMP read community string that will be used for SNMP polling.

In the case that we would like to use interface management that is provided at Netdisco we will need to configure as well SNMP write community string of our managed devices.

          community       = public,public2,public3                            # SNMP v1 &v2, Read only SNMP strings
          community_rw    = private1,private2,private3                        # SNMP v2 , Read / Write SNMP strings
          v3_users        = netdisco                                          # SNMP v3 , Read only user
          v3_users_rw     = netdisco                                          # SNMP v3 , Read / Write user
          v3_user         = netdisco:auth,enc:SHA:disconet:AES:disconet       #
          snmpver         = 2                                                 # Prefered SNMP version

As you can see:
- SNMP community strings are using “,” as a separator
- Netdisco is not using configuration per device but during the discovery of the device it is using all available SNMP community strings
- Netdisco is SNMP v3 ready. Any way most of the admins are still using SNMP v2.
- SNMP Read string is mandatory
- SNMP Read / Write string is optional not mandatory

Load management

It is possible to specify how many parallel processes can run in same time.

               # Enable parallel mode.  Set to the number of processes you would like to run simultaneously.
               # If not running parallel mode, consider decreasing timeout values to lower walk times
               # You may need to increase the number of connections in postgresql.conf
               # See max_connections here :
               # And you may need to increase kernel shared memory space for Postgres
               # See for details
               max_procs       = 10

Infrastructure Discovery

When you are starting discovery of your infrastructure you have several options:

1.) Discovery with providing one Device IP. In this case Netdisco will try to discover all neighbors of this device and start to poll them. After this device is discovered Netdisco will try to do same discovery for all neighbors of this device. This is nice possibility of topology discovery, but it can take too long.
2.) Discovery of exact one device. This is probably the most used way of discovering of the infrastructure, as you can exact specify a device that need to be discovered.
3.) Discovery based on list of devices provided as a file. This is as well really handy in case that you are going to do integration of Netdisco with another tools.

Please try to prevent any kind of auto discovery until you are sure that you know what you are doing, as it is creating higher load on you infrastructure

Discover network starting from device

[root@Netdisco ~]# /usr/local/netdisco/netdisco -r <Device_IP>

Discover single device

[root@Netdisco ~]# /usr/local/netdisco/netdisco -d <Device_IP>

Discover List of devices

[root@Netdisco ~]# /usr/local/netdisco/netdisco -F <File_with_IP's>

Infrastructure Pooling

Pooling of ARP cache

[root@Netdisco ~]# /usr/local/netdisco/netdisco -a                         # This will pool all managed devices at Netdisco
[root@Netdisco ~]# /usr/local/netdisco/netdisco -A <DEVCE>                 # This will poll information from only one device

Pooling of CDP / LLDP

[root@Netdisco ~]# /usr/local/netdisco/netdisco -r <DEVCE>                 # This will poll all devices that are connected
                                                                           # to the polled device (based on CDP/ LLDP information)
[root@Netdisco ~]# /usr/local/netdisco/netdisco -R                         # This will pool all managed devices at Netdisco
[root@Netdisco ~]# /usr/local/netdisco/netdisco -d <DEVCE>                 # This will poll information from only one device

Pooling of MAC cache

[root@Netdisco ~]# /usr/local/netdisco/netdisco -m                         # This will pool all managed devices at Netdisco
[root@Netdisco ~]# /usr/local/netdisco/netdisco -M <DEVCE>                 # This will poll information from only one device

Pooling of NetBios

[root@Netdisco ~]# /usr/local/netdisco/netdisco -w                         # This will pool all managed devices at Netdisco
[root@Netdisco ~]# /usr/local/netdisco/netdisco -W <DEVCE>                 # This will poll information from only one device

Infrastructure Remove

Remove one device

[root@Netdisco ~]# /usr/local/netdisco/netdisco -E <device>

Remove all devices from subnet

[root@Netdisco ~]# /usr/local/netdisco/netdisco --expire-nodes-subnet <IP>/<MASK>       # Remove all devices from the subnet (example

Netdisco Help

[root@Netdisco netdisco]# /usr/local/netdisco/netdisco --help
Netdisco - Network Discovery and Management (1.3.2)

netdisco [Options] Command(s)

    -b --batchmode              Batch Mode - Redirect stdout to log files
    -C --configfile   file      Specify path to config file
    -n --nodestoo               Delete nodes when using --expiredevice
    -N --newonly                For --discoverall and --discoverfile
    -P --port         port      Restrict --expirenodes to a single port
    -V --archive                Archive instead of deleting in --expirenodes
    -D --debug                  DEBUG - Copious output
    -L --nologging              DEBUG - No logging
    -S --dumpsql                DEBUG - Dump SQL commands

Network Commands:
    -r --discoverall  device    Discover network starting from device
    -F --discoverfile file      Discover/Refresh devices from file
    -T --topofile               Import Topology info from topofile
    -R --refresh                Refresh all Devices
    -m --macwalk                Macsuck whole network
    -a --arpwalk                Arpnip whole network
    -w --nbtwalk                Nbtwalk whole network

Device Commands:
    -d --discover     device    Refresh single device
    -M --macsuck      device    Macsuck single device
    -A --arpnip       device    Arpnip  single device
    -W --nbtstat      node      Nbtstat single node
    -E --expiredevice device    Delete device
    -e --expirenodes  device    Delete/Archive nodes on a device
                      subnet    Runs --expirenodes for all devices in a subnet
    -I --expireips              Expire IPs not seen on switch ports
    -i --changeip     old new   Change IP address of device and its nodes

    -B --backup                 Backups data and runs database cleanup
    -g --graph                  Create network map files
    -j --saveconfigs  minutes   Saves configs on devices modified by jobs
    -k --cleanalias             Deletes devices listed as aliases of another
    -K --cleannodes             Clean out nodes listed on uplink ports
    -O --oui                    Import oui.txt into Netdisco
    -p (start,stop,status,restart) Admin Daemon Control
    -u [user] [pw] [port] [admin]  Add/Change User
    -v --version                Version info for Netdisco components
QR Code
QR Code wiki:infrastructure_tools:netdisco:netdisco-pooling (generated for current page)