Tell Me More之使用入门_第1页
Tell Me More之使用入门_第2页
Tell Me More之使用入门_第3页
Tell Me More之使用入门_第4页
Tell Me More之使用入门_第5页
已阅读5页,还剩12页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、文档名称SNMP管理者程序详细设计文档编号版 本 号V1.0作 者刘丽娟项目名称介质转换器审 核承办单位巨龙信息技术有限责任公司批 准合作单位标 准 化日 期2002.2.19使用范围页数SNMP管理者程序详细设计巨龙信息技术有限责任公司文档文件名:SNMP管理者程序详细设计历史版本记录时间版本号修改人修改内容2002.2.19刘丽娟创建2002-7-5齐兵修改细节1、背景介质转换器设备的SNMP管理者程序和代理程序是介质转换器设备网络管理系统的重要组成部分, 本文档描述了该系统的管理程序的详细设计方案本文档的读者包括模块的开发人员、相关软件的设计和开发人员以及测试人员。主要介绍以下内容:SN

2、MP协议的基本知识, 介质转换器设备管理者端的设计实现方案。1.1 SNMP协议基础 1.1.1 SNMP的技术特点1.独立于下层传输协议。2. SNMP PDU中的共同体(community)域可用来标识不同的Agent,从而一个Manager可同时管理多个Agent。3.每个Agent独立维护有关被管理网络单元的对象,结构清晰,修改灵活。4. SNMP PDU在传送之前均经过ASN.1 BER编码,因而其格式和字节顺序与CPU类型、操作系统等因素无关。5.易于实现。开发SNMP是为了解决互联网管理问题。SNMP为局域网和广域网的节点设备提供了有效的监控手段。1988年以来,SNMP已经受到

3、了TCP/IP通讯领域的广泛接受,同时也扩展到其他领域。1.1.2 SNMP网络管理组成代理(AGENT) 网管平台 (NMS)网管协议(SNMP)管理信息库(MIB)代理是网络上一种可以被监视、控制和配置的节点,它会接受网管平台发来的命令(request)来操纵管理信息库并对此做出响应(response)。另外,代理还会主动向网管平台发送陷阱消息(trap)。SNMP包括下列三个组件:SNMP协议管理信息库管理信息结构一个网络管理协议可能需要大量不同的命令(例如:add route, delete route, chang interface address, examine address

4、等等),SNMP把所有的命令都转化为对某一个预定义对象的GET和SET操作。这意味着网管平台通过读取和设置某一对象的值来进行对代理的控制,而不是每一种操作有一个专有命令。例如,要关闭某一接口,网管平台就设置这个接口的接口状态的值为关闭(OFF)。这一方案将协议和协议所管理的对象相分开,这样规定的好处很明显:减少命令种类、增强扩展性。被协议所管理的对象数可随意增长。SNMP属于应用层协议,基于在传输层的UDP和网络层的IP协议。SNMP的命令,被称作协议数据单元(PDU), 实现了在管理者和代理之间的请求、响应和陷阱。SNMP将命令封装在消息报文中发送出去。管理者向UDP的161端口发送请求,代

5、理向UDP的162端口发送陷阱。下面是Snmpv1/v2c的命令集:CommandSender Description Get-requestManager Get valueGet-next-requestManager Get the next valueGet-bulk(未涉及)Manager Get many value (snmpv2c only)Get-responseAgent Return a valueSet-requestManager Set a valueTrap Agent Event notificationSNMP的消息及命令格式如下:版本号GET或SET请求、响

6、应命令团体字符串PDU类型请求序号错误状态错误索引对象1值1对象2值2变量绑定图3 SNMP消息及命令格式Snmpv1由RFC1155, RFC1157, RFC1212所定义。Snmpv2c在版本1的基础上增加了下列特性:支持get-bulk命令。扩展的错误码。扩展的陷阱消息。管理信息库定义了在AGENT中存储的具体的网络管理变量。管理信息结构(SMI)指明了这些变量是如何被定义和如何被标识的,并对各MIB变量类型作了限制。MIB变量名取自由ISO和CCITT所管理的分层结构的名空间中的对象标识符。对象均由数字序列命名。还有一种字符串序列的名字则具有更强的可读性。1.2术语和缩写词MIB:M

