Tell Me More之使用入門_第1頁
Tell Me More之使用入門_第2頁
Tell Me More之使用入門_第3頁
Tell Me More之使用入門_第4頁
Tell Me More之使用入門_第5頁
已閱讀5頁,還剩12頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

1、文檔名稱SNMP管理者程序詳細設計文檔編號版 本 號V1.0作 者劉麗娟項目名稱介質轉換器審 核承辦單位巨龍信息技術有限責任公司批 準合作單位標 準 化日 期2002.2.19使用范圍頁數SNMP管理者程序詳細設計巨龍信息技術有限責任公司文檔文件名:SNMP管理者程序詳細設計歷史版本記錄時間版本號修改人修改內容2002.2.19劉麗娟創(chuàng)建2002-7-5齊兵修改細節(jié)1、背景介質轉換器設備的SNMP管理者程序和代理程序是介質轉換器設備網絡管理系統(tǒng)的重要組成部分, 本文檔描述了該系統(tǒng)的管理程序的詳細設計方案本文檔的讀者包括模塊的開發(fā)人員、相關軟件的設計和開發(fā)人員以及測試人員。主要介紹以下內容:SN

2、MP協(xié)議的基本知識, 介質轉換器設備管理者端的設計實現方案。1.1 SNMP協(xié)議基礎 1.1.1 SNMP的技術特點1.獨立于下層傳輸協(xié)議。2. SNMP PDU中的共同體(community)域可用來標識不同的Agent,從而一個Manager可同時管理多個Agent。3.每個Agent獨立維護有關被管理網絡單元的對象,結構清晰,修改靈活。4. SNMP PDU在傳送之前均經過ASN.1 BER編碼,因而其格式和字節(jié)順序與CPU類型、操作系統(tǒng)等因素無關。5.易于實現。開發(fā)SNMP是為了解決互聯網管理問題。SNMP為局域網和廣域網的節(jié)點設備提供了有效的監(jiān)控手段。1988年以來,SNMP已經受到

3、了TCP/IP通訊領域的廣泛接受,同時也擴展到其他領域。1.1.2 SNMP網絡管理組成代理(AGENT) 網管平臺 (NMS)網管協(xié)議(SNMP)管理信息庫(MIB)代理是網絡上一種可以被監(jiān)視、控制和配置的節(jié)點,它會接受網管平臺發(fā)來的命令(request)來操縱管理信息庫并對此做出響應(response)。另外,代理還會主動向網管平臺發(fā)送陷阱消息(trap)。SNMP包括下列三個組件:SNMP協(xié)議管理信息庫管理信息結構一個網絡管理協(xié)議可能需要大量不同的命令(例如:add route, delete route, chang interface address, examine address

4、等等),SNMP把所有的命令都轉化為對某一個預定義對象的GET和SET操作。這意味著網管平臺通過讀取和設置某一對象的值來進行對代理的控制,而不是每一種操作有一個專有命令。例如,要關閉某一接口,網管平臺就設置這個接口的接口狀態(tài)的值為關閉(OFF)。這一方案將協(xié)議和協(xié)議所管理的對象相分開,這樣規(guī)定的好處很明顯:減少命令種類、增強擴展性。被協(xié)議所管理的對象數可隨意增長。SNMP屬于應用層協(xié)議,基于在傳輸層的UDP和網絡層的IP協(xié)議。SNMP的命令,被稱作協(xié)議數據單元(PDU), 實現了在管理者和代理之間的請求、響應和陷阱。SNMP將命令封裝在消息報文中發(fā)送出去。管理者向UDP的161端口發(fā)送請求,代

5、理向UDP的162端口發(fā)送陷阱。下面是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類型請求序號錯誤狀態(tài)錯誤索引對象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,網管管理信息系統(tǒng)SNMP:Simple Network Management Protocol, 簡單網絡管理協(xié)議1.3參考資料1 RFC相應文檔協(xié)議;2 MSDN在線幫助3 簡單網絡管理協(xié)議2、介質轉換器網管總體描述總體設計內容主要介紹整個系統(tǒng)的硬件結構和軟件模塊及其所完成的管理功能。2.1系統(tǒng)的硬件結構整個硬件設備包括16個同等的轉接板,每個設備板上又三個指示燈,分別表示是否激活,10M或100M,光口或電口。用不同的指示燈顏色標明。2.2系統(tǒng)軟件結構本系統(tǒng)采用SNMP協(xié)議實現manager和Agent之間的通信。作為Manager的網

8、絡管理工作站(NMS)執(zhí)行管理應用程序,監(jiān)測和控制Agent所代表的網元。網元可以是主機、網關、終端服務器等設備。Agent負責響應NMS的請求,Agent可以位于網元內部,也可以通過另一專用通信協(xié)議與后網元者相連,此時該Agent即為Proxy Agent。2.2.1系統(tǒng)的位置網絡管理人員在對設備進行管理和維護的時候,需要通過網管平臺,訪問設備內部的信息。這需要位于網管主機的SNMP管理者程序與位于設備主控板中的SNMP代理程序相互通信來傳遞網管信息。SNMP管理者程序將管理員的命令封裝在SNMP訪問請求報文中,發(fā)給SNMP代理程序,SNMP代理程序根據收到的訪問請求報文,對本地數據進行訪問

