2015-07-10 65 views
2

我試圖發送SNMP請求到遠程位置。SharpSNMP最大重複次數增加導致緩衝區大小例外,通過GPRS

我使用SharpSNMP 8.5.0庫和代碼項目文章(here)中的Snmp.BulkWalk示例。

在這個例子中,他們使用10作爲最大重複,並使用嗅探軟件,我注意到創建多個數據包數據包,使步行在子樹內。其實我每次都得到120個數據包結果。所以我決定嘗試一個更高的最大重複次數,我注意到數據包數量正在減少,實際上我可以將所有數據都放在一個數據包中。現在我有另一個問題:當我使用GPRS在服務器上對設備進行snmpwalk時,遠程設備正在使用GPRS,我得到一個超時或緩衝區大小錯誤。當我在本地PC上運行相同的解決方案並從路由器訪問遠程設備時(不涉及GPRS),我不會收到任何錯誤並獲取所有數據!

有人可以解釋這種行爲嗎?它是否與GPRS限制有關? GPRS是不可靠的?或者它是服務器上的網絡限制?

(服務器中的MTU爲1500)。有沒有人有最佳實踐和可以通過SNMP-UDP數據包發送的最佳數據包大小的經驗?

回答

1

儘管我是該庫的作者,但我無法回答GPRS部分,因爲我不是移動網絡專家。

我可以回答的是數據包數量的部分,如果你看看「MAX-repititions」的定義,這是比較簡單的,

https://www.webnms.com/snmp/help/snmpapi/snmpv3/v2c/maxrepetition.html

通過一個較大的值設置這個參數,單個數據包可以包含更多的結果,並且明顯需要更少的數據包。

我在該代碼項目文章中使用了10,因爲它僅僅是一個例子。從上面的鏈接可以看出,其他庫可能使用50作爲默認值。

1

關於SNMP數據包大小的最佳實踐,我總是被告知應該避免超出網絡MTU。換句話說,設置最大重複次數,以便以太網幀不會定期超過1500字節。 (當然,這假設表格單元的大小是可預測的。)

雖然使用較大的數據包應該可以在大多數配置良好的網絡上工作,但建議避免在網絡上存在碎片數據包。也許數據包重新組裝可能會在網絡設備中造成更大的開銷。如果你打算把PDU分成幾個分組,那麼必須做更多來回請求的缺點並不是那麼糟糕。

例如,思科設備seems to follow this best practice,它的建議在a Microsoft article

(順便說一句,下次您有兩個單獨的問題,請考慮將它們發佈爲兩個問題!)