(57)【特許請求の範囲】
【請求項１】
複数の回線を介して相互に接続された送信装置と受信装置からなるパケット伝送装置において、
入力されたパケットデータをフレーム化する手段と、
前記回線を介して、前記フレーム化されたパケットデータを送信する送信手段と、
前記回線ごとに、前記送信されたパケットデータのデータ量の累計を保持する保持手段とを備え、
前記保持手段は、前記送信の度に、その送信されたパケットデータのフレーム長の分についてカウントアップを行い、
前記送信手段は、前記回線に対応した前記保持手段によるカウント値の差分をもとに、あらかじめ設定した関係に基づいて、前記フレーム化されたパケットデータの転送対象とする回線を選択することを特徴とするパケット伝送装置。
【請求項２】
前記カウント値の対比する値をＸ，Ｙとし、そのカウントのビット幅をＢとしたとき、前記関係は、
−２B ＜Ｘ−Ｙ＜−２B-1 ならば、Ｘ≧Ｙ，−２B-1 ≦Ｘ−Ｙ＜０ならば、Ｘ＜Ｙ，０≦Ｘ−Ｙ＜２B-1  ならば、Ｘ≧Ｙ，そして、２B-1  ≦Ｘ−Ｙ＜２B ならば、Ｘ＜Ｙで表されることを特徴とする請求項１記載のパケット伝送装置。
【請求項３】
前記複数の回線各々は、伝送速度が等しいことを特徴とする請求項２記載のパケット伝送装置。
【請求項４】
前記複数の回線は、伝送速度の異なる回線が混在していることを特徴とする請求項２記載のパケット伝送装置。
【請求項５】
前記送信手段は、前記回線各々の伝送速度に反比例する、あらかじめ設定した倍率と前記フレーム長との積に基づいて更新された前記データ量の累計が最小の回線を介して、前記パケットデータの送信を行うことを特徴とする請求項４記載のパケット伝送装置。
【請求項６】
前記送信装置において、前記入力されたパケットデータにシーケンス番号を付与し、前記受信装置において、そのシーケンス番号に従って、受信したパケットデータを整列させることを特徴とする請求項３または５に記載のパケット伝送装置。
【請求項７】
複数の回線を介して相互に接続された送信装置と受信装置からなるパケット伝送装置における伝送方法であって、
入力されたパケットデータをフレーム化するステップと、
前記回線を介して、前記フレーム化されたパケットデータを送信する送信ステップと、
前記回線ごとに、前記送信されたパケットデータのデータ量の累計を保持する保持ステップとを備え、
前記保持ステップは、前記送信の度に、その送信されたパケットデータのフレーム長の分をカウントアップし、
前記送信ステップでは、前記回線に対応した前記保持ステップでのカウント値の差分に応じた、あらかじめ設定した関係に基づいて、前記フレーム化されたパケットデータの転送対象とする回線が選択されることを特徴とする伝送方法。
【請求項８】
前記送信ステップは、前記複数の回線に伝送速度の異なる回線が混在している場合、これらの回線各々の伝送速度に反比例する、あらかじめ設定した倍率と前記フレーム長との積に基づいて前記データ量の累計を更新し、この更新された累計が最小の回線を介して、前記パケットデータの送信を行うことを特徴とする請求項７記載の伝送方法。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、複数の回線を介して相互に接続された送信装置と受信装置間でパケットデータの送受信を行うパケット伝送装置および伝送方法に関するものである。
【０００２】
【従来の技術】
従来より、対向する通信装置間を複数の回線で接続し、パケットデータ転送を高速化する技術が知られている。この手法は、一般的にマルチリンクと呼ばれる。このマルチリンク接続において最大のスループットを得るには、回線負荷が均等になるように、入力パケットを各回線に振り分ける必要がある。
【０００３】
パケットの負荷分散を行う方法として、例えば、特開平１１−１５４９８９号公報に記載されている負荷分散方式では、１つの回線に送出されたデータ量の累計が、ある閾値（これを、以後、キーと呼ぶ）を超えたときに、送出する回線を切り替えている。
【０００４】
また、他の従来技術として、特開２０００−２１６８１５号公報に示されている負荷分散手法がある。この手法には、パケットを回線速度に比例する長さの短パケットに分割して、各回線に分配する方式と、パケットを固定長の短パケットに分割し、各回線に割り振る短パケットの数を回線速度に比例させる方式、の２つがある。
【０００５】
【発明が解決しようとする課題】
しかしながら、上記従来の技術には、以下の問題点が存在する。すなわち、特開平１１−１５４９８９号公報に記載の技術についての第１の問題点は、回線負荷の均一化が困難である、ということである。その理由は、累計送信データ量がキーの値を上回ったときにのみ、回線が切り替わるためである。言い換えれば、この技術では、累計送信データ量がキーの値をどれだけ超過しているかを考慮せずに回線を切り替えるため、この超過分が大きいと、各回線の負荷が不均等になる。
【０００６】
この第１の問題点を顕著に表す例を、図１１に示す。同図において、通信装置９００へ７つのパケット９５０が入力され、それぞれが、信号制御部９０２によって、接続部９０３−１〜９０３−２のいずれかに振り分けられる。ここで、これら７つのパケット９５０の長さを、その到着順に４，６，７，１９，９，３，８とし、さらに、キー９０４の値を“８”とする。
【０００７】
このとき、回線（＃０）９０１−１、回線（＃１）９０１−２に割り振られるパケットの長さの合計は、図１１に示すように、それぞれ１９，３７となり、回線９０１−２の負荷は、回線９０１−１の約２倍になる。
【０００８】
特開平１１−１５４９８９号公報に記載の技術の第２の問題点は、何らかの手段によりキーの値を求める必要がある、ということである。例えば、トラヒックの状態から最適なキーの値を算出するには、それを行うためのアルゴリズムと回路が必要になる。また、キーの値を、あらかじめ人手により設定しておくにしても、その値が適切であるかを十分に検証しなければならない。
【０００９】
また、上述した特開２０００−２１６８１５号公報に示されている負荷分散手法は、受信側が、短パケットから元のパケットを復元する必要があり、高速動作は困難である。よって、この技術を大容量の回線へ適用することは難しいという問題がある。
【００１０】
本発明は、上述の課題に鑑みてなされたものであり、その目的とするところは、複数の回線で接続されたパケット伝送装置において、それぞれの回線の負荷が等しくなるようにパケットを振り分けることのできるパケット伝送装置および伝送方法を提供することである。
【００１１】
本発明の他の目的は、伝送速度の異なる回線が混在している場合でも、均一な負荷分散を実現できるパケット伝送装置および伝送方法を提供することである。
【００１２】
【課題を解決するための手段】
上記の目的を達成するために、第１の発明は、複数の回線を介して相互に接続された送信装置と受信装置からなるパケット伝送装置において、入力されたパケットデータをフレーム化する手段と、上記回線を介して、上記フレーム化されたパケットデータを送信する送信手段と、上記回線ごとに、上記送信されたパケットデータのデータ量の累計を保持する保持手段とを備え、上記送信手段は、上記複数の回線の内、上記データ量の累計が最小の回線を介して上記パケットデータの送信を行うパケット伝送装置を提供する。
【００１３】
好ましくは、上記保持手段は、上記送信の度に、その送信されたパケットデータのフレーム長の分についてカウントアップを行う。また、上記送信手段は、上記回線に対応した上記保持手段によるカウント値の差分をもとに、あらかじめ設定した関係に基づいて、上記フレーム化されたパケットデータの転送対象とする回線を選択する。
【００１４】
また、好ましくは、伝送速度の異なる回線が混在している場合、上記送信手段は、上記回線各々の伝送速度に反比例する、あらかじめ設定した倍率と上記フレーム長との積に基づいて更新された上記データ量の累計が最小の回線を介して、上記パケットデータの送信を行う。
【００１５】
第２の発明は、複数の回線を介して相互に接続された送信装置と受信装置からなるパケット伝送装置における伝送方法であって、入力されたパケットデータをフレーム化するステップと、上記回線を介して、上記フレーム化されたパケットデータを送信する送信ステップと、上記回線ごとに、上記送信されたパケットデータのデータ量の累計を保持する保持ステップとを備え、上記送信ステップは、上記複数の回線の内、上記データ量の累計が最小の回線を介して上記パケットデータの送信を行う伝送方法を提供する。
【００１６】
【発明の実施の形態】
以下、添付図面を参照して、本発明の実施の形態を詳細に説明する。
［第１の実施の形態］
図１は、本発明の第１の実施の形態に係るパケット伝送装置の全体構成を示すブロック図である。同図に示すパケット伝送装置は、パケット送信装置１とパケット受信装置２を備え、これらの装置が、Ｎ本の並行する回線（＃０〜＃（Ｎ−１））３−１〜３−Ｎで相互に接続される構成を有する。
【００１７】
なお、図１に示すパケット伝送装置の構成は、本発明に係る負荷分散手法を実現するための一構成例である。また、パケット送信装置１とパケット受信装置２とを接続する、Ｎ本の並行する回線３−１〜３−Ｎの伝送速度は、ここでは、全て等しいと仮定する。
【００１８】
図２は、パケット送信装置１内の負荷分散処理部４の構成を示すブロック図である。この負荷分散処理部４の累積送信データ量カウンタ（＃０〜＃（Ｎ−１））２５−１〜２５−Ｎには、回線３−１〜３−Ｎがそれまでに送出したデータ量の累計が保持される。ここでは、この累積送信データ量カウンタの値が最小である回線が、パケットの振り分け先となる。
【００１９】
図１に示すように、パケット送信装置１は、負荷分散処理部４と送信部（＃０〜＃（Ｎ−１））６−１〜６−Ｎからなり、パケット受信装置２は、パケット整列処理部７と受信部（＃０〜＃（Ｎ−１））８−１〜８−Ｎを有する。これらの送信部６−１〜６−Ｎと受信部８−１〜８−Ｎは、回線３−１〜３−Ｎを介して互いに接続されている。
【００２０】
負荷分散処理部４は、信号入力端子５から入力されたパケットに対して、パケットの順序を示す通し番号（以後、シーケンス番号と呼ぶ）を付加して、フレームを生成し、そのフレームを送信部６−１〜６−Ｎのいずれかに送出する。また、パケット整列処理部７は、受信部８−１〜８−Ｎが受信したフレームを、シーケンス番号の順に並び替えるとともに、フレームからシーケンス番号を除去して、それらを信号出力端子９にパケットとして出力する。
【００２１】
次に、図２を参照して、負荷分散処理部４の詳細な構成について説明する。同図に示す負荷分散処理部４のリンクアップフラグ（＃０〜＃（Ｎ−１））２４−１〜２４−Ｎは、対応する回線３−１〜３−Ｎの状態を示すフラグであり、回線が正常であれば“１”、異常時に“０”となる。累積送信データ量カウンタ（＃０〜＃（Ｎ−１））２５−１〜２５−Ｎは、対応する回線３−１〜３−Ｎに送出されたフレームの長さの累計を保持する。
【００２２】
フレーム生成部２０は、信号入力端子５から入力されたパケットに、シーケンス番号カウンタ２１が出力するシーケンス番号を付加して、フレームを生成し、それをスイッチ２２に供給する。また、フレーム生成部２０は、生成したフレームの長さをフレーム長２６として出力する。
【００２３】
回線選択部２３は、フレーム生成部２０にフレームが入力されたことを契機として、リンクアップフラグ２４−１〜２４−Ｎ、および累積送信データ量カウンタ２５−１〜２５−Ｎの値を参照して、フレームの転送先を決定する。また、スイッチ２２は、回線選択部２３の決定に従って、フレームを送信部６−１〜６−Ｎのいずれかに転送する。これらの送信部６−１〜６−Ｎにフレームが送出されると、対応する累積送信データ量カウンタ（２５）は、フレーム長２６の分だけ、カウントアップする。
【００２４】
次に、パケット受信装置２内のパケット整列処理部７について説明する。図３は、パケット整列処理部７の詳細な構成を示すブロック図である。同図に示すバッファ選択部６０は、受信部８−１〜８−Ｎが受信したフレームを、パケットとシーケンス番号に分離する。ここでパケットは、受信バッファ（＃０〜＃Ｍ−１）６２−１〜６２−Ｍのいずれかに転送され、シーケンス番号は、受信シーケンス番号レジスタ（＃０〜＃Ｍ−１）６４−１〜６４−Ｍのいずれかに代入される。なお、受信バッファ６２−１〜６２−Ｍそれぞれは、フレーム生成部２０が生成するフレームを、常に収容できる大きさを持つ。
【００２５】
パケット送出制御部６１は、受信フラグ（＃０〜＃Ｍ−１）６３−１〜６３−Ｍ、受信シーケンス番号レジスタ（＃０〜＃Ｍ−１）６４−１〜６４−Ｍ、リンクアップフラグ（＃０〜＃（Ｎ−１））６５−１〜６５−Ｎ、回線シーケンス番号レジスタ（＃０〜＃（Ｎ−１））６６−１〜６６−Ｎ、シーケンス番号カウンタ６７を参照して、受信バッファ６２−１〜６２−Ｍに格納されているパケットを、信号出力端子９へ送出する。
【００２６】
リンクアップフラグ６５−１〜６５−Ｎは、対応する回線３−１〜３−Ｎの状態を示すフラグであり、回線が正常であれば“１”、異常であれば“０”をとる。また、受信フラグ６３−１〜６３−Ｍは、対応する受信バッファ６２−１〜６２−Ｍにパケットが格納されているときに“１”を、それ以外のときに“０”をとる。
【００２７】
受信シーケンス番号レジスタ６４−１〜６４−Ｍは、対応する受信バッファ６２−１〜６２−Ｍに格納されているパケットのシーケンス番号を保持する。回線シーケンス番号レジスタ６６−１〜６６−Ｎは、対応する受信部８−１〜８−Ｎが受信したフレームのシーケンス番号を記憶する。また、シーケンス番号カウンタ６７は、信号出力端子９に送出すべきパケットのシーケンス番号を示す。
【００２８】
アイドルタイマー６８は、送出すべきパケットが受信バッファ内に存在しない間、カウントダウンされる。そして、このタイマーの値が“０”になると、シーケンス番号カウンタ６７を強制的にカウントアップする。
【００２９】
次に、本実施の形態に係るパケット伝送装置の動作について詳細に説明する。最初に、図４に示すフローチャートを参照して、パケット送信装置１の負荷分散処理部４の動作を説明する。
【００３０】
なお、図４中の変数の定義は、以下の通りである。
ＡＡＴＤ［ｘ］  （０≦ｘ  ＜Ｎ）…累積送信データ量カウンタ２５−１〜２５−Ｎの値
ｌｉｎｋｕｐ［ｘ］  （０≦ｘ  ＜Ｎ）…リンクアップフラグ２４−１〜２４−Ｎの値
ＳＮ…シーケンス番号カウンタ２１の値
【００３１】
図４のステップＳ１００では、パケット送信装置１の初期化時における、累積送信データ量カウンタ２５−１〜２５−Ｎ、およびシーケンス番号カウンタ２１のゼロクリア処理を行う。そして、続くステップＳ１０１において、信号入力端子５からパケットが入力されたどうかを調べる。ここで、パケットが入力されていれば、フレーム生成部２０は、シーケンス番号カウンタ２１の値をパケットに付加し、フレームを生成する（ステップＳ１０２）。このとき、エラー検出のためのＣＲＣ（巡回冗長検査）をパケットに付加してもよい。
【００３２】
回線選択部２３は、回線３−１〜３−Ｎの中から、累積送信データ量カウンタ（２５）の値が最小（つまり、ＡＡＴＤ  ［ｉ］  （ただし、０  ≦ｉ＜Ｎ  ）の最小値）であり、かつ、リンクアップフラグ（２４）がセットされている（つまり、ｌｉｎｋｕｐ［ｘ］  ＝１）回線を検索する（ステップＳ１０３）。これを満たす回線が見つからなければ（ステップＳ１０４でＮｏ）、ステップＳ１０１に戻る。
【００３３】
一方、上記の条件を満たす回線が見つかれば、スイッチ２２は、その回線に対応する送信部（６）にフレームを転送する（ステップＳ１０５）。例えば、ステップＳ１０３で、回線３−３が検索されたとき（すなわち、図４のｘが“２”のとき）には、送信部６−３にフレームが転送される。
【００３４】
ステップＳ１０６では、上記の検索された回線に対応する累積送信データ量カウンタ（２５）にフレーム長を加算し、かつ、シーケンス番号カウンタ２１をカウントアップする。そして、処理をステップＳ１０１に戻す。
【００３５】
次に、パケット受信装置２のパケット整列処理部７の動作を説明する。図５、図６は、パケット整列処理部７の動作を示すフローチャートであり、同図中での変数の定義は、以下の通りである。
【００３６】
ＳＮｃｕｒｒｅｎｔ  …シーケンス番号カウンタ６７の値
ＳＮｌａｔｅｓｔ［ｘ］  （０≦ｘ  ＜Ｎ）…回線シーケンス番号レジスタ６６−１〜６６−Ｎの値
ＳＮｂｕｆｆｅｒ［ｘ］  （０≦ｘ  ＜Ｍ）…受信シーケンス番号レジスタ６４−１〜６４−Ｍの値
ｒｅｃｖ［ｘ］  （０≦ｘ  ＜Ｍ）…受信フラグ６３−１〜６３−Ｍの値
ｌｉｎｋｕｐ［ｘ］  （０≦ｘ  ＜Ｎ）…リンクアップフラグ６５−１〜６５−Ｎの値
【００３７】
また、図５、図６中における記号の意味は、
ｍｏｄ  …除算の剰余
ｍｉｎ［ｘ］…ｘ  の最小値
である。
【００３８】
図５のステップＳ１４０では、パケット受信装置２の初期化時において、シーケンス番号カウンタ６７および回線シーケンス番号レジスタ６６−１〜６６−Ｎをゼロクリアし、受信フラグ６３−１〜６３−Ｍのリセットとアイドルタイマー６８の初期化を行う。その後、受信部８−１〜８−Ｎのいずれかが、フレームを受信したかどうかを調べる（ステップＳ１４１）。
【００３９】
フレームが受信された場合（ステップＳ１４１でＹｅｓ）、バッファ選択部６０によって、受信したフレームを適切な受信バッファ（６２）へ格納する処理が行われる。そのため、まず、図６のステップＳ１６０において、受信したフレームにエラーがあるかどうかを調べる。これは、例えば、フレームに付加されたＣＲＣで判定できる。
【００４０】
受信フレームにエラーがあれば、そのフレームを廃棄し（ステップＳ１６５）、処理をステップＳ１４１に戻す。しかし、エラーがなければ、そのフレームに付加されているシーケンス番号とシーケンス番号カウンタ６７の値を比較する（ステップＳ１６１）。
【００４１】
ここで、シーケンス番号よりも、シーケンス番号カウンタ６７の値の方が大きければ、そのフレームを廃棄し（ステップＳ１６５）、ステップＳ１４１に戻る。しかし、そうでなければ、処理を継続する。すなわち、フレームを受信した回線に対応する回線シーケンス番号レジスタ（６６）に、受信フレームに付加されているシーケンス番号を入力する（ステップＳ１６２）。
【００４２】
さらに、ステップＳ１６３において、フレームからパケットを抽出して、それを受信バッファ（６２）に転送する。ここで、パケットの転送先となる受信バッファ（６２）の番号は、フレームに付加されているシーケンス番号をＭで割ったときの剰余とする。例えば、剰余が１のときには、受信バッファ６２−２がパケットの転送先となる。以後、この剰余に“１”を加えた数値をＲＦとする。
【００４３】
フレームに付加されているシーケンス番号を受信シーケンス番号レジスタ６４−ＲＦに入れ、受信フラグ６３−ＲＦをセットする（ステップＳ１６４）。その後、処理は、ステップＳ１４１に戻る。
【００４４】
ステップＳ１４１においてフレームが受信されなかった場合について述べる。この場合、パケット送出処理部６１によって、送出すべきパケットを受信バッファ６２−１〜６２−Ｍの中から探索して、それを信号出力端子９に送出する処理と、フレームが伝送中に失われたか否かを判定する処理の２つが行われる。これら２つの処理のどちらを実行するかは、受信フラグ６３−１〜６３−Ｍの値で決定される。以下、これらの処理について説明する。
【００４５】
まず、ステップＳ１４２で、受信フラグ（６３）の値を調べる。ここで、参照される受信フラグ（６３）の番号は、シーケンス番号カウンタ６７の値をＭで割ったときの剰余である。例えば、この剰余が“０”であれば、受信フラグ６３−１の値が参照される。以後、この剰余に“１”を加えた数値をＲＣとする。
【００４６】
ステップＳ１４２において、受信フラグ６３−ＲＣがセットされている（＝１）と判断された場合、受信シーケンス番号レジスタ６４−ＲＣの値と、シーケンス番号カウンタ６７の値が一致しているかどうかを判定する（ステップＳ１４３）。これらの値が一致していなければ、シーケンス番号カウンタ６７のカウントアップと、アイドルタイマー６８の初期化を行い（ステップＳ１４７）、その後、処理は、ステップＳ１４１へ戻る。
【００４７】
しかし、受信シーケンス番号レジスタ６４−ＲＣの値と、シーケンス番号カウンタ６７の値が一致していれば、ステップＳ１４４において、信号出力端子９にパケットを送出できるかどうかを判定する。そして、パケットの送出が可能であれば、受信バッファ６２−ＲＣに格納されているパケットを信号出力端子９へ送出する（ステップＳ１４５）。
【００４８】
その後、ステップＳ１４６において、受信フラグ６３−ＲＣをリセットし、さらに、シーケンス番号カウンタ６７のカウントアップと、アイドルタイマー６８の初期化を行い（ステップＳ１４７）、処理をステップＳ１４１に戻す。
【００４９】
他方、受信フラグ６３−ＲＣがリセットされている（＝０）場合、伝送途中でフレームが失われたか否かを判断するために、回線シーケンス番号レジスタ６６−１〜６６−Ｎの最小値と、シーケンス番号カウンタ６７の値を比較する（ステップＳ１４８）。この際、リンクアップフラグ（６５）がセットされている回線についてのみ、最小値を計算する。
【００５０】
ここで、シーケンス番号カウンタ６７の値の方が、回線シーケンス番号レジスタ（６６）の最小値よりも小さいと判定されたときには、フレームが失われたと判断し、失われたフレームの送出を諦める。そこで、ステップＳ１４７において、シーケンス番号カウンタ６７のカウントアップと、アイドルタイマー６８の初期化を行い、処理をステップＳ１４１に戻す。
【００５１】
しかし、ステップＳ１４８での条件が満たされなければ（つまり、シーケンス番号カウンタ６７の値が、回線シーケンス番号レジスタ（６６）の最小値以上であれば）、当該処理を継続し、次のステップＳ１４９において、アイドルタイマー６８の値が“０”であるかどうかを調べる。
【００５２】
アイドルタイマー６８の値が“０”のときは、そのアイドルタイマーの初期値で指定された時間が経過しても、送出すべきパケットを受信していない状態であるため、そのパケットの送出を諦める。そこで、ステップＳ１４７において、シーケンス番号カウンタ６７のカウントアップと、アイドルタイマー６８の初期化を行う。その後、処理をステップＳ１４１へ戻す。
【００５３】
しかし、アイドルタイマー６８の値が“０”でなければ、受信フラグ６３−１〜６３−Ｍの全てがリセットされているかどうかを調べる（ステップＳ１５０）。そして、受信フラグ６３−１〜６３−Ｍが、１つでもセットされていれば、ステップＳ１５１において、アイドルタイマー６８をカウントダウンし、処理をステップＳ１４１へ戻す。
【００５４】
受信フラグ６３−１〜６３−Ｍの全てがリセットされていれば（ステップＳ１５０でＹｅｓ）、受信バッファ６２−１〜６２−Ｍは、全て空であり、送出すべきパケットは存在しない。よって、この場合、アイドルタイマー６８をカウントダウンする必要がないため、ステップＳ１５１をスキップして、処理をステップＳ１４１に戻す。
【００５５】
ここで、累積送信データ量カウンタ、またはシーケンス番号カウンタのオーバーフローによって発生する不具合を解決する手法について述べる。負荷分散処理部４の累積送信データ量カウンタ２５−１〜２５−Ｎ、およびシーケンス番号カウンタ２１は、パケットの送信が行われるたびに増加するが、減少することはない。よって、これらのカウンタは、遅かれ早かれオーバーフローする。
【００５６】
このようなオーバーフローの発生を考慮せずに、累積送信データ量またはシーケンス番号の大小比較を行うと、負荷分散処理が正しく動作しなくなる可能性がある。この現象について、以下に例を挙げて説明する。
【００５７】
簡単のため、ここでは、パケット伝送装置を構成する回線（３）の本数Ｎを、Ｎ＝２とし、累積送信データ量カウンタ２５−１，２５−２のビット幅をそれぞれ３とする。すなわち、これら２つのカウンタは、０以上７以下の整数値をとる。さらに、これらのカウンタの値を、
累積送信データ量カウンタ２５−１の値＝６
累積送信データ量カウンタ２５−２の値＝７
のように仮定し、負荷分散処理部４の動作を、図４のステップＳ１０３より開始する。
【００５８】
図４のステップＳ１０３において、累積送信データ量カウンタ２５−１と２５−２の値を比較すると、累積送信データ量カウンタ２５−１の値の方が小さいため、送信部６−１にフレームが送出される（ステップＳ１０５）。ここで、フレーム長２６が“３”であるとした場合、累積送信データ量カウンタ２５−１は、“３”だけカウントアップする（ステップＳ１０６）。
【００５９】
上述のように、カウンタは３ビット幅であり、９（＝６＋３）を表現できないため、オーバーフローする。よって、この時点での累積送信データ量カウンタ２５−１〜２５−２の値は、
累積送信データ量カウンタ２５−１の値＝１
累積送信データ量カウンタ２５−２の値＝７
となる。
【００６０】
この状態で新たなパケットが到着し、ステップＳ１０３の処理が実行されると、その場合には、累積送信データ量カウンタ２５−１が選択される。その結果、前回と同様に、送信部６−１にフレームが送出されてしまう（ステップＳ１０５）。これは、明らかに送信部６−１、および回線３−１に負荷が偏っており、均一な負荷分散が達成されていないことになる。
【００６１】
この問題に対処するため、ステップＳ１０３で実行される累積送信データ量カウンタ２５−１〜２５−２の大小比較の方法を考慮する。すなわち、ここでは、図７に示す関係に従って大小を決定する。図７中の変数Ｘ，Ｙそれぞれを、累積送信データ量カウンタ２５−１，２５−２の値として、上記のステップＳ１０３における処理例を再度、検証する。
【００６２】
ステップＳ１０３の１回目の実行では、Ｘ＝６，Ｙ＝７，Ｘ−Ｙ＝−１であるから、図７からは、Ｘ＜Ｙが得られる。よって、この場合、累積送信データ量カウンタ２５−１が選択される。これは前回の結果と等しい。
【００６３】
ステップＳ１０３の２回目の実行では、Ｘ＝１，Ｙ＝７，Ｘ−Ｙ＝−６であるから、図７を参照すると、Ｘ≧Ｙが得られる。この場合、累積送信データ量カウンタ２５−２が選択され、ステップＳ１０５において、送信部６−２にフレームが転送される。
【００６４】
なお、上記の実施の形態１に示す例では、累積送信データ量カウンタ２５−１〜２５−Ｎのビット幅を３と仮定したが、ビット幅は、２以上であれば任意の値でよい。また、ビット幅をＢと表したときの、累積送信データ量カウンタ２５−１〜２５−Ｎの値Ｘ，Ｙの大小関係は、以下に示すようになる。
【００６５】
−２Ｂ  ＜Ｘ−Ｙ＜−２Ｂ−１  ならば、Ｘ≧Ｙと判定する。
−２Ｂ−１  ≦Ｘ−Ｙ＜０ならば、Ｘ＜Ｙと判定する。
０≦Ｘ−Ｙ＜２Ｂ−１  ならば、Ｘ≧Ｙと判定する。
２Ｂ−１  ≦Ｘ−Ｙ＜２Ｂ  ならば、Ｘ＜Ｙと判定する。
【００６６】
また、ここでは、累積送信データ量カウンタ２５−１〜２５−Ｎの大小比較方法について説明したが、同様の方法で、シーケンス番号カウンタ２１のオーバーフローに対処できる。
【００６７】
以上説明したように、本実施の形態によれば、パケット伝送装置の送信側において、回線毎に送出データ量の累計を保持するカウンタを設け、その送出データ量が最小の回線をパケットの送出先とする負荷分散手法を用いることで、それぞれの回線の負荷が等しくなるようにパケットが振り分けられ、パケット伝送装置間のスループットが最大になる。
【００６８】
また、かかる負荷分散手法は、パケット単位で処理を行うものであり、従来技術のようにパケットを分割して、複数の短パケットを生成するものではないため、高速動作が可能であり、大容量の回線にも適用できる。
【００６９】
さらに、累積送信データ量カウンタのカウンタ値の差分に応じて、カウンタ値の大小比較をすることで、これらの累積送信データ量カウンタにオーバーフローが生じても、均一な負荷分散を実現できる。
【００７０】
また、送信装置側でパケットにシーケンス番号を付加し、受信装置側で、そのシーケンス番号の順にパケットを整列させるため、負荷分散処理の前後でパケットの順序が入れ替わることはない、という効果がある。
【００７１】
［第２の実施の形態］
以下、本発明の第２の実施の形態について説明する。なお、本実施の形態に係るパケット伝送装置は、図１に示す、上記第１の実施の形態に係るパケット伝送装置と同じ構成をとるため、ここでは、その図示および説明を省略する。
【００７２】
第１の実施の形態では、パケット伝送装置を構成する回線３−１〜３−Ｎの伝送速度は、全て等しいと仮定したが、本実施の形態に係るパケット伝送装置は、伝送速度が異なる回線の混在を許容する。従って、かかる混在を許容するために、本実施の形態に係るパケット送信装置１の負荷分散処理部４は、図８に示す構成を有する。なお、図８において、図２に示す、上記第１の実施の形態に係る負荷分散処理部４と同一構成要素には、同一符号を付してある。
【００７３】
そこで、図８に示すブロック図を参照して、本実施の形態に係る負荷分散処理部４の詳細な構成について説明する。同図に示すリンクアップフラグ（＃０〜＃（Ｎ−１））４４−１〜４４−Ｎは、対応する回線３−１〜３−Ｎの状態を示すフラグであり、回線が正常であれば“１”を、異常時には“０”をとる。フレーム生成部４０は、信号入力端子５から入力されたパケットに、シーケンス番号カウンタ４１が出力するシーケンス番号を付加してフレームを生成し、それらをスイッチ４２に供給する。また、フレーム生成部４０は、生成したフレームの長さを、フレーム長４８として出力する。
【００７４】
プライマリ累積送信データ量カウンタ（＃０〜＃（Ｎ−１））４７−１〜４７−Ｎは、対応する回線３−１〜３−Ｎに送出されたフレームの長さの累計を保持する。カウント増分算出部（＃０〜＃（Ｎ−１））４６−１〜４６−Ｎは、対応する回線３−１〜３−Ｎの伝送速度とフレーム長４８に応じて、プライマリ累積送信データ量カウンタ４７−１〜４７−Ｎの増分値を求める。
【００７５】
この増分値とプライマリ累積送信データ量カウンタ４７−１〜４７−Ｎの値を加算した結果が、セカンダリ累積送信データ量カウンタ（＃０〜＃（Ｎ−１））４５−１〜４５−Ｎに代入される。回線選択部４３は、フレーム生成部４０にフレームが入力されたことを契機として、リンクアップフラグ４４−１〜４４−Ｎ、およびセカンダリ累積送信データ量カウンタ４５−１〜４５−Ｎの値を参照して、フレームの転送先を決定する。
【００７６】
スイッチ４２は、回線選択部４３での決定に従って、フレームを送信部６−１〜６−Ｎのいずれかに転送する。送信部６−１〜６−Ｎにフレームが送出されると、対応するセカンダリ累積送信データ量カウンタ（４５）の値をプライマリ累積送信データ量カウンタ（４７）に代入する。
【００７７】
図９は、第２の実施の形態に係るパケット伝送装置の負荷分散処理部４の動作を詳細に示すフローチャートである。なお、図９中における変数の定義は、以下の通りである。
【００７８】
ＡＡＴＤ１［ｘ］  （０  ≦ｘ  ＜Ｎ）…プライマリ累積送信データ量カウンタ４７−１〜４７−Ｎの値
ＡＡＴＤ２［ｘ］  （０  ≦ｘ  ＜Ｎ）…セカンダリ累積送信データ量カウンタ４５−１〜４５−Ｎの値
ｌｉｎｋｕｐ［ｘ］  （０≦ｘ  ＜Ｎ）…リンクアップフラグ４４−１〜４４−Ｎの値
ＳＮ…シーケンス番号カウンタ４１の値
Ｒａｔｅ  Ｆａｃｔｏｒ［ｘ］  （０  ≦Ｘ  ＜Ｎ）…回線３−１〜３−Ｎの伝送速度に反比例する倍率
【００７９】
図９のステップＳ１２０において、パケット送信装置の初期化時、プライマリ累積送信データ量カウンタ４７−１〜４７−Ｎ、およびシーケンス番号カウンタ４１をゼロクリアし、続くステップＳ１２１で、信号入力端子５からパケットが入力されたかどうかを調べる。ここで、パケットが入力されていれば、フレーム生成部４０は、シーケンス番号カウンタ４１の値をパケットに付加し、フレームを生成する（ステップＳ１２２）。なお、このとき、エラー検出のためのＣＲＣをパケットに付加してもよい。
【００８０】
カウント増分算出部４６−１〜４６−Ｎは、回線３−１〜３−Ｎの伝送速度に反比例する倍率（Ｒａｔｅ  Ｆａｃｔｏｒ  ）とフレーム長４８の積を計算し、その積と、プライマリ累積送信データ量カウンタ４７−１〜４７−Ｎの和を、セカンダリ累積送信データ量カウンタ４５−１〜４５−Ｎに代入する（ステップＳ１２３）。ここで、回線３−１〜３−Ｎの伝送速度に反比例する倍率とは、例えば、図１０に示すような関係を意味している。
【００８１】
ステップＳ１２４において、回線選択部４３は、回線３−１〜３−Ｎの中から、セカンダリ累積送信データ量カウンタ（４５）の値が最小であり、かつ、リンクアップフラグ（４４）がセットされている回線を検索する。そのような回線が見つからなければ（ステップＳ１２５でＮｏ）、処理をステップＳ１２１に戻す。
【００８２】
しかし、上記の条件を満たす回線が見つかれば、スイッチ４２は、その回線に対応する送信部（６）へフレームを転送する（ステップＳ１２６）  。例えば、ステップＳ１２４で、回線３−３が検索されたとき（すなわち、図９のｘが“２”のとき）には、送信部６−３にフレームが転送される。
【００８３】
ステップＳ１２７では、検索された回線に対応するセカンダリ累積送信データ量カウンタ（４５）の値をプライマリ累積送信データ量カウンタ（４７）に代入して、シーケンス番号カウンタ４１をカウントアップする。その後、処理をステップＳ１２１に戻す。
【００８４】
なお、セカンダリ累積送信データ量カウンタ４５−１〜４５−Ｎ、およびシーケンス番号カウンタ４１のオーバーフローに対処する方法は、上記第１の実施の形態に係る負荷分散処理部における方法と同じである。
【００８５】
このように、本実施の形態によれば、各回線の伝送速度に反比例する所定の倍率とフレーム長との積を用いて送出データ量の累計を更新し、その更新された送信データ量の累計が最小である回線に対してパケットデータを送信するため、パケット伝送装置の各回線の伝送速度が互いに異なっていても、均一な負荷分散を実現できる。
【００８６】
【発明の効果】
以上説明したように、第１の発明によれば、複数の回線で接続されたパケット伝送装置の送信装置側に入力されたパケットデータをフレーム化する手段と、これらの回線を介して、上記フレーム化されたパケットデータを送信する手段と、上記回線ごとに、上記送信されたパケットデータのデータ量の累計を保持する手段を備え、上記複数の回線の内、データ量の累計が最小の回線を介してパケットデータの送信を行うことで、各回線の負荷が等しくなるようにパケットが振り分けられ、結果として、均一な負荷分散が達成される。
【００８７】
また、伝送速度の異なる回線が混在している場合、伝送速度に反比例する所定の倍率を各回線に設定し、その倍率とフレーム長との積に基づいて更新された送信データ量の累計が最小である回線に対してパケットデータを送信することで、パケット伝送装置の各回線の伝送速度が互いに異なっていても、均一な負荷分散を実現できる。
【００８８】
第２の発明によれば、入力されたパケットデータをフレーム化するステップと、上記の回線を介して、フレーム化されたパケットデータを送信するステップと、上記回線ごとに、上記送信されたパケットデータのデータ量の累計を保持するステップとを備え、上記の送信ステップが、複数の回線の内、上記データ量の累計が最小の回線を介してパケットデータの送信を行うことで、各回線に対して均一な負荷分散を実現できる。
【図面の簡単な説明】
【図１】本発明の第１の実施の形態に係るパケット伝送装置の全体構成を示すブロック図である。
【図２】第１の実施の形態に係るパケット送信装置内の負荷分散処理部の構成を示すブロック図である。
【図３】第１の実施の形態に係るパケット整列処理部の詳細な構成を示すブロック図である。
【図４】第１の実施の形態に係る負荷分散処理部の動作を示すフローチャートである。
【図５】第１の実施の形態に係るパケット整列処理部の動作を示すフローチャートである。
【図６】第１の実施の形態に係るパケット整列処理部の動作を示すフローチャートである。
【図７】累積送信データ量カウンタとシーケンス番号カウンタの大小関係を示す図である。
【図８】本発明の第２の実施の形態に係るパケット伝送装置の負荷分散処理部の構成を示すブロック図である。
【図９】第２の実施の形態に係るパケット伝送装置の負荷分散処理部の動作を詳細に示すフローチャートである。
【図１０】第２の実施の形態に係る回線の伝送速度と、それに反比例する倍率との関係の一例を示す図である。
【図１１】従来技術の問題点を説明するための図である。
【符号の説明】
１  パケット送信装置
２  パケット受信装置、
３−１〜３−Ｎ  回線（＃０〜＃（Ｎ−１））
４  負荷分散処理部
６−１〜６−Ｎ  送信部（＃０〜＃（Ｎ−１））
７  パケット整列処理部
８−１〜８−Ｎ  受信部（＃０〜＃（Ｎ−１））
２０  フレーム生成部
２１  シーケンス番号カウンタ
２２  スイッチ
２３  回線選択部
２４−１〜２４−Ｎ  リンクアップフラグ（＃０〜＃（Ｎ−１））
２５−１〜２５−Ｎ  累積送信データ量カウンタ（＃０〜＃（Ｎ−１））
６０  バッファ選択部
６１  パケット送出制御部
６２−１〜６２−Ｍ  受信バッファ（＃０〜＃Ｍ−１）
６３−１〜６３−Ｍ  受信フラグ（＃０〜＃Ｍ−１）
６４−１〜６４−Ｍ  受信シーケンス番号レジスタ（＃０〜＃Ｍ−１）
６５−１〜６５−Ｎ  リンクアップフラグ（＃０〜＃（Ｎ−１））
６６−１〜６６−Ｎ  回線シーケンス番号レジスタ（＃０〜＃（Ｎ−１））
６７  シーケンス番号カウンタ
【図１】
0003584885.tif 000002
【図２】
0003584885.tif 000003
【図３】
0003584885.tif 000004
【図４】
0003584885.tif 000005
【図５】
0003584885.tif 000006
【図６】
0003584885.tif 000007
【図７】
0003584885.tif 000008
【図８】
0003584885.tif 000009
【図９】
0003584885.tif 000010
【図１０】
0003584885.tif 000011
【図１１】
0003584885.tif 000012