Linux SNMP中的命令和代理詳解
在SNMP協議的學習中,我們一直都在對Linux SNMP這部分知識進行深化講解。那么接下來我們主要針對兩部分內容進行解析。首先是對SNMP命令的介紹,之后再對SNMP代理進行分析。希望從中能讓大家掌握到Linux SNMP中重要的知識。
SNMP命令
SNMP命令是我們操作Linux SNMP的一些快捷方式。SNMP協議(Simple Network Management Protocol)即簡單網絡管理協議,它為網絡管理系統提供了底層網絡管理的框架。
SNMP協議定義了數據包的格式,及網絡管理員和管理代理之間的信息交換,它還控制著管理代理的MIB數據對象。因此,可用于處理管理代理定義的各種任務。SNMP協議之所以易于使用,這是因為它對外提供了三種用于控制MIB對象的基本操作SNMP命令。
它們是:Set 、Get 和 Trap :
Set:它是一個特權SNMP命令,因為可以通過它來改動設備的配置或控制設備的運轉狀態。
Get:它是SNMP協議中使用率***的一個SNMP命令,因為該SNMP命令是從網絡設備中獲得管理信息的基本方式。
Trap:它的功能就是在網絡管理系統沒有明確要求的前提下,由管理代理通知網絡管理系統有一些特別的情況或問題發生了。
SNMP協議也定義了執行以上三個SNMP命令時的報文流, 但它沒有定義其它的設備管理代理SNMP命令,可應用于MIB數據對象的操作只有Set和Get命令,這兩個命令的目標是數據對象的值。
比如說,SNMP協議中沒有定義reboot(重啟)SNMP命令;然而,管理代理軟件把MIB數據對象和設備的內部SNMP命令聯系起來,這樣就可以實現某些特殊的命令操作。如果現在想要重啟某個設備,管理系統就把某個與重啟有關的MIB數據對象的值設為1(我們的假定)。
這樣就會觸發管理代理執行重新啟動設備的SNMP命令,同時還把這個MIB數據對象重新設置為原來的狀態。
你可能聽說過許多關于“Linux SNMP可管理設備”、“與Linux SNMP兼容的設備”或者“被Linux SNMP管理的設備”的說法。但是它們到底什么?它們與“智能設備”又是怎么區別的呢?
簡單地說,以上所有說法的意思都是“一個包含網絡管理代理實現的網絡設備”。這些話也意味著這種代理支持Linux SNMP協議來進行信息交換。正如前面所提到的,一個智能設備可能并不需要使用或支持Linux SNMP協議。那么什么是一個代理呢?
SNMP代理
管理代理(agent)是一種特殊的軟件(或固件),它包含了關于一個特殊設備和/或該設備所處環境的信息。當一個代理被安裝到一個設備上時,上述的設備就被列為“被管理的”。換句話說,代理就是一個數據庫。
數據庫中所包含的數據隨被安裝設備的不同而不同。舉例來說,在一個路由器上,代理將包含關于路由選擇表、接收和發送包的總數等信息。而對于一個網橋來說,數據庫可能包含關于轉發包數目和過濾表等信息。
代理是與網絡管理控制臺通信的軟件或固件。在這個控制臺的“鏈路”上可以執行以下任務:
◆網絡管理工作站可以從代理中獲得關于設備的信息。
◆網絡管理工作站可以修改、增加或者刪除代理中的表項,例如在由代理所維護的數據庫中的路由選擇表表項。
◆網絡管理工作站可以為一個特定的自陷設置閾值。
◆可以向網絡管理工作站發送自陷。
請記住,在被管理設備中的代理并不是自愿提供信息的,除非當有一個閾值被超過的事件發生時。
在一些偶然的情況下,在一個特定的設備上可能因為系統資源的缺乏,或者因為該設備不支持Linux SNMP代理所需要的傳輸協議,而不能實現一個Linux SNMP代理。這是否就意味著你不能監視這個設備呢?答案并不是這樣的,在這種情況下并不是完全沒有辦法的。你可以使用受托代理(proxy agent),它相當于外部設備(foreign device)。
受托代理并非在被管理的外部設備上運行,而是在另一個設備上運行。網絡管理工作站首先與受托代理聯系,并且指出(通過某種方法)受托代理與外部設備的一致性。然后受托代理把它接收到的協議命令翻譯成任何一種外部設備所支持的管理協議。在這種情況下,受托代理就被稱為應用程序網關(application gateway)。
如果外部設備不支持任何管理協議,那么受托代理必須使用一些被動的方法來監視這個設備。舉例來說,一個令牌環網橋的受托代理可以監視它的性能,并且如果它檢測到任何由網橋所報告的擁擠錯誤時,它就會產生自陷。
幸運的是,目前大多數網際互聯設備類型都是支持Linux SNMP可管理設備的,所以你可以很容易地使用一個Linux SNMP可管理設備,例如集線器、網橋和路由器。有一些廠商甚至還在他們的網卡上提供Linux SNMP代理。