以下に、本願の開示する通信制御システム、通信制御方法及び通信制御プログラムの実施例を図面に基づいて詳細に説明する。なお、以下の実施例により本願の開示する通信制御システム、通信制御方法及び通信制御プログラムが限定されるものではない。
図1は、実施例1に係る通信制御システムのハードウェア構成図である。本実施例に係る通信制御システムは、コンピュータ1、回線収容装置2及びコンピュータ3a〜3cを有する。そして、コンピュータ1と回線収容装置2は、TCP/IPを用いた通信を行う通信網4を介して接続されている。例えば、通信網4は、LANなどである。また、回線収容装置2とコンピュータ3a〜3cとは、TCP/IP以外のプロトコルを用いて通信を行う通信網5a〜5cを介して接続されている。通信網5a〜5cは、例えば、レガシーなWAN回線である。例えば、通信網5a〜5cには、専用回線、電話回線、回線交換網、パケット交換網、ISDN(Integrated Services Digital Network)網、高速デジタル回線、フレームリレーなどの回線が使用される。また、通信網5a〜5cでは、通信を行うために、TCP/IP以外のプロトコルを用いたデータの送受信を行うための通信カード(以下では、「回線カード」という。)が通信に用いられる。言い換えれば、回線カードは、レガシーなWAN回線を用いた通信特有のネットワークカードである。通信網5で用いられるプロトコルは、コンピュータ1とコンピュータ3a〜3cとの間で予め規定されたプロトコルである。このプロトコルは、例えば、HDLCやコンピュータメーカー独自のプロトコルなどである。
コンピュータ1は、仮想化システムを有するコンピュータである。コンピュータ1は、メモリ1001、DISK1002、CPU(Central Processing Unit)1003及びTCP/IP通信カード1004を有している。このコンピュータ1が、「情報処理装置」の一例にあたる。
メモリ1001、DISK1002及びTCP/IP通信カード1004は、CPU1003とバスで接続されている。DISK1002は、以下に説明するようなコンピュータ1で実行される処理を実現する各種プログラムを記憶している。そして、CPU1003は、各種プログラムをDISK1002から読み出し、メモリ1001上にコンピュータ1における処理を実現する各種プロセスを展開し実行する。
TCP/IP通信カード1004は、TCP/IPのプロトコルを用いて、通信網4を介して回線収容装置2とデータの授受を行う。
また、回線収容装置2は、メモリ2001、DISK2002、CPU2003、TCP/IP通信カード2004及び回線カード23を有している。回線カード23は、回線収容装置2に1枚以上搭載されている。
メモリ2001、DISK2002、TCP/IP通信カード2004及び回線カード23は、CPU2003とバスで接続されている。DISK2002は、以下に説明するような回線収容装置2で実行される処理を実現する各種プログラムを記憶している。そして、CPU2003は、各種プログラムをDISK2002から読み出し、メモリ2001上に回線収容装置2における処理を実現する各種プロセスを展開し実行する。
TCP/IP通信カード2004は、TCP/IPのプロトコルを用いて、通信網4を介してコンピュータ1との間でデータの授受を行う。
回線カード23は、TCP/IP以外のプロトコルを用いて、通信網5a〜5cを介してコンピュータ3a〜3cとの間でデータの授受を行う。ここで、図1では、通信網及びコンピュータを各3つ記載したが、それぞれの数に特に制限はない。
図2は、コンピュータ1のブロック図である。コンピュータ1は、アプリケーション制御部101、OS(Operating System)制御部102を有する。
アプリケーション制御部101は、OS制御部102とのデータの送受信などを行いながら各種アプリケーションを実行する。
OS制御部102は、コンピュータ1に搭載された各種ハードウェアの動作やコンピュータ1のシステム全体の統括制御を行う。OS制御部102は、システム制御部103、カーネル・ドライバ制御部104及びメモリ制御部105を有する。
システム制御部103は、コンピュータ1のシステム全体を統括制御する。
カーネル・ドライバ制御部104は、システムのリソースを管理し、ハードウェアとソフトウェアとのコンポーネントのやりとりを管理する。また、カーネル・ドライバ制御部104は、後述するネットワークドライバなど各種ドライバの動作の制御を行う。
メモリ制御部105は、メモリへのデータの格納や読み出しなどの管理を行う。
図3は、回線収容装置2のブロック図である。回線収容装置2は、アプリケーション制御部201、OS制御部202を有する。
アプリケーション制御部201は、OS制御部202とのデータの送受信などを行いながら各種アプリケーションを実行する。
OS制御部202は、回線収容装置2に搭載された各種ハードウェアの動作や回線収容装置2のシステム全体の統括制御を行う。OS制御部202は、システム制御部203、カーネル・ドライバ制御部204及びメモリ制御部205を有する。
システム制御部203は、回線収容装置2のシステム全体を統括制御する。
カーネル・ドライバ制御部204は、システムのリソースを管理し、ハードウェアとソフトウェアとのコンポーネントのやりとりを管理する。また、カーネル・ドライバ制御部204は、後述するネットワークドライバなど各種ドライバの動作の制御を行う。
メモリ制御部205は、メモリへのデータの格納や読み出しなどの管理を行う。
次に、図4を参照して、本実施例に係る通信制御システムにおける詳細な構成及び動作を説明する。図4は、実施例1に係る通信制御システムの構成図である。
本実施例では、コンピュータ1には、仮想マシンである管理ドメイン11及びゲストドメイン12が設けられている。コンピュータ1は、コンピュータ3に対してサービスを提供するコンピュータである。例えば、コンピュータ1は、さまざまなアプリケーションの機能を提供するクラウドサービスを提供する。
管理ドメイン11は、仮想マシン機能を管理するための仮想マシンである。管理ドメイン11は、PV(Para-Virtualized driver)ドライバ111とLANドライバ112を有する。
PVドライバ111は、仮想マシン同士で通信を行うことを実現するための仮想的な内部通信用のドライバである。PVドライバ111は、後述するPVドライバ126とデータの受け渡しを内部通信制御ドライバ127を介して行う。そして、PVドライバ111は、PVドライバ126から受信したデータ及び使用するLANカードの指定などを含む通信情報をLANドライバ112へ出力する。この通信情報については、後で詳細に説明する。
LANドライバ112は、TCP/IPネットワークカードを動作させる。具体的には、LANドライバ112は、TCP/IPネットワークカードを用いて通信網4を介して回線収容装置2のTCP/IPネットワークカードとの間でTCP/IPで通信を行うためのドライバである。LANドライバ112は、データ及び通信情報をPVドライバ111から受信する。そして、LANドライバ112は、データに付加された通信情報から使用するTCP/IPネットワークカードなどを特定する。さらに、LANドライバ112は、データに付加された回線収容装置2のIPアドレス及びポート番号を取得する。そして、LANドライバ112は、特定したTCP/IPネットワークカードを用いて、取得したIPアドレス及びポート番号に向けてデータを出力する。
ゲストドメイン12は、アプリケーションなどを実行し、実際にサービスを提供する仮想マシンである。ゲストドメイン12は、アプリケーション実行部121、WANドライバ122、WANonTCP/IPドライバ123、TCP/IPドライバ124、LANマルチプロトコル制御部125、PVドライバ126及び内部通信制御ドライバ127を有する。
アプリケーション実行部121は、図2におけるアプリケーション制御部101の機能の一部を実現する。アプリケーション実行部121は、コンピュータ3を用いてコンピュータ1に接続してきた利用者が利用するアプリケーションを格納している。そして、アプリケーション実行部121は、格納しているアプリケーションを読み出し実行する。そして、アプリケーション実行部121は、アプリケーションが生成したユーザデータを取得する。ここで、ユーザデータはアプリケーション層におけるデータである。利用者は、アプリケーションを介してユーザデータを利用する。
また、アプリケーション実行部121は、アプリケーションからコンピュータ3との通信の指示を受けるときに、回線カード23において使用する仮想のネットワークを指定するための回線記述名を取得する。また、アプリケーション実行部121は、使用する回線カード23が回線収容装置2のどのスロットに入っているかを示す情報を取得する。例えば、全二重通信を用いる場合には、アプリケーション実行部121は、回線記述名として受信側の回線記述名及び送信側の回線記述名を取得する。
そして、アプリケーション実行部121は、ユーザデータと共に使用する回線記述名及び回線カード23の回線収容装置2におけるスロット情報をネットワーク共通制御部128へ出力する。
また、アプリケーション実行部121は、コンピュータ3から送信されたデータをネットワーク共通制御部128から取得すると、アプリケーションを実行し取得したデータを処理する。
ネットワーク共通制御部128は、図2におけるカーネル・ドライバ制御部104の機能の一部を実現する。ネットワーク共通制御部128は、アプリケーションと各ドライバとの通信の仲介及び各ドライバ同士の通信の仲介を行う。例えば、ネットワーク共通制御部128は、アプリケーション実行部121から受信したユーザデータをWANドライバ122へ出力する。そして、ネットワーク共通制御部128は、WANドライバ122から受信したユーザデータをWANonTCP/IPドライバ123へ出力する。このように、実際には、各ドライバから他のドライバへのデータの受け渡しはネットワーク共通制御部128を介して行われる。ただし、説明の便宜上、以下の説明では、各ドライバ同士が直接データの送受信を行っているように、すなわち、図4の点線矢印で表されるようにデータの流れを説明する場合がある。また、ネットワーク共通制御部128は、後述するWANonTCP/IPドライバ123によるデータやコマンドの受け渡しに用いるキューの制御管理を行う。
WANドライバ122は、レガシーなWAN回線である通信網5を介してコンピュータ3と通信を行うドライバである。WANドライバ122は、ネットワーク共通制御部128を介してアプリケーション実行部121から出力されたユーザデータを受信する。WANドライバ122は、通信網5を経由して送受信できるプロトコル形式にユーザデータを変更する。さらに、WANドライバ122は、回線カード23へアクセスするための情報をユーザデータに付加する。回線カード23へアクセスするための情報とは、例えば、回線カード23の動作制御情報、コンピュータ1及びコンピュータ3の装置情報及びユーザデータのメモリ領域指定などである。そして、WANドライバ122は、通信網5を経由して送受信できるプロトコル形式に変更し、且つ回線カード23の動作制御情報を付加したユーザデータを、ネットワーク共通制御部128を介してWANonTCP/IPドライバ123へ出力する。
また、WANドライバ122は、コンピュータ3が送信したデータに付加されたレガシーなWAN回線を用いた通信のプロトコル情報を用いて、WANonTCP/IPドライバ123からコンピュータ3が送信したデータを受信する。そして、WANドライバ122は、コンピュータ3が送信したデータをネットワーク共通制御部128を介してアプリケーション実行部121へ出力する。このWANドライバ122が、「第1プロトコルデータ処理部」の一例にあたる。
WANonTCP/IPドライバ123は、WANドライバ122とTCP/IPドライバ124を仲介するプログラムである。WANonTCP/IPドライバ123は、ネットワーク共通制御部128を介してWANドライバ122から、通信網5を経由して送受信できるプロトコル形式に変更したユーザデータを受信する。そして、WANonTCP/IPドライバ123は、アプリケーション実行部121に指定された回線記述名に対応する回線カード23の情報を記憶部129から読み出す。
ここで、記憶部129が記憶する情報は、例えば、図5Aに示す回線記述名に対応する回線アドレス及び図5Bに示す通信における環境定義の情報などである。図5Aは、回線アドレスと回線記述名との対応を表す図である。図5Bは、通信における環境定義の情報を表す図である。記憶部129は、図5Aに示すように、回線記述名と回線アドレスとを対応させて記憶している。また、記憶部129は、各回線記述名に対応させて、回線収容装置2のIPアドレス、回線収容装置2のポート番号、回線収容装置2における使用する回線カード23のスロット情報を記憶している。具体的には、記憶部129は、これらの情報をファイルとして記憶している。これらの情報は、管理者などが通信環境に従い予め記憶部129に記憶させておく。
例えば、回線記述名が「LINE4108」及び「LINE4109」の場合のWANonTCP/IPドライバ123による回線カード23の情報の取得について説明する。この場合、WANonTCP/IPドライバ123は、記憶部129が記憶する図5Aで示される情報を参照して、対応する回線アドレス4108及び4109を取得する。さらに、WANonTCP/IPドライバ123は、図5Bで示される情報を参照して、回線収容装置2のIPアドレスとして10.12.13.50を取得し、ポート番号として10400を取得する。また、WANonTCP/IPドライバ123は、回線カード23のスロット情報として00:03.0を取得する。さらに、WANonTCP/IPドライバ123は、ゲストドメイン12の識別名としてHOST01を取得する。これにより、WANonTCP/IPドライバ123は、指定された回線カード23のアドレスやどの回線収容装置2のどのスロットにあるかを把握する。ここで、本実施例では、ゲストドメイン12内では回線記述名を用いて通信を行っているが、回線記述名を用いずに直接回線アドレスを用いて通信を行うことも可能である。
なお、実施例1において、図5Aに示す回線記述名が「LINE4108」及び「LINE4109」に対応する2つの回線アドレスを用いて、1個のゲストドメイン12に接続している。ゲストドメイン12の使用可能数は、回線カード23が有する回線アドレス数に依存する。例えば、回線カード23が2つの回線アドレスを有し、回線アドレス23の総数が4枚である場合、使用可能であるゲストドメイン12の総数は4個である。
WANonTCP/IPドライバ123は、回線収容装置2の回線GW制御部21との間で規定したプロトコルの情報をユーザデータに付加する。WANonTCP/IPドライバ123が付加するプロトコルの情報とは、例えば、回線カードの回線アドレスやゲストドメイン12の識別名などを含むどの回線カードを通信に使用するかの情報やレガシーなWAN回線を用いた通信を行うサービスの起動情報などである。
そして、WANonTCP/IPドライバ123は、回線カード23へアクセスするための情報を付加したユーザデータを、ネットワーク共通制御部128を介してTCP/IPドライバ124へ出力する。さらに、WANonTCP/IPドライバ123は、回線収容装置2のIPアドレス及び回線収容装置2のポート番号をソケットによりTCP/IPドライバ124へ送信する。
また、WANonTCP/IPドライバ123は、コンピュータ3が送信したデータに付加された回線GW制御部21との間で規定したプロトコルの情報を用いて、TCP/IPドライバ124からコンピュータ3が送信したデータを受信する。そして、WANonTCP/IPドライバ123は、コンピュータ3が送信したデータをネットワーク共通制御部128を介してWANドライバ122へ出力する。
ここで、図6を参照して、WANonTCP/IPドライバ123の機能についてより詳細に説明する。図6は、WANonTCP/IPドライバの詳細なブロック図である。
図6に示すように、WANonTCP/IPドライバ123は、イベント通知処理部151、IO(Input Output)要求処理部152、回線収容装置接続処理部153、回線収容装置切断処理部154、非同期イベント受信部155、トレース処理部156及び環境定義取得部157を有している。
イベント通知処理部151は、キューを用いて、WANonTCP/IPドライバ123とWANドライバ122又はTCP/IPドライバ124との間のデータや要求(コマンド)の受け渡しを行う。
環境定義取得部157は、記憶部129に記憶されている回線記述名と回線アドレスの対応及び環境定義の情報から指定された回線アドレスに対応する回線カード23の情報を取得する。具体的には、環境定義取得部157は、回線カード23の情報を取得しメモリ上に展開する。環境定義取得部157が取得した回線カード23の情報は、後述するIO要求処理部152、回線収容装置接続処理部153、回線収容装置切断処理部154及び非同期イベント処理部155によって参照され利用される。
IO要求処理部152は、WANドライバ122から受信したIO要求を、TCP/IPドライバ124経由で回線収容装置2へ送信する。また、IO要求処理部152は、回線制御データのプロトコルを用いたIO要求をTCP/IPへカプセル化するため、TCP/IPドライバ124へIO要求を送信する。IO要求の送信データ長がTCP/IPで定義されている送信用バッファ長を超える場合は、IO要求処理部152は、IO要求を送受信バッファ長に分割してTCP/IPドライバ124へ送信する。このIO要求処理部152により、回線カード23の情報の取得及びユーザデータへのプロトコルの情報の付加が行われる。
回線収容装置接続処理部153は、ネットワークの接続処理を起動して、WANonTCP/IPドライバ123と回線収容装置2における回線GW制御部21とのソケット通信を確立する。回線収容装置接続処理部153は、WANドライバ122からの活性化要求を受信すると、回線収容装置2に対して接続要求を行う。ここで、活性化要求とは、ネットワークの接続処理の起動通知である。
回線収容装置切断処理部154は、以下の場合に、WANonTCP/IPドライバ123と回線収容装置2における回線GW制御部21とのソケット通信を切断する。1つは、回線収容装置切断処理部154が、WANドライバ122から非活性化要求の受信をした場合である。ここで、非活性化要求とは、ネットワーク接続の停止の通知である。もう1つは、回線収容装置切断処理部154が、ソケットAPI(Application Program Interface)によりネットワークダウンやプロトコルエラーの通知をTCP/IPドライバ124から受信した場合である。さらにもう1つは、内部矛盾エラーがWANonTCP/IPドライバ123内で発生した場合である。
非同期イベント受信部155は、回線収容装置2の回線GW制御部21から送られた非同期のイベントを受信して処理する。
トレース処理部156は、WANonTCP/IPドライバ123が行った処理の情報を採取しメモリに格納する内部トレース及びネットワークで発生した処理の情報を採取しメモリに格納するネットワーク共通トレースを行う。ネットワーク共通トレースは、ネットワークの保守などに用いられる。ネットワーク共通トレースの場合、トレース処理部156は、キューの送受信内容を採取するため、イベント通知処理部151にて送受信されたキューの情報を採取する。内部トレースは、障害発生時において実行された処理を追跡するために使用される。具体的には、内部トレースでは、トレース処理部156は、WANonTCP/IPドライバ123の内部で発生したエラー及びWANonTCP/IPドライバ123と他のドライバなどとの間の制御情報を記録する。
TCP/IPドライバ124は、通信網4を介して回線収容装置2との間でTCP/IPを用いた通信を行うためのプログラムである。TCP/IPドライバ124は、ネットワーク共通制御部128を介してWANonTCP/IPドライバ123から、ユーザデータ及びソケットを受信する。
TCP/IPドライバ124は、ソケット通信により受信した回線収容装置2のIPアドレス及びポート番号を用いて、ユーザデータをTCP/IPを用いて通信網4を経由して送受信できる形式のデータに変更する。ここで、TCP/IPドライバ124は、通信網5を介して送受信するためのプロトコルの情報を含んだ状態で、TCP/IPで通信できる形式にユーザデータを変更する。そして、TCP/IPドライバ124は、TCP/IPで通信できる形式に変更したユーザデータを、ネットワーク共通制御部128を介してLANマルチプロトコル制御部125へ出力する。
また、TCP/IPドライバ124は、回線GW制御部21によってコンピュータ3が送信したデータに付加されたTCP/IPのプロトコルの情報を用いて、回線GW制御部21が送信したコンピュータ3からのデータを受信する。そして、TCP/IPドライバ124は、コンピュータ3が送信したデータをネットワーク共通制御部128を介してWANonTCP/IPドライバ123へ出力する。
WANonTCP/IPドライバ123及びTCP/IPドライバ124が、「第2プロトコルデータ処理部」の一例にあたる。
LANマルチプロトコル制御部125は、TCP/IPドライバ124からユーザデータを受信する。そして、LANマルチプロトコル制御部125は、例えば、コンピュータ1に搭載されたLANカードのいずれを使用するかなどの通信情報を指定する。そして、LANマルチプロトコル制御部125は、通信情報と共にユーザデータをPVドライバ126へ出力する。
PVドライバ126は、通信情報及びユーザデータをLANマルチプロトコル制御部125から受信する。そして、PVドライバ126は、管理ドメイン11のPVドライバ111に向けてユーザデータを送信する。
内部通信制御ドライバ127は、PVドライバ126からユーザデータを受信する。そして、内部通信制御ドライバ127は、PVドライバ126から受信したユーザデータを管理ドメイン11のPVドライバ111へ送信する。また、内部通信制御ドライバ127は、ゲストドメイン12におけるハードディスクなどI/Oから出力されたデータを、管理ドメイン11における指定されたI/Oに送信するといった、通信の仲介も行う。
仮想化ソフトウェア13は、コンピュータ1における仮想化システムを統括管理するソフトウェアである。例えば、仮想化ソフトウェア13は、内部通信制御ドライバ127からPVドライバ111へ向けて出力されたユーザデータを、PVドライバ111へ転送する。
LANマルチプロトコル制御部125、PVドライバ126、内部通信制御部ドライバ127、PVドライバ111及びLANドライバ112が、「データ送信部」の一例にあたる。
回線収容装置2は、回線GW(Gate Way)制御部21、回線カードドライバ22、回線カード23、記憶部24及び統括制御部25を有している。
記憶部24は、ハードディスクなどを有する記憶装置である。記憶部24は、回線GW制御部21から受信した動作ログを格納する。また、記憶部24は、回線カード23の構成情報を格納している。この構成情報には、図7に示すような、回線アドレスと回線カードとの対応を表す対応テーブル240も含まれている。図7は、回線アドレスと回線カードとの対応を表す対応テーブルの図である。図7に示すように、対応テーブル240には、ゲストドメイン12の識別名、回線アドレス及び回線収容装置2におけるスロット情報の組合せに対応する回線カードの物理的な位置を示すデバイスファイルが記載されている。そして、記憶部24は、統括制御部25からの指示を受けて、格納している回線カード23の構成情報を初期化する。ここで、本実施例では、識別名を用いて回線アドレスと回線カードとの対応を管理しているが、これは他の情報を用いて管理することもできる。例えば、識別名の変わりにIPアドレスを用いて管理することもできる。また、記憶部24は、回線GW制御部21の起動時に回線GW制御部21で実行されるサービスと回線カード23とを関連付けるための動作環境定義ファイルを記憶している。動作環境定義ファイルについては後で詳細に説明する。
回線GW制御部21は、WANonTCP/IPドライバ123と、通信を行い、TCP/IP化されたユーザデータを解析し、回線カードドライバ22へ出力する。また、回線GW制御部21は、回線カードドライバ22から受信したデータをTCP/IP化してWANonTCP/IPドライバ123へ送信する。また、回線GW制御部21は、各回線カードに対応するデバイスファイルを回線カードドライバ22から取得し、記憶部24が記憶する図7に示す対応テーブル240に格納する。
具体的には、回線GW制御部21は、LANドライバ112が送信したTCP/IPのプロトコルの形式のユーザデータを、通信網4を介して取得する。そして、回線GW制御部21は、WANonTCP/IPドライバ123によりユーザデータに付加されたどの回線カードを通信に使用するかの情報やレガシーなWAN回線を用いた通信を行うサービスの起動情報を取得する。ここで、どの回線カードを通信に使用するかの情報には、図7に示す対応テーブル240に記載された識別名、回線アドレス及びスロット情報などが含まれる。そして、回線GW制御部21は、通信に使用する回線カード23の構成情報を記憶部24の回線カード構成情報242から取得する。また、回線GW制御部21は、WAN通信サービスが起動されていることを確認する。その後、回線GW制御部21は、ユーザデータを回線カードドライバ22へ送信するとともに、回線カード23を利用してコンピュータ1からコンピュータ3に向けてユーザデータを送信する指示を回線カードドライバ22へ通知する。
また、回線GW制御部21は、統括制御部25からの指示を受けて、動作ログを生成し、記憶部24に生成したログを格納する。例えば、回線GW制御部21は、動作ログとしてシステムログや保守ログを生成する。この回線GW制御部21が、「データ変換部」の一例にあたる。
統括制御部25は、回線収容装置2の全体的な動作を統括制御する。例えば、統括制御部25は、回線GW制御部21で実行されるサービスの起動及び停止の命令を回線GW制御部21に通知する。統括制御部25は、動作環境定義ファイルの記述に従い、回線GW制御部21で実行されるサービスを起動させる。また、統括制御部25は、操作者により状態情報の出力を指示された場合、ログの生成及び出力を回線GW制御部21に通知する。また、統括制御部25は、操作者により状態情報の出力の停止を指示された場合、ログの生成及び出力の停止を回線GW制御部21に通知する。また、統括制御部25は、操作者から回線カード23の構成情報の初期化の指示を受けた場合、記憶部24に格納されている回線カード23の構成情報を削除する。
ここで、図8を参照して、回線収容装置2の機能についてさらに詳しく説明する。図8は、回線収容装置の詳細なブロック図である。
回線GW制御部21は、図8に示すように、ログ生成部211、論理基盤管理部212、データ送信部213、データ受信部214及び回線カードアクセス制御部215を有している。また、記憶部24は、ログ241、回線カード構成情報242及び動作環境定義ファイル243を格納している。
コンピュータ1のLANドライバ112によって送信されたユーザデータは、カーネル空間のソケットインタフェース216を介してデータ送信部213に入力される。
データ送信部213は、通信に使用する回線カード23が入っているスロットの情報及び回線アドレスの情報を受信したユーザデータから取得する。そして、データ送信部231は、取得した通信に使用する回線カード23が入っているスロットの情報及び回線アドレスの情報を論理基盤管理部212に送信し、対応する回線カード23の情報を要求する。
そして、データ送信部213は、論理基盤管理部212から取得した回線カード23の情報を回線カードアクセス制御部215へ通知する。さらに、データ送信部213は、回線カード23の動作制御情報が付加されたユーザデータを回線カードアクセス制御部215へ出力する。
また、データ送信部213は、自己の動作情報をログ生成部211へ出力する。
データ受信部214は、回線カードアクセス制御部215からデータを受信する。そして、データ受信部214は、コンピュータ1と通信するためのTCP/IPのプロトコルの情報を論理基盤管理部212から取得する。そして、データ受信部214は、受信したデータをTCP/IPの形式に変換する。その後、データ受信部214は、ソケットインタフェース216を介して通信網4経由でコンピュータ1のLANドライバ112に送信する。
また、データ受信部214は、自己の動作情報をログ生成部211へ出力する。
論理基盤管理部212は、通信に使用する回線カード23が入っているスロット及び回線アドレスの組合せに対応する回線カード23を記憶している。また、論理基盤管理部212は、コンピュータ1と通信するためのTCP/IPのプロトコルの情報を記憶している。
論理基盤管理部212は、通信に使用する回線カード23が入っているスロットの情報及び回線アドレスの情報をデータ送信部213から取得すると、対応する回線カード23を特定する。そして、論理基盤管理部212は、特定した回線カード23の構成情報を記憶部24が格納している回線カード構成情報242に含まれる回線アドレスと回線カードとの対応を表す対応テーブル240(図7参照)から取得する。その後、論理基盤管理部212は、取得した回線カード23の構成情報をデータ送信部213へ出力する。
また、論理基盤管理部212は、コンピュータ1へ送るデータの受信の通知をデータ受信部214から受けると、コンピュータ1と通信するためのTCP/IPのプロトコルの情報をデータ受信部214へ送信する。
また、論理基盤管理部212は、自己の動作情報をログ生成部211へ出力する。
回線カードアクセス制御部215は、ユーザデータの入力をデータ送信部213から受ける。さらに、回線カードアクセス制御部215は、通信に使用する回線カード23の情報をデータ送信部213から受信する。回線カードアクセス制御部215は、受信したユーザデータに付加されている回線カード23の動作制御情報を取得する。そして、回線カードアクセス制御部215は、指定された回線カード23を用いて、回線カード23の動作制御情報に従い、コンピュータ3へユーザデータを送信するように、レガシーWAN通信アクセス用インタフェース217を介して回線カードドライバ22に指示する。レガシーWAN通信アクセス用インタフェース217は、カーネル空間へのインタフェースである。
また、回線カードアクセス制御部215は、コンピュータ3から送られてきたデータを回線カードドライバ22からレガシーWAN通信アクセス用インタフェース217を介して受信する。そして、回線カードアクセス制御部215は、受信したデータをデータ受信部214へ出力する。
また、回線カードアクセス制御部215は、自己の動作情報をログ生成部211へ出力する。
ログ生成部211は、論理基盤管理部212、データ送信部213、データ受信部214及び回線カードアクセス制御部215のそれぞれから、それぞれの動作情報を取得する。そして、ログ生成部211は、状態出力の指示を統括制御部25から受けている場合、受信した動作情報を用いてログを生成する。その後、ログ生成部211は、ログ241を記憶部24に格納する。
回線カードドライバ22は、ユーザデータを回線GW制御部21から受信する。さらに、回線カードドライバ22は、コンピュータ1からコンピュータ3に向けてユーザデータを送信する指示を回線GW制御部21から受信する。そして、回線カードドライバ22は、通信網5で用いる通信プロトコルにおけるコンピュータ3のアドレスを取得する。そして、回線カードドライバ22は、ユーザデータに付加している回線カード23の動作制御情報を用いて回線カードを制御することで、コンピュータ3にユーザデータを送信する。この回線カードドライバ22が、「送信部」の一例にあたる。
コンピュータ3は、通信網5における通信プロトコルを用いて回線カードドライバ22が送信したユーザデータを、通信網5を介して受信する。その後、コンピュータ3は、受信したユーザデータを処理する。
次に、図9を参照して、ユーザデータ送信時のユーザデータの遷移について説明する。図9は、送信時のユーザデータの遷移を表す図である。ここで、実際には、内部通信制御ドライバ127から出力されたデータは管理ドメイン11を経由して回線収容装置2に送られるが、図9では説明の都合上、管理ドメイン11は省略して記載している。図9における点線矢印は、点線矢印の先にあるデータがどこで生成されたかを表している。また、データ側から機能部へ向かう点線矢印は、点線矢印の先にある機能部においてそのデータが用いられることを示している。また、データ側から通信網へ向かう点線矢印は、点線矢印の先にある通信網における通信においてそのデータが用いられることを示している。
アプリケーション実行部121は、ユーザデータ301を生成する。ユーザデータ301は、アプリケーション実行部121がアプリケーションを実行することで生成されるアプリケーション層のデータである。
次に、アプリケーション実行部121で生成されたユーザデータ301は、WANドライバ122へ送られる。そして、WANドライバ122は、ユーザデータ301にWANプロトコルヘッダ302及び回線カードアクセスIF(Inter Face)303を付加する。
WANプロトコルヘッダ302は、コンピュータ1のネットワーク共通制御部128とコンピュータ3との間の通信において利用する制御情報である。WANプロトコルヘッダ302は、コンピュータ1とコンピュータ3との間で規定された通信制御情報であり、例えば、HDLCなどである。言いかえれば、WANプロトコルヘッダ302には、通信網5を介してコンピュータ3にデータを送るための情報が記載されている。
また、回線カードアクセスIF303は、回線カード23へアクセスするためのインタフェースの情報である。回線カードアクセスIF303は、例えば、コンピュータ1及びコンピュータ3の装置情報、ユーザデータのメモリ領域指定及び回線カード23の動作制御情報などが含まれている。
次に、WANプロトコルヘッダ302及び回線カードアクセスIF303が付加されたユーザデータ301は、WANonTCP/IPドライバ123へ送られる。そして、WANonTCP/IPドライバ123は、ユーザデータ301に回線仮想化IF304を付加する。
回線仮想化IF304は、WANonTCP/IPドライバ123と回線GW制御部21との間で規定したプロトコルである。具体的には、回線仮想化IF304には、通信に使用する回線カード23の情報やレガシーなWAN回線を用いた通信を行うサービスの起動情報が含まれている。
次に、回線仮想化IF304が付加されたユーザデータ301は、TCP/IPドライバ124へ送られる。そして、TCP/IPドライバ124は、ソケット通信により受信した回線収容装置2のIPアドレス及びポート番号を用いて、ユーザデータ301にTCP/IPヘッダ305を付加する。これにより、ユーザデータ301は、TCP/IPを用いて通信網4を経由して送受信できる形式になる。
次に、TCP/IPヘッダ305が付加されたユーザデータ301は、LANマルチプロトコル制御部125、PVドライバ126及び内部通信制御ドライバ127を介して、通信網4経由で回線GW制御部21へ送られる。このとき、ユーザデータ301は、TCP/IPヘッダ305に格納されているアドレスやポート番号の情報を使用して、回線GW制御部21へ送られる。
回線GW制御部21は、回線仮想化IF304に格納されているレガシーなWAN回線を用いた通信を行うサービスの起動情報を参照して、サービスの起動が開始されていることを確認する。さらに、回線GW制御部21は、回線仮想化IF304に格納されている通信に使用する回線カード23の情報を用いて、通信に使用する回線カード23の構成情報を記憶部24から取得する。
次に、WANプロトコルヘッダ302及び回線カードアクセスIF303が付加されたユーザデータ301は、回線カード23の構成情報と共に回線カードドライバ22へ送られる。そして、回線カードドライバ22は、回線カードアクセスIF303に格納されている回線カード23へアクセスするための情報を用いて、指定された回線カード23を動作させ、通信網5を介してコンピュータ3へユーザデータ301を送信する。このとき、ユーザデータ301は、WANプロトコルヘッダ303に格納されているレガシーなWAN回線での通信に用いられるプロトコルの情報を使用して、コンピュータ3へ送られる。
次に、図10を参照して、本実施例に係る通信制御システムによるユーザデータの送信について説明する。図10は、実施例1に係る通信制御システムによるユーザデータの送信のフローチャートである。
アプリケーション実行部121は、レガシーなWAN回線を用いて通信を行うアプリケーションを実行し、レガシーなWAN回線を介してコンピュータ3に送信するユーザデータを生成する(ステップS1)。
WANドライバ122は、レガシーなWAN回線を介してコンピュータ3に送信するユーザデータをアプリケーション実行部121から受信する。そして、WANドライバ122は、ユーザデータにコンピュータ1のネットワーク共通制御部128とコンピュータ3との間の通信において利用する制御情報であるWANプロトコルヘッダを付加する。さらに、WANドライバ122は、WANプロトコルヘッダが付加されたユーザデータに回線カード23へアクセスするためのインタフェースの情報である回線カードアクセスIFを付加する(ステップS2)。
WANonTCP/IPドライバ123は、WANプロトコルヘッダ及び回線カードアクセスIFが付加されたユーザデータをWANドライバ122から受信する。そして、WANonTCP/IPドライバ123は、ユーザデータにWANonTCP/IPドライバ123と回線GW制御部21との間で規定したプロトコルの情報である回線仮想化IFを付加する(ステップS3)。また、WANonTCP/IPドライバ123は、回線収容装置2のIPアドレス及びポート番号をソケット通信を用いてTCP/IPドライバ124へ通知する(ステップS4)。
TCP/IPドライバ124は、回線仮想化IFが付加されたユーザデータをWANonTCP/IPドライバ123から受信する。そして、TCP/IPドライバ124は、ソケット通信により受信した回線収容装置2のIPアドレス及びポート番号を用いて、ユーザデータにTCP/IPヘッダを付加する(ステップS5)。
LANドライバ112は、TCP/IPドライバ124によりTCP/IPヘッダが付加されたユーザデータをLANマルチプロトコル制御部125、PVドライバ126、内部通信制御ドライバ127及びPVドライバ111を介して受信する。そして、LANドライバ112は、TCP/IPヘッダに含まれる情報を用いて、TCP/IPで通信網4を介して回線収容装置2に向けてユーザデータを送信する(ステップS6)。
回線GW制御部21は、TCP/IPで通信網4を介して送信されてきたユーザデータを受信する。そして、回線GW制御部21は、ユーザデータに付加された回線仮想化IFからサービスの起動の情報や回線カードの情報を取得する(ステップS7)。回線GW制御部21は、レガシーなWAN回線を使用するサービスが起動していることを確認した後、回線カードの情報と共にユーザデータを回線カードドライバ22へ送信する。
回線カードドライバ22は、ユーザデータを回線GW制御部21から受信する。そして、回線カードドライバ22は、ユーザデータに付加された回線カードアクセスIFの情報に従い回線カード23にアクセスし動作を制御する(ステップS8)。
そして、回線カードドライバ22は、回線カード23を制御し、WANプロトコルヘッダに含まれる情報を用いてユーザデータをレガシーなWAN回線である通信網5経由でコンピュータ3へ送信する(ステップS9)。
次に、図11を参照して、ゲストドメイン12における運用前の準備から運用までの流れを説明する。図11は、ゲストドメインにおける運用前の準備から運用までのフローチャートである。
操作者は、ゲストドメイン12の環境設定を行う(ステップS101)。例えば、環境設定には、仮想デバイスの定義やネットワーク記述の定義などが含まれる。仮想デバイスの定義とは、例えば、通信に使用する回線カード23の情報、通信に使用する回線カード23が挿入されているスロットの情報及び回線収容装置2のIPアドレスやポート番号などである。また、ネットワーク記述とは、通信に使用する回線カード23の名前や回線カード23に対応する回線アドレスなどの情報である。また、環境設定として、ネットワークを使用するための通信網4や通信網5に対応するLANやWANに関する通信パラメタの設定が含まれる。通信パラメタとしては、具体的には、コンピュータ1の情報や、コンピュータ3の情報及び通信時に使用するタイマ値などが含まれる。
次に、操作者は、ゲストドメイン12のシステムを起動させる(ステップS102)。その後、ゲストドメイン12は、管理ドメイン11との間の仮想のネットワーク及びコンピュータ1と回線収容装置2とを接続するネットワークを起動する(ステップS103)。このとき、ゲストドメイン12は、環境設定に含まれるLANやWANに関する通信パラメタの設定を指定して起動する。
そして、ゲストドメイン12は、システムの運用を行う(ステップS104)。システムの運用とは、例えば、回線収容装置2を介したコンピュータ3とのデータの送受信を含むアプリケーションの実行などである。
そして、運用変更が必要になった場合、ゲストドメイン12は、管理ドメイン11との間の仮想のネットワーク及びコンピュータ1と回線収容装置2とを接続するネットワークを停止する(ステップS105)。
次に、操作者は、運用変更の内容に合わせて、仮想デバイスの定義やネットワーク記述を変更し環境設定を再度行う(ステップS106)。
次に、操作者は、ゲストドメイン12のシステムを起動させる(ステップS107)。その後、ゲストドメイン12は、管理ドメイン11との間の仮想のネットワーク及びコンピュータ1と回線収容装置2とを接続するネットワークを起動する(ステップS108)。その後、ゲストドメイン12は、システムの運用を再開する(ステップS109)。
次に、図12を参照して、回線収容装置2における運用前の準備から運用までの流れを説明する。図12は、回線収容装置における運用前の準備から運用までのフローチャートである。
操作者は、回線収容装置2の環境定義ファイルを作成して環境設定を行う(ステップS201)。この環境設定には、例えば、回線収容装置2において通信に用いるポート番号やログのサイズなどといった回線収容装置2全体の設定が含まれる。また、環境設定には、それぞれの回線カード23が搭載されているスロット番号などの個々の回線カード共通の設定が含まれ、さらに各回線カードに対応する回線アドレスなどの仮想システムとしての情報が含まれる。回線収容装置2では、仮想システムとしての情報がない場合、個々の回線カード共通の情報が有効になり、さらに、個々の回線カード共通の情報がない場合、回線収容装置2全体の設定が有効になる。
次に、操作者は、回線収容装置2を起動する(ステップS202)。
その後、回線収容装置2は、システムの運用を行う(ステップS203)。ここでのシステムの運用とは、例えば、コンピュータ1とコンピュータ3との間のデータの送受信の中継などである。このとき、回線GW制御部21の状態出力が操作者により指示された場合、回線収容装置2は、回線GW制御部21のログを作成し出力する(ステップS204)。
そして、運用変更が必要になった場合、回線収容装置2は、回線GW制御部21の動作を停止する(ステップS205)。
次に、操作者は、回線カード23の変更などの環境変更を行い(ステップS206)。このとき、回線収容装置2は、OSの再起動を行う場合もある。
次に、操作者は、環境定義ファイルの修正を行い、環境設定を再度行う(ステップS207)。
次に、回線カード23の構成を変更した場合、回線収容装置2は、回線カード構成情報を初期化する(ステップS208)。
次に、回線収容装置2は、回線GW制御部21の起動又はOSの再起動を行う(ステップS209)。このとき、回線GW制御部21の状態出力が操作者により指示された場合、回線収容装置2は、回線GW制御部21のログを作成し出力する(ステップS210)。その後、回線収容装置2は、システムの運用を再開する(ステップS211)。
次に、図13を参照して、ゲストドメイン12と回線収容装置2との接続について説明する。図13は、ゲストドメインと回線収容装置との接続のシーケンス図である。
ネットワーク共通制御部128は、ネットワークの起動要求をTCP/IPドライバ124に送信する(ステップS301)。
TCP/IPドライバ124は、ネットワーク起動を実行する旨をWANドライバ122に通知する(ステップS302)。
WANドライバ122は、ネットワーク起動を実行する旨をWANonTCP/IPドライバ123へ通知する(ステップS303)。
WANonTCP/IPドライバ123は、ソケット生成要求をTCP/IPドライバ124へ送信する(ステップS304)。
TCP/IPドライバ124は、ソケットを生成する(ステップS305)。そして、TCP/IPドライバ124は、ソケット生成完了の応答をWANonTCP/IPドライバ123へ送信する(ステップS306)。
WANonTCP/IPドライバ123は、接続要求をTCP/IPドライバ124へ送信する(ステップS307)。
TCP/IPドライバ124は、WANonTCP/IPドライバ123との間にソケット通信の接続を確立する(ステップS308)。そして、TCP/IPドライバ124は、ソケット通信の確立完了をWANonTCP/IPドライバ123へ応答する(ステップS309)。
WANonTCP/IPドライバ123は、該当SID(Socket IDentifier)のイベント通知要求を発行済みであるか否かを判定する(ステップS310)。SIDは、ソケット通信におけるソケット識別子である。発行済みである場合(ステップS310:肯定)、WANonTCP/IPドライバ123は、ステップS317へ進む。
一方、発行済みでない場合(ステップS310:否定)、WANonTCP/IPドライバ123は、エラー通知用のイベント通知要求をTCP/IPドライバ124へ送信する(ステップS311)。TCP/IPドライバ124は、エラー用のイベント通知要求を受信する。そして、エラーが発生した場合、TCP/IPドライバ124は、エラーイベントの情報を生成する(ステップS312)。そして、TCP/IPドライバ124は、WANonTCP/IPドライバ123への応答としてエラーイベントの情報をWANonTCP/IPドライバ123に通知する(ステップS313)。
また、WANonTCP/IPドライバ123は、正常受信データ通知用のイベント通知要求をTCP/IPドライバ124へ送信する(ステップS314)。TCP/IPドライバ124は、正常受信データ通知用のイベント通知要求を受信する。そして、正常にデータを受信した場合、TCP/IPドライバ124は、正常のイベントの情報を生成する(ステップS315)。そして、TCP/IPドライバ124は、WANonTCP/IPドライバ123への応答として正常のイベントの情報をWANonTCP/IPドライバ123に通知する(ステップS316)。
次に、WANonTCP/IPドライバ123は、開始要求をTCP/IPドライバ124へ送信する(ステップS317)。これを受けて、TCP/IPドライバ124は、回線GW制御部21へ回線要求通知を送信する(ステップS318)。TCP/IPドライバ124は、回線GW制御部21への回線要求通知の送信完了をWANonTCP/IPドライバ123へ応答する(ステップS319)。これを受けて、WANonTCP/IPドライバ123は、回線GW制御部21への回線要求通知の送信完了をWANドライバ122へ応答する(ステップS320)。
次に、WANドライバ122は、回線収容装置2との接続を確立する活性化要求であるACTLINK要求をWANonTCP/IPドライバ123へ送信する(ステップS321)。
WANonTCP/IPドライバ123は、ACTLINK要求を受信したか否かを判定する(ステップS322)。ここで、本実施例では、回線の活性化のことを「ACTLINK」と呼ぶ。ACTLINK要求を受信しなければ(ステップS322:否定)、WANonTCP/IPドライバ123は、接続処理を終了する。
これに対して、ACTLINK要求を受信した場合(ステップS322:肯定)、WANonTCP/IPドライバ123は、回線収容装置2との接続の確立を指示する通知であるACTLINK通知をTCP/IPドライバ124へ送信する(ステップS323)。これを受けて、TCP/IPドライバ124は、ACTLINK通知を回線GW制御部21へ送信する(ステップS324)。その後、TCP/IPドライバ124は、回線GW制御部21へのACTLINK通知の送信完了をWANonTCP/IPドライバ123へ応答する(ステップS325)。
回線GW制御部21は、ACTLINK通知を受信し、コンピュータ1とコンピュータ3との間で回線が確立したことをTCP/IPドライバ124へ応答する(ステップS326)。この後、TCP/IPドライバ124にイベントが通知される。そして、TCP/IPドライバ124は、コンピュータ1とコンピュータ3との間で回線が確立したことをWANonTCP/IPドライバ123へ応答する(ステップS327)。ステップS325からステップS327の間、WANonTCP/IPドライバ123は待機している。
TCP/IPドライバ124からの応答を受けて、WANonTCP/IPドライバ123は、正常受信データ通知用のイベント通知要求をTCP/IPドライバ124へ送信する(ステップS328)。これを受けて、正常にデータを受信した場合、TCP/IPドライバ124は、正常のイベントの情報を生成する(ステップS329)。そして、TCP/IPドライバ124は、正常のイベントの情報の生成完了をWANonTCP/IPドライバ123に応答する(ステップS330)。
WANonTCP/IPドライバ123は、WANドライバ122への応答として正常のイベントの情報をWANドライバ122に通知する(ステップS331)。
次に、図14を参照して、ゲストドメイン12と回線収容装置2との切断について説明する。図14は、ゲストドメインと回線収容装置との切断のシーケンス図である。
切断前には、WANonTCP/IPドライバ123は、TCP/IPドライバ124に対して、エラー通知用のイベント通知要求の送信(ステップS401)及び正常受信データ通知用のイベント通知要求の送信(ステップS402)を行っている。ソケット通信の確立後、WANonTCP/IPドライバ123は、エラー用及び正常受信データ通知用のイベント通知要求をSID単位で常に発行する。
切断処理を開始すると、ネットワーク共通制御部128は、ネットワークの停止をTCP/IPドライバ124へ通知する(ステップS403)。
TCP/IPドライバ124は、ネットワークの停止の通知をWANドライバ122へ送信する(ステップS404)。
WANドライバ122は、ネットワークの停止の通知をWANonTCP/IPドライバ123へ送信する(ステップS405)。これを受けて、WANonTCP/IPドライバ123は、切断開始をWANドライバ122へ応答する(ステップS406)。
WANonTCP/IPドライバ123は、接続のリトライ処理を中止する(ステップS407)。
そして、WANonTCP/IPドライバ123は、切断要求をTCP/IPドライバ124に送信する(ステップS408)。
TCP/IPドライバ124は、WANonTCP/IPドライバ123とのソケット通信を切断する(ステップS409)。そして、TCP/IPドライバ124は、ソケット通信の切断をWANonTCP/IPドライバ123へ応答する(ステップS410)。
WANonTCP/IPドライバ123は、コマンドのキャンセル要求をTCP/IPドライバ124へ送信する(ステップS411)。このコマンドは、例えばリードやライトのコマンドなどである。これを受けて、TCP/IPドライバ124は、回線GW制御部21へのコマンドを取り下げる(ステップS412)。そして、TCP/IPドライバ124は、コマンドの取り下げの通知をWANonTCP/IPドライバ123へ応答する(ステップS413)。
回線GW制御部21は、キープアライブ機能を用いて接続を確認し、接続されているがコマンドが来ない場合にコンピュータ1とコンピュータ3とのソケット通信を切断する(ステップS414)。
以上に説明したように、本実施例に係る通信制御システムでは、アプリケーションにおいてTCP/IP以外のプロトコルでの通信が要求された場合に、TCP/IPを用いて回線収容装置にユーザデータを送る。そして、回線収容装置は、搭載された回線カードを用いて、ユーザデータをTCP/IP以外のプロトコルで相手コンピュータに送信する。これにより、アプリケーションを実行するコンピュータには回線カードを搭載する必要がなくなる。そのため、レガシーなWAN通信を行うアプリケーションを実行するコンピュータを仮想化システムの中に容易に組み込むことができる。これにより、レガシーなWAN通信を行うシステムと仮想化システムとを容易に連携させることができる。
また、仮想化システム側のコンピュータにはレガシーなWAN回線を用いた通信特有なネットワークカードである回線カードを搭載しないため、仮想化マシンのマイグレーション機能を利用することが可能となる。
また、回線収容装置に回線カードを集約して搭載するため、1つの回線カードが複数の回線を有する場合に、1つの回線カードを用いて複数のコンピュータが同時に通信を行うことができる。これに対して、コンピュータに回線カードを搭載した場合には、他のコンピュータからは回線カードを使用することができないため、回線カードの回線が無駄になる場合がある。