(57)【特許請求の範囲】
【請求項１】
パケット中継装置であって、
パケットが一時的に格納される複数のキューを含むバッファメモリと、
前記各キューのキュー長をそれぞれ示す複数の第１のキュー長と、前記複数の第１のキュー長の合計に応じた値を示す第２のキュー長と、がそれぞれ記憶される記憶部と、
パケットを受信する受信部と、
前記パケットが属するキューを前記複数のキューの中から判別するキュー判別部と、
前記バッファメモリ内の前記判別されたキューに対して前記パケットを一時的に格納し、前記第１のキュー長と前記第２のキュー長とを更新するキュー管理部と、
前記判別されたキューに対応する前記第１のキュー長と、前記第２のキュー長とに応じて、前記パケットの送信元に対して輻輳通知を行うか否かを判定する輻輳通知判定部と、
前記輻輳通知を前記送信元に対して送信する輻輳通知送信部と、
を備え、
前記輻輳通知判定部は、前記第１のキュー長に応じて、前記受信したパケットをクラス分けし、該クラス毎に予め設定された閾値と前記第２のキュー長とに基づいて、前記判定を行う、
パケット中継装置。
【請求項２】
請求項１に記載のパケット中継装置であって、
前記輻輳通知判定部は、前記第１のキュー長が長いほど高い確率となり、かつ、前記第２のキュー長が長いほど高い確率となる輻輳通知確率を所定の演算式に基づいて求め、該輻輳通知確率に基づき、前記判定を行う、パケット中継装置。
【請求項３】
請求項２に記載のパケット中継装置であって、
前記輻輳通知判定部は、前記第２のキュー長が予め設定された第１の閾値以下の場合には前記演算式に拘わらず前記輻輳通知確率を０％とし、前記第２のキュー長が予め設定された第２の閾値以上の場合には前記演算式に拘わらず前記輻輳通知確率を１００％とする、パケット中継装置。
【請求項４】
請求項２または請求項３に記載のパケット中継装置であって、
前記演算式または該演算式に含まれる定数を設定する設定部を備える、パケット中継装置。
【請求項５】
請求項１から請求項４までのいずれか一項に記載のパケット中継装置であって、
前記クラス毎の閾値を設定する設定部を備える、パケット中継装置。
【請求項６】
請求項１から請求項５までのいずれか一項に記載のパケット中継装置であって、
前記記憶部は、前記第１のキュー長および前記第２のキュー長を、前記パケットの数またはデータ量によって記憶している、パケット中継装置。
【請求項７】
請求項１から請求項６までのいずれか一項に記載のパケット中継装置であって、
前記輻輳通知判定部は、更に、前記第２のキュー長に応じて輻輳の程度を判定し、
前記輻輳通知送信部は、前記輻輳通知に前記輻輳の程度を含ませる、パケット中継装置。
【請求項８】
請求項７に記載のパケット中継装置であって、
前記輻輳の程度は、前記送信元において、前記パケットの送信量を制限するために用いられる、パケット中継装置。
【請求項９】
請求項１から請求項８までのいずれか一項に記載のパケット中継装置であって、
前記バッファメモリの全容量は、前記複数のキューのキュー長の合計よりも少ない、パケット中継装置。
【請求項１０】
パケット中継装置が輻輳制御を行う輻輳制御方法であって、
前記パケット中継装置は、
パケットが一時的に格納される複数のキューを含むバッファメモリと、
前記各キューのキュー長をそれぞれ示す複数の第１のキュー長と、前記複数の第１のキュー長の合計に応じた値を示す第２のキュー長と、がそれぞれ記憶される記憶部と、を備え、
パケットを受信する工程と、
前記パケットが属するキューを前記複数のキューの中から判別する工程と、
前記バッファメモリ内の前記判別されたキューに対して前記パケットを一時的に格納し、前記第１のキュー長と前記第２のキュー長とを更新する工程と、
前記判別されたキューに対応する前記第１のキュー長と、前記第２のキュー長とに応じて、前記パケットの送信元に対して輻輳通知を行うか否かを判定する工程と、
前記輻輳通知を前記送信元に対して送信する工程と、
を備え、
前記輻輳通知を行うか否かを判定する工程では、前記第１のキュー長に応じて、前記受信したパケットをクラス分けし、該クラス毎に予め設定された閾値と前記第２のキュー長とに基づいて、前記判定を行う、
輻輳制御方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、パケット中継装置において輻輳制御を行う技術に関する。
【背景技術】
【０００２】
ネットワーク上でパケットやフレームの中継を行う中継装置として、例えば、ルータやスイッチなどが知られている。このような中継装置に対して、許容能力を大きく超える通信要求があると、中継装置の内部で通信が滞ることがある。このような現象を、一般的に、「輻輳」という。輻輳は、ネットワークの規模にかかわらず、ＬＡＮやＷＡＮ、インターネット等において発生し得る現象である。
【０００３】
こうした輻輳を抑制する技術として、例えば、特許文献１に記載された技術がある。この技術では、ＦＩＦＯメモリ全体にバッファリングされているパケット数を監視するためのＦＩＦＯ長カウンタの値が所定の閾値を超えたか否かを判断する。そして、このＦＩＦＯ長カウンタの値が閾値を超えた場合には、コネクション毎に個別に用意されたパケット数を監視するための閾値を一律に低下させる制御を行っている。このような制御によれば、低下した閾値よりもバッファリングされたパケット数の多いコネクションに接続されている送信元端末には、輻輳が発生した旨の通知がなされる。送信元端末は、この通知を受信すると、パケットの送信量を低下させることができる。そのため、そのコネクションから受信されるパケットがＦＩＦＯメモリから減っていき、輻輳の発生を抑制することが可能になる。
【０００４】
しかし特許文献１に開示された技術では、コネクション毎に用意された閾値を一律に低下させているため、低下した閾値よりもバッファリングされているパケット数の多いコネクションに接続している送信元端末のすべてに、輻輳が発生した旨の通知がなされる。そうすると、それら全ての送信元端末がパケットの送信量を同時に低下させるため、ネットワーク全体のスループットが急激に低下する場合がある。このような問題は、パケットに限らずネットワーク等の通信回線上を流れるデータの中継を行う装置に共通して生じ得る問題である。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】特開平１０−１７３６６１号公報
【発明の概要】
【発明が解決しようとする課題】
【０００６】
上述の問題を踏まえ、本発明が解決しようとする課題は、ネットワーク全体のスループットが低下することを抑制可能な輻輳制御技術を提供することである。
【課題を解決するための手段】
【０００７】
本発明は、上述の課題の少なくとも一部を解決するためになされたものであり、以下の形態又は適用例として実現することが可能である。
【０００８】
［適用例１］パケット中継装置であって、パケットが一時的に格納される複数のキューを含むバッファメモリと、前記各キューのキュー長をそれぞれ示す複数の第１のキュー長と、前記複数の第１のキュー長の合計に応じた値を示す第２のキュー長と、がそれぞれ記憶される記憶部と、パケットを受信する受信部と、前記パケットが属するキューを前記複数のキューの中から判別するキュー判別部と、前記バッファメモリ内の前記判別されたキューに対して前記パケットを一時的に格納し、前記第１のキュー長と前記第２のキュー長とを更新するキュー管理部と、前記判別されたキューに対応する前記第１のキュー長と、前記第２のキュー長とに応じて、前記パケットの送信元に対して輻輳通知を行うか否かを判定する輻輳通知判定部と、前記輻輳通知を前記送信元に対して送信する輻輳通知送信部と、を備えるパケット中継装置。
【０００９】
このような構成であれば、受信したパケットの属するキューの第１のキュー長と、複数の第１のキュー長の合計に応じた値を示す第２のキュー長とに基づいて、そのパケットの送信元に輻輳通知を行うか否かを判断するため、複数のキューのそれぞれについて個別に輻輳制御を行うことが可能になる。よって、輻輳制御に伴ってネットワーク全体のスループットが低下してしまうことを抑制することができる。
【００１０】
［適用例２］適用例１に記載のパケット中継装置であって、前記輻輳通知判定部は、前記第１のキュー長が長いほど高い確率となり、かつ、前記第２のキュー長が長いほど高い確率となる輻輳通知確率を所定の演算式に基づいて求め、該輻輳通知確率に基づき、前記判定を行う、パケット中継装置。
このような構成であれば、第１のキュー長が長いほどパケットの送信元に輻輳通知を行う確率を高くすることができ、また、第２のキュー長が長いほどパケットの送信元に輻輳通知を行う確率を高くすることができる。そのため、バッファメモリ内の全体のキュー長（第２のキュー長）と、各キューの個別のキュー長（第１のキュー長）とに応じて輻輳通知を行う確率を求めることができる。
【００１１】
［適用例３］適用例２に記載のパケット中継装置であって、前記輻輳通知判定部は、前記第２のキュー長が予め設定された第１の閾値以下の場合には前記演算式に拘わらず前記輻輳通知確率を０％とし、前記第２のキュー長が予め設定された第２の閾値以上の場合には前記演算式に拘わらず前記輻輳通知確率を１００％とする、パケット中継装置。
このような構成であれば、明らかに輻輳通知が必要になる状況や明らかに輻輳通知が不要な状況においてまで輻輳通知確率を演算する必要がないため、処理の簡略化を図ることができる。
【００１２】
［適用例４］適用例２または適用例３に記載のパケット中継装置であって、前記演算式または該演算式に含まれる定数を設定する設定部を備える、パケット中継装置。
このような構成であれば、パケット中継装置が置かれるネットワークの状況や使用状態に応じて柔軟な輻輳制御を行うことが可能になる。
【００１３】
［適用例５］適用例１に記載のパケット中継装置であって、前記輻輳通知判定部は、前記第１のキュー長に応じて、前記受信したパケットをクラス分けし、該クラス毎に予め設定された閾値と前記第２のキュー長とに基づいて、前記判定を行う、パケット中継装置。
このような構成であれば、第１のキュー長に応じて予め設定された閾値と第２のキュー長とを比較するだけで輻輳通知を行うか否かを判定することができるので、パケット中継装置の処理負担を軽減しつつ、複数のキューのそれぞれについて個別に輻輳制御を行うことができる。
【００１４】
［適用例６］適用例５に記載のパケット中継装置であって、前記クラス毎の閾値を設定する設定部を備える、パケット中継装置。
このような構成であれば、パケット中継装置が置かれるネットワークの状況や使用状態に応じて柔軟な輻輳制御を行うことが可能になる。
【００１５】
［適用例７］適用例１から適用例６までのいずれか一項に記載のパケット中継装置であって、前記記憶部は、前記第１のキュー長および前記第２のキュー長を、前記パケットの数またはデータ量によって記憶している、パケット中継装置。
このような構成であれば、パケット中継装置が置かれるネットワークの状況や使用状態に応じて第１のキュー長および第２のキュー長の単位を選択することができる。
【００１６】
［適用例８］適用例１から適用例７までのいずれか一項に記載のパケット中継装置であって、前記輻輳通知判定部は、更に、前記第２のキュー長に応じて輻輳の程度を判定し、前記輻輳通知送信部は、前記輻輳通知に前記輻輳の程度を含ませる、パケット中継装置。
このような構成であれば、輻輳通知を受信したパケットの送信元に対して輻輳制御を行うための有益な情報を提供することができる。
【００１７】
［適用例９］適用例８に記載のパケット中継装置であって、前記輻輳の程度は、前記送信元において、前記パケットの送信量を制限するために用いられる、パケット中継装置。
このような構成であれば、パケットの送信元は、パケット中継装置から受信した輻輳通知を利用して容易に輻輳制御を行うことが可能になる。
【００１８】
［適用例１０］適用例１から適用例９までのいずれか一項に記載のパケット中継装置であって、前記バッファメモリの全容量は、前記複数のキューのキュー長の合計よりも少ない、パケット中継装置。
このような構成であれば、統計多重効果に基づいて、少ない容量のバッファメモリによって、効率的にパケットのキューイングを行うことができる。
【００１９】
本発明は、上述したパケット中継装置としての構成のほか、パケット中継装置による輻輳制御方法や、コンピュータプログラムとしても構成することができる。コンピュータプログラムは、コンピュータが読取可能な記録媒体に記録されていてもよい。記録媒体としては、例えば、フレキシブルディスクやＣＤ−ＲＯＭ、ＤＶＤ−ＲＯＭ、光磁気ディスク、メモリカード、ハードディスク等の種々の媒体を利用することができる。
【図面の簡単な説明】
【００２０】
【図１】パケット中継装置の概略構成を示す説明図である。
【図２】輻輳通知処理部の詳細な構成を示す説明図である。
【図３】多段キュー構造の概念を示す説明図である。
【図４】輻輳制御処理のフローチャートである。
【図５】第１輻輳制御テーブルの一例を示す説明図である。
【図６】第２輻輳制御テーブルの一例を示す説明図である。
【図７】第２輻輳判定処理のフローチャートである。
【図８】輻輳通知確率の算出方法の概念をグラフによって示す説明図である。
【図９】第２実施例における多段キュー構造の概念を示す説明図である。
【図１０】第２実施例における第２輻輳制御テーブルの一例を示す説明図である。
【図１１】第２実施例における第２輻輳判定処理のフローチャートである。
【図１２】第１輻輳制御テーブルと第２輻輳制御テーブルとが異なるパケット中継装置に備えられている例を示す説明図である。
【図１３】輻輳通知判定部の動作に関する設定を行うコマンドを示す説明図である。
【図１４】第１輻輳制御テーブルおよび第２輻輳制御テーブルの設定を行うためのコマンドを示す説明図である。
【発明を実施するための形態】
【００２１】
以下、本発明の実施の形態を実施例に基づき次の順序で説明する。
Ａ．第１実施例：
Ａ−１．装置構成：
Ａ−２．輻輳制御処理：
Ａ−３．第１輻輳判定処理：
Ａ−４．第２輻輳判定処理：
Ｂ．第２実施例：
Ｃ．第３実施例：
Ｄ．第４実施例：
Ｅ．変形例：
【００２２】
Ａ．第１実施例：
Ａ−１．装置構成：
図１は、本発明の第１実施例としてのパケット中継装置１００の概略構成を示す説明図である。本実施例のパケット中継装置１００は、ネットワーク回線３０を介して各端末１０から受信したパケットを一時的に蓄積するバッファメモリ１２２を備えている。そして、パケット中継装置１００は、バッファメモリ１２２内に蓄積されたパケットを、パケットフロー毎に用意されたキューと、これらのキューを統括的に管理するキューとを含む複数段のキューによって段階的に管理する。つまり、本実施例のパケット中継装置１００は、共有バッファ方式の多段キュー構造を採用している。共有バッファ方式とは、統計多重効果に基づき、各キューの容量の総和よりも少ない容量のバッファメモリ１２２を、全てのキューで共有する方式である。このような共有バッファ方式によれば、各キューの容量の総和分の容量のバッファメモリ１２２を用意しなくてもよいため、バッファメモリの容量を小さくすることができ、部品コストの削減や消費電力の低減を実現することが可能になる。以下では、パケットフロー毎に用意されたキューのことを、「Ｎ段目のキュー」として説明し、これらのキューを統括的に管理するキューを、「（Ｎ＋１）段目のキュー」として説明する。
【００２３】
パケット中継装置１００は、制御ユニット１１０と、メモリユニット１４０と、インタフェース部１５０と、接続端子１６０と、を備えている。制御ユニット１１０は、ＣＰＵやＲＡＭ、ＲＯＭを備えるコンピュータとして構成されている。制御ユニット１１０のＣＰＵは、ＲＯＭに記憶された所定の制御プログラムをＲＡＭにロードして実行することで、輻輳通知判定部１２０および輻輳通知処理部１３０として機能する。なお、輻輳通知判定部１２０や輻輳通知処理部１３０は、ＡＳＩＣ（Application Specific Integrated Circuit）やＦＰＧＡ(Field Programmable Gate Array)によって実現されることとしてもよい。
【００２４】
メモリユニット１４０は、パケットが格納されるバッファメモリ１２２と、Ｎ段目のキューについて輻輳制御を行うための第１輻輳制御テーブル１２４と、（Ｎ＋１）段目のキューについて輻輳制御を行うための第２輻輳制御テーブル１２６と、を有している。これらのテーブルに記録される制御情報の詳細については後述する。
【００２５】
インタフェース部１５０は、複数の物理ポート１５１を備えている。各物理ポート１５１には、ネットワーク回線３０を介して端末１０や他のパケット中継装置が接続される。
【００２６】
輻輳通知判定部１２０は、インタフェース部１５０を通じてパケットを受信し、そのパケットのヘッダ情報に基づいて、そのパケットのフローの判別をする。そして、判別されたフローに対応するバッファメモリ１２２内のキュー（Ｎ段目のキュー）にパケットを格納する。このとき輻輳通知判定部１２０は、第１輻輳制御テーブル１２４および第２輻輳制御テーブル１２６の更新も行う。具体的な更新方法については後述する。輻輳通知判定部１２０は、また、バッファメモリ１２２内の各キュー（Ｎ段目のキュー）から所定のスケジューリング方式に基づいて送出されたパケットを、インタフェース部１５０を通じてそのパケットの送信先に転送する機能を有する。
【００２７】
輻輳通知判定部１２０は、第１輻輳制御テーブル１２４および第２輻輳制御テーブル１２６に記録された制御情報に基づいて、受信したパケットの送信元に対して輻輳通知を行うか否かを判断する。輻輳通知とは、輻輳の発生を抑制する制御を行うようパケットの送信元に通知を行うことをいう。輻輳通知判定部１２０は、輻輳通知を行うと判断すると、そのパケットの送信元のアドレスと輻輳状態（輻輳の程度）を表す情報とを含む輻輳情報を、輻輳通知処理部１３０に送信する。なお、輻輳通知判定部１２０は、本願の「キュー判別部」、「キュー管理部」、および、「輻輳通知判定部」に相当する。
【００２８】
図２は、輻輳通知処理部１３０の詳細な構成を示す説明図である。輻輳通知処理部１３０は、輻輳通知パケット生成部１３２と、輻輳通知パケット送信部１３４と、を備えている。輻輳通知パケット生成部１３２は、輻輳通知判定部１２０から受信した輻輳情報に基づき、輻輳通知を行うためのパケット（輻輳通知パケット）を生成する。この輻輳通知パケットには、パケットの送信先のアドレスと輻輳状態を示す情報とが含まれる。輻輳通知パケット送信部１３４は、インタフェース部１５０を通じて、この輻輳通知パケットを該当するアドレスに送信する。輻輳通知パケットを受信したパケットの送信元は、通知された輻輳の程度に応じて、パケットの送信量を制限する。
【００２９】
接続端子１６０（図１）には、所定のケーブルを介して管理装置２０が接続される。管理装置２０には、ディスプレイ等の表示装置や、キーボード、マウス等の入力装置が接続されている。パケット中継装置１００を管理するユーザ（以下、「管理ユーザ」という）は、この管理装置２０を用いて、当該パケット中継装置１００に対する種々の設定を行なうことができる。設定内容の具体例については後述する。接続端子１６０と管理装置２０とを接続するインタフェースとしては、様々な規格のものを適用可能である。例えば、シリアルインタフェースや、ＬＡＮインタフェース、ＵＳＢインタフェースなどを適用することができる。
【００３０】
図３は、本実施例における多段キュー構造の概念を示す説明図である。この図３には、Ｎ段目に１０００個のキューが存在している例を示している。本実施例では、Ｎ段目の複数のキューは、それぞれ、パケットのフローに個別に対応している。ただし、Ｎ段目のキューは、パケットのフローに限らず、パケットの送信元のユーザや物理ポート１５１に個別に対応させることも可能である。具体的には、例えば、あるユーザＡからのパケットは必ずＮ段目のキュー＃１に格納され、またあるユーザＺからのパケットは必ずＮ段目のキュー＃１０００に格納されるといったキューイングが可能である。
【００３１】
本実施例では、統計多重効果を利用した共有バッファ方式の多段キュー構造を採用している。そのため、Ｎ段目のキューのそれぞれに格納されるパケット数の合計を、（Ｎ＋１）段目のキューによって管理する。具体的には、（Ｎ＋１）段目のキューの現在のキュー長QLEN(N+1)は、Ｎ段目の複数のキューの現在のキュー長QLEN(N)の合計値となる。図３には、Ｎ段目のキューにおいて輻輳状態を判定するための輻輳通知閾値CN_TH(N)と、（Ｎ＋１）段目のキューにおいて輻輳状態を判定するための最大輻輳通知閾値MAX_CN_TH(N+1)、および、最小輻輳通知閾値MIN_CN_TH(N+1)とを示している。これらの閾値の用法については後述する。
【００３２】
Ａ−２．輻輳制御処理：
図４は、パケット中継装置１００が繰り返し実行する輻輳制御処理のフローチャートである。この輻輳制御処理は、パケット中継装置１００がパケットのキューイングや中継を行うための処理と同時並列的に実行される。パケットのキューイングや中継を行うための処理は周知であるため本実施例では説明を省略する。
【００３３】
この輻輳制御処理の実行が開始されると、輻輳通知判定部１２０は、インタフェース部１０４を通じてパケットを受信する（ステップＳ１００）。そして、輻輳通知判定部１２０は、受信したパケットのヘッダ情報を解析してフローを判別し、そのパケットがＮ段目のキューのうちどのキューに属するかを判定する（ステップＳ２００）。
【００３４】
輻輳通知判定部１２０は、パケットの属するキュー（Ｎ段目のキュー）を判定すると、メモリユニット１４０内の第１輻輳制御テーブル１２４に記録されている制御情報に基づき、そのキュー（Ｎ段目のキュー）に輻輳が発生しているか否かを判定する（ステップＳ３００）。以下、この判定処理を、第１輻輳判定処理という。この第１輻輳判定処理についての詳細は後述する。
【００３５】
第１輻輳判定処理によってＮ段目のキューに輻輳が発生していると判定された場合には（ステップＳ４００：Ｙｅｓ）、輻輳通知判定部１２０は、第１輻輳判定処理によって判定された輻輳の程度と、ステップＳ１００で受信したパケットの送信元のアドレスを示す情報とを含む輻輳情報を輻輳通知処理部１３０に通知する。輻輳通知処理部１３０は、この通知を受けると、通知された輻輳情報に基づき輻輳通知パケットを生成し（ステップＳ７００）、その輻輳通知パケットをステップＳ１００で受信したパケットの送信元に送信する（ステップＳ８００）。
【００３６】
上記ステップＳ３００における第１輻輳判定処理によって、Ｎ段目のキューに輻輳が発生していないと判定された場合には（ステップＳ４００：Ｎｏ）、輻輳通知判定部１２０は、更に、第２輻輳制御テーブル１２６に記録されている制御情報に基づき、（Ｎ＋１）段目のキューに輻輳が発生しているか否かを判定する処理（以下、「第２輻輳判定処理」という）を実行する（ステップＳ５００）。この、第２輻輳判定処理についての詳細は後述する。
【００３７】
第２輻輳判定処理によって、（Ｎ＋１）段目のキューに輻輳が発生していると判定された場合には（ステップＳ６００：Ｙｅｓ）、輻輳通知判定部１２０は、第２輻輳判定処理によって判定された輻輳の程度と、ステップＳ１００で受信したパケットの送信元のアドレスを示す情報とを含む輻輳情報を輻輳通知処理部１３０に通知する。輻輳通知処理部１３０は、この通知を受けると、通知された輻輳情報に基づき輻輳通知パケットを生成し（ステップＳ７００）、その輻輳通知パケットをステップＳ１００で受信したパケットの送信元に送信する（ステップＳ８００）。
【００３８】
一方、第２輻輳判定処理によって、（Ｎ＋１）段目のキューに輻輳が発生していないと判定された場合には（ステップＳ６００：Ｎｏ）、ステップＳ７００およびステップＳ８００の処理をスキップして当該輻輳制御処理を終了する。
【００３９】
Ａ−３．第１輻輳判定処理：
続いて、上述した第１輻輳判定処理の具体的な処理内容について説明する。
図５は、第１輻輳判定処理で用いる第１輻輳制御テーブル１２４の一例を示す説明図である。第１輻輳制御テーブル１２４には、個別のキュー番号で表されるＮ段目のキュー毎に、そのキューに格納可能な最大パケット数を表す最大格納閾値MAX_TH(N)と、輻輳通知を行うか否かを判定するための輻輳通知閾値CN_TH(N)と、当該キューに現在格納されているパケット数を表すキュー長QLEN(N)とが、制御情報として記録される。
【００４０】
輻輳通知判定部１２０は、第１輻輳制御テーブル１２４を次のように更新する。すなわち、輻輳通知判定部１２０は、受信したパケットをバッファメモリ１２２内の該当するキューに格納すると同時に、第１輻輳制御テーブル１２４の該当するキュー番号のキュー長QLEN(N)を１つ増加させる。後にバッファメモリ１２２内のキューからパケットが送出された場合には、輻輳通知判定部１２０は、第１輻輳制御テーブル１２４の該当するキュー番号のキュー長QLEN(N)を１つ減少させる。
【００４１】
輻輳通知判定部１２０は、上述した第１輻輳判定処理において、受信したパケットに対応するキューのキュー長QLEN(N)が、そのキューに設定された輻輳通知閾値CN_TH(N)未満の場合には、当該キューに輻輳は発生していないと判定する。一方、受信したパケットに対応するキューのキュー長QLEN(N)が、輻輳通知閾値CN_TH(N)以上の場合には、輻輳通知判定部１２０は、当該キューに輻輳が発生していると判定する。
【００４２】
例えば、図５に示した例であれば、キュー番号＃４では、キュー長QLEN(N)が「９０」であり、その輻輳通知閾値CN_TH(N)の「８０」を超えているため、輻輳通知判定部１２０は、当該キューに輻輳が発生していると判定する。一方、他のキューは、キュー長QLEN(N)が全て、各輻輳通知閾値CN_TH(N)未満であるため、輻輳通知判定部１２０は、他のキューについては、輻輳は発生していないと判定する。輻輳通知判定部１２０は、輻輳が発生していると判定した場合には、輻輳通知閾値CN_TH(N)に対するキュー長QLEN(N)の割合を求め、この割合に応じて、輻輳の程度を判定する。輻輳の程度は、所定のテーブルに基づき、例えば、「軽輻輳」、「重輻輳」、のように判定することができる。
【００４３】
Ａ−４．第２輻輳判定処理：
次に、上述した第２輻輳判定処理の具体的な処理内容について説明する。
図６は、第２輻輳判定処理で用いる第２輻輳制御テーブル１２６の一例を示す説明図である。第２輻輳制御テーブル１２６には、（Ｎ＋１）段目のキュー番号（本実施例では１つ）と、（Ｎ＋１）段目のキュー（つまり、バッファメモリ１２２全体）に格納可能な最大パケット数を表す最大格納閾値MAX_TH(N+1)と、キューに送信されてきたすべてのパケットの送信元に対して輻輳通知を行うことになるキュー長を示す最大輻輳通知閾値MAX_CN_TH(N+1)と、輻輳通知が行われないキュー長の上限示す最小輻輳通知閾値MIN_CN_TH(N+1)と、後述の平均キュー長QAVEが最大輻輳通知閾値MAX_CN_TH(N+1)に達する際に輻輳通知が行われる確率の基準となる基準輻輳通知確率STD_CPと、Ｎ段目の複数のキューに格納されているパケット数の合計を示すキュー長QLEN(N+1)と、時系列的に変動するキュー長QLEN(N+1)の平均的な値を示す平均キュー長QAVEと、が制御情報として記録される。図６には、最大格納閾値MAX_TH(N+1)が１０００、最大輻輳通知閾値MAX_CN_TH(N+1)が８００、最小輻輳通知閾値MIN_CN_TH(N+1)が５００、基準輻輳通知確率STD_CPが５０％、キュー長QLEN(N+1)が７００、平均キュー長QAVEが７００、と記録されている例を示している。なお、本実施例では、統計多重効果を利用した共有バッファ方式を採用しているため、（Ｎ＋１）段目のキューの最大格納閾値MAX_TH(N+1)は、図５に示したＮ段目キューの最大格納閾値MAX_TH(N)の合計値よりも少ない値となる。
【００４４】
輻輳通知判定部１２０は、第２輻輳制御テーブル１２６を次のように更新する。すなわち、輻輳通知判定部１２０は、受信したパケットをバッファメモリ１２２内の該当するＮ段目のキューに格納すると同時に、第２輻輳制御テーブル１２６内のキュー長QLEN(N+1)を１つ増加させ、更に、後述の方法により、平均キュー長QAVEの更新を行う。後にバッファメモリ１２２内からパケットが送出された場合には、輻輳通知判定部１２０は、第２輻輳制御テーブル１２６内のキュー長QLEN(N+1)を１つ減少させるとともに、平均キュー長QAVEの更新を行う。
【００４５】
図７は、第２輻輳判定処理の具体的な処理内容を示すフローチャートである。この第２輻輳判定処理が開始されると、パケットの受信に伴い第２輻輳制御テーブル１２６のキュー長QLEN(N+1)が更新されているため、輻輳通知判定部１２０は、まず、第２輻輳制御テーブル１２６の平均キュー長QAVEを更新する（ステップＳ５１０）。更新後の平均キュー長QAVEnewは、現在のキュー長QLEN(N+1)と更新前の平均キュー長QAVEoldとに基づき、以下の式（１）によって求めることができる。
【００４６】
QAVEnew = {QLEN(N+1) * 1/2^S} + {QAVEold * (1-1/2^S)}  ・・・（１）
（ただし、Sは０よりも大きい重み係数。）
【００４７】
上記式によれば、本実施例では、重み係数Sが大きいほど、更新後の平均キュー長QAVEnewに対する現在のキュー長QLEN(N+1)の影響が小さくなる。すなわち、重み係数Sを大きくすれば、現在のキュー長QLEN(N+1)が短期間のうちに大きく変動したとしても、平均キュー長QAVEの変動を小さくすることができる。
【００４８】
続いて、輻輳通知判定部１２０は、受信したパケットの属するＮ段目のキューのキュー長QLEN(N)と、輻輳通知閾値CN_TH(N)とを、第１輻輳制御テーブル１２４から取得する（ステップＳ５２０）。第１輻輳制御テーブル１２４からキュー長QLEN(N)と輻輳通知閾値CN_TH(N)とを取得すると、輻輳通知判定部１２０は、取得したキュー長QLEN(N)および輻輳通知閾値CN_TH(N)と、第２輻輳制御テーブル１２６に記録された制御情報とに基づいて、輻輳通知確率CPの算出を行う（ステップＳ５３０）。この算出処理によって、輻輳通知確率CPは、受信したパケットの属するキュー（Ｎ段目のキュー）毎に異なった値を採る。
【００４９】
図８は、輻輳通知確率CPの算出方法の概念をグラフによって示す説明図である。輻輳通知判定部１２０は、まず、輻輳通知確率CPを算出するにあたり、ステップＳ５１０で算出した平均キュー長QAVEと、第２輻輳制御テーブル１２６に記録された最大輻輳通知閾値MAX_CN_TH(N+1)と、最小輻輳通知閾値MIN_CN_TH(N+1)と、に応じて演算式の場合分けを行う。具体的には、以下の（Ａ）、（Ｂ）、（Ｃ）のように場合分けを行う。そして、各場合に応じて、以下に示す式（２）〜（４）に基づき、輻輳通知確率CPを算出する。図８には、こうして算出される輻輳通知確率CPのとり得る値の範囲を実線およびハッチングで示している。
【００５０】
（Ａ）QAVE≧MAX_CN_TH(N+1)の場合：
CP=100%  ・・・（２）
（Ｂ）QAVE≦MIN_CN_TH(N+1)-βの場合：
CP=0%  ・・・（３）
（Ｃ）MIN_CN_TH(N+1)-β＜QAVE＜MAX_CN_TH(N+1)の場合：
CP=(STD_CP+α)(QAVE-MIN_CN_TH(N+1)+β)/(MAX_CN_TH(N+1)-MIN_CN_TH(N+1)+β)  ・・・（４）
（ただし、αは輻輳通知確率重み、βは輻輳通知閾値重み。）
【００５１】
図８に示すように、平均キュー長QAVEが最大輻輳通知閾値MAX_CN_TH(N+1)に一致した場合における輻輳通知確率CPは、輻輳通知確率重みαが正の値の場合には、その絶対値が大きくなるほど、基準輻輳通知確率STD_CPより大きくなる。一方、平均キュー長QAVEが最大輻輳通知閾値MAX_CN_TH(N+1)に一致した場合における輻輳通知確率CPは、輻輳通知確率重みαが負の値の場合には、その絶対値が大きくなるほど、基準輻輳通知確率STD_CPより小さくなる。
【００５２】
また、輻輳通知閾値重みβが正の値の場合には、その絶対値が大きくなるほど、輻輳通知が開始される閾値が、最小輻輳通知閾値MIN_CN_TH(N+1)よりも小さくなる。一方、輻輳通知閾値重みβが負の値の場合には、その絶対値が大きくなるほど、輻輳通知が開始される閾値が、最小輻輳通知閾値MIN_CN_TH(N+1)よりも大きくなる。すなわち、本実施例では、輻輳通知確率重みαおよび輻輳通知閾値重みβに応じて、（Ｎ＋１）段目のキューが輻輳状態にあると判定される輻輳通知確率CPと平均キュー長QAVEとの関係が変動する。
【００５３】
なお、輻輳通知確率重みαおよび輻輳通知閾値重みβは、受信したパケットに対応するＮ段目のキューのキュー長QLEN(N)および最大格納閾値MAX_TH(N)に基づいて、以下の式（５）、（６）によって求めることができる。なお、輻輳通知確率重みαおよび輻輳通知閾値重みβの計算方法は、以下に示す式に限定されず、種々の方法を採用することが可能である。
【００５４】
α = αMAX * {QLEN(N)/MAX_TH(N) * 2-1}  ・・・（５）
β = βMAX * {QLEN(N)/MAX_TH(N) * 2-1}  ・・・（６）
（ここで、αMAX及びβMAXは、所定の定数である。）
【００５５】
上記式（５），（６）によれば、受信したパケットが属するＮ段目のキューの最大輻輳通知閾値MAX_TH(N)に占めるキュー長QLEN(N)の割合が大きいほど、輻輳通知確率重みαおよび輻輳通知閾値重みβが大きくなる。そのため、受信したパケットが属するＮ段目のキューの最大輻輳通知閾値MAX_TH(N)に占めるキュー長QLEN(N)の割合が大きいほど、（Ｎ＋１）段目のキューにおいて輻輳が発生していると判定される確率（輻輳通知確率CP）が高くなる。
【００５６】
なお、式（５）のαMAXの値や式（６）のβMAXの値、および、式（１）の重み係数Sの値は、接続端子１６０に接続された管理装置２０によって任意の値を設定可能とすることができる。こうすることで、輻輳通知確率重みα及び輻輳通知閾値重みβの変動する範囲と、重み係数Sを、管理ユーザが自由に設定・変更することが可能となる。例えば、管理ユーザは、パケット中継装置１００に接続されたユーザ数や通信量等に合わせて、輻輳通知重みαおよび輻輳通知閾値重みβの変動する範囲、重み係数Ｓを適宜調整することができる。また、αMAX、βMAXの値および重み係数Ｓは、予め用意された複数の値の中から、管理ユーザが選択可能としてもよい。また、管理ユーザは、管理装置２０を用いて、第１輻輳制御テーブル１２４や第２輻輳制御テーブル１２６に設定されている各値を任意に設定することが可能である。
【００５７】
以上のようにして輻輳通知確率CPの算出を行うと、輻輳通知判定部１２０は、算出された輻輳通知確率CPに基づいて、（Ｎ＋１）段目のキュー（換言すれば、バッファメモリ１２２全体）に輻輳が発生しているか否かを判定する（ステップＳ５４０）。具体的には、例えば、図６に示したように、最大格納閾値MAX_TH(N+1)が１０００、最大輻輳通知閾値MAX_CN_TH(N+1)が８００、最小輻輳通知閾値MIN_CN_TH(N+1)が５００、基準輻輳通知確率STD_CPが５０％、キュー長QLEN(N+1)が７００、平均キュー長QAVEが７００であり、定数αMAXが４０％、定数βMAXが４００、であるとする。そうすると、パケットが属するＮ段目のキューのキュー長QLEN(N)が最大格納閾値MAX_TH(N)の３／４の場合には、輻輳通知確率重みαは２０％、輻輳通知閾値重みβは２００と算出される。また、（Ｎ＋１）段目のキューの平均キュー長QAVEは７００であることから、当該パケットの（Ｎ＋１）段目のキューにおける輻輳通知確率CPは５６％と算出される。そのため、上記ステップＳ５４０では、５６％の確率で輻輳が発生していると判定されることになる。その他、例えば、パケットが属するＮ段目のキューのキュー長QLEN(N)が、最大格納閾値MAX_TH(N)の1/8の場合には、輻輳通知確率重みαは−３０％、輻輳通知閾値重みβは−３００と算出される。また、（Ｎ＋１）段目のキューの平均キュー長QAVEは７００であることから、当該パケットの（Ｎ＋１）段目のキューにおける輻輳通知確率CPは０％となる。そのため、上記ステップＳ５４０では、当該キューには輻輳は発生していないと判定される。
【００５８】
以上のようにして、（Ｎ＋１）段目のキューに輻輳が発生しているか否かを判定すると、続いて、輻輳通知判定部１２０は、最大輻輳通知閾値MAX_CN_TH(N+1)に対する平均キュー長QAVE（キュー長QLEN(N+1)でもよい）の割合を求め、第１輻輳判定処理と同様に、この割合に応じて輻輳の程度を判定する（ステップＳ５５０）。以上で説明した一連の処理により、第２輻輳判定処理は終了し、処理が、図４の輻輳制御処理に戻される。
【００５９】
以上で説明した第１実施例によれば、複数のＮ段目のキューのうち、バッファメモリ１２２に格納されているパケット数が多いＮ段目のキューに対する輻輳通知確率CPが大きくなる一方で、バッファメモリ１２２に格納されているパケット数が少ないＮ段目のキューに対する輻輳通知確率CPが小さくなる。つまり、本実施例では、Ｎ段目のキュー毎に、そのキュー長に応じて輻輳通知を行う確率が動的に変動することになる。そのため、Ｎ段目の特定のキューのパケット数が増大したとしても、そのキューの対する輻輳通知確率CPが個別に大きくなるため、その特定のキューにパケットを送信した送信元に、選択的に、輻輳通知を行うことが可能になる。これにより、後段のキューに基づく輻輳制御において、前段の各キューの状態を反映させた制御が可能となり、輻輳の原因となっている送信元からの通信を的確に制限することができる。この結果、輻輳の原因となっていない送信元に対してまで制限が加わることがないため、ネットワーク全体のスループットが低下することを抑制することが可能になる。つまり、本実施例によれば、特定のキューによる共有バッファの占有を抑制し、他のキューが共有バッファを使用することができずに通信が阻害されることを抑制することができる。また、輻輳通知を受けた送信元は、通知された輻輳の状態に応じて通信量を抑えることができるため、消費電力を抑えることも可能になる。
【００６０】
なお、本実施例では、図４にも示したように、Ｎ段目のキューについて第１輻輳判定処理を実行し、（Ｎ＋１）段目のキューについて第２輻輳判定処理を実行することとした。しかし、第１輻輳判定処理の実行は省略してもよい。この場合であっても、第２の輻輳判定処理を実行するだけで、あたかも全てのキューで個別に段階的な輻輳制御が行われているようにパケット中継装置１００は動作する。また、第２輻輳判定処理では、平均キュー長QAVEに替えて、キュー長QLEN(N+1)を輻輳通知確率CPの算出に用いることも可能である。
【００６１】
Ｂ．第２実施例：
図９は、第２実施例における多段キュー構造の概念を示す説明図である。上述した第１実施例との相違は、（Ｎ＋１）段目のキューにおける輻輳通知判定において「輻輳クラス」という概念を用いるという点であり、Ｎ段目のキューについて実行する第１輻輳判定処理の処理内容や構成は第１実施例と同じである。
【００６２】
図９に示す「輻輳クラス」は、受信したパケットが属するＮ段目のキューの状態（具体的には、キュー長QLEN(N)）に応じてそのキューに格納されているパケットの優先度を分類するものである。本実施例では、受信したパケットが、高い優先度に分類された場合には、パケットの送信元に輻輳通知をされにくくし、低い優先度に分類された場合には、パケットの送信元に輻輳通知をされやすくする制御を行う。つまり、本実施例では、分類された輻輳クラスに応じて、パケットの送信元への輻輳通知のされやすさが変動することになる。
【００６３】
例えば、図９の場合では、Ｎ段目のキュー#1000はキュー長QLEN(N)が比較的短いため、輻輳通知判定部１２０は、Ｎ段目のキュー#1000に属するパケットを、優先度の高い輻輳クラス４に割り当てる。一方、Ｎ段目のキュー#1はキュー長QLEN(N)が比較的長いため、輻輳通知判定部１２０は、Ｎ段目のキュー#1に属するパケットを、優先度の低い輻輳クラス２に割り当てる。すなわち、キュー長QLEN(N)の長いＮ段目のキューに属するパケットは、優先度の低い輻輳クラスに分類されることになり、（Ｎ＋１）段目のキューにおける第２輻輳判定処理においてキューが輻輳状態にあると判定される可能性が高くなる。これにより、キュー長QLEN(N)の長い特定のキューによってバッファメモリ１２２が占有されることを抑制することができる。
【００６４】
図１０は、第２実施例における第２輻輳制御テーブル１２６ｂの一例を示す説明図である。第２実施例における第２輻輳制御テーブル１２６ｂには、（Ｎ＋１）段目のキュー（つまり、バッファメモリ１２２全体）に格納可能な最大パケット数を表す最大格納閾値MAX_TH(N+1)と、Ｎ段目のキューに格納されているパケットの合計を示すキュー長QLEN(N+1)と、が格納されている。また、本実施例では、第２輻輳制御テーブル１２６ｂに、輻輳クラス１〜４に対してそれぞれ設定された４つの輻輳通知閾値TH#1〜TH#4が格納されている。図９にも示すように、輻輳通知閾値TH#1〜TH#4は、輻輳クラス１〜４のそれぞれについて異なる値が設定されており、優先度が高い輻輳クラスほど、大きな値に設定されている。
【００６５】
図１１は、第２実施例における第２輻輳判定処理のフローチャートである。本実施例において第２輻輳判定処理が開始されると、輻輳通知判定部１２０は、まず、受信したパケットの属するＮ段目のキューのキュー長QLEN(N)に応じてそのパケットの輻輳クラス（１〜４）を決定する（ステップＳ５１０ｂ）。輻輳クラスは、例えば、そのキューに設定された輻輳通知閾値CN_TH(N)（あるいは、最大格納閾値MAX_TH(N)）に対するキュー長QLEN(N)の割合を求め、求めた割合が２５％までならクラス１、５０％までならクラス２、７５％までならクラス３、７５％以上ならクラス４などと、その割合に応じて決定することができる。
【００６６】
輻輳クラスを決定すると、輻輳通知判定部１２０は、決定された輻輳クラスに対応付けられた輻輳通知閾値と、（Ｎ＋１）段目のキューのキュー長QLEN(N+1)とを第２輻輳制御テーブル１２６ｂから取得し（ステップＳ５２０ｂ）、これらを比較する（ステップＳ５４０ｂ）。この比較の結果、キュー長QLEN(N+1)が輻輳クラスに応じた輻輳通知閾値以上の場合には、輻輳通知判定部１２０は、当該キューが輻輳状態にあると判定し、輻輳通知を行うと決定する。一方、キュー長QLEN(N+1)が輻輳クラスに応じた輻輳通知閾値未満の場合には、当該キューは輻輳状態にないと判定する。最後に、輻輳通知判定部１２０は、輻輳通知閾値に対するキュー長QLEN(N+1)の割合を求め、この割合に応じて、輻輳の程度を判定する（ステップＳ５５０ｂ）。以上で説明した一連の処理により、第２実施例における第２輻輳判定処理は終了し、処理が、図４に示した輻輳制御処理に戻される。
【００６７】
以上で説明した第２実施例では、パケットが属するＮ段目のキューのキュー長QLEN(N)によって輻輳クラスを決定し、当該輻輳クラス毎に設定された輻輳通知閾値とキュー長QLEN(N+1)に基づいて（Ｎ＋１）段目のキューにおける輻輳通知判定を行なう。つまり、キュー長QLEN(N+1)と輻輳クラスに応じた閾値との単純な比較によって各キュー毎に輻輳通知を行うか否かを判定することできるので、パケット中継装置１００の処理負担を軽減しつつ、第１実施例と同様の効果を奏することができる。
【００６８】
なお、図１０に示した輻輳通知閾値TH#1〜TH#4の値や、輻輳クラスの割り当て方法、輻輳クラスの数は、上述した例に限られず任意に設定可能である。また、接続端子１６０に接続された管理装置２０によって管理ユーザがこれらを任意に設定することも可能である。
【００６９】
Ｃ．第３実施例：
上述した第１実施例および第２実施例では、１台のパケット中継装置１００が、第１輻輳制御テーブル１２４と第２輻輳制御テーブル１２６とを備えている。これに対して、第３実施例では、第１輻輳制御テーブル１２４と第２輻輳制御テーブル１２６とが、異なるパケット中継装置に備えられている。
【００７０】
図１２は、第１輻輳制御テーブル１２４と第２輻輳制御テーブル１２６とが異なるパケット中継装置に備えられている例を示す説明図である。本実施例では、Ｎ段目のキューの管理を、パケット中継装置１００Ａ，１００Ｂが行い、（Ｎ＋１）段目のキューの管理を、パケット中継装置１００Ｃが行う。パケット中継装置１００Ａ，１００Ｂは、調停装置１１１を介して、パケット中継装置１００Ｃに接続されている。調停装置１１１は、パケット中継装置１００Ａ，１００Ｂから送信された制御情報をパケット中継装置１００Ｃに転送するための装置である。各パケット中継装置と調停装置とは、ネットワークによって接続されていてもよいし、所定のバスによって接続されていてもよい。
【００７１】
パケット中継装置１００Ａ，１００Ｂは、メモリユニット１４０Ａ，１４０Ｂ内に、バッファメモリ１２２Ａ，１２２Ｂと第１輻輳制御テーブル１２４Ａ，１２４Ｂとを備えている。また、パケット中継装置１００Ｃは、メモリユニット１４０Ｃ内に、バッファメモリ１２２Ｃと、第２輻輳制御テーブル１２６Ｃとを備えている。つまり、本実施例では、物理的にバッファメモリが分かれた個別バッファ方式の構成を採用している。なお、パケット中継装置１００Ａ，１００Ｂは、それぞれ、Ｎ段目の異なるキューを管理することができる。
【００７２】
以下、本実施例における輻輳制御について説明する。まず、パケット中継装置１００Ａ，１００Ｂがパケットを受け取ると、当該パケットがどのキューに属するかが輻輳通知判定部１２０Ａ，１２０Ｂによって判定される。そして、輻輳通知判定部１２０Ａ，１２０Ｂによって、上述した第１実施例における第１輻輳判定処理と同じ処理が実行される。この第１輻輳判定処理によって、受信したパケットの属するキューが輻輳状態にあると判定された場合には、輻輳通知処理部１３０Ａ，１３０Ｂから、パケットの送信元に対して輻輳通知がなされる。一方、受信したパケットが輻輳状態にないと判定された場合には、輻輳通知はなされない。
【００７３】
第１輻輳判定処理の後、Ｎ段目のキューに格納されているパケットが送出される順番になった場合には、調停装置１１１によってそのパケットのデータが読み出されるとともに、そのパケットのキューのキュー長QLEN(N)が第１輻輳制御テーブル１２４Ａあるいは１２４Ｂから読み出され、パケット中継装置１００Ｃに送信される。これと同時に第１輻輳制御テーブル１２４Ａ，１２４Ｂ内のキュー長QLEN(N)は１つ減少し、第２輻輳制御テーブル１２６Ｃのキュー長QLEN(N+1)は１つ増加する。パケットおよびキュー長QLEN(N)を受け取ったパケット中継装置１００Ｃでは、上述した第１実施例の第２輻輳判定処理と同じ処理が実行され、これにより、（Ｎ＋１）段目のキューに基づき輻輳通知を行うか否かが判定される。
【００７４】
以上で説明した第３実施例のように、Ｎ段目のキューと（Ｎ＋１）段目のキューとで、物理的にバッファメモリが分かれた構成であっても、第１，２実施例における共有バッファ方式と同様に、Ｎ段目のキューの状態を反映して、（Ｎ＋１）段目における輻輳通知判定を実現することができる。
【００７５】
なお、本実施例では、複数のパケット中継装置において個別バッファ方式が採用されている例を説明した。しかし、個別バッファ方式は、１つのパケット中継装置において採用されてもよい。この場合には、図１２に示した各構成が、すべて、１つのパケット中継装置に備えられる。
【００７６】
Ｄ．第４実施例：
上述した各実施例では、接続端子１６０に接続された管理装置２０によって、輻輳通知判定部１２０の動作に関する設定や、第１輻輳制御テーブル１２４および第２輻輳制御テーブル１２６内の制御情報の設定を行うことが可能である。そこで、最後に、これらの設定を行うためのコマンドの具体例を示す。
【００７７】
図１３は、輻輳通知判定部１２０の動作に関する設定を行うコマンドを示す説明図である。図１３には、基準輻輳通知確率STD_CPや、重み係数S、輻輳通知確率重みα、輻輳通知閾値重みβ、輻輳クラスの数、各輻輳クラスの閾値、を設定するコマンドを示した。輻輳通知判定部１２０は、管理装置２０からこれらのコマンドを受信すると、受信したコマンドに応じて、各制御情報の設定を行う。また、図１３に示すように、これらの制御情報を表示するためのコマンドや、クリアするためのコマンドも用意されている。
【００７８】
図１４は、第１輻輳制御テーブル１２４および第２輻輳制御テーブル１２６の設定を行うためのコマンドを示す説明図である。図１４には、Ｎ段目のキューの数や、（Ｎ＋１）段目のキューの最大輻輳通知閾値MAX_CN_TH(N+1)など、図５や図６に示した各制御情報を設定するためのコマンドを示した。輻輳通知判定部１２０は、管理装置２０からこれらのコマンドを受信すると、受信したコマンドに応じて、第１輻輳制御テーブル１２４や第２輻輳制御テーブル１２６内の各制御情報の設定を行う。また、図１４に示すように、これらの制御情報を表示するためのコマンドや、クリアするためのコマンドも用意されている。
【００７９】
以上で説明したように、輻輳通知判定部１２０の動作に関する設定や、第１輻輳制御テーブル１２４および第２輻輳制御テーブル１２６内の各値を、接続端子１６０に接続された管理装置２０によって任意に設定可能とすれば、パケット中継装置１００に接続された端末の数や通信量、ネットワークの状態、パケット中継装置１００の使用状況等に応じて、きめ細かい輻輳制御を実現することが可能となる。
【００８０】
Ｅ．変形例：
以上、本発明のいくつかの実施例について説明したが、本発明はこれらの実施例に限定されず、その趣旨を逸脱しない範囲で種々の構成を採ることができる。例えば、ソフトウェアによって実現した機能は、ハードウェアによって実現するものとしてもよく、逆に、ハードウェアで実現した機能をソフトウェアによって実現してもよい。そのほか、以下のような変形が可能である。
【００８１】
・変形例１：
上述した各実施例では、Ｎ段目のキューや（Ｎ＋１）段目のキューに蓄積されるパケットを、パケット数で管理している。つまり、第１輻輳制御テーブル１２４や第２輻輳制御テーブル１２６に格納されている各値は、それぞれ、パケットの数を表している。これに対して、各キューの管理は、通信量（例えば、バイト数）によって行うこととしてもよい。
【００８２】
・変形例２：
上述した各実施例では、Ｎ段目のキューと（Ｎ＋１）段目のキューとの２段のキューを有する構成について説明したが、本発明は、３段以上のキューを有する構成に対しても同様に適用することができる。具体的には、各段のキューにおけるパケットの輻輳通知判定において、輻輳通知判定部１２０は、前段以前のキューの制御情報とその段のキューの制御情報とに基づいて、輻輳通知判定を行う。例えば、Ｎ段目のキューを管理するための第１輻輳制御テーブル１２４が複数種類あり、（Ｎ＋１）段目キューを管理するための第２輻輳制御テーブル１２６がそれぞれの第１輻輳制御テーブル１２４に対して１つずつ用意されているとすると、更に、これらの第２輻輳制御テーブル１２６をまとめて（Ｎ＋２）段目のキューとして管理するための第３の輻輳制御テーブルを用意することができる。この場合、（Ｎ＋１）段目のキューでは、上述した第１輻輳制御処理のように、単純に、（Ｎ＋１）段目のキュー長と所定の閾値とを対比するだけの輻輳判定処理を行うこととしてもよいし、上述した第２輻輳制御処理のように、前段のキューの状態を反映させた輻輳判定処理を行ってもよい。
【００８３】
・変形例３：
上記第１実施例では、パケット中継装置１００が受信したパケットがＮ段目の複数のキューのうちのどのキューに属するのかを、輻輳通知判定部１２０が判定している。しかし、この判定は、パケット中継装置１００とは別の他の装置が行なうこととしてもよい。また、輻輳通知判定部１２０とは異なる機能ブロックあるいは回路が行うこととしてもよい。
【００８４】
・変形例４：
上記第１実施例における輻輳通知確率CPを求めるための式や、輻輳通知確率重みα、輻輳通知閾値重みβを求めるための式は、一例であり、パラメータとしてＮ段目のキューにおける制御情報を含んでいれば、他の式であってもよい。また、輻輳通知確率CPを求めるための式や、輻輳通知確率重みα、輻輳通知閾値重みβを求めるための式、これらの式に含まれる定数、第２実施例における輻輳クラス毎に設定される輻輳通知閾値は、管理装置２０を介して管理ユーザからの指示によって変更可能としてもよく、また、予め調整された複数の選択肢の中から選択可能としてもよい。こうすれば、ユーザ数や通信量の変化に応じて、パケットの輻輳通知判定の方式を適宜調整することが可能となる。
【００８５】
・変形例５：
上記実施例では、接続端子１６０に管理装置２０を接続し、この管理装置２０から種々の設定を行うこととした。これに対して、パケット中継装置１００に対して、直接、ディスプレイ等の表示装置やキーボード等の入力装置を接続し、これらを用いて設定を行うこととしてもよい。もちろん、パケット中継装置１００自体が表示装置や入力装置を備えていてもよい。
【符号の説明】
【００８６】
１０…端末
２０…管理装置
３０…ネットワーク回線
１００，１００Ａ，１００Ｂ，１００Ｃ…パケット中継装置
１０４…インタフェース部
１１０…制御ユニット
１１１…調停装置
１２０，１２０Ａ，１２０Ｂ，１２０Ｃ…輻輳通知判定部
１２２，１２２Ａ，１２２Ｂ，１２２Ｃ…バッファメモリ
１２４，１２４Ａ，１２４Ｂ…第１輻輳制御テーブル
１２６，１２６Ｃ…第２輻輳制御テーブル
１２６ｂ…第２輻輳制御テーブル
１３０，１３０Ａ，１３０Ｂ，１３０Ｃ…輻輳通知処理部
１３２…輻輳通知パケット生成部
１３４…輻輳通知パケット送信部
１４０，１４０Ａ，１４０Ｂ，１４０Ｃ…メモリユニット
１５０…インタフェース部
１５１…物理ポート
１６０…接続端子
【図１】
0005498889.tif 000002
【図２】
0005498889.tif 000003
【図３】
0005498889.tif 000004
【図４】
0005498889.tif 000005
【図５】
0005498889.tif 000006
【図６】
0005498889.tif 000007
【図７】
0005498889.tif 000008
【図８】
0005498889.tif 000009
【図９】
0005498889.tif 000010
【図１０】
0005498889.tif 000011
【図１１】
0005498889.tif 000012
【図１２】
0005498889.tif 000013
【図１３】
0005498889.tif 000014
【図１４】
0005498889.tif 000015