一、核心定位 & 底层本质
SNMP:简单网络管理协议,应用层协议,依托 TCP/IP 栈,专为「网管统一监控 + 轻量配置」设计。核心优势:极简、低资源、跨厂商通用,路由器 / 交换机 / 防火墙 / IPC/UPS/ 服务器 / 嵌入式网关全兼容。底层传输:默认UDP(无连接、开销小、嵌入式设备友好),极少场景用 TCP。
二、三大核心组件(必懂,所有 SNMP 都绕不开)
1. NMS 网络管理站(管理者)
- 角色:主动方,下发查询、改配置、收告警、存数据、绘图告警
- 常见软件:Zabbix、Nagios、Cacti、SolarWinds、华为 eSight、锐捷网管
- 端口:向设备 UDP 161 发请求
2. Agent 代理(被管设备端)
- 角色:被动常驻进程,跑在交换机 / 网关 / 工控机 / 嵌入式 MCU 里
- 功能:
- 监听 161 端口,响应 NMS 的 Get/Set
- 本地采集 CPU、内存、温度、端口、电压、运行状态
- 异常主动发 Trap/Inform 到 NMS 162 端口
- 嵌入式场景:轻量 Agent,裁剪 MIB,只留业务需要的 OID,省 RAM/Flash
3. MIB + OID(数据字典,重中之重)
MIB(管理信息库)
- 树形层级数据库,标准化定义:设备有哪些参数、参数类型、读写权限、单位
- 分类:
- 公有 MIB:IETF 标准(全网通用,如系统信息、网口流量)
- 私有 MIB:厂商自定义(华为 / 华三 / 自研设备私有参数)
OID(对象标识符)
- MIB 树的唯一数字路径,类似文件绝对路径
- 标准根路径:
1.3.6.1.2.1(通用基础 MIB) - 举例:
1.3.6.1.2.1.1.1.0:设备系统描述1.3.6.1.2.1.2.2:网口列表
- 后缀
.0:标量对象(单值);无后缀多为表项(多端口、多传感器)
通俗理解:NMS = 管理员,Agent = 现场探头,MIB = 花名册,OID = 每个人的工位编号
三、SNMP 3 个版本深度对比(选型必看)
表格
| 维度 | SNMPv1 | SNMPv2c | SNMPv3 |
|---|---|---|---|
| 安全机制 | 明文团体字(public/private) | 同 v1,明文无加密 | 账号 + 鉴权 + 加密 |
| 数据读取 | Get/GetNext | 新增 GetBulk 批量读取 | 全兼容 |
| 告警能力 | Trap(无回执,易丢包) | Trap+Inform(带确认,可靠) | Trap/Inform 全支持 + 加密告警 |
| 传输安全 | 裸奔,内网玩玩 | 内网通用,禁止公网 | 生产 / 公网 / 涉密必用 |
| 嵌入式适配 | 极简,资源极低 | 主流兼容,开销小 | 开销略大,高端设备支持 |
补充关键知识点
- 团体字 Community:v1/v2c 的 “密码”
public:只读(只能查数据)private:读写(可改配置,高危)
- SNMPv3 安全等级:
- noAuthNoPriv:不鉴权不加密
- authNoPriv:认证不加密
- authPriv:认证 + 加密(AES/SHA),企业标准
四、五大核心操作 PDU(报文交互逻辑)
- GetRequest:读单个 OID 数值(查设备名称、温度)
- GetNextRequest:遍历 MIB 树,挨个往下读(扫所有网口)
- GetBulkRequest(v2c+):一次性批量拉大量数据,减少报文交互,提速降开销
- SetRequest:修改设备参数(关端口、改设备名、调阈值,高危操作)
- Trap / Inform:
- Trap:设备主动上报故障(断电、端口 down、高温),UDP 单发,不保证送达
- Inform:带应答回执,NMS 收到会回包,解决丢包问题,工业场景优先
端口固化记忆
- 查询配置:UDP 161
- 告警上报:UDP 162
五、两种工作模式(实际监控全靠这俩)
模式 1:轮询 Polling(主动拉数据)
- NMS 定时(30s/1min/5min)主动连设备读 OID
- 优点:数据稳定、不漏采、历史曲线完整
- 缺点:高频轮询占带宽,嵌入式低功耗设备要控频率
模式 2:主动告警 Trap/Inform(异常推数据)
- 设备正常不发报文,出问题立刻推告警
- 优点:实时性极强,平时几乎无功耗 / 流量
- 搭配方案:常态轮询保心跳,异常 Trap 保实时
六、报文结构 & 数据封装(技术底层)
SNMP 报文分层:应用层 SNMP → UDP → IP → 以太网帧报文关键字段:
- 版本号、团体字 / 用户信息、PDU 类型、OID 列表、值(整数 / 字符串 / 计数器)重点:
- 流量 / 包量用计数器 Counter(会循环溢出,网管自动做差值计算)
- 状态用整型枚举(1=up,2=down)
七、嵌入式 / 物联网场景落地要点(贴合你网关开发)
- 低功耗设备:
- 裁剪 SNMP Agent,只保留必要 OID,精简 MIB
- 关闭高频轮询,拉长采样周期,优先用 Trap 告警
- 自研网关:
- 兼容 SNMPv2c 做内网监控,对外对接必须开 SNMPv3 加密
- 自定义私有 OID,上报自定义传感器数据(温湿度、电压、继电器状态)
- 避坑:
- 严禁公网开放 v1/v2c,明文团体字极易被嗅探篡改
- Counter 溢出不处理,流量监控会出现负数
- TrapUDP 丢包,关键告警务必用 Inform
八、常用刚需 OID 速记(调试直接用)
- 系统基础:1.3.6.1.2.1.1
- 网口状态 / 流量:1.3.6.1.2.1.2
- CPU 利用率:通用私有 OID 居多,标准 MIB 需扩展
- 设备告警 Trap:1.3.6.1.6.3.1.1.5
九、一句话总结
SNMP 是网络 & 嵌入式设备的通用监控语言:v2c 做内网快速落地,v3 做安全合规;常态轮询看趋势,异常 Trap 保实时;MIB 定数据规则,OID 定精准点位,极简轻量适配所有网关、工控、低功耗设备。