JP2022125786A - 情報処理装置、情報処理プログラム、及び情報処理方法 - Google Patents
情報処理装置、情報処理プログラム、及び情報処理方法 Download PDFInfo
- Publication number
- JP2022125786A JP2022125786A JP2021023569A JP2021023569A JP2022125786A JP 2022125786 A JP2022125786 A JP 2022125786A JP 2021023569 A JP2021023569 A JP 2021023569A JP 2021023569 A JP2021023569 A JP 2021023569A JP 2022125786 A JP2022125786 A JP 2022125786A
- Authority
- JP
- Japan
- Prior art keywords
- processing
- relay
- data
- unit
- information
- 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
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L45/00—Routing or path finding of packets in data switching networks
- H04L45/58—Association of routers
- H04L45/586—Association of routers of virtual routers
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L49/00—Packet switching elements
- H04L49/50—Overload detection or protection within a single switching element
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L45/00—Routing or path finding of packets in data switching networks
- H04L45/24—Multipath
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L45/00—Routing or path finding of packets in data switching networks
- H04L45/74—Address processing for routing
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L47/00—Traffic control in data switching networks
- H04L47/10—Flow control; Congestion control
- H04L47/12—Avoiding congestion; Recovering from congestion
- H04L47/122—Avoiding congestion; Recovering from congestion by diverting traffic away from congested entities
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L49/00—Packet switching elements
- H04L49/70—Virtual switches
Abstract
【課題】複数の仮想マシン間を接続する仮想スイッチとしての中継処理を実行する中継装置における、データの転送性能の低下を抑制する。【解決手段】情報処理装置は、複数の仮想マシンのそれぞれに割り当てられる複数の記憶領域30を有する記憶装置3と、前記記憶装置3に接続され、前記複数の仮想マシンを実行する処理装置2と、前記処理装置2に接続され、仮想スイッチとしての中継処理を実行する中継装置4と、前記複数の記憶領域30間のデータ転送を行なう転送部52と、を備え、前記処理装置2は、第1の記憶領域30が記憶する送信対象のデータにおけるヘッダ情報が所定の条件を満たすか否かを判定し、前記転送部52は、前記ヘッダ情報が前記所定の条件を満たす場合、前記送信対象のデータを、前記中継装置4による前記中継処理が実行されない経路で、前記第1の記憶領域30から前記送信対象のデータの宛先である第2の記憶領域30に転送する。【選択図】図3
Description
本発明は、情報処理装置、情報処理プログラム、及び情報処理方法に関する。
専用装置で実現されていたネットワーク機能を汎用の情報処理装置上のソフトウェアで実装するNFV(Network Function Virtualization)が知られている。NFVは、情報処理装置の仮想化技術を用いて複数の仮想ネットワーク機能(VNF:Virtual Network Function)を単一の情報処理装置内で動作させ、仮想スイッチ等でVNF間、外部NW(ネットワーク)とVNFとの間を接続する。なお、VNFは、例えば、情報処理装置が実行する仮想マシン(VM:Virtual Machine)内で実行される。
NFVでは、サービスチェイン等により情報処理装置、換言すればホスト内の通信が従来の仮想化環境よりも大幅に増加しており、仮想スイッチの中継性能が重要となる。しかしながら、ソフトウェアで実現される仮想スイッチは、処理遅延及び処理時間のばらつきが大きく、NFVに要求される性能を満たすことが困難な場合がある。また、ソフトウェアで実現される仮想スイッチは、パケット中継におけるプロセッサ(処理装置)の処理負荷が大きく、アプリケーションに対して提供されるプロセッサの処理リソースが浪費され得る。
このため、仮想スイッチの中継機能を通信装置(中継装置)、例えばNIC(Network Interface Card)等のハードウェアにオフロードすることが行なわれる。
NIC等のハードウェアとしては、FPGA(Field Programmable Gate Array)-NIC、又は、スマートNIC等が挙げられる。FPGA-NICは、FPGAを搭載したNICであり、仮想スイッチの中継機能をFPGAにより実現する。また、スマートNICは、プログラマブルなNICであり、仮想スイッチの中継機能をプログラムにより実現する。
通信装置は、プロセッサとI/O(Input / Output:入出力)バスを介して接続され、I/Oバス及びプロセッサを経由して、ホストメモリ(記憶装置)のVMメモリ間のデータ転送を行なうことで、VMメモリを利用して動作するVM間の通信を実現する。
仮想スイッチの中継機能を通信装置にオフロードすることで、全てのパケットが通信装置を経由することになる。例えば、通信装置による情報処理装置内でのパケットの転送は、転送元のVMメモリからのパケットの読み出し、及び、転送先のVMメモリへのパケットの書き込み、の2回に亘ってI/Oバスを経由する。
このため、パケットが所定の条件を満たす場合、通信装置による中継処理よりも、プロセッサによる中継処理の方が、例えば通信の遅延が小さいことがある。所定の条件の一例としては、情報処理装置内でのパケット転送であって、プロセッサにおけるソフトウェアによる中継処理の処理負荷が小さい場合が挙げられる。このように、仮想スイッチの中継機能をオフロードした通信装置において、データの転送性能が低下する場合がある。
1つの側面では、本発明は、複数の仮想マシン間を接続する仮想スイッチとしての中継処理を実行する中継装置における、データの転送性能の低下を抑制することを目的の1つとする。
1つの側面では、情報処理装置は、複数の仮想マシンのそれぞれに割り当てられる複数の記憶領域を有する記憶装置と、前記記憶装置に接続され、前記複数の仮想マシンを実行する処理装置と、中継装置と、転送部と、を備えてよい。前記中継装置は、前記処理装置に接続され、前記複数の仮想マシン間を接続する仮想スイッチとしての中継処理を実行してよく、前記中継処理において、前記複数の記憶領域のそれぞれが記憶する送信対象のデータの転送を行なってよい。前記転送部は、前記複数の記憶領域間のデータ転送を行なってよい。前記処理装置は、前記複数の記憶領域のうちの第1の記憶領域が記憶する送信対象のデータにおけるヘッダ情報が所定の条件を満たすか否かを判定してよい。前記転送部は、前記ヘッダ情報が前記所定の条件を満たす場合、前記送信対象のデータを、前記中継装置による前記中継処理が実行されない経路で、前記第1の記憶領域から前記送信対象のデータの宛先である第2の記憶領域に転送してよい。
1つの側面では、複数の仮想マシン間を接続する仮想スイッチとしての中継処理を実行する中継装置における、データの転送性能の低下を抑制することができる。
以下、図面を参照して本発明の実施の形態を説明する。ただし、以下に説明する実施形態は、あくまでも例示であり、以下に明示しない種々の変形や技術の適用を排除する意図はない。例えば、本実施形態を、その趣旨を逸脱しない範囲で種々変形して実施することができる。
なお、以下の説明で用いる図面において、同一符号を付した部分は、特に断らない限り、同一若しくは同様の部分を表す。
〔1〕一実施形態
〔1-1〕仮想スイッチの説明
図1は、ソフトウェア中継処理の一例を説明するための図である。図1に示すように、仮想環境のホストの一例であるサーバ100では、VM#0のメモリ121と、VM#1のメモリ122との間の通信は、プロセッサのソフトウェアによる仮想スイッチ110を経由する。
〔1-1〕仮想スイッチの説明
図1は、ソフトウェア中継処理の一例を説明するための図である。図1に示すように、仮想環境のホストの一例であるサーバ100では、VM#0のメモリ121と、VM#1のメモリ122との間の通信は、プロセッサのソフトウェアによる仮想スイッチ110を経由する。
仮想スイッチ110の中継処理では、パケット中継部115は、パケットに対して、制御部116を介して条件にマッチするフローをフローテーブル117から検索し、取得したフローのアクションをパケットに適用して転送する。一実施形態において、フローとは、パケットを識別するための条件が設定されるパケットのヘッダフィールドと、当該パケットに適用するアクション(動作)とのセット(組)を意味してよい。アクションには、指定の仮想ポート111~114から送信するフォワード(Forward)、パケットヘッダを書き換えるモディファイ(Modify)、パケットを破棄するドロップ(Drop)、等の種別が含まれてよい。
仮想スイッチ110では、中継処理の高速化のためにフローキャッシュ118が用いられる場合がある。フローキャッシュ118は、直近に入力のあったフローの情報を一時的に保持する。これにより、パケット中継部115は、制御部116を介さずに高速にフローを検索できる。フローキャッシュ118でヒットしなかったフローは、フローテーブル117での検索対象となり、取得されたフローがフローキャッシュ118に登録される。
このように、サーバ100では、プロセッサにより、VM121からVM122へのメモリコピーが実施される(図1の破線矢印参照)。
なお、通信装置130は、サーバ100の外部の装置との間のパケットの通信を、物理ポート131を介して行なう。
図1の例では、仮想スイッチ110は、パケットを受信する度に、当該パケットをどのように処理するかを、フローテーブル117及び/又はフローキャッシュ118を検索するため、プロセッサの処理負荷が増加する。
図2は、仮想スイッチオフロードによる中継処理の一例を説明するための図である。図2では、仮想スイッチ210におけるフロー検索処理及びアクション適用処理等を含む、処理負荷の高い中継処理を、仮想スイッチ210から通信装置230にオフロードするサーバ200の一例を示す。図2では、仮想スイッチ110(図1参照)におけるフローテーブル117等の管理を行なう制御部116を除く、仮想スイッチ110のパケット中継部115と仮想ポート111及び112とを、通信装置230にオフロードした例を示す。なお、後述するように、仮想スイッチ210は、通信装置230で検索できないフローのアクションを検索するために、通信装置230と接続される仮想ポート211及び212、並びに、パケット中継部213、制御部214、フローテーブル215及びフローキャッシュ216を備える。
仮想スイッチ210は、フローをフローキャッシュ216に登録する際に、フローを格納する記憶領域である転送情報格納部240に対しても当該フローを登録することにより、通信装置230でのフロー検索処理及びアクション適用処理を可能とする。これにより、通信装置230のパケット中継部235は、転送情報格納部240を参照して、転送情報格納部240に格納されたフローと同一のフローのパケット中継を行なうことができ、プロセッサ資源の浪費を抑制することができる。
以下、転送情報格納部240にフローが登録されている場合、及び、登録されていない場合における、VM221(VM#0)からVM222(VM#1)へのサーバ200内通信の一例を説明する。
(a)転送情報格納部240にフローが登録されている場合。
通信装置230は、VM221の送信キュー221aを監視し、送信キュー221aが更新された契機で送信処理を開始する。通信装置230は、転送情報格納部240に対してフローの検索(lookup)を行ない、フローのアクションに従って、VM221のバッファ221b内のパケットを、仮想ポート231、パケット中継部235、仮想ポート232を経由してVM222のバッファ222bに転送する。また、通信装置230は、VM232の受信キュー222aに送信完了を示す情報を設定する。
通信装置230は、VM221の送信キュー221aを監視し、送信キュー221aが更新された契機で送信処理を開始する。通信装置230は、転送情報格納部240に対してフローの検索(lookup)を行ない、フローのアクションに従って、VM221のバッファ221b内のパケットを、仮想ポート231、パケット中継部235、仮想ポート232を経由してVM222のバッファ222bに転送する。また、通信装置230は、VM232の受信キュー222aに送信完了を示す情報を設定する。
(b)転送情報格納部240にフローが登録されていない場合。
転送情報格納部240にフローが未登録の場合、通信装置230は、パケット中継部235から仮想ポート233を介して仮想スイッチ210にパケットを転送する。仮想スイッチ210は、仮想ポート212で受信したパケットについて、フローテーブル215から条件にマッチするフローを検索し、マッチしたフローのアクションをパケットに適用し、仮想ポート211を介して通信装置230の仮想ポート234に送信する。通信装置230は、パケット中継部235により、仮想ポート234から受信したパケットについて、仮想ポート232を経由して、宛先のVM222のバッファ222bに転送する。
転送情報格納部240にフローが未登録の場合、通信装置230は、パケット中継部235から仮想ポート233を介して仮想スイッチ210にパケットを転送する。仮想スイッチ210は、仮想ポート212で受信したパケットについて、フローテーブル215から条件にマッチするフローを検索し、マッチしたフローのアクションをパケットに適用し、仮想ポート211を介して通信装置230の仮想ポート234に送信する。通信装置230は、パケット中継部235により、仮想ポート234から受信したパケットについて、仮想ポート232を経由して、宛先のVM222のバッファ222bに転送する。
仮想ポート233及び234は、転送情報格納部240にフローが未登録の場合、換言すれば例外の場合に仮想スイッチ210にアクセスするためのポートであるため、例外(Exception)ポートと称されてもよい。
なお、仮想スイッチ210では、パケットへのアクション適用の際にパケットの宛先解決を行なうため、通信装置230は、仮想ポート234から受信したパケットの中継処理を行なう際には、転送情報格納部240に対するフローの検索をスキップできる。
また、仮想スイッチ210は、フローテーブル215から検索したフローを、フローキャッシュ216及び転送情報格納部240に登録する。これにより、通信装置230は、次回以降の同一のフローのパケットについて、上記(a)の手法によって仮想スイッチ210を介さずに転送することができる。
なお、通信装置230は、物理ポート236で受信するパケット、及び/又は、物理ポート236から転送するパケットについても、パケット中継部235により、上記(a)又は(b)に記載の手法によって転送(中継)してよい。
このように、サーバ200では、通信装置230により、VM221からVM222へのメモリコピーが実施される(図2の破線矢印参照)。図2に例示するように、パケットの中継処理を通信装置230へオフロードすることにより、全てのパケットが通信装置230を経由することになる。
なお、サーバ200では、通信装置230は、仮想スイッチ210を実行するプロセッサ(図示省略)とI/Oバスを介して接続される。このため、全てのパケットが通信装置4を経由するということは、サーバ200内の通信において、パケットがI/Oバスを2回通過することを意味する。例えば、サーバ200内の通信、且つ、特定の場合に、図1に例示するソフトウェアによる中継よりも遅延が増加することがある。
特定の場合とは、例えば、以下のうちのいずれか1つ、又は、2つ以上の組み合わせの場合が挙げられる。
・フローテーブル215に登録されているフロー数が所定数以下であり、仮想スイッチ210によるフロー検索処理が早期に終了する場合。
・パケットのヘッダフィールドにビットマスク又はワイルドカードの指定がなく、フローのハッシュ検索が可能である場合。
・ヘッダフィールドの変更処理等がなく、パケットに適用するアクションが転送のみのフローである場合。
・パケットのヘッダフィールドにビットマスク又はワイルドカードの指定がなく、フローのハッシュ検索が可能である場合。
・ヘッダフィールドの変更処理等がなく、パケットに適用するアクションが転送のみのフローである場合。
そこで、一実施形態では、複数のVM間を接続する仮想スイッチとしての中継処理を実行する通信装置における、データの転送性能の低下を抑制する手法を説明する。
図3は、一実施形態に係る手法を簡単に説明するための図である。一実施形態に係るサーバ1は、情報処理装置又はコンピュータの一例であり、図3に示すように、例示的に、プロセッサ2、ホストメモリ3、通信装置4、監視部51、コピー部52、並びに、転送情報格納部6を備えてよい。
プロセッサ2は、サーバ1における種々の制御や演算を行なう集積回路(IC;Integrated Circuit)であり、処理装置、又は、演算処理装置の一例である。一実施形態において、プロセッサ2は、ホストメモリ3に接続され、ホストメモリ3の記憶領域の少なくとも一部を利用して、複数の仮想マシン(VM)#0及び#1を実行する。
プロセッサ2は、複数のコアを備えるマルチコアプロセッサであってもよく、複数のプロセッサを備えるマルチプロセッサであってもよい。プロセッサ2としては、例えば、CPU、MPU、GPU、DSP、ASIC、及び、PLD(例えばFPGA)等の集積回路のいずれか1つ、又は、これらの2以上の組み合わせであってよい。なお、CPUはCentral Processing Unitの略称であり、MPUはMicro Processing Unitの略称である。GPUはGraphics Processing Unitの略称であり、DSPはDigital Signal Processorの略称である。ASICはApplication Specific Integrated Circuitの略称である。
ホストメモリ3は、プロセッサ2が実行するプログラム及びデータを記憶する記憶領域を備えてよい。ホストメモリ3としては、例えば、DRAM(Dynamic Random Access Memory)等の揮発性メモリが挙げられる。
第1実施形態に係るホストメモリ3は、VM用のVMメモリ30を備えてよい。図3の例では、ホストメモリ3は、VM#0用のVMメモリ#0と、VM#1用のVMメモリ#1とを備える。換言すれば、ホストメモリ3は、複数の仮想マシンのそれぞれに割り当てられる複数の記憶領域を有する記憶装置の一例である。
VMメモリ30には、VMの実行に用いられる種々の情報、例えば仮想OS(Operating System)等のプログラム、制御情報及びデータ等が格納されてよい。VMメモリ30は、例えば、ホストメモリ3の一部の記憶領域であってよく、一例として、リングバッファとしてVMに割り当てられてよい。
通信装置4は、通信を行なう装置であり、NIC、例えば、FPGA-NIC又はスマートNIC等のプログラマブルな通信デバイスの一例である。一実施形態に係る通信装置4には、仮想スイッチが実行する機能のうちの、少なくとも中継処理がオフロードされてよい。通信装置4は、中継処理において、複数のVMメモリ30のそれぞれが記憶するデータの転送を行なう。
このように、通信装置4は、プロセッサ2に接続され、複数のVM間を接続する仮想スイッチとしての中継処理を実行する中継装置の一例である。
監視部51は、複数のVMメモリ30のうちの第1のVMメモリ30が記憶する送信対象のデータにおけるヘッダ情報が所定の条件を満たすか否かを判定する。監視部51は、例えば、プロセッサ2がホストメモリ3に展開したプログラムを実行することにより実現されるソフトウェアとして実装されてもよい。
例えば、監視部51は、図3に示すように、第1のVMメモリ30の一例であるVMメモリ#0の送信バッファ31が記憶するパケットP0及びP1を監視(換言すれば、スヌープ(snoop))する(矢印(1)参照)。そして、監視部51は、監視結果に基づき、各パケットをVMメモリ30間でコピーするか否かを判定する(矢印(2)参照)。
コピー部52は、複数のVMメモリ30間のデータ転送を行なう転送部の一例である。コピー部52は、例えば、プロセッサ2がホストメモリ3に展開したプログラムを実行することにより実現されるソフトウェアとして実装されてもよい。或いは、コピー部52は、プロセッサ2を介さずにVMメモリ30間のデータコピーを行なう装置、一例としてDMA(Direct Memory Access)デバイスであってもよい。
コピー部52は、監視部51によりヘッダ情報が所定の条件を満たすと判定された場合、送信対象のデータを、通信装置4による中継処理が実行されない経路で、第1のVMメモリ30から送信対象データの宛先である第2のVMメモリ30に転送する。
例えば、監視部51は、図3に示すように、パケットP0及びP1のうちのパケットP0のヘッダ情報が所定の条件を満たすと判定した場合、パケットP0及びP1のうちのコピー対象のパケットP0の転送をコピー部52に指示する。コピー部52は、送信バッファ31が記憶するパケットP0及びP1のうちのコピー対象のパケットP0のみを、VMメモリ#0から、第2の記憶領域の一例であるVMメモリ#1における受信バッファ32にコピーする(矢印(3)参照)。
これにより、パケットP0については、通信装置4を経由しない経路で、例えばコピー部52によるメモリコピーによってVMメモリ30間で転送することができる。従って、サーバ1内通信において、特定のデータについては、プロセッサ2及び通信装置4間のI/Oバスの通過を排除することができ、サーバ1内通信の遅延を低減することができる。
なお、監視部51によるコピー判定で用いられる所定の条件としては、例えば、通信装置4による中継処理の遅延時間がソフトウェアによる中継処理の遅延時間を上回る場合、及び、フローが単純でメモリコピー処理でのプロセッサ2の負荷が小さい場合、の一方又は双方が挙げられる。一例として、所定の条件は、同一のサーバ1内の通信であって、フローのパケットヘッダ内の宛先アドレス(例えば宛先MAC(Media Access Control)アドレス)によって宛先が特定可能である場合、且つ、フローのアクションがフォワード(Forward)のみである場合が挙げられる。フローにおけるアクションでは、フォワード及びモディファイのように複数の動作を組み合わせることが可能であるが、このような動作の組み合わせによる処理は複雑である。この場合、ソフトウェアによるコピー処理よりも、通信装置4による処理の方が低遅延となる。そこで、通信装置4の方が低遅延となるパターンを除外して、ソフトウェアによるコピー処理を低遅延化するために、所定の条件として、「フローのアクションがフォワードのみである場合」を含めている。
また、一実施形態において、プロセッサ2は、例えば、通信装置4に対して、所定の条件を満たすヘッダ情報を有するデータの転送を抑制するように設定してもよい。当該設定は、例えば、通信装置4によるデータの転送に利用される転送情報格納部6に対する設定情報の設定によって行なわれてよい。設定情報には、例えば、中継処理の処理対象となるデータのヘッダ情報ごとに中継処理における通信装置4の動作が設定される。
一例として、プロセッサ2は、転送情報格納部6が記憶する設定情報に対して、所定の条件を満たすヘッダ情報に対応する動作として、ヘッダ情報に対応するデータを破棄することを設定してよい。図3の例では、プロセッサ2は、転送情報格納部6に対して、パケットP0を破棄(Drop)することを示す設定情報を設定してよい。
ここで、通信装置4は、図3に例示するように、仮想ポート41及び42、並びに、パケット中継部43を備えてよい。仮想ポート41及び42は、それぞれ、I/Oバス(図示省略)を介してプロセッサ2と接続され、プロセッサ2経由でVMメモリ30からのパケットの受信、及び、VMメモリ30へのパケットの送信を行なうインタフェースである。パケット中継部43は、仮想ポート41又は42で受信したパケットに対して、転送情報格納部6に設定された設定情報に基づくアクション(動作)を行なう。アクションには、例えば、仮想ポート42又は41へのパケットの転送、パケットヘッダの書き換え、又は、パケットの破棄等が含まれてよい。
例えば、通信装置4は、図3に示すように、仮想ポート41(仮想ポート#0)で受信したパケットP0及びP1の双方をパケット中継部43に中継する。パケット中継部43は、転送情報格納部6を参照し、パケットP0を破棄するとともに、仮想ポート42(仮想ポート#1)からパケットP1を本来の転送先であるVMメモリ#1の受信バッファ32に送信する。なお、パケットP1については、本来のアクションである転送を示す設定情報が転送情報格納部6に設定されているものとする。
以上のように、一実施形態に係るサーバ1では、例えば、監視部51が所定の条件を満たすサーバ1内通信を検出した際に、パケットの転送を、通信装置4による中継からコピー部52によるメモリコピーに切り替えることができる。
また、通信装置4は、例えば図2に示す通信装置230に対する変更等、回路への変更を抑制しつつ、図3の矢印(1)~(3)の処理によって監視部51及びコピー部52がコピーしたパケットP0が、通信装置4により重複して送信されることを抑制できる。
また、サーバ1では、VMへの処理の追加、例えば送信するパケットを識別することで転送経路の切り替えを判定するといった処理の追加が抑制される。これにより、VM上のアプリケーション(一例としてユーザアプリケーション)で使用される計算資源がサービス基盤側の処理で消費されることを抑止することができる。
〔1-2〕サーバの構成例
図4は、一実施形態に係るサーバ1の構成例を示すブロック図である。一実施形態に係るサーバ1は、図3に示すように、例示的に、仮想スイッチ20、ホストメモリ3、通信装置4、監視・コピー部5、及び、転送情報格納部6を備えてよい。なお、サーバ1は、2以上の通信装置4を備えてもよい。
図4は、一実施形態に係るサーバ1の構成例を示すブロック図である。一実施形態に係るサーバ1は、図3に示すように、例示的に、仮想スイッチ20、ホストメモリ3、通信装置4、監視・コピー部5、及び、転送情報格納部6を備えてよい。なお、サーバ1は、2以上の通信装置4を備えてもよい。
仮想スイッチ20は、例えば、プロセッサ2がホストメモリ3に展開したプログラムを実行することにより実現されるソフトウェアとして実装されてもよい。
仮想スイッチ20は、パケット中継部21、フローテーブル22、フローキャッシュ23、及び、判定部24を備えてよい。
パケット中継部21は、転送情報格納部6の検索でミスした(ヒットしなかった)パケットを通信装置4の例外ポート44から受信し、当該パケットに対する処理を行ない、当該パケットに出力ポートの情報を付与して通信装置4の例外ポート45に送信する。パケット中継部21によるパケットに対する処理は、例えば、パケット情報からフローテーブル22の検索、パケットに対する動作(Action)の適用、フローキャッシュ23へのフロー登録、及び、転送情報格納部6へのフロー登録を含んでよい。一実施形態では、パケット中継部21は、転送情報格納部6へのフロー登録前に、判定部24の処理を呼び出してよい。
フローテーブル22は、複数のフローを格納するテーブルである。フローテーブル22には、サーバ1の運用開始前に予め、サーバ1が中継し得る複数のパターンのフローの情報が格納されてよい。なお、フローとは、パケットを識別するための条件が設定されるパケットのヘッダフィールドと、当該パケットに適用するアクション(動作)とのセット(組)を意味してよい。アクションには、指定の仮想ポート41、42から送信するフォワード(Forward)、パケットヘッダを書き換えるモディファイ(Modify)、パケットを破棄するドロップ(Drop)、等の種別が含まれてよい。
フローキャッシュ23は、中継処理の高速化のために用いられるキャッシュであり、例えば、パケット中継部21から直近に入力のあったフローの情報を一時的に保持する。
判定部24は、パケット中継部21でフローキャッシュ23に登録されたフローが、所定の条件の一例であるメモリコピーの条件(コピー条件)に合致するか否かを判定する。フローがコピー条件に合致する場合、判定部24は、次回以降に送信される同一パケットについて監視・コピー部5でメモリコピーを実行できるように、監視・コピー部5にコピー条件を登録する。また、判定部24は、監視・コピー部5により処理された(メモリコピーが行なわれた)パケットを通信装置4が重複して送信しないように、転送情報格納部6に登録するフローの動作を破棄(Drop)に書き換える。
なお、仮想スイッチ20は、図2に例示する制御部214と同様の機能を備えてもよい。図4の例では、制御部214に相当する構成の図示を省略する。
VMメモリ30は、図4に示すように、パケットの送信側の記憶領域として送信バッファ31及び送信キュー33を有してよく、パケットの受信側の記憶領域として受信バッファ32、メモリコピー用受信キュー34及び受信キュー35を有してよい。
図4に示すように、VMメモリ30は、通信装置4の仮想ポートに接続されてよい。送信キュー33及び受信キュー35は、それぞれ、通信装置4の仮想ポート41及び42と対応付けられてよい。メモリコピー用受信キュー34は、監視・コピー部5によるメモリコピー用の受信キューである。
図4の例では、便宜上、VMメモリ#0が送信側として送信バッファ31及び送信キュー33を有し、VMメモリ#1が受信側として受信バッファ32、メモリコピー用受信キュー34及び受信キュー35を有するものとする。なお、VMメモリ30は、送信側及び受信側の双方の記憶領域を有してよい。
通信装置4は、例示的に、仮想ポート41及び42、パケット中継部43、例外ポート44及び45、並びに、物理ポート46を備えてよい。
仮想ポート41及び42は、プロセッサ2がVMメモリ30を用いて実行するVM#0及び#1と接続され、VMとの通信に用いられる仮想的なポートである。図3の例では、プロセッサ2が実行するVM#0と接続される仮想ポート41を仮想ポート#0と表記し、プロセッサ2が実行するVM#1と接続される仮想ポート42を仮想ポート#1と表記する。
仮想ポート41は、送信側のVM#0に関する制御を行なってよい。例えば、仮想ポート41は、VMメモリ#0の送信キュー33を監視し、利用可能インデックスと仮想ポート41が保持する利用可能インデックスとの差分を確認してよい。
利用可能インデックスは、送信バッファ31にパケットがセットされたことを示すインデックスであり、avail_idxと称されてもよい。利用可能インデックスは、各VMメモリ30、インデックス更新部53、並びに、各仮想ポート41及び42においてそれぞれ個別に管理されてよい。
そして、仮想ポート41は、当該差分に相当する数のパケットを送信バッファ31から読み込み、パケット中継部43へ出力してよい。また、仮想ポート41は、通信装置4における送信処理が完了すると、監視・コピー部5のインデックス更新部53が保持する処理済インデックスを更新(例えばインクリメント)することで、インデックス更新部53に送信処理の完了を通知してよい。
処理済インデックスは、利用可能インデックスが示すバッファが使用されたことを通知するためのインデックスであり、used_idxと称されてもよい。処理済インデックスは、送信対象のデータの格納数を示す情報の一例である。
仮想ポート42は、受信側のVM#1に関する制御を行なってよい。例えば、仮想ポート42は、VM#1宛てのパケット(データ)をパケット中継部43から取得し、宛先VM#1の受信バッファ32に書き込んでよい。そして、仮想ポート42は、受信キュー35の処理済インデックスを、受信バッファ32に書き込んだパケットの数の分だけ更新(例えばインクリメント)することで、パケットの受信を宛先VM#1に通知してよい。
例外ポート44は、パケット中継部43から仮想スイッチ20宛てに出力されたパケットを仮想スイッチ20のパケット中継部21に送信してよい。例外ポート45は、パケット中継部21から出力されたパケットを受信し、パケット中継部43に出力してよい。例外ポート44及び45は、それぞれ、例えば仮想ポートであってもよい。
物理ポート46は、サーバ1の外部に設けられる外部NW(Network)又は外部装置と通信を行なうための外部I/F(Interface)と接続される物理的なポートである。
仮想ポート41及び42、例外ポート44及び45、並びに、物理ポート46は、ポートごとに固有のポートID(PID:Port Identifier)を有してよい。PIDは、サーバ1が備える1以上の通信装置4において、仮想ポート41及び42、例外ポート44及び45、並びに、物理ポート46間で一意であってよい。例えば、PIDのうち、上位数ビットが通信装置4のIDを示し、下位数ビットが通信装置4内のポートのIDを示すように設定されることで、サーバ1が2以上の通信装置4を備える場合であっても、PIDにより、入力ポート及び出力ポートを識別することができる。
パケット中継部43は、入力される入力パケットに対して中継処理を行ない、宛先ポートに出力する。例えば、パケット中継部43は、検索部43a、動作適用部43b及びクロスバスイッチ(Crossbar Switch)43cを備えてよい。
検索部43aは、仮想ポート41及び42、並びに、物理ポート46のうちのいずれかから入力されたパケット情報を用いて転送情報格納部6の検索を実施し、検索結果である動作(Action)を、入力されたパケットともに動作適用部43bに出力してよい。なお、検索部43aは、例外ポート45から入力されたパケット情報については、転送情報格納部6の検索をスキップして、動作適用部43b又はクロスバスイッチ43cに出力してよい。
動作適用部43bは、検索部43aから入力されるパケットに対して、検索部43aから入力される動作を適用し、動作適用後のパケットをクロスバスイッチ43cに出力してよい。「動作」には、例えば、宛先ポートの決定、ヘッダ書換、及び、パケットの破棄等が含まれてよい。
クロスバスイッチ43cは、動作適用後のパケットを、指定された(宛先となる)宛先ポート、例えば仮想ポート41及び42、並びに、物理ポート46のいずれかに出力してよい。また、クロスバスイッチ43cは、転送情報格納部6で検索ミスしたパケットについて、転送情報格納部6にフローを登録するために、仮想スイッチ20のパケット中継部21に向けて、例外ポート44からパケットを送信してよい。
監視・コピー部5は、パケットの監視及びメモリコピーを実施するモジュールであり、図4に示すように、例示的に、コピー部52、インデックス(Index)更新部53、及び、スヌープ(Snoop)部54を備えてよい。
コピー部52は、スヌープ部54においてメモリコピーの条件を満たすと判定されたパケットを、送信元VMの送信バッファ31から宛先VMの受信バッファ32にコピーしてよい。また、コピー部52は、コピーしたパケット数分、メモリコピー用受信キュー34を使用済みにしてパケットの受信を宛先VMへ通知してよい。
インデックス更新部53は、送信元VMの送信キュー33を監視し、利用可能インデックスを確認してよい。例えば、インデックス更新部53は、送信キュー33の利用可能インデックスと、インデックス更新部53が保持する利用可能インデックスとの差分を取得し、新規送信の有無をチェックしてよい。
また、一実施形態では、通信装置4と監視・コピー部5とが並行して送信キュー33にアクセスしてパケットの送信処理を行なうため、インデックス更新部53は、通信装置4の送信処理の完了とメモリコピー処理の完了との待ち合わせを行ない、双方の処理が完了した位置まで送信キュー33の処理済インデックスを更新(例えばインクリメント)することで、処理の完了を送信元VMに通知してよい。
スヌープ部54は、インデックス更新部53がVMからの新規送信を検知した場合に、送信キュー33から、使用された送信バッファ31を1つずつ参照(スヌープ)し、パケットがメモリコピーの条件を満たすか否かを判定する。
このように、インデックス更新部53及びスヌープ部54は、図3に示す監視部51の一例である。
転送情報格納部6は、パケット中継部43により入力パケットからアクションを決定するために参照されるフローが格納された記憶領域であってよい。
図5及び図6は、仮想スイッチ20を実行するプロセッサ2、ホストメモリ3、及び、通信装置4の接続例を示す図である。
図5及び図6に例示するように、プロセッサ2とホストメモリ3との間は、メモリバス1aを介して相互に通信可能に接続されてよい。プロセッサ2と通信装置4との間は、I/Oバス1bを介して相互に通信可能に接続されてよい。I/Oバス1bは、入出力バスの一例である。
図5に示す第1の例では、監視・コピー部5は、プロセッサ2の一機能としてサーバ1に実装されてよい。換言すれば、プロセッサ2がコピー部52、インデックス更新部53及びスヌープ部54を含む監視・コピー部5を備えてよい。この場合、監視・コピー部5は、プロセッサ2が実行するソフトウェアとして実装されてもよいし、ハードウェア機能としてプロセッサ2に実装されてもよい。図5の例では、監視・コピー部5は、プロセッサ2(又はサーバ1)が備えるメモリコントローラ(図示省略)及びメモリバス1aを介してホストメモリ3と通信を行なってよい。また、監視・コピー部5は、プロセッサ2(又はサーバ1)が備えるI/Oバスコントローラ(図示省略)及びI/Oバス1bを介して通信装置4と通信を行なってよい。
図6に示す第2の例では、監視・コピー部5のうちのインデックス更新部53及びスヌープ部54は、プロセッサ2の一機能としてサーバ1に実装されてよい。換言すれば、プロセッサ2がインデックス更新部53及びスヌープ部54を含む監視・コピー部5を備えてよい。この場合、監視・コピー部5は、プロセッサ2が実行するソフトウェアとして実装されてもよいし、ハードウェア機能としてプロセッサ2に実装されてもよい。また、監視・コピー部5のうちのコピー部52は、プロセッサ2及び通信装置4とは独立したデバイス、例えばホストメモリ3間の転送が可能なDMAデバイスとしてサーバ1に実装されてよい。
なお、図6の例では、インデックス更新部53は、メモリコピーの完了判定処理において、コピー指示の発行数、及び、コピーの完了数をカウントしてよい。
〔1-3〕サーバの動作例
次に、図4に示すサーバ1の動作例を説明する。
次に、図4に示すサーバ1の動作例を説明する。
〔1-3-1〕初期化処理
まず、初期化処理の動作例について説明する。図7は、サーバ1における初期化処理の動作例を説明するための図である。
まず、初期化処理の動作例について説明する。図7は、サーバ1における初期化処理の動作例を説明するための図である。
図7の紙面左側に例示するように、既存の通信装置230(図2参照)では、仮想ポート231に対応する送信元VMのVMメモリ221に対して、送信キュー221aの処理済みインデックスを通信装置4が更新することで、送信元VMへ送信の完了を通知する。
一方、図7の紙面右側に例示するように、一実施形態に係るサーバ1は、監視・コピー部5によるメモリコピー処理の完了前に、通信装置4が送信元VMに送信の完了を通知すること、或いはその逆を防ぐために、双方の処理の完了待ち合わせを行なう。
完了待ち合わせを行なうために、例えば、サーバ1では、VMが通信装置4の仮想ポート41又は42と接続を確立した際に、併せて、監視・コピー部5の初期化処理を実施し、通信装置4の設定を変更してよい。
例えば、通信装置4では、通信装置4が更新する処理済インデックスのアドレスが、VMメモリ30の送信キュー33の処理済インデックスのアドレスから、監視・コピー部5のインデックス更新部53の処理済インデックスのアドレスに変更されてよい。図7の例では、インデックス更新部53の処理済インデックスを「used_idx」と表記する。
また、監視・コピー部5では、インデックス更新部53に送信元VMの送信キュー33のアドレスが設定されてよい。これにより、監視・コピー部5での待ち合わせ後、インデックス更新部53から送信元VMに送信の完了を通知できるようになる。
初期化処理は、例えば、サーバ1の管理者又は利用者により実施されてもよいし、プロセッサ2、通信装置4及び監視・コピー部5のうちの1つ以上によって実施されてもよい。
〔1-3-2〕フロー登録処理
次に、フロー登録処理の動作例について説明する。図8は、サーバ1におけるフロー登録処理の動作例を説明するための図であり、図9は、サーバ1におけるフロー登録処理の動作例を説明するためのフローチャートである。
次に、フロー登録処理の動作例について説明する。図8は、サーバ1におけるフロー登録処理の動作例を説明するための図であり、図9は、サーバ1におけるフロー登録処理の動作例を説明するためのフローチャートである。
なお、以下の説明では、通信装置4の仮想ポート41(図示省略)で受信したパケットP0のフローが、転送情報格納部6に存在しない場合を例に挙げて説明する。一例として、サーバ1の起動後(一例として初回起動後)又は設定の初期化後には、転送情報格納部6(及びフローキャッシュ23)にフローの情報が存在しない場合がある。このような場合、通信装置4は、転送情報格納部6にフローが存在しないパケット(換言すれば初めて受信する全パケット)の動作を仮想スイッチ20に問い合わせ、仮想スイッチ20及び監視・コピー部5において、パケットごとにフロー登録処理が実行される。
図8に示すように、通信装置4の例外ポート44から、転送情報格納部6にフローF0が未登録のパケットP0が仮想スイッチ20のパケット中継部21に送信される(矢印(1)参照)。パケット中継部21は、例外ポート44からパケットP0を受信する(図9のステップS1)。
パケット中継部21は、受信したパケットP0のヘッダフィールドに基づきフローテーブル22を検索し、ヘッダフィールド及び動作を含むフローF0を取得する(矢印(2)参照;図9のステップS2)。パケット中継部21は、取得したフローF0の動作をパケットP0に適用する(図9のステップS3)。
パケット中継部21は、高速処理のために、フローF0の情報をフローキャッシュ23に登録する(矢印(3)参照;図9のステップS4)。
判定部24は、フローF0をスヌープするか否かを判定する。
例えば、判定部24は、フローF0のヘッダフィールドの宛先MAC(Dst_MAC)アドレスと紐付くポートが通信装置4の仮想ポートを示すか否かを判定する(図9のステップS5)。
宛先MAC(Dst_MAC)アドレスと紐付くポートが通信装置4の仮想ポートを示す場合(図9のステップS5でYES)、判定部24は、フローF0のヘッダフィールドの入力ポート(Ingressポート)が通信装置4の仮想ポートを示すか否かを判定する(図9のステップS6)。
入力ポート(Ingressポート)が通信装置4の仮想ポートを示す場合(図9のステップS6でYES)、判定部24は、フローF0の動作がフォワード(Forward)のみを示すか否かを判定する(図9のステップS7)。
フローF0の動作がフォワードを示す場合(図9のステップS7でYES)、判定部24は、フローF0をスヌープすると判定する。
フローF0をスヌープすると判定した場合、判定部24は、スヌープ部54にフローF0を示す情報、例えばフローF0に含まれる宛先MACアドレスが登録済みか否かを判定する(図9のステップS8)。
スヌープ部54に宛先MACアドレスが登録されていなければ(図9のステップS8でNO)、スヌープ部54のスヌープリスト54aに宛先MACアドレスを登録する(矢印(4-1)参照;図9のステップS9)。図8では、判定部24は、スヌープリスト54aにフローF0の宛先MACアドレスとして“XX”を登録する例を示す。
スヌープリスト54aは、例えば、スヌープ対象のフローを識別可能な情報のリストを格納する情報であり、一例として、宛先MACアドレスのリストを格納してよい。なお、スヌープリスト54aは、宛先MACアドレスそのものを格納してもよいし、宛先MACアドレスを識別可能な情報、一例として宛先MACアドレスのハッシュ値であってもよい。
また、判定部24は、フローF0の動作をドロップ(Drop)に変更する(矢印(4-2)参照;図9のステップS10)。
判定部24は、動作を変更したフローF0を転送情報格納部6に登録し(矢印(5)参照;図9のステップS11)、処理が終了する。図8において図示を省略するが、パケット中継部21は、パケットP0を通信装置4の例外ポート45に出力してよい。
なお、図9のステップS8において、スヌープ部54に宛先MACアドレスが登録されている場合(図9のステップS8でYES)、判定部24は、ステップS9及びS10の処理をスキップして、転送情報格納部6にフローF0を登録してよい(図9のステップS11)。
また、フローF0をスヌープしないと判定した場合、判定部24は、以下のように動作してよい。
例えば、ヘッダフィールドの宛先MACアドレスと紐付くポート又は入力ポートが通信装置4の仮想ポートを示さない場合(図9のステップS5でNO又はステップS6でNO)、処理が図9のステップS11に移行する。すなわち、判定部24は、フローテーブル22から取得したフローF0を転送情報格納部6に登録してよい(図9のステップS11)。
また、フローF0の動作がフォワードを示さない場合(図9のステップS7でNO)、判定部24は、スヌープ部54に宛先MACアドレスが登録済みか否かを判定する(図9のステップS12)。スヌープ部54に宛先MACアドレスが登録されていない場合(図9のステップS12でNO)、処理が図9のステップS11に移行する。すなわち、判定部24は、フローテーブル22から取得したフローF0を転送情報格納部6に登録してよい(図9のステップS11)。
スヌープ部54に宛先MACアドレスが登録されている場合(図9のステップS12でYES)、判定部24は、スヌープ部54のスヌープリスト54aから、フローF0に対応する登録済みの宛先MACアドレスを削除する(図9のステップS13)。そして、判定部24は、通信装置4から当該フローF0を削除し(図9のステップS14)、処理が図9のステップS11に移行する。すなわち、判定部24は、フローテーブル22から取得したフローF0を転送情報格納部6に登録してよい(図9のステップS11)。
〔1-3-3〕メモリコピー処理
次に、メモリコピー処理の動作例について説明する。図10は、サーバ1におけるメモリコピー処理の動作例を説明するための図であり、図11は、サーバ1におけるメモリコピー処理の動作例を説明するためのフローチャートである。なお、メモリコピー処理は、通信装置4による転送処理と並行して実施されてよい。
次に、メモリコピー処理の動作例について説明する。図10は、サーバ1におけるメモリコピー処理の動作例を説明するための図であり、図11は、サーバ1におけるメモリコピー処理の動作例を説明するためのフローチャートである。なお、メモリコピー処理は、通信装置4による転送処理と並行して実施されてよい。
図10に示すように、送信元VMは、VMメモリ#0の送信バッファ31にパケットを書き込み(図11のステップS21)、送信キュー33の利用可能インデックス(avail_idx)を更新する(矢印(1)参照;図11のステップS22)。例えば、送信元VMは、送信バッファ31にセットしたパケットの数分、avail_idxをカウントアップしてよい。
監視・コピー部5のインデックス更新部53は、インデックス更新部53が保持するavail_idxと送信キュー33のavail_idxとの差分Diffを検出する(図11のステップS23)。
差分Diffが“0”よりも大きい場合(図11のステップS24、ステップS24でYES)、監視・コピー部5は、差分Diffの数分の回数に亘って、図10の矢印(2-1)~(2-6)の処理を繰り返し実施してよい。
スヌープ部54は、インデックス更新部53のavail_idxに基づき、送信バッファ31からパケットを1つ読み込む(矢印(2-1)参照;図11のステップS25)。このとき、スヌープ部54は、パケットのヘッダ部分を読み込んでもよい。なお、図10の例では、スヌープ部54は、パケットP0(のヘッダ部分)を読み込むものとする。
スヌープ部54は、読み込んだパケットのヘッダ部分の宛先MACのハッシュ値を算出し(図11のステップS26)、スヌープリスト54aと照合する(矢印(2-2)参照)。
算出したハッシュ値がスヌープリスト54aに登録済みである場合(図11のステップS27、ステップS27でYES)、コピー部52は、宛先MACの値に基づき、宛先MACの指すVM#1のメモリコピー用受信キュー34を特定する(図11のステップS28)。そして、コピー部52は、メモリコピー用受信キュー34のused_idxを取得し、used_idxの指す受信バッファ32のアドレスを取得する(矢印(2-3)参照;図11のステップS29)。
コピー部52は、送信バッファ31から受信バッファ32のアドレスにパケットをメモリコピーする(矢印(2-4)参照;図11のステップS30)。
コピー部52は、メモリコピー用受信キュー34のused_idxを更新、例えばインクリメントする(矢印(2-5)参照;図11のステップS31)。
インデックス更新部53は、インデックス更新部53の保持するavail_idxを更新、例えばインクリメントする(矢印(2-6)参照;図11のステップS32)。そして、処理が図11のステップS23に移行する。すなわち、監視・コピー部5は、更新後のavail_idxに基づき差分Diffを算出し、差分Diffが“0”よりも大きい場合、次のパケットについて図10の矢印(2-1)~(2-6)の処理を実施する。
例えば、スヌープ部54は、パケットP0についての処理が完了した後、次の繰り返しにおける矢印(2-1)の処理において、パケットP1(のヘッダ部分)を読み込んだものとする。この場合、パケットP1のヘッダ部分の宛先MACのハッシュ値はスヌープリスト54aに登録されていないため(図11のステップS27でNO)、処理が矢印(2-6)の処理(図11のステップS32)に移行する。すなわち、監視・コピー部5は、メモリコピーをスキップし、インデックス更新部53が、インデックス更新部53の保持するavail_idxを更新、例えばインクリメントする。
この場合、更新後のavail_idxに基づく差分Diffは“0”になる(ステップS24でNO)、換言すれば、インデックス更新部53のavail_idxと送信キュー33のavail_idxとが一致する。これにより、メモリコピー処理が終了する。
〔1-3-4〕転送処理
次に、転送処理(中継処理)の動作例について説明する。図12は、サーバ1における転送処理の動作例を説明するための図であり、図13は、サーバ1における転送処理の動作例を説明するためのフローチャートである。なお、転送処理は、監視・コピー部5によるメモリコピー処理と並行して実施されてよい。
次に、転送処理(中継処理)の動作例について説明する。図12は、サーバ1における転送処理の動作例を説明するための図であり、図13は、サーバ1における転送処理の動作例を説明するためのフローチャートである。なお、転送処理は、監視・コピー部5によるメモリコピー処理と並行して実施されてよい。
図12に示すように、送信元VMは、VMメモリ#0の送信バッファ31にパケットを書き込み(図13のステップS41)、送信キュー33の利用可能インデックス(avail_idx)を更新する(矢印(1)参照;図13のステップS42)。例えば、送信元VMは、送信バッファ31にセットしたパケットの数分、avail_idxをカウントアップしてよい。
通信装置4の仮想ポート41(仮想ポート#0)は、仮想ポート#0が保持するavail_idxと送信キュー33のavail_idxとの差分Diffを検出する(図13のステップS43)。
仮想ポート#0は、差分Diffの数分、送信バッファ31からパケットP0及びP1を読み込み(矢印(2)参照;図13のステップS44)、メタデータを付加してパケット中継部43へ出力する。そして、仮想ポート#0は、読み込んだパケット数分、仮想ポート#0のavail_idxを更新、例えばインクリメントする(矢印(3)参照;図13のステップS45)。メタデータには、例示的に、in-port(入力仮想ポート:図12の例では仮想ポート#0)のPID、送信バッファ31のアドレス、送信バッファ31内の送信パケットのパケットサイズ等の情報が含まれてよい。
通信装置4は、読み込んだパケット数分の回数に亘って、図12の矢印(4)~(6-2)の処理を繰り返し実施してよい。図13では、便宜上、通信装置4が変数Xに“1”をセットし(ステップS46)、変数Xが読み込んだパケット数以下である場合に(ステップS47、ステップS47でNO)、図12の矢印(4)~(6-2)の処理を実施するものとして説明する。
矢印(4)の処理において、検索部43aは、入力されるパケットのうちの1つを選択し、パケットに基づき転送情報格納部6を検索する(図13のステップS48)。動作適用部43bは、検索結果に基づきパケットに動作を適用する(図13のステップS49)。
図12の例では、検索部43aは、パケットのヘッダ部分に基づき、転送情報格納部6が格納する転送情報6aのヘッダフィールド(Header filed)とマッチするエントリの動作(Action)を取得してよい。転送情報6aは、通信装置4の処理対象となるデータのヘッダ情報ごとに通信装置4における通信装置4の動作が設定される設定情報の一例である。例えば、検索部43aは、パケットP0の動作として破棄(Drop)を取得し、パケットP1の動作として、送信元MACアドレスを修正し仮想ポート#1から出力する動作を取得する。
クロスバスイッチ43cは、適用された動作に応じてパケットを宛先ポートに振り分ける(図13のステップS50)。例えば、クロスバスイッチ43cは、パケットP0について、適用された動作に従いパケットP0を破棄する(矢印(5-1)参照)。また、クロスバスイッチ43cは、パケットP1について、適用された動作に従いパケットP1を仮想ポート#1に出力する(矢印(5-2)参照)。
仮想ポート#1は、パケットP1を受信すると、対応する宛先VMのVMメモリ#1の受信キュー35のused_idxを取得する(図13のステップS51)。また、仮想ポート#1は、used_idxに基づき受信バッファ32のアドレスを取得し、当該アドレスにメタデータを除外したパケットP1を書き込む(矢印(6-1)参照;図13のステップS52)。
また、仮想ポート#1は、受信キュー35のused_idxを更新、例えばインクリメントする(矢印(6-2)参照;図13のステップS53)。
通信装置4は、変数Xをインクリメントし(ステップS54)、処理がステップS47に移行する。
変数Xが読み込んだパケット数を超える場合(ステップS47でYES)、仮想ポート#0は、インデックス更新部53のused_idxを、読み込んだパケット数分更新、例えばインクリメントし(矢印(7)参照;図13のステップS55)、処理が終了する。
これにより、監視・コピー部5でのメモリコピーが完了するまで、送信元VMがVMメモリ#0の送信バッファ31を解放しないように、インデックス更新部53による待ち合わせを実行させることができる。
なお、上述した通信装置4によるパケットの転送処理は、例えば、矢印(7)の処理(図13のステップS55)において、送信の完了をインデックス更新部53に通知する点を除き、図2に例示する通信装置230と同様の手法で実行されてもよい。
〔1-3-5〕待ち合わせ処理
次に、待ち合わせ処理の動作例について説明する。図14は、サーバ1における待ち合わせ処理の動作例を説明するための図であり、図15は、サーバ1における待ち合わせ処理の動作例を説明するためのフローチャートである。なお、待ち合わせ処理は、メモリコピー処理及び転送処理の完了後のタイミング、その後の定期的なタイミング、並びに、メモリコピー処理及び転送処理とは別契機のタイミング、等の種々のタイミングで実行されてよい。
次に、待ち合わせ処理の動作例について説明する。図14は、サーバ1における待ち合わせ処理の動作例を説明するための図であり、図15は、サーバ1における待ち合わせ処理の動作例を説明するためのフローチャートである。なお、待ち合わせ処理は、メモリコピー処理及び転送処理の完了後のタイミング、その後の定期的なタイミング、並びに、メモリコピー処理及び転送処理とは別契機のタイミング、等の種々のタイミングで実行されてよい。
図10の矢印(2-6)に例示するように、インデックス更新部53のavail_idxの値は、処理の完了したパケットのパケット数(完了数)を示す。
図12の矢印(7)に例示するように、インデックス更新部53のused_idxの値は、通信装置4による転送処理が完了したパケット数(完了数)を示す。
そこで、インデックス更新部53は、avail_idx及びused_idxのうちの最小値(いずれか小さい方の値)を取得することで、通信装置4及び監視・コピー部5の双方の処理が完了したパケットの個数を取得することができる。
このため、インデックス更新部53は、通信装置4及び監視・コピー部5の処理完了の待ち合わせを行ない、待ち合わせの完了後に、送信元VMのVMメモリ30に対して完了を通知できる。
例えば、インデックス更新部53は、インデックス更新部53が保持するavail_idxとused_idxとの最小値を取得する(図15のステップS61;図14の矢印(1)参照)。
インデックス更新部53は、最小値になるまで、送信VM#0の送信キュー33のused_idxを更新、例えばインクリメントし(図15のステップS62;図14の矢印(2)参照)、処理が終了する。
以上のように、インデックス更新部53は、所定の条件を満たすヘッダ情報を有する処理対象となるデータに対する、コピー部52による転送の完了と、通信装置4による破棄の完了とを検出した場合、第1のVMメモリ30に送信完了を示す情報を設定する。
〔2〕ハードウェア構成例
図16は、サーバ1の機能を実現するコンピュータ10のハードウェア(HW)構成例を示すブロック図である。サーバ1の機能を実現するHWリソースとして、複数のコンピュータが用いられる場合は、各コンピュータが図16に例示するHW構成を備えてよい。
図16は、サーバ1の機能を実現するコンピュータ10のハードウェア(HW)構成例を示すブロック図である。サーバ1の機能を実現するHWリソースとして、複数のコンピュータが用いられる場合は、各コンピュータが図16に例示するHW構成を備えてよい。
図16に示すように、コンピュータ10は、HW構成として、例示的に、プロセッサ10a、メモリ10b、記憶部10c、I/F部10d、I/O部10e、及び読取部10fを備えてよい。
プロセッサ10aは、種々の制御や演算を行なう演算処理装置の一例である。プロセッサ10aは、コンピュータ10内の各ブロックとバス10iで相互に通信可能に接続されてよい。なお、プロセッサ10aは、複数のプロセッサを含むマルチプロセッサであってもよいし、複数のプロセッサコアを有するマルチコアプロセッサであってもよく、或いは、マルチコアプロセッサを複数有する構成であってもよい。図3、図5及び図6等に示すプロセッサ2は、プロセッサ10aの一例である。
メモリ10bは、種々のデータやプログラム等の情報を格納するHWの一例である。メモリ10bとしては、例えばDRAM等の揮発性メモリ、及び、PM(Persistent Memory)等の不揮発性メモリ、の一方又は双方が挙げられる。図3~図6等に示すホストメモリ3は、メモリ10bの一例である。
記憶部10cは、種々のデータやプログラム等の情報を格納するHWの一例である。記憶部10cとしては、HDD(Hard Disk Drive)等の磁気ディスク装置、SSD(Solid State Drive)等の半導体ドライブ装置、不揮発性メモリ等の各種記憶装置が挙げられる。不揮発性メモリとしては、例えば、フラッシュメモリ、SCM(Storage Class Memory)、ROM(Read Only Memory)等が挙げられる。
また、記憶部10cは、コンピュータ10の各種機能の全部若しくは一部を実現するプログラム10g-1を格納してよい。例えば、サーバ1のプロセッサ10aは、記憶部10cに格納されたプログラム10g-1をメモリ10bに展開して実行することにより、図3~図5等に例示する仮想スイッチ20及び監視・コピー部5(監視部51及びコピー部52)、図6に例示する仮想スイッチ20及び監視部51、並びに、図3及び図4等に例示する各VMメモリ30に配置されるVM、としての機能を実現できる。
なお、図4等に例示するフローテーブル22及びフローキャッシュ23、並びに、図3及び図4等に例示する転送情報格納部6は、それぞれ、メモリ10b及び記憶部10cの一方又は双方が有する記憶領域の少なくとも一部により実現されてもよい。
I/F部10dは、ネットワークとの間の接続及び通信の制御等を行なう通信IFの一例である。例えば、I/F部10dは、イーサネット(登録商標)等のLAN(Local Area Network)、或いは、FC(Fibre Channel)等の光通信等に準拠したアダプタを含んでよく、NIC等の通信装置であってよい。当該アダプタは、無線及び有線の一方又は双方の通信方式に対応してよい。例えば、サーバ1は、I/F部10dを介して、外部NW(Network)又は外部I/Fと相互に通信可能に接続されてよい。
図3~図6等に示す通信装置4、並びに、図6に示すコピー部52のそれぞれは、I/F部10dの一例である。例えば、I/F部10dは、プログラマブルな論理回路、例えばFPGA、及び、記憶領域等を含んでよく、図16に示すように、記憶領域にはプログラム10g-2が格納されてもよい。
I/F部10dは、記憶領域に格納されたプログラム10g-2を例えばFPGA等により実行することで、通信装置4としての機能を実現できる。また、他のI/F部10dは、記憶領域に格納されたプログラム10g-2を例えばFPGA等により実行することで、コピー部52としての機能を実現できる。なお、コピー部52は、I/F部10dを介してサーバ1に接続されるI/Oデバイスであってもよい。
例えば、プログラム10g-1及び10g-2は、I/F部10dを介して、ネットワークからコンピュータ10にダウンロードされ、記憶部10c及びI/F部10dの記憶領域にそれぞれ格納されてもよい。
一実施形態に係るサーバ1の機能は、これらのプログラム10g-1及び10g-2の少なくとも一部により実現されてよい。このため、プログラム10g-1及び10g-2の少なくとも一部は、情報処理プログラムの一例である。
I/O部10eは、入力装置、及び、出力装置、の一方又は双方を含んでよい。入力装置としては、例えば、キーボード、マウス、タッチパネル等が挙げられる。出力装置としては、例えば、モニタ、プロジェクタ、プリンタ等が挙げられる。
読取部10fは、記録媒体10hに記録されたデータやプログラムの情報を読み出すリーダの一例である。読取部10fは、記録媒体10hを接続可能又は挿入可能な接続端子又は装置を含んでよい。読取部10fとしては、例えば、USB(Universal Serial Bus)等に準拠したアダプタ、記録ディスクへのアクセスを行なうドライブ装置、SDカード等のフラッシュメモリへのアクセスを行なうカードリーダ等が挙げられる。なお、記録媒体10hにはプログラム10g-1及び10g-2が格納されてもよく、読取部10fが記録媒体10hからプログラム10g-1及び10g-2を読み出して、記憶部10c及びI/F部10dに格納してもよい。
記録媒体10hとしては、例示的に、磁気/光ディスクやフラッシュメモリ等の非一時的なコンピュータ読取可能な記録媒体が挙げられる。磁気/光ディスクとしては、例示的に、フレキシブルディスク、CD(Compact Disc)、DVD(Digital Versatile Disc)、ブルーレイディスク、HVD(Holographic Versatile Disc)等が挙げられる。フラッシュメモリとしては、例示的に、USBメモリやSDカード等の半導体メモリが挙げられる。
上述したコンピュータ10のHW構成は例示である。従って、コンピュータ10内でのHWの増減(例えば任意のブロックの追加や削除)、分割、任意の組み合わせでの統合、又は、バスの追加若しくは削除等は適宜行なわれてもよい。例えば、サーバ1において、I/O部10e及び読取部10fの少なくとも一方は、省略されてもよい。
〔3〕その他
上述した一実施形態に係る技術は、以下のように変形、変更して実施することができる。
上述した一実施形態に係る技術は、以下のように変形、変更して実施することができる。
例えば、図3~図8、図10、図12及び図14に示すサーバ1が備える各ブロックは、任意の組み合わせで併合してもよく、それぞれ分割してもよい。
また、一実施形態では、サーバ1が1つの通信装置4を備える場合を例に挙げたが、これに限定されるものではなく、PIDにより通信装置4単位で入出力ポートを識別可能であるため、サーバ1は、複数の通信装置4を備えてもよい。
〔4〕付記
以上の一実施形態に関し、さらに以下の付記を開示する。
以上の一実施形態に関し、さらに以下の付記を開示する。
(付記1)
複数の仮想マシンのそれぞれに割り当てられる複数の記憶領域を有する記憶装置と、
前記記憶装置に接続され、前記複数の仮想マシンを実行する処理装置と、
前記処理装置に接続され、前記複数の仮想マシン間を接続する仮想スイッチとしての中継処理を実行する中継装置と、
前記複数の記憶領域間のデータ転送を行なう転送部と、を備え、
前記中継装置は、前記中継処理において、前記複数の記憶領域のそれぞれが記憶する送信対象のデータの転送を行ない、
前記処理装置は、前記複数の記憶領域のうちの第1の記憶領域が記憶する送信対象のデータにおけるヘッダ情報が所定の条件を満たすか否かを判定し、
前記転送部は、前記ヘッダ情報が前記所定の条件を満たす場合、前記送信対象のデータを、前記中継装置による前記中継処理が実行されない経路で、前記第1の記憶領域から前記送信対象のデータの宛先である第2の記憶領域に転送する、
情報処理装置。
複数の仮想マシンのそれぞれに割り当てられる複数の記憶領域を有する記憶装置と、
前記記憶装置に接続され、前記複数の仮想マシンを実行する処理装置と、
前記処理装置に接続され、前記複数の仮想マシン間を接続する仮想スイッチとしての中継処理を実行する中継装置と、
前記複数の記憶領域間のデータ転送を行なう転送部と、を備え、
前記中継装置は、前記中継処理において、前記複数の記憶領域のそれぞれが記憶する送信対象のデータの転送を行ない、
前記処理装置は、前記複数の記憶領域のうちの第1の記憶領域が記憶する送信対象のデータにおけるヘッダ情報が所定の条件を満たすか否かを判定し、
前記転送部は、前記ヘッダ情報が前記所定の条件を満たす場合、前記送信対象のデータを、前記中継装置による前記中継処理が実行されない経路で、前記第1の記憶領域から前記送信対象のデータの宛先である第2の記憶領域に転送する、
情報処理装置。
(付記2)
前記処理装置は、前記中継装置に対して、前記所定の条件を満たすヘッダ情報を有するデータの転送を抑制するように設定する、
付記1に記載の情報処理装置。
前記処理装置は、前記中継装置に対して、前記所定の条件を満たすヘッダ情報を有するデータの転送を抑制するように設定する、
付記1に記載の情報処理装置。
(付記3)
前記中継装置は、前記中継処理の処理対象となるデータのヘッダ情報ごとに前記中継処理における前記中継装置の動作が設定される設定情報に基づき、前記複数の記憶領域のそれぞれが記憶するデータに対する転送を行ない、
前記処理装置は、
前記中継処理の処理対象となるデータのヘッダ情報のうちの、前記所定の条件を満たすヘッダ情報を管理し、
前記所定の条件を満たすヘッダ情報に対応する動作として、前記ヘッダ情報に対応するデータを破棄することを前記設定情報に設定する、
付記2に記載の情報処理装置。
前記中継装置は、前記中継処理の処理対象となるデータのヘッダ情報ごとに前記中継処理における前記中継装置の動作が設定される設定情報に基づき、前記複数の記憶領域のそれぞれが記憶するデータに対する転送を行ない、
前記処理装置は、
前記中継処理の処理対象となるデータのヘッダ情報のうちの、前記所定の条件を満たすヘッダ情報を管理し、
前記所定の条件を満たすヘッダ情報に対応する動作として、前記ヘッダ情報に対応するデータを破棄することを前記設定情報に設定する、
付記2に記載の情報処理装置。
(付記4)
前記処理装置は、前記所定の条件を満たすヘッダ情報を有する前記処理対象となるデータに対する、前記転送部による前記転送の完了と、前記中継装置による前記破棄の完了とを検出した場合、前記第1の記憶領域に送信完了を示す情報を設定する、
付記3に記載の情報処理装置。
前記処理装置は、前記所定の条件を満たすヘッダ情報を有する前記処理対象となるデータに対する、前記転送部による前記転送の完了と、前記中継装置による前記破棄の完了とを検出した場合、前記第1の記憶領域に送信完了を示す情報を設定する、
付記3に記載の情報処理装置。
(付記5)
前記所定の条件は、前記データの宛先が前記情報処理装置内であること、且つ、前記中継装置における前記データに対する動作が転送のみであること、を含む、
付記3又は付記4に記載の情報処理装置。
前記所定の条件は、前記データの宛先が前記情報処理装置内であること、且つ、前記中継装置における前記データに対する動作が転送のみであること、を含む、
付記3又は付記4に記載の情報処理装置。
(付記6)
前記処理装置は、前記ヘッダ情報が示す前記データの宛先アドレスに紐付くポートが前記中継装置の仮想ポートを示し、且つ、前記ヘッダ情報が示す前記データの入力ポートが前記中継装置の仮想ポートを示す場合、前記データの宛先が前記情報処理装置内であると判定する、
付記5に記載の情報処理装置。
前記処理装置は、前記ヘッダ情報が示す前記データの宛先アドレスに紐付くポートが前記中継装置の仮想ポートを示し、且つ、前記ヘッダ情報が示す前記データの入力ポートが前記中継装置の仮想ポートを示す場合、前記データの宛先が前記情報処理装置内であると判定する、
付記5に記載の情報処理装置。
(付記7)
前記転送部は、前記処理装置に備えられる、
付記1~付記6のいずれか1項に記載の情報処理装置。
前記転送部は、前記処理装置に備えられる、
付記1~付記6のいずれか1項に記載の情報処理装置。
(付記8)
前記転送部は、前記記憶装置に対してDMA(Direct Memory Access)を行なうDMAデバイスである、
付記1~付記6のいずれか1項に記載の情報処理装置。
前記転送部は、前記記憶装置に対してDMA(Direct Memory Access)を行なうDMAデバイスである、
付記1~付記6のいずれか1項に記載の情報処理装置。
(付記9)
複数の仮想マシンのそれぞれに割り当てられる複数の記憶領域を有する記憶装置と、
前記記憶装置に接続され、前記複数の仮想マシンを実行する処理装置と、
前記処理装置に接続され、前記複数の仮想マシン間を接続する仮想スイッチとしての中継処理を実行し、前記中継処理において、前記複数の記憶領域のそれぞれが記憶する送信対象のデータの転送を行なう中継装置と、
前記複数の記憶領域間のデータ転送を行なう転送部と、を備えるコンピュータに、
前記複数の記憶領域のうちの第1の記憶領域が記憶する送信対象のデータにおけるヘッダ情報が所定の条件を満たすか否かを判定し、
前記ヘッダ情報が前記所定の条件を満たす場合、前記転送部により、前記送信対象のデータを、前記中継装置による前記中継処理が実行されない経路で、前記第1の記憶領域から前記送信対象のデータの宛先である第2の記憶領域に転送する、
処理を実行させる情報処理プログラム。
複数の仮想マシンのそれぞれに割り当てられる複数の記憶領域を有する記憶装置と、
前記記憶装置に接続され、前記複数の仮想マシンを実行する処理装置と、
前記処理装置に接続され、前記複数の仮想マシン間を接続する仮想スイッチとしての中継処理を実行し、前記中継処理において、前記複数の記憶領域のそれぞれが記憶する送信対象のデータの転送を行なう中継装置と、
前記複数の記憶領域間のデータ転送を行なう転送部と、を備えるコンピュータに、
前記複数の記憶領域のうちの第1の記憶領域が記憶する送信対象のデータにおけるヘッダ情報が所定の条件を満たすか否かを判定し、
前記ヘッダ情報が前記所定の条件を満たす場合、前記転送部により、前記送信対象のデータを、前記中継装置による前記中継処理が実行されない経路で、前記第1の記憶領域から前記送信対象のデータの宛先である第2の記憶領域に転送する、
処理を実行させる情報処理プログラム。
(付記10)
前記コンピュータに、前記中継装置に対して、前記所定の条件を満たすヘッダ情報を有するデータの転送を抑制するように設定する、
処理を実行させる、付記9に記載の情報処理プログラム。
前記コンピュータに、前記中継装置に対して、前記所定の条件を満たすヘッダ情報を有するデータの転送を抑制するように設定する、
処理を実行させる、付記9に記載の情報処理プログラム。
(付記11)
前記中継装置は、前記中継処理の処理対象となるデータのヘッダ情報ごとに前記中継処理における前記中継装置の動作が設定される設定情報に基づき、前記複数の記憶領域のそれぞれが記憶するデータに対する転送を行ない、
前記コンピュータに、
前記中継処理の処理対象となるデータのヘッダ情報のうちの、前記所定の条件を満たすヘッダ情報を管理し、
前記所定の条件を満たすヘッダ情報に対応する動作として、前記ヘッダ情報に対応するデータを破棄することを前記設定情報に設定する、
処理を実行させる、付記10に記載の情報処理プログラム。
前記中継装置は、前記中継処理の処理対象となるデータのヘッダ情報ごとに前記中継処理における前記中継装置の動作が設定される設定情報に基づき、前記複数の記憶領域のそれぞれが記憶するデータに対する転送を行ない、
前記コンピュータに、
前記中継処理の処理対象となるデータのヘッダ情報のうちの、前記所定の条件を満たすヘッダ情報を管理し、
前記所定の条件を満たすヘッダ情報に対応する動作として、前記ヘッダ情報に対応するデータを破棄することを前記設定情報に設定する、
処理を実行させる、付記10に記載の情報処理プログラム。
(付記12)
前記コンピュータに、前記所定の条件を満たすヘッダ情報を有する前記処理対象となるデータに対する、前記転送部による前記転送の完了と、前記中継装置による前記破棄の完了とを検出した場合、前記第1の記憶領域に送信完了を示す情報を設定する、
処理を実行させる、付記11に記載の情報処理プログラム。
前記コンピュータに、前記所定の条件を満たすヘッダ情報を有する前記処理対象となるデータに対する、前記転送部による前記転送の完了と、前記中継装置による前記破棄の完了とを検出した場合、前記第1の記憶領域に送信完了を示す情報を設定する、
処理を実行させる、付記11に記載の情報処理プログラム。
(付記13)
前記所定の条件は、前記データの宛先が前記情報処理装置内であること、且つ、前記中継装置における前記データに対する動作が転送のみであること、を含む、
付記11又は付記12に記載の情報処理プログラム。
前記所定の条件は、前記データの宛先が前記情報処理装置内であること、且つ、前記中継装置における前記データに対する動作が転送のみであること、を含む、
付記11又は付記12に記載の情報処理プログラム。
(付記14)
前記コンピュータに、前記ヘッダ情報が示す前記データの宛先アドレスに紐付くポートが前記中継装置の仮想ポートを示し、且つ、前記ヘッダ情報が示す前記データの入力ポートが前記中継装置の仮想ポートを示す場合、前記データの宛先が前記情報処理装置内であると判定する、
処理を実行させる、付記13に記載の情報処理プログラム。
前記コンピュータに、前記ヘッダ情報が示す前記データの宛先アドレスに紐付くポートが前記中継装置の仮想ポートを示し、且つ、前記ヘッダ情報が示す前記データの入力ポートが前記中継装置の仮想ポートを示す場合、前記データの宛先が前記情報処理装置内であると判定する、
処理を実行させる、付記13に記載の情報処理プログラム。
(付記15)
複数の仮想マシンのそれぞれに割り当てられる複数の記憶領域を有する記憶装置と、
前記記憶装置に接続され、前記複数の仮想マシンを実行する処理装置と、
前記処理装置に接続され、前記複数の仮想マシン間を接続する仮想スイッチとしての中継処理を実行し、前記中継処理において、前記複数の記憶領域のそれぞれが記憶する送信対象のデータの転送を行なう中継装置と、
前記複数の記憶領域間のデータ転送を行なう転送部と、を備えるコンピュータが、
前記複数の記憶領域のうちの第1の記憶領域が記憶する送信対象のデータにおけるヘッダ情報が所定の条件を満たすか否かを判定し、
前記ヘッダ情報が前記所定の条件を満たす場合、前記転送部により、前記送信対象のデータを、前記中継装置による前記中継処理が実行されない経路で、前記第1の記憶領域から前記送信対象のデータの宛先である第2の記憶領域に転送する、
処理を実行する情報処理方法。
複数の仮想マシンのそれぞれに割り当てられる複数の記憶領域を有する記憶装置と、
前記記憶装置に接続され、前記複数の仮想マシンを実行する処理装置と、
前記処理装置に接続され、前記複数の仮想マシン間を接続する仮想スイッチとしての中継処理を実行し、前記中継処理において、前記複数の記憶領域のそれぞれが記憶する送信対象のデータの転送を行なう中継装置と、
前記複数の記憶領域間のデータ転送を行なう転送部と、を備えるコンピュータが、
前記複数の記憶領域のうちの第1の記憶領域が記憶する送信対象のデータにおけるヘッダ情報が所定の条件を満たすか否かを判定し、
前記ヘッダ情報が前記所定の条件を満たす場合、前記転送部により、前記送信対象のデータを、前記中継装置による前記中継処理が実行されない経路で、前記第1の記憶領域から前記送信対象のデータの宛先である第2の記憶領域に転送する、
処理を実行する情報処理方法。
(付記16)
前記コンピュータが、前記中継装置に対して、前記所定の条件を満たすヘッダ情報を有するデータの転送を抑制するように設定する、
処理を実行する、付記15に記載の情報処理方法。
前記コンピュータが、前記中継装置に対して、前記所定の条件を満たすヘッダ情報を有するデータの転送を抑制するように設定する、
処理を実行する、付記15に記載の情報処理方法。
(付記17)
前記中継装置は、前記中継処理の処理対象となるデータのヘッダ情報ごとに前記中継処理における前記中継装置の動作が設定される設定情報に基づき、前記複数の記憶領域のそれぞれが記憶するデータに対する転送を行ない、
前記コンピュータが、
前記中継処理の処理対象となるデータのヘッダ情報のうちの、前記所定の条件を満たすヘッダ情報を管理し、
前記所定の条件を満たすヘッダ情報に対応する動作として、前記ヘッダ情報に対応するデータを破棄することを前記設定情報に設定する、
処理を実行する、付記16に記載の情報処理方法。
前記中継装置は、前記中継処理の処理対象となるデータのヘッダ情報ごとに前記中継処理における前記中継装置の動作が設定される設定情報に基づき、前記複数の記憶領域のそれぞれが記憶するデータに対する転送を行ない、
前記コンピュータが、
前記中継処理の処理対象となるデータのヘッダ情報のうちの、前記所定の条件を満たすヘッダ情報を管理し、
前記所定の条件を満たすヘッダ情報に対応する動作として、前記ヘッダ情報に対応するデータを破棄することを前記設定情報に設定する、
処理を実行する、付記16に記載の情報処理方法。
(付記18)
前記コンピュータが、前記所定の条件を満たすヘッダ情報を有する前記処理対象となるデータに対する、前記転送部による前記転送の完了と、前記中継装置による前記破棄の完了とを検出した場合、前記第1の記憶領域に送信完了を示す情報を設定する、
処理を実行する、付記17に記載の情報処理方法。
前記コンピュータが、前記所定の条件を満たすヘッダ情報を有する前記処理対象となるデータに対する、前記転送部による前記転送の完了と、前記中継装置による前記破棄の完了とを検出した場合、前記第1の記憶領域に送信完了を示す情報を設定する、
処理を実行する、付記17に記載の情報処理方法。
(付記19)
前記所定の条件は、前記データの宛先が前記情報処理装置内であること、且つ、前記中継装置における前記データに対する動作が転送のみであること、を含む、
付記17又は付記18に記載の情報処理方法。
前記所定の条件は、前記データの宛先が前記情報処理装置内であること、且つ、前記中継装置における前記データに対する動作が転送のみであること、を含む、
付記17又は付記18に記載の情報処理方法。
(付記20)
前記コンピュータが、前記ヘッダ情報が示す前記データの宛先アドレスに紐付くポートが前記中継装置の仮想ポートを示し、且つ、前記ヘッダ情報が示す前記データの入力ポートが前記中継装置の仮想ポートを示す場合、前記データの宛先が前記情報処理装置内であると判定する、
処理を実行する、付記19に記載の情報処理方法。
前記コンピュータが、前記ヘッダ情報が示す前記データの宛先アドレスに紐付くポートが前記中継装置の仮想ポートを示し、且つ、前記ヘッダ情報が示す前記データの入力ポートが前記中継装置の仮想ポートを示す場合、前記データの宛先が前記情報処理装置内であると判定する、
処理を実行する、付記19に記載の情報処理方法。
1 サーバ
1a メモリバス
1b I/Oバス
2 プロセッサ
20 仮想スイッチ
21、43 パケット中継部
22 フローテーブル
23 フローキャッシュ
24 判定部
3 ホストメモリ
30 VMメモリ
31 送信バッファ
32 受信バッファ
33 送信キュー
34 メモリコピー用受信キュー
35 受信キュー
4 通信装置
41、42 仮想ポート
43a 検索部
43b 動作適用部
43c クロスバスイッチ
44、45 例外ポート
46 物理ポート
5 監視・コピー部
51 監視部
52 コピー部
53 インデックス更新部
54 スヌープ部
54a スヌープリスト
6 転送情報格納部
6a 転送情報
1a メモリバス
1b I/Oバス
2 プロセッサ
20 仮想スイッチ
21、43 パケット中継部
22 フローテーブル
23 フローキャッシュ
24 判定部
3 ホストメモリ
30 VMメモリ
31 送信バッファ
32 受信バッファ
33 送信キュー
34 メモリコピー用受信キュー
35 受信キュー
4 通信装置
41、42 仮想ポート
43a 検索部
43b 動作適用部
43c クロスバスイッチ
44、45 例外ポート
46 物理ポート
5 監視・コピー部
51 監視部
52 コピー部
53 インデックス更新部
54 スヌープ部
54a スヌープリスト
6 転送情報格納部
6a 転送情報
Claims (8)
- 複数の仮想マシンのそれぞれに割り当てられる複数の記憶領域を有する記憶装置と、
前記記憶装置に接続され、前記複数の仮想マシンを実行する処理装置と、
前記処理装置に接続され、前記複数の仮想マシン間を接続する仮想スイッチとしての中継処理を実行する中継装置と、
前記複数の記憶領域間のデータ転送を行なう転送部と、を備え、
前記中継装置は、前記中継処理において、前記複数の記憶領域のそれぞれが記憶する送信対象のデータの転送を行ない、
前記処理装置は、前記複数の記憶領域のうちの第1の記憶領域が記憶する送信対象のデータにおけるヘッダ情報が所定の条件を満たすか否かを判定し、
前記転送部は、前記ヘッダ情報が前記所定の条件を満たす場合、前記送信対象のデータを、前記中継装置による前記中継処理が実行されない経路で、前記第1の記憶領域から前記送信対象のデータの宛先である第2の記憶領域に転送する、
情報処理装置。 - 前記処理装置は、前記中継装置に対して、前記所定の条件を満たすヘッダ情報を有するデータの転送を抑制するように設定する、
請求項1に記載の情報処理装置。 - 前記中継装置は、前記中継処理の処理対象となるデータのヘッダ情報ごとに前記中継処理における前記中継装置の動作が設定される設定情報に基づき、前記複数の記憶領域のそれぞれが記憶するデータに対する転送を行ない、
前記処理装置は、
前記中継処理の処理対象となるデータのヘッダ情報のうちの、前記所定の条件を満たすヘッダ情報を管理し、
前記所定の条件を満たすヘッダ情報に対応する動作として、前記ヘッダ情報に対応するデータを破棄することを前記設定情報に設定する、
請求項2に記載の情報処理装置。 - 前記処理装置は、前記所定の条件を満たすヘッダ情報を有する前記処理対象となるデータに対する、前記転送部による前記転送の完了と、前記中継装置による前記破棄の完了とを検出した場合、前記第1の記憶領域に送信完了を示す情報を設定する、
請求項3に記載の情報処理装置。 - 前記所定の条件は、前記データの宛先が前記情報処理装置内であること、且つ、前記中継装置における前記データに対する動作が転送のみであること、を含む、
請求項3又は請求項4に記載の情報処理装置。 - 前記処理装置は、前記ヘッダ情報が示す前記データの宛先アドレスに紐付くポートが前記中継装置の仮想ポートを示し、且つ、前記ヘッダ情報が示す前記データの入力ポートが前記中継装置の仮想ポートを示す場合、前記データの宛先が前記情報処理装置内であると判定する、
請求項5に記載の情報処理装置。 - 複数の仮想マシンのそれぞれに割り当てられる複数の記憶領域を有する記憶装置と、
前記記憶装置に接続され、前記複数の仮想マシンを実行する処理装置と、
前記処理装置に接続され、前記複数の仮想マシン間を接続する仮想スイッチとしての中継処理を実行し、前記中継処理において、前記複数の記憶領域のそれぞれが記憶する送信対象のデータの転送を行なう中継装置と、
前記複数の記憶領域間のデータ転送を行なう転送部と、を備えるコンピュータに、
前記複数の記憶領域のうちの第1の記憶領域が記憶する送信対象のデータにおけるヘッダ情報が所定の条件を満たすか否かを判定し、
前記ヘッダ情報が前記所定の条件を満たす場合、前記転送部により、前記送信対象のデータを、前記中継装置による前記中継処理が実行されない経路で、前記第1の記憶領域から前記送信対象のデータの宛先である第2の記憶領域に転送する、
処理を実行させる情報処理プログラム。 - 複数の仮想マシンのそれぞれに割り当てられる複数の記憶領域を有する記憶装置と、
前記記憶装置に接続され、前記複数の仮想マシンを実行する処理装置と、
前記処理装置に接続され、前記複数の仮想マシン間を接続する仮想スイッチとしての中継処理を実行し、前記中継処理において、前記複数の記憶領域のそれぞれが記憶する送信対象のデータの転送を行なう中継装置と、
前記複数の記憶領域間のデータ転送を行なう転送部と、を備えるコンピュータが、
前記複数の記憶領域のうちの第1の記憶領域が記憶する送信対象のデータにおけるヘッダ情報が所定の条件を満たすか否かを判定し、
前記ヘッダ情報が前記所定の条件を満たす場合、前記転送部により、前記送信対象のデータを、前記中継装置による前記中継処理が実行されない経路で、前記第1の記憶領域から前記送信対象のデータの宛先である第2の記憶領域に転送する、
処理を実行する情報処理方法。
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2021023569A JP2022125786A (ja) | 2021-02-17 | 2021-02-17 | 情報処理装置、情報処理プログラム、及び情報処理方法 |
US17/524,772 US20220263757A1 (en) | 2021-02-17 | 2021-11-12 | Information processing apparatus, computer-readable recording medium having stored therein information processing program, and method for processing information |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2021023569A JP2022125786A (ja) | 2021-02-17 | 2021-02-17 | 情報処理装置、情報処理プログラム、及び情報処理方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
JP2022125786A true JP2022125786A (ja) | 2022-08-29 |
Family
ID=82800611
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2021023569A Pending JP2022125786A (ja) | 2021-02-17 | 2021-02-17 | 情報処理装置、情報処理プログラム、及び情報処理方法 |
Country Status (2)
Country | Link |
---|---|
US (1) | US20220263757A1 (ja) |
JP (1) | JP2022125786A (ja) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11888737B1 (en) * | 2022-07-29 | 2024-01-30 | Red Hat, Inc. | Implementing network function logic in a virtual switch |
Family Cites Families (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8953603B2 (en) * | 2009-10-28 | 2015-02-10 | Juniper Networks, Inc. | Methods and apparatus related to a distributed switch fabric |
US9110703B2 (en) * | 2011-06-07 | 2015-08-18 | Hewlett-Packard Development Company, L.P. | Virtual machine packet processing |
JP6036445B2 (ja) * | 2013-03-21 | 2016-11-30 | 富士通株式会社 | 通信システム、中継装置、通信方法、及びプログラム |
US10356012B2 (en) * | 2015-08-20 | 2019-07-16 | Intel Corporation | Techniques for routing packets among virtual machines |
-
2021
- 2021-02-17 JP JP2021023569A patent/JP2022125786A/ja active Pending
- 2021-11-12 US US17/524,772 patent/US20220263757A1/en active Pending
Also Published As
Publication number | Publication date |
---|---|
US20220263757A1 (en) | 2022-08-18 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US10719463B1 (en) | Hardware handling memory write request during memory data migration | |
US9047417B2 (en) | NUMA aware network interface | |
WO2018102967A1 (zh) | NVMe over Fabric架构中数据读写命令的控制方法、存储设备和系统 | |
JP6676027B2 (ja) | ネットワークプロセッサにおけるマルチコア相互接続 | |
JP5399570B2 (ja) | 計算機システム、それに使用されるスイッチ及びパケット転送制御方法 | |
US20170364394A1 (en) | System and method to perform live migration of a virtual machine without suspending operation thereof | |
CN112527494A (zh) | 信息处理设备和方法以及非暂态计算机可读记录介质 | |
JP6933535B2 (ja) | 通信装置、通信方法及びプログラム | |
US20160179432A1 (en) | Information processing apparatus and memory management method | |
JP2018185624A (ja) | スイッチプログラム、スイッチング方法及び情報処理装置 | |
CN112997161A (zh) | 将储存系统用作主存储器的方法和装置 | |
JP2007034392A (ja) | 情報処理装置及びデータ処理方法 | |
US10097658B2 (en) | Traffic control of packet transfer | |
JP6926953B2 (ja) | 情報処理装置、情報処理方法及びプログラム | |
TW201942761A (zh) | 伺服器系統 | |
JP2022125786A (ja) | 情報処理装置、情報処理プログラム、及び情報処理方法 | |
JP2011008548A (ja) | データ中継装置およびストレージシステム | |
US20160267050A1 (en) | Storage subsystem technologies | |
EP1780976A1 (en) | Methods and system to offload data processing tasks | |
JP7354361B2 (ja) | 処理装置、処理方法及びプログラム | |
JP2009301101A (ja) | プロセッサ間通信システム、プロセッサ、プロセッサ間通信方法、および、通信方法 | |
US20220413890A1 (en) | Information processing apparatus, computer-readable recording medium having stored therein information processing program, and method for processing information | |
US11880724B2 (en) | Information processing apparatus for controlling data transferring and method of processing information for controlling data transferring | |
WO2016088372A1 (ja) | アクセス装置、マイグレーション装置、分散ストレージシステム、アクセス方法及びコンピュータ読み取り可能記録媒体 | |
JP7347157B2 (ja) | 情報処理システム、ストレージ制御プログラム、及び、ストレージ制御装置 |