JP2008167305A - パケット並列処理装置およびパケット並列処理方法 - Google Patents
パケット並列処理装置およびパケット並列処理方法 Download PDFInfo
- Publication number
- JP2008167305A JP2008167305A JP2006356324A JP2006356324A JP2008167305A JP 2008167305 A JP2008167305 A JP 2008167305A JP 2006356324 A JP2006356324 A JP 2006356324A JP 2006356324 A JP2006356324 A JP 2006356324A JP 2008167305 A JP2008167305 A JP 2008167305A
- Authority
- JP
- Japan
- Prior art keywords
- packet
- packet processing
- information
- distribution
- unit
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
Images
Abstract
【課題】複数のパケット処理部のそれぞれにすべてのパケット処理情報を持たせて処理を行う必要がなく、入力トラヒックに偏りがあってもパケットを複数のパケット処理部に振り分けて並列処理が可能なパケット並列処理装置およびパケット並列処理方法を得ること。
【解決手段】負荷分散部1は入力されるパケットを複数のパケット処理部2−1〜2−Nへ振り分けてパケットの並列処理をさせる。複数のパケット処理部2−1〜2−Nは、それぞれパケット処理情報管理部3が管理するパケット処理情報の一部を管理し、この管理情報に基づいて振り分けられたパケットに処理を施す。パケット処理情報管理部3は、定期的に、負荷分散部1のパケット処理部2−1〜2−Nへのパケットの振り分け方とパケット処理部2−1〜2−Nがそれぞれ管理するパケット処理情報を更新し、パケット処理の負荷がパケット処理部2−1〜2−Nへなるべく均等に配分されるようにする。
【選択図】 図1
【解決手段】負荷分散部1は入力されるパケットを複数のパケット処理部2−1〜2−Nへ振り分けてパケットの並列処理をさせる。複数のパケット処理部2−1〜2−Nは、それぞれパケット処理情報管理部3が管理するパケット処理情報の一部を管理し、この管理情報に基づいて振り分けられたパケットに処理を施す。パケット処理情報管理部3は、定期的に、負荷分散部1のパケット処理部2−1〜2−Nへのパケットの振り分け方とパケット処理部2−1〜2−Nがそれぞれ管理するパケット処理情報を更新し、パケット処理の負荷がパケット処理部2−1〜2−Nへなるべく均等に配分されるようにする。
【選択図】 図1
Description
この発明は、ネットワーク装置でのパケット処理において、複数のパケット処理部にパケットを振り分けて並列処理をおこなうパケット処理装置およびパケット並列処理方法に関するものである。
近時、ネットワーク装置でのパケット処理において、トラヒック量の増加、通信速度の高速化、およびサービスの高機能化に伴い、例えば1台のサーバといった単一のパケット処理部では処理能力が不足するケースが生じている。ネットワーク装置にてパケット処理能力を向上する手法の一つとして、並列処理方法がある。並列処理技術は、複数のパケット処理部と、これらの前段に配置される負荷分散部とを設け、複数のパケット処理部にパケットを振り分けて並列処理させることにより、装置全体でのパケット処理能力を向上させる手法である。
前述の負荷分散部におけるパケットを振り分ける方法の一つとして、パケットを到着した順番で振り分ける方法がある。パケット到着順によるパケット振り分け方法において、パケット長またはパケット処理内容によって処理速度が異なるケースでは、処理負荷を均等に分散できないという問題がある。そのため、パケット到着順ではなく、前回のパケット処理が完了していて次のパケット処理が可能なパケット処理部に順番に振り分ける方法がある。
他のパケット振り分け方法として、特許文献1に記載の従来技術のように、フロー毎にパケット数の統計を取り、必要であれば入力トラヒックの予測を行い、統計値または予測値に基づいてフローをパケット処理部にできるだけ均等に振り分ける方法がある。
特許文献1では、前述の負荷分散部に相当する処理部が複数の回線対応部に分散されている。そして、回線対応部にはフロー識別テーブルを持たせ、パケット入力毎にフロー識別テーブルを検索し、識別されたフローのパケットが処理されるパケット処理部を一意に決めて転送する。ここで、フロー識別テーブルは、統計値または予測値に基づいて適宜テーブル内容が更新される。これにより、統計に基づいた均等な負荷分散を行うことが可能となる。
しかしながら、上記従来のパケット到着順またはパケット処理可能な順にパケットを振り分けるパケット振り分け方法では、すべてのパケット処理部が同じ処理を行う必要がある。例えば、IP(Internet Protocol)ルーティングを並列処理させる場合には、すべてのルーティング情報をすべてのパケット処理部に持たせておく必要がある。そのため、コストがかかるという問題があった。
また、特許文献1に記載のフロー毎の統計に基づくパケット振り分け方法では、入力トラヒックが極端に偏り、フロー数がパケット処理部の個数より少ない状況、例えば、全入力トラヒックが同一フローとなる状況では、複数のパケット処理部へのパケットの振り分けが行われず、並列処理が実施されないという問題があった。
本発明は、上記に鑑みてなされたものであって、複数のパケット処理部のそれぞれにすべてのパケット処理情報を持たせて処理を行う必要がなく、入力トラヒックに偏りがあってもパケットを複数のパケット処理部に振り分けて並列処理が可能なパケット並列処理装置およびパケット並列処理方法を得ることを目的とする。
上述した課題を解決し、目的を達成するために、本発明にかかるパケット並列処理装置は、入力されるパケットを振り分けることによりパケット処理の負荷の分散を図る負荷分散部と、前記パケットに施す処理情報を管理するパケット処理情報管理部と、前記パケット処理情報管理部が管理するパケット処理情報に基づいて前記負荷分散部により振り分けられた前記パケットに所定の処理を施す複数のパケット処理部と、を備えたパケット並列処理装置であって、前記負荷分散部は、前記パケットのヘッダ情報を解析するヘッダ解析部と、前記パケットのヘッダ情報の解析結果に応じてパケット処理部を特定するためのパケット処理部リストを管理する振り分け情報管理部と、前記パケット処理部を決定して前記パケットを振り分けるパケット振り分け部と、前記パケット処理部それぞれに振り分けられた前記パケットの量を計数し、前記パケット処理部それぞれに対になって設けられた統計情報収集部と、を備えることを特徴とする。
本発明によれば、パケットの並列処理において、パケットの振り分けを統計情報収集部が計数するパケットの量に基づいて行うことにより、パケット処理の負荷が複数のパケット処理部になるべく均等になるように配分され、パケット処理能力が向上するという効果がある。
以下に、本発明にかかるパケット並列処理装置の実施の形態を図面に基づいて詳細に説明する。なお、この実施の形態によりこの発明が限定されるものではない。
実施の形態1.
図1は、本発明の実施の形態1にかかるパケット並列処理装置としての通信装置の構成を示すブロック図である。図1に示すように、本実施の形態の通信装置は、パケットが入力するパケット入力端子4と、入力したパケットをパケット処理の負荷の分散を図るように振り分ける負荷分散部1と、振り分けられたパケットのそれぞれ振り分け先であると共に入力したパケットに所定の処理を施して出力する複数(ここでは、N個とする。但し、Nは2以上の整数)のパケット処理部2−1〜2−Nと、パケット処理に用いる情報をテーブルとして管理するパケット処理情報管理部3と、パケット処理部2−1〜2−Nにて処理されたパケットがそれぞれ出力されるパケット出力端子5−1〜5−Nと、を備えて構成される。
図1は、本発明の実施の形態1にかかるパケット並列処理装置としての通信装置の構成を示すブロック図である。図1に示すように、本実施の形態の通信装置は、パケットが入力するパケット入力端子4と、入力したパケットをパケット処理の負荷の分散を図るように振り分ける負荷分散部1と、振り分けられたパケットのそれぞれ振り分け先であると共に入力したパケットに所定の処理を施して出力する複数(ここでは、N個とする。但し、Nは2以上の整数)のパケット処理部2−1〜2−Nと、パケット処理に用いる情報をテーブルとして管理するパケット処理情報管理部3と、パケット処理部2−1〜2−Nにて処理されたパケットがそれぞれ出力されるパケット出力端子5−1〜5−Nと、を備えて構成される。
図2は、本実施の形態において、負荷分散部1の構成を示すブロック図である。図2に示すように、負荷分散部1は、入力されたパケットのヘッダを解析するヘッダ解析部11と、パケットの振り分けが可能なパケット処理部のリストを振り分け情報として管理する振り分け情報管理部12と、パケットの振り分け先であるパケット処理部を決定し、そこへパケットを送出するパケット振り分け部13と、それぞれパケット処理部2−1〜2−Nに振り分けられたパケットの量を計数して統計情報として保持する統計情報収集部14−1〜14−Nと、を備えて構成される。
図3は、本実施の形態において、パケット処理部2−1〜2−Nの構成を示すブロック図である。図3に示すように、パケット処理部2−1〜2−Nは、それぞれ、パケット処理情報分散管理部21−1〜21−Nと、パケット処理メイン部22−1〜22−Nと、を備えて構成される。例えば、パケット処理部2−1は、パケット処理情報分散管理部21−1と、パケット処理メイン部22−1と、を備えて構成される。パケット処理情報分散管理部21−1〜21−Nには、図1のパケット処理情報管理部3で管理しているパケット処理情報が分散して管理されており、パケット処理情報分散管理部21−1〜21−Nは、それぞれパケット処理情報管理部3で管理しているパケット処理情報の一部を保持している。また、パケット処理メイン部22−1〜22−Nは、それぞれパケット処理情報分散管理部21−1〜21−Nに格納されたパケット処理情報にしたがってパケット処理を行う。
また、図4は、振り分け情報管理部12にて管理する情報の一例を示す図である。図4は、ヘッダ解析部11の解析結果であるフローを示すアドレス(この場合、フローハッシュ値)ごとに、パケットを振り分け可能な振り分け先であるパケット処理部をリストとして与えるものであり、<a>は初期状態での管理情報、<b>はある時間経過後の管理情報を示す。なお、図4においては、例えば、パケット処理部2−1、パケット処理部2−2と記載する代わりに、#1、#2と略記している。また、このような略記法を以下で適宜用いるものとする。
また、図5−1および図5−2は、本実施の形態におけるパケット処理情報の一例を示す図であり、図5−1は、パケット処理情報管理部3にて管理する情報を、図5−2は、パケット処理情報分散管理部21−2にて管理する情報を示す図である。
図5−1は、フローを示すアドレスよりパケットに施す処理の内容が得られるテーブル形式の図であり、Src Adはフローの送信元アドレスを、Dst Adはフローの宛先アドレスを示す。また、{X,Y}はbitの連結を示し、Xが上位、Yが下位となるbit(ビット)列を示している。さらに、図5−1では、送信元および宛先アドレスを入力として特定のハッシュ関数を用いて得られたハッシュ値も表示している。なお、図5−1に示す表形式の情報は、特に外部から内容を更新しない限りは、時間経過後も変化が無いものとする。
図5−2の情報は、図5−1の情報の一部であり、<#2a>は初期状態での管理情報、<#2b>はある時間経過後の管理情報を示す。すなわち、図5−2の分散管理領域に管理されている情報は、図5−1におけるパケット処理情報分散管理部#2の管理情報であり、パケット処理情報管理部3に管理されているすべてのパケット処理情報をパケット処理部の個数で均等に分割した量のパケット処理情報が管理されていることが好ましい。また、パケット処理情報分散管理部21−2は、分散管理領域に加えてコピー領域を備えており、コピー領域には図5−1に示すパケット処理情報の一部をコピーして管理することができる。
なお、図5−2では、パケット処理情報分散管理部21−2にて管理する情報の一例を示したが、他のパケット処理情報分散管理部にて管理する情報も同様の形式であり、図5−1では、パケット処理情報分散管理部#1〜#Nにてそれぞれ管理される情報が示されている。このようなパケット処理情報の一覧に対して、本装置に入力されたパケットのフローを示すアドレスを検索鍵として検索することにより、入力されたパケットに施す処理の内容を得ることができる。
ここで、図4の情報と図5−1および図5−2の情報との関係について説明する。図5−1および図5−2のように、フローを示すアドレスを検索鍵としてテーブルを検索するケースにおいては、検索鍵のbit(ビット)長は比較的長くなる。検索鍵が長いテーブル検索には多大な処理時間を費やすことが一般的に知られている。そこで、本通信装置の構成においては、ヘッダ解析部11では高速な処理が要求されるため、検索鍵をハッシュ関数にて短くすることで検索処理時間を短縮することを図っており、そのためのハッシュテーブルが図4で示す情報となっている。
次に、上述のように構成された本実施の形態の動作について、図1〜図6を参照して説明する。図6は、本実施の形態において、負荷分散部1におけるパケット振り分け処理の手順を示すフローチャートである。
入力端子4より入力したパケットが負荷分散部1へ転送されると、負荷分散部1では、まずヘッダ解析部11において、パケットのヘッダ内のフローを示すアドレスに、予め規定されているハッシュ関数を適用してハッシュ値を求める(図6のS101)。次に、得られたハッシュ値を検索鍵として、図4に示された振り分け情報管理部12にて管理する振り分け情報を検索し、パケットを振り分け可能なパケット処理部のリストを得る(S102)。振り分け情報管理部12にて管理する振り分け情報に、検索鍵に該当する検索結果が無い場合、またはリストにいずれのパケット処理部も記載されていない場合には(S103)、パケットには予め決められたデフォルト処理を施してパケット処理を完了させる(S104)。このデフォルト処理の例としては、パケットを廃棄する、または、パケットをパケット処理部#1へ転送し、統計情報収集部#1で統計量を計数する、などがある。
振り分け情報管理部12にて管理する振り分け情報から該当する検索結果を取得できた場合には、次に、リストで示されたパケット処理部2と対になっている統計情報収集部14から計数値である統計量を取得する(S105)。ここで、パケット処理部2と対になっている統計情報収集部14とは、N個のパケット処理部2とN個の統計情報収集部14をそれぞれ区別する符号の枝番が相互に一致する対を意味し、例えば、パケット処理部2−1は統計情報収集部14−1と対になっている。そして、これらの統計量のうちで最も小さい統計量を求め(S106)、最も小さい統計量を与える統計情報収集部14と対になっているパケット処理部2にパケットを振り分ける(S107)。ここで、統計情報収集部14の保持する統計量は、それと対になっているパケット処理部2へ振り分けられたパケットの量に関する統計量であり、値が大きいほどパケット処理の負荷が大きいことを示す。パケット処理部2へのパケットの振り分けと同時に、この振り分けられたパケットの量を統計量として加算するために、統計情報収集部14にて統計量を計数する(S108)。
次に、統計情報収集部14−1〜14−Nの統計量を定期的に調べ、振り分け情報管理部12が管理する情報、およびパケット処理情報分散管理部21−1〜21−Nが管理する情報を動的に変更することにより、パケット処理の負荷を分散させてパケットの並列処理を行う方法の詳細について説明する。
本通信装置においては、振り分け情報管理部12が管理する情報として、初期状態では、図4における<a>の情報が設定されている。図4に示すように、<a>にリストされたパケット処理部は、フローハッシュ値(以下、ハッシュ値という)ごとに1個に限定されている。例えばハッシュ値が0x001であった場合には、振り分け先はパケット処理部2−1に一意に決定されるので、このパケット処理部2−1にパケットを振り分けるとともに、統計情報収集部14−1にて統計量を計数する。
パケット処理部2−1では、パケットが振り分けられると、パケット処理メイン部22−1はフローを示すアドレスを検索鍵として、パケット処理情報分散管理部21−1が管理する情報を検索する。ここで、パケット処理情報分散管理部21−1が管理する情報は、図5−1のパケット処理情報分散管理部#1の管理情報で示された情報である。仮にアドレスが{src11,dst11}であった場合には、パケット処理部2−1はこのパケットに処理Eを適用し、その後パケットはパケット出力端子5−1より出力する。なお、{X,Y}はbitの連結を示し、Xが上位、Yが下位となるbit列を示している。
その後、入力トラヒックが偏り、ハッシュ値が0x000〜0x003のパケットの本通信装置への到着数が他のハッシュ値のパケットより多くなったケースを考える。このケースでは、負荷分散部1はパケットを均等に振り分けられず、パケット処理2−1の処理負荷が高くなる。
そこで、後述する方法により、パケット処理情報管理部3が振り分け情報管理部12とパケット処理情報分散管理部21−2〜21−Nの管理情報を書き換える。これにより、振り分け情報管理部12は、図4における<b>の情報を管理し、例えばパケット処理情報分散管理部21−2は、図5−2における<#2b>の情報を管理することになる。図5−2における<#2b>では、分散管理領域に加えて、コピー領域にもパケット処理情報が管理されている。この分散管理領域における管理情報は、<#2a>で示された初期状態における分散管理領域の管理情報と同じものであり、一方、このコピー領域における管理情報は、図5−1におけるパケット処理情報分散管理部#1の管理情報と同じものである。
この状態において、アドレスが{src11,dst11}であるパケットが負荷分散部1に入力されると、前述と同様の処理を行うことで、ハッシュ値が0x001のパケットを振り分け可能なパケット処理部のリストとして、パケット処理部2−1〜2−Nのすべてが得られる(図4における<b>を参照)。次に、統計情報収集部14−1〜14−Nの統計量をそれぞれ取得する。そして、これらの統計量のうちで最も小さい統計量を与える統計情報収集部を特定し、これと対となっているパケット処理部を求める。
このとき、統計情報収集部14−1の統計量が最も大きくなっているため、パケット処理部2−1は選択されない。したがって、パケット処理部2−2〜2−Nの中から対応する統計量が最も小さいパケット処理部が選択されることになる。仮に統計情報収集部14−2の統計量が最も小さい場合には、パケット処理部2−2が選択され、統計情報収集部14−2で統計量を加算し、パケットをパケット処理部2−2へ転送する。
次に、パケット処理部2−2にてフローを示すアドレスを検索鍵として、図5−2における<#2b>の情報を検索すると、このアドレス{src11,dst11}はコピー領域に含まれているため、このパケットには処理Eを適用することが求められる。そこで、このパケットにパケット処理Eを適用し、パケット出力端子5−2より出力する。
このように、振り分け情報とパケット処理情報を更新することで、特定のパケット処理部のみに処理負荷が偏ることなく、均等にパケットを振り分け、効率の良いパケット並列処理が可能となる。
ここで、パケット処理情報管理部3が振り分け情報管理部12の管理情報とパケット処理情報分散管理部21−2〜21−Nの管理情報を書き換える方法について、図7を参照して説明する。図7は、パケット処理情報管理部3における情報更新処理の手順を示すフローチャートであり、パケット処理情報管理部3は定期的に本フローを実行する。
まず、パケット処理情報管理部3は、統計情報収集部14−1〜14−Nからすべての統計量を収集する。これらをSTAT#1〜#Nとする(S201)。次に、既存コピーの有無により、コピー元番号が有効かどうかを判定する(S202)。ここでコピー元番号とは、パケット処理情報分散部21のコピー領域に、図5−1に示すパケット処理情報分散管理部#1〜#Nの管理情報のいずれかがコピーされているときに、コピーされている管理情報の識別番号(#1〜#N)を表す。本通信装置の動作当初は、コピー領域には既存のコピーが無いため、コピー元番号が有効ではないとしてコピー処理に進む。
コピー処理では、まず、STAT#1〜#Nの中から最も大きなものを求める。これをSTAT#Mとする(S203)。次に、STAT#Mとコピーしきい値とを比較する(S204)。ここで、コピーしきい値とは、パケット処理部2に過大な負荷が掛かっているかどうかを判別するための値である。STAT#Mがコピーしきい値以下の場合には、パケット処理部2−Mにはそれほど処理負荷が掛かっていないと見なし、処理を終了する。一方、STAT#Mがコピーしきい値を超えていた場合には、パケット処理部2−Mに過大な処理負荷が掛かっているものと判断し、他のパケット処理部へもパケットを振り分けるように情報を更新する。
図5−2に示すように、すべてのパケット処理情報分散管理部21はコピー領域を持つ。パケット処理情報分散管理部21−Mを除いたすべてのパケット処理情報分散管理部21のコピー領域に、図5−1で示したパケット処理情報分散管理部#Mの管理情報をコピーする(S205)。次に、図4に示した振り分け情報管理部12の情報のうち、パケット処理情報分散管理部21−Mに対応するハッシュ値と対になるパケット処理部リスト情報を、すべてのパケット処理部とする(S206)。すなわち、振り分け情報管理部12の情報のうち、<a>において振り分け可能パケット処理部リストがパケット処理部2−Mとなっているハッシュ値に対して、<b>ではそのハッシュ値に対応するパケット処理部のリスト情報をすべてのパケット処理部2−1〜2−Nとする。なお、図4に示す例では、M=1の場合に相当している。さらに、不要な情報を削除するため、パケット処理情報分散管理部21−Mのコピー領域をクリアし(S207)、これ以降のコピークリア処理に必要となるコピー元番号を#Mに更新する(S208)。コピー元番号は、パケット処理情報分散管理部21に管理されている。
ここまでの操作により、例えばSTAT#1が最も大きな値で、かつこの値がコピーしきい値を超えていた場合、図4における<b>と図5−2における<#2b>に示したとおりの情報更新を行うことが可能となり、入力トラヒックが偏ったケースにおいても、パケットをパケット処理部2−1〜2−Nに均等に振り分けることが可能となる。
さらに、一定時間経過後、再び本フローが開始される。処理S201とS202を実行する。既存コピーがある場合には、現在もそのコピーが必要かどうかを判定する。まず、コピー元番号が有効な値である場合はその番号を呼び出し、ここではその番号をKとする(S209)。次に、STAT#Kとコピー停止しきい値とを比較する(S210)。ここで、コピー停止しきい値とは、パケット処理部2の処理負荷が定常に戻ったかどうかを判別するための値である。STAT#Kがコピー停止しきい値以上である場合は、未だ入力トラヒックの偏りが解消されていないと判断し、コピー情報は現状のままとし、これ以上何もせず処理を終了する。
一方、STAT#Kがコピー停止しきい値を下回った場合には、入力トラヒックの偏りが解消されたと判断し、既存のコピー内容を削除する。まず、振り分け情報管理部12のうち、パケット処理情報分散管理部#Kに対応するハッシュ値と対になるパケット処理部リスト情報を初期値に戻す(S211)。これにより、リストにはパケット処理部2−Kだけが残るようになる。次にパケット処理情報分散管理部21−1〜21−Nのすべてのコピー領域をクリアする(S212)。なお、パケット処理情報分散管理部21−1〜21−Nのすべてに対してでは無く、パケット処理情報分散管理部21−Kを除いてクリア処理を行っても同等の結果が得られる。最後にコピー元番号をクリアする(S213)。クリアした後は、現在の処理負荷に応じてパケット処理部の負荷を分散させるため、処理S203以降の処理を継続して行う(図7におけるS213に続く‘1’、およびS202からS203の間の‘1’を参照)。なお、上記の例では、図7に示すフローを定期的に行うとしたが、これに限定されず、例えば、図7に示すフローのENDまで処理を行うとすぐにSTARTに戻って処理を繰り返す(無限ループ)ものであってもよい。この例では、STARTからENDまでの処理時間は不定であるため、パケット処理情報管理部3が統計情報収集部14−1〜14−Nから計数値である統計量を取得する時間間隔は、一定時間ごとではない。
また、上記の例では、図7のフローチャートに示すように、統計量にしたがってパケット処理部を1個だけ選択しているが、この選択の個数に特に制限はなく、統計量の多い順にパケット処理部を複数選択し、その統計量の比率等にしたがって他のパケット処理部が管理するパケット処理情報のコピー領域に、該当するパケット処理情報をコピーしても良い。例えば、パケット処理部が8個あり、統計量の多い順にパケット処理部を3個選択し(例えば、パケット処理部#1、#2、#3とする)、その統計量の比率が3:3:2であった場合、パケット処理部#4、#5にはパケット処理情報分散管理部#1の管理情報をコピーし、パケット処理部#6、#7にはパケット処理情報分散管理部#2の管理情報をコピーし、パケット処理部#8にはパケット処理情報分散管理部#3の管理情報をコピーすることで、それぞれのパケット処理部に適切な配分でパケットを振り分けることが可能となる。
さらにまた、上記の例では、図5−2に示すように、パケット処理情報分散管理部21−1〜21−Nのコピー領域には、1個の分散管理領域の内容をコピーすることができるが、複数の分散管理領域の内容をすべてコピーすることができるようにしてもよい。このような構成によれば、例えば、特に処理負荷の小さいパケット処理部のコピー領域に、他の複数のパケット処理部から分散管理領域の内容をコピーすることにより、他のパケット処理部からこの特に負荷の少ないパケット処理部へパケットを振り分けて負荷を分散することができる。
ここで、本実施の形態の通信装置が処理するパケットのフォーマットについて一例を示して説明する。図8は、IPv4(Internet Protocol version 4)パケットをEthernet(登録商標)フレームに格納して転送する場合のフォーマットを示す図である。図8に示すように、このフォーマットは、Ethernet(登録商標)ヘッダ60、IPv4ヘッダ61、IPパケットのデータであるペイロード(Payload)62、およびEthernet(登録商標)トレイラであるフレームチェックシーケンス(FCS)63を含んでいる。
本通信装置がレイヤ2の処理を行う装置である場合、フローはEthernet(登録商標)ヘッダ60における宛先のMAC(Media Access Control)アドレスであるDestination MAC Addressと送信元のMACアドレスであるSource MAC Addressとの組で認識される。さらに、Typeを含めてフローの細分化を行うケースもある。
また、本通信装置がレイヤ3の処理を行う装置である場合、フローはIPv4ヘッダ61における送信元のIPアドレスであるSource IP Addressと宛先のIPアドレスであるDestination IP Addressとの組で認識される。さらに、Protocolおよびレイヤ4のデータを含めてフローを細分化するケースもある。いずれのケースでも、本実施の形態のパケット並列処理を行うことが可能である。
また、フローの認識が不要で宛先のみ分かれば良いレイヤ2/3スイッチのような装置では、Destination MAC AddressまたはDestination IP Addressのみで宛先を識別するといったケースもある。
上記のいずれのケースにおいても、ヘッダ解析部11では、必要な情報を抽出し、ハッシュ関数を適用してフローのハッシュ値を得て、パケットを振り分ける処理を行う。また、パケットを振り分けられたパケット処理部2−1〜2−Nでは、アドレスなどの組を検索鍵としてパケット処理情報分散管理部21を検索し、得られた処理情報に基づいたパケット処理を並列に行う。また、特に図示はしないが、IPv6、MPLS(Multi−Protocol Label Switching)、またはRPR(Resilient Packet Ring)といった異なるパケットフォーマットを扱う通信装置であっても、同様の処理によりパケットの並列処理が行えることは自明である。
また、通信装置によっては図1に示すパケット処理部2−1〜2−Nの後段に、各パケットを多重化する多重化部が追加される構成となるケースがある。この場合、多重化部の出力において、パケットの出力順序をパケットの受信順序と同じ順序とする機能が必要となるケースもあるが、これには例えば、パケット振り分け部13においてパケットにシーケンス番号を付与し、多重化部でシーケンス番号順にパケットを出力することで、パケット並列処理自体には影響を及ぼさずに多重化を実現することができる。
また、統計情報収集部14−1〜14−Nにおいて計数する統計量について説明する。パケットのスイッチング処理およびヘッダの書き換え処理などのように、パケット処理能力が受信したパケット数に比例する通信装置においては、振り分けたパケット数を計数することとする。一方、暗号化および誤り訂正符号のように、パケット処理能力が受信したパケットのbyte(バイト)数に比例する通信装置においては、振り分けたパケットデータのbyte数を計数することとする。これにより統計量が処理負荷を正しく表せるようになる。また、図2のパケット振り分け部13からのパケット出力側に、それぞれパケット処理部2−1〜2−Nに対応したキューを持たせる構成とし、このキューによりパケット処理部が処理可能なタイミングで出力されたパケットの量を読み出すものとすると、統計情報収集部14−1〜14−Nにてこのキューに蓄積されたパケット数またはパケットbyte数を計数することで、統計量を表すことも可能である。
本実施の形態によれば、パケット処理情報管理部が管理するパケット処理情報を複数のパケット処理分散管理部に分散して管理させてパケットの並列処理を行うようにしたので、複数のパケット処理部のそれぞれにすべてのパケット処理情報を持たせる必要が無く、コストを低減できるという効果を奏する。また、パケットの振り分けを統計情報収集部の統計量に基づいて行うようにしたので、パケット処理の負荷が複数のパケット処理部へなるべく均等になるように配分され、パケット処理能力が向上するという効果がある。
また、本実施の形態によれば、パケット処理情報管理部が一定時間ごとに統計情報収集部の統計量を調べ、パケット処理の処理負荷を複数のパケット処理部になるべく均等に配分するように、振り分け情報管理部の管理情報とパケット処理情報分散管理部の管理情報を更新するようにしたので、入力トラヒックに偏りが生じても、複数のパケット処理部へパケットを振り分けて並列処理をすることが可能となり、パケット処理能力の向上が可能となる。
また、本実施の形態によれば、上記コピーしきい値を上記コピー停止しきい値より大きな値とすることで、パケット処理情報の更新処理にヒステリシス特性を持たせることができ、パケット処理情報の更新回数を低減することができる。そのため、パケット処理情報管理部3の処理能力を抑えてもパケット処理の実施が可能となる。
実施の形態2.
図9は、本発明の実施の形態2にかかるパケット並列処理装置としての通信装置において、負荷分散部1の構成を示すブロック図である。図9に示すように、本実施の形態における負荷分散部1は、振り分け統計情報収集部15を含んでいる。振り分け統計情報収集部15は、パケットのフローを示すアドレスから計算したハッシュ値ごとに、振り分けられたパケットの統計量を計数するものである。なお、本実施の形態のその他の構成は、図1〜図3に示す実施の形態1の構成と同様である。そのため、同一の構成物には同一の符号を付して、その詳細な説明を省略する。
図9は、本発明の実施の形態2にかかるパケット並列処理装置としての通信装置において、負荷分散部1の構成を示すブロック図である。図9に示すように、本実施の形態における負荷分散部1は、振り分け統計情報収集部15を含んでいる。振り分け統計情報収集部15は、パケットのフローを示すアドレスから計算したハッシュ値ごとに、振り分けられたパケットの統計量を計数するものである。なお、本実施の形態のその他の構成は、図1〜図3に示す実施の形態1の構成と同様である。そのため、同一の構成物には同一の符号を付して、その詳細な説明を省略する。
また、図10は、本実施の形態において、振り分け情報管理部12にて管理する情報の一例を示す図である。図10においては、<a>は初期状態での管理情報、<b>はある時間経過後の管理情報を示す。図5−3は、本実施の形態において、パケット処理情報分散管理部21−2にて管理するパケット処理情報の一例を示す図である。また、本実施の形態におけるパケット処理情報管理部3にて管理するパケット処理情報は、図5−1に示す実施の形態1におけるパケット処理情報と同じものとする。なお、図5−1に示す表形式の情報は、特に外部から内容を更新しない限りは、時間経過後も変化がないものとする。図5−3の情報は図5−1の情報の一部であり、<#2a>は初期状態での管理情報、<#2b>はある時間経過後の管理情報を示す。ここで、図10と、図5−1、図5−3との関係は実施の形態1で示した関係と同じである。
次に、本実施の形態の動作について、図1〜図11を参照して説明する。図11は、本実施の形態において、負荷分散部1におけるパケット振り分け処理の手順を示すフローチャートである。図11は、実施の形態1における対応するフローチャートである図6と比較して、処理S109が追加されている点のみ異なる。したがって、処理S108までは実施の形態1と同じである。負荷分散部1では、処理S108の次に、振り分け統計情報収集部15にて、検索したハッシュ値に該当する統計量を計数する処理を行う(S109)。
本通信装置においては、振り分け情報管理部12が管理する情報として、初期状態では、図10における<a>の情報が設定されている。図10に示すように、<a>にリストされたパケット処理部は、ハッシュ値ごとに1個に限定されている。例えばハッシュ値が0x001であった場合には、振り分け先はパケット処理部2−1に一意に決定されるので、このパケット処理部2−1にパケットを振り分けるとともに、統計情報収集部14−1にて統計量を計数する。さらに、振り分け統計情報収集部15にて、このハッシュ値0x001に対する統計量を計数する。また、統計量は、実施の形態1で説明したように、例えば、パケット数またはパケットのバイト数である。続いてパケット処理部2−1にて行う処理は、実施の形態1と同じである。
その後、入力トラヒックが偏り、例えば、ハッシュ値が0x001、0x008のパケットの本通信装置への到着数が他のハッシュ値のパケットより多くなったケースを考える。このケースでは、負荷分散部1はパケットを均等に振り分けられず、パケット処理部2−1、2−3の処理負荷が高くなる。
そこで、後述する方式により、パケット処理情報管理部3が振り分け情報管理部12の管理情報とパケット処理情報分散管理部21−2〜21−Nの管理情報を書き換える。これにより、振り分け情報管理部12は、図10における<b>の情報を管理し、例えばパケット処理情報分散管理部21−2は、図5−3における<#2b>の情報を管理することになる。図5−3における<#2b>では、分散管理領域に加えて、コピー領域にもパケット処理情報が管理されている。このコピー領域における管理情報は、ハッシュ値が0x001、0x008に相当する情報であり、それぞれ図5−1におけるパケット処理情報分散管理部#1の管理情報とパケット処理情報分散管理部#3の管理情報から一部コピーされたものである。
この状態において、アドレスが{src11,dst11}であるパケットが負荷分散部1に入力されると、前述と同様の処理を行うことで、ハッシュ値が0x001のパケットを振り分け可能なパケット処理部のリストとして、パケット処理部2−1〜2−Nのすべてが得られる(図10における<b>を参照)。次に、統計情報収集部14−1〜14−Nの統計量をそれぞれ取得する。そして、これらの統計量のうちで最も小さい統計量を与える統計情報収集部を特定し、これと対となっているパケット処理部を求める。
このとき、統計情報収集部14−1、14−3の統計量が大きくなっているため、パケット処理部2−1、2−3は選択されない。したがって、パケット処理部2−2、2−4〜2−Nの中から対応する統計量が最も小さいパケット処理部が選択されることになる。仮に統計情報収集部14−2の統計量が最も小さい場合には、パケット処理部2−2が選択され、統計情報収集部14−2で統計量を加算し、パケットをパケット処理部2−2へ転送する。さらに、ハッシュ値0x001に対応する統計量を振り分け統計情報収集部15にて計数する。
次に、パケット処理部2−2にてフローを示すアドレスを検索鍵として、図5−3における<#2b>の情報を検索すると、このアドレス{src11,dst11}はコピー領域に含まれているため、このパケットには処理Eを適用することが求められる。そこで、このパケットにパケット処理Eを適用し、パケット出力端子5−2より出力する。
このように、振り分け情報とパケット処理情報を更新することで、特定のパケット処理部のみに偏ることなく、均等にパケットを振り分け、効率の良いパケット並列処理が可能となる。
ここで、パケット処理情報管理部3が振り分け情報管理部12の管理情報とパケット処理情報分散管理部21−2〜21−Nの管理情報を書き換える方法について、図12−1および図12−2を参照して説明する。図12−1は、パケット処理情報管理部3における情報更新処理の手順を示すフローチャートであり、パケット処理情報管理部3は定期的に本フローを実行する。また、図12−2は、図12−1に続く処理手順を示すフローチャートであり、接続箇所を‘2’で示している。
まず、パケット処理情報管理部3は、統計情報収集部14−1〜14−Nからすべての統計量を収集する。これらをSTAT#1〜#Nとする(図12−1のS301)。次に、コピー元ハッシュ値を呼び出し、これは次元がPの配列Hに格納されるものとする(S302)。なお、配列Hの次元Pについては後述する。そして、既存コピーが一つでも存在するかどうかにより、有効なコピー元ハッシュ値がHに一つでも存在するかどうかの判定を行う(S303)。ここでコピー元ハッシュ値とは、パケット処理情報分散管理部21のコピー領域に、図5−1に示すパケット処理情報がコピーされているときに、コピーされているパケット処理情報のハッシュ値を表す。本通信装置の動作当初は、コピー領域には既存コピーが無いため、有効なコピー元ハッシュ値はないと判定してコピー処理に進む。
コピー処理では、まず、STAT#1〜#Nの中から大きな順にQ個抽出する。Qは例えば、Nである。そして、これを大きさQの配列Mを用いて、STAT#M[1〜Q]と表す(図12−2のS304)。次に、M[1〜Q]の順に以降のループ処理を行う(コピー追加1ループ)。
コピー追加1ループでは、パケット処理部2ごとの処理負荷を判定し、パケットの振り分けの必要性を判定する。I番目のループにおいて、まず、STAT#M[I]とコピーしきい値1とを比較する(S305)。ここで、コピーしきい値1とは、パケット処理部2に過大な負荷が掛かっているかどうかを判別するための値である。STAT#M[I]がコピーしきい値1以下の場合には、パケット処理部2−M[I]にはそれほど処理負荷が掛かっていないと見なし、情報更新処理フローを終了する。一方、STAT#M[I]がコピーしきい値1を超えていた場合には、パケット処理部2−M[I]に過大な処理負荷が掛かっているものと判断し、次のステップへ進む。次に、パケット処理情報分散管理部#M[I]が管理する処理情報のハッシュ値ごとの統計量を振り分け統計情報収集部15から取得し、取得した統計量を大きな順に並べ替える。これをHSTAT#1〜#Rとする(S306)。ここで、Rはパケット処理情報分散管理部#M[I]に割り当てられたハッシュ値の個数であり、図5−3の例では、R=4である。すなわち、図5−3における<#2a>に示すように、ハッシュ値は、0x004、0x005、0x006、0x007の4個となっている。さらに、引き続きループ処理を行う(コピー追加2ループ)。
コピー追加2ループでは、ハッシュ値ごとにパケットの振り分けの必要性を判定する。J番目のループにおいて、まず、コピー元ハッシュ値Hに空きがあるか否かを確認する(S307)。空きが無ければ情報更新処理フローを終了するが、本通信装置の動作当初は、既存コピーが無いため次のステップへ進む。次に、HSTAT#Jとコピーしきい値2とを比較する(S308)。ここで、コピーしきい値2とは、特定のハッシュ値だけに入力トラヒックが偏っているかどうかを判別するための値である。コピーしきい値2以下であれば、そのハッシュ値に関してはパケットの振り分けを行わないため、コピー追加2ループを継続する。
ここで、パケット処理部2−1の統計量がコピーしきい値1を上回り、さらにハッシュ値0x001の統計量がコピーしきい値2を上回っていたとすると、パケット処理部2−2〜2−Nにもハッシュ値0x001のパケットを振り分けられるようにパケット処理情報をコピーする。そこで、パケット処理部2−2〜2−Nのコピー領域に、ハッシュ値が0x001であるパケット処理情報を1個ずつコピーする(S309)。図5−1によると、フロー{src11,dst11}がこれに該当する。ただし、既存コピー数がパケット処理部ごとに異なるため、一部またはすべてのパケット処理部でこのフローをコピーできるとは限らず、コピー領域に空きが無くなったパケット処理部にはコピーを行わない。次に、振り分け情報管理部12が管理する振り分け情報において、ハッシュ値0x001と対になるリスト情報を、コピーができた全パケット処理部を示すリスト情報に更新する(S310)。さらに、コピー元ハッシュ値を記憶するため、空き先頭のH[]にハッシュ値0x001を格納し(S311)、コピー追加2ループの先頭に戻り、パケット処理部2−1に関するすべてのハッシュ値に対して同様な処理を行う。さらに、コピー追加1ループに戻り、Q個のパケット処理部に対して同様な処理を行う。
ここで、例えば、もう一つ、パケット処理部2−3の統計量がコピーしきい値1を上回り、さらにハッシュ値0x008の統計量がコピーしきい値2を上回っていたとすると、図5−1に示すように、フロー{src81,dst81}、{src82,dst82}、{src83,dst83}がコピー対象となる。上記の処理をこのフローに対して行うと、振り分け情報管理部12が管理する情報は図10となり、パケット処理情報分散管理部21−2が管理する情報は図5−3における<#2b>となる。
この情報更新操作により、入力トラヒックが偏ったケースにおいても、パケットをパケット処理部2−1〜2−Nに均等に振り分けることが可能となる。
続いて、一定時間経過後、再び本フローが開始される。まず、処理S301〜S303を実行する。既存コピーがある場合には、次に、現在もそのコピーが必要かどうかを判定する。まず、コピー元ハッシュ値に対応するすべての統計量を振り分け統計情報収集部15から取得する。これをHSTAT#H[1〜P]とする(S312)。次に、P個のハッシュ値に関してループ処理を行う(コピー削除ループ)。
I番目のコピー削除ループでは、有効なコピー元ハッシュ値H[I]に対し、HSTAT#H[I]とコピー停止しきい値を比較する。ここで、コピー停止しきい値とは、入力トラヒックに対するハッシュ値がH[I]となるパケットの比率が定常にもどったかどうかを判別するための値である。HSTAT#H[I]がコピー停止しきい値以上であったら、未だ入力トラヒックの偏りが解消されていないと判断し、コピー情報は現状のままとし、これ以上何もせず処理を終了する。
一方、HSTAT#M[I]がコピー停止しきい値を下回った場合には、入力トラヒックの偏りが解消されたと判断し、このハッシュ値に関するコピー内容を削除する。まず、振り分け情報管理部12の管理する振り分け情報のうち、ハッシュ値がH[I]であるリスト情報を初期値に戻す(S314)。次に、パケット処理情報分散管理部21−1〜21−Nのコピー領域のうち、ハッシュ値がH[I]であるすべての情報をクリアする(S315)。なお、パケット処理情報分散管理部21−M[I]を除いてクリア処理を行っても同等の結果が得られる。最後にH[I]をクリアし(S316)、コピー削除ループの先頭に戻り、上記の処理をP回行ってコピー削除処理を終了する。
コピー削除終了後は、現在の処理負荷に応じてパケット処理部の負荷を分散させるため、処理S304以降の処理を継続して行う。なお、上記の例では、図12−1および図12−2に示すフローを定期的に行うとしたが、これに限定されず、例えば、図12−2のENDまで処理を行うとすぐに図12−1のSTARTに戻って処理を繰り返す(無限ループ)ものであってもよい。この例では、STARTからENDまでの処理時間は不定であるため、パケット処理情報管理部3が統計情報収集部14−1〜14−Nから計数値である統計量を取得する時間間隔は、一定時間ごとではない。
上記において、Pはコピー可能な、異なるハッシュ値の個数の最大値であり、パケット処理情報管理部3が管理する最大の情報数Eと、ハッシュ値が取り得る値の個数Xと、各々のパケット処理情報分散管理部21が持つコピー領域のサイズ(コピー可能な最大の情報数)Cにより、統計的な最適値が求められ、P=Rounddown(C/Roundup(E/X))で表される。ここでRounddown()は小数点以下切り捨て関数、Roundup()は小数点以下切り上げ関数とする。Pが0になる場合には、コピー領域Cが足りていないことを示すので、コピー領域を大きく取る必要がある。また、入力トラヒックの偏りが少ないことが予め想定できている場合、および並列処理をそれほど均等に行わずとも処理性能が足りている場合には、Pを小さくすることで情報更新処理を低減することができる。
上記において、Qは負荷を振り分ける対象パケット処理部の個数を示す。並列数Nと入力トラヒックの偏り予測値により、Qの統計的な最適値を求めることができるが、入力トラヒックの偏りが想定できない場合には、QをNの自然対数程度とすると、情報更新処理にあまり負荷を掛けずに並列処理を行うことができる。
本実施の形態によれば、ハッシュ値ごとにパケットの統計量を計数する振り分け統計情報収集部を利用することにより、入力トラヒックが偏ったときに、どのハッシュ値のパケットがより多く本通信装置に到達しているかを判別することができる。そのため、到達数の多いハッシュ値のパケットをなるべく均等にパケット処理部へ振り分けて並列処理をすることが可能となり、パケット処理の負荷の分散をより効率的に行うことができる。なお、本実施の形態のその他の効果は、実施の形態1の効果と同様である。
実施の形態3.
図13は、本発明の実施の形態3にかかるパケット並列処理装置としての通信装置の構成を示すブロック図である。図13に示すように、本実施の形態においては、実施の形態1の構成を示す図1のパケット処理情報管理部3が、さらに2つの管理部から構成されている。すなわち、本実施の形態におけるパケット処理情報管理部3は、ハッシュ関数f(x)に対応するパケット処理情報の管理部であるパケット処理情報F管理部31と、ハッシュ関数g(x)に対応するパケット処理情報の管理部であるパケット処理情報G管理部32と、から構成される。ここで、ハッシュ関数f(x)とハッシュ関数g(x)には、互いに独立したハッシュ関数を採用する。
図13は、本発明の実施の形態3にかかるパケット並列処理装置としての通信装置の構成を示すブロック図である。図13に示すように、本実施の形態においては、実施の形態1の構成を示す図1のパケット処理情報管理部3が、さらに2つの管理部から構成されている。すなわち、本実施の形態におけるパケット処理情報管理部3は、ハッシュ関数f(x)に対応するパケット処理情報の管理部であるパケット処理情報F管理部31と、ハッシュ関数g(x)に対応するパケット処理情報の管理部であるパケット処理情報G管理部32と、から構成される。ここで、ハッシュ関数f(x)とハッシュ関数g(x)には、互いに独立したハッシュ関数を採用する。
図14は、本実施の形態において、負荷分散部1の構成を示すブロック図である。図14に示すように、本実施形態においては、実施の形態1の構成を示す図2の振り分け情報管理部12が、ハッシュ関数f(x)に対応する振り分け情報F管理部121と、ハッシュ関数g(x)に対応する振り分け情報G管理部122と、から構成されている。
図15は、本実施の形態において、振り分け情報管理部12にて管理する情報の一例を示す図である。図15においては、ヘッダ解析部11の解析結果であるフローを示すアドレスより、振り分け可能なパケット処理部2−1〜2−Nを得ることができる表形式の情報であり、<F>はハッシュ関数f(x)に関する振り分け情報、<G>はハッシュ関数g(x)に関する振り分け情報を示す。
図16は、本実施の形態において、パケット処理情報の一例を示す図であり、図16−1では、パケット処理情報管理部3にて管理する情報を、図16−2では、パケット処理情報分散管理部21−1と21−2にて管理する情報を示す。図16−2の情報は、図16−1の情報の一部であり、<#1F>と<#2F>はハッシュ関数f(x)に関する情報、<#1G>と<#2G>はハッシュ関数g(x)に関する情報を示す。2つのハッシュ関数は互いに独立した関数であるので、フローを示すアドレスから求められるハッシュ値には、なんら相関関係が無い。図示例では、ハッシュ関数f(x)とg(x)の取り得る値の範囲を同じとしているが、異なっていてもよい。また、図17は、負荷分散部1におけるパケット振り分け処理の手順を示すフローチャートである。
次に、本実施の形態の動作について、図3、図13〜図17を参照して説明する。入力端子4より入力したパケットが負荷分散部1へ転送されると、負荷分散部1では、まず、ヘッダ解析部11においてパケットのヘッダ内でフローを示すアドレスに、予め規定されているハッシュ関数f(x)を適用してハッシュ値Hfを求める(図17のS401)。同様にハッシュ関数g(x)を適用してハッシュ値Hgを求める(S402)。次に、ハッシュ値Hfを検索鍵として図15における<F>に示された振り分け情報F管理部121にて管理する情報を検索し、振り分け可能なパケット処理部のリスト(以下、リストFという)を得る(S403)。同様に、ハッシュ値Hgを検索鍵として図15における<G>に示された振り分け情報G管理部122にて管理する情報を検索し、振り分け可能なパケット処理部のリスト(以下、リストGという)を得る(S404)。振り分け情報管理部121と122にて管理する情報が無い場合、またはリストFとGにいずれのパケット処理部も記載されていない場合には(S405)、パケットには予め決められたデフォルト処理を施してパケット処理を完了させる(S406)。このデフォルト処理の例としては、パケットを廃棄する、または、パケットをパケット処理部#1へ転送し、統計情報収集部#1で統計量を計数する、などがある。
振り分け情報解析部121と122にて管理する振り分け情報から該当する検索結果を取得できた場合には、次に、リストFとGで示されたパケット処理部と対になっているすべての統計情報収集部14の統計量を取得する(S407)。そして、これらの統計量のうちで最も小さい統計量を求め(S408)、対となっているパケット処理部2にパケットを振り分ける。このとき、パケット処理部での処理に必要となる採用したハッシュ関数情報も一緒に転送する(S409)。同時に、統計情報収集部14にて統計量を計数する(S410)。
次に、アドレス{src11,dst11}を持つフローのパケットが2個連続して入力されたとする。すると、ヘッダ解析部11では、このアドレスにハッシュ関数f(x)とg(x)を適用して、ハッシュ値Hf=0x001とHg=0x006を得る。この値は図16−1の<F>と<G>に記載されている。この値を振り分け情報F管理部121と振り分け情報G管理部122に渡し、図15における<F>に従い、振り分け可能なパケット処理部のリストFとしてパケット処理部2−1を、図15における<G>に従い、振り分け可能なパケット処理部のリストGとしてパケット処理部2−2を得る。
次に、パケット処理部2−1と2−2に対応する統計量を、統計情報収集部14−1と14−2から得る。最初のパケットが到着したときには、双方ともゼロであるため、処理S408において一番小さな統計量は等しく、ここでは例えばパケット処理部2−1にパケットを振り分けることにする。このとき、パケットのパケット処理部2−1への振り分けと共に、ハッシュ関数f(x)を選択した、という情報も転送する。そして、統計情報収集部#14−1にて統計量を計数する。ここではパケット数を計数する。続いて、パケット処理部2−1にて、図16−2における<#1F>から、パケット処理情報Eを求め、パケットに処理Eを施し、パケット出力端子5−1より出力する。
次のパケットが到着したときには、統計情報収集部14−1から得られる統計量は1であり、統計情報収集部14−2から得られる統計量はゼロであるため、一番小さな統計量の方にパケットを振り分けることから、パケットはパケット処理部2−2に振り分けることになる。このとき、パケットのパケット処理部2−2への振り分けと共に、ハッシュ関数g(x)を選択した、という情報も転送する。そして、統計情報収集部#14−2にて統計量を計数する。続いて、パケット処理部2−2にて、図16−2における<#2G>から、パケット処理情報Eを求め、パケットに処理Eを施し、パケット出力端子5−2より出力する。
本実施の形態によれば、2つの互いに独立なハッシュ関数を用いることにより、同一のフローであっても、2つのパケット処理部に均等に振り分けることが可能となる。なお、本実施の形態のその他の効果は、実施の形態1の効果と同様である。
なお、本実施の形態においては、使用するハッシュ関数の個数を2個としているが、この個数に特に制限はなく、使用するハッシュ関数の個数だけ同一フローを振り分けられる効果がある。ハッシュ関数を多く用いる方がパケットを多くのパケット処理部に均等に振り分けられるが、情報量が多くなってしまうため、使用するハッシュ関数の個数は情報量とのトレードオフで決められる。また、本実施の形態は、実施の形態1または2と組み合わせることが可能であり、ハッシュ関数の個数を増加させなくとも、より振り分けが均等となるパケット並列処理が可能となる。
また、上記いずれの実施の形態において、統計量として過去の計数値を使用しているが、この統計量から想定される予測値を替わりに用いることも可能である。
以上のように、本発明にかかるパケット並列処理装置は、より高速な処理が要求されるパケット処理装置に有用である。
1 負荷分散部
11 ヘッダ解析部
12 振り分け情報管理部
121 振り分け情報F管理部
122 振り分け情報G管理部
13 パケット振り分け部
14−1〜14−N 統計情報収集部#1〜#N
15 振り分け統計情報収集部
2−1〜2−N パケット処理部#1〜#N
21−1〜21−N パケット処理情報分散管理部#1〜#N
22−1〜22−N パケット処理メイン部#1〜#N
3 パケット処理情報管理部
31 パケット処理情報F管理部
32 パケット処理情報G管理部
4 パケット入力端子
5−1〜5−N パケット出力端子#1〜#N
60 Ethernet(登録商標)フレームヘッダ部
61 IPv4パケットヘッダ部
62 ペイロード部
63 フレームチェックシーケンス部
11 ヘッダ解析部
12 振り分け情報管理部
121 振り分け情報F管理部
122 振り分け情報G管理部
13 パケット振り分け部
14−1〜14−N 統計情報収集部#1〜#N
15 振り分け統計情報収集部
2−1〜2−N パケット処理部#1〜#N
21−1〜21−N パケット処理情報分散管理部#1〜#N
22−1〜22−N パケット処理メイン部#1〜#N
3 パケット処理情報管理部
31 パケット処理情報F管理部
32 パケット処理情報G管理部
4 パケット入力端子
5−1〜5−N パケット出力端子#1〜#N
60 Ethernet(登録商標)フレームヘッダ部
61 IPv4パケットヘッダ部
62 ペイロード部
63 フレームチェックシーケンス部
Claims (21)
- 入力されるパケットを振り分けることによりパケット処理の負荷の分散を図る負荷分散部と、
前記パケットに施す処理情報を管理するパケット処理情報管理部と、
前記パケット処理情報管理部が管理するパケット処理情報に基づいて前記負荷分散部により振り分けられた前記パケットに所定の処理を施す複数のパケット処理部と、
を備えたパケット並列処理装置であって、
前記負荷分散部は、
前記パケットのヘッダ情報を解析するヘッダ解析部と、
前記パケットのヘッダ情報の解析結果に応じてパケット処理部を特定するためのパケット処理部リストを管理する振り分け情報管理部と、
前記パケット処理部を決定して前記パケットを振り分けるパケット振り分け部と、
前記パケット処理部それぞれに振り分けられた前記パケットの量を計数し、前記パケット処理部それぞれに対になって設けられた統計情報収集部と、を備える
ことを特徴とするパケット並列処理装置。 - 前記複数のパケット処理部は、それぞれ、
前記パケット処理情報管理部にて管理されるパケット処理情報が分散して割り当てられたパケット処理情報分散管理部と、
このパケット処理情報分散管理部が管理するパケット処理情報に基づいて前記パケット振り分け部により振り分けられた前記パケットに所定の処理を施すパケット処理メイン部と、を備える
ことを特徴とする請求項1に記載のパケット並列処理装置。 - 前記パケット振り分け部は、前記ヘッダ解析部による前記パケットのヘッダ情報の解析結果をもとに前記振り分け情報管理部を検索して得られた前記パケット処理部リストで特定されるパケット処理部の中から、最も小さい計数値を計数している前記統計情報収集部と対になる前記パケット処理部へ、前記パケットを振り分けることを特徴とする請求項1または2に記載のパケット並列処理装置。
- 前記パケット処理情報管理部は、前記複数の統計情報収集部のすべてから計数値を取得し、前記取得された計数値に応じて、前記複数のパケット処理情報分散管理部がそれぞれ管理するパケット処理情報を更新すると共に、前記振り分け情報管理部が管理する振り分け情報を更新することを特徴とする請求項2または3に記載のパケット並列処理装置。
- 前記パケット処理情報分散管理部は、前記パケット処理情報を格納する領域として分散管理領域とコピー領域とを備え、
前記分散管理領域の管理情報は入力トラヒックの状態に依らずに前記パケット処理情報管理部から割り当てられるのに対して、前記コピー領域の管理情報は入力トラヒックの状態に依存して追加または削除可能であり、
前記パケット処理情報管理部は、前記パケット処理情報分散管理部のコピー領域の内容を変更することにより、前記パケット処理情報分散管理部が管理するパケット処理情報を更新することを特徴とする請求項4に記載のパケット並列処理装置。 - 前記複数のパケット処理情報分散管理部の分散管理領域には、それぞれ、前記パケット処理情報管理部が管理するすべてのパケット処理情報を前記パケット処理部の個数で分割したパケット処理情報が分散して割り当てられていることを特徴とする請求項5に記載のパケット並列処理装置。
- 前記パケット処理情報管理部は、前記パケット処理情報分散管理部のコピー領域に、前記分散管理領域単位で前記パケット処理情報をコピーすることを特徴とする請求項6に記載のパケット並列処理装置。
- 前記振り分け情報管理部が管理する振り分け情報は、パケットのフローを示す送信元アドレスおよび宛先アドレスの組にハッシュ関数を適用して得られたハッシュ値ごとに前記パケット処理部リストを与えるものであり、
前記ヘッダ解析部は、前記パケットのヘッダ情報の解析結果として対応するハッシュ値を出力し、出力されたハッシュ値を検索鍵として、前記振り分け情報管理部が管理する振り分け情報を検索することにより、前記パケット処理部リストを得ることを特徴とする請求項1〜7のいずれか1つに記載のパケット並列処理装置。 - 前記パケット処理情報管理部が管理するパケット処理情報は、パケットのフローを示す送信元アドレスおよび宛先アドレスの組ごとに、前記パケットに施す処理の内容を与えるものであり、
前記パケット処理メイン部は、前記パケットのフローを示す送信元アドレスおよび宛先アドレスの組を検索鍵として、前記パケット処理情報分散管理部にて管理されたパケット処理情報を検索することにより、前記パケットに施す処理の内容を得ることを特徴とする請求項2〜8のいずれか1つに記載のパケット並列処理装置。 - 前記パケット処理情報管理部は、前記複数の統計情報収集部のすべてから計数値を取得し、前記取得された計数値の中から最も大きな計数値を求め、前記最も大きな計数値がコピーしきい値を超える場合には、前記最も大きな計数値を計数している前記統計情報収集部と対になる前記パケット処理情報分散管理部の分散管理領域の内容を、このパケット処理情報分散管理部を除く他のパケット処理情報分散管理部のコピー領域にコピーすると共に、
前記振り分け情報管理部が管理する振り分け情報のうち、前記最も大きな計数値を計数している前記統計情報収集部と対になる前記パケット処理情報分散管理部の分散管理領域にて管理されたフローのハッシュ値に対して、前記パケット処理部リストを前記複数のパケット処理部のすべてとなるように変更することを特徴とする請求項8または9に記載のパケット並列処理装置。 - 前記パケット処理情報管理部は、前記複数の統計情報収集部のすべてから計数値を取得し、前記取得された計数値の中にコピーしきい値を超える計数値が複数存在するときには、前記コピーしきい値を超える各計数値を計数している前記統計情報収集部と対になる前記パケット処理情報分散管理部の分散管理領域の内容を、前記コピーしきい値を超える複数の計数値の比率にしたがって、前記コピーしきい値以下の計数値を計数している他の前記統計情報収集部と対になる前記パケット処理情報分散管理部のコピー領域にコピーすると共に、
前記振り分け情報管理部が管理する振り分け情報のうち、前記コピーしきい値を超える各計数値を計数している前記統計情報収集部と対になる前記パケット処理情報分散管理部の分散管理領域にて管理されたフローのハッシュ値に対して、前記パケット処理部リストを前記コピーしきい値を超える各計数値と対になる前記パケット処理情報分散管理部の分散管理領域の内容のコピー先である前記パケット処理部を含むように変更することを特徴とする請求項8または9に記載のパケット並列処理装置。 - 前記パケット処理情報管理部は、前記複数のパケット処理情報分散管理部のコピー領域にコピー情報が存在するか否かを判別し、いずれかのコピー領域にコピー情報が存在するときには、この既存のコピー情報をその分散管理領域にて管理するパケット処理分散管理部を特定し、この特定されたパケット処理分散管理部と対になる前記統計情報収集部から計数値を取得し、この取得された計数値がコピー停止しきい値を下回る場合には、前記既存のコピー情報を前記コピー領域から削除すると共に、
前記振り分け情報管理部が管理する振り分け情報のうち、前記特定されたパケット処理分散管理部の分散管理領域にて管理されたフローのハッシュ値に対して、前記パケット処理部リストを前記特定されたパケット処理分散管理部を備えたパケット処理部となるように変更することを特徴とする請求項10または11に記載のパケット並列処理装置。 - 振り分けられるパケットの量をフローのハッシュ値ごとに計数する振り分け統計情報収集部を備え、
前記パケット処理情報管理部は、前記複数の統計情報収集部のすべてから計数値を取得し、さらに、前記振り分け統計情報収集部から計数値を取得し、これらの取得された計数値に応じて、前記複数のパケット処理情報分散管理部がそれぞれ管理するパケット処理情報を更新すると共に、
前記振り分け情報管理部が管理する振り分け情報を更新することを特徴とする請求項1〜9のいずれか1つに記載のパケット並列処理装置。 - 前記パケット処理情報管理部は、前記複数の統計情報収集部のすべてから計数値を取得し、前記複数の統計情報収集部から取得された計数値の中に第1のコピーしきい値を超える計数値が存在するときには、この第1のコピーしきい値を超える計数値を計数している前記統計情報収集部と対になる前記パケット処理部を特定し、前記特定されたパケット処理部のパケット処理情報分散管理部にて管理されたフローのハッシュ値に対して前記振り分け統計情報収集部から対応する計数値を取得し、前記振り分け情報管理部から取得された計数値の中に第2のコピーしきい値を超える計数値が存在するときには、この第2のコピーしきい値を超える計数値に対応するハッシュ値を特定し、前記特定されたハッシュ値に対応するパケット処理情報を、前記特定されたパケット処理部を除く他の前記パケット処理部のパケット処理情報分散管理部におけるコピー領域へコピーすると共に、
前記振り分け情報管理部が管理する振り分け情報のうち、前記特定されたハッシュ値に対して、前記パケット処理部リストをそのコピー領域にパケット処理情報がコピーされた前記他のパケット処理部を含むように変更することを特徴とする請求項13に記載のパケット並列処理装置。 - 前記パケット処理情報管理部は、前記複数のパケット処理情報分散管理部のコピー領域にコピー情報が存在するか否かを判別し、いずれかのコピー領域にコピー情報が存在するときには、この既存のコピー情報から対応するフローのハッシュ値を特定し、前記振り分け統計情報収集部から前記特定されたハッシュ値に対応する計数値を取得し、この取得された計数値がコピー停止しきい値を下回る場合には、前記既存のコピー情報を前記コピー領域から削除すると共に、
前記振り分け情報管理部が管理する振り分け情報のうち、前記特定されたハッシュ値に対して、前記パケット処理部リストから前記既存のコピー情報が削除された前記パケット処理部を除くように変更することを特徴とする請求項14に記載のパケット並列処理装置。 - 前記振り分け情報管理部は、パケットのヘッダ情報に第1のハッシュ関数を適用して得られるハッシュ値に対してパケット処理部を特定するためのパケット処理部リストを与える第1の振り分け情報管理部と、パケットのヘッダ情報に前記第1のハッシュ関数と独立な第2のハッシュ関数を適用して得られるハッシュ値に対してパケット処理部を特定するためのパケット処理部リストを与える第2の振り分け情報管理部と、から構成され、
前記パケット処理情報管理部は、前記第1のハッシュ関数に対応するパケット処理情報を管理する第1のパケット処理情報管理部と、前記第2のハッシュ関数に対応するパケット処理情報を管理する第2のパケット処理情報管理部と、から構成され、
前記ヘッダ解析部は、前記パケットのヘッダ情報の解析結果として、前記第1および第2のハッシュ関数をそれぞれ前記パケットのヘッダ情報に適用して得られる第1および第2のハッシュ値を出力し、前記第1および第2のハッシュ値を検索鍵として、それぞれ前記第1および第2の振り分け情報管理部が管理する振り分け情報を検索することにより、前記パケットを振り分け可能なパケット処理部リストとしてそれぞれ第1および第2のパケット処理部リストを求め、前記第1および第2のパケット処理部リストに示されたパケット処理部と対になるすべての前記統計情報収集部から計数値を取得し、前記取得された計数値のうち、最も小さい計数値を計数している前記統計情報収集部と対になる前記パケット処理部へ前記パケットを振り分けることを特徴とする請求項8〜15のいずれか1つに記載のパケット並列処理装置。 - 前記統計情報収集部が計数する計数値および前記振り分け統計収集部が計数する計数値は、所定の時間あたりに計数するパケットの数またはパケットのバイト数であることを特徴とする請求項1〜16のいずれか1つに記載のパケット並列処理装置。
- 入力されるパケットを複数のパケット処理部へ振り分け、パケット処理情報管理部にて管理されるパケット処理情報に基づいて、振り分けられたパケットに所定の処理を施すパケット並列処理方法において、
入力されるパケットのヘッダ情報を解析し、その解析結果をもとに振り分け情報管理部にて管理される振り分け情報を検索して、前記パケットを振り分け可能なパケット処理部リストを得るステップと、
得られたパケット処理部リストから前記パケットの振り分け先となるパケット処理部を決定して前記パケットを振り分けるステップと、
前記パケットが振り分けられたパケット処理部において、前記パケット処理情報に基づいて、前記パケットに所定の処理を施すステップと、
前記パケット処理部それぞれに対になって設けられ、振り分けられたパケットの量を計数する統計情報収集部のうち、前記パケットが振り分けられたパケット処理部と対になっている前記統計情報収集部に対して、振り分けられた前記パケットの量に応じて計数値を更新するステップと、
を含むことを特徴とするパケット並列処理方法。 - 前記複数のパケット処理部には、それぞれ、前記パケット処理情報管理部にて管理されるパケット処理情報が分散して割り当てられており、前記パケット処理部は割り当てられたパケット処理情報に基づいて、前記パケットに所定の処理を施すことを特徴とする請求項18に記載のパケット並列処理方法。
- 前記パケット処理部リストに含まれるパケット処理部とそれぞれ対になる前記統計情報収集部から計数値を取得し、前記取得された計数値の中で最も小さい計数値を計数している前記統計情報収集部と対になる前記パケット処理部を振り分け先として前記パケットを振り分けることを特徴とする請求項18または19に記載のパケット並列処理方法。
- 前記パケット処理情報管理部は、前記複数の統計情報収集部のすべてから計数値を取得し、前記取得された計数値に応じて、前記複数のパケット処理部への前記パケット処理情報管理部が管理するパケット処理情報の割り当て方を更新すると共に、前記振り分け情報管理部が管理する振り分け情報を更新することを特徴とする請求項19または20に記載のパケット並列処理方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2006356324A JP2008167305A (ja) | 2006-12-28 | 2006-12-28 | パケット並列処理装置およびパケット並列処理方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2006356324A JP2008167305A (ja) | 2006-12-28 | 2006-12-28 | パケット並列処理装置およびパケット並列処理方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
JP2008167305A true JP2008167305A (ja) | 2008-07-17 |
Family
ID=39696106
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2006356324A Pending JP2008167305A (ja) | 2006-12-28 | 2006-12-28 | パケット並列処理装置およびパケット並列処理方法 |
Country Status (1)
Country | Link |
---|---|
JP (1) | JP2008167305A (ja) |
Cited By (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2011077746A (ja) * | 2009-09-30 | 2011-04-14 | Hitachi Ltd | ネットワーク中継装置 |
JP2012100012A (ja) * | 2010-11-01 | 2012-05-24 | Fujitsu Ltd | 解析処理装置、解析処理プログラム、及び解析処理方法 |
JP2012195847A (ja) * | 2011-03-17 | 2012-10-11 | Fujitsu Ltd | ファイアウォール装置,処理方法及びファイアウォールシステム |
US8300526B2 (en) | 2009-01-07 | 2012-10-30 | Hitachi, Ltd. | Network relay apparatus and packet distribution method |
JP2013504913A (ja) * | 2009-09-15 | 2013-02-07 | ナパテック アクティーゼルスカブ | データパケットを分析するための装置、データパケット処理システム、及び処理方法 |
WO2014038582A1 (ja) * | 2012-09-04 | 2014-03-13 | 日本電気株式会社 | パケット振分装置、パケット振分方法、およびパケット振分プログラム |
JP2014086755A (ja) * | 2012-10-19 | 2014-05-12 | Nippon Telegr & Teleph Corp <Ntt> | 分散処理システムおよび分散処理方法 |
JP2015534348A (ja) * | 2012-09-14 | 2015-11-26 | ヒューレット−パッカード デベロップメント カンパニー エル.ピー.Hewlett‐Packard Development Company, L.P. | パケット検査装置におけるデータユニット用の負荷分散の決定 |
JP2016021734A (ja) * | 2014-06-19 | 2016-02-04 | 富士通株式会社 | 情報処理装置及び情報処理方法 |
-
2006
- 2006-12-28 JP JP2006356324A patent/JP2008167305A/ja active Pending
Cited By (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8300526B2 (en) | 2009-01-07 | 2012-10-30 | Hitachi, Ltd. | Network relay apparatus and packet distribution method |
JP2013504913A (ja) * | 2009-09-15 | 2013-02-07 | ナパテック アクティーゼルスカブ | データパケットを分析するための装置、データパケット処理システム、及び処理方法 |
JP2011077746A (ja) * | 2009-09-30 | 2011-04-14 | Hitachi Ltd | ネットワーク中継装置 |
JP2012100012A (ja) * | 2010-11-01 | 2012-05-24 | Fujitsu Ltd | 解析処理装置、解析処理プログラム、及び解析処理方法 |
JP2012195847A (ja) * | 2011-03-17 | 2012-10-11 | Fujitsu Ltd | ファイアウォール装置,処理方法及びファイアウォールシステム |
WO2014038582A1 (ja) * | 2012-09-04 | 2014-03-13 | 日本電気株式会社 | パケット振分装置、パケット振分方法、およびパケット振分プログラム |
JP2015534348A (ja) * | 2012-09-14 | 2015-11-26 | ヒューレット−パッカード デベロップメント カンパニー エル.ピー.Hewlett‐Packard Development Company, L.P. | パケット検査装置におけるデータユニット用の負荷分散の決定 |
JP2014086755A (ja) * | 2012-10-19 | 2014-05-12 | Nippon Telegr & Teleph Corp <Ntt> | 分散処理システムおよび分散処理方法 |
JP2016021734A (ja) * | 2014-06-19 | 2016-02-04 | 富士通株式会社 | 情報処理装置及び情報処理方法 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP2008167305A (ja) | パケット並列処理装置およびパケット並列処理方法 | |
US6993031B2 (en) | Cache table management device for router and program recording medium thereof | |
CN100547976C (zh) | 用于标识反向路径转发信息的方法和装置 | |
CN104769884B (zh) | 利用流数据的转发表优化 | |
US8228908B2 (en) | Apparatus for hardware-software classification of data packet flows | |
JP5800019B2 (ja) | 通信経路制御システム、経路制御装置、通信経路制御方法および経路制御プログラム | |
US7007101B1 (en) | Routing and forwarding table management for network processor architectures | |
US8767757B1 (en) | Packet forwarding system and method using patricia trie configured hardware | |
KR100997182B1 (ko) | 플로우 정보 제한장치 및 방법 | |
CN113542125B (zh) | 一种基于集成流表转发报文的方法及装置 | |
US20060233156A1 (en) | Network routing apparatus | |
US20010014081A1 (en) | Packet flow control apparatus and a method for controlling the same | |
KR101409311B1 (ko) | 패킷 처리 및 전처리기를 위한 장치 및 방법 | |
CN109417567B (zh) | 用于内容中心网络中的兴趣组的方法和系统 | |
CN102498694A (zh) | 通信系统、转发节点、路径管理服务器、通信方法和程序 | |
CN100450037C (zh) | 一种ip报文负载分担实现方法及装置 | |
JP5888338B2 (ja) | 通信システムおよび通信方法 | |
CN102891800A (zh) | 获知溢出地址的可升级转发表 | |
CN103026662A (zh) | 通信系统、节点、统计信息收集装置、统计信息收集方法和程序 | |
US20150281352A1 (en) | Communication control device, storage device, and communication control method | |
EP2530873B1 (en) | Method and apparatus for streaming netflow data analysis | |
US7330469B2 (en) | Internet protocol address lookup system and method using three-layer table architecture | |
US20050163122A1 (en) | System and methods for packet filtering | |
JP3591492B2 (ja) | パケット振分装置およびパケット振分プログラム | |
JP2000083055A (ja) | ルータ |