(57)【要約】【課題】パケットの送信効率を向上させることができる情報処理装置を提供する。【解決手段】登録指示に応じて所定の数のパケットをパケットプールに登録するパケット登録部と、パケットプールに登録されているパケットを試験対象機器へ送信するＮＩＣに送信する送信ＡＰＩと、ＮＩＣにおいて試験対象機器に送信していないパケットを試験対象機器に送信し終えるまでのＣＰＵ余剰時間を算出し、算出したＣＰＵ余剰時間がパケットプールの書き替え時間より長いと判定した場合、登録指示をパケット登録部に送信する送信タスク管理部とを有し、ＮＩＣが試験対象装置にパケットを送信し終えるまでの間に、パケットプールにおける所定の数のパケットを書き替えられるようにする。【選択図】図３
2019106578.tif 000002
【特許請求の範囲】
【請求項１】
パケットが登録される記憶部と、
登録指示に応じて所定の数のパケットを前記記憶部に登録する登録部と、
前記記憶部に登録されているパケットを、他の情報処理装置へ送信する通信処理部に送信する送信部と、
前記通信処理部において前記他の情報処理装置に送信していないパケットを前記他の情報処理装置に送信し終えるまでの第１の時間を算出し、算出した第１の時間が前記記憶部への前記所定の数のパケットの登録にかかる第２の時間より長いと判定した場合、前記登録指示を前記登録部に送信する管理部とを有することを特徴とする情報処理装置。
【請求項２】
前記管理部は、前記通信処理部において前記他の情報処理装置に送信していないパケットの数と、前記通信処理部が１つのパケットの送信にかかる時間とに基づいて、前記第１の時間を算出することを特徴とする請求項１記載の情報処理装置。
【請求項３】
前記登録部は、前記記憶部へのパケットの登録時に、前記記憶部に登録されている前記パケットのアドレス及びポート番号の少なくとも一方を書き替えることを特徴とする請求項１又は２記載の情報処理装置。
【請求項４】
前記登録部は、前記記憶部へのパケットの登録時に、書き替え後の前記パケットのアドレス及びポート番号に応じたチェックサム値を再計算して登録することを特徴とする請求項３記載の情報処理装置。
【請求項５】
前記登録部は、設定された送信パケット情報に基づいて、前記他の情報処理装置へ送信するパケットを前記記憶部に登録することを特徴とする請求項１〜４の何れか１項に記載の情報処理装置。
【請求項６】
前記登録部は、前記通信処理部が保持できるパケットの数と前記記憶部へのパケットの登録にかかる時間とに基づいて算出した数のパケットを、前記登録指示に応じて前記記憶部に登録することを特徴とする請求項１〜５の何れか１項に記載の情報処理装置。
【請求項７】
前記管理部は、前記登録部から前記通信処理部へのパケットの送信処理時間を測定し、測定した前記送信処理時間を用いて前記第１の時間を算出することを特徴とする請求項１〜６の何れか１項に記載の情報処理装置。
【請求項８】
第１の情報処理装置と第２の情報処理装置とで通信を行う情報処理システムにおいて、
前記第１の情報処理装置は、
前記第２の情報処理装置へパケットを送信する通信処理部と、
パケットが登録される記憶部と、
登録指示に応じて所定の数のパケットを前記記憶部に登録する登録部と、
前記記憶部に登録されているパケットを前記通信処理部に送信する送信部と、
前記通信処理部において前記第２の情報処理装置に送信していないパケットを前記第２の情報処理装置に送信し終えるまでの第１の時間を算出し、算出した第１の時間が前記記憶部への前記所定の数のパケットの登録にかかる第２の時間より長いと判定した場合、前記登録指示を前記登録部に送信する管理部とを有することを特徴とする情報処理システム。
【請求項９】
情報処理装置の登録部が、登録指示に応じて、パケットが登録される記憶部に所定の数のパケットを登録し、
前記情報処理装置の送信部が、前記記憶部に登録されているパケットを、他の情報処理装置へ送信する通信処理部に送信し、
前記情報処理装置の管理部が、前記通信処理部において前記他の情報処理装置に送信していないパケットを前記他の情報処理装置に送信し終えるまでの第１の時間を算出し、算出した第１の時間が前記記憶部への前記所定の数のパケットの登録にかかる第２の時間より長いと判定した場合、前記登録指示を前記登録部に送信することを特徴とする情報処理方法。
【請求項１０】
登録指示に応じて、パケットが登録される記憶部に所定の数のパケットを登録するステップと、
前記記憶部に登録されているパケットを、他の情報処理装置へ送信する通信処理部に送信するステップと、
前記通信処理部において前記他の情報処理装置に送信していないパケットを前記他の情報処理装置に送信し終えるまでの第１の時間を算出し、算出した第１の時間が前記記憶部への前記所定の数のパケットの登録にかかる第２の時間より長いと判定した場合、前記登録指示を前記登録部に送信するステップとをコンピュータに実行させるためのプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、情報処理装置、情報処理システム、情報処理方法、及びプログラムに関する。
【背景技術】
【０００２】
パケット負荷生成装置は、パケットを試験対象機器に送信することで試験対象機器に負荷をかけ、試験対象機器のネットワークに係る通信性能評価に利用されている。パケット負荷生成装置の動作を説明する。パケット負荷生成装置は、初めに、送信するパケットを記憶するパケット負荷生成装置内のパケットプールの容量に基づいて、登録できる限りの複数のパケットをパケットプールに登録する。次に、パケット負荷生成装置は、パケットプールに登録されている複数のパケットの内、所定の数のパケットをネットワークインターフェースカード（ＮＩＣ）内の送信バッファへ送信する。そして、ＮＩＣが、送信バッファに格納されているパケットを試験対象機器に送信する。
【０００３】
パケット負荷生成装置は、パケットをパケットプールからＮＩＣ内の送信バッファに送信する処理と、送信バッファに格納されているパケットを試験対象機器に送信する処理とを繰り返し行い、パケットプールに登録したパケットを試験対象機器に送信する。そして、パケット負荷生成装置は、複数のパケットの送信が完了すると、登録できる限りの複数のパケットをパケットプールに登録し直す。その後、パケット負荷生成装置は、パケットをパケットプールからＮＩＣ内の送信バッファに送信する処理と、送信バッファに格納されているパケットを試験対象機器に送信する処理とを繰り返すことで、試験対象機器にパケットを送信し、試験対象機器に負荷をかけている。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特表２００３−５２４３２４号公報
【特許文献２】特開２０１２−１５６８５３号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
前述したパケット負荷生成装置は、パケットプールに登録したパケットのすべてをＮＩＣ内の送信バッファに送信した後に、再度、パケットプールの容量に基づく複数のパケットをパケットプールに登録している。そのため、パケットプールへのパケットの再度の登録に時間を要し、登録を行っている間に、ＮＩＣから試験対象機器に送信するパケットがなくなってしまう状況が生じることがある。ＮＩＣから試験対象機器に送信するパケットがなくなってしまうと、試験対象機器にパケットが送信されない期間が生じ、パケットの送信効率が低下することになる。１つの側面では、本発明の目的は、パケットの送信効率を向上させることができる情報処理装置を提供することにある。
【課題を解決するための手段】
【０００６】
情報処理装置の一態様は、パケットが登録される記憶部と、登録指示に応じて所定の数のパケットを記憶部に登録する登録部と、記憶部に登録されているパケットを、他の情報処理装置へ送信する通信処理部に送信する送信部と、登録指示を登録部に送信する管理部とを有する。管理部は、通信処理部において他の情報処理装置に送信していないパケットを他の情報処理装置に送信し終えるまでの第１の時間を算出し、算出した第１の時間が記憶部への所定の数のパケットの登録にかかる第２の時間より長いと判定した場合、登録指示を送信する。
【発明の効果】
【０００７】
発明の一態様においては、情報処理装置からのパケットの送信効率を向上させることができる。
【図面の簡単な説明】
【０００８】
【図１】図１は、第１の実施形態における情報処理装置のハードウェア構成例を示す図である。
【図２】図２は、第１の実施形態における情報処理装置のソフトウェア構成例を示す図である。
【図３】図３は、第１の実施形態における情報処理装置の機能構成例を示す図である。
【図４】図４は、送信パケット情報の例を示す図である。
【図５】図５は、パケットプール書き替え情報の例を示す図である。
【図６】図６は、パケット送信ＡＰＩ実行時間情報の例を示す図である。
【図７】図７は、書き替え実行時間情報の例を示す図である。
【図８】図８は、第１の実施形態におけるパケット送信制御処理の例を示すフローチャートである。
【図９】図９（Ａ）及び図９（Ｂ）は、情報処理装置が送信するパケットを説明する図である。
【図１０】図１０は、書き替え後のパケットプール書き替え情報の例を示す図である。
【図１１】図１１（Ａ）及び図１１（Ｂ）は、パケットフォーマット及び書き替え対象フィールドを説明する図である。
【図１２】図１２は、第２の実施形態におけるパケット送信制御処理の例を示す図である。
【図１３】図１３は、第２の実施形態における書き替えパケット数算出処理の例を示すフローチャートである。
【図１４】図１４は、第３の実施形態における情報処理システムの構成例を示す図である。
【発明を実施するための形態】
【０００９】
以下、本発明の実施形態を図面に基づいて説明する。
【００１０】
（第１の実施形態）
本発明の第１の実施形態について説明する。
図１は、第１の実施形態における情報処理装置のハードウェア構成例を示す図である。図１に示す情報処理装置１１０は、ＣＰＵ（Central Processing Unit）１１１とメモリ１１２とハードディスクドライブ（ＨＤＤ）１１３とネットワークインターフェースカード（ＮＩＣ）１１４と入力部１１５と出力部１１６とがバス１１７で接続されている。本実施形態における情報処理装置は、図１に示す構成に限定されず、記録媒体用のドライブ装置等を有していてもよい。
【００１１】
オペレーティングシステム（ＯＳ）及び各種処理を実施するためのアプリケーションプログラムは、ＨＤＤ１１３に格納されており、ＣＰＵ１１１により実行される際にはＨＤＤ１１３からメモリ１１２に読み出される。ＣＰＵ１１１は、アプリケーションプログラムの処理内容に応じてＮＩＣ１１４、出力部１１６等を制御して、所定の動作を行わせる。また、処理途中のデータについては、主としてメモリ１１２に格納されるが、ＨＤＤ１１３に格納されるようにしてもよい。
【００１２】
ＮＩＣ１１４は、例えばネットワークの通信回線１３０を介して試験対象機器１２０と接続され、パケット負荷生成装置として動作する際に情報処理装置１１０から試験対象機器１２０に対するパケットを送信する。試験対象機器１２０は、他の情報処理装置の一例であり、例えばファイアウォール、ロードバランサ、侵入検知システム（ＩＤＳ：Intrusion Detection System）や侵入防御システム（ＩＰＳ：Intrusion Prevention System）などのネットワーク監視装置等である。また、試験対象機器１２０は、例えばスイッチ、ルータ、ＮＡＴ（Network Address Translation）等のネットワーク機器であってもよい。入力部１１５は、例えばユーザ操作に応じて入力される情報を受け付ける。また、出力部１１６は、情報処理装置１１０の外部に情報を出力する。
【００１３】
本例では、パケット負荷生成アプリケーションのプログラムは、例えばコンピュータ読み取り可能な可搬型の記録媒体から読み出されてＨＤＤ１１３にインストールされる。インターネットやイーサネット（登録商標）等のネットワーク及びＮＩＣ１１４を経由してＨＤＤ１１３にインストールされる場合もある。本実施形態における情報処理装置１１０は、ＣＰＵ１１１、メモリ１１２等のハードウェアとＯＳ及びアプリケーションプログラム等のソフトウェアとが有機的に協働することにより、パケット負荷生成装置としての機能を含む各種機能を実現する。
【００１４】
図２は、第１の実施形態における情報処理装置のソフトウェア構成例を示す図である。図２には、パケット負荷生成の処理に係る構成を示している。本実施形態における情報処理装置のＣＰＵ２１０において、システム全体を管理するＯＳ２１１、パケット負荷生成の処理を実施するパケット負荷生成アプリケーション２１２、及びＮＩＣを制御するためのＮＩＣドライバ２１５が動作する。
【００１５】
パケット負荷生成アプリケーション２１２は、ユーザ制御インターフェース２１３によりユーザからの各種設定や各種指示等を受け付け、それに応じた処理等を実行する。また、パケット負荷生成アプリケーション２１２は、パケット負荷生成の処理において、送信するパケットを記憶するパケットプールについての制御や管理を行ったり、ＮＩＣドライバ２１５に対する指示を行ったりする。
【００１６】
ＮＩＣドライバ２１５は、パケット負荷生成アプリケーション２１２からの指示に応じて、送信パケットの情報をＮＩＣ２２０の送信ディスクリプタ（キュー）２２１に格納し、パケットプール２１４からＮＩＣ２２０の送信バッファ２２２へのパケットの転送を要求する。また、ＮＩＣドライバ２１５は、パケット負荷生成アプリケーション２１２からの指示に応じて、送信ディスクリプタ（キュー）２２１から送信パケットの残留数（キュー残留数）を取得してパケット負荷生成アプリケーション２１２に提供する。
【００１７】
図３は、第１の実施形態における情報処理装置の機能構成例を示す図である。図３には、パケット負荷生成の処理に係る構成を示している。本実施形態における情報処理装置は、パケット負荷生成部３１０、ドライバ部３３０、及びＮＩＣ３５０を有する。
【００１８】
パケット負荷生成部３１０は、送信タスク管理部３１１、パケット登録部３１２、送信アプリケーションプログラミングインターフェース（ＡＰＩ）コール部３１３、パケットプール３１４、管理情報保持部３１５を有する。また、パケット負荷生成部３１０は、送信ディスクリプタ監視部３１６、送信パケット情報保持部３１７、パケットプール書き替え情報保持部３１８、書き替え実行時間保持部３１９、及び送信ＡＰＩ実行時間保持部３２０を有する。
【００１９】
ドライバ部３３０は、パケットの送信に係る送信ＡＰＩ３３１及びキュー残留数の取得に係る残留数取得ＡＰＩ３３２を有する。ＮＩＣ３５０は、通信処理部の一例であり、送信パケットの情報を格納する送信ディスクリプタ（キュー）３５１及び送信するパケットを格納する送信バッファ３５２を有する。
【００２０】
送信タスク管理部３１１は、パケット負荷生成の処理におけるパケットの送信に係る制御を行う。送信タスク管理部３１１は、管理部の一例である。送信タスク管理部３１１は、例えば、送信するパケットの登録（書き替え）をパケット登録部３１２に指示したり、パケットの送信実行を送信ＡＰＩコール部３１３に指示したりする。送信タスク管理部３１１は、送信ディスクリプタ監視部３１６及び送信ＡＰＩ実行時間保持部３２０から取得した情報に基づいて算出したＣＰＵ余剰時間が、書き替え実行時間保持部３１９から取得したパケットプールの書き替え時間より長いと判定した場合、送信するパケットの登録（書き替え）をパケット登録部３１２に指示する。ＣＰＵ余剰時間とは、ＮＩＣ３５０において、未送信のパケットを試験対象機器に送信し終えるまでの時間である。
【００２１】
パケット登録部３１２は、送信パケット情報保持部３１７が保持している送信パケット情報に基づいて、送信するパケットをパケットプール３１４に登録する。また、パケット登録部３１２は、パケットプール３１４へのパケットの登録（書き替え）に伴って、管理情報保持部３１５が保持するパケット管理情報、及び書き替え情報保持部３１８が保持するパケットプール書き替え情報を更新する。パケット登録部３１２は、登録部の一例である。パケット登録部３１２によるパケットプール３１４へのパケットの登録（書き替え）は、パケット負荷生成の処理の開始時（初期時）、及び送信タスク管理部３１１からの登録指示を受信した場合に実行される。なお、本例では、送信タスク管理部３１１からの登録指示に応じたパケットプール３１４の書き替えでは、一例として１回の登録指示に対して１０パケット分を書き替えるものとする。
【００２２】
送信ＡＰＩコール部３１３は、送信タスク管理部３１１からのパケットの送信実行指示を受けて、ドライバ部３３０の送信ＡＰＩ３３１をコールする（呼び出す）。パケットプール３１４は、記憶部の一例であり、送信するパケットを記憶する。パケットプール３１４が記憶できるパケットの数は任意であり、本例では一例として最大で１０００個のパケットを記憶できるものとする。管理情報保持部３１５は、パケットプールのリードインデックス等のパケット管理情報を保持する。送信ディスクリプタ監視部３１６は、ドライバ３３０の残留数取得ＡＰＩ３３２を介して、送信ディスクリプタ（キュー）３５１から送信パケットの残留数（キュー残留数）を取得する。
【００２３】
送信パケット情報保持部３１７は、ユーザが設定する送信パケット情報を保持する。送信パケット情報の一例を図４に示す。本例では、送信パケット情報として、送信パケットのパケット長、レイヤ４（Ｌ４）プロトコルの種別、送信元ＩＰ（Internet Protocol）アドレス、宛先ＩＰアドレス、送信元ポート番号、宛先ポート番号、及びそれらの巡回定義の情報を格納する。また、送信パケット情報として、情報処理装置からのパケットの送信レートの情報を格納する。この送信パケット情報に従って、パケットプール３１４へ送信パケットが格納される。
【００２４】
送信元ＩＰアドレス、宛先ＩＰアドレス、送信元ポート番号、及び宛先ポート番号は、それぞれ設定可能な値の最小値及び最大値を規定し、巡回定義に従って、送信パケットの送信元ＩＰアドレス、宛先ＩＰアドレス、送信元ポート番号、及び宛先ポート番号が変更される。例えば、図４に示すように、巡回定義がインクリメントである場合、送信パケットの送信元ＩＰアドレス、宛先ＩＰアドレス、送信元ポート番号、及び宛先ポート番号のすべてをパケット毎に１ずつ増加させる。なお、本例では、送信元ＩＰアドレス、宛先ＩＰアドレス、送信元ポート番号、及び宛先ポート番号のすべてをパケット毎に１ずつ増加させるようにするが、送信元ＩＰアドレス、宛先ＩＰアドレス、送信元ポート番号、及び宛先ポート番号の少なくとも１つの要素をパケット毎に１ずつ増加させるようにしてもよい。
【００２５】
パケットプール書き替え情報保持部３１８は、パケットプール書き替え情報を保持する。パケットプール書き替え情報は、パケットプール３１４におけるパケットの書き替えが、どこまで実行されたかを示すものである。パケットプール書き替え情報の一例を図５に示す。本例では、パケットプール書き替え情報として、パケットプール３１４に登録した送信パケットの送信元ＩＰアドレス、宛先ＩＰアドレス、送信元ポート番号、及び宛先ポート番号の最大値、１回の書き替えパケット数、及び次の書き替え先を示す書き替え先プール内インデックスを格納する。このパケットプール書き替え情報は、パケットプール３１４の書き替えに応じて、パケット登録部３１２により更新される。
【００２６】
書き替え実行時間保持部３１９は、パケットプールの書き替え実行時間情報を保持する。書き替え実行時間情報の一例を図７に示す。本例では、書き替え実行時間情報として、パケットプール３１４における１０個分の送信パケットの書き替え処理を実行するのに要した時間を、最近の１０件分記録する。ＣＰＵ余剰時間の算出時には、書き替え実行時間保持部３１９に記録した書き替え実行時間の最大値が使用される。
【００２７】
送信ＡＰＩ実行時間保持部３２０は、パケット送信ＡＰＩ実行時間情報を保持する。パケット送信ＡＰＩ実行時間情報の一例を図６に示す。本例では、パケット送信ＡＰＩ実行時間情報として、送信ＡＰＩ３３１による送信処理を実行するのに要した時間を、最近の１０件分記録する。ＣＰＵ余剰時間の算出時には、送信ＡＰＩ実行時間保持部３２０に記録した送信ＡＰＩ実行時間の最大値が使用される。
【００２８】
なお、ＣＰＵ余剰時間の算出時に、書き替え実行時間の最大値や送信ＡＰＩ実行時間の最大値を使用するものとしているが、これに限定されるものではない。書き替え実行時間保持部３１９に記録した書き替え実行時間や送信ＡＰＩ実行時間保持部３２０に記録した送信ＡＰＩ実行時間を参照して得られる任意の値も適用でき、例えば書き替え実行時間や送信ＡＰＩ実行時間における平均値や中間値を使用するようにしてもよい。また、書き替え実行時間及び送信ＡＰＩ実行時間で使用する値は同じ種類のものでなくともよく、例えば一方が最大値でもう一方が平均値であるような例も可能である。
【００２９】
図３に戻り、送信ＡＰＩ３３１は、送信パケットの情報をＮＩＣ３５０の送信ディスクリプタ（キュー）３５１に格納するとともに、送信するパケットをパケットプール３１４からＮＩＣ３５０の送信バッファ３５２に転送する。送信ＡＰＩ３３１は、送信部の一例である。送信ＡＰＩ３３１が１回のコール（呼び出し）によってＮＩＣ３５０に転送する送信パケット数は任意であり、本例では一例として送信ＡＰＩ３３１がコール（呼び出し）されると３２個分の送信パケットがＮＩＣ３５０に転送されるものとする。なお、パケットプール３１４からＮＩＣ３５０の送信バッファ３５２へのパケットの転送は、例えばＮＩＣ３５０によるＤＭＡ（Direct Memory Access）転送で行われる。
【００３０】
残留数取得ＡＰＩ３３２は、ＮＩＣ３５０の送信ディスクリプタ（キュー）３５１から送信パケットの残留数（キュー残留数）を取得して、送信ディスクリプタ監視部３１６に通知する。
【００３１】
次に、第１の実施形態におけるパケット負荷生成に係るパケット送信制御について説明する。図８は、第１の実施形態における情報処理装置が実行するパケット送信制御処理の例を示すフローチャートである。なお、以下の説明では、一例としてパケットプール３１４は１０００個分のパケットを格納可能であり、パケットプール３１４の書き替え処理では１回で１０パケット分を書き替えるものとする。また、送信ＡＰＩ３３１に対する１回のコール（呼び出し）で、３２個分のパケットがＮＩＣ３５０に転送されるものとする。
【００３２】
試験対象機器に対して、どのようなパケット負荷をかけるかを送信パケット情報としてユーザが設定し、設定された送信パケット情報が送信パケット情報保持部３１７に格納される。そして、ユーザ操作によりパケット負荷生成に係るパケット送信制御処理が開始される。
【００３３】
パケット送信制御処理を開始すると、ステップＳ８０１にて、パケット登録部３１２は、送信パケット情報保持部３１７が保持している送信パケット情報に基づいて、試験対象機器に送信するパケットをパケットプール３１４に格納する。また、パケット登録部３１２は、書き替え情報保持部３１８が保持しているパケットプール書き替え情報を更新する。このステップＳ８０１では、初期時でありパケットプール３１４は空であるので、パケット登録部３１２は、パケットプール３１４に１０００パケットを格納する。
【００３４】
例えば、図４に示した送信パケット情報が送信パケット情報保持部３１７に保持されている場合、パケットプール３１４には、図９（Ａ）に示すような１０００個のパケットが格納される。すなわち、送信パケットのパケット長が６４バイト、レイヤ４（Ｌ４）プロトコルがＴＣＰで、送信元ＩＰアドレスが１９２．１６８．０．１〜１９２．１６８．３．２３２、宛先ＩＰアドレスが１９２．１７０．１．１〜１９２．１７０．４．２３２、送信元ポート番号が４０００１〜４１０００、宛先ポート番号が５０００１〜５１０００に設定されたパケットが格納される。また、書き替え情報保持部３１８が保持しているパケットプール書き替え情報は、図５に示したように更新される。
【００３５】
続いて、ステップＳ８０２にて、パケット登録部３１２は、送信タスク管理部３１１からの登録指示に従って、パケットプール３１４における１０パケットをダミーで書き替える処理を行い、パケットプールの書き替え時間を測定する。そして、測定結果として得られたパケットプールの書き替え時間を書き替え実行時間情報として書き替え実行時間保持部３１９に記録する。
【００３６】
次に、ステップＳ８０３にて、送信タスク管理部３１１が送信ＡＰＩコール部３１３にパケットの送信実行を指示し、それを受けた送信ＡＰＩコール部３１３が送信ＡＰＩ３３１をコールする（呼び出す）。これにより、送信ＡＰＩ３３１が、３２パケット分の送信パケットの情報をＮＩＣ３５０の送信ディスクリプタ（キュー）３５１に格納（エンキュー）し、対応する３２パケットがパケットプール３１４からＮＩＣ３５０の送信バッファ３５２に転送される。また、送信ＡＰＩ３３１の処理実行時間が測定され、測定結果として得られた送信ＡＰＩ実行時間をパケット送信ＡＰＩ実行時間情報として送信ＡＰＩ実行時間保持部３２０に記録する。送信ＡＰＩ３３１によりパケットが転送されたＮＩＣ３５０は、その後、送信ディスクリプタ３５１からデキューし、送信バッファ３５２上のパケットを試験対象機器１２０が接続される通信回線１３０上に順次送信する。
【００３７】
次に、ステップＳ８０４にて、送信タスク管理部３１１は、送信ディスクリプタ監視部３１６及び残留数取得ＡＰＩ３３２を介して、送信ディスクリプタ（キュー）３５１からＮＩＣ３５０における送信パケットの残留数（キュー残留数）を取得する。
【００３８】
続いて、ステップＳ８０５にて、送信タスク管理部３１１は、ＮＩＣ３５０において残留している未送信のパケットを試験対象機器に送信し終えるまでの時間であるＣＰＵ余剰時間を算出する。送信タスク管理部３１１は、ステップＳ８０５において取得したキュー残留数と、送信ＡＰＩ実行時間保持部３２０から取得する送信ＡＰＩ実行時間に基づいて、下記の式を用いてＣＰＵ余剰時間を算出する。なお、ここでは送信ＡＰＩ実行時間は、送信ＡＰＩ実行時間保持部３２０に記録されている送信ＡＰＩ実行時間の内の最大値を用いるものとする。
（ＣＰＵ余剰時間）＝
（キュー残留数）×（１パケットのデキュー時間）−（送信ＡＰＩ実行時間）
【００３９】
ここで、１パケットのデキュー時間は、ＮＩＣ３５０において１パケットを送信する時間であり、下記の式に基づいて算出される各規格に準拠した最小値を用いる。
（１パケットのデキュー時間）＝
｛（送信パケット長）＋（プリアンブル）＋（パケット間隔）｝／（回線速度）
例えば、１０Ｇビットイーサネットにおいて送信パケット長が６４バイトである場合、プリアンブルが８バイト、パケット間隔（ＩＰＧ）が９６ビットであるので、１パケットのデキュー時間は｛（６４＋８）×８＋９６｝／（１０×１０9）で求められ、約６７ｎｓとなる。また、例えば、１０Ｇビットイーサネットにおいて送信パケット長が１５１８バイトである場合、同様にして、１パケットのデキュー時間は｛（１５１８＋８）×８＋９６｝／（１０×１０9）で求められ、約１２３０ｎｓとなる。
【００４０】
次に、ステップＳ８０６にて、送信タスク管理部３１１は、ステップＳ８０５において算出したＣＰＵ余剰時間と、書き替え実行時間保持部３１９から取得したパケットプールの書き替え時間とを比較して、ＣＰＵ余剰時間がパケットプールの書き替え時間よりも長いか否かを判定する。なお、ここではパケットプールの書き替え時間は、書き替え実行時間保持部３１９に記録されている書き替え実行時間の内の最大値を用いるものとする。
【００４１】
ステップＳ８０６において、ＣＰＵ余剰時間がパケットプールの書き替え時間よりも長いと判定した場合（ＹＥＳ）、ステップＳ８０７にて、送信タスク管理部３１１がパケット登録部３１２にパケットの登録（書き替え）を指示し、それを受けたパケット登録部３１２がパケットプール３１４の書き替えを実行する。また、パケットプールの書き替え時間を測定し、測定結果として得られたパケットプールの書き替え時間を書き替え実行時間情報として書き替え実行時間保持部３１９に記録する。
【００４２】
例えば、ステップＳ８０５において取得したキュー残留数が２００パケットであり、１パケットのデキュー時間が６７ｎｓであり、送信ＡＰＩ実行時間が図６に示した例のように２２１１ｎｓである場合、ＣＰＵ余剰時間は、（２００×６７）−２２１１＝１１１８９ｎｓとなる。また、パケットプールの書き替え時間が図７に示した例のように１０１００ｎｓであったとする。この場合、送信タスク管理部３１１は、ＣＰＵ余剰時間（１１１８９ｎｓ）＞パケットプールの書き替え時間（１０１００ｎｓ）であるので、パケット登録部３１２にパケットの登録（書き替え）を指示し、パケットプールの書き替えが実行される。
【００４３】
ステップＳ８０７の処理では、パケット登録部３１２は、送信パケット情報保持部３１７が保持している送信パケット情報及び書き替え情報保持部３１８が保持しているパケットプール書き替え情報に基づいて、パケットプール３１４における１０パケットを書き替え、書き替え情報保持部３１８が保持しているパケットプール書き替え情報を更新する。パケットプール３１４の書き替えは、パケットプール書き替え情報として保持されている書き替え先プール内インデックスに従って行い、書き替え後に書き替え先プール内インデックスを更新する。
【００４４】
例えば、パケット送信制御処理を開始してから１回目のパケットプールの書き替えでは、パケットプール３１４には、図９（Ｂ）に示すような１０００個のパケットに対応する情報が格納されることになる。すなわち、送信パケットのパケット長が６４バイト、レイヤ４（Ｌ４）プロトコルがＴＣＰで、送信元ＩＰアドレスが１９２．１６８．０．１１〜１９２．１６８．３．２４２、宛先ＩＰアドレスが１９２．１７０．１．１１〜１９２．１７０．４．２４２、送信元ポート番号が４００１１〜４１０１０、宛先ポート番号が５００１１〜５１０１０に設定される。また、パケットプール書き替え情報は、図１０に示すように更新される。
【００４５】
ステップＳ８０７の処理が終了する、又はステップＳ８０６においてＣＰＵ余剰時間がパケットプールの書き替え時間よりも長くないと判定した場合（ＮＯ）、ステップＳ８０３に戻る。そして、ステップＳ８０３以降の処理を再び実行する。
【００４６】
このようにＮＩＣ３５０におけるキュー残留数に応じたＣＰＵ余剰時間が、パケットプール３１４における所定数のパケットの書き替え時間よりも長いと判定した場合、パケットプール３１４の書き替えを実行することで、ＮＩＣ３５０が試験対象装置１２０にパケットを送信し終えるまでの間に、パケットプール３１４における所定数のパケットを書き替えることができる。したがって、ＮＩＣ３５０から試験対象機器１２０に送信するパケットがなくなって情報処理装置から試験対象機器にパケットが送信しない期間が生じることを防ぐことができ、パケットの送信効率を向上させることができる。また、ＣＰＵ余剰時間を算出する際、１回分の送信ＡＰＩ実行時間を減じることで、次のパケットがエンキューするまでの時間に瞬間的にパケットが枯渇してパケットが送信されない状態が発生することを防止することができる。
【００４７】
なお、ＴＣＰ／ＩＰプロトコル上、コネクションの一意性は、プロトコル番号、送信元ＩＰアドレス、宛先ＩＰアドレス、送信元ポート番号、及び宛先ポート番号によって決まり、これらのパラメータの値がすべて同じ値である場合、同一のコネクションとなる。つまり、これらのパラメータの内の少なくとも１つのパラメータの値が異なれば、別コネクションの通信となるため、多コネクションのパケットを発生させるには、パケット全体を書き替えなくとも、前述したパラメータの内の少なくとも１つのパラメータの値を書き替えるだけでよい。ただし、パケットの正常性確認用であるチェックサムについても書き替える必要があるため、パケットの書き替えでは、チェックサムを再計算したうえで、チェックサムフィールドの書き替えも行う必要がある。
【００４８】
例えば、本実施形態では、パケットプール３１４の書き替えを行う際、パケット全体でなく、多コネクションのパケットを生成する際に必要なＩＰアドレスやポート番号だけを書き替えることで、パケットプール３１４の書き替え時間を短縮することが可能である。本実施形態では、ＩＰアドレスやポート番号を変更するため、チェックサムを再計算し更新することでパケット自体の正常性も保っている。
【００４９】
例えば、図１１（Ａ）に示すようにＩＰｖ４のパケットは、レイヤ２（Ｌ２）ヘッダ（Ｅｔｈｅｒヘッダ）１１０１、レイヤ３（Ｌ３）ヘッダ（ＩＰｖ４ヘッダ）１１０２、レイヤ４（Ｌ４）ヘッダ（ＴＣＰ又はＵＤＰヘッダ）１１０３、ペイロードデータ１１０４、及びフレームチェックシーケンス（ＦＣＳ：Frame Check Sequence）１１０５を有する。レイヤ３（Ｌ３）ヘッダ１１０２の送信元ＩＰアドレス（ＩＰＳＡ）１１１１及び宛先ＩＰアドレス（ＩＰＤＡ）１１１２、レイヤ４（Ｌ４）ヘッダ１１０３の送信元ポート番号（ＳｒｃＰｏｒｔ）１１２１及び宛先ポート番号（ＤｓｔＰｏｒｔ）１１２２の何れかのフィールドの値を書き替えることで別コネクションのパケットとなる。本実施形態では、これらの値を書き替えるのにともなって、レイヤ３（Ｌ３）ヘッダ１１０２のチェックサム（Ｃｈｋｓｕｍ）１１１３及びレイヤ４（Ｌ４）ヘッダ１１０３のチェックサム（Ｃｈｋｓｕｍ）１１２３のフィールドに格納する値を再計算してパケット自体の正常性を保つ。
【００５０】
また、例えば、図１１（Ｂ）に示すようにＩＰｖ６のパケットは、レイヤ２（Ｌ２）ヘッダ（Ｅｔｈｅｒヘッダ）１１５１、レイヤ３（Ｌ３）ヘッダ（ＩＰｖ６ヘッダ）１１５２、レイヤ４（Ｌ４）ヘッダ（ＴＣＰ又はＵＤＰヘッダ）１１５３、ペイロードデータ１１５４、及びフレームチェックシーケンス（ＦＣＳ：Frame Check Sequence）１１５５を有する。レイヤ３（Ｌ３）ヘッダ１１５２の送信元ＩＰアドレス（ＩＰＳＡ）１１６１及び宛先ＩＰアドレス（ＩＰＤＡ）１１６２、レイヤ４（Ｌ４）ヘッダ１１５３の送信元ポート番号（ＳｒｃＰｏｒｔ）１１７１及び宛先ポート番号（ＤｓｔＰｏｒｔ）１１７２の何れかのフィールドの値を書き替えることで別コネクションのパケットとなる。本実施形態では、これらの値を書き替えるのにともなって、レイヤ４（Ｌ４）ヘッダ１１５３のチェックサム（Ｃｈｋｓｕｍ）１１７３のフィールドに格納する値を再計算してパケット自体の正常性を保つ。
【００５１】
（第２の実施形態）
次に、本発明の第２の実施形態について説明する。
前述した第１の実施形態における情報処理装置は、パケットプールを書き替える際、１回の書き替え数を予め決めた固定数（前述した例では１０個）としている。しかし、パケットプールの書き替えは、多くの数のパケットをまとめて書き替えた方が効率がよい。例えば、パケットプールにおける書き替えパケット数が１である場合、書き替え先プール内インデックスの値を１ずつ更新することになるが、書き替えパケット数がＮである場合、書き替え先プール内インデックスの値を１回でＮ増加させるよう更新すればよいため、パケットプール書き替え情報の更新処理の頻度が下がり、処理効率を向上できる。
【００５２】
そこで、以下に説明する第２の実施形態における情報処理装置は、パケットプールにおける１回の書き替えパケット数を固定せずに、パケットプールの書き替え時間や送信ディスクリプタ（キュー）のサイズ等に応じた適切な書き替えパケット数を算出する。そして、パケットプールにおける１回の書き替えでは、算出した書き替えパケット数のパケットを書き替える。
【００５３】
第２の実施形態における情報処理装置のハードウェア構成、ソフトウェア構成及び機能構成は、第１の実施形態における情報処理装置とは、パケットプールにおける１回の書き替えパケット数を変更可能にする点が異なる。例えば、パケットプール書き替え情報における書き替えパケット数は、算出した書き替えパケット数が設定される。また、パケット登録部３１２は、送信タスク管理部３１１からの登録指示に応じて、書き替えパケット数として設定された数のパケットを書き替える。また、書き替え実行時間保持部３１９には、書き替えたパケット数と対応付けて記録するなどして、１パケット当たりの書き替え実行時間が算出可能なように書き替え実行時間情報を保持する。その他は、第１の実施形態における情報処理装置の構成と同様であるので、説明は省略する。
【００５４】
以下、第２の実施形態におけるパケット負荷生成に係るパケット送信制御について説明する。図１２は、第２の実施形態における情報処理装置が実行するパケット送信制御処理の例を示すフローチャートである。なお、以下の説明では、一例としてパケットプール３１４は１０００個分のパケットを格納可能であり、また、送信ＡＰＩ３３１に対する１回のコール（呼び出し）で、３２個分のパケットがＮＩＣ３５０に転送されるものとする。
【００５５】
試験対象機器に対して、どのようなパケット負荷をかけるかを送信パケット情報としてユーザが設定し、設定された送信パケット情報が送信パケット情報保持部３１７に格納される。そして、ユーザ操作によりパケット負荷生成に係るパケット送信制御処理が開始される。パケット送信制御処理を開始すると、ステップＳ１２０１にて、パケット登録部３１２は、第１の実施形態と同様に、送信パケット情報保持部３１７が保持している送信パケット情報に基づいて、試験対象機器に送信するパケットをパケットプール３１４に格納し、書き替え情報保持部３１８が保持しているパケットプール書き替え情報を更新する。
【００５６】
続いて、ステップＳ１２０２にて、パケット登録部３１２は、送信タスク管理部３１１からの登録指示に従って、パケットプール３１４におけるパケットをダミーで書き替える処理を行う。このステップＳ１２０２では、パケット登録部３１２は、書き替えパケット数Ｎの初期値（例えばＮ＝１０）に応じた数のパケットをダミーで書き替える。また、パケットプールの書き替え時間を測定し、測定結果として得られたパケットプールの書き替え時間を書き替え実行時間情報として書き替え実行時間保持部３１９に記録する。
【００５７】
次に、ステップＳ１２０３にて、送信タスク管理部３１１が送信ＡＰＩコール部３１３にパケットの送信実行を指示し、それを受けた送信ＡＰＩコール部３１３が送信ＡＰＩ３３１をコールする（呼び出す）。これにより、送信ＡＰＩ３３１が、３２パケット分の送信パケットの情報をＮＩＣ３５０の送信ディスクリプタ（キュー）３５１に格納（エンキュー）し、対応する３２パケットがパケットプール３１４からＮＩＣ３５０の送信バッファ３５２に転送される。また、送信ＡＰＩ３３１の処理実行時間が測定され、測定結果として得られた送信ＡＰＩ実行時間をパケット送信ＡＰＩ実行時間情報として送信ＡＰＩ実行時間保持部３２０に記録する。
【００５８】
次に、ステップＳ１２０４にて、送信タスク管理部３１１は、最後（直近）の書き替えパケット数算出処理の実行から所定時間（例えば１秒）が経過しているか否かを判定する。最後の書き替えパケット数算出処理の実行から所定時間が経過していると判定した場合（ＹＥＳ）、ステップＳ１２０５にて、送信タスク管理部３１１は、適切な書き替えパケット数を算出するための書き替えパケット数算出処理を実行し、そうでない場合（ＮＯ）、ステップＳ１２０５をスキップする。
【００５９】
図１３は、ステップＳ１２０５の書き替えパケット数算出処理の例を示すフローチャートである。書き替えパケット数算出処理を開始すると、ステップＳ１３０１にて、送信タスク管理部３１１は、送信ディスクリプタ（キュー）が持つ最大長（キューのサイズ）を取得する。例えば、キューが持つ最大長の情報はシステム設定等から取得すればよい。
【００６０】
次に、ステップＳ１３０２にて、送信タスク管理部３１１は、発生し得る最大のＣＰＵ余剰時間を算出する。送信タスク管理部３１１は、ステップＳ１３０１において取得したキューが持つ最大長の情報と、送信ＡＰＩ実行時間保持部３２０から取得する送信ＡＰＩ実行時間に基づいて、下記の式に基づいて最大ＣＰＵ余剰時間を算出する。
（最大ＣＰＵ余剰時間）＝（キューが持つ最大長）×Ｍ×（１パケットのデキュー時間）−（送信ＡＰＩ実行時間）
ここで、Ｍはキューが持つ最大長に対して考慮するマージンを設けるための乗数であり、例えば１０％のマージンを設ける場合、Ｍ＝０．９０である。
【００６１】
次に、ステップＳ１３０３にて、送信タスク管理部３１１は、書き替え実行時間保持部３１９から取得したパケットプールの書き替え時間から、パケットプール３１４における１パケットの書き替え時間を算出する。なお、ここでは書き替え実行時間保持部３１９に記録されている書き替え実行時間の内の最大値を用いて１パケットの書き替え時間を算出するものとする。
【００６２】
続いて、ステップＳ１３０４にて、送信タスク管理部３１１は、ステップＳ１３０２において算出した最大ＣＰＵ余剰時間と、ステップＳ１３０３において算出した１パケットの書き替え時間に基づいて、下記の式に基づいて書き替えパケット数Ｎを算出する。
（書き替えパケット数）＝（最大ＣＰＵ余剰時間）／（１パケットの書き替え時間）
このようにして適切な書き替えパケット数Ｎを算出すると、処理は図１２に戻る（図１２のステップＳ１２０６へ進む）。
【００６３】
例えば、ステップＳ１３０１において取得したキューが持つ最大長が５００パケットであり、１パケットのデキュー時間が６７ｎｓであり、送信ＡＰＩ実行時間が図６に示した例のように２２１１ｎｓである場合、マージンを１０％とすると、最大ＣＰＵ余剰時間は、（４５０×０．９０×６７）−２２１１＝２７９３９ｎｓとなる。また、パケットプールの書き替え時間が図７に示した例のように１０パケットの書き替えで１０１００ｎｓである場合、１パケットの書き替え時間は、（１０１００／１０）＝１０１０ｎｓとなる。この例の場合、算出される書き替えパケット数Ｎは、（２７９３９／１０１０）＝２７パケットとなる。
【００６４】
図１２に戻り、ステップＳ１２０６にて、送信タスク管理部３１１は、送信ディスクリプタ監視部３１６及び残留数取得ＡＰＩ３３２を介して、送信ディスクリプタ（キュー）３５１からＮＩＣ３５０における送信パケットの残留数（キュー残留数）を取得する。次に、ステップＳ１２０７にて、送信タスク管理部３１１は、第１の実施形態と同様にして、ＣＰＵ余剰時間を算出する。
【００６５】
次に、ステップＳ１２０８にて、送信タスク管理部３１１は、ステップＳ１２０７において算出したＣＰＵ余剰時間が、パケットプールにおいて書き替えパケット数Ｎ個分のパケットを書き替える場合の書き替え時間よりも長いか否かを判定する。ＣＰＵ余剰時間がパケットプールの書き替え時間よりも長いと判定した場合（ＹＥＳ）、ステップＳ１２０９にて、送信タスク管理部３１１がパケット登録部３１２にパケットの登録（書き替え）を指示し、それを受けたパケット登録部３１２がパケットプール３１４の書き替えを実行する。また、パケットプールの書き替え時間を測定し、測定結果として得られたパケットプールの書き替え時間を書き替え実行時間情報として書き替え実行時間保持部３１９に記録する。
【００６６】
例えば、前述した例のように、算出された書き替えパケット数Ｎが２７パケットである場合、２７パケット分の書き替え時間（２７２７０ｎｓ）を超えるＣＰＵ余剰時間が発生した場合、送信タスク管理部３１１は、パケット登録部３１２にパケットの登録（書き替え）を指示し、パケットプール３１４において２７パケット分の書き替えが実行される。
【００６７】
ステップＳ１２０９の処理では、パケット登録部３１２は、送信パケット情報保持部３１７が保持している送信パケット情報及び書き替え情報保持部３１８が保持しているパケットプール書き替え情報に基づいて、パケットプール３１４における書き替えパケット数Ｎ個のパケットを書き替え、書き替え情報保持部３１８が保持しているパケットプール書き替え情報を更新する。パケットプール３１４の書き替えは、パケットプール書き替え情報として保持されている書き替え先プール内インデックスに従って行い、書き替え後に書き替え先プール内インデックスをＮ増加させるように更新する。
【００６８】
ステップＳ１２０７の処理が終了する、又はステップＳ１２０６においてＣＰＵ余剰時間がパケットプールの書き替え時間よりも長くないと判定した場合（ＮＯ）、ステップＳ１２０３に戻る。そして、ステップＳ１２０３以降の処理を再び実行する。
【００６９】
第２の実施形態によれば、第１の実施形態と同様に、ＮＩＣ３５０が試験対象装置１２０にパケットを送信し終えるまでの間に、パケットプール３１４におけるパケットを書き替えることができ、ＮＩＣ３５０から試験対象機器１２０に送信するパケットがなくなって情報処理装置から試験対象機器にパケットが送信しない期間が生じることを防ぎ、パケットの送信効率を向上させることができる。また、パケットプールの書き替え時間や送信ディスクリプタ（キュー）のサイズ等に基づいて、適切な書き替えパケット数を算出してパケットプール３１４の書き替えを行うことで、効率よく処理を行うことができる。また、適切な書き替えパケット数の算出を定期的に行うことで、より効率的にパケットプール３１４の書き替えを行うことが可能となる。
【００７０】
（第３の実施形態）
次に、本発明の第３の実施形態について説明する。
図１４は、第３の実施形態における情報処理システムの構成例を示す図である。第３の実施形態における情報処理システムは、パケットの書き替え技術をロードバランサのパケット転送制御に適用し、システムにおける負荷分散を図るものである。
【００７１】
図１４に示すように、本実施形態における情報処理システムは、負荷分散に係る制御を行うロードバランサ１４０１を有し、ロードバランサ１４０１がパケットの書き替えを実行可能な情報処理装置１４０２を有している。情報処理装置１４０２は、図３に示した第１の実施形態における情報処理装置と同様に構成される。ロードバランサ１４０１には、ユーザ端末１４０３から設定情報が入力される。ロードバランサ１４０１は、クライアント端末１４０４とネットワーク１４０５を介して接続される。また、ロードバランサ１４０１は、ウェブサーバＡ１４０６及びウェブサーバＢ１４０７とスイッチ１４０８を介して接続される。
【００７２】
まず、ロードバランサ１４０１に対して、ユーザ端末１４０３からＩＰアドレス書き替えに係る設定情報（ルール）が設定される。この設定情報は、情報処理装置１４０２の送信パケット情報保持部３１７に保持される。情報処理システムにおいて通信が発生した場合、ロードバランサ１４０１は、コネクション単位でパケットの書き替えを行うか否かを判断する。例えば、２つのコネクションを検出した場合、その内の１つのコネクションに対して書き替えを実行する。
【００７３】
例えば、クライアント端末１４０４からウェブサーバＢ宛のパケット１４１０が送信されると、それを受信したロードバランサ１４０１は、受信したパケットを情報処理装置１４０２のパケットプール３１４に格納する。そして、情報処理装置１４０２の送信タスク管理部３１１は、ＣＰＵ余剰時間を算出してパケットプールの書き替え時間と比較し、ＣＰＵ余剰時間がパケットプールの書き替え時間より長いと判定すると、書き替え対象のコネクションのパケットについて宛先ＩＰアドレスの書き替えを行い、宛先ＩＰアドレスをウェブサーバＢからウェブサーバＡに書き替える。
【００７４】
これにより、クライアント端末１４０４から送信されたウェブサーバＢ宛のパケット１４１０は、書き替え対象のコネクションのパケットの宛先が書き替えられて、そのまま送信されるウェブサーバＢ宛のパケット１４１１と、宛先が書き替えられたウェブサーバＡ宛のパケット１４１２とに分散される。このようにして、ロードバランサ１４０１が有する情報処理装置１４０２が、クライアント端末１４０４から送信されたウェブサーバＢ宛のパケット１４１０に対し、ユーザが指定した通信の宛先ＩＰアドレスの書き替えを行うことで、ウェブサーバＡ１４０６及びウェブサーバＢ１４０７に負荷分散させることが可能となる。
【００７５】
前述した各実施形態における情報処理装置での処理は、例えばコンピュータ（サーバ装置等を含む）がプログラムを実行することによって実現することができる。また、かかるプログラムを記録したコンピュータ読み取り可能な記録媒体も本発明の実施形態として適用することができる。記録媒体としては、例えばフレキシブルディスク、ハードディスク、光ディスク、光磁気ディスク、ＣＤ−ＲＯＭ、磁気テープ、不揮発性のメモリカード、ＲＯＭ等を用いることができる。
【００７６】
また、コンピュータがプログラムを実行し処理を行うことにより、前述の実施形態の機能が実現されるプログラムプロダクトは、本発明の実施形態として適用することができる。プログラムプロダクトとしては、例えば前述の実施形態の機能を実現するプログラム自体、プログラムが読み込まれたコンピュータがある。また、プログラムプロダクトとして、ネットワークを介して通信可能に接続されたコンピュータにプログラムを提供可能な送信装置、前記送信装置を備えるネットワークシステム等がある。
【００７７】
また、供給されたプログラムとコンピュータにおいて稼動しているオペレーティングシステム（ＯＳ）又は他のアプリケーション等とにより前述の実施形態の機能が実現される場合も、かかるプログラムは本発明の実施形態として適用することができる。また、供給されたプログラムの処理のすべて又は一部がコンピュータの機能拡張ユニットにより行われて前述の実施形態の機能が実現される場合も、かかるプログラムは本発明の実施形態として適用することができる。また、本実施形態をネットワーク環境で利用するべく、全部又は一部のプログラムが他のコンピュータで実行されるようになっていてもよい。
【００７８】
なお、前記実施形態は、何れも本発明を実施するにあたっての具体化のほんの一例を示したものに過ぎず、これらによって本発明の技術的範囲が限定的に解釈されてはならないものである。すなわち、本発明はその技術思想、またはその主要な特徴から逸脱することなく、様々な形で実施することができる。
以上の第１〜第３の実施形態を含む実施形態に関し、さらに以下の付記を開示する。
【００７９】
（付記１）
パケットが登録される記憶部と、
登録指示に応じて所定の数のパケットを前記記憶部に登録する登録部と、
前記記憶部に登録されているパケットを、他の情報処理装置へ送信する通信処理部に送信する送信部と、
前記通信処理部において前記他の情報処理装置に送信していないパケットを前記他の情報処理装置に送信し終えるまでの第１の時間を算出し、算出した第１の時間が前記記憶部への前記所定の数のパケットの登録にかかる第２の時間より長いと判定した場合、前記登録指示を前記登録部に送信する管理部とを有することを特徴とする情報処理装置。
（付記２）
前記管理部は、前記通信処理部において前記他の情報処理装置に送信していないパケットの数と、前記通信処理部が１つのパケットの送信にかかる時間とに基づいて、前記第１の時間を算出することを特徴とする付記１記載の情報処理装置。
（付記３）
前記登録部は、前記記憶部へのパケットの登録時に、前記記憶部に登録されている前記パケットのアドレス及びポート番号の少なくとも一方を書き替えることを特徴とする付記１又は２記載の情報処理装置。
（付記４）
前記登録部は、前記記憶部へのパケットの登録時に、書き替え後の前記パケットのアドレス及びポート番号に応じたチェックサム値を再計算して登録することを特徴とする付記３記載の情報処理装置。
（付記５）
前記登録部は、設定された送信パケット情報に基づいて、前記他の情報処理装置へ送信するパケットを前記記憶部に登録することを特徴とする付記１〜４の何れか１項に記載の情報処理装置。
（付記６）
前記登録部は、初期時に前記記憶部の容量に基づいて、複数のパケットを前記記憶部に登録することを特徴とする付記１〜５の何れか１項に記載の情報処理装置。
（付記７）
前記登録部は、前記通信処理部が保持できるパケットの数と前記記憶部へのパケットの登録にかかる時間とに基づいて算出した数のパケットを、前記登録指示に応じて前記記憶部に登録することを特徴とする付記１〜６の何れか１項に記載の情報処理装置。
（付記８）
前記管理部は、前記登録部から前記通信処理部へのパケットの送信処理時間を測定し、測定した前記送信処理時間を用いて前記第１の時間を算出することを特徴とする付記１〜７の何れか１項に記載の情報処理装置。
（付記９）
第１の情報処理装置と第２の情報処理装置とで通信を行う情報処理システムにおいて、
前記第１の情報処理装置は、
前記第２の情報処理装置へパケットを送信する通信処理部と、
パケットが登録される記憶部と、
登録指示に応じて所定の数のパケットを前記記憶部に登録する登録部と、
前記記憶部に登録されているパケットを前記通信処理部に送信する送信部と、
前記通信処理部において前記第２の情報処理装置に送信していないパケットを前記第２の情報処理装置に送信し終えるまでの第１の時間を算出し、算出した第１の時間が前記記憶部への前記所定の数のパケットの登録にかかる第２の時間より長いと判定した場合、前記登録指示を前記登録部に送信する管理部とを有することを特徴とする情報処理システム。
（付記１０）
情報処理装置の登録部が、登録指示に応じて、パケットが登録される記憶部に所定の数のパケットを登録し、
前記情報処理装置の送信部が、前記記憶部に登録されているパケットを、他の情報処理装置へ送信する通信処理部に送信し、
前記情報処理装置の管理部が、前記通信処理部において前記他の情報処理装置に送信していないパケットを前記他の情報処理装置に送信し終えるまでの第１の時間を算出し、算出した第１の時間が前記記憶部への前記所定の数のパケットの登録にかかる第２の時間より長いと判定した場合、前記登録指示を前記登録部に送信することを特徴とする情報処理方法。
（付記１１）
登録指示に応じて、パケットが登録される記憶部に所定の数のパケットを登録するステップと、
前記記憶部に登録されているパケットを、他の情報処理装置へ送信する通信処理部に送信するステップと、
前記通信処理部において前記他の情報処理装置に送信していないパケットを前記他の情報処理装置に送信し終えるまでの第１の時間を算出し、算出した第１の時間が前記記憶部への前記所定の数のパケットの登録にかかる第２の時間より長いと判定した場合、前記登録指示を前記登録部に送信するステップとをコンピュータに実行させるためのプログラム。
（付記１２）
登録指示に応じて、パケットが登録される記憶部に所定の数のパケットを登録するステップと、
前記記憶部に登録されているパケットを、他の情報処理装置へ送信する通信処理部に送信するステップと、
前記通信処理部において前記他の情報処理装置に送信していないパケットを前記他の情報処理装置に送信し終えるまでの第１の時間を算出し、算出した第１の時間が前記記憶部への前記所定の数のパケットの登録にかかる第２の時間より長いと判定した場合、前記登録指示を前記登録部に送信するステップとをコンピュータに実行させるためのプログラムを記録したことを特徴とするコンピュータ読み取り可能な記録媒体。
【符号の説明】
【００８０】
１１０、２１０  情報処理装置
１１１  ＣＰＵ
１１２  メモリ
１１３  ハードディスクドライブ（ＨＤＤ）
１１４、２２０、３５０  ネットワークインターフェースカード（ＮＩＣ）
１１５  入力部
１１６  出力部
１１７  バス
１２０  試験対象機器
１３０  通信回線
２１０  情報処理装置
２１２  パケット負荷生成アプリケーション
２１３  ユーザ制御インターフェース
２１４  パケットプール
２１５  ＮＩＣドライバ
２２１、３５１  送信ディスクリプタ
２２２、３５２  送信バッファ
３１０  パケット負荷生成部
３１１  送信タスク管理部
３１２  パケット登録部
３１３  送信ＡＰＩコール部
３１４  パケットプール
３１５  管理情報保持部
３１６  送信ディスクリプタ監視部
３１７  送信パケット情報保持部
３１８  書き替え情報保持部
３１９  書き替え実行時間保持部
３２０  送信ＡＰＩ実行時間保持部
３３０  ドライバ部
３３１  送信ＡＰＩ
３３２  残留数取得ＡＰＩ
【図１】
2019106578.tif 000003
【図２】
2019106578.tif 000004
【図３】
2019106578.tif 000005
【図４】
2019106578.tif 000006
【図５】
2019106578.tif 000007
【図６】
2019106578.tif 000008
【図７】
2019106578.tif 000009
【図８】
2019106578.tif 000010
【図９】
2019106578.tif 000011
【図１０】
2019106578.tif 000012
【図１１】
2019106578.tif 000013
【図１２】
2019106578.tif 000014
【図１３】
2019106578.tif 000015
【図１４】
2019106578.tif 000016