[ 永遠的UNIX::UNIX技術資料的寶庫 ]   GB | BIG5

首頁 > 網絡管理 > 其它 > 正文
簡單網絡管理協議(SNMP)
本文出自:http://www.mgmt.utoronto.ca/~huang/ 作者: (2001-08-06 08:00:00)

引 言


作為一名網絡顧問或網絡管理員,在你安裝完網絡並且設置了用戶帳號與應用程序之,你的工作並沒有完成。 你的下一個職責就是網絡管理,它就好比是一場永遠也不會結束的戰鬥一樣。

目前存在著兩種類型的網絡管理問題:一種是與軟件相關的,例如數據安全性和存取許可;另一種是與硬件相關的問題。 這裡注重討論第二種,即通過使用簡單網絡管理協議(SNMP)和在處理與軟件相關的管理問題時所用到的一些思想,把網絡 硬件作為一個整體進行管理。

介紹SNMP的英文網站很多,但相關的中文網站寥寥無幾,這正是鄙人設立本站的初衷所在。這裡將從基本原理著手,介紹到底什是 SNMP,並引導新手如何親自動手實踐。在不久的將來我將給出LINUX和SOLARIS上基X WINDOWS的簡單發布和源碼。
  1. 什是網絡管理?

  2. 什是SNMP?

  3. 什是被管理設備?

  4. 怎樣巧妙而有效地管理你的網絡?

  5. 相關網站

  1. 什是網絡管理?


網絡管理分為兩類。第一類是網絡應用程序、用戶帳號(例如文件的使用)和存取權限(許可)的 管理。它們都是與軟件有關的網絡管理問題。這裡不作討論。

網絡管理的第二類是由構成網絡的硬件所組成。這一類包括工作站、服務器、網卡、路由器、 網橋和集線器等等。通常情況下這些設備都離你所在的地方很遠。正是由這個原因,如果當 設備有問題發生時網絡管理員可以自動地被通知的話,那一切事情都好辦。但是你的路由器 不會象你的用戶那樣,當有一個應用程序問題發生時就可以打電話通知你,而當路由器擁擠時 它並不能夠通知你。

為了解決這個問題,廠商們已經在一些設備中設立了網絡管理的功能,這樣你就可以遠程地詢 問它們的狀態,同樣能夠讓它們在有一種特定類型的事件發生時能夠向你發出警告。這些設備 通常被稱為"智能"設備。

網絡管理通常被分為四類:
被管理節點(或設備)即你想要監視的設備
代理用來跟蹤被管理設備狀態的特殊軟件或固件 (firmware)
網絡管理工作站與在不同的被管理節點中的代理 通信,並且顯示這些代理狀態的中心設備。
網絡管理協議被網絡管理工作站和大理用來交換 信息的協議。

當設計和構造網絡管理的基礎結構時,你需要記住下列兩條網絡管理的原則:
  1. 由管理信息而帶來的通信量不應明顯的增加網絡的通信量。
  2. 被管理設備上的協議代理不應明顯得增加系統處理的額外開銷,以致 該設備的主要功能都被削弱了。




2.什是SNMP?


簡單網絡管理協議(SNMP)首先是由Internet工程任務組織(Internet Engineering Task Force)(IETF)的研究小組為了解決Internet上的路由器管理問題而提出的。許多人認為 SNMP在IP上運行的原因是Internet運行的是TCP/IP協議,然而事實並不是這樣。

SNMP被設計成與協議無關,所以它可以在IP,IPX,AppleTalk,OSI以及其他用到的傳輸協議上被使用。

SNMP是一系列協議組和規范(見下表),它們提供了一種從網絡上的設備中收集網絡管理信息的方法。SNMP也為設備向網絡管理工作站報告問題和錯誤提供了一種方法。

名字 說明
MIB 管理信息庫
SMI 管理信息的結構和標識
SNMP 簡單網絡管理協議

從被管理設備中收集數據有兩種方法:一種是只輪詢(polling-only)的方法,另一種是基中斷(interrupt-based)的方法。

