1 什么是snmp协议
简单网络管理协议(SNMP)是一种Internet标准协议,用于收集和组织有关IP网络上受管设备的信息,以及用于修改该信息以更改设备行为的信息。 通常支持SNMP的设备包括电缆调制解调器,路由器,交换机,服务器,工作站,打印机等。
2 snmp协议的应用场景
SNMP协议广泛用于网络设备的网络监控中。 管理系统通过snmp协议获取设备的监控信息,并且当设备出问题的时候,会通过snmp协议向管理系统报警。
3 snmp协议的具体内容
3.1 snmp的组成
在snmp中一般来说由三种组件组成:
网络设备:指在网络中需要管理和监控的设备,例如提供服务的服务器、路由器等,这些设备必须支持snmp协议;
管理组件:一般来说指的是运行网络管理系统的计算机(也可以指在这个计算机上运行的监控软件),这个计算机可能与被管理的网络设备在地理上隔绝的,但是可以远程监控和管理网络设备,例如网吧的网管的电脑就可以看做一个管理组件,可以用来监控每个电脑的运行,以及管理你上网的时间并提出预警;
代理Agent:这是指运行在被管理设备上的一个软件模块,用来维护被管理设备的管理信息数据并可在需要时把管理数据发送给管理组件;
代理保有MIB(Management Information Base)对象变量,可以从管理信息库MIB收集信息并回传给管理组件;
MIB库是一个保存网络管理信息的虚拟数据存储空间,由多组被管理对象组成。在网络设备的MIB库中有由多个MIB模块定义的多组各自相关联的对象,其实说白了里面存储的是网络设备的属性,比如什么CPU信息、IO读写率等等;
3.2 snmp中组件之间的通信
3.2.1 snmp的通信协议和数据格式
首先要明确的是snmp协议是应用层协议,所以它的通信底层实现还是要靠TCP协议或者UDP协议,至于使用的是哪一种协议?就要思考一下snmp的应用场景,它是用来进行监控的,要不影响其他任务的执行,所以最好要简单一些并且效率高一些,那么这就是UDP协议了,而且还省去了握手的麻烦!
由于UDP协议是把数据打包成一个一个的数据报发送出来,那么具体的监控信息是怎样打包到其中的呢?这就涉及到组件之间通信的消息格式。管理组件与Agent代理之间以协议数据单元PDU(Protocol Data Unit,PDU)进行通讯,数据在进行网络传输前必须进行分块和封装,在SNMP信息传输的过程中,数据首先会被封装成PDU,PDU再被UDP协议封装进行传输。具体的数据格式是什么样的,参考相关文章中的第一篇。
3.2.2 snmp的通信过程
snmp是一个请求/响应式的协议,它的通信过程有三种:
请求(读get)数据:管理组件发起请求读取变量,Agent代理返回从MIB中读取的变量数据;
get请求:用以从agent上获取指定OID(可以理解为设备属性的Id)对应的一条或多条值;
get-next请求:与get类似,最明显的区别是GETNEXT获取指定OID在系统树中所处位置的下一个OID,在snmp协议中被管理对象用一个树来组织,被管理对象用OID表示;
修改(写set)数据:管理组件发起请求通过Agent代理来修改网络设备上的一些配置值;
报警获取数据(trap):Agent代理使用trap向管理组件发出请求,用来报告网络设备上的一个异常情况以便管理组件能够知晓,类似于事件的回调函数;
阅读文档:系统监控之SNMP协议理解