9、,將訪問結果以SNMP應答報文的形式返回SNMP管理者程序。同時,SNMP代理程序還會主動向SNMP管理者程序發(fā)送SNMP陷阱報文來通知網絡管理者某些事件的發(fā)生。本系統(tǒng)中,SNMP的NMS應用程序通過采用VC 提供的SNMP Management API組件和/或Winsnmp API組件實現manager的開發(fā),采用Tornado 2.0中提供的NMP組件實現代理程序的開發(fā)。有關代理程序的設計細節(jié)參見SNMP代理程序詳細設計文檔。本文將重點介紹采用VC提供的SNMP組件進行MANAGER程序開發(fā)的詳細過程。2.2.2 網絡管理功能由于本設備本身比較簡單,所以完成的snmp網管功能也比較簡單,

10、主要完成實時監(jiān)控設備上各個板狀態(tài)的功能。具體來說,可以完成動態(tài)擴展mib結構,設置被管設備的ip地址(可以管理整個網絡上不同設備),設置被管community,設置查詢system組,ip組,snmp組,以及與設備相關的屬性。以MIB樹形式對被管對象的相關信息進行瀏覽。以直觀的方式顯示設備上16塊板的實時狀態(tài),同時顯示各個板上具體狀態(tài)(如是否在位,是否激活,10M或者100M,光口或者電口)節(jié)點的屬性和狀況;通過在管理信息庫樹狀圖形上選中不同的屬性節(jié)點,然后選擇get、getnext、set,取出相應的值。2.2.2.1配置管理配置管理部分完成的功能包括設置代理設備的IP地址,設置按照標準定義

11、的可設置的對象(例如system組中的syscontact等);同時可以擴展管理信息庫的結構(mib結構用二進制文件保存在當地磁盤中)2.2.2.2故障管理通過實時監(jiān)控由代理設備主動上報的陷阱及時發(fā)現網絡故障(trap消息),分析原因并給出解決故障的建議性措施,保證網絡的可靠性??梢越馕鰳藴蕆fc1215中定義的陷進,如冷起,熱起,設置不可寫的對象等,當然還可以完成分析和本設備相關的具體陷阱。2.2.2.3性能管理介質轉換器沒有性能管理的數據。2.2.2.4安全管理提供權限管理機制管理網絡系統(tǒng),維護網絡數據的私有性,保護網絡數據不被侵入者非法獲得。能對網管系統(tǒng)的各類用戶進行管理,根據用戶的權限

12、授予不同的功能。本系統(tǒng)根據不同的community來區(qū)分可管理的不同的mib的映象。2.2.3 系統(tǒng)運行硬件環(huán)境 本系統(tǒng)設計實現的網管服務端,運行時最小的硬件配置要求為:l Intel® Pentium® III 500 MHz 處理器l 64 MB 內存l 網卡2.2.4 軟件環(huán)境 按照本設計方案實現的網管管理端要求的操作系統(tǒng)為Microsoft® Windows 2000并配上SNMP服務。軟件開發(fā)工具如表所示:表2 軟件開發(fā)工具軟件行為硬件環(huán)境使用工具(語言)說明管理端源代碼開發(fā)PC平臺Windows 2000Microsoft Visual Studio

13、VC+配置SNMP服務實現各模塊代碼程序運行PC平臺Windows2000配置SNMP服務實現snmp的管理功能3、總體結構設計系統(tǒng)功能的實現基于windows 2000上已有的SNMP服務的基礎上,開發(fā)管理端snmp的相應功能,其總體結構如圖。Snmp管理端(用戶界面)Winsnmp的API(包括SnmpStartup) Trap Get,set,getnext .被管設備被管設備被管設備被管設備被管設備被管設備 .用戶界面可以通過設置不同的IP地址,選擇不同的設備進行監(jiān)控管理。程序運行狀態(tài)為:對應snmpView類對應CReportwnd類用于上報陷阱的窗口對應MainView.類刷新各單

14、板的狀態(tài)可擴展的MIB樹下面對幾個主要的類進行描述3.1 SNMP協(xié)議模塊管理端與代理端的通信通過SNMP協(xié)議模塊加以實現,在管理端,SNMP協(xié)議模塊主要在類中加以封閉。所有和snmp協(xié)議相關的命令如接收和發(fā)送都是在這個類中完成的。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樹狀結構的類該類實現管理信息庫的樹狀顯示,同時可以動態(tài)的擴充,每次構建的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用于實時顯示各板狀態(tài)的類(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協(xié)議相關的相關消息函數最主要的是一個用戶自定義的消息wMsg。在Mainfrm.h文件中定義。#define wMsg WM_USER+5用于響應由設備端發(fā)回的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管理者應用編程接口的簡稱,它提供了開發(fā)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. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論