JP2009230476A - メッセージを処理する装置、方法およびプログラム - Google Patents

メッセージを処理する装置、方法およびプログラム Download PDF

Info

Publication number
JP2009230476A
JP2009230476A JP2008075206A JP2008075206A JP2009230476A JP 2009230476 A JP2009230476 A JP 2009230476A JP 2008075206 A JP2008075206 A JP 2008075206A JP 2008075206 A JP2008075206 A JP 2008075206A JP 2009230476 A JP2009230476 A JP 2009230476A
Authority
JP
Japan
Prior art keywords
processing
instruction sequence
message
control instruction
unit
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
JP2008075206A
Other languages
English (en)
Inventor
Takeshi Ishihara
丈士 石原
Yasuhiro Fukuju
康弘 福壽
Keisuke Mera
恵介 米良
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Toshiba Corp
Original Assignee
Toshiba Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Toshiba Corp filed Critical Toshiba Corp
Priority to JP2008075206A priority Critical patent/JP2009230476A/ja
Priority to US12/372,008 priority patent/US20090240925A1/en
Publication of JP2009230476A publication Critical patent/JP2009230476A/ja
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/54Interprogram communication
    • G06F9/546Message passing systems or structures, e.g. queues
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L69/00Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
    • H04L69/12Protocol engines

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Data Exchanges In Wide-Area Networks (AREA)

Abstract

【課題】処理負荷の増大を抑止するメッセージ処理装置を提供すること。
【解決手段】メッセージの送信または受信に関する処理であるネットワーク処理を実行可能な第1演算部130と、ネットワーク処理と、ネットワーク処理に関連してメッセージに対して実行される予め定められた特定処理を実行可能な第2演算部140と、メッセージの種類を識別する識別情報と、ネットワーク処理および特定処理を連続して実行する制御命令列と、を対応づけた処理情報を記憶する代行処理管理表121と、を備え、第1演算部130は、メッセージから識別情報を検出する識別情報検出部132と、検出された識別情報に対応する制御命令列を代行処理管理表121から取得し、取得した制御命令列を第2演算部140で実行するように制御する制御部137と、を備えた。
【選択図】 図1

Description

