データ転送装置及びデータ転送システム
【課題】前後のデータの関係から同期ヘッダを正しい値に訂正する。
【解決手段】フレームが分割されたデータに第2の所定ビットの同期ヘッダを付加することによって生成されるブロックを転送するデータ転送装置であって、前記ブロックは、連続して順に転送される第1のブロック、第2のブロック及び第3のブロックを含み、前記データ転送装置は、前記第1のブロックに含まれる第1の同期ヘッダ、前記第2のブロックに含まれる第2の同期ヘッダ及び前記第3のブロックに含まれる第3の同期ヘッダを取得し、前記第2の同期ヘッダが正しい値でない場合、前記第2のブロックが前記第1のブロック及び前記第3のブロックと整合するように、前記第2の同期ヘッダを、前記第1の同期ヘッダと前記第3の同期ヘッダとに基づいて推測できるか否かの第1の判定をし、前記推測された値に前記第2の同期ヘッダを訂正する。
【解決手段】フレームが分割されたデータに第2の所定ビットの同期ヘッダを付加することによって生成されるブロックを転送するデータ転送装置であって、前記ブロックは、連続して順に転送される第1のブロック、第2のブロック及び第3のブロックを含み、前記データ転送装置は、前記第1のブロックに含まれる第1の同期ヘッダ、前記第2のブロックに含まれる第2の同期ヘッダ及び前記第3のブロックに含まれる第3の同期ヘッダを取得し、前記第2の同期ヘッダが正しい値でない場合、前記第2のブロックが前記第1のブロック及び前記第3のブロックと整合するように、前記第2の同期ヘッダを、前記第1の同期ヘッダと前記第3の同期ヘッダとに基づいて推測できるか否かの第1の判定をし、前記推測された値に前記第2の同期ヘッダを訂正する。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、データ転送装置に関し、特に、物理層においてデータを転送するために用いられるデータ(例えば、同期ヘッダ)を修復する技術に関する。
【背景技術】
【0002】
ネットワークノード間のデータ転送において、データ同期のための同期ヘッダ(SyncHeader)が、所定の間隔で挿入されるプロトコルがある。例えば、10ギガビットイーサネット(「イーサネット」は登録商標。以下同じ。)において、64B/66B符号化を用いて、66ビットのブロック毎にデータを伝送する(例えば、特許文献1参照。)。この66ビットのブロックは、2ビットの同期ヘッダ(”01”又は”10”)と、64ビットのペイロードとによって構成される。すなわち、2ビットの同期ヘッダが66ビット毎に挿入される。
【0003】
このため、送信側ノードは、64ビットのデータに2ビットの同期ヘッダを付けて66ビットに符号化する。受信側ノードは、66ビット毎に到着する2ビットの同期ヘッダを見つけ、同期ヘッダの後の64ビットのデータを復号する。また、同期ヘッダの値が”01”の場合は、同期ヘッダの後の64ビットデータはユーザデータであり、同期ヘッダの値が”10”の場合は、同期ヘッダの後の64ビットデータは制御コードを含むデータである(例えば、非特許文献1参照。)。
【先行技術文献】
【特許文献】
【0004】
【特許文献1】特開2005−72714号公報
【非特許文献】
【0005】
【非特許文献1】IEEE 802.3ae
【発明の概要】
【発明が解決しようとする課題】
【0006】
電気信号又は光信号によってネットワークを転送されるデータは、ノイズの影響等によって書き換わることがある。このような物理層におけるデータの誤りは、上位層(データリンク層、ネットワーク層等)における誤り訂正によって修復することはできない。
【0007】
例えば、伝送路上のノイズ等により同期ヘッダが破損し、”00”又は”11”に書き換わった場合、受信側ノードは、ペイロードがユーザデータなのか制御コードを含むデータなのかを判定することができず、受信したデータを正しくデコードできないことから、64ビットのペイロードは廃棄されてしまう。
【0008】
本発明は、同期ヘッダが破損したブロックを受信した場合でも、前後のデータの関係から正しい同期ヘッダの値を推測し、同期ヘッダを訂正することによって、廃棄されていたデータを適正に処理することを目的とする。
【課題を解決するための手段】
【0009】
本発明の代表的な一例を示せば以下の通りである。すなわち、フレームを第1の所定ビットのデータに分割し、前記分割されたデータに第2の所定ビットの同期ヘッダを付加することによって生成されるブロックを転送するデータ転送装置であって、前記データ転送装置の動作を処理するロジックと、転送されるブロックを格納するバッファと、前記データ転送装置へのデータを入出力するインターフェースとを備え、前記ブロックは、連続して順に転送される第1のブロック、第2のブロック及び第3のブロックを含み、前記ロジックは、前記第1のブロックに含まれる第1の同期ヘッダ、前記第2のブロックに含まれる第2の同期ヘッダ及び前記第3のブロックに含まれる第3の同期ヘッダを取得し、前記第2の同期ヘッダが正しい値でない場合、前記第2のブロックが前記第1のブロック及び前記第3のブロックと整合するように、前記第2の同期ヘッダを、前記第1の同期ヘッダと前記第3の同期ヘッダとに基づいて推測できるか否かの第1の判定をし、前記推測された値に前記第2の同期ヘッダを訂正する。
【発明の効果】
【0010】
本発明によると、破損した同期ヘッダを訂正することができ、ブロックの廃棄による有効データの欠損、転送効率の低下を抑えることができる。
【図面の簡単な説明】
【0011】
【図1】本発明の第1の実施の形態のシステムの構成を表す図である。
【図2】本発明の第1の実施の形態のネットワークノードの構成を表すブロック図で ある。
【図3A】本発明の第1実施形態のXGMII上のイーサフレームと10Gbイーサ ネット上のデータ列との変換を説明する図である。
【図3B】本発明の第1実施形態のエンコーダによるエンコードの例を説明する図で ある。
【図4】本発明の第1の実施の形態のエラー訂正処理のフローチャートである。
【図5】本発明の第1の実施形態において同期ヘッダが訂正される状態を説明する図 である。
【図6】本発明の第2の実施の形態のエラー訂正処理のフローチャートである。
【図7】本発明の第2の実施の形態のエラー訂正処理の詳細を示すフローチャートで ある。
【図8】本発明の第2の実施形態において同期ヘッダが訂正される状態を説明する図 である。
【図9】本発明の第2の実施形態において同期ヘッダが訂正される状態を説明する図 である。
【図10】本発明の第2の実施形態において同期ヘッダの訂正が失敗する状態を説明する図である。
【図11】本発明の第2の実施の形態のエラー訂正テーブルを説明する図である。
【図12】本発明が適用されたMPLSネットワークの説明図である。
【発明を実施するための形態】
【0012】
<実施形態1>
図1は、本発明の第1の実施の形態のシステムの構成を表す図である。
【0013】
第1の実施の形態のシステムは、クライアント端末101、105、ネットワークノード102、104及びネットワーク103を備える。
【0014】
クライアント端末101及び105は、ネットワーク103を経由してデータを送受信する計算機であり、プロセッサ、メモリ及びネットワークインターフェースを備える。ネットワークノード102及び104は、クライアントと他のノードとの間、及びノード間でデータを転送するデータ転送装置で、ネットワーク103によって接続されている。なお、ネットワークノード102及び104の詳細な構成は、図2を用いて後述する。
【0015】
ネットワーク103は、複数のネットワークノードによって、指定された宛先アドレスにデータを転送するものである。なお、図1に示すネットワーク103は、2台のネットワークノード102及び104を備えるが、さらに複数のネットワークノードを備えてもよい。ネットワーク103は、いわゆる10ギガビットイーサネットであり、64B/66B符号によって符号化されたデータを伝送する。すなわち、ネットワーク103の物理層において、66ビットのブロック毎にデータが転送され、この66ビットのブロックは、2ビットの同期ヘッダ(SyncHeader)と、64ビットのペイロードとによって構成されている。
【0016】
なお、本発明は、転送されるブロックに含まれるデータの属性を表し、誤り訂正によって訂正不可能なデータを、ブロック中に含む場合に適用可能であるため、ネットワーク103は、同期ヘッダを含むブロックを転送する10ギガビットイーサネットでなくてもよい。
【0017】
図2は、第1の実施の形態のネットワークノード104の構成を表すブロック図である。
【0018】
ネットワークノード104は、ブロック同期部111、デ・スクランブラ112、エラー訂正部113、デコーダ117、エンコーダ118及びスクランブラ119を備える。
【0019】
ブロック同期部111は、ネットワーク側から送信されるシリアルデータ列に66ビット毎に含まれる同期ヘッダの”01”又は”10”パターンを見つけて、ブロックの同期を確立する。
【0020】
デ・スクランブラ112は、ブロックの64ビットのペイロードにデスクランブル処理を行う。
【0021】
エラー訂正部113は、ブロックの同期ヘッダが破損している場合、正しい同期ヘッダの値を推測し、同期ヘッダを訂正する。
【0022】
具体的には、エラー訂正部113は、ブロックの同期ヘッダが破損している場合、前後のブロックの同期ヘッダが、中間ブロックの同期ヘッダを訂正可能な条件を満たしているかを判定する。そして、訂正可能な条件を満たした場合、前後のブロックの同期ヘッダの値を参照することによって、当該中間ブロックの正しい同期ヘッダの値を推測し、当該中間ブロックの同期ヘッダを推測された値に訂正する。
【0023】
このため、エラー訂正部113は、少なくとも前後のブロックを一次的に記憶するバッファ114、前後のブロックの同期ヘッダが、中間ブロックの同期ヘッダを訂正可能な条件を満たすかを判定する判定部115、及び、前後のブロックの同期ヘッダから推測された値に、中間ブロックの同期ヘッダを訂正する訂正部116を備える。なお、エラー訂正部113によって実行される処理の詳細は、図4を用いて後述する。
【0024】
デコーダ117は、ブロックからペイロードを抽出し、64ビット(8バイト)データへ復号化する。
【0025】
エンコーダ118は、64ビット(8バイト)データに、同期ヘッダを付加し、66ビットのブロックへ符号化する。
【0026】
スクランブラ119は、ブロックのペイロードデータにスクランブル処理を行う。このスクランブル処理によって、転送されるデータのディスパリティが0になるように、データが調整される。
【0027】
ネットワークノード104は、データを送受信するインターフェース(ポート)、データを出力するポートを決定するルーティング部、ネットワークノードの動作を制御するプロセッサ、及び、プロセッサで実行されるプログラム及び当該プログラムの実行に必要なデータを格納するメモリを備える。
【0028】
以上、ネットワークノード104について説明したが、ネットワークノード102も同じ構成及び機能である。
【0029】
図3Aは、XGMII上のイーサフレームと10ギガビットイーサネット上のデータ列との変換を説明する図である。
【0030】
10ギガビットイーサネット上のデータ列305は、XGMII(10 Gigabit Media Independent Interface)上の所定長のイーサフレーム301を8バイト毎に分割して、分割されたデータに2ビットの同期ヘッダを付加することによって、10ギガビットイーサネット上を転送される66ビットのブロックを生成する。
【0031】
具体的には、XGMII上のイーサフレーム301は、その先頭に8ビットの開始コード(S)が設けられ、その末尾に8ビットの末尾コード(T)が設けられ、開始コードと末尾コードとの間にデータ領域が設けられる。また、フレーム間にはインターフレームギャップ(IFG)が設けられる。
【0032】
エンコーダ118は、このイーサフレーム301を、8バイト毎に分割したデータを生成する(302)。このとき、開始コードは8バイト中の1番目又は5番目のバイトだけに割り当て可能である。すなわち、開始コードを含む8バイトのデータは、「SDDDDDDD」又は「IIIISDDD」となる。
【0033】
そして、分割された8バイトのデータを所定のルールに従ってエンコードし、その後、2ビットの同期ヘッダを付与する(303)。8バイトのデータはユーザデータである場合、同期ヘッダ”01”が付与され、8バイトのデータは制御コードを含むデータである場合、同期ヘッダ”10”が付与される。
【0034】
その後、同期ヘッダを除くペイロードのデータをスクランブルして、10ギガビットイーサネット上のデータ列305が生成される。
【0035】
一方、10ギガビットイーサネット上のデータ列305は、デスクランブル処理によって、エンコードされた状態のデータが復元される。その後、同期ヘッダが破損しているか否かが判定され、破損している同期ヘッダが修復される(304、303)。この同期ヘッダの訂正処理は、図4、図5を用いて後述する。この同期ヘッダの訂正処理は、論理回路によるロジックによって実装されてもよく、プロセッサがメモリに格納されたプログラムを実行することによるロジックによって実装されてもよい。
【0036】
同期ヘッダが修復されたデータは、同期ヘッダを外して、8バイトのデータを生成し、8バイト毎にデコードされる(302)。その後、デコードされたデータ結合してパケットを組み立て、イーサフレーム301を再構成する。
【0037】
図3Bは、エンコーダ118によるエンコードの例を説明する図である。
【0038】
前述したように、8バイトのペイロードにユーザデータ(D)のみが含まれる場合、このブロックはデータブロックであり、同期ヘッダは”01”となる。一方、8バイトのペイロードに制御コード(S、T、I等)が含まれる場合、このブロックはコントロールブロックであり、同期ヘッダは”10”となる。
【0039】
コントロールブロックの場合、ペイロードの先頭(すなわち、同期ヘッダの直後)に8ビットの、BlockTypeFieldが設けられる。このBlockTypeFieldは、ブロックに含まれるユーザデータ(D)のエンコードの方法を示す。すなわち、BlockTypeFieldの値によって、ブロックに含まれる制御コードの種類、数、及び位置が決まる。
【0040】
図4は、第1の実施の形態のエラー訂正処理のフローチャートであり、このエラー訂正処理はエラー訂正部113によって実行される。なお、エラー訂正部113は、論理回路によって機能するものであっても、ネットワークノードに備わるプロセッサがメモリに格納されたプログラムを実行することによって機能するものであってもよい。また、このエラー訂正処理は、ブロック同期部111によるブロックの同期、デスクランブラ112によるデスクランブルが確立した後に実行される。
【0041】
まず、同期ヘッダの値によって、同期ヘッダが破損しているか否かを判定する(S101)。具体的には、正しい同期ヘッダは”01”又は”10”であるため、同期ヘッダが、”00”又は”11”であれば、同期ヘッダが破損していると判定できる。
【0042】
次に、バッファ114に格納されている前後のブロックから同期ヘッダを抽出して、抽出された同期ヘッダから、中間ブロックの同期ヘッダの値を推測可能か否かを判定する(S102)。すなわち、前後のブロックの同期ヘッダが、中間ブロックの同期ヘッダを訂正可能な条件を満たすか否かを判定する。具体的には、前ブロックの同期ヘッダが”01”であり、かつ、後ブロックの同期ヘッダが”01”である場合、中間ブロックの同期ヘッダを訂正可能な条件を満たし、その中間ブロックの同期ヘッダの値を推測して訂正することができる。
【0043】
判定の結果、この条件を満たした場合、中間ブロックの同期ヘッダの値は”01”であると推測し、この中間ブロックの同期ヘッダを”01”に訂正する(S103)。
【0044】
これは、図4に示すように、一つのブロックが、パケットの開始を示すコード”S”とパケットの終了を示すコード”T”との両方を含むことはない。また、ブロックの同期ヘッダが”01”である場合、そのブロックは、ペイロードにユーザデータのみを含むデータブロックである。よって、この中間ブロックはデータブロックであると推測することができ、中間ブロックの同期ヘッダを”01”に訂正することができる。
【0045】
一方、前後のブロックの同期ヘッダのいずれかが”01”でない場合、同期ヘッダの値を推測することはできないので、この中間ブロックの同期ヘッダを訂正しない(S104)。なお、破損した同期ヘッダが訂正されない場合、そのブロックのデータを含むイーサフレームを正しく組み立てることができない。このため、上位層(データリンク層、ネットワーク層等)において、この中間ブロックを含むイーサフレームが再送されるように、制御される。
【0046】
次に、図5を用いて、中間ブロックの同期ヘッダの訂正について説明する。
【0047】
処理対象である中間ブロックの同期ヘッダ502が”00”であるので、S101において、この同期ヘッダ502は誤っていると判定される。そこで、バッファに格納されている前後のブロックの同期ヘッダ501及び503を参照する。この場合、前後のブロックの同期ヘッダ501及び503は共に”01”なので、前後のブロックの同期ヘッダ501及び503から、中間ブロックの同期ヘッダが”01”であることを推測可能である。
【0048】
すなわち、本実施の形態では、所定長のイーサネットフレームを分割して生成された66ビットのブロックを、ネットワークノード間で転送するので、転送されるブロックは分割前のイーサネットフレームの性質(前後のブロックのデータとの連続性)をそのまま引き継いでいる。このため、ブロックに含まれるデータ、特に、制御コードの並びには規則性がある。本発明の実施の形態では、この規則性に着目して、ブロックがデータブロックであるか、コントロールブロックであるかを判定して、破損した同期ヘッダを訂正する。
【0049】
このようにして、第1の実施の形態では、中間ブロックの同期ヘッダ502を”01”に訂正することができる。
【0050】
以上説明したように、本発明の第1の実施に形態によると、中間ブロックの同期ヘッダが正しい値でない場合、前後のブロックの同期ヘッダに基づいて、中間ブロックの同期ヘッダの値を推測可能かを判定する。そして、中間ブロックの同期ヘッダの値を推測できる条件を満たす場合、前後のブロックと中間ブロックとが整合するように、中間ブロックの同期ヘッダを訂正する。このため、同期ヘッダが破損したブロックの破棄が減少し、パケットの再送回数を減少することができる。また、パケットの再送信が減るので、伝送路上のトラフィックの増加を抑制することができる。さらに、トラフィックの増加を抑制することによって、ネットワークノードの消費電力を低減することができる。
【0051】
<実施形態2>
次に、本発明の第2の実施の形態について説明する。
【0052】
前述した第1の実施の形態では、中間ブロックの同期ヘッダを訂正するために、前後のブロックの同期ヘッダを用いたが、第2の実施の形態では、前後のブロックの同期ヘッダ及びブロックタイプフィールドを用いる。さらに、予備的に、中間ブロックのブロックタイプフィールドを用いてもよい。
【0053】
なお、第2の実施の形態のシステムの構成及びネットワークノードのハードウェア構成は、前述した第1の実施の形態と同じである。なお、第2の実施の形態において、前述した第1の実施の形態と同じ構成、処理には同じ符号を付し、それらの説明は省略する。
【0054】
第2の実施の形態のネットワークノードは、前述した第1の実施の形態のネットワークノードと比較し、エラー訂正部113の機能が異なる。
【0055】
すなわち、第2の実施の形態のエラー訂正部113は、ブロックの同期ヘッダが破損している場合に、当該ブロックと前後のブロックの同期ヘッダ及びブロックタイプフィールドの値を参照することによって、当該中間ブロックの正しい同期ヘッダの値を推測し、同期ヘッダを訂正する。
【0056】
具体的には、エラー訂正部113は、ブロックの同期ヘッダが破損している場合、前後のブロックの同期ヘッダ及びブロックタイプフィールドが、中間ブロックの同期ヘッダを訂正可能な条件を満たすかを判定する。そして、訂正可能な条件を満たした場合、前後のブロックの同期ヘッダ及びブロックタイプフィールドから推測された値に、中間ブロックの同期ヘッダを訂正する。
【0057】
ここで、ブロックタイプフィールドとは、ブロックに含まれるデータの種別を表す情報であって、転送される66ビットのブロックがコントロールブロックである場合、ペーロードの最初の8ビット(同期ヘッダの直後の1バイト)に割り当てられるデータ領域であり、図3Bに示すように、転送されるデータに含まれるユーザデータのバイト数及び位置、制御コードの内容、数及び位置を表す。すなわち、同期ヘッダが”10"である場合、同期ヘッダの直後の8ビットのデータによって、コントロールブロックに含まれる制御コードを知ることができる。
【0058】
また、第2の実施の形態において、判定部115は、前後のブロックの同期ヘッダ及びブロックタイプフィールドが、中間ブロックの同期ヘッダを訂正可能な条件を満たすかを判定する。訂正部116は、前後のブロックの同期ヘッダ及びブロックタイプフィールドから推測された値に、中間ブロックの同期ヘッダを訂正する。
【0059】
図6は、第2の実施の形態のエラー訂正処理のフローチャートであり、このエラー訂正処理はエラー訂正部113によって実行される。なお、前述した第1の実施の形態と同じく、エラー訂正部113は、論理回路によって機能するものであっても、ネットワークノードに備わるプロセッサがメモリに格納されたプログラムを実行することによって機能するものであってもよい。また、このエラー訂正処理は、ブロック同期部111によるブロックの同期、スクランブラ112によるデスクランブルが確立した後に実行される。
【0060】
まず、前述した第1の実施の形態と同様に、同期ヘッダが破損しているか否かを判定し(S101)、前後のブロックの同期ヘッダから、当該ブロックの同期ヘッダを推測可能か否かを判定し(S102)、中間ブロックの同期ヘッダを、推測された値に訂正する(S103)。
【0061】
一方、S102において、前後のブロックの同期ヘッダが中間ブロックの同期ヘッダを訂正できる条件に一致しないと判定された場合、前後のブロックのブロックタイプフィールドを参照し(S111)、前後のブロックのブロックタイプフィールドから、中間ブロックの同期ヘッダの値を推測可能か、すなわち、前後のブロックの同期ヘッダ及びブロックタイプフィールドが中間ブロックの同期ヘッダを訂正できる条件に一致するか否かを判定する(S112)。その結果、中間ブロックの同期ヘッダの値を推測可能である場合、前後のブロックの同期ヘッダ及びブロックタイプフィールドから、中間ブロックの同期ヘッダの値を推測し、中間ブロックのSyncHeaderを推測された値に訂正する(S113)。
【0062】
なお、S112〜S113の処理の具体的内容は、図7及び図11を用いて説明する。この同期ヘッダの訂正処理は、論理回路によるロジックによって実装されてもよく、前述した第1の実施の形態と同じく、プロセッサがメモリに格納されたプログラムを実行することによるロジックによって実装されてもよい。
【0063】
一方、S112において、中間ブロックの同期ヘッダを訂正可能な条件を満たさないと判定された場合、この中間ブロックの同期ヘッダを訂正しない(S104)。この場合、前述した第1の実施の形態と同様に、そのブロックのデータを含むイーサフレームを正しく組み立てることができないので、この中間ブロックを含むイーサフレームの再送制御がされる。
【0064】
図7は、第2の実施の形態のエラー訂正処理(図6のS112〜S113)の詳細を示すフローチャートである。
【0065】
第2の実施の形態のエラー訂正処理(図6)において、前後のブロックの同期ヘッダによって中間ブロックの同期ヘッダを訂正できないと判定された場合、前後のブロックのブロックタイプフィールドを参照する(S111)。
【0066】
その後、前ブロックの同期ヘッダが”01”であり、かつ、後ブロックの同期ヘッダが”10”であるかを判定する(S121)。前ブロックの同期ヘッダが”01”であり、かつ、後ブロックの同期ヘッダが”10”である場合、さらに、後ブロックのブロックタイプフィールドが”0x33”であるかを判定する(S122)。
【0067】
その結果、前ブロックの同期ヘッダが”01”であり、後ブロックの同期ヘッダが”10”であり、かつ、後ブロックのブロックタイプフィールドが”0x33”である場合、中間ブロックの同期ヘッダを訂正することができる条件を満たす。すなわち、この場合、後ブロックはフレーム先頭(開始コードS)を含むので、処理対象の中間ブロックはフレーム末尾(末尾コードT)を含み、コントロールブロックであると推測できる。よって、中間ブロックの同期ヘッダを訂正するためにS127に進む。
【0068】
一方、前ブロックの同期ヘッダが”01”でなく、又は、後ブロックの同期ヘッダが”10”でない場合、他の条件を満たすかを探索するために、S125に進む。
【0069】
S125において、前ブロックの同期ヘッダが”10”であり、後ブロックの同期ヘッダが”10”であり、さらに、前ブロックのブロックタイプフィールドが”0x87”であり、かつ、後ブロックのブロックタイプフィールドが”0x1e”であるかを判定する(S125、S126)。
【0070】
その結果、前ブロックの同期ヘッダが”10”であり、後ブロックの同期ヘッダが”10”であり、前ブロックのブロックタイプフィールドが”0x87”であり、かつ、後ブロックのブロックタイプフィールドが”0x1e”である場合、中間ブロックの同期ヘッダを訂正することができる条件を満たす。この場合、この前ブロックはフレーム末尾(末尾コードT)を含み、後ブロックはIFGを含む。処理対象の中間ブロックは、前後をIFGに挟まれていることから、IFGを含み、コントロールブロックであると推測できる。よって、中間ブロックの同期ヘッダを訂正するためにS127に進む。
【0071】
S127では、処理対象の中間ブロックのブロックタイプフィールドを参照して、中間ブロックの同期ヘッダを訂正するか否かを判定する。すなわち、前後のブロックの同期ヘッダ及びブロックタイプフィールドから推測された中間ヘッダの同期ヘッダが、中間ブロックのブロックタイプフィールドと整合するか否かを判定する。これは、同期ヘッダが”10”である場合、ブロックタイプフィールドは所定の値しか取り得ないからである。
【0072】
その結果、推測された中間ヘッダの同期ヘッダが、中間ブロックのブロックタイプフィールドと整合する場合、推測された中間ヘッダの同期ヘッダの値が正しいことが確認されたので、S128に進み、中間ブロックの同期ヘッダを”10”に訂正する。
【0073】
一方、推測された中間ヘッダの同期ヘッダが、中間ブロックのブロックタイプフィールドと整合しない場合、推測された中間ヘッダの同期ヘッダの値か、ブロックタイプフィールドの値が誤っている可能性がある。この場合、以下の二つの処理が考えられる。
【0074】
(1)同期ヘッダを訂正する。推測された中間ヘッダの同期ヘッダが、中間ブロックのブロックタイプフィールドと整合しない場合、同期ヘッダの訂正が正しい確率が低い。しかし、ブロックを正しくデコードできる確率を高め、パケット廃棄率を低減するためには、同期ヘッダの訂正が正しい可能性が低くても、同期ヘッダを訂正するとよい。
【0075】
(2)同期ヘッダを訂正しない。推測された中間ヘッダの同期ヘッダが、中間ブロックのブロックタイプフィールドと整合しない場合、同期ヘッダの訂正が正しい確率が低いので、データの誤りを防止するためには、同期ヘッダを訂正せず、上位層においてフレームを再送するように制御した方がよい。すなわち、データの正確性を優先するためには、この場合に同期ヘッダを訂正しない方がよい。
【0076】
この二つの処理は、転送されるデータの品質、すなわち、データ転送速度を優先するか、データの正確性を優先するかによって変えるとよい。また、この二つの処理は、中間ブロックの同期ヘッダが訂正可能であると判定される、前後のブロックの同期ヘッダ及びブロックタイプフィールドの組み合わせ毎に選択可能に設定されてもよい。
【0077】
なお、S127の処理は任意のステップであり、中間ブロックのブロックタイプフィールドを参照して、中間ブロックの同期ヘッダを訂正するかを判定しなくてもよい。
【0078】
その後、同期ヘッダを訂正する場合、処理対象の中間ブロックの同期ヘッダを”10”に訂正する(S128)。
【0079】
一方、前後のブロックの同期ヘッダ及びブロックタイプフィールドの値が何れのエントリとも一致しない場合、同期ヘッダの訂正候補が得られないので、判定対象の中間ブロックの同期ヘッダは訂正不可と判定する。具体的には、S122でNoと判定された場合、S125でNoと判定された場合、S126でNoと判定された場合、S104に進み、処理対象の中間ブロックの同期ヘッダを訂正しない。
【0080】
次に、図8〜図10を用いて、中間ブロックの同期ヘッダの訂正について、前後のブロックの同期ヘッダ及びブロックタイプフィールドから、中間ブロックの同期ヘッダの値を推測可能な場合(図8、図9)、及び、中間ブロックの同期ヘッダの値を推測不可能な場合(図10)について説明する。
【0081】
図8に示す場合、処理対象である中間ブロックの同期ヘッダ512が”00”であるので、S101において、この同期ヘッダ512は誤っていると判定される。そこで、バッファに格納されている前後のブロックの同期ヘッダ511及び513を参照する。前ブロックの同期ヘッダ511は”01”で、後ブロックの同期ヘッダ513は”10”なので、前後のブロックの同期ヘッダ511及び513から中間ブロックの同期ヘッダの値を推測できない(S102、S121)。そこで、後ブロックのブロックタイプフィールド515を参照する。なお、図8に示す場合は、前ブロックは、その同期ヘッダが”01”である、データブロックであるため、ブロックタイプフィールドが格納されるべき箇所には、ユーザデータが格納されている。
【0082】
その結果、後ブロックのブロックタイプフィールド515が”0x33”であることから、この後ブロックはフレーム先頭(開始コードS)を含むことが分かる(S122)。このため、処理対象の中間ブロックはフレーム末尾(末尾コードT)を含み、コントロールブロックであると推測できる。このため、中間ブロックの同期ヘッダ512を”10”に訂正することができる。
【0083】
図8に示す場合、中間ブロックのブロックタイプフィールドは”0x87”であれば、同期ヘッダの値の推測結果は正しいので、同期ヘッダが訂正される。一方、中間ブロックのブロックタイプフィールドが”0x87”でなくても、同期ヘッダを訂正する又は訂正しない、の何れかの処理が選択的に実行される(S127)。
【0084】
図9に示す場合、処理対象である中間ブロックの同期ヘッダ522が”11”であるので、S101において、この同期ヘッダ522は誤っていると判定される。そこで、バッファに格納されている前後のブロックの同期ヘッダ521及び523を参照する。前ブロックの同期ヘッダ521は”01”で、後ブロックの同期ヘッダ523は”10”なので、前後のブロックの同期ヘッダ521及び523から、中間ブロックの同期ヘッダの値を推測できない(S102、S125)。そこで、前後のブロックのブロックタイプフィールド524、526を参照する。
【0085】
その結果、前ブロックのブロックタイプフィールド524が”0x87”であることから、この前ブロックはフレーム末尾(末尾コードT)及びIFGを含むことが分かる。また、後ブロックのブロックタイプフィールド526が”0x1e”であることから、この後ブロックはIFGを含むことが分かる。このため、処理対象の中間ブロックは前後をIFGに挟まれていることから、IFGを含み、コントロールブロックであると推測できる。このため、中間ブロックの同期ヘッダ522を”10”に訂正することができる。
【0086】
図9に示す場合、中間ブロックのブロックタイプフィールドは”0x1e”であれば、同期ヘッダの値の推測結果は正しいが、もし中間ブロックのブロックタイプフィールドが”0x1e”でなくても、同期ヘッダを訂正する又は訂正しない、の何れかの処理が選択的に実行される(S127)。
【0087】
図10に示す場合、処理対象である中間ブロックの同期ヘッダ532が”00”であるので、S101において、この同期ヘッダ522は誤っていると判定される。そこで、バッファに格納されている前後のブロックの同期ヘッダ531及び533を参照する。前ブロックの同期ヘッダ531は”10”で、後ブロックの同期ヘッダ533は”10”なので、前後のブロックの同期ヘッダ531及び533から、中間ブロックの同期ヘッダの値を推測可能な条件を満たさない(S102、S125)。そこで、前後のブロックのブロックタイプフィールド534、536を参照する。
【0088】
その結果、後ブロックのブロックタイプフィールド536が”0x33”であることから、この後ブロックはフレーム先頭(開始コードS)を含むことが分かる。また、前ブロックのブロックタイプフィールド534が”0x33”であることから、この前ブロックはフレーム先頭(開始コードS)を含むことが分かる(S126)。
【0089】
このとき、開始コード(S)を含む二つのブロックの間には、末端コード(T)を含むブロックがあるべきである。しかし、当該中間ブロックのブロックタイプフィールドを参照した結果の値が、例えば0x33であり、当該中間ブロックは開始コード(S)を含むので、当該中間ブロックの同期ヘッダを訂正しても、前後のブロックとの整合性がとれない。よって、中間ブロックの同期ヘッダ532を訂正しない(S127)。
【0090】
<変形例>
第2の実施の形態のエラー訂正処理は、図7に示すロジックではなく、前後のブロックの同期ヘッダ及びブロックタイプフィールドから、特定組み合わせを見つけることによって、中間ブロックの同期ヘッダの訂正可否を判定することもできる。次に、この変形例について説明する。
【0091】
図11は、第2の実施の形態のエラー訂正テーブル200を説明する図である。
【0092】
第2の実施の形態のエラー訂正テーブル200は、前ブロックの同期ヘッダ201、前ブロックのブロックタイプフィールド202、後ブロックの同期ヘッダ203、後ブロックのブロックタイプフィールド204、中間ブロックのブロックタイプフィールド205及び同期ヘッダの訂正候補206を含む。エラー訂正テーブル200は、ネットワークノードのメモリに格納されており、判定部115によって参照される。なお、後述するように、エラー訂正テーブル200は、中間ブロックのブロックタイプフィールド205を含まなくてもよい。
【0093】
前ブロックの同期ヘッダ201は、処理対象の中間ブロックの前に受信したブロックの同期ヘッダの値である。前ブロックのブロックタイプフィールド202は、処理対象の中間ブロックの前に受信したブロックのブロックタイプフィールドの値である。後ブロックの同期ヘッダ203は、処理対象の中間ブロックの後に受信したブロックの同期ヘッダの値である。後ブロックのブロックタイプフィールド204は、処理対象の中間ブロックの後に受信したブロックのブロックタイプフィールドの値である。中間ブロックのブロックタイプフィールド205は、処理対象の中間ブロックのブロックタイプフィールドの値である。同期ヘッダの訂正候補206は、処理対象の中間ブロックの同期ヘッダの訂正候補である。なお、各欄において”−”はその欄はどの値でも条件を満たすことを意味する。
【0094】
本実施の形態では、処理対象の中間ブロックの同期ヘッダが破損している場合、バッファに格納されている前ブロックの同期ヘッダ及びブロックタイプフィールド、後ブロックの同期ヘッダ及びブロックタイプフィールドが、各々、前ブロックの同期ヘッダ201、前ブロックのブロックタイプフィールド202、後ブロックの同期ヘッダ203及び後ブロックのブロックタイプフィールド204と一致するかを判定する。
【0095】
前後のブロックの同期ヘッダ及びブロックタイプフィールドの値が何れかのエントリと一致した場合、前後のブロックの同期ヘッダ及びブロックタイプフィールドによって、中間ブロックの同期ヘッダの値を推測できる条件を満たし、当該中間ブロックの同期ヘッダは、このエントリの同期ヘッダの訂正候補206であると推測されるので、エラー訂正テーブル200から同期ヘッダの訂正候補206を取得し、この同期ヘッダの訂正候補206によって中間ブロックの同期ヘッダを訂正する。
【0096】
この場合、中間ブロックのブロックタイプフィールド205を参照してもよい。前後のブロックの同期ヘッダ及びブロックタイプフィールドがエントリと一致し、かつ、中間ブロックのブロックタイプフィールドがエントリと一致しない場合、中間ブロックの同期ヘッダを正しく訂正できる可能性が低いが、同期ヘッダを訂正しても、同期ヘッダを訂正しなくてもよい。
【0097】
一方、前後のブロックの同期ヘッダ及びブロックタイプフィールドの値が何れのエントリとも一致しない場合、前後のブロックの同期ヘッダ及びブロックタイプフィールドによって、中間ブロックの同期ヘッダの値を推測できる条件を満たさず、同期ヘッダの訂正候補が得られないので、判定対象の中間ブロックの同期ヘッダは訂正不可と判定する。
【0098】
なお、エントリ211は、ブロックタイプフィールドによらず、前後のブロックの同期ヘッダのみによって中間ブロックの同期ヘッダを訂正可否を判定する処理(図6のS101〜S103)に対応するエントリである。すなわち、前後のブロックのブロックタイプフィールドの値によって判定をする場合だけでなく、前後のブロックの同期ヘッダのみによって判定をする場合にも、エラー訂正テーブル200を用いることができる。
【0099】
具体的には、エントリ221は、図5に示すように、前後のブロックの同期ヘッダが、共に”01”である場合、中間ブロックの同期ヘッダの訂正候補を”01”に決めることができる。
【0100】
また、エントリ212は、図8に示すように、前ブロックの同期ヘッダが”01”であり、後ブロックの同期ヘッダが”10”であり、後ブロックのブロックタイプフィールドが”0x33”である場合、中間ブロックの同期ヘッダの訂正候補は”10”に決めることができる。この場合、中間ブロックのブロックタイプフィールドは”0x87”であれば、同期ヘッダの値の推測結果は正しいが、もし中間ブロックのブロックタイプフィールドが”0x87”でなくても、同期ヘッダを訂正する又は訂正しない、の何れかの処理が選択的に実行される。
【0101】
また、エントリ213は、図9に示すように、前ブロックの同期ヘッダが”10”であり、前ブロックのブロックタイプフィールドが”0x87”であり、後ブロックの同期ヘッダが”10”であり、後ブロックのブロックタイプフィールドが”0x1e”である場合、中間ブロックの同期ヘッダの訂正候補を”10”に決めることができる。この場合、中間ブロックのブロックタイプフィールドは”0x1e”であれば、同期ヘッダの値の推測結果は正しいが、もし中間ブロックのブロックタイプフィールドが”0x1e”でなくても、同期ヘッダを訂正する又は訂正しない、の何れかの処理が選択的に実行される。
【0102】
また、エラー訂正テーブル200に、中間ブロックのブロックタイプフィールドが正しくない場合、同期ヘッダを訂正する又は訂正しないを決定するためのフラグを設け、エントリ毎に、同期ヘッダを訂正するか否かを制御してもよい。この場合、このフラグは、管理者によって設定可能にしてもよい。
【0103】
なお、図7〜図11に示した前後のブロックの同期ヘッダ及びブロックタイプフィールドの組み合わせは例示であり、本願発明者の研究によると、数十種類の組み合わせにおいて、中間ブロックの同期ヘッダの値を推測できる条件を満たし、中間ブロックの同期ヘッダの値を推測することができる。
【0104】
以上説明したように、本発明の第2の実施に形態によると、中間ブロックの同期ヘッダが正しい値でない場合、前後のブロックの同期ヘッダ及びブロックタイプフィールドに基づいて、中間ブロックの値を推測可能かを判定する。そして、中間ブロックの値を推測できる条件を満たす場合、前後のブロックと中間ブロックとが整合するように、中間ブロックの同期ヘッダを訂正する。このため、前述した第1の実施の形態の効果に加え、第1の実施の形態より多くの場合に中間ブロックの同期ヘッダを訂正することができる。
【0105】
<MPLSネットワークへの実装>
図12は、本発明が適用されたMPLSネットワークの説明図である。
【0106】
ユーザデータをクライアント装置1−1からクライアント装置2−1へ転送する場合、クライアント装置1−1から送信されたイーサフレームを、MPLSエッジ装置11にてオーバーヘッド(OH)を終端し、ユーザデータを抽出し、宛先クライアント装置2−1が接続されたMPLSエッジ装置12を特定する。OHには、宛先であるクライアント装置2−1のアドレス(IPアドレスやディスティネーションアドレスなど)を含む。なお、図12ではユーザデータはSDH/SONET信号を例に説明するが、イーサネット信号など様々な信号でも同じである。
【0107】
そして、特定されたエッジノードを表すMPLSラベル(TLSP)を、抽出されたユーザデータに付して、ユーザデータをカプセル化する。TLSPを用いたカプセル化によって、MPLSネットワーク内のMPLSコア装置21〜23は、クライアント装置2−1の宛先を見ることなく、MPLSネットワークワーク内でエンド・ツー・エンドでパケットを転送(以下、ラベルスイッチと呼ぶ)できる。
【0108】
このとき、MPLSエッジ装置11は、64B/66B符号化を用いて、クライアント装置1−11から受信したユーザデータをカプセル化した後、66ビットのブロックに変換し、MPLSコア装置21に転送する。MPLSコア装置21〜2nは、前段のMPLS装置から送信された66ビットのブロックからイーサフレームを再構築し、MPLSラベルによって、次のMPLS装置を特定し、再構築されたイーサフレームを66ビットのブロックに変換して、次段のMPLS装置に送る。
【0109】
MPLSエッジ装置12は、前段のMPLSコア装置から送信された66ビットのブロックからイーサフレームを再構築し、TLSPを終端して、クライアント装置2−1へユーザデータを転送する。
【0110】
このように、MPLSネットワークに備わるMPLS装置は、前段のMPLS装置から送信された66ビットのブロックからイーサフレームを再構築する際に、66ビットのブロックの破損している同期ヘッダを、前後のブロックからが破損している同期ヘッダを訂正する。
【符号の説明】
【0111】
101、105 クライアント端末
102、104 ネットワークノード
103 ネットワーク
111 ブロック同期部
112 デ・スクランブラ
113 エラー訂正部
114 バッファ
115 判定部
116 訂正部
117 デコーダ
118 エンコーダ
119 スクランブラ
【技術分野】
【0001】
本発明は、データ転送装置に関し、特に、物理層においてデータを転送するために用いられるデータ(例えば、同期ヘッダ)を修復する技術に関する。
【背景技術】
【0002】
ネットワークノード間のデータ転送において、データ同期のための同期ヘッダ(SyncHeader)が、所定の間隔で挿入されるプロトコルがある。例えば、10ギガビットイーサネット(「イーサネット」は登録商標。以下同じ。)において、64B/66B符号化を用いて、66ビットのブロック毎にデータを伝送する(例えば、特許文献1参照。)。この66ビットのブロックは、2ビットの同期ヘッダ(”01”又は”10”)と、64ビットのペイロードとによって構成される。すなわち、2ビットの同期ヘッダが66ビット毎に挿入される。
【0003】
このため、送信側ノードは、64ビットのデータに2ビットの同期ヘッダを付けて66ビットに符号化する。受信側ノードは、66ビット毎に到着する2ビットの同期ヘッダを見つけ、同期ヘッダの後の64ビットのデータを復号する。また、同期ヘッダの値が”01”の場合は、同期ヘッダの後の64ビットデータはユーザデータであり、同期ヘッダの値が”10”の場合は、同期ヘッダの後の64ビットデータは制御コードを含むデータである(例えば、非特許文献1参照。)。
【先行技術文献】
【特許文献】
【0004】
【特許文献1】特開2005−72714号公報
【非特許文献】
【0005】
【非特許文献1】IEEE 802.3ae
【発明の概要】
【発明が解決しようとする課題】
【0006】
電気信号又は光信号によってネットワークを転送されるデータは、ノイズの影響等によって書き換わることがある。このような物理層におけるデータの誤りは、上位層(データリンク層、ネットワーク層等)における誤り訂正によって修復することはできない。
【0007】
例えば、伝送路上のノイズ等により同期ヘッダが破損し、”00”又は”11”に書き換わった場合、受信側ノードは、ペイロードがユーザデータなのか制御コードを含むデータなのかを判定することができず、受信したデータを正しくデコードできないことから、64ビットのペイロードは廃棄されてしまう。
【0008】
本発明は、同期ヘッダが破損したブロックを受信した場合でも、前後のデータの関係から正しい同期ヘッダの値を推測し、同期ヘッダを訂正することによって、廃棄されていたデータを適正に処理することを目的とする。
【課題を解決するための手段】
【0009】
本発明の代表的な一例を示せば以下の通りである。すなわち、フレームを第1の所定ビットのデータに分割し、前記分割されたデータに第2の所定ビットの同期ヘッダを付加することによって生成されるブロックを転送するデータ転送装置であって、前記データ転送装置の動作を処理するロジックと、転送されるブロックを格納するバッファと、前記データ転送装置へのデータを入出力するインターフェースとを備え、前記ブロックは、連続して順に転送される第1のブロック、第2のブロック及び第3のブロックを含み、前記ロジックは、前記第1のブロックに含まれる第1の同期ヘッダ、前記第2のブロックに含まれる第2の同期ヘッダ及び前記第3のブロックに含まれる第3の同期ヘッダを取得し、前記第2の同期ヘッダが正しい値でない場合、前記第2のブロックが前記第1のブロック及び前記第3のブロックと整合するように、前記第2の同期ヘッダを、前記第1の同期ヘッダと前記第3の同期ヘッダとに基づいて推測できるか否かの第1の判定をし、前記推測された値に前記第2の同期ヘッダを訂正する。
【発明の効果】
【0010】
本発明によると、破損した同期ヘッダを訂正することができ、ブロックの廃棄による有効データの欠損、転送効率の低下を抑えることができる。
【図面の簡単な説明】
【0011】
【図1】本発明の第1の実施の形態のシステムの構成を表す図である。
【図2】本発明の第1の実施の形態のネットワークノードの構成を表すブロック図で ある。
【図3A】本発明の第1実施形態のXGMII上のイーサフレームと10Gbイーサ ネット上のデータ列との変換を説明する図である。
【図3B】本発明の第1実施形態のエンコーダによるエンコードの例を説明する図で ある。
【図4】本発明の第1の実施の形態のエラー訂正処理のフローチャートである。
【図5】本発明の第1の実施形態において同期ヘッダが訂正される状態を説明する図 である。
【図6】本発明の第2の実施の形態のエラー訂正処理のフローチャートである。
【図7】本発明の第2の実施の形態のエラー訂正処理の詳細を示すフローチャートで ある。
【図8】本発明の第2の実施形態において同期ヘッダが訂正される状態を説明する図 である。
【図9】本発明の第2の実施形態において同期ヘッダが訂正される状態を説明する図 である。
【図10】本発明の第2の実施形態において同期ヘッダの訂正が失敗する状態を説明する図である。
【図11】本発明の第2の実施の形態のエラー訂正テーブルを説明する図である。
【図12】本発明が適用されたMPLSネットワークの説明図である。
【発明を実施するための形態】
【0012】
<実施形態1>
図1は、本発明の第1の実施の形態のシステムの構成を表す図である。
【0013】
第1の実施の形態のシステムは、クライアント端末101、105、ネットワークノード102、104及びネットワーク103を備える。
【0014】
クライアント端末101及び105は、ネットワーク103を経由してデータを送受信する計算機であり、プロセッサ、メモリ及びネットワークインターフェースを備える。ネットワークノード102及び104は、クライアントと他のノードとの間、及びノード間でデータを転送するデータ転送装置で、ネットワーク103によって接続されている。なお、ネットワークノード102及び104の詳細な構成は、図2を用いて後述する。
【0015】
ネットワーク103は、複数のネットワークノードによって、指定された宛先アドレスにデータを転送するものである。なお、図1に示すネットワーク103は、2台のネットワークノード102及び104を備えるが、さらに複数のネットワークノードを備えてもよい。ネットワーク103は、いわゆる10ギガビットイーサネットであり、64B/66B符号によって符号化されたデータを伝送する。すなわち、ネットワーク103の物理層において、66ビットのブロック毎にデータが転送され、この66ビットのブロックは、2ビットの同期ヘッダ(SyncHeader)と、64ビットのペイロードとによって構成されている。
【0016】
なお、本発明は、転送されるブロックに含まれるデータの属性を表し、誤り訂正によって訂正不可能なデータを、ブロック中に含む場合に適用可能であるため、ネットワーク103は、同期ヘッダを含むブロックを転送する10ギガビットイーサネットでなくてもよい。
【0017】
図2は、第1の実施の形態のネットワークノード104の構成を表すブロック図である。
【0018】
ネットワークノード104は、ブロック同期部111、デ・スクランブラ112、エラー訂正部113、デコーダ117、エンコーダ118及びスクランブラ119を備える。
【0019】
ブロック同期部111は、ネットワーク側から送信されるシリアルデータ列に66ビット毎に含まれる同期ヘッダの”01”又は”10”パターンを見つけて、ブロックの同期を確立する。
【0020】
デ・スクランブラ112は、ブロックの64ビットのペイロードにデスクランブル処理を行う。
【0021】
エラー訂正部113は、ブロックの同期ヘッダが破損している場合、正しい同期ヘッダの値を推測し、同期ヘッダを訂正する。
【0022】
具体的には、エラー訂正部113は、ブロックの同期ヘッダが破損している場合、前後のブロックの同期ヘッダが、中間ブロックの同期ヘッダを訂正可能な条件を満たしているかを判定する。そして、訂正可能な条件を満たした場合、前後のブロックの同期ヘッダの値を参照することによって、当該中間ブロックの正しい同期ヘッダの値を推測し、当該中間ブロックの同期ヘッダを推測された値に訂正する。
【0023】
このため、エラー訂正部113は、少なくとも前後のブロックを一次的に記憶するバッファ114、前後のブロックの同期ヘッダが、中間ブロックの同期ヘッダを訂正可能な条件を満たすかを判定する判定部115、及び、前後のブロックの同期ヘッダから推測された値に、中間ブロックの同期ヘッダを訂正する訂正部116を備える。なお、エラー訂正部113によって実行される処理の詳細は、図4を用いて後述する。
【0024】
デコーダ117は、ブロックからペイロードを抽出し、64ビット(8バイト)データへ復号化する。
【0025】
エンコーダ118は、64ビット(8バイト)データに、同期ヘッダを付加し、66ビットのブロックへ符号化する。
【0026】
スクランブラ119は、ブロックのペイロードデータにスクランブル処理を行う。このスクランブル処理によって、転送されるデータのディスパリティが0になるように、データが調整される。
【0027】
ネットワークノード104は、データを送受信するインターフェース(ポート)、データを出力するポートを決定するルーティング部、ネットワークノードの動作を制御するプロセッサ、及び、プロセッサで実行されるプログラム及び当該プログラムの実行に必要なデータを格納するメモリを備える。
【0028】
以上、ネットワークノード104について説明したが、ネットワークノード102も同じ構成及び機能である。
【0029】
図3Aは、XGMII上のイーサフレームと10ギガビットイーサネット上のデータ列との変換を説明する図である。
【0030】
10ギガビットイーサネット上のデータ列305は、XGMII(10 Gigabit Media Independent Interface)上の所定長のイーサフレーム301を8バイト毎に分割して、分割されたデータに2ビットの同期ヘッダを付加することによって、10ギガビットイーサネット上を転送される66ビットのブロックを生成する。
【0031】
具体的には、XGMII上のイーサフレーム301は、その先頭に8ビットの開始コード(S)が設けられ、その末尾に8ビットの末尾コード(T)が設けられ、開始コードと末尾コードとの間にデータ領域が設けられる。また、フレーム間にはインターフレームギャップ(IFG)が設けられる。
【0032】
エンコーダ118は、このイーサフレーム301を、8バイト毎に分割したデータを生成する(302)。このとき、開始コードは8バイト中の1番目又は5番目のバイトだけに割り当て可能である。すなわち、開始コードを含む8バイトのデータは、「SDDDDDDD」又は「IIIISDDD」となる。
【0033】
そして、分割された8バイトのデータを所定のルールに従ってエンコードし、その後、2ビットの同期ヘッダを付与する(303)。8バイトのデータはユーザデータである場合、同期ヘッダ”01”が付与され、8バイトのデータは制御コードを含むデータである場合、同期ヘッダ”10”が付与される。
【0034】
その後、同期ヘッダを除くペイロードのデータをスクランブルして、10ギガビットイーサネット上のデータ列305が生成される。
【0035】
一方、10ギガビットイーサネット上のデータ列305は、デスクランブル処理によって、エンコードされた状態のデータが復元される。その後、同期ヘッダが破損しているか否かが判定され、破損している同期ヘッダが修復される(304、303)。この同期ヘッダの訂正処理は、図4、図5を用いて後述する。この同期ヘッダの訂正処理は、論理回路によるロジックによって実装されてもよく、プロセッサがメモリに格納されたプログラムを実行することによるロジックによって実装されてもよい。
【0036】
同期ヘッダが修復されたデータは、同期ヘッダを外して、8バイトのデータを生成し、8バイト毎にデコードされる(302)。その後、デコードされたデータ結合してパケットを組み立て、イーサフレーム301を再構成する。
【0037】
図3Bは、エンコーダ118によるエンコードの例を説明する図である。
【0038】
前述したように、8バイトのペイロードにユーザデータ(D)のみが含まれる場合、このブロックはデータブロックであり、同期ヘッダは”01”となる。一方、8バイトのペイロードに制御コード(S、T、I等)が含まれる場合、このブロックはコントロールブロックであり、同期ヘッダは”10”となる。
【0039】
コントロールブロックの場合、ペイロードの先頭(すなわち、同期ヘッダの直後)に8ビットの、BlockTypeFieldが設けられる。このBlockTypeFieldは、ブロックに含まれるユーザデータ(D)のエンコードの方法を示す。すなわち、BlockTypeFieldの値によって、ブロックに含まれる制御コードの種類、数、及び位置が決まる。
【0040】
図4は、第1の実施の形態のエラー訂正処理のフローチャートであり、このエラー訂正処理はエラー訂正部113によって実行される。なお、エラー訂正部113は、論理回路によって機能するものであっても、ネットワークノードに備わるプロセッサがメモリに格納されたプログラムを実行することによって機能するものであってもよい。また、このエラー訂正処理は、ブロック同期部111によるブロックの同期、デスクランブラ112によるデスクランブルが確立した後に実行される。
【0041】
まず、同期ヘッダの値によって、同期ヘッダが破損しているか否かを判定する(S101)。具体的には、正しい同期ヘッダは”01”又は”10”であるため、同期ヘッダが、”00”又は”11”であれば、同期ヘッダが破損していると判定できる。
【0042】
次に、バッファ114に格納されている前後のブロックから同期ヘッダを抽出して、抽出された同期ヘッダから、中間ブロックの同期ヘッダの値を推測可能か否かを判定する(S102)。すなわち、前後のブロックの同期ヘッダが、中間ブロックの同期ヘッダを訂正可能な条件を満たすか否かを判定する。具体的には、前ブロックの同期ヘッダが”01”であり、かつ、後ブロックの同期ヘッダが”01”である場合、中間ブロックの同期ヘッダを訂正可能な条件を満たし、その中間ブロックの同期ヘッダの値を推測して訂正することができる。
【0043】
判定の結果、この条件を満たした場合、中間ブロックの同期ヘッダの値は”01”であると推測し、この中間ブロックの同期ヘッダを”01”に訂正する(S103)。
【0044】
これは、図4に示すように、一つのブロックが、パケットの開始を示すコード”S”とパケットの終了を示すコード”T”との両方を含むことはない。また、ブロックの同期ヘッダが”01”である場合、そのブロックは、ペイロードにユーザデータのみを含むデータブロックである。よって、この中間ブロックはデータブロックであると推測することができ、中間ブロックの同期ヘッダを”01”に訂正することができる。
【0045】
一方、前後のブロックの同期ヘッダのいずれかが”01”でない場合、同期ヘッダの値を推測することはできないので、この中間ブロックの同期ヘッダを訂正しない(S104)。なお、破損した同期ヘッダが訂正されない場合、そのブロックのデータを含むイーサフレームを正しく組み立てることができない。このため、上位層(データリンク層、ネットワーク層等)において、この中間ブロックを含むイーサフレームが再送されるように、制御される。
【0046】
次に、図5を用いて、中間ブロックの同期ヘッダの訂正について説明する。
【0047】
処理対象である中間ブロックの同期ヘッダ502が”00”であるので、S101において、この同期ヘッダ502は誤っていると判定される。そこで、バッファに格納されている前後のブロックの同期ヘッダ501及び503を参照する。この場合、前後のブロックの同期ヘッダ501及び503は共に”01”なので、前後のブロックの同期ヘッダ501及び503から、中間ブロックの同期ヘッダが”01”であることを推測可能である。
【0048】
すなわち、本実施の形態では、所定長のイーサネットフレームを分割して生成された66ビットのブロックを、ネットワークノード間で転送するので、転送されるブロックは分割前のイーサネットフレームの性質(前後のブロックのデータとの連続性)をそのまま引き継いでいる。このため、ブロックに含まれるデータ、特に、制御コードの並びには規則性がある。本発明の実施の形態では、この規則性に着目して、ブロックがデータブロックであるか、コントロールブロックであるかを判定して、破損した同期ヘッダを訂正する。
【0049】
このようにして、第1の実施の形態では、中間ブロックの同期ヘッダ502を”01”に訂正することができる。
【0050】
以上説明したように、本発明の第1の実施に形態によると、中間ブロックの同期ヘッダが正しい値でない場合、前後のブロックの同期ヘッダに基づいて、中間ブロックの同期ヘッダの値を推測可能かを判定する。そして、中間ブロックの同期ヘッダの値を推測できる条件を満たす場合、前後のブロックと中間ブロックとが整合するように、中間ブロックの同期ヘッダを訂正する。このため、同期ヘッダが破損したブロックの破棄が減少し、パケットの再送回数を減少することができる。また、パケットの再送信が減るので、伝送路上のトラフィックの増加を抑制することができる。さらに、トラフィックの増加を抑制することによって、ネットワークノードの消費電力を低減することができる。
【0051】
<実施形態2>
次に、本発明の第2の実施の形態について説明する。
【0052】
前述した第1の実施の形態では、中間ブロックの同期ヘッダを訂正するために、前後のブロックの同期ヘッダを用いたが、第2の実施の形態では、前後のブロックの同期ヘッダ及びブロックタイプフィールドを用いる。さらに、予備的に、中間ブロックのブロックタイプフィールドを用いてもよい。
【0053】
なお、第2の実施の形態のシステムの構成及びネットワークノードのハードウェア構成は、前述した第1の実施の形態と同じである。なお、第2の実施の形態において、前述した第1の実施の形態と同じ構成、処理には同じ符号を付し、それらの説明は省略する。
【0054】
第2の実施の形態のネットワークノードは、前述した第1の実施の形態のネットワークノードと比較し、エラー訂正部113の機能が異なる。
【0055】
すなわち、第2の実施の形態のエラー訂正部113は、ブロックの同期ヘッダが破損している場合に、当該ブロックと前後のブロックの同期ヘッダ及びブロックタイプフィールドの値を参照することによって、当該中間ブロックの正しい同期ヘッダの値を推測し、同期ヘッダを訂正する。
【0056】
具体的には、エラー訂正部113は、ブロックの同期ヘッダが破損している場合、前後のブロックの同期ヘッダ及びブロックタイプフィールドが、中間ブロックの同期ヘッダを訂正可能な条件を満たすかを判定する。そして、訂正可能な条件を満たした場合、前後のブロックの同期ヘッダ及びブロックタイプフィールドから推測された値に、中間ブロックの同期ヘッダを訂正する。
【0057】
ここで、ブロックタイプフィールドとは、ブロックに含まれるデータの種別を表す情報であって、転送される66ビットのブロックがコントロールブロックである場合、ペーロードの最初の8ビット(同期ヘッダの直後の1バイト)に割り当てられるデータ領域であり、図3Bに示すように、転送されるデータに含まれるユーザデータのバイト数及び位置、制御コードの内容、数及び位置を表す。すなわち、同期ヘッダが”10"である場合、同期ヘッダの直後の8ビットのデータによって、コントロールブロックに含まれる制御コードを知ることができる。
【0058】
また、第2の実施の形態において、判定部115は、前後のブロックの同期ヘッダ及びブロックタイプフィールドが、中間ブロックの同期ヘッダを訂正可能な条件を満たすかを判定する。訂正部116は、前後のブロックの同期ヘッダ及びブロックタイプフィールドから推測された値に、中間ブロックの同期ヘッダを訂正する。
【0059】
図6は、第2の実施の形態のエラー訂正処理のフローチャートであり、このエラー訂正処理はエラー訂正部113によって実行される。なお、前述した第1の実施の形態と同じく、エラー訂正部113は、論理回路によって機能するものであっても、ネットワークノードに備わるプロセッサがメモリに格納されたプログラムを実行することによって機能するものであってもよい。また、このエラー訂正処理は、ブロック同期部111によるブロックの同期、スクランブラ112によるデスクランブルが確立した後に実行される。
【0060】
まず、前述した第1の実施の形態と同様に、同期ヘッダが破損しているか否かを判定し(S101)、前後のブロックの同期ヘッダから、当該ブロックの同期ヘッダを推測可能か否かを判定し(S102)、中間ブロックの同期ヘッダを、推測された値に訂正する(S103)。
【0061】
一方、S102において、前後のブロックの同期ヘッダが中間ブロックの同期ヘッダを訂正できる条件に一致しないと判定された場合、前後のブロックのブロックタイプフィールドを参照し(S111)、前後のブロックのブロックタイプフィールドから、中間ブロックの同期ヘッダの値を推測可能か、すなわち、前後のブロックの同期ヘッダ及びブロックタイプフィールドが中間ブロックの同期ヘッダを訂正できる条件に一致するか否かを判定する(S112)。その結果、中間ブロックの同期ヘッダの値を推測可能である場合、前後のブロックの同期ヘッダ及びブロックタイプフィールドから、中間ブロックの同期ヘッダの値を推測し、中間ブロックのSyncHeaderを推測された値に訂正する(S113)。
【0062】
なお、S112〜S113の処理の具体的内容は、図7及び図11を用いて説明する。この同期ヘッダの訂正処理は、論理回路によるロジックによって実装されてもよく、前述した第1の実施の形態と同じく、プロセッサがメモリに格納されたプログラムを実行することによるロジックによって実装されてもよい。
【0063】
一方、S112において、中間ブロックの同期ヘッダを訂正可能な条件を満たさないと判定された場合、この中間ブロックの同期ヘッダを訂正しない(S104)。この場合、前述した第1の実施の形態と同様に、そのブロックのデータを含むイーサフレームを正しく組み立てることができないので、この中間ブロックを含むイーサフレームの再送制御がされる。
【0064】
図7は、第2の実施の形態のエラー訂正処理(図6のS112〜S113)の詳細を示すフローチャートである。
【0065】
第2の実施の形態のエラー訂正処理(図6)において、前後のブロックの同期ヘッダによって中間ブロックの同期ヘッダを訂正できないと判定された場合、前後のブロックのブロックタイプフィールドを参照する(S111)。
【0066】
その後、前ブロックの同期ヘッダが”01”であり、かつ、後ブロックの同期ヘッダが”10”であるかを判定する(S121)。前ブロックの同期ヘッダが”01”であり、かつ、後ブロックの同期ヘッダが”10”である場合、さらに、後ブロックのブロックタイプフィールドが”0x33”であるかを判定する(S122)。
【0067】
その結果、前ブロックの同期ヘッダが”01”であり、後ブロックの同期ヘッダが”10”であり、かつ、後ブロックのブロックタイプフィールドが”0x33”である場合、中間ブロックの同期ヘッダを訂正することができる条件を満たす。すなわち、この場合、後ブロックはフレーム先頭(開始コードS)を含むので、処理対象の中間ブロックはフレーム末尾(末尾コードT)を含み、コントロールブロックであると推測できる。よって、中間ブロックの同期ヘッダを訂正するためにS127に進む。
【0068】
一方、前ブロックの同期ヘッダが”01”でなく、又は、後ブロックの同期ヘッダが”10”でない場合、他の条件を満たすかを探索するために、S125に進む。
【0069】
S125において、前ブロックの同期ヘッダが”10”であり、後ブロックの同期ヘッダが”10”であり、さらに、前ブロックのブロックタイプフィールドが”0x87”であり、かつ、後ブロックのブロックタイプフィールドが”0x1e”であるかを判定する(S125、S126)。
【0070】
その結果、前ブロックの同期ヘッダが”10”であり、後ブロックの同期ヘッダが”10”であり、前ブロックのブロックタイプフィールドが”0x87”であり、かつ、後ブロックのブロックタイプフィールドが”0x1e”である場合、中間ブロックの同期ヘッダを訂正することができる条件を満たす。この場合、この前ブロックはフレーム末尾(末尾コードT)を含み、後ブロックはIFGを含む。処理対象の中間ブロックは、前後をIFGに挟まれていることから、IFGを含み、コントロールブロックであると推測できる。よって、中間ブロックの同期ヘッダを訂正するためにS127に進む。
【0071】
S127では、処理対象の中間ブロックのブロックタイプフィールドを参照して、中間ブロックの同期ヘッダを訂正するか否かを判定する。すなわち、前後のブロックの同期ヘッダ及びブロックタイプフィールドから推測された中間ヘッダの同期ヘッダが、中間ブロックのブロックタイプフィールドと整合するか否かを判定する。これは、同期ヘッダが”10”である場合、ブロックタイプフィールドは所定の値しか取り得ないからである。
【0072】
その結果、推測された中間ヘッダの同期ヘッダが、中間ブロックのブロックタイプフィールドと整合する場合、推測された中間ヘッダの同期ヘッダの値が正しいことが確認されたので、S128に進み、中間ブロックの同期ヘッダを”10”に訂正する。
【0073】
一方、推測された中間ヘッダの同期ヘッダが、中間ブロックのブロックタイプフィールドと整合しない場合、推測された中間ヘッダの同期ヘッダの値か、ブロックタイプフィールドの値が誤っている可能性がある。この場合、以下の二つの処理が考えられる。
【0074】
(1)同期ヘッダを訂正する。推測された中間ヘッダの同期ヘッダが、中間ブロックのブロックタイプフィールドと整合しない場合、同期ヘッダの訂正が正しい確率が低い。しかし、ブロックを正しくデコードできる確率を高め、パケット廃棄率を低減するためには、同期ヘッダの訂正が正しい可能性が低くても、同期ヘッダを訂正するとよい。
【0075】
(2)同期ヘッダを訂正しない。推測された中間ヘッダの同期ヘッダが、中間ブロックのブロックタイプフィールドと整合しない場合、同期ヘッダの訂正が正しい確率が低いので、データの誤りを防止するためには、同期ヘッダを訂正せず、上位層においてフレームを再送するように制御した方がよい。すなわち、データの正確性を優先するためには、この場合に同期ヘッダを訂正しない方がよい。
【0076】
この二つの処理は、転送されるデータの品質、すなわち、データ転送速度を優先するか、データの正確性を優先するかによって変えるとよい。また、この二つの処理は、中間ブロックの同期ヘッダが訂正可能であると判定される、前後のブロックの同期ヘッダ及びブロックタイプフィールドの組み合わせ毎に選択可能に設定されてもよい。
【0077】
なお、S127の処理は任意のステップであり、中間ブロックのブロックタイプフィールドを参照して、中間ブロックの同期ヘッダを訂正するかを判定しなくてもよい。
【0078】
その後、同期ヘッダを訂正する場合、処理対象の中間ブロックの同期ヘッダを”10”に訂正する(S128)。
【0079】
一方、前後のブロックの同期ヘッダ及びブロックタイプフィールドの値が何れのエントリとも一致しない場合、同期ヘッダの訂正候補が得られないので、判定対象の中間ブロックの同期ヘッダは訂正不可と判定する。具体的には、S122でNoと判定された場合、S125でNoと判定された場合、S126でNoと判定された場合、S104に進み、処理対象の中間ブロックの同期ヘッダを訂正しない。
【0080】
次に、図8〜図10を用いて、中間ブロックの同期ヘッダの訂正について、前後のブロックの同期ヘッダ及びブロックタイプフィールドから、中間ブロックの同期ヘッダの値を推測可能な場合(図8、図9)、及び、中間ブロックの同期ヘッダの値を推測不可能な場合(図10)について説明する。
【0081】
図8に示す場合、処理対象である中間ブロックの同期ヘッダ512が”00”であるので、S101において、この同期ヘッダ512は誤っていると判定される。そこで、バッファに格納されている前後のブロックの同期ヘッダ511及び513を参照する。前ブロックの同期ヘッダ511は”01”で、後ブロックの同期ヘッダ513は”10”なので、前後のブロックの同期ヘッダ511及び513から中間ブロックの同期ヘッダの値を推測できない(S102、S121)。そこで、後ブロックのブロックタイプフィールド515を参照する。なお、図8に示す場合は、前ブロックは、その同期ヘッダが”01”である、データブロックであるため、ブロックタイプフィールドが格納されるべき箇所には、ユーザデータが格納されている。
【0082】
その結果、後ブロックのブロックタイプフィールド515が”0x33”であることから、この後ブロックはフレーム先頭(開始コードS)を含むことが分かる(S122)。このため、処理対象の中間ブロックはフレーム末尾(末尾コードT)を含み、コントロールブロックであると推測できる。このため、中間ブロックの同期ヘッダ512を”10”に訂正することができる。
【0083】
図8に示す場合、中間ブロックのブロックタイプフィールドは”0x87”であれば、同期ヘッダの値の推測結果は正しいので、同期ヘッダが訂正される。一方、中間ブロックのブロックタイプフィールドが”0x87”でなくても、同期ヘッダを訂正する又は訂正しない、の何れかの処理が選択的に実行される(S127)。
【0084】
図9に示す場合、処理対象である中間ブロックの同期ヘッダ522が”11”であるので、S101において、この同期ヘッダ522は誤っていると判定される。そこで、バッファに格納されている前後のブロックの同期ヘッダ521及び523を参照する。前ブロックの同期ヘッダ521は”01”で、後ブロックの同期ヘッダ523は”10”なので、前後のブロックの同期ヘッダ521及び523から、中間ブロックの同期ヘッダの値を推測できない(S102、S125)。そこで、前後のブロックのブロックタイプフィールド524、526を参照する。
【0085】
その結果、前ブロックのブロックタイプフィールド524が”0x87”であることから、この前ブロックはフレーム末尾(末尾コードT)及びIFGを含むことが分かる。また、後ブロックのブロックタイプフィールド526が”0x1e”であることから、この後ブロックはIFGを含むことが分かる。このため、処理対象の中間ブロックは前後をIFGに挟まれていることから、IFGを含み、コントロールブロックであると推測できる。このため、中間ブロックの同期ヘッダ522を”10”に訂正することができる。
【0086】
図9に示す場合、中間ブロックのブロックタイプフィールドは”0x1e”であれば、同期ヘッダの値の推測結果は正しいが、もし中間ブロックのブロックタイプフィールドが”0x1e”でなくても、同期ヘッダを訂正する又は訂正しない、の何れかの処理が選択的に実行される(S127)。
【0087】
図10に示す場合、処理対象である中間ブロックの同期ヘッダ532が”00”であるので、S101において、この同期ヘッダ522は誤っていると判定される。そこで、バッファに格納されている前後のブロックの同期ヘッダ531及び533を参照する。前ブロックの同期ヘッダ531は”10”で、後ブロックの同期ヘッダ533は”10”なので、前後のブロックの同期ヘッダ531及び533から、中間ブロックの同期ヘッダの値を推測可能な条件を満たさない(S102、S125)。そこで、前後のブロックのブロックタイプフィールド534、536を参照する。
【0088】
その結果、後ブロックのブロックタイプフィールド536が”0x33”であることから、この後ブロックはフレーム先頭(開始コードS)を含むことが分かる。また、前ブロックのブロックタイプフィールド534が”0x33”であることから、この前ブロックはフレーム先頭(開始コードS)を含むことが分かる(S126)。
【0089】
このとき、開始コード(S)を含む二つのブロックの間には、末端コード(T)を含むブロックがあるべきである。しかし、当該中間ブロックのブロックタイプフィールドを参照した結果の値が、例えば0x33であり、当該中間ブロックは開始コード(S)を含むので、当該中間ブロックの同期ヘッダを訂正しても、前後のブロックとの整合性がとれない。よって、中間ブロックの同期ヘッダ532を訂正しない(S127)。
【0090】
<変形例>
第2の実施の形態のエラー訂正処理は、図7に示すロジックではなく、前後のブロックの同期ヘッダ及びブロックタイプフィールドから、特定組み合わせを見つけることによって、中間ブロックの同期ヘッダの訂正可否を判定することもできる。次に、この変形例について説明する。
【0091】
図11は、第2の実施の形態のエラー訂正テーブル200を説明する図である。
【0092】
第2の実施の形態のエラー訂正テーブル200は、前ブロックの同期ヘッダ201、前ブロックのブロックタイプフィールド202、後ブロックの同期ヘッダ203、後ブロックのブロックタイプフィールド204、中間ブロックのブロックタイプフィールド205及び同期ヘッダの訂正候補206を含む。エラー訂正テーブル200は、ネットワークノードのメモリに格納されており、判定部115によって参照される。なお、後述するように、エラー訂正テーブル200は、中間ブロックのブロックタイプフィールド205を含まなくてもよい。
【0093】
前ブロックの同期ヘッダ201は、処理対象の中間ブロックの前に受信したブロックの同期ヘッダの値である。前ブロックのブロックタイプフィールド202は、処理対象の中間ブロックの前に受信したブロックのブロックタイプフィールドの値である。後ブロックの同期ヘッダ203は、処理対象の中間ブロックの後に受信したブロックの同期ヘッダの値である。後ブロックのブロックタイプフィールド204は、処理対象の中間ブロックの後に受信したブロックのブロックタイプフィールドの値である。中間ブロックのブロックタイプフィールド205は、処理対象の中間ブロックのブロックタイプフィールドの値である。同期ヘッダの訂正候補206は、処理対象の中間ブロックの同期ヘッダの訂正候補である。なお、各欄において”−”はその欄はどの値でも条件を満たすことを意味する。
【0094】
本実施の形態では、処理対象の中間ブロックの同期ヘッダが破損している場合、バッファに格納されている前ブロックの同期ヘッダ及びブロックタイプフィールド、後ブロックの同期ヘッダ及びブロックタイプフィールドが、各々、前ブロックの同期ヘッダ201、前ブロックのブロックタイプフィールド202、後ブロックの同期ヘッダ203及び後ブロックのブロックタイプフィールド204と一致するかを判定する。
【0095】
前後のブロックの同期ヘッダ及びブロックタイプフィールドの値が何れかのエントリと一致した場合、前後のブロックの同期ヘッダ及びブロックタイプフィールドによって、中間ブロックの同期ヘッダの値を推測できる条件を満たし、当該中間ブロックの同期ヘッダは、このエントリの同期ヘッダの訂正候補206であると推測されるので、エラー訂正テーブル200から同期ヘッダの訂正候補206を取得し、この同期ヘッダの訂正候補206によって中間ブロックの同期ヘッダを訂正する。
【0096】
この場合、中間ブロックのブロックタイプフィールド205を参照してもよい。前後のブロックの同期ヘッダ及びブロックタイプフィールドがエントリと一致し、かつ、中間ブロックのブロックタイプフィールドがエントリと一致しない場合、中間ブロックの同期ヘッダを正しく訂正できる可能性が低いが、同期ヘッダを訂正しても、同期ヘッダを訂正しなくてもよい。
【0097】
一方、前後のブロックの同期ヘッダ及びブロックタイプフィールドの値が何れのエントリとも一致しない場合、前後のブロックの同期ヘッダ及びブロックタイプフィールドによって、中間ブロックの同期ヘッダの値を推測できる条件を満たさず、同期ヘッダの訂正候補が得られないので、判定対象の中間ブロックの同期ヘッダは訂正不可と判定する。
【0098】
なお、エントリ211は、ブロックタイプフィールドによらず、前後のブロックの同期ヘッダのみによって中間ブロックの同期ヘッダを訂正可否を判定する処理(図6のS101〜S103)に対応するエントリである。すなわち、前後のブロックのブロックタイプフィールドの値によって判定をする場合だけでなく、前後のブロックの同期ヘッダのみによって判定をする場合にも、エラー訂正テーブル200を用いることができる。
【0099】
具体的には、エントリ221は、図5に示すように、前後のブロックの同期ヘッダが、共に”01”である場合、中間ブロックの同期ヘッダの訂正候補を”01”に決めることができる。
【0100】
また、エントリ212は、図8に示すように、前ブロックの同期ヘッダが”01”であり、後ブロックの同期ヘッダが”10”であり、後ブロックのブロックタイプフィールドが”0x33”である場合、中間ブロックの同期ヘッダの訂正候補は”10”に決めることができる。この場合、中間ブロックのブロックタイプフィールドは”0x87”であれば、同期ヘッダの値の推測結果は正しいが、もし中間ブロックのブロックタイプフィールドが”0x87”でなくても、同期ヘッダを訂正する又は訂正しない、の何れかの処理が選択的に実行される。
【0101】
また、エントリ213は、図9に示すように、前ブロックの同期ヘッダが”10”であり、前ブロックのブロックタイプフィールドが”0x87”であり、後ブロックの同期ヘッダが”10”であり、後ブロックのブロックタイプフィールドが”0x1e”である場合、中間ブロックの同期ヘッダの訂正候補を”10”に決めることができる。この場合、中間ブロックのブロックタイプフィールドは”0x1e”であれば、同期ヘッダの値の推測結果は正しいが、もし中間ブロックのブロックタイプフィールドが”0x1e”でなくても、同期ヘッダを訂正する又は訂正しない、の何れかの処理が選択的に実行される。
【0102】
また、エラー訂正テーブル200に、中間ブロックのブロックタイプフィールドが正しくない場合、同期ヘッダを訂正する又は訂正しないを決定するためのフラグを設け、エントリ毎に、同期ヘッダを訂正するか否かを制御してもよい。この場合、このフラグは、管理者によって設定可能にしてもよい。
【0103】
なお、図7〜図11に示した前後のブロックの同期ヘッダ及びブロックタイプフィールドの組み合わせは例示であり、本願発明者の研究によると、数十種類の組み合わせにおいて、中間ブロックの同期ヘッダの値を推測できる条件を満たし、中間ブロックの同期ヘッダの値を推測することができる。
【0104】
以上説明したように、本発明の第2の実施に形態によると、中間ブロックの同期ヘッダが正しい値でない場合、前後のブロックの同期ヘッダ及びブロックタイプフィールドに基づいて、中間ブロックの値を推測可能かを判定する。そして、中間ブロックの値を推測できる条件を満たす場合、前後のブロックと中間ブロックとが整合するように、中間ブロックの同期ヘッダを訂正する。このため、前述した第1の実施の形態の効果に加え、第1の実施の形態より多くの場合に中間ブロックの同期ヘッダを訂正することができる。
【0105】
<MPLSネットワークへの実装>
図12は、本発明が適用されたMPLSネットワークの説明図である。
【0106】
ユーザデータをクライアント装置1−1からクライアント装置2−1へ転送する場合、クライアント装置1−1から送信されたイーサフレームを、MPLSエッジ装置11にてオーバーヘッド(OH)を終端し、ユーザデータを抽出し、宛先クライアント装置2−1が接続されたMPLSエッジ装置12を特定する。OHには、宛先であるクライアント装置2−1のアドレス(IPアドレスやディスティネーションアドレスなど)を含む。なお、図12ではユーザデータはSDH/SONET信号を例に説明するが、イーサネット信号など様々な信号でも同じである。
【0107】
そして、特定されたエッジノードを表すMPLSラベル(TLSP)を、抽出されたユーザデータに付して、ユーザデータをカプセル化する。TLSPを用いたカプセル化によって、MPLSネットワーク内のMPLSコア装置21〜23は、クライアント装置2−1の宛先を見ることなく、MPLSネットワークワーク内でエンド・ツー・エンドでパケットを転送(以下、ラベルスイッチと呼ぶ)できる。
【0108】
このとき、MPLSエッジ装置11は、64B/66B符号化を用いて、クライアント装置1−11から受信したユーザデータをカプセル化した後、66ビットのブロックに変換し、MPLSコア装置21に転送する。MPLSコア装置21〜2nは、前段のMPLS装置から送信された66ビットのブロックからイーサフレームを再構築し、MPLSラベルによって、次のMPLS装置を特定し、再構築されたイーサフレームを66ビットのブロックに変換して、次段のMPLS装置に送る。
【0109】
MPLSエッジ装置12は、前段のMPLSコア装置から送信された66ビットのブロックからイーサフレームを再構築し、TLSPを終端して、クライアント装置2−1へユーザデータを転送する。
【0110】
このように、MPLSネットワークに備わるMPLS装置は、前段のMPLS装置から送信された66ビットのブロックからイーサフレームを再構築する際に、66ビットのブロックの破損している同期ヘッダを、前後のブロックからが破損している同期ヘッダを訂正する。
【符号の説明】
【0111】
101、105 クライアント端末
102、104 ネットワークノード
103 ネットワーク
111 ブロック同期部
112 デ・スクランブラ
113 エラー訂正部
114 バッファ
115 判定部
116 訂正部
117 デコーダ
118 エンコーダ
119 スクランブラ
【特許請求の範囲】
【請求項1】
フレームを第1の所定ビットのデータに分割し、前記分割されたデータに第2の所定ビットの同期ヘッダを付加することによって生成されるブロックを転送するデータ転送装置であって、
前記データ転送装置の動作を処理するロジックと、転送されるブロックを格納するバッファと、前記データ転送装置へのデータを入出力するインターフェースとを備え、
前記ブロックは、連続して順に転送される第1のブロック、第2のブロック及び第3のブロックを含み、
前記ロジックは、
前記第1のブロックに含まれる第1の同期ヘッダ、前記第2のブロックに含まれる第2の同期ヘッダ及び前記第3のブロックに含まれる第3の同期ヘッダを取得し、
前記第2の同期ヘッダが正しい値でない場合、前記第2のブロックが前記第1のブロック及び前記第3のブロックと整合するように、前記第2の同期ヘッダを、前記第1の同期ヘッダと前記第3の同期ヘッダとに基づいて推測できるか否かの第1の判定をし、
前記推測された値に前記第2の同期ヘッダを訂正することを特徴とするデータ転送装置。
【請求項2】
前記各ブロックは、当該ブロックに含まれるデータの種別を表す情報を含み、
前記ロジックは、
前記第1の判定において、前記第2の同期ヘッダを推測できないと判定された場合、
前記第1のブロックに含まれる前記情報と前記第3のブロックに含まれる前記情報とに基づいて、前記第2の同期ヘッダを推測できるか否かの第2の判定をし、
前記第2の判定の結果に基づいて、前記第1のブロック及び前記第3のブロックと整合するように、前記第2の同期ヘッダを訂正することを特徴とする請求項1に記載のデータ転送装置。
【請求項3】
前記データの種別を表す情報は、前記ブロックのデータ部の最先の位置に配置されることを特徴とする請求項2に記載のデータ転送装置。
【請求項4】
前記データ転送装置は、
MPLSラベルを用いてカプセル化されたフレームを転送するものであって、
MPLSネットワークの入口エッジに設けられた場合、前記MPLSラベルをフレームに付加した後、前記ブロックを生成し、
MPLSネットワークの出口エッジに設けられた場合、前記同期ヘッダの訂正を試みた後、受信したフレームから前記MPLSラベルを外すことを特徴とする請求項1から3のいずれか一つに記載のデータ転送装置。
【請求項5】
前記ロジックは、前記第1の同期ヘッダが、前記第1のブロックにユーザデータのみが含まれていることを示し、かつ、前記第3の同期ヘッダが、前記第3のブロックにユーザデータのみが含まれていることを示す場合、前記第2のブロックにユーザデータのみが含まれていることを示す値に、前記第2の同期ヘッダを訂正することを特徴とする請求項1に記載のデータ転送装置。
【請求項6】
少なくとも2台のノード間でデータを転送するデータ転送システムであって、
前記各ノードは、
前記ノードの動作を処理するロジックと、転送されるブロックを格納するバッファと、前記ノードへのデータを入出力するインターフェースとを備え、
フレームを第1の所定ビットのデータに分割し、前記分割されたデータに第2の所定ビットの同期ヘッダを付加することによって生成されるブロックを転送し、
前記ブロックは、連続して順に転送される第1のブロック、第2のブロック及び第3のブロックを含み、
前記各ノードは、
前記第1のブロックに含まれる第1の同期ヘッダ、前記第2のブロックに含まれる第2の同期ヘッダ及び前記第3のブロックに含まれる第3の同期ヘッダを取得し、
前記第2の同期ヘッダが正しい値でない場合、前記第2のブロックが前記第1のブロック及び前記第3のブロックと整合するように、前記第2の同期ヘッダを、前記第1の同期ヘッダと前記第3の同期ヘッダとに基づいて推測できるか否かの第1の判定をし、
前記推測された値に前記第2の同期ヘッダを訂正することを特徴とするデータ転送システム。
【請求項7】
前記各ブロックは、当該ブロックに含まれるデータの種別を表す情報を含み、
前記各ノードは、
前記第1の判定において、前記第2の同期ヘッダを推測できないと判定された場合、
前記第1のブロックに含まれる前記情報と前記第3のブロックに含まれる前記情報とに基づいて、前記第2の同期ヘッダを推測できるか否かの第2の判定をし、
前記第2の判定の結果に基づいて、前記第1のブロック及び前記第3のブロックと整合するように、前記第2の同期ヘッダを訂正することを特徴とする請求項6に記載のデータ転送システム。
【請求項8】
前記データの種別を表す情報は、前記ブロックのデータ部の最先の位置に配置されることを特徴とする請求項7に記載のデータ転送システム。
【請求項9】
前記データ転送システムは、MPLSラベルを用いてカプセル化されたフレームを転送するMPLSネットワークであって、
前記ノードは、
前記データ転送システムの入口エッジに設けられた場合、前記MPLSラベルをフレームに付加した後、前記ブロックを生成し、
前記データ転送システムの出口エッジに設けられた場合、前記同期ヘッダの訂正を試みた後、受信したフレームから前記MPLSラベルを外すことを特徴とする請求項6から8のいずれか一つに記載のデータ転送システム。
【請求項10】
前記各ノードは、前記第1の同期ヘッダが、前記第1のブロックにユーザデータのみが含まれていることを示し、かつ、前記第3の同期ヘッダが、前記第3のブロックにユーザデータのみが含まれていることを示す場合、前記第2のブロックにユーザデータのみが含まれていることを示す値に、前記第2の同期ヘッダを訂正することを特徴とする請求項6に記載のデータ転送システム。
【請求項1】
フレームを第1の所定ビットのデータに分割し、前記分割されたデータに第2の所定ビットの同期ヘッダを付加することによって生成されるブロックを転送するデータ転送装置であって、
前記データ転送装置の動作を処理するロジックと、転送されるブロックを格納するバッファと、前記データ転送装置へのデータを入出力するインターフェースとを備え、
前記ブロックは、連続して順に転送される第1のブロック、第2のブロック及び第3のブロックを含み、
前記ロジックは、
前記第1のブロックに含まれる第1の同期ヘッダ、前記第2のブロックに含まれる第2の同期ヘッダ及び前記第3のブロックに含まれる第3の同期ヘッダを取得し、
前記第2の同期ヘッダが正しい値でない場合、前記第2のブロックが前記第1のブロック及び前記第3のブロックと整合するように、前記第2の同期ヘッダを、前記第1の同期ヘッダと前記第3の同期ヘッダとに基づいて推測できるか否かの第1の判定をし、
前記推測された値に前記第2の同期ヘッダを訂正することを特徴とするデータ転送装置。
【請求項2】
前記各ブロックは、当該ブロックに含まれるデータの種別を表す情報を含み、
前記ロジックは、
前記第1の判定において、前記第2の同期ヘッダを推測できないと判定された場合、
前記第1のブロックに含まれる前記情報と前記第3のブロックに含まれる前記情報とに基づいて、前記第2の同期ヘッダを推測できるか否かの第2の判定をし、
前記第2の判定の結果に基づいて、前記第1のブロック及び前記第3のブロックと整合するように、前記第2の同期ヘッダを訂正することを特徴とする請求項1に記載のデータ転送装置。
【請求項3】
前記データの種別を表す情報は、前記ブロックのデータ部の最先の位置に配置されることを特徴とする請求項2に記載のデータ転送装置。
【請求項4】
前記データ転送装置は、
MPLSラベルを用いてカプセル化されたフレームを転送するものであって、
MPLSネットワークの入口エッジに設けられた場合、前記MPLSラベルをフレームに付加した後、前記ブロックを生成し、
MPLSネットワークの出口エッジに設けられた場合、前記同期ヘッダの訂正を試みた後、受信したフレームから前記MPLSラベルを外すことを特徴とする請求項1から3のいずれか一つに記載のデータ転送装置。
【請求項5】
前記ロジックは、前記第1の同期ヘッダが、前記第1のブロックにユーザデータのみが含まれていることを示し、かつ、前記第3の同期ヘッダが、前記第3のブロックにユーザデータのみが含まれていることを示す場合、前記第2のブロックにユーザデータのみが含まれていることを示す値に、前記第2の同期ヘッダを訂正することを特徴とする請求項1に記載のデータ転送装置。
【請求項6】
少なくとも2台のノード間でデータを転送するデータ転送システムであって、
前記各ノードは、
前記ノードの動作を処理するロジックと、転送されるブロックを格納するバッファと、前記ノードへのデータを入出力するインターフェースとを備え、
フレームを第1の所定ビットのデータに分割し、前記分割されたデータに第2の所定ビットの同期ヘッダを付加することによって生成されるブロックを転送し、
前記ブロックは、連続して順に転送される第1のブロック、第2のブロック及び第3のブロックを含み、
前記各ノードは、
前記第1のブロックに含まれる第1の同期ヘッダ、前記第2のブロックに含まれる第2の同期ヘッダ及び前記第3のブロックに含まれる第3の同期ヘッダを取得し、
前記第2の同期ヘッダが正しい値でない場合、前記第2のブロックが前記第1のブロック及び前記第3のブロックと整合するように、前記第2の同期ヘッダを、前記第1の同期ヘッダと前記第3の同期ヘッダとに基づいて推測できるか否かの第1の判定をし、
前記推測された値に前記第2の同期ヘッダを訂正することを特徴とするデータ転送システム。
【請求項7】
前記各ブロックは、当該ブロックに含まれるデータの種別を表す情報を含み、
前記各ノードは、
前記第1の判定において、前記第2の同期ヘッダを推測できないと判定された場合、
前記第1のブロックに含まれる前記情報と前記第3のブロックに含まれる前記情報とに基づいて、前記第2の同期ヘッダを推測できるか否かの第2の判定をし、
前記第2の判定の結果に基づいて、前記第1のブロック及び前記第3のブロックと整合するように、前記第2の同期ヘッダを訂正することを特徴とする請求項6に記載のデータ転送システム。
【請求項8】
前記データの種別を表す情報は、前記ブロックのデータ部の最先の位置に配置されることを特徴とする請求項7に記載のデータ転送システム。
【請求項9】
前記データ転送システムは、MPLSラベルを用いてカプセル化されたフレームを転送するMPLSネットワークであって、
前記ノードは、
前記データ転送システムの入口エッジに設けられた場合、前記MPLSラベルをフレームに付加した後、前記ブロックを生成し、
前記データ転送システムの出口エッジに設けられた場合、前記同期ヘッダの訂正を試みた後、受信したフレームから前記MPLSラベルを外すことを特徴とする請求項6から8のいずれか一つに記載のデータ転送システム。
【請求項10】
前記各ノードは、前記第1の同期ヘッダが、前記第1のブロックにユーザデータのみが含まれていることを示し、かつ、前記第3の同期ヘッダが、前記第3のブロックにユーザデータのみが含まれていることを示す場合、前記第2のブロックにユーザデータのみが含まれていることを示す値に、前記第2の同期ヘッダを訂正することを特徴とする請求項6に記載のデータ転送システム。
【図1】
【図2】
【図3A】
【図3B】
【図4】
【図5】
【図6】
【図7】
【図8】
【図9】
【図10】
【図11】
【図12】
【図2】
【図3A】
【図3B】
【図4】
【図5】
【図6】
【図7】
【図8】
【図9】
【図10】
【図11】
【図12】
【公開番号】特開2011−182287(P2011−182287A)
【公開日】平成23年9月15日(2011.9.15)
【国際特許分類】
【出願番号】特願2010−46264(P2010−46264)
【出願日】平成22年3月3日(2010.3.3)
【出願人】(000005108)株式会社日立製作所 (27,607)
【Fターム(参考)】
【公開日】平成23年9月15日(2011.9.15)
【国際特許分類】
【出願日】平成22年3月3日(2010.3.3)
【出願人】(000005108)株式会社日立製作所 (27,607)
【Fターム(参考)】
[ Back to top ]