一個簡單的問題,我無法找到答案。SNMP:在一個PDU中可以請求多少個OID?
我知道GET請求可以用PDU中的多個OID發送。在一個請求中,一個PDU中可以請求多少個OID? SNMP有沒有限制?在UDP中?
一個簡單的問題,我無法找到答案。SNMP:在一個PDU中可以請求多少個OID?
我知道GET請求可以用PDU中的多個OID發送。在一個請求中,一個PDU中可以請求多少個OID? SNMP有沒有限制?在UDP中?
我終於找到了自己的答案,在這個線程: http://sourceforge.net/p/net-snmp/mailman/message/26203876/
沒有明確的限制,在SNMP功能SNMP一個GET請求變量綁定的數量。但是,在snmpget util(net-snmp)中有128個OID的軟件限制。
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(在該級別沒有分段)。
UDP數據包大小的限制。 –