SNMPv1网络管理.docx
《SNMPv1网络管理.docx》由会员分享,可在线阅读,更多相关《SNMPv1网络管理.docx(16页珍藏版)》请在冰点文库上搜索。
SNMPv1网络管理
SNMPv1网络管理
1SNMP背景知识
●TCP/IP的发展以及互联网的兴起
●TCP/IP网络管理的起源
●SNMP的发展
2SNMP管理模型
1、管理工作站
命令转换、被管实体的MIB数据获取
2、管理代理
3、管理信息库(managementinformationbase)
管理信息库(MIB)规定了网络代理所保存的数据项目数据类型以及在每个数据项目中允许的操作通过对这些数据项目的存取访问来实现网络管理的五大功能:
配置管理、性能管理、出错管理、计费管理和安全管理。
Internet标准的管理信息库(MIB)是一树状结构的数据库。
MIB-1树状结构图(OID图)
4、网络管理协议
●Get:
由管理站获取代理的MIB对象值
●Set:
由管理站设置代理的MIB对象值
●Trap:
由代理向管理站报告重要事件(认证失败、连接断等)
5、SNMP协议安全性
用团体字符串定义一个代理和一组管理者之间的认证和访问控制关系。
代理为每组可选的认证和访问控制建立一个团体,每个团体赋予一个唯一的团体字符串。
●认证服务:
保证代理收到的消息是来自它所声称的消息源。
SNMPv1中仅仅通过团体字符串来进行认证。
●访问控制:
代理可以为不同的管理者提供不同的MIB访问控制,访问控制包括两个方面:
(1)MIB视图:
MIB中所有变量(对象)的一个子集,可以为每个团体定义不同的MIB视图,视图中的对象子集可以不在MIB的一个子树之内
(2)SNMP访问模式:
READ-ONLY或READ-WRITE或WRITE-ONLY,为每个团体定义一个访问模式
●PROFILE:
MIB视图和访问模式的结合成为轮廓(PROFILE),
3SNMP协议操作
SNMP支持的操作
SNMP协议操作的原子性
当一个SNMP操作消息(如GetRequestPDU)中绑定了多个变量时,代理的处理原则是:
要么全取到,要么一个也不取,应该说是SNMPv1的一大缺点,效率低下。
●GetRequest执行流程
●GetNextRequest执行流程
●SetRequest执行流程
●Trap执行流程
●SNMP协议端口分配
4实例标识
MIB中的每个对象都有一个唯一的对象标识,由该对象在MIB树状结构中的位置决定。
1、字典顺序
对象标识符为整数序列,因此可以把一个代理维护的所有变量实例(即所有叶子节点)以OID进行排序,得到一个字典顺序。
例如MIB-II中系统组(SystemGroup)中7个变量以字典序排序为sysDescr(1.3.6.1.2.1.1.1.0)、sysObjectID(1.3.6.1.2.1.1.2.0)、sysUpTime(1.3.6.1.2.1.1.3.0)、sysContact(1.3.6.1.2.1.1.4.0)、sysName(1.3.6.1.2.1.1.5.0)、sysLocation(1.3.6.1.2.1.1.6.0)、sysServices(1.3.6.1.2.1.1.7.0)。
而接口1的IfDescr变量的OID为1.3.6.1.2.2.1.2.1,因而若考虑sysServices(1.3.6.1.2.1.1.7.0)与1.3.6.1.2.2.1.2.1的字典序,则
1.3.6.1.2.1.1.7.0
1.3.6.1.2.2.1.2.1
显然,后一个OID在第6个数字处为2,比第一个变量的1大,因此,后一个变量的字典序大。
通过用字典排序,管理者能够有效地遍历一个MIB结构,在树中的任一点,管理者可以提供一个对象或对象标识并且申请对在该排序中出现的下一个的对象实例进行操作。
这就是GetNextRequest操作的基础。
在使用GetNextRequest时,OID可以不是对象实例,但取得的必定是下一个对象实例;因此,可以使用非实例标识避免原子性操作带来的性能损失。
2、字典排序算法
代理所维护对象实例的OID排序集合就是对OID树的深度优先遍历的结果剔除非叶子节点(即支点)后的集合。
树的遍历:
就是按某种次序访问树中的结点,要求每个结点访问一次且仅访问一次。
3、向量对象和标量对象
由对象如何得到对象实例,因为SNMP协议操作针对的是对象实例。
●标量对象:
很简单,只需找到它的OID,并在后面加一个0即可
●向量对象(表对象、行对象):
仅仅指定它的OID,并不能唯一指定一个变量
例1:
对于接口组中的接口表来说,结构如下:
IfIndex
IfDescr
IfType
1.3.6.1.2.1.2.2.1.1
1.3.6.1.2.1.2.2.1.2
1.3.6.1.2.1.2.2.1.3
1
XXXXX
Ethernet
2
XXXXX
Syn
3
ZZZZZ
Asyn
如图所示,如果要指定接口1的类型变量(IfType)的OID,显然1.3.6.1.2.1.2.2.1.3是不够的。
因为在这个OID下有多个行,到底是以太网接口、高速同步口还是慢速异步口并不能区分。
因此,SNMP规定:
对于向量对象,需要用变量OID(相当于指定列:
列对象)和行实例的索引字段的值(相当于指定行)合起来定义OID。
比如:
接口1的类型变量,它的OID为1.3.6.1.2.2.1.3.1。
请注意最后的红颜色表示的1,它是接口1的索引字段值。
索引字段就是ifIndex,在MIB文件中有定义。
例2:
TcpConnState
TcpConnLocalAddress
TcpConnLocalPort
TcpConnRemAddress
TcpConnRemPort
1.3.6.1.2.1.6.13.1.1
1.3.6.1.2.1.6.13.1.1
1.3.6.1.2.1.6.13.1.1
1.3.6.1.2.1.6.13.1.1
1.3.6.1.2.1.6.13.1.1
5
10.0.0.99
12
9.1.2.3
15
2
0.0.0.0
99
0
0
3
10.0.0.99
14
89.1.1.42
84
INDEX
INDEX
INDEX
INDEX
上面是一个复杂的例子,索引字段有四个,因此,红颜色5变量的OID为1.3.6.1.2.1.6.13.1.1.10.0.0.99.12.9.1.2.3.15,索引对象按照其出现在表的定义中的顺序给出。
5GetNextRequest操作
顺序访问对象实例:
就是严格按照对象实例的字典顺利逐个访问,主要用于GetNextRequest操作。
范例:
使用GetNextRequest有效地搜索一个表格对象(向量)。
Step1
Step2
Step3
Step4
6GetRequest操作
随机访问对象实例:
直接指定需要访问的对象实例,用于GetRequest操作;对于获取表格数据的某一特定数据项(由列对象和索引对象联合确定位置)尤其有效。
范例:
获取表格的第二行数据。
7SetRequest操作
SET操作完成一些特殊命令,这对于表格对象尤其有效。
1、更新数值
2、增加行
●列对象数值全部指定
●仅指定了索引对象数值
3、删除行
4、动作触发
8SNMP报文格式
SNMP消息域
域名
说明
Version
版本号
Community
共同体名
PDUtype
PDU类型
Request-id
请求编号,用于区分未完成的请求
Variable-bindings
变量绑定,由一组变量名和数值构成
Error-status
指示处理请求时发生的错误
Error-index
发生错误的变量在列表中的位置
Enterprise
设备制造商的标识,即sysObjectID
Agent-addr
产生trap的代理的IP地址
Generic-trap
通用trap类型
Specific-trap
厂商扩展trap的代码
Time-stamp
网络实体初始化和产生trap之间的时间,即sysUpTime
9实验网络情况
1、一个典型网络及其配置情况:
2、基于实验网络的网络管理
抓包分析
截获的802.3帧的分析就可以说明问题:
1)从192.168.0.70发往192.168.0.96的SNMP请求GetRequest
0080C86A36C4目的MAC地址(192.168.0.96机器的MAC地址)
52544CBD024E源MAC地址,本机MAC地址
0800以太网类型
-------------------------------------------------------以上为802.3帧头
45最高4位表示IP版本号,Ipv4,所以为4,跟着的
5表示整个IP头长为5个32bits
0000表示服务类型(Typeofservice)
0044表示IP分组总长度(字节),共68个字节
6318分组标识(Identification)
0000分片控制(Flags+Fragmentoffset)
80生存时间(Timetolive)
11承载报文为UDP(Protocol)
559AIP分组头校验和
C0A80046源IP
C0A80060目的IP
-------------------------------------------------------以上为IP分组头
050AUDP源端口
00A1UDP信宿端口
0030UDP长度
43B2校验和
-------------------------------------------------------以上为UDP头
3026SNMP报文开始编码
020100version,值为整数0
04067075626C6963community,值为字符串“public”
A019PDUtype
020102request_ID,值为整数2
020100错误状态,值为整数0
020100错误索引,值为整数0
300E300C变量列表开始编码
06082B06010201010100对象实例OID
0500空值
2)截获的从192.168.0.96发回的对前次请求的响应
52544CBD024E目的MAC地址
0080C86A36C4源MAC地址
0800
4500
0066
012E
0000
FF
11
3862
C0A80060
C0A80046
00A1
050A
0052
9D20
+-------------------------------------以下为SNMP协议开始
3048
020100
04067075626C6963
A23B
020102
020100
020100
3030
302E
06082B06010201010100
042231302F31303020466173742045746865726E657420537769746368696E6720487562
10SNMPv1的局限性
作为一个网络管理协议的过渡产品,SNMPv1存在以下不足:
●由于轮询的性能限制,SNMP不适合管理大型网络。
原因:
一个是查询导致大量管理消息,消耗网络带宽资源;另外一个则是网络响应时间增加。
●SNMP不适合检索大量数据,例如检索整个表格的全部数据。
●SNMPv1的MIB没有真正支持基于对象的复合查询;
●trap事件没有确认机制,难以保证可靠性;
●认证过于简单,安全措施不够,通常只是适用于网络监视;
●不直接支持网络代理执行动作的命令;
●不支持管理者到管理者的通信;
●SNMP的管理信息库MIB-2支持的管理对象有限,不足以完成复杂的管理功能。
●对表操作的规定不完善,例如:
增加和删除表行的操作不明确。
●仅支持IP网络;