(57)【特許請求の範囲】
【請求項１】
パケットを一時的に保持するための複数のセグメントを含むパケットバッファと、
前記複数のセグメントのそれぞれについて正常性を確認済か否かを示す情報を前記パケットバッファとは異なる記憶領域に保持するセグメント情報保持部と、
本装置において伝送すべきパケットを前記セグメントへ格納するパケット書込部と、
パケットが格納されたセグメントについてその正常性を確認済であることを示す情報を前記セグメント情報保持部へ格納するセグメント情報更新部と、
を備え、
前記パケット書込部は、前記セグメント情報保持部を参照して、パケットを格納可能な空きセグメントが正常性を確認済のセグメントか、正常性を未確認のセグメントかを識別し、前記空きセグメントのうち正常性を未確認のセグメントを、パケットを格納すべきセグメントとして選択することを特徴とする伝送装置。
【請求項２】
外部装置から送信されたパケットを所定時間以上受信しない場合に、本伝送装置におけるパケット伝送状態を監視するためのパケットである監視パケットを生成する監視パケット生成部をさらに備え、
前記パケット書込部は、前記外部装置から送信されたパケットと前記監視パケットの両方を、前記空きセグメントのうち正常性を未確認のセグメントへ格納することを特徴とする請求項１に記載の伝送装置。
【請求項３】
正常性を確認済のセグメント数を保持するカウンタと、
あるセグメントについてその正常性を確認済であることを示す情報が前記セグメント情報保持部へ格納された場合、前記カウンタが示すセグメント数を増加させるカウンタ更新部と、
をさらに備えることを特徴とする請求項１または２に記載の伝送装置。
【請求項４】
パケットを一時的に保持するための複数のセグメントを含むパケットバッファへ、伝送すべきパケットを格納するパケット書込ステップと、
前記複数のセグメントのそれぞれについて正常性を確認済か否かを示す情報を前記パケットバッファとは異なる記憶領域に保持するセグメント情報保持部へ、パケットが格納されたセグメントについてその正常性を確認済であることを示す情報を格納するステップと、
を伝送装置が実行し、
前記パケット書込ステップは、前記セグメント情報保持部を参照して、パケットを格納可能な空きセグメントが正常性を確認済のセグメントか、正常性を未確認のセグメントかを識別し、前記空きセグメントのうち正常性を未確認のセグメントを、パケットを格納すべきセグメントとして選択するステップを含むことを特徴とする伝送装置における正常性確認方法。
【発明の詳細な説明】
【技術分野】
【０００１】
この発明は、データ通信技術に関し、特に、通信パケットを伝送する伝送装置とその正常性確認方法に関する。
【背景技術】
【０００２】
近年、高速インターネットが普及し、また電話網のＩＰ化が進展している。これに伴い、イーサネットフレームやＩＰパケット（以下、これらを総称して単に「パケット」とも呼ぶ。）を通信網において伝送する伝送装置、例えばレイヤ２スイッチ・レイヤ３スイッチ・ルータ等における処理の高速化も急速に進展している。
【０００３】
これらの伝送装置には装置内部にパケットデータを保持するためのメモリ（以下、「パケットバッファ」とも呼ぶ。）が設けられる。これまでの伝送装置では、大容量のメモリを一定の単位領域（以下、「セグメント」とも呼ぶ。）へ分割し、入力ポートで受け付けたパケットデータをセグメントへ書き込むことでパケットデータを保持していた。また伝送装置はパケットバッファからパケットデータを読み出すスケジューラを具備し、パケットを蓄積したキューの先頭のパケットを読み出して出力ポートから送出する。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開２００５−１３０３６６号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
伝送装置には高い信頼性が求められるが、大気中の中性子線によるソフトエラーに起因するメモリエラーの発生は回避が困難であり、パケットバッファの正常性を正確に把握する必要がある。そこで伝送装置では、パケットバッファへのパケット書き込み時に誤り検出符号をデータに付加しておき、パケットバッファからのパケット読出し時に誤り検出符号にもとづき正常性を確認することでメモリエラーの発生有無やエラー訂正を実行する。
【０００６】
ところでパケットバッファにおいてパケットの書込先となるセグメントは、書込時点でのセグメントの空き状況によって決まる。その一方、パケットバッファにおいてパケットの読出し元となるセグメントは、読込み時点でのスケジューラの状態によって決まる。したがって、パケットバッファへのパケットデータの書き込みと読込みは、本質的にパケットバッファに対するランダムアクセスとして実行されていた。例えば、あるセグメントにはパケットデータが頻繁に書き込まれる一方、別のセグメントにはパケットデータが低頻度にしか書き込まれないこともあった。そのため、パケットバッファの各セグメントに対して正常性確認が行われた否かを識別することは困難であった。
【０００７】
本発明は、こうした課題に鑑みてなされたものであり、その主たる目的は、パケットバッファの各セグメントに対して正常性確認が行われた否かの識別を支援する技術を提供することである。
【課題を解決するための手段】
【０００８】
上記課題を解決するために、本発明のある態様の伝送装置は、パケットを一時的に保持するための複数のセグメントを含むパケットバッファと、複数のセグメントそれぞれについて正常性を確認済か否かを示す情報をパケットバッファとは異なる記憶領域に保持するセグメント情報保持部と、本装置において伝送すべきパケットを１以上のセグメントへ格納するパケット書込部と、パケットが格納されたセグメントについてその正常性を確認済であることを示す情報をセグメント情報保持部へ格納するセグメント情報更新部と、を備える。
【０００９】
本発明の別の態様は、伝送装置における正常性確認方法である。この方法は、パケットを一時的に保持するためのパケットバッファに設けられた１以上のセグメントへ、伝送すべきパケットを格納するステップと、複数のセグメントそれぞれについて正常性を確認済か否かを示す情報をパケットバッファとは異なる記憶領域に保持するセグメント情報保持部へ、パケットが格納されたセグメントについてその正常性を確認済であることを示す情報を格納するステップと、を備える。
【００１０】
なお、以上の構成要素の任意の組合せ、本発明の表現を装置、方法、システム、プログラム、プログラムを格納した記録媒体などの間で変換したものもまた、本発明の態様として有効である。
【発明の効果】
【００１１】
本発明によれば、パケットバッファの各セグメントに対して正常性確認が行われた否かの識別を支援できる。
【図面の簡単な説明】
【００１２】
【図１】実施の形態の通信システムの構成を示す図である。
【図２】図１の伝送装置の機能構成を示すブロック図である。
【図３】伝送装置の記憶領域の構成を模式的に示す図である。
【図４】図３の正常性監視部を詳細に示すブロック図である。
【図５】伝送装置におけるパケット受信時の動作を示すフローチャートである。
【図６】図５におけるＳ２０の格納セグメント決定処理を詳細に示すフローチャートである。
【図７】図６におけるＳ４６のパケット格納処理を詳細に示すフローチャートである。
【図８】図７におけるＳ５４の正常性フラグ設定処理を詳細に示すフローチャートである。
【図９】伝送装置におけるパケット送信時の動作を示すフローチャートである。
【発明を実施するための形態】
【００１３】
実施の形態の伝送装置は、パケットバッファ内の各セグメントに対して正常性の確認を実施したか否かを示す情報が記録される管理テーブルを、パケットバッファとは物理的に異なるメモリ内に保持する。そして、各セグメントに対してパケットが書き込まれる際に、それぞれの書込セグメントへの正常性確認を実施した旨を記録する。これにより、伝送装置の保守（運用）担当者が、パケットバッファの各セグメントに対して正常性確認が行われた否かを容易に識別できるようにする。
【００１４】
図１は、実施の形態の通信システムの構成を示す。通信システム１００において、伝送装置１０は、所定の伝送路を介して他の伝送装置である他伝送装置１２やユーザ端末１４と接続され、他伝送装置１２とともにＬＡＮ・ＷＡＮ等の通信網を構成する。伝送装置１０は、他伝送装置１２やユーザ端末１４から送出されたパケットを受信する。そして、パケットの設定内容（ＭＡＣアドレスやＩＰアドレス等）に基づいて他伝送装置１２やユーザ端末１４へ当該パケットを中継する。
【００１５】
図２は、図１の伝送装置１０の機能構成を示すブロック図である。伝送装置１０は、入力ポート２０と、出力ポート２２と、パケットバッファ２４と、管理テーブル２６と、方路決定部２８と、パケット書込部３０と、パケット読出し部３４と、監視パケット生成部３８と、監視パケット廃棄部４０と、正常性監視部４２を備える。
【００１６】
本明細書のブロック図において示される各ブロックは、ハードウェア的には、コンピュータのＣＰＵやメモリをはじめとする素子や機械装置で実現でき、ソフトウェア的にはコンピュータプログラム等によって実現されるが、ここでは、それらの連携によって実現される機能ブロックを描いている。したがって、これらの機能ブロックはハードウェア、ソフトウェアの組合せによっていろいろなかたちで実現できることは、当業者には理解されるところである。
【００１７】
入力ポート２０は、他伝送装置１２やユーザ端末１４から伝送路へ送出されたパケットを受信する通信ポートである。出力ポート２２は、他伝送装置１２やユーザ端末１４へ伝送すべきパケットを伝送路へ送出する通信ポートである。なお入力ポート２０および出力ポート２２は説明の簡明化のため別個に示しているが、物理的には１つの通信ポートにおいて入力ポート２０と出力ポート２２の両方の機能が実装されてもよい。
【００１８】
以下の説明では、適宜図３を参照して説明する。図３は、伝送装置１０の記憶領域の構成を模式的に示す。
パケットバッファ２４は、パケットが一時的に格納される記憶領域である。パケットバッファはセグメントと呼ばれる管理単位に分割されている。複数のセグメントのそれぞれはセグメント番号で識別される。各セグメントに格納可能なデータ長を以下「セグメント長」とも呼ぶ。また各セグメントには誤り検出符号の格納領域と、パケットデータの格納領域が設けられる。
【００１９】
管理テーブル２６は、伝送装置１０内部のキューを管理するための情報を保持する記憶領域である。このキューは、伝送装置１０内部でのパケットの論理的な伝送順序を管理する単位であり、１つの出力ポート２２に対して１以上のキューが割り当てられる。例えば、パケットに設定された宛先ＭＡＣアドレスと送信元ＭＡＣアドレスの組み合わせごとにキューが設定されて、当該パケットを出力すべき出力ポート２２へ割り当てられてもよい。後述するように、論理的にキューに格納されるパケットは、物理的にはパケット長に応じて１以上のセグメントへ適宜分割して格納される。管理テーブル２６は、キュー管理テーブル５０と、空きセグメント先頭ポインタ５２と、空きセグメント末尾ポインタ５４と、キュー先頭ポインタテーブル５６と、キュー末尾ポインタテーブル５８を含む。
【００２０】
キュー管理テーブル５０は、複数のセグメントのそれぞれにおけるパケット格納状況を保持する記憶領域である。キュー管理テーブル５０は、パケットバッファ２４とは物理的に異なるメモリ内に設けられる。具体的にキュー管理テーブル５０は、パケットバッファ２４のセグメント数と同じレコード数（言い換えればアドレス数）を有し、キュー管理テーブル５０の各レコードはパケットバッファ２４の各セグメントと対応づけられている。本実施の形態では、キュー管理テーブル５０の各レコードはパケットバッファ２４の各セグメント番号と対応づけられており、セグメント番号により識別される。キュー管理テーブル５０の各レコードには、対応するセグメントに対して正常性確認が行われたか否かを示す情報である正常性確認フラグの格納領域と、対応するセグメントに格納されたパケット長の格納領域と、当該レコードの次に参照されるべきレコードのアドレスを示すポインタ（以下、「次ポインタ」とも呼ぶ。）の格納領域が含まれる。
【００２１】
本実施の形態の正常性確認フラグは、セグメントの正常性を確認済であることを示す値、もしくは、セグメントの正常性を未確認であることを示す値が設定される。具体的には１ビットの「０」もしくは「１」が設定されることとする。また次ポインタを保持することにより、１パケットが格納される複数セグメント、または複数のパケット間の順序性を管理する。
【００２２】
空きセグメント先頭ポインタ５２は、パケットが未格納のセグメント（以下、「空きセグメント」とも呼ぶ。）領域の先頭位置を示すポインタであり、具体的には、先頭の空きセグメントに対応するキュー管理テーブル５０のアドレスを示す。空きセグメント末尾ポインタ５４は、空きセグメント領域の末尾位置を示す示すポインタであり、具体的には、最後の空きセグメントに対応するキュー管理テーブル５０のアドレスを示す。
【００２３】
キュー先頭ポインタテーブル５６は、複数のキューそれぞれのキュー先頭ポインタを格納する記憶領域である。キュー先頭ポインタは、各キューに割り当てられたパケットが格納されたセグメントの先頭位置を示すポインタであり、言い換えれば、各キューに割り当てられたパケットを保持する先頭のセグメントに対応するキュー管理テーブル５０のアドレスを示す。キュー末尾ポインタテーブル５８は、複数のキューそれぞれのキュー末尾ポインタを格納する記憶領域である。キュー末尾ポインタは、各キューに割り当てられたパケットが格納されたセグメントの末尾位置を示すポインタであり、言い換えれば、各キューに割り当てられたパケットを保持する最後のセグメントに対応するキュー管理テーブル５０のアドレスを示す。
【００２４】
図２に戻り、方路決定部２８は、入力ポート２０で受け付けられたパケットについて、そのパケットに設定されたアドレス情報にもとづいてパケットを出力すべき出力ポート２２とキューを決定する。パケットの伝送処理において蓄積された学習情報を参照しても出力ポートを一意に決定できない場合、またはパケットの種別がマルチキャストもしくはブロードキャストの場合は複数のキューが選択される。なお、ここでの出力ポートは物理的な出力ポート２２だけでなく、伝送装置１０内に論理的に構成された出力ポートも含む。方路決定部２８の決定結果を示すデータは、パケットデータとともにパケット書込部３０へ転送される。以下では、外部から受け付けられたオリジナルのパケットデータと、方路決定部２８の決定結果を示すデータの両方を含んで単にパケットと呼ぶこととする。
【００２５】
パケット書込部３０は、方路決定部２８からパケットを受け付けて、方路決定部２８により選択されたキューにおいてパケットバッファの領域確保および当該領域へのパケットデータの書き込みを実行する。このときパケット書込部３０は、パケットデータを書き込むべきセグメントとして、正常性確認フラグが正常性未確認を示すセグメントを選択する。具体的には、後述の基準保持部６０を参照して、その基準保持部６０に保持された正常性確認済であることを示す基準値が未設定のセグメントを選択する。
【００２６】
パケット書込部３０は誤り検出符号生成部３２を含む。誤り検出符号生成部３２は、各パケットデータに対する誤り検出符号（例えばパリティ、ハミング符号、ＲＳ（Reed Solomon）符号）を生成する。パケット書込部３０は、誤り検出符号生成部３２により生成された誤り検出符号をパケットデータに付加した上で当該パケットデータをパケットバッファへ書き込む。
【００２７】
パケット読出し部３４は、複数の出力ポート２２に対応する図示しない複数のスケジューラと誤り検出符号検査部３６を含む。各スケジューラは、自身が予め対応づけられた出力ポート２２に割り当てられたキューを一つ選択して、そのキューの先頭のパケットをパケットバッファから読み出す。誤り検出符号検査部３６は、スケジューラにより読み出されたパケットの検査処理を実行する。例えば、読み出されたパケットに付加された誤り検出符号に基づいてパケットバッファのメモリエラーの有無を判定し、誤り訂正を行う。スケジューラは、誤り検出符号検査部３６によるパケットの検査後、そのパケットを出力ポート２２から出力させる。
【００２８】
なお誤り検出符号検査部３６は、メモリエラーの存在を検出した場合、その旨をログファイル等、所定の記憶領域へ記録してもよい。また、メモリエラーが発生した旨を示すアラート情報を所定の外部装置へ通知してもよい。
【００２９】
監視パケット生成部３８は、パケット書込部３０における方路決定部２８からのパケット受付状況を監視する。監視パケット生成部３８は、予め定められた期間以上、パケット書込部３０においてパケットが受け付けられないことを検出すると、伝送装置１０内部でのパケット伝送状況を監視するためのパケット（以下、「監視パケット」とも呼ぶ。）を生成してパケット書込部３０へ送出する。この監視パケットには、外部から受け付けられたパケットと区別するための所定の識別データが設定される。監視パケットは、外部から受け付けられたパケットと同様にパケットバッファ２４へ格納されてパケット読出し部３４により読み出される。
【００３０】
パケット読出し部３４（のスケジューラ）は、パケットバッファ２４から読み出したパケットに、監視パケットであることを示す識別データが設定されていた場合、当該パケットを出力ポート２２へ送出することなく、監視パケット廃棄部４０へ送出する。監視パケット廃棄部４０は、パケット読出し部３４より受け付けた監視パケットを廃棄する。
【００３１】
正常性監視部４２は、パケットバッファ２４の各セグメントの正常性を監視する。図４は、図３の正常性監視部４２を詳細に示すブロック図である。正常性監視部４２は、基準保持部６０と、確認状況保持部６２と、確認フラグ更新部６４と、確認状況更新部６６と、確認状況通知部６８と、基準更新部７０を含む。
【００３２】
基準保持部６０は、キュー管理テーブル５０の正常性確認フラグに設定されるべき値の基準、すなわち、セグメントの正常性を確認済かもしくは未確認かを識別するための情報を保持する。実施の形態では正常性確認済であることを示す基準値を保持し、具体的には１ビットの「０」もしくは「１」のいずれかを基準値として保持することとする。
【００３３】
確認状況保持部６２は、キュー管理テーブル５０において正常性確認フラグが正常性確認済を示す値に設定されたレコード数を保持する。言い換えれば、キュー管理テーブル５０における複数の正常性確認フラグのうち正常性確認済を示す値が設定された数を保持するとも言え、パケットバッファ２４における正常性確認済のセグメント数を保持するとも言える。
【００３４】
確認フラグ更新部６４は、パケット書込部３０がパケットバッファ２４のセグメントへパケットデータを書き込んだことを検出すると、そのセグメントに対応するキュー管理テーブル５０の正常性確認フラグを、正常性確認済を示す値へ更新する。例えば、正常性確認済を示す値が「１」、未確認を示す値が「０」である場合、正常性確認フラグを０から１へ更新する。
【００３５】
確認状況更新部６６は、キュー管理テーブル５０に格納された各セグメントの正常性確認フラグを監視する。確認状況更新部６６は、正常性確認フラグが正常性未確認を示す値から確認済を示す値へ更新されたことを検出すると、確認状況保持部６２に保持された正常性確認済のセグメント数をインクリメントする。
【００３６】
確認状況通知部６８は、確認状況保持部６２に保持された値が、パケットバッファ２４の全セグメント数に達した場合、全セグメントの正常性確認が完了した旨の情報を所定の外部装置へ通知する。また、その旨をログファイル等、所定の記憶領域へ記録してもよい。
【００３７】
基準更新部７０は、確認状況保持部６２に保持された値が、パケットバッファ２４の全セグメント数に達した場合、基準保持部６０に保持された基準値を反転させる。例えば、それまでの正常性確認済を示す基準値が「１」であった場合、その基準値を反転させた「０」を新たに正常性確認済を示す基準値として確認状況保持部６２を上書き更新する。それとともに基準更新部７０は、確認状況保持部６２に保持された正常性確認済のセグメント数を０に戻す。
【００３８】
以上の構成による伝送装置１０の動作を以下説明する。
図５は、伝送装置１０の動作を示すフローチャートである。同図はパケット受信時の動作を示している。入力ポート２０において他伝送装置１２やユーザ端末１４からのパケット（以下、「外部パケット」とも呼ぶ。）が受信されると（Ｓ１０のＹ）、方路決定部２８はその外部パケットの内容に基づいて出力ポートおよびキューを決定する（Ｓ１２）。外部パケットの受信がなく（Ｓ１０のＮ）、所定時間以上受信がなければ（Ｓ１４のＹ）、監視パケット生成部３８は監視パケットを生成する（Ｓ１６）。先の外部パケットの受信から所定時間が経過していなければ（Ｓ１４のＮ）、以下のフローはスキップされる。
【００３９】
パケット書込部３０は、外部パケットもしくは監視パケットの長さを予め定められたセグメント長で除算し端数を切り上げた値を書込セグメント数として算出する。そして、空きセグメント末尾ポインタの値から空きセグメント先頭ポインタの値を減じた値を空きセグメント数として算出する。空きセグメント数が書込セグメント数以上である場合、すなわちパケットを格納可能な空きセグメントが存在する場合（Ｓ１８のＹ）、格納セグメント決定処理が実行される（Ｓ２０）。空きセグメント数が書込セグメント数未満の場合（Ｓ１８のＮ）、パケット書込部３０はパケットを廃棄する（Ｓ２２）。
【００４０】
図６は、図５におけるＳ２０の格納セグメント決定処理を詳細に示すフローチャートである。パケット書込部３０は、空きセグメント先頭ポインタ５２が指すキュー管理テーブル５０のアドレス（以下＜Ａ＞）の正常性確認フラグを読み出す。正常性確認フラグが未確認を示す場合（Ｓ３２のＮ）、パケット書込部３０は＜Ａ＞のセグメント番号をパケットを格納するセグメントの番号（以下＜Ｃ＞）として取得する。パケット書込部３０は、空きセグメント先頭ポインタの値をキュー管理テーブルにおける＜Ａ＞の次ポインタ値で上書き更新する（Ｓ３６）。そしてパケット格納処理が実行される（Ｓ４６）。
【００４１】
＜Ａ＞の正常性確認フラグが確認済を示す場合（Ｓ３２のＹ）、パケット書込部３０はキュー管理テーブル５０において＜Ａ＞の次ポインタが指すアドレス（以下＜Ｂ＞）の正常性確認フラグを読み出す（Ｓ３８）。＜Ｂ＞の正常性確認フラグも正常性確認済を示す場合（Ｓ４０のＹ）、Ｓ３８に戻り、＜Ｂ＞の次ポインタが指すアドレスの正常性確認フラグを読み出すことを繰り返す。＜Ｂ＞の正常性確認フラグが正常性未確認を示す場合（Ｓ４０のＮ）、パケット書込部３０は、＜Ｂ＞のセグメント番号をパケットを格納するセグメントの番号（以下＜Ｃ＞）として取得する（Ｓ４２）。パケット書込部３０は、＜Ａ＞の次ポインタ値を、＜Ｂ＞の次ポインタ値で上書き更新する（Ｓ４４）。そしてパケット格納処理が実行される（Ｓ４６）。
【００４２】
図７は、図６におけるＳ４６のパケット格納処理を詳細に示すフローチャートである。パケット書込部３０は、＜Ｃ＞が示すキュー管理テーブル５０のアドレスへパケット長を記録し（Ｓ５０）、＜Ｃ＞が示すパケットバッファ２４のセグメントへパケットデータを格納する（Ｓ５２）。そして正常性確認フラグの設定処理が実行される（Ｓ５４）。パケット書込部３０は、書込セグメント数をデクリメントする（Ｓ５６）。以下、直前にパケットが書き込まれたパケットバッファ２４のセグメントのアドレスを＜Ｄ＞とする（Ｓ５８）。書込セグメント数が０より大きければ（Ｓ６０のＹ）、パケット書込部３０は、空きセグメント先頭ポインタ５２の指すアドレス（以下＜Ｅ＞）を読出し（Ｓ６２）、空きセグメント先頭ポインタ５２の値をキュー管理テーブル５０における＜Ｅ＞の次ポインタ値で上書き更新する（Ｓ６４）。そして、キュー管理テーブル５０における＜Ｄ＞の次ポインタ値を＜Ｅ＞で上書き更新し（Ｓ６６）、パケットバッファ２４の＜Ｅ＞のセグメントへパケットデータを記録し（Ｓ６８）、Ｓ５４へ戻る。
【００４３】
書込セグメント数が０になると（Ｓ６０のＮ）、パケット書込部３０は、書込セグメントに対応する書込キューの末尾ポインタの指すキュー管理テーブル５０のアドレスの次ポインタ値を＜Ｃ＞で上書き更新する（Ｓ７０）。そして、書込キューの末尾ポインタの値を＜Ｄ＞で上書き更新する（Ｓ７２）。なお図示しないが、パケットバッファ２４へパケットを書き込む際、誤り検出符号生成部３２はそのパケットの誤り検出符号を生成し、パケット書込部３０は誤り検出符号を付加したパケットを書き込む。
【００４４】
図８は、図７におけるＳ５４の正常性フラグ設定処理を詳細に示すフローチャートである。確認フラグ更新部６４は、書込セグメントに対応するキュー管理テーブル５０の正常性確認フラグを、確認済を示す基準値へ更新する（Ｓ８０）。その際に確認状況更新部６６は、キュー管理テーブル５０における確認済を示す基準値が設定されたフラグ数のカウンタ（確認状況保持部６２の保持データ）を逐次インクリメントする。カウンタの値が全セグメント数に到達した場合、言い換えれば、全ての正常性確認フラグが確認済を示す基準値となった場合（Ｓ８２のＹ）、確認状況通知部６８は、全セグメントの正常性確認が完了した旨を所定の外部装置へ通知する（Ｓ８４）。そして、基準更新部７０は、基準保持部６０に保持されたフラグの基準値を反転させる（Ｓ８６）。正常性が未確認のセグメントが残存する場合（Ｓ８２のＮ）、Ｓ８４およびＳ８６はスキップされる。
【００４５】
図９は、伝送装置１０の動作を示すフローチャートである。同図はパケット送信時の動作を示している。パケット読出し部３４のスケジューラは、パケットを送出するべき出力キューを決定し、出力キューの先頭ポインタ値（以下、＜Ｆ＞）を取得する（Ｓ１００）。そしてキュー管理テーブル５０の＜Ｆ＞のレコードからパケット長および次ポインタの値を取得し（Ｓ１０２）、パケット長を予め定められたセグメント長で除算し端数を切り上げた値を読出しセグメント数として算出する（Ｓ１０４）。スケジューラは、パケットバッファの＜Ｆ＞のセグメントからパケットデータを取得し（Ｓ１０６）、読出しセグメント数をデクリメントする（Ｓ１０８）。
【００４６】
読出しセグメント数が０以上の場合（Ｓ１１０のＹ）、スケジューラは、直前にパケットを読み込んだセグメントに対応するキュー管理テーブル５０の次ポインタ値（以下＜Ｇ＞）を取得する（Ｓ１１２）。そしてパケットバッファ２４の＜Ｇ＞からパケットデータを取得し（Ｓ１１４）、Ｓ１０８に戻る。
【００４７】
読出しセグメント数が０になると（Ｓ１１０のＮ）、スケジューラは、直線に読み込んだセグメントの番号（以下＜Ｈ＞）と、空きセグメント末尾ポインタ５４の値（以下＜Ｉ＞）を取得する（Ｓ１１６）。スケジューラは、キュー管理テーブル５０における＜Ｉ＞の次ポインタ値を＜Ｆ＞で上書き更新し（Ｓ１１８）、空きセグメント末尾ポインタ５４の値を＜Ｈ＞で上書き更新する（Ｓ１２０）。そして、１以上のセグメントから取得した１以上のパケットデータを結合することによりオリジナルのパケットを復元して出力ポート２２から出力させる（Ｓ１２２）。なお図示しないが、パケットバッファ２４からパケットが読み込まれた際、誤り検出符号検査部３６は、そのパケットに付加された誤り検出符号にもとづいてメモリエラーの有無を判定し、その判定結果に応じて誤り訂正や外部装置へのアラート通知を実行する。
【００４８】
本実施の形態の伝送装置１０によれば、パケットバッファ２４とは独立したメモリであるキュー管理テーブル５０に正常性確認フラグを設けることによりパケットバッファ２４の各セグメントが正常性確認済か否かを容易に識別可能になる。例えば、伝送装置１０の保守運用者はキュー管理テーブル５０に保持された正常性確認フラグの値を確認することで、正常性を確認済のセグメントおよび未確認のセグメントを容易に識別することができる。
【００４９】
また伝送装置１０によれば、正常性確認済のセグメント数を保持するカウンタ（確認状況保持部６２）を設けることにより、キュー管理テーブル５０の全レコードにアクセスすることなくパケットバッファ２４の正常性確認状況を容易に把握することができる。例えば、伝送装置１０の保守運用者はカウンタの値を確認することで、全セグメントの正常性が確認済か否かを容易に確認できる。なお、全セグメントが確認済となった場合、確認済を示す基準値と未確認を示す基準値とを反転させて、全セグメントを未確認扱いとする。これにより、キュー管理テーブル５０における正常性確認フラグの値をリセットすることなく、正常性確認を継続できる。
【００５０】
また伝送装置１０によれば、パケットを書き込むべきセグメントとして正常性が未確認のセグメントを選択することにより、全セグメントに対する正常性確認を早期に完了させやすくなる。また、外部の装置からの外部パケットが所定時間以上受け付けられない場合は伝送装置１０内部において監視パケットを伝送するため、全セグメントに対する正常性確認の完了までに要する時間の上限を保証することができる。言い換えれば、長期間、正常性を未確認のセグメントが発生することを回避できる。
【００５１】
以上、本発明を実施の形態をもとに説明した。この実施の形態は例示であり、それらの各構成要素や各処理プロセスの組合せにいろいろな変形例が可能なこと、またそうした変形例も本発明の範囲にあることは当業者に理解されるところである。
【００５２】
上記実施の形態では、正常性確認済のセグメント数をカウントし、全セグメントが確認済となった場合、正常性確認フラグの意味の反転処理を実行した。変形例として、図６においてＳ４０のＹとなった場合、正常性確認済であった同図の＜Ｂ＞のアドレスが、空きセグメント末尾ポインタ５４と一致するとき、正常性確認フラグの意味の反転処理を実行してもよい。これにより、全セグメントが未確認扱いとなるため、空きセグメント先頭ポインタ５２が指すアドレスを格納セグメント番号として取得してもよい。
【００５３】
また上記実施の形態では、パケット書込部３０がパケットデータをパケットバッファ２４のセグメントへ書き込んだことを契機として、確認フラグ更新部６４は当該セグメントの正常性確認フラグを確認済へ更新した。変形例として、確認フラグ更新部６４は、パケット読出し部３４がパケットデータを読出し、誤り検出符号検査部３６がメモリエラーの判定を行ったときに正常性確認フラグを確認済へ更新してもよい。
【００５４】
請求項に記載の各構成要件が果たすべき機能は、実施の形態および変形例において示された各構成要素の単体もしくはそれらの連係によって実現されることも当業者には理解されるところである。
【符号の説明】
【００５５】
１０  伝送装置、  ２０  入力ポート、  ２２  出力ポート、  ２４  パケットバッファ、  ２６  管理テーブル、  ２８  方路決定部、  ３０  パケット書込部、  ３２  誤り検出符号生成部、  ３４  パケット読出し部、  ３６  誤り検出符号検査部、  ３８  監視パケット生成部、  ４０  監視パケット廃棄部、  ４２  正常性監視部、  ６０  基準保持部、  ６２  確認状況保持部、  ６４  確認フラグ更新部、  ６６  確認状況更新部、  ６８  確認状況通知部、  ７０  基準更新部、  １００  通信システム。
【図１】
0005620879.tif 000002
【図２】
0005620879.tif 000003
【図３】
0005620879.tif 000004
【図４】
0005620879.tif 000005
【図５】
0005620879.tif 000006
【図６】
0005620879.tif 000007
【図７】
0005620879.tif 000008
【図８】
0005620879.tif 000009
【図９】
0005620879.tif 000010