TCP Timeout and Retransmission

Slides:



Advertisements
Similar presentations
Step.5 パケットダンプ Wiresharkでパケットをキャプチャする PC 1 PC 2 PC 3 PC 4 ネットワーク
Advertisements

Timeout と再送 往復時間 予知が困難 他のトラフィックに依存 適応再送アルゴリズム データの採取.
Ibaraki Univ. Dept of Electrical & Electronic Eng.
前回の授業への質問 質問:プロトコルアナライザで測定できる範囲はどこまでか?
Webプロキシサーバにおける 動的資源管理方式の提案と実装
プログラミング基礎I(再) 山元進.
前回の課題 IPv6アドレス IP ARP ICMP NAT インターネット層 2003年12月4日 情報ネットワーク論 新村太郎.
仮想ブロードキャストリンクを利用した 片方向通信路の透過的経路制御 藤枝 俊輔(慶應義塾大学)
スケールフリーネットワークにおける 経路制御のためのフラッディング手法の提案と評価
ネットワーク層.
詳解TCP/IP TCPタイムアウトと再転送 れにうむ.
自律分散協調システム論 第13回「TCPと輻輳制御/QoS制御」
TCP (Transmission Control Protocol)
TCP Tahoeのウインドウ制御 (復習)
ネットワーク コミュニケーション トランスポート層 TCP/UDP 6/28/07.
詳解TCP/IP ACE B2 mewtwo.
TCP基礎講座 徳田研 ECN sada.
i-Pathルータのフロー情報を用いたDoS攻撃検知法
輪講: 詳解TCP/IP ACE B3 suzuk.
IPマルチキャスト通信とXcast 早稲田大学後藤研究室 Xcast班.
トランスポート層.
ネットワーク機器接続 2SK 情報機器工学.
ネットワーク性能評価.
予備親探索機能を有した アプリケーションレベルマルチキャスト
サーバ負荷分散におけるOpenFlowを用いた省電力法
6月19日 RoutingとRouting Protocol 大竹 由美子
イーサネット.
Copyright Yumiko OHTAKE
画像情報特論 (3) - TCP/IP (2) TCP (Transport Control Protocol)
Ibaraki Univ. Dept of Electrical & Electronic Eng.
無線環境におけるマルチホーム Mobile IPv6の通信品質分析
第11章 UDPユーザ・データグラム・プロトコル
TCP/UDP プロセス間の通信のためのプロトコル TCP:信頼性高、処理時間大 UDP:信頼性低、処理時間小 ftp SMTP HTTP
インターネットの基礎知識 その3 ~TCP・UDP層編~
DiffServにおけるクラスの新しい設定方法の提案
第9章 Error and Control Messages (ICMP)
第15章 TFTP:トリビアル・ファイル転送プロトコル
Ibaraki Univ. Dept of Electrical & Electronic Eng.
IP ルーティングの図示 情報科学科 松澤 智史.
ネットワーク技術II 第9.1課 TCP/IPプロトコルスイート
画像情報特論 (3) - TCP/IP (2) TCP (Transport Control Protocol)
画像情報特論 (3) - マルチメディアインフラとしてのTCP/IP (2)
画像情報特論 (3) - TCP/IP (2) TCP (Transport Control Protocol)
超高速ネットワークの弱点 光は速い 光は遅い 300km / 1msec (真空中) 180km / 1msec (光ファイバ中)
第16章 BOOTP:ブートストラップ・プロトコル
ジャンボフレーム 学籍番号:3603U072-0 氏名:塩津達郎.
アナライザ パケットを収集 測定用のマシン 通信.
演習第6回 情報通信技術論 インターネット工学
2009年12月4日 ○ 前田康成(北見工業大学) 吉田秀樹(北見工業大学) 鈴木正清(北見工業大学) 松嶋敏泰(早稲田大学)
非対称リンクにおける ジャンボフレームの性能評価
超高速ネットワークの弱点 光は速い 光は遅い 300km / 1msec (真空中) 180km / 1msec (光ファイバ中)
Diffservにおける 絶対的な品質保証法
TCP制御フラグの解析による ネットワーク負荷の推測
プログラミング 4 探索と計算量.
LAN(TCP/IP) インターネットワーキング編
OSI7層に関係する機器、仕様、機能など 物理層 データリンク層 ネットワーク層 トランスポート層 セッション層 プレゼンテーション層
Step.8 ファイアウォール PC 3 PC 1 PC 2 許可したアクセス のみ通過させる アクセスする ファイアウォール
GbEにおける TCP/IP の研究について
アドホックルーティングにおける 省電力フラッディング手法の提案
岡村耕二 情報ネットワーク 岡村耕二 情報ネットワーク.
レポート課題1 基本問題:  課題1. あるマシンまでのRTT (Round Trip Time)を測定したところ 128msec(ミリ秒)であった。このマシンに対してウィンドウサイズ64KByteでTCPの通信を行う場合のスループットの予想値を計算せよ。 ヒント1: 授業中に説明したように、スループットの値は、ウィンドウサイズを往復遅延時間で割れば良い。Byteとbitの換算に注意する。計算を簡単にするために1024≒1000として計算して良い(もちろん、この概算を使わなくても良い)。スループットは、ど
7月13日の演習問題・解答例 について ネットワーク長が 18、22、26、28 の場合の
画像情報特論 (3) - TCP/IP (2) TCP (Transport Control Protocol)
アプリケーションゲートウェイ実験 2001.10.5 鬼塚 優.
SMTPプロトコル 2001年8月7日 龍 浩志.
情報ネットワーク 岡村耕二.
TCP/IPの通信手順 (tcpdump)
ユーザ認証の盗聴 2002/9/10 峯 肇史 牧之内研究室「インターネット実習」Webページ
HTTPプロトコルの詳細 M1 峯 肇史.
Presentation transcript:

