读书频道 > 网站 > 网页设计 > 深入理解Net-SNMP
1.3.3 SNMP的功能
15-09-06    下载编辑
收藏    我要投稿   

本文所属图书 > 深入理解Net-SNMP

本书是首部从实战的角度讲解Net-SNMP开发的书籍。本书从网络管理概念开始,到MIB的开发设计,最后到使用Net-SNMP开发网络管理应用,实现了由网络管理理论到实践的落地。它有以下几个特点:书中内容由项目而生,以立即去当当网订购
SNMP的功能,也就是网络管理的功能,读者应该已基本了解。我们需要掌握Agent设备当前的状态、参数信息及配置情况;当定义的重要事件发生变化时,Agent设备能主动“认错”。对于这些需求的实现,也就是SNMP中具体的操作了,其包括以下内容。
 
读取类命令:Get系列命令,即NMS发出请求,获取Agent的管理信息。
 
设置类命令:Set命令,即NMS将报文中携带的数据写入Agent中。
 
告警功能:Trap系列,Agent主动向NMS发出告警/事件报文的信息。
 
这些命令及功能是网络管理中最常见的操作命令及功能,在下面更进一步的解释中,在这个层面,MIB中的管理对象一般以OID这一具体的形式称呼和表示。
 
1.Get操作
 
顾名思义,Get操作是NMS主动发起的操作。在发出的报文中除了携带Get请求标志外,还包括了待请求OID名称和值对,并以这种名称和值对的绑定形式实现管理对象信息的传递。当然,Get操作中OID对应的值为NULL。否则,就不对应了。Get请求并不能一次获取所有待查询对象的信息,一般一次Get操作只获取一个管理对象。虽然这样设计简单,但是当查询的信息量大时其效率是不高的。实际上,一条报文中可以包括多个MIB对象的变量绑定,以这种方式可以实现一次查询多个管理对象,不过会受限于报文的长度,报文的长度建议不要超过484个字节。
 
2.Get-Next操作
 
Get-Next操作与Get操作功能类似,不过有不同之处。从字面意思上去理解是获取下一对象的信息,也就是说查询的信息并不是报文中绑定的OID信息而是该对象的下一个OID的信息(如果下一个OID信息是可读的)。SNMP中Get-Next是按照字典序的深度优先搜索算法实现的,如图1-8右侧图所示。
 
 
什么是字典序?首先,OID实际上是以点分十进制表示,其类似于IP地址,如,1.3.6.1.2.3.100。OID在MIB浏览器中以直观的树形结构表示,点越多表示树形越深,如图1-8左侧图所示。
 
字典序即是按照树形生长和数字的升序排序的,其涉及以下两个问题:
 
1)请求的OID是叶子节点(没有枝,位于末端,其代表具体的管理对象,如节点A~G)。
 
2)请求的OID不是叶子节点(为该级的父节点,如节点5~8)。
 
对于问题(1),按照深度优先搜索,需要从该节点向上回溯到上级父节点,在确定的回溯深度下,直到该父节点具有子节点(或没有节点了则结束),然后从该节点获取实例值。按照图中MIB节点的信息,假设节点8为(单索引MIB)表格,且有两行实例(每个节点有两个值,分别为.1、.2),当Get-Next作用于5.8.1.1.2,即F节点的第2个实例时,则实际返回的是5.8.1.2.1节点的实例,即G节点实例第一个实例。
 
对于问题(2),则简单些,直接返回该父节点下面的子节点,即按字典序排在第一个的子节点的值。按照图中MIB的节点信息,当报文携带的OID为5.6.1.0则返回的是下一个节点的信息5.6.2.0,也就是B。其实际效果同Get报文中携带5.6.2.0的返回结果。实际应用中叶子节点的实例表示方式是(即Get具体的值)该节点OID加上后缀.0。表格对象与其类似,不过稍微有点儿特殊,表示方式是该OID加上“.行实例.0”(行示例数值表示第几行的意思),多维表格则是多个行实例,按点分方式生长,最后补0表示具体实例。如对于二维表格,“.行实例1.行实例2.0”。
 
在实际应用中,它可能是最常用的功能或命令。对其原理的掌握非常有利于调试,笔者曾经在调试过程中对所打印的信息摸不着头脑!现在,把图1-8中的OID实例按照字典序排序后的结果,如表1-1所示,应该可以看出眉目了。
 
 
读者是否发现在读取表格中有什么规律?按照Get-Next的操作,如图1-9所示。


 
我们发现,获取信息是按照列的方式进行的,即先读取完F列,再读取G列。如果需要按行读取,可以参考Get一次获取多个OID的方法,即在Get-Next中绑定多个OID,这些OID需要按照某行和列的顺序排好。如,获取F、G列的第2行,需要绑定F第一列第一行的OID,和第二列第一行的OID,才能一次获取第二行。
 
最后,请思考有了Get请求后,为什么还要设计Get-Next请求呢?一般情况下,具有完全责任的NMS,应该清楚Agent中所有的MIB信息。如果NMS只掌握部分MIB,这样根据Get-Next请求的特性,可以发现未知的节点信息。这种假设或许概率上不值得说书布道。但还有一种情况,那就是Get-Next请求的特性也可以轻松地实现对表内容的遍历。初始OID为表头OID,通过Get-Next不断地获取实例,当发现下一OID已越过表头OID,则表明表的遍历已经结束,开始进到其他的节点中。这种实现机制可作为NMS端SNMP程序设计时的参考。
 
