维普资讯 http://www.cqvip.com
网络技术 计算机与丽络剑额生活 基于SNMP的网络管理在Windows 系统中的实现 陈祖义华勇王培培 (空军第一航空学院基础部 河南 信阳464000) 【摘要】简单网络管理协议(sNMP)已成为网络管理事实上的工业标准,Windows 2000为基于SNMP的网络管理软件的开 发提供了一套API接口。本文先讨论了网络管理的一些基本概念,然后重点报告了SNMP网络管理在Windows系统中的实现. 最后对SNMP的不足之处进行了探讨。 【关键词】网络管理 SNMP 管理信息库(MI13) 协议数据单R.(PDU) WinSNMP 1 S册网络管理概述 代理实际上是被管网络实体上的一个进程,负责对。来自管理 工作站的信息请求和动作请求进行应答,并为管理工作站报 网络管理的基本目标是将所有的管理子系统集成在一 起,向网络管理员提供单一的控制方式。‘简单网络管理协议 SNMP是TCP/IP协议簇的一个应用层协议。SNMP由一系列 协议规范组成,它们提供了一种从网络设备中收集网络管理 信息的方法,主要包括管理信息结构SMI、管理信息库MIB和 管理协议SNMP等【”。 SNMP模型定义了大量的变量来描述网络上硬件及软件 的运行状态和统计信息。在SNMP中把这些变量叫做对象。网 络中的所有对象在管理信息库MIB中都有定义。管理信息结 构SMI定义了对象的格式、MIB资源的命名和表示。管理协议 SNMP定义了管理工作站与被管节点之间交换信息的方式。 SNMP管理模型采用客户机/服务器体系结构,如图1所 示,用来管理的工作站为客户端,设置了SNMP代理的被管节 点为服务器端。 告一些重要事件。 管理工作站与被管节点之间通过SNMP协议进行通信. 主要包括三种操作:Get操作执行管理站读取代理处的对象 值;Set操作执行管理站设置代理处的对象值:Trap操作执行 代理处向管理站报告重要事件121。 2 S舢网络管理实现的关键技术 SNMP在161、162端口通过oar传送SNMP协议数据单 元,在Windows 2000操作系统中提供了一套开发基于SNMP 的网络管理程序的接口,也就是WinSNMP接口。利用Win— Snmp接口可以方便、高效地开发Windows环境下的基于 SNMP的网络管理程序 。 2.1会话和异步模式 会话用来管理WinSNMP应用程序之间的连接,由Snm- pCreateSession或SnmpOpen函数创建。会话是资源管理的最 小单位,也是WinSNMP应用程序之间通信管理的最小单位。 一个好的WinSNMP应用程序应该使用会话结构逻辑地管理 它的操作,并将实现中的资源需求控制在最小。调用Snm— pCreateSession或SnmpOpen函数创建一个会话时,会返回一 个“session id”,这是一个句柄变量,WinSNMP用它来管理自己 的资源。应用程序最终要调用SnmpClose函数将会话释放。 图1 SNMP管理模型的体系结构 WinSNMP采用了异步消息驱动模式,消息驱动程序必须 响应各种重要事件,有些完全是异步关系。WinSNMP API中 管理工作站通常包括一个用于网络管理员监视网络的接 口;一组具有分析数据、发现故障等功能的程序;一个保存从 所有被管网络实体的MIB中抽取出的信息的数据库。 被管节点一般指安装了SNMP代理的网络实体。SNMP 定稿日期:2007—09-27 所有函数都有异步成分,有些是完全异步的。有三个非常重要 的异步函数:发送消息函数SnmpSendMsg、接收消息函数sn— mpR.ecvMsg和注册接收消息函数Snmpl ̄egister。WinSNMP的 整个编程模式就是基于异步的。 《计算机与厨络》2007年第19期 维普资讯 http://www.cqvip.com 络技术 、 2.2内存管理 先创建一个OID,命名为Oid。SnmpSetVb(m_hvbl,0,&Oid, WinSNMP包括三种不同的内存对象:句柄式资源、C风 NULL);创建好了变量绑定表后,调用SnmpCreatePdu函数创 格的字符皂和WinSNMP API结构类型。其中有五种句柄式 建协议数据单元,在这个函数中,,必须设定error index、er_ 资源的变量:HSNMP__SESSION会话句柄、HSNMP ENTITY ror._sU ̄s、request id参数,它们都与协议中相应的量对应。 网络实体句柄、HSNMP_CONTEXT上下文句柄、HSN—HSNMP_PDU m hpdu SnmpCreatePdu (session,SN— MPPDU协议数据单元句柄、HSNMP VBL变量绑定表句 MP_PDU_GET,NULL,NULL,NULL,m_hvb1); _柄。C风格的字符串主要是方便通用的字符串表示、Endty和 调用SnmpStrToContext和SnmpStrToEntity创建共同体 对象标识符对象之间的转换。WinSNMP中使用C风格字符 字符串和代理entity,调用SnmpSendMsg函数发送信息。Sn一 串的函数有:SnmpStrToEntiyt、SnmpEntityToStr、SnmpStr— mpSendMsg(session,NULL,hAgent,hView,m hpdu); ToOid、SnmpoidToS旺。C风格字符串的内存分配、管理和释 SnmpCreateSession函数是WinSNMP异步消息驱动模式 放完全由应用程序负责。 的一个关键,它的函数原型:HSNMP SESSION SnmpCreate— WinSNMP中有三种结构类型:smiOCTETS ̄smiOID、 Session(HWND hWnd,UINT wMsg,SNMPAPI_CALLBACK smⅣALuE。当一个应用程序得到一个srnjvALuE变量时,首 fCallback,LPVOID lpClientData);它提供了两种方式的异步消 先必须检查它的“s'I,nta)(,,成员,已决定怎样取到它的第二个成 息驱动,可以让WinSNMP在有响应消息到达时发送一个消 员。当“svI1ta)(,,成员变量显示“value,,值是一个smiOCTETS或 息给系统,也可以让它自动调用一个函数。第一种方式的实 s oID对象时,就应该考虑内存管理,当其作为输入参数时, 现:session SnmpCreateSession(m_hWnd,wMsg,NULL,NULL); 应用程序负责为变长对象分配内存;当其作为输出参数时,由 可以给消息wMsg创建一个消息处理函数,在这个函数里处 WinSNMP实现为变长对象分配内存H。 理消息的接收、信息的提取与处理等事务。WinSNMP接受响 WinSNMP应用程序必须负责释放所有通过调用w 一 应消息的步骤过程是调用SnmpR.ecvMsg函数接收数据,调用 SNMP API函数所分配的资源,主要有以T---ill函数:Sn— SnmpGetPduData函数从PDU中析取出数据,调用Snmp— mpFree释放Endty、Conn眦、Pdu、Vbl、Desc邱tor、snr叩c10se CountVbl获得变量绑定列表中变量绑定的个数,调用Sn一 关闭会话、snr叩aeanup 须在程序结束之前调用,释放所有 mpGetVb函数取得PDU变量绑定表中每个变量绑定的OlD 资源。应用程序使用上述的顺序来释放所有的WinSNMP资 及其对应的值,可以指明该变量绑定在变量绑定表中的位置。 源。 具体实现如下: 2.3 WinSNMP发送和接收消息 nit nCount SnmpCountVbl(varbindlist); WinSNMP发送请求消息的过程可以分为四个部分,主要 for(int nidex 1;i<=nCotmt;i++) 有:WinSNMP的初始化、PDUs的创建、发送信息以及资源的 SnmpGetVb(varbindlist,nidex,&Oid,Va1ue【i】); 释放。 其中,index指定了变量绑定的位置,value[i】表示接收到 WinSNMP的初始化包括:调用sn玎叩stanup函数启动 的OlD变量的值,是srniLPVALUE类型的,Oid表示接收到 WinSNMP;调用snr叩createSessi。n函数创建一个会话ses一 的变量绑定的OlD。对于value[i】,可以按照它的syntax成员, si。n;调用sn玎1psed e七fans血tM。de函数设置重传模式;调用 分别转换为字符串或整数类型。 SnmpSetRetry函数设置重传次数:调用SnmpSetTimeout函数 设置超时时间 。在创建PDU之前,必须先创建变量绑定表 3 一个基于SNMP的网络流量监视 (varb‘m弧协)。 器的实现 SnmpStrToOid函数创建读取对象的OlD.以下代码创建 对应于sysN枷。・O的OlD ̄ 管理信息库MIB的Inte以ce组的ifrabk表的mnocte协 。 u u oid; 和if。utoct。ts分别记录了对应的网络接口收到的和发送的总 LPcTs1R pStrNam “1・3・6・1・2・1・1・1 O”; 字节数嘲。设在t时刻inn。cte协值为IN1,if。ucocte协值为 snmps缸T。oid(ps七rr me,&oid) -0uT1:在t+T时刻mn。cte协值为IN2.if。utocte协值为 调用snr叩crea eVbl函数创建变量绑定表。 ouT2。则在T时间内对应接口接收字节的平均速率为: 一一 洲 i。 跏试’ NULL) 一IN2-IN1; ㈩ hSession是SnmpCreateSession的返回值。 发送字节的平均速率为: 调用SnmpSetVb函数往变量绑定表中添加变量绑定,需 / 2007年第19期《计算机与网络》 维普资讯 http://www.cqvip.com
溺络技术 计算机冀嬲络创额生活 OUT 2- OUT1 ——(2) … 【22】 Stallings William著,胡成松,汪凯译.SNMP网络管理【M】 北京:中国电力出版社.2001. m 因此,在相邻时间段0一T1,T1一T1+T2内的平均速率(接 收或发送)为v1,v2,则总的平均速率为: p】郑阿奇等.Visualc++实用教程【M】.北京:电子工业出版 社.2000. vlT l +v2 ̄ 711+ (3) 【4】吕俏等.SNMP网络管理协议及其在VC平台下的实现Ⅱ】. 计算机与通信.1999(12):53 ̄58. 【5】高宏等.Intemet网络管理协议——简单网络管理协议 所以可以定期采集ilfnOctets和ifOutOctets的值。并按照 上述(1)(2)(3)式计算出自监视时刻起相应接口的平均收发速 率,也可以计算出整个时间段的平均速率。网络流量监视器的 系统结构图如图2所示.其中节点信息包括节点的所有网络 接口的物理地址和与物理地址对应的IP地址。以列表的方式 (SNMP)Ⅱ】.数据通信,1999(1):35 ̄37. 【6田永强等.6】基于SNMP Agent扩展的服务器监控系统研究 与设计Ⅱ】.微计算机信息,2005(36):26—27. 显示给用户。以便用户选择相应的接口进行监视。用CDialog:: SetTimer0设置定时器,当主对话框收到WM_TIMER消息 时,将向监视的节点发送SNMP PDU GET请求,请求获得 相应接口的iflnOctets和ifOutOctets值。winsNMP反馈消息 到达时,主对话框调用接收例程,从返回的变量绑定标中分离 终端也强悍 STAR wT一5040“强劲"出击 记者从国内领先的终端厂商实达外设处获悉,国内首款 采用威盛C7平台的STAB.wT一5040系列万维Windows终 出所请求的数据,以及相应的OlD,并转换为适合向用户显示 的形式,然后用数字和曲线图的方式显示给用户。 端已于近日面市。作为2007年度的新品,STAR WT-5040尽 显“强悍动力”,通过融合威盛C7平台技术,突破传统w_m— dows终端CPU功能不足这一“瓶颈”,再现实达终端创新理 念。 据悉.此次实达外设推出的STAR.WT-5040系列,采用 嵌入式Windows CE.Net操作系统,支持通过微软公司的 R.DP v5.2协议及Citrix公司的ICA v7.00协议连接Windows 2003 Server终端服务器,可扩展Telnet应用,通过Telnet连接 图2 网络流量监视器的实现框图 UNIX主机。同时,也可以通过PXE远程引导技术完成无盘启 动,支持NOVELL无盘方式工作站进行远程登录服务器系 4结语 SNMP作为一个基于TCP/IP并在Internet互联网中应 用最广泛的网管协议,网络管理员可以使用SNMP监视和分 析网络运行情况.在Windows系统中也很容易通过编程来实 现基于SNMP的网络管理,并有很好的扩展性。但是SNMP 也有一些明显的不足之处,SNMP使用轮询方法采集数据,在 统。在功能上,由于所有的终端应用程序全部集中保存在服务 器端,客户端无需安装任何程序,即插即用,因此简化了操作、 维护过程.提高了系统安全,同时也大大降低了总体拥有成本 (TCO);在外观设计上,STAR.WT-5040系列紧跟时代信息 主流设计思维,尽显简约、新颖、时尚风采;此外,使用者还可 以免费享用由实达外设自主开发的多种产品,如实达UNIX 终端卫士软件,终端管理工具软件、多种汉字输入法等产品。 大型网络中轮询会产生巨大的网络管理报文。从而导致网络 拥塞;SNMP仅提供一般的验证,不能提供可靠的安全保证; 不支持分布式管理,而采用集中式管理。为此,IETF开发了 近年来,随着金融、电信、保险等行业信息化日趋向“大集 中化”方向发展.在安全、操作与成本上更占优势的终端产品 越来越得到市场的青睐,国内终端市场正迎来一个难得的“再 发展”机遇。作为国内老牌的IT厂商之一,实达外设无论是技 术、应用及理念都站在中国行业信息化的浪头,在终端领域, RMON用以解决SNMP在日益扩大的分布式互联中所面临 的局限性。 更是连续13年稳居市场销量第一的宝座。实达此次推出的功 参考文献 能强大的STAR.wT一5040系列Windows终端,无疑将大大 提高实达终端产品的竞争力,进一步巩固实达作为“终端王” 的市场地位。 【1】杨家海等、网络管理原理与实现技术【M】.北京:清华大学出 版社.2000. 、 《计算机与网络》2007年第19期