(57)【要約】      （修正有）【課題】アプリケーションプログラムの改変を必要とすることなく、複数のＮＩＣを仮想的に一つのＮＩＣとして見せかけるネットワークシステムを提供する。【解決手段】  仮想チャネルと物理チャネルとの対応関係を物理チャネル情報に記憶し、設定された仮想チャネルと物理チャネルとの対応関係を、データ送信命令の宛先となる仮想ネットワークインターフェースを備える第２の計算機に送信し、第２の計算機は、仮想チャネルと物理チャネルとの対応関係を受信した場合に、受信した仮想チャネルと物理チャネルとの対応関係を物理チャネル情報に記憶し、第１の計算機は、記憶された対応関係に基づいて、データ送信命令に係るデータを、仮想チャネルに対応付けられた一つ又は複数の物理チャネルを用いて送信する。【選択図】図１
2008294717.tif 000002
【特許請求の範囲】
【請求項１】
一つ又は複数の物理ネットワークインターフェースを備えた第１の計算機及び第２の計算機と、前記第１の計算機と前記第２の計算機とを前記物理ネットワークインターフェースを介して通信可能に接続するネットワークと、によって構成されたネットワークシステムにおいて、前記第１の計算機と前記第２の計算機との間の仮想的なネットワークを構成する仮想ネットワーク構成方法であって、
前記第１の計算機は、
前記第１の計算機上で稼動するアプリケーションによるデータ送受信に使用される仮想ネットワークインターフェースを設定し、
前記設定された仮想ネットワークインターフェースと前記第２の計算機に設定された仮想ネットワークインターフェースとの間に仮想チャネルを設定して、前記設定された仮想チャネルと前記仮想ネットワークインターフェースとの対応関係を仮想チャネル情報として記憶し、
前記第１の計算機の物理ネットワークインターフェースと前記第２の計算機の物理ネットワークインターフェースとの間に物理チャネルを設定して、前記設定された物理チャネルと前記物理ネットワークインターフェースとの対応関係を物理チャネル情報として記憶し、
前記仮想チャネルを使用して送受信されるデータのトラフィックを集計し、前記集計結果を前記仮想チャネル情報に記憶し、
前記仮想ネットワークインターフェースに対するデータ送信命令を検知した場合に、予め設定された前記仮想チャネルの優先度と前記記憶された統計情報とに基づいて、前記仮想ネットワークインターフェースに設定された仮想チャネルと一つ又は複数の前記物理チャネルとの対応関係を設定して、前記設定された仮想チャネルと物理チャネルとの対応関係を前記物理チャネル情報に記憶し、
前記設定された仮想チャネルと物理チャネルとの対応関係を、前記データ送信命令の宛先となる仮想ネットワークインターフェースを備える前記第２の計算機に送信し、
前記第２の計算機は、
前記仮想チャネルと物理チャネルとの対応関係を受信した場合に、前記受信した仮想チャネルと物理チャネルとの対応関係を前記物理チャネル情報に記憶し、
前記第１の計算機は、前記記憶された対応関係に基づいて、前記データ送信命令に係るデータを、前記仮想チャネルに対応付けられた一つ又は複数の前記物理チャネルを用いて送信することを特徴とする仮想ネットワーク構成方法。
【請求項２】
前記第１の計算機は、前記仮想ネットワークインターフェースを設定する場合に、前記仮想ネットワークインターフェースの追加情報をブロードキャストによって通知し、
前記第２の計算機は、前記仮想ネットワークインターフェースの追加情報の通知を受信した場合に、予め設定された前記仮想チャネルの優先度と前記記憶された統計情報とに基づいて、前記仮想チャネルと一つ又は複数の前記物理チャネルとの対応関係を設定して、前記設定された仮想チャネルと物理チャネルとの対応関係を前記物理チャネル情報に記憶することを特徴とする請求項１に記載の仮想ネットワーク構成方法。
【請求項３】
前記第１の計算機は、前記設定された仮想チャネルと物理チャネルとの対応関係を前記データ送信命令の宛先となる仮想ネットワークインターフェースを有する計算機に送信する場合に、前記データ送信命令に基づいて送信されるパケットに前記対応関係を示す識別子を付加して、前記データ送信命令の宛先となる仮想ネットワークインターフェースを備える計算機に送信することを特徴とする請求項１に記載の仮想ネットワーク構成方法。
【請求項４】
一つ又は複数の物理ネットワークインターフェースを備えた第１の計算機及び第２の計算機と、前記第１の計算機と前記第２の計算機とを前記物理ネットワークインターフェースを介して通信可能に接続するネットワークにおいて、
前記第１及び第２の計算機のそれぞれは、
前記第１の計算機と前記第２の計算機との間の仮想ネットワークを管理する仮想ネットワーク機構と、
前記仮想ネットワークインターフェースに関する情報を記憶する記憶部と、
を備え、
前記第１の計算機の仮想ネットワーク機構は、
前記第１の計算機上で稼動するアプリケーションによるデータ送受信に使用される仮想ネットワークインターフェースを設定し、
前記設定された仮想ネットワークインターフェースと前記第２の計算機に設定された仮想ネットワークインターフェースとの間に仮想チャネルを設定して、前記設定された仮想チャネルと前記仮想ネットワークインターフェースとの対応関係を仮想チャネル情報として前記記憶部に記憶し、
前記第１の計算機の物理ネットワークインターフェースと前記第２の計算機の物理ネットワークインターフェースとの間に物理チャネルを設定して、前記設定された物理チャネルと前記物理ネットワークインターフェースとの対応関係を物理チャネル情報として前記記憶部に記憶し、
前記仮想チャネルを使用して送受信されるデータのトラフィックを集計し、前記集計結果を前記記憶部に記憶されている仮想チャネル情報に記憶し、
前記仮想ネットワークインターフェースに対するデータ送信命令を検知した場合に、予め設定された前記仮想チャネルの優先度と前記記憶部に記憶された統計情報とに基づいて、前記仮想ネットワークインターフェースに設定された仮想チャネルと一つ又は複数の前記物理チャネルとの対応関係を設定して、前記設定された対応関係を前記記憶部の前記物理チャネル情報に記憶し、
前記設定された仮想チャネルと物理チャネルとの対応関係を、前記データ送信命令の宛先となる仮想ネットワークインターフェースを有する前記第２の計算機に送信し、
前記第２の計算機の仮想ネットワーク機構は、
前記仮想チャネルと物理チャネルとの対応関係を受信した場合に、前記受信した仮想チャネルと物理チャネルとの対応関係を、前記記憶部の前記前記物理チャネル情報に記憶し、
前記第１の計算機の仮想ネットワーク機構は、前記記憶部に記憶された対応関係に基づいて、前記データ送信命令に係るデータの送受信を、前記仮想チャネルに対応付けられた一つ又は複数の前記物理チャネルを用いて送信することを特徴とするネットワークシステム。
【請求項５】
前記第１の計算機の仮想ネットワーク機構は、前記仮想ネットワークインターフェースを設定する場合に、前記仮想ネットワークインターフェースの追加情報をブロードキャストによって通知し、
前記第２の計算機の仮想ネットワーク機構は、前記仮想ネットワークインターフェースの追加情報の通知を受信した場合に、予め設定された前記仮想チャネルの優先度と前記集計された統計情報とに基づいて、前記仮想チャネルと一つ又は複数の前記物理チャネルとの対応関係を設定して、前記設定された仮想チャネルと物理チャネルとの対応関係を、前記記憶部の前記物理チャネル情報に記憶することを特徴とする請求項４に記載のネットワークシステム。
【請求項６】
前記第１の計算機の仮想ネットワーク機構は、前記設定された仮想チャネルと物理チャネルとの対応関係を前記データ送信命令の宛先となる仮想ネットワークインターフェースを有する計算機に送信する場合に、前記データの送信命令に係るパケットに前記対応関係を示す識別子を付加して、前記データ送信命令の宛先となる仮想ネットワークインターフェースを有する計算機に送信することを特徴とする請求項４に記載のネットワークシステム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、計算機間に構成される仮想ネットワークを構成して管理する仮想ネットワーク構成方法及びネットワークシステムに関する。
【背景技術】
【０００２】
近年、計算機システムにおいて、ネットワーク接続の高速化が重要な課題となっている。特に、サーバ間のデータのバックアップ処理では、サーバ間の広帯域なデータ転送が必要となる。
【０００３】
従来から、計算機のネットワークの広帯域化技術として、複数のネットワークインターフェースカード(以下、ＮＩＣと呼ぶ)を束ねて、仮想的に一つのインターフェースに見せかける技術が存在する。
【０００４】
例えば、Ｌｉｎｕｘオペレーティングシステムにおいては、Ｂｏｎｄｉｎｇ技術が用いられている。Ｂｏｎｄｉｎｇは、複数の異なるネットワークアドレスを持つＮＩＣから通信があった場合に、それぞれの通信を別のＮＩＣに割り当てることによって、ネットワークの帯域を広げることができる（例えば、非特許文献１参照。）。
【０００５】
また、ＩＥＥＥで策定されている８０２．３ａｄ規格であるリンクアグリゲーション技術が知られている。リンクアグリゲーションは、複数のＮＩＣを一つの仮想的なポート（トランク）として見せることによって、複数のＮＩＣに対して一つのＭＡＣアドレスを設定する。このトランクに設定されたＭＡＣアドレスに対するアクセスは、トランクに属する複数のＮＩＣに振り分けられて転送される（例えば、非特許文献２参照。）。
【０００６】
また、ＰＭライブラリという技術も公開されている。ＰＭライブラリは、アプリケーションプログラムは仮想的なインターフェース(チャネル)に対してパケットを送信する。インターフェースに対して送信されたパケットは、仮想的なインターフェースのテーブルに記述された宛先の計算機のＮＩＣのアドレス及び宛先の計算機のＮＩＣのアドレスを指定されて送信される。このとき、送信元の計算機及び宛先の計算機に複数のＮＩＣが備わる場合に、宛先、送信元のＮＩＣの中から一つの組を選択してパケトを送信する。複数のパケット送信を非同期に行う場合、物理的なインターフェースに並列にパケットが送信され、同時に複数のＮＩＣの帯域を使用することができる。このような構成によって、帯域が増加する。また、明示的に送信元、宛先のアドレスを指定するため、二つの計算機間の通信においても並列にデータが転送され、複数のＮＩＣの帯域を使用することができる（例えば、非特許文献３参照。）。
【非特許文献１】Ｔｈｏｍａｓ  Ｄａｖｉｓ他、「イーサネット結合ドライバ」、［online］、２０００年１０月３日、インターネット＜URL：http://www.linux.or.jp/JF/JFdocs/kernel-docs-2.4/networking/bonding.txt＞
【非特許文献２】「802.3ad-2000 Local and Metropolitan Area Networks - Part 3」、ＩＥＥＥ、２０００年
【非特許文献３】手塚宏史、堀敦史、石川裕、「ワークステーションクラスタ用通信ライブラリＰＭの設計と実装」、並列処理シンポジウムＪＳＰＰ‘９６、情報処理学会、１９９６年、ｐ．４１−４８
【発明の開示】
【発明が解決しようとする課題】
【０００７】
前述の非特許文献１に記載された技術では、二つの計算機間のデータ転送において、同一のネットワークアドレスからのパケットの受信には、常に同一のＮＩＣで処理される。そのため、二つの計算機間では、常に同じ一つのＮＩＣでパケットを受信するため、二つの計算機間で広帯域な通信をするために、データを複数のＮＩＣに振り分けることができない。
【０００８】
また、前述の非特許文献２に記載された技術では、すべてのＮＩＣが同一のネットワークスイッチに接続されている必要がある。そのため、ネットワーク構成に制限がある。また、トランクに属するＮＩＣはすべて同一のネットワークスイッチに接続されている必要があり、中継するすべての機器がリンクアグリゲーションに対応している必要がある。
【０００９】
また、非特許文献３に記載された技術は、仮想的なチャネルをＭＡＣアドレスで示される物理的なデバイスに明示的にマッピングする。このようにすることによって複数のＮＩＣにパケットを分散させて並列にパケットを送受信できる。従って、二つの計算機間のデータ転送においても、帯域を増加させることが可能となる。
【００１０】
しかしながら、非特許文献３に記載のＰＭライブラリは、専用のライブラリによって構成されたプログラムである。そのため、上位のアプリケーションがＰＭライブラリの「チャネル」に必要な処理を認識した上でネットワーク処理を実行させる必要がある。これは、既存のアプリケーションプログラムを改変なく動作させることが難しいことを意味する。
【００１１】
特に、仮想チャネルを物理的なＮＩＣにマッピングするためのスケジューリングの方法が課題となる。
【００１２】
非特許文献３に記載のＰＭライブラリでは、アプリケーションプログラムが仮想チャネルを物理的なＮＩＣに明示的にマッピングする。このマッピングが完了した後、仮想的なチャネルに送信されたパケットは、送信側、受信側のアドレスともマッピングされた物理インターフェースのアドレスに書き換えられる。複数のＮＩＣがマッピングされているときには、順にその中から一つのＮＩＣを選ぶことによって、複数のＮＩＣで並列にデータを送信することができる。各アプリケーションはアプリケーションの特性に従ってスケジューリングすることが可能である。
【００１３】
これに対して、一般的なＥｔｈｅｒｎｅｔ（登録商標、以下同じ）では、仮想的なチャネルを物理的なＮＩＣにマッピングするという概念はないため、仮想ネットワークの処理を実行する制御システムによるスケジューリングが必要となる。
【００１４】
本発明は、上記問題点を鑑みて、仮想的なＮＩＣ間の通信を仮想的なチャネル、及び、物理的なインターフェースに割り当てることによって、アプリケーションプログラムの改変を必要とすることなく、複数のＮＩＣを仮想的に一つのＮＩＣとして見せかけるネットワークシステムを提供することを目的とする。
【課題を解決するための手段】
【００１５】
本発明の一実施態様によると、一つ又は複数の物理ネットワークインターフェースを備えた第１の計算機及び第２の計算機と、前記第１の計算機と前記第２の計算機とを前記物理ネットワークインターフェースを介して通信可能に接続するネットワークと、によって構成されたネットワークシステムにおいて、前記第１の計算機と前記第２の計算機との間の仮想的なネットワークを構成する仮想ネットワーク構成方法であって、前記第１の計算機は、前記第１の計算機上で稼動するアプリケーションによるデータ送受信に使用される仮想ネットワークインターフェースを設定し、前記設定された仮想ネットワークインターフェースと前記第２の計算機に設定された仮想ネットワークインターフェースとの間に仮想チャネルを設定して、前記設定された仮想チャネルと前記仮想ネットワークインターフェースとの対応関係を仮想チャネル情報として記憶し、前記第１の計算機の物理ネットワークインターフェースと前記第２の計算機の物理ネットワークインターフェースとの間に物理チャネルを設定して、前記設定された物理チャネルと前記物理ネットワークインターフェースとの対応関係を物理チャネル情報として記憶し、前記仮想チャネルを使用して送受信されるデータのトラフィックを集計し、前記集計結果を前記仮想チャネル情報に記憶し、前記仮想ネットワークインターフェースに対するデータ送信命令を検知した場合に、予め設定された前記仮想チャネルの優先度と前記記憶された統計情報とに基づいて、前記仮想ネットワークインターフェースに設定された仮想チャネルと一つ又は複数の前記物理チャネルとの対応関係を設定して、前記設定された仮想チャネルと物理チャネルとの対応関係を前記物理チャネル情報に記憶し、前記設定された仮想チャネルと物理チャネルとの対応関係を、前記データ送信命令の宛先となる仮想ネットワークインターフェースを備える前記第２の計算機に送信し、前記第２の計算機は、前記仮想チャネルと物理チャネルとの対応関係を受信した場合に、前記受信した仮想チャネルと物理チャネルとの対応関係を前記物理チャネル情報に記憶し、前記第１の計算機は、前記記憶された対応関係に基づいて、前記データ送信命令に係るデータを、前記仮想チャネルに対応付けられた一つ又は複数の前記物理チャネルを用いて送信することを特徴とする。
【００１６】
なお、優先度の指標として、事前に定められた並列接続の数、仮想ネットワーク毎の重み付けの数値等の優先制御情報を用いる。また、統計情報として、仮想チャネルの使用頻度の使用状況を用いる。
【発明の効果】
【００１７】
本発明によると、既存のアプリケーションプログラムを改変することなく、複数のＮＩＣを仮想的に一つのＮＩＣとして見せることができる。また、計算機の制御システムが、物理ＮＩＣの仮想ＮＩへの割り当てを、アプリケーションプログラムに通知することなく実行できるとともに、アプリケーションプログラムに通知することなく、仮想ＮＩＣの使用状況に応じて割り当てを再構成することができ、例えば使用率が低くなった仮想ＮＩＣを、より優先度の高い仮想ＮＩＣに割り当て、ネットワークの使用効率を高めることができる。
【発明を実施するための最良の形態】
【００１８】
以下に、本発明の実施の形態について図面を参照して説明する。
【００１９】
図１は、本発明の実施の形態の仮想ネットワークシステムの構成ブロック図である。
【００２０】
図１に示す仮想ネットワークシステムは、一つ以上の計算機１１（１１−１、１１−２）と、計算機を接続するネットワーク１９とを備える。計算機１１−１と計算機１１−２とはネットワーク１９を介して接続されている。
【００２１】
各計算機１１は、Ｎ個の物理ネットワークインターフェースカード（物理ＮＩＣ）１５（１５−１、１５−２、…、１５−Ｎ）を備える。
【００２２】
計算機１１は、一つ以上のアプリケーションプログラム１２（１２−１、１２−２、…、１２−Ｎ）、一つ以上の仮想ネットワーク機構１３、物理ＮＩＣ制御部１４、及び、記憶部１８を備える。記憶部１８には、仮想チャネルテーブル１６と物理チャネルテーブル１７とが格納されている。
【００２３】
仮想ネットワーク機構１３は、仮想ＮＩＣ処理部１３１、アドレス書き換え部１３２及び管理パケット処理部１３３を備える。また、仮想ネットワーク機構１３は、仮想チャネルテーブル１６と物理チャネルテーブル１７とを参照及び更新する。
【００２４】
仮想ネットワーク機構１３は、計算機１１のネットワーク処理を制御する。
【００２５】
仮想ネットワーク機構１３は、例えばＣＰＵ２０１（図２参照）によって動作するプログラムとして実装される。また、仮想ネットワーク機構１３は、オペレーティングシステム（ＯＳ）、計算機を仮想化する仮想マシンモニタ（ＶＭＭ）、又は、ハイパバイザなどの基本プログラムの一部として動作する。また、仮想ＮＩＣ処理部１３１、アドレス書き換え部１３２及び管理パケット処理部１３３は、仮想ネットワーク機構１３を動作させるプログラムの一部として実装される。
【００２６】
仮想ネットワーク機構１３は、ＣＰＵ２０１によるプログラムの実行によって、計算機１１で動作するアプリケーションプログラム１２に対する仮想的なネットワークインターフェースを提供する。
【００２７】
本実施の形態では、仮想ネットワーク機構１３が、アプリケーションプログラム１２に対して、物理ＮＩＣ１５と同等のネットワークインターフェースを提供する。なお、仮想ネットワーク機構１３がアプリケーションプログラム１２に提供する仮想的なネットワークインターフェースを「仮想ＮＩＣ」と呼ぶ。仮想ＮＩＣは、仮想ネットワーク内で一意の識別子であるネットワークアドレスが割り当てられている。また、計算機１１の管理者は、仮想ネットワーク機構１３を一つの計算機上で複数定義することができる。
【００２８】
なお、仮想ＮＩＣのネットワークアドレスを特定する識別子は、一般的には、ＯＳＩモデルの第２レイヤのアドレスを用いる。本発明の実施の形態では、仮想ＮＩＣのネットワークアドレスにＭＡＣアドレスを用いる。
【００２９】
アプリケーションプログラム１２は、自計算機１１の仮想ＮＩＣと他の計算機１１の仮想ＮＩＣとの組によって構成される仮想ネットワーク上に設定された仮想チャネルによって、他の計算機１１と通信する。
【００３０】
仮想チャネルテーブル１６は、仮想ＮＩＣと仮想チャネルとの対応関係を格納する。物理チャネルテーブル１７は、ネットワーク１９における物理ＮＩＣ１５間に設定された物理チャネルと仮想チャネルとの対応関係を格納する。
【００３１】
仮想ＮＩＣ処理部１３１は、計算機１１で稼動するアプリケーションプログラム１２から仮想ＮＩＣを介して発行されるデータ転送命令を解釈して、仮想ＮＩＣと実際のハードウェアである物理ＮＩＣとを制御する。
【００３２】
より具体的には、仮想ＮＩＣ処理部１３１は、アプリケーションプログラム１２から仮想ＮＩＣに対するデータ転送命令があった場合は、仮想チャネルテーブル１６を参照して当該仮想ＮＩＣに対応する仮想チャネルを特定する。そして、物理チャネルテーブル１７を参照して、特定された仮想チャネルに対応する物理チャネルを特定する。
【００３３】
また、仮想ＮＩＣ処理部１３１は、受信したパケットが管理用パケットであるかデータ用パケットであるかを判定する。管理用パケットの識別子には、管理用であること及びその内容を示す識別子が付加される。
【００３４】
なお、管理パケットか否かを判定するために、ＶＬＡＮ（Ｖｉｒｔｕａｌ  ＬＡＮ）のＩＤを使用してもよい。仮想ＮＩＣ処理部１３１は、パケットに特定のＶＬＡＮ  ＩＤを含むＶＬＡＮタグを付加してデータ用パケットを管理用パケットとして送信する。逆に、特定のＶＬＡＮ  ＩＤが付加されているデータ用パケットは管理用パケットであるとして処理する。
【００３５】
なお、ＶＬＡＮタグではなく、パケットヘッダ中の未使用の１ビットを、管理パケットであるか否かを示す識別子として設定してもよい。
【００３６】
アドレス書き換え部１３２は、仮想チャネルテーブル１６と物理チャネルテーブル１７とを参照して、受信したパケットの仮想ＮＩＣのネットワークアドレスと物理ＮＩＣ１５のネットワークアドレスとを書き換える処理を実行する。
【００３７】
管理パケット処理部１３３は、受信したパケットが管理パケットである場合は、その管理パケットの内容に基づいて、仮想チャネルテーブル１６と物理チャネルテーブル１７とを更新すると共に、必要であれば他の計算機１１に対して管理パケットを送信する。
【００３８】
以上のように、仮想ネットワークシステムの計算機１１に構成された各要素が実行する処理によって、仮想ネットワーク機構を備える計算機１１同士がパケットを転送するときに、計算機１１が備える複数の物理ＮＩＣ１５をどのように利用するかを決定することができる。
【００３９】
例えば、一つの仮想チャネルを複数の物理チャネルを割り当てることによって、ネットワーク処理を複数の物理ＮＩＣ１５に分散し、パケットを並列に送受信することが可能となる。このように、分散してパケットを送受信することによって、計算機１１間での高帯域の通信が可能となる。
【００４０】
図２は、本発明の実施の形態の計算機１１の構成ブロック図である。
【００４１】
計算機１１は、一つ以上のＣＰＵ２１０（２１０−１…２１０−Ｎ）、ノースブリッジ２０３、メモリ２０４、ＩＯブリッジ２０５及びＩＯバス２０６を備える。
【００４２】
各ＣＰＵ２１０とノースブリッジ２０３とは、フロントサイドバス２０２を介して接続されている。また、ノースブリッジ２０３は、フロントサイドバス２０２、メモリ２０４及びＩＯブリッジ２０５と接続されている。また、ＩＯブリッジ２０５は、ＩＯバス２０６と接続されている。ＩＯバス２０６は二つ以上備えてもよい。
【００４３】
ノースブリッジ２０３は、ＣＰＵ２１０とメモリ２０３との間のデータの転送、及び、メモリ２０４とＩＯブリッジ２０５との間のデータの転送を制御する。
【００４４】
メモリ２０４は、前述の記憶部１８を構成する。また、メモリ２０４は、ＣＰＵ２１０によって実行されるプログラムや各種データ、キャッシュメモリ等を格納する。さらに、メモリ２０４は、計算機１１が備える各構成によってメモリ空間として使用され、特定のメモリ空間は特定の構成に特定の制御命令を実行させるためのターゲットアドレスとして使用される。
【００４５】
ＩＯブリッジ２０５は、ＩＯバス２０６に接続されたＩＯデバイスとノースブリッジ２０３との間のデータの転送を制御する。ＩＯバス２０６は、例えばＰＣＩバスによって構成される。
【００４６】
図２において、ＩＯデバイスは、ＳＣＳＩ又はＦＣ等で構成されるディスクＩＦ２０７、ＮＩＣ２０８及び入出力装置２０９が例示されている。ディスクＩＦ２０７は、ハードディスク等を備える外部記憶装置２１０を接続する。ＮＩＣ２０８は、物理ＮＩＣ１５を構成し、ネットワーク１９を接続する。入出力装置２０９は、キーボード、ディスプレイ等の外部入出力装置を接続する。
【００４７】
ＣＰＵ２１０は、ノースブリッジ２０３を介してメモリ２０４に配置されているプログラムを読み込んで実行する。ＣＰＵ２１０は、プログラムの内容に従って、必要に応じてノースブリッジ２０３、ＩＯブリッジ２０５を介して、ディスクＩＦ２０７、ＮＩＣ２０８等にデータ転送命令を発行することによって、データの転送を制御する。
【００４８】
メモリ２０４及びＩＯデバイス（ディスクＩＦ２０７、ＮＩＣ２０８及び入出力装置２０９）は、それぞれ計算機１１上の一意なアドレス空間を持つ。ＣＰＵ２１０は、データ転送のアドレスを指定してデータ転送命令を発行する。メモリ２０４及びＩＯデバイスは、それぞれアドレスに対応したデータの転送を実行する。
【００４９】
仮想ネットワークシステム中の各計算機１１は、前述のように二つ以上（Ｎ個）の物理ＮＩＣ１５を備えており、これらの物理ＮＩＣ１５とネットワーク１９とが接続されている。なお、物理ＮＩＣ１５とネットワーク１９とは物理的に直結されている必要はなく、計算機１１間の物理ＮＩＣ１５による通信に、一つ以上のネットワークスイッチが存在してもよい。ただし、本発明は、ネットワーク中にネットワークルータが存在することにより計算機１１間のセグメントが分けられていないことを前提とする。
【００５０】
なお、仮想ネットワーク機構１３及び仮想ＮＩＣ処理部１３１は、例として次のような実装方法がある。
【００５１】
仮想ネットワーク機構１３をＯＳの一部として動作させる場合は、仮想ＮＩＣ処理部１３１はＯＳのデバイスドライバとして実装される。仮想ＮＩＣ処理部１３１は、ＯＳで定められたインターフェースによってアプリケーションプログラム１２から仮想ＮＩＣを介する通信命令を受信し、受信した命令をデバイス固有の制御命令に変換することによって、通信命令に対応するデータを転送する。
【００５２】
また、仮想ネットワーク機構１３をハイパバイザの一部として動作させる場合は、仮想ＮＩＣ処理部１３１は、ハイパバイザの仮想ＮＩＣ処理を行うプログラムとして実装される。仮想ＮＩＣ処理部１３１は、物理ＮＩＣ１５に対応するソフトウェアインターフェースをエミュレートする。仮想ＮＩＣ処理部１３１は、ハイパバイザ上の仮想計算機から発行されるＮＩＣ制御命令を受信すると、受信した命令を解釈して、当該命令に対応する動作を実行する。
【００５３】
なお、仮想ネットワーク機構１３をハイパバイザの一部として動作させる場合は、アプリケーションプログラム１２は、仮想計算機上で稼動するＯＳ（ゲストＯＳ）に相当する。一般的に、ハイパバイザは、仮想計算機のＩＯポートやＭＭＩＯ（Ｍｅｍｏｒｙ  Ｍａｐｐｅｄ  ＩＯ）等のインターフェースによって仮想計算機上のＯＳから命令を受けた場合は、その命令を解釈して物理ＮＩＣ１５の制御命令に変換することによってデータの転が実行される。本実施の形態では、このＩＯポートやＭＭＩＯを、仮想ＮＩＣ処理部１３１がエミュレートする。なお、ＩＯポートやＭＭＩＯのエミュレート処理の実装は、ハードウェアのエミュレータで一般的に実装されている方法を用い、本発明ではその詳細は省略する。
【００５４】
図３は、本発明の実施の形態の仮想チャネルテーブル１６の一例の説明図である。
【００５５】
仮想チャネルテーブル１６は、仮想ネットワークシステムに存在する任意の計算機１１の仮想ネットワーク機構１３のネットワークアドレスと、自計算機の仮想ネットワーク機構１３のネットワークアドレスとを対応付けて管理するデータ列である。
【００５６】
計算機１１は、仮想チャネルテーブル１６を、例えば、リレーショナルデータベース形式のテーブルとして保持する。
【００５７】
仮想チャネルテーブル１６は、自計算機仮想ネットワークアドレス３０１、他計算機仮想ネットワークアドレス３０２、仮想チャネルＩＤ３０３、仮想チャネル優先制御情報３０４、及び、仮想チャネル使用頻度３０５を組とした一以上のレコードを含む。
【００５８】
自計算機仮想ネットワークアドレス３０１は、自計算機の仮想ネットワーク機構１３のネットワークアドレスである。
【００５９】
他計算機仮想ネットワークアドレス３０２は、仮想ネットワークシステムに存在する他の計算機１１の仮想ネットワーク機構１３のネットワークアドレスである。
【００６０】
なお、これら自計算機仮想ネットワークアドレス３０１と他計算機仮想ネットワークアドレス３０２との組によって特定される仮想ネットワークが「仮想チャネル」である。すなわち、仮想チャネルテーブル１６は、この仮想チャネルの情報を情報を記憶する。
【００６１】
仮想チャネルＩＤ３０３は、ネットワークパケットを送受信する二つの計算機間でネットワークパケットが属する仮想チャネルを一意に識別する識別子である。なお、仮想チャネルＩＤは、二つの計算機間では一意である必要がある。仮想チャネルＩＤは、例えば整数値を用いる。
【００６２】
前述のように、仮想ネットワーク機構１３のネットワークアドレスにＭＡＣアドレスを使用する場合は、テーブルの各レコードは、仮想ネットワーク機構１３によって、自計算機仮想ネットワークアドレス３０１（ＭＡＣアドレス）から他計算機仮想ネットワークアドレス３０２（ＭＡＣアドレス）へのデータ転送のため、及びその逆方向のデータ転送のためのネットワークパケットを、仮想チャネルＩＤ３０３によって示される仮想チャネルを特定するために使用される。
【００６３】
仮想チャネル優先制御情報３０４は、仮想チャネルに割り当てられるべき性能の指標を表す情報である。性能の指標には、例えば、ネットワーク帯域や優先度を表す指標等である。本実施形態では、ネットワーク帯域の指標に、同時並列物理チャネル数を、優先度の指標として、チャネル重み付け数値を用いる。
【００６４】
仮想チャネル使用頻度３０５は、所定期間内に、仮想チャネルでパケットが送受信された頻度を示す情報である。
【００６５】
仮想ＮＩＣ処理部１３１は、メモリ２０４にカウンタと平均値情報とを格納するメモリ領域を構成する。仮想チャネル間でパケットの送信及び受信が処理される毎に、仮想ＮＩＣ処理部１３１は、カウンタの格納領域に格納されている数値を１だけ加算する。カウンタは所定期間毎にクリアする。クリア直前の値を平均値情報を格納する領域にコピーする。また、所定期間毎にこの平均値情報によって仮想チャネルテーブル１６の仮想チャネル使用頻度３０５を更新する。このようにすることで、所定期間内の仮想チャネル間の通信の頻度を格納する。なお、所定期間は例えば１秒に設定される。
【００６６】
なお、仮想チャネルＩＤで示される二つの仮想ネットワークアドレス間のデータ転送が可能であるときに、その仮想チャネルが「通信可能である」とする。
【００６７】
図４は、本発明の実施の形態の物理チャネルテーブル１７の一例の説明図である。
【００６８】
物理チャネルテーブル１７は、仮想チャネルＩＤに関連付けられたネットワークパケットの宛先ネットワークアドレス及び送信元ネットワークアドレスを書き換える規則を表すデータ列である。
【００６９】
計算機１１は、物理チャネルテーブル１７を、例えば、リレーショナルデータベース形式のテーブルとして保持する。
【００７０】
物理チャネルテーブル１７は、自計算機物理ネットワークアドレス４０１、他計算機物理ネットワークアドレス４０２、割り当て可能仮想チャネルＩＤリスト４０３、及び、割り当て済み仮想チャネルＩＤ４０４を組とした一以上のレコードを含む。
【００７１】
自計算機物理ネットワークアドレス４０１は、自計算機１１が備える計算機の物理ＮＩＣ１５のＭＡＣアドレスである。
【００７２】
他計算機物理ネットワークアドレス４０２は、仮想ネットワークシステム中の任意の計算機１１の物理ＮＩＣ１５のＭＡＣアドレスである。
【００７３】
なお、これら自計算機物理ネットワークアドレスと他計算機物理ネットワークアドレスとの二つのＭＡＣアドレスの組によって特定される物理ネットワークが物理チャネルである。すなわち、物理チャネルテーブル１７は、この物理チャネルに関する情報を情報を記憶する。
【００７４】
割り当て可能仮想チャネルＩＤリストテーブル４０３は、二つの物理ＭＡＣアドレスの組で示される物理チャネルが割り当て可能である仮想チャネルＩＤのリストである。
【００７５】
割り当て済み仮想チャネルＩＤ４０４は、現在物理チャネルに実際に割り当てられている仮想チャネルの仮想チャネルＩＤである。
【００７６】
なお、ある物理チャネルで示される二つの物理ＮＩＣ１５間のデータの転送が可能であり、その物理ＮＩＣを備える計算機の仮想ＮＩＣ処理部１３１及びアドレス書き換え部１３２の動作によって仮想チャネルが通信可能であるときに、当該物理チャネルは当該仮想チャネルを「割り当て可能である」とする。
【００７７】
また、仮想チャネル中の仮想ネットワークインターフェース間の通信を仮ＮＩＣ処理部１３１が処理するときに、アドレス書き換え部１３２によって、仮想ネットワークアドレスを物理チャネルのネットワークアドレスに書き換え、物理チャネルに含まれる二つの物理ＮＩＣ１５間のデータ転送を行い、仮想チャネルのデータ転送を処理するように設定されているときに、前記仮想チャネルは前記物理チャネルに「割り当て済み」とする。
【００７８】
割り当て済み仮想チャネルＩＤ４０４に仮想チャネルＩＤが登録されているときは、その仮想チャネルがそのレコードの物理チャネルに割り当て済みであることが示される。
【００７９】
一つの仮想チャネルは一つ以上の物理チャネルに割り当てることができる。一つの仮想チャネルが二つ以上の物理チャネルに割り当てられた場合は、この仮想チャネルの通信パケットは、仮想ＮＩＣ処理部１３１によって複数の物理チャネルに振り分けられて送信される。これにより、一つの仮想チャネル間のデータ通信であっても複数の物理ＮＩＣ１５の帯域を使用することができ、広帯域の通信を実現できる。
【００８０】
次に、仮想ネットワーク機構１３が実行する処理を説明する。
【００８１】
図５は、本発明の実施の形態の仮想ネットワーク機構１３の仮想ＮＩＣ処理部１３１、アドレス書き換え部１３２及び管理パケット処理部１３３が実行する、仮想チャネル中の二つのネットワークインターフェース間のデータ転送の処理のフローチャートである。
【００８２】
まず、送信側の計算機１１における処理を説明する。
【００８３】
送信側の計算機１１において、仮想ネットワークインターフェースを使用するアプリケーションプログラム１２が仮想ＮＩＣに対してデータ転送命令を発行した場合は、仮想ＮＩＣ処理部１３１が、このデータ転送命令の発行を検知する（ステップＳ５０１）。
【００８４】
アプリケーションプログラム１２によるデータ転送命令の発行は、例えば、アプリケーションプログラム１２によってメモリ２０４の所定の領域に転送データを格納し、計算機１１におけるメモリ空間の所定領域にアクセスすることによって、仮想ＮＩＣ処理部１３１が仮想ＮＩＣへの命令が発行されたことを検知する。このように、仮想ネットワークインターフェースによって予め定められた方法によってデータ転送命令が発行される。
【００８５】
なお、データ転送命令は、送信命令識別子と送信パケットデータとの組で構成される。送信パケットデータは、送信元仮想ネットワークアドレス、宛先仮想ネットワークアドレス及び送信データを含んで構成される。
【００８６】
次に、計算機１１の仮想ＮＩＣ処理部１３１は、仮想チャネルテーブル１６を参照して、データ転送命令によって送信されるパケットに対応する仮想チャネルを検索する（ステップＳ５０２）。
【００８７】
具体的には、仮想ＮＩＣ制御部１３１は、仮想チャネルテーブル１６を参照して、自計算機仮想ネットワークアドレス３０１と他計算機仮想ネットワークアドレス３０２との組が、ステップＳ５０１においてデータ転送命令を検知した仮想ＮＩＣに割り当てられている仮想ネットワークアドレスとデータ転送命令の宛先仮想ネットワークアドレスとの組と一致するレコードを検索する。検索されたレコードの仮想チャネルＩＤ３０３から仮想チャネルＩＤを選択して、仮想チャネルが検索される。
【００８８】
次に、仮想ＮＩＣ制御部１３１は、ステップＳ５０２において、一致条件を満たす仮想チャネルが検索された場合は、ステップＳ５０４〜Ｓ５１７の処理を実行する。一致条件を満たす仮想チャネルが検索されなかった場合は、ステップＳ５２３の処理を実行する（ステップＳ５０３）。
【００８９】
ステップＳ５２３では、仮想チャネルが設定されていないとしてデータ転送処理を失敗終了する。仮想ＮＩＣ制御部１３１は、ネットワークインターフェースに予め定められている失敗処理を実行して、本フローチャートの処理を終了する。
【００９０】
ステップＳ５０４では、仮想ＮＩＣ処理部１３１は、物理チャネルテーブル１７を参照して、ステップＳ５０２で検索された仮想チャネルに割り当て済みの物理チャネルの一覧を検索する。
【００９１】
ステップＳ５０４において、仮想チャネルに割り当てられた物理チャネルが検索された場合は、仮想ＮＩＣ処理部１３１及びアドレス書き換え部１３２は、ステップＳ５０６〜Ｓ５１７の処理を実行する。仮想チャネルに割り当てられた物理チャネルが検索されなかった場合は、ステップＳ５２５の処理を実行する（ステップＳ５０５）。
【００９２】
ステップＳ５２５では、データ転送要求に対応する仮想チャネルを、物理チャネルに新たに割り当てる物理チャネル割り当て処理を実行する。この処理は、図１０及び図１１において後述する。この処理の結果、新たに割り当てられた物理チャネルを使用して、ステップＳ５０６〜Ｓ５１７の処理を実行する。
【００９３】
ステップＳ５０６では、仮想ＮＩＣ処理部１３１は、ステップＳ５０５において検索された物理チャネルの中から一つの物理チャネルを選択する。
【００９４】
この物理チャネルの選択の方法は、例えば、（１）ラウンドロビン（２）送信パケット数による重み付けラウンドロビン（３）送信パケット数最小チャネルの選択、等によって、物理チャネルを一つ選択する。なお、それぞれの方式に応じて、前回割り当て済みの物理チャネルを識別する情報等の物理チャネルの内部状態に関する領域を、適宜物理チャネルテーブル１７のテーブルのレコードの列として追加する。
【００９５】
また、物理ＮＩＣ１５のハードウェアの特性によっては、ある程度まとまった数のパケットを連続して転送することでデータ転送が高速にできる場合もある。このような特性を持った物理ＮＩＣ１５を使用する場合は、前記（１）のラウンドロビン方式のバリエーションとして、転送パケット数が一定数に達したとき、又は、一定期間毎に、データ転送のための物理チャネルを決定して、次回の決定タイミングまでは同一の物理チャネルを使用する方法を用いることもできる。
【００９６】
次に、アドレス書き換え部１３２は、データ転送要求に対応するパケットに含まれる宛先仮想ネットワークアドレスと送信元仮想ネットワークアドレスを、それぞれ、ステップＳ５０６で選択された物理チャネルの他計算機ネットワークアドレス４０２と自計算機ネットワークアドレス４０１とに書き換える（ステップＳ５０７）。これによって、パケットの送信元仮想ネットワークアドレスが自計算機１１の物理ＮＩＣ１５のネットワークアドレスに、宛先仮想ネットワークアドレスが宛先の計算機１１の物理ＮＩＣ１５のネットワークアドレスに、それぞれ変更される。
【００９７】
次に、仮想ＮＩＣ処理部１３１は、ネットワークアドレスを書き換えたパケットを、物理チャネルの送信元物理ネットワークアドレスに対応する物理ＮＩＣ１５に発行する。これによって、物理ＮＩＣ制御部１４によって、当該パケットが当該物理ＮＩＣ１５を経由してネットワーク１９に送信される（ステップＳ５０８）。
【００９８】
ここで、仮想ＮＩＣ処理部１３１は、ステップＳ５０１〜Ｓ５０８の処理の実行の後に、ステップＳ５０２において選択された仮想チャネルに対応するレコードを仮想チャネルテーブル１６から取得し、当該レコードの仮想チャネル使用頻度のカウンタ値を１だけ加算してカウンタ値を更新する（ステップＳ５１７）。
【００９９】
なお、物理ＮＩＣ１５の制御方式は一般的なデバイスドライバと同様であり、詳細は省略する。
【０１００】
また、図１１において後述するように、データ転送要求に係るパケットのＶＬＡＮタグに、ＶＬＡＮ  ＩＤとして仮想チャネルＩＤを付加してもよい。なお、ＶＬＡＮタグの付加は、物理ＮＩＣ１５に含まれる、処理に特化したハードウェアのデバイス回路が実行する方式が一般的であり、ＶＬＡＮタグの付加は高速に実行できる。このようにすることによって、仮想ＮＩＣ処理部１３１は、ＶＬＡＮ  ＩＤを参照して、当該パケットの仮想チャネルを識別することができる。
【０１０１】
以上の処理によって、仮想チャネルを用いて送信されたパケットが、物理チャネルによって受信側計算機１１へと送信される。
【０１０２】
次に、受信側の計算機１１における処理を説明する。
【０１０３】
受信側計算機１１において、仮想ＮＩＣ処理部１３１は、物理ＮＩＣ１５がパケットを受信したことを検知する。仮想ＮＩＣ制御部１３１は、物理ＮＩＣ１５からＣＰＵ２０２に対する割り込みを検出することによって、パケットを受信したことを検知する（ステップＳ５０９）。
【０１０４】
なお、受信されるパケットは、送信元物理ネットワークアドレス、宛先物理ネットワークアドレス及び受信データ列を含んで構成される。
【０１０５】
受信側計算機１１の仮想ＮＩＣ処理部１３１は、ステップＳ５０９において受信したパケットが管理用パケットであるかデータ用パケットであるか否かを判断する（ステップＳ５１０）。
【０１０６】
例えば、前述のように、特定のＶＬＡＮ  ＩＤを持つパケットが管理用パケットであると識別するように設定した場合は、受信パケットのＶＬＡＮタグをチェックして、管理用パケットであることを示すＶＬＡＮ  ＩＤが付加されているパケットである場合は、管理用パケットであると判断する。
【０１０７】
また、図１１で後述するように、データ転送要求に係るパケットのＶＬＡＮ  ＩＤタグに仮想チャネルＩＤを付加するように構成した場合は、パケットのＶＬＡＮ  ＩＤタグが管理用パケットを示すものではないと判定したときに、仮想ＮＩＣ処理部１３１は、仮想チャネル割り当て通知パケットを生成する。
【０１０８】
ステップＳ５１０において、ＶＬＡＮ  ＩＤが管理用パケットを示すものであると判断された場合は、仮想ＮＩＣ処理部１３１は、管理パケット処理部１３３に受信パケットを転送して、図６に示す管理パケット処理を実行する（ステップＳ５３０）。
【０１０９】
なお、仮想ＮＩＣ処理部１３１から管理パケット処理部１３３へのパケットの転送は、管理パケット処理部１３３が管理するメモリ領域にパケットデータ又はパケットデータのメモリアドレス（ポインタ）を書き込んだ後に、仮想ＮＩＣ処理部１３１が管理パケット処理部１３３を呼び出す。
【０１１０】
ステップＳ５１０において、受信パケットが管理用パケットではなく、データ用パケットであると判断された場合は、以降のステップＳ５１１〜Ｓ５１７を実行する。
【０１１１】
まず、仮想ＮＩＣ処理部１３１は、物理チャネルテーブル１７を参照して、受信パケットの送信元物理ネットワークアドレスと宛先物理ネットワークアドレスとに対応するレコードを検索し、物理チャネルを選択する（ステップＳ５１１）。
【０１１２】
ステップＳ５１１において物理チャネルが選択された場合は、ステップＳ５１３〜Ｓ５１７の処理を実行する。物理チャネルが検索されなかった場合、受信パケットを管理用パケットであると判定して、受信パケットを管理パケット処理部１３３に転送して、図６に示す管理パケット処理（ステップＳ５３０）を実行する（ステップＳ５１２）。
【０１１３】
ステップＳ５１３では、受信側計算機１１の仮想ＮＩＣ処理部１３１は、仮想チャネルテーブル１６を参照して、前記物理チャネルに対応付けられた割り当て済みの仮想チャネルＩＤと一致する仮想チャネルＩＤを含むレコードを検索して、仮想チャネルＩＤを取得する（ステップＳ５１３）。
【０１１４】
ステップＳ５１３において、物理チャネルに対応する仮想チャネルのレコードが検索された場合は、受信側計算機１１の仮想ＮＩＣ処理部１３１は、ステップＳ５１５〜Ｓ５１７の処理を実行する。物理チャネルに対応する仮想チャネルのレコードが検索されなかった場合は、仮想ＮＩＣ処理部１３１は、受信パケットを管理用パケットであると判定して、受信パケットを管理パケット処理部１３３に転送して図６に示す管理パケット処理（ステップＳ５３０）を実行する（ステップＳ５１４）。
【０１１５】
ステップＳ５１５では、受信側アドレス書き換え部１３２は、受信パケットの送信元物理ネットワークアドレス及び宛先物理ネットワークアドレスを、それぞれ、ステップＳ５１１で取得された仮想チャネルテーブル１６の、他計算機仮想ネットワークアドレス及び自計算機仮想ネットワークアドレスに書き換える。これによって、受信パケットの送信元物理ネットワークアドレスが当該仮想チャネルの他計算機仮想ネットワークアドレスに、宛先物理ネットワークアドレスが自計算機仮想ネットワークアドレスに、それぞれ変更される。
【０１１６】
次に、受信側計算機１１のアドレス書き換え部１３２は、仮想チャネルの自計算機仮想ネットワークアドレスに対応付けられている仮想ＮＩＣに対して、パケットの受信を通知する（ステップＳ５１６）。
【０１１７】
具体的には、アドレス書き換え部１３２は、受信パケットを仮想ＮＩＣの受信バッファ領域にコピーして、ＣＰＵに割り込みを発生することによって、パケットの受信を通知する
次に、受信側計算機１１の仮想ＮＩＣ処理部１３１は、ステップＳ５０９〜Ｓ５１６の処理の実行の後に、ステップＳ５１１において取得された仮想チャネルに対応するレコードを仮想チャネルテーブル１６から取得し、当該レコードの仮想チャネル使用頻度のカウンタ値を１だけ加算してカウンタ値を更新する（ステップＳ５１７）。
【０１１８】
以上の処理によって、物理チャネルを用いて受信されたパケットが、仮想チャネルによって、当該仮想チャネルに対応する仮想ＮＩＣを用いるアプリケーションプログラム１２に送信される。
【０１１９】
図６は、本発明の実施の形態の受信側計算機１１の管理パケット処理部１３３における管理パケット処理（図５のステップＳ５３０）のフローチャートである。
【０１２０】
まず、管理パケット処理部１３３は、受信パケットのパケット識別子の値を取得する（ステップＳ１１０１）。
【０１２１】
管理パケット処理部１３３は、事前にメモリ２０４中に、パケット識別子とプログラムのアドレスとの対応を定義したテーブル（パケット識別子テーブル）を保持している。この定義は管理パケット処理部を実行させるプログラム中に埋め込まれている。
【０１２２】
管理パケット処理部は、ステップＳ１１０１で取得されたパケット識別子に対応するプログラムをパケット識別子テーブルから検索し、検索されたプログラムを実行させるためのメモリ空間上のアドレスに処理を渡す。この結果、パケット識別子によって識別されたパケット毎に、対応するプログラムの処理が実行される（ステップＳ１１０２）。
【０１２３】
本実施の形態では、このパケット識別子テーブルの例として以下のような処理を実行するプログラムが、パケットの識別子に対応して定義されている。
【０１２４】
管理用パケットの識別子が仮想ネットワークインターフェース追加通知パケットを示す場合は、図７のステップＳ６０３で示す物理チャネル更新処理を実行するプログラムのアドレスが、パケット識別子テーブルに定義されている。
【０１２５】
また、管理用パケットの識別子が仮想チャネルＩＤリスト通知パケットを示す場合は、図７ステップＳ６０８で示す物理チャネル更新処理のプログラムを実行するアドレスが、パケット識別子テーブルに定義されている。
【０１２６】
また、管理用パケットの識別子が仮想チャネルＩＤ通知パケットを示す場合は、図７のステップＳ６１５の仮想チャネルＩＤ更新処理を実行するプログラムのアドレスが、パケット識別子テーブルに定義されている。
【０１２７】
また、管理用パケットの識別子が仮想ネットワークインターフェース削除通知パケットを示す場合は、図８のステップＳ７０３の仮想チャネル削除処理を実行するプログラムのアドレスが、パケット識別子テーブルに定義されている。
【０１２８】
また、管理用パケットの識別子が仮想チャネル割り当て通知パケットを示す場合は、図１１のステップＳ１００４の割り当て済みチャネルＩＤ更新処理を実行するプログラムのアドレスが、パケット識別子テーブルに定義されている。
【０１２９】
また、管理用パケットの識別子が仮想チャネルＩＤ割り当て応答パケットを示す場合は、図１１のステップＳ１００６の仮想チャネルＩＤ割り当て応答受信処理を実行するプログラムのアドレスが、パケット識別子テーブルに定義されている。
【０１３０】
次に、仮想ネットワーク中の各計算機１１が、物理チャネル、仮想チャネル等を更新する処理を説明する。この処理では、各計算機１１は、仮想チャネルテーブル１６及び物理チャネルテーブル１７を更新する。なお、テーブルの更新とは、各テーブルへのレコードの追加及び削除である。
【０１３１】
図７は、本発明の実施の形態の仮想ＮＩＣ追加処理のシーケンス図である。
【０１３２】
この図７のシーケンス図では、二つの計算機１１Ａ及び計算機１１Ｂを備える仮想ネットワークにおいて、計算機１１Ａと計算機１１Ｂとで、仮想ＮＩＣ、物理チャネル及び仮想チャネルを更新する。
【０１３３】
まず、計算機１１Ａが、新たに仮想ＮＩＣ（仮想ＮＩＣ  Ａ）を追加する。仮想ＮＩＣの追加は、例えば計算機１１Ａに接続されているキーボード、ディスプレイ２０９等を用いて、管理者によって要求される。又は、上位のオペレーティングシステム又は管理プログラムからの要求等によって仮想ＮＩＣを追加してもよい。
【０１３４】
計算機１１Ａにおいて、仮想ＮＩＣの追加があったときは、管理パケット処理部１３３は、仮想ネットワークインターフェース追加通知パケットを、計算機１１Ａが備えるそれぞれの物理ＮＩＣ１５からブロードキャストによってネットワーク１９に送信する（ステップＳ６０１）。この仮想ネットワークインターフェース追加通知パケットは、管理パケットであることを示す識別子（例えば、ＶＬＡＮ  ＩＤ）が付加されている。
【０１３５】
仮想ネットワークインターフェース追加通知パケット８０１（図９（Ａ）参照）は、送信元物理ネットワークアドレス、宛先物理ネットワークアドレス、パケット識別子及び送信元仮想ネットワークアドレスを含む。また、パケット識別子には「追加通知」であることを示す識別子が格納されている。この識別子によって、受信側の仮想ＮＩＣ処理部１３１が、当該パケットは仮想ネットワークインターフェース追加通知パケットであることを識別できる。
【０１３６】
計算機１１Ｂにおいて、仮想ＮＩＣ処理部１３１がブロードキャストによって送信された仮想ネットワークインターフェース追加通知パケットを受信する（ステップＳ６０２）。この受信パケットは、管理用パケットであると判定され、管理パケット処理部１３３が以降の処理を実行する。
【０１３７】
計算機１１Ｂの管理パケット処理部１３３は、自計算機１１Ｂの記憶部１８に格納されている物理チャネルテーブル１７を参照して、仮想ネットワークインターフェース追加通知パケットに含まれる送信元物理ネットワークアドレスと、パケットを受信した物理ＮＩＣ１５の物理ネットワークアドレスとが、それぞれ、他計算機物理ネットワークアドレス及び自計算機物理ネットワークアドレスに一致する物理チャネルのレコードを選択する。
【０１３８】
ここで、物理チャネルテーブル１７に一致する物理チャネルが存在しない場合は、計算機１１Ｂの管理パケット処理部１３３は、仮想ネットワークインターフェース追加通知パケットの送信元物理ネットワークアドレス、及び、パケットを受信した物理ＮＩＣ１５の物理ネットワークアドレスを、それぞれ、物理チャネルテーブル１７の他計算機物理ネットワークアドレス４０２、及び、自計算機物理ネットワークアドレス４０１に格納することによって、新たな物理チャネルのレコードを物理チャネルテーブル１７に登録して、物理チャネルテーブル１７を更新する（ステップＳ６０３）。
【０１３９】
次に、管理パケット処理部１３３は、自計算機１１Ｂの記憶部１８に格納されている仮想チャネルテーブル１６を参照して、自計算機１１Ｂに設定されている仮想ＮＩＣ（仮想ＮＩＣ  Ｂ）に関して、仮想ネットワークインターフェース追加通知パケットに含まれる送信元仮想ネットワークアドレスと仮想ＮＩＣ  Ｂの仮想ネットワークアドレスとの組が、それぞれ、他計算機仮想ネットワークアドレス及び自計算機仮想ネットワークアドレスに一致する仮想チャネルのレコードを選択する。
【０１４０】
ここで、仮想チャネルテーブル１６に一致する仮想チャネルのレコードが存在しない場合は、計算機１１Ｂの管理パケット処理部１３３は、仮想ネットワークインターフェース追加通知パケットに含まれる送信元仮想ネットワークアドレス及び仮想ＮＩＣ  Ｂの仮想ネットワークアドレスを、それぞれ、仮想チャネルテーブルの他計算機仮想ネットワークアドレス３０２及び自計算機仮想ネットワークアドレス３０１に格納することによって新たな仮想チャネルのレコードを仮想チャネルテーブル１６に登録して仮想チャネルテーブル１６を更新する（ステップＳ６０４）。
【０１４１】
なお、この処理では、新たに登録された仮想チャネルの仮想チャネルＩＤは未決定であり、後続する処理において決定する。
【０１４２】
次に、計算機１１Ｂの管理パケット処理部１３３は、自計算機１１Ｂの仮想チャネルテーブル１６を検索して、自計算機１１Ｂで使用されているすべての仮想チャネルＩＤを取得して、取得された仮想チャネルＩＤのリストを作成する（ステップＳ６０５）。
【０１４３】
次に、計算機１１Ｂの管理パケット処理部１３３は、仮想ネットワークインターフェース追加通知パケットに含まれる送信元物理ネットワークアドレス宛に、ステップＳ６０４において選択及び作成された仮想チャネルのそれぞれについて、仮想チャネルＩＤリスト通知パケットを作成する。作成された仮想チャネルＩＤリスト通知パケットは、管理用パケット８０２として送信する（ステップＳ６０６）。
【０１４４】
仮想チャネルＩＤリスト通知パケット８０２（図９（Ｂ）参照）は、仮想チャネルリスト通知パケットは、送信元物理ネットワークアドレス、宛先物理ネットワークアドレス、宛先物理ネットワークアドレス、パケット識別子、宛先仮想ネットワークアドレス、送信元仮想ネットワークアドレス、及び、ステップＳ６０５において作成された仮想チャネルＩＤリストを含んで構成される。
【０１４５】
また、仮想チャネルＩＤリスト通知パケットは、パケット識別子には「リスト通知」を示す識別子が格納されている。この識別子によって、受信側の仮想ＮＩＣ処理部１３１が、当該パケットは仮想チャネルＩＤリスト通知パケットであることを識別できる。
【０１４６】
計算機１１Ａにおいて、仮想ＮＩＣ処理部１３１がブロードキャストによって送信された仮想チャネルＩＤリスト通知パケットを受信する（ステップＳ６０７）。この受信パケットは管理用パケットであると判定され、管理パケット処理部１３３が以降の処理を実行する。
【０１４７】
計算機１１Ａの管理パケット処理部１３３は、計算機１１ＢにおけるステップＳ６０３〜ステップＳ６０５と同様の処理を実行して、計算機１１Ａの物理チャネルテーブル１７、仮想チャネルテーブル１６を更新する。
【０１４８】
すなわち、計算機１１Ａの管理パケット処理部１３３は、物理チャネルテーブル１７を参照して、仮想チャネルＩＤリスト通知パケットに含まれる送信元物理ネットワークアドレスと、パケットを受信した物理ＮＩＣ１５の物理ネットワークアドレスとが、それぞれ、他計算機物理ネットワークアドレス及び自計算機物理ネットワークアドレスに一致する物理チャネルのレコードを選択する。
【０１４９】
物理チャネルテーブル１７に一致する物理チャネルが存在しない場合は、計算機１１Ａの管理パケット処理部１３３は、仮想チャネルＩＤリスト通知パケットの送信元物理ネットワークアドレス、及び、パケットを受信した物理ＮＩＣ１５の物理ネットワークアドレスを、それぞれ、物理チャネルテーブル１７の他計算機物理ネットワークアドレス４０２、及び、自計算機物理ネットワークアドレス４０１に格納することによって、新たな物理チャネルのレコードを物理チャネルテーブル１７に登録して、物理チャネルテーブル１７を更新する（ステップＳ６０８）。
【０１５０】
次に、管理パケット処理部１３３は、仮想チャネルテーブル１６を参照して、自計算機１１Ａに設定されている仮想ＮＩＣ（仮想ＮＩＣ  Ａ’）に関して、仮想チャネルＩＤリスト通知パケットに含まれる送信元仮想ネットワークアドレスと仮想ＮＩＣ  Ａ’の仮想ネットワークアドレスとの組が、それぞれ、他計算機仮想ネットワークアドレス及び自計算機仮想ネットワークアドレスに一致する仮想チャネルのレコードを選択する。
【０１５１】
仮想チャネルテーブル１６に一致する仮想チャネルのレコードが存在しない場合は、計算機１１Ａの管理パケット処理部１３３は、仮想チャネルＩＤリスト通知パケットに含まれる送信元仮想ネットワークアドレス及び仮想ＮＩＣ  Ａ’の仮想ネットワークアドレスを、それぞれ、仮想チャネルテーブルの他計算機仮想ネットワークアドレス３０２及び自計算機仮想ネットワークアドレス３０１に格納することによって新たな仮想チャネルのレコードを仮想チャネルテーブル１６に登録して仮想チャネルテーブル１６を更新する（ステップＳ６０９）。
【０１５２】
次に、計算機１１Ａの管理パケット処理部１３３は、自計算機１１Ａの仮想チャネルテーブル１６を検索して、自計算機１１Ａで使用されているすべての仮想チャネルＩＤを取得して、取得された仮想チャネルＩＤのリストを作成する（ステップＳ６１０）。
【０１５３】
次に、計算機１１Ａの管理パケット処理部１３３は、ステップＳ６１０において作成された仮想チャネルＩＤのリスト（リストＡ）と、ステップＳ６０７において受信された仮想チャネルＩＤリスト通知パケットに含まれている仮想チャネルＩＤリスト（リストＢ）を参照して、いずれのリストにも含まれてない仮想チャネルＩＤを一つ選択する（ステップＳ６１１）。
【０１５４】
このとき、仮想チャネルＩＤは整数値として格納されているので、リストＡ及びリストＢのいずれにも含まれていない整数値のうち最小のものを選択する。
【０１５５】
次に、計算機１１Ａの管理パケット処理部１３３は、前記ステップＳ６０８において登録された物理チャネルテーブル１７の物理チャネルのレコードの、割り当て可能仮想チャネルＩＤリスト４０３に、ステップＳ６１１において決定した仮想チャネルＩＤを登録する（ステップＳ６１２）これによって、新たに仮想チャネルが物理チャネルに割り当て可能となる。
【０１５６】
次に、計算機１１Ａの管理パケット処理部１３３は、ステップＳ６０７において受信した仮想チャネルＩＤリスト通知パケットの送信元物理ネットワークアドレスを宛先として、仮想チャネルＩＤ通知パケットを作成する。作成された仮想チャネルＩＤ通知パケットは、管理用パケットとして送信する（ステップＳ６１３）。
【０１５７】
仮想チャネルＩＤ通知パケット（図９（Ｃ）参照）は、送信元物理ネットワークアドレス、宛先物理ネットワークアドレス、パケット識別子、送信元仮想ネットワークアドレス、宛先仮想ネットワークアドレス、及び、ステップＳ６０９において作成された仮想チャネルＩＤのデータを含んで構成される。
【０１５８】
また、仮想チャネルＩＤ通知パケットは、パケット識別子には「ＩＤ通知」を示す識別子が格納されている。この識別子によって、受信側の仮想ＮＩＣ処理部１３１が、当該パケットは仮想チャネルＩＤ通知パケットであることを識別できる。
【０１５９】
計算機１１Ｂにおいて、仮想ＮＩＣ処理部１３１が、送信された仮想チャネルＩＤ通知パケットを受信する（ステップＳ６１４）。この受信パケットは、管理用パケットであると判定され、管理パケット処理部１３３が以降の処理を実行する。
【０１６０】
計算機１１Ｂの管理パケット処理部１３３は、受信した仮想チャネルＩＤ通知パケットに含まれる仮想チャネルＩＤを、ステップＳ６０４において新たに作成された仮想チャネルテーブル１６の仮想チャネルのレコードの、仮想チャネルＩＤ３０３に格納して、仮想チャネルＩＤを割り当てる。
【０１６１】
また、管理パケット処理部１３３は、ステップＳ６０３において作成された物理チャネルテーブル１７の物理チャネルのレコードの、割り当て可能仮想チャネルＩＤリスト４０３に、ステップＳ６１３において受信した仮想チャネルＩＤ通知パケットに含まれている仮想チャネルＩＤを追加して、物理チャネルテーブル１７を更新する（ステップＳ６１５）。
【０１６２】
以上の処理によって、仮想チャネルが割り当て可能に設定される。
【０１６３】
ここで、送信側、受信側の仮想ＮＩＣ処理部１３１は、前記の仮想チャネルＩＤによって定められた仮想チャネルが作成されたときに、上位のオペレーティングシステム又は管理プログラムに対して、仮想チャネルが作成されてこと通知する。この上位のオペレーティングシステム又は管理プログラムは、作成された仮想チャネルに関して、同時並列物理チャネル数、及び、ネットワーク重み付け数値からなる優先制御情報を決定する。
【０１６４】
管理プログラムは、計算機の使用者又は管理者によって入力された同時並列物理チャネル数及びネットワークの重み付けの値を、優先制御情報として決定する。
【０１６５】
より具体的には、管理プログラムは、計算機の管理者に対して、仮想チャネルの自計算機仮想ネットワークアドレス及び他計算機仮想ネットワークアドレスを表示し、その仮想チャネルに対する同時並列物理チャネル数及びネットワーク重み付け数値の入力を求める。
【０１６６】
また、別の方法として、事前にシステムによって定められた規定値を用いて優先制御情報を決定してもよい。また、この方法では、後に、任意のタイミングで、計算機の管理者が、仮想チャネルＩＤ、同時並列物理チャネル数、ネットワーク重み付け数値の値をパラメータとして含む管理コマンド等を用いることによって、管理者が仮想チャネルテーブル１７の優先制御情報を変更できるように構成してもよい。
【０１６７】
このように決定された同時並列物理チャネル数及びネットワーク重み付けの数値は、管理パケット処理部１３３が、仮想チャネルテーブル１６の仮想チャネル優先制御情報３０４の該当領域に格納する（ステップＳ６１６）。
【０１６８】
なお、ステップＳ６０１〜Ｓ６１６はトランザクショナルに管理される。すなわち、一定期間内にステップＳ６０１〜Ｓ６１６の処理が完了しない場合、管理パケット処理部１３３は、作成された物理チャネルのレコード及び仮想チャネルのレコードを削除する。
【０１６９】
このように、図７のステップＳ６０１〜Ｓ６０６の処理によって、計算機１１Ｂは、仮想ネットワークシステム内の計算機１１Ａからブロードキャストによって仮想ネットワークインターフェース追加通知パケットを受け取り、通信可能な物理ＮＩＣ１５の組を物理チャネルとして登録する。また、仮想ネットワークインターフェース追加通知パケットに含まれる情報から物理チャネルに割り当て可能な仮想チャネルのリストを取得して、仮想チャネルテーブル１６を更新する。
【０１７０】
また、ステップＳ６０６の処理によって、計算機１１Ｂは、ブロードキャストパケットを受け取ったそれぞれの物理ＮＩＣ１５について、その物理ＮＩＣ１５上で通信可能なすべての仮想ＮＩＣ毎に、仮想チャネルＩＤリスト通知パケットを送信する。
【０１７１】
また、ステップＳ６０７〜Ｓ６１０の処理によって、計算機１１Ａは計算機１１Ｂと同様に、物理チャネル及び仮想チャネルを作成する。
【０１７２】
そして、ステップＳ６１１〜Ｓ６１５の処理によって、仮想チャネルを二つの計算機間で一意に特定するための仮想チャネルＩＤを生成して、計算機１１Ａ及び計算機１１Ｂが、共にテーブルを更新する。
【０１７３】
以上のような処理によって、計算機１１Ａ及び計算機１１Ｂ間で通信可能な物理ＮＩＣ１５の組（物理チャネル）、この物理ＮＩＣ１５の組で構成される物理チャネルに割り当て可能な仮想ＮＩＣの組（仮想チャネル）、及び、仮想チャネルを一意に識別する仮想チャネルＩＤを、自動的に生成できる。
【０１７４】
このように、図７の処理によって、自動的に二つの計算期１１間で物理チャネル及び仮想チャネルが設定され、二つの計算機１１間で物理チャネル及び仮想チャネルの情報が同期されて共有される。
【０１７５】
次に、仮想ＮＩＣを削除する処理を説明する。
【０１７６】
図８は、本発明の実施の形態の仮想ＮＩＣ削除処理のシーケンス図である。
【０１７７】
この図８のシーケンス図では、二つの計算機１１Ａ及び計算機１１Ｂを備える仮想ネットワークにおいて、計算機１１Ａと計算機１１Ｂとで既に登録されている仮想ＮＩＣ削除する。
【０１７８】
まず、計算機１１Ａの管理パケット処理部１３３は、仮想ネットワークインターフェース削除通知パケットを、管理用パケットとしてブロードキャストで送信する（ステップＳ０１）
仮想ＮＩＣの削除は、前述のように、例えば、管理者や、上位のオペレーティングシステム、管理プログラム等からの要求等によって仮想ＮＩＣの削除が要求される。
【０１７９】
仮想ネットワークインターフェース削除通知パケット８０４（図９（Ｄ）参照）は、送信元物理ネットワークアドレス、宛先物理ネットワークアドレス、パケット識別子、及び、送信元仮想ネットワークアドレスを含んで構成される。
【０１８０】
なお、送信元仮想ネットワークアドレスは、削除される仮想ＮＩＣのネットワークアドレスを示す。また、パケット識別子には「削除通知」を示す識別子が格納されている。この識別子によって、受信側の仮想ＮＩＣ処理部１３１が、当該パケットは仮想ネットワークインターフェース削除通知パケットであることを識別できる。
【０１８１】
計算機１１Ｂにおいて、仮想ＮＩＣ処理部１３１がブロードキャストによって送信された仮想ネットワークインターフェース追加通知パケットを受信する（ステップＳ７０２）。この受信パケットは、管理用パケットであると判定され、管理パケット処理部１３３が以降の処理を実行する。
【０１８２】
計算機１１Ｂにおいて、管理パケット処理部１３３は、自計算機の記憶部１８に格納されている仮想チャネルテーブル１６を参照して、受信した仮想ネットワークインターフェース追加通知パケットに含まれる送信元仮想ネットワークアドレスと、自計算機の仮想ネットワークアドレスと、の組を持つ仮想チャネル（以下、仮想チャネルｘと呼ぶ）のレコードを選択する。選択されたレコードは仮想チャネルテーブルから削除する（ステップＳ７０３）。
【０１８３】
次に、管理パケット処理部１３３は、自計算機の記憶部１８に格納されている物理チャネルテーブル１７を参照して、割り当て可能仮想チャネルＩＤリスト４０３及び割り当て済み仮想チャネルＩＤ４０４から、仮想チャネルＩＤを取得する。そして、取得された仮想チャネルＩＤのうち、仮想チャネルｘの仮想チャネルＩＤと一致する仮想チャネルを、からすべて削除する（ステップＳ７０４）。
【０１８４】
次に、計算機１１Ｂの管理パケット処理部１３３は、物理チャネルテーブル１７を参照して、割り当て済み仮想チャネルＩＤリスト４０３に値が一つもない物理チャネル、すなわち、一つの仮想チャネルも割り当てられていない物理チャネルをすべて選択する。そして、選択された物理チャネルを、物理チャネルテーブル１７から削除する（ステップＳ７０５）。
【０１８５】
このように、図８の処理によって、二つの計算期１１間で仮想チャネルが削除され、削除された仮想チャネルのみが割り当てられていた物理チャネルも削除される。
【０１８６】
次に、図７のステップＳ５２５の仮想チャネルを物理チャネルに割り当てる物理チャネル割り当て処理を説明する。
【０１８７】
図１０は、本発明の実施の形態の物理チャネル割り当て処理のフローチャートである。
【０１８８】
この図１０に示すフローチャートは、仮想ＮＩＣ処理部１３１が、仮想チャネルに属する仮想ＮＩＣにパケットを送信する処理（図５）のときに、仮想チャネルに割り当てられた物理チャネルが存在しない場合に（図５のステップＳ５２５）実行される。
【０１８９】
なお、ここでは、処理対象の仮想チャネルを「仮想チャネルＡ」とする。
【０１９０】
まず、仮想ＮＩＣ処理部１３１は、物理チャネルテーブル１７を参照して、割り当て可能仮想チャネルＩＤリストに仮想チャネルＡの仮想チャネルＩＤが含まれている物理チャネルのレコードの一覧を選択する（ステップＳ９０１）。
【０１９１】
次に、仮想ＮＩＣ処理部１３１は、選択された物理チャネルの一覧から、割り当て済み仮想チャネルＩＤに値が登録されていないレコードを選択する。このとき、仮想チャネルテーブル１６を参照して、仮想チャネルＡに割り当て可能な仮想チャネルＩＤのレコードの仮想チャネル優先制御情報３０４から、同時並列物理チャネル数を取得する。そして、取得された同時並列物理チャネル数と同じ数だけ、物理チャネルを選択する（ステップＳ９０２）。
【０１９２】
より具体的には、割り当て済み仮想チャネルＩＤの値が登録されていない物理チャネルの一覧からランダムに選択する。なお、ここでは、この処理で選択された物理チャネルのリストを、物理チャネル（Ｉ）と呼ぶ。また、仮想チャネルＡを割り当て可能な物理チャネルのリストを、物理チャネル（ＩＩ）と呼ぶ。
【０１９３】
次に、仮想ＮＩＣ処理部１３１は、ステップＳ９０２において、同時並列物理チャネル数と同じ数だけ物理チャネルを選択することができるか否かを判定する（ステップＳ９０３）。
【０１９４】
物理チャネルを選択することができた場合は、それぞれの物理チャネルに対して、図１１で後述する処理を実行する。一方、同時並列物理チャネル数に満たない物理チャネル数しか選択されなかった場合は、ステップＳ９０４〜Ｓ９０９を実行する。
【０１９５】
ステップＳ９０４では、仮想ＮＩＣ処理部１３１は、ステップＳ９０１で選択された物理チャネルのレコードから、それぞれの割り当て済みチャネルＩＤに登録されている仮想チャネルＢｉ（ｉ＝１…ｎ）を選択する。
【０１９６】
次に、仮想ＮＩＣ処理部１３１は、ステップＳ９０４で選択された仮想チャネルＢのそれぞれに対して、仮想チャネルテーブル１６を参照して、ネットワーク重み付け数値（Ｂｉ）を取得する。また、仮想チャネルＡのネットワーク重み付け数値（Ａ）を取得する。
【０１９７】
ここで、物理チャネル（ＩＩ）の個数の総和をＮ、仮想チャネルＡに割り当てる仮想チャネル数をＮＡ、仮想チャネルＢｉに割り当てる仮想チャネル数をＮＢｉ、仮想チャネルＢｉについての「同時並列物理チャネル数（Ｂｉ）×ネットワーク重み付け（Ｂｉ）×仮想チャネル使用頻度３０５（Ｂｉ）」の値をＸＢｉ、すべての仮想チャネルのＸＢｉの値の総和をΣＸＢｉ、すべての仮想チャネルＢｉについての「仮想チャネル使用頻度３０５（Ｂｉ）」の値の平均値をＵＢｉとすると、以下の式によって、ＮＡ及びＮＢｉが算出される（ステップＳ９０５）。
ＮＡ  ＝  Ｎ×ネットワーク重み付け数値（Ａ）×ＵＢｉ÷（ネットワーク重み付け（Ａ）＋ΣＸＢｉ）
ＮＢｉ  ＝  Ｎ×ＸＢｉ÷（ネットワーク重み付け（Ａ）＋ΣＸＢｉ）
（ただし、小数点以下は四捨五入し、計算値が１未満の場合は１に切り上げる）
【０１９８】
次に、仮想ＮＩＣ処理部１３１は、仮想チャネルＢ、仮想チャネルＡに対して、割り当て済みの物理チャネル数を、ステップＳ９０５で求めたＮＡ、ＮＢｉとなるように、以降のステップＳ９０６〜Ｓ９０８の処理によって、仮想チャネルに対する物理チャネルの割り当てを再配分する。
【０１９９】
まず、仮想ＮＩＣ処理部１３１は、仮想チャネルｘ（ｘ＝Ａ、Ｂ１…Ｂｎ）のそれぞれに対して、現在割り当て済みの物理チャネル数Ｍｘと、ステップＳ９０５で算出されたＮｘとの差分を比較する。そして、Ｍｘ＞Ｎｘである場合は、仮想チャネルｘに割り当て済みの物理チャネルの中から、ランダムに選択して、（Ｍｘ−Ｎｘ）個の物理チャネルを選択する。選択された物理チャネルの割り当て済みチャネルＩＤのデータは削除する。そして、選択された物理チャネルを、ステップＳ９０２において、選択された物理チャネル（Ｉ）に追加する（ステップＳ９０６）。
【０２００】
なお、このとき、物理チャネル（Ｉ）のリスト中のそれぞれの物理チャネルは、割り当て済み仮想チャネルＩＤには値が登録されておらず、仮想チャネルｘの仮想チャネルＩＤは、割り当て可能仮想チャネルＩＤリストに含まれている状態となっている。
【０２０１】
ここで、仮想ＮＩＣ処理部１３１は、仮想チャネルｘ（ｘ＝Ａ、Ｂ１…Ｂｎ）のそれぞれに対して、現在割り当て済みの物理チャネル数Ｍｘと、ステップＳ９０５で求めたＮｘとの差分を比較し、Ｎｘ＞Ｍｘである場合に、物理チャネル（Ｉ）から（Ｎｘ−Ｍｘ）個の物理チャネルを選択する。
【０２０２】
仮想ＮＩＣ処理部１３１は、仮想チャネルｘに割り当て済みの物理チャネルの自計算機物理ネットワークアドレス、及び、他計算機物理ネットワークアドレスのリストを作成する。そして、自計算機物理ネットワークアドレス４０１、及び、他計算機物理ネットワーク４０２の値が、いずれのリストにも含まれない物理チャネルのレコードを検索する。検索の結果、該当する物理チャネルが検索された場合は、当該物理チャネルを優先的に選択する。
【０２０３】
なお、選択候補が複数ある場合は、仮想ＮＩＣ処理部１３１は、ランダムに物理チャネルを選択するか、又は、検索された順番が早い物理チャネルを優先して選択する。例えば、ランダムに選択した場合は、ある仮想チャネルに含まれる物理チャネルは、それぞれ異なる物理ＮＩＣ１５同士でデータ通信が実行される。
【０２０４】
物理チャネルが選択されると、仮想ＮＩＣ処理部１３１は、物理チャネルのレコードに含まれる割り当て済みチャネルＩＤを、仮想チャネルｘの仮想チャネルＩＤに変更する。これによって、仮想チャネルに物理チャネルが割り当てられる（ステップＳ９０７）。
【０２０５】
次に、仮想ＮＩＣ制御部１３１は、ステップＳ９０６及びＳ９０７の処理において、仮想チャネルの物理チャネルへの割り当て処理が成功したか否かを判定する（ステップＳ９０８）。
【０２０６】
仮想チャネルＡに対する割り当て済みの物理チャネルが一つも存在しなかった場合は、仮想ＮＩＣ処理部１３１は、仮想チャネルの物理チャネルへの割り当て処理は失敗したとみなして、エラー通知等の失敗処理を行い、本フローチャートによる処理を終了する。
【０２０７】
一方、仮想チャネルの物理チャネルへの割り当て処理が成功し、仮想チャネルＡに対して物理チャネルａが割り当てられた場合は、本フローチャートの処理を終了し、図５のフローチャートに戻る。
【０２０８】
また、このとき、管理パケット処理部１３３は、パケット送信側の計算機、及び、パケット受信側の計算機の物理チャネルテーブル１７の、物理チャネルａに関連付けられた割り当て済みチャネルＩＤ情報を更新するための割り当て済みチャネルＩＤ更新処理（図１１）を実行する。
【０２０９】
以上説明した処理によって、物理チャネルａに仮想チャネルＡが割り当てられる。この結果、物理チャネルａに属する物理ＮＩＣ１５が受信したパケットは、仮想チャネルＡに属する仮想ＮＩＣに振り分けられるように制御される。
【０２１０】
図１１は、本発明の実施の形態の割り当て済みチャネルＩＤ更新処理のシーケンス図である。
【０２１１】
前述の図１０のステップＳ９０８において、仮想チャネルの物理チャネルへの割り当て処理が成功しときは、管理パケット処理部１３３は、物理チャネルテーブル１７の、物理チャネルに対応する割り当て済み仮想チャネルＩＤを、仮想チャネルＡの仮想チャネルＩＤの値に更新する（ステップＳ１００１）。
【０２１２】
次に、管理パケット処理部１３３は、割り当て済みの物理チャネルの他計算機物理ネットワークアドレス宛に、仮想チャネル割り当て通知パケットを管理パケット８０５として送信する。（ステップＳ１００２）
仮想チャネル割り当て通知パケット８０５（図９（Ｅ）参照）は、送信元物理ネットワークアドレス、宛先物理ネットワークアドレス、パケット識別子、及び、物理チャネルに割り当てた仮想チャネルＩＤを含んで構成される。
【０２１３】
また、パケット識別子には「ＩＤ更新」を示す識別子が格納されている。この識別子によって、受信側の仮想ＮＩＣ処理部１３１が、当該パケットは仮想チャネル割り当て通知パケットであることを識別できる。
【０２１４】
計算機１１Ｂにおいて、仮想ＮＩＣ処理部１３１が、送信された仮想チャネル割り当て通知パケットを受信する（ステップＳ１００３）。この受信パケットは、管理用パケットであると判定され、管理パケット処理部１３３が以降の処理を実行する。
【０２１５】
受信側の管理パケット処理部１３３は、物理チャネルテーブル１７を参照して、受信した仮想チャネル割り当て通知パケットに含まれる送信元物理ネットワークアドレス、及び、宛先物理ネットワークアドレスが一致する物理チャネルを選択する。そして、選択された物理チャネルに対応するレコードの割り当て済みチャネルＩＤを、受信した仮想チャネル割り当て通知パケットに含まれる仮想チャネルＩＤに更新する（ステップＳ１００４）。
【０２１６】
次に、受信側の管理パケット処理部１３３は、仮想チャネル割り当て通知パケットに含まれている送信元物理ネットワークアドレスを宛先として、チャネル割り当て応答パケットを生成し、生成されたパケットを送信する（ステップＳ１００５）。
【０２１７】
送信側の仮想ＮＩＣ処理部１３１が、送信された仮想チャネル割り当て応答パケットを受信する（ステップＳ１００６）。この受信パケットは、管理用パケットであると判定され、管理パケット処理部１３３及び仮想ＮＩＣ処理部１３１が、処理を実行する。すなわち、チャネル割り当て応答パケットを受信したことによって、仮想チャネルの割り当てが完了し、物理チャネルテーブル１７か更新されたことを確認する。
【０２１８】
受信側の物理チャネルテーブル１７が更新されたことを確認する前に、送信側の計算機１１がデータ用パケットを送信すると、パケットの追い越しがあった場合に誤った物理チャネルテーブル１７を参照してデータ用パケットのアドレスが書き換えられてしまう可能性がある。
【０２１９】
そのため、送信側仮想ＮＩＣ処理部１３１は、ステップＳ１００４において、受信側の管理パケット処理部１３３によって送信された仮想チャネル割り当て応答パケットを受信するまで、データ用パケットの送信処理を中断して待つ。
【０２２０】
なお、仮想チャネル割り当てパケットは、管理パケットとして個別に送信するのではなく、仮想ＮＩＣ処理部１３１によって送信されるデータ用パケットの一部に含めてもよい。
【０２２１】
例えば、仮想ＮＩＣ処理部１３１が、仮想チャネルＩＤの情報をＶＬＡＮ  ＩＤタグに付与することによって、当該ＶＬＡＮ  ＩＤを含むデータ用パケットは仮想チャネルＩＤを示すデータとして用いることもできる。
【０２２２】
この方法を用いる場合は、受信側の仮想ＮＩＣ処理部１３１が、図７のステップＳ５１０において、パケットにＶＬＡＮ  ＩＤが付与されたＶＬＡＮタグが含まれていることを検出すると、受信側の仮想ＮＩＣ処理部１３１が、当該データ用パケットの内容に基づいて、仮想チャネル割り当て通知パケットを内部的に生成する。生成されたパケットを管理パケット処理部１３３に転送する。
【０２２３】
より具体的には、仮想ＮＩＣ制御部１３１は、仮想チャネルＩＤの値をＶＬＡＮ  ＩＤの値として、送信元物理ネットワークアドレス、宛先物理ネットワークアドレス、パケット識別子、及び、仮想チャネルＩＤを含んだ仮想チャネル割り当て通知パケットを生成する。
【０２２４】
特に、ＶＬＡＮタグを含むデータ用パケットを、メッセージの一部として他の通常のデータ用パケットと共に送信することによって、物理チャネルテーブル１７のデータを更新する前にデータ用パケットが追い越して受信されることがない。そのため、管理パケット送信することで図１１の処理を実行することと比較すると、ステップＳ１００５及びＳ１００６の処理を実行する必要がなくなり、受信側計算機１１の応答を待ってからデータ用パケットを送信する必要がなくなる。
【０２２５】
ただし、ＶＬＡＮタグを使用する場合は、物理チャネル間で割り当て可能な仮想チャネルＩＤのそれぞれについて、対応するＶＬＡＮ  ＩＤを用いた制御が可能であるようにシステムを構成しておく必要がある。
【０２２６】
以上のように、本発明は、仮想ネットワークを構築する場合、はじめに各計算機１１において、計算機の管理者が仮想ＮＩＣを定義する。
【０２２７】
仮想ＮＩＣ処理部１３１は前記の定義がなされたときに、仮想ネットワークインターフェース追加通知パケットを送信して、仮想ネットワーク中の計算機で物理チャネルテーブル１７、仮想チャネルテーブル１６を更新する。
【０２２８】
次に、アプリケーションプログラム１２が、仮想チャネルで識別される仮想ＮＩＣ間でパケットを送信しようとした場合に、図５に示す送受信処理が開始される。その中のステップＳ５０５において、仮想チャネルに対して物理チャネルが割り当て済みになっていない場合は、図１０及び図１１に示す処理に従って、仮想チャネルに対して物理チャネルを割り当てる。
【０２２９】
その後、図５における処理が継続され、パケットは仮想チャネルに割り当てられた一つ以上の物理チャネルに対応付けられた物理ＮＩＣ１５を通して、他の計算機の物理ＮＩＣに転送される。
【０２３０】
このように、アプリケーションプログラム１２からは、透過的にチャネルの定義、チャネルの物理的なインターフェースが実行され、複数の物理ＮＩＣを並列に使用してデータが転送されることで、広帯域のデータ転送を実現できる。
【０２３１】
このように、本発明によるネットワークシステムは、二つ以上の計算機間が任意のネットワーク構成を通して複数のＮＩＣで接続されている環境において、二つの計算機が複数のＮＩＣを使用して並列にデータ転送を行って一つのＮＩＣでの転送よりも広帯域なデータ転送を実現するネットワークシステムである。さらに、本発明のネットワークシステムは、計算機上のアプリケーションプログラムでは、複数のＮＩＣを使用することを意識することなく、単一のＮＩＣを使用しているように見せかけるネットワークシステムである。
【０２３２】
また、本発明によるネットワークシステムは、既存のアプリケーションプログラムからＮＩＣに発行されたパケット転送処理を仲介し、複数のＮＩＣに並列に分散させて転送する下位層の制御プログラムを対象とする。このような制御プログラムには、オペレーティングシステムのデバイスドライバ又は計算機を複数の仮想計算機に分割する仮想計算機システムにおいて、仮想計算機上のＮＩＣに対するアクセスをエミュレートする仮想ＮＩＣ制御プログラムなどが適用される。
【図面の簡単な説明】
【０２３３】
【図１】本発明の実施の形態の仮想ネットワークシステムの構成ブロック図である。
【図２】本発明の実施の形態の計算機の構成ブロック図である。
【図３】本発明の実施の形態の仮想チャネルテーブルの一例の説明図である。
【図４】本発明の実施の形態の物理チャネルテーブルの一例の説明図である。
【図５】本発明の実施の形態のデータ転送の処理のフローチャートである。
【図６】本発明の実施の形態の管理用パケット処理のフローチャートである。
【図７】本発明の実施の形態の仮想ＮＩＣ追加処理のシーケンス図である。
【図８】本発明の実施の形態の仮想ＮＩＣ削除処理のシーケンス図である。
【図９】本発明の実施の形態の管理用パケットの構成の一例の説明図である。
【図１０】本発明の実施の形態の物理チャネル割り当て処理のフローチャートである。
【図１１】本発明の実施の形態の割り当て済みチャネルＩＤ更新処理のシーケンス図である。
【符号の説明】
【０２３４】
１１  計算機
１２  アプリケーションプログラム
１３  仮想ＮＩＣ
１３１  仮想ＮＩＣ処理部
１３２  アドレス書き換え部
１３３  管理パケット処理部
１４  物理ＮＩＣ制御部
１５  物理ＮＩＣ
２０１  ＣＰＵ
２０２  ＦＳＢ
２０３  ノースブリッジ
２０４  メモリ
２０５  ＩＯブリッジ
２０６  ＩＯバス
２０７  ＳＣＳＩ／ＦＣ
２０８  ＮＩＣ
２０９  入出力装置
３０１  送信元仮想ネットワークアドレス
３０２  宛先仮想ネットワークアドレス
３０３  仮想チャネルＩＤ
３０４  仮想チャネル優先制御情報３０４
３０５  仮想チャネル使用頻度
４０１  自計算機物理ネットワークアドレス
４０２  他計算機物理ネットワークアドレス
４０３  割り当て可能仮想チャネルリスト
４０４  割り当て済み仮想チャネルＩＤ
【図１】
2008294717.tif 000003
【図２】
2008294717.tif 000004
【図３】
2008294717.tif 000005
【図４】
2008294717.tif 000006
【図５】
2008294717.tif 000007
【図６】
2008294717.tif 000008
【図７】
2008294717.tif 000009
【図８】
2008294717.tif 000010
【図９】
2008294717.tif 000011
【図１０】
2008294717.tif 000012
【図１１】
2008294717.tif 000013