JP2011018106A - 通信プロトコル処理装置およびその方法 - Google Patents
通信プロトコル処理装置およびその方法 Download PDFInfo
- Publication number
- JP2011018106A JP2011018106A JP2009160616A JP2009160616A JP2011018106A JP 2011018106 A JP2011018106 A JP 2011018106A JP 2009160616 A JP2009160616 A JP 2009160616A JP 2009160616 A JP2009160616 A JP 2009160616A JP 2011018106 A JP2011018106 A JP 2011018106A
- Authority
- JP
- Japan
- Prior art keywords
- protocol processing
- communication
- information
- toe
- processing device
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
Images
Landscapes
- Computer And Data Communications (AREA)
Abstract
【課題】セッション情報の移行が可能な通信プロトコル処理装置を提供する。
【解決手段】通信プロトコル処理装置は、送受信したパケットに従って、パケットの送受信プロトコルを管理するための通信情報を書き換えながらプロトコル処理を行う手段と、通信情報を出力する手段と、通信情報を入力する手段とを備え、外部からの通信情報の移行の指示に応答して、他の通信プロトコル処理装置に通信情報を出力する手段を用いて移行する。通信プロトコル処理装置を有するサーバ装置は、プロトコル処理装置を制御するドライバを含み、ドライバを介して通信プロトコル処理装置を使用する仮想マシンの他のサーバへの移行を制御し、通信情報の他の通信プロトコル処理装置への移行を指示するハイパバイザを有する。
【選択図】図1
【解決手段】通信プロトコル処理装置は、送受信したパケットに従って、パケットの送受信プロトコルを管理するための通信情報を書き換えながらプロトコル処理を行う手段と、通信情報を出力する手段と、通信情報を入力する手段とを備え、外部からの通信情報の移行の指示に応答して、他の通信プロトコル処理装置に通信情報を出力する手段を用いて移行する。通信プロトコル処理装置を有するサーバ装置は、プロトコル処理装置を制御するドライバを含み、ドライバを介して通信プロトコル処理装置を使用する仮想マシンの他のサーバへの移行を制御し、通信情報の他の通信プロトコル処理装置への移行を指示するハイパバイザを有する。
【選択図】図1
Description
本発明は通信プロトコル処理装置にかかわり、特にその通信情報の移行の技術に関する。
近年、インターネットのトラフィックは、ネットワーク依存のアプリケーションの増加や光ファイバー網等のブロードバンドネットワークの整備にともなって、増加の一途をたどっている。また、PCやサーバ等の通信端末においても、通信速度が従来の100Mbpsから10倍の帯域をもつ1000Mbpsのネットワークカードを備えるものが標準的になりつつあり、今後もさらに広帯域化が進む見込みである。このようにネットワークの広帯域化が進むに従って、通信端末における通信プロトコル処理負荷が高まっていく。特に現在インターネット標準であるTCP(Transmission Control Protocol)のような高信頼な通信プロトコル処理は、処理負荷が重く、ホスト計算機のプロセッサでソフトウェア処理することは、その他のアプリケーション処理を圧迫してしまう。また、プロセッサの処理負荷だけではなく、プロセッサとNIC(Network Interface Card)およびメモリの間のバスを何度も通信データがやり取りされることにより、大きな遅延が発生してしまう。
このような問題を解決するために通信プロトコルを専用の通信制御プロセッサによって処理するものがある(特許文献1)。これは、それぞれ固有のプロトコル処理を行う複数の通信制御部と、パケットデータのフィールドを判別してパケットデータを、対応する通信制御部に渡すプロトコル判別部から成り、複数の通信プロトコルで通信を行うことができるようにした通信制御プロセッサである。
近年企業情報システムの分野では、サーバ(ホスト計算機)の仮想化技術が普及しつつある。サーバの仮想化により物理的な一台のサーバを、ソフトウェアの操作によって容易に複数台のサーバであるかのように利用することが可能となり、情報システムの俊敏性や柔軟性が飛躍的に高まる。サーバの仮想化を実現するソフトウェアは一般的にハイパーバイザとも呼ばれ、代表的な製品としてはVirtualServer(登録商標)やVMware(登録商標)などがある。仮想化製品の中には、ある物理サーバ上で稼働中の仮想マシン(ハイパーバイザ上で動作する、仮想化した仮想サーバを仮想マシンと呼ぶ。)を他の物理サーバへ動的に移動させる機能(マイグレーションあるいはホットマイグレーション)を持つものもある。これにより、動作している仮想マシンを移動先の物理サーバ上で継続して実行させ、物理サーバのメンテナンスや負荷分散を実施することが可能となる。
ネットワーク依存のアプリケーションが増加するに従って、24時間稼動するミッションクリティカルなアプリケーションの重要性が増している。このようなアプリケーションを稼動させるサーバシステムは、例えば冗長性をもって複数台のサーバで構成されて耐故障性を向上させている。一方で、サーバの冗長化が実現されていたとしても、ネットワークのフォールトトレランスが実現されていない場合、ネットワークセッションのタイムアウト待ちや再確立のオーバーヘッドが顕在化してしまう。このような問題を解決するために、ネットワーク接続のリモートエンドに対してネットワーク透過性を保持して、ソフトウェアによってフェイルオーバーする方法がある(特許文献2)。
特にTCPといった通信プロトコル処理をハードウェアで処理するものは、一般的にTOE(TCP Offload Engine)と呼ばれる。TOEを利用することによりホスト計算機のプロセッサの処理負荷をかけずに、通信トラフィックを高速に処理することができる。また、情報システムの俊敏性や柔軟性向上のために、今後もますます仮想化技術が普及するものと考えられる。
一方で、これらのTOEとサーバの仮想化技術を併用する際には課題がある。TOEはTCPセッション情報をハードウェアとしてのTOE内部に持ってプロトコル処理を行うために、マイグレーション時にサーバのメモリ上の仮想マシンを移行するだけでは、TCPセッションの継続性を保つことができない。ミッションクリティカルなアプリケーションでは、TCPセッションのタイムアウトや再確立のオーバーヘッドは看過できない。
また、TOEの効果的なフォールトトレランスの実現のためには、TCPセッション情報の移行が必要である。TCPセション情報を移行せずに、通信プロトコル処理を他のTOEへ移行すると、TCPセッションのタイムアウトやセッションを再確立するためのオーバーヘッドがかかってしまうという課題がある。
本発明は、以上のような課題を鑑みてなされたものであり、TOEはセッション情報の入出力手段によりセッション情報を移行する。さらにTOEはセッション情報の一部を書き換える手段と、さらに他のTOEを認証する手段を有する。
具体的な態様は、送受信したパケットに従って、パケットの送受信プロトコルを管理するための通信情報を書き換えながらプロトコル処理を行う手段と、通信情報を出力する手段と、通信情報を入力する手段とを備え、外部からの通信情報の移行の指示に応答して、他の通信プロトコル処理装置に通信情報を出力する手段を用いて移行する。
具体的な他の態様は、送受信したパケットに従って、パケットの送受信プロトコルを管理するための通信情報を書き換えながらプロトコル処理を行う手段と通信情報の第1の移行の指示に応答して通信情報を出力する手段とを含む通信プロトコル処理装置、および、
プロトコル処理装置を制御するドライバを含み、ドライバを介して通信プロトコル処理装置を使用する仮想マシンの他のサーバへの第2の移行を制御し、通信情報の他の通信プロトコル処理装置への第1の移行を指示するハイパバイザを有するサーバ装置である。
プロトコル処理装置を制御するドライバを含み、ドライバを介して通信プロトコル処理装置を使用する仮想マシンの他のサーバへの第2の移行を制御し、通信情報の他の通信プロトコル処理装置への第1の移行を指示するハイパバイザを有するサーバ装置である。
TOE間のセッション情報の入出力による移行手段を提供することにより、仮想マシンのマイグレーションやTOEのフォールトトレランスにおいてセッション情報等の移行が可能となり、ネットワーク透過性を実現可能となる。
以下、図面を用いて本発明の実施形態を説明する。
図1は実施例1におけるシステム構成図である。サーバA1000は、ブリッジ1030を介して相互に接続されるCPU1010とグラフィックカード1020とメモリ1040とTOE(プロトコル処理装置)_A1050とNIC(Network Interface Card)1190から構成される。CPU1010とブリッジ1030はシステムバスで接続され、TOE_A1050やNIC1190とブリッジ1030はPCI Express等のバスで接続される。
メモリ1040には、TOE_A1050を制御するドライバを含むOS(Operating System)やハイパーバイザが格納され、OSやハイパーバイザはCPU1010で実行される。
また、図示していないが、サーバA1000とサーバB1200は、仮想マシンイメージ(サーバA1000やサーバB1200上にローディングすることにより、初期設定などの初期化処理なしで、直ちに実行可能な仮想マシンの実行モジュール)などを格納する共有ストレージとそれぞれ接続されている。共有ストレージには、例えばSAN(Storage Area Network)、iSCSI(Internet Small Computer System Interface)、NFS(Network File System)などでアクセスされる。
TOE_A1050は、通信制御部1060とDMAC(Direct Memory Access Controller)1130と送受信バッファ1140と受信パケット解析部1150と送信パケット生成部1160とMAC(Media Access Control)1170とPHY(Physical Layer)1180から構成される。通信制御部1060は、DMAC1130と送受信バッファ1140と受信パケット解析部1150と送信パケット生成部1160の各モジュールと接続され、前記各モジュールの全体を制御するモジュールである。
通信制御部1060は、プロトコル処理部1070とセッション情報管理部1080とセッション情報(通信情報)1090と認証情報1100から構成される。通信制御部1060は、図示していないマイクロプログラムメモリおよびインストラクションレジスタ、プログラムカウンタ、マイクロ命令デコーダ、ワーキングレジスタ群、タイマなどから構成される制御部であり、プロトコル処理部1070とセッション情報管理部1080は、マイクロプログラムとして格納されて実行されるものである。マイクロプログラムやセッション情報1090および認証情報1100は、通信制御部1060の内部のメモリに格納されていてもよいし、外部のメモリに格納されていてもよいし、耐タンパ性のあるメモリに格納されていてもよい。認証情報1100は、例えばデジタル証明書や秘密鍵情報などである。セッション情報管理部1080は、セッション情報1090の転送や格納、更新などの管理を行う。
受信パケット解析部1150は、受信パケットのヘッダなどの解析を行うモジュールであり、解析結果を通信制御部1060に伝達する。送信パケット生成部1160は、通信制御部1060からの指示に従って送信パケットのヘッダなどの生成を行うモジュールである。送受信バッファ1140は、受信パケットを一時的に格納したり、送信データを一時的に格納するためのバッファである。また、MAC1170およびPHY1180は複数備えていてもよく、その場合TOE_A1050は複数のインターフェースを持つことになる。
サーバB1200は、ブリッジ1230を介して相互に接続されるCPU1210とグラフィックカード1220とメモリ1240とTOE_B1250とNIC1380から構成される。CPU1210とブリッジ1230はシステムバスで接続され、TOE_B1250やNIC1380とブリッジ1230はPCI Express等のバスで接続される。
メモリ1240には、TOE_B1250のドライバを含むOSやハイパーバイザが格納され、OSやハイパーバイザはCPU1210で実行される。
TOE_B1250は、通信制御部1260とDMAC1310と送受信バッファ1320と受信パケット解析部1340と送信パケット生成部1350とMAC1360とPHY1370から構成される。通信制御部1260は、DMAC1310と送受信バッファ1320と受信パケット解析部1340と送信パケット生成部1350の各モジュールと接続され、前記各モジュールの全体を制御するモジュールである。
通信制御部1260は、プロトコル処理部1270とセッション情報管理部1280とセッション情報1290と認証情報1300から構成される。通信制御部1260は、図示していないマイクロプログラムメモリおよびインストラクションレジスタ、プログラムカウンタ、マイクロ命令デコーダ、ワーキングレジスタ群、タイマなどから構成される制御部であり、プロトコル処理部1270とセッション情報管理部1280は、マイクロプログラムとして格納されて実行されるものである。マイクロプログラムやセッション情報1290および認証情報1300は、通信制御部1260の内部のメモリに格納されていてもよいし、外部のメモリに格納されていてもよいし、耐タンパ性のあるメモリに格納されていてもよい。認証情報1300は、例えばデジタル証明書や秘密鍵情報などである。セッション情報管理部1280は、セッション情報1290の転送や格納、更新などの管理を行う。
受信パケット解析部1340は、受信パケットのヘッダなどの解析を行うモジュールであり、解析結果を通信制御部1260に伝達する。送信パケット生成部1350は、通信制御部1260からの指示に従って送信パケットのヘッダなどの生成を行うモジュールである。送受信バッファ1320は、受信パケットを一時的に格納したり、送信データを一時的に格納するためのバッファである。また、MAC1360およびPHY1370は複数備えていてもよく、その場合TOE_B1250は複数のインターフェースを持つことになる。
サーバA1000は、TOE_A1050を介してLANスイッチ1410と接続され、NIC1190を介してLANスイッチ1400と接続されている。サーバB1200は、TOE_B1250を介してLANスイッチ1420と接続され、NIC1380を介してLANスイッチ1400と接続されている。LANスイッチ1410およびLANスイッチ1420は、LANスイッチ1430と接続されている。LANスイッチ1430は、図示していない他のLANスイッチやルータを含むネットワーク1440と接続されている。
サーバA1000とサーバB1200は、ブレードサーバの形態でもよく、PCI Expressスイッチ等で相互に接続されていてもよい。
TOE_A1050およびTOE_B1250のパケット受信および送信の場合のプロトコル処理フローを説明する。以下では、TOE_A1050の例で説明するが、TOE_B1250も同様の処理フローである。まず初めにパケット受信の場合を説明する。PHY1180およびMAC1170を介して受信された受信パケットは、受信パケットの先頭から4バイトづつ送受信バッファ1140に格納され、並行して4バイトづつ受信パケット解析部1150でヘッダの解析が行われる。受信パケットの全体が受信完了すると、受信パケット解析部1150は、受信パケットの解析結果を通信制御部1060に伝達する。前記解析結果とは、例えばMACアドレス、IPアドレス、ポート番号、シーケンス番号、ACK番号、TCPやUDP、ICMP、ARPなどのプロトコル種別および、TCPオプション情報、IPv4フラグメント情報、VLAN情報、チェックサムエラーを含む受信エラー情報などである。また、送受信バッファ1140は、受信パケットの全体が受信完了すると、通信制御部1060に受信パケットサイズや受信パケットを格納したバッファのメモリアドレス情報などを伝達する。
通信制御部1060のプロトコル処理部1070は、前記の解析結果や受信パケットサイズ、バッファのメモリアドレス情報から、例えば、受信パケットのペイロード部分をDMAC1130を介してメモリ1040に転送するように送受信バッファ1140に指示したり、ウィンドウ制御、輻輳制御、TCPステート制御などのプロトコル処理を行い、セッション情報1090に対して参照および更新を行う。
次にパケット送信の場合を説明する。通信制御部1060のプロトコル処理部1070は、セッション情報1090を参照して送信データがあるセッション情報を検索する。送信データがあるセッション情報があった場合、プロトコル処理部1070は送受信バッファ1140に対して、DMAC1130を介してメモリ1040から当該送信データを転送するよう指示する。前記転送が完了した後に、プロトコル処理部1070は送信パケット生成部1160に対して、パケット生成情報を伝達して送信指示する。パケット生成情報とは例えばMACアドレス、IPアドレス、ポート番号、シーケンス番号、ACK番号、TCPやUDP、ICMP、ARPなどのプロトコル種別および、TCPオプション情報、IPv4フラグメント情報、VLAN情報などである。
送信パケット生成部1160は、生成したヘッダ部分と送受信バッファ1140に格納されているペイロード部分を一つのパケットの形にしてMAC1170およびPHY1180を介して送信する。プロトコル処理部1070はセッション情報1090を参照および更新する。
図2にセッション情報1090の1エントリ2500の一例を示す。セッション情報1090は、複数のエントリから構成され、それぞれのエントリはセッションの開始前にTOE_Aのドライバなどから初期設定される。
セッション有効フラグ2000は、当該セッション情報エントリが有効か無効かを示すフラグである。セッション負荷情報2010は、当該セッションの負荷状況を表すパラメータであり、通信制御部1060が単位時間あたりの受信パケット数や送信パケット数などから算出するものである。TCPステート2020は、TCPの状態遷移情報を表すパラメータであり、例えばRFC793に示されているLISTEN,SYN−SENT,ESTABLISHEDなどの状態を表すパラメータである。ソースポート番号2030は、当該セッションのリクエスト受付ポート番号を示す。宛先ポート番号2040は、通信相手のポート番号である。IPアドレス2050は、当該セッションのソースIPアドレスを示す。MACアドレス2070は、当該セッションのソースMACアドレスを示す。シーケンス番号2080は、当該セッションのTCPのシーケンス番号を示す。応答番号2090は、当該セッションのTCPの応答番号を示す。ディスクリプタアドレス2100は、ディスクリプタ方式による連続送受信に対応する際の次のディスクリプタのメモリ1040上のアドレスを示す。送信データホストアドレス2110は、送信データが格納されているメモリ1040上のアドレスを示す。送信データ長2120は、メモリ1040上に配置されている送信データの長さを示す。送信済みデータ長2130は、プロトコル処理部1070が送信完了したデータ長を記録しておくパラメータである。受信データ格納先アドレス2140は、受信データを格納するメモリ1040上のアドレスを示す。受信データ格納先サイズ2150は、メモリ1040上の受信データのために確保されているメモリ領域のサイズを示す。受信データ長2160は、メモリ1040上に格納した受信データ長を示す。セッションID2170は、当該セッションをドライバが一意に識別する情報である。
その他のセッション情報としては、図示していないが、ウィンドウサイズ、宛先ウィンドウサイズ、輻輳ウィンドウサイズ、スライディングウィンドウ左端、スライディングウィドウ右端、ラウンドトリップタイム、再送タイマ値、最後に送信した時刻、再送回数、最大セグメントサイズ、累積ACKタイマ値、累積ACK回数、キープアライブタイマ値、パーシストタイマ値、2MLSタイマ値、パケットの順序入れ違い情報など、セッション管理に必要な情報を含む。また、図示していないが、宛先MACアドレスはARPテーブルによって管理されており、対応するIPアドレスと関連付けてARPテーブルに格納されている。
また、セッション情報は上記に挙げたTCPセッションに関するものに限らない。例えばトランスポート層よりも上位のHTTPをTOEが管理する場合であれば、CookieやURLハッシュ、セッション変数、HTTP認証ヘッダ、SSLセッションIDなどもセッション情報に含むし、iSCSIプロトコルをTOEが管理する場合であれば、iSCSIのセッション管理情報も含む。
図3に通信制御部1060がセッション情報2500と共に管理するルーティングテーブル3500の一例を示す。宛先3000とサブネットマスク3010とゲートウェイ3020インターフェース3030とメトリック3040から構成される。宛先3000のサブネットや当該サブネットに属するホスト向けのパケットはインターフェース3030からゲートウェイ3020へと転送されることを示している。ルーティングテーブル3500は、TOEのドライバなどから初期設定される。また、ルーティングテーブル3500は、ドライバが管理してもよい。
図4にサーバA1000上で動作するハイパーバイザA4000とサーバB1200上で動作するハイパーバイザB4010間でセッション情報を移行する際の処理フローを示す。ハイパーバイザA4000は、マイグレーション要求を管理ツールなどから受け取ると、仮想マシンのマイグレーションを開始する(4020)。マイグレーションは、まず初めにハイパーバイザA4000が移行対象となる稼働中の仮想マシンがサーバA1000上で正しく機能していることを確認する。次に、ハイパーバイザA4000が移行対象となる仮想マシンの状態情報をNIC1190およびLANスイッチ1400を介してサーバB1200に送信する。NIC1190とLANスイッチ1400とNIC1380は、一般的にマイグレーション専用のギガビットネットワークとして構成されるが、これに限定されるものではなく、複数インターフェースを持つTOEとLANスイッチ、あるいはNIC間でLANスイッチを介せず直接接続される構成でもよい。仮想マシンの状態情報とは、サーバA1000のメモリ1040に展開されて稼働中の仮想マシンに関する全情報(スナップショット)である。マイグレーションを開始すると直ちに、ハイパーバイザA4000は、TOE_A1050に対して、セッション情報の読み出し指示を出す(4030)。仮想マシンのマイグレーションを開始すると直ちにセッション情報を読み出すのは、マイグレーションの開始時に仮想マシンのスナップショットをとるが、セッション情報の読み出し(セッション情報のスナップショット)との時間差を可能な限り少なくするためである。セッション情報の読み出し指示には、当該仮想マシンに関するセッションのセッションIDあるいは当該仮想マシンに関するセッション情報が格納されているアドレス情報を含む。次にTOE_A1050は、当該仮想マシンに関するセッション情報をハイパーバイザA4000に送信する(4050)。次にハイパーバイザA4000は、前記セッション情報をNIC1190を介してハイパーバイザB4010に送信する(4070)。ハイパーバイザB4010は、前記セッション情報を受信する(4080)。ハイパーバイザB4010は、受信した前記セッション情報をTOE_B1250に対して書き込み指示とともに送信する(4090)。TOE_B1250は、前記セッション情報をセッション情報1290として格納する(4100)。ハイパーバイザB4010は、セッション開始指示をTOE_B1250に指示する(4110)。次にTOE_B1250は、当該セッションの処理を開始する(4120)。次にTOE_B1250は、接続するLANスイッチ1420に対してソースMACアドレスと宛先MACアドレスが当該仮想マシンあるいは当該セッション情報のMACアドレスとなっているRARP(Reverse Address Resolution Protocol)パケットを送信して、LANスイッチ1420のMACアドレステーブルを更新する(4130)。
また、TOE_A1050がセッション情報を送信(4050)した後に、当該セッションに関するパケットを受信してセッション情報を更新する必要が出た場合には、セッション情報に関する差分情報をハイパーバイザA4000が別途送信してもよいし、TOE_A1050が受信パケットをそのままTOE_B1250に転送してもよい。
また、マイグレーションの方式として、メモリ上の仮想マシンの大容量のスナップショットを移行する段階と、スナップショット送信後に更新された小容量の差分情報を移行する段階の2段階で実行される方式をとった場合には、セッション情報の移行も同様に2段階(セッション情報を送信する段階とセッション情報の差分を送信する段階)で行ってもよい。
また、マイグレーションに伴って、セッション情報の一部に変更の必要が生じた場合には、TOE_A1050あるいはハイパーバイザA4000あるいはハイパーバイザB1200あるいはTOE_B1250が変更する。例えば、セッション情報の最後に送信した時刻は、TOE_A1050が内部に持つタイマ時刻を基準としたものからTOE_B1250が内部に持つタイマ時刻を基準にしたものに補正する。これが、セッション情報の一部を書き換える例である。マイグレーションに伴ってTOE_A1050が内部に持つタイマ時刻とTOE_B1250が内部に持つタイマ時刻の同期をとってもよい。
また、例えばTOE_A1050のインターフェースとTOE_B1250のインターフェースの数が異なる場合、ルーティングテーブル3500のインターフェース3030をハイパーバイザB1200あるいはTOE_B1250が変更する。
また、セッション情報の移行に、ハイパーバイザA4000およびハイパーバイザB1250を仲介させずに、TOE_A1050からTOE_B1250に直接セッション情報を送信してもよい。直接セッション情報を送信する場合には、ハイパーバイザA4000がマイグレーションの開始時にTOE_A1050に対して、移行先のTOE_B1250のIPアドレス等の情報を渡す。
図5は実施例2におけるシステム構成図である。サーバ6000は、ブリッジ6030を介して相互に接続されるCPU6010とグラフィックカード6020とメモリ6040とTOE_A6050とTOE_B6250から構成される。CPU6010とブリッジ6030およびTOE_A6050やTOE_B6250とブリッジ6030はバスで接続される。メモリ6040には、TOE_A6050およびTOE_B6250のドライバを含むOSが格納され、OSはCPU6010で実行される。
TOE_A6050は、通信制御部6060とDMAC6120と送受信バッファ6130と受信パケット解析部6140と送信パケット生成部6150とMAC6160とPHY6170から構成される。通信制御部6060は、DMAC6120と送受信バッファ6130と受信パケット解析部6140と送信パケット生成部6150の各モジュールと接続され、前記各モジュールの全体を制御するモジュールである。通信制御部6060は、プロトコル処理部6070とセッション情報管理部6080と故障検知部6090とセッション情報6100と認証情報6110から構成される。通信制御部6060は、図示していないマイクロプログラムメモリおよびインストラクションレジスタ、プログラムカウンタ、マイクロ命令デコーダ、ワーキングレジスタ群、タイマなどから構成される制御部であり、プロトコル処理部6070とセッション情報管理部6080と故障検知部6090は、マイクロプログラムとして格納されて実行されるものである。マイクロプログラムやセッション情報6100および認証情報6110は、通信制御部6060の内部のメモリに格納されていてもよいし、外部のメモリに格納されていてもよいし、耐タンパ性のあるメモリに格納されていてもよい。認証情報6110は、例えばデジタル証明書や秘密鍵情報などである。セッション情報管理部6080は、セッション情報6100の転送や格納、更新などの管理を行う。故障検知部6090は、サーバ6000の通信に関わる故障を検知する機能を持ち、例えばTOE_A6050とバスの接続障害やLANスイッチのリンクダウン等の障害などを検知する。受信パケット解析部6140は、受信パケットのヘッダなどの解析を行うモジュールであり、解析結果を通信制御部6060に伝達する。送信パケット生成部6150は、通信制御部6060からの指示に従って送信パケットのヘッダなどの生成を行うモジュールである。送受信バッファ6130は、受信パケットを一時的に格納したり、送信データを一時的に格納するためのバッファである。また、MAC6160およびPHY6170は複数備えていてもよく、その場合TOE_A6050は複数のインターフェースを持つことになる。
TOE_B6250は、通信制御部6260とDMAC6320と送受信バッファ6330と受信パケット解析部6340と送信パケット生成部6350とMAC6360とPHY6370から構成される。通信制御部6260は、DMAC6320と送受信バッファ6330と受信パケット解析部6340と送信パケット生成部6350の各モジュールと接続され、前記各モジュールの全体を制御するモジュールである。通信制御部6260は、プロトコル処理部6270とセッション情報管理部6280と故障検知部6290とセッション情報6300と認証情報6310から構成される。通信制御部6260は、図示していないマイクロプログラムメモリおよびインストラクションレジスタ、プログラムカウンタ、マイクロ命令デコーダ、ワーキングレジスタ群、タイマなどから構成される制御部であり、プロトコル処理部6270とセッション情報管理部6280と故障検知部6290は、マイクロプログラムとして格納されて実行されるものである。マイクロプログラムやセッション情報6300および認証情報6310は、通信制御部6260の内部のメモリに格納されていてもよいし、外部のメモリに格納されていてもよいし、耐タンパ性のあるメモリに格納されていてもよい。認証情報6310は、例えばデジタル証明書や秘密鍵情報などである。セッション情報管理部6280は、セッション情報6300の転送や格納、更新などの管理を行う。故障検知部6290は、サーバ6000の通信に関わる故障を検知する機能を持ち、例えばTOE_B6250とバスの接続障害やLANスイッチのリンクダウン等の障害などを検知する。受信パケット解析部6340は、受信パケットのヘッダなどの解析を行うモジュールであり、解析結果を通信制御部6260に伝達する。送信パケット生成部6350は、通信制御部6260からの指示に従って送信パケットのヘッダなどの生成を行うモジュールである。送受信バッファ6330は、受信パケットを一時的に格納したり、送信データを一時的に格納するためのバッファである。また、MAC6360およびPHY6370は複数備えていてもよく、その場合TOE_B6250は複数のインターフェースを持つことになる。また、TOE_A6050とTOE_B6250は、専用線6440で接続されていてもよい。
サーバ6000は、TOE_A6050を介してLANスイッチ6400と接続され、TOE_B6250を介してLANスイッチ6410と接続されている。LANスイッチ6400およびLANスイッチ6410は、LANスイッチ6420と接続されている。LANスイッチ6420は、図示していない他のLANスイッチやルータを含むネットワーク6430と接続されている。
また、本システム構成はスイッチフォールトトレランス(スイッチ切替による通信の継続)を実現しており、TOE_A6050がプライマリとして平常時は通信を行い、TOE_A6050あるいはLANスイッチ6400あるいは、LANスイッチ6400とTOE_A6050間のケーブルのいずれかが故障した場合にセカンダリのTOE_B6250に通信を引き継ぐ。
また、TOE_A6050とTOE_B6250が同じLANスイッチに接続されて、アダプタフォールトトレランス(TOEやNICなどのアダプタの切替による通信の継続)を実現していてもよく、その場合はプライマリのTOE_A6050あるいはTOE_A6050とLANスイッチ間のケーブルのいずれかが故障した場合にセカンダリのTOE_B6250に通信を引き継ぐ。
また、TOE_A6050とTOE_B6250が同じLANスイッチに接続されて、リンクアグリゲーションあるいはロードバランシングを実現していてもよく、その場合はTOE_A6050あるいはTOE_A6050とLANスイッチ間のケーブルのいずれかが故障した場合にTOE_B6250単独で通信を行うし、TOE_B6250あるいはTOE_B6250とLANスイッチ間のケーブルのいずれかが故障した場合にTOE_A6050単独で通信を行う。
図6にLANに関連する故障が発生した場合の処理フローを示す。TOE_A6050は、送受信バッファ6130、受信パケット解析部6140、送信パケット生成部6150、MAC6160、PHY6170、TOE_A6050とLANスイッチ6400の間のケーブル、LANスイッチ6400のいずれか、あるいは2つ以上の故障を検知する(7010)。TOE_A6050は、セッション情報の移行のための通信路をバス経由として選択する(7020)。TOE_A6050は、故障検知割り込みをCPU6010で動作するドライバ7000に上げる(7030)。ドライバ7000は、セッション情報要求をTOE_A6050に出す(7040)。TOE_A6050は、バスを介してドライバ7000にセッション情報6100を送信する(7050)。ドライバ7000は、バスを介してTOE_B6250にセッション情報を送信する(7060)。TOE_B6250は、当該セッションを再開する(7070)。TOE_B6250は、RARPをスイッチ6410に送信(7080)して、LANスイッチ6410のMACアドレステーブルを更新する。
また、故障検知の方法として、故障検知部6090および故障検知部6290がお互いにプローブパケットをマルチキャストあるいはブロードキャストにより定期的に送信し合ってお互いの状態を監視し合うことで行ってもよく、TOE_A6050の故障を検知したTOE_B6250が故障検知割り込みを上げてもよい。
また、ドライバを介する経路に限らず、専用線6440やバスを介して、直接TOE_B6250にセッション情報を送信してもよい。
図7にバスに関連する故障が発生した場合の処理フローを示す。TOE_A6050は、DMAC6120、DMAC6120とブリッジ6030の間のバスのいずれか、あるいは2つ以上の故障を検知する(8000)。TOE_A6050は、セッション情報の移行のための通信路をLAN経由として選択する(8010)。TOE_A6050は、TOE探索のためのブロードキャストパケットをLANスイッチ6400に送信する(8020)。ブロードキャストパケットには、TOE_A6050のMACアドレスや故障状況情報等が含まれる。送信されたブロードキャストパケットは、LANスイッチ6420およびLANスイッチ6410を介してTOE_B6250に到達する。TOE_B6250は、TOE_A6050に応答パケットを送信する(8030)。前記応答には、TOE_B6250を一意に識別する情報やMACアドレスや生成した乱数を含む。TOE_A6050は、認証情報6110をTOE_B6250に送信する(8040)。認証情報6110は、デジタル証明書、秘密鍵で前記応答に含まれる乱数を署名した値などを含む。TOE_B6250は、受信した認証情報を用いて認証処理を行う(8050)。認証処理は、前記署名した値を公開鍵で検証することを含む。TOE_B6250は、認証情報6310をTOE_A6050に送信する(8060)。TOE_A6050は、受信した認証情報を用いて認証処理を行う(8070)。TOE_A6050は、状態情報要求をTOE_Bに送信する(8080)。TOE_B6250は、状態情報をTOE_A6050に送信する(8090)。状態情報には、セッション情報を引き受け可能かを表す情報や、負荷情報を含む。TOE_A6050は、認証が通り、セッション情報を引き受け可能なすべてのTOEの中から、より負荷の低いTOEを決定するなどを行う。TOE_A6050は、セッション情報6100をTOE_B6250に送信する(8100)。TOE_B6250は、セッションを再開する(8110)。TOE_B6250は、RARPをスイッチ6410に送信(8120)して、LANスイッチ6410のMACアドレステーブルを更新する。
また、認証処理は、PKI(Public Key Infrastructure)によるものに限らず、パスワード認証、ワンタイムパスワード認証などであってもよい。また、LANスイッチを介する経路に限らず、専用線6440を介してもよいし、別のサーバを介してもよい。
また、セッション情報の移行は、故障を検知した後に行うだけではなく、セッション情報に変更があるたびに差分情報をTOE_A6050がTOE_B6250に送信することにより、セッション情報の同期を図っておくのでもよく、故障を検知した後には、切り替え要求のみをTOE_A6050がTOE_B6250に送信するのでもよい。
また、TOE_A6050が故障から復帰した場合には、TOE_A6050がTOE_B6250に復帰要求を送信することにより、TOE_B6250からセッション情報をTOE_A6050に移行する。
また、故障検知方法には、半導体回路の温度をチェックして、ある一定の温度を超えた場合に故障と判定する方法や、受信パケットのチェックサムエラーの検出により故障と判定する方法を含む。
また、セッション情報は、変更の度にTOEがLANスイッチ内のメモリにコピーして保存しておいてもよく、プライマリのTOEの故障をLANスイッチが検知した場合に、セカンダリのTOEに該当セッション情報を転送する方法をとることも可能である。
本実施形態によれば、TOE間のセッション情報の入出力による移行手段を提供することにより、仮想マシンのマイグレーションやTOEのフォールトトレランスにおいてセッション情報等の移行が可能となり、ネットワーク透過性を実現可能となる。
また、本実施形態は、TOEの省電力化にも応用することができる。すなわち、複数のTOEを搭載するサーバにおいて、通信トラフィックが少ない時に、あるTOEのセッション情報を他のTOEに移行して、セッション情報を持たないTOEを省電力モードにするなどが考えられる。
また、実施例1および実施例2において、セッション情報の移行に際してIPアドレスを変更する必要のないLANスイッチのみで構成される同一セグメントのネットワークとしたが、中継するゲートウェイにおいてIPアドレス変換を行うことにより、セッション情報のIPアドレスを変更可能なようにしてもよい。
また、サーバのTOEのフォールトトレランスに限るものではなく、例えばパケットを中継するゲートウェイにTOEを適用した場合にも適用可能なことは明らかである。
また、TOEの内部構成として、開示したような専用回路だけではなく、汎用プロセッサとDRAM(Dynamic Random Access Memory)を配置したタイプのものにも適用可能である。
本発明は、内部にメモリを持つ通信プロトコル処理装置を搭載したサーバ、PC(Personal Computer)、ゲートウェイ、携帯通信機器、ネットワーク家電にも適用できる。
1000:サーバA、1010:CPU、1020:グラフィックカード、1030:ブリッジ、1040:メモリ、1050、1250、6050、6250:通信プロトコル処理装置。
Claims (12)
- 送受信したパケットに従って、前記パケットの送受信プロトコルを管理するための通信情報を書き換えながらプロトコル処理を行う手段と、
前記通信情報を出力する手段と、前記通信情報を入力する手段とを備え、
外部からの前記通信情報の移行の指示に応答して、他の通信プロトコル処理装置に前記通信情報を前記出力する手段を用いて移行することを特徴とする通信プロトコル処理装置。 - 請求項1に記載の通信プロトコル処理装置であって、移行された前記通信情報の一部を書き換えることを特徴とする通信プロトコル処理装置。
- 請求項1に記載の通信プロトコル処理装置であって、前記他の通信プロトコル処理装置からの認証情報を使って、前記他の通信プロトコル処理装置を認証することを特徴とする通信プロトコル処理装置。
- 請求項1に記載の通信プロトコル処理装置であって、さらに、故障検知手段と、前記故障検知手段による故障検知箇所に応じて、前記他の通信プロトコル処理装置への前記出力する手段による前記通信情報の移行経路を選択する手段を備えることを特徴とする通信プロトコル処理装置。
- 通信情報を出力する手段を有する通信プロトコル処理装置における処理方法であって、前記通信プロトコル処理装置は、送受信したパケットに従って、前記パケットの送受信プロトコルを管理するための通信情報を書き換えながらプロトコル処理し、
外部からの前記通信情報の移行の指示に応答して、他の通信プロトコル処理装置に前記通信情報を前記出力する手段を用いて移行することを特徴とする処理方法。 - 請求項5に記載の処理方法であって、移行された前記通信情報の一部を書き換えることを特徴とする処理方法。
- 請求項5に記載の処理方法であって、前記他の通信プロトコル処理装置からの認証情報を使って、前記他の通信プロトコル処理装置を認証することを特徴とする処理方法。
- 請求項5に記載の処理方法であって、さらに、故障検知箇所に応じて、前記他の通信プロトコル処理装置への前記出力する手段による前記通信情報の移行経路を選択することを特徴とする処理方法。
- 送受信したパケットに従って、前記パケットの送受信プロトコルを管理するための通信情報を書き換えながらプロトコル処理を行う手段と前記通信情報の第1の移行の指示に応答して前記通信情報を出力する手段とを含む通信プロトコル処理装置、および、
前記プロトコル処理装置を制御するドライバを含み、前記ドライバを介して前記通信プロトコル処理装置を使用する仮想マシンの他のサーバへの第2の移行を制御し、前記通信情報の他の通信プロトコル処理装置への前記第1の移行を指示するハイパバイザを有することを特徴とするサーバ装置。 - 請求項9に記載のサーバ装置であって、前記第1の移行により移行された前記通信情報の一部を書き換えることを特徴とするサーバ装置。
- 請求項9に記載のサーバ装置であって、前記他の通信プロトコル処理装置からの認証情報を使って、前記他の通信プロトコル処理装置を認証することを特徴とするサーバ装置。
- 請求項9に記載のサーバ装置であって、さらに、故障検知手段と、前記故障検知手段による故障検知箇所に応じて、前記他の通信プロトコル処理装置への前記出力する手段による前記通信情報の移行経路を選択する手段を備えることを特徴とするサーバ装置。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2009160616A JP2011018106A (ja) | 2009-07-07 | 2009-07-07 | 通信プロトコル処理装置およびその方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2009160616A JP2011018106A (ja) | 2009-07-07 | 2009-07-07 | 通信プロトコル処理装置およびその方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
JP2011018106A true JP2011018106A (ja) | 2011-01-27 |
Family
ID=43595871
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2009160616A Pending JP2011018106A (ja) | 2009-07-07 | 2009-07-07 | 通信プロトコル処理装置およびその方法 |
Country Status (1)
Country | Link |
---|---|
JP (1) | JP2011018106A (ja) |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2013121841A1 (ja) * | 2012-02-16 | 2013-08-22 | 株式会社エヌ・ティ・ティ・ドコモ | 移動体通信システム、通信システム、制御ノード、呼処理ノード及び通信制御方法 |
WO2013183231A1 (ja) * | 2012-06-06 | 2013-12-12 | 日本電気株式会社 | 通信システム、通信制御方法、通信中継システム、及び、通信中継制御方法 |
KR20160031953A (ko) * | 2014-09-15 | 2016-03-23 | 인텔 코포레이션 | 멀티-스레딩된 애플리케이션에 대한 세션들을 재맵핑하기 위한 기술 |
US9632809B2 (en) | 2013-05-30 | 2017-04-25 | Fujitsu Limited | Migration between virtual machines |
-
2009
- 2009-07-07 JP JP2009160616A patent/JP2011018106A/ja active Pending
Cited By (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2013121841A1 (ja) * | 2012-02-16 | 2013-08-22 | 株式会社エヌ・ティ・ティ・ドコモ | 移動体通信システム、通信システム、制御ノード、呼処理ノード及び通信制御方法 |
JPWO2013121841A1 (ja) * | 2012-02-16 | 2015-05-11 | 株式会社Nttドコモ | 移動体通信システム、通信システム、制御ノード、呼処理ノード及び通信制御方法 |
US9451483B2 (en) | 2012-02-16 | 2016-09-20 | Ntt Docomo, Inc. | Mobile communication system, communication system, control node, call-processing node, and communication control method |
WO2013183231A1 (ja) * | 2012-06-06 | 2013-12-12 | 日本電気株式会社 | 通信システム、通信制御方法、通信中継システム、及び、通信中継制御方法 |
JPWO2013183231A1 (ja) * | 2012-06-06 | 2016-01-28 | 日本電気株式会社 | 通信システム、通信制御方法、通信中継システム、及び、通信中継制御方法 |
US9632809B2 (en) | 2013-05-30 | 2017-04-25 | Fujitsu Limited | Migration between virtual machines |
KR20160031953A (ko) * | 2014-09-15 | 2016-03-23 | 인텔 코포레이션 | 멀티-스레딩된 애플리케이션에 대한 세션들을 재맵핑하기 위한 기술 |
JP2016062596A (ja) * | 2014-09-15 | 2016-04-25 | インテル・コーポレーション | マルチスレッドアプリケーションのためのセッションをリマッピングするための技術 |
KR101717265B1 (ko) | 2014-09-15 | 2017-03-16 | 인텔 코포레이션 | 멀티-스레딩된 애플리케이션에 대한 세션들을 재맵핑하기 위한 기술 |
JP2017130223A (ja) * | 2014-09-15 | 2017-07-27 | インテル・コーポレーション | マルチスレッドアプリケーションのためのセッションをリマッピングするための技術 |
KR101838845B1 (ko) | 2014-09-15 | 2018-03-14 | 인텔 코포레이션 | 멀티-스레딩된 애플리케이션에 대한 세션들을 재맵핑하기 위한 기술 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US7921240B2 (en) | Method and system for supporting hardware acceleration for iSCSI read and write operations and iSCSI chimney | |
US8180949B1 (en) | Resource virtualization switch | |
US7640364B2 (en) | Port aggregation for network connections that are offloaded to network interface devices | |
US8180928B2 (en) | Method and system for supporting read operations with CRC for iSCSI and iSCSI chimney | |
US8560631B2 (en) | Storage system | |
US8880935B2 (en) | Redundancy and load balancing in remote direct memory access communications | |
RU2562760C2 (ru) | Система управления маршрутом связи и способ управления маршрутом связи | |
US20090219936A1 (en) | Method and system for offloading network processing | |
US9154427B2 (en) | Adaptive receive path learning to facilitate combining TCP offloading and network adapter teaming | |
WO2014179875A1 (en) | Stateless load balancing of connections | |
JP2006191537A (ja) | 統合ホストプロトコルスタック管理を使用するセキュアなインターネットプロトコル(ispec)オフロードのための方法および装置 | |
EP1759317B1 (en) | Method and system for supporting read operations for iscsi and iscsi chimney | |
JP5262145B2 (ja) | クラスタシステムおよび情報処理方法 | |
US11895027B2 (en) | Methods and systems for service distribution using data path state replication and intermediate device mapping | |
US20050283545A1 (en) | Method and system for supporting write operations with CRC for iSCSI and iSCSI chimney | |
JP2011018106A (ja) | 通信プロトコル処理装置およびその方法 | |
US20050281261A1 (en) | Method and system for supporting write operations for iSCSI and iSCSI chimney | |
US20090135840A1 (en) | Method for adjusting mss or packets sent to a bridge device positioned between virtual and physical lans | |
WO2021057672A1 (zh) | 一种序列号同步的方法及装置 | |
US10931565B2 (en) | Multi-VRF and multi-service insertion on edge gateway virtual machines | |
US11949589B2 (en) | Methods and systems for service state replication using original data packets | |
WO2023231836A1 (zh) | 一种文件同步方法、装置、设备及存储介质 | |
JP2014059726A (ja) | 情報処理装置 | |
Kim et al. | Offloading Socket Processing for Ubiquitous Services. | |
CN116743663A (zh) | 一种数据包处理方法、装置及存储介质 |