2010年03月21日
5.3 管理信息结构(领会)
1、 对象的定义 P131
2、 表的定义、索引和操作 P136
行的生成4步骤 P136
行的挂起:用set命令把状态列由active改为notInService
行的删除:set命令把状态列改为destroy
4、 通告的定义和作用:用于异常条件出现时SNMPv2实体发送的信息。
5.4 管理信息库(简单应用)
1、 系统组SNMPv2的系统组是MIB-2系统组的扩展。之增加了与对象资源(Object Resource)有关的一个标量对象sysORLastChange和一个表对象sysORTable。
所谓对象资源:是由代理实体使用和控制的,可以由管理站动态配置的系统资源。
标量对象sysORLastChange记录着对象资源表中描述对象实例改变状态的时间。
2、 SNMP组与SNMPv2操作的关系:这个组是由MIB-2的对应组改造而成,增加了一些新的对象,但新的SNMP组对象少了,他删除了对排错作用不大的许多变量。
3、 MIB对象组的作用:这个组的对象与管理对象的控制有关,分为两个子组。的一个子组snmpTrap由snmpTrapOID和snmpTrapEnterprise组成。前者是正在发送的陷入或统治的对象标识符。后者是正在发送的陷入有关的制造商标识符。第二个子组snmpSet只有snmpSerialNo一个对象,用于解决Set操作中可能出现的问题:一个管理站向同一MIB对象发送多个,需保证顺序执行;多个管理站对MIB的并发操作可能破坏数据库的一致性和xx性。
5、 适应性声明主要内容的:适应性是对具体实现的限制,是具体实现必须达到的最小级别。说明适应性要用到四个文件:
?OBJECT-GROUP(对象组宏):一组有关的对象
?NOTIFICATION-GROUP(通知组宏)一组已经实现的通知
?MODULE-COMPLIANCE(模块依从性宏):说明对MIB实现的最小要求
?AGENT-CAPABILITIES(代理能力宏):定义了一个代理系统的能力,及代理对MIB的支持程度。
6、 接口组增加的对象及应用
原来的接口组的功能和不足之处:
?接口编号
?接口子层
?虚电路问题
?不同传输特性的接口
?计数长度
?接口速度
?组播/广播分组的计数
?ifSpecific问题
增加了4个新表:
?接口扩展表:各种接口对象
?接口堆栈表:说明接口表中属于同一物理接口的各个行之间的关系,指明哪些子层运行于那些子层之上。
?接口测试表:作用是由管理站知识代理系统测试接口故障
?接收地址表:包含每个接口对应的各种地址。
5.5 SNMPv2协议和操作(简单应用)
1、 SNMPv2提供了3种访问管理信息的方法
?管理站和代理之间的请求/响应通信
?管理站和管理站之间的请求/响应通信
?代理系统到管理站的非确认通信
2、 SNMPv2报文结构和交换序列
SNMPv2报文的结构分为3部分:版本号、团体名和作为数据传送的PDU。SNMPv2版本号为1 SNMPv1版本号为0
?SNMPv2发送序列:
n 根据协议需要构造PDU
n 把PDU、源和目标端口地址以及团体名传送给认证服务,认证服务产生认证码或对象数据进行加密。
n 加入版本号、团体名构造报文。
n 进行BER编码,产生0/1比特流,发送出去
?接收序列
n 对报文进行语法检查,丢弃出错报文
n 把PDU部分、源和目标端口教给认证服务。如果失效,发送一个陷入,丢弃报文。
n 认证通过,把PDU转换成asn.1的形式
n 协议实体对PDU作句法检查,如果通过,根据团体名和适当的访问策略作相应的处理。
3、 SNMPv2 PDU格式 功能和操作P152:6种协议数据单元,3种格式。
GetRequest,GetNextRequest,SetRequest,InformRequest 和Trap PDU
PDU类型 请求标识 0 0 变量绑定表
Response PDU
PDU类型 请求标识 错误状态 错误索引 变量绑定表
GetBulkRequest PDU
PDU类型 请求标识 非重复数N {zd0}后继数 变量绑定表
变量绑定表
变量名1 值1 变量名2 值2
GetRequest:SNMPv2对这种操作的响应方式与SNMPv1不同。SNMPv1响应是原子性的,即只要有一个变量检索不到,就不返回任何值。SNMPv2不是原子性,允许部分响应。规则如下:
?如果改变量的对象标识符前缀不能与这一请求可访问的任何变量的对象标识符匹配,返回错误值noSuchObject。
?如果变量名不能与这一请求可访问的任何变量名xx匹配,则返回一个错误值noSuchInstance。
?不属于以上情况,在变量绑定表中返回被访问的值。
?其他原因导致处理失败,返回错误状态genErr。
?如果生成的响应PDU过大,则放弃这个PDU,构造新的相应PDU,错误状态tooBig
GetNextRequest PDU的响应:
?对变量绑定表中指定的变量在MIB中查找按字典顺序的后继变量,如果找到,返回改变量的名字和值。
?如果找不到字典顺序的后继变量,返回endOfMibView。
?其他情况导致相应PDU构造失败,以与GetRequest类似的方式返回错误值
GetBulkRequestPDU:是SNMPv2对原标准的主要增强,目的是以最少的交换次数检索大量的管理信息,或者要求管理站尽可能大的响应报文。原理与GetNextRequest PDU的响应
例题:P 155
GetRequestPDU:的请求与SNMPv1相同,具有原子性。差别是处理相应的方式不同。分两个阶段处理这个请求:检验操作的合法性;更新变量。检验合法性包括:
?如果有一个变量不可访问,返回noAccess
?如果与绑定表中变脸共享对象标识符的任MIB变量多不能生成、不能修改。也不解后制定的值,返回错误状态notWritable
?设置类型不是和,WrongType
?设置值的长度限制不同,WrongLength
?要设置的ASN.1编码不是合变量的ASN.1标签,wrongEncoding
?指定值在任何情况下都不能赋予变量,wrongvalue
?变量不存在,也不能生成,noCreation
?变量存在,当前情况不能生成,inconsistaneName
?变量存在,但不能修改,notWritable
?当前情况下不能为变量赋与制定的值,inconsistanevalue
?缺乏资源,resourceUnavailable
?其他原因导致处理变量绑定对失败,genErr
TrapPDU:陷入是代理发给管理站的非确认信息,包含sysUpTime.0(发出陷入时间),snmpTrapOID.0(陷入对象标识符),有关通知宏定义中的各变量名及其值,代理系统选择的其它变量的值。
InformRequestPDU:管理站发给代理站的消息
4、 SNMPv2操作管理:
SNMPv2的操作管理框架主要涉及4个基本概念:参加者、上下文、MIB视图、访问控制策略。
5、 SNMPv2实体:所谓实体就是执行网络管理操作的多线程进程。
6、 SNMPv2上下文:SNMPv2实体可以访问的管理对象的资源的集合,分为本地上下文和远程上下文。
7、 本地上下文是本地MIB对象的一个子集,也叫做MIB视阈
8、访问控制策略:SNMPv2实体发送一个PDU后首先检查协议操作的合法性,及双方参加者、操作的上下文是否有效,指定的操作是否允许等。
9、 SNMPv2的发送和接收 P161、P162
10、管理站之间的通信:SNMPv2增加管理站之间的通信机制是分布式网络管理所需要的功能特征。为此引入了通知报文InformRequest和管理站数据库(manger-to-manger MIB)。管理站数据库有3个表组成:
snmpAlarmTable:报警表提供被监视的变量的有关情况。
snmpEventNotifyTable:事件表记录SNMPv2实体产生的重要事件,或者是报警事件、或者是通知类型宏定义事件。
snmpEventNotifyTable:事件通知表定义了发送通知的目标和类型。
5.6 SNMPv2的实现
1、 可利用的各种传输服务:
a) UDP:用户数据报协议
b) CLNS:OSI面线非连接的传输服务
c) CONS:OSI面线连接的传输服务
d) DDP:AppleTalk 的DDP传输服务
e) IPX:Novell公司的网间网分组交换协议
2、与OSI的兼容性:使用RFC1006在TCP/IP网络之上模拟ISO的TP0传输服务。通过RFC1006,OSI的电子邮件、系统管理等应用程序都可以运行在TCP/IP网络上。TP0是最简单的面向连接的传输协议,只提供连接的建立和释放,不支持错误检测,也不支持QoS。RFC1006对TP0有所增强,主要是在连接建立阶段交换少量数据,支持加急投送服务,特长协议数据单元。
3、在TCP/IP网络中实现OSI系统管理功能的方法:SNMP的管理信息库MIB主要是根据协议分组的,并没有按照OSI的系统管理功能域分类。
4、 SNMP的局限性:
没有按OSII系统管理功能域分类
管理对象功能方面并没有统一的分类标准。
MIB对象驻在各种代理系统中,如何合理地分布各种管理对象。
不是每个代理实现所有的MIB对象
第六章 Windows和SNMP
NT指定了远程过程调用和系统管理服务(SMS)标准,作公司专用网络管理平台。后来微软推出TCP/IP 32协议族是包含了一个SNMP服务选件,可以安装在NT服务器或工作站上,接收和发送SNMP请求、响应和陷入。
6.1 Windows SNMP服务的基本概念
1、 SNMP代理和陷入服务的概念:SNMP管理站和代理功能,包括发送和接收陷入的能力。
2、 Win 95只支持SNMP代理功能。
3、 所谓服务是一种特殊的WIN32应用软件,他通过Win32 API与NT服务控制管理器(SCM)接口,一般在后台运行。作用是监视硬件设备和其他系统进程,提供访问外围设备和操作系统辅助功能。系统服务在系统启动时或用户登录时自动开始,用户退出或系统关机时停止运行。SNMP服务就是Win32应用软件。
4、 SNMP服务包括两个应用程序:SNMP代理服务程序Snmp.exe和SNMP陷入服务程序SNMPPTRAP.EXE。
5、 代理服务程序Snmp.exe 接收SNMP请求报文,根据要求发送响应报文,能对SNMP报文进行语法分析,ASN.1和BER编码/译码,也能发送陷入报文,并处理与WinSock API的接口。
6、 SNMPPTRAP.EXE监听发送给主机的陷入报文,然后把其中的数据传送给SNMP管理API。Win 95没有陷入服务文件。
7、 NT的SNMP代理服务是可扩展的,允许动态的加入或减少MIB信息。这就意味着程序员不必修改和重新编译代理程序,只需要加入或删除一个能处理指定信息的子代理就可以。微软把这种子代理叫做扩展代理,它处理私有的MIB对象和特定的陷入条件。
8、 SNMP API是微软为SNMP协议开发的应用程序接口,是一组用于构造SNMP服务、扩展代理和SNMP管理系统的库函数。
9、 SNMP服务的安装、配置和测试:SNMP服务向其他NT网络服务一样,{wy}差别是必须先安装TCP/IP32协议栈。
10、 SNMP服务的安装配置和测试方法
NT安装:登录超级用户,控制面板、服务条、添加、列表中选择SNMP服务选项、确定
95安装:95安装光盘中\ADMIN\NETTOOLS\SNMP下有一个自解压文件SNMPZP.EXE,执行,产生一些文件,控制面板,网络,配置,添加,选择网络组件、服务,磁盘安装snmp.inf
配置:修改属性
测试:SNMPUTIL:snmputil[get|getnext|walk]agent-address community oid[oid…]snmputil trap
用GetRequest查询变量sysDest:SNMPUTIL get189.112.208.25 public 1.1.0
用GetNextRequest查询变量sysDest:SNMPUTIL getnext189.112.208.25 public 1.1
用GetNextRequest查询非MIB-2变量:SNMPUTIL getnext189.112.208.25 public .1.3.6.1.4.1.77.1.3
用walk遍历MIB-2系统组变量:SNMPUTIL walk189.112.208.25 public 1
用walk遍历MIB-2子树:SNMPUTIL walk189.112.208.25 public .1.3.6.1.4.1
测试SNMP陷入服务:SNMPUTIL trap,在另一个窗口中:SNMPUTIL getnext189.112.208.25 fred 1.1;由于团体名认证出错,在陷入窗口中出现一个陷入认证:snmputil:trap generic = 4 specific = 0 from 189.112.208.25
测试冷启动陷入:保持监听陷入,停止SNMP服务,在启动SNMP服务,陷入窗口收到由扩展代理发出的冷启动陷入:snmputil:trap generic = 1 specific = 0 from 189.112.208.25
6.2 SNMP应用程序接口(领会)
1、 SNMP API由4部分组成:扩展API、管理API、实用程序API、服务API。
2、 扩展API的概念:4个函数组成,SNMP服务和扩展代理DLL使用这些函数交换数据。
3、 管理API概念:7个函数组成,管理应用程序调用这些函数发送请求,接受响应和陷入。
4、 使用程序API:14各函数,分为存储器分配和数据管理两个组。
6.3扩展代理的实现(综合应用)
1、 建立扩展代理动态链接库的方法
4个函数中snmpEetensionInit(扩展代理初始化和MIB对象注册)、snmpEetensionQuery(处理Get,GetNext,Set请求)、snmpEetensionTrap(从扩展代理收集Trap数据)出现在每一个扩展代理中,snmpEetensionInitEx(提供多个MIB对象注册)是任选的。
当扩展代理被SNMP服务装入后,首先调用入口函数,然后调用snmpExtensionInit(或snmpEetensionInitEx)完成必要的初始化功能。
n DDL入口函数:DLLmain实现
BOOL WINAPI Dllmain(HANDLE hDLL,DWORD dwreason,LPVOID lpReserved)
{
BOOL bReturn=TRUE
Switch (dwReason) 交换参数dwReason
{
case DLL-PROCESS-ATTACH: ;如果为DLL-PROCESS-ATTACH
ghDll=hDll;
ghEvent=CreatEvent(NULL,**ULSE,**LSE,NULL);
if(ghEvent= =NULL) ;如果初始化失败
bReturn=**LSE; ;DLL的装入夭折入口函数返回值**ULSE。
break;
case LL-THERAD-ATTACH: ;如果不是DLL-PROCESS-ATTACH
break; ;DllMain的返回植被系统忽略
case LL-THERAD-DETACH:
break;
case DLL-PROCESS-DETACH: ;当扩展代理被卸载时,值为。。。
CloseHandle(ghEvent); ;关闭句柄,释放内存
break;
default:
break;
}
return(bReturn);
}
n 初始化函数:DLL装入成功后就调用SnmpExtensionInit函数进行初始化操作。如果DLL中没有这种初始化函数,则SNMP服务就在系统事件记录中写入一条消息,以后不再调用该扩展代理。
如果两个函数DLLmain和SnmpExtensionInit调用成功,SNMP服务就检查代理中是否有SnmpExtensionInitEx函数,如果有,则SNMP服务就反复调用这个函数,每次登记一个MIB子树,直到所有扩展代理支持的MIB子树登记完毕,SnmpExtensionInitEx返回**LSE为止。
SnmpExtensionQuery的作用是处理请求报文中的变量绑定对,生成应答报文(GetResponse)中的变量绑定对,并决定错误状态值。
2、 安装、启动、测试扩展代理的方法:综合前面内容
3、 MIB数据库的实现方法:将MIB数据库文件(. MIB)组织成一维数组,每个元素是结构类型MIBVARS。
6.4 陷入的实现(领会)
1、 陷入的设计方法
代理的作用是检测陷入事件,收集陷入数据,发送陷入消息等。
陷入事件可分为两类:但状态事件,多状态事件。单状态事件:如用户击键,输入口令,SNMP报文认证失败,数据被修改等可以用计数器跟踪的单状态事件;多状态事件:被监视的变量值在多个状态之间变换。
陷入的设计关系到两个决策问题:哪些事件可以引起陷入;陷入报文中应该包含哪些数据。
如果基于已有的MIB,则可陷入事件都已确定了。如果对于企业专用MIB则要根据企业标准或设备特点决定。
陷入一般要分优先级别,区分通知性陷入和灾难性陷入。对于掉电等陷入具有高优先级。
陷入报文时轻量级的,值传达必要的管理信息。有效地管理模式应该是陷入制导的轮询。陷入可能是很紧急的报警,同时收集陷入数据不能占用太多的CPU时间,所以只要把必要的信息发送给管理站。
陷入信息的归宿是管理站的陷入记录,管理站通常有一个叫做陷入管理员的进程,负责把接收到的陷入信息写进陷入记录。同时陷入的格式也要充分考虑到信息的大小。
2、由扩展代理支持陷入的方法:用扩展代理实现陷入关系到两个函数snmpExtensionInit和snmpExtensionTrap。SnmpExtensionInit调用函数CreateEvent产生一个事件,用于把它支持的陷入句柄通知SNMP服务。如果失败返回**LSE。SnmpExtensionTrap为一个陷入收集数据,这些数据来自全局变量。
3、 事件检测方法:主动轮询和被动等待
4、 陷入的触发条件
6.5 SNMP管理应用程序接口(综合应用)
1、 微软 MIB编译器的作用:是把人工可读的MIB模块转换成程序可读的数据格式,产生的二进制文件MIB.BIN由管理应用程序使用。
2、 管理API头文件的内容和作用:管理API使用的参数和数据类型包含在头文件MGMTAPI.H中。内容包括:
#include<snmp.h>
#include<winsock.h>
#ifdef-cplusplus
extrn”c”
#endif
3、 管理API的功能
n snmpMgrOpen:发送之前调用它打开SNMP代理的连接 ,句法如下:
LPSNMP-MGR-SESSION SNMP-FUNC-TYPE SnmpMgrOpen(代理地址,代理域,超时时间,重复次数),如
LPSNMP-MGR-SESSION lpSession
lpSession =snmpMgrOpen(“128.128.128.1”,”public”,1400,2)
n snmpMgrclose:关闭代理连接管套
BOOL SNMP-FUNC-TYPE SnmpMgrClose(LPSNMP-MGR-SESSION lpSession)
n snmpMgrRequest:这个函数可以发送Get,Getnext和Set请求报文。该函数是异步操作。
句法如下:
SNMPAPISNMP-FUNC-TYPESNMPSnmpMgrRequest(lpSession,ASN-RFC1157-GETERQUEST,&VBList,nErrorStatus,nErrorIndex)
n snmpMgrStrToOid:利用MIB.bin中数据把对象标识符转变成等价的AsnObjectIdentifier类型。BOOL SNMP-FUNC-TYPE sNMPMgrStrToOid(
LPSTR pString,
AsnObjectIdentifier pOid
n snmpMgrOidToStr: 与前一函数功能相反。
n snmpMgrGetTrap:SNMP接收的陷入报文交给这个函数,他被陷入服务周期的调用,以便轮训需要接收的陷入报文。
n snmpMgrTrapListen:在陷入服务和管理API之间建立命名管道,使的管理应用可以接受陷入报文。
6.6网络管理应用程序设计(综合应用)
1、 管理应用程序类型
2、 windows 环境下管理应用程序实现方法
已投稿到:
郑重声明:资讯 【2010年03月21日】由 发布,版权归原作者及其所在单位,其原创性以及文中陈述文字和内容未经(企业库qiyeku.com)证实,请读者仅作参考,并请自行核实相关内容。若本文有侵犯到您的版权, 请你提供相关证明及申请并与我们联系(qiyeku # qq.com)或【在线投诉】,我们审核后将会尽快处理。
—— 相关资讯 ——