基于TCP/IP的网络管理包含3个组成部分:

  • 一个管理信息库MIB:MIB包含所有代理进程的所有可被查询和修改的参数
  • 关于MIB的一套公用的结构和表示符号,即SMI(管理信息结构)
  • 管理进程和代理进程之间的通信协议,即SNMP(简单网络管理协议)

SNMP在运输层大多使用UDP

协议

关于管理进程和代理进程之间的交互信息,SNMP定义了5种报文:

  1. get-request操作:从代理进程处提取一个或多个参数值
  2. get-next-request操作
  3. set-request操作:设置代理进程的一个或多个参数值
  4. get-response操作:返回的一个或多个参数值。此操作由代理进程发出,其是前面3种操作的响应操作
  5. trap操作:代理进程主动发出的报文,通知管理进程有某些事情发生

snmp trap报文 解析 java_运维

封装成UDP数据报的5种操作的SNMP报文格式如下:

  • PDU:协议数据单元,也即是分组
  • 共同体:一个字符串。这是管理进程和代理进程之间的口令,明文格式,默认值是public
  • 请求标识:由管理进程设置,由代理进程在get-response中返回。作用是使客户进程能够将服务器进程发出的响应和客户进程发出的查询进行匹配
  • 差错状态字段:一个整数,由代理进程标注,指明有差错发生
  • 差错索引字段:一个整数偏移量,由代理进程标注,指明当有差错发生时,差错发生在哪个参数,且只有在发生noSuchName、readOnly、badValue差错时才进行标注
  • 在get、get-next和set的请求数据报中,包含变量名称和变量值的一张表。对于get和get-next操作,变量值部分被忽略,也就是不需要填写。

snmp trap报文 解析 java_snmp trap报文 解析 java_02

snmp trap报文 解析 java_运维_03

snmp trap报文 解析 java_snmp trap报文 解析 java_04

管理信息结构(SMI)

INTEGER
OCTER STRING
DisplayString
OBJECT IDENTIFIER 下一节中详讲
NULL
IpAddress
PhysAddress
Counter
Gauge
TimeTicks
SEQUENCE
SEQUENCE OF

对象标识符(OBJECT IDENTIFIER)

对象标识是一种数据类型,它指明一种“授权”命名的对象。 “授权”的意思就是这些标识不是随便分配的,它是由一些权威机构进行管理和分配的。

对象标识是一个整数序列,以点(“.”)分隔。这些整数构成一个树型结构,类似于DNS或Unix的文件系统,如图:

snmp trap报文 解析 java_网络_05

图中所有的MIB变量都从1.3.6.1.2.1这个标识开始,树上的每个结点同时还有一个文字名。如标识1.3.6.1.2.1就和iso.org.dod.internet.memt.mib对应

管理信息库(MIB)

MIB被划分成若干个组,如上面的图25-6所示,system、 interfaces、at、ip、tcp、udp等。现在讨论udp组中的变量。

udp组

UDP组的结构如下:

snmp trap报文 解析 java_网络_06

snmp trap报文 解析 java_UDP_07


snmp trap报文 解析 java_结点_08

system组

snmp trap报文 解析 java_结点_09

interface组

本组定义了一个简单变量和一个表格变量:

snmp trap报文 解析 java_snmp trap报文 解析 java_10


snmp trap报文 解析 java_网络_11

at组

snmp trap报文 解析 java_UDP_12

ip组

多个简单变量+3个表格变量:

snmp trap报文 解析 java_结点_13

snmp trap报文 解析 java_结点_14

snmp trap报文 解析 java_UDP_15

snmp trap报文 解析 java_snmp trap报文 解析 java_16

icmp组

snmp trap报文 解析 java_UDP_17

tcp组

snmp trap报文 解析 java_网络_18

snmp trap报文 解析 java_结点_19

实例标识

当对MIB变量进行操作(如查询和设置变量的值时),必须对MIB的每个变量进行标识。只有叶子结点是可操作的。

简单变量的实例标识

通过在其对象标识后面添加“.0”来处理。

如上图25-8中的计数器udpInDatagrams,它的对象标识是1.3.6.1.2.1.7.1,它的实例标识是1.3.6.1.2.1.7.1.0,相对应的文字名称是iso.org.dod.internet.mgmt.mib.udp.udpInDatagrams.0。这个变量处理后通常可以缩写为udpInDatagrams.0

表格的实例标识

以上图25-8中的UDP监听表为例:

snmp trap报文 解析 java_UDP_20


snmp trap报文 解析 java_UDP_21

字典式排序

MIB中按照对象标识进行排序时有一个隐含的排序规则。MIB表格是根据其对象标识按照字典的顺序进行排序的。这就意味着图25-12中的6个变量排序后的情况如图25-13所示。

snmp trap报文 解析 java_结点_22

从这种字典式排序中可以得出两个重要结论:

1.在表格中,一个给定变量(在这里指udpLocalAddress)的所有实例都在下个变量(这里指udpLocalPort)的所有实例之前显示。这暗示表格的操作顺序是“先列后行”的次序。这是由于对对象标识进行字典式排序所得到的,而不是按照人们的阅读习惯而排列的。

snmp trap报文 解析 java_网络_23

2.表格中对行的排序和表格中索引的值有关。在图25-13中,67的字典序小于161,同样161的字典序小于520

Trap

6种特定的trap类型,第7种trap类型是由供应商自己定义的特定类型:

snmp trap报文 解析 java_网络_24

一些简单的例子