740 likes | 937 Views
计算机网络管ç†. ï¼ç¬¬ 5 ç« ç®€å•ç½‘络管ç†åè®® SNMPV2. 第 5 ç« . 5.1 SNMP çš„æ¼”å˜ 5 .2 网络安全问题 5.3 管ç†ä¿¡æ¯ç»“æž„ 5.4 管ç†ä¿¡æ¯åº“ 5.5 SNMPv2 å议和æ“作 5.6 SNMPv2 的实现. 5.1 SNMP çš„æ¼”å˜. SNMP v1 版本有很多缺陷 , å› æ¤ SNMPV2 å¢žåŠ äº†å¾ˆå¤šåŠŸèƒ½ , 以弥补这些缺陷 . SNMP çš„å‘展历程 :
E N D
计算机网络管理 -第5章 简单网络管理协议SNMPV2
第5章 • 5.1 SNMP的演变 • 5.2 网络安全问题 • 5.3 管理信息结构 • 5.4 管理信息库 • 5.5 SNMPv2协议和操作 • 5.6 SNMPv2的实现
5.1 SNMP的演变 • SNMP v1版本有很多缺陷,因此SNMPV2增加了很多功能,以弥补这些缺陷. • SNMP的发展历程: [1]当初提出SNMP的目的作为网络管理协议发展阶段之间空缺的一种临时性措施.其所有的优点是:简单,容易实现,而且基于人们熟悉的SGMP(Simple Gateway Monitoring Protocol)协议,已有相当的操作经验. [2]1988年确认网络管理标准开发的双轨制策略:SNMP可以满足当时的网络管理的需要,用于管理配置简单的网络,并将来可以过渡到新的网络管理标准. [3]OSI网络管理(CMOT)作为长期的解决办法,可以应付未来更加复杂的网络配置,提供更全面的管理功能.
[4]双轨制存在的问题: 原来的想法是SNMP的MIB是OSI MIB的子集,这样就可以顺利地过渡到CMOT(CIMS/CMIP over TCP/IP).由于OSI是面向对象的模型,而SNMP使用的是简单的标量MIB,这样SNMP过渡到OSI管理比较困难.;同时OSI标准的管理管理产品的开发进度很慢,而SNMP的产品得到很多用户认可. [5]SNMP v1的缺点(见P82): 没有实质性的安全设施;无数据源认证功能;不能防止偷听;SNMP的团体名在对付日益猖獗的网络入侵方面基本无用;许多制造商不得不废除SET命令,以免被入侵.
[6]S-SNMP标准:为了修补SNMPV1的安全问题,1992年7月出现了一个新标准-S-SNMP,该协议主要在安全方面增强了功能:用报文摘要算法MD5保证数据完整性和进行数据源的认证;用时间戳对报文排序;用DES算法提供数据加密功能.(S-SNMP没有改进SNMPV1在功能和效率方面的缺陷)[6]S-SNMP标准:为了修补SNMPV1的安全问题,1992年7月出现了一个新标准-S-SNMP,该协议主要在安全方面增强了功能:用报文摘要算法MD5保证数据完整性和进行数据源的认证;用时间戳对报文排序;用DES算法提供数据加密功能.(S-SNMP没有改进SNMPV1在功能和效率方面的缺陷) [7]SMP(Simple Management Protocol)协议:扩充SNMP的几个方面的内容:增加了适用范围;保持SNMP的简单性,速度和效率更高;安全方面结合了S-SNMP提供的安全功能;兼容性上既能运行在TCP/IP上,又能适合OSI系统或其它通信协议的网络.决定以SMP为基础,开发SNMPV2版本. [8]1996年完成SNMPV2版本的开发,在RFC发布时,人们发现其有很大的安全缺陷因此决定放弃安全功能,把增加的其它功能作为新标准颁布,并保留SNMPV1的报文封装格式,叫作基于团体名的SNMP(Community-based SNMP),简称SNMP V2C
[9]SNMPv2的新功能: 管理信息结构的扩充 管理站和管理站之间的通信能力(有些系统既是管理站又是代理) 新的协议操作 具体来说:SNMPV2对定义对象类型的宏进行了扩充,引入了新的数据类型,增强了对象表达能力;吸收了RMON中有关表行增加和删除的约定,提供了更完善的表操作功能;SNMPV2还提供定义新的MIB功能组,包括关于协议操作的通信消息,以及有关管理站和代理系统配置的信息;在协议操作方面,引入了两种新的PDU,分别用于大块数据的传送和管理站之间的通信.
5.2 网络安全问题 5.2.1计算机网络的安全威胁 计算机和网络需要如下3个方面的安全性: [1]保密性(Secrecy):计算机中的信息只能由授予访问权限的用户读取.(包括显示,打印) [2]数据完整性(integrity):计算机系统中的信息资源只能被授予权限的用户修改. [3]可利用性(availablity):具有访问权限的用户在需要时可以利用计算机系统中的信息资源. 所谓对计算机的安全威胁就是破坏这三方面的安全性要求,从计算机网络提供信息途径来分析计算机的安全威胁,从源到目标的信息流动的各个阶段可能受到的威胁: [1]信息从源到目标正常传送. [2]中断(interruption):信息传送中断,信息变得无用或无法利用,这是对可“利用性”的威胁(例如:破坏信息存储硬件,切断通信线路,侵犯文件管理系统)
源 目标 源 目标 源 目标 信息正常流动 中断 窃取 源 目标 源 目标 篡改 假冒 [3]窃取(interception):未经授权的入侵者访问了信息资源,这是对“保密性”的威胁.入侵者可以是个人,程序,计算机;也可以通过搭线路捕获线路上的传送数据,或者非法拷贝文件或程序. [4]篡改(midification):未经授权的入侵者访问了信息资源,而且篡改了信息,这是对数据“完整性”的威胁(例如:改变文件数据,程序及修改网上传输的报文). [5]假冒(fabrication):未经授权的入侵者在系统中加入了伪造的内容,这也是对数据“完整性”的威胁.(例如:向用户发虚假消息,在文件中插入伪造的记录等).
5.2.2 计算机网络管理中的安全问题: • 前一节中安全问题对网络管理系统同样存在,在这里我们特别要注意如下3方面安全问题对网络管理系统的威胁: [1]伪装的用户:没有得到授权的一般用户企图访问网络管理应用和管理信息. [2]假冒的管理程序:无关的计算机系统可能伪装成网络管理站实施管理功能. [3]侵入管理站和代理之间的信息交换:网络入侵者通过观察网络活动窃取了敏感的管理信息,更严重的危害是可能篡改管理信息,或中断管理站和代理之间的通信. • 网络的安全设施由一系列安全服务和安全机制的集合组成.包括如下3个方面:安全信息的维护;资源的访问控制;报文的加密.
[1]安全信息的维护: • 记录系统中出现的各类事件(用户登录,退出,文件复制); • 追踪安全审计试验,自动记录有关安全的重要事件,例如:非法用户持续试验不同口令企图登录等. • 报告和接收侵犯安全的警示信号在怀疑出现威胁安全的活动时采取防范措施.(例如封锁被入侵的用户帐号,或强行停止恶意程序的执行) • 经常维护和检查安全记录.进行安全风险分析,编制安全评价报告. • 备份和保护敏感和重要的数据 • 研究每个正常用户的活动形象,预先设定敏感的资源的使用形象,以便检测授权用户的异常活动和对敏感资源的滥用行为.
[2]资源访问控制: 访问控制服务是安全服务的一种,包括认证服务和授权服务,以及对敏感资源访问的授权的决策过程.访问控制服务的目的是保护各种网络资源,这些资源中与网络管理有关的是: • 安全编码 • 源路由和路由记录信息 • 路由表 • 目录表 • 报警门限 • 记帐信息 [3]报文加密 安全管理能够在必要时对管理站和代理之间交换的报文进行加密,安全管理也能够使用其他网络实体的加密方法;同时它能改变加密算法,具有密钥分配能力.
发送端 接收端 偷听者 解密算法D 明文 明文 加密算法E 密文C=E(K,P) 明文P=D(K,C) 密钥K 密钥K 5.2.3 安全机制: 安全机制一般分类方法:保密/认证/非否认/数据完整性4个方面. [1]数据加密(保密通信的基本手段) • 数据加密:防止未经授权的用户访问敏感信息的手段,它是信息安全方法的基础. • 密码学(cryptography):研究数据加密的科学,它包括密码编码学和密码分析学 • 密码编码学:设计密码体制的科学 • 密码分析学:破译密码的科学 • 一般的保密通信模型(E/D加解密算法公开,而密钥K是秘密的)
经典的3种加密方法: 第一种:替换加密(substitution),用一个字母替换另一个字母,这种方法保留明文的顺序,可根据自然语言的统计特性破译. 第二种:换位加密(transposition):按照一定的规律重排字母顺序. 例如: 密钥 C I P H E R(字母顺序如下) 顺序 1 4 5 3 2 6 明文 a t t a c k b e g I n s a t f o u r 密文: aba cnu aio tet tgf ksr 第三种:一次性填充(one-time pad):把明文变为比特串(例如ASCII编码),选择等长随机BIT串作为密钥,对二者按位异或,得到密文.从理论上是不可破,但密钥无法记忆,必须写在纸上,不可取.
Plaintext 初始排列 16次变换 反向排列 Ciphertext • 现代密码体制(基本方法还是替换和换位,但是采用更加复杂的加密算法和简单的密钥,而且增加了对付主动攻击的手段:随机冗余信息,以防止加入制造假消息;加入时间控制信息,以防止旧消息冲发等) 第一种:DES(Data Encryption Standard):1977年1月NSA(National Security Agency)根据IBM的的专利技术Lucifer制定了DES,对每个块进行19次变换(替换和换位),其中16次变换由56位的密钥的不同排列形式控制(IBM使用的是128位密钥),最后产生64位的密文块。 第二种:IDEA(International Data Encryption Algorithm):1990年瑞士科学家Lai X.J.和Massey建议的标准算法:使用128位的密钥,分成64位块,经8轮迭代加密。IDEA可以硬件实现或软件实现。
第三种:公钥加密算法:DES和IDEA算法使用时加密密钥和解密密钥是相同。1976年斯坦福大学Diffie和Hellman提出了使用不同的密钥进行加密和解密的公钥加密算法。设P文明文,C为密文,E为公钥控制的加密算法,D为私钥控制的解密算法。则:满足如下条件:1)D(E(P))=P 2)不能由E导出D 3)选择明文攻击(选择任意的明文-密文以确定未知的密钥)不能破解E. 注意:加密时计算C=E(P);解密时计算P=D(C). 加密和解密是互逆,用公钥加密,私钥解密,实现保密通信;用私钥加密,用公钥解密,可以实现数字签名。 第四种:RSA(Rivest,Shamir and Adleman,1978年)算法:它是一种公钥加密算法。 1)选择两个大素数p和q(大于10100) 2)令n=p*q和z=(p-1)(q-1) 3)选择d和z互质 4)选择e使e*d=1(mod z) P被分成k位的块,k是满足2k<n的最大整数,于是有0<=P<n.加密时计算C=Pe(mod n),这样公钥为(e,n).解密时计算P=Cd(mod n),即私钥为(d,n)。 RSA算法的安全性是基于大素数分解的困难性。
Bob Alice 第三者:为Alice打工,获得报酬;Bob银行,Alice为银行顾客;第三者利用偷听和拷贝它们之间的转帐问题交换的报文,进行重放,获得更多得报酬。 问题:会受到重放攻击。 A,KA(B,KS) KB(A,KS) KDC [2]认证(防止主动攻击的方法):认证分为实体认证和消息认证两种。实体认证是识别通信对方的身份,防止假冒,可以使用数字签名的方法;消息认证是验证消息在传送或存储过程中没有被篡改,通常使用消息摘要的方法。 第一种方法:大嘴青蛙认证协议(wide-mouth frog)是发明者Burrows在学校里的绰号。该算法采用密钥分发中心KDC,图5.5所示。其中A和B分别代表Alice和Bob的名字,KA和KB分别表示Alice和Bob与KDC之间的共用密钥。 认证过程:1)Alice向KDC发消息{A,KA(B,KS)},说明自己要与Bob通信,并指定与Bob会话的密钥为KS.(其中消息中的(B,Ks)是用KA加密了,所以第三者不能了解消息内容)。 2)KDC知道了Alice的意图就可以构造一个消息{KB(A,KS)}发给Bob。 3)Bob用KB解密后得到A,KS,然后就可以与Alice用KS会话了。
第二种方法:Needham Schroeder认证协议,它是利用多次提问-响应协议,可以对付重放攻击。其关键是在每次会话都有一个新的随机数在其作用。步骤如下: 1)Alice向KDC发送报文1,表明与Bob通信。(报文中加入由Alice指定的随机数RA) 2)KDC以报文2回答,KDC回答中也有RA,它的作用是保证2是最新的,不是重放的。报文2中的KB(A,KS)是KDC交给Alice的入场券,其中由KDC指定的会话键KS,并用Bob和KDC之间的密钥加密,Alice无法打开,只能原样发给Bob. 3)报文3在发给Bob的报文中,Alice指定了新的随机数RA2,但是Bob发出的报文4中不能返回KS(RA2),而必须返回KS(RA2-1),因为KS(RA2)可能被偷听了。 此时,Alice可以肯定对方是Bob; 4)报文4中有Bob指定的随机数RB,Alice返回RB-1,证明这是对前一报文的应答。这样双方都确认对方的身份,就可以用KS会话了。
1 Bob Alice KDC RA,A,B 2 KA(RA,B,KS,KB(A,KS)) 3 KB(A,KS),KS(RA2) 4 KS(RA2-1),RB 5 KS(RB-1) Needham Schroeder认证协议框图:
1 Bob Alice EB(A,RA) 2 EA(RA,RB,KS) 3 KS(RB) 第三种方法:基于公钥的认证 1)Alice给Bob发出EB(A,RA),该报文用Bob的公钥加密。 2)Bob返回EA(RA,RB,KS),用Alice的公钥加密。(Alice 确认对方是 Bob) 前两个报文中分别有Alice和Bob指定的随机数RA和RB,因此能排除重放的可能性,双方都用对方的公钥加密,用自己的私钥解密,相对较简单。 3)KS(RB)返回给Bob,Bob确认对方是Alice
[3]数字签名 与人们手写签名一样,数字签名系统向通信双方提供服务,使得A向B发送签名的消息P,以便: 1)B可以验证详细P 确实来源于A 2)A以后不能否认发送过P 3)B不能编造和改变消息P 两种签名系统: 第一种签名系统:基于密钥的数字签名 假设:BB是Alice和Bob共同信赖的仲裁机构。KA和KB分别是A和B与BB之间的密钥,而KBB是只有BB掌握的密钥,P是A发给B的消息,t是时间戳。 1)BB解读了A 的报文{A,KA(B,RA,t,P)}以后产生了一个签名消息KBB(A,t,P),并装配成发给B的报文{KB(A,RA,t,P,KBB(A,t,P))}. 2)B可以解密该报文,阅读消息P,并保留证据KBB(A,t,P)。 3)由于A和B是通过中间人通信,因此不必怀疑对方身份。 4)由于有证据KBB(A,t,P)的存在,A不能否认发过消息P;B也不能改变得到的消息P 因为BB仲裁时可以当场解密KBB(A,t,P),得到发送人,发送时间和原来的报文P
Alice Bob BB A,KA(B,RA,t,P) KB(A,RA,t,P,KBB(A,t,P)) 第一种签名系统:基于密钥的数字签名流程:
发送方 接收方 Alice’s私钥 DA Bob’s公钥 EB Bob’s私钥 DB Alice’s公钥 EA P EB(DA(P)) DA(P) DA(P) 第二种签名系统:基于公钥的数字签名 利用公钥加密算法的数字签名系统: 1)如果A方否认,B可以用DA(P),并利用A的公钥EA解密得到P,从而证明P是从A发过来; 2)如果B篡改了P,当A要求B出示原来的DA(P),B拿不出来 P
[4]消息摘要(验证消息的完整性) 消息摘要主要用于差错控制的报文检查和根据冗余位检查消息是否受到干扰的影响。主要方法是:计算密码检查和,即固定长度的认证码,附加在后面发送,根据认证码检查是否被篡改。 假设:M是可变长的消息,K是发送者和接受者共享的密钥,设MD=CK(M),即消息摘要(Message Digest). 通常实现的方案是对任意长明文M 进行单向Hash变换,计算固定长度的BIT串,作为消息摘要。对Hash函数h=H(M)的要求如下: 1)用于任意大小的数据块(实践和应用的需要) 2)能产生固定大小的输出(实践和应用的需要) 3)软硬件容易实现(实践和应用的需要) 4)对于任意m找出x,满足H(x)=m,是不可计算。(单向性) 5)对于任意x,找出y<>x,使得H(x)=H(y)是不可计算(防止伪造攻击) 6)找出(x,y),使得H(x)=H(y)是不可计算。(对付生日攻击)
Alice Alice Bob Bob BB A,KA(B,RA,t,P) M,CK(M) KB(A,RA,t,P,KBB(A,t,MD(P))) 消息摘要方案一 加速数据签名算法二:
消息摘要算法三MD5:(该算法是Ron Rivest的一系列Hash函数中的第5个,因此叫MD5)其基本思想是:用足够复杂的方法把消息bit充分“弄乱”,使得每个输出的bit都受到每一个输入bit的影响。步骤如下: 1)分组和填充:把明文消息按512位分组,最后要填充一定长度的1000…,使得 消息长度L=448(mod 512) 2)附加:最后加上64bit的消息长度字段,整个明文刚好是512的整数倍。 3)初始化:置4个32bit长的消息长的缓冲区ABCD分别是: A=01234567 B=89ABCDEF C=FEDCBA98 D=76543210 4)处理:用4个不同的基本逻辑函数(F,G,H,I)进行4轮处理,每一轮ABCD和当前512位的块位输入,处理后送入ABCD(128位)。产生128位消息摘要。见图5.12 P130
5.3 SNMP V2的管理信息结构 SNMPV2 的管理信息结构在SNMP V1的基础上进行了扩展,提供更精致严格的规定,规定了新的管理对象和MIB库,在SNMP V2中引入了4个关键概念: • 对象的定义 • 概念表 • 通知的定义 • 信息模块
5.3.1 对象的定义 SNMPV2也是用ASN.1宏定义OBJECT-TYPE表示管理对象的语法和语义,但是SNMPV2 的OBJECT-TYPE增加了新的内容: [1]数据类型:SNMPV2中增加了Unsigned32和Counter64。其中Counter32和Counter64是计数器,只能增加,不能减少,当增加到264-1和232-1时,回零。而且在SNMPV2规定,计数器没有定义初始值,所以计数器单个值时是没有意义,只有连续两次计数器得到的增加值才有意义。 而Gauge32在SNMPV2规定其最大值为小于232的任意正整数MAX,而在SNMPV1中规定其最大值为232-1;同时SNMPV1明确当计数器到达最大值,自动减少。(在SNMPV1中规定到达最大值232-1后该值锁定在最大值。) [2]UnitsPart:在SNMPV2中的OBJECT-TYPE宏定义中增加了UNIT子句。该子句用文字说明与对象有关的度量单位。如时间,长度等。(秒,毫秒)
[3]MAX-ACCESS子句:类似于SNMPV1的子句,说明最大的访问级别。在SNMPV2中放弃了write-only类;增加了有关概念行访问类型read-create,表示可读、可写、可生成;还增加了accessible-for-notify访问类,与陷入有关。[3]MAX-ACCESS子句:类似于SNMPV1的子句,说明最大的访问级别。在SNMPV2中放弃了write-only类;增加了有关概念行访问类型read-create,表示可读、可写、可生成;还增加了accessible-for-notify访问类,与陷入有关。 SNMPV2的5种访问级别从小到大: Not-accessible (不可存取) Accessible-for-notify(通报) Read-only(只读) Read-write(可读可写) Read-create(可读可创建) [4]STATUS子句:SNMPV2中去掉了SNMPV1中的optional和mandatory,剩下:current(表示当前标准中有效);obsolete(表示不必实现该状态);deprecated(表示对象已经过时)
5.3.2表的定义和操作 [1]表的定义 根据SNMPV2规范,表是行的序列,而行是列对象的序列. • 禁止删除和生成行的表:这种表最高访问级别是-read-write,大多情况下,该表由代理控制,表中只包含read-only的对象. • 允许删除和生成行的表,这种表开始时可能没有行,由管理站生成和删除.行数由管理站和代理改变. • 索引定义:SNMP V2 与SNMP V1的主要区别是前者增加了任选IMPLIED的修饰符。假定一个对象标识符是y,索引对象是i1,i2,i3,…,in.则对象y的一个实例标识符是:y.(i1).(i2)….(in),每个索引对象i的类型可能是:
1)整数:每个整数作为一个子标识符(仅仅对非负整数)1)整数:每个整数作为一个子标识符(仅仅对非负整数) 2)固定长度的字符串:每个字节编码为一个子标识符 3)有修饰的IMPLIED的变长字符串:每个字节编码为一个子标识符,共n个子标识符 4)无修饰符IMPLIED的变长度字符串:第一个子字符串是n,然后是n个字节编码的子标识符,共有n+1个子标识符。 5)有修饰符IMPLIED的对象标识符:对象标识符的n个子串 6)无修饰符IMPLIED的对象标识符:第一个子标识符为n,然后是对象标识符的n个子串。 7)IP地址:由4个子标识符组成。
表索引的例子(宏定义见P134) 1)表的的索引是:petType和petIndex 2)第二行第四列的对象实例标识符是:A.1.4.3.68.79.71.5 3)第三列第六行的对象实例标识符是:A.1.4.7.W.O.M.B.A.T.4 (A-Z ASCII码分别是68,69,…,93)
概念行的扩展:利用AUGMENTS子句代替INDEX子句表示概念行的扩展。见P135 图5.17,该表(moreTable)是由petTable扩充的表。 • 基本概念行:在扩充表中,ARGUMENTS子句中的变量(petEntry)叫做基本概念行。 • 概念行扩展:包含AUGMENTS子句的对象(moreEntry)叫做概念行的扩展。 • 作用是:在已定义表对象的基础上通过增加列对象定义新表,而不必从头开始定义。 • SNMP V2与RMON一样允许使用不属于概念行的外部对象作为概念行的索引,在这种情况下,不能把索引对象限制为不可访问。
[2]行的生成和删除 • 概念行的状态列:允许生成和删除行的表必须有一个列,其SYNTAX,MAXACCESS子句的值是read-write,其状态可取如下值: 1)active(可读写):被管理设备可以使用的概念行 2)notInService(可读写):概念行存在由于其它原因不能使用 3)notReady(只读):概念行存在,由于没有信息而不能使用 4)createAndGo(只写不读):管理站生成一个概念行实例时先设置成该状态,生成结束自动变成“active” 5)createAndWait(只写不读):管理站生成一个概念行实例时先设置成该状态,生成结束不会自动变成“active” 6)destroy(只写不读):管理站需要删除所有的概念行实例时设置成这种状态 以上,除了“notReady”外其它5种状态是管理站可以用set命令设置状态;前3种是可以响应管理站的查询而返回的状态;图5.18 P138定义了该表。
概念行的生成: 第一步:选择实例标识符,针对不同的索引对象可以考虑用不同的方法选择实例标识符。 1)如果标识符语义明确,则管理站根据语义选择标识符(例如:路由器地址等) 2)如果标识符仅仅用于区别概念行,则管理站扫描整个表,选择一个没用使用的标识符 3)由MIB模块提供一个或一组对象,辅助管理站确定一个未用的标识符。 4)管理站选择一个随机数作为标识符 第二步 方法一:管理站通过事务处理产生和激活概念行 1)利用get命令检查要生成的概念行的所有列 2)如果返回一个值,说明其它管理站已经产生该行返回“第一步” 3)如果返回“noSuchInstance”,说明代理实现了该列的对象类型,而且该列在管理站的MIB视图中是可访问。如果该列的特性是“read-write”,则管理站必须用set操作提供这个列对象的值。
4)如果返回“noSuchObject”,说明代理没有实现该列的对象类型,或者该列在管理站的MIB视图中是不可访问,则管理站不能用set操作生成该列对象的实例。4)如果返回“noSuchObject”,说明代理没有实现该列的对象类型,或者该列在管理站的MIB视图中是不可访问,则管理站不能用set操作生成该列对象的实例。 5)确定列后,管理站发出相应的 set操作,并且置列状态为“createAndGo”,代理根据set 提供的信息,以及实现专用的信息,设置列对象的值,正常时返回noError响应,并且置状态为“active”.如果代理不能完成必要的操作,则返回“inConsistentValue”, 管理站根据返回的信息确定是否重发set操作 方法二(第二步中):管理站通过与代理协商,合作生成概念行 1)管理站用set命令置状态列为createAndWait, 2)如果代理不接受该操作,返回“wrongValue”,管理站必须用单个set操作(事务处理)为所有的列对象列对象提供值 3)如果代理执行该操作,生成概念行,返回noError,状态列被置为notReady(代理没用足够的信息使得概念行可用),或notInService(代理有足够的信息使得概念行可用)。 第三步:初始化非默认值对象 管理站用get操作查询所有列,以确定是否或需要设置列对象的值。
1)代理返回一个值,表示代理实现了该列的对象类型,而且能够提供默认值,如果该列的访问特性是“read-write”则管理站可用set操作改变该列的值。1)代理返回一个值,表示代理实现了该列的对象类型,而且能够提供默认值,如果该列的访问特性是“read-write”则管理站可用set操作改变该列的值。 2)代理返回“noSuchInstance”,说明代理实现了该列的对象类型,该列也是管理站可访问的,但代理不提供默认值。如果列访问的特性是“read-write”,则管理站必须以set操作设置该列对象的值。 3)代理如果返回noSuchObject说明代理没有实现该列的对象类型,或者该列是管理站不可访问的。则管理站不能设置该对象的值。 如果状态列的值是notReady,则管理站应该首先处理其值为“noSuchInstance”的列,完成后状态列变成“notInService”,再继续。 第四步:激活概念行 管理站对所有的列对象实例完成后,用set命令置状态列对象为“active”; 1)如果代理有足够的信息使得概念行可用,则返回“”noError 2)如果代理没有足够的信息使得概念行可用,则返回“notInService” 到此,行生成过程完成。
行生成时要解决几个问题: 1)表可能很大,一个set PDU不能容纳行中的所有变量 2)代理可能不支持表定义中的某些对象 3)管理站不能访问表中的某些对象 4)可能有多个管理站同时访问个表 5)生成操作不能被任意改变 6)代理在行生成之前要检查是否出现“tooBig”错误(单个响应PDU不能容纳所有列变量的值) 7)概念行中可能同时有“read-only”和“read-create”对象 • 实现的系统特点: 1)应该容许在简单代理系统上实现 2)代理在生成行的过程中不必考虑行之间的语义关系 3)不应为了生成行而增加新的PDU 4)生成操作应该在一个事务处理中完成。 5)管理站可以无条件接受列对象的默认值 6)应该允许管理站查询列对象的默认值,并自主决定是否重写列对象的值。 7)有些表的索引可取唯一的任意值,对于这种表应该容许代理自主选择索引值。(可以减少管理站的负担)
概念行的挂起: 当概念行处于active状态时,如果管理站希望概念行脱离服务,以便进行修改,则可以发出set操作,把状态列由“active”置为“notInService”时,有两种情况: 1)若代理步执行该操作,则返回“wrongValue” 2)若代理执行该操作,则返回“noError” • 概念行的删除: 管理站发出set命令,把状态置为“destroy”,如果这个操作成功,概念行立即被删除。
5.3.3通知和信息模块 • 通知:SNMP V2提供了通知类型宏定义NOTIFICATION-TYPE,用于定义异常条件下出现时snmp v2实体发送消息。NOTIFICATION-TYPE宏表示在图5.19 P139中。 任选的OBJECT子句定义了包含在通知实例中的MIB对象序列。 当SNMPV2实体发送通知时,这些对象的值被送到管理站。 DESCRIPTION子句说明了通知的语义 • 信息模块:共3种(详细见下一节) 1)MIB模块:包含一组有关的管理对象的定义 2)MIB的依从性声明模块:使用MODULE-COMPLIANCE和OBJECT-GROUP宏说明有关管理对象实现方面的最小要求 3)代理能力说明模块:用AGENT-CAPABLITIES宏说明代理实体应该实现的能力。
5.4 管理信息库 SNMP V2 MIB扩展和细化了mib-2中定义的管理对象,又增加了新的管理对象。分别介绍SNMP V2的各个功能组 5.4.1系统组: 1)增加了对象资源一个标量对象sysORLastChange和表对象sysORTable. 2)标量对象sysORLastChange记录着对象资源表中描述的对象实例改变状态的时间。 3)表对象sysORTable是一个只读的表,每个动态配置的对象资源占用一个表项 见图5.20 P141
5.4.2 SNMP组: 有些对象被删除,增加了一些对象 见图5.21 P141与P80 图3.11比较 增加: [1]snmpSilentDrops(31)由于响应报文太长无法应答而丢弃的请求报文总数 [2]snmpProxyDrops(由于委托代理传送报文失败无法应答而丢弃的请求报文数。
5.4.3 MIB对象组: 该组包含的对象与管理对象的控制有关,分为2个分组. [1]snmpTrap分组: 1)snmpTrapOID:这是正在发送的陷入或通知的对象标识符,这个变量出现在陷入PDU或通知请求PDU的变量的第二项。 2)snmpTrapEnterprise:这是与正在发送的陷入有关的制造商的对象标识符,SNMP V2的委托代理把一个RFC1157的PDU映象到SNMPV2陷入的PDU时,这个变量出现在变量绑定表的最后。
[2]snmpSet分组: 仅仅一个对象snmpSerialNo,该对象用于解决set操作中可能出现的两个问题。 1)一个管理站可能向同一个MIB对象发送多个set操作,保证这些操作按照发送的顺序在MIB中执行时必要的,即使在传送过程中次序发生了错乱。 2)多个管理站对MIB的并发操作可能破坏数据库的一致性和精确性。 解决该问题的方法: snmpSerialNo语法是TestAndIncr(文字约定为0…2147483647之间的一个整数),假设其值为K: 1)如果代理收到的set操作之置snmpSerialNo的值为K,则这个操作成功,响应PDU中返回的K值,这个对象的新值增加为(K+1)(mod 231) 2)如果代理收到一个set操作,置这个值不等于K,则这个操作失败,返回错误的值inconsistentValue。
snmpMIBObjects(snmpMIB 1) snmpTrap(4) snmpTrapOID(1) snmpTrapEnterprise snmpSet snmpSerialNo • 具体操作情况: Set具有操作的原子性:要么全部完成,要么一个也不做。 1)当管理站需要设置一个或多个MIB对象的值,它首先检索snmpSet对象的值;然后管理站发出set请求PDU,变量绑定表种包含要设置的MIB标量及其值,也包含它索引到的snmpSerialNo的值;如果代理受到的set操作的snmpSerialNo的值等于原来的的K,则成功 2)如果多个管理站发出set请求具有相同的snmpSerialNo的值,则先到的set成功,并且snmpSerialNo值增加,后来的操作就会失败。
5.4.4 适合性声明 适合性声明是具体实现的限制,是具体实现必须达到的最小级别。有4个宏定义: 1)OBJECT-GROUP(对象组宏):说明一组有关的对象,如果制造商实现了某种对象,可以用宏定义说明。 2)NOTIFICATION-GROUP(通知宏):说明一组已经实现的通知。 3)MODULE-COMPLIANCE(模块依从性宏):说明对MIB模块实现的最小要求。 4)AGENT-CAPABILITIES(代理能力宏):定义了一个代理实现的能力。 [1]对象组宏:一组管理对象是适合性的基本单元;对象组宏提供了一种用以说明已经实现的管理对象的系统性方法。SNMPV2规定:实现一个对象仅仅当可以对“读操作”返回一个精确的值,对于“写访问”的对象,实现应该在响应set操作时适当地影响被管理实体;如果代理系统没有实现一个管理对象应该对协议操作返回错误,如“noSuchObject”,不允许代理系统对它没有实现的对象返回任何值。 (见P143 图5-23对象宏定义)
[2]通知组宏: 通知组宏用与对象组宏类似,该宏中的NOTIFICATION子句列出了必须实现的所有通知对象,每个通知对象由NOTIFICATION-TYPE宏定义。(见P 144,图5.24) [3]模块依从性宏: 所谓MIB模块的依从性是对实现MIB模块的最低要求。例如那些功能组是必要(必须实现),那些功能组是任选,以及对管理对象的语法要求和访问类别要求等。 (见图5.25 P145)(代理必须实现MANDATORY-GROUP中功能组;及支持基于团体名的认证) 1)其中包含一个或多个模块子句,每个模块子句指明一个包含在依从性要求的模块; 2)在必要性模块中包含mandatory-group子句,这个子句列出所有必须实现的功能组。 3)对于那些属于条件必要的或无条件人任选的功能组可以用GROUP子句说明. 4)DESCRIPTION部分描述有关条件,例如实现了某种协议,或者其他有关功能组 5)OBJECT子句说明对管理对象的详细语法要求。
[4]代理能力宏: 1)代理能力宏用于定义SNMPV2代理系统的能力,即代理对MIB功能支持的程度。例如:对于某些对象的语法或访问级别所限制或扩大,甚至对于object-type定义的对象类型的细化和改变,都可以用代理宏表示。 2)形式化的代理能力定义可以促进和优化管理站与代理之间的互操作性。 3)如果管理站有对代理系统能力的要求,那么就可以根据该优化使用自己的资源,以及代理和网络的资源。 4)代理能力宏定义(例子:见图5.26 P146-148,定义了IP,TCP,UDP,EVAL模块) • PRODUCT-RELEASE:子句说明代理系统的版本; • DESCRIPTION:子句包含对代理系统的文字描述。 • SUPPORTS:从该子句开始对每个MIB模块定义(先列出模块名字,然后用INCLUDES列出代理实现的MIB功能组) • CreationPart:部分说明在概念行生成过程中把列状态对象置为active之前应该用set操作设置列对象的名字。 • DefValPart:提供对象的默认值。
5.4.5 接口组 [1]MIB-2 的接口组有较多的缺陷: 1)接口编号:MIB-2 接口组定义变量ifNumber作为接口编号,而且是常数,对于允许动态增加、删除接口网络的协议是不合适。 2)接口子层:有时需要区分网络层下面的子层。(MIB-2没有提供) 3)虚电路问题:对应一个网络接口可能有多个虚电路。 4)不同传输特性的接口:MIB-2接口表记录的内容只适合基于分组传输的协议,不适合面向字符的协议(如PPP),也不适合面向BIT的协议(例如DSL)和固定长度的传输协议(例如:ATM) 5)计数长度:当网络速度增加,32位的计数器经常溢出回0。 6)接口速度:现有的网络速度已超过定义的最大值。 7)组播、广播分组计数:MIB-2不区分 8)接口类型:ifType 9)ifSpecific问题:
ifMIBObjects(snmpMIB 1) ifXTable(1) 接口扩展表 ifStackTable( 2)接口堆栈表 ifTestTable(3) 接口测试表 ifRcvAddressTable(4) 接口接收地址表 [2]对MIB-2 的接口组修改方案 1)ifIndex:不再代表一个接口,而是用于区分接口子层,不再限制ifIndex的值在1和ifNumber之间。 2)废除了有些用处不大的变量(例如:ifInNUcastPkts,ifOutNUPkts),其作用已经被扩展表中的新变量替换。 3)增加了4个新表:
4)接口扩展表:见图5,28 5)接口堆栈表:见图5.29 6)接口测试表:见图5.30 7)接口接收地址表:见图5.31