操作类型
Get | Get操作可以从Agent中提取一个或多个参数值 | - |
GetNext | GetNext操作可以从Agent中按照字典序提取下一个参数值。 | - |
Set | Set操作可以设置Agent的一个或多个参数值。 | - |
Response | Response操作可以返回一个或多个参数值。这个操作是由Agent发出的,它是GetRequest、GetNextRequest、SetRequest和GetBulkRequest四种操作的响应操作。Agent接收到来自NMS的Get/Set指令后,通过MIB完成相应的查询/修改操作,然后利用Response操作将信息回应给NMS。 | - |
Trap | Trap信息是Agent主动向NMS发出的信息,告知管理进程设备端出现的情况。 | - |
GetBulk | GetBulk操作实现了NMS对被管理设备的信息群查询。 | SNMPv1版本不支持GetBulk操作 |
Inform | InformRequest也是被管理设备向NMS主动发送告警。与Trap告警不同的是,被管理设备发送Inform告警后,需要NMS回复InformResponse来进行确认,Trap则不需要回复。 | SNMPv1版本不支持Inform操作 |
版本
SNMP有V1,V2,V3三个版本
V1
作为SNMP最初版本,其能完成最小限度网络管理,采用团体名进行认证,其MIB和SMI都比较简单,但其安全性欠佳,功能相对较少
改版本下仅有Get,GetNext,Set的请求报文,一个Respond报文和Trap报文这5类报文
此版本下trap报文格式与get报文格式相同
V2
版本V2在保留V1的基础上对其进行扩展,同样采用团体名进行认证,提供更多的操作类型GetBulk和Inform以及更加完善差错状态码
对于GetBulk通过对Non repeaters和Max repetitions参数的设定,可以实现Agent批量高效查询对象数据
trap报文修改格式,即
此版本对功能性进行增强和拓展但安全性依旧欠佳
V3
增强安全性,采用USM和VACM技术进行安全防护
其中USM用于认证和加密,VACM用于鉴定用户是否具有权限对MIB的数据进行修改或访问
USM(基于用户的安全模型)
USM引入了用户名和组的概念,可以设置认证和加密功能。对NMS和Agent之间传输的报文进行加密,以免被窃听。
VACM(基于视图的访问控制模型)
VACM技术定义了组、安全等级、上下文、MIB视图、访问策略五个元素,这些元素同时决定用户是否具有访问的权限,只有具有了访问权限的用户才能管理操作对象。在同一个SNMP实体上可以定义不同的组,组与MIB视图绑定,组内又可以定义多个用户。当使用某个用户名进行访问的时候,只能访问对应的MIB视图定义的对象。
上图是SNMPV3的消息格式,整个消息格式可以使用认证,后面的engineID,Name,PSU三个数据将进行加密处理
resquest-id:请求报文序列号
maxsize:最大传输单元
flags:消息标识位,1B,包含
reportableFlag:如果设置为1,那么在满足产生Report的条件时,就会返回一个Report给发送方,Request(GET、SET)或者Inform,reportableFlag设置为1,Response、Trap、Report中需要设置为0
privFlag:为1表示PDU是加密的
authFlag:为1表示PDU是认证的
security model:安全模型,0-3,0表示任意,1,2,3分别表示v1,v2,v3
security parameters:安全参数包含认证引擎ID、认证引擎启动次数、认证引擎时间、用户名、认证参数和加密参数等
context engineID:用于唯一标识SNMP实体,12B
context name:唯一识别特定内容,与上述engineID进行配合以便代理进程能够识别请求的来源和目的
工作流程
代理端发送request报文,对应的被管理端收到回复respond
Agent通过UDP端口161接收来自NMS的Request报文。
Agent接收到报文后,其基本处理过程如下:
-
解码:依据ASN.1基本编码规则,生成用内部数据结构表示的报文。如果此过程出现错误导致解码失败,则丢弃该报文,不做进一步处理。
-
比较SNMP版本号:将报文中的版本号取出,与本Agent支持的SNMP版本号比较。如果不一致,则丢弃该报文,不做进一步处理。
-
团体名验证:将报文中的团体名取出,此团体名由发出请求的网管站填写。如与Agent所在设备认可的团体名不符,则丢弃该报文,不做进一步处理,同时产生一个Trap报文。
-
提取PDU:从通过验证的ASN.1对象中提出协议数据单元PDU。如果失败,丢弃报文,不做进一步处理。
-
处理PDU:根据不同的PDU,SNMP协议实体进行不同的处理。得到管理变量在MIB树中对应的节点,从相应的模块中得到管理变量的值,形成Response报文,编码发回网管站。
-
网管站得到响应报文后,经过同样的处理,最终显示结果。
总结
特性列表 | SNMPv1 | SNMPv2c | SNMPv3 |
---|---|---|---|
访问控制 | 基于团体名进行访问控制 | 基于团体名进行访问控制 | 基于用户和用户组进行访问控制 |
认证加密 | 不支持 | 不支持 | 支持认证和加密 |
错误码 | 支持5种错误码 | 支持16个错误码 | 支持16个错误码 |
Trap告警 | 支持 | 支持 | 支持 |
Inform告警 | 不支持 | 支持 | 支持 |
GetBulk | 不支持 | 支持 | 支持 |