(58)【調査した分野】(Int.Cl.,DB名)
【背景技術】
【0002】
近年、ネットワークを流れるデータの通信レートは年々上昇している。通信レートの上昇傾向が続くと、将来、ネットワークからの入力を分析・抽出する処理(以降、「分析抽出処理」という。)をリアルタイムに行えなくなるという問題が指摘されている。ここでいう分析抽出処理の一例を、株取引の場合について示すと、(1)ネットワークから入力される銘柄、株価の時系列データから指定の銘柄の情報のみを抽出し、(2)平滑化(隣接する複数点の数値の平均をとる処理)を行う、といった処理である。
【0003】
このような問題の対策として、処理を高速化する方法の一つに、現在サーバのアプリケーション(AP: Application Software)で行われている分析抽出処理の一部を、ハードウェア・アクセラレータにオフロードする手法が挙げられる。ハードウェア・アクセラレータの一例として、ユーザ自身が規定した処理(以降、「ユーザ規定処理」という。)を書き込むことができる、再構成可能デバイスを搭載したネットワーク・インタフェースカード(NIC: Network Interface Card)が挙げられる。再構成可能デバイスの例としては、FPGA(Field Programmable Gate Array)がある。
【0004】
FPGAを搭載したNIC(FPGA−NIC)をハードウェア・アクセラレータとして用いる場合は、サーバのAPで行われている処理の一部をオフロードする。すなわち、FPGA−NICをサーバの前段に組み込み、処理の一部を実行するための回路をFPGAにプログラムする。オフロードされた処理は専用の回路で実行されるので、サーバのAPで実行される単位時間あたりの処理量が増大するので、処理を高速化することができる。
【0005】
ユーザは、サーバのAPで行われている処理の中から、オフロード対象の処理を選択し、処理内容を記述する。次にユーザは、記述した処理内容について、論理合成、ネットリストへの変換、配置配線等の作業を行った後、処理内容、具体的にはFPGAへプログラムする情報をFPGA−NICに書き込む。
【0006】
ところが、処理内容が書き込まれたFPGA−NICの実機が、期待通り動作するとは限らない。なぜなら、ユーザによる処理内容の記述ミスやその他の設計上の不具合により、期待と異なる挙動を示す可能性があるからである。そのため、期待通り動作するか否かを確認したり、期待と異なる挙動の原因箇所を突き止めたり、期待と異なる挙動が発生する状況を再現したりする、検証作業が必要である。
【0007】
一般に、実機を用いての検証は、ソフトウェアにおけるデバッグ・検証に比べて難易度が高い。そのため、アクセラレータを用いたオフロードを行うシステムを開発するためには、実機にオフロード処理の内容を書き込み動作させる前に、オフロード処理のソフトウェア・シミュレーションを行うことが有効である。さらには、オフロード処理だけでなく、サーバ上で実行されるAPを含むシミュレーションも行うことが望ましい。
【0008】
通常のサーバでは、サーバ内のOS(Operating System)が、ネットワークからの入力フレームを受信し、宛先や要求内容を解析し、処理する。OSの処理内容は、例えば、入力フレームの要求に返答する、入力フレームを宛先に指定されたAPに届ける、などである。ネットワークからの入力フレームには、TCP(Transmission Control Protocol)やUDP(User Datagram Protocol)などのIP(Internet Protocol)パケットやpingパケット、ARP(Address Resolution Protocol)フレームなどがある。なお、本明細書では、パケットとフレームと特に区別せず、「フレーム」と総称する。
【0009】
シミュレーションを行うためだけに、サーバのOSカーネルやアプリケーションの送受信インタフェースを通常時と異なるものに変更するのは、ユーザにとって困難であり、手間も要する。また、サーバOSやアプリケーションの環境は、サーバによって様々である。そのため、シミュレーション開始時と終了時に、毎回設定を変更したり、サーバ環境によって異なる設定を行ったりするのは煩わしい。従って、シミュレーション環境はOSを改変することなく構築することが可能で、OSカーネルやアプリケーションの送受信インタフェースは変更が不要であることが望ましい。
【0010】
OSの改変を伴わずに構築されたネットワークプロトコルスタックの一例が、非特許文献1に記載されている。非特許文献1の方法によれば、OSを改造することなく、新規ネットワークプロトコルの開発環境を構築することができる。
図26は、非特許文献1の情報処理装置の構成例を示すブロック図である。非特許文献1のユーザレベル・プロトコルスタック400は、OS200より入力パケットのコピーを取得し、プロトコル処理を行ったのち、宛先に指定されているアプリケーションに向けてパケットを送信する。本明細書において、「宛先がアプリケーションである」とは、アプリケーションに割り当てられているソケットペア(IPアドレス、ポート番号)とパケットの宛先情報が一致することを指す。以降、宛先がアプリケーションであるフレームを、「アプリケーション(AP)宛フレーム」という。なお、「ユーザレベル」とは、ユーザ規定処理を含むことを意味する。
【0011】
以下では、OS200の構成について詳しく説明する。OS200は、パケットコピー部240、OSフィルタ部220、OS主機能230を備える。
【0012】
パケットコピー部240は、入力フレームの内、AP宛パケットのみを取得する。そして、パケットコピー部240は、ネットワーク入力フレームが対象プロトコルのパケットであるか判定し、前記条件を満たす場合パケットのコピーを取得し、ユーザレベル・プロトコルスタック400に転送する。入力フレームの判定やコピーは、OSのパケット・キャプチャ機能を用いて実現することができる。
【0013】
OSフィルタ部220は、入力フレームをフィルタリングする。そして、OSフィルタ部220は、入力フレームの宛先がアプリケーションであるかどうか判定し、アプリケーション宛である場合、そのパケットを破棄する。これは、OS200からアプリケーション宛に、同一のパケットが、ユーザレベル・プロトコルスタック400とOSフィルタ部220を経由して、二重に届くのを防ぐためである。
【0014】
非特許文献1のシステムにAP宛パケットがネットワークより入力されたときの動作を、
図27を参照して説明する。
(ステップ1)OSフィルタ部220は、入力フレームの内、AP宛パケットを破棄する。
(ステップ2)パケットコピー部240は、入力フレームの内、AP宛パケットのコピーを取得する。
(ステップ3)ユーザレベル・プロトコルスタック400は、パケットコピー部240により取得したフレームに対して、プロトコル処理を行う。
(ステップ4)ユーザレベル・プロトコルスタック400は、AP宛にパケットを送信する。
(ステップ5)OS主機能230は、ユーザレベル・プロトコルスタック400より送信されたパケットのヘッダを解析して、指定された宛先(アプリケーション)に転送する。
【0015】
また、特許文献1には、プリンタ等デバイスのネットワーク接続試験用に、端末デバイス間に挿入するシミュレーションシステム、方法、プログラムが開示されている。特許文献1の方法によれば、端末とデバイス間の大規模複雑な仮想ネットワークを構築し、高精度な接続試験を行うことができる。
【0016】
NICオフロード処理のシミュレーション環境を構築するためには、入力として生のネットワークトラフィックを取得する必要がある。ここでいう「生のネットワークトラフィック」は、AP宛フレームだけでなく、例えば、サーバの死活確認などに用いられるICMP(Internet Control Message Protocol)フレームや、アドレス解決に用いられるARPフレーム等を含む(以降、これらのフレームを、「非アプリケーション(非AP)宛フレーム」という。)。特許文献1の方法においても、非特許文献1の場合と同様に、生のネットワークトラフィックをOSのフレームコピー機能を用いて取得すると、AP宛フレーム、非AP宛フレームともに同一フレームが二重に発生する。
【0017】
そこで、NICの動作を模擬し、AP宛フレームはNICシミュレータを経由してAPに届き、かつ、APのAP宛フレーム処理及びOSの非AP宛フレーム処理に重複を生じないようにする必要がある。
【発明を実施するための形態】
【0027】
(第1の実施形態)
次に、本発明の実施の形態について図面を参照して詳細に説明する。
図1は、本発明の第1の実施形態の情報処理装置の構成を示すブロック図である。
【0028】
図1に示されるように、本発明を実施するための第1の実施形態における情報処理装置は、OS200、NICシミュレータ100、OS200の管理下で実行されるアプリケーションを備える。
【0029】
NICシミュレータ100は、OS200の管理下でユーザアプリケーションとして実行されるシミュレータである。NICシミュレータ100は、ネットワークからの入力フレームのコピーを入力として取得し、ユーザが処理を書き換え可能なロジックのソフトウェア・シミュレーションを行う。NICシミュレータ100の詳細については、後述する。
【0030】
以上のOS200とNICシミュレータ100の構成により、AP宛フレームはNICシミュレータ100を経由してアプリケーションに転送される。一方の非AP宛フレームに対しては、OS200がフレームごとに指定された処理を行う。以上のような、フレームの宛先によって区分した処理を行うことによって、OSカーネルやアプリケーションの送受信インタフェースを改変することなく、ユーザ規定処理を実行する処理部を含むNICのソフトウェア・シミュレーションを行うことができる。
【0031】
以下では、OS200の内部構成、動作を順に説明する。
図2は、OS200の内部構成を示すブロック図である。OS200は、フレームコピー部210、OSフィルタ部220、OS主機能230を備える。
【0032】
フレームコピー部210は、ネットワーク入力フレームのコピーを取得し、NICシミュレータ100へ出力する。フレームコピー部210は、パケット・キャプチャと呼ばれるOSの機能を用いて実現できる。
【0033】
OSフィルタ部220は、入力フレームを通過させるか破棄するかを判定し、条件を満たすフレームのみ通過させる。具体的条件は、後述するNICシミュレータ100中のフィルタ管理部110の設定内容に基づき、AP宛フレームは破棄し、非AP宛フレームは通過させるよう設定される。OSフィルタ部220は、一般に、ファイアウォールやパケットフィルタと呼ばれる、OSの機能を用いて実現できる。
【0034】
OSフィルタ部220の内容は、例えば
図3のように設定される。すなわち、フィルタ処理の対象とする指定プロトコルと、指定プロトコルごとに指定された宛先ポート番号、及び指定されたプロトコル、宛先ポート番号に該当するフレームに対する指定動作が設定される。
【0035】
指定プロトコルの例としては、TCP、UDPなどが挙げられる。指定動作の例としては、通過させる(ACCEPT)、破棄する(DROP)、などがある。
図3の設定例では、OSフィルタ部220が、TCPプロトコルで11111番ポート宛フレーム及びUDPプロトコルで22222番ポート宛フレームを破棄し、その他のプロトコルのフレームは全て通過させるように設定されている。
【0036】
図4から
図6を用いて、OS200の各部の動作を説明する。まず、
図4を用いて、OSフィルタ部220の設定を行う際の動作を説明する。OSフィルタ部220の設定を行う際の動作は以下の通りである。
(1)NICシミュレータ100のフィルタ管理部110は、OSフィルタ部220に対して、通過させるフレーム及び破棄するフレームの設定を行う。具体的には、OSフィルタ部220がAP宛フレームを破棄し、非AP宛フレームを通過させるように設定する。
【0037】
次に、
図5を用いて、OS200がAP宛フレームを処理する際の動作を説明する。AP宛フレームを処理する際の動作は以下の通りである。
(1)フレームコピー部210は、ネットワークからの入力フレームをコピーする。
(2)OSフィルタ部220は、フィルタ管理部110による設定に基づき、AP宛フレームを破棄する。
(3)フレームコピー部210によりコピーされたフレームは、NICシミュレータ100に入力される。なお、このとき入力されるフレームには、AP宛フレームのみでなく、非AP宛フレームも含まれる。
(4)OS主機能230は、NICシミュレータ100から出力されたフレームを受信し、フレームの中身を解析する。
(5)OS主機能230は、AP宛フレームをアプリケーションに転送する。
【0038】
図6を用いて、OS200が入力された非AP宛フレームを処理する際の動作を説明する。非AP宛の入力フレームを処理する際の動作は以下の通りである。
(1)フレームコピー部210は、ネットワークからの入力フレームをコピーする。
(2)OSフィルタ部220は、フィルタ管理部110による設定に基づき、非AP宛フレームを通過させる。
(3)OS主機能230は、OSフィルタ部220を通過したフレームに対して、フレームの内容に応じた処理を行う。
(4)フレームコピー部210によりコピーされたフレームは、NICシミュレータ100に入力される。なお、上述のように、このとき入力されるフレームには、非AP宛フレームのみでなく、AP宛フレームも含まれる。
【0039】
以上のように、OS200は、AP宛フレームについて、一方ではコピーをNICシミュレータ100に転送し、他方ではOSフィルタ部220でブロックする。非AP宛フレームについては、OS200が処理を行う。
【0040】
次に、NICシミュレータ100の内部構成、動作を順に説明する。
図7は、NICシミュレータ100の内部構成を示すブロック図である。NICシミュレータ100は、フレーム受信部120、処理部130、ユーザフィルタ部140、フレーム送信部150、フィルタ管理部110を備える。
【0041】
フレーム受信部120は、OS200のフレームコピー部210から入力フレームを受信する。フレーム受信部120は、受信したフレームをバッファリングしてもよい。
【0042】
処理部130は、フレーム受信部120から受け取ったフレームを入力フレームとして、ユーザ規定処理についてのソフトウェア・シミュレーションを行う。あるいは、処理部130は、ハードウェア記述言語で動作が記述されたハードウェアシミュレータでもよい。
【0043】
処理部130によるソフトウェア・シミュレーションの対象は、NIC内で実行することが予定されているユーザ規定処理である。NIC内におけるユーザ規定処理は、ハードウェアにより実行されても、ソフトウェアにより実行されてもよい。
【0044】
ユーザ規定処理の内容は、固定の処理であっても、変更可能な処理であってもよい。ユーザ規定処理の内容は、シミュレーションにて処理の正常動作を確認後、NICに搭載された、回路構成を書き込むことができるFPGA等のデバイスや、ユーザ規定処理のプログラムを格納するメモリなどに設定される。処理が変更可能である場合は、NICには、回路構成を書き換えることができるFPGA等のデバイスやプログラマブル・メモリなどが搭載される。
【0045】
図8は、処理部130の内部構成を示すブロック図である。処理部130は、入出力インタフェース(Interface。I/F)131と検証論理部132を備える。検証論理部132は、ユーザが書き換え可能な機能ブロックである。ユーザは検証論理部132に、実現したい処理、すなわち、ユーザ規定処理の内容を記述する。入出力I/F131は、機能ブロックの入出力の接続仕様を表す。
【0046】
図9を用いて、処理部130の動作を説明する。
(1)入出力I/F131は、フレーム受信部120より入力フレームを受け取る。そして、入出力I/F131は、入力フレームを、検証論理部132の入出力信号の接続規約(プロトコル)を満たす入力信号列に変換する。入出力I/F131は、入力フレームをバッファリングしてもよい。
(2)入出力I/F131は、検証論理部132に入力信号列を渡す。
(3)入出力I/F131は、検証論理部132からの出力信号列を受け取る。
(4)入出力I/F131は、出力信号列を出力フレームに変換し、ユーザフィルタ部に出力フレームを送信する。入出力I/Fは、出力信号列をバッファリングしてもよい。
【0047】
このようにして、ユーザは自身で記述した、ユーザ規定処理が期待通りの出力をするか検証することが可能である。
【0048】
図7の説明に戻って、ユーザフィルタ部140は、後述するフィルタ管理部110の設定に基づき、処理部130の出力フレームを通過させるか判定し、条件を満たすフレームのみ通過させる。
【0049】
ユーザフィルタ部140の内容は、例えば
図10のように設定される。すなわち、フィルタ処理の対象とする指定プロトコルと、指定プロトコルごとに指定された宛先ポート番号、及び指定されたプロトコル、宛先ポート番号に該当するフレームに対する指定動作が設定される。
【0050】
プロトコルの例としては、TCP、UDPなどが挙げられる。指定動作の例としては、通過させる、(ACCEPT)破棄する(DROP)、などがある。
図10の設定例では、ユーザフィルタ部140は、TCPプロトコルで11111番ポート宛のフレーム及びUDPプロトコルで22222番ポート宛のフレームを通過させ、その他のプロトコルのフレームは全て破棄するよう設定されている。
【0051】
フレーム送信部150は、ユーザフィルタ部140を通過した出力フレームを受け取り、アプリケーション宛に送信する。
【0052】
フィルタ管理部110は、AP宛フレームについて、OSフィルタ部220は破棄し、ユーザフィルタ部140は通過させるよう設定を行う。フィルタ管理部110の内部構成を
図11に示す。フィルタ管理部110は、設定情報記憶部111、ユーザフィルタ設定部112、OSフィルタ設定部113を備える。
【0053】
設定情報記憶部111はアプリケーションの通信ポートのリストを保持する。設定情報記憶部111は、アプリケーションの起動・終了時に更新される。設定情報記憶部111の記憶内容は、テキストファイルでもよい。
【0054】
設定情報記憶部111は、例えば
図12のような内容を保持する。すなわち、設定情報記憶部111は、例えばアプリケーションのプロトコル、ポート番号を保持する。
図12の例では、アプリケーションのポート番号として、TCPプロトコルにはポート番号11111番が、UDPプロトコルには22222番が割り当てられている。
【0055】
フィルタ管理部110は、これらの宛先へのフレームを、OSフィルタ部220では破棄され、ユーザフィルタ部140では通過するように設定する。
【0056】
フィルタ管理部110の動作を、
図13を用いて説明する。
(1)設定情報記憶部111は、ユーザフィルタ設定部112に送信される。
(2)ユーザフィルタ設定部112は、設定情報記憶部111に保持されているアプリケーションの通信ポート宛のフレームのみを通すよう、ユーザフィルタ部140の設定を行う。
(3)OSフィルタ設定部113は、フレームの通過及び破棄について、ユーザフィルタ設定部112とは反対の設定を行う。すなわち、設定情報記憶部111に記載されているアプリケーションの通信ポート宛のフレームを破棄するよう、OSフィルタ部220の設定を行う。
【0057】
図14から
図16を用いて、NICシミュレータ100の各部の動作を説明する。まず、
図14を用いて、ユーザフィルタ部140の設定を行う際の動作を説明する。ユーザフィルタ部140の設定を行う際の動作は以下の通りである。
(1)フィルタ管理部110は、設定情報記憶部111の保持内容に基づき、ユーザフィルタ部140に対して、通過させるフレーム・破棄するフレームの設定を行う。具体的には、ユーザフィルタ部140がAP宛フレームを通過させ、非AP宛フレームを破棄するように設定する。
【0058】
次に、
図15を用いて、NICシミュレータ100に入力されたAP宛フレームを処理する際の動作を説明する。AP宛の入力フレームを処理する際の動作は以下の通りである。
(1)フレーム受信部120は、OS200のフレームコピー部210によりコピーされたフレームを入力フレームとして受信する。
(2)処理部130は、フレーム受信部120から受け取った入力フレームを入力として、ユーザ規定処理のソフトウェア・シミュレーションを行う。
(3)ユーザフィルタ部140は、フィルタ管理部110の設定に基づき、処理部130の出力フレームであるAP宛フレームを通過させる。
(4)フレーム送信部150は、ユーザフィルタ部140を通過したAP宛フレームを受け取り、アプリケーション宛に送信する。
(5)フレーム送信部150よりアプリケーション宛に送信されたフレームは、OS主機能230を経由してアプリケーションに転送される。
【0059】
図16を用いて、NICシミュレータ100が入力された非AP宛フレームを処理する際の動作を説明する。非AP宛の入力フレームを処理する際の動作は以下の通りである。
(1)フレーム受信部120は、OS200のフレームコピー部210によりコピーされたフレームを入力フレームとして受信する。
(2)処理部130は、フレーム受信部120から受け取った入力フレームを入力として、ユーザ規定処理のソフトウェア・シミュレーションを行う。
(3)ユーザフィルタ部140は、フィルタ管理部110の設定に基づき、処理部130の出力フレームである非AP宛フレームを破棄する。
【0060】
以上のように、NICシミュレータ100は、非AP宛フレームについては、ユーザフィルタ部140でブロックする。AP宛フレームについては、アプリケーション宛に送信する。
【0061】
次に、
図17、
図18、
図19を参照して、本実施形態の全体動作について詳しく説明する。
【0062】
まず、
図17を用いて、フィルタ管理部110によるフィルタの設定動作を説明する。
(1)フィルタ管理部110は、アプリケーションの起動時と終了時に、フィルタ管理部110中の設定情報記憶部111のリストを更新する。そして、フィルタ管理部110は、設定情報記憶部111の保持内容に基づいてユーザフィルタ部140、OSフィルタ部220の設定を行う。
【0063】
次に、ネットワークから入力されたAP宛フレームを処理する全体動作を、
図18を参照して説明する。
(1)OSフィルタ部220は、AP宛入力フレームを破棄する。
(2)フレームコピー部210は、入力フレームのコピーを生成する。
(3)フレーム受信部120は、コピーされた入力フレームを取得し、処理部130に渡す。
(4)処理部130は、フレーム受信部120から受け取った入力フレームを入力として、ユーザ規定処理のソフトウェア・シミュレーションを行う。
(5)ユーザフィルタ部140は、フィルタ管理部110の設定に基づき、処理部130の出力フレームであるAP宛フレームを通過させる。
(6)フレーム送信部150は、ユーザフィルタ部140を通過してきたフレームをアプリケーション宛に送信する。
(7)NICシミュレータ100より送信されたフレームは、OS200が処理する。
(8)OS200はフレームの内容を解析して、アプリケーションにフレームを転送する。
【0064】
さらに、ネットワークから入力された非AP宛フレームを処理する全体動作を、
図19を参照して説明する。
(1)OSフィルタ部220は、非AP宛入力フレームを通過させる。
(2)OS主機能230はOSフィルタ部220を通過したフレームに対して、フレームの内容に応じた処理を行う。
(3)フレームコピー部210は、入力フレームのコピーを生成する。
(4)フレーム受信部120は、コピーされた入力フレームを取得し、処理部130に渡す。
(5)処理部130は、フレーム受信部120から受け取った入力フレームを入力として、ユーザ規定処理のソフトウェア・シミュレーションを行う。
(6)ユーザフィルタ部140は、フィルタ管理部110の設定に基づき、処理部130の出力である非AP宛フレームを破棄する。
【0065】
本実施形態の効果について説明する。本実施形態では、AP宛フレーム及び非AP宛フレームがNICシミュレータへ入力される。そして、AP宛フレームは所定の処理が行われた後、アプリケーションに配送される。非AP宛フレームは、NICシミュレータからは出力されず、OS200によって処理される。このように、アプリケーション宛及びOS宛に同一のフレームが二重に発生することがない。従って、重複したフレームに起因する不具合を発生させることなく、NIC及びNICを含むサーバのソフトウェア・シミュレーションができるという効果がある。
【0066】
さらに、本実施形態では、AP宛フレーム、非AP宛フレーム共にNICシミュレータへ入力され、処理部はその両方を入力する状態で動作確認することができる。実際のNICでも、ネットワークから、AP宛フレーム、非AP宛フレーム共に入力される。そのため、NICシミュレータにて確認された処理部の動作は、実際のNICにおいても、まったく同様に実行することが保証される。従って、NICシミュレータは、実際にNICで所定の処理を行う前のシミュレータとして使用することができる。
【0067】
さらに、本実施形態のNICシミュレータは、OS宛のフレームが重複してOSに入力されることがない。従って、シミュレーション環境を構築するために、OSの改造を行う必要がない。そのため、OSカーネルやアプリケーションの送受信インタフェースの変更に伴う管理コストの増大を抑えることができるという効果がある。
【0068】
本実施形態の説明から理解されるように、OS200は、入力されたフレームの転送先を振り分ける振り分け部として機能する。すなわち、OS200は、フレームを、AP宛フレーム又は非AP宛フレームに区分する。そして、OS200は、AP宛フレームを、フレーム受信部120を介して、処理部130へ転送する。また、OS200は、非AP宛フレームを、OS主機能230に転送し、所定の処理を行う。以上のOS200の振り分け機能以外の保有機能については、特に限定されない。従って、OS200は、振り分け部と一般化することができる。
【0069】
なお、フレーム受信部120及びフレーム送信部150は、フレームの受信及び送信の機能を明示するために独立した機能ブロックとして付け加えたものである。従って、フレーム受信部120及びフレーム送信部150は、本発明の必須の構成要素ではない。
【0070】
以上から、本実施形態の情報処理装置に必須の構成要素は、フィルタ管理部、振り分け部、処理部、フィルタ部である。
図20に、本発明に必須の構成要素のみを備える情報処理装置20の構成を示すブロック図を示す。
【0071】
フィルタ管理部21は、振り分け部22によるフレームの振り分け条件、及びフィルタ部24によるフレームのフィルタ条件を設定する。
【0072】
振り分け部22は、フィルタ管理部21に設定されたフレームの振り分け条件に従って、外部から入力された入力フレームを、処理部23又は外部へ出力する。
【0073】
処理部23は、振り分け部22からの入力フレームに所定の処理を行い、出力フレームとしてフィルタ部24へ出力する。
【0074】
フィルタ部24は、フィルタ管理部21に設定されたフレームのフィルタ条件に従って、処理部からの出力フレームを、外部へ出力又は破棄する。
【0075】
以上のブロックを備えることによって、情報処理装置20は、振り分け部22によって処理部23へ振り分けられた入力フレームに対してのみ処理を行うことができる。そして、所定の条件を満たす出力フレームのみが外部に出力される。
【0076】
このように、情報処理装置20は、ある条件を満たすフレームについてのみ所望の処理を行い、同一フレームが二重に出力されることがない。
【0077】
本実施形態の情報処理装置20は、FPGA−NIC等を用いてユーザ規定処理を行い、その後、その結果に対してさらに情報処理装置で追加の処理を行う情報処理システムの、動作の検証に利用することができる。すなわち、AP宛フレームに対して行われたユーザ規定処理が所望の処置であるか否かは、情報処理装置20の出力フレームを期待値と比較することによって、確認することができる。出力フレームが期待値を一致したならば、情報処理装置20によって処理されたユーザ規定処理が所望の処理であることがわかる。
【0078】
従って、動作が確認されたユーザ規定処理を、NIC内の、ユーザによる動作の指定が可能な処理部の処理として指定すれば、情報処理システムが正常動作することが保証される。
(第2の実施形態)
次に、本発明の第2の実施形態について図面を参照して詳しく説明する。第1の実施形態では、サーバは、シミュレーションによるユーザ規定処理の動作確認の後、ユーザ規定処理を行うFPGA−NICを用いてアプリケーションを実行する。これに対して、第2の実施形態では、ユーザ規定処理を行うFPGA−NICを用いてアプリケーションを実行するサーバとは別のサーバにおいて、ユーザ規定処理のシミュレーションを行う。つまり、ユーザ規定処理のシミュレーションを行うサーバ(以降、「シミュレーション用サーバ」という。)と、実際にユーザ規定処理を行うFPGA−NICを用いてアプリケーションを実行するサーバ(以降、「実動作用サーバ」という。)とは異なる。
【0079】
図21は、第2の実施形態の情報処理システムの構成を示すブロック図である。
図1と共通の構成要素については同じ符号を用いている。第2の実施形態の情報処理システムは、NICシミュレータ500を実行するシミュレーション用サーバ1と、アプリケーションを実行する実動作用サーバ2とを備える。以下ではシミュレーション用サーバ1、実動作用サーバ2の詳細構成について説明する。
【0080】
実動作用サーバ2では、OS200の管理下のもとに、アプリケーション300、副フィルタ管理部310を実行する。
【0081】
OS200は、OS主機能230、OSフィルタ部220を備える。OSフィルタ部220については、第1の実施形態のOSフィルタ部220と同じ機能を実行するため、説明を省略する。
【0082】
副フィルタ管理部310は、OSフィルタ部220の設定を行う。設定内容は、シミュレーション用サーバ1のフィルタ管理部110の要求に基づく。副フィルタ管理部310は、サーバ2からのリモートログインを可能にするサービスでもよい。
【0083】
シミュレーション用サーバ1では、OS600の管理下のもとに、NICシミュレータ500を実行する。シミュレーション用サーバ1のNICは、プロミスキャスモード、すなわち、到着する全フレームを受信するモードに設定される。なお、
図21にNICは図示されていないが、NICはネットワークとサーバ1との間に存在する。
【0084】
OS600はフレームコピー部610を備える。フレームコピー部610は、シミュレーション用サーバ1、及び実動作用サーバ2が接続されているネットワーク上を流れるトラフィックの内、シミュレーション用サーバ1のNICに入力されるフレームのみをコピーして、NICシミュレータ500に渡す。すなわち、宛先がサーバ2であるフレーム及び宛先がブロードキャストアドレスのフレームコピーを取得する。
【0085】
NICシミュレータ500は、フレーム受信部120、処理部130、ユーザフィルタ部140、フレーム書換部560、フレーム送信部150、フィルタ管理部110を含む。フレーム受信部120、処理部130、ユーザフィルタ部140、及びフレーム送信部150については、第1の実施形態のものと同じ機能を実行するため、説明は省略する。
【0086】
フレーム書換部560は、ユーザフィルタ部140を通過したAP宛フレームについて、送信元アドレスをシミュレーション用サーバ1のアドレスに書き換える。
【0087】
フィルタ管理部510は、AP宛フレームについて、実動作用サーバ2のOSフィルタ部220は破棄し、NICシミュレータ500中のユーザフィルタ部140は通過させるよう設定を行う。フィルタ管理部510の内部構成を
図22に示す。フィルタ管理部510は、設定情報記憶部111、ユーザフィルタ設定部112、リモートOSフィルタ設定部513を備える。
【0088】
設定情報記憶部111とユーザフィルタ設定部112は、第1の実施形態のものと同じ機能を実行する。設定情報記憶部111はアプリケーションの通信ポートのリストを保持する。設定情報記憶部111は、アプリケーションの起動・終了時に更新される。
【0089】
ユーザフィルタ設定部112は、設定情報記憶部111に記載されているAP宛フレームのみを通すよう、ユーザフィルタ部140の設定を行う。
【0090】
リモートOSフィルタ設定部513は、実動作用サーバ2のOSフィルタ部220に対して、フレームの通過及び破棄について、ユーザフィルタ設定部112とは反対の設定を行う。すなわち、リモートOSフィルタ設定部513は、実動作用サーバ2の副フィルタ管理部310に指令を送り、OSフィルタ部220が設定情報記憶部111に記載されているAP宛フレームを破棄するように設定させる。
【0091】
次に
図23、
図24、
図25を参照して、本実施の形態の全体動作について詳しく説明する。
【0092】
まず、
図23を用いて、フィルタの設定時の動作について説明する。フィルタの設定時の動作は以下の通りである。
(1)フィルタ管理部510は、アプリケーションの起動時及び終了時に、設定情報記憶部111のリストを更新する。そして、フィルタ管理部510は、ユーザフィルタ部140がAP宛フレームのみを通すよう設定する。
(2)フィルタ管理部510は、実動作用サーバ2上の副フィルタ管理部310に、OSフィルタ部220に、ユーザフィルタ部とは反対の設定、すなわち、AP宛フレームを破棄する設定を行うよう要求を送信する。
(3)副フィルタ管理部310は、フィルタ管理部110の要求に従い、AP宛フレームを破棄するよう、OSフィルタ部220の設定を行う。
【0093】
次に、
図24を用いて、ネットワークから入力されたAP宛フレームを処理する全体動作を説明する。AP宛フレームを処理する際の動作は以下の通りである。
(1)OSフィルタ部220は、AP宛入力フレームを破棄する。
(2)フレームコピー部610は、入力フレームの内、宛先が実動作用サーバ2であるフレーム及び宛先がブロードキャストアドレスのフレームのコピーを生成する。
(3)フレーム受信部120は、コピーされた入力フレームを取得し、処理部130に渡す。ここでフレーム受信部120は、入力フレームをバッファリングしてもよい。
(4)処理部130は、フレーム受信部120からフレームを受け取った入力フレームを入力として、ユーザ規定処理のソフトウェア・シミュレーションを行う。
(5)ユーザフィルタ部140は、フィルタ管理部510の設定に基づき、処理部130の出力であるAP宛フレームを通過させる。
(6)フレーム書換部560は、ユーザフィルタ部140を通過してきたフレームの送信元アドレスをシミュレーション用サーバ1のアドレスに書き換え、フレーム送信部150に渡す。
(7)フレーム送信部150は、フレーム書換部560より受信したフレームを、実動作用サーバ2のアプリケーション宛に送信する。
(8)シミュレーション用サーバ1のNICシミュレータ500より送信されたフレームは、実動作用サーバ2のOSフィルタ部220を通過する。
(9)OS200はフレームの内容を解析して、アプリケーション300にフレームを転送する。
(10)アプリケーション300は、フレームを受信する。
【0094】
さらに、
図25を用いて、ネットワークから入力された非AP宛フレームを処理する全体動作を説明する。非AP宛フレームを処理する際の動作は以下の通りである。
(1)OSフィルタ部220は、非AP宛フレームを通過させる。
(2)OS主機能230は、OSフィルタ部220を通過した非AP宛フレームに対して、フレームの内容に応じた処理を行う。
(3)フレームコピー部610は、入力フレームの内、宛先が実動作用サーバ2であるフレーム及び宛先がブロードキャストアドレスのフレームのコピーを生成する。
(4)フレーム受信部120は、コピーされた入力フレームを取得し、処理部130に渡す。
(5)処理部130は、フレーム受信部120からフレームを受け取った入力フレームを入力として、ユーザ規定処理のソフトウェア・シミュレーションを行う。
(6)ユーザフィルタ部140は、フィルタ管理部510の設定に基づき、処理部130の出力である非AP宛フレームを破棄する。
【0095】
第2の実施形態の効果について説明する。第2の実施形態では、NICシミュレーションとアプリケーションが別サーバで実行される。そのため、アプリケーション実行サーバ(実動作用サーバ2)の負荷が軽減される。そのため、第2の実施形態には、第1の実施形態の効果に加え、シミュレーション時にアプリケーションをより高速に実行することができるという効果がある。