シオラボのネットワーク技術コラム第13回 「L3スイッチでのQoS(2)」

1. はじめに

前回の「シオラボのネットワーク技術コラム」では、QoSの基本的な知識について説明しました。QoS(Quality of Service)は、ある特定の通信を優先して伝送したり、帯域幅を確保したりして、一定の通信速度を保証する技術のことでしたね。特に、オンラインミーティングのようなリアルタイム性を求められるサービスでは欠かせない技術です。今回は、このQoSについて、その種類と、しくみを説明することにしましょう。

2. QoSの種類

QoSの代表的な制御方法として、「優先制御」と「帯域制御」があります。

  • 優先制御

優先度の高いデータを先に送信する方法です。オンラインミーティングなどでは、音声や画像が途切れることのないように通信をおこなう必要があります。このようなリアルタイム性が重視されるようなサービスで、通信に遅延を発生させたくないような場合に使います。

まず、パケットは、クラスごとに分類し、クラス別のキューに保存されます。その後、スケジューラがクラス別のキューを順番に見ていくことによって、パケットの出力順を制御します。なお、優先度の高いパケットが多くなってしまうとキューに入りきらなくなって、優先度の低いパケットは、大きく遅延したり破棄されたりしてしまいます。

例えば、TCPとくらべて信頼性は高くないものの、速さやリアルタイム性を求めるプロトコルとしてUDPがあります。このUDPパケットの送出速度を10Mbitとし、優先的に転送させるようにするには、次のように設定します。

送出速度を10Mbitとします。

  • speed lan1 10m

優先制御を使用することを宣言します。

  • queue lan1 type priority

優先するパケットをクラス4として、フィルタ(1)を定義します。

  • queue class filter 1 4 ip * * udp * *

上記で設定したフィルタをLANインタフェースに適用します。

  • queue lan1 class filter list 1
  • 帯域制御

一方、帯域制御とは、特定の通信に対しての帯域幅を制御してしまう方法です。音声や動画といった特定の通信が、全体の帯域を圧迫したり、占有したりすることを防ぎます。逆に、特定の通信に対してあらかじめ一定数の帯域を確保しておきたい場合にも使います。

帯域制御では、パケットが送信される時に、種類に応じて帯域を割り当てます。帯域に上限を設けることで、パケットが流れる量を制限することができます。なお、帯域制御ではパケットに対して1〜16までのクラスを割り当てられますが、クラス間の優先順位はありません。

例えば、UDPにあらかじめ2Mbitの帯域を確保し、その他の通信については8Mbitの帯域を割り当てる場合には次のように設定します。

帯域制御を使用することを宣言します。

  • queue lan1 type shaping

UDPパケットをクラス1とするフィルタ(1)を定義します。

  • queue class filter 1 1 ip * * udp * *

フィルタ(1)をLANインタフェースに適用します。

  • queue lan1 class filter list 1

クラス1に2Mbitを割り当てます。

  • queue lan1 class property 1 bandwidth=2m

クラス2(デフォルトクラス)には8Mbitを割り当てます。

  • queue lan1 class property 2 bandwidth=8m

3. QoSのしくみ

それでは、QoSのしくみについて、簡単に解説しておきましょう。

L3スイッチをはじめとしたネットワーク機器には、受信したデータを相手先に送るにあたって、一時的にデータを保存する場所があります。これをキューと呼びます。QoSは、このキューへどのようにデータを格納するのか、また、このキューからどのような順番でどのくらいの量のデータを取り出すのかを制御する技術です。

QoSでは、次のような処理をおこなって、データを転送しています。

  • クラス分け

データを判別するために、受信したデータを分類するものです。優先制御では1〜4の4つのクラス、帯域制御では1〜16の16個のクラスに分類します。なお、この分類には、データに含まれる、MACアドレスやIPアドレスのような情報が使われます。

  • マーキング

クラス分けされたデータに対して優先度を割り当てる処理です。優先度には、データに含まれる情報を使用します。

  • キューイング

マーキングされたデータを、それぞれの優先度に応じたキューに格納する処理です。ここで、キューに入りきらないデータは破棄されてしまいます。

  • スケジューリング

複数あるキューのうち、どのキューのデータから送信するか決定する処理です。

昨今はオンラインミーティングが大活躍ですが、通話が途切れたり、映像がスムーズでなかったりする現象に遭遇された方も多いのではないでしょうか。このような異常が発生してしまうと、使っているユーザーのストレスに直結してしまいます。一方、Webページの閲覧などは、データの転送が多少遅れても、ユーザーのストレスは少なく済みます。QoSを上手に使って、データの優先度や量を調整すれば、ネットワークサービスを使う上でのストレスを少なくすることができます。

次回は、ネットワーク機器にまつわる新しい話題を取り上げます。次回もぜひお楽しみに。