SNMP
SNMP protocol support, queried MIBs, timeouts, and credential resolution.
Technical reference for Scanopy's SNMP implementation. For setup instructions, see the SNMP discovery guide. For how SNMP fits into the discovery flow, see Discovery — SNMP. For how credential assignment and resolution works, see Credentials.
Protocol support
| Property | Value |
|---|---|
| SNMPv1 | Supported (community string) |
| SNMPv2c | Supported (community string) |
| SNMPv3 | Supported — AuthPriv only (SHA-1/SHA-256 auth, AES-128/AES-256 privacy) |
| Transport | UDP |
| Port | 161, 1161 (fallback) |
Queried MIBs
| MIB | RFC | OID prefix | Collected fields |
|---|---|---|---|
| System MIB | RFC 3418 | 1.3.6.1.2.1.1 | sysDescr, sysObjectID, sysUpTime, sysContact, sysName, sysLocation |
| IF-MIB | RFC 2863 | 1.3.6.1.2.1.2, 1.3.6.1.2.1.31.1.1 | ifDescr, ifType, ifSpeed, ifPhysAddress, ifAdminStatus, ifOperStatus, ifName, ifAlias, ifHighSpeed, ifMtu |
| IP-MIB | RFC 4293 | 1.3.6.1.2.1.4 | ipAdEntAddr, ipAdEntIfIndex, ipAdEntNetMask, ipNetToMediaPhysAddress, ipNetToMediaNetAddress |
| LLDP-MIB | IEEE 802.1AB | 1.0.8802.1.1.2 | lldpRemSysName, lldpRemPortId, lldpRemChassisId, lldpRemSysDesc |
| CDP-MIB | Cisco proprietary | 1.3.6.1.4.1.9.9.23 | cdpCacheDeviceId, cdpCachePlatform, cdpCacheDevicePort, cdpCacheAddress |
| ENTITY-MIB | RFC 6933 | 1.3.6.1.2.1.47 | entPhysicalMfgName, entPhysicalModelName, entPhysicalSerialNum |
| BRIDGE-MIB / Q-BRIDGE-MIB | RFC 4188, RFC 4363 | 1.3.6.1.2.1.17 | dot1dTpFdbAddress (MAC learning), dot1qVlanStaticName (VLAN names), dot1qPvid (per-port native VLAN), dot1qVlanCurrentEgressPorts, dot1qVlanCurrentUntaggedPorts (VLAN membership) |
Data collected
A successful SNMP run against a host populates the following entities in Scanopy:
| Entity | Fields populated from SNMP |
|---|---|
| Host | hostname (from sysName when DNS lacks one), sysDescr, sysObjectID, sysLocation, sysContact, sysName, manufacturer, model, serial number, chassis ID |
| Interface | ifIndex, name / alias / description, type, speed, MTU, MAC, admin and oper status, native VLAN, tagged VLAN list, learned MACs, LLDP/CDP neighbor |
| Subnet | CIDRs inferred from ipAddrTable entries |
| Host (remote) | New hosts created from ARP entries on SNMP-discovered subnets |
Timeouts and limits
| Parameter | Default | Description |
|---|---|---|
| Probe timeout | 2s | Liveness probe per credential, used to pick a working credential before collection |
| Request timeout | 5s | Timeout for a single SNMP request |
| Session timeout | 5s | Timeout for establishing the UDP session |
| Query timeout | 30s | Ceiling on any single query, including a full walk of a MIB table |
| Max entries | 10,000 | Maximum rows returned from a single table walk |
| Integration timeout | 5m | Wall-clock budget for a full SNMP integration run against a single host (probe + all queries) |
Candidate credentials are probed concurrently, so a host with several assigned credentials doesn't pay for each one in sequence.
Every query is individually bounded, so a device that stops responding mid-collection costs 30 seconds rather than the whole 5-minute integration budget.
Credential resolution order
When querying a host, the daemon resolves the SNMP credential (community string for v1/v2c, or USM parameters for v3) in this order:
- Host-specific override — credential assigned directly to the host
- Network default — credential assigned to the host's network
- Fallback — community string
public(v2c)
If all credentials fail on both UDP 161 and 1161, the host is discovered without SNMP-sourced data. Individual query failures within a successful session are logged and skipped — they do not abort the rest of the collection.
Partial results are kept. Interfaces are saved as soon as the interface table is read, before the neighbor, forwarding-table, and VLAN queries run, so a device that hangs partway through still yields its interface list rather than nothing.