SNMP v2版本中新加入了Get-Bulk操作,实际效果是多个Get-Next操作的集合,以提高网络效率。其具体的实现是,除提供一组OID变量的绑定外,还提供一个最大重复数的参数——max-repeaters,表示可以返回的最大节点数信息,以及一个不重复数non-repeaters,表示OID中不进行后续OID信息的获取,即对前non-repeaters个OID执行Get-Next操作。比如共有N个OID,则前non-repeaters个OID执行Get-Next操作,剩下(N个max-repeaters)的OID最多返回后续max-repeaters的节点信息。
 
在上述表格中,假设Get-Bulk绑定了F、G两列,且最大重复数为2,则可以实现请求一次返回整个表格的内容,实际上就是把max-repeaters设置为表对象中的行数。所以,Get-Bulk常用来获取表对象中的实例信息。如果只绑定一个OID,最大重复数为1,实际上就是Get-Next的操作了。
 
3.Set操作
 
Set操作是对具有可写权限的OID进行参数的设置操作。以实现对设备的参数管理、配置、控制等。同样在Set操作中也可以绑定多个OID信息,与Get操作绑定变量的不同是,Set中需要绑定对应OID的待设置的值。Set操作成功改变对象的值后,会引起什么变化,完全由应用程序自己决定。既可以是改变了代理设备运行的物理参数,又可以是触发代理设备进行日志的备份或清理,还可以是业务需求下的任一动作,等等。
 
4.Get-Response
 
Get-Response顾名思义是潜意识中理解它时就停止吧!Get-Response不仅仅是Get请求的响应,而是对NMS的Get和Set两类命令的响应。根据命令的不同和命令中的参数不同,相应的返回变量绑定的信息以及错误状态信息(表明命令执行成功或失败)等。
 
5.Trap系列
 
Trap是Agent向NMS主动报告重要事件的机制。对于这种报告,NMS无须对Agent进行响应。Trap字面含义为陷进,也可以理解为事件、告警或通告。Trap可分为两大类:通用类和(企业)自定义类。通用类为协议中的标准Trap,包括coldStart(0)、warmStart (1)、linkDown (2)、linkUp (3)、authenticationFailure (4)、egpNeighborLoss (5)、enterpriseSpecific (6)。括号中的数字为该Trap的标号。SNMP v2引入SNMP v2Trap、notification(SNMP v3支持)、Inform(SNMP v3支持),后者用于管理站之间的相互通告。
 
Trap信息中的内容表明了“何时、何地、何事”,主要包括以下4个部分:
 
什么地点——发送陷进的Agent端标识信息,主要是IP地址和系统类型。
 
什么时间——此处应理解为Agent上一次初始化网络到该Trap发送时的累积时间,实际上就是系统启动时间。
 
什么事件——以一个标识符标识事件,由NMS和Agent约定,一种事件对应一个标识符。
其他信息——这里指的是其他节点信息的绑定,用于传送更多的附加信息。如当发送流量过高的Trap时,附带占用流量前3位的IP地址信息。
 
Trap的应用场景:一般情况下,NMS负责其名下各个站点信息的轮询,不过当管辖的Agent过多而且每个Agent信息量又很大时,NMS一遍轮询下来负担过重,且不能保证其对各Agent的实时查询,甚至是不现实的。不过当引入Trap机制后,管理站能够在降低网络和系统开销的情况下实现设备的管理。它是如何实现的呢?比如设计好一个事件,该事件是向NMS传达信息的“使者”,一旦该“使者”到达NMS,NMS则对产生事件的站点进行相应的查询动作,以这种回调和低开销的方式实现对设备的主动查询、信息入库等,这使得网络管理具有某种自动化。
 
当然,NMS还能产生其他的动作。如对于“注册”好的某个事件,NMS收到Trap后,可以通过邮件、短信等方式通知设备管理或维护人员实现主动报警。这种实现对重要的设备,如UPS、网关等核心设备具有重要的意义。
 
到此,读者应该对“简单”的网络管理协议有了较直观的认识了,SNMP的功能,如图1-10所示。
 
回顾一下Agent和NMS各自的功能:Agent主要负责信息的上传,而NMS除了具有SNMP协议基本的功能外,一般还具有对已发送和接收的信息进行日志记录、通告消息的记录和管理、完善配置的功能,并能提供图形化的配置和管理界面。日志记录一般记录了诸如用户获取和设置的操作历史记录、系统状态变化及更新等内容;通告消息一般记录了网络实体(如网关)主动上报的通告类信息,同时解析事先约定好的通告消息,按通告类型,告警级别分门别类的加以呈现。管理站还具有一定的主动性,根据管理站的配置情况,当某类事件发生时,主动采取相应的措施,如发邮件或短信。
 
 
更为完善一些的管理站还能提供整个网络拓扑结构的图形化呈现、动态监控和告警管理、日志分析及报表功能。这为网络管理员监控网络运行和诊断网络故障提供了更有力更便捷的支持。
 
正是因为SNMP具有简单管理的特点,使得SNMP广泛应用于IP网络上的网络设备,常见的有路由器、交换机、集线器、服务器等,同时随着嵌入式移动开发的兴起,SNMP也将逐渐应用于移动智能设备。
点击复制链接 与好友分享!回本站首页
分享到: 更多
您对本文章有什么意见或着疑问吗?请到论坛讨论您的关注和建议是我们前行的参考和动力  
上一篇:1.3 功能
下一篇:1.5 小结
相关文章
图文推荐
JavaScript网页动画设
1.9 响应式
1.8 登陆页式
1.7 主题式
排行
热门
文章
下载
读书

关于我们 | 联系我们 | 广告服务 | 投资合作 | 版权申明 | 在线帮助 | 网站地图 | 作品发布 | Vip技术培训
版权所有: 红黑联盟--致力于做最好的IT技术学习网站