我有一個嵌入式應用程序,具有此要求:一個傳出TCP網絡流需要絕對最高優先級,超過所有其他傳出網絡流量。如果有任何數據包在等待在該數據流上傳輸,它們應該是下一個發送的數據包。期。Linux低延遲tcp流
我的成功度量如下:在沒有後臺流量時測量高優先級延遲。添加背景流量,然後再次測量。延遲的差異應該是發送一個低優先級數據包的時間。通過100Mbps鏈路,mtu = 1500,大約是150 us。我的測試系統有兩個linux盒子通過交叉電纜連接。
我已經嘗試了很多很多東西,儘管我的延遲時間有相當大的改善,但還沒有達到目標(我目前看到5毫秒的背景流量延遲)。我已經發布了另一個非常具體的問題,但認爲我應該從一個普遍的問題開始。
第一個問題:Linux可以嗎?第二個問題:如果是這樣,我需要做什麼?
- tc?
- 我應該使用什麼qdisc?
- 調整內核網絡參數?哪個?
- 我還缺少什麼其他的東西?
感謝您的幫助!
埃裏克
更新2010年10月4日: 我成立了tcpdump的同時在發射端和接收端。這是我看到在發送端(那裏的東西似乎爲擁擠):
0 us Send SCP (low priority) packet, length 25208
200 us Send High priority packet, length 512
在接收端,我看到:
~ 100 us Receive SCP packet, length 548
170 us Receive SCP packet, length 548
180 us Send SCP ack
240 us Receive SCP packet, length 548
... (Repeated a bunch of times)
2515 us Receive high priority packet, length 512
的問題似乎是SCP的長度數據包(25208字節)。這根據mtu(我爲此測試設置爲600)分解爲多個數據包。但是,發生在網絡層的流量控制比低,因此我的等待時間是由最大tcp傳輸數據包大小決定的,而不是mtu! Arghhh ..
任何人都知道一個很好的方法來設置在Linux上TCP的默認最大數據包大小?
這是一個您正在編碼的應用程序,您可以自己控制它,或者您是否嘗試使用網絡或操作系統來實現此目的? – Nick 2010-10-01 18:29:56
這是我自己編寫的應用程序,並且完全控制套接字參數。 – Eric 2010-10-01 23:40:19