SNMP 代理端、代理和被管理设备的交互流程

以下是SNMP通信过程的图示和分步说明,展示管理端(Manager)代理(Agent)被管理设备之间的交互流程:


SNMP通信流程示意图

+-------------------+       +-------------------+       +-------------------+
|   SNMP Manager    |       |  SNMP Agent (运行在 |       |   被管理设备       |
|   (管理端)        |       |  路由器/交换机等)  |       |   (如路由器)       |
+-------------------+       +-------------------+       +-------------------+
         |                           |                           |
         | 1. GET Request (OID=1.3.6.1.2.1.1.1)                  |
         |-------------------------->|                           |
         |                           | 2. 从设备读取系统描述信息    |
         |                           |--------------------------->|
         |                           |                           |
         | 3. GET Response (值="Cisco Router")                    |
         |<--------------------------|                           |
         |                           |                           |
         |                           | 4. 设备CPU超阈值触发TRAP   |
         | 5. TRAP (OID=1.3.6.1.4.1.9.9.109.1.1.1.1.3)            |
         |<--------------------------|                           |
         |                           |                           |

详细步骤解析

1. 管理端发起GET请求

  • 动作:管理端(如Zabbix)向Agent的UDP端口161发送GET Request,请求特定OID的数据(例如设备系统描述)。
  • 数据包示例:plaintext复制下载GET Request: OID: 1.3.6.1.2.1.1.1.0 (sysDescr) Community: public (认证字符串)

2. Agent处理请求

  • Agent解析请求的OID,从设备的MIB中查找对应值(如从路由器内存中读取系统描述信息)。
  • 若OID无效,返回错误响应。

3. Agent返回GET Response

  • 动作:Agent通过UDP端口161返回数据。
  • 数据包示例:plaintext复制下载GET Response: OID: 1.3.6.1.2.1.1.1.0 Value: “Cisco IOS 15.4, Router XYZ”

4. 设备触发事件(如CPU过高)

  • 设备监测到异常(如CPU负载>90%),Agent主动构造TRAP消息。

5. Agent发送TRAP到管理端

  • 动作:Agent通过UDP端口162向管理端发送TRAP,无需管理端请求。
  • 数据包示例:plaintext复制下载TRAP: OID: 1.3.6.1.4.1.9.9.109.1.1.1.1.3 (ciscoCPUThreshold) Value: 95 Agent IP: 192.168.1.1

关键点说明

  1. 端口区分
    • 161端口:管理端发送GET/SET,Agent接收并响应。
    • 162端口:管理端监听TRAP/INFORM消息。
  2. 通信方向
    • 管理端 → Agent:GET/GETNEXT/SET请求(需要响应)。
    • Agent → 管理端:GET Response、TRAP(主动告警)。
  3. 无连接性
    SNMP基于UDP,无连接状态,需依赖超时和重传机制保证可靠性。

完整交互时序图

Manager                   Agent                     Device
  |                         |                         |
  |---- GET Request ------> |                         |
  |                         |---- Read MIB Data ----> |
  |                         |<---- Return Value ----- |
  |<--- GET Response -------|                         |
  |                         |                         |
  |                         |<-- Event Triggered ---- |
  |<---------- TRAP -------- |                         |
  |                         |                         |

实际工具示例

  • Wireshark抓包:可过滤SNMP协议查看GET/TRAP数据包。
  • 命令行工具:bash复制下载snmpget -v2c -c public 192.168.1.1 1.3.6.1.2.1.1.1.0用于手动发起GET请求。

通过上述流程,SNMP实现了高效的网络设备监控和管理,其中TRAP机制尤其重要,可减少管理端的轮询压力。