TCPパケット損失をどのように受動的に監視しますか?(Linux)


61

マシンとの間のTCP接続でのパケット損失を受動的に監視するにはどうすればよいですか?

基本的に、バックグラウンドにあり、TCP ack / nak / re-transmitsを監視して、どのピアIPアドレスが「大きな損失」を経験しているように見えるかのレポートを生成するツールが欲しいです。

私がSFで見つけたこのような質問のほとんどは、iperfなどのツールを使用することをお勧めします。しかし、マシン上の実際のアプリケーションとの接続を監視する必要があります。

このデータはLinux TCPスタックにそのまま存在しますか?

回答:


50

問題の規模の一般的な意味については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、フローごとの再送信を確認します。

それは私が思いつくことができる最高のオプションです。

調査された他の行き止まり:

  • netfilter / conntrackツールは再送信を継続しないようです
  • トレースnetstat -sは、それが単なる印刷であることを示しました/proc/net/netstat
  • / proc / net / tcpの列9は有望に見えましたが、残念ながら未使用のようです。

#watch 'netstat -s |を使用して、失われたパケットを監視できます。grep retransmited '
なし

これにより、アウトバウンドの問題のみが表示されます。「netstat -s | grepセグメント」は、私にとってより合理的なようです。
アコスタディノフ

1
適切なサイズのネットワークを管理している場合は、継続的な監視のためにwiresharkを介したpastmonをお勧めします-pastmon.sourceforge.net/Wikka-1.1.6.5/wikka.php?wakka=HomePage
symcbean

4
何らかの理由で、それretransmitedは私のために綴られています(Ubuntu Server 14)。
須藤

1
再送信と送信または受信の良いレートは何ですか?
-abourget

12

これらの統計は/ 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

もちろん、ネットワークトラフィックと並べて表示する場合は、nwithを含めます-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

7

このssツールを使用して、詳細なTCP統計を取得できます。

$ /sbin/ss -ti

Debianではapt-get install iproute、バイナリを取得するために使用します。


質問をする人は、出力を見ることができるツールを探していました。これまでに述べたコマンドの一部はこの方法では動作しませんが、すべての賛成の回答には少なくとも1つの方法が含まれていました。
アンドリューB

2
@AndrewB:できますwatch ss -ti
ジョンツウィンク

3

ノースカロライナ大学(UNC)の何人かの男が、これを正確に調査するユーティリティを構築したようです。

方法論

TCPは、変更の対象となるレガシープロトコルの典型的な例です。残念ながら、TCPの損失検出/回復メカニズムと同じくらい基本的なものの評価は包括的なものではありません。私たちの目的は、TCP損失とそのTCPパフォーマンスへの影響を完全に現実的に評価することです。

私は、実世界のTCP接続の受動的分析に依存して、分析で必要な詳細レベルと現実感を実現しています。

http://www.cs.unc.edu/~jasleen/Research-passivetcp.htm#Tool

ツール

このツールの目的は、tcpanaly、tcpflows、LEAST、Mysteryなどの従来のツールで提供されているものよりも、シーケンス外のセグメントを特定し、特徴付けるためのより完全で正確な結果を提供することです。私たちの方法論は、パケットトレースでシーケンス外(OOS)に見える各セグメントを次のカテゴリのいずれかに分類します:タイムアウト、重複ACK、部分ACK、選択的ACK、または暗黙的な回復のいずれかによってトリガーされるネットワーク再配列またはTCP再送信。さらに、各再送信は、必要かどうかも評価されます。

生産品質だとは言いません。以前、メモリにip / port / ackタプルを保存し、pcap出力をスキャンして重複したデータをレポートするためのクイックperlスクリプトを作成しました。これは、より徹底的な分析を提供するようです。



0

どうやら古き良きsarは再送信(および他のtcp統計)を収集でき、CPU、メモリ、ディスクI / Oなどの問題を調査する場合に興味深いその他のあらゆる種類のシステム統計も収集できます。

パッケージをインストールする必要がある場合があります:sysstatおよびスイッチ-S SNMPでこの特定の種類の統計を有効にします。RHEL/ OracleLinuxでは、これは/etc/cron.d/sysstatで構成され、/ usr / lib64 / sa / sa1が呼び出されます。デフォルトでは5分ごとですが、調整することもできます。

このデータの分析には次を使用します。

  • sar(コマンドライン、テキストベース)
  • sadfはhttp://sebastien.godard.pagesperso-orange.fr/matrix.htmlに従ってSVGを作成します
  • ksar(素敵なグラフをプロットし、Javaで実行できます-正確に思い出すと、sf.netとgithubで選択できるクローンがいくつかあります)
  • http://www.sargraph.com(PHPをベースにしていますが、プログラミング言語ではなくアプリケーションです。
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.