説明

通信制御装置、通信制御方法及び通信制御プログラム

【課題】プロセッサの処理負担を軽減させるとともに様々なプロトコルを使用することができる。
【解決手段】送信データに対して、所定のプロトコルで送信するためのプロトコル処理を行うと共に、当該送信データを前記所定のプロトコルで送信を行うTOEと、送信データに対して、ソケットからの要求に従ったプロトコル処理を行うプロトコル解析処理部と、プロトコル処理が行われた送信データを送信するネットワークデバイスと、ソケットからの送信データの送信要求が、TOEでプロトコル処理可能な所定のプロトコルを用いた送信であるか否かを判断するプロトコル判断部と、所定のプロトコルを用いた送信であると判断された場合に、送信データをTOEに対して受け渡すTOE受渡部と、所定のプロトコル以外と判断された場合に、送信データをプロトコル層に対して受け渡すプロトコル層受渡部と、を備える。

【発明の詳細な説明】
【技術分野】
【0001】
本発明は、TOEを用いて通信制御を行う通信制御装置、通信制御方法及び通信制御プログラムに関するものである。
【背景技術】
【0002】
従来から、インターネットを含むネットワーク環境において、ネットワークのハイスピード化及び複雑化が進む傾向にある。このような傾向になるに従い、当該ネットワーク環境で使用されるネットワークサーバでは、本来目的とするデータ処理以外に、ネットワーク経由のデータを送受信するための処理が多くなり、処理負担が大きくなる傾向にある。
【0003】
近年、このネットワークサーバにおけるネットワーク処理の負荷低減するために、TOE(TCP/IPオフロードエンジン)という技術が提案されている。このTOEという技術とは、CPUに対して高い負荷をかけるネットワークプロトコル処理及びネットワークプロトコルのチェックサム処理等をハードウェア化するものである。そして、当該ハードウェアがネットワーク処理の一部又は全部を行うことで、ネットワークサーバのCPUの負荷を低減するものである。
【0004】
例えば、特許文献1に記載された技術では、ユーザからの要求を処理するホストプロセッサの他に、TCPプロトコル処理をオフロード可能とするプロセッサを備えたサーバ装置が提案されている。
【0005】
このようにTOEを用いてハードウェア化を行った場合、ネットワークの階層モデルは、図16に示すような構造となる。図16に示すように、ソケット層より下は、ハードウェアにより実現された一つの層となっている。
【0006】
このようなTOEの技術は、ハードウェア化しているために、既存のプロトコル層のプロトコルを全てサポートすることは現実的ではない。このため、TOEは、現在のところTCP、UDP、IP及びICMPのプロトコルのみサポートしている。これらプロトコルの処理を行う場合には、ハードウェアオフロードにより、CPUの処理負担を軽減させることができる。
【0007】
【特許文献1】特開2005−316629号公報
【発明の開示】
【発明が解決しようとする課題】
【0008】
しかしながら、現在のPCアーキテクチャにおいて、ネットワークを通信する際に使用するプロトコルは、上述したプロトコルだけではない。例えば、OSにNetBSDを使用する場合、AppleTalk(登録商標)など様々なプロトコルがサポートされている。
【0009】
このように、NetBSDカーネルで、様々なプロトコルがサポート可能なのは、ネットワークの階層モデルが、ネットワークプログラムの下に、ソケット層、プロトコル層、インターフェース層及びネットワークデバイスで構成されると共に、各階層がソフトウェアにより実現されているためである。
【0010】
つまり、TOEを使用した装置では、ハードウェア的に結線されたネットワークデバイスを使用することでCPUの処理負担を軽減させることはできるが、このために様々なネットワークプロトコルを使用できないという問題がある。
【0011】
本発明は、上記に鑑みてなされたものであって、プロセッサの処理負担を軽減させるとともに様々なプロトコルを使用することができる通信制御装置、通信制御方法及び通信制御プログラムを提供することを目的とする。
【課題を解決するための手段】
【0012】
上述した課題を解決し、目的を達成するために、本発明にかかる通信制御装置は、送信データに対して、所定のプロトコルで送信するためのプロトコル処理を行うと共に、当該送信データを前記所定のプロトコルで送信を行う、ハードウェア結線された回路であるハードウェア通信デバイス制御部と、送信データに対して、ネットワークプログラム毎に割り当てられるソケットからの要求に従ったプロトコル処理を行う、ソフトウェアで実現されたプロトコル処理部と、前記プロトコル処理部により前記プロトコル処理が行われた前記送信データを送信する通信デバイス制御部と、前記ソケットからの送信データの送信要求が、前記ハードウェア通信デバイス制御部でプロトコル処理可能な前記所定のプロトコルを用いた送信であるか否かを判断するプロトコル判断部と、前記所定のプロトコルを用いた送信であると判断された場合に、前記ソケットから送信要求された前記送信データを、前記ハードウェア送信デバイス制御部に対して受け渡すハードウェアデバイス受渡部と、前記所定のプロトコル以外と判断された場合に、前記ソケットから送信要求された前記送信データを、前記プロトコル処理部に対して受け渡すプロトコル受渡部と、を備える。
【0013】
また、本発明にかかる通信制御装置は、外部のネットワークから受信データを受信する制御を行うと共に、受信した前記受信データを所定のプロトコルで解析処理可能か否か判断し、解析可能と判断した場合に前記所定のプロトコルによる解析処理し、ソケットに対してプロトコル解析処理後の前記受信データを受け渡す、ハードウェア結線された回路であるハードウェア通信デバイス制御部と、前記ハードウェア通信デバイス制御部で前記所定のプロトコルで解析処理可能ではないと判断した場合に前記受信データを取得するハードウェア通信インターフェース部と、前記ハードウェア通信インターフェース部が取得した前記受信データに対してプロトコル解析処理し、ソケットに対してプロトコル解析処理後の前記受信データを受け渡す、ソフトウェアで実現可能なプロトコル処理部と、を備えることを特徴とする。
【0014】
また、本発明にかかる通信制御方法は、ネットワークプログラム毎に割り当てられるソケットからの送信データの送信要求が、ハードウェア結線された回路であるハードウェア送信デバイス制御部でプロトコル処理可能な所定のプロトコルを用いた送信であるか否かを判断するプロトコル判断ステップと、前記所定のプロトコルを用いた送信であると判断された場合に、前記ソケットから送信要求された前記送信データを、前記ハードウェア送信デバイス制御部に対して受け渡すハードウェアデバイス受渡ステップと、前記ハードウェア通信デバイス制御部が、送信データに対して、前記所定のプロトコルで送信するためのプロトコル処理を行うと共に、当該送信データを前記所定のプロトコルで送信を行うハードウェア通信デバイス制御ステップと、前記プロトコル判断ステップにより前記所定のプロトコル以外と判断された場合に、前記ソケットから送信要求された前記送信データを、プロトコル処理部に対して受け渡すプロトコル受渡ステップと、前記プロトコル処理部が、前記送信データに対して、前記ソケットからの要求に従ったプロトコル処理を行うプロトコル処理ステップと、前記プロトコル処理が行われた前記送信データを送信する通信デバイス制御ステップと、を有することを特徴とする。
【0015】
また、本発明にかかる通信制御方法は、ハードウェア結線された回路であるハードウェア通信デバイス制御部が、外部のネットワークから受信データを受信する制御を行うと共に、受信した前記受信データを所定のプロトコルで解析処理可能か否か判断し、解析可能と判断した場合に前記所定のプロトコルによる解析処理し、ソケットに対してプロトコル解析処理後の前記受信データを受け渡すハードウェア通信デバイス制御ステップと、前記ハードウェア通信デバイス制御ステップで前記所定のプロトコルで解析処理可能ではないと判断した場合に前記受信データを取得するハードウェア通信インターフェースステップと、前記ハードウェア通信インターフェースステップにより取得された前記受信データに対してプロトコル解析処理し、ソケットに対してプロトコル解析処理後の前記受信データを受け渡すプロトコル処理ステップと、を備えることを特徴とする。
【0016】
また、本発明にかかる通信制御プログラムは、ネットワークプログラム毎に割り当てられるソケットからの送信データの送信要求が、ハードウェア結線された回路であるハードウェア送信デバイス制御部でプロトコル処理可能な所定のプロトコルを用いた送信であるか否かを判断するプロトコル判断ステップと、前記所定のプロトコルを用いた送信であると判断された場合に、前記ソケットから送信要求された前記送信データを、前記ハードウェア送信デバイス制御部に対して受け渡すハードウェアデバイス受渡ステップと、前記ハードウェア通信デバイス制御部が、送信データに対して、前記所定のプロトコルで送信するためのプロトコル処理を行うと共に、当該送信データを前記所定のプロトコルで送信を行うハードウェア通信デバイス制御ステップと、前記プロトコル判断ステップにより前記所定のプロトコル以外と判断された場合に、前記ソケットから送信要求された前記送信データを、プロトコル処理部に対して受け渡すプロトコル受渡ステップと、前記プロトコル処理部が、前記送信データに対して、前記ソケットからの要求に従ったプロトコル処理を行うプロトコル処理ステップと、前記プロトコル処理が行われた前記送信データを送信する通信デバイス制御ステップと、をコンピュータに実行させる。
【0017】
また、本発明にかかる通信制御プログラムは、ハードウェア結線された回路であるハードウェア通信デバイス制御部が、外部のネットワークから受信データを受信する制御を行うと共に、受信した前記受信データを所定のプロトコルで解析処理可能か否か判断し、解析可能と判断した場合に前記所定のプロトコルによる解析処理し、ソケットに対してプロトコル解析処理後の前記受信データを受け渡すハードウェア通信デバイス制御ステップと、前記ハードウェア通信デバイス制御ステップで前記所定のプロトコルで解析処理可能ではないと判断した場合に前記受信データを取得するハードウェア通信インターフェースステップと、前記ハードウェア通信インターフェースステップにより取得された前記受信データに対してプロトコル解析処理し、ソケットに対してプロトコル解析処理後の前記受信データを受け渡すプロトコル処理ステップと、をコンピュータに実行させる。
【発明の効果】
【0018】
本発明によれば、ハードウェア通信デバイス制御部でプロトコル処理と所定のプロトコルで送信を行うことでプロセッサの処理負担を軽減させるとともに、ソフトウェアでプロトコル処理を行うことで様々なプロトコルを使用可能という効果を奏する。
【0019】
本発明によれば、ハードウェア通信デバイス制御部でプロトコル解析処理と所定のプロトコルで受信を行うことでプロセッサの処理負担を軽減させるとともに、ソフトウェアでプロトコル解析処理を行うことで様々なプロトコルを使用可能という効果を奏する。
【発明を実施するための最良の形態】
【0020】
以下に添付図面を参照して、この発明にかかる通信制御装置、通信制御方法及び通信制御プログラムの最良な実施の形態を詳細に説明する。なお、以下に示す実施の形態では通信制御装置を情報処理装置に適用した例について説明する。
【0021】
図1は、実施の形態にかかる情報処理装置100のハードウェア構成を示した図である。図1に示すように情報処理装置100は、CPU101と、ROM102と、RAM103と、HDD104と、TOE105と、シリアル回線I/F106と、無線LAN_I/F107と、USB_I/F108とを備えており、通常のコンピュータを利用したハードウェア構成となっている。
【0022】
そして、ROM102又はHDD104に格納されたプログラムが、RAM103上にロードされる。そして、CPU101がロードされたプログラムを用いて処理を行うことになる。
【0023】
このCPU101は、当該プログラムを用いて、シリアル回線I/F106、無線LAN_I/F107及びUSB_I/F108を使用した通信制御を行う。
【0024】
TOE105に用いられている技術は、CPUに対して高い負荷をかけるネットワークプロトコル処理及びネットワークプロトコルのチェックサム処理等をハードウェア化するものである。そして、当該ハードウェアがネットワーク処理の一部又は全部を行うことで、CPU101の負荷を低減する。
【0025】
TOE105は、有線LAN_I/F109を備え、有線LAN_I/F109を使用した通信制御を行うと共に、受信したデータをハードウェアで所定のプロトコルの解析をした後、例えばRAM103に格納する。また、TOE105では、有線LAN_I/F109から複数のネットワークデバイス(以下、TOEネットワークデバイスと称す)が接続されていることを想定している。
【0026】
また、TOE105は、TCP/UDP/ICMP/IP以外のプロトコルのデータを受信した場合、これを検知し、受信したデータと共に外部に処理を要求する機能を持つものとする。また、有線LAN_I/F109を介して接続されるTOEネットワークデバイスは、TOEでプロトコル解析を行う構成以外から、直接送信データを受信できる機構を備えているものとする。
【0027】
このように、本実施の形態にかかる情報処理装置100においては、TOE105による通信制御と、シリアル回線I/F106、無線LAN_I/F107及びUSB_I/F108と、による通信制御とが行われる。次に情報処理装置100のソフトウェア構成について説明する。
【0028】
図2は情報処理装置100のネットワークをレイヤー構造で示した図である。図2に示すように、情報処理装置100は、ユーザアプリケーション層201、ソケット層202、ラッパー層203と、プロトコル層204と、インターフェース層205と、ネットワークデバイス層206と、TOEインターフェース層207と、TOE208とを備えている。
【0029】
情報処理装置100では、ソケット層202、プロトコル層204、インターフェース層205について、従来から使用されているものをほぼ流用可能とする。これにより、広範に普及しているOSのカーネルに実装されたネットワーク処理を可能とする。そして、情報処理装置100では、新規にラッパー層203及びTOEインターフェース層207を追加することで、従来のソフトウェアによるネットワーク処理と、TOE208によるハードウェアオフロードとの共存を可能としている。
【0030】
ユーザアプリケーション層201は、利用者が使用可能なネットワークプログラム211a〜cを備える。そして、各ネットワークプログラム211a〜cは、通信を行う際に後述するソケット層202に対して、通信処理を要求する。
【0031】
ソケット層202は、ネットワーク接続に関する情報をまとめたディスクリプタ(記述子)であるソケット212a〜cを保持する層である。ソケット層202はユーザアプリケーション層201のネットワークプログラム211a〜cに対し、プロトコル層204へのインターフェースを隠蔽し、ネットワーク接続のサービスのエンドポイントを提供する。
【0032】
ソケット212a〜cは、ユーザアプリケーション層201のネットワークプログラム211a〜c毎に一つ以上作成される。また、ソケットは作成される際、通信に用いるプロトコルが設定される。このようにして、ソケット212a〜cは、上述したネットワークプログラム211a〜cとの関連付けと、送受信の対象となるアドレス、送受信に用いるプロトコル情報、送受信するデータに関する情報、送受信に用いるルーティング情報を保持する。そして、ソケット212a〜cは、ネットワークから所定のIPアドレスへの送信する指示や、所定のIPアドレスからの受信待ちする指示を受け付けた場合に、後述するラッパー層203に、当該指示を送信する。そして、送信先のラッパー層203からは、各ソケット212a〜cが保持しているプロトコル情報又はIPアドレス等を参照可能とする。
【0033】
なお、このソケット層202で使用されるソケットAPIはネットワークプログラミングのデファクトスタンダードとなっており、OSを問わず使用可能である。
【0034】
ラッパー層203は、プロトコル判断部221と、送信側TOEオブジェクト特定部222と、プロトコル層受渡部234と、TOE受渡部235と、を備えると共に、ソケット層202に対して既存のI/Fを保持している。また、ラッパー層203は、ソケット層202からデータの送信要求が行われた場合に、当該データの送信に使用するプロトコルに応じて、プロトコル層204にプロトコル処理を要求するか、TOE208にプロトコル処理を要求するか切り替えを行う。
【0035】
プロトコル判断部221は、ソケット212a〜cから送信要求が行われた場合、当該ソケット212a〜cが保持するプロトコル情報から、TOE208でプロトコル処理可能か否か判断する。
【0036】
プロトコル層受渡部234は、プロトコル判断部221がTOE208でプロトコル処理可能ではないと判断した場合、プロトコル層204に送信対象であるデータを受け渡すと共に、当該データのプロトコル処理を要求する。
【0037】
一方、プロトコル判断部221で、TOE208でプロトコル処理可能であると判断した場合、さらに送信側TOEオブジェクト特定部222が、TOEインターフェース管理テーブル229を使用してTOEインターフェースオブジェクト231が保持する情報を順に参照して、TOE208内のネットワークデバイス233a〜bでデータの送信が可能か否か判断する。なお、詳細な処理については後述する。
【0038】
TOE受渡部235は、送信側TOEオブジェクト特定部222がTOE208内のネットワークデバイス233a〜bでデータの送信が可能と判断した場合、TOE受渡部235に送信対象であるデータを受け渡すと共に、当該データのプロトコル処理を要求する。
【0039】
TOEインターフェース管理テーブル229は、後述するTOEインターフェースオブジェクト231を特定するための情報(オブジェクトのポインタ)が格納される。なお、本実施の形態では、この各オブジェクトを特定するための情報としてポインタを利用したが、ハッシュなど他の情報を用いても良い。つまり、当該TOEインターフェース管理テーブル229を参照することで、TOEインターフェースオブジェクト231にアクセスすることが可能になる。また、このTOEインターフェース管理テーブル229は、ラッパー層203及びTOEインターフェース層207から参照可能にする。
【0040】
プロトコル層204は、プロトコル解析処理部223と、プロトコル別受信バッファ224と、オブジェクト特定部225とを備え、上位に存在するソケット層202とのデータの送受信制御、下位に存在するインターフェース層205とのデータの送受信制御を行う。また、プロトコル層204により、ソケット層202及びインターフェース層207は完全に分離され、互いに意識することなく処理を行うことができる。
【0041】
プロトコル別受信バッファ224は、インターフェース層205又はTOEインターフェース層207から受信した受信データを、プロトコル別に一時的に記憶する。
【0042】
プロトコル解析処理部223は、通信データを送信するためのプロトコル処理を行う。プロトコル処理とは、任意のプロトコルで通信データを送信するために、当該通信データから、当該プロトコルのフォーマットのよるパケットを生成する等の処理をいう。
【0043】
また、プロトコル解析処理部223は、受信したデータに対してプロトコル解析処理を行う。このプロトコル解析処理とは、プロトコル別受信バッファ224に記憶されたデータ(パケット)を読み出して、当該プロトコルのフォーマットによるパケットから、格納されていたデータを取得する等の処理をいう。
【0044】
また、プロトコル解析処理部223においてプロトコル処理又はプロトコル解析の可能なプロトコルとしては、どのようなプロトコルであっても良く、例えば現在NetBSDでサポートされているあらゆるプロトコル等でも良い。
【0045】
オブジェクト特定部225は、プロトコル処理を行った後のデータを引き渡すインターフェースオブジェクト227又はTOEインターフェースオブジェクト231を特定する。オブジェクト特定部225は、インターフェース管理テーブル226を参照して、各インターフェースオブジェクト227又はTOEインターフェースオブジェクト231にアクセスして、送信制御が可能なインターフェースオブジェクト227又はTOEインターフェースオブジェクト231を特定する。
【0046】
また、インターフェース管理テーブル226において、インターフェースオブジェクト227のポインタ及びTOEインターフェースオブジェクト231のポインタが区別することなく格納されている。このため、オブジェクト特定部225は、TOE208側のTOEネットワークデバイス233a〜b又はネットワークデバイス層206のネットワークデバイス228a〜cを指し示すオブジェクトであるかを認識する必要なく、これらインターフェースオブジェクト227又はTOEインターフェースオブジェクト231にアクセスできる。
【0047】
そして、プロトコル層204から、オブジェクト特定部225により特定されたインターフェースオブジェクト227又はTOEインターフェースオブジェクト231の、(TOE)ネットワークデバイスにデータを引き渡すためのインターフェースが呼び出される。これにより、データを(TOE)ネットワークデバイスに引き渡すことができる。なお、インターフェースオブジェクト227及びTOEインターフェースオブジェクト231の引き渡すためのインターフェースは共通として、デバイスの差異は隠蔽されているものとする。
【0048】
インターフェース層205は、下位のネットワークデバイス層206と、プロトコル層204との間に存在する層である。インターフェース層205は、ネットワークデバイス層206が備えているハードウェアを抽象化することで、具体的なハードウェアを隠蔽し、ハードウェア毎にAPIを提供する。
【0049】
また、インターフェース層205は、インターフェースオブジェクト227を備えている。当該インターフェースオブジェクト227は、物理的なネットワークデバイス毎に1対1に割り当てられているメモリオブジェクトである。また、インターフェースオブジェクト227は、当該ネットワークデバイスのハードウェア情報、アクセス先のアドレス情報及び当該ネットワークデバイスにアクセスするためのインターフェースを備えている。これにより、当該インターフェースオブジェクト227を操作することで、割り当てられたネットワークデバイスを制御することができる。
【0050】
また、プロトコル層204とインターフェース層205との間には、インターフェース管理テーブル226が備えられている。このインターフェース管理テーブル226には、インターフェースオブジェクト227及び後述するTOEインターフェースオブジェクト231を特定するための情報(オブジェクトのポインタ)が格納されている。なお、本実施の形態では、この各オブジェクトを特定するための情報としてポインタを利用したが、ハッシュなど他の情報を用いても良い。このインターフェース管理テーブル226は、プロトコル層204及びインターフェース層205から参照可能とする。
【0051】
図3は、インターフェース管理テーブル226とインターフェースオブジェクト227との関連を示した説明図である。図3に示すように、インターフェース管理テーブル226に登録されたオブジェクトのポインタを参照することで、インターフェースオブジェクトを特定できる。さらに、インターフェースオブジェクトが生成、削除が行われる度に、インターフェース層205はインターフェース管理テーブル226のレコードの登録、削除を行う。なお、インターフェース管理テーブル226には、TOEインターフェースオブジェクト231のポインタも登録されるが、詳細については後述する。
【0052】
ネットワークデバイス層206は、第1ネットワークデバイス228a、第2ネットワークデバイス228b、第3ネットワークデバイス228cを備え、外部のネットワークと送受信する。受信したデータは、インターフェース層205のインターフェースオブジェクト227に受け渡される。
【0053】
TOE208は、プロトコル解析回路232と、第1TOEネットワークデバイス233aと、第2TOEネットワークデバイス233bとを備え、ハードウェアにより結線した回路で、所定のプロトコルによるプロトコル処理及びプロトコル解析処理と、外部ネットワークとの間の通信制御と、を行う。これにより、TOE208は、特に処理データ量、スピードが増加傾向にある所定のプロトコル(例えばTCP/IP)のハードウェアオフロードを行うことができる。
【0054】
プロトコル解析回路232は、ラッパー層203から入力された通信データを送信するため、所定のプロトコルによるプロトコル処理を行う。また、プロトコル解析回路232は、第1TOEネットワークデバイス233a又は第2TOEネットワークデバイス233bが通信データを受信した場合、所定のプロトコルによるプロトコル解析処理を行う。また、プロトコル解析回路232においてプロトコル処理及びプロトコル解析処理が可能なプロトコルは、TCP、UDP、IP及びICMPとする。
【0055】
また、プロトコル解析回路232は、受信したデータのプロトコルがTCP、UDP、IP及びICMP以外と判断した場合、受信したデータと共に、TOEインターフェース層207にプロトコル解析処理を要求する。
【0056】
第1TOEネットワークデバイス233a及び第2TOEネットワークデバイス233bは、ハードウェアにより結線され、外部のネットワークと送受信を行うためのデバイスとする。
【0057】
TOEインターフェース層207は、受信側TOEオブジェクト特定部230と、TOEインターフェースオブジェクト231とを備え、TOE208を他の構成と接続するためのインターフェースとなる。
【0058】
受信側TOEオブジェクト特定部230は、TOE208でプロトコル解析処理できなかったデータを処理するTOEインターフェースオブジェクト231を特定する。受信側TOEオブジェクト特定部230は、TOEインターフェース管理テーブル229を参照して、各TOEインターフェースオブジェクト231にアクセスして、当該受信したネットワークデバイスに対応するTOEインターフェースオブジェクト231を特定する。
【0059】
TOEインターフェースオブジェクト231は、TOE208が備えるネットワークデバイス毎に1対1に対応付けられている。そして、当該TOEインターフェースオブジェクト231は、インターフェースオブジェクト227と同様の情報を保持すると共に、対応付けられたネットワークデバイスを制御することができる。さらに、TOEインターフェースオブジェクト231は、TOE208でプロトコル解析処理が失敗した場合に、プロトコル層204でプロトコル解析処理を行うためのインターフェースとなる。
【0060】
図4は、インターフェースクラス401とTOEインターフェースクラス402のクラス構造を示した図である。図4に示すように、インターフェースクラス401は、属性としてアドレス情報と、ハードウェア情報と、を備えている。このアドレス情報には、対応付けられたネットワークデバイスで送受信を行うIPアドレスを格納する。また、ハードウェア情報には、割り当てられたネットワークデバイスに関する情報を格納する。また、これら属性は、図4の属性の左側に「+」記号が付されていることから把握できるように、外部に対して公開されている。また、他の操作も「+」記号が付されている場合は同様に外部に対して公開されている。
【0061】
また、インターフェースクラス401は、操作としてハードウェア、ドライバに対するアクセス制御()とプロトコル層から送信データを、ネットワークデバイスへの引き渡し制御()とを備えている。これら操作により、ネットワークデバイスを使用することができる。
【0062】
また、TOEインターフェースクラス402は、インターフェースクラスを継承すると共に、操作としてプロトコル解析処理への入力・出力インターフェース()を備えている。当該操作を使用することで、TOE208が受信したデータを、プロトコル層204に対して出力することができる。
【0063】
これらインターフェースクラス及びTOEインターフェースクラスを実体化することで、インターフェースオブジェクト227及びTOEインターフェースオブジェクト231が生成され、上述した属性、操作を使用することができる。
【0064】
本実施の形態にかかる情報処理装置100においては、第1TOEネットワークデバイス233a及び第2TOEネットワークデバイス233bが起動時に自動的に検出された際に、対応するTOEインターフェースオブジェクト231が生成される。また、インターフェースオブジェクト227も同様に、起動時の自動検出に伴い生成される。
【0065】
そして、生成されたTOEインターフェースオブジェクト231のポインタは、インターフェース管理テーブル226及びTOEインターフェース管理テーブル229に登録され、インターフェースオブジェクト227のポインタはインターフェース管理テーブル226に登録される。
【0066】
これにより、TOEインターフェース管理テーブル229に格納されたポインタから、TOEインターフェースオブジェクト231にアクセスすることで、TOE208が備えるTOEネットワークデバイス233a〜bの情報を参照することができる。
【0067】
また、インターフェース管理テーブル226に格納されたポインタから、TOEインターフェースオブジェクト231にアクセスすることで、TOE208が備えるTOEネットワークデバイス233a〜bの情報を参照することができる。同様に、インターフェース管理テーブル226に格納されたポインタから、インターフェースオブジェクト227にアクセスすることで、ネットワークデバイス層206が備えるネットワークデバイス228a〜cの情報を参照することができる。
【0068】
図5は、インターフェースオブジェクト227及びTOEインターフェースオブジェクト231の登録先のインターフェース管理テーブルを示した説明図である。図5に示すように、インターフェース管理テーブル226には、各インターフェースオブジェクト227と、各TOEインターフェースオブジェクト231とを参照可能にするポインタが格納される。これによりプロトコル層204でプロトコル処理が終了した後のデータを、ネットワークデバイス層206のネットワークデバイス228a〜c及びTOE208のTOEネットワークデバイス233a〜bのいずれに対しても出力することができる。
【0069】
このような構成を備えることで、情報処理装置100では、最上位層にユーザアプリケーション層201のネットワークプログラム211a〜cから、ソケット層202を経由した後、ラッパー層203を介して、プロトコル層204及びTOE208にアクセスできるので、プロトコル処理を切り替えることができる。
【0070】
次に、以上のように構成された本実施の形態にかかるTOEインターフェース層207におけるTOEインターフェースオブジェクト231のアドレス情報の登録手順について説明する。図6は、本実施の形態にかかるTOEインターフェース層207における上述した処理の手順を示すフローチャートである。
【0071】
まず、TOEインターフェース層207は、外部からの要求に応じて、TOEネットワークデバイスにIPアドレスの割り当てを受け付ける(ステップS601)。なお、外部とは、ラッパー層203を介して接続されるソケット212a〜cや、TOE208等とする。
【0072】
そして、TOEインターフェース層207は、TOEインターフェース管理テーブル229にまだ確認していない、TOEインターフェースオブジェクト231を指し示すポインタがあるか否か判断する(ステップS602)。ないと判断した場合(ステップS602:No)、該当するTOEネットワークデバイスが存在しないものとして処理を終了する。
【0073】
次に、TOEインターフェース層207は、ポインタがあると判断した場合(ステップS602:Yes)、ポインタが指し示すTOEインターフェースオブジェクト231のハードウェア情報を参照して、当該TOEインターフェースオブジェクト231が、割当先のネットワークデバイスか否か判断する(ステップS603)。割当先のネットワークデバイスではないと判断した場合(ステップS603:No)、再びステップS602から処理を開始する。
【0074】
また、TOEインターフェース層207が、TOEインターフェースオブジェクト231が、割当先のネットワークデバイスと判断した場合(ステップS603:Yes)、当該TOEインターフェースオブジェクト231のアドレス情報に、IPアドレスの追加設定を行う(ステップS604)。これにより、IPアドレスが適切に割り当てられたことになる。
【0075】
次に、以上のように構成された本実施の形態にかかるTOEインターフェース層207におけるTOEインターフェースオブジェクト231のアドレス情報の開放手順について説明する。図7は、本実施の形態にかかるTOEインターフェース層207における上述した処理の手順を示すフローチャートである。
【0076】
まず、TOEインターフェース層207は、外部からの要求に応じて、TOEネットワークデバイスにIPアドレスの開放を受け付ける(ステップS701)。
【0077】
そして、TOEインターフェース層207は、TOEインターフェース管理テーブル229にまだ確認していないTOEインターフェースオブジェクト231を指し示すポインタがあるか否か判断する(ステップS702)。ないと判断した場合(ステップS702:No)、該当するTOEネットワークデバイスが存在しないものとして処理を終了する。
【0078】
次に、TOEインターフェース層207は、ポインタがあると判断した場合(ステップS702:Yes)、ポインタが指し示すTOEインターフェースオブジェクト231のハードウェア情報を参照して、当該TOEインターフェースオブジェクト231が、アドレス開放先のネットワークデバイスか否か判断する(ステップS703)。開放先のネットワークデバイスではないと判断した場合(ステップS703:No)、再びステップS702から処理を開始する。
【0079】
また、TOEインターフェース層207が、TOEインターフェースオブジェクト231は、開放先のネットワークデバイスと判断した場合(ステップS703:Yes)、当該TOEインターフェースオブジェクト231のアドレス情報から、該当するIPアドレスを削除する(ステップS704)。これにより、IPアドレスが適切に削除されたことになる。
【0080】
なお、インターフェースオブジェクト227に対するIPアドレスの割り当て及び開放は従来通りとして説明を省略する。
【0081】
次に、本実施の形態にかかる情報処理装置100における送信処理について説明する。図8は、本実施の形態にかかる情報処理装置100における上述した処理の手順を示すフローチャートである。
【0082】
まず、ネットワークプログラム211a〜cが、ソケット212a〜cに対して、送信するデータを出力する(ステップS801)。次に。ソケット212a〜cが、送信するデータを、ラッパー層203に出力する(ステップS802)。
【0083】
そして、ラッパー層203に送信するデータが入力された場合、ラッパー層203のプロトコル判断部221は、出力元のソケット212a〜cが保持するプロトコル情報に基づいて使用するプロトコルを決定した後、当該プロトコルがTOEで処理可能なプロトコル(TCP/UDP/ICMP/IP)であるか否かを判断する(ステップS803)。処理可能なプロトコルと判断した場合(ステップS803:Yes)、TOEインターフェース管理テーブル229及びTOEインターフェースオブジェクト231を参照して、送信処理を行うTOEネットワークデバイスを特定する(ステップS804)。
【0084】
次に、TOE受渡部235は、TOE208に対して送信するデータを受け渡すと共に、特定されたTOEネットワークデバイスから、入力されたIPアドレスにデータを送信するようTOE208に対して指示する(ステップS805)。なお、ステップS803〜S805で示したラッパー層203の処理の詳細については後述する。
【0085】
そして、TOE208のプロトコル解析回路232は、入力されたデータを、所定のプロトコルで送信するためのプロトコル処理を行う(ステップS806)。その後、ステップS804で特定されたTOEネットワークデバイス(例えば第1TOEネットワークデバイス233a)は、プロトコル処理された後のデータを、指示されたIPアドレスに送信する(ステップS807)。
【0086】
一方、ラッパー層203のプロトコル判断部221は、入力されたデータに使用するプロトコルがTOEで処理可能なプロトコル(TCP/UDP/ICMP/IP)ではないと判断した場合(ステップS803:No)、プロトコル層受渡部234が、プロトコル層204に対して、送信するデータを受け渡すと共に、当該データのプロトコル処理を要求する(ステップS808)。
【0087】
そして、プロトコル層204のプロトコル解析処理部223が、入力されたプロトコル情報に従って、入力されたデータに対してプロトコル処理を行う(ステップS809)。
【0088】
その後、プロトコル層204のオブジェクト特定部225が、インターフェース管理テーブル226、インターフェースオブジェクト227及びTOEインターフェースオブジェクト231を参照して、送信処理を行うネットワークデバイス228a〜c又はTOEネットワークデバイス233a〜bを特定する(ステップS810)。そして、プロトコル層204は、特定されたネットワークデバイスに対応するインターフェースオブジェクト227又はTOEインターフェースオブジェクト231の操作を呼び出して、送信処理を指示する(ステップS811)。
【0089】
そして、送信指示されたインターフェースオブジェクト227又はTOEインターフェースオブジェクト231からの操作により、ネットワークデバイス228a〜c又はTOEネットワークデバイス233a〜bは、プロトコル処理された後のデータを、指示されたIPアドレスに送信する(ステップS812)。
【0090】
次に、以上のように構成された本実施の形態にかかるラッパー層203における受信待ち又は送信処理について説明する。図9は、本実施の形態にかかるラッパー層203における上述した処理の手順を示すフローチャートである。なお、受信待ちの処理は、情報処理装置100の起動時に行われるものとする。
【0091】
まず、ラッパー層203は、ソケット層202のソケット212a〜cから、プロトコル層204へのリクエストを受け付ける(ステップS901)。このリクエストとは、受信待ち又は、データの送信の要求とする。なお、リクエストがデータの送信の場合、当該処理手順は、図8のステップS803及びS804の処理を詳細に説明したものとなる。
【0092】
次に、ラッパー層203は、リクエストを行ったソケット212a〜cが保持するアドレス情報から、使用するプロトコルを決定する(ステップS902)。
【0093】
そして、ラッパー層203のプロトコル判断部221は、決定されたプロトコルが、TOE208で処理可能なプロトコル(TCP/UDP/ICMP/IP)であるか否かを判断する(ステップS903)。TOE208で処理可能なプロトコル(TCP/UDP/ICMP/IP)ではないと判断した場合(ステップS903:No)、プロトコル層204に対して、リクエストに応じた受信待ち又は送信指示を行う(ステップS904)。
【0094】
一方、プロトコル判断部221が、TOE208で処理可能なプロトコル(TCP/UDP/ICMP/IP)であると判断した場合(ステップS903:Yes)、送信側TOEオブジェクト特定部222は、TOEインターフェース管理テーブル229のレコード数だけ、ステップS906以降の処理を繰り返す(ステップS905)。なお、繰り返しが行われる度に、ステップS906で利用されるTOEインターフェース管理テーブル229のレコードが変更される。
【0095】
次に、送信側TOEオブジェクト特定部222は、TOEインターフェース管理テーブル229のレコードのポインタで示されたTOEインターフェースオブジェクト231に登録されたアドレスの数だけ、ステップS907以降の処理を繰り返す(ステップS906)。なお、繰り返しが行われる度に、ステップS907で利用されるTOEインターフェースオブジェクト231に設定されているIPアドレスが変更される。
【0096】
そして、送信側TOEオブジェクト特定部222は、リクエストを行ったソケット212a〜cに設定されているIPアドレスが、ポインタで示されたTOEインターフェースオブジェクト231に設定されているIPアドレスか否か判断する(ステップS907)。
【0097】
次に、送信側TOEオブジェクト特定部222は、リクエストを行ったソケット212a〜cに設定されているIPアドレスが、ポインタで示されたTOEインターフェースオブジェクト231に設定されているIPアドレスではないと判断した場合(ステップS907:No)、再びステップS906から処理を繰り返す(ステップS908)。
【0098】
そして、ステップS906〜ステップS908までのループが終了した場合、再びステップS905から処理を繰り返す(ステップS909)。
【0099】
一方、送信側TOEオブジェクト特定部222は、リクエストを行ったソケット212a〜cに設定されているIPアドレスが、ポインタで示されたTOEインターフェースオブジェクト231に設定されているIPアドレスだと判断した場合(ステップS907:Yes)、ラッパー層203は、受け付けたリクエストが受信待ちか送信か判断する(ステップS910)。このTOEインターフェースオブジェクト231に対応するTOEネットワークデバイス233a〜bが送信処理を行うデバイスとして特定される。
【0100】
ステップS910で、ラッパー層203が受信待ちと判断した場合、TOE208に、受信待ちを指示する(ステップS911)。また、ラッパー層203は、リクエストにデータ受信先のIPアドレスが指定されていれば、当該IPアドレスから受信するよう指示し、リクエストにデータ受信先のIPアドレスが指定されていなければ、全てのIPアドレスから受信するよう指示する。
【0101】
一方、ステップS910で、ラッパー層203が送信と判断した場合、データ送信先のIPアドレスが、リクエストを出力したソケット212a〜cに設定されたルーティング情報から送信可能か否か判断する(ステップS912)。送信できないと判断した場合(ステップS912:No)、再びステップS906から処理を繰り返す(ステップS908)。
【0102】
一方、ラッパー層203が送信可能と判断した場合(ステップS912:Yes)、TOE受渡部235は、TOE208に対して送信するデータを受け渡すと共に、特定されたTOEネットワークデバイス233a〜bから、入力されたIPアドレスにデータを送信するようTOE208に対して指示する(ステップS913)。当該指示により、図8のステップS806以降の処理が行われる。
【0103】
次に、ネットワークデバイス層206a〜cから送信のリクエストが行われた場合の処理の経路について説明する。図10は、所定のプロトコル(TCP/UDP/ICMP/IP)でプロトコル処理を行い、第1TOEネットワークデバイス233aから送信した場合の処理の経路を示した説明図である。
【0104】
まずは、ネットワークプログラム211aから送信するデータの出力が行われたものとする(ステップS1001)。この場合、ソケット212aが、送信するデータを、ラッパー層203に出力する(ステップS1002)。この際、ラッパー層203のプロトコル判断部221が、出力元のソケット212a〜cが保持するプロトコル情報に基づいて使用するプロトコルを決定した後、決定されたプロトコルが所定のプロトコル(TCP/UDP/ICMP/IP)と判断したものとする。
【0105】
そして、所定のプロトコルと判断された後、ラッパー層203は、送信側TOEオブジェクト特定部222に送信先のTOEネットワークデバイス233a〜bを特定するよう指示する(ステップS1003)。そこで、送信側TOEオブジェクト特定部222は、TOEインターフェース管理テーブル229を参照して、TOEインターフェースオブジェクト231のポインタを取得する(ステップS1004)。次に、送信側TOEオブジェクト特定部222は、ポインタで示されたTOEインターフェースオブジェクト231のアドレス情報を参照して、当該オブジェクトに対応するTOEネットワークデバイスが送信先か否か判断する(ステップS1005)。なお、本処理手順では、第1TOEネットワークデバイス233aが送信先と判断されたものとする。
【0106】
送信先となる第1TOEネットワークデバイス233aを特定した後、TOE受渡部235が、送信するデータを受け渡すと共に、プロトコル解析回路232にプロトコル処理を指示する(ステップS1006)。
【0107】
そして、プロトコル解析回路232でプロトコル処理を終了した後、上述した処理で送信先と判断された第1ネットワークデバイス233aに送信処理を指示する(ステップS1007)。これにより、TOE208からデータの送信が行われる。
【0108】
図11は、所定のプロトコル(TCP/UDP/ICMP/IP)以外のプロトコル処理を行い、第1ネットワークデバイス228a又は第1TOEネットワークデバイス233aから送信した場合の処理の経路を示した説明図である。
【0109】
まずは、ネットワークプログラム211aから送信するデータの出力が行われたものとする(ステップS1101)。この場合、ソケット212aが、送信するデータを、ラッパー層203に出力する(ステップS1102)。そして、ラッパー層203のプロトコル判断部221が、出力元のソケット212aが保持するプロトコル情報に基づいて使用するプロトコルを決定した後、決定されたプロトコルが所定のプロトコル(TCP/UDP/ICMP/IP)以外と判断したものとする。
【0110】
そして、所定のプロトコル以外と判断された後、プロトコル層受渡部234が、プロトコル層204に対して送信するデータを受け渡すと共に、プロトコル層204のプロトコル解析処理部223に、決定されたプロトコルでプロトコル処理を行うよう指示する(ステップS1103)。そして、プロトコル層204は、プロトコル解析処理部223でプロトコル処理が終了した後、オブジェクト特定部225に対して、送信先のTOEインターフェースオブジェクト又はインターフェースオブジェクトを特定するよう指示する(ステップS1104)。そこで、オブジェクト特定部225は、インターフェース管理テーブル226を参照して、インターフェースオブジェクト227又はTOEインターフェースオブジェクト231のポインタを取得する(ステップS1105)。この後、インターフェース管理テーブル226に参照されたポインタに基づいて、第1ネットワークデバイス228aで送信する場合と、第1TOEネットワークデバイス233aで送信する場合とがある。まずは、第1ネットワークデバイス228aで送信する場合について説明する。
【0111】
オブジェクト特定部225は、ポインタで示されたインターフェースオブジェクト227のアドレス情報を参照して、当該オブジェクトに対応するネットワークデバイスが送信先か否か判断する(ステップS1106)。そして、送信先となるネットワークデバイスを特定した後、ネットワークデバイスに対応するインターフェースオブジェクト227に送信処理を指示する。
【0112】
そして、インターフェースオブジェクト227は、対応する第1ネットワークデバイス228aに送信処理を指示する(ステップS1107)。これにより、第1ネットワークデバイス228aからデータの送信が行われる。
【0113】
次に、第1TOEネットワークデバイス233aで送信する場合について説明する。オブジェクト特定部225は、ポインタで示されたTOEインターフェースオブジェクト231のアドレス情報を参照して、当該オブジェクトに対応するTOEネットワークデバイスが送信先か否か判断する(ステップS1108)。そして、送信先となるTOEネットワークデバイスを特定した後、当該TOEネットワークデバイスに対応するTOEインターフェースオブジェクト231に送信処理を指示する。
【0114】
そして、TOEインターフェースオブジェクト231は、対応する第1TOEネットワークデバイス233aに送信処理を指示する(ステップS1109)。これにより、第1TOEネットワークデバイス233aからデータの送信が行われる。
【0115】
次に、本実施の形態にかかる情報処理装置100におけるTOE208でデータを受信した場合の処理について説明する。図12は、本実施の形態にかかる情報処理装置100における上述した処理の手順を示すフローチャートである。
【0116】
まず、第1TOEネットワークデバイス233aが、データの受信処理を行う(ステップS1201)。
【0117】
次に、プロトコル解析回路232は、受信したデータが解析可能な所定のプロトコル(TCP/UDP/ICMP/IP)であるか否か判断する(ステップS1202)。
【0118】
そして、プロトコル解析回路232が所定のプロトコルであると判断した場合(ステップS1202:Yes)、所定のプロトコルによる解析処理を受信したデータに対して行う(ステップS1203)。
【0119】
次に、TOE208は、プロトコル解析処理後のデータを、ソケット層202のソケット212a〜cに出力する(ステップS1204)。
【0120】
一方、プロトコル解析回路232が所定のプロトコルではないと判断した場合(ステップS1202:No)、TOE208は、受信したデータをTOEインターフェース層207に出力する(ステップS1205)。
【0121】
そして、TOEインターフェース層207の受信側TOEオブジェクト特定部230は、TOEインターフェース管理テーブル229に格納されたポインタから、TOEインターフェースオブジェクト231を参照し、当該TOEインターフェースオブジェクト231のハードウェア情報を確認して、受信処理を行ったTOEネットワークデバイス233aに対応するTOEインターフェースオブジェクト231を特定する(ステップS1206)。受信側TOEオブジェクト特定部230は、特定されたTOEインターフェースオブジェクト231に受信したデータを出力する。
【0122】
次に、TOEインターフェースオブジェクト231は、入力されたデータを出力すると共に、当該データのプロトコル解析処理をするようプロトコル層204に対して指示する(ステップS1207)。
【0123】
そして、プロトコル層204では、TOEインターフェースオブジェクト231からプロトコル別受信バッファ224に入力されたデータを、指示されたプロトコル別に一時的に格納する(ステップS1208)。
【0124】
そして、プロトコル解析処理部223は、指示に従って、プロトコル別受信バッファ224に格納されていたデータを取り出し、プロトコル解析処理を行う(ステップS1209)。これにより、受信したパケットから使用されるデータを抽出できたことになる。
【0125】
次に、プロトコル層204は、プロトコル解析処理後のデータを、ソケット212a〜cに出力する(ステップS1210)。
【0126】
そして、ソケット212a〜cは、入力されたデータを、当該ソケット212a〜cと対応付けられたネットワークプログラム211a〜cに出力する(ステップS1211)。
【0127】
上述した処理手順により、TOE208が受信したデータについて、所定のプロトコルの場合はハードウェアオフロードを行うことを可能にすると共に、所定のプロトコル以外のプロトコルについてはプロトコル層204で解析処理を行うことを可能にしている。
【0128】
次に、第1TOEネットワークデバイス233aがデータを受信した場合の処理の経路について説明する。図13は、第1TOEネットワークデバイス233aがデータを受信して、所定のプロトコル(TCP/UDP/ICMP/IP)でプロトコル解析処理を行った場合の処理の経路を示した説明図である。
【0129】
まず、第1ネットワークデバイス233aが、データの受信処理した場合、プロトコル解析回路232に解析処理を行うよう指示する(ステップS1301)。
【0130】
そして、プロトコル解析回路232が、解析処理可能と判断して、解析処理を行った後、解析処理後のデータを、ソケット212aに出力する(ステップS1302)。
【0131】
そして、ソケット212aは、入力されたデータを、対応付けられているネットワークプログラム211aに出力する(ステップS1303)。上述する処理を行うことで、ネットワークプログラム211aは、第1TOEネットワークデバイス233aからデータを受信することができる。
【0132】
図14は、第1TOEネットワークデバイス233aがデータを受信して、所定のプロトコル(TCP/UDP/ICMP/IP)以外のプロトコルでプロトコル解析処理を行った場合の処理の経路を示した説明図である。
【0133】
まず、第1ネットワークデバイス233aが、データの受信処理した場合、プロトコル解析回路232に解析処理を行うよう指示する(ステップS1401)。
【0134】
そして、プロトコル解析回路232が、解析処理できないと判断した場合、受信したデータをTOEインターフェース層207に出力する(ステップS1402)。
【0135】
そして、受信側TOEオブジェクト特定部230は、TOEインターフェース管理テーブル229を参照して、TOEインターフェースオブジェクト231のポインタを取得する(ステップS1403)。そして、受信側TOEオブジェクト特定部230は、取得したポインタが指し示すTOEインターフェースオブジェクト231のハードウェア情報を確認し、データを受信した第1TOEネットワークデバイス233aに対応するTOEインターフェースオブジェクト231を特定する。
【0136】
そして、受信側TOEオブジェクト特定部230は、特定されたTOEインターフェースオブジェクト231に受信したデータを出力する(ステップS1404)。
【0137】
次に、TOEインターフェースオブジェクト231は、プロトコル層204に対して、入力されたデータを出力すると共に、当該データのプロトコル解析処理をするよう指示する(ステップS1405)。これにより入力されたデータは、プロトコル別にプロトコル別受信バッファ224に格納される。
【0138】
そして、プロトコル解析処理部223は、プロトコル別受信バッファ224に格納されたデータを取得する(ステップS1406)。その後、プロトコル解析処理部223は、取得したデータのプロトコル解析処理を行った後、解析処理したデータを、ソケット212a〜cに出力する(ステップS1407)。
【0139】
そして、ソケット212a〜cは、入力されたデータを、当該ソケット212a〜cと対応付けられたネットワークプログラム211a〜cに出力する(ステップS1408)。上述した処理手順により、TOEでプロトコル解析処理を実行できないデータを受信した場合にでも適切にプロトコル解析処理を行うことができる。
【0140】
図15は、第1ネットワークデバイス228aがデータを受信して、プロトコル解析処理を行った場合の処理の経路を示した説明図である。
【0141】
まず、第1ネットワークデバイス228aが、データの受信処理した場合、当該第1ネットワークデバイス228aに対応するインターフェースオブジェクト227に、受信したデータを出力する(ステップS1501)。
【0142】
そして、インターフェースオブジェクト227は、入力されたデータを、プロトコル別にプロトコル別受信バッファ224に格納する(ステップS1502)。
【0143】
そして、プロトコル解析処理部223は、プロトコル別受信バッファ224に格納されたデータを取得する(ステップS1503)。その後、プロトコル解析処理部223は、取得したデータのプロトコル解析処理を行った後、解析処理したデータを、ソケット212a〜cに出力する(ステップS1504)。
【0144】
そして、ソケット212a〜cは、入力されたデータを、当該ソケット212a〜cと対応付けられたネットワークプログラム211a〜cに出力する(ステップS1505)。
【0145】
また、上述した本実施の形態にかかる情報処理装置100は、ネットワークを制御するソフトウェア群がレイヤー構造で制御するOSであればどのようなOSでもよい。適用可能なOSとしては、例えばNetBSD等が存在する。
【0146】
上述したように、本実施の形態にかかる情報処理装置100では、TOEを備えた場合であっても、既存のソフトウェアプロトコルスタックと共存させることを可能としている。
【0147】
ところで、従来の情報処理装置では、ソケット層及びインターフェース層は互いに一方から他方を参照できない関係にあったため、ソケット層以下をハードウェア化してオフロード可能にすると共に、当該ハードウェアを経由しないネットワークデバイスを搭載した場合、送信するデータを適切なネットワークデバイスに振り分けることが出来なくなっていた。
【0148】
これに対し、本実施の形態にかかる情報処理装置100では、上述したような構成を備えることで、TOEハードウェアに搭載されたTOEネットワークデバイス以外のネットワークデバイスも使用することが可能になった。
【0149】
これにより、本実施の形態にかかる情報処理装置100では、TOEを搭載することでハードウェアオフロードを可能にして、CPU101の処理負担を軽減すると共に、さまざまなプロトコルに対応することが可能になる。
【0150】
また、本実施の形態にかかる情報処理装置100では、TOEに搭載されたTOEネットワークデバイス以外に、さまざまなネットワークデバイスを利用することが可能になる。このようなネットワークデバイスは、本実施の形態のように、シリアル回線I/F106、無線LAN_I/F107及びUSB_I/F108に制限するものではなく、従来から使用される様々なネットワークデバイスを適用しても良い。
【0151】
本実施形態の情報処理装置100で実行される通信制御プログラムは、インストール可能な形式又は実行可能な形式のファイルでCD−ROM、フレキシブルディスク(FD)、CD−R、DVD(Digital Versatile Disk)等のコンピュータで読み取り可能な記録媒体に記録されて提供される。
【0152】
また、本実施形態の情報処理装置100で実行される通信制御プログラムを、インターネット等のネットワークに接続されたコンピュータ上に格納し、ネットワーク経由でダウンロードさせることにより提供するように構成しても良い。また、本実施形態の情報処理装置100で実行される通信制御プログラムをインターネット等のネットワーク経由で提供または配布するように構成しても良い。
【0153】
また、本実施形態の通信制御プログラムを、ROM等に予め組み込んで提供するように構成してもよい。
【0154】
本実施の形態の情報処理装置100で実行される通信制御プログラムは、上述した各部(ユーザアプリケーション層、ソケット層、プロトコル層、インターフェース層、TOEインターフェース層)を含むモジュール構成となっており、実際のハードウェアとしてはCPUが上記記録媒体から通信制御プログラムを読み出して実行することにより上記各部が主記憶装置上にロードされ、ユーザアプリケーション層、ソケット層、プロトコル層、インターフェース層、TOEインターフェース層が主記憶装置上に生成されるようになっている。
【産業上の利用可能性】
【0155】
以上のように、本発明にかかる通信制御装置、通信制御方法及び通信制御プログラムは、通信制御に有用であり、特に、TOEを用いた通信制御に適している。
【図面の簡単な説明】
【0156】
【図1】実施の形態にかかる情報処理装置のハードウェア構成を示した図である。
【図2】情報処理装置のソフトウェア構成をレイヤー構造で示した図である。
【図3】インターフェース管理テーブルとインターフェースオブジェクトとの関連を示した説明図である。
【図4】インターフェースクラスとTOEインターフェースクラスのクラス構造を示した図である。
【図5】インターフェースオブジェクト及びTOEインターフェースオブジェクトの登録先のインターフェース管理テーブルを示した説明図である。
【図6】実施の形態にかかるTOEインターフェース層におけるTOEインターフェースオブジェクトのアドレス情報の登録手順を示すフローチャートである。
【図7】実施の形態にかかるTOEインターフェース層におけるTOEインターフェースオブジェクトのアドレス情報の開放手順を示すフローチャートである。
【図8】実施の形態にかかる情報処理装置における送信処理の手順を示すフローチャートである。
【図9】実施の形態にかかるラッパー層における受信待ち又は送信処理の手順を示すフローチャートである。
【図10】実施の形態にかかる情報処理装置における、所定のプロトコルでプロトコル処理を行い、第1TOEネットワークデバイスから送信した場合の処理経路を示した説明図である。
【図11】実施の形態にかかる情報処理装置における、所定のプロトコル以外のプロトコル処理を行い、第1ネットワークデバイス又は第1TOEネットワークデバイスから送信した場合の処理経路を示した説明図である。
【図12】実施の形態にかかる情報処理装置におけるTOEでデータを受信した場合の処理の手順を示すフローチャートである。
【図13】実施の形態にかかる情報処理装置における、第1TOEネットワークデバイスがデータを受信して、所定のプロトコルでプロトコル解析処理を行った場合の処理の経路を示した説明図である。
【図14】実施の形態にかかる情報処理装置における、第1TOEネットワークデバイスがデータを受信して、所定のプロトコル以外のプロトコルでプロトコル解析処理を行った場合の処理の経路を示した説明図である。
【図15】実施の形態にかかる情報処理装置における、第1ネットワークデバイスがデータを受信して、プロトコル解析処理を行った場合の処理の経路を示した説明図である。
【図16】従来のTOEを搭載した情報処理装置におけるネットワークの階層モデルを示した説明図である。
【符号の説明】
【0157】
100 情報処理装置
101 CPU
102 ROM
103 RAM
104 HDD
105 TOE
106 シリアル回線I/F
107 無線LAN_I/F
108 USB_I/F
109 有線LAN_I/F
201 ユーザアプリケーション層
202 ソケット層
203 ラッパー層
204 プロトコル層
205 インターフェース層
206 ネットワークデバイス層
207 TOEインターフェース層
208 TOE
211a〜c ネットワークプログラム
212a〜c ソケット
221 プロトコル判断部
222 送信側TOEオブジェクト特定部
223 プロトコル解析処理部
224 プロトコル別受信バッファ
225 オブジェクト特定部
226 インターフェース管理テーブル
227 インターフェースオブジェクト
228a 第1ネットワークデバイス
228b 第2ネットワークデバイス
228c 第3ネットワークデバイス
229 インターフェース管理テーブル
230 受信側TOEオブジェクト特定部
231 TOEインターフェースオブジェクト
232 プロトコル解析回路
233a 第1ネットワークデバイス
233b 第2ネットワークデバイス

