trap语法定义规则包括以下几部分:


  1.TRAP-TYPE:标识下面定义的是一个trap。


  2.enterprise:企业标识,已经定义好的合法的标识。本域必须提供定义此trap的企业标识,标识这个trap是哪个企业定义的。这个值将被放在trapPDU的enterprise字段内。


  3.variables:变量定义了MIB对象的有序序列,这些对象包含在每个trap类型的实例中。每个变量按顺序被放置在SNMP Trap PDU的variable-bindings中。


  4.description:Trap的描述。


  5.reference:参考,可选项,用于和其他MIB模块中定义的trap的description进行相互参照。如果新定义一个trap,reference指向本trap,则表示新trap的description参考本trap的description。


  6.value:trap的值是整数,其值为enterprise下的唯一值。value将放在Trap PDU的专用字段(special-trap)内。该值用以唯一地标识一个trap,在enterprise值相同的情况下,value用来标识具体的trap。


  snmp中预定义的trap:


  snmp协议中定义了6种基本的trap,这6种trap可以涵盖大部分设备的主要状态改变,与企业自定义trap配合使用,就可以处理几乎所有的重要状态改变情况。


  1.coldStart:snmp发送实体正在重新初始化,以修改代理的配置或协议实例的实现,特别是由于崩溃或重大故障而引起的意外重启。


  2.warmStart:发送实体正在重新初始化,但不修改代理的配置或协议实例的实现。


  3.linkDown:表示代理的一个通信连接失败。


  4.linkUP:表示代理的一个通信连接成功。


  5.authenticationFailure:表示发送方的snmp消息检验失败


  6.egpNeighborLoss:表示发送协议实体的EGP邻居已被标记为Down,相邻关系已经不存在。


    企业专用trap:snmp定义的6个trap可以涵盖大部分的情况,但是很多情况下设备有自己特殊的状态,企业也希望发送或接收自己定义的trap以得到特殊的消息。使用trap定义宏就可以定义企业自己的trap。企业设备发送自定义trap时,必须同时定义trap的MIB一起分发出去,否则,其他管理站不能识别自定义trap的格式。


    trap的PDU结构:


PDU Type  Enterprise  Agent-addr  Generic-trap  Specific-trap  Time-stamp  Variable-bindings

  不好意思,PDU结构如上,大家自己想象着把框框加上吼...


字段

类型

说明

PDU Type

 

PDU类型,Trap为4

Enterprise

Object Identifier

产生该Trap的网络管理子系统,基于sysObjectID。如果是企业自定义Trap,此值为企业在enterprise子树下的注册子树。

Agent-addr

NetworkAddress

产生Trap的SNMP实体地址,一般为代理地址

Generic-trap

Integer

通用trap类型,取值为coldStart、warmStart、linkDown、linkUp、authenticationFailure、egpNeihborLoss、enterpriseSpecific

Specific-trap

Integer

当Generic-trap为enterpriseSpecific时,specific-trap指明具体的企业自定义Trap类型,specific-trap跟在enterprise后面,组成了Trap的标识

Time-stamp

TimeTicks

上次初始化网络实体和产生Trap的时间间隔,包含sysUpTime值

Variable-bindings

Sequences of

和Trap相关的附加信息


generic-trap字段取值意义为:coldStart(0);warmStart(1);linkDown(2);linkUp(3);authenticationFailure(4);egpNeighborLoss(5);enterpriseSpecific(6); 0~5是标准trap,6是专用trap。 

 

    SNMPv2 trap数据包格式为: 

 

  PDU Type  Request-id  Error-status  Error-index  Variable-bindings


(框框要自己想象着加哦)


字段

类型

说明

PDU Type

 

PDU类型

request-id

Integer

发送实体通过给每个PDU赋一个id使每一个到同一代理的请求能够被唯一识别,代理应答时原封不动返回request-id值,使发送方可以将应答和请求匹配,也可以使双方有能力处理UDP中可能产生的重复发送的消息

Error-status

Integer

用于表示在处理请求时出现的异常,对于trap数据包该字段为0。

Error-index

Integer

错误索引,对于trap数据包该字段为0。

variableBindings

Sequences of

所要求的实例列表


 

最近在学习trap,故把看到的一些写下来。本文参考《SNMP简单网络管理协议》 电子工业出版社 李明江编著