TCP Timeout and Retransmission miyu

今日のお話 TCPのタイムアウトと再転送 RTTとRTO スロースタート、輻輳回避、高速転送、高速リカバリ ICMPエラー 再パケット化

introduction TCPは信頼できるトランスポート層を提供する 信頼性を提供するには? 一方のエンドがデータを受け取ったら他方のエンドに確認応答をだす データ・セグメントも確認応答も途中で失われてしまったら? タイムアウトを設定し、タイムアウトが切れるまでにデータが確認応答されなければ、そのデータを再転送

TCPの4つのタイマー 再転送タイマー 持続タイマー →22章 キープアライブタイマー →23章 2MSLタイマー →18章6節

シンプルなタイムアウトと再転送の例 % telnet srv4 discard Trying 140.252.13.34… Connecte to srv4. Hello,world\n And hi \n Connection closed by foreign host. ←通常の状態でこの行を送信 ←この行を送信する前にケーブルをはずす ←9分後に出力

3 0.006441 ( 0.0016) bsdi.1029 > svr4.discard: . ack 1 win 4096 1 0.0 bsdi.1029 > svr4.discard: S 1747921409:1747921409(0) win 4096 <mss 1024>                      通常のコネクション 2 0.004811 ( 0.0048) svr4.discard > bsdi.1029: S3416685569 :3416685569(0) ack 1747921410 win 4096 <mss 1024> 3 0.006441 ( 0.0016) bsdi.1029 > svr4.discard: . ack 1 win 4096 4 6.102290 ( 6.0958) bsdi.1029 > svr4.discard: P 1:15(14) ack 1 win 4096                       hello worldの転送・ACK 5 6.259410 ( 0.1571) svr4.discard > bsdi.1029: . ack 15 win 4096 6 24.480158 (18.2207) bsdi.1029 > svr4.discard: P 15:23(8) ack 1 win 4096                       and hiが送られる 7 25.493733 ( 1.0136) bsdi.1029 > svr4.discard: P 15:23(8) ack 1 win 4096 … 19 566.488478 (64.0015) bsdi.1029 > svr4.discard: R 23:23(0) ack 1 win 4096 1,2,3行目…通常のTCPコネクション確立 4行目…hello worldの転送 5行目…確認応答 6行目…and hiが送られてる

7行目→18行目 セグメントの12回にわたる再転送 時間間隔 1,3,6,12,24,48,64 指数バックオフ

往復時間(RTT)の測定 タイムアウトと再転送の基本はコネクションにおけるRTTの測定! 経路の変化やネットワークの変化によって変化するから 適当なシーケンス番号を持つバイトの送信からその確認応答が返されるまでの往復時間を測定

