(57)【要約】  一実施態様では、アプリケーションアウェアネットワーク制御システムが、ネットワークフローがインスタンス化されたと判断し、ネットワークフローがインスタンス化されたと判断するのに応答して、ネットワークフローに関連付けられるネットワークフロー特徴を導出し、ネットワークフロー特徴をアプリケーション識別モジュールに与える。アプリケーション識別信号に応答して、アプリケーションアウェアネットワーク制御システムは、ネットワークフロー特徴を導出するのを中止し、アプリケーション識別モジュールから受信されたアプリケーション識別報告に基づいて、ネットワークフローにフロー動作を適用する。【選択図】図１
2016528630.tif 000002
【特許請求の範囲】
【請求項１】
命令を表すコードを記憶するプロセッサ可読媒体であって、該命令は、プロセッサにおいて実行されるときに、該プロセッサに対し、
ネットワークフローがインスタンス化されたと判断させ、
前記ネットワークフローがインスタンス化されたと判断するのに応答して、前記ネットワークフローに関連付けられるネットワークフロー特徴を導出させ、
前記ネットワークフロー特徴をアプリケーション識別モジュールに与えさせ、
アプリケーション識別信号に応答して、前記アプリケーション識別モジュールに前記ネットワークフロー特徴を与えるのを中止させ、
前記アプリケーション識別モジュールから受信されたアプリケーション識別報告に基づいて前記ネットワークフローにフロー動作を適用させる、
プロセッサ可読媒体。
【請求項２】
命令を表すコードを更に記憶し、該命令は、前記プロセッサにおいて実行されるときに、該プロセッサに対し、
アプリケーション識別エージェントからアプリケーション識別子を受信させ、
前記アプリケーション識別モジュールにアプリケーション分類器を与えるために、前記アプリケーション識別モジュールと通信する分類器トレーニングモジュールに前記アプリケーション識別子を与えさせる、請求項１に記載のプロセッサ可読媒体。
【請求項３】
前記アプリケーション識別信号は、前記ネットワークフロー内の所定の数のデータパケットの送信に応答して生成され、
前記ネットワークフロー特徴は、前記所定の数のデータパケットから導出される、請求項１に記載のプロセッサ可読媒体。
【請求項４】
命令を表すコードを更に記憶し、該命令は、前記プロセッサにおいて実行されるときに、該プロセッサに対し、
前記アプリケーション識別モジュールから前記アプリケーション識別信号を受信させる、請求項１に記載のプロセッサ可読媒体。
【請求項５】
前記アプリケーション識別報告は精緻なアプリケーション識別報告であり、前記フロー動作は第２のフロー動作であり、前記プロセッサ可読媒体は命令を表すコードを更に記憶し、該命令は、前記プロセッサにおいて実行されるときに、該プロセッサに対し、
一度目に、前記アプリケーション識別モジュールから予備アプリケーション識別報告を受信させ、
前記予備アプリケーション識別報告に基づいて前記ネットワークフローに第１のフロー動作を適用させ、
前記一度目の後の二度目に、前記アプリケーション識別モジュールから前記精緻なアプリケーション識別報告を受信させ、前記第２のフロー動作は前記精緻なアプリケーション識別報告に基づくものである、請求項１に記載のプロセッサ可読媒体。
【請求項６】
命令を表すコードを更に記憶し、該命令は、前記プロセッサにおいて実行されるときに、該プロセッサに対し、
前記アプリケーション識別モジュール又はポリシーストアのうちの１つから前記フロー動作のフロー動作識別子にアクセスさせる、請求項１に記載のプロセッサ可読媒体。
【請求項７】
第１の複数のネットワークフローを選択するステップであって、前記複数のネットワークフローからの各ネットワークフローは新たにインスタンス化されたネットワークフローである、選択するステップと、
前記第１の複数のネットワークフローからの各ネットワークフローについて、アプリケーション識別子が入手可能であることを判断するステップと、
前記第１の複数のネットワークフローからの各ネットワークフローについて、かつ第２の複数のネットワークフローからの各ネットワークフローについて、ネットワークフロー特徴を導出するステップと、
前記第１の複数のネットワークフローからの各ネットワークフローについての前記ネットワークフロー特徴及び前記アプリケーション識別子を分類器トレーニングモジュールに与えるステップと、
前記第２の複数のネットワークフローからの各ネットワークフローについての前記ネットワークフロー特徴をアプリケーション識別モジュールに与えるステップと、
前記ネットワークフローについてのアプリケーション識別信号に応答して、前記第１の複数のネットワークフロー及び前記第２の複数のネットワークフローからの各ネットワークフローについての前記ネットワークフロー特徴を前記与えることを中止するステップと
を含んでなる、アプリケーションアウェアネットワーク管理方法。
【請求項８】
前記選択するステップは、ランダムに選択すること、又は適応的に選択することである、請求項７に記載のアプリケーションアウェアネットワーク管理方法。
【請求項９】
前記アプリケーション識別モジュールから、前記第２の複数のネットワークフローからのネットワークフローに関連付けられるアプリケーション識別報告を受信するステップと、
前記アプリケーション識別報告に関連付けられる前記第２の複数のネットワークフローからのネットワークフローにフロー動作を適用するステップと
を更に含む、請求項７に記載のアプリケーションアウェアネットワーク管理方法。
【請求項１０】
第１の複数のネットワークフローのインスタンス化を検出する検出モジュールであって、該第１の複数のネットワークフローは、第２の複数のネットワークフローと第３の複数のネットワークフローとを含む、検出モジュールと、
前記第１の複数のネットワークフローから前記第２の複数のネットワークフローを選択する選択モジュールと、
複数のアプリケーション識別子を受信し、該複数のアプリケーション識別子を分類器トレーニングモジュールに与える収集モジュールであって、前記複数のアプリケーション識別子からの各アプリケーション識別子は前記第２の複数のネットワークフローからの１つのネットワークフローに関連付けられる、収集モジュールと、
前記第１の複数のネットワークフローからの各ネットワークフローについてのネットワークフロー特徴を導出し、前記第２の複数のネットワークフローからの各ネットワークフローについての前記ネットワークフロー特徴を前記分類器トレーニングモジュールに与え、前記ネットワークフローに関連付けられるアプリケーション識別信号に応答して、前記第１の複数のネットワークフローからの各ネットワークフローについての前記ネットワークフロー特徴を導出するのを中止する特徴抽出モジュールと、
アプリケーション識別モジュールから受信されたアプリケーション識別報告に基づいて、前記第３の複数のネットワークフローからの各ネットワークフローにフロー動作を適用する動作モジュールと
を備えてなる、アプリケーションアウェアネットワーク制御システム。
【請求項１１】
前記選択モジュールは前記第１の複数のネットワークフローから前記第２の複数のネットワークフローをランダムに選択する、請求項１０に記載のアプリケーションアウェアネットワーク制御システム。
【請求項１２】
前記選択モジュールは前記第１の複数のネットワークフローから前記第２の複数のネットワークフローを適応的に選択する、請求項１０に記載のアプリケーションアウェアネットワーク制御システム。
【請求項１３】
前記分類器トレーニングモジュールを更に備え、該分類器トレーニングモジュールは、前記複数のアプリケーション識別子と、前記複数のネットワークフローについての前記ネットワークフロー特徴とに基づいてアプリケーション分類器を生成し、該アプリケーション分類器を前記アプリケーション識別モジュールに与える、請求項１０に記載のアプリケーションアウェアネットワークシステム。
【請求項１４】
前記特徴抽出モジュールは、前記第３の複数のネットワークフローからの各ネットワークフローについてのネットワークフロー特徴を導出し、該第３の複数のネットワークフローについての前記ネットワークフロー特徴を前記アプリケーション識別モジュールに与え、
該システムは、前記アプリケーション識別モジュールを更に備え、該アプリケーション識別モジュールは、前記分類器トレーニングモジュールからアプリケーション分類器を受信し、前記第３の複数のネットワークフローについての前記ネットワークフロー特徴に該アプリケーション分類器を適用することによって、前記第３の複数のネットワークフローに関連付けられるアプリケーションを識別し、前記アプリケーション識別報告を生成する、請求項１０に記載のアプリケーションアウェアネットワーク制御システム。
【請求項１５】
アプリケーション識別子が複数のアプリケーション識別エージェントから受信され、前記複数のアプリケーション識別エージェントからの各アプリケーション識別エージェントは、ネットワークホストにホストされ、前記ネットワークホストにホストされるアプリケーションからのネットワークフロー要求に応答して、アプリケーション識別子を与える、請求項１０に記載のアプリケーションアウェアネットワーク制御システム。
【発明の詳細な説明】
【背景技術】
【０００１】
幾つかのネットワーク管理システム（例えば、ネットワークデバイス及び／又はネットワークデバイスにホストされるソフトウェア）は、アプリケーションが通信する際に経由するネットワーク接続の静的特性に基づいてアプリケーションアウェアネットワーク管理（又は能力）を提供しようと試みる。例えば、幾つかのネットワーク管理システムは、ポート番号、インターネットプロトコル（ＩＰ）アドレス、ドメイン名又はそれらの組み合わせを識別することによって、ネットワークを介して通信しているアプリケーションのアイデンティティ（identity）を求める。
【０００２】
他のネットワーク管理システムは、エンドユーザデバイス上のアプリケーションが自らに付けることができる、データパケット内に含まれるサービス品質（ＱｏＳ：quality of service）値を尊重又は考慮する。そのようなネットワーク管理システムは、アプリケーションのアイデンティティを求めるためにアプリケーションによって与えられるＱｏＳ情報を暗黙的に信用する。更に他のネットワーク管理システムは、アプリケーションを識別するためにディープパケットインスペクション（ＤＰＩ：deep packet inspection）に頼る。１つ又は複数のアプリケーションのアイデンティティを求めた後に、そのようなネットワーク管理システムは、アプリケーションのアイデンティティに基づいて、ネットワークをプロビジョニングする（例えば、ネットワークのサービス品質（ＱｏＳ）パラメータ又はファイアウォールパラメータ等のパラメータを変更する）。
【図面の簡単な説明】
【０００３】
【図１】一実施態様による、通信ネットワーク及びアプリケーションアウェアネットワーク制御システムを含む環境の概略的なブロック図である。
【図２】一実施態様による、アプリケーションアウェアネットワーク管理プロセスの流れ図である。
【図３】一実施態様による、ネットワークコントローラとネットワークデバイスとの間の通信フローを例示するタイミング図である。
【図４】別の実施態様による、アプリケーションアウェアネットワーク管理プロセスの流れ図である。
【図５】一実施態様による、アプリケーションアウェアネットワーク制御システムをホストするネットワークデバイスの概略的なブロック図である。
【発明を実施するための形態】
【０００４】
アプリケーションアウェアネス（application awareness）を提供するために（すなわち、ネットワーク接続を介して通信しているアプリケーションを識別するために）ネットワーク接続の静的特性に頼るネットワーク管理システム（例えば、ネットワークデバイス及び／又はネットワークデバイスにホストされるソフトウェア）は多くの場合に、種々の理由のために、アプリケーションのアイデンティティを正確に求めることができない。例えば、多くのアプリケーションが、そのアプリケーションが通信する際に経由するネットワーク接続のセッションごとの特性（例えば、アプリケーションポート番号）を動的にネゴシエートする。言い換えると、そのようなアプリケーションが頼るネットワーク接続の特性は、あらかじめ規定されない。したがって、ネットワーク管理システムは、アプリケーションを識別するために、ネットワーク接続の静的に規定された特性に頼ることはできない。
【０００５】
さらに、多くのアプリケーションは、これらの静的特性を共有するネットワーク接続を介して通信する。例えば、一群のボイスオーバインターネットプロトコル（ＶｏＩＰ：Voice over Internet Protocol）アプリケーションがそれぞれ、共通のポート番号を用いてネットワーク接続を介して通信することができる。したがって、これらのアプリケーションは、それらのネットワーク接続のこの特性によって個々に識別することはできない。別の例として、多くの異なるアプリケーション及び異なるクラスのアプリケーションは、ハイパーテキスト転送プロトコル（ＨＴＴＰ：Hypertext Transfer Protocol）又はハイパーテキスト転送プロトコルセキュア（ＨＴＴＰＳ：Hypertext Transfer Protocol Secure）を用いてデータをトランスポートする。結果として、これらのアプリケーションのネットワーク接続のデータパケットヘッダに含まれるセッションごとの特性の多く又は全てが同じである。これらのネットワーク接続のセッションごとの特性は多くのアプリケーションにわたって共有されるので、そのようなネットワーク管理システムは、静的特性に基づいてこれらのアプリケーションのアイデンティティを求めることはできない。
【０００６】
さらに、アプリケーション（例えば、ネットワークを介して通信するエンドユーザデバイス又は他のデバイスにホストされるアプリケーション）によって提供される識別情報に頼るネットワーク管理システムは、アプリケーションからの誤った情報に対して脆弱である。例えば、アプリケーションがそのようなネットワーク管理システムに、意図的ではないながらも有利になるように（例えば、そのアプリケーションに対する向上したサービス品質（ＱｏＳ）、付加的なスループット又は冗長な通信リンク）、ネットワークをプロビジョニングさせることが望ましいサービスクラスを要求又は識別することによって、より優先順位が高い他のアプリケーションになりすます可能性がある。そのようなネットワーク管理システムは、アプリケーションによって提供される識別情報を暗黙的に信用するので、これらのネットワーク管理システムは、アプリケーションによって提供される誤った情報に基づいてネットワークをプロビジョニングし、結果として、ネットワーク内で、ネットワーク設計者又は管理者によって意図されないリソースが割り当てられる可能性がある。
【０００７】
ディープパケットインスペクション（ＤＰＩ：deep packet inspection）は、アプリケーションによって交換されるデータを解析することによって正確なアプリケーション識別を提供することができるが、高い計算コストがかかり、拡張するのが難しく、終端間で暗号化されたトラフィック（例えば、仮想プライベートネットワーク（ＶＰＮ：virtual private network）、ハイパーテキスト転送プロトコルセキュア（ＨＴＴＰＳ）通信、及びセキュアリアルタイムプロトコル（ＳＲＴＰ：secure real-time protocol）通信）とともに用いるだけの信頼性がない。結果として、ＤＰＩは通常、ネットワーク接続からのデータが解析のためにミラーリング又は転送されるハイエンドネットワーク機器又は専用コンピューティングシステムにおいて実行される。
【０００８】
本明細書において論じられる実施態様は、アプリケーションアウェアネットワーク管理のために通信ネットワーク内で効率的なアプリケーション識別を容易にするシステム及び方法を記述する。例えば、本明細書において論じられる実施態様は、ネットワークの制御プレーン内で、アプリケーション識別エージェントによって提供されるアプリケーション識別子を用いてアプリケーション分類器を生成し、ネットワークフローのためのネットワークフロー特徴を導出し、それらのアプリケーション分類器をネットワークフロー特徴に適用して、通信ネットワーク内でそのネットワークフローを介して通信しているアプリケーションのアイデンティティを求めるネットワークデバイスを含む。さらに、本明細書において論じられる幾つかの実施態様は、アプリケーションシグネチャを維持管理するために人手による労力を必要としないように、アプリケーションアウェアネットワーク管理を実行する。そして、ネットワークデバイスは、アプリケーションのアイデンティティに基づいてネットワークフローに対して動作を適用し、アプリケーションプログラミングインターフェース（ＡＰＩ）等のインターフェースを介してアプリケーションのアイデンティティについての情報を他のネットワークデバイス又はネットワークコントローラに提供し（又は他のネットワークデバイス又はネットワークコントローラが利用できるようにし）、及び／又は通信ネットワークを管理するためにアプリケーションのアイデンティティを他の形で利用することができる。そのようなシステム及び方法は、アプリケーションのアイデンティティに基づいてネットワーク管理を実行する（例えば、動作を適用する）ので、アプリケーションアウェア（application-aware）と呼ぶことができる。
【０００９】
さらに、本明細書において論じられる幾つかの実施態様は、プログラマブルネットワーク又はソフトウェア定義ネットワーク（ＳＤＮ：software-defined network）内で有利に適用することができる。そのような実施態様では、ネットワークフローがいかに取り扱われるかについての決定又は情報収集に関連する機能（すなわち、制御プレーン）は、ネットワークフロー内のデータの交換（すなわち、データプレーン）から分離されるか、又は切り離される。結果として、本明細書において論じられる方法は、ＳＤＮ内の種々のネットワークデバイスに対して適用することができる。
【００１０】
具体例として、ＳＤＮは、制御プレーン内に、ネットワークフローの転送に関してネットワークデバイスに命令を与えるコントローラ（又はネットワークコントローラ又は一群のコントローラ）を含むことができる。これらのネットワークデバイスのうちの幾つかは、ネットワークフローに関連付けられるアプリケーションを識別するアプリケーション識別モジュールをホストすることができる。そのようなネットワークデバイスは、コントローラからアプリケーション分類器を受信し、ネットワークフローに関連付けられるアプリケーションを識別するアプリケーション識別モジュール内で、これらのアプリケーション分類器を適用することができる。ネットワークデバイスの中には、アプリケーション識別モジュールをホストしない場合があるネットワークデバイスもある。そのようなネットワークデバイスは、コントローラ（又は何らかの他のネットワークデバイス又は制御プレーン内のサービス）に、ネットワークフロー又はそのネットワークフロー特徴を転送することができ、ネットワークコントローラは、ネットワークフローに関連付けられるアプリケーションを識別するアプリケーション識別モジュール内でこれらのアプリケーション分類器を適用することができる。
【００１１】
コントローラがアプリケーション識別モジュールをホストすることができるネットワークデバイスにアプリケーション分類器を与え、アプリケーション識別モジュールをホストすることができないネットワークデバイスのネットワークフローを分類するので、アプリケーションはＳＤＮにわたって一貫して識別することができる。さらに、コントローラは、ＳＤＮにわたってポリシーを広めることができるか、又はアクセス可能にすることができる。そのようなポリシーは、特定のアプリケーションに関連付けられるネットワークフローに（ネットワークデバイスにおいて、又はネットワークデバイスによって）適用されるべき動作を規定することができ、ＳＤＮ内で一貫して適用することができる。さらに、種々のヘテロジニアスネットワークデバイスを横切るネットワークフローを分類することができる（すなわち、それらのネットワークフローに関連付けられるアプリケーションを識別することができる）。すなわち、アプリケーション識別モジュールをホストするのをサポートしないネットワークデバイスの場合、ネットワークフローは、アプリケーション識別モジュールをホストするのをサポートするネットワークデバイスにおいて、又は制御プレーン内で（例えば、制御プレーン内のコントローラ又は別のネットワークデバイス又はサービスにおいて）分類することができる。
【００１２】
ＳＤＮ内の本明細書において論じられる実施態様の更に別の例として、ネットワークフローに関連付けられるアプリケーションに関するグラウンドトゥルースデータ（例えば、特定のネットワークフローに関連付けられるアプリケーション識別エージェントによって提供されるアプリケーション識別子）をＳＤＮの種々の部分又はセグメントからの種々のアプリケーション識別エージェントから受信することができる。すなわち、ネットワークデバイスは、そのようなグラウンドトゥルースをコントローラに与えることができ、コントローラは、そのようなグラウンドトゥルースに基づいて、アプリケーション分類器を、ＳＤＮを介してネットワークデバイスに与えることができる。したがって、グラウンドトゥルースデータは、個々のネットワークデバイス、ネットワークデバイスの小さなグループ、又はＳＤＮの限られた部分若しくはセグメントではなく、ＳＤＮ全体にわたって広範に適用することができる。さらに、ＳＤＮ内で、コントローラは他のＳＤＮ内のコントローラにグラウンドトゥルースデータを与えることができる。その結果として、グラウンドトゥルースは、アプリケーション識別エージェントを全く備えないデバイスのみを含む個々の論理、仮想化又は物理通信ネットワークを含む、任意のＳＤＮ及び任意のデバイスにわたって広範に、かつ一貫して適用することができる。
【００１３】
図１は、一実施態様による、通信ネットワーク及びアプリケーションアウェアネットワーク制御システムを含む環境の概略的なブロック図である。図１に示される環境１００は、アプリケーションアウェアネットワーク制御システム１１０と、（複数の場合もある）分類器トレーニングモジュール１２０と、（複数の場合もある）アプリケーション識別モジュール１３０と、エージェント１４１及び１４２と、通信ネットワーク１６０と、ネットワークサービス１９１及び１９２とを含む。アプリケーションアウェアネットワーク制御システム１１０は、通信ネットワーク１６０のネットワークフローを介して通信しているアプリケーションを識別するのを容易にするシステムである。
【００１４】
図１に示されるように、アプリケーションアウェアネットワーク制御システム１１０は、アプリケーションアウェアネットワーク制御システム１１０の種々の機能を実行する一群のモジュールを含む。本明細書において用いられるときに、「モジュール」という用語は、ハードウェア（例えば、集積回路若しくは他の回路類等のプロセッサ又はプロセッサ可読媒体）と、ソフトウェア（例えば、機械若しくはプログラム実行可能命令、コマンド、又はファームウェア、プログラミング若しくはオブジェクトコード等のコード）との組み合わせを指している。ハードウェア及びソフトウェアの組み合わせは、ハードウェアのみ（すなわち、ＡＳＩＣ等の、ソフトウェア要素を備えないハードウェア要素）、ハードウェアにホストされるソフトウェア（例えば、ＲＡＭ、ハードディスク若しくはソリッドステートドライブ、抵抗変化メモリ、又はＤＶＤ等の光学媒体等のメモリに記憶され、及び／又はプロセッサにおいて実行若しくは解釈されるソフトウェア）、又はハードウェア及びハードウェアにホストされるソフトウェアを含む。
【００１５】
検出モジュール１１１は、通信ネットワーク内のネットワークフローのインスタンス化を検出するハードウェア及びソフトウェアの組み合わせである。ネットワークフローは、通信ネットワークを横切るか、又は通信ネットワークを通して交換若しくは送信される関連するデータの集まりである。例えば、ネットワークフローは、一群の関連するデータパケットとすることができる。より具体的な例として、ネットワークフローは、特定のポート番号を有するトランスポート制御プロトコル（ＴＣＰ：Transport Control Protocol）接続、２つのインターネットプロトコル（ＩＰ：Internet Protocol）アドレス間で交換される一群のユニバーサルデータグラムプロトコルデータパケット若しくはメッセージ、特定の媒体アクセス制御（ＭＡＣ：Media Access Control）アドレス若しくはＩＰアドレスからの、若しくはそれらへの全てのデータパケット、共通の（すなわち、同じ）仮想ローカルエリアネットワーク（ＶＬＡＮ：Virtual Local Area Network）タグ（すなわち、識別子）を有するデータパケット、又は共通のネットワークデバイス（例えば、スイッチ）物理ポートから、若しくはそこへの全てのデータパケットとすることができる。
【００１６】
検出モジュール１１１は、新たなネットワークフローがインスタンス化された時点を判断するために、ネットワークデバイス（又はそこにホストされるソフトウェア）と通信するか、又はネットワークデバイスを監視する。例えば、検出モジュール１１１は、ネットワークデバイス内のテーブル（例えば、転送テーブル又はルーティングテーブル）にアクセスすることができるか、ネットワークデバイス（又はそこにホストされるソフトウェア）又はネットワークデバイスに関連付けられるネットワークコントローラから信号（又は通知）を受信することができるか、又はネットワークデバイスとネットワークコントローラとの間の通信を解釈して、ＴＣＰ接続等のネットワーク接続が要求又は確立されたことを判断することができる。
【００１７】
選択モジュール１１２は、検出モジュール１１１によって検出された新たに（又は最近になって）インスタンス化されたネットワークフローから、種々の方法に従ってアプリケーション分類器を生成するために用いられることになるネットワークフローを選択する。例えば、選択モジュール１１２は、検出モジュール１１１によって検出された新たにインスタンス化されたネットワークフローのうちのどのネットワークフローのためのアプリケーション識別子が入手可能であるか（例えば、後に更に詳細に論じられるように収集モジュール１１３によって受信されたか）を判断するために、収集モジュール１１３と通信することができ、それらのネットワークフローを選択することができる。幾つかの実施態様では、全てのそのようなネットワークフロー（すなわち、アプリケーション識別子が入手可能であるネットワークフロー）が選択モジュール１１２によって選択される。他の実施態様では、そのようなネットワークフローのサブセットが選択モジュール１１２によって選択される。したがって、幾つかの実施態様では、アプリケーション識別子が入手可能である全てのネットワークフローが選択モジュール１１２によって選択されるとは限らない。
【００１８】
一例として、幾つかの実施態様では、例えば、アプリケーションアウェアネットワーク制御システムの処理オーバーヘッドを削減するか、又は拡張性を高めるために、アプリケーション識別子が入手可能である新たにインスタンス化されたネットワークフローからのネットワークフローがランダムに選択される。本明細書において用いられるときに、「ランダムな」及び「ランダムに」という用語は、真にランダムなプロセス又は機構、及び擬似ランダムなプロセス又は機構の両方に当てはまる。したがって、アプリケーション識別子が入手可能である新たにインスタンス化されたネットワークフローからのネットワークフローは、例えば、擬似乱数発生器、真にランダムな入力、又はその組み合わせ（例えば、シード値として真にランダムな入力を用いる擬似乱数発生器）を用いて、ランダムに選択することができる。
【００１９】
別の例として、選択モジュール１１２は、どのネットワークフローが、アプリケーション識別エージェントをホストする特定のコンピューティングシステムによって（又は特定のアプリケーション識別エージェントをホストするコンピューティングシステムによって）要求又は開始されたかを判断するために収集モジュール１１３と通信することができ、それらのネットワークフローを選択することができる。言い換えると、選択モジュール１１２は、特定のコンピューティングシステム（又はそのコンピューティングシステムにホストされる特定のアプリケーション識別エージェント）を有するネットワークフローを、通信ネットワークを通しての通信の終点（又は終点のホスト）として選択することができる。
【００２０】
更に別の例として、選択モジュール１１２は、アプリケーション識別子が入手可能であるネットワークフローのための（又はそのネットワークフローに関連付けられる）アプリケーション識別子（例えば、アプリケーション名又はタイプ）を求めるために収集モジュール１１３と通信することができる。そして、選択モジュール１１２は、特定のアプリケーションに関連付けられる（例えば、その特定のアプリケーションへの、その特定のアプリケーションからの、又はその特定のアプリケーションを終点として有する）ネットワークフロー、又はその特定のアプリケーションに関連付けられるネットワークフローの一部若しくは一定の割合を選択することができる。すなわち、選択モジュール１１２は、特定のアプリケーションの種々のインスタンス（すなわち、１つ又は複数のコンピューティングシステムとしてホストされるアプリケーションのインスタンス）が通信する際に経由するネットワークフローの全て又は一部を選択することができる。アプリケーション（又はアプリケーションのインスタンス）が通信する際に経由するネットワークフローは、そのネットワークフローに向けられている又は関連付けられていると言うことができる。
【００２１】
さらに、幾つかの実施態様では、選択モジュール１１２は、種々の方法に従ってネットワークフローを適応的に選択することができる。例えば、選択モジュール１１２は、アプリケーション識別子が入手可能であるネットワークフローのためのアプリケーション識別子を求めるために収集モジュール１１３と通信することができ、どのアプリケーションの場合に、更なるトレーニングデータ（グラウンドトゥルースネットワークフロー特徴）がアプリケーション分類器を改善することになるかを判断するために（複数の場合もある）分類器トレーニングモジュール１２０等の分類器トレーニングモジュール（又は通信ネットワークの制御プレーン内の何らかの他のエンティティ）と通信することができる。
【００２２】
したがって、例えば、一度に、選択モジュール１１２は、分類器トレーニングモジュールからの入力に基づいて、特定のアプリケーションに関連付けられるネットワークフローの全て又は大部分を選択することができる。これは、分類器トレーニングモジュールが、特定のアプリケーションのための初期アプリケーション分類器を生成しようと試みているときに有用である可能性がある。後の時点で、選択モジュール１１２は、分類器トレーニングモジュールからの入力に基づいて、特定のアプリケーションに関連付けられるネットワークフローのごく一部又はわずかな部分を選択することができる。これは、分類器トレーニングモジュールがその特定のアプリケーションのための初期アプリケーション分類器を生成（又はトレーニング）した後に、（そのアプリケーションのためのネットワークフローのごく一部を用いて）修正アプリケーション分類器を生成しているときに、又はポリシーを満たすのに修正アプリケーション分類器を生成することが必要とされるか否かを判断するために初期アプリケーション分類器を検証しているときに有用な可能性がある。幾つかの実施態様では、分類器トレーニングモジュールが修正アプリケーション分類器（すなわち、初期の、又は以前に生成されたアプリケーション分類器に対して更新又は修正されたアプリケーション分類器）を生成することに決める場合には、分類器トレーニングモジュールは、その特定のアプリケーションに関連付けられるネットワークフローの全て又は大部分を選択モジュール１１２に再び選択させるための信号を、選択モジュール１１２に与えることができる。
【００２３】
他の実施態様では、選択モジュール１１２は、分類器トレーニングモジュールをホストする通信ネットワーク又はネットワークデバイスの負荷（又は利用率）を求めるためにネットワークコントローラ１６１等のネットワークコントローラ（又は通信ネットワークの制御プレーン内の何らかの他のエンティティ）と通信することができ、通信ネットワーク及び／又は通信ネットワーク内のネットワークデバイスの非効率的な使用を回避するために、負荷が低い場合にはネットワークフローの高い割合を選択し、負荷が高い場合には、ネットワークフローの低い割合を選択することができる。
【００２４】
収集モジュール１１３は、通信ネットワーク内でネットワークフローがインスタンス化されるアプリケーションのアプリケーション識別子を受信するために、アプリケーション識別エージェントと通信する。アプリケーション識別子は、アプリケーションを識別する英数文字列等の値である。幾つかの実施態様では、アプリケーション識別子は、アプリケーションの名称であるか、又は名称を含むことができる。幾つかの実施態様では、アプリケーション識別子は、アプリケーションのバージョン又はビルドについての情報を含むことができる。さらに、幾つかの実施態様では、アプリケーション識別子は、アプリケーションのタイプ又はクラスについての情報を含む。さらに、収集モジュール１１３は、アプリケーション識別エージェントから受信された各アプリケーション識別子に関連付けられるネットワークフローを識別するために、アプリケーション識別エージェント及び／又は検出モジュール１１１と通信する。したがって、収集モジュール１１３は、検出モジュール１１１によって検出された新たにインスタンス化されたネットワークフローと、アプリケーション識別エージェントから受信されたアプリケーション識別子との間のマッピングを確立することができる。
【００２５】
アプリケーション識別エージェントは、通信ネットワークのクライアントにホストされるアプリケーション（例えば、１つ又は複数の非一時的プロセッサ可読媒体に記憶される命令）であり、通信ネットワーク内でネットワークフローを開始若しくは要求するか、又はネットワークフロー要求に応答するアプリケーションについての情報を与える。そのような情報は、アプリケーションのアプリケーション識別子と、ネットワークフローを識別するために用いることができるネットワークフローのパラメータとを含むことができる。通信ネットワークのクライアントは、その通信ネットワークを介して通信するデバイスである。例えば、ノートブック、タブレットデバイス、スマートフォン、デスクトップ、サーバ、ネットワークスイッチ、ネットワークルータ、ネットワークゲートウェイ、ネットワークブリッジ等のコンピューティングシステム、又は通信ネットワークを介して通信する他のコンピューティングシステム若しくはコンピューティングシステムにホストされるアプリケーションを、通信ネットワークのクライアントと呼ぶことができる。
【００２６】
例えば、アプリケーション識別エージェントは、コンピューティングシステムにホストされるどのアプリケーションがネットワークフロー情報を要求又は開始したかを判断するために、複数のコンピューティングシステムのそれぞれにインストールすることができる。具体例では、アプリケーション識別エージェントは、ネットワークソケット等のパラメータ（例えば、ＩＰアドレスとポート番号の対）と、ネットワークソケットを用いるアプリケーションの識別子（例えば、実行されるときに、アプリケーション識別エージェントを実現する命令を含む実行可能ファイルのファイル名、又はアプリケーションを識別する固有の英数文字列）とを収集することができる。そして、アプリケーション識別エージェントは、この情報をリアルタイムに（すなわち、情報が蓄積されるにつれて）、又は種々の時間間隔において収集モジュール１１３等の収集モジュールに与えることができる。また、アプリケーション識別エージェントから受信された情報と、通信ネットワーク内のネットワークフローとの相関をとり、アプリケーション識別子に対応するネットワークフローを識別するために、収集モジュール１１３が、ネットワークデバイスにおいて通信ネットワーク内のネットワークフローのパラメータ（例えば、ＩＰアドレスとポート番号の対）にアクセスすることもできる。
【００２７】
特徴抽出モジュール１１４は、通信ネットワーク内のネットワークフローの特徴を抽出（又は導出）する。本明細書において論じられるように、ネットワークフローの特徴（又はネットワークフロー特徴）は、ネットワークフロー内で転送されるデータ（例えば、データパケット内のデータ）から導出される。例えば、ネットワークフローから以下のネットワークフロー特徴である、
発信元ＩＰ／宛先ＩＰ／発信元ポート／宛先ポート、
フロー開始エポックタイム（ミリ秒単位又はそれより高い精度）、
フロー終了エポックタイム（ミリ秒単位又はそれより高い精度）、
データパケットの到着時刻（絶対値又は相対値）、
全アップリンク／ダウンリンクデータパケット、
全アップリンク／ダウンリンクバイト、
アップリンクにおける最初のｌ個のパケットのパケットサイズ（例えば、終点に対する）、
ダウンリンクにおける最初のｍ個のパケットのパケットサイズ（例えば、終点に対する）、及び
双方向における最初のｎ個のパケットのパケットサイズ（例えば、終点に対する）を抽出することができる。
上記の例において、「ｌ」、「ｍ」及び「ｎ」という用語は任意の数とすることができる。特定の例として、ｌ＝７、ｍ＝６及びｎ＝１３である。幾つかの実施態様では、ネットワークフローのデータパケットを、そのネットワークフローのネットワークフロー特徴と呼ぶこともできる。そのような実施態様では、上記で論じられたネットワークフロー特徴等のネットワークフロー特徴は、アプリケーション識別モジュール、分類器トレーニングモジュール又は何らかの他のエンティティにおいてネットワークフローのデータパケットから導出することができる。
【００２８】
さらに、特徴抽出モジュール１１４は、アプリケーション分類器を生成するために選択モジュール１１２によって選択された関連するアプリケーション識別子を有するネットワークフローに関して、ネットワークフロー特徴を（複数の場合もある）分類器トレーニングモジュール１２０等の分類器トレーニングモジュールに与える。また、特徴抽出モジュール１１４は、それらのネットワークフローに関連付けられるアプリケーションを識別するために、ネットワークフローのネットワークフロー特徴を（複数の場合もある）アプリケーション識別モジュール１３０等のアプリケーション識別モジュールに与える。そのようなネットワークフロー特徴は、リアルタイムに、又は種々の時間間隔において（例えば、定期的に）、及び／又は信号に応答して与えることができる。さらに、特徴抽出モジュール１１４は、新たにインスタンス化されたネットワークフローの検出に応答してネットワークフロー特徴を与えるために、検出モジュール１１１と通信することができる。言い換えると、アプリケーションアウェアネットワーク制御システム１１０は、新たにインスタンス化されたネットワークフローが検出されたときに、分類器トレーニングモジュール又はアプリケーション識別モジュールにネットワークフロー特徴を与える１つ又は複数の規則を含むことができる。
【００２９】
本明細書において用いられるときに、「提供する（与える）」という用語は、プッシュ機構（例えば、通信経路又はチャネルを介してコンピューティングシステム又はエージェントにデータを送ること）、プル機構（例えば、コンピューティングシステム又はエージェントからの要求に応答してコンピューティングシステム又はエージェントにデータを送達すること）、及びストア機構（例えば、コンピューティングシステム又はエージェントがデータにアクセスすることができるデータストア又はサービスにデータを記憶すること）を含む。したがって、幾つかの実施態様では、特徴抽出モジュール１１４は、ネットワークフロー特徴を分類器トレーニングモジュール及び／又はアプリケーション識別モジュールにプッシュする（又は積極的に送る）ことによってネットワークフロー特徴を与えることができる。他の実施態様では、特徴抽出モジュール１１４はＡＰＩを与えることによって、ネットワークフロー特徴を与えることができ、分類器トレーニングモジュール及び／又はアプリケーション識別モジュールはこのＡＰＩを介してネットワークフロー特徴にアクセスすることができるか又はネットワークフロー特徴を要求することができる。更に別の実施態様では、特徴抽出モジュール１１４は、そのような機構の組み合わせを利用することができる。
【００３０】
さらに、特徴抽出モジュール１１４は、１つのフローのための十分な数のネットワークフロー特徴が導出され、及び／又は与えられたことを示すアプリケーション識別信号に応答する。そのような信号に応答して、特徴抽出モジュール１１４は、ネットワークフロー特徴を導出し、及び／又は与えるのを中止する。これにより、更なるネットワークフロー特徴が有益にならないときに、ネットワークフロー特徴を導出し、及び／又は与えるのを中止することによって、特徴抽出モジュール１１４はリソース（例えば、処理リソース又はコンピューティングリソース及びネットワークリソース）を効率的に使用できるようになる。
【００３１】
アプリケーション識別信号は、アプリケーション識別プロセスの状態変化を示す通知（例えば、値遷移、データセット、メッセージ又は制御データパケット）である。例えば、アプリケーション識別信号は、アプリケーション識別モジュールにおいてアプリケーションを識別するために、又は分類器トレーニングモジュールにおいてアプリケーション分類器を生成するために更なるネットワークフロー特徴がもはや必要とされないことを示すことができる。そのようなアプリケーション識別信号は、アプリケーションアウェアネットワーク制御システム１１０内で（例えば、特徴抽出モジュール１１４自体によって）生成することができるか、又は分類器トレーニングモジュール、アプリケーション識別モジュール、ネットワークコントローラ及び／又はネットワークデバイスにおいて外部で生成することができる。具体例として、アプリケーション識別信号は、特徴抽出モジュール１１４内のデータパケットカウンタ（又は変数）が所定の値に達したときに生成することができる。別の例として、アプリケーション識別信号は、アプリケーション分類器をネットワークフロー特徴に適用することによってネットワークフローを介して通信しているアプリケーションを識別するために、１つのフローに対し、ネットワークフローの十分な数のネットワークフロー特徴が受信された後に、アプリケーション識別モジュールから送られる制御データパケットとすることができる。
【００３２】
動作モジュール１１５は、ネットワークフローに動作を適用する。例えば、動作モジュール１１５は、アプリケーション識別モジュール（複数の場合もある）１３０等のアプリケーション識別モジュールから、収集モジュール１１３によってアプリケーション識別子が受信されなかったネットワークフローに関連付けられるアプリケーションのアプリケーション識別子を含むアプリケーション識別報告を受信することができる。その際、動作モジュール１１５は、アプリケーション識別報告に基づいて、又はアプリケーション識別報告内に含まれる動作識別子に基づいて、ネットワークフローの種々のパラメータ又は特性を変更することができる。例えば、動作モジュール１１５は、ネットワークフローをネットワークデバイスの異なる物理ポートにリダイレクトすることができるか、ネットワークフローに割り当てられたネットワークリソースを変更することができるか、ネットワークフローを破棄（又は終了）することができるか、ネットワークフローに所定のＱｏＳ、若しくは管理上割り当てられたＱｏＳを適用することができるか、ネットワークフローに所定の速度制限、若しくは管理上割り当てられた速度制限を適用することができるか、又はネットワークフローに何らかの他の動作を適用することができる。
【００３３】
アプリケーション識別報告は、ネットワークフロー特徴にアプリケーション分類器を適用した結果を含む。例えば、アプリケーション識別報告は、アプリケーション識別子、動作識別子、ネットワークフローの分類に関連する付加データ、及び／又はその組み合わせを含むことができる。
【００３４】
適用されることになる動作は、アプリケーション識別報告内で指定するか、若しくはアプリケーション識別報告内に含むことができるか（例えば、動作識別子として、又はアプリケーション識別子によって暗黙的に）、ネットワークデバイスにおいてネットワークコントローラによって確立されるか、若しくはネットワークデバイスの外部にあるポリシーストアにおいてアクセスすることができるか、又は通信ネットワークの制御プレーン内のネットワークコントローラ等のエンティティによって指定することができる。例えば、アプリケーションアウェアネットワーク制御システム１１０は、ネットワークフローに関連付けられるアプリケーションを識別する（複数の場合もある）アプリケーション識別モジュール１３０からアプリケーション識別報告を受信することができる。アプリケーションアウェアネットワーク制御システム１１０又はアプリケーションアウェアネットワーク制御システム１１０をホストするネットワークデバイスは、ネットワークコントローラ１６１がそのネットワークフローに関連付けられるアプリケーションのアイデンティティを求めることができるＡＰＩを与えることができ、動作モジュール１１５がネットワークフローに適用するための動作を指定する動作識別子を与えることができる。代替的には、ネットワークコントローラ１６１は、特定のアプリケーションが識別された場合に動作を実行するように、アプリケーションアウェアネットワーク制御システム１１０を（例えば、ＡＰＩを介して）プリプログラミング又は構成することができる。
【００３５】
幾つかの実施態様では、動作モジュールは、施行モジュールと呼ぶことができ、１つ又は複数のネットワークデバイスにおいて実施される。例えば、幾つかの実施態様では、動作モジュール（又は複数の動作モジュール）は、通信ネットワークの入口において、又は通信ネットワークの出口においてネットワークフローに動作を適用するために、１つ又は複数のエッジデバイスにおいて実施する（又はホストする）ことができる。幾つかの実施態様では、動作モジュール（又は複数の動作モジュール）は、通信ネットワーク内の複数のネットワークデバイスにおいて実施することができる。したがって、アプリケーション識別報告は、通信ネットワーク内の（又は通信ネットワークの）ネットワークデバイスにわたって一貫して動作を適用するために、複数のネットワークデバイス（又はそこにホストされる動作モジュール）に与えることができる。
【００３６】
分類器トレーニングモジュール１２０は、ネットワークフローのネットワークフロー特徴と、ネットワークフローに関連付けられるアプリケーションのアプリケーション識別子とを用いて、アプリケーション分類器を生成又はトレーニングするハードウェア及びソフトウェアの組み合わせである。例えば、分類器トレーニングモジュール１２０は、１つのアプリケーション又は一群のアプリケーションのための一群のネットワークフローのネットワークフロー特徴を用いて、アプリケーション分類器（例えば、機械学習分類器）をトレーニング（又は生成）することができる。幾つかの実施態様では、分類器トレーニングモジュール１２０は、アプリケーションアウェアネットワーク制御システム１１０から受信されたネットワークフロー特徴から更なるネットワークフロー特徴を導出する。
【００３７】
図１に示されるように、分類器トレーニングモジュール１２０は、分類器トレーニングモジュールの１つ又は複数のインスタンスを含むことができる。例えば、通信ネットワーク１６０の制御プレーンが、通信ネットワーク１６０内の種々のネットワークデバイスにホストされる分類器トレーニングモジュールのクラスタを含むことができる。幾つかの実施態様では、クラスタ内の分類器トレーニングモジュール１２０は汎用とすることができ（すなわち、数多くのアプリケーション又はアプリケーションタイプのためのアプリケーション分類器を生成することができ）、ロードバランシングのために複数のネットワークデバイスにわたってアプリケーション分類器の生成を分散させるために用いられる。他の実施態様では、クラスタ内の分類器トレーニングモジュール１２０は特有とすることができ（すなわち、単一のアプリケーション又は少数のアプリケーション又はアプリケーションタイプのためのアプリケーション分類器を生成することができ）、それぞれ特定のアプリケーション（又は少数のアプリケーション）又はアプリケーションタイプのためのアプリケーション分類器を生成するために用いられる。言い換えると、ネットワークフローのネットワークフロー特徴は、それらのネットワークフローに関連付けられるアプリケーションのアプリケーション識別子に基づいて異なる分類器トレーニングモジュールに与えることができる。
【００３８】
分類器トレーニングモジュール１２０において生成（又はトレーニング）されたアプリケーション分類器は、種々の機械学習分類器のいずれかとすることができる。例えば、アプリケーション分類器は、ナイーブベイズ分類器、サポートベクトルマシン（ＳＶＭ：support vector machine）に基づく分類器、Ｃ４．５若しくはＣ５．０に基づく決定木分類器、又は何らかの他の適切な機械学習分類器とすることができる。ナイーブベイズ分類器は、強い独立仮定とともにベイズの定理を適用することに基づく単純な確率的分類器である。この分類器は、ネットワークフロー特徴が互いに独立していると仮定し、ネットワークフロー特徴のクラス又はアプリケーション識別子が入力として与えられることを前提とする。しかしながら、ネットワークフロー特徴は必ずしも独立している必要はない。
【００３９】
別の例として、ＳＶＭ手法又は機構が、異なるアプリケーション識別子に対応する異なるクラス（例えば、２つの異なるクラス）間のマージンを最大にするアプリケーション分類器を構築することができる。Ｃ４．５に基づく決定木分類器では、決定木内の各ノードにおける決定規則への応答が決定木に沿った経路を決定ツリー形式で分類規則を実施することができる。Ｃ５．０に基づく決定木分類器はブースティングもサポートし、ブースティングは、予測精度を改善するために複数の分類器を生成し、組み合わせるための技法である。ナイーブベイズとは異なり、ＳＶＭに基づく分類器及び決定木分類器はいずれも、異なるネットワークフロー特徴間の依存性を考慮に入れることができる。これらの分類器のそれぞれにおいて、ｋ分割交差検証等の方法を用いることによって、トレーニングデータ（例えば、ネットワークフロー特徴及びアプリケーション識別子）に対する分類器の過学習を防ぐためのステップを講じることができる。
【００４０】
アプリケーション識別モジュール１３０は、ネットワークフロー特徴が導出されたネットワークフローに関連付けられるアプリケーションのアイデンティティを求めるために、それらのネットワークフロー特徴にアプリケーション分類器を適用する（又は別の言い方をすると、アプリケーション分類器にネットワークフロー特徴を適用する）ハードウェア及びソフトウェアの組み合わせである。言い換えると、アプリケーション識別モジュール１３０は、ネットワークフローを介して通信しているアプリケーションのアプリケーション識別子を求めるために、分類器トレーニングモジュール１２０において生成され、そこから受信されたアプリケーション分類器を使用する。幾つかの実施態様では、アプリケーション識別モジュール１３０は、アプリケーションアウェアネットワーク制御システム１１０から受信されたネットワークフロー特徴から更なるネットワークフロー特徴を導出する。
【００４１】
図１に示されるような、分類器トレーニングモジュール１２０と同様に、アプリケーション識別モジュール１３０は、アプリケーション識別モジュールの１つ又は複数のインスタンスを含むことができる。したがって、アプリケーション識別モジュール１３０は汎用とすることができ（すなわち、ネットワークフローのネットワークフロー特徴に数多くの異なるアプリケーション分類器を適用することができ）、ロードバランシングのために複数のネットワークデバイスにわたってアプリケーション識別を分散させるために用いることができる。他の実施態様では、クラスタ内のアプリケーション識別モジュール１３０は特有とすることができ（すなわち、ネットワークフローのネットワークフロー特徴に単一のアプリケーション分類器、又は少数の異なるアプリケーション分類器を適用することができ）、それぞれ特定のアプリケーション（又は少数のアプリケーション）又はアプリケーションタイプを識別するために用いられる。したがって、ネットワークフローに関連付けられるアプリケーションのアイデンティティを求めるために、１つのネットワークフローのネットワークフロー特徴を複数のアプリケーション識別モジュールに与えることができる。
【００４２】
特定のモジュール（すなわち、ハードウェア及びソフトウェアの組み合わせ）が、具体的にはアプリケーションアウェアネットワーク制御システム１１０に関連して、包括的には図１及び本明細書において論じられる他の例示的な実施態様に関連して図示され、論じられるが、他の実施態様内にモジュールの他の組み合わせ又は部分的な組み合わせを含むことができる。言い換えると、図１に示され、他の例示的な実施態様において論じられるモジュールは、本明細書において論じられる例において特定の機能を実行するが、これらの機能及び他の機能は、異なるモジュールにおいて、又はモジュールの組み合わせにおいて成し遂げるか、実施するか、又は実現することができる。
【００４３】
例えば、別々に図示され、及び／又は論じられた２つ以上のモジュールを組み合わせて、２つのモジュールに関連して論じられた機能を実行する１つのモジュールにすることができる。別の例として、これらの例に関連して論じられたような１つのモジュールにおいて実行される機能は、１つの異なるモジュール又は複数の異なるモジュールにおいて実行することができる。さらに、１つの特定のタイプのモジュールに関連して本明細書において論じられたモジュールを、他の実施態様において１つの異なるタイプのモジュールとして実施することができる。例えば、検出モジュールは、一群の電子及び／又は光学回路（又は回路構成要素）を用いて実施することができるか、又は非一時的プロセッサ可読媒体において、若しくはメモリにおいて記憶され、プロセッサにおいて実行される命令として実施することができる。別の例として、幾つかの実施態様では、アプリケーションアウェアネットワーク制御システム１１０は、分類器トレーニングモジュール１２０及び／又はアプリケーション識別モジュール１３０を含むことができる。
【００４４】
図１に示されるように、通信ネットワーク１６０は、種々のネットワークデバイスを含む。具体的には、図１に示されるように、通信ネットワーク１６０は、エッジデバイス１６２と、エッジデバイス１６３と、ネットワークデバイス１６４と、ネットワーク１６５と、ネットワークデバイス１６６と、ネットワークデバイス１６７とを含む。さらに、通信ネットワーク１６０はネットワークコントローラ１６１を含む。ネットワークデバイスは、１つ又は複数の通信インターフェースを含み、これらの通信インターフェースを介して通信ネットワーク内でデータをトランスポートするために互いに通信するコンピューティングシステムである。例えば、ルータ、スイッチ、ワイヤレスアクセスポイント、ゲートウェイ、ブリッジ、ロードバランサ、サーバ及び類似のコンピューティングシステムをネットワークデバイスとすることができる。ネットワークフローの終点（例えば、通信ネットワークを介して通信するアプリケーションをホストするコンピューティングシステム）が直接通信するネットワークデバイスをエッジデバイスと呼ぶことができる（すなわち、そのようなデバイスは、通信ネットワークのエッジにおいて動作する）。
【００４５】
図１に示される例では、通信ネットワーク１６０はネットワークコントローラ１６１を含む。ネットワークコントローラ１６１は、通信ネットワーク１６０と通信するネットワークデバイス又はコンピューティングシステムにホストされるモジュールであり、通信ネットワーク１６０内のネットワークデバイスにルーティング、転送及び他の管理情報を提供する。言い換えると、通信ネットワーク１６０はＳＤＮとすることができる。ネットワークコントローラ１６１は、通信ネットワーク１６０のネットワークデバイスを制御又は管理するために、ＯｐｅｎＦｌｏｗ（登録商標）等のプロトコルを介してこれらのネットワークデバイスと通信することができる。
【００４６】
アプリケーションアウェアネットワーク制御システム１１０、分類器トレーニングモジュール１２０及びアプリケーション識別モジュール１３０は、通信ネットワーク１６０のネットワークデバイスのいずれかに、又は通信ネットワーク１６０と通信する他のコンピューティングシステム（例えば、ミドルボックス）にホストすることができる。幾つかの実施態様では、そのような他のコンピューティングデバイスは、通信ネットワーク１６０の制御プレーンの一部であるか、又は制御プレーン内にあると考えることができる。幾つかの実施態様では、アプリケーションアウェアネットワーク制御システム１１０、分類器トレーニングモジュール１２０及びアプリケーション識別モジュール１３０のうちの２つ以上が、共通のネットワークデバイスにホストされる。他の実施態様では、アプリケーションアウェアネットワーク制御システム１１０、分類器トレーニングモジュール１２０及びアプリケーション識別モジュール１３０は、異なるネットワークデバイスにホストされる。
【００４７】
例えば、アプリケーションアウェアネットワーク制御システム１１０及びアプリケーション識別モジュール１３０は、エッジデバイス１６２にホストすることができ、分類器トレーニングモジュール１２０は、ネットワークデバイス１６７にホストすることができる。幾つかの実施態様では、ネットワークフローの中には通信ネットワークの内部レイヤ又はコア内のネットワークデバイスを通り抜けないか、又は横切らないものもあるので、アプリケーションアウェアネットワーク制御システム１１０は、通信ネットワークのエッジデバイスにホストできることが有益である。例えば、ピアツーピアアプリケーションの場合のネットワークフローは、エッジデバイス以外のネットワークデバイスを横切らない場合がある。したがって、幾つかの通信ネットワーク及び／又はアプリケーションの場合に、他のネットワークデバイスにホストされるアプリケーションアウェアネットワーク制御システムより、エッジデバイスにホストされるアプリケーションアウェアネットワーク制御システムに、より多くのネットワークフローがアクセス可能である。
【００４８】
エージェント１４１及び１４２は、コンピューティングシステムにホストされるアプリケーション識別エージェントである（簡単にするために、図１にはエージェント１４１をホストするデバイス１５１のみが示される）。経路１８０は通信ネットワーク１６０を通るネットワークフローを示す。より具体的には、デバイス１５１にホストされるアプリケーションが、ネットワークサービス１９２へのネットワークフローを開始する。言い換えると、そのアプリケーションは、経路１８０によって示されるネットワークフローを介して、ネットワークサービス１９２へのアクセスを要求する。ネットワークサービス１９１及び１９２は、ウェブページ又はウェブサイト等のサービス、データベース管理システム等のデータリポジトリ、ストリーミングビデオ又はオーディオアプリケーション等の通信アプリケーション、コラボレーションアプリケーション、又は通信ネットワークを介してアクセス可能な他のサービスである。
【００４９】
デバイス１５１にホストされるアプリケーションとネットワークリソース１９２との間で通信されるデータパケットは、エッジデバイス１６２と、ネットワークデバイス１６４、１６５及び１６６とを横切る。したがって、アプリケーションアウェアネットワーク制御システム１１０は、経路１８０によって示されるネットワークフローからネットワークフロー特徴を導出し、ネットワークフロー特徴と、エージェント１４１から受信されたアプリケーション識別子とを分類器トレーニングモジュール１２０に与えることによって分類器をトレーニングするために、又はネットワークフロー特徴をアプリケーション識別モジュール１３０に与えることによって経路１８０によって示されるネットワークフローに関連付けられるアプリケーションを識別するために、これらのネットワークデバイス（すなわち、エッジデバイス１６２並びにネットワークデバイス１６４、１６５及び１６６）のいずれかにホストすることができる。
【００５０】
さらに、アプリケーション識別エージェント１４１及び／又は１４２から受信されたアプリケーション識別子と、それらのアプリケーション識別子を有するアプリケーションに関連付けられるネットワークフローのネットワークフロー特徴とに基づいて生成されたアプリケーション分類器を用いて、アプリケーションアウェアネットワーク制御システム１１０は、アプリケーション識別エージェントがホストされないデバイスからの又はデバイスへのネットワークフローに関連付けられるアプリケーションを識別することができる。例えば、アプリケーションアウェアネットワーク制御システム１１０は、デバイス１５２にホストされるアプリケーションからのネットワークフローが横切る通信ネットワーク１６０の１つ又は複数のネットワークデバイスにホストすることができる。アプリケーションアウェアネットワーク制御システム１１０は、アプリケーション識別モジュール１３０（アプリケーションアウェアネットワーク制御システム１１０とともにホストされる場合があるか、又はアプリケーションアウェアネットワーク制御システム１１０に含まれる場合がある）に、そのネットワークフローのネットワークフロー特徴を与えることができ、アプリケーション識別モジュール１３０は、そのネットワークフローに関連付けられるアプリケーションを識別するために、それらのアプリケーション分類器を適用することができる。したがって、アプリケーション識別エージェントをホストしないデバイスにおけるアプリケーションは、本明細書において論じられる方法に従って識別することができる。
【００５１】
図２は、一実施態様によるアプリケーションアウェアネットワーク管理プロセスの流れ図である。プロセス２００によって示される例では、アプリケーション分類器はあらかじめ生成されている。アプリケーション分類器の生成は、図３及び図４に関連して論じられる例等の他の例において、より詳細に論じられることになる。プロセス２００は、ネットワークデバイス又は他のコンピューティングシステムにホストされるアプリケーションアウェアネットワーク制御システム１１０等のアプリケーションアウェアネットワーク制御システム（又はそのモジュール等の構成要素）によって実施することができる。したがって、何らかの動作を実行するプロセス２００を参照しながら本明細書において述べられることは、プロセス２００を実施するアプリケーションアウェアネットワーク制御システムがそれらの動作を実行することを意味するものと理解されたい。
【００５２】
さらに、図２に示されるプロセス２００は、アプリケーションアウェアネットワーク管理プロセスの例示的な実施態様である。本明細書における幾つかの例において言及されるように、他の実施態様では、リソース分類プロセスは、図２に示されるブロック（又はステップ）より多くの、若しくは少ないブロック（又はステップ）、又は図２に示されるのとは異なるブロック（又はステップ）を含むことができる。
【００５３】
ブロック２１０において、プロセス２００は通信ネットワーク内でネットワークフローがインスタンス化されたと判断する。例えば、検出モジュールが、通信ネットワークのネットワークデバイスにおいて新たにインスタンス化されたネットワークフローを識別することができる。ブロック２１０における判断に応答して、ブロック２２０において、新たにインスタンス化されたネットワークフローのネットワークフロー特徴がアプリケーション識別モジュールに与えられる。具体例として、上記の例において検出モジュールと通信する抽出モジュールが、新たにインスタンス化されたネットワークフローのネットワークフロー特徴を導出することができ、それらのネットワークフロー特徴をアプリケーション識別モジュールに与えることができる。この例では、アプリケーション識別モジュールは、あらかじめ生成されているアプリケーション分類器にアクセスできる。
【００５４】
ブロック２３０においてアプリケーション識別信号が受信（又は検出）されるまで、アプリケーション識別モジュールにネットワークフロー特徴が与えられる。ブロック２３０においてアプリケーション識別信号が受信（又は検出）された後に、プロセス２００は、アプリケーション識別モジュールにネットワークフロー特徴を与えるのを中止する。例えば、アプリケーション識別モジュールからアプリケーション識別信号が受信されるまで、アプリケーション識別モジュールにネットワークフロー特徴を与えることができる。
【００５５】
他の実施態様では、ブロック２３０において、アプリケーション識別信号が受信（又は検出）されるまでネットワークフロー特徴が導出され、アプリケーション識別信号に応答して、プロセス２００がネットワークフロー特徴を導出するのを中止する。そして、アプリケーション識別信号に応答して、アプリケーション識別信号が（直接、又はネットワークコントローラ等の何らかの他のエンティティを介して）受信された後に、導出されたネットワークフロー特徴がアプリケーション識別モジュールに与えられる。更に別の実施態様では、ブロック２３０においてアプリケーション識別信号が受信（又は検出）されるまで、ネットワークフロー特徴が導出され、そして、アプリケーション識別信号が受信された後に、アプリケーション識別モジュールからのネットワークフロー特徴要求に応答して、導出されたネットワークフロー特徴がアプリケーション識別モジュールに与えられる。例えば、アプリケーション識別モジュールは、プロセス２００を実施するアプリケーションアウェアネットワーク制御システムのＡＰＩを介してネットワークフロー特徴を要求することができる。
【００５６】
ブロック２５０において、新たにインスタンス化されたネットワークフローに関連付けられるアプリケーションのアプリケーション識別子を含むアプリケーション識別報告が、アプリケーション識別モジュールから受信される。例えば、アプリケーション識別モジュールは、新たにインスタンス化されたネットワークフローに関連付けられるアプリケーションのアイデンティティを求めるために、分類器トレーニングモジュールにおいて生成された１つ又は複数のアプリケーション分類器をネットワークフロー特徴に適用することができ、アプリケーションを識別するアプリケーション識別報告をプロセス２００に与えることができる。
【００５７】
幾つかの実施態様では、アプリケーション識別報告は、通信ネットワークの制御プレーン内のネットワークコントローラ等の何らかの他のエンティティから受信される。例えば、アプリケーション識別モジュールは、ネットワークコントローラにアプリケーション識別子（又はアプリケーション識別子を含むアプリケーション識別報告）を与えることができ、ネットワークコントローラは、プロセス２００にアプリケーション識別報告を与えることができる。更に他の実施態様では、アプリケーション識別報告内に含まれる動作識別子がプロセス２００によって受信される。すなわち、幾つかのそのような実施態様では、アプリケーション識別報告はアプリケーション識別子を含まない。むしろ、アプリケーション識別報告は動作識別子を含み、この動作識別子は、新たにインスタンス化されたネットワークフローに適用されることになる動作を記述又は規定する。
【００５８】
そして、プロセス２００は、ブロック２６０において、ブロック２５０において受信された情報に基づいて、新たにインスタンス化されたネットワークフローにフロー動作を適用する。図２に示される例では、アプリケーション識別報告に基づいて、新たにインスタンス化されたネットワークフローにフロー動作が適用される。上記で論じられたように、アプリケーション識別報告はアプリケーション識別子、動作識別子、及び／又はその組み合わせを含むことができる。
【００５９】
図３は、一実施態様による、ネットワークコントローラとネットワークデバイスとの間の通信フローを示すタイミング図である。図３の例に示されるように、ネットワークデバイス１６２及びネットワークデバイス１６６はそれぞれ、図１に関連して示され、上記で論じられたアプリケーションアウェアネットワーク制御システム１１０等のアプリケーションアウェアネットワーク制御システムをホストする。アプリケーションアウェアネットワーク制御システムをホストすることに加えて、ネットワークデバイス１６２は、アプリケーション識別モジュールもホストする。例えば、アプリケーション識別モジュールは、ネットワークデバイス１６２におけるアプリケーション空間又はユーザ空間内にホストすることができる。ネットワークコントローラ１６１は、分類器トレーニングモジュール及びアプリケーション識別モジュールを含む（又は分類器トレーニングモジュール及びアプリケーション識別モジュールとともにネットワークデバイスにホストされる）。本明細書において、ネットワークデバイス１６２、ネットワークデバイス１６６又はネットワークコントローラ１６１が上記で論じられたようなアプリケーションアウェアネットワーク制御システム、アプリケーション識別モジュール又は分類器トレーニングモジュールの何らかの動作を実行することに言及することは、ネットワークデバイス１６２、ネットワークデバイス１６６又はネットワークコントローラ１６１にホストされるか、又はそれとともにホストされる、上記で論じられたアプリケーションアウェアネットワーク制御システム、アプリケーション識別モジュール又は分類器トレーニングモジュールがその動作を実行することを意味すると理解されるべきである。
【００６０】
新たなネットワークフローが検出され、そのネットワークフローに関連付けられるアプリケーションのアプリケーション識別子がネットワークデバイス１６２において（すなわち、ネットワークデバイス１６２にホストされるアプリケーションアウェアネットワーク制御システムによって）アプリケーション識別エージェントから受信される。同様に、異なる新たなネットワークフローが検出され、そのネットワークフローに関連付けられるアプリケーションのアプリケーション識別子が、ネットワークデバイス１６６において（すなわち、ネットワークデバイス１６６にホストされるアプリケーションアウェアネットワーク制御システムによって）アプリケーション識別エージェントから受信される。この例では、ネットワークデバイス１６２及び１６６によって検出されたネットワークフローは、同じアプリケーションの別々のインスタンスに関連付けられる。言い換えると、ネットワークデバイス１６２及び１６６によって受信されたアプリケーション識別子は同じである。
【００６１】
新たなネットワークフローの検出及びアプリケーション識別子の受信に応答して（例えば、ネットワークデバイス１６２及び１６６においてネットワークコントローラ１６１によって確立されたポリシーの１つ又は複数の規則に基づいて）、ネットワークデバイス１６２及びネットワークデバイス１６６はそれぞれ、アプリケーション識別エージェントから受信されたアプリケーション識別子をネットワークコントローラ１６１に与え、それぞれにおいて検出された新たなネットワークフローのためのネットワークフロー特徴を導出し、ネットワークコントローラ１６１に（すなわち、ネットワークコントローラ１６１に含まれるか、ネットワークコントローラ１６１とともにホストされる分類器トレーニングモジュールに）与える。
【００６２】
そして、ネットワークデバイス１６２は、ネットワークデバイス１６２において生成されたアプリケーション識別信号に基づいて（例えば、データパケットカウンタが所定の値に達するのに応答して）、十分な数のネットワークフロー特徴がネットワークコントローラ１６２に与えられたと判断し、ネットワークコントローラ１６１にネットワークフロー特徴を与えるのを中止する。そして、ネットワークコントローラ１６１は、アプリケーション分類器１を生成（又はトレーニング）し、ネットワークデバイス１６２にアプリケーション分類器１を与える。アプリケーション分類器１は、ネットワークフローが、ネットワークデバイス１６２によって以前に受信されたアプリケーション識別子によって識別されるアプリケーションに関連付けられるか否かを判断するために、ネットワークデバイス１６２にホストされるアプリケーション識別モジュールにおいて使用されることになる。幾つかの実施態様では、アプリケーション識別モジュールは、ネットワークフロー特徴から種々の異なるアプリケーションを識別するために２つ以上のアプリケーション分類器にアクセスできる。ここでは、簡単にするために、単一のアプリケーションのみのアプリケーション分類器を示す。
【００６３】
ネットワークコントローラ１６１は、ネットワークデバイス１６６から受信されたネットワークフロー特徴を監視し、アプリケーション分類器を生成する（又は修正する）だけの十分な量のネットワークフロー特徴が与えられたときに、アプリケーション識別信号をネットワークデバイス１６６に与える。ネットワークデバイス１６６によって与えられるネットワークフロー特徴はネットワークデバイス１６２によって与えられるネットワークフロー特徴と共通のアプリケーションのためのネットワークフロー特徴であるので、ネットワークコントローラは、アプリケーション分類器２（修正アプリケーション分類器）を生成するために、ネットワークデバイス１６６からのネットワークフロー特徴を用いてアプリケーション分類器１（初期アプリケーション分類器）を修正する。さらに、ネットワークデバイス１６２がアプリケーション識別モジュールをホストするので、ネットワークコントローラ１６１はアプリケーション分類器２をネットワークデバイス１６２に与える。
【００６４】
図３に示されるように、ネットワークデバイス１６２はアプリケーション識別モジュールをホストするので、ネットワークデバイス１６２は、ネットワークコントローラにネットワークフロー特徴を送らない。むしろ、ネットワークデバイス１６２は、ネットワークデバイス１６２にホストされるアプリケーション識別モジュールを用いて、ネットワークコントローラ１６１から受信されたアプリケーション分類器（例えば、アプリケーション分類器２）を、ネットワークデバイス１６２において導出されたネットワークフロー特徴に適用する。
【００６５】
より具体的には、ネットワークデバイス１６２は、新たにインスタンス化されたネットワークフローを検出し、そのネットワークフローのネットワークフロー特徴を導出し、それらのネットワークフロー特徴をネットワークデバイス１６２にホストされるアプリケーション識別モジュールに与える。ネットワークデバイス１６２は、アプリケーション識別信号に応答してネットワークフロー特徴を導出し、与えるのを中止し、そして、アプリケーション分類器２を、新たにインスタンス化されたネットワークフローから導出されたネットワークフロー特徴に適用する。言い換えると、アプリケーション分類器２を用いて、ネットワークフロー特徴に基づいて新たにインスタンス化されたネットワークフローを分類する。
【００６６】
上記に論じられたように、幾つかの実施態様では、アプリケーション識別モジュールは、複数のアプリケーション分類器を含むことができ、ネットワークフロー特徴が導出されたネットワークフローに関連付けられるアプリケーションを識別するために、ネットワークフロー特徴に２つ以上のアプリケーション分類器を適用することができる。分類の結果は、新たにインスタンス化されたネットワークフローに関連付けられるアプリケーションを識別するアプリケーション識別報告である。そして、ネットワークデバイス１６２は、そのアプリケーションのアイデンティティに基づいて、フロー動作を適用する。
【００６７】
対照的に、ネットワークデバイス１６６は、アプリケーション識別モジュールを含まないので、アプリケーションのアイデンティティを求めるために、ネットワークコントローラ１６１内にあるか、又はネットワークコントローラ１６１にともにホストされるアプリケーション識別モジュールに頼る。より具体的には、図３に示される例において示されるように、ネットワークデバイス１６６が新たにインスタンス化されたネットワークフローを検出し、それに応答して、ネットワークフロー特徴を導出し、ネットワークコントローラ１６１に与える。新たにインスタンス化されたネットワークフローから十分な量のネットワークフロー特徴が導出され、ネットワークコントローラ１６１に与えられた後に、ネットワークコントローラ１６１は、更なるネットワークフロー特徴が不要であることをネットワークデバイス１６６に通知するために、ネットワークデバイス１６６にアプリケーション識別信号を与える。ネットワークデバイス１６６は、アプリケーション識別信号に応答して、ネットワークフロー特徴を導出し、及び／又は与えるのを中止する。
【００６８】
そして、ネットワークコントローラ１６１は、新たにインスタンス化されたネットワークフローに関連付けられるアプリケーションのアイデンティティを求めるために、ネットワークデバイス１６６によって与えられたネットワークフロー特徴にアプリケーション分類器２を適用する。上記で論じられたように、幾つかの実施態様では、アプリケーション識別モジュールは複数のアプリケーション分類器を含むことができ、ネットワークフロー特徴が導出されたネットワークフローに関連付けられるアプリケーションを識別するために、ネットワークフロー特徴に２つ以上のアプリケーション分類器を適用することができる。
【００６９】
分類の結果は、新たにインスタンス化されたネットワークフローに関連付けられるアプリケーションを識別するアプリケーション識別報告である。ネットワークコントローラ１６１は、ネットワークデバイス１６６にアプリケーション識別報告を与える。ネットワークデバイス１６６は、アプリケーション識別報告を受信し、そして、新たにインスタンス化されたネットワークフローに関連付けられるアプリケーションのアイデンティティに基づいて、フロー動作を適用する。
【００７０】
本明細書において論じられるプロセスは、更なる新たにインスタンス化されたネットワークフローがネットワークデバイス１６２及び１６６において検出され、幾つかの新たにインスタンス化されたネットワークフローについて、アプリケーション識別子が受信されるときに継続することになる。言い換えると、ネットワークデバイス１６２及び１６６並びにネットワークコントローラ１６１は、新たな、又は精緻なアプリケーション分類器を生成し、新たにインスタンス化されたネットワークフローに関連付けられるアプリケーションのアイデンティティを求めるために、本明細書において説明されたように機能し続けることができる。
【００７１】
他の実施態様では、図３に関連して論じられた例の種々の詳細は異なることができる。例えば、他の実施態様では、更なるネットワークデバイス、アプリケーション分類器及び／又は分類器トレーニングモジュールを用いることができる。さらに、幾つかの実施態様では、分類器トレーニングモジュールはネットワークコントローラとともにホストされず、別のネットワークデバイスにホストされる。
【００７２】
図４は、別の実施態様による、アプリケーションアウェアネットワーク管理プロセスの流れ図である。プロセス４００は、ネットワークデバイス又は他のコンピューティングシステムにホストされるアプリケーションアウェアネットワーク制御システム１１０等のアプリケーションアウェアネットワーク制御システム（又はそのモジュール等の構成要素）によって実施することができる。したがって、何らかの動作を実行するプロセス４００を参照しながら本明細書において述べられることは、プロセス４００を実施するアプリケーションアウェアネットワーク制御システムがそれらの動作を実行することを意味するものと理解されたい。
【００７３】
さらに、図４に示されるプロセス４００は、アプリケーションアウェアネットワーク管理プロセスの１つの例示的な実施態様である。本明細書における幾つかの例において論じられるように、他の実施態様では、リソース分類プロセスは、図４に示されるブロック（又はステップ）より多くの、若しくは少ないブロック（又はステップ）、又は図４に示されるのとは異なるブロック（又はステップ）を含むことができる。
【００７４】
ブロック４１０において、プロセス４００は、ネットワークフローがインスタンス化されたと判断し、ブロック４２０において、そのネットワークフローのためのアプリケーション識別子が入手可能であるか否かを判断する。そのネットワークフローのためのアプリケーション識別子が入手可能でない（例えば、アプリケーション識別子がアプリケーション識別エージェントによって与えられなかった）場合には、そのネットワークフローは、そのネットワークフローに関連付けられるアプリケーションのアイデンティティを求めるために分類されるべきである。したがって、ブロック４３０においてアプリケーション識別信号が受信されるまで、ブロック４２１において、ネットワークフローからネットワークフロー特徴が導出される。
【００７５】
ブロック４３０においてアプリケーション識別信号を受信するのに応答して、プロセス４００は、ネットワークフローからネットワークフロー特徴を導出するのを中止し、ブロック４３２において、アプリケーション識別モジュールにネットワークフロー特徴を与える。アプリケーション識別モジュールは、ネットワークフローを分類し、ネットワークフローに関連付けられるアプリケーションのアイデンティティを求めるために、ブロック４２１において導出されたネットワークフロー特徴に１つ又は複数のアプリケーション分類器を適用し、アプリケーション識別報告を生成する。ブロック４３３において、アプリケーション識別報告が受信され、プロセス４００は、アプリケーション識別報告に基づいて、ブロック４３４においてネットワークフローにフロー動作を適用する。そして、プロセス４００は、更なる新たにインスタンス化されたネットワークフローを識別するために、ブロック４１０に進む。
【００７６】
再びブロック４２０を参照すると、そのネットワークフローのためのアプリケーション識別子が入手可能である（例えば、アプリケーション識別エージェントから受信された）場合には、そのアプリケーション識別子に基づいて、ブロック４２２においてフローにフロー動作を適用することができる。他の実施態様では、そのアプリケーション識別子に基づいて、ブロック４４０後に、又はブロック４５０後に、フローにフロー動作を適用することができる。
【００７７】
そして、プロセス４００は、ブロック４４０において、アプリケーション分類器を生成（又は規定）するか、又は精緻化する際に用いるためのネットワークフローを選択するか否かを判断する。上記で論じられたように、プロセス４００は、種々の判定基準及び方法を用いてネットワークフローを選択することができる。ブロック４４０においてネットワークフローが選択されない場合には、更なる新たにインスタンス化されたネットワークフローを識別するために、プロセス４００はブロック４１０に進む。しかしながら、ブロック４４０においてネットワークフローが選択される場合には、アプリケーション分類器を生成又は精緻化するために、ネットワークフローについての情報が分類器トレーニングモジュールに与えられる。
【００７８】
より具体的には、図４に示される例では、ブロック４４１において、ネットワークフローのためのアプリケーション識別子が分類器トレーニングモジュールに与えられ、ブロック４４２において、ネットワークフローからネットワークフロー特徴が導出され、ブロック４４３において、ネットワークフロー特徴が分類器トレーニングモジュールに与えられる。ブロック４４２及び４４３は、ブロック４５０においてアプリケーション識別信号が受信され、プロセス４００がネットワークフロー特徴を導出し、与えるのを中止するまで繰り返される。上記で論じられたように、そしてブロック４２１、４３０、４３１及び４３２によって示されるように、幾つかの実施態様では、アプリケーション識別信号が受信され、それに応答して、プロセス４００がネットワークフロー特徴を導出するのを中止し、分類器トレーニングモジュール又はアプリケーション識別モジュール等のエンティティにネットワークフロー特徴を与えるまで、ネットワークフロー特徴が導出される。
【００７９】
ブロック４５０においてアプリケーション識別信号が受信されるのに応答して、プロセス４００がネットワークフロー特徴を導出し、分類器トレーニングモジュールに与えるのを中止した後に、更なる新たにインスタンス化されたネットワークフローを識別するために、プロセス４００はブロック４１０に進む。分類器トレーニングモジュールはアプリケーション分類器を生成（又は修正）し、アプリケーション分類器を１つ又は複数のアプリケーション識別モジュールに与える。
【００８０】
上記で論じられたように、図４に示される例に種々の変更を加えることができる。例えば、幾つかの実施態様では、プロセス４００は、アプリケーション識別信号が受信される前に、１つ又は複数のアプリケーション識別報告を受信する。さらに、プロセス４００は、アプリケーション識別信号が受信される前に、そのようなアプリケーション識別報告に応答してフロー動作を適用することができる。これは、例えば、アプリケーション識別モジュールが予備アプリケーション識別報告をアプリケーションアウェアネットワーク制御システムに与えることができるようにし、それに応答して、アプリケーションアウェアネットワーク制御システムが、ネットワークフローに関連付けられるアプリケーションの識別を精緻化しながら、何らかの動作を適用できるようにするのに役に立つことができる。
【００８１】
具体例として、ネットワークフローに関連付けられるアプリケーションは特定のテレビ会議アプリケーションとすることができ、アプリケーション識別モジュールは、コラボレーションアプリケーション及びテレビ会議アプリケーションのための汎用アプリケーション分類器と、特定のテレビ会議アプリケーションのための特有アプリケーション分類器とを含むことができる。ネットワークフローから導出された少量のネットワークフロー特徴がこれらの分類器に適用された後に、アプリケーション識別モジュールは、アプリケーションを全体的にコラボレーションアプリケーションとして識別し、アプリケーションを全体的にコラボレーションアプリケーションとして識別する予備アプリケーション識別報告をアプリケーションアウェアネットワーク制御システムに与える。予備アプリケーション識別報告は、そのための精緻な１つ又は複数のアプリケーション識別報告が予想されるアプリケーション識別報告である。精緻なアプリケーション識別報告は、予備アプリケーション識別報告より具体的な、又は詳細なアプリケーション識別報告である。それに応答して、アプリケーションアウェアネットワーク制御システムは対応するフロー動作を適用する。
【００８２】
ネットワークフローから導出された更なるネットワークフロー特徴がこれらに分類器に適用された後に、アプリケーション識別モジュールは、アプリケーションを全体的にテレビ会議アプリケーションとして識別し、アプリケーションを全体的にテレビ会議アプリケーションとして識別する予備アプリケーション識別報告をアプリケーションアウェアネットワーク制御システムに与える。ここで、この予備アプリケーション識別報告は、先行する予備アプリケーション識別報告の精緻なアプリケーション識別報告と見なすこともできる。この予備アプリケーション識別報告に応答して、アプリケーションアウェアネットワーク制御システムは、汎用テレビ会議アプリケーションに対応するフロー動作を適用する。
【００８３】
最後に、ネットワークフローから導出された更なるネットワークフロー特徴がこれらの分類器に適用された後に、アプリケーション識別モジュールは、アプリケーションを具体的に特定のテレビ会議アプリケーションとして識別し、アプリケーションを具体的に特定のテレビ会議アプリケーションとして識別する精緻なアプリケーション識別報告をアプリケーションアウェアネットワーク制御システムに与え、アプリケーション識別信号を与える。ここで、このアプリケーション識別報告は、１つ又は複数の更なる精緻なアプリケーション識別報告が予想されないので、予備アプリケーション識別報告とは見なされない。この精緻なアプリケーション識別報告に応答して、アプリケーションアウェアネットワーク制御システムは、ネットワークフロー特徴を導出し、与えるのを中止し、特定のテレビ会議アプリケーションに対応するフロー動作を適用する。したがって、ネットワークフローからネットワークフロー特徴が導出される間に、種々のフロー動作をネットワークフローに適用することができる。
【００８４】
図５は、一実施態様による、アプリケーションアウェアネットワーク制御システムをホストするネットワークデバイスの概略的なブロック図である。図５に示される例では、ネットワークデバイス５００は、プロセッサ５１０と、通信インターフェース５２１及び５２２と、メモリ５３０とを含む。ネットワークデバイス５００は、例えば、スイッチ、ルータ、ブリッジ、ゲートウェイ、サーバ、又は何らかの他のネットワークデバイスとすることができる。幾つかの実施態様では、アプリケーションアウェアネットワーク制御システムをホストするネットワークデバイスは、それ自体がアプリケーションアウェアネットワーク制御システムと呼ばれる。
【００８５】
プロセッサ５１０は、命令、コード又は信号を実行又は解釈するハードウェア及びソフトウェアの任意の組み合わせである。例えば、プロセッサ５１０は、マイクロプロセッサ、特定用途向け集積回路（ＡＳＩＣ）、汎用グラフィックス処理ユニット（ＧＰＧＰＵ：general purpose graphics processing unit）等のＧＰＵ、プロセッサ又はコンピューティングシステムのクラスタ又はネットワーク等の分散プロセッサ、マルチコア若しくはマルチプロセッサ式プロセッサ、又は仮想マシンの仮想若しくは論理プロセッサとすることができる。具体例として、幾つかの実施態様では、プロセッサ５１０は、高速で又は通信インターフェース５２１及び５２２の伝送路速度でデータパケットを処理するために、１つ又は複数の汎用プロセッサ及び１つ又は複数の特定用途向けデータパケットプロセッサ等の複数のプロセッサを含むことができる。
【００８６】
通信インターフェース５２０は、プロセッサ５１０が通信リンクを介して他のプロセッサ、ネットワークデバイス又はコンピューティングシステムと通信することができるようにするモジュールである。具体例として、通信インターフェース５２０は、リソース認可者（resource authority）からデータを受信し、リソース認可者にデータを送信するために、ネットワークインターフェースカードと、プロセッサ５１０にホストされる通信プロトコルスタック（例えば、ネットワークプロトコルを実施するために、メモリ５３０に記憶され、プロセッサ５１０において実行又は解釈される命令又はコード）とを含むことができる。具体例として、通信インターフェース５２０は、有線インターフェース、ワイヤレスインターフェース、光インターフェース、イーサネット（登録商標）インターフェース、ファイバチャネルインターフェース、インフィニバンドインターフェース、ＩＥＥＥ８０２．１１インターフェース、又はプロセッサ５１０が他のプロセッサ若しくはコンピューティングシステムと通信するためにデータを表す信号若しくはシンボルを交換することができる何らかの他の通信インターフェースとすることができる。
【００８７】
メモリ５３０は、命令、コード、データ又は他の情報を記憶するプロセッサ可読媒体である。本明細書において用いられるときに、プロセッサ可読媒体は、命令、コード、データ又は他の情報を非一時的に記憶し、プロセッサが直接的又は間接的にアクセス可能である任意の媒体である。言い換えると、プロセッサ可読媒体は、プロセッサが命令、コード、データ又は他の情報にアクセスすることができる非一時的媒体である。例えば、メモリ５３０は、揮発性ランダムアクセスメモリ（ＲＡＭ）、ハードディスクドライブ若しくはソリッドステートドライブ、コンパクトディスク（ＣＤ）、デジタル多用途ディスク（ＤＶＤ）、セキュアデジタル（商標）（ＳＤ）カード、マルチメディアカード（ＭＭＣ）カード、コンパクトフラッシュ（登録商標）（ＣＦ）カード等の永続記憶装置、又はその組み合わせ又は他のメモリの組み合わせとすることができる。言い換えると、メモリ５３０は、複数のプロセッサ可読媒体を表すことができる。幾つかの実施態様では、メモリ５３０は、プロセッサ５１０と一体に構成することができるか、プロセッサ５１０と別にすることができるか、又はコンピューティングシステム５００の外部に存在することができる。
【００８８】
メモリ５３０は、プロセッサ５１０において実行されるときに、オペレーティングシステム５３１と、アプリケーションアウェアネットワーク制御システム５３２の構成要素（又はモジュール）等の他のモジュールとを実施する命令又はコードを含む。言い換えると、メモリ５３０に記憶される命令又はコードはモジュールと呼ぶことができる。また、メモリ５３０は、図５には示されない他のモジュールを実施する更なるコード又は命令、及び／又はルーティングテーブル又は転送テーブル等の他のデータセットを記憶するように動作可能である。
【００８９】
幾つかの実施態様では、ネットワークデバイス５００は仮想化ネットワークデバイスとすることができる。例えば、ネットワークデバイス５００は、コンピューティングサーバ又は物理ネットワークデバイスにおいて仮想マシンとしてホストすることができる。
【００９０】
アプリケーションアウェアネットワーク制御システム５３２は、種々のメモリ又はプロセッサ可読媒体から、ネットワークデバイス５００にアクセス又はインストールすることができる。例えば、ネットワークデバイス５００は、通信インターフェース（図示せず）を介して、リモートプロセッサ可読媒体にあるアプリケーションアウェアネットワーク制御システム５３２にアクセスすることができる。具体例として、ネットワークデバイス５００は、ブートプロセス（又はシーケンス）中にオペレーティングシステム５３１及びアプリケーションアウェアネットワーク制御システム５３２の構成要素にアクセスするネットワークブートデバイスとすることができる。
【００９１】
別の例として、リソース５００は、（例えば、埋め込みフラッシュメモリ、ソリッドステートディスクドライブ又はハードディスクドライブなどの）プロセッサ可読媒体、又はそのようなプロセッサ可読媒体にアクセスするデバイスを含むことができ（図５には示されていない）、そのプロセッサ可読媒体アクセスデバイスを介して、プロセッサ可読媒体にあるアプリケーションアウェアネットワーク制御システム５３２の構成要素にアクセスすることができる。
【００９２】
これまでいくつかの実施態様を図示して説明してきたが、形態及び細部に関して種々の変更を加えることができる。例えば、１つの実施態様及び／又はプロセスに関連して説明された幾つかの特徴は、他の実施態様に関連付けることができる。言い換えると、１つの実施態様に関連して説明されたプロセス、特徴、構成要素及び／又は特性は他の構成要素においても有用である可能性がある。別の例として、特定のモジュール又は要素に関連して上記で論じられた機能を、他の実施態様において異なるモジュール、エンジン又は構成要素に含めることもできる。さらに、本明細書において説明されたシステム、装置及び方法は、説明された異なる実施態様の構成要素及び／又は特徴の種々の組み合わせ及び／又は部分的組み合わせを含みうることは理解されたい。したがって、１つ又は複数の実施態様を参照しながら説明された特徴は、本明細書において説明された他の実施態様と組み合わせることができる。
【００９３】
本明細書において用いられるときに、「１つ」及び「その」という単数形は、文脈において他に明確に指示されない限り複数形も含む。したがって、例えば、「モジュール」という用語は、１つ又は複数のモジュール又はモジュールの組み合わせを意味することを意図している。さらに、本明細書において用いられるときに、「〜に基づく」という用語は、「〜に少なくとも部分的に基づく」を意味する。したがって、何らかの根拠に基づくとして説明された特徴は、その根拠にのみ基づくことができるか、又はその根拠と、１つ若しくは複数の他の根拠とに基づくことができる。
【図１】
2016528630.tif 000003
【図２】
2016528630.tif 000004
【図３】
2016528630.tif 000005
【図４】
2016528630.tif 000006
【図５】
2016528630.tif 000007
【国際調査報告】
2016528630.tif 000008
2016528630.tif 000009