(57)【要約】      （修正有）【課題】パケットの受信又は送信をループ処理によって待機する処理の死活状態の監視を可能とする。【解決手段】パケット受信ドライバ１１１は、ネットワークインタフェースによるパケットの受信をループ処理によって待機し、受信されたパケットをパケット記憶部１１５に記憶する。パケット受信ドライバは、ループ処理の合間において、ネットワークインタフェース１０５及びパケット受信ドライバのうちの少なくともいずれか一方の死活状態を示す情報を死活情報記憶部１１７ｒに書き込み、監視装置の監視部１１４は、死活情報記憶部を参照して、ネットワークインタフェース及びパケット受信ドライバのうちの少なくともいずれか一方の死活状態を監視する。【選択図】図４
2017151765.tif 000002
【特許請求の範囲】
【請求項１】
ネットワークインタフェースによるパケットの受信をループ処理によって待機し、受信されたパケットをパケット記憶部に記憶するパケット受信ドライバと、
前記ネットワークインタフェース及び前記パケット受信ドライバのうちの少なくともいずれか一方の死活状態を示す情報を記憶する死活情報記憶部と、
前記死活情報記憶部を参照して、前記ネットワークインタフェース及び前記パケット受信ドライバのうちの少なくともいずれか一方の死活状態を監視する監視部とを有し、
前記パケット受信ドライバは、前記ループ処理の合間において、前記死活状態を示す情報を前記死活情報記憶部に書き込む、
ことを特徴とする監視装置。
【請求項２】
ネットワークインタフェースから送信するパケットの有無をループ処理によって待機し、送信するパケットが有る場合に、当該パケットを前記ネットワークインタフェースに送信するパケット送信ドライバと、
前記ネットワークインタフェース及び前記パケット送信ドライバのうちの少なくともいずれか一方の死活状態を示す情報を記憶する死活情報記憶部と、
前記死活情報記憶部を参照して、前記ネットワークインタフェース及び前記パケット送信ドライバのうちの少なくともいずれか一方の死活状態を監視する監視部とを有し、
前記パケット送信ドライバは、前記ループ処理の合間において、前記死活状態を示す情報を前記死活情報記憶部に書き込む、
ことを特徴とする監視装置。
【請求項３】
ネットワークインタフェースによるパケットの受信をループ処理によって待機し、受信されたパケットをパケット記憶部に記憶するパケット受信手順と、
前記ネットワークインタフェース及び前記パケット受信手順のうちの少なくともいずれか一方の死活状態を示す情報を死活情報記憶部に記憶する記憶手順と、
前記死活情報記憶部を参照して、前記ネットワークインタフェース及び前記パケット受信手順のうちの少なくともいずれか一方の死活状態を監視する監視手順とをコンピュータが実行し、
前記パケット受信手順は、前記ループ処理の合間において、前記死活状態を示す情報を前記死活情報記憶部に書き込む、
ことを特徴とする監視方法。
【請求項４】
ネットワークインタフェースから送信するパケットの有無をループ処理によって待機し、送信するパケットが有る場合に、当該パケットを前記ネットワークインタフェースに送信するパケット送信手順と、
前記ネットワークインタフェース及び前記パケット送信手順のうちの少なくともいずれか一方の死活状態を示す情報を死活情報記憶部に記憶する記憶手順と、
前記死活情報記憶部を参照して、前記ネットワークインタフェース及び前記パケット送信手順のうちの少なくともいずれか一方の死活状態を監視する監視手順とをコンピュータが実行し、
前記パケット送信手順は、前記ループ処理の合間において、前記死活状態を示す情報を前記死活情報記憶部に書き込む、
ことを特徴とする監視方法。
【請求項５】
請求項１又は２記載の各部としてコンピュータを機能させることを特徴とするプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、監視装置、監視方法、及びプログラムに関する。
【背景技術】
【０００２】
近年、計算機システム上のアプリケーションを高速化処理させるため、非特許文献１に示されるＤＰＤＫ（Data Plane Development Kit）というライブラリがリリースされた。
【０００３】
ＤＰＤＫライブラリは、アプリケーションからＣＰＵ（Central Processing Unit）に直接処理命令を送信できるため、処理を高速化することができる。更に、ＤＰＤＫは、ＰＤＭ（Poll Mode Driver）と呼ばれるパケット受信ドライバ及びパケット送信ドライバを提供している。ＰＭＤは、図１及び図２に示されるような、ビジーウェイト方式に基づくアルゴリズムで動作している。なお、図１及び図２には、ビジーウェイト方式の一つの実装形態であるスピンロック方式のアルゴリズムが示されている。
【０００４】
図１に示されるように、パケット受信ドライバは、パケットの受信の有無をＮＩＣ（Network Interface Card）に確認しており、パケットが受信されていればそのパケットを、パケット受信ドライバがインストールされた装置内のパケット記憶部に記憶する。これらの一連の処理が高速に繰り返される。なお、パケット記憶部に記憶されたパケットは、アプリケーションによって読み取られる。
【０００５】
また、図２に示されるように、パケット送信ドライバは、前記装置内の送信用のパケット記憶部に対してアプリケーションによって書き込まれたパケットを読み取り、当該パケットをＮＩＣに送出する。これらの一連の処理が高速に繰り返される。
【０００６】
又は、複数のドライバが１つのパケット記憶部を参照する場合、一つのドライバ（以下、「ドライバＡ」という。）が処理を実行している間、他のドライバは、ドライバＡの処理が完了するまでの間、パケット記憶部を繰り返し参照する。このように、ある処理を高速ループで繰り返す動作は、ビジーウェイトと呼ばれている。
【０００７】
ビジーウェイト方式を適用したパケット受信処理やパケット送信処理を実行する場合、その間のＣＰＵは他の処理に割り込まれない。したがって、ドライバ開発者もＣＰＵへの割り込み処理による処理遅延を減らすためにビジーウェイトを採用している。一方、ＣＰＵは、パケットの有無にかかわらず性能限界まで使用される。
【０００８】
２０００年代前半、ビジーウェイトは、本来、処理時間が非常に短く、起動して直ちに終了するようなプロセスやスレッドに関して使用されるのが一般的であった。すなわち、ビジーウェイト状態を長時間にわたって維持するようなプロセスやスレッドはほとんど想定されていなかった。何故なら、上記の通り、ビジーウェイト状態を長時間にわたって維持するプロセスやスレッドを駆動させる場合、ＣＰＵが長時間にわたって性能限界まで使用され、長時間にわたって他の処理を実行できなくなってしまうからである。
【０００９】
ところが、近年、マルチコアＣＰＵや複数ＣＰＵソケットサーバが普及し、ＣＰＵコア数が大きく増加したこともあり、ＤＰＤＫのＰＭＤのように、ＣＰＵ処理性能を占有し、パケット処理を高速化することが可能となった。
【先行技術文献】
【非特許文献】
【００１０】
【非特許文献１】幸村裕子、パケットフォワーディング高速化技術、Internet Week 2012、2012年11月20日
【非特許文献２】N. McKeown, T. Anderson, H. Balakrishnan, G. Parulkar, L. Peterson, J. Rexford, S. Shenker, and J. Turner. OpenFlow: Enabling innovation in campus networks. SIGCOMM Comput. Commun. Rev., 38(2):69-74, 2008.
【非特許文献３】中島佳宏、汎用x86サーバを用いた高速なソフトウエアパケット処理技術、SDN Japan2014 (2014)
【発明の概要】
【発明が解決しようとする課題】
【００１１】
しかしながら、市中技術の開発動向は、ＰＭＤのようなプロセスやスレッドが長時間にわたって駆動することについて考慮されていない。また、ＰＭＤをはじめとするビジーウェイト方式のプロセスやスレッドが長期にわたって正常に動作することは技術的に保証されていない。したがって、ＰＭＤをはじめとするビジーウェイト方式のプロセスやスレッドを長期にわたって動作させる場合、それらの正常性を確認する手段が必要不可欠である。万一にも同プロセスや同スレッドが停止している場合には、同プロセスや同スレッドを再起動させなければならないからである。
【００１２】
しかし、ビジーウェイト方式で高速処理を実施するプロセスやスレッドは、処理を高速に繰り返し実行しているため、外部からの正常性の確認要求に応答できない。
【００１３】
本発明は、上記の点に鑑みてなされたものであって、パケットの受信又は送信をループ処理によって待機する処理の状態の監視を可能とすることを目的とする。
【課題を解決するための手段】
【００１４】
そこで上記課題を解決するため、監視装置は、ネットワークインタフェースによるパケットの受信をループ処理によって待機し、受信されたパケットをパケット記憶部に記憶するパケット受信ドライバと、前記ネットワークインタフェース及び前記パケット受信ドライバのうちの少なくともいずれか一方の死活状態を示す情報を記憶する死活情報記憶部と、前記死活情報記憶部を参照して、前記ネットワークインタフェース及び前記パケット受信ドライバのうちの少なくともいずれか一方の死活状態を監視する監視部とを有し、前記パケット受信ドライバは、前記ループ処理の合間において、前記死活状態を示す情報を前記死活情報記憶部に書き込む。
【発明の効果】
【００１５】
パケットの受信又は送信をループ処理によって待機する処理の状態の監視を可能とすることができる。
【図面の簡単な説明】
【００１６】
【図１】従来のスピンロック方式のパケット受信ドライバのアルゴリズムを示す図である。
【図２】従来のスピンロック方式のパケット送信ドライバのアルゴリズムを示す図である。
【図３】本発明の実施の形態における監視装置のハードウェア構成例を示す図である。
【図４】本発明の実施の形態における監視装置の機能構成例を示す図である。
【図５】本実施の形態における機能構成についての論理関係の一例を示す図である。
【図６】パケット受信ドライバが実行する処理手順の一例を説明するためのフローチャートである。
【図７】パケット送信ドライバが実行する処理手順の一例を説明するためのフローチャートである。
【図８】監視部が実行する処理手順の一例を説明するためのフローチャートである。
【発明を実施するための形態】
【００１７】
以下、図面に基づいて本発明の実施の形態を説明する。図３は、本発明の実施の形態における監視装置のハードウェア構成例を示す図である。図３の監視装置１０は、それぞれバスＢで相互に接続されているドライブ装置１００、補助記憶装置１０２、メモリ装置１０３、ＣＰＵ１０４、及びインタフェース装置１０５等を有する。
【００１８】
監視装置１０での処理を実現するプログラムは、ＣＤ−ＲＯＭ等の記録媒体１０１によって提供される。プログラムを記憶した記録媒体１０１がドライブ装置１００にセットされると、プログラムが記録媒体１０１からドライブ装置１００を介して補助記憶装置１０２にインストールされる。但し、プログラムのインストールは必ずしも記録媒体１０１より行う必要はなく、ネットワークを介して他のコンピュータよりダウンロードするようにしてもよい。補助記憶装置１０２は、インストールされたプログラムを格納すると共に、必要なファイルやデータ等を格納する。
【００１９】
メモリ装置１０３は、プログラムの起動指示があった場合に、補助記憶装置１０２からプログラムを読み出して格納する。ＣＰＵ１０４は、メモリ装置１０３に格納されたプログラムに従って監視装置１０に係る機能を実行する。インタフェース装置１０５は、例えばＮＩＣ（Network Interface Card）である。
【００２０】
なお、図３において、監視装置１０は、ＣＰＵ１０４、メモリ装置１０３、及びインタフェース装置１０５等を複数有していてもよい。また、インタフェース装置１０５は、複数のポートを有していてもよい。
【００２１】
図４は、本発明の実施の形態における監視装置の機能構成例を示す図である。図４において、インタフェース装置１０５は、パケット受信部１５１及びパケット送信部１５２等を有する。
【００２２】
パケット受信部１５１は、インタフェース装置１０５において、パケットの受信側の回線及び回路を含む部分に相当する。パケット受信部１５１は、ネットワークからパケットを受信すると、当該パケットを、パケット受信部１５１に属する受信バッファ１５１ｍに記憶する。
【００２３】
パケット送信部１５２は、インタフェース装置１０５において、パケットの送信側の回線及び回路を含む部分に相当する。パケット送信部１５２は、パケット送信部１５２に属する送信バッファ１５２ｍに書き込まれたパケットを、ネットワークに送信する。
【００２４】
なお、受信バッファ１５１ｍ及び送信バッファ１５２ｍは、インタフェース装置１０５が有するメモリを用いて実現される。
【００２５】
一方、ユーザ空間１１は、監視装置１０にインストールされた１以上のプログラムが、ＣＰＵ１０４に実行させる処理により、監視装置１０のＯＳ（Operating System）上において実現されるソフトウェア空間である。ユーザ空間１１は、パケット受信ドライバ１１１、パケット送信ドライバ１１２、アプリケーション１１３、及び監視部１１４等を含む。これら各部は、監視装置１０にインストールされた１以上のプログラムが、ＣＰＵ１０４に実行させる処理により実現される。
【００２６】
パケット受信ドライバ１１１は、ループ処理によって受信バッファ１５１ｍを繰り返し参照し、パケット受信部１５１への受信パケットの到着を待機する。受信パケットが受信バッファ１５１ｍに記憶されると、パケット受信ドライバ１１１は、受信パケットを受信バッファ１５１ｍから取得し、受信パケットを受信パケット記憶部１１５に書き込む。パケット受信ドライバ１１１は、以上一連の処理をビジーウェイト方式又はスピンロック方式に基づいて高速に繰り返すプロセス又はスレッドとして起動される。
【００２７】
受信パケット記憶部１１５は、パケット受信ドライバ１１１によって書き込まれた受信パケットを記憶する。なお、受信パケット記憶部１１５は、例えば、メモリ装置１０３を用いて実現される。
【００２８】
アプリケーション１１３は、受信パケット記憶部１１５に記憶されている受信パケットを取得し、当該受信パケットに関して所定の処理を実行する。アプリケーション１１３はまた、処理結果又は処理要求等に関する送信パケットを送信パケット記憶部１１６に書き込む。
【００２９】
送信パケット記憶部１１６は、アプリケーション１１３によって書き込まれた送信パケットを記憶する。なお、送信パケット記憶部１１６は、例えば、メモリ装置１０３を用いて実現される。
【００３０】
パケット送信ドライバ１１２は、ループ処理によって送信パケット記憶部１１６を繰り返し参照し、送信パケット記憶部１１６への送信パケットの書き込みを待機する。送信パケット記憶部１１６に送信パケットが書き込まれると、パケット送信ドライバ１１２は、当該送信パケットを読み取り、当該送信パケットを送信バッファ１５２ｍに書き込む。パケット送信ドライバ１１２は、以上の一連の処理をビジーウェイト方式又はスピンロック方式に基づいて高速に繰り返すプロセス又はスレッドとして起動される。
【００３１】
死活情報記憶部１１７ｒは、パケット受信部１５１及びパケット受信ドライバ１１１の少なくともいずれか一方の死活状態（正常性）を示す情報（以下、「死活情報」という。）を記憶する。すなわち、パケット受信ドライバ１１１は、例えば、ループ処理の合間（例えば、定期的）に、死活情報を死活情報記憶部１１７ｒに記憶する。
【００３２】
死活情報記憶部１１７ｔは、パケット送信部１５２又はパケット送信ドライバ１１２の死活情報を記憶する。すなわち、パケット送信ドライバ１１２は、例えば、ループ処理の合間（例えば、定期的）に、死活情報を死活情報記憶部１１７ｔに記憶する。
【００３３】
監視部１１４は、死活情報記憶部１１７ｒを参照して、パケット受信部１５１及びパケット受信ドライバ１１１の少なくともいずれか一方の正常性を監視する。監視部１１４は、また、死活情報記憶部１１７ｔを参照して、パケット送信部１５２及びパケット送信ドライバ１１２の少なくともいずれか一方の正常性を監視する。
【００３４】
なお、死活情報記憶部１１７ｒ及び死活情報記憶部１１７ｔは、例えば、メモリ装置１０３を用いて実現される。
【００３５】
なお、パケット受信ドライバ１１１及びパケット送信ドライバ１１２には、それぞれ１つのＣＰＵコアが割り当てられてもよい。
【００３６】
また、本実施の形態には、Ｉｎｔｅｌ（登録商標）社のＤＰＤＫ（Data Plane Development Kit）ライブラリのＰＤＭ（Poll Mode Driver）を用いた、ソフトウェアのＯｐｅｎＦｌｏｗスイッチ（非特許文献２）の一つであるＬａｇｏｐｕｓ（非特許文献３）が適用されてもよい。すなわち、パケット受信ドライバ１１１及びパケット送信ドライバ１１２は、ＰＤＭによって実現されてもよい。
【００３７】
図５は、本実施の形態における機能構成についての論理関係の一例を示す図である。図５では、パケット受信部１５１は４つである。また、パケット受信ドライバ１１１は２つであり、受信パケット記憶部１１５は、８つである。また、アプリケーション１１３は、４つである。また、送信パケット記憶部１１６は、８つであり、パケット送信ドライバ１１２は２つである。また、パケット送信部１５２は４つである。
【００３８】
各パケット受信部１５１は、ＰＭＤを駆動させる。各パケット受信部１５１は、パケットを受信すると、当該受信パケットを、各パケット受信部１５１の受信バッファ１５１ｍに書き込む。各パケット受信ドライバ１１１は、それぞれに対応する２つの受信バッファ１５１ｍから受信パケットを取得し、当該受信パケットを、各パケット受信ドライバ１１１に対応する４つの受信パケット記憶部１１５のいずれかに書き込む。各アプリケーション１１３は、例えば、Flow Lookup Packet Processingである。各アプリケーション１１３は、それぞれに対応する２つの受信パケット記憶部１１５から受信パケットを取得する。また、各アプリケーション１１３は、それぞれに対応する２つの送信パケット記憶部１１６に送信パケットを書き込む。なお、各アプリケーション１１３もＰＭＤを駆動させてもよい。
【００３９】
各パケット送信ドライバ１１２は、ＰＭＤを駆動させる。各パケット送信ドライバ１１２は、それぞれに対応する４つの送信パケット記憶部１１６から送信パケットを取得し、当該送信パケットを、各パケット送信ドライバ１１２に対応する２つの送信バッファ１５２ｍのいずれかに書き込む。各パケット送信部１５２は、それぞれの送信バッファ１５２ｍに書き込まれた送信パケットを送信する。
【００４０】
なお、図５では、監視部１１４は１つであるが、死活情報記憶部１１７ｒごと及び死活情報記憶部１１７ｔごとに監視部１１４が設けられてもよい。
【００４１】
又は、図５では、パケット受信ドライバ１１１ごとに死活情報記憶部１１７ｒが配置され、パケット送信ドライバ１１２ごとに死活情報記憶部１１７ｔが配置されているが、複数のパケット受信ドライバ１１１又は複数のパケット送信ドライバ１１２に対して一つの死活情報記憶部１１７が配置されてもよい。この場合、死活情報は、パケット受信ドライバ１１１又はパケット送信ドライバ１１２ごとに区別されて記憶されればよい。
【００４２】
以下、本実施の形態において実行させる処理手順について説明する。図６は、パケット受信ドライバが実行する処理手順の一例を説明するためのフローチャートである。
【００４３】
パケット受信ドライバ１１１は、高速なループ処理においてＮ回に１回の周期が到来しない場合には（Ｓ１０１でＮｏ）、受信バッファ１５１ｍを参照して、受信パケットの有無を確認する（Ｓ１０２）。受信パケットが無い場合（Ｓ１０２でＮｏ）、ステップＳ１０１に戻る。受信パケットが有る場合（Ｓ１０２でＹｅｓ）、パケット受信ドライバ１１１は、当該受信パケットを取得して（Ｓ１０３）、受信パケット記憶部１１５へ書き込む（Ｓ１０４）。
【００４４】
一方、Ｎ回に１回の周期が到来した場合（Ｓ１０１でＹｅｓ）、パケット受信ドライバ１１１は、パケット受信部１５１の死活状態（正常性）を確認する（Ｓ１０５）。パケット受信部１５１の死活情報は、例えば、以下のようにして確認される。パケット受信ドライバ１１１は、ハードウェアのパケット受信部１５１に信号を送り、その応答を受け取ることができる。それゆえ、当該応答を受け取ることができれば、パケット受信ドライバ１１１はパケット受信部１５１が正常状態であると判定する。又は、パケット受信ドライバ１１１は、パケット受信部１５１のメモリである受信バッファ１５１ｍを参照することができる。パケット受信ドライバ１１１が受信バッファ１５１ｍを参照できれば、パケット受信部１５１が正常状態であると判定されてもよい
続いて、パケット受信ドライバ１１１は、確認結果を示す死活情報を死活情報記憶部１１７ｒに書き込む（Ｓ１０６）。この際、過去に書き込まれた死活情報は、新たな死活情報によって上書きされる。
【００４５】
ここで、そもそもパケット受信ドライバ１１１が正常でない場合（停止している場合）、ステップＳ１０５及びＳ１０６は実行されない。この場合、死活情報の書き込みは行われない。したがって、死活情報の有無、及び死活情報の内容によって、パケット受信ドライバ１１１及びパケット受信部１５１の死活状態は、以下のように区別可能である。
【００４６】
死活情報が死活情報記憶部１１７ｒに記憶されていない場合、少なくともパケット受信ドライバ１１１に異常が有り、パケット受信部１５１の死活状態は不明である。
【００４７】
死活情報が死活情報記憶部１１７ｒに記憶されており、当該死活情報が異常状態を示す場合、パケット受信ドライバ１１１は正常であるが、パケット受信部１５１に異常が有る。
【００４８】
死活情報が死活情報記憶部１１７ｒに記憶されており、当該死活情報が正常状態を示す場合、パケット受信ドライバ１１１及びパケット受信部１５１が正常である。
【００４９】
このように、パケット受信ドライバ１１１は、自身及びパケット受信部１５１の正常性を示す死活情報を定期的に死活情報記憶部１１７ｒに書き込むことができる。
【００５０】
図７は、パケット送信ドライバが実行する処理手順の一例を説明するためのフローチャートである。
【００５１】
パケット送信ドライバ１１２は、高速なループ処理においてＮ回に１回の周期が到来しない場合には（Ｓ２０１でＮｏ）、送信パケット記憶部１１６を参照して、送信パケットの有無を確認する（Ｓ２０２）。送信パケットが無い場合（Ｓ２０２でＮｏ）、ステップＳ２０１に戻る。送信パケットが有る場合（Ｓ２０２でＹｅｓ）、パケット送信ドライバ１１２は、当該送信パケットを取得して（Ｓ２０３）、送信バッファ１５２ｍへ書き込む（Ｓ２０４）。
【００５２】
一方、Ｎ回に１回の周期が到来した場合（Ｓ２０１でＹｅｓ）、パケット送信ドライバ１１２は、パケット送信部１５２の死活状態（正常性）を確認する（Ｓ２０５）。パケット送信部１５２の死活情報は、例えば、以下のようにして確認される。パケット送信ドライバ１１２は、ハードウェアのパケット送信部１５２に信号を送り、その応答を受け取ることができる。それゆえ、当該応答を受け取ることができれば、パケット送信ドライバ１１２はパケット送信部１５２が正常状態であると判定する。又は、パケット送信ドライバ１１２は、パケット送信部１５２のメモリである送信パケット記憶部１１６を参照することができる。パケット送信ドライバ１１２が送信バッファ１５２ｍを参照できれば、パケット送信部１５２が正常状態であると判定されてもよい
続いて、パケット送信ドライバ１１２は、確認結果を示す死活情報を死活情報記憶部１１７ｔに書き込む（Ｓ２０６）。この際、過去に書き込まれた死活情報は、新たな死活情報によって上書きされる。
【００５３】
ここで、そもそもパケット送信ドライバ１１２が正常でない場合（停止している場合）、ステップＳ２０５及びＳ２０６は実行されない。この場合、死活情報の書き込みは行われない。したがって、死活情報の有無、及び死活情報の内容によって、パケット送信ドライバ１１２及びパケット送信部１５２の死活状態は、以下のように区別可能である。
【００５４】
死活情報が死活情報記憶部１１７ｔに記憶されていない場合、少なくともパケット送信ドライバ１１２に異常が有り、パケット送信部１５２の死活状態は不明である。
【００５５】
死活情報が死活情報記憶部１１７ｔに記憶されており、当該死活情報が異常状態を示す場合、パケット送信ドライバ１１２は正常であるが、パケット送信部１５２に異常が有る。
【００５６】
死活情報が死活情報記憶部１１７ｔに記憶されており、当該死活情報が正常状態を示す場合、パケット送信ドライバ１１２及びパケット送信部１５２が正常である。
【００５７】
このように、パケット送信ドライバ１１２は、自身及びパケット送信部１５２の正常性を示す死活情報を定期的に死活情報記憶部１１７ｒに書き込むことができる。
【００５８】
図８は、監視部が実行する処理手順の一例を説明するためのフローチャートである。例えば、図８は、監視装置１０に対するユーザによるコマンドの入力に応じて実行される。
【００５９】
ステップＳ３０１において、監視部１１４は、死活情報記憶部１１７ｒを参照する。死活情報記憶部１１７ｒに死活情報が記憶されている場合（Ｓ３０２でＹｅｓ）、監視部１１４は、パケット受信ドライバ１１１が正常であり、パケット受信部１５１の状態が、当該死活情報が示す状態であると判定する（Ｓ３０３）。続いて、監視部１１４は、当該死活情報を死活情報記憶部１１７ｒから削除する（Ｓ３０４）。
【００６０】
一方、死活情報記憶部１１７ｒに死活情報が記憶されていない場合（Ｓ３０２でＮｏ）、監視部１１４は、パケット受信ドライバ１１１に異常が有ると判定する（Ｓ３０５）。
【００６１】
ステップＳ３０４又はステップＳ３０５に続いて、監視部１１４は、死活情報記憶部１１７ｔを参照する（Ｓ３０６）。死活情報記憶部１１７ｔに死活情報が記憶されている場合（Ｓ３０７でＹｅｓ）、監視部１１４は、パケット送信ドライバ１１２が正常であり、パケット送信部１５２の状態が、当該死活情報が示す状態であると判定する（Ｓ３０８）。続いて、監視部１１４は、当該死活情報を死活情報記憶部１１７ｔから削除する（Ｓ３０９）。
【００６２】
一方、死活情報記憶部１１７ｔに死活情報が記憶されていない場合（Ｓ３０７でＮｏ）、監視部１１４は、パケット送信ドライバ１１２に異常が有ると判定する（Ｓ３１０）。
【００６３】
ステップＳ３０９又はステップＳ３１０に続いて、監視部１１４は、上記の判定結果を出力する（Ｓ３１１）。
【００６４】
なお、コマンドに対するパラメータの指定に応じて、パケット受信ドライバ１１１側のみの判定、又はパケット送信ドライバ１１２側のみの判定が行われてもよい。
【００６５】
ところで、図８の処理手順がコマンドの入力に応じて実行される場合、出力される判定結果は、必ずしも正しくない可能性が有る。例えば、図６の処理手順において、パケット受信ドライバ１１１が、正常状態を示す死活情報を死活情報記憶部１１７ｒに書き込んだ後に停止してしまったとする。この後に入力されたコマンドに応じて監視部１１４が死活情報記憶部１１７ｒを参照すると、監視部１１４は、当該死活情報に基づいて、パケット受信ドライバ１１１及びパケット受信部１５１が正常であると判定してしまう。
【００６６】
但し、このような判定結果が生じることが許容されてもよい。この場合、ユーザによって、複数回連続してコマンドの入力が行われれば、１回目のコマンドの入力に応じた処理により、死活情報が削除され、２回目のコマンドの入力に応じた処理により、死活情報が無いことに基づいて、パケット受信ドライバ１１１に異常が有るとする判定結果を出力可能であるからである。
【００６７】
又は、監視部１１４は、ユーザによるコマンドの入力の有無に拘わらず、図８の処理手順を複数のタイミングで（例えば、一定間隔で）実行してもよい。この場合、ステップＳ３１１では、判定結果が記憶されるようにすればよい。ユーザによってコマンドが入力された場合には、最後に記憶された判定結果が出力されてもよいし、その際に改めて図８の処理手順を実行することで得られた判定結果が出力されるようにしてもよい。
【００６８】
上述したように、本実施の形態によれば、ＮＩＣに到着するパケットを、ビジーウェイト方式又はスピンロック方式等の方式で高速に読み込むスレッ若しくはプロセス、又はパケットを高速にＮＩＣに送るスレッド若しくはプロセスについての、状態監視が可能となる。すなわち、パケットの受信又は送信をループ処理によって待機する処理の状態の監視を可能とすることができる。
【００６９】
なお、本実施の形態において、パケット受信部１５１、パケット送信部１５２、又はインタフェース装置１０５は、ネットワークインタフェースの一例である。
【００７０】
以上、本発明の実施例について詳述したが、本発明は斯かる特定の実施形態に限定されるものではなく、特許請求の範囲に記載された本発明の要旨の範囲内において、種々の変形・変更が可能である。
【符号の説明】
【００７１】
１０          監視装置
１１          ユーザ空間
１００        ドライブ装置
１０１        記録媒体
１０２        補助記憶装置
１０３        メモリ装置
１０４        ＣＰＵ
１０５        インタフェース装置
１１１        パケット受信ドライバ
１１２        パケット送信ドライバ
１１３        アプリケーション
１１４        監視部
１１５        受信パケット記憶部
１１６        送信パケット記憶部
１１７ｒ      死活情報記憶部
１１７ｔ      死活情報記憶部
１５１        パケット受信部
１５１ｍ      受信バッファ
１５２        パケット送信部
１５２ｍ      送信バッファ
Ｂ            バス
【図１】
2017151765.tif 000003
【図２】
2017151765.tif 000004
【図３】
2017151765.tif 000005
【図４】
2017151765.tif 000006
【図５】
2017151765.tif 000007
【図６】
2017151765.tif 000008
【図７】
2017151765.tif 000009
【図８】
2017151765.tif 000010
【手続補正書】
【提出日】平成29年2月7日(2017.2.7)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
ネットワークインタフェースによるパケットの受信をループ処理によって待機し、受信されたパケットをパケット記憶部に記憶するパケット受信ドライバと、
前記ネットワークインタフェースの死活状態を示す情報を記憶する死活情報記憶部と、
前記死活情報記憶部に記憶された情報を参照すると共に参照した情報を削除して、前記ネットワークインタフェース及び前記パケット受信ドライバの死活状態を監視する監視部とを有し、
前記パケット受信ドライバは、前記ループ処理の合間において、前記ネットワークインタフェースの死活状態を確認して、当該死活状態を示す情報を前記死活情報記憶部に書き込み、
前記監視部は、前記死活情報記憶部に情報が記憶されていない場合には、前記パケット受信ドライバに異常が有ると判定し、前記死活情報記憶部に情報が記憶されている場合には、前記パケット受信ドライバについて正常であると判定し、前記ネットワークインタフェースについて当該情報が示す状態であると判定する、
ことを特徴とする監視装置。
【請求項２】
ネットワークインタフェースから送信するパケットの有無をループ処理によって待機し、送信するパケットが有る場合に、当該パケットを前記ネットワークインタフェースに送信するパケット送信ドライバと、
前記ネットワークインタフェースの死活状態を示す情報を記憶する死活情報記憶部と、
前記死活情報記憶部に記憶された情報を参照すると共に参照した情報を削除して、前記ネットワークインタフェース及び前記パケット送信ドライバの死活状態を監視する監視部とを有し、
前記パケット送信ドライバは、前記ループ処理の合間において、前記ネットワークインタフェースの死活状態を確認して、当該死活状態を示す情報を前記死活情報記憶部に書き込み、
前記監視部は、前記死活情報記憶部に情報が記憶されていない場合には、前記パケット送信ドライバに異常が有ると判定し、前記死活情報記憶部に情報が記憶されている場合には、前記パケット送信ドライバについて正常であると判定し、前記ネットワークインタフェースについて当該情報が示す状態であると判定する、
ことを特徴とする監視装置。
【請求項３】
ネットワークインタフェースによるパケットの受信をループ処理によって待機し、受信されたパケットをパケット記憶部に記憶するパケット受信手順と、
前記ネットワークインタフェースの死活状態を示す情報を死活情報記憶部に記憶する記憶手順と、
前記死活情報記憶部に記憶された情報を参照すると共に参照した情報を削除して、前記ネットワークインタフェース及び前記パケット受信手順の死活状態を監視する監視手順とをコンピュータが実行し、
前記パケット受信手順は、前記ループ処理の合間において、前記ネットワークインタフェースの死活状態を確認して、当該死活状態を示す情報を前記死活情報記憶部に書き込み、
前記監視手順は、前記死活情報記憶部に情報が記憶されていない場合には、前記パケット受信手順に異常が有ると判定し、前記死活情報記憶部に情報が記憶されている場合には、前記パケット受信手順について正常であると判定し、前記ネットワークインタフェースについて当該情報が示す状態であると判定する、
ことを特徴とする監視方法。
【請求項４】
ネットワークインタフェースから送信するパケットの有無をループ処理によって待機し、送信するパケットが有る場合に、当該パケットを前記ネットワークインタフェースに送信するパケット送信手順と、
前記ネットワークインタフェースの死活状態を示す情報を死活情報記憶部に記憶する記憶手順と、
前記死活情報記憶部に記憶された情報を参照すると共に参照した情報を削除して、前記ネットワークインタフェース及び前記パケット送信手順の死活状態を監視する監視手順とをコンピュータが実行し、
前記パケット送信手順は、前記ループ処理の合間において、前記ネットワークインタフェースの死活状態を確認して、当該死活状態を示す情報を前記死活情報記憶部に書き込み、
前記監視手順は、前記死活情報記憶部に情報が記憶されていない場合には、前記パケット送信手順に異常が有ると判定し、前記死活情報記憶部に情報が記憶されている場合には、前記パケット送信手順について正常であると判定し、前記ネットワークインタフェースについて当該情報が示す状態であると判定する、
ことを特徴とする監視方法。
【請求項５】
請求項１又は２記載の各部としてコンピュータを機能させることを特徴とするプログラム。
【手続補正２】
【補正対象書類名】明細書
【補正対象項目名】００１４
【補正方法】変更
【補正の内容】
【００１４】
そこで上記課題を解決するため、監視装置は、ネットワークインタフェースによるパケットの受信をループ処理によって待機し、受信されたパケットをパケット記憶部に記憶するパケット受信ドライバと、前記ネットワークインタフェースの死活状態を示す情報を記憶する死活情報記憶部と、前記死活情報記憶部に記憶された情報を参照すると共に参照した情報を削除して、前記ネットワークインタフェース及び前記パケット受信ドライバの死活状態を監視する監視部とを有し、前記パケット受信ドライバは、前記ループ処理の合間において、前記ネットワークインタフェースの死活状態を確認して、当該死活状態を示す情報を前記死活情報記憶部に書き込み、前記監視部は、前記死活情報記憶部に情報が記憶されていない場合には、前記パケット受信ドライバに異常が有ると判定し、前記死活情報記憶部に情報が記憶されている場合には、前記パケット受信ドライバについて正常であると判定し、前記ネットワークインタフェースについて当該情報が示す状態であると判定する。