2013-12-18 111 views
4

我發送SNMP getBulkRequest,使用基於一些第三方庫(如agent ++,snmp ++等)的專有SNMP瀏覽器以及多個OID(例如,
.1.3.6.1.2.1.1.1
.1.3.6.1.2.1.1.5
.1.3.6.1.2.1.1.6
.1.3.6.1.2.1.1.4具有多個OID的SNMP getBulkRequest - 哪個返回的響應OID順序?

它是保證返回的set (如果存在具有這種前綴的OID)將會以完全相同的順序返回?

例如
.1.3.6.1.2.1.1.1.0
.1.3.6.1.2.1.1.5.0
.1.3.6.1.2.1.1.6.0
.1.3.6.1.2.1.1.4.0


歡迎提供任何有關此問題的解答,文檔鏈接和提示。


UPDATE:非重讀= 0,MaxRepetitions> = 1

回答

6

假設代理正確實施,那麼是的,儘管它可能是一個更清晰一點說全返回集合的響應PDU由請求中每個OID的單個結果集組成,並且這些單獨的結果集按照請求中給出的相同順序返回。每個單獨的結果集表現爲零或更多(取決於非中繼器和最大重複字段的值)get-next請求。

如果您的非中繼器爲N,則響應中的前N個OID將與請求中的前N個OID相對應,每個OID的行爲類似於單個下一個請求(返回下一個更大的OID或endOfMibView異常if沒有了)。請求中的其餘OID受最大重複次數限制。

如果您的最大重複次數是M,那麼請求中的每個剩餘OID的行爲將類似於0..M下一個請求(從請求OID返回M到下一個更大的OID;如果沒有M更大,那麼在請求中的下一個OID產生的OID之前,會有一些較小的數字,然後是endOfMibView異常。

[這也意味着如果非中繼器和最大重複均爲0,則結果爲空集;或者如果最大重複次數爲0且非中繼器小於請求中OID的數量,則對於那些超過非中繼器的請求OID,將不會返回任何內容。]

如果在處理代理程序不能在不超過其消息大小限制的情況下向響應添加任何更多結果,則處理停止並且代理程序將返回迄今爲止獲得的部分結果。

參考:RFC 3416 section 4.2.3

+0

這是可用於GetRequest與更多的OID呢? – ALZ

+0

我懷疑你是在問太大的迴應。我想我可能錯誤地記錄了特定實現的內部處理。 GetBulk將返回部分結果,但錯誤狀態tooBig。 對於其他請求,它是全或全無。如果響應超出代理的郵件大小限制,它們將返回太大的空變量綁定列表。 –