7、anagement Information Base,网管管理信息系统SNMP:Simple Network Management Protocol, 简单网络管理协议1.3参考资料1 RFC相应文档协议;2 MSDN在线帮助3 简单网络管理协议2、介质转换器网管总体描述总体设计内容主要介绍整个系统的硬件结构和软件模块及其所完成的管理功能。2.1系统的硬件结构整个硬件设备包括16个同等的转接板,每个设备板上又三个指示灯,分别表示是否激活,10M或100M,光口或电口。用不同的指示灯颜色标明。2.2系统软件结构本系统采用SNMP协议实现manager和Agent之间的通信。作为Manager的网

8、络管理工作站(NMS)执行管理应用程序,监测和控制Agent所代表的网元。网元可以是主机、网关、终端服务器等设备。Agent负责响应NMS的请求,Agent可以位于网元内部,也可以通过另一专用通信协议与后网元者相连,此时该Agent即为Proxy Agent。2.2.1系统的位置网络管理人员在对设备进行管理和维护的时候,需要通过网管平台,访问设备内部的信息。这需要位于网管主机的SNMP管理者程序与位于设备主控板中的SNMP代理程序相互通信来传递网管信息。SNMP管理者程序将管理员的命令封装在SNMP访问请求报文中,发给SNMP代理程序,SNMP代理程序根据收到的访问请求报文,对本地数据进行访问

9、,将访问结果以SNMP应答报文的形式返回SNMP管理者程序。同时,SNMP代理程序还会主动向SNMP管理者程序发送SNMP陷阱报文来通知网络管理者某些事件的发生。本系统中,SNMP的NMS应用程序通过采用VC 提供的SNMP Management API组件和/或Winsnmp API组件实现manager的开发,采用Tornado 2.0中提供的NMP组件实现代理程序的开发。有关代理程序的设计细节参见SNMP代理程序详细设计文档。本文将重点介绍采用VC提供的SNMP组件进行MANAGER程序开发的详细过程。2.2.2 网络管理功能由于本设备本身比较简单,所以完成的snmp网管功能也比较简单,

10、主要完成实时监控设备上各个板状态的功能。具体来说,可以完成动态扩展mib结构,设置被管设备的ip地址(可以管理整个网络上不同设备),设置被管community,设置查询system组,ip组,snmp组,以及与设备相关的属性。以MIB树形式对被管对象的相关信息进行浏览。以直观的方式显示设备上16块板的实时状态,同时显示各个板上具体状态(如是否在位,是否激活,10M或者100M,光口或者电口)节点的属性和状况;通过在管理信息库树状图形上选中不同的属性节点,然后选择get、getnext、set,取出相应的值。2.2.2.1配置管理配置管理部分完成的功能包括设置代理设备的IP地址,设置按照标准定义

11、的可设置的对象(例如system组中的syscontact等);同时可以扩展管理信息库的结构(mib结构用二进制文件保存在当地磁盘中)2.2.2.2故障管理通过实时监控由代理设备主动上报的陷阱及时发现网络故障(trap消息),分析原因并给出解决故障的建议性措施,保证网络的可靠性。可以解析标准rfc1215中定义的陷进,如冷起,热起,设置不可写的对象等,当然还可以完成分析和本设备相关的具体陷阱。2.2.2.3性能管理介质转换器没有性能管理的数据。2.2.2.4安全管理提供权限管理机制管理网络系统,维护网络数据的私有性,保护网络数据不被侵入者非法获得。能对网管系统的各类用户进行管理,根据用户的权限

12、授予不同的功能。本系统根据不同的community来区分可管理的不同的mib的映象。2.2.3 系统运行硬件环境 本系统设计实现的网管服务端,运行时最小的硬件配置要求为:l Intel® Pentium® III 500 MHz 处理器l 64 MB 内存l 网卡2.2.4 软件环境 按照本设计方案实现的网管管理端要求的操作系统为Microsoft® Windows 2000并配上SNMP服务。软件开发工具如表所示:表2 软件开发工具软件行为硬件环境使用工具(语言)说明管理端源代码开发PC平台Windows 2000Microsoft Visual Studio