往復時間の測定 R←αR+(1-α)M RTO=Rβ(RFC 793 再転送タイムアウト値) α…平滑化係数(推奨値 0.9) M…測定されたRTTの値 R…ロー・パス・フィルタを用いて平滑化されたRTT評価値 RTO=Rβ(RFC 793 再転送タイムアウト値) β…遅延分散係数(推奨値 2)

問題点 不必要な再転送により生じるRTTの変動に対応できない 必要なことは、平滑化されたRTT評価値に加えRTT測定値の分散を監視すること ネットワークに負荷がかかっていると、不必要な再転送は無駄すぎ 必要なことは、平滑化されたRTT評価値に加えRTT測定値の分散を監視すること 平均値と分散値をベースにRTOを計算すれば、単に平均値の定数倍として計算するよりも往復時間の変動に対応することが可能

RTTの測定値Mに適用する計算式 Err=M-A A←A+gErr D←D+h(|Err|-D) RTO=A+4D A←平滑化されたRTT Err←実際の測定値と現行RTTの差分 g←平均1/8 h←偏差の係数(0.25) 係数が大きくなるとRTTが変化したときRTOはより速く増加する

このACKは最初の転送のもの?2番目のもの? Karnのアルゴリズム パケットが再転送されたとき パケットが転送され、タイムアウトが発生 ↓  RTOが増大し、長いRTOでパケットが再転送 確認応答が到着 このACKは最初の転送のもの?2番目のもの? タイムアウトと再転送が発生したとき、 再転送されたデータの確認応答が戻ってきても RTT評価値を更新することはできない

往復時間の測定 500ミリ秒のTCPタイマー・ルーチンが起動するごとにカウンタを増加させる 送信から550mmsecで確認応答が到着するセグメントは? 1周期RTT(500ミリ秒)or2周期RTT(1000ミリ秒) 周期カウンタとセグメントのデータの初期シーケンス番号が記録される シーケンス番号を含むACKがくるとタイマーはOFF

往復時間の測定 0.03 0.53 1.03 1.53 2.03 2.53 3.03 0.00 1.061 1.063 1.871 1.872 2.887 1.061sec 3周期 0.808sec 1周期 1.015sec 2周期

RTT評価値の初期化、更新 初期再転送タイムアウトの計算 初期SYNの転送のRTO RTO=A+4D (AとDは0秒と3秒に初期化) Ex)5.802秒後にタイムアウトが発生すると RTO=A+4D=0+4x3=12秒 指数バックオフが12に適用 次のタイムアウトは2の倍数→24秒 次は4の倍数→48秒

初期SYNが失われたときのtcpdump 1 0.0 slip1024>vangogh.discard:S35648001:35648001(0) win 4096 <mss 256> 2 5.802377 (5.8024) slip.1024 >vangogh.discard: S35648001:35648001(0) win 4096 <mss 256> 3 6.269395 (0.4670) vangogh.discard > slip.1024: S 1365512705:1365512705(0) ack 35648002 win 8192 <mss 512> 4 6.270796 (0.0014) slip. 1024 > vangogh.discard: . ack 1 win 4096

最初のデータセグメントのACKが到着すると3クロック周期がカウント、評価値を初期化 5.802秒後にタイムアウトが発生 RTO=A+4D=0+4x3=12秒 指数バックオフが12に適用 最初のタイムアウト 次のタイムアウトは2の倍数→24秒 次は4の倍数→48秒 再転送後、467ミリ秒でACKが到着  AとDは更新されない 再転送の曖昧さに関するKarnのアルゴリズムが適用される 最初のデータセグメントのACKが到着すると3クロック周期がカウント、評価値を初期化 A=M+0.5=1.5+0.5=2 D=A/2=1 RTO=A+4D=2+4x1=6秒 2番目のACKが到着すると1クロック周期がカウントされ、評価値も更新 スロースタート

データセグメントの転送

セグメントの開始シーケンス番号と送信された時刻 再送が行われている