この発明は、ネットワークを介して送受信するメッセージを複数の演算部によって処理する装置、方法およびプログラムに関する。
動画像処理や暗号処理には多くの計算資源を必要とする。このため、これらの処理を実行する装置を構成する際には、メインのプロセッサに加えて動画像処理や暗号処理を実行する専用のハードウェアを搭載し、そのハードウェアを使って処理を代行させることが一般的に行われている。さらに別の方法として、マルチコアプロセッサのような汎用的な演算部を複数備えるプロセッサを用い、動画像処理や暗号処理を特定の演算部に優先的または独占的に割り当てることで処理を代行させることも行われている。
近年は、ネットワークを介して、遠隔の装置との間で大量のデータを高速で交換する需要が高まっている。動画像処理や暗号処理と同様に、大容量のデータを高速に伝送するネットワーク処理も多くの計算資源を必要とする。このため、ネットワーク処理を行う専用のハードウェアを搭載する方法や、複数の演算部を備えるプロセッサの特定の演算部を優先的または独占的にネットワーク処理に割り当てる方法が用いられることがある。
また、近年は、暗号化された動画像を高速で伝送する需要も高まっている。このようなネットワークノードを実現するため、処理の内容が異なる複数の専用ハードウェアを連続して用いることで一連の処理を代行させる方法や、複数の処理を一つのハードウェアで実現した高機能な専用ハードウェアを用いて一連の処理を代行させる方法も広く行われている。
例えば、特許文献1では、ネットワークインターフェイスとネットワーク処理と動画像処理とを一つの専用ハードウェアデバイスとして実現し、メインのプロセッサの負荷を低減する技術が提案されている。
特開2006−109016号公報
しかしながら、動画像処理とネットワーク処理のような一連の処理を、複数の専用ハードウェアを連続して用いて代行させる方法では、各専用ハードウェアをメインのプロセッサが制御する必要がある。このため、処理の複雑化やデータの移動に伴うオーバヘッドの増加が生じるという問題があった。これを解決するためには、一連の処理を一括して代行させる手法が有効である。しかし、一つの高機能な専用ハードウェアを用いて一括代行する方法では、代行できる処理が限定され、柔軟性を欠くという問題があった。
本発明は、上記に鑑みてなされたものであって、メインの演算部の処理を他の演算部に代行させる場合の処理負荷の増大を抑止できる装置、方法およびプログラムを提供することを目的とする。
上述した課題を解決し、目的を達成するために、本発明は、処理内容を定めた制御命令列を実行可能な第1演算部と、前記第1演算部と同一または異なる制御命令列を実行可能な第2演算部と、メッセージの種類を識別する識別情報と、前記メッセージの送信または受信に関する処理であるネットワーク処理および前記ネットワーク処理に関連して前記メッセージに対して実行される特定処理を連続して実行する制御命令列と、を対応づけた処理情報を記憶する記憶部と、を備え、前記第1演算部は、前記メッセージから前記識別情報を検出する識別情報検出部と、検出された前記識別情報に対応する制御命令列を前記記憶部から取得し、取得した制御命令列を実行するように前記第2演算部を制御する制御部と、を備えたことを特徴とする。
また、本発明は、上記装置を実行することができる方法およびプログラムである。
本発明によれば、メインの演算部の処理を他の演算部に代行させる場合の処理負荷の増大を抑止できるという効果を奏する。
以下に添付図面を参照して、この発明にかかる装置、方法およびプログラムの最良な実施の形態を詳細に説明する。
(第1の実施の形態)
第1の実施の形態にかかるメッセージ処理装置は、複数の汎用的な演算部を備え、メインの演算部(第1演算部)で実行されるネットワーク処理に伴って他の演算部(第2演算部)で代行して実行される暗号化処理などの特定処理を検出し、ネットワーク処理と特定処理とを連続して実行する制御命令列を生成して記憶部に保存する。そして、以降、該当するメッセージ(パケット)に対しては、第2演算部が、保存した制御命令列を用いてネットワーク処理と特定処理とを連続して実行する。
なお、第1の実施の形態では、(1)ネットワークインターフェイス(I/F)部でパケットを受信すると、ハードウェア割り込みが第1演算部に対して通知されること、(2)ハードウェア割り込みの通知を受けたメインの演算部は、受信パケットを処理するための割り込みハンドラ(以下の割込処理部)を実行する機構を備えること、を前提とする。
図1は、第1の実施の形態にかかるメッセージ処理装置100の構成を示すブロック図である。図1に示すように、メッセージ処理装置100は、ネットワークI/F部110と、メインメモリ120と、第1演算部130と、第2演算部140と、各構成部を接続するバス150と、を備えている。
ネットワークI/F部110は、メッセージ処理装置100が外部の装置との間でパケットを送受信するためのデバイスである。
メインメモリ120は、各種プログラムやメッセージ処理で扱われる各種データを記憶するRAM(Random Access Memory)などの記憶装置である。なお、メインメモリ120はRAMに限られるものではなく、メモリカード、光ディスク、HDD(Hard Disk Drive)などの一般的に利用されているあらゆる記憶媒体により構成することができる。メインメモリ120は、パケットのフロー情報と、第2演算部140で代行処理される制御命令列との対応関係を管理する代行処理管理表121を格納する。
図2は、代行処理管理表121に格納されるデータのデータ構造の一例を示す図である。図2に示すように、代行処理管理表121は、フロー情報と、プロセス情報と、制御命令列と、付加情報とを対応づけたデータである処理情報(以下、代行処理情報という)を格納する。代行処理管理表121では、1行が1つのエントリ(代行処理情報)を形成している。
フロー情報は、パケットの種類を識別するための識別情報である。フロー情報は、パケットを構成する特定の情報の集合として構成される。例えば、パケットに含まれるMACアドレス、IPアドレス、TCPポート番号またはUDPポート番号、およびIPsecなどのプロトコルを識別するプロトコル情報、IPsecのSPI(Security Parameter Index)などのプロトコルで使用するパラメータを識別する識別子のうち、少なくとも1つをフロー情報として利用できる。すなわち、これらの情報を単独でフロー情報として用いてもよいし、複数組み合わせてフロー情報としてもよい。フロー情報により、パケットをグループに分類することができる。
プロセス情報は、パケットを処理するプロセスのプロセスID、または代行処理を依頼するプロセスのプロセスIDなどの、各プロセスを識別する識別子である。なお、プロセス情報はプロセスIDに限られず、メッセージ処理装置100中でプロセスを一意に識別可能な識別子であればあらゆる情報を利用できる。例えば、特定の処理を表す識別子と、特定の処理の内部で固有に定められる情報を結合したものを識別子として使うように構成してもよい。より具体的には、IPsec処理を特定する識別子(例えばプロトコル番号)とIPsecのSPIを結合して識別子としてもよい。さらに、複数の識別子を使う場合には、識別子の種別を特定する情報(例えばプロセスID、IPsec SPIなどを示す値)を付け加えた上で各識別子を管理するように構成してもよい。
制御命令列は、ネットワーク処理と、データを処理する特定処理と、その他の付随する処理とを連続して実行するための命令列である。特定処理は、例えば、ネットワークを介して受信した一つ以上のパケットにデータとして含まれていたデータに対する復号処理などが該当する。また、付随する処理は、例えば、受信したデータのサイズが復号処理に必要なデータサイズに達しているか否かを判定する判定処理などが該当する。なお、付随する処理はこれに限られるものではない。また、制御命令列フィールドには、制御命令列自体を指定してもよいし、制御命令列が格納されているメモリのアドレスを指定するように構成してもよい。
付加情報は、代行処理依頼時に付加的に通知する情報である。付加情報には、例えば、暗号処理のアルゴリズムや、暗号・復号処理で使用する鍵情報が設定される。なお、付加情報フィールドには、付加情報自体を指定してもよいし、付加情報が格納されているメモリのアドレスを指定するように構成してもよい。
図2では、フロー情報として、パケットの送信元IPアドレス(SrcIP)、宛先IPアドレス(DstIP)、プロトコル情報(Proto)、およびセキュリティプロトコルで使用するパラメータを識別する識別子(SPI)を利用する例が示されている。これらの情報は、例えばIPsecのSA(Security Association)から取得することができる。
なお、SAは、SrcIP=10.0.0.1、DstIP=10.1.1.1、Proto=ESP、SPI=12345、Algo=DES(Data Encryption Standard)−CBC(Cipher Block Chaining)、Key=0x1122334455667788などの情報を含んでいる。ここで、Algoとは暗号アルゴリズムを意味し、Keyとは暗号処理で使用する鍵情報を意味する。同図は、このようなSAから取得したフロー情報を設定した例を示している。
また、同図では、受信したパケットを処理するプロセスがIPsec処理を実行するプロセスであり、IPsec処理であることを示す識別子IPSECと、一意に定まるSPIとを含む情報をプロセス情報として利用する例が示されている。また、同図の付加情報は、SAのAlgoおよびKeyで指定された各情報が保存されたバッファのアドレスを指定することを意味している。
制御命令列には、生成部135によって生成された制御命令列が設定される。制御命令列の詳細については後述する。
なお、代行処理管理表121に記載されたエントリは、プロセス情報で識別されるプロセスが消滅したとき、プロセスが更なるパケットの送受信を要求しなくなったとき、およびプロセスが一定時間パケットを送受信していないことを検出したときなどに削除する。エントリの削除処理は、OS(Operating System)のプロセス管理機構と連携して実行するように構成してもよい。例えば、OSが該当するプロセスが消滅したことを検出したときに、対応するエントリを削除するように構成することができる。また、定期的に専用のガーベージコレクションを実行するように構成してもよい。
図1に戻り、第1演算部130は、メインの演算部に相当する演算部であり、主にパケットの送受信に関するネットワーク処理を実行する。また、第1演算部130は、第2演算部140で実行する処理の割り当て等の制御を行う。第1演算部130は、割込処理部131と、識別情報検出部132と、パケット処理部133と、プロセス検出部134と、生成部135と、保存部136と、制御部137と、を備えている。
割込処理部131は、ネットワークI/F部110によって通知されたハードウェア割り込みを検出したときに、パケットを受信する受信処理を実行する。
識別情報検出部132は、受信したパケットまたは送信したパケットからフロー情報を検出する。例えば、識別情報検出部132は、ネットワークI/F部110によってパケットが受信された場合に、受信したパケットに含まれるフロー情報を検出する。
より具体的には、識別情報検出部132は、データリンク層、ネットワーク層、およびトランスポート層などにそれぞれ対応するパケットのヘッダから、上述のMACアドレス、IPアドレス、TCPポート番号、およびUDPポート番号などのフロー情報を検出する。また、識別情報検出部132が、VPN(Virtual Private Network)でトンネルを形成するために使用するヘッダなどを表す中間ヘッダからフロー情報を検出するように構成してもよい。さらに、識別情報検出部132が、IPsecのESPヘッダ、AHヘッダなどの付随するヘッダからフロー情報を検出するように構成してもよい。
パケット処理部133は、ネットワークI/F部110を介してパケットを送受信するための所定のパケット処理を実行する。例えば、パケット処理部133は、受信したパケットのヘッダ部分の解析や通信プロトコル処理、およびネットワークI/F部110から送信するためのパケットのヘッダ部分の作成や通信プロトコル処理を行う。
プロセス検出部134は、ネットワーク処理で処理されるパケットを入力するプロセスまたは出力するプロセスを検出する。具体的には、プロセス検出部134は、受信したパケットを利用するプロセス、または送信するパケットを生成するプロセスのプロセスIDを検出する。また、プロセス検出部134は、代行が依頼された処理(代行処理)を検出し、検出した代行処理の依頼元のプロセスのプロセスIDを検出する。
生成部135は、プロセス検出部134によって検出された、パケットを入出力するプロセスと、代行処理の依頼元のプロセスとが一致するか否かを判定し、一致する場合に、ネットワーク処理と代行処理とを連続して実行する制御命令列を生成する。なお、生成部135は、ネットワーク処理、およびプロセス検出部134によって検出された代行処理の実行順序を判定し、判定した実行順序で各処理を連続して実行する制御命令列を生成する。例えば、生成部135は、代行処理の前後に実行されたネットワーク処理の内容を記憶部等に保存しておき、保存した情報からネットワーク処理および代行処理の実行順序を判定する。IPsec処理のように代行処理の前後で実行するネットワーク処理が事前に定められている場合は、生成部135は、適切な処理と実行順序を仮定して制御命令列を生成するように構成してもよい。
ここで、生成部135によって生成される制御命令列の詳細について説明する。以下では、パケットを受信する場合を例に説明するが、パケットを送信する場合も同様の方法を適用できる。また、説明にあたって次の記法を導入する。
(1)Im:第1演算部130で処理されるネットワーク処理のうち、割り込みハンドラ内で実行される処理
(2)Nm:第1演算部130で処理されるネットワーク処理のうち、割り込みハンドラ外で実行される処理
(3)Ns:第2演算部140で処理されるネットワーク処理
(4)P:受信したパケットの受信先となるプロセス
(5)Os:第2演算部140で処理される代行処理
(6)Ins(*):上記各処理に対応する制御命令列(*には、Im、Nm、Ns、P、Osのいずれかが設定される)
第1の実施の形態では、少なくともネットワーク処理に関する制御命令列であるIns(Ns)および代行処理に関する制御命令列であるIns(Os)を含む、代行処理すべき内容について記述された二つ以上の制御命令列が事前に定められていることを前提とする。
Ins(Ns)に対応するネットワーク処理が、プロトコルスタック内のいずれのネットワーク処理に対応するかについては、様々なケースが考えられる。例えば、ネットワーク処理全体を一つの制御命令列とする場合や、各プロトコルを個別の制御命令列とする場合などが考えられる。
ここでは、ネットワーク処理全体が一つの制御命令列として構成されていた場合を例に説明する。上述の通り、第2演算部140でネットワーク処理を実行するための制御命令列Ins(Ns)は事前に用意される。Ins(Ns)は、受信したパケットを処理するプロセスに無関係に静的に用意されるものとする。例えば、第1演算部130で実行するプロトコルスタックの実行コードをコンパイル等により生成するときに、合わせて第2演算部140で実行する実行コードをコンパイル等により生成する。これにより、制御命令列Ins(Ns)を事前に用意することができる。
このようにして生成される処理ごとの制御命令列は、実行環境に合わせた適切な形式で、常時実行可能な状態でHDD等の記憶部(図示せず)に保存される。例えば、動的にロード可能なカーネルモジュールやダイナミックリンクライブラリといった形式で保存することができる。また、他のプログラム等に対して静的に埋め込まれており、実行時にメモリ上に展開されるようにしてもよい。
以上のような方法を用いて、処理ごとの制御命令列は、第2演算部140に対して通知できる状態になっている。
このような前提で、ネットワーク処理(Nm)によって処理されたパケットを消費するプロセスと、代行処理(Os)を依頼するプロセスが同一であることが分かると、生成部135は、各処理の制御命令列を結合した制御命令列Ins(Ns)|Ins(Os)を生成する。ここで記号「|」は制御命令列を結合することを意味する。なお、ネットワーク処理Nsとネットワーク処理Nmとは、ノード内で一意に管理しなければならない値(例えばポート番号)などに対する扱いは異なると考えられるが、それ以外は原則として同じ処理である。
第2演算部140は、結合された制御命令列を解釈し、記号「|」で区切られた各制御命令列を、左から順に連続して実行する。なお、生成部135が生成する制御命令列の形式はこれに限られず、第2演算部140が、各処理の制御命令列を連続して実行すること、および各制御命令列の実行順序を解釈できるものであればあらゆる形式を適用できる。例えば、生成部135が、各制御命令列に相当するダイナミックリンクライブラリをメモリ上の連続する領域にロードすることにより、複数の処理を連続して実行する制御命令列を生成するように構成してもよい。この場合、第2演算部140は、ロードしたメモリの先頭アドレスから処理を実行することにより、複数の処理を連続して実行することができる。
保存部136は、識別情報検出部132によってパケットから検出されたフロー情報と、生成部135によって生成された制御命令列とを含む代行処理情報を代行処理管理表121に保存する。なお、保存部136は、パケットを受信する場合は、まずパケット受信時にフロー情報とプロセス情報のみを含むエントリ(代行処理情報)を保存し、代行処理実行時に、生成された制御命令列を保存済みのエントリに追加する(詳細は後述)。また、保存部136は、パケットを送信する場合は、まず代行処理実行時に依頼元のプロセスのプロセス情報のみを含むエントリを保存し、パケット送信時に、フロー情報と制御命令列とを保存済みのエントリに追加する(詳細は後述)。
制御部137は、識別情報検出部132によって検出されたフロー情報に対応する制御命令列を代行処理管理表121から取得し、取得した制御命令列を第2演算部140で代行処理するように制御する。
第2演算部140は、第1演算部130からの要求等に応じて各種処理を実行する演算部である。第2演算部140は、上述のように、少なくともネットワーク処理Nsおよび代行処理Osを実行することができる。第2演算部140は、第2演算部140内での処理で利用するデータ等を格納するローカルメモリ141と、代行処理を含む実際の演算処理を実行する演算処理部142とを備えている。
次に、このように構成された第1の実施の形態にかかるメッセージ処理装置100によるメッセージ処理について説明する。メッセージ処理には、パケットを受信するときの処理であるパケット受信処理(図3)、および、パケット受信時に代行処理を検出して制御命令列を生成する命令列生成処理(図4)が含まれる。なお、パケットを送信するときの処理については後述する(図15および図16)。
図3は、第1の実施の形態におけるパケット受信処理の全体の流れを示すフローチャートである。
まず、ネットワークI/F部110にパケットが到着すると、ハードウェア割込みが通知され、割込処理部131が起動される。そして、割込処理部131は、パケットの受信処理を実行する(ステップS301)。
次に、識別情報検出部132は、受信したパケットからフロー情報を検出する(ステップS302)。次に、識別情報検出部132は、検出したフロー情報を含むエントリが、代行処理管理表121に記憶されているか否かを判断する(ステップS303)。
なお、ステップS302〜ステップS303を割込処理部131内で実行するように構成してもよい。すなわち、割込処理部131内でフロー情報の検出とエントリの確認を実行するように構成してもよい。
検出したフロー情報を含むエントリが代行処理管理表121に記憶されていない場合(ステップS303:NO)、パケット処理部133が、受信したパケットに対する通常のパケット処理を実行する(ステップS304)。
次に、プロセス検出部134が、パケットの受信先プロセスの識別子を検出する(ステップS305)。プロセス検出部134は、例えば、OSが管理するプロセス管理情報から、受信先プロセスに対応するプロセスIDを検出することができる。
次に、生成部135が、ステップS302で検出されたフロー情報と、ステップS305で検出されたプロセスIDとを含むエントリ(代行処理情報)を作成する(ステップS306)。なお、生成部135は、エントリに含めるべき情報のうち、この時点で判明していない情報は空欄とする。そして、保存部136が、作成されたエントリを代行処理管理表121に保存する(ステップS307)。
ステップS303で、検出したフロー情報を含むエントリが代行処理管理表121に記憶されていると判断された場合(ステップS303:YES)、生成部135は、エントリ内に制御命令列が設定されているか否かを判断する(ステップS308)。
設定されている場合(ステップS308:YES)、制御部137は、第2演算部140に対して、設定済みの制御命令列による代行処理を依頼する(ステップS309)。例えば、制御部137は、受信したパケットを格納したメモリのアドレスと、制御命令列が格納されたメモリのアドレスとを通知することで代行処理を依頼する。なお、処理の依頼に伴って通知する情報はこれらに限られるものではない。例えば、これまでに処理されたパケットのサイズなどの付加情報を合わせて通知してもよい。このような付加情報は代行処理管理表121の付加情報フィールドに記録される。代行処理を依頼後、パケット受信処理を終了する。
ステップS308で、エントリ内に制御命令列が設定されていないと判断された場合(ステップS308:NO)、パケット処理部133が、受信したパケットに対する通常のパケット処理を実行する(ステップS310)。
ステップS307、ステップS309、またはステップS310の後、パケット処理部133は、処理後のパケットを、パケットを受信する受信先のプロセスに引き継ぎ(ステップS311)、パケット受信処理を終了する。引き継ぐプロセスは、パケットに含まれるポート番号等によって特定することができる。
次に、パケット受信時の命令列生成処理について説明する。図4は、第1の実施の形態におけるパケット受信時の命令列生成処理の全体の流れを示すフローチャートである。
なお、本処理はパケット受信処理とは無関係に開始される。例えば、OSの起動時や代行を処理するデバイスドライバを有効化したときに開始するように構成することができる。また、図3のステップS310等で代行処理を依頼するときに開始するように構成してもよい。
まず、プロセス検出部134は、代行処理が実行されたか否かを判断する(ステップS401)。代行処理が実行されていない場合は(ステップS401:NO)、代行処理の実行が検出されるまで待機する。なお、プロセス検出部134は、例えば、代行処理に対応するダイナミックリンクライブラリ名などの代行処理を特定可能な情報を予め記憶しておき、OSが管理するプロセス管理情報に当該情報が含まれることにより代行処理の実行を検出する。
代行処理が実行された場合は(ステップS401:YES)、プロセス検出部134は、代行処理の依頼元のプロセスのプロセスIDを検出する。例えば、プロセス検出部134は、OSが管理するプロセス管理情報を参照することにより、ステップS401で検出した代行処理の依頼元のプロセスのプロセスIDを検出することができる。
次に、生成部135は、検出したプロセスIDに対応するエントリが代行処理管理表121に記憶されているか否かを判断する(ステップS403)。記憶されている場合(ステップS403:YES)、生成部135は、さらに、エントリ内に制御命令列が設定されているか否かを判断する(ステップS404)。
制御命令列が設定されていない場合(ステップS404:NO)、生成部135は、ステップS401で検出された代行処理の制御命令列と、別途保存されているネットワーク処理を代行させるための制御命令列とを、適切な実行順序で連続して実行する制御命令列を生成する(ステップS405)。実行順序は、上述のようにネットワーク処理の内容に応じて事前に決定されている順序を用いてもよいし、事前に実行順序を判定して保存した情報を参照して決定してもよい。
なお、ネットワーク処理や代行処理に付随する処理が存在する場合は、生成部135は、付随する処理の制御命令列を適切な実行順序で実行する制御命令列を生成する。付随する処理の制御命令列は、例えば対応するネットワーク処理の制御命令列に予め対応づけておくことなどにより取得することができる。
代行させるネットワーク処理は、すべてのプロセスに対応できる汎用的なものでもよいし、パケット受信処理のステップS304で実行したパケット処理の内容に限定するものであってもよい。いずれの場合であっても、ネットワークを介して受信したパケットに適したプロトコル処理が含まれていればよい。
次に、保存部136は、生成された制御命令列を代行処理管理表121の対応するエントリに設定する(ステップS406)。例えば、保存部136は、生成された制御命令列をメインメモリ120に保存し、保存したアドレスを代行処理管理表121のエントリに格納する。
ステップS403で、検出したプロセスIDに対応するエントリが代行処理管理表121に記憶されていないと判断された場合(ステップS403:NO)、または、ステップS404で、エントリ内に制御命令列が設定されていると判断された場合(ステップS404:YES)、パケット受信時の命令列生成処理を終了する。
なお、本処理は、同図に示すように代行処理を検出するごとに終了するようにしてもよいし、無限ループして終了しないように構成してもよい。
図3のフローチャートに示すように、一度、代行処理管理表121に制御命令列が登録されると、以降の処理の大半は第2演算部140に対して割り当てられる。これにより、第1演算部130の処理負荷を低減することができる。また、従来の方法ように専用ハードウェアと第1演算部130との間で頻繁に処理が移ることもないため、オーバヘッドが大きく削減される。一方、図4で示される命令列生成処理の実行回数は必要最低限となるため、大きな負荷要因にはならない。
ここで、第1の実施の形態の方法によって得られる効果についてさらに説明する。最初に、第1の実施の形態のメッセージ処理装置100のハードウェア構成の変形例について説明する。
図1では、1つの第2演算部140を含む構成が示されているが、複数の第2演算部140を備えるように構成してもよい。図5は、このように構成されたメッセージ処理装置500のハードウェア構成図である。図5に示すように、本変形例のメッセージ処理装置500は、2つの第2演算部140a、140bを備えている。例えば、第2演算部140a、140bは、それぞれ予め定められた固有の代行処理を実行するように構成する。なお、第2演算部140を3つ以上備えるように構成してもよい。
また、図1の第2演算部140を、ネットワークI/F部内に備えるように構成することもできる。図6は、このように構成されたメッセージ処理装置600のハードウェア構成図である。図6に示すように、本変形例のメッセージ処理装置600は、第2演算部140をネットワークI/F部610内に備えている。
第1演算部130と、複数の第2演算部140とを備えたマルチコアプロセッサを利用するように構成してもよい。図7は、このように構成されたメッセージ処理装置700のハードウェア構成図である。図7に示すように、本変形例のメッセージ処理装置700は、マルチコアプロセッサ760内に、1つの第1演算部130と、4つの第2演算部140a〜140dとを備えている。なお、第2演算部140の個数は4つに限られるものではない。また、第1演算部130を複数備えるように構成してもよい。
図5〜図7のメッセージ処理装置は、第2演算部140の個数および設置箇所が異なるのみであるため、図1のメッセージ処理装置100と同様の方法を適用できる。
次に、図1、図5または図6のようなハードウェア構成の装置で、第1の実施の形態の方法を適用しない場合のメッセージ処理の例について図8〜図10を用いて説明する。
図8は、図1と同様に、1つの第1演算部と1つの第2演算部を用いて処理が実行される例を示す模式図である。横向きの矢印は時刻の変化を表しており、左から右に行くほど時刻が新しいことを示す。また、両矢印上に記された四角は、ある処理が実行されている部分を表している。四角の内部に記載されたアルファベットは、それぞれ上述した記法による処理を表している。
図8は、ネットワークI/F部がパケットを受信したことによって第1演算部に通知された割り込みを契機として実行される一連の処理の流れを示している。第1演算部の割り込みハンドラ(割込処理部131)は、規定の処理810(Im)を実行すると、通常のネットワーク処理811(Nm)に処理を引き継ぐ。ネットワーク処理811(Nm)は、受信先のプロセスを特定する処理を含む。その結果、次の処理として処理812(P)が実行される。
ここで、受信先プロセスは、処理の途中で処理813(Os)を代行処理するように実装されているとする。このため、処理の途中で処理813(Os)を第2演算部で実行している。処理813(Os)の実行が完了すると、第1演算部に戻り、受信先プロセスの残りの処理814(P)が再開される。なお、同図のシーケンスを実現するにあたり、第2演算部を動作させるための制御命令列Ins(Os)は、実行可能なプログラムコードとして事前に準備されているものとする。
図9は、図5のように、1つの第1演算部と2つの第2演算部を用いて処理が実行される例を示す模式図である。この例では、ネットワーク処理901(Nm)の後に、ネットワーク処理の一部である処理902(Ns)が第2演算部のうちの1つで代行処理されている。処理903は、ネットワーク処理の残りの処理を表す。また、この例では、処理904(Os)が、もう1つの第2演算部で代行処理されている。なお、同図のシーケンスを実現するにあたり、第2演算部を動作させるための制御命令列Ins(Ns)やIns(Os)は、実行可能なプログラムコードとして事前に準備されているとする。
図10は、図6のように、1つの第1演算部とネットワークI/F部に備えられた第2演算部を用いて処理が実行される例を示す模式図である。この例では、ネットワークI/F部上に第2演算部が実装されるため、第2演算部で実行されるネットワーク処理1010(Ns)と代行処理1014(Os)が連続して実行される。そして、ネットワーク処理1010(Ns)が完了した段階で割り込みハンドラ(割込処理部131)による処理1011(Im)が第1演算部で実行される。その後、必要最小限のネットワーク処理1012(Nm)が実行される。事前に実行された代行処理1014(Os)の結果は最後に実行される処理1013(P)によって利用される。
図8および図9の例は、プロセスの処理の間に代行処理が実行されることなどにより、処理の複雑化やデータの移動に伴うオーバヘッドの増加という問題が発生する。図10の例は、プロセスの処理の間の代行処理は存在しないため、図8および図9の方法と比較すると効率的である。しかし、図10を実現する構成である図6は、第2演算部を含んだ専用のネットワークI/F部を使用しなければならない。
これに対し、第1の実施の形態は、上述のように専用のネットワークI/F部を備えることなく、汎用の演算部のみを用いて、メインの演算部の処理を他の演算部に代行させる場合の処理負荷の増大を回避することが可能となる。図11は、図1のように構成された第1の実施の形態のメッセージ処理装置100によるメッセージ処理の一例を示す模式図である。図11は、代行処理管理表121に登録された制御命令列を用いることにより、ネットワーク処理1111(Ns)と代行処理1113(Os)とを第2演算部140で連続して実行する例を示している。図8と比較すると、図11の例では、代行処理1113(Os)が事前に実行され、これに伴いパケットの受信先プロセスが実行する処理1112(P)が途切れずに実行される。このように、第1の実施の形態によれば、専用のハードウェアを用いることなく、メインの演算部の処理を他の演算部に代行させる場合のオーバヘッドの増加を抑止できる。
次に、第1の実施の形態によるメッセージ処理の具体例について説明する。以下では、パケットを受信するネットワーク処理と、受信パケットを復号化するSSL(Secure Socket Layer)の共通鍵暗号処理とを代行する場合を例として説明する。SSLの共通鍵暗号処理に必要な暗号アルゴリズムの演算処理が予め第2演算部140によって代行されると決められているとする。
まず、メッセージ処理装置100のネットワークI/F部110が、任意のタイミングでパケットを受信することによってパケット受信処理が開始される。ここで、送信元IPアドレス=「10.2.2.1」、宛先IPアドレス=「10.2.2.2」、プロトコル=「TCP」、送信元ポート番号=「80」、および宛先ポート番号=「54321」のようなフロー情報を含むパケットを受信すると仮定する。
このパケットがネットワークI/F部110に到着すると、割り込み信号が第1演算部130に通知される。その結果、第1演算部130で割込処理部131が起動される。割込処理部131が適切な処理を実行した後(ステップS301)、識別情報検出部132が、パケットのフロー情報を抽出し、抽出したフロー情報に対応する代行処理管理表121を検索する(ステップS302、ステップS303)。上記フロー情報のパケットは初めて受信するため、この段階では、代行処理管理表121にエントリは存在しない。この結果、パケット処理部133が、通常のパケット処理を実行する(ステップS304)。
パケット処理の過程で、そのパケットを最終的に消費するプロセスが決定される。生成部135は、決定されたプロセスのプロセスIDと、検出したフロー情報とを合わせて、代行処理管理表121のエントリを作成する(ステップS306)。そして、保存部136が、作成されたエントリを代行処理管理表121に登録する(ステップS307)。登録が終わるとパケット受信処理の第一段階が終了する。
図12は、この時点での代行処理管理表121に記憶されたエントリの一例を示す図である。フロー情報フィールドには、検出されたフロー情報が記載され、プロセス情報フィールドには、決定したプロセスのプロセスIDである「PID1」が記載される。その他の二つのフィールドは、この時点で情報が確定しないため、未記入のままにしておく。
次に、受信したパケットがそれを最終的に消費するプロセスに渡されたと仮定する。このプロセスは、SSLの処理が実行可能な量のデータが受信されたかどうかを確認する処理を行う。ここでは、まだ十分な量のデータを受信していないと仮定する。この場合、プロセスは再びパケットを受信するまで待機する。
さらに、ネットワークI/F部110に、上記フロー情報が表すフローに属するパケットが到着したと仮定する。同様にして割込処理部131が受信処理を実行し(ステップS301)、識別情報検出部132が、フロー情報に対応するエントリの確認処理を実行する(ステップS302、ステップS303)。この段階では、上述した処理でエントリが作成されているため、エントリが代行処理管理表121に存在すると判断される(ステップS303:YES)。
この場合、生成部135は、検索されたエントリ内に制御命令列が設定されているか否かを判断する(ステップS308)。図12に示したように、この時点では同エントリに制御命令列は記載されていないと判断される(ステップS308:NO)。したがって、パケット処理部133が、通常のパケット処理を実行する(ステップS310)。
この後、再度、パケットを最終的に消費するプロセスに受信したパケットが渡されたと仮定する。プロセスは、これまでに受信した未処理のデータの長さを判定する処理を実行する。ここでは、SSLの処理が実行可能な量のデータが受信されたと判定されたと仮定する。
復号処理に必要なデータを受信したことが確認されたので、プロセスは、暗号化されたデータの復元を試みる。この処理は第2演算部140で代行されることが事前に設定されているため、代行のための制御命令列と入力データとを第2演算部140に通知し、代行を依頼する。
プロセスによる代行の依頼は、図4に示した命令列生成処理のステップS401で捕捉される。代行依頼が捕捉されると(ステップS401:YES)、プロセス検出部134が、代行依頼を発行したプロセスを特定する(ステップS402)。ここでは、プロセスID=「PID1」が取得できたとする。
次に、生成部135は、取得したプロセスIDに対応するエントリを代行処理管理表121から検索する(ステップS403)。この時点の代行処理管理表121は、図12に示した通り、プロセス情報として「PID1」が記載されたエントリが存在する。
そこで、生成部135は、エントリ内に制御命令列が設定されているか否かを判断する(ステップS404)。仮に制御命令列が記載済みであれば(ステップS404:YES)、新たに制御命令列を生成する必要がないため命令列生成処理を終了する。この段階では、図12に示すように制御命令列が記載されていないため(ステップS404:NO)、生成部135は、制御命令列を生成する。
例えば、生成部135は、「Ins(Ns)|Ins(C)|Ins(Crypt)」という制御命令列を生成する。ここで、Ins(Ns)は第2演算部140でネットワーク処理を行うための制御命令列である。また、Ins(Crypt)はプロセスからの代行依頼によって第2演算部140に通知された暗号アルゴリズムを実行するための制御命令列である。
Ins(C)は、受信したデータのサイズを判定するためにプロセスが実行していた処理に相当する制御命令列である。Ins(C)は、Ins(Crypt)を実行可能と判断する受信データのサイズの閾値αと、Ins(Ns)によって処理されたがIns(Crypt)で処理されていないデータの総量βとを入力として受け取る。そして、Ins(c)は、βがαより大きい場合に、Ins(Crypt)を実行可能と判定する。
なお、閾値αは、実行する暗号アルゴリズムに応じて予め定められており、制御部137が制御命令列の実行を第2演算部140に依頼するときに、第2演算部140に通知される。なお、制御部137が、暗号アルゴリズムを実行するプロセスに対して渡されたデータのサイズを事前に検出して保存しておき、保存したサイズを閾値αとして第2演算部140に通知するように構成してもよい。
制御命令列が作成されると、保存部136は、作成した制御命令列で該当するエントリを更新する(ステップS406)。このとき、保存部136は、閾値αをエントリの付加情報フィールドに記載する。なお、プロセスが発行した代行依頼に対する実際の代行処理は、命令列生成処理を実行している間に実行してもよいし、命令列生成処理の完了後に実行してもよい。
図13は、この時点での代行処理管理表121に記憶されたエントリの一例を示す図である。同図に示すように、この時点では、制御命令列フィールドおよび付加情報フィールドに、それぞれ生成された制御命令列および閾値αの情報が追加されている。
次に、さらに同じフローに属するパケットを受信したとする。この場合、図3のようなパケット受信処理が実行される。この段階では、検出したフロー情報に対応するエントリが存在し(ステップS303:YES)、制御命令列も記載されているため(ステップS308:YES)、当該エントリに記載された制御命令列を伴う代行処理依頼が発行される(ステップS309)。
上述のように、ここで依頼される代行処理の制御命令列は、「Ins(Ns)|Ins(C)|Ins(Crypt)」である。この段階では、1パケットしか受信していないためデータのサイズが小さい。このため、Ins(C)ではIns(Crypt)が実行できないと判定され、代行処理が終了する。
引き続き同じフローに属するパケットを受信し、Ins(C)で、十分な量のデータが受信済みであると判定されたとする。この場合、次の処理であるIns(Crypt)が実行される。なお、最初に受信したパケットに対してネットワーク処理を施した結果は、第2演算部140から即時アクセス可能なメモリ領域に保存される。そして、保存された結果と、次に受信したパケットをネットワーク処理した結果とが、Ins(Crypt)によってまとめて処理される。
次に、第1の実施の形態によるメッセージ処理の他の具体例について説明する。以下では、図7のようなマルチコアプロセッサ760によって構成されたメッセージ処理装置700に適用した例を説明する。
なお、メッセージ処理を実行するためのメッセージ処理プログラムは、実行可能なプログラムの形式でメインメモリ120に格納されている。そして、メッセージ処理プログラムは、状況に応じてマルチコアプロセッサ760にロードされ、実行される。
図14は、この例でのメッセージ処理の概要を示すシーケンス図である。パケットがネットワークI/F部110に到着すると(ステップS1401)、ネットワークI/F部110は、受信したパケットをメインメモリ120に保存する(ステップS1402)。また、ネットワークI/F部110は、マルチコアプロセッサ760の第1演算部130に対して割り込みを通知する(ステップS1403)。
第1演算部130は、メインメモリ120から割り込みハンドラ(割込処理部131)のコードをロードして実行する。同様に識別情報検出部132の処理が実行され、受信したパケットからフロー情報が検出される(ステップS1404)。
その後、第1演算部130は、メインメモリ120に格納された代行処理管理表121を参照し(ステップS1405)、受信パケットに対応するエントリの存在と制御命令列の存在を確認する(ステップS1406)。このとき、必要に応じてメインメモリ120に格納されたパケットの内容を参照する。なお、対応するエントリまたは制御命令列のいずれかが存在しない場合は、引き続き第1演算部130が処理を続ける。
ここでは、エントリと制御命令列が共にが存在すると仮定して説明を続ける。第1演算部130は、対応するエントリに記載された制御命令列と付加情報とパケットが格納されたメインメモリ120のアドレスとを、第2演算部140のローカルメモリ141に格納する(ステップS1407)。その後、第2演算部140の演算処理部142に対して処理を行うように依頼する。
第2演算部140は、ローカルメモリ141に記載されたパケットのアドレスを参照し、パケットをメインメモリ120からローカルメモリ141に転送する(ステップS1408)。そして、ローカルメモリ141に格納された制御命令列に従って処理を実行する(ステップS1409)。実行完了後、第2演算部140は、必要に応じて、メインメモリ120への演算結果の書き戻し(ステップS1410)や、他の第2演算部140のローカルメモリ141への演算結果の転送を実行してもよい。
これまでは、主にパケットを受信する場合の代行処理について説明した。同様の処理は、パケットを送信する場合にも適用できる。以下に、パケットを送信するときのメッセージ処理の詳細について説明する。パケットを送信するときのメッセージ処理には、パケット送信時に代行処理を検出して制御命令列を生成する命令列生成処理(図15)、および、パケットを送信するときの処理であるパケット送信処理(図16)が含まれる。
図15は、第1の実施の形態におけるパケット送信時の命令列生成処理の全体の流れを示すフローチャートである。
ステップS1501からステップS1503の、代行処理の検出処理、プロセスID検出処理、およびエントリ検索処理は、パケット受信時の命令列生成処理を表す図4のステップS401からステップS403までと同様の処理なので、その説明を省略する。
パケット送信時は、ネットワーク処理に先立って代行処理が実行される。このため、初めて実行される代行処理に対しては、代行処理管理表121に対応するエントリが存在しない。したがって、ステップS1503で、検出したプロセスIDに対応するエントリが代行処理管理表121に記憶されていないと判断された場合(ステップS1503:NO)、エントリを作成する処理が追加される(ステップS1504)。すなわち、生成部135が、検出したプロセスIDをプロセス情報として含むエントリを作成し(ステップS1505)、保存部136が、作成したエントリを代行処理管理表121に保存する。なお、この時点ではプロセス情報以外は特定できないため、その他のフィールドは空欄とする。
ステップS1503で、検出したプロセスIDに対応するエントリが代行処理管理表121に記憶されていると判断された場合(ステップS1503:YES)、生成部135は、エントリ内に完全な制御命令列が設定されているか否かを判断する(ステップS1505)。ここで、完全な制御命令列とは、ネットワーク処理と一つ以上の代行処理とを実行する制御命令列である。
完全な制御命令列が設定されている場合(ステップS1505:YES)、制御命令列を生成する必要がないため、パケット送信時の命令列生成処理を終了する。完全な制御命令列が設定されていない場合(ステップS1505:NO)、生成部135は、制御命令列を生成する(ステップS1506)。本ステップで生成される制御命令列には、二つの形式が存在する。
第一の形式は、送信のためのネットワーク処理(送信ネットワーク処理)を含まない制御命令列である。例えば、代行処理が初めて実行され、ステップS1504でエントリを登録した時点では、送信のためのネットワーク処理の内容が確定してない。このため、生成部135は、送信ネットワーク処理の制御命令列を含まず、代行処理に対する制御命令列のみを含む形式で仮の制御命令列を生成する。なお、この仮の制御命令列は、図16のステップS1608(後述)で、送信ネットワーク処理の制御命令列と結合されて、完全な制御命令列となる。
第二の形式は、送信ネットワーク処理を含む完全な制御命令列である。例えば、通信は開始されたが代行処理を行わない送信処理が続いた場合には、先にエントリが作成される可能性がある。この場合は、生成部135は、作成済みの送信ネットワーク処理の制御命令列と代行処理の制御命令列とを含む完全な制御命令列を生成することができる。
最後に、保存部136が、生成された制御命令列を代行処理管理表121の対応するエントリに設定し(ステップS1507)、パケット送信時の命令列生成処理を終了する。
次に、パケット送信処理について説明する。図16は、第1の実施の形態におけるパケット送信処理の全体の流れを示すフローチャートである。
まず、プロセス検出部134は、パケットの送信依頼元のプロセスのプロセスIDを検出する(ステップS1601)。次に、プロセス検出部134は、検出したプロセスIDを含むエントリが、代行処理管理表121に記憶されているか否かを判断する(ステップS1602)。
検出したプロセスIDを含むエントリが記憶されていない場合(ステップS1602:NO)、パケット処理部133が、送信するパケットに対する通常のパケット処理を実行し(ステップS1603)、パケット送信処理を終了する。
検出したプロセスIDを含むエントリが記憶されている場合(ステップS1602:YES)、生成部135は、エントリ内に完全な制御命令列が設定されているか否かを判断する(ステップS1604)。設定されている場合(ステップS1604:YES)、制御部137は、第2演算部140に対して、設定済みの制御命令列による代行処理を依頼し(ステップS1605)、パケット送信処理を終了する。
エントリ内に完全な制御命令列が設定されていないと判断された場合(ステップS1604:NO)、パケット処理部133が、受信したパケットに対する通常のパケット処理を実行する(ステップS1606)。次に、識別情報検出部132が、送信したパケットからフロー情報を検出する(ステップS1607)。次に、生成部135は、エントリ内の仮の制御命令列(代行処理の制御命令列)と、送信ネットワーク処理の制御命令列とを結合した完全な制御命令列を生成する(ステップS1608)。そして、保存部136が、生成された制御命令列と、検出されたフロー情報とを含むエントリで、代行処理管理表121のエントリを更新する(ステップS1609)。
以上のように、パケット送信処理は、以下の点で、図3に示すパケット受信処理と異なっている。
(1)代行処理管理表121にエントリが存在し、かつ完全な制御命令列が登録されていない場合(ステップS1604:NO)には、ネットワーク処理(通常の送信処理)とエントリの更新処理とが実行される
(2)割り込みハンドラ(割込処理部131)で動作する部分が存在しない
(3)代行処理管理表121にエントリが存在しない場合(ステップS1602:NO)、通常のネットワーク処理が実行される
(4)送信処理に続いて、送信するパケットのフローを検出する処理(ステップS1607)が追加される
次に、第1の実施の形態によるパケット送信時のメッセージ処理の具体例について説明する。以下では、SSLによる暗号処理を施したパケットをネットワークに送信する場合を例に説明する。なお、SSLの共通鍵暗号処理に必要な暗号アルゴリズムの演算処理は、予め第2演算部140によって代行されると決められているとする。
まず、あるプロセスが、ネットワークを介して送信すべきデータを生成する。この時点で、データはメインメモリ120に格納されている。このデータに対してネットワークに送信する前に暗号処理を施す。暗号処理は、第2演算部140により実行される代行処理であるため、プロセスは、暗号処理を実行する制御命令列とデータのアドレスとを、第2演算部140に通知する。
第2演算部140は、データをローカルメモリ141にロードし、暗号処理を実行する。この通知を契機に、第1演算部130では、命令列生成処理(図15)が実行される。
この例では初めて実行する代行処理(暗号処理)であるため、暗号処理に対応する制御命令列からなる仮の制御命令列を含むエントリが代行処理管理表121に追加される(ステップS1506、ステップS1507)。なお、暗号処理が完了すると、データは第2演算部140のローカルメモリ141からメインメモリ120に書き出される。
全てのデータに対して暗号処理が終了すると、パケット送信処理(図16)が実行される。この例では、代行処理管理表121に仮の制御命令列を含むエントリが登録されているため(ステップS1602:YES、ステップS1604:NO)、通常の送信ネットワーク処理が実行される(ステップS1606)。そして、フロー情報の検出(ステップS1607)、制御命令列の生成(ステップS1608)、およびエントリの更新(ステップS1609)を経て、パケット送信処理が完了する。
なお、パケット送信処理は第1演算部130で実行される。また、メインメモリ120に格納されていたデータは、送信ネットワーク処理(ステップS1606)の実行に伴ってメインメモリ120からネットワークI/F部110を介してネットワークに送信される。
プロセスが、後続のデータをさらに生成したとする。この後、プロセスが暗号処理を実行しようとすると再び命令列生成処理(図15)が開始される。この段階では、代行処理管理表121に完全な制御命令列を含むエントリが登録されているため(ステップS1503:YES、ステップS1505:YES)、特別な処理を行うことなく命令列生成処理を終了する。ここでは、データに対する処理は実行されず、処理領域などの必要な情報が代行処理管理表121のエントリに保存される。
命令列生成処理に引き続き、パケット送信処理(図16)が実行される。この時点では、代行処理管理表121に完全な制御命令列を含むエントリが登録されているため(ステップS1602:YES、ステップS1604:YES)、第2演算部140に代行処理を依頼する(ステップS1605)。このとき、制御命令列とデータが格納されたアドレスとに加えて、命令列生成処理(図15)で保存された処理領域の情報を合わせて第2演算部140に通知する。
この通知を受けて、第2演算部140ではデータをローカルメモリ141にロードし、通知された領域に対して暗号処理を実行し、ネットワークへ送信する。このように、第2演算部140は、命令列生成処理(図15)の時点で実行していない暗号処理と送信ネットワーク処理とを連続して実行する。
このように、パケットを受信する場合だけでなく、パケットを送信する場合にも、代行処理とネットワーク処理とを連続して実行することができる。すなわち、他の演算部に処理を代行させる場合の処理負荷の増大を回避することが可能となる。
(変形例)
これまでの説明では、生成部135は、ネットワーク処理の制御命令列(Ins(Ns))と代行処理の制御命令列(Ins(Os))を機械的に結合することにより、両処理を連続して実行する制御命令列を生成していた。しかし、第2演算部140が、Ins(Ns)とIns(Os)とを機械的に結合した制御命令列により、処理Nsと処理Osとを連続して同一データに対して実行できるかは個々の実行環境に依存する。
第2演算部140が機械的に結合した制御命令列を実行できない場合は、以下のように表形式で表した制御命令列を用いるように構成してもよい。この変形例では、第2演算部140は、制御命令列を解釈して実行するプログラムローダーを備える。プログラムローダーは、処理ごとの制御命令列と、各処理の実行順序と、各処理の入力データおよび出力データのアドレスとを特定可能な情報を対応づけた制御命令列である実行コードアドレス表を利用する。
図17は、実行コードアドレス表のデータ構造の一例を示す図である。図17に示すように、実行コードアドレス表は、実行可能な個々の制御命令列を格納したアドレス(制御命令列格納アドレス)と、入力データを格納したアドレス(入力データ格納アドレス)と、出力データを格納すべきアドレス(出力データ格納アドレス)とを対応づけたエントリを複数記憶している。同図は、表の先頭のエントリから順に制御命令列を実行することを表す実行コードアドレス表の例を表している。エントリ内に、実行順序を表す順序情報を格納し、順序情報に従って制御命令列が実行されるように構成してもよい。
なお、同図では、最初のエントリの制御命令列の出力データを次のエントリの制御命令列の入力データとして利用することを示す情報を、最初のエントリの出力データ格納アドレス、および、次のエントリの入力データ格納アドレスに設定した例が示されている。すなわち、最初のエントリの出力データ格納アドレスにはPASS(2)が設定され、次のエントリの入力データ格納アドレスにはRECV(1)が設定されている。
PASS(n)は、出力データをn行目のエントリの制御命令列に対応する処理の入力データとして渡すことを示している。また、RECV(n)は、n行目のエントリの制御命令列に対応する処理の出力データを、入力データとして受け取ることを示している。この場合は、例えば予め定められたレジスタ等を介してデータを受け渡すように構成することができる。
なお、PASSやRECVを利用せず、入力データ格納アドレスや出力データ格納アドレスに、メインメモリ120のアドレスを記載するように構成してもよい。
同図は、ネットワーク処理Nsと代行処理Osを一つの処理にまとめ、第2演算部140にて実行させる場合の実行コードアドレス表の一例を示している。Addr(Ins(Ns))は、ネットワーク処理Nsの制御命令列Ins(Ns)が格納されたアドレスを意味する。また、Addr(Pkt)は、受信したパケットが格納されたアドレスを意味する。同様に、Addr(Ins(Os))およびAddr(Buf)は、それぞれ制御命令列Ins(Os)が格納されたアドレスおよび処理結果を格納するバッファのアドレスを意味する。
プログラムローダーが第2演算部140で実行されると、プログラムローダーは、実行コードアドレス表に記載された順番に従って制御命令列を実行する。プログラムローダーは、各制御命令列に対する入力データを入力データ格納アドレスからロードし、各制御命令列による処理結果である出力データを、出力データ格納アドレスに保存する。全てのエントリを実行するとプログラムローダーは処理を終了し、一連の代行処理が完了する。
なお、制御命令列を実行コードアドレス表の形式で生成する場合は、代行処理管理表121の制御命令列フィールドには、例えば、実行コードアドレス表を識別する表IDを設定する。図18は、このように構成された代行処理管理表121に格納されるデータのデータ構造の一例を示す図である。図18に示すように、この場合は、制御命令列フィールドに、図17のような実行コードアドレス表を識別する表IDを設定する。
また、制御命令列の生成方法は、複数の制御命令列を機械的に結合する方法、実行コードアドレス表のように表形式で生成する方法に限られるものではない。ネットワーク処理、および代行処理それぞれに対応する制御命令列を連続して実行可能な制御命令列を生成するものであれば、あらゆる方法を適用できる。
このように、第1の実施の形態にかかるメッセージ処理装置では、第1演算部で実行されるネットワーク処理に伴って第2演算部で実行される代行処理(特定処理)を検出し、ネットワーク処理と特定処理とを連続して実行する制御命令列を動的に生成して記憶部に保存し、それ以降に処理するパケットに対しては、保存した制御命令列を用いて第2演算部がネットワーク処理と特定処理とを連続して実行する。これにより、メインのプロセッサの負荷上昇を抑えるという本来の目的と達成するとともに、処理の複雑化やデータの移動に伴うオーバヘッドを削減することができる。
(第2の実施の形態)
第1の実施の形態では、ネットワーク処理と、関連する代行処理とを検出して動的に制御命令列を生成して利用していた。第2の実施の形態にかかるメッセージ処理装置は、各プロセスの要求に応じて事前に制御命令列を登録可能とし、事前に登録した制御命令列を用いて、第2演算部が複数の処理を連続して実行する。
図19は、第2の実施の形態にかかるメッセージ処理装置1900の構成を示すブロック図である。図19に示すように、メッセージ処理装置1900は、ネットワークI/F部110と、メインメモリ120と、第1演算部1930と、第2演算部140と、バス150と、を備えている。
第2の実施の形態では、第1演算部1930に受付部1938を追加したこと、および生成部1935の機能が第1の実施の形態と異なっている。その他の構成および機能は、第1の実施の形態にかかるメッセージ処理装置100の構成を表すブロック図である図1と同様であるので、同一符号を付し、ここでの説明は省略する。
受付部1938は、パケットを受信するプロセス、または送信するパケットを生成するプロセスから、パケットのフロー情報と、当該フロー情報で特定されるフローに属するパケットに対して実行する特定処理を識別する処理識別情報と、を含む、制御命令列の登録依頼を受け付ける。
生成部1935は、受け付けた登録依頼に含まれる処理識別情報で識別される特定処理と、ネットワーク処理とを連続して実行する制御命令列を生成する。
次に、このように構成された第2の実施の形態にかかるメッセージ処理装置1900による命令列生成処理について説明する。図20は、第2の実施の形態における命令列生成処理の全体の流れを示すフローチャートである。
なお、第1の実施の形態では、パケットの受信時または送信時に動的に制御命令列を生成するため、命令列生成処理が、パケット受信時(図4)とパケット送信時(図15)とで異なっていた。第2の実施の形態では、ネットワーク処理の実行前に、プロセスからの要求に応じて事前に制御命令列を生成するため、図20に示す命令列生成処理のみが実行される。
まず、受付部1938が、パケットを受信するプロセス、またはパケットを送信するプロセスから、制御命令列の登録依頼を受け付ける(ステップS2001)。登録依頼は、パケットのフロー情報と、パケットに対して施す特定処理を識別する処理識別情報とを含む。なお、IPアドレスやTCPポート番号、UDPポート番号などのように、通信を行うことで決定される情報については、フロー情報として通知しなくてもよい。
登録依頼が受け付けられた場合、生成部1935は、事前に用意してあるネットワーク処理に対応する制御命令列と、登録依頼に含まれる処理識別情報で識別される特定処理に対応する制御命令列と、付随する処理の制御命令列とを組み合わせて、複数の処理を連続して実行する制御命令列を生成する(ステップS2002)。
なお、受付部1938が、ネットワーク処理と、特定処理と、付随する処理との実行順序を表す順序情報をプロセスから受け付け、生成部1935が、受け付けた順序情報にしたがって各処理を実行する制御命令列を生成するように構成してもよい。
次に、プロセス検出部134が、登録依頼を送信したプロセスのプロセスIDを取得する(ステップS2003)。次に、生成部1935が、登録依頼に含まれるフロー情報と、生成した制御命令列と、検出されたプロセスIDとを対応づけたエントリを作成する(ステップS2004)。そして、保存部136が、作成されたエントリを代行処理管理表121に登録し(ステップS2005)、命令列生成処理を終了する。
次に、第2の実施の形態のパケット受信処理について説明する。図21は、第2の実施の形態におけるパケット受信処理の全体の流れを示すフローチャートである。
第1の実施の形態のパケット受信処理を表す図3と比較すると、図21では、パケット受信に起因する代行処理管理表121のエントリの作成処理(ステップS305からステップS307)が削除された点が異なっている。事前通知によって代行処理すべき内容が通知され、事前にエントリが作成されているため、パケット受信時にエントリを作成する必要がないためである。その他のステップは、図3と同様の処理なので、その説明を省略する。
次に、第2の実施の形態のパケット送信処理について説明する。図22は、第2の実施の形態におけるパケット送信処理の全体の流れを示すフローチャートである。
パケット受信処理と同様に、第1の実施の形態のパケット送信処理を表す図16と比較すると、図22では、エントリの作成処理(ステップS1607からステップS1609)が削除された点が異なっている。その他のステップは、図3と同様の処理なので、その説明を省略する。
次に、第2の実施の形態によるメッセージ処理の具体例について説明する。以下では、パケットを受信するネットワーク処理と、IPsec暗号処理とを代行する場合を例として説明する。IPsecに必要な暗号アルゴリズムの演算処理が予め第2演算部140によって代行されると決められているとする。
IPsecを適用するためには、通信する装置間でIPsec SAを事前に確立する。SAの情報はパケット処理部133に伝えられるため、この操作に合わせて命令列生成処理(図20)が実行される。具体的には、IPsec SAを構築する情報をフロー情報を含む登録依頼が通知されると(ステップS2001)、対応する制御命令列が作成される(ステップS2002)。そして、作成された制御命令列を含む代行処理管理表121のエントリが作成され登録される(ステップS2004、ステップS2005)。
この例では、作成される制御命令列は、事前に準備されていたネットワーク処理NsおよびN2sと、予め代行することが決まっていた暗号アルゴリズム処理Cryptとを連続して実行する「Ins(Ns)|Ins(Crypt)|Ins(N2s)」である。ここで、Nsは暗号アルゴリズム処理よりも前段階に実行されるネットワーク処理を表し、N2sは暗号アルゴリズム処理が完了した後に実行されるネットワーク処理を表す。
IPsec処理はネットワーク処理の途中に割り込む形になるため、この順序を維持した形で制御命令列を生成する必要がある。このため、代行すべき処理の前に行うネットワーク処理と、後に行うネットワーク処理とを特定するための情報を、フロー情報の通知と共に行ってもよい。このような情報が通知された場合は、生成部1935は、指定された順序を維持する形で制御命令列を生成する。
代行処理管理表121に対するエントリの追加が完了し、さらにSAが正しく確立されると、IPsecで暗号化されたパケットが受信できるようになる。以下に、確立したSAに対応するパケットを受信した場合を例として、第2の実施の形態のパケット受信処理の具体例について説明する。ここでは、図2に示すようなエントリが代行処理管理表121に追加されたことを前提とする。
IPsecで暗号化されたパケットがネットワークI/F部110に到着すると、割り込み信号が第1演算部1930に送られる。これを契機として、パケット受信処理(図21)が開始される。
まず、第1演算部1930は、割り込みハンドラ(割込処理部131)を起動して適切な処理を行う(ステップS2101)。その後、識別情報検出部132が、パケットのフロー情報を抽出し、抽出したフロー情報に対応する代行処理管理表121を検索する(ステップS2102、ステップS2103)。
ここでは、受信したパケットから得られるフロー情報は、先に確立したSAで特定されるフロー情報と同じであるものとする。この例では、SPIまで含めてフロー情報としているが、代行される処理の内容によってはSPIを特定しない形式でフロー情報を作成することも可能である。
識別情報検出部132は、受信したパケットから得られるフロー情報を含むエントリを代行処理管理表121から検索する(ステップS2103)。この例では、先のSA確立処理に伴う命令列生成処理で、同じフロー情報を持つエントリが作成されている。したがって、対応するエントリが検索され(ステップS2103:YES)、生成部1935が、同エントリに対する制御命令列の有無を確認する(ステップS2105)。この例では、事前の登録処理により、制御命令列が作られて登録されている。したがって、制御命令列が設定されていると判断され(ステップS2105:YES)、制御命令列に渡す情報の準備などの処理を行った後、制御命令列とそれらの情報とを第2演算部140に通知することで代行処理を依頼する(ステップS2106)。
第2の実施の形態では、このような処理が、確立したSAが無効になるまで繰り返される。なお、SAが無効になった場合は、登録を削除する処理により代行処理管理表121から対応するエントリが削除される。
次に、第2の実施の形態でパケットを送信する場合のメッセージ処理の具体例について説明する。この場合、命令列生成処理では、例えば、「Ins(N’s1)|Ins(Crypt’)|Ins(N’2s)」という制御命令列を生成する。ここで、処理N’s1は暗号処理を行う前の送信ネットワーク処理を表し、処理Crypt’は暗号処理を表し、N’2sは暗号処理を行った後の送信ネットワーク処理を表す。
なお、第1の実施の形態では、代行処理(SSLによる暗号化)が送信ネットワーク処理の前に実行されるため、制御命令列が生成された後では、プロセスが代行を依頼するタイミングで処理領域等の情報を保存するだけに留め、実際の処理はスキップしていた。一方、第2の実施の形態では、代行すべき処理が送信ネットワーク処理の中に入るため、処理領域を保存するなどの特別な処理は不要である。
また、第1の実施の形態で、Ins(C)なる制御命令列を追加する具体例について説明した。複数の制御命令列を結合する際に、このような汎用的な条件判断だけでなく、特定の処理に固有の条件判断が要求される場合がある。そのような場合には、第2の実施の形態を適用し、事前に複数の制御命令列を登録するように構成することで対応可能である。
このように、第2の実施の形態にかかるメッセージ処理装置では、各プロセスの要求に応じて事前に制御命令列を登録し、事前に登録した制御命令列を用いて、第2演算部が複数の処理を連続して実行することができる。これにより、第1の実施の形態と同様に、メインのプロセッサの負荷上昇を抑えつつ、処理の複雑化やデータの移動に伴うオーバヘッドを削減することができる。
第1または第2の実施の形態にかかるメッセージ処理装置で実行されるメッセージ処理プログラムは、インストール可能な形式又は実行可能な形式のファイルでCD−ROM(Compact Disk Read Only Memory)、フレキシブルディスク(FD)、CD−R(Compact Disk Recordable)、DVD(Digital Versatile Disk)等のコンピュータで読み取り可能な記録媒体に記録されて提供される。
また、第1または第2の実施の形態にかかるメッセージ処理装置で実行されるメッセージ処理プログラムを、インターネット等のネットワークに接続されたコンピュータ上に格納し、ネットワーク経由でダウンロードさせることにより提供するように構成してもよい。また、第1または第2の実施の形態にかかるメッセージ処理装置で実行されるメッセージ処理プログラムをインターネット等のネットワーク経由で提供または配布するように構成してもよい。
また、第1または第2の実施の形態のメッセージ処理プログラムを、ROM等に予め組み込んで提供するように構成してもよい。
第1または第2の実施の形態にかかるメッセージ処理装置で実行されるメッセージ処理プログラムは、上述した各部(割込処理部、識別情報検出部、パケット処理部、プロセス検出部、生成部、保存部、制御部)を含むモジュール構成となっており、実際のハードウェアとしてはCPU51(プロセッサ)が上記記憶媒体からメッセージ処理プログラムを読み出して実行することにより上記各部が主記憶装置上にロードされ、上述した各部が主記憶装置上に生成されるようになっている。
以上のように、本発明にかかる装置、方法およびプログラムは、複数の演算部を備えるマルチコアプロセッサなどを利用して、ネットワークを介して送受信するメッセージを処理する装置、方法、およびプログラムに適している。
第1の実施の形態にかかるメッセージ処理装置の構成を示すブロック図である。 代行処理管理表に格納されるデータのデータ構造の一例を示す図である。 第1の実施の形態におけるパケット受信処理の全体の流れを示すフローチャートである。 第1の実施の形態におけるパケット受信時の命令列生成処理の全体の流れを示すフローチャートである。 メッセージ処理装置のハードウェア構成図である。 メッセージ処理装置のハードウェア構成図である。 メッセージ処理装置のハードウェア構成図である。 1つの第1演算部と1つの第2演算部を用いて処理が実行される例を示す模式図である。 1つの第1演算部と2つの第2演算部を用いて処理が実行される例を示す模式図である。 1つの第1演算部とネットワークI/F部に備えられた第2演算部を用いて処理が実行される例を示す模式図である。 第1の実施の形態のメッセージ処理装置によるメッセージ処理の一例を示す模式図である。 代行処理管理表に記憶されたエントリの一例を示す図である。 代行処理管理表に記憶されたエントリの一例を示す図である。 メッセージ処理の概要を示すシーケンス図である。 第1の実施の形態におけるパケット送信時の命令列生成処理の全体の流れを示すフローチャートである。 第1の実施の形態におけるパケット送信処理の全体の流れを示すフローチャートである。 実行コードアドレス表のデータ構造の一例を示す図である。 代行処理管理表に格納されるデータのデータ構造の一例を示す図である。 第2の実施の形態にかかるメッセージ処理装置の構成を示すブロック図である。 第2の実施の形態における命令列生成処理の全体の流れを示すフローチャートである。 第2の実施の形態におけるパケット受信処理の全体の流れを示すフローチャートである。 第2の実施の形態におけるパケット送信処理の全体の流れを示すフローチャートである。
符号の説明
100 メッセージ処理装置
110 ネットワークI/F部
120 メインメモリ
121 代行処理管理表
130 第1演算部
131 割込処理部
132 識別情報検出部
133 パケット処理部
134 プロセス検出部
135 生成部
136 保存部
137 制御部
140 第2演算部
141 ローカルメモリ
142 演算処理部
150 バス
500、600、700 メッセージ処理装置
610 ネットワークI/F部
760 マルチコアプロセッサ
1900 メッセージ処理装置
1930 第1演算部
1935 生成部
1938 受付部

