troushoo

スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

  1. --/--/--(--) --:--:--|
  2. スポンサー広告

TCP Retransmit・DupACK・Fast Retransmit ~トラブルシューティング時のキーワード~

今回は、TCP Retransmit と DupACK と Fast Retransmit の紹介を行います。
いずれも、パケットロスといったネットワークの性能が出ない時に出現するキーワードです。

【TCP Retransmit】
Retransmit とは”再送”を意味する英単語です。
TCPでは、TCPデータの送信者が、受信者からACKを受け取れなかった場合、TCPデータの再送(=Retransmit)を行います。
これがTCP Retransmitです。
TCP Retrasmitの発生は、送信者と受信者の間でのパケットロスの可能性を示唆しています。

以下の例は、Retransmitが起こっているときのパケットキャプチャです。
①で、192.168.122.129へ ”HTTP/1.1 200 OK” というデータを送っています。
②の間、192.168.122.129へACKが受信者から帰ってきていません。
③で、192.168.122.129へ、①で送った同じデータ ”HTTP/1.1 200 OK” をRetransmitしています。
TCP Retransmit

補足:
この「ACKを受け取れなかった」と判断するタイムアウト値(= Retransmission timeout と呼びます)の初期値はWindowsではTCPInitialRTTで設定することができます。
詳細はMicrosoft社のサイト「TCP/IP の最大再送信タイムアウトを変更する方法」をご確認ください。


【TCP DupACK】

TCPにおける正常時は、データ受信者がACKを送る際、Acknowledgement number(= 以下ACK番号) に受信者が次に期待するシーケンス番号を入力してACKを送ります。
以下の例は、正常時のパケットキャプチャです。
①で、192.168.122.129がACKを送る際に、ACK番号に2829を設定しACKを送っています。
②で、192.168.122.129にシーケンス番号が2829である物が届いていることがわかります。
TCP正常時

しかし、パケットロス等で、受信者が想定しているシーケンス番号より、大きな値のシーケンス番号が送信者から送られてくることがあります。
すると、受信者は自分が想定しているシーケンス番号をACK番号にセットしたACKを直ちに送信者に送ります。これがDupACKです。
以下の例は、DupACKの時のパケットキャプチャです。
①で、192.168.122.129がACKを送る際にACK番号に4243を設定しACKを送っています。
②で、192.168.122.129にシーケンス番号が7071である物が届いていることがわかります。もちろん7071は4243より大きいです。
③で、192.168.122.129がACK番号に4243を設定しDupACKを送っていることがわかります。
DupACK

【TCP Fast Retransmit】
データ送信者が、DupACKを複数回受け取ると、Retransmission Timeoutの経過を待つことなく、再送を行います。
これを、Fast Retrasmit と呼びます。
以下の例は、Fast Retransmitが行われているときのパケットキャプチャです。
①で、192.168.122.1にDupACKが3回送信されていることがわかります。
②で、192.168.122.1からFast Retrasmission が送信されていることがわかります。
Fast Retrasmit

補足:
この「DupACKを複数回受け取る」の”複数回”の回数は、Windows Server 2003では、初期値は2です。
また変更することも可能で、レジストリ値”TcpMaxDupAcks”で設定もできます。
詳細は、Microsoft社のサイト「TcpMaxDupAcks」をご確認ください。
(Vista以降のOSについてのMicrosoftからの情報は見つけることができませんでした。)

URL
・TCP DupACKs and TCP Fast Retransmits (英語)
本記事の元ネタです。
http://blogs.technet.com/b/networking/archive/2011/05/16/tcp-dupacks-and-tcp-fast-retransmits.aspx


  1. 2013/05/07(火) 22:02:48|
  2. ネットワーク
  3. | トラックバック:0
  4. | コメント:0
<<Windows 8/Windows Server 2012のPowerShellでAlternate Data Streamsの操作 | ホーム | カーネルダンプからETWログを抽出>>

コメント

コメントの投稿


管理者にだけ表示を許可する

トラックバック

トラックバック URL
http://troushoo.blog.fc2.com/tb.php/111-dbbcafea
この記事にトラックバックする(FC2ブログユーザー)

スポンサーリンク

最新記事

月別アーカイブ

カテゴリ

ツール (92)
ネットワーク (76)
Visual Studio (56)
SOS・Psscor2/Psscor4 (25)
WinDbg (25)
Linux (24)
Azure (17)
Tips (20)
英語 (1)
About Me (1)
未分類 (0)

全記事表示リンク

全ての記事を表示する

検索フォーム

RSSリンクの表示

リンク

このブログをリンクに追加する

上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。