(57)【要約】【課題】複数のパケット処理部のそれぞれにすべてのパケット処理情報を持たせて処理を行う必要がなく、入力トラヒックに偏りがあってもパケットを複数のパケット処理部に振り分けて並列処理が可能なパケット並列処理装置およびパケット並列処理方法を得ること。【解決手段】負荷分散部１は入力されるパケットを複数のパケット処理部２−１〜２−Ｎへ振り分けてパケットの並列処理をさせる。複数のパケット処理部２−１〜２−Ｎは、それぞれパケット処理情報管理部３が管理するパケット処理情報の一部を管理し、この管理情報に基づいて振り分けられたパケットに処理を施す。パケット処理情報管理部３は、定期的に、負荷分散部１のパケット処理部２−１〜２−Ｎへのパケットの振り分け方とパケット処理部２−１〜２−Ｎがそれぞれ管理するパケット処理情報を更新し、パケット処理の負荷がパケット処理部２−１〜２−Ｎへなるべく均等に配分されるようにする。【選択図】        図１
2008167305.tif 000002
【特許請求の範囲】
【請求項１】
入力されるパケットを振り分けることによりパケット処理の負荷の分散を図る負荷分散部と、
前記パケットに施す処理情報を管理するパケット処理情報管理部と、
前記パケット処理情報管理部が管理するパケット処理情報に基づいて前記負荷分散部により振り分けられた前記パケットに所定の処理を施す複数のパケット処理部と、
を備えたパケット並列処理装置であって、
前記負荷分散部は、
前記パケットのヘッダ情報を解析するヘッダ解析部と、
前記パケットのヘッダ情報の解析結果に応じてパケット処理部を特定するためのパケット処理部リストを管理する振り分け情報管理部と、
前記パケット処理部を決定して前記パケットを振り分けるパケット振り分け部と、
前記パケット処理部それぞれに振り分けられた前記パケットの量を計数し、前記パケット処理部それぞれに対になって設けられた統計情報収集部と、を備える
ことを特徴とするパケット並列処理装置。
【請求項２】
前記複数のパケット処理部は、それぞれ、
前記パケット処理情報管理部にて管理されるパケット処理情報が分散して割り当てられたパケット処理情報分散管理部と、
このパケット処理情報分散管理部が管理するパケット処理情報に基づいて前記パケット振り分け部により振り分けられた前記パケットに所定の処理を施すパケット処理メイン部と、を備える
ことを特徴とする請求項１に記載のパケット並列処理装置。
【請求項３】
前記パケット振り分け部は、前記ヘッダ解析部による前記パケットのヘッダ情報の解析結果をもとに前記振り分け情報管理部を検索して得られた前記パケット処理部リストで特定されるパケット処理部の中から、最も小さい計数値を計数している前記統計情報収集部と対になる前記パケット処理部へ、前記パケットを振り分けることを特徴とする請求項１または２に記載のパケット並列処理装置。
【請求項４】
前記パケット処理情報管理部は、前記複数の統計情報収集部のすべてから計数値を取得し、前記取得された計数値に応じて、前記複数のパケット処理情報分散管理部がそれぞれ管理するパケット処理情報を更新すると共に、前記振り分け情報管理部が管理する振り分け情報を更新することを特徴とする請求項２または３に記載のパケット並列処理装置。
【請求項５】
前記パケット処理情報分散管理部は、前記パケット処理情報を格納する領域として分散管理領域とコピー領域とを備え、
前記分散管理領域の管理情報は入力トラヒックの状態に依らずに前記パケット処理情報管理部から割り当てられるのに対して、前記コピー領域の管理情報は入力トラヒックの状態に依存して追加または削除可能であり、
前記パケット処理情報管理部は、前記パケット処理情報分散管理部のコピー領域の内容を変更することにより、前記パケット処理情報分散管理部が管理するパケット処理情報を更新することを特徴とする請求項４に記載のパケット並列処理装置。
【請求項６】
前記複数のパケット処理情報分散管理部の分散管理領域には、それぞれ、前記パケット処理情報管理部が管理するすべてのパケット処理情報を前記パケット処理部の個数で分割したパケット処理情報が分散して割り当てられていることを特徴とする請求項５に記載のパケット並列処理装置。
【請求項７】
前記パケット処理情報管理部は、前記パケット処理情報分散管理部のコピー領域に、前記分散管理領域単位で前記パケット処理情報をコピーすることを特徴とする請求項６に記載のパケット並列処理装置。
【請求項８】
前記振り分け情報管理部が管理する振り分け情報は、パケットのフローを示す送信元アドレスおよび宛先アドレスの組にハッシュ関数を適用して得られたハッシュ値ごとに前記パケット処理部リストを与えるものであり、
前記ヘッダ解析部は、前記パケットのヘッダ情報の解析結果として対応するハッシュ値を出力し、出力されたハッシュ値を検索鍵として、前記振り分け情報管理部が管理する振り分け情報を検索することにより、前記パケット処理部リストを得ることを特徴とする請求項１〜７のいずれか１つに記載のパケット並列処理装置。
【請求項９】
前記パケット処理情報管理部が管理するパケット処理情報は、パケットのフローを示す送信元アドレスおよび宛先アドレスの組ごとに、前記パケットに施す処理の内容を与えるものであり、
前記パケット処理メイン部は、前記パケットのフローを示す送信元アドレスおよび宛先アドレスの組を検索鍵として、前記パケット処理情報分散管理部にて管理されたパケット処理情報を検索することにより、前記パケットに施す処理の内容を得ることを特徴とする請求項２〜８のいずれか１つに記載のパケット並列処理装置。
【請求項１０】
前記パケット処理情報管理部は、前記複数の統計情報収集部のすべてから計数値を取得し、前記取得された計数値の中から最も大きな計数値を求め、前記最も大きな計数値がコピーしきい値を超える場合には、前記最も大きな計数値を計数している前記統計情報収集部と対になる前記パケット処理情報分散管理部の分散管理領域の内容を、このパケット処理情報分散管理部を除く他のパケット処理情報分散管理部のコピー領域にコピーすると共に、
前記振り分け情報管理部が管理する振り分け情報のうち、前記最も大きな計数値を計数している前記統計情報収集部と対になる前記パケット処理情報分散管理部の分散管理領域にて管理されたフローのハッシュ値に対して、前記パケット処理部リストを前記複数のパケット処理部のすべてとなるように変更することを特徴とする請求項８または９に記載のパケット並列処理装置。
【請求項１１】
前記パケット処理情報管理部は、前記複数の統計情報収集部のすべてから計数値を取得し、前記取得された計数値の中にコピーしきい値を超える計数値が複数存在するときには、前記コピーしきい値を超える各計数値を計数している前記統計情報収集部と対になる前記パケット処理情報分散管理部の分散管理領域の内容を、前記コピーしきい値を超える複数の計数値の比率にしたがって、前記コピーしきい値以下の計数値を計数している他の前記統計情報収集部と対になる前記パケット処理情報分散管理部のコピー領域にコピーすると共に、
前記振り分け情報管理部が管理する振り分け情報のうち、前記コピーしきい値を超える各計数値を計数している前記統計情報収集部と対になる前記パケット処理情報分散管理部の分散管理領域にて管理されたフローのハッシュ値に対して、前記パケット処理部リストを前記コピーしきい値を超える各計数値と対になる前記パケット処理情報分散管理部の分散管理領域の内容のコピー先である前記パケット処理部を含むように変更することを特徴とする請求項８または９に記載のパケット並列処理装置。
【請求項１２】
前記パケット処理情報管理部は、前記複数のパケット処理情報分散管理部のコピー領域にコピー情報が存在するか否かを判別し、いずれかのコピー領域にコピー情報が存在するときには、この既存のコピー情報をその分散管理領域にて管理するパケット処理分散管理部を特定し、この特定されたパケット処理分散管理部と対になる前記統計情報収集部から計数値を取得し、この取得された計数値がコピー停止しきい値を下回る場合には、前記既存のコピー情報を前記コピー領域から削除すると共に、
前記振り分け情報管理部が管理する振り分け情報のうち、前記特定されたパケット処理分散管理部の分散管理領域にて管理されたフローのハッシュ値に対して、前記パケット処理部リストを前記特定されたパケット処理分散管理部を備えたパケット処理部となるように変更することを特徴とする請求項１０または１１に記載のパケット並列処理装置。
【請求項１３】
振り分けられるパケットの量をフローのハッシュ値ごとに計数する振り分け統計情報収集部を備え、
前記パケット処理情報管理部は、前記複数の統計情報収集部のすべてから計数値を取得し、さらに、前記振り分け統計情報収集部から計数値を取得し、これらの取得された計数値に応じて、前記複数のパケット処理情報分散管理部がそれぞれ管理するパケット処理情報を更新すると共に、
前記振り分け情報管理部が管理する振り分け情報を更新することを特徴とする請求項１〜９のいずれか１つに記載のパケット並列処理装置。
【請求項１４】
前記パケット処理情報管理部は、前記複数の統計情報収集部のすべてから計数値を取得し、前記複数の統計情報収集部から取得された計数値の中に第１のコピーしきい値を超える計数値が存在するときには、この第１のコピーしきい値を超える計数値を計数している前記統計情報収集部と対になる前記パケット処理部を特定し、前記特定されたパケット処理部のパケット処理情報分散管理部にて管理されたフローのハッシュ値に対して前記振り分け統計情報収集部から対応する計数値を取得し、前記振り分け情報管理部から取得された計数値の中に第２のコピーしきい値を超える計数値が存在するときには、この第２のコピーしきい値を超える計数値に対応するハッシュ値を特定し、前記特定されたハッシュ値に対応するパケット処理情報を、前記特定されたパケット処理部を除く他の前記パケット処理部のパケット処理情報分散管理部におけるコピー領域へコピーすると共に、
前記振り分け情報管理部が管理する振り分け情報のうち、前記特定されたハッシュ値に対して、前記パケット処理部リストをそのコピー領域にパケット処理情報がコピーされた前記他のパケット処理部を含むように変更することを特徴とする請求項１３に記載のパケット並列処理装置。
【請求項１５】
前記パケット処理情報管理部は、前記複数のパケット処理情報分散管理部のコピー領域にコピー情報が存在するか否かを判別し、いずれかのコピー領域にコピー情報が存在するときには、この既存のコピー情報から対応するフローのハッシュ値を特定し、前記振り分け統計情報収集部から前記特定されたハッシュ値に対応する計数値を取得し、この取得された計数値がコピー停止しきい値を下回る場合には、前記既存のコピー情報を前記コピー領域から削除すると共に、
前記振り分け情報管理部が管理する振り分け情報のうち、前記特定されたハッシュ値に対して、前記パケット処理部リストから前記既存のコピー情報が削除された前記パケット処理部を除くように変更することを特徴とする請求項１４に記載のパケット並列処理装置。
【請求項１６】
前記振り分け情報管理部は、パケットのヘッダ情報に第１のハッシュ関数を適用して得られるハッシュ値に対してパケット処理部を特定するためのパケット処理部リストを与える第１の振り分け情報管理部と、パケットのヘッダ情報に前記第１のハッシュ関数と独立な第２のハッシュ関数を適用して得られるハッシュ値に対してパケット処理部を特定するためのパケット処理部リストを与える第２の振り分け情報管理部と、から構成され、
前記パケット処理情報管理部は、前記第１のハッシュ関数に対応するパケット処理情報を管理する第１のパケット処理情報管理部と、前記第２のハッシュ関数に対応するパケット処理情報を管理する第２のパケット処理情報管理部と、から構成され、
前記ヘッダ解析部は、前記パケットのヘッダ情報の解析結果として、前記第１および第２のハッシュ関数をそれぞれ前記パケットのヘッダ情報に適用して得られる第１および第２のハッシュ値を出力し、前記第１および第２のハッシュ値を検索鍵として、それぞれ前記第１および第２の振り分け情報管理部が管理する振り分け情報を検索することにより、前記パケットを振り分け可能なパケット処理部リストとしてそれぞれ第１および第２のパケット処理部リストを求め、前記第１および第２のパケット処理部リストに示されたパケット処理部と対になるすべての前記統計情報収集部から計数値を取得し、前記取得された計数値のうち、最も小さい計数値を計数している前記統計情報収集部と対になる前記パケット処理部へ前記パケットを振り分けることを特徴とする請求項８〜１５のいずれか１つに記載のパケット並列処理装置。
【請求項１７】
前記統計情報収集部が計数する計数値および前記振り分け統計収集部が計数する計数値は、所定の時間あたりに計数するパケットの数またはパケットのバイト数であることを特徴とする請求項１〜１６のいずれか１つに記載のパケット並列処理装置。
【請求項１８】
入力されるパケットを複数のパケット処理部へ振り分け、パケット処理情報管理部にて管理されるパケット処理情報に基づいて、振り分けられたパケットに所定の処理を施すパケット並列処理方法において、
入力されるパケットのヘッダ情報を解析し、その解析結果をもとに振り分け情報管理部にて管理される振り分け情報を検索して、前記パケットを振り分け可能なパケット処理部リストを得るステップと、
得られたパケット処理部リストから前記パケットの振り分け先となるパケット処理部を決定して前記パケットを振り分けるステップと、
前記パケットが振り分けられたパケット処理部において、前記パケット処理情報に基づいて、前記パケットに所定の処理を施すステップと、
前記パケット処理部それぞれに対になって設けられ、振り分けられたパケットの量を計数する統計情報収集部のうち、前記パケットが振り分けられたパケット処理部と対になっている前記統計情報収集部に対して、振り分けられた前記パケットの量に応じて計数値を更新するステップと、
を含むことを特徴とするパケット並列処理方法。
【請求項１９】
前記複数のパケット処理部には、それぞれ、前記パケット処理情報管理部にて管理されるパケット処理情報が分散して割り当てられており、前記パケット処理部は割り当てられたパケット処理情報に基づいて、前記パケットに所定の処理を施すことを特徴とする請求項１８に記載のパケット並列処理方法。
【請求項２０】
前記パケット処理部リストに含まれるパケット処理部とそれぞれ対になる前記統計情報収集部から計数値を取得し、前記取得された計数値の中で最も小さい計数値を計数している前記統計情報収集部と対になる前記パケット処理部を振り分け先として前記パケットを振り分けることを特徴とする請求項１８または１９に記載のパケット並列処理方法。
【請求項２１】
前記パケット処理情報管理部は、前記複数の統計情報収集部のすべてから計数値を取得し、前記取得された計数値に応じて、前記複数のパケット処理部への前記パケット処理情報管理部が管理するパケット処理情報の割り当て方を更新すると共に、前記振り分け情報管理部が管理する振り分け情報を更新することを特徴とする請求項１９または２０に記載のパケット並列処理方法。
【発明の詳細な説明】
【技術分野】
【０００１】
この発明は、ネットワーク装置でのパケット処理において、複数のパケット処理部にパケットを振り分けて並列処理をおこなうパケット処理装置およびパケット並列処理方法に関するものである。
【背景技術】
【０００２】
近時、ネットワーク装置でのパケット処理において、トラヒック量の増加、通信速度の高速化、およびサービスの高機能化に伴い、例えば１台のサーバといった単一のパケット処理部では処理能力が不足するケースが生じている。ネットワーク装置にてパケット処理能力を向上する手法の一つとして、並列処理方法がある。並列処理技術は、複数のパケット処理部と、これらの前段に配置される負荷分散部とを設け、複数のパケット処理部にパケットを振り分けて並列処理させることにより、装置全体でのパケット処理能力を向上させる手法である。
【０００３】
前述の負荷分散部におけるパケットを振り分ける方法の一つとして、パケットを到着した順番で振り分ける方法がある。パケット到着順によるパケット振り分け方法において、パケット長またはパケット処理内容によって処理速度が異なるケースでは、処理負荷を均等に分散できないという問題がある。そのため、パケット到着順ではなく、前回のパケット処理が完了していて次のパケット処理が可能なパケット処理部に順番に振り分ける方法がある。
【０００４】
他のパケット振り分け方法として、特許文献１に記載の従来技術のように、フロー毎にパケット数の統計を取り、必要であれば入力トラヒックの予測を行い、統計値または予測値に基づいてフローをパケット処理部にできるだけ均等に振り分ける方法がある。
【０００５】
特許文献１では、前述の負荷分散部に相当する処理部が複数の回線対応部に分散されている。そして、回線対応部にはフロー識別テーブルを持たせ、パケット入力毎にフロー識別テーブルを検索し、識別されたフローのパケットが処理されるパケット処理部を一意に決めて転送する。ここで、フロー識別テーブルは、統計値または予測値に基づいて適宜テーブル内容が更新される。これにより、統計に基づいた均等な負荷分散を行うことが可能となる。
【０００６】
【特許文献１】特開２００４−２２１８０５号公報
【発明の開示】
【発明が解決しようとする課題】
【０００７】
しかしながら、上記従来のパケット到着順またはパケット処理可能な順にパケットを振り分けるパケット振り分け方法では、すべてのパケット処理部が同じ処理を行う必要がある。例えば、ＩＰ（Ｉｎｔｅｒｎｅｔ  Ｐｒｏｔｏｃｏｌ）ルーティングを並列処理させる場合には、すべてのルーティング情報をすべてのパケット処理部に持たせておく必要がある。そのため、コストがかかるという問題があった。
【０００８】
また、特許文献１に記載のフロー毎の統計に基づくパケット振り分け方法では、入力トラヒックが極端に偏り、フロー数がパケット処理部の個数より少ない状況、例えば、全入力トラヒックが同一フローとなる状況では、複数のパケット処理部へのパケットの振り分けが行われず、並列処理が実施されないという問題があった。
【０００９】
本発明は、上記に鑑みてなされたものであって、複数のパケット処理部のそれぞれにすべてのパケット処理情報を持たせて処理を行う必要がなく、入力トラヒックに偏りがあってもパケットを複数のパケット処理部に振り分けて並列処理が可能なパケット並列処理装置およびパケット並列処理方法を得ることを目的とする。
【課題を解決するための手段】
【００１０】
上述した課題を解決し、目的を達成するために、本発明にかかるパケット並列処理装置は、入力されるパケットを振り分けることによりパケット処理の負荷の分散を図る負荷分散部と、前記パケットに施す処理情報を管理するパケット処理情報管理部と、前記パケット処理情報管理部が管理するパケット処理情報に基づいて前記負荷分散部により振り分けられた前記パケットに所定の処理を施す複数のパケット処理部と、を備えたパケット並列処理装置であって、前記負荷分散部は、前記パケットのヘッダ情報を解析するヘッダ解析部と、前記パケットのヘッダ情報の解析結果に応じてパケット処理部を特定するためのパケット処理部リストを管理する振り分け情報管理部と、前記パケット処理部を決定して前記パケットを振り分けるパケット振り分け部と、前記パケット処理部それぞれに振り分けられた前記パケットの量を計数し、前記パケット処理部それぞれに対になって設けられた統計情報収集部と、を備えることを特徴とする。
【発明の効果】
【００１１】
本発明によれば、パケットの並列処理において、パケットの振り分けを統計情報収集部が計数するパケットの量に基づいて行うことにより、パケット処理の負荷が複数のパケット処理部になるべく均等になるように配分され、パケット処理能力が向上するという効果がある。
【発明を実施するための最良の形態】
【００１２】
以下に、本発明にかかるパケット並列処理装置の実施の形態を図面に基づいて詳細に説明する。なお、この実施の形態によりこの発明が限定されるものではない。
【００１３】
実施の形態１．
図１は、本発明の実施の形態１にかかるパケット並列処理装置としての通信装置の構成を示すブロック図である。図１に示すように、本実施の形態の通信装置は、パケットが入力するパケット入力端子４と、入力したパケットをパケット処理の負荷の分散を図るように振り分ける負荷分散部１と、振り分けられたパケットのそれぞれ振り分け先であると共に入力したパケットに所定の処理を施して出力する複数（ここでは、Ｎ個とする。但し、Ｎは２以上の整数）のパケット処理部２−１〜２−Ｎと、パケット処理に用いる情報をテーブルとして管理するパケット処理情報管理部３と、パケット処理部２−１〜２−Ｎにて処理されたパケットがそれぞれ出力されるパケット出力端子５−１〜５−Ｎと、を備えて構成される。
【００１４】
図２は、本実施の形態において、負荷分散部１の構成を示すブロック図である。図２に示すように、負荷分散部１は、入力されたパケットのヘッダを解析するヘッダ解析部１１と、パケットの振り分けが可能なパケット処理部のリストを振り分け情報として管理する振り分け情報管理部１２と、パケットの振り分け先であるパケット処理部を決定し、そこへパケットを送出するパケット振り分け部１３と、それぞれパケット処理部２−１〜２−Ｎに振り分けられたパケットの量を計数して統計情報として保持する統計情報収集部１４−１〜１４−Ｎと、を備えて構成される。
【００１５】
図３は、本実施の形態において、パケット処理部２−１〜２−Ｎの構成を示すブロック図である。図３に示すように、パケット処理部２−１〜２−Ｎは、それぞれ、パケット処理情報分散管理部２１−１〜２１−Ｎと、パケット処理メイン部２２−１〜２２−Ｎと、を備えて構成される。例えば、パケット処理部２−１は、パケット処理情報分散管理部２１−１と、パケット処理メイン部２２−１と、を備えて構成される。パケット処理情報分散管理部２１−１〜２１−Ｎには、図１のパケット処理情報管理部３で管理しているパケット処理情報が分散して管理されており、パケット処理情報分散管理部２１−１〜２１−Ｎは、それぞれパケット処理情報管理部３で管理しているパケット処理情報の一部を保持している。また、パケット処理メイン部２２−１〜２２−Ｎは、それぞれパケット処理情報分散管理部２１−１〜２１−Ｎに格納されたパケット処理情報にしたがってパケット処理を行う。
【００１６】
また、図４は、振り分け情報管理部１２にて管理する情報の一例を示す図である。図４は、ヘッダ解析部１１の解析結果であるフローを示すアドレス（この場合、フローハッシュ値）ごとに、パケットを振り分け可能な振り分け先であるパケット処理部をリストとして与えるものであり、＜ａ＞は初期状態での管理情報、＜ｂ＞はある時間経過後の管理情報を示す。なお、図４においては、例えば、パケット処理部２−１、パケット処理部２−２と記載する代わりに、＃１、＃２と略記している。また、このような略記法を以下で適宜用いるものとする。
【００１７】
また、図５−１および図５−２は、本実施の形態におけるパケット処理情報の一例を示す図であり、図５−１は、パケット処理情報管理部３にて管理する情報を、図５−２は、パケット処理情報分散管理部２１−２にて管理する情報を示す図である。
【００１８】
図５−１は、フローを示すアドレスよりパケットに施す処理の内容が得られるテーブル形式の図であり、Sｒｃ  Ａｄはフローの送信元アドレスを、Ｄｓｔ  Ａｄはフローの宛先アドレスを示す。また、｛Ｘ，Ｙ｝はｂｉｔの連結を示し、Ｘが上位、Ｙが下位となるｂｉｔ（ビット）列を示している。さらに、図５−１では、送信元および宛先アドレスを入力として特定のハッシュ関数を用いて得られたハッシュ値も表示している。なお、図５−１に示す表形式の情報は、特に外部から内容を更新しない限りは、時間経過後も変化が無いものとする。
【００１９】
図５−２の情報は、図５−１の情報の一部であり、＜＃２ａ＞は初期状態での管理情報、＜＃２ｂ＞はある時間経過後の管理情報を示す。すなわち、図５−２の分散管理領域に管理されている情報は、図５−１におけるパケット処理情報分散管理部＃２の管理情報であり、パケット処理情報管理部３に管理されているすべてのパケット処理情報をパケット処理部の個数で均等に分割した量のパケット処理情報が管理されていることが好ましい。また、パケット処理情報分散管理部２１−２は、分散管理領域に加えてコピー領域を備えており、コピー領域には図５−１に示すパケット処理情報の一部をコピーして管理することができる。
【００２０】
なお、図５−２では、パケット処理情報分散管理部２１−２にて管理する情報の一例を示したが、他のパケット処理情報分散管理部にて管理する情報も同様の形式であり、図５−１では、パケット処理情報分散管理部＃１〜＃Ｎにてそれぞれ管理される情報が示されている。このようなパケット処理情報の一覧に対して、本装置に入力されたパケットのフローを示すアドレスを検索鍵として検索することにより、入力されたパケットに施す処理の内容を得ることができる。
【００２１】
ここで、図４の情報と図５−１および図５−２の情報との関係について説明する。図５−１および図５−２のように、フローを示すアドレスを検索鍵としてテーブルを検索するケースにおいては、検索鍵のｂｉｔ（ビット）長は比較的長くなる。検索鍵が長いテーブル検索には多大な処理時間を費やすことが一般的に知られている。そこで、本通信装置の構成においては、ヘッダ解析部１１では高速な処理が要求されるため、検索鍵をハッシュ関数にて短くすることで検索処理時間を短縮することを図っており、そのためのハッシュテーブルが図４で示す情報となっている。
【００２２】
次に、上述のように構成された本実施の形態の動作について、図１〜図６を参照して説明する。図６は、本実施の形態において、負荷分散部１におけるパケット振り分け処理の手順を示すフローチャートである。
【００２３】
入力端子４より入力したパケットが負荷分散部１へ転送されると、負荷分散部１では、まずヘッダ解析部１１において、パケットのヘッダ内のフローを示すアドレスに、予め規定されているハッシュ関数を適用してハッシュ値を求める（図６のＳ１０１）。次に、得られたハッシュ値を検索鍵として、図４に示された振り分け情報管理部１２にて管理する振り分け情報を検索し、パケットを振り分け可能なパケット処理部のリストを得る（Ｓ１０２）。振り分け情報管理部１２にて管理する振り分け情報に、検索鍵に該当する検索結果が無い場合、またはリストにいずれのパケット処理部も記載されていない場合には（Ｓ１０３）、パケットには予め決められたデフォルト処理を施してパケット処理を完了させる（Ｓ１０４）。このデフォルト処理の例としては、パケットを廃棄する、または、パケットをパケット処理部＃１へ転送し、統計情報収集部＃１で統計量を計数する、などがある。
【００２４】
振り分け情報管理部１２にて管理する振り分け情報から該当する検索結果を取得できた場合には、次に、リストで示されたパケット処理部２と対になっている統計情報収集部１４から計数値である統計量を取得する（Ｓ１０５）。ここで、パケット処理部２と対になっている統計情報収集部１４とは、Ｎ個のパケット処理部２とＮ個の統計情報収集部１４をそれぞれ区別する符号の枝番が相互に一致する対を意味し、例えば、パケット処理部２−１は統計情報収集部１４−１と対になっている。そして、これらの統計量のうちで最も小さい統計量を求め（Ｓ１０６）、最も小さい統計量を与える統計情報収集部１４と対になっているパケット処理部２にパケットを振り分ける（Ｓ１０７）。ここで、統計情報収集部１４の保持する統計量は、それと対になっているパケット処理部２へ振り分けられたパケットの量に関する統計量であり、値が大きいほどパケット処理の負荷が大きいことを示す。パケット処理部２へのパケットの振り分けと同時に、この振り分けられたパケットの量を統計量として加算するために、統計情報収集部１４にて統計量を計数する（Ｓ１０８）。
【００２５】
次に、統計情報収集部１４−１〜１４−Ｎの統計量を定期的に調べ、振り分け情報管理部１２が管理する情報、およびパケット処理情報分散管理部２１−１〜２１−Ｎが管理する情報を動的に変更することにより、パケット処理の負荷を分散させてパケットの並列処理を行う方法の詳細について説明する。
【００２６】
本通信装置においては、振り分け情報管理部１２が管理する情報として、初期状態では、図４における＜ａ＞の情報が設定されている。図４に示すように、＜ａ＞にリストされたパケット処理部は、フローハッシュ値（以下、ハッシュ値という）ごとに１個に限定されている。例えばハッシュ値が０ｘ００１であった場合には、振り分け先はパケット処理部２−１に一意に決定されるので、このパケット処理部２−１にパケットを振り分けるとともに、統計情報収集部１４−１にて統計量を計数する。
【００２７】
パケット処理部２−１では、パケットが振り分けられると、パケット処理メイン部２２−１はフローを示すアドレスを検索鍵として、パケット処理情報分散管理部２１−１が管理する情報を検索する。ここで、パケット処理情報分散管理部２１−１が管理する情報は、図５−１のパケット処理情報分散管理部＃１の管理情報で示された情報である。仮にアドレスが｛ｓｒｃ１１，ｄｓｔ１１｝であった場合には、パケット処理部２−１はこのパケットに処理Ｅを適用し、その後パケットはパケット出力端子５−１より出力する。なお、｛Ｘ，Ｙ｝はｂｉｔの連結を示し、Ｘが上位、Ｙが下位となるｂｉｔ列を示している。
【００２８】
その後、入力トラヒックが偏り、ハッシュ値が０ｘ０００〜０ｘ００３のパケットの本通信装置への到着数が他のハッシュ値のパケットより多くなったケースを考える。このケースでは、負荷分散部１はパケットを均等に振り分けられず、パケット処理２−１の処理負荷が高くなる。
【００２９】
そこで、後述する方法により、パケット処理情報管理部３が振り分け情報管理部１２とパケット処理情報分散管理部２１−２〜２１−Ｎの管理情報を書き換える。これにより、振り分け情報管理部１２は、図４における＜ｂ＞の情報を管理し、例えばパケット処理情報分散管理部２１−２は、図５−２における＜＃２ｂ＞の情報を管理することになる。図５−２における＜＃２ｂ＞では、分散管理領域に加えて、コピー領域にもパケット処理情報が管理されている。この分散管理領域における管理情報は、＜＃２ａ＞で示された初期状態における分散管理領域の管理情報と同じものであり、一方、このコピー領域における管理情報は、図５−１におけるパケット処理情報分散管理部＃１の管理情報と同じものである。
【００３０】
この状態において、アドレスが｛ｓｒｃ１１，ｄｓｔ１１｝であるパケットが負荷分散部１に入力されると、前述と同様の処理を行うことで、ハッシュ値が０ｘ００１のパケットを振り分け可能なパケット処理部のリストとして、パケット処理部２−１〜２−Ｎのすべてが得られる（図４における＜ｂ＞を参照）。次に、統計情報収集部１４−１〜１４−Ｎの統計量をそれぞれ取得する。そして、これらの統計量のうちで最も小さい統計量を与える統計情報収集部を特定し、これと対となっているパケット処理部を求める。
【００３１】
このとき、統計情報収集部１４−１の統計量が最も大きくなっているため、パケット処理部２−１は選択されない。したがって、パケット処理部２−２〜２−Ｎの中から対応する統計量が最も小さいパケット処理部が選択されることになる。仮に統計情報収集部１４−２の統計量が最も小さい場合には、パケット処理部２−２が選択され、統計情報収集部１４−２で統計量を加算し、パケットをパケット処理部２−２へ転送する。
【００３２】
次に、パケット処理部２−２にてフローを示すアドレスを検索鍵として、図５−２における＜＃２ｂ＞の情報を検索すると、このアドレス｛ｓｒｃ１１，ｄｓｔ１１｝はコピー領域に含まれているため、このパケットには処理Ｅを適用することが求められる。そこで、このパケットにパケット処理Ｅを適用し、パケット出力端子５−２より出力する。
【００３３】
このように、振り分け情報とパケット処理情報を更新することで、特定のパケット処理部のみに処理負荷が偏ることなく、均等にパケットを振り分け、効率の良いパケット並列処理が可能となる。
【００３４】
ここで、パケット処理情報管理部３が振り分け情報管理部１２の管理情報とパケット処理情報分散管理部２１−２〜２１−Ｎの管理情報を書き換える方法について、図７を参照して説明する。図７は、パケット処理情報管理部３における情報更新処理の手順を示すフローチャートであり、パケット処理情報管理部３は定期的に本フローを実行する。
【００３５】
まず、パケット処理情報管理部３は、統計情報収集部１４−１〜１４−Ｎからすべての統計量を収集する。これらをＳＴＡＴ＃１〜＃Ｎとする（Ｓ２０１）。次に、既存コピーの有無により、コピー元番号が有効かどうかを判定する（Ｓ２０２）。ここでコピー元番号とは、パケット処理情報分散部２１のコピー領域に、図５−１に示すパケット処理情報分散管理部＃１〜＃Ｎの管理情報のいずれかがコピーされているときに、コピーされている管理情報の識別番号（＃１〜＃Ｎ）を表す。本通信装置の動作当初は、コピー領域には既存のコピーが無いため、コピー元番号が有効ではないとしてコピー処理に進む。
【００３６】
コピー処理では、まず、ＳＴＡＴ＃１〜＃Ｎの中から最も大きなものを求める。これをＳＴＡＴ＃Ｍとする（Ｓ２０３）。次に、ＳＴＡＴ＃Ｍとコピーしきい値とを比較する（Ｓ２０４）。ここで、コピーしきい値とは、パケット処理部２に過大な負荷が掛かっているかどうかを判別するための値である。ＳＴＡＴ＃Ｍがコピーしきい値以下の場合には、パケット処理部２−Ｍにはそれほど処理負荷が掛かっていないと見なし、処理を終了する。一方、ＳＴＡＴ＃Ｍがコピーしきい値を超えていた場合には、パケット処理部２−Ｍに過大な処理負荷が掛かっているものと判断し、他のパケット処理部へもパケットを振り分けるように情報を更新する。
【００３７】
図５−２に示すように、すべてのパケット処理情報分散管理部２１はコピー領域を持つ。パケット処理情報分散管理部２１−Ｍを除いたすべてのパケット処理情報分散管理部２１のコピー領域に、図５−１で示したパケット処理情報分散管理部＃Ｍの管理情報をコピーする（Ｓ２０５）。次に、図４に示した振り分け情報管理部１２の情報のうち、パケット処理情報分散管理部２１−Ｍに対応するハッシュ値と対になるパケット処理部リスト情報を、すべてのパケット処理部とする（Ｓ２０６）。すなわち、振り分け情報管理部１２の情報のうち、＜ａ＞において振り分け可能パケット処理部リストがパケット処理部２−Ｍとなっているハッシュ値に対して、＜ｂ＞ではそのハッシュ値に対応するパケット処理部のリスト情報をすべてのパケット処理部２−１〜２−Ｎとする。なお、図４に示す例では、Ｍ＝１の場合に相当している。さらに、不要な情報を削除するため、パケット処理情報分散管理部２１−Ｍのコピー領域をクリアし（Ｓ２０７）、これ以降のコピークリア処理に必要となるコピー元番号を＃Ｍに更新する（Ｓ２０８）。コピー元番号は、パケット処理情報分散管理部２１に管理されている。
【００３８】
ここまでの操作により、例えばＳＴＡＴ＃１が最も大きな値で、かつこの値がコピーしきい値を超えていた場合、図４における＜ｂ＞と図５−２における＜＃２ｂ＞に示したとおりの情報更新を行うことが可能となり、入力トラヒックが偏ったケースにおいても、パケットをパケット処理部２−１〜２−Ｎに均等に振り分けることが可能となる。
【００３９】
さらに、一定時間経過後、再び本フローが開始される。処理Ｓ２０１とＳ２０２を実行する。既存コピーがある場合には、現在もそのコピーが必要かどうかを判定する。まず、コピー元番号が有効な値である場合はその番号を呼び出し、ここではその番号をＫとする（Ｓ２０９）。次に、ＳＴＡＴ＃Ｋとコピー停止しきい値とを比較する（Ｓ２１０）。ここで、コピー停止しきい値とは、パケット処理部２の処理負荷が定常に戻ったかどうかを判別するための値である。ＳＴＡＴ＃Ｋがコピー停止しきい値以上である場合は、未だ入力トラヒックの偏りが解消されていないと判断し、コピー情報は現状のままとし、これ以上何もせず処理を終了する。
【００４０】
一方、ＳＴＡＴ＃Ｋがコピー停止しきい値を下回った場合には、入力トラヒックの偏りが解消されたと判断し、既存のコピー内容を削除する。まず、振り分け情報管理部１２のうち、パケット処理情報分散管理部＃Ｋに対応するハッシュ値と対になるパケット処理部リスト情報を初期値に戻す（Ｓ２１１）。これにより、リストにはパケット処理部２−Ｋだけが残るようになる。次にパケット処理情報分散管理部２１−１〜２１−Ｎのすべてのコピー領域をクリアする（Ｓ２１２）。なお、パケット処理情報分散管理部２１−１〜２１−Ｎのすべてに対してでは無く、パケット処理情報分散管理部２１−Ｋを除いてクリア処理を行っても同等の結果が得られる。最後にコピー元番号をクリアする（Ｓ２１３）。クリアした後は、現在の処理負荷に応じてパケット処理部の負荷を分散させるため、処理Ｓ２０３以降の処理を継続して行う（図７におけるＳ２１３に続く‘１’、およびＳ２０２からＳ２０３の間の‘１’を参照）。なお、上記の例では、図７に示すフローを定期的に行うとしたが、これに限定されず、例えば、図７に示すフローのＥＮＤまで処理を行うとすぐにＳＴＡＲＴに戻って処理を繰り返す（無限ループ）ものであってもよい。この例では、ＳＴＡＲＴからＥＮＤまでの処理時間は不定であるため、パケット処理情報管理部３が統計情報収集部１４−１〜１４−Ｎから計数値である統計量を取得する時間間隔は、一定時間ごとではない。
【００４１】
また、上記の例では、図７のフローチャートに示すように、統計量にしたがってパケット処理部を１個だけ選択しているが、この選択の個数に特に制限はなく、統計量の多い順にパケット処理部を複数選択し、その統計量の比率等にしたがって他のパケット処理部が管理するパケット処理情報のコピー領域に、該当するパケット処理情報をコピーしても良い。例えば、パケット処理部が８個あり、統計量の多い順にパケット処理部を３個選択し（例えば、パケット処理部＃１、＃２、＃３とする）、その統計量の比率が３：３：２であった場合、パケット処理部＃４、＃５にはパケット処理情報分散管理部＃１の管理情報をコピーし、パケット処理部＃６、＃７にはパケット処理情報分散管理部＃２の管理情報をコピーし、パケット処理部＃８にはパケット処理情報分散管理部＃３の管理情報をコピーすることで、それぞれのパケット処理部に適切な配分でパケットを振り分けることが可能となる。
【００４２】
さらにまた、上記の例では、図５−２に示すように、パケット処理情報分散管理部２１−１〜２１−Ｎのコピー領域には、１個の分散管理領域の内容をコピーすることができるが、複数の分散管理領域の内容をすべてコピーすることができるようにしてもよい。このような構成によれば、例えば、特に処理負荷の小さいパケット処理部のコピー領域に、他の複数のパケット処理部から分散管理領域の内容をコピーすることにより、他のパケット処理部からこの特に負荷の少ないパケット処理部へパケットを振り分けて負荷を分散することができる。
【００４３】
ここで、本実施の形態の通信装置が処理するパケットのフォーマットについて一例を示して説明する。図８は、ＩＰｖ４（Ｉｎｔｅｒｎｅｔ Ｐｒｏｔｏｃｏｌ ｖｅｒｓｉｏｎ ４）パケットをＥｔｈｅｒｎｅｔ（登録商標）フレームに格納して転送する場合のフォーマットを示す図である。図８に示すように、このフォーマットは、Ｅｔｈｅｒｎｅｔ（登録商標）ヘッダ６０、ＩＰｖ４ヘッダ６１、ＩＰパケットのデータであるペイロード（Ｐａｙｌｏａｄ）６２、およびＥｔｈｅｒｎｅｔ（登録商標）トレイラであるフレームチェックシーケンス（ＦＣＳ）６３を含んでいる。
【００４４】
本通信装置がレイヤ２の処理を行う装置である場合、フローはＥｔｈｅｒｎｅｔ（登録商標）ヘッダ６０における宛先のＭＡＣ（Ｍｅｄｉａ Ａｃｃｅｓｓ Ｃｏｎｔｒｏｌ）アドレスであるＤｅｓｔｉｎａｔｉｏｎ ＭＡＣ Ａｄｄｒｅｓｓと送信元のＭＡＣアドレスであるＳｏｕｒｃｅ ＭＡＣ Ａｄｄｒｅｓｓとの組で認識される。さらに、Ｔｙｐｅを含めてフローの細分化を行うケースもある。
【００４５】
また、本通信装置がレイヤ３の処理を行う装置である場合、フローはＩＰｖ４ヘッダ６１における送信元のＩＰアドレスであるＳｏｕｒｃｅ ＩＰ Ａｄｄｒｅｓｓと宛先のＩＰアドレスであるＤｅｓｔｉｎａｔｉｏｎ ＩＰ Ａｄｄｒｅｓｓとの組で認識される。さらに、Ｐｒｏｔｏｃｏｌおよびレイヤ４のデータを含めてフローを細分化するケースもある。いずれのケースでも、本実施の形態のパケット並列処理を行うことが可能である。
【００４６】
また、フローの認識が不要で宛先のみ分かれば良いレイヤ２／３スイッチのような装置では、Ｄｅｓｔｉｎａｔｉｏｎ ＭＡＣ ＡｄｄｒｅｓｓまたはＤｅｓｔｉｎａｔｉｏｎ ＩＰ Ａｄｄｒｅｓｓのみで宛先を識別するといったケースもある。
【００４７】
上記のいずれのケースにおいても、ヘッダ解析部１１では、必要な情報を抽出し、ハッシュ関数を適用してフローのハッシュ値を得て、パケットを振り分ける処理を行う。また、パケットを振り分けられたパケット処理部２−１〜２−Ｎでは、アドレスなどの組を検索鍵としてパケット処理情報分散管理部２１を検索し、得られた処理情報に基づいたパケット処理を並列に行う。また、特に図示はしないが、ＩＰｖ６、ＭＰＬＳ（Ｍｕｌｔｉ−Ｐｒｏｔｏｃｏｌ Ｌａｂｅｌ Ｓｗｉｔｃｈｉｎｇ）、またはＲＰＲ（Ｒｅｓｉｌｉｅｎｔ Ｐａｃｋｅｔ Ｒｉｎｇ）といった異なるパケットフォーマットを扱う通信装置であっても、同様の処理によりパケットの並列処理が行えることは自明である。
【００４８】
また、通信装置によっては図１に示すパケット処理部２−１〜２−Ｎの後段に、各パケットを多重化する多重化部が追加される構成となるケースがある。この場合、多重化部の出力において、パケットの出力順序をパケットの受信順序と同じ順序とする機能が必要となるケースもあるが、これには例えば、パケット振り分け部１３においてパケットにシーケンス番号を付与し、多重化部でシーケンス番号順にパケットを出力することで、パケット並列処理自体には影響を及ぼさずに多重化を実現することができる。
【００４９】
また、統計情報収集部１４−１〜１４−Ｎにおいて計数する統計量について説明する。パケットのスイッチング処理およびヘッダの書き換え処理などのように、パケット処理能力が受信したパケット数に比例する通信装置においては、振り分けたパケット数を計数することとする。一方、暗号化および誤り訂正符号のように、パケット処理能力が受信したパケットのｂｙｔｅ（バイト）数に比例する通信装置においては、振り分けたパケットデータのｂｙｔｅ数を計数することとする。これにより統計量が処理負荷を正しく表せるようになる。また、図２のパケット振り分け部１３からのパケット出力側に、それぞれパケット処理部２−１〜２−Ｎに対応したキューを持たせる構成とし、このキューによりパケット処理部が処理可能なタイミングで出力されたパケットの量を読み出すものとすると、統計情報収集部１４−１〜１４−Ｎにてこのキューに蓄積されたパケット数またはパケットｂｙｔｅ数を計数することで、統計量を表すことも可能である。
【００５０】
本実施の形態によれば、パケット処理情報管理部が管理するパケット処理情報を複数のパケット処理分散管理部に分散して管理させてパケットの並列処理を行うようにしたので、複数のパケット処理部のそれぞれにすべてのパケット処理情報を持たせる必要が無く、コストを低減できるという効果を奏する。また、パケットの振り分けを統計情報収集部の統計量に基づいて行うようにしたので、パケット処理の負荷が複数のパケット処理部へなるべく均等になるように配分され、パケット処理能力が向上するという効果がある。
【００５１】
また、本実施の形態によれば、パケット処理情報管理部が一定時間ごとに統計情報収集部の統計量を調べ、パケット処理の処理負荷を複数のパケット処理部になるべく均等に配分するように、振り分け情報管理部の管理情報とパケット処理情報分散管理部の管理情報を更新するようにしたので、入力トラヒックに偏りが生じても、複数のパケット処理部へパケットを振り分けて並列処理をすることが可能となり、パケット処理能力の向上が可能となる。
【００５２】
また、本実施の形態によれば、上記コピーしきい値を上記コピー停止しきい値より大きな値とすることで、パケット処理情報の更新処理にヒステリシス特性を持たせることができ、パケット処理情報の更新回数を低減することができる。そのため、パケット処理情報管理部３の処理能力を抑えてもパケット処理の実施が可能となる。
【００５３】
実施の形態２．
図９は、本発明の実施の形態２にかかるパケット並列処理装置としての通信装置において、負荷分散部１の構成を示すブロック図である。図９に示すように、本実施の形態における負荷分散部１は、振り分け統計情報収集部１５を含んでいる。振り分け統計情報収集部１５は、パケットのフローを示すアドレスから計算したハッシュ値ごとに、振り分けられたパケットの統計量を計数するものである。なお、本実施の形態のその他の構成は、図１〜図３に示す実施の形態１の構成と同様である。そのため、同一の構成物には同一の符号を付して、その詳細な説明を省略する。
【００５４】
また、図１０は、本実施の形態において、振り分け情報管理部１２にて管理する情報の一例を示す図である。図１０においては、＜ａ＞は初期状態での管理情報、＜ｂ＞はある時間経過後の管理情報を示す。図５−３は、本実施の形態において、パケット処理情報分散管理部２１−２にて管理するパケット処理情報の一例を示す図である。また、本実施の形態におけるパケット処理情報管理部３にて管理するパケット処理情報は、図５−１に示す実施の形態１におけるパケット処理情報と同じものとする。なお、図５−１に示す表形式の情報は、特に外部から内容を更新しない限りは、時間経過後も変化がないものとする。図５−３の情報は図５−１の情報の一部であり、＜＃２ａ＞は初期状態での管理情報、＜＃２ｂ＞はある時間経過後の管理情報を示す。ここで、図１０と、図５−１、図５−３との関係は実施の形態１で示した関係と同じである。
【００５５】
次に、本実施の形態の動作について、図１〜図１１を参照して説明する。図１１は、本実施の形態において、負荷分散部１におけるパケット振り分け処理の手順を示すフローチャートである。図１１は、実施の形態１における対応するフローチャートである図６と比較して、処理Ｓ１０９が追加されている点のみ異なる。したがって、処理Ｓ１０８までは実施の形態１と同じである。負荷分散部１では、処理Ｓ１０８の次に、振り分け統計情報収集部１５にて、検索したハッシュ値に該当する統計量を計数する処理を行う（Ｓ１０９）。
【００５６】
本通信装置においては、振り分け情報管理部１２が管理する情報として、初期状態では、図１０における＜ａ＞の情報が設定されている。図１０に示すように、＜ａ＞にリストされたパケット処理部は、ハッシュ値ごとに１個に限定されている。例えばハッシュ値が０ｘ００１であった場合には、振り分け先はパケット処理部２−１に一意に決定されるので、このパケット処理部２−１にパケットを振り分けるとともに、統計情報収集部１４−１にて統計量を計数する。さらに、振り分け統計情報収集部１５にて、このハッシュ値０ｘ００１に対する統計量を計数する。また、統計量は、実施の形態１で説明したように、例えば、パケット数またはパケットのバイト数である。続いてパケット処理部２−１にて行う処理は、実施の形態１と同じである。
【００５７】
その後、入力トラヒックが偏り、例えば、ハッシュ値が０ｘ００１、０ｘ００８のパケットの本通信装置への到着数が他のハッシュ値のパケットより多くなったケースを考える。このケースでは、負荷分散部１はパケットを均等に振り分けられず、パケット処理部２−１、２−３の処理負荷が高くなる。
【００５８】
そこで、後述する方式により、パケット処理情報管理部３が振り分け情報管理部１２の管理情報とパケット処理情報分散管理部２１−２〜２１−Ｎの管理情報を書き換える。これにより、振り分け情報管理部１２は、図１０における＜ｂ＞の情報を管理し、例えばパケット処理情報分散管理部２１−２は、図５−３における＜＃２ｂ＞の情報を管理することになる。図５−３における＜＃２ｂ＞では、分散管理領域に加えて、コピー領域にもパケット処理情報が管理されている。このコピー領域における管理情報は、ハッシュ値が０ｘ００１、０ｘ００８に相当する情報であり、それぞれ図５−１におけるパケット処理情報分散管理部＃１の管理情報とパケット処理情報分散管理部＃３の管理情報から一部コピーされたものである。
【００５９】
この状態において、アドレスが｛ｓｒｃ１１，ｄｓｔ１１｝であるパケットが負荷分散部１に入力されると、前述と同様の処理を行うことで、ハッシュ値が０ｘ００１のパケットを振り分け可能なパケット処理部のリストとして、パケット処理部２−１〜２−Ｎのすべてが得られる（図１０における＜ｂ＞を参照）。次に、統計情報収集部１４−１〜１４−Ｎの統計量をそれぞれ取得する。そして、これらの統計量のうちで最も小さい統計量を与える統計情報収集部を特定し、これと対となっているパケット処理部を求める。
【００６０】
このとき、統計情報収集部１４−１、１４−３の統計量が大きくなっているため、パケット処理部２−１、２−３は選択されない。したがって、パケット処理部２−２、２−４〜２−Ｎの中から対応する統計量が最も小さいパケット処理部が選択されることになる。仮に統計情報収集部１４−２の統計量が最も小さい場合には、パケット処理部２−２が選択され、統計情報収集部１４−２で統計量を加算し、パケットをパケット処理部２−２へ転送する。さらに、ハッシュ値０ｘ００１に対応する統計量を振り分け統計情報収集部１５にて計数する。
【００６１】
次に、パケット処理部２−２にてフローを示すアドレスを検索鍵として、図５−３における＜＃２ｂ＞の情報を検索すると、このアドレス｛ｓｒｃ１１，ｄｓｔ１１｝はコピー領域に含まれているため、このパケットには処理Ｅを適用することが求められる。そこで、このパケットにパケット処理Ｅを適用し、パケット出力端子５−２より出力する。
【００６２】
このように、振り分け情報とパケット処理情報を更新することで、特定のパケット処理部のみに偏ることなく、均等にパケットを振り分け、効率の良いパケット並列処理が可能となる。
【００６３】
ここで、パケット処理情報管理部３が振り分け情報管理部１２の管理情報とパケット処理情報分散管理部２１−２〜２１−Ｎの管理情報を書き換える方法について、図１２−１および図１２−２を参照して説明する。図１２−１は、パケット処理情報管理部３における情報更新処理の手順を示すフローチャートであり、パケット処理情報管理部３は定期的に本フローを実行する。また、図１２−２は、図１２−１に続く処理手順を示すフローチャートであり、接続箇所を‘２’で示している。
【００６４】
まず、パケット処理情報管理部３は、統計情報収集部１４−１〜１４−Ｎからすべての統計量を収集する。これらをＳＴＡＴ＃１〜＃Ｎとする（図１２−１のＳ３０１）。次に、コピー元ハッシュ値を呼び出し、これは次元がＰの配列Ｈに格納されるものとする（Ｓ３０２）。なお、配列Ｈの次元Ｐについては後述する。そして、既存コピーが一つでも存在するかどうかにより、有効なコピー元ハッシュ値がＨに一つでも存在するかどうかの判定を行う（Ｓ３０３）。ここでコピー元ハッシュ値とは、パケット処理情報分散管理部２１のコピー領域に、図５−１に示すパケット処理情報がコピーされているときに、コピーされているパケット処理情報のハッシュ値を表す。本通信装置の動作当初は、コピー領域には既存コピーが無いため、有効なコピー元ハッシュ値はないと判定してコピー処理に進む。
【００６５】
コピー処理では、まず、ＳＴＡＴ＃１〜＃Ｎの中から大きな順にＱ個抽出する。Ｑは例えば、Ｎである。そして、これを大きさＱの配列Ｍを用いて、ＳＴＡＴ＃Ｍ［１〜Ｑ］と表す（図１２−２のＳ３０４）。次に、Ｍ［１〜Ｑ］の順に以降のループ処理を行う（コピー追加１ループ）。
【００６６】
コピー追加１ループでは、パケット処理部２ごとの処理負荷を判定し、パケットの振り分けの必要性を判定する。Ｉ番目のループにおいて、まず、ＳＴＡＴ＃Ｍ［Ｉ］とコピーしきい値１とを比較する（Ｓ３０５）。ここで、コピーしきい値１とは、パケット処理部２に過大な負荷が掛かっているかどうかを判別するための値である。ＳＴＡＴ＃Ｍ［Ｉ］がコピーしきい値１以下の場合には、パケット処理部２−Ｍ［Ｉ］にはそれほど処理負荷が掛かっていないと見なし、情報更新処理フローを終了する。一方、ＳＴＡＴ＃Ｍ［Ｉ］がコピーしきい値１を超えていた場合には、パケット処理部２−Ｍ［Ｉ］に過大な処理負荷が掛かっているものと判断し、次のステップへ進む。次に、パケット処理情報分散管理部＃Ｍ［Ｉ］が管理する処理情報のハッシュ値ごとの統計量を振り分け統計情報収集部１５から取得し、取得した統計量を大きな順に並べ替える。これをＨＳＴＡＴ＃１〜＃Ｒとする（Ｓ３０６）。ここで、Ｒはパケット処理情報分散管理部＃Ｍ［Ｉ］に割り当てられたハッシュ値の個数であり、図５−３の例では、Ｒ＝４である。すなわち、図５−３における＜＃２ａ＞に示すように、ハッシュ値は、０ｘ００４、０ｘ００５、０ｘ００６、０ｘ００７の４個となっている。さらに、引き続きループ処理を行う（コピー追加２ループ）。
【００６７】
コピー追加２ループでは、ハッシュ値ごとにパケットの振り分けの必要性を判定する。Ｊ番目のループにおいて、まず、コピー元ハッシュ値Ｈに空きがあるか否かを確認する（Ｓ３０７）。空きが無ければ情報更新処理フローを終了するが、本通信装置の動作当初は、既存コピーが無いため次のステップへ進む。次に、ＨＳＴＡＴ＃Ｊとコピーしきい値２とを比較する（Ｓ３０８）。ここで、コピーしきい値２とは、特定のハッシュ値だけに入力トラヒックが偏っているかどうかを判別するための値である。コピーしきい値２以下であれば、そのハッシュ値に関してはパケットの振り分けを行わないため、コピー追加２ループを継続する。
【００６８】
ここで、パケット処理部２−１の統計量がコピーしきい値１を上回り、さらにハッシュ値０ｘ００１の統計量がコピーしきい値２を上回っていたとすると、パケット処理部２−２〜２−Ｎにもハッシュ値０ｘ００１のパケットを振り分けられるようにパケット処理情報をコピーする。そこで、パケット処理部２−２〜２−Ｎのコピー領域に、ハッシュ値が０ｘ００１であるパケット処理情報を１個ずつコピーする（Ｓ３０９）。図５−１によると、フロー｛ｓｒｃ１１，ｄｓｔ１１｝がこれに該当する。ただし、既存コピー数がパケット処理部ごとに異なるため、一部またはすべてのパケット処理部でこのフローをコピーできるとは限らず、コピー領域に空きが無くなったパケット処理部にはコピーを行わない。次に、振り分け情報管理部１２が管理する振り分け情報において、ハッシュ値０ｘ００１と対になるリスト情報を、コピーができた全パケット処理部を示すリスト情報に更新する（Ｓ３１０）。さらに、コピー元ハッシュ値を記憶するため、空き先頭のＨ［］にハッシュ値０ｘ００１を格納し（Ｓ３１１）、コピー追加２ループの先頭に戻り、パケット処理部２−１に関するすべてのハッシュ値に対して同様な処理を行う。さらに、コピー追加１ループに戻り、Ｑ個のパケット処理部に対して同様な処理を行う。
【００６９】
ここで、例えば、もう一つ、パケット処理部２−３の統計量がコピーしきい値１を上回り、さらにハッシュ値０ｘ００８の統計量がコピーしきい値２を上回っていたとすると、図５−１に示すように、フロー｛ｓｒｃ８１，ｄｓｔ８１｝、｛ｓｒｃ８２，ｄｓｔ８２｝、｛ｓｒｃ８３，ｄｓｔ８３｝がコピー対象となる。上記の処理をこのフローに対して行うと、振り分け情報管理部１２が管理する情報は図１０となり、パケット処理情報分散管理部２１−２が管理する情報は図５−３における＜＃２ｂ＞となる。
【００７０】
この情報更新操作により、入力トラヒックが偏ったケースにおいても、パケットをパケット処理部２−１〜２−Ｎに均等に振り分けることが可能となる。
【００７１】
続いて、一定時間経過後、再び本フローが開始される。まず、処理Ｓ３０１〜Ｓ３０３を実行する。既存コピーがある場合には、次に、現在もそのコピーが必要かどうかを判定する。まず、コピー元ハッシュ値に対応するすべての統計量を振り分け統計情報収集部１５から取得する。これをＨＳＴＡＴ＃Ｈ［１〜Ｐ］とする（Ｓ３１２）。次に、Ｐ個のハッシュ値に関してループ処理を行う（コピー削除ループ）。
【００７２】
Ｉ番目のコピー削除ループでは、有効なコピー元ハッシュ値Ｈ［Ｉ］に対し、ＨＳＴＡＴ＃Ｈ［Ｉ］とコピー停止しきい値を比較する。ここで、コピー停止しきい値とは、入力トラヒックに対するハッシュ値がＨ［Ｉ］となるパケットの比率が定常にもどったかどうかを判別するための値である。ＨＳＴＡＴ＃Ｈ［Ｉ］がコピー停止しきい値以上であったら、未だ入力トラヒックの偏りが解消されていないと判断し、コピー情報は現状のままとし、これ以上何もせず処理を終了する。
【００７３】
一方、ＨＳＴＡＴ＃Ｍ［Ｉ］がコピー停止しきい値を下回った場合には、入力トラヒックの偏りが解消されたと判断し、このハッシュ値に関するコピー内容を削除する。まず、振り分け情報管理部１２の管理する振り分け情報のうち、ハッシュ値がＨ［Ｉ］であるリスト情報を初期値に戻す（Ｓ３１４）。次に、パケット処理情報分散管理部２１−１〜２１−Ｎのコピー領域のうち、ハッシュ値がＨ［Ｉ］であるすべての情報をクリアする（Ｓ３１５）。なお、パケット処理情報分散管理部２１−Ｍ［Ｉ］を除いてクリア処理を行っても同等の結果が得られる。最後にＨ［Ｉ］をクリアし（Ｓ３１６）、コピー削除ループの先頭に戻り、上記の処理をＰ回行ってコピー削除処理を終了する。
【００７４】
コピー削除終了後は、現在の処理負荷に応じてパケット処理部の負荷を分散させるため、処理Ｓ３０４以降の処理を継続して行う。なお、上記の例では、図１２−１および図１２−２に示すフローを定期的に行うとしたが、これに限定されず、例えば、図１２−２のＥＮＤまで処理を行うとすぐに図１２−１のＳＴＡＲＴに戻って処理を繰り返す（無限ループ）ものであってもよい。この例では、ＳＴＡＲＴからＥＮＤまでの処理時間は不定であるため、パケット処理情報管理部３が統計情報収集部１４−１〜１４−Ｎから計数値である統計量を取得する時間間隔は、一定時間ごとではない。
【００７５】
上記において、Ｐはコピー可能な、異なるハッシュ値の個数の最大値であり、パケット処理情報管理部３が管理する最大の情報数Ｅと、ハッシュ値が取り得る値の個数Ｘと、各々のパケット処理情報分散管理部２１が持つコピー領域のサイズ（コピー可能な最大の情報数）Ｃにより、統計的な最適値が求められ、Ｐ＝Ｒｏｕｎｄｄｏｗｎ（Ｃ／Ｒｏｕｎｄｕｐ（Ｅ／Ｘ））で表される。ここでＲｏｕｎｄｄｏｗｎ（）は小数点以下切り捨て関数、Ｒｏｕｎｄｕｐ（）は小数点以下切り上げ関数とする。Ｐが０になる場合には、コピー領域Ｃが足りていないことを示すので、コピー領域を大きく取る必要がある。また、入力トラヒックの偏りが少ないことが予め想定できている場合、および並列処理をそれほど均等に行わずとも処理性能が足りている場合には、Ｐを小さくすることで情報更新処理を低減することができる。
【００７６】
上記において、Ｑは負荷を振り分ける対象パケット処理部の個数を示す。並列数Ｎと入力トラヒックの偏り予測値により、Ｑの統計的な最適値を求めることができるが、入力トラヒックの偏りが想定できない場合には、ＱをＮの自然対数程度とすると、情報更新処理にあまり負荷を掛けずに並列処理を行うことができる。
【００７７】
本実施の形態によれば、ハッシュ値ごとにパケットの統計量を計数する振り分け統計情報収集部を利用することにより、入力トラヒックが偏ったときに、どのハッシュ値のパケットがより多く本通信装置に到達しているかを判別することができる。そのため、到達数の多いハッシュ値のパケットをなるべく均等にパケット処理部へ振り分けて並列処理をすることが可能となり、パケット処理の負荷の分散をより効率的に行うことができる。なお、本実施の形態のその他の効果は、実施の形態１の効果と同様である。
【００７８】
実施の形態３．
図１３は、本発明の実施の形態３にかかるパケット並列処理装置としての通信装置の構成を示すブロック図である。図１３に示すように、本実施の形態においては、実施の形態１の構成を示す図１のパケット処理情報管理部３が、さらに２つの管理部から構成されている。すなわち、本実施の形態におけるパケット処理情報管理部３は、ハッシュ関数ｆ（ｘ）に対応するパケット処理情報の管理部であるパケット処理情報Ｆ管理部３１と、ハッシュ関数ｇ（ｘ）に対応するパケット処理情報の管理部であるパケット処理情報Ｇ管理部３２と、から構成される。ここで、ハッシュ関数ｆ（ｘ）とハッシュ関数ｇ（ｘ）には、互いに独立したハッシュ関数を採用する。
【００７９】
図１４は、本実施の形態において、負荷分散部１の構成を示すブロック図である。図１４に示すように、本実施形態においては、実施の形態１の構成を示す図２の振り分け情報管理部１２が、ハッシュ関数ｆ（ｘ）に対応する振り分け情報Ｆ管理部１２１と、ハッシュ関数ｇ（ｘ）に対応する振り分け情報Ｇ管理部１２２と、から構成されている。
【００８０】
図１５は、本実施の形態において、振り分け情報管理部１２にて管理する情報の一例を示す図である。図１５においては、ヘッダ解析部１１の解析結果であるフローを示すアドレスより、振り分け可能なパケット処理部２−１〜２−Ｎを得ることができる表形式の情報であり、＜Ｆ＞はハッシュ関数ｆ（ｘ）に関する振り分け情報、＜Ｇ＞はハッシュ関数ｇ（ｘ）に関する振り分け情報を示す。
【００８１】
図１６は、本実施の形態において、パケット処理情報の一例を示す図であり、図１６−１では、パケット処理情報管理部３にて管理する情報を、図１６−２では、パケット処理情報分散管理部２１−１と２１−２にて管理する情報を示す。図１６−２の情報は、図１６−１の情報の一部であり、＜＃１Ｆ＞と＜＃２Ｆ＞はハッシュ関数ｆ（ｘ）に関する情報、＜＃１Ｇ＞と＜＃２Ｇ＞はハッシュ関数ｇ（ｘ）に関する情報を示す。２つのハッシュ関数は互いに独立した関数であるので、フローを示すアドレスから求められるハッシュ値には、なんら相関関係が無い。図示例では、ハッシュ関数ｆ（ｘ）とｇ（ｘ）の取り得る値の範囲を同じとしているが、異なっていてもよい。また、図１７は、負荷分散部１におけるパケット振り分け処理の手順を示すフローチャートである。
【００８２】
次に、本実施の形態の動作について、図３、図１３〜図１７を参照して説明する。入力端子４より入力したパケットが負荷分散部１へ転送されると、負荷分散部１では、まず、ヘッダ解析部１１においてパケットのヘッダ内でフローを示すアドレスに、予め規定されているハッシュ関数ｆ（ｘ）を適用してハッシュ値Ｈｆを求める（図１７のＳ４０１）。同様にハッシュ関数ｇ（ｘ）を適用してハッシュ値Ｈｇを求める（Ｓ４０２）。次に、ハッシュ値Ｈｆを検索鍵として図１５における＜Ｆ＞に示された振り分け情報Ｆ管理部１２１にて管理する情報を検索し、振り分け可能なパケット処理部のリスト（以下、リストＦという）を得る（Ｓ４０３）。同様に、ハッシュ値Ｈｇを検索鍵として図１５における＜Ｇ＞に示された振り分け情報Ｇ管理部１２２にて管理する情報を検索し、振り分け可能なパケット処理部のリスト（以下、リストＧという）を得る（Ｓ４０４）。振り分け情報管理部１２１と１２２にて管理する情報が無い場合、またはリストＦとＧにいずれのパケット処理部も記載されていない場合には（Ｓ４０５）、パケットには予め決められたデフォルト処理を施してパケット処理を完了させる（Ｓ４０６）。このデフォルト処理の例としては、パケットを廃棄する、または、パケットをパケット処理部＃１へ転送し、統計情報収集部＃１で統計量を計数する、などがある。
【００８３】
振り分け情報解析部１２１と１２２にて管理する振り分け情報から該当する検索結果を取得できた場合には、次に、リストＦとＧで示されたパケット処理部と対になっているすべての統計情報収集部１４の統計量を取得する（Ｓ４０７）。そして、これらの統計量のうちで最も小さい統計量を求め（Ｓ４０８）、対となっているパケット処理部２にパケットを振り分ける。このとき、パケット処理部での処理に必要となる採用したハッシュ関数情報も一緒に転送する（Ｓ４０９）。同時に、統計情報収集部１４にて統計量を計数する（Ｓ４１０）。
【００８４】
次に、アドレス｛ｓｒｃ１１，ｄｓｔ１１｝を持つフローのパケットが２個連続して入力されたとする。すると、ヘッダ解析部１１では、このアドレスにハッシュ関数ｆ（ｘ）とｇ（ｘ）を適用して、ハッシュ値Ｈｆ＝０ｘ００１とＨｇ＝０ｘ００６を得る。この値は図１６−１の＜Ｆ＞と＜Ｇ＞に記載されている。この値を振り分け情報Ｆ管理部１２１と振り分け情報Ｇ管理部１２２に渡し、図１５における＜Ｆ＞に従い、振り分け可能なパケット処理部のリストＦとしてパケット処理部２−１を、図１５における＜Ｇ＞に従い、振り分け可能なパケット処理部のリストＧとしてパケット処理部２−２を得る。
【００８５】
次に、パケット処理部２−１と２−２に対応する統計量を、統計情報収集部１４−１と１４−２から得る。最初のパケットが到着したときには、双方ともゼロであるため、処理Ｓ４０８において一番小さな統計量は等しく、ここでは例えばパケット処理部２−１にパケットを振り分けることにする。このとき、パケットのパケット処理部２−１への振り分けと共に、ハッシュ関数ｆ（ｘ）を選択した、という情報も転送する。そして、統計情報収集部＃１４−１にて統計量を計数する。ここではパケット数を計数する。続いて、パケット処理部２−１にて、図１６−２における＜＃１Ｆ＞から、パケット処理情報Ｅを求め、パケットに処理Ｅを施し、パケット出力端子５−１より出力する。
【００８６】
次のパケットが到着したときには、統計情報収集部１４−１から得られる統計量は１であり、統計情報収集部１４−２から得られる統計量はゼロであるため、一番小さな統計量の方にパケットを振り分けることから、パケットはパケット処理部２−２に振り分けることになる。このとき、パケットのパケット処理部２−２への振り分けと共に、ハッシュ関数ｇ（ｘ）を選択した、という情報も転送する。そして、統計情報収集部＃１４−２にて統計量を計数する。続いて、パケット処理部２−２にて、図１６−２における＜＃２Ｇ＞から、パケット処理情報Ｅを求め、パケットに処理Ｅを施し、パケット出力端子５−２より出力する。
【００８７】
本実施の形態によれば、２つの互いに独立なハッシュ関数を用いることにより、同一のフローであっても、２つのパケット処理部に均等に振り分けることが可能となる。なお、本実施の形態のその他の効果は、実施の形態１の効果と同様である。
【００８８】
なお、本実施の形態においては、使用するハッシュ関数の個数を２個としているが、この個数に特に制限はなく、使用するハッシュ関数の個数だけ同一フローを振り分けられる効果がある。ハッシュ関数を多く用いる方がパケットを多くのパケット処理部に均等に振り分けられるが、情報量が多くなってしまうため、使用するハッシュ関数の個数は情報量とのトレードオフで決められる。また、本実施の形態は、実施の形態１または２と組み合わせることが可能であり、ハッシュ関数の個数を増加させなくとも、より振り分けが均等となるパケット並列処理が可能となる。
【００８９】
また、上記いずれの実施の形態において、統計量として過去の計数値を使用しているが、この統計量から想定される予測値を替わりに用いることも可能である。
【産業上の利用可能性】
【００９０】
以上のように、本発明にかかるパケット並列処理装置は、より高速な処理が要求されるパケット処理装置に有用である。
【図面の簡単な説明】
【００９１】
【図１】本発明の実施の形態１にかかるパケット並列処理装置としての通信装置の構成を示すブロック図である。
【図２】本発明の実施の形態１において、通信装置の負荷分散部の構成を示すブロック図である。
【図３】本発明の実施の形態１において、通信装置のパケット処理部の構成を示すブロック図である。
【図４】本発明の実施の形態１において、通信装置の振り分け情報管理部にて管理する振り分け情報の一例を示す図である。
【図５−１】本発明の実施の形態１において、通信装置のパケット処理情報管理部にて管理する情報の一例を示す図である。
【図５−２】本発明の実施の形態１において、通信装置のパケット処理情報分散管理部にて管理する情報の一例を示す図である。
【図５−３】本発明の実施の形態２において、通信装置のパケット処理情報分散管理部にて管理する情報の一例を示す図である。
【図６】本発明の実施の形態１において、負荷分散部におけるパケット振り分け処理の手順を示すフローチャートである。
【図７】本発明の実施の形態１において、パケット処理情報管理部における情報更新処理の手順を示すフローチャートである。
【図８】本発明の実施の形態１にかかる通信装置が扱うパケットフォーマットの一例を示す図である。
【図９】本発明の実施の形態２にかかるパケット並列処理装置としての通信装置において、負荷分散部の構成を示すブロック図である。
【図１０】本発明の実施の形態２において、通信装置の振り分け情報管理部にて管理する情報の一例を示す図である。
【図１１】本発明の実施の形態２において、負荷分散部１におけるパケット振り分け処理の手順を示すフローチャートである。
【図１２−１】本発明の実施の形態２において、パケット処理情報管理部における情報更新処理の手順を示すフローチャートである。
【図１２−２】本発明の実施の形態２において、パケット処理情報管理部における情報更新処理の手順を示すフローチャートであり、図１２−１に続く処理手順を示す。
【図１３】本発明の実施の形態３にかかるパケット並列処理装置としての通信装置の構成を示すブロック図である。
【図１４】本発明の実施の形態３において、負荷分散部の構成を示すブロック図である。
【図１５】本発明の実施の形態３において、振り分け情報管理部にて管理する情報の一例を示す図である。
【図１６−１】本発明の実施の形態３において、パケット処理情報管理部にて管理する情報の一例を示す図である。
【図１６−２】本発明の実施の形態３において、パケット処理情報分散管理部にて管理する情報の一例を示す図である。
【図１７】本発明の実施の形態３において、負荷分散部におけるパケット振り分け処理の手順を示すフローチャートである。
【符号の説明】
【００９２】
１  負荷分散部
１１  ヘッダ解析部
１２  振り分け情報管理部
１２１  振り分け情報Ｆ管理部
１２２  振り分け情報Ｇ管理部
１３  パケット振り分け部
１４−１〜１４−Ｎ  統計情報収集部＃１〜＃Ｎ
１５  振り分け統計情報収集部
２−１〜２−Ｎ  パケット処理部＃１〜＃Ｎ
２１−１〜２１−Ｎ  パケット処理情報分散管理部＃１〜＃Ｎ
２２−１〜２２−Ｎ  パケット処理メイン部＃１〜＃Ｎ
３  パケット処理情報管理部
３１  パケット処理情報Ｆ管理部
３２  パケット処理情報Ｇ管理部
４  パケット入力端子
５−１〜５−Ｎ  パケット出力端子＃１〜＃Ｎ
６０  Ｅｔｈｅｒｎｅｔ（登録商標）フレームヘッダ部
６１  ＩＰｖ４パケットヘッダ部
６２  ペイロード部
６３  フレームチェックシーケンス部
【図１】
2008167305.tif 000003
【図２】
2008167305.tif 000004
【図３】
2008167305.tif 000005
【図４】
2008167305.tif 000006
【図５−１】
2008167305.tif 000007
【図５−２】
2008167305.tif 000008
【図５−３】
2008167305.tif 000009
【図６】
2008167305.tif 000010
【図７】
2008167305.tif 000011
【図８】
2008167305.tif 000012
【図９】
2008167305.tif 000013
【図１０】
2008167305.tif 000014
【図１１】
2008167305.tif 000015
【図１２−１】
2008167305.tif 000016
【図１２−２】
2008167305.tif 000017
【図１３】
2008167305.tif 000018
【図１４】
2008167305.tif 000019
【図１５】
2008167305.tif 000020
【図１６−１】
2008167305.tif 000021
【図１６−２】
2008167305.tif 000022
【図１７】
2008167305.tif 000023