2010-03-19 49 views
19

我正在學習SNMP,並使用它編寫一些應用程序。我有關於協議的一些基本問題:有關SNMP的基本問題

  1. 代理是否將其狀態存儲在設備本身上?
  2. 如果在代理上設置了陷阱,您可以對相同的OID進行輪詢以獲得相同的信息嗎?
  3. 沒有使用mib文件,有沒有辦法一次查詢設備的所有信息?如果不是,並且您正在編寫自己的定製管理器,那麼您是否必須知道它在前面報告的結構?
  4. 如果你正在設置一個代理進行報告,通常有一種方法來控制它發送陷阱的頻率。或者它通常會在滿足某些條件的情況下發送陷阱?

回答

11

代理是否將其狀態存儲在設備本身上?

您可以在設備上存儲數據。兩者都是可能的,兩者都完成了。代理存儲(緩存的)有關遠程設備的狀態信息的問題是,管理系統從不真正知道代理中的(緩存的)數據是否可接受爲最新。如果您不能指望它,則需要使用管理器觸發同步或輪詢遠程設備的狀態和/或代理與遠程設備之間的通信鏈接。一旦你進入那個遊戲,往往更好的做法是將一個子代理放在遠程設備上,並使用標準的SNMP協議來獲取信息。

如果在代理上設置了陷阱,您可以對相同的OID進行輪詢以獲得相同的信息嗎?

最精心設計的MIB實際上將更改後的MIB對象放入陷阱。這樣,您的SNMP管理器就不必爲了確定而輪詢代理。

話雖如此,Entity-MIB上的陷阱沒有任何狀態變量。但是,該MIB用於描述物理庫存,如貨架,卡和端口,並且只有物理配置更改時纔會引發陷阱。在這種情況下,您需要讓SNMP管理器再次走過Entity-MIB以獲得全新的物理配置。

沒有使用mib文件,有沒有辦法一次查詢設備的所有信息?

是。滾動你自己的自定義MIB,並把它想要的東西。您可以將整個設備配置放入一個MIB對象中。不利的一面是,你必須在你的SNMP管理器上編寫一個解析器來解析出結構,如果結構發生變化,你需要弄清楚當前值和以前的值之間的差異的含義。即您將重新發明一些SNMP MIB。但是,對於非常小的MIB,這可能是值得的。

您可能最好使用SNMP GET-BULK,或者只是通過連續調用SNMP-GET-NEXT來執行MIB遍歷,直到不再有對象返回。

如果不是,並且您正在編寫自己的定製管理器,那麼您是否必須知道它在前面報告的結構?

如果你想保持你的「自定義管理器」簡單,你必須事先知道結構。如果你想要靈活性,你需要結構描述語言來編碼你的結構,你的管理者需要能夠從代理數據中解碼出來並填充管理器,並從管理器獲取數據並將其編碼這種格式將其發送給代理。即您將重新發明SNMP/SMI,CMIP/CMISE,CIM以及一系列已部署的其他管理系統和協議。

如果您正在設置要報告的代理程序,是否通常有方法控制發送陷阱的頻率?或者它通常會在滿足某些條件的情況下發送陷阱?

這是一個很好的問題,因爲當你最需要你的網絡時,你經常會陷入一個陷阱風暴。這使得很難預測要提供多少網絡。

明智地使用陷阱。例如,Entity-MIB只有一個陷阱,並且值得使用,因爲它報告了物理結構的變化。 Interfaces-MIB每個端口可能有很多陷阱。對於這個MIB,最好是爲綁定到物理端口的接口啓用陷阱,而不是在低層接口之上堆疊的接口。對於大型網絡而言,通常最好將輪詢和陷阱組合用於物理設備和物理接口。這樣,無論在正常運行期間還是在網絡災難期間,您都可以預測有多少網絡用於管理流量。

一些標準MIB指定了多久或何時可以拋出陷阱。如果你確定,那就用它。您始終可以使用配置MIB對象來滾動您自己的企業MIB,以便您的管理員調節特定的陷阱。

17

代理是否將其狀態存儲在設備上?

在最常見的情況下,SNMP代理正在監視的設備上運行。在這種情況下,代理沒有其他選項,任何狀態信息都必須存儲在設備上。 SNMP代理只讀取或設置這些信息。

如果有陷阱上的代理設置, 你可以做在同一個OID民意測驗 得到同樣的信息?

我想你應該能夠做到這一點 - 例如SNMPv2的陷阱IF-MIB ::鏈路故障包含三個變量綁定 - IF-MIB :: ifIndex的,IF-MIB :: ifAdminStatus和IF-MIB :: ifOperStatus 。在這種特殊情況下,ifIndex指定ifTable中的行,其他兩個可以輪詢。

,不使用MIB文件,有沒有同時查詢其所有的 信息的設備的 方式?

是的,使用net-snmp軟件包中的snmp-walk或任何其他可以使用get-next輪詢數據的snmp工具。

如果沒有,你寫你自己的 定製的經理,你有沒有 知道什麼報告 前面的結構?

您確實需要知道設備MIB包含的內容 - 沒有這些信息,您只能獲得數字OID和值,這對開發人員和用戶都沒有意義。如果使用更復雜的MIB,則需要了解有關受管設備的很多詳細信息。 MIB文件幾乎不包含足夠的信息。

+2

同意。事實上,SNMP協議並不包括David詢問的所有方面。諸如狀態存儲等許多細節都依賴於實現。 MIB文檔打開大門,以便您可以查詢有關設備的信息,但其供應商始終更好地瞭解如何使用這些對象,因爲MIB文檔通常不會涵蓋所有的細節。 – 2010-03-24 02:48:45

-1

代理是否將其狀態存儲在設備本身上?

這取決於設備和應用程序;有些設備在本地存儲它,其他人使用代理服務器。

如果有陷阱上的代理設置,你可以在同一OID得到相同的信息做一個民意調查?

是的,但通常在陷阱中包含信息會更好,因此管理站不必爲設備執行多次「往返」操作。例如,如果陷入屬性值更改,最好在陷阱中發送新值和新值。

沒有使用mib文件,有沒有辦法一次查詢設備的所有信息?如果不是,並且您正在編寫自己的定製管理器,那麼您是否必須知道它在前面報告的結構?

通常不會...... SNMP Get-next原語是爲這種情況而設計的。

如果您正在設置要報告的代理程序,是否通常有方法控制發送陷阱的頻率?或者它通常會在滿足某些條件的情況下發送陷阱?

是的,由代理人決定何時發送陷阱。

如果你正在開發你自己的代理,我建議你看看Net-SNMP,我高度。即使您選擇使用其他產品,Net-SNMP代碼的設計和實施也非常完善。此外,它還有許多額外功能來幫助開發和測試代理(和管理系統)。

+0

複製並粘貼? -1作爲別人使用相同的答案 – 2010-03-25 13:31:16

+0

堆棧溢出新手錯誤。關於NetSNMP的評論應該仍然有效且有用。 – Doug 2010-03-29 17:44:45