2017-07-06 83 views
0

在使用異步pysnmp bulkCmd與ASYNCIO,如果被請求的OID有許多值(如1.3.6.1.2.1.17.4.3.1.2,顯示由Cisco交換機學習到的MAC地址),或者如果在一個使用若干的OID請求,我有問題,響應中的OID總數受網絡的MTU/MSS限制,這意味着並非所有OID都收到。lexicographicMode在ASYNCIO bulkCmd

這個問題可以如果同步bulkCmd使用lexicographicMode控制,但異步發電機bulkCmd該haven`t選項。

它可以使用的GetNext但它顯著減少,因爲數據包的增加總數目(每一個OID請求/響應)的性能。 有沒有辦法使用異步bulkCmd響應收到的控制,所有的「OID子」?

回答

0

您可以使用maxRepetitions參數限制響應的OID的數量每每個請求的OID?這是example中的50

我相信lexicographicMode選項旨在停止行走MIB一旦最初的前綴超出範圍。所以它對消息的大小隻有間接的影響,使得它不可靠的目的。

+0

我的問題是,由於最大數據包大小,我沒有收到所有必要的數據(OID)。使用asyncio批量請求,只有一個udp數據包可以接收,而不管maxRepetitions的值是多少。但我已經在這裏找到解決方案[示例](http://pysnmp.sourceforge.net/examples/hlapi/asyncio/manager/cmdgen/walking-operations.html) - 我可以把批量請求放在while循環和手動控制中,如何很多請求/響應將被髮送。 –

+0

'maxRepetitions'參數限制每個請求OID在響應中返回的「下一個」OID的數量。因此,它間接控制了UDP數據包的大小,但它決不會影響你得到的UDP數據包的數量(它總是一個數據包)。所以,就像你說的那樣,解決方案是遍歷GETBULK,將'maxRepetitions'限制爲一個理智的值,不要超大MTU。 –