13、VC+配置SNMP服务实现各模块代码程序运行PC平台Windows2000配置SNMP服务实现snmp的管理功能3、总体结构设计系统功能的实现基于windows 2000上已有的SNMP服务的基础上,开发管理端snmp的相应功能,其总体结构如图。Snmp管理端(用户界面)Winsnmp的API(包括SnmpStartup) Trap Get,set,getnext .被管设备被管设备被管设备被管设备被管设备被管设备 .用户界面可以通过设置不同的IP地址,选择不同的设备进行监控管理。程序运行状态为:对应snmpView类对应CReportwnd类用于上报陷阱的窗口对应MainView.类刷新各单

14、板的状态可扩展的MIB树下面对几个主要的类进行描述3.1 SNMP协议模块管理端与代理端的通信通过SNMP协议模块加以实现,在管理端,SNMP协议模块主要在类中加以封闭。所有和snmp协议相关的命令如接收和发送都是在这个类中完成的。include "winsnmp.h"class CSNMP1 public:CSNMP1(); CSNMP1();private:smiLPUINT32 nMajorVersion,nMinorVersion,nLevel,nTranslateMode;smiLPUINT32 nRetransmitMode;HSNMP_SESSION sess

15、ion;CString strErr;HSNMP_PDU m_hpdu; /用于存贮pdu单元。HSNMP_VBL m_hvbl;/用于存贮varbindlistpublic:int nCount;BOOL sessionID; /确定每次程序中只有一个sessionpublic:CreateSession(HWND hWnd,UINT wMsg);/为每个snmp命令构建sessionCreateSession_Trap(HWND hWnd,UINT wMsg);Send(LPCSTR address,const char* community/*,HSNMP_PDU pdu*/);Crea

16、tePdu(smiINT PDU_type, / PDU type smiINT32 request_id, / PDU request identifier smiINT error_status, / PDU error status, unless type is SNMP_PDU_GETBULKsmiINT error_index / PDU error index, unless type is SNMP_PDU_GETBULK/HSNMP_VBL varbindlist / handle to the variable bindings list );CreateVbl(LPCST

17、R name,smiLPVALUE pvalue);Register(); /用于注册snmp陷阱 Receive(LPTSTR *name,smiLPVALUE *value,smiLPINT PDU_type,char* pSrc);SetVbl(LPCSTR name);3.2 用于显示MIB树状结构的类该类实现管理信息库的树状显示,同时可以动态的扩充,每次构建的mib树可以保存在二进制文件中,在class CSnmp_cwdmView : public CTreeViewprotected: / create from serialization onlyCSnmp_cwdmView(

18、);DECLARE_DYNCREATE(CSnmp_cwdmView)/ Attributespublic:COAMDoc* GetDocument();/ Operationspublic:/ Overrides/ ClassWizard generated virtual function overrides/AFX_VIRTUAL(CSnmp_cwdmView)public:virtual void OnDraw(CDC* pDC); / overridden to draw this viewvirtual BOOL PreCreateWindow(CREATESTRUCT&

19、cs);virtual void Serialize(CArchive& ar);protected:virtual void OnInitialUpdate(); / called first time after constructvirtual BOOL OnPreparePrinting(CPrintInfo* pInfo);virtual void OnBeginPrinting(CDC* pDC, CPrintInfo* pInfo);virtual void OnEndPrinting(CDC* pDC, CPrintInfo* pInfo);/AFX_VIRTUAL/

20、Implementationpublic:virtual CSnmp_cwdmView();#ifdef _DEBUGvirtual void AssertValid() const;virtual void Dump(CDumpContext& dc) const;#endifprotected:HTREEITEM m_hItems100;int m_nIndex;/*void ReadTreeViewContent(CArchive& ar, CTreeCtrl& refCtrl);void RecursiveWriteItems(CArchive& ar,

21、 CTreeCtrl& refCtrl, HTREEITEM hItem);void WriteTreeViewContent(CArchive& ar, CTreeCtrl& refCtrl);*/ BOOL GetFullPath(HTREEITEM hItem,CString &str, CString &str_oid);enum recordRegular, recordData,recordPush, recordPop ;/ Generated message map functionpublic:void ReadTreeViewCont

