AgentX协议

AgentX协议
为了解决SNMP协议中Agent的可扩展性,IETF早期提出了SMUX(SNMP多重协议),后来发现存在缺陷。在1998年IETF提出了AgentX(Agent Extensibility)协议标准。AgentX是包含一个主代理和多个子代理进程的一种体系结构,多个子代理进程可以驻留在同一个设备或者相互连接的不同设备中。它们之间通过标准接口进行通信。主代理进程处理SNMP协议,每个子代理进程负责一个特定的MIB视图。当主代理进程在运行并负责与网络管理站通信时,单一的子代理进程API实现子代理进程的动态注册与注销。可扩展代理的优点在于,它能够在网络设备运行时动态增加和删除MIB实例。AgentX协议允许多个子代理来负责处理MIB信息,该过程对于SNMP管理应用程序是透明的。AgentX协议为代理的扩展提供了一个标准的解决方法,使得各子代理将它们的职责信息通告给主代理。每个符合AgentX的子代理运行在各自的进程空间里,因此比采用单个完整的SNMP代理具有更好的稳定性。另外,通过AgentX协议能够访问它们的内部状态,进而管理站随后也能通过SNMP访问到它们。随着服务器进程和应用程序处理的日益复杂,最后一点尤其重要。通过AgentX技术,我们可以利用标准的SNMP管理工具来管理大型软件系统。

《附录》:

agentx协议格式:

AgentX PDU Header

   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |   h.version   |    h.type     |    h.flags    |  <reserved>   |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |                          h.sessionID                          |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |                        h.transactionID                        |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |                          h.packetID                           |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |                        h.payload_length                       |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

如下为对应的实际数据包

           0: 0101 0000 0000 0000 0000 0000 012d 4865    .............-He
          16: 3c00 0000 0000 0000 0504 0000 0100 0000    <...............
          32: 881f 0000 0300 0000 0200 0000 0300 0000    ?..............
          48: 1900 0000 4e65 742d 534e 4d50 2041 6765    ....Net-SNMP Age
          64: 6e74 5820 7375 622d 6167 656e 7400 0000    ntX sub-agent...

01--h.version
01--h.type
3c--h.payload_length

h.type
         The PDU type; one of the following values:
              agentx-Open-PDU             (1),
              agentx-Close-PDU            (2),
              agentx-Register-PDU         (3),
              agentx-Unregister-PDU       (4),
              agentx-Get-PDU              (5),
              agentx-GetNext-PDU          (6),
              agentx-GetBulk-PDU          (7),
              agentx-TestSet-PDU          (8),
              agentx-CommitSet-PDU        (9),
              agentx-UndoSet-PDU         (10),
              agentx-CleanupSet-PDU      (11),
              agentx-Notify-PDU          (12),
              agentx-Ping-PDU            (13),
              agentx-IndexAllocate-PDU   (14),
              agentx-IndexDeallocate-PDU (15),
              agentx-AddAgentCaps-PDU    (16),
              agentx-RemoveAgentCaps-PDU (17),
              agentx-Response-PDU        (18)

关于agentx协议的具体格式和说明可以查rfc2257文档

TrapV1数据包说明如下(包体数据为十进制,我已经按照包中内容的类型进行了分行注释,一般48为包中数据的分隔符):
 
48 130 1 0 2(version标识) 1(length) 0(version) 4(community标识) 0
164 129 248 6 6 (length)
43 6 1 4 1 42 (enterprise)
64 4 192 168 30 93 (AGENT Address)
2 1 0 (genericTrap) 2 1 0 (specificTrap)
67 2 3 200 (timestamp)
48 129 221 (length)
48 129 199 (本行总长度) 6(oid标识) 7 42 3 4 5 6 1 0 4(value标识) 129 187(length) 200 213 214 190 184 230 190 175 124 200 213 214 190 184 230 190 175 124 200 213 214 190 184 230 190 175 124 200 213 214 190 184 230 190 175 123 200 213 214 190 184 230 190 175 125 200 213 214 190 184 230 190 175 124 200 213 214 190 184 230 190 175 45 200 213 214 190 184 230 190 175 43 200 213 214 190 184 230 190 175 58 200 213 214 190 184 230 190 175 40 200 213 214 190 184 230 190 175 41 200 213 214 190 184 230 190 175 200 213 214 190 184 230 190 175 200 213 214 190 184 230 190 175 200 213 214 190 184 230 190 175 200 213 214 190 184 230 190 175 200 213 214 190 184 230 190 175 200 213 214 190 184 230 190 175 200 213 214 190 184 230 190 175 200 213 214 190 184 230 190 175 200 213 214 190 184 230 190 175 200 213 214 190 184 230 190 175
48 17 (本行总长度) 6(oid标识) 9 43 6 1 6 3 18 1 3 0 64 4 192 168 30 93
 
