2016-01-20 13 views
5

Ubuntu üzerinde çalışan apache sunucum var. İstemci bir görüntüyü bağlar ve indirir. Altta yatan TCP bağlantısı için RTT tahminlerini çıkarmam gerekiyor. Bunu yapmanın bir yolu var mı? Belki de bu bilgiyi bir yere yazabilmem için hata ayıklama modumda tcp yığınımı çalıştırmak gibi bir şey olabilir mi?Eklenti TCP gidiş dönüş süresi (RTT) tahminleri linux üzerinde

Tcpdump'u çalıştırmak ve kayıtlı izlerden RTT'leri ayıklamak istemediğimi unutmayın! TCP yığınının RTT tahminlerine ihtiyacım var (görünüşe göre bu, TCP_INFO soket seçeneğiyle alabileceğiniz bilginin bir parçasıdır). Temel olarak, bir kanca eklemek ve TCP bağlantısının tahmini RTT'sini gelen her pakete (veya her değişime) kaydetmek için tcpprob (kprobe) gibi bir şeye ihtiyaç duyar.

GÜNCELLEME:

ben bir çözüm buldum. ttt, tıkanıklık penceresi ve daha fazlası tcpprobe kullanılarak kaydedilebilir. Aşağıda bir cevap gönderdim.

+0

http://stackoverflow.com/questions/16231600/fetching:

kill $pid 

output.out biçimi (hat 198 ile source göre) durdurmak için, sadece bu öldürme işlemi -the-tcp-rtt-in-linux – indiv

+0

Teşekkürler! Evet, "ss" ile aşina olduğum, ama bana RTT'nin çok kaba bir örneklemesini vereceğinden tam olarak ihtiyacım olan şey tam olarak değil. Bir kanca eklemek ve TCP bağlantısının tahmini RTT'sini gelen her pakete (veya her değişime) kaydetmek için tcpprob (kprobe) gibi bir şeye ihtiyacım var. – kakhkAtion

+2

Hmm. Eh Linux tıkanıklık kontrolü algoritmaları net/ipv4/'dizininde takılabilir modüllerdir. Her bir hesap farklı bir şekilde rtt (ve [reno] (http://lxr.free-electrons.com/source/net/ipv4/tcp_cong.c) bunu hesaplamamaktadır!) belirli bir uygulamaya girmeliyiz. Kübik etiketlendiğini görüyorum, bu yüzden [tcp_cubic.c] (http://lxr.free-electrons.com/source/net/ipv4/tcp_cubic.c). Ben rtt almak için genel bir yöntem olduğunu sanmıyorum, ama kesinlikle yanlış olabilir ... – indiv

cevap

3

Bu kprobe gelen paketler yanıt olarak bir TCP bağlantısının durumunu kayıtları kullanılarak tcp_recv işleme yoluna bir kanca ekler bir modüldür tcpprobe, kullanılarak yapılabilir.

sudo modprobe tcp_probe port=443 full=1 
sudo chmod 444 /proc/net/tcpprobe 
cat /proc/net/tcpprobe > /tmp/output.out & 
pid=$! 

tam = 1: Alınan

tam her ack paket oturum = 0

Diyelim ki 443 numaralı bağlantı noktasında TCP bağlantısı araştırması istediğimizi varsayalım, aşağıdakileri yapmanız gerekir: yalnızca kınamakta değişiklikler (bunu kullanırsanız, çıktınız boş olabilir)

Şimdi pid lo olan işlemdir sondayı döndürmek.

[time][src][dst][length][snd_nxt][snd_una][snd_cwnd][ssthresh][snd_wnd][srtt][rcv_wnd] 
İlgili konular