合作机构:阿里云 / 腾讯云 / 亚马逊云 / DreamHost / NameSilo / INWX / GODADDY / 百度统计
一、SNMP的概念与作用
1.SNMP概述
SNMP(Simple Network Management Protocol)简单网络管理协议是基于TCP/IP五层协议中的应用层协议。SNMP 使网络管理员能够管理网络效能,发现并解决网络问题以及规划网络增长。由于其简单可靠,提供了一种监控和管理网络设备的系统方法,因此受到了众多厂商的欢迎,成为了目前最为广泛的网管协议。
SNMP是管理进程(NMS)和代理进程(Agent)之间的通信协议。它规定了在网络环境中对设备进行监视和管理的标准化管理框架、通信的公共语言、相应的安全和访问控制机制。通过网络,管理员可以管理位于不同物理空间的设备,从而大大提高网络管理的效率,简化网络管理员的工作。
2.SNMP的组成
SNMP模型包括NMS、Agent、Management object和MIB。
1)NMS(Network-management systems网络管理系统):在网络中扮演管理者角色,是一个采用SNMP协议对网络设备进行管理/监视的系统,运行在NMS服务器上。
2)Agent(代理进程):是被管理设备中的一个代理进程,用于维护被管理设备的信息数据,并响应来自NMS的请求,把管理数据汇报给发送请求的NMS。
3)Management object(被管理对象):每一个设备可能包含多个被管理对象,被管理对象可以是设备中的某个硬件(如一块接口板)、软件(如路由选择协议)及其配置参数的集合。
4)MIB(管理信息库):任何一个被管理的资源都表示成一个对象,称为被管理对象,MIB是被管理对象的集合。MIB在数据库中定义了被管理设备的一系列属性:对象的名称、对象的状态、对象的访问权限和对象的数据类型等。MIB也可以看作是NMS(网管系统)和Agent之间的沟通桥梁。
二、SNMP的版本
SNMP目前共有v1、v2、v3三个版本。
SNMP v1:SNMP协议的最初版本,存在较多安全缺陷,现在这个版本使用的比较少了。
SNMP v2:在兼容SNMPv1的同时又扩充了SNMPv1的功能,具体扩展了数据类型、支持分布式网络管理、可以实现大量数据的传输,提高了效率和性能,丰富了故障处理能力及增加了集合处理功能。
SNMP v3:是最新版本的SNMP。它相对于V2版本,在安全性上得到了重要提升,增加了对认证和密文传输的支持。
三、报文格式
SNMP封装在UDP中,一个SNMP报文由三个主要部分组成:协议版本(version)、SNMP共同体(community)标识符、数据区。
Version:SNMP 版本号。管理器和代理器必须使用相同版本的 SNMP。
Community:团体名称,用于在访问代理器之前认证管理器。
数据区:分成若干个协议数据单元PDU(Protocol Data Unit),每个PDU包括一个请求(由管理系统发送)或一个响应(由管理代理发送)。
四、操作类型
SNMP v1 版本规定了5种操作类型,用来在管理进程和代理之间信息的交换。
get-request 操作:由管理进程发出,从代理进程处提取一个OID(对象标识符)值。
get-next-request 操作:由管理进程发出,从代理进程(MIB中)处提取紧跟当前参数值的下一个OID值,进行遍历。
set-request 操作:由管理进程发出,设置代理进程的一个或多个参数值。
get-response 操作:由代理进程发出,返回的一个或多个参数值。
trap 操作:由代理进程主动发出,告知管理进程设备端出现的情况。
其中代理进程端是用 161 端口接收 get 或 set 报文,而在管理进程端是用 162 端口来接收 trap 报文。
在SNMP v2版本又增加了2种操作类型。
inform-request 操作:由代理进程发出,需要NMS回复InformResponse来进行确认
getBulk-request 操作:由管理进程发出,实现了NMS对被管理设备的信息群查询。该操作基于GetNext实现,相当于连续执行多次GetNext操作。在NMS上可以设置被管理设备在一次GetBulk报文交互时,执行GetNext操作的次数。
SNMPv3涉及的部分操作。
1)NMS向Agent发送不带安全参数的Get请求报文。
2)Agent响应NMS的请求,并向NMS反馈请求的参数。
3)NMS再次向Agent发送带安全参数的Get请求报文。
4)Agent对响应消息进行加密,并向NMS反馈请求的参数。
TOP