ACKレコードの重複の原因は何ですか?


19

複数の重複したACKレコードを表示している少数のクライアントマシンからのWiresharkキャプチャを確認しています。これにより、再送信パケットとシーケンス外パケットがトリガーされます。

これらは、次のスクリーンショットに示されています。.26はクライアントで、.252はサーバーです。

ここに画像の説明を入力してください

ACKレコードが重複する原因は何ですか?

それが役立つ場合の背景:

特定のクライアントサイトでのネットワークスループットの問題を調査しています。ユーザーインターフェイスの観点から認識される問題は、1 gbpsのWAN接続が十分に活用されていないにもかかわらず、データがゆっくりと送信されることです。

ほとんどすべてのクライアントマシンに同じ問題があり、20台を超えるマシンでテストされています。問題のない2台のマシンが見つかりました。現在、構成の違いを特定しています。問題のない2台のマシンで、ACKレコードが重複するのは最大で1つしか見られなかったことに気付きました。通常、問題のあるマシンには3つの重複したACKレコードがあります。注目すべき違いの1つは、正常に動作するマシンはすべてネットワーク運用チームのメンバーに属し、他のすべてのマシンは「正社員」用であることです。マシンは標準であるはずですが、ネットワーク管理者はローカルシステムに変更を加えることもできました。これは、私たちが調査しているもう1つの側面です。

サーバーのTcpMaxDupAcks設定を変更しようとしましたが、実際に必要な値は5で、有効な範囲は1〜3のみです。

サーバーはWindows Server 2003です。クライアントはすべてエンタープライズ管理のWindows XPです。2つの正常に動作するクライアントを含むすべてのクライアントに、Symantecアンチウイルスがインストールされています。

これは、この問題を示した数百のクライアントサイトの中で唯一のものです。

pathping 問題のマシンからでも56ms RTTと一貫した0/100パケット損失を示しています。

おかげで、

サム


2つのエンドポイント間のルーティングスイッチングハードウェアはどのようなものですか?
SpacemanSpiff

@ SpacemanSpiff、Cisco ASR 1006ルーターがあります。
サム

ITスタッフとクライアントは同じスイッチング機器を使用していますか?彼らのマシンの1つをIT領域に持ち込んで、問題がなくなるのを見ることができますか?
SpacemanSpiff

回答:


25

注:このキャプチャはクライアントマシンで行われたと想定しています。

TCPシーケンスの概要:TCPは、2つのアプリケーション間でバイトストリームを確実に配信します。この場合の「信頼できる」とは、とりわけ、TCPが順番の異なるデータをリスニングアプリケーションに配信しないことを保証することを意味します。

順序番号を使用して、順序どおりの信頼できる配信が実装されます。各ストリームのすべてのパケットには32ビットのシーケンス番号が割り当てられます(TCPは事実上、A-> BおよびB-> Aの2つの独立したデータストリームであることに注意してください)。AがBにACKを送信する場合、ACKフィールドの値は、AがBから見ると予想される次のシーケンス番号です。

上記から、サーバーからクライアントに送信されている少なくとも1つのTCPセグメントが失われたようです。順番の3つの写しACKsはクライアントによる速い再送信を引き起こす試みです。TCP送信者が同じデータに対して3つの重複した確認応答(つまり、最後に送信されたデータではない同じセグメントに対する4つのACK)を受信すると、ACKされたセグメントの直後のセグメントが失われたと合理的に想定できますネットワーク内で、すぐに再送信されます。

この場合、再送信が行われ、Wiresharkによって異常として識別されます。

joeqwertyで述べたように、パケット損失はほとんどの場合輻輳によって引き起こされます。また、インターフェイスカードの不良、ケーブルのゆるみなどによるリンク上のCRCまたはその他のエラーの結果である可能性があります。パスに沿ったすべてのリンクの統計を調べて、使用率が高いか、または多数のエラーが発生しています。

明らかな候補が見当たらない場合は、パスの複数のポイントで同時パケットキャプチャを実行して、損失が発生している場所を特定してください。

ここではどのようなWAN接続が使用されていますか?専用回線ですか?MPLS VPNリンク?パブリックインターネット上のIPsec VPN 他に何か?


コメントしてくれてありがとう。そのとおり、パケットキャプチャはクライアントからのものです。あなたが言っていることを理解していれば、重複したACKはクライアントが何か間違ったことをしているのではなく、実際にはクライアントから別のレコード(ACKの後のもの)を受け取らなかったトリガーです。あれは正しいですか?クライアントPCでこれを引き起こす可能性のあるものは何ですか?クライアントPCの問題でない場合、他のクライアントではなく一部のクライアントで一貫して表示されるのはなぜですか?
サム

WANは、東海岸と米国中西部の3つのサイト間の「2つのポイントツーポイント回線」です。
サム

そのとおりです; DUPACKはパケット損失の症状です。一部のクライアントで問題が発生し、他のクライアントでは発生しない理由については、影響を受けるクライアントに共通するものを解決する必要があります。すべて同じオフィスにいますか?一般的なネットワークインフラストラクチャを使用しますか?(スイッチまたはリンク?)。行う価値のあることの1つは、影響を受ける各マシンでmtr(またはpathpingWindowsで)使用して、パケット損失が発生していると思われるサーバーへのパスに共通ホップがあるかどうかを確認することです。スイッチポートデータを確認するために使用できるネットワーク監視システムはありますか?
ムラリSuriar

4

