网络管理系统的组成
1. 被管理节点(设备)--被监视的设备
2. 网络管理代理 ---是驻留在网络设备中的软件模块,对来自管理站的信息查询 和 动作执行 的请求作出响应, 主动向管理站提供一些重要的非请求信息
3. 网络管理工作站 ---信息的接收点,指令的发送点(与在不同的被管理节点中的代理进行通信,并显示这些代理状态的中心设备)
4.网络管理协议 ----规范被管设备与网管工作站的信息传递(被网络管理工作站和代理用来交换信息的协议)
5.管理信息数据库 ----收集有关被管网络设备的信息(动态变化的)
网络管理协议
重点是:SNMP Simple Network Management Protocol
RMON Remote Monitoring远程管理协议
SNMP依赖于UDP为其提供服务
SNMP的管理模型
管理信息数据库
1. 对象类型(ObjectType)例如 IP 带宽
2. 语法
3. 权限
4. 状态
SNMP的管理信息库采用与DNS一样的树状分层结构
OID 对象的唯一标识。例如上图中icmp的OID是 1.3.6.1.2.1.5
SNMP规定了5种协议数据单元PDU(也就是SNMP报文),用来在管理进程和代理之间的交换。
get-request操作:从代理进程处提取一个或多个参数值。
get-next-request操作:从代理进程处提取紧跟当前参数值的下一个参数值。
set-request操作:设置代理进程的一个或多个参数值。
get-response操作:返回的一个或多个参数值。这个操作是由代理进程发出的,它是前面三种操作的响应操作。
trap操作:代理进程主动发出的报文,通知管理进程有某些事情发生。
前面的3种操作是由管理进程向代理进程发出的,后面的2个操作是代理进程发给管理进程的,为了简化起见,前面3个操作今后叫做get、get-next和set操作。在SNMP中往往使用UDP协议,所以可能发生管理进程和代理进程之间数据报丢失的情况。因此一定要有超时和重传机制
图1描述了SNMP的这5种报文操作。请注意,在代理进程端是用熟知端口161俩接收get或set报文,而在管理进程端是用熟知端口162来接收trap报文。
图1 SNMP的5种报文操作
图2是封装成UDP数据报的5种操作的SNMP报文格式。可见一个SNMP报文共有三个部分组成,即公共SNMP首部、get/set首部、trap首部、变量绑定。
(1)公共SNMP首部
共三个字段:
版本
写入版本字段的是版本号减1,对于SNMP(即SNMPV1)则应写入0。
共同体(community)
共同体就是一个字符串,作为管理进程和代理进程之间的明文口令,常用的是6个字符“public”。
PDU类型
根据PDU的类型,填入0~4中的一个数字,其对应关系如表2所示意图。
表2 PDU类型
PDU类型 |
名称 |
0 |
get-request |
1 |
get-next-request |
2 |
get-response |
3 |
set-request |
4 |
trap |
(2)get/set首部
请求标识符(request ID)
这是由管理进程设置的一个整数值。代理进程在发送get-response报文时也要返回此请求标识符。管理进程可同时向许多代理发出get报文,这些报文都使用UDP传送,先发送的有可能后到达。设置了请求标识符可使管理进程能够识别返回的响应报文对于哪一个请求报文
差错状态(error status)
由代理进程回答时填入0~5中的一个数字,见表3的描述
表3 差错状态描述
差错状态 |
名字 |
说明 |
0 |
noError |
一切正常 |
1 |
tooBig |
代理无法将回答装入到一个SNMP报文之中 |
2 |
noSuchName |
操作指明了一个不存在的变量 |
3 |
badValue |
一个set操作指明了一个无效值或无效语法 |
4 |
readOnly |
管理进程试图修改一个只读变量 |
5 |
genErr |
某些其他的差错 |
差错索引(error index)
当出现noSuchName、badValue或readOnly的差错时,由代理进程在回答时设置的一个整数,它指明有差错的变量在变量列表中的偏移。
(3)trap首部
企业(enterprise)
填入trap报文的网络设备的对象标识符。此对象标识符肯定是在图3的对象命名树上的enterprise结点{1.3.6.1.4.1}下面的一棵子树上。
trap类型
此字段正式的名称是generic-trap,共分为表4中的7种。
trap类型 |
名字 |
说明 |
0 |
coldStart |
代理进行了初始化 |
1 |
warmStart |
代理进行了重新初始化 |
2 |
linkDown |
一个接口从工作状态变为故障状态 |
3 |
linkUp |
一个接口从故障状态变为工作状态 |
4 |
authenticationFailure |
从SNMP管理进程接收到具有一个无效共同体的报文 |
5 |
egpNeighborLoss |
一个EGP相邻路由器变为故障状态 |
6 |
enterpriseSpecific |
代理自定义的事件,需要用后面的“特定代码”来指明 |
当使用上述类型2、3、5时,在报文后面变量部分的第一个变量应标识响应的接口。
特定代码(specific-code)
指明代理自定义的时间(若trap类型为6),否则为0。
时间戳(timestamp)
指明自代理进程初始化到trap报告的事件发生所经历的时间,单位为10ms。例如时间戳为1908表明在代理初始化后1908ms发生了该时间。
(4)变量绑定(variable-bindings)
指明一个或多个变量的名和对应的值。在get或get-next报文中,变量的值应忽略。