(57)【要約】  本発明は、ソース・ノード（２）から宛先ノード（３）への仮想ネットワーク機能（１）ＶＮＦの移行のための方法に関する。本方法は、宛先ノード（３）によって、ソース・ノード（２）によって実装される仮想ネットワーク機能（１）の状態のスナップショットを受信することと、宛先ノード（３）によって、スナップショット以来ソース・ノード（２）によって受信された１つまたは複数のデータ・パケット（５）の処理によって生じたソース・ノード（２）によって実装される仮想ネットワーク機能（１）の状態の変化を符号化する（１７）状態更新要素を受信する（９）こととを備える。本発明は、さらに、本方法を実装するように適応されたソース・ノード（２）と、宛先ノード（３）と、ソフトウェア・プログラム製品に関する。
2019512974.tif 000002
【特許請求の範囲】
【請求項１】
ソース・ノード（２）から宛先ノード（３）への仮想ネットワーク機能（１）ＶＮＦの移行のための方法であって、
−  前記宛先ノード（３）によって、前記ソース・ノード（２）によって実装される前記仮想ネットワーク機能（１）の状態のスナップショットを受信するステップと、
−  前記宛先ノード（３）によって、前記スナップショット以来前記ソース・ノード（２）によって受信された１つまたは複数のデータ・パケット（５）の処理によって生じた前記ソース・ノード（２）によって実装される前記仮想ネットワーク機能（１）の前記状態の変化を符号化する（１７）状態更新要素を受信する（９）ステップと
を備える方法。
【請求項２】
−  状態更新バッファ（６ｂ）中に前記宛先ノード（３）における前記状態更新要素を記憶するステップ
をさらに備える、請求項１に記載の方法。
【請求項３】
−  前記状態スナップショットに基づいて前記宛先ノード（３）における前記仮想ネットワーク機能（１）を初期化するステップ
をさらに備える、請求項１に記載の方法。
【請求項４】
−  前記バッファされた状態更新要素に基づいて、前記状態スナップショットに基づいて前記宛先ノード（３）において初期化された前記仮想ネットワーク機能（１）の前記状態を更新するステップ
をさらに備える、請求項２に記載の方法。
【請求項５】
−  前記宛先ノード（３）において初期化された前記仮想ネットワーク機能（１）の前記状態が、所定の量の前記バッファされた状態更新要素で更新された後、前記ソース・ノード（２）におけるデータ・パケット（５）の処理を停止し、前記宛先ノード（３）に１つまたは複数の後続のデータ・パケット（５’）をリダイレクトするようにシグナリングするステップ
をさらに備える、請求項４に記載の方法。
【請求項６】
前記所定の量の前記バッファされた状態更新要素が、特に、前記宛先ノード（３）におけるバッファされた状態更新要素の数を所定のしきい値と比較することによって前記状態更新要素の量によって決定される、請求項５に記載の方法。
【請求項７】
−  前記宛先ノード（３）におけるデータ・パケット・バッファ（７ｂ）中に前記１つまたは複数の後続のデータ・パケット（５＊）を記憶するステップと、
−  前記ソース・ノード（２）から受信し、前記宛先ノード（３）における前記状態更新バッファ（６ｂ）中に記憶されたすべての状態更新要素が、前記宛先ノード（３）において前記仮想ネットワーク機能（１）を更新するために使用されるとすぐに、前記宛先ノード（３）において前記仮想ネットワーク機能（１）によって前記１つまたは複数の後続のデータ・パケット（５＊）を処理するステップと
をさらに備える、請求項５に記載の方法。
【請求項８】
−  前記宛先ノード（３）におけるデータ・パケット・バッファ（７ｂ）中に前記１つまたは複数の後続のデータ・パケット（５＊）を記憶するステップと、
−  正常プロセスを害することなしに前記１つまたは複数の後続のデータ・パケット（５＊）が処理され得るのかどうかの決定に基づいて、特に、前記１つまたは複数の後続のデータ・パケット（５＊）が属するＴＣＰフローのそれぞれのシーケンス番号との前記１つまたは複数の後続のデータ・パケット（５＊）のシーケンス番号の比較に基づいて、１つまたは複数の状態更新要素が、前記ソース・ノード（２）から前記宛先ノード（３）に送信されることがまだ予期されていないが、前記宛先ノード（３）において前記仮想ネットワーク機能（１）によって前記１つまたは複数の後続のデータ・パケット（５＊）を処理するステップと
をさらに備える、請求項５に記載の方法。
【請求項９】
前記移行が、完全な移行であり、前記方法が、前記宛先ノード（３）によって処理される（１２）ために前記宛先ノード（３）に前記ソース・ノード（２）による前記移行の前に処理された（１１）データ・パケット・トラフィック（１０ａ、１０ｂ、１０ａ＊、１０ｂ＊）の全体をリダイレクトするステップをさらに備えるか、あるいは前記移行が、部分的な移行であり、前記方法が、前記宛先ノード（３）によって処理される（１２）ために前記宛先ノード（３）に前記ソース・ノード（２）による前記移行の前に処理された（１１）前記データ・パケット・トラフィック（１０ａ、１０ｂ、１０ａ＊、１０ｂ＊）の一部をリダイレクトするステップをさらに備える、請求項５に記載の方法。
【請求項１０】
前記状態更新要素が、状態更新バイト・ベクトルであり、状態更新バイト・ベクトルが、パケット・ヘッダ構造を有しないコンパクトなＶＮＦ固有のバイト表現である、請求項１に記載の方法。
【請求項１１】
前記宛先ノード（３）が、前記状態の前記スナップショットを受信する前に前記状態更新要素のうちの１つまたは複数を受信する、請求項１に記載の方法。
【請求項１２】
前記ソース・ノード（２）が、第１の物理ノードによって実装され、前記宛先ノード（３）が、前記第１の物理ノードとは異なる第２の物理ノードによって実装され、前記仮想ネットワーク機能（１）が、仮想ソース・インスタンスによって前記ソース・ノード（２）において実装され、仮想宛先インスタンスによって前記宛先ノード（３）において実装される、請求項１に記載の方法。
【請求項１３】
ソース・ノード（２）であって、宛先ノード（３）に前記ソース・ノード（２）によって実装される仮想ネットワーク機能（１）の状態のスナップショットを送信することと、前記スナップショット以来前記ソース・ノード（２）によって受信された１つまたは複数のデータ・パケット（５）の処理によって生じた前記ソース・ノード（２）によって実装される前記仮想ネットワーク機能（１）の前記状態の変化を符号化する（１７）状態更新要素を送信することとを行うように適応されたソース・ノード（２）。
【請求項１４】
宛先ノード（３）であって、ソース・ノード（２）によって実装される仮想ネットワーク機能（１）の状態のスナップショットを受信することと、前記スナップショット以来前記ソース・ノード（２）によって受信された１つまたは複数のデータ・パケット（５）の処理によって生じた前記ソース・ノード（２）によって実装される前記仮想ネットワーク機能（１）の前記状態の変化を符号化する（１７）状態更新要素を受信する（９）こととを行うように適応された宛先ノード（３）。
【請求項１５】
コンピュータ上で実行されたとき、請求項１乃至１２のうちの１つの方法を実行するように適応された、コンピュータ・プログラム製品。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ネットワーク技術の分野に位置しており、ソース・ノードから宛先ノードに仮想ネットワーク機能を移行させるための方法および対応する装置に関する。
【背景技術】
【０００２】
ネットワーク機能（ＮＦ）は、ネットワークのデータ・プレーン中のトラフィック上で動作する。ＮＦは、トラフィックを転送するか、改変するか、トラフィックに対して変化を加える。ＮＦの例としては、ＰＰＰｏＥアクセス・マルチプレクサ（Access Multiplexer）（ＰＰＰｏＥ＝イーサネットを介したポイント・ツー・ポイント・プロトコル（Point-to-Point Protocol over Ethernet））、ＩＤＳ（侵入検知システム（Intrusion Detection System））、ＮＡＴ（ネットワーク・アドレス変換（Network Address Translation））、ファイアウォールがある。仮想化ＮＦ（ＶＮＦ）は、専門として、専用ハードウェア上で動作する代わりに、クラウド・インフラストラクチャ中で動作する。トラフィック転送要素（たとえば、ＳＤＮ、ソフトウェア定義ネットワーク、スイッチ）と比較して、これらのＶＮＦは、しばしば、正しく機能するために状態を維持する必要がある。たとえば、ファイアウォールは、しばしば、攻撃を識別するためにカウンタを維持する。
【０００３】
限定はしないが、トラフィックまたはリソースの最適化などの理由のために、これらのネットワーク機能をスケール・アウト／インするか、またはネットワーク中の別の位置に「再配置する」必要があり得る。ＶＮＦの追加のインスタンスは、需要の増加を処理するために必要とされ得、またはインスタンスは、需要が減少するときにより少ない数に統合され得る。ＶＮＦは、たとえば、リソース利用またはシステム・パフォーマンスを改善するために、データセンタ内で、１つのデータセンタから別のデータセンタに、またはデータセンタから顧客構内に（完全にまたは部分的に）移動され得る。
【０００４】
機能の割振りを変更するときに、前のインスタンスから新しいインスタンスに必要なサービス状態を移行させることが重要である。ＶＮＦは、ネットワーク・サービス中の重要な機能であり、それらの再割当て中の中断およびダウンタイムは、深刻なパケット・ロスおよびジッタを生じ得、これは、サービスの品質を劣化させる。体感品質を低減しないために、サービス状態を効果的に管理することによってＶＮＦのサービスの中断を回避することが必要になる。
【０００５】
ＯｐｅｎＮＦと呼ばれる現在の実装形態は、いくつかのセッションを分割またはマージするか、または他の物理リソースにそれの状態を完全に転送することをネットワーク機能が行うことを可能にするフレームワークである。フレームワークは、進行中のセッションおよび状態転送が行われる間にパケット・ロスおよび異常パケットが生じないことを保証するための機構を提供する。フレームワーク中で、ＮＦＶコントローラは、データ経路において重要な役割を果たし、それの特殊タスクとしては、まだ配信してはならないパケットをバッファすることがある。フレームワークは、指定されたセッションに関係がある状態を戻す、削除するまたは注入するためにセッションをフィルタ処理する別個のデータ経路フロー（セッション）および方法の依存性に応じて状態分類を導入する。ＯｐｅｎＮＦでは、コントローラは、パケット・バッファリングなどのデータ・プレーン・タスクによって多量に利用される。
【０００６】
Ｐ２ＰベースのＯｐｅｎＮＦ（ピア・ツー・ピア・ベースのＯｐｅｎＮＦ）と呼ばれるさらなる現在の実装形態、データ・パケットは、元のネットワーク機能によって処理されるだけでなく、複製され、それの状態を最新に保つためだけに新たにインスタンス化されたネットワーク機能に送られる。これは、非常に大量の冗長トラフィックを生じ、ネットワーク経路とネットワーク・バッファとの両方に関してネットワークの性能を劣化させる。
【発明の概要】
【発明が解決しようとする課題】
【０００７】
したがって、仮想ネットワーク機能の効率的な移行のための方法を与えることが本発明の目的である。
【課題を解決するための手段】
【０００８】
本発明は、ソース・ノードから宛先ノードへの仮想ネットワーク機能ＶＮＦの移行のための方法によって本目的を達成する。宛先ノードは、ソース・ノードによって実装される仮想ネットワーク機能の状態のスナップショットを受信する。さらに、宛先ノードは、状態更新要素を受信する。状態更新要素は、ソース・ノードによって実装される仮想ネットワーク機能の状態の変化を符号化し、状態の変化は、スナップショットが行われてからソース・ノードによって受信された１つまたは複数のデータ・パケットを処理するソース・ノード、より詳細には、ソース・ノードの仮想ネットワーク機能によって生じる。プロセスを実装する機能の状態は、プロセスが特定の瞬間に、たとえば、状態が決定された瞬間に達するプロセスの時点として定義され得る。特定の瞬間での状態の決定は、状態のスナップショットと呼ばれることがある。
【０００９】
本発明は、さらに、宛先ノードにソース・ノードによって実装される仮想ネットワーク機能の状態のスナップショットを送信することと、スナップショット以来ソース・ノードによって受信された１つまたは複数のデータ・パケットの処理によって生じたソース・ノードによって実装される仮想ネットワーク機能の状態の変化を符号化する状態更新要素を送信することとを行うように適応されたソース・ノードによって上述の目的を達成する。
【００１０】
本発明は、さらに、ソース・ノードによって実装される仮想ネットワーク機能の状態のスナップショットを受信することと、スナップショット以来ソース・ノードによって受信された１つまたは複数のデータ・パケットの処理によって生じたソース・ノードによって実装される仮想ネットワーク機能の状態の変化を符号化する状態更新要素を受信することとを行うように適応された宛先ノードによって上述の目的を達成する。
【００１１】
本発明は、さらに、コンピュータ上で実行されたとき、説明される方法を実行するように適応されたコンピュータ・プログラム製品によって上述の目的を達成する。
【００１２】
本方法は、ソフトウェア、ハードウェアまたはそれらの組合せ上で実行され得る。
【００１３】
単数形の使用は、複数を除外しない。たとえば、本方法が、１つの仮想ネットワーク機能に関して説明されるが、それは、２つ以上の仮想ネットワーク機能の移行に同様に適用される。
【００１４】
仮想ネットワーク機能は、たとえば、仮想ＩＤＳ（仮想侵入検知システム（virtual Intrusion Detection System））、仮想ＮＡＴ（ネットワーク・アドレス変換（Network Address Translation））または仮想ファイアウォールであり得る。
【００１５】
仮想機能は、好ましくは、クラウド環境中の１つまたは複数のコンピュータ、たとえばサーバ上に実装される機能である。好ましくは、クラウド環境において、機能は、１つのリソース、すなわち、仮想リソースとしてユーザに見える１つまたは複数の物理リソース（コンピュータ、サーバ）上に実装される。
【００１６】
好ましい実施形態では、宛先ノードは、宛先ノードに実装された状態更新バッファ中に宛先ノードがソース・ノードから受信した状態更新要素を記憶する。
【００１７】
好ましい実施形態では、状態更新要素は、状態更新ベクトルと呼ばれることもある状態更新バイト・ベクトルである。
【００１８】
好ましくは、状態更新要素、特に、状態更新バイト・ベクトルは、宛先ノードに仮想ネットワークの状態の変化を送信するためにソース・ノードのＶＮＦによって生成されたコンパクトなＶＮＦ固有のバイト表現を備えるデータ・ユニットである。好ましくは、状態更新要素、特に、状態更新ベクトルは、伝送トランスポート・プロトコルＴＣＰ（transmission transport protocol）を使用して送信される。好ましくは、状態更新要素は、連続的に送信される。
【００１９】
好ましい実施形態では、状態更新要素、特に、状態更新バイト・ベクトルは、パケット・ヘッダ構造を有しないコンパクトなＶＮＦ固有のバイト表現である。
【００２０】
さらなる好ましい実施形態では、状態更新要素、特に、状態更新バイト・ベクトルは、パケット・ヘッダ構造とパケット・ペイロードとを有する。パケット・ペイロードは、ソース・ノードによって実装される仮想ネットワーク機能によって処理されるときに特定のデータ・パケットによって生じた状態の変化に関する符号化された情報を搬送する。
【００２１】
好ましい実施形態では、宛先ノードは、直接、特に、データ経路に関与するいかなるコントローラもなしにソース・ノードから状態更新要素を受信する。
【００２２】
好ましくは、宛先ノードは、宛先ノードにおける状態更新バッファ中にソース・ノードから受信した状態更新要素を記憶する。
【００２３】
好ましくは、特徴「バッファされた状態更新要素（バイト・ベクトル）」は、宛先ノードにおける状態更新バッファに記憶された状態更新要素（バイト・ベクトル）を指す。
【００２４】
好ましい実施形態では、仮想ネットワーク機能は、状態スナップショットに基づいて宛先ノードにおいて初期化される。
【００２５】
好ましい実施形態では、宛先ノードにおいて初期化された仮想ネットワーク機能の状態は、宛先ノードにおけるバッファされた状態更新要素に基づいて更新される。
【００２６】
好ましい実施形態では、宛先ノードにおいて初期化された仮想ネットワーク機能の状態を更新するために使用されるバッファされた状態更新要素が所定のしきい値以下に下がった後、宛先ノードは、ソース・ノードにおけるデータ・パケットの処理を停止し、追加または代替として、宛先ノードに１つまたは複数の後続のデータ・パケットをリダイレクトするようにシグナリングする。
【００２７】
好ましくは、特に、宛先ノードにおいて初期化された仮想ネットワーク機能の状態を更新するために使用される、宛先ノードにおけるバッファされた状態更新要素が所定のしきい値以下に下がった後、宛先ノードは、ソース・ノードにおけるデータ・パケットの処理を停止し、および／または宛先ノードに１つまたは複数の後続のデータ・パケットをリダイレクトするようにシグナリングする。
【００２８】
さらなる好ましい実施形態では、宛先ノードは、宛先ノードにおいて初期化された仮想ネットワーク機能の状態が、所定の量のバッファされた状態更新要素で更新された後、ソース・ノードにおけるデータ・パケットの処理を停止し、宛先ノードに１つまたは複数の後続のデータ・パケットをリダイレクトするようにシグナリングする。
【００２９】
好ましい実施形態では、宛先ノードにおいて初期化された仮想ネットワーク機能の状態を更新するために使用されるバッファされた状態更新要素が所定のしきい値以下に下がった後、宛先ノードは、コントローラに、「リダイレクト・メッセージ」と決定され得るメッセージを送る。
【００３０】
さらに、好ましい実施形態では、宛先ノードは、コントローラに、「リダイレクト・メッセージ」と決定され得るメッセージを送り、および／または宛先ノードにおいて初期化された仮想ネットワーク機能の状態が、所定の量のバッファされた状態更新要素で更新された後、ソース・ノードにおけるデータ・パケットの処理を停止し、追加または代替として、宛先ノードに１つまたは複数の後続のデータ・パケットをリダイレクトするようにシグナリングする。
【００３１】
好ましくは、所定の量のバッファされた状態更新要素は、特に、宛先ノードにおけるバッファされた状態更新要素の数を所定のしきい値と比較することによって状態更新要素の量によって決定される。言い換えれば、状態を更新するためにすべての状態更新要素が宛先バッファから外される後、宛先ノードのバッファ中の状態更新要素の現在の量が、所定のしきい値を下回った／それよりも低くなったのかどうかが検査される。好ましくは、所定のしきい値は、一定の整数「ｄ」であり、ここで、「ｄ」は、０または任意の正の整数値であるように構成され得る。
【００３２】
好ましい実施形態では、上記のメッセージ（リダイレクト・メッセージ）によって、コントローラは、ソース・ノードにおけるデータ・パケットの処理を停止するようにソース・ノードにシグナリングさせられる。
【００３３】
好ましい実施形態では、上記のメッセージ（リダイレクト・メッセージ）によって、コントローラは、宛先ノードに後続のデータ・パケットをリダイレクトさせられる。後続のデータ・パケットは、リダイレクトする前にソース・ノードに送られるデータ・パケットに続くデータ・パケットである。したがって、宛先ノードにおいて初期化された仮想ネットワーク機能の状態を更新するために使用されるバッファされた状態更新要素が、所定のしきい値以下に下がるとすぐに、リダイレクト・メッセージが、宛先ノードからコントローラに送られる。
【００３４】
より詳細に、好ましい実施形態では、宛先ノードにおいて初期化された仮想ネットワーク機能の状態を更新するために使用されるバッファされた状態更新要素が所定のしきい値以下に下がった後、宛先ノードは、ソース・ノードがデータ・パケットの処理を停止すべきであることをコントローラにシグナリングする。好ましくは、コントローラは、次いで、データ・パケットの処理を停止するようにソース・ノードにシグナリングする。
【００３５】
さらに、好ましくは、宛先は、宛先ノードによって処理されるために宛先ノードに、より詳細には、宛先ノードの仮想ネットワーク機能に、ソース・ノードに、より詳細には、ソース・ノードの仮想ネットワーク機能によって処理した１つまたは複数のデータ・フローをリダイレクトするようにコントローラにシグナリングする。
【００３６】
好ましくは、コントローラは、宛先ノードにソース・ノードによって処理されたデータ・フローをリダイレクトする。好ましくは、それによって、パケット・ロスが回避される。
【００３７】
好ましくは、宛先ノードは、最初に、宛先ノードにおける状態更新バッファがほぼ空であることをコントローラに通知する。好ましくは、コントローラは、次いで、宛先ノードにデータ・トラフィックを転送するようにデータ経路要素をプログラムする。
【００３８】
より詳細に、好ましい実施形態では、コントローラは、ソース・ノードにドレイン・パケットを注入する。ドレイン・パケットは、ソース・ノードに、宛先ノードに状態更新要素を送信するのを停止させるパケットと定義される。好ましくは、ドレイン・パケットを受信すると、ソース・ノードは、宛先ノードへの状態更新ストリームを閉じる。好ましくは、それによって、宛先ノードは、状態更新の終了に関して通知される。好ましくは、宛先ノード、より詳細には、宛先ノードにおいて実装される仮想ネットワーク機能は、パケットを処理するのを開始することができる。好ましくは、それによって、ソース・ノードから宛先ノードへの仮想ネットワーク機能の移行の同期が実装される。
【００３９】
好ましい実施形態では、（上記で説明した）リダイレクト・メッセージは、宛先ノードにおいて初期化された仮想ネットワーク機能の状態を更新するために使用される所定のバッファされた状態更新要素が下回ることによってトリガされる。
【００４０】
好ましくは、バッファされた状態更新要素に関する所定のしきい値は、状態更新バッファを下回ることとして、好ましくは、「ｄ」個の状態更新要素を下回ることとして定義され、「ｄ」は、あらかじめ定義されたパラメータ、たとえば、１０、１００、１０００、１００００である。
【００４１】
好ましい実施形態では、リダイレクト・メッセージをトリガするバッファされた状態更新要素の所定のしきい値は、状態更新バッファを下回ることとして、好ましくは、「ｄ」個の状態更新要素を下回ることとして定義され、「ｄ」は、あらかじめ定義されたパラメータ、たとえば、１０、１００、１０００、１００００である。
【００４２】
好ましい実施形態では、バッファされた状態更新要素の数が、決定され、所定のしきい値と比較される。好ましくは、バッファされた状態更新要素の数が、所定のしきい値、たとえば、１０、１００、１０００、１００００を下回る場合、宛先ノードは、ソース・ノードにおけるデータ・パケットの処理を停止し、追加または代替として、宛先ノードに１つまたは複数の後続のデータ・パケットをリダイレクトするようにシグナリングし、および／または宛先ノードは、コントローラにメッセージ、特に、リダイレクト・メッセージを送る。
【００４３】
さらなる好ましい実施形態では、宛先ノードにおいて初期化された仮想ネットワーク機能の状態を更新するために使用される宛先ノードにおける（現在の）バッファされた状態更新要素の量が十分に低いと見なされる場合、リダイレクト・メッセージがトリガされる。特に、切り替える前の所定の量は、送信された状態更新要素の全体ではなく、宛先ノードの状態更新バッファ中の現在の要素を指すことに留意されたい。
【００４４】
好ましい実施形態では、コントローラが宛先ノードにデータ・パケットをリダイレクトした後、宛先ノードは、宛先ノードにおけるデータ・パケット・バッファ中でデータ・パケットを受信する。これらのデータ・パケットが、リダイレクトの前にソース・ノードに向けられた最後のデータ・パケットに続くので、これらのデータ・パケットは、「後続の」データ・パケットと呼ばれることがある。
【００４５】
好ましい実施形態では、宛先ノードは、宛先ノードにおけるデータ・パケット・バッファ中に１つまたは複数の後続のデータ・パケットを記憶する。好ましくは、記憶することは、パケット・ロスを回避するためにリダイレクトが開始する前に開始する。
【００４６】
好ましい実施形態では、宛先ノード、より詳細には、宛先ノードにおける仮想ネットワーク機能は、ソース・ノードから受信し、宛先ノードにおける状態更新バッファ中に記憶されたすべての状態更新要素が、宛先ノードにおける仮想ネットワーク機能を更新するために処理されるとすぐに、１つまたは複数の後続のデータ・パケットを処理する。
【００４７】
好ましい実施形態では、宛先ノードにおいてソース・ノードから受信した状態更新要素がバッファされた状態更新バッファが空だった後、さらに好ましくは、宛先ノードがもはやソース・ノードからいかなる状態更新要素も受信しない場合、宛先ノードは、宛先ノードにおけるデータ・パケット・バッファ中に記憶された（後続の）データ・パケットの処理を開始する。
【００４８】
好ましい実施形態では、１つまたは複数の状態更新要素が、ソース・ノードから宛先ノードに送信されることがまだ予期されていないが（／にもかかわらず）、宛先ノード、より詳細には、宛先ノードにおける仮想ネットワーク機能は、１つまたは複数の後続のデータ・パケットのうちの１つまたは複数を処理する。
【００４９】
好ましい実施形態では、１つまたは複数の状態更新要素が、ソース・ノードから宛先ノードに送信されることがまだ予期されていないが、宛先ノードにおける仮想ネットワーク機能によって１つまたは複数の後続のデータ・パケットを処理するという決定は、１つまたは複数の後続のデータ・パケットが正常プロセスを害することなしに処理され得るのかどうかの決定に基づく。言い換えれば、好ましい実施形態では、宛先ノードによって受信され、宛先ノードにおけるデータ・パケット・バッファ中に記憶されたデータ・パケットごとに、データ・パケットが、正常プロセスを害することなしに処理され得るのかどうかが決定される。
【００５０】
より詳細に、好ましい実施形態では、１つまたは複数の状態更新要素が、ソース・ノードから宛先ノードに送信されることがまだ予期されていないが（／にもかかわらず）、宛先ノードにおけるデータ・パケット・バッファ中に記憶された１つまたは複数のデータ・パケットを処理するという決定は、１つまたは複数のデータ・パケットが属するＴＣＰフローのそれぞれのシーケンス番号との宛先ノードにおけるデータ・パケット・バッファ中に記憶された１つまたは複数のデータ・パケットのシーケンス番号の比較に基づく。
【００５１】
好ましくは、ソース・ノードから宛先ノードへの状態更新要素ストリームが完了する前に、すなわち、ソース・ノードが、依然として、宛先ノードに状態更新要素を送信している間に、データ・パケットが受信され、宛先ノードに記憶される。宛先ノードのデータ・パケット・バッファ中に入るデータ・パケットごとに、仮想ネットワーク機能は、正常プロセスを害することなしにデータ・パケットが処理され得るのかどうかを決定する。正常プロセスを害することなしにパケットが処理され得ると仮想ネットワーク機能が決定する場合、パケットは、状態更新ストリームが閉じられるのを待つことなしに処理される。
【００５２】
好ましくは、正常プロセスを害することなしに着信データ・パケットが処理され得るのかどうかの宛先ノードによる決定は、ＴＣＰシーケンス番号によって実施される。たとえば、ＴＣＰストリーム中で、宛先ノードの仮想ネットワーク機能は、参照される特定のフローの最後のシーケンス番号を記録（記憶）し、入ってくるデータ・パケットのシーケンス番号が予期された次のシーケンス番号である場合、データ・パケットが正常プロセスを害することなしに処理され得るのかどうかの質問に対して「真」を戻す。後者の場合、データ・パケットは、状態更新ストリームが閉じるのを待つことなしに処理される。したがって、ソース・ノードにおけるデータプレーンが排出される間に遅延が減少され得る。
【００５３】
好ましい実施形態では、移行は、完全な移行である。したがって、ソース・ノードによる移行の前に処理されたデータ・パケット・トラフィックの全体が、宛先ノードによって処理されるために宛先ノードにリダイレクトされる。
【００５４】
特に、（リダイレクトの前はソース・ノードによって受信され、リダイレクトの後は宛先ノードによって受信される）１つまたは複数のデータ・パケットが、１つまたは複数のデータ・フローに、またはより一般的に、本明細書で説明するデータ・パケット・トラフィックに属することに留意されたい。
【００５５】
好ましい実施形態では、移行は、部分的な移行である。したがって、ソース・ノードによる移行の前に処理されたデータ・パケット・トラフィックの一部のみが、宛先ノードによって処理されるために宛先ノードにリダイレクトされる。
【００５６】
好ましくは、部分的な移行では、スナップショットの直列化中のソース・ノードにおける仮想マシンは、宛先ノードに転送する必要がない状態を省略する。言い換えれば、ソース・ノードは、ソース・ノードの仮想マシンにおいて状態スナップショットを実装するとき、宛先ノードに関係し、したがって、宛先ノードに転送される予定である状態のみを直列化する。
【００５７】
好ましくは、部分的な移行では、状態更新は、直列化されたスナップショット中に含まれている状態に属する場合にのみ告知される（宛先ノードに送信される）。言い換えれば、ソース・ノードは、宛先ノードに関係し、したがって、スナップショット中に直列化された状態についてのみ状態更新要素を送信する。
【００５８】
好ましくは、部分的な移行では、データ・フローの一部（好ましくは、宛先ノードに関係するデータ・フロー）が、ソース・ノードによってではなく宛先ノードによって処理されると決定されているので、コントローラは、それらのみを宛先ノードにリダイレクトする。
【００５９】
好ましくは、部分的な移行では、ソース・ノードは、特に、ドレイン・パケットを受信したときにデータプレーン動作を停止しない。言い換えれば、ソース・ノードは、宛先ノードにリダイレクトされなかったデータ・フローを処理し続ける。
【００６０】
好ましい実施形態では、仮想ネットワーク機能の移行は、宛先ノードの仮想ネットワーク機能とのソース・ノードにおける仮想ネットワーク機能のマージである。
【００６１】
好ましくは、宛先ノードの仮想ネットワーク機能とのソース・ノードにおける仮想ネットワーク機能のマージは、ソース・ノードの仮想ネットワーク機能の状態と宛先ノードの仮想ネットワーク機能の状態とのマージに基づく。
【００６２】
好ましくは、状態のマージでは、ソース・ノードの仮想ネットワーク機能のスナップショットが実施され、宛先ノードの仮想ネットワーク機能のスナップショットが実施され、２つのスナップショットがマージされる。
【００６３】
さらに、好ましくは、ソース・ノードにおける仮想マシンの状態更新要素と宛先ノードにおける仮想マシンの状態更新要素とがマージされる。
【００６４】
好ましくは、仮想マシンの状態および／または状態更新要素のマージは、データプレーンによって、特に、データプレーン・スレッドによってマージされる。たとえば、データプレーン・スレッドは、状態（変化）を反映するそれぞれの表のエントリをマージし、テーブル・エントリは、低優先でマージされ、（より高い優先度を割り当てられた）データプレーンの他の作業負荷が利用可能である（処理されるべきである）場合、スレッドは中断される。したがって、好ましくは、宛先ノードの動作可能なデータプレーンは、中断されない。好ましい実施形態では、宛先ノードは、状態のスナップショットを受信する前に状態更新要素のうちの１つまたは複数を受信する。
【００６５】
特に、１つまたは複数の状態更新要素の受信と状態のスナップショットの受信とは、順序通りである必要がない。好ましくは、スナップショット転送と状態更新転送とは、（好ましくは２つのＴＣＰ接続を介して）同時に発生するが、状態更新は、バッファされ、その後にインストールされる。
【００６６】
好ましい実施形態では、ソース・ノードは、第１の物理ノードによって実装され、宛先ノードは、第２の物理ノードによって実装され、好ましくは、第２の物理ノードは、第１の物理ノードとは異なる。
【００６７】
さらなる好ましい実施形態では、仮想化なしのベアメタル・サーバは、第１の物理ノードによってソース・ノードを実装するために使用され、第２の物理ノードによって宛先ノードを実装するために使用される。］
【００６８】
好ましい実施形態では、仮想ネットワーク機能は、仮想ソース・インスタンスによってソース・ノードにおいて実装され、仮想宛先インスタンスによって宛先ノードにおいて実装される。
【００６９】
好ましい実施形態では、宛先ノードは、ソース・ノードから宛先ノードへの状態スナップショットの受信、状態更新要素の受信および仮想ネットワーク機能の移行のうちの１つまたは複数を確認するためにソース・ノードに１つまたは複数の肯定応答メッセージを送る。
【００７０】
好ましい実施形態では、状態更新要素は、ソース・ノードにおいてストリーム圧縮によって処理され、宛先ノードにおいてストリーム圧縮解除によって処理される。
【００７１】
好ましい実施形態では、状態更新要素は、ソース・ノードにおいてＴＣＰ／ＳＣＴＰ（伝送制御プロトコル（Transmission Control Protocol）／ストリーム制御伝送プロトコル（Stream Control Transmission Protocol））にフォーマットされ、宛先ノードにおいてＴＣＰ／ＳＣＴＰプロトコル内で受信される。
【００７２】
本発明の特徴および利点について、以下を参照しながらより詳細に説明する。
【図面の簡単な説明】
【００７３】
【図１】ソース・ノードから宛先ノードに仮想ネットワーク機能を移行させるための方法の要素およびステップの概略図を示す。
【発明を実施するための形態】
【００７４】
好ましい実施形態についての以下の詳細な説明は、例示のためにすぎず、本発明の範囲は、特許請求の範囲によって定義される。上記の概略的な説明においてなど、以下で詳細に説明する好ましい実施形態は、限定するものではなく、組み合わされてさらなる好ましい実施形態生じ得る。
【００７５】
図１に、ソース・ノード２から宛先ノード３にソース・ノード２によって実装される仮想ネットワーク機能（ＶＮＦ）１を移行させるための方法の要素およびステップの概観を示す。ソース・ノード２において、ソース・ノード２において実装される仮想ネットワーク機能１の状態のスナップショットが、好ましくはソース・ノード２によって行われる。ソース・ノード２における仮想ネットワーク機能１の状態は、状態メモリ４ａ中に記憶される。仮想ネットワーク機能１、たとえば、ファイアウォールは、ソース・ノード２に入ってきた１つまたは複数のデータ・フロー１０ａをソース・ノード２から出るデータ・フロー１０ｂに処理する１１。データ・フロー１０ａは、ソース・ノード２の仮想ネットワーク機能１によって処理される前に、ソース・ノード２のデータ・パケット・バッファ７ａ中に記憶され得る。状態スナップショットによって監視されるソース・ノード２における仮想ネットワーク機能１の状態は、ソース・ノード２によって実装される仮想ネットワーク機能１による、発信データ・フロー１０ｂへの着信データ・フロー１０ａのパケットの処理１１の時点を反映する。複数のそれぞれのデータ・パケットからなるデータ・フロー１０ａは、さらなるネットワーク要素、たとえば、クライアント（図示せず）からソース・ノード２によって受信され、別のさらなるネットワーク要素、たとえばサーバ（図示せず）に送られる。処理１１からスナップショットによって導出された状態は、ソース・ノード２における状態メモリ４ａ中に記憶される。ソース・ノード２はまた、宛先ノード３に状態スナップショット（言い換えると、スナップショットによって決定された状態）を送信し、宛先ノード３は、相応して、ソース・ノード２から状態スナップショットを受信する。宛先ノード３は、宛先ノード３における状態メモリ４ｂ中にソース・ノード２から受信した仮想ネットワーク機能１の状態を記憶する。ソース・ノード２における状態スナップショットの実行とソース・ノード２から宛先ノード３への状態スナップショットの送信とは、図に過負荷をかけないために図１に明示的に示していない。
【００７６】
好ましい実施形態では、ソース・ノード２は、仮想ネットワーク機能１にそれの（内部）状態を直列化させることによって状態スナップショットを作成し、状態への同時書込みが他のデータ構造領域にリダイレクトされ、したがって、スナップショットの作成が行われる間に状態はそれの元の形態のままである。好ましい実施形態では、部分的な移行が望まれる場合、状態の一部のみが、好ましくは、直列化すべき状態の一部を示すマスクを用いてこのように直列化される（マスクの例：「奇数／偶数のＩＰアドレスをもつフロー」）。
【００７７】
さらに、着信データ・フロー１０ａのパケットがソース・ノード２において処理される１１とき、この処理すること１１によって生じる状態変化が、たとえば、状態更新バイト・ベクトルである状態更新要素中で変換、特に、符号化される１７。好ましくは、状態変化はまた、ソース・ノード２における状態メモリ４ａ中に記憶された状態を変更する１６。好ましくは、状態更新要素、特に、状態更新バイト・ベクトルは、宛先ノード３に仮想ネットワークの状態の変化を送信するためにソース・ノード２のＶＮＦによって生成されたコンパクトなＶＮＦ固有のバイト表現を備えるデータ・ユニットである。
【００７８】
好ましくは、ソースのスナップショットの作成が開始した直後に、ソース・ノード２は、ソース・ノード２における仮想ネットワーク機能１から状態更新要素、特に、状態更新バイト・ベクトルを収集し始める。
【００７９】
好ましい実施形態では、ソース・ノード２は、宛先ノード３に状態更新要素、特に、状態更新バイト・ベクトルを送信する前に、ソース・ノード２の状態更新バッファ６ａ中にソース・ノード２における仮想ネットワーク機能１から収集された状態更新要素、特に、状態更新バイト・ベクトルを記憶する。ただし、その文脈の中で、別段明示的に示されていない限り、特徴「バッファされた状態更新要素またはバイト・ベクトル」が使用されるとき、特徴「バッファされた」は、宛先ノード３における状態更新バッファ６ｂ中にバッファすることを指すことに留意されたい（直下を参照）。
【００８０】
ソース・ノード２は、宛先ノード３に状態更新要素を送信し、宛先ノード３は、相応して、ソース・ノード２から状態更新要素を受信する９。好ましくは、状態更新要素は、ストリーム圧縮（たとえば、ＧＺＩＰ＝ＧＮＵ  ｚｉｐ、ＧＮＵ＝Ｇｎｕ’ｓ  ｎｏｔ  Ｕｎｉｘ（ＧｎｕはＵｎｉｘでない））によってソース・ノード２において処理され１４、ストリーム圧縮解除によって宛先ノード３において処理される１５。好ましくは、好ましくは状態スナップショットなどの状態更新要素は、ＴＣＰ／ＳＣＴＰプロトコルにしたがってソース・ノード２から宛先ノード３に送信される。
【００８１】
ソース・ノード２から宛先ノード３において受信された状態更新要素は、宛先ノード３の状態更新バッファ６ｂ中に宛先ノード３において記憶される。特に、仮想ネットワーク機能１の状態は、状態スナップショットに基づいて宛先ノード３において初期化され、状態更新バッファ６ｂにおいてバッファされた状態更新要素に基づいて更新される。したがって、好ましくは、仮想ネットワーク機能１が、スナップショットで宛先ノード３において初期化され、次いで、状態を更新するために使用されるまで、状態更新要素は、宛先ノード３においてバッファされる。
【００８２】
したがって、好ましくは、宛先ノード３によってソース・ノード２から状態スナップショットの形態で受信された仮想ネットワーク機能１の状態は、宛先ノード３における状態メモリ４ｂ中に記憶される。状態メモリ４ｂ中に記憶されたこの状態に基づいて、仮想ネットワーク機能１は、宛先ノード３において初期化される。次いで、宛先ノード３における仮想ネットワーク機能１の状態（状態メモリ４ｂ中に記憶されている状態）は、状態更新バッファ６ｂ中に記憶された状態更新要素によって更新される。
【００８３】
さらに、好ましい実施形態および好適な用語では、宛先ノード３における仮想ネットワーク機能１は、ソース・ノード２において行われた状態のスナップショットに基づいて初期化され、宛先ノード３によって実装される仮想ネットワーク機能１の状態が、ソース・ノード２から宛先ノード３によって受信された状態更新要素に基づいて十分に更新されるとすぐにインスタンス化される。
【００８４】
ソース・ノード２から受信した状態更新要素によって宛先ノード３において実装される仮想ネットワーク機能１の状態の更新は、状態の同期と呼ばれることがあり、言い換えれば、宛先ノード３によって実装されるべき仮想ネットワーク機能１の状態は、仮想ネットワーク機能の移行が完了した瞬間に同じ状態を有するためにソース・ノード２によって実装される仮想ネットワーク機能１の状態に同期され、これは、特に、移行の前にソース・ノード２における仮想ネットワーク機能１によって処理されるパケット・フローが、移行の後に宛先ノード３における仮想ネットワーク機能１によって処理されることを意味する。
【００８５】
好ましい実施形態では、宛先ノード２において初期化された仮想ネットワーク機能１の状態を更新するために使用されるバッファされた状態更新要素が、所定のしきい値以下に下がった後、宛先ノード３は、特に、コントローラ８にメッセージを送ることによってコントローラ８にシグナリングし８ａ、このメッセージは、「リダイレクト・メッセージ」と呼ばれることがある。このリダイレクト・メッセージによって、コントローラ８は、ソース・ノード２に向けられた（たとえば、上記のクライアントから来た）データ・フローを宛先ノード３に向かってリダイレクトさせられる（したがって、たとえば、クライアントからソース・ノード２に行くのではなく、クライアントから宛先ノード３に行く）。
【００８６】
さらに、好ましくは、コントローラ８は、ソース・ノード２において受信される、より詳細には、スナップショットが行われた後にソース・ノード２において受信されるデータ・パケット５の処理を停止するようにソース・ノード２にシグナリングする。したがって、データ・パケット５は、データ・フロー１０ａの特定の部分と見なされ得る。
【００８７】
さらに、好ましくは、コントローラ８は、宛先ノード３におけるデータ・トラフィックの処理を開始するように宛先ノード３にシグナリングする８ｂ。
【００８８】
好ましくは、ソース・ノード２は、コントローラ８によって、ソース・ノード２へのデータ経路への、特に、ソース・ノード２への最後のパケットへのドレイン・パケットの注入によってデータ・パケットの処理を停止するようにシグナリングされる。好ましくは、ドレイン・パケットの受信時に、ソース・ノード２は、特に、状態更新ストリームを閉じることによって更新が完了したことを宛先ノードにシグナリングする。好ましくは、（ソース・ノード２に向けられた最後のデータ・パケット５の次に来る）後続のデータ・パケットは、次に、宛先ノード３に向けられ、後続のデータ・パケットは、５＊によって参照される。
【００８９】
好ましくは、データ・パケット５は、データ・フロー１０ａの一部であり、データ・パケット５＊は、データ・フロー１０ａ＊の一部である。
【００９０】
好ましくは、データ・パケット５および５＊に関して説明したことは、より一般的に、それぞれ、データ・フロー１０ａおよび１０ａ＊に適用される。
【００９１】
好ましくは、上記で説明したように、ソース・ノード２にシグナリングすることは、ドレイン・パケットを用いて実装される。コントローラ８は、ソース・ノード８にドレイン・パケットを注入する。ドレイン・パケットは、ソース・ノード２に、宛先ノード３に状態更新要素を送信するのを停止させるパケットと定義される。好ましくは、ドレイン・パケットを受信すると、ソース・ノード２は、宛先ノード３への状態更新ストリームを閉じる。好ましくは、それによって、宛先ノード３は、状態更新の終了に関して通知される。
【００９２】
好ましい実施形態では、宛先ノード３における状態更新バッファ６ｂにおいてバッファされたすべての状態更新要素がインストールされた（更新のために使用された）後、仮想ネットワーク機能１は、宛先ノード３におけるデータプレーン上でパケットを受信し始め、好ましい実施形態では、現在進行中の、すなわち、ソース・ノード２から宛先ノード３への状態更新要素の小さいしきい値が依然としてあり得る。
【００９３】
上述のように、好ましい実施形態では、宛先ノード３において初期化された仮想ネットワーク機能１の状態を更新するために使用されるバッファされた状態更新要素が所定のしきい値以下に下がった後、宛先ノード３は、コントローラ８にリダイレクト・メッセージを送る（リダイレクト・メッセージの効果については、上記で説明した）。
【００９４】
したがって、好ましくは、リダイレクト・メッセージは、バッファされた状態更新要素が所定のしきい値を下回ることによってトリガされる。特に、バッファされた状態更新要素に関する所定のしきい値は、状態更新バッファを下回ることとして、好ましくは、「ｄ」個の状態更新要素を下回ることとして定義され、「ｄ」は、あらかじめ定義されたパラメータ、たとえば、１０、１００、１０００、１００００である。
【００９５】
好ましくは、バッファされた状態更新要素の数は、宛先ノード３における状態更新バッファ６ｂ中に記憶された状態更新要素の量によって決定され、所定のしきい値と比較される。好ましくは、バッファされた状態更新要素の数が、所定のしきい値、たとえば、１０、１００、１０００、１００００を下回る場合、宛先ノード３は、ソース・ノード２におけるデータ・パケット５の処理を停止し、追加または代替として、宛先ノード３に１つまたは複数の後続のデータ・パケットをリダイレクトするようにシグナリングし、および／または宛先ノード３は、コントローラ８にメッセージ、特に、リダイレクト・メッセージを送る。
【００９６】
好ましい実施形態では、バッファされた更新要素が状態を更新するために使用されるとすぐに、バッファされた更新要素がバッファの中から取り出され得ることに留意されたい。この場合、「バッファされた」は、状態更新要素が使用される前にバッファされることを意味する。他の実施形態では、バッファされた状態更新要素は、更新のために使用された後にバッファ中に残るが、更新のために使用されるべき特定の状態更新要素を示すポインタが、増分され、したがって、前記特定の状態更新要素が更新のために使用されるとすぐに、次の状態更新要素に示す。
【００９７】
好ましい実施形態では、コントローラ８が、前にソース・ノード２に送られた（データ・パケット５を備える）データ・フロー１０ａを宛先ノード３に向かってリダイレクトするとすぐに（データ・フローは、次に、データ・フロー１０ａではなく１０ａ＊と決定される）、宛先ノード３は、データ・フロー１０ａ＊のデータ・パケット５＊を受信する。好ましくは、データ・パケット５＊の第１のデータ・パケットは、データ・パケット５の最後のデータ・パケットに続く第１のデータ・パケットである。したがって、パケット５＊は、「後続の」データ・パケットと呼ばれることがある。
【００９８】
好ましい実施形態では、宛先ノード３は、データ・パケット５＊を受信し、宛先ノード３におけるデータ・パケット・バッファ７ｂ中にデータ・パケット５＊を記憶する。
【００９９】
好ましい実施形態では、宛先ノード３が、宛先ノード３における仮想ネットワーク機能１の状態の更新のためにすべてのバッファされた状態更新要素を使用するとすぐに、さらに、または、代替として、宛先ノード３が、これ以上ソース・ノード２からいかなる状態更新要素も受信しないとすぐに、宛先ノード３、より詳細には、宛先ノード３の仮想ネットワーク機能１は、記憶されたデータ・パケット５＊を処理する。
【０１００】
好ましくは、宛先ノード３は、ソース・ノード２からの状態更新要素ストリームが、終了する（もはやこれ以上ソース・ノード２からの状態更新要素が来ない）ことを意味する排出することによって記憶されたデータ・パケット５＊を処理するように通知される。
【０１０１】
好ましい実施形態では、１つまたは複数の状態更新要素が、ソース・ノード２から宛先ノード３に送信されることがまだ予期されておらず、特に、ソース・ノード２から宛先ノード３に実際に依然として送信されているが、宛先ノード３は、宛先ノード３におけるデータ・パケット・バッファ７ｂ中に記憶されたデータ・パケット５＊のうちの１つまたは複数を処理する。これらの１つまたは複数のデータ・パケット５＊を処理するという決定は、データ・パケット５＊が属するＴＣＰフローであるデータ・フロー１０ａ＊のそれぞれのシーケンス番号とのこれらのデータ・パケット５＊のシーケンス番号の比較に基づく。
【０１０２】
好ましくは、宛先ノード３によって受信され、宛先ノード３におけるデータ・パケット・バッファ７ｂ中に記憶されたるデータ・パケット５＊ごとに、データ・パケット５＊が、正常プロセスを害することなしに処理され得るのかどうかが決定される。
【０１０３】
より詳細に、好ましい実施形態では、ソース・ノード２から宛先ノード３への状態更新要素ストリームが完了する前に、すなわち、ソース・ノード２が、依然として、宛先ノード３に状態更新要素を送信している間に、データ・パケット５＊が受信され、宛先ノード３におけるデータ・パケット・バッファ７ｂ中に記憶される。宛先ノード３のデータ・パケット・バッファ７ｂ中に入るデータ・パケット５＊ごとに、宛先ノード３における仮想ネットワーク機能１は、正常プロセスを害することなしにデータ・パケット５＊が処理され得るのかどうかを決定する。正常プロセスを害することなしにパケット５＊が処理され得ると仮想ネットワーク機能１が決定する場合、パケット５＊は、状態更新要素ストリームが閉じるのを待つことなしに、すなわち、最後の状態更新要素が送信されるのを待つことなしに処理される。
【０１０４】
好ましくは、正常プロセスを害することなしに着信データ・パケット５＊が処理され得るのかどうかの宛先ノード３による決定は、データ・パケット５＊が属するデータ・フロー１０＊のＴＣＰシーケンス番号によって実装される。たとえば、ＴＣＰストリーム中で、宛先ノード３の仮想ネットワーク機能１は、参照される特定のフローの最後のシーケンス番号を記録（記憶）し、入ってくるデータ・パケットのシーケンス番号が予期された次のシーケンス番号である場合、データ・パケット５＊が正常プロセスを害することなしに処理され得るのかどうかの質問に対して「真」を戻す。後者の場合、データ・パケット５＊は、状態更新要素ストリームが閉じるのを待つことなしに処理される。したがって、宛先ノード３におけるデータ・パケットの処理の遅延が減少するとともに、ソース・ノード２におけるデータプレーンが排出される。
【０１０５】
好ましい実施形態では、移行は、完全な移行である。この場合、インスタンス化の後、すなわち、宛先ノード３における仮想ネットワーク機能１の初期化および（バッファされた状態更新要素を使用した）十分な更新の後、ソース・ノード２による移行の前に処理された１１データ・パケット・トラフィック１０ａの全体が、宛先ノード３によって処理される１２ために宛先ノード３にリダイレクトされ、データ・トラフィックは、次に、１０ａ＊と呼ばれる。参照符号１０ａ、１０ｂは、移行の前の着信および発信データ・トラフィックを示し、参照符号１０ａ＊、１０ｂ＊は、仮想ネットワーク機能１の移行の後の着信および発信データ・トラフィックを示す。
【０１０６】
好ましい実施形態では、移行は、部分的な移行である。この場合、宛先ノード３へのソース・ノード２による移行の前に処理された１１データ・パケット・トラフィック１０ａ、１０ｂの一部は、宛先ノード３によって処理される１２データ・トラフィック１０ａ＊、１０ｂ＊になると決定される。
【０１０７】
好ましくは、好ましい実施形態では、状態更新バイト・ベクトルが状態更新要素として使用される場合、状態更新要素に関して説明したことが同様に適用される。状態更新バイト・ベクトルは、状態更新ベクトルと呼ばれることもある。したがって、好ましくは、本実施形態について、特徴「状態更新要素」に関して説明したが、本実施形態は、状態更新要素を排他的に意味するか、または状態更新バイト・ベクトルを排他的に意味する文脈から想到可能でない限り、特徴「状態更新バイト・ベクトル」に関して同様に実装され得る。
【０１０８】
好ましくは、状態更新要素、特に、状態更新バイト・ベクトルは、コンパクトなＶＮＦ固有のバイト表現を備えるデータ・ユニットである。好ましくは、状態更新要素、特に、状態更新バイト・ベクトルは、宛先ノード３に仮想ネットワークの状態の変化を送信するためにソース・ノード２のＶＮＦによって生成される。
【０１０９】
好ましい実施形態では、状態更新バイト・ベクトルは、パケット・ヘッダ構造を有しないコンパクトなＶＮＦ固有のバイト表現である。
【０１１０】
さらに、さらなる好ましい実施形態では、状態更新要素、特に、状態更新バイト・ベクトルは、パケット・ヘッダ構造とパケット・ペイロードとを有する可能性がある。
【０１１１】
好ましい実施形態では、仮想ネットワーク機能１は、ネットワーク・アドレス変換である。状態変化を符号化する状態更新要素は、セッションの開始時とセッションの終了時とに表の関連付けの変化を符号化し得る（新たに確立されたセッションごとに約２０〜３０バイトのみ）。
【０１１２】
好ましい実施形態では、仮想ネットワーク機能１は、（シグネチャ・ベースの）侵入検出である。この場合、状態更新要素は、仮想ネットワーク機能１に入る疑わしいパケットのみ、特に、後続のパケットを分析するときに関係し得るパケットのみに関する情報を符号化する。
【０１１３】
好ましい実施形態では、より正確には、通常、宛先ノード３は、状態のスナップショットを受信する前に状態更新要素のうちの１つまたは複数を受信する。これは、状態のスナップショットが、状態更新要素としてより多くの情報を含んでおり、したがって、より多くの帯域幅を必要とし、したがって、より長い送信時間を必要とするからである。したがって、スナップショットがソース・ノード２において行われた後、宛先ノード３へのスナップショットの送信が開始され得るが、スナップショットが宛先ノード３に完全に送信されるまで、たとえば、１秒かかり得る。この時間中に、スナップショットが行われた後、後続のデータ・パケット５が、ソース・ノード２において受信されて、状態の変化を生じる。上記で説明したように、そのようなデータ・パケットによって生じたソース・ノード２の仮想ネットワーク機能１の状態の変化は、状態更新要素に符号化され１７、したがって、複数のデータ・パケット５によって生じたそれぞれの状態変化を符号化する１７複数の状態更新要素に符号化される。説明したように、更新状態要素は、宛先ノード３によって実装される仮想ネットワーク機能１を更新するために宛先ノード３に送信される。状態更新要素の送信は、たとえば、１ミリ秒しか、さらには、１マイクロ秒しかかからないことがある。スナップショットが宛先ノード３によって受信されていないので、仮想ネットワーク機能１は、宛先ノード３においてまだ初期化されておらず、したがって、状態更新要素によってまだ更新されていない。したがって、ソース・ノード２から受信したスナップショットに基づいて宛先ノード３において仮想ネットワーク機能１が初期化されるまで、状態更新要素は、宛先ノード３における状態更新バッファ６ｂ中にバッファされ、バッファされた状態更新要素は、宛先ノード３において初期化された仮想ネットワーク機能１を更新するために使用され得る。
【０１１４】
好ましい実施形態では、ソース・ノード２において処理すること１１は、複数のプロセス（たとえば、６００００個のプロセス）を備え、したがって、状態スナップショットは、複数のプロセスの状態のスナップショットを備える。この場合、状態スナップショット、より正確には、複数の状態のスナップショット、または言い換えれば、複数の状態スナップショットは、より多くの情報を備え、したがって、宛先ノード３において受信された状態更新要素をバッファする必要性を強調するデータは、宛先ノード３に送信するのにより長い時間がかかり得る。
【０１１５】
上記で詳細に説明したように、ソース・ノード２から宛先ノード３に仮想ネットワーク機能１を移行させるための方法を実装するために、本発明は、上述のソース・ノード２と上述の宛先ノード３とを実装する。
【０１１６】
ソース・ノード２は、宛先ノード３にソース・ノード２によって実装される仮想ネットワーク機能１の状態のスナップショットを送信することと、スナップショット以来ソース・ノード２によって受信された１つまたは複数のデータ・パケット５の処理によって生じたソース・ノード２によって実装される仮想ネットワーク機能１の状態の変化を符号化する１７状態更新要素を送信することとを行うように適応される。
【０１１７】
宛先ノード３は、ソース・ノード２において実装される仮想ネットワーク機能１の状態のスナップショットを受信することと、スナップショット以来ソース・ノード２によって受信された１つまたは複数のデータ・パケット５の処理によって生じたソース・ノード２によって実装される仮想ネットワーク機能１の状態の変化を符号化する１７状態更新要素を受信する９こととを行うように適応される。
【０１１８】
好ましい実施形態では、ソース・ノード２は、第１の物理ノード（たとえば、コンピュータ、サーバ）によって実装され、宛先ノード３は、第２の物理ノード（たとえば、コンピュータ、サーバ）によって実装される。好ましい実施形態では、第２の物理ノードは、第１の物理ノードと同一である。代替的に（通常）、第２の物理ノードは第１の物理ノードとは異なる。
【０１１９】
好ましい実施形態では、仮想ネットワーク機能１は、仮想ソース・インスタンスによってソース・ノード２において実装され、仮想宛先インスタンスによって宛先ノード３において実装される。
【０１２０】
本発明は、さらに、上記で説明した方法のステップ、特に、移行の同期のためのシグナリングを実装するコントローラ８を定義する。
【０１２１】
特に、コントローラ８は、ソース・ノード２および／または宛先ノード３に同期シグナリングを送るように適応され得る。仮想ネットワーク機能１が、状態スナップショットに基づいて宛先ノード３において開始され、（宛先ノード３におけるバッファされた状態更新要素を使用することによって）状態更新要素に基づいて十分に更新されるとすぐに、コントローラは、宛先ノード３から「リダイレクト・メッセージ」と呼ばれることがあるメッセージを受信する。このメッセージの受信により、コントローラ８は、ソース・ノード２に向けられたデータ・トラフィック１０ａを宛先ノード３に向かってリダイレクトし（データ・トラフィックは、次に、１０ａ＊と参照される）、さらに好ましくは、コントローラ８は、データ・トラフィック１０ａ、１０ｂの処理を停止するようにソース・ノード２にシグナリングし８ａ、同時に、宛先ノード３による、より正確には、ソース・ノード２から宛先ノード３に移行される仮想ネットワーク機能１によるデータ・トラフィック１０ａ＊、１０ｂ＊の処理を開始するように宛先ノード３にシグナリングする８ｂ。このシグナリングによって、ソース・ノード２から宛先ノード３への仮想ネットワーク機能１の移行が、好ましくは同期されて、処理すべきデータ・パケットの損失が回避され、好ましくは、パケットの順番乱れが回避され、好ましくは、ジッタが低減される。
【０１２２】
好ましい実施形態では、宛先ノード３は、状態スナップショットの受信を確認すること、および／または状態更新要素の受信を確認すること、および／またはソース・ノード２から宛先ノード３への仮想ネットワーク機能１の移行を確認することを行うためにソース・ノード２に１つまたは複数の肯定応答メッセージ１３を送る。コントローラ８がそれぞれの受信に関する知識を有する場合、これらの肯定応答メッセージ１３のうちの１つまたは複数は、同じくまたは代替的に、コントローラ８によって送られ得る。さらに、これらの肯定応答メッセージ１３のうちの１つまたは複数はまた、宛先ノード３からコントローラ８を介してソース・ノード２に送られ得、すなわち、コントローラ８は、ソース・ノード２に宛先ノード３によって送られたそれぞれの肯定応答メッセージ１３を転送する。
【０１２３】
説明する方法のステップのうちの１つまたは複数は、コンピュータ上で実行されたとき、説明した方法を実行するように適応されたコンピュータ・プログラム製品によって実装され得、通常は、そうされることになる。また、２つ以上のコンピュータが使用され得る。
【０１２４】
特に、コントローラ８は、コンピュータとして実装され得る。より詳細に、コントローラ８は、単一のユニットとして、スタンドアロン・デバイスとして、またはデータベース内に実装されるか、コンピュータ中におよび／またはコンピュータ・ネットワーク内に組み込まれ得る。コントローラ８は、ハードウェア、ソフトウェアおよび／または適切なソフトウェアに関連するソフトウェアを実行することが可能なハードウェアの使用を通して実装され得る。
【０１２５】
より詳細には、コントローラ８は、ＡＳＩＣ（＝特定用途向け集積回路（Application Specific Integrated Circuit））など、あるいはＦＰＧＡ（＝フィールド・プログラマブル・ゲート・アレイ（Field Programmable Gate Array））、マルチチップ式モジュール、単一のカード、またはマルチ・カード回路パックなどの単一の集積回路としての可能な実装形態を含む回路ベースのプロセスから成るか、それによって実装され得る。コントローラ８の機能は、ソフトウェア・プログラム中の処理ブロックとして実装され得る。そのようなソフトウェアは、単一デバイスとして実装されるかまたはコンピュータ・ネットワーク中に組み込まれるデジタル信号プロセッサ、マイクロコントローラ、または汎用コンピュータ中で採用され得る。
【０１２６】
コントローラ８は、磁気記録媒体、光記録媒体、固体メモリ、フロッピー・ディスケット、ＣＤ−ＲＯＭ、ハード・ドライブ、または任意の他の機械可読記憶媒体などの有形媒体中に具現化されるプログラム・コードを備え得、プログラム・コードが、コントローラ８にロードされ、それの中で実行されると、コントローラ８は、本発明を実施するために使用される装置になる。
【０１２７】
好ましくは、ソース・ノード２および／または宛先ノード３はまた、それぞれ、ソース・ノード２および宛先ノード３のステップを実装するためのコントローラを含んでおり、そのようなコントローラは、同様に、上記で説明したコントローラ８として実装され得る。好ましい実施形態では、別個のデバイスとして説明したコントローラ８は、１つまたはソース・ノード２または宛先ノード３中に、好ましくは、宛先ノード３中に組み込まれ得る。さらに、宛先ノード３は、コントローラ８によって実装されるものとして上記で説明したステップのうちの１つまたは複数を実装し得る。
【０１２８】
好ましい実施形態では、ソース・ノード２は、状態更新要素が宛先ノード３にそれを介して送られるインターフェース１８ａを実装する。インターフェース１８ａは、汎用のものであるか、またはＶＮＦ専用のものであり得る。好ましくは、インターフェース１８ａは、特に、前記インターフェース１８ａを介して状態更新要素を送ることによって、それらの状態を移行させるための特定のＶＮＦ実装形態に関して構成される。
【０１２９】
同様に、好ましい実施形態では、宛先ノード３は、ソース・ノード２によって送られた状態更新要素を受信するためにインターフェース１８ｂを実装する。インターフェース１８ｂは、汎用のものであるか、またはＶＮＦ専用のものであり得る。好ましくは、インターフェース１８ｂは、特に、前記インターフェース１８ｂを介して状態更新要素を受信することによって、それらの状態を移行させるための特定のＶＮＦ実装形態に関して構成される。
【０１３０】
本発明は、好ましくは、より良いパフォーマンス／リソース利用のために、たとえば、スケール・アウト／イン・イベントによってトリガされる完全なまたは部分的なＶＮＦ移行の重要な時の間に（部分的な移行）、あるいは、好ましくは、物理インスタンスと呼ばれる別の物理ノードに機能を移動するときに（完全な移行）、（好ましくは、ソース・インスタンスと呼ばれる）ソース・ノードにおける仮想ネットワーク機能の状態と（好ましくは、宛先インスタンスと呼ばれる）宛先ノードにおける仮想ネットワーク機能の状態とを同期させる新しい機構を提案する。本発明は、ＶＮＦに汎用インターフェースを与えるプラットフォームと見なされることがあり得、これにより、特定のＶＮＦが、パケット全体の複製を送るのではなく、ＶＮＦ中のパケットを処理することによって生じた状態変化を符号化する状態更新要素（好ましくは、デルタ状態要素とも呼ばれる）を作成することが可能になる。たとえば、ファイアウォール中のパケット・カウンタのデルタ状態は、宛先ノードにフル・パケットの複製を送るのではなく、単に１の増分を符号化する。この機構は、Ｐ２Ｐ−ＯｐｅｎＮＦによって提案されたＶＮＦ状態同期機構に対する実質的な改善であり、データセンタ間のネットワークなどの帯域幅が制限されたネットワークにわたるＶＮＦ移行／複製を可能にする。
【０１３１】
好ましくは、多くのネットワーク機能について、送信される必要があるデータは、送られた総パケットのわずかな部分にすぎない。アーキテクチャをＮＦ（ネットワーク機能）とは無関係に保つために、あらゆるネットワーク機能は、（着信パケットによってトリガされた可能性がある）あらゆる関係する状態変化時にそれが（より小さい）状態更新要素／ベクトルを出力することを可能にし、着信状態更新要素／ベクトルが、それにしたがって宛先ネットワーク機能の状態を変化することを受け入れるインターフェースを実装する。
【０１３２】
本発明は、ＶＮＦの移行／複製／スケール・アウト／スケール・イン中に交換される情報の実質的な低減の利点を提供する。この低減は、サービス・プロバイダまたはエッジ・クラウド中でのＶＮＦの動作のための成功の鍵である。本発明では、クラウド・プロバイダは、異なるデータ・センタ・サイトにわたってそれのＶＮＦを含むサービスを容易に管理することができる。ＶＮＦは、顧客要求を果たすためにサービスをスケーリングまたは移動するために必要に応じて新しいサイトに完全にまたは部分的に移行／複製され得る。
【０１３３】
状態移行手順の同期段階中にソース・ノードと宛先ノード（インスタンス）との間のリンクに対する有意なトラフィック低減のために、本発明によって移行の継続時間の有意な低減が達成される。効率のこの実質的な増加により、データ・センタにわたる、およびデータ・センタと顧客構内とにわたるＶＮＦのシームレスな移行／複製が可能になる。この技術は、クラウド・オペレータによってシームレスに管理され得る分散されたエッジ・クラウドのビジョンの基礎である。
【図１】
2019512974.tif 000003
【国際調査報告】
2019512974.tif 000004
2019512974.tif 000005
2019512974.tif 000006