重複ACKの数をカウントし、3つ目をうけとるとセグメントが消失したと考え、シーケンス番号のセグメントだけを再転送 データ再転送しろ! 重複ACKの数をカウントし、3つ目をうけとるとセグメントが消失したと考え、シーケンス番号のセグメントだけを再転送 →高速再転送アルゴリズム

輻輳回避アルゴリズム 中継ルーターの限界に達して破棄されたパケットの問題を解決 前提: パケットの消失を示すものは? パケットが破損によって失われることは1%以下 パケットの消失は発信元とあて先のネットワーク上のどこかで輻輳が発生することを示す信号になる パケットの消失を示すものは? タイムアウトの発生 重複ACKの受信

輻輳回避とスロースタート 本当は独立したもの 輻輳が発生するとスロースタートを再度利用する コネクションで管理される二つの変数を必要とする ネットワークに流すパケットの転送率を減らすため コネクションで管理される二つの変数を必要とする 輻輳ウィンドウ(cwnd) スロースタートの閾値(ssthresh)

2つのアルゴリズムの機能 コネクションの初期化 cwndは1セグメント、ssthreshは65535バイト TCPの出力ルーチンはcwndと受けての広告したウィンドウとの最小値を超えた送信は行わない 輻輳回避は送り手によるフロー制御形式、window advertismentは受けてによるフロー制御形式 輻輳が発生すると、現行ウィンドウサイズ1/2がssthreshにセーブされる 新しいデータが確認応答されるとcwndを増加 cwnd<=ssthreshの場合スロースタート、そうでなければ輻輳回避

スロースタートと輻輳回避のグラフ化 (輻輳がcwnd=32セグメントで起こったとき) ssthresh cwnd (セグメント) 往復時間

高速再転送と高速リカバリアルゴリズム 順番の違ったセグメントを受け取ったとき、直ちに確認応答(重複ACK)を生成する必要がある セグメントの順番が違って送られてきた、送られてくるべきシーケンス番号を教える セグメントの消失なのか?単にセグメントが入れ替わって送られてきただけなのか 入れ替わってるだけなら1,2個、消失なら多いはず いくつか送られてくるのを待たなければならない 再転送タイマーが切れるのを待たずに… 消失したと思われるセグメントの再転送 輻輳回避を行うがスロースタートは行わない

高速再転送と高速リカバリアルゴリズム 重複するACKが3つ以上返された後もスロースタートを行わない 2台のエンド間でのデータフローは継続してるからスロースタートに以降してフローを削減したくない! 再転送を行う&&再転送の確認応答が届く前に新しいデータを含む3つのセグメントを送る

高速再転送と高速リカバリアルゴリズム 3番目の重複ACKが受け取られるとssthreshが現行のcwndの1/2に設定される 消失セグメントの再転送 cwndをssthreshにセグメントサイズの3倍を加えたものに設定 別の重複ACKが到着するたびにcwndをセグメントサイズ単位で増加させ、パケットを転送 新しいデータを確認応答するACKが到着したらcwndを上のssthreshに設定する 消失セグメントの再転送のACKであり、再転送から1往復時間が過ぎている。 パケットが消失したときに転送率を1/2に減らしているから輻輳回避になる

cwndとssthreshの値 セグメントが転送されるごとのcwndとssthreshの値 輻輳が発生していなかったら 輻輳ウィンドウは受けての広告したウィンドウを超過し、広告されたウィンドウがデータフローの制限となる 輻輳が発生していたら?

データ転送中のcwndの値と送信シーケンス番号

ssthresh=1/2xcwnd wnd=ssthresh+重複ACKの数 xセグメントサイズ 再転送 ]重複ACK

ルートごとのメトリクス ルーティングテーブルエントリで管理 あて先のrouting table entryがdefault routeでない場合 平滑化されたRTT,平均偏差、スロースタートの閾値がエントリにセーブされる Routeコマンドで特定経路のメトリクスを設定

ICMPエラー 発信元抑制 ホスト到達不可orネットワーク到達不可 cwndはスロースタートに初期化 ssthreshは変更されず、ウィンドウは最後までor輻輳が発生するまでオープンされる ホスト到達不可orネットワーク到達不可 一時的なものとみなされ無視 コネクションを中断させることはない

