SNMP网络管理协议

转载 2007年09月13日 15:34:00
SNMP网络管理协议在通信设备中使用得很广,大部分的通信设备的网管接口都支持SNMP标准协议。最近在实际工作做有所接触,下面就说说自己开发过程中的问题和心得。
    一般来讲SNMP由网管终端(如PC上的NMC)和设备中的Agent组成,也就是通常所讲的上位机与下位机。我的工作住要是PC部分的网管的开发。目前我所知道的开源的SNMP开发包有SNMP++和NET-SNMP两个,SNMP++是由HP公司人员开发的,后来公开了源代码,我就是用的SNMP++。NET-SNMP最初是由美国卡内基梅龙大学开发的,后来也成为了一个开源项目。
    要开发SNMP方面的程序就必须要对SNMP协议有基本的认识,SNMP主要由MIB,SMI等部分,MIB就是对每一个被管理对的标识,而SMI则定义了管理的数据编码实现,这些内容都可以在ISO的RFC文档中找到,这就不多说了,看书来得更快。SNMP利用UDP协议来传输数据包,主要有GetRequest报文、GetNextRequest报文、GetResponse报文、SetRequest报文和TRAP报文五种。
    SNMP++是用C++编写,整个库的框架很全,支持SNMPV1、SNMPV2、SNMPV3等版本,全部采用面向对象化设计类结构,使用起来很方便。SNMP++可以网上很多地方下载到,下载后要先编译,有动态DLL和静态LIB两种。编译的时候要注意路径的设置,否则编译是通不过的,多设置一下。下面就是一个GetRequest的简单例子
 GenAddress address("192.168.10.169"); //Agent的IP地址
 if ( !address.valid()) {    
  MessageBox("Invalid Address or DNS Name ");//IP地址有效性检查
  return;
 }
     Oid oid("1.3.6.1.4.1.10811.1.5.1.1.10.1.4");//MIB对象  
 if ( !oid.valid()) {   
  MessageBox("Invalid Oid, " );
  return;
 }
 snmp_version version=version1;//SNMP版本号,这里是V1   
 int retries=1;//UDP包重发次数,默认值为1        
 int timeout=400; //超时时间
 OctetStr community("public");//读访问串
 OctetStr wrCommunity("public");//写访问串
 int status;
 Snmp snmp( status);        
 if ( status != SNMP_CLASS_SUCCESS) {//创建SNMP会话
  MessageBox("SNMP++ Session Create Fail, " );
  return ;
 }
 Pdu pdu;//够造一个PDU报文                    
 Vb vb;                     
 vb.set_oid( oid);                 
 pdu += vb;                         
 CTarget target( address);//设置网管目标           
 target.set_version( version);         
 target.set_retry( retries);          
 target.set_timeout( timeout);        
 target.set_readcommunity( community);  
 target.set_writecommunity( wrCommunity);
   if (( status = snmp.get( pdu,target))== SNMP_CLASS_SUCCESS) {//GetRequest操作
  pdu.get_vb( vb,0);
  MessageBox( vb.get_printable_oid());//返回的MIB对象
  MessageBox(vb.get_printable_value());//返回的MIB对象的值(以字符串形式出现)
 }
 else {
  MessageBox( "SNMP++ Get Error");
  if ( status == SNMP_CLASS_ERR_STATUS_SET)//出错
   status = pdu.get_error_status();//打印出错原因
  MessageBox(snmp.error_msg( status));
 }
   SNMP++对各种操作都提供了阻塞和非阻塞操作,阻塞操作要等AGENT返回值或则超时后才返回,而非阻塞则可以立即返回。在实际中要根据情况选择采用哪一种, 非阻塞操作中要加snmp.eventListHolder->SNMPProcessPendingEvents()函数来获取事件。
    有了基本的操作后,网管的主要工作就是对AGENT数据定时的采集,然后分析数据,产生设备告警。一直以来对管理很多设备时,数据采集速度就很慢,找不到很好的解决办法,有待讨论。
 

SNMP简单网络管理协议能干么

作为一名网络顾问或网络管理员,在你安装完网络并且设置了用户帐号与应用程序之后,你的工作并没有完成。你的下一个职责就是网络管理,它就好比是一场永远也不会结束的战斗一样。      目前存在着两种类型...
  • seaos
  • seaos
  • 2011年12月05日 20:02
  • 1790

【TCP/IP详解】第25章 SNMP: 简单网络管理协议

第25章 SNMP:  简单网络管理协议 基于T C P / I P的网络管理包含两个部分:网络管理站(也叫管理进程, m a n a g e r)和被管的网络单元(也叫被管设备)。被管设备端和管理相...

网络管理协议(SNMP)的介绍

内容提要:网络管理协议(SNMP)的介绍,简单网络管理协议(SNMP)是最早提出的网络管理协议之一,它一推出就得到了广泛的应用和支持,特别是很快得到了数百家厂商的支持,其中包括IBM,HP,SUN等大...

SNMP(简单网络管理协议)介绍

提供:ZStack云计算 系列教程本教程为如何利用SNMP实现网络监控与管理系列三篇中的第一篇。内容介绍作为系统管理员,我们的主要工作就是收集来自服务器与基础设施的准确信息。目前多种工具都能够帮助我们...

SNMP简单网络管理协议

SNMP是基于TCP/IP协议族的网络管理标准,是一种在IP网络中管理网络节点(如服务器、工作站、路由器、交换机等)的标准协议。SNMP能够使网络管理员提高网络管理效能,及时发现并解决网络问题以及规划...

浅谈SNMP简单网络管理协议报文格式详解--理论篇

随着网络技术的飞速发展,网络的数量也越来越多。而网络中的设备来自各个不同的厂家,如何管理这些设备就显得十分的重要,snmp就是为了有效的管理这些设备而诞生的协议。...

简单网络管理协议(SNMP)

作为一名网络顾问或网络管理员,在你安装完网络并且设置了用户帐号和应用程式之后,你的工作并没有完成。你的下一个职责就是网络管理,他就好比是一场永远也不会结束的战斗相同。    目前存在着两种类型的网络管...
  • yaomoon
  • yaomoon
  • 2014年04月16日 18:23
  • 944

SNMP:简单网络管理协议(一)

1.引言 基于TCP/IP的网络管理包含两个部分:网络管理站(也叫管理进程,manager)和被管的网络单元(也叫被管设备)。被管的设备种类繁多,例如:路由器、X终端、终端服务器和打印机等。这些被管设...
  • j00362
  • j00362
  • 2017年04月21日 08:48
  • 201

SNMP: 简单网络管理协议

本文摘自:http://blog.csdn.net/chinayaosir/article/details/3048501 1 引言 随着网络技术的飞速发展,网络的数量也越来越多。 而网络中的设...

SNMP-简单网络管理协议简介

基于 TCP/IP 的网络管理包括两部分:网络管理站 (manager) 和被管理的网络单元(被管设备)。这些被管设备的共同点就是都运行 TCP/IP 协议。管理进程和代理进程之间的通信有两种方式,一...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:SNMP网络管理协议
举报原因:
原因补充:

(最多只允许输入30个字)