如果你只使用只輪詢的方法,那網絡管理工作站總是在控制之下。而這種方法的缺陷在信息的實時性,尤其是錯誤的實時性。你多久輪詢一次,並且在輪詢時按照什樣的設備順序呢?如果輪詢間隔太小,那將產生太多不必要的通信量。如果輪詢間隔太大,並且在輪詢時順序不對,那關一些大的災難性的事件的通知又會太饅。這就違背了積極主動的網絡管理目的。

當有異常事件發生時,基中斷的方法可以立即通知網絡管理工作站(在這裡假設該設備還沒有崩潰,並且在被管理設備和管理工作站之間仍有一條可用的通信途徑)。然而,這種方法也不是沒有他的缺陷的,首先,產生錯誤或自陷需要系統資源。如果自陷必須轉發大量的信息,那被管理設備可能不得不消耗更多的時間和系統資源來產生自陷,從而影響了它執行主要的功能(違背了網絡管理的原則2)。

而且,如果幾個同類型的自陷事件接連發生,那大量網絡帶寬可能將被相同的信息所佔用(違背了網絡管理的原則1)。尤其是如果自陷是關網絡擁擠問題的時候,事情就會變得特別糟糕。克服這一缺陷的一種方法就是對被管理設備來說,應當設置關什時候報告問題的閾值(threshold)。但不幸的是這種方法可能再一次違背了網絡管理的原則2,因為設備必須消耗更多的時間和系統資源,來決定一個自陷是否應該被產生。

結果,以上兩種方法的結合:面向自陷的輪詢方法(trap-directed polling)可能是執行網絡管理最為有效的方法了。一般來說,網絡管理工作站輪詢在被管理設備中的代理來收集數據,並且在控制台上用數字或圖形的表示方式來顯示這些數據。這就允許網絡管理員分析和管理設備以及網絡通信量了。

被管理設備中的代理可以在任何時候向網絡管理工作站報告錯誤情況,例如預制定閾值越界程度等等。代理並不需要等到管理工作站為獲得這些錯誤情況而輪詢他的時候才會報告。這些錯誤情況就是眾所周知的SNMP自陷(trap)。

在這種結合的方法中,當一個設備產生了一個自陷時,你可以使用網絡管理工作站來查詢該設備(假設它仍然是可到達的),以獲得更多的信息。




3.什是被管理設備?


你可能聽說過許多關“SNMP可管理設備”、“與SNMP兼容的設備”或者“被SNMP管理的設備”的說法。但是它們到底什?它們與“智能設備”又是怎區別的呢?

