SNMP Versions
SNMP has three major versions in active use - v1, v2c, and v3 - and picking the right one matters for both functionality and security. They aren't fully interchangeable: a device configured for v3 won't respond to a v1 request, and vice versa, so knowing which version you're actually working with (and which one you should be using) is a genuinely practical question, not just trivia.
SNMPv1 (1988)
The original version. It works, and it's still supported nearly everywhere for compatibility, but it has real limitations:
- Authentication is a single plain-text community string - no encryption, no real access control beyond "knows the string or doesn't."
- No GETBULK operation, making large table walks slower and more request-heavy.
- 32-bit counters only, which wrap around (roll over to zero) much faster on high-speed interfaces - a real problem for accurate traffic accounting on anything above roughly 1 Gbps.
SNMPv2c (1996)
The version most commonly deployed in practice, "c" for community-based - it kept v1's simple community-string authentication but fixed several of its technical shortcomings:
- Added GETBULK, letting a manager request many rows of a table in a single exchange instead of one GETNEXT per row.
- Added 64-bit counters (
Counter64), which wrap far less often on modern high-speed links. - Better, more specific error codes than v1's fairly generic error reporting.
What it did not fix: authentication is still just a plain-text community string sent with every request, visible to anything that can see the traffic. It's more capable than v1, but no more secure.
SNMPv3 (1998, still actively maintained)
The first version with real security, built around something called USM (User-based Security Model):
- Authentication - individual users (not a shared community string), each verified cryptographically (typically SHA), so requests can't be trivially spoofed.
- Privacy - optional encryption of the actual SNMP payload (typically AES), so traffic isn't readable in transit.
- View-based access control - a given user can be restricted to specific subtrees of the OID tree, rather than all-or-nothing access.
SNMPv3 has three security levels, commonly abbreviated: noAuthNoPriv (username only, no crypto - not meaningfully better than v2c), authNoPriv (authenticated, but payload still sent in the clear), and authPriv (authenticated and encrypted - the level actually worth using).
Which one should you actually use?
For anything beyond an isolated lab, SNMPv3 with authPriv is the right default today - it's the only version with real protection against eavesdropping and spoofing. v2c is still extremely common in practice (it's simpler to configure and plenty of internal, trusted-network monitoring setups accept the tradeoff deliberately), but it should generally be treated as suitable only for networks you'd also trust with unencrypted traffic in general. v1 at this point is mostly a compatibility fallback for old hardware that genuinely doesn't support anything newer.
Getting the version wrong when connecting is one of the most common sources of a failed request - see SNMP version mismatch for what that specifically looks like and how to tell it apart from other connection failures.