今日の授業の内容 Kyushu Institute of Technology 計算機通信基礎(9) 前回の授業の内容について 4. インターネットの技術 2014年度 4. インターネットの技術 4.1 経路制御 4.2 誤り制御 4.3 フロー制御と輻輳制御 九州工業大学大学院 情報工学研究院 塚本 和也 2 Kyushu Institute of Technology 前回の授業内容について 前回小テスト 解答例 1. Kyushu Institute of Technology インターネット上で用いられているネットワーク技術 について、その特徴を解説する 経路制御: データグラム方式(とバーチャルサーキット方式) IPとIPアドレス バーチャルサーキット: 利点:経路を事前に確立するため、高い信頼性を提供可能。 クラス化、サブネット化、NAT/NAPT 輻輳の解消が速やかに可能。 経路制御プロトコル 欠点:経路確立までに登録が必要となるため、時間がかかる。 IGP:距離ベクトル型、リンク状態型 EGP:パスベクトル型 ルータの処理負荷が大きい。 境界ルータ (EGP) Si データグラム+ホップバイホップ通信: 利点:迅速に通信開始可能。 Si Si Si ルータ (IGP) Si ルータの処理負荷が小さく、スケーラビリティが高い Si Si Si Kyushu Institute of Technology 1. 経路制御方式である「バーチャネルサーキット」と「データグラム +ホップバイホップ通信」の違いについて、それぞれ利点と欠点 を明示した上で説明せよ。 欠点:遅延やパケット廃棄が発生し、信頼性が低い。 IGP 輻輳の解消に時間がかかる Si Si 3 前回小テスト 解答例 2. 4 前回小テスト 解答例 3. Kyushu Institute of Technology 2. IPアドレスの使用用途、及び、それによる効果と問題点について 、それぞれ説明せよ。また、その問題点を解決するための方法に ついても説明せよ。 Kyushu Institute of Technology 3. 経路制御プロトコルの種類について最初に説明した上で、それ ぞれのプロトコルの特徴や制御上の違いについて説明せよ。 経路制御プロトコルの種類は3種類 IPアドレスの使用用途: 距離ベクトル型のRIP:距離と方向による経路制御 (1)ホスト(計算機)の識別、(2) 経路決定 リンク状態型のOSPF:ネットワーク全体の接続状況を把握して経路制御 クラス化による効果 パスベクトル型のBGP:到達できるネットワークのリストを利用して経路制御 経路制御を容易にした。 制御上の違い ルータ内の経路表のエントリ数を削減(スケーラビリティの向上) RIPとOSPF:AS内プロトコル ⇒ ネットワーク資源の有効利用が目的 クラス化の問題点 BFPはAS間プロトコル ⇒ 契約に基づく経路制御が目的 アドレスの利用効率が悪い(ネットワーク規模に応じた柔軟な割当が不可) 問題点の解決方法 IPv6アドレスの導入(アドレス空間拡大)、 プライベートIPアドレスの導入(NAT導入) プライベート ネットワーク サーバ+ NAT機能 境界ルータ (EGP) Si Si Si インターネット Si 5 ルータ (IGP) Si Si Si IGP Si Si Si 6 1 4.2 誤り制御 (4.2) 誤り検出と誤り回復 Kyushu Institute of Technology 1. ビット誤り:パケットは到着したが、ビットが正しくない場合 トランスポート,インターネット,データリンクの各プロトコルに 2. パケット廃棄:パケットがネットワーク内で廃棄される Kyushu Institute of Technology 誤り検出機能、回復機能は、様々な層で行われている (一つの層だけで行われるのではない!) 誤り検出機能 インターネットにおける経路制御(4.1節) ⇒ 宛先ホストに正しくパケットを配送できない可能性 備わっている ネットワーク内のルータで輻輳が発生し、バッファあふれが発生 各ヘッダに「チェックサム」, 「チェックシーケンス」フィールドが存在 送信側:計算した値をヘッダに格納 受信側:受信情報を元に再度チェックサムを計算 ⇒不一致の場合、誤りを検出可能 ~ パケット誤り(packet error)と呼ぶ 正確な通信を行うには 1. パケット誤りを検出(誤り検出) 誤りを回復する機能は主にトランスポート層で実装 2. その誤りを回復(誤り回復) ~ 上記をまとめて 誤り制御(error control)と呼ぶ 7 (4.2) TCPの誤り検出と回復機能 UDP ⇒ 誤り回復機能を保持せず TCP ⇒ 誤り回復機能を備える 8 (4.2) Explicit手法とImplicit手法 Kyushu Institute of Technology 誤り検出: Kyushu Institute of Technology Explicit手法(パケット誤りを陽に通知)の実装例 ~選択的確認応答(selective acknowledgement) TCPのヘッダ内の「確認応答番号」フィールドを用いる 誤り回復: 新しいTCPにオプションとして搭載し始められている 1. 受信側で行う場合:受信パケットを用いて誤りを検出し、そ Implicit手法(パケット誤りを推定)の実装例 ~累積確認応答(cumulative acknowledgement) の誤りを訂正(error correction)する ~ FEC (Forward Error Correction)方式と呼ぶ 従来のTCPで広く用いられてきた 冗長なデータが必要なため、利用シーンが限られる 正しく受信できたシーケンス番号の最大値のみを伝える 2. 送信側で行う場合:送信者から再度パケットを送信 パケット誤りの判断の方法 ~ ARQ(Automatic Repeat reQuest)方式と呼ぶ タイムアウト(timeout) ⇒ 長い時間、確認応答が戻ってこない ~ 重度の輻輳が発生したと判断 重複確認応答(duplicate acknowledgement: 重複ACK) ⇒ 確認応答は戻ってくるが、一部欠損 ~ 軽度の輻輳が発生したと判断 誤り検出方法として2種類が存在 受信側からパケット誤りを陽に知らせる(Explicit手法) 受信側から陽には知らせず、送信側で推定(Implicit手法) 9 4.2(a) 受信側におけるビット誤り検出1 10 4.2(a) 受信側におけるビット誤り検出2 Kyushu Institute of Technology ビット誤り Kyushu Institute of Technology ビット誤りの検出 雑音により,送信したビット列の信号が正しく受信機に 送信側:冗長(redundant)な情報を真のデータに付加して伝送 伝わらない場合を指す 引き起こす原因は雑音(ノイズ)と呼ばれる 受信側:受信情報に誤りが含まれているかを判断 誤り検出可能な符号 ⇒ 誤り検出符号 誤りを訂正可能な符号 ⇒ 誤り訂正符号 何らかのエネルギーによる雑音(熱雑音) 他の伝送媒体との干渉によるもの(クロストーク) 電力線などからの雑音(スパイク雑音) IP,UDP,TCP: チェックサムフィールドにパリティチェック(parity check)方式を採用 ⇒ 奇数個のビット誤りは検出できるが、偶数個のビット誤りは検出不可 雑音から守るための手段 導線で回りを被覆する同軸ケーブル 光ファイバ(光通信) インターネットで採用 雑音が小さく、低いビット誤り 一方で 空気を介した通信(無線通信) ⇒ 雑音の影響を強く受けるため、高いビット誤りが発生 11 データリンク層: CRC(Cyclic Redundancy check)符号が使われている ⇒ 連続的(バーストと呼ぶ)なビット誤りを高い確率で検出可能 KビットのFCS(フレームチェックシーケンス)を用いると、Kビット以下 の誤りを完全に、Kビット以上も高い確率で検出可能 12 2 4.2(b) 送信側におけるパケット誤り検出1 4.2(b) 送信側におけるパケット誤り検出2 Kyushu Institute of Technology Kyushu Institute of Technology 累積確認応答を用いて送信側でパケット誤りを検出する場合、 送信側: 7番目のセグメントがネットワーク上で廃棄されると仮定 受信側が4.2(a)の機能を用いて検出した誤りを把握(推定) 送信側では7番の確認応答を複数受信する ⇒ 重複ACK ~ パケット再送を決定する 3つの重複ACKを受信するとセグメント廃棄と判断し,廃棄パケットを再送 パケット誤り検出方法: ~ 高速再送(fast retransmit)と呼ぶ TCPセグメントのヘッダ内の「シーケンス番号」と「確認応答番号」 を用いる 重複ACKも返ってこないような場合,重度の輻輳と判断 再送タイムアウト時間(Retransmission Time Out, RTO)の設定 ~ タイムアウト時間が経過してもACKを受信できない場合、パケットを再送 送信側:送信するセグメントに連続するシーケンス番号を付与 シーケンス番号は「バイト単位」でセグメントの先頭バイトを格納 5 受信セグメント 受信側:正しく受信したセグメントの次のシーケンス番号 「次のセグメントの先頭のバイト番号」 6 6 ACK番号 7 廃棄 7 8 9 10 11 7 7 7 7 時間 ~ 累積確認応答、と呼ばれる 多くのTCPプロトコルがパケット誤りの検出に用いる 重複ACK 13 4.2(c) 誤り回復のための再送 14 (4.2(c)) 誤り回復:Stop-and-wait ARQ Kyushu Institute of Technology TCPは送信側による再送(ARQ方式)により誤りを回復 ARQには3種類 Kyushu Institute of Technology 送受信ホストは同時通信不可 ⇒ 半二重通信 (half-duplex) 基本動作: 1. stop-and-wait ARQ方式 送信側は直前に送信したパケットに対するACKを受信するまで、 次のパケットを送信できない 2. Go-back-n ARQ 方式 ACKが戻ってこない場合、タイムアウトが発生し、パケットを再送 3. selective ACK (選択的 ACK) ARQ方式 通信性能: 1パケットの伝送時間/RTT 現在のTCPで用いられている方式: ~ Go-back-n と selective ACK 1RTT時間内に1パケットしか送信できないため 500Byteのパケットを1Mb/sで送信する場合 ⇒ 伝送効率は 10%程度 TCP TahoeとReno:Go-back-n SACKオプション付きTCP:selective ACK SACK(Selective ACK):選択的確認応答 ~ 正しく受信できたブロックを複数個、通知する事ができる 廃棄パケット ⇒ ブロックの間(ギャップ)を廃棄パケットと判断可能 ⇒ 複数個のパケットを一度に再送可能 * TCPヘッダのオプションフィールド長の制限から最大再送可能数は決定 ~広域ネットワークに不向き、短距離で遅いネットワークには利用可 送信側 5 6 無線LANで 利用されている 受信側 ACK 15 (4.2(c)) 誤り回復:Go-back-n ARQ (4.2(c)) 誤り回復:Selective ACK ARQ Kyushu Institute of Technology Kyushu Institute of Technology 基本動作 送受信ホストが同時に通信可能な全二重通信が重要 基本動作 受信側から送信するACKにおいて、正しく受信したパケット範囲(ブロック) 受信側でパケット誤りを検出すると,それに対するACKは返さず,その後に正 しく受信したパケットに対してACKを返す ⇒ 累積確認応答 送信側でパケット誤りを検出し、再送したパケット以降の全パケットを再送 を知らせる ⇒ 選択的確認応答 (Selective ACK) ブロックのギャップから誤りパケットを把握し、再送 実現に必要な機能(受信側) ~ 受信側で誤り検出後の受信パケットの蓄積/順序制御が不要(実装が容易) ~ stop-and-waitより効率がよい送信が可能(通信性能が向上) 2. アプリケーションに順序通りにパケットを渡すための制御 5 6 7 8 9 10 11 12 13 7 8 9 6 7 RTTが大きい場合、または高速ネットワークで有効 廃棄 廃棄 受信 送信 7 7 7 7 重複ACK 実装は困難 1. 廃棄パケット後に受信したパケットを蓄積するバッファを用意 下図ではパケット8~13を既に受信しているが、再度再送(下図、橙箱) 送信 16 5 6 7 8 受信 17 1~5 1~6 9 10 11 12 13 1~6 1~6 1~6 1~6 8 8,9 8~10 8~11 7 14 15 18 3 4.3 フロー制御と輻輳制御 4.3(a) 輻輳の検出 Kyushu Institute of Technology ネットワークを介した通信を考えてみる… Kyushu Institute of Technology 送信側で輻輳を検出するための手段は以下の2種類 1.相手ホストの処理能力、ルータの利用状況を考えず送信 1. ネットワークからの明示的な輻輳通知 (explicit 2.処理しきれずパケットが廃棄される notation)を利用 3.再送が行われる フレームリレー,ATMなどで採用されている ⇒ルータへの機能の追加実装が必要(複雑な機構になる) ~ 検討はされているが、普及はしていない 4.再送パケットの増加により輻輳が発生する 通信ホストの処理能力を考慮して送信することが必要 2. 送信側で輻輳発生を予測する (implicit notation) フロー制御 (flow control) ネットワーク内の輻輳(congestion)解消のためのフロー 制御も必要 TCPではパケット廃棄によって輻輳を判断 ⇒ パケット廃棄が発生するまで輻輳と判断できない ~ 輻輳の検出が遅れる可能性が高い 輻輳制御 (congestion control) 19 4.3(b) フロー制御 20 4.3(b) フロー制御 Kyushu Institute of Technology Kyushu Institute of Technology 2. ウィンドウフロー制御: 輻輳検出時にパケットの転送速度を低下、それ以外は 転送速度を増加 ~ フロー制御として2種類存在 TCPでは、さらに緩やかなフロー制御を採用 1. レ-ト制御(rate control): ~ ある時間間隔内で連続して送信可能なデータ量を制御 各ルータで発生するバッファ待機パケット数を減少させるための制御 ~ 各ルータが次ルータに送信する際に、パケットの送信間隔を制御 ある時間間隔 ⇒ 往復伝搬遅延時間(RTT) 連続送信可能なデータ量 ⇒ ウィンドウサイズ ルータ • 次ルータには自分以外に2台ルータが接続 ⇒同時に3パケットが到着する可能性がある • 送信速度を1/3に低下させよう ルータ 緩やかな制御によってパケットの連続送信が可能 ルータ ~ 実装が容易 ~ 通信性能が向上可能 ルータ インターネットでの実現は困難 1. 細かい時間単位(制度の高いタイマ)での制御が必要 2. 他のルータの出力レートを把握するのは不可能 ウィンドウサイズの決定方法が重要 21 4.3(b) フロー制御 22 4.3(b) フロー制御 Kyushu Institute of Technology ウィンドウサイズの決定方法: ~ 相手ホストの処理能力とネットワークの利用状況を考慮 Kyushu Institute of Technology ウィンドウ制御 送信パケットの内、現在送信可能な領域をウィンドウで示す ウィンドウの開始点とウィンドウサイズ 受信ホストが送信ホストに、処理可能なデータ量を 「告知ウィンドウ (advertised window: awnd) (バッファの残りサイズ)」を通知 送信側は、ネットワーク内の輻輳状況に応じて「輻輳ウィンドウ (congestion window: cwnd)」を変化させる ウィンドウサイズ ⇒ ネットワーク内部に存在するパケット数の最大値 ウィンドウサイズはネットワーク状態に応じて変化 ⇒ どのように変更するかを次スライドから説明 ウィンドウサイズ(送信量) = min (awnd, cwnd) (基本的にawnd > cwnd ⇒ 送信量はcwndで決定される) ACKを受信したパケット 送信されたがACK を受信していない パケットの最大数 未送信パケット ウィンドウ cwnd Si 5 6 7 8 9 10 11 12 13 14 Si awnd 23 24 4 4.3(c) TCPにおける動的なウィンドウサイズ制御 4.3(c) TCPにおける動的なウィンドウサイズ制御 Kyushu Institute of Technology 1RTT毎にウィンドウサイズで規定された量のパケットを 連続して送信 ⇒ウィンドウサイズを推定した輻輳状態に応じて、 1RTT毎に動的に変化させる パケット廃棄がなく,全てのパケットのACKが返ってくる場合: ~ 次のRTTの輻輳ウィンドウサイズを増加 パケット廃棄を検出した場合: ~輻輳が発生したと判断し、輻輳を回避するために ウィンドウサイズを減少 Kyushu Institute of Technology TCPが通過する経路を他のTCPも共有する ⇒1つのTCPが利用可能な回線容量(帯域、bandwidth) を知ることは極めて困難となる ネットワーク内で 競合する他のTCP の情報を把握できない : : TCPは試行錯誤して、ウィンドウサイズを大きくしたり、 小さくしながら、他のTCPと帯域を共有 輻輳を検出した場合 ⇒ 急激にウィンドウサイズを小さくする 輻輳が生じない場合 ⇒ 利用可能な帯域まで早く到達するた めに早くウィンドウサイズを大きくしたい(でも輻輳は避けたい) ウィンドウサイズの増減をどのように行うか? 25 (4.3(c)) 動的なウィンドウサイズ変更:増加 TCP TahoeとRenoを例にウィンドウサイズの変化方法を説明 (4.3(c)) 動的なウィンドウサイズ変更:減少 Kyushu Institute of Technology (1)増加時(パケット廃棄が生じない場合): タイムアウトまたは重複ACKによってセグメントの 廃棄を検出すると、ssthreth = cwnd/2に更新 cwnd 4 スロースタートモード 送信 1 1 2 2 3 受信 Cwndも減少させる Tahoe ACK cwnd ≦ ssthresh (Slow Start Threshold) 1つのACK毎にcwnd=cwnd+1 スロー スタート 3 4 ⇒ 1RTTでcwndが2倍に増加 輻輳回避モード cwnd > ssthresh 1RTT毎にcwnd=cwnd+1 Kyushu Institute of Technology (2)減少 ウィンドウサイズの制御に2つのモード: ~ スロースタートモードと輻輳回避モード モード切替は閾値(ssthresh)を用いる ssthresh 動作概要 輻輳回避 5 ⇒ 1RTTでcwndが1増加 4 5 6 7 8 9 10 11 12 ACK ACK cwnd = 1 Reno タイムアウト発生:cwnd = 1 重複ACK発生時: cwnd = cwnd/2 (廃棄セグメントの再送が成功するまでの限定処理) ⇒高速リカバリー(fast recovery)、と呼ぶ ACK ACK ACK ACK 27 4.3(c) 動的なウィンドウサイズ変更1 28 4.3(c) 動的なウィンドウサイズ変更2 Kyushu Institute of Technology Kyushu Institute of Technology TCP Renoにおけるcwndの変化 TCP Tahoeにおけるcwndの変化 スロースタート モード スロースタート モード 輻輳回避モード 輻輳回避モード 輻輳回避モード 22 Ssthresh 16 11 0 1 2 34 cwnd 22 cwnd 26 更新 Ssthresh 10 16 Ssthresh 11 0 1 2 34 時間 [RTT] 29 高速リカバリー 更新 Ssthresh=cwnd 10 時間 [RTT] ネットワーク資源を複数のTCPで公平に効率よく共用する 30 5 今日のまとめ Kyushu Institute of Technology 誤り制御とフロー制御技術を紹介した 誤りは「ビット誤り」と「パケット廃棄」の2種類 誤り制御 誤り検出技術:データリンク、インターネット、トランスポート層 誤り回復技術:トランスポート層(TCP) Go-back-n ARQ及び選択的ACK ARQが利用されている フロー制御 相手ホストの処理能力を考慮 ⇒ フロー制御 ネットワークの利用状況を考慮 ⇒ 輻輳制御 TCPのフロー制御 ⇒ ウィンドウフロー制御 次回講義:5章 インターネットの始まりと発展 31 6
© Copyright 2024 ExpyDoc