(57)【要約】  本発明を適用した１システムは、記憶装置を複数の単位領域に分割し、チャネルが指定されたデータを受信した場合に、該複数の単位領域のなかで未使用の単位領域を割り当て、該割り当てた単位領域を用いて該第データの送信タイミングの調整、及び該データの変換のうちの少なくとも一つを行う。そのために、データを読み出すべき単位領域が特定できないエラーを検出するエラー検出手段と、エラー検出手段がエラーを検出した場合に、エラーによって特定できない単位領域に格納されているデータのチャネルを対象チャネルとして認識し、認識した対象チャネルでの単位領域の割り当てを無効とするエラー制御手段と、を具備する。
2012144041.tif 000002
【特許請求の範囲】
【請求項１】
記憶装置を複数の単位領域に分割し、チャネルが指定されたデータを受信した場合に、該複数の単位領域のなかで未使用の単位領域を割り当て、該割り当てた単位領域を用いて該データの送信タイミングの調整、及び該データの変換のうちの少なくとも一つを行う中継装置において、
前記データを読み出すべき単位領域が特定できないエラーを検出するエラー検出手段と、
前記エラー検出手段がエラーを検出した場合に、該エラーによって特定できない単位領域に格納されているデータのチャネルを対象チャネルとして認識し、該認識した対象チャネルでの前記単位領域の割り当てを無効とするエラー制御手段と、
を具備することを特徴とする中継装置。
【請求項２】
請求項１記載の中継装置であって、
前記エラー制御手段は、
前記記憶装置で使用中の単位領域の領域数を前記チャネル毎に計数する領域数計数手段と、
前記エラー検出手段がエラーを検出した場合に、前記対象チャネルで前記領域数係数手段が計数していた領域数を第１の領域数として保存し、該領域数計数手段に該対象チャネルの領域数をクリアさせるリセット手段と、
前記エラー検出手段がエラーを検出した後、前記記憶装置の複数の単位領域のなかで未使用となっている単位領域を特定する領域特定手段と、
前記領域特定手段が特定している未使用の単位領域の数が前記第１の領域数と一致した場合に、該未使用の単位領域を全て開放する領域解放手段と、
を具備する。
【請求項３】
請求項２記載の中継装置であって、
前記リセット手段は、前記領域解放手段による開放が行われる前に再度、前記エラー検出手段がエラーを検出した場合、該エラーにおける対象チャネルで前記領域数係数手段が計数していた領域数に前記第１の領域数を加算して得られる数を新たに第１の領域数として更新し、
前記領域特定手段は、前記領域解放手段による開放が行われる前に再度、前記エラー検出手段がエラーを検出した場合、前記記憶装置の複数の単位領域のなかで未使用となっている単位領域の特定を初めから行う。
【請求項４】
記憶装置を複数の単位領域に分割し、チャネルが指定されたデータを受信した場合に、該複数の単位領域のなかで未使用の単位領域を割り当て、該割り当てた単位領域を用いて該データの送信タイミングの調整、及び該データの変換のうちの少なくとも一つを行う中継装置に実行させる復旧方法であって、
前記記憶装置で使用中の単位領域の領域数を前記チャネル毎に計数し、
前記データを読み出すべき単位領域が特定できないエラーが検出された場合に、該エラーが検出されたチャネルを対象チャネルとし、該対象チャネルで計数していた領域数を第１の領域数として保存し、
前記エラーを検出した後、前記記憶装置の複数の単位領域のなかで未使用となっている単位領域の特定を行い、
該特定している未使用の単位領域の数が前記第１の領域数と一致した場合に、該未使用の単位領域を全て開放する、ことを特徴とする復旧方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、データを中継する技術に関する。
【背景技術】
【０００２】
近年インターネットの急速な普及に伴って、データ通信サービスは飛躍的に発展しており、今や、ＩＰ（Internet Protocol） パケットに代表されるパケットによるデータ通信が主流となりつつある。また、データ通信サービスの中でも、特に、音声や動画像データの伝送などのようにリアルタイム性が強く要求されるサービスに対する需要は非常に高まっている。このため、データ通信が行われるネットワークでルータやスイッチなどのノードとして使用される中継装置において、データ通信速度の高速化による大容量化、通信の高信頼性化は顕著である。【０００３】
上記中継装置のなかには、データのカプセル化(分割/再構築)機能や、データの遅延、帯域制御などの通信品質を確保するためのＱｏＳ（Quality of Service）機能などを持つものがある。カプセル化、及びデータの送信タイミングの管理には、データ本体を保存するための記憶装置が必須である。この記憶装置は以降「パケットバッファ」と呼ぶことにする。【０００４】
パケットバッファは、通常、或る単位領域（アドレス領域）で分割され、その単位領域がポインタ（ＰＴＲ）と呼ぶデータで管理される。そのようにポインタでパケットバッファを管理する方法としては、チェーン管理方法が知られている。【０００５】
チェーン管理方法では、チャネル毎に、データの保存に未使用の単位領域が割り当てられ、データの連続性はポインタで管理される。そのような管理では、チャネル毎に、そのチャネルに割り当てられたポインタ、そのポインタが割り当てられた順序を特定できるようにする必要がある。このため、それらを特定できる情報（チェーン管理情報）は、チェーン管理方法では必須となっている。ポインタが割り当てられた順序は、普通、ポインタ毎に、そのポインタの次に割り当てられたポインタを表すデータ（リンク情報）により管理される。【０００６】
チェーン管理情報は、所定の記憶装置に保存される。その記憶装置へのデータの書き込み、及びデータの読み出しにはエラーが発生する可能性がある。チェーン管理情報のリンク情報中のデータにエラーが発生すると、そのエラーが発生したデータが表すポインタの他に、そのポイント以降に連なるポインタも特定できなくなる。このため、エラーは、パケットバッファに解放されない単位領域（メモリリーク）が多く発生する可能性がある。近年のデバイスの進化による高密集積化、低駆動電力化により、エラーは、発生し易くなる傾向にある。【０００７】
このメモリリークが発生すると、パケットバッファで使用可能な容量は開放されない単位領域分だけ少なくなる。このため、中継装置のバックプレッシャによるスループット性能劣化やパケットバッファのオーバーフローによるデータロスが発生し易くなる。また、エラーが発生したデータが表すポインタが割り当てられたチャネルでは、そのポインタを特定できなくなるため、データの伝送（中継）を行えなくなる。【０００８】
昨今では、クラウド技術などの発達によりネットワークインフラストラクチャの信頼性、及び通信品質が今まで以上に求められている。上記のようなスループット性能劣化やデータロス等は通信品質に対する悪影響が大きい。【０００９】
このこともあり、従来の中継装置でも、記憶装置へのアクセスにおけるエラー監視が行われている。しかし、ＥＣＣ（Error Correcting Code）等を用いてエラー監視を行っても、エラーが発生したデータのエラー訂正を行えるとは限らない。これは、エラー発生によるメモリリークに必ずしも対応できないことを意味する。【００１０】
訂正が不可能なエラー発生によるメモリリークは、中継装置をリセットすることで解消することができる。しかし、中継装置をリセットする場合、中継装置が動作しない時間が生じ、パケットバッファに保存されているデータは全て失われる。この結果、データ通信サービスの質は大きく低下することになる。このことを考慮するならば、訂正が不可能なエラー発生によるメモリリークに自立的に対応できるようにすることが重要である。【００１１】
なお、メモリリークへの対応方法としては、パケットバッファの単位領域毎に、その単位領域の使用時間を計時することにより、一定時間以上、使用されている単位領域を開放するという方法が考えられる。しかし、このような対応方法は現実的ではない。その理由は、中継装置で扱うチャネルの数は非常に大きく、且つチャネル毎に求められる通信速度が異なるのが普通だからである。つまり制御が非常に複雑になり、且つその制御のために使用するリソースも膨大となるのが普通だからである。
【先行技術文献】
【特許文献】
【００１２】
【特許文献１】特開平９−２４４９４８号公報
【特許文献２】特開２０００−２００２１０号公報
【特許文献３】特開２００２−５７７１２号公報
【特許文献４】特開２００７−１４１１９３号公報
【発明の開示】
【発明が解決しようとする課題】
【００１３】
本発明を適用した１システムは、中継装置において、記憶装置に発生した、訂正が不可能なエラー発生によるメモリリークに自立的に対応できるようにする技術を提供することを目的とする。
【課題を解決するための手段】
【００１４】
本発明を適用した１システムでは、記憶装置を複数の単位領域に分割し、チャネルが指定されたデータを受信した場合に、該複数の単位領域のなかで未使用の単位領域を割り当て、該割り当てた単位領域を用いて該データの送信タイミングの調整、及び該データの変換のうちの少なくとも一つを行う。そのために、データを読み出すべき単位領域が特定できないエラーを検出するエラー検出手段と、エラー検出手段がエラーを検出した場合に、該エラーによって特定できない単位領域に格納されているデータのチャネルを対象チャネルとして認識し、該認識した対象チャネルでの単位領域の割り当てを無効とするエラー制御手段と、を具備する。
【発明の効果】
【００１５】
本発明を適用した１システムでは、記憶装置に発生した、訂正が不可能なエラー発生によるメモリリークに自立的に対応することができる。
【図面の簡単な説明】
【００１６】
【図１】本実施形態による中継装置が適用されたネットワークの構成を説明する図である。
【図２】本実施形態による中継装置が適用されたＡＤＭの回路構成を説明する図である。
【図３】パケット／セグメントマッパの回路構成を説明する図である。
【図４】第１のマッパのより詳細な回路構成を説明する図である。
【図５Ａ】ライトポインタ制御テーブルの構成を説明する図である。
【図５Ｂ】Ｌｉｎｋ  Ｌｉｓｔ  ＲＡＭに格納される内容を説明する図である。
【図５Ｃ】容量監視部に格納される内容を説明する図である。
【図５Ｄ】Ｆｒｅｅ  ＰＴＲ  ＲＡＭに格納される内容を説明する図である。
【図５Ｅ】リードポインタ制御テーブルの構成を説明する図である。
【図５Ｆ】ＰＴＲ返却監視フラグ部に格納される内容を説明する図である。
【図５Ｇ】パケットバッファへのデータの格納方法を説明する図である。
【図６】第１のマッパに入力されるセグメント、及び第１のマッパから出力されるパケットのシーケンス例を説明する図である。
【図７Ａ】Ｆｒｅｅ  ＰＴＲ  ＲＡＭの内容変化を説明する図である。
【図７Ｂ】Ｆｒｅｅ  ＰＴＲ  ＲＡＭの内容変化を説明する図である。
【図８Ａ】ライトポインタ制御テーブルの内容変化を説明する図である。
【図８Ｂ】ライトポインタ制御テーブルの内容変化を説明する図である。
【図９Ａ】Ｌｉｎｋ  Ｌｉｓｔ  ＲＡＭの内容変化を説明する図である。
【図９Ｂ】Ｌｉｎｋ  Ｌｉｓｔ  ＲＡＭの内容変化を説明する図である。
【図１０Ａ】パケットバッファの格納内容変化を説明する図である。
【図１０Ｂ】パケットバッファの格納内容変化を説明する図である。
【図１１Ａ】リードポインタ制御テーブルの内容変化を説明する図である。
【図１１Ｂ】リードポインタ制御テーブルの内容変化を説明する図である。
【図１２Ａ】容量監視部の格納内容変化を説明する図である。
【図１２Ｂ】容量監視部の格納内容変化を説明する図である。
【図１３Ａ】ＰＴＲ返却監視フラグ部の格納内容変化を説明する図である。
【図１３Ｂ】ＰＴＲ返却監視フラグ部の格納内容変化を説明する図である。
【図１４】ライト処理のフローチャートである。
【図１５】リード処理のフローチャートである。
【発明を実施するための形態】
【００１７】
以下、本発明の実施形態について、図面を参照しながら詳細に説明する。
図１は、本実施形態による中継装置が適用されたネットワークの構成を説明する図である。
【００１８】
図１には、ネットワークとして、２つのＷＡＮ（Wide Area Network）１（１−１、１−２）、及び１つのＬＡＮ（Local Area Network）３を表している。各ＷＡＮ１は、複数のＡＤＭ（Add-Drop Multiplexer）１０を用いたリング型のＳｏｎｅｔ／ＳＤＨ（Synchronous Optical NETwork/Synchronous Digital Hierarchy）ネットワークである。これら２つのＷＡＮ１−１、１−２は、１つのＡＤＭ１０により接続されている。ＬＡＮ３は、複数のＬ（Layer）２スイッチ３１を用いたリング型のイーサネット（登録商標）ネットワークである。ＷＡＮ１−１とＬＡＮ３とは、ＷＡＮ１−１のＡＤＭ１０とＬＡＮ３のＬ２スイッチ３１によって接続されている。本実施形態による中継装置は、ＡＤＭ１０に搭載される形で実現されている。なお、本実施形態による中継装置は、Ｌ２スイッチ３１上に搭載させることもできる。
【００１９】
ＷＡＮ１に配置された各ＡＤＭ１０は、ＷＡＮ１に信号（データ）を出し入れする。ＡＤＭ１０は、ＡＳＷ(Aggregate SW）５に接続されたノード６からの信号をＷＡＮ１−１に入れ、ＷＡＮ１−１のＡＳＷ５に転送すべき信号は取り出してＡＳＷ５に転送する。ＡＤＭ１０は、ＬＡＮ３のＬ２スイッチ３１との間でも同様の転送処理を行う。Ｌ２スイッチ３１は、例えばノード７をＬＡＮ３に接続する。
【００２０】
ＡＤＭ１０は、ＬＡＮ３のＬ２スイッチ３１との間は信号をパケットの形で送受信する。パケットを受信すると、ＡＤＭ１０は、パケットをカプセル化し、そのカプセル化によって得られたセグメントをＷＡＮ１−１に入れる。Ｌ２スイッチ３１に転送すべきセグメントを受信したＡＤＭ１０は、受信したセグメントからパケットを構築し、Ｌ２スイッチ３１に転送する。本実施形態による中継装置は、ＷＡＮ１−１とＬＡＮ３間の信号の送受信を実現させるためにＡＤＭ１０に搭載されている。
【００２１】
図２は、ＡＤＭの回路構成を説明する図である。図２において、点線矢印はＳｏｎｅｔ／ＳＤＨのフレームの流れを表し、実線矢印はパケットの流れを表している。
ＡＤＭ１０は、図２に表すように、４つの終端カード１１０−１、１１０−２、１３０−１、１３０−２、ＳＳＷ（Sonet SW）１６０、ＰＳＷ（Packet SW）１５０、及びＰＥ−Ｍ（Packet Engine Mapper）１７０を備える。
【００２２】
２つの終端カード１１０（１１０−１、１１０−２）はＷＡＮ１用であり、各終端カード１１０は、４つのポート１１１（１１１−０〜１１１−３）、各ポート１１１と接続されたインターフェース（ＩＦ）１１２、フレーマ（Framer）１１３を備える。フレーマ１１３は、インターフェース１１２を介して、各ポート１１１が受信したフレームを入力し、ＳＳＷ１６０に出力する。また、ＳＳＷ１６０から入力したフレームを、インターフェース１１２を介して各ポート１１１に出力することにより、ＷＡＮ１−１に挿入する。
【００２３】
ＳＳＷ１６０は、Ｓｏｎｅｔ／ＳＤＨのパスレベルのクロスコネクトスイッチである。ＳＳＷ１６０は、終端カード１１０−１、或いは１１０−２から出力された各フレームの方路切替を行ってＰＥ−Ｍ１７０に出力する。また、ＳＳＷ１７０は、ＰＥ−Ｍ１７０から出力された各フレームの方路切替を行って終端カード１１０−１或いは１１０−２に出力する。
【００２４】
２つの終端カード１３０−１、１３０−２は、ＬＡＮ３用であり、各終端カード１３０は、４つのポート１３１（１３１−０〜１３１−３）、各ポート１３１と接続されたインターフェース（ＩＦ）１３２、ＩＧ／ＥＧ（Ingress/Egress）１３３を備えている。ＰＳＷ１５０からのパケットは、ＩＧ／ＥＧ１３３、インターフェース１３２およびポート１３１を介してＬＡＮ３（Ｌ２スイッチ３１）へ送信される。また、ＬＡＮ３（Ｌ２スイッチ３１）からのパケットは、各ポート１３１、インターフェース１３２およびＩＧ／ＥＧ１３３を介してＰＳＷ１５０に出力される。 ＰＳＷ１５０は、ＰＥ−Ｍ１７０と２つの終端カード１３０−１、１３０−２間におけるパケットの方路切替を行う。
【００２５】
ＰＥ−Ｍ１７０は、ＬＡＮ３とＷＡＮ１間のデータ通信を可能とするために、データのカプセル化(分割／再構築)を行う。カプセル化のために、Ｓｏｎｅｔ／ＳＤＨマッパ１７１、及びパケット／セグメントマッパ１７２を備える。
【００２６】
パケット／セグメントマッパ１７２は、ＰＳＷ１５０（ＬＡＮ３側）から入力したパケットをセグメントに分割してＳｏｎｅｔ／ＳＤＨマッパ１７１に出力する。また、パケット／セグメントマッパ１７２は、Ｓｏｎｅｔ／ＳＤＨマッパ１７１から入力したセグメントを用いてパケットを構築し、構築したパケットをＰＳＷ１５０に出力する。Ｓｏｎｅｔ／ＳＤＨマッパ１７１は、ＳＳＷ１６０（ＷＡＮ１側）から入力したセグメントをパケット／セグメントマッパ１７２に出力し、パケット／セグメントマッパ１７２から入力したセグメントのマッピングを行い、ＳＳＷ１６０を介して出力すべき終端カード１１０に出力させる。
【００２７】
図３は、パケット／セグメントマッパの回路構成を説明する図である。
パケット／セグメントマッパ１７２は、図３に表すように、第１のマッパ３１０、及び第２のマッパ３３０を備える。第１のマッパ３１０は、セグメントからパケットを構築するものである。Ｓｏｎｅｔ／ＳＤＨマッパ１７１から出力されたセグメントは、入力インターフェース（Input Interface）３０１、及び入力処理部（Input Processing Part）３０２を介して第１のマッパ３１０に入力される。第１のマッパ３１０から出力されたパケットは、出力処理部（Output Processing Part）３０３、及び出力インターフェース（Output Interface）３０４を介してＰＳＷ１５０に入力される。
【００２８】
第２のマッパ３３０は、パケットをセグメントに分割するものである。ＰＳＷ１５０から出力されたパケットは、入力インターフェース３２１、及び入力処理部３２２を介して第２のマッパ３３０に入力される。第２のマッパ３３０から出力されたセグメントは、出力処理部３２３、及び出力インターフェース３２４を介してＳＳＷ１６０に入力される。第１のマッパ３１０は、ライト制御回路３１１、リード制御回路３１２、ページ制御回路３１３、パケットバッファ３１４、及びパケットバッファインターフェース３１５を備える。
【００２９】
パケットバッファ３１４は、セグメントからパケットを構築するために用いられるメモリである。図５Ｇに表すように、パケットバッファ３１４は、或る単位領域（アドレス領域）で分割され、その単位領域がポインタ（ＰＴＲ）と呼ぶデータで管理される。図５Ｇ中に表記の「ＰＴＲ＃０」〜「ＰＴＲ＃ｎ」はそれぞれ、異なるポインタを表している。パケットバッファインターフェース（以降「ＰＢＩ」と略記）３１５は、パケットバッファ３１４へのアクセスを実現させるためのものである。以降、単位領域は「ポインタ」と表記し、ポインタを表すデータを「ポインタ値」或いは「ポインタの値」と表記する。
【００３０】
ライト制御回路３１１は、入力処理部３０２から入力したセグメントを書き込むべきパケットバッファ３１４のポインタを選択し、ＰＢＩ３１５を介して、選択したポインタにセグメントを書き込む。リード制御回路３１２は、パケットバッファ３１４からセグメントを読み出すべきポインタを選択し、ＰＢＩ３１５を介して、選択したポインタからセグメントを読み出す。ページ制御回路３１３は、リード制御回路３１２によるセグメントのパケットバッファ３１４からの読み出しを制御することにより、ＱｏＳ制御等を実現させる。
【００３１】
ＡＤＭ１０が受信したセグメント及びパケットは、チャネルで管理され、セグメント、或いはパケットの形で受信したデータの優先度（通信速度）はチャネル毎に設定される。データの優先度は、データの送受信に用いられるポート、プロトコル、或いは予約等によって設定される。このようなことから、入力インターフェース３０１は、セグメントと共にチャネル番号を入力し、入力されたセグメントとチャネル番号はライト制御回路３１１に出力される。それにより、ページ制御回路３１３によるＱｏＳ制御は、チャネル単位で行われる。
【００３２】
ライト制御回路３１１は、メモリ３１１ａを搭載し、そのメモリ３１１ａには、ライトポインタ制御テーブルが格納される。そのライトポインタ制御テーブルは、チャネル毎に、セグメントを書き込むポインタを管理するためのものである。ライトポインタ制御テーブルには、図５Ａに表すように、チャネル（チャネル番号）毎に、次のデータ（セグメント）を書き込むべきポインタの値（図５Ａ中「Ｎｏｗ  ＰＴＲ」と表記。以降「現ポインタ値」と呼ぶ）と、その次のデータ（セグメント）を書き込むべきポインタの値（図５Ａ中「Ｎｅｘｒ  ＰＴＲ」と表記。以降「次ポインタ値」と呼ぶ）とが格納される。
【００３３】
ページ制御回路３１３には、Ｌｉｎｋ  Ｌｉｓｔ  ＲＡＭ３１３ａ、及びＦｒｅｅ  ＰＴＲ  ＲＡＭ３１３ｂが搭載されている。Ｌｉｎｋ  Ｌｉｓｔ  ＲＡＭ３１３ａは、ポインタ単位でデータを読み出す順序、つまりデータの繋がりを管理するために用いられる。そのために、Ｌｉｎｋ  Ｌｉｓｔ  ＲＡＭ３１３ａには、図５Ｂに表すように、ポインタ値毎に、そのポインタ値のポインタに格納されたデータの次のデータが格納されるポインタの値（図５Ｂ中「Ｎｅｘｔ  ＰＴＲ」と表記。以降「次ポインタ値」と呼ぶ）が格納される。
【００３４】
Ｆｒｅｅ  ＰＴＲ  ＲＡＭ３１３ｂは、ポインタのなかで未使用のポインタを管理するためにＦＩＦＯ（First-In First-Out）として用いられる。Ｆｒｅｅ  ＰＴＲ  ＲＡＭ３１３ｂには、図５Ｄに表すように、各アドレス（「ａｄｄ０」〜「ａｄｄＮ」と表記）には未使用のポインタの値（「Ｆｒｅｅ  ＰＴＲ」と表記）が格納される。
【００３５】
リード制御回路３１２は、メモリ３１２ａを搭載し、そのメモリ３１２ａには、リードポインタ制御テーブルが格納される。そのリードポインタ制御テーブルは、チャネル毎に、データを読み出すポインタを管理するためのものである。リードポインタ制御テーブルには、図５Ｅに表すように、チャネル（チャネル番号）毎に、次にデータ（セグメント）を読み出すべきポインタの値（図５Ｅ中「Ｒｅａｄ  ＰＴＲ」と表記）が格納される。
【００３６】
ライト制御回路３１１は、データ（セグメント）を入力すると、そのデータのチャネル番号を用いてメモリ３１１ａのライトポインタ制御テーブルを参照し、そのデータを格納すべき現ポインタ値を読み出し、読み出した現ポインタ値のポインタにデータを書き込む。ライトポインタ制御テーブルのそのチャネル番号には、現ポインタ値として次ポインタ値を、次ポインタ値としてＦｒｅｅ  ＰＴＲ  ＲＡＭ３１３ｂの先頭に格納されたポインタ値をそれぞれ格納する。Ｌｉｎｋ  Ｌｉｓｔ  ＲＡＭ３１３ａの現ポインタ値と一致するポインタ値には、ライトポインタ制御テーブルの更新後の現ポインタ値を格納する。そのようにして、パケットバッファ３１４にポインタ単位で格納されたデータ（セグメント）はチャネル毎に追跡することが可能となっている。
【００３７】
リード制御回路３１２は、ページ制御回路３１３からデータを読み出すべきチャネルが指定される。チャネルが指定されたリード制御回路３１２は、メモリ３１２ａのリードポインタ制御テーブルから指定されたチャネルのポインタ値を取得し、取得したポインタ値のポインタからデータを読み出す。リードポインタ制御テーブルの指定されたチャネルのポインタ値は、Ｌｉｎｋ  Ｌｉｓｔ  ＲＡＭ３１３ａから読み出したポインタ値に更新する。Ｌｉｎｋ  Ｌｉｓｔ  ＲＡＭ３１３ａからポインタ値を読み出すポインタ値は、パケットバッファ３１４からデータを読み出したポインタの値である。そのようなポインタ値をデータの読み出しに用いたポインタ値の代わりにリードポインタ制御テーブルに格納することにより、チャネル毎にデータをその格納順序に従って読み出すことができる。
【００３８】
第２のマッパ３３０は、ライト制御回路３３１、リード制御回路３３２、ページ制御回路３３３、パケットバッファ３３４、及びＰＢＩ３３５を備える。ライト制御回路３３１は、メモリ３３１ａにライトポインタ制御テーブルを格納し、リード制御回路３３２は、メモリ３３２ａにリードポインタ制御テーブルを格納する。ページ制御回路３３３は、Ｌｉｎｋ  Ｌｉｓｔ  ＲＡＭ３３３ａ、及びＦｒｅｅ  ＰＴＲ  ＲＡＭ３３３ｂを搭載している。
【００３９】
第２のマッパ３３０では、ライト制御回路３３１は入力したパケットをパケットバッファ３３４に格納し、リード制御回路３３２はパケットバッファ３３４からパケットを読み出す。しかし、基本的に各部３３１〜３３４の機能は同じであるため、説明は省略する。
【００４０】
図４は、第１のマッパのより詳細な回路構成を説明する図である。
図４に表すように、第１のマッパ３１０のライト制御回路３１１は、ライト制御部３１１ｂを備え、リード制御回路３１２は、リード制御部３１２ｂ、エラー（ＥＲＲ）検出部３１２ｃ、及びポインタ返却処理部３１２ｄを備えている。ページ制御回路３３３は、Ｌｉｎｋ  Ｌｉｓｔ  ＲＡＭ３１３ａ、及びＦｒｅｅ  ＰＴＲ  ＲＡＭ３１３ｂの他に、復旧制御回路４０１、容量監視部４０２、及びＱｏＳ制御部４０３を備えている。図４では、ＰＢＩ３１５は省略している。
【００４１】
Ｌｉｎｋ  Ｌｉｓｔ  ＲＡＭ３１３ａは、上記のように、チャネル毎のパケットバッファ３１４からのデータの読み出しを実現するために用いられる。Ｌｉｎｋ  Ｌｉｓｔ  ＲＡＭ３１３ａから読み出したポインタ値にエラーが発生した場合、そのポインタ値のポインタ、そのポインタ以降にデータが格納されたポインタが特定できなくなり、パケットバッファ３１４上にメモリリークが発生する。復旧制御回路４０１は、そのようなメモリリークに自立的に対応して復旧するためのものである。Ｌｉｎｋ  Ｌｉｓｔ  ＲＡＭ３１３ａから読み出したポインタ値に発生したエラーは、リード制御回路３１２のエラー検出部３１２ｃによって検出される。
【００４２】
上記メモリリークとなるポインタは、開放（返却）されないため、使用中のままとなる。使用中のままとなるポインタの数は、エラーが検出されたポインタ値のポインタが割り当てられたチャネルでデータの格納に用いられているポインタの総数である。使用中となっているポインタは、開放されない限り、使用中の状態が維持される。本実施形態では、そのことに着目し、メモリリークによって開放されなくなったポインタを特定し開放することにより、自立的な復旧を行うようにしている。
【００４３】
容量監視部４０２は、上記のような復旧のために用意したものであり、チャネル毎に、使用中のポインタの数の計数に用いられる。このことから、図５Ｃに表すように、容量監視部４０２は、チャネル（チャネル番号）毎に、ポインタ数（図５Ｃでは「容量」と表記。以降「ポインタ総数」と呼ぶ）を保持する。
【００４４】
復旧制御回路４０１は、エラー（ＥＲＲ）容量格納部４１１、ＰＴＲ返却監視フラグ（Ｆｌａｇ）部４１２、及び未返却ＰＴＲ比較部４１３を備える。メモのエラー（ＥＲＲ）容量格納部４１１は、ポインタ値の読み出しにエラーが発生したチャネルのポインタ総数の格納に用いられる。格納されるポインタ総数は、容量監視部４０２から取得される。
【００４５】
ＰＴＲ返却監視フラグ（Ｆｌａｇ）部４１２は、ポインタ毎に、返却が行われたか否かを特定するために用いられる。ＰＴＲ返却監視フラグ（Ｆｌａｇ）部４１２には、ポインタ（ポインタ値）毎に返却フラグが格納され、エラーの検出時、各ポインタの返却フラグの値は０にされ、各ポインタは全て未返却とされる。その後、返却が行われたポインタの返却フラグの値は返却を表す値（例えば１）に更新される。
【００４６】
未返却ＰＴＲ比較部４１３は、エラー容量格納部４１１に格納されたポインタ総数と、ＰＴＲ返却監視フラグ部４１２で未返却と設定されている返却フラグ数の比較を行う。その比較結果、つまり両者が一致したか否かは、リード制御回路３１２のＰＴＲ返却処理部３１２ｄに通知される。
【００４７】
ＰＴＲ返却処理部３１２ｄは、未返却ＰＴＲ比較部４１３から一致が通知された場合、ＰＴＲ返却監視フラグ部４１２を参照し、未返却を表す返却フラグのポインタ値を取得する。取得したポインタ値は、Ｆｒｅｅ  ＰＴＲ  ＲＡＭ３１３ｂに書き込むことにより、ポインタ値を書き込んだポインタを返却する。
【００４８】
メモリリークによって未返却とならないポインタは、パケットバッファ３１４へのデータの書き込みに使用されることから、その返却フラグは返却を表す値に更新される。このため、エラー容量格納部４１１に格納されたポインタ総数と、ＰＴＲ返却監視フラグ部４１２で未返却と設定されている返却フラグ数の一致は、メモリリークによって未返却とならない全てのポインタが１度は返却されたことを意味する。従って、それらが一致した時点で未返却となっているポインタは、メモリリークによって未返却のままとなっていることとなる。このため、そのように未返却となっているポインタを特定し、返却することにより、エラーによって使用中のままとなったポインタを全て開放することができる。
【００４９】
上記容量監視部４０２を設けたことにより、ライト制御回路３１１のライト制御部３１１ｂは、入力処理部３０２からデータ（セグメント）を入力した場合、図１４に表すフローチャートに沿って処理を行う。図１４を参照しつつ、ライト制御部３１１ｂの動作について詳細に説明する。
【００５０】
入力処理部３０２からデータ、及びチャネル番号を入力したライト制御部３１１ｂは、メモリ３１１ａのライトポインタ制御テーブルから、そのチャネル番号の現ポインタ値を取得し（Ｓ１１）、パケットバッファ３１４の、取得した現ポインタ値のポインタに入力したデータ（セグメント）を格納する（Ｓ１２）。そのデータの格納を行う一方、ライトポインタ制御テーブルの更新（Ｓ１３）、及びＱｏＳ制御部４０３への通知（Ｓ１４）、を行う。その後、容量監視部４０２から、入力したチャネル番号のポインタ総数を取得し、取得したポインタ総数をインクリメントした値を新たなポインタ総数として容量監視部４０２に書き込む（Ｓ１５）。
【００５１】
上記ライトポインタ制御テーブルの更新は、入力したチャネル番号の次ポインタ値を現ポインタ値に、次ポインタ値をＦｒｅｅ  ＰＴＲ  ＲＡＭ３１３ｂから取得したポインタ値にそれぞれ書き換えることで行われる。ＱｏＳ制御部４０３には、パケットバッファ３１４にデータを書き込んだチャネルの番号が通知される。その通知により、ＱｏＳ制御部４０３は、チャネル毎に、データ伝送の優先度に従ってリード制御回路３１２にデータの読み出しを指示する。
【００５２】
一方、リード制御回路３１２及びページ制御回路３１３の復旧制御回路４０１は、リード制御回路３１２のリード制御部３１２ａのＱｏＳ制御部４０３からのチャネル指定により、図１５に表すフローチャートに沿って処理を行う。図１５を参照しつつ、リード制御回路３１２及びページ制御回路３１３の復旧制御回路４０１の各動作について詳細に説明する。
【００５３】
リード制御回路３１２のリード制御部３１２ｂは、ＱｏＳ制御部４０３からデータの読み出しの対象となるチャネル番号を取得すると、そのチャネル番号を用いてメモリ３１２ａのリードポインタ制御テーブルを参照し、そのチャネル番号のポインタ値を読み出す（Ｓ２１）。次に、リード制御部３１２ｂは、パケットバッファ３１４の読み出したポインタ値のポインタからデータを読み出す（Ｓ２２）。
【００５４】
データを読み出した後は、リード制御部３１２ｂは、次にＬｉｎｋ  Ｌｉｓｔ  ＲＡＭ３１３ｂを参照し、上記ポインタ値のデータとして格納されているポインタ値を読み出す（Ｓ２３）。エラー検出部３１２ｃは、Ｌｉｎｋ  Ｌｉｓｔ  ＲＡＭ３１３ｂから読み出されたポインタ値に発生しているエラーを、そのポインタ値と共に読み出されるＥＣＣ（Error Correcting Code）等を用いて検出し、その検出結果をリード制御部３１２ｂに通知する。それにより、リード制御部３１２ｂは、エラー検出部３１２ｃからの通知により、読み出されたポインタ値にエラーが検出されたか否かを判定する。
【００５５】
リード制御部３１２ｂは、エラーが検出されたと判定した場合、ライト制御回路３１１のライト制御部３１１ｂに取得したチャネル番号を通知して、ライト制御部３１１ｂから、ライトポインタ制御テーブルのそのチャネル番号の現ポインタ値を取得する。リード制御部３１２ｂは、取得した現ポインタ値を、リードポインタ制御テーブル中の取得したチャネル番号のポインタ値として格納する（Ｓ２５）。そのようなリードポインタ制御テーブルの更新により、ポインタ値の読み出しにエラーが発生したチャネルでは、エラー発生時点以降のデータのパケットバッファ３１４への書き込みに対応できることとなる。
【００５６】
一方、リード制御部３１２ｂは、指定されたチャネル番号のポインタ総数を容量監視部４０２から取得して、取得したポインタ総数をエラー容量格納部４１１に格納し（Ｓ２６）、容量監視部４０２のそのチャネル番号のポインタ総数は０にクリアする（Ｓ２７）。また、リード制御部３１２ｂは、ＰＴＲ返却監視フラグ部４１２の各ポインタの返却フラグの値を０にする（Ｓ２９）。
【００５７】
Ｌｉｎｋ  Ｌｉｓｔ  ＲＡＭ３１３ｂからのポインタ値の読み出しにエラーが検出された場合、リード制御部３１２ｂは、上記のようにして、復旧のための初期設定、及びエラーが検出されたポインタ値のポインタが割り当てられたチャネルでのデータ伝送を可能にする再構築を行う。それにより、自立的な復旧が可能となり、メモリリークが直接、影響するチャネルでは、迅速なデータ伝送の再開が可能となる。
【００５８】
なお、エラーは、復旧の途中で発生する場合がありうる。このことから、リード制御部３１２ｂは実際には、現在、エラー容量格納部４１１に格納されているポインタ総数を参照し、そのポインタ総数が１以上であった場合、そのポインタ総数と、容量監視部４０２から取得したポインタ総数とを加算した値をエラー容量格納部４１１に格納するようにしている。
【００５９】
リード制御部３１２ｂは、読み出されたポインタ値にエラーが検出されないと判定した場合、そのポインタ値をリードポインタ制御テーブルの指定されたチャネル番号のデータとして格納する（Ｓ３０）。また、リード制御部３１２ｂは、パケットバッファ３１４からデータを読み出したポインタの値をＰＴＲ返却処理部３１２ｄに通知して、ＰＴＲ返却処理部３１２ｄにそのポインタを返却させる（Ｓ３１）。
【００６０】
エラー容量格納部４１１には、エラーへの復旧が終了した後、ポインタ総数として負の値が格納される。リード制御部３１２ｂは、エラー容量格納部４１１に格納されたポインタ総数が０より大きいか否か判定する（Ｓ３２）。そのポインタ総数が０より大きいと判定した場合（Ｓ３２のＹｅｓ）、リード制御部３１２ｂは、ＰＴＲ返却監視フラグ部４１２のパケットバッファ３１４からデータを読み出したポインタの値の返却フラグを返却にセットする（Ｓ３３）。そのポインタ総数が０未満と判定した場合（Ｓ３２のＮｏ）、リード制御部３１２ｂは、ここで一連の処理を終了する。
【００６１】
復旧制御回路４０１の未返却ＰＴＲ比較部４１３は、リード制御部３１２ｂによる返却フラグの値の変更が行われた後、エラー容量格納部４１１のポインタ総数と、ＰＴＲ返却監視フラグ部４１２で未返却と設定されている返却フラグ数とを比較する。その比較により、未返却ＰＴＲ比較部４１３は、ポインタ総数と返却フラグ数が一致したか否かをＰＴＲ返却処理部３１２ｄに通知する。その通知により、ＰＴＲ返却処理部３１２ｄは、ポインタ総数と返却フラグ数が一致するか否か判定する（Ｓ３４）。それらが一致すると判定した場合（Ｓ３４のＹｅｓ）、ＰＴＲ返却処理部３１２ｄは、ＰＴＲ返却監視フラグ部４１２を参照し、未返却を表す返却フラグのポインタ値を取得して、取得したポインタ値を、Ｆｒｅｅ  ＰＴＲ  ＲＡＭ３１３ｂに書き込む（Ｓ３５）。そのポインタ値の書き込みにより、対応するポインタを返却した後、リード制御部３１２ｂ、復旧制御回路４０１が実行する一連の処理が終了する。
【００６２】
ここで、図６〜図１３Ｂを参照し、上記のようなリード制御回路３１２及びページ制御回路３１３の復旧制御回路４０１により行われる、エラーの発生によるメモリリークへの対応について具体的に説明する。
【００６３】
図６は、第１のマッパに入力されるセグメント、及び第１のマッパから出力されるパケットのシーケンス例を説明する図である。図６において、「ＣＨ０」〜「ＣＨ３」はそれぞれチャネル番号が０〜３のチャネルを表し、それらのシンボル列に続くハイフンと数字は、対応するチャネルのデータが入力、或いは出力される順番を表している。それにより、例えば「ＣＨ０−１」はチャネル番号が０のデータのなかで１番目に入力、或いは出力されるデータを表している。
【００６４】
図７Ａ〜図１３Ｂは、図６に表すようにセグメントの入力、及びパケットの出力が行われる場合において、Ｆｒｅｅ  ＰＴＲ  ＲＡＭ３１３ｂ、ライトポインタ制御テーブル、Ｌｉｎｋ  Ｌｉｓｔ  ＲＡＭ３１３ａ、パケットバッファ３１４、リードポインタ制御テーブル、容量監視部４０２、ＰＴＲ返却監視フラグ部４１２の内容の変化を抜粋して表した説明図である。図７Ａ及び図７Ｂは、Ｆｒｅｅ  ＰＴＲ  ＲＡＭ３１３ｂの内容変化を説明する図である。図８Ａ及び図８Ｂは、ライトポインタ制御テーブルの内容変化、図９Ａ及び図９Ｂは、Ｌｉｎｋ  Ｌｉｓｔ  ＲＡＭ３１３ａの内容変化、図１０Ａ及び図１０Ｂは、パケットバッファ３１４の内容変化、図１１Ａ及び図１１Ｂは、リードポインタ制御テーブルの内容変化、図１２Ａ及び図１２Ｂは、容量監視部４０２の内容変化、図１３Ａ及び図１３Ｂは、ＰＴＲ返却監視フラグ部４１２の内容変化をそれぞれ説明する図である。図７Ａ〜図１３Ｂにおいて、「ＰＴＲ０」〜「ＰＴＲ１５」はそれぞれ異なるポインタ値を表している。図１３Ａ及び図１３Ｂにおいて、「返却」は返却を表す値が設定された返却フラグ、「未返却」は未返却を表す値が設定された返却フラグ、にそれぞれ相当する。
【００６５】
ここでは便宜的に、時刻ｔ０では、Ｆｒｅｅ  ＰＴＲ  ＲＡＭ３１３ｂ、ライトポインタ制御テーブルはそれぞれ図７Ａ及び図８Ａに表すような内容を想定している。Ｌｉｎｋ  Ｌｉｓｔ  ＲＡＭ３１３ａ、パケットバッファ３１４、リードポインタ制御テーブル、容量監視部４０２、ＰＴＲ返却監視フラグ部４１２にはそれぞれ、データは格納されていないと想定している。容量監視部４０２に格納された「０」は、対応するチャネルのポイント総数が０であることを表している。エラーは時刻ｔ５におけるＬｉｎｋ  Ｌｉｓｔ  ＲＡＭ３１３ａからのポインタ値の読み出し時に検出されたものと想定、具体的にはポインタ値ＰＴＲ４がエラーによってポインタ値ＰＴＲ１２と読み出されたものと想定している。また、理解を容易とするために、１セグメントは１パケットのデータ量、つまり１セグメントは１パケットに対応すると想定し、パケットバッファ３１４は１６ポインタに分割されていると想定することにより、実際より大幅に簡略化している。
【００６６】
そのエラー検出により、パケットバッファ３１４のＰＴＲ０、ＰＴＲ４、ＰＴＲ８、及びＰＴＲ９は返却できなくなる（図９Ａ、図１０Ａ）。ＰＴＲ返却監視フラグ部４１２の各返却フラグは未返却を表すものとされる（図１３Ａ）。時刻ｔ５のとき、容量監視部４０４のチャネル番号０のポインタ総数は４である。このため、エラー容量格納部４１１には４が格納される。
【００６７】
時刻ｔ１７のとき、ＰＴＲ返却監視フラグ部４１２の返却フラグのなかで未返却を表すものは４つとなる（図１３Ｂ）。このため、未返却を表す返却フラグの数はエラー容量格納部４１１に格納されたポインタ総数と一致する。この結果、時刻ｔ１８では、返却フラグが未返却を表すポインタは返却されることとなる。
【００６８】
なお、本実施形態では、Ｌｉｎｋ  Ｌｉｓｔ  ＲＡＭ３１３ａからのポインタ値の読み出しにおけるエラーに対応するようにしているが、別の場所で発生したエラーにも対応できるようにしても良い。また、本実施形態を適用したＡＤＭ１０は、ＱｏＳ制御（受信したデータの送信タイミングの調整）、及びデータ変換（セグメントからパケット、及びパケットからセグメントへの変換）の両方を行うようになっている。本実施形態は、ＱｏＳ制御、及びデータ変換のうちの一方のみを行うノードに適用しても良い。本実施形態は、記憶装置を用いてデータを一時的に保存し中継する中継装置に幅広く適用することができる。データ変換については、上記のようなものに限定されるものではない。
【図１】
2012144041.tif 000003
【図２】
2012144041.tif 000004
【図３】
2012144041.tif 000005
【図４】
2012144041.tif 000006
【図５Ａ】
2012144041.tif 000007
【図５Ｂ】
2012144041.tif 000008
【図５Ｃ】
2012144041.tif 000009
【図５Ｄ】
2012144041.tif 000010
【図５Ｅ】
2012144041.tif 000011
【図５Ｆ】
2012144041.tif 000012
【図５Ｇ】
2012144041.tif 000013
【図６】
2012144041.tif 000014
【図７Ａ】
2012144041.tif 000015
【図７Ｂ】
2012144041.tif 000016
【図８Ａ】
2012144041.tif 000017
【図８Ｂ】
2012144041.tif 000018
【図９Ａ】
2012144041.tif 000019
【図９Ｂ】
2012144041.tif 000020
【図１０Ａ】
2012144041.tif 000021
【図１０Ｂ】
2012144041.tif 000022
【図１１Ａ】
2012144041.tif 000023
【図１１Ｂ】
2012144041.tif 000024
【図１２Ａ】
2012144041.tif 000025
【図１２Ｂ】
2012144041.tif 000026
【図１３Ａ】
2012144041.tif 000027
【図１３Ｂ】
2012144041.tif 000028
【図１４】
2012144041.tif 000029
【図１５】
2012144041.tif 000030
【手続補正書】
【提出日】平成26年6月3日(2014.6.3)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
記憶装置を複数の単位領域に分割し、チャネルが指定されたデータを受信した場合に、該複数の単位領域のなかで未使用の単位領域を割り当て、該割り当てた単位領域を用いて該データの送信タイミングの調整、及び該データの変換のうちの少なくとも一つを行う中継装置において、
前記記憶装置で使用中の単位領域の領域数を前記チャネル毎に計数する領域数計数手段と、
前記データを読み出すべき単位領域が特定できないエラーを検出するエラー検出手段と、
前記エラー検出手段がエラーを検出した場合に、該エラーが検出されたチャネルについて前記領域数計数手段が計数していた領域数を保存する保存手段と、
前記エラー検出手段がエラーを検出した後、前記記憶装置の複数の単位領域のなかで未使用となっている単位領域を特定する領域特定手段と、
前記領域特定手段が特定している未使用の単位領域の数が、前記保存手段が保存していた領域数と一致した場合に、前記領域特定手段が特定している未使用の単位領域についての割り当てを無効とするエラー制御手段と、
を具備することを特徴とする中継装置。
【請求項２】
請求項１記載の中継装置であって、
前記保存手段が前記領域数を保存した後、前記領域数計数手段に、前記エラーが検出されたチャネルについて前記領域数計数手段が計数していた領域数をクリアさせるリセット手段と、
前記エラー制御手段が前記割り当てを無効とした単位領域を、前記割り当てが可能である未使用の単位領域として開放する領域開放手段と、
を更に具備することを特徴とする中継装置。
【請求項３】
請求項２記載の中継装置であって、
前記保存手段は、前記領域開放手段による開放が行われる前に再度、前記エラー検出手段がエラーを検出した場合、保存している領域数に、該エラーが検出されたチャネルについて前記領域数計数手段が計数していた領域数を加算して該保存している領域数を更新し、
前記領域特定手段は、前記領域開放手段による開放が行われる前に再度、前記エラー検出手段がエラーを検出した場合、前記記憶装置の複数の単位領域のなかで未使用となっている単位領域の特定を初めから行う
ことを特徴とする中継装置。
【請求項４】
記憶装置を複数の単位領域に分割し、チャネルが指定されたデータを受信した場合に、該複数の単位領域のなかで未使用の単位領域を割り当て、該割り当てた単位領域を用いて該データの送信タイミングの調整、及び該データの変換のうちの少なくとも一つを行う中継装置に実行させる復旧方法であって、
前記記憶装置で使用中の単位領域の領域数を前記チャネル毎に計数し、
前記データを読み出すべき単位領域が特定できないエラーが検出された場合に、該エラーが検出されたチャネルを対象チャネルとし、該対象チャネルで計数していた領域数を第１の領域数として保存し、
前記エラーを検出した後、前記記憶装置の複数の単位領域のなかで未使用となっている単位領域の特定を行い、
該特定している未使用の単位領域の数が前記第１の領域数と一致した場合に、該未使用の単位領域を全て開放する、ことを特徴とする復旧方法。
【手続補正２】
【補正対象書類名】明細書
【補正対象項目名】００１４
【補正方法】変更
【補正の内容】
【００１４】
本発明を適用した１システムでは、記憶装置を複数の単位領域に分割し、チャネルが指定されたデータを受信した場合に、該複数の単位領域のなかで未使用の単位領域を割り当て、該割り当てた単位領域を用いて該データの送信タイミングの調整、及び該データの変換のうちの少なくとも一つを行う。そのために、記憶装置で使用中の単位領域の領域数をチャネル毎に計数する領域数計数手段と、データを読み出すべき単位領域が特定できないエラーを検出するエラー検出手段と、エラー検出手段がエラーを検出した場合に、該エラーが検出されたチャネルについて領域数計数手段が計数していた領域数を保存する保存手段と、エラー検出手段がエラーを検出した後、記憶装置の複数の単位領域のなかで未使用となっている単位領域を特定する領域特定手段と、領域特定手段が特定している未使用の単位領域の数が、保存手段が保存していた領域数と一致した場合に、領域特定手段が特定している未使用の単位領域についての割り当てを無効とするエラー制御手段と、を具備する。
【国際調査報告】
2012144041.tif 000031
2012144041.tif 000032
2012144041.tif 000033
2012144041.tif 000034