2011-06-17 82 views
0

TCP沒有優先考慮IP等流量。當有許多TCP背景連接打開上傳數據時(例如當BitTorrent在後臺播種時),因爲TCP一次只能選擇一個套接字將其數據包發送到IP級別,所以可能會出現延遲。因此,除了許多其他連接之外,一個特定的套接字必須等待輪到它,而不會導致延遲。測量來自Linux內核的TCP延遲

我目前正在做一些實驗,我試圖測量TCP在這種擁塞情況下產生的延遲。因爲這種延遲發生在傳輸層(TCP)上,所以我想通過鉤住使用某些Linux系統調用的精確時刻來精確測量延遲。

我願意上傳數據到服務器使用TCP(我可以使用Iperf工具)。掛鉤系統調用我想使用SystemTap。這個工具可以告訴我什麼時候調用一個特定的系統調用。

我想知道哪些是發送數據包時使用的兩個系統調用的名字:

  1. 呼籲包的第一個TCP級功能(是* tcp_sendmsg *);
  2. 最後一個TCP級別的函數需要通過它的IP網絡級別的數據包?

調用這兩個系統函數的時刻之間的差異(增量)是我想知道的延遲。

+0

也許有點偏離主題,但如果你想在TCP連接上添加一些優先級,你可以做到這一點,與QoS管理 看看[這裏](http://www.prout.be/qos/QoS-connection-tuning-HOWTO.html)或那裏[Linux高級路由和流量控制](http://lartc.org/howto/ ) – 2011-06-17 11:59:28

回答

1
  1. 要求數據包的第一個TCP級別函數是來自'net/ipv4/tcp.c'系統源文件的* tcp_sendmsg *。
  2. 要求數據包的最後一個TCP級別函數是來自'net/ipv4/tcp_output.c'系統源文件的* tcp_transmit_skb *。

了對來自Linux的TCP源文件信息的一個有趣的網站是這樣的:tcp_output