JP2016009486A - ソフトウェア確定ネットワークにおける仮想マシンと仮想化コンテナを用いたローカルサービスチェーン - Google Patents

ソフトウェア確定ネットワークにおける仮想マシンと仮想化コンテナを用いたローカルサービスチェーン Download PDF

Info

Publication number
JP2016009486A
JP2016009486A JP2015104059A JP2015104059A JP2016009486A JP 2016009486 A JP2016009486 A JP 2016009486A JP 2015104059 A JP2015104059 A JP 2015104059A JP 2015104059 A JP2015104059 A JP 2015104059A JP 2016009486 A JP2016009486 A JP 2016009486A
Authority
JP
Japan
Prior art keywords
lsc
packet
container
buffer
vnic
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.)
Granted
Application number
JP2015104059A
Other languages
English (en)
Other versions
JP6016984B2 (ja
Inventor
クーパー トレヴァー
Cooper Trevor
クーパー トレヴァー
ジェイ.スケリー ブライアン
J Skerry Brian
ジェイ.スケリー ブライアン
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.)
Intel Corp
Original Assignee
Intel 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 Intel Corp filed Critical Intel Corp
Publication of JP2016009486A publication Critical patent/JP2016009486A/ja
Application granted granted Critical
Publication of JP6016984B2 publication Critical patent/JP6016984B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L65/00Network arrangements, protocols or services for supporting real-time applications in data packet communication
    • H04L65/40Support for services or applications
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/0223User address space allocation, e.g. contiguous or non contiguous base addressing
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/16Combinations of two or more digital computers each having at least an arithmetic unit, a program unit and a register, e.g. for a simultaneous processing of several programs
    • G06F15/163Interprocessor communication
    • G06F15/173Interprocessor communication using an interconnection network, e.g. matrix, shuffle, pyramid, star, snowflake
    • G06F15/17306Intercommunication techniques
    • G06F15/17331Distributed shared memory [DSM], e.g. remote direct memory access [RDMA]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45558Hypervisor-specific management and integration aspects
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45558Hypervisor-specific management and integration aspects
    • G06F2009/4557Distribution of virtual machine instances; Migration and load balancing
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45558Hypervisor-specific management and integration aspects
    • G06F2009/45595Network integration; Enabling network access in virtual machine instances
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/15Use in a specific computing environment
    • G06F2212/154Networked environment

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Hardware Design (AREA)
  • Mathematical Physics (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Multimedia (AREA)
  • Data Exchanges In Wide-Area Networks (AREA)

Abstract

【課題】ソフトウェア確定ネットワーク(SDN)において仮想マシン(VM)または仮想化コンテナを用いてローカルサービスチェーン(LSC)を実施する。
【解決手段】LSCは、複数のVM又はコンテナによってホストされた複数の仮想ネットワーク装置を介して実施される。それぞれのLSCは、LSCに対して定められる仮想ネットワーク装置によって実行されるサービスのシーケンスを含んでいる。サービスチェーンの実行に関して、パケットデータが、カットスルーメカニズムを使用してVM又はコンテナ間で転送される。カットスルーの下では、パケットデータが、v(仮想)NIC上のRxバッファへ直接的に書込まれる。それぞれの仮想ネットワーク装置及び/又は次のvNICに係るホストVM又はコンテナに、パケットデータが書込まれるべきRxバッファ又はRxポートを知らせるためにLSC指標とフローテーブルが使用される。
【選択図】図1

Description

本発明は、ソフトウェア確定ネットワークにおける仮想マシンと仮想化コンテナを用いたローカルサービスチェーンに関する。
コンピュータネットワークへのアクセスは、今日のコンピュータ使用のユビキタス(ubiquitous)な部分となってきた。共有されたネットワークリソースにアクセスするためにエンタープライズ環境におけるローカルエリアネットワーク(LAN)にアクセスすること、または、LANまたは他のアクセスポイントを介してインターネットにアクセスすることにしろ、ユーザは、コンピュータネットワークを介してアクセスされる少なくとも一つのサービスに常にログオンしているようである。さらに、クラウドベースのサービスの急な拡大は、なお、さらなるコンピュータネットワークの使用を導いてきており、これらのサービスは、常に一般的なものになることが予測されている。
ネットワークは、ルータ、スイッチ、ブリッジ、ゲートウェイ、および、アクセスポイントを含む種々のタイプの装置によって促進される。大規模なネットワークのインフラストラクチャは、典型的に、電気通信クラスのネットワークエレメントの使用を含む。エレメントは、シスコシステム、ジュピターネットワーク、アルカテルルーセント、アイビーエム、および、ヒューレットパッカードといった会社によって制作されたスイッチおよびルータを含んでいる。そうしたテレコムスイッチは、非常に洗練されており、非常に高いバンド幅において動作し、かつ、先進的なルーティング機能を提供する。同様に、異なるサービス品質(Quality of Service:QoS)レベルもサポートする。プライベートネットワーク、ローカルエリアネットワーク(LAN)といったものは、ビジネスおよび家庭ユーザによって最も一般に使用されている。ハードウェア及び/又はソフトウェアベースのファイアウォールおよび類似のものを使用することもまた、多くのビジネスネットワークにとって一般的である。
近年、特にサーバー展開およびデータセンタにおいて、コンピュータシステムの仮想化が急速な成長を見せている。従来のアプローチの下で、サーバーは、物理的ハードウェアリソース上で直接的にオペレーティングシステムの一つのインスタンスを実行する。リソースは、CPU、RAM、ストレージデバイス(例えば、ハードディスク)、ネットワークコントローラ、I/Oポート、等といったものである。仮想マシン(VM)を使用した仮想化アプローチの下では、物理的ハードウェアリソースが、仮想リソースの対応するインスタンスをサポートするために使用される。複数のVMがサーバーの物理的ハードウェアリソース上で稼働するようにであり、ここで、それぞれの仮想マシンは、自分自身のCPU割り当て、メモリ割り当て、ストレージデバイス、ネットワークコントローラ、I/Oポート、等を含んでいる。同一または異なるオペレーティングシステムの複数のインスタンスが、そして、複数のVM上で稼働する。さらに、仮想マシンマネージャ(VMM)または「ハイパーバイザ(”hypervisor”)」の使用を通じて、サーバーが稼働している間に、仮想リソースを動的に割り当てることができ、サーバーがシャットダウンされるよう要求することなく、VMインスタンスを追加、シャットダウン、または、再利用することができる。このことは、サーバーの利用、および、サーバー処理リソースのより良い使用、特に、マルチコアプロセッサ及び/又はマルチプロセッササーバーに対して、より大きな柔軟性を提供している。
別の仮想化アプローチの下では、VMMまたはハイパーバイザを使用せずに仮想化された「コンテナ(”container”)」を使用する、コンテナベースのOS仮想化が使用される。それぞれのVM上でオペレーティングシステムの別々のインスタンスをホストする代わりに、コンテナベースのOS仮想化は、それぞれのコンテナに対する別々のシステムのインスタンスおよびソフトウェアライブラリを用いて、一つのOSカーネルを複数のコンテナにわたって共有する。VMのように、それぞれのコンテナに対して割り当てられた仮想リソースも存在する。
ソフトウェア確定ネットワーク(SDN)およびネットワーク機能仮想化(NFV)の展開も、また、最近の数年において急速な成長を見せている。SDNの下では、トラフィックがどこに送付されるか(コントロールプレーン)を決定するシステムが、トラフィックを選択された宛先(データプレーン)まで転送する根本的なシステムのために切り離される。SDNコンセプトは、ネットワークの仮想化を促進するために使用されてよく、サービスプロバイダが、ソフトウェアアプリケーションおよびAPI(Application Program Interface)を介して、ネットワークサービスの種々の態様を管理することを可能にしている。NFVの下では、ソフトウェアアプリケーションとしてネットワーク機能を仮想化することによって、ネットワークサービスプロバイダは、ネットワーク構成における柔軟性を得ることができ、利用可能なバンド幅、コスト削減、および、新たなサービスに対するより早いタイムツーマーケット(time to market)、の最適化を含む著しい利益を可能にしている。
「サービスチェーン(”service chaining”)」は、しばしば、SDNのコンテクストにおいて、種々の物理的コンピュータノードにおいて実施される一連のネットワークサービスエレメントによって処理されるネットワークを通過しているパケットの流れを記述するために使用される。ここにおいて使用されるように、用語「ローカルサービスチェーン(”Local service chaining”)」(LSC)は、VMまたは仮想化コンテナにおいて実施される一連のネットワークサービスエレメントによって処理されるコンピュータノードに対して内部であるネットワークを通過しているパケットのフローを記述するために使用されている。従来のアプローチの下で、LSCは、仮想スイッチ(Virtual Swith:VS)またはVM間でパケットをスイッチするための同等なメカニズムの使用を採用している。このスイッチのメカニズムは、コンピュータリソースを必要とし、システムのスループットキャパシティに否定的な影響を与える。この問題は、LSCを通じて大量のトラフィックが処理される場合に悪化される。それぞれのパケットの処理は、一つまたはそれ以上のVSを介した複数のデータ転送を伴うだろうからである。
上記の態様および本発明に付随する多くの利点は、以降の詳細な説明を参照することによって、より良くそれらが理解されるので、より容易に理解されよう。類似の数字は、他に断らない限り、種々のビュー全てを通じて類似のパーツを参照するものである。
図1は、LSCの使用を通じてパケット処理オペレーションを実行するように構成されている計算プラットフォームのための仮想マシンを含むアーキテクチャを説明する回路図である。 図1aは、図1の計算プラットフォームの拡張版を説明する回路図であり、パケットデータが、ネットワークインターフェイスから直接的に仮想ネットワークインターフェイスコントローラ(vNIC)における受信(Rx)バッファに対して転送される。 図1bは、LSCの使用を通じてパケット処理オペレーションを実行するように構成されている仮想化コンテナを含む計算プラットフォームのためのアーキテクチャを説明する回路図である。 図2は、LSCの実施を促進するように、計算プラットフォーム上で実行されているソフトウェアによって行われるオペレーションとロジックを説明するフローチャートである。 図3は、図1のアーキテクチャに係る共有メモリ領域におけるRxFIFOキューの詳細をさらに説明する回路図である。 図4は、LSC IDを使用してLSCオペレーションを実施するための、図1に係るアーキテクチャのフローテーブルの中に含まれる典型的なデータの第1のセットを説明するダイヤグラムである。 図4aは、フローIDを使用してLSCオペレーションを実施するための、図1に係るアーキテクチャのフローテーブルの中に含まれる典型的なデータの第2のセットを説明するダイヤグラムである。 図4bは、既定のネットワークポートにおいて受信された全てのパケットに対して既定のLSCを実施するための、図1に係るアーキテクチャのフローテーブルの中に含まれる典型的なデータの第3のセットを説明するダイヤグラムである。 図5は、仮想マシンを含む第1の典型的なホストプラットフォームのハードウェアとソフトウェアのアーキテクチャに係る回路であり、ここにおいて開示される実施例の態様は、これを介して実行され得る。 図6は、コンテナベースの仮想化を実施するコンテナを含む第2の典型的なホストプラットフォームのハードウェアとソフトウェアのアーキテクチャに係る回路であり、ここにおいて開示される実施例の態様は、これを介して実行され得る。
ソフトウェア確定ネットワーク(Software Defined Networking)において仮想マシンまたは仮想化コンテナを用いたローカルサービスチェーン(local service chaining)を実施するための方法、ソフトウェア、および、装置に係る実施例が、ここにおいて説明される。以降の説明において、ここにおいて開示され、説明される実施例について完全な理解を提供するために数多くの所定の詳細が明らかにされる。当業者であれば、しかしながら、一つ以上の所定の詳細がなくても、または、他の方法、コンポーネント、材料、等を用いても、本発明が実施され得ることが理解されよう。他のインスタンスにおいては、本発明の態様が不明確になることを避けるために、よく知られた構成、材料、または、オペレーションについて、詳細には示されず、または、説明されない。
明確化のために、ここにおける図面の中の個々のコンポーネントは、また、所定の参照番号の他に、図面におけるラベルによっても参照され得る。加えて、所定のタイプのコンポーネント(所定のコンポーネントとは対照的に)を参照している参照番号は、「典型的(”typical”)」であることを意味する「(typ)」が以降に続く参照番号によって示されている。こうしたコンポーネントの構成は、存在するが簡素化と明確化のために図面には示されない類似のコンポーネントについて典型的なものであり、または、そうでなければ、別個の参照番号を用いてラベル付けされていない類似のコンポーネントついて典型的なものである。反対に、「(typ)」は、開示された機能、実施、目的、等のために典型的に使用されるコンポーネント、エレメント等を意味するように理解されるべきではない。
ここにおいて使用されるように、用語「仮想装置」、「仮想ネットワーク装置」、「ネットワーク装置」、または、単に「装置」は、互換的に使用され得る。加えて、ここにおける目的のために、請求項を含めて、ソフトウェア確定ネットワークに関する、または、ネットワーク機能仮想化を実施するように構成された、あらゆるソフトウェアベースの装置は、より一般的に「仮想装置」として参照される。仮想ネットワーク装置は、ネットワーク機能仮想化及び/又はソフトウェア確定ネットワークに関するオペレーションを実施するように構成されたあらゆるネットワーク装置または仮想化エンティティを含むという理解によるものである。従って、以降の説明における仮想装置という用語は、同様に、全てのNFV装置を含んでいる。
ここにおいて説明される実施例に係る態様に従えば、「カットスルー(”cut−through”)」メカニズムを作成することによって、パケットスループットが加速される。メカニズムにより、パケットは、仮想スイッチを使用することなく、仮想ネットワーク装置と類似のSDNコンポーネントとの間で転送され得る。このことは、部分的に、「ローカルサービスチェーン(LSC)」を介して促進される。LSCは、ここにおいて、計算ノードに対して内部に在るネットワークを横断するパケットのフローを記述するために使用され、パケットが、複数の仮想マシンまたは仮想化コンテナにおいて実施される一連のネットワークサービスエレメント(例えば、仮想ネットワーク装置)によって処理される。
例示として、かつ、限定することなく、図1は、LSCの使用を通じてパケット処理オペレーションを実行するように構成されている計算ノード(例えば、サーバーといった計算プラットフォーム)のためのアーキテクチャ100を示している。アーキテクチャ100は、ネットワークインターフェイス104に接続された計算プラットフォーム102を含んでいる。ネットワークインターフェイスは、計算プラットフォーム上に統合されてよく(例えば、ネットワークインターフェイスコントローラ(NIC)として)、または、そうでなければ、動作可能に計算プラットフォームに接続されてよい(例えば、PCIe(ペリフェラルコンポーネントインターコネクトエクスプレス)拡張スロットにインストールされたPCIeカードとして)。計算プラットフォーム102は、OSメモリ107において稼働しているホストオペレーティングシステム(OS)106を含んでいる。OSメモリは、アプリケーションメモリ空間108で実行している複数のアプリケーションをホストするように構成されており、アプリケーションメモリ空間は、ホストOSの上に示されている。アプリケーションメモリ空間は、仮想スイッチ109と、N個の仮想マシン112をホストするように構成されているハイパーバイザ110とを含んでいる。N個の仮想マシンは、VM1、VM2およびVMNとラベル付けされた仮想マシンによって示されている。ソフトウェアコンポーネントは、さらに、SDNコントローラ114を含んでいる。
ネットワークインターフェイス104は、Port1、Port2・・・PortMとラベル付けされたM個のネットワークポート116を含んでいる。ここで、Mは、Nと同一または異なってよい。それぞれのネットワークポート116は、受信(Rx)バッファ118と送信(Tx)バッファ120とを含んでいる。ここでの図面において使用されるように、示されているRxとTxバッファおよびRxとTxキューも、また、同一場所にあるRxとTxポートを表している。混乱を低減するために、RxとTxポートは、別個に示されていないが、当業者であれば、それぞれのRxとTxポートは、一つまたはそれ以上のRxとTxバッファ及び/又はキューを含むことが理解されよう。
一般的に、ネットワークインターフェイスは、RxとTxポートにおいて実施される比較的に小さなRxとTxバッファを含んでよく、そして、より大きなRxとTxバッファは、複数のRxとTxポートにわたり共有されるネットワークインターフェイス上の入力/出力(IO)メモリにおいて実施され得る。図示された実施例においては、IOメモリの少なくとも一部分は、ホストOS106のOSメモリ107においてNICドライバ124によって構成されるメモリマップドIO(MMIO)122である。MMIO122は、MMIO122におけるメモリバッファと計算プラットフォーム102上のシステムメモリにおけるバッファとの間のダイレクトメモリアクセス(DMA)データ転送をサポートするように構成されている。さらなる詳細が以下に説明される。
仮想スイッチ109は、計算プラットフォーム102の内側でSDNスイッチオペレーションを実施するように構成されているソフトウェアベースのエンティティである。図示された実施例において、仮想スイッチ108は、ネットワークインターフェイス104上の物理的RxとTxポートそれぞれに対する(例えば、ポート1−ポートMそれぞれに対するもの)仮想RxとTxポート、および、仮想マシンVM1−VMNそれぞれに対する仮想RxとTxポート、を含んでいる。ネットワークインターフェイス側の仮想ポートは、Rx仮想ポート126およびTx仮想ポート127として示されており、一方、VM側の仮想ポートは、Rx仮想ポート128およびTx仮想ポート129として示されている。さらに示されるように、RxとTxポート126、127、128、および、129それぞれの一部分は、システムメモリアドレス空間の共有メモリ領域134(共有アドレス空間としても参照されるもの)にオーバーラップするものとして示されている。加えて、RxとTxポート130および132のペアは、さらに、それぞれの仮想NIC(vNIC)の中に拡張しているように示されている。vNIC1、vNIC2、および、vNICNによって示されるようにであり、ここで、vNICは、仮想マシンVM1、VM2、および、VMNそれぞれと関連付けされている。
仮想マシンVM1、VM2、および、VMNそれぞれは、仮想装置136と3つのアプリケーション138を含んでいるものとして示されている。その仮想装置とアプリケーションが稼働している対応するVMを特定している指標を伴うものである。例えば、VM1に対して、仮想装置は「装置1(”Appliance1”)」とラベル付けされ、アプリケーションは「アプリケーション1A(”Application1A”)」、「アプリケーション1B」、および、「アプリケーション1C」とラベル付けされている。一般的に、それぞれの仮想装置136は、一つまたはそれ以上のアプリケーション138を介して実施され得るものであり、3つのアプリケーションを包含することは単に説明目的のためである。計算プラットフォーム102のオペレーションの最中に、仮想装置136それぞれは、一つまたはそれ以上のパケット処理サービスを実行するように構成されている。さらに、パケット処理サービスは、それぞれのパケットに関連するパケットフローのために適用可能なLSCによって定められるように、チェーン方式(chained manner)で実施される。
ローカルサービスチェーンを使用したチェーンパケット処理サービスのコンセプトは、さらに、パケット140の処理に関連して示されたオペレーションとデータ転送を介して図1において説明されており、図2において示されるフローチャート200をさらに参照する。パケット140はIP(インターネットプロトコル)パケットとして示されており、この典型的なIPパケットの使用は、パケットがIPアドレスを使用することを意味している。IPアドレスは、パケット140が、ネットワークにおいてどこに転送され、どこで計算プラットフォーム102によって扱われるかを決定するように、部分的に、使用されるものである。フローチャート200のブロック202において示されるように、プロセスは、ネットワークインターフェイス104のポート1においてネットワークから受信されているパケット140を用いて開始する。一般的に、パケットデータは、データのビットストリームとしてネットワークのリンクにわたり転送される。例えば、イーサネット(登録商標)(Ethrnet)ネットワークについて、パケットデータは、イーサネットフレームのストリームとして転送される。ポート1において、適用可能な物理層(PHY)オペレーションが実行され、仮想装置136によって処理されるべきパケットデータをカプセル化したイーサネットパケットを抽出する。抽出されたイーサネットパケットは、ポート1のRxバッフの中にバッファされる。
次に、ブロック204において、イーサネットパケットからIPパケットが抽出される。任意的に、レイヤ4又はより高いレベルのパケットが抽出され得る。適用可能なものとしてである。一般的に、ブロック204のオペレーションは、ネットワークインターフェイス104、ネットワークスタック142として示されているOSソフトウェアベースのネットワークコンポーネント、または、分離処理(split processing)スキームを使用している2つの組合せ、のいずれかによって実行され得る。例えば、より多くのいくつかの最近のNICは、レイヤ3(IP)のパケット処理オペレーションをサポートし、かつ、TCP(トランザクションコントロールプロトコル)のパケット処理オペレーションもサポートし得る。他のレイヤ4及びより高いパケ処理は、たいてい、ネットワークスタック142におけるソフトウェアコンポーネントを介して実行される。とはいえ、これらも、また、NICまたは類似のネットワークインターフェイスによって実施され得るものである。
ブロック206においては、パケットのフロー分類が実行される。このことは、たいてい、受信されたパケットが(もしあれば)属するパケットフローを特定するために、パケットヘッダまたはヘッダにおいて適用可能なヘッダフィールドを検査することを含んでいる。以下にさらに詳細に説明されるように、いくつかの実施例において、パケットフロー情報は、パケットヘッダフィールドにおいて明確に定義され得る。パケットフロー分類は、また、複数のフィールドにおけるデータを使用して実行され得る。よく知られたNテュープル(N−tuple)パケット分類技術の使用といったものを通じてである。
一般的に、パケットヘッダ検査は、以下のスキームの一つまたはそれ以上を使用して行われ得る。一つの実施例において、パケットは、ポート116におけるRxバッファからOSメモリ107におけるRxバッファの中にDMAされる(例えば、DMA書込みオペレーションを使用する)。例えば、一つの実施例において、NICポートのRxバッファにおけるメモリ空間は、サーキュラー(circular)FIFOポインタを使用するFIFO(ファーストイン、ファーストアウト)キューに対して割り当てられ、かつ、FIFOヘッダポインタは、Rxバッファ144の中にDMAされたパケットを指し示す。FIFOキューがどのようにオペレーションするかのさらなる詳細は、一つの実施例に従って、図3において示され、以下に説明される。代替として、パケットヘッダだけが、Rxバッファ144の中にDMAされる。さらに別のオプションとして、パケットヘッダデータは、パケットデータまたはヘッダのいずれもRxバッファ144の中にコピーすることなしに、「現場で(”in place”)」読出される。このインスタンスにおいては、少ない数量のパケットに対するパケットヘッダデータが、ネットワークスタック142またはホストOS106におけるフロー分類器146の中に読出される。同様に、ネットワークインターフェイス104によって実行されるフロー分類のために、パケットヘッダデータが現場で読出され得る。しかしながら、このインスタンスにおいて、バッファは、典型的にはMMIO122(図示なし)から典型的には分離しているネットワークインターフェイス104上のメモリの中に置かれている。
フロー分類の結果は、パケットに対するフロー識別子(flow ID)を返す。一つの実施例においては、明確なフローIDなしに受信されたパケットについて、パケットヘッダフィールドにフローIDが追加される。または、代替的に、フローIDが添付され(例えば、前に付ける(prepended))、もしくは、フローIDのためのフィールドを含む「ラッパー(”wrapper”)」の中にカプセル化される。
図1に示されるように、図示された実施例において、パケット分類は、フロー分類器146によって実行される。任意的に、フロー分類は、同様なフロー分類器146aを介して、ネットワークインターフェイス104において実行され得る。一つの実施例においては、分離分類スキーム(split classification scheme)が実施され、その下で、既存のフロー(例えば、以前に分類されたフロー)は、フロー分類器146によってネットワークインターフェイス104において特定される。一方、既存のフローに属さないパケットは、新たなパケットフローに対応しているパケット分類のために、フロー分類器146に転送される。新たなパケットフローに対する情報は、次に、フロー分類器146aに提供される。別の実施例の下では、フロー分類器146aによって維持される分類されたフローのリストは、フロー分類器146aによって維持される完成リストより少なく、かつ、メモリキャッシュと同様に動作する。そこでは、より最近のパケットに関するフローが、NIC上のフロー分類器146aの中に維持され、かつ、より最近でないパケットに対するフローがリプレースされる。
ブロック206において、さらに示されるように、フローIDはフローテーブル148の中へのルックアップとして使用される。仮想スイッチ109の一部分であるとして示されているものである。一つの実施例において、フローテーブルは、フローIDのカラムとvNICのRxポートIDのカラムを包含している。フローID入力が与えられると、対応するvNICのRxポートIDを返すようにである。フローテーブル148は、また、LSC IDを含んでよい。LSC IDは、LSCタグについて又はパケットラッパーにおけるフィールドに対して使用され、もしくは、そうでなければ、パケットと関連付けされ得る。任意的に、LSCタグは、ローカルサービスチェーンにおいて、第1の仮想装置によって追加されてよい。
仮想スイッチ109において実施されているフローテーブル148に加えて、フローテーブルの全部または一部分が、ホストOS106またはネットワークインターフェイス104において実施され得る(どちらも図1には示されていない)。ネットワークインターフェイス104においてフローテーブルの全部または一部分を使用している実施例において、フローテーブルのエントリーは、一般的に、ホストOS106におけるソフトウェアによって決定され、かつ、NICドライバ124によって適用されるインターフェイスを介して配置される。
一旦、vNICのRxポートIDが特定されると、パケットデータが、適用可能なRxバッファアドレスに対して書込まれる。図1において示された実施例において、このRxポートは、V1Rxとラベル付けされている(仮想マシンVM1のvNIC1に対するRxポートである)。一つの実施例において、パケットデータは、メモリ書込みオペレーションを使用して、RxバッファからOSメモリ107(図示なし)の中にコピーされる。オペレーションの下で、データは、OSメモリのRxバッファから適用可能なRxバッファアドレスへコピーされる。別の実施例において、パケットデータは、DMA書込みを使用して、MMIO122におけるポート1のRxバッファから直接的にvNICのRxバッファの中に書込まれる。例えば、ヘッダが現場で検査されたパケットに対して、ダイレクトDMA書込みが実行され得る。
一つの実施例において、vNICのRxバッファは、サーキュラーFIFOポインタを用いたFIFOキューとして実施される。この構成を使用している一つの実施例の詳細が、図3に示されている。図3の下部に向かって示されるように、vNICのRxバッファ130それぞれは、関連するvNICのRxFIFOキュー300を含んでいる。vNICのRxFIFOキュー300それぞれは、複数のFIFO「スロット(”slot”)」へと分割されたアドレス空間を含んでいる。図示された実施例の下では、FIFOキュー毎に256スロットが存在している。しかし、これは一つの実施例の単なる説明であり、FIFOスロットの数量は変化してよい。FIFOスロットそれぞれに対して使用されるサイズも、また、変化してよい。一つの実施例において、それぞれのFIFOスロットのサイズは、アプリケーションメモリ空間108のために使用されるキャッシュラインのサイズと同一である。vNICのRxFIFOキュー300それぞれは、さらに、サーキュラーFIFOヘッドポインタとサーキュラーFIFOテールポインタを含んでいる。サーキュラーFIFOヘッドポインタは、現在のFIFOキューのロジカル「トップ(”top”)」に在るFIFOスロットを指し示す。一方、テールポインタは、現在のFIFOキューのロジカル「ボトム(”bottom”)」に対応するFIFOスロットを指し示す。ヘッドおよびテールポインタを使用したFIFOキューのオペレーションは、従来技術においてよく知られたものであり、ここにおいては、これらのオペレーションのさらなる詳細は提供されない。
一つの実施例において、それぞれのvNICは、一つまたはそれ以上のソフトウェアモジュール一式を介して実施される。オブジェクト志向のデザインの下で、それぞれのRxFIFOキューは、対応するクラスのインスタンスとして実施され得る(例えば、Rx_FIFO_queue)。よく知られているように、クラスは、クラスオブジェクト(例えば、データ)上で動作する機能を実施するための方法、および、他のソフトウェアコンポーネント(例えば、他のクラス)にデータを送信し、かつ、データを受信するためのインターフェイス、を提供する。
一つの実施例において、DMA書込みリクエストが、vNIC1のRxFIFOキューのためのRx_FIFO_queue(クラス)インスタンスに対して送付される。DMA書込みリクエストの受信に反応して、Rx_FIFO_queueインスタンスにおける方法は、テールポインタによって現在指し示されているFIFOスロットのメモリアドレスを特定し、そのアドレスをDMA書込みの要求者(例えば、ネットワークインターフェイス104上にエンベッドされたソフトウェアモジュール)に返す。DMAエンジン又は類似のもの(図示なし)は、次に、パケットデータを、MMIO122における場所からFIFOスロットのためのメモリアドレスへ書込む。パケットデータが複数のFIFOスロットに拡がるインスタンスについては、複数のDMA書込みが連続して実行され得る。説明目的のために、パケットデータは、vNICのRxポートの表示のボトムに対して書込まれているように示されている。しかしながら、当業者であれば、パケットデータが書込まれるスロットのRxFIFOキューにおける場所は、FIFOテールポインタによって指し示されたFIFOバッファのロジカル「ボトム」であることが理解されよう。
次に、ブロック207において、フローIDタグまたはLSCタグが、パケットデータに対して添付される。図3に示されるように、一つの実施例において、(パケットデータが書込まれる一つまたはそれ以上のスロットの)第1のFIFOスロットに対して書込まれたデータは、パケットヘッダ304とパケットペイロードデータ306を含むパケットデータに対して前に付けられたタグ302を含んでいる。一つの実施例において、タグ302は、LSCタグ(例えば、LSC ID値)を保管するために使用される。任意的に、タグ302は、フローIDを保管するために使用されてよい。よく知られているように、IPパケット(または他のタイプのパケット)のサイズは変化してよい。一方、パケットプロトコルヘッダの長さは、一般的に同一である(いくつかのプロトコルは、使用される場合にヘッダの長さを変化させる任意的なフィールドを伴うパケットヘッダを定めることに留意する)。可変長のパッケトサイズの観点において、所与のパケットに対するパケットデータは、一つまたはそれ以上のFIFOスロットに対して書込まれ得る。
ブロック208と218のスタートおよびエンドループにより表示されたループによって示されるように、複数のオペレーションが、所与のパケットフロー(または、代替的に、LSCタグにおけるLSC IDによって明確に特定されるように、パケットヘッダもしくはラッパー)に関連付けされたローカルサービスチェーンにおけるそれぞれの仮想装置に対して実行される。それぞれのLSCは、仮想ネットワーク装置によって実行される複数のサービスを含んでいる。ネットワーク装置は、一式のパイプラインサービスと同様な方法で、連続して一緒にチェーンされている。サービスの実施例は、以下のものを含んでいる。NAT(ネットワークアドレス変換)サービス、ファイアウォールサービス、パケット処理サービス、WAN最適化、仮想プライベートネットワークゲートウェイ、ビデオトランスコード、コンテンツ配信ネットワークサービス、等である。説明目的のために、図1は、装置1から、装置2へ、・・・、装置Nへチェーンされたシーケンスを示している。しかしながら、これは単に典型的なものであり、LSCは、あらゆる装置の組合せを横断してよい。さらに、LSCは、増加していく順番で装置を横断する必要はない(例えば、LSCは、装置3、装置2へ、装置5へ・・・であり得る)。複数の装置について、同一のサービスまたは一式のサービスを実行するように実施されることも可能である。代替的に、所与の装置は、異なるパケットフローに対して異なるサービスを実行するように構成されてよい。
フローチャート200における処理ループに戻ると、ブロック210において、フローに対するパケット処理オペレーション、及び/又は、LSCチェーンにおける現在の仮想装置に対するLSCが実行される。一つの実施例においては、FIFOヘッドポインタによって指し示されたvNICのRxFIFOキューにおける所与のパケット上で、パケット処理オペレーションが実行される。いくつかの仮想装置は、パケットデータを読出し、そのデータを使用して処理を実行する(例えば、パケットデータを民生用アプリケーションに転送する)。一方、他の仮想装置は、パケットデータを変更し得る(例えば、パケットヘッダにおける一つまたはそれ以上のフィールドを変更する)。パケットデータが変更された場合、パケットデータは現場で変更されるか、仮想装置のために割り当てられたVM上のバッファ(図1における図示なし)の中にコピーされて、次に変更されるかのいずれかである。
続けると、ブロック212においては、一旦、所与の仮想装置によって実行されるオペレーションが完了すると、パケットデータをどこに転送するべきか決定がされる。LSCにおける次の仮想装置のいずれによってもアクセスできるようにである。もしくは、現在の仮想装置がLSCにおける最後の仮想装置である場合には、どのTxネットワークポートに対してパケットを転送するか決定される。一つの実施例において、このことは、ローカルフローテーブル150の中へのルックアップとしてLSCタグ値を使用して実行される。任意的に、ローカルフローテーブルは、LSCタグ値の他に、または、加えて、フローIDを含んでよい。一般的に、ローカルフローテーブル150は、フローテーブル148と同様な方法で構成され得る。しかしながら、LSCにおいて第1の仮想装置をホストしているVMに対するvNICのRxポート(またはRxFIFOキュー)を指し示すことの他に、ローカルフローテーブルは、LSCにおいて次の仮想装置をホストしているVMに対するvNICのRxポート(またはRxFIFOキュー)を指し示している。フローテーブル148は、非LSCフローに関する情報を含んでもよいことに留意する(または、そうでなければ、そうした情報は、仮想スイッチ109に対してアクセス可能な別個のテーブルにおいて維持されてよい)。
従来のアプローチの下では、VMに別個のメモリ空間が割り当てられ、データは、仮想スイッチの使用を通じて、これら別個のメモリ空間の間で転送される。これは、以下のことを必要とする。最初にデータをvNICのTxポートにコピーすること、データを(メモリ書込みを介して)仮想スイッチのRxポートに転送すること、仮想スイッチを介してデータが書込まれるべきvNICのRxポートを決定すること、vNICのRxポートに接続された仮想スイッチのTxポートにデータをコピーすること又は書込むこと、および、次に、データをvNICのRxポートに書込むこと、である。実際には、これらの書込みのそれぞれは、FIFOキューといった、バッファに対するものであり、かつ、スイッチプロセスは、著しい量のオーバーヘッドを含んでいる。さらに、複数のパケットフローが同時にスイッチされる場合には、一つまたはそれ以上の仮想スイッチポートについて輻輳の可能性が存在する。
従来の仮想スイッチのオペレーションをより良く理解するために、一連の仮想ネットワーク装置A、B、C、および、Dによって実行されるオペレーションを含むパケット処理シーケンスを考慮する。それぞれの装置は、受信するパケットに関する一つまたはそれ以上のオペレーションを実行するものである。これらのオペレーションは、チェーン化される。オペレーションのシーケンスa、b、c、および、dが、それぞれの仮想ネットワーク装置A、B、C、および、Dによって実行されるようにであり、仮想ネットワーク装置それぞれは、仮想スイッチSに接続された別個のVMA−Dによってホストされる。既存のアプローチの下で、パケットフローは、以下のように取り扱われる。VMからSへ、VMへ、Sへ、VMへ、Sへ、VMへ。仮想スイッチSへ及びSからの転送それぞれは、別個の受信および送信バッファ/キューの使用を必要とする。バッファ/キューは、仮想マシンVM、VM、VM、および、VMが、それぞれに接続された別個の仮想スイッチのポートに対して実施される。
ここにおける実施例の一つの態様に従って、「カットスルー(”cut−through”)」メカニズムが実施される。カットスルーの下では、第1のvNICのRxバッファ(例えば、vNICのRxFIFOキュー)またはLSCにおける現在のサービスを実行している仮想装置をホストするVM上のバッファから、LSCにおける次のサービスを実行する仮想装置をホストするVMに係るvNICのRxバッファ(例えば、vNICのRxFIFOキュー)へ直接的にデータが書込まれる。このことは、部分的に、共有メモリ領域134の使用を通じて促進される。vNICのRxFIFOキューが全てのVMに対してアクセス可能である共有メモリ領域に在るので、あらゆるVMは、仮想スイッチをバイパスする方法で、他のあらゆるVMに係るvNICのRxFIFOキューに書込むことができるからである。このことは、メモリ転送における著しい削減を提供する。同様に、仮想スイッチのオペレーション最中に発生する対応するレイテンシを除去するものである。
判断ブロック214によって示されるように、次のバッファがvNICのRxFIFOキューである場合、フローチャートのロジックはブロック216に進む。そこでは、パケットデータが特定されたvNICのRxFIFOキューに直接的に書込まれ、従って、仮想スイッチ134をバイパスしている。上記および上述のように、パケットデータは、vNICのRxポートの表示のボトムに対して書込まれる。上述のように、また、このことは、FIFOテールポインタによって現在指し示されているRxFIFOキューにおけるスロットのアドレスに対してデータを書込むことによって有効となる。
ブロック212において、フローIDルックアップがネットワークTxポートとして次のバッファを特定する場合、フローチャートのロジックはブロック220に進む。そこでは、現在のvNICのRxFIFOスロット(または、現在の仮想装置に関連する場合はローカルバッファ)から、ネットワークTxバッファに対してパケットデータのDMA書込みが行われる。ネットワークTxバッファは、MMIO122のアドレス空間に置かれているものである。図1に示される実施例において、このことは、vNICNのRxFIFOキューから、ネットワークインターフェイス104上のポートMのTxバッファへのパケットデータの直接的な転送として示されている。代替的に、直接的なDMAデータ転送の他に、パケットデータは、仮想スイッチ109を通じて転送されてよい。一つの実施例において、パケットデータは、vNICNのRxFIFOキュー(または、VMN上のバッファ)から、(vNICNのTxポートを介して転送されるより、むしろ)仮想スイッチ上のネットワークTxバッファに対して直接的にコピーされる。
図1の右下コーナーに示されるように、パケット152は、ポートMのTxポートからネットワークの中に転送される。一般的に、パケット140と152のヘッダは異なってよく、一方、パケットペイロードデータは同一に保持されてよい。例えば、所与のパケットに対するパケットヘッダにおける一つまたはそれ以上のフィールドは、仮想装置によって実行されるLSC処理オペレーションの最中に変化してよい。いくつかのインスタンスにおいて、パケットペイロードデータは、また、LSCによって実行されるサービスの結果として、変化してよい。
上述のパケット140の処理は、フロー毎ベース(per−flow basis)のパケット処理のための一つの技術を説明している。一つの実施例において、SDNコントローラ114は、フローテーブル148とローカルフローテーブル150によって使用されるフローID及び/又はLSCデータを管理するように構成されている。所定のパケットフローのためのパケットは、上述のように、それぞれの仮想装置によって実行されるチェーン化されたサービスのシーケンスを含むLSCを使用してサービスされ得る。一つの実施例において、フローテーブルにおけるフローIDまたはLSC IDに対するエントリーポイント(例えば、進入Rxポート、Rxバッファ、または、RxFIFOキュー)は、サービスチェーンのための次のエントリーポイント(例えば、次のRxポート、Rxバッファ、または、RxFIFOキュー)をルックアップするために使用される。従って、フローテーブルは、一般的に、2つまたはそれ以上のカラムを有し得る。一つは、フローIDまたはLSC IDを含んでおり、他方は、次のエントリーポイントを含んでいる。別の実施例において、フローIDは、受信したパケットをネットワークから第1の仮想装置に対して転送するために使用される。次に、フローIDからLSC IDへのマッピングが行われ、さらなる処理のためにパケットに対してLSCタグが取り付けられる。
フロー毎の実施において使用されるLSCは、SDNコントローラ114によって事前に構成されるか、フローが最初に現れたときに決定されるか、いずれでもよい。例えば、オープンフロープロトコルに従って、パケットフローと対応するLSCは、ランタイムオペレーションの最中に決定され得る。LSCに対する所定のシーケンスチェーンは、以下のものによって決定され得る。SDNコントローラにおけるロジック、セントラルSDNコントローラ(例えば、オーケストレータ(orchestrator))または類似のもの、または、SDNコントローラコンポーネントと関連するコンポーネントの組合せといった、別のコンポーネントにおけるロジックによる。
図4は、フローテーブル148に対する一式の典型的なテーブルデータである、テーブル1、テーブル2、および、テーブルNを示している。フローテーブル148は、フローIDを含んでいるフローIDカラム、進入ポートIDを含んでいる進入ポートカラム、および、LSC IDを含んでいるLSC IDカラムを含む。テーブル1、テーブル2、および、テーブルNそれぞれは、LSC IDカラム、次のポートカラム、および、サービスカラムを含む。一つの実施例において、テーブル146、テーブル1、テーブル2、および、テーブルNそれぞれに対するテーブルデータは、SDNコントローラ114によって管理される。一般的に、テーブルデータは、計算プラットフォームの初期化の最中、及び/又は、ランタイムオペレーションの最中に決められてよい。
一つの実施例において、テーブルデータは、以下のように実施される。フロー分類に関して、パケットに対するフローIDが決定される。これは、フローテーブル148に対するルックアップとして使用される。フローIDから、サービスチェーンにおいて第1の仮想装置をホストしているVMの進入ポートが決定され得る。LSC IDも、また、決定され得る。任意的に、フローテーブル148は、LSC IDカラムを含まなくてよく、それぞれのLSCにおける第1の仮想装置によって、フローIDからLSC IDへのマッピングが実行される。
示されるように、進入ポートは、それぞれのフローに対して同一であることを要しない。実行されるべきサービスに応じて、LSCは、一つまたはそれ以上の仮想装置をスキップし得る。また、所与の仮想装置によって実行されるサービスも、また、LSC IDに応じて、異なってよい。サービスカラムにおける「A」、「B」、および、「C」の使用は、それぞれのフローテーブル150に応じた仮想装置によって実行されるサービスに対応している。サービスカラムに含まれるものは任意である。いくつかの実施において、所与の仮想装置は、サービスを提供する全てのLSC(またはフロー)に対して同一のサービスを実行するからである。加えて、ネットワークアダプタ/NICにおける出口ポートも、所定のLSCに応じて、異なってよい。
図4aは、フローテーブル150に対して、LSC IDより、むしろフローIDを使用する代替的なフローテーブルスキームを示している。フローIDからLSCへのマッピングは、SDNコントローラ114によって内部で実行され、LSC IDの代わりにフローIDが使用され得る。処理ロジックの残りは、同一を保っている。
フロー毎のローカルサービスチェーンに加えて、計算プラットフォームは、ネットワークインターフェイスによって受信される全てのパケット、または、ネットワークインターフェイスの既定のポートにおいて受信される全てのパケットに対して、同一の一式のサービスを実行するように(従って、同一のLSCを実施するように)事前に構成されてよい。図4bは、単一の、既定のLSCを実施するための、フローテーブル148a、フローテーブル1、フローテーブル2、および、フローテーブルNにおける典型的なテーブルデータを示している。示されるように、全てのフローにおける出口ポートは、vNIC1のRxである。一方、それぞれの仮想装置に対する次のポートは、LSCにおける次の仮想装置に対するvNICのRxオーバーラップである。説明目的のために、既定のLSCを実施するためのフローテーブルデータが示されている。実際には、他の技術を使用し得る。既定のLSCを実施するために、ソフトウェア変数を構成すること及び/又はソフトウェアインストラクションといったものである。例えば、フローテーブルを使用しないでLSCを実施するために、それぞれの仮想マシンに対してソフトウェアがダウンロードされ得る。同様に、ネットワークアダプタまたはNICは、全てのパケットをLSCに対する進入vNICのRxポートに転送するように構成され得る。
図1aは、事前に決定されたLSCを使用したパケット140の処理を説明している。示されるように、パケット140は、ポート1のRxポートからvNICのRxポートにDMAされており、以前にホストOS106によって実行されていたであろうあらゆるオペレーションをバイパスし、また、仮想スイッチ109もバイパスしている。別の実施例の下で、パケットは、ネットワークインターフェイスからRxバッファ144に、そして次に、vNICのRxポートにDMAされる。
別の方法に従って、LSCは、パケットヘッダに追加されたメタデータを使用して実施される。この技術の下で、外部プラットフォーム上のエンティティ(例えば、オーケストレータまたは類似のもの)は、サービスチェーン全体のエレメントを決定し得る。そして、一旦、サービスチェーンがLSCを伴うプラットフォームに達すると、プラットフォーム上で動作しているソフトウェアは、このメタデータを使用してパケットフローを決定する。このようにして、LSCは、複数のプラットフォーム上で動作している仮想装置を介して実施される、より大きなサービスチェーンと一緒に使用され得る。
一般的に、オーケストレータによってVM配置が行われる、ネットワーク機能仮想化システムにおいては、サービスチェーンに係る仮想装置をホストしているVMをインスタンス化することが、オーケストレータにとって有利であり得る。ここにおける実施例に従ってローカルサービスチェーンを実施することの本来の利益が利用できるようにである。例えば、パイプライン化された方法で、所定のフローのためのそれぞれのパケットに対して、同一のサービスが実行されるので、FIFOオーバーフロー(FIFOキューの中により多くのパケットデータを追加するための余地がないこと)の潜在的な問題は、好適にサイズ化されたFIFOキューの使用を通じて除去することができる。このアプローチは、また、仮想スイッチにおけるトラフィックの輻輳の結果として生じ得るあらゆるレイテンシも除去する。そうしたレイテンシは、サービスチェーン全体の処理パフォーマンスを、結果として削減する。単一のパケットに対するレイテンシは、全ての後続のパケットに対する処理レイテンシを結果として生じるからである。
FIFOキューが、図面で示され、ここにおいて説明されている一方で、FIFOキューは、その簡潔なこと及びオーバーヘッドがないことを通じた本来の利点を提供することに留意すべきである。さらに、vNICのRxポートそれぞれに対して単一のFIFOキューが示されているが、一つまたはそれ以上のFIFOキューが使用されてよい。例えば、それぞれのフロー及び/又はLSCに対して、分離したFIFOキューが使用され得る。
コンピュータプラットフォームは、また、LSCフローと非LSCフローの両方をサポートするように構成されてもよい。例えば、フロー分類の最中に、パケットは、LSCと関連しないフローに属するものとして特定されてよい。従って、パケットは、パケットフローを処理するための従来技術を使用して、処理され得るものである。
フローテーブル150の使用に加えて、VMが受信するLSCに関連したそれぞれのパケットに対して何のアクションをなすべきかを、それぞれのVMが決定できるようにするために他の技術が使用され得る。例えば、一つの実施例において、進入VMにおけるLSCモジュールは、パケットを、後続のVMそれぞれによって使用される好適なLSCラベルとタグ付けする。後続のVMは、パケットを受信し、もしあれば、何のサービスがパケット上で実行されるべきかを決定し、かつ、パケットが転送されるべき次のVMを決定する。
図5は、プラットフォームハードウェア502と種々のソフトウェアバースのコンポーネントを含む典型的なホストプラットフォームコンフィグレーション500を示している。プラットフォームハードウェア502は、インターコネクト510を介して、メモリインターフェイス506と入力/出力(I/O)インターフェイス508に接続された中央処理装置(CPU)504を含んでいる。いくつかの実施例においては、上述のコンポーネントの全て又は一部分がシステムオンチップ(SoC)上に統合されてよい。メモリインターフェイス506は、システムメモリ512に対するアクセスを促進するように構成されており、たいていSoCから分離している。
I/Oインターフェイス508は、プラットフォームハードウェア502によって提供される種々のI/Oインターフェイスを説明している。一般的に、I/Oインターフェイス508は、(ICH(I/Oコントローラハブ)又は類似のものといった)専用コンポーネントとして実施されてよく、または、SoC上で実施されてよい。さらに、I/Oインターフェイス508は、また、ペリフェラルコンポーネントインターフェイステーブルコネクトエクスプレス(PCIe)I/O階層といった、I/O階層として実施されてもよい。I/Oインターフェイス508は、さらに、種々のI/Oリソースとデバイス及び他のプラットフォームコンポーネントとの間の通信を促進する。これらは、ディスクドライブ514といった、不揮発性ストレージデバイスを含んでいる。ディスクドライブは、ディスクコントローラ516、ファームウェアストア518、NIC520、および、他の種々のI/Oデバイスを介してI/Oインターフェイス508と通信可能に接続されており、他のハードウェア522として集合的に示されている。
一般的に、CPU504は、シングルコアプロセッサまたはマルチコアプロセッサを含んでよい。M個のコア505として示されるようにである。マルチコアが使用され、種々のソフトウェアコンポーネント424が実施される。モジュールおよびアプローチといったものであり、ディスクドライブ514として示されるように、一つまたはそれ以上の不揮発性ストレージデバイスの中に保管されている。より一般的に、ディスクドライブ514は、種々のタイプの不揮発性ストレージデバイスを表している。磁気ベースおよび光ベース両方のストレージデバイスを含んでおり、半導体ドライブ(SSD)またはフラッシュメモリといった、半導体ストレージデバイスも同様である。任意的に、ソフトウェアコンポーネント524の全てまたは一部分は、ネットワーク526を介してアクセスされる一つまたはそれ以上のストレージデバイス(図示なし)上に保管されてよい。
ブートアップまたはランタイムオペレーションの最中には、種々のソフトウェアコンポーネント524およびファームウェアコンポーネント528がシステムメモリ512(FW空間として示されるように)の中にロードされ、実行スレッドまたは類似のものを含むプロセスとしてコア505上で実行される。所定のプロセッサまたはSoCアーキテクチャに応じて、所与の「物理的(”physical”)」コアが、一つまたはそれ以上のロジカルコアとして実施され得る。種々のロジカルコアに割り当てられているプロセスを用いるものである。例えば、インテル社のハイパースレッディング(Hyperthreading)アーキテクチャの下で、それぞれの物理的コアは、2つのロジカルコアとして実施される。
プラットフォームハードウェア502のための典型的なシステムブートの下では、ファームウェア528がシステムメモリ512の中にロードされて構成され、ホストOS530のブートが後に続く。その後、ハイパーバイザ532、一般的にホストOS530上で稼働しているアプローチを含み得るものが、起動される。ハイパーバイザ532は、次に、種々の仮想マシン、VM1−N、を起動するために使用され得る。それぞれのVMは、システムメモリ512の種々の部分(つまり、アドレス空間)を使用するように構成される。今度は、それぞれのオペレーティングシステム5341−Nをホストするために、それぞれの仮想マシンVM1−Nが使用され得る。
ランタイムオペレーションの最中に、ハイパーバイザ532は、種々のシステムリソースの再構成を可能にする。システムメモリ512、コア505、および、ディスクドライブ514といったものである。一般的に、仮想マシンは、ホストされているオペレーティングシステムと根底にあるプラットフォームは502との間のアブストラクション(abstraction)を(ハイパーバイザ532との組み合わせにおいて)提供し、ハードウェアリソースが、VM1−N間で共有できるようにしている。ホストされているオペレーティングシステムそれぞれの観点から、オペレーティングシステムは全てのプラットフォームを「所有」しており、仮想マシン上で稼働している他のオペレーティングシステムの存在に気付かない。現実に、それぞれのオペレーティングシステムは、単に、ハイパーバイザ532によって割り当てられたリソース及び/又はリソース部分だけに対するアクセスを有するものである。
図5において、さらに示されるように、それぞれのオペレーティングシステムは、カーネル空間とユーザ空間を含んでおり、両方が、システムメモリ512におけるメモリ空間として実施される。カーネル空間は、保護され、かつ、オペレーティングシステムのカーネルコンポーネントを実行するために使用される。ネットワークスタックを含むものである。一方、オペレーティングシステムのユーザ空間は、ユーザアプローチを実行するために使用される。アプリケーション1、2、および、N、及び、アプリケーション1A−C、2A−C、および、NA−Cによって示されるようにである。
一般的に、装置1、2、および、Nは、プラットフォームハードウェア502上の仮想マシン上で実行され得る種々のSDNまたはNFV装置を示している。簡潔のために、それぞれのVM1−Nは、同様なソフトウェアアプリケーションのセットをホストしているように示されている。しかしながら、これは単に説明目的だけのものである。所与のプラットフォームのためのVMは同様なアプローチをホストしてよく、または、異なるアプリケーションをホストしてもよいからである。同様に、それぞれのVM1−Nは、単一の仮想ネットワーク装置を(示されるように)ホストしてよく、複数の仮想ネットワーク装置をホストしてよく、または、あらゆる仮想ネットワーク装置をホストしなくてもよい。
上述のように、VMを使用したコンピュータプラットフォームの仮想化に加えて、仮想化コンテナを使用しているコンテナベースのOS仮想化が実施され得る。コンテナベースの仮想化を使用している実施例は、図1bにおいて示されるアーキテクチャ100b、および、図6におけるプラットフォームコンフィグレーション、の中に示されている。
プラットフォームコンフィグレーション600において使用されるハードウェアコンフィグレーションは、示されるように、プラットフォームコンフィグレーション500と同一である。プラットフォームコンフィグレーションにおける差異は、ソフトウェアにおいて生じる。プラットフォームコンフィグレーション600におけるソフトウェアは、ホストOS602、OS仮想化レイヤ604、および、複数のコンテナ606を含んでいる。任意的に、コンテナは、また、仮想エンジン、仮想マシン、または、他の用語とも呼ばれ得る。コンテナベースの仮想化ソフトウェアを提供しているベンダ、または、コンテナベースのOS仮想化がどのように動作するかを記述する作者に応じたものである。
それぞれのコンテナは、システムコンポーネントとアプリケーション及び/又はユーザコンポーネントへと論理的に分割されたソフトウェアライブラリおよびアプリケーションのセットを含んでいる。システムコンポーネントは、システムライブラリとシステムソフトウェアモジュールを含んでいる。示されるように、それぞれのコンテナは、ネットワークスタックシステムモジュール、または類似のものを含む。仮想装置は、アプリケーション/ユーザ空間において実行される。一般的に、仮想装置は、VM上で動作しているか、または、コンテナ上かについて不可知的であるように、構成されてよい。もしくは、そうでなければ、コンテナによってホストされるのと対照的に、VM上で稼働するように構成された仮想装置の間で小さな差異が存在する。
図1bのアーキテクチャ100bに示されるように、アーキテクチャコンポーネントは、実質的に、アーキテクチャ100および100aにおいて示されるものと実質的に同様である。主要な相違は、ハイパ−バイザがOS仮想化レイヤ604に置き換えられていること、および、VMがコンテナ606に置き換えられていることである。VMを用いるのと同様に、それぞれのコンテナは、同様なソフトウェアコンポーネントのセットを含み、vNIC、一つまたはそれ以上の仮想装置136、および、対応するアプリケーション138を含んでいる。フローテーブル150も同様である。
IPパケットとイーサネットパケットの使用に加えて、仮想化オーバーレイが使用されてよい。VXLAN(仮想エクステンションローカルエリアネットワーク)、NVGRE(ジェネリックルーティングを使用するネットワーク仮想化)といったものであり、IPアドレスの内側および外側を使用するものである。VXLANまたはNVGREを使用してローカルサービスチェーンを実施するために、上記の実施例において説明されたように、IPの処理に対して、オーバーレイの存在が単に加えられる。VXLANおよびNVGREを使用したパケット処理のためのさらなる技術が、当業者には知られている。そして、VXLANまたはNVGREを使用した実施例に対するさらなる詳細は、ここにおいて説明されない。
ここにおいて説明された技術的事項のさらなる態様は、以降の番号付けされた条項において明らかにされる。
1.複数の仮想マシン(VM)または仮想化コンテナが稼働している計算プラットフォーム上で実施される方法であって、それぞれのVMまたは仮想化コンテナは、ソフトウェア確定ネットワーク(SDN)における仮想スイッチに通信可能に接続されている仮想ネットワークインターフェイスコントローラ(vNIC)を含み、前記方法は、
前記複数のVMまたは仮想化コンテナによってホストされた複数の仮想ネットワーク装置を介してローカルサービスチェーン(LSC)を実施するステップであり、それぞれのネットワーク装置は、前記LSCによって処理されるべき複数のパケットそれぞれに対する一つまたはそれ以上のサービスを実行するように構成されている、ステップと、
前記複数のパケットの中に含まれるパケットデータを、前記仮想スイッチを使用することなく、VMまたはコンテナ間で転送するステップと、を含む、方法。
2.前記パケットデータは、第1の受信(Rx)バッファを有し、前記LSCにおける現在の仮想ネットワーク装置をホストしている第1のvNICを含む、第1のVMまたはコンテナから、第2のRxバッファを有し、前記LSCにおける次の仮想ネットワーク装置をホストしている第2のvNICを含む、第2のVMまたはコンテナに対して、前記第2のRxバッファへ、直接的にパケットデータを書込むことによって転送される、条項1に記載の方法。
3.前記パケットデータは、前記第1のRxバッファから前記第2のRxバッファへコピーされる、条項2に記載の方法。
4.前記第1および第2のRxバッファの少なくとも一部分は、それぞれにファーストインファーストアウト(FIFO)キューとして構成されており、かつ、所与のパケットについてのパケットデータは、第1のFIFOキューにおける一つまたはそれ以上のスロットから、第2のFIFOキューにおける一つまたはそれ以上のスロットへコピーされる、条項3に記載の方法。
5.前記方法は、さらに、
複数のLSCを実施するステップであり、それぞれのLSCは、LSCを使用して処理されるパケット上で実行されるべき固有のサービスのシーケンスを含んでいる、ステップと、
前記複数のLSCそれぞれに対して、LSCに割り当てられたパケットについてのパケットデータの転送を促進するためのメカニズムを実施するステップであり、それぞれのLSCについて、前記パケットデータは、前記仮想スイッチを通過しないチェーン化された方法で、LSCのための前記仮想ネットワーク装置をホストしているVMまたはコンテナ間で転送される、条項1乃至4いずれかに記載の方法。
6.前記メカニズムは、VMまたはコンテナそれぞれに対するそれぞれのローカルフローテーブルを含み、所与のVMまたはコンテナに対する前記ローカルフローテーブルは、VMのためのvNIC受信(Rx)ポートまたはRxバッファのうち少なくとも一つ、もしくは、前記LSCにおいて次のネットワーク装置をホストしているコンテナを特定する、条項5に記載の方法。
7.前記方法は、さらに、SDNコントローラを使用して、VMまたはコンテナそれぞれのための前記ローカルフローテーブルを構成するステップと、を含む、条項6に記載の方法。
8.前記方法は、さらに、
前記複数のVMまたはコンテナそれぞれに対して、それぞれのアプリケーションメモリ空間を割り当てるステップであり、VMまたはコンテナのアプリケーションメモリ空間において稼働しているアプリケーションは、別のVMまたはコンテナのアプリケーションメモリ空間にアクセスすることができない、ステップと、
前記VMまたはコンテナそれぞれについて、vNICによって使用されるバッファを受信するために使用される共有メモリ空間を割り当てるステップであり、それぞれのVMまたはコンテナは、前記共有メモリ空間の読出し及び書込みをすることができる、ステップと、を含む、条項1乃至7いずれかに記載の方法。
9.前記計算プラットフォームは、前記計算プラットフォームに通信可能に接続された少なくとも一つのネットワークポートを有するネットワークインターフェイスを含み、前記方法は、さらに、
前記ネットワークインターフェイスのネットワークポートにおいてパケットを受信するステップと、
前記パケットが属するフロー、または、前記パケットをサービスするために使用されるべきLSC、のうち少なくとも一つを決定するステップと、
前記パケットを、前記ネットワークインターフェイスから、前記LSCについて定められた第1の仮想ネットワーク装置をホストするために使用されるVMまたはコンテナのためのvNICの受信バッファへ転送するステップと、を含む、条項1乃至8いずれかに記載の方法。
10.前記パケットは、前記ネットワークインターフェイスのメモリマップド入力−出力(MMIO)アドレス空間における受信バッファから、前記vNICの前記受信バッファへ、ダイレクトメモリアクセス(DMA)データ転送を使用して、前記パケットについてのパケットデータをコピーすることによって、転送される、条項9に記載の方法。
11.前記計算プラットフォームは、前記計算プラットフォームに通信可能に接続された少なくとも一つのネットワークポートを有するネットワークインターフェイスを含み、前記方法は、さらに、
前記ネットワークインターフェイスの既定のネットワークポートにおいてネットワークから受信されるパケットそれぞれに対して、
受信バッファにおける前記パケットについてのパケットデータを、前記ネットワークインターフェイスのメモリマップド入力−出力(MMIO)アドレス空間においてバッファするステップと、
前記パケットについてのパケットデータを、ダイレクトメモリアクセス(DMA)データ転送を使用して、前記受信バッファから、前記LSCについて定められた第1の仮想ネットワーク装置をホストするために使用されるVMまたはコンテナに対するvNICの受信バッファへコピーするステップと、を含む、条項1乃至10いずれかに記載の方法。
12.前記計算プラットフォームは、前記計算プラットフォームに通信可能に接続された少なくとも一つのネットワークポートを有するネットワークインターフェイスを含み、前記方法は、さらに、既定のネットワークポートにおいて受信された全てのパケットに足して同一のLSCを使用するステップと、を含む、条項1乃至11いずれかに記載の方法。
13.前記方法は、さらに、
所与のパケットに対して使用される、LSCにおける最後の仮想装置である仮想装置を決定するステップと、
前記パケットが転送されるべき、物理的ネットワークアダプタ上の出力ポートを決定するステップと、
前記仮想スイッチをバイパスする方法で、前記最後の仮想装置をホストしているVMまたはコンテナ上のバッファから、前記物理的ネットワークアダプタの前記出力ポートに関連するバッファへ、パケットデータを転送するステップと、を含む、条項1乃至12いずれかに記載の方法。
14.前記計算プラットフォームは、前記計算プラットフォームに通信可能に接続された少なくとも一つのネットワークポートを有するネットワークインターフェイスを含み、前記方法は、さらに、前記ネットワークインターフェイスの既定のネットワークポートにおいてネットワークから受信されたそれぞれのパケットに対して、
受信バッファの中の前記パケットについてのパケットデータを、前記ネットワークインターフェイスのメモリマップド入力−出力(MMIO)アドレス空間にバッファするステップと、
前記パケットについての前記パケットデータを、ダイレクトメモリアクセス(DMA)データ転送を使用して、前記受信バッファから、前記LSCについて定められた第1の仮想ネットワーク装置をホストするために使用されるVMまたはコンテナに対するvNICの受信バッファへコピーするステップと、を含む、条項13に記載の方法。
15.複数のVMまたはコンテナが実施されるべき計算プラットフォームのプロセッサ上で実行されるように構成された複数のインストラクションが保管されている機械で読取り可能な固定の媒体であって、前記複数のインストラクションが実行されると、前記計算プラットフォームは、条項1乃至14いずれかに記載の方法を実行する、機械で読取り可能な固定の媒体。
16.条項1乃至14いずれかに記載の方法を実行するための手段を含む、計算プラットフォーム。
17.複数の仮想マシン(VM)または仮想化コンテナが実施されるべき計算プラットフォームのプロセッサ上で実行されるように構成された複数のインストラクションが保管されている機械で読取り可能な固定の媒体であって、前記VMまたはコンテナの少なくとも一部分は、ソフトウェア確定ネットワーク(SDN)における仮想スイッチに通信可能に接続された仮想ネットワークインターフェイスコントローラ(vNIC)を含み、かつ、仮想ネットワーク装置をホストしており、前記複数のインストラクションが実行されると、前記計算プラットフォームは、
複数の前記仮想ネットワーク装置を介してローカルサービスチェーン(LSC)を実施し、それぞれの仮想ネットワーク装置は、前記LSCによって処理されるべき複数のパケットそれぞれに対する一つまたはそれ以上のサービスを実行するように構成されており、かつ、
前記LSCにおける現在のサービス実行するように構成された第1の仮想ネットワーク装置をホストしている第1のVMまたはコンテナに対してアクセス可能なバッファから、前記LSCにおける次のサービス実行するように構成された第2の仮想ネットワーク装置をホストしている第2のVMまたはコンテナに係るvNICの受信(Rx)バッファへ、パケットデータを書込むことによって、前記複数のパケットの中に含まれるパケットデータをVMまたはコンテナ間で転送する、機械で読取り可能な固定の媒体。
18.前記第2のVMまたはコンテナに係るvNICのRxバッファは、第2のRxバッファを含み、かつ、前記パケットデータは、前記第1のVMまたはコンテナに係るvNICの第1のRxバッファから前記第2のRxバッファへコピーされる、条項17に記載の機械で読取り可能な固定の媒体。
19.前記複数のインストラクションが実行されると、前記計算プラットフォームは、さらに、
前記第1および第2のRxバッファの少なくとも一部分を、それぞれ第1および第2のファーストインファーストアウト(FIFO)キューとして構成し、かつ、
所与のパケットについてのパケットデータを、第1のFIFOキューにおける一つまたはそれ以上のスロットから、第2のFIFOキューにおける一つまたはそれ以上のスロットへコピーする、条項17または18に記載の機械で読取り可能な固定の媒体。
20.前記複数のインストラクションが実行されると、前記計算プラットフォームは、さらに、
複数のLSCを実施し、それぞれのLSCは、LSCを使用して処理されるパケット上で実行されるべき固有のサービスのシーケンスを含んでおり、かつ、
仮想ネットワーク装置をホストしているVMまたはコンテナそれぞれに対するローカルフローテーブルを構成し、所与のVMまたはコンテナに対する前記ローカルフローテーブルは、VMまたはコンテナによってホストされた仮想ネットワーク装置によって実行されるべきサービスを含む前記LSCそれぞれに対するエントリーを含み、かつ、LSCそれぞれに対する前記エントリーは、vNIC受信(Rx)バッファ、または、前記LSCにおいて次の仮想ネットワーク装置をホストしているVMまたはコンテナのためのRxバッファ、のうち少なくとも一つを特定する、条項17乃至19いずれかに記載の機械で読取り可能な固定の媒体。
21.前記複数のインストラクションは、さらに、実行されると、それぞれのVMまたはコンテナに対する前記ローカルテーブルを構成するSDNコントローラを実施するためのインストラクションを含む、条項20に記載の機械で読取り可能な固定の媒体。
22.前記複数のインストラクションが実行されると、前記計算プラットフォームは、さらに、前記VMまたはコンテナそれぞれについて、vNICによって使用されるバッファを受信するために使用される共有メモリ空間を割り当て、それぞれのVMまたはコンテナは、前記共有メモリ空間の読出し及び書込みをすることができる、条項17乃至21いずれかに記載の機械で読取り可能な固定の媒体。
23.前記複数のインストラクションが実行されると、前記計算プラットフォームは、さらに、前記VMまたはコンテナそれぞれについて、vNICによって使用されるバッファを受信するために使用される共有メモリ空間を割り当て、それぞれのVMまたはコンテナは、前記共有メモリ空間の読出し及び書込みをすることができる、条項22に記載の機械で読取り可能な固定の媒体。
24.前記計算プラットフォームは、前記計算プラットフォームに通信可能に接続された少なくとも一つのネットワークポートを有するネットワークインターフェイスを含み、前記複数のインストラクションが実行されると、前記計算プラットフォームは、さらに、
前記ネットワークインターフェイスにおいて受信されたパケットが属するフロー、または、前記パケットをサービスするために使用されるべきLSC、のうち少なくとも一つを決定し、かつ、
前記パケットを、前記ネットワークインターフェイスから、前記LSCについて定められた第1の仮想ネットワーク装置をホストするために使用されるVMまたはコンテナのためのvNICの受信バッファへ転送する、条項17乃至23いずれかに記載の機械で読取り可能な固定の媒体。
25.前記パケットは、前記ネットワークインターフェイスのメモリマップド入力−出力(MMIO)アドレス空間における受信バッファから、前記vNICの前記受信バッファへ、
ダイレクトメモリアクセス(DMA)データ転送を使用して、前記パケットについてのパケットデータをコピーすることによって、転送される、条項24に記載の機械で読取り可能な固定の媒体。
26.前記計算プラットフォームは、前記計算プラットフォームに通信可能に接続された少なくとも一つのネットワークポートを有するネットワークインターフェイスを含み、前記複数のインストラクションが実行されると、前記計算プラットフォームは、さらに、
メモリマップド入力−出力(MMIO)アドレス空間として、前記ネットワークインターフェイス上にメモリの少なくとも一部分を構成し、かつ、
前記ネットワークインターフェイスを構成して、
前記ネットワークインターフェイスの既定のネットワークポートにおいてネットワークから受信した複数のパケットそれぞれについての受信バッファにおけるパケットデータを、前記MMIOアドレス空間においてバッファし、かつ、
それぞれのパケットについてのパケットデータを、ダイレクトメモリアクセス(DMA)データ転送を使用して、前記受信バッファから、前記LSCについて定められた第1の仮想ネットワーク装置をホストするために使用されるVMまたはコンテナに対するvNICの受信バッファへコピーする、条項17乃至25いずれかに記載の機械で読取り可能な固定の媒体。
27.前記複数のインストラクションが実行されると、前記計算プラットフォームは、さらに、
パケットが属するフローを決定し、
前記フローに属しているパケットをサービスするために使用されるべきLSCを決定し、
前記パケットをサービスするために使用されるべきLSCを特定する指標を前記パケットに追加する、条項17乃至26いずれかに記載の機械で読取り可能な固定の媒体。
28.計算プラットフォームであって、
複数のプロセッサコアを含むプロセッサと、
前記プロセッサに対して動作可能に接続されたシステムメモリと、
前記プロセッサに対して動作可能に接続された、少なくとも一つのネットワークポートとメモリを含むネットワークインターフェイスコントローラ(NIC)と、
デバイス上に保管された複数のインストラクションを有するストレージデバイスと、を含み、
前記インストラクションが、一つまたはそれ以上の前記プロセッサコアを介して実行されると、前記計算プラットフォームは、
複数の仮想マシン(VM)または仮想化コンテナをインスタンス化し、それぞれのVMまたはコンテナは仮想ネットワークインターフェイスコントローラ(vNIC)を含んでおり、前記VMまたはコンテナの少なくとも一部分は仮想ネットワーク装置をホストしており、
それぞれのvNICに接続された仮想ネットワークポートおよび前記vNIC上の少なくとも一つのネットワークポートを有する仮想スイッチを含んでいる、ソフトウェア確定ネットワーク(SDN)をプラットフォーム上に構成し、
複数の前記仮想ネットワーク装置を介してローカルサービスチェーン(LSC)を実施し、それぞれのネットワーク装置は、前記LSCによって処理されるべき複数のパケットそれぞれに対する一つまたはそれ以上のサービスを実行するように構成されており、かつ、
前記LSCにおける現在のサービスを実行するように構成されたる第1の仮想ネットワーク装置をホストしている第1のVMまたはコンテナに対してアクセス可能なバッファから、前記LSCにおける次のサービスを実行するように構成された第2の仮想ネットワーク装置をホストしている第2のVMまたはコンテナに係るvNICの受信(Rx)バッファへ、パケットデータを書込むことによって、前記複数のパケットの中に含まれるパケットデータをVMまたはコンテナ間で転送する、計算プラットフォーム。
29.前記複数のインストラクションが実行されると、前記計算プラットフォームは、さらに、
複数のLSCを実施し、それぞれのLSCは、LSCを使用して処理されるパケット上で実行されるべき固有のサービスのシーケンスを含んでおり、かつ、
仮想ネットワーク装置をホストしているVMまたはコンテナそれぞれに対するローカルフローテーブルを構成し、所与のVMまたはコンテナに対する前記ローカルフローテーブルは、VMまたはコンテナによってホストされた仮想ネットワーク装置によって実行されるべきサービスを含む前記LSCそれぞれに対するエントリーを含み、かつ、LSCそれぞれに対する前記エントリーは、vNIC受信(Rx)バッファ、または、前記LSCにおいて次の仮想ネットワーク装置をホストしているVMまたはコンテナのためのRxバッファ、のうち少なくとも一つを特定する、条項28に記載の計算プラットフォーム。
30.前記複数のインストラクションが実行されると、前記計算プラットフォームは、さらに、前記VMまたはコンテナそれぞれについて、vNICによって使用されるバッファを受信するために使用される共有メモリ空間を割り当て、それぞれのVMまたはコンテナは、前記共有メモリ空間の読出し及び書込みをすることができる、条項28または29に記載の計算プラットフォーム。
31.前記複数のインストラクションが実行されると、前記計算プラットフォームは、さらに、
前記NICにおいて受信されたパケットが属するフロー、または、前記パケットをサービスするために使用されるべきLSC、のうち少なくとも一つを決定し、かつ、
前記パケットを、前記NICから、前記LSCについて定められた第1の仮想ネットワーク装置をホストするために使用されるVMまたはコンテナのためのvNICの受信バッファへ転送する、条項28乃至30いずれかに記載の計算プラットフォーム。
32.前記複数のインストラクションが実行されると、前記計算プラットフォームは、さらに、
メモリマップド入力−出力(MMIO)アドレス空間として、前記ネットワークインターフェイス上に前記メモリの少なくとも一部分を構成し、かつ、
前記NICを構成して、
前記ネットワークインターフェイスの既定のネットワークポートにおいてネットワークから受信した複数のパケットそれぞれについての受信バッファにおけるパケットデータを、前記MMIOアドレス空間においてバッファし、かつ、
それぞれのパケットについてのパケットデータを、ダイレクトメモリアクセス(DMA)データ転送を使用して、前記受信バッファから、前記LSCについて定められた第1の仮想ネットワーク装置をホストするために使用されるVMまたはコンテナに対するvNICの受信バッファへコピーする、条項28乃至31いずれかに記載の計算プラットフォーム。
33.計算プラットフォームであって、少なくとも一つのネットワークポートとメモリを含むネットワークインターフェイスコントローラ(NIC)と、
複数の仮想マシン(VM)または仮想化コンテナをインスタンス化し、それぞれのVMまたはコンテナは仮想ネットワークインターフェイスコントローラ(vNIC)を含んでおり、前記VMまたはコンテナの少なくとも一部分は仮想ネットワーク装置をホストしており、
それぞれのvNICに接続された仮想ネットワークポートおよび前記vNIC上の少なくとも一つのネットワークポートを有する仮想スイッチを含んでいる、ソフトウェア確定ネットワーク(SDN)をプラットフォーム上に構成し、
複数の前記仮想ネットワーク装置を介してローカルサービスチェーン(LSC)を実施し、それぞれのネットワーク装置は、前記LSCによって処理されるべき複数のパケットそれぞれに対する一つまたはそれ以上のサービスを実行するように構成されており、かつ、
前記LSCにおける現在のサービスを実行するように構成されたる第1の仮想ネットワーク装置をホストしている第1のVMまたはコンテナに対してアクセス可能なバッファから、前記LSCにおける次のサービスを実行するように構成された第2の仮想ネットワーク装置をホストしている第2のVMまたはコンテナに係るvNICの受信(Rx)バッファへ、パケットデータを書込むことによって、前記複数のパケットの中に含まれるパケットデータをVMまたはコンテナ間で転送する、ための手段を有する、計算プラットフォーム。
34.前記計算プラットフォームは、さらに、
複数のLSCを実施し、それぞれのLSCは、LSCを使用して処理されるパケット上で実行されるべき固有のサービスのシーケンスを含んでおり、かつ、
仮想ネットワーク装置をホストしているVMまたはコンテナそれぞれに対するローカルフローテーブルを構成し、所与のVMまたはコンテナに対する前記ローカルフローテーブルは、VMまたはコンテナによってホストされた仮想ネットワーク装置によって実行されるべきサービスを含む前記LSCそれぞれに対するエントリーを含み、かつ、LSCそれぞれに対する前記エントリーは、vNIC受信(Rx)バッファ、または、前記LSCにおいて次の仮想ネットワーク装置をホストしているVMまたはコンテナのためのRxバッファ、のうち少なくとも一つを特定する、ための手段を有する、条項33に記載の計算プラットフォーム。
35.前記計算プラットフォームは、さらに、前記VMまたはコンテナそれぞれについて、vNICによって使用されるバッファを受信するために使用される共有メモリ空間を割り当て、それぞれのVMまたはコンテナは、前記共有メモリ空間の読出し及び書込みをすることができる、ための手段を有する、条項33または34に記載の計算プラットフォーム。
36.前記計算プラットフォームは、さらに、
前記NICにおいて受信されたパケットが属するフロー、または、前記パケットをサービスするために使用されるべきLSC、のうち少なくとも一つを決定し、かつ、
前記パケットを、前記NICから、前記LSCについて定められた第1の仮想ネットワーク装置をホストするために使用されるVMまたはコンテナのためのvNICの受信バッファへ転送する、ための手段を有する、条項33乃至35いずれかに記載の計算プラットフォーム。
37.前記計算プラットフォームは、さらに、
メモリマップド入力−出力(MMIO)アドレス空間として、前記ネットワークインターフェイス上に前記メモリの少なくとも一部分を構成し、かつ、
前記NICを構成して、
前記ネットワークインターフェイスの既定のネットワークポートにおいてネットワークから受信した複数のパケットそれぞれについての受信バッファにおけるパケットデータを、前記MMIOアドレス空間においてバッファし、かつ、
それぞれのパケットについてのパケットデータを、ダイレクトメモリアクセス(DMA)データ転送を使用して、前記受信バッファから、前記LSCについて定められた第1の仮想ネットワーク装置をホストするために使用されるVMまたはコンテナに対するvNICの受信バッファへコピーする、ための手段を有する、条項33乃至36いずれかに記載の計算プラットフォーム。
いくつかの実施例が所定の実施に関して説明されてきたが、いくつかの実施例に従った他の実施も可能である。加えて、図面に示され、及び/又は、ここにおいて説明されたエレメントまたは他の特徴に係る構成及び/又は順番は、図示され、説明された所定のやり方に構成される必要はない。いくつかの実施例に従って、多くの他の構成が可能である。
図示されたそれぞれのシステムにおいて、いくつかのケースにおけるエレメントは、それぞれ同じ参照番号または異なる参照番号を有することができ、表示されたエレメントは異なり、及び/又は、同じであってよい。しかしながら、エレメントは、ここにおいて示され、または、説明されたいくつかの、または、全てのシステムとは異なる実施及び作業を有するよう十分に順応性がある。図示された種々のエレメントは、同一、または、異なるものであってよい。どれを第1のエレメントとして参照し、どれを第2のエレメントと呼ぶかは任意である。
明細書および特許請求の範囲において、用語「結合された(“coupled”)」と「接続された(“connected”)」が、その派生語を伴なって、使用され得る。これらの用語は、お互いに類義語であるとして意図されたものではない。むしろ、所定の実施例において、「接続された」は、2つまたはそれ以上のエレメントがお互いに直接に物理的または電気的に接触していることを示すために使用され得る。「結合された」は、2つまたはそれ以上のエレメントが直接に物理的または電気的に接触していることを意味することができる。しかしながら、「結合された」は、また、2つまたはそれ以上のエレメントがお互いに直接的に接触していないことも意味することもあるが、それでもなお、お互いに協働または相互作用するものである。
実施例は、本発明の実施または例である。明細書における「実施例(“an embodiment”)」、「一つの実施例(“one embodiment”)」、「いくつかの実施例(“some embodiment”)」、および、「他の実施例(“other embodiment”)」への言及は、実施例に関して説明された所定の特徴、構成、または、特性が、少なくともいくつかの本発明に係る実施例に含まれているが、必ずしも全ての実施例に含まれる必要はない、ことを意味している。種々の表現である「実施例」、「一つの実施例」、「いくつかの実施例」、および、「他の実施例」は、必ずしも全て同一の実施例を参照することを要しない。
ここにおいて説明され、図示されたコンポーネント、特徴、構成、特性、等の全てが、所定の実施例に含まれる必要があるということはない。例えば、明細書で、コンポーネント、特徴、構成、または、特性が含まれ「得る(“may”、“might”、“can”、または、“could”)」と記載している場合は、その所定のコンポーネント、特徴、構成、または、特性が含まれることを要しない。明細書または特許請求の範囲が「一つの(“a”or“an”)」エレメントに言及している場合は、そのエレメントが唯一つ存在することを意味するものではない。明細書または特許請求の範囲が「追加の(“an additional”)」エレメントに言及している場合は、追加のエレメントの一つ以上の存在を排除することを意味するものではない。
上記の詳細な説明における”M”および”N”といった文字は、整数を示すために使用されており、所定の文字の使用は所定の実施例に限定されるものではない。さらに、同じ文字が別個の整数を表すために使用されてよく、または、異なる文字が使用されてもよい。加えて、詳細な説明における所定の文字使用は、詳細な説明における技術的事項と同一のものに関する請求項において使用される文字と一致しても、しなくてもよい。
上述のように、ここにおける実施例の種々の態様は、対応するソフトウェア及び/又はファームウェアコンポーネントおよびアプリケーションによって促進され得る。サーバー又はデバイスプロセッサ上で稼働しているソフトウェア、または、エンベッドされたプロセッサによって実行されるソフトウェア及び/又はハードウェア、または類似のもの、といったものである。このように、本発明の実施例は、以下のものとして、または、以下をサポートするために使用され得る。ソフトウェアプログラム、ソフトウェアモジュール、ファームウェア、及び/又は、プロセッサコアのいくつかの形態上(コンピュータのCPU、マルチコアプロセッサの一つまたはそれ以上のコア、といったもの)で実行される分散されたソフトウェア、プロセッサまたはコア上で稼働しており、または、そうでなければ、コンピュータで読取り可能またはマシンで読取り可能な固定のストレージ媒体の上または中で実施され又は実現される仮想マシン、である。コンピュータで読取り可能またはマシンで読取り可能な固定のストレージ媒体は、マシン(例えば、コンピュータ)によって読取り可能な形態において情報を保管または送るためのあらゆるメカニズムを含んでいる。例えば、コンピュータで読取り可能またはマシンで読取り可能な固定のストレージ媒体は、読出し可能/読出し不可媒体(例えば、リードオンリーメモリ(ROM)、ランダムアクセスメモリ(RAM)、磁気ディスクストレージ媒体、光ストレージ媒体、フラッシュメモリデバイス、等)といった、コンピュータまたはコンピューティングマシン(例えば、計算機器、電子システム、等)によってアクセス可能な形態において情報を提供(つまり、保管及び/又は伝送)するあらゆるメカニズムを含んでいる。コンテンツは、直接的に実行可能であり(「オブジェクト(”object”)」または「実行可能(”executable”)」形態)、ソースコード、または、異なるコード(「デルタ(”delta”)」または「パス(”path”)」コード)、であってよい。コンピュータで読取り可能またはマシンで読取り可能な固定のストレージ媒体は、また、そこからコンテンツをダウンロードすることができるストレージまたはデータベースを含む。コンピュータで読取り可能またはマシンで読取り可能な固定のストレージ媒体は、また、販売または配送の時点でコンテンツが保管されているデバイスまたはプロダクトを含む。従って、コンテンツが保管されたデバイスを配送すること、または、通信メディアにわたりダウンロードのためにコンテンツを提供することは、ここにおいて説明されたようなコンテンツを伴うンピュータで読取り可能またはマシンで読取り可能な固定のストレージ媒体を含む製品を提供するものとして理解され得るものである。
プロセスとして上記に参照された種々のコンポーネント、サーバー、または、ここにおいて説明されたツールは、説明された機能を実行するための手段であり得る。ここにおいて説明された種々のコンポーネントによって実行されるオペレーションと機能は、処理エレメント上で稼働しているソフトウェアによって実施され得る。エンベッドされたハードウェア又は類似のもの、または、ハードウェアとソフトウェアのあらゆる組合せを介するものである。そうしたコンポーネントは、ソフトウェアモジュール、ハードウェアモジュール、特定用途のハードウェア(例えば、アプリケーション特化ハードウェア、ASIC、DSP、等)、エンベッドされたコントローラ、ハードワイヤード回路、ハードウェアロジック、等として実施され得る。ソフトウェアコンテンツ(例えば、データ、インストラクション、コンフィグレーション情報、等)は、コンピュータで読取り可能またはマシンで読取り可能な固定のストレージ媒体を含む製品を介して提供され、実行され得るインストラクションを表すコンテンツを提供する。コンテンツは、ここにおいて説明された種々の機能/オペレーションを実行するコンピュータを結果として生じる。
本発明の図示された実施例に係る上記の説明は、要約において記載されたものを含み、精緻なもの、または、開示されたまさにその形態に本発明を限定するように意図されたものではない。本発明の所定の実施例、および例示は、説明目的のためにここにおいて記載されており、当業者であれば理解されるように、本発明の範囲内において種々の均等な変形が可能である。
これらの変形は、上記の詳細な説明をに照らして、本発明について行うことができる。以降の請求項において使用される用語は、明細書と図面において開示された所定の実施例に本発明を限定するものと理解されるべきではない。むしろ、本発明の範囲は、以降の請求項によって完全に決定されるべきものであり、確立されたクレーム解釈方針に従って理解される。
102 計算プラットフォーム
106 ホストオペレーティングシステム
107 OSメモリ
108 アプリケーションメモリ空間
109 仮想スイッチ
110 ハイパーバイザ
114 SDNコントローラ
134 共有メモリ領域
148 フローテーブル
510 インターコネクト
516 ディスクコントローラ
526 ネットワーク

Claims (25)

  1. 複数の仮想マシン(VM)または仮想化コンテナが稼働している計算プラットフォーム上で実施される方法であって、
    それぞれのVMまたは仮想化コンテナは、ソフトウェア確定ネットワーク(SDN)における仮想スイッチに通信可能に接続されている仮想ネットワークインターフェイスコントローラ(vNIC)を含み、
    前記方法は、
    前記複数のVMまたは仮想化コンテナによってホストされた複数の仮想ネットワーク装置を介してローカルサービスチェーン(LSC)を実施するステップであり、それぞれのネットワーク装置は、前記LSCによって処理されるべき複数のパケットそれぞれに対する一つまたはそれ以上のサービスを実行するように構成されている、ステップと、
    前記複数のパケットの中に含まれるパケットデータを、前記仮想スイッチを使用することなく、VMまたはコンテナ間で転送するステップと、
    を含む、方法。
  2. 前記パケットデータは、
    第1の受信(Rx)バッファを有し、前記LSCにおける現在の仮想ネットワーク装置をホストしている第1のvNICを含む、第1のVMまたはコンテナから、
    第2のRxバッファを有し、前記LSCにおける次の仮想ネットワーク装置をホストしている第2のvNICを含む、第2のVMまたはコンテナに対して、
    前記第2のRxバッファへ、直接的にパケットデータを書込むことによって転送される、
    請求項1に記載の方法。
  3. 前記パケットデータは、前記第1のRxバッファから前記第2のRxバッファへコピーされる、
    請求項2に記載の方法。
  4. 前記第1および第2のRxバッファの少なくとも一部分は、それぞれにファーストインファーストアウト(FIFO)キューとして構成されており、かつ、
    所与のパケットについてのパケットデータは、第1のFIFOキューにおける一つまたはそれ以上のスロットから、第2のFIFOキューにおける一つまたはそれ以上のスロットへコピーされる、
    請求項3に記載の方法。
  5. 前記方法は、さらに、
    複数のLSCを実施するステップであり、それぞれのLSCは、LSCを使用して処理されるパケット上で実行されるべき固有のサービスのシーケンスを含んでいる、ステップと、
    前記複数のLSCそれぞれに対して、LSCに割り当てられたパケットについてのパケットデータの転送を促進するためのメカニズムを実施するステップであり、それぞれのLSCについて、前記パケットデータは、前記仮想スイッチを通過しないチェーン化された方法で、LSCのための前記仮想ネットワーク装置をホストしているVMまたはコンテナ間で転送される、
    請求項1乃至4いずれか一項に記載の方法。
  6. 前記メカニズムは、VMまたはコンテナそれぞれに対するそれぞれのローカルフローテーブルを含み、
    所与のVMまたはコンテナに対する前記ローカルフローテーブルは、VMのためのvNIC受信(Rx)ポートまたはRxバッファのうち少なくとも一つ、もしくは、前記LSCにおいて次のネットワーク装置をホストしているコンテナを特定する、
    請求項5に記載の方法。
  7. 前記方法は、さらに、
    SDNコントローラを使用して、VMまたはコンテナそれぞれのための前記ローカルフローテーブルを構成するステップと、
    を含む、請求項6に記載の方法。
  8. 前記方法は、さらに、
    前記複数のVMまたはコンテナそれぞれに対して、それぞれのアプリケーションメモリ空間を割り当てるステップであり、VMまたはコンテナのアプリケーションメモリ空間において稼働しているアプリケーションは、別のVMまたはコンテナのアプリケーションメモリ空間にアクセスすることができない、ステップと、
    前記VMまたはコンテナそれぞれについて、vNICによって使用されるバッファを受信するために使用される共有メモリ空間を割り当てるステップであり、それぞれのVMまたはコンテナは、前記共有メモリ空間の読出し及び書込みをすることができる、ステップと、
    を含む、請求項1乃至7いずれか一項に記載の方法。
  9. 前記計算プラットフォームは、前記計算プラットフォームに通信可能に接続された少なくとも一つのネットワークポートを有するネットワークインターフェイスを含み、
    前記方法は、さらに、
    前記ネットワークインターフェイスのネットワークポートにおいてパケットを受信するステップと、
    前記パケットが属するフロー、または、前記パケットをサービスするために使用されるべきLSC、のうち少なくとも一つを決定するステップと、
    前記パケットを、前記ネットワークインターフェイスから、前記LSCについて定められた第1の仮想ネットワーク装置をホストするために使用されるVMまたはコンテナのためのvNICの受信バッファへ転送するステップと、
    を含む、請求項1乃至8いずれか一項に記載の方法。
  10. 前記パケットは、
    前記ネットワークインターフェイスのメモリマップド入力−出力(MMIO)アドレス空間における受信バッファから、前記vNICの前記受信バッファへ、
    ダイレクトメモリアクセス(DMA)データ転送を使用して、前記パケットについてのパケットデータをコピーすることによって、転送される、
    請求項9に記載の方法。
  11. 前記計算プラットフォームは、前記計算プラットフォームに通信可能に接続された少なくとも一つのネットワークポートを有するネットワークインターフェイスを含み、
    前記方法は、さらに、
    前記ネットワークインターフェイスの既定のネットワークポートにおいてネットワークから受信されるパケットそれぞれに対して、
    受信バッファにおける前記パケットについてのパケットデータを、前記ネットワークインターフェイスのメモリマップド入力−出力(MMIO)アドレス空間においてバッファするステップと、
    前記パケットについてのパケットデータを、ダイレクトメモリアクセス(DMA)データ転送を使用して、前記受信バッファから、前記LSCについて定められた第1の仮想ネットワーク装置をホストするために使用されるVMまたはコンテナに対するvNICの受信バッファへコピーするステップと、
    を含む、請求項1乃至10いずれか一項に記載の方法。
  12. 複数の仮想マシン(VM)または仮想化コンテナが実施されるべき計算プラットフォームのプロセッサ上で実行されるように構成された複数のインストラクションが保管されている機械で読取り可能な固定の媒体であって、
    前記VMまたはコンテナの少なくとも一部分は、ソフトウェア確定ネットワーク(SDN)における仮想スイッチに通信可能に接続された仮想ネットワークインターフェイスコントローラ(vNIC)を含み、かつ、仮想ネットワーク装置をホストしており、
    前記複数のインストラクションが実行されると、前記計算プラットフォームは、
    複数の前記仮想ネットワーク装置を介してローカルサービスチェーン(LSC)を実施し、それぞれの仮想ネットワーク装置は、前記LSCによって処理されるべき複数のパケットそれぞれに対する一つまたはそれ以上のサービスを実行するように構成されており、かつ、
    前記LSCにおける現在のサービス実行するように構成された第1の仮想ネットワーク装置をホストしている第1のVMまたはコンテナに対してアクセス可能なバッファから、前記LSCにおける次のサービス実行するように構成された第2の仮想ネットワーク装置をホストしている第2のVMまたはコンテナに係るvNICの受信(Rx)バッファへ、パケットデータを書込むことによって、前記複数のパケットの中に含まれるパケットデータをVMまたはコンテナ間で転送する、
    機械で読取り可能な固定の媒体。
  13. 前記第2のVMまたはコンテナに係るvNICのRxバッファは、第2のRxバッファを含み、かつ、
    前記パケットデータは、前記第1のVMまたはコンテナに係るvNICの第1のRxバッファから前記第2のRxバッファへコピーされる、
    請求項12に記載の機械で読取り可能な固定の媒体。
  14. 前記複数のインストラクションが実行されると、前記計算プラットフォームは、さらに、
    前記第1および第2のRxバッファの少なくとも一部分を、それぞれ第1および第2のファーストインファーストアウト(FIFO)キューとして構成し、かつ、
    所与のパケットについてのパケットデータを、第1のFIFOキューにおける一つまたはそれ以上のスロットから、第2のFIFOキューにおける一つまたはそれ以上のスロットへコピーする、
    請求項12または13に記載の機械で読取り可能な固定の媒体。
  15. 前記複数のインストラクションが実行されると、前記計算プラットフォームは、さらに、
    複数のLSCを実施し、それぞれのLSCは、LSCを使用して処理されるパケット上で実行されるべき固有のサービスのシーケンスを含んでおり、かつ、
    仮想ネットワーク装置をホストしているVMまたはコンテナそれぞれに対するローカルフローテーブルを構成し、
    所与のVMまたはコンテナに対する前記ローカルフローテーブルは、VMまたはコンテナによってホストされた仮想ネットワーク装置によって実行されるべきサービスを含む前記LSCそれぞれに対するエントリーを含み、かつ、
    LSCそれぞれに対する前記エントリーは、vNIC受信(Rx)バッファ、または、前記LSCにおいて次の仮想ネットワーク装置をホストしているVMまたはコンテナのためのRxバッファ、のうち少なくとも一つを特定する、
    請求項12乃至14いずれか一項に記載の機械で読取り可能な固定の媒体。
  16. 前記複数のインストラクションが実行されると、前記計算プラットフォームは、さらに、
    前記VMまたはコンテナそれぞれについて、vNICによって使用されるバッファを受信するために使用される共有メモリ空間を割り当て、それぞれのVMまたはコンテナは、前記共有メモリ空間の読出し及び書込みをすることができる、
    請求項12乃至15いずれか一項に記載の機械で読取り可能な固定の媒体。
  17. 前記計算プラットフォームは、前記計算プラットフォームに通信可能に接続された少なくとも一つのネットワークポートを有するネットワークインターフェイスを含み、
    前記複数のインストラクションが実行されると、前記計算プラットフォームは、さらに、
    前記ネットワークインターフェイスにおいて受信されたパケットが属するフロー、または、前記パケットをサービスするために使用されるべきLSC、のうち少なくとも一つを決定し、かつ、
    前記パケットを、前記ネットワークインターフェイスから、前記LSCについて定められた第1の仮想ネットワーク装置をホストするために使用されるVMまたはコンテナのためのvNICの受信バッファへ転送する、
    請求項12乃至16いずれか一項に記載の機械で読取り可能な固定の媒体。
  18. 前記パケットは、
    前記ネットワークインターフェイスのメモリマップド入力−出力(MMIO)アドレス空間における受信バッファから、前記vNICの前記受信バッファへ、
    ダイレクトメモリアクセス(DMA)データ転送を使用して、前記パケットについてのパケットデータをコピーすることによって、転送される、
    請求項17に記載の機械で読取り可能な固定の媒体。
  19. 前記計算プラットフォームは、前記計算プラットフォームに通信可能に接続された少なくとも一つのネットワークポートを有するネットワークインターフェイスを含み、
    前記複数のインストラクションが実行されると、前記計算プラットフォームは、さらに、
    メモリマップド入力−出力(MMIO)アドレス空間として、前記ネットワークインターフェイス上にメモリの少なくとも一部分を構成し、かつ、
    前記ネットワークインターフェイスを構成して、
    前記ネットワークインターフェイスの既定のネットワークポートにおいてネットワークから受信した複数のパケットそれぞれについての受信バッファにおけるパケットデータを、前記MMIOアドレス空間においてバッファし、かつ、
    それぞれのパケットについてのパケットデータを、ダイレクトメモリアクセス(DMA)データ転送を使用して、前記受信バッファから、前記LSCについて定められた第1の仮想ネットワーク装置をホストするために使用されるVMまたはコンテナに対するvNICの受信バッファへコピーする、
    請求項12乃至18いずれか一項に記載の機械で読取り可能な固定の媒体。
  20. 前記複数のインストラクションが実行されると、前記計算プラットフォームは、さらに、
    パケットが属するフローを決定し、
    前記フローに属しているパケットをサービスするために使用されるべきLSCを決定し、
    前記パケットをサービスするために使用されるべきLSCを特定する指標を前記パケットに追加する、
    請求項12乃至19いずれか一項に記載の機械で読取り可能な固定の媒体。
  21. 計算プラットフォームであって、
    複数のプロセッサコアを含むプロセッサと、
    前記プロセッサに対して動作可能に接続されたシステムメモリと、
    前記プロセッサに対して動作可能に接続された、少なくとも一つのネットワークポートとメモリを含むネットワークインターフェイスコントローラ(NIC)と、
    デバイス上に保管された複数のインストラクションを有するストレージデバイスと、
    を含み、
    前記インストラクションが、一つまたはそれ以上の前記プロセッサコアを介して実行されると、前記計算プラットフォームは、
    複数の仮想マシン(VM)または仮想化コンテナをインスタンス化し、それぞれのVMまたはコンテナは仮想ネットワークインターフェイスコントローラ(vNIC)を含んでおり、前記VMまたはコンテナの少なくとも一部分は仮想ネットワーク装置をホストしており、
    それぞれのvNICに接続された仮想ネットワークポートおよび前記vNIC上の少なくとも一つのネットワークポートを有する仮想スイッチを含んでいる、ソフトウェア確定ネットワーク(SDN)をプラットフォーム上に構成し、
    複数の前記仮想ネットワーク装置を介してローカルサービスチェーン(LSC)を実施し、それぞれのネットワーク装置は、前記LSCによって処理されるべき複数のパケットそれぞれに対する一つまたはそれ以上のサービスを実行するように構成されており、かつ、
    前記LSCにおける現在のサービスを実行するように構成されたる第1の仮想ネットワーク装置をホストしている第1のVMまたはコンテナに対してアクセス可能なバッファから、前記LSCにおける次のサービスを実行するように構成された第2の仮想ネットワーク装置をホストしている第2のVMまたはコンテナに係るvNICの受信(Rx)バッファへ、パケットデータを書込むことによって、前記複数のパケットの中に含まれるパケットデータをVMまたはコンテナ間で転送する、
    計算プラットフォーム。
  22. 前記複数のインストラクションが実行されると、前記計算プラットフォームは、さらに、
    複数のLSCを実施し、それぞれのLSCは、LSCを使用して処理されるパケット上で実行されるべき固有のサービスのシーケンスを含んでおり、かつ、
    仮想ネットワーク装置をホストしているVMまたはコンテナそれぞれに対するローカルフローテーブルを構成し、
    所与のVMまたはコンテナに対する前記ローカルフローテーブルは、VMまたはコンテナによってホストされた仮想ネットワーク装置によって実行されるべきサービスを含む前記LSCそれぞれに対するエントリーを含み、かつ、
    LSCそれぞれに対する前記エントリーは、vNIC受信(Rx)バッファ、または、前記LSCにおいて次の仮想ネットワーク装置をホストしているVMまたはコンテナのためのRxバッファ、のうち少なくとも一つを特定する、
    請求項21に記載の計算プラットフォーム。
  23. 前記複数のインストラクションが実行されると、前記計算プラットフォームは、さらに、
    前記VMまたはコンテナそれぞれについて、vNICによって使用されるバッファを受信するために使用される共有メモリ空間を割り当て、それぞれのVMまたはコンテナは、前記共有メモリ空間の読出し及び書込みをすることができる、
    請求項21または22に記載の計算プラットフォーム。
  24. 前記複数のインストラクションが実行されると、前記計算プラットフォームは、さらに、
    前記NICにおいて受信されたパケットが属するフロー、または、前記パケットをサービスするために使用されるべきLSC、のうち少なくとも一つを決定し、かつ、
    前記パケットを、前記NICから、前記LSCについて定められた第1の仮想ネットワーク装置をホストするために使用されるVMまたはコンテナのためのvNICの受信バッファへ転送する、
    請求項21乃至23いずれか一項に記載の計算プラットフォーム。
  25. 前記複数のインストラクションが実行されると、前記計算プラットフォームは、さらに、
    メモリマップド入力−出力(MMIO)アドレス空間として、前記ネットワークインターフェイス上に前記メモリの少なくとも一部分を構成し、かつ、
    前記NICを構成して、
    前記ネットワークインターフェイスの既定のネットワークポートにおいてネットワークから受信した複数のパケットそれぞれについての受信バッファにおけるパケットデータを、前記MMIOアドレス空間においてバッファし、かつ、
    それぞれのパケットについてのパケットデータを、ダイレクトメモリアクセス(DMA)データ転送を使用して、前記受信バッファから、前記LSCについて定められた第1の仮想ネットワーク装置をホストするために使用されるVMまたはコンテナに対するvNICの受信バッファへコピーする、
    請求項21乃至24いずれか一項に記載の計算プラットフォーム。
JP2015104059A 2014-06-23 2015-05-22 ソフトウェア確定ネットワークにおける仮想マシンと仮想化コンテナを用いたローカルサービスチェーン Active JP6016984B2 (ja)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US14/311,818 2014-06-23
US14/311,818 US10261814B2 (en) 2014-06-23 2014-06-23 Local service chaining with virtual machines and virtualized containers in software defined networking

Related Child Applications (1)

Application Number Title Priority Date Filing Date
JP2016188478A Division JP2017022767A (ja) 2014-06-23 2016-09-27 ソフトウェア確定ネットワークにおける仮想マシンと仮想化コンテナを用いたローカルサービスチェーン

Publications (2)

Publication Number Publication Date
JP2016009486A true JP2016009486A (ja) 2016-01-18
JP6016984B2 JP6016984B2 (ja) 2016-10-26

Family

ID=54768037

Family Applications (2)

Application Number Title Priority Date Filing Date
JP2015104059A Active JP6016984B2 (ja) 2014-06-23 2015-05-22 ソフトウェア確定ネットワークにおける仮想マシンと仮想化コンテナを用いたローカルサービスチェーン
JP2016188478A Pending JP2017022767A (ja) 2014-06-23 2016-09-27 ソフトウェア確定ネットワークにおける仮想マシンと仮想化コンテナを用いたローカルサービスチェーン

Family Applications After (1)

Application Number Title Priority Date Filing Date
JP2016188478A Pending JP2017022767A (ja) 2014-06-23 2016-09-27 ソフトウェア確定ネットワークにおける仮想マシンと仮想化コンテナを用いたローカルサービスチェーン

Country Status (5)

Country Link
US (1) US10261814B2 (ja)
JP (2) JP6016984B2 (ja)
KR (1) KR101747518B1 (ja)
CN (1) CN105282135B (ja)
DE (1) DE102015108145B4 (ja)

Cited By (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2016072963A (ja) * 2014-09-24 2016-05-09 インテル コーポレイション バーチャルマシンの間でサービスチェーンフローパケットを経路指定するための技術
WO2018003020A1 (ja) * 2016-06-28 2018-01-04 日本電気株式会社 制御装置、コンテナの起動方法及びプログラム
JP2018106386A (ja) * 2016-12-26 2018-07-05 富士通株式会社 プログラム、情報処理装置、および情報処理方法
KR20190020074A (ko) * 2016-06-27 2019-02-27 후아웨이 테크놀러지 컴퍼니 리미티드 네트워크 에지 컴퓨팅을 사용하여 가상화된 네트워크 기능을 배치하는 방법, 장치, 및 시스템
US11880724B2 (en) 2020-07-22 2024-01-23 Fujitsu Limited Information processing apparatus for controlling data transferring and method of processing information for controlling data transferring

Families Citing this family (100)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9225638B2 (en) 2013-05-09 2015-12-29 Vmware, Inc. Method and system for service switching using service tags
US9832168B2 (en) * 2014-07-01 2017-11-28 Cable Television Laboratories, Inc. Service discovery within multi-link networks
US9647894B2 (en) * 2014-07-30 2017-05-09 International Business Machines Corporation Mapping relationships among virtual elements across a system
US9558041B2 (en) * 2014-09-05 2017-01-31 Telefonaktiebolaget L M Ericsson (Publ) Transparent non-uniform memory access (NUMA) awareness
US10225137B2 (en) 2014-09-30 2019-03-05 Nicira, Inc. Service node selection by an inline service switch
US9935827B2 (en) 2014-09-30 2018-04-03 Nicira, Inc. Method and apparatus for distributing load among a plurality of service nodes
US9817602B2 (en) * 2014-11-13 2017-11-14 Violin Systems Llc Non-volatile buffering for deduplication
EP3227779A1 (en) * 2014-12-04 2017-10-11 Nokia Solutions And Networks Management International GmbH Steering of virtualized resources
US9445279B2 (en) 2014-12-05 2016-09-13 Huawei Technologies Co., Ltd. Systems and methods for placing virtual serving gateways for mobility management
US10320921B2 (en) * 2014-12-17 2019-06-11 Vmware, Inc. Specializing virtual network device processing to bypass forwarding elements for high packet rate applications
US9979704B2 (en) * 2014-12-17 2018-05-22 Cisco Technology, Inc. End-to-end security for virtual private service chains
US9699060B2 (en) * 2014-12-17 2017-07-04 Vmware, Inc. Specializing virtual network device processing to avoid interrupt processing for high packet rate applications
US9462427B2 (en) * 2015-01-14 2016-10-04 Kodiak Networks, Inc. System and method for elastic scaling using a container-based platform
US10599458B2 (en) * 2015-01-23 2020-03-24 Unisys Corporation Fabric computing system having an embedded software defined network
US9584415B2 (en) * 2015-01-30 2017-02-28 Huawei Technologies Co., Ltd. Devices, systems and methods for service chains
US10812632B2 (en) * 2015-02-09 2020-10-20 Avago Technologies International Sales Pte. Limited Network interface controller with integrated network flow processing
US9571395B2 (en) * 2015-02-09 2017-02-14 Cavium, Inc. Reconfigurable interconnect element with local lookup tables shared by multiple packet processing engines
US9729442B1 (en) * 2015-03-01 2017-08-08 Netronome Systems, Inc. Method of detecting large flows within a switch fabric of an SDN switch
US9998374B1 (en) * 2015-03-01 2018-06-12 Netronome Systems, Inc. Method of handling SDN protocol messages in a modular and partitioned SDN switch
US10009270B1 (en) * 2015-03-01 2018-06-26 Netronome Systems, Inc. Modular and partitioned SDN switch
US10594743B2 (en) 2015-04-03 2020-03-17 Nicira, Inc. Method, apparatus, and system for implementing a content switch
US9860189B2 (en) * 2015-04-30 2018-01-02 Dell Products Lp Systems and methods to enable network communications for management controllers
US9971624B2 (en) 2015-05-17 2018-05-15 Nicira, Inc. Logical processing for containers
US9942131B2 (en) * 2015-07-29 2018-04-10 International Business Machines Corporation Multipathing using flow tunneling through bound overlay virtual machines
US20170031704A1 (en) * 2015-07-31 2017-02-02 Hewlett-Packard Development Company, L.P. Network port profile for virtual machines using network controller
US9667725B1 (en) * 2015-08-06 2017-05-30 EMC IP Holding Company LLC Provisioning isolated storage resource portions for respective containers in multi-tenant environments
US9781209B2 (en) * 2015-08-20 2017-10-03 Intel Corporation Techniques for routing packets between virtual machines
US10871981B2 (en) * 2015-11-01 2020-12-22 Nicira, Inc. Performing logical network functionality within data compute nodes
US10027604B2 (en) * 2015-11-24 2018-07-17 Red Hat Israel, Ltd. Implicit dynamic receive queue steering for unidirectional flows in virtualized systems
US10063469B2 (en) 2015-12-16 2018-08-28 Nicira, Inc. Forwarding element implementation for containers
WO2017122847A1 (ko) * 2016-01-12 2017-07-20 쿨클라우드(주) Sdn 기반의 네트워크 시스템의 멀티 테넌트 지원 방법 및 그 시스템
US10230633B2 (en) * 2016-01-21 2019-03-12 Red Hat, Inc. Shared memory communication in software defined networking
US10892942B2 (en) * 2016-01-22 2021-01-12 Equinix, Inc. Container-based cloud exchange disaster recovery
WO2017131285A1 (ko) * 2016-01-25 2017-08-03 쿨클라우드(주) 컨테이너 네트워크 관리 시스템 및 컨테이너 네트워킹 방법
KR101797115B1 (ko) 2016-01-25 2017-11-15 쿨클라우드(주) 컨테이너 네트워크의 컨테이너 네트워킹 방법
KR101797112B1 (ko) 2016-01-25 2017-11-15 쿨클라우드(주) 컨테이너 네트워크 관리 시스템
US10083055B2 (en) * 2016-02-12 2018-09-25 At&T Intellectual Property I, L.P. Management of IoT devices in a virtualized network
US10182019B2 (en) * 2016-02-25 2019-01-15 Telefonaktiebolaget Lm Ericsson (Publ) Interconnected hardware infrastructure resource control
JP2017167763A (ja) * 2016-03-15 2017-09-21 富士通株式会社 情報処理装置、試験実行方法および試験実行プログラム
US20170272400A1 (en) * 2016-03-17 2017-09-21 Microsoft Technology Licensing, Llc Network virtualization of containers in computing systems
EP3436938A1 (en) * 2016-03-31 2019-02-06 Intel Corporation High density virtual machine container with copy-on-dma-write
US10178054B2 (en) * 2016-04-01 2019-01-08 Intel Corporation Method and apparatus for accelerating VM-to-VM network traffic using CPU cache
WO2017205220A1 (en) * 2016-05-23 2017-11-30 William Turner Hyperconverged system architecture featuring the container-based deployment of virtual machines
US20170366605A1 (en) * 2016-06-16 2017-12-21 Alcatel-Lucent Usa Inc. Providing data plane services for applications
US10237176B2 (en) * 2016-06-30 2019-03-19 Juniper Networks, Inc. Auto discovery and auto scaling of services in software-defined network environment
US11824863B2 (en) * 2016-11-03 2023-11-21 Nicira, Inc. Performing services on a host
US10148561B2 (en) * 2016-12-06 2018-12-04 At&T Intellectual Property I, L.P. Enhanced quality of service in software-defined networking-based connectionless mobility architecture
US10021033B2 (en) * 2016-12-07 2018-07-10 Nicira, Inc. Context driven policy based packet capture
KR102001617B1 (ko) * 2016-12-21 2019-08-08 주식회사 나임네트웍스 컨테이너 관리 컴포넌트를 가지는 머신 관리 디바이스 및 사물 인터넷 관리 디바이스
KR101716715B1 (ko) 2016-12-27 2017-03-15 주식회사 티맥스클라우드 가상 머신 환경의 네트워크 입출력 장치 가상화 방법 및 장치
US20180181421A1 (en) * 2016-12-27 2018-06-28 Intel Corporation Transferring packets between virtual machines via a direct memory access device
US10169023B2 (en) * 2017-02-06 2019-01-01 International Business Machines Corporation Virtual container deployment
CN107071932B (zh) * 2017-03-09 2020-10-23 南京耀泽电子科技有限公司 用于数据处理的无线网关虚拟化多通道构建及控制方法
US10594829B2 (en) 2017-05-24 2020-03-17 At&T Intellectual Property I, L.P. Cloud workload proxy as link-local service configured to access a service proxy gateway via a link-local IP address to communicate with an external target service via a private network
US20180357086A1 (en) * 2017-06-13 2018-12-13 Intel Corporation Container virtual switching
US20190028409A1 (en) * 2017-07-19 2019-01-24 Alibaba Group Holding Limited Virtual switch device and method
RU181857U1 (ru) * 2017-09-13 2018-07-26 Общество с ограниченной ответственностью "Интегратор" Программно-аппаратное устройство на базе операционной системы облачной гиперконвергенции
US11018981B2 (en) * 2017-10-13 2021-05-25 Cisco Technology, Inc. System and method for replication container performance and policy validation using real time network traffic
US10797966B2 (en) 2017-10-29 2020-10-06 Nicira, Inc. Service operation chaining
US11169845B2 (en) * 2017-12-21 2021-11-09 Ciena Corporation Flow and application based processor scheduling for network functions virtualization applications using flow identification based on logical calculations on frame based fields
US10805192B2 (en) 2018-03-27 2020-10-13 Nicira, Inc. Detecting failure of layer 2 service using broadcast messages
CN110554977A (zh) * 2018-05-30 2019-12-10 阿里巴巴集团控股有限公司 数据缓存方法、数据处理方法、计算机设备、存储介质
US10897392B2 (en) 2018-06-11 2021-01-19 Nicira, Inc. Configuring a compute node to perform services on a host
US11283676B2 (en) 2018-06-11 2022-03-22 Nicira, Inc. Providing shared memory for access by multiple network service containers executing on single service machine
CN110704155B (zh) * 2018-07-09 2023-03-17 阿里巴巴集团控股有限公司 容器网络构建方法及装置、物理主机、数据传输方法
US10581730B2 (en) * 2018-07-12 2020-03-03 Vmware, Inc. Packet processing using service chains
CN110769075B (zh) * 2018-07-25 2022-07-05 中国电信股份有限公司 容器的通信方法、系统、控制器和计算机可读存储介质
US10645201B2 (en) 2018-07-31 2020-05-05 Vmware, Inc. Packet handling during service virtualized computing instance migration
CN110851371B (zh) 2018-08-20 2023-09-26 华为技术有限公司 报文处理方法及相关设备
US11595250B2 (en) 2018-09-02 2023-02-28 Vmware, Inc. Service insertion at logical network gateway
US10887251B2 (en) 2018-09-13 2021-01-05 International Business Machines Corporation Fault-tolerant architecture for packet capture
US11494212B2 (en) * 2018-09-27 2022-11-08 Intel Corporation Technologies for adaptive platform resource assignment
US11159366B1 (en) * 2018-09-28 2021-10-26 Juniper Networks, Inc. Service chaining for virtual execution elements
US11316822B1 (en) 2018-09-28 2022-04-26 Juniper Networks, Inc. Allocating external IP addresses from isolated pools
CN111124254B (zh) * 2018-10-30 2023-09-29 伊姆西Ip控股有限责任公司 调度存储空间回收请求的方法、电子设备和程序产品
US11016793B2 (en) * 2018-11-26 2021-05-25 Red Hat, Inc. Filtering based containerized virtual machine networking
US11194610B2 (en) 2019-02-22 2021-12-07 Vmware, Inc. Service rule processing and path selection at the source
US11283732B2 (en) 2019-03-29 2022-03-22 Juniper Networks, Inc. Network functions virtualization (NFV) backplane on forwarding microchip
KR102101602B1 (ko) * 2019-04-04 2020-04-17 한국전자통신연구원 트래픽 관리 장치 및 방법
KR102099118B1 (ko) 2019-04-29 2020-04-09 래블업(주) 사용자가 요청한 다수개의 라이브러리를 탑재한 세션 컨테이너 제공방법
WO2020236275A1 (en) 2019-05-23 2020-11-26 Cray Inc. System and method for facilitating dynamic command management in a network interface controller (nic)
KR102025435B1 (ko) * 2019-06-05 2019-09-25 주식회사 오픈케어랩 컨테이너를 이용하여 iot 서비스를 제공하는 방법, 장치 및 그를 이용한 시스템
JP7226123B2 (ja) 2019-06-19 2023-02-21 富士通株式会社 情報処理システム、情報処理装置、及び情報処理プログラム
US11277382B2 (en) * 2019-07-22 2022-03-15 Vmware, Inc. Filter-based packet handling at virtual network adapters
LU101360B1 (en) * 2019-08-26 2021-03-11 Microsoft Technology Licensing Llc Pinned physical memory supporting direct memory access for virtual memory backed containers
CN110580157A (zh) * 2019-09-12 2019-12-17 广东鑫光智能系统有限公司 基于软件定义的数据采集接口
CN110597633A (zh) * 2019-09-12 2019-12-20 北京交通大学 一种智慧协同网络族群弹性伸缩的方法和系统
US11283717B2 (en) 2019-10-30 2022-03-22 Vmware, Inc. Distributed fault tolerant service chain
US11140218B2 (en) 2019-10-30 2021-10-05 Vmware, Inc. Distributed service chain across multiple clouds
US11659061B2 (en) 2020-01-20 2023-05-23 Vmware, Inc. Method of adjusting service function chains to improve network performance
US11277331B2 (en) 2020-04-06 2022-03-15 Vmware, Inc. Updating connection-tracking records at a network edge using flow programming
CN112398688B (zh) * 2020-11-13 2022-06-03 广东省华南技术转移中心有限公司 容器网络配置方法、容器网络系统以及存储介质
US11734043B2 (en) 2020-12-15 2023-08-22 Vmware, Inc. Providing stateful services in a scalable manner for machines executing on host computers
WO2022132308A1 (en) * 2020-12-15 2022-06-23 Vmware, Inc. Providing stateful services a scalable manner for machines executing on host computers
US11611625B2 (en) 2020-12-15 2023-03-21 Vmware, Inc. Providing stateful services in a scalable manner for machines executing on host computers
CN113472848A (zh) * 2021-05-31 2021-10-01 济南浪潮数据技术有限公司 一种虚拟机和容器的网络融合方法、装置及相关设备
JP2023003987A (ja) * 2021-06-25 2023-01-17 富士通株式会社 情報処理装置、情報処理プログラム、及び情報処理方法
KR102633575B1 (ko) * 2021-10-25 2024-02-02 에스케이텔레콤 주식회사 네트워크데이터체이닝장치 및 네트워크데이터체이닝장치의 동작 방법
KR102633569B1 (ko) * 2021-10-25 2024-02-02 에스케이텔레콤 주식회사 네트워크데이터체이닝장치 및 네트워크데이터체이닝장치의 동작 방법
CN115378822B (zh) * 2022-08-19 2023-06-06 武汉烽火技术服务有限公司 一种dds分布式应用仿真的方法和系统

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2007158870A (ja) * 2005-12-07 2007-06-21 Hitachi Ltd 仮想計算機システム及びそのネットワーク通信方法
JP2009230549A (ja) * 2008-03-24 2009-10-08 Fujitsu Ltd 情報処理装置、情報処理方法及びコンピュータプログラム
JP2011070526A (ja) * 2009-09-28 2011-04-07 Fujitsu Ltd 制御仮想計算機プログラム、ハイパーバイザプログラム、制御仮想計算機制御方法及び仮想計算機制御方法
JP2011134320A (ja) * 2009-12-22 2011-07-07 Intel Corp 効率的なネストした仮想化

Family Cites Families (22)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP4439100B2 (ja) 2000-09-22 2010-03-24 株式会社東芝 ネットワーク間中継装置
US7685281B1 (en) * 2004-02-13 2010-03-23 Habanero Holdings, Inc. Programmatic instantiation, provisioning and management of fabric-backplane enterprise servers
US7634608B2 (en) * 2006-06-30 2009-12-15 Sun Microsystems, Inc. Bridging network components
AU2007339381A1 (en) 2006-12-21 2008-07-10 Simtone Corporation Service chaining methods and apparatus
US8219778B2 (en) 2008-02-27 2012-07-10 Microchip Technology Incorporated Virtual memory interface
JP2009230479A (ja) 2008-03-24 2009-10-08 Toshiba Microelectronics Corp マイクロプロセッサ
US8031731B2 (en) * 2008-06-09 2011-10-04 Oracle America, Inc. System for sharing a network port of a network interface including a link for connection to another shared network interface
JP5352132B2 (ja) 2008-06-19 2013-11-27 株式会社日立製作所 計算機システム及びそのi/o構成変更方法
US8254261B2 (en) * 2009-10-16 2012-08-28 Oracle America, Inc. Method and system for intra-host communication
EP2509000A4 (en) 2009-12-04 2017-09-20 Nec Corporation Server and flow control program
US8739177B2 (en) 2010-06-21 2014-05-27 Intel Corporation Method for network interface sharing among multiple virtual machines
US9923826B2 (en) * 2011-10-14 2018-03-20 Citrix Systems, Inc. Systems and methods for dynamic adaptation of network accelerators
US8521905B2 (en) 2011-12-22 2013-08-27 Telefonaktiebolaget L M Ericsson (Publ) System for flexible and extensible flow processing in software-defined networks
US20130279378A1 (en) * 2012-04-19 2013-10-24 Delphax Technologies Canada, Ltd. Cascaded Streaming of Data Through Virtual Chain of Nodes in Hub Topology
US9106508B2 (en) * 2012-04-30 2015-08-11 International Business Machines Corporation Providing services to virtual overlay network traffic
US9769061B2 (en) 2012-05-23 2017-09-19 Brocade Communications Systems, Inc. Integrated heterogeneous software-defined network
US8806025B2 (en) 2012-06-25 2014-08-12 Advanced Micro Devices, Inc. Systems and methods for input/output virtualization
US9668161B2 (en) 2012-07-09 2017-05-30 Cisco Technology, Inc. System and method associated with a service flow router
US9571507B2 (en) 2012-10-21 2017-02-14 Mcafee, Inc. Providing a virtual security appliance architecture to a virtual cloud infrastructure
JP2014096675A (ja) * 2012-11-08 2014-05-22 Hitachi Ltd 通信装置、及び、設定方法
US9356871B2 (en) * 2013-03-15 2016-05-31 Cisco Technology, Inc. Programmable management engine for networks
US9967181B2 (en) * 2014-01-13 2018-05-08 Futurewei Technologies, Inc. Packet labeling in a virtual network

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2007158870A (ja) * 2005-12-07 2007-06-21 Hitachi Ltd 仮想計算機システム及びそのネットワーク通信方法
JP2009230549A (ja) * 2008-03-24 2009-10-08 Fujitsu Ltd 情報処理装置、情報処理方法及びコンピュータプログラム
JP2011070526A (ja) * 2009-09-28 2011-04-07 Fujitsu Ltd 制御仮想計算機プログラム、ハイパーバイザプログラム、制御仮想計算機制御方法及び仮想計算機制御方法
JP2011134320A (ja) * 2009-12-22 2011-07-07 Intel Corp 効率的なネストした仮想化

Cited By (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2016072963A (ja) * 2014-09-24 2016-05-09 インテル コーポレイション バーチャルマシンの間でサービスチェーンフローパケットを経路指定するための技術
KR20190020074A (ko) * 2016-06-27 2019-02-27 후아웨이 테크놀러지 컴퍼니 리미티드 네트워크 에지 컴퓨팅을 사용하여 가상화된 네트워크 기능을 배치하는 방법, 장치, 및 시스템
KR102169765B1 (ko) 2016-06-27 2020-10-26 후아웨이 테크놀러지 컴퍼니 리미티드 네트워크 에지 컴퓨팅을 사용하여 가상화된 네트워크 기능을 배치하는 방법, 장치, 및 시스템
US11036536B2 (en) 2016-06-27 2021-06-15 Huawei Technologies Co., Ltd. Method, apparatus, and system for deploying virtualized network function using network edge computing
WO2018003020A1 (ja) * 2016-06-28 2018-01-04 日本電気株式会社 制御装置、コンテナの起動方法及びプログラム
JPWO2018003020A1 (ja) * 2016-06-28 2019-01-24 日本電気株式会社 制御装置、コンテナの起動方法及びプログラム
US10719347B2 (en) 2016-06-28 2020-07-21 Nec Corporation Control apparatus, container starting method, and program
JP2018106386A (ja) * 2016-12-26 2018-07-05 富士通株式会社 プログラム、情報処理装置、および情報処理方法
US11880724B2 (en) 2020-07-22 2024-01-23 Fujitsu Limited Information processing apparatus for controlling data transferring and method of processing information for controlling data transferring

Also Published As

Publication number Publication date
CN105282135A (zh) 2016-01-27
CN105282135B (zh) 2019-07-26
KR20150146391A (ko) 2015-12-31
DE102015108145A1 (de) 2015-12-24
JP2017022767A (ja) 2017-01-26
JP6016984B2 (ja) 2016-10-26
KR101747518B1 (ko) 2017-06-14
US10261814B2 (en) 2019-04-16
DE102015108145B4 (de) 2023-04-27
US20150370586A1 (en) 2015-12-24

Similar Documents

Publication Publication Date Title
JP6016984B2 (ja) ソフトウェア確定ネットワークにおける仮想マシンと仮想化コンテナを用いたローカルサービスチェーン
US11102117B2 (en) In NIC flow switching
US11750446B2 (en) Providing shared memory for access by multiple network service containers executing on single service machine
US10178054B2 (en) Method and apparatus for accelerating VM-to-VM network traffic using CPU cache
US10897392B2 (en) Configuring a compute node to perform services on a host
US10872056B2 (en) Remote memory access using memory mapped addressing among multiple compute nodes
US8806025B2 (en) Systems and methods for input/output virtualization
US8675644B2 (en) Enhanced virtual switch
US9910687B2 (en) Data flow affinity for heterogenous virtual machines
US10911405B1 (en) Secure environment on a server
US11487567B2 (en) Techniques for network packet classification, transmission and receipt
EP4004721B1 (en) Computer device including process isolated containers with assigned virtual functions
EP4004751B1 (en) Pinned physical memory supporting direct memory access for virtual memory backed containers
US10877822B1 (en) Zero-copy packet transmission between virtualized computing instances
US20200021518A1 (en) Packet processing using service chains
US20230308398A1 (en) Latency-aware load balancer for topology-shifting software defined networks
US11412059B2 (en) Technologies for paravirtual network device queue and memory management
US10616116B1 (en) Network traffic load balancing using rotating hash
US20240028381A1 (en) Virtual i/o device management

Legal Events

Date Code Title Description
A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20160425

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20160510

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20160805

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: 20160830

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20160927

R150 Certificate of patent or registration of utility model

Ref document number: 6016984

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250