JP5720577B2 - サーバ及びフロー制御プログラム - Google Patents

サーバ及びフロー制御プログラム Download PDF

Info

Publication number
JP5720577B2
JP5720577B2 JP2011544249A JP2011544249A JP5720577B2 JP 5720577 B2 JP5720577 B2 JP 5720577B2 JP 2011544249 A JP2011544249 A JP 2011544249A JP 2011544249 A JP2011544249 A JP 2011544249A JP 5720577 B2 JP5720577 B2 JP 5720577B2
Authority
JP
Japan
Prior art keywords
flow
transmission
packet
reception
function
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.)
Expired - Fee Related
Application number
JP2011544249A
Other languages
English (en)
Other versions
JPWO2011068091A1 (ja
Inventor
秀一 狩野
秀一 狩野
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
NEC Corp
Original Assignee
NEC Corp
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by NEC Corp filed Critical NEC Corp
Priority to JP2011544249A priority Critical patent/JP5720577B2/ja
Publication of JPWO2011068091A1 publication Critical patent/JPWO2011068091A1/ja
Application granted granted Critical
Publication of JP5720577B2 publication Critical patent/JP5720577B2/ja
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L45/00Routing or path finding of packets in data switching networks
    • H04L45/38Flow based routing
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L45/00Routing or path finding of packets in data switching networks
    • H04L45/02Topology update or discovery
    • H04L45/021Ensuring consistency of routing table updates, e.g. by using epoch numbers
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L45/00Routing or path finding of packets in data switching networks
    • H04L45/58Association of routers
    • H04L45/586Association of routers of virtual routers
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L49/00Packet switching elements
    • H04L49/30Peripheral units, e.g. input or output ports
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L49/00Packet switching elements
    • H04L49/70Virtual switches
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L45/00Routing or path finding of packets in data switching networks
    • H04L45/74Address processing for routing

Description

本発明は、仮想化技術に基づくサーバ、及び当該サーバによって実行されるフロー制御プログラムに関する。
サーバの分野において、仮想化技術は重要である。具体的には、VMware(登録商標)やXen(登録商標)といった仮想化ソフトウェアを用いた仮想化技術によって、1台の物理マシンを複数の仮想マシン(VM: Virtual Machine)として稼働させることができる。これにより、効率的なサーバ運用が可能となる。
仮想化技術により、物理サーバ内には仮想マシンと共に仮想スイッチ(Virtual Switch)も構築される。仮想スイッチは、ソフトウェアベースのパケットスイッチであり、図1A及び図1Bに示されるように、仮想マシン間、及び、仮想マシンと外部との間の通信を中継する。仮想スイッチは仮想マシンと隣接しているため、トラフィック制御が容易である。また、仮想スイッチはソフトウェアベースであるため、柔軟性及び拡張性に優れている。
また、VT−d/VT−c(登録商標)といったI/O(入出力)仮想化技術が知られている。このI/O仮想化技術によれば、仮想スイッチを介することなく仮想マシンとネットワークインタフェースカード(NIC: Network Interface Card)との間で直接データのやりとりが可能となる。具体的には、図2に示されるように、仮想NICが仮想マシン毎に構築される。そして、それら仮想NICを利用することによって、仮想スイッチを完全にバイパスすることが可能となる。このような処理は、以下「NICオフロード」と参照される。
仮想化に関連する技術として、次のものが知られている。
特許文献1(特表2007−522583号公報)に開示された装置は、少なくとも1つのルータと、データ構造とを備える。データ構造は、当該少なくとも1つのルータによって、1つ以上の仮想ネットワークインタフェースカード(VNIC)間における接続を組織して仮想ネットワークを形成するために使用される。
特許文献2(特開2008−102929号公報)には、キューデータ構造を使用してネットワークアダプタと通信するための技術が開示されている。デバイスドライバは、キューデータ構造に関するルート複合体内のアドレス変換および保護テーブル(ATPT)項目を初期設定するためにデバイスドライバサービスを呼び出す。デバイスドライバサービスは、未変換アドレスをデバイスドライバに返し、その未変換アドレスは次にネットワークアダプタに提供される。キューデータ構造からキューエレメントを検索したことに応答して、ネットワークアダプタは、キューエレメントに指定された未変換アドレスの変換を要求し、キューエレメントに関連するバッファをターゲットにするデータパケットを受信する前に変換済みアドレスをネットワークアダプタに保管することができる。
特許文献3(特開2009−151745号公報)には、マルチプロセッサシステム上で仮想サーバを稼働させる仮想マシンモニタが開示されている。仮想マシンモニタは、物理ハードウェア情報取得部と、受付部と、割り当て処理部と、を備える。物理ハードウェア情報取得部は、マルチプロセッサシステムのプロセッサとメモリとI/Oデバイス及びネットワークを含むハードウェアの物理的な位置情報を含むハードウェアの構成情報を取得する。受付部は、生成する仮想サーバのプロセッサの数とメモリ量とI/Oデバイス及びリソースの割り当てポリシーとを含む生成要求を受け付ける。割り当て処理部は、受け付けた生成要求に基づいてI/Oデバイスを仮想サーバに割り当ててから、割り当てポリシーを満たすようにプロセッサとメモリを仮想サーバに割り当てる。
特表2007−522583号公報 特開2008−102929号公報 特開2009−151745号公報
図1A及び図1Bの場合、仮想スイッチは、仮想マシンと外部との間の全てのトラフィックを中継する。つまり、仮想スイッチにはトラフィックが集中する。また、仮想スイッチはソフトウェアベースであり、場合によってはシングルスレッドでスイッチ処理が進行する。その場合、集中するトラフィックを処理しきれなくなる。このようなことから、仮想スイッチは、ネットワーク処理におけるボトルネックになりやすい。
一方、図2で示されたNICオフロードを利用すれば、仮想スイッチを完全にバイパスすることが可能となる。しかしながらこの場合、パケット通信経路は固定され、仮想スイッチを利用した柔軟なトラフィック制御の利点を享受することができなくなる。
本発明の1つの目的は、仮想スイッチを利用した柔軟なトラフィック制御の利点を享受しつつ、仮想スイッチへのトラフィックの集中を抑制することにある。
本発明の1つの観点において、サーバが提供される。サーバは、処理装置と、処理装置に接続されたネットワークアダプタと、経路切替部と、を備える。処理装置は、仮想マシンと、仮想マシンが送受信するパケットを外部との間で中継する仮想スイッチと、を備える。ネットワークアダプタは、仮想スイッチを介することなく仮想マシンに対してパケットを送受信する伝送機能を有する。経路切替部は、仮想マシンが送受信するパケットのフローを、第1経路パターンフローあるいは第2経路パターンフローに動的に切り替える。そして、経路切替部は、第1経路パターンフローをネットワークアダプタの上記伝送機能に処理させ、第2経路パターンフローを仮想スイッチに処理させる。
本発明の他の観点において、サーバによって実行されるフロー制御プログラムが提供される。サーバは、処理装置と、処理装置に接続されたネットワークアダプタと、を備える。処理装置は、仮想マシンと、仮想マシンが送受信するパケットを外部との間で中継する仮想スイッチと、を備える。ネットワークアダプタは、仮想スイッチを介することなく仮想マシンに対してパケットを送受信する伝送機能を有する。フロー制御プログラムは、サーバに、経路切替機能を実現させる。経路切替機能は、仮想マシンが送受信するパケットのフローを、第1経路パターンフローあるいは第2経路パターンフローに動的に切り替える。そして、経路切替機能は、第1経路パターンフローをネットワークアダプタの上記伝送機能に処理させ、第2経路パターンフローを仮想スイッチに処理させる。
本発明の更に他の観点において、サーバの処理装置に接続されるネットワークアダプタが提供される。処理装置は、仮想マシンと、仮想マシンが送受信するパケットを外部との間で中継する仮想スイッチと、を備える。ネットワークアダプタは、仮想スイッチを介することなく仮想マシンに対してパケットを送受信する伝送機能を有する。ネットワークアダプタは、経路切替部を備える。経路切替部は、仮想マシンが送受信するパケットのフローを、第1経路パターンフローあるいは第2経路パターンフローに動的に切り替える。そして、経路切替部は、第1経路パターンフローを上記伝送機能に処理させ、第2経路パターンフローを仮想スイッチに処理させる。
本発明によれば、仮想スイッチを利用した柔軟なトラフィック制御の利点を享受しつつ、仮想スイッチへのトラフィックの集中を抑制することが可能となる。
上記及び他の目的、長所、特徴は、次の図面と共に説明される本発明の実施の形態により明らかになるであろう。
図1Aは、仮想スイッチの一例を示す概念図である。 図1Bは、仮想スイッチの他の例を示す概念図である。 図2は、NICオフロード機能を示す概念図である。 図3は、本発明の実施の形態に係るネットワークシステムの構成例を概略的に示すブロック図である。 図4は、本発明の実施の形態に係るサーバのハードウェア構成を示すブロック図である。 図5は、本発明の実施の形態に係るサーバの構成を概念的に示すブロック図である。 図6は、本発明の実施の形態に係るネットワークアダプタの基本構成を示すブロック図である。 図7は、本発明の実施の形態における受信フィルタテーブルの一例を示す概念図である。 図8は、本発明の実施の形態に係る経路切替部の機能を説明するための概略図である。 図9は、本発明の実施の形態に係る経路切替処理の一例を説明するための概念図である。 図10は、本発明の実施の形態における送信フィルタテーブルの一例を示す概念図である。 図11は、本発明の実施の形態における2つの経路パターンを説明するための概念図である。 図12は、本発明の実施の形態における送受信フィルタテーブルの一例を示す概念図である。 図13は、本発明の実施の形態に係る仮想スイッチの構成例を示すブロック図である。 図14は、本発明の実施の形態におけるキャッシュ制御を説明するための概念図である。 図15は、本発明の第1の実施の形態に係る仮想スイッチの構成を示すブロック図である。 図16は、第1の実施の形態における処理を示すフローチャートである。 図17は、本発明の実施の形態におけるフローテーブルの一例を示す概念図である。 図18は、本発明の実施の形態におけるポート−VM対応表の一例を示す概念図である。 図19は、第1の実施の形態における処理を示す概念図である。 図20は、第1の実施の形態における処理を説明するための概念図である。 図21は、本発明の第2の実施の形態に係る構成例を示すブロック図である。 図22は、第2の実施の形態における処理を示すフローチャートである。 図23は、本発明の第3の実施の形態に係る構成例を示すブロック図である。 図24は、本発明の実施の形態に係る経路切替処理の他の例を説明するためのブロック図である。 図25は、図24で示された仮想マシンの分岐機能が参照するフローテーブルの一例を示す概念図である。 図26は、図24の場合の仮想スイッチの構成を示すブロック図である。
添付図面を参照して、本発明の実施の形態を説明する。
1.基本構成
図3は、本実施の形態に係るネットワークシステム1の構成例を概略的に示すブロック図である。ネットワークシステム1は、ネットワーク(不図示)に接続された複数のサーバ10を備えている。サーバ10間には、複数のスイッチが配置されている。このネットワークシステム1は、ファイアウォールやロードバランサといったネットワークアプライアンスを介して外部ネットワークに接続されている。ネットワークシステム1は、例えばデータセンタ(data center)内のネットワークシステムである。
図4は、本実施の形態に係るサーバ(物理サーバ)10のハードウェア構成を示すブロック図である。サーバ10は、CPU(Central Processing Unit)20、メインメモリ30、及びネットワークアダプタ(ネットワークインタフェース装置)100を備えている。ネットワークアダプタ100は、ネットワークカードまたはNIC(Network Interface Card)とも呼ばれる。CPU20、メインメモリ30、及びネットワークアダプタ100は、互いに接続されている。
メインメモリ30には、仮想化ソフトウェアやフロー制御プログラムPROGが格納される。仮想化ソフトウェアは、CPU20によって実行されるコンピュータプログラムであり、サーバ10上に仮想マシン(VM: Virtual Machine)や仮想スイッチ(Virtual Switch)を構築する。フロー制御プログラムPROGは、CPU20によって実行されるコンピュータプログラムであり、後に説明される「経路切替機能」をサーバ10に実装する。仮想化ソフトウェアやフロー制御プログラムPROGは、コンピュータ読み取り可能な記録媒体に記録されていてもよい。フロー制御プログラムPROGは、仮想化ソフトウェアに組み込まれていてもよい。
図5は、本実施の形態に係るサーバ10の構成を概念的に示すブロック図である。サーバ10は、処理装置40と、処理装置40に接続されたネットワークアダプタ100とを備えている。処理装置40は、上述のCPU20、メインメモリ30、仮想化ソフトウェア及びフロー制御プログラムPROGの協働により実現され、仮想環境に基づく様々な機能を備える。具体的には、処理装置40は、ハイパーバイザ50、仮想スイッチ200、及び少なくとも1台の仮想マシン(仮想サーバ)300を備える。ハイパーバイザ50は、各仮想マシン30の動作を管理し、また、仮想マシン300間の通信伝送路を提供する。ハイパーバイザ50は、仮想マシンモニタ(VMM: Virtual Machine Monitor)とも呼ばれる。仮想スイッチ200は、仮想マシン300が送受信するパケットを外部との間で中継する。仮想スイッチ200は、制御用の仮想マシン(Control VM)上で動作してもよいし(図1A参照)、ハイパーバイザ50上で動作してもよい(図1B参照)。各仮想マシン300(Guest VM)上では、それぞれのアプリケーションが稼働する。制御用の仮想マシン(Control
VM)は、入出力処理用の仮想マシン(IOVM)とも呼ばれる。
本実施の形態では、ネットワークアダプタ100による「NICオフロード」が可能である。つまり、仮想スイッチ200を介することなく、ネットワークアダプタ100と仮想マシン300との間で直接データのやりとりが可能である。
図6は、本実施の形態に係るネットワークアダプタ100の基本構成を示すブロック図である。ネットワークアダプタ100は、仮想NIC(図中、破線枠で示されている)、受信フィルタ110、送信フィルタ120、記憶装置130、及びデータ直接伝送機能140を備えている。データ直接伝送機能140は、仮想スイッチ200を介することなく仮想マシン300に対してパケットを直接送受信する機能である。詳細には、データ直接伝送機能140は、ネットワークアダプタ100の送受信キューと仮想マシン300が利用するアドレス空間との間で直接データ転送を行う。
仮想NICは、仮想マシン300(VM1,VM2・・・)毎に設けられる。各仮想NICは、受信キュー101と送信キュー102を含んでいる。受信キュー101には、ネットワークアダプタ100がデータリンクから受け取った受信パケットが格納される。受信キュー101に格納された受信パケットは、データ直接伝送機能140によって、対応する仮想マシン300に直接送られる。また、ネットワークアダプタ100がデータ直接伝送機能140によって仮想マシンから直接受け取った送信パケットは、その仮想マシンに対応する送信キュー102に格納される。
また、仮想NICは、仮想スイッチ200に対しても設けられる。仮想スイッチ200とつながる仮想NICの受信キュー101及び送信キュー102は、以下、受信キュー101−S及び送信キュー102−Sとそれぞれ参照される。受信キュー101−Sには、ネットワークアダプタ100が外部データリンクから受け取った受信パケットが格納される。受信キュー101−Sに格納された受信パケットは、仮想スイッチ200に送られる。また、ネットワークアダプタ100が仮想スイッチ200から受け取った送信パケットは、送信キュー102−Sに格納される。
送信フィルタ120は、それぞれの送信キュー102、102−Sを所定の順序/タイミングで選択する。そして、送信フィルタ120は、選択した送信キュー102あるいは102−Sから送信パケットを取り出し、その送信パケットをデータリンクへ送出する。尚、送信キュー102には、パケット自体のデータでなく、パケットを格納している仮想マシン300内のアドレスなど、パケットのメタデータのみを格納することもできる。この場合、送信フィルタ120は、次にパケットを取り出す送信キュー102を選択すると、該当キューに格納されたパケットのメタデータを用いて、当該パケットを仮想マシン300から転送するよう、データ直接伝送機能140に指示する。
受信フィルタ110は、データリンクから受信パケットを受け取る。受信フィルタ110は、その受信パケットをどの受信キュー101あるいは101−Sに格納するかを判定する。その判定に用いられるのが、「受信フィルタテーブルFILT1」である。受信フィルタテーブルFILT1は、記憶装置130に格納されている。記憶装置130の例としては、DRAM、SRAM、連想メモリ(CAM: Content Addressable Memory)等が挙げられる。
受信フィルタテーブルFILT1は、フローと受信アクションとの対応関係を示すテーブルである。受信フィルタ110は、その受信フィルタテーブルFILT1を参照し、受信パケットのフローに対応付けられた受信アクションを受信パケットに対して行う。受信アクションとしては、2パターン考えられる。第1受信アクションは、「データ直接伝送機能140を用いることによって、受信パケットを指定された仮想マシン300に直接送信すること」である。この場合、受信フィルタ110は、受信パケットを、指定された受信キュー101に格納する。第2受信アクションは、「受信パケットを仮想スイッチ200へ送信すること」である。この場合、受信フィルタ110は、受信パケットを、仮想スイッチ200宛の受信キュー101−Sに格納する。
図7は、受信フィルタテーブルFILT1の一例を示している。受信フィルタテーブルFILT1は、複数のフィルタエントリを有している。各フィルタエントリは、フローを識別するためのキー(Key)と該当フローの受信パケットに対して行われる受信アクション(Action)を示している。キーは、フロー識別情報であり、受信パケットのヘッダ情報中の所定のプロトコルヘッダフィールドの組み合わせで構成される。このキーは、例えば、OpenFlowSwitch(http://www.openflowswitch.org/を参照)のフローテーブルにおけるキーと同様である。受信アクションには、受信パケットの格納先となる受信キューが記述されている。例えば、「受信アクション:VM1」は、仮想マシンVM1宛の受信キュー101を意味し、上述の第1受信アクションに相当する。また、「受信アクション:vswitch」は、仮想スイッチ200宛の受信キュー101−Sを意味し、上述の第2受信アクションに相当する。
受信フィルタ110は、受信パケットを受け取ると、その受信パケットのヘッダ情報を用いて受信フィルタテーブルFILT1中のイグザクトマッチエントリ(exact match entry)を検索する。受信パケットのフローにマッチするイグザクトマッチエントリが有る場合、受信フィルタ110は、そのイグザクトマッチエントリで指定された第1受信アクションを受信パケットに対して行う。例えば、図7の例において、受信フィルタ110は、フローflow1に属する受信パケットを、仮想マシンVM1宛の受信キュー101に格納する。一方、受信パケットのフローにマッチするイグザクトマッチエントリが無い場合、受信フィルタ110は、第2受信アクションを受信パケットに対して行う、すなわち、受信パケットを仮想スイッチ200宛の受信キュー101−Sに格納する。このようにして、NICオフロードが可能となる。
本実施の形態に係るサーバ10は、更に、「経路切替部60」を備えている。図8は、本実施の形態に係る経路切替部60の機能を説明するための概略図である。本実施の形態において、経路切替部60は、仮想マシン300が送受信するパケットの伝送経路を“動的”に切り替える。
より詳細には、仮想マシン300が送受信するパケットの伝送経路には、2パターン考えられる。第1の経路パターンでは、上述のネットワークアダプタ100のデータ直接伝送機能140によって、仮想スイッチ200を介することなくネットワークアダプタ100と仮想マシン300との間で直接パケットが送受信される(NICオフロード)。一方、第2の経路パターンでは、少なくとも仮想スイッチ200を介して仮想マシン300に対してパケットが送受信される。第1及び第2の経路パターンのフローは、以下、それぞれ、「第1経路パターンフロー」及び「第2経路パターンフロー」と参照される。
経路切替部60は、仮想マシン300が送受信するパケットのフロー経路を、第1の経路パターンあるいは第2の経路パターンに設定する。更に、経路切替部60は、その経路設定を、所定の条件に応じて動的に切り替える。すなわち、経路切替部60は、仮想マシン300が送受信するパケットのフローを、第1経路パターンフローあるいは第2経路パターンフローに動的に切り替える(分別する)。そして、経路切替部60は、第1経路パターンフローをネットワークアダプタ100のデータ直接伝送機能140に処理させ、一方、第2経路パターンフローを仮想スイッチ200に処理させる。
このように、本実施の形態によれば、全てのフローが固定的に仮想スイッチ200をバイパスするわけではない。所望のフロー(第1経路パターンフロー)のみがNICオフロードされ、仮想スイッチ200をバイパスする。他のフロー(第2経路パターンフロー)は、通常通り、仮想スイッチ200を通して伝送される。その結果、仮想スイッチ200を利用した柔軟なトラフィック制御の利点を享受しつつ、仮想スイッチ200へのトラフィックの集中を抑制することが可能となる。
尚、経路切替部60は、サーバ10(CPU20)がフロー制御プログラムPROGを実行することにより実現される。経路切替部60は、図5に示されるように処理装置40に組み込まれていてもよい。あるいは、経路切替部60は、ネットワークアダプタ100に組み込まれていてもよい(後の第3−3節で説明される)。典型的には、経路切替部60は、処理装置40の仮想スイッチ200あるいはハイパーバイザ50に組み込まれる。但し、それに限定されない。
以下、本実施の形態に係る経路切替処理を更に詳しく説明する。
2.経路切替処理の一例
図9は、本実施の形態に係る経路切替処理の一例を説明するための概念図である。本処理例では、ネットワークアダプタ100に、受信フィルタテーブルFILT1だけでなく、「送信フィルタテーブルFILT2」も設けられる。受信フィルタテーブルFILT1と同様に、送信フィルタテーブルFILT2も記憶装置130に格納される。尚、受信フィルタテーブルFILT1と送信フィルタテーブルFILT2は、まとめて「フィルタテーブルFILT」と参照される場合がある。
2−1.送信フィルタテーブル
送信フィルタテーブルFILT2は、フローと送信アクションとの対応関係を示すテーブルである。送信フィルタ120は、その送信フィルタテーブルFILT2を参照し、送信パケットのフローに対応付けられた送信アクションを送信パケットに対して行う。送信アクションとしては、2パターン考えられる。第1送信アクションは、「送信パケットを外部のデータリンクへ送信すること」である。この場合、送信フィルタ120は、送信パケットをデータリンクへ送出する。第2送信アクションは、「送信パケットを受信パケットして受信フィルタ110(受信経路)へループバックさせること」である。この場合、送信フィルタ120は、送信パケットを受信パケットとして受信フィルタ110(受信経路)へループバックさせる。
図10は、送信フィルタテーブルFILT2の一例を示している。送信フィルタテーブルFILT2は、複数のフィルタエントリを有している。各フィルタエントリは、フローを識別するためのキー(Key)と該当フローの送信パケットに対して行われる送信アクション(Action)を示している。キーは、フロー識別情報であり、送信パケットのヘッダ情報中の所定のプロトコルヘッダフィールドの組み合わせで構成される。このキーは、例えば、OpenFlowSwitch(http://www.openflowswitch.org/を参照)のフローテーブルにおけるキーと同様である。送信アクションには、第1送信アクション「out」あるいは第2送信アクション「loopback」が記述されている。
送信フィルタ120は、選択した送信キュー102から送信パケットを取り出すと、その送信パケットのヘッダ情報を用いて送信フィルタテーブルFILT2中のイグザクトマッチエントリ(exact match entry)を検索する。送信パケットのフローにマッチするイグザクトマッチエントリが有る場合、送信フィルタ120は、そのイグザクトマッチエントリで指定された第1送信アクション(out)を送信パケットに対して行う、すなわち、送信パケットをデータリンクに送出する。一方、送信パケットのフローにマッチするイグザクトマッチエントリが無い場合、送信フィルタ120は、第2送信アクション(loopback)を送信パケットに対して行う、すなわち、送信パケットを受信パケットとして受信フィルタ110(受信経路)へループバックさせる。
図9及び図11を参照して、2つの経路パターンを説明する。図9及び図11の例では、受信フィルタテーブルFILT1において、フローflow1、flow2だけが第1受信アクションに対応付けられており、その他のフローは第2受信アクションに対応付けられている。また、送信フィルタテーブルFILT2において、フローflow1、flow2だけが第1送信アクションに対応付けられており、その他のフローは第2送信アクションに対応付けられている。
本処理例において、仮想マシン300から送出される送信パケットは、まず、ネットワークアダプタ100に入力される。このとき、その送信パケットは、ネットワークアダプタ100のデータ直接伝送機能140によって、仮想スイッチ200を介することなくネットワークアダプタ100に直接入力される。送信フィルタ120は、選択した送信キュー102から送信パケットを取り出す。
送信パケットがフローflow1あるいはflow2に属する場合、送信フィルタテーブルFILT2中のイグザクトマッチエントリがヒットする。従って、送信フィルタ120は、その送信パケットをデータリンクに送出する。つまり、当該送信パケットは、仮想スイッチ200を通過することなく、仮想マシン300からネットワークアダプタ100を介して外部に送信される。これは、上述の第1の経路パターンに相当する。
一方、送信パケットがその他のフローに属する場合、送信フィルタテーブルFILT2中のいずれのイグザクトマッチエントリもヒットしない。従って、送信フィルタ120は、その送信パケットを受信パケットとして受信フィルタ110にループバックする。受信フィルタテーブルFILT1においても、いずれのイグザクトマッチエントリもヒットしない。従って、受信フィルタ110は、その受信パケットを受信キュー101−Sを介して仮想スイッチ200へ送る。つまり、当該パケットは、一旦ネットワークアダプタ100に入力された後、仮想スイッチ200によって処理されることになる。これは、上述の第2の経路パターンに相当する。
データリンクから受け取る受信パケットに関しては、次の通りである。受信パケットがフローflow1あるいはflow2に属する場合、受信フィルタテーブルFILT1中のイグザクトマッチエントリがヒットする。従って、受信フィルタ110は、その受信パケットを、対応する仮想マシン300宛の受信キュー101に格納する。その受信パケットは、データ直接伝送機能140によって、仮想スイッチ200を介することなく、対応する仮想マシン300に直接送られる。これは、上述の第1の経路パターンに相当する。
一方、受信パケットがその他のフローに属する場合、受信フィルタテーブルFILT1中のいずれのイグザクトマッチエントリもヒットしない。従って、受信フィルタ110は、その受信パケットを、仮想スイッチ200宛の受信キュー101−Sに格納する。よって、その受信パケットは、仮想スイッチ200によって処理されることになる。これは、上述の第2の経路パターンに相当する。
尚、図12に示されるように、受信フィルタテーブルFILT1と送信フィルタテーブルFILT2とは組み合わされて、単一の送受信フィルタテーブルとして提供されてもよい。図12の例では、第2受信アクションと第2送信アクションは共通であり、「vswitch:パケットを仮想スイッチ200宛の受信キュー101−Sに格納すること」である。これによっても、受信経路への送信パケットのループバックが実現される。
2−2.経路切替部60
以上に説明されたように、受信フィルタテーブルFILT1及び送信フィルタテーブルFILT2におけるエントリ設定により、仮想マシン300が送受信するパケットのフロー経路を、第1の経路パターンあるいは第2の経路パターンに設定することができる。そして、受信フィルタテーブルFILT1及び送信フィルタテーブルFILT2におけるエントリ設定を変更することによって、フロー経路を“動的”に切り替えることも可能である。そのようなエントリ設定及び設定変更を行うのが、経路切替部60である。
具体的には、経路切替部60は、仮想マシン300が送受信するパケットのフローを、所定の基準に基いて、第1経路パターンフローあるいは第2経路パターンフローに割り当てる。その割り当ては、動的に変更可能である。そして、経路切替部60は、第1経路パターンフローが上述の第1受信アクションに対応付けられ、第2経路パターンフローが上述の第2受信アクションに対応付けられるように、受信フィルタテーブルFILT1を設定する。また、経路切替部60は、第1経路パターンフローが上述の第1送信アクションに対応付けられ、第2経路パターンフローが上述の第2送信アクションに対応付けられるように、送信フィルタテーブルFILT2を設定する。その結果、第1経路パターンフローは、仮想スイッチ200を介することなく処理される、すなわち、NICオフロードされる。一方、第2経路パターンフローは、仮想スイッチ200によって処理されることになる。
尚、同一フローに関するフィルタエントリが、受信フィルタテーブルFILT1あるいは送信フィルタテーブルFILT2のいずれか一方にだけ設定されてもよい。その場合、受信側と送信側とで、経路パターンは非対称になる。例として、既出の図9及び図11において、フローflow1に関するフィルタエントリが送信フィルタテーブルFILT2にのみ設定される場合を考える。その場合、フローflow1に関しては、送信パケットの伝送経路は、仮想スイッチ200を介さない第1の経路パターンとなり、受信パケットの伝送経路は、仮想スイッチ200を通過する第2の経路パターンとなる。
経路切替部60は、例えば、仮想スイッチ200に組み込まれる。図13は、その場合の仮想スイッチ200の機能構成例を示すブロック図である。仮想スイッチ200は、フロー識別機能210、パケットスイッチ機能220、VM識別機能230、キュー判定機能240、及びNIC設定機能250を備えている。
仮想スイッチ200は、ネットワークアダプタ100あるいは仮想マシン300からパケットを受け取る。フロー識別機能210は、受け取ったパケットのヘッダ情報に基いて、当該パケットの属するフローを識別する。また、フロー識別機能210は、フロー識別情報(Key)とアクション(Action)との対応関係を示すフローテーブルTBLを参照して、当該パケットに対して実施すべきアクションを得る。パケットスイッチ機能220は、そのアクションに従って当該パケットを処理する。典型的には、フローテーブルTBLのアクションにはパケットの出力ポート(転送先)が記述されている。パケットスイッチ機能220は、アクションで指定された出力ポートからパケットを出力する。出力されたパケットは、ネットワークアダプタ100あるいは仮想マシン300へ送られる。
尚、当該パケットにマッチするフローエントリがフローテーブルTBLに無い場合、フロー識別機能210は、当該パケットに対して所定の処理を実施する。例えば、フロー識別機能210は、オープンフローコントローラ(OFC: Open Flow Controller)に当該パケットを転送し、経路設定を要求する。
VM識別機能230は、指定されたフローに関して、当該フローに属するパケットを送受信する仮想マシン300を特定する。ここで、「指定されたフロー」とは、ネットワークアダプタ100上のフィルタテーブルFILTに対するエントリ設定が望まれるフローである。キュー判定機能240は、VM識別機能230によって特定された仮想マシン300に関連付けられた送受信キュー(101、102)を判定する。NIC設定機能250は、その送受信キューを適宜参照することによって、フィルタテーブルFILTに設定すべきフィルタエントリを作成する。そして、NIC設定機能250は、作成したフィルタエントリをネットワークアダプタ100に通知し、フィルタテーブルFILTの設定・変更を行う。
経路切替部60は、これらVM識別機能230、キュー判定機能240、及びNIC判定機能250を含んでいる。
2−3.キャッシュ制御
フィルタテーブルFILTのキャッシュ制御も可能である。これは、ネットワークアダプタ100に比較的小規模な記憶装置130しか搭載できない場合に好適である。図14を参照して、キャッシュ制御を説明する。
図14に示されるように、フィルタテーブルFILTの本体は、サーバ10のメインメモリ30(図4参照)に格納される。上述のNIC設定機能250(経路切替部60)は、メインメモリ30上のフィルタテーブルFILTの設定・変更を行う。
ネットワークアダプタ100の記憶装置130は、比較的小規模(例:数十KByte)なキャッシュメモリである。キャッシュメモリ130にキャッシュされるフィルタテーブルFILT(cache)は、メインメモリ30に格納されているフィルタテーブルFILTの本体の一部である。
ネットワークアダプタ100の受信フィルタ110及び送信フィルタ120の各々は検索機能115を備える。パケットを受け取った際、検索機能115はまず、キャッシュメモリ130にキャッシュされているエントリを調べる。キャッシュヒットの場合、検索機能115は、ヒットエントリに従って、上述の通りパケットを処理する。一方、キャッシュミスの場合、検索機能115は、メインメモリ30にアクセスし、フィルタテーブルFILTの本体から必要なエントリを検索取得する。そして、検索機能115は、取得したエントリをキャッシュメモリ130に格納し、当該エントリに従ってパケットを処理する。空きエントリが無い場合、検索機能115は、キャッシュエントリの入れ換えも行う。
尚、フィルタテーブルFILTの各エントリは、パケットが処理される毎に更新される統計情報を含んでいてもよい。図14の例では、各エントリは、当該エントリのマッチ回数を含んでいる。検索機能115は、所定のタイミングで、この統計情報をキャッシュメモリ130からメインメモリ30にライトバックする。所定のタイミングとしては、経路切替部60がその統計情報を必要としたとき、キャッシュメモリ130からエントリが削除されるとき、等が例示される。
3.様々な実施の形態
上述の通り、第1経路パターンフローは、仮想スイッチ200を介することなく処理される、すなわち、NICオフロードされる。このNICオフロードにより、仮想スイッチ200へのトラフィックの集中が抑制される。NICオフロード対象の第1経路パターンフローとしては、様々な候補が考えられる。また、NICオフロードの設定タイミングとしても、様々考えられる。以下、いくつかの実施形態を説明する。
3−1.第1の実施の形態
第1の実施の形態では、NICオフロード対象としての第1経路パターンフローは、負荷が所定の閾値を超えた「過負荷フロー」である。一方、第2経路パターンフローは、負荷が所定の閾値以下である「通常負荷フロー」である。NICオフロードの開始タイミングは、あるフローが通常負荷フローから過負荷フローになったときであり、NICオフロードの終了タイミングは、あるフローが過負荷フローから通常負荷フローに戻ったときである。
そのために、経路切替部60は、仮想マシン300が送受信するパケットに基いて、フロー毎の負荷を計測する。経路切替部60は、計測負荷と所定の閾値とを比較し、フロー毎に通常負荷フローあるいは過負荷フローの判定を行う。あるフローが通常負荷フローから過負荷フローになった場合、経路切替部60は、当該過負荷フローを第1経路パターンフローに切り替える。その結果、当該過負荷フローは、NICオフロードされ、仮想スイッチ200をバイパスすることになる。また、あるフローが過負荷フローから通常負荷フローに戻った場合、経路切替部60は、当該フローを第1経路パターンフローから第2経路パターンフローに戻す。その結果、当該フローは、仮想スイッチ200によって処理されることになる。
このように、第1の実施の形態では、過負荷フローのみがNICオフロードされる。従って、仮想スイッチ200へのトラフィック集中を効率的に低減することができる。また、フィルタテーブルFILTに設定されるエントリ数は比較的少ない。従って、ネットワークアダプタ100に比較的小規模な記憶装置130しか搭載できない場合であっても、第1の実施の形態は可能である。また、送信側と受信側とで負荷が不均一になる場合、送信側と受信側とで経路パターンを非対称にしてもよい。
以下、第1の実施の形態の具体的な構成例及び動作例を説明する。本例では、経路切替部60は、仮想スイッチ200に組み込まれる。
図15は、第1の実施の形態における仮想スイッチ200の構成を示すブロック図である。第1の実施の形態において、仮想スイッチ200は、既出の図13で示された構成に加えて、処理負荷計測機能260、経路変更判定機能270、及び宛先添付データ付与機能280を更に備えている。処理負荷計測機能260は、送受信パケットを所定の頻度でサンプリングし、その送受信パケットに基いて、フロー毎の負荷(パケット処理量、処理負荷)を計測する。また、処理負荷計測機能260は、計測結果を示す負荷情報を保持する。経路変更判定機能270は、負荷情報を参照することにより、各フローが過負荷フロー(第1経路パターンフロー)か通常負荷フロー(第2経路パターンフロー)かを判定する。すなわち、経路変更判定機能270は、負荷情報に基いて、第1経路パターンフローと第2経路パターンフローの区分を動的に変更する。そして、経路変更判定機能270は、経路パターンを切り替えるべきフローを、VM識別機能230に指定する。宛先添付データ付与機能280に関しては、後述される。
図16は、第1の実施の形態における処理例を示すフローチャートである。まず、仮想スイッチ200は、ネットワークアダプタ100あるいは仮想マシン300からパケットを受け取る(ステップA10)。フロー識別機能210は、受け取ったパケットのヘッダ情報に基いて、当該パケットの属するフローを識別する。また、フロー識別機能210は、フローテーブルTBLを参照して、当該パケットに対して実施すべきアクションを得る(ステップA20)。
図17は、フローテーブルTBLの一例を示している。フローテーブルTBLは、複数のテーブルエントリを有している。各テーブルエントリは、フローを識別するためのキー(Key)と該当フローのパケットに対して行われるアクション(Action)を示している。キーは、フロー識別情報であり、パケットのヘッダ情報中の所定のプロトコルヘッダフィールドの組み合わせで構成される。アクションには、典型的には、パケットの出力ポート(転送先)が記述されている。このフローテーブルTBLは、所定の記憶装置(典型的にはメインメモリ30)に格納される。また、図17の例では、各テーブルエントリは、ネットワークアダプタ100上の該当エントリの有無を示すフラグも有する。このフラグは、ネットワークアダプタ100がどのようなフィルタエントリを保持しているかを仮想スイッチ200側で把握しておくために設けられる。
パケットスイッチ機能220は、ステップA20で得られたアクションに従って、スイッチ処理を行う(ステップA30)。典型的には、パケットスイッチ機能220は、アクションで指定された出力ポートからパケットを出力する。出力されたパケットは、ネットワークアダプタ100あるいは仮想マシン300へ送られる。
その一方で、処理負荷計測機能260は、パケット処理に応答して、上記負荷情報を更新する(ステップA40)。また、経路変更判定機能270は、負荷情報を参照して、処理されたパケットのフローに関する負荷を所定の閾値と比較する(ステップA50)。負荷が所定の閾値を超えた場合(ステップA50;Yes)、経路変更判定機能270は、当該フローを過負荷フローとみなし、第1経路パターンフローに割り当てる。そして、経路変更判定機能270は、当該フローをNICオフロード対象に指定し、VM識別機能230に通知する。
続いて、仮想スイッチ200は、オフロード設定処理を行う(ステップA60)。具体的には、VM識別機能230は、経路変更判定機能270によって指定されたフローに関して、当該フローに属するパケットを送受信する仮想マシン300を特定する(ステップA61)。このとき、VM識別機能230は、図18に示されるようなポート−VM対応表を参照して、仮想マシン300の特定を行ってもよい。キュー判定機能240は、VM識別機能230によって特定された仮想マシン300に関連付けられた送受信キューを判定する(ステップA62)。NIC設定機能250は、その送受信キューを適宜参照することによって、フィルタテーブルFILTに設定すべきフィルタエントリを作成する。そして、NIC設定機能250は、作成したフィルタエントリをネットワークアダプタ100に通知し、フィルタテーブルFILTの設定を行う(ステップA63)。また、NIC設定機能250は、図17で示された該当エントリのフラグを「有」に設定する。
このようにして、過負荷フローとなったフローはNICオフロードされることになる。図19は、第1の実施の形態における処理イメージを示す概念図である。尚、当該フローが過負荷フローから通常負荷フローに戻った場合、オフロード設定は解除される。オフロード設定を解除する場合、当該フローに関するフィルタエントリを、フィルタテーブルFILTから削除すればよい。また、図17で示された該当エントリのフラグが「無」に設定される。
図20を参照して、宛先添付データ付与機能280の役割を説明する。ネットワークアダプタ100上にフィルタエントリが無い状態で、データリンク→仮想スイッチ200→仮想マシン300というパケット配送を行う場合がある。ここで、仮想スイッチ200から出てきたパケットが「外宛」か「仮想マシン(VM)宛」かを示す情報が無ければ、ネットワークアダプタ100は当該パケットをどちらに送ればいいか分からない。そのため、パケット自体に宛先データを持たせる。具体的には、仮想スイッチ200の宛先添付データ付与機能280は、仮想スイッチ200が出力するパケットに、「外宛」か「VM宛」かを示す宛先データを付与する。ネットワークアダプタ100は、その宛先データを参照してパケット配送先を決定するパケット送出判定機能150を備える。
例として、図20中の仮想マシンVM1宛のflow3を考える。仮想スイッチ200は、flow3のパケットを受け取ると、フローテーブルTBLを参照することにより、そのパケットが仮想マシンVM1宛であることを認識する。よって、宛先添付データ付与機能280は、「VM1宛」を示す宛先データをパケットに付与する。そのパケットがネットワークアダプタ100に供給された場合、パケット送出判定機能150は、当該パケットに付与されている宛先データを参照して、当該パケットを仮想マシンVM1に送出することを判定する。一方、図20中のflow1、flow2の場合のように、仮想マシンVM1からの送信パケットには宛先データは添付されてない。その場合は、上述の通り、送信フィルタテーブルFILT2のフィルタエントリに従って送信パケットが処理される。
3−2.第2の実施の形態
第2の実施の形態では、「所定のパケット」を契機として、NICオフロード設定が行われる。つまり、経路切替部60は、あるフローの「所定のパケット」を受け取った場合、当該フローをNICオフロード対象としての第1経路パターンフローに割り当てる。その後、当該フローはNICオフロードされ、当該フローに属するパケットは仮想スイッチ200をバイパスすることになる。また、第1経路パターンフローのパケットが処理されない期間が一定以上続く、すなわち、第1経路パターンフローに関してタイムアウトが発生する場合がある。その場合、経路切替部60は、当該フローを第1経路パターンフローから第2経路パターンフローに戻してもよい。
「所定のパケット」の例としては、第1パケットが挙げられる。第1パケットとは、あるフローに属するパケットのうち最初に受信されるパケットであり、当該フローのエントリがまだ作成されていない状態で受信されるパケットである。この場合、当該フローの第1パケット以降のパケットがNICオフロードされる。また、「所定のパケット」の他の例として、HTTPリクエストURLを含むパケットが挙げられる。この場合、仮想スイッチでDPI(Deep Packet Inspection)処理が行われた後、残りのパケットがNICオフロードされる。ここで、DPI処理とは、パケットが含むトランスポートレイヤより上位レイヤの情報、例えばパケットが含むURLの内容を用いて、同パケットが属するフローの宛先/処理方法を決定することである。
このように、第2の実施の形態では、データプレーンのトラフィックの多くがNICオフロードされる。従って、第1の実施の形態と比較して、仮想スイッチ200へのトラフィック集中をより低減することが可能となる。また、データプレーンのトラフィックの多くがNICオフロードされる一方で、コントロールプレーンはNICオフロードされない。これにより、仮想スイッチ200を利用した柔軟性は確保される。
以下、第2の実施の形態の具体的な構成例及び動作例を説明する。本例では、経路切替部60は、仮想スイッチ200に組み込まれる。また、「所定のパケット」は第1パケットである。
図21は、第2の実施の形態におけるネットワークアダプタ100及び仮想スイッチ200の構成例を示すブロック図である。ネットワークアダプタ100の構成は、図9で示されたものと同様である。但し、受信フィルタテーブルFILT1及び送信フィルタテーブルFILT2の図示は省略されている。仮想スイッチ200の構成は、既出の図13で示されたものと同様である。
図22は、第2の実施の形態における処理例を示すフローチャートである。ネットワークアダプタ100の受信フィルタ110は、データリンクからパケットを受け取る(ステップB10)。受信フィルタ110は、受信パケットのヘッダ情報を用いて受信フィルタテーブルFILT1中のイグザクトマッチエントリを検索する(ステップB20)。受信パケットのフローにマッチするイグザクトマッチエントリが有る場合(ステップB20;Yes)、受信フィルタ110は、受信パケットを、対応する仮想マシン300宛の受信キュー101に格納する。その受信パケットは、データ直接伝送機能140によって、対応する仮想マシン300に直接伝送される(ステップB30)。
一方、受信パケットのフローにマッチするイグザクトマッチエントリが無い場合(ステップB20;No)、受信フィルタ110は、受信パケットを、仮想スイッチ200宛の受信キュー101−Sに格納する。受信キュー101−Sに格納された受信パケットは、仮想スイッチ200へ送られる(ステップB40)。
仮想スイッチ200は、受信パケットを受け取る。フロー識別機能210は、受信パケットのヘッダ情報に基いて、当該受信パケットの属するフローを識別し、また、フローテーブルTBLの検索を行う(ステップB50)。受信パケットにマッチするフローエントリ(イグザクトマッチエントリ)は、フローテーブルTBLに無い。よって、フロー識別機能210は、受信パケットを第1パケットとみなし、当該受信パケットのフローをNICオフロード対象に指定し、VM識別機能230に通知する。
続いて、仮想スイッチ200は、オフロード設定処理を行う(ステップB60)。具体的には、VM識別機能230は、フロー識別機能210によって指定されたフローに関して、当該フローに属するパケットを送受信する仮想マシン300を特定する(ステップB61)。キュー判定機能240は、VM識別機能230によって特定された仮想マシン300に関連付けられた送受信キューを判定する(ステップB62)。NIC設定機能250は、その送受信キューを適宜参照することによって、フィルタテーブルFILTに設定すべきフィルタエントリを作成する。そして、NIC設定機能250は、作成したフィルタエントリをネットワークアダプタ100に通知し、フィルタテーブルFILTの設定を行う(ステップB63)。また、NIC設定機能250は、そのフィルタエントリのコピーをフローテーブルTBLにも格納する。
パケットスイッチ機能220は、第1パケットをネットワークアダプタ100に返送する(ステップB70)。今回は、受信フィルタテーブルFILT1中のイグザクトマッチエントリがヒットする(ステップB20;Yes)。従って、第1パケットは、データ直接伝送機能140によって、対応する仮想マシン300に直接伝送される(ステップB30)。第1パケットに続く後続パケットも同様である。このようにして、当該フローがNICオフロードされる。
NICオフロードされたフローに関してタイムアウトが発生した場合、そのオフロード設定は解除されてもよい。例えば、ネットワークアダプタ100の受信フィルタ110あるいは送信フィルタ120は、フィルタテーブルFILTのフィルタエントリに最終マッチ時刻を記録する。仮想スイッチ200のフロー識別機能210は、一定期間毎にその最終マッチ時刻を確認し、タイムアウトの判定を行う。あるフローにタイムアウトが発生した場合、フロー識別機能210は、当該フローに対するオフロード設定の解除を指示する。NIC設定機能250は、当該フローに関するフィルタエントリを、フィルタテーブルFILTから削除する。また、NIC設定機能250は、そのフィルタエントリをフローテーブルTBLからも削除する。
3−3.第3の実施の形態
図23は、第3の実施の形態におけるネットワークアダプタ100及び仮想スイッチ200の構成例を示すブロック図である。以下、第2の実施の形態からの変更点を主に説明する。
ネットワークアダプタ100は、図21で示された構成に加えて、フロー識別機能160及びフロー設定機能170を備えている。フロー識別機能160は、仮想スイッチ200のフロー識別機能210と同様である。図22のフローチャートにおいて、受信パケットのフローにマッチするイグザクトマッチエントリが無い場合(ステップB20;No)、受信フィルタ110は、受信パケットを、フロー識別機能160に転送する(ステップB40)。フロー設定機能170は、フロー識別機能160によって指定されたフローに関するフィルタエントリを、フィルタテーブルFILTに設定する。これらの機能は、ネットワークアダプタ100に搭載された汎用プロセッサによって実現され得る。
このように、第3の実施の形態では、経路切替部60は、ネットワークアダプタ100に組み込まれる。すなわち、データプレーンに加えて、フィルタテーブルFILTの設定もNICオフロードされる。
より一般的に、第3の実施の形態では、フィルタテーブルFILTの設定に例示される“定型的な処理”がNICオフロードされる。言い換えれば、仮想スイッチ200は、定型的な処理を行うプログラムを、ネットワークアダプタ100に委譲する。そのような定型的な処理を行うプログラムは、フローテーブルTBL中のワイルドカードマッチエントリ(wildcard match entry)のアクションとして実装可能である。アクションとしては、例えば、NAPT(Network Address/Port Translation)を設定するプログラムが考えられる。これにより、ネットワークアダプタ100上でフロー毎にNAPT処理を施すことが可能となる。仮想スイッチ200は、フロー処理規則オフロード機能290を備えている。このフロー処理規則オフロード機能290は、自身のフローテーブルTBL(イグザクトマッチフローテーブルとワイルカードマッチフローテーブル)の一部あるいは全てを、ネットワークアダプタ100上のフローテーブルTBLに設定する。
このように、第3の実施の形態では、定型的な処理がNICオフロードされる。短時間で終了しないような処理や、高度な拡張処理は、通常通り、仮想スイッチ200に処理させる。
4.経路切替処理の他の例
経路切替の手段は、上記第2節で説明されたものに限られない。以下、経路切替処理の他の例を説明する。本処理例では、送信パケットの経路が仮想マシン300の内部で分岐する。
図24は、本処理例における仮想マシン300の構成を示すブロック図である。仮想マシン300は、NICパケット送受信機能310、仮想スイッチパケット送受信機能320、分岐機能330、及びプロトコル処理機能340を備えている。プロトコル処理機能340は、プロトコル処理を行うプログラム(典型的には、TCP/IPスタック)により実現される。NICパケット送受信機能310(第1送受信機能)は、ネットワークアダプタ100のデータ直接伝送機能140とパケット送受信を行うデバイスドライバにより実現される。仮想スイッチパケット送受信機能320(第2送受信機能)は、仮想スイッチ200とパケット送受信を行うデバイスドライバにより実現される。
分岐機能330は、プロトコル処理機能340とパケット送受信機能310、320との間に配置されている。分岐機能330は、プロトコル処理機能340から送信パケットを受け取り、その送信パケットをNICパケット送受信機能310あるいは仮想スイッチパケット送受信機能320のいずれか一方に転送する。この転送処理(送信パケットの振り分け)のために、分岐機能330は、フローとパケット転送先との対応関係を示すフローテーブルTBL2を参照する。パケット転送先は、NICパケット送受信機能310(第1パケット転送先)あるいは仮想スイッチパケット送受信機能320(第2パケット転送先)である。
図25は、フローテーブルTBL2を示す概念図である。フローテーブルTBL2は、複数のテーブルエントリを有している。各テーブルエントリは、フローを識別するためのキー(Key)と該当フローの送信パケットに対して行われるアクション(Action)を示している。キーは、フロー識別情報であり、送信パケットのヘッダ情報中の所定のプロトコルヘッダフィールドの組み合わせで構成される。アクションには、送信パケットの転送先が記述されている。例えば、「アクション:NIC」は、送信パケットの転送先がNICパケット送受信機能310(第1パケット転送先)であることを示す。また、「アクション:vswitch」は、送信パケットの転送先が仮想スイッチパケット送受信機能320(第2パケット転送先)であることを意味する。このフローテーブルTBL2は、所定の記憶装置(典型的にはメインメモリ30)に格納される。
分岐機能330は、このフローテーブルTBL2を参照することによって、仮想マシン300の送信パケットを、当該送信パケットのフローに対応付けられたパケット転送先に転送する。より詳細には、分岐機能330は、フロー識別機能331及び添付情報書き換え機能332を備えている。フロー識別機能331は、送信パケットのヘッダ情報に基いて、当該送信パケットのフローを識別する。更に、フロー識別機能331は、フローテーブルTBL2を参照して、当該フローに対応付けられているパケット転送先を判定する。また、添付情報書き換え機能332は、送信パケットの添付情報内の送信インタフェースを、上記判定の結果としてのパケット転送先に書き換える。そして、分岐機能330は、送信パケットを該当するパケット転送先に転送する。
パケット転送先がNICパケット送受信機能310である場合、NICパケット送受信機能310は、分岐機能330から送信パケットを受け取る。NICパケット送受信機能310は、受け取った送信パケットをバッファに格納し、また、ネットワークアダプタ100に対してパケット送出を指示する。ネットワークアダプタ100のデータ直接伝送機能140は、当該バッファから送信パケットを読み出し、送信元の仮想マシン300に対応する送信キュー102に送信パケットを格納する。
パケット転送先が仮想スイッチパケット送受信機能320である場合、仮想スイッチパケット送受信機能320は、分岐機能330から送信パケットを受け取る。仮想スイッチパケット送受信機能320は、受け取った送信パケットをバッファに格納し、また、ハイパーバイザ50にパケット配送を依頼する。ハイパーバイザ50は、仮想スイッチ200に当該送信パケットの処理を指示する。仮想スイッチ200は、当該バッファから送信パケットを読み出し、スイッチ処理を行う。
尚、仮想マシン300は、ネットワークアダプタ100あるいは仮想スイッチ200から受信パケットを受け取る。ネットワークアダプタ100の場合、NICパケット送受信機能310が受信パケットを受け取り、それを分岐機能330に渡す。一方、仮想スイッチ200の場合、仮想スイッチパケット送受信機能320が受信パケットを受け取り、それを分岐機能330に渡す。分岐機能330は、いずれの場合でも受信パケットを同一インタフェースから受信したように見せかける。そのために、添付情報書き換え機能332は、受信パケットの添付情報内の受信インタフェースを、分岐機能330に書き換える。その後、分岐機能330は、受信パケットをプロトコル処理機能340に送る。これにより、プロトコルスタックから複数の受信経路が見えなくなる。
尚、パケットの添付情報は、パケットのデータと関連付けて保持される、パケットの属性や付加情報を指す。添付情報は、受信インタフェースの他、典型的には、パケットの長さ、ペイロードや各プロトコルのヘッダデータの先頭アドレスなどを含む。送信インタフェースや受信インタフェースの“インタフェース”とは、仮想マシン300とネットワークとの仮想的な接続点を指す。図24の例では、ネットワークアダプタ100との伝送路の出入り口と、仮想スイッチ200との伝送路の出入り口とが“インタフェース”である。
本処理例によれば、ネットワークアダプタ100に送信フィルタテーブルFILT2は設けられない。その代わり、仮想マシン300にフローテーブルTBL2が設けられる。経路切替部60は、ネットワークアダプタ100の送信フィルタテーブルFILT2の設定を動的に変更する代わり、各仮想マシン300のフローテーブルTBL2の設定を動的に変更する。具体的には、経路切替部60は、第1経路パターンフローが上述の第1パケット転送先に対応付けられ、第2経路パターンフローが上述の第2パケット転送先に対応付けられるように、フローテーブルTBL2を設定する。その結果、第1経路パターンフローは、仮想スイッチ200を介することなく処理される、すなわち、NICオフロードされる。一方、第2経路パターンフローは、仮想スイッチ200によって処理されることになる。
尚、経路切替部60は、上述の第2節の場合と同様に、ネットワークアダプタ100の受信フィルタテーブルFILT1を設定する。また、受信側と送信側とで経路パターンが非対称になってもよい。
経路切替部60は、例えば、仮想スイッチ200に組み込まれる。図26は、その場合の仮想スイッチ200の機能構成例を示すブロック図である。図26に示される仮想スイッチ200は、既出の図13あるいは図15で示された構成に加えて、分岐機能設定機能255を更に備えている。NIC設定機能250は、ネットワークアダプタ100の受信フィルタテーブルFILT1の設定を行う。一方、分岐機能設定機能255は、仮想マシン300のフローテーブルTBL2の設定を行う。仮想マシン300は、分岐機能設定機能255による設定に応じて、フローテーブルTBL2のエントリ追加・削除・更新を行う。
本処理例は、上述の第1〜第3の実施の形態のいずれとも組み合わせ可能である。上述の説明のうち「ネットワークアダプタ100の送信フィルタテーブルFILT2の設定」を、「仮想マシン300のフローテーブルTBL2の設定」に置換すればよい。
以上、本発明の実施の形態が添付の図面を参照することにより説明された。但し、本発明は、上述の実施の形態に限定されず、要旨を逸脱しない範囲で当業者により適宜変更され得る。
本出願は、2009年12月4日に出願された日本国特許出願2009−276679を基礎とする優先権を主張し、その開示の全てをここに取り込む。

Claims (10)

  1. 処理装置と、
    前記処理装置に接続されたネットワークアダプタと、
    経路切替部と
    を備え、
    前記処理装置は、
    仮想マシンと、
    前記仮想マシンが送受信するパケットを外部との間で中継する仮想スイッチと
    を備え、
    前記ネットワークアダプタは、前記仮想スイッチを介することなく前記仮想マシンに対してパケットを送受信する伝送機能を有し、
    前記経路切替部は、前記仮想マシンが送受信するパケットのフローを、第1経路パターンフローあるいは第2経路パターンフローに切り替え、
    前記経路切替部は、前記第1経路パターンフローを前記ネットワークアダプタの前記伝送機能に処理させ、前記第2経路パターンフローを前記仮想スイッチに処理させる
    サーバ。
  2. 請求項1に記載のサーバであって、
    前記ネットワークアダプタは、
    受信パケットを受け取る受信フィルタと、
    フローと受信アクションとの対応関係を示す受信フィルタテーブルが格納された記憶装置と
    を備え、
    前記受信フィルタは、前記受信フィルタテーブルを参照し、前記受信パケットのフローに対応付けられた前記受信アクションを前記受信パケットに対して行い、
    前記経路切替部は、前記第1経路パターンフローが第1受信アクションに対応付けられ、前記第2経路パターンフローが第2受信アクションに対応付けられるように、前記受信フィルタテーブルを設定し、
    前記第1受信アクションは、前記伝送機能を用いることによって前記受信パケットを前記仮想マシンへ送信することであり、
    前記第2受信アクションは、前記受信パケットを前記仮想スイッチへ送信することである
    サーバ。
  3. 請求項2に記載のサーバであって、
    前記記憶装置には、更に、フローと送信アクションとの対応関係を示す送信フィルタテーブルが格納され、
    前記ネットワークアダプタは、更に、前記伝送機能によって前記仮想マシンから送信パケットを受け取る送信フィルタを備え、
    前記送信フィルタは、前記送信フィルタテーブルを参照し、前記送信パケットのフローに対応付けられた前記送信アクションを前記送信パケットに対して行い、
    前記経路切替部は、前記第1経路パターンフローが第1送信アクションに対応付けられ、前記第2経路パターンフローが第2送信アクションに対応付けられるように、前記送信フィルタテーブルを設定し、
    前記第1送信アクションは、前記送信パケットを外部へ送信することであり、
    前記第2送信アクションは、前記送信パケットを前記受信パケットとして前記受信フィルタへループバックさせることである
    サーバ。
  4. 請求項2に記載のサーバであって、
    前記仮想マシンは、
    前記仮想スイッチを介することなく前記ネットワークアダプタとパケットを送受信する第1送受信機能と、
    前記仮想スイッチとパケットを送受信する第2送受信機能と、
    フローとパケット転送先との対応関係を示すフローテーブルを参照し、前記仮想マシンの送信パケットを、前記送信パケットのフローに対応付けられた前記パケット転送先に転送する分岐機能と
    を備え、
    前記経路切替部は、前記第1経路パターンフローが第1パケット転送先に対応付けられ、前記第2経路パターンフローが第2パケット転送先に対応付けられるように、前記フローテーブルを設定し、
    前記第1パケット転送先は、前記第1送受信機能であり、
    前記第2パケット転送先は、前記第2送受信機能である
    サーバ。
  5. 請求項1乃至4のいずれか一項に記載のサーバであって、
    前記経路切替部は、前記仮想マシンが送受信するパケットに基いてフロー毎の負荷を計測し、
    前記計測された負荷が所定の閾値を超えたフローは、過負荷フローであり、
    前記経路切替部は、前記過負荷フローを前記第1経路パターンフローに切り替える
    サーバ。
  6. 請求項1乃至4のいずれか一項に記載のサーバであって、
    前記経路切替部は、あるフローの所定のパケットを受け取った場合、前記あるフローを前記第1経路パターンフローに切り替える
    サーバ。
  7. 請求項1乃至6のいずれか一項に記載のサーバであって、
    前記経路切替部は、前記仮想スイッチに組み込まれている
    サーバ。
  8. 請求項1乃至6のいずれか一項に記載のサーバであって、
    前記経路切替部は、前記ネットワークアダプタに組み込まれている
    サーバ。
  9. サーバによって実行されるフロー制御プログラムが記録された記録媒体であって、
    前記サーバは、
    処理装置と、
    前記処理装置に接続されたネットワークアダプタと
    を備え、
    前記処理装置は、
    仮想マシンと、
    前記仮想マシンが送受信するパケットを外部との間で中継する仮想スイッチと
    を備え、
    前記ネットワークアダプタは、前記仮想スイッチを介することなく前記仮想マシンに対してパケットを送受信する伝送機能を有し、
    前記フロー制御プログラムは、前記サーバに、経路切替機能を実現させ、
    前記経路切替機能は、前記仮想マシンが送受信するパケットのフローを、第1経路パターンフローあるいは第2経路パターンフローに切り替え、
    前記経路切替機能は、前記第1経路パターンフローを前記ネットワークアダプタの前記伝送機能に処理させ、前記第2経路パターンフローを前記仮想スイッチに処理させる
    記録媒体。
  10. サーバの処理装置に接続されるネットワークアダプタであって、
    前記処理装置は、
    仮想マシンと、
    前記仮想マシンが送受信するパケットを外部との間で中継する仮想スイッチと
    を備え、
    前記ネットワークアダプタは、前記仮想スイッチを介することなく前記仮想マシンに対してパケットを送受信する伝送機能を有し、
    前記ネットワークアダプタは、経路切替部を備え、
    前記経路切替部は、前記仮想マシンが送受信するパケットのフローを、第1経路パターンフローあるいは第2経路パターンフローに切り替え、
    前記経路切替部は、前記第1経路パターンフローを前記伝送機能に処理させ、前記第2経路パターンフローを前記仮想スイッチに処理させる
    ネットワークアダプタ。
JP2011544249A 2009-12-04 2010-11-30 サーバ及びフロー制御プログラム Expired - Fee Related JP5720577B2 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2011544249A JP5720577B2 (ja) 2009-12-04 2010-11-30 サーバ及びフロー制御プログラム

Applications Claiming Priority (4)

Application Number Priority Date Filing Date Title
JP2009276679 2009-12-04
JP2009276679 2009-12-04
JP2011544249A JP5720577B2 (ja) 2009-12-04 2010-11-30 サーバ及びフロー制御プログラム
PCT/JP2010/071316 WO2011068091A1 (ja) 2009-12-04 2010-11-30 サーバ及びフロー制御プログラム

Publications (2)

Publication Number Publication Date
JPWO2011068091A1 JPWO2011068091A1 (ja) 2013-04-18
JP5720577B2 true JP5720577B2 (ja) 2015-05-20

Family

ID=44114938

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2011544249A Expired - Fee Related JP5720577B2 (ja) 2009-12-04 2010-11-30 サーバ及びフロー制御プログラム

Country Status (5)

Country Link
US (1) US9130867B2 (ja)
EP (1) EP2509000A4 (ja)
JP (1) JP5720577B2 (ja)
CN (1) CN102648455B (ja)
WO (1) WO2011068091A1 (ja)

Families Citing this family (69)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP5839032B2 (ja) * 2011-02-24 2016-01-06 日本電気株式会社 ネットワークシステム、コントローラ、及びフロー制御方法
SG194017A1 (en) * 2011-03-30 2013-11-29 Amazon Tech Inc Frameworks and interfaces for offload device-based packet processing
US8774213B2 (en) 2011-03-30 2014-07-08 Amazon Technologies, Inc. Frameworks and interfaces for offload device-based packet processing
US9110703B2 (en) * 2011-06-07 2015-08-18 Hewlett-Packard Development Company, L.P. Virtual machine packet processing
US9191454B2 (en) * 2011-06-27 2015-11-17 Microsoft Technology Licensing, Llc Host enabled management channel
JP5754294B2 (ja) * 2011-08-17 2015-07-29 富士通株式会社 情報処理装置、情報処理方法及び情報処理プログラム
US9215184B2 (en) * 2011-10-17 2015-12-15 Hewlett-Packard Development Company, L.P. Methods of and apparatus for managing non-congestion-controlled message traffic in a datacenter
JP5783632B2 (ja) * 2011-12-14 2015-09-24 Kddi株式会社 ネットワークトラヒック制御装置、制御方法、およびプログラム
WO2013114620A1 (ja) 2012-02-03 2013-08-08 富士通株式会社 仮想マシン制御プログラム、仮想マシン制御方法および情報処理装置
JP2013161283A (ja) * 2012-02-06 2013-08-19 Nec Commun Syst Ltd サーバ、物理ノード、負荷分散方法およびプログラム
WO2013138977A1 (en) 2012-03-19 2013-09-26 Intel Corporation Techniques for packet management in an input/output virtualization system
JP5930181B2 (ja) * 2012-03-21 2016-06-08 日本電気株式会社 通信制御装置、通信制御方法および通信制御プログラム
US8930690B2 (en) 2012-03-21 2015-01-06 Microsoft Corporation Offloading packet processing for networking device virtualization
JP5970954B2 (ja) * 2012-05-17 2016-08-17 日本電気株式会社 計算機、データ変換装置、通信方法及びプログラム
WO2013177316A2 (en) * 2012-05-22 2013-11-28 Xockets IP, LLC Efficient packet handling, redirection, and inspection using offload processors
WO2013186825A1 (en) * 2012-06-12 2013-12-19 Nec Corporation Computer system, communication control server, communication control method, and program
US9092269B2 (en) * 2012-06-21 2015-07-28 Microsoft Technology Licensing, Llc Offloading virtual machine flows to physical queues
JP6003308B2 (ja) * 2012-07-06 2016-10-05 沖電気工業株式会社 通信装置、方法及びプログラム
US8943587B2 (en) * 2012-09-13 2015-01-27 Symantec Corporation Systems and methods for performing selective deep packet inspection
US9548920B2 (en) * 2012-10-15 2017-01-17 Cisco Technology, Inc. System and method for efficient use of flow table space in a network environment
US9602334B2 (en) 2013-01-22 2017-03-21 International Business Machines Corporation Independent network interfaces for virtual network environments
US9317310B2 (en) * 2013-01-31 2016-04-19 Broadcom Corporation Systems and methods for handling virtual machine packets
EP2974180B1 (en) * 2013-03-12 2018-11-07 Nec Corporation A packet data network, a method for operating a packet data network and a flow-based programmable network device
US8955155B1 (en) 2013-03-12 2015-02-10 Amazon Technologies, Inc. Secure information flow
JP2014195178A (ja) * 2013-03-28 2014-10-09 Fujitsu Ltd 情報処理装置、送信制御方法および送信制御プログラム
TWI520530B (zh) * 2013-05-17 2016-02-01 智邦科技股份有限公司 封包交換裝置及方法
EP3007391B1 (en) * 2013-05-27 2019-06-26 Nec Corporation Network control device, network control method, program, and communication system
CN103346981B (zh) 2013-06-28 2016-08-10 华为技术有限公司 虚拟交换方法、相关装置和计算机系统
US9325630B2 (en) 2013-07-05 2016-04-26 Red Hat, Inc. Wild card flows for switches and virtual switches based on hints from hypervisors
US9755963B2 (en) * 2013-07-09 2017-09-05 Nicira, Inc. Using headerspace analysis to identify flow entry reachability
CN104348740B (zh) * 2013-07-31 2018-04-10 国际商业机器公司 数据包处理方法和系统
US10027605B2 (en) 2013-08-26 2018-07-17 Vmware, Inc. Traffic and load aware dynamic queue management
US9634948B2 (en) 2013-11-07 2017-04-25 International Business Machines Corporation Management of addresses in virtual machines
US9124536B2 (en) 2013-12-12 2015-09-01 International Business Machines Corporation Managing data flows in overlay networks
US9288135B2 (en) * 2013-12-13 2016-03-15 International Business Machines Corporation Managing data flows in software-defined network using network interface card
KR102160252B1 (ko) 2013-12-18 2020-09-25 삼성전자주식회사 가상 스위칭 방법 및 장치
JP6591143B2 (ja) * 2014-03-31 2019-10-16 株式会社東芝 通信装置、通信方法、通信システムおよびプログラム
US9887939B2 (en) 2015-03-11 2018-02-06 International Business Machines Corporation Transmitting multi-destination packets in overlay networks
KR101493933B1 (ko) * 2014-05-26 2015-02-16 주식회사 파이오링크 하드웨어 스위치 및 소프트웨어 스위치를 사용하여 가상 머신의 통신을 지원하기 위한 방법, 장치, 시스템 및 컴퓨터 판독 가능한 기록 매체
US9515933B2 (en) * 2014-05-30 2016-12-06 International Business Machines Corporation Virtual network data control with network interface card
US9515931B2 (en) * 2014-05-30 2016-12-06 International Business Machines Corporation Virtual network data control with network interface card
US10261814B2 (en) * 2014-06-23 2019-04-16 Intel Corporation Local service chaining with virtual machines and virtualized containers in software defined networking
US9667754B2 (en) * 2014-08-11 2017-05-30 Oracle International Corporation Data structure and associated management routines for TCP control block (TCB) table in network stacks
WO2016056210A1 (ja) * 2014-10-10 2016-04-14 日本電気株式会社 サーバ、フロー制御方法および仮想スイッチ用プログラム
US9762457B2 (en) 2014-11-25 2017-09-12 At&T Intellectual Property I, L.P. Deep packet inspection virtual function
US10812632B2 (en) * 2015-02-09 2020-10-20 Avago Technologies International Sales Pte. Limited Network interface controller with integrated network flow processing
US10924381B2 (en) 2015-02-19 2021-02-16 Arista Networks, Inc. System and method of processing in-place adjacency updates
US10044676B2 (en) 2015-04-03 2018-08-07 Nicira, Inc. Using headerspace analysis to identify unneeded distributed firewall rules
US9781209B2 (en) 2015-08-20 2017-10-03 Intel Corporation Techniques for routing packets between virtual machines
WO2017071834A1 (en) * 2015-10-30 2017-05-04 Nec Europe Ltd. Method for offloading data-plane functions in networks operated with data-plane/control-plane separated network functions
US20170171298A1 (en) * 2015-12-09 2017-06-15 Intel Corporation Enhanced virtual switch for network function virtualization
US10623339B2 (en) * 2015-12-17 2020-04-14 Hewlett Packard Enterprise Development Lp Reduced orthogonal network policy set selection
JP6495872B2 (ja) * 2016-08-17 2019-04-03 日本電信電話株式会社 移行システム、移行方法および移行プログラム
US10193968B2 (en) 2016-10-14 2019-01-29 Google Llc Virtual router with dynamic flow offload capability
US20180181421A1 (en) * 2016-12-27 2018-06-28 Intel Corporation Transferring packets between virtual machines via a direct memory access device
KR102520017B1 (ko) 2016-12-31 2023-04-11 인텔 코포레이션 이종 컴퓨팅을 위한 시스템들, 방법들, 및 장치들
US10587479B2 (en) 2017-04-02 2020-03-10 Nicira, Inc. GUI for analysis of logical network modifications
JP6855906B2 (ja) * 2017-04-25 2021-04-07 富士通株式会社 スイッチプログラム、スイッチング方法及び情報処理装置
EP3627781B1 (en) * 2017-06-30 2021-09-01 Huawei Technologies Co., Ltd. Data processing method and network interface card
US11469953B2 (en) 2017-09-27 2022-10-11 Intel Corporation Interworking of legacy appliances in virtualized networks
CN116260776A (zh) * 2017-10-24 2023-06-13 英特尔公司 硬件辅助的虚拟交换机
JP6958440B2 (ja) * 2018-03-08 2021-11-02 富士通株式会社 情報処理装置、情報処理システム及びプログラム
CN111083064A (zh) * 2018-10-19 2020-04-28 顾播网株式会社 在多层网络环境中处理信息包的方法以及其装置
US20210021517A1 (en) * 2019-07-19 2021-01-21 Arista Networks, Inc. Avoiding recirculation of data packets in a network device
US11740919B2 (en) * 2020-05-18 2023-08-29 Dell Products L.P. System and method for hardware offloading of nested virtual switches
JP7164267B2 (ja) * 2020-12-07 2022-11-01 インテル・コーポレーション ヘテロジニアスコンピューティングのためのシステム、方法及び装置
JP2022166934A (ja) * 2021-04-22 2022-11-04 富士通株式会社 情報処理装置、過負荷制御プログラムおよび過負荷制御方法
US20230020114A1 (en) * 2021-06-30 2023-01-19 Juniper Networks, Inc. Service aware routing using network interface cards having processing units
US11909656B1 (en) * 2023-01-17 2024-02-20 Nokia Solutions And Networks Oy In-network decision for end-server-based network function acceleration

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2007522583A (ja) * 2004-02-13 2007-08-09 インテル・コーポレーション 動的に拡張可能な仮想スイッチの装置および方法
JP2008102929A (ja) * 2006-10-17 2008-05-01 Internatl Business Mach Corp <Ibm> データ処理システム内でネットワーク入出力(i/o)アダプタと通信するためにネットワーク・デバイス・ドライバによって使用されるバッファ・データ構造にアクセスするためのアドレス変換を管理するための方法、コンピュータ・プログラム、および装置(キュー・データ構造およびキャッシュされたアドレス変換を使用してネットワーク・アダプタと通信するための装置および方法)
JP2009506618A (ja) * 2005-08-23 2009-02-12 ネトロノーム システムズ インク 伝送情報を処理して、転送するシステムおよび方法
JP2009151745A (ja) * 2007-11-28 2009-07-09 Hitachi Ltd 仮想マシンモニタ及びマルチプロセッサシステム
JP2009176103A (ja) * 2008-01-25 2009-08-06 Hitachi Information Systems Ltd 仮想ネットワークシステムのnic接続制御方法とシステムおよびプログラム

Family Cites Families (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7007103B2 (en) * 2002-04-30 2006-02-28 Microsoft Corporation Method to offload a network stack
JP4054714B2 (ja) * 2003-04-28 2008-03-05 株式会社リコー 昇降圧型dc−dcコンバータ
CN101351995B (zh) * 2004-01-14 2011-02-02 利福斯通网络公司 管理网络节点中的处理利用
US7797460B2 (en) * 2005-03-17 2010-09-14 Microsoft Corporation Enhanced network system through the combination of network objects
US7693138B2 (en) * 2005-07-18 2010-04-06 Broadcom Corporation Method and system for transparent TCP offload with best effort direct placement of incoming traffic
US7643482B2 (en) * 2006-06-30 2010-01-05 Sun Microsystems, Inc. System and method for virtual switching in a host
US8543808B2 (en) * 2006-08-24 2013-09-24 Microsoft Corporation Trusted intermediary for network data processing
JP2008093316A (ja) 2006-10-16 2008-04-24 Aruze Corp スロットマシン及びそのプレイ方法
US8819675B2 (en) 2007-11-28 2014-08-26 Hitachi, Ltd. Virtual machine monitor and multiprocessor system
JP5096226B2 (ja) 2008-05-16 2012-12-12 パナソニック株式会社 広角レンズ
US8195774B2 (en) * 2008-05-23 2012-06-05 Vmware, Inc. Distributed virtual switch for virtualized computer systems
US7983257B2 (en) * 2008-07-18 2011-07-19 Emulex Design & Manufacturing Corporation Hardware switch for hypervisors and blade servers

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2007522583A (ja) * 2004-02-13 2007-08-09 インテル・コーポレーション 動的に拡張可能な仮想スイッチの装置および方法
JP2009506618A (ja) * 2005-08-23 2009-02-12 ネトロノーム システムズ インク 伝送情報を処理して、転送するシステムおよび方法
JP2008102929A (ja) * 2006-10-17 2008-05-01 Internatl Business Mach Corp <Ibm> データ処理システム内でネットワーク入出力(i/o)アダプタと通信するためにネットワーク・デバイス・ドライバによって使用されるバッファ・データ構造にアクセスするためのアドレス変換を管理するための方法、コンピュータ・プログラム、および装置(キュー・データ構造およびキャッシュされたアドレス変換を使用してネットワーク・アダプタと通信するための装置および方法)
JP2009151745A (ja) * 2007-11-28 2009-07-09 Hitachi Ltd 仮想マシンモニタ及びマルチプロセッサシステム
JP2009176103A (ja) * 2008-01-25 2009-08-06 Hitachi Information Systems Ltd 仮想ネットワークシステムのnic接続制御方法とシステムおよびプログラム

Also Published As

Publication number Publication date
EP2509000A4 (en) 2017-09-20
EP2509000A1 (en) 2012-10-10
CN102648455A (zh) 2012-08-22
JPWO2011068091A1 (ja) 2013-04-18
US20110320632A1 (en) 2011-12-29
CN102648455B (zh) 2015-11-25
US9130867B2 (en) 2015-09-08
WO2011068091A1 (ja) 2011-06-09

Similar Documents

Publication Publication Date Title
JP5720577B2 (ja) サーバ及びフロー制御プログラム
JP5839032B2 (ja) ネットワークシステム、コントローラ、及びフロー制御方法
KR101747518B1 (ko) 소프트웨어 정의 네트워크에서의 가상화된 컨테이너 및 가상 머신을 통한 로컬 서비스 체이닝
US10178054B2 (en) Method and apparatus for accelerating VM-to-VM network traffic using CPU cache
US8254261B2 (en) Method and system for intra-host communication
US20200177510A1 (en) High Performance, Scalable Multi Chip Interconnect
JP6855906B2 (ja) スイッチプログラム、スイッチング方法及び情報処理装置
US8446824B2 (en) NUMA-aware scaling for network devices
US8726093B2 (en) Method and system for maintaining direct hardware access in the event of network interface card failure
US20170161090A1 (en) Communication control program, communication control method, and information processing device
US20150163172A1 (en) Server switch integration in a virtualized system
KR101150928B1 (ko) 네트워크 아키텍처 및 이를 이용한 패킷 처리 방법
US11343187B2 (en) Quantitative exact match distance in network flows
US10630587B2 (en) Shared memory communication in software defined networking
US10108566B2 (en) Apparatus and method for virtualizing network interface
EP2417737B1 (en) Transmit-side scaler and method for processing outgoing information packets using thread-based queues
Papathanail et al. Towards fine-grained resource allocation in NFV infrastructures
US20230109396A1 (en) Load balancing and networking policy performance by a packet processing pipeline
Jung et al. Gpu-ether: Gpu-native packet i/o for gpu applications on commodity ethernet
Landau et al. Plugging the hypervisor abstraction leaks caused by virtual networking
US11855889B2 (en) Information processing device, information processing method, and computer-readable medium of providing dummy response when memory search is unnecessary
EP4187868A1 (en) Load balancing and networking policy performance by a packet processing pipeline
JP6778169B2 (ja) 仮想化通信装置、および、仮想化通信方法
JP5359357B2 (ja) パケット処理装置、該処理装置に用いられるパケット処理順序制御方法及びパケット処理順序制御プログラム
CN116489115A (zh) 使用提示的有效数据包重新排序

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20131008

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20140901

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20141031

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20150224

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20150309

R150 Certificate of patent or registration of utility model

Ref document number: 5720577

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

LAPS Cancellation because of no payment of annual fees