Claims (14)

  1. 処理内容を定めた制御命令列を実行可能な第1演算部と、
    前記第1演算部と同一または異なる制御命令列を実行可能な第2演算部と、
    メッセージの種類を識別する識別情報と、前記メッセージの送信または受信に関する処理であるネットワーク処理および前記ネットワーク処理に関連して前記メッセージに対して実行される特定処理を連続して実行する制御命令列と、を対応づけた処理情報を記憶する記憶部と、を備え、
    前記第1演算部は、
    前記メッセージから前記識別情報を検出する識別情報検出部と、
    検出された前記識別情報に対応する制御命令列を前記記憶部から取得し、取得した制御命令列を実行するように前記第2演算部を制御する制御部と、
    を備えたことを特徴とするメッセージ処理装置。
  2. 前記第1演算部は、
    前記ネットワーク処理で処理する前記メッセージを入力するプロセスおよび前記ネットワーク処理で処理する前記メッセージを出力するプロセスの少なくとも一方を検出する第1プロセス検出部と、
    実行された前記特定処理を検出し、検出した前記特定処理の実行を依頼したプロセスを検出する第2プロセス検出部と、
    前記第1プロセス検出部が検出したプロセスと、前記第2プロセス検出部が検出したプロセスとが一致する場合に、前記ネットワーク処理および検出した前記特定処理を連続して実行する前記制御命令列を生成する生成部と、
    前記識別情報検出部によって検出された前記識別情報と、前記生成部によって生成された前記制御命令列とを対応づけた前記処理情報を前記記憶部に保存する保存部と、をさらに備えたこと、
    を特徴とする請求項1に記載のメッセージ処理装置。
  3. 前記生成部は、さらに、前記ネットワーク処理および検出した前記特定処理の実行順序を判定し、前記ネットワーク処理および検出した前記特定処理を、判定した実行順序で実行する前記制御命令列を生成すること、
    を特徴とする請求項2に記載のメッセージ処理装置。
  4. 前記第1演算部は、
    前記ネットワーク処理で処理する前記メッセージを入力するプロセスおよび前記ネットワーク処理で処理する前記メッセージを出力するプロセスの少なくとも一方を表す第1プロセスから、前記識別情報と、前記第1プロセスが実行を依頼する前記特定処理を識別する処理識別情報と、を含む前記処理情報の登録依頼を受け付ける受付部と、
    前記ネットワーク処理、および、受け付けた前記登録依頼に含まれる前記処理識別情報の前記特定処理を連続して実行する前記制御命令列を生成する生成部と、
    受け付けた前記登録依頼に含まれる前記識別情報と、生成された前記制御命令列とを対応づけた前記処理情報を前記記憶部に保存する保存部と、をさらに備えたこと、
    を特徴とする請求項1に記載のメッセージ処理装置。
  5. 前記受付部は、さらに、前記ネットワーク処理および検出した前記特定処理の実行順序を表す順序情報を受け付け、
    前記生成部は、前記ネットワーク処理および受け付けた前記登録依頼に含まれる前記処理識別情報の前記特定処理を、受け付けた前記順序情報が表す実行順序で実行する前記制御命令列を生成すること、
    を特徴とする請求項4に記載のメッセージ処理装置。
  6. 前記記憶部は、前記識別情報と、前記ネットワーク処理、予め定められた判定条件に基づいて前記特定処理の実行可否を判定する判定処理、および前記特定処理を連続して実行する前記制御命令列と、を対応づけた前記処理情報を記憶し、
    前記第2演算部は、前記判定処理の制御命令列を実行して前記特定処理が実行可能と判定されたときに、前記特定処理の制御命令列を実行すること、
    を特徴とする請求項1に記載のメッセージ処理装置。
  7. 前記記憶部は、前記識別情報と、前記ネットワーク処理、前記特定処理の実行に必要なメッセージのデータサイズである前記判定条件に基づいて前記特定処理の実行可否を判定する前記判定処理、および前記特定処理を連続して実行する前記制御命令列と、を対応づけた前記処理情報を記憶し、
    前記第2演算部は、前記ネットワーク処理によって処理された前記メッセージのデータサイズが、前記特定処理の実行に必要なメッセージのデータサイズを表す予め定められた閾値より大きい場合に前記特定処理が実行可能であると判定すること、
    を特徴とする請求項6に記載のメッセージ処理装置。
  8. 前記制御部は、さらに前記閾値を前記第2演算部に通知し、
    前記第2演算部は、前記ネットワーク処理によって処理された前記メッセージのデータサイズが、通知された前記閾値より大きい場合に前記特定処理が実行可能と判定すること、
    を特徴とする請求項7に記載のメッセージ処理装置。
  9. 前記制御部は、前記特定処理の実行を依頼するプロセスに対して渡されたメッセージのデータサイズを前記閾値として前記第2演算部に通知すること、
    を特徴とする請求項8に記載のメッセージ処理装置。
  10. 前記識別情報は、前記メッセージに含まれる送信元アドレス、宛先アドレス、送信元ポート番号、宛先ポート番号、適用するプロトコルを表すプロトコル情報、および前記プロトコルで使用するパラメータを識別する識別子の少なくとも1つであること、
    を特徴とする請求項1に記載のメッセージ処理装置。
  11. 前記記憶部は、前記ネットワーク処理を実行する第1命令列のアドレスと前記特定処理を実行する第2命令列のアドレスと前記第1命令列および前記第2命令列の実行順序を表す順序情報とを含む前記制御命令列と、前記識別情報とを対応づけた前記処理情報を記憶し、
    前記第2演算部は、前記制御命令列に含まれる前記第1命令列のアドレスから前記第1命令列を取得し、前記制御命令列に含まれる前記第2命令列のアドレスから前記第2命令列を取得し、前記制御命令列に含まれる前記順序情報が表す実行順序で、取得した前記第1命令列および取得した前記第2命令列を実行すること、
    を特徴とする請求項1に記載のメッセージ処理装置。
  12. 前記記憶部は、前記ネットワーク処理の入力データのアドレスを表す第1入力アドレスと、前記ネットワーク処理の出力データのアドレスを表す第1出力アドレスと、前記特定処理の入力データのアドレスを表す第2入力アドレスと、前記特定処理の出力データのアドレスを表す第2出力アドレスと、をさらに含む前記制御命令列と、前記識別情報とを対応づけた前記処理情報を記憶し、
    前記第2演算部は、前記第1入力アドレスの入力データに対して前記第1命令列を実行し、処理結果である出力データを前記第1出力アドレスに出力し、前記第2入力アドレスの入力データに対して前記第2命令列を実行し、処理結果である出力データを前記第2出力アドレスに出力すること、
    を特徴とする請求項11に記載のメッセージ処理装置。
  13. メッセージ処理装置で実行されるメッセージ処理方法であって、
    前記メッセージ処理装置は、
    処理内容を定めた制御命令列を実行可能な第1演算部と、
    前記第1演算部と同一または異なる制御命令列を実行可能な第2演算部と、
    メッセージの種類を識別する識別情報と、前記メッセージの送信または受信に関する処理であるネットワーク処理および前記ネットワーク処理に関連して前記メッセージに対して実行される特定処理を連続して実行する制御命令列と、を対応づけた処理情報を記憶する記憶部と、を備え、
    前記第1演算部が、前記メッセージから前記識別情報を検出する識別情報検出ステップと、
    前記第1演算部が、検出された前記識別情報に対応する制御命令列を前記記憶部から取得し、取得した制御命令列を実行するように前記第2演算部を制御する制御ステップと、
    を備えたことを特徴とするメッセージ処理方法。
  14. メッセージ処理装置で実行されるメッセージ処理プログラムであって、
    前記メッセージ処理装置は、
    処理内容を定めた制御命令列を実行可能な第1演算部と、
    前記第1演算部と同一または異なる制御命令列を実行可能な第2演算部と、
    メッセージの種類を識別する識別情報と、前記メッセージの送信または受信に関する処理であるネットワーク処理および前記ネットワーク処理に関連して前記メッセージに対して実行される特定処理を連続して実行する制御命令列と、を対応づけた処理情報を記憶する記憶部と、を備え、
    前記第1演算部を、
    前記メッセージから前記識別情報を検出する識別情報検出部と、
    検出された前記識別情報に対応する制御命令列を前記記憶部から取得し、取得した制御命令列を実行するように前記第2演算部を制御する制御部と、
    として機能させるメッセージ処理プログラム。
