(57)【要約】【課題】  パケット処理の負荷を低減することができるパケット転送装置及びパケット転送方法を提供する。【解決手段】  パケット転送装置は、高優先クラスのパケットを格納する高優先キューと、低優先クラスのパケットを格納する低優先キューと、高優先キュー内のパケットを出力する高優先出力部と、低優先キュー内のパケットを出力する低優先出力部と、タイムスロット（ＴＳ）ごとに高優先キュー及び低優先キューからのパケットの出力の可否をそれぞれ示すテーブルを記憶する記憶部と、テーブルに従って高優先出力部及び低優先出力部のパケットの出力をそれぞれＴＳごとに制御する出力制御部と、一定の周期ごとの低優先キュー内のパケットの廃棄数を計数する計数部と、廃棄数が閾値に達していない場合、ＴＳに基づき低優先キュー内のパケットの出力期間を削減するようにテーブルを変更する変更処理部とを有する。【選択図】図１２
2019204992.tif 000002
【特許請求の範囲】
【請求項１】
高優先クラスに分類されたパケットを格納する高優先キューと、
前記高優先クラスより優先度の低い低優先クラスに分類されたパケットを格納する低優先キューと、
前記高優先キュー内のパケットを出力する高優先出力部と、
前記低優先キュー内のパケットを出力する低優先出力部と、
タイムスロットごとに前記高優先キュー及び前記低優先キューからのパケットの出力の可否をそれぞれ示すテーブルを記憶する記憶部と、
前記テーブルに従って前記高優先出力部及び前記低優先出力部のパケットの出力をそれぞれ前記タイムスロットごとに制御する出力制御部と、
一定の周期ごとの前記低優先キュー内のパケットの廃棄数を計数する計数部と、
前記廃棄数が閾値に達していない場合、前記タイムスロットに基づき前記低優先キュー内のパケットの出力期間を削減するように前記テーブルを変更する変更処理部とを有することを特徴とするパケット転送装置。
【請求項２】
前記変更処理部は、前記廃棄数が前記閾値に達している場合、前記出力期間内の前記タイムスロットの各々において、パケットの出力が可能となるように前記テーブルを変更することを特徴とする請求項１に記載のパケット転送装置。
【請求項３】
前記変更処理部は、
前記廃棄数が閾値に達していない場合、前記出力期間の短い順に従って１つの期間を選択し、該選択した期間内の前記タイムスロットの各々におけるパケットの出力を不可能とするように前記テーブルを変更し、
前記廃棄数が閾値に達している場合、直前に選択した期間内の前記タイムスロットの各々におけるパケットの出力を可能とするように前記テーブルを変更することを特徴とする請求項２に記載のパケット転送装置。
【請求項４】
前記低優先キュー内のパケットの格納量を前記一定の周期ごとに監視するキュー監視部を有し、
前記変更処理部は、前記廃棄数が前記閾値に達している場合、パケットの出力が可能となるように前記テーブルを変更した後、前記格納量の増加分に応じて、前記出力期間内の前記タイムスロットの各々におけるパケットの出力が不可能となるように前記テーブルを変更することを特徴とする請求項２または３に記載のパケット転送装置。
【請求項５】
前記パケット転送装置のパケットの転送処理の負荷を監視する負荷監視部を有し、
前記変更処理部は、前記廃棄数が閾値に達していない場合、前記負荷が一定値以上であるとき、前記短い順に従って複数の期間を選択し、該選択した複数の期間内の前記タイムスロットの各々におけるパケットの出力を不可能とするように前記テーブルを変更することを特徴とする請求項３または４に記載のパケット転送装置。
【請求項６】
高優先クラスに分類されたパケットを格納する高優先キュー内のパケットを出力し、
前記高優先クラスより優先度の低い低優先クラスに分類されたパケットを格納する低優先キュー内のパケットを出力し、
タイムスロットごとに前記高優先キュー及び前記低優先キューからのパケットの出力の可否をそれぞれ示すテーブルに従って、前記高優先キュー及び前記低優先キュー内のパケットの出力をそれぞれ前記タイムスロットごとに制御し、
一定の周期ごとの前記低優先キュー内のパケットの廃棄数を計数し、
前記廃棄数が閾値に達していない場合、前記タイムスロットに基づき前記低優先キュー内のパケットの出力期間を削減するように前記テーブルを変更することを特徴とするパケット転送方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本件は、パケット転送装置及びパケット転送方法に関する。
【背景技術】
【０００２】
５Ｇ（5th Generation）モバイルネットワークでは、ネットワーク構成を効率化するため、ＭＢＨ（Mobile Back Haul）及びＭＦＨ（Mobile Front Haul）のトラフィックが、パケットとして共通の伝送路を流れる。ＭＦＨのパケットには、例えば音声や遠隔医療の通信データなどの高いリアルタイム性のデータが含まれるため、低い遅延時間（例えば１（ms））が要求される。
【０００３】
そこで、例えばＩＥＥＥ（Institute of Electrical and Electronic Engineers）８０２．１ＴＳＮ（Time Sensitive Networking）の技術を用いて、例えばネットワーク内のレイヤ２スイッチ装置においてＭＦＨのパケットをＭＢＨのパケットより優先的に転送することが検討されている。なお、特許文献１及び２には、パケットの優先制御に関する技術が記載されている。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開２０１３−０７４５１４号公報
【特許文献２】特開２０１４−０９６７００号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
ＩＥＥＥ８０２．１ＴＳＮの技術によると、パケットのクラスごとに設けられたゲートの開閉をゲートコントロールリストに基づいて制御することができる。ゲートコントロールリストには、タイムスロットごとに各ゲートの開閉が設定されている。このため、ゲートコントロールリストをＭＦＨのトラフィックパタンに従って生成すれば、レイヤ２スイッチはＭＦＨのパケットを優先的に転送することができる。
【０００６】
各ゲートの開閉は、例えばＣＰＵ（Central Processing Unit）などのプロセッサにより制御されるが、タイムスロットごとの開閉制御の処理は負荷が高いため、例えばシェーパの帯域設定などのプロセッサの他の処理に影響を与えるおそれがある。これに対し、高性能のプロセッサを用いることが考えられるが、装置コストが増加するという他の問題が生ずる。
【０００７】
そこで本発明は、パケット処理の負荷を低減することができるパケット転送装置及びパケット転送方法を提供することを目的とする。
【課題を解決するための手段】
【０００８】
１つの態様では、パケット転送装置は、高優先クラスに分類されたパケットを格納する高優先キューと、前記高優先クラスより優先度の低い低優先クラスに分類されたパケットを格納する低優先キューと、前記高優先キュー内のパケットを出力する高優先出力部と、前記低優先キュー内のパケットを出力する低優先出力部と、タイムスロットごとに前記高優先キュー及び前記低優先キューからのパケットの出力の可否をそれぞれ示すテーブルを記憶する記憶部と、前記テーブルに従って前記高優先出力部及び前記低優先出力部のパケットの出力をそれぞれ前記タイムスロットごとに制御する出力制御部と、一定の周期ごとの前記低優先キュー内のパケットの廃棄数を計数する計数部と、前記廃棄数が閾値に達していない場合、前記タイムスロットに基づき前記低優先キュー内のパケットの出力期間を削減するように前記テーブルを変更する変更処理部とを有する。
【０００９】
１つの態様では、パケット転送方法は、高優先クラスに分類されたパケットを格納する高優先キュー内のパケットを出力し、前記高優先クラスより優先度の低い低優先クラスに分類されたパケットを格納する低優先キュー内のパケットを出力し、タイムスロットごとに前記高優先キュー及び前記低優先キューからのパケットの出力の可否をそれぞれ示すテーブルに従って、前記高優先キュー及び前記低優先キュー内のパケットの出力をそれぞれ前記タイムスロットごとに制御し、一定の周期ごとの前記低優先キュー内のパケットの廃棄数を計数し、前記廃棄数が閾値に達していない場合、前記タイムスロットに基づき前記低優先キュー内のパケットの出力期間を削減するように前記テーブルを変更する方法である。
【発明の効果】
【００１０】
１つの側面として、パケット処理の負荷を低減することができる。
【図面の簡単な説明】
【００１１】
【図１】５Ｇのモバイルネットワークの一例を示す構成図である。
【図２】パケット優先制御を実現する構成の一例を示す構成図である。
【図３】ゲート制御の一例を示す図である。
【図４】レイヤ２スイッチの一例を示す構成図である。
【図５】オープン期間リストの一例を示す図である。
【図６】ゲート開閉状態テーブルの一例を示す図である。
【図７】ゲートコントロールテーブルの変更の一例を示す図である。
【図８】パケット転送開始時の処理の一例を示すフローチャートである。
【図９】ゲートコントロールテーブルの変更処理の一例を示すフローチャートである。
【図１０】ゲートコントロールテーブルの状態の変更の一例を示す図（その１）である。
【図１１】ゲートコントロールテーブルの状態の変更の一例を示す図（その２）である。
【図１２】ゲートコントロールテーブルの状態の変更の他の例を示す図である。
【図１３】ゲートコントロールテーブルの変更処理の他の例を示すフローチャートである。
【図１４】ゲートコントロールテーブルの状態の変更の他の例を示す図である。
【図１５】定常状態におけるゲートコントロールテーブルの変更処理の一例を示すフローチャートである。
【図１６】低優先キューの格納量の増加量を示す図である。
【発明を実施するための形態】
【００１２】
図１は、５Ｇのモバイルネットワーク９１，９２の一例を示す構成図である。モバイルネットワーク９１には、レイヤ２スイッチ１を備えたノードＡ〜Ｄが設けられている。ノードＡ〜Ｄは、一例として、リング状に接続されているが、これに限定されず、メッシュ状に接続されていてもよい。レイヤ２スイッチ１は、パケット転送装置の一例であり、他の装置から受信したパケットをその宛先に応じたポートから転送する。なお、パケットとしては、例えばＩＰ（Internet Protocol）パケットが挙げられるが、これに限定されない。
【００１３】
ノードＡのレイヤ２スイッチ１は、インターネット９０及びＢＢＵ（Base Band Unit）２０に接続されている。ＢＢＵ２０はインターネット９０とも接続されている。
【００１４】
ノードＢのレイヤ２スイッチ１は、他のモバイルネットワーク９２のＢＢＵ２２に接続されている。モバイルネットワーク９２には、ＢＢＵ２２及びＲＲＨ（Remote Radio Head）３２，３３が含まれる。
【００１５】
ノードＣのレイヤ２スイッチ１はＲＲＨ３０，３１に接続されている。ＲＲＨ３０，３１は、電話や遠隔医療などに用いられる通信端末に接続されている。ノードＤのレイヤ２スイッチ１は、ノードＢと同様に他のモバイルネットワーク（不図示）のＢＢＵ２１に接続されている。
【００１６】
経路Ｂｈ（点線参照）はＭＢＨのトラフィックの経路の一例であり、経路Ｆｈ（一点鎖線参照）はＭＦＨのトラフィックの経路の一例である。経路Ｂｈは、インターネット９０、ノードＡ，Ｂの各レイヤ２スイッチ１、及びＢＢＵ２２を、この順に経由する。また、経路Ｆｈは、ＢＢＵ２０、ノードＡ〜Ｃの各レイヤ２スイッチ１、及びＲＲＨ３０，３１を、この順に経由する。
【００１７】
このため、経路Ｂｈと経路Ｆｈは、ノードＡとノードＢの間の伝送路を共有する。したがって、ノードＡ，Ｂの各レイヤ２スイッチ１は、ＭＢＨ及びＭＦＨのトラフィックの転送処理を行う。なお、以下の説明において、ＭＢＨのトラフィックに含まれるパケットを「ＭＢＨパケット」と表記し、ＭＦＨのトラフィックに含まれるパケットを「ＭＦＨパケット」と表記する。
【００１８】
ノードＡ，Ｂの各レイヤ２スイッチ１では、ＭＢＨパケットとＭＦＨパケットの間に競合が生ずる。ＭＦＨパケットには、例えば音声や遠隔医療の通信データなどの高いリアルタイム性のデータが含まれるため、低い遅延時間（例えば１（ms））が要求される。
【００１９】
このため、レイヤ２スイッチ１は、一例として、ＩＥＥＥ８０２．１ＴＳＮの技術を用いて、ＭＦＨパケットをＭＢＨパケットより優先的に転送する。なお、本例では、ＭＢＨパケットとＭＦＨパケットの間の競合を挙げたが、モバイルネットワーク９１に光通信サービスのアクセス回線が収容されている場合、ＭＦＨパケットは、ＭＢＨパケットだけでなく、その回線のパケットとも競合する。
【００２０】
図２は、パケット優先制御を実現する構成の一例を示す構成図である。レイヤ２スイッチ１は、クラス分類部４０と、高優先キュー４１、低優先キュー４２、ゲート（＃１）４３、ゲート（＃２）４４、転送処理部４５、パケット廃棄部４６、パケット計数部４７、テーブル生成部１００、テーブル更新部１０１、及びゲート制御部１０２を有する。
【００２１】
クラス分類部４０は、レイヤ２スイッチ１で受信されたパケットのクラスを分類する。クラス分類部４０は、ＭＦＨパケットを高優先クラスに分類して高優先キュー４１に出力し、ＭＢＨパケットを、高優先クラスより優先度の低い低優先クラスに分類して低優先キュー４２に出力する。なお、クラス分類部４０は、他の種類のパケットが入力された場合、そのパケットを低優先クラスに分類する。
【００２２】
ゲート（＃１）４３は、高優先出力部の一例であり、高優先キュー４１内のＭＦＨパケットを転送処理部４５に出力する。ゲート（＃２）４４は、低優先出力部の一例であり、低優先キュー４２内のＭＢＨパケットを転送処理部４５に出力する。
【００２３】
ゲート４３，４４は開（オープン）状態と閉（クローズ）状態を有している。ゲート４３，４４は、開状態において高優先キュー４１及び低優先キュー４２からＭＦＨパケット及びＭＢＨパケットをそれぞれ読み出して出力し、閉状態においてＭＦＨパケット及びＭＢＨパケットの読み出しを中止する。
【００２４】
このため、高優先キュー４１内のＭＦＨパケットは、ゲート（＃１）４３が閉状態であると滞留し、低優先キュー４２内のＭＢＨパケットは、ゲート（＃２）４４が閉状態であると滞留する。
【００２５】
レイヤ２スイッチ１は、ＩＥＥＥ８０２．１ＴＳＮの技術に従ってＴＡＳ（Time Aware Shaper）方式に基づいてＭＦＨパケット及びＭＢＨパケットの出力をゲート４３，４４の開閉状態をゲートコントロールテーブル１３０に従って制御する。ゲートコントロールテーブル１３０には、タイムスロットごとの各ゲート４３，４４の状態を示すリストが登録されている。
【００２６】
ゲートコントロールテーブル１３０において、「ＴＳ番号」はタイムスロット（TS: Time Slot）を識別する番号（＃１〜＃Ｎ（Ｎ：２以上の整数））を示し、「時間」はタイムスロットの時間（時間幅）を示す。タイムスロット＃１〜＃Ｎの合計はゲート制御の周期に該当する。
【００２７】
「ゲート状態」はゲート（＃１）４３（「＃１」参照）とゲート（＃２）４４（「＃２」参照）の開閉状態（「〇」：開状態、「×」：閉状態）を示す。ゲート４３，４４は、開状態の場合、パケットの出力が可能であり、閉状態の場合、パケットの出力が不可能である。
【００２８】
このように、ゲートコントロールテーブル１３０は、タイムスロットごとに高優先キュー４１及び低優先キュー４２からのパケットの出力の可否をそれぞれ示す。なお、ゲートコントロールテーブル１３０はテーブルの一例である。
【００２９】
テーブル生成部１００は、レイヤ２スイッチ１で受信されるパケットのパタン（トラフィックパタン）を解析して、その解析結果に基づきゲートコントロールテーブル１３０を生成する。例えば、ＭＦＨパケットは、ＢＢＵ２０から１（msec）のサブフレームごとにバースト的に送信されるため、テーブル生成部１００は、一定時間ごとのＭＦＨパケットの到着量の周期性を所定回数分だけ検出する。
【００３０】
テーブル生成部１００は、その検出結果からゲート制御の周期を決定する。テーブル生成部１００は、ＭＦＨパケットの先頭とその長さを複数回検出することにより統計情報を生成し、統計情報に基づいてＭＦＨパケットが到着するタイムスロットで高優先クラス側のゲート（＃１）４３が開状態となり、低優先クラス側のゲート（＃２）４４が閉状態となるようにゲートコントロールテーブル１３０を生成する。
【００３１】
テーブル更新部１０１は、低優先キュー４２におけるＭＢＨパケットの廃棄数に応じ、低優先クラス側のゲート（＃２）４４が時間的に連続して開状態となる期間（以下、「オープン期間」と表記）を削減するようにゲートコントロールテーブル１３０を更新する。このため、ゲート４４のオープン期間が、低優先キュー４２に対するＭＢＨパケットの入力量に対して十分に余裕がある場合、オープン期間が削減される。
【００３２】
これにより、ゲート４４の開閉処理の回数が削減されるため、パケット処理の負荷が低減される。
【００３３】
以下の実施例において、テーブル更新部１０１は、一例として所定値（例えば５００（μsec））以下のオープン期間を削減するようにゲートコントロールテーブル１３０を更新する。このため、その所定値に応じてＭＢＨパケットが到着する可能性の高いオープン期間の削除を回避し、さらに短時間内のゲート４４の開閉処理による高負荷の発生を抑制することが可能となるが、削減対象となるオープン期間は限定されない。
【００３４】
パケット廃棄部４６は、例えば符号ｐで示されるように、低優先キュー４２に空きがない場合にＭＢＨパケットを廃棄する。また、パケット廃棄部４６は、高優先キュー４１についても上記と同様にＭＦＨパケットを廃棄する。
【００３５】
パケット計数部４７は、計数部の一例であり、ゲート制御の周期ごとに低優先キュー４２において廃棄されるＭＢＨパケットの数（以下、「廃棄数」と表記）を計数する。また、パケット計数部４７は、ＭＦＨパケットについても上記と同様に廃棄数を計数する。
【００３６】
テーブル更新部１０１は、パケット計数部４７からＭＢＨパケットの廃棄数を取得し、また、低優先キュー４２から低優先キュー４２内のＭＢＨパケットの格納量を取得する。
【００３７】
開状態のゲート４３，４４から出力されたＭＦＨパケット及びＭＢＨパケットは転送処理部４５に入力される。転送処理部４５には、パケットの送信帯域を制御するシェーパなどが設けられている。
【００３８】
図３は、ゲート制御の一例を示す図である。図３において、図２と共通する構成には同一の符号を付し、その説明は省略する。
【００３９】
ゲート制御部１０２は、出力制御部の一例であり、ゲートコントロールテーブル１３０に従ってゲート４３，４４のパケットの出力をそれぞれタイムスロットごとに制御する。ゲート４３，４４から延びる時間軸上には、タイムスロット（ＴＳ）＃１〜＃Ｎごとに出力されるＭＦＨパケットまたはＭＢＨパケットが示されている。
【００４０】
例えば、ゲート制御部１０２は、ゲートコントロールテーブル１３０に従い、タイムスロット＃１において、ゲート（＃１）４３を開状態とし、ゲート（＃２）４４を閉状態とする。このため、タイムスロット＃１のタイミングにおいて、高優先キュー４１からＭＦＨパケットは出力されるが、低優先キュー４２からＭＢＨパケットは出力されない。
【００４１】
また、ゲート制御部１０２は、ゲートコントロールテーブル１３０に従い、タイムスロット＃２〜＃４において、ゲート（＃１）４３を開状態とし、ゲート（＃２）４４を開状態とする。このため、タイムスロット＃２〜＃４のタイミングにおいて、高優先キュー４１からはＭＦＨパケットが出力可能となり、低優先キュー４２からはＭＢＨパケットが出力可能となる。本例では低優先キュー４２が選択されてＭＢＨパケットが出力される。なお、タイムスロット＃１〜＃Ｎのゲート制御は、その周期Ｔで繰り返し実行される。
【００４２】
次に、レイヤ２スイッチ１のハードウェア構成及び機能構成を説明する。
【００４３】
図４は、レイヤ２スイッチ１の一例を示す構成図である。図４において、図２と共通する構成には同一の符号を付し、その説明は省略する。レイヤ２スイッチ１は、例えば、筐体に収容される電子回路基板、または架に収容されるブレード型の電子回路ユニットとして構成される。
【００４４】
レイヤ２スイッチ１は、ＣＰＵ１０、ＲＯＭ（Read Only Memory）１１、ＲＡＭ（Random Access Memory）１２、ＮＶＳＲＡＭ（Non-Volatile Static Random Access Memory）１３、通信インターフェース部（通信ＩＦ）１４を有する。レイヤ２スイッチ１は、さらにネットワークプロセッサ１５及び複数の伝送処理ユニット１６を有する。ＣＰＵ１０は、互いに信号の入出力ができるように、ＲＯＭ１１、ＲＡＭ１２、ＮＶＳＲＡＭ１３、及び通信ＩＦ１４と、バス１９を介して接続されている。なお、レイヤ２スイッチ１は、ネットワークプロセッサ１５と協働するＡＳＳＰ（Application Specific Standard Product）をさらに有してもよい。
【００４５】
伝送処理ユニット１６は、光送受信モジュールやＦＰＧＡ（Field Programmable Gate Array）などを備え、パケットの送受信を処理する。伝送処理ユニット１６は、経路Ｒで示されるように、他の装置から受信したパケットをネットワークプロセッサ１５に出力し、ネットワークプロセッサ１５から入力されたパケットを他の装置に送信する。なお、伝送処理ユニット１６は、例えば電気部品及び光学部品が実装された回路基板として構成される。
【００４６】
ネットワークプロセッサ１５は、ＶＬＡＮ（Virtual Local Area Network）、ＭＡＣ（Media Access Control）、ＱｏＳ（Quality Of Service）、及びＯＡＭ（Operation, Administration and Maintenance）の機能を備える。ネットワークプロセッサ１５は、ＱｏＳの機能として、上記のクラス分類部４０、高優先キュー４１、低優先キュー４２、ゲート４３，４４、及び転送処理部４５を有する。ネットワークプロセッサ１５は、伝送処理ユニット１６から入力されたパケットを、クラス分類部４０、高優先キュー４１、低優先キュー４２、ゲート４３，４４、及び転送処理部４５により処理し、宛先に応じた伝送処理ユニット１６に出力する。
【００４７】
また、ネットワークプロセッサ１５は、通信ＩＦ１４を介してバス１９に接続され、ＣＰＵ１０と通信する。通信ＩＦ１４は、例えばＦＰＧＡやＡＳＩＣ（Application Specified Integrated Circuit）などのハードウェアから構成される回路である。
【００４８】
ＲＯＭ１１は、ＣＰＵ１０を駆動するプログラムが格納されている。ＲＡＭ１２は、ＣＰＵ１０のワーキングメモリとして機能する。
【００４９】
ＣＰＵ１０は、ＲＯＭ１１からプログラムを読み込むと、機能として、テーブル生成部１００、テーブル更新部１０１、及びゲート制御部１０２が形成される。ＣＰＵ１０は、各機能によりパケット処理を行う。また、ＮＶＳＲＡＭ１３には、ゲートコントロールテーブル１３０、オープン期間リスト１３１、及びゲート開閉状態テーブル１３２が格納されている。なお、ＮＶＳＲＡＭ１３は記憶部の一例である。もっとも、ＮＶＳＲＡＭ１３に代えて、ハードディスクドライブなどの他の記憶手段が用いられてもよい。
【００５０】
テーブル生成部１００及びゲート制御部１０２については上述した通りである。テーブル生成部１００は、ゲートコントロールテーブル１３０を生成すると、その旨をゲート制御部１０２及びテーブル更新部１０１に通知する。ゲート制御部１０２は、テーブル生成部１００からの通知に応じてゲート制御を開始する。
【００５１】
ゲート制御部１０２は、テーブル更新部１０１の指示に従ってゲート制御を行い、ゲート制御の終了をテーブル更新部１０１に通知する。
【００５２】
ゲート制御部１０２はゲートコントロールテーブル１３０に従ってゲート４３，４４の開閉処理を行う。ゲート制御部１０２は、例えばネットワークプロセッサ１５のアドレス空間内のゲート制御用レジスタにアクセスすることにより開閉処理を行う。このとき、ＣＰＵ１０は、ネットワークプロセッサ１５と通信するため、例えば通信ＩＦ１４及びバス１９の制御なども行う。
【００５３】
ゲート制御部１０２は、各伝送処理ユニット１６の送受信ポートごとに対応する全ゲート４３，４４の開閉処理を行う。このため、ゲート４３，４４の開閉処理の負荷は、全ての伝送処理ユニット１６の送受信ポートの合計数に応じて増加する。したがって短時間内に開閉処理が繰り返されると、ＣＰＵ１０には大きな負荷がかかるおそれがある。このため、テーブル更新部１０１は、ゲート４４の開閉処理の回数が削減されるようにゲートコントロールテーブル１３０を変更する。
【００５４】
テーブル更新部１０１は、テーブル変更処理部１０３、テーブル解析部１０４、キュー監視部１０５、及び負荷監視部１０６を有する。テーブル解析部１０４は、テーブル生成部１００からの通知に応じ、ゲートコントロールテーブル１３０からオープン期間リスト１３１を生成する。
【００５５】
図５は、オープン期間リスト１３１の一例を示す図である。テーブル解析部１０４は、ゲートコントロールテーブル１３０から低優先クラスのゲート（＃２）４４のオープン期間を抽出することによりオープン期間リスト１３１を生成する。例えば、テーブル解析部１０４は、ゲート（＃２）４４が連続して開状態となる１以上のタイムスロットをゲートコントロールテーブル１３０から検索して、その１以上のタイムスロットを含むオープン期間をオープン期間リスト１３１に登録する。
【００５６】
符号Ｇ１を参照すると、オープン期間リスト１３１には、「オープン期間番号」、「ＴＳ番号」、及び「時間」が登録されている。「オープン期間番号」（＃１〜＃８）は、オープン期間を識別する番号である。「ＴＳ番号」は、オープン期間内のタイムスロットのＴＳ番号を示す。「時間」は、オープン期間の長さ、つまり各タイムスロットの合計を示す。
【００５７】
例えば、図２に示されたゲートコントロールテーブル１３０の場合、ゲート（＃２）４４は、連続するタイムスロット＃２〜＃４において開状態に設定されている。このため、テーブル解析部１０４は、オープン期間＃１として、タイムスロット＃２〜＃４のＴＳ番号及び合計時間をオープン期間リスト１３１に登録する。
【００５８】
符号Ｇ３は、オープン期間リスト１３１に基づくゲート（＃２）４４のオープン期間を時間軸上に示す。オープン期間＃１〜＃８は、ゲート制御の周期Ｔごとに繰り返す。
【００５９】
テーブル解析部１０４は、オープン期間リスト１３１の生成後、オープン期間リスト１３１を「時間」（オープン期間の長さ）の短い順にソートする。符号Ｇ２は、ソート後のオープン期間リスト１３１の一例を示す。オープン期間リスト１３１は、オープン期間＃８，＃４，＃５，＃６，＃７，＃３，＃２，＃１の順にソートされる。
【００６０】
テーブル解析部１０４は、一例として５００（μsec）以下のオープン期間＃８，＃４，＃５，＃６，＃７，＃３，＃２を抽出する（点線枠参照）。抽出されたオープン期間＃８，＃４，＃５，＃６，＃７，＃３，＃２は、ＭＢＨパケットの廃棄数に応じてゲートコントロールテーブル１３０から削除される候補である。削除されたオープン期間内の各タイムスロットは、ゲートコントロールテーブル１３０において閉状態に設定される。
【００６１】
このように、テーブル解析部１０４は、「時間」が所定値以下のオープン期間を削除の候補とする。すなわち、テーブル解析部１０４は、低優先キュー内のＭＢＨパケットの出力が連続して可能となる所定値以下のオープン期間＃８，＃４，＃５，＃６，＃７，＃３，＃２をゲートコントロールテーブル１３０から検出する。これにより、短時間内の開閉処理が行われるオープン期間＃８，＃４，＃５，＃６，＃７，＃３，＃２がゲートコントロールテーブル１３０から抽出される。
【００６２】
このため、ＣＰＵ１０の負荷に対して比較的に影響の大きいオープン期間が削除されることにより、負荷を効果的に低減することが可能となる。なお、本例において、上記の所定値として５００（μsec）を挙げたが、これに限定されない。所定値は、例えば、ＣＰＵ１０がネットワークプロセッサ１５の設定に要する時間に応じて決定されてもよく、また、ユーザが設定可能な値としてもよい。また、本例においてテーブル解析部１０４は、所定値以下のオープン期間を削除の候補としたが、これに限定されず、オープン期間の長さによらずに削除の候補を選択してもよい。
【００６３】
再び図４を参照すると、テーブル解析部１０４は、オープン期間リスト１３１からゲート開閉状態テーブル１３２を生成する。テーブル変更処理部１０３は、ゲート開閉状態テーブル１３２に登録されたゲートコントロールテーブル１３０の状態に基づいてゲートコントロールテーブル１３０を変更する。
【００６４】
図６は、ゲート開閉状態テーブル１３２の一例を示す図である。ゲート開閉状態テーブル１３２には、ゲートコントロールテーブル１３０の状態を識別する「状態番号」（＃０〜＃７）と、その状態において閉状態に変更されるタイムスロットを識別する「クローズＴＳ番号」とが登録されている。なお、「１周期のゲート開閉」は、各状態におけるゲート制御の様子を参考として示す。ここで、点線で示されたオープン期間は削除済みのオープン期間を表す。
【００６５】
状態＃０のゲートコントロールテーブル１３０は、何れのオープン期間＃１〜＃８も削除されていないため、ゲート（＃２）４４は、各オープン期間＃１〜＃８において開状態となる。状態＃１のゲートコントロールテーブル１３０は、最も短いオープン期間＃８が削除されているため、ゲート（＃２）４４は、各オープン期間＃１〜＃７において開状態となる。
【００６６】
状態＃２のゲートコントロールテーブル１３０は、１番目及び２番目に短いオープン期間＃８，＃４が削除されているため、ゲート（＃２）４４は、各オープン期間＃１〜＃３，＃５〜＃７において開状態となる。状態＃３のゲートコントロールテーブル１３０は、１〜３番目に短いオープン期間＃８，＃４，＃５が削除されているため、ゲート（＃２）４４は、各オープン期間＃１〜＃３，＃６，＃７において開状態となる。
【００６７】
状態＃４のゲートコントロールテーブル１３０は、１〜４番目に短いオープン期間＃８，＃４〜＃６が削除されているため、ゲート（＃２）４４は、各オープン期間＃１〜＃３，＃７において開状態となる。状態＃５のゲートコントロールテーブル１３０は、１〜５番目に短いオープン期間＃４〜＃８が削除されているため、ゲート（＃２）４４は、各オープン期間＃１〜＃３において開状態となる。
【００６８】
状態＃６のゲートコントロールテーブル１３０は、１〜６番目に短いオープン期間＃３〜＃８が削除されているため、ゲート（＃２）４４は、各オープン期間＃１，＃２において開状態となる。状態＃７のゲートコントロールテーブル１３０は、１〜７番目に短いオープン期間＃２〜＃８が削除されているため、ゲート（＃２）４４は、オープン期間＃１において開状態となる。なお、オープン期間＃１は、５００（μsec）以上であるため、削除されることはない。
【００６９】
「クローズＴＳ番号」は、状態＃０のゲートコントロールテーブル１３０と比較した場合、状態＃１〜＃７のゲートコントロールテーブル１３０において削除されるオープン期間に含まれるタイムスロットのＴＳ番号である。つまり、「クローズＴＳ番号」は、ゲートコントロールテーブル１３０において、削除対象のオープン期間に該当するＴＳ番号である。
【００７０】
再び図４を参照すると、テーブル変更処理部１０３は、テーブル生成部１００により生成された直後のゲートコントロールテーブル１３０を状態＃０として、低優先キュー４２におけるＭＢＨパケットの廃棄数に応じてゲートコントロールテーブル１３の状態を１段階ずつ変更する。キュー監視部１０５は、パケット計数部４７からＭＢＨパケットの廃棄数を取得して、テーブル変更処理部１０３に通知する。
【００７１】
例えば、テーブル変更処理部１０３は、周期Ｔ内のＭＢＨパケットの廃棄数が所定の閾値ＴＨ未満である場合、ゲート４４のオープン期間が、低優先キュー４２に対するＭＢＨパケットの入力量に対して十分に余裕があると判定し、ゲートコントロールテーブル１３０の状態を１段階だけ上げる。より具体的には、テーブル変更処理部１０３は、状態番号が増加する方向にゲートコントロールテーブル１３０の状態を変更する。
【００７２】
テーブル変更処理部１０３は、周期Ｔ内のＭＢＨパケットの廃棄数が所定の閾値ＴＨ未満である間、ゲートコントロールテーブル１３０の状態を１段階ずつ上げていき、廃棄数が所定の閾値ＴＨが所定の閾値ＴＨ以上になった場合、ゲートコントロールテーブル１３０の状態を１段階だけ下げる。これにより、ＭＢＨパケットの廃棄数が所定の閾値ＴＨ未満となる条件下において、最大数のオープン期間を短い順に従って削除することが可能となる。
【００７３】
テーブル変更処理部１０３は、ゲート開閉状態テーブル１３２に基づきゲートコントロールテーブル１３０を変更する。以下に、ゲートコントロールテーブル１３０を状態＃０から状態＃１に変更する例を挙げる。
【００７４】
図７は、ゲートコントロールテーブル１３０の変更の一例を示す図である。図６に示されたゲート開閉状態テーブル１３２には、状態＃１のクローズＴＳ番号として＃６０が登録されている。
【００７５】
このため、テーブル変更処理部１０３は、ゲートコントロールテーブル１３０を状態＃０から状態＃１に変更する場合、ゲートコントロールテーブル１３０のＴＳ番号＃６０に対応するゲート（＃２）４４のゲート状態を「〇」から「×」に書き換える（点線枠参照）。これにより、ゲートコントロールテーブル１３０においてオープン期間＃８が削除される。なお、変更後の状態に対応するクローズＴＳ番号が複数ある場合、テーブル変更処理部１０３は、全てのクローズＴＳ番号に該当するゲート状態を「×」に書き換える。
【００７６】
このように、テーブル変更処理部１０３は、変更処理部の一例であり、ＭＢＨパケットの廃棄数が閾値ＴＨに達していない場合、タイムスロットに基づきゲート４４のオープン期間を削減するようにゲートコントロールテーブル１３０を変更する。このため、ゲート４４のオープン期間が、低優先キュー４２に対するＭＢＨパケットの入力量に対して十分に余裕がある場合、低優先キュー４２のゲート４４の開閉処理の回数が削減されるため、ＣＰＵ１０の負荷が削減される。
【００７７】
したがって、レイヤ２スイッチ１は、パケット処理の負荷が低減される。
【００７８】
再び図４を参照すると、テーブル解析部１０４は、オープン期間リスト１３１及びゲート開閉状態テーブル１３２の生成が完了すると、その旨をテーブル変更処理部１０３に通知する。テーブル変更処理部１０３は、その通知に応じて、上記のゲートコントロールテーブル１３０の変更処理を開始する。なお、以降の説明において、テーブル変更処理部１０３が変更処理を行っている状態を「テーブル変更状態」と表記する。
【００７９】
テーブル変更処理部１０３は、ＭＢＨパケットの廃棄数が閾値ＴＨ以上になった場合、ゲートコントロールテーブル１３０を最新の変更が行われる直前の状態に戻す。すなわち、テーブル変更処理部１０３は、ＭＢＨパケットの廃棄数が閾値ＴＨに達している場合、ＭＢＨパケットの出力を不可能とした所定値以下の期間内の各タイムスロットにおいて、ＭＢＨパケットの出力が可能となるようにゲートコントロールテーブル１３０を変更する。
【００８０】
このため、テーブル変更処理部１０３は、ＭＢＨパケットの廃棄数が所定の閾値ＴＨ未満となる条件下において、最大数のオープン期間を削除することができる。したがって、レイヤ２スイッチ１は、より効果的にパケット処理の負荷が低減される。
【００８１】
テーブル変更処理部１０３は、ゲートコントロールテーブル１３０を最新の変更が行われる直前の状態に戻した後、定常状態に移行する。このように、テーブル変更処理部１０３は、ＭＢＨパケットの廃棄数が閾値ＴＨに達している場合、パケットの出力が可能となるようにゲートコントロールテーブル１３０を変更した後、定常状態に移行する。定常状態において、テーブル変更処理部１０３は、低優先キュー４２内のＭＢＨパケットの格納量の周期Ｔごとの増加分に応じてゲートコントロールテーブル１３０を変更する。なお、この変更処理の詳細は後述する。
【００８２】
キュー監視部１０５は、低優先キュー４２内のＭＢＨパケットの格納量をゲート制御の周期Ｔごとに監視する。キュー監視部１０５は、ＭＢＨパケットの格納量をテーブル変更処理部１０３に通知する。
【００８３】
負荷監視部１０６は、ＣＰＵ１０におけるパケット転送処理の負荷を監視する。負荷監視部１０６は、ＣＰＵ１０の負荷をテーブル変更処理部１０３に通知する。テーブル変更処理部１０３は、後述するように、ＣＰＵ１０の負荷に応じてゲートコントロールテーブル１３０を変更してもよい。
【００８４】
次に、ゲート制御に関するＣＰＵ１０の処理を説明する。なお、以下の処理はパケット転送方法の一例である。
【００８５】
図８は、パケット転送開始時の処理の一例を示すフローチャートである。なお、パケット転送開始時、ゲートコントロールテーブル１３０が生成されていないため、各ゲート４３，４４は常に開状態としてもよい。
【００８６】
テーブル生成部１００は、伝送処理ユニット１６からネットワークプロセッサ１５に入力されたＭＦＨパケットのトラフィックを解析する（ステップＳｔ１）。次に、テーブル生成部１００は、その解析結果に基づき、ゲートコントロールテーブル１３０を生成する（ステップＳｔ２）。
【００８７】
次に、テーブル解析部１０４は、ゲートコントロールテーブル１３０を解析し、その解析結果に従ってオープン期間リスト１３１を生成する（ステップＳｔ３）。このとき、テーブル解析部１０４は、低優先クラス側のゲート（＃２）４４が開状態となる連続するタイムスロットをゲートコントロールテーブル１３０から検索することによりオープン期間及びそのオープン期間内の１以上のタイムスロットを特定する。
【００８８】
次に、テーブル解析部１０４は、オープン期間リスト１３１内のオープン期間を短い順にソートする（ステップＳｔ４）。次に、テーブル解析部１０４は、オープン期間リスト１３１から所定値以下のオープン期間を抽出する（ステップＳｔ５）。
【００８９】
次に、テーブル解析部１０４は、所定値以下のオープン期間の抽出結果に基づいてゲート開閉状態テーブル１３２を生成する（ステップＳｔ６）。このとき、テーブル解析部１０４は、オープン期間リスト１３１から、所定値以下のオープン期間内の各タイムスロットのＴＳ番号をクローズＴＳ番号として特定する。
【００９０】
次に、テーブル変更処理部１０３は、テーブル解析部１０４からの通知に応じてテーブル変更状態に移行する（ステップＳｔ７）。このようにして、パケット転送開始時の処理は実行される。
【００９１】
図９は、ゲートコントロールテーブル１３０の変更処理の一例を示すフローチャートである。本処理は、テーブル変更処理部１０３がテーブル変更状態に移行した後に実行される。
【００９２】
テーブル変更処理部１０３は、ゲートコントロールテーブル１３０の状態番号を示す変数ｉを０にセットする（ステップＳｔ１１）。次に、ゲート制御部１０２は、ゲートコントロールテーブル１３０に従ってゲート（＃１）４３及びゲート（＃２）４４の開閉を制御（ゲート制御）する（ステップＳｔ１２）。このとき、ゲート制御部１０２は、例えば、ネットワークプロセッサ１５のレジスタを設定することにより各ゲート４３，４４の開閉を制御する。ゲート制御部１０２は、周期Ｔ分のゲート制御を実行する。
【００９３】
次に、テーブル変更処理部１０３は、キュー監視部１０５から周期Ｔ内のＭＢＨパケットの廃棄数を取得して閾値ＴＨと比較する（ステップＳｔ１３）。なお、閾値ＴＨは、ＭＢＨパケットのトラフィックの特性に応じて決定され、例えば１である。
【００９４】
テーブル変更処理部１０３は、廃棄数が閾値ＴＨ未満である場合（ステップＳｔ１３のＹｅｓ）、変数ｉに１を加算する（ステップＳｔ１４）。次に、テーブル変更処理部１０３は、変数ｉと所定値Ｉｍａｘを比較する（ステップＳｔ１５）。所定値Ｉｍａｘは、ゲートコントロールテーブル１３０の状態数に応じて決定される。本例では、状態＃０〜＃７が存在するため、所定値Ｉｍａｘは７となる。
【００９５】
テーブル変更処理部１０３は、変数ｉが所定値Ｉｍａｘ以下である場合（ステップＳｔ１５のＹｅｓ）、ゲートコントロールテーブル１３０を状態＃ｉに変更する（ステップＳｔ１６）。このとき、テーブル変更処理部１０３は、ゲート開閉状態テーブル１３２における状態＃ｉの状態番号及びクローズＴＳ番号に基づいてゲートコントロールテーブル１３０を変更する。その後、再びステップＳｔ１２以降の各処理が実行される。
【００９６】
また、テーブル変更処理部１０３は、変数ｉが所定値Ｉｍａｘより大きい場合（ステップＳｔ１５のＮｏ）、その状態＃ｉは存在しないため、変数ｉを直前の値に戻し（ステップＳｔ２３）、定常状態に移行する（ステップＳｔ２２）。定常状態では、ＭＢＨパケットの廃棄数に応じたゲートコントロールテーブル１３０の変更は行われない。
【００９７】
また、テーブル変更処理部１０３は、廃棄数が閾値ＴＨ以上である場合（ステップＳｔ１３のＮｏ）、変数ｉが０より大きいか否かを判定する（ステップＳｔ１７）。これにより、テーブル変更処理部１０３は、ゲートコントロールテーブル１３０が初期の状態＃０であるか否かを判定する。
【００９８】
テーブル変更処理部１０３は、変数ｉが０以下である場合（ステップＳｔ１７のＮｏ）、ゲートコントロールテーブル１３０が初期の状態＃０であると判定し、定常状態に移行する（ステップＳｔ２２）。
【００９９】
また、テーブル変更処理部１０３は、変数ｉが１以上である場合（ステップＳｔ１７のＹｅｓ）、変数ｉから１を減算する（ステップＳｔ１８）。次に、テーブル変更処理部１０３は、ゲートコントロールテーブル１３０を状態＃ｉに変更する（ステップＳｔ１９）。次に、ゲート制御部１０２は、ゲートコントロールテーブル１３０に従ってゲート（＃１）４３及びゲート（＃２）４４の開閉を制御（ゲート制御）する（ステップＳｔ２０）。
【０１００】
次に、テーブル変更処理部１０３は、キュー監視部１０５から周期Ｔ内のＭＢＨパケットの廃棄数を取得して閾値ＴＨと比較する（ステップＳｔ２１）。テーブル変更処理部１０３は、廃棄数が閾値ＴＨ未満である場合（ステップＳｔ２１のＹｅｓ）、定常状態に移行する（ステップＳｔ２２）。
【０１０１】
また、廃棄数が閾値ＴＨ以上である場合（ステップＳｔ２１のＮｏ）、再びステップＳｔ１７以降の各処理が実行される。これにより、テーブル変更処理部１０３は、廃棄数が閾値ＴＨ未満となるまで、ゲートコントロールテーブル１３０の状態を１段階ずつ初期の状態＃０に向かって変更する。このようにして、ゲートコントロールテーブル１３０の変更処理は実行される。
【０１０２】
次に、ゲートコントロールテーブル１３０の状態の変更例を上記のフローチャートに沿って説明する。
【０１０３】
図１０及び図１１は、ゲートコントロールテーブル１３０の状態の変更の一例を示す図である。図１０及び図１１には、ゲートコントロールテーブル１３０の状態番号、及びその状態のゲートコントロールテーブル１３０に従った低優先クラス側のゲート（＃２）４４のオープン期間＃１〜＃８が示されている。
【０１０４】
本例において、テーブル変更処理部１０３は、ゲートコントロールテーブル１３０を初期の状態＃０から最終段階の状態＃７に１段階ずつ変更する。なお、図１０は変更の前半部分を示し、図１１は変更の後半部分を示す。
【０１０５】
ゲート制御部１０２は、初期の状態＃０（ｉ＝０）のゲートコントロールテーブル１３０に従ってゲート制御を行う（ステップＳｔ１２）。テーブル変更処理部１０３は、そのゲート制御の周期Ｔ内のＭＢＨパケットの廃棄数が０（＜ＴＨ）であるため（ステップＳｔ１３のＹｅｓ）、ゲートコントロールテーブル１３０を状態＃１（ｉ＝１）に変更する（ステップＳｔ１４〜Ｓｔ１６）。これにより、オープン期間＃８がゲートコントロールテーブル１３０から削除される。
【０１０６】
次に、ゲート制御部１０２は、状態＃１のゲートコントロールテーブル１３０に従ってゲート制御を行う（ステップＳｔ１２）。テーブル変更処理部１０３は、そのゲート制御の周期Ｔ内のＭＢＨパケットの廃棄数が０（＜ＴＨ）であるため（ステップＳｔ１３のＹｅｓ）、ゲートコントロールテーブル１３０を状態＃２（ｉ＝２）に変更する（ステップＳｔ１４〜Ｓｔ１６）。これにより、オープン期間＃４がゲートコントロールテーブル１３０から削除される。以降は、上記と同様の処理が、ゲートコントロールテーブル１３０が最終段階の状態＃７となるまで繰り返される。
【０１０７】
ゲート制御部１０２は、初期の状態＃７（ｉ＝７）のゲートコントロールテーブル１３０に従ってゲート制御を行う（ステップＳｔ１２）。テーブル変更処理部１０３は、そのゲート制御の周期Ｔ内のＭＢＨパケットの廃棄数が０（＜ＴＨ）であるため（ステップＳｔ１３のＹｅｓ）、変数ｉを８とする（ステップＳｔ１４）。テーブル変更処理部１０３は、変数ｉが所定値Ｉｍａｘ（＝７）より大きいため（ステップＳｔ１５のＮｏ）、変数ｉを７に戻し（ステップＳｔ２３）、定常状態に移行する（ステップＳｔ２２）。
【０１０８】
このように、テーブル変更処理部１０３は、ＭＢＨパケットの廃棄数が閾値ＴＨに達していない場合、所定値以下のオープン期間内の各タイムスロットにおけるゲート４４からのＭＢＨパケットの出力が不可能となるようにゲートコントロールテーブル１３０を変更する。このため、ＣＰＵ１０のゲート制御の負荷が低減される。
【０１０９】
図１２は、ゲートコントロールテーブル１３０の状態の変更の他の例を示す図である。本例において、テーブル変更処理部１０３は、上述した内容と同様の手順でゲートコントロールテーブル１３０を初期の状態＃０から状態＃２に１段階ずつ変更した後、状態＃１に戻す。
【０１１０】
次に、ゲート制御部１０２は、状態＃２のゲートコントロールテーブル１３０に従ってゲート制御を行う（ステップＳｔ１２）。テーブル変更処理部１０３は、そのゲート制御の周期Ｔ内のＭＢＨパケットの廃棄数が≧ＴＨであるため（ステップＳｔ１３のＮｏ）、ゲートコントロールテーブル１３０を状態＃１（ｉ＝１）に変更する（ステップＳｔ１７〜Ｓｔ１９）。このため、ゲートコントロールテーブル１３０にオープン期間＃４が再び設定される。
【０１１１】
ゲート制御部１０２は、状態＃１のゲートコントロールテーブル１３０に従ってゲート制御を行う（ステップＳｔ２０）。テーブル変更処理部１０３は、そのゲート制御の周期Ｔ内のＭＢＨパケットの廃棄数が０（＜ＴＨ）であるため（ステップＳｔ２１のＹｅｓ）、定常状態に移行する（ステップＳｔ２２）。
【０１１２】
このように、テーブル変更処理部１０３は、ＭＢＨパケットの廃棄数が閾値ＴＨに達している場合、ゲート４４からのＭＢＨパケットの出力を不可能とした所定値以下のオープン期間内の各タイムスロットにおいて、ＭＢＨパケットの出力が可能となるようにゲートコントロールテーブル１３０を変更する。このため、テーブル変更処理部１０３は、廃棄数が閾値ＴＨ未満となる条件下で最大数のオープン期間を削除することができるので、ＣＰＵ１０のゲート制御の負荷が、より効果的に低減される。
【０１１３】
また、テーブル変更処理部１０３は、ＭＢＨパケットの廃棄数が閾値ＴＨに達していない場合、所定値以下のオープン期間からその期間の短い順に従って１つのオープン期間を選択し、その選択したオープン期間内の各タイムスロットにおけるゲート４４からのＭＢＨパケットの出力を不可能とするようにゲートコントロールテーブル１３０を変更する。また、テーブル変更処理部１０３は、ＭＢＨパケットの廃棄数が閾値ＴＨに達している場合、直前に選択したオープン期間内の各タイムスロットにおけるゲート４４からのＭＢＨパケットの出力を可能とするようにゲートコントロールテーブル１３０を変更する。
【０１１４】
このため、テーブル変更処理部１０３は、ゲートコントロールテーブル１３０から所定値以下のオープン期間を１つずつ削除することができるため、高精度にオープン期間の数を制御することができる。なお、テーブル変更処理部１０３は、これに限定されず、例えば、所定値以下のオープン期間をゲートコントロールテーブル１３０から一度に削除してもよい。
【０１１５】
さらに、テーブル変更処理部１０３は、以下の例のように、ＣＰＵ１０の負荷（使用率（％））に応じてゲートコントロールテーブル１３０の状態を複数段階分変更してもよい。
【０１１６】
図１３は、ゲートコントロールテーブル１３０の変更処理の他の例を示すフローチャートである。図１３において、図９と共通する処理には同一の符号を付し、その説明は省略する。
【０１１７】
テーブル変更処理部１０３は、廃棄数が閾値ＴＨ未満である場合（ステップＳｔ１３のＹｅｓ）、負荷監視部１０６からＣＰＵ１０の負荷を取得して閾値Ｌｔｈと比較する（ステップＳｔ１３ａ）。
【０１１８】
テーブル変更処理部１０３は、ＣＰＵ１０の負荷が閾値Ｌｔｈ未満である場合（ステップＳｔ１３ａのＹｅｓ）、変数ｉに１を加算する（ステップＳｔ１４）。その後、ステップＳｔ１５以降の各処理が実行される。
【０１１９】
また、テーブル変更処理部１０３は、ＣＰＵ１０の負荷が閾値Ｌｔｈ以上である場合（ステップＳｔ１３ａのＮｏ）、変数ｉに１と所定値Ｋ（１以上の整数）を加算する（ステップＳｔ１４ａ）。その後、ステップＳｔ１５以降の各処理が実行される。この場合、ゲートコントロールテーブル１３０の状態は２段階以上変更されるため、複数のオープン期間がゲートコントロールテーブル１３０から削除される。このため、ＣＰＵ１０の負荷が効果的に低減される。なお、閾値Ｌｔｈは、例えば、ＣＰＵ１０の性能などに応じて決定される。
【０１２０】
次に、ゲートコントロールテーブル１３０の状態の変更例を上記のフローチャートに沿って説明する。
【０１２１】
図１４は、ゲートコントロールテーブル１３０の状態の変更の他の例を示す図である。本例において、テーブル変更処理部１０３は、上述した内容と同様の手順でゲートコントロールテーブル１３０を初期の状態＃０から状態＃１に変更した後、ＣＰＵ１０の負荷に応じて一度に状態＃６に変更する。また、本例において所定値Ｋは４とする。
【０１２２】
ゲート制御部１０２は、初期の状態＃０（ｉ＝０）のゲートコントロールテーブル１３０に従ってゲート制御を行う（ステップＳｔ１２）。テーブル変更処理部１０３は、そのゲート制御の周期Ｔ内のＭＢＨパケットの廃棄数が０（＜ＴＨ）であり（ステップＳｔ１３のＹｅｓ）、ＣＰＵ１０の負荷が閾値Ｌｔｈ未満であるため（ステップＳｔ１３ａのＹｅｓ）、ゲートコントロールテーブル１３０を状態＃１（ｉ＝１）に変更する（ステップＳｔ１４〜Ｓｔ１６）。これにより、オープン期間＃８がゲートコントロールテーブル１３０から削除される。
【０１２３】
次に、ゲート制御部１０２は、状態＃１のゲートコントロールテーブル１３０に従ってゲート制御を行う（ステップＳｔ１２）。テーブル変更処理部１０３は、そのゲート制御の周期Ｔ内のＭＢＨパケットの廃棄数が０（＜ＴＨ）であり（ステップＳｔ１３のＹｅｓ）、ＣＰＵ１０の負荷が閾値Ｌｔｈ以上であるため（ステップＳｔ１３ａのＮｏ）、ゲートコントロールテーブル１３０を状態＃６（ｉ＝６（＝１＋Ｋ））に変更する（ステップＳｔ１４ａ〜Ｓｔ１６）。これにより、オープン期間＃３〜＃７がゲートコントロールテーブル１３０から削除される。
【０１２４】
次に、ゲート制御部１０２は、状態＃６のゲートコントロールテーブル１３０に従ってゲート制御を行う（ステップＳｔ１２）。テーブル変更処理部１０３は、そのゲート制御の周期Ｔ内のＭＢＨパケットの廃棄数が≧ＴＨであるため（ステップＳｔ１３のＮｏ）、ゲートコントロールテーブル１３０を状態＃５（ｉ＝５）に戻す（ステップＳｔ１７〜Ｓｔ１９）。
【０１２５】
ゲート制御部１０２は、状態＃５のゲートコントロールテーブル１３０に従ってゲート制御を行う（ステップＳｔ２０）。テーブル変更処理部１０３は、そのゲート制御の周期Ｔ内のＭＢＨパケットの廃棄数が０（＜ＴＨ）であるため（ステップＳｔ２１のＹｅｓ）、定常状態に移行する（ステップＳｔ２２）。
【０１２６】
このように、テーブル変更処理部１０３は、廃棄数が閾値ＴＨに達していない場合、負荷が閾値Ｌｔｈ以上であるとき、所定値以下のオープン期間から期間の短い順に従って複数のオープン期間を選択する。そして、テーブル変更処理部１０３は、その選択した各オープン期間内の各タイムスロットにおけるＭＢＨパケットの出力を不可能とするようにゲートコントロールテーブル１３０を変更する。このため、ＣＰＵ１０のパケット転送処理の負荷が効果的に低減される。
【０１２７】
次に、定常状態におけるゲートコントロールテーブル１３０の変更処理について述べる。テーブル変更処理部１０３は、定常状態において、低優先キュー４２内のＭＢＨパケットの格納量に応じてゲートコントロールテーブル１３０の状態を変更する。
【０１２８】
図１５は、定常状態におけるゲートコントロールテーブル１３０の変更処理の一例を示すフローチャートである。本処理は、上記のステップＳｔ２２の後に実行される。
【０１２９】
ゲート制御部１０２は、上記の処理で決定された状態＃ｉのゲートコントロールテーブル１３０に従ってゲート制御を行う（ステップＳｔ３１）。次に、テーブル変更処理部１０３は、キュー監視部１０５により低優先キュー４２内のＭＢＨパケットの格納量Ｑを読み出す（ステップＳｔ３２）。
【０１３０】
次に、テーブル変更処理部１０３は、格納量Ｑの前回読み出した格納量Ｑ’からの増加量ΔＱ（＝Ｑ−Ｑ’）を算出する（ステップＳｔ３３）。次に、テーブル変更処理部１０３は、増加量ΔＱが０より大きいか否かを判定する（ステップＳｔ３４）。
【０１３１】
テーブル変更処理部１０３は、増加量ΔＱが０より大きい場合（ステップＳｔ３４のＹｅｓ）、増加量ΔＱから低優先キュー４２内の残りの格納量Ｑｒを算出する（ステップＳｔ３５）。このとき、テーブル変更処理部１０３は、例えば、低優先キュー４２の最大格納量Ｑｍａｘから現在の格納量Ｑを減算することにより残りの格納量Ｑｒを算出する。
【０１３２】
次に、テーブル変更処理部１０３は、Ｑｒ／ΔＱと所定値Ｔｒｅｆを比較する（ステップＳｔ３６）。Ｑｒ／ΔＱは、低優先キュー４２の格納量Ｑが最大格納量Ｑｍａｘに達するまでのゲート制御の周期Ｔの数を表す。
【０１３３】
図１６は、低優先キュー４２の格納量Ｑの増加量ΔＱを示す図である。テーブル変更処理部１０３は、今回の周期Ｔ（今周期）の格納量Ｑと前回の周期Ｔ（前周期）の格納量Ｑ’の差分を増加量ΔＱとして算出する。
【０１３４】
テーブル変更処理部１０３は、１回の周期Ｔにおいて増加量ΔＱだけ格納量Ｑが増加すると仮定した場合、何回の周期Ｔで格納量Ｑが最大格納量Ｑｍａｘに達するのかをＱｒ／ΔＱとして算出する。テーブル変更処理部１０３は、Ｑｒ／ΔＱと所定値Ｔｒｅｆを比較することにより、少なくともＴｒｅｆ回の周期Ｔで格納量Ｑが最大格納量Ｑｍａｘに達するか否かを判定する。テーブル変更処理部１０３は、少なくともＴｒｅｆ回の周期Ｔで格納量Ｑが最大格納量Ｑｍａｘに達する場合、ＭＢＨパケットの入力量に対し低優先キュー４２の残りの格納量Ｑｒに余裕があると判定する。
【０１３５】
再び図１５を参照すると、テーブル変更処理部１０３は、Ｑｒ／ΔＱ≧Ｔｒｅｆが成立する場合（ステップＳｔ３６のＹｅｓ）、変数ｉと所定値Ｉｍａｘを比較する（ステップＳｔ３７）。変数ｉが所定値Ｉｍａｘ以上である場合（ステップＳｔ３７のＮｏ）、ゲートコントロールテーブル１３０の変更は不可能であるため、再びステップＳｔ３１以降の各処理が実行される。
【０１３６】
また、テーブル変更処理部１０３は、変数ｉが所定値Ｉｍａｘより小さい場合（ステップＳｔ３７のＹｅｓ）、変数ｉに１を加算する（ステップＳｔ３８）。次に、テーブル変更処理部１０３は、ゲートコントロールテーブル１３０を状態＃ｉに変更する（ステップＳｔ３９）。これにより、ゲートコントロールテーブル１３０から所定値以下のオープン期間が削除されるため、ＣＰＵ１０の負荷が低減される。その後、再びステップＳｔ３１以降の各処理が実行される。また、テーブル変更処理部１０３は、Ｑｒ／ΔＱ＜Ｔｒｅｆが成立する場合（ステップＳｔ３６のＮｏ）、格納量Ｑに余裕がないと判定するため、再びステップＳｔ３１以降の各処理が実行される。
【０１３７】
また、テーブル変更処理部１０３は、増加量ΔＱが０以下である場合（ステップＳｔ３４のＮｏ）、低優先キュー４２の格納量Ｑは減少しているため、格納量Ｑに余裕があると判定し、ステップＳｔ３７以降の各処理が実行される。このようにして、定常状態におけるゲートコントロールテーブル１３０の変更処理は実行される。
【０１３８】
このように、テーブル変更処理部１０３は、定常状態において、低優先キュー４２の格納量Ｑの増加分（増加量ΔＱ）に応じて、所定値以下のオープン期間内の各タイムスロットにおけるゲート４４からのＭＢＨパケットの出力が不可能となるようにゲートコントロールテーブル１３０を変更する。このため、定常状態においても、ＣＰＵ１０の負荷を低減することが可能となる。
【０１３９】
なお、本例のレイヤ２スイッチ１は、ＣＰＵ１０及びネットワークプロセッサ１５を用いてパケットの優先制御を行うが、これに代えて、ＦＰＧＡなどのハードウェアから構成される回路により優先制御を行ってもよい。
【０１４０】
上述した実施形態は本発明の好適な実施の例である。但し、これに限定されるものではなく、本発明の要旨を逸脱しない範囲内において種々変形して実施可能である。
【０１４１】
なお、以上の説明に関して更に以下の付記を開示する。
（付記１）  高優先クラスに分類されたパケットを格納する高優先キューと、
前記高優先クラスより優先度の低い低優先クラスに分類されたパケットを格納する低優先キューと、
前記高優先キュー内のパケットを出力する高優先出力部と、
前記低優先キュー内のパケットを出力する低優先出力部と、
タイムスロットごとに前記高優先キュー及び前記低優先キューからのパケットの出力の可否をそれぞれ示すテーブルを記憶する記憶部と、
前記テーブルに従って前記高優先出力部及び前記低優先出力部のパケットの出力をそれぞれ前記タイムスロットごとに制御する出力制御部と、
一定の周期ごとの前記低優先キュー内のパケットの廃棄数を計数する計数部と、
前記廃棄数が閾値に達していない場合、前記タイムスロットに基づき前記低優先キュー内のパケットの出力期間を削減するように前記テーブルを変更する変更処理部とを有することを特徴とするパケット転送装置。
（付記２）  前記変更処理部は、前記廃棄数が前記閾値に達している場合、前記出力期間内の前記タイムスロットの各々において、パケットの出力が可能となるように前記テーブルを変更することを特徴とする付記１に記載のパケット転送装置。
（付記３）  前記変更処理部は、
前記廃棄数が閾値に達していない場合、前記出力期間の短い順に従って１つの期間を選択し、該選択した期間内の前記タイムスロットの各々におけるパケットの出力を不可能とするように前記テーブルを変更し、
前記廃棄数が閾値に達している場合、直前に選択した期間内の前記タイムスロットの各々におけるパケットの出力を可能とするように前記テーブルを変更することを特徴とする付記２に記載のパケット転送装置。
（付記４）  前記低優先キュー内のパケットの格納量を前記一定の周期ごとに監視するキュー監視部を有し、
前記変更処理部は、前記廃棄数が前記閾値に達している場合、パケットの出力が可能となるように前記テーブルを変更した後、前記格納量の増加分に応じて、前記出力期間内の前記タイムスロットの各々におけるパケットの出力が不可能となるように前記テーブルを変更することを特徴とする付記２または３に記載のパケット転送装置。
（付記５）  前記パケット転送装置のパケットの転送処理の負荷を監視する負荷監視部を有し、
前記変更処理部は、前記廃棄数が閾値に達していない場合、前記負荷が一定値以上であるとき、前記短い順に従って複数の期間を選択し、該選択した複数の期間内の前記タイムスロットの各々におけるパケットの出力を不可能とするように前記テーブルを変更することを特徴とする付記３または４に記載のパケット転送装置。
（付記６）  高優先クラスに分類されたパケットを格納する高優先キュー内のパケットを出力し、
前記高優先クラスより優先度の低い低優先クラスに分類されたパケットを格納する低優先キュー内のパケットを出力し、
タイムスロットごとに前記高優先キュー及び前記低優先キューからのパケットの出力の可否をそれぞれ示すテーブルに従って、前記高優先キュー及び前記低優先キュー内のパケットの出力をそれぞれ前記タイムスロットごとに制御し、
一定の周期ごとの前記低優先キュー内のパケットの廃棄数を計数し、
前記廃棄数が閾値に達していない場合、前記タイムスロットに基づき前記低優先キュー内のパケットの出力期間を削減するように前記テーブルを変更することを特徴とするパケット転送方法。
（付記７）  前記廃棄数が前記閾値に達している場合、前記出力期間内の前記タイムスロットの各々において、パケットの出力が可能となるように前記テーブルを変更することを特徴とする付記６に記載のパケット転送方法。
（付記８）  前記廃棄数が閾値に達していない場合、前記出力期間の短い順に従って１つの期間を選択し、該選択した期間内の前記タイムスロットの各々におけるパケットの出力を不可能とするように前記テーブルを変更し、
前記廃棄数が閾値に達している場合、直前に選択した期間内の前記タイムスロットの各々におけるパケットの出力を可能とするように前記テーブルを変更することを特徴とする付記７に記載のパケット転送方法。
（付記９）  前記低優先キュー内のパケットの格納量を前記一定の周期ごとに監視し、
前記廃棄数が前記閾値に達している場合、パケットの出力が可能となるように前記テーブルを変更した後、前記格納量の増加分に応じて、前記出力期間内の前記タイムスロットの各々におけるパケットの出力が不可能となるように前記テーブルを変更することを特徴とする付記７または８に記載のパケット転送方法。
（付記１０）  前記パケット転送装置のパケットの転送処理の負荷を監視し、
前記廃棄数が閾値に達していない場合、前記負荷が一定値以上であるとき、前記短い順に従って複数の期間を選択し、該選択した複数の期間内の前記タイムスロットの各々におけるパケットの出力を不可能とするように前記テーブルを変更することを特徴とする付記８または９に記載のパケット転送方法。
【符号の説明】
【０１４２】
１      レイヤ２スイッチ
１０      ＣＰＵ
１３      ＮＶＳＲＡＭ
４１      高優先キュー
４２      低優先キュー
４３，４４     ゲート
４７      パケット計数部
１００     テーブル生成部
１０２     ゲート制御部
１０３     テーブル変更処理部
１０４     テーブル解析部
１０５     キュー監視部
１０６     負荷監視部
１３０     ゲートコントロールテーブル
１３１     オープン期間リスト
１３２     ゲート開閉状態テーブル
【図１】
2019204992.tif 000003
【図２】
2019204992.tif 000004
【図３】
2019204992.tif 000005
【図４】
2019204992.tif 000006
【図５】
2019204992.tif 000007
【図６】
2019204992.tif 000008
【図７】
2019204992.tif 000009
【図８】
2019204992.tif 000010
【図９】
2019204992.tif 000011
【図１０】
2019204992.tif 000012
【図１１】
2019204992.tif 000013
【図１２】
2019204992.tif 000014
【図１３】
2019204992.tif 000015
【図１４】
2019204992.tif 000016
【図１５】
2019204992.tif 000017
【図１６】
2019204992.tif 000018