帯域制御入門
本連載では、通信の品質を保証するQos(Quality Of Service)を実現するのに必須である帯域制御について説明します。
これまでの連載
- 第1回 帯域制御の必要性とその機能
- 第2回 帯域制御の導入
第1回 帯域制御の必要性とその機能
今後もますます混雑が進むネットワークで、効率良く業務を進めるための必須の機能として、帯域制御が注目されています。
今回は、現在のネットワーク環境が抱える問題点を説明し、その解決手段として帯域制御の様々な機能(クラシファイ、アドミッション制御、シェーピング、キューイングとスケジューリングなど)の概要をご紹介いたします。
ネットワーク環境の現状と問題点
近年のネットワーク技術の発展により、企業のネットワークは高速、大容量のブロードバンドを利用したIPネットワークへと変貌しました。IPネットワークの変化は通信コンテンツの多様化を可能にし、ビジネスやコミュニケーション方法の革新を引き起こしています。
一方、急速なネットワークの用途や利用者の拡大は、ネットワークを利用する上での様々な問題をより深刻化なものにしつつあります。中でも、通信の遅延やデータロスといったネットワークの通信能力(帯域)不足は、ネットワーク管理者を日々悩ませています。
ネットワークの帯域不足が大きな問題となってきた理由の一つに、ネットワーク上を流れるデータの内容の変化があります。従来の通信データはテキストデータや静止画像など、遅延しても確実にデータが届けば目的が達成されるものが中心でした。しかし、最近ではVoIP によるIP電話の企業での導入が進み、ストリーミングによる映像配信などのサービスも一般的になってきました。このようなアプリケーションはリアルタイム性が強く、通信の遅延は音声の途切れや画像の乱れといったコミュニケーションを阻害する大きな要因になってしまいます。
また、ネットワーク上を流れるデータの急激な量の増加やサイズの巨大化も、その理由の一つです。従来の電話線によるダイヤルアップ中心の時代は、帯域が小さかったことからやり取りされるデータが小さく、通信が混雑してもその時間は限定されていることがほとんどでした。しかし、近年のネットワークの能力の向上により、利用者が大規模なデータをダウンロードする機会が増加してきています。また、利用者同士で気軽にファイル交換ができるPtoPソフトの普及も、ネットワーク上での巨大なデータのやり取りの増加に拍車をかけています。このため、緊急性の高い通信を行おうとしても、他のダウンロードファイルなどサイズの大きなデータに邪魔されて通信が満足にできない、といった状況が多発するようになりました。
図 1. 帯域不足による問題点
帯域拡張の落とし穴
このような問題の解決策として真っ先に考えられるのが、ネットワークの帯域を拡張することです。しかし、どれだけ帯域を広げれば十分かを見極めるのは、実は大変難しいことです。今後も通信データの大容量が進み、接続する利用者の増加も考えられます。そうなると、帯域不足が発生してまた拡張、といった繰り返しをこれからもずっと続けることになるかもしれません。
また、帯域拡張にかかるコストも問題です。帯域の拡張のためにはまず必要帯域の調査と試算、拡張のためのネットワークの構成変更、機器の設定変更や買い替えなどを行わなければなりません。帯域拡張が繰り返し行われると、そのたびにこれらのネットワークの見直し作業が必要になり、かかる費用がとても大きくなってしまいます。
通信プロバイダーが提供するネットワークを利用する場合は、その料金も考慮しなければなりません。多くのプロバイダーで、帯域が大きいほど使用料金も高く設定されています。
それでは、帯域の拡張以外ではどんな解決策があるでしょうか。そもそもネットワークの帯域不足が深刻な問題になる大きな要因は、重要なデータが重要でないデータに邪魔されて円滑に流れてくれないことです。そこで、道路で消防車や救急車などの緊急車両が来た場合に一般車両が進路を譲るように、ネットワーク上を流れるデータも内容によって流れ方を変えることができれば、限られた帯域の中でもある程度満足できるネットワーク環境を実現が可能であると考えられます。このような帯域をコントロールする、帯域制御と呼ばれる技術が企業などで浸透しつつあります。
図 2. 帯域制御のイメージ図
帯域制御の実現方法
それでは、これまで記述してきた問題を、帯域制御ではどのように解決しようとしているのか、その具体的な方法を見ていきましょう。
帯域制御とは、1つの機能だけでできるものではなく、複数の機能を組み合わせてネットワーク利用の効率化を図ります。帯域制御の導入時には、導入するネットワークがどのような使われ方をしているか、どんな通信が大事か、によって自分の環境に適した組み合わせになるよう機能を選択する必要があります。
帯域制御で使用される機能としては、代表的なものに以下の4つがあります。
- クラシファイ (classifier)
- アドミッション制御(admission control)
- シェーピング(shaping)
- キューイングとスケジューリング(queuing & scheduling)
以降、各機能がどんな働きをするか、説明していきます。
(注)なお、説明中に出てくるパケットとは、ネットワークを流れ易いようデータを分割したものです。
クラシファイ
通常ネットワーク上では、内容に関係なく全てのデータが公平に扱われます。そこで、データの内容によって処理に差がつけられるよう、IPアドレスやポート番号によってデータを分類する機能がクラシファイ(トラフィック分類、パケット分類)です。
パケットは、クラシファイで分類されたグループごとに処理されることになります。
アドミッション制御
あるグループのパケットが大幅に増加すると、スイッチやルータなどネットワーク機器内でそのグループのパケットが処理しきれず溜まることになり、その内に処理の限界を超えたパケットは廃棄されてしまいます。その場合、送信元のコンピュータによりパケットが再送信されるため、さらにネットワーク上がパケットで溢れかえることになってしまいます。
そこで、既に大量のパケットを抱えた状態のネットワーク機器へ、同じグループのパケットが入ってこようとした時、送信元へ新規の通信パケットは受け入れられないことを伝えたり、一時的に別の空いているグループに入ってもらうなどの処理を行うことにより、流れるデータ量を調節する機能がアドミッション制御(受付制御、流量制御)です。アドミッション制御では、調節方法として前述の拒否や別グループへの割り込みなど、装置によって様々な方法が実装さています。利用にあたってはその方法を使った場合にどのようなことが起こるか(例えば拒否の場合、送信元でエラーが発生して対処が必要になる、など)を確認し、環境にあった方法を選択することが重要です。
シェーピング
帯域の異なるネットワーク同士が接続されている場合、帯域の大きなネットワークでの転送速度のまま帯域の小さいパケットへと送り出すと、パケットが送信しきれなくなり、帯域不足を招きます。また、ネットワーク機器内にあるグループのパケットが一気に押し寄せると、その処理にCPUパワーを取られてしまい、他の重要なパケットの処理がおろそかになってしまいます。
上記の問題を解決するため、シェーピング機能では流れるパケットの速度を監視し、パケットが増加による速度超過を見つけた場合はパケットを一時待たせてからまた送信する、などの処理を行うことにより、転送レートを一定に保ちます。
図 3. シェーピング
キューイングとスケジューリング
ネットワーク機器内で、別のネットワークへの転送のため、パケットはキューと呼ばれる一時的な格納場所で自分の順番が来るまでしばらく待つことになります。パケット転送の順番は、入った順に出ていくFIFO(First In First Out)が基本になっています。
そこで、内容によって送信される順番を変えるため、キューをグループごとに分けて各パケットに格納し(キューイング)、特定のキューからのパケット転送の優先や各キューからの取り出し量の調整(スケジューリング)を行う機能が考案されています。
ここでは、中でも代表的な手法である、PQ(Priority Queuing)、WFQ(Weight Fair Queuing)、CBQ(Class-Based Queuing)の3つを紹介します。
優先度が高いパケットを必ず先に処理するPQ
この方法では、まずどの通信が優先かを決め(例:VoIPが最優先、次が基幹業務、その他は優先しない)を決めて、その優先度ごとにキューを準備します。そしてクラシファイで優先度によってグループ分けされたパケットをキューに入れ、キューから取り出してパケットを転送する時、必ず優先度の高いキューから行うようにします。
図 4. PQ
これにより、最も優先度の高い通信は遅延が最小限に抑えられ、ネットワーク上をスムーズに流れていくことができます。
しかし、優先度が低いキューのパケットは優先度が高いキューからパケットが全部送信されるまでが待たなくてはならず、優先度が高いパケットが増加すると、優先度の低いキューでは送信されないままパケットが捨てられてしまう、ということも起こります。
どの種類のパケットも送信されるようにするWFQ
WFQでは、PQのようにパケット送信があるグループに集中するのではなく、全てのグループで公平に行われるようにするFQ(Fair Queuing)に基づいています。FQでは、クラシファイでのグループ分けは、パケットの関連性によって決定します(例えば、送信元と宛先が同じパケットは同じグループ、別の送信元の場合は別のグループ、送信元と宛先が同じでもアプリケーションが異なる場合は別のグループ、といったように)。WFQではこのように決定されたグループをフローと呼びます。キューはフローごとに作成され、どのフローのキューからも同じだけ送信されるよう、キューからパケットが取り出されます。
WFQはフローに応じてキューに重み付けすることにより、キューから取り出されるパケットの比率をフローごとに変えたものです。これにより、全てのフローのパケットがある程度ネットワークに送信されることと、中でも優先度の高いパケットは多めに送信されるよう差をつけることの両方を実現しています。
図 5. WFQ
ただし、WFQでは、アプリケーションの種類や接続するコンピュータ数が増えると、フローが増加して処理に時間がかかるようになります。また、フローのキューから流れる量は、他のフローの数や重み付けの影響を受けるため、パケットの送信を常に一定量確保しておきたい、といった要望には応えられません。
パケットの種類ごとの送信量を保証するCBQ
CBQでは、どの通信を時間内にどれくらいの量を流したいかを決め、通信のグループ(クラスと呼びます)ごとにキューを準備し、そのキューのパケットの送信量(バイト数)を設定しておきます。キューに格納されたパケットを取り出し時、それぞれのキューに設定された分だけ取り出すようにすることにより、各クラスのパケット転送量の保証できるようにします。
図 6. CBQ
このように各クラスの送信量が決まっていると、あるクラスのパケットが多くて他のクラスのパケットが少ない場合などに非効率になるのではないか、と思われるかもしれません。実はクラスは階層型になっており、下のクラスのパケット量は、その上位の親クラスから自分の量だけ借りてきて使う、という形になっています。このため、同じ親クラスを持つクラス間でキューに溜まったパケット量の差がある場合、パケット量が多いクラスが多く転送できるよう、少ないクラスの分を回してやることができるようになっています。この時、別の親クラス以下には影響しないため、あるクラスの通信は保証しつつ、別のクラスでは柔軟な転送量の調整が可能になります。
図 7. クラスの階層構造
CBQでは、自動でフローを判別するWFQと異なり、パケットを分類するためのクラスの定義は人手で行わなければなりません。そのため設定の手間が必要ですが、環境に合った定義ができるという利点もあります(このことからCBQは別名CQ:Custom Queuing とも呼ばれます)。また、クラス数が多くなるとWFQと同じく処理時間が増加するため、簡潔なクラス設定を心がけることが必要です。
ここまで、帯域制御の基本知識として、帯域制御が必要になった背景と、その処理内容について説明してきました。
次回では、帯域制御の導入に視点を移し、ルータやスイッチと専用装置の違いや運用上の留意点、具体的な使用シーンなどについて説明していきます。
これまでの連載
- 第1回 帯域制御の必要性とその機能
- 第2回 帯域制御の導入
帯域制御装置(IPCOM)のラインナップ
帯域制御装置 IPCOMシリーズは、システムに合わせて搭載機能を追加し、段階的な統合を可能にすることにより、常にシステムに最適なネットワーク環境を実現します。