(57)【要約】  本開示は、ハイパーバイザを使用することなくデータ・プレーンにおいてＯＳＩ第４層およびそれより上の層を使用することができる、パケットを処理するためのデータ・プレーン処理ツール・チェーンを提供するためのシステムおよび方法に関する。本開示は、パケット・フィルタリング、ＤＮＳパケットを解決すること、パケットを生成すること、パケット転送、ＤＮＳルックアップを実行すること、ＤＮＳパケットにタイムスタンプすること、パケットをディスクに書き込むこと、負荷分散、およびＤＤＯＳ攻撃から保護することを含めて、複数の処理機能を有する。
2014527733.tif 000002
【特許請求の範囲】
【請求項１】
データ・プレーンにおいてパケットを処理する方法であって、
１つまたは複数のネットワーク・ポートのＲＸキューおよびＴＸキューから複数のパケットを読み出すステップと、
１つまたは複数のポーリング・モード・ドライバを介してＯＳＩ第４層またはそれより上の層を使用して、少なくとも１つのプロセッサを使用して前記パケットを処理するステップと
を含む方法。
【請求項２】
前記処理するステップが、実行可能なバイトコードを介して動作することによりハイパーバイザを使用せずに行われる請求項１に記載の方法。
【請求項３】
ポーリング・モード・ドライバにオペレーティング・システムから前記パケットを取得させること、
前記パケットを処理すること、および
前記パケットを前記データ・プレーンに送信すること
によりハイパーバイザを使用せずに処理するステップを含み、
前記オペレーティング・システムが、前記ポーリング・モード・ドライバに前記オペレーティング・システムから前記パケットを取得させる１つまたは複数のアプリケーションと共有されたメモリにアクセスする
請求項１に記載の方法。
【請求項４】
前記処理するステップが、
前記複数のパケットからＤＮＳパケットをフィルタリングするステップと、
前記フィルタリングされたＤＮＳパケットに基づいてＤＮＳルックアップを実行するステップと、
前記ＤＮＳルックアップに基づいて前記ＤＮＳパケットを解決するステップと
を含む請求項１に記載の方法。
【請求項５】
前記処理するステップが、
前記複数のパケットの各パケットの発信元ＩＰアドレスまたは宛先ポートを識別するステップと、
前記複数のパケットの各パケットの前記識別された発信元ＩＰアドレスまたは宛先ポートに基づいて前記複数のパケットをフィルタリングするステップと
を含む請求項１に記載の方法。
【請求項６】
前記フィルタリングするステップが、
パケット・ヘッダまたはパケット・ペイロード・データに関連する検索クエリを受信するステップと、
前記検索クエリに基づいて前記複数のパケットから１つまたは複数のパケットを識別するステップと、
前記識別に基づいて前記複数のパケットをフィルタリングするステップと
をさらに含む請求項４に記載の方法。
【請求項７】
データ・プレーンにおいてＤＮＳ応答パケットを生成するステップ、または
前記ＤＮＳパケットをネットワーク・パケット・ストリームに転送するステップ
をさらに含む請求項４に記載の方法。
【請求項８】
ＤＮＳルックアップを実行する前記ステップが、
データベースをＤＮＳルックアップの用意が整うように構成するステップと、
ルックアップ・アダプタ・インスタンスのアレイを生成するステップと、
割り当てられたルックアップ・アダプタ・インスタンスにおいて各プロセス・クエリ方法を実行するステップと
をさらに含む請求項４に記載の方法。
【請求項９】
前記処理するステップが
１つまたは複数の論理コアを前記１つまたは複数のネットワーク・ポートのうちのネットワーク・ポートに割り当てること、
１つまたは複数のＲＸ／ＴＸキュー・ペアを前記１つまたは複数のネットワーク・ポートのうちのネットワーク・ポートに割り当てること、または
それぞれ異なるコアに関連付けられた１つまたは複数の論理コアを前記１つまたは複数のＲＸ／ＴＸキュー・ペアに割り当てること
のうちの少なくとも１つによって前記パケット処理を負荷分散するステップを含む請求項１に記載の方法。
【請求項１０】
前記処理するステップがＤＤＯＳ攻撃から保護するステップを含む請求項１に記載の方法。
【請求項１１】
ＤＤＯＳ攻撃から前記保護するステップが、
前記ＤＤＯＳ攻撃を識別するステップ、または
ＤＤＯＳ識別に基づいてパイプラインを確立するステップ
のうちの少なくとも１つをさらに含む請求項１０に記載の方法。
【請求項１２】
前記アプリケーションが、割り当てられた論理コア上でループで動作する請求項１に記載の方法。
【請求項１３】
前記処理するステップが、
前記複数のパケットをネットワーク・パケット・ストリームに転送するステップと、
前記ネットワーク・パケット・ストリームに関連する各パケットにタイムスタンプするステップと、
前記ネットワーク・パケット・ストリームを複数のネットワーク・パケット・ストリームに分割するステップと
を含み、
前記複数のネットワーク・データ・ストリームのそれぞれが複数のデータ・ファイルとは異なるデータ・ファイルに関連付けられる
請求項１に記載の方法。
【請求項１４】
複数のデータ・ファイルに関連付けられた前記パケットを少なくとも前記タイムスタンピングに基づいて単一のデータ・ストリームに再構成するステップ
をさらに含む請求項１３に記載の方法。
【請求項１５】
データ・プレーンにおいてパケットを処理するシステムであって、
プロセッサと、
ネットワーク・インターフェースと、
前記プロセッサによって実行された場合、前記プロセッサに、
１つまたは複数のネットワーク・ポートのＲＸキューおよびＴＸキューから複数のパケットを読み出すこと、および
１つまたは複数のポーリング・モード・ドライバを介してＯＳＩ層４またはそれより上の層を使用して、少なくとも１つのプロセッサを使用して前記パケットを処理すること
を含む動作を実行させる命令を有するメモリと
を備えるシステム。
【請求項１６】
前記メモリが
ポーリング・モード・ドライバにオペレーティング・システムから前記パケットを取得させること、
前記パケットを処理すること、および
前記パケットを前記データ・プレーンに送信すること
を含むさらなる命令を記憶し、
前記オペレーティング・システムが、前記ポーリング・モード・ドライバに前記オペレーティング・システムから前記パケットを取得させる１つまたは複数のアプリケーションと共有されたメモリにアクセスする請求項１５に記載のシステム。
【請求項１７】
前記メモリが、
１つまたは複数の論理コアを前記１つまたは複数のネットワーク・ポートのうちのネットワーク・ポートに割り当てること、１つまたは複数のＲＸ／ＴＸキュー・ペアを前記１つまたは複数のネットワーク・ポートのうちのネットワーク・ポートに割り当てること、またはそれぞれ異なるコアに関連付けられた１つまたは複数の論理コアを前記１つまたは複数のＲＸ／ＴＸキュー・ペアに割り当てることのうちの少なくとも１つによって前記パケット処理を負荷分散すること
を含むさらなる命令を記憶する請求項１５に記載のシステム。
【請求項１８】
データ・プレーンにおいてパケットを処理するためのアプリケーションを記憶する非一時的コンピュータ可読媒体であって、前記アプリケーションが、プロセッサによって実行された場合、
１つまたは複数のネットワーク・ポートのＲＸキューおよびＴＸキューから複数のパケットを読み出すステップと、
１つまたは複数のポーリング・モード・ドライバを介してＯＳＩ第４層またはそれより上の層を使用して、少なくとも１つのプロセッサを使用して前記パケットを処理するステップと
を含む方法を実行する媒体。
【請求項１９】
前記プロセッサによって実行された場合、
ポーリング・モード・ドライバにオペレーティング・システムから前記パケットを取得させるステップと、
前記パケットを処理するステップと、
前記パケットを前記データ・プレーンに送信するステップと
をさらに含む方法を実行するアプリケーションを記憶し、
前記オペレーティング・システムが、前記ポーリング・モード・ドライバに前記オペレーティング・システムから前記パケットを取得させる１つまたは複数のアプリケーションと共有されたメモリにアクセスする請求項１８に記載の媒体。
【請求項２０】
前記プロセッサによって実行された場合、
１つまたは複数の論理コアを前記１つまたは複数のネットワーク・ポートのうちのネットワーク・ポートに割り当てること、１つまたは複数のＲＸ／ＴＸキュー・ペアを前記１つまたは複数のネットワーク・ポートのうちのネットワーク・ポートに割り当てること、またはそれぞれ異なるコアに関連付けられた１つまたは複数の論理コアを前記１つまたは複数のＲＸ／ＴＸキュー・ペアに割り当てることのうちの少なくとも１つによって前記パケット処理を負荷分散するステップをさらに含む方法を実行するアプリケーションを記憶する請求項１８に記載の媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
本出願は、参照によりその全体が本明細書に組み込まれている、２０１１年６月２９日に出願した米国仮特許出願第６１／５０２，５０４号の優先権を主張するものである。
【０００２】
本開示は、一般に、データ・プレーンにおいてＯＳＩ第４層およびそれより上の層を使用してパケットを処理するためのデータ・プレーン処理ツール・チェーンを提供するためのシステムおよび方法に関する。
【背景技術】
【０００３】
アプリケーションは、マルチコア・プロセッサの開発によって、クロック・スピードの増大による通常の性能向上をもはや得られない。アプリケーションは、しばしば、システム・ハードウェアの機能を十分に利用することができない。インテル（登録商標）データ・プレーン開発キット（ＤＰＤＫ）は、マルチコア・プロセッサ・ハードウェアを利用するために開発された。しかし、データ・プレーンは、高速で動作しなければならないので、データ・プレーンにおいて実行される機能は、限定されている。例えば、ＤＰＤＫは、パケット転送などの簡単なサービスを実行するための下位層パケット処理（開放型システム相互接続（「ＯＳＩ」）第１層〜第３層）に限定される。ＤＰＤＫは、データ・プレーンにおいて上位層パケット処理（ＯＳＩ第４層以上）をサポートしない。これは、同じ技術を使用するこれらの機能を追加することは、パケット処理性能に悪影響を与えるからである。
【発明の概要】
【発明が解決しようとする課題】
【０００４】
上位層パケット処理機能を提供するために、あるシステムは、上位層パケット処理を実行する分離オペレーティング・システムを実行するためにハイパーバイザ（すなわち、仮想マシン・マネージャ）を使用する。しかし、これらのソリューションは、仮想オペレーティング・システムを実行するという更なる複雑性、コスト、および／またはオーバヘッドを必要とするので効率が悪い。これらの従来のソリューションはまた、オペレーティング・システム・インスタンス間でデータを分離するが、これは、インスタンスがデータおよび／またはシステム・リソースを共有する必要がある場合、問題を引き起こすことがある。したがって、より高い効率および処理速度を達成するために、ハイパーバイザを必要としないで処理するＯＳＩ第４層およびそれより上の層のツールが望ましい。
【課題を解決するための手段】
【０００５】
本開示によるシステムおよび方法は、データ・プレーンを活用することによりドメイン・ネーム・システム（「ＤＮＳ」）パケット処理の速度を高める。本開示は、いくつかの実施形態を含む。例えば、ある実施形態では、拡張データ・プレーン・パケット処理ツール・チェーンを提供するためのシステムおよび方法が開示される。
【０００６】
ＯＳＩ第４層およびそれより上の層を使用してデータ・プレーンにおいてパケットを処理するためのシステム、方法、およびコンピュータ可読媒体が開示される。例示的実施形態によれば、データ・プレーンにおいてパケットを処理する方法は、キューからパケットを読み出すステップと、１つまたは複数のポーリング・モード・ドライバを使用して、ＯＳＩ第４層およびそれより上の層を使用してパケットを処理するステップとを含む。
【０００７】
他の例示的実施形態によれば、データ・パケットを処理する方法は、ＤＮＳパケットをフィルタリングするステップであって、送信元ＩＰアドレス、宛先ポート、またはパケット・ペイロード・データのワイルドカード検索によってフィルタリングするステップを含むステップ、ＤＮＳパケットを解決するステップ、データ・プレーンにおいてパケットを生成するステップであって、生成されたパケットのタイプがＤＮＳクエリ・パケットまたは応答パケットを含み得るステップ、パケットをネットワーク・パケット・ストリームに転送するステップ、ＤＮＳルックアップを実行するステップ、ＤＮＳパケットにタイムスタンプするステップ、パケットをディスクに書き込むステップ、論理コアをデータ・ストリームに割り当てることにより負荷分散するステップ、または分散型サービス妨害（「ＤＤＯＳ」）攻撃から保護するステップのうちの１つまたは複数を含む。
【０００８】
他の例示的実施形態によれば、データ・パケットを処理する方法は、複数のオペレーティング・システムを実行しないので、ハイパーバイザを使用せずに実行される。本実施形態によるアプリケーションは、割り当てられた論理コア上でデータ・パケットをループで処理する方法を実行することができる。
【０００９】
他の開示された実施形態によれば、システムまたはコンピュータ可読媒体は、本明細書で開示された方法のいずれかを実施するために１つまたは複数のプロセッサによって実行可能なプログラム命令を記憶することができる。
【００１０】
前述の全般的な説明および以下の詳細な説明は両方とも、請求された本発明を例示し説明するのみのものであり、本発明を限定するものではないことを理解されたい。
【００１１】
本明細書に組み込まれ、本明細書の一部を構成する添付の図面は、本発明の様々な実施形態を例示し、本明細書と共に、本発明の原理を説明するものである。
【図面の簡単な説明】
【００１２】
【図１】開示された実施形態によるシステムを例示する図である。
【図２】負荷分散を示すために、本開示の一実施形態によるシステムを詳細に例示する図である。
【図３】開示された実施形態による、ユーザランド・モードで実行される場合に、プロセッサの処理をポーリング・モード・ドライバとオペレーティング・システムに分配するための例示的プロセスを例示する流れ図である。
【図４】開示された実施形態による、例示的処理機能を例示する関係図である。
【図５】開示された実施形態による、ＤＮＳルックアップを実行するための例示的プロセスを例示する流れ図である。
【発明を実施するための形態】
【００１３】
実施例が添付の図面に例示されているこれらの実施形態について、詳細に言及する。可能な場合には、同じ参照番号が、全図面にわたって同じまたは同様の部分を指すために使用される。本発明の例示的実施形態および特徴が本明細書において説明されるが、本発明の趣旨および範囲から逸脱することなく、変更形態、適応形態、および他の実施形態が可能である。したがって、以下の詳細な説明は、本発明を限定するものではない。代わりに、本発明の適切な範囲は、添付の特許請求の範囲によって定義される。
【００１４】
図１は、本開示の一実施形態によるシステムを示す。本明細書で開示される１つまたは複数の実施形態は、ネットワーク・デバイス１０１などのコンピューティング・デバイスを使用して実施される。例示的ネットワーク・デバイス１０１は、論理的に取り付けられてもよいし、１つまたは複数のプロセッサ１０２を含んでもよい。ある実施形態では、プロセッサの少なくともいくつかは、コア１０３Ａ〜Ｄなど、様々なコア構成およびクロック周波数のうちの１つまたは複数のコアを有する。コア１０３Ａ〜Ｄは、スレッドと呼ばれることもある１つまたは複数の論理コア（図示せず）をサポートする。ネットワークに接続するために、ネットワーク・デバイス１０１は、ネットワーク・インターフェース１０４などの１つまたは複数のネットワーク・インターフェースを含む。ネットワーク・インターフェース１０４は、ソフトウェアおよび／またはハードウェアを使用して実装され、ネットワーク・インターフェース・カード（「ＮＩＣ」）を含んでもよいし、または物理ポートを含んでもよい。ネットワーク・インターフェース１０４は、１つまたは複数のパケット・キューを有する。例えば、ネットワーク・インターフェース１０４は、１つまたは複数のＲＸ（受信）キューおよび／またはＴＸ（送信）キューを含む。例えば、ネットワーク・インターフェース１０４は、単一のネットワーク・ポートごとに複数のＲＸキューおよびＴＸキューを有する。ネットワーク・デバイス１０１はまた、異なるクロック周波数およびメモリ帯域幅の１つまたは複数のメモリ１０５を含む。メモリ１０５は、ＲＡＭ、ＲＯＭ、ソリッド・ステート・ドライブ（「ＳＳＤ」）、ハードディスクドライブ（「ＨＤＤ」）など、デジタル・データを記憶することができる任意のデバイスを含む。単一のメモリ１０５が示されているが、ネットワークは、複数のメモリを含んでもよい。
【００１５】
一実施形態では、データ・プレーン・パケット処理ツール・チェーンが開示される。ツール・チェーンは、ＯＳＩ第１層〜第３層上でのみならずＯＳＩ第４層およびそれより上の層上でデータ・プレーン・パケット処理を実行するためのライブラリまたは機能のセットを含む。図４は、外側の環４０２〜４１２によって例示されているように、ツール・チェーンの処理機能を例示する関係図である。各例示的機能は、開示された実施形態の以下の説明によってさらに詳細に説明される。
【００１６】
ある実施形態では、ツール・チェーンは、アプリケーションがデータ・プレーンにおいてパケット・フィルタリングを実行できるようにするライブラリを含む。例えば、パケット・フィルタリングは、送信元ＩＰアドレスまたは宛先ＩＰアドレス、送信元ポートまたは宛先ポート、および／またはパケット・ヘッダもしくはペイロードのワイルドカード検索に基づいてパケットをフィルタリングすることを含む。一実施形態では、アプリケーションは、パケット・フィルタリングを使用してＤＮＳパケットを識別することができる。
【００１７】
他の実施形態では、ツール・チェーンは、データ・レコーダを実行するための機能またはライブラリを含む。これらの機能またはライブラリは、例えば、直接ネットワークから毎秒最高７ギガビット（９百万パケット）以上のデータを読み出し、そのデータをメモリに書き込む機能を含む。他の実施形態では、ツール・チェーンは、単一のネットワーク・パケット・ストリームを複数のストリームに分割するための機能またはライブラリを含み、各ストリームは、それぞれ異なるデータ・ファイルに送られる。ツール・チェーンは、２つのサーバ間のすべてのパケットが同じデータ・ストリームに送られることを保証する機能またはライブラリを含む。ツール・チェーンは、パケットにミリ秒またはより確度の高い正確さでタイムスタンプするための機能またはライブラリを含む。パケット上の一意のタイムスタンプによって、データ・ファイルが、必要な場合は、単一のストリームに再構成されることが可能となる。
【００１８】
ツール・チェーンは、データ・プレーンにおいてパケットを生成するライブラリまたは機能を含む。一実施形態では、アプリケーションは、ＤＮＳクエリ・パケットを生成することができる。他の実施形態では、アプリケーションは、ＤＮＳクエリに応答するパケットを生成する。これは、ＯＳＩ第６層において行われる。
【００１９】
更なる実施形態では、ツール・チェーンは、負荷分散を実行するライブラリまたは機能を含む。図２は、本開示の一実施形態によるシステムを示す。負荷分散は、ＲＸ（受信）ポート（１）からＲＸポート（ｎ）までおよびＴＸ（送信）ポート（１）からＴＸポート（ｎ）までなどのネットワーク・ポートごとに、論理コア（１）から論理コア（ｎ）までなどの１つまたは複数の論理コア、またはＲＸキュー（１）からＲＸキュー（ｎ）までおよびＴＸキュー（１）からＴＸキュー（ｎ）までなどのＲＸ／ＴＸキュー・ペアを割り当てることを含む。さらに、負荷分散は、ネットワーク・ポートごとに論理コアをそれぞれ異なるコア１０３Ａ〜Ｄから１つまたは複数のＲＸ／ＴＸキュー・ペアに割り当てることを含む。
【００２０】
メモリ１０５は、前述の機能またはライブラリの１つまたは複数、またはそれらの組合せを含む１つまたは複数のアプリケーションを記憶することができる。例えば、アプリケーションは、図５に示されているように、ＤＮＳルックアップを実行することができる。ＤＮＳルックアップは、ステップ５０１におけるように、ＤＮＳ構成を初期化するランワンス・ルーチンを含む。ステップ５０２において、アプリケーションは、一連のＤＮＳルックアップ・インスタンス（アレイ）を生成する。ステップ５０３において、アプリケーションは、割り当てられたＤＮＳルックアップ・インスタンスにおいてプロセス・クエリ方法を実行する。これらの方法は、オプション５０５におけるように、ＤＮＳ情報を記憶している１つまたは複数のデータベースに問い合わせることによりＤＮＳクエリを解決する。アプリケーションはまた、オプション５０６において、パケット・フィルタリングを使用して、解決される必要があるＤＮＳパケットを識別する。最後に、アプリケーションは、ステップ５０４において、ＤＮＳクエリに対する応答を含む応答パケットを生成する。ステップ５０３から５０６までは、ステップ５０１または５０２を繰り返すことなく、ループで繰り返すことができる。これは、ＯＳＩ第６層において行われる。
【００２１】
ある実施形態では、アプリケーションは、データ・プレーンにおいて、これらの機能、ならびにＯＳＩ第４層およびそれより上の層のための機能を実行する。言い換えれば、これらのアプリケーションは、オペレーティング・システムまたはハイパーバイザを必要とせずにＯＳＩ第４層およびそれより上の層の機能を実行する。したがって、これらのアプリケーションは、特定のグローバル化機能を実行する必要なしにメモリおよび情報を共有することができる。さらに、これらのアプリケーションは、複数のオペレーティング・システムを動作させるオーバヘッドなしに動作する。
【００２２】
ある実施形態では、これらのアプリケーションをユーザランド・モードで動作させることができる。図３は、開示された実施形態による、ポーリング・モード・ドライバおよびユーザランド・モードでのオペレーティング・システムの機能を例示する。ユーザランド・モードでは、アプリケーション３０１などのアプリケーションを、３０２などの１つまたは複数のポーリング・モード・ドライバ、および３０３などのオペレーティング・システムを使用して実行することができる。例として、オペレーティング・システムは、Ｍｉｃｒｏｓｏｆｔ（登録商標）  Ｗｉｎｄｏｗｓ（登録商標）、Ｕｎｉｘ（登録商標）、Ｌｉｎｕｘ（登録商標）、Ｓｏｌａｒｉｓ（登録商標）、または他のオペレーティング・システムである。このモードでは、ポーリング・モード・ドライバは、データ・プレーンからパケットを取得し、データ・プレーンにパケットを送信する。図３は、ポーリング・モード・ドライバ３０２が、ステップ３０６においてオペレーティング・システムからパケットを取得し、ステップ３０７においてパケットを処理し、ステップ３０８においてパケットを送信する、この実施形態による例示的プロセスを示す。しかし、オペレーティング・システム３０３などのオペレーティング・システムは、ステップ３０９においてメモリから読み出すことおよびステップ３１１においてメモリに書き込むことを含めて、メモリ３０４などの、アプリケーションと共有されたメモリにアクセスすることができる。したがって、オペレーティング・システムを、ステップ３１０におけるように、データ・プレーンにおいて実行しているアプリケーションおよび／またはポーリング・モード・ドライバの性能を監視するために使用することができる。さらに、ステップ３１２におけるように、オペレーティング・システムは、データ・プレーンにおいて動作しているアプリケーションに対する管理機能を提供することができる。
【００２３】
代替として、ある実施形態では、アプリケーションをベアメタル・モードで動作させることができる。ベアメタル・モードでは、アプリケーションは、実行可能なバイトコードとして実行することによりオペレーティング・システムの必要性をなくすことができる。ディスクドライブ・サポートのような機能を実行することは、ユーザに任されている。
【００２４】
他の実施形態では、ツール・チェーンは、ＤＤＯＳ攻撃から保護するための機能またはライブラリを含む。これらの機能またはライブラリは、例えば、ＤＤＯＳ攻撃を識別し、および／またはＤＤＯＳ攻撃から保護するためにＤＤＯＳの識別に基づいてパイプラインを確立する機能を含む。これらの機能またはライブラリは、単一のセキュリティ装置を使用して、データ・プレーンによってデータを一度読み出し、パケット上でＮ回動作する。次いで、パケットは、システム中に存在し続けるか、またはシステムを出ることができる。
【００２５】
前述の説明は、例示および説明の目的で提示されてきた。それらは、網羅的ではなく、開示された実施形態を開示された正確な形態に限定するものではない。変更形態および変形形態が上記の教示にかんがみて可能である、または開示された実施形態を実施することから習得されることが可能である。例えば、説明された実施形態がソフトウェアを含む場合は、開示された実施形態は、ハードウェアとソフトウェアの組合せとして、またはファームウェアで実施されることが可能である。ハードウェアの例は、パーソナル・コンピュータ、サーバ、ラップトップ、メインフレーム、マイクロプロセッサ、などを含むコンピューティング・システムまたは処理システムを含む。さらに、開示された態様は、コンピュータ上のメモリに記憶されているように説明されているが、これらの態様はまた、ハードディスク、フロッピーディスク、ＣＤ−ＲＯＭ、ＵＳＢメディア、ＤＶＤ、またはＲＡＭもしくはＲＯＭのような他の形態の二次ストレージ・デバイスなどの他のタイプのコンピュータ可読記憶媒体上に記憶され得ることを当業者であれば理解するであろう。
【００２６】
本明細書および開示された方法に基づくコンピュータ・プログラムは、熟練した開発者の技能の範囲内にある。様々なプログラムまたはプログラム・モジュールは、当業者に知られている技法のいずれかを使用して作成するか、または既存のソフトウェアに関連して設計することができる。例えば、プログラム・セクションまたはプログラム・モジュールは、．Ｎｅｔ  Ｆｒａｍｅｗｏｒｋ、．Ｎｅｔ  Ｃｏｍｐａｃｔ  Ｆｒａｍｅｗｏｒｋ（および、Ｖｉｓｕａｌ  Ｂａｓｉｃ（登録商標）、Ｃなどの関連言語）、ＸＭＬ、Ｊａｖａ（登録商標）、Ｃ＋＋、ＪａｖａＳｃｒｉｐｔ（登録商標）、ＨＴＭＬ、ＨＴＭＬ／ＡＪＡＸ、Ｆｌｅｘ、Ｓｉｌｖｅｒｌｉｇｈｔ（登録商標）、または任意の他の現在知られているまたは後に作成されるプログラミング言語で、またはそれらによって設計することができる。そのようなソフトウェア・セクションまたはモジュールの１つまたは複数は、コンピュータ・システムに組み込むことができる。
【００２７】
本明細書に記載の実施形態は、例示のみであり、本発明の範囲から逸脱することなく、開示されたシステムおよびプロセスにおいて様々な変更および変形を行うことができることは、当業者には明らかであろう。例えば、ある実施形態は、本明細書において論じられた特徴の一部またはすべてを使用して実施することができる。他の実施形態は、本明細書を検討し、本明細書で開示された本発明を実施することから当業者には明らかになるであろう。本明細書および実施例は、例示のみとみなされ、真の範囲および趣旨は、添付の特許請求の範囲の請求項およびそれらの均等物全範囲によって示されるものとする。さらに、本明細書で使用される場合は、不定冠詞「ａ」および「ａｎ」は、移行語句「備える（ｃｏｍｐｒｉｓｉｎｇ）」、「含む（ｉｎｃｌｕｄｉｎｇ）」「有する（ｈａｖｉｎｇ）」を含む制約のないクレームにおいては「１つまたは複数（ｏｎｅ  ｏｒ  ｍｏｒｅ）」を意味することを理解されたい。
【図１】
2014527733.tif 000003
【図２】
2014527733.tif 000004
【図３】
2014527733.tif 000005
【図４】
2014527733.tif 000006
【図５】
2014527733.tif 000007
【国際調査報告】
2014527733.tif 000008
2014527733.tif 000009
2014527733.tif 000010