简介
简略网络管理协定SNMP(Simple Network Management Protocol)用于网络设备的治理。网络设备品种多种多样,不同设施厂商提供的治理接口(如命令行接口)各不相同,这使得网络管理变得愈发简单。为解决这一问题,SNMP应运而生。SNMP作为广泛应用于TCP/IP网络的网络管理标准协议,提供了对立的接口,从而实现了不同品种和厂商的网络设备之间的对立治理。
SNMP协定分为三个版本:SNMPv1、SNMPv2c和SNMPv3。
- SNMPv1是SNMP协定的最后版本,提供最小限度的网络管理性能。SNMPv1基于个人名认证,安全性较差,且返回报文的错误码也较少。
- SNMPv2c也采纳个人名认证。在SNMPv1版本的根底上引入了GetBulk和Inform操作,反对更多的规范错误码信息,反对更多的数据类型(Counter64、Counter32)。
- SNMPv3次要在安全性方面进行了加强,提供了基于USM(User Security Module)的认证加密和基于VACM(View-based Access Control Model)的访问控制。SNMPv3版本反对的操作和SNMPv2c版本反对的操作一样。
SNMP零碎组成
SNMP零碎由网络管理系统NMS(Network Management System)、SNMP Agent、被管对象Management object和治理信息库MIB(Management Information Base)四局部组成。NMS作为整个网络的网管核心,对设施进行治理。
每个被治理设施中都蕴含驻留在设施上的SNMP Agent过程、MIB和多个被管对象。NMS通过与运行在被治理设施上的SNMP Agent交互,由SNMP Agent通过对设施端的MIB进行操作,实现NMS的指令。
NMS
NMS是网络中的管理者,是一个采纳SNMP协定对网络设备进行治理/监督的零碎,运行在NMS服务器上。
- NMS能够向设施上的SNMP Agent发出请求,查问或批改一个或多个具体的参数值。
- NMS能够接管设施上的SNMP Agent被动发送的SNMP Traps,以获知被治理设施以后的状态。
SNMP Agent
SNMP Agent是被治理设施中的一个代理过程,用于保护被治理设施的信息数据并响应来自NMS的申请,把治理数据汇报给发送申请的NMS。
- SNMP Agent接管到NMS的申请信息后,通过MIB表实现相应指令后,并把操作后果响应给NMS。
- 当设施产生故障或者其它事件时,设施会通过SNMP Agent被动发送SNMP Traps给NMS,向NMS报告设施以后的状态变动。
Managed Object
Managed object指被治理对象。每一个设施可能蕴含多个被治理对象,被治理对象能够是设施中的某个硬件,也能够是在硬件、软件(如路由抉择协定)上配置的参数汇合。
MIB
MIB是一个数据库,指明了被治理设施所保护的变量。MIB在数据库中定义了被治理设施的一系列属性:对象的名称、对象的状态、对象的拜访权限和对象的数据类型等。MIB也能够看作是NMS和SNMP Agent之间的一个接口,通过这个接口,NMS对被治理设施所保护的变量进行查问/设置操作。
MIB是以树状构造进行存储的,如图1-2所示。树的节点示意被治理对象,它能够用从根开始的一条门路惟一地辨认,这条门路就称为OID,如system的OID为1.3.6.1.2.1.1,interfaces的OID为1.3.6.1.2.1.2。
子树能够用该子树根节点的OID来标识。如以private为根节点的子树的OID为private的OID——{1.3.6.1.4}。
用户能够配置MIB视图来限度NMS可能拜访的MIB对象。MIB视图是MIB的子集合,用户能够将MIB视图内的对象配置为exclude或include。exclude示意以后视图不蕴含该MIB子树的所有节点;include示意以后视图蕴含该MIB子树的所有节点。
SNMP查问
SNMP查问是指NMS被动向SNMP Agent发送查问申请,如图1-3所示。SNMP Agent接管到查问申请后,通过MIB表实现相应指令,并将后果反馈给NMS。
SNMP查问操作有三种:Get、GetNext和GetBulk。SNMPv1版本不反对GetBulk操作。
- Get操作:NMS应用该操作从SNMP Agent中获取一个或多个参数值。
- GetNext操作:NMS应用该操作从SNMP Agent中获取一个或多个参数的下一个参数值。
- GetBulk操作:基于GetNext实现,相当于间断执行屡次GetNext操作。在NMS上能够设置被治理设施在一次GetBulk报文交互时,执行GetNext操作的次数。
SNMP查问操作的报文
SNMPv1和SNMPv2c查问报文格式如图1-4所示。SNMPv1和SNMPv2c的报文次要由版本、个人名、SNMP PDU组成。各类SNMP操作的报文封装在SNMP PDU中。
报文中的次要字段如下:
- 版本:示意SNMP的版本,如果是SNMPv1报文则对应字段值为0,SNMPv2c则为1。
- 个人名:用于在SNMP Agent与NMS之间实现认证,字符串模式,用户可自行定义。个人名包含“read”和“write”两种,执行SNMP查问操作时,采纳“read”个人名进行认证;执行SNMP设置操作时,则采纳“write”个人名进行认证。
- Request ID:用于匹配申请和响应,SNMP给每个申请调配全局惟一的ID。
- Non repeaters/Max repetitions:GetBulk操作基于GetNext操作实现,相当于屡次执行GetNext操作,这两个参数用于设置执行GetNext操作次数。
- Error status:用于示意在解决申请时呈现的情况。
- Error index:过错索引。当出现异常状况时,提供变量绑定列表(Variable bindings)中导致异样的变量的信息。
- Variable bindings:变量绑定列表,由变量名和变量值对组成。
通过捕捉报文工具获取设施发送的SNMPv2c版本Get申请报文如图1-5所示,SNMPv2c版本GetNext申请报文如图1-6所示。SNMPv2c版本GetBulk申请报文如图1-7所示。
SNMPv3查问报文格式如图1-8所示,SNMPv3报文次要由版本、MsgID、MaxSize、Flags、Security Model、Security Parameters、Context EngineID、Context Name和SNMP PDU组成。SNMPv3报文的SNMP PDU的格局与SNMPv2c的统一。SNMPv3版本的报文能够应用鉴权机制,会对Context EngineID、Context Name和SNMP PDU进行加密。
报文中的次要字段定义如下:
- 版本:示意SNMP的版本,如果是SNMPv3报文则对应字段值为3。
- MsgID:申请报文的序列号。
- MaxSize:音讯发送者所可能包容的音讯最大字节,同时也表明了发送者可能接管到的最大字节数。
- Flags:音讯标识位,占一个字节,有三个特色位:reportableFlag,privFlag和authFlag。
- reportableFlag=1,在可能导致Report PDU生成的状况下,SNMPv3报文接管方必须向发送方发送Report PDU;reportableFlag=0,SNMPv3报文接管方不发送Report PDU。只有在SNMP PDU局部不能被解密时(比方因为密钥谬误导致解密失败等)才会用到Report。
- privFlag=1,对SNMPv3报文进行加密;privFlag=0,不对SNMPv3报文进行加密。
- authFlag=1,对SNMPv3报文进行鉴权;authFlag=0,不对SNMPv3报文进行鉴权。
除了privFlag=1,authFlag=0的状况外,其余任意组合都能够,所以在配置SNMPv3的安全级别的时候须要留神:如果用户组是privacy级别,用户和告警主机就必须是privacy级别;用户组是authentication级别,用户和告警主机能够是privacy或者authentication级别。
- SecurityModel:音讯采纳的平安模型,发送方和接管方必须采纳雷同的平安模型。
- SecurityParameters:平安参数,蕴含SNMP实体引擎的相干信息、用户名、鉴权参数、加密参数等平安信息。
- Context EngineID:SNMP惟一标识符,和PDU类型一起决定应该发往哪个应用程序。
- Context Name:用于确定Context EngineID对被治理设施的MIB视图。
SNMPv3提供了鉴权机制,举荐用户应用SNMPv3版本。通过捕捉报文工具获取设施发送的SNMPv3版本加密的Get申请报文如图1-9所示,SNMPv3版本不加密的Get申请报文如图1-10所示。
SNMP查问操作的工作原理
不同版本的SNMP查问操作的工作原理基本一致,惟一的区别是SNMPv3版本减少了身份验证和加密解决。上面以SNMPv2c版本的Get操作为例介绍SNMP查问操作的工作原理。
假设NMS想要获取被治理设施MIB节点sysContact的值,应用可读个人名为public,过程如下所示:
- NMS:向SNMP Agent发送Get申请报文。报文中各字段的设置如下:版本号为所应用的SNMP版本;个人名为public;PDU中PDU类型为Get类型,绑定变量填入MIB节点名sysContact。
- SNMP Agent:首先对报文中携带版本号和个人名进行认证,认证胜利后,SNMP Agent依据申请查问MIB中的sysContact节点,失去sysContact的值并将其封装到Response报文中的PDU,向NMS发送响应;如果查问不胜利,SNMP Agent会向NMS发送出错响应。
SNMP设置
SNMP设置是指NMS被动向SNMP Agent发送对设施进行Set操作的申请,如图1-11所示。SNMP Agent接管到Set申请后,通过MIB表实现相应指令,并将后果反馈给NMS。
SNMP设置操作只有一种Set,NMS应用该操作可设置SNMP Agent中的一个或多个参数值。
SNMP Set操作的报文
SNMPv1和SNMPv2c的Set操作报文格式如图1-12所示。个别状况下,SNMPv3的Set操作信息是通过加密封装在SNMP PDU中,其格局与SNMPv2c的Set操作报文格式统一。
报文中次要字段的含意如下:
- Request ID:用于匹配申请和响应,SNMP给每个申请调配全局惟一的ID。
- Error status:用于示意在解决申请时呈现的情况。
- Error index:过错索引。当出现异常状况时,提供变量绑定列表(Variable bindings)中导致异样的变量的信息。
- Variable bindings:变量绑定列表,由变量名和变量值对组成。
通过捕捉报文工具获取设施发送的SNMPv2c版本Set申请报文如图1-13所示。
SNMP Set操作的工作原理
不同版本的SNMP Set操作的工作原理基本一致,惟一的区别是SNMPv3版本减少了身份验证和加密解决。上面以SNMPv3版本的Set操作为例介绍SNMP Set操作的工作原理。
假设NMS想要设置被治理设施MIB节点sysName的值为HUAWEI,过程如下所示:
- NMS:向Agent发送不带平安参数的Set申请报文,向SNMP Agent获取Context EngineID、Context Name和平安参数(SNMP实体引擎的相干信息)。
- SNMP Agent:响应NMS的申请,并向NMS反馈申请的参数。
- NMS:再次向SNMP Agent发送Set申请,报文中各字段的设置如下:
- 版本:SNMPv3
- 报文头数据:指明采纳鉴权、加密形式。
- 平安参数:NMS通过配置的算法计算出鉴权参数和加密参数。将这些参数和获取的平安参数填入相应字段。
- PDU:将获取的Context EngineID和Context Name填入相应字段,PDU类型设置为Set,绑定变量填入MIB节点名sysName和须要设置的值HUAWEI,并应用已配置的加密算法对PDU进行加密。
- SNMP Agent:首先对报文中携带版本号和个人名进行认证,认证胜利后,SNMP Agent依据申请设置治理变量在治理信息库MIB中对应的节点,设置胜利后向NMS发送响应;如果设置不胜利,Agent会向NMS发送出错响应。
SNMP Traps
SNMP Traps是指SNMP Agent被动将设施产生的告警或事件上报给NMS,以便网络管理员及时理解设施以后运行的状态。
SNMP Agent上报SNMP Traps有两种形式:Trap和Inform。SNMPv1版本不反对Inform。Trap和Inform的区别在于,SNMP Agent通过Inform向NMS发送告警或事件后,NMS须要回复InformResponse进行确认,如图1-14所示。
SNMP Traps报文格式
SNMPv1的Trap操作报文格式如图1-15所示,Trap PDU由PDU type、enterprise、Agent addr、Generic trap、Specific trap、Time stamp和Variable bindings组成。
报文中的次要字段定义如下:
- enterprise:Trap源(生成Trap的设施)的类型。
- Agent addr:Trap源的地址。
- Generic trap:通用Trap类型,包含coldStart、warmStart、linkDown、linkUp、authenticationFailure、egpNeighborLoss、enterpriseSpecific。
- Specific trap:企业公有Trap信息。
- Time stamp:上次从新初始化网络实体和产生Trap之间所继续的工夫。
- Variable bindings:变量绑定列表,由变量名和变量值对组成。
通过捕捉报文工具获取设施发送的SNMPv1版本Trap报文如图1-16所示。
SNMPv2c的Trap操作的报文格式和Inform操作的报文格式如图1-17所示。个别状况下,SNMPv3的Trap操作或inform操作是通过加密封装在SNMP PDU中,其格局与SNMPv2c的Trap操作或inform操作的报文格式统一。
报文中的次要字段定义如下:
- Request ID:用于匹配申请和响应,SNMP给每个申请调配全局惟一的ID。
- Variable bindings:变量绑定列表,由变量名和变量值对组成。
通过捕捉报文工具获取设施发送的SNMPv2版本Trap报文如图1-18所示,SNMPv2版本Inform报文如图1-19所示。
SNMP Traps工作原理
Trap操作工作原理
Trap不属于NMS对被治理设施的基本操作,它是被治理设施的自发行为。当被治理设施达到告警的触发条件时,会通过SNMP Agent向NMS发送Trap音讯,告知设施侧呈现的异常情况,便于网络管理人员及时处理。例如被治理设施热启动后,SNMP Agent会向NMS发送warmStart的Trap。
这种Trap信息是受限制的。只有在设施端的模块达到模块预约义的告警触发条件时,SNMP Agent才会向治理过程报告。这种办法的益处是仅在重大事件产生时才发送Trap信息,缩小报文交互产生的流量。
Inform操作工作原理
Inform操作也是被治理设施向NMS被动发送告警。与Trap告警不同的是,被治理设施发送Inform告警后,须要NMS进行接管确认。如果被治理设施没有收到确认信息则:
- 将告警或事件临时保留在Inform缓存中。
- 反复发送该告警或事件,直到NMS确认收到该告警或者发送次数达到最大重传次数。
- 被管设施上会生成相应的告警或事件日志。
由此可知,应用Inform操作会占用较多的系统资源。
SNMP端口号
SNMP报文是一般的UDP报文,协定中规定有两个默认端口号:
- 端口号161:NMS发送Get、GetNext、GetBulk和Set操作申请以及SNMP Agent响应这些申请操作时,应用该端口号。
该端口号反对用户配置,然而须要保障NMS发送申请报文应用的端口号与SNMP Agent响应申请报文应用的端口号要统一。
- 端口号162:SNMP Agent向NMS发送Trap或Inform时,应用该端口号。
该端口号反对用户配置,然而须要保障SNMP Agent发送Trap或Inform的端口号与NMS监听Trap或Inform的端口号要统一。
关注公众号:网络技术平台,回复 “ 材料 ” 获取视频、培训教程、试验手册、电子书。