1 0.0 slip.1035 > aix. echo: P 1:11(10) ack 1 2 0.212271 ( 0.2123) aix.echo > slip.1035: P 1:11(10) ack 11 3 0.310685 ( 0.0984) slip.1035 > aix.echo: . ack 11 SLIP link brought down here 4 174.758100 (174.4474) slip.1035 > aix.echo: P 11:24(13) ack 11 5 174.759017 ( 0.0009) sun > slip: icmp: host aix unreachable 6 177.150439 ( 2.3914) slip.1035 > aix.echo: P 11:24(13) ack 11 7 177.151271 ( 0.0008) sun > slip: icmp: host aix unreachable 8 182.150200 ( 4.9989) slip.1035 > aix.echo: P 11:24(13) ack 11 9 182.151189 ( 0.0010) sun > slip: icmp: host aix unreachable 10 192.149671 ( 9.9985) slip.1035 > aix.echo: P 11:24(13) ack 11 11 192.150608 ( 0.0009) sun > slip: icmp: host aix unreachable 12 212.148783 ( 19.9982) slip.1035 > aix.echo: P 11:24(13) ack 11 13 212.149786 ( 0.0010) sun > slip: icmp: host aix unreachable SLIP link brought up here 14 252.146774 ( 39.9970) slip.1035 > aix.echo: P 11:24(13) ack 11 15 252.439257 ( 0.2925) aix.echo > slip.1035: P 11:24(13) ack 24 16 252.505331 ( 0.0661) slip.1035 > aix.echo: . ack 24

17 261.977246 ( 9.4719) slip.1035 > aix.echo: P 24:38(14) ack 24 18 262.158758 ( 0.1815) aix.echo > slip.1035: P 24:38(14) ack 38 19 262.305086 ( 0.1463) slip.1035 > aix.echo: . ack 38 SLIP link brought down here 20 458.155330 (195.8502) slip.1035 > aix.echo: P 38:52(14) ack 38 21 458.156163 ( 0.0008) sun > slip: icmp: host aix unreachable 22 461.136904 (2.9807) slip.1035 > aix.echo: P 38:52(14) ack 38 23 461.137826 (0.0009) sun > slip: icmp: host aix unreachable 24 467.136461 (5.9986) slip.1035 > aix.echo: P 38:52(14) ack 38 25 467.137385 (0.0009) sun > slip: icmp: host aix unreachable 26 479.135811 ( 11.9984) slip.1035 > aix.echo: P 38:52(14) ack 38 27 479.136647 ( 0.0008) sun > slip: icmp: host aix unreachable 28 503.134816 ( 23.9982) slip.1035 > aix.echo: P 38:52(14) ack 38 29 503.135740 ( 0.0009) sun > slip: icmp: host aix unreachabie ……… 44 1000.219573 ( 64.0959) slip.1035 > aix.echo: P 38:52(14) ack 38 45 1000.220503 ( 0.0009) sun > slip: icmp: host aix unreachable 46 1064.201281 ( 63.9808) slip.1035 > aix.echo: R 52:52(0) ack 38 47 1064.202182 ( 0.0009) sun > slip: icmp: host aix unreachable

再パケット化 再パケット化で大きなセグメントを送信、パフォーマンスを向上 バイト数が増える 1 0.0 bsdi. 1032 > svr4.discard: P 1:13(12) ack 1 2 0.140489 ( 0.1405) svr4.discard > bsdi.1032: . ack 13 Ethernet cable disconnected here  type”line number 2” 3 26.407696 (26.2672) bsdi.1032 > svr4.discard: P 13:27(14) ack 1 4 27.639390 ( 1.2317) bsdi.1032 > svr4.discard: P 13:27(14) ack 1 5 30.639453 ( 3.0001) bsdi.1032 > svr4.discard: P 13:27(14) ack 1 Type “and 3” 6 36.639653 ( 6.0002) bsdi.1032 > svr4.discard: P 13:33(20) ack 1 7 48.640131 (12.0005) bsdi.1032 > svr4.discard: P 13:33(20) ack 1 8 72.640768 (24.0006) bsdi.1032 > svr4.discard: P 13:33(20) ack 1 Ethernet cable reconnected here 9 72.719091 ( 0.0783) svr4.discard > bsdi.1032: . ack 33 バイト数が増える