(57)【要約】【課題】  現用パケット処理装置の処理負担を軽減した冗長化パケット処理装置を提供する。【解決手段】  パケット処理部３１２及び３３２は、セッション状態記憶部３１４、３３４を参照、更新しつつ、それぞれ所定のパケット処理規則に従ったパケット処理を実行する。状態圧縮部３１６は、セッション状態記憶部３１４のセッション状態を複数の範囲に分割して、要約情報を作成する。状態圧縮部３３５は、セッション状態記憶部３３４のセッション状態を複数の範囲に分割して、要約情報を作成する。現用ルータ装置３１０で作成された要約情報は、予備ルータ装置３３０に送信され、セッション状態に不一致が生じているか否かが確認される。不一致が生じているときには、不一致セッション状態を特定し、第２のセッション状態記憶部３３４のセッション状態を、第１のセッション状態記憶部３１４のセッション状態に一致させる。【選択図】    図１
2006279375.tif 000002
【特許請求の範囲】
【請求項１】
通信のセッション状態を記憶する第１のセッション状態記憶部と、データリンクから受信したパケットを、所定のパケット処理規則に基づいて処理し、該処理内容に応じて、受信したパケットを送信先のデータリンクに転送し、該パケットの転送に伴って、前記第１のセッション状態記憶部が記憶するセッション状態を更新する第１のパケット処理部とを備える現用パケット処理装置と、
通信のセッション状態を記憶する第２のセッション状態記憶部と、前記データリンクから受信したパケットを、前記所定のパケット処理規則に基づいて処理し、送信先のデータリンクに転送すべきパケットに基づいて、前記第２のセッション状態記憶部が記憶するセッション状態を更新する第２のパケット処理部とを備える予備パケット処理装置と、
前記第１のセッション状態記憶部が記憶するセッション状態から要約情報を作成する第１の要約作成部と、前記第２のセッション状態記憶部が記憶するセッション状態から要約情報を作成する第２の要約作成部と、前記第１の要約作成部が作成した要約情報と、前記第２の要約情報作成部が作成した要約情報とを比較する比較部と、該比較部による比較の結果、双方の要約情報が一致しないときには、前記第２のセッション状態記憶部が記憶するセッション状態部分を、前記第１のセッション状態記憶部が記憶するセッション状態部分と一致させるセッション状態同期部とを有する同期制御手段と、
を備えることを特徴とする冗長化パケット処理装置。
【請求項２】
前記第１及び第２の要約作成部は、それぞれ前記第１及び第２のセッション状態記憶部が記憶するセッション状態を複数の範囲に分割し、分割したそれぞれの範囲について要約情報を作成する、請求項１に記載の冗長化パケット処理装置。
【請求項３】
前記セッション状態同期部は、
一致しないセッション状態部分が特定されるまで、前記第１及び第２の要約作成部に、一致しない要約情報に対応するセッション状態の範囲を分割した各分割範囲について要約情報を作成させ、該作成させた要約情報を前記比較部に相互に比較させる不一致セッション状態特定部を有し、該不一致セッション状態特定部で不一致であると特定されたセッション状態部分について、前記第２のセッション状態記憶部が記憶するセッション状態部分を、前記第１のセッション状態記憶部が記憶するセッション状態部分と一致させる、請求項２に記載の冗長化パケット処理装置。
【請求項４】
前記第１のパケット処理部により転送された所定のパケットをセッションごとに記憶するパケット蓄積部を更に備え、
前記セッション状態同期部は、前記不一致であると特定されたセッション状態部分について、当該セッション状態の所定のパケットを前記パケット蓄積部から取得し、該取得した所定の転送パケットを第２のパケット処理部に処理させることにより、前記第２のセッション状態記憶部が記憶するセッション状態を補正する、請求項３に記載の冗長化パケット処理装置。
【請求項５】
前記セッション状態同期部は、前記第１のセッション状態記憶部から、前記不一致であると特定されたセッション状態部分を取得し、該取得したセッション状態部分により、前記第２のセッション状態記憶部が記憶するセッション状態を補正する、請求項３に記載の冗長化パケット処理装置。
【請求項６】
前記現用パケット処理装置及び前記予備パケット処理装置が、状態同期タイマを更に有し、
該状態同期タイマがタイムアウトを発生させると、前記同期制御手段は、前記第１及び第２の要約作成部にそれぞれ要約情報を作成させ、第２のセッション状態記憶部が記憶するセッション状態を、第１のセッション状態記憶部が記憶するセッション状態と一致させる処理を行う、請求項１〜５の何れか一に記載の冗長化パケット処理装置。
【請求項７】
前記現用パケット処理装置及び予備パケット処理装置内の状態同期タイマは、それぞれ前記第１及び第２のパケット処理部が所定個数のパケットを処理するごとにタイムアウトを発生する、請求項６に記載の冗長化パケット処理装置。
【請求項８】
前記現用パケット処理装置が、所定周期で稼動通知を送信する稼動通知部を更に有し、前記予備パケット処理装置が、前記稼動通知部が送信する稼動通知を所定期間内に受信できるか否かにより前記現用パケット処理装置が稼動中であるか否かを監視する死活監視部を更に有し、該死活監視部が、前記現用パケット処理装置が稼動を停止したと判断すると、前記第２のパケット処理部は、パケット処理の内容に応じて、パケットを送信先のデータリンクに転送する、請求項７に記載の冗長化パケット処理装置。
【請求項９】
前記第１及び第２の要約情報作成部は、それぞれハッシュ関数を用いて要約情報を作成する、請求項１〜８の何れか一に記載の冗長化パケット処理装置。
【請求項１０】
現用パケット処理装置及び予備パケット処理装置を有する冗長化パケット処理装置のセッション状態を、同期制御装置を用いて同期させる方法であって、
前記現用パケット処理装置が、データリンクから受信したパケットを、所定のパケット処理規則に基づいて処理するステップと、
前記現用パケット処理装置が、前記パケット処理ステップでの処理内容に応じて、受信パケットを、送信先のデータリンクに転送するステップと、
前記現用パケット処理装置が、前記パケット転送処理に伴って、第１のセッション状態記憶部が記憶するセッション状態を更新するステップと、
前記予備パケット処理装置が、前記データリンクから受信したパケットを、前記所定のパケット処理規則に基づいて処理するステップと、
前記予備パケット処理装置が、受信パケットを送信先のデータリンクに転送すべきパケットにより、第２のセッション状態記憶部が記憶するセッション状態を更新するステップと、
前記同期制御装置が、前記第１及び第２のセッション状態記憶部が記憶するセッション状態からそれぞれ要約情報を作成するステップと、
前記同期制御装置が、前記第１のセッション状態記憶部が記憶するセッション状態から作成された要約情報と、前記第２のセッション状態記憶部が記憶するセッション状態から作成された要約情報とを比較するステップと、
前記比較ステップによる比較の結果、双方の要約情報が一致しないと、前記同期制御装置が、前記第２のセッション状態記憶部が記憶するセッション状態部分を、前記第１のセッション状態記憶部が記憶するセッション状態部分と一致させるステップとを有することを特徴とするセッション状態同期方法。
【請求項１１】
前記セッション状態から要約情報を作成するステップでは、前記同期制御装置は、前記第１及び第２のセッション状態記憶部が記憶するセッション状態をそれぞれ複数の範囲に分割し、該分割したそれぞれの範囲について要約情報を作成する、請求項１０に記載のセッション状態同期方法。
【請求項１２】
前記セッション状態を一致させるステップは、
前記同期制御装置が、第１のセッション状態記憶部が記憶するセッション状態及び第２のセッション状態記憶部が記憶するセッション状態について、一致しないセッション状態部分が特定されるまで、一致しない要約情報に対応するセッション状態の範囲を分割した各分割範囲について要約情報を作成し、該作成した要約情報を相互に比較して、不一致セッション状態部分を特定するステップと、
前記同期制御装置が、前記不一致セッション状態特定ステップで不一致であると特定されたセッション状態部分について、前記第２のセッション状態記憶部が記憶するセッション状態部分を、前記第１のセッション状態記憶部が記憶するセッション状態部分と一致させるステップとを有する、請求項１１に記載のセッション状態同期方法。
【請求項１３】
現用パケット処理装置が、セッションごとに、最後に転送したパケットを保持するステップを更に有し、前記セッション状態を一致させるステップでは、前記同期制御装置は、不一致であると特定されたセッション状態部分について、前記現用パケット処理装置から、最後に転送したパケットを取得し、該取得したパケットを、前記予備パケット処理装置に処理させることにより、第２のセッション状態記憶部が記憶するセッション状態を補正する、請求項１２に記載のセッション状態同期方法。
【請求項１４】
前記セッション状態を一致させるステップでは、前記同期制御装置は、不一致であると特定されたセッション状態部分のセッション状態を、前記第１のセッション状態記憶部から取得し、該取得したセッション状態により、第２のセッション状態記憶部が記憶するセッション状態を補正する、請求項１２に記載のセッション状態同期方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、冗長化パケット処理装置、及び、その冗長化方法に関し、さらに詳しくは、冗長化構成によりパケットの処理を行う冗長化パケット処理装置、及び、そのような冗長化パケット処理装置における冗長化方法に関する。
【背景技術】
【０００２】
ネットワークを構成するパケット処理装置には、例えば、ＩＰネットワークを構成するルータ装置、ルータ機能を有するファイアウォール装置などのアクセス制御装置、ＩＰｓｅｃゲートウエイなどのＶＰＮ終端装置等がある。これらパケット処理装置は、必要に応じて、受信パケットが属する上位層のセッションを識別し、識別したセッションの状態と、受信パケットのヘッダの内容とに応じて、パケットの転送や破棄等のパケット処理を行う。
【０００３】
ここで、複数のパケット処理装置を並列に配置して冗長化されたネットワーク中継装置が知られている（例えば非特許文献１参照）。図１１は、非特許文献１に記載のＯｐｅｎＢＳＤにおける冗長化されたネットワーク中継装置の構成を示している。ルータ装置１１０及び１２０は、それぞれ現用及び予備として用いられる。ルータ装置１１０及び１２０は、それぞれ、制御用データリンク１４０を介して相互に接続されており、データリンク１３０−１〜１３０−Ｎを介して、隣接ノード１５０−１〜１５０−Ｎに対して並列に接続されている。ルータ装置１１０及び１２０は、それぞれ同一のパケット処理を実行可能に構成されており、各隣接ノード１５０に対して、単一のルータ装置として振る舞う。
【０００４】
ネットワーク中継装置１００では、現用ルータ装置１１０が稼動している間は、その現用ルータ装置１１０がパケットの転送処理などを行い、予備ルータ装置１２０は、パケットの転送処理などは行わずに待機する。予備ルータ装置１２０は、現用ルータ装置１１０の死活状態の監視や、セッション状態の冗長化などを行い、現用ルータ装置１１０がその稼動を停止したと判断すると、現用ルータ装置１１０に代わり、自身がパケットの転送処理などを行うように、動作を変更する。このような動作により、現用ルータ装置１１０が、何らかの障害で稼動を停止しても、隣接ノード１５０からは、ネットワーク中継装置１００が稼動し続けているように見え、現用ルータ装置１１０の停止を隠蔽することができる。
【０００５】
図１２は、ネットワーク中継装置の詳細な構成を示している。現用ルータ装置１１０は、インタフェース部２１１により、隣接ノード１５０（図１１）からのパケットを受領する。パケット処理部２１２は、パケット処理規則２１９に従って、フィルタリングなどのパケット処理を実行する。このとき、パケット処理部２１２は、パケット処理を、セッション状態２１３を参照・更新しながら行う。処理されたパケットは、フィルタ規則により破棄されない場合は、次ホップに向けて、何れかのインタフェース部２１１より送出される。
【０００６】
状態同期タイマ２１５は、所定の周期でタイムアウトを起こす。更新状態送信部２１６は、状態同期タイマ２１５のタイムアウトを契機として、セッション状態２１３を検査し、前回の検査時点以降に更新されたセッション状態を抜き出す。その後、制御用インタフェース部２１４を通して、予備ルータ装置１２０へ、更新されたセッション状態を送信する。稼動通知タイマ２１８は、状態同期タイマ２１５とは独立に、所定の間隔でタイムアウトを起こす。稼動通知送信部２１７は、稼動通知タイマ２１８のタイムアウトを契機として、制御用インタフェース部２１４を通して、所定の形式の稼動通知メッセージを広告する。
【０００７】
予備ルータ装置１２０では、動作モード部２２８が、予備／現用の動作状態を保持している。動作モード部２２８には、当初、動作状態「予備」が格納される。予備ルータ装置１２０は、動作モード部２２８が、動作状態「予備」を保持するときには、自身ではパケット処理を行わず、セッション状態２２３の冗長化と、現用ルータ装置１１０の死活状態の監視のみを行う。
【０００８】
現用ルータ装置１１０によって送出されたセッション状態は、制御用データリンク１４０を通して、更新状態受信部２２５により受領される。更新状態受信部２２５は、現用ルータ装置１１０から受信したセッション状態を、セッション状態２２３に反映させる。これにより、現用ルータ装置１１０が稼動し続ける間は、予備ルータ装置１２０は、一定の間隔で、保持するセッション状態２２３を、現用ルータ装置１１０のセッション状態２１３と同期させることができる。
【０００９】
死活監視タイマ２２７は、所定の間隔でタイムアウトを発生する。ただし、稼動通知受信部２２６が現用ルータ装置１１０からの稼動通知を受信すると、タイマをリセットし、タイムアウトを延期させる。死活監視タイマ２２７のタイムアウト間隔は、現用ルータ装置１１０の稼動通知タイマ２１８のタイムアウト間隔よりも長く設定されている。従って、現用ルータ装置１１０が稼動通知を送信し続ける間は、死活監視タイマ２２７はタイムアウトを発生しない、
【００１０】
現用ルータ装置１１０に何らかの障害が発生し、現用ルータ装置１１０が死活監視タイマ２２７のタイムアウト周期の間に稼動通知を送信できなくなると、死活監視タイマ２２７は、タイムアウトを発生する。死活監視タイマ２２７がタイムアウトを発生すると、予備ルータ装置１２０は、動作モード部２２８が保持する動作状態を、「予備」から「現用」に切り替え、現用のルータ装置として動作する。
【００１１】
予備ルータ装置１２０のパケット処理規則２２９には、現用ルータ装置１１０のパケット処理規則２１９と同一の規則が設定されている。予備ルータ装置１２０は、動作モード部２２８が保持する動作状態が「現用」となると、インタフェース部２２１からパケットを受信し、パケット処理部２２２でパケットを処理して、セッション状態２２３の参照・更新を行う。ネットワーク中継装置１００では、このような動作により、正常時におけるセッション状態の冗長化と、フェイルオーバの処理とが実現される。
【００１２】
【非特許文献１】Firewall Failover with pfsync and CARP  http://www.countersiege.com/doc/pfsync-carp/
【発明の開示】
【発明が解決しようとする課題】
【００１３】
上記従来のネットワーク装置では、所定時間間隔で、セッション状態２１３で更新された全てのセッション状態を、現用ルータ装置１１０から、予備ルータ装置１２０へと送信する必要がある。セッション状態の更新は、パケットの通過頻度が高くなるほど多く発生するため、ユーザートラフィックが増えるほど、パケット処理部２１２が処理すべきパケットが増加すると共に、現用ルータ装置１１０から予備ルータ装置１２０に送信するセッション状態が増加する。このため、ユーザトラフィックが増大すると、現用ルータ装置１１０に多大な負荷がかかるという問題がある。
【００１４】
本発明は、上記従来技術の問題点を解消し、冗長化構成のパケット処理装置において、ユーザートラフィックが増加した際にも、現用のパケット処理装置に多大な負荷がかからない冗長化パケット装置及びその冗長化方法を提供することを目的とする。
【課題を解決するための手段】
【００１５】
上記目的を達成するために、本発明の冗長化パケット処理装置は、通信のセッション状態を記憶する第１のセッション状態記憶部と、データリンクから受信したパケットを、所定のパケット処理規則に基づいて処理し、該処理内容に応じて、受信したパケットを送信先のデータリンクに転送し、該パケットの転送に伴って、前記第１のセッション状態記憶部が記憶するセッション状態を更新する第１のパケット処理部とを備える現用パケット処理装置と、通信のセッション状態を記憶する第２のセッション状態記憶部と、前記データリンクから受信したパケットを、前記所定のパケット処理規則に基づいて処理し、送信先のデータリンクに転送すべきパケットに基づいて、前記第２のセッション状態記憶部が記憶するセッション状態を更新する第２のパケット処理部とを備える予備パケット処理装置と、前記第１のセッション状態記憶部が記憶するセッション状態から要約情報を作成する第１の要約作成部と、前記第２のセッション状態記憶部が記憶するセッション状態から要約情報を作成する第２の要約作成部と、前記第１の要約作成部が作成した要約情報と、前記第２の要約情報作成部が作成した要約情報とを比較する比較部と、該比較部による比較の結果、双方の要約情報が一致しないときには、前記第２のセッション状態記憶部が記憶するセッション状態部分を、前記第１のセッション状態記憶部が記憶するセッション状態部分と一致させるセッション状態同期部とを有する同期制御手段とを備えることを特徴とする。
【００１６】
本発明のセッション状態同期方法は、現用パケット処理装置及び予備パケット処理装置を有する冗長化パケット処理装置のセッション状態を、同期制御装置を用いて同期させる方法であって、現用パケット処理装置が、データリンクから受信したパケットを、所定のパケット処理規則に基づいて処理するステップと、現用パケット処理装置が、前記パケット処理ステップでの処理内容に応じて、受信パケットを、送信先のデータリンクに転送するステップと、前記現用パケット処理装置が、前記パケット転送処理に伴って、第１のセッション状態記憶部が記憶するセッション状態を更新するステップと、前記予備パケット処理装置が、前記データリンクから受信したパケットを、前記所定のパケット処理規則に基づいて処理するステップと、前記予備パケット処理装置が、受信パケットを送信先のデータリンクに転送すべきパケットにより、第２のセッション状態記憶部が記憶するセッション状態を更新するステップと、前記同期制御装置が、前記第１及び第２のセッション状態記憶部が記憶するセッション状態からそれぞれ要約情報を作成するステップと、前記同期制御装置が、前記第１のセッション状態記憶部が記憶するセッション状態から作成された要約情報と、前記第２のセッション状態記憶部が記憶するセッション状態から作成された要約情報とを比較するステップと、前記比較ステップによる比較の結果、双方の要約情報が一致しないと、前記同期制御装置が、前記第２のセッション状態記憶部が記憶するセッション状態部分を、前記第１のセッション状態記憶部が記憶するセッション状態部分と一致させるステップとを有することを特徴とする。
【００１７】
本発明の冗長化パケット処理装置及びセッション状態同期方法では、現用パケット処理装置及び予備パケット処理装置は、同一のデータリンクからパケット受信し、同様なパケット処理を実行することにより、第１及び第２のセッション状態が記憶するセッション状態を更新する。本発明では、第１及び第２のセッション状態が記憶するセッション状態が一致しているか否かを、例えばハッシュ関数を用いて作成された要約情報を比較することにより行っているため、第１及び第２のセッション状態記憶部が記憶するセッション状態を、逐一比較する必要がない。このため、現用パケット処理装置から、予備パケット処理装置に、第１のセッション状態記憶部が記憶するセッション状態の全てを送信して、第１及び第２のセッション状態記憶部が記憶する一致しているか否かを確認する場合に比して、現用パケット処理装置の負担を軽減できる。
【００１８】
本発明の冗長化パケット処理装置では、前記第１及び第２の要約作成部は、それぞれ前記第１及び第２のセッション状態が記憶するセッション状態を複数の範囲に分割し、分割したそれぞれの範囲について要約情報を作成することが好ましい。また、本発明のセッション状態同期方法は、前記セッション状態から要約情報を作成するステップでは、前記同期制御装置は、前記第１及び第２のセッション状態記憶部が記憶するセッション状態をそれぞれ複数の範囲に分割し、該分割したそれぞれの範囲について要約情報を作成することが好ましい。例えば、全セッション数が１０，０００個であったとき、そのセッション数を１００分割して要約情報を作成すると、第１及び第２のセッション状態記憶部に記憶されたセッション状態から、それぞれ１００個の要約情報が作成される。この１００個の要約情報のうちで、一致しない要約情報を探し出すことで、全セッションのうちのどの部分のセッション状態が一致していないかのあたりをつけることができる。
【００１９】
本発明の冗長化パケット処理装置では、前記セッション状態同期部は、一致しないセッション状態部分が特定されるまで、前記第１及び第２の要約作成部に、一致しない要約情報に対応するセッション状態の範囲を分割した各分割範囲について要約情報を作成させ、該作成させた要約情報を前記比較部に相互に比較させる不一致セッション状態特定部を有し、該不一致セッション状態特定部で不一致であると特定されたセッション状態部分について、前記第２のセッション状態記憶部が記憶するセッション状態部分を、前記第１のセッション状態記憶部が記憶するセッション状態部分と一致させる構成を採用できる。また、本発明のセッション状態同期方法では、前記セッション状態を一致させるステップは、前記同期制御装置が、第１のセッション状態記憶部が記憶するセッション状態及び第２のセッション状態記憶部が記憶するセッション状態について、一致しないセッション状態部分が特定されるまで、一致しない要約情報に対応するセッション状態の範囲を分割した各分割範囲について要約情報を作成し、該作成した要約情報を相互に比較して、不一致セッション状態部分を特定するステップと、前記同期制御装置が、前記不一致セッション状態特定ステップで不一致であると特定されたセッション状態部分について、前記第２のセッション状態記憶部が記憶するセッション状態部分を、前記第１のセッション状態記憶部が記憶するセッション状態部分と一致させるステップとを有する構成を採用できる。この場合、要約情報の作成元のセッション状態の範囲を狭くしていき、単一のセッション状態から作成した要約情報を比較することで、一致しないセッション状態を特定することができる。このように特定したセッション状態について、第２のセッション状態記憶部に記憶されたセッション状態を、第１のセッション状態記憶部に記憶されたセッション状態と一致させることで、双方のセッション状態を一致させることができる。このとき、現用パケット装置側からは、不一致であると特定されたセッション状態を補正するために必要な情報のみを送信すればよいため、現用パケット処理装置の処理負担を軽減できる。
【００２０】
本発明の冗長化パケット処理装置は、前記第１のパケット処理部により転送された所定のパケットをセッションごとに記憶するパケット蓄積部を更に備え、前記セッション状態同期部は、前記不一致であると特定されたセッション状態部分について、当該セッション状態の所定のパケットを前記パケット蓄積部から取得し、該取得した所定の転送パケットを第２のパケット処理部に処理させることにより、前記第２のセッション状態記憶部が記憶するセッション状態を補正する構成を採用できる。また、本発明のセッション状態同期方法では、現用パケット処理装置が、セッションごとに、最後に転送したパケットを保持するステップを更に有し、前記セッション状態を一致させるステップでは、前記同期制御装置は、不一致であると特定されたセッション状態部分について、前記現用パケット処理装置から、最後に転送したパケットを取得し、該取得したパケットを、前記予備パケット処理装置に処理させることにより、第２のセッション状態記憶部が記憶するセッション状態を補正する構成を採用できる。この場合、一致しないセッションの所定のパケットを予備パケット処理装置で処理させることにより、第２のセッション状態記憶部が記憶するセッション状態を、第１のセッション状態記憶部が記憶するセッション状態と一致させることができる。
【００２１】
本発明の冗長化パケット処理装置では、前記セッション状態同期部は、前記第１のセッション状態記憶部から、前記不一致であると特定されたセッション状態部分を取得し、該取得したセッション状態部分により、前記第２のセッション状態記憶部が記憶するセッション状態を補正する構成を採用することができる。また、本発明のセッション状態同期方法は、前記セッション状態を一致させるステップでは、前記同期制御装置は、不一致であると特定されたセッション状態部分のセッション状態を、前記第１のセッション状態記憶部から取得し、該取得したセッション状態により、第２のセッション状態記憶部が記憶するセッション状態を補正する構成を採用できる。この場合、一致しないセッション状態を、第１のセッション状態記憶部から取得して、その取得したセッション状態で第２のセッション状態記憶部を補正することにより、第２のセッション状態記憶部が記憶するセッション状態を、第１のセッション状態記憶部が記憶するセッション状態と一致させることができる。
【００２２】
本発明の冗長化パケット処理装置は、前記現用パケット処理装置及び前記予備パケット処理装置が、状態同期タイマを更に有し、該状態同期タイマがタイムアウトを発生させると、前記同期制御手段は、前記第１及び第２の要約作成部にそれぞれ要約情報を作成させ、第２のセッション状態記憶部が記憶するセッション状態を、第１のセッション状態記憶部が記憶するセッション状態と一致させる処理を行う構成を採用できる。この場合、所定の条件でタイムアウトを発生させる状態同期タイマを使用することで、定期的に、第１及び第２のセッション状態記憶部が記憶するセッション状態を同期させることができる。
【００２３】
本発明の冗長化パケット処理装置では、前記現用パケット処理装置及び前記予備パケット処理装置内の状態同期タイマは、それぞれ前記第１及び第２のパケット処理部が所定個数のパケットを処理するごとにタイムアウトを発生する構成を採用できる。この場合、現用パケット処理装置と、予備パケット処理装置とで、ほぼ同じタイミングでタイムをアウトを発生させることができる。
【００２４】
本発明の冗長化パケット処理装置は、前記現用パケット処理装置が、所定周期で稼動通知を送信する稼動通知部を更に有し、前記予備パケット処理装置が、前記稼動通知部が送信する稼動通知を所定期間内に受信できるか否かにより前記現用パケット処理装置が稼動中であるか否かを監視する死活監視部を更に有し、該死活監視部が、前記現用パケット処理装置が稼動を停止したと判断すると、前記第２のパケット処理部は、パケット処理の内容に応じて、パケットを送信先のデータリンクに転送する構成を採用できる。このようにすることで、外部から見て、現用パケット処理装置の稼動の停止を隠蔽できる。
【００２５】
本発明の冗長化パケット処理装置では、前記第１及び第２の要約情報作成部は、それぞれハッシュ関数を用いて要約情報を作成する構成を採用できる。
【発明の効果】
【００２６】
本発明の冗長化パケット処理装置及びセッション状態の同期方法では、現用パケット処理装置及び予備パケット処理装置のそれぞれにおいて、受信パケットに基づくセッション状態の更新を行い、現用パケット処理装置のセッション状態と、予備パケット処理装置のセッション状態とを、要約情報を用いて比較する。このように、要約情報を用いて、双方のセッション状態を比較しているため、現用パケット処理装置に処理負担を掛けずに、かつ、低コストで、セッション状態が一致していることを確認できる。
【発明を実施するための最良の形態】
【００２７】
以下、図面を参照し、本発明の実施の形態を詳細に説明する。図１は、本発明の一実施形態の冗長化パケット処理装置の構成を機能ブロック図で示している。この冗長化パケット処理装置（ネットワーク中継装置）３００は、現用のパケット処理装置（現用ルータ装置）３１０と、予備のパケット処理装置（予備ルータ装置）３３０とを有する。現用ルータ装置３１０及び予備ルータ装置３３０は、それぞれ独立に、複数のマルチアクセスデータリンク１３０に接続されている。各マルチアクセスデータリンク１３０には、図示しない隣接ノードがそれぞれ接続されており、現用ルータ装置３１０及び予備ルータ装置３３０は、隣接ノードから送信されたパケット受信して、受信パケットに対する処理を行う。
【００２８】
現用ルータ装置３１０は、インタフェース部３１１−１〜３１１−Ｎ、パケット処理部３１２、パケット処理規則記憶部３１３、セッション状態記憶部３１４、状態圧縮部３１６、同期制御部３１７、状態同期タイマ３１８、制御用インタフェース部３１９、稼動通知送信部３２０、及び、稼動通知タイマ３２１を備える。予備ルータ装置３３０は、インタフェース部３３１−１〜３３１−Ｎ、パケット処理部３３２、パケット処理規則記憶部３３３、セッション状態記憶部３３４と、状態圧縮部３３５、同期制御部３３６、状態同期タイマ３３７、制御用インタフェース部３３８、稼動通知受信部３３９、死活監視タイマ３４０、及び、動作モード保持部３４１を備える。
【００２９】
現用ルータ装置３１０の状態圧縮部３１６、同期制御部３１７、及び、状態同期タイマ３１８と、予備ルータ装置３３０の状態圧縮部３３５、同期制御部３３６、及び、状態同期タイマ３３７とは、同期制御装置を構成する。この同期制御装置は、ハードウェア動作により、或いは、プログラム動作により、各種処理を実行する。
【００３０】
現用ルータ装置３１０のインタフェース部３１１は、各マルチアクセスデータリンク１３０に接続され、マルチアクセスデータリンク１３０との間でフレームの送受信に用いられる。インタフェース部３１１には、冗長化パケット交換システムに割り当てられた所定の仮想データリンクアドレスが割り当てられている。この所定の仮想データリンクアドレスは、データリンクがイーサネットの場合には、所定のマルチキャストイーサネットアドレスを用いることができる。インタフェース部３１１では、割り当てられた仮想データリンクアドレス宛のフレームを受け取るように設定されている。
【００３１】
パケット処理規則記憶部３１３は、受信パケットの処理規則を記憶する。セッション状態記憶部３１４は、セッション状態を記憶する。セッション状態は、セッションごとの状態情報を保持するために利用される。セッション状態は、セッションの確立時や終了時の他、ＴＣＰのシーケンス番号のようにパケット通過のたびに更新されるものもある。セッション状態記憶部３１４は、パケット蓄積部３１５を有する。パケット蓄積部３１５は、パケット処理部３１２を通過したパケットで、各セッションごとに、そのセッションでの最終処理パケットを保持するために使用される。
【００３２】
パケット処理部３１２は、セッション状態記憶部３１４に記憶されたセッション状態を参照・更新しつつ、パケット処理規則記憶部３１３が記憶する処理規則に従って、パケットの転送方法の決定や、パケットの加工を行う。何れかのインタフェースから到達したパケットは、パケット処理部３１２による、次ホップ決定や通過認否などの処理を経て、必要に応じて、何れかのインタフェース部３１１を経由して、マルチアクセスデータリンク１３０へ送出され、隣接ノードへ渡される。パケット処理部３１２のこのような動作により、現用ルータ装置３１０は、パケット中継装置として動作する。
【００３３】
パケット処理部３１２が行うパケット処理のうち、典型的なものとしては、次ホップの転送先の決定処理、パケットの通過認否処理、トンネルの終端処理がある。これらの処理は、複数を組み合わせて使われることもある。次ホップの転送先の決定処理では、パケットＩＰヘッダに含まれる宛先ＩＰアドレスをキーとして経路情報を検索し、転送先を決定する。また、パケットの通過認否処理では、パケットのヘッダに含まれる情報などから、所定の処理規則に従って通過認否を行う。
【００３４】
パケットの通過認否処理には、静的なものと、動的なものとがある。静的な通過認否処理では、発信元、宛先ＩＰアドレス、上位層プロトコル番号、上位層がＴＣＰ、ＵＤＰなどの場合には、発信元と、宛先のポート番号などの値とにより通過認否を行う。一方、動的な通過認否規則では、特定のセッションの状態に応じて、通過認否を行う。具体的には、ＴＣＰの場合には、受信側のウインドウを外れたシーケンス番号をもつセグメントの通過を拒否するなどの規則に従って、動的なパケット処理を行う。
【００３５】
トンネルの終端処理の代表的なものの一つには、ＥＳＰトンネルの終端処理がある。この処理では、あらかじめ定められたsecurity policyに基づき、パケットのＥＳＰへのカプセル化、及び、ＥＳＰからのパケットの抽出を行う。このＥＳＰトンネルの終端処理では、security associationというセッションごとの処理情報を利用する。
【００３６】
予備ルータ装置３３０のインタフェース部３３１は、現用ルータ装置３１０のインタフェース部３１１と同様な機能を有する。各インタフェース部３３１には、現用ルータ装置３１０の各インタフェース部３１１と同一の仮想データリンクアドレスが割り当てられる。これにより、現用ルータ装置３１０と予備ルータ装置３３０とは、同一の仮想データリンクアドレス宛のフレームを受け取る。
【００３７】
パケット処理規則記憶部３３３は、現用ルータ装置３１０のパケット処理規則記憶部３１３が記憶するパケット処理規則と同じ処理規則を記憶する。セッション状態記憶部３３４は、現用ルータ装置３１０のセッション状態記憶部３１４が記憶するセッション状態と同様なセッション状態を記憶する。動作モード保持部３４１は、予備／現用の動作状態を保持している。動作モード保持部３４１は、現用ルータ装置３１０が稼動している間は、動作状態「予備」を保持しており、現用ルータ装置３１０が稼動を停止すると、保持する動作状態が「現用」に切り替えられる。
【００３８】
パケット処理部３３２は、現用ルータ装置３１０のパケット処理部３１２と同様に、セッション状態記憶部３３４を参照・更新しつつ、パケット処理規則記憶部３３３が記憶するパケット処理規則に従って、パケットの転送や加工を行う。ただし、パケット処理部３３２は、動作モード保持部３４１が動作状態「予備」を保持するときには、インタフェース部３３１からパケットを送出する前に、パケットを破棄する動作を行う。これは、現用ルータ装置３１０と予備ルータ装置３３０とで、パケットが重複して送出されないようにするためである。このような動作により、予備ルータ装置３３０では、動作状態が「予備」の状態にあるときでも、セッション状態記憶部３３４に記憶されたセッション状態の更新を個別に行う。
【００３９】
現用ルータ装置３１０の同期制御部３１７は、現用ルータ装置３１０のセッション状態記憶部３１４が記憶するセッション状態と、予備ルータ装置３３０のセッション状態記憶部３３４が記憶するセッション状態との同期を制御する。状態圧縮部３１６は、セッション状態記憶部３１４が記憶するセッション状態の任意の範囲を、任意の分割数に分割し、分割した範囲のそれぞれについて、ハッシュ関数などにより、要約情報を作成する。状態圧縮部３１６が要約情報を作成する際のセッション状態の範囲、及び、分割数は、同期制御部３１７により指定される。
【００４０】
状態同期タイマ３１８は、所定のパケット通過量ごと、又は、所定の時間ごとに、タイムアウトを発生する。同期制御部３１７は、状態同期タイマ３１８がタイムアウトを発生させると、状態圧縮部３１６によって生成された要約情報を、制御用インタフェース部３１９を通して予備ルータ装置３３０に送信し、また、パケット蓄積部３１５に保持するパケットを、制御用インタフェース部３１９を通して予備ルータ装置３３０に送信して、セッション状態の同期処理を実行する。
【００４１】
予備ルータ装置３３０の状態圧縮部３３５は、現用ルータ装置３１０の状態圧縮部３１６と同様に、セッション状態の任意の範囲についての要約情報を作成する機能を有する。状態同期タイマ３３７は、現用ルータ装置３１０の状態同期タイマ３３７と同様に、所定のパケット通過量ごと、又は、所定の時間ごとに、タイムアウトを発生する。同期制御部３３６は、制御用インタフェース部３３８を通して、現用ルータ装置３１０から送信された状態要約情報を受信し、その受信した要約情報と、状態圧縮部３３５が作成した要約情報とを比較する。同期制御部３３６は、要約情報の比較により、双方のセッション状態が一致しないと判断すると、セッション状態が一致しない箇所を特定し、現用ルータ装置３１０と予備ルータ装置３３０とで、セッション状態を一致させるための処理を実行する。
【００４２】
稼動通知タイマ３２１は、従来の現用ルータ装置１１０（図１２）における稼動通知タイマ２１８と同様な機能を有し、所定時間間隔で、タイムアウトを発生する。稼動通知送信部３２０は、従来の現用ルータ装置１１０における稼動通知送信部２１７と同様な機能を有し、稼動通知タイマ３２１がタイムアウトを発生すると、所定の稼動通知メッセージを、制御用インタフェース部３１９を通して、予備ルータ装置３３０に送信する。稼動通知受信部３３９は、現用ルータ装置３１０から送信された稼動通知を、制御用インタフェース部３３８を通して受信する。死活監視タイマ３４０は、従来の予備ルータ装置１２０における死活監視タイマ２２７と同様な機能を有する。
【００４３】
死活監視タイマ３４０は、稼動通知受信部３３９が現用ルータ装置３１０から稼動通知を受信すると、リセットされる。予備ルータ装置３３０は、稼動通知受信部３３９が、死活監視タイマ３４０がタイムアウトを発生するまでに稼動通知を受信できないときには、現用ルータ装置３１０が稼動していないと判断して、動作モード保持部３４１が保持する動作状態を、「予備」から「現用」に切り替える。動作状態の変更により、パケット処理部３３２は、破棄していたパケットの送出を行い、現用ルータ装置３１０のパケット処理部３１２に代わって、パケットの転送処理等を実際に実行する。
【００４４】
図２は、現用ルータ装置におけるパケット転送処理の動作手順の詳細をフローチャートで示している。隣接ノードが送信したパケットが、何れかのマルチアクセスデータリンク１３０を通して、対応するインタフェース部３１１に到着すると、そのパケットは、パケット処理部３１２へ渡される。パケット処理部３１２は、受信パケットのヘッダ等に基づいて、パケット処理規則を検索し、マッチするものを抽出して、その規則を適用・実行する（ステップＳ２０１）。その際、例えばパケット通過認否やＩＰｓｅｃトンネル終端処理などのパケット処理を行う場合に、セッション状態の参照・更新が必要なときは、セッション状態記憶部３１４に記憶されたセッション状態を参照して、該当セッションの状態を更新する（ステップＳ２０２）。
【００４５】
パケット処理部３１２は、パケットを送出することができるか否かを判断する（ステップＳ２０３）。送出可能と判断するときには、パケット蓄積部３１５にパケットを蓄積して（ステップＳ２０４）、送出パケットを、送出側のインタフェース部３１１に引き渡す（ステップＳ２０５）。送出可能でないと判断されたときには、パケットを破棄する（ステップＳ２０６）。ステップＳ２０６のパケットの破棄は、例えば、パケットの宛先から経路情報を検索したが、次ホップを決定できなかったときや、パケットのホップリミットカウントが０になっているときに、実行される。或いは、パケット通過認否規則により、パケットの通過が拒否されているときや、ＩＰｓｅｃトンネルの終端処理でパケットを正しく復号できなかったときに実行される。
【００４６】
図３は、動作状態が「予備」の際の予備ルータ装置３３０におけるパケット処理の動作手順の詳細をフローチャートで示している。予備ルータ装置３３０は、動作モード保持部３４１が動作状態「現用」を保持している場合には、図２に示す動作により、現用ルータ装置３１０によるパケット処理と同様なパケット処理を実行する。また、動作モード保持部３４１が動作状態「予備」を保持している場合には、以下に説明する動作により、セッション状態の更新を行う。
【００４７】
隣接ノードが送信したパケットは、何れかのマルチアクセスデータリンク１３０を通して、対応するインタフェース部３３１にも到着する。パケット処理部３３２は、ステップＳ２０１（図２）と同様に、受信パケットのヘッダ等に基づいてパケット処理規則を検索し、マッチするものを抽出して、その規則を適用・実行する（ステップＳ３０１）。その際、例えばパケット通過認否やＩＰｓｅｃトンネル終端処理などのパケット処理を行う場合に、セッション状態の参照・更新が必要なときは、ステップＳ２０２と同様に、セッション状態記憶部３３４に記憶されたセッション状態を参照して、該当セッションの状態を更新する（ステップＳ３０２）。
【００４８】
パケット処理部３３２は、動作モード保持部３４１が保持する動作状態が「予備」のときには、パケットを送出可能であるか否かを判断することなく破棄する（ステップＳ３０３）。現用ルータ装置３１０及び予備ルータ装置３３０では、同様なパケット処理が行われるが、予備ルータ装置３３０では、パケットが外部に送出される前に破棄されるため、パケットが重複して送出されることはない。このように、現用ルータ装置３１０及び予備ルータ装置３３０では、受信パケットが、それぞれにおいて同様に処理されて、セッション状態の更新が行われるため、パケットがロスしない限り、セッション状態記憶部３１４、３３４に記憶されたセッション状態は、同一に保たれることとなる。
【００４９】
パケット処理として、パケット通過認否処理を例に挙げて、その処理におけるセッション状態の更新について説明する。パケット通過認否処理のうち典型的なものとしては、「Real Stateful TCP Packet Filtering in IP Filter, Guido van Rooij, SANE 2000」において説明されている「TCP stateful firewall」がある。この処理では、通過するＴＣＰパケットについて、それが属するＴＣＰコネクションの状態を管理する。
【００５０】
パケット処理部３１２、３３２は、パケットが通過するたびに、ＴＣＰエンドポイントが保持しているウインドウの情報を、パケットが持つＴＣＰヘッダに含まれるパラメータより計算して、セッション状態に保持する。ここで、パケットが運ぶＴＣＰセグメントは、受信側のウインドウに収まるように送信側が調整して送出される。このため、仮に、処理対象のパケットが運ぶＴＣＰセグメントが、セッション状態に記録されているウインドウの位置から外れていれば、そのパケットは不正なパケットであるから、パケット処理部３１２、３３２は、そのパケットの通過を拒否する。このような動作により、TCP stateful firewallでは、パケット−バイ−パケットでセッション状態を更新しつつ、パケットの通過認否を行う。
【００５１】
図４は、現用ルータ装置におけるパケット蓄積処理の動作手順をフローチャートで示している。ステップＳ２０４（図２）のパケット蓄積処理では、セッション状態記憶部３１４を参照して、パケットが属するセッション状態を検索し（ステップＳ４０１）、セッション状態が存在するか否かを判断する（ステップＳ４０２）。セッション状態が存在しないということは、該当パケットについては、パケット処理規則でセッションを管理していないことを意味している。パケット蓄積処理は、セッション状態の同期をとるために行っているため、ステップＳ４０２でセッション状態が存在しないと判断される場合には、処理を終了して、パケットの蓄積処理を行わない。
【００５２】
ステップＳ４０２で、セッション状態があると判断されたときには、パケット処理部３１２は、送出用と蓄積用とに、パケットを複製し（ステップＳ４０３）、当該セッションでパケットがパケット蓄積部３１５に既に蓄積されているか否かを判断する（ステップＳ４０４）。当該セッションでパケットがすでに蓄積されている場合は、それは、当該セッションで直前に通過したパケットであるから、その蓄積されているパケットを破棄する（ステップＳ４０５）。その後、複製したパケットの一方（蓄積用パケット）を、パケット蓄積部３１５に蓄積させる。このようなパケット蓄積処理により、全てのセッションについて、最後に通過したパケットを蓄積させることができる。
【００５３】
前述のように、現用ルータ装置３１０及び予備ルータ装置３３０では、同一パケットを受信して、それぞれにおいて、セッション状態の更新が行われているため、セッション状態を同一に保つことができる。しかし、以下に示す場合には、現用ルータ装置３１０が受信するパケットと、予備ルータ装置３３０が受信するパケットとが同一ではなくなるため、セッション状態に相違が生じることがある。
（１）現用ルータ装置３１０と予備ルータ装置３３０の各系に届けるために、伝送路でパケットが複製されたあと、一方のパケットが、伝送エラー等で失われる場合。
（２）現用ルータ装置３１０又は予備ルータ装置３３０の装置のデバイス内や、パケット処理用のバッファが、処理遅延などのために一杯になり、受信したパケットがバッファに収まりきらず、破棄される場合。
【００５４】
上記のような場合に備え、現用ルータ装置３１０及び予備ルータ装置３３０は、セッション状態を同期させる機能を有している。セッション状態の同期は、従来のように、セッション状態記憶部３１４、３３４が記憶するセッション状態の個別の状態同士を相互に比較する場合には、セッション状態は装置によっては数千から数万程度保持する必要があるため、処理量が膨大となり、現用ルータ装置３１０に多大な負担がかかる。本実施形態では、状態圧縮部３１６、３３５を用いて、セッション状態の要約情報の比較を行い、現用ルータ装置３１０と予備ルータ装置３３０とでセッション状態が一致しているか否かを判断する。
【００５５】
ところで、要約情報の比較では、同一時点のセッション状態の要約情報を比較する必要がある。このため、状態同期タイマ３１８、３３７は、同時にタイムアウトを起こす必要がある。一般に、疎結合された複数の装置のそれぞれが持つ時計を完全に同期させることは困難である。そこで、ここでは、状態同期タイマ３１８、３３７は、それぞれ通過させるべきパケットを所定個数処理するごとにタイムアウトを発生させる構成とする。このようにする場合には、現用ルータ装置３１０又は予備ルータ装置３３０の一方の系でパケットが失われると、その系ではタイムアウトがそれだけ遅くなることになる。しかし、処理する全パケット数に比して、パケットロスが十分少なければ、タイムアウト発生時刻のずれによるセッション状態のずれは少なくてすむため、同期確認のためのコストは高くならない。
【００５６】
図５は、現用ルータ装置がセッション状態の要約情報を送信する際の処理手順をフローチャートで示している。同期制御部３１７は、状態同期タイマ３１８を監視し（ステップＳ５０１）、タイムアウトが発生したか否かを判断する（ステップＳ５０２）。ステップＳ５０２で、タイムアウトが発生していないと判断したときには、ステップＳ５０１に戻り、状態同期タイマ３１８の監視を継続する。同期制御部３１７は、タイムアウトが発生したと判断すると、状態圧縮部３１６に、セッション状態記憶部３１４が記憶するセッション状態の全範囲について、所定の分割数で要約情報を作成するように指示する。
【００５７】
状態圧縮部３１６は、全セッション状態を、指定された分割数で分割し、その分割したそれぞれについて、要約情報を作成する。同期制御部３１７は、状態圧縮部３１６により作成された、タイムアウト発生時点でのセッション状態の要約情報のスナップショットを取得し（ステップＳ５０３）、その取得した要約情報にタイムスタンプをつけて、それを、制御用データリンク１４０を通して、予備ルータ装置３３０に向けて送信する（ステップＳ５０４）。このとき、同期制御部３１７は、要約情報と共に、送信する要約情報がセッション状態の全範囲についての要約情報である旨を示す情報を、予備ルータ装置３３０に送信する。現用ルータ装置３１０は、状態同期タイマ３１８をリセットし（ステップＳ５０５）、次のタイムアウト発生に備える。
【００５８】
図６は、予備ルータ装置がセッション状態の要約情報の比較を行う際の処理手順をフローチャートで示している。同期制御部３３６は、状態同期タイマ３３７を監視し（ステップＳ６０１）、タイムアウトが発生したか否かを判断する（ステップＳ６０２）。ステップＳ６０２で、タイムアウトが発生していないと判断したときには、ステップＳ６０１に戻り、状態同期タイマ３３７の監視を継続する。同期制御部３３６は、タイムアウトが発生したと判断すると、状態圧縮部３３５に、セッション状態記憶部３３４が記憶するセッション状態の全範囲について、所定の分割数で要約情報を作成するように指示する。
【００５９】
状態圧縮部３３５は、全セッション状態を、指定された分割数で分割し、その分割したそれぞれについて、要約情報を作成する。同期制御部３３６は、状態圧縮部３３５により作成された、タイムアウト発生時点でのセッション状態の要約情報のスナップショットを取得する（ステップＳ６０３）。同期制御部３３６は、現用ルータ装置３１０から送信された要約情報を受信し（ステップＳ６０４）、その受信した要約情報と、状態圧縮部３３５によって作成された要約情報とを比較する（ステップＳ６０５）。ステップＳ６０５では、所定の分割数分だけ作成された要約情報同士をそれぞれ比較することにより、要約情報が一致しているか否かを判断する。
【００６０】
ステップＳ６０５の比較により、両者が一致していると判断されたときには、状態同期タイマ３１８、３３７のタイムアウト時点では、現用ルータ装置３１０のセッション状態記憶部３１４が記憶するセッション状態と、予備ルータ装置３３０のセッション状態記憶部３３４が記憶するセッション状態とが一致している。このため、セッション状態を一致させるための処理は不要である。
【００６１】
一方、何れかのセッション状態が現用ルータ装置３１０と予備ルータ装置３３０とで一致しないときには、ステップＳ６０５では、要約情報が一致していないと判断される。この場合には、一致していないセッション状態を絞り込む処理へ移行して一致していないセッション状態を特定し、その後、その一致していないセッション状態を補正する処理を実行する。
【００６２】
図７は、不一致セッション状態を絞り込む処理の処理手順を示している。同期制御部３３６は、要約情報が一致していないセッション状態を含む範囲についての詳細な要約情報の送信を、現用ルータ装置３１０に要求する（ステップＳ７０１）。ステップＳ７０１では、同期制御部３３６は、図６のステップＳ６０６で不一致であると判断された要約情報の作成元となったセッション状態の範囲と、詳細な要約情報を作成する際の分割数とを指定して、詳細な要約情報の送信を要求する。ステップＳ７０１で指定する分割数は、図５、６に示す処理で、状態圧縮部３１６、３３５がセッション状態の全範囲についての要約情報を作成する際の分割数と同じであってもよく、また、異なっていてもよい。
【００６３】
現用ルータ装置３１０の同期制御部３１７は、制御用データリンク１４０を通して、予備ルータ装置３３０から送信された要求を受信し（ステップＳ７１１）、状態圧縮部３１６に、要求されたセッション情報の範囲の要約情報を作成するように指示する。状態圧縮部３１６は、指示されたセッション情報を、指定された分割数に分割し、その分割したそれぞれについて要約情報を作成する。同期制御部３１７は、状態圧縮部３１６が作成した要約情報を取得し、これを、制御用データリンク１４０を通して予備ルータ装置３３０に送信する（ステップＳ７１２）。
【００６４】
予備ルータ装置３３０の同期制御部３３６は、ステップＳ７０１で現用ルータ装置３１０に要約情報の送信を要求した後、状態圧縮部３３５に、ステップＳ７０１で要求したセッション状態の範囲と同じ範囲を、現用ルータ装置３１０に指定した分割数と同じ分割数で分割して要約情報を作成するように指示する。状態圧縮部３３５は、同期制御部３３６に指示された範囲のセッション状態を、指示された分割数で分割して、そのそれぞれについて要約情報を作成する（ステップＳ７０２）。
【００６５】
同期制御部３３６は、ステップＳ７１２で送信された要約情報を受信し、現用ルータ装置３１０から受信した要約情報と、ステップＳ７０２で作成された要約情報とを比較し（ステップＳ７０３）、一致していないものを抽出する（ステップＳ７０４）。同期制御部３３６は、要約情報が作成されたセッション状態が、単一のセッション状態から作成されているか否かを判断する（ステップＳ７０５）。ステップＳ７０５で、単一のセッション状態から作成されていないと判断したときには、ステップＳ７０１に戻り、一致していないセッション状態の範囲について、ステップＳ７０１以降の処理を実行する。このような処理を実行することにより、セッション状態中のどの部分のセッション状態が一致していないのかを特定することができる。
【００６６】
例えば、図６のステップＳ６０６で、全セッション状態（セッション数１０，０００）を１００分割して作成した要約情報の何れかが不一致であると判定された場合について考える。この場合、図７に示す処理では、現用ルータ装置３１０及び予備ルータ装置３３０は、一致しなかった要約情報の作成元となる１００セッション分の範囲を、例えば１００分割して、要約情報を作成する。１００セッション分を１００分割して作成された要約情報は、単一のセッション状態から作成された要約情報に該当するため、一致しない要約情報を抽出することで、一致しないセッション状態を特定することができる。この場合には、１００個の要約情報を、図６に示す処理と図７に示す処理とでそれぞれ１回ずつ現用ルータ装置３１０から予備ルータ装置３３０に送信するだけで、一致していないセッション状態を特定することができる。
【００６７】
図８は、一致しないセッション状態の補正処理の処理手順を示している。図７に示す処理により、セッション状態が一致していないセッション状態が特定されると、予備ルータ装置３３０の同期制御部３３６は、要約情報が不一致であるセッションについて、最終パケットの送信を、制御用データリンク１４０を通して、現用ルータ装置３１０に要求する（ステップＳ８０１）。現用ルータ装置３１０は、前述の動作により（図２、図４）、各セッションについて、最後に転送したパケットをパケット蓄積部３１５に蓄積している。同期制御部３１７は、予備ルータ装置３３０からの要求を受信し（ステップＳ８１１）、パケット蓄積部３１５から、要求されたセッションの最終処理パケットを取得して、これを、制御用データリンク１４０を通して、予備ルータ装置３３０に送信する（ステップＳ８１２）。
【００６８】
予備ルータ装置３３０の同期制御部３３６は、ステップＳ８１２で現用ルータ装置３１０が送信したパケットを受信して、その受信パケットを、パケット処理部３３２に引き渡す（ステップＳ８０２）。パケット処理部３３２は、図３に示す手順に従って、同期制御部３３６から引き渡されたパケットを処理し、セッション状態記憶部３３４に記憶されたセッション状態を更新する（ステップＳ８０３）。ステップＳ８０２でパケット処理部３３２に引き渡されたパケットは、現用ルータ装置３１０を通過したパケットである。従って、パケット処理部３３２が、そのパケットを処理することで、セッション状態記憶部３３４に記憶されたセッション状態が更新され、セッション状態の補正がなされる。このような処理により、予備ルータ装置３３０のセッション状態の補正を行うことで、現用ルータ装置３１０と予備ルータ装置３３０とで、セッション状態の同期が取れるようになる。
【００６９】
図９は、現用ルータ装置における稼動通知送信の処理手順を示している。稼動通知送信部３２０は、稼動通知タイマ３２１を監視し（ステップＳ９０１）、タイムアウトが発生したか否かを判断する（ステップＳ９０２）。ステップＳ９０２で、タイムアウトが発生していないと判断したときには、ステップＳ９０１に戻り、稼動通知タイマ３２１の監視を継続する。稼動通知送信部３２０は、タイムアウトが発生したと判断すると、稼動通知タイマ３２１をリセットし（ステップＳ９０３）、所定形式の稼動通知を作成し、作成した稼動通知を、制御用データリンク１４０を通して予備ルータ装置３３０に送信する（ステップＳ９０４）。
【００７０】
図１０は、予備用ルータ装置における死活監視とフェイルオーバの処理手順を示している。稼動通知受信部３３９は、死活監視タイマ３４０を監視し（ステップＳ１００１）、タイムアウトが発生したか否かを判断する（ステップＳ１００２）。ステップＳ１００２で、タイムアウトが発生していないと判断したときには、現用ルータ装置３１０から稼動通知を受信したか否かを判断する（ステップＳ１００３）。ステップＳ１００３で、稼動通知を受信したと判断したときには、死活監視タイマ３４０をリセットして（ステップＳ１００４）、ステップＳ１００１に戻り、死活監視タイマ３４０の監視を継続する。稼動通知を受信していないときには、そのままステップＳ１００１に戻り、死活監視タイマ３４０の監視を継続する。
【００７１】
死活監視タイマ３４０がタイムアウトするまでに、現用ルータ装置３１０が稼動通知を送信しないときには、ステップＳ１００２で、死活監視タイマ３４０がタイムアウトしたと判断される。この場合には、現用ルータ装置３１０が故障等により稼動を停止したと判断して、稼動通知受信部３３９は、動作モード保持部３４１が保持する動作状態を、「予備」から「現用」に切り替える（ステップＳ１００５）。これにより、予備ルータ装置３３０は、図２に示す動作により、受信パケットを処理し、現用ルータ装置として振る舞う。このようにすることで、隣接ノードに対して、現用ルータ装置３１０の稼動停止が隠蔽される。
【００７２】
本実施形態では、セッション状態を、所定の分割数で分割して作成された要約情報により、現用ルータ装置３１０と予備ルータ装置３３０とで、セッション状態が一致しているか否かを調べ、一致していないときには、一致してないセッション情報が特定されるまで、一致していないセッション状態の範囲を複数の範囲に分割して要約情報を作成し、作成した要約情報の比較を行う。このようにして特定された状態が一致しないセッション状態を補正することにより、現用ルータ装置３１０と予備ルータ装置３３０とで、セッション情報を一致させることができる。
【００７３】
セッション状態同士を直接比較する場合には、現用ルータ装置３１０から予備ルータ装置３３０に全てのセッション状態を送信する必要があり、現用ルータ装置３１０の処理負担が大きかった。本実施形態では、現用ルータ装置３１０は、個々のセッション状態の全てを予備ルータ装置３３０に送信しなくても、一致しないセッション状態を特定することができる。このため、マルチアクセスデータリンク１３０間のパケット通過頻度が高くなった場合でも、現用ルータ装置３１０の処理負担が増大しない。また、このように、簡易にセッション状態の同期をとることができるため、性能が高いネットワーク中継装置を、低コストで実現することができる。
【００７４】
なお、上記実施形態では、一致していないセッション状態を特定し、その特定したセッションの最終パケットを送信して、セッション状態の補正を行ったが、これに代えて、セッション状態そのものを送信して、セッション状態の補正をおこなってもよい。最終パケットを送信することによるセッション状態の補正と、補正が必要なセッション状態を送信することによるセッション状態の補正とを比較すると、後者では、パケットを蓄積するためのバッファ（パケット蓄積部３１５）が不要となるが、補正が必要なセッション状態を、パケットにカプセル化して送受信する回路が必要となる。一般に、パケット処理がハードウエアにより実現されている装置では、バッファからパケットを送出する方が、パケットを自身で作成して送出するより実現が容易な場合があり、そのような装置では、バッファから最終パケットを送信してセッション状態を補正する方が、セッション状態を送信する場合に比して、簡易に、セッション状態の補正ができると考えられる。
【００７５】
また、現用ルータ装置３１０と予備ルータ装置３３０との間の通信には、専用の制御用データリンク１４０を用いたが、これには限定されない。現用ルータ装置３１０と予備ルータ装置３３０との間の通信には、制御用データリンク１４０に代えて、何れかのマルチアクセスデータリンク１３０を用いることもできる。パケット蓄積部３１５に蓄積するパケットは、当該セッションにおける最終転送パケットには限定されない。例えば、パケット蓄積部３１５に、最終転送パケットに加えて、当該セッション状態における所定のパケットを蓄積してもよい。上記実施形態では、パケット処理装置として、ルータ装置を例に挙げて説明したが、これには限定されない。パケット処理装置は、例えば、ルータの機能を持つファイアウォール装置などのアクセス制御装置や、ＩＰｓｅｃゲートウエイなどのＶＰＮ終端装置として構成されていてもよい。上記実施形態では、同期制御装置の各部が、現用ルータ装置３１０と予備ルータ装置３３０とに分散して配置されたが、これには限定されない。例えば、同期制御装置の各部をまとめて、これを、制御用データリンク１４０に接続してもよい。
【００７６】
以上、本発明をその好適な実施形態に基づいて説明したが、本発明の冗長化パケット処理装置及びその冗長化方法は、上記実施形態例にのみ限定されるものではなく、上記実施形態の構成から種々の修正及び変更を施したものも、本発明の範囲に含まれる。
【図面の簡単な説明】
【００７７】
【図１】本発明の一実施形態の冗長化パケット処理装置の構成を示す機能ブロック図。
【図２】現用ルータ装置におけるパケット転送処理の動作手順の詳細を示すフローチャート。
【図３】動作状態が「予備」の際の予備ルータ装置３３０におけるパケット処理の動作手順の詳細を示すフローチャート。
【図４】現用ルータ装置におけるパケット蓄積処理の動作手順を示すフローチャート。
【図５】現用ルータ装置がセッション状態の要約情報を送信する際の処理手順を示すフローチャート。
【図６】予備ルータ装置がセッション状態の要約情報の比較を行う際の処理手順を示すフローチャート。
【図７】不一致セッション状態を絞り込む処理の処理手順を示すフローチャート。
【図８】一致しないセッション状態の補正処理の処理手順を示すフローチャート。
【図９】現用ルータ装置における稼動通知送信の処理手順を示すフローチャート。
【図１０】予備用ルータ装置における死活監視とフェイルオーバの処理手順を示すフローチャート。
【図１１】非特許文献１に記載のＯｐｅｎＢＳＤにおける冗長化されたネットワーク中継装置の構成を示すブロック図。
【図１２】ネットワーク中継装置の詳細な構成を示す機能ブロック図。
【符号の説明】
【００７８】
１３０：マルチアクセスデータリンク
１４０：制御用データリンク
３００：冗長化パケット処理装置
３１０：現用ルータ装置
３１１、３３１：インタフェース部
３１２、３３２：パケット処理部
３１３、３３３：パケット処理規則記憶部
３１４、３３４：セッション状態記憶部
３１５：パケット蓄積部
３１６、３３５：状態圧縮部
３１７、３３６：同期制御部
３１８、３３７：状態同期タイマ
３１９、３３８：制御用インタフェース部
３２０：稼動通知送信部
３２１：稼動通知タイマ
３３０：予備ルータ装置
３３９：稼動通知受信部
３４０：死活監視タイマ
３４１：動作モード保持部
【図１】
2006279375.tif 000003
【図２】
2006279375.tif 000004
【図３】
2006279375.tif 000005
【図４】
2006279375.tif 000006
【図５】
2006279375.tif 000007
【図６】
2006279375.tif 000008
【図７】
2006279375.tif 000009
【図８】
2006279375.tif 000010
【図９】
2006279375.tif 000011
【図１０】
2006279375.tif 000012
【図１１】
2006279375.tif 000013
【図１２】
2006279375.tif 000014