(57)【要約】【課題】仮想化されたネットワークのサービス機能を転送される通信フローの各パケットの順序を適正に維持することを目的とする。【解決手段】パケット中継方法は、複数のパケットの転送経路に含まれる仮想化されたネットワークの複数のサービス機能のうちの第１のサービス機能が前記転送経路から除外される際、前記複数のパケットにおける前後のパケットの時間間隔と前記第１のサービス機能による処理の遅延時間とに基づいて、前記複数のパケットの各パケットのそれぞれについて、前記第１のサービス機能に転送するか否かを制御する。【選択図】図１７
2017135449.tif 000002
【特許請求の範囲】
【請求項１】
複数のパケットの転送経路に含まれる仮想化されたネットワークの複数のサービス機能のうちの第１のサービス機能が前記転送経路から除外される際、前記複数のパケットにおける前後のパケットの時間間隔と前記第１のサービス機能による処理の遅延時間とに基づいて、前記複数のパケットの各パケットのそれぞれについて、前記第１のサービス機能に転送するか否かを制御する、
ことを特徴とするパケット中継方法。
【請求項２】
前記前後のパケットの時間間隔が前記遅延時間以下の場合、受信したパケットを前記第１のサービス機能に転送し、前記前後のパケットの時間間隔が前記遅延時間より長い場合、受信したパケットが示す前記第１のサービス機能の次のサービス機能である第２のサービス機能に前記受信したパケットを転送する、
ことを特徴とする請求項１記載のパケット中継方法。
【請求項３】
前記第１のサービス機能を実行する情報処理装置は、前記第１のサービス機能に転送するか否かを制御する通信制御装置から受信したパケットに対して行われる前記第１のサービス機能による前記遅延時間を計測し、
計測した前記遅延時間を前記通信制御装置に通知する、
ことを特徴とする請求項２記載のパケット中継方法。
【請求項４】
前記パケットは、経由する前記複数のサービス機能の数の情報を含み、
前記パケットが前記第１のサービス機能により処理された場合、および該パケットが該第１のサービス機能に転送されない場合、前記経由する複数のサービス機能の数がデクリメントされる、
ことを特徴とする請求項１乃至３のうち何れか１項に記載のパケット中継方法。
【請求項５】
前記情報処理装置は、
受信したパケットの次の転送先のサービス機能による前記遅延時間を取得し、
取得された前記遅延時間より長くなるように、前記前後のパケットの時間間隔を調整する、
ことを特徴とする請求項３記載のパケット中継方法。
【請求項６】
前記情報処理装置は、前記時間間隔が調整された後のパケットが、前記転送経路から除外された前記第１のサービス機能に転送されるように、該パケットの宛先を変更する、
ことを特徴とする請求項５記載のパケット中継方法。
【請求項７】
コンピュータに、
複数のパケットの転送経路に含まれる仮想化されたネットワークの複数のサービス機能のうちの第１のサービス機能が前記転送経路から除外される際、前記複数のパケットにおける前後のパケットの時間間隔と前記第１のサービス機能による処理の遅延時間とに基づいて、前記複数のパケットの各パケットのそれぞれについて、前記第１のサービス機能に転送するか否かを制御する、
処理を実行させることを特徴とするパケット中継プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、パケット中継方法およびパケット中継プログラムに関する。
【背景技術】
【０００２】
従来から、ルータやゲートウェイ等の通信機器には専用ハードウェアが用いられている。近年では、各種の通信機器のネットワークサービスに関する機能（以下、ネットワークのサービス機能）を汎用サーバ上のソフトウェアとして仮想化させる手法(Network Functions Virtualization(NFV))が実用化されている。
【０００３】
関連する技術として、クラウドコントローラが、Virtual Machine(VM）を当該ＶＭへの通信セッション数の最も多い拠点へマイグレーションさせる技術が提案されている（例えば、特許文献１を参照）。
【０００４】
また、通信機能と通信セッションを確立するために複数の経路に向けて転送されるパケットの転送先を、複数の仮想マシンから選択する手段と、パケットを選択された仮想マシンに転送する手段とを含む技術が提案されている（例えば、特許文献２を参照）。
【０００５】
また、広域ネットワーク（WAN）とＮＷ機能クラウドを別個のネットワークとして管理し、かつ双方のネットワーク制御を連携させる技術が提案されている（例えば、特許文献３を参照）。
【０００６】
また、フロー情報データベースに蓄積されたフロー情報を参照して、転送装置のポートでパケットが送信された時刻と当該パケットに対する応答パケットが受信された時刻との差分を計算する。これにより、ネットワーク遅延を測定する技術が提案されている（例えば、特許文献４を参照）。
【先行技術文献】
【特許文献】
【０００７】
【特許文献１】特開２０１５−４１１９８号公報
【特許文献２】国際公開第２０１４−２０８５３８号
【特許文献３】特開２０１５−４３５２８号公報
【特許文献４】特開２０１３−２４００１７号公報
【発明の概要】
【発明が解決しようとする課題】
【０００８】
複数のパケットを含む通信フローが仮想化されたネットワークの複数のサービス機能（Virtual Network Function(VNF)）を経由する場合、該通信フローに含まれるパケットは、各ＶＮＦのサービス機能により所定の処理がされる。通信フローの転送経路は、動的に変更されることがある。
【０００９】
通信フローのうち一部のパケットがＶＮＦにより処理されている間に、該ＶＮＦが転送経路から除外される変更がされると、通信フローに含まれる各パケットの順序が逆転し、該順序が適正でなくなることがある。
【００１０】
１つの側面として、本発明は、仮想化されたネットワークのサービス機能を転送される通信フローの各パケットの順序を適正に維持することを目的とする。
【課題を解決するための手段】
【００１１】
１つの態様では、パケット中継方法は、複数のパケットの転送経路に含まれる仮想化されたネットワークの複数のサービス機能のうちの第１のサービス機能が前記転送経路から除外される際、前記複数のパケットにおける前後のパケットの時間間隔と前記サービス機能による処理の遅延時間とに基づいて、前記複数のパケットの各パケットのそれぞれについて、前記第１のサービス機能に転送するか否かを制御する。
【発明の効果】
【００１２】
１つの側面によれば、仮想化されたネットワークのサービス機能を転送される通信フローの各パケットの順序を適正に維持することを目的とする。
【図面の簡単な説明】
【００１３】
【図１】システムの全体構成の一例を示す図である。
【図２】スイッチの一例を示す機能ブロック図である。
【図３】サーバの一例を示す機能ブロック図である。
【図４】ネットワークコントローラの一例を示す機能ブロック図である。
【図５】パケット順序が逆転するサービスチェーンの張替えの一例を示す図である。
【図６】パケット順序が逆転するサービスチェーンの張替え処理の一例を示すシーケンスチャートである。
【図７】実施形態のサービスチェーンの張替えの一例を示す図（その１）である。
【図８】実施形態のサービスチェーンの張替え処理の一例を示すシーケンスチャートである。
【図９】実施形態のサービスチェーンの張替えの一例を示す図（その２）である。
【図１０】サービスパスヘッダの一例を示す図である。
【図１１】張替えテーブルの一例を示す図である。
【図１２】スイッチに送信される制御情報の一例を示す図である。
【図１３】パケット中継制御部が行う処理の指標の一例を示す図である。
【図１４】コントローラテーブルの一例を示す図である。
【図１５】実施形態の処理の一例を示すフローチャート（その１）である。
【図１６】実施形態の処理の一例を示すフローチャート（その２）である。
【図１７】実施形態の処理の一例を示すフローチャート（その３）である。
【図１８】実施形態の処理の一例を示すフローチャート（その４）である。
【図１９】応用例１のサービスチェーンの張替えの一例を示す図である。
【図２０】応用例１の遅延情報テーブルの一例を示す図である。
【図２１】応用例１の処理の一例を示すフローチャート（その１）である。
【図２２】応用例１の処理の一例を示すフローチャート（その２）である。
【図２３】応用例１の処理の一例を示すフローチャート（その３）である。
【図２４】応用例２のサービスチェーンの張替えの一例を示す図である。
【図２５】応用例２の遅延情報テーブルの一例を示す図である。
【図２６】応用例２の処理の一例を示すフローチャート（その１）である。
【図２７】応用例２の処理の一例を示すフローチャート（その２）である。
【図２８】応用例３の張替えテーブルの一例を示す図である。
【図２９】スイッチのハードウェア構成の一例を示す図である。
【図３０】サーバのハードウェア構成の一例を示す図である。
【発明を実施するための形態】
【００１４】
＜実施形態のシステムの全体構成の一例＞
以下、図面を参照して、実施形態について説明する。図１は、実施形態のシステム１の全体構成の一例を示す。システム１において、ネットワークコントローラ（図１では、ＮＷコントローラと表記）２に、複数のスイッチ３Ａ、３Ｂ、３Ｃ・・・（以下、総称してスイッチ３と称することがある）が接続される。
【００１５】
また、複数のスイッチ４Ａ、４Ｂ、４Ｃ・・・（以下、総称してスイッチ４と称することがある）が、それぞれ各スイッチ３に接続される。
【００１６】
各スイッチ３は、例えば、スパインスイッチ(Spine Switch)と称される。各スイッチ４は、例えば、リーフスイッチ(Leaf Switch)と称される。各スイッチ３と各スイッチ４とを総称して、スイッチＳＷと称する。
【００１７】
スイッチＳＷは、スパインスイッチとリーフスイッチとを含むスイッチには限定されない。各スイッチ４には、それぞれ１または複数のサーバ５が接続される。図１は、１つのスイッチ４に２つのサーバ５が接続される例を示す。スイッチＳＷは、通信制御装置またはコンピュータの一例である。
【００１８】
サーバ５は、情報処理装置またはコンピュータの一例であり、サーバ５上でソフトウェアによりネットワークのサービス機能が実行される。これにより、ネットワークのサービス機能（以下、単にサービス機能と称する）は、サーバ５上で仮想化される。
【００１９】
例えば、サーバ５は汎用サーバであってもよい。サービス機能としては、例えば、ファイアーウォールやルータ、Deep Packet Inspection(DPI)、WAN Acceleration、サービス品質モニタ等であってもよい。
【００２０】
実施形態では、複数のパケットを含む通信フローが、各サーバ５を経由し、各サーバ５で仮想化されたサービス機能（ＶＮＦ）の処理を受けるものとする。通信フローは、順序が規定された複数のパケットを含む。
【００２１】
所定の転送経路で通信フローを複数のＶＮＦに転送する方式は、サービスチェーニングと称されることがある。以下、通信フローの転送経路をサービスチェーン、通信フローの転送経路の変更をサービスチェーンの張替えと称する。
【００２２】
＜スイッチの一例＞
次に、図２の例を参照して、スイッチＳＷの一例について説明する。該スイッチＳＷは、サーバ５に接続される。スイッチＳＷは、スイッチ制御部１１と時刻情報付与部１２とパケット間隔検出部１３と第１ヘッダ更新部１４とパケット受信部１５とパケット中継制御部１６とパケット送信部１７とスイッチ記憶部１８とを含む。
【００２３】
スイッチ制御部１１は、スイッチＳＷにおける各種の制御を行う。時刻情報付与部１２は、通信フローに含まれる各パケットに時刻情報（タイムスタンプ）を付与する。例えば、パケット受信部１５がパケットを受信した際に、時刻情報付与部１２は、受信したパケットに対して、時刻情報を付与する。
【００２４】
パケット間隔検出部１３は、パケット受信部１５が受信した１つ前のパケットの時刻と次のパケットの時刻との差分に基づいて、通信フローに含まれる前後のパケットの時間間隔（以下、パケット間隔と称する）を検出する。
【００２５】
第１ヘッダ更新部１４は、受信したパケットのヘッダを更新する（書き換える）。これにより、受信したパケットの宛先が変更される。パケット受信部１５は、通信フローに含まれる各パケットを、入力ポートから受信する。
【００２６】
パケット中継制御部１６は、所定の条件に基づいて、パケットの送信先（出力ポート）を決定する。パケット送信部１７は、パケット中継制御部１６が決定した出力ポートにパケットを送信する。
【００２７】
スイッチ記憶部１８は、各種の情報を記憶する。例えば、スイッチ記憶部１８は、パケットの送信先の出力ポートを規定する（Forwarding Database(FDB)）を記憶してもよい。例えば、ＦＤＢは、Media Access Control(MAC)アドレスとポート番号との対応関係を示すデータベースであってもよい。
【００２８】
＜サーバの一例＞
次に、図３の例を参照して、サーバ５の一例について説明する。図３以降の例に示されるＳＦＦは「Service Function Forwarder」の略称である。
【００２９】
サーバ５は、ＶＮＦ部２１Ａ、２１Ｂと、ＳＦＦ部２２とサーバ制御部２３と第２ヘッダ更新部２４と遅延監視部２５と遅延情報通知部２６と間隔調整部２７とサーバ記憶部２８とを含む。
【００３０】
ＶＮＦ部２１Ａ、２１Ｂは上述したＶＮＦであり、仮想ネットワークサービス機能とも称される。図３において、サーバ５はＶＮＦ部２１Ａと２１Ｂとを含む例を示すが、サーバ５に含まれるＶＮＦ部の数は１つであってもよいし、３つ以上であってもよい。以下、ＶＮＦ部２１Ａ、２１Ｂを、ＶＮＦ部２１と総称することがある。
【００３１】
ＳＦＦ部２２は、サービス機能中継部とも称される。ＳＦＦ部２２は、パケットをＶＮＦ部２１に出力（中継）する。また、ＳＦＦ部２２は、ＶＮＦ部２１からパケットを入力する。サーバ制御部２３は、サーバ５の各種の制御を行う。
【００３２】
第２ヘッダ更新部２４は、パケットのヘッダを更新する（書き換える）。遅延監視部２５は、ＳＦＦ部２２がＶＮＦ部２１にパケットを出力してから、該パケットをＳＦＦ部２２がＶＮＦ部２１から入力されるまでの時間を遅延時間として監視する。
【００３３】
ＳＦＦ部２２から出力されたパケットは、ＶＮＦ部２１によりサービス機能の処理を受ける。そして、ＳＦＦ部２２は、該パケットをＶＮＦ部２１から入力する。従って、遅延時間は、ＶＮＦ部２１によるサービス機能の処理の実行時間を示す。遅延時間は、パケット遅延時間とも称される。
【００３４】
遅延情報通知部２６は、遅延監視部２５から遅延時間を取得し、該遅延時間を含む制御情報をスイッチＳＷに送信する。制御情報には、例えば、Bridge Protocol Data Unit(BPDU)が適用されてもよい。
【００３５】
間隔調整部２７は、通信フローに含まれる各パケットのうち何れかのパケットをバッファリングすることにより、バッファリングされたパケットと１つ前のパケットとのパケット間隔を調整する。
【００３６】
サーバ記憶部２８は、各種の情報を記憶する。バッファ部２９は、サーバ５が受信したパケットを一時的に記憶する（バッファリングする）。
【００３７】
＜ネットワークコントローラの一例＞
次に、図４の例を参照して、ネットワークコントローラ２の一例について説明する。ネットワークコントローラ２は、コントローラ制御部３１と入力受け付け部３２とコントローラ通信部３３とコントローラ記憶部３４とを含む。
【００３８】
コントローラ制御部３１は、各通信フローのサービスチェーンに関する制御を行う。入力受け付け部３２は、ネットワークコントローラ２を操作する操作者が適宜の入力装置（例えば、キーボードやマウス等）を用いた入力操作を受け付ける。
【００３９】
コントローラ通信部３３は、各スイッチＳＷおよび各サーバ５と通信を行う。コントローラ記憶部３４は、通信フローごとにサービスチェーンの状況を記憶する。
【００４０】
＜パケット順序が逆転するサービスチェーン張替えの一例＞
次に、パケット順序が逆転するサービスチェーンの張替えの一例について説明する。図５の例において、通信フローに含まれるパケットの順序は、「Ｐｋｔ１」、「Ｐｋｔ２」、「Ｐｋｔ３」であるものとする。
【００４１】
サービスチェーンが張り替えられる前、通信フローに含まれる各パケットは、スイッチＳＷにより、サーバ５に転送されるものとする。
【００４２】
図５の例では、ＳＦＦ部２２は、パケットのタグを参照して、ＶＮＦ部２１Ａにパケットを転送する。ＶＮＦ部２１Ａは、転送されたパケットに対して、サービス機能（例えば、ファイアーウォール等）の処理を行う。サービス機能の処理は、ネットワークサービスとも称される。
【００４３】
ＶＮＦ部２１Ａは、サービス機能の処理を受けたパケットをＳＦＦ部２２に返信する。ＳＦＦ部２２は、該パケットをスイッチＳＷに送信する。スイッチＳＷは、受信したパケットを次段のスイッチＳＷに送信する。
【００４４】
以下、次段のスイッチＳＷは、サービスチェーンにおいてスイッチＳＷからパケットが送信される次のスイッチＳＷであり、前段のスイッチＳＷは、サービスチェーンにおいてスイッチＳＷにパケットを送信する１つ手前のスイッチＳＷである。
【００４５】
ネットワークコントローラ２を操作する操作者が、サービスチェーンの張替えを行う入力をネットワークコントローラ２に対して行うと、入力受け付け部３２は、該入力を受け付ける。
【００４６】
例えば、図５の例に示されるサーバ５がサービスチェーンから除外される入力がネットワークコントローラ２にされたとする。この場合、コントローラ制御部３１は、各サーバ５に対して、サービスチェーンの張替え依頼を送信する制御を行う。図５の例の場合、上記の張替え依頼に基づいて、サーバ５は、張替え後のサービスチェーンから除外される。
【００４７】
このため、サービスチェーンが張り替えられた後、スイッチＳＷは、サーバ５にパケットを転送することなく、次段のスイッチＳＷにパケットを送信する。つまり、サービスチェーンの張替えが行われると、通信フローはサーバ５に転送されなくなる。
【００４８】
通信フローの各パケットがＶＮＦ部２１によるサービス機能の処理を受けない場合、スイッチＳＷとサーバ５との間のパケットの送受信は無駄なトラフィックとなり、通信効率が低下する。また、サーバ５に、無駄なトラフィックによる負荷が生じる。
【００４９】
このため、サーバ５の各ＶＮＦ部２１がサービスチェーンから除外される場合、スイッチＳＷは、サーバ５に対してパケットを転送しない。
【００５０】
図６は、図５の例におけるシーケンスチャートの例を示す。スイッチＳＷは、通信フローに含まれる各パケットをサーバ５に転送する制御を行う。図６の例の場合、スイッチＳＷは、通信フローの「Ｐｋｔ１」、「Ｐｋｔ２」をサーバ５に転送する。
【００５１】
ここで、スイッチＳＷは、前段のスイッチＳＷからパケット「Ｐｋｔ３」を受信する前に、サーバ５からサービスチェーン張替えリクエストを受信したとする。図５の例の場合、サービスチェーン張替え後は、サーバ５は、サービスチェーンから除外される。このためのリクエストが、サービスチェーン張替えリクエストである。
【００５２】
スイッチＳＷは、サービスチェーン張替えリクエストを受信した後、サーバ５に対してパケットを転送しない。図６の例では、スイッチＳＷは、サービスチェーン張替えリクエスト受信した後、前段のスイッチＳＷからパケット「Ｐｋｔ３」を受信する。
【００５３】
スイッチＳＷは、サービスチェーン張替えリクエストを受信したため、パケット「Ｐｋｔ３」をサーバ５に転送せず、次段のスイッチＳＷに該パケット「Ｐｋｔ３」を送信する。その後、スイッチＳＷは、サーバ５からパケット「Ｐｋｔ１」、「Ｐｋｔ２」を受信し、次段のスイッチＳＷにこれらのパケットを送信する。
【００５４】
この場合、通信フローのパケットの順序は、「Ｐｋｔ３」、「Ｐｋｔ１」、「Ｐｋｔ２」になり、パケットの順序が逆転する。つまり、通信フローの各パケットの順序は適正ではない。
【００５５】
通信フローに含まれる各パケットの順序が適正でない場合、Transmission Control Protocol(TCP)の再送が生じる。ＴＣＰの再送が生じると、通信効率が低下する。サービスチェーンの張替えが生じるごとにＴＣＰの再送が生じると、通信効率がさらに低下する。
【００５６】
また、サービスチェーンの張替えを行う前に、各パケットをバッファリングし、各サーバ５の全てのＶＮＦ部２１による処理が終了した後に、サービスチェーンの張替えを行うことも考えられる。
【００５７】
この場合、スイッチＳＷにバッファリングされるパケットの情報量が多くなり、スイッチＳＷのメモリの容量が小さい場合、パケットがオーバーフローする可能性がある。スイッチＳＷに用いられるメモリの容量は小さいことが多く、この場合、パケットのオーバーフローによりパケットロスが発生する。
【００５８】
そこで、実施形態では、サービスチェーンの張替えが行われたとしても、通信フローに含まれる各パケットの順序が適正に維持されるようにする。以下、実施形態におけるサービスチェーンの張替えの一例について説明する。
【００５９】
＜実施形態におけるサービスチェーンの張替えの一例＞
図７は、実施形態におけるサービスチェーンの張替えの一例を示す。図７の例の通信フローに含まれる各パケットの順序は、「Ｐｋｔ１」、「Ｐｋｔ２」、「Ｐｋｔ３」、「Ｐｋｔ４」である。
【００６０】
図７の例に示されるように、通信フローに含まれる各パケットのうち、「Ｐｋｔ１」と「Ｐｋｔ２」と「Ｐｋｔ３」とは連続しており、パケット間隔は殆どない。一方、「Ｐｋｔ３」と「Ｐｋｔ４」との間にはある程度のパケット間隔がある。
【００６１】
例えば、ネットワークにおける何らかの要因により、パケット「Ｐｋｔ３」と「Ｐｋｔ４」との間にある程度のパケット間隔が生じる場合がある。この場合、パケット「Ｐｋｔ４」は、パケット「Ｐｋｔ３」がスイッチＳＷに到達した後、ある程度の時間が経過した後、スイッチＳＷに到達する。
【００６２】
スイッチＳＷのパケット受信部１５が、前段のスイッチＳＷから通信フローの各パケットを受信すると、時刻情報付与部１２は、受信した時刻を示す時刻情報を受信したパケットに付与する。
【００６３】
パケット間隔検出部１３は、通信フローに含まれる各パケットの時刻情報に基づいて、各パケットについて前後のパケットのパケット間隔を検出する。実施形態では、パケット間隔検出部１３は、各パケットのうち１つのパケットを対象として、該パケットと１つ前のパケットとのパケット間隔を検出する。
【００６４】
通信フローの最初のパケット「Ｐｋｔ１」については、該パケット「Ｐｋｔ１」より前のパケットがない。このため、パケット間隔検出部１３は、パケット「Ｐｋｔ２」以降の各パケットについて、前後のパケット間隔を検出する。
【００６５】
パケット中継制御部１６は、通信フローの宛先に応じた出力ポートにパケットが送信されるように制御する。サービスチェーンが張り替えられる前のパケットの宛先は、サーバ５である。従って、パケット中継制御部１６は、パケットがサーバ５に転送されるように制御する。
【００６６】
パケット送信部１７は、パケットの宛先が変更されていなければ、パケットをサーバ５に転送する。サーバ５の遅延監視部２５は、パケットが、ＳＦＦ部２２に入力されてから、ＶＮＦ部２１により処理がされ、ＳＦＦ部２２から出力するまでの遅延時間を監視する。
【００６７】
遅延情報通知部２６は、遅延時間を含む制御情報をスイッチＳＷに通知する。例えば、図７の例の場合、パケット「Ｐｋｔ１」、「Ｐｋｔ２」および「Ｐｋｔ３」が、ＳＦＦ部２２に入力されるものとする。
【００６８】
この場合、遅延監視部２５は、パケット「Ｐｋｔ１」、「Ｐｋｔ２」および「Ｐｋｔ３」の遅延時間を監視する。従って、３つのパケットについての遅延時間が得られる。
【００６９】
遅延監視部２５は、各パケットの遅延時間に対して統計処理を行った時間を遅延時間としてもよい。例えば、遅延監視部２５は、各パケットの遅延時間の平均値を算出し、遅延時間の平均値を上記の遅延時間としてもよい。
【００７０】
この場合、遅延情報通知部２６は、各パケットの遅延時間の平均値を遅延時間としてスイッチＳＷに通知する。以下、遅延時間は、各パケットの遅延時間の平均値であるものとする。
【００７１】
スイッチＳＷのパケット中継制御部１６は、パケット受信部１５が受信した各パケットについて、パケット間隔検出部１３が検出した前後のパケットのパケット間隔とサーバ５から通知された遅延時間とを比較する。
【００７２】
パケット中継制御部１６は、パケット間隔が遅延時間以下の場合、受信したパケットをサーバ５に転送する制御を行い、パケット間隔が遅延時間よりも長い場合、受信したパケットを、サーバ５ではなく、次段のスイッチＳＷに送信する制御を行う。
【００７３】
パケット受信部１５が受信した際のパケットの宛先はサーバ５である。パケット間隔が遅延時間よりも長い場合、パケット中継制御部１６は、第１ヘッダ更新部１４に、パケットの宛先を次段のスイッチＳＷに変更させる。これにより、該パケットは、次段のスイッチＳＷに送信される。
【００７４】
図７の例においてパケット「Ｐｋｔ１」と「Ｐｋｔ２」とのパケット間隔、およびパケット「Ｐｋｔ２」と「Ｐｋｔ３」とのパケット間隔は、遅延時間以下であるとする。一方、パケット「Ｐｋｔ３」と「Ｐｋｔ４」とのパケット間隔は、遅延時間より長いものとする。
【００７５】
この場合、パケット「Ｐｋｔ１」と「Ｐｋｔ２」と「Ｐｋｔ３」との宛先は変更されない。一方、パケット「Ｐｋｔ４」の宛先は、サーバ５から次段のスイッチＳＷに変更される。
【００７６】
パケット「Ｐｋｔ１」〜「Ｐｋｔ３」の前後のパケット間隔は、何れも遅延時間以下である。この場合、サービスチェーンが張り替えられると、上述したように、各パケットの順序が適正でなくなる可能性がある。
【００７７】
一方、パケット「Ｐｋｔ３」とパケット「Ｐｋｔ４」とのパケット間隔は、遅延時間よりも長い。従って、パケット「Ｐｋｔ３」に対するＶＮＦ部２１によるサービス機能の処理が終了し、該パケット「Ｐｋｔ３」がスイッチＳＷに受信された後に、パケット「Ｐｋｔ４」はスイッチＳＷに到達する。
【００７８】
従って、パケット「Ｐｋｔ３」と「Ｐｋｔ４」との順序が逆転することがなく、該順序は適正に維持される。このため、サービスチェーンが張り替えられたとしても、パケット中継制御部１６の制御により、通信フローに含まれる各パケットの順序は適正に維持される。
【００７９】
図８は、図７の例におけるシーケンスチャートである。スイッチＳＷは、上記の通信フローを受信すると、パケット「Ｐｋｔ１」をサーバ５に転送する。また、スイッチＳＷは、パケット「Ｐｋｔ２」をサーバ５に転送する。
【００８０】
図８の例では、スイッチＳＷからサーバ５にパケット「Ｐｋｔ２」が転送された後に、サーバ５の遅延情報通知部２６は、スイッチＳＷに制御情報を通知する。サーバ５は、スイッチＳＷに対して、サービスチェーン張替えリクエストを送信する前に、制御情報をスイッチＳＷに送信する。
【００８１】
つまり、制御情報は、サービスチェーンが張り替えられる前に、サーバ５からスイッチＳＷに送信される。サービスチェーンが張り替えられた後、パケット中継制御部１６が、遅延時間に基づいて、パケットの宛先を変更するかを判定するためである。
【００８２】
パケット間隔検出部１３は、パケット「Ｐｋｔ２」とパケット「Ｐｋｔ３」とのパケット間隔を検出する。検出されたパケット間隔は、遅延時間以下である。従って、パケット中継制御部１６は、パケット「Ｐｋｔ３」の宛先を変更する制御を行わない。このため、パケット「Ｐｋｔ３」はサーバ５に転送される。
【００８３】
サーバ５のＶＮＦ部２１は、スイッチＳＷから受信したパケット「Ｐｋｔ１」と「Ｐｋｔ２」と「Ｐｋｔ３」とに対して所定のサービス機能の処理を行い、次のサービス機能に転送されるようにパケットの宛先を変更し、これらのパケットを順番にスイッチＳＷに送信する。
【００８４】
スイッチＳＷのパケット送信部１７は、サーバ５から受信したパケット「Ｐｋｔ１」と「Ｐｋｔ２」と「Ｐｋｔ３」を次段のスイッチＳＷに送信する。
【００８５】
一方、パケット「Ｐｋｔ３」とパケット「Ｐｋｔ４」とのパケット間隔は、遅延時間より長い。このため、パケット中継制御部１６は、受信したパケットをサーバ５に転送することなく、次段のスイッチＳＷに送信する。この場合、第１ヘッダ更新部１４は、パケット「Ｐｋｔ４」の宛先を、サーバ５から次段のスイッチＳＷに変更する。
【００８６】
従って、サービスチェーンが張り替えられたとしても、通信フローに含まれるパケット「Ｐｋｔ１」〜「Ｐｋｔ４」は、その順序が適正に維持されて、次段のスイッチＳＷに送信される。
【００８７】
通信フローには、パケット「Ｐｋｔ４」に続くパケット「Ｐｋｔ５」以降の１または複数のパケットが含まれてもよい。この場合、パケット中継制御部１６は、パケット「Ｐｋｔ５」以降のパケットも、次段のスイッチＳＷに変更されるように制御する。
【００８８】
これは、サービスチェーンが張り替えられたため、通信フローの転送経路からサーバ５が除外されたためである。
【００８９】
上述したように、サービスチェーンが張り替えられたとしても、パケット「Ｐｋｔ４」と該パケット「Ｐｋｔ４」よりも前の各パケットとで順序が逆転することがない。従って、パケット「Ｐｋｔ４」以降の各パケットが次のスイッチＳＷに送信されるように制御されることで、通信フローの各パケットの順序は適正に維持される。
【００９０】
次に、サービスチェーンの張替えが行われる際の処理の詳細な例について説明する。図９の例において、通信フローに含まれる各パケットは、サービスパスＩＤにより特定されるものとする。
【００９１】
図９の例の場合、通信フローに含まれる各パケットのサービスパスＩＤは「１００番」である。
【００９２】
図９以降の例において、各スイッチＳＷのうち１つのスイッチＳＷをスイッチＳＷ−１とし、該スイッチＳＷ−１の次段のスイッチＳＷをスイッチＳＷ−２、前段のスイッチＳＷ−０とする。
【００９３】
通信フローに含まれる各パケットのヘッダにはNetwork Service Header(NSH)が含まれる。スイッチＳＷは、各種のパケットを受信するため、該スイッチＳＷが受信したパケットにはＮＳＨが含まれない場合がある。
【００９４】
ＮＳＨには、サービスパスヘッダが含まれる。図１０は、サービスパスヘッダの一例を示す。サービスパスヘッダは、サービスパスＩＤとサービスインデックスとを含む。サービスパスＩＤは、サービスチェーンを特定するＩＤを示す。
【００９５】
サービスインデックスは、サービスチェーンに含まれる複数のサービス機能のうち、経由するサービス機能を特定するインデックスの情報を示す。ヘッダにサービスインデックスを含むパケットがサービス機能により処理されると、サービスインデックスはデクリメントされる。
【００９６】
図９の例において、スイッチＳＷ−１は、前段のスイッチＳＷ−０から通信フローに含まれる各パケットを受信する。パケット中継制御部１６は、各パケットの前後のパケット間隔と遅延時間とに基づいて、パケットをサーバ５−１に転送するか、または次段のスイッチＳＷ−２に送信するかを制御する。
【００９７】
図９の例において、スイッチＳＷ−１のサーバ５−１に対する出力ポートのポート番号は「１０」であるとし、次段のスイッチＳＷ−２に対する出力ポートのポート番号は「１１」であるとする。
【００９８】
張り替えられる前のサービスチェーンにはＶＮＦ部２１Ａ−１が含まれる。また、パケット「Ｐｋｔ１」〜「Ｐｋｔ３」の前後のパケット間隔は遅延時間以下である。
【００９９】
従って、パケット中継制御部１６は、ポート番号「１０」の出力ポートからパケット「Ｐｋｔ１」〜「Ｐｋｔ３」をサーバ５−１に転送する制御を行う。パケット「Ｐｋｔ１」〜「Ｐｋｔ３」は、サーバ５−１に転送される。
【０１００】
ＶＮＦ部２１Ａ−１は、各パケットに対してサービス機能の処理を行った後、各パケットのサービスインデックスをデクリメントする。例えば、各パケットのサービスインデックスが「１２７」であった場合、各パケットのサービスインデックスは、ＶＮＦ部２１Ａ−１の処理を受けることにより、サービスインデックスが「１２６」になる。
【０１０１】
図９の例の「ＳＩ＝１２７」は、ＶＮＦ部２１Ａ−１が、パケットのサービスチェーンにおける残り１２７番目のサービス機能であることを示す。
【０１０２】
従って、ＶＮＦ部２１Ａ−１は、パケットに対してサービス機能の処理を行った後に、サービスインデックスをデクリメントすることで、該パケットが次のＶＮＦ部２１Ａ−２に転送されるようにする。
【０１０３】
ＶＮＦ部２１Ａ−１は、複数のサービス機能のうち第１のサービス機能の一例であり、ＶＮＦ部２１Ａ−２は、第１のサービス機能の次のサービス機能であり、第２のサービス機能の一例である。
【０１０４】
ＳＦＦ部２２は、ＶＮＦ部２１Ａ−１にパケット「Ｐｋｔ１」〜「Ｐｋｔ３」を出力する。ＶＮＦ部２１Ａ−１により、これらのパケットに対して、サービス機能の処理がされる。
【０１０５】
サーバ５−１は、サービス機能の処理がされた各パケットをスイッチＳＷ−１に送信する。スイッチＳＷ−１のパケット送信部１７は、ポート番号「１１」から、パケット「Ｐｋｔ１」〜「Ｐｋｔ３」を次段のスイッチＳＷ−２に送信する。
【０１０６】
スイッチＳＷ−１のパケット受信部１５は、前段のスイッチＳＷからパケット「Ｐｋｔ４」を受信する。上述したように、通信フローに含まれる前後のパケットであるパケット「Ｐｋｔ３」とパケット「Ｐｋｔ４」とのパケット間隔は、遅延時間より長い。
【０１０７】
パケット中継制御部１６は、パケット「Ｐｋｔ４」をサーバ５−１に転送することなく、次段のスイッチＳＷ−２に送信する。通信フローに含まれるパケット「Ｐｋｔ４」以降のパケットも同様である。
【０１０８】
パケット「Ｐｋｔ４」（および該パケット以降のパケット）のヘッダに含まれるサービスインデックスは「１２７」である。一方、パケット「Ｐｋｔ１」〜「Ｐｋｔ３」のヘッダに含まれるサービスインデックスは「１２６」である。
【０１０９】
よって、パケット中継制御部１６は、サーバ５−１に転送しないパケットのサービスインデックスをデクリメントする。その結果、パケット「Ｐｋｔ４」以降の各パケットのサービスインデックスは「１２６」になる。
【０１１０】
これにより、通信フローに含まれる各パケットは、次段のサーバ５−２のＶＮＦ部２１Ａ−２に転送される。なお、図９の例において、点線で示す矢印は、通信フローの各パケットのうちサーバ５−１に転送されるパケットを示す。
【０１１１】
ここで、実施形態における通信フローの特定について説明する。実施形態では、通信フローは、５タプルで特定されるものとする。５タプルは、送信元アドレスと送信先アドレスと送信元ポートと送信先ポートとプロトコル番号とを含む情報である。５タプルの各アドレスは、Internet Protocol(IP)アドレスである。
【０１１２】
通信フローは、５タプル以外で特定されてもよい。送信元アドレスは「SRC IP」、送信先アドレスは「DST IP」、送信元ポートは「SRC PORT」、送信先ポートは「DST PORT」、プロトコル番号は「Protocol」と表記される。
【０１１３】
図１１は、パケット中継制御部１６が、パケットの転送制御を行う際に参照するテーブル（以下、張替えテーブル）の一例を示す。張替えテーブルは、スイッチ記憶部１８に記憶される。
【０１１４】
張替えテーブルは、フローとサービスパスＩＤとサービスインデックスとタイムスタンプと遅延時間と次段のＳＦＦアドレスと張替えとの項目を有する。フローは、通信フローを特定する項目である。
【０１１５】
張替えテーブルには複数の通信フローに関する情報が格納されることがある。張替えテーブルの１つのエントリには１つの通信フローに関する情報が格納されるため、通信フローが複数の場合、張替えテーブルのエントリは複数になる。
【０１１６】
フローは、５タプルで特定される通信フローを示す。サービスパスＩＤおよびサービスインデックスは、通信フローの各パケットのサービスパスＩＤおよびサービスインデックスを示す。
【０１１７】
タイムスタンプは、時刻情報付与部１２によりパケットに付与される時刻情報を示す。遅延時間は、スイッチＳＷ−１がサーバ５−１から受信した制御情報に含まれる遅延時間を示す。次段のＳＦＦアドレスは、次段のサーバ５−２のＳＦＦ部２２のアドレスを示す。図１１の例では、次段のＳＦＦアドレスは、ＭＡＣアドレスとＩＰアドレスとで表現される。
【０１１８】
張替えは、サービスチェーンの張替えの状態を示す。図１１の例では、サービスチェーンが張り替えられたことを示す。張替えは、Service Function Chaining(SFC)張替えとも称される。
【０１１９】
図１２は、サーバ５からスイッチＳＷに送信される制御情報の一例を示す。制御情報のうち「Flow Info」は５タプルにより通信フローを特定する情報である。また、制御情報のうち「Latency Info」は遅延時間を示す情報である。
【０１２０】
図１３は、パケット中継制御部１６が行う処理の指標の一例を示す。実施形態のパケット中継制御部１６は、図１３の例に示す指標に従って、パケットに対する処理を行う。サービスヘッダは、上述したサービスパスヘッダがあるかを示す。
【０１２１】
パケット中継制御部１６は、受信したパケットにサービスヘッダがある場合、該パケットのサービスインデックスと一致するサービスインデックスが張替えテーブルにあるかを検索する。
【０１２２】
一致するサービスインデックスがある場合（ヒットの場合）、パケット中継制御部１６は、上述したように、パケット間隔と遅延時間とに基づいて、受信したパケットの転送制御を行う。
【０１２３】
一致するサービスインデックスがない場合（ミスの場合）、パケット中継制御部１６は、スイッチ記憶部１８に記憶されている上述したＦＤＢを検索する。パケット中継制御部１６は、張替えテーブルのうち「次段のＳＦＦアドレス」の項目を参照する。
【０１２４】
そして、パケット中継制御部１６は、受信したパケットのヘッダに含まれるＭＡＣアドレスと一致するエントリがあるかを検索する。一致するエントリがあった場合（ヒットの場合）、パケットの送信先が存在する。
【０１２５】
パケット中継制御部１６は、ヒットしたエントリの出力ポートからパケットが出力されるように制御する。一致するエントリがない場合（ミスの場合）、パケット中継制御部１６は、パケットをフラッディング（スイッチＳＷに接続される各装置にブロードキャスト）する。
【０１２６】
サービスヘッダがない場合、パケット中継制御部１６は、ＦＤＢを検索する。結果がヒットであれば、パケット中継制御部１６は、ヒットした出力ポートからパケットが出力されるように制御する。結果がミスであれば、パケット中継制御部１６は、受信したパケットをフラッディングする。
【０１２７】
図１４は、ネットワークコントローラ２が管理するコントローラテーブルの一例を示す。コントローラテーブルは、ネットワークコントローラ２の管理下の各通信フローを管理するテーブルであり、コントローラ記憶部３４に記憶される。図１４のコントローラテーブルには２つのエントリが含まれる。
【０１２８】
コントローラテーブルは、フローとサービスパスＩＤとサービスインデックスと次段のＳＦＦアドレスと張替えとの項目を含む。コントローラテーブルの各項目は、張替えテーブルの各項目のうち対応する項目と同様である。
【０１２９】
＜実施形態の処理の流れを示すフローチャート＞
図１５は、ネットワークコントローラ２が行う処理の一例を示す。入力受け付け部３２は、サービスチェーンの張替え依頼を受け付けたかを判定する（ステップＳ１）。
【０１３０】
入力受け付け部３２が、該依頼を受け付けた場合（ステップＳ１でＹＥＳ）、コントローラ制御部３１は、張替え依頼の対象となる通信フローのサービスチェーンに含まれる各サーバ５に対して、サービスチェーンを張り替えるリクエストを送信する制御を行う。
【０１３１】
コントローラ通信部３３は、該リクエストを送信する（ステップＳ２）。入力受け付け部３２が、該依頼を受け付けない場合（ステップＳ１でＮＯ）、ステップＳ２の処理は行われない。
【０１３２】
該リクエストを受信した各サーバ５は、サービスチェーンの張替えを行い、サービスチェーンを張り替えた旨の通知をネットワークコントローラ２に送信する。コントローラ制御部３１は、該通知を受信したかを判定する（ステップＳ３）。
【０１３３】
該通知を受信した場合（ステップＳ３でＹＥＳ）、コントローラ制御部３１は、コントローラ記憶部３４に記憶されたサービスチェーンに関するコントローラテーブルの情報を更新する（ステップＳ４）。該通知を受信しない場合（ステップＳ３でＮＯ）、ステップＳ４の処理は行われない。
【０１３４】
次に、図１６および図１７を参照して、スイッチＳＷの処理の流れの一例を説明する。以下、スイッチＳＷ−１の処理の例を説明するが、スイッチＳＷ−１以外の各スイッチＳＷの処理も同様である。
【０１３５】
スイッチ制御部１１は、パケット受信部１５が前段のスイッチＳＷ−０からパケットを受信したかを判定する（ステップＳ１１）。該パケットを受信しない場合（ステップＳ１１でＮＯ）、処理はステップＳ１１に戻る。
【０１３６】
スイッチ制御部１１は、受信したパケットが制御情報であるかを判定する（ステップＳ１２）。例えば、スイッチ制御部１１は、受信したパケットがＢＰＤＵであるかに基づいて、受信したパケットが制御情報であるかを判定してもよい。
【０１３７】
上述したように、制御情報には遅延時間の情報が含まれる。受信したパケットが制御情報である場合（ステップＳ１２でＹＥＳ）、スイッチ制御部１１は、スイッチ記憶部１８に記憶された張替えテーブルに遅延時間の情報を追加する（ステップＳ１３）。
【０１３８】
受信したパケットが制御情報でない場合（ステップＳ１２でＮＯ）、スイッチ制御部１１は、受信したパケットがサービスチェーンの張替えを要求するパケットであるかを判定する（ステップＳ１４）。実施形態では、該パケットは、ネットワークコントローラ２から送信される。
【０１３９】
受信したパケットがサービスチェーンの張替えを要求するパケットである場合（ステップＳ１４でＹＥＳ）、スイッチ制御部１１は、張替えテーブルに新たにエントリを追加する（ステップＳ１５）。
【０１４０】
そして、スイッチ制御部１１は、遅延時間を取得するリクエストをサーバ５に送信する制御を行う（ステップＳ１６）。その後、処理は、ステップＳ１１に戻る。
【０１４１】
受信したパケットがサービスチェーンの張替えを要求するパケットでない場合（ステップＳ１４でＮＯ）、パケット中継制御部１６は、張替えテーブルを検索する（ステップＳ１７）。そして、処理は「Ａ」に移る。
【０１４２】
「Ａ」以降の処理について、図１７の例を参照して、説明する。張替えテーブルの「フロー」により、サービスチェーンの張替え対象の通信フローが特定される。パケット中継制御部１６は、張替えテーブルの「フロー」を検索して、受信したパケットがサービスチェーンの張替え対象のフローのパケットであるかを判定する（ステップＳ１８）。
【０１４３】
受信したパケットが張り替え対象のフローのパケットである場合（ステップＳ１８でＹＥＳ）、パケット中継制御部１６は、パケット間隔が遅延時間よりも長いかを判定する（ステップＳ１９）。
【０１４４】
パケット間隔が遅延時間よりも長い場合（ステップＳ１９でＹＥＳ）、受信したパケットはサーバ５に転送されない。パケットがサーバ５に転送されないため、通信効率の低下の抑制やサーバ５に対する負荷の低下が図られる。この場合、パケット間隔は遅延時間より長いため、通信フローに含まれる各パケットの順序は適切に維持される。
【０１４５】
この場合、該パケットは、サーバ５に転送されないため、ＶＮＦ部２１によるサービス機能の処理を受けない。このため、パケット中継制御部１６は、パケットのヘッダに含まれるサービスインデックスをデクリメントする（ステップＳ２０）。
【０１４６】
そして、第１ヘッダ更新部１４は、パケットが次段のＳＦＦに送信されるように、該パケットの宛先を変更する（ステップＳ２１）。スイッチ制御部１１は、サービスチェーンが張り替えられたことを示す通知をネットワークコントローラ２に送信する制御を行う（ステップＳ２２）。
【０１４７】
パケット送信部１７は、宛先に応じてパケットを送信する（ステップＳ２３）。ステップＳ２１の処理が行われた場合、パケットの宛先は変更されるため、該パケットは、次段のＳＦＦに宛てた出力ポートから出力され、次段のスイッチＳＷに送信される。
【０１４８】
パケット間隔が遅延時間以下の場合（ステップＳ１９でＮＯ）、受信したパケットが、サーバ５に転送されることはない。次段のスイッチＳＷに送信されると、通信フローに含まれる各パケットの順序が適正に維持されない可能性があるためである。
【０１４９】
ステップＳ１９でＮＯの場合、パケットの宛先は変更されない。この場合、パケットは、サーバ５に転送される。ステップＳ１８でＮＯの場合、受信したパケットは、サービスチェーンの張替え対象のフローのパケットではない。
【０１５０】
サービスチェーンの張替えが行われないため、通信フローに含まれる各パケットの順序は考慮されなくてもよい。このため、ステップＳ１８でＮＯの場合、処理は、ステップＳ２３に進み、宛先に応じてパケットが送信される。
【０１５１】
ステップＳ２３の処理が行われた後、処理は「Ｂ」に移る。図１６の例に示されるように、処理は「Ｂ」からステップＳ１１に戻る。以上が実施形態におけるスイッチＳＷの処理である。
【０１５２】
次に、図１８を参照して、サーバ５の処理の一例について説明する。サーバ５がスイッチＳＷからパケットを受信しない場合（ステップＳ３１でＮＯ）、処理は次のステップに進まない。
【０１５３】
サーバ５がパケットを受信した場合（ステップＳ３１でＹＥＳ）、ＳＦＦ部２２は、該パケットが制御情報であるかを判定する（ステップＳ３２）。該パケットが制御情報でない場合（ステップＳ３２でＮＯ）、遅延監視部２５は、該パケットに時刻情報（タイムスタンプ）を付与する。
【０１５４】
これにより、遅延監視部２５は、パケットがＳＦＦ部２２に入力された時刻を認識する。ＳＦＦ部２２は、ＶＮＦ部２１にパケットを中継（出力）する（ステップＳ３４）。ＶＮＦ部２１は、パケットに対して、ファイアーウォール等のサービス機能の処理を実行する（ステップＳ３５）。
【０１５５】
ＶＮＦ部２１は、処理が終了した後、パケットをＳＦＦに返信する（ステップＳ３６）。遅延監視部２５は、ステップＳ３３でパケットに付与された時刻情報（タイムスタンプ）と現時刻との間の時間を遅延時間として認識する。
【０１５６】
遅延監視部２５による監視対象のパケットが複数ある場合には、該遅延監視部２５は、各パケットの遅延時間を統計処理し、該遅延時間と通信フローを特定する情報（５タプル）とを対応付けて、サーバ記憶部２８に記憶する（ステップＳ３７）。
【０１５７】
実施形態の場合、遅延監視部２５は、各パケットの遅延時間の平均値を、スイッチＳＷに送信する制御情報に含める遅延時間とする。ＶＮＦ部２１が複数の通信フローの各パケットに対してサービス機能の処理を行う場合、サーバ記憶部２８には、通信フローごとの遅延時間が記憶される。
【０１５８】
サーバ５は、ステップＳ３３で付与された時刻情報（タイムスタンプ）をパケットから外して、サーバ５のNetwork Interface Card(NIC)に転送する（ステップＳ３８）。これにより、パケットがスイッチに送信される（ステップＳ３９）。
【０１５９】
ステップＳ３２でＹＥＳの場合、サーバ５が受信したパケットは制御情報のパケットである。この場合、遅延情報通知部２６は、該制御情報のうち「Flow Info」に基づいて、通信フローを特定し、該通信フローの遅延時間をサーバ記憶部２８から検索する（ステップＳ４０）。
【０１６０】
遅延情報通知部２６は、遅延時間を含む制御情報のパケットをＮＩＣに転送する（ステップＳ４１）。これにより、スイッチＳＷに制御情報のパケットが送信される。以上が、実施形態におけるサーバ５の処理である。
【０１６１】
＜応用例１＞
次に、応用例１について説明する。図１９の例において、サービスチェーンが張り替えられることにより、サーバ５−１がサービスチェーンから除外されるものとし、前段のサーバ５−０はサービスチェーンから除外されないものとする。
【０１６２】
図１９の例では、前段のスイッチＳＷ−０が受信する通信フローに含まれる各パケットは連続しており、各パケットにおける前後のパケットのパケット間隔は殆どない。そこで、応用例１では、前段のサーバ５−０の間隔調整部２７が通信フローに含まれる各パケットのうち何れかのパケットのパケット間隔を調整する。
【０１６３】
前段のサーバ５−０はサービスチェーンの除外の対象ではない。従って、前段のスイッチＳＷ−０は、受信した各パケットを前段のサーバ５−０に転送する。サーバ５−０に転送された各パケットは、ＶＮＦ部２１Ａ−０によるサービス機能の処理を受ける。
【０１６４】
そして、ＶＮＦ部２１Ａ−０によるサービス機能の処理を受けた各パケットは、ＳＦＦ部２２に出力される。間隔調整部２７は、ＳＦＦ部２２に出力された各パケットのうち何れかの前後のパケットのパケット間隔を調整する。
【０１６５】
スイッチＳＷ−１は、前段のサーバ５−１のＶＮＦ部２１による遅延時間を含む制御情報を前段のスイッチＳＷ−０に送信する。例えば、スイッチＳＷ−１は、スイッチ記憶部１８に記憶された張替えテーブルの遅延時間を前段のスイッチＳＷ−０に送信する。
【０１６６】
前段のスイッチＳＷ−０は、前段のサーバ５−０のＳＦＦ部２２に遅延時間を含む制御情報を送信する。これにより、前段のサーバ５−０のＳＦＦ部２２および間隔調整部２７は、遅延時間を取得する。
【０１６７】
サーバ５−０の間隔調整部２７は、通信フローに含まれる各パケットが、ＳＦＦ部２２からＶＮＦ部２１Ａ−０に出力される際、またはＶＮＦ部２１Ａ−０からＳＦＦ部２２に出力される際、各パケットのうち何れかのパケットの間隔調整を行う。
【０１６８】
例えば、図１９の例の場合、間隔調整部２７は、通信フローに含まれるパケット「Ｐｋｔ４」以降の各パケットを一時的にバッファ部２９に記憶する（バッファリングする）。そして、間隔調整部２７は、所定時間後にバッファ部２９に記憶されたパケットを順次送出する。
【０１６９】
上記の所定時間は、少なくとも後段のスイッチＳＷ−１から取得された遅延時間より長いものとする。従って、パケット「Ｐｋｔ４」と「Ｐｋｔ３」との間に、後段のサーバ５−１のＶＮＦ部２１によるサービス機能の処理による遅延時間より長いパケット間隔が形成される。
【０１７０】
パケット「Ｐｋｔ４」がバッファ部２９に所定時間、バッファリングされた後に送出されるため、パケット「Ｐｋｔ４」以降の各パケットも所定時間バッファリングされた後に送出される。これにより、前後のパケットのパケット間隔の調整が行われる。
【０１７１】
ここで、応用例１の場合、バッファ部２９にパケットがバッファリングされる。バッファ部２９は、スイッチＳＷよりも記憶装置の容量は大きい。また、バッファ部２９にバッファリングされたパケットは、所定時間経過後に送出され、バッファ部２９から削除される。これにより、バッファ部２９に適用される記憶装置の容量は小さくてもよい。
【０１７２】
サーバ５−０は、通信フローとサーバ５−１の遅延時間との対応関係をサーバ記憶部２８にテーブル形式で記憶する。図２０は、該テーブル（遅延情報テーブル）の一例を示す。
【０１７３】
図１９の例では、間隔調整部２７は、パケット「Ｐｋｔ３」と「Ｐｋｔ４」とのパケット間隔を調整する例を示すが、間隔調整部２７は、通信フローに含まれる任意の前後のパケットにおけるパケット間隔を調整してよい。例えば、間隔調整部２７は、パケット「Ｐｋｔ１」と「Ｐｋｔ２」とのパケット間隔を調整してもよい。
【０１７４】
次に、図２１乃至図２３のフローチャートを参照して、応用例１の処理の流れについて説明する。図２１はスイッチＳＷ−１の処理の流れを示すフローチャートである。該フローチャートにおいて、ステップＳ１３−１以外の処理は、上述した実施形態の処理と同様であるため、説明を省略する。
【０１７５】
上述したように、サーバ５−０の間隔調整部２７は、次段のＶＮＦ部２１による遅延時間に基づいて、パケットの間隔調整を行う。サーバ５−１を基準とした場合、該サーバ５−１の遅延情報通知部２６は、前段のサーバ５−０のＳＦＦ部２２に宛てて、遅延時間を含む制御情報を通知する（ステップＳ１３−１）。
【０１７６】
実施形態では、遅延情報通知部２６は、スイッチ記憶部１８に記憶された張替えテーブルを参照して、通信フローに応じた遅延時間の情報を前段のスイッチＳＷ−０に送信し、該スイッチＳＷ−０が前段のサーバ５−０に遅延時間の情報を転送する。
【０１７７】
図２２は、サーバ５（サーバ５−０）の処理の流れを示すフローチャートである。該フローチャートにおいて、ステップＳ３２−１およびＳ３２−２以外の処理は、上述した実施形態の処理と同様であるため、説明を省略する。
【０１７８】
間隔調整部２７は、パケット間隔を調整するかを判定する（ステップＳ３２−１）。上述したように、パケット間隔を調整する対象のパケットは通信フローに含まれる前後のパケット間隔でよい。
【０１７９】
例えば、間隔調整部２７がパケット「Ｐｋｔ３」と「Ｐｋｔ４」とのパケット間隔の調整を行う場合、パケット「Ｐｋｔ４」以降の各パケットがパケット間隔の調整の対象となる。この場合、間隔調整部２７は、パケット「Ｐｋｔ４」以降の各パケットに対して、パケット間隔の調整を行うと判定する。
【０１８０】
例えば、通信フローに含まれる各パケットの何れかの前後のパケットのパケット間隔が遅延時間より長い場合、パケット間隔が調整されなくても、通信フローに含まれる各パケットの順序は適正に維持される。この場合、間隔調整部２７は、パケット間隔を調整しないと判定してもよい。
【０１８１】
また、通信フローに含まれる各パケットについて、全てのパケット間隔が遅延時間以下の場合、間隔調整部２７は、パケット間隔を調整すると判定してもよい。パケット間隔が遅延時間より長くなるように間隔調整されることで、通信フローに含まれる各パケットの順序は適正に維持される。
【０１８２】
パケット間隔が調整されない場合の処理は、上述した実施形態の処理と同様である。パケット間隔が調整される場合（ステップＳ３２−１でＹＥＳ）、間隔調整部２７は、パケットをバッファ部２９にバッファリングする（ステップＳ３２−２）。
【０１８３】
間隔調整部２７は、所定時間後にバッファ部２９に記憶されたパケットを送出する（ステップＳ３２−３）。該所定時間は、遅延時間より長い時間である。送出されたパケットはバッファ部２９から削除される。
【０１８４】
間隔調整部２７は、サーバ記憶部２８に記憶された遅延情報テーブルのうち、パケットに対応するフローのエントリをクリアする。その後、処理は「Ｄ」に進む。
【０１８５】
また、ステップＳ３２の処理において、受信したパケットが制御情報のパケットである場合（ステップＳ３２でＹＥＳ）、処理は「Ｃ」に進む。「Ｃ」および「Ｄ」以降の処理について、図２３のフローチャートを参照して説明する。
【０１８６】
サーバ制御部２３は、受信した制御情報のパケットが、後段のサーバ５−１（前段のサーバ５−０から見た場合の後段のサーバ５）のＳＦＦ部２２からの遅延時間の情報であるかを判定する（ステップＳ３２−４）。
【０１８７】
受信した制御情報が後段のサーバ５のＳＦＦ部２２からの遅延時間の情報である場合（ステップＳ３２−４でＹＥＳ）、サーバ制御部２３は、遅延時間を遅延情報テーブルに記憶する（ステップＳ３２−５）。
【０１８８】
受信した制御情報が後段のサーバ５のＳＦＦ部２２からの遅延時間の情報でない場合（ステップＳ３２−４でＮＯ）、ステップＳ３９乃至Ｓ４０の処理が行われる。
【０１８９】
上述したように、バッファ部２９にパケットが記憶され、所定時間後に、記憶されたパケットが送出される。その後、処理は「Ｄ」からステップＳ４１に進む。つまり、送出されたパケットは、スイッチＳＷ−１に送信される。
【０１９０】
上述したように、バッファ部２９にバッファリングされた以降の各パケットも、バッファリングされてから所定時間後に送出される。
【０１９１】
＜応用例２＞
次に、応用例２について説明する。図２４の例に示されるように、応用例２においても、応用例１と同様、間隔調整部２７は、通信フローに含まれる各パケットのうち何れかのパケットをバッファリングすることで、前後のパケットの間隔調整を行う。
【０１９２】
間隔調整された前後のパケットのうち、前後のパケットのパケット間隔は、取得された遅延時間より長い。このため、バッファリングされたパケット以降の各パケットは、サービスチェーンから除外されるサーバ５−１に転送されない。
【０１９３】
そこで、前段のサーバ５−０の第２ヘッダ更新部２４は、バッファリングされたパケット以降の各パケットの宛先を前段のサーバ５−０の２つ先のサーバ５−２に変更する。
【０１９４】
これにより、サービスチェーンから除外されるサーバ５−１（該サーバ５−１のＶＮＦ部２１）にパケットに転送されなくなる。この場合、スイッチＳＷ−１は、遅延時間とパケット間隔とに基づくパケットの転送制御は行わない。
【０１９５】
応用例２では、スイッチＳＷ−１が行っていた遅延時間とパケット間隔とに基づくパケットの転送制御を前段のサーバ５−０が行う。この場合でも、通信フローの各パケットの順序を適正に維持することができる。
【０１９６】
図２５は、応用例２における遅延情報テーブルの一例を示す。該遅延情報テーブルは、サーバ５−０のサーバ記憶部２８に記憶される。遅延情報テーブルは、フローとサービスパスＩＤとサービスインデックスと２つ先のＳＦＦアドレスと間隔調整との項目を含む。
【０１９７】
２つ先のＳＦＦアドレスは、サーバ５−０から見て、２つの先のサーバ５−２のＳＦＦ部２２のアドレスを示す。間隔調整は、上記のパケット間隔の調整が完了したかを示す。
【０１９８】
次に、図２６および図２７のフローチャートを参照して、応用例２の処理の流れを説明する。図２６のフローチャートにおける各処理は、図２２で説明したフローチャートの各処理と同様であるため、説明を省略する。
【０１９９】
ステップＳ３２の処理において、受信したパケットが制御情報のパケットである場合（ステップＳ３２でＹＥＳ）、処理は「Ｆ」に進む。また、ステップＳ３２−３またはステップＳ３８の処理が終了した後、処理は「Ｇ」に進む。
【０２００】
図２７の例における処理「Ｆ」以降の各処理は、図２２で説明した各処理と同様である。処理「Ｇ」以降の各処理について説明する。
【０２０１】
ＳＦＦ部２２は、パケットがサービスチェーンの張替え対象の通信フローのパケットであるかを判定する（ステップＳ３８−１）。ステップＳ３８−１でＹＥＳの場合、ＳＦＦ部２２は、パケットのヘッダに含まれるサービスインデックスをデクリメントする（ステップＳ３８−２）。
【０２０２】
パケットは、サーバ５−０のＶＮＦ部２１Ａ−０によるサービス機能の処理を受けたことにより、該パケットのヘッダに含まれるサービスインデックスはデクリメントされる。
【０２０３】
さらに、ステップＳ３８−３において、サービスインデックスがデクリメントされることで、サービスインデックスの値は、もともとの値から２つ減る。これにより、パケットの宛先はサーバ５−０から見て２つ先のサーバ５−２のＳＦＦ部２２に変更される（ステップＳ３８−３）。
【０２０４】
サーバ５−０のＳＦＦ部２２は、サービスチェーンが張り替えられことを、ネットワークコントローラ２に通知する（ステップＳ３８−４）。その後、パケットは、スイッチＳＷ−０に送信される。
【０２０５】
ステップＳ４１またはステップＳ３２−５の処理が行われた後、処理は「Ｈ」から、図２６のステップＳ３１に進む。以上が応用例２の処理である。
【０２０６】
＜応用例３＞
次に、応用例３について説明する。上述した実施形態では、スイッチＳＷのスイッチ記憶部１８には、フローごとの張替えテーブルが記憶される。図２８の例に示されるように、フローごとの張替えテーブルは、フローごとに遅延情報が格納される。
【０２０７】
スイッチＳＷのスイッチ記憶部１８には、ＶＮＦ部２１ごとの遅延時間が記憶されてもよい。ＶＮＦ部２１ごとの遅延時間は既知であることがあり、この場合、スイッチＳＷが遅延時間を記憶することで、サーバ５は遅延時間を監視しなくてもよいため、サーバ５の構成を簡略化することができる。
【０２０８】
＜スイッチのハードウェア構成の一例＞
次に、図２９の例を参照して、スイッチＳＷのハードウェア構成の一例を説明する。図２９の例に示すように、バス１００に対して、プロセッサ１１１とRandom Access Memory(RAM)１１２とRead Only Memory(ROM)１１３と補助記憶装置１１４と媒体接続部１１５と通信インタフェース１１６とが接続されている。
【０２０９】
プロセッサ１１１は任意の処理回路である。プロセッサ１１１はＲＡＭ１１２に展開されたプログラムを実行する。実行されるプログラムとしては、実施形態の処理を行うプログラムが適用されてもよい。ＲＯＭ１１３はＲＡＭ１１２に展開されるプログラムを記憶する不揮発性の記憶装置である。
【０２１０】
補助記憶装置１１４は、種々の情報を記憶する記憶装置であり、例えばハードディスクドライブや半導体メモリ等を補助記憶装置１１４に適用してもよい。媒体接続部１１５は、可搬型記録媒体１１９と接続可能に設けられている。
【０２１１】
可搬型記録媒体１１９としては、可搬型の半導体メモリ等が適用されてもよい。この可搬型記録媒体１１９に実施形態の処理を行うプログラムが記録されていてもよい。
【０２１２】
スイッチＳＷのうち、パケット受信部１５、パケット送信部１７およびスイッチ記憶部１８以外の各部は、与えられたプログラムをプロセッサ１１１が実行することにより実現されてもよい。
【０２１３】
パケット受信部１５およびパケット送信部１７は、通信インタフェース１１６により実現されてもよい。通信インタフェース１１６は上述したＮＩＣである。スイッチ記憶部１８は、ＲＡＭ１１２や補助記憶装置１１４等により実現されてもよい。
【０２１４】
スイッチＳＷのうち、スイッチ制御部１１およびスイッチ記憶部１８以外の各部の機能は、例えば、所定の集積回路（Application Specific Integrated Circuit(ASIC)）により実現されてもよい。
【０２１５】
ＲＡＭ１１２、ＲＯＭ１１３、補助記憶装置１１４および可搬型記録媒体１１９は、何れもコンピュータ読み取り可能な有形の記憶媒体の一例である。これらの有形な記憶媒体は、信号搬送波のような一時的な媒体ではない。
【０２１６】
＜サーバのハードウェア構成の一例＞
次に、図３０の例を参照して、サーバ５のハードウェア構成の一例を説明する。図３０の例に示すように、バス２００に対して、プロセッサ２１１とＲＡＭ２１２とＲＯＭ２１３と補助記憶装置２１４と媒体接続部２１５と通信インタフェース２１６とが接続されている。
【０２１７】
プロセッサ２１１は任意の処理回路である。プロセッサ２１１はＲＡＭ２１２に展開されたプログラムを実行する。実行されるプログラムとしては、実施形態の処理を行うプログラムが適用されてもよい。ＲＯＭ２１３はＲＡＭ２１２に展開されるプログラムを記憶する不揮発性の記憶装置である。
【０２１８】
補助記憶装置２１４は、種々の情報を記憶する記憶装置であり、例えばハードディスクドライブや半導体メモリ等を補助記憶装置２１４に適用してもよい。媒体接続部２１５は、可搬型記録媒体２１９と接続可能に設けられている。
【０２１９】
可搬型記録媒体２１９としては、可搬型の半導体メモリや光学式ディスク等が適用されてもよい。この可搬型記録媒体２１９に実施形態の処理を行うプログラムが記録されていてもよい。
【０２２０】
サーバ５のうち、サーバ記憶部２８およびバッファ部２９以外の各部は、与えられたプログラムをプロセッサ２１１が実行することにより実現されてもよい。サーバ記憶部２８およびバッファ部２９は、ＲＡＭ２１２や補助記憶装置２１４等により実現されてもよい。
【０２２１】
ＲＡＭ２１２、ＲＯＭ２１３、補助記憶装置２１４および可搬型記録媒体２１９は、何れもコンピュータ読み取り可能な有形の記憶媒体の一例である。これらの有形な記憶媒体は、信号搬送波のような一時的な媒体ではない。
【０２２２】
＜その他＞
上述した実施形態および各応用例では、スイッチＳＷとサーバ５とは異なる装置として説明したが、スイッチＳＷとサーバ５とは１つの装置であってもよい。例えば、スイッチＳＷの機能がソフトウェアで実現される場合、サーバ５がスイッチＳＷの機能を実行してもよい。
【０２２３】
本実施形態は、以上に述べた実施の形態に限定されるものではなく、本実施形態の要旨を逸脱しない範囲内で種々の構成または実施形態を取ることができる。以上説明した実施形態および各応用例に関し、さらに以下の付記を開示する。
（付記１）
複数のパケットの転送経路に含まれる仮想化されたネットワークの複数のサービス機能のうちの第１のサービス機能が前記転送経路から除外される際、前記複数のパケットにおける前後のパケットの時間間隔と前記第１のサービス機能による処理の遅延時間とに基づいて、前記複数のパケットの各パケットのそれぞれについて、前記第１のサービス機能に転送するか否かを制御する、
ことを特徴とするパケット中継方法。
（付記２）
前記前後のパケットの時間間隔が前記遅延時間以下の場合、受信したパケットを前記第１のサービス機能に転送し、前記前後のパケットの時間間隔が前記遅延時間より長い場合、受信したパケットが示す前記第１のサービス機能の次のサービス機能である第２のサービス機能に前記受信したパケットを転送する、
ことを特徴とする付記１記載のパケット中継方法。
（付記３）
前記第１のサービス機能を実行する情報処理装置は、前記第１のサービス機能に転送するか否かを制御する通信制御装置から受信したパケットに対して行われる前記第１のサービス機能による前記遅延時間を計測し、
計測した前記遅延時間を前記通信制御装置に通知する、
ことを特徴とする付記２記載のパケット中継方法。
（付記４）
前記情報処理装置は、計測された複数の前記遅延時間に対して統計処理を行い、統計処理された遅延時間を前記通信制御装置に通知する、
ことを特徴とする付記３記載のパケット中継方法。
（付記５）
前記遅延時間は、前記第１のサービス機能に転送するか否かを制御する通信制御装置に記憶されている、
ことを特徴とする付記１記載のパケット中継方法。
（付記６）
前記パケットは、経由する前記複数のサービス機能の数の情報を含み、
前記パケットが前記第１のサービス機能により処理された場合、および該パケットが該第１のサービス機能に転送されない場合、前記経由する複数のサービス機能の数がデクリメントされる、
ことを特徴とする付記１記載のパケット中継方法。
（付記７）
前記情報処理装置は、
受信したパケットの次の転送先のサービス機能による前記遅延時間を取得し、
取得された前記遅延時間より長くなるように、前記前後のパケットの時間間隔を調整する、
ことを特徴とする付記３記載のパケット中継方法。
（付記８）
前記情報処理装置は、前記時間間隔の調整を行うパケットを、前記取得された前記遅延時間より長い時間バッファリングする、
ことを特徴とする付記７記載のパケット中継方法。
（付記９）
前記情報処理装置は、前記時間間隔が調整された後のパケットが、前記転送経路から除外された前記第１のサービス機能に転送されるように、該パケットの宛先を変更する、
ことを特徴とする付記７記載のパケット中継方法。
（付記１０）
前記パケットは、経由する前記サービス機能の数の情報を含み、
前記パケットの宛先が変更される場合、前記経由するサービス機能の数を２つ減らす、
ことを特徴とする付記９記載のパケット中継方法。
（付記１１）
コンピュータに、
複数のパケットの転送経路に含まれる仮想化されたネットワークの複数のサービス機能のうちの第１のサービス機能が前記転送経路から除外される際、前記複数のパケットにおける前後のパケットの時間間隔と前記第１のサービス機能による処理の遅延時間とに基づいて、前記複数のパケットの各パケットのそれぞれについて、前記第１のサービス機能に転送するか否かを制御する、
処理を実行させることを特徴とするパケット中継プログラム。
【符号の説明】
【０２２４】
１    システム
２    ネットワークコントローラ
５    サーバ
１１    スイッチ制御部
１２    時刻情報付与部
１３    パケット間隔検出部
１４    第１ヘッダ更新部
１５    パケット受信部
１６    パケット中継制御部
１７    パケット送信部
１８    スイッチ記憶部
２１    ＶＮＦ部
２２    ＳＦＦ部
２３    サーバ制御部
２４    第２ヘッダ更新部
２５    遅延監視部
２６    遅延情報通知部
２７    間隔調整部
２８    サーバ記憶部
２９    バッファ部
３１    コントローラ制御部
３２    入力受け付け部
３３    コントローラ通信部
３４    コントローラ記憶部
１１１、２１１    プロセッサ
１１２、２１２    ＲＡＭ
１１３、２１３    ＲＯＭ
【図１】
2017135449.tif 000003
【図２】
2017135449.tif 000004
【図３】
2017135449.tif 000005
【図４】
2017135449.tif 000006
【図５】
2017135449.tif 000007
【図６】
2017135449.tif 000008
【図７】
2017135449.tif 000009
【図８】
2017135449.tif 000010
【図９】
2017135449.tif 000011
【図１０】
2017135449.tif 000012
【図１１】
2017135449.tif 000013
【図１２】
2017135449.tif 000014
【図１３】
2017135449.tif 000015
【図１４】
2017135449.tif 000016
【図１５】
2017135449.tif 000017
【図１６】
2017135449.tif 000018
【図１７】
2017135449.tif 000019
【図１８】
2017135449.tif 000020
【図１９】
2017135449.tif 000021
【図２０】
2017135449.tif 000022
【図２１】
2017135449.tif 000023
【図２２】
2017135449.tif 000024
【図２３】
2017135449.tif 000025
【図２４】
2017135449.tif 000026
【図２５】
2017135449.tif 000027
【図２６】
2017135449.tif 000028
【図２７】
2017135449.tif 000029
【図２８】
2017135449.tif 000030
【図２９】
2017135449.tif 000031
【図３０】
2017135449.tif 000032