(57)【要約】【課題】セッション情報の移行が可能な通信プロトコル処理装置を提供する。【解決手段】通信プロトコル処理装置は、送受信したパケットに従って、パケットの送受信プロトコルを管理するための通信情報を書き換えながらプロトコル処理を行う手段と、通信情報を出力する手段と、通信情報を入力する手段とを備え、外部からの通信情報の移行の指示に応答して、他の通信プロトコル処理装置に通信情報を出力する手段を用いて移行する。通信プロトコル処理装置を有するサーバ装置は、プロトコル処理装置を制御するドライバを含み、ドライバを介して通信プロトコル処理装置を使用する仮想マシンの他のサーバへの移行を制御し、通信情報の他の通信プロトコル処理装置への移行を指示するハイパバイザを有する。【選択図】図１
2011018106.tif 000002
【特許請求の範囲】
【請求項１】
送受信したパケットに従って、前記パケットの送受信プロトコルを管理するための通信情報を書き換えながらプロトコル処理を行う手段と、
前記通信情報を出力する手段と、前記通信情報を入力する手段とを備え、
外部からの前記通信情報の移行の指示に応答して、他の通信プロトコル処理装置に前記通信情報を前記出力する手段を用いて移行することを特徴とする通信プロトコル処理装置。
【請求項２】
請求項１に記載の通信プロトコル処理装置であって、移行された前記通信情報の一部を書き換えることを特徴とする通信プロトコル処理装置。
【請求項３】
請求項１に記載の通信プロトコル処理装置であって、前記他の通信プロトコル処理装置からの認証情報を使って、前記他の通信プロトコル処理装置を認証することを特徴とする通信プロトコル処理装置。
【請求項４】
請求項１に記載の通信プロトコル処理装置であって、さらに、故障検知手段と、前記故障検知手段による故障検知箇所に応じて、前記他の通信プロトコル処理装置への前記出力する手段による前記通信情報の移行経路を選択する手段を備えることを特徴とする通信プロトコル処理装置。
【請求項５】
通信情報を出力する手段を有する通信プロトコル処理装置における処理方法であって、前記通信プロトコル処理装置は、送受信したパケットに従って、前記パケットの送受信プロトコルを管理するための通信情報を書き換えながらプロトコル処理し、
外部からの前記通信情報の移行の指示に応答して、他の通信プロトコル処理装置に前記通信情報を前記出力する手段を用いて移行することを特徴とする処理方法。
【請求項６】
請求項５に記載の処理方法であって、移行された前記通信情報の一部を書き換えることを特徴とする処理方法。
【請求項７】
請求項５に記載の処理方法であって、前記他の通信プロトコル処理装置からの認証情報を使って、前記他の通信プロトコル処理装置を認証することを特徴とする処理方法。
【請求項８】
請求項５に記載の処理方法であって、さらに、故障検知箇所に応じて、前記他の通信プロトコル処理装置への前記出力する手段による前記通信情報の移行経路を選択することを特徴とする処理方法。
【請求項９】
送受信したパケットに従って、前記パケットの送受信プロトコルを管理するための通信情報を書き換えながらプロトコル処理を行う手段と前記通信情報の第１の移行の指示に応答して前記通信情報を出力する手段とを含む通信プロトコル処理装置、および、
前記プロトコル処理装置を制御するドライバを含み、前記ドライバを介して前記通信プロトコル処理装置を使用する仮想マシンの他のサーバへの第２の移行を制御し、前記通信情報の他の通信プロトコル処理装置への前記第１の移行を指示するハイパバイザを有することを特徴とするサーバ装置。
【請求項１０】
請求項９に記載のサーバ装置であって、前記第１の移行により移行された前記通信情報の一部を書き換えることを特徴とするサーバ装置。
【請求項１１】
請求項９に記載のサーバ装置であって、前記他の通信プロトコル処理装置からの認証情報を使って、前記他の通信プロトコル処理装置を認証することを特徴とするサーバ装置。
【請求項１２】
請求項９に記載のサーバ装置であって、さらに、故障検知手段と、前記故障検知手段による故障検知箇所に応じて、前記他の通信プロトコル処理装置への前記出力する手段による前記通信情報の移行経路を選択する手段を備えることを特徴とするサーバ装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は通信プロトコル処理装置にかかわり、特にその通信情報の移行の技術に関する。
【背景技術】
【０００２】
近年、インターネットのトラフィックは、ネットワーク依存のアプリケーションの増加や光ファイバー網等のブロードバンドネットワークの整備にともなって、増加の一途をたどっている。また、ＰＣやサーバ等の通信端末においても、通信速度が従来の１００Mbpsから10倍の帯域をもつ１０００Mbpsのネットワークカードを備えるものが標準的になりつつあり、今後もさらに広帯域化が進む見込みである。このようにネットワークの広帯域化が進むに従って、通信端末における通信プロトコル処理負荷が高まっていく。特に現在インターネット標準であるTCP(Transmission Control Protocol)のような高信頼な通信プロトコル処理は、処理負荷が重く、ホスト計算機のプロセッサでソフトウェア処理することは、その他のアプリケーション処理を圧迫してしまう。また、プロセッサの処理負荷だけではなく、プロセッサとNIC(Network Interface Card)およびメモリの間のバスを何度も通信データがやり取りされることにより、大きな遅延が発生してしまう。
【０００３】
このような問題を解決するために通信プロトコルを専用の通信制御プロセッサによって処理するものがある（特許文献１）。これは、それぞれ固有のプロトコル処理を行う複数の通信制御部と、パケットデータのフィールドを判別してパケットデータを、対応する通信制御部に渡すプロトコル判別部から成り、複数の通信プロトコルで通信を行うことができるようにした通信制御プロセッサである。
【０００４】
近年企業情報システムの分野では、サーバ（ホスト計算機）の仮想化技術が普及しつつある。サーバの仮想化により物理的な一台のサーバを、ソフトウェアの操作によって容易に複数台のサーバであるかのように利用することが可能となり、情報システムの俊敏性や柔軟性が飛躍的に高まる。サーバの仮想化を実現するソフトウェアは一般的にハイパーバイザとも呼ばれ、代表的な製品としてはVirtualServer(登録商標)やVMware（登録商標）などがある。仮想化製品の中には、ある物理サーバ上で稼働中の仮想マシン（ハイパーバイザ上で動作する、仮想化した仮想サーバを仮想マシンと呼ぶ。）を他の物理サーバへ動的に移動させる機能（マイグレーションあるいはホットマイグレーション）を持つものもある。これにより、動作している仮想マシンを移動先の物理サーバ上で継続して実行させ、物理サーバのメンテナンスや負荷分散を実施することが可能となる。
【０００５】
ネットワーク依存のアプリケーションが増加するに従って、24時間稼動するミッションクリティカルなアプリケーションの重要性が増している。このようなアプリケーションを稼動させるサーバシステムは、例えば冗長性をもって複数台のサーバで構成されて耐故障性を向上させている。一方で、サーバの冗長化が実現されていたとしても、ネットワークのフォールトトレランスが実現されていない場合、ネットワークセッションのタイムアウト待ちや再確立のオーバーヘッドが顕在化してしまう。このような問題を解決するために、ネットワーク接続のリモートエンドに対してネットワーク透過性を保持して、ソフトウェアによってフェイルオーバーする方法がある（特許文献２）。
【先行技術文献】
【特許文献】
【０００６】
【特許文献１】特開平５−２９２１４７
【特許文献２】特開２００２−３１９９６３
【発明の概要】
【発明が解決しようとする課題】
【０００７】
特にTCPといった通信プロトコル処理をハードウェアで処理するものは、一般的にTOE（TCP Offload Engine）と呼ばれる。TOEを利用することによりホスト計算機のプロセッサの処理負荷をかけずに、通信トラフィックを高速に処理することができる。また、情報システムの俊敏性や柔軟性向上のために、今後もますます仮想化技術が普及するものと考えられる。
【０００８】
一方で、これらのTOEとサーバの仮想化技術を併用する際には課題がある。TOEはTCPセッション情報をハードウェアとしてのTOE内部に持ってプロトコル処理を行うために、マイグレーション時にサーバのメモリ上の仮想マシンを移行するだけでは、TCPセッションの継続性を保つことができない。ミッションクリティカルなアプリケーションでは、TCPセッションのタイムアウトや再確立のオーバーヘッドは看過できない。
【０００９】
また、TOEの効果的なフォールトトレランスの実現のためには、TCPセッション情報の移行が必要である。TCPセション情報を移行せずに、通信プロトコル処理を他のTOEへ移行すると、TCPセッションのタイムアウトやセッションを再確立するためのオーバーヘッドがかかってしまうという課題がある。
【課題を解決するための手段】
【００１０】
本発明は、以上のような課題を鑑みてなされたものであり、ＴＯＥはセッション情報の入出力手段によりセッション情報を移行する。さらにＴＯＥはセッション情報の一部を書き換える手段と、さらに他のＴＯＥを認証する手段を有する。
【００１１】
具体的な態様は、送受信したパケットに従って、パケットの送受信プロトコルを管理するための通信情報を書き換えながらプロトコル処理を行う手段と、通信情報を出力する手段と、通信情報を入力する手段とを備え、外部からの通信情報の移行の指示に応答して、他の通信プロトコル処理装置に通信情報を出力する手段を用いて移行する。
【００１２】
具体的な他の態様は、送受信したパケットに従って、パケットの送受信プロトコルを管理するための通信情報を書き換えながらプロトコル処理を行う手段と通信情報の第１の移行の指示に応答して通信情報を出力する手段とを含む通信プロトコル処理装置、および、
プロトコル処理装置を制御するドライバを含み、ドライバを介して通信プロトコル処理装置を使用する仮想マシンの他のサーバへの第２の移行を制御し、通信情報の他の通信プロトコル処理装置への第１の移行を指示するハイパバイザを有するサーバ装置である。
【発明の効果】
【００１３】
ＴＯＥ間のセッション情報の入出力による移行手段を提供することにより、仮想マシンのマイグレーションやＴＯＥのフォールトトレランスにおいてセッション情報等の移行が可能となり、ネットワーク透過性を実現可能となる。
【図面の簡単な説明】
【００１４】
【図１】実施例１におけるシステム構成図である。
【図２】実施例１におけるセッション情報の一例である。
【図３】実施例１におけるルーティングテーブルの一例である。
【図４】実施例１におけるセッション情報を移行する際の処理フローである。
【図５】実施例２におけるシステム構成図である。
【図６】実施例２におけるドライバを介してセッション情報を移行する際の処理フローである。
【図７】実施例２におけるＴＯＥの間でセッション情報を移行する際の処理フローである。
【発明を実施するための形態】
【００１５】
以下、図面を用いて本発明の実施形態を説明する。
【実施例１】
【００１６】
図１は実施例１におけるシステム構成図である。サーバＡ１０００は、ブリッジ１０３０を介して相互に接続されるＣＰＵ１０１０とグラフィックカード１０２０とメモリ１０４０とＴＯＥ（プロトコル処理装置）＿Ａ１０５０とＮＩＣ（Ｎｅｔｗｏｒｋ  Ｉｎｔｅｒｆａｃｅ  Ｃａｒｄ）１１９０から構成される。ＣＰＵ１０１０とブリッジ１０３０はシステムバスで接続され、ＴＯＥ＿Ａ１０５０やＮＩＣ１１９０とブリッジ１０３０はＰＣＩ  Ｅｘｐｒｅｓｓ等のバスで接続される。
【００１７】
メモリ１０４０には、ＴＯＥ＿Ａ１０５０を制御するドライバを含むＯＳ（Ｏｐｅｒａｔｉｎｇ  Ｓｙｓｔｅｍ）やハイパーバイザが格納され、ＯＳやハイパーバイザはＣＰＵ１０１０で実行される。
【００１８】
また、図示していないが、サーバＡ１０００とサーバＢ１２００は、仮想マシンイメージ（サーバＡ１０００やサーバＢ１２００上にローディングすることにより、初期設定などの初期化処理なしで、直ちに実行可能な仮想マシンの実行モジュール）などを格納する共有ストレージとそれぞれ接続されている。共有ストレージには、例えばＳＡＮ（Ｓｔｏｒａｇｅ  Ａｒｅａ  Ｎｅｔｗｏｒｋ）、ｉＳＣＳＩ（Internet Small Computer System Interface）、ＮＦＳ（Ｎｅｔｗｏｒｋ  Ｆｉｌe System）などでアクセスされる。
【００１９】
ＴＯＥ＿Ａ１０５０は、通信制御部１０６０とＤＭＡＣ（Ｄｉｒｅｃｔ  Ｍｅｍｏｒｙ  Ａｃｃｅｓｓ  Ｃｏｎｔｒｏｌｌｅｒ）１１３０と送受信バッファ１１４０と受信パケット解析部１１５０と送信パケット生成部１１６０とＭＡＣ（Ｍｅｄｉａ  Ａｃｃｅｓｓ  Ｃｏｎｔｒｏｌ）１１７０とＰＨＹ（Ｐｈｙｓｉｃａｌ  Ｌａｙｅｒ）１１８０から構成される。通信制御部１０６０は、ＤＭＡＣ１１３０と送受信バッファ１１４０と受信パケット解析部１１５０と送信パケット生成部１１６０の各モジュールと接続され、前記各モジュールの全体を制御するモジュールである。
【００２０】
通信制御部１０６０は、プロトコル処理部１０７０とセッション情報管理部１０８０とセッション情報（通信情報）１０９０と認証情報１１００から構成される。通信制御部１０６０は、図示していないマイクロプログラムメモリおよびインストラクションレジスタ、プログラムカウンタ、マイクロ命令デコーダ、ワーキングレジスタ群、タイマなどから構成される制御部であり、プロトコル処理部１０７０とセッション情報管理部１０８０は、マイクロプログラムとして格納されて実行されるものである。マイクロプログラムやセッション情報１０９０および認証情報１１００は、通信制御部１０６０の内部のメモリに格納されていてもよいし、外部のメモリに格納されていてもよいし、耐タンパ性のあるメモリに格納されていてもよい。認証情報１１００は、例えばデジタル証明書や秘密鍵情報などである。セッション情報管理部１０８０は、セッション情報１０９０の転送や格納、更新などの管理を行う。
【００２１】
受信パケット解析部１１５０は、受信パケットのヘッダなどの解析を行うモジュールであり、解析結果を通信制御部１０６０に伝達する。送信パケット生成部１１６０は、通信制御部１０６０からの指示に従って送信パケットのヘッダなどの生成を行うモジュールである。送受信バッファ１１４０は、受信パケットを一時的に格納したり、送信データを一時的に格納するためのバッファである。また、ＭＡＣ１１７０およびＰＨＹ１１８０は複数備えていてもよく、その場合ＴＯＥ＿Ａ１０５０は複数のインターフェースを持つことになる。
【００２２】
サーバＢ１２００は、ブリッジ１２３０を介して相互に接続されるＣＰＵ１２１０とグラフィックカード１２２０とメモリ１２４０とＴＯＥ＿Ｂ１２５０とＮＩＣ１３８０から構成される。ＣＰＵ１２１０とブリッジ１２３０はシステムバスで接続され、ＴＯＥ＿Ｂ１２５０やＮＩＣ１３８０とブリッジ１２３０はＰＣＩ  Ｅｘｐｒｅｓｓ等のバスで接続される。
【００２３】
メモリ１２４０には、ＴＯＥ＿Ｂ１２５０のドライバを含むＯＳやハイパーバイザが格納され、ＯＳやハイパーバイザはＣＰＵ１２１０で実行される。
【００２４】
ＴＯＥ＿Ｂ１２５０は、通信制御部１２６０とＤＭＡＣ１３１０と送受信バッファ１３２０と受信パケット解析部１３４０と送信パケット生成部１３５０とＭＡＣ１３６０とＰＨＹ１３７０から構成される。通信制御部１２６０は、ＤＭＡＣ１３１０と送受信バッファ１３２０と受信パケット解析部１３４０と送信パケット生成部１３５０の各モジュールと接続され、前記各モジュールの全体を制御するモジュールである。
【００２５】
通信制御部１２６０は、プロトコル処理部１２７０とセッション情報管理部１２８０とセッション情報１２９０と認証情報１３００から構成される。通信制御部１２６０は、図示していないマイクロプログラムメモリおよびインストラクションレジスタ、プログラムカウンタ、マイクロ命令デコーダ、ワーキングレジスタ群、タイマなどから構成される制御部であり、プロトコル処理部１２７０とセッション情報管理部１２８０は、マイクロプログラムとして格納されて実行されるものである。マイクロプログラムやセッション情報１２９０および認証情報１３００は、通信制御部１２６０の内部のメモリに格納されていてもよいし、外部のメモリに格納されていてもよいし、耐タンパ性のあるメモリに格納されていてもよい。認証情報１３００は、例えばデジタル証明書や秘密鍵情報などである。セッション情報管理部１２８０は、セッション情報１２９０の転送や格納、更新などの管理を行う。
【００２６】
受信パケット解析部１３４０は、受信パケットのヘッダなどの解析を行うモジュールであり、解析結果を通信制御部１２６０に伝達する。送信パケット生成部１３５０は、通信制御部１２６０からの指示に従って送信パケットのヘッダなどの生成を行うモジュールである。送受信バッファ１３２０は、受信パケットを一時的に格納したり、送信データを一時的に格納するためのバッファである。また、ＭＡＣ１３６０およびＰＨＹ１３７０は複数備えていてもよく、その場合ＴＯＥ＿Ｂ１２５０は複数のインターフェースを持つことになる。
【００２７】
サーバＡ１０００は、ＴＯＥ＿Ａ１０５０を介してＬＡＮスイッチ１４１０と接続され、ＮＩＣ１１９０を介してＬＡＮスイッチ１４００と接続されている。サーバＢ１２００は、ＴＯＥ＿Ｂ１２５０を介してＬＡＮスイッチ１４２０と接続され、ＮＩＣ１３８０を介してＬＡＮスイッチ１４００と接続されている。ＬＡＮスイッチ１４１０およびＬＡＮスイッチ１４２０は、ＬＡＮスイッチ１４３０と接続されている。ＬＡＮスイッチ１４３０は、図示していない他のＬＡＮスイッチやルータを含むネットワーク１４４０と接続されている。
【００２８】
サーバＡ１０００とサーバＢ１２００は、ブレードサーバの形態でもよく、ＰＣＩ  Ｅｘｐｒｅｓｓスイッチ等で相互に接続されていてもよい。
【００２９】
ＴＯＥ＿Ａ１０５０およびＴＯＥ＿Ｂ１２５０のパケット受信および送信の場合のプロトコル処理フローを説明する。以下では、ＴＯＥ＿Ａ１０５０の例で説明するが、ＴＯＥ＿Ｂ１２５０も同様の処理フローである。まず初めにパケット受信の場合を説明する。ＰＨＹ１１８０およびＭＡＣ１１７０を介して受信された受信パケットは、受信パケットの先頭から４バイトづつ送受信バッファ１１４０に格納され、並行して４バイトづつ受信パケット解析部１１５０でヘッダの解析が行われる。受信パケットの全体が受信完了すると、受信パケット解析部１１５０は、受信パケットの解析結果を通信制御部１０６０に伝達する。前記解析結果とは、例えばＭＡＣアドレス、ＩＰアドレス、ポート番号、シーケンス番号、ＡＣＫ番号、ＴＣＰやＵＤＰ、ＩＣＭＰ、ＡＲＰなどのプロトコル種別および、ＴＣＰオプション情報、ＩＰｖ４フラグメント情報、ＶＬＡＮ情報、チェックサムエラーを含む受信エラー情報などである。また、送受信バッファ１１４０は、受信パケットの全体が受信完了すると、通信制御部１０６０に受信パケットサイズや受信パケットを格納したバッファのメモリアドレス情報などを伝達する。
【００３０】
通信制御部１０６０のプロトコル処理部１０７０は、前記の解析結果や受信パケットサイズ、バッファのメモリアドレス情報から、例えば、受信パケットのペイロード部分をＤＭＡＣ１１３０を介してメモリ１０４０に転送するように送受信バッファ１１４０に指示したり、ウィンドウ制御、輻輳制御、ＴＣＰステート制御などのプロトコル処理を行い、セッション情報１０９０に対して参照および更新を行う。
【００３１】
次にパケット送信の場合を説明する。通信制御部１０６０のプロトコル処理部１０７０は、セッション情報１０９０を参照して送信データがあるセッション情報を検索する。送信データがあるセッション情報があった場合、プロトコル処理部１０７０は送受信バッファ１１４０に対して、ＤＭＡＣ１１３０を介してメモリ１０４０から当該送信データを転送するよう指示する。前記転送が完了した後に、プロトコル処理部１０７０は送信パケット生成部１１６０に対して、パケット生成情報を伝達して送信指示する。パケット生成情報とは例えばＭＡＣアドレス、ＩＰアドレス、ポート番号、シーケンス番号、ＡＣＫ番号、ＴＣＰやＵＤＰ、ＩＣＭＰ、ＡＲＰなどのプロトコル種別および、ＴＣＰオプション情報、ＩＰｖ４フラグメント情報、ＶＬＡＮ情報などである。
【００３２】
送信パケット生成部１１６０は、生成したヘッダ部分と送受信バッファ１１４０に格納されているペイロード部分を一つのパケットの形にしてＭＡＣ１１７０およびＰＨＹ１１８０を介して送信する。プロトコル処理部１０７０はセッション情報１０９０を参照および更新する。
【００３３】
図２にセッション情報１０９０の１エントリ２５００の一例を示す。セッション情報１０９０は、複数のエントリから構成され、それぞれのエントリはセッションの開始前にＴＯＥ＿Ａのドライバなどから初期設定される。
【００３４】
セッション有効フラグ２０００は、当該セッション情報エントリが有効か無効かを示すフラグである。セッション負荷情報２０１０は、当該セッションの負荷状況を表すパラメータであり、通信制御部１０６０が単位時間あたりの受信パケット数や送信パケット数などから算出するものである。ＴＣＰステート２０２０は、ＴＣＰの状態遷移情報を表すパラメータであり、例えばＲＦＣ７９３に示されているＬＩＳＴＥＮ，ＳＹＮ−ＳＥＮＴ，ＥＳＴＡＢＬＩＳＨＥＤなどの状態を表すパラメータである。ソースポート番号２０３０は、当該セッションのリクエスト受付ポート番号を示す。宛先ポート番号２０４０は、通信相手のポート番号である。ＩＰアドレス２０５０は、当該セッションのソースＩＰアドレスを示す。ＭＡＣアドレス２０７０は、当該セッションのソースＭＡＣアドレスを示す。シーケンス番号２０８０は、当該セッションのＴＣＰのシーケンス番号を示す。応答番号２０９０は、当該セッションのＴＣＰの応答番号を示す。ディスクリプタアドレス２１００は、ディスクリプタ方式による連続送受信に対応する際の次のディスクリプタのメモリ１０４０上のアドレスを示す。送信データホストアドレス２１１０は、送信データが格納されているメモリ１０４０上のアドレスを示す。送信データ長２１２０は、メモリ１０４０上に配置されている送信データの長さを示す。送信済みデータ長２１３０は、プロトコル処理部１０７０が送信完了したデータ長を記録しておくパラメータである。受信データ格納先アドレス２１４０は、受信データを格納するメモリ１０４０上のアドレスを示す。受信データ格納先サイズ２１５０は、メモリ１０４０上の受信データのために確保されているメモリ領域のサイズを示す。受信データ長２１６０は、メモリ１０４０上に格納した受信データ長を示す。セッションＩＤ２１７０は、当該セッションをドライバが一意に識別する情報である。
【００３５】
その他のセッション情報としては、図示していないが、ウィンドウサイズ、宛先ウィンドウサイズ、輻輳ウィンドウサイズ、スライディングウィンドウ左端、スライディングウィドウ右端、ラウンドトリップタイム、再送タイマ値、最後に送信した時刻、再送回数、最大セグメントサイズ、累積ＡＣＫタイマ値、累積ＡＣＫ回数、キープアライブタイマ値、パーシストタイマ値、２ＭＬＳタイマ値、パケットの順序入れ違い情報など、セッション管理に必要な情報を含む。また、図示していないが、宛先ＭＡＣアドレスはＡＲＰテーブルによって管理されており、対応するＩＰアドレスと関連付けてＡＲＰテーブルに格納されている。
【００３６】
また、セッション情報は上記に挙げたＴＣＰセッションに関するものに限らない。例えばトランスポート層よりも上位のＨＴＴＰをＴＯＥが管理する場合であれば、ＣｏｏｋｉｅやＵＲＬハッシュ、セッション変数、ＨＴＴＰ認証ヘッダ、ＳＳＬセッションＩＤなどもセッション情報に含むし、ｉＳＣＳＩプロトコルをＴＯＥが管理する場合であれば、ｉＳＣＳＩのセッション管理情報も含む。
【００３７】
図３に通信制御部１０６０がセッション情報２５００と共に管理するルーティングテーブル３５００の一例を示す。宛先３０００とサブネットマスク３０１０とゲートウェイ３０２０インターフェース３０３０とメトリック３０４０から構成される。宛先３０００のサブネットや当該サブネットに属するホスト向けのパケットはインターフェース３０３０からゲートウェイ３０２０へと転送されることを示している。ルーティングテーブル３５００は、ＴＯＥのドライバなどから初期設定される。また、ルーティングテーブル３５００は、ドライバが管理してもよい。
【００３８】
図４にサーバＡ１０００上で動作するハイパーバイザＡ４０００とサーバＢ１２００上で動作するハイパーバイザＢ４０１０間でセッション情報を移行する際の処理フローを示す。ハイパーバイザＡ４０００は、マイグレーション要求を管理ツールなどから受け取ると、仮想マシンのマイグレーションを開始する（４０２０）。マイグレーションは、まず初めにハイパーバイザＡ４０００が移行対象となる稼働中の仮想マシンがサーバＡ１０００上で正しく機能していることを確認する。次に、ハイパーバイザＡ４０００が移行対象となる仮想マシンの状態情報をＮＩＣ１１９０およびＬＡＮスイッチ１４００を介してサーバＢ１２００に送信する。ＮＩＣ１１９０とＬＡＮスイッチ１４００とＮＩＣ１３８０は、一般的にマイグレーション専用のギガビットネットワークとして構成されるが、これに限定されるものではなく、複数インターフェースを持つＴＯＥとＬＡＮスイッチ、あるいはＮＩＣ間でＬＡＮスイッチを介せず直接接続される構成でもよい。仮想マシンの状態情報とは、サーバＡ１０００のメモリ１０４０に展開されて稼働中の仮想マシンに関する全情報(スナップショット)である。マイグレーションを開始すると直ちに、ハイパーバイザＡ４０００は、ＴＯＥ＿Ａ１０５０に対して、セッション情報の読み出し指示を出す（４０３０）。仮想マシンのマイグレーションを開始すると直ちにセッション情報を読み出すのは、マイグレーションの開始時に仮想マシンのスナップショットをとるが、セッション情報の読み出し(セッション情報のスナップショット)との時間差を可能な限り少なくするためである。セッション情報の読み出し指示には、当該仮想マシンに関するセッションのセッションＩＤあるいは当該仮想マシンに関するセッション情報が格納されているアドレス情報を含む。次にＴＯＥ_A１０５０は、当該仮想マシンに関するセッション情報をハイパーバイザＡ４０００に送信する（４０５０）。次にハイパーバイザＡ４０００は、前記セッション情報をＮＩＣ１１９０を介してハイパーバイザＢ４０１０に送信する（４０７０）。ハイパーバイザＢ４０１０は、前記セッション情報を受信する（４０８０）。ハイパーバイザＢ４０１０は、受信した前記セッション情報をＴＯＥ＿Ｂ１２５０に対して書き込み指示とともに送信する（４０９０）。ＴＯＥ＿Ｂ１２５０は、前記セッション情報をセッション情報１２９０として格納する（４１００）。ハイパーバイザＢ４０１０は、セッション開始指示をＴＯＥ＿Ｂ１２５０に指示する（４１１０）。次にＴＯＥ＿Ｂ１２５０は、当該セッションの処理を開始する（４１２０）。次にＴＯＥ＿Ｂ１２５０は、接続するＬＡＮスイッチ１４２０に対してソースＭＡＣアドレスと宛先ＭＡＣアドレスが当該仮想マシンあるいは当該セッション情報のＭＡＣアドレスとなっているＲＡＲＰ（Ｒｅｖｅｒｓｅ  Ａｄｄｒｅｓｓ  Ｒｅｓｏｌｕｔｉｏｎ  Ｐｒｏｔｏｃｏｌ）パケットを送信して、ＬＡＮスイッチ１４２０のＭＡＣアドレステーブルを更新する（４１３０）。
【００３９】
また、ＴＯＥ＿Ａ１０５０がセッション情報を送信（４０５０）した後に、当該セッションに関するパケットを受信してセッション情報を更新する必要が出た場合には、セッション情報に関する差分情報をハイパーバイザＡ４０００が別途送信してもよいし、ＴＯＥ＿Ａ１０５０が受信パケットをそのままＴＯＥ＿Ｂ１２５０に転送してもよい。
【００４０】
また、マイグレーションの方式として、メモリ上の仮想マシンの大容量のスナップショットを移行する段階と、スナップショット送信後に更新された小容量の差分情報を移行する段階の2段階で実行される方式をとった場合には、セッション情報の移行も同様に2段階(セッション情報を送信する段階とセッション情報の差分を送信する段階)で行ってもよい。
【００４１】
また、マイグレーションに伴って、セッション情報の一部に変更の必要が生じた場合には、ＴＯＥ＿Ａ１０５０あるいはハイパーバイザＡ４０００あるいはハイパーバイザＢ１２００あるいはＴＯＥ＿Ｂ１２５０が変更する。例えば、セッション情報の最後に送信した時刻は、ＴＯＥ＿Ａ１０５０が内部に持つタイマ時刻を基準としたものからＴＯＥ＿Ｂ１２５０が内部に持つタイマ時刻を基準にしたものに補正する。これが、セッション情報の一部を書き換える例である。マイグレーションに伴ってＴＯＥ＿Ａ１０５０が内部に持つタイマ時刻とＴＯＥ＿Ｂ１２５０が内部に持つタイマ時刻の同期をとってもよい。
【００４２】
また、例えばＴＯＥ＿Ａ１０５０のインターフェースとＴＯＥ＿Ｂ１２５０のインターフェースの数が異なる場合、ルーティングテーブル３５００のインターフェース３０３０をハイパーバイザＢ１２００あるいはＴＯＥ＿Ｂ１２５０が変更する。
【００４３】
また、セッション情報の移行に、ハイパーバイザＡ４０００およびハイパーバイザＢ１２５０を仲介させずに、ＴＯＥ＿Ａ１０５０からＴＯＥ＿Ｂ１２５０に直接セッション情報を送信してもよい。直接セッション情報を送信する場合には、ハイパーバイザＡ４０００がマイグレーションの開始時にＴＯＥ＿Ａ１０５０に対して、移行先のＴＯＥ＿Ｂ１２５０のＩＰアドレス等の情報を渡す。
【実施例２】
【００４４】
図５は実施例２におけるシステム構成図である。サーバ６０００は、ブリッジ６０３０を介して相互に接続されるＣＰＵ６０１０とグラフィックカード６０２０とメモリ６０４０とＴＯＥ＿Ａ６０５０とＴＯＥ＿Ｂ６２５０から構成される。ＣＰＵ６０１０とブリッジ６０３０およびＴＯＥ＿Ａ６０５０やＴＯＥ＿Ｂ６２５０とブリッジ６０３０はバスで接続される。メモリ６０４０には、ＴＯＥ＿Ａ６０５０およびＴＯＥ＿Ｂ６２５０のドライバを含むＯＳが格納され、ＯＳはＣＰＵ６０１０で実行される。
【００４５】
ＴＯＥ＿Ａ６０５０は、通信制御部６０６０とＤＭＡＣ６１２０と送受信バッファ６１３０と受信パケット解析部６１４０と送信パケット生成部６１５０とＭＡＣ６１６０とＰＨＹ６１７０から構成される。通信制御部６０６０は、ＤＭＡＣ６１２０と送受信バッファ６１３０と受信パケット解析部６１４０と送信パケット生成部６１５０の各モジュールと接続され、前記各モジュールの全体を制御するモジュールである。通信制御部６０６０は、プロトコル処理部６０７０とセッション情報管理部６０８０と故障検知部６０９０とセッション情報６１００と認証情報６１１０から構成される。通信制御部６０６０は、図示していないマイクロプログラムメモリおよびインストラクションレジスタ、プログラムカウンタ、マイクロ命令デコーダ、ワーキングレジスタ群、タイマなどから構成される制御部であり、プロトコル処理部６０７０とセッション情報管理部６０８０と故障検知部６０９０は、マイクロプログラムとして格納されて実行されるものである。マイクロプログラムやセッション情報６１００および認証情報６１１０は、通信制御部６０６０の内部のメモリに格納されていてもよいし、外部のメモリに格納されていてもよいし、耐タンパ性のあるメモリに格納されていてもよい。認証情報６１１０は、例えばデジタル証明書や秘密鍵情報などである。セッション情報管理部６０８０は、セッション情報６１００の転送や格納、更新などの管理を行う。故障検知部６０９０は、サーバ６０００の通信に関わる故障を検知する機能を持ち、例えばＴＯＥ＿Ａ６０５０とバスの接続障害やＬＡＮスイッチのリンクダウン等の障害などを検知する。受信パケット解析部６１４０は、受信パケットのヘッダなどの解析を行うモジュールであり、解析結果を通信制御部６０６０に伝達する。送信パケット生成部６１５０は、通信制御部６０６０からの指示に従って送信パケットのヘッダなどの生成を行うモジュールである。送受信バッファ６１３０は、受信パケットを一時的に格納したり、送信データを一時的に格納するためのバッファである。また、ＭＡＣ６１６０およびＰＨＹ６１７０は複数備えていてもよく、その場合ＴＯＥ＿Ａ６０５０は複数のインターフェースを持つことになる。
【００４６】
ＴＯＥ＿Ｂ６２５０は、通信制御部６２６０とＤＭＡＣ６３２０と送受信バッファ６３３０と受信パケット解析部６３４０と送信パケット生成部６３５０とＭＡＣ６３６０とＰＨＹ６３７０から構成される。通信制御部６２６０は、ＤＭＡＣ６３２０と送受信バッファ６３３０と受信パケット解析部６３４０と送信パケット生成部６３５０の各モジュールと接続され、前記各モジュールの全体を制御するモジュールである。通信制御部６２６０は、プロトコル処理部６２７０とセッション情報管理部６２８０と故障検知部６２９０とセッション情報６３００と認証情報６３１０から構成される。通信制御部６２６０は、図示していないマイクロプログラムメモリおよびインストラクションレジスタ、プログラムカウンタ、マイクロ命令デコーダ、ワーキングレジスタ群、タイマなどから構成される制御部であり、プロトコル処理部６２７０とセッション情報管理部６２８０と故障検知部６２９０は、マイクロプログラムとして格納されて実行されるものである。マイクロプログラムやセッション情報６３００および認証情報６３１０は、通信制御部６２６０の内部のメモリに格納されていてもよいし、外部のメモリに格納されていてもよいし、耐タンパ性のあるメモリに格納されていてもよい。認証情報６３１０は、例えばデジタル証明書や秘密鍵情報などである。セッション情報管理部６２８０は、セッション情報６３００の転送や格納、更新などの管理を行う。故障検知部６２９０は、サーバ６０００の通信に関わる故障を検知する機能を持ち、例えばＴＯＥ＿Ｂ６２５０とバスの接続障害やＬＡＮスイッチのリンクダウン等の障害などを検知する。受信パケット解析部６３４０は、受信パケットのヘッダなどの解析を行うモジュールであり、解析結果を通信制御部６２６０に伝達する。送信パケット生成部６３５０は、通信制御部６２６０からの指示に従って送信パケットのヘッダなどの生成を行うモジュールである。送受信バッファ６３３０は、受信パケットを一時的に格納したり、送信データを一時的に格納するためのバッファである。また、ＭＡＣ６３６０およびＰＨＹ６３７０は複数備えていてもよく、その場合ＴＯＥ＿Ｂ６２５０は複数のインターフェースを持つことになる。また、ＴＯＥ＿Ａ６０５０とＴＯＥ＿Ｂ６２５０は、専用線６４４０で接続されていてもよい。
【００４７】
サーバ６０００は、ＴＯＥ＿Ａ６０５０を介してＬＡＮスイッチ６４００と接続され、ＴＯＥ＿Ｂ６２５０を介してＬＡＮスイッチ６４１０と接続されている。ＬＡＮスイッチ６４００およびＬＡＮスイッチ６４１０は、ＬＡＮスイッチ６４２０と接続されている。ＬＡＮスイッチ６４２０は、図示していない他のＬＡＮスイッチやルータを含むネットワーク６４３０と接続されている。
【００４８】
また、本システム構成はスイッチフォールトトレランス（スイッチ切替による通信の継続）を実現しており、ＴＯＥ＿Ａ６０５０がプライマリとして平常時は通信を行い、ＴＯＥ＿Ａ６０５０あるいはＬＡＮスイッチ６４００あるいは、ＬＡＮスイッチ６４００とＴＯＥ＿Ａ６０５０間のケーブルのいずれかが故障した場合にセカンダリのＴＯＥ＿Ｂ６２５０に通信を引き継ぐ。
【００４９】
また、ＴＯＥ＿Ａ６０５０とＴＯＥ＿Ｂ６２５０が同じＬＡＮスイッチに接続されて、アダプタフォールトトレランス（ＴＯＥやＮＩＣなどのアダプタの切替による通信の継続）を実現していてもよく、その場合はプライマリのＴＯＥ＿Ａ６０５０あるいはＴＯＥ＿Ａ６０５０とＬＡＮスイッチ間のケーブルのいずれかが故障した場合にセカンダリのＴＯＥ＿Ｂ６２５０に通信を引き継ぐ。
【００５０】
また、ＴＯＥ＿Ａ６０５０とＴＯＥ＿Ｂ６２５０が同じＬＡＮスイッチに接続されて、リンクアグリゲーションあるいはロードバランシングを実現していてもよく、その場合はＴＯＥ＿Ａ６０５０あるいはＴＯＥ＿Ａ６０５０とＬＡＮスイッチ間のケーブルのいずれかが故障した場合にＴＯＥ＿Ｂ６２５０単独で通信を行うし、ＴＯＥ＿Ｂ６２５０あるいはＴＯＥ＿Ｂ６２５０とＬＡＮスイッチ間のケーブルのいずれかが故障した場合にＴＯＥ＿Ａ６０５０単独で通信を行う。
【００５１】
図６にＬＡＮに関連する故障が発生した場合の処理フローを示す。ＴＯＥ＿Ａ６０５０は、送受信バッファ６１３０、受信パケット解析部６１４０、送信パケット生成部６１５０、ＭＡＣ６１６０、ＰＨＹ６１７０、ＴＯＥ＿Ａ６０５０とＬＡＮスイッチ６４００の間のケーブル、ＬＡＮスイッチ６４００のいずれか、あるいは2つ以上の故障を検知する（７０１０）。ＴＯＥ＿Ａ６０５０は、セッション情報の移行のための通信路をバス経由として選択する（７０２０）。ＴＯＥ＿Ａ６０５０は、故障検知割り込みをＣＰＵ６０１０で動作するドライバ７０００に上げる（７０３０）。ドライバ７０００は、セッション情報要求をＴＯＥ＿Ａ６０５０に出す（７０４０）。ＴＯＥ＿Ａ６０５０は、バスを介してドライバ７０００にセッション情報６１００を送信する（７０５０）。ドライバ７０００は、バスを介してＴＯＥ＿Ｂ６２５０にセッション情報を送信する（７０６０）。ＴＯＥ＿Ｂ６２５０は、当該セッションを再開する（７０７０）。ＴＯＥ＿Ｂ６２５０は、ＲＡＲＰをスイッチ６４１０に送信（７０８０）して、ＬＡＮスイッチ６４１０のＭＡＣアドレステーブルを更新する。
【００５２】
また、故障検知の方法として、故障検知部６０９０および故障検知部６２９０がお互いにプローブパケットをマルチキャストあるいはブロードキャストにより定期的に送信し合ってお互いの状態を監視し合うことで行ってもよく、ＴＯＥ＿Ａ６０５０の故障を検知したＴＯＥ＿Ｂ６２５０が故障検知割り込みを上げてもよい。
【００５３】
また、ドライバを介する経路に限らず、専用線６４４０やバスを介して、直接ＴＯＥ＿Ｂ６２５０にセッション情報を送信してもよい。
【００５４】
図７にバスに関連する故障が発生した場合の処理フローを示す。ＴＯＥ＿Ａ６０５０は、ＤＭＡＣ６１２０、ＤＭＡＣ６１２０とブリッジ６０３０の間のバスのいずれか、あるいは2つ以上の故障を検知する（８０００）。ＴＯＥ＿Ａ６０５０は、セッション情報の移行のための通信路をＬＡＮ経由として選択する（８０１０）。ＴＯＥ＿Ａ６０５０は、ＴＯＥ探索のためのブロードキャストパケットをＬＡＮスイッチ６４００に送信する（８０２０）。ブロードキャストパケットには、ＴＯＥ＿Ａ６０５０のＭＡＣアドレスや故障状況情報等が含まれる。送信されたブロードキャストパケットは、ＬＡＮスイッチ６４２０およびＬＡＮスイッチ６４１０を介してＴＯＥ＿Ｂ６２５０に到達する。ＴＯＥ＿Ｂ６２５０は、ＴＯＥ＿Ａ６０５０に応答パケットを送信する（８０３０）。前記応答には、ＴＯＥ＿Ｂ６２５０を一意に識別する情報やＭＡＣアドレスや生成した乱数を含む。ＴＯＥ＿Ａ６０５０は、認証情報６１１０をＴＯＥ＿Ｂ６２５０に送信する（８０４０）。認証情報６１１０は、デジタル証明書、秘密鍵で前記応答に含まれる乱数を署名した値などを含む。ＴＯＥ＿Ｂ６２５０は、受信した認証情報を用いて認証処理を行う（８０５０）。認証処理は、前記署名した値を公開鍵で検証することを含む。ＴＯＥ＿Ｂ６２５０は、認証情報６３１０をＴＯＥ＿Ａ６０５０に送信する（８０６０）。ＴＯＥ＿Ａ６０５０は、受信した認証情報を用いて認証処理を行う（８０７０）。ＴＯＥ＿Ａ６０５０は、状態情報要求をＴＯＥ_Bに送信する（８０８０）。ＴＯＥ＿Ｂ６２５０は、状態情報をＴＯＥ＿Ａ６０５０に送信する（８０９０）。状態情報には、セッション情報を引き受け可能かを表す情報や、負荷情報を含む。ＴＯＥ＿Ａ６０５０は、認証が通り、セッション情報を引き受け可能なすべてのＴＯＥの中から、より負荷の低いＴＯＥを決定するなどを行う。ＴＯＥ＿Ａ６０５０は、セッション情報６１００をＴＯＥ＿Ｂ６２５０に送信する（８１００）。ＴＯＥ＿Ｂ６２５０は、セッションを再開する（８１１０）。ＴＯＥ＿Ｂ６２５０は、ＲＡＲＰをスイッチ６４１０に送信（８１２０）して、ＬＡＮスイッチ６４１０のＭＡＣアドレステーブルを更新する。
【００５５】
また、認証処理は、ＰＫＩ（Ｐｕｂｌｉｃ  Ｋｅｙ  Ｉｎｆｒａｓｔｒｕｃｔｕｒｅ）によるものに限らず、パスワード認証、ワンタイムパスワード認証などであってもよい。また、ＬＡＮスイッチを介する経路に限らず、専用線６４４０を介してもよいし、別のサーバを介してもよい。
【００５６】
また、セッション情報の移行は、故障を検知した後に行うだけではなく、セッション情報に変更があるたびに差分情報をＴＯＥ＿Ａ６０５０がＴＯＥ＿Ｂ６２５０に送信することにより、セッション情報の同期を図っておくのでもよく、故障を検知した後には、切り替え要求のみをＴＯＥ＿Ａ６０５０がＴＯＥ＿Ｂ６２５０に送信するのでもよい。
【００５７】
また、ＴＯＥ＿Ａ６０５０が故障から復帰した場合には、ＴＯＥ＿Ａ６０５０がＴＯＥ＿Ｂ６２５０に復帰要求を送信することにより、ＴＯＥ＿Ｂ６２５０からセッション情報をＴＯＥ＿Ａ６０５０に移行する。
【００５８】
また、故障検知方法には、半導体回路の温度をチェックして、ある一定の温度を超えた場合に故障と判定する方法や、受信パケットのチェックサムエラーの検出により故障と判定する方法を含む。
【００５９】
また、セッション情報は、変更の度にＴＯＥがＬＡＮスイッチ内のメモリにコピーして保存しておいてもよく、プライマリのＴＯＥの故障をＬＡＮスイッチが検知した場合に、セカンダリのＴＯＥに該当セッション情報を転送する方法をとることも可能である。
【００６０】
本実施形態によれば、ＴＯＥ間のセッション情報の入出力による移行手段を提供することにより、仮想マシンのマイグレーションやＴＯＥのフォールトトレランスにおいてセッション情報等の移行が可能となり、ネットワーク透過性を実現可能となる。
【００６１】
また、本実施形態は、ＴＯＥの省電力化にも応用することができる。すなわち、複数のＴＯＥを搭載するサーバにおいて、通信トラフィックが少ない時に、あるＴＯＥのセッション情報を他のＴＯＥに移行して、セッション情報を持たないＴＯＥを省電力モードにするなどが考えられる。
【００６２】
また、実施例１および実施例２において、セッション情報の移行に際してＩＰアドレスを変更する必要のないＬＡＮスイッチのみで構成される同一セグメントのネットワークとしたが、中継するゲートウェイにおいてＩＰアドレス変換を行うことにより、セッション情報のＩＰアドレスを変更可能なようにしてもよい。
【００６３】
また、サーバのＴＯＥのフォールトトレランスに限るものではなく、例えばパケットを中継するゲートウェイにＴＯＥを適用した場合にも適用可能なことは明らかである。
【００６４】
また、ＴＯＥの内部構成として、開示したような専用回路だけではなく、汎用プロセッサとＤＲＡＭ（Ｄｙｎａｍｉｃ  Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）を配置したタイプのものにも適用可能である。
【産業上の利用可能性】
【００６５】
本発明は、内部にメモリを持つ通信プロトコル処理装置を搭載したサーバ、ＰＣ（Ｐｅｒｓｏｎａｌ  Ｃｏｍｐｕｔｅｒ）、ゲートウェイ、携帯通信機器、ネットワーク家電にも適用できる。
【符号の説明】
【００６６】
１０００：サーバＡ、１０１０：ＣＰＵ、１０２０：グラフィックカード、１０３０：ブリッジ、１０４０：メモリ、１０５０、１２５０、６０５０、６２５０：通信プロトコル処理装置。
【図１】
2011018106.tif 000003
【図２】
2011018106.tif 000004
【図３】
2011018106.tif 000005
【図４】
2011018106.tif 000006
【図５】
2011018106.tif 000007
【図６】
2011018106.tif 000008
【図７】
2011018106.tif 000009