IT

【IT】優先制御をわかりやすく解説【初心者必須】

優先制御_アイキャッチ
ユカ
ユカ
  • 優先制御ってなに?
  • どんな種類があるの?
  • どうやって使うの?

こんな質問に答えます。

どうもこんにちは、トモ(@hontomo_book)です。

今回は、優先制御について説明します。

優先制御は、IT技術者なら絶対に理解しておくべきものです。

もしまだよくわからないという、駆け出しエンジニアのあなた。今のうちにこっそり学習しときましょう。

本記事を読むと、優先制御について「なぜ必要なのか」、「どんな種類があるのか」、「どのように扱うのか」が理解できます。

本記事の内容

  1. QoSについて
  2. 優先制御について
  3. 絶対優先について
  4. 重み付けラウンドロビンについて

本記事の信頼性

トモ
トモ
現役組み込みエンジニアです。

QoS(Quality of Service)【通信の品質を保証する】

キーボード

QoS(Quality of Service)は、

  • ネットワーク上でデータを通す順番や量を調整する技術

のこと。より具体的には、

  • ネットワークの混線によるデータの損失を防ぐことが目的の技術

です。

ネットワーク上では、フレーム(パケット)と呼ばれるデータの単位が流れています

例えばあなたが使っているPC。ルーターと呼ばれる中継機器を用いて、世界中のネットワークに接続しています。

ルーターは、個々のPCから送られたきたフレームをネットワーク上に送り出したり。

ネットワークから送られてきたフレームをPCに送ったりします。

ルーターは性能を超えない量のフレームなら転送することができます。

では、ルータに複数のPCが接続されていてルータの性能を超える大量のフレームが流れてきたらどうなるでしょうか?

以下の図を見てください。

QoSの説明

ルーターに複数のPCから大量のフレーム(パケット)が送られています。ルーターがさばききれない量を送ったため、パケットロス(データの損失)が生じてしまいました。

ルーターが転送できなかったデータは、宛先には届きません。メールを送ったのに、届かなかったら困りますよね。

こんなことが起こらないようにするための技術が、QoSです。

QoSには、主に

優先制御 データに優先度をつける
帯域制御 各通信ごとに適切な帯域幅を指定する

の2つがあります。今回は、優先制御について詳しく解説します。

優先制御【どのようにフレームを入れ替えるのか】

プログラミング画面

優先制御は、

  • データの優先度が高いものから転送し、データの損失を防ぐ制御方法

です。

一般的にルーターに送られたフレームは、キューと呼ばれるデータ構造に格納されます。

キューは、FIFO(First In First Out)なデータ入出力が行われます。データは入った順に出ていきます。(トコロテンを思い浮かべてみてくださいw)

優先制御を行っていない、通常のデータ送信では、このキューが一つだけだと考えてください。フレームは送られた順に、そのまま転送されます。(下図の左)

一方で、優先制御を行っている場合、いくつかのキューにフレームを割り振ります。(下図の右)

そして、優先制御のルール(後述します)に従って、各キューからフレームを転送します。

いくつかのキューを用いることで、ルーターに送られてきた順に関係なくフレームを転送することが可能になります。

優先制御の図解

具体的な優先制御のルールは様々なものがありますが、代表的な2つを紹介します。

  • 絶対優先
  • 重み付けラウンドロビン

以下詳しく解説します。

絶対優先【キューごとに優先度をつける】

絶対優先は、データごとに優先度をつけておく制御方法です。

優先度ごとにキューにフレームが詰められ、優先度の高いキューのフレームから順に転送されます。

絶対優先の図解

適用事例

  • 転送データの優先順を完全に遵守したい場合。

メリット

  • 優先フレームについてはデータ転送の遅延を抑えることができる。

デメリット

  • 低優先のデータは転送が後回しになる。

重み付けラウンドロビン【優先度ごとに出力比率をつける】

重み付けラウンドロビンは、キューに指定された出力比率に応じて送信処理を行います。

絶対優先より少しややこしいですね。入力されたデータに優先度を割り振るのは絶対優先と同じです。

異なる点は、キューに詰められたフレームを転送する比率も指定しているという点です。(重み付けをする)

ラウンドロビンの図解

適用事例

  • すべてのキューについて転送が必要で、優先度も考慮したい場合。

メリット

  • すべての優先度のデータについてまんべんなく転送を行える。
  • 一つのキューに大量にデータが入力されても他のキューの転送を阻害しない。

デメリット

  • 高優先のデータでも後回しにされることもある。

優先度の判別方法【フレーム構造を理解しよう】

PCの画像

ここまで、データ(フレーム)に優先度をつけると説明しましたが、具体的にデータのどこに優先度が現れるのか説明します。

これは、データ構造(フレーム構造)の中にビット値として格納されます

データは、以下の図のような構造をしています。

この中の、PCP(Priority Code Point)と呼ばれる3ビットの領域に優先度が格納されます。(3ビットは0~7の値を表現できる)

フレームの構造

ルーターはこのPCPの値を読み取って、対応するキューにフレームを格納していくわけです。

まとめ【優先制御の基礎を理解しよう】

優先制御の基礎
  • QoSは必要なデータを損失なく送るための技術
  • 優先制御はQoSの一つで、データに優先度をつける
  • 優先制御には「絶対優先」「重み付けラウンドロビン」などの種類がある
  • 優先度はフレーム内のPCPに格納されている

優先制御は通信トラフィックを扱うエンジニアなら避けては通れない知識です。

特に組み込みをされる方は、フレーム構造のどこに優先度が格納されているかまで理解しておく必要があります。

優先制御は奥深い領域ですのでこれを機に学んでみてはいかがでしょうか。

かもめ
トモ
ご訪問ありがとうございます。雑記ブログです。 独立系システム開発会社のエンジニアから、現在は博士課程へ進学。研究者のたまご。妻とほのぼの2人暮らし。
\ Follow me /