www.diybl.com 时间 : 2008-08-01 作者:佚名 编辑:本站 点击: [ 评论 ]
术语说明:
SNMP -- 简单网络管理协议 (Simple Network Management Protocol)
MIB -- 管理信息库,它由一个系统内的许多被管理对象及其属性组成。MIB这个概念实际上就是一个虚拟数据库。这个数据库提供有关被管理网络元素的信息,而这些信息由管理进程和各个代理进程共享。MIB由管理进程和各个代理进程共同使用。示例如下:
【
sysUpTime OBJECT-TYPE
SYNTAX TimeTicks
ACCESS read-only
STATUS mandatory
DESCRIPTION
"距最后一次系统重启动的时间"
】
ASN.1 -- 一个SNMP消息通过抽象语法记法1(Abstract Syntax Notation, version 1)构造。ASN.1是一种形式语言。
BER -- 将ASN.1描述表示成octet strings的基本编码规则
SMI -- 管理信息结构是一套描述SNMP如何访问信息的标准,它用ASN.1定义了MIB。SMI要求每个数据项有name、syntax和encoding三部分。名字就是OID。语法给出了数据类型,比如"integer"、"string of octets"等等。编码则指明为了进行平台无关网络转输如何进行数据的序列化(RPC/XDR中存在类似概念)。
OID -- 对象标识符是唯一的点分数字串,比如".1.3.6.1.2.1.4.3.0"
PDU -- 协议数据单元是SNMP消息中的数据区。
对象 -- object,通信和信息处理范畴里可标识的切拥有一定信息特性的资源。注意,这里所用的“对象”与面向对象系统中的对象并不完全一样。
被管理对象 -- managed object,被管理对象指可使用管理协议进行管理和控制的网络资源的抽象表示。例如,一个层的实体或一个连接。
snmp目前有3个版本,v1,v2,v3,v2是v1的增强版,包含了其他协议的操作,v3则包含了更多安全和远程的配置。snmp还包含一组由RMON,RMON2,MTB,MTB2,OCDS及OCDS定义的扩展协议。
一般snmp的部署分为管理端,和代理程序端。SNMP规定了5种协议数据单元PDU(也就是SNMP报文),用来在管理进程和代理之间的交换。
get-request操作:从代理进程处提取一个或多个参数值
get-next-request操作:从代理进程处提取紧跟当前参数值的下一个参数值
set-request操作:设置代理进程的一个或多个参数值
get-response操作:返回的一个或多个参数值。这个操作是由代理进程发出的,它是前面三种操作的响应操作。
trap操作:代理进程主动发出的报文,通知管理进程有某些事情发生。
前面的3种操作是由管理进程向代理进程发出的,后面的2个操作是代理进程发给管理进程的。简化起见,前面3个操作可以叫做get、get-next和set操作。
下图描述了这5中报文操作:
下图是封装成UDP数据报的5种操作的SNMP报文格式。可见一个SNMP报文共有三个部分组成,即公共SNMP首部、get/set首部trap首部、变量绑定。
公共SNMP首部--共3个字段
(1)版本--写入版本字段的是版本号减1,对于SNMP(即SNMPv1)则应写入0。
(2)community值--不少国内都将这玩意翻译成共同体,所以我图中也记为共同体。共同体就是一个字符串,作为管理进程和代理进程之间的明文口令,常用的是6个字符“public”。
(3)pdu的类型--pdu中数字的对应关系如下:
|
pdu的类型 |
名称 |
|
0 |
get-request |
|
1 |
get-next-request |
|
2 |
get-response |
|
3 |
set-request |
|
4 |
trap |
get/set首部--共3个字段
(1)请求标识符(request ID)
这是由管理进程设置的一个整数值。代理进程在发送get-response报文时也要返回此请求标识符。管理进程可同时向许多代理发出get报文,这些报文都使用UDP传送,先发送的有可能后到达。设置了请求标识符可使管理进程能够识别返回的响应报文对于哪一个请求报文
(2)差错状态(error status)
由代理进程回答时填入0~5中的一个数字,数字的具体含义参见下表:
|
error status |
名字 |
说明 |
|
0 |
noError |
一切正常 |
|
1 |
tooBig |
代理无法将回答装入到一个SNMP报文之中 |
|
2 |
noSuchName |
操作指明了一个不存在的变量 |
|
3 |
badValue |
一个set操作指明了一个无效值或无效语法 |
|
4 |
readOnly |
管理进程试图修改一个只读变量 |
|
5 |
genErr |
其他的差错 |
(3)差错索引(error index)
当出现noSuchName、badValue或readOnly的差错时,由代理进程在回答时设置的一个整数,它指明有差错的变量在变量列表中的偏移。
trap首部
(1)enterprise(企业)
填入trap报文的网络设备的对象标识符。此对象标识符肯定是在下图的对象命名树上的enterprise结点{1.3.6.1.4.1}下面的一棵子树上。
(2)trap类型
此字段正式的名称是generic-trap,按类型可分为:
| trap类型 |
名字 |
说明 |
| 0 |
coldStart |
代理进行了初始化 |
| 1 |
warmStart |
代理进行了重新初始化 |
| 2 |
linkDown |
一个接口从工作状态变为故障状态 |
| 3 |
linkUp |
一个接口从故障状态变为工作状态 |
| 4 |
authenticationFailure |
从SNMP管理进程接收到具有一个无效community的报文 |
| 5 |
egpNeighborLoss |
一个EGP相邻路由器变为故障状态 |
| 6 |
enterpriseSpecific |
代理自定义的事件,需要用后面的“特定代码”来指明 |
当使用上述类型2、3、5时,在报文后面变量部分的第一个变量应标识响应的接口。
(3)特定代码(specific-code)
指明代理自定义的时间(若trap类型为6),否则为0。
(4)时间戳(timestamp)
指明自代理进程初始化到trap报告的事件发生所经历的时间,单位为10ms。例如时间戳为1908表明在代理初始化后1908ms发生了该时间。
变量绑定(variable-bondings)
指明一个或多个变量的名和对应的值。在get或get-next报文中,变量的值应忽略。
管理信息库MIB
管理信息库MIB指明了网络元素所维持的变量(即能够被管理进程查询和设置的信息)。MIB给出了一个网络中所有可能的被管理对象的集合的数据结构。SNMP的管理信息库采用和域名系统DNS相似的树型结构,它的根在最上面,根没有名字。下图画的是管理信息库的一部分,它又称为对象命名(objectnamingtree)。