JP2008075206A 2008-03-24 2008-03-24 メッセージを処理する装置、方法およびプログラム Pending JP2009230476A (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP2008075206A JP2009230476A (ja) 2008-03-24 2008-03-24 メッセージを処理する装置、方法およびプログラム
US12/372,008 US20090240925A1 (en) 2008-03-24 2009-02-17 Device, method, and computer program product that process message

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2008075206A JP2009230476A (ja) 2008-03-24 2008-03-24 メッセージを処理する装置、方法およびプログラム

Publications (1)

Publication Number Publication Date
JP2009230476A true JP2009230476A (ja) 2009-10-08

Family

ID=41090033

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2008075206A Pending JP2009230476A (ja) 2008-03-24 2008-03-24 メッセージを処理する装置、方法およびプログラム

Country Status (2)

Country Link
US (1) US20090240925A1 (ja)
JP (1) JP2009230476A (ja)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2012023617A (ja) * 2010-07-15 2012-02-02 Furukawa Electric Co Ltd:The データ中継装置及び暗号化通信方法
JP2015511434A (ja) * 2012-02-21 2015-04-16 インターナショナル・ビジネス・マシーンズ・コーポレーションInternational Business Machines Corporation ネットワーク付属のステートレス・セキュリティ・オフロード・デバイスを用いるネットワーク・ノード

Families Citing this family (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102461095B (zh) * 2009-04-02 2016-03-23 诺基亚通信公司 消息通知
JP4901915B2 (ja) * 2009-06-18 2012-03-21 株式会社東芝 映像処理装置、処理ユニット及びipアドレス管理方法
US10909251B2 (en) * 2018-08-24 2021-02-02 Micron Technology, Inc. Modification of a segment of data based on an encryption operation

Family Cites Families (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5598410A (en) * 1994-12-29 1997-01-28 Storage Technology Corporation Method and apparatus for accelerated packet processing
JP3643507B2 (ja) * 1999-09-20 2005-04-27 株式会社東芝 パケット処理装置及びパケット処理方法
US7460473B1 (en) * 2003-02-14 2008-12-02 Istor Networks, Inc. Network receive interface for high bandwidth hardware-accelerated packet processing

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2012023617A (ja) * 2010-07-15 2012-02-02 Furukawa Electric Co Ltd:The データ中継装置及び暗号化通信方法
JP2015511434A (ja) * 2012-02-21 2015-04-16 インターナショナル・ビジネス・マシーンズ・コーポレーションInternational Business Machines Corporation ネットワーク付属のステートレス・セキュリティ・オフロード・デバイスを用いるネットワーク・ノード

Also Published As

Publication number Publication date
US20090240925A1 (en) 2009-09-24

Similar Documents

Publication Publication Date Title
US10581884B2 (en) Channel data encapsulation system and method for use with client-server data channels
US8705514B2 (en) Apparatus for controlling a transfer destination of a packet originating from a virtual machine
US9614812B2 (en) Control methods and systems for improving virtual machine operations
WO2019184164A1 (zh) 自动部署Kubernetes从节点的方法、装置、终端设备及可读存储介质
CN106790221B (zh) 一种英特网协议安全IPSec协议加密方法和网络设备
EP1498822A2 (en) State migration in multiple NIC RDMA enabled devices
WO2011096307A1 (ja) プロキシ装置とその動作方法
US20140082180A1 (en) Information processor apparatus, information processing method, and recording medium
US20060206699A1 (en) Network boot system
JP2009230476A (ja) メッセージを処理する装置、方法およびプログラム
JP5094482B2 (ja) 処理装置及びその処理方法
US9015438B2 (en) System and method for achieving enhanced performance with multiple networking central processing unit (CPU) cores
US20100169271A1 (en) File sharing method, computer system, and job scheduler
US20080130642A1 (en) Hardware device and method for transmitting network protocol packet
US20160261719A1 (en) Information processing system, control program, and control method
RU2635217C2 (ru) Способ обработки данных маршрута подсети и оборудование для направления сообщений
US11228657B2 (en) Hybrid proxying with user space hold
JP6867025B2 (ja) 通信システム、管理装置、端末装置、通信方法、及びプログラム
JP2008276322A (ja) 情報処理装置、情報処理システムおよび情報処理方法
JP2009200632A (ja) 中継装置、中継方法および中継プログラム
JP2009055134A (ja) 通信制御装置、通信制御方法及び通信制御プログラム
KR101577034B1 (ko) 소프트웨어적인 네트워크 부가기능 추가가 용이한 멀티코어 기반의 toe 시스템 및 그 제어 방법
US20220158868A1 (en) Setting apparatus, communication system, setting method, and program
JPH11110365A (ja) ネットワーク計算機システム、該システムで用いる計算機、および該システムに係る方法
US10397029B2 (en) Relay apparatus