TCP自分のマシンへ/からの接続)でのパケット損失を受動的に監視するにはどうすればよいですか?
基本的に、バックグラウンドで動作し、TCP ack/nak/re-transmittsを監視して、どのピアIPアドレスで大きな損失が発生していると思われるかに関するレポートを生成します。
私がSFについて見つけるこのような質問のほとんどは、iperfなどのツールを使用することをお勧めします。しかし、マシン上の実際のアプリケーションとの接続を監視する必要があります。
このデータはLinux TCPスタックにあるだけですか?
問題の規模の一般的な意味で、netstat -s
は再送信の総数を追跡します。
# netstat -s | grep retransmitted
368644 segments retransmitted
より詳細なビューを取得するには、segments
のgrepを使用できます。
# netstat -s | grep segments
149840 segments received
150373 segments sent out
161 segments retransmitted
13 bad segments received
より深いダイビングには、おそらくWiresharkを起動する必要があります。
Wiresharkでフィルターをtcp.analysis.retransmission
に設定して、フローによる再送信を確認します。
それは私が思いつくことができる最高のオプションです。
探索された他の行き止まり:
netstat -s
の画線は、単に/proc/net/netstat
を印刷していることを示しましたこれらの統計は/ proc/net/netstatにあり、 collectl
はインタラクティブに監視するか、後で再生するためにディスクに書き込まれます。
[root@poker ~]# collectl -st
waiting for 1 second sample...
#<------------TCP------------->
#PureAcks HPAcks Loss FTrans
3 0 0 0
1 0 0 0
もちろん、ネットワークトラフィックと並べて表示する場合は、n
に-s
を含めます。
[root@poker ~]# collectl -stn
waiting for 1 second sample...
#<----------Network----------><------------TCP------------->
# KBIn PktIn KBOut PktOut PureAcks HPAcks Loss FTrans
0 1 0 1 1 0 0 0
0 1 0 1 1 0 0 0
ss
ツールを使用して、詳細なTCP統計を取得できます。
$ /sbin/ss -ti
Debianでは、apt-get install iproute
を使用してバイナリを取得します。
dropwatch
ユーティリティを確認することをお勧めします。
どうやら古き良き sar は、再送信(およびその他のTCP統計)を収集することができます。また、問題を調査する場合に興味深い他のすべての種類のシステム統計も収集できます。 CPU、メモリ、ディスクI/Oなど.
パッケージ:sysstatをインストールして、スイッチ-S SNMPでこの特定の種類の統計を有効にする必要がある場合があります。RHEL/ OracleLinuxでは、これは/etc/cron.d/sysstatで構成され、/ usr/lib64/sa/sa1が呼び出されます。デフォルトでは5分ごとですが、これも調整できます。
このデータの分析には、以下を使用します。