(57)【要約】【課題】異なる通信デバイスの通信ドライバ部間のメッセージ転送時間を短縮化する。【解決手段】情報処理装置１は、通信ドライバ部１ａ−１、１ａ−２および通信管理部１ｂを備える。通信ドライバ部１ａ−１、１ａ−２の通信デバイスは互いに異なる。通信管理部１ｂは、メッセージに含まれる通信ドライバ部１ａ−２の識別子ＸＩＤにもとづいて、通信ドライバ部１ａ−２を起動して、通信ドライバ部１ａ−１から通信ドライバ部１ａ−２へメッセージを転送する。通信管理部１ｂは、識別子ＸＩＤに対応する書き込み通知をＱＳＴＲの一端で行って、ＱＳＴＲの他端で待ち受けしている読み出し通知を呼び出し、読み出し通知によって通信ドライバ部１ａ−２を起動して、通信ドライバ部１ａ−１から通信ドライバ部１ａ−２へメッセージを転送する。【選択図】図１
2018181170.tif 000002
【特許請求の範囲】
【請求項１】
第１の通信デバイスの第１の通信ドライバ部と、
前記第１の通信デバイスとは異なる第２の通信デバイスの第２の通信ドライバ部と、
前記第１の通信ドライバ部が受け付けたメッセージに含まれる前記第２の通信ドライバ部の識別子にもとづいて、前記第２の通信ドライバ部を起動して、前記第１の通信ドライバ部から前記第２の通信ドライバ部へ前記メッセージを転送する通信管理部と、
を有する情報処理装置。
【請求項２】
前記通信管理部は、前記第１の通信ドライバ部と前記第２の通信ドライバ部とに共通のスレッドスケジューラである請求項１記載の情報処理装置。
【請求項３】
前記スレッドスケジューラは、前記識別子に対応する書き込み通知を待ち合わせ構造体の一端で行って、前記待ち合わせ構造体の他端で待ち受けしている、前記書き込み通知に対応する前記読み出し通知を呼び出し、前記読み出し通知によって前記第２の通信ドライバ部を起動する請求項２記載の情報処理装置。
【請求項４】
ノード間通信を行う情報処理システムにおいて、
第１の通信デバイスの第１の通信ドライバ部と、前記第１の通信ドライバ部によるメッセージ転送時に通信パス障害を検出した場合、識別子を含むメッセージを生成し、迂回パスを通じて前記メッセージを前記第１の通信ドライバ部から転送する第１の管理部と、を含む第１の通信ノードと、
前記迂回パス上に位置して前記メッセージを受信する、前記第１の通信デバイスの第２の通信ドライバ部と、前記迂回パス上に位置して、前記第１の通信デバイスとは異なる第２の通信デバイスの第３の通信ドライバ部と、前記メッセージに含まれる前記第３の通信ドライバ部の前記識別子にもとづいて、前記第３の通信ドライバ部を起動して前記第２の通信ドライバ部から前記第３の通信ドライバ部へ前記メッセージを転送する第２の通信管理部と、を含む第２の通信ノードと、
を有する情報処理システム。
【請求項５】
前記第２の通信管理部は、前記第２の通信ドライバ部と前記第３の通信ドライバ部とに共通のスレッドスケジューラである請求項４記載の情報処理システム。
【請求項６】
前記スレッドスケジューラは、前記識別子に対応する書き込み通知を待ち合わせ構造体の一端で行って、前記待ち合わせ構造体の他端で待ち受けしている、前記書き込み通知に対応する読み出し通知を呼び出し、前記読み出し通知によって前記第３の通信ドライバ部を起動する請求項５記載の情報処理システム。
【請求項７】
前記迂回パスを通じて、前記第３の通信ドライバ部から転送された前記メッセージを受信する第３の通信ノードを有し、前記メッセージによって、前記第１の通信ノードの記憶部から前記第３の通信ノードの記憶部へのダイレクトメモリアクセス転送が指示される請求項４記載の情報処理システム。
【請求項８】
コンピュータに、
第１の通信デバイスの第１の通信ドライバ部から、前記第１の通信デバイスとは異なる第２の通信デバイスの第２の通信ドライバ部へメッセージ転送を実行させる場合、
前記第１の通信ドライバ部が受け付けるメッセージに前記第２の通信ドライバ部の識別子を含め、前記識別子にもとづいて、前記第２の通信ドライバ部を起動して前記第１の通信ドライバ部から前記第２の通信ドライバ部へ前記メッセージを転送する、
処理を実行させるプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、情報処理装置、情報処理システムおよびプログラムに関する。
【背景技術】
【０００２】
情報処理システムでは、信頼性の確保のため、通信ノードを２台以上含む装置で冗長構成が組まれており、通信ノード間または装置間の通信経路が冗長化されている。
また、システム性能を向上させる場合、近年では、ハードウェアを高性能にするスケールアップよりも、ハードウェアの数を増やして処理能力を上げるスケールアウトが主流になっている。このため、スケールアウトによるシステム拡張化に伴い、システムの冗長構成も増加している。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開２００１−１４２８４号公報
【特許文献２】特開２０１４−１５７６２８号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
情報処理システムの通信経路に障害等が発生すると、メッセージ転送を迂回させる迂回経路を確立して、通信経路の冗長構成を回復することが行われる。この場合、迂回経路上に位置する通信ドライバのハードウェアである通信デバイスは同一のものとは限らず、異なる通信デバイスの通信ドライバ間でメッセージ転送が行われる可能性がある。
【０００５】
種類が異なる通信デバイスの通信ドライバ間によるメッセージ転送では、ソフトウェア上でメッセージの乗換え処理が行われるため、メッセージ転送に要する時間が増大する。
１つの側面では、本発明は、異なる通信デバイスの通信ドライバ間のメッセージ転送に要する時間の短縮化を図った情報処理装置、情報処理システムおよびプログラムを提供することを目的とする。
【課題を解決するための手段】
【０００６】
上記課題を解決するために、情報処理装置が提供される。情報処理装置は、第１の通信デバイスの第１の通信ドライバ部と、第１の通信デバイスとは異なる第２の通信デバイスの第２の通信ドライバ部と、通信管理部とを備える。通信管理部は、第１の通信ドライバ部が受け付けたメッセージに含まれる第２の通信ドライバ部の識別子にもとづいて、第２の通信ドライバ部を起動して、第１の通信ドライバ部から第２の通信ドライバ部へメッセージを転送する。
【０００７】
また、上記課題を解決するために、ノード間通信を行う情報処理システムが提供される。情報処理システムは、第１の通信ノードと第２の通信ノードを備える。第１の通信ノードは、第１の通信デバイスの第１の通信ドライバ部と、第１の通信ドライバ部によるメッセージ転送時に通信パス障害を検出した場合、識別子を含むメッセージを生成し、迂回パスを通じてメッセージを第１の通信ドライバ部から転送する第１の管理部とを含む。第２の通信ノードは、迂回パス上に位置してメッセージを受信する、第１の通信デバイスの第２の通信ドライバ部と、迂回パス上に位置して、第１の通信デバイスとは異なる第２の通信デバイスの第３の通信ドライバ部と、メッセージに含まれる第３の通信ドライバ部の識別子にもとづいて、第３の通信ドライバ部を起動して第２の通信ドライバ部から第３の通信ドライバ部へメッセージを転送する第２の通信管理部とを含む。
【０００８】
さらに、上記課題を解決するために、コンピュータに上記情報処理装置と同様の制御を実行させるプログラムが提供される。
【発明の効果】
【０００９】
１側面によれば、異なるハードウェアの通信デバイス間のメッセージ転送に要する時間を短縮化することが可能になる。
【図面の簡単な説明】
【００１０】
【図１】情報処理装置の構成の一例を示す図である。
【図２】ノード間通信システムの構成の一例を示す図である。
【図３】メッセージ迂回転送の一例を示す図である。
【図４】ソフトウェア処理にもとづくメッセージ乗換えの一例を説明するための図である。
【図５】情報処理システムの構成の一例を示す図である。
【図６】メッセージ迂回転送の一例を示す図である。
【図７】通信ノードのハードウェア構成の一例を示す図である。
【図８】メッセージフォーマットの一例を示す図である。
【図９】ＱＳＴＲによるメッセージ転送を説明するための図である。
【図１０】メッセージ乗換えをせずにメッセージ転送が行われる状態を示す図である。
【図１１】メッセージ迂回転送のシーケンスの一例を示す図である。
【図１２】ＲＤＭＡの迂回転送の一例を説明するための図である。
【図１３】ＲＤＭＡの迂回転送のシーケンスの一例を説明するための図である。
【発明を実施するための形態】
【００１１】
以下、本実施の形態について図面を参照して説明する。
［第１の実施の形態］
第１の実施の形態について説明する。図１は情報処理装置の構成の一例を示す図である。情報処理装置１は、プロセッサ等の制御部を有し、制御部は、ソフトウェアの実行により通信ドライバ部１ａ−１、１ａ−２（ドライバ（ソフトウェア））および通信管理部（スレッドスケジューラ（ソフトウェア））１ｂの機能を備える。なお、通信ドライバ部１ａ−１、１ａ−２に関係付けられたハードウェアの種類は互いに異なる。
【００１２】
通信管理部１ｂは、メッセージに含まれる通信ドライバ部１ａ−２のＸＩＤ（識別子）にもとづいて、通信ドライバ部１ａ−２を起動して、通信ドライバ部１ａ−１から通信ドライバ部１ａ−２へメッセージを転送する。
【００１３】
ここで、通信管理部１ｂは、通信ドライバ部１ａ−１、１ａ−２に共通のスレッドスケジューラ（ソフトウェア）である。この場合、通信管理部１ｂは、ＸＩＤに対応する書き込み通知をＱＳＴＲ（Queue−structure：待ち合わせ構造体）の一端で行い、ＱＳＴＲの他端で待ち受けしている、書き込み通知に対応する読み出し通知を呼び出す。
【００１４】
そして、通信管理部１ｂは、読み出し通知によって通信ドライバ部１ａ−２を起動して、通信ドライバ部１ａ−１から通信ドライバ部１ａ−２へメッセージを転送する。なお、ＱＳＴＲは、書き込み（入力）、読み出し（出力）間をつなぐパイプを形成し、パイプを通じてスレッド間でデータの授受を可能にするキュー（Queue）のデータ構造である。
【００１５】
このように、情報処理装置１は、スレッドスケジューラのＱＳＴＲにより、メッセージに付与されたＸＩＤにもとづいて、転送先の通信ドライバ部１ａ−２を起動してメッセージ転送を行う。
【００１６】
これにより、情報処理装置１は、種類が異なるハードウェアの通信ドライバ部１ａ−１、１ａ−２間でメッセージ転送を行う際に、ソフトウェア上のメッセージ乗換えを不要とするので、メッセージ転送に要する時間を短縮化することが可能になる。
【００１７】
［ノード間通信システム］
次にノード間通信システムの構成について説明する。図２はノード間通信システムの構成の一例を示す図である。ノード間通信システム２は、通信ノードブロックＮＢ１０と、通信ノードブロックＮＢ２０を備える。
【００１８】
通信ノードブロックＮＢ１０は、通信ノードＮ１１、Ｎ１２を備え、通信ノードブロックＮＢ２０は、通信ノードＮ２１、Ｎ２２を備える。
通信ノードＮ１１は、ＨＢＡ（Host Bus Adapter）とＨＢＡドライバ部２１ａ−１、２１ａ−２、ＰＣＩｅＳＷ（Peripheral Component Interconnect Express Switch）とＰＣＩｅＳＷドライバ部３１ａ−１、３１ａ−２およびメモリ４ａを含む。通信ノードＮ１２は、ＨＢＡとＨＢＡドライバ部２２ａ−１、２２ａ−２およびＰＣＩｅＳＷとＰＣＩｅＳＷドライバ部３２ａ−１、３２ａ−２を含む。
【００１９】
通信ノードＮ２１は、ＨＢＡドライバ部２１ｂ−１、２１ｂ−２およびＰＣＩｅＳＷドライバ部３１ｂ−１、３１ｂ−２を含む。通信ノードＮ２２は、ＨＢＡドライバ部２２ｂ−１、２２ｂ−２、ＰＣＩｅＳＷドライバ部３２ｂ−１、３２ｂ−２およびメモリ４ｂを含む。
【００２０】
通信ノードブロックＮＢ１０、ＮＢ２０間の接続において、ＨＢＡドライバ部２１ａ−１とＨＢＡドライバ部２１ｂ−１が通信パスＰ１で接続し、ＨＢＡドライバ部２２ａ−１とＨＢＡドライバ部２２ｂ−１が通信パスＰ２で接続する。また、ＨＢＡドライバ部２１ａ−２とＨＢＡドライバ部２２ｂ−２が通信パスＰ３で接続し、ＨＢＡドライバ部２２ａ−２とＨＢＡドライバ部２１ｂ−２が通信パスＰ４で接続する。
【００２１】
通信ノードＮ１１、Ｎ１２間の接続において、ＰＣＩｅＳＷドライバ部３１ａ−１とＰＣＩｅＳＷドライバ部３２ａ−１が接続し、ＰＣＩｅＳＷドライバ部３１ａ−２とＰＣＩｅＳＷドライバ部３２ａ−２が接続する。
【００２２】
通信ノードＮ２１、Ｎ２２間の接続において、ＰＣＩｅＳＷドライバ部３１ｂ−１とＰＣＩｅＳＷドライバ部３２ｂ−１が接続し、ＰＣＩｅＳＷドライバ部３１ｂ−２とＰＣＩｅＳＷドライバ部３２ｂ−２が接続する。
【００２３】
上記のように、ノード間通信システム２では、通信ノードブロックＮＢ１０、ＮＢ２０間は、ＨＢＡドライバ部を介して接続され、通信ノードＮ１１、Ｎ１２間と、通信ノードＮ２１、Ｎ２２間とは、ＰＣＩｅＳＷドライバ部を介して接続される。
【００２４】
＜メッセージ迂回転送＞
次にノード間通信システム２において、通信パスが切断したときのメッセージ迂回転送について説明する。図３はメッセージ迂回転送の一例を示す図である。
【００２５】
通信パスＰ３における通常のメッセージ転送において、ＨＢＡドライバ部２１ａ−２は、通信パスＰ３を通じてＨＢＡドライバ部２２ｂ−２へメッセージを転送し、ＨＢＡドライバ部２２ｂ−２で受信されたメッセージは、メモリ４ｂに格納される。
【００２６】
ここで、通信ノードＮ１１、Ｎ２２間の通信パスＰ３が切断したとする（例えば、ＨＢＡドライバ部のポート故障等）。
通信パスＰ３が切断した場合、通信ノードＮ１１ではＨＢＡドライバ部２１ａ−１を使用し、ＨＢＡドライバ部２１ａ−１からメッセージが転送されて、該メッセージが通信ノードＮ２２内のメモリ４ｂへ到達するまでの迂回パスｐ１０が確立される。
【００２７】
なお、メッセージ転送の起点となる通信ノードでは、障害が発生した通信パスに応じた迂回パスをテーブル情報として記憶している。
例えば、通信パスＰ１３の切断に対し、図６に示すような、通信ノードＮ０、Ｎ２、Ｎ３の順にメッセージが転送される迂回パス（迂回パスｐ２０）が、起点となる通信ノードＮ０に予め記憶されている。また、例えば、通信パスＰ１１の切断に対し、通信ノードＮ０、Ｎ１、Ｎ３、Ｎ２の順にメッセージが転送される迂回パスが、起点となる通信ノードＮ０で予め記憶されている。
【００２８】
迂回パスｐ１０は、通信ノードＮ１１、Ｎ２１、Ｎ２２の順にメッセージを迂回転送させる。迂回パスｐ１０を通じてメッセージが通過するドライバ部は、順にＨＢＡドライバ部２１ａ−１、ＨＢＡドライバ部２１ｂ−１、ＰＣＩｅＳＷドライバ部３１ｂ−１、ＰＣＩｅＳＷドライバ部３２ｂ−１である。そして、ＰＣＩｅＳＷドライバ部３２ｂ−１がメモリ４ｂにメッセージを格納する。
【００２９】
ここで、迂回パスｐ１０において、ＨＢＡドライバ部２１ａ−１、２１ｂ−１間では、同一ハードウェアのドライバ部によるメッセージ転送が行われる。また、ＰＣＩｅＳＷドライバ部３１ｂ−１、３２ｂ−１間でも、同一ハードウェアのドライバ部によるメッセージ転送が行われる。
【００３０】
一方、迂回パスｐ１０において、ＨＢＡドライバ部２１ｂ−１およびＰＣＩｅＳＷドライバ部３１ｂ−１間では、異なるハードウェアのドライバ部によるメッセージ転送が行われる。
【００３１】
＜メッセージ乗換え＞
異なるハードウェアのドライバ部間のメッセージ転送では、ソフトウェア上でメッセージ乗換えが行われる。図３の例では、乗換え＃１、＃２が行われる。乗換え＃１は、通信ノードＮ２１の上位ソフトウェアが、ＨＢＡドライバ部２１ｂ−１からメッセージを一端受け取って、ＰＣＩｅＳＷドライバ部３１ｂ−１へメッセージを転送する際に行われるメッセージ乗換えである。
【００３２】
また、乗換え＃２は、通信ノードＮ２２の上位ソフトウェアが、ＰＣＩｅＳＷドライバ部３２ｂ−１が受信したメッセージをＨＢＡドライバ部２２ｂ−２へ通知する際に行われるメッセージ乗換えである。
【００３３】
＜メッセージ乗換え＞
図４はソフトウェア処理にもとづくメッセージ乗換えの一例を説明するための図である。乗換え＃２の例を示している。ハードウェアレイヤにおいて、通信ノードブロックＮＢ２０、通信ノードＮ２２、ＨＢＡドライバ部２２ｂ−２、ＰＣＩｅＳＷドライバ部３２ｂ−１と階層化される。
【００３４】
また、ソフトウェアレイヤでは、スレッドスケジューラｓｈが位置し、スレッドスケジューラｓｈ上に、ＰＣＩｅＳＷドライバ部（ドライバソフトウェア）ｄｒ１と、ＨＢＡドライバ部ｄｒ２が位置する。また、上位層には上位ソフトウェアｓｆが位置する。
【００３５】
ＰＣＩｅＳＷドライバ部ｄｒ１は、スレッドスケジューラｓｈに受信ポーラｐｏｌ１ａと、送信完了ポーラｐｏｌ２ａとを有し、受信ポーラｐｏｌ１ａによって受信ポーリングが行われ、送信完了ポーラｐｏｌ２ａによって送信完了ポーリングが行われる。
【００３６】
また、ＨＢＡドライバ部ｄｒ２は、スレッドスケジューラｓｈに受信ポーラｐｏｌ１ｂと、送信完了ポーラｐｏｌ２ｂとを有し、受信ポーラｐｏｌ１ｂによって受信ポーリングが行われ、送信完了ポーラｐｏｌ２ｂによって送信完了ポーリングが行われる。
【００３７】
なお、受信ポーリングは、受信刈り取り（割り込みを発生させて受信バッファからメッセージを取り出す処理）における問い合わせが行われて所定条件を満たした場合に受信刈り取りが行われるポーリングである。送信完了ポーリングは、送信完了における問い合わせが行われて所定条件を満たした場合に送信完了が通知されるポーリングである。
【００３８】
以下、メッセージ乗換えが行われる動作の流れについて説明する。
〔ステップＳ１１〕ＰＣＩｅＳＷドライバ部３２ｂ−１は、メッセージを受信する。メッセージは、受信ポーラｐｏｌ１ａとＰＣＩｅＳＷドライバ部ｄｒ１を介して、上位ソフトウェアｓｆへ送信される。
【００３９】
〔ステップＳ１２〕上位ソフトウェアｓｆは、メッセージのステートｍｓｇ＿ｒｅｃｖ（）をステートｍｓｇ＿ｓｅｎｄ（）に変換してメッセージ乗換えを行う（なお、括弧内は所定のパラメータが指定される）。
【００４０】
〔ステップＳ１３〕メッセージ乗換え後のステートｍｓｇ＿ｒｅｃｖ（）のメッセージは、ＨＢＡドライバ部ｄｒ２、送信完了ポーラｐｏｌ２ｂ、受信ポーラｐｏｌ１ｂを介して、転送要求先へ送信される。
【００４１】
このように、ＨＢＡやＰＣＩｅＳＷといった異なるハードウェアの通信デバイスのドライバ部は、各々が独自の送信完了通知、受信刈り取りの仕組みを持っている。このため、異なる通信デバイスのドライバ部間によるメッセージ転送では、上記のように、ソフトウェア上でメッセージの乗換え処理が行われ、メッセージ転送に要する時間が増大する。
【００４２】
このような状況に鑑み、以降で説明する第２の実施の形態では、ノード間通信を行うシステムにおいて、スレッドスケジューラを用いて、ドライバ部装置間のメッセージ転送を行うことで、メッセージ転送時間の短縮化を図るものである。
【００４３】
［第２の実施の形態］
以下、第２の実施の形態の情報処理システムについて詳しく説明する。まず、情報処理システムの構成について説明する。
【００４４】
図５は情報処理システムの構成の一例を示す図である。情報処理システム１−１は、通信ノードブロックＮＢ１と、通信ノードブロックＮＢ２を備える。通信ノードブロックＮＢ１、ＮＢ２は、例えば、サーバ、またはストレージの入出力を制御するストレージ制御装置等に該当する。
【００４５】
通信ノードブロックＮＢ１は、通信ノードＮ０、Ｎ１を備え、通信ノードブロックＮＢ２は、通信ノードＮ２、Ｎ３を備える。
通信ノードＮ０は、通信管理部１０、ＨＢＡドライバ部１２ａ−１、１２ａ−２、ＰＣＩｅＳＷドライバ部１４ａ−１、１４ａ−２およびメモリｍｒ０を含む。通信ノードＮ１は、ＨＢＡドライバ部１３ａ−１、１３ａ−２、ＰＣＩｅＳＷドライバ部１５ａ−１、１５ａ−２およびメモリｍｒ１を含む。
【００４６】
通信ノードＮ２は、通信管理部１２、ＨＢＡドライバ部１２ｂ−１、１２ｂ−２、ＰＣＩｅＳＷドライバ部１４ｂ−１、１４ｂ−２およびメモリｍｒ２を含む。通信ノードＮ３は、通信管理部１３、ＨＢＡドライバ部１３ｂ−１、１３ｂ−２、ＰＣＩｅＳＷドライバ部１５ｂ−１、１５ｂ−２およびメモリｍｒ３を含む。
【００４７】
通信ノードブロックＮＢ１、ＮＢ２間の接続において、ＨＢＡドライバ部１２ａ−１とＨＢＡドライバ部１２ｂ−１が通信パスＰ１１で接続し、ＨＢＡドライバ部１３ａ−１とＨＢＡドライバ部１３ｂ−１が通信パスＰ１２で接続する。また、ＨＢＡドライバ部１２ａ−２とＨＢＡドライバ部１３ｂ−２が通信パスＰ１３で接続し、ＨＢＡドライバ部１３ａ−２とＨＢＡドライバ部１２ｂ−２が通信パスＰ１４で接続する。
【００４８】
通信ノードＮ０、Ｎ１間の接続において、ＰＣＩｅＳＷドライバ部１４ａ−１とＰＣＩｅＳＷドライバ部１５ａ−１が接続し、ＰＣＩｅＳＷドライバ部１４ａ−２とＰＣＩｅＳＷドライバ部１５ａ−２が接続する。
【００４９】
通信ノードＮ２、Ｎ３間の接続において、ＰＣＩｅＳＷドライバ部１４ｂ−１とＰＣＩｅＳＷドライバ部１５ｂ−１が接続し、ＰＣＩｅＳＷドライバ部１４ｂ−２とＰＣＩｅＳＷドライバ部１５ｂ−２が接続する。
【００５０】
上記のように、情報処理システム１−１では、通信ノードブロックＮＢ１、ＮＢ２間は、ＨＢＡドライバ部を介して接続され、通信ノードＮ０、Ｎ１間と、通信ノードＮ２、Ｎ３間とは、ＰＣＩｅＳＷドライバ部を介して接続される。
【００５１】
＜メッセージ迂回転送＞
次に情報処理システム１−１において、通信パスが切断したときのメッセージ迂回転送について説明する。図６はメッセージ迂回転送の一例を示す図である。
【００５２】
通信パスＰ１３における通常のメッセージ転送において、ＨＢＡドライバ部１２ａ−２は、通信パスＰ１３を通じてＨＢＡドライバ部１３ｂ−２へメッセージを転送し、ＨＢＡドライバ部１３ｂ−２で受信されたメッセージはメモリｍｒ３に格納される。
【００５３】
ここで、通信ノードＮ０、Ｎ３間の通信パスＰ１３が切断したとする（例えば、ＨＢＡドライバ部のポート故障等）。通信パスＰ１３が切断した場合、通信ノードＮ０の通信管理部１０は、通信パス障害を検出する。そして、通信管理部１０は、ＸＩＤを付与したメッセージを生成し、迂回パスｐ２０を介して、ＨＢＡドライバ部１２ａ−１から該メッセージを転送させる。
【００５４】
なお、迂回パスｐ２０は、通信ノードＮ０、Ｎ２、Ｎ３の順に、メッセージを迂回転送させる。迂回パスｐ２０を通じてメッセージが通過するドライバ部は、順にＨＢＡドライバ部１２ａ−１、ＨＢＡドライバ部１２ｂ−１、ＰＣＩｅＳＷドライバ部１４ｂ−１、ＰＣＩｅＳＷドライバ部１５ｂ−１である。そして、ＰＣＩｅＳＷドライバ部１５ｂ−１がメモリｍｒ３にメッセージを格納する。
【００５５】
一方、通信ノードＮ２において、ＨＢＡドライバ部１２ｂ−１は、迂回パスｐ２０上に位置してメッセージを受信する。ここで、迂回パスｐ２０において、ＨＢＡドライバ部１２ｂ−１およびＰＣＩｅＳＷドライバ部１４ｂ−１は、互いの通信デバイスの種類が異なる。
【００５６】
よって、通信ノードＮ２内の通信管理部１２は、メッセージに付与された、ＰＣＩｅＳＷドライバ部１４ｂ−１のＸＩＤにもとづいて、ＰＣＩｅＳＷドライバ部１４ｂ−１を起動して、ＨＢＡドライバ部１２ｂ−１からＰＣＩｅＳＷドライバ部１４ｂ−１へメッセージを転送する。
【００５７】
一方、通信ノードＮ３において、ＰＣＩｅＳＷドライバ部１５ｂ−１およびＨＢＡドライバ部１３ｂ−２は、互いの通信デバイスの種類が異なる。よって、通信ノードＮ３内の通信管理部１３は、メッセージに付与された、ＨＢＡドライバ部１３ｂ−２のＸＩＤにもとづいて、ＨＢＡドライバ部１３ｂ−２を起動して、ＰＣＩｅＳＷドライバ部１５ｂ−１からＨＢＡドライバ部１３ｂ−２へメッセージを通知する。
【００５８】
＜ハードウェア構成＞
次に通信ノードのハードウェア構成について説明する。図７は通信ノードのハードウェア構成の一例を示す図である。通信ノードＮ０、・・・、Ｎ３（以下、総称する場合は通信ノードＮと表記）は、図１に示した情報処理装置１の機能を備え、プロセッサ１００によって装置全体が制御されている。すなわち、プロセッサ１００は、通信ノードＮの制御部（ＰＣＩｅＳＷドライバ部、ＨＢＡドライバ部および通信管理部を含む）として機能する。
【００５９】
プロセッサ１００には、バス１０３を介してメモリ１０１と複数の周辺機器が接続されている。プロセッサ１００は、マルチプロセッサであってもよい。プロセッサ１００は、例えば、ＣＰＵ（Central Processing Unit）、ＭＰＵ（Micro Processing Unit）、ＤＳＰ（Digital Signal Processor）、ＡＳＩＣ（Application Specific Integrated Circuit）、またはＰＬＤ（Programmable Logic Device）である。またプロセッサ１００は、ＣＰＵ、ＭＰＵ、ＤＳＰ、ＡＳＩＣ、ＰＬＤのうちの２以上の要素の組み合わせであってもよい。
【００６０】
メモリ１０１は、通信ノードＮの主記憶装置として使用される。メモリ１０１には、プロセッサ１００に実行させるＯＳ（Operating System）のプログラムやアプリケーションプログラムの少なくとも一部が一時的に格納される。また、メモリ１０１には、プロセッサ１００による処理に要する各種メッセージが格納される。
【００６１】
また、メモリ１０１は、通信ノードＮの補助記憶装置としても使用され、ＯＳのプログラム、アプリケーションプログラム、および各種メッセージが格納される。メモリ１０１は、補助記憶装置として、フラッシュメモリやＳＳＤ（Solid State Drive）等の半導体記憶装置やＨＤＤ（Hard Disk Drive）等の磁気記録媒体を含んでもよい。
【００６２】
バス１０３に接続されている周辺機器としては、入出力インタフェース１０２およびネットワークインタフェース１０４がある。入出力インタフェース１０２は、プロセッサ１００からの命令にしたがって通信ノードＮの状態を表示する表示装置として機能するモニタ（例えば、ＬＥＤ（Light Emitting Diode）やＬＣＤ（Liquid Crystal Display）等）が接続されている。
【００６３】
また、入出力インタフェース１０２は、キーボードやマウス等の情報入力装置を接続可能であって、情報入力装置から送られてくる信号をプロセッサ１００に送信する。
入出力インタフェース１０２は、周辺機器を接続するための通信インタフェースとして機能する。例えば、入出力インタフェース１０２は、レーザ光等を利用して、光ディスクに記録されたメッセージの読み取りを行う光学ドライブ装置を接続することができる。光ディスクは、光の反射によって読み取り可能なようにメッセージが記録された可搬型の記録媒体である。光ディスクには、ＤＶＤ（Digital Versatile Disc）、ＤＶＤ−ＲＡＭ（Random Access Memory）、ＣＤ−ＲＯＭ（Compact Disc Read Only Memory）、ＣＤ−Ｒ（Recordable）／ＲＷ（Rewritable）等がある。
【００６４】
また、入出力インタフェース１０２は、メモリ装置やメモリリーダライタを接続することができる。メモリ装置は、入出力インタフェース１０２との通信機能を搭載した記録媒体である。メモリリーダライタは、メモリカードへのメッセージの書き込み、またはメモリカードからのメッセージの読み出しを行う装置である。メモリカードは、カード型の記録媒体である。
【００６５】
ネットワークインタフェース１０４は、例えば、ＮＩＣ（Network Interface Card）、無線ＬＡＮ（Local Area Network）カード等であり、ネットワークインタフェース１０４で受信された信号やメッセージ等は、プロセッサ１００に出力される。
【００６６】
以上のようなハードウェア構成によって、通信ノードＮの処理機能を実現することができる。例えば、通信ノードＮは、プロセッサ１００がそれぞれ所定のプログラムを実行することで、メッセージ転送制御を行うことができる。
【００６７】
通信ノードＮは、例えば、コンピュータで読み取り可能な記録媒体に記録されたプログラムを実行することにより、本発明の処理機能を実現する。通信ノードＮに実行させる処理内容を記述したプログラムは、様々な記録媒体に記録しておくことができる。
【００６８】
例えば、通信ノードＮに実行させるプログラムを補助記憶装置に格納しておくことができる。プロセッサ１００は、補助記憶装置内のプログラムの少なくとも一部を主記憶装置にロードし、プログラムを実行する。また、光ディスク、メモリ装置、メモリカード等の可搬型記録媒体に記録しておくこともできる。可搬型記録媒体に格納されたプログラムは、例えば、プロセッサ１００からの制御により、補助記憶装置にインストールされた後、実行可能となる。またプロセッサ１００が、可搬型記録媒体から直接プログラムを読み出して実行することもできる。
【００６９】
＜メッセージフォーマット＞
図８はメッセージフォーマットの一例を示す図である。メッセージ転送で使用されるメッセージＭ０は、ヘッダ部とペイロード部を有する。ヘッダ部は、ＭＳＧ＿Ｔｙｐｅ（メッセージタイプ）、ＸＩＤ（迂回転送先識別子）およびＸＩＤ＿ＦＷ（転送要求先識別子）を含む。
【００７０】
ＭＳＧ＿Ｔｙｐｅは、メッセージが例えば、迂回転送用のメッセージであるか否か等のタイプを示す。ＸＩＤは、迂回転送先の識別子を示す。ＸＩＤ＿ＦＷは、転送要求先の識別子を示す。
【００７１】
＜ＱＳＴＲによるメッセージ転送＞
次にＱＳＴＲによるメッセージ転送について図９、図１０を用いて説明する。図９はＱＳＴＲによるメッセージ転送を説明するための図である。ＰＣＩｅＳＷが受信したメッセージを、ＨＢＡを経由して転送要求先へメッセージを迂回転送する場合を示している。
【００７２】
ハードウェアレイヤでは、ＰＣＩｅＳＷドライバがメッセージを受信する。通信管理部（スレッドスケジューラ）では、ＱＳＴＲにもとづく１対１のメッセージ転送が行われる。ソフトウェアレイヤでは、転送要求先へメッセージが送信される。
【００７３】
ここで、ＱＳＴＲにもとづくメッセージ転送では、ＱＳＴＲ＿ＲＥＡＤ（読み出し通知）のシステムコールは、スレッドスケジューラでスリープ（sleep）しており、自身のＸＩＤに対するＱＳＴＲ＿ＷＲＩＴＥ（書き込み通知）のシステムコールが行われると、スレッドスケジューラから起床する仕組みとなっている。
【００７４】
すなわち、ＱＳＴＲは、自身のＸＩＤによるＱＳＴＲ＿ＷＲＩＴＥが行われると、通信パイプ先でスリープしているＱＳＴＲ＿ＲＥＡＤの待ち受けを起床させる。
〔ステップＳ２１〕ＰＣＩｅＳＷドライバ部にメッセージが到達する。
【００７５】
〔ステップＳ２２〕ＰＣＩｅＳＷドライバ部は、メッセージヘッダのＸＩＤを参照し、メッセージ受信処理を開始する。
〔ステップＳ２３〕スレッドスケジューラは、メッセージのＭＳＧ＿Ｔｙｐｅを参照し、メッセージ迂回転送だと判別すると、メッセージ中のＸＩＤに対応したＱＳＴＲ＿ＷＲＩＴＥを実施する。
【００７６】
〔ステップＳ２４〕迂回転送を待ち受けているＨＢＡドライバ部は、このＱＳＴＲ＿ＷＲＩＴＥによってスレッドスケジューラから起床し、転送要求先へメッセージを通知する。
【００７７】
図１０はメッセージ乗換えをせずにメッセージ転送が行われる状態を示す図である。ハードウェアレイヤにおいて、通信ノードブロックＮＢ２、通信ノードＮ３、ＨＢＡドライバ部１３ｂ−２、ＰＣＩｅＳＷドライバ部１５ｂ−１と階層化される。
【００７８】
また、ソフトウェアレイヤでは、スレッドスケジューラｓｈが位置し、スレッドスケジューラｓｈ上に、ＰＣＩｅＳＷドライバ部ｄｒ１１と、ＨＢＡドライバ部ｄｒ１２が位置する。また、上位層には上位ソフトウェアｓｆが位置する。
【００７９】
ＰＣＩｅＳＷドライバ部ｄｒ１１は、スレッドスケジューラｓｈに受信ポーラｐｏｌ１ａと、送信完了ポーラｐｏｌ２ａとを有し、受信ポーラｐｏｌ１ａによって受信ポーリングが行われ、送信完了ポーラｐｏｌ２ａによって送信完了ポーリングが行われる。
【００８０】
ＨＢＡドライバ部ｄｒ１２は、スレッドスケジューラｓｈに受信ポーラｐｏｌ１ｂと、送信完了ポーラｐｏｌ２ｂとを有し、受信ポーラｐｏｌ１ｂによって受信ポーリングが行われ、送信完了ポーラｐｏｌ２ｂによって送信完了ポーリングが行われる。
【００８１】
〔ステップＳ３１〕ＰＣＩｅＳＷドライバ部１５ｂ−１は、メッセージを受信する。
〔ステップＳ３２〕スレッドスケジューラ内で、ＱＳＴＲのメッセージ転送が行われ、上位ソフトウェアｓｆの処理による乗換え処理が行われることなく、ステートｍｓｇ＿ｒｅｃｖ（）のメッセージは、転送要求先へ送信される。
【００８２】
上記のように、通信ノードＮは、ＨＢＡドライバ部、ＰＣＩｅＳＷドライバ部共にスレッドスケジューラに対して、送信完了ポーラ、受信ポーラを持ち、スレッドスケジューラのＱＳＴＲでメッセージ転送を行う。また、この場合、メッセージに付与されたＸＩＤにもとづき、ＨＢＡドライバ部、ＰＣＩｅＳＷドライバ部のいずれかを起床させる。
【００８３】
このように、ＱＳＴＲにもとづくメッセージ転送の実行により、ソフトウェアの乗換え処理を行わずに、直接ドライバ部間でメッセージ転送を行うことが可能になる。また、メッセージ転送に際して、メッセージのヘッダ部には、ＭＳＧ＿Ｔｙｐｅ、ＸＩＤおよびＸＩＤ＿ＦＷが設けられる。
【００８４】
これにより、迂回パス上で迂回転送用のメッセージと特定できるので、メッセージ迂回転送時の迂回パス上で例えば、メッセージのペイロードをラップ（Wrap）することなく転送することができ、処理負荷を低減することができる。
【００８５】
＜メッセージ迂回転送のシーケンス＞
図１１はメッセージ迂回転送のシーケンスの一例を示す図である。通信ノードＮ０と通信ノードＮ３とをつなぐ通信パスＰ１３が切断し、迂回パスｐ２０でメッセージ転送が行われるものとする。なお、図１１中の“ｓｍｓｇ”は転送要求元からのメッセージ、“ｍｓｇ”は応答メッセージを示す。
【００８６】
〔ステップＳ４１〕メッセージ転送要求元の通信ノードＮ０の通信管理部１０は、ＨＢＡドライバ部１２ａ−２に対し、通信ノードＮ３のＨＢＡドライバ部１３ｂ−２へ向けてのメッセージ転送を指示する。
【００８７】
〔ステップＳ４２ａ〕ＨＢＡドライバ部１２ａ−２は、通信パスＰ１３を介して、通信ノードＮ０から通信ノードＮ３へのメッセージ転送を試みる。
〔ステップＳ４２ｂ〕通信管理部１０は、通信パスＰ１３が切断されているために、通信パスＰ１３を用いたメッセージ転送が不可であることを検出し、迂回転送を開始する。
【００８８】
〔ステップＳ４３〕通信管理部１０は、迂回パスｐ２０を用いてメッセージ転送を行うものとし、ＨＢＡドライバ部１２ａ−１は、通信ノードＮ２内のＨＢＡドライバ部１２ｂ−１へメッセージを転送する。このとき、メッセージのヘッダ部は、例えば、ＭＳＧ＿Ｔｙｐｅ＝ＲＥＱ＿ＦＷ、ＸＩＤ＝０ｘ０００００００２、ＸＩＤ＿ＦＷ＝０ｘ０００００００３と設定される。
【００８９】
〔ステップＳ４４〕ＨＢＡドライバ部１２ｂ−１は、メッセージを受信する。通信管理部１２は、受信されたメッセージのＭＳＧ＿Ｔｙｐｅが迂回転送タイプ（ＲＥＱ＿ＦＷ）と検出する。そして、通信管理部１２は、ＨＢＡドライバ部１２ｂ−１に対し、ＰＣＩｅＳＷドライバ部１４ｂ−１へ向けてメッセージを転送する指示を出す。このとき、メッセージのヘッダ部は、例えば、ＭＳＧ＿Ｔｙｐｅ＝ＲＥＱ＿ＦＷ、ＸＩＤ＝０ｘ８０００００２３、ＸＩＤ＿ＦＷ＝０ｘ０００００００３と設定される。
【００９０】
〔ステップＳ４５〕通信管理部１２は、ＸＩＤをキーにしてＰＣＩｅＳＷドライバ部１４ｂ−１用のＱＳＴＲを取得する。そして、通信管理部１２は、メッセージをＱＳＴＲ＿ＷＲＩＴＥにし、ＰＣＩｅＳＷドライバ部１４ｂ−１のＱＳＴＲ＿ＲＥＡＤを起床させて、ＨＢＡドライバ部１２ｂ−１からＰＣＩｅＳＷドライバ部１４ｂ−１へメッセージを転送する。
【００９１】
〔ステップＳ４６〕通信ノードＮ２内のＨＢＡドライバ部１２ｂ−１は、通信ノードＮ１０のＨＢＡドライバ部１２ａ−１へ転送完了メッセージ（ＡＣＫメッセージ）を送信する。このとき、メッセージのヘッダ部は、例えば、ＭＳＧ＿Ｔｙｐｅ＝ＡＣＫ＿ＦＷ、ＸＩＤ＝０ｘ０００００００２、ＸＩＤ＿ＦＷ＝０ｘ０００００００３と設定される。
【００９２】
〔ステップＳ４７〕ＨＢＡドライバ部１２ａ−１は、通信管理部１０にメッセージ転送完了を通知する。
＜ＲＤＭＡ（Remote Direct Memory Access）の迂回転送＞
図１２はＲＤＭＡの迂回転送の一例を説明するための図である。通信ノードＮ０、Ｎ１、Ｎ２、Ｎ３は、図５に示したように、それぞれメモリ（メインメモリ）ｍｒ０、ｍｒ１、ｍｒ２、ｍｒ３を備える。また、メモリｍｒ０、ｍｒ１、ｍｒ２、ｍｒ３は、ドライバ部で転送されるメッセージを格納するためのドライババッファ領域ｒ０、ｒ１、ｒ２、ｒ３を有しており、各通信ノードで固定サイズが確保されている。
【００９３】
ここで、通信ノードＮ０のメモリｍｒ０に格納される転送元リストＭ１１、Ｍ１２を、ＲＤＭＡによって通信ノードＮ３のメモリｍｒ３に格納させる場合、通信ノードＮ２を介して迂回転送して行うものとする。
【００９４】
この場合、転送元リストＭ１１、Ｍ１２は、複数に分割されて、通信ノードＮ２内のメモリｍｒ２のドライババッファ領域ｒ２に一旦格納される。そして、ドライババッファ領域ｒ２から転送元リストＭ１１、Ｍ１２が読み出され、転送元リストＭ１１、Ｍ１２は、通信ノードＮ３内のメモリｍｒ３に格納される。
【００９５】
＜ＲＤＭＡの迂回転送のシーケンス＞
図１３はＲＤＭＡの迂回転送のシーケンスの一例を説明するための図である。なお、図１３中の“ｒｄｍａ”はＲＤＭＡ転送、またはＲＤＭＡ転送される転送リストを示し、“ｍｓｇ”はメッセージ通信、またはＲＤＭＡ転送を指示するメッセージを示す。
【００９６】
〔ステップＳ５１〕ＲＤＭＡ転送要求元の通信ノードＮ０の通信管理部１０は、ＨＢＡドライバ部１２ａ−２に対し、通信ノードＮ３のＨＢＡドライバ部１３ｂ−２へ向けてのＲＤＭＡ転送を指示する（ＲＤＭＡにメッセージヘッダは無し）。
【００９７】
〔ステップＳ５２ａ〕ＨＢＡドライバ部１２ａ−２は、通信パスＰ１３を介して、通信ノードＮ０から通信ノードＮ３へのＲＤＭＡ転送を試みる。
〔ステップＳ５２ｂ〕通信管理部１０は、通信パスＰ１３が切断されているために、通信パスＰ１３を用いたＲＤＭＡ転送が不可であることを検出し、迂回転送を開始する。
【００９８】
〔ステップＳ５３〕ＨＢＡドライバ部１２ａ−１は、通信ノードＮ２内のメモリｍｒ２のドライババッファ領域ｒ２へＲＤＭＡ転送を行う。
〔ステップＳ５４〕通信管理部１０は、ＨＢＡドライバ部１２ａ−１に対し、メッセージ通信により、ＲＤＭＡ転送指示を送信する。このとき、メッセージのヘッダ部は、例えば、ＭＳＧ＿Ｔｙｐｅ＝ＲＤＭＡ＿ＦＷ、ＸＩＤ＝０ｘ０００００００２と設定される。また、ＲＤＭＡ転送指示のメッセージのペイロードには、転送リストが格納される。
【００９９】
〔ステップＳ５５〕通信管理部１２は、ＰＣＩｅＳＷドライバ部１４ｂ−１に対してＲＤＭＡ転送を指示する（ＲＤＭＡ転送のメッセージヘッダ無し）。
〔ステップＳ５６〕ＨＢＡドライバ部１２ｂ−１は、ＰＣＩｅＳＷドライバ部１４ｂ−１の転送完了待ちを行う。
【０１００】
〔ステップＳ５７〕ＨＢＡドライバ部１２ｂ−１は、通信ノードＮ０のＨＢＡドライバ部１２ａ−１へ転送完了メッセージを送信する。このとき、メッセージヘッダ部には、例えば、ＭＳＧ＿Ｔｙｐｅ＝ＲＤＭＡ＿ＦＷ＿Ｅ、ＸＩＤ＝０ｘ０００００００２と設定される。
【０１０１】
〔ステップＳ５８〕ステップＳ５３からステップＳ５７までの処理が、ＲＤＭＡ転送要求元の転送元リストのサイズ分実施される。
〔ステップＳ５９〕ＨＢＡドライバ部１２ａ−１は、通信管理部１０にＲＤＭＡ転送完了を通知する。
【０１０２】
上記のように、通信ノードＮ２のＨＢＡドライバ部１２ｂ−１が受信ポーリングでメッセージを受け取り、ＰＣＩｅＳＷドライバ部１４ｂ−１のＲＤＭＡを起動するので、この部分で上位ソフトウェアの処理が挟むことはない。
【０１０３】
なお、上記では、互いに異なるハードウェアのメッセージ転送を、ＨＢＡとＰＣＩｅＳＷ間でのメッセージ転送として説明したが、他のデータ伝送機能を有する通信デバイスに対しても本発明を適用できる。
【０１０４】
以上説明したように、本発明によれば、異なるハードウェアのドライバ部間のメッセージ転送時、スレッドスケジューラが有するＱＳＴＲにより、メッセージに付与された識別子にもとづき転送先ドライバ部を起動してメッセージ転送を行う。これにより、メッセージ転送時間を短縮化することができる。また、以下に示すような効果も有する。
【０１０５】
（１）迂回通信を高速に転送することを可能にするので、冗長経路の構成部品（ドライバ部等）を削減することが可能になり、装置の低コスト化が可能になる。
（２）上位ソフトウェア処理でのメッセージ乗換えが発生しないため、迂回転送を低レイテンシで実現でき、通信性能が高速化し、上位ソフトウェア処理で要していた受信バッファメモリを削減することが可能になる。
【０１０６】
（３）ソフトウェアの入れ替えや、改版などの上位ソフトウェア処理の移植が不要となるため、開発コストの低減が可能になる。
（４）転送メッセージのラップが不要なため、迂回パスが複数に跨っても、経路上のメッセージサイズを変更するがことなく、速度劣化のない迂回転送が可能になる。
【０１０７】
上記で説明した本発明の情報処理装置１、通信ノードＮの処理機能は、コンピュータによって実現することができる。この場合、情報処理装置１、通信ノードＮが有すべき機能の処理内容を記述したプログラムが提供される。そのプログラムをコンピュータで実行することにより、上記処理機能がコンピュータ上で実現される。
【０１０８】
処理内容を記述したプログラムは、コンピュータで読み取り可能な記録媒体に記録しておくことができる。コンピュータで読み取り可能な記録媒体としては、磁気記憶装置、光ディスク、光磁気記録媒体、半導体メモリ等がある。磁気記憶装置には、ハードディスク装置（ＨＤＤ）、フレキシブルディスク（ＦＤ）、磁気テープ等がある。光ディスクには、ＤＶＤ、ＤＶＤ−ＲＡＭ、ＣＤ−ＲＯＭ／ＲＷ等がある。光磁気記録媒体には、ＭＯ（Magneto Optical disk）等がある。
【０１０９】
プログラムを流通させる場合、例えば、そのプログラムが記録されたＤＶＤ、ＣＤ−ＲＯＭ等の可搬型記録媒体が販売される。また、プログラムをサーバコンピュータの記憶装置に格納しておき、ネットワークを介して、サーバコンピュータから他のコンピュータにそのプログラムを転送することもできる。
【０１１０】
プログラムを実行するコンピュータは、例えば、可搬型記録媒体に記録されたプログラムもしくはサーバコンピュータから転送されたプログラムを、自己の記憶装置に格納する。そして、コンピュータは、自己の記憶装置からプログラムを読み取り、プログラムに従った処理を実行する。なお、コンピュータは、可搬型記録媒体から直接プログラムを読み取り、そのプログラムに従った処理を実行することもできる。
【０１１１】
また、コンピュータは、ネットワークを介して接続されたサーバコンピュータからプログラムが転送される毎に、逐次、受け取ったプログラムに従った処理を実行することもできる。また、上記の処理機能の少なくとも一部を、ＤＳＰ、ＡＳＩＣ、ＰＬＤ等の電子回路で実現することもできる。
【０１１２】
以上、実施の形態を例示したが、実施の形態で示した各部の構成は同様の機能を有する他のものに置換することができる。また、他の任意の構成物や工程が付加されてもよい。さらに、前述した実施の形態のうちの任意の２以上の構成（特徴）を組み合わせたものであってもよい。
【符号の説明】
【０１１３】
１  情報処理装置
１ａ−１、１ａ−２  通信ドライバ部
１ｂ  通信管理部
ＸＩＤ  識別子
ＱＳＴＲ  待ち合わせ構造体
【図１】
2018181170.tif 000003
【図２】
2018181170.tif 000004
【図３】
2018181170.tif 000005
【図４】
2018181170.tif 000006
【図５】
2018181170.tif 000007
【図６】
2018181170.tif 000008
【図７】
2018181170.tif 000009
【図８】
2018181170.tif 000010
【図９】
2018181170.tif 000011
【図１０】
2018181170.tif 000012
【図１１】
2018181170.tif 000013
【図１２】
2018181170.tif 000014
【図１３】
2018181170.tif 000015