(57)【特許請求の範囲】
【請求項１】
パケットを複数の処理ブロックに振り分けて分散処理するパケット処理方法であって、
前記パケットを振り分ける前記処理ブロックを決定するステップと、
前記パケットに対して、前記処理ブロック毎に順序番号を付与するステップと、
前記パケットを前記処理ブロックに送信すると共に、該パケットをバッファに格納するステップと、
前記処理ブロックで処理され返送されたパケットの順序番号が連続しているか否か判定するステップと、
順序番号が連続していない場合に、抜けた順序番号のパケットを振り分けていた処理ブロックをそれ以降の振り分け対象から除くステップと、
前記抜けた順序番号のパケットを前記バッファから取り出し、他の処理ブロックに振り分けるステップを有するパケット処理方法。
【請求項２】
前記処理ブロックの故障を検出すると、前記順序番号が連続しているか否かに関わらず、該処理ブロックを振り分け対象から除くステップを更に有する、請求項１記載のパケット処理方法。
【請求項３】
パケットを分散処理するパケット処理装置であって、
振り分けられた前記パケットを処理する複数の処理ブロックと、
前記処理ブロックに振り分けられた前記パケットを保持するバッファと、
前記パケットを振り分ける前記処理ブロックを決定し、該パケットに対して前記処理ブロック毎に順序番号を付与し、該パケットを前記処理ブロックに送信すると共に前記バッファに格納し、前記処理ブロックで処理され返送されたパケットの順序番号が連続しているか否か判定し、順序番号が連続していない場合に、抜けた順序番号のパケットを振り分けていた処理ブロックをそれ以降の振り分け対象から除くと共に、前記抜けた順序番号のパケットを前記バッファから取り出し、他の処理ブロックに振り分けるパケット振り分け部を有するパケット処理装置。
【請求項４】
前記パケット振り分け部は、前記処理ブロックの故障を検出すると、前記順序番号が連続しているか否かに関わらず、該処理ブロックを振り分け対象から除く、請求項３記載のパケット処理装置。
【請求項５】
パケットを複数の処理ブロックに振り分けて分散処理するために、コンピュータで実行されるパケット処理プログラムであって、
前記パケットを振り分ける前記処理ブロックを決定する処理と、
前記パケットに対して、前記処理ブロック毎に順序番号を付与する処理と、
前記パケットを前記処理ブロックに送信すると共に、該パケットをバッファに格納する処理と、
前記処理ブロックで処理され返送されたパケットの順序番号が連続しているか否か判定する処理と、
順序番号が連続していない場合に、抜けた順序番号のパケットを振り分けていた処理ブロックをそれ以降の振り分け対象から除く処理と、
前記抜けた順序番号のパケットを前記バッファから取り出し、他の処理ブロックに振り分ける処理を有するパケット処理プログラム。
【請求項６】
前記処理ブロックの故障を検出すると、前記順序番号が連続しているか否かに関わらず、該処理ブロックを振り分け対象から除く処理を更に有する、請求項５記載のパケット処理プログラム。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、パケット通信に用いられる通信装置に関し、特に、受信したパケットを複数のパケット処理ブロックで分散処理するパケット処理装置に関する。
【０００２】
【従来の技術】
パケット交換機やルータなど、受信したパケットを他の装置に転送するパケット中継装置ではソフトウェアによる複雑な処理が必要とされる場合がある。複雑な処理として、例えばパケットデータを暗号化する処理や、パケットの宛先を検索する処理などがある。このような複雑な処理を行う場合、パケット中継装置には高い処理能力が要求される。
【０００３】
従来のパケット中継装置の一例として、複雑な処理を分散して行う複数のパケット処理ブロックと、パケット処理ブロックにパケットを振り分けるパケット振り分け部を有する、分散処理方式のパケット中継装置がある。これは、複数のパケット処理ブロックでパケットを分散処理することにより、全体として高い処理能力を発揮するものである。しかし、複数のパケット処理ブロックを設ければ、それだけ故障が発生する可能性のある個所が増えるのでパケット中継装置の故障の確率も高くなる。通常、パケット中継装置には高い信頼性が要求される。パケット中継装置に故障が発生すれば、それを復旧させるまで一部または全部のパケットの中継が停止する可能性がある。
【０００４】
そのため、分散処理方式のパケット中継装置では、従来から一般的にパケットの中継の停止を防止するために冗長構成が適用されていた。
【０００５】
冗長構成を適用したパケット中継装置の一例として、複数台の現用系ブロックに対して少なくとも１台の予備系ブロックを設けたものがある。この場合、一般的に予備系ブロックの数は現用系ブロックの数より少ない。このような冗長構成を以下、ｍ：ｎ冗長構成と称する。
【０００６】
ｍ：ｎ冗長構成を適用したパケット中継装置では、複数台の現用系ブロックのうちのいずれかが故障した場合、故障した現用系ブロックに代わって予備系ブロックが動作する。これによりパケットの中継が継続される。
【０００７】
また、冗長構成を適用したパケット中継装置の他の例として、１台の現用系ブロックに対して１台の予備系ブロックを設けたものがある。このような冗長構成を以下、１：１冗長構成と称する。１：１冗長構成を適用したパケット中継装置は１台の現用系ブロックに対して１台の予備系ブロックを有するので、同時に複数の現用系ブロックが故障してもパケットの中継を継続することができる。
【０００８】
【発明が解決しようとする課題】
冗長構成を適用したパケット中継装置は、通常時には使用されない予備系ブロックを有しているため、それだけ装置規模が増大する。
【０００９】
また、ｍ：ｎ冗長構成のパケット中継装置では、予備系ブロックがどの現用系ブロックに代わるか予め定まっていない。したがって、現用系ブロックの障害が検出され、予備系ブロックへの切り替えが行われた後に、予備系ブロックがパケット処理を開始する。そのため、ｍ：ｎ冗長構成のパケット中継装置は、現用系ブロックで故障が発生してから予備系ブロックがパケット処理を開始するまでの間に受信されたパケットを廃棄してしまう。
【００１０】
これに対して、１：１冗長構成のパケット中継装置では、現用系ブロックと予備系ブロックとの対応が予め定まっている。したがって、予備系ブロックは、現用系ブロックに故障が発生した際に即座に処理を開始できるように準備しておくことができる。具体的には例えば、予備系ブロックも現用系ブロックと同様にパケットを常時受信し、蓄積していることができる。そのため、１：１冗長構成のパケット中継装置はパケットの廃棄を最小限にすることができる。
【００１１】
しかし、１：１冗長構成のパケット中継装置は、現用系ブロックと同数の予備系ブロックを必要とするので、ｍ：ｎ冗長構成のパケット中継装置よりも更に装置規模が大きい。
【００１２】
本発明の目的は、装置規模を増大させずにパケットの廃棄を防止するパケット処理方法、装置及びプログラムを提供することである。
【００１３】
【課題を解決するための手段】
上記目的を達成するために、本発明のパケット処理方法は、パケットを複数の処理ブロックに振り分けて分散処理するパケット処理方法であって、
前記パケットを振り分ける前記処理ブロックを決定するステップと、
前記パケットに対して、前記処理ブロック毎に順序番号を付与するステップと、
前記パケットを前記処理ブロックに送信すると共に、該パケットをバッファに格納するステップと、
前記処理ブロックで処理され返送されたパケットの順序番号が連続しているか否か判定するステップと、
順序番号が連続していない場合に、抜けた順序番号のパケットを振り分けていた処理ブロックをそれ以降の振り分け対象から除くステップと、
前記抜けた順序番号のパケットを前記バッファから取り出し、他の処理ブロックに振り分けるステップを有している。
【００１４】
したがって、処理ブロックにパケットを振り分ける際にそのパケットにパケット処理ブロック毎の順序番号を付与すると共にパケットをバッファに格納し、パケット処理ブロックの故障などで順序番号の抜けが発生するとそれを検出し、バッファに格納しておいたパケットを取り出して再度他の処理ブロックに振り分ける。
【００１５】
本発明の実施態様によれば、前記処理ブロックの故障を検出すると、前記順序番号が連続しているか否かに関わらず、該処理ブロックを振り分け対象から除くステップを更に有している。
【００１６】
これによれば、順序番号の抜けを未然に防止することができる。
【００１７】
本発明のパケット処理装置は、パケットを分散処理するパケット処理装置であって、
振り分けられた前記パケットを処理する複数の処理ブロックと、
前記処理ブロックに振り分けられた前記パケットを保持するバッファと、
前記パケットを振り分ける前記処理ブロックを決定し、該パケットに対して前記処理ブロック毎に順序番号を付与し、該パケットを前記処理ブロックに送信すると共に前記バッファに格納し、前記処理ブロックで処理され返送されたパケットの順序番号が連続しているか否か判定し、順序番号が連続していない場合に、抜けた順序番号のパケットを振り分けていた処理ブロックをそれ以降の振り分け対象から除くと共に、前記抜けた順序番号のパケットを前記バッファから取り出し、他の処理ブロックに振り分けるパケット振り分け部を有している。
【００１８】
本発明の実施態様によれば、前記パケット振り分け部は、前記処理ブロックの故障を検出すると、前記順序番号が連続しているか否かに関わらず、該処理ブロックを振り分け対象から除く。
【００１９】
本発明のパケット処理プログラムは、パケットを複数の処理ブロックに振り分けて分散処理するために、コンピュータで実行されるパケット処理プログラムであって、
前記パケットを振り分ける前記処理ブロックを決定する処理と、
前記パケットに対して、前記処理ブロック毎に順序番号を付与する処理と、
前記パケットを前記処理ブロックに送信すると共に、該パケットをバッファに格納する処理と、
前記処理ブロックで処理され返送されたパケットの順序番号が連続しているか否か判定する処理と、
順序番号が連続していない場合に、抜けた順序番号のパケットを振り分けていた処理ブロックをそれ以降の振り分け対象から除く処理と、
前記抜けた順序番号のパケットを前記バッファから取り出し、他の処理ブロックに振り分ける処理を有している。
【００２０】
本発明の実施態様によれば、前記処理ブロックの故障を検出すると、前記順序番号が連続しているか否かに関わらず、該処理ブロックを振り分け対象から除く処理を更に有している。
【００２１】
【発明の実施の形態】
本発明の一実施形態について図面を参照して詳細に説明する。
【００２２】
図１は、本発明の一実施形態におけるパケット中継装置の構成を示すブロック図である。
【００２３】
図１を参照すると、パケット中継装置１０は、回線部１２−１〜１２−Ｍ、スイッチ１３、処理部１４を有している。パケット中継装置１０は、回線１１−１〜１１−Ｍから受信したパケットを処理し、該当するいずれかの回線１１−１〜１１−Ｍに送信する。
【００２４】
回線部１２−１〜１２−Ｍは、回線１１−１〜１１−Ｍにそれぞれ対応しており、対応する回線１１−１〜１１−Ｍのパケットの送受信を行う。
【００２５】
スイッチ１３は、回線部１２−１〜１２−Ｍで受信したパケットを該当する回線部１２−１〜１２−Ｍに転送する。その際に、スイッチ１３は、回線部１２−１〜１２−Ｍから受信したパケットのうち、暗号化などの所定の処理が必要なパケットについては処理部１４に転送する。また、スイッチ１３は、処理部１４で所定の処理が行われたパケットを該当する回線部１２−１〜１２−Ｎに転送する。
【００２６】
処理部１４は、スイッチ１３からのパケットに対して所定の処理を行った後、スイッチ１３へ返送する。
【００２７】
図２は、図１に示された処理部１４の構成を示すブロック図である。図２を参照すると、処理部１４は、パケット振り分け部２１、パケット処理ブロック２２−１〜２２−Ｎ、ヒストリバッファ２３、バス２４を有している。
【００２８】
パケット振り分け部２１は、スイッチ１３から受信したパケットを負荷分散するためにパケット処理ブロック２２−１〜２２−Ｎに振り分けて送信する。ここでは、全てのパケット処理ブロック２２−１〜２２−Ｎが正常な状態では、全てのパケット処理ブロック２２−１〜２２−Ｎに負荷が分散されており、予備系という概念はない。
パケット振り分け部２１は、例えば、ラウンドロビン方式でパケットを振り分ける。また、パケット振り分け部２１は、パケットを振り分ける際に、各パケットにパケット処理ブロック２２−１〜２２−Ｎ毎の順序番号を付与する。
【００２９】
また、パケット振り分け部２１は、パケット処理ブロック２２−１〜２２−Ｎに送信したパケットをヒストリバッファ２３に格納する。
【００３０】
パケット振り分け部２１は、パケット処理ブロック２２−１〜２２−Ｎで所定の処理が行われたパケットを受信すると、順序番号が連続しているかチェックする。パケット振り分け部２１は、順序番号が正常であれば、そのパケットをスイッチ１３に送信する。順序番号に抜けがあれば、パケット振り分け部２１は、抜けたパケットに対応する処理前のパケットをヒストリバッファ２３から取り出して、他のパケット処理ブロックに処理させる。また、パケット振り分け部２１は、順序番号の異常を生じさせたパケット処理ブロックにその後パケットを振り分けない。
【００３１】
パケット処理ブロック２２−１〜２２−Ｎは、パケット振り分け部２１により自身に振り分けられたパケットに対して所定の処理を行った後、パケット振り分け部２１に返送する。
【００３２】
ヒストリバッファ２３は、パケット振り分け部２１によりパケット処理ブロック２２−１〜２２０−Ｎに振り分けられたパケットをパケット処理ブロック２２−１〜２２−Ｎ毎のキューにより保持する。
【００３３】
図４は、ヒストリバッファ２３の論理イメージを示す図である。図４中の○はパケットを示し、その中の番号は順序番号を示す。
【００３４】
図４を参照すると、ヒストリバッファ２３にはパケット処理ブロック２２−１〜２２−Ｎ毎のキュー４１−１〜４１−Ｎが構成されている。各パケット処理ブロック２２−１〜２２−Ｎに送信されたパケットは対応するキュー４１−１〜４１−Ｎの最後尾に追加される。各キューは所定の深さを持っており、それ以上のパケットが追加されると、先頭の古いパケットから順に廃棄するようになっている。
【００３５】
バス２４は、パケット振り分け部２１とパケット処理ブロック２２−１〜２２−Ｎの間のパケットを転送する経路である。
【００３６】
図５は、パケット処理ブロック２２−１〜２２−Ｎとパケット振り分け部２１の間のバス２４上で送受信されるパケットのフォーマットを示す図である。
【００３７】
図５を参照すると、パケット５０は順序番号５１、パケット処理ブロック識別子５２及びペイロード５３から構成される。パケット処理ブロック識別子５２は、そのパケットが振り分けられたパケット処理ブロックを特定するための情報である。
【００３８】
図３は、図２に示されたパケット振り分け部２１の構成を示すブロック図である。図３を参照すると、パケット振り分け部２１は、スイッチインタフェース部３１、振り分け制御部３２、パケット送信部３３、パケット受信部３４、順序番号比較部３５、ヒストリバッファインタフェース部３６を有している。
【００３９】
スイッチインタフェース部３１は、スイッチ１３との間でパケットの送受信を行う。
【００４０】
振り分け制御部３２は、一例としてラウンドロビン方式により、パケット処理ブロック２２−１〜２２−Ｎへのパケットの振り分けを決定する。また、振り分け制御部３２は、順序番号比較部３５から、順序番号の抜けたパケット及び順序番号の抜けを生じさせたパケット処理ブロックの通知を受けると、抜けたパケットをヒストリバッファ３６から取り出して他のパケット処理ブロックに再度振り分ける。また、振り分け制御部３２は、順序番号の抜けを生じさせたパケット処理ブロックをラウンドロビン方式によるパケット振り分け先の対象から除外する。
【００４１】
パケット送信部３３は、振り分け制御部３２で振り分け先が決定されたパケットを送信する。
【００４２】
パケット受信部３４は、各パケット処理ブロック２２−１〜２２−Ｎで所定の処理が行われたパケットを受信する。
【００４３】
順序番号比較部３５は、パケット受信部３４で受信されたパケットについて、パケット処理ブロック２２−１〜２２−Ｎ毎に順序番号の抜けがあるか否かチェックする。順序番号比較部３５は、順序番号の抜けを検出すると、抜けたパケット及び順序番号の抜けを生じさせたパケット処理ブロックを振り分け制御部３２に通知する。
【００４４】
ヒストリバッファインタフェース部３６は、ヒストリバッファ２３へのパケットの格納と、ヒストリバッファ２３からのパケットの取り出しを行う。
【００４５】
次に、処理部１４の動作について説明する。
【００４６】
図６は、処理部１４の動作を示すフローチャートである。図６を参照すると、ステップ１０１に、処理部１４は、振り分け制御部３２でスイッチ１３からのパケットを受信する。ステップ１０２に、処理部１４は、振り分け制御部３２でラウンドロビン方式に従ってパケット処理ブロック２２−１〜２２−Ｎにパケットを振り分け、順序番号を付与して送信する。ステップ１０３に、処理部１４は、そのパケットをヒストリバッファ２３の該当するキューに格納する。ステップ１０４に、処理部１４は、パケット処理ブロック２２−１〜２２−Ｎでパケットに対して所定の処理を行い、パケット振り分け部２１に返送する。ステップ１０５に、処理部１４は、パケット処理ブロック２２−１〜２２−Ｎからパケット振り分け部２１に返送されたパケットの順序番号を順序番号比較部３５でチェックする。順序番号が連続していれば、ステップ１０６に、処理部１４はそのパケットをスイッチ１３に送信する。
【００４７】
ステップ１０５のチェックで順序番号が連続していないことが検出されると、ステップ１０７に、処理部１４は順序番号の抜けたパケットを振り分けていたパケット処理ブロックをパケット振り分け先の対象から除く。また、ステップ１０８に、処理部１４は、順序番号の抜けたパケットをヒストリバッファ２３から取り出して、他のパケット処理ブロックに再度振り分け、ステップ１０４の処理に戻る。
【００４８】
本実施形態によれば、パケット中継装置１０は、パケット処理ブロック２２−１〜２２−Ｎにパケットを振り分ける際にそのパケットにパケット処理ブロック２２−１〜２２−Ｎ毎の順序番号を付与すると共にヒストリバッファ２３に格納し、パケット処理ブロック２２−１〜２２−Ｎの故障により順序番号の抜けが発生するとそれを順序番号比較部３５で検出し、予めヒストリバッファ２３に格納しておいたパケットを取り出して再度他のパケット処理ブロックに振り分ける。したがって、いずれかのパケット処理ブロックが故障しても、パケット中継装置１０は、パケットの廃棄なしに処理を継続することができる。
【００４９】
なお、本実施形態のパケット中継装置１０は、順序番号の抜けを検出した場合だけでなく、他の事象によりパケット処理ブロックの故障を検出した場合にも、そのパケット処理ブロックをパケット振り分け先の対象から除いてもよい。これによれば、順序番号の抜けを未然に防止することができる。他の事象としては、例えば処理完了待ちタイマのタイムアウトやハードウェアの故障などがある。
【００５０】
【発明の効果】
本発明によれば、処理ブロックにパケットを振り分ける際にそのパケットにパケット処理ブロック毎の順序番号を付与すると共にパケットをバッファに格納し、パケット処理ブロックの故障などで順序番号の抜けが発生するとそれを検出し、バッファに格納しておいたパケットを取り出して再度他の処理ブロックに振り分ける。したがって、いずれかの処理ブロックが故障してもパケットを廃棄することなく、処理を継続することができる。
【００５１】
また、順序番号の抜けを未然に防止することができる。
【図面の簡単な説明】
【図１】本発明の一実施形態におけるパケット中継装置の構成を示すブロック図である。
【図２】図１に示された処理部の構成を示すブロック図である。
【図３】図２に示されたパケット振り分け部の構成を示すブロック図である。
【図４】ヒストリバッファの論理イメージを示す図である。
【図５】パケット処理ブロックとパケット振り分け部の間のバス上で送受信されるパケットのフォーマットを示す図である。
【図６】処理部の動作を示すフローチャートである。
【符号の説明】
１０    パケット中継装置
１１−１〜１１−Ｍ    回線
１２−１〜１２−Ｍ    回線部
１３    スイッチ
１４    処理部
２１    パケット振り分け部
２２−１〜２２−Ｎ    パケット処理ブロック
２３    ヒストリバッファ
２４    バス
３１    スイッチインタフェース部
３２    振り分け制御部
３３    パケット送信部
３４    パケット受信部
３５    順序番号比較部
３６    ヒストリバッファインタフェース部
４１−１〜４１−Ｎ    キュー
５０    パケット
５１    順序番号
５２    パケット処理ブロック識別子
５３    ペイロード
１０１〜１０８    ステップ
【図１】
0003582591.tif 000002
【図２】
0003582591.tif 000003
【図３】
0003582591.tif 000004
【図４】
0003582591.tif 000005
【図５】
0003582591.tif 000006
【図６】
0003582591.tif 000007