(57)【要約】【課題】高速な通信を提供し、かつ、通信の信頼性を向上させることができるようにする。【解決手段】コマンド処理部１２１は、データを送信する子コマンドをネットワーク通信装置５２Aに供給する。異常判定部１２２は、ログ記憶部１０３Aに記憶された子コマンドの送信結果情報を参照して、処理させるネットワーク通信装置５２を切替える必要があると判定した場合、コマンド処理部１２１に切替指示を出力する。切替指示を受け取ったコマンド処理部１２１は、未送信の子コマンドとデータを、切替後のネットワーク通信装置５２Bに供給する。本発明は、コンピュータなどの情報処理装置に適用できる。【選択図】図３
2007184710.tif 000002
【特許請求の範囲】
【請求項１】
ネットワークと接続して通信するネットワーク通信装置を切替制御する情報処理装置であって、
送信するデータを、前記ネットワーク通信装置の処理単位の送信データに分割して、動作中の前記ネットワーク通信装置に供給するデータ処理手段と、
前記送信データに対して動作中の前記ネットワーク通信装置から返信されてくる送信結果情報に基づいて、前記ネットワーク通信装置を切替えるか否かを判定する判定手段と、
前記ネットワーク通信装置を切替えると判定された場合、動作中の前記ネットワーク通信装置から、待機中の前記ネットワーク通信装置に、前記送信データを処理させるネットワーク通信装置を切替える切替手段と
を備える情報処理装置。
【請求項２】
前記判定手段は、前記ネットワーク通信装置を切替えると判定した場合、前記データ処理手段に切替指示を供給し、
前記データ処理手段は、前記送信データのリストをテーブルに記憶し、前記判定手段から前記切替指示が供給された場合、前記テーブルに基づいて、未送信の前記送信データを、切替後の前記ネットワーク通信装置に供給する
請求項１に記載の情報処理装置。
【請求項３】
前記判定手段は、前記送信結果情報が前記ネットワーク通信装置のハードウエアエラーを表す場合に、前記ネットワーク通信装置を切替えると判定する
請求項１に記載の情報処理装置。
【請求項４】
前記ネットワーク通信装置は、前記ネットワークとの接続をオンまたはオフする接続手段を有しており、
前記切替手段は、動作中の前記ネットワーク通信装置に前記ネットワークとの接続をオフする指令を出力し、待機中の前記ネットワーク通信装置に前記ネットワークとの接続をオンする指令を出力することにより、前記送信データを処理させるネットワーク通信装置を切替える
請求項１に記載の情報処理装置。
【請求項５】
前記送信結果情報をログとして記憶する記憶手段をさらに備え、
前記判定手段は、前記記憶手段から前記送信結果情報を取得する
請求項１に記載の情報処理装置。
【請求項６】
ネットワークと接続して通信するネットワーク通信装置を切替制御する情報処理方法であって、
送信するデータを、前記ネットワーク通信装置の処理単位の送信データに分割して、動作中の前記ネットワーク通信装置に供給し、
前記送信データに対して動作中の前記ネットワーク通信装置から返信されてくる送信結果情報に基づいて、前記ネットワーク通信装置を切替えるか否かを判定し、
前記ネットワーク通信装置を切替えると判定された場合、動作中の前記ネットワーク通信装置から、待機中の前記ネットワーク通信装置に、前記送信データを処理させるネットワーク通信装置を切替える
ステップを含む情報処理方法。
【請求項７】
ネットワークと接続して通信するネットワーク通信装置の切替制御処理を、コンピュータに実行させるプログラムであって、
送信するデータを、前記ネットワーク通信装置の処理単位の送信データに分割して、動作中の前記ネットワーク通信装置に供給し、
前記送信データに対して動作中の前記ネットワーク通信装置から返信されてくる送信結果情報に基づいて、前記ネットワーク通信装置を切替えるか否かを判定し、
前記ネットワーク通信装置を切替えると判定された場合、動作中の前記ネットワーク通信装置から、待機中の前記ネットワーク通信装置に、前記送信データを処理させるネットワーク通信装置を切替える
ステップを含むプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、情報処理装置および方法、並びにプログラムに関し、特に、高速な通信を提供し、かつ、通信の信頼性を向上させることができるようにする情報処理装置および方法、並びにプログラムに関する。
【背景技術】
【０００２】
ブロードバンドのネットワークが普及し、高画質で再生時間の長いAV（Audio/Video）データなどの大容量のデータをネットワークで通信することが多くなってきている。それに伴い、大容量のデータを高速に（短時間で）通信するための技術が各種提案されている（例えば、特許文献１参照）。そのような技術の一つとして、TCP/IPのプロトコル処理を専用のハードウエア（チップ）で行わせるTOE（TCP/IP Offload Engine）と呼ばれる技術がある。
【０００３】
図１を参照して、従来のNIC(Network Interface Card)と、TOEを採用したNICであるネットワーク通信装置との違いについて説明する。
【０００４】
図１Aは、従来のNICを用いて通信を行う場合の構成例を示している。
【０００５】
コンピュータなどのCPU（Central Processing Unit）で実行されるソフトウエアであるユーザアプリケーション１１は、データの演算処理や表示処理、または制御処理などの所定のアプリケーション処理（データ処理）を行う。ユーザアプリケーション１１は、ネットワークに接続された他のコンピュータに送信する実データをOS（Operation System）１２に供給する。
【０００６】
ユーザアプリケーション１１と同様にCPUで実行されるOS１２は、TCP処理部２１とIP処理部２２とを有し、そこで、ユーザアプリケーション１１から供給された実データに対してTCP/IP(Transmission Control Protocol / Internet Protocol)プロトコル処理（TCP処理部２１とIP処理部２２それぞれが行う処理）を行い、NIC１３に供給する。具体的には、TCP処理部２１は、送信する実データにTCPヘッダを付加したTCPパケットを生成するとともに、コネクション管理、エラーの検出と訂正、フロー制御などを行う。IP処理部２２は、IPパケットを生成する処理，IPアドレスとMAC(Media Access Control)アドレスの変換を行うARP(Address Resolution Protocol)処理，IPパケット配送の異常を通知するICMP(Internet Control Message Protocol)処理などを行う。
【０００７】
NIC１３は、MAC処理部２３とPHY処理部２４とを有している。MAC処理部２３は、専用のハードウエアにより、IP処理部２２からデータ（IPパケット）とMACアドレスなどの情報を受け取ってMACフレームを組み立てる（MAC処理）。PHY処理部２４は、専用のハードウエアにより、MAC処理部２３から供給されるMACフレームに対応するディジタルデータをアナログの信号に変換し、ネットワークに送出する（PHY処理）。
【０００８】
図１Bは、ネットワーク通信装置を用いて通信を行う場合の構成例を示している。なお、図１Bにおいて、図１Aと対応する部分については同一の符号を付してあり、その説明は適宜省略する。
【０００９】
図１Aでは、OS１２がTCP処理部２１とIP処理部２２を有していたのに対して、図１Bでは、ネットワーク通信装置３２が、TCP処理部２１とIP処理部２２を、MAC処理部２３およびPHY処理部２４に加えて有している。
【００１０】
ユーザアプリケーション３１は、ユーザアプリケーション１１と同様に、所定のアプリケーション処理（データ処理）を行って、他のコンピュータに送信する実データを、ネットワークに接続しているネットワーク通信装置３２に供給する。TCP処理部２１、IP処理部２２、MAC処理部２３、およびPHY処理部２４のそれぞれは、図１Aを参照して上述した処理を専用のハードウエアにより行う。
【００１１】
従って、図１Aにおける従来のNICを用いた通信では、TCP処理部２１およびIP処理部２２の機能がソフトウエア（OS１２）で実現されていたのに対して、図１Bにおけるネットワーク通信装置３２を用いた通信では、TCP処理部２１およびIP処理部２２の機能が専用のハードウエアで実現されるため、TCP/IPプロトコル処理を高速化することができる。また、ユーザアプリケーション３１が実行されるCPUでは、TCP/IPプロトコル処理にかかる負荷が軽減されるため、アプリケーション処理自体も高速化される。
【００１２】
従って、TOEを採用したネットワーク通信装置３２を用いることにより、大容量のデータを、高速に通信することが可能となる。
【特許文献１】特開２００３−２２９９０５号公報
【発明の開示】
【発明が解決しようとする課題】
【００１３】
しかしながら、ネットワーク通信装置は、ハードウエアの依存度が大きくなるため、ハードウエア障害による故障が致命的となるという問題がある。
【００１４】
本発明は、このような状況に鑑みてなされたものであり、高速な通信を提供し、かつ、通信の信頼性を向上させることができるようにするものである。
【課題を解決するための手段】
【００１５】
本発明の一側面の情報処理装置は、ネットワークと接続して通信するネットワーク通信装置を切替制御する情報処理装置であって、送信するデータを、前記ネットワーク通信装置の処理単位の送信データに分割して、動作中の前記ネットワーク通信装置に供給するデータ処理手段と、前記送信データに対して動作中の前記ネットワーク通信装置から返信されてくる送信結果情報に基づいて、前記ネットワーク通信装置を切替えるか否かを判定する判定手段と、前記ネットワーク通信装置を切替えると判定された場合、動作中の前記ネットワーク通信装置から、待機中の前記ネットワーク通信装置に、前記送信データを処理させるネットワーク通信装置を切替える切替手段とを備える。
【００１６】
前記判定手段には、前記ネットワーク通信装置を切替えると判定した場合、前記データ処理手段に切替指示を供給させ、前記データ処理手段には、前記送信データのリストをテーブルに記憶させ、前記判定手段から前記切替指示が供給された場合、前記テーブルに基づいて、未送信の前記送信データを、切替後の前記ネットワーク通信装置に供給させることができる。
【００１７】
前記判定手段には、前記送信結果情報が前記ネットワーク通信装置のハードウエアエラーを表す場合に、前記ネットワーク通信装置を切替えると判定させることができる。
【００１８】
前記ネットワーク通信装置は、前記ネットワークとの接続をオンまたはオフする接続手段を有しており、前記切替手段には、動作中の前記ネットワーク通信装置に前記ネットワークとの接続をオフする指令を出力させ、待機中の前記ネットワーク通信装置に前記ネットワークとの接続をオンする指令を出力させることにより、前記送信データを処理させるネットワーク通信装置を切替えることができる。
【００１９】
前記送信結果情報をログとして記憶する記憶手段をさらに設け、前記判定手段には、前記記憶手段から前記送信結果情報を取得させることができる。
【００２０】
本発明の一側面の情報処理方法は、ネットワークと接続して通信するネットワーク通信装置を切替制御する情報処理方法であって、送信するデータを、前記ネットワーク通信装置の処理単位の送信データに分割して、動作中の前記ネットワーク通信装置に供給し、前記送信データに対して動作中の前記ネットワーク通信装置から返信されてくる送信結果情報に基づいて、前記ネットワーク通信装置を切替えるか否かを判定し、前記ネットワーク通信装置を切替えると判定された場合、動作中の前記ネットワーク通信装置から、待機中の前記ネットワーク通信装置に、前記送信データを処理させるネットワーク通信装置を切替えるステップを含む。
【００２１】
本発明の一側面のプログラムは、ネットワークと接続して通信するネットワーク通信装置の切替制御処理を、コンピュータに実行させるプログラムであって、送信するデータを、前記ネットワーク通信装置の処理単位の送信データに分割して、動作中の前記ネットワーク通信装置に供給し、前記送信データに対して動作中の前記ネットワーク通信装置から返信されてくる送信結果情報に基づいて、前記ネットワーク通信装置を切替えるか否かを判定し、前記ネットワーク通信装置を切替えると判定された場合、動作中の前記ネットワーク通信装置から、待機中の前記ネットワーク通信装置に、前記送信データを処理させるネットワーク通信装置を切替えるステップを含む。
【００２２】
本発明の一側面においては、送信するデータが、前記ネットワーク通信装置の処理単位の送信データに分割されて、動作中の前記ネットワーク通信装置に供給される。そして、前記送信データに対して動作中の前記ネットワーク通信装置から返信されてくる送信結果情報に基づいて、前記ネットワーク通信装置を切替えるか否かが判定され、前記ネットワーク通信装置を切替えると判定された場合、動作中の前記ネットワーク通信装置から、待機中の前記ネットワーク通信装置に、前記送信データを処理させるネットワーク通信装置が切替えられる。
【００２３】
ネットワークとは、少なくとも２つの装置が接続され、ある装置から、他の装置に対して、情報の伝達をできるようにした仕組みをいう。ネットワークを介して通信する装置は、独立した装置どうしであっても良いし、１つの装置を構成している内部ブロックどうしであっても良い。
【００２４】
また、通信とは、無線通信および有線通信は勿論、無線通信と有線通信とが混在した通信、即ち、ある区間では無線通信が行われ、他の区間では有線通信が行われるようなものであっても良い。さらに、ある装置から他の装置への通信が有線通信で行われ、他の装置からある装置への通信が無線通信で行われるようなものであっても良い。
【発明の効果】
【００２５】
本発明の一側面によれば、高速な通信を提供し、かつ、通信の信頼性を向上させることができる。
【発明を実施するための最良の形態】
【００２６】
以下に本発明の実施の形態を説明するが、本発明の構成要件と、明細書又は図面に記載の実施の形態との対応関係を例示すると、次のようになる。この記載は、本発明をサポートする実施の形態が、明細書又は図面に記載されていることを確認するためのものである。従って、明細書又は図面中には記載されているが、本発明の構成要件に対応する実施の形態として、ここには記載されていない実施の形態があったとしても、そのことは、その実施の形態が、その構成要件に対応するものではないことを意味するものではない。逆に、実施の形態が構成要件に対応するものとしてここに記載されていたとしても、そのことは、その実施の形態が、その構成要件以外の構成要件には対応しないものであることを意味するものでもない。
【００２７】
本発明の一側面の情報処理装置は、ネットワークと接続して通信するネットワーク通信装置を切替制御する情報処理装置（例えば、図２のコンピュータ５１）であって、送信するデータを、前記ネットワーク通信装置の処理単位の送信データに分割して、動作中の前記ネットワーク通信装置に供給するデータ処理手段（例えば、図３のコマンド処理部１２１）と、前記送信データに対して動作中の前記ネットワーク通信装置から返信されてくる送信結果情報に基づいて、前記ネットワーク通信装置を切替えるか否かを判定する判定手段（例えば、図３の異常判定部１２２）と、前記ネットワーク通信装置を切替えると判定された場合、動作中の前記ネットワーク通信装置から、待機中の前記ネットワーク通信装置に、前記送信データを処理させるネットワーク通信装置を切替える切替手段（例えば、図３の切替部１２３）とを備える。
【００２８】
この情報処理装置は、前記送信結果情報をログとして記憶する記憶手段（例えば、図３のログ記憶部１０３A）をさらに備え、前記判定手段は、前記記憶手段から前記送信結果情報を取得する。
【００２９】
本発明の一側面の情報処理方法またはプログラムは、送信するデータを、前記ネットワーク通信装置の処理単位の送信データに分割して、動作中の前記ネットワーク通信装置に供給し（例えば、図１０のステップＳ１３）、前記送信データに対して動作中の前記ネットワーク通信装置から返信されてくる送信結果情報に基づいて、前記ネットワーク通信装置を切替えるか否かを判定し（例えば、図１０のステップＳ１６）、前記ネットワーク通信装置を切替えると判定された場合、動作中の前記ネットワーク通信装置から、待機中の前記ネットワーク通信装置に、前記送信データを処理させるネットワーク通信装置を切替える（例えば、図１０のステップＳ２１）ステップを含む。
【００３０】
以下、図を参照して、本発明の実施の形態について説明する。
【００３１】
図２は、本発明を適用したコンピュータ（情報処理装置）の一実施の形態の構成例を示している。
【００３２】
図２のコンピュータ５１は、CPU（Central Processing Unit）６１、ROM（Read Only Memory）６２、RAM（Random Access Memory）６３、バス６４、入出力インタフェース６５、入力部６６、出力部６７、記憶部６８、およびドライブ６９により構成されている。
【００３３】
また、コンピュータ５１には、カード形状のネットワーク通信装置５２Aおよび５２Bが装着され、入出力インタフェース６５と接続されている。ネットワーク通信装置５２Aおよび５２Bは、そのいずれか一方だけがコンピュータ５１（のCPU６１）により有効とされ、有効とされたネットワーク通信装置５２Aまたは５２Bが、インターネットやローカルエリアネットワークなどであるネットワーク５３と接続し、入出力インタフェース６５などを介してCPU６１から供給されるデータを、ネットワーク５３に接続している他のコンピュータ（図示せず）に送信する。
【００３４】
CPU６１は、ROM６２、または記憶部６８に記憶されているプログラム（OS（Operating System）プログラムやアプリケーションプログラム）に従って各種の処理を実行する。RAM６３には、CPU６１で実行されるプログラムやプログラムが一時的に必要となるデータなどが適宜記憶される。これらのCPU６１、ROM６２、およびRAM６３は、バス６４により相互に接続されている。
【００３５】
CPU６１にはまた、バス６４を介して入出力インタフェース６５が接続されている。入出力インタフェース６５には、キーボード、マウス、マイクロホンなどよりなる入力部６６、CRT(Cathode Ray Tube)、LCD(Liquid Crystal display)などよりなるディスプレイ、スピーカなどよりなる出力部６７が接続されている。CPU６１は、入力部６６から入力される指令に対応して各種の処理を実行する。そして、CPU６１は、処理の結果を出力部６７に出力する。
【００３６】
入出力インタフェース６５に接続されている記憶部６８は、例えばハードディスクからなり、CPU６１が実行するプログラムや各種のデータを記憶する。
【００３７】
入出力インタフェース６５に接続されているドライブ６９は、磁気ディスク、光ディスク、光磁気ディスク、或いは半導体メモリなどのリムーバブルメディア７０が装着されたとき、それらを駆動し、そこに記録されているプログラムやデータなどを取得する。取得されたプログラムやデータは、必要に応じて記憶部６８に転送され、記憶される。また、プログラムやデータは、ネットワーク通信装置５２Aまたは５２Bを介して取得され、記憶部６８に記憶されてもよい。
【００３８】
ネットワーク通信装置５２Aおよび５２Bは、図１を参照して上述したネットワーク通信装置３２と同様のネットワーク通信装置である。即ち、ネットワーク通信装置５２Aは、MAC処理およびPHY処理を行う専用のハードウエア（図示せず）と、TCP/IPプロトコル処理を行う専用のハードウエアであるTOE処理部８１Aと、電気的または物理的にネットワーク５３との接続または切断を行うSW（スイッチ）８２Aを有している。ネットワーク通信装置５２Bも、同様にTOE処理部８１BとSW８２Bを有している。なお、MAC処理、PHY処理、TCP処理、およびIP処理は、それぞれ異なる専用のハードウエアで行うようにしてもよいし、複数の処理を１つのハードウエアで行うようにしてもよい。
【００３９】
ネットワーク通信装置５２A（５２B）は、コンピュータ５１（のCPU６１）からオン指令またはオフ指令を受け取ると、SW８２A（８２B）により、ネットワーク５３との接続をオンまたはオフさせる。なお、以下において、ネットワーク通信装置５２Aと５２Bを特に区別する必要がない場合には、ネットワーク通信装置５２と称し、TOE処理部８１Aおよび８１B並びにSW８２Aおよび８２Bについても同様に、TOE処理部８１並びにSW８２と称する。
【００４０】
図３は、ネットワーク通信装置５２を介して通信を行うコンピュータ５１の機能ブロック図を示している。
【００４１】
コンピュータ５１は、ユーザアプリケーション１０１、装置管理アプリケーション１０２、ログ記憶部１０３A、およびログ記憶部１０３Bにより構成される。ここで、ユーザアプリケーション１０１および装置管理アプリケーション１０２は、図２のCPU６１およびRAM６３に対応し、ログ記憶部１０３Aおよび１０３Bは、図２の記憶部６８に対応する。
【００４２】
ユーザアプリケーション１０１は、図１Bのユーザアプリケーション３１と同様に、データの演算処理や表示処理、または制御処理などの所定のアプリケーション処理（データ処理）を行って、図示せぬ他のコンピュータに送信する実データをコマンドとともに装置管理アプリケーション１０２に供給する。
【００４３】
装置管理アプリケーション１０２は、コマンド処理部１２１、異常判定部１２２、および切替部１２３から構成され、コンピュータ５１に装着されているネットワーク通信装置５２Aおよび５２Bを管理（切替制御）する。具体的には、装置管理アプリケーション１０２は、最初に、ネットワーク通信装置５２Aおよび５２Bのいずれか一方のみを有効として動作させ、動作中のネットワーク通信装置５２に障害が発生した場合に、他方の待機中のネットワーク通信装置５２を有効として動作させる。なお、以下では、最初に有効とされるネットワーク通信装置５２が、ネットワーク通信装置５２Aであるとして説明する。
【００４４】
また、装置管理アプリケーション１０２は、ユーザアプリケーション１０１からの実データを、動作中のネットワーク通信装置５２Aまたは５２Bに送信させる。
【００４５】
コマンド処理部１２１は、ユーザアプリケーション１０１から供給されるコマンドと実データを受け取り、受け取った実データをネットワーク通信装置５２の処理単位である組み上げサイズの分割データ（送信データ）に分割する。そして、コマンド処理部１２１は、分割データに対応させて子コマンドを生成する。さらに、コマンド処理部１２１は、生成した子コマンドに、子コマンドをユニークに識別するコマンドIDを送信順に付加して、コマンドテーブル（メモリ）にキャッシュする（記憶させる）。
【００４６】
なお、組み上げサイズは、デフォルトとして、ネットワーク通信装置５２が処理することができる最大フレームサイズに設定されているが、ユーザアプリケーション１０１からの組み上げサイズを設定する設定コマンドや、ネットワーク通信装置５２を介して取得したネットワーク５３のトラフィック状況に応じて、（最大フレームサイズ以下のフレームサイズで）適宜変更することができる。
【００４７】
コマンド処理部１２１は、送信順に付与されているコマンドIDに基づいて、コマンドテーブルにキャッシュされている子コマンドと分割データを、順次、ネットワーク通信装置５２Aに供給する。また、コマンド処理部１２１は、正常に送信されたことを表す正常終了ステータスが異常判定部１２２から供給された子コマンドを、コマンドテーブルから削除する。従って、コマンドテーブルは、未送信の分割データのリストを意味する。コマンド処理部１２１は、１つのコマンドに対応する全ての分割データが正常に送信されたとき、実データが正常に送信されたことを表すコマンド結果情報を、実行結果としてユーザアプリケーション１０１に返信する。
【００４８】
なお、コマンド処理部１２１には、正常終了ステータスの他に、再送指示や切替指示が異常判定部１２２から供給されることがある。再送指示が異常判定部１２２から供給された場合、コマンド処理部１２１は、再送指示で指定された子コマンドをコマンドテーブルから検索し、検索された子コマンドとその分割データをネットワーク通信装置５２Aに供給する（再送させる）。切替指示が異常判定部１２２から供給された場合、コマンド処理部１２１は、子コマンドの供給先を、動作中のネットワーク通信装置５２Aから待機中のネットワーク通信装置５２Bに切替える。
【００４９】
異常判定部１２２は、ログ記憶部１０３Aまたは１０３Bに記憶されている状態テーブルから子コマンドの送信結果情報を取得する。この送信結果情報には、ネットワーク通信装置５２が子コマンドを処理した時刻、処理した子コマンドのコマンドID、およびステータスコードが含まれる。なお、時刻には、日付け（年月日）も含まれており、ステータスコードは、例えば、子コマンドが正常に処理されたことや、ネットワーク通信装置５２のハードウエアトラブル（ネットワーク通信装置５２の状態情報）などを表すコードである。
【００５０】
異常判定部１２２は、取得した送信結果情報に基づいて、子コマンドを処理させるネットワーク通信装置５２を、動作中のネットワーク通信装置５２Aから待機中のネットワーク通信装置５２Bに切替える必要があるか否かを判定する。異常判定部１２２は、ネットワーク通信装置５２を切替える必要があると判定した場合、切替指示をコマンド処理部１２１と切替部１２３に供給し、切替える必要がないと判定した場合、子コマンドのステータスコードに対応する正常終了ステータスまたは再送指示をコマンド処理部１２１に供給する。
【００５１】
切替部１２３は、異常判定部１２２から切替指示が供給された場合、動作中のネットワーク通信装置５２Aから、待機中のネットワーク通信装置５２Bに、処理させるネットワーク通信装置を切替える。より具体的には、切替部１２３は、動作中のネットワーク通信装置５２Aにネットワーク５３との接続をオフする指令（オフ指令）を出力し、待機中のネットワーク通信装置５２Bにネットワーク５３との接続をオンする指令（オン指令）を出力する。なお、コンピュータ５１の起動直後には、切替部１２３は、最初に有効とされるネットワーク通信装置５２Aにオン指令を出力し、ネットワーク通信装置５２Bにオフ指令を出力する。
【００５２】
ログ記憶部１０３Aは、ネットワーク通信装置５２Aから供給される子コマンドの送信結果情報を、ログとしての状態テーブルに記憶する。この状態テーブルでは、ネットワーク通信装置５２Aから供給される子コマンドの送信結果情報が時系列に記憶され、送信結果情報の数が予め決められた所定数に達した場合、時刻の最も古い送信結果情報が削除されて、その代わりに、新しく供給された送信結果情報が記憶されるようになされている。ログ記憶部１０３Bは、送信結果情報を出力してくる装置がネットワーク通信装置５２Bであること以外は、ログ記憶部１０３Aと同様である。
【００５３】
以上のように構成されるコンピュータ５１では、コマンド処理部１２１からネットワーク通信装置５２Aに供給された子コマンドに対しての送信結果情報が、ログ記憶部１０３Aの状態テーブルに記憶される。異常判定部１２２は、状態テーブルを参照して、処理させるネットワーク通信装置５２を切替える必要があると判定した場合、コマンド処理部１２１に切替指示を出力する。切替指示を受け取ったコマンド処理部１２１は、コマンドテーブルに残っている未送信の子コマンドと分割データを、切替後のネットワーク通信装置５２Bに供給する。
【００５４】
図４は、送信結果情報に含まれるステータスコードの一覧を示している。
【００５５】
子コマンドの送信結果情報には、ステータスコードとして“６００”乃至“６０７”のいずれかの数字が含まれる。
【００５６】
ステータスコード“６００”は、子コマンドが正常に終了した（送信された）ことを表す。ステータスコード“６０１”は、タイムアウトが発生したことを表す。ステータスコード“６０２”は、チェックサムエラーが発生したことを表す。ステータスコード“６０３”は、ネットワーク５３との接続が切れたことを表す。ステータスコード“６０４”は、ルートが無効であることを表す。ステータスコード“６０５”は、TOE処理を行うハードウエア（TOE処理部８１）にトラブル（TOEハードウエアトラブル）が発生したことを表す。ステータスコード“６０６”は、TOEドライバが無効であることを表す。ステータスコード“６０７”は、未知のエラー、換言すれば、ステータスコード“６００”乃至“６０６”以外のエラーであることを表す。
【００５７】
以上のステータスコードのうち、異常判定部１２２がネットワーク通信装置５２を切替える必要があると判定するのは、ネットワーク通信装置５２が処理できないハードウエアトラブルが発生した場合であり、即ち、“６０５”乃至“６０７”のステータスコードが送信結果情報として状態テーブルに記憶されていた場合である。
【００５８】
次に、実データとしての画像ファイルがユーザアプリケーション１０１から装置管理アプリケーション１０２に供給された場合の処理について説明する。
【００５９】
ユーザアプリケーション１０１が画像ファイルを他のコンピュータに送信する場合、画像ファイルとともに図５に示すコマンドが、ユーザアプリケーション１０１からコマンド処理部１２１に供給されてくる。
【００６０】
図５に示すコマンドは、sendFile (socketID, destinationAddress, fileID, dataLength)のフォーマットとなっており、sendFileがファイルの送信を表すコマンドであり、それに引数として、ソケットを識別するソケットID(socketID)、送信相手のアドレスである宛先アドレス（destinationAddress）、画像ファイル（実データ）を識別するファイルID（fileID）、および画像ファイルのデータ長（データサイズ）（dataLength）が与えられている。なお、データ長の単位はメガバイト（以下、MBと称する）である。
【００６１】
従って、図５は、ソケットID、宛先アドレス、ファイルID、およびデータ長として、“sock1”，“host1”，“file１”、および“１０００”が引数として指定されたコマンドsendFileが、“file１”で識別される画像ファイルとともに、ユーザアプリケーション１０１からコマンド処理部１２１に供給されることを意味している。
【００６２】
コマンド処理部１２１は、“file１”で識別される画像ファイルを組み上げサイズに分割し、その結果得られる分割データに対して、それぞれ、sendAssemblePacket (socketID, destinationAddress, fileID, assemblePacketID, dataLength)のフォーマットの子コマンドを生成する。ここで、sendAssemblePacketはファイルの送信を表す子コマンドであり、socketID，destinationAddress，fileID，assemblePacketID、およびdataLengthそれぞれは、ソケットID、宛先アドレス、ファイルID、分割データを識別する分割データID、および分割データのデータ長を表す引数である。なお、組み上げサイズは、３００MBとなっている。
【００６３】
従って、１０００MBの画像ファイルが、３００MBの分割データ、３００MBの分割データ、３００MBの分割データ、および１００MBの分割データに分割され、それぞれに対して、sendAssemblePacket (sock1, host1, file1, assemblePacket1, 300)，sendAssemblePacket (sock1, host1, file1, assemblePacket2, 300)， sendAssemblePacket (sock1, host1, file1, assemblePacket3, 300)、およびsendAssemblePacket (sock1, host1, file1, assemblePacket4, 100)の４つの子コマンドが生成される。なお、実データ（画像ファイル）のデータ長が組み上げサイズよりも小さい場合には、コマンドと子コマンドは、１対１に対応する。
【００６４】
そして、コマンド処理部１２１は、図６に示すように、生成した４つの子コマンドそれぞれにコマンドIDを付与してコマンドテーブルにキャッシュする。図６は、コマンドテーブルの例を示している。
【００６５】
コマンド処理部１２１は、sendAssemblePacket (sock1, host1, file1, assemblePacket1, 300)の子コマンドにはコマンドID“００１”を付与し、sendAssemblePacket (sock1, host1, file1, assemblePacket2, 300)の子コマンドにはコマンドID“００２”を付与し、sendAssemblePacket (sock1, host1, file1, assemblePacket3, 300)の子コマンドにはコマンドID“００３”を付与し、sendAssemblePacket (sock1, host1, file1, assemblePacket4, 100)の子コマンドにはコマンドID“００４”を付与して、コマンドテーブルにキャッシュする。
【００６６】
図７は、図６のコマンドテーブルにキャッシュされているコマンドID“００１”からコマンドID“００３”までの子コマンドがコマンド処理部１２１からネットワーク通信装置５２Aに供給された後の状態テーブルを示している。
【００６７】
状態テーブルには、図７に示すように、最初に（時刻T１に）、送信結果情報として、時刻T1、コマンドID“００１”、およびステータスコード“６００”が記憶される。この送信結果情報は、時刻T１にコマンドID“００１”の子コマンド（すなわち、assemblePacket1を送信するsendAssemblePacketコマンド）の送信が正常に終了したことを表している。
【００６８】
従って、ステータスコード“６００”は、ネットワーク通信装置５２の切替が必要となるステータスコードではないので（ステータスコード“６０５”乃至“６０７”ではないので）、異常判定部１２２は、ネットワーク通信装置５２を切替える必要はないと判定する。そして、異常判定部１２２は、コマンドID“００１”のステータスコード“６００”に対応して、コマンドID“００１”の正常終了ステータスをコマンド処理部１２１に供給する。
【００６９】
コマンド処理部１２１は、コマンドID“００１”の正常終了ステータスを異常判定部１２２から受け取ると、コマンドID“００１”の子コマンドをコマンドテーブルから削除する。これにより、図６に示したコマンドテーブルは、図８に示す状態となる。そこで、コマンド処理部１２１は、コマンドID“００２”の子コマンド（すなわち、assemblePacket2を送信するsendAssemblePacketコマンド）をネットワーク通信装置５２Aに供給し、送信させる。
【００７０】
時刻T１より後の時刻T２に、時刻T２、コマンドID“００２”、およびステータスコード“６０１”が送信結果情報として状態テーブル（図７）に記憶される。この送信結果情報は、時刻T２に処理したコマンドID“００２”の子コマンドにタイムアウトが発生したことを表している。
【００７１】
従って、ステータスコード“６０１”は、ネットワーク通信装置５２の切替が必要となるステータスコードではないので、異常判定部１２２は、ネットワーク通信装置５２を切替える必要はないと判定する。但し、ステータスコード“６０１”で表されるタイムアウトは、送信相手にassemblePacket2の分割データが届けられていないことを表しているため、異常判定部１２２は、コマンドID“００２”のステータスコード“６０１”に対応して、コマンドID“００２”の再送指示をコマンド処理部１２１に供給する。
【００７２】
コマンド処理部１２１は、コマンドID“００２”の再送指示を異常判定部１２２から受け取ると、コマンドID“００２”の子コマンドを再びネットワーク通信装置５２Aに供給する。このときのコマンドテーブルは、図８に示す状態のままである。
【００７３】
時刻T２より後の時刻T３に、時刻T３、コマンドID“００２”、およびステータスコード“６００”が送信結果情報として状態テーブル（図７）に記憶される。この送信結果情報は、時刻T３にコマンドID“００２”の子コマンドの送信が正常に終了したことを表している。
【００７４】
従って、ステータスコード“６００”は、ネットワーク通信装置５２の切替が必要となるステータスコードではないので、異常判定部１２２は、ネットワーク通信装置５２を切替える必要はないと判定する。そして、異常判定部１２２は、コマンドID“００２”のステータスコード“６００”に対応して、コマンドID“００２”の正常終了ステータスをコマンド処理部１２１に供給する。
【００７５】
コマンド処理部１２１は、コマンドID“００２”の正常終了ステータスを異常判定部１２２から受け取ると、コマンドID“００２”の子コマンドをコマンドテーブルから削除する。これにより、コマンドテーブルは、図８の状態から図９に示す状態となる。
【００７６】
次に、コマンド処理部１２１は、コマンドID“００３”の子コマンド（すなわち、assemblePacket3を送信するsendAssemblePacketコマンド）をネットワーク通信装置５２Aに供給し、送信させる。
【００７７】
時刻T３より後の時刻T４に、時刻T4、コマンドID“００３”、およびステータスコード“６０５”が送信結果情報として状態テーブル（図７）に記憶される。この送信結果情報は、時刻T４にコマンドID“００３”の子コマンドを送信する際、TOE処理を行うハードウエアにトラブルが発生したことを表している。
【００７８】
ステータスコード“６０５”を取得した異常判定部１２２は、ネットワーク通信装置５２を切替える必要があると判定し、切替指示をコマンド処理部１２１と切替部１２３に供給する。
【００７９】
切替部１２３は、動作中のネットワーク通信装置５２Aにオフ指令を出力し、待機中のネットワーク通信装置５２Bにオン指令を出力することにより、処理させるネットワーク通信装置５２を切替える。
【００８０】
コマンド処理部１２１は、異常判定部１２２から切替指示を受け取ると、処理させるネットワーク通信装置５２がネットワーク通信装置５２Bとなったことを認識する。そして、コマンド処理部１２１は、コマンドテーブルに残っている未送信の子コマンドを、切替後のネットワーク通信装置５２Bに供給するようにする。切替指示を受け取ったときのコマンドテーブルの状態は、図９に示す状態であるので、コマンド処理部１２１は、最初に、コマンドID“００３”の子コマンドをネットワーク通信装置５２Bに供給する。そして、コマンドID“００３”の正常終了ステータスを受け取った後に、コマンドID“００４”の次の子コマンドがコマンド処理部１２１からネットワーク通信装置５２Bに供給される。
【００８１】
以上のように、異常判定部１２２は、新たな子コマンドの送信結果情報がログ記憶部１０３Aの状態テーブルに追加されるたびに、追加された子コマンドの送信結果情報を取得し、その送信結果情報に基づいて、処理させるネットワーク通信装置５２を、動作中のネットワーク通信装置５２Aから、待機中のネットワーク通信装置５２Bに切替える必要があるか否かを判定する。
【００８２】
そして、ネットワーク通信装置５２を切替える必要があると判定された場合には、異常判定部１２２は、切替指示をコマンド処理部１２１と切替部１２３に供給し、切替える必要がないと判定された場合には、ステータスコードに対応する正常終了ステータスまたは再送指示をコマンド処理部１２１に供給する。
【００８３】
図１０のフローチャートを参照して、ユーザアプリケーション１０１から供給される実データを送信する実データ送信処理について説明する。
【００８４】
初めに、ステップＳ１１において、コマンド処理部１２１は、ユーザアプリケーション１０１からコマンドと実データを受け取り、ステップＳ１２において、受け取った実データをネットワーク通信装置５２Aの処理単位である組み上げサイズに分割する。また、ステップＳ１２において、コマンド処理部１２１は、組み上げサイズにそれぞれ分割されて得られた分割データに対応させて子コマンドを生成する。これにより、例えば、図５に示すユーザアプリケーション１０１からのsendFileコマンドに対応して、図６に示す４つの子コマンド（sendAssemblePacketコマンド）が生成される。
【００８５】
さらに、ステップＳ１２において、コマンド処理部１２１は、生成された子コマンドにコマンドIDを送信順に付与し、コマンドテーブルにキャッシュする。例えば、コマンド処理部１２１は、図６に示す４つの子コマンド（sendAssemblePacketコマンド）に対して、コマンドＩＤ“００１”乃至“００４”を付与して、コマンドテーブルにキャッシュする。
【００８６】
ステップＳ１３において、コマンド処理部１２１は、送信順に付与されているコマンドIDに基づいて、コマンドテーブルにキャッシュされている１つの子コマンドを、分割データとともにネットワーク通信装置５２A（動作中のネットワーク通信装置５２）に供給する。例えば、コマンドテーブルが図６に示す状態である場合、コマンド処理部１２１は、assemblePacket1を送信するsendAssemblePacketコマンドを、分割データとともにネットワーク通信装置５２Aに供給する。
【００８７】
ステップＳ１４において、ログ記憶部１０３Aは、ネットワーク通信装置５２Aから供給された、子コマンドの送信結果情報を受け取り、状態テーブルに記憶する。例えば、ログ記憶部１０３Aは、assemblePacket1を送信するsendAssemblePacketコマンドに対する送信結果情報として、時刻T１、コマンドID“００１”、およびステータスコード“６００”をネットワーク通信装置５２Aから受け取り、状態テーブルに記憶する。
【００８８】
ステップＳ１５において、異常判定部１２２は、ログ記憶部１０３Aの状態テーブルから子コマンドの送信結果情報を取得する。ここで取得された送信結果情報に対応する子コマンドを、以下では、取得子コマンドと称する。
【００８９】
ステップＳ１６において、異常判定部１２２は、取得子コマンドの送信結果情報に基づいて、処理させるネットワーク通信装置５２を、動作中のネットワーク通信装置５２Aから、待機中のネットワーク通信装置５２Bに切替える必要があるか否かを判定する。ここで、異常判定部１２２は、取得子コマンドのステータスコードが“６０５”乃至“６０７”であるか否かにより、ネットワーク通信装置５２を切替える必要があるか否かを判定する。
【００９０】
ステップＳ１６で、ネットワーク通信装置５２を切替える必要がないと判定された場合、即ち、取得子コマンドのステータスコードが“６０５”乃至“６０７”ではない場合、ステップＳ１７において、異常判定部１２２は、取得子コマンドが正常終了したか否かを判定する。
【００９１】
ステップＳ１７で、取得子コマンドが正常終了したと判定された場合、ステップＳ１８において、異常判定部１２２は、取得子コマンドの正常終了ステータスをコマンド処理部１２１に供給する。
【００９２】
そして、ステップＳ１９において、コマンド処理部１２１は、取得子コマンドの正常終了ステータスを異常判定部１２２から受け取り、取得子コマンドをコマンドテーブルから削除する。その後、処理は後述するステップＳ２５に進む。
【００９３】
一方、ステップＳ１７で、取得子コマンドが正常終了していないと判定された場合、ステップＳ２０において、異常判定部１２２は、取得子コマンドの再送指示をコマンド処理部１２１に供給する。その後、処理はステップＳ１３に戻り、再送指示された子コマンドがネットワーク通信装置５２（５２A）に供給される。
【００９４】
また、上述したステップＳ１６において、ネットワーク通信装置５２を切替える必要があると判定された場合、即ち、取得子コマンドのステータスコードが“６０５”乃至“６０７”である場合、ステップＳ２１において、異常判定部１２２は、切替部１２３に切替指示を供給する。
【００９５】
ステップＳ２２において、切替部１２３は、ネットワーク通信装置５２Aおよび５２Bにオン指令またはオフ指令を供給する。即ち、切替部１２３は、動作中のネットワーク通信装置５２Aにオフ指令を出力し、待機中のネットワーク通信装置５２Bにオン指令を出力して、処理させるネットワーク通信装置５２を切替える。
【００９６】
ステップＳ２３において、異常判定部１２２は、コマンド処理部１２１に切替指示を供給する。ステップＳ２４において、コマンド処理部１２１は、切替指示により、処理させるネットワーク通信装置５２がネットワーク通信装置５２Bとなったことを認識する。
【００９７】
ステップＳ２５において、コマンド処理部１２１は、コマンドテーブルに記憶されているすべての子コマンドをネットワーク通信装置５２に供給したか否かを判定する。ステップＳ２５で、すべての子コマンドをまだ供給していないと判定された場合、即ち、コマンドテーブルに子コマンドがまだ記憶されており、すべての分割データを送信していない場合、処理はステップＳ１３に戻り、コマンドテーブルにある次の子コマンドが分割データとともにネットワーク通信装置５２に供給され、以降の処理が繰り返される。
【００９８】
一方、ステップＳ２５において、コマンドテーブルに記憶されている全ての子コマンドを供給したと判定された場合、即ち、実データを分割して得られた全ての分割データが送信された場合、ステップＳ２６において、コマンド処理部１２１は、ステップＳ１１で受け取ったコマンドに対するコマンド結果情報をユーザアプリケーション１０１に返信して、処理を終了する。
【００９９】
上述した処理は、ユーザアプリケーション１０１から順次供給されるコマンドおよび実データに対して繰り返し実行される。
【０１００】
次に、図１１のフローチャートを参照して、装置管理アプリケーション１０２から供給された分割データを他のコンピュータに送信する、ネットワーク通信装置５２の分割データ送信処理について説明する。
【０１０１】
初めに、ステップＳ４１において、ネットワーク通信装置５２は、装置管理アプリケーション１０２（の切替部１２３）からオン指令またはオフ指令を受信したか否かを判定する。例えば、コンピュータ５１の起動直後には、最初に処理させるネットワーク通信装置５２Aにはオン指令が供給され、待機させるネットワーク通信装置５２Bにはオフ指令が供給される。
【０１０２】
ステップＳ４１で、オン指令またはオフ指令を受信したと判定された場合、ステップＳ４２において、ネットワーク通信装置５２は、オン指令またはオフ指令に対応してSW８２をオンまたはオフすることにより、ネットワーク５３との接続または切断を行う。そして、処理は、ステップＳ４１に戻る。
【０１０３】
一方、ステップＳ４１で、オン指令およびオフ指令を受信していないと判定された場合、言い換えると、装置管理アプリケーション１０２（のコマンド処理部１２１）から子コマンドと分割データを受信した場合、ステップＳ４３において、ネットワーク通信装置５２のTOE処理部８１は、受信した分割データに対してTCP/IPプロトコル処理を行う。
【０１０４】
そして、ステップＳ４４において、ネットワーク通信装置５２は、TCP/IP処理後の分割データに対してMAC処理およびPHY処理を行い、分割データを他のコンピュータにネットワーク５３を介して送信する。
【０１０５】
ステップＳ４５において、ネットワーク通信装置５２は、受信した子コマンドに対する送信結果情報を装置管理アプリケーション１０２（のログ記憶部１０３Aまたは１０３B）に返信する。その後、処理はステップＳ４１に戻り、それ以降の処理が繰り返される。その結果、ネットワーク通信装置５２は、オフ指令が供給されるまで、子コマンドとともに供給される分割データを送信し、その結果としての送信結果情報を装置管理アプリケーション１０２に返信する。
【０１０６】
以上のように、ネットワーク通信装置５２では、TCP/IPプロトコル処理を専用のハードウエアで行うので、画像ファイル（分割データ）の送受信を高速化することができる。コンピュータ５１は、このネットワーク通信装置５２を用いることにより、高速な通信を提供することができる。
【０１０７】
また、コンピュータ５１には、２台のネットワーク通信装置５２が装着されており、動作中のネットワーク通信装置５２に障害（ハードウエアトラブル）が発生した場合には、即座にその障害を検知し、待機中のネットワーク通信装置５２に切替えることができるので、ネットワーク５３を介した通信の信頼性を向上させることができる。
【０１０８】
さらに、コンピュータ５１では、実データの送信途中で動作中のネットワーク通信装置５２に障害が発生した場合、コマンドテーブルを参照して未送信の子コマンドと分割データを切替後のネットワーク通信装置５２Bに供給するようにして、ユーザアプリケーション１０１からのコマンド（実データの送信要求）を完了させることができる。言い換えれば、実データの送信途中で動作中のネットワーク通信装置５２Aに障害が発生した場合、再度ユーザアプリケーション１０１に実データを要求し、切替後のネットワーク通信装置５２Bで実データを最初から送信し直す必要がない。これにより、ユーザアプリケーション１０１に負担（負荷）をかけずに、高速に（短時間で）実データの送信処理を完結させることができる。
【０１０９】
なお、上述した例では、コマンドIDを送信順に付与するようにしたが、コマンドIDは、送信順と関係なく付与しても良い。
【０１１０】
また、上述した例では、コンピュータ５１には２枚のネットワーク通信装置５２が装着されていたが、３枚以上のネットワーク通信装置５２を装着するようにして、切替制御を行うようにすることも可能である。
【０１１１】
ネットワーク通信装置５２は、着脱可能なカード形状の他に、ASIC(Application Specific Integrated Circuit)やFPGA（Field Programmable Gate Alley）などを用いてチップ（マルチチップモジュールも含む）として構成することもできる。即ち、ネットワーク通信装置５２は、上述した機能をハードウエアとして備えるものであれば、物理的な形状は特に限定されない。従って、ネットワーク通信装置５２は、コンピュータ５１の他、ネットワーク５３を介して通信する機能を有するビデオカメラ、ハードディスクやDVD(Digital Versatile Disc)などの記録媒体にデータを記録または再生する記録再生装置、またはテレビジョン受像機などの情報処理装置に組み込むことも可能である。
【０１１２】
本明細書において、フローチャートに記述されたステップは、記載された順序に沿って時系列的に行われる処理はもちろん、必ずしも時系列的に処理されなくとも、並列的あるいは個別に実行される処理をも含むものである。
【０１１３】
なお、本発明の実施の形態は、上述した実施の形態に限定されるものではなく、本発明の要旨を逸脱しない範囲において種々の変更が可能である。
【図面の簡単な説明】
【０１１４】
【図１】従来のNICと、TOEを採用したNICであるネットワーク通信装置との違いについて説明する図である。
【図２】本発明を適用したコンピュータ（情報処理装置）の一実施の形態の構成例を示すブロック図である。
【図３】図２のコンピュータの機能ブロック図である。
【図４】ステータスコードについて説明する図である。
【図５】ユーザアプリケーションから供給されるコマンドの例を示す図である。
【図６】コマンド処理部のコマンドテーブルの例を示す図である。
【図７】ログ記憶部の状態テーブルの例を示す図である。
【図８】コマンド処理部のコマンドテーブルの例を示す図である。
【図９】コマンド処理部のコマンドテーブルの例を示す図である。
【図１０】コンピュータの実データ送信処理について説明するフローチャートである。
【図１１】ネットワーク通信装置の分割データ送信処理について説明するフローチャートである。
【符号の説明】
【０１１５】
５１  コンピュータ，  ５２（５２A，５２B）  ネットワーク通信装置，  ５３  ネットワーク，  １０１  ユーザアプリケーション，  １０２  装置管理アプリケーション，  １０３A，１０３B  ログ記憶部，  １２１  コマンド処理部，  １２２  異常判定部，  １２３  切替部
【図１】
2007184710.tif 000003
【図２】
2007184710.tif 000004
【図３】
2007184710.tif 000005
【図４】
2007184710.tif 000006
【図５】
2007184710.tif 000007
【図６】
2007184710.tif 000008
【図７】
2007184710.tif 000009
【図８】
2007184710.tif 000010
【図９】
2007184710.tif 000011
【図１０】
2007184710.tif 000012
【図１１】
2007184710.tif 000013