問題がどこにあるかを特定している間、パケットダンプは症状の1つに過ぎないと考えてください...類推として、誰かが胸の痛みで診察室に入った場合、医師は3時間かけてその性質を調査しません痛み。彼はそのことに約2分を費やし、原因の95%が胸焼けまたは狭心症であることを知っています...同様に、重複したACKが表示された場合、すぐに痕跡の雑草に穴を開けないでください。

接続が確立された後、TCPのパフォーマンスが低下するのは、中継ネットワークの問題が常に原因とは限りません。サーバーのCPUまたはディスクの制限の結果として発生することもありますが、クライアントPCの問題が原因で発生することもあります。Wiresharkトレースの雑草を数週間掘り下げて、mtrを使用して比較的迅速に問題を見つけるか、CPUやディスクI / Oなどの他のホストメトリックを確認しました。

最初のタスクは、これがネットワークの問題なのかホストレベルの問題なのかを証明することです。ネットワークを介して実際のトラフィックを送信することに焦点を当て、キューイング/ルーズ/リオーダーを行っているかどうかを確認してください注1これは、このような潜在的なネットワークの問題の最終結果です

私はどうなるpingのスループットの問題が起こっている間に、クライアントとサーバーの間で長時間のサンプリング(私のために通常は時間)。これには、mtrまたはpingプロッターフリーウェアを使用できます。あるホップでパケットが常に失われ、その後すべてのホップがそれ以上失われる場合、潜在的なネットワークの疑いがあります。デバイスのICMPレート制限により、パケットが失われているように見えるホップが発生する可能性があることに注意してください。そのため、そのホップから続くトレンドを探したいのです。


注1トラフィックを並べ替える場合、wiresharkが提供するエキスパート情報フィールドにかなり早く表示されます


デフォルトでネットワークを非難するのは良いアプローチではないことに同意します。スタック全体のインスツルメンテーションは、常に適切な方法です。ただし、この場合、DUPACK、異常なセグメント、および再送信されたセグメントは、2つのエンドポイント間の何らかのネットワーク損失を示しているようです。
ムラリSuriar

@Murali Suriar、あなたの主張(これは正しい可能性が十分にあります)に行きましょう。パケット損失がある理由を特定する必要あります。私たちITの人々は、私たちwiresharkが顕微鏡をあまりにも長く見たいと思うまで、神秘的に恋に落ちました。私が作成しているポイントはpcap、TCPの歴史を深く掘り下げるよりも、パケット損失、CPUサイクル、およびディスクI / Oの計測にサイクルを費やすほうがよいということです。それを行う時間はありますが、通常は分析のこの段階ではありません。
マイクペニントン

@Mikeは同意しました。そのため、最初のステップとして、パスに沿ったデバイスのエラー/使用情報を探すことを提案しました。私は、到達可能性以外のICMPベースの診断の大ファンではありません。あなたが言うように、レート制限と誤って設定されたACL /ファイアウォールにより、信頼性が低下する場合があります。ただし、エンタープライズネットワーク(これはそう聞こえます)では、MTRが正しい方向を示すことがよくあります。MTRのもう1つの問題は、多くの場合1つの問題のみを指していることです。パスに沿って複数の障害が存在する可能性が完全にありますが、最初の障害を修正するまで見つけることはできません。
ムラリSuriar

TTLステッピングを使用したICMPは万能薬ではなく、複数の障害が発生する可能性があります。ただし、ファイアウォールとロードバランサーを扱うすべての欠陥について、問題の特定のアプリケーションポートでホストレベルの計装されたTCP / UDPセッションを実行できない限り、ICMPは私たちが持っている最高のリモート診断です... 、このソケットは何度も再送信していますが、なぜですか?70%の時間、私は撤退するmtrか、それとも同類であり、過去15年間同じ方法で問題を解決してきました。特定のデバイスに注目したら、ドロップカウンターを見ることができます
マイクペニントン

1
@Sam:ネットワークの問題のトラブルシューティングに関するポイント:すべてのネットワークには「問題」があります。重要なのは、これらの問題がパフォーマンスや接続の問題を引き起こしているかどうかを判断することです。すべてのネットワークで重複したACK、TCP再送信、ブロードキャスト、誤ったプロトコルなどが見つかります。重複ACKの量と、重複ACKの送信に最も関係するホストに注目して、それが本当に大きな問題の症状なのか、ネットワークの自然な動作なのかを判断する必要があります。1,000パケットのうち5つの重複したACKが表示された場合、考え直しません。
-joeqwerty

3

ACKのない[再構築されたPDUのTCPセグメント]をたくさん見ることによって、それらのACKはSelective Acknowledgment(別名SACK)動作のために[TCP Dup ACK ...]として表示される可能性が高いと思います。

例:

  • クライアントはデータ部分を送信します(...、0,1,2,3,4,5,6、...)

  • サーバーは(0)を確認してから(2,4,3)を受信し、(5)、(6)を受信し、(1)

上記のシナリオでは、サーバーは最初に(2-4)範囲、次に(2-5)範囲、次に(2-6)範囲にackすることを正当に選択できます。「(AB)範囲ack」パケットの形成中に、サーバーはTCPヘッダーの最後に確認された部分(0)を指定する必要があります。Wiresharkは、range-ack(SACK)を[TCP Dup ACK ...]としてマークします。これは、これらのrange-ackのすべてがTCPヘッダーで同じlast-ackedパーツ値を持っているためです(あなたの場合はAck = 872619)。


1

ACKの重複と遅いネットワークパフォーマンスの組み合わせは、ネットワークの輻輳の問題のように思えます。ネットワーク上のブロードキャストトラフィックの量と速度を確認します。物理層とネットワーク層のブロードキャストとマルチキャストを必ず確認してください。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.