22、ent(CArchive& ar, CTreeCtrl& refCtrl);void RecursiveWriteItems(CArchive& ar, CTreeCtrl& refCtrl, HTREEITEM hItem);void WriteTreeViewContent(CArchive& ar, CTreeCtrl& refCtrl);protected:/AFX_MSG(CSnmp_cwdmView)afx_msg void OnNewitem();afx_msg void OnDelete();afx_msg void OnSize

23、(UINT nType, int cx, int cy);afx_msg void OnSelchanged(NMHDR* pNMHDR, LRESULT* pResult);afx_msg void OnRButtonDown(UINT nFlags, CPoint point);afx_msg void OnLButtonDown(UINT nFlags, CPoint point);/AFX_MSGDECLARE_MESSAGE_MAP();#ifndef _DEBUG / debug version in snmp_cwdmView.cppinline CSnmp_cwdmDoc* C

24、Snmp_cwdmView:GetDocument() return (CSnmp_cwdmDoc*)m_pDocument; #endif/AFX_INSERT_LOCATION/ Microsoft Visual C+ will insert additional declarations immediately before the previous line.#endif / !defined(AFX_SNMP_CWDMVIEW_H_AD4137B9_AC01_4EBF_A1FB_907E9AF725FD_INCLUDED_)3.3用于实时显示各板状态的类(view)其中16块板都用p

25、icture控件表示,各指示灯可以用实时的数据进行一一对应class CMainView : public CFormViewprotected:CMainView(); / protected constructor used by dynamic creationDECLARE_DYNCREATE(CMainView)/ Form Datapublic:/AFX_DATA(CMainView)enum IDD = IDD_FORM_IMAGE ;CEditm_cIP;CStringm_IP;/AFX_DATA/ Attributespublic:/ Operationspublic:voi

26、d ResizeFill(CRect& rect,int flag);int status164; long id164; void GetStatus();/ Overrides/ ClassWizard generated virtual function overrides/AFX_VIRTUAL(CMainView)public:virtual BOOL Create(LPCTSTR lpszClassName, LPCTSTR lpszWindowName, DWORD dwStyle, const RECT& rect, CWnd* pParentWnd, UINT

27、 nID, CCreateContext* pContext = NULL);protected:virtual void DoDataExchange(CDataExchange* pDX); / DDX/DDV supportvirtual void OnDraw(CDC* pDC);/AFX_VIRTUAL/ Implementationprotected:virtual CMainView();#ifdef _DEBUGvirtual void AssertValid() const;virtual void Dump(CDumpContext& dc) const;#endi

28、f/ Generated message map functions/AFX_MSG(CMainView)afx_msg void OnClick();afx_msg void OnRefresh();afx_msg void OnTimer(UINT nIDEvent);afx_msg void OnChangeNewip();/AFX_MSGDECLARE_MESSAGE_MAP();3.4用于响应和snmp协议相关的相关消息函数最主要的是一个用户自定义的消息wMsg。在Mainfrm.h文件中定义。#define wMsg WM_USER+5用于响应由设备端发回的snmp数据包。void