【特許請求の範囲】
【請求項1】
送信データに対して、所定のプロトコルで送信するためのプロトコル処理を行うと共に、当該送信データを前記所定のプロトコルで送信を行う、ハードウェア結線された回路であるハードウェア通信デバイス制御部と、
送信データに対して、ネットワークプログラム毎に割り当てられるソケットからの要求に従ったプロトコル処理を行う、ソフトウェアで実現されたプロトコル処理部と、
前記プロトコル処理部により前記プロトコル処理が行われた前記送信データを送信する通信デバイス制御部と、
前記ソケットからの送信データの送信要求が、前記ハードウェア通信デバイス制御部でプロトコル処理可能な前記所定のプロトコルを用いた送信であるか否かを判断するプロトコル判断部と、
前記所定のプロトコルを用いた送信であると判断された場合に、前記ソケットから送信要求された前記送信データを、前記ハードウェア送信デバイス制御部に対して受け渡すハードウェアデバイス受渡部と、
前記所定のプロトコル以外と判断された場合に、前記ソケットから送信要求された前記送信データを、前記プロトコル処理部に対して受け渡すプロトコル受渡部と、
を備えることを特徴とする通信制御装置。
【請求項2】
前記プロトコル処理部は、前記プロトコル処理部で前記送信データに対して前記ソケットからの要求に従ったプロトコル処理を行った後、当該送信データの送信先が前記ハードウェア送信デバイス制御部か、前記通信デバイス制御部か判断し、判断結果に従って前記ハードウェア送信デバイス制御部又は、通信デバイス制御部に対して前記送信データを受け渡すこと、
を特徴とする請求項1に記載の通信制御装置。
【請求項3】
前記ハードウェア通信デバイス制御部は、外部のネットワークに対して送信を行うハードウェア通信デバイスを複数備え、
前記ハードウェア通信デバイスで前記外部のネットワークで送信が許可されているアドレス情報を保持する、前記ハードウェア通信デバイス毎に複数個存在するハードウェアインターフェース情報保持部と、
前記プロトコル判断部で所定のプロトコルを用いて送信を行うと判断した場合に、送信を行う前記ハードウェア通信デバイスを、前記ハードウェアインターフェース情報保持部が保持する前記アドレス情報に基づいて特定するハードウェア特定部と、
をさらに備えることを特徴とする請求項1又は2に記載の通信制御装置。
【請求項4】
前記通信デバイス制御部は、外部のネットワークに対して送信を行う通信デバイスを複数備え、
ネットワークデバイスで前記外部のネットワークで送信が許可されているアドレス情報を保持する、前記ネットワークデバイス毎に複数個存在するインターフェース情報保持部と、
前記プロトコル処理部でプロトコル処理が行われた後、前記送信データの送信に用いる前記ハードウェア通信デバイス又は前記通信デバイスを、前記インターフェース情報保持部及び前記ハードウェアインターフェース情報保持部が保持する前記アドレス情報に基づいて特定する特定部と、
をさらに備えることを特徴とする請求項3に記載の通信制御装置。
【請求項5】
前記インターフェース情報保持部を指し示すポインタ情報と、及び前記ハードウェアインターフェース情報保持部を指し示すポインタ情報と、を記憶するインターフェース管理記憶部と、をさらに備え、
前記特定部は、インターフェース管理記憶部に記憶された前記ポインタ情報が指し示す前記インターフェース情報保持部及び前記ハードウェアインターフェース情報保持部が保持する前記アドレス情報に基づいて特定すること、
を特徴とする請求項4に記載の通信制御装置。
【請求項6】
前記所定のプロトコルが、TCP、UDP、IP及びICMPのうちいずれか一つ以上であることを特徴とする請求項1乃至5のいずれか一つに記載の通信制御装置。
【請求項7】
外部のネットワークから受信データを受信する制御を行うと共に、受信した前記受信データを所定のプロトコルで解析処理可能か否か判断し、解析可能と判断した場合に前記所定のプロトコルによる解析処理し、ソケットに対してプロトコル解析処理後の前記受信データを受け渡す、ハードウェア結線された回路であるハードウェア通信デバイス制御部と、
前記ハードウェア通信デバイス制御部で前記所定のプロトコルで解析処理可能ではないと判断した場合に前記受信データを取得するハードウェア通信インターフェース部と、
前記ハードウェア通信インターフェース部が取得した前記受信データに対してプロトコル解析処理し、ソケットに対してプロトコル解析処理後の前記受信データを受け渡す、ソフトウェアで実現可能なプロトコル処理部と、
を備えることを特徴とする通信制御装置。
【請求項8】
ネットワークプログラム毎に割り当てられるソケットからの送信データの送信要求が、ハードウェア結線された回路であるハードウェア送信デバイス制御部でプロトコル処理可能な所定のプロトコルを用いた送信であるか否かを判断するプロトコル判断ステップと、
前記所定のプロトコルを用いた送信であると判断された場合に、前記ソケットから送信要求された前記送信データを、前記ハードウェア送信デバイス制御部に対して受け渡すハードウェアデバイス受渡ステップと、
前記ハードウェア通信デバイス制御部が、送信データに対して、前記所定のプロトコルで送信するためのプロトコル処理を行うと共に、当該送信データを前記所定のプロトコルで送信を行うハードウェア通信デバイス制御ステップと、
前記プロトコル判断ステップにより前記所定のプロトコル以外と判断された場合に、前記ソケットから送信要求された前記送信データを、プロトコル処理部に対して受け渡すプロトコル受渡ステップと、
前記プロトコル処理部が、前記送信データに対して、前記ソケットからの要求に従ったプロトコル処理を行うプロトコル処理ステップと、
前記プロトコル処理が行われた前記送信データを送信する通信デバイス制御ステップと、
を有することを特徴とする通信制御方法。
【請求項9】
前記プロトコル処理ステップは、前記プロトコル処理ステップで前記送信データに対して前記ソケットからの要求に従ったプロトコル処理を行った後、当該送信データの送信先が前記ハードウェア送信デバイス制御部であるか否か判断し、前記ハードウェア送信デバイス制御部と判断した場合に、前記ハードウェア送信デバイス制御部に前記送信データを受け渡すこと、
を特徴とする請求項8に記載の通信制御方法。
【請求項10】
前記ハードウェア通信デバイス制御ステップは、外部のネットワークに対して送信を行う複数のハードウェア通信デバイスから、前記送信データを送信し、
前記ハードウェア通信デバイス毎に複数個存在するハードウェアインターフェース情報保持部が、前記ハードウェア通信デバイスで前記外部のネットワークで送信が許可されているアドレス情報を保持するハードウェアインターフェース情報保持ステップと、
前記プロトコル判断ステップで所定のプロトコルを用いて送信を行うと判断した場合に、送信を行う前記ハードウェア通信デバイスを、前記ハードウェアインターフェース情報保持部が保持する前記アドレス情報に基づいて特定するハードウェア特定ステップと、
をさらに有することを特徴とする請求項8又は9に記載の通信制御方法。
【請求項11】
前記通信デバイス制御ステップは、外部のネットワークに対して送信を行う複数の通信デバイスから、前記送信データを送信し、
前記ネットワークデバイス毎に複数個存在するインターフェース情報保持部が、前記ネットワークデバイスで前記外部のネットワークで送信が許可されているアドレス情報を保持するインターフェース情報保持ステップと、
前記プロトコル処理ステップでプロトコル処理が行われた後、前記送信データの送信に用いる前記ハードウェア通信デバイス又は前記通信デバイスを、前記インターフェース情報保持部及び前記ハードウェアインターフェース情報保持部が保持する前記アドレス情報に基づいて特定する特定ステップと、
をさらに有することを特徴とする請求項10に記載の通信制御方法。
【請求項12】
前記インターフェース情報保持部を指し示すポインタ情報と、及び前記ハードウェアインターフェース情報保持部を指し示すポインタ情報と、をインターフェース管理記憶部に記憶するインターフェース管理記憶ステップと、をさらに有し、
前記特定ステップは、インターフェース管理記憶部に記憶された前記ポインタ情報が指し示す前記インターフェース情報保持部及び前記ハードウェアインターフェース情報保持部が保持する前記アドレス情報に基づいて特定すること、
を特徴とする請求項11に記載の通信制御方法。
【請求項13】
前記所定のプロトコルが、TCP、UDP、IP及びICMPのうちいずれか一つ以上であることを特徴とする請求項8乃至12のいずれか一つに記載の通信制御方法。
【請求項14】
ハードウェア結線された回路であるハードウェア通信デバイス制御部が、外部のネットワークから受信データを受信する制御を行うと共に、受信した前記受信データを所定のプロトコルで解析処理可能か否か判断し、解析可能と判断した場合に前記所定のプロトコルによる解析処理し、ソケットに対してプロトコル解析処理後の前記受信データを受け渡すハードウェア通信デバイス制御ステップと、
前記ハードウェア通信デバイス制御ステップで前記所定のプロトコルで解析処理可能ではないと判断した場合に前記受信データを取得するハードウェア通信インターフェースステップと、
前記ハードウェア通信インターフェースステップにより取得された前記受信データに対してプロトコル解析処理し、ソケットに対してプロトコル解析処理後の前記受信データを受け渡すプロトコル処理ステップと、
を備えることを特徴とする通信制御方法。
【請求項15】
ネットワークプログラム毎に割り当てられるソケットからの送信データの送信要求が、ハードウェア結線された回路であるハードウェア送信デバイス制御部でプロトコル処理可能な所定のプロトコルを用いた送信であるか否かを判断するプロトコル判断ステップと、
前記所定のプロトコルを用いた送信であると判断された場合に、前記ソケットから送信要求された前記送信データを、前記ハードウェア送信デバイス制御部に対して受け渡すハードウェアデバイス受渡ステップと、
前記ハードウェア通信デバイス制御部が、送信データに対して、前記所定のプロトコルで送信するためのプロトコル処理を行うと共に、当該送信データを前記所定のプロトコルで送信を行うハードウェア通信デバイス制御ステップと、
前記プロトコル判断ステップにより前記所定のプロトコル以外と判断された場合に、前記ソケットから送信要求された前記送信データを、プロトコル処理部に対して受け渡すプロトコル受渡ステップと、
前記プロトコル処理部が、前記送信データに対して、前記ソケットからの要求に従ったプロトコル処理を行うプロトコル処理ステップと、
前記プロトコル処理が行われた前記送信データを送信する通信デバイス制御ステップと、
をコンピュータに実行させる通信制御プログラム。
【請求項16】
ハードウェア結線された回路であるハードウェア通信デバイス制御部が、外部のネットワークから受信データを受信する制御を行うと共に、受信した前記受信データを所定のプロトコルで解析処理可能か否か判断し、解析可能と判断した場合に前記所定のプロトコルによる解析処理し、ソケットに対してプロトコル解析処理後の前記受信データを受け渡すハードウェア通信デバイス制御ステップと、
前記ハードウェア通信デバイス制御ステップで前記所定のプロトコルで解析処理可能ではないと判断した場合に前記受信データを取得するハードウェア通信インターフェースステップと、
前記ハードウェア通信インターフェースステップにより取得された前記受信データに対してプロトコル解析処理し、ソケットに対してプロトコル解析処理後の前記受信データを受け渡すプロトコル処理ステップと、
をコンピュータに実行させる通信制御プログラム。

【図1】
image rotate

【図2】
image rotate

【図3】
image rotate

【図4】
image rotate

【図5】
image rotate

【図6】
image rotate

【図7】
image rotate

【図8】
image rotate

【図9】
image rotate

【図10】
image rotate

【図11】
image rotate

【図12】
image rotate

【図13】
image rotate

【図14】
image rotate

【図15】
image rotate

【図16】
image rotate


【公開番号】特開2009−53770(P2009−53770A)
【公開日】平成21年3月12日(2009.3.12)
【国際特許分類】
【出願番号】特願2007−217547(P2007−217547)
【出願日】平成19年8月23日(2007.8.23)
【出願人】(000006747)株式会社リコー (37,907)
【Fターム(参考)】