6. 6 データリンク層,トランスポート層における誤り制御 6章 誤り制御 誤り制御 トランスポート層 インターネット層 HDLC イーサネット データリンク層 アプリケーション層 データリンク層 電子情報工学科 3年前期 ネットワークアーキテクチャ 情報科学センター/ネットワークデザイン 研究センター 福田 豊 データリンク層 トランスポート層 トランスポート層 TCP 物理層 TCP/IP protocol stack 53 TCPにおける誤り制御 パケット廃棄の検出 パケット廃棄の検出(1) パケット廃棄検出の方法 Karnのアルゴリズム 廃棄パケットの再送 誤り制御方式 アプリケーション層 本節に入る前に... 一般的な“パケット” トランスポート層 インターネット層 データリンク層 Go-back-N Selective-repeat 物理層 TCP/IP protocol stack Layerごとに呼び方が異なる Layer2 : フレーム Layer3 : データグラム Layer4 : セグメント 以後,セグメントを用いる 54 55 パケット廃棄の検出(2) タイムアウトによる検出(1) TCPにおけるセグメントの廃棄の 検出方法は2種類 TCP 送信側がもつタイマーのタイムアウトにより検出 Karn のアルゴリズム 重複ACK ビット誤りの検出方法 送信側でセグメント全体のチェックサムを計算し ヘッダに書き込む 受信側で再び同じ演算を行い,誤りを検出 タイムアウト 56 受信側は新しいセグメントを受取るたびに常に ACK を返す 送信側はセグメントを送るたびに毎回タイマーを スタートさせて ACK を待つ タイムアウトすると,TCPはセグメントは廃棄された ものと判断し再送を行う トラヒックの変動によりセグメントが受信側へ到達 するまでの時間は変化 遅延の変動を考慮してタイムアウトを決める必要 がある 57 1 タイムアウトによる検出(2) 再送タイムアウト RTO (Retransmission Time Out) の決定方法 タイムアウト発生時の問題点 RTTの平均 (average) と偏差 (deviation) を用いる RTO = average + 4 × deviation (6.26) RTTの平均と偏差の計算 セグメントを送信しタイマが時間切れになると TCPは同じセグメントを再送 そのセグメントの ACK が戻ってきたとき,もとのセ グメントの ACK なのか,再送したセグメントの ACK なのか,区別することができない 往復伝播遅延 RTT がトラヒックの影響で急増 したとき (6.23) error = measurement – average (6.24) average = average + σ × error deviation = deviation + σ × (|error| – deviation) (6.25) それまでの RTO がタイムアウト RTT の見積もりが小さいままであると,再びタイム アウトを起こす可能性が高い 58 59 重複ACKによるセグメント廃棄検出(1) Karnのアルゴリズムとタイマバックオフ Karnのアルゴリズム 再送タイマの RTT の計測は行わない セグメントの再送が続く間は,再送タイムアウトの値 を 2 倍ずつ増加させる timeout = γ × timeout (通常 γ = 2) セグメントの廃棄をタイムアウトのみで検出すると (6.27) セグメントの廃棄が生じるたびに,タイムアウト期間だ け送信が停止 スループット特性を著しく劣化させる タイムスタンプオプション 4.4BSDから採用 送信側はTCPのヘッダの option field に送信時刻を 書き込む 受信側はACKを返す際にその時刻もコピーして返す 送信側はRTTを正確に計算可能 重複ACKによりセグメント廃棄を検出し,その セグメントをすぐに再送する (fast retransmit) 60 61 累積確認応答 重複ACKによるセグメント廃棄検出(2) TCPでは累積確認応答を用いている 例: 送信側 受信側 セグメントサイズ 最初の送信 20番目までのセグメントを受信しており,それまで すべてのセグメントを受信している場合は,21番 目のセグメントの送信を促すACKを返す 続いて22番目のセグメントが到着した場合,21番 目のセグメントの送信を促すACKを返す 重複ACK 62 1,500 Byte 2000 ~ 3499 の 1500 Byte を送信 Ack は 3500 を送信 3499 までは受信できて おり,次に受取るセグメ ントが 3500 63 2 重複ACKによるセグメント廃棄検出(3) 重複ACKによるセグメント廃棄検出(4) 重複ACKの例 送信セグメント 20 重複ACKが発生する場合 21 22 23 × fast retransmit セグメント廃棄 ACK 21 20 受信セグメント 21 22 21 23 順序の逆転による重複ACKを考慮 送信側は3個以上の重複ACKが連続して戻ってきた場合, セグメントが破棄されたと判断し,タイムアウトを待たずに そのセグメントの再送を行う 重複ACKを用いる効果 20番まで連続して受信,次は21番 セグメントが途中の経路の変更によって到着順序が逆転 あるセグメントが廃棄され,それ以降のセグメントが到着 タイムアウトよりも早くセグメント廃棄を検出可能 スループット特性の改善 64 65 Delayed ACK 廃棄セグメントの再送(1) ホストAと通信している場合 すぐさまACKを返すのではなく,Aにデータを送る 際にACKを付加して送信する ある時間(通常200ms)経ってもAにデータを送ら ない場合は,ACK だけを送信する 現在一般的なTCPが採用している ARQ Go-back-N 受信側にもバッファを用意し,廃棄されたセ グメント以降のセグメントを受信バッファに 蓄積し,無駄な再送を省いている Selective-repeat:TCP with Sack option Windows2000以降で採用 66 67 廃棄セグメントの再送(2) 廃棄セグメントの再送(3) SACK SACK(2) ヘッダの option field の option種別でSACK を明示 (option種別にSACKを示す4を入れ て送信) セグメントの廃棄を検出した場合は,この option field を 用いて再送すべきセグメントを通知 ※通知できる のは3次まで バイト単位 68 69 3 廃棄セグメントの再送(4) 廃棄セグメントの再送(5) TCP SACK:最初のセグメントだけが廃棄された場合 TCP SACK:複数のセグメントが廃棄された場合 70 71 まとめ(1) 誤り制御 輻輳や伝送エラーによる情報誤りを回復 CRC ARQ,FEC 誤り制御が行われるLayer まとめ(2) データリンク層,トランスポート層 誤り検出 真の情報+付加情報 = 符号語 パリティチェック方式 CRC方式 mビットのパケットを(m-1)次の多項式M(X)で表現 任意にr(r<m)次の多項式G(X)を定め,以下の手順 に従ってCRCチェックビットを作る r(G(X)の次数)個の0をmビットのパケットの後に付 ける.すなわち多項式XrM(X) 多項式XrM(X)を多項式G(X)で割り,余りR(X)を求 める 符号語F(X)は r F ( X ) X M ( X ) R( X ) 72 73 まとめ(5) シフトレジスタによるCRC まとめ(6) 巡回符号を使用する場合割り算機能があればよい 2進数の割り算回路は簡単なシフトレジスタで実現 可能 Stop-and-wait 16 15 ARQ Stop-and-wait Go-back-N Selective-repeat ACK 74 75 4 まとめ(7) まとめ(8) Go-back-N Selective-repeat タイムアウト時間 タイムアウト時間 13 14 15 16 17 18 19 20 21 15 22 23 24 25 13 14 15 16 17 18 19 20 21 15 16 17 18 19 再送 再送 廃棄 廃棄 76 77 まとめ(9) まとめ(10) ARQの性能評価 Selective-repeatが最も優れている Go-back-N方式は,n および p がある程度小さい 場合,良好な特性を提供できる Stop-and-wait方式は n および p の両方ともかな り小さくなければ良好な特性は期待できない (n =スロット , p = パケットに誤りが生じる確率) 誤り訂正(FEC) ブロック符号 送信すべき情報をある長さ(例えばkビット)のブロック に分割し,各ブロックごとに冗長な情報を付加 ランダム誤り訂正符号:ハミング符号,BCH符号 バースト誤り訂正符号:リード・ソロモン符号 畳み込み符号 情報ビットが逐次符号器に入力されると,それ以前に 入力されたある長さの情報との演算を行うことで符号 語を生成 ビタビ符号 78 79 まとめ(11) まとめ(14) ハミング符号 2つの符号語 (an , , a3 , a2 , a1 ) と (bn , , b3 , b2 , b1 ) TCPにおける誤り制御 において,ai≠biとなる個所の総数を,これら2つのハミング (Hamming)距離と定義する 一般に符号語間の最短ハミング距離がdminであるとき セグメントの廃棄の検出 で与えられる a個までの誤りを訂正可能 この考え方に基づいて構成される符号をハミング符号 タイムアウト d 1 a min 2 セグメントの廃棄 廃棄セグメントの再送 重複ACK 80 RTO = average + 4 × deviation Karnのアルゴリズム (1)再送タイマのRTTの計測は行わない (2)セグメントの再送が続く間は,再送タイムアウトの値を2倍ずつ 増加させる 重複ACKを3回受取るとそのセグメトをすぐに再送(fast retransmit) Delayed ACK 83 5 まとめ(15) TCPにおける廃棄セグメントの再送 参考文献 ARQとしては Go-back-N,Selective-repeat 岩波講座 インターネット第1巻「インターネッ ト入門」 尾家祐二,後藤滋樹,小西和憲,西尾章治郎 ISBN4-00-011051-9 最近ではSelective-repeatを利用した TCP with SACK option 岩波講座 インターネット第3巻「トランスポー トプロトコル」 村山公保,西田佳史,尾家祐二 ISBN4-00-011053-5 84 85 6
© Copyright 2024 Paperzz