1 回答

TA貢獻(xiàn)1810條經(jīng)驗(yàn) 獲得超4個(gè)贊
首先,您不僅有設(shè)備上每個(gè)接口的 MTU 大小以及發(fā)送/接收的任何目的地,而且兩者之間的每個(gè)設(shè)備也有一個(gè) MTU 大小。出于這個(gè)原因,正如其他人所提到的,您可能希望使用 MTU 普遍接受的內(nèi)容,因?yàn)槟赡軣o(wú)法控制數(shù)據(jù)路由中的每個(gè)設(shè)備。在 UDP 的情況下,MTU 實(shí)際上只是表示數(shù)據(jù)報(bào)在分片之前可以有多大。
其次,您幾乎肯定希望您的 SND/RCV 緩沖區(qū)大于 MTU。這些是內(nèi)核緩沖區(qū),當(dāng)您還沒(méi)有準(zhǔn)備好接收數(shù)據(jù)時(shí),它們會(huì)保留數(shù)據(jù)。更大的 UDP RCV 緩沖區(qū)意味著內(nèi)核會(huì)在將它們放入深淵之前為您緩沖更多的數(shù)據(jù)包。也許您對(duì)每個(gè)數(shù)據(jù)包都有一些重要的工作要做。根據(jù)比特率,您可能需要更大或更小的內(nèi)核緩沖區(qū)。
最后,您使用的是 UDP。無(wú)法保證您會(huì)按順序或完全收到數(shù)據(jù)包。您和對(duì)等方之間的任何路由器都可能出于任何原因決定丟棄數(shù)據(jù)包。由于您使用的是 UDP,因此您應(yīng)該為丟棄和亂序的數(shù)據(jù)包做好準(zhǔn)備。您可能還需要某種重傳機(jī)制,這會(huì)使事情變得更加復(fù)雜。
或者,如果丟棄的數(shù)據(jù)包不可接受,您可能會(huì)考慮使用 TCP,因?yàn)槟罆r(shí)間是不確定的。
如果您使用的是 linux,則可以在 /proc/sys/net 中查看當(dāng)前緩沖區(qū)大小。通常內(nèi)核會(huì)加倍你的要求。
此外,您可以通過(guò)觀察 /proc/net/udp 中的數(shù)據(jù)包丟失來(lái)調(diào)整緩沖區(qū)大小。如果您看到下降,您可能希望使您的 rcv 緩沖區(qū)更大,特別是在數(shù)據(jù)是突發(fā)的和處理密集型的情況下。如果您的數(shù)據(jù)以一致的速率進(jìn)入并且您仍在丟棄數(shù)據(jù)包,那么您處理它們的速度不夠快。
- 1 回答
- 0 關(guān)注
- 227 瀏覽
添加回答
舉報(bào)