(57)【要約】【課題】パケットの順序を保証した負荷分散を行う。【解決手段】経路選択テーブル２２は、ハッシュ値に対応してパケットの振り分け先経路が記憶される。生成されたハッシュ値に基づき経路選択テーブル２２から振り分け先経路が取得され、パケット転送制御部Ｂ２７によりパケットがバッファ１３−１〜３のいずれかに出力される。経路開放制御部２４は、ハッシュ値を受信することによりリセットされるハッシュ値毎のタイマー９０を有する。経路開放制御部２４は、所定のハッシュ値のタイマー９０が予め定められた設定値に達すると、該ハッシュ値に対応する経路の割り当てを開放するための経路開放要求を出力する。テーブル制御部２３は、経路開放要求に従い、経路選択テーブル２２に記憶されたハッシュ値に対応する振り分け先経路を削除し、及び、新たな振り分け先経路を記憶する。【選択図】図２
2008263436.tif 000002
【特許請求の範囲】
【請求項１】
受信されたパケットを複数の経路へ振り分けて負荷分散を行うための負荷分散装置であって、
受信したパケットのヘッダー情報又はパケットの属性を識別するための情報に基づき、ハッシュ値を求めるハッシュ値生成部と、
ハッシュ値に対応して、予め割り当てられた振り分け先の経路を示す第１の経路情報が記憶される経路選択テーブルと、
前記ハッシュ値生成部により求められたハッシュ値に基づき前記経路選択テーブルを参照して、対応する第１の経路情報を取得するテーブル制御部と、
取得された第１の経路情報に従い、パケットを前記複数の経路のいずれかに振り分けるパケット転送制御部と、
ハッシュ値毎のタイマーを有し、前記ハッシュ値生成部からハッシュ値を受信することにより、受信されたハッシュ値に対応する前記タイマーがリセットされ、及び、所定のハッシュ値を生成するパケットを一定期間受信しないことにより、該ハッシュ値の前記タイマーが予め定められた設定値に達すると、該ハッシュ値に対応する経路の割り当てを開放するための、該ハッシュ値を含む経路開放要求を出力する経路開放制御部と、
を備え、
前記テーブル制御部は、
前記経路開放制御部からのハッシュ値を含む経路開放要求に従い、前記経路選択テーブルに記憶された該ハッシュ値に対応する第１の経路情報を削除し又は経路が開放されたことを示す情報を第１の経路情報に記憶し、
所定のタイミングで、新たに割り当てられた振り分け先の経路を示す第２の経路情報を、前記経路選択テーブルの該ハッシュ値に対応して記憶する前記負荷分散装置。
【請求項２】
前記タイマーに設定される前記設定値は、前記負荷分散装置を備えたネットワーク装置にパケットが入力されてから、該パケットが該ネットワーク装置から出力されるまでの時間、又は、それ以上の時間である請求項１に記載の負荷分散装置。
【請求項３】
テストパケットを前記ネットワーク装置の入力端に送信し、及び、該ネットワーク装置の出力端から該テストパケットを受信して、該テストパケットを送信してから受信されるまでの時間を計測し、計測された時間又はそれ以上の時間を前記タイマーに設定するテストパケット制御部
をさらに備えた請求項２に記載の負荷分散装置。
【請求項４】
パケットの振り分け先の負荷状態に基づいて振り分け先の経路を選択し、該振り分け先の経路を示す第２の経路情報を出力する経路選択制御部
をさらに備え、
前記テーブル制御部は、前記経路選択制御部により出力された第２の経路情報を、前記経路選択テーブルに記憶する請求項１に記載の負荷分散装置。
【請求項５】
前記パケット転送制御部によるパケットの振り分け先は、複数のバッファであり、
前記経路選択制御部は、各バッファに存在するパケットの数又はパケットの合計サイズに基づき、パケットの数又はパケットの合計サイズが小さいバッファを振り分け先の経路として選択する請求項４に記載の負荷分散装置。
【請求項６】
前記パケット転送制御部によるパケットの振り分け先は、複数のバッファであり、
前記経路選択制御部は、各バッファに存在するパケットの数又はパケットの合計サイズと、予め定められた複数の閾値とに基づき、各バッファを該複数の閾値により定まる複数のランクに分け、パケットの数又はパケットの合計サイズが少ないランクのバッファのひとつを振り分け先の経路として選択する請求項４に記載の負荷分散装置。
【請求項７】
前記経路選択制御部は、
同じランクの前記バッファが複数ある場合には、ラウンドロビン方式を用いて前記バッファをひとつ選択する請求項６に記載の負荷分散装置。
【請求項８】
前記所定のタイミングは、
該ハッシュ値を生成するパケットを新たに受信したタイミングである請求項１に記載の負荷分散装置。
【請求項９】
前記テーブル制御部が、前記ハッシュ値生成制御部からハッシュ値を入力して、前記経路選択テーブルから該ハッシュ値に対応した第１の経路情報を読み出し、出力する第１処理と、
前記テーブル制御部が、前記経路開放制御部から経路開放要求を入力して、前記経路選択テーブルのハッシュ値に対応した第１の経路情報を削除する第２処理とついて、
前記第２処理を実行中に前記第１処理が実行された場合、前記経路選択制御部からの第２の経路情報に従いパケットが振り分けられる請求項４に記載の負荷分散装置。
【請求項１０】
前記テーブル制御部が、前記ハッシュ値生成制御部からハッシュ値を入力して、前記経路選択テーブルから該ハッシュ値に対応した第１の経路情報を読み出し、出力する第１処理と、
前記テーブル制御部が、前記経路開放制御部から経路開放要求を入力して、前記経路選択テーブルのハッシュ値に対応した第１の経路情報を削除する第２処理について、
前記第１処理を実行中に前記第２処理が実行された場合、前記経路選択テーブルのハッシュ値に対す第１の経路情報を削除し、及び、前記経路選択制御部からの第２の経路情報に従いパケットが振り分けられる請求項４に記載の負荷分散装置。
【請求項１１】
前記テーブル制御部は、前記ハッシュ値生成制御部からのハッシュ値を所定時間バッファリングする第２のバッファ
を有し、
前記ハッシュ値生成制御部がハッシュ値を送信してから、前記テーブル制御部で経路選択テーブルからそのハッシュ値に対する第１の経路情報が読み出されて、出力されるまでの第１時間と、
前記ハッシュ値生成制御部がハッシュ値を送信してから、前記経路開放制御部でそのハッシュ値に対応する前記タイマーをリセットするまでの第２時間と、
前記経路開放制御部で前記タイマーが前記設定値になってから、経路開放要求を前記テーブル制御部が入力するまでの第３時間とについて、
前記第１時間が、前記第２時間と前記第３時間の和より大きくなるように、受信されたハッシュ値を前記第２のバッファで所定時間バッファする請求項４に記載の負荷分散装置。
【請求項１２】
受信されたパケットを複数の経路へ振り分けて負荷分散を行うための負荷分散装置であって、
受信したパケットのヘッダー情報又はパケットの属性を識別するための情報に基づき、予め定められた複数の識別子のひとつを選択する識別子生成部と、
前記識別子に対応して、予め割り当てられた振り分け先の経路を示す第１の経路情報が記憶される経路選択テーブルと、
前記識別子生成部により求められた前記識別子に基づき前記経路選択テーブルを参照して、対応する第１の経路情報を取得するテーブル制御部と、
取得された第１の経路情報に従い、パケットを前記複数の経路のいずれかに振り分けるパケット転送制御部と、
前記識別子毎のタイマーを有し、前記識別子生成部から前記識別子を受信することにより、受信された前記識別子に対応する前記タイマーがリセットされ、及び、所定の前記識別子を生成するパケットを一定期間受信しないことにより、該識別子の前記タイマーが予め定められた設定値に達すると、該識別子に対応する経路の割り当てを開放するための、該識別子を含む経路開放要求を出力する経路開放制御部と、
を備え、
前記テーブル制御部は、
前記経路開放制御部からの前記識別子を含む経路開放要求に従い、前記経路選択テーブルに記憶された該識別子に対応する第１の経路情報を削除し又は経路が開放されたことを示す情報を第１の経路情報に記憶し、
所定のタイミングで、新たに割り当てられた振り分け先の経路を示す第２の経路情報を、前記経路選択テーブルの該識別子に対応して記憶する前記負荷分散装置。
【請求項１３】
他のネットワーク装置と複数の経路を介して接続されるネットワーク装置であって、
請求項１又は１２に記載の負荷分散装置と、
前記複数の経路に対応する複数のバッファと
を備え、
受信された前記他のネットワーク装置へのパケットが、前記負荷分散装置により前記複数のバッファに振り分けられ、前記他のネットワーク装置へパケットが出力される前記ネットワーク装置。
【請求項１４】
第２のネットワーク装置と第２経路を介してさらに接続され、
前記第２経路に対応した第２のバッファと、
受信されたパケットの宛先に従い、出力ポート情報を選択する出力ポート選択制御部と、
選択された出力ポート情報に従い、パケットを前記負荷分散装置及び前記第２のバッファに振り分ける振り分け部と
をさらに備えた請求項１３に記載のネットワーク装置。
【請求項１５】
請求項１又は１２に記載の負荷分散装置と、
受信されたパケットが前記負荷分散装置により振り分けられる複数のバッファと、
前記バッファからパケットを入力して、該パケットをネットワークへ転送するための複数の転送エンジンと
を備えたネットワーク装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、負荷分散装置及びネットワーク装置に係り、特に、ヘッダ情報等のパケットの属性を識別するための情報に基づいて、当該パケットの振り分けを行う負荷分散方法及び負荷分散装置において、パケットの順序を保証しつつ、経路の開放及び再割り当てを行うことによって、入力パケットの負荷分散を行う負荷分散装置及びネットワーク装置に関する。
【背景技術】
【０００２】
近年、電子商取引や映像配信等、インターネットを用いた通信サービスの高度化により、トラヒック量の増加と通信速度の高速化は急激に進行している。これに伴って、ネットワーク内においてルータやサーバ等の通信装置の処理負荷が一層大きくなってきている。このため、通信装置の処理能力の向上が急務となっている。
例えば、通信装置の処理能力を向上する手法の一つとして、負荷分散技術がある。負荷分散技術は、同じ機能を持つ装置を複数台設け、これらの装置間で処理を分担することにより、各単一装置における処理負荷を低減するとともに、全体として処理能力の向上を図る方法である。負荷分散を実現するためには、負荷分散の対象となる複数の装置に対して、適切にパケットを振り分けて転送することが必要である。
従来の技術では、ハッシュ値による方法で入力パケットの情報からパケットの負荷分散を行う方法がある。しかし、この方法では入力パケットの情報からハッシュ値を求める為、パケットの振り分けが均等にできないケースが発生する。例えば、入力パケットのＩＰアドレス、ポート情報に基づいてハッシュ値を求める場合、同一ＩＰアドレス、同一ポート情報のパケットは同じ振り分け先（例えば、同じバッファ）に振り分けられることになる。例えば、複数のプライベートＩＰアドレスをひとつのグローバルＩＰアドレスに変換して通信するシステムにおいては、そのグローバルＩＰアドレスのパケットは同じバッファに入ることになる。従って、複数のプライベートアドレスのパケットが同じバッファに入り、負荷が集中する場合がある。
この課題を解決する為に、例えば特許文献１に示すように、ハッシュ値による方法でパケットの負荷分散を行い、受信ポートでのバックプレッシャ計測値と送信ポートでの送信統計情報に基づく輻輳情報によって負荷情報を把握し、負荷が集中していればハッシュ値に対するルートの割り当てを変更して負荷が均等になるように制御を行うものがあった。
【特許文献１】特開２００５−２５２７６６号公報
【発明の開示】
【発明が解決しようとする課題】
【０００３】
しかしながら、上述の方式ではパケット転送中にハッシュ値に対して割り当てた経路を変更する為、パケットの順序が入れ替わって送信・受信される場合があり、パケットの順序が保証できない。保証できないパケットに対しては宛先到達時にパケットの順序が乱れることがある。このため、パケットの再送が発生したりアプリケーションデータとして使えないケースがある。また、例えば、高信頼ネットワークには適していない。
本発明は、以上の点に鑑み、パケットの順序を保証した負荷分散を行う負荷分散装置及びネットワーク装置を提供することを目的とする。本発明は、高信頼ネットワークに適した、パケットの順序保証が可能な負荷分散技術を提供することを目的とする。また、本発明は、パケットの順序を保証することで無駄な再送トラフィックを低減し、アプリケーションレベルでのネットワークでの遅延を低減し、さらにネットワークの帯域をより効率的に利用可能することを目的のひとつとする。
【課題を解決するための手段】
【０００４】
本発明の装置は、例えば、ネットワークを介してパケットを伝送する複数の経路への負荷分散を行う伝送装置であって、受信したパケットのヘッダ情報等のパケットの属性を識別するための情報からハッシュ値を求めるハッシュ値生成制御と、パケットの振り分け先からの情報に基づいて経路を選択する経路選択制御と、経路値の再割り当てを判定する経路割り当て制御と、経路選択テーブルを制御するテーブル制御と、一定時間パケットを受信しない場合はそのハッシュ値に対する経路割り当てを開放する経路開放制御を備える。
上記ハッシュ値生成制御は一例であり、パケットの順序が制御できる方式であれば他の方式でも良い。
本発明の第１の解決手段によると、
受信されたパケットを複数の経路へ振り分けて負荷分散を行うための負荷分散装置であって、
受信したパケットのヘッダー情報又はパケットの属性を識別するための情報に基づき、ハッシュ値を求めるハッシュ値生成部と、
ハッシュ値に対応して、予め割り当てられた振り分け先の経路を示す第１の経路情報が記憶される経路選択テーブルと、
前記ハッシュ値生成部により求められたハッシュ値に基づき前記経路選択テーブルを参照して、対応する第１の経路情報を取得するテーブル制御部と、
取得された第１の経路情報に従い、パケットを前記複数の経路のいずれかに振り分けるパケット転送制御部と、
ハッシュ値毎のタイマーを有し、前記ハッシュ値生成部からハッシュ値を受信することにより、受信されたハッシュ値に対応する前記タイマーがリセットされ、及び、所定のハッシュ値を生成するパケットを一定期間受信しないことにより、該ハッシュ値の前記タイマーが予め定められた設定値に達すると、該ハッシュ値に対応する経路の割り当てを開放するための、該ハッシュ値を含む経路開放要求を出力する経路開放制御部と、
を備え、
前記テーブル制御部は、
前記経路開放制御部からのハッシュ値を含む経路開放要求に従い、前記経路選択テーブルに記憶された該ハッシュ値に対応する第１の経路情報を削除し又は経路が開放されたことを示す情報を第１の経路情報に記憶し、
所定のタイミングで、新たに割り当てられた振り分け先の経路を示す第２の経路情報を、前記経路選択テーブルの該ハッシュ値に対応して記憶する前記負荷分散装置が提供される。
【０００５】
本発明の第２の解決手段によると、
受信されたパケットを複数の経路へ振り分けて負荷分散を行うための負荷分散装置であって、
受信したパケットのヘッダ情報又はパケットの属性を識別するための情報に基づき、予め定められた複数の識別子のひとつを選択する識別子生成部と、
前記識別子に対応して、予め割り当てられた振り分け先の経路を示す第１の経路情報が記憶される経路選択テーブルと、
前記識別子生成部により求められた前記識別子に基づき前記経路選択テーブルを参照して、対応する第１の経路情報を取得するテーブル制御部と、
取得された第１の経路情報に従い、パケットを前記複数の経路のいずれかに振り分けるパケット転送制御部と、
前記識別子毎のタイマーを有し、前記識別子生成部から前記識別子を受信することにより、受信された前記識別子に対応する前記タイマーがリセットされ、及び、所定の前記識別子を生成するパケットを一定期間受信しないことにより、該識別子の前記タイマーが予め定められた設定値に達すると、該識別子に対応する経路の割り当てを開放するための、該識別子を含む経路開放要求を出力する経路開放制御部と、
を備え、
前記テーブル制御部は、
前記経路開放制御部からの前記識別子を含む経路開放要求に従い、前記経路選択テーブルに記憶された該識別子に対応する第１の経路情報を削除し又は経路が開放されたことを示す情報を第１の経路情報に記憶し、
所定のタイミングで、新たに割り当てられた振り分け先の経路を示す第２の経路情報を、前記経路選択テーブルの該識別子に対応して記憶する前記負荷分散装置が提供される。
【０００６】
本発明の第３の解決手段によると、
他のネットワーク装置と複数の経路を介して接続されるネットワーク装置であって、
上記負荷分散装置と、
前記複数の経路に対応する複数のバッファと
を備え、
受信された前記他のネットワーク装置へのパケットが、前記負荷分散装置により前記複数のバッファに振り分けられ、前記他のネットワーク装置へパケットが出力される前記ネットワーク装置が提供される。
本発明の第４の解決手段によると、
上記負荷分散装置と、
受信されたパケットが前記負荷分散装置により振り分けられる複数のバッファと、
前記バッファからパケットを入力して、該パケットをネットワークへ転送するための複数の転送エンジンと
を備えたネットワーク装置が提供される。
【発明の効果】
【０００７】
本発明によれば、パケットの順序を保証した負荷分散を行う負荷分散装置及びネットワーク装置を提供することができる。本発明によれば、高信頼ネットワークに適した、パケットの順序保証が可能な負荷分散技術を提供することができる。本発明によれば、パケットの順序を保証することで無駄な再送トラフィックを低減でき、アプリケーションレベルでのネットワークでの遅延を低減でき、さらにネットワークの帯域をより効率的に利用することができる。
【発明を実施するための最良の形態】
【０００８】
以下、図面を参照して本実施の形態を説明する。
図１は、本実施の形態によるパケット通信装置のネットワーク構成の一例を示すものである。
ネットワーク装置Ａ１０は、例えば、ネットワーク装置Ｂ１４−１、ネットワーク装置Ｃ１４−２、ネットワーク装置Ｄ１４−３に接続されている。特にネットワーク装置Ｂ１４−１に対しては、複数の経路を介してマルチリンク接続されており、経路Ａ、経路Ｂ、経路Ｃに対して負荷分散する例である。本実施の形態は、このネットワーク装置Ｂ１４−１に対するマルチリンク接続に対する負荷分散を制御する。なお、接続されるネットワーク装置は、適宜の数でもよい。例えば、マルチリンク接続により、ネットワーク装置Ｂ１４−１にのみ接続されていてもよい。
ネットワーク装置Ａ１０は、出力ポート選択制御部１１、データ振り分け制御部１２、データバッファ１３−１〜データバッファ１３−５、及び、テストパケット制御部１５を備える。なお、ネットワーク装置Ａ１０は、パケットを入力する入力インタフェース部、パケットを出力する出力インタフェース部を適宜備えてもよい。
ネットワーク装置Ａ１０はパケットを受信すると、出力ポート選択制御部１１にてパケットのヘッダー情報からネットワーク装置Ｂ１４−１、ネットワーク装置Ｃ１４−２、ネットワーク装置Ｄ１４−３のどのネットワーク装置にパケットを転送するか判定する。例えば、パケットの転送先となる出力ポートを求める。ここで、データ振り分け制御部１２で宛先が判別できるようにパケットに拡張ヘッダーを付加する。データ振り分け制御部１２は拡張ヘッダーから宛先を決定し、それぞれのネットワーク装置への経路に対応するデータバッファ１３−１〜５へパケットを転送する。パケットは、データバッファ１３から適宜読み出されてネットワーク装置へ出力される。なお、データバッファ（第１のバッファ）１３−１〜１３−３からは、データバッファの情報（例えば負荷状態情報）がデータ振り分け制御部１２に送られる。詳細は後述する。
【０００９】
図２は、データ振り分け制御部１２の構成図である。
データ振り分け制御部１２は、例えば、負荷分散制御部（負荷分散装置）２０と、宛先検索部（振り分け部）３０と、パケット転送制御部Ｃ３１、Ｄ３２とを有する。また、負荷分散制御部２０は、ハッシュ値生成制御部２１と、経路選択テーブル２２と、テーブル制御部２３と、経路開放制御部２４と、経路割り当て制御部２５と、経路選択制御部２６と、パケット転送制御部Ｂ２７とを有する。経路開放制御部２４は、ハッシュ値毎にタイマー９０を有する。なお、タイマーは外部の適宜のタイマーを用いてもよい。また、負荷分散制御部２０の出力先は、バッファ以外にも適宜の装置・構成であってもよい。
出力ポート選択制御部１１から拡張ヘッダーを付加されたパケットを受信すると、宛先検索部３０では拡張ヘッダーから宛先（出力ポート）を判定し、宛先に従いパケット転送制御部Ｂ２７、パケット転送制御部Ｃ３１、パケット転送制御部Ｄ３２のいずれかにパケットを転送する。
パケット転送制御部Ｃ３１、パケット転送制御部Ｄ３２にパケットが転送されるとデータバッファ（第２のバッファ）１３−４、１３−５を介してネットワーク装置Ｃ１４−２、ネットワーク装置Ｄ１４−３にパケットが転送される。
パケット転送制御部Ｂ２７にパケットが転送された場合、ネットワーク装置Ｂ１４−１とはマルチリンク接続されている為、負荷分散制御部２０で経路選択を行い、経路Ａ、経路Ｂ、経路Ｃに対して負荷分散を行う。
まず、パケット転送制御部Ｂ２７は、ハッシュ値生成制御部２１にパケットのヘッダー情報を転送する。ハッシュ値生成制御部２１は、ヘッダー情報に基づきハッシュ値を求め、テーブル制御部２３及び経路開放制御部２４に転送する。なお、ハッシュ値の求め方は、従来と同様の手法を用いることができる。例えば、パケットに含まれるＩＰアドレスやポート情報に基づきハッシュ値を求める。
経路選択テーブル２２は、ハッシュ値に対応して、パケットの振り分け先経路情報（経路割り当て値）が予め記憶される。図８に、経路選択テーブル２２の構成例を示す。
テーブル制御部２３は、そのハッシュ値に対応した経路割り当て値（第１の経路情報）を経路選択テーブル２２から読み出し、経路割り当て制御部２５に知らせる。なお、この例では、経路割り当て値が「０」であれば経路割り宛てが開放中、「０」以外であれば経路割り当て済としている。
【００１０】
経路割り当て制御部２５は、経路割り当て値が「０」であれば経路割り当てがされていないと判断し、経路選択制御部２６から転送される経路値（第２の経路情報）をパケット転送制御部Ｂ２７に知らせる。また、その経路値をテーブル制御部２３にも知らせる。パケット転送制御部Ｂ２７はその経路のバッファ１３−１〜３に対してパケットを転送する。
テーブル制御部２３は、その経路値を経路選択テーブル２２に書き込む。「０」以外であれば経路が既に割り当てられていると判断し、その経路値をパケット転送制御部Ｂ２７に知らせる。
また、経路開放制御部２４は、ハッシュ値ごとにタイマー９０を備え、一定時間内にパケットを受信しなければテーブル制御部２３にそのハッシュ値に対する経路値に「０」をライトする（記憶されている経路値を削除する）ように要求を出し、そのハッシュ値に対する経路割り当てを開放する。
ここで、上記一定時間とは、図１に示すようにネットワーク装置Ａ１０にパケットを入力して、そのパケットがネットワーク装置Ｂ１４−１へ出力される期間又はそれ以上の期間とすることができる。こうすると、通信の途中でハッシュ値に対する経路の割り当てを変更しても、その装置内には前回送出したパケット（すくなくとも該ハッシュ値を生成するパケット）は存在しないので、パケットの追い越しは発生しない。ネットワーク装置Ａ１０は、その期間を計測する為のテストパケット制御部１５を備えてもよい。なお、テストパケット制御部１５は、負荷分散制御部２０に含まれることもできる。
テストパケット制御部１５は、上記タイマーの設定値を求める為に内部に計測タイマーを備え、テストパケットを出力ポート選択制御部１１（又はネットワーク装置Ａの入力端）に送信し、データバッファ１３−１〜データバッファ１３−３（又はネットワーク装置Ａの出力端）から受信するまでの時間を計測する。なお、テストパケットには、予め定められたテストパケットであることを識別するための識別子等を付加することができる。テストパケット制御部１５は、計測された時間をタイマー９０に設定する。例えば、テストパケット制御部１５は、定期的にテストパケットを送信して、タイマー９０の値を定期的に設定・更新してもよい。また、複数回の計測値の平均を求め、又は、複数回の計測値のうち最も長い時間を求め、それらをタイマー９０に設定してもよい。
【００１１】
なお、テストパケット制御部１５で計測する方法は一例であり、上記タイマーの設定値は任意の値（予め定められた値）を設定をするようにしても良い。
図３、図４は、本実施の形態のネットワーク装置によるパケット転送の手順の説明図である。
ネットワーク装置Ａ１０は、他のネットワーク装置から送られたパケットを出力ポート選択制御部１１で受信し、例えば、パケットの宛先に従いネットワーク装置に応じた出力ポートの割り当てを決定後、その情報をパケットに拡張ヘッダーとして付加する（ステップ１１、以下Ｓ１１のように略記する）。宛先検索部３１では、その拡張ヘッダー情報をもとにネットワーク装置の割り当てを行う（Ｓ１２）。例えば、宛先検索部３１は、出力先のネットワーク装置に対応するパケット転送制御部２７、３１、３２にパケットを転送する。
【００１２】
パケット転送制御部Ｂ２７にパケットが転送されると、負荷分散制御部２０にてマルチリンク接続に対する負荷分散制御部（振り分け制御）を行う（Ｓ１３、Ｓ１２０）。
パケット転送制御部Ｂ２７でなければパケット転送制御部Ｃ３１又はパケット転送制御部Ｄ３２にパケットが転送され、データバッファ１３−４、１３−５を介してネットワーク装置Ｃ１４−２、ネットワーク装置Ｄ１４−３にパケットを転送する（Ｓ１４）。
次に、図４を参照して、負荷分散制御（Ｓ１２０）について説明する。
パケット転送制御部Ｂ２７にパケットが転送されるとハッシュ値生成制御部２１へパケットのヘッダー情報を転送し、ハッシュ値を生成する（Ｓ１７）。そのハッシュ値をテーブル制御部２３、経路開放制御部２４に転送し、経路開放制御部２４ではハッシュ値に対応したタイマー９０をリセットする（Ｓ２４）。テーブル制御部２３は、そのハッシュ値に対応した経路値を経路選択テーブル２２から読み出す（Ｓ１８）。読み出した経路値を経路割り当て制御部２５に転送し、「０」であるか判定する（Ｓ１９）。「０」以外であればその値をパケット転送制御部Ｂ２７へ転送する（Ｓ２１）。「０」であれば経路選択制御部２６から転送された経路値をパケット転送制御部Ｂ２７、テーブル制御部２３へ転送する（Ｓ２０）。
パケット転送制御部Ｂ２７は、転送された経路値に従い、データバッファ１３−１〜１３−３にパケットを転送する（Ｓ２２）。
ハッシュ値に対応したタイマー９０が設定された値になると、テーブル制御部２３にそのハッシュ値に対する経路値に「０」をライトするように要求を出す（Ｓ２５）。Ｓ２５、Ｓ２０で転送した経路値を経路選択テーブルにライトする（Ｓ２６）。
【００１３】
以上説明した流れにおける主要な機能の詳細について説明する。
図５は、経路選択制御部２６における経路選択処理の説明図である。
経路Ａのデータバッファ１３−１、経路Ｂのデータバッファ１３−２、経路Ｃのデータバッファ１３−３があり、図に示す網掛け部はパケットが溜まっている状態を示している。このケースを例として説明する。
それぞれのデータバッファにどれだけパケットが溜まっているか判定する為に、例えば、閾値１〜閾値４の４つの閾値を予め設定する。それらの閾値とデータバッファに溜まったパケットの数を比較して、データバッファにおけるパケットの溜まり具合を領域（ランク）１−領域５に分割して判定している。なお、閾値の数及び分割する領域数は適宜の数を用いることができる。また、パケットの数以外にも、パケットのサイズの合計など、適宜の負荷状態であってもよい。
図に示す状態では経路Ｃのデータバッファ１３−３は領域４まで溜まっており、経路Ａのデータバッファ１３−１、経路Ｂのデータバッファ１３−２は領域２まで溜まっている。次の経路を選択する候補は、パケット数などが小さい経路Ａのデータバッファ１３−１、経路Ｂのデータバッファ１３−２のどちらかである。どちらも同じ領域２になる為、これを選択する方法は、例えば、ラウンドロビン方式を用いることができる。ラウンドロビン方式は一例であり、上記以外の方式として経路ごとに閾値を変更し、優先度を持った振り分け方式としても良い。
【００１４】
図６は、経路開放制御の説明図である。
図に示すように経路開放制御部２４にはハッシュ値に対応したタイマー９０をそれぞれ備える。このタイマー９０が、設定された値、例えばテストパケット制御部１５で計測した値（ここでは例えば「６」としている）になると、一定時間パケット転送要求がないと判断し、経路開放要求を出す。例えば、ハッシュ値に対する経路の割り当てを開放する為、そのハッシュ値に対する経路値に「０」をライトするように要求を出す。テーブル制御部２３は、経路選択テーブル２２にそのハッシュ値に対応した経路値を削除して、「０」を記憶する（上書きする）。タイマー９０のリセットはハッシュ値生成制御部２１からハッシュ値を受け付けると、そのハッシュ値に対応したタイマー９０をリセットする。
上記一定時間とは図１に示すようにテストパケット制御部１５から出力ポート選択制御部１１にパケットを入力してそのパケットがデータバッファ１３−１〜データバッファ１３−３から出力される期間とすれば、通信の途中でハッシュ値に対する経路の割り当てを変更してもその装置内には前回送出したパケットは存在しないのでパケットの追い越しは発生しない。
図７は、経路開放制御部２４におけるハッシュ値「０」に対する経路割り当て開放処理の説明図である。
この例では、４個のパケット８０−１〜４は、ハッシュ値生成制御部２１ですべてハッシュ値「０」が生成されるとする。また、ハッシュ値「０」に対する割り当て経路は「３」が予め割り当てられて経路選択テーブルに記憶されている（図８（ａ）参照）。ハッシュ値「０」に対するタイマーの経路開放値（設定値）は、例えば「６」である。図に示すような間隔で４個のパケットを受信したケースを例として説明する。
パケット８０−１に対するハッシュ値「０」をハッシュ値生成制御部２１から受け付けると、ハッシュ値「０」に対応するタイマー９０−０をリセットする（例えば、「０」にする）。
パケット８０−２、パケット８０−３のハッシュ値を受け付けるごとに、ハッシュ値「０」のタイマー９０−０を「０」にしていく。ハッシュ値「０」のタイマー９０−０の値が、設定値「６」にならない間隔でパケット８０−１〜パケット８０−３のハッシュ値をハッシュ値生成制御部２１から受け付けたので、割り当て経路は「３」のままである。従ってパケット８０−１〜パケット８０−３は、予め定められた割り当て経路「３」に対応するバッファ１３−３に送信される（図８（ａ）の経路選択テーブルＴ９０−１の状態）。
【００１５】
その後、パケット８０−４のハッシュ値を受け付ける前にハッシュ値「０」のタイマー９０−０が設定値「６」になった為、経路開放要求をテーブル制御部２３に送信する。例えば、ハッシュ値「０」に対する経路値に「０」をライトするようにテーブル制御部２３に要求を出す。また、タイマー９０−０を「０」に戻す。テーブル制御部２３は経路選択テーブル２２のハッシュ値「０」に対する経路を「３」から「０」に変更する（図８（ｂ）の経路選択テーブルＴ９０−２の状態）。
ここで、パケット８０−４のハッシュ値を受け付けると、ハッシュ値「０」のタイマー９０を「０」にする。図８（ｂ）に示すように、ハッシュ値の「０」の割り当て経路は「０」の為、経路割り当て制御部２５により、経路が再割り当てされる。ここでは割り当て経路は「２」が割り当てられたとする（図８（ｃ）の経路選択テーブルＴ９０−３の状態）。パケット８０−４は、割り当て経路「２」に対応するバッファ１３−２に送信される。なお、経路の割り当てのタイミングは、上述のように同じハッシュ値を生成するパケットを受信したときの他、経路開放時に割り当てられてもよい。
図９〜図１１は、テーブル制御部２３における処理の説明図である。
テーブル制御部２１が、ハッシュ値生成制御部２１からハッシュ値を受け付けると経路選択テーブル２２からそのハッシュ値に対応した経路値を読み出し、経路割り当て制御部２５に送信する処理（以下処理１のように略記する）と、テーブル制御部２１が経路開放制御部２４から経路開放要求を受け付け、経路選択テーブル２２のハッシュ値に対応した経路を開放する処理（以下処理２のように略記する）と、経路選択テーブル２２から読み出された経路値が「０」であることにより、経路割り当て制御部２５から新たな経路値を受け付けると経路選択テーブル２２にライトする処理（以下処理３のように略記する）の３つの処理のタイミングを考える。
【００１６】
ここで、特に重要なひとつは処理１と処理２のタイミングである。処理１と処理２は非同期である為、処理１と処理２がぶつかるケースが発生する。例えば、処理１はパケットの受信が契機であり、一方、処理２はタイマー９０の値が契機であり、非同期で処理が発生する。なお、処理３は処理１を実行した後に動作する為、処理２とぶつからない。
図９、図１０は、処理１と処理２がぶつかるケースを示している。
図９は、処理２を実行中に処理１が実行されたケースの説明図である。
この時のテーブル制御部２３の動作は、処理２で処理１のハッシュ値に対する経路値を「０」に設定中の為、処理１は経路選択テーブル２２からの読み出しは行わずに、経路割り当て制御部２５に「０」を送信する。その結果、新たな経路値が割り当てられ、その経路値に従いパケットが振り分けられる。
図１０は、処理１を実行中に処理２が実行されたケースである。
この時のテーブル制御部２３の動作は、処理１のハッシュ値に対する経路値を経路選択テーブル２２から読み出し、経路割り当て制御部２５にその経路値を送信しようとしたが処理２とぶつかった為、経路割り当て制御部２５に「０」を送信し、経路選択テーブル２２のハッシュ値に対する経路値を「０」に設定する。
処理１と平行して、処理１−１（タイマーリセット処理）も実行しているが、例えば、処理１−１でタイマー９０をリセットする前にタイマーが設定値（例えば、「６」）になり、処理２の実行が開始されたケースでは、処理１を実行した後に処理２を実行するケースが発生することがある。このため、経路割り当て制御部２５に送信した経路値（第１の値）と経路選択テーブル２２のハッシュ値に対する経路値（第２の値）が異なってしまう。
【００１７】
例えば、上記第１の値が混んでいるバッファを示し、第１のパケットが混んでいるバッファに入り、一方、上記第２の値が空いているバッファに割り当てられると、第２のパケットが空いているバッファに入ることがあり、第２のパケットが第１のパケットよりも早く出力される場合がある。その為、経路が変わってしまい、パケットの追い越しが発生する場合がある。
これを回避する為、図１１に示す時間Ａ〜Ｃについて、「処理１の時間Ａ＞処理１−１の時間Ｂ＋処理２の時間Ｃ」の関係を守る。処理１の時間Ａ（第１時間）とは、ハッシュ値生成制御部２１がハッシュ値を送信し、テーブル制御部２３で経路選択テーブル２２からそのハッシュ値に対する経路値を読み出し、経路割り当て制御部２５に送信するまでの時間である。処理１−１の時間Ｂ（第２時間）とは、ハッシュ値生成制御部２１がハッシュ値を送信し、経路開放制御部２４でそのハッシュ値に対応するタイマーをリセットするまでの時間である。処理２の時間Ｃ（第３時間）とは、経路開放制御部２４でタイマーが設定値になり経路開放要求をテーブル制御部２３で受け付けるまでの時間である。
上記で示した関係を守るには、例えば、テーブル制御部２３内にハッシュ値生成制御部２１からのハッシュ値を所定時間バッファする機能（例えば、バッファ）を備えることによって処理１と処理２が必ずぶつかることになり、パケットの追い越しは発生しない。
【００１８】
（他の適用例）
次にネットワーク装置内でのマルチリンク接続における負荷分散方法について説明する。
図１１は、負荷分散装置の適用例としてのネットワーク装置１１０の概略構成を示す説明図である。上述のように、他のネットワーク装置とマルチリンク接続されるネットワーク装置以外にも、例えば、自装置内のブロックに対して負荷分散するものにも適用できる。例えば、複数のパケット転送エンジンを有するルータなどのネットワーク装置に適用することもできる。
本例のネットワーク装置１１０は、ルータ機能を備えたパケット検索転送エンジンＡ１１１−１、パケット検索転送エンジンＢ１１１−２、パケット検索転送エンジンＣ１１１−３に対してマルチリンク接続されており、経路Ａ、経路Ｂ、経路Ｃに対して負荷分散が必要な例である。本例は、このマルチリンク接続に対する負荷分散を制御するものであり、負荷分散制御部２０、テストパケット制御部１５は上述の機能と同じである。
【００１９】
（変形例）
上述の実施の形態では、ハッシュ値を用いて説明したが、ハッシュ値以外でもよい。例えば、ハッシュ値生成制御部（識別子生成部）は、受信したパケットのヘッダー情報又はパケットの属性を識別するための情報に基づき、予め定められた複数の識別子のひとつを選択するようにしてもよい。また、経路選択テーブル２２や、他の制御部による処理についても、ハッシュ値の変わりに上記識別子を用いればよく、処理の詳細は同様である。
【産業上の利用可能性】
【００２０】
本発明は、例えば、パケットの振り分けを行うネットワーク装置に利用可能である。また、例えば、複数経路を介して他のネットワーク装置とマルチリンク接続される装置及びシステムに利用可能である。また、例えば、複数のパケット転送エンジンを有するルータ等の通信装置に利用可能である。
【図面の簡単な説明】
【００２１】
【図１】本実施の形態によるパケット通信装置のネットワーク構成の一例を示す図。
【図２】本実施の形態によるデータ振り分け制御部の構成の一例を示す図。
【図３】本実施の形態によるパケット通信装置における処理手順の一例を示すフローチャート。
【図４】本実施の形態による振り分け制御の処理手順の一例を示すフローチャート。
【図５】本実施の形態による経路割り当て制御部の経路選択の説明図。
【図６】本実施の形態による経路割り当て制御部の構成の一例を示す図。
【図７】本実施の形態による経路割り当て開放処理の説明図。
【図８】本実施の形態による経路選択テーブルの説明図。
【図９】本実施の形態によるテーブル制御部の説明図（１）。
【図１０】本実施の形態によるテーブル制御部の説明図（２）。
【図１１】本実施の形態によるテーブル制御部に必要な処理時間を示す図。
【図１２】本実施の形態によるネットワーク装置の一例を示す図。
【符号の説明】
【００２２】
１０  ネットワーク装置Ａ
１１  出力ポート選択制御部
１２  データ振り分け制御部
１３  データバッファ
１４−１  ネットワーク装置Ｂ
１４−２  ネットワーク装置Ｃ
１４−３  ネットワーク装置Ｄ
１５  テストパケット制御部１５
２０  負荷分散制御部
２１  ハッシュ値生成制御部
２２  経路選択テーブル
２３  テーブル制御部
２４  経路開放制御部
２５  経路割り当て制御部
２６  経路選択制御部
２７  パケット転送制御部Ｂ
３０  宛先検索部
３１  パケット転送制御部Ｃ
３２  パケット転送制御部Ｄ
８０  パケット
９０  ハッシュ値「０」のタイマー
Ｔ９０  経路選択テーブル
１１０  ネットワーク装置
１１１  パケット検索転送エンジン
【図１】
2008263436.tif 000003
【図２】
2008263436.tif 000004
【図３】
2008263436.tif 000005
【図４】
2008263436.tif 000006
【図５】
2008263436.tif 000007
【図６】
2008263436.tif 000008
【図７】
2008263436.tif 000009
【図８】
2008263436.tif 000010
【図９】
2008263436.tif 000011
【図１０】
2008263436.tif 000012
【図１１】
2008263436.tif 000013
【図１２】
2008263436.tif 000014