29、 CMainFrame:OnRecv()smiLPINT PDU_type=new smiINT; char* pSrc =new char100;pSnmp.Receive(m_sOid,m_value,PDU_type,pSrc); /调用snmp类中接收snmp包的消息if (*PDU_type=SNMP_PDU_TRAP ) /判断是否为陷阱,如果是则在陷阱响应窗口中显示CString strHead;CTime NowTime;NowTime=CTime:GetCurrentTime();strHead = NowTime.Format("%Y-%m-%d %H:%M:%S

30、 ");this->m_wndReportBar.WriteReportLine(strHead+"接收陷进-from "),1);this->m_wndReportBar.WriteReportLine(pSrc,1);delete pSrc; for(int i=1;i<=pSnmp.nCount;i+) 解析snmp数据报中的变量列表switch(m_valuei->syntax)case SNMP_SYNTAX_INT: /case SNMP_SYNTAX_INT32:smiINT sNumber;sNumber=m_valuei-

31、>value.sNumber;nIpin=sNumber;wsprintf(stri,"%d",sNumber);break;case SNMP_SYNTAX_UINT32:case SNMP_SYNTAX_CNTR32:case SNMP_SYNTAX_GAUGE32: case SNMP_SYNTAX_TIMETICKS:smiUINT32 uNumber;uNumber=m_valuei->value.uNumber;nIpin=uNumber;wsprintf(stri,"%d",uNumber);break;case SNMP_SY

32、NTAX_CNTR64:smiCNTR64 hNumber;hNumber=m_valuei->value.hNumber;break;case SNMP_SYNTAX_OCTETS: case SNMP_SYNTAX_OPAQUE: case SNMP_SYNTAX_NSAPADDR:stri=(char *)m_valuei->value.string.ptr;break;case SNMP_SYNTAX_IPADDR:strIp.Format("%d",*m_valuei->value.string.ptr);strIp+="."

33、strTemp.Format("%d",*(m_valuei->value.string.ptr+1);strIp+=strTemp;strIp+="."strTemp.Format("%d",*(m_valuei->value.string.ptr+2);strIp+=strTemp;strIp+="."strTemp.Format("%d",*(m_valuei->value.string.ptr+3);strIp+=strTemp;strcpy(stri,strIp);b

34、reak;case SNMP_SYNTAX_OID:smiOID oid;oid=m_valuei->value.oid;SnmpOidToStr(&oid,30,stri);/SnmpFreeDescriptor (SNMP_SYNTAX_OID, (smiLPOPAQUE)&oid);break;case SNMP_SYNTAX_NULL: case SNMP_SYNTAX_NOSUCHOBJECT:case SNMP_SYNTAX_NOSUCHINSTANCE: case SNMP_SYNTAX_ENDOFMIBVIEW:smiBYTE empty;empty=m_

35、valuei->value.empty;stri="No Value Returned"break;default:break;CString temp,temp1;CString str2; m_wndAddress.GetWindowText(str2); / AfxMessageBox(str2); if (flag=1)&&(!strcmp(temp1.Left(str2.GetLength(),str2)this->m_wndReportBar.WriteReportLine("*", 0); this->m_

36、wndReportBar.WriteReportLine("接收命令-getresponse", 0);this->m_wndReportBar.WriteReportLine("oid值", 0);this->m_wndReportBar.WriteReportLine(CString(m_sOidi), 0);this->m_wndReportBar.WriteReportLine("命令值", 0);this->m_wndReportBar.WriteReportLine(CString(stri), 0

37、);this->m_wndReportBar.WriteReportLine("*", 0);if (flag=2)m_wndAddress.SetWindowText(CString(m_sOidi);this->m_wndReportBar.WriteReportLine("*", 0); this->m_wndReportBar.WriteReportLine("接收命令-getNextresponse", 0);this->m_wndReportBar.WriteReportLine("oid

38、值", 0);this->m_wndReportBar.WriteReportLine(CString(m_sOidi), 0);this->m_wndReportBar.WriteReportLine("命令值", 0);this->m_wndReportBar.WriteReportLine(CString(stri), 0);this->m_wndReportBar.WriteReportLine("*", 0);if (flag=4)m_wndAddress.SetWindowText(CString(m_sOi

39、di);this->m_wndReportBar.WriteReportLine("*", 0); this->m_wndReportBar.WriteReportLine("接收命令-getSETresponse", 0);this->m_wndReportBar.WriteReportLine("oid值", 0);this->m_wndReportBar.WriteReportLine(CString(m_sOidi), 0);this->m_wndReportBar.WriteReportLine

40、("命令值", 0);this->m_wndReportBar.WriteReportLine(CString(stri), 0);this->m_wndReportBar.WriteReportLine("*", 0); delete PDU_type;4、管理端应用编程接口主要的APIWinSNMP Manager API是Windows® SNMP管理者应用编程接口的简称,它提供了开发SNMP网络管理端的函数。包括以下六类:1) 通信函数通信函数提供WinSNMP管理端应用程序与下层通信的接口。利用这些接口函数WinSNMP管理端应用程序实现了与其它管理实体之间的通信。这类函数包括:l SnmpCleanup l SnmpClose l SnmpCreateSession l SnmpOpen l SnmpRecvMsg l SnmpRegisterl SnmpSendMsg l SnmpStartup l SNMPAPI_C

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论