フロー制御
フロー制御
出典: フリー百科事典『ウィキペディア(Wikipedia)』 (2021/06/02 14:50 UTC 版)
ナビゲーションに移動 検索に移動フロー制御(フローせいぎょ、英: flow control)は、コンピュータネットワークにおいて、2つのノード間で高速な送信側が低速な受信側をオーバーラン・オーバーフローさせてしまうことを防ぐようデータ転送のレートを管理するプロセスである。これは、ネットワークが混雑して輻輳が発生するのを制御する輻輳制御とは異なる。フロー制御機構は、受信ノードが送信ノードに対して何らかのフィードバックを返すかどうかで分類できる。
フロー制御は、送信側のコンピュータが受信側のコンピュータが受信して処理できるよりも高速に情報を送信する可能性がある場合に重要である。これは例えば受信側コンピュータが高負荷状態だった場合や性能が相対的に低い場合に発生する。
転送フロー制御
転送フロー制御は、データ端末装置 (DTE) とデータ回線終端装置 (DCE) を経由した交換網との間で起きる場合と、2つのDTEの間で起きる場合がある。転送レートはネットワークの要求で制御される場合と、DTEの要求で行われる場合がある。転送フロー制御は、データの双方向の流れの一方だけで起きることもあるため、それぞれの方向で転送レートが異なるという事態も発生しうる。転送フロー制御は、単に送信の停止/再開を指示する場合と、スライディングウィンドウを使う場合がある。
フロー制御はデータ通信インタフェースの制御線を使って行う場合(RS-232を参照)と、制御文字をフロー制御用に予約しておいて使う場合(例えば、ASCII制御文字のXON/XOFF)がある。RS-232の制御線としては、RTS(送信リクエスト)/CTS(送信可)、DSR(データセットレディ)/DTR(データ端末レディ)があり、これらを使ったフロー制御を「ハードウェアフロー制御」と呼ぶ。これに対して XON/XOFF を使ったフロー制御を「ソフトウェアフロー制御」と呼ぶ。かつてモデムを「データセット」と呼んでいたため、制御線の名称にその名残りがある。
ハードウェアフロー制御は一般に、DTE(マスター)がRTSなどの信号線をアサートすることで働き、その信号が相手側(DCE、スレーブ)に届くと、相手はデータ入力線を監視し始める。データ受け入れ準備が整うとスレーブは対応する信号線(この場合はCTS)をアサートする。その信号がマスターに届くと、マスターはデータ送信を開始する。そしてマスターはスレーブのデータ出力線を監視し始める。どちらかがデータを停止する必要が出てくると、それぞれ対応する制御線のアサートをやめる。PCとモデムやそれに類するリンクでは、DTR/DSR が常にアサートされており(例えば、インターネットへのダイヤルアップ接続など)、RTS/CTSはデータのブロック毎にアサートされている。
開ループフロー制御
開ループ (open-loop) フロー制御機構では、受信側と送信側の間に全くフィードバックのやり取りがない点が特徴である。この単純な制御手段は広く使われている。リソース割り当てには事前予約型と hop-to-hop 型がある。開ループフロー制御はネットワークリソースの利用を最大化できないという問題をはらんでいる。リソース割り当てはコネクションの設定時にCAC(Connection Admission Control、接続許可制御)で行い、その後リソースの状況が変わっても更新する手段がない。リソースを無駄に割り当てすぎることも多い。開ループフロー制御はATMのCBR、VBR、UBR(未指定ビットレート)サービスで使われている。
閉ループフロー制御
閉ループ (closed loop) フロー制御機構は、送信者に対してネットワーク側が混雑状況を通知できる点が特徴である。この情報を受けて、送信者はネットワークの状態に合うように動作を変化させる。閉ループフロー制御はATMのABR(使用可能ビットレート)で使われている。上で説明した転送フロー制御も閉ループフロー制御の一種である。
関連項目
外部リンク
- RS232 flow control and handshaking
- イーサネットのフロー制御 アットマーク・アイティ
フロー制御
出典: フリー百科事典『ウィキペディア(Wikipedia)』 (2022/06/01 19:49 UTC 版)
「Transmission Control Protocol」の記事における「フロー制御」の解説
TCPはエンドツーエンドのフロー制御プロトコルを使い、送信ペースが受信側にとって速すぎる状態になるのを防いでいる。様々な性能の機器が接続されたネットワークでは、フロー制御は欠かせない機構である。例えば、PCから性能の劣るPDAにデータを送る場合、PDAの性能に合わせて送信ペースを調整する必要がある。 TCPはスライディングウィンドウによるフロー制御を採用している。各TCPセグメントについて、受信側は「ウィンドウサイズ」フィールドで、そのコネクション用のバッファの空き容量に相当する今後受信可能なデータの量(バイト単位)を示す。送信側は確認応答を待ち合わせるまでに、そのフィールドで指定された量までのデータを送り、新たな確認応答でウィンドウサイズ・フィールドを確認してさらに送信できるデータ量を更新する。 受信側がウィンドウサイズを0としたとき、送信側は送信を停止してタイマ (persist timer) を起動する。このタイマは受信側のウィンドウサイズの更新セグメントが喪失してデッドロック状態になるのを防ぐためのものである(受信側がウィンドウサイズを更新しないと送信を再開できないため)。タイマがタイムアウトすると、送信側は小さなパケットを送り、その確認応答で受信側のウィンドウサイズが回復したかを調べる。 受信側での受信データの処理が遅いと、ウィンドウサイズの指定は小さいままとなる。これをSilly Window Syndrome(英語版) (SWS)と呼び、送信側は1度に数バイトのデータしか送れなくなり、TCPヘッダの方が大きな割合を占めるため転送効率が極端に低下する。そのような状況に陥らないようにするためのウィンドウ・アルゴリズムが RFC 813 (Window and acknowledgement strategy in TCP) に記載されている。
※この「フロー制御」の解説は、「Transmission Control Protocol」の解説の一部です。
「フロー制御」を含む「Transmission Control Protocol」の記事については、「Transmission Control Protocol」の概要を参照ください。
- フロー制御のページへのリンク