(57)【特許請求の範囲】
【請求項１】
クライアントプログラムと第１のネットワークトレースライブラリを記憶した少なくとも１つのクライアント側コンピュータと、サーバプログラムと第２のネットワークトレースライブラリを記憶したサーバ側コンピュータがネットワークに接続されて協調動作をするシステムにおけるネットワーク分散プログラムトレース方法であり、
前記クライアントプログラムを用いる前記クライアント側コンピュータが、通常のネットワークライブラリと互換インターフェースを持つ前記第１のネットワークトレースライブラリを使用して、
前記クライアントプログラムから前記サーバプログラムへのデータ送信要求があると、前記第２のネットワークトレースライブラリに対して、トレース情報交換用のコネクションが確立していないかをチェックするステップと、
前記チェックするステップにおいて、コネクションが確立していない場合は、予め定められたポート番号を使用し、トレース情報交換用コネクションを確立するステップと、
前記トレース情報交換用コネクションを使用して、データ送信用コネクションの情報と、前記クライアントプログラムのプロセス、スレッド情報等のトレース情報とを送信するステップと、
前記送信するステップの後に、前記クライアントプログラムから渡された送信データを前記データ送信用コネクションを使用して送信するステップと、
を実行し、
前記サーバプログラムを用いる前記サーバ側コンピュータが、通常のネットワークライブラリと互換インタフェースを持つ前記第２のネットワークトレースライブラリを使用して、
前記トレース情報交換用コネクションが確立している場合に、前記トレース情報を受信するステップと、
前記送信データに対応する前記トレース情報を先に受信した場合に、前記トレース情報を元に、前記データ送信用コネクションを使用して受信した前記データのトレースを行うステップと、
を実行することを特徴とするネットワーク分散プログラムトレース方法。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、ネットワーク分散プログラムトレース方法に関する。
【０００２】
【従来の技術】
従来、ネットワーク分散プログラムトレース方法は、例えば、ネットワークシステムとして構築されたコンピュータ間の分散プログラムトレース方式として適用される。このコンピュータのＯＳには、その計算機全体の通信内容をトレースする機能が組み込まれている。これを用いて、クライアントとサーバとでデータの送受信を行い、協調動作するプログラム群のトレースを行う場合、ＯＳのコマンドは、計算機全体もしくは予め指定したポートに関するデータの通信をトレースする。
【０００３】
本発明と技術分野の類似する従来技術例１として、特開平０６−７８０２１号公報の「トランスポートプロトコルマシン実装方式」がある。本従来例１は、トランスポートの状態遷移表における各処理に実行番号を与え、各処理を番号毎に閉じたものとし、トランスポート内部のトレース情報を取ることにより、開発／保守の効率化を図るものである。この目的において、トランスポート層のトレース情報の採取に関する技術を開示している。
【０００４】
【発明が解決しようとする課題】
しかしながら、上記の従来技術において、起動時に動的に空いているポートを獲得して動作するようなプログラムを対象とする場合は、このＯＳコマンドを用いて、対象となるプログラムに的を絞ってトレースすることは難しい。なぜならば、起動時に獲得されるポート番号をＯＳコマンドに指定するのはＯＳコマンドの起動後であり、従ってプログラムの通信トレースはプログラムの開始後以降になる。このため、プログラム起動時の動作についてのトレースができないからである。
【０００５】
また、一つのクライアントプログラムが複数のサーバプログラムと、あるいは複数のクライアントプログラムが一つのサーバプログラムと協調動作を行う場合は、ＯＳコマンドによる通信データの取り出しではクライアントプログラムまたはサーバプログラムが使用しているポート番号によってのみ情報の選別を行うような、特定のクライアントプログラム−サーバプログラム間の通信のみを取り出しての通信データのトレースを行うことはできない。
【０００６】
よって、従来のプログラム作成では、トレースを行いたければ、本体に「トレースモードでメッセージを出力し、そうでなければ実行しない」というコマンドを埋め込んで、トレース用のメッセージを出力する必要があるという問題点を伴う。
【０００７】
本発明は、プロトコルスタック交換による通信データのトレースの自由度を向上させた、ネットワーク分散プログラムトレース方法を提供することを目的とする。
【０００８】
【課題を解決するための手段】
かかる目的を達成するため、請求項１記載の発明のネットワーク分散プログラムトレース方法は、クライアントプログラムと第１のネットワークトレースライブラリを記憶した少なくとも１つのクライアント側コンピュータと、サーバプログラムと第２のネットワークトレースライブラリを記憶したサーバ側コンピュータがネットワークに接続されて協調動作をするシステムにおけるネットワーク分散プログラムトレース方法であり、前記クライアントプログラムを用いる前記クライアント側コンピュータが、通常のネットワークライブラリと互換インターフェースを持つ前記第１のネットワークトレースライブラリを使用して、前記クライアントプログラムから前記サーバプログラムへのデータ送信要求があると、前記第２のネットワークトレースライブラリに対して、トレース情報交換用のコネクションが確立していないかをチェックするステップと、前記チェックするステップにおいて、コネクションが確立していない場合は、予め定められたポート番号を使用し、トレース情報交換用コネクションを確立するステップと、前記トレース情報交換用コネクションを使用して、データ送信用コネクションの情報と、前記クライアントプログラムのプロセス、スレッド情報等のトレース情報とを送信するステップと、前記送信するステップの後に、前記クライアントプログラムから渡された送信データを前記データ送信用コネクションを使用して送信するステップと、を実行し、前記サーバプログラムを用いる前記サーバ側コンピュータが、通常のネットワークライブラリと互換インタフェースを持つ前記第２のネットワークトレースライブラリを使用して、前記トレース情報交換用コネクションが確立している場合に、前記トレース情報を受信するステップと、前記送信データに対応する前記トレース情報を先に受信した場合に、前記トレース情報を元に、前記データ送信用コネクションを使用して受信した前記データのトレースを行うステップと、を実行することを特徴とする。
【０００９】
【発明の実施の形態】
次に、添付図面を参照して本発明によるネットワーク分散プログラムトレース方法の実施の形態を詳細に説明する。図１から図４を参照すると、本発明のネットワーク分散プログラムトレース方法の一実施形態が示されている。
【００１０】
図１は、本発明のネットワーク分散プログラムトレース方法が適用される第１の実施形態のシステム構成図を示している。図１に示すように、第１の実施形態のシステムでは、ネットワーク９上にクライアントプログラム１、クライアントプログラム７、サーバプログラム３が分散し、協調動作をするシステムを想定する。
【００１１】
クライアントプログラム１を用いたクライアント側コンピュータからサーバプログラム３を用いたサーバ側コンピュータへの通信要求は、通常のネットワークライブラリではなく、通常のネットワークライブラリと互換インタフェースを持つ本システムによるネットワークトレースライブラリ２を使用して送信される。サーバプログラム３にも同様のネットワークトレースライブラリ４が使用され、ネットワークトレースライブラリ２、４の間でトレース情報の交換を行うことにより、ネットワーク分散型プログラムの通信データのトレースを支援する。図１の場合、本発明により、クライアントプログラム１とサーバプログラム３に着目した通信データのトレースが可能になる。
【００１２】
同様にして、クライアント側コンピュータおよびサーバ側コンピュータ上で動作し、ネットワーク上でデータの送受信を行い、協調動作するプログラム群は、対象となるプログラム間で送られた通信データのみをまとめて収集することができれば、対象となるプログラムのやりとりだけに着目した、効率の良い通信状況の記録・解析が可能となる。
【００１３】
また、Windows（登録商標）プラットフォームのwinsock.dllや、UNIXのlibsocketのようなセッションレイヤのライブラリは、プログラム実行時に動的にリンクされるものである。このため、クライアントプログラム１やサーバプログラム３に変更を加えることなく、通常のネットワークライブラリを、ネットワークトレースライブラリ２およびネットワークトレースライブラリ４に交換することが可能である。図１において、標準のネットワークライブラリ８をもつクライアントプログラム７からサーバプログラム３への通信は、通常通り行える。
【００１４】
図２は、本発明のネットワーク分散プログラムトレース方法が適用される第２の実施形態のシステム構成図を示している。図２に示すように、第２の実施形態のシステムでは、クライアントプログラム１、クライアントプログラム７、サーバプログラム３、サーバプログラム５がネットワーク９上で協調動作をするシステムを形成する。
【００１５】
クライアントプログラム１を用いるクライアント側コンピュータはネットワークトレースライブラリ２を使用し、サーバプログラム３を用いるサーバ側コンピュータはネットワークトレースライブラリ４を使用し、クライアントプログラム７を用いるクライアント側コンピュータとサーバプログラム５を用いるサーバ側コンピュータは、それぞれ、ＯＳに付属する標準のネットワークライブラリ８と標準のネットワークライブラリ６を使用する。
【００１６】
図２に示したシステムのライブラリ間の接続において、ネットワークトレースライブラリ２および４の間が、トレース情報交換用コネクション１０およびデータ送信用コネクション１１で接続される。ネットワークトレースライブラリ２および標準のネットワークライブラリ６の間が、データ送信用コネクション１２で接続される。さらに、ネットワークトレースライブラリ４および標準のネットワークライブラリ８の間が、データ送信用コネクション１３で接続される。本実施例では、上記に接続されるシステムにおいてクライアントプログラム１とサーバプログラム３とが協調動作する処理に着目して、通信データのトレースを可能とする。この動作を以下に説明する。
【００１７】
本実施例の動作の詳細を、図２と図３および図４のフローチャートを参照して説明する。図３は、ネットワークトレースライブラリ２の処理手順例を示したフローチャートである。また、図４は、ネットワークトレースライブラリ４の処理手順例を示したフローチャートである。ネットワークトレースライブラリ２を使用するクライアント側コンピュータのクライアントプログラム１から、ネットワークトレースライブラリ４を使用するサーバ側コンピュータのサーバプログラム３へ通信を行う場合に、クライアント側コンピュータは図３に示した処理、サーバ側コンピュータは図４に示した処理を行う。以下に順を追ってこの処理の内容を説明する。
【００１８】
クライアント側コンピュータが、クライアントプログラム１からサーバ側コンピュータのサーバプログラム３へデータ送信要求すると（ステップＳ１）、図３に示すように、クライアント側コンピュータはネットワークトレースライブラリ２を用いて、通信先のサーバ側コンピュータのサーバプログラム３のネットワークトレースライブラリ４に対してトレース情報交換用のコネクションが確立していないかをチェックする（Ｓ２）。
【００１９】
上記のチェックでコネクションが確立していない場合は（Ｓ２／ＮＯ）、クライアント側コンピュータが、予め定めたポート番号を使用し、トレース情報交換用のコネクション１０を確立する（Ｓ３、Ｓ４／ＹＥＳ）。
【００２０】
クライアント側コンピュータは、ネットワークトレースライブラリ２を用いて、クライアントプログラム１から渡された送信データをサーバ側コンピュータに送信する前に、サーバ側コンピュータのネットワークトレースライブラリ４にトレース情報交換用コネクション１０を使用し、データ送信のために使用されるコネクション１１の情報と、クライアントプログラム１のプロセス、スレッド情報等のトレース情報を送信する（Ｓ５）。
【００２１】
サーバ側コンピュータはネットワークトレースライブラリ４を用いて、図４に示すように、トレース情報交換用コネクション１０を使用して、ネットワークトレースライブラリ２からのトレース情報を受信する。
【００２２】
クライアント側コンピュータは、ネットワークトレースライブラリ２を用いて、クライアントプログラム１から渡された送信データをデータ送信用コネクション１１を使用してサーバ側コンピュータに送信する（Ｓ６）。データ送信用コネクション１１は、通常のネットワークライブラリを使用した際に使用されるコネクションと同じものである。
【００２３】
サーバ側コンピュータは、ネットワークトレースライブラリ４を用いて、送信データを受信し（Ｓ１１、Ｓ１３、Ｓ１４）、先に受信したその送信データに対応するトレース情報を元にトレースを開始する（Ｓ１５、Ｓ１６、Ｓ１７）。
【００２４】
ネットワークトレースライブラリ２を使用するクライアント側コンピュータのクライアントプログラム１から、ネットワークトレースライブラリを使用せずＯＳに付属する標準のネットワークライブラリ６を使用するサーバ側コンピュータのサーバプログラム５へ通信を行う場合には、クライアント側コンピュータは、図３に示した手順の処理を行う。しかし、図中のステップＳ４でトレース情報交換用コネクションの確立が成功したかどうかのチェックの結果が「不成功」となり（Ｓ４／ＮＯ）、トレース情報は送信されない。この場合は、本発明によるトレース支援は行わず、通常のクライアントサーバ間通信となる。以下に順を追って処理を説明する。
【００２５】
クライアント側コンピュータが、クライアントプログラム１からサーバ側コンピュータのサーバプログラム５へデータ送信要求を行うと（Ｓ１）、図３に示すように、クライアント側コンピュータは、ネットワークトレースライブラリ２を用いて、通信先のサーバプログラム５のネットワークトレースライブラリにトレース情報交換用のコネクションが確立していないかチェックする（Ｓ２）。コネクションが確立していない場合は（Ｓ２／ＮＯ）、クライアント側コンピュータは、予め定めたポート番号を使用してのコネクションの確立を試みる（Ｓ３）。
【００２６】
しかし、サーバプログラム５を用いるサーバ側コンピュータは、ネットワークトレースライブラリを使用していないため、トレース情報交換用のコネクションは確立できない（Ｓ４／ＮＯ）。それにより、クライアント側コンピュータは、ネットワークトレースライブラリ２を用いて、サーバ側コンピュータがサーバプログラム５を用いてネットワークトレースライブラリを使用していないことを判別し、通常の通信のネットワークライブラリを使用した際の動作と同様に、データ送信用コネクション１２を使用してデータを送信する（Ｓ６）。
【００２７】
ネットワークトレースライブラリを使用せずＯＳに付属する標準のネットワークライブラリ８を使用するクライアント側コンピュータのクライアントプログラム７から、ネットワークトレースライブラリ４を使用するサーバ側コンピュータのサーバプログラム３へ通信を行う場合には、サーバ側コンピュータは図４の処理を行う。しかし、図中のステップＳ１１のトレース情報が受信可能であるかのチェックの結果が「受信不能」となり（Ｓ１１／ＮＯ）、図中のステップＳ１６の受信データに対するトレース情報の検索も失敗する（Ｓ１６／ＮＯ）場合は、本発明によるトレース手順の支援は行わず、通常のクライアントサーバ間通信となる。以下に順を追って処理方法を説明する。
【００２８】
クライアント側コンピュータがクライアントプログラム７からサーバ側コンピュータのサーバプログラム３へデータ送信要求を行うと（Ｓ１）、クライアント側コンピュータは、標準のネットワークライブラリ８を用いて、クライアントプログラム７から渡された送信データをデータ送信用コネクション１３を使用してサーバ側コンピュータのサーバプログラム３へ送信する（Ｓ２、Ｓ３、Ｓ４、Ｓ５、Ｓ６）。
【００２９】
サーバプログラム３を用いるサーバ側コンピュータは、ネットワークトレースライブラリ４を使用して、図４に示す手順により送信データを受信し（Ｓ１１、Ｓ１２、Ｓ１３、Ｓ１４）、その送信データに対応するトレース情報を検索する（Ｓ１５）。
【００３０】
クライアントプログラム７を用いるクライアント側コンピュータは、ネットワークトレースライブラリを使用していないため、該当するトレース情報は存在しない。そのため、サーバ側コンピュータは、ネットワークトレースライブラリ４を用いて、クライアントプログラム７を用いるクライアント側コンピュータがネットワークトレースライブラリを使用していないことを判別して通常の受信処理を行う（Ｓ１６／ＮＯ）。
【００３１】
上記の実施例では、クライアントサーバプログラムにおいて、クライアント側コンピュータからサーバ側コンピュータに通信を行う前に、トレースのために必要な情報を予めサーバ側コンピュータのライブラリに送信する。このことにより、クライアント側コンピュータとサーバ側コンピュータとで一貫したトレースが可能になる。また、クライアント側コンピュータ、サーバ側コンピュータのいずれかが本発明に基づくネットワークトレースライブラリを使用していない時は、従来のクライアントサーバ通信が可能になり、従来方式との互換性が保たれる。
【００３２】
上記の実施例では、ネットワークトレースライブラリは、Windows（登録商標）プラットフォームのwinsock.dll や、UNIXのlibsocket 等のセッションレイヤのネットワークライブラリのプログラム実行時に、動的にリンクされるという特徴を利用している。しかし、Windows（登録商標）プラットフォームやUNIX以外のＯＳにおいても、ネットワークライブラリが動的にリンクされ、交換可能な場合は同等の実施例が可能となる。
【００３３】
また、ネットワークライブラリがプログラム実行時に動的にリンクされないＯＳの場合には、トレースのためにクライアントプログラム、サーバプログラムに対して変更する必要がないという特徴を犠牲にし、クライアントプログラム、サーバプログラムの再リンクを行うことで同等の処理が可能となる。
【００３４】
上記の実施形態で説明した本発明は、Windows（登録商標）プラットフォームのwinsock.dll や、UNIXのlibsocket のようなセッションレイヤのライブラリを交換することにより、ネットワーク分散型のプログラムの通信データのトレースを支援するシステムである。ここで通信データのトレースとは、プログラムの通信・動作状況に応じてメッセージを出力する機能を組み込んでおき、出力されたメッセージを受け取り、受け取られたメッセージにより、どのような情報がどのようにやりとりされたのか等のプログラムやネットワークの処理履歴を記録・解析することにより、通信状態を確認したり、通信の異常を検知したりすることを目的とする。
【００３５】
このシステムによれば、着目するプログラムが起動するときに、トレース情報の交換、あるいはメッセージの出力が同時に開始されるので、処理を最初から漏らさずトレースを行うことができる。
【００３６】
また、一つのクライアント側コンピュータのクライアントプログラムが複数のサーバ側コンピュータのサーバプログラムと、あるいは複数のクライアント側コンピュータのクライアントプログラムが一つのサーバ側コンピュータのサーバプログラムと協調動作を行う場合、クライアントプログラムまたはサーバプログラムが使用しているポート番号によってのみ情報の選別を行うような、ＯＳコマンドによる通信データの取り出しでは、特定のクライアントプログラム−サーバプログラム間の通信のみを取り出して、通信データのトレースを行うことはできない。
【００３７】
この点に関しても本発明によることで、着目するクライアント／サーバプログラムのみをトレース用通信ライブラリを用いて起動することにより、必要とする通信のデータのみを取り出すことが可能となり、効率的な通信データのトレースが可能となる。
【００３８】
また、この発明によれば、対象となるプログラム本体にトレース用メッセージの出力機能があることが、トレースを行うための必須ではなくなる。
【００３９】
また本体プログラムにトレース用メッセージ出力機能が組み込んである場合にも、必要に応じた付加メッセージ出力機能を組み込んだ、あるいは全く組み込まないトレース用ライブラリを用いることにより、意図に応じたトレースメッセージを収集することが可能である。
【００４０】
尚、上述の実施形態は本発明の好適な実施の一例である。但し、これに限定されるものではなく、本発明の要旨を逸脱しない範囲内において種々変形実施が可能である。
【００４１】
【発明の効果】
以上の説明より明らかなように、本発明のネットワーク分散プログラムトレース方法は、クライアントプログラムと第１のネットワークトレースライブラリとを具備したクライアント側コンピュータと、サーバプログラムと第２のネットワークトレースライブラリとを具備したサーバ側コンピュータとが、所定のネットワーク上にそれぞれ接続されたシステム上で、ネットワーク上で分散プログラムのデータの送受信を行いクライアントプログラムおよびサーバプログラム間で送られたデータをまとめて収集し、所定の対象となる分散プログラムの授受に着目した協調動作を行う。
【００４２】
よって、本体にトレースモードでの動作仕様を組み込む必要がなく、トレースを実施したい場合には、本体プログラムの下位にあたる通信ライブラリにメッセージ出力機能を組み込むこともできる。この場合、本体プログラムにメッセージ出力機能がなくても、通信ライブラリをトレース用ライブラリに置き換えるだけで、トレース用メッセージを収集することができる。
【図面の簡単な説明】
【図１】本発明のネットワーク分散プログラムトレース方法が適用される第１の実施形態のシステム構成図を示している。
【図２】第２の実施形態のシステム構成図を示している。
【図３】ネットワークトレースライブラリ２の処理手順例を示したフローチャートである。
【図４】ネットワークトレースライブラリ４の処理手順例を示したフローチャートである。
【符号の説明】
１、７  クライアントプログラム
２、４  ネットワークトレースライブラリ
３、５  サーバプログラム
６、８  標準のネットワークライブラリ
９  ネットワーク
１０  トレース情報交換用コネクション
１１、１２、１３  データ送信用コネクション
【図１】
0003620392.tif 000002
【図２】
0003620392.tif 000003
【図３】
0003620392.tif 000004
【図４】
0003620392.tif 000005