对应的告警内容(只有1个字段的告警内容):
OID: 1.2.3.4.5.6.1.0 Value: 日志告警|日志告警|日志告警|日志告警{日志告警}日志告警|日志告警-日志告警+日志告警:日志告警(日志告警)日志告警日志告警日志告警日志告警日志告警日志告警日志告警日志告警日志告警日志告警日志告警

TrapV2数据包说明如下(包体数据为十进制,我已经按照包中内容的类型进行了分行注释,一般48为包中数据的分隔符):

48(trap包分隔标识) 130 1 67(length) 2(version标识) 1(length) 1(version) 4 6 112 117 98 108 105 99(public/private)
167 130 1 52(length)
2 1 0(requestID) 2 1 0(errorStatus) 2 1 0(errorIndex)
48 130 1 39 (length)
48 16(本行总长度) 6(oid标识) 8(length) 43 6 1 2 1 1 3 0 67 4(value标识) 23 221 23 13
48 25(本行总长度) 6(oid标识)  10(length) 43 6 1 6 3 1 1 4 1 0 6(oid标识) 11(length) 43 6 1 4 1 196 17 1 1 0 0
48 16(本行总长度) 6(oid标识)11 43 6 1 4 1 195 20 2 8 3 1 4(value标识)  1(length) 50
48 17 6 11 43 6 1 4 1 195 20 2 8 3 2 4 2 65 50
48 17 6 11 43 6 1 4 1 195 20 2 8 3 3 4 2 75 49
48 20 6 11 43 6 1 4 1 195 20 2 8 3 4 4 5 50 56 56 54 54
48 16 6 11 43 6 1 4 1 195 20 2 8 3 5 4 1 51
48 16 6 11 43 6 1 4 1 195 20 2 8 3 6 4 1 49
48 29 6 11 43 6 1 4 1 195 20 2 8 3 7 4 14 50 48 48 55 48 55 48 57 49 52 53 51 50 49
48 16 6 11 43 6 1 4 1 195 20 2 8 3 8 4 1 54
48 85 6 11 43 6 1 4 1 195 20 2 8 3 9 4 70 97 103 101 110 116 32 124 73 50 124 32 40 105 100 120 32 124 48 124 41 99 97 110 39 116 32 99 111 110 110 101 99 116 32 107 101 114 110 101 108 32 124 75 49 124 44 101 114 114 111 114 61 124 48 124 44 108 105 110 107 32 116 121 112 101 32 124 50 124 33
 
对应的告警内容(11个字段的告警内容):
OID:1.3.6.1.2.1.1.3.0    Value:46 days, 8:07:33.25
OID:1.3.6.1.6.3.1.1.4.1.0    Value:OID:1.3.6.1.4.1.8721.1.1.0.0
OID:1.3.6.1.4.1.8596.2.8.3.1    Value:2
OID:1.3.6.1.4.1.8596.2.8.3.2    Value:A2
OID:1.3.6.1.4.1.8596.2.8.3.3    Value:K1
OID:1.3.6.1.4.1.8596.2.8.3.4    Value:28866
OID:1.3.6.1.4.1.8596.2.8.3.5    Value:3
OID:1.3.6.1.4.1.8596.2.8.3.6    Value:1
OID:1.3.6.1.4.1.8596.2.8.3.7    Value:20070709145321
OID:1.3.6.1.4.1.8596.2.8.3.8    Value:6
OID:1.3.6.1.4.1.8596.2.8.3.9    Value:agent |I2| (idx |0|)can't connect kernel |K1|,error=|0|,link type |2|!

你可能感兴趣的:(网络,api,header,服务器,文档,扩展)