(57)【要約】【課題】ユーザ毎に論理的に分割されたネットワークに接続されたサーバ装置のTCPプロトコル処理のオフロード可能なネットワークプロトコル処理装置を実現する。【解決手段】  ネットワークを通して受けるユーザからの要求を処理するホストプロセッサと、ホストプロセッサに接続されており、ネットワークに接続されるネットワークポートと、TCP/IPプロトコル処理を行なうプロセッサと、TCPコネクションの識別情報を保持するメモリを有するTOE装置と、を有するネットワークプロトコル処理機能を有するサーバ装置において、自IPアドレス、相手IPアドレス、自ポート番号、相手ポート番号を示す情報、及びIEEE802.1Qで定義されるVLAN-IDを含むフレーム情報をTCPコネクションの識別情報として使用する。【選択図】図２
2005316629.tif 000002
【特許請求の範囲】
【請求項１】
ネットワークプロトコル処理機能を有するサーバ装置において、
ネットワークを通して受けるユーザからの要求を処理するホストプロセッサと、該ホストプロセッサに接続され、該ネットワークに接続されるネットワークポートと、TCP/IPプロトコル処理を行なうプロセッサと、TCPコネクションの識別情報を保持するメモリを有するTOE装置と、を有し、
自IPアドレス、相手IPアドレス、自ポート番号、相手ポート番号を示す情報、及びIEEE802.1Qで定義されるVLAN-IDを含むフレーム情報をTCPコネクションの識別情報として使用することを特徴とするサーバ装置。
【請求項２】
該ホストプロセッサから、VLAN-IDを含むTCPコネクションの識別情報を受け取るインターフェイスを有することを特徴とする請求項１のサーバ装置。
【請求項３】
該ホストプロセッサは、IEEE802.1Qで定義されるVLAN-IDをTCPコネクションの識別情報として該TOE装置に転送することを特徴とする請求項２記載のサーバ装置。
【請求項４】
TCPコネクションを確立するために参照される、同じのVLANに接続された他のホストのIPアドレスとMACアドレスとの対応関係を示すARP表と、与えられる宛先ホストのIPアドレスに関し、パケットを次に転送すべきホストを示すルーティングテーブルと、を格納するホスト内メモリを有することを特徴とする請求項１記載のサーバ装置。
【請求項５】
TCPコネクションが確立すると、該ホストプロセッサは、IPアドレス、相手IPアドレス、自ポート番号、相手ポート番号と、及びIEEE802.1Qで定義されるVLAN-IDを含むコネクション状態情報をコネクション情報ブロックに格納して該TOE装置へ送ることを特徴とする請求項１乃至４のいずれかに記載のサーバ装置。
【請求項６】
該TOE装置は、該コネクション情報ブロックの情報に基づき、該TOE装置内のメモリに、コネクションテーブルを生成して、該コネクションテーブルをコネクションリストに追加登録することを特徴とする請求項５記載のサーバ装置。
【請求項７】
ネットワークに接続されるネットワークポートと、TCP/IPプロトコル処理を行なうプロセッサと、TCPコネクションの識別情報を保持するメモリを有するTOE装置において、
ネットワークを通して受けるユーザからの要求を処理するホストプロセッサから、IPアドレス、相手IPアドレス、自ポート番号、相手ポート番号、及びネットワークを論理的に複数に分割するために定義されたIDを含むコネクション識別情報を受け、該コネクション識別情報に従ってネットワークを識別することを特徴とするTOE装置。
【請求項８】
論理的に複数に分割されるネットワークに対するプロトコル処理を行うサーバ装置におけるネットワークプロトコル処理方法において、
ホストプロセッサにおいて、あるユーザのネットワーク設定情報のＴＣＰコネクション情報として、少なくとも、自IPアドレス、相手IPアドレス、自ポート番号、相手ポート番号を示す情報、及びネットワークを論理的に複数に分割するために定義されたIDを含む情報を登録するＴＣＰコネクション情報テーブルを生成して、ＴＣＰコネクションを確立するステップと、
ホストプロセッサから該ＴＣＰコネクション情報をTOE装置に渡すステップと、
該TOE装置において、該ＴＣＰコネクション情報に基づき、新たにコネクションテーブルを生成して、該コネクションテーブルに関する情報をコネクションリストに登録するステップと、
を有することを特徴とするネットワークプロトコル処理方法。
【請求項９】
前記TOE装置において、該コネクションリストを検索して、該コネクションテーブルが登録されているかをチェックするステップと、
該チェックの結果、該コネクションテーブルが登録されており、かつ送信すべきデータが有る場合、該データからTCP/IPパケットを生成し、該パケットの特定のフィールドにIEEE802.1Qで定義されるVLAN-IDを格納して、該パケットをネットワークへ送出するステップと、
を有することを特徴とする請求項８記載のネットワークプロトコル処理方法。
【請求項１０】
TCPコネクションの識別情報により分離されたコネクション情報テーブルから参照される送信バッファと受信バッファを該ホストプロセッサとのデータインターフェイスとし、送信時には、該送信バッファからパケットを取り出し、送信パケットにVLAN-IDを含めて送出し、受信時には、ネットワークから受信したパケットに含まれるVLAN-IDを用いてコネクションを識別し、該VLAN-ID毎に分離されたコネクション情報テーブルから参照される受信バッファへパケットを格納する請求項８又は９記載のネットワークプロトコル処理方法。
【請求項１１】
該パケットを受信すると、前記TOEプロセッサにおいて、該コネクションリストを検索して該コネクションテーブルが登録されているかをチェックするステップと、
該チェックの結果、登録されている場合、受信したパケット内のVLAN-ID、及び自IPアドレス、相手IPアドレス、自ポート番号、相手ポート番号が、該コネクションテーブルに登録されている値と一致するかをチェックするステップと、
該チェックの結果、全てが一致すれば、受信したパケットについてTCP受信処理を行うステップと、
を更に有することを請求項８乃至１０のいずれかに記載のネットワークプロトコル処理方法。
【請求項１２】
ネットワークを通して受けるユーザからの要求を処理するホストプロセッサと、
ユーザの使用可能なネットワークポートが記されたポートリストと、同じのVLANに接続された他のホストのIPアドレスとMACアドレスとの対応関係を示すＡＲＰ表と、与えられる宛先ホストのIPアドレスに関し、パケットを次に転送すべきホストを示すルーティングテーブルと、及び自IPアドレス、相手IPアドレス、自ポート番号、相手ポート番号を示す情報、及びIEEE802.1Qで定義されるVLAN-IDを含むＴＣＰコネクション情報テーブルと、該ＴＣＰコネクション情報テーブルを示すポインタを格納するコネクションリストと、を含むネットワーク設定情報をユーザ毎に格納するホスト内メモリと、
該ネットワークに接続されるネットワークポートと、TCP/IPプロトコル処理を行なうためのTOEプロセッサと、少なくともTCPコネクションを識別するための情報を保持するTOEメモリとを含むTOE装置と、を有し、
該ホストプロセッサは、あるユーザのネットワーク設定情報に、該ＴＣＰコネクション情報テーブルを生成すると共に、該ＴＣＰコネクション情報テーブル用のポインタを該コネクションリストに登録して、該ユーザのためのＴＣＰコネクションを確立して、該ＴＣＰコネクション情報テーブルに格納される少なくとも、自IPアドレス、相手IPアドレス、自ポート番号、相手ポート番号を示す情報と、IEEE802.1Qで定義されるVLAN-IDを含むコネクション情報ブロックを該TOE装置に渡し、
該TOEプロセッサは、該コネクション情報ブロックの情報に基づき、該TOEメモリに新たにコネクションテーブルを生成して、該コネクションテーブルのポインタを該コネクションリストに登録し、かつ該コネクションテーブルに登録された送信ソケットバッファにデータがあれば、該データからTCP/IPパケットを生成して、該パケットの特定のフィールドにIEEE802.1Qで定義されるVLAN-IDを格納して、該パケットをネットワークへ送出し、
パケットを受信する時、該TOEプロセッサは、該コネクションリストに該コネクションテーブルのポインタが登録されているかを調べ、受信したパケット内のVLAN-ID、及び自IPアドレス、相手IPアドレス、自ポート番号、相手ポート番号が、該コネクションテーブルに登録されている値と一致するかを調べて、もし全てが一致すれば、受信したパケットについてTCP受信処理を行なうことを特徴とするネットワークプロトコル処理機能を有するサーバ装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ネットワークプロトコル処理装置に係り、特にユーザ毎に仮想的に資源分割されたホストコンピュータのネットワークプロトコル処理を専門的に処理するTOE（TCP/IP Offload Engine。TCP/IPオフロードエンジン）装置及びそれを搭載したサーバ装置に関する。
【背景技術】
【０００２】
インターネットをはじめとするコンピュータ間のネットワーク通信に、最も多く利用されている通信プロトコルとして、TCP/IP(Transmission Control Protocol / Internet Protocol)が知られている。しかし、TCP/IPとりわけTCPプロトコルはその処理が複雑なため、パケット送受信時にホストプロセッサに大きな処理負荷を与える。
【０００３】
近年のネットワーク通信技術、特にイーサネット(Ethernet; イーサネットはXerox社の商標)の高速化技術の進歩は著しく、最近では転送速度が1G(ギガ)bit/sの1GbE1ギガビットイーサネット)が主流となっている。さらに、数年後には10G(ギガ)bit/sの転送速度を持つ10GbE1０ギガビットイーサネット)が普及すると予想されている。
【０００４】
一般に、1bit/sのTCP/IPデータ転送には、1Hz分のCPU処理能力が必要であると言われている。この見積りに基づけば、10Gbit/sのTCPプロトコル処理には約10GHzのプロセッサの処理能力が必要となる。しかし、数年後、10GbEが普及する時期に、一般的なプロセッサは数GHzのクロックに留まり、その処理能力では10GbEの処理に十分ではないと見られている。すなわち、ネットワークの物理的な性能、即ちバンド幅でのデータ転送が出来ない。もしくは、ホストプロセッサが、プロトコル処理オーバヘッドのために、本来なすべきサービスタスクに遅延を生じるなどの事態が予想される。
【０００５】
このため、TCPのプロトコル処理をホストプロセッサに代わって処理する（オフロードする）専用のハードウェア装置が注目されている。この装置は、TOE（TCP/IP Offload Engine。TCP/IPオフロードエンジン）と呼ばれている。サーバ装置にこのTOE装置を搭載して、ネットワークのプロトコル処理をTOE装置に専念させることができる。これによって、ネットワークの性能を生かし、ホストプロセッサの負荷を下げ、ホストプロセッサが本来行うべきサービス処理性能を向上させることができる。
【０００６】
このTOE装置に関する技術としては、例えば、特開2001-268159公報（特許文献１）に開示されているような、TCP/IPをハードウェア的に処理する装置、すなわちTOE装置及びその動作方法、或いは、特開2001-339462公報（特許文献２）に記載の、TOEによる通信プロトコル処理方法が知られている。また、米国特許USP6,427,173 明細書（特許文献３）、米国特許USP6,334,153 明細書（特許文献４）、米国特許USP6,591,302 明細書（特許文献５）には、TCP/IPのオフロードエンジンの例が開示されている。
【０００７】
また、米国特許出願公開第2003/0135578 明細書（特許文献６）には、複数のネットワークに接続された１台のサーバ装置であって、各ネットワークにそれぞれ独立したプライベートアドレス空間が定義された、複数の論理空間を持つバーチャルサーバ装置が開示されている。このサーバ装置は、各ネットワークのIPアドレス識別子(Space-ID)ごとに独立したサービスを提供する。
【０００８】
【特許文献１】特開2001-268159公報
【０００９】
【特許文献２】特開2001-339462公報
【特許文献３】米国特許USP6,427,173 明細書
【特許文献４】米国特許USP6,334,153 明細書
【特許文献５】米国特許USP6,591,302 明細書
【特許文献６】米国特許出願公開第2003/0135578 明細書
【発明の開示】
【発明が解決しようとする課題】
【００１０】
ところで、上記米国特許出願公開第2003/0135578 明細書（特許文献６）に記載のような、ユーザ毎に論理的に分割されたサーバ装置にTOE装置を適用する場合、以下のような課題が上げられる。
【００１１】
一般に、IPネットワークの世界では、グローバルIPアドレスを用いて定義されるグローバルIPアドレス空間(WAN：Wide Area Network)は、世界に唯１つしか存在しない。しかし、プライベートIPアドレスを用いて定義され、企業組織内などで用いられるLAN（Local Area Network）（ここでは、プライベートIPアドレス空間を用いて定義されたネットワークを指す）は、組織毎に存在する。
【００１２】
従来のサーバ装置は、通常、組織の内部、すなわち唯一のLAN（Local Area Network）に接続して運用される。このため、複数のLANからの要求をサービスすることはなく、１つのみのプライベートIPアドレス空間に対応すれば十分であった。
【００１３】
ところが、サーバ装置を、例えばデータセンタのように、複数の組織が個別に所有するネットワークを、VLAN(Virtual LAN)（VLANはIEEE802.1Qで定義される）などを使って１箇所に集約した場所に設置した場合には、以下のような問題が発生する。
すなわち、データセンタ内には、複数の組織のために定義された、プライベートIPアドレス空間を持つ複数のLANが存在する。そのためサーバ装置は各々のLAN（即ち各プライベートIPアドレス空間）からの要求を個別にサービスしなければならない。
【００１４】
TOE装置は、TCP/IPプロトコル処理を行なうために、自ホストを片方の端（例えばソケット端）として確立しているTCPコネクションの識別情報を保持する必要がある。従来のTOE装置は、コネクションの識別情報として、自IPアドレス番号、相手IPアドレス番号、自ポート番号、相手ポート番号の組を用いている。しかし、この方法では、パケットがどのネットワークに属しているかの情報がないため、複数のLANに接続した場合に、コネクションがどのLANに属するかの識別をすることが出来ない。
【００１５】
そのため、従来のTOE装置を用いたデータセンタ内のネットワークでは、互いにIPアドレスが衝突しないようにアドレスを付与しなければならなかった。従って、異なる企業間でもお互いにIPアドレスが衝突しないように管理しなければならず、大変不便であった。
【００１６】
さらに、従来のTOE装置には、ホストプロセッサがTCPコネクションを確立し、TOE装置に状態情報を渡す方式のものや、TOE装置がTCPコネクションを確立する方式のものが存在する。これらいずれのものでも、ホストプロセッサはTCPコネクションの識別情報をTOE装置に渡すホストプロセッサとTOE間のインターフェイスが必要となる。そして、その識別情報にはコネクションの属するネットワークの情報が含まれていなければならない。
【００１７】
さらに、TOE装置がコネクションを確立する場合には、相手ホストへのパケットをどのゲートウェイもしくはどのホストプロセッサへに渡す必要があるかを知るために、ルーティングテーブル（経路表）やARP表を参照する必要がある。しかし、ルーティングテーブルやARP表は、プライベートIPネットワーク毎に用意する必要があり、従来のTOE装置は複数のルーティングテーブルやARP表をLAN（プライベートIPアドレス空間）ごとに切り替えて参照する仕組みがない。
【００１８】
本発明の目的は、複数の論理分割されたネットワークに接続されるサーバ装置のＴＣＰプロトコル処理をオフロード可能なTOE装置を提供することにある。
本発明の他の目的は、ＴＣＰコネクションレベルまでネットワークを分離して、識別することができるネットワークプロトコル処理装置及び処理方法を提供することにある。
【課題を解決するための手段】
【００１９】
本発明に係るネットワークプロトコル処理装置は、自IPアドレス、相手IPアドレス、自ポート番号、相手ポート番号を含む情報、及びIEEE802.1Qで定義されるVLAN-IDを含む情報を用いて、TCPコネクションを識別するものである。これにより、IEEE802.1Qで定義されるVLAN-IDによりTCPコネクションレベル（OSI参照モデルのセッションレベル）までネットワークを識別することができる。
【００２０】
好ましい例では、ネットワークを通して受けるユーザからの要求を処理するホストプロセッサと、ホストプロセッサに接続され、ネットワークに接続されるネットワークポートと、TCP/IPプロトコル処理を行なうプロセッサと、TCPコネクションの識別情報を保持するメモリを有するTOE装置と、を有し、
自IPアドレス、相手IPアドレス、自ポート番号、相手ポート番号を示す情報、及びIEEE802.1Qで定義されるVLAN-IDを含むフレーム情報をTCPコネクションの識別情報として使用するサーバ装置として構成される。
また、好ましくは、ホストプロセッサから、VLAN-IDを含むTCPコネクションの識別情報を受け取るインターフェイスを有し、ホストプロセッサはTOE装置に対してVLAN-IDを含むTCPコネクションの識別情報を転送する。
【００２１】
本発明に係る、論理的に複数に分割されるネットワークに対するプロトコル処理を行うサーバ装置におけるネットワークプロトコル処理方法においては、ホストプロセッサで、あるユーザのネットワーク設定情報のＴＣＰコネクション情報として、少なくとも、自IPアドレス、相手IPアドレス、自ポート番号、相手ポート番号を示す情報、及びネットワークを論理的に複数に分割するために定義されたID、好ましくはIEEE802.1Qで定義されるVLAN-IDを含む情報を登録するＴＣＰコネクション情報テーブルを生成して、ＴＣＰコネクションを確立するステップと、ホストプロセッサからＴＣＰコネクション情報をTOE装置に渡すステップと、TOE装置で、ＴＣＰコネクション情報に基づき、新たにコネクションテーブルを生成して、コネクションテーブルに関する情報をコネクションリストに登録するステップとを有する。
そして、前記TOE装置において、コネクションリストを検索して、該コネクションテーブルが登録されているかをチェックするステップと、このチェックの結果、コネクションテーブルが登録されており、かつ送信すべきデータが有る場合、そのデータからTCP/IPパケットを生成し、パケットの特定のフィールドにIEEE802.1Qで定義されるVLAN-IDを格納して、該パケットをネットワークへ送出するステップとを有する。
【００２２】
また、一例では、TCPコネクションの識別情報により分離されたコネクション情報テーブルから参照される送信バッファと受信バッファをホストプロセッサとのデータインターフェイスとし、送信時には、該送信バッファからパケットを取り出し、送信パケットにVLAN-IDを含めて送出し、受信時には、ネットワークから受信したパケットに含まれるVLAN-IDを用いてコネクションを識別し、該VLAN-ID毎に分離されたコネクション情報テーブルから参照される受信バッファへパケットを格納する。
【発明の効果】
【００２３】
本発明によれば、ユーザ毎に論理的に分割されたネットワークに接続されたサーバ装置のTCPプロトコル処理をオフロードすることができ、ＴＣＰコネクションレベルまでネットワークを識別することができる。これにより、ネットワークの性能を生かし、ホストプロセッサの負荷の低下を防止することができる。
【発明を実施するための最良の形態】
【００２４】
以下、図面を参照して、本発明の実施形態について詳細に説明する。
図１は、一実施形態におけるサーバ装置が使用されるネットワークの物理的な構成図を示す。
【００２５】
サーバ装置102は、データセンタ101内に設置され、ホストプロセッサ103、ホスト内メモリ104、ネットワークプロトコル処理装置であるTOE装置106、ストレージI/F110、及びこれらを接続するバス又はスイッチ105を備えて構成される。
また、TOE装置106は、TOEプロセッサ107、TOE内メモリ108、ネットワーク物理ポート109を備えている。これらは相互に接続され、サーバ装置102内のホストプロセッサ103、ホスト内メモリ104とはPCI等のバスもしくはスイッチにより接続される。サーバ装置102は、物理LAN121を介して、データセンタ管理PC122、複数のサーバ123、125、及びゲートウェイ124、125等の他のコンピュータに接続される。
なお、データセンタ101は、インターネット130を介してユーザである、企業のPC131，132、又は一般ユーザのPC133，134等に接続される。
【００２６】
・IEEE802.1Qによるネットワークの論理分割について
図１に示す物理ポート109および物理LAN121は、IEEE802.1Qで定義されるVLAN機能により、図２ように論理的に分割される。
以下、図２を参照して、論理的なネットワークの構成について説明する。
【００２７】
TOE装置106内のネットワーク物理ポート（図１の109）は、IEEE802.1QのVLANタグ機能を用いて、図２の109m、109a、109bのような複数の仮想ポートに論理的に分割される。そして、各々の仮想ポートからサーバ装置102の外に接続されるネットワークは、IEEE802.1QのVLANタグ機能を用いて、論理的に複数の仮想的なネットワーク(VLAN)121m、121a、121bに分割される。
【００２８】
物理ポート及びネットワークの論理的な分割は以下のように行なわれる。
図３に本例のネットワーク上で伝搬されるイーサネットパケットフレームを示す。パケットには、通常のIEEE802.3で定義されるイーサネットフレームのフィールド、即ちプリアンブル、SFD、宛先MACアドレス、送信元MACアドレス、長さまたはタイプ、データまたはLLC、FCSの情報列に加えて、IEEE802.1Qで定義されるVLANタグフィールドの情報列、即ちTPID(Tag Protocol ID：タグプロトコル識別子)、及びTCI(Tag Control Information：タグプロトコル情報)の情報が含まれる。TPIDはこのフレームがタグ付きフレームであることを示す値(0x8100)が格納される。
【００２９】
図４にTCIの詳細を示す。
TCIは、各ユーザアプリケーションが設定する優先情報である、３ビットのユーザプライオリティ(User Priority)フィールドと、１ビットのCFI(Canonical Format Identifier)フィールドと、１２ビットのVID(VLAN tag Identifier)フィールドから構成される。このVID(VLAN tag Identifier)フィールドに、VLANタグ番号が格納される。
【００３０】
IEEE802.1Qでは、ネットワークに伝搬されるイーサネットパケットにこのVIDを含むことにより、ネットワークを論理的に複数に分割している。例えば、Ａ社用のイーサネットフレームのVIDには「１」が、Ｂ社のイーサネットフレームのVIDには「２」が割り当てられ、各々の組織に割り当てられた値がVIDフィールドに格納される。パケットのVIDフィールドの値により、物理的に１本のネットワークは仮想的に複数のネットワークに分割される。本例では物理ネットワーク１２１が、論理的に3つのネットワーク、即ち管理用VLAN121mと、Ａ社用のVLAN121aと、Ｂ社用のVLAN121bに分割される。
【００３１】
・サーバ内の論理分割
図５は、ホスト内メモリの記憶構成を示す。
サーバ装置102のホスト内メモリ104には、アプリケーションプログラムとして、装置管理プログラム501、Ａ社用管理プログラム502、Ａ社用ファイルサーバプログラム503、Ｂ社用管理プログラム504およびＢ社用ファイルサーバプログラム505が格納されている。これらは通常、ディスク装置127に記憶されていて、必要により読み出されてホスト内メモリ104に格納される。
【００３２】
装置管理プログラム501は、サーバ装置102上で稼働するアプリケーションプログラムであり、データセンタ管理ＰＣ122と通信し、Ａ社用管理プログラム502の起動、Ｂ社用管理プログラム504の起動、および、Ａ社環境情報522やＢ社環境情報523に対してディスク装置127等のデバイスのアクセス許可の変更などを行う。
【００３３】
Ａ社用管理プログラム502は、Ａ社用ファイルサーバプログラム503が稼働する設定を行い、Ａ社用ファイルサーバプログラム503を起動するとともに、Ａ社サーバ123と通信し、Ａ社用ファイルサーバプログラム503の停止、再開などを行う。
【００３４】
Ａ社用ファイルサーバプログラム503は、Ａ社サーバ123が要求するファイルアクセス要求を受付け、オペレーティングシステム（ＯＳ）500が提供するファイルシステム処理部543を利用し、ディスク装置127に対してファイルの書き込みや、読み出しを行い、結果をＡ社Ｗｅｂサーバ123に返す。
Ｂ社用管理プログラム504およびＢ社用ファイルサーバプログラム505の動作は、Ａ社用管理プログラム502およびＡ社用ファイルサーバプログラム503の動作と同様である。
【００３５】
オペレーティングシステム(ＯＳ)500には、各種の情報が格納され、この情報に基づいて、サーバ装置102上で稼働し、前述したアプリケーションプログラム501〜505に様々なインタフェースを提供し、プロセス情報の制御やＩ／Ｏ処理、ファイルシステムサービスなどを提供する。
【００３６】
このホスト内メモリ１０４に格納される情報としては、前述した各アプリケーションプログラム501〜505において、実行実体であるホストプロセッサ103の割り当てに必要な第１プロセス情報511、第２プロセス情報512、第３プロセス情報513、第４プロセス情報514、第５プロセス情報515と、これらの情報に基づいて、各種のアプリケーションプログラムが実行されるときにアクセス可能なデバイスなどの許可および制限情報である管理環境情報521、Ａ社環境情報522、およびＢ社環境情報523がある。また、環境情報521〜523内には、ネットワーク設定情報531〜533が含まれる。管理環境情報521内には管理ネットワーク設定情報531が含まれる。Ａ社環境情報522内にはＡ社ネットワーク設定情報532が含まれる。Ｂ社環境情報523内にはＢ社ネットワーク設定情報533が含まれる。
【００３７】
オペレーティングシステム(ＯＳ)500には、さらに、各種の処理部が格納される。ここで処理部とはＯＳの機能を果たすためのプログラムであり、これらには以下のものがある。すなわち、プロセス情報生成時に呼び出されるプロセス情報生成処理部541、プロセス情報が指すアプリケーションプログラムに対して停止、終了、再開等の制御を行うプロセス情報制御処理部542、プロセス情報が指すアプリケーションプログラムにアクセス可能なデバイスなどを許可および制限する情報を変更する時に呼び出される環境情報変更処理部543、デバイスなどへのアクセスの際、その正当性をチェックする許可デバイス判定処理部544、ファイルシステムサービスを提供するファイルシステム処理部545、ストレージＩ／Ｆ110に接続されるディスク装置127に入出力を行うストレージＩ／Ｏ処理部546およびネットワーク物理ポートを介して通信を行うネットワーク処理部547である。
【００３８】
第１プロセス情報511は、装置管理プログラム501を指すプロセス情報であり、装置管理プログラム501の動作を管理するための情報である。第１プロセス情報511は管理環境情報521に属し、この情報に基づいてアクセス可能なデバイスの制限を受ける。
【００３９】
第２プロセス情報512は、Ａ社用管理プログラム502を指すプロセス情報であり、Ａ社用管理プログラム502の動作を管理するための情報である。第３プロセス情報513は、Ａ社用ファイルサーバプログラム503を指すプロセス情報であり、Ａ社用ファイルサーバプログラム503の動作を管理するための情報である。第２プロセス情報512および第３プロセス情報513は、Ａ社環境情報522に属し、この情報に基づいてアクセス可能なデバイスの制限を受ける。
【００４０】
第４プロセス情報514は、Ｂ社用管理プログラム504を指すプロセス情報であり、Ｂ社用管理プログラム504の動作を管理するための情報である。第５プロセス情報515は、Ｂ社用ファイルサーバプログラム505を指すプロセス情報であり、Ｂ社用ファイルサーバプログラム505の動作を管理するための情報である。第４プロセス情報514および第５プロセス情報515は、Ｂ社環境情報523に属し、この情報に基づいてアクセス可能なデバイスの制限を受ける。
【００４１】
管理環境情報521は、装置管理を行うため、データセンタ管理者のみが管理者用ＰＣ122から管理VLAN121mを介してアクセスすることができ、全てのデバイスに対するアクセス権を管理するための情報を保持するように管理される。
【００４２】
Ａ社環境情報522は、Ａ社のファイルサーバプログラム503の稼働環境情報を提供するため、データセンタ101とＡ社との契約によりＡ社に許可されるネットワーク用仮想ポート109a、ディスク装置127のデバイスへのアクセス権を管理するための情報を保持するようにデータセンタ管理者用ＰＣ122により管理される。Ａ社のファイルサーバ503によるディスク装置127へのアクセス権、および、Ａ社ネットワーク用仮想ポート109aの使用は、契約により許可される。
【００４３】
Ｂ社環境情報522は、Ｂ社のファイルサーバプログラム505の稼働環境情報を提供するため、データセンタ101とＢ社との契約によりＢ社に許可されるネットワーク用仮想ポート109b、ディスク装置127のデバイスへのアクセス権を管理するための情報を保持するようにデータセンタ管理者用ＰＣ122により管理される。Ｂ社のファイルサーバ505によるディスク装置127へのアクセス権、および、Ｂ社ネットワーク用仮想ポート109bの使用は、契約により許可される。
【００４４】
プロセス情報生成処理部541は、装置管理プログラム501、Ａ社用管理プログラム502およびＢ社用管理プログラム504により呼び出されるプログラムである。プロセス情報生成処理部541は、これを呼び出したアプリケーションプログラムと同じ環境情報に属するプロセス情報を生成する機能を有する。これに加え、環境情報を指定することで、新たな環境情報を生成し、その環境情報に属するプロセス情報を生成する機能も有する。ただし、新たな環境情報を生成する機能は、管理環境情報521に属する装置管理プログラム501の実行でのみ可能である。すなわち、管理者権限をデータセンタ管理者のみに与える。
【００４５】
プロセス情報制御処理部542は、プロセス情報が指すアプリケーションプログラムに対して停止、終了、再開等の制御を行うことができる。この機能は、管理環境情報521に属する第１プロセス情報511が指す装置管理プログラム501からは全てのアプリケーションプログラムに対して制御することができるが、管理環境情報521以外に属するプロセス情報が指すアプリケーションプログラム（Ａ社環境情報522およびＢ社環境情報523に属する第２プロセス情報512から第５プロセス情報515が指すプログラム）からは、同一環境情報に属するアプリケーションプログラムに対してのみ制御することができる。
【００４６】
環境情報変更処理部543は、指定した環境情報に対してデバイスのアクセスの許可・禁止を設定、変更することができる。この機能は、管理環境情報521に属する第１プロセス情報511が指す装置管理プログラム501のみが実行可能である。すなわち、管理者権限をデータセンタ管理者のみに与える。
【００４７】
許可デバイス判定処理部544は、アプリケーションプログラムからデバイスへのアクセスが要求されたとき、アクセスを要求したアプリケーションプログラムを指すプロセス情報が属する環境情報を参照する。アクセスしようとするデバイスがそのアプリケーションプログラムにアクセス許可されていない場合、デバイスへのアクセスは失敗となる。
【００４８】
ファイルシステム処理部543は、ディスク上のデータ配置を管理し、ディスク領域を用いて木構造の名前空間の提供と、ファイル格納を可能にしている。名前空間は、ルートディレクトリと呼ぶ木の根を「／」で表し、ファイル名探索の起点としている。また、名前を持つディレクトリと呼ぶ木の節、および、名前を持つファイルと呼ぶ木の葉を持つ。ディレクトリは、下位のディレクトリやファイル名を格納し、ディレクトリ間の区切りに「／」を用いる。複数のディスクに作成された木構造の名前は、マウント（ｍｏｕｎｔ）操作により、一方の根を節に接続することができる。各環境情報521〜523には、ファイルシステムのマウントテーブルがあり、環境情報毎に木の一部を変更することができる。また、環境情報生成時には、生成する環境情報のルートディレクトリを、指定したディレクトリに変更することができる。これにより、指定したディレクトリ以外のファイルを、環境情報に属するプロセス情報が指すアプリケーションプログラムからアクセスできないようにすることができる。
【００４９】
ストレージＩ／Ｏ処理部546は、ストレージＩ／Ｆ110に接続されるディスク装置127への入出力を行う。入出力を要求するプロセス情報が指すアプリケーションプログラムは、第一に、ストレージＩ／Ｏ処理部にストレージデバイスのオープン（ｏｐｅｎ）処理を行い、後続の処理で使用するハンドルを得る。ｏｐｅｎ処理では、許可デバイス判定処理部544を呼び、指定されたデバイスがアクセス許可されていることを確認する。許可されていないときは、ｏｐｅｎ処理はできず、デバイスへのアクセスは失敗となる。
【００５０】
ネットワーク処理部544は、ネットワークプロトコル処理(TOE)装置106を介して他のサーバ装置との通信を行う。ネットワーク処理部544には、TCPコネクション開設までのプログラムが格納される。ホストプロセッサは、同プログラムを実行しTCPコネクションを開設する。
【００５１】
図６は、図５におけるＡ社環境情報522の詳細な例を示す。
Ａ社環境情報522には、Ａ社のネットワーク設定情報532が含まれる。
ネットワーク設定情報532は、使用可能ポートリスト601、ＡＲＰ表602、ルーティングテーブル603、コネクションリスト604、及びＴＣＰコネクション情報テーブル605を含む。
【００５２】
図７は、上述の使用可能ポートリスト601の詳細な例を示す。
このポートリスト601には、Ａ社が使用可能なネットワークポートが記されている。この例では、Ａ社は、物理ポート番号が「０」、VIDが「１」の仮想ポートのみを使用可能であり、そのIPアドレスが192.168.0.1であることが示されている。
【００５３】
図８は、上述のＡＲＰ表602の詳細な例を示す。
ＡＲＰ表602は、同一のVLANに接続された他のホストのIPアドレスとMACアドレスとの対応関係を示している。この図の例では、第１のエントリは、IPアドレスが192.168.0.1のホストのMACアドレスが00-11-22-00-11-01であることを示している。さらに、第２のエントリは、IPアドレスが192.168.0.2のホストのMACアドレスが00-11-22-00-11-02であることを示している。以下同様である。
【００５４】
図９は、ルーティングテーブル603の詳細な例を示す。
ルーティングテーブルは、宛先ホストのIPアドレスが与えられた時に、そのパケットを次に転送すべきホスト(next step)を示すテーブルである。図示のルーティングテーブル603は、Ａ社ネットワーク設定情報532内の例で、Ａ社の環境に割り当てられたホストのIPアドレスが192.168.0.1、デフォルトゲートウェイが192.168.0.254の場合である。
【００５５】
第１のエントリは、IPアドレスが192.168.0.1のホスト（すなわち自分自身）へのIPパケットは、"lo"(loopback)インターフェイスを介して、127.0.0.1(local host address)へ送出すべきであることを表している。第２のエントリは、192.168.0.0（ただし、ネットマスクが255.255.0.0なので下位16ビットは何でもよい）へのパケットは"eth0"インターフェイスを介して、ゲートウェイを介さず、宛先IPアドレスへ直接送付すべきであることを表している。
【００５６】
第３のエントリは、127.0.0.0（ただし、ネットマスクが255.0.0.0なので下位24ビットは何でもよい）へのパケットは、"lo"(loopback)インターフェイスを介して、127.0.0.1(local host address)へ送出すべきであることを表している。第４のエントリは、上記エントリのいずれにも当てはまらないIPアドレスへのパケットは、"eth0"インターフェイスを介して192.168.0.254（デフォルトゲートウェイ）へ送出すべきであることを表している。
なお、同表の「メトリック」の列は、宛先ホストまでの距離を表し、到達可能な複数の経路が見付かった場合の、経路比較のために用いられるが、本例では全て「１」となっており、比較には用いられない。
【００５７】
さらに、ネットワーク設定情報532内には、コネクションリスト604とTCPコネクション情報テーブル605が含まれる。TCPコネクション情報テーブル605は、Ａ社の環境下のプロセスが生成したTCPコネクションの情報を含む。TCPコネクション情報テーブル605は、TCPコネクションごとに生成される。コネクションリスト604は、Ａ社の環境において生成されたTCPコネクション情報テーブル605の一覧が、ポインタのリストの形式で格納される。
【００５８】
送信ソケットバッファ606と受信ソケットバッファ607はTCPコネクション毎に生成される。各バッファには、送信データと受信データが格納され、ホストとTOE装置とのデータ受け渡しのインターフェイスとして用いられる。TCPコネクション情報テーブル605内の、送信ソケットバッファアドレスフィールド（605の#10）と受信ソケットバッファアドレスフィールド(605の#11)にそれらのアドレスが格納される。
【００５９】
・TCPコネクションの開設
本実施例のサーバ装置は、TCPコネクションの確立までの手続きは、ホストプロセッサ103が行う。TOE装置106はTCPコネクション確立までの間、通常のNIC(Network Interface Card)として動作する。TOE装置106は、ホスト内メモリ領域104のNICインターフェイスバッファ541の送信バッファ551から、イーサネットフレーム形式で格納されたパケットを取り出してネットワークへ送出し、ネットワークから受信したパケットを、イーサネットフレーム形式で、ホスト内メモリ領域のNICインターフェイスバッファ541の受信バッファ552へ格納する。TOE装置がNICとして動作している間、ホストプロセッサは、NICインターフェイスバッファ541の送信バッファ551と受信バッファ552を介してTOE装置とデータの受け渡しを行なう。これはイーサネットフレームのレベルで行なわれる。TOE装置がNICとして動作している間、TCP/IPのプロトコル処理はホストプロセッサが行なう。
【００６０】
ホストプロセッサ103は、Ａ社用ファイルサーバプログラム503に書かれたコネクション開設の命令を実行すると、ホスト内メモリ上104のＡ社環境情報522内のＡ社ネットワーク設定情報532内にTCPコネクション情報テーブル605を生成し、コネクションリスト604に新たにエントリを生成し、TCPコネクション情報テーブル605のアドレスを登録する。さらに送信ソケットバッファ606と受信ソケットバッファ607を確保し、それらのアドレスを、TCPコネクション情報テーブル605の送信ソケットバッファアドレス(605の#10)と受信ソケットバッファアドレス(605の#11)のフィールドに設定する。
【００６１】
そして、相手ホストとのTCPコネクション開設の手続きを実施する。コネクションの開設の際、イーサヘッダ（図３）のVIDフィールド（図４の#3）にはＡ社に割り当てられたVLAN-ID、すなわち、使用可能ポートリスト601に示されたVIDの値を格納する。なお、TCPコネクション開設は、一般にthree way hand shake方式として知られている手順に従って行う。
【００６２】
ホストプロセッサ103が相手ホストとのTCPコネクションを確立した時点で、そのコネクションの状態を表すTCPコネクション情報テーブル605には以下の内容が登録される。
【００６３】
(1)VLAN-ID：本コネクションが張られたVLANのID番号。
(2)自IPアドレス：Ａ社仮想サーバのIPアドレス。使用可能ポートリストより算出する。
(3)相手IPアドレス：通信相手となるホストのIPアドレス。Ａ社用ファイルサーバプログラムより指定される。
(4)自ポート番号：自分のポート番号。Ａ社用ファイルサーバプログラムより指定される。
(5)相手ポート番号：通信相手のポート番号。Ａ社用ファイルサーバプログラムより指定される。
(6)送信SEQ番号：送信ストリームのシーケンス番号。コネクション開設手順にて決定する。
(7)受信SEQ番号：送信ストリームのシーケンス番号。コネクション開設手順にて決定する。
(8)送信ウィンドウスケール：送信ウィンドウサイズのビットシフト値。コネクション開設手順にて決定する。
(9)受信ウィンドウスケール：受信ウィンドウサイズのビットシフト値。コネクション開設手順にて決定する。
(10)送信バッファアドレス：送信ソケットバッファのアドレス。
(11)受信バッファアドレス：受信ソケットバッファのアドレス。
【００６４】
・TCPコネクションのオフロード
TCPコネクションが確立する(ESTABLISHED状態になる)と、ホストプロセッサ103は、図１０に示すコネクション情報ブロック1001にホスト側のコネクション状態情報を格納してTOE装置106に渡す。以下に、コネクション情報ブロック1001の各フィールドを説明する。
【００６５】
(1)VLAN-ID：TCPコネクション情報テーブルよりコピー。
(2)自IPアドレス：同上。
(3)相手IPアドレス：同上。
(4)自ポート番号：同上。
(5)相手ポート番号：同上。
(6)自MACアドレス：自ホスト内物理ポートのMACアドレス。自ホストIPアドレスをキーにARP表を検索して算出する。
(7)相手MACアドレス：相手ホストもしくはゲートウェイのMACアドレス。相手IPアドレスをキーとして、ルーティングテーブルを検索して送出先IPアドレスを算出し、さらにARP表を検索して送出先IPアドレスのMACアドレスを算出する。
(8)送信SEQ番号：TCPコネクション情報テーブルよりコピー。
(9)受信SEQ番号：同上。
(10)送信ウィンドウスケール：同上。
(11)受信ウィンドウスケール：同上。
(12)送信バッファアドレス：同上。
(13)受信バッファアドレス：同上。
【００６６】
TOE装置106では、TOEプロセッサ107がコネクション情報ブロック1001の情報に基づき、TOE装置内メモリ108に、図１２のような、新たにコネクションテーブル1202を１つ生成し、このテーブルのポインタをコネクションリスト1201へ追加登録する。
【００６７】
・送信手順
次に、図１４に従って、サーバ装置102がパケットを送信する手順について説明する。
【００６８】
Ａ社のプロセス（Ａ社用管理プログラム502を実行する第２プロセス512や、ファイルサーバプログラム503を実行する第３プロセス513は、コネクション確立後のパケット送信時には、送信ソケットバッファ606にデータを格納し、パスまたはスイッチ105を介してTOE装置106へ送信開始信号を送出する（キックする）。もしくはTOE装置106がタイマにより一定時間間隔で自らをキックしてもよい。キックされたTOE装置106は、図１４のフローチャートに従って送信処理を行なう（1401）。
【００６９】
TOEプロセッサ107はコネクションリスト1201を検索し(1402)、コネクションテーブル1202に登録された送信ソケットバッファ606のデータの有無を調べる(1403)。送信ソケットバッファ606にデータがあれば、データからTCP/IP/Etherパケットを生成する（TCP/IPプロトコル処理）(1404)。このとき、イーサヘッダ（図３）のVIDフィールド（図３の#6のTCIの詳細を示す図４中の#3）には、コネクションテーブル1202のVLAN-ID(#1)の値を格納する(1405)。そしてデータをネットワークへ送出する(1406)。
【００７０】
これを送信ソケットバッファ606が空になるまで繰り返し、さらに、これをコネクションリスト1201に登録されている全てのコネクションテーブル1202について繰り返す(1408)。
【００７１】
・受信手順
次に、図１５を参照して、サーバ装置102がパケットを受信する手順を説明する。
TOE装置106には、VLANタグ付きイーサネットパケットが物理ポート109から入力される。TOE装置内106のTOEプロセッサ107がパケット受信時に実行する処理手順を図１５のフローチャートに示す。
【００７２】
TOEプロセッサ107はパケットを受信すると、コネクションリスト1201にコネクションテーブル1202が登録されているか検査する(1502)。次に、受信パケット内のVID（図３の#6のTCIの詳細を示す図４中の#3）と自IPアドレス、相手IPアドレス、自ポート番号、相手ポート番号が、登録されているコネクションテーブル1202の値と全て一致するかどうか検査する(1503)。もし全て一致すれば、そのパケットはそのコネクションに属するため、受信したパケットの通常のTCP受信処理、即ちデータからTCP/IP/Etherヘッダの除去、ACK送信、SEQ増加などの処理を行い(1504)、ヘッダを取り除いたデータを受信ソケットバッファ607へ格納する(1505)。もし、値が一致しない場合には、他の全てのコネクションテーブル605について上記を繰り返す(1508)。パケットがどのコネクションにも属さない場合、TOEプロセッサ107はNICインターフェイスバッファ541の受信バッファ552へパケットを格納する(1506)。最後に、受信割り込み通知信号をホストプロセッサへ通知し(1507)、受信処理を終了する(1509)。
【００７３】
・他の実施形態
上述した実施例他の実施形態として、例えばコネクションの開設や、ルーティングの解決や、ARPの解決等をTOEが実施する形態が考えられる。このために、図１１のようにコネクション情報ブロック1101内に、ARP表アドレス(#14)とルーティングテーブルアドレス(#15)を加え、TOE装置106内のメモリ108には図１３のように、コネクションテーブル1203内に、ARP表アドレス(#14)とルーティングテーブルアドレス(#15)を加える。
【００７４】
これにより、TOE装置は、例えば新たにコネクションを開設する場合、もしくは、ネットワーク構成が変更され、相手ホストまでの経路が変化した場合、ホスト内メモリのARP表602、ルーティングテーブル603を参照し、ゲートウェイのIPアドレスやMACアドレスを解決することにより、前記実施例でホストプロセッサが実行していたコネクションの開設等が実行可能になる。
【００７５】
このように、従来のTOE装置では、VLAN-IDによるネットワークの分離、区別をイーサネットレベル（OSI参照モデルのデータリンク層）までしかおこなっていなかったが、本実施形態によって、VLAN-IDによりTCPコネクションレベル（OSI参照モデルのセッションレベル）までネットワークを分離、区別できる。
【図面の簡単な説明】
【００７６】
【図１】本発明の一実施例によるサーバ装置１０２を含むネットワークの物理的な構成を示す図。
【図２】一実施例によるサーバ装置１０２を含むネットワークの論理的な構成を示す図。
【図３】一実施例におけるVLANタグ付きイーサネットフレームの構成を示す図。
【図４】一実施例におけるTCIの詳細を示す図。
【図５】一実施例におけるホスト内メモリ104の記憶構成を示す図。
【図６】ホスト内メモリ104に格納されるＡ社環境情報522の例を示す図。
【図７】図６に示される使用可能ポートリスト601の例を示す図。
【図８】図６に示されるＡＲＰ表602の例を示す図。
【図９】図６に示されるルーティングテーブル603の例を示す図。
【図１０】一実施例におけるコネクション情報ブロックの例１を示す図。
【図１１】一実施例におけるコネクション情報ブロックの例２を示す図。
【図１２】一実施例におけるＴＯＥ装置内メモリ108の例１を示す図。
【図１３】一実施例におけるＴＯＥ装置内メモリ108の例２を示す図。
【図１４】一実施例における送信手順を示すフローチャートを示す図。
【図１５】一実施例における受信手順を示すフローチャートを示す図。
【符号の説明】
【００７７】
１０１：データセンタ                １０２：サーバ装置
１０３：ホストプロセッサ            １０４：ホスト内メモリ
１０５：バス又はスイッチ            １０６：TOE装置
１０７：TOEプロセッサ              １０８：TOE内メモリ
１０９：ネットワーク用物理ポート    １１０：ストレージI/F
１２１：物理LAN                    １２２：データセンタ管理PC
１２３，１２５：サーバ              １２４，１２６：ゲートウェイ
１２７：ディスク装置。
【図１】
2005316629.tif 000003
【図２】
2005316629.tif 000004
【図３】
2005316629.tif 000005
【図４】
2005316629.tif 000006
【図５】
2005316629.tif 000007
【図６】
2005316629.tif 000008
【図７】
2005316629.tif 000009
【図８】
2005316629.tif 000010
【図９】
2005316629.tif 000011
【図１０】
2005316629.tif 000012
【図１１】
2005316629.tif 000013
【図１２】
2005316629.tif 000014
【図１３】
2005316629.tif 000015
【図１４】
2005316629.tif 000016
【図１５】
2005316629.tif 000017