(57)【特許請求の範囲】
【請求項１】
パケットの入出力のために用意され、それぞれ異なったノードとリンクした複数のポートと、
これらのポートから入力されたパケットに記された情報を基にして、そのパケットが宛先に送られる際に優先的に選択されるポートとしての転送先ポートと、前記リンクとの関係で転送が可能なポートとしての転送可能ポートとに関する情報を検索するポート情報検索手段と、
前記複数のポートから入力されたパケットをそれぞれのポートから送出するまでの間、一時的に格納するこれら複数のポートの送出側にそれぞれ用意されたパケット格納バッファと、
前記転送可能ポートの中でパケットの送出について所定の負荷よりも軽くなっているポートが存在するか否かを対応するパケット格納バッファの使用量から判別する転送可能ポート負荷状態判別手段と、
この転送可能ポート負荷状態判別手段が転送可能ポートの中でパケットの送出について所定の負荷よりも軽くなっているポートが存在することを判別したとき、このポートにそのパケットを振り分けて送出するパケット送出手段
とを具備することを特徴とするパケット振分装置。
【請求項２】
パケットの入出力のために用意され、それぞれ異なったノードとリンクした複数のポートと、
これらのポートから入力されたパケットに記された情報を基にして、そのパケットが宛先に送られる際に優先的に選択されるポートとしての転送先ポートと、前記リンクとの関係で転送が可能なポートとしての転送可能ポートとに関する情報を検索するポート情報検索手段と、
前記複数のポートから入力されたパケットをそれぞれのポートから送出するまでの間、一時的に格納するこれら複数のポートの送出側にそれぞれ用意されたパケット格納バッファと、
前記転送可能ポートの中でパケットの送出について所定の負荷よりも軽くなっているポートが存在するか否かを対応するパケット格納バッファの使用量から判別する転送可能ポート負荷状態判別手段と、
この転送可能ポート負荷状態判別手段が転送可能ポートの中でパケットの送出について所定の負荷よりも軽くなっているポートが存在することを判別したとき、このポートにそのパケットを振り分けて送出し、存在しないと判別したときには、前記転送先ポートにそのパケットを振り分けて送出するパケット送出手段
とを具備することを特徴とするパケット振分装置。
【請求項３】
前記パケット送出手段は、前記転送可能ポート負荷状態判別手段が転送可能ポートの中でパケットの送出について所定の負荷よりも軽くなっているポートが複数存在することを判別したとき、これらの転送可能ポートの総数で割った確率でそれぞれの転送可能ポートに送出するパケットを振り分ける振分手段を具備することを特徴とする請求項１または請求項２記載のパケット振分装置。
【請求項４】
前記パケット送出手段は、前記転送可能ポート負荷状態判別手段が転送可能ポートの中でパケットの送出について所定の負荷よりも軽くなっているポートが複数存在することを判別したとき、これらの転送可能ポートの負荷を許容する割合を基にしてそれぞれの転送可能ポートにパケットを振り分ける率を演算する演算手段と、この演算手段の演算結果に応じてそれぞれの転送可能ポートに送出するパケットを振り分ける振分手段とを具備することを特徴とする請求項１または請求項２記載のパケット振分装置。
【請求項５】
前記パケット格納バッファは、低優先バッファと、これよりも優先的に読み出される高優先バッファを備えていることを特徴とする請求項１または請求項２記載のパケット振分装置。
【請求項６】
コンピュータに、
パケットの入出力のために用意され、それぞれ異なったノードとリンクした複数のポートのいずれかから入力されたパケットに記された情報から、そのパケットが宛先に送られる際に優先的に選択されるポートとしての転送先ポートと、前記リンクとの関係で転送が可能なポートとしての転送可能ポートとに関する情報を検索するポート情報検索手順と、
このポート情報検索手順で情報を検索したときに前記複数のポートから入力されたパケットをそれぞれのポートから送出するまでの間、一時的に格納するこれら複数のポートの送出側にそれぞれ用意されたパケット格納バッファの使用量をチェックして、前記転送可能ポートの中でパケットの送出について所定の負荷よりも軽くなっているポートが存在するか否かを判別する転送可能ポート負荷状態判別手順と、
この転送可能ポート負荷状態判別手順で転送可能ポートの中でパケットの送出について所定の負荷よりも軽くなっているポートが存在することを判別したとき、このポートにそのパケットを振り分けて送出するパケット送出手順
とを実行させるためのパケット振分プログラム。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明はパケットの振り分けられる経路を決めるためのパケット振分装置およびパケット振分プログラムに係わり、特に通信リンクの有効活用を可能にするパケット振分装置およびパケット振分プログラムに関する。
【０００２】
【従来の技術】
インターネット等のネットワークでは、送信先が送り出したパケットはパケット転送装置を順次経由していくことで、目的とする受信先に到達する。パケット転送装置は、一般にはルータ、スイッチあるいはハブと呼ばれているものである。パケットの送られる経路を選択する手法は、ルーティングと呼ばれている。
【０００３】
パケット転送装置は、ネットワーク内の各ノードが定期的に交換する情報や、必要とするホップ数、転送時間、ルートの途中の障害の有無等の情報を参照して、個々のノードが最短パスあるいは最小コストとなるようなルートを１つ選択するようになっている。
【０００４】
図１１は、あるネットワークサービス提供者のネットワークとこれに接続された第１〜第４のネットワークを一例として示したものである。ネットワークサービス提供者のネットワーク１００には、第１〜第４のネットワーク１０１〜１０４が接続されているものとする。ここで第１および第３のネットワーク１０１、１０３は第１のルータ１１１に、また第２および第４のネットワーク１０２、１４は第２のルータ１１２に接続されている。第１のルータ１１１と第２のルータ１１２は、リンク１１４によって直接接続可能であり、リンク１１５、１１６を用いて第３のルータ１１３を経由して接続されることも可能である。
【０００５】
今、第１のネットワーク１０１と第２のネットワーク１０２がネットワークサービス提供者のネットワーク１００を通じて接続されるものとする。ホップ数を基準にしてルーティングが決定されたとすると、第１のルータ１１１と第２のルータ１１２を直接結ぶリンク１１４を利用したルートが設定されることになる。
【０００６】
このように第１のネットワーク１０１と第２のネットワーク１０２の間のルーティングを行うと、その後に、ノードの故障等のネットワークの障害が発生したり、ネットワークの構成が変化したり、あるいはネットワークの運用者が自ら設定を変更する作業を行わない限り、ルーティングが変更されることはない。したがって、仮に第１および第２のネットワーク１０１、１０２のユーザＡが、リンク１１４を専有する契約をネットワーク１００のネットワークサービス提供者と行っていたとすると、他のユーザＢはこのリンク１１４を使用することができない。ユーザＡがリンク１１４を１００％にはるかに満たない負荷で使用している場合においても同様である。
【０００７】
すなわち、他のユーザＢが仮に第３のネットワーク１０３と第４のネットワーク１０４の間に通信リンク（以下、単にリンクという。）をひく計画を持ったとしても、この例では第１のルータ１１１と第３のルータ１１３を結ぶリンク１１５および第２のルータ１１２と第３のルータ１１３を結ぶリンク１１６のみが設定可能となる。したがって、リンク１１４が第１および第２のネットワーク１０１、１０２によって利用されていない場合であっても、これを使用することができない。これではネットワークの効率的な運用ができない。
【０００８】
以上説明したように、１つの経路のみをそれぞれのユーザが選択してこれに対してパケットの送出を行う従来の手法は、ネットワーク全体の効率的な運用を妨げることになる。また、図１１に示した例ではリンク１１４が１００％以下の負荷で運用される場合の問題を指摘したが、特定のノードにトラヒックが集中するといった問題も発生する。
【０００９】
そこで、ネットワーク全体で負荷分散を行うといった考えが提案されるに至っている。特開平１１−２３９１８１号公報に開示された提案では、ネットワーク内で最大負荷を有するノードについてその負荷を軽減させるために、複数の経路にトラヒックを分散させるようにしている。この提案では、ネットワークを利用するユーザまたはトラヒックはすべて公平であることを前提としている。そして、不公平が生じる場合には複数のリンクを計算された比で振り分けるようにしている。
【００１０】
【発明が解決しようとする課題】
この提案では複数のリンクに対する振り分けの比率が固定されている。したがって、あるリンクが特定のユーザあるいは特定のトラヒックに対して専用的あるいは優先的に割り当てられているような場合には、そのリンクがたまたま利用されないような状況が発生すると、ネットワークの有効利用という観点から問題が発生する。
【００１１】
そこで本発明の目的は、リンクが特定のユーザあるいは特定のトラヒックに対して優先的に割り当てられる状況で、そのリンクが空いたような場合にこれを有効に活用できるパケット振分装置およびパケット振分プログラムを提供することにある。
【００１２】
【課題を解決するための手段】
請求項１記載の発明では、（イ）パケットの入出力のために用意され、それぞれ異なったノードとリンクした複数のポートと、（ロ）これらのポートから入力されたパケットに記された情報を基にして、そのパケットが宛先に送られる際に優先的に選択されるポートとしての転送先ポートと、リンクとの関係で転送が可能なポートとしての転送可能ポートとに関する情報を検索するポート情報検索手段と、（ハ）前記した複数のポートから入力されたパケットをそれぞれのポートから送出するまでの間、一時的に格納するこれら複数のポートの送出側にそれぞれ用意されたパケット格納バッファと、（ニ）転送可能ポートの中でパケットの送出について所定の負荷よりも軽くなっているポートが存在するか否かを対応するパケット格納バッファの使用量から判別する転送可能ポート負荷状態判別手段と、（ホ）この転送可能ポート負荷状態判別手段が転送可能ポートの中でパケットの送出について所定の負荷よりも軽くなっているポートが存在することを判別したとき、このポートにそのパケットを振り分けて送出するパケット送出手段とをパケット振分装置に具備させる。
【００１３】
すなわち請求項１記載の発明では、ポートからパケットが入力されたときに、パケットに記された情報から、そのパケットが宛先に送られる際に優先的に選択されるポートとしての転送先ポートと、リンクとの関係で転送が可能なポートとしての転送可能ポートとに関する情報を検索するようにしている。そして、複数のポートの送出側にそれぞれ用意されたパケット格納バッファの使用量をチェックして転送可能ポートの中でパケットの送出について所定の負荷よりも軽くなっているポートが存在する場合にはこのポートにそのパケットを振り分けて送出することで、その時々のポートの負荷に対応したパケットの送出制御を可能にし、リンクが空いたような場合にこれを有効に活用できるようにしている。
【００１４】
請求項２記載の発明では、（イ）パケットの入出力のために用意され、それぞれ異なったノードとリンクした複数のポートと、（ロ）これらのポートから入力されたパケットに記された情報を基にして、そのパケットが宛先に送られる際に優先的に選択されるポートとしての転送先ポートと、リンクとの関係で転送が可能なポートとしての転送可能ポートとに関する情報を検索するポート情報検索手段と、（ハ）前記した複数のポートから入力されたパケットをそれぞれのポートから送出するまでの間、一時的に格納するこれら複数のポートの送出側にそれぞれ用意されたパケット格納バッファと、（ニ）転送可能ポートの中でパケットの送出について所定の負荷よりも軽くなっているポートが存在するか否かを対応するパケット格納バッファの使用量から判別する転送可能ポート負荷状態判別手段と、（ホ）この転送可能ポート負荷状態判別手段が転送可能ポートの中でパケットの送出について所定の負荷よりも軽くなっているポートが存在することを判別したとき、このポートにそのパケットを振り分けて送出し、存在しないと判別したときには、転送先ポートにそのパケットを振り分けて送出するパケット送出手段とをパケット振分装置に具備させる。
【００１５】
すなわち請求項２記載の発明では、ポートからパケットが入力されたときに、パケットに記された情報から、そのパケットが宛先に送られる際に優先的に選択されるポートとしての転送先ポートと、リンクとの関係で転送が可能なポートとしての転送可能ポートとに関する情報を検索するようにしている。そして、複数のポートの送出側にそれぞれ用意されたパケット格納バッファの使用量をチェックして転送可能ポートの中でパケットの送出について所定の負荷よりも軽くなっているポートが存在する場合にはこのポートにそのパケットを振り分けて送出することで、その時々のポートの負荷に対応したパケットの送出制御を可能にし、リンクが空いたような場合にこれを有効に活用できるようにしている。このような無負荷等の所定の負荷よりも軽くなっている転送可能ポートが存在しない場合には、そのパケットに優先的に選択されるポートとしての転送先ポートからパケットが送出されることで、他のリンクの利用者に与える影響を少なくしている。
【００１６】
請求項３記載の発明では、請求項１または請求項２記載のパケット振分装置で、パケット送出手段は、転送可能ポート負荷状態判別手段が転送可能ポートの中でパケットの送出について所定の負荷よりも軽くなっているポートが複数存在することを判別したとき、これらの転送可能ポートの総数で割った確率でそれぞれの転送可能ポートに送出するパケットを振り分ける振分手段を具備することを特徴としている。
【００１７】
すなわち請求項３記載の発明では、無負荷等の所定の負荷よりも軽くなっている転送可能ポートが複数存在する場合には、そのたびにパケットをこれらのポートに振り分けることにしており、その振り分けの確率（比率）を転送可能ポートの総数で割った確率としている。所定の負荷よりも軽くなっているポートが時間的に変動する場合には、パケット送出のそれぞれの時点に合った確率で分配するようにしてもよい。
【００１８】
請求項４記載の発明では、請求項１または請求項２記載のパケット振分装置で、（イ）パケット送出手段は、転送可能ポート負荷状態判別手段が転送可能ポートの中でパケットの送出について所定の負荷よりも軽くなっているポートが複数存在することを判別したとき、これらの転送可能ポートの負荷を許容する割合を基にしてそれぞれの転送可能ポートにパケットを振り分ける率を演算する演算手段と、（ロ）この演算手段の演算結果に応じてそれぞれの転送可能ポートに送出するパケットを振り分ける振分手段とを具備することを特徴としている。
【００１９】
すなわち請求項４記載の発明では、無負荷等の所定の負荷よりも軽くなっている転送可能ポートが複数存在する場合には、そのたびにパケットをこれらのポートに振り分けることにしており、その振り分けの確率（比率）を、転送可能ポートの負荷を許容する割合を基にして演算手段で演算することにしている。無負荷等の所定の負荷よりも軽くなっている転送可能ポートが時間的に変動する場合には、パケット送出のそれぞれの時点に演算するようにしてもよい。
【００２０】
請求項５記載の発明では、請求項１または請求項２記載のパケット振分装置で、パケット格納バッファは、低優先バッファと、これよりも優先的に読み出される高優先バッファを備えていることを特徴としている。
【００２１】
すなわち請求項５記載の発明では、パケット格納バッファを、低優先バッファと、これよりも優先的に読み出される高優先バッファとの２種類とし、たとえば低優先バッファに振り分けるようにすることで、これに対応するポートを優先的に使用するユーザへの影響を少なくすることができる。
【００２２】
請求項６記載の発明のパケット振分プログラムは、コンピュータに、（イ）パケットの入出力のために用意され、それぞれ異なったノードとリンクした複数のポートのいずれかから入力されたパケットに記された情報から、そのパケットが宛先に送られる際に優先的に選択されるポートとしての転送先ポートと、リンクとの関係で転送が可能なポートとしての転送可能ポートとに関する情報を検索するポート情報検索手順と、（ロ）このポート情報検索手順で情報を検索したときに前記した複数のポートから入力されたパケットをそれぞれのポートから送出するまでの間、一時的に格納するこれら複数のポートの送出側にそれぞれ用意されたパケット格納バッファの使用量をチェックして、転送可能ポートの中でパケットの送出について所定の負荷よりも軽くなっているポートが存在するか否かを判別する転送可能ポート負荷状態判別手順と、（ハ）この転送可能ポート負荷状態判別手順で転送可能ポートの中でパケットの送出について所定の負荷よりも軽くなっているポートが存在することを判別したとき、このポートにそのパケットを振り分けて送出するパケット送出手順とを実行させるようにしている。
【００２３】
すなわち請求項６記載の発明では、請求項１記載の発明とほぼ同様の制御をプログラムを実行することで可能にしている。
【００２４】
【発明の実施の形態】
【００２５】
【実施例】
以下実施例につき本発明を詳細に説明する。
【００２６】
図１は本発明の一実施例におけるパケット振分装置としての第１のルータの構成を表わしたものである。第１のルータ１１１は、図示しない第１〜第Ｎのノードに対応して接続される第１〜第ＮのポートＰ１〜ＰＮを備えている。第１〜第ＮのポートＰ１〜ＰＮは、それぞれ対応して設けられた第１〜第Ｎの出力インタフェース回路（ＩＦ）２０２１〜２０２Ｎおよび第１〜第Ｎの入力インタフェース回路（ＩＦ）２０３１〜２０３Ｎと接続されている。第１〜第Ｎの入力インタフェース回路２０３１〜２０３Ｎは、これらに共通の入力バッファ２０４に接続されている。入力インタフェース回路２０３１〜２０３Ｎは、第１〜第ＮのポートＰ１〜ＰＮのうちの対応するものから入力される電気信号や光信号等の物理的な信号を、ＩＰ（Ｉｎｔｅｒｎｅｔ  Ｐｒｏｔｏｃｏｌ）パケットデータやフレームデータ等（以下、単にパケットデータと称する。）の論理的な信号に変換して入力バッファ２０４に転送するための回路である。
【００２７】
入力バッファ２０４は、転送先のポートを決定する間、パケットデータを一時的に格納するための回路である。入力バッファ２０４は転送先検索部２０５および振分回路２０６と接続されている。転送先検索部２０５は、パケットに含まれるフィールドからユーザ識別情報および転送先ポートを検索して、入力バッファ２０４に対して転送指示を行う回路である。転送先検索部２０５には、ユーザ識別テーブル２０７と転送先ポートテーブル２０８が接続されている。ここでユーザ識別テーブル２０７は、パケットに含まれるフィールドからユーザを一意に識別可能なユーザ識別子を得るためのテーブルである。また、転送先ポートテーブル２０８は、ユーザ識別情報と宛先アドレスに対応する転送先ポートおよび、ポートが利用されていないときに転送可能であるポートとしての転送可能ポートを保持しているテーブルである。
【００２８】
振分回路２０６は、転送先ポートが決定した後のパケットデータと転送先ポート番号を入力バッファ２０４から受け取るようになっている。振分回路２０６の出力側には、第１〜第Ｎの出力バッファ部２０９１〜２０９Ｎと、これらに対応して設けられた第１〜第Ｎの使用量検索部２１１１〜２１１Ｎと、これら第１〜第Ｎの使用量検索部２１１１〜２１１Ｎの出力側に共通して接続された負荷検出設定テーブル２１２とが設けられている。第１〜第Ｎの出力バッファ部２０９１〜２０９Ｎに格納されたパケットは、第１〜第Ｎの出力インタフェース回路２０２１〜２０２Ｎのうちの対応するものに出力されるようになっている。
【００２９】
第１〜第Ｎの使用量検索部２１１１〜２１１Ｎは、第１〜第Ｎの出力バッファ部２０９１〜２０９Ｎのそれぞれについての使用量（パケットデータ量）を読み取って、その値が負荷検出設定テーブル２１２に設定されている値を越えているかどうかの情報を振分回路２０６に通知するようになっている。第１〜第Ｎの出力インタフェース回路２０２１〜２０２Ｎは、パケットデータ等の論理的な信号を、電気信号や光信号等の物理的な信号に変換して出力するようになっている。
【００３０】
図２は、図１に示したユーザ識別テーブルの設定内容の一例を示したものである。ユーザ識別テーブル２０７は前記したようにユーザを一意に識別可能なユーザ識別子を得るためのものである。ユーザを識別するために使用する情報は、可能であればパケットデータのどのフィールドを利用してもよい。ここでは、インターネットのホスト間で通信をするときに利用されるプロトコルとしてのＴＣＰ（ｔｒａｎｓｍｉｓｓｉｏｎ  ｃｏｎｔｒｏｌ  ｐｒｏｔｏｃｏｌ）での１コネクションを識別するために必要な送信元アドレスと、送信元ポート番号、宛先アドレス、宛先ポート番号を例に挙げている。ユーザ識別テーブル２０７中に「ａｎｙ」とあるのは、そのフィールドがどのような値でもユーザ識別子が特定されることを意味する。したがって、この例のユーザ識別テーブル２０７の場合には送信元アドレスのみによってユーザ識別子が特定されることになる。
【００３１】
図３は、全ユーザの転送先ポートテーブルの内容を示したものである。この転送先ポートテーブル２０８は図１に示した転送先検索部２０５がユーザ識別子と宛先アドレスを基にして、転送先ポートと転送可能ポートを得るための情報を保持するようになっている。ユーザ識別子は、図２で説明したユーザ識別テーブル２０７から得ることができる。宛先アドレスは、転送パケットデータの最終到達ノードを示す情報である。インターネット関連技術の標準化団体であるＩＥＴＦ（Ｉｎｔｅｒｎｅｔ  Ｅｎｇｉｎｅｅｒｉｎｇ  Ｔａｓｋ  Ｆｏｒｃｅ）が取りまとめているＲＦＣ（ｒｅｑｕｅｓｔ  ｆｏｒ  ｃｏｍｍｅｎｔｓ）７９１に規定されたインターネットプロトコルの場合には、これは「ＤＥＳＴＩＮＡＴＩＯＮ  ＡＤＤＲＥＳＳ」フィールドに相当している。
【００３２】
図３に示した転送先ポートテーブル２０８における「転送先ポート」の欄には、従来と同様にインターネットで利用されているルーティングプロトコルで決定された１つの経路が示されている。本実施例とは異なる従来のルータでは、この「転送先ポート」の欄に示された情報のみに従って、パケットの転送を行っている。本実施例の転送先ポートテーブル２０８には、この「転送先ポート」の欄の他に、「第１の転送可能ポート」〜「第ｔの転送可能ポート」の欄が設けられている。これらの「転送可能ポート」は、優先的に使用することができるトラヒックがそれらのポートを使用しているときには転送に使用することはできない。しかしながら、これらのトラヒックが使用していない場合には転送に使用可能である。転送先ポートテーブル２０８はこのような使用可能なポートについてもリストアップしていることになる。
【００３３】
図４は、図３に示した転送先ポートテーブルからユーザ識別子「ＵＩＤ−１」の箇所を抜き出して示したものである。図３に示すように「宛先アドレス」が「１０．１．ｘ．ｘ」の場合には、ユーザ識別子が「ＵＩＤ−１」として識別される。「宛先アドレス」が「１０．１．ｘ．ｘ」のパケットは、図４に示すようにポート「Ｐ２」を通常の転送先のポートとして使用することができる。また、ポート「Ｐ１」が使用されていないときには、このポート「Ｐ１」にも転送可能である旨の設定が行われている。この図の転送先ポートテーブル２０８で「ｘ」は任意の数値を表わしている。したがって、たとえば「１０．２．ｘ．ｘ」は、アドレス「１０．２．」から始まるすべてのアドレスが対応することを示している。
【００３４】
一方、図５は図１に示した負荷検出設定テーブルの構成の一例を示したものである。負荷検出設定テーブル２１２には、第１〜第Ｎの出力バッファ部２０９１〜２０９Ｎのそれぞれについて使用量の閾値が設定されている。図５に示した例では、たとえば第１の出力バッファ部２０９１について閾値は「１００」となっている。
【００３５】
以上のような構成のパケット振分装置としての第１のルータ１１１の動作を次に説明する。なお、本実施例でも図１１に示したと同一のネットワークの構成をとっているものとする。ここで、第２および第３のルータ１１２、１１３は第１のルータ１１１と基本的に同一の構成となっているものとする。
【００３６】
図１１に示すように、第１のルータ１１１の前記した第１のポートＰ１はリンク１１４と接続され、第２のポートＰ２はリンク１１５と接続されているものとする。また第３のポートＰ３はリンク２２１と接続され、第４のポートＰ４はリンク２２２と接続されているものとする。第１のネットワーク１０１と第２のネットワーク１０２に属するユーザのユーザ識別子を「ＵＩＤ−２」とし、第３および第４のネットワーク１０３、１０４に属するユーザのユーザ識別子を「ＵＩＤ−１」とする。
【００３７】
この場合に、第１のネットワーク１０１のユーザは図３に示すように「１０．１１」から始まるアドレスを持ち、第２のネットワーク１０２のユーザは「１０．１０」から始まるアドレスを持つものとする。また、第３のネットワーク１０３のユーザは「１０．２」から始まるアドレスを持ち、第４のネットワーク１０４のユーザは「１０．１」から始まるアドレスを持つものとする。
【００３８】
図３における宛先アドレス「１０．１．ｘ．ｘ」についての設定を見ると、第１のルータ１１１は、通常の場合にユーザ識別子「ＵＩＤ−１」を使用して第２のポートＰ２に転送することができる。また、第１のポートＰ１がユーザ識別子「ＵＩＤ−２」のユーザによって使用されていないときにはユーザ識別子「ＵＩＤ−１」のユーザも第１のポートＰ１を使用することができることを示している。ユーザ識別子「ＵＩＤ−１」のユーザと識別されるのは、「１０．２」から始まるアドレスを持つユーザであり、図２のユーザ識別テーブル２０７の２行目に設定例が示されている。
【００３９】
一例として、図１１における第３のネットワーク１０３のユーザが第１のルータ１１１にパケットを転送した場合を例に挙げてその動作を具体的に説明する。第３のネットワーク１０３のユーザが第４のネットワーク１０４のユーザにパケットを転送したものとする。第３のネットワーク１０３のユーザのアドレスは「１０．２」から始まるものとしている。したがって、送信元アドレスはたとえば「１０．２．１００．１００」という値となる。宛先は第４のネットワーク１０４のユーザであるので、これはたとえば「１０．１．５０．５０」という値となる。
【００４０】
第３のネットワーク１０３から送信されたパケットは、第１のルータ１１１の第４のポートＰ４に到着する。第４のポートＰ４に到着したデータは、第４の入力インタフェース回路２０３４において、物理的な信号から論理的なパケットデータからなる信号に変換される。変換後のデータは入力バッファ２０４に転送される。入力バッファ２０４は、転送先検索部２０５が必要とするパケットデータのフィールドをこの転送先検索部２０５に渡す。この例では送信元アドレスを「１０．２．１００．１００」とし、宛先アドレスを「１０．１．５０．５０」とした情報部分を転送先検索部２０５に渡すことになる。入力バッファ２０４は転送先検索部２０５の検索処理が終了するまでパケットデータを保持して待つことになる。
【００４１】
転送先検索部２０５は、入力バッファ２０４から通知された送信アドレス、送信元ポート番号、宛先アドレスおよび宛先ポート番号に一致する設定を検索する。送信元ポート番号と宛先ポート番号についての検索は、図２のユーザ識別テーブル２０７に示すようにどのような値でも一致するような設定となっている。そこでこの検索動作の説明は不要であり、省略する。送信元アドレスは「１０．２．１００．１００」なので、図２に示したユーザ識別テーブル２０７の２行目の設定に一致する。そこでユーザ識別子「ＵＩＤ−１」のユーザと識別される。
【００４２】
次に、このユーザ識別子「ＵＩＤ−１」と宛先アドレスを「１０．１．５０．５０」に一致する設定を図１および図４に示した転送先ポートテーブル２０８から検索する。この検索の結果、宛先アドレスが「１０．１．ｘ．ｘ」と設定してある図４に示した転送先ポートテーブル２０８の１行目の内容に一致する。したがって、転送先ポートは第２のポートＰ２であり、転送可能ポートは第１のポートＰ１となる。転送先検索部２０５はこのようにして最後に得られた情報を入力バッファ２０４に渡すことになる。パケットデータを保持して待機していた入力バッファ２０４は、このパケットデータと検索結果による転送先ポートとしての第２のポートＰ２および転送可能ポートとしての第１のポートＰ１を示す情報を振分回路２０６に転送する。
【００４３】
図６は、図１に示した振分回路の処理の流れを表わしたものである。図１に示した第１のルータ１１１は図示しないがＣＰＵ（中央処理装置）を備えており、同じく図示しないＲＯＭ（リード・オンリ・メモリ）等の記録媒体に格納されたプログラムを実行することで振分回路２０６等の所定の制御を行うようになっている。
【００４４】
振分回路２０６は、まず入力バッファ２０４からパケットデータと転送先ポートおよび第１〜第ｔの転送可能ポートに関する情報を受信する（ステップＳ２４１）。上記した例ではパケットデータと検索結果による転送先ポートとしての第２のポートＰ２および転送可能ポートとしての第１のポートＰ１を示す情報を振分回路２０６が受信することになる。
【００４５】
次に、振分回路２０６は第１〜第ｔの転送可能ポートの中で、第１〜第Ｎの使用量検索部２１１１〜２１１Ｎから通知される各ポートの負荷の有無情報が「負荷無し」になっているポートを選択のためにサーチする（ステップＳ２４２）。次のステップＳ２４３では、転送先ポートが「負荷無し」となっているかどうかを判別する。「負荷無し」となっている場合には、ステップＳ２４１で受信した転送先ポートを転送先として決定する（ステップＳ２４４）。そして、この決定した転送先ポートに接続されている出力バッファ部２０９（第１〜第Ｎの出力バッファ部２０９１〜２０９Ｎのいずれか）にパケットデータを転送して（ステップＳ２４５）、処理を終了させる（エンド）。
【００４６】
これに対して、ステップＳ２４３で転送先ポートが「負荷無し」となっていなかった場合には（Ｎ）、転送可能ポートの中で「負荷無し」とされたポートがあるかどうかを判別する（ステップＳ２４６）。転送可能ポートがすべて負荷がある場合には（Ｎ）、優先的に割り当てられたポートとしての転送先ポートに負荷があってもこれが転送先として決定される（ステップＳ２４４）。そして、ステップＳ２４５に進んでその転送先ポートに接続されている出力バッファ部２０９にパケットデータを転送することになる。
【００４７】
以上と異なり、転送先ポート自体は「負荷無し」ではなく、かつ「負荷無し」とされた転送可能ポートが存在する場合には（ステップＳ２４６：Ｙ）、これら転送可能なポートとして選択された転送可能ポートの総数でそれぞれ割った確率で、これらの転送可能ポートが選択される（ステップＳ２４７）。このステップＳ２４７の処理が行われた場合には、ステップＳ２４５に進み、該当のバッファにパケットデータを転送することになる。
【００４８】
この実施例では図４に示すように、対象となる転送可能ポートが第１のポートＰ１のみである。したがって、ステップＳ２４６では第１のポートＰ１のみに接続されたバッファにパケットデータが転送されることになる。これに対して転送可能ポートがたとえばｍ個であったような場合には、ステップＳ２４７で毎回、１／ｍずつの確率でこれらの転送可能ポートのうちの１つが選択されることになる。たとえば、「負荷無し」とされた転送可能ポートが２つ存在した場合には、毎回、１／２ずつの確率でこれらが選択されることになる。
【００４９】
発明の第１の変形例
【００５０】
図７は本発明の第１の変形例における第１のルータの構成を表わしたものである。先の実施例の図１と同一部分には同一の符号を付しており、これらの説明を適宜省略する。この変形例の第１のルータ１１１Ａでは、第１〜第Ｎの使用量検索部２１１１〜２１１Ｎの代わりに、第１〜第Ｎの使用量検査部３０１１〜３０１Ｎを配置している。この変形例の第１のルータ１１１Ａでは、先の実施例で負荷検出設定テーブル２１２の設定値とバッファ量の比較だけだったのに対して、加えて、関数を使用して負荷の割合も振り分け回路２０６への通知も行うようにしている。
【００５１】
ところで、今、第１〜第Ｎの使用量検査部３０１１〜３０１Ｎにおける第１〜第Ｎの出力バッファ部２０９１〜２０９Ｎのうちの対応するバッファメモリに保持されているバッファ量を“ｘ”とする。また、このバッファ量“ｘ”によって変化する関数を関数ｆ（ｘ）とする。関数ｆ（ｘ）は第１〜第Ｎの出力バッファ部２０９１〜２０９Ｎの負荷の割合を表わすことになる。先の実施例では図１に示した負荷検出設定テーブル２１２に設定した値を越えるか否かの判別で転送可能ポートを決定して、それぞれ同じ割合で転送可能ポートが選択されるので、負荷の割合によりポートを選択する割合を変えることはできない。
【００５２】
負荷を表わす関数ｆ（ｘ）の一例を示す。第１〜第Ｎの出力バッファ部２０９１〜２０９Ｎのそれぞれに保持することのできるバッファ長の最大値を“Ｍ”とする。このとき、負荷を表わす関数を次の（１）式のように表わすことができる。ここで値“ｘ”は、第１〜第Ｎの出力バッファ部２０９１〜２０９Ｎの対応するものに保持されているパケットデータ量である。
【００５３】
ｘ≦Ｍのときはｆ（ｘ）＝ｘ／Ｍ
ｘ＞Ｍのときはｆ（ｘ）＝１                  ……（１）
【００５４】
次に、ポート選択の確率を負荷の割合によって変化させる例を説明する。第１のポートＰ１の負荷の割合をｆ（ｘ１）とし、第２のポートＰ２の負荷の割合をｆ（ｘ２）とする。更に第３のポートＰ３の負荷の割合をｆ（ｘ３）とする。ｆ′（ｘ）＝１／ｆ（ｘ）であるとする。このとき第１のポートＰ１を選択する確率Ｒ１を次の（２）で計算する。
Ｒ１＝｛ｆ′（ｘ１）／｛ｆ′（ｘ１）＋ｆ′（ｘ２）＋ｆ′（ｘ３）｝……（２）
【００５５】
第２のポートＰ２を選択する確率Ｒ２および第３のポートＰ３を選択する確率Ｒ３は次の（３）式および（４）式のようになる。
Ｒ２＝｛ｆ′（ｘ２）／｛ｆ′（ｘ１）＋ｆ′（ｘ２）＋ｆ′（ｘ３）｝……（３）
Ｒ３＝ｆ（ｘ３）／｛ｆ（ｘ１）＋ｆ（ｘ２）＋ｆ（ｘ３）｝……（４）
【００５６】
ここで符号“ｘ１”は、第１のポートＰ１に対応する第１の出力バッファ部２０９１のバッファ使用量を表わしている。同様に符号“ｘ２”あるいは符号“ｘ３”は、第２のポートＰ２あるいは第３のポートＰ３に対応する第２あるいは第３の出力バッファ部２０９２、２０９３のバッファ使用量を表わしている。
【００５７】
図８はこの変形例における振分回路の処理の流れを表わしたものである。この図８で図６と同一部分には同一の符号を付している。振分回路２０６は、まず入力バッファ２０４からパケットデータと転送先ポートおよび第１〜第ｔの転送可能ポートに関する情報を受信する（ステップＳ２４１）。上記した例ではパケットデータと検索結果による転送先ポートとしての第２のポートＰ２および転送可能ポートとしての第１のポートＰ１を示す情報を振分回路２０６が受信することになる。
【００５８】
次に、振分回路２０６は第１〜第ｔの転送可能ポートの中で、第１〜第Ｎの使用量検査部３０１１〜３０１Ｎから通知される各ポートの負荷の有無情報が「負荷無し」になっているポートを選択のためにサーチする（ステップＳ２４２Ａ）。次のステップＳ２４３では、転送先ポートが「負荷無し」となっているかどうかを判別する。「負荷無し」となっている場合には、ステップＳ２４１で受信した転送先ポートを転送先として決定する（ステップＳ２４４）。そして、この決定した転送先ポートに接続されている出力バッファ部２０９（第１〜第Ｎの出力バッファ部２０９１〜２０９Ｎのいずれか）にパケットデータを転送して（ステップＳ２４５）、処理を終了させる（エンド）。
【００５９】
これに対して、ステップＳ２４３で転送先ポートが「負荷無し」となっていなかった場合には（Ｎ）、転送可能ポートの中で「負荷無し」とされたポートがあるかどうかを判別する（ステップＳ２４６）。転送可能ポートがすべて負荷がある場合には（Ｎ）、優先的に割り当てられたポートとしての転送先ポートに負荷があってもこれが転送先として決定される（ステップＳ２４４）。そして、ステップＳ２４５に進んでその転送先ポートに接続されている出力バッファ部２０９にパケットデータを転送することになる。
【００６０】
以上と異なり、転送先ポート自体は「負荷無し」ではなく、かつ「負荷無し」とされた転送可能ポートが存在する場合には（ステップＳ２４６：Ｙ）、これらすべての転送可能なポートの中から、計算した確率に応じて転送可能なポートを１つずつ選択する（ステップＳ２４７Ａ）。このステップＳ２４７Ａの処理が行われた場合には、ステップＳ２４５に進み、該当のバッファにパケットデータを転送することになる。
【００６１】
ところで、ポートｘの負荷率をｆ（ｘ）とし、負荷率の逆数を次の（５）式で表わす。
ｆ′（ｘ）＝１／ｆ（ｘ）    ……（５）
【００６２】
この場合、ポートｐｉ（ｉ＝１、２、……ｍ）を選択する確率は、次の（６）式のように計算される。
【数１】
0003591492.tif 000002
【００６３】
たとえば第１のポートＰ１を選択する確率は、次の（７）式のようになる。
ｆ′（ｆ１）÷｛ｆ′（ｐ１′）＋ｆ′（ｐ２′）＋……＋ｆ′（ｐｍ′）｝……（７）
【００６４】
発明の第２の変形例
【００６５】
図９は本発明の第２の変形例における第１のルータの構成を表わしたものである。この第２の変形例のルータ１１１Ｂで、図１に示した先の実施例のルータ１１１と同一部分には同一の符号を付しており、これらの説明を適宜省略する。この変形例のルータ１１１Ｂの第１〜第Ｎの出力バッファ部２０９１〜２０９Ｎは、それぞれ高優先バッファＨと低優先バッファＬによって構成されている。高優先バッファＨと低優先バッファＬは同時にパケットを格納可能であるが、両者にパケットが格納されているときには常に高優先バッファＨから先にパケットが取り出されて、第１〜第Ｎの出力インタフェース回路２０２１〜２０２Ｎのうちの対応するものに出力されるようになっている。低優先バッファＬは高優先バッファＨにパケットが存在しないときのみパケットを第１〜第Ｎの出力インタフェース回路２０２１〜２０２Ｎのうちの対応するものに出力する。
【００６６】
第１〜第Ｎの使用量検索部２１１１〜２１１Ｎは、第１〜第Ｎの出力バッファ部２０９１〜２０９Ｎのそれぞれについての高優先バッファＨと低優先バッファＬの使用量（パケットデータ量）を読み取って、その値が負荷検出設定テーブル２１２に設定されている値を越えているかどうかの情報を振分回路２０６に通知するようになっている。第１〜第Ｎの出力インタフェース回路２０２１〜２０２Ｎは、パケットデータ等の論理的な信号を、電気信号や光信号等の物理的な信号に変換して出力するようになっている。
【００６７】
このような第２の変形例のルータ１１１Ｂで、本来転送されるユーザのパケットは、第１〜第Ｎの出力バッファ部２０９１〜２０９Ｎのうちの対応する高優先バッファＨに転送される。これに対して、転送可能なポートとして選択された結果としてのパケットは、第１〜第Ｎの出力バッファ部２０９１〜２０９Ｎのうちの対応する低優先バッファＬに格納される。このように第１〜第Ｎの出力バッファ部２０９１〜２０９Ｎを高優先バッファＨと低優先バッファＬに分けて管理することによって、本来転送されるユーザのパケットに影響を与えずにパケットの効率的な伝送が可能になる。
【００６８】
この第２の変形例の場合には、第１〜第Ｎの使用量検索部２１１１〜２１１Ｎは振分回路２０６に対して、負荷検出設定テーブル２１２に設定された閾値よりも、高優先バッファＨの使用率（ｆｈ（ｘ））が越えているかどうかの情報を通知するようになっている。更に第１〜第Ｎの使用量検索部２１１１〜２１１Ｎは、振分回路２０６に対して、低優先バッファＬの負荷の割合ｆｌ（ｘ）を通知する。
【００６９】
図１０は、この第２変形例における振分回路の処理の流れを表わしたものである。図１０で図６および図８と同一部分には同一の符号を付している。振分回路２０６は、まず入力バッファ２０４からパケットデータと転送先ポートおよび第１〜第ｔの転送可能ポートに関する情報を受信する（ステップＳ２４１）。
【００７０】
次に、振分回路２０６は第１〜第ｔの転送可能ポートの中で、第１〜第Ｎの使用量検索部２１１１〜２１１Ｎから通知される各ポートの高優先バッファＨの負荷の割合が低く「負荷無し」となっているものをサーチする（ステップＳ２４２Ｂ）。次のステップＳ２４３では、転送先ポートが「負荷無し」となっているかどうかを判別する。「負荷無し」となっている場合には、ステップＳ２４１で受信した転送先ポートを転送先として決定する（ステップＳ２４４）。そして、この決定した転送先ポートに接続されている出力バッファ部２０９（第１〜第Ｎの出力バッファ部２０９１〜２０９Ｎのいずれか）にパケットデータを転送して（ステップＳ２４５）、処理を終了させる（エンド）。
【００７１】
これに対して、ステップＳ２４３で転送先ポートが「負荷無し」となっていなかった場合には（Ｎ）、転送可能ポートの中で「負荷無し」とされたポートがあるかどうかを判別する（ステップＳ２４６）。転送可能ポートがすべて負荷がある場合には（Ｎ）、優先的に割り当てられたポートとしての転送先ポートに負荷があってもこれが転送先として決定される（ステップＳ２４４）。そして、ステップＳ２４５に進んでその転送先ポートに接続されている出力バッファ部２０９にパケットデータを転送することになる。
【００７２】
以上と異なり、転送先ポート自体は「負荷無し」ではなく、かつ「負荷無し」とされた転送可能ポートが存在する場合には（ステップＳ２４６：Ｙ）、これらすべての転送可能なポートの中から、それぞれの低優先バッファＬを基にして計算した確率に応じて転送可能なポートを１つずつ選択する（ステップＳ２４７Ｂ）。このステップＳ２４７Ｂの処理が行われた場合には、ステップＳ２４５に進み、該当のバッファにパケットデータを転送することになる。このための数式は、低優先バッファＬを用いる点を除けば第１の変形例で示したものと同一であるので、その説明は省略する。
【００７３】
なお、実施例ではユーザ識別テーブル２０７と転送先ポートテーブル２０８の２種類のテーブルを使用したが、これらを１つのテーブルに合わせたものとし、これに対して検索を行うようにしてもよい。また、表形式のテーブルを用いて本発明を説明したが、リスト構造であってもよい。更に、ＣＡＭ（Ｃｏｎｔｅｎｔｓ  Ａｄｄｒｅｓｓ  Ｍｅｍｏｒｙ）のような連想記憶メモリを用いて同様の検索を行うことも可能である。
【００７４】
なお、本実施例では特に説明しなかったが、優先順位の高いユーザは、たとえばネットワーク管理者に対して、他のユーザよりも高い料金を支払い、帯域を保証されたり、遅延保証を受けるようにすることも可能であり、これらのユーザに対しても本発明を適用することができる。また、これに限らず、何らかのネットワークポリシにしたがって、高い優先順位をつけられたトラヒックすべてを本発明の対象とすることも可能である。
【００７５】
【発明の効果】
以上説明したように請求項１〜請求項６記載の発明によれば、パケットに記された情報から、そのパケットが宛先に送られる際に優先的に選択されるポートとしての転送先ポートと、リンクとの関係で転送が可能なポートとしての転送可能ポートとに関する情報を読み取って、転送可能ポートの負荷がない場合にはそのパケットをこれに振り分けることにしているので、空いているリンクを積極的に利用することで、ネットワーク資源を有効活用することができる。
【００７６】
また、請求項３または請求項４記載の発明では、転送可能ポート負荷状態判別手段が転送可能ポートの中でパケットの送出について所定の負荷よりも軽くなっているポートが複数存在することを判別したとき、これらの転送可能ポートに対してパケットを割り振ることにしたので、特定の１つの転送可能ポートに割り振る場合と比べて負荷が分散される。
【００７７】
更に請求項５記載の発明によれば、パケット格納バッファを、低優先バッファと、これよりも優先的に読み出される高優先バッファとの２種類とし、たとえば低優先バッファに振り分けるようにすることで、これに対応するポートを優先的に使用するユーザへの影響を少なくすることができる。
【図面の簡単な説明】
【図１】本発明の一実施例におけるパケット振分装置としての第１のルータの構成を表わしたブロック図である。
【図２】図１に示したユーザ識別テーブルの設定内容の一例を示した説明図である。
【図３】全ユーザの転送先ポートテーブルの内容を示した説明図である。
【図４】図３に示した転送先ポートテーブルからユーザ識別子「ＵＩＤ−１」の箇所を抜き出して示した説明図である。
【図５】本実施例で図１に示した負荷検出設定テーブルの構成の一例を示した説明図である。
【図６】本実施例で振分回路の処理の流れを表わした流れ図である。
【図７】本発明の第１の変形例における第１のルータの構成を表わしたブロック図である。
【図８】第１の変形例における振分回路の処理の流れを表わした流れ図である。
【図９】発明の第２の変形例における第１のルータの構成を表わしたブロック図である。
【図１０】第２の変形例における振分回路の処理の流れを表わした流れ図である。
【図１１】あるネットワークサービス提供者のネットワークとこれに接続された第１〜第４のネットワークを一例として示したネットワーク構成図である。
【符号の説明】
１１１、１１１Ａ、１１１Ｂ  第１のルータ
２０３  入力インタフェース回路
２０４  入力バッファ
２０５  転送先検索部
２０６  振分回路
２０７  ユーザ識別テーブル
２０８  転送先ポートテーブル
２０９  出力バッファ部
２１２  負荷検出設定テーブル
Ｐ１〜ＰＮ  ポート
Ｈ  高優先バッファ
Ｌ  低優先バッファ
【図１】
0003591492.tif 000003
【図２】
0003591492.tif 000004
【図３】
0003591492.tif 000005
【図４】
0003591492.tif 000006
【図５】
0003591492.tif 000007
【図６】
0003591492.tif 000008
【図７】
0003591492.tif 000009
【図８】
0003591492.tif 000010
【図９】
0003591492.tif 000011
【図１０】
0003591492.tif 000012
【図１１】
0003591492.tif 000013