簡單地說,以上所有說法的意思都是“一個包含網絡管理代理實現的網絡設備”。這些話也意味著這種代理支持SNMP協議來進行信息交換。正如前面所提到的,一個智能設備可能並不需要使用或支持SNMP協議。那什是一個代理呢?

  1. 代理

    管理代理(agent)是一種特殊的軟件(或固件),它包含了關一個特殊設備和/或該設備所處環境的信息。當一個代理被安裝到一個設備上時,上述的設備就被列為“被管理的”。換句話說,代理就是一個數據庫。

    數據庫中所包含的數據隨被安裝設備的不同而不同。舉例來說,在一個路由器上,代理將包含關路由選擇表、接收和發送包的總數等信息。而對一個網橋來說,數據庫可能包含關轉發包數目和過濾表等信息。

    代理是與網絡管理控制台通信的軟件或固件。在這個控制台的“鏈路”上可以執行以下任務:

  • 網絡管理工作站可以從代理中獲得關設備的信息。
  • 網絡管理工作站可以修改、增加或者刪除代理中的表項,例如在由代理所維護的數據庫中的路由選擇表表項。
  • 網絡管理工作站可以為一個特定的自陷設置閾值。
  • 代理可以向網絡管理工作站發送自陷。

    請記住,在被管理設備中的代理並不是自願提供信息的,除非當有一個閾值被超過的事件發生時。

    在一些偶然的情況下,在一個特定的設備上可能因為系統資源的缺乏,或者因為該設備不支持SNMP代理所需要的傳輸協議,而不能實現一個SNMP代理。這是否就意味著你不能監視這個設備呢?答案並不是這樣的,在這種情況下並不是完全沒有辦法的。你可以使用受托代理(proxy agent),它相當外部設備(foreign device)。

    受托代理並非在被管理的外部設備上運行,而是在另一個設備上運行。網絡管理工作站首先與受托代理聯系,並且指出(通過某種方法)受托代理與外部設備的一致性。然受托代理把它接收到的協議命令翻譯成任何一種外部設備所支持的管理協議。在這種情況下,受托代理就被稱為應用程序網關(application gateway)。

    如果外部設備不支持任何管理協議,那受托代理必須使用一些被動的方法來監視這個設備。舉例來說,一個令牌環網橋的受托代理可以監視它的性能,並且如果它檢測到任何由網橋所報告的擁擠錯誤時,它就會產生自陷。幸運的是,目前大多數網際互聯設備類型都是支持SNMP可管理設備的,所以你可以很容易地使用一個SNMP可管理設備,例如集線器、網橋和路由器。有一些廠商甚至還在他們的網卡上提供SNMP代理。

  1. MIB

    我們通常很少把在一個被管理設備中的數據庫稱為一個數據庫。在SNMP術語中它通常被稱為管理信息庫(MIB)。

    一個MIB描述了包含在數據庫中的對象或表項。每一個對象或表項都有以下四個屬性:

  • 對象類型(Object Type)
  • 語法(Syntax)
  • 存取(Access)
  • 狀態(Status)

    在SNMP規范之一的管理信息結構與標識(SMI;RFC 1155/1065)規范中定義了這些屬性。SMI對MIB來說就相當模式對數據庫。SMI定義了每一個對象“看上去象什”。

  1. 對象類型

    這個屬性定義了一個特定對象的名字,例如sysUpTime。它只不過是一個標記。在表示數據時,SMI使用了ASN.1(Abstract Syntax Notation One)。對象必須被“標識”。對互聯網絡管理MIB來說,用ASN.1記法來表示的標識符開頭如下:

        internet OBJECT IDENTIFIER : : = { iso org(3) dod(6) 1 }

或者用一種簡單的格式:

        1.3.6.1

    這是從ASN.1文檔中抽取的。它為標識符定義了一個樹形的格式。該樹是由一個根及與之相連接的許多被標記的節點組成。每一個節點由一個非負整數值和盡可能簡明的文字說明所標識。每一個節點可能也擁有同樣被標記的子節點。

    當描述一個對象標識符(OBJECT INDENTIFIER)時,你可以使用幾種格式,最簡單的格式是列出由根開始到所討論的對象遍歷該樹所找到的整數值。     從根一級開始,這裡有三個節點(如圖):

  • ccitt(0)
  • iso(1)
  • joint-iso-ccitt(2)

    其中每一個“分支”都被標記中所示的管理組織所管理。

  1. 語法

    這個屬性指定了數據類型,例如整數、8位組串數字(字符串;范圍為0至255)、對象標識符(預先定義的數據類型別名)或NULL。NULL是留待的使用的空位。

  1. 存取

    存取表明了這個特定對象的存取級別。合法的值有:只讀、讀寫、只寫和不可存取。

  1. 狀態

    狀態定義了這個對象的實現需要:必備的(被管理節點必須實現該對象);可選的(被管理對象可能實現該對象);或者已廢棄的(被管理設備不需要再實現該對象)。

 

  1. 簡單網絡管理協議

    簡單網絡管理協議允許網絡管理工作站軟件與被管理設備中的代理進行通信。這種通信可以包括來自管理工作站的詢問消息、來自代理的應答消息或者來自代理給管理工作站的自陷消息。

    為了保証因網絡管理而帶來的通信量是最小的(網絡管理原則1),SNMP使用了一種異步客戶機/服務器方法。這意味著一個SNMP實體(管理工作站或被管理設備)在發出一條消息不需要等待一個應答;然而,除了自陷的情況以外應答都是要被產生的。如果需要的話該實體可以發送另一條消息,或者也可以繼續它預先被定義的功能。SNMPv1實現起來很簡單並且對資源佔用不多,它只有5個請求/響應原語:

  • get-request
  • set-request
  • get-next-request
  • get-reponse
  • trap

    網絡管理工作站可以把感興趣的變量值提取到其應用程序中,只要發出get-request或get-next-request報文即可。前者是指定對象的讀操作,者則提供了一個樹遍歷操作符,便確定一個代理進程支持哪些對象。網絡管理工作站可以修改代理進程中的變量值,只要發出set-request報文即可。

    如果沒有發生錯誤,代理進程可以用get-reponse原語回答這些請求。另外,利用trap原語,代理進程可以異步地發送告警給網絡管理工作站,告訴它發生了某個滿足預設條件的事件。

    實現中的經驗和設計過程中的不斷完善給SNMPv2帶來了協議改進意見,即給網絡管理工作站增加一個成塊讀操作get-bulk-request報文。當需要用一個請求原語提取大量數據(如讀取某個表的內容)時就可以調用它以提高效率。SNMPv2也引進管理進程和管理進程之間的通信進行狀況報告,為此增加了一條原語inform-request,並把get-response簡化成更加合理的名稱reponse。trap報文則已改為snmpv2-trap,並與所有的協議報文具有同樣的格式。




4.巧妙而有效地管理你的網絡


網絡管理的兩種方法是積極主動(pro-active)的方法和被動反應(re-active)得分方法。在大多數的時間裡,我們總是要對一個事件作出反應,但這並不是有效的網絡管理。

在積極主動的方式中,你所有現存的資源都得到了充分使用。如果你有智能集線器,那請你把它找出來。幾乎所有現存的路由器都至少在MIB-I級別上支持SNMP協議。如果你不能確定的話,請你和廠商聯系。

當管理網絡時,你需要明確的第一件事情就是要知道什時候網絡出問題。但是,你怎樣辨別網絡出問題了呢?對人類來說,你會尋找以下症狀,你會檢查體溫和脈搏。你網絡上的症狀也可以被監視,例如帶寬利用率隨時間的變化、服務器和路由器上的CPU利用率及通常在網線上的錯誤量(你總有以下錯誤)。請你使用網絡管理工作站來跟蹤這些統計數據一段時間,不如說兩個星期,並且統計出一天中不同時候的平均值。這將成為你的基準線(baseline)。

一個基準線就是一系列數字,這些數字反映出了一個“健康”的網絡。對人類來說,一個“正常而且健康”的體溫是37度。這就是你區分一個人是否發燒的基準線。你也需要一個基準線來決定你的網絡是否出了問題。通過監視被管理設備中的網絡閾值設置,並且尋找故障的征兆,你就可以擁有一個提前報警的系統了。




5.相關網站


SNMP FAQ

        ftp://rtfm.mit.edu/pub/usenet/news.answers/snmp-faq/part1

        ftp://rtfm.mit.edu/pub/usenet/news.answers/snmp-faq/part2

SNMP WEB

        http://netman.cit.buffalo.edu/index.html

        http://snmp.cs.utwente.nl

        http://www.onramp.net/~cwk/net-manage.cgi

SNMP MAIL LIST

        snmp-request@psi.com

        snmpv2-request@tis.com

        snmpv3-request@tis.com

SNMP NEWS GROUP

        comp.protocols.snmp

        info.snmp

        comp.dcom.net-management


(http://www.fanqiang.com)
    進入【UNIX論壇

相關文章
簡單網絡管理協議(SNMP) (2001-08-06 08:00:00)
SNMP簡介 (2001-05-01 15:34:04)
網絡管理和SNMP協議 (2001-04-19 15:38:00)
PHP4手冊:函數庫及函數(四十六) SNMP 網管函式庫 (2001-04-18 16:56:55)
 

★  樊強制作 歡迎分享  ★