優先度設定装置及びコンピュータプログラム
【課題】 優先制御方式のパケット通信において、ネットワークの状態に応じて優先度を柔軟に変更できるようにする。
【解決手段】 本発明は、優先制御方式のパケット通信に用いる優先度を自動的に設定する優先度設定装置(例えば、ルータ3)に関する。この装置は、送受信ノードが同じである複数のパケットを取得する取得部(捕捉処理部311)と、取得された複数のパケットのパケット間遅延に応じて、当該パケットの優先度を設定する設定部(データ処理部313)とを備える。
【解決手段】 本発明は、優先制御方式のパケット通信に用いる優先度を自動的に設定する優先度設定装置(例えば、ルータ3)に関する。この装置は、送受信ノードが同じである複数のパケットを取得する取得部(捕捉処理部311)と、取得された複数のパケットのパケット間遅延に応じて、当該パケットの優先度を設定する設定部(データ処理部313)とを備える。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、優先制御方式のパケット通信に用いる優先度を設定する装置、及び、その優先度の設定処理をコンピュータに実行させるためのコンピュータプログラムに関する。
【背景技術】
【0002】
インターネットのブロードバンド化に伴い、動画や音声などのストリームデータの品質を保証するQoS(Quality of Service)の重要性が大きくなっている。
かかるQoSをサポートするネットワーク機器を使用すれば、遅延が生じると意味をなさない上記のようなトラフィックを、遅延させても特に影響のないファイル交換ソフトのパケットなどよりも優先的に送受信させることができ、ネットワークの利便性ないし使用感が向上する。
【0003】
かかるQoSをサポートするパケット中継装置では、通常、優先度が異なる複数の送信キューを有しており、中継するパケットをどの優先度キューで送信するかのマッピングを所定のヘッダフィールドの値によって行っている(特許文献1参照)。
例えば、中継するパケットがIPパケットである場合には、IP−Protocol(プロトコル番号)フィールドやTCP/UDPポートフィールドの値に従って、複数の優先度キューへのマッピングが行われる。
【先行技術文献】
【特許文献】
【0004】
【特許文献1】特開2010−4310号公報
【発明の概要】
【発明が解決しようとする課題】
【0005】
しかし、最近の通信ネットワークではWebを前提としたトラフィックが主流となっているので、上記のようなヘッダフィールドの値に基づいてマッピングする方法では、同じ優先度キューのトラフィックとなる可能性が高く(例えば、HTTPパケットの場合は、IP-Proto=6, Port=80)、ユーザの利便性がさほど向上しないことがある。
この場合、送信元や宛先のIPアドレスなどを考慮に入れて、所望のパケットの優先度を設定すればよいが、この設定をユーザ自身が行うのは極めて煩雑である。
【0006】
また、QoSは通信ネットワーク全体における「ユーザエクスペリエンス」(ユーザの使用感・満足感)の向上を図る技術であるから、所望のパケットの優先度をユーザが任意に変更するのは好ましくなく、ネットワークの状態に応じて優先度が柔軟に変更されることが望ましい。
【0007】
本発明は、かかる従来の問題点に鑑み、優先制御方式のパケット通信において、ネットワークの状態に応じて優先度を柔軟に変更できるようにすることを目的とする。
【課題を解決するための手段】
【0008】
(1) 本発明の優先度設定装置は、優先制御方式のパケット通信に用いる優先度を自動的に設定する優先度設定装置であって、送受信ノードが同じである複数のパケットを取得する取得部と、取得された複数の前記パケットのパケット間遅延に応じて、当該パケットの優先度を設定する設定部と、を備えていることを特徴とする。
【0009】
本発明の優先度設定装置によれば、設定部が、取得された複数のパケットのパケット間遅延に応じて当該パケットの優先度を設定するので、例えば、パケット間遅延が通常よりも大きいパケットの場合は、現状よりも高優先度にして品質を上げ、パケット間遅延が通常よりも小さいパケットの場合は、現状よりも低優先度に設定して品質を下げるというように、ネットワークの状態に応じて優先度を柔軟に変更することができる。
【0010】
(2) 本発明の優先度設定装置において、所定のピリオドに取得された複数の前記パケットの取得時刻に基づいて、前記パケット間遅延の統計量である第1遅延量を算出する算出部を更に備えている場合には、前記設定部は、算出された前記第1遅延量と通常状態における基準遅延量との差に基づいて前記パケットの優先度を設定すればよい。
この場合、例えば、第1遅延量から基準遅延量を引いた差が所定の閾値を超えた場合に、当該パケットのパケット間遅延が大きくなったと判定でき、その閾値以下の場合はパケット間遅延がさほど激しくないと判定することができる。
【0011】
なお、本明細書において、上記「ピリオド」とは、パケット間遅延の統計量(例えば平均値)を算出するのに必要となる、複数のパケットを収集するための所定時間長(例えば10秒)の単位時間のことをいう。
【0012】
(3) また、本発明の優先度設定装置において、前記算出部は、前記ピリオドごとに算出した複数の前記第1遅延量の統計量である第2遅延量を算出し、算出した当該第2遅延量を前記基準遅延量として採用することが好ましい。
この場合、基準遅延量が、複数の第1遅延量の統計量(例えば平均値)である第2遅延量よりなるので、その基準遅延量を固定値に設定する場合に比べて、ネットワークの通常状態をより適切に設定することができる。
【0013】
(4) もっとも、この場合、前記算出部は、前記基準遅延量との差が所定の閾値以上である前記第1遅延量については、前記第2遅延量の算出要素から除外することが好ましい。
この場合、異常値を示す第1遅延量が第2遅延量の算出要素となることによって、不正確な基準遅延量が設定されるのを未然に防止することができる。
【0014】
(5) 本発明の優先度設定装置において、前記パケット間遅延は、例えば、一方のノードから他方のノードに連続して送信される同種の前記パケット間の時間差、すなわち、そのパケットを受信時刻ごとに並べた際に隣接するもの同士の時間差よりなる。
この場合、UDPなどの同報的な通信を利用する送受信ノード間のパケットの優先度を設定することができる。
【0015】
(6) また、前記パケット間遅延は、一方のノードから他方への要求パケットとこれに対応する応答パケットとの間の時間差であってもよい。
この場合、HTTPのGetとResponseなどのハンドシェイクを行う送受信ノード間のパケットの優先度を設定することができる。
【0016】
(7) 本発明のコンピュータプログラムは、パケット通信が可能な通信機器を、優先制御方式のパケット通信に用いる優先度を設定する装置として機能させるためのコンピュータプログラムであって、送受信ノードが同じである複数のパケットを取得するステップと、取得された複数の前記パケットのパケット間遅延に応じて、当該パケットの優先度を設定するステップと、を含むことを特徴とする。
【0017】
上記の通り、本発明のコンピュータプログラムは、本発明の中継装置と実質同一の発明であり、当該装置と同じ作用効果を奏する。
なお、本発明のコンピュータプログラムは、上述の(2)〜(6)に記載された事項を含んでいてもよい。
【発明の効果】
【0018】
以上の通り、本発明によれば、優先制御方式のパケット通信において、ネットワークの状態に応じて優先度を柔軟に変更することができる。
【図面の簡単な説明】
【0019】
【図1】本発明に係る優先度設定装置の一例であるルータ(中継装置)を適用した通信システムの全体構成図である。
【図2】ルータの内部構成を示すブロック図である。
【図3】パケットプロセッサの処理手順を示す概略的なフローチャートである。
【図4】ルールテーブルの一例を示す図である。
【図5】フローテーブルの一例を示す図である。
【図6】フローデータのデータ構造を示す図である。
【図7】同方向に一連のフローデータの例とそのシーケンス図である。
【図8】双方向に一連のフローデータの例とそのシーケンス図である。
【図9】フローマッピングテーブルの一例を示す図である。
【図10】フロー統計データとベースラインデータのデータ構造を示す図である。
【図11】フロー統計データの更新処理を示すフローチャート(前半)である。
【図12】フロー統計データの更新処理を示すフローチャート(後半)である。
【発明を実施するための形態】
【0020】
以下、図面を参照しつつ、本発明の実施形態を説明する。
〔システムの全体構成〕
図1は、本発明に係る優先度設定装置の一例であるルータ(中継装置)を適用した通信システムの全体構成図である。
図1に示すように、この通信システムは、通信事業者側の光回線終端装置であるOLT1、宅側の光回線終端装置であるONU2、ホームゲートウェイやブロードバンドルータ等よりなるルータ3、及び、複数のIP端末4などを備えている。
【0021】
OLT1とONU2は光カプラを介して光ファイバによって接続されており、OLT1は広域ネットワーク6と接続されている。本実施形態の広域ネットワーク6はインターネットである。
なお、図1のシステム構成例では、FTTHを想定してONU2よりなる回線終端装置を例示しているが、その他の回線終端装置として、ADSLモデムやCATVモデムを採用することもできる。
【0022】
ONU2とルータ3とは、イーサネットケーブル(注記:「イーサネット」は登録商標である。)7を介して互いに接続されている。
ルータ3は、IPパケットのルーティング機能を有する中継装置であり、1つのWANポートと1又は複数のLANポートとを有する。なお、図例では、LANポートが2つあるルータ3を例示しているが、その数は2つに限定されない。
【0023】
ルータ3のLANポートには、イーサネットケーブル9を介して各種のIP端末4が接続されている。このIP端末4は、例えば、IP通信が可能なパーソナルコンピュータ(PC)、サーバコンピュータ或いはテレビなどの家電製品よりなる。
また、OLT1側の広域ネットワーク6にもIP端末4が接続されており、このIP端末4は、例えばクラウドサーバ等よりなる。
【0024】
図1に示す「LAN1」は、ルータ3の一方のLANポートに接続された構内ネットワークであり、「LAN2」は、ルータ3の他方のLANポートに接続された構内ネットワークである。
これらの構内ネットワークLAN1,LAN2は、1又は複数のスイッチングハブ10を用いて多段接続することによって構成されており、当該ネットワークの終端部分にIP端末4を有する。
【0025】
一方、ルータ3は、構内ネットワークLAN1,LAN2のPC等のIP端末4が行うネットワーク機器の管理及び監視の対象機器であり、そのIP端末4の制御プログラムによって操作されるエージェントプログラムが当該ルータ3にインストールされている。
このルータ3のエージェントプログラムは、ルータ3でルーティングされるIPパケットを捕捉する捕捉処理や、捕捉されたパケットを用いたQoS優先度の自動設定処理などを行う。
【0026】
また、本実施形態のルータ3は、IPパケットの中継機能の他に、IPパケットの動的フィルタリング機能、NAT機能、DHCP機能、PPPoE機能及びARP機能などを備えている。
なお、「パケット」は、レイヤ3の通信で使われるPDUの呼び名として用いる場合もあるが、本明細書では、コンピュータ間の通信に使用するデータを送る単位の意味(従って、PDUと同じ。)でも使用している。従って、「IPパケット」を単に「パケット」ということがある。
【0027】
〔ルータの内部構成〕
図2は、ルータ3の内部構成を示すブロック図である。
図2に示すように、ルータ3は、第1インタフェース部301、第1送受信ドライバ302、捕捉用受信バッファ303,第1送信バッファ304、第2インタフェース部305、第2送受信ドライバ306、中継用受信バッファ307、第2送信バッファ308及びパケットプロセッサ309などを備えている。
【0028】
第1インタフェース部301は、WANポートを有するイーサネット仕様のトランシーバであり、第1送受信ドライバ302は、第1インタフェース部301にパケットの送受信を行わせる駆動回路よりなる。
第1送受信ドライバ302は、第1インタフェース部301から受けた受信パケットを捕捉用受信バッファ303と中継用受信バッファ307に渡し、第1送信バッファ304から受けた送信パケットを第1インタフェース部301から外部に送出する。
【0029】
第2インタフェース部305は、LANポートを有するイーサネット仕様のトランシーバであり、第2送受信ドライバ306は、第2インタフェース部305にパケットの送受信を行わせる駆動回路よりなる。
第2送受信ドライバ306は、第2インタフェース部305から受けた受信パケットを捕捉用受信バッファ303と中継用受信バッファ307に渡し、第2送信バッファ308から受けた送信パケットを第2インタフェース部305から外部に送出する。
【0030】
第1及び第2の送信バッファ304,308は、優先度が異なる複数のキューH,Lを有している。
この複数のキューH,Lのうち、高優先度キューHは、当該ルータ3で中継処理が行われた後の高優先度の送信パケットを格納するための送信キューであり、低優先度キューLは、当該ルータ3で中継処理が行われた後の低優先度の送信パケットを格納するための送信キューである。
【0031】
なお、第1インタフェース部301、第1送受信ドライバ302、捕捉用受信バッファ303及び第1送信バッファ304は、WAN側の「送受信部」を構成している。
また、第2インタフェース部305、第2送受信ドライバ306、中継用受信バッファ307及び第2送信バッファ308は、LAN側の「送受信部」を構成している。
【0032】
〔パケットプロセッサの機能部〕
パケットプロセッサ309は、中継処理部310、捕捉処理部311、分類処理部312及びデータ処理部313を備えている。
これらの処理部は、ROMやRAM等の周知の記憶装置(図示せず。)に記憶されたコンピュータプログラム(具体的には、前記エージェントプログラム)をプロセッサ309が読み出し、それを実行することによって実現される機能部である。
【0033】
上記各処理部を実現する所定のコンピュータプログラムは、上記の通り、図示しない記憶装置にインストールされているが、このコンピュータプログラムは、CD−ROM、DVD−ROMなどの記録媒体に格納して販売又は譲渡することができる。
また、このコンピュータプログラムの販売又は譲渡は、サーバコンピュータからネットワーク経由でダウンロードすることによって行こともできる。
【0034】
中継用受信バッファ307は、各送受信ドライバ302,306から受けたすべての受信パケットを所定量蓄積し、蓄積した受信パケットを中継処理部310に出力する。
中継処理部310は、バッファ307から入力された受信パケットに対して、所定のルーティング処理やNAT(Network Address Translation)によるアドレス情報及びポート情報の変換を行って送信パケットを生成すると、後述のフローマッピングテーブルFMT(図9)を参照してQoSの優先度のマッピングを行って送信パケットを生成し、その送信パケットを送信バッファ304,308に入力する。
【0035】
すなわち、中継処理部310は、フローマッピングテーブルFMTにおいてQoSが高優先に設定されているアドレスの送信パケットの場合は、その宛先アドレスに対応するいずれかの送信バッファ304,308の高優先度キューHに入力する。
また、中継処理部310は、フローマッピングテーブルFMTにおいてQoSが低優先に設定されているアドレスの送信パケットの場合は、その宛先アドレスに対応するいずれかの送信バッファ304,308の低優先度キューLに入力する。
【0036】
捕捉用受信バッファ303は、各受信ドライバ302,306から受けたすべての受信パケットを所定量蓄積し、蓄積した受信パケットを捕捉処理部311に出力する。
捕捉処理部311は、バッファ303から入力された受信パケットを受信時刻で並べ替えるなどの所定の処理を行って、すべての受信パケットを分類処理部312とデータ処理部313に送る。
【0037】
分類処理部312は、捕捉処理部311から受けた受信パケットからヘッダ情報を抽出し、そのヘッダ情報にルールテーブルRTとフローテーブルFTを適用して「フローデータFD」を生成する。分類処理部312は、そのデータFDをデータバッファ315に一時的に記憶させる。
なお、分類処理部312は、フローデータFDとして分類できないデータについては、未登録データとしてデータバッファ315に記憶させる。
【0038】
データ処理部313は、所定フローIdのフローデータFDについての、ピリオドごとのパケット間遅延の平均値である「第1遅延量」をデータ内容に含む「フロー統計データFSD」の更新処理と、第1遅延量の平均値である「第2遅延量」をデータ内容とする「ベースラインデータBLD」の更新処理とを行う。
【0039】
更に、データ処理部313は、第1遅延量と第2遅延量とを比較して各フローIdの通信状態を推定し、これに基づいてフローマッピングテーブルFMTにおける優先度の更新処理を行う。
なお、中継処理部310は、データ処理部313が更新したフローマッピングテーブルFMTの優先度を用いて、送信パケットに対する優先度を決定する。
【0040】
〔具体的な処理内容〕
図3は、パケットプロセッサ309の処理手順を示す概略的なフローチャートである。
以下、この図3と以後の図4〜図12を参照しつつ、プロセッサ309の各処理部311〜313が行う具体的な処理の内容を説明する。
図3に示すように、ルータ3のプロセッサ309は、各送受信部で受信された受信パケットに対し、パケットの捕捉(ステップS1)、ヘッダの抽出(ステップS2)、データの分類及び生成(ステップS3)及びデータの処理(S4)の順で情報処理を行う。
【0041】
<パケットの捕捉>
このうち、パケットの捕捉(ステップS1)は、上述の通り捕捉処理部311が行う処理である。捕捉処理部311は、捕捉用受信バッファ303が蓄積した所定量の受信パケットを順次取り込む。
【0042】
<ヘッダの抽出>
ヘッダの抽出(ステップS2)は、分類処理部312が行う処理である。
図3に示すように、分類処理部312は、捕捉処理部311から受けた各パケットから必要なレイヤL2〜L5のヘッダ情報を抽出する。
【0043】
<データの分類及び生成>
データの分類及び生成(S3)は、分類処理部312が行う処理である。
図3に示すように、分類処理部312は、抽出されたパケットのヘッダ情報をキーとしてルールテーブルRTとフローテーブルFTをサーチすることにより、フローデータFD(サーチでヒットしない場合は未登録データ)を生成し、このデータFDをデータバッファ315の対応する格納領域に記憶させる。
【0044】
図4は、ルールテーブルRTの一例を示す図であり、図5は、フローテーブルFTの一例を示す図である。
図4に示すように、ルールテーブルRTは、例えば番号1〜256までの「ルール」のエントリを備え、各ルールは図5のフローIdと対応している。各ルールには複数(図例では8つ)の「サブルール」が含まれており、このサブルールには「項目」とその値(Value)を定義することができる。
【0045】
従って、サブルールの項目と値を適宜設定することにより、各ルールの番号(フローId)に対応するパケットの内容を定義することができる。
例えば、図4の例では、ルール1のサブルール1で「destIp」(宛先IPアドレス)の値を定義し、サブルール2で「srcIP」(送信元IPアドレス)の値を定義し、サブルール3で「destPort」(宛先ポート番号)の値を定義し、サブルール4で「srcPort」(送信元ポート番号)の値を定義するようになっている。
【0046】
なお、図4では図示していないが、各ルールのサブルール5以後に所定のプロトコルとそのプロトコルで用いるコマンドなどを定義することにより、各々のルール(フローId)によってサーチしたいパケットの「種別」を定義することができる。
図5に示すように、フローテーブルFTは、フローIdに対応する処理内容が定義されたテーブルである。例えば、図5の例では、フローId=1のパケットの場合には、パケットを「フローデータとして残す」処理が行われる。
【0047】
また、フローId=2の場合には、パケットを「縮退させる」処理が行われ、フローId=3の場合は「破棄する」処理が行われる。
なお、上記ルールテーブルRTとフローテーブルFTの設定は、例えば、ルータ3のユーザが、LAN側のIP端末4から各テーブルRT,FTの項目内容や設定値を含むパケットをルータ3に送信することによって行うことができる。
【0048】
また、「フローデータFD」とは、例えば、一連のパケットフローの連関をチェックするフロー解析の場合に必要となる、送受信ノードが同じである同種の複数のパケットの履歴を特定するためのデータのことをいう。
【0049】
分類処理部312は、ルールテーブルRTを上から順番にサーチして、各パケットから抽出したヘッダ情報がどのルールにマッチするかを判定する。
その結果、マッチしたルール(=フローId)がある場合には、そのフローIdに対して行うべき処理をフローテーブルFTから読み出し、読み出した処理を当該フローIdのパケットに対して実行する。また、分類処理部312は、マッチしたルール(=フローId)がない場合には、未登録データを生成する。
【0050】
図6は、フローデータFDのデータ構造を示す図である。
図6に示すように、フローデータFDは、捕捉されたパケットの受信時刻と、当該パケットの前記フローIdとを含むデータ構造となっている。なお、これらのデータの順序は図示のものに限定されない。
上述の通り、各フローIdには、ルールテーブルRT(図4)によってパケットの送信元、宛先及び種別が割り当てられているので、当該フローIdは、パケットの送信元、宛先及び種別を識別可能な識別情報である。
【0051】
<データの処理>
図3のデータの処理(S4)は、データ処理部313が行う処理である。
前述の通り、データ処理部313が行う処理には次の各処理が含まれるが、これらの詳細は後述する。
a) フロー統計データの更新処理
b) ベースラインデータの更新処理
c) 優先度の更新処理
【0052】
〔フローデータの例〕
図7は、同方向に一連のフローデータFDの例とそのシーケンス図である。
図7(a)の例では、フローId=1のパケットがマルチキャストで送信されるRTP(Real-time Transport Protocol)パケットである場合を想定している。
図7(a)に示すように、タイムスタンプの値が100〜160μ秒までの間は、フローId=1のフローデータFD同士の時間間隔が一定(20μ秒)であるが、それ以後のエントリで時間間隔が大幅に遅れている。従って、この場合、サーバからの通信が輻輳していると推定できる。
【0053】
図8は、双方向に一連のフローデータFDの例とそのシーケンス図である。
図8(a)の例では、フローId=2のパケットがICMPパケットのエコー要求であり、フローId=3のパケットがICMPパケットのエコー応答である場合を想定している。
図8(a)に示すように、タイムスタンプの値が100〜220μ秒までの間は、フローId=2のエコー要求とフローId=3のエコー応答の間の時間間隔が一定(20μ秒)であるが、300μ秒以後にエコー応答が来なくなっている。従って、この場合、300μ秒前後の時間帯に、何らかの理由でサーバの通信が切断したと推定できる。
【0054】
〔フローマッピングテーブル〕
図9は、フローマッピングテーブルFMTの一例を示す図である。
フローマッピングテーブルFMTの定義項目には、フローIdと、当該フローIdのアドレス情報及びポート情報である「srcIp」、「srcPort」、「destIP」及び「destPort」と、「Timestamp」(受信時刻)と、QoSの「優先度」とが含まれている。
従って、中継処理部310は、送信パケットのアドレス情報とポート情報をキーとしてフローマッピングテーブルFMTをサーチすることで、送信パケットに適用すべき優先度H,Lを決定することができる。
【0055】
図10は、フロー統計データFSDとベースラインデータBLDのデータ構造を示す図である。図10(a)に示すように、フロー統計データFSDのエントリは、「第1フローId」及び「第2フローId」と、1番目からn番目の「ピリオド」とを含む。
前述の通り、「ピリオド」は、パケット間遅延の平均値を算出するのに必要となる、パケット収集のための所定時間長(例えば10秒)の単位時間である。各ピリオドには、当該ピリオド中に収集されたフローId値のパケットの、パケット間遅延の平均値AVG(i)(i=1,2,……n)が格納される。
【0056】
また、図10(b)に示すように、ベースラインデータBLDのエントリは、「第1フローId」及び「第2フローId」と平均値AVGbsとを含む。この平均値AVGbsは、複数の平均値AVG(i)(i=1,2,……n)の中からランダムに抽出した複数の値の平均値である。
なお、前述の通り、本明細書では、フロー統計データFSDに含まれる平均値AVG(i)を「第1遅延量」と呼び、ベースラインデータBLDに含まれる平均値AVGbsを「第2遅延量」と呼んでいる。
【0057】
〔フロー統計データの更新処理〕
図11及び図12は、フロー統計データFSDの更新処理を示すフローチャートである。
図11に示すように、データ処理部313は、まず、捕捉されたパケットからアドレス情報とポート情報を抽出し(ステップS11)、フローマッピングテーブルFMTを検索して(ステップS12)、その情報にマッチするエントリ(フローId)があるか否かを判定する(ステップS13)。
【0058】
上記判定の結果、マッチするフローIdがある場合には、データ処理部313は、当該フローIdを取得してフローマッピングテーブルFMTのタイムスタンプを現在時刻に更新する(ステップS14)。
また、マッチするフローIdがない場合には、データ処理部313は、フローマッピングテーブルFMTに新たなエントリを作成する(ステップS15)。
【0059】
データ処理部313は、上記の処理を今回のピリオド(i)が終了するまで継続し(ステップS16)、今回のピリオド(i)が終了すると、ピリオドを1つインクリメントして(ステップS17)、図12のステップ13以降の処理を行う。
図12を参照して、データ処理部313は、フロー統計データFSDの最初のエントリ(第1フローId)を参照し(ステップS18)、第1フローIdと第2フローIdが同じ値であるか否かを判定する(ステップS19)。
【0060】
ここで、フロー統計データFSDにおいて、第1フローIdと第2フローIdが同じ値である場合は、それらのフローが、一方のノードから他方のノードに連続して送信される同種のパケット(例えば、図7)であることを意味する。
また、フロー統計データFSDにおいて、第1フローIdと第2フローIdが異なる値である場合は、それらのフローが、一方のノードから他方への要求パケットとこれに対応する応答パケット(例えば、図8)であることを意味する。
【0061】
上記判定の結果、第1フローIdと第2フローIdの値が同じ場合には、データ処理部313は、フローIdの値がマッチするフローデータFDを古い順で収集し(ステップS20)、そのフローデータFD間のタイムスタンプ(受信時刻)の差分値ΔT(j)を逐次算出して収集する(ステップS21)。
そして、データ処理部313は、収集した差分値ΔT(j)の合計を、フローIdの値がマッチするフローデータFDのパケット数Nで割った平均値(=AVG(i):第1遅延値)を算出し、その平均値をフロー統計データFSDの該当ピリオドに入力する(ステップS22)。
【0062】
上記判定の結果、第1フローIdと第2フローIdの値が異なる場合には、データ処理部313は、第1フローIdの値がマッチするフローデータFDを古い順で収集するとともに(ステップS23)、第2フローIdの値がマッチするフローデータFDを古い順で収集する(ステップS24)。
また、データ処理部313は、第1フローIdの値とマッチするフローデータFDのタイムスタンプ値と、第2フローIdの値とマッチするフローデータFDのタイムスタンプ値との差分値ΔT(k)を逐次算出し収集する(ステップS25)。
【0063】
そして、データ処理部313は、収集したΔT(k)の合計を、第1フローIdの値がマッチするフローデータFDのパケット数Nで割った平均値(=AVG(i):第1遅延値)を算出し、その平均値をフロー統計データFSDの該当ピリオドに入力する(ステップS26)。なお、この場合、フローデータFD内において、第1フローIdの値とマッチするパケット数と第2フローIDの値とマッチするパケット数が同一であると仮定している。
【0064】
〔ベースラインデータの更新処理〕
データ処理部313は、新規にベースラインデータBLDを作成する場合には、フロー統計データFSDの複数のピリオドの中からランダムに複数個の値を選択し、その平均値(AVGbs:第2遅延量)を算出して、ベースラインデータBLDの該当エントリに入力する。
【0065】
また、データ処理部313は、各ピリオドの終了時に学習係数αを用いたAVGbsの更新処理を行う。
すなわち、データ処理部313は、新たに追加されたピリオドのAVG(i)と既に求めたベースラインデータBLDのAVGbsとの差が所定の閾値を超えている場合には、学習係数αの値を「0」とし、その閾値以下の場合には、αの値をv(但し、vは0<v<1を満たす設定値)として、次式によってAVGbsの値を更新する。
AVGbs=(1−α)×AVGbs+α×AVG(i)
【0066】
〔QoS優先度の更新処理〕
更に、データ処理部313は、各ピリオドの終了時に、次の手順にてフローマッピングテーブルFMT中の優先度の更新処理を行う。
すなわち、データ処理部313は、まず、フロー統計データFSDの各エントリの当該ピリオドの値AVG(i)と、その時点でのベースラインデータBLDの同じエントリの平均値AVGbsとを比較する。
【0067】
このとき、AVG(i)がAVGbsよりも大きく、かつ、その差分が所定の閾値を超えている場合は、データ処理部313は、フローマッピングテーブルFMTにおける対応するフローIdの優先度を「高」にする。
逆に、AVG(i)がAVGbsよりも小さい場合、或いは、AVG(i)がAVGbsよりも大きいがその差分が所定の閾値以内の場合は、データ処理部313は、フローマッピングテーブルFMTにおける対応するフローIdの優先度を「低」にする。
【0068】
このように、ベースラインデータBLDのAVGbs(第2遅延量)は、フロー統計データFSDにおける各ピリオドのAVG(i)(第1遅延量)が、当該フローIdのパケットにおいて普通に生じる遅延量か否かを判定するための、「基準遅延量」として使用される。
【0069】
〔ルータの効果〕
以上の通り、本実施形態のルータ(優先度設定装置)3によれば、送受信ノードが同じである複数のパケットを捕捉処理部311にて取得し、データ処理部313が、パケット間遅延が通常よりも大きいフローの場合は、現状よりも高優先度にして品質を上げ、パケット間遅延が通常よりも小さいフローの場合は、現状よりも低優先度に設定して品質を下げるようになっているので、ネットワークの状態に応じて優先度を柔軟に変更することができる。
【0070】
〔その他の変形例〕
上述の実施形態では、回線終端装置(図1ではONU2)とは別の装置であるルータ3に本発明を適用しているが、回線終端装置とルータ3とを一体化したホームゲートウェイの場合には、この装置に本発明を適用することにしてもよい。
また、フロー統計データFSDのピリオドごとの第1遅延量やベースラインデータBLDの第2遅延量は、例えば中央値などの平均値以外の統計量であってもよい。
【0071】
また、第1遅延量の多寡を判定するための通常状態の「基準遅延量」を、複数の第1遅延量の統計量(第2遅延量)ではなく、固定値に設定することにしてもよい。
更に、上述の実施形態では、図1に示すように、イーサネットケーブル9で構内ネットワークLAN1,LAN2を構成しているが、ルータ3に無線LAN対応のインタフェースを設け、構内のIP端末4との通信を無線で行うようにしてもよい。
この場合、高優先度キューのパケットは、低優先度キューのパケットよりもコンテンションウィンドウのサイズを小さく設定することにしてもよい。
【0072】
上述の実施形態では、本発明の優先度設定機能をルータ3に実装した場合を例示しているが、その機能を、構内ネットワークLAN1,LAN2に繋がるIP端末4に実装することにしてもよい。
この場合、IP端末4にて動的に決定したQoSの優先度を、例えば、人手による入力、或いは、SNMPやUPnPなどを利用したオンラインアクセスにより、ルータ3に優先度を設定することにすればよい。
【0073】
今回開示した実施形態(上述の各変形例を含む。)はすべての点で例示であって制限的なものではない。本発明の権利範囲は、上述の実施形態ではなく、特許請求の範囲と均等の範囲内でのすべての変更が含まれる。
【符号の説明】
【0074】
3 ルータ(優先度設定装置)
4 IP端末
309 パケットプロセッサ
310 中継処理部
311 捕捉処理部(取得部)
312 分類処理部
313 データ処理部(設定部、算出部)
FD フローデータ
FSD フロー統計データ
BLD ベースラインデータ
【技術分野】
【0001】
本発明は、優先制御方式のパケット通信に用いる優先度を設定する装置、及び、その優先度の設定処理をコンピュータに実行させるためのコンピュータプログラムに関する。
【背景技術】
【0002】
インターネットのブロードバンド化に伴い、動画や音声などのストリームデータの品質を保証するQoS(Quality of Service)の重要性が大きくなっている。
かかるQoSをサポートするネットワーク機器を使用すれば、遅延が生じると意味をなさない上記のようなトラフィックを、遅延させても特に影響のないファイル交換ソフトのパケットなどよりも優先的に送受信させることができ、ネットワークの利便性ないし使用感が向上する。
【0003】
かかるQoSをサポートするパケット中継装置では、通常、優先度が異なる複数の送信キューを有しており、中継するパケットをどの優先度キューで送信するかのマッピングを所定のヘッダフィールドの値によって行っている(特許文献1参照)。
例えば、中継するパケットがIPパケットである場合には、IP−Protocol(プロトコル番号)フィールドやTCP/UDPポートフィールドの値に従って、複数の優先度キューへのマッピングが行われる。
【先行技術文献】
【特許文献】
【0004】
【特許文献1】特開2010−4310号公報
【発明の概要】
【発明が解決しようとする課題】
【0005】
しかし、最近の通信ネットワークではWebを前提としたトラフィックが主流となっているので、上記のようなヘッダフィールドの値に基づいてマッピングする方法では、同じ優先度キューのトラフィックとなる可能性が高く(例えば、HTTPパケットの場合は、IP-Proto=6, Port=80)、ユーザの利便性がさほど向上しないことがある。
この場合、送信元や宛先のIPアドレスなどを考慮に入れて、所望のパケットの優先度を設定すればよいが、この設定をユーザ自身が行うのは極めて煩雑である。
【0006】
また、QoSは通信ネットワーク全体における「ユーザエクスペリエンス」(ユーザの使用感・満足感)の向上を図る技術であるから、所望のパケットの優先度をユーザが任意に変更するのは好ましくなく、ネットワークの状態に応じて優先度が柔軟に変更されることが望ましい。
【0007】
本発明は、かかる従来の問題点に鑑み、優先制御方式のパケット通信において、ネットワークの状態に応じて優先度を柔軟に変更できるようにすることを目的とする。
【課題を解決するための手段】
【0008】
(1) 本発明の優先度設定装置は、優先制御方式のパケット通信に用いる優先度を自動的に設定する優先度設定装置であって、送受信ノードが同じである複数のパケットを取得する取得部と、取得された複数の前記パケットのパケット間遅延に応じて、当該パケットの優先度を設定する設定部と、を備えていることを特徴とする。
【0009】
本発明の優先度設定装置によれば、設定部が、取得された複数のパケットのパケット間遅延に応じて当該パケットの優先度を設定するので、例えば、パケット間遅延が通常よりも大きいパケットの場合は、現状よりも高優先度にして品質を上げ、パケット間遅延が通常よりも小さいパケットの場合は、現状よりも低優先度に設定して品質を下げるというように、ネットワークの状態に応じて優先度を柔軟に変更することができる。
【0010】
(2) 本発明の優先度設定装置において、所定のピリオドに取得された複数の前記パケットの取得時刻に基づいて、前記パケット間遅延の統計量である第1遅延量を算出する算出部を更に備えている場合には、前記設定部は、算出された前記第1遅延量と通常状態における基準遅延量との差に基づいて前記パケットの優先度を設定すればよい。
この場合、例えば、第1遅延量から基準遅延量を引いた差が所定の閾値を超えた場合に、当該パケットのパケット間遅延が大きくなったと判定でき、その閾値以下の場合はパケット間遅延がさほど激しくないと判定することができる。
【0011】
なお、本明細書において、上記「ピリオド」とは、パケット間遅延の統計量(例えば平均値)を算出するのに必要となる、複数のパケットを収集するための所定時間長(例えば10秒)の単位時間のことをいう。
【0012】
(3) また、本発明の優先度設定装置において、前記算出部は、前記ピリオドごとに算出した複数の前記第1遅延量の統計量である第2遅延量を算出し、算出した当該第2遅延量を前記基準遅延量として採用することが好ましい。
この場合、基準遅延量が、複数の第1遅延量の統計量(例えば平均値)である第2遅延量よりなるので、その基準遅延量を固定値に設定する場合に比べて、ネットワークの通常状態をより適切に設定することができる。
【0013】
(4) もっとも、この場合、前記算出部は、前記基準遅延量との差が所定の閾値以上である前記第1遅延量については、前記第2遅延量の算出要素から除外することが好ましい。
この場合、異常値を示す第1遅延量が第2遅延量の算出要素となることによって、不正確な基準遅延量が設定されるのを未然に防止することができる。
【0014】
(5) 本発明の優先度設定装置において、前記パケット間遅延は、例えば、一方のノードから他方のノードに連続して送信される同種の前記パケット間の時間差、すなわち、そのパケットを受信時刻ごとに並べた際に隣接するもの同士の時間差よりなる。
この場合、UDPなどの同報的な通信を利用する送受信ノード間のパケットの優先度を設定することができる。
【0015】
(6) また、前記パケット間遅延は、一方のノードから他方への要求パケットとこれに対応する応答パケットとの間の時間差であってもよい。
この場合、HTTPのGetとResponseなどのハンドシェイクを行う送受信ノード間のパケットの優先度を設定することができる。
【0016】
(7) 本発明のコンピュータプログラムは、パケット通信が可能な通信機器を、優先制御方式のパケット通信に用いる優先度を設定する装置として機能させるためのコンピュータプログラムであって、送受信ノードが同じである複数のパケットを取得するステップと、取得された複数の前記パケットのパケット間遅延に応じて、当該パケットの優先度を設定するステップと、を含むことを特徴とする。
【0017】
上記の通り、本発明のコンピュータプログラムは、本発明の中継装置と実質同一の発明であり、当該装置と同じ作用効果を奏する。
なお、本発明のコンピュータプログラムは、上述の(2)〜(6)に記載された事項を含んでいてもよい。
【発明の効果】
【0018】
以上の通り、本発明によれば、優先制御方式のパケット通信において、ネットワークの状態に応じて優先度を柔軟に変更することができる。
【図面の簡単な説明】
【0019】
【図1】本発明に係る優先度設定装置の一例であるルータ(中継装置)を適用した通信システムの全体構成図である。
【図2】ルータの内部構成を示すブロック図である。
【図3】パケットプロセッサの処理手順を示す概略的なフローチャートである。
【図4】ルールテーブルの一例を示す図である。
【図5】フローテーブルの一例を示す図である。
【図6】フローデータのデータ構造を示す図である。
【図7】同方向に一連のフローデータの例とそのシーケンス図である。
【図8】双方向に一連のフローデータの例とそのシーケンス図である。
【図9】フローマッピングテーブルの一例を示す図である。
【図10】フロー統計データとベースラインデータのデータ構造を示す図である。
【図11】フロー統計データの更新処理を示すフローチャート(前半)である。
【図12】フロー統計データの更新処理を示すフローチャート(後半)である。
【発明を実施するための形態】
【0020】
以下、図面を参照しつつ、本発明の実施形態を説明する。
〔システムの全体構成〕
図1は、本発明に係る優先度設定装置の一例であるルータ(中継装置)を適用した通信システムの全体構成図である。
図1に示すように、この通信システムは、通信事業者側の光回線終端装置であるOLT1、宅側の光回線終端装置であるONU2、ホームゲートウェイやブロードバンドルータ等よりなるルータ3、及び、複数のIP端末4などを備えている。
【0021】
OLT1とONU2は光カプラを介して光ファイバによって接続されており、OLT1は広域ネットワーク6と接続されている。本実施形態の広域ネットワーク6はインターネットである。
なお、図1のシステム構成例では、FTTHを想定してONU2よりなる回線終端装置を例示しているが、その他の回線終端装置として、ADSLモデムやCATVモデムを採用することもできる。
【0022】
ONU2とルータ3とは、イーサネットケーブル(注記:「イーサネット」は登録商標である。)7を介して互いに接続されている。
ルータ3は、IPパケットのルーティング機能を有する中継装置であり、1つのWANポートと1又は複数のLANポートとを有する。なお、図例では、LANポートが2つあるルータ3を例示しているが、その数は2つに限定されない。
【0023】
ルータ3のLANポートには、イーサネットケーブル9を介して各種のIP端末4が接続されている。このIP端末4は、例えば、IP通信が可能なパーソナルコンピュータ(PC)、サーバコンピュータ或いはテレビなどの家電製品よりなる。
また、OLT1側の広域ネットワーク6にもIP端末4が接続されており、このIP端末4は、例えばクラウドサーバ等よりなる。
【0024】
図1に示す「LAN1」は、ルータ3の一方のLANポートに接続された構内ネットワークであり、「LAN2」は、ルータ3の他方のLANポートに接続された構内ネットワークである。
これらの構内ネットワークLAN1,LAN2は、1又は複数のスイッチングハブ10を用いて多段接続することによって構成されており、当該ネットワークの終端部分にIP端末4を有する。
【0025】
一方、ルータ3は、構内ネットワークLAN1,LAN2のPC等のIP端末4が行うネットワーク機器の管理及び監視の対象機器であり、そのIP端末4の制御プログラムによって操作されるエージェントプログラムが当該ルータ3にインストールされている。
このルータ3のエージェントプログラムは、ルータ3でルーティングされるIPパケットを捕捉する捕捉処理や、捕捉されたパケットを用いたQoS優先度の自動設定処理などを行う。
【0026】
また、本実施形態のルータ3は、IPパケットの中継機能の他に、IPパケットの動的フィルタリング機能、NAT機能、DHCP機能、PPPoE機能及びARP機能などを備えている。
なお、「パケット」は、レイヤ3の通信で使われるPDUの呼び名として用いる場合もあるが、本明細書では、コンピュータ間の通信に使用するデータを送る単位の意味(従って、PDUと同じ。)でも使用している。従って、「IPパケット」を単に「パケット」ということがある。
【0027】
〔ルータの内部構成〕
図2は、ルータ3の内部構成を示すブロック図である。
図2に示すように、ルータ3は、第1インタフェース部301、第1送受信ドライバ302、捕捉用受信バッファ303,第1送信バッファ304、第2インタフェース部305、第2送受信ドライバ306、中継用受信バッファ307、第2送信バッファ308及びパケットプロセッサ309などを備えている。
【0028】
第1インタフェース部301は、WANポートを有するイーサネット仕様のトランシーバであり、第1送受信ドライバ302は、第1インタフェース部301にパケットの送受信を行わせる駆動回路よりなる。
第1送受信ドライバ302は、第1インタフェース部301から受けた受信パケットを捕捉用受信バッファ303と中継用受信バッファ307に渡し、第1送信バッファ304から受けた送信パケットを第1インタフェース部301から外部に送出する。
【0029】
第2インタフェース部305は、LANポートを有するイーサネット仕様のトランシーバであり、第2送受信ドライバ306は、第2インタフェース部305にパケットの送受信を行わせる駆動回路よりなる。
第2送受信ドライバ306は、第2インタフェース部305から受けた受信パケットを捕捉用受信バッファ303と中継用受信バッファ307に渡し、第2送信バッファ308から受けた送信パケットを第2インタフェース部305から外部に送出する。
【0030】
第1及び第2の送信バッファ304,308は、優先度が異なる複数のキューH,Lを有している。
この複数のキューH,Lのうち、高優先度キューHは、当該ルータ3で中継処理が行われた後の高優先度の送信パケットを格納するための送信キューであり、低優先度キューLは、当該ルータ3で中継処理が行われた後の低優先度の送信パケットを格納するための送信キューである。
【0031】
なお、第1インタフェース部301、第1送受信ドライバ302、捕捉用受信バッファ303及び第1送信バッファ304は、WAN側の「送受信部」を構成している。
また、第2インタフェース部305、第2送受信ドライバ306、中継用受信バッファ307及び第2送信バッファ308は、LAN側の「送受信部」を構成している。
【0032】
〔パケットプロセッサの機能部〕
パケットプロセッサ309は、中継処理部310、捕捉処理部311、分類処理部312及びデータ処理部313を備えている。
これらの処理部は、ROMやRAM等の周知の記憶装置(図示せず。)に記憶されたコンピュータプログラム(具体的には、前記エージェントプログラム)をプロセッサ309が読み出し、それを実行することによって実現される機能部である。
【0033】
上記各処理部を実現する所定のコンピュータプログラムは、上記の通り、図示しない記憶装置にインストールされているが、このコンピュータプログラムは、CD−ROM、DVD−ROMなどの記録媒体に格納して販売又は譲渡することができる。
また、このコンピュータプログラムの販売又は譲渡は、サーバコンピュータからネットワーク経由でダウンロードすることによって行こともできる。
【0034】
中継用受信バッファ307は、各送受信ドライバ302,306から受けたすべての受信パケットを所定量蓄積し、蓄積した受信パケットを中継処理部310に出力する。
中継処理部310は、バッファ307から入力された受信パケットに対して、所定のルーティング処理やNAT(Network Address Translation)によるアドレス情報及びポート情報の変換を行って送信パケットを生成すると、後述のフローマッピングテーブルFMT(図9)を参照してQoSの優先度のマッピングを行って送信パケットを生成し、その送信パケットを送信バッファ304,308に入力する。
【0035】
すなわち、中継処理部310は、フローマッピングテーブルFMTにおいてQoSが高優先に設定されているアドレスの送信パケットの場合は、その宛先アドレスに対応するいずれかの送信バッファ304,308の高優先度キューHに入力する。
また、中継処理部310は、フローマッピングテーブルFMTにおいてQoSが低優先に設定されているアドレスの送信パケットの場合は、その宛先アドレスに対応するいずれかの送信バッファ304,308の低優先度キューLに入力する。
【0036】
捕捉用受信バッファ303は、各受信ドライバ302,306から受けたすべての受信パケットを所定量蓄積し、蓄積した受信パケットを捕捉処理部311に出力する。
捕捉処理部311は、バッファ303から入力された受信パケットを受信時刻で並べ替えるなどの所定の処理を行って、すべての受信パケットを分類処理部312とデータ処理部313に送る。
【0037】
分類処理部312は、捕捉処理部311から受けた受信パケットからヘッダ情報を抽出し、そのヘッダ情報にルールテーブルRTとフローテーブルFTを適用して「フローデータFD」を生成する。分類処理部312は、そのデータFDをデータバッファ315に一時的に記憶させる。
なお、分類処理部312は、フローデータFDとして分類できないデータについては、未登録データとしてデータバッファ315に記憶させる。
【0038】
データ処理部313は、所定フローIdのフローデータFDについての、ピリオドごとのパケット間遅延の平均値である「第1遅延量」をデータ内容に含む「フロー統計データFSD」の更新処理と、第1遅延量の平均値である「第2遅延量」をデータ内容とする「ベースラインデータBLD」の更新処理とを行う。
【0039】
更に、データ処理部313は、第1遅延量と第2遅延量とを比較して各フローIdの通信状態を推定し、これに基づいてフローマッピングテーブルFMTにおける優先度の更新処理を行う。
なお、中継処理部310は、データ処理部313が更新したフローマッピングテーブルFMTの優先度を用いて、送信パケットに対する優先度を決定する。
【0040】
〔具体的な処理内容〕
図3は、パケットプロセッサ309の処理手順を示す概略的なフローチャートである。
以下、この図3と以後の図4〜図12を参照しつつ、プロセッサ309の各処理部311〜313が行う具体的な処理の内容を説明する。
図3に示すように、ルータ3のプロセッサ309は、各送受信部で受信された受信パケットに対し、パケットの捕捉(ステップS1)、ヘッダの抽出(ステップS2)、データの分類及び生成(ステップS3)及びデータの処理(S4)の順で情報処理を行う。
【0041】
<パケットの捕捉>
このうち、パケットの捕捉(ステップS1)は、上述の通り捕捉処理部311が行う処理である。捕捉処理部311は、捕捉用受信バッファ303が蓄積した所定量の受信パケットを順次取り込む。
【0042】
<ヘッダの抽出>
ヘッダの抽出(ステップS2)は、分類処理部312が行う処理である。
図3に示すように、分類処理部312は、捕捉処理部311から受けた各パケットから必要なレイヤL2〜L5のヘッダ情報を抽出する。
【0043】
<データの分類及び生成>
データの分類及び生成(S3)は、分類処理部312が行う処理である。
図3に示すように、分類処理部312は、抽出されたパケットのヘッダ情報をキーとしてルールテーブルRTとフローテーブルFTをサーチすることにより、フローデータFD(サーチでヒットしない場合は未登録データ)を生成し、このデータFDをデータバッファ315の対応する格納領域に記憶させる。
【0044】
図4は、ルールテーブルRTの一例を示す図であり、図5は、フローテーブルFTの一例を示す図である。
図4に示すように、ルールテーブルRTは、例えば番号1〜256までの「ルール」のエントリを備え、各ルールは図5のフローIdと対応している。各ルールには複数(図例では8つ)の「サブルール」が含まれており、このサブルールには「項目」とその値(Value)を定義することができる。
【0045】
従って、サブルールの項目と値を適宜設定することにより、各ルールの番号(フローId)に対応するパケットの内容を定義することができる。
例えば、図4の例では、ルール1のサブルール1で「destIp」(宛先IPアドレス)の値を定義し、サブルール2で「srcIP」(送信元IPアドレス)の値を定義し、サブルール3で「destPort」(宛先ポート番号)の値を定義し、サブルール4で「srcPort」(送信元ポート番号)の値を定義するようになっている。
【0046】
なお、図4では図示していないが、各ルールのサブルール5以後に所定のプロトコルとそのプロトコルで用いるコマンドなどを定義することにより、各々のルール(フローId)によってサーチしたいパケットの「種別」を定義することができる。
図5に示すように、フローテーブルFTは、フローIdに対応する処理内容が定義されたテーブルである。例えば、図5の例では、フローId=1のパケットの場合には、パケットを「フローデータとして残す」処理が行われる。
【0047】
また、フローId=2の場合には、パケットを「縮退させる」処理が行われ、フローId=3の場合は「破棄する」処理が行われる。
なお、上記ルールテーブルRTとフローテーブルFTの設定は、例えば、ルータ3のユーザが、LAN側のIP端末4から各テーブルRT,FTの項目内容や設定値を含むパケットをルータ3に送信することによって行うことができる。
【0048】
また、「フローデータFD」とは、例えば、一連のパケットフローの連関をチェックするフロー解析の場合に必要となる、送受信ノードが同じである同種の複数のパケットの履歴を特定するためのデータのことをいう。
【0049】
分類処理部312は、ルールテーブルRTを上から順番にサーチして、各パケットから抽出したヘッダ情報がどのルールにマッチするかを判定する。
その結果、マッチしたルール(=フローId)がある場合には、そのフローIdに対して行うべき処理をフローテーブルFTから読み出し、読み出した処理を当該フローIdのパケットに対して実行する。また、分類処理部312は、マッチしたルール(=フローId)がない場合には、未登録データを生成する。
【0050】
図6は、フローデータFDのデータ構造を示す図である。
図6に示すように、フローデータFDは、捕捉されたパケットの受信時刻と、当該パケットの前記フローIdとを含むデータ構造となっている。なお、これらのデータの順序は図示のものに限定されない。
上述の通り、各フローIdには、ルールテーブルRT(図4)によってパケットの送信元、宛先及び種別が割り当てられているので、当該フローIdは、パケットの送信元、宛先及び種別を識別可能な識別情報である。
【0051】
<データの処理>
図3のデータの処理(S4)は、データ処理部313が行う処理である。
前述の通り、データ処理部313が行う処理には次の各処理が含まれるが、これらの詳細は後述する。
a) フロー統計データの更新処理
b) ベースラインデータの更新処理
c) 優先度の更新処理
【0052】
〔フローデータの例〕
図7は、同方向に一連のフローデータFDの例とそのシーケンス図である。
図7(a)の例では、フローId=1のパケットがマルチキャストで送信されるRTP(Real-time Transport Protocol)パケットである場合を想定している。
図7(a)に示すように、タイムスタンプの値が100〜160μ秒までの間は、フローId=1のフローデータFD同士の時間間隔が一定(20μ秒)であるが、それ以後のエントリで時間間隔が大幅に遅れている。従って、この場合、サーバからの通信が輻輳していると推定できる。
【0053】
図8は、双方向に一連のフローデータFDの例とそのシーケンス図である。
図8(a)の例では、フローId=2のパケットがICMPパケットのエコー要求であり、フローId=3のパケットがICMPパケットのエコー応答である場合を想定している。
図8(a)に示すように、タイムスタンプの値が100〜220μ秒までの間は、フローId=2のエコー要求とフローId=3のエコー応答の間の時間間隔が一定(20μ秒)であるが、300μ秒以後にエコー応答が来なくなっている。従って、この場合、300μ秒前後の時間帯に、何らかの理由でサーバの通信が切断したと推定できる。
【0054】
〔フローマッピングテーブル〕
図9は、フローマッピングテーブルFMTの一例を示す図である。
フローマッピングテーブルFMTの定義項目には、フローIdと、当該フローIdのアドレス情報及びポート情報である「srcIp」、「srcPort」、「destIP」及び「destPort」と、「Timestamp」(受信時刻)と、QoSの「優先度」とが含まれている。
従って、中継処理部310は、送信パケットのアドレス情報とポート情報をキーとしてフローマッピングテーブルFMTをサーチすることで、送信パケットに適用すべき優先度H,Lを決定することができる。
【0055】
図10は、フロー統計データFSDとベースラインデータBLDのデータ構造を示す図である。図10(a)に示すように、フロー統計データFSDのエントリは、「第1フローId」及び「第2フローId」と、1番目からn番目の「ピリオド」とを含む。
前述の通り、「ピリオド」は、パケット間遅延の平均値を算出するのに必要となる、パケット収集のための所定時間長(例えば10秒)の単位時間である。各ピリオドには、当該ピリオド中に収集されたフローId値のパケットの、パケット間遅延の平均値AVG(i)(i=1,2,……n)が格納される。
【0056】
また、図10(b)に示すように、ベースラインデータBLDのエントリは、「第1フローId」及び「第2フローId」と平均値AVGbsとを含む。この平均値AVGbsは、複数の平均値AVG(i)(i=1,2,……n)の中からランダムに抽出した複数の値の平均値である。
なお、前述の通り、本明細書では、フロー統計データFSDに含まれる平均値AVG(i)を「第1遅延量」と呼び、ベースラインデータBLDに含まれる平均値AVGbsを「第2遅延量」と呼んでいる。
【0057】
〔フロー統計データの更新処理〕
図11及び図12は、フロー統計データFSDの更新処理を示すフローチャートである。
図11に示すように、データ処理部313は、まず、捕捉されたパケットからアドレス情報とポート情報を抽出し(ステップS11)、フローマッピングテーブルFMTを検索して(ステップS12)、その情報にマッチするエントリ(フローId)があるか否かを判定する(ステップS13)。
【0058】
上記判定の結果、マッチするフローIdがある場合には、データ処理部313は、当該フローIdを取得してフローマッピングテーブルFMTのタイムスタンプを現在時刻に更新する(ステップS14)。
また、マッチするフローIdがない場合には、データ処理部313は、フローマッピングテーブルFMTに新たなエントリを作成する(ステップS15)。
【0059】
データ処理部313は、上記の処理を今回のピリオド(i)が終了するまで継続し(ステップS16)、今回のピリオド(i)が終了すると、ピリオドを1つインクリメントして(ステップS17)、図12のステップ13以降の処理を行う。
図12を参照して、データ処理部313は、フロー統計データFSDの最初のエントリ(第1フローId)を参照し(ステップS18)、第1フローIdと第2フローIdが同じ値であるか否かを判定する(ステップS19)。
【0060】
ここで、フロー統計データFSDにおいて、第1フローIdと第2フローIdが同じ値である場合は、それらのフローが、一方のノードから他方のノードに連続して送信される同種のパケット(例えば、図7)であることを意味する。
また、フロー統計データFSDにおいて、第1フローIdと第2フローIdが異なる値である場合は、それらのフローが、一方のノードから他方への要求パケットとこれに対応する応答パケット(例えば、図8)であることを意味する。
【0061】
上記判定の結果、第1フローIdと第2フローIdの値が同じ場合には、データ処理部313は、フローIdの値がマッチするフローデータFDを古い順で収集し(ステップS20)、そのフローデータFD間のタイムスタンプ(受信時刻)の差分値ΔT(j)を逐次算出して収集する(ステップS21)。
そして、データ処理部313は、収集した差分値ΔT(j)の合計を、フローIdの値がマッチするフローデータFDのパケット数Nで割った平均値(=AVG(i):第1遅延値)を算出し、その平均値をフロー統計データFSDの該当ピリオドに入力する(ステップS22)。
【0062】
上記判定の結果、第1フローIdと第2フローIdの値が異なる場合には、データ処理部313は、第1フローIdの値がマッチするフローデータFDを古い順で収集するとともに(ステップS23)、第2フローIdの値がマッチするフローデータFDを古い順で収集する(ステップS24)。
また、データ処理部313は、第1フローIdの値とマッチするフローデータFDのタイムスタンプ値と、第2フローIdの値とマッチするフローデータFDのタイムスタンプ値との差分値ΔT(k)を逐次算出し収集する(ステップS25)。
【0063】
そして、データ処理部313は、収集したΔT(k)の合計を、第1フローIdの値がマッチするフローデータFDのパケット数Nで割った平均値(=AVG(i):第1遅延値)を算出し、その平均値をフロー統計データFSDの該当ピリオドに入力する(ステップS26)。なお、この場合、フローデータFD内において、第1フローIdの値とマッチするパケット数と第2フローIDの値とマッチするパケット数が同一であると仮定している。
【0064】
〔ベースラインデータの更新処理〕
データ処理部313は、新規にベースラインデータBLDを作成する場合には、フロー統計データFSDの複数のピリオドの中からランダムに複数個の値を選択し、その平均値(AVGbs:第2遅延量)を算出して、ベースラインデータBLDの該当エントリに入力する。
【0065】
また、データ処理部313は、各ピリオドの終了時に学習係数αを用いたAVGbsの更新処理を行う。
すなわち、データ処理部313は、新たに追加されたピリオドのAVG(i)と既に求めたベースラインデータBLDのAVGbsとの差が所定の閾値を超えている場合には、学習係数αの値を「0」とし、その閾値以下の場合には、αの値をv(但し、vは0<v<1を満たす設定値)として、次式によってAVGbsの値を更新する。
AVGbs=(1−α)×AVGbs+α×AVG(i)
【0066】
〔QoS優先度の更新処理〕
更に、データ処理部313は、各ピリオドの終了時に、次の手順にてフローマッピングテーブルFMT中の優先度の更新処理を行う。
すなわち、データ処理部313は、まず、フロー統計データFSDの各エントリの当該ピリオドの値AVG(i)と、その時点でのベースラインデータBLDの同じエントリの平均値AVGbsとを比較する。
【0067】
このとき、AVG(i)がAVGbsよりも大きく、かつ、その差分が所定の閾値を超えている場合は、データ処理部313は、フローマッピングテーブルFMTにおける対応するフローIdの優先度を「高」にする。
逆に、AVG(i)がAVGbsよりも小さい場合、或いは、AVG(i)がAVGbsよりも大きいがその差分が所定の閾値以内の場合は、データ処理部313は、フローマッピングテーブルFMTにおける対応するフローIdの優先度を「低」にする。
【0068】
このように、ベースラインデータBLDのAVGbs(第2遅延量)は、フロー統計データFSDにおける各ピリオドのAVG(i)(第1遅延量)が、当該フローIdのパケットにおいて普通に生じる遅延量か否かを判定するための、「基準遅延量」として使用される。
【0069】
〔ルータの効果〕
以上の通り、本実施形態のルータ(優先度設定装置)3によれば、送受信ノードが同じである複数のパケットを捕捉処理部311にて取得し、データ処理部313が、パケット間遅延が通常よりも大きいフローの場合は、現状よりも高優先度にして品質を上げ、パケット間遅延が通常よりも小さいフローの場合は、現状よりも低優先度に設定して品質を下げるようになっているので、ネットワークの状態に応じて優先度を柔軟に変更することができる。
【0070】
〔その他の変形例〕
上述の実施形態では、回線終端装置(図1ではONU2)とは別の装置であるルータ3に本発明を適用しているが、回線終端装置とルータ3とを一体化したホームゲートウェイの場合には、この装置に本発明を適用することにしてもよい。
また、フロー統計データFSDのピリオドごとの第1遅延量やベースラインデータBLDの第2遅延量は、例えば中央値などの平均値以外の統計量であってもよい。
【0071】
また、第1遅延量の多寡を判定するための通常状態の「基準遅延量」を、複数の第1遅延量の統計量(第2遅延量)ではなく、固定値に設定することにしてもよい。
更に、上述の実施形態では、図1に示すように、イーサネットケーブル9で構内ネットワークLAN1,LAN2を構成しているが、ルータ3に無線LAN対応のインタフェースを設け、構内のIP端末4との通信を無線で行うようにしてもよい。
この場合、高優先度キューのパケットは、低優先度キューのパケットよりもコンテンションウィンドウのサイズを小さく設定することにしてもよい。
【0072】
上述の実施形態では、本発明の優先度設定機能をルータ3に実装した場合を例示しているが、その機能を、構内ネットワークLAN1,LAN2に繋がるIP端末4に実装することにしてもよい。
この場合、IP端末4にて動的に決定したQoSの優先度を、例えば、人手による入力、或いは、SNMPやUPnPなどを利用したオンラインアクセスにより、ルータ3に優先度を設定することにすればよい。
【0073】
今回開示した実施形態(上述の各変形例を含む。)はすべての点で例示であって制限的なものではない。本発明の権利範囲は、上述の実施形態ではなく、特許請求の範囲と均等の範囲内でのすべての変更が含まれる。
【符号の説明】
【0074】
3 ルータ(優先度設定装置)
4 IP端末
309 パケットプロセッサ
310 中継処理部
311 捕捉処理部(取得部)
312 分類処理部
313 データ処理部(設定部、算出部)
FD フローデータ
FSD フロー統計データ
BLD ベースラインデータ
【特許請求の範囲】
【請求項1】
優先制御方式のパケット通信に用いる優先度を自動的に設定する優先度設定装置であって、
送受信ノードが同じである複数のパケットを取得する取得部と、
取得された複数の前記パケットのパケット間遅延に応じて、当該パケットの優先度を設定する設定部と、
を備えていることを特徴とする優先度設定装置。
【請求項2】
所定のピリオドに取得された複数の前記パケットの取得時刻に基づいて、前記パケット間遅延の統計量である第1遅延量を算出する算出部を更に備え、
前記設定部は、算出された前記第1遅延量と所定の基準遅延量との差に基づいて前記パケットの優先度を設定する請求項1に記載の優先度設定装置。
【請求項3】
前記算出部は、複数の前記ピリオドごとに算出した前記第1遅延量の統計量である第2遅延量を算出し、算出した当該第2遅延量を前記基準遅延量として採用する請求項2に記載の優先度設定装置。
【請求項4】
前記算出部は、前記基準遅延量との差が所定の閾値以上である前記第1遅延量については、前記第2遅延量の算出要素から除外する請求項3に記載の優先度設定装置。
【請求項5】
前記パケット間遅延は、一方のノードから他方のノードに連続して送信される同種の前記パケット間の時間差である請求項1〜4のいずれか1項に記載の優先度設定装置。
【請求項6】
前記パケット間遅延は、一方のノードから他方への要求パケットとこれに対応する応答パケットとの間の時間差である請求項1〜4のいずれか1項に記載の優先度設定装置。
【請求項7】
パケット通信が可能な通信機器を、優先制御方式のパケット通信に用いる優先度を設定する装置として機能させるためのコンピュータプログラムであって、
送受信ノードが同じである複数のパケットを取得するステップと、
取得された複数の前記パケットのパケット間遅延に応じて、当該パケットの優先度を設定するステップと、
を含むことを特徴とするコンピュータプログラム。
【請求項1】
優先制御方式のパケット通信に用いる優先度を自動的に設定する優先度設定装置であって、
送受信ノードが同じである複数のパケットを取得する取得部と、
取得された複数の前記パケットのパケット間遅延に応じて、当該パケットの優先度を設定する設定部と、
を備えていることを特徴とする優先度設定装置。
【請求項2】
所定のピリオドに取得された複数の前記パケットの取得時刻に基づいて、前記パケット間遅延の統計量である第1遅延量を算出する算出部を更に備え、
前記設定部は、算出された前記第1遅延量と所定の基準遅延量との差に基づいて前記パケットの優先度を設定する請求項1に記載の優先度設定装置。
【請求項3】
前記算出部は、複数の前記ピリオドごとに算出した前記第1遅延量の統計量である第2遅延量を算出し、算出した当該第2遅延量を前記基準遅延量として採用する請求項2に記載の優先度設定装置。
【請求項4】
前記算出部は、前記基準遅延量との差が所定の閾値以上である前記第1遅延量については、前記第2遅延量の算出要素から除外する請求項3に記載の優先度設定装置。
【請求項5】
前記パケット間遅延は、一方のノードから他方のノードに連続して送信される同種の前記パケット間の時間差である請求項1〜4のいずれか1項に記載の優先度設定装置。
【請求項6】
前記パケット間遅延は、一方のノードから他方への要求パケットとこれに対応する応答パケットとの間の時間差である請求項1〜4のいずれか1項に記載の優先度設定装置。
【請求項7】
パケット通信が可能な通信機器を、優先制御方式のパケット通信に用いる優先度を設定する装置として機能させるためのコンピュータプログラムであって、
送受信ノードが同じである複数のパケットを取得するステップと、
取得された複数の前記パケットのパケット間遅延に応じて、当該パケットの優先度を設定するステップと、
を含むことを特徴とするコンピュータプログラム。
【図1】
【図2】
【図3】
【図4】
【図5】
【図6】
【図7】
【図8】
【図9】
【図10】
【図11】
【図12】
【図2】
【図3】
【図4】
【図5】
【図6】
【図7】
【図8】
【図9】
【図10】
【図11】
【図12】
【公開番号】特開2012−239138(P2012−239138A)
【公開日】平成24年12月6日(2012.12.6)
【国際特許分類】
【出願番号】特願2011−108419(P2011−108419)
【出願日】平成23年5月13日(2011.5.13)
【出願人】(000002130)住友電気工業株式会社 (12,747)
【Fターム(参考)】
【公開日】平成24年12月6日(2012.12.6)
【国際特許分類】
【出願日】平成23年5月13日(2011.5.13)
【出願人】(000002130)住友電気工業株式会社 (12,747)
【Fターム(参考)】
[ Back to top ]