随着网络技术的飞速发展,在网络不断普及的同时也给网络管理带来了一些问题:
在这种背景下,SNMP应运而生。通过“利用网络管理网络”的方式,SNMP实现了对网络设备的高效和批量的管理;同时,SNMP协议也屏蔽了不同产品之间的差异,实现了不同种类和厂商的网络设备之间的统一管理。
SNMP(Simple Network Management Protocol) 简单网络管理协议,从字面意思可以看出它是用于网络管理的协议。不同种类不同型号的设备(如交换机、路由器、服务器、打印机等)只要遵循这个SNMP协议,那么管理员就可以通过一些网络管理系统NMS(Network Management System)来对设备进行管控了。默认SNMP是通过UDP161和162端口进行通信的。目前SNMP共有v1、v2、v3三个版本,其中SNMPv1,v2采用的是明文进行传送的,SNMPv3是通过加密进行传送的。如果对安全要求比较高就选用SNMPv3版本。
SNMP系统是由网络管理系统NMS、SNMP Agent、被管对象Management object和管理信息库MIB(Management Information Base)四部分组成。NMS作为整个网络的网管中心,对设备进行管理。每个被管理设备中都包含驻留在设备上的SNMP Agent进程、MIB和多个被管对象。NMS通过与运行在被管理设备上的SNMP Agent交互,由SNMP Agent通过对设备端的MIB进行操作,完成NMS的指令。
MIB是以树状结构进行存储的。树的节点表示被管理对象,它可以用从根开始的一条路径唯一地识别,这条路径就称为OID对象标识符(Obiect Identifier),如system的OID为1.3.6.1.2.1.1,interfaces的OID为1.3.6.1.2.1.2。
管理员需要向设备获取数据,所以 SNMP 提供了“读”操作;管理员需要向设备执行设置操作,所以 SNMP 提供了“写”操作;设备需要在重要状况改变的时候,向管理员通报事件的发生,所以 SNMP 提供了“Trap”操作。SNMP协议主要提供了三种用于控制MIB对象的基本操作命令。它们是:Get、Set 和 Trap。
1.Get:网络管理系统NMS主动向SNMP Agent发送查询请求。NMS读取Agent处对象的值如内存使用率,接口流量等。SNMP Agent接收到查询请求后,通过MIB表完成相应指令,并将结果反馈给NMS。
2.Set:NMS主动向SNMP Agent发送对设备进行Set设置操作的请求管理端。可以通过它来改动设备的配置或控制设备的运行状态。比如可以设置设备的名称,关掉一个端口等。SNMP Agent接收到Set请求后,通过MIB表完成相应指令,并将结果反馈给NMS。
3.Trap:SNMP Agent主动将设备产生的告警或事件上报给NMS,以便网络管理员及时了解设备当前运行的状态。如果发生意外情况,Agent会向NMS的UDP162端口发送一个消息,告知NMS指定的变量值发生了变化。Trap 消息可以用来通知NMS如线路的故障、硬件故障、认证失败等消息。这样管理员可相应的作出处理。
SNMP报文主要由版本、团体名、SNMP PDU组成。