特許第6011109号(P6011109)IP Force 特許公報掲載プロジェクト 2022.1.31 β版

知財求人 - 知財ポータルサイト「IP Force」

▶ 日本電気株式会社の特許一覧

(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】6011109
(24)【登録日】2016年9月30日
(45)【発行日】2016年10月19日
(54)【発明の名称】情報処理システム及び情報処理方法
(51)【国際特許分類】
   H04L 29/10 20060101AFI20161006BHJP
   G06F 13/00 20060101ALI20161006BHJP
【FI】
   H04L13/00 309Z
   G06F13/00 351A
【請求項の数】6
【全頁数】24
(21)【出願番号】特願2012-166099(P2012-166099)
(22)【出願日】2012年7月26日
(65)【公開番号】特開2014-27470(P2014-27470A)
(43)【公開日】2014年2月6日
【審査請求日】2015年6月17日
(73)【特許権者】
【識別番号】000004237
【氏名又は名称】日本電気株式会社
(74)【代理人】
【識別番号】100109313
【弁理士】
【氏名又は名称】机 昌彦
(74)【代理人】
【識別番号】100124154
【弁理士】
【氏名又は名称】下坂 直樹
(72)【発明者】
【氏名】船橋 一訓
(72)【発明者】
【氏名】井上 浩明
(72)【発明者】
【氏名】竹中 崇
【審査官】 森谷 哲朗
(56)【参考文献】
【文献】 国際公開第2008/004569(WO,A1)
【文献】 特開2009−246453(JP,A)
【文献】 特開2000−235536(JP,A)
【文献】 特開2009−130527(JP,A)
(58)【調査した分野】(Int.Cl.,DB名)
H04L 29/10
G06F 13/00
(57)【特許請求の範囲】
【請求項1】
シミュレータとオペレーティングシステムとを有する情報処理システムであって、
前記シミュレータから前記オペレーティングシステムへ出力するフレームの第1のフィルタ条件を設定するとともに、前記情報処理システムに入力された入力フレームの振り分け条件によって前記オペレーティングシステムへ出力される前記入力フレームに、前記第1のフィルタ条件によって前記オペレーティングシステムへ出力される前記フレームが含まれないよう、前記振り分け条件を設定する指令を送るフィルタ管理部と、
前記フィルタ管理部からの前記指令に従って、前記振り分け条件を設定する副フィルタ管理部と、
前記情報処理システムに入力された前記入力フレームをコピーして前記シミュレータへ出力するとともに、前記振り分け条件に従って、前記入力フレームを前記オペレーティングシステムへ出力する振り分け部と、
前記振り分け部から前記シミュレータに出力された前記入力フレームに第1の処理を行い、出力フレームとしてフィルタ部へ出力する処理部と、
前記第1のフィルタ条件に従って、前記出力フレームを、前記オペレーティングシステムへ出力又は破棄するフィルタ部と、
を備えることを特徴とする情報処理システム
【請求項2】
前記振り分け条件は、前記入力フレームが前記第1の処理の対象であるか否かによって振り分け先を規定し、
前記振り分け部は、前記振り分け条件に従って、前記入力フレームが前記第1の処理の対象であるとき、前記入力フレームを前記処理部へ振り分け、
前記処理部は、前記入力フレームが前記第1の処理の対象であるとき、前記入力フレームに前記第1の処理を行い、
前記第1のフィルタ条件は、前記出力フレームが前記第1の処理の対象であるか否かによってフィルタ動作を規定し、
前記フィルタ部は、前記第1のフィルタ条件に従って、前記出力フレームが前記第1の処理の対象であるとき、前記出力フレームを前記オペレーティングシステムへ出力し、前記出力フレームが前記第1の処理の対象でないとき、前記出力フレームを破棄する
ことを特徴とする請求項1に記載の情報処理システム
【請求項3】
前記振り分け条件は、前記入力フレームが前記オペレーティングシステムにおける第2の処理及び前記第1の処理の対象であるか否かによって振り分け先を規定し、
前記振り分け部は、前記振り分け条件に従って、前記入力フレームが前記第1の処理及び前記第2の処理の対象であるとき、前記入力フレームを前記処理部へ振り分け、前記入力フレームが前記第2の処理の対象でないとき、前記入力フレームを前記オペレーティングシステムへ出力し、
前記第1のフィルタ条件は、前記出力フレームが前記第2の処理の対象であるか否かによってフィルタ動作を規定し、
前記フィルタ部は、前記第1のフィルタ条件に従って、前記入力フレームが前記第2の処理の対象であるとき、前記出力フレームを前記オペレーティングシステムへ出力し、前記入力フレームが前記第2の処理の対象でないとき、前記出力フレームを破棄する
ことを特徴とする請求項2に記載の情報処理システム
【請求項4】
前記振り分け条件は、第2のフィルタ条件を含み、
前記振り分け部は、前記振り分け部を制御する前記オペレーティングシステムが備えるフレームコピー機能を用いて前記入力フレームをコピーして前記処理部へ出力し、前記オペレーティングシステムが備えるフィルタ機能を用いて前記第2のフィルタ条件に従って前記入力フレームを通過させ前記オペレーティングシステムへ出力する
ことを特徴とする請求項1乃至3のいずれかに記載の情報処理システム
【請求項5】
シミュレータとオペレーティングシステムとを有する情報処理システムによって、
前記シミュレータから前記オペレーティングシステムへ出力するフレームの第1のフィルタ条件を設定するとともに、前記情報処理システムに入力された入力フレームの振り分け条件によって前記オペレーティングシステムへ出力される前記入力フレームに、前記第1のフィルタ条件によって前記オペレーティングシステムへ出力される前記フレームが含まれないよう、前記振り分け条件を設定する指令を送り
前記指令に従って、前記振り分け条件を設定し、
前記情報処理システムに入力された前記入力フレームをコピーして前記シミュレータへ出力するとともに、前記振り分け条件に従って、前記入力フレームを前記オペレーティングシステムへ出力し、
前記シミュレータに出力された前記入力フレームに第1の処理を行い、出力フレームとして出力し、
前記第1のフィルタ条件に従って、前記出力フレームを、前記オペレーティングシステムへ出力又は破棄する
ことを特徴とする情報処理方法。
【請求項6】
請求項5に記載の情報処理方法を用いて出力された前記第1の出力フレームと、前記第1の処理の結果として期待される期待値フレームとが一致するか否かを判定し、
前記第1の出力フレームと前記期待値フレームとが一致したとき、ネットワークから入力される第2の入力フレームに対して指定された第2の処理を行い第2の出力フレームを情報処理装置へ出力するネットワーク・インタフェースカードの処理部に、前記第1の処理を行うように指定する
ことを特徴とする情報処理方法。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、情報処理装置、及び情報処理方法に関し、特に、処理対象のフレームにのみ所望の処理を行う情報処理装置、及び情報処理方法に関する。
【背景技術】
【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宛フレーム処理に重複を生じないようにする必要がある。
【先行技術文献】
【特許文献】
【0018】
【特許文献1】特開2009−164706(第6頁、図1
【非特許文献】
【0019】
【非特許文献1】E. Ely et al., Alpine: A User-Level Infrastructure for Network Protocol Development, In Proc. of the third conference on USENIX Symposium on Internet Technologies and Systems, (USA), USENIX Association, 2001 March, Volume 3, p. 15
【発明の概要】
【発明が解決しようとする課題】
【0020】
NICオフロード処理のシミュレーション環境を構築するためには、入力として全てのネットワークトラフィックを取得する必要がある。しかし、特許文献1や非特許文献1の技術のようにネットワークトラフィックをOSのフレームコピー機能を用いて取得する場合、AP宛フレーム、非AP宛フレームともに二通りの流れが発生する。複製されたAP宛フレーム及び非AP宛フレームに対しても処理を行うと、APによる同一フレームの重複受信による不具合や、OSによる応答フレームの重複送信によるネットワークトラフィックの増加が発生する。後者のケースでは、最悪の場合、接続の切断といった問題が発生する。
【0021】
従って、NICの、オフロード処理のみでなく、動作の全般のシミュレーションを行うためには、AP宛フレームはNICシミュレータを経由してAPに届き、かつ、APのAP宛フレーム処理及びOSの非AP宛フレーム処理に重複を生じないようにする必要がある。
【0022】
同一フレームが二重に発生しないようにすることは、シミュレーションを行う場合のみでなく、実動作を行う上でも必要である。
(発明の目的)
本発明の目的は、同一パケットを二重に発生させることなく、処理対象のフレームに所望の処理を行うことができる情報処理装置、及び情報処理方法を提供することにある。
【課題を解決するための手段】
【0023】
本発明の情報処理装置は、外部から入力された入力フレームの振り分け条件、及び外部へ出力するフレームの第1のフィルタ条件を設定するフィルタ管理部と、振り分け条件に従って、入力フレームを内部又は外部へ出力する振り分け部と、振り分け部からの入力フレームに第1の処理を行い、出力フレームとしてフィルタ部へ出力する処理部と、第1のフィルタ条件に従って、出力フレームを、外部へ出力又は破棄するフィルタ部と、を備えることを特徴とする。
【0024】
本発明の情報処理方法は、外部から入力された入力フレームの振り分け条件、及び外部へ出力するフレームの第1のフィルタ条件を設定し、振り分け条件に従って、入力フレームを内部又は外部へ出力し、入力フレームに第1の処理を行い、出力フレームとして出力し、第1のフィルタ条件に従って、出力フレームを、外部へ出力又は破棄することを特徴とする。
【発明の効果】
【0025】
本発明の情報処理装置及び情報処理方法には、同一パケットを二重に発生させることなく、処理対象のフレームに所望の処理を行うことができるという効果がある。
【図面の簡単な説明】
【0026】
図1】本発明の第1の実施形態の、情報処理装置の構成を示すブロック図である。
図2】本発明の第1の実施形態の、OSの内部構成を示すブロック図である。
図3】本発明の第1の実施形態の、OSフィルタ部の設定内容の一例である。
図4】本発明の第1の実施形態の、OSフィルタ部の設定動作を示す図である。
図5】本発明の第1の実施形態のOSの、AP宛入力フレームに対する処理動作を示す図である。
図6】本発明の第1の実施形態のOSの、非AP宛入力フレームに対する処理動作を示す図である。
図7】本発明の第1の実施形態の、NICシミュレータの内部構成を示すブロック図である。
図8】本発明の第1の実施形態のNICシミュレータの、処理部の構成を示すブロック図である。
図9】本発明の第1の実施形態のNICシミュレータの、処理部の動作を示す図である。
図10】本発明の第1の実施形態のNICシミュレータの、ユーザフィルタの設定内容の一例である。
図11】本発明の第1の実施形態のNICシミュレータの、フィルタ管理部の内部構成を示すブロック図である。
図12】本発明の第1の実施形態のNICシミュレータの、フィルタ管理部の設定内容の一例である。
図13】本発明の第1の実施形態のNICシミュレータの、フィルタ管理部の動作を示す図である。
図14】本発明の第1の実施形態のNICシミュレータの、ユーザフィルタ部の設定動作を示す図である。
図15】本発明の第1の実施形態のNICシミュレータの、AP宛入力フレームに対する処理動作を示す図である。
図16】本発明の第1の実施形態のNICシミュレータの、非AP宛入力フレームに対する処理動作を示す図である。
図17】本発明の第1の実施形態の、フィルタ管理部による設定動作を示す図である。
図18】本発明の第1の実施形態の、AP宛入力フレームに対する処理の全体動作を示す図である。
図19】本発明の第1の実施形態の、非AP宛入力フレームに対する処理の全体動作を示す図である。
図20】本発明の第1の実施形態の情報処理システムの、必須の構成を示すブロック図である。
図21】本発明の第2の実施形態の情報処理システムの構成を示すブロック図である。
図22】本発明の第2の実施形態のNICシミュレータの、フィルタ管理部の内部構成を示すブロック図である。
図23】本発明の第2の実施形態の情報処理システムの、フィルタ設定動作を示す図である。
図24】本発明の第2の実施形態の情報処理システムの、AP宛入力フレームに対する処理の全体動作を示す図である。
図25】本発明の第2の実施形態の情報処理システムの、非AP宛入力フレームに対する処理の全体動作を示す図である。
図26】非特許文献1に記載されている情報処理装置の、構成例を示すブロック図である。
図27】非特許文献1に記載されている情報処理装置の、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の実施形態の効果に加え、シミュレーション時にアプリケーションをより高速に実行することができるという効果がある。
【産業上の利用可能性】
【0096】
本発明は、付属の処理装置でユーザ規定処理を行った後、処理後のフレームをメインの処理装置に入力し、処理するような用途のシミュレーションに適用することができる。従って、例えば、ネットワークから入力される株価情報に対する抽出・分析等の処理を行う情報処理装置をコンピュータによって実現するときに、NIC等を用いて前処理を行うといった用途に適用できる。
【符号の説明】
【0097】
1 第1の通信装置
100、500 NICシミュレータ
110 フィルタ管理部
111 設定情報記憶部
112 ユーザフィルタ設定部
113 OSフィルタ設定部
120 フレーム受信部
130 処理部
140 ユーザフィルタ部
150 フレーム送信部
200、600 OS
210 フレームコピー部
220 OSフィルタ部
230 OS主機能
240 パケットコピー部
300 アプリケーション
310 副フィルタ管理部
400 ユーザレベル・プロトコルスタックク
510 フィルタ管理部
513 リモートOSフィルタ設定部
560 フレーム書換部
610 フレームコピー部
図1
図2
図3
図4
図5
図6
図7
図8
図9
図10
図11
図12
図13
図14
図15
図16
図17
図18
図19
図20
図21
図22
図23
図24
図25
図26
図27