以下、添付図面を用いて、本発明にかかる管理装置の実施例について説明する。以下の実施例では、本発明にかかる管理装置の一例として、ゲートウェイ装置を例に挙げて説明する。なお、本明細書で「運用データ」とは現在扱われているデータである。また、「冗長データ」とは、運用データの複製データである。
(実施例1)
図1は、実施例1にかかる管理装置を示すブロック図である。管理装置100は、制御部101と、複数の分散処理部102−1〜102−M(Mは1以上の整数)と、複数のデータ処理部103−1〜103−N(Nは3以上の整数)と、がスイッチ部104を介して接続される。制御部101は、管理装置100全体を管理し、冗長系再構築処理を実行する。冗長系再構築処理とは、複数のデータ処理部103−1〜103−Nのうちあるデータ処理部103−j(jは1≦j≦Nとなる整数)が故障した場合、現存するデータ処理部103−k(k≠j)で故障したデータ処理部103−jのデータ処理を引き継ぐ処理であり、これにより、データ処理に応じたサービスを継続することができる。また、現存するデータ処理部103−k間で冗長系を再構築することで次の故障に対応することができる。
複数の分散処理部102−1〜102−Mは、パケットの送受信をおこなう。分散処理部102−i(iは1≦i≦Mとなる整数)は、受信したパケットを当該パケットの特徴情報に基づいて、所属すべきグループを決定する。グループについては後述する。特徴情報としては、ゲートウェイ装置の場合、たとえば、パケットの宛先アドレスが用いられる。なお、特徴情報として採用される情報は、宛先アドレスに限定されず、適用される装置やプロトコル、サービスに応じた情報を採用すればよい。また、分散処理部102−iは、グループが割り当てられたパケットを、当該パケットが所属すべきグループを担当するデータ処理部103−jに転送する。グループの決定およびパケットの割り当てについては、図2で説明する。また、分散処理部102−iは、パケット処理部130においてパケット処理されたパケットを外部に転送する。各分散処理部102−iは、同一機能を実現する。
複数のデータ処理部103−1〜103−Nは、分散処理部102−iから転送されてくるパケットのセッション情報を管理する。データ処理部103−jは、パケット処理部130と、運用データ群集合R1−jと、冗長データ群集合R2−jと、を有する。jはデータ処理部103−jを特定する番号(データ処理部番号)となる。パケット処理部130は、パケットを解析して、パケットの宛先アドレスや送信元アドレスなどパケットの特徴となる情報であるセッション情報を抽出する。パケット処理部130は、抽出したセッション情報を運用データとして保存する。
運用データ群集合R1−jとは、運用データ群の集合である。運用データ群とは、同一グループに所属する運用データの集合である。たとえば、データ処理部103−1に記憶される運用データ群集合R1−1には、運用データ群として、グループ1のセッション情報群S1−1と、グループ2のセッション情報群S2−1が格納される。
冗長データ群集合R2−jとは、冗長データ群の集合である。冗長データ群とは、同一グループに所属する冗長データの集合である。たとえば、データ処理部103−1に記憶される冗長データ群集合R2−1には、冗長データ群として、グループ3のセッション情報群S3−2と、グループ4のセッション情報群S4−2が格納される。
また、あるデータ処理部103−jのある運用データ群が更新されると、当該運用データ群に対応する冗長データ群も更新される。たとえば、データ処理部103−1の運用データ群集合R1−1内のグループ1のセッション情報群S1−1が更新されると、データ処理部103−2の冗長データ群集合R2−2内のグループ1のセッション情報群S1−2も更新される。この同期処理は、制御部101を介して実行されてもよく、データ処理部103−j間で制御部101を介さずに実行されてもよい。
ここで、管理装置100による外部へのパケット転送例について説明する。データ処理部103−jによって転送されたパケットは、スイッチ部104に入力される。スイッチ部104は、転送されたパケットの宛先アドレスに基づいて、宛先アドレスに近いネットワークに転送できる分散処理部102−iを選択し、転送されたパケットを当該分散処理部102−iに転送する。分散処理部102−iは、転送されたパケットを外部へ転送する。
図2は、分散処理部102−iによるグループの決定処理およびパケットの割当処理を示す説明図である。分散処理部102−iは、ハッシュ関数121と、対応情報122と、を有する。分散処理部102−iは、ハッシュ関数121を用いて、入力されたパケットから特徴情報を抽出する。具体的には、たとえば、分散処理部102−iは、セッションを識別するパケットの宛先アドレスをハッシュ関数121に与え、ハッシュ値を抽出する。
対応情報122は、グループ番号とデータ処理部番号jとを対応付けたテーブルである。グループ番号とは、セッション情報に割り当てられるグループを特定する情報である。また、データ処理部番号jとは、データ処理部103−jを特定する情報である。
データ処理部103−jの負荷状態を監視する指標の例として、データ処理部103−jのプロセッサ使用率や、データ処理部103−jの処理しているセッション情報の数がある。本実施例では、管理装置100は、入力されたパケットの宛先アドレスなどのセッションに関する特徴情報に基づき、入力されたパケットを、グループというデータ処理部103−jへの振り分けに使用する単位に分類する。
すなわち、グループとは、パケットの属するセッション情報を複数集約した単位であり、より具体的には、セッションに関する特徴情報についてのハッシュ値が共通するセッション情報の集合である。すなわち、対応情報122におけるグループ番号とは、ハッシュ値の取りうる値である。
図2では、説明の便宜上、グループ数を「8」とし、データ処理部の台数を「4」とする。パケットが分散処理部102−iに入力されると、ハッシュ関数121により、パケットから、たとえば、ハッシュ値であるグループ番号「3」が抽出されたとする。対応情報122において、グループ番号「3」に対応するデータ処理部番号jは「3」である。したがって、分散処理部102−iは、パケットの転送先をデータ処理部103−3に決定し、データ処理部103−3に転送する。
データ処理部103−3は、転送されてきたパケットをパケット処理部130にて処理し、セッション情報を抽出する。抽出したセッション情報はグループ3のセッション情報である。そして、データ処理部103−3は、抽出したセッション情報をグループ3のセッション情報群S3−1に追加する。
このように、分散処理部102−iでは、ハッシュ関数121を使用した1回のハッシュ値計算と対応情報122を使用した1回のテーブル検索とにより、パケットの転送先となるデータ処理部103−jを決定する。したがって、パケットの振り分け処理を簡易化することができ、低ハードウェアコストにより分散処理部102−iを実装することができる。
また、データ処理部103−jの増減設時には、対応情報122におけるデータ処理部番号jを書き換えるだけで転送先を変更することができる。したがって、ハッシュ関数121の出力結果の変更や対応情報122のテーブルサイズを変更する必要がない。
たとえば、図2において、データ処理部103−3が故障し、グループ番号:3の場合の転送先のデータ処理部103−jを、データ処理部103−3からデータ処理部103−1に変更する場合、対応情報122のグループ番号:3のレコードにおけるデータ処理部番号jを「3」から「1」に書き換えるだけでよい。したがって、分散処理部102−iが管理する情報の量は、処理中のセッション数やパケット数によって増減せず、安定した高速処理を実現することができる。
なお、グループ数は、たとえば、分散処理部102−iのメモリ量および計算能力と、データ処理部103−jの最小使用数や最大使用数を考慮して決定される。グループ数が少ないほど、対応情報122のテーブルサイズが小さくなるため、分散処理部102−iの使用メモリ量の削減やテーブル検索に関する計算量を削減することができるが、振り分けが均一に行われず負荷分散性能が劣化する可能性が高い。
一方、グループ数が多いほど、高い負荷分散性能を実現することができるが、対応情報122のテーブルサイズが増大し、テーブル検索に関するステップ数も増加する。したがって、高速処理を実現するために分散処理部102−iに必要となるハードウェア資源が高機能となり、ハードウェアコストが増加する可能性が高い。
また、グループ数をセッション数と同数にすることが可能であるが、例えば、管理装置100で同時に処理するセッション数が100万セッションであるとすると、100万エントリを保持する対応情報122を用意する必要があり、使用メモリ量やテーブル検索時間が増大する。
このため、中庸の値をグループ数として設定するのが望ましい。たとえば、データ処理部103−jの最大使用数の10倍から100倍程度のグループ数を設定するのが好ましい。運用データ群および冗長データ群は、セッション情報をグループ毎に分割されて管理される。
図2の例では、データ処理部103−1は、グループ1のセッション情報群S1−1を運用データ群として保持する。また、データ処理部103−1は、グループ5のセッション情報群S5−2を運用データ群として保持する。データ処理部103−1は、グループ4のセッション情報群S4−2を冗長データ群として保持する。また、データ処理部103−1は、グループ7のセッション情報群S7−2を冗長データ群として保持する。
また、各データ処理部103−jにおいて、運用データ群は、互いにグループが重複しないように格納される。同様に、各データ処理部103−jにおいて、冗長データ群は、互いにグループが重複しないように格納される。また、各データ処理部103−jにおいて格納される運用データ群集合R1−jおよび冗長データ群集合R2−j間でもグループが重複しないように格納される。
図3は、グループを用いない場合の冗長系再構築例を示す説明図である。説明の理解の容易のため、データ処理部の台数を4台とする。(a)は、障害発生前の状態であり、(b)は障害発生後の状態である。(a)および(b)において、左列のセッション情報群が運用データ群であり、右列のセッション情報群が冗長データ群である。
データ処理部3に障害が発生すると、データ処理部3において運用データ群として運用されていたセッション情報群D3−1が利用できなくなるため、セッション情報群D3−1の複製(冗長データ群)であるセッション情報D3−2を保持するデータ処理部2がデータ処理部3の処理を引き継ぐ。この場合、データ処理部2は、セッション情報群D2−1とセッション情報群D3−2の各々のデータ処理を実行することになり、他のデータ処理部1,3に比べて負荷が増大する。
図4は、実施例1にかかるグループを用いる場合の冗長系再構築例を示す説明図である。説明の理解の容易のため、データ処理部103−jの台数を4台とし、グループ総数を8とする。(a)は、障害発生前の状態であり、(b)は障害発生後の状態である。
データ処理部103−3に障害が発生すると、データ処理部103−3において運用データ群集合R1−3内のセッション情報群S3−1が利用できなくなる。このため、セッション情報群S3−1の複製(冗長データ群)であるセッション情報群S3−2を保持するデータ処理部103−4がデータ処理部103−3の処理を引き継ぐ。また、データ処理部103−3において運用データ群集合R1−3内のセッション情報群S7−1が利用できなくなる。このため、セッション情報群S7−1の複製(冗長データ群)であるセッション情報群S7−2を保持するデータ処理部103−1がデータ処理部103−3の処理を引き継ぐ。これにより、データ処理部103−3が故障したとしても、グループごとにセッション情報群が分散して引き継がれるため、残存するデータ処理部103−jの一部に負荷が集中せず、負荷分散の高精度化を図ることができる。
つぎに、図4の(a)を用いて運用データ群および冗長データ群の初期配置例について説明する。管理装置100は、最初に運用データ群の初期配置を行う。管理装置100は、グループをグループ番号順にデータ処理部103−jにラウンドロビンで割り当てる。たとえば、図4ではデータ処理部103−jの台数が「4」で、グループ数が「8」である。このため、グループ1をデータ処理部103−1、グループ2をデータ処理部103−2、グループ3をデータ処理部103−3、グループ4をデータ処理部103−4、グループ5をデータ処理部103−1、グループ6をデータ処理部103−2、グループ7をデータ処理部103−3、グループ8をデータ処理部103−4に割り当てる。
つぎに、管理装置100は、冗長データ群の初期配置を行う。管理装置100は、各データ処理部103−jにおいて、運用データ群とその複製である冗長データ群とは同一のデータ処理部に配置されないように配置する。たとえば、管理装置100は、データ処理部103−1に運用データ群であるグループ1のセッション情報群S1−1が配置されるため、その冗長データ群であるグループ1のセッション情報S1−2を、データ処理部103−1に配置させない。
このように、運用データ群とその複製である冗長データ群とは同一のデータ処理部に配置されないように配置するために、管理装置100は、データ処理部毎に運用データ群の複製の割り当てを行い、複製元のデータ処理部103−jの次の番号のデータ処理部をスタートとして、グループ番号順にラウンドロビンで割り当てる。複製元のデータ処理部103−jを変更する毎にラウンドロビンのスタートを変更することにより、冗長データ群の偏りを平準化することができる。たとえば、管理装置100は、最初にデータ処理部103−1の運用データ群であるグループ1、グループ5の複製をデータ処理部103−1を除くデータ処理部103−jに割り当てる。データ処理部103−2をスタートとするラウンドロビンにより、グループ1をデータ処理部103−2、グループ5をデータ処理部103−3に割り当てる。次に、管理装置100はデータ処理部103−2の運用データ群であるグループ2、グループ6の複製をデータ処理部103−2を除くデータ処理部103−jに割り当てる。データ処理部103−3をスタートとするラウンドロビンにより、グループ2をデータ処理部103−3に、グループ6をデータ処理部103−4に割り当てる。続いて、管理装置100はデータ処理部103−3の運用データ群であるグループ3、グループ7の複製をデータ処理部103−3を除くデータ処理部103−jに割り当てる。データ処理部103−4をスタートとするラウンドロビンにより、グループ3をデータ処理部103−4に、グループ7をデータ処理部103−1に割り当てる。最後に、管理装置100はデータ処理部103−4の運用データ群であるグループ4、グループ8の複製をデータ処理部103−4を除くデータ処理部103−jに割り当てる。データ処理部103−1をスタートとするラウンドロビンにより、グループ4をデータ処理部103−1に、グループ8をデータ処理部103−2に割り当てる。この配置方法は一例であり、これ以外にも種々の方法を採用することができる。
図5は、制御部101、分散処理部102−i、およびデータ処理部103−jのハードウェア構成例を示すブロック図である。制御部101、分散処理部102−i、およびデータ処理部103−j(コンピュータ500)は、プロセッサ501と記憶装置502とインターフェース503とバス504とを有する。プロセッサ501と記憶装置502とインターフェース503とはバス504を介して接続される。プロセッサ501は、記憶装置502に格納されたプログラムを読み込んで当該プログラムに応じた処理を実行する。記憶装置502は、制御部101、分散処理部102−iおよびデータ処理部103−jによる処理を実現するためのプログラムを格納する。また、記憶装置502は、プログラムの実行時に参照されるテーブルを格納する。インターフェース503は、データの入出力をおこなう。
図6は、実施例1にかかる制御部101および分散処理部102−iの機能的構成例1を示すブロック図である。制御部101は、グループ情報610と、検出部600と、第1の特定部601と、第2の特定部602と、変更部603と、構築部604と、グループ情報更新部605と、を有する。グループ情報610は、図5に示した記憶装置502に格納される情報である。
図7は、グループ情報610の一例を示す説明図である。グループ情報610は、複数のデータ処理部103−1〜103−Nの各々と当該各データ処理部103−jが記憶する複数の冗長データ群の所属グループとを対応付けたテーブルである。
また、図6に戻り、検出部600、第1の特定部601、第2の特定部602、変更部603、構築部604、およびグループ情報更新部605は、具体的には、たとえば、図5に示した記憶装置502に記憶されたプログラムをプロセッサ501に実行させることにより、その機能を実現する。
検出部600は、複数のデータ処理部103−1〜103−Nの中のいずれかのデータ処理部103−jのデータ移行指示を検出する。具体的には、たとえば、検出部600は、複数のデータ処理部103−1〜103−Nの中のいずれかのデータ処理部103−jにおいて障害が発生した場合、障害が発生したデータ処理部103−jからの障害発生通知をデータ移行指示として検出する。また、検出部600は、障害だけではなく、データ処理部103−jの管理装置100からの脱抜をデータ移行指示として検出することとしてもよい。
第1の特定部601は、検出部600によってデータ移行指示が検出された場合、対応情報122を参照することにより、いずれかのデータ処理部103−jが記憶する複数の運用データ群が所属する複数のグループを特定する。具体的には、たとえば、第1の特定部601は、データ処理部103−3の故障が検出された場合、図2に示したように、故障したデータ処理部103−3のデータ処理部番号「3」に対応するグループ番号「3」、「7」を特定する。図6の例では、第1の特定部601が、分散処理部102−iの保持する対応情報122を参照するが、制御部101が対応情報122を保持し、第1の特定部601が制御部101の保持する対応情報122を参照するという機能構成を取ることもできる。この機能構成では、制御部101と分散処理部102−iの間の情報転送を行うことなく、制御部101内で閉じた形で、情報の参照ができるため、図6の機能構成と比較して情報参照にかかる時間を削減できるという利点がある。
第2の特定部602は、グループ情報610を参照することにより、第1の特定部601によって特定された各グループに対応する複数のデータ処理部103−1〜103−Nを特定する。具体的には、たとえば、第1の特定部601によりグループ番号「3」、「7」が特定された場合、第2の特定部602は、グループ情報610を参照して、グループ番号「3」に対応するデータ処理部番号j4のデータ処理部103−4と、グループ番号「7」に対応するデータ処理部番号j1のデータ処理部103−1と、を特定する。
変更部603は、第2の特定部602によって特定された複数のデータ処理部103−1〜103−Nの各々について、いずれかのデータ処理部103−jが記憶する運用データ群と同一グループの冗長データ群を運用データ群に変更する。具体的には、たとえば、図4に示したように、変更部603は、第2の特定部602により特定されたデータ処理部103−1について、障害が発生したデータ処理部103−3が記憶する運用データ群であるグループ7のセッション情報群S7−1と同一の冗長データ群S7−2を、運用データ群に変更する。
同様に、変更部603は、第2の特定部602により特定されたデータ処理部103−4について、障害が発生したデータ処理部103−3が記憶する運用データ群であるグループ3のセッション情報群S3−1と同一の冗長データ群S3−2を、運用データ群に変更する。この変更は、たとえば、冗長データ群の各々に設定された運用/冗長を識別するフラグを変更することにより実行される。したがって、データ転送が発生しない。
構築部604は、変更部603による変更後において、運用データ群集合R1−jおよび冗長データ群集合R2−jについて冗長系再構築処理を実行する。具体的には、たとえば、構築部604は、変更部603による変更後において、冗長データ群集合について、いずれかのデータ処理部103−jを除いた残余のデータ処理部103−kの各々がグループの異なる冗長データ群を複数記憶し、残余のデータ処理部103−kの各々に記憶される運用データ群の所属グループおよび冗長データ群の所属グループが異なるグループとなるように構築する。
より具体的には、たとえば、構築部604は、故障したデータ処理部103−3において冗長データ群として記憶されていたグループ2のセッション情報群S2−2およびグループ5のセッション情報群S5−2の複製元であるグループ2のセッション情報群S2−1およびグループ5のセッション情報群S5−1を特定する。そして、構築部604は、特定したセッション情報群S2−1、S5−1を複製して、残存するデータ処理部103−kに格納する。
また、グループ3のセッション情報群S3−2およびグループ7のセッション情報群S7−2は、運用データ群に昇格したため、冗長化する必要がある。したがって、構築部604は、グループ3のセッション情報群S3−2およびグループ7のセッション情報群S7−2の各々を複製する。そして、構築部604は、複製したグループ3のセッション情報群S3−3およびグループ7のセッション情報群S7−3を、残存するデータ処理部103−kに格納する。
この場合、構築部604は、残存する各データ処理部103−kにおいて、冗長データ群の所属グループが互いに異なるように、かつ、同一のデータ処理部において、運用データ群の所属グループと冗長データ群の所属グループとが異なるように、構築する。
グループ情報更新部605は、構築部604による構築結果にしたがってグループ情報610を更新する。更新の具体例については後述するが、グループ情報610の更新により、更新後においても、グループ情報610を参照することにより、構築後に障害が発生した場合にも対応することができる。
また、分散処理部102−iは、対応情報122と、決定部611と、第3の特定部612と、転送部613と、対応情報更新部614と、を有する。対応情報122は、図5に示した記憶装置502に格納される情報である。決定部611、第3の特定部612、転送部613、および対応情報更新部614は、具体的には、たとえば、図5に示した記憶装置502に記憶されたプログラムをプロセッサ501に実行させることにより、その機能を実現する。
決定部611は、入力データの特徴情報に基づいて、入力データに関する運用データの所属グループを決定する。入力データとは、たとえば、外部から受信されるパケットである。入力データの特徴情報とは、たとえば、パケットに含まれる宛先アドレスなどのセッション識別子である。入力データに関する運用データとは、たとえば、セッション情報である。
決定部611は、宛先アドレスなどの入力データの特徴情報をハッシュ関数121に与えてハッシュ値を求める。求められたハッシュ値は、グループ番号である。これにより、入力データに関する運用データの所属グループが決定される。
第3の特定部612は、対応情報122を参照することにより、決定部611によって決定された入力データに関する運用データの所属グループに対応するデータ処理部103−jを特定する。具体的には、たとえば、第3の特定部612は、所属グループのグループ番号が「3」である場合、グループ番号「3」に対応するデータ処理部番号「3」を引くことにより、所属グループに対応するデータ処理部103−3を特定する。
転送部613は、第3の特定部612によって特定されたデータ処理部に入力データを転送する。具体的には、たとえば、転送部613は、第3の特定部612により所属グループに対応するデータ処理部103−3が特定された場合、入力データをデータ処理部103−3に転送する。入力データを受信したデータ処理部103−3は、入力データを処理し、入力データのセッション情報を、運用データであるグループ3のセッション情報として、データ処理部103−3の運用データ群集合R1−3に追加する。
対応情報更新部614は、変更部603による変更結果にしたがって対応情報122を更新する。具体的には、たとえば、図4に示したように、データ処理部103−3に障害が発生した場合、データ処理部103−3の運用データ群集合R1−3内のグループ3のセッション情報群S3−1の冗長データであるグループ3のセッション情報群S3−2が、データ処理部103−4において、冗長データから運用データに変更される。対応情報更新部614は、この変更にしたがって、対応情報122のグループ番号「3」のエントリにおけるデータ処理部番号jを「3」から「4」に更新する。
図8は、あるデータ処理部の障害発生時における動作を示す説明図であり、図9は、あるデータ処理部の障害発生時における動作手順例を示すフローチャートである。図8では、データ処理部103−3に障害が発生したものとする。制御部101は、データ処理部103−1〜103−4を監視し(ステップS901:No)、データ処理部103−3に障害を検出すると(ステップS901:Yes)、第1の特定部601により分散処理部102−iの対応情報122にアクセスして、対応情報122におけるデータ処理部番号「3」に対応するグループ番号「3」、「7」を特定する(ステップS902)。特定されたグループ番号は、グループ情報610において、冗長データ群の所属グループを示す番号となる。
そして、制御部101は、第2の特定部602によりグループ情報610を参照して、特定されたグループ番号「3」、「7」に対応するデータ処理部番号jを特定する(ステップS903)。これにより、データ処理部103−3の運用データ群集合R1−3内のグループ3のセッション情報群S3−1、グループ7のセッション情報群S7−1の複製であるグループ3のセッション情報群S3−2、グループ7のセッション情報群S7−2の格納先が、データ処理部103−4、103−1に特定される。
このあと、制御部101は、特定されたデータ処理部103−4に対し、データの移行指示を送信する(ステップS904)。これにより、データ処理部103−4は、冗長データ群集合R2−4内のグループ3のセッション情報群S3−2を、運用データ群となるグループ3のセッション情報群S3−1に変更する。同様に、制御部101は、特定されたデータ処理部103−1に対し、データの移行指示を送信する(ステップS904)。これにより、データ処理部103−1は、冗長データ群集合R2−1内のグループ7のセッション情報群S7−2を、運用データ群となるグループ7のセッション情報群S7−1に変更する。
各データ処理部103−4,103−1による変更が完了すると、制御部101は、分散処理部102−iに対し対応情報122の更新を指示する。分散処理部102−iは、対応情報122更新部により、グループ番号「3」に対応するデータ処理部番号j「3」を「4」に更新し、グループ番号「7」に対応するデータ処理部番号j「3」を「1」に更新する(ステップS905)。これにより、冗長データ群の変更後における状態が対応情報122に反映される。
このあと、パケットが受信されると、分散処理部102−iは、宛先アドレスなどのパケットの特徴情報をハッシュ関数121に与え、ハッシュ値を算出する。ここでは、ハッシュ関数121によりハッシュ値「3」が算出されたものとする。そして、分散処理部102−iは、対応情報122を参照することにより、ハッシュ値であるグループ番号「3」に対応するデータ処理部番号「4」を引く。これにより、分散処理部102−iは、パケットをデータ処理部103−4に転送する。データ処理部103−4は、転送されてきたパケットをパケット処理部130により処理し、得られたセッション情報をグループ3のセッション情報群に追加または更新する。これにより、データ処理部103−3の障害発生にともなう復旧作業が完了する。
図10は、図8による復旧後の冗長化再構築例を示す説明図である。図8では、データ処理部103−3の障害発生による復旧がなされたが、残存するデータ処理部103−1,103−2,103−4のいずれかに障害が発生した場合、復旧ができなくなる。そのため、残存するデータ処理部103−1,103−2,103−4による冗長化再構築が必要となる。
図8の復旧後の状態では、データ処理部103−3が保持していたグループ2,3,5,7のセッション情報群についての冗長データ群が欠落している。したがって、管理装置100は、残存するデータ処理部103−1,103−2,103−4に記憶されている運用データ群を複製することにより、冗長化再構築を実行する。冗長データ群が欠落している運用データ群のみを複製して、冗長か再構築を実行することにより、データ転送量を必要最低限に抑えることができる。この際、冗長データ群の偏りを平準化するため、冗長データ群が少ないデータ処理部から順に、複製された冗長データ群を割り当てるのが好ましい。
制御部101は、データ処理部103−1に冗長化再構築の指示を出すことにより、当該指示を受けたデータ処理部103−1は、他のデータ処理部103−2,103−4に複製する運用データ群を選択する。グループ1のセッション情報群S1−1は、データ処理部103−2においてグループ1のセッション情報群S1−2としてすでに冗長化されているため、グループ1のセッション情報群S1−1は複製されない。
グループ5のセッション情報群S5−1の冗長データ群は、どのデータ処理部にも格納されていないため、データ処理部103−1はグループ5のセッション情報群S5−1を複製した冗長データ群であるグループ5のセッション情報群S5−2を、冗長データ群が少ないデータ処理部103−4に書き込む。
同様に、グループ7のセッション情報群S7−1の冗長データ群は、どのデータ処理部にも格納されていないため、データ処理部103−1はグループ7のセッション情報群S7−1を複製した冗長データ群であるグループ7のセッション情報群S7−2を、データ処理部103−2に書き込む。
また、制御部101は、データ処理部103−2に冗長化再構築の指示を出すことにより、当該指示を受けたデータ処理部103−2は、他のデータ処理部103−1,103−4に複製する運用データ群を選択する。グループ6のセッション情報群S6−1は、データ処理部103−4においてグループ6のセッション情報群S6−2としてすでに冗長化されているため、グループ6のセッション情報群S6−1は複製されない。
グループ2のセッション情報群S2−1の冗長データ群は、どのデータ処理部103−jにも格納されていないため、データ処理部103−2はグループ2のセッション情報群S2−1を複製した冗長データ群であるグループ2のセッション情報群S2−2を、冗長データ群が少ないデータ処理部103−1に書き込む。
また、制御部101は、データ処理部103−4に冗長化再構築の指示を出すことにより、当該指示を受けたデータ処理部103−4は、他のデータ処理部103−1,103−2に複製する運用データ群を選択する。グループ4のセッション情報群S4−1は、データ処理部103−1においてグループ4のセッション情報群S4−2としてすでに冗長化されているため、グループ4のセッション情報群S4−1は複製されない。
また、グループ8のセッション情報群S8−1は、データ処理部103−2においてグループ8のセッション情報群S8−2としてすでに冗長化されているため、グループ8のセッション情報群S8−1は複製されない。
グループ3のセッション情報群S3−1の冗長データ群は、どのデータ処理部103−jにも格納されていないため、データ処理部103−4はグループ3のセッション情報群S3−1を複製した冗長データ群であるグループ3のセッション情報群S3−2を、データ処理部103−2に書き込む。セッション情報群の数が同じであるため、データ処理部103−1に書き込まれてもよい。このあと、制御部101は、グループ情報610を更新する。
図11は、図10による冗長化再構築によるグループ情報610の更新後の状態を示す説明図である。これにより、データ処理部103−3の障害発生後において、さらに残存するデータ処理部のいずれかに障害が発生した場合でも、復旧することができる。
図12は、構築部604による図10に示した冗長化再構築処理手順例を示すフローチャートである。まず、構築部604は、複製元のデータ処理部が保持する運用データ群の所属グループ番号を特定する(ステップS1201)。図10の更新後の対応情報122を参照することにより、構築部604は、どのデータ処理部103−jがどのグループの運用データ群を記憶しているかを特定することができる。
つぎに、構築部604は、未選択のグループがあるか否かを判断し(ステップS1202)、未選択のグループがある場合(ステップS1202:Yes)、未選択のグループを1つ選択するグループ選択処理を実行する(ステップS1203)。選択基準としては、たとえば、グループ番号の昇順または降順でもよく、また、データ処理部番号jの昇順または降順で選択されたデータ処理部103−jが担当するグループのグループ番号でもよい。また、グループ内のセッション情報の数の少ない順でもよい。
このあと、構築部604は、配置先決定処理を実行する(ステップS1204)。配置先決定処理(ステップS1204)の詳細については後述するが、配置先決定処理(ステップS1204)では、構築部604は、各データ処理部103−jの負荷が均等になるように、選択グループに所属する運用データ群の複製である冗長データ群の配置先を決定する。
そして、構築部604は、選択グループに所属する運用データ群を複製し、複製である冗長データ群を、決定された配置先に配置する(ステップS1205)。このあと、グループ情報更新部605は、図11に示したように、配置後の状態となるようにグループ情報610を更新して(ステップS1206)、ステップS1202に戻る。ステップS1202において、未選択のグループがない場合(ステップS1202:No)、冗長化再構築処理を終了する。
図13は、図12に示した配置先決定処理(ステップS1204)の詳細な処理手順例を示すフローチャートである。まず、構築部604は、選択グループの運用データ群が冗長化済みであるか否かを判断する(ステップS1301)。冗長化済みである場合(ステップS1301:Yes)、選択グループについての配置先決定処理(ステップS1204)を終了して、ステップS1205に移行する。
一方、冗長化済みでない場合(ステップS1301:No)、構築部604は、選択グループを運用データ群として保持するデータ処理部103−jを特定する(ステップS1302)。たとえば、グループ5の場合、図10では、構築部604は、運用データ群であるグループ5のセッション情報群S5−1はデータ処理部103−1に格納されていることを、対応情報122を参照することにより特定する。
つぎに、構築部604は、選択グループを冗長データ群として保持していないデータ処理部103−jの中から、冗長データ群の配置先となるデータ処理部103−jを決定する(ステップS1303)。具体的には、たとえば、構築部604は、データ処理部番号jの降順または昇順で配置先となるデータ処理部103−jを決定する。また、構築部604は、冗長データ群の個数が少ないデータ処理部103−jを配置先に決定してもよい。また、データ処理部103−jのスペックが高い順やデータ処理部のCPU利用率の低い順でもよい。
たとえば、グループ5の場合、図10では、グループ5のセッション情報群S5−1の冗長データ群であるグループ5のセッション情報群S5−2の配置先候補として、データ処理部103−2,103−4があるが、図10では、冗長データ群の個数が少ない方のデータ処理部103−4が選択される。これにより、配置先決定処理(ステップS1204)を終了する。
このように、実施例1によれば、データ処理部103−jの負荷分散の高精度化を図ることができる。また、実施例1では、障害が発生したことにより復旧および冗長化再構築を実行したが、メンテナンスのためにあるデータ処理部を停止させる場合にも適用することができる。
つぎに、データ処理部103−jが増設される場合の冗長化再構築について説明する。データ処理部103−jが増加される場合、追加されたデータ処理部103−jにはグループが割り当てられていないため、管理装置100は、全体として負荷が均等になるように、追加したデータ処理部103−jに対し運用データ群および冗長データ群を配置する。これにより、データ処理部103−jが増設された後に障害が発生した場合やメンテナンスを行う場合であっても、実施例1のように復旧および冗長化再構築をおこなうことができる。
図14は、実施例1にかかる制御部101および分散処理部102−iの機能的構成例2を示すブロック図である。制御部101は、グループ情報610と、検出部600と、算出部1411と、構築部604と、グループ情報更新部605と、を有する。検出部1400および算出部1411は、具体的には、たとえば、図5に示した記憶装置502に記憶されたプログラムをプロセッサ501に実行させることにより、その機能を実現する。
検出部1400は、データ処理部103−jの追加を検出する。具体的には、たとえば、検出部1400は、スイッチ部104の空きスロットにデータ処理部103−jが追加された場合に、当該追加を検出する。
算出部1411は、検出部1400によってデータ処理部103−kの追加が検出された場合、グループ総数と追加されたデータ処理部103−kを含むデータ処理部103−jの総数とに基づいて、追加されたデータ処理部103−kが記憶すべき運用データ群のグループ数および冗長データ群のグループ数を算出する。具体的には、たとえば、算出部1411は、グループ総数を、追加されたデータ処理部103−kを含むデータ処理部103−jの総数で除することにより、追加されたデータ処理部103−kが記憶すべき運用データ群のグループ数および冗長データ群のグループ数を算出する。追加されたデータ処理部103−kが記憶すべきグループ数を算出し、算出グループ数のみの運用データ群と冗長データ群を移行することにより、冗長系再構築にかかるデータ転送量を抑制することができる。
グループ総数とは、複数のデータ処理部103−1〜103−Nにより格納されている運用データ群の所属グループの総数である。実施例1を例に挙げると、グループ総数は「8」である。また、追加前のデータ処理部103−jの総数が「3」の場合、データ処理部が1台追加されると、追加されたデータ処理部103−kを含むデータ処理部103−jの総数は「4」になる。
したがって、算出部1411は、グループ総数「8」を追加されたデータ処理部103−kを含むデータ処理部103−jの総数「4」で除した「2」を、追加されたデータ処理部103−kが記憶すべき運用データ群のグループ数および冗長データ群のグループ数として算出する。
構築部604は、算出部1411による算出結果にしたがって、冗長化再構築処理を実行する。冗長化再構築処理の処理内容は、実施例1と同一であるが、各データ処理部103−jにおける運用データ群のグループ数と冗長データ群のグループ数にしたがって、冗長化再構築が実行される。上記の算出例の場合、各データ処理部103−1〜103−4では、運用データ群のグループ数は「2」、冗長データ群のグループ数は「2」となる。また、実施例1と同等、各データ処理部においては、運用データ群のグループと冗長データ群のグループは異なるように構築される。
図15は、データ処理部103−jの増設時における冗長化再構築例を示す説明図(その1)である。図15では、冗長化再構築前の状態を示す。データ処理部103−1〜103−3は既設のデータ処理部である。分散処理部102−iでパケットが受信されると、分散処理部102−iは、宛先アドレスなどのパケットの特徴情報をハッシュ関数121に与え、ハッシュ値を算出する。ここでは、ハッシュ関数121によりハッシュ値「7」が算出されたものとする。そして、分散処理部102−iは、対応情報122を参照することにより、ハッシュ値であるグループ番号「7」に対応するデータ処理部番号j「1」を引く。これにより、分散処理部102−iは、パケットをデータ処理部103−1に転送する。データ処理部103−1は、転送されてきたパケットをパケット処理部130により処理し、得られたセッション情報をグループ7のセッション情報群に追加または更新する。
図16は、データ処理部の増設時における冗長化再構築例を示す説明図(その2)である。図16は、図15の次状態を示す。データ処理部103−4が新規に増設されたデータ処理部である。制御部101は、既設のデータ処理部103−1に対し、データ移行指示を送信する。データ処理部103−1は、運用データ群のグループ数および冗長データ群のグループ数を確認する。グループ数は「2」に変更されるため、運用データ群集合R1−1から1つの運用データ群が移行される。図16の場合、たとえば、データ処理部103−1は、運用データ群であるグループ7のセッション情報S7−1を、増設したデータ処理部103−4に移行させる。
また、制御部101は、既設のデータ処理部103−2に対し、データ移行指示を送信する。データ処理部103−2は、運用データ群のグループ数および冗長データ群のグループ数を確認する。グループ数は「2」に変更されるため、運用データ群の集合から1つの運用データ群が移行される。図16の場合、たとえば、データ処理部103−2は、運用データ群であるグループ8のセッション情報S8−1を、増設したデータ処理部103−4に移行させる。
また、冗長データ群集合R2−jから1つの冗長データ群が移行される。図16の場合、たとえば、データ処理部103−2は、冗長データ群であるグループ1のセッション情報S1−2を、増設したデータ処理部103−4に移行させる。
また、制御部101は、既設のデータ処理部103−3に対し、データ移行指示を送信する。データ処理部103−3は、運用データ群のグループ数および冗長データ群のグループ数を確認する。グループ数は「2」に変更されるため、冗長データ群の集合から1つの運用データ群が移行される。図16の場合、たとえば、データ処理部103−3は、冗長データ群であるグループ2のセッション情報S2−2を、増設したデータ処理部103−4に移行させる。
このあと、制御部101は、対応情報122の更新指示を分散処理部102−iに送信する。分散処理部102−iは、グループ番号「7」に対応するデータ処理部番号jを「1」から増設したデータ処理部のデータ処理部番号「4」に更新する。同様に、分散処理部102−iは、グループ番号「8」に対応するデータ処理部番号jを「2」から増設したデータ処理部のデータ処理部番号「4」に更新する。このあと、制御部101は、グループ情報610を更新する。
図17は、グループ情報610の更新例を示す説明図である。図17において、(A)は更新前の状態を示し、図15に対応する。(B)は更新後の状態を示し、図16に対応する。
図18は、運用データ群の冗長化再構築処理手順例を示すフローチャートである。まず、制御部101は、検出部1400によりデータ処理部103−kが追加されたか否かを監視し(ステップS1801:No)、追加が検出された場合(ステップS1801:Yes)、算出部1411により、追加されたデータ処理部103−kに移行させる運用データ群のグループ数を算出する(ステップS1802)。
そして、制御部101は、算出されたグループ数を移行可能グループ数に設定する(ステップS1803)。移行可能グループ数とは、算出されたグループ数を上限として、運用データ群が割り当てられる都度、減少する値である。移行可能グループ数が0になると(ステップS1804:Yes)、移行させるべき運用データ群が存在しないことになるため、冗長化再構築処理が終了する。
移行可能グループ数が0でない場合(ステップS1804:No)、構築部604は、既設のデータ処理部の中から運用データ群として保持するグループ数が最大のデータ処理部を選択する(ステップS1805)。図16の場合、データ処理部103−1またはデータ処理部103−2が選択される。
つぎに、構築部604は、選択されたデータ処理部103−jにおいて、追加されたデータ処理部103−kに移行させる運用データ群を選択する(ステップS1806)。図16の場合、データ処理部103−1が選択されたとすると、グループ7のセッション情報群S7−1が選択される。
そして、構築部604は、選択されたデータ処理部103−jにより、選択された運用データ群を、追加されたデータ処理部に移行させる(ステップS1807)。図16の場合、選択されたグループ7のセッション情報群S7−1が、追加されたデータ処理部103−4に移行させられる。
このあと、構築部604は、移行可能グループ数を1つデクリメントし(ステップS1808)、対応情報更新部614が、図16に示したように、対応情報122を更新して(ステップS1809)、ステップS1803に戻る。ステップS1803において、移行可能グループ数が0になった場合(ステップS1804:Yes)、一連の処理を終了する。これにより、算出されたグループ数となるように運用データ群が分散化される。
図19は、冗長データ群の冗長化再構築処理手順例を示すフローチャートである。まず、制御部101は、検出部1400によりデータ処理部103−kが追加されたか否かを監視し(ステップS1901:No)、追加が検出された場合(ステップS1901:Yes)、算出部1411により、追加されたデータ処理部103−kに移行させる冗長データ群のグループ数を算出する(ステップS1902)。
そして、制御部101は、算出されたグループ数を移行可能グループ数に設定する(ステップS1903)。移行可能グループ数とは、算出されたグループ数を上限として、冗長データ群が割り当てられる都度、減少する値である。移行可能グループ数が0になると(ステップS1904:Yes)、移行させるべき冗長データ群が存在しないことになるため、冗長化再構築処理が終了する。
移行可能グループ数が0でない場合(ステップS1904:No)、構築部604は、既設のデータ処理部103−jの中から冗長データ群として保持するグループ数が最大のデータ処理部103−jを選択する(ステップS1905)。図16の場合、データ処理部103−2またはデータ処理部103−3が選択される。
つぎに、構築部604は、選択されたデータ処理部103−jにおいて、追加されたデータ処理部103−kに移行させる冗長データ群を選択する(ステップS1906)。図16の場合、データ処理部103−2が選択されたとすると、グループ1のセッション情報群S1−2が選択される。
そして、構築部604は、選択されたデータ処理部103−jにより、選択された冗長データ群を、追加されたデータ処理部103−kに移行させる(ステップS1907)。図16の場合、選択されたグループ1のセッション情報群S1−2が、追加されたデータ処理部103−4に移行させられる。
このあと、構築部604は、移行可能グループ数を1つデクリメントし(ステップS1908)、グループ情報更新部605が、図17に示したように、グループ情報610を更新して(ステップS1909)、ステップS1903に戻る。ステップS1903において、移行可能グループ数が0になった場合(ステップS1904:Yes)、一連の処理を終了する。これにより、算出されたグループ数となるように冗長データ群が分散化される。
なお、図18および図19では、グループ数が均等になるように冗長化再構築をおこなったが、セッション情報の数やCPU使用率が均等になるように冗長化再構築をおこなってもよい。
図20は、冗長化再構築の他の例を示す説明図である。図16では、冗長化再構築後に、分散処理部102−iが対応情報122を再構築結果にしたがって更新したが、対応情報122の更新中は、分散処理部102−iは、パケットをデータ処理部103−jに転送できず、パケットが損失する可能性がある。このため、新たなデータ処理部番号jが追加された場合、対応情報更新部614は、旧データ処理部番号jを削除せずに一定期間保持させる。これにより、更新中は、旧データ処理部番号jを参照することができ、パケット損失を抑制することができる。また、更新後は、新データ処理部番号jが参照される。更新後一定期間経過した場合、対応情報更新部614は、旧データ処理部番号jを削除する。
また、上述した実施例1では、1つの対応情報122を用いて参照や更新をおこなったが、対応情報122は、参照用と更新用の2種類用意しておき、更新の都度、参照用と更新用とを切り替える構成としてもよい。
図21は、対応情報122の切替例を示す説明図である。分散処理部102−iは、第1の対応情報122Aと第2の対応情報122Bとを有する。(A)では、第1の対応情報122Aが更新用の対応情報122であり、第2の対応情報122Bが参照用の対応情報122である。分散処理部102−iは、参照用である第2の対応情報122Bを参照して、受信したパケットの転送先となるデータ処理部を決定して、決定したデータ処理部にパケットを転送する。第1の対応情報122Aの更新が発生すると、第1の対応情報122Aが更新される。更新中は、分散処理部102−iは、第2の対応情報122Bを参照する。
更新が完了すると、制御部101は、参照用と更新用とを切り替える。すなわち、制御部101は、第1の対応情報122Aを参照用に切り替え、第2の対応情報122Bを更新用に切り替えて、(B)の状態となる。これにより、対応情報122を切り替える時間だけ、分散処理部102−iにおいてパケットをバッファリングすることができるため、パケット損失の発生を抑制することができる。
(実施例2)
実施例2について説明する。実施例1では、管理装置100には単一の制御部101を含む構成としたが、実施例2は、各データ処理部に同一機能の制御部101を実装した例である。すなわち、実施例2では、制御部101専用のハードウェア資源を用意することなく、複数のデータ処理部103−1〜103−Nが分散制御による構成管理を行う。なお、実施例1と同一構成には同一符号を付し、その説明を省略する。
図22は、実施例2における管理装置100を示すブロック図である。各データ処理部103−jには、制御部101−jが搭載される。制御部101−jの機能は、実施例1の制御部101と同一である。制御部101−jのアルゴリズムは、実行するデータ処理部や実行する時刻に依存せず、参照する情報の内容が同一であれば同一の計算結果が得られる。
任意のデータ処理部103−jが故障した場合は、現存する各データ処理部103−k(k≠j)の各制御部101−kが復旧や冗長系再構築を実行する。各データ処理部103−kは同一の結果を取得し、必要なセッション情報の複製を行う。
また、新規にデータ処理部が追加される場合は、新規追加したデータ処理部が、新規追加を示す情報を既存のデータ処理部103−jに通知し、各データ処理部103−jの制御部101−kが冗長系再構築を行う。また、他の例として、複数の制御部101−jのうち代表となる制御部101−jを設定しておき、代表となる制御部101−jが他の制御部101のグループ情報610を更新することとしてもよい。また、ある制御部101−jのグループ情報610を更新対象として、他の制御部101−jが更新することとしてもよい。
このように、実施例2によれば、制御部101専用のハードウェア資源を用意することなく管理装置100を構成することができる。また、1個の制御部101による集中制御ではなく、複数のデータ処理部103−1〜103−Nによる分散制御を行うことで、構成管理に関する耐障害性の向上を低コストで図ることができる。
(実施例3)
実施例3について説明する。実施例3は、各データ処理部103−jにおける冗長データ群集合を記憶装置502に記憶させた例である。これにより、各データ処理部103−jのメモリ量を削減することができる。
図23は、実施例3にかかる管理装置100の構成を示すブロック図である。管理装置100は、各データ処理部103−jの冗長データ群集合R2−1〜R2−Nである冗長データ集合R2を記憶する記憶装置2300を有する。記憶装置2300は、スイッチ部104に接続される。
図24は、実施例3にかかる制御部101および分散処理部102−iの機能的構成例1を示すブロック図である。図24は、実施例1の図6の機能的構成例1に対応する。図6と同一機能には同一符号を付し、その説明を省略する。なお、データ処理部103−jは、冗長データ群を記憶していないものとする。
制御部101は、変更部603に替えて格納部2403を有する。格納部2403は、第2の特定部602によって特定された複数のデータ処理部103−1〜103−Nの各々について、いずれかのデータ処理部103−jが記憶する運用データ群と同一グループの冗長データ群を、記憶装置2300から抽出する。そして、格納部2403は、抽出した冗長データ群の所属グループに対応するデータ処理部に、抽出した冗長データ群を運用データ群として格納する。
すなわち、実施例3では、冗長データ群集合R2−jがすべて記憶装置2300に記憶されるため、実施例1のような、変更部603による運用/冗長の設定変更ではなく、記憶装置2300からデータ処理部103−jへのデータ転送により、冗長データ群が運用データ群として格納される。
図25は、実施例3にかかる制御部101および分散処理部102−iの機能的構成例2を示すブロック図である。図25は、実施例1の図14の機能的構成例2に対応する。図14と同一機能には同一符号を付し、その説明を省略する。実施例1では、制御部101は、構築部604により、各データ処理部103−jに冗長データ群を構築したが、実施例3では、冗長データ群の構築先が記憶装置2300となる。
このように、実施例3では、冗長データ群集合R2−jをデータ処理部103−jとは異なる記憶装置502に記憶させるため、各データ処理部103−jのメモリ量を削減することができる。
(実施例4)
つぎに、実施例4について説明する。実施例1は管理装置100について説明したが、実施例4は、実施例1の制御部101、分散処理部102−i、およびデータ処理部103−jを、独立した装置である制御装置2601、分散処理装置2602−i、およびデータ処理装置2603−iとする管理システム2600である。
図26は、実施例4にかかる管理システムを示すブロック図である。管理システム2600は、制御装置2601、分散処理装置2602−i、およびデータ処理装置2603−jを有する。制御装置2601、分散処理装置2602−i、およびデータ処理装置2603−jは、LAN(Local Area Network)、インターネットなどのネットワーク2604により通信可能に接続される。管理システム2600の処理内容は、実施例1と同様である。なお、実施例2,3の構成は、実施例4の管理システム2600にも適用可能である。これにより、各装置が分散化された場合にも冗長化再構築を適用することができる。
(実施例5)
つぎに、実施例5について説明する。実施例5は、実施例1の管理装置100の制御部101を独立した制御装置2601とし、制御部101が除かれた管理装置100を処理装置2701とする管理システム2700である。
図27は、実施例5にかかる管理システムを示すブロック図である。管理システム2700は、制御装置2601と複数の処理装置2701とがLAN、インターネットなどのネットワーク2604により通信可能に接続されたシステムである。管理システム2600の処理内容は、実施例1と同様である。制御部101は、処理装置2701を管理することになる。なお、実施例2,3の構成は、実施例5の管理システム2600にも適用可能である。実施例3に適用する場合、記憶装置502は処理装置の内部に配備してもよく、外部に配備してもよい。このように、1台の制御装置2601が複数の処理装置を管理することができるため、設備増設コストを低減することができる。
以上に説明したように、本発明の実施例1〜5によれば、冗長系再構築において負荷分散の高精度化を図ることができる。具体的には、データ処理部の増減設の際に、必要以上のデータ転送を発生させることなく、各データ処理部の負荷が均等になるように振り分け先を変更することと、冗長系を再構築することとの両方を実現することができる。
また、分散処理部では簡易な工程により、入力パケットの振り分けを実行することが可能であり、高速な振り分け処理が可能となる。したがって、分散処理部を低コストで実装することができる。
以上、本発明を添付の図面を参照して詳細に説明したが、本発明はこのような具体的構成に限定されるものではなく、添付した請求の範囲の趣旨内における様々な変更及び同等の構成を含むものである。