(57)【要約】【課題】データ通信の帯域を圧迫することなく、最終データの消失によるＩ／Ｏ停止を予防することのできるデータ通信装置、データ通信システム及びデータ通信方法を提供すること。【解決手段】並び順が規定されている複数のデータ列を他のデータ通信装置に送信する送信手段を有するデータ通信装置であって、データ通信装置及び他のデータ通信装置の各ポートの状態に関する情報を有する装置情報収集手段と、装置情報収集手段が有する情報に基づき前記各ポートにおける伝送エラーの発生頻度の上昇を予測するエラー発生予測手段と、エラー発生予測手段により伝送エラーの発生頻度の上昇が予測された場合に、最後のデータ列を含むデータである最終データを二回以上送信するよう送信手段に指示する指示手段と、を備え、送信手段は、指示手段より指示を受信した場合に最終データを二回以上送信するデータ通信装置。【選択図】      図１
2015177408.tif 000002
【特許請求の範囲】
【請求項１】
並び順が規定されている複数のデータ列を他のデータ通信装置に送信する送信手段を有するデータ通信装置であって、
前記データ通信装置及び他のデータ通信装置の各ポートの状態に関する情報を有する装置情報収集手段と、
前記装置情報収集手段が有する情報に基づき前記各ポートにおける伝送エラーの発生頻度の上昇を予測するエラー発生予測手段と、
前記エラー発生予測手段により伝送エラーの発生頻度の上昇が予測された場合に、最後のデータ列を含むデータである最終データを二回以上送信するよう前記送信手段に指示する指示手段と、を備え、
前記送信手段は、前記指示手段より前記指示を受信した場合に前記最終データを二回以上送信するデータ通信装置。
【請求項２】
前記エラー発生予測手段は、前記データ通信装置及び他のデータ通信装置に用いられている部品の状態監視又は前記各ポートの伝送エラー率の比較のうち少なくともいずれか一方に基づいて前記伝送エラーの発生頻度の上昇を予測する、請求項１に記載のデータ通信装置。
【請求項３】
同内容の前記最終データを二回以上受信した場合に一の前記最終データを保持し残りの前記最終データを破棄する受信手段をさらに備える請求項１又は２に記載のデータ通信装置。
【請求項４】
前記指示を受信した送信手段に対応するポートの伝送エラー発生頻度の平常化を確認した場合に、前記指示を解除するよう指示するキャンセル指示手段をさらに備える請求項１乃至３のいずれか一項に記載のデータ通信装置。
【請求項５】
データ通信装置及び他のデータ通信装置を含むデータ通信システムであって、
前記データ通信装置及び他のデータ通信装置の各ポートの状態に関する情報を有する装置情報収集手段と、
前記装置情報収集手段が有する情報に基づき前記各ポートにおける伝送エラーの発生頻度の上昇を予測するエラー発生予測手段と、
前記エラー発生予測手段により伝送エラーの発生頻度の上昇が予測された場合に、並び順が規定されている複数のデータ列のうち最後のデータ列を含むデータである最終データを二回以上送信するよう前記データ通信装置及び他のデータ通信装置に指示する指示手段と、を備え、
前記データ通信装置及び他のデータ通信装置は、前記複数のデータ列を送信する送信手段を有し、
前記送信手段は、前記データ通信装置及び前記他のデータ通信装置が前記指示を受信した場合に前記最終データを二回以上送信するデータ通信システム。
【請求項６】
前記エラー発生予測手段は、前記データ通信装置及び他のデータ通信装置に用いられている部品の状態監視又は前記各ポートの伝送エラー率の比較のうち少なくともいずれか一方に基づいて前記伝送エラーの発生頻度の上昇を予測する、請求項５に記載のデータ通信システム。
【請求項７】
前記データ通信装置とは別に設けられた管理コントローラが前記装置情報通信手段と、前記エラー発生予測手段と、前記指示手段と、を備える請求項５又は６に記載のデータ通信システム。
【請求項８】
前記データ通信装置及び他のデータ通信装置は、同内容の前記最終データを二回以上受信した場合に一の前記最終データを保持し残りの前記最終データを破棄する受信手段をさらに備える付記５乃至７のいずれか一項に記載のデータ通信システム。
【請求項９】
データ通信装置及び他のデータ通信装置を含むデータ通信システムにおけるデータ通信方法であって、
前記データ通信装置及び他のデータ通信装置の各ポートの状態に関する情報に基づき前記各ポートにおける伝送エラーの発生頻度の上昇を予測するエラー発生予測ステップと、
前記エラー発生予測ステップにて伝送エラーの発生頻度の上昇が予測された場合に、並び順が規定されている複数のデータ列のうち最後のデータ列を含むデータである最終データを二回以上送信するよう指示する指示ステップと、
前記指示に応じて前記最終データを二回以上送信する送信ステップと、を含むデータ通信方法。
【請求項１０】
前記エラー発生予測ステップにて、前記データ通信装置及び他のデータ通信装置に用いられている部品の状態監視又は前記各ポートの伝送エラー率の比較のうち少なくともいずれか一方に基づいて前記伝送エラーの発生頻度の上昇を予測する、請求項９に記載のデータ通信方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、データ通信装置、データ通信システム及びデータ通信方法に関する。
【背景技術】
【０００２】
ファイバチャネル（Fibre Channel、以下FC）通信では、ひとつのシーケンスを１個または複数個のフレームで伝送する。このとき、受信側は、最後のデータ列を含むフレーム（最終フレーム）を受信することにより、一連のフレームの伝送が完了したことを認識することができる。
【０００３】
クラス３のFC通信では、フレーム伝送におけるACK（ACKnowledgement）応答が定義されていない（非特許文献１）。そのため伝送路上でフレーム伝送エラーが発生すると、該当フレームが受信側に到達しないだけでなく、送信側が伝送エラーを認識することもできない。
【０００４】
もし、クラス３のFC通信でフレーム伝送エラーが発生して「最終フレーム以外」のフレームの消失が発生した場合、受信側が消失したフレームを受信していなかったとしても、受信側が最終フレームを受信した時点で一連のフレームの伝送が完了する。その後、例えばSCSI（Small Computer System Interface）レイヤー等受信側の上位レイヤーがフレームの消失を認識して送信側にエラーレスポンスを返すことにより、送信側に再送を促すことができる。
【先行技術文献】
【非特許文献】
【０００５】
【非特許文献１】「ファイバチャネル  技術解説書II」  JDSFファイバチャネル技術部会監修・執筆  ６３頁「(8) クラス3データ伝送」
【発明の概要】
【発明が解決しようとする課題】
【０００６】
しかし、関連技術には以下の問題があった。すなわち、上述した通りクラス３のFC通信にはACK応答が存在しない。そのため、「最終フレーム」が消失した場合には、受信側は最終フレーム待ち、送信側はレスポンス待ちの状態で両系が待ち状態となり、フレーム伝送が停止する。上位レイヤーの視点では、この状態は発行したI/O（Input/Output）に対する応答が返ってこない無応答状態に見える。
【０００７】
このような無応答状態に陥った場合、一般的には、例えばSCSIレイヤー等上位レイヤーのタイマーにより３０秒後、または６０秒後に応答待ち状態がタイムアウトして再送処理が実行される。しかし、少なくともタイムアウトするまでの間はI/Oが停止することになる。
【０００８】
本発明は、上述した課題を解決するデータ通信装置、データ通信システム及びデータ通信方法を提供することを目的とする。
【課題を解決するための手段】
【０００９】
本発明のデータ通信装置は、並び順が規定されている複数のデータ列を他のデータ通信装置に送信する送信手段を有するデータ通信装置であって、データ通信装置及び他のデータ通信装置の各ポートの状態に関する情報を有する装置情報収集手段と、装置情報収集手段が有する情報に基づき前記各ポートにおける伝送エラーの発生頻度の上昇を予測するエラー発生予測手段と、エラー発生予測手段により伝送エラーの発生頻度の上昇が予測された場合に、最後のデータ列を含むデータである最終データを二回以上送信するよう送信手段に指示する指示手段と、を備え、送信手段は、指示手段より指示を受信した場合に最終データを二回以上送信する。
【００１０】
本発明のデータ通信システムは、データ通信装置及び他のデータ通信装置を含むデータ通信システムであって、データ通信装置及び他のデータ通信装置の各ポートの状態に関する情報を有する装置情報収集手段と、装置情報収集手段が有する情報に基づき各ポートにおける伝送エラーの発生頻度の上昇を予測するエラー発生予測手段と、エラー発生予測手段により伝送エラーの発生頻度の上昇が予測された場合に、並び順が規定されている複数のデータ列のうち最後のデータ列を含むデータである最終データを二回以上送信するようデータ通信装置及び他のデータ通信装置に指示する指示手段と、を備え、データ通信装置及び他のデータ通信装置は、複数のデータ列を送信する送信手段を有し、送信手段は、データ通信装置及び前記他のデータ通信装置が指示を受信した場合に最終データを二回以上送信する。
【００１１】
本発明のデータ通信方法は、データ通信装置及び他のデータ通信装置を含むデータ通信システムにおけるデータ通信方法であって、データ通信装置及び他のデータ通信装置の各ポートの状態に関する情報に基づき各ポートにおける伝送エラーの発生頻度の上昇を予測するエラー発生予測ステップと、エラー発生予測ステップにて伝送エラーの発生頻度の上昇が予測された場合に、並び順が規定されている複数のデータ列のうち最後のデータ列を含むデータである最終データを二回以上送信するよう指示する指示ステップと、指示に応じて最終データを二回以上送信する送信ステップと、を含む。
【発明の効果】
【００１２】
本発明によれば、データ通信の帯域を圧迫することなく、最終データの消失によるＩ／Ｏ停止を予防することのできるデータ通信装置、データ通信方法及びデータ通信システムを提供することができる。
【図面の簡単な説明】
【００１３】
【図１】第１の実施形態にかかるデータ通信装置１００の構成を示す図である。
【図２】第１の実施形態にかかるデータ通信装置１００の動作を説明するフロー図である。
【図３】第２の実施形態にかかるデータ通信システム２０００の構成を示す図である。
【図４】第２の実施形態にかかるＦＣフレームヘッダの構成を示すである。
【図５】第３の実施形態にかかるデータ通信システム２０００のうち一つのリンクの両端のポートに着目した場合の構成を示す図である。
【図６】第３の実施形態にかかる管理テーブル１１４ｂに格納されている情報を示す図である。
【図７】第３の実施形態にかかるデータ通信システム２０００の動作を示す図である。
【図８】第３の実施形態にかかるデータ通信システム２０００の動作を示す図である。
【図９】第３の実施形態にかかるデータ通信システム２０００の動作を示す図である。
【図１０】第３の実施形態にかかるデータ通信システム２０００の動作を示す図である。
【図１１】Rapid and Reliable Data Delivery、ＴＣＰ／ＩＰにおける伝送フローを示す図である。
【図１２】第４の実施形態にかかるデータ通信システム３０００の構成を示す図である。
【図１３】第４の実施形態にかかるデータ通信システム３０００の動作を示す図である。
【図１４】ＴＣＰ／ＩＰにおける伝送フローを示す図である。
【図１５】ＴＣＰ／ＩＰにおける伝送フローを示す図である。
【発明を実施するための形態】
【００１４】
［第１の実施形態］
本実施形態においては、一例としてフレーム単位でデータを伝送する態様について説明する。
【００１５】
図１は、第１の実施形態にかかるデータ通信装置１００の構成を示す図である。データ通信装置１００は、装置情報収集手段１１０、エラー発生予測手段１１１、指示手段１１２及び送信手段１１３を備える。データ通信装置１００は、送信手段１１３により、並び順が規定されている複数のフレームを他のデータ通信装置（図示せず）に送信する。
【００１６】
装置情報収集手段１１０は、一定時間間隔おきにデータ通信装置１００及び他のデータ通信装置の各ポートの状態に関する情報を有する。情報収集方法としては、装置情報収集手段１１０によりポーリングする方法や、各装置の装置情報送信手段が一定時間間隔おきに情報を送信する方法が考えられる。この他、データ通信システムの管理者等が予め装置情報収集手段１１０に各ポートの状態に関する情報を記憶させてもよい。
【００１７】
エラー発生予測手段１１１は、装置情報収集手段１１０が有する情報に基づき各ポートの伝送エラーの発生頻度の上昇を予測する。
【００１８】
指示手段１１２は、エラー発生予測手段１１１により伝送エラーの発生頻度の上昇が予測された場合、動作モードを多重化モードに変更するように、すなわち、最終フレームを二回以上送信するように送信手段１１３に指示する。ここで、最終フレームとは、並び順が規定されている複数のフレームのうち最後のフレームをいう。
【００１９】
送信手段１１３は、指示手段１１２より上記指示を受信した場合、最終フレームを二回以上送信する。
【００２０】
続いて、図２を用いてデータ通信装置１００の動作を説明する。
【００２１】
装置情報収集手段１１０は、一定時間間隔おきにデータ通信装置１００及び他のデータ通信装置の各ポートの状態に関する情報を収集する（ステップＳ２１）。エラー発生予測手段１１１は、装置情報収集手段１１０が有する情報に基づき各ポートの伝送エラーの発生頻度の上昇を予測する（ステップＳ２２）。エラー発生予測手段１１１により伝送エラーの発生頻度の上昇が予測された場合（ステップＳ２２でＹｅｓ）、指示手段１１２は送信手段１１３に対して最終フレームを二回以上送信するように指示する（ステップＳ２３）。当該指示を受信した送信手段１１３は、最終フレームを二回以上送信する（ステップＳ２４）。伝送エラーの発生頻度の上昇が予測されない場合は（ステップＳ２２でＮｏ）、最終フレームを二回以上送信しない。
【００２２】
本実施形態にかかるデータ通信装置１００によれば、エラー発生予測手段１１１により伝送エラーの発生頻度の上昇が予測された場合に指示手段１１２が最終フレームを二回以上送信するよう送信手段１１３に指示し、当該指示を受信した送信手段１１３が最終フレームを二回以上送信する。これにより、二回以上送信された最終フレームを受信する側の装置においては、二回以上送信されたいずれかの最終フレームが消失した場合であっても消失していない最終フレームを用いて受信を完結させることができる。この結果、最終フレームの消失によるＩ／Ｏ停止を予防することができる。また、最終フレームのみを二回以上送信するため、FC通信の帯域を圧迫することがない。
【００２３】
二回以上送信された最終フレームを受信する側の装置においては、同内容の最終フレームを二回以上受信した場合に一の最終フレームを保持し残りの最終フレームを破棄する受信手段を設けることができる。
【００２４】
［第２の実施形態］
本実施形態においては、一例としてフレーム単位でデータを伝送する態様について説明する。
【００２５】
図３は、第２の実施形態にかかるデータ通信システム２０００の構成を示す図である。本実施形態では、管理コントローラ８００を設け、第１の実施形態にかかるデータ通信装置１００における装置情報収集手段、エラー発生予測手段、指示手段に対応する手段を管理コントローラ８００に設けた例について説明する。なお、本実施形態では、指示手段に対応する手段として二重化指示手段１１２ｂを設け、最終フレームを連続して二回送信（二重送信）する態様について説明する。
【００２６】
データ通信システム２０００は、管理コントローラ８００及び装置４００、５００、６００、７００（以下、各装置）を含む。各装置は例えばサーバ、ＦＣスイッチ、ストレージである。
【００２７】
管理コントローラ８００は、さらに管理テーブル１１４ｂ及びキャンセル指示手段１１５ｂを備える。
【００２８】
装置情報収集手段１１０ｂは、一定時間間隔おきに後述する各装置の装置情報送信手段から各装置の各ポートの状態に関する情報を収集し、管理テーブル１１４ｂに保持する。情報収集方法としては、装置情報収集手段１１０ｂによりポーリングする方法や、各装置の装置情報送信手段が一定時間間隔おきに情報を送信する方法が考えられる。この他、データ通信システムの管理者等が予め装置情報収集手段１１０ｂに各ポートの状態に関する情報を記憶させてもよい。
【００２９】
エラー発生予測手段１１１ｂは、管理テーブル１１４ｂに保持された情報に基づき各ポートの伝送エラーの発生頻度の上昇を予測する。
【００３０】
二重化指示手段１１２ｂは、エラー発生予測手段１１１ｂにより伝送エラーの発生頻度の上昇が予測された場合、該当ポートを有する装置と、その対向ポートを有する装置とに、より詳細にはそれぞれの装置の二重化指示受信手段１１８（後述）に、最終フレームを二重送信するよう二重化指示を発行する。二重化指示には、伝送エラーの発生頻度の上昇が予測されたポート、すなわち二重化指示の対象となるポートの情報も含まれる。
【００３１】
キャンセル指示手段１１５ｂは、装置情報収集手段１１０ｂが二重化指示の対象となるポートの伝送エラーの発生頻度の平常化を確認した場合、該当ポートを有する装置の二重化指示受信手段１１８と、その対向ポートを有する装置の二重化指示受信手段１１８とに、二重化指示を解除するよう二重化キャンセル指示を発行する。二重化キャンセル指示には、二重化指示のキャンセル対象となるポート番号の情報も含まれる。
【００３２】
装置情報送信手段１１６ｃ、１１６ｄ、１１６ｅ、１１６ｆ（以下、１１６）は、管理コントローラ８００に自装置の各ポートの状態に関する情報を送信する。
【００３３】
二重化指示受信手段１１８ｃ、１１８ｄ、１１８ｅ、１１８ｆ（以下、１１８）は、管理コントローラ８００の二重化指示手段１１２ｂにより送信された二重化指示を受信し、該当ポートの送信手段１１３（後述）と受信手段１１７（後述）の動作モードを二重化モードに変更する。また、二重化指示受信手段１１８は、管理コントローラ８００のキャンセル指示手段１１５ｂより二重化キャンセル指示を受信した場合、該当ポートの送信手段１１３と受信手段１１７の二重化モードを解除する。
【００３４】
受信フレーム保持手段１１９ｃ、１１９ｄ、１１９ｅ、１１９ｆ（以下、１１９）は、受信手段１１７が受信したフレームのヘッダ情報を保持する。
【００３５】
図４は、第２の実施形態におけるＦＣフレームヘッダの構成を示すである。図４における各ヘッダ情報について説明する。
・D_ID：送信先のポートアドレスである。
・S_ID：送信元のポートアドレスである。
・F_CTL：先頭フレームか、最終フレームか、送信側がオリジネータかレスポンダか等、エクスチェンジやシーケンスの属性を表す値である。
・SEQ_ID：D_IDとS_IDの組に対して、シーケンスごとに固有の番号である。
・SEQ_CNT：ひとつのシーケンス中の複数フレームの連続番号、又はひとつのエクスチェンジ中の複数シーケンスの連続番号である。
・OX_ID：オリジネータが発行するエクスチェンジ番号である。
・RX_ID：レスポンダが発行するエクスチェンジ番号である。
【００３６】
送信手段１１３ｃ、１１３ｄ、１１３ｅ、１１３ｆ（以下、１１３）は、二重化モードで動作する場合、フレームを送信する際に送信対象フレームのヘッダのF_CTLフィールド（図４参照）の「End_Sequence」ビットを確認する。「End_Sequence」ビットが１であった場合と０であった場合とで以下のように動作する。
【００３７】
F_CTLフィールドの「End_Sequence」ビットが１であった場合、送信対象のフレームが該当シーケンスの最終フレームであることを意味する。この場合送信手段１１３は、フレームを連続して二回送信する。隣接ノード間のリンクに対する連続送信であるため、同一フレームを二回送信する間に、別のフレームの送信は割り込まない。
【００３８】
F_CTLフィールドの「End_Sequence」ビットが０であった場合、送信対象のフレームが該当シーケンスの最終フレームではないことを意味する。この場合送信手段１１３は、フレームを一回だけ送信する。
【００３９】
受信手段１１７ｃ、１１７ｄ、１１７ｅ、１１７ｆ（以下、１１７）は、二重化モードで動作する場合、フレームを受信した際に、受信フレームのヘッダのF_CTLフィールド（図４参照）の「End_Sequence」ビットを確認する。「End_Sequence」ビットが１であった場合と０であった場合とで以下のように動作する。
【００４０】
「End_Sequence」ビットが1であり、かつ受信フレーム保持手段１１９がヘッダ情報を保持している場合、受信したフレームのヘッダ情報と受信フレーム保持手段１１９が保持しているヘッダ情報とが同一かどうかを確認する。両者のヘッダ情報が同一であった場合、受信手段１１７は、受信したフレームが「二重送信されたフレームの二回目のフレーム」であると判断し、受信したフレームを破棄するとともに受信フレーム保持手段１１９が保持しているヘッダ情報をクリアする。一方、両者のヘッダ情報が同一でなかった場合、受信手段１１７は、「直前に受信した最終フレームの一回目または二回目の受信を消失しており、今回のフレームは、別のシーケンスの最終フレームの一回目の受信である」と判断し、受信フレーム保持手段１１９が保持している情報を受信したフレームのヘッダ情報で更新する。その後、通常の処理により受信したフレームを宛先ポートにルーティングする。また、「End_Sequence」ビットが１であり、かつ受信フレーム保持手段１１９が何も情報を保持していない場合、受信手段１１７は、受信したフレームが「二重送信されたフレームの一回目のフレーム」であると判断して、受信したフレームのヘッダ情報を受信フレーム保持手段１１９に保持する。その後、通常の処理により受信したフレームを宛先ポートにルーティングする。
【００４１】
「End_Sequence」ビットが0であった場合、受信手段１１７は、受信フレーム保持手段１１９が保持しているフレームヘッダ情報をクリアする。その後、通常の処理により受信したフレームを宛先ポートにルーティングする。
【００４２】
なお、連続して受信した二個のフレームの同一性の確認は、フレームヘッダ全体（２４バイト）を比較することや、フレームの一意性を確認することができるヘッダ情報の一部（D_ID、S_ID、SEQ_ID、OX_ID、RX_IDなど）を比較することより行われる。
【００４３】
二重化キャンセル指示を受信した二重化指示受信手段１１８の制御に基づいて二重化モードを解除した送信手段１１３は、最終フレームの二重送信動作を終了する。また、同様に二重化モードを解除した受信手段１１７は、最終フレームの二重受信のチェックと、二重受信した最終フレームの破棄の動作を終了する。
【００４４】
なお、装置が二重化キャンセル指示を受けていない場合でも、二重化モードで動作しているポートがリンクダウンした場合、該当ポートの送信手段１１３は、最終フレームの二重送信動作を終了する。また、この場合、該当ポートの受信手段１１７は、最終フレームの二重受信のチェックと、二重受信した最終フレームの破棄の動作を終了する。
【００４５】
このように管理コントローラ８００による指示以外の要因で二重化モードが解除された場合、管理コントローラ８００は、装置情報収集手段１１０ｂが各装置の装置情報送信手段１１６から各ポートの状態を収集した際に二重化モードの解除を知ることができる。
【００４６】
［第３の実施形態］
本実施形態では、図３における一つのリンクの両端のポートに着目し、第２の実施形態において説明した発明について詳細に説明する。また、本実施形態では、第２の実施形態と同様、最終フレームを二重送信する態様について説明する。
【００４７】
図５は、図３におけるデータ通信システム２０００のうち一つのリンクの両端のポートに着目した場合の構成を示す図である。図６は、管理コントローラ８００が管理する管理テーブル１１４ｂの構成を示す図である。
【００４８】
装置４００と装置５００と管理コントローラ８００とは、LAN（Local Area Network）で接続されている。装置４００のポート１２と装置５００のポート２１とは、FCケーブルで接続されている。
【００４９】
管理コントローラ８００は、装置情報収集手段１１０ｂ、管理テーブル１１４ｂ、エラー発生予測手段１１１ｂ、二重化指示手段１１２ｂ及びキャンセル指示手段１１５ｂを備える。これらは管理コントローラ８００にそれぞれ１個存在する。装置情報収集手段１１０ｂ、エラー発生予測手段１１１ｂ、二重化指示手段１１２ｂ及びキャンセル指示手段１１５ｂの構成は、第２の実施形態において説明した通りである。
【００５０】
管理テーブル１１４ｂには、以下の情報が格納される（図６）。テーブルのエントリはWWPN（World Wide Port Name）単位に存在する。装置情報収集手段１１０ｂが管理テーブル１１４ｂのエントリを作成および更新する。
・IPアドレス：装置のIPアドレスである。
・WWPN：ポートのWWPNであり、テーブル内で一意である。
・Tx（初回登録値）：エントリを新規作成する際のTx（後述）の値である。経年劣化判断の際に用いられる。
・Rx（初回登録値）：エントリを新規作成する際のRx（後述）の値である。経年劣化判断の際に用いられる。
・ポートID（自分自身）：自分自身のポートIDである。
・ポートID（対向ポート）：対向するポートのポートIDである。リンクアップしていない場合は無効値を格納する。管理コントローラは、ポートIDが無効値から有効値に変更された時点でリンクアップしたと認識する。一方、有効値から無効値に変更された時点でリンクダウンしたと認識する。
・Tx：SFP（Small Form factor Pluggable：光ケーブルと装置の接続部のメディアコンバータ）の送信側の電力値である（0dB=1mV）。
・Rx：SFPの受信側の電力値である（0dB=1mV）。
・エラーカウント：装置が保持しているエラーカウンタ値である。一般的には単純なインクリメンタルカウンタの値である。
・I/Oカウント：装置が保持しているI/O回数のカウンタ値である。一般的には単純なインクリメンタルカウンタの値である。
【００５１】
また、収集した装置情報、すなわち管理テーブル１１４ｂが格納する情報から以下の項目が算出され管理テーブル１１４ｂに格納される。
・単位時間のエラーカウント：今回装置より取得したエラーカウント値から、前回取得したエラーカウント値を減算して算出した値である。
・単位時間のI/O回数：今回装置より取得したI/O回数から、前回取得したI/O回数を減算して算出した値である。
【００５２】
また、管理テーブル１１４ｂには、二重化実行中か否かを保持する項目として以下の項目も格納される。
・二重化フラグ：True/Flaseのブール値であり、二重化指示を出しているか否かを示す。
【００５３】
装置４００は、装置情報送信手段１１０ｃ、二重化指示受信手段１１８ｃ、受信手段１１７ｃ、１１７ｃ´、送信手段１１３ｃ、１１３ｃ´、受信フレーム保持手段１１９ｃ、１１９ｃ´及びルーティング手段１２０ｃを備える。装置情報送信手段１１０ｃ、二重化指示受信手段１１８ｃ及びルーティング手段１２０ｃは、装置４００にそれぞれ１個存在する。また、受信手段１１７ｃ、１１７ｃ´、送信手段１１３ｃ、１１３ｃ´及び受信フレーム保持手段１１９ｃ、１１９ｃ´は、装置４００が有するポートごとに存在する。
【００５４】
装置情報送信手段１１６ｃ及び二重化指示受信手段１１８ｃの構成は、第２の実施形態において説明した通りである。
【００５５】
送信手段１１３ｃは、ポート１１にフレームを送信する。送信手段１１３ｃ´は、ポート１２にフレームを送信する。
【００５６】
受信手段１１７ｃは、ポート１１からフレームを受信する。受信手段１１７ｃ´は、ポート１２からフレームを受信する。
【００５７】
受信フレーム保持手段１１９ｃ、１１９ｃ´は、それぞれ受信手段１１７ｃ、１１７ｃ´が受信したフレームのヘッダ情報を保持する。
【００５８】
ルーティング手段１２０ｃは、ポート１１、１２から受信したフレームを適切な宛先のポートにルーティングする。ルーティング手段１２０ｃは一般的なFCスイッチの構成要素であるため、説明を省略する。
【００５９】
装置５００は、装置４００と同様の構成を有する。
【００６０】
続いて、データ通信システム２０００の動作について説明する。
【００６１】
装置情報収集手段１１０ｂは、一定時間間隔おきに装置情報送信手段１１６ｃ、１１６ｄからポート１１、１２、２１、２２の状態を収集する。情報収集方法としては、装置情報収集手段１１０ｂによりポーリングする方法や、装置情報送信手段１１６ｃ、１１６ｄが一定時間間隔おきに装置情報収集手段１１０ｂに情報を送信する方法が考えられる。この他、データ通信システムの管理者等が予め装置情報収集手段１１０ｂに各ポートの状態に関する情報を記憶させてもよい。
【００６２】
装置情報収集手段１１０ｂは、収集した情報に含まれるWWPNを手がかりにして管理テーブル１１４ｂを検索する。該当エントリが見つかった場合は、以下に示すように、エントリの項目を収集した情報で更新する。なお、「WWPN」、「Tx（初回登録値）」、「Rx（初回登録値）」は更新対象外である。
・装置から取得する値のうち、「エラーカウント」と「I/O回数」は、一般的には単純なインクリメンタルカウンタの値である。そのため、管理テーブル１１４ｂのエントリのうち「単位時間のエラーカウント」と「単位時間のI/O回数」は、装置から取得した「エラーカウント」および「I/O回数」と、更新前のエントリの値（前回取得値）を元に算出され、更新される。
・装置から取得した「ポートID（対向ポート）」が無効値であった場合、「二重化フラグ」の値をFalseに更新する。
【００６３】
収集した情報に含まれるWWPNのエントリが管理テーブル１１４ｂ内に存在しない場合は、当該WWPNのエントリを新規作成する。そして、当該WWPNに対応する「Tx（初回登録値）」と「Rx（初回登録値）」には、装置から取得したTxとRxの値が格納される。そして、「WWPN」、「Tx（初回登録値）」、「Rx（初回登録値）」には、エントリを新規作成した際の初回登録値が保持され続ける。装置やケーブル等の経年劣化を判断する場合は、装置を管理コントローラの管理下に置いた直後の値と、その後の運用時の値とを比較する必要があるためである。
【００６４】
また、「単位時間のエラーカウント」と「単位時間のI/O回数」は装置から取得した情報を格納する項目ではないため、「単位時間のエラーカウント」と「単位時間のI/O回数」にはそれぞれ初期値０が格納される。「二重化フラグ」は装置から取得した情報を格納する項目ではないため、「二重化フラグ」には初期値Falseが格納される。
【００６５】
装置情報収集手段１１０ｂが管理テーブル１１４ｂを更新した後、エラー発生予測手段１１１ｂは、管理テーブル１１４ｂの情報に基づきエントリ単位（ポート単位）に伝送エラーの発生頻度の上昇を予測する。ここでは、一例として、以下の条件のいずれかを満たした場合に平常時に比べて該当ポートの伝送エラーの発生頻度が上昇しやすくなっていると判断するものとする。
ａ．「Rx」の値が-10dBである場合。この場合は、伝送能力が不足していると考えられる。
ｂ．「Rx」の値が「Rx（初回登録値）」から-3dB劣化した場合。この場合は、装置やケーブルに経年劣化が生じていると考えられる。
ｃ．同一IPアドレスのエントリのうち、「単位時間のエラーカウント」÷「単位時間のI/O回数」の値が突出している場合。この場合、同一装置内において特定のポートにおいて他のポートよりもI/Oごとのエラー発生回数が多いと考えられる。
【００６６】
条件ａ及びｂは装置の部品の状態監視による予測であり、条件ｃは同一装置内の各ポートの伝送エラー率の比較による予測であるといえる。条件ｃを用いる場合、あるポートの伝送エラー率が閾値を超えなくても、他のポートの挙動との比較により当該ポートの伝送エラーの発生頻度の上昇を予測することができる。
【００６７】
以下では、図７を用いて上述した条件のうちポート21のRxの絶対値が閾値（-10dB）を下回った場合の動作に関して説明する。
【００６８】
例えば、管理コントローラ８００の装置情報収集手段１１０ｂが取得したポート21のRxの値が「-11dB」であった場合、エラー発生予測手段１１１ｂは、管理テーブル１１４ｂのエントリを検査した際に、「WWPN=ポート21」のエントリのRxの値が-10dBを下回ったことを検出する（ステップＳ３１でＹｅｓ）。エラー発生予測手段１１１ｂは、「WWPN=ポート21」の伝送エラーの発生頻度の上昇を予測し、二重化指示手段１１２ｂに当該予測をした旨を通知するとともに、「WWPN=ポート21」のエントリの「二重化フラグ」の値をTrueに更新する（ステップＳ３２）。
【００６９】
二重化指示手段１１２ｂは、管理テーブル１１４ｂの「WWPN=ポート21」のエントリから、伝送エラー発生頻度の上昇を予測した装置のIPアドレス（装置2_IP）とポートID（ポート21_ID）、およびそのポートに接続されている対向ポートのポートID（ポート12_ID）を取得する。また、対向ポートのポートID（ポート12_ID）を手がかりにして管理テーブル１１４ｂの「ポートID（自分自身）」を検索し、該当するエントリから対向ポートを有する装置のIPアドレス（装置1_IP）を取得する（ステップＳ３３）。
【００７０】
次に二重化指示手段１１２ｂは、IPアドレス「装置1_IP」を持つ装置（装置４００）の二重化指示受信手段１１８ｃに「ポート12_ID」に対する最終フレーム二重化指示を発行する。同様に、IPアドレス「装置2_IP」を持つ装置（装置５００）の二重化指示受信手段１１８ｄに「ポート21_ID」に対する最終フレーム二重化指示を発行する（ステップＳ３４）。
【００７１】
装置４００の二重化指示受信手段１１８ｃは、ポート１２に対応する送信手段１１３ｃ´と受信手段１１７ｃ´を二重化モードに変更する。同様に、装置５００の二重化指示受信手段１１８ｄは、ポート２１に対応する送信手段１１３ｄと受信手段１１７ｄを二重化モードに変更する（ステップＳ３５）。これにより、ポート12とポート21が二重化モードで動作することになる。
【００７２】
装置４００の受信手段１１７ｃ´は、ポート12とポート21が二重化モードに切り替わった後、受信フレーム保持手段１１９ｃ´の内容をクリアする。同様に、装置５００の受信手段１１７ｄは、受信フレーム保持手段１１９ｄの内容をクリアする（ステップＳ３６）。
【００７３】
続いて、図８を用いてポート12からポート21へのフレーム送信時の動作について説明する。二重化モードで動作するポート12とポート21に関して、ポート12からポート21への送信と、ポート21からポート12への送信の動作とは、送信装置と受信装置が逆になるだけで動作内容は同様である。そのため、ここではポート12からポート21への送信時の動作についてのみ説明する。
【００７４】
まず、送信手段１１３ｃ´は、送信対象フレームのヘッダのF_CTLフィールド（図４参照）の「End_Sequence」ビットを確認する（ステップＳ４１）。F_CTLフィールドの「End_Sequence」ビットが1であった場合（ステップＳ４１でEnd_Sequence=1）、送信手段１１３ｃ´は、フレームを連続して二回送信する（ステップＳ４２）。一方、F_CTLフィールドの「End_Sequence」ビットが0であった場合（ステップＳ４１でEnd_Sequence=0）、送信手段１１３ｃ´は、フレームを一回だけ送信する（ステップＳ４３）。
【００７５】
続いて、図９を用いてフレームを受信した際の受信手段１１７ｄの動作について説明する。受信手段１１７ｄは、受信したフレームのヘッダのF_CTLフィールド（図4参照）の「End_Sequence」ビットを確認する（ステップＳ５１）。「End_Sequence」ビットが1であり（ステップＳ５１でEnd_Sequence=1）、かつ受信フレーム保持手段１１９ｄがヘッダ情報を保持している場合（ステップＳ５２でＹｅｓ）、受信したフレームのヘッダ情報と、受信フレーム保持手段１１９ｄが保持しているヘッダ情報とが同一かどうかを確認する（ステップＳ５３）。両者のヘッダ情報が同一であった場合（ステップＳ５３でＹｅｓ）、受信手段１１７ｄは受信フレーム保持手段１１９ｄの内容をクリアするとともに（ステップＳ５４）、受信したフレームを破棄する（ステップＳ５５）。一方、両者のヘッダ情報が異なった場合（ステップＳ５３でＮｏ）、受信手段１１７ｄは受信フレーム保持手段１１９ｄの内容をクリアした後（ステップＳ５６）、受信したフレームのヘッダ情報を受信フレーム保持手段１１９ｄに格納する（ステップＳ５７）。そして、受信したフレームをルーティング手段１２０ｄに送信し、通常の処理により宛先ポートにルーティングする（ステップＳ５８）。
【００７６】
「End_Sequence」ビットが1であり（ステップＳ５１でEnd_Sequence=1）、かつ受信フレーム保持手段１１９ｄが何も情報を保持していない場合（ステップＳ５２でＮｏ）、受信手段１１７ｄは、受信したフレームのヘッダ情報を受信フレーム保持手段１１９ｄに保持する（ステップＳ５９）。そして、受信したフレームをルーティング手段１２０ｄに送信し、通常の処理により宛先ポートにルーティングする（ステップＳ５８）。
【００７７】
「End_Sequence」ビットが0であった場合（ステップＳ５１でEnd_Sequence=0）、受信手段１１７ｄは受信フレーム保持手段１１９ｄの内容をクリアする。そして、受信したフレームをルーティング手段１２０ｄに送信し、通常の処理により宛先ポートにルーティングする（ステップＳ６０）。なお、受信フレーム保持手段１１９ｄが保持するヘッダ情報は、フレームヘッダ全体（２４バイト）であってもよいし、フレームの一意性を確認することができるヘッダ情報の一部（D_ID、S_ID、SEQ_ID、OX_ID、RX_IDなどの組み合わせ）であってもよい。
【００７８】
以上の動作により、ポート12とポート21との間における最終フレームの通信だけが二重化される。
【００７９】
続いて、図１０を用いて最終フレームの二重送信を終了させる動作について説明する。例えば、装置情報手段１１０ｂが取得した、ポート21のRxの値が「-9dB」であった場合、エラー発生予測手段１１１ｂは、管理テーブル１１４ｂのエントリを検査した際に「二重化フラグ=True」のエントリ（「WWPN=ポート21」のエントリ）のRxの値が-10dBを上回ったことを検出する（ステップＳ７１でＹｅｓ）。エラー発生予測手段１１１ｂは、「WWPN=ポート21」の伝送エラーの発生頻度の上昇が解消された、すなわち、伝送エラーの発生頻度が平常化したと判断する。そして、二重化キャンセル指示手段１１５ｂに当該旨を通知するとともに、「WWPN=ポート21」のエントリの「二重化フラグ」の値をFalseに更新する（ステップＳ７２）。
【００８０】
キャンセル指示手段１１５ｂは、管理テーブル１１４ｂの「WWPN=ポート21」のエントリから、装置のIPアドレス（装置2_IP）とポートID（ポート21_ID）、およびそのポートに接続されている対向ポートのポートID（ポート12_ID）を取得する。また、対向ポートのポートID（ポート12_ID）を手がかりにして管理テーブル１１４ｂの「ポートID（自分自身）」を検索し、該当するエントリから、対向ポートを持つ装置のIPアドレス（装置1_IP）を取得する（ステップＳ７３）。
【００８１】
キャンセル指示手段１１５ｂは、IPアドレス「装置1_IP」を持つ装置（装置４００）の二重化指示受信手段１１８ｃに対して「ポート12_ID」に対する二重化キャンセル指示を発行する。同様に、IPアドレス「装置2_IP」を持つ装置（装置５００）の二重化指示受信手段１１８ｄに対して、「ポート21_ID」に対する二重化キャンセル指示を発行する（ステップＳ７４）。
【００８２】
装置４００の二重化指示受信手段１１８ｃは、ポート１２に対応する送信手段１１３ｃ´と受信手段１１７ｃ´の二重化モードを解消する。同様に、装置５００の二重化指示受信手段１１８ｄは、ポート２１に対応する送信手段１１３ｄと受信手段１１７ｄの二重化モードを解消する（ステップＳ７５）。これにより、ポート12とポート21との間の最終フレームの二重送信が終了する。
【００８３】
なお、二重化指示受信手段１１８ｃ、１１８ｄが二重化キャンセル指示を受けていない場合でも、二重化モードで動作しているポート12またはポート21のどちらかがリンクダウンした場合、送信手段１１３ｃ´、受信手段１１７ｃ´、送信手段１１３ｄ、受信手段１１７ｄは、二重化モードの動作を終了する。
【００８４】
管理コントローラ８００の装置情報収集手段１１０ｂは、装置情報送信手段１１６ｃ、１１６ｄからポートの状態を収集した際の「ポートID（対向ポート）」が無効値になることにより、リンクダウンによるポート12とポート21の二重化モードの解除を把握する。これにより、管理テーブル１１４ｂの「二重化フラグ」の値がFalseに更新される。
【００８５】
本実施形態におけるデータ通信装置２０００によれば、装置不良などの要因によるフレーム消失の発生しやすさを予測した上で最終フレームの二重送信を行うため、今後発生する可能性がある最終フレーム消失、およびそれを原因とするI/O停止を防ぐことができる。また、フレーム消失の発生しやすさを予測したリンクに対して最終フレームだけを二重送信するため、エンドノード間の伝送性能の劣化が少なくて済む。
【００８６】
［第４の実施形態］
本実施形態では、第１乃至第３の実施形態にかかるデータ通信装置又はデータ通信システムを、イーサネット（登録商標）のレイヤー2スイッチなどで利用される高速再送技術（R2D2：Rapid and Reliable Data Delivery）に適用した場合の例について説明する。
【００８７】
図１１は、R2D2における伝送フローの一例を示す図である。R2D2は、装置間のMAC（Media Access Control）フレーム伝送において、独自のACK応答を定義した上で、NACK（Negative ACKnowledgement）又はごく短時間のACK待ち状態のタイムアウトを行うことにより高速再送を実現する技術である。しかしACK待ち状態が存在することから、ACKが返ってこない場合に問題が生じる。これは、上述したクラス3のFC通信における最終フレームの消失によるI/O停止に相当する。
【００８８】
装置間のリンクにおいて、NACKまたはACK待ち状態のタイムアウトによる再送が頻発する場合、何らかの理由で装置間のリンクの伝送品質が低下していることを意味する。そこで、本実施形態にかかるデータ通信システム３０００では、何らかの伝送品質の低下を検出した場合に、該当リンクに対してデータとACKの二重送信を実行する。
【００８９】
図１２は、データ通信システム３０００の構成を示す図である。装置２００と装置３００はイーサネットで接続されている。なお、図１２には装置２００から装置３００にデータを送信する際に動作する構成を示している。装置３００から装置２００にデータを送信する際に動作する構成は、装置２００と装置３００の構成を逆にするだけであるため、説明を省略する。
【００９０】
装置２００は、送信キュー２１、送信手段２２、送信状態記憶手段２３、ACKＫ受信手段２４、ACK保持手段２５、検出手段２６及び指示手段２７を備える。
【００９１】
送信キュー２１は、一般的なレイヤー2スイッチが持つ送信キューである。
【００９２】
送信手段２２は、送信キュー２１内のデータを装置３００に送信する。この際、データを送信した旨を送信状態記憶手段２３に通知する。また、NACK受信後あるいはACK待ち状態のタイムアウト後にデータを再送する場合、再送である旨を送信状態記憶手段２３に通知する。
【００９３】
送信手段２２は、指示手段２７（後述）からデータ二重送信指示に基づいて同一データ（R2D2の場合は全てのMACフレームとそれらのフレームに対応するACK）を連続して二回送信する。また、送信手段２２は、ACK受信手段２４（後述）により通知されたACKが肯定応答である場合、送信キュー２１内の次のデータを送信する。一方、ACK応答が否定応答である場合には、直前に送信したデータを再送する。また、送信手段２２は、一定時間内にACK受信手段２４から通知を受けなかった場合、直前に送信したデータを再送する。
【００９４】
送信状態記憶手段２３は、以下の情報を保持する。
・正常データ送信回数：送信手段２２から通知を受けた、再送ではないデータの送信回数である。
・再送回数：送信手段２２から通知を受けた、NACK受信後のデータ再送回数、又は送信手段２２から通知を受けた、ACK待ち状態のタイムアウト回数である。
【００９５】
ACK受信手段２４は、装置３００のACK送信手段３３（後述）が送信したACKパケットを受信する。ACK受信手段２４は、受信したACKパケットと、ACK保持手段２５（後述）が保持する情報とを比較する。両者が異なる場合、ACK受信手段２４はACK保持手段２５の内容をクリアする。そして、ACKパケットの情報をACK保持手段２５に格納し、送信手段２２にACKの種類（肯定応答または否定応答）を通知する。一方、ACK受信手段２４が受信したACKパケットと、ACK保持手段２５が保持する情報とが同一である場合、ACK保持手段２５の内容をクリアする。この場合、送信手段２２に対する通知は行わない。
【００９６】
ACK保持手段２５には、直前に受信したACKパケットの一意性を識別できる情報が格納される。ACK保持手段２５には、ACKパケット全体を格納してもよいし、ACKパケットの一部の情報だけを格納してもよい。ただし、装置起動直後のACK保持手段２５には何も格納されていない。
【００９７】
検出手段２６は、第１の実施形態におけるエラー発生予測手段に対応する構成である。NACKまたはACK待ち状態のタイムアウトによる再送が頻発する場合等、何らかの理由で装置間のリンクの伝送品質が低下していることを検出する。この場合、伝送エラーの発生頻度の上昇が予測される。
【００９８】
指示手段２７は、検出手段２６により伝送品質の低下が検出された場合に、送信手段２２に対してデータ二重送信指示を送信する。
【００９９】
装置３００は、受信データ保持手段３１、受信手段３２、ACK送信手段３３及び受信バッファ３４を備える。
【０１００】
受信データ保持手段３１には、直前に受信したデータに関する、データの一意性を識別できる情報（ヘッダ情報など）が格納される。ただし、装置起動直後の受信データ保持手段３１には何も格納されていない。
【０１０１】
受信手段３２は、装置２００の送信手段２２が送信したデータを受信する。受信手段３２は、受信したデータと、受信データ保持手段３１が保持する情報とを比較する。両者が異なる場合、受信手段３２は受信データ保持手段３１の内容をクリアする。そして、受信データ保持手段３１に受信データの一意性を識別する情報を格納し、受信データを受信バッファ３４（後述）に送信してACK送信手段３３（後述）にACK（肯定応答または否定応答）の送信指示を出す。一方、受信手段３２が受信したデータと、受信データ保持手段３１が保持する情報とが同一である場合、受信手段３２は受信データ保持手段３１の内容をクリアし、ACK送信手段３３にACK（肯定応答）の送信指示を出す。受信データは、受信手段３２により破棄される。
【０１０２】
ACK送信手段３３は、ACKパケットを装置２００に送信する。
【０１０３】
受信バッファ３４は、一般的なレイヤー2スイッチが持つ受信バッファである。
【０１０４】
続いて図１３を用いて、検出手段２６が、送信状態記憶手段２３が管理する情報に基づいて装置間のリンクの伝送品質の低下を検出した場合における動作について説明する。ここでは例として、以下の条件のいずれかを満たした場合に、装置間のリンクの伝送品質が低下していると判断するものとする。
・正常データ送信回数に対する再送回数の比率が上昇した場合
・単位時間当たりの再送回数が上昇した場合
検出手段２６が装置間のリンクの伝送品質の低下を検出した場合（ステップＳ８１でＹｅｓ）、指示手段２７は送信手段２２にデータ二重送信指示を送信する（ステップＳ８２）。データ二重送信指示を受けた送信手段２２は、装置２００から装置３００に対するデータ送信の際、同一データを連続して二回送信（二重送信）する（ステップＳ８３）。
【０１０５】
一個目または二個目のデータが消失（ロスト）していない場合（ステップＳ８４でＮｏ）、二重送信されたデータのうち二個目のデータは、受信手段３２により破棄される（ステップＳ８６）。一個目または二個目のデータが消失した場合は（ステップＳ８４でＹｅｓ）、どちらか一方のデータにより通信が継続される（ステップＳ８５）。
【０１０６】
また、装置３００が装置２００から同一データを連続して二回受信した場合、装置３００から装置２００に送信されるACKパケットも連続して二回送信される。
【０１０７】
二重送信されたACKパケットのうち二個目のACKパケットは、ACK受信手段２４により破棄される。一個目または二個目のACKパケットが消失した場合は、どちらか一方のデータにより通信が継続される。
【０１０８】
時間の経過とともに送信状態記憶手段２３が保持する情報が更新され、指示手段２７が、装置間のリンクの伝送品質の低下が解消したと判断した場合、指示手段２７は送信手段２２にデータ二重送信停止指示を出す。データ二重化停止指示を受けた送信手段２２は二重送信を停止する。
【０１０９】
本実施形態にかかるデータ通信システム３０００によれば、第１乃至第３の実施形態にかかるデータ通信装置又はデータ通信システムをR2D2に適用することにより、R2D2におけるACK待ち状態による通信の停止を予防することができる。
【０１１０】
［第５の実施形態］
本実施形態では、第１乃至第３の実施形態にかかるデータ通信装置又はデータ通信システムをTCP（Transmission Control Protocol）/IP（Internet Protocol）に適用した場合の例について説明する。
【０１１１】
TCPにはFC通信における最終フレームという概念が存在しない。しかしTCPはACKが定義されたプロトコルであり、受信側からACKが返ってこない場合に、ACK待ち状態で通信が停止する。これは、クラス3のFC通信における最終フレームの消失によるI/O停止に相当する。
【０１１２】
TCP/IPにおける伝送フローも図１１と同様に示される。図１１において、ノード１はACK待ち状態のタイムアウト後にパケットの再送を行う。ここで再度ノード２からACKを受信できなかった場合、一般的にはACK待ち状態のタイマー値を増加させた上でパケットの再送を行う。再送を繰り返した結果、再送回数が閾値を超えた時点でコネクションが解放される。ノード１上で動作するアプリケーションの視点では、この状態はノード２の無応答に見える。この状態は、例えばモバイル環境等、回線品質が悪い場合に頻発する可能性がある。本実施形態にかかるデータ通信システムでは、この状態を回避するため、ノード２が回線品質の劣化を検出した際に、ACKパケットを二重送信する。
【０１１３】
ノード２は、たとえばシーケンス番号のチェックによるパケット消失の検出や、CRC（Cyclic Redundancy Check）チェックによるパケット破壊の検出の頻度が上がった場合に、回線品質が低下したと判断して、ACKパケットの二重送信を開始する。
【０１１４】
ノード１は、受信したACKパケットのACK番号を記憶し、受信済ACKパケットと同じ内容のACKパケットを受信した場合、受信したACKパケットを破棄する。
【０１１５】
本実施形態にかかるデータ通信システムによれば、例えばモバイル回線等、通信品質が安定しない回線におけるACK待ちによる通信性能劣化を防止することができる。
【０１１６】
なお、ノード１におけるACK待ちタイムアウトの増加や、再送回数が増加した場合などノード１が回線品質低下を検出した場合、ノード１からノード２に対するデータの二重送信を行う方法も考えられる。しかし、これは輻輳の誘発原因となる可能性が高いため、本実施形態ではノード２からノード１に送信するACKパケットだけを二重送信するものとする。
【０１１７】
また、上述した通り、TCPにはFC通信における最終フレームという概念が存在しない。しかし、一連のデータストリームを送信する際の最後のパケットが消失した場合、送信側は最終パケットのACK待ち状態で通信を停止する。これは、クラス3のFC通信における最終フレーム消失によるI/O停止に相当する。
【０１１８】
例えば図１４に示すように三個のパケットを送信するケースを考える。ノード１から送信した３個のパケットのうち二個目のパケットが消失した場合、ノード１は三個目のパケットに対するACKパケットの情報を参照することにより、二個目のパケットが消失したことを把握することができる。これにより、ノード１は即座に二個目のパケットから再送を実行することができる。
【０１１９】
しかし、図１５に示すようにノード１からノード２に送信するパケットが三個の状態で、三個目のパケットが消失した場合、ノード１は三個目のパケットに対するACK待ち状態で通信を停止する。例えばモバイル環境等の、回線品質が悪い場合で再送が多発している場合に、上記のような最終パケット消失による通信性能劣化が発生する可能性がある。
【０１２０】
この状態を回避するため、ACK待ちタイムアウトの増加や、再送回数が増加した場合などノード１が回線品質の劣化を検出した場合に、ノード１の送信バッファ内の最後のパケットを二重送信する。
【０１２１】
ノード２は同一内容のパケットを２回受信した場合に、二個目のパケットを破棄する。
【０１２２】
以上により、例えばモバイル回線等、通信品質が安定しない回線におけるACK待ちによる通信性能劣化を防止することができる。
【０１２３】
以上、本発明の実施形態について説明したが、本発明は、上記実施形態に限定されるものではなく、本発明の趣旨を逸脱しない限りにおいて、他の変形例、応用例を含むことは言うまでもない。
【０１２４】
上記の実施形態の一部又は全部は、以下のようにも記載されうるが、以下には限られない。
【０１２５】
（付記１）
並び順が規定されている複数のデータ列を他のデータ通信装置に送信する送信手段を有するデータ通信装置であって、
前記データ通信装置及び他のデータ通信装置の各ポートの状態に関する情報を有する装置情報収集手段と、
前記装置情報収集手段が有する情報に基づき前記各ポートにおける伝送エラーの発生頻度の上昇を予測するエラー発生予測手段と、
前記エラー発生予測手段により伝送エラーの発生頻度の上昇が予測された場合に、最後のデータ列を含むデータである最終データを二回以上送信するよう前記送信手段に指示する指示手段と、を備え、
前記送信手段は、前記指示手段より前記指示を受信した場合に前記最終データを二回以上送信するデータ通信装置。
【０１２６】
（付記２）
前記エラー発生予測手段は、前記データ通信装置及び他のデータ通信装置に用いられている部品の状態監視又は前記各ポートの伝送エラー率の比較のうち少なくともいずれか一方に基づいて前記伝送エラーの発生頻度の上昇を予測する、付記１に記載のデータ通信装置。
【０１２７】
（付記３）
同内容の前記最終データを二回以上受信した場合に一の前記最終データを保持し残りの前記最終データを破棄する受信手段をさらに備える付記１又は２に記載のデータ通信装置。
【０１２８】
（付記４）
前記指示を受信した送信手段に対応するポートの伝送エラー発生頻度の平常化を確認した場合に、前記指示を解除するよう指示するキャンセル指示手段をさらに備える付記１乃至３のいずれか一項に記載のデータ通信装置。
【０１２９】
（付記５）
データ通信装置及び他のデータ通信装置を含むデータ通信システムであって、
前記データ通信装置及び他のデータ通信装置の各ポートの状態に関する情報を有する装置情報収集手段と、
前記装置情報収集手段が有する情報に基づき前記各ポートにおける伝送エラーの発生頻度の上昇を予測するエラー発生予測手段と、
前記エラー発生予測手段により伝送エラーの発生頻度の上昇が予測された場合に、並び順が規定されている複数のデータ列のうち最後のデータ列を含むデータである最終データを二回以上送信するよう前記データ通信装置及び他のデータ通信装置に指示する指示手段と、を備え、
前記データ通信装置及び他のデータ通信装置は、前記複数のデータ列を送信する送信手段を有し、
前記送信手段は、前記データ通信装置及び前記他のデータ通信装置が前記指示を受信した場合に前記最終データを二回以上送信するデータ通信システム。
【０１３０】
（付記６）
前記エラー発生予測手段は、前記データ通信装置及び他のデータ通信装置に用いられている部品の状態監視又は前記各ポートの伝送エラー率の比較のうち少なくともいずれか一方に基づいて前記伝送エラーの発生頻度の上昇を予測する、付記５に記載のデータ通信システム。
【０１３１】
（付記７）
前記データ通信装置とは別に設けられた管理コントローラが前記装置情報通信手段と、前記エラー発生予測手段と、前記指示手段と、を備える付記５又は６に記載のデータ通信システム。
【０１３２】
（付記８）
前記データ通信装置及び他のデータ通信装置は、同内容の前記最終データを二回以上受信した場合に一の前記最終データを保持し残りの前記最終データを破棄する受信手段をさらに備える付記５乃至７のいずれか一項に記載のデータ通信システム。
【０１３３】
（付記９）
前記管理コントローラは、前記エラー発生予測手段が、前記伝送エラーの発生頻度の上昇を予測したポートの伝送エラー発生頻度の平常化を確認した場合に、前記指示を解除するよう指示するキャンセル指示手段をさらに備える請求項５乃至８のいずれか一項に記載のデータ通信システム。
【０１３４】
（付記１０）
データ通信装置及び他のデータ通信装置を含むデータ通信システムにおけるデータ通信方法であって、
前記データ通信装置及び他のデータ通信装置の各ポートの状態に関する情報に基づき前記各ポートにおける伝送エラーの発生頻度の上昇を予測するエラー発生予測ステップと、
前記エラー発生予測ステップにて伝送エラーの発生頻度の上昇が予測された場合に、並び順が規定されている複数のデータ列のうち最後のデータ列を含むデータである最終データを二回以上送信するよう指示する指示ステップと、
前記指示に応じて前記最終データを二回以上送信する送信ステップと、を含むデータ通信方法。
【０１３５】
（付記１１）
前記エラー発生予測ステップにて、前記データ通信装置及び他のデータ通信装置に用いられている部品の状態監視又は前記各ポートの伝送エラー率の比較のうち少なくともいずれか一方に基づいて前記伝送エラーの発生頻度の上昇を予測する、付記１０に記載のデータ通信方法。
【０１３６】
（付記１２）
同内容の前記最終データを二回以上受信した場合に一の前記最終データを保持し残りの前記最終データを破棄する受信ステップをさらに備える付記１０又は１１に記載のデータ通信方法。
【０１３７】
（付記１３）
前記エラー発生予測ステップにて、前記伝送エラーの発生頻度の上昇を予測したポートの伝送エラー発生頻度の平常化が確認された場合に、前記指示を解除するよう指示するキャンセル指示ステップをさらに備える請求項１０乃至１２のいずれか一項に記載のデータ通信方法。
【符号の説明】
【０１３８】
１１、１２、２１、２２、２３、２４、２５、２６、３１、３２、３３、３４、３５、３６、４１、４２    ポート
２１    送信キュー
２２、１１３、１１３ｃ、１１３ｃ´、１１３ｄ、１１３ｄ´、１１３ｅ、１１３ｆ    送信手段
２３    送信状態記憶手段
２４    ＡＣＫ受信手段
２５    ＡＣＫ保持手段
２６    検出手段
２７、１１２    指示手段
３１    受信データ保持手段
３２、１１７、１１７ｃ、１１７ｃ´、１１７ｄ、１１７ｄ´、１１７ｅ、１１７ｆ    受信手段
３３    ＡＣＫ送信手段
３４    受信バッファ
１００    データ通信装置
１１０、１１０ｂ    装置情報収集手段
１１１、１１１ｂ    エラー発生予測手段
１１２ｂ    二重化指示手段
１１４ｂ    管理テーブル
１１５ｂ    キャンセル指示手段
１１６、１１６ｃ、１１６ｄ、１１６ｅ、１１６ｆ    装置情報送信手段
１１８、１１８ｃ、１１８ｄ、１１８ｅ、１１８ｆ    二重化指示受信手段
１１９、１１９ｃ、１１９ｃ´、１１９ｄ、１１９ｄ´、１１９ｅ、１１９ｆ    受信フレーム保持手段
１２０ｃ、１２０ｄ    ルーティング手段
２００、３００、４００、５００、６００、７００    装置
８００    管理コントローラ
２０００、３０００    データ通信システム
【図１】
2015177408.tif 000003
【図２】
2015177408.tif 000004
【図３】
2015177408.tif 000005
【図４】
2015177408.tif 000006
【図５】
2015177408.tif 000007
【図６】
2015177408.tif 000008
【図７】
2015177408.tif 000009
【図８】
2015177408.tif 000010
【図９】
2015177408.tif 000011
【図１０】
2015177408.tif 000012
【図１１】
2015177408.tif 000013
【図１２】
2015177408.tif 000014
【図１３】
2015177408.tif 000015
【図１４】
2015177408.tif 000016
【図１５】
2015177408.tif 000017