(57)【要約】【課題】優先パケットを処理する際の遅延を所定期間内に保つ。【解決手段】実施形態に係る処理装置は、受信部、処理部、第１の格納部、調整部、第２の格納部、出力部を備える。受信部は、パケットを受信する。処理部は、パケットを処理する。第１の格納部は、処理部が優先的に処理する優先パケットを格納する。調整部は、第１の格納部に格納される優先パケットの数を、優先パケットに対して所定期間に可能な処理の量として設定された設定値以下の処理量で処理される数に調整する。第２の格納部は、第１の格納部に格納されないパケットを格納する。出力部は、第１の格納部中のパケットを処理部に出力する。さらに、出力部は、処理部が所定期間に可能な処理量から、第１の格納部中の優先パケットに対する処理量を差し引いた余剰値で処理可能な数のパケットを、第２の格納部から処理部に出力する。【選択図】図１
2015091047.tif 000002
【特許請求の範囲】
【請求項１】
パケットを受信する受信部と、
前記パケットを処理する処理部と、
前記処理部が優先的に処理する優先パケットを格納する第１の格納部と、
前記第１の格納部に格納される優先パケットの数を、前記優先パケットに対して所定期間に可能な処理の量として設定された設定値以下の処理量で処理される数に調整する調整部と、
前記第１の格納部に格納されないパケットを格納する第２の格納部と、
前記第１の格納部中のパケットを前記処理部に出力するとともに、前記処理部が前記所定期間に可能な処理量から、前記第１の格納部中の優先パケットに対する処理量を差し引いた余剰値で処理可能な数のパケットを、前記第２の格納部から前記処理部に出力する出力部
を備えることを特徴とするパケット処理装置。
【請求項２】
前記優先パケットに対する処理の種類の候補と、前記候補による処理の対象のパケットへの処理量を処理対象のパケットの長さの関数として表わす関数情報を対応付けて記憶する記憶部
をさらに備え、
前記調整部は、
前記優先パケットに対する処理量が、前記優先パケットの長さに応じて変動する場合、前記優先パケットに対する処理の種類に対応付けられた関数情報と、前記優先パケットの長さを用いて、前記優先パケットに対する処理量を計算し、
計算した処理量を用いて、前記優先パケットを前記第１の格納部に格納できるかを判定する
ことを特徴とする請求項１に記載のパケット処理装置。
【請求項３】
前記処理部での処理後のパケットを送信する送信部
をさらに備え、
前記記憶部は、前記処理部が前記処理部に入力されたパケットの宛先に向けた中継処理を行うときに使用する経路情報をさらに備え、
前記調整部は、前記経路情報に含まれている経路数が多いほど、前記優先パケットに対する処理量を大きくする
ことを特徴とする請求項１または２に記載のパケット処理装置。
【請求項４】
前記記憶部は、前記処理部で前記所定期間に処理可能な処理量の上限である上限値と、前記処理部で前記所定期間に処理可能な処理量の下限である下限値をさらに保持し、
前記調整部は、
前記第１の格納部に格納できない優先パケットの量が第１の閾値を超えると、前記上限値を超えない範囲で前記設定値を引き上げ、
前記第１の格納部に格納できない優先パケットの量が、前記第１の閾値より小さい第２の閾値を下回ると、前記下限値以上の範囲で前記設定値を引き下げる
ことを特徴とする請求項１〜３のいずれか１項に記載のパケット処理装置。
【請求項５】
第１の格納部と第２の格納部を備える処理装置が、
パケットを受信し、
前記パケット中で優先的に処理する優先パケットに対して所定期間に可能な処理の量として設定された設定値以下の処理量で処理される数だけ、前記優先パケットを前記第１の格納部に格納し、
前記第１の格納部に格納されないパケットを、前記第２の格納部に格納し、
前記第１の格納部中のパケットを処理し、
前記所定期間に可能な処理量から、前記第１の格納部中の優先パケットに対する処理量を差し引いた余剰値で処理可能な数のパケットを、前記第２の格納部から読み出して処理する
ことを特徴とするパケット処理方法。
【請求項６】
第１の格納部と第２の格納部を備える第１の装置と、
優先的に処理される対象となる優先パケットと、優先的に処理されないパケットである通常パケットを前記第１の装置に送信する第２の装置、
を備えるシステムであって、
前記第１の装置は、
前記第２の装置から前記優先パケットと前記通常パケットを受信し、
前記優先パケットに対して前記第１の装置が所定期間に行うことができる処理の量として設定された設定値以下の処理量で処理される数だけ、前記優先パケットを前記第１の格納部に格納し、
前記通常パケットを前記第２の格納部に格納し、
前記第１の格納部中のパケットを処理し、
前記所定期間に前記第１の装置が処理できる処理量から、前記第１の格納部中の優先パケットに対する処理量を差し引いた余剰値で処理可能な数のパケットを、前記第２の格納部から読み出して処理する
ことを特徴とするパケット処理システム。
【請求項７】
第１の格納部と第２の格納部を備える処理装置に、
パケットを受信し、
前記パケット中で優先的に処理する優先パケットに対して所定期間に可能な処理の量として設定された設定値以下の処理量で処理される数だけ、前記優先パケットを前記第１の格納部に格納し、
前記第１の格納部に格納されないパケットを、前記第２の格納部に格納し、
前記第１の格納部中のパケットを処理し、
前記所定期間に可能な処理量から、前記第１の格納部中の優先パケットに対する処理量を差し引いた余剰値で処理可能な数のパケットを、前記第２の格納部から読み出して処理する
装置として動作させることを特徴とするパケット処理プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、優先度の異なる複数のパケットの処理に関する。
【背景技術】
【０００２】
通信装置の普及により、ネットワーク中で送受信されるパケットの種類やパケット中のデータの長さなども多様化してきている。さらに、優先度の異なるパケットが同じネットワーク中で送受信されることも多くなってきている。ネットワーク中で複数の優先度のパケットが送受信される場合、優先度の高いパケットについての通信処理による遅延を所定の範囲内にすることが望ましい場合がある。そのため、通信の開始前に、通信に使用する帯域を予約し、予約した帯域を使用して通信を行うことにより、処理遅延の変動を防止することも提案されている。
【０００３】
関連する技術として、処理対象の信号の優先度ごとに保証処理量を決定し、保証処理量を上限として、優先度順かつ先着順に処理することにより、負荷が高くても優先度の低い信号を処理可能な信号処理システムが提案されている（例えば、特許文献１）。また、複数の転送処理部を備えていて、受信パケットから抽出した情報に対応付けられている付帯情報に合わせて、受信パケットを処理する転送処理部を決定するノード装置も提案されている。ここで、ノード装置は、付帯情報と受信パケットの処理内容を対応付けた処理管理テーブルを保持しており、処理管理テーブルには、転送処理部での処理結果や転送処理部の負荷状態の変化が反映される（例えば、特許文献２）。さらに、受信データの特徴を含む特徴量を抽出し、特徴量に基づいて通信タスクが用いる処理能力を推測し、処理能力の推測結果と通信タスクの処理能力の差に基づいて処理能力を調整する装置も提案されている（例えば、特許文献３）。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開平１―２０９８３９号公報
【特許文献２】特開２００２−３５４００９号公報
【特許文献３】特開２００９−２５３５２０号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
予約された帯域を使用して通信を行っても、パケットに対してソフトウェアによる処理が行われる場合、ソフトウェアを用いた処理によって予測以上に遅延が大きくなることがある。従って、通信帯域を予約したとしても、処理装置の処理能力によっては、遅延時間を所定の範囲内に保つことは困難になってきている。
【０００６】
関連する技術として背景技術で述べた方法を用いても、パケットに対するソフトウェアを用いた処理に起因する遅延が処理遅延に含まれている場合には、遅延時間を所定の範囲内に保つことは困難である。
【０００７】
本発明は、優先パケットを処理する際の遅延を所定期間内に保つことを目的とする。
【課題を解決するための手段】
【０００８】
実施形態に係るパケット処理装置は、受信部、処理部、第１の格納部、調整部、第２の格納部、出力部を備える。受信部は、パケットを受信する。処理部は、前記パケットを処理する。第１の格納部は、前記処理部が優先的に処理する優先パケットを格納する。調整部は、前記第１の格納部に格納される優先パケットの数を、前記優先パケットに対して所定期間に可能な処理の量として設定された設定値以下の処理量で処理される数に調整する。第２の格納部は、前記第１の格納部に格納されないパケットを格納する。出力部は、前記第１の格納部中のパケットを前記処理部に出力する。さらに、出力部は、前記処理部が前記所定期間に可能な処理量から、前記第１の格納部中の優先パケットに対する処理量を差し引いた余剰値で処理可能な数のパケットを、前記第２の格納部から前記処理部に出力する。
【発明の効果】
【０００９】
優先パケットを処理する際の遅延が所定期間内に保たれる。
【図面の簡単な説明】
【００１０】
【図１】実施形態にかかる処理方法の例を示す図である。
【図２】処理装置の構成の例を示す図である。
【図３】処理装置のハードウェア構成の例を示す図である。
【図４】パケット特性テーブルの例を示す図である。
【図５】パラメータ情報テーブルの例を示す図である。
【図６】パケットのフォーマットの例を示す図である。
【図７】パケットの分類方法の例を説明するフローチャートである。
【図８】補正テーブルの例を示す図である。
【図９】予約情報テーブルの例を示す図である。
【図１０Ａ】パケットのキューイングの際に行われる処理の例を説明するフローチャートである。
【図１０Ｂ】パケットのキューイングの際に行われる処理の例を説明するフローチャートである。
【図１１】制御部で行われる処理の例を示すフローチャートである。
【図１２】第２の実施形態で使用される予約情報テーブルの例を示す図である。
【図１３】第２の実施形態で使用される予約情報テーブルの例を示す図である。
【図１４】第２の実施形態で使用される予約情報テーブルの例を示す図である。
【図１５】第２の実施形態で使用される予約情報テーブルの例を示す図である。
【図１６】第２の実施形態で使用される予約情報テーブルの例を示す図である。
【図１７】第２の実施形態で使用される予約情報テーブルの例を示す図である。
【図１８】第２の実施形態で使用される予約情報テーブルの例を示す図である。
【図１９】第３の実施形態での処理の例を示す図である。
【図２０】実施形態にかかる方法が適用可能なシステムの例を示す図である。
【図２１】パケットのフォーマットの例を示す図である。
【発明を実施するための形態】
【００１１】
図１は、実施形態にかかる処理方法の例を示す。処理装置は、予約キュー、ベストエフォートキュー、処理部を備えている。予約キューは、処理装置において優先的に処理されるパケットの格納に使用される。以下、優先的に処理される対象のパケットを「優先パケット」と記載することがある。一方、ベストエフォートキューは、優先パケットのうち、予約キューに格納されなかったパケットと、優先パケットではないパケット（通常パケット）を格納する。
【００１２】
処理装置は、予約キューに格納されたパケットに対して処理装置が所定期間中に行うことが可能な処理の量（処理量の設定値）を、予め設定している。処理装置は、パケットを受信すると、受信したパケットが優先パケットであるかを判定する。優先パケットであるかの判定は、パケットの種類やパケットの送信元と宛先の組み合わせなど、実装に応じた任意の情報を用いて行われるものとする。処理装置は、優先パケットを受信すると、予約キューに格納されているパケットの処理量と新たに受信した優先パケットとに対する処理量の合計が設定値を上回らない場合、新たに受信した優先パケットを、予約キューに格納する。
【００１３】
例えば、図１の例では、処理装置は、パケットＰ１〜Ｐ５を受信している。パケットＰ１〜Ｐ５のうち、パケットＰ１〜Ｐ４は優先パケットであり、パケットＰ５は通常パケットであるとする。処理装置は、まず、パケットＰ１を受信し、パケットＰ１が優先パケットであると判定すると、パケットＰ１に対する処理量を見積もる。図１の例では、パケットＰ１の処理量が設定値よりも小さく、他のパケットが予約キューに格納されていないので、処理装置は、パケットＰ１を予約キューに格納する。処理装置は、パケットＰ２を受信するとパケットＰ１と同様に判定処理を行う。さらに、パケットＰ２に対する処理量と、パケットＰ１に対する処理量の合計値を、設定値と比較する。図１の例では、パケットＰ１、Ｐ２の処理量の合計値が設定値よりも小さいので、パケットＰ２も予約キューに格納される。パケットＰ３についても、パケットＰ２と同様の処理により、予約キューに格納される。
【００１４】
次に、処理装置がパケットＰ４を受信したとする。パケットＰ４は優先パケットであるので、処理装置は、予約キューに格納されているパケットＰ１〜Ｐ３に対する処理量と、パケットＰ４に対する処理量の合計値を、設定値と比較する。ここで、パケットＰ１〜Ｐ４に対する処理量の合計値が設定値よりも大きいとする。すると、処理装置は、パケットＰ４は優先パケットではあるものの、予約キューには格納できないと判定し、パケットＰ４をベストエフォートキューに格納する。さらに処理装置がパケットＰ５を受信したとする。パケットＰ５は通常パケットであるので、処理装置は、パケットＰ５を、ベストエフォートキューに格納する。
【００１５】
その後、予約キューに格納されたパケットとベストエフォートキューに格納されたパケットは、予約キューに格納されたパケットから優先的に処理部で処理される。このとき、処理部は、予約キューから入力されたパケットの処理には、予め設定されている設定値で表わされる分のリソースを用いて処理を行う。換言すると、予約キューに格納されているパケットについては、設定値を用いて確保されているリソースによる処理が予約されているといえる。このため、予約キューに格納された優先パケットについては、予め設定された所定期間中に処理が終了する。処理部は、所定期間中に可能な処理量と、予約キューから取得したパケットの処理量の差分で、ベストエフォートキューから取得したパケットの処理を行う。
【００１６】
このように、処理装置では、所定時間内に処理する対象とするパケットは、パケットごとの処理量と、所定時間内に優先的に処理が可能な量を用いて選択される。また、予約キューに格納されたパケットは、所定の時間内に処理されるので、確実に処理遅延時間を見積もることができる。従って、予め、処理装置において、予約キューに格納されるパケットの処理量を大きく設計すれば、優先パケットを全て予約キューに格納することができ、優先パケットに対する処理遅延を正確に見積もることができるようになる。
【００１７】
＜装置構成＞
図２は、処理装置１０の構成の例を示す。図２に示す例では、処理装置１０は、フロー識別部１１とパケット処理部１２を備える。フロー識別部１１は、受信部２１、フロー分類部２２、フロー管理部２３、フロー分類記憶部２０を有する。フロー分類記憶部２０には、パケット特性テーブル２４とパラメータ情報テーブル２５が記憶されている。パケット処理部１２は、振り分け部２６、予約キュー３０、予約情報テーブル３３、補正テーブル３４、ベストエフォートキュー４０、キュー情報テーブル４３、制御部５０を備える。予約キュー３０は、調整部３１と格納部３２を有する。ベストエフォートキュー４０は、調整部４１と格納部４２を有する。制御部５０は、計算部５１、出力部５２、処理部５３を有する。なお、送信部２７はオプションである。処理装置１０がパケットの中継に使用される装置である場合や、処理部５３での処理後のパケットが他の装置に送信される場合、処理装置１０は、送信部２７を備える。
【００１８】
受信部２１は、ネットワークを介して、他の装置等からパケットを受信する。受信部２１は、受信したパケットをフロー分類部２２に出力する。フロー分類部２２は、予約キュー３０を用いた処理を行う対象のパケットを設定するための制御パケットと、ユーザからのデータパケットを、パケット中のタイプ情報を用いて識別する。フロー分類部２２は、制御パケットが入力されると、制御パケットをフロー管理部２３に出力する。フロー管理部２３は、制御パケットを用いて、パケット特性テーブル２４とパラメータ情報テーブル２５の情報を管理する。
【００１９】
受信したパケットがデータパケットである場合、フロー分類部２２は、パケット特性テーブル２４とパラメータ情報テーブル２５を参照して、受信部２１から入力されたパケットが優先パケットであるかを判定する。パラメータ情報テーブル２５、パケット特性テーブル２４の例と、優先パケットの判定方法の例については、後述する。フロー分類部２２は、受信パケットを、受信パケットが優先パケットであるかに関する情報と共に、振り分け部２６に出力する。振り分け部２６は、優先パケットであると判定されたパケットを、調整部３１に出力する。さらに振り分け部２６は、通常パケットを、調整部４１に出力する。
【００２０】
調整部３１は、適宜、補正テーブル３４を使用して、入力されたパケットに対する処理量を計算する。さらに、調整部３１は、これまでに格納部３２に格納されているパケットに対する処理量と新たに入力されたパケットに対する処理量の合計値を計算する。調整部３１は、得られた合計値を、予約キュー３０中のパケットに割り当てられた処理量の設定値と比較する。このとき、調整部３１は、適宜、予約情報テーブル３３を使用する。合計値が設定値以下の場合、調整部３１は、入力されたパケットを格納部３２に格納する。一方、合計値の方が設定値よりも大きい場合、調整部３１は、入力されたパケットを調整部４１に出力する。予約情報テーブル３３および補正テーブル３４の例と、調整部３１の動作の具体例については、後で述べる。
【００２１】
調整部４１は、適宜、補正テーブル３４を使用して、入力されたパケットに対する処理量を計算する。さらに、調整部４１は、格納部４２に格納されているパケットに対する処理量と、調整部３１または振り分け部２６から新たに入力されたパケットに対する処理量の合計値を計算する。調整部４１は、合計値を用いて、新たに入力されたパケットを格納部４２に格納できるかを判定する。ここで、処理部５３が所定期間中に行う処理量の総量から、予約キュー３０に格納されるパケットに対して設定されている設定値を差し引いた処理量で処理できるパケットについては、格納部４２に格納される。このとき、調整部４１は、適宜、キュー情報テーブル４３を使用する。キュー情報テーブル４３の例や調整部４１の動作の具体例についても、後で述べる。
【００２２】
なお、ベストエフォートキュー４０については、パケットの処理量の計算や調整を行わずに、格納部４２の容量分のパケットを格納部４２に格納しても良い。この場合、処理装置１０は、調整部４１を備えなくても良い。
【００２３】
計算部５１は、格納部３２に格納されたパケットに対する処理量を計算する。計算部５１は、得られた計算結果を出力部５２に出力する。出力部５２は、格納部３２に格納されているパケットを処理部５３に出力する。さらに、出力部５２は、処理部５３が所定期間中に行う処理量の総量から、計算部５１で得られた計算値を差し引いた余剰値を求める。さらに、余剰値で処理可能な分のパケットを格納部４２から読み出して処理部５３に出力する。処理部５３は、出力部５２から得られたパケットを処理する。従って、処理部５３は、格納部３２に格納されていたパケットを処理し、格納部３２に格納されていたパケットを処理した後の余剰の処理能力を用いて、格納部４２に格納されていたパケットを処理する。
【００２４】
図３は、処理装置１０のハードウェア構成の例を示す。処理装置１０は、Central Processing Unit（ＣＰＵ）６０、キャッシュ６１、ＣＰＵコア６２（６２ａ、６２ｂ）、キャッシュ６３（６３ａ、６３ｂ）、メモリ６４、バス６５、回線インタフェース６６（６６ａ、６６ｂ）を備える。例えば、処理装置１０はコンピュータによって実現され得る。なお、図３では、処理装置１０にＣＰＵ６０が備えられている場合を例としているが、処理装置１０は、ＣＰＵ６０以外のプロセッサを備えていても良い。
【００２５】
ＣＰＵコア６２は、フロー分類部２２、フロー管理部２３、振り分け部２６、調整部３１、調整部４１、および、制御部５０として動作する。キャッシュ６１、キャッシュ６３、メモリ６４は、フロー分類記憶部２０、格納部３２、格納部４２として動作し、さらに、予約情報テーブル３３、補正テーブル３４、キュー情報テーブル４３などの情報を格納する。ＣＰＵ６０の動作に使用されるプログラムやデータはメモリ６４に格納されており、適宜、キャッシュ６１やキャッシュ６３に読み込まれる。なお、予約キュー３０に格納されたパケットを優先的に処理するために、キャッシュ６３やキャッシュ６１は、調整部４１よりも調整部３１に優先的に割り当てられる。バス６５は、ＣＰＵ６０、メモリ６４、回線インタフェース６６を、相互にデータを入出力できるように接続する。回線インタフェース６６は、受信部２１と送信部２７として動作する。
【００２６】
なお、格納部３２に格納されたパケットと格納部４２に格納されたパケットの処理に用いられるＣＰＵコア６２は、異なっていても同じであっても良い。例えば、ＣＰＵコア６２ａは、格納部３２に格納されたパケットの処理に用いられ、ＣＰＵコア６２ｂは、格納部３２に格納されたパケットと格納部４２に格納されたパケットの両方の処理に用いられるように設定されていても良い。
【００２７】
また、図３では、一例としてＣＰＵコア６２が２つの場合を示しているが、１つのＣＰＵ６０に含まれるＣＰＵコア６２の数は任意である。例えば、ＣＰＵ６０に４つのＣＰＵコア６２が含まれている場合、ＣＰＵコア６２ａ〜６２ｃは、格納部３２に格納されていたパケットの処理に優先的に使用され、ＣＰＵコア６２ｄは、格納部４２に格納されていたパケットの処理に使用されることがある。
【００２８】
＜第１の実施形態＞
以下、第１の実施形態を、処理装置１０への予約の設定、受信したパケットの分類、パケットのキューイング、パケットの処理に分けて説明する。
【００２９】
〔処理装置への予約の設定〕
オペレータは、ユーザからの要求に応じて、予約キュー３０を用いた処理の対象を通知するための制御パケットを処理装置１０に送信する。フロー分類部２２は、受信部２１を介して取得した受信パケットのタイプが制御パケットに設定されている場合、受信パケットが制御パケットであると判定し、制御パケットをフロー管理部２３に出力する。なお、タイプはＩＰヘッダ中のタイプフィールドなどを用いて設定され得る。以下、フロー管理部２３によるパケット特性テーブル２４とパラメータ情報テーブル２５の更新について述べる。
【００３０】
図４は、パケット特性テーブル２４の例を示す。パケット特性テーブル２４には、処理装置１０を経由するフローの分類方法が記録されている。図４に示すパケット特性テーブル２４では、フローごとに、フロー識別番号、送信元ＩＰアドレス、宛先ＩＰアドレス、プロトコル、送信元ポート番号、宛先ポート番号などの情報が記録されている。さらに、図４の例では、フローごとに、Security Architecture for Internet Protocol（ＩＰｓｅｃ）のSecurity Parameter Index（ＳＰＩ）の値も記録されている。ここで、フロー識別番号は、個々のフローを識別するために使用される識別子である。また、パケット特性テーブル２４中のプロトコルの欄には、ＩＰｓｅｃ、Transmission Control Protocol（ＴＣＰ）、User Datagram Protocol（ＵＤＰ）など、フロー識別子で識別されるフローで使用されているプロトコルの情報が記録される。なお、ＩＰｓｅｃ  ＳＰＩは、パケットに対するエンコードまたはデコードの際に使用されるパラメータの特定に使用される値である。初期状態では、予約キュー３０を用いた処理についての設定が含まれていないので、パケット特性テーブル２４ａに示すように、処理装置１０が受信し得る任意のパケットがフロー識別番号＝０に対応付けられている。
【００３１】
フロー管理部２３は、制御パケットを受信すると、制御パケットで指定されたフローのパケットを指定された所定パケット数だけ処理するときにかかるステップ数の予測値と、予約キュー３０を介した処理が予約されているフローの所定期間の処理ステップ数の合計値を求める。さらに、フロー管理部２３は、得られた合計値を、予約キュー３０を用いた処理で所定期間中に可能なステップ数と比較する。ここで、所定期間は、予約情報テーブル３３でのステップ数の管理に使用されている時間単位であり、例えば、１マイクロ秒、１ミリ秒、１秒など、実装に応じた任意の長さに設定される。合計値が予約キュー３０を用いた処理で所定期間中に可能なステップ数を超えている場合、フロー管理部２３は、予約キュー３０に新たなフローのパケットを格納できないと判定し、制御パケットを廃棄すると共に、制御パケットの送信元にエラーを通知する。
【００３２】
一方、合計値が予約キュー３０を用いた処理で所定期間中に可能なステップ数以下の場合、フロー管理部２３は、新たなフローの予約が可能であると判定する。例えば、予約キュー３０からのパケットに対して１秒間に２００万ステップの処理が可能であり、パケット特性テーブル２４ａに示すように他のフローの処理の予約が含まれていないとする。ここで、ユーザが処理するパケットの種類に対応付けられたステップ数が１パケットあたり２０００ステップで、ユーザが要求している処理速度では、１秒当たり１０００パケットが処理されるとする。すると、合計値は、制御パケットで指定されたフローの処理ステップと予約済みフローの処理ステップの合計であるので、２０００ステップ×１００パケット＋０ステップ＝２０万ステップである。従ってフロー管理部２３は、制御パケットにより通知されたフローに関する予約を設定できると判定する。
【００３３】
フロー管理部２３は、制御パケットにより通知されたフローに関する予約を設定できると判定すると、制御パケットに含まれている情報のうち、パケット特性テーブル２４に登録されている情報要素を、パケット特性テーブル２４に登録する。例えば、制御パケットにより指定されたフローでは、送信元ＩＰアドレスが１０．０．０．１、宛先ＩＰアドレスが１０．０．０．２であり、ＩＰｓｅｃＳＰＩの値が１００１であるとする。すると、フロー管理部２３は、パケット特性テーブル２４ｂに示すフロー識別番号＝１のエントリを、パケット特性テーブル２４ａに追加する。さらに、フロー管理部２３は、パラメータ情報テーブル２５も更新する。
【００３４】
図５は、パラメータ情報テーブル２５の例を示す。パラメータ情報テーブル２５では、フロー識別番号に対応付けて、予約状況、処理タイプ、想定処理ステップ数、アクセスメモリ量が記録されている。予約状況は、優先的に予約キュー３０に格納されるパケットであるかを示す。優先的に予約キュー３０を経由した処理を行うことが予約されているフローについては、予約状況は「予約」に設定される。一方、優先的に予約キュー３０を経由した処理を行うことが予約されていないフローについては、予約状況は「ベストエフォート」に設定される。すなわち、優先パケットでは、予約状況が「予約」に設定され、通常パケットでは予約状況が「ベストエフォート」に設定される。
【００３５】
フロー管理部２３は、パケット特性テーブル２４に生成したエントリで使用したフロー識別番号に対応付けて、制御パケットで特定されている処理のタイプをパラメータ情報テーブル２５に登録する。さらに、特定した処理の種類に応じて、１つのパケットの処理に用いる処理ステップ数とアクセスメモリ量を、パラメータ情報テーブル２５に記録する。なお、フロー管理部２３は、パケットの種類ごとに、１つのパケットの処理に用いる処理ステップ数とアクセスメモリ量の設定値として取り得る値を記憶しているものとする。ここで、パラメータ情報テーブル２５に記録されている想定処理ステップ数は、パケットの種類に応じて、１パケットの処理にかかるステップ数の予測値として使用する値である。パケットの種類によっては、パケットの長さに応じて処理ステップ数が変動することがあるが、パラメータ情報テーブル２５は、パケットの振り分けを容易にするために、パケットの長さにかかわらず、予め決められた所定の値を記憶している。アクセスメモリ量についても同様に、パケットの長さに関わらず、パケットの種類に応じた所定の値が設定される。なお、アクセスメモリ量は、１つのパケットの処理に使用されるメモリの量である。
【００３６】
次に、パラメータ情報テーブル２５の変更の具体例を述べる。ここで、制御パケットは、制御パケットにより指定されたフローに対して、ＩＰｓｅｃによるエンコードが要求されていることを示す情報を含んでいるものとする。すると、フロー管理部２３は、フロー識別番号＝１のフローに対して、予約キュー３０の使用が予約されていることと、処理タイプがＩＰｓｅｃのエンコードであることをパラメータ情報テーブル２５に記録する。想定される処理ステップ数が１パケットあたり２０００ステップ、１パケットの処理に用いることが予測されるメモリ量が１０２４バイトである場合、フロー管理部２３は、パラメータ情報テーブル２５ｂのフロー識別番号＝１のエントリに、それらの情報も追加する。さらに、次の制御パケットにより、以下の情報が通知されたとする。
送信元ＩＰアドレス：１０．０．０．２
宛先ＩＰアドレス  ：１０．０．０．１
プロトコル        ：ＩＰｓｅｃ
ＩＰｓｅｃＳＰＩ  ：１００１
処理              ：ＩＰｓｅｃデコード
すると、フロー管理部２３が同様処理を行うことにより、パケット特性テーブル２４には、パケット特性テーブル２４ｂのフロー識別番号＝２のエントリが追加される。一方、パラメータ情報テーブル２５には、パラメータ情報テーブル２５ｂのフロー識別番号＝２のエントリが追加される。（ここでは、ＩＰｓｅｃエンコードとデコードについて、同等のステップ数を想定するものとする）
【００３７】
〔パケットの分類〕
以下、処理装置１０がパケット特性テーブル２４ｂとパラメータ情報テーブル２５ｂを保持している場合を例として、フローの分類方法を説明する。
【００３８】
受信部２１が受信パケットをフロー分類部２２に出力する。フロー分類部２２は、受信パケットがデータパケットである場合、データパケットがいずれのフローで送信されたかを特定するために、パケット特性テーブル２４でフローの分類に使用されている情報を受信パケットから抽出する。以下、パケット特性テーブル２４でフローの分類に使用されている情報のことを、「フロー特徴情報」と記載することがある。例えば、フロー特徴情報には、送信元ＩＰアドレス、宛先ＩＰアドレス、送信元ポート番号、宛先ポート番号などが使用される。フロー分類部２２は、受信パケットのＩＰヘッダや、トランスポート層のヘッダから、フロー特徴情報を抽出する。さらに、フロー分類部２２は、フロー特徴情報をキーとしてパケット特性テーブル２４を検索し、受信パケットを含むフローを識別するフロー識別番号を特定する。
【００３９】
例えば、受信パケットの送信元ＩＰアドレスが１０．０．０．１、宛先ＩＰアドレスが１０．０．０．２であり、ＩＰｓｅｃＳＰＩの値が１００１に設定されているとする。この場合、フロー分類部２２は、これらの情報を用いてパケット特性テーブル２４ｂを検索し、受信パケットの条件がフロー識別番号＝１のエントリに一致していると判定する。ここで、受信パケットの条件が複数のエントリの条件に該当する場合、フロー分類部２２は、最も多くの数の情報要素の値が完全一致したエントリの情報を、受信パケットの属するフローの情報とする。例えば、フロー識別番号＝１に該当するパケットは、フロー識別番号＝０の条件も満たすことになるが、送信元ＩＰアドレスや宛先ＩＰアドレス等、完全一致している情報要素の数は、フロー識別番号＝１の方が多い。そこで、フロー分類部２２は、フロー識別番号＝１とフロー識別番号＝０の両方に該当していても、今回のパケットについては、フロー識別番号＝１のフローのパケットであると特定する。
【００４０】
次に、フロー分類部２２は、特定したフロー識別番号を用いて、パラメータ情報テーブル２５ｂを参照する。例えば、フロー分類部２２は、パラメータ情報テーブル２５ｂを用いることにより、フロー識別番号＝１のフローについて、予約キュー３０の使用が予約されていること、ＩＰｓｅｃのエンコードの対象であることを特定する。さらに、フロー分類部２２は、想定される処理ステップ数が１パケットあたり２０００ステップ、アクセスメモリ量が１パケットあたり１０２４バイトであることも特定する。以下の説明では、フロー分類部２２がパケット特性テーブル２４とパラメータ情報テーブル２５を用いて特定した情報のことを、「付加情報」と記載することがある。フロー分類部２２は、付加情報を、受信パケットに対応付けて振り分け部２６に出力する。
【００４１】
図６は、パケットのフォーマットの例を示す。フロー分類部２２は、例えば、図６のＰ１に示すように、パケットごとにパケット共通管理ヘッダを生成し、パケット共通管理ヘッダを、振り分け部２６に出力することができる。パケット共通管理ヘッダには、処理装置１０のメモリ領域のうち、受信パケットが格納されているアドレスの先頭を示すポインタと、付加情報が格納されている領域の先頭を示すポインタが含まれている。付加情報には、予約状況、処理タイプ、想定処理ステップ数、アクセスメモリ量が含まれる。
【００４２】
図６のＤ１は、処理タイプフィールドの設定値の例を示す。処理タイプフィールドの設定値は、処理タイプを一意に特定するための値である。Ｄ１の例では、処理タイプには、Ｌ３中継、Ｌ２中継、Network Address Translation（ＮＡＴ）、Generic Routing Encapsulation（ＧＲＥ）トンネルを用いた通信用のカプセル化とデカプセル化、ＩＰｓｅｃでのエンコードとデコードが含まれる。これらの処理タイプに、Ｄ１の例では、０〜６の値が設定されている。図６のＤ２には、予約状況を特定するための値の例が示されている。Ｄ２の例では、予約キュー３０での処理が予約されていることがパラメータ情報テーブル２５に記録されているフローについては、設定値は０になっている。一方、予約キュー３０を用いる処理の予約が行われておらず、全てのパケットに対してベストエフォート方式での処理を適用するフローについては、設定値が１となっている。
【００４３】
図７は、パケットの分類方法の例を説明するフローチャートである。なお、図６では、付加情報をパケットとは異なる領域に格納する場合の例を示したが、付加情報は、パケットに添付されても良い。図７を参照しながら、パケットに付加情報が添付される場合の処理を説明する。
【００４４】
受信部２１は、フロー分類部２２にデータパケットを出力する（ステップＳ１）。フロー分類部２２は、入力されたパケットからフロー特徴情報を抽出し、得られた情報をキーとしてパケット特性テーブル２４を検索する（ステップＳ２）。次に、フロー分類部２２は、特徴情報を用いて特定したフローにマッチするエントリがパラメータ情報テーブル２５にあるかを判定する（ステップＳ３）。フローにマッチするエントリがパラメータ情報テーブル２５にある場合、フロー分類部２２は、そのエントリの内容に従って、付加情報をパケットに添付する（ステップＳ３でＹｅｓ、ステップＳ４）。フロー分類部２２は、付加情報を添付したパケットを、パケット処理部１２に出力する（ステップＳ５）。一方、フロー分類部２２は、特徴情報にマッチするエントリがパラメータ情報テーブル２５に無い場合、フロー分類部２２は、不正なパケットが入力されたと判定して、パケットを廃棄する（ステップＳ６）。
【００４５】
〔パケットのキューイング〕
（１）予約キュー３０へのキューイング
振り分け部２６は、付加情報を読み込み、予約キュー３０を用いた処理が予約されているパケットを調整部３１に出力する。さらに、振り分け部２６は、予約キュー３０を用いた処理の予約が行われていないパケットを調整部４１に出力する。
【００４６】
調整部３１は、入力されたパケットの種類を特定し、入力されたパケットに対する処理のステップ数がパケットの長さなどの可変のパラメータによって変化するかを判定する。パケットの長さなどによってステップ数が変化する処理の例として、ＩＰｓｅｃによるエンコード、デコード、パケットの圧縮、パケットの解凍などが挙げられる。調整部３１は、処理のステップ数がパケットの長さなどによって変化すると判定すると、補正テーブル３４を参照して、処理にかかるステップ数を計算する。
【００４７】
図８は、補正テーブル３４の例を示す。図８に示す補正テーブル３４には、ＩＰｓｅｃでのエンコードおよびデコードの対象となるパケットの処理ステップ数の補正式と、圧縮や解凍の対象となるパケットでの処理ステップ数の補正式が記録されている。補正式は、処理対象のパケットのＩＰデータ部分の１バイトあたりの処理のステップ数と、ＩＰデータのバイト数の積と、付加情報の処理ステップ数の和として表わせる。なお、図８では、付加情報の処理ステップ数をＡとしている。
【００４８】
例えば、フロー識別番号＝１のパケットの場合、ＩＰｓｅｃによるエンコードの対象である。そこで、フロー識別番号＝１のパケットが入力されると、調整部３１は、図８の１番目のエントリに記憶されている式を用いて、処理ステップ数を計算する。フロー識別番号＝１のパケット中のＩＰデータの長さが２５６バイトであり、付加情報の処理ステップ数（Ａ）が３０００ステップであるとする。すると、フロー識別番号＝１のパケットの処理にかかるステップ数は、
Ａ＋データ長×１０＝３０００＋２５６×１０＝５５６０
となる。調整部３１は、パケットの処理にかかるステップ数を計算すると、予約情報テーブル３３を参照することにより、パケットを格納部３２に格納できるかを判定する。
【００４９】
図９は、予約情報テーブル３３の例を示す。予約情報テーブル３３ａは、処理の単位とする所定期間の長さが１秒である場合の例を示す。予約情報テーブル３３ａには、割り当てステップ数、累計消費ステップ数、余剰ステップ数、割り当てアクセスメモリ量、消費メモリ量、余剰メモリ量が含まれる。割り当てステップ数は、予約キュー３０に格納されたパケットに対して、処理部５３が１秒間に処理可能なステップ数である。累計消費ステップ数は、処理対象としている所定期間の開始時刻以降に処理されるパケットであり、かつ、格納部３２に格納済みのパケットについての処理に用いられるステップ数の合計値である。余剰ステップ数は、割り当てステップ数から累計消費ステップ数を差し引いた値である。割り当てアクセスメモリ量は、予約キュー３０に格納されたパケットに対する処理において処理部５３が使用可能なメモリの最大量である。消費メモリ量は、予約キュー３０に格納されたパケットに対する処理において処理部５３が使用しているメモリ量である。余剰メモリ量は、割り当てアクセスメモリ量から、消費メモリ量を差し引いた値である。以下の説明では、フロー識別番号＝１のパケットが調整部３１に入力されたときに、処理装置１０が予約情報テーブル３３ａを保持しているとする。
【００５０】
調整部３１は、補正テーブル３４を用いた計算で得られたステップ数を、予約情報テーブル３３ａの余剰ステップ数と比較する。ここでは、調整部３１が計算したステップ数は５５６０ステップである。従って、補正テーブル３４を用いた計算で得られたステップ数が余剰ステップ数よりも小さいので、調整部３１は、パケットの処理に使用されるメモリが確保できれば、パケットを格納部３２に格納できると判定する。そこで、調整部３１は、付加情報に含まれているアクセスメモリ量を、予約情報テーブル３３ａの余剰メモリ量と比較する。図６に示すようにアクセスメモリ量は１０２４バイトであるのに対し、予約情報テーブル３３ａの余剰メモリ量は２００００００バイトであるので、余剰メモリ量の報がアクセスメモリ量よりも多い。従って、調整部３１は、パケットを格納部３２に格納できると判定し、パケットを格納部３２に出力する。さらに、調整部３１は、予約情報テーブル３３ａを予約情報テーブル３３ｂに更新する。
【００５１】
一方、余剰ステップ数か余剰メモリ数のいずれかが不足している場合、調整部３１は、パケットを調整部４１に出力する。なお、調整部３１は、調整部４１に出力するパケットについて、処理ステップ数を補正している場合、補正したステップ数を調整部４１に出力する。
【００５２】
なお、累計消費ステップ数の計算が開始された時刻から、所定の処理期間が経過すると、次の処理期間で処理を行うことが可能なパケットであるかを判定するために、調整部３１は、累計消費ステップ数を０にリセットする。累計消費ステップ数が０にリセットされると、余剰ステップ数は割り当てステップ数と等しくなる。
【００５３】
（２）ベストエフォートキュー４０へのキューイング
調整部４１は、調整部３１から入力されたパケットと、振り分け部２６から入力されたパケットの両方に対して、格納部４２に格納できるかの判定を行う。調整部４１がパケットの処理にかかるステップ数を計算する方法は、調整部３１と同様である。調整部４１は、格納部４２にパケットを格納できるかを判定する際に、キュー情報テーブル４３を使用する。キュー情報テーブル４３に含まれている情報要素は、予約情報テーブル３３と同様であるが、キュー情報テーブル４３に含まれる数値は、処理部５３が格納部４２に格納されているパケットの処理に対して所定の処理期間中に行うことができるステップ数等である。調整部４１は、キュー情報テーブル４３を用いて、調整部３１と同様の判定を行う。なお、調整部４１は、調整部３１から入力されたパケットについてステップ数が計算されている場合、調整部３１から得られた計算値を用いて判定を行う。調整部４１は、パケットの処理にかかるステップ数とメモリがまかなえると判定すると、パケットを格納部４２に格納する。一方、パケットの処理にかかるステップ数とメモリを確保できないと判定すると、調整部４１は、パケットを廃棄する。
【００５４】
図１０Ａと図１０Ｂは、パケットのキューイングの際に行われる処理の例を説明するフローチャートである。振り分け部２６は、フロー分類部２２からパケットを取得する（ステップＳ１１）。振り分け部２６は、パケットの付加情報中の予約状況が、予約になっているかを判定する（ステップＳ１２）。パケットの付加情報中の予約状況が予約の場合、振り分け部２６は、パケットを調整部３１に出力する（ステップＳ１２でＹｅｓ）。調整部３１は、パケットの付加情報から、想定処理ステップ数とアクセスメモリ量を取得する（ステップＳ１３）。調整部３１は、パケットの処理タイプが、処理ステップ数の補正の対象であるかを判定する（ステップＳ１４）。処理ステップ数の補正の対象である場合、調整部３１は、入力されたパケットに適用する補正式を補正テーブル３４から取得する（ステップＳ１４でＹｅｓ、ステップＳ１５）。調整部３１は、取得した補正式を用いて処理ステップ数を計算する（ステップＳ１６）。さらに、調整部３１は、予約情報テーブル３３から、余剰ステップ数と余剰メモリ量を取得する（ステップＳ１７）。調整部３１は、パケットの処理が所定時間内に可能であるかを、余剰ステップ数とパケットの処理に使用するステップ数の比較結果、および、余剰メモリ量とアクセスメモリ量の比較結果から判定する（ステップＳ１８）。パケットの処理が所定時間内に可能である場合、調整部３１は、パケットを予約キュー３０中の格納部３２に格納し、予約情報テーブル３３を更新する（ステップＳ１８でＹｅｓ、ステップＳ１９）。
【００５５】
一方、ステップＳ１４で処理ステップ数の補正の対象でないと判定された場合、調整部３１は、予約情報テーブル３３から、余剰ステップ数と余剰メモリ数を取得する（ステップＳ１４でＮｏ、ステップＳ１７）。その後、ステップＳ１８以降の処理が行われる。
【００５６】
ステップＳ１２において、パケットの付加情報中の予約状況が「予約」ではないと判定した場合、および、ステップＳ１８でパケットの処理が所定時間内にできないと判定した場合、調整部３１は、パケットを調整部４１に出力する。調整部４１は、パケットの付加情報から、想定処理ステップ数とアクセスメモリ量を取得する（ステップＳ２０）。調整部４１は、パケットの処理タイプが、処理ステップ数の補正の対象であるかを判定する（ステップＳ２１）。処理ステップ数の補正の対象である場合、調整部４１は、ステップ数の補正が予約キュー３０中の調整部３１によって行われているかを判定する（ステップＳ２１でＹｅｓ、ステップＳ２２）。
【００５７】
ステップ数の補正が予約キュー３０中の調整部３１によって行われていない場合、入力されたパケットに適用する補正式を補正テーブル３４から取得する（ステップＳ２２でＮｏ、ステップＳ２３）。調整部４１は、取得した補正式を用いて処理ステップ数を計算する（ステップＳ２４）。さらに、調整部４１は、キュー情報テーブル４３から、余剰ステップ数と余剰メモリ量を取得する（ステップＳ２５）。調整部４１は、パケットの処理が所定時間内に可能であるかを、余剰ステップ数とパケットの処理に使用するステップ数の比較結果、および、余剰メモリ量とアクセスメモリ量の比較結果から判定する（ステップＳ２６）。パケットの処理が所定時間内に可能である場合、調整部４１は、パケットをベストエフォートキュー４０中の格納部４２に格納し、キュー情報テーブル４３を更新する（ステップＳ２６でＹｅｓ、ステップＳ２７）。パケットの処理が所定時間内にできないと判定した場合、調整部４１は、パケットを廃棄する（ステップＳ２６でＮｏ、ステップＳ２８）。
【００５８】
ステップＳ２１で、パケットが処理ステップ数の補正の対象ではないと判定された場合、ステップＳ２５以降の処理が行われる（ステップＳ２１でＮｏ）。また、ステップＳ２２でステップ数の補正が予約キュー３０中の調整部３１によって行われていると判定された場合も、ステップＳ２５以降の処理が行われる（ステップＳ２２でＹｅｓ）。
【００５９】
〔パケットの処理〕
計算部５１は、格納部３２に格納されているパケットの処理にかかるステップ数の合計値を計算する。なお、計算部５１は、予約情報テーブル３３の累積処理ステップ数を参照することにより、格納部３２に格納されているパケットの処理にかかるステップ数を取得しても良い。計算部５１は、得られた値を出力部５２に出力する。出力部５２は、所定の処理期間内に処理部５３が処理できるステップの総数から、格納部３２に格納されているパケットの処理にかかるステップ数の合計値を差し引いた値（余剰値）を求める。出力部５２は、格納部３２に格納されているパケットを処理部５３に出力した後、余剰値のステップ数以下で処理できるパケットを格納部４２から処理部５３に出力する。処理部５３は、出力部５２から入力されたパケットを処理する。このため、格納部３２に格納されたパケットは、所定の処理期間中に処理される。
【００６０】
なお、計算部５１による計算を行わずに、パケットを格納部３２と格納部４２から処理部５３に入力するように変形することもできる。この場合、格納部３２のパケットが全て処理部５３に入力された後で、処理部５３は、格納部３２のパケットの取得開始から所定の処理期間が経過するまで、格納部４２からパケットを取得して処理する。この場合の処理方法を、図１１を用いて説明する。
【００６１】
図１１は、制御部５０で行われる処理の例を示すフローチャートである。なお、図１１は、処理装置１０が中継処理を行う装置である場合を例としている。出力部５２は、予約キュー３０の中で最初に格納されたパケットを処理部５３に出力する（ステップＳ３１）。処理部５３は、入力されたパケットの処理タイプに応じた処理を行い、パケットの付加情報に含まれているアクセスメモリ量を、予約情報テーブル３３の余剰メモリ量から減算する（ステップＳ３２、Ｓ３３）。処理部５３は、処理後のパケットを中継するために送信処理を行うとともに、余剰メモリ量を適宜修正する（ステップＳ３４）。出力部５２は、予約キュー３０中の格納部３２に、まだパケットが残っているかを判定する（ステップＳ３５）。予約キュー３０中の格納部３２にパケットが残っている場合、ステップＳ３１以降の処理が繰り返される（ステップＳ３５でＹｅｓ）。一方、予約キュー３０中の格納部３２にパケットが残っていない場合、出力部５２は、格納部３２のパケットの取得開始から所定の処理期間が経過したかを判定する（ステップＳ３５でＮｏ、ステップＳ３６）。格納部３２のパケットの取得開始から所定の処理期間が経過していない場合、出力部５２は、ベストエフォートキュー４０中の格納部４２に格納されたパケットを処理部５３に出力する（ステップＳ３６でＮｏ）。処理部５３は、入力されたパケットを処理する（ステップＳ３７）。その後、ステップＳ３５以降の処理が繰り返される。このため、ベストエフォートキュー４０中の格納部４２に格納されていたパケットの処理後に優先パケットが格納部３２に格納されると、所定の処理時間内であれば、優先パケットの処理が再開される。一方、格納部３２のパケットの取得開始から所定の処理期間が経過した場合、次の処理期間についての処理が開始される（ステップＳ３６でＹｅｓ）。
【００６２】
このように、処理装置１０では、所定時間内に処理する対象とするパケットは、パケットごとの処理量と、所定時間内に優先的に処理が可能な量を用いて選択され、格納部３２に格納される。また、処理部５３は、格納部３２に格納されたパケットを優先的に処理するので、格納部３２に格納されたパケットの処理遅延を確実に見積もることができる。このため、処理装置において、格納部３２に格納されるパケットの処理量を大きく設計すれば、優先パケットを全て予約キューに格納することができ、優先パケットに対する処理遅延を正確に見積もることができるようになる。
【００６３】
さらに、処理部５３は、処理時間中の処理量を、優先的に格納部３２から取得したパケットの処理に割り当て、その余力を格納部４２から取得したパケットに振り分ける。このため、格納部３２に格納されているパケットの処理にかかる処理量が予測よりも小さい場合であっても、格納部４２に格納されたパケットが処理され、処理部５３の処理能力は無駄にならない。
【００６４】
＜第２の実施形態＞
第２の実施形態では、予約キュー３０を介した処理が予約されているフローを用いて送受信されるパケットの数の変動に応じて、予約キュー３０とベストエフォートキュー４０に格納するパケットの量を変動させる場合の例を説明する。この場合、例えば、所定の期間中に処理部５３が予約キュー３０中のパケットに割り当てられるステップの上限値が決定され、上限を超えない範囲で予約キュー３０を介したパケットの処理に使用するステップ数が変更され得る。なお、上限を設定するときに使用される期間の長さは、例えば、１時間、１日、１週間、１月など、ユーザとの契約要件や実装上の要件に応じて選択される。以下、上限を設定するときに使用される期間の長さのことを「調整周期」と記載することがある。なお、処理装置１０への予約の設定と受信したパケットの分類についての処理は、第１の実施形態と同様である。また、１パケットあたりの処理ステップ数の補正方法や、振り分け部２６の処理も、第１の実施形態と同様である。ただし、処理装置１０は、予約情報テーブル３３の代わりに予約情報テーブル３５を備えている。
【００６５】
図１２は、第２の実施形態で使用される予約情報テーブル３５の例を示す。なお、予約情報テーブル３５は、基準となる処理期間が１秒で、調整周期が１時間の場合を例として示しているが、処理期間や調整周期の長さは、ユーザとの契約要件や実装上の要件に応じて変動され得る。
【００６６】
予約情報テーブル３５は、標準ステップ数、上限ステップ数、再エンキュー率、再エンキュー率上限、累計ステップ数、累計上限ステップ数が含まれており、さらに、予約情報テーブル３３中の情報要素も含まれている。標準ステップ数は、割り当てステップ数が変動されていない状態において、格納部３２に含まれているパケットの処理を行うために処理部５３が１秒当たりに行う処理ステップの数である。上限ステップ数は、割り当てステップ数が取り得る上限値であり、予め、設定されている値である。再エンキュー率は、調整部３１に入力されたパケットの数を基準としたときの、調整部３１から調整部４１に出力されたパケットの割合である。再エンキュー率上限は、再エンキュー率として許容される上限値である。累計ステップ数は、調整周期中に実施されたステップ数の累計値である。累計上限ステップ数は、割り当てステップ数を標準ステップ数よりも大きな値に設定可能な処理量の上限値である。調整部３１は、累計ステップ数が累計上限ステップ数を越えると、標準ステップ数を越えたステップ数を割り当てステップ数とすることができないように、予約情報テーブル３５を修正する。
【００６７】
以下、処理装置１０が図１２の予約情報テーブル３５ａを保持している場合に行われる処理の例を説明する。パラメータ情報テーブル２５ａの例では、割り当てステップ数が１秒あたり２億ステップであり、上限ステップ数は１秒あたり１０億に設定されている。また、１時間単位でステップ数を変動させることができる設定になっており、１時間当たりに１．４４兆ステップまでは、割り当てステップ数を変動できるように設定されている。調整部３１は、予約情報テーブル３５ａ中の余剰ステップ数や余剰メモリ量を用いて、パケットを格納部３２に格納できるかを判定する。調整部３１は、格納部３２に格納できないパケットがある場合、そのパケットを調整部４１に出力すると共に、再エンキュー率の値を変更する。パケットが格納部３２に格納された後の処理、パケットが調整部４１に出力された後に行われる処理、および、パケットが振り分け部２６において調整部４１に振り分けられた場合の処理は、第１の実施形態と同様である。
【００６８】
例えば、予約キュー３０を用いた処理の予約がされているパケットが、割り当てステップ数を１５％超過するペースで、調整部３１に入力されたとする。すると、調整部３１は、超過した１５％分のパケットを調整部４１に出力すると共に、再エンキュー率を１５％にする。さらに余剰ステップ数や消費メモリ量などの値も、第１の実施形態と同様に変動する。ここでは、調整部３１による処理と、その後に行われた処理部５３での処理などにより、予約情報テーブル３５ａが予約情報テーブル３５ｂ（図１２）に示すように更新されたとする。
【００６９】
すると、調整部３１は、再エンキュー率が再エンキュー率上限を上回っているため、割り当てステップ数を、両者の差分の割合だけ増加させる。なお、このとき、調整部３１は、割り当てステップ数が上限ステップ数を越えないように設定するものとする。例えば、予約情報テーブル３５ｂの例では、再エンキュー率上限が１０％であるのに対し、再エンキュー率が１５％である。そこで、調整部３１は、再エンキュー率と再エンキュー率上限の差が５％であると計算し、現在の割り当てステップ数を５％増加させられるかを判定する。現在の割り当てステップ数は毎秒２億ステップであるので、調整部３１は、５％増加させたときの割り当てステップ数は毎秒２．１億ステップになると計算する。さらに、調整部３１は、得られた計算値を上限ステップ数と比較する。上限ステップ数は毎秒１０億ステップであるので、調整部３１は、割り当てステップ数を２．１億に設定できると判定する。そこで、調整部３１は、予約情報テーブル３５ｂを、図１３の予約情報テーブル３５ｃに示すように変更すると共に、変更の内容を調整部４１に通知する。調整部４１は、予約キュー３０に格納されるパケットの処理に割り当てられたステップ数の増加分を求め、ベストエフォートキュー４０に割り当てられたステップ数から、増加分を差し引いてキュー情報テーブル４３を更新する。
【００７０】
その後、処理装置１０では、予約情報テーブル３５ｃと更新後のキュー情報テーブル４３を用いて、格納部３２や格納部４２へのパケットの格納が可能であるかが判定される。判定後に行われる処理は、第１の実施形態と同様である。
【００７１】
予約情報テーブル３５ｃが用いた処理が開始されると、予約キュー３０に格納されたパケットの処理に対する割り当て処理ステップが増加したことにより、予約情報テーブル３５ｄ（図１３）に示すように、再エンキュー率が１０％に抑えられたとする。しかし、その後も予約キュー３０を用いた処理が予約されているフローのパケットの送受信量が増大し続けると、図１２、図１３を用いて述べたように、予約キュー３０に格納されるパケットに対する処理ステップの割り当てが変更される。その結果、予約キュー３０に格納されるパケットに対する割り当てステップ数が、毎秒９．８億ステップにまで達したとする。
【００７２】
予約キュー３０中のパケットに対する割り当てステップ数が、毎秒９．８億ステップであるにもかかわらず、割り当てステップ数を２０％超過するペースで、パケットが調整部３１に入力されたとする。このとき、処理装置１０には、図１４に示す予約情報テーブル３５ｅが保持される。予約情報テーブル３５ｅに示すように、再エンキュー率が再エンキュー率上限を上回っているので、調整部３１は、割り当てステップ数を、上限ステップ数まで引き上げるが、上限ステップ数以上には割り当てステップ数を引き上げない。その後、予約情報テーブル３５ｆ（図１４）に示すように、割り当てステップ数が上限ステップ数に達した後に、再エンキュー率が再エンキュー率上限を上回ったとしても、割り当てステップ数は引き上げられない。
【００７３】
その後も処理を継続したことにより、図１５の予約情報テーブル３５ｇに示すように、累計ステップ数が累計上限ステップ数に達したとする。すると、調整部３１は、標準ステップ数を越えた処理が可能な量の上限まで処理が行われたと判定して、割り当てステップ数を標準ステップ数に戻す。すると、予約情報テーブル３５ｇは、予約情報テーブル３５ｈ（図１５）に示すように更新される。調整部３１は、いったん累計ステップ数が累計上限ステップ数に達すると、その後、負荷が増大したとしても、次の調整周期に入るまでは、調整部３１は、割り当てステップ数を増大させない。従って、負荷の増大に伴い、予約情報テーブル３５ｈは、図１６の予約情報テーブル３５ｉのように変化する。
【００７４】
次の調整周期に入ると、累計ステップ数は０にリセットされる。このため、予約情報テーブル３５ｉは、予約情報テーブル３５ｊに示すように更新される。その後も、図１２〜図１４を参照しながら説明したように、予約キュー３０を介した処理が予約されているパケットの受信数に応じて、割り当てパケット数が変更される。
【００７５】
割り当てステップ数が毎秒４．５億ステップにまで増加した後、パケットの送受信数が低下したことにより、再エンキュー率が０％になったとする。このとき、処理装置１０は、図１７の予約情報テーブル３５ｋを保持しているとする。その後も再エンキュー率が０％の状態が所定の期間続くと、調整部３１は、予め決められた割合で、割り当てステップ数を小さくしていく。なお、このとき、調整部３１は、割り当てステップ数が標準ステップ数よりも小さくならないようにする。例えば、調整部３１が割り当てステップ数を毎秒３．６億ステップに変更すると、予約情報テーブル３５ｋは、予約情報テーブル３５ｍに示すように更新される。さらに、予約キュー３０を用いるパケットの受信数が減少すると、予約情報テーブル３５ｍは図１８の予約情報テーブル３５ｎに示すように変動する。予約情報テーブル３５ｎに示すように、割り当てステップ数が標準ステップ数に近い値であっても、再エンキュー率が０％の状態が続くと、調整部３１は、割り当てステップ数を標準ステップ数にする。すると、予約情報テーブル３５ｎは、予約情報テーブル３５ｐに示すように変化する。この後は、さらに再エンキュー率が０％の状態が続いたとしても、調整部３１は、割り当てステップ数を標準ステップ数より小さくはしない。なお、調整部３１は、再エンキュー率が所定の閾値Ｔｈ以下になったときに、図１７、図１８を示すように、割り当てステップ数を小さくするように設定されても良い。ここで、閾値Ｔｈは再エンキュー率上限よりも小さな値である。
【００７６】
第２の実施形態に示すように、負荷に応じて割り当てステップ数が変動すると、予約キュー３０に格納できるパケットの数がトラフィックに応じて調整される。また、制御部５０での処理の際には、第１の実施形態で述べたように、予約キュー３０中の格納部３２に格納されたパケットから優先的に処理部５３で処理される。このため、トラフィックが変動しても、予約済みのフローのパケットについては、遅延時間が予測し易くなる
【００７７】
＜第３の実施形態＞
第３の実施形態では、パケットの処理の種類がＬ３中継処理である場合に、ルーティングテーブルのエントリ数に応じて、処理ステップ数を変動する方法について説明する。パケットの処理の種類がＬ３中継処理の場合、処理部５３での処理には、入力されたパケットの宛先ＩＰアドレスをキーとしてルーティングテーブルを検索する処理が含まれる。ルーティングテーブルに多数のエントリが含まれると、処理部５３が使用する検索アルゴリズムによっては、転送先の検索に時間がかかるようになる場合がある。例えば、図１９に示すように、ルーティングテーブルがリニアテーブルである場合、処理部５３は、ルーティングテーブル中の先頭のエントリから順にリスト上の経路エントリを検索することになる。このため、図１９に示すように、リニアテーブルの末尾に使用するエントリが記録されている場合には、処理部５３での処理に時間がかかってしまう。
【００７８】
そこで、調整部３１は、Ｌ３中継処理を行うパケットについては、処理ステップの算出の際に、ルーティングテーブル中のエントリ数を用いた補正を行う。例えば、調整部３１は、予め、１つのエントリの処理にかかるステップ数を求めておき、１つのエントリの処理にかかるステップ数とエントリ数の積を、Ｌ３中継処理を行うパケットの処理にかかるステップ数として見積もることができる。さらに、処理部５３はパケットに関するルーティングテーブル検索以外の全ての処理も実施し、その処理ステップ数の推定値は付加情報にて指定されている。この付加情報にて指定されるその他の処理ステップ数を含め、第３の実施形態では、Ｌ３中継処理を行うパケットに対する処理のステップ数を次式により計算する。
【００７９】
ステップ数＝Ａ＋Ｂ×エントリ数
ここで、Ａは付加情報にて指定される、ルーティングテーブル検索以外の全ての処理にかかるステップ数であり、Ｂはルーティングテーブル中の１つのエントリの処理にかかるステップ数である。なお、Ｌ３中継処理用の補正式も、補正テーブル３４に格納される。
【００８０】
このように、Ｌ３中継の対象となるパケットの処理にかかるステップ数を正確に計算することにより、ルーティングテーブル中のエントリ数が変動しても、優先的に処理する対象のパケットについての遅延時間が見積もり易くなる。
【００８１】
＜その他＞
なお、実施形態は上記に限られるものではなく、様々に変形可能である。以下にその例をいくつか述べる。
【００８２】
（１）content addressable memory（ＣＡＭ）を用いた処理
処理部５３がＬ３中継の対象となるパケットを処理するときに、ＣＡＭを用いてルーティングテーブルを検索しても良い。ＣＡＭを用いて経路検索処理を実施すると、処理部５３は、検索対象の宛先ＩＰアドレスとの一致が最も大きな宛先に対するエントリを、一度の演算で求めることができる。例えば、処理部５３がＣＡＭを用いる代わりにソフトウェアによる処理でルーティングテーブルを処理すると、１回に６００ステップかかるとし、予約情報テーブル３３での割り当てステップ数が２００００ステップ/秒であるとする。ここで、処理対象のパケットが全てＬ３中継の処理の対象であると、ＣＡＭを用いることにより、割り当てステップ数を、ソフトウェアによる処理を行う場合の６００倍にすることができる。このように、調整部３１は、処理部５３においてＣＡＭでの処理が可能な場合、ＣＡＭによるステップ数の減少に見合うだけのパケットを格納部３２に格納できるようにするため、割り当てステップ数を６００倍した値を予約情報テーブル３３に設定できる。なお、ここではＣＡＭを用いてＬ３中継が行われる場合を例としたが、他の処理回路により、他の処理のステップ数が減少する場合も同様である。すなわち、ソフトウェア処理でかかったステップ数を、処理回路を用いたときにかかるステップ数で割ったときの商と、ソフトウェアでの処理を基準に決められた割り当てステップ数との積が、予約情報テーブル３３の割り当てステップに設定されうる。
【００８３】
（２）シェーパ方式による処理
調整部３１が格納部３２に格納するパケットの量を決定するときに、シェーパ方式を用いることもできる。この場合、ある処理期間内の時間において、予約量を超えた分のパケットも、閾値までは格納部３２に保持する。予約された量を超えた分のパケットは、処理期間中に処理部５３で処理されなくても、次の処理期間で処理される。なお、割り当てられたステップ数を超えてもパケットを格納部３２に保持する場合、余剰ステップ数は負の値となる。余剰ステップ数が取れる値の範囲は、予め、ユーザに保証する遅延の範囲やジッタ等のサービス要件に応じて設定されるものとする。
【００８４】
（３）ネットワーク経由でのシステム
以上の例では、分り易くするために処理装置１０が１つの装置である場合を例として説明したが、処理装置１０は、フロー識別部１１として動作する装置とパケット処理部１２として動作する装置の２つに分けられていても良い。２つの装置により第１〜第３の実施形態を含む種々の形態の実現に使用可能なシステムの例を図２０に示す。フロー識別装置７０は、第１〜第３の実施形態でのフロー識別部１１と同様に動作する。ただし、フロー識別装置７０では、フロー分類部２２は、付加情報をパケットに付加して、送信部２７ａに出力する。送信部２７ａに出力されるパケットのフォーマットの例を図２１に示す。図２１の例では、付加情報は、パケットの末尾に付されている。付加情報のフォーマットは、図６を参照しながら説明したとおりである。なお、図２１はパケットのフォーマットの一例であり、実装に応じて、付加情報はパケット中の他の領域に格納されていても良い。
【００８５】
送信部２７ａは、パケット処理装置８０に付加情報を含むパケットを送信する。パケット処理装置８０中の振り分け部２６、予約キュー３０、予約情報テーブル３３、補正テーブル３４、ベストエフォートキュー４０、キュー情報テーブル４３、ベストエフォートキュー４０、送信部２７ｂの動作は、第１〜第３の実施形態と同様である。パケット処理装置８０中の受信部２１ｂは、受信したパケットを振り分け部２６に出力する。なお、フロー識別装置７０とパケット処理装置８０のいずれも、ハードウェア構成は、図３を参照しながら説明したとおりである。
【００８６】
（４）以上の説明に使用したテーブル中の情報要素は一例であり、実装に応じて、１つのテーブルに含まれる情報要素の種類が変動しても良い。例えば、パラメータ情報テーブル２５とパケット特性テーブル２４は、１つのテーブルに統合されてもよく、また、３つ以上のテーブルに分けられていても良い。
【００８７】
（５）処理装置１０、フロー識別装置７０、パケット処理装置８０のいずれも、Software Defined Networking（ＳＤＮ）などの技術によって形成された仮想ネットワーク中の装置であっても良い。
【符号の説明】
【００８８】
１０  処理装置
１１  フロー識別部
１２  パケット処理部
２０  フロー分類記憶部
２１  受信部
２２  フロー分類部
２３  フロー管理部
２４  パケット特性テーブル
２５  パラメータ情報テーブル
２６  振り分け部
２７  送信部
３０  予約キュー
３１、４１  調整部
３２、４２  格納部
３３  予約情報テーブル
３４  補正テーブル
４０  ベストエフォートキュー
４３  キュー情報テーブル
５０  制御部
５１  計算部
５２  出力部
５３  処理部
６０  ＣＰＵ
６１  キャッシュ
６２  ＣＰＵコア
６３  キャッシュ
６４  メモリ
６５  バス
６６  回線インタフェース
７０  フロー識別装置
８０  パケット処理装置
【図１】
2015091047.tif 000003
【図２】
2015091047.tif 000004
【図３】
2015091047.tif 000005
【図４】
2015091047.tif 000006
【図５】
2015091047.tif 000007
【図６】
2015091047.tif 000008
【図７】
2015091047.tif 000009
【図８】
2015091047.tif 000010
【図９】
2015091047.tif 000011
【図１０Ａ】
2015091047.tif 000012
【図１０Ｂ】
2015091047.tif 000013
【図１１】
2015091047.tif 000014
【図１２】
2015091047.tif 000015
【図１３】
2015091047.tif 000016
【図１４】
2015091047.tif 000017
【図１５】
2015091047.tif 000018
【図１６】
2015091047.tif 000019
【図１７】
2015091047.tif 000020
【図１８】
2015091047.tif 000021
【図１９】
2015091047.tif 000022
【図２０】
2015091047.tif 000023
【図２１】
2015091047.tif 000024
【手続補正書】
【提出日】平成26年10月1日(2014.10.1)
【手続補正１】
【補正対象書類名】明細書
【補正対象項目名】００７２
【補正方法】変更
【補正の内容】
【００７２】
予約キュー３０中のパケットに対する割り当てステップ数が、毎秒９．８億ステップであるにもかかわらず、割り当てステップ数を２０％超過するペースで、パケットが調整部３１に入力されたとする。このとき、処理装置１０には、図１４に示す予約情報テーブル３５ｅが保持される。予約情報テーブル３５ｅに示すように、再エンキュー率が再エンキュー率上限を上回っているので、調整部３１は、割り当てステップ数を、上限ステップ数まで引き上げるが、上限ステップ数より大きな値には割り当てステップ数を引き上げない。その後、予約情報テーブル３５ｆ（図１４）に示すように、割り当てステップ数が上限ステップ数に達した後に、再エンキュー率が再エンキュー率上限を上回ったとしても、割り当てステップ数は引き上げられない。