本文档主要针对国民技术MCU N32G45x系列产品在搭载FreeRTOS + LwIP的场景下的以太网实例:SNMP的应用
Get-response 操作:SNMP agent 返回一个或多个参数值,是 SNMP agent 对 SNMP 管理的操作命令的响应;
Trap 操作:SNMP agent 主动发出的报文,目的是通知 SNMP 管理设备自身所发生的一些事件,执行该操作后,设备不会收到来自 SNMP 管理的回复报文;
Inform-request 操作:与 Tarp 操作类似,不同的是,SNMP agent 主动发出该报文后,如果连接畅通,将会收到来自 SNMP 管理的回复报文。
在 SNMP 三个版本中,v1 版本只包含 Get-request 操作、Get-nest-request 操作、Set-request 操作、Getresponse 操作和 Trap 操作。V2 和 v3 版本都包含以上所有操作,并且 v3 在 v2 的基础上增加了安全性方面的功能。
版本:表示 SNMP 的版本,版本字段的值是报文版本号减 1,如果是 SNMPv1 报文则对应字段值为 0。
团体名:用于在 agent 与 NMS 之间完成认证,字符串形式,常用的是 “public”和“private”。团体名包括“可读”和“可写”两种,执行 Get、Get-next 操作时,采用“可读团体名”进行认证;执行 Set 操作时,则采用“可写团体名”认证。
SNMPv1 PDU:包含 PDU 类型、请求标识符、变量绑定列表等信息。
其中,PDU 的格式如下:
PDU Type:协议数据单元的类型。支持 Get-request PDU、Get-next-request PDU、Set-request PDU、response PDU 或 Trap PDU 五种类型。
Request ID:请求标示字段,唯一的标示一个请求报文。
Error Status:错误状态标示字段。SNMPv1 中错误码包括:1、noSuchName:指定了一个代理不知道的对象;2、tooBig:代理不能一次把请求的结果放入到一个 PDU 中;3、badValue:进行 set 操作时候把变量修改为一个无效的值;4、genErr:除以上错误外的其他错误。
Error Index:错误索引字段。
Variable Bindings:变量绑定字段。
版本:表示 SNMP 的版本,版本字段的值是报文版本号减 1,如果是 SNMPv2 报文则对应字段值为 1。
团体名:用于在 agent 与 NMS 之间完成认证,字符串形式,常用的是 “public”和“private”。团体名包括“可读”和“可写”两种,执行 Get、Get-next 操作时,采用“可读团体名”进行认证;执行 Set 操作时,则采用“可写团体名”认证。
SNMPv2c PDU:包含 PDU 类型、请求标识符、变量绑定列表等信息。
其中,PDU 格式如下:
PDU Type:协议数据单元的类型。支持 Get-request PDU、Get-next-request PDU、Set-request PDU、
response PDU、Trap PDU、Get-bulk PDU 或 Inform PDU 七种类型。
Request ID:请求标示字段,唯一的标示一个请求报文。
Error Status:错误状态标示字段。SNMPv2c 中错误码包括:1、wrongValue:进行 set 操作时候把变量修改为一个无效的值;2、wrongEncoding:进行编码字段的值,与其他的字段不一致;3、wrongType:进行 set操作时候把变量修改为一个无效的类型;4、wrongLength:进行 set 操作时候把一个变量值设置成与它长度不一致的值;5、inconsistentValue:把一个变量设置为其他的情况下有效的值,当前情况下无效;6、noAccess:试图设置一个不可访问的值;7、notWritable:试图修改一个存在,但不能修改的值;8、noCreation:试图修改一个存在,但不能创建的值;9、inconsistentName:试图设置一个当前不存在且当前不能创建的变量;10、resourceUnavailable:设置过程中申请某些资源失败;11、commitFailed:set 操作失败;12、undoFailed:进行set 操作失败,有些赋值无法回复;13、genErr:除以上错误外的其他错误。
Error Index:错误索引字段。
Variable Bindings:变量绑定字段。
1.3.3 SNMPv3报文格式
SNMPv3 报文结构从功能上来说,与 SNMPv1、SNMPv2c 的区别主要增加了报头数据和安全参数,如下图:
版本:表示 SNMP 的版本,该字段为 3.
报头数据:主要包含消息发送者所能支持的最大消息尺寸、消息是否进行加密/认证、采用的安全模式等描述内容。格式如下:
Msg ID:可以使请求和应答相互关联,响应报文中的 Msg ID 和发送报文中的值相同。
Msg Max size:消息发送者支持的最大的消息尺寸。
Msg Sec Model:指明了发送方采用的安全模式。
Msg Flag:请求报文指定是否要求回应 report 消息,消息是否进行了加密和认证。
安全参数:包含用户名、密钥、加密参数等安全信息。格式如下:
Auth Engin ID:唯一的标识一个认证。
Auth Engin Boots:从配置认证引擎到现在,认证引擎重新启动的次数。
Auth Engin Time:从配置认证引擎到现在的时间。
User Name:用户名。
Auth Para:认证参数值。
Priv Para:加密后的参数值。
SNMPv3 PDU:包含 PDU 类型、请求标识符、变量绑定列表等信息,包含 Get-request PDU、Get-nextrequest PDU、Set-request PDU、response PDU、Trap PDU、Get-bulk PDU 或 Inform PDU 七种类型。格式如下:
Context Egine ID:SNMP 唯一标识符,和 PDU 类型一起决定应该发往那个应用程序。
Context Name:指明上下文之间的关系,由应用程序决定。
Data:报文的数据内容。
关注微信号,惊喜等你来
x