(57)【要約】【課題】パスレイテンシを計算するためのシステム及び方法を提供する。【解決手段】  ソフトウェア定義ネットワークにおいて、各スイッチに監視ルールを挿入し、受信したルール合致パケットを次のスイッチに転送するよう命令し、最初及び最後のスイッチにコントローラへＰａｃｋｅｔＩｎメッセージを送信するよう命令する。各スイッチに、同じスイッチにおける監視ルールと合致する監視プローブを挿入し、該監視ルールで指定された命令を該スイッチが受信するパケットの到着に応答して開始する。ＰａｃｋｅｔＩｎメッセージに設定したＰａｃｋｅｔＩｎタイムスタンプを集め、それらの集合からパスレイテンシを推定する。コントローラがスイッチ制御プレーンに接続され、データプレーンに接続されていないとき、少なくとも１つの個別のフロー監視プローブがＰａｃｋｅｔＯｕｔ  ＯｐｅｎＦｌｏｗメッセージへのカプセル化により個々のスイッチに挿入される。【選択図】図１
2018088716.tif 000002
【特許請求の範囲】
【請求項１】
最初のスイッチと、最後のスイッチと、これらのスイッチ間にある中間スイッチとを含む複数のスイッチを備え、前記最初のスイッチと前記最後のスイッチとの間にデフォルトルーティングパスが存在するソフトウェア定義ネットワークにおける、前記デフォルトルーティングパスのパスレイテンシを計算する方法であって、
前記スイッチの各々に少なくとも１つの個別のフロー監視ルールを挿入し、前記スイッチの各々に対し、受信したルール合致パケットを前記パス上の次のスイッチに転送するよう命令し、さらに前記最初のスイッチ及び前記最後のスイッチに対し、前記ソフトウェア定義ネットワークに接続されたコントローラにＰａｃｋｅｔＩｎメッセージを送信するよう命令し、
前記スイッチの各々に、前記スイッチのうち同じスイッチにおける前記少なくとも１つの個別のフロー監視ルールと合致する、少なくとも１つの個別のフロー監視プローブを挿入し、前記スイッチのうち前記同じスイッチにおける前記少なくとも１つの個別のフロー監視ルールによって指定された命令を、前記受信するルール合致パケットの該スイッチへの到着に応答して開始し、
前記ＰａｃｋｅｔＩｎメッセージにタイムスタンプを付与してＰａｃｋｅｔＩｎタイムスタンプを生成し、
前記ＰａｃｋｅｔＩｎタイムスタンプを集めることで前記ＰａｃｋｅｔＩｎタイムスタンプの集合を取得し、
前記ＰａｃｋｅｔＩｎタイムスタンプの集合から、プロセッサを使用して前記パスレイテンシを推定し、
前記コントローラが、前記ソフトウェア定義ネットワークのスイッチ制御プレーンに接続され、データプレーンに接続されていないとき、
前記少なくとも１つの個別のフロー監視プローブが、ＰａｃｋｅｔＯｕｔ  ＯｐｅｎＦｌｏｗメッセージへのカプセル化により、個々の前記スイッチにそれぞれ挿入される方法。
【請求項２】
前記デフォルトルーティングパスは、前記スイッチ各々に格納されたパケット転送ルールから決定される請求項１に記載の方法。
【請求項３】
前記少なくとも１つの個別のフロー監視ルールの各々は、前記スイッチに格納されたどのパケット転送ルールでもカバーされないフロースペースをカバーするか、どの前記パケット転送ルールよりも特異性が高いか、のうちの少なくとも１つである請求項１に記載の方法。
【請求項４】
前記少なくとも１つの個別のフロー監視プローブは、前記ソフトウェア定義ネットワークのデータプレーンに挿入される請求項１に記載の方法。
【請求項５】
前記ソフトウェア定義ネットワークが集中管理型サーバを備え、前記少なくとも１つの個別のフロー監視プローブは、前記スイッチのうち個々のスイッチに挿入される、前記データプレーンに接続された集中管理型サーバのインターフェースから配信される請求項４に記載の方法。
【請求項６】
前記スイッチそれぞれにおける前記少なくとも１つの個別の監視プローブは、全ての前記スイッチのための複数の監視プローブをまとめて備え、前記複数の監視プローブの到着分布、速度及びサイズのうちの少なくとも１つが、前記複数の監視プローブのうちの、他の１つのスイッチにおける他の１つの監視プローブと異なる請求項１に記載の方法。
【請求項７】
前記ＰａｃｋｅｔＩｎタイムスタンプがタプルに含まれ、
前記タプルは、ＰａｃｋｅｔＩＤとｓｗｉｔｃｈＩＤとをさらに含み、
前記ＰａｃｋｅｔＩＤは、所与のパケットを一意に識別するものであり、
前記ｓｗｉｔｃｈＩＤは、前記スイッチのうち、前記所与のパケットを送信した、対応するスイッチを一意に識別するものである請求項１に記載の方法。
【請求項８】
前記コントローラが、前記スイッチのうちの少なくともいくつかに接続され、該コントローラからＥｃｈｏＲｅｑｕｅｓｔ  ＯｐｅｎＦｌｏｗメッセージを送信し、
前記ＥｃｈｏＲｅｑｕｅｓｔ  ＯｐｅｎＦｌｏｗメッセージのそれぞれのリターンタイムを測定し、
測定された前記それぞれのリターンタイムから決定された個々の制御チャネルレイテンシに応じて、推定された前記パスレイテンシを調整する請求項１に記載の方法。
【請求項９】
最初のスイッチと、最後のスイッチと、これらのスイッチ間にある中間スイッチとを含む複数のスイッチを備え、前記最初のスイッチと前記最後のスイッチとの間にデフォルトルーティングパスが存在するソフトウェア定義ネットワークにおいて、前記デフォルトルーティングパスのパスレイテンシを計算するシステムであって、
前記スイッチの各々に少なくとも１つの個別のフロー監視ルールを挿入し、前記スイッチの各々に対し、受信したルール合致パケットを前記パス上の次のスイッチに転送するよう命令し、さらに前記最初のスイッチ及び前記最後のスイッチに対し、前記ソフトウェア定義ネットワークに接続されたコントローラにＰａｃｋｅｔＩｎメッセージを送信するよう命令するルールジェネレータと、
前記スイッチの各々に、前記スイッチのうち同じスイッチにおける前記少なくとも１つの個別のフロー監視ルールと合致する、少なくとも１つの個別のフロー監視プローブを挿入し、前記スイッチのうち前記同じスイッチにおける前記少なくとも１つの個別のフロー監視ルールによって指定された命令を、前記受信したルール合致パケットの該スイッチへの到着に応答して開始するプローブジェネレータと、
前記ＰａｃｋｅｔＩｎメッセージにタイムスタンプを付与してＰａｃｋｅｔＩｎタイムスタンプを生成するトラフィックリスナと、
前記ＰａｃｋｅｔＩｎタイムスタンプを集めることで前記ＰａｃｋｅｔＩｎタイムスタンプの集合を取得し、前記ＰａｃｋｅｔＩｎタイムスタンプの集合から、プロセッサを使用して前記パスレイテンシを推定するレイテンシエスティメータと、
を有し、
前記コントローラが、
前記ソフトウェア定義ネットワークのスイッチ制御プレーンに接続され、データプレーンに接続されていないとき、
前記少なくとも１つの個別のフロー監視プローブが、
ＰａｃｋｅｔＯｕｔ  ＯｐｅｎＦｌｏｗメッセージへのカプセル化により、個々の前記スイッチにそれぞれ挿入されるシステム。
【請求項１０】
前記ルールジェネレータは、
前記スイッチの各々に格納されたパケット転送ルールから前記デフォルトルーティングパスを決定する請求項９に記載のシステム。
【請求項１１】
前記少なくとも１つの個別のフロー監視ルールの各々は、
前記スイッチに格納されたどのパケット転送ルールでもカバーされないフロースペースをカバーするか、どの前記パケット転送ルールよりも特異性が高いか、のうちの少なくとも１つである請求項９に記載のシステム。
【請求項１２】
前記プローブジェネレータは、
前記少なくとも１つの個別のフロー監視プローブを前記ソフトウェア定義ネットワークのデータプレーンに挿入する請求項９に記載のシステム。
【請求項１３】
前記ソフトウェア定義ネットワークが集中管理型サーバを備え、
前記少なくとも１つの個別のフロー監視プローブは、
前記スイッチのうち対応するスイッチに挿入される、前記データプレーンに接続された集中管理型サーバのインターフェースから配信される請求項１２に記載のシステム。
【請求項１４】
前記スイッチそれぞれにおける前記少なくとも１つの個別の監視プローブは、全ての前記スイッチのための複数の監視プローブをまとめて備え、前記複数の監視プローブの到着分布、速度及びサイズのうちの少なくとも１つが、前記複数の監視プローブのうちの、他の１つのスイッチにおける他の１つの監視プローブと異なる請求項９に記載のシステム。
【請求項１５】
前記ＰａｃｋｅｔＩｎタイムスタンプがタプルに含まれ、
前記タプルは、ＰａｃｋｅｔＩＤとｓｗｉｔｃｈＩＤとをさらに含み、
前記ＰａｃｋｅｔＩＤは、所与のパケットを一意に識別するものであり、
前記ｓｗｉｔｃｈＩＤは、前記スイッチのうち、前記所与のパケットを送信した、対応するスイッチを一意に識別するものである請求項９に記載のシステム。
【請求項１６】
前記レイテンシエスティメータは、前記コントローラからＥｃｈｏＲｅｑｕｅｓｔ  ＯｐｅｎＦｌｏｗメッセージを送信し、
前記ＥｃｈｏＲｅｑｕｅｓｔ  ＯｐｅｎＦｌｏｗメッセージのそれぞれのリターンタイムを測定し、
測定された前記それぞれのリターンタイムから決定された個々の制御チャネルレイテンシに応じて、推定された前記パスレイテンシを調整し、
前記コントローラは、前記スイッチのうちの少なくともいくつかに接続されている、請求項９に記載のシステム。
【発明の詳細な説明】
【技術分野】
【０００１】
この出願は、２０１３年９月６日に出願された米国仮出願第６１／８７４４２４号を基礎とし、その開示の全てをここに取り込む。
【０００２】
本発明は、ネットワークに関し、特にソフトウェア定義ネットワーク（Software Defined Network）におけるパスレイテンシの監視に関する。
【背景技術】
【０００３】
ネットワークレイテンシは、検索、電子商取引、銀行取引業務等のデータセンタにおける数多くのアプリケーションのパフォーマンスを左右する。それらのアプリケーションでは、ユーザ応答時間を短縮すると共にプロバイダの収益を最大化するため、低レイテンシのネットワークパスを介した通信を必要とする複数の分散コンポーネントを配置する場合が多い。データセンタのネットワークを効果的に管理し、アプリケーションに対して低レイテンシのパスを提供するため、オペレータは全てのパスのレイテンシを常に監視し、遅延の大きいパスを避けてトラフィックのルーティングを迅速に行わなければならない。
【０００４】
ネットワークパスのレイテンシを監視するとき、データセンタのオペレータは、アプリケーションとネットワークの２つの観点から実施する。シンプルかつ一般的なアプローチは、アプリケーションサーバ間でプローブ（例えば、ｐｉｎｇ）を送信し、その応答時間を測定することである。多くのデータセンタオペレータは、コストのかかるエンドホストからの測定を繰り返し実行することに積極的ではなく、顧客のバーチャルマシン（ＶＭ）に資源を配分する方を好む。また、例えばコロケーションセンタのように、顧客のサーバに対するオペレータのアクセスを制限しているデータセンタもある。もう一つの方法は、ネットワークからレイテンシを監視することである。しかしながら、従来の解決法は、いずれもレイテンシを測定するためのキャプチャや処理に高コストの機器やコーディネーションが必要である。
【発明の概要】
【０００５】
従来技術の上記及び他の欠点、並びに不利益は、ソフトウェア定義ネットワークにおけるパスレイテンシの監視を目的とする本原理によって対処される。
【０００６】
本原理の一態様によれば、最初のスイッチと、最後のスイッチと、これらのスイッチ間にある中間スイッチとを含む複数のスイッチを備え、最初のスイッチと最後のスイッチとの間にデフォルトルーティングパスが存在するソフトウェア定義ネットワークにおいて、デフォルトルーティングパスのパスレイテンシを計算する方法が提供される。本方法では、これらのスイッチの各々に少なくとも１つの個別のフロー監視ルールを挿入し、スイッチの各々に対して、受信したルール合致パケット（ｒｕｌｅ  ｍａｔｃｈｉｎｇ  ｐａｃｋｅｔ）を該パス上の次のスイッチに転送するよう命令し、さらに最初のスイッチ及び最後のスイッチに対し、このソフトウェア定義ネットワークに接続されたコントローラにＰａｃｋｅｔＩｎメッセージを送信するよう命令する。また、本方法は、これらのスイッチの各々に、これらのスイッチのうち同じスイッチにおける少なくとも１つの個別のフロー監視ルールと合致する、少なくとも１つの個別のフロー監視プローブを挿入し、これらのスイッチのうち同じスイッチにおける少なくとも１つの個別のフロー監視ルールによって指定された命令を、該スイッチで受信するルール合致パケットの到着に応答して開始する。また、本方法は、ＰａｃｋｅｔＩｎメッセージにタイムスタンプを付与してＰａｃｋｅｔＩｎタイムスタンプを生成する。そして、本方法は、ＰａｃｋｅｔＩｎタイムスタンプの集合を取得することでＰａｃｋｅｔＩｎタイムスタンプを集める。さらに、本方法は、プロセッサを使用して、ＰａｃｋｅｔＩｎタイムスタンプの集合からパスレイテンシを推定する。
【０００７】
本原理の別の態様によれば、最初のスイッチと、最後のスイッチと、これらのスイッチ間にある中間スイッチとを含む複数のスイッチを備え、最初のスイッチと最後のスイッチとの間にデフォルトルーティングパスが存在するソフトウェア定義ネットワークにおいて、デフォルトルーティングパスのパスレイテンシを計算するシステムが提供される。本システムでは、これらのスイッチの各々に少なくとも１つの個別のフロー監視ルールを挿入し、スイッチの各々に対し、受信したルール合致パケットを該パス上の次のスイッチに転送するよう命令し、さらに最初のスイッチ及び最後のスイッチに対し、このソフトウェア定義ネットワークに接続されたコントローラにＰａｃｋｅｔＩｎメッセージを送信するよう命令する、ルールジェネレータを含む。また、本システムは、これらのスイッチの各々に、これらのスイッチのうち同じスイッチにおける少なくとも１つの個別のフロー監視ルールと合致する、少なくとも１つの個別のフロー監視プローブを挿入し、これらのスイッチのうち同じスイッチにおける少なくとも１つの個別のフロー監視ルールによって指定された命令を、該スイッチで受信するルール合致パケットの到着に応答して開始する、プローブジェネレータをさらに含む。また、本システムは、ＰａｃｋｅｔＩｎメッセージにタイムスタンプを付与してＰａｃｋｅｔＩｎタイムスタンプを生成するトラフィックリスナをさらに含む。また、本システムは、ＰａｃｋｅｔＩｎタイムスタンプを集めることでＰａｃｋｅｔＩｎタイムスタンプの集合を取得し、ＰａｃｋｅｔＩｎタイムスタンプの集合から、プロセッサを使用してパスレイテンシを推定する、レイテンシエスティメータを含む。
【０００８】
上述及び他の特徴、並びに利点は、本原理の実施形態の後述する詳細な説明を図面と併せて読めば明らかになるであろう。
【０００９】
本開示では、後述するように、以下の図面を参照しながら好ましい実施形態について詳細に説明する。
【図面の簡単な説明】
【００１０】
【図１】図１は、本原理の一実施形態による、本原理が適用可能な処理システム１００の一例である。
【図２】図２は、本原理の一実施形態による、ソフトウェア定義ネットワークにおいてパスレイテンシを監視するシステム２００の一例である。
【図３】図３は、本原理の一実施形態による、ソフトウェア定義ネットワークにおいてパスレイテンシを監視する方法３００の一例である。
【図４】図４は、本原理の一実施形態による、ソフトウェア定義ネットワークにおいてデフォルトルーティングパスのパスレイテンシを計算する他の方法４００の一例である。
【発明を実施するための形態】
【００１１】
本原理の様々な実施形態において、本原理は、ＳＤＮ（Software Defined Network）におけるネットワークパスのレイテンシの推定に用いる。ＳＤＮは、ネットワークの制御プレーンとデータプレーンとを分離し、それらの間にオープンな通信インターフェースを提供する。ネットワーク制御機能の大半がスイッチから集中管理型サーバ（コントローラ）に委託、委譲される一方で、スイッチは主としてパケットの転送を担う。コントローラとスイッチとは、例えばＯｐｅｎＦｌｏｗ等の専用プロトコルを用いて相互に通信を行う。ＯｐｅｎＦｌｏｗでは、スイッチがネットワークイベント（例えば、新たなフローが到着し、フローテーブルに、そのフローに合致するエントリが存在しないとき、またはマッチアクションによってエントリが特定されたとき）をコントローラへ非同期に通知する機能を有する。
【００１２】
パスレイテンシは、ネットワークパスの両端に位置するスイッチによって送信される各パケットと関連付けられたＰａｃｋｅｔＩｎメッセージのタイムスタンプを比較することで推定する。スイッチは、現パケットと合致するものが見つからないとき、または特に指示されたとき、ルールにおけるアクションとしてＰａｃｋｅｔＩｎを送信する。同じパケットによりトリガされたＰａｃｋｅｔＩｎに関連するタイムスタンプを互いに関連付けることで、ネットワークにおけるそのパケットの経路及びレイテンシを追跡できる。
【００１３】
事前の解決方法として、オペレータが予め転送ルールをインストールしないという、リアクティブなＯｐｅｎＦｌｏｗの配備による対処に限定したものが提案された。また、この事前の解決方法を、ルールを予めインストールするというリアクティブではない（すなわちプロアクティブな）配備とし、ＰａｃｋｅｔＩｎメッセージからレイテンシを推定するのは、制御トラフィックがほとんど存在しないため、より困難である。我々は、本原理に従って、レイテンシの監視対象となるパスがある場合、そのパス上の各スイッチに特定の転送ルールをインストールし、これらのルールと合致する一連のプローブメッセージを生成する監視フレームワークを提案する。このパスの最初及び最後のスイッチに設定されるルールは１つではなく２つのアクションを有する。すなわち、これらのルールでは、ルールに合致するパケットをパス上の次のスイッチへ転送すると共に、コントローラにＰａｃｋｅｔＩｎメッセージを送信する。コントローラは、パス上の最初及び最後のスイッチから送信されたＰａｃｋｅｔＩｎメッセージにタイムスタンプを設定し、それらタイムスタンプ間の差としてのパスレイテンシを推定する。
【００１４】
ここで、同一または同様の要素に対して同様の符号が付与された図を細部にわたって参照することとし、最初に図１を参照すると、この図には、本原理の一実施形態における、本原理が適用可能な処理システム１００の一例を示すブロック図が示されている。処理システム１００は、システムバス１０２を介して他のコンポーネントと動作可能に接続される、少なくとも１つのプロセッサ（ＣＰＵ）１０４を含む。システムバス１０２には、キャッシュ１０６、ＲＯＭ（Read Only Memory）１０８、ＲＡＭ（Random Access Memory）１１０、入力／出力（Ｉ／Ｏ）アダプタ１２０、サウンドアダプタ１３０、ネットワークアダプタ１４０、ユーザインターフェースアダプタ１５０及びディスプレイアダプタ１６０が動作可能に接続されている。
【００１５】
第１の記憶装置１２２及び第２の記憶装置１２４は、Ｉ／Ｏアダプタ１２０によってシステムバス１０２に動作可能に接続されている。記憶装置１２２及び１２４は、ディスク記憶装置（例えば、磁気記憶装置または光学ディスク記憶装置）、固体磁気装置等のいずれであってもよい。記憶装置１２２及び１２４は、同じタイプの記憶装置であってもよく、異なるタイプの記憶装置であってもよい。
【００１６】
スピーカ１３２は、サウンドアダプタ１３０によってシステムバス１０２に動作可能に接続されている。送受信機１４２は、ネットワークアダプタ１４０によってシステムバス１０２に動作可能に接続されている。ディスプレイ装置１６２は、ディスプレイアダプタ１６０によってシステムバス１０２に動作可能に接続されている。
【００１７】
第１のユーザ入力装置１５２、第２のユーザ入力装置１５４及び第３のユーザ入力装置１５６は、ユーザインターフェースアダプタ１５０よってシステムバス１０２に動作可能に接続されている。ユーザ入力装置１５２、１５４及び１５６は、キーボード、マウス、キーパッド、イメージキャプチャ装置、モーションセンシング装置、マイクロフォン、あるいはこれらの装置のうちの少なくとも２つの装置の機能が組み込まれた装置等のいずれであってもよい。本原理の主旨を維持する限りにおいて、他のタイプの入力装置を使用してもよい。ユーザ入力装置１５２、１５４及び１５６は、同じタイプのユーザ入力装置であってもよく、異なるタイプのユーザ入力装置であってもよい。ユーザ入力装置１５２、１５４及び１５６は、システム１００との間で情報を入力及び出力するために用いられる。
【００１８】
処理システム１００は、当業者であれば容易に思いつくような他の要素（図示せず）を含んでいてもよく、特定の要素を除いてもよい。例えば、当業者であれば容易に理解できるが、処理システム１００には、その詳細な実装に応じて他の様々な入力装置及び／または出力装置を含むことができる。例えば、無線及び／または有線による種々の入力装置及び／または出力装置を使用できる。さらに、当業者であれば容易に理解できるが、様々な構成において追加のプロセッサ、コントローラ、メモリ等も利用できる。処理システム１００の上記及び他の変形例は、本明細書で提供される本原理の教示によって当業者であれば容易に考えられるであろう。
【００１９】
想定されるある種の処理システム１００は、本原理が適用可能なネットワークにおけるいくつかの要素を表すと考えられる。
【００２０】
さらに、後述する図２を用いて説明するシステム２００は、本原理の各実施形態を実現するシステムであることが理解されよう。処理システム１００の一部または全部はシステム２００の１つまたは複数の要素で実現されてもよい。
【００２１】
さらに、処理システム１００は、例えば図３の方法３００の少なくとも一部等、本明細書において説明する方法の少なくとも一部を実行してもよいと理解されるべきである。同様に、システム２００の一部または全部を用いて、図３の方法３００の少なくとも一部を実行してもよい。
【００２２】
図２は、本原理の一実施形態による、ソフトウェア定義ネットワークにおいて、パスレイテンシを監視するシステム２００の一例を示す。システム２００のアーキテクチャには、（１）ルールジェネレータ２１０、（２）トラフィックジェネレータ（本明細書では、同じ意味で「プローブジェネレータ」とも称す）２２０、（３）トラフィックリスナ２３０及び（４）レイテンシエスティメータ２４０の４つの主要な要素が含まれる。システム２００はソフトウェア定義ネットワーク２９９内に実現される。ネットワーク２９９は一組のスイッチ２８８を含む。スイッチ２８８は、最初のスイッチ２７１と、最後のスイッチ２７５と、最初のスイッチと最後のスイッチとの間にある中間スイッチ２７２、２７３及び２７４とを含む。パス２６６は、最初のスイッチ２７１と最後のスイッチ２７５との間に形成される。システム２００は、スイッチ２７１及びスイッチ２７５の組を入力として受信し、スイッチ２７１と２７５との間のデフォルトルーティングパス２６６における予め決められた期間のレイテンシの分布を計算する。
【００２３】
集中管理型のコントローラ（以降、短縮して「コントローラ」と称す）２８５もまた用いられる。図２の実施形態において、コントローラ２８５は、ルールジェネレータ２１０、トラフィックジェネレータ２２０、トラフィックリスナ２３０及びレイテンシエスティメータ２４０を含む。他の実施形態として、コントローラ２８５は、これらの要素とは別に設けられていてもよく、これらの要素の１つまたはいくつかの中に含まれていてもよい。コントローラ２８５は、本明細書で提供される本原理の教示によって当業者であれば容易に考えられる、集中管理型の構成または何らかの他の構成で実現できる。図２の実施形態において、コントローラは（図１に示す）プロセッサ及びメモリを含む。他の実施形態として、コントローラ２８５は、その１つまたは複数の要素が個別のプロセッサ及びメモリを含んでいてもよく、１つまたは複数のプロセッサ及びメモリ、並びに／またはその他を共有してもよい。図２のシステム２００の上記及びその他の変形例は、本明細書で提供される原理の教示により、当業者であれば、本原理の主旨を維持しつつ容易に考えられるであろう。以下、各システムコンポーネントについてさらに説明する。
【００２４】
ルールジェネレータ２１０は、ネットワーク内のスイッチ２７１から２７５までの各々から転送ルールを読み込み、入力によって指定された２つのスイッチ２７１と２７５との間のルーティングパスを決定する。このルーティングパスは、システム２００によってレイテンシが計算されるパス２６６である。次に、ルールジェネレータ２１０は、このパス上のスイッチ２７１から２７５までの各々に対して、既存のトラフィックと合致しない非常に特異な転送ルールをインストールする。
【００２５】
トラフィックジェネレータ２２０は、ルールジェネレータ２１０によって、インストールされた個別のルールに合致するプローブ２２１を生成する。
【００２６】
トラフィックリスナ２３０は、ＰａｃｋｅｔＩｎ制御メッセージ及びそれらのタイムスタンプをキャプチャする。
【００２７】
レイテンシエスティメータ２４０は、トラフィックリスナ２３０からＰａｃｋｅｔＩｎタイムスタンプを収集し、タイムスタンプを、それらでトリガされたデータパケットと関連付けようとする。
【００２８】
図３は、本原理の一実施形態による、ソフトウェア定義ネットワークにおいてパスレイテンシを監視する方法３００の一例を示す。この方法は、第１の手順（すなわち測定）及び第２の手順（すなわち推定）を含んでいる。したがって、図の符号３１０は、第１の手順とそのエイリアスである測定の両方を表している。また、図の符号３２０は、第２の手順とそのエイリアスである推定の両方を表している。
【００２９】
測定３１０に関し、この手順は、副手順であるパス計算３１１、ルール挿入３１２及びプローブ生成３１３を含む。推定３２０に関し、この手順は、副手順であるトラフィックリスニング３２１及びレイテンシ計算３２２を含む。
【００３０】
次に、本原理の一実施形態による測定３１０について説明する。
【００３１】
測定手順３１０は、監視対象パスに監視プローブ２２１を挿入する。監視プローブ２２１の目的は、パス２６６上のスイッチにおいてＰａｃｋｅｔＩｎメッセージをトリガすることである。コントローラ２８５は、ＰａｃｋｅｔＩｎメッセージにタイムスタンプを設定し、それらのタイムスタンプを集めることで任意のスイッチ（例えば、スイッチ２７１及び２７５）間のレイテンシを推定する。測定手順３１０は、以下でさらに詳述するように、上述の３つの副手順を含む。すなわち、ネットワーク内の任意の２つのポイント（例えばスイッチ２７１とスイッチ２７２）間のネットワークパスを計算すること（副手順３１１、パス計算）、このパスに沿ったスイッチ２７３、２７４及び２７５に監視ルールを挿入すること（副手順３１２、ルール挿入）、並びにこれらの監視ルールを生成するプローブパケットを生成すること（副手順３１３、プローブ生成）である。
【００３２】
次に、本原理の一実施形態によるパス計算３１１について説明する。
【００３３】
パス計算３１１は、ネットワーク２９９内の任意の２つの「ポイント」（例えば、スイッチ２７１と２７５）間のネットワークスイッチ２７２、２７３及び２７４の順序を推定する。これらのネットワーク「ポイント」は、エンドポイント（例えば、サーバ）でもよく、ネットワークスイッチでもよい。エンドポイントの場合、パス計算３１１は、まずエンドポイントとネットワーク２９９とを接続するスイッチを推定し、これらのエッジスイッチ２７１と２７５間のパス２６６を計算する。
【００３４】
２つのスイッチ２７１と２７５との間のパスを計算するには、ネットワークトポロジ及びルーティングに関する情報が必要である。
【００３５】
次に、本原理の一実施形態によるネットワークトポロジを計算する手順について説明する。
【００３６】
ネットワークトポロジの推定は、各スイッチから（IEEE 802.1ABの規格文書で定める）ＬＬＤＰ（Link Layer Discovery Protocol）パケットを送信し（スイッチ間のリンクを推定するため）、各スイッチにインストールされたＯｐｅｎＦｌｏｗルールを調べることにより（エンドポイントがどのスイッチに接続されているか推定するため）行う。この手順における主要ステップは、エンドポイントが集まる（ｃｏｌｌｅｃｔｅｄ）ネットワーク上の場所を検出することである。（宛先としての）エンドポイントＩＰに合致するルールを有するスイッチから開始し、幾通りかの方法で処理する。
【００３７】
（Ａ）ルールのアクションが出力ポートに対する転送である場合、対応するリンクをたどる。このリンクがトポロジ内に存在する場合、このリンクの宛先スイッチを選択し、本プロセスを繰り返す。このリンクがトポロジ内に存在しない場合、このリンクがエンドポイントにつながるものと判断し、エンドポイントが現在のスイッチに接続されていると推定する。
【００３８】
（Ｂ）ルールのアクションが出力ポート（ｏｕｔｐｏｒｔ）に対する転送ではない場合、宛先としてのエンドポイントＩＰに合致するルールを有する、トポロジ内の別のスイッチを選択する。
【００３９】
次に、本原理の一実施形態によるネットワークルーティングの計算について説明する。
【００４０】
任意の２つのスイッチである２７１と２７５間で想定されるパスを特定するため、各ネットワークスイッチに対し、ポーリングを行ってフローテーブルにインストールされた転送ルールを要求する。このとき任意の２つの「ネットワーク」ポイントからトラフィックが通過する可能性がある全てのパスを考慮する。アプリケーション情報がある場合（例えば、特定のアプリケーションで使用するパスを監視したい場合）、送信元及び送信先ＩＰアドレス、並びにポート番号を考慮することで、可能性のある一連のパスから対象を絞り込むことができる。
【００４１】
次に、本原理の一実施形態によるルール挿入３１２について説明する。
【００４２】
ルール挿入３１２は、監視対象となるパス２６６に監視ルールを挿入する。監視ルールは２つの重要な特徴を備えるべきである。すなわち、特異であり（ｓｐｅｃｉｆｉｃ）非侵入型（ｎｏｎ−ｉｎｔｒｕｓｉｖｅ）であることである。第１に、監視ルールは、フローテーブル内の既存のルール群でカバーされない、フロースペースの特定パーツをカバーすべきである。これが不可能な場合（すなわち、フローテーブル内のルールが想定される全てのフローをカバーしている場合）、監視ルールは、そのスイッチ上に存在する他のどのルールよりも特異性が高くなるべきであり、同じパーツをカバーすることになる。ルールの特異性を確実に、かつ可能な限り高める１つの方法は、マッチフィールドにワイルドカードを含めないことである。第２に、各監視ルールは、パス上の次のスイッチにトラフィックを転送すべきである（すなわち、ネットワークのルーティングを変更してはならない）。唯一の例外は、パス２６６上の最初のスイッチ２７１と最後のスイッチ２７５にインストールされたルールであり、これらのルールでは、さらにルールに合致するパケットのコピーをＰａｃｋｅｔＩｎメッセージ内にカプセル化して、コントローラ２８５に送信すべきである。この動作はルールに２つのアクション（例えば「出力ポートに送信」及び「コントローラに送信」）を追加することで可能になる。
【００４３】
次に、本原理の一実施形態によるプローブ生成３１３について説明する。
【００４４】
この手順は、ルール挿入３１２によって挿入された個別の監視ルールと合致するプローブ２２１を生成する。各プローブは、パス上の最初のスイッチ２７１及び最後のスイッチ２７５において、ＰａｃｋｅｔＩｎメッセージをトリガする。オペレータは、ネットワークにまたがる分散協調を必要とすることなく、ＰａｃｋｅｔＩｎメッセージのタイムスタンプを用いて、両スイッチ間のレイテンシをコントローラ２８５で推定する。オペレータは、プローブ２２１の到着分布、速度及びサイズを変えることができる。データパス上にプローブ２２１を挿入する際には、２つの同等な選択肢がある。
【００４５】
次に、本原理の一実施形態による、プローブ生成３１３に含まれる手順、すなわちデータプレーンアクセス３１３Ａについて説明する。
【００４６】
コントローラ２８５がデータパスに接続されている場合、単にデータプレーンに接続されているインターフェースを用いてプローブ２２１を送信すればよい。この方法は、データプレーンに直接アクセスするため、プローブ２２１の送信に要するスイッチ処理が少なくて済むという利点があるが、監視対象となるパス上の最初のスイッチ２７１がデータプレーン上のコントローラ２８５に接続されていない場合、プローブ２２１がネットワークの追加パーツを横断することがある。
【００４７】
次に、本原理の一実施形態による、プローブ生成３１３に含まれるもう１つの手順、すなわちＰａｃｋｅｔＯｕｔカプセル化３１３Ｂについて説明する。
【００４８】
コントローラ２８５がデータプレーンに接続されていない場合、コントローラは、各プローブをＰａｃｋｅｔＯｕｔ  ＯｐｅｎＦｌｏｗメッセージ内にカプセル化し、監視対象パス内の最初のスイッチ２７１に対し、このメッセージを送信するよう依頼する。ＰａｃｋｅｔＯｕｔカプセル化３１３Ｂは、パケットをスイッチの制御プレーンからデータプレーンに変換する際に追加のスイッチ処理を発生させるが、監視対象パス上に無いスイッチを通過してトラフィックを送る必要がないため、追加的なネットワーク利用を発生させない。
【００４９】
次に、本原理の一実施形態による推定３２０について説明する。
【００５０】
推定３２０は、２つのネットワークスイッチ２７１と２７５の間のレイテンシを、これらのスイッチ２７１及び２７５が同じデータパケットでトリガするＰａｃｋｅｔＩｎメッセージのタイムスタンプに基づいて推定する。推定は、制御パケットをキャプチャし（すなわち、トラフィックリスニング３２１）、これらのパケットのタイムスタンプを集めてパスのレイテンシ分布を生成する（すなわち、レイテンシ計算３２２）方法を含む。
【００５１】
次に、本原理の一実施形態によるトラフィックリスニング３２１について説明する。
【００５２】
トラフィックリスニング３２１は、スイッチによってコントローラ２８５に送信された制御トラフィックをキャプチャする。各制御パケットはキャプチャ時のタイムスタンプを受信する。トラフィックリスニング３２１は、ＰａｃｋｅｔＩｎ以外の全てのメッセージをフィルタリングにより除去する。次に、トラフィックリスニング３２１は、各ＰａｃｋｅｔＩｎメッセージをそのメッセージをトリガしたデータパケットと関連付ける。ＰａｃｋｅｔＩｎメッセージは、通常、少なくとも、そのメッセージを生成したデータパケットのヘッダをカプセル化しているため、この動作は容易である。
【００５３】
次に、本原理の一実施形態によるレイテンシ計算３２２について説明する。
【００５４】
レイテンシ計算３２２は、一連のタプル（ｐａｃｋｅｔＩＤ、ｓｗｉｔｃｈＩＤ、タイムスタンプ）を受信する。ｐａｃｋｅｔＩＤは、各データパケットを一意に識別するためのものである（ｐａｃｋｅｔＩＤは、例えばインターネットプロトコルＩＤ（ＩＰＩＤ）、インターネットコントロールメッセージプロトコル（ＩＣＭＰ）ＩＤ、またはパケットコンテンツのハッシュでもよい）。ｓｗｉｔｃｈＩＤは、ＰａｃｋｅｔＩｎを送信したスイッチを識別するためのＩＤである。トラフィックリスニングモジュールから受信した一連のタプル内で、単一のパケットｉｄは、そのパケットが通過したパス上でＰａｃｋｅｔＩｎをトリガするスイッチと同じ数だけ現れるはずである。２つのスイッチ間のレイテンシを計算するには、これらスイッチＩＤ及び固有のパケットＩＤと関連付けられた２つのタイムスタンプを単に減算すればよい。最後のスイッチからのＰａｃｋｅｔＩｎのタイムスタンプが、最初のスイッチからのＰａｃｋｅｔＩｎのタイムスタンプより前である場合は、該測定値を廃棄する。
【００５５】
上述のレイテンシ計算手順３２２は、コントローラ２８５とパス上の最初のスイッチとの間のレイテンシが、コントローラ２８５とパス上の最後のスイッチとの間のレイテンシと同じであると仮定している。実際にはそうとは限らず、異なるスイッチからのＰａｃｋｅｔＩｎメッセージがコントローラ２８５に到達するまでに要する時間は、それぞれ異なる可能性がある。そこで、ＥｃｈｏＲｅｑｕｅｓｔ  ＯｐｅｎＦｌｏｗメッセージを定期的に送信し、ＥｃｈｏＲｅｐｌｙが返ってくるまでの時間を測定することで、各スイッチまでの制御チャネルのレイテンシを継続的に監視する。制御チャネルから最初のスイッチまでと、制御チャネルから最後のスイッチまでとの間で、レイテンシに差異が認められる場合、推定されたレイテンシを制御チャネルのレイテンシにおける差異に応じて調整する。
【００５６】
方法３００は、その全体が従来技術と本質的に異なるが、ルール挿入３１２、プローブ生成３１３及びレイテンシ計算３２２は、特に多くの理由で従来技術と異なっている。注目すべきは、これらの手順３１２、３１３及び３３２が、ＯｐｅｎＦｌｏｗネットワークにおける任意の２つのネットワーク「ポイント」（サーバまたはスイッチ）間のレイテンシ分布を測定するという点である。既存の方法は、サーバからのレイテンシは監視できるが（例えば、ＩＣＭＰリクエスト）、サーバへのアクセスがオペレータに限られるか（例えば、コロケーションセンタ）、あるいは制約を受ける（例えば、ほとんどのサーバリソースがバーチャルマシン（ＶＭ）に割り当てられている）場合に限定される。ネットワークベースの技術（例えば、エンドホストへのアクセスが不要な技術）も存在するが、（別々のスイッチでキャプチャされたＮｅｔＦｌｏｗ情報をオペレータが関連付けなければならないという点において）ネットワーク全体にまたがる協調動作が必要になり、困難が伴う上、Ｒｅｆｅｒｅｎｃｅ  Ｌａｔｅｎｃｙ  Ｉｎｔｅｒｐｏｌａｔｉｏｎ（ＲＬＩ）またはＬｏｓｓｙ  Ｄｉｆｆｅｒｅｎｃｅ  Ａｇｇｒｅｇａｔｏｒ（ＬＤＡ）を採用する場合は、スイッチアーキテクチャを変更する必要がある。本原理で提供される解決方法は、（コントローラ２８５における）局所的な協調動作を必要とするが、ネットワーク装置の変更は必要ない。
【００５７】
図４は、本原理の一実施形態による、ソフトウェア定義ネットワークにおいてデフォルトルーティングパスのパスレイテンシを計算する別の方法４００の一例を示す。ソフトウェア定義ネットワーク２９９は、最初のスイッチ２７１と、最後のスイッチ２７５と、これらのスイッチ間にある中間スイッチ２７２、２７３及び２７４とを含む、スイッチ２７１〜２７５を備えている。デフォルトルーティングパス２６６は、最初のスイッチ２７１と最後のスイッチ２７５との間に存在する。方法４００は、方法３００に基づくが、フローチャートでさらに詳細に示す。
【００５８】
ステップ４１０において、ルールジェネレータ２１０は、各スイッチに格納されたパケット転送ルールからデフォルトルーティングパスを決定する。
【００５９】
ステップ４２０において、ルールジェネレータ２１０は、各スイッチに少なくとも１つの個別のフロー監視ルールを挿入し、各スイッチに対し、受信したルール合致パケットを該パス上の次のスイッチへ転送するよう命令し、さらに最初のスイッチ及び最後のスイッチに対し、コントローラにＰａｃｋｅｔＩｎメッセージを送信するよう命令する。
【００６０】
ステップ４３０において、プローブジェネレータは、各スイッチに、これらのスイッチのうち同じスイッチにおける少なくとも１つの個別のフロー監視ルールと合致する、少なくとも１つの個別のフロー監視プローブを挿入し、この同じスイッチにおける少なくとも１つの個別のフロー監視ルールで指定された命令を、該スイッチで受信するルール合致パケットの該スイッチへの到着に応答して開始する。
【００６１】
ステップ４４０において、トラフィックリスナ２３０は、ＰａｃｋｅｔＩｎメッセージにタイムスタンプを付与してＰａｃｋｅｔＩｎタイムスタンプを生成する。
【００６２】
ステップ４５０において、レイテンシエスティメータ２４０は、ＰａｃｋｅｔＩｎタイムスタンプを集めてＰａｃｋｅｔＩｎタイムスタンプの集合を取得する。
【００６３】
ステップ４６０において、レイテンシエスティメータ２４０は、ＰａｃｋｅｔＩｎタイムスタンプの集合からパスレイテンシを推定する。
【００６４】
本明細書に記載した実施形態は、ハードウェアで実現してもよく、ソフトウェアで実現してもよく、ハードウェアとソフトウェアの両方の要素を含んでいてもよい。好ましい実施形態では、本発明は、ファームウェア、常駐ソフトウェア、マイクロコード等を含むが、これらに限定されないソフトウェアにおいても実現可能である。
【００６５】
実施形態には、コンピュータもしくは任意の命令実行システムによって使用される、または関連して使用されるプログラムコードを提供する、コンピュータで利用可能な、またはコンピュータで読み取り可能な媒体からアクセスできる、コンピュータプログラム製品が含まれてもよい。コンピュータで利用可能な、またはコンピュータで読み取り可能な媒体には、命令実行システム、装置、もしくはデバイスによって使用されるか、または関連して使用されるプログラムを格納、伝達、伝搬または転送する任意の装置が含まれてもよい。該媒体は、磁気、光学、電子、電磁気、赤外線、または半導体システム（または装置もしくはデバイス）、あるいは伝搬媒体であってよい。該媒体には、半導体または固体メモリ、磁気テープ、取り外し可能なコンピュータディスケット、ランダムアクセスメモリ（ＲＡＭ）、リードオンリーメモリ（ＲＯＭ）、リジッド磁気ディスク及び光ディスク等のコンピュータで読み取り可能な媒体を含むことができる。
【００６６】
例えば、「Ａ／Ｂ」、「Ａ及び／またはＢ」、並びに「Ａ及びＢのうちの少なくとも１つ」の場合における「／」、「及び／または」、並びに「うちの少なくとも１つ」のうちのいずれかの使用は、１番目に挙げた選択肢（Ａ）のみの選択、２番目に挙げた選択肢（Ｂ）のみの選択、または両方の選択肢（Ａ及びＢ）の選択を含むことを意図したものと理解すべきである。さらに例を挙げれば、「Ａ、Ｂ及び／またはＣ」、並びに「Ａ、Ｂ及びＣのうちの少なくとも１つ」の場合、このような表現法は、１番目に挙げた選択肢（Ａ）のみの選択、２番目に挙げた選択肢（Ｂ）のみの選択、３番目に挙げた選択肢（Ｃ）のみの選択、１番目及び２番目に挙げた選択肢（Ａ及びＢ）のみの選択、１番目及び３番目に挙げた選択肢（Ａ及びＣ）のみの選択、２番目及び３番目に挙げた選択肢（Ｂ及びＣ）のみの選択、または３つの選択肢全て（Ａ及びＢ及びＣ）の選択を含むことを意図したものである。上述の例は、当業者に容易に明らかとなるように、列挙される多数の項目に応じて拡大適用される。
【００６７】
以上、システム及び方法の（限定ではなく例示として意図された）好ましい実施形態について説明したが、当業者であれば上述の教示を踏まえて修正及び変更を行えるという点に着目すべきである。したがって、開示された特定の実施形態において、添付の特許請求の範囲に示された本発明の範囲及び精神の範囲内で変更することが可能と理解すべきである。
【００６８】
以上、特許法によって要求される詳細と特異性を示しながら本発明の態様について説明したが、特許証によって権利を主張し保護されることを要望する範囲は、添付の特許請求の範囲に記載のとおりである。
【図１】
2018088716.tif 000003
【図２】
2018088716.tif 000004
【図３】
2018088716.tif 000005
【図４】
2018088716.tif 000006