2016-02-06 94 views
0

一個簡單的問題,我無法找到答案。SNMP:在一個PDU中可以請求多少個OID?

我知道GET請求可以用PDU中的多個OID發送。在一個請求中,一個PDU中可以請求多少個OID? SNMP有沒有限制?在UDP中?

+0

UDP數據包大小的限制。 –

回答

-1

SNMP允許PDU的大小達到網絡的MTU。緩衝區應該與預期的最大數據包一樣大,所以如果可能的話,它應該對應於MTU。例如,以太網允許高達1500字節的幀有效載荷。

因此,您的PDU最大大小通常平均高達10個varbinds。

+0

感謝Andrew的回覆。 – Serge

+0

但是,SNMP數據包將被分解爲多個UDP幀並在目的地重新組合。因此,SNMP協議本身是否有限制還有一個問題 – Serge

+0

您在這裏並不完全正確。當然,他們會在目的地重新組裝,但最終會丟失塊和重新排序問題。因此建議不要使PDU大於MTU大小。 –

0

SNMP是應用層協議,UDP/TCP是傳輸協議。對於UDP(IPv4),受限於產生64 KB UDP數據報的16 bit length字段。鑑於上述情況,SNMP數據包必須少於此數據包。取決於可以將多少OID打包到PDU中,這是OID長度(以及ASN.1傳輸編碼)的函數,請求的OID總數可能會有所不同。限制128位於sub-id,它代表單個Octet的長度,並記住這是TLV(類型長度值)編碼,所以爲RequestPDU中的那些添加幾個字節。在響應PDU中,雖然OID的類型和長度將與RequestPDU中的相同,但該值將佔用更多的字節,從而增加了PDU的整體大小。有關正在請求什麼「類型」OID值(特別是這些值可能會多長)的額外位,也可以在可以打包到單個ResponsePDU中的OID數量中發揮作用。

此外,SNMP TCP (RFC3430)TLS/TCP for SNMP (RFC5953)在SNMP運行在TCP傳輸上也很流行。那裏的PDU可能會更長,但我覺得處理更長的PDU的成本可能會對在低功耗設備上運行的SNMP代理(至少在過去)產生影響。在PDU級別分解它仍然需要每個PDU應用協議級別的認證/數據完整性和可選隱私檢查稅。

有趣的是,在過去,SNMP上的第一個RFC確實提出了484個八位字節的限制,但是也表明必須支持更大的PDU處理。下面是一個代碼段RFC 1157 SNMPv1

此協議的實現不需要接受的長度超過484個八位位組的消息 。但是,如果可行,建議 實現支持更大的數據報。

而最後一位在1500字節是指以太網幀大小,即第2層(數據鏈路層)的限制。坐在最上面的IP層將根據MTU大小對數據包進行分段處理,但完整的IP數據包組件將在其切換到上層IP fragmentation之前執行。然後根據具體情況將IP數據包傳遞給UDP或TCP。最終當應用層接收到數據包時,它將是一個完全形成的SNMP PDU(在該級別沒有分段)。

0

正如Aniruddh正確指出的那樣,理論極限是64kB。但實際限制較低。每個SNMP代理實現具有不同的限制,良好的NMS應用程序將在代理的發現階段(除了重傳策略等)確定此限制。

參考文獻:

  1. eHealth
  2. Juniper

或谷歌 「SNMP最大PDU大小」。

相關問題