簡體   English   中英

限制TCP發送速率

[英]Limiting TCP sending rate

TCP流量本身將不斷增長,直到它們填滿從srcdst使用的鏈接的最大容量(如果所有這些鏈接均為空)。

有一個簡單的方法來限制這一點嗎? 我希望能夠以最大X mbps速率發送TCP流。

我考慮過只使用socket.send()函數每秒發送X個字節,然后其余時間進入休眠狀態。 但是,如果鏈接變得擁塞並且速率降低,則一旦鏈接再次變得不擁塞,它將需要恢復以前無法發送的內容,並且速率將增加。

在TCP級別,唯一的控制權是傳遞給send()的字節數以及調用它的頻率。 一旦send()已將一些字節移交給網絡堆棧,則完全取決於網絡堆棧要發送它們的速度(或慢速)。

鑒於上述情況,您可以通過監視已發送的字節數以及自開始發送以來已經經過的時間,並推遲隨后對send()的調用(和/或您的數據字節數)來大致限制傳輸速率傳遞給send()),以防止平均費率高於目標費率。

如果您想要更好的控制,則需要使用UDP而不是TCP。 使用UDP,您可以直接控制每個數據包何時發送。 (而使用TCP,則由網絡堆棧決定何時發送每個數據包,數據包中的內容,何時重新發送丟棄的數據包等)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM