(57)【要約】      （修正有）【課題】特定のタイプのネットワークトラフィックを受信および処理するのに最も最適である宛先コンピューティングデバイスの個別のコンポーネントおよび／またはコンポーネント群に基づき転送決定を行う。【解決手段】ネットワークコントローラ１７０は、パケットによりターゲットとされているアプリケーションと、アプリケーションを実行している処理ノードとを示す、パケットに対応するフロー情報を決定し、コンピューティングデバイス１１０へ送信する。コンピューティングデバイス１１０は、アプリケーションを実行している処理ノードのネットワークアダプタにおいてフローフィルタをプログラミングする。ネットワークスイッチ１９０は、ネットワークコントローラ１７０から転送された転送情報に基づき、受信したパケットを、アプリケーションを実行している処理ノードのネットワークアダプタへ転送する。【選択図】図１
2016046806.tif 000002
【特許請求の範囲】
【請求項１】
複数のネットワークフローを複数の処理リソースにアライメントするためのコンピューティングデバイスであり、
アーキテクチャ情報をネットワークコントローラへ送信するアーキテクチャ通知モジュールを備え、
前記アーキテクチャ情報は、前記コンピューティングデバイスの複数の処理ノードの各処理ノードのアーキテクチャを規定しており、
各処理ノードはプロセッサと、メモリと、ネットワークアダプタとを有し、
前記コンピューティングデバイスは、ローカルフロー管理モジュールを備え、
前記ローカルフロー管理モジュールは、（ｉ）前記ネットワークコントローラからネットワークフロー情報を受信し、
前記ネットワークフロー情報はネットワークパケットと関連付けられ、前記複数の処理ノードのうち前記ネットワークパケットを処理するターゲットの処理ノードを、前記ターゲットの処理ノードにより実行されるアプリケーションに少なくとも基づき識別し、
前記ローカルフロー管理モジュールは、（ｉｉ）前記ネットワークフロー情報に少なくとも基づき、前記ターゲットの処理ノードの前記ネットワークアダプタにおいてフローフィルタを、前記ターゲットの処理ノードの前記メモリにおける、前記ネットワークパケットを受信するメモリキューを指定するようプログラミングし、
前記ターゲットの処理ノードの前記ネットワークアダプタはネットワークスイッチから前記ネットワークパケットを受信し、前記ネットワークパケットは、前記ターゲットの処理ノードにより実行される前記アプリケーションにより処理される、コンピューティングデバイス。
【請求項２】
前記アーキテクチャ情報は、前記複数の処理ノードの各処理ノードにより実行される複数のアプリケーションを示す、請求項１に記載のコンピューティングデバイス。
【請求項３】
各処理ノードの前記プロセッサは複数の処理コアを含み、
前記アーキテクチャ情報は、各処理ノードの各プロセッサの各処理コアにより実行される前記複数のアプリケーションを示すデータを含み、
前記ネットワークフロー情報を受信することは、前記ターゲットの処理ノードの処理コアにより実行されるアプリケーションに少なくとも基づき、前記ネットワークパケットを処理する前記ターゲットの処理ノードを識別するネットワークフロー情報を前記ネットワークコントローラから受信することを含む、請求項２に記載のコンピューティングデバイス。
【請求項４】
前記ターゲットの処理ノードの前記ネットワークアダプタはさらに、（ｉ）前記ターゲットの処理ノードの前記メモリにおける前記メモリキューを前記ネットワークアダプタのポートに割り当て、
前記ネットワークスイッチから前記ネットワークパケットを受信することは、前記ネットワークアダプタの前記ポートを介し前記ネットワークスイッチから前記ネットワークパケットを受信することを含み、
前記ターゲットの処理ノードの前記ネットワークアダプタはさらに、（ｉｉ）受信された前記ネットワークパケットを、前記ネットワークアダプタの前記ポートに割り当てられた前記ターゲットの処理ノードの前記メモリにおける前記メモリキューにコピーする、請求項１から３のいずれか一項に記載のコンピューティングデバイス。
【請求項５】
前記ターゲットの処理ノードにより実行される前記アプリケーションは、（ｉ）前記受信されたネットワークパケットが、前記ターゲットの処理ノードの前記メモリにおける前記メモリキューから取得されるべく利用可能であるか決定し、（ｉｉ）前記受信されたネットワークパケットが前記メモリキューから取得されるべく利用可能であるとの決定に応答して、前記ターゲットの処理ノードの前記メモリにおける前記メモリキューから前記受信されたネットワークパケットを取得する、請求項４に記載のコンピューティングデバイス。
【請求項６】
前記ネットワークパケットが前記メモリキューから取得されるべく利用可能であるか決定することは、（ｉ）リファレンスポーリングインターバルの関数として前記ターゲットの処理ノードの前記メモリにおける前記メモリキューをポーリングすること、または、（ｉｉ）前記ネットワークパケットが前記メモリキューから取得されるべく利用可能であることを示す割込みを受信することのうち少なくとも１つを含む、請求項５に記載のコンピューティングデバイス。
【請求項７】
前記ネットワークパケットは第１ネットワークパケットを含み、
前記ネットワークフロー情報は第１ネットワークフロー情報を含み、
前記フローフィルタは第１フローフィルタを含み、
前記ターゲットの処理ノードの前記メモリは第１メモリを含み、
前記ターゲットの処理ノードの前記メモリにおける前記メモリキューは前記ターゲットの処理ノードの前記第１メモリにおける第１メモリキューを含み、
前記ターゲットの処理ノードの前記ネットワークアダプタは前記ターゲットの処理ノードの第１ネットワークアダプタを含み、
前記ローカルフロー管理モジュールはさらに、（ｉ）前記ネットワークコントローラから第２ネットワークフロー情報を受信し、
前記第２ネットワークフロー情報は第２ネットワークパケットと関連付けられ、前記複数の処理ノードのうち前記第２ネットワークパケットを処理する異なる処理ノードを、前記異なる処理ノードにより実行される他のアプリケーションに少なくとも基づき識別し、
前記ローカルフロー管理モジュールはさらに、（ｉｉ）前記第２ネットワークフロー情報に少なくとも基づき、前記異なる処理ノードの第２ネットワークアダプタにおいて第２フローフィルタを、前記異なる処理ノードの第２メモリにおける、前記第２ネットワークパケットを受信する第２メモリキューを指定するようプログラミングし、
前記異なる処理ノードの前記第２ネットワークアダプタは前記ネットワークスイッチから前記第２ネットワークパケットを受信し、
前記第２ネットワークパケットは、前記異なる処理ノードにより実行される前記他のアプリケーションにより処理される、請求項４に記載のコンピューティングデバイス。
【請求項８】
前記ターゲットの処理ノードは、前記ネットワークコントローラから受信された複数の命令に少なくとも基づき他のアプリケーションを実行する、請求項１から３のいずれか一項に記載のコンピューティングデバイス。
【請求項９】
複数のネットワークフローを複数の処理リソースにアライメントするための方法であり、
複数の処理ノードを有するコンピューティングデバイスにより、アーキテクチャ情報をネットワークコントローラへ送信する段階を備え、
前記アーキテクチャ情報は、各処理ノードのアーキテクチャを規定しており、
各処理ノードはプロセッサと、メモリと、ネットワークアダプタとを含み、
前記方法は、前記コンピューティングデバイスにより、前記ネットワークコントローラからネットワークフロー情報を受信する段階を備え、
前記ネットワークフロー情報はネットワークパケットと関連付けられ、前記複数の処理ノードのうち前記ネットワークパケットを処理するターゲットの処理ノードを、前記ターゲットの処理ノードにより実行されるアプリケーションに少なくとも基づき識別し、
前記方法は、
前記コンピューティングデバイスにより、前記ネットワークフロー情報に少なくとも基づき、前記ターゲットの処理ノードの前記ネットワークアダプタにおいてフローフィルタを、前記ターゲットの処理ノードの前記メモリにおける、前記ネットワークパケットを受信するメモリキューを指定するようプログラミングする段階と、
前記ターゲットの処理ノードの前記ネットワークアダプタにより、ネットワークスイッチから前記ネットワークパケットを受信する段階と
を備え、
前記ネットワークパケットは、前記ターゲットの処理ノードにより実行される前記アプリケーションにより処理される、方法。
【請求項１０】
前記アーキテクチャ情報は、前記複数の処理ノードの各処理ノードにより実行される複数のアプリケーションを示す、請求項９に記載の方法。
【請求項１１】
前記ターゲットの処理ノードの前記ネットワークアダプタにより、前記ターゲットの処理ノードの前記メモリにおける前記メモリキューを前記ネットワークアダプタのポートに割り当てる段階をさらに備え、
前記ネットワークスイッチから前記ネットワークパケットを受信する段階は、前記ネットワークアダプタの前記ポートを介し前記ネットワークスイッチから前記ネットワークパケットを受信する段階を有し、
前記方法は、前記ターゲットの処理ノードの前記ネットワークアダプタにより、受信された前記ネットワークパケットを、前記ネットワークアダプタの前記ポートに割り当てられた前記ターゲットの処理ノードの前記メモリにおける前記メモリキューへコピーする段階をさらに備える、請求項９に記載の方法。
【請求項１２】
前記ターゲットの処理ノードにより実行される前記アプリケーションにより、前記受信されたネットワークパケットが、前記ターゲットの処理ノードの前記メモリにおける前記メモリキューから取得されるべく利用可能であるか決定する段階と、
前記ターゲットの処理ノードにより実行される前記アプリケーションにより、前記受信されたネットワークパケットが前記メモリキューから取得されるべく利用可能であるとの決定に応答して、前記ターゲットの処理ノードの前記メモリにおける前記メモリキューから前記受信されたネットワークパケットを取得する段階と
をさらに備える、請求項１１に記載の方法。
【請求項１３】
前記ネットワークパケットは第１ネットワークパケットを含み、
前記ネットワークフロー情報は第１ネットワークフロー情報を含み、
前記フローフィルタは第１フローフィルタを含み、
前記ターゲットの処理ノードの前記メモリは第１メモリを含み、
前記ターゲットの処理ノードの前記メモリにおける前記メモリキューは前記ターゲットの処理ノードの前記第１メモリにおける第１メモリキューを含み、
前記ターゲットの処理ノードの前記ネットワークアダプタは前記ターゲットの処理ノードの第１ネットワークアダプタを含み、
前記方法は、
前記コンピューティングデバイスにより、前記ネットワークコントローラから第２ネットワークフロー情報を受信する段階をさらに備え、
前記第２ネットワークフロー情報は第２ネットワークパケットと関連付けられ、前記複数の処理ノードのうち前記第２ネットワークパケットを処理する異なる処理ノードを、前記異なる処理ノードにより実行される他のアプリケーションに少なくとも基づき識別し、
前記方法は、
前記コンピューティングデバイスにより、前記第２ネットワークフロー情報に少なくとも基づき、前記異なる処理ノードの第２ネットワークアダプタにおいて第２フローフィルタを、前記異なる処理ノードの第２メモリにおける、前記第２ネットワークパケットを受信する第２メモリキューを指定するようプログラミングする段階と、
前記異なる処理ノードの前記第２ネットワークアダプタにより、前記ネットワークスイッチから前記第２ネットワークパケットを受信する段階と
をさらに備え、
前記第２ネットワークパケットは、前記異なる処理ノードにより実行される前記他のアプリケーションにより処理される、請求項１１に記載の方法。
【請求項１４】
コンピューティングデバイスに、請求項９から１３のいずれか一項に記載の方法を実行させるプログラム。
【請求項１５】
複数のネットワークフローを複数の処理リソースにアライメントするためのネットワークコントローラであり、
コンピューティングデバイスからアーキテクチャ情報を受信するアーキテクチャ管理モジュールを備え、
前記アーキテクチャ情報は、前記コンピューティングデバイスの複数の処理ノードのそれぞれのアーキテクチャを規定しており、
前記ネットワークコントローラは、フロー管理モジュールを備え、
前記フロー管理モジュールは、（ｉ）ネットワークスイッチから、ネットワークパケットと関連付けられた転送情報のリクエストを受信し、（ｉｉ）前記アーキテクチャ情報に少なくとも基づき前記ネットワークパケットと関連付けられたネットワークフロー情報を決定し、
前記ネットワークフロー情報は、前記コンピューティングデバイスの前記複数の処理ノードのうち前記ネットワークパケットを処理するターゲットの処理ノードを、前記ターゲットの処理ノードにより実行されるアプリケーションに少なくとも基づき識別し、
前記フロー管理モジュールは、（ｉｉｉ）決定された前記ネットワークフロー情報を前記コンピューティングデバイスへ送信して、前記ネットワークフロー情報に少なくとも基づき前記ターゲットの処理ノードのネットワークアダプタにおいてフローフィルタをプログラミングし、
前記フローフィルタは、前記ターゲットの処理ノードのメモリにおける、前記ネットワークパケットを受信するメモリキューを指定し、
前記フロー管理モジュールは、（ｉｖ）前記ネットワークパケットと関連付けられた前記転送情報を決定し、
前記転送情報は、前記コンピューティングデバイスの前記ターゲットの処理ノードの前記ネットワークアダプタに通信可能に結合された、前記ネットワークパケットが転送されることになる前記ネットワークスイッチのポートを識別し、
前記フロー管理モジュールは、（ｖ）決定された前記転送情報を前記ネットワークスイッチへ送信し、
前記ネットワークパケットは、前記転送情報に少なくとも基づき前記ネットワークスイッチにより転送される、ネットワークコントローラ。
【請求項１６】
前記コンピューティングデバイスから前記アーキテクチャ情報を受信することは、各処理ノードにより実行される複数のアプリケーションを示すアプリケーションデータ、前記複数の処理ノードのそれぞれのプロセッサを示すプロセッサデータ、前記複数の処理ノードのそれぞれの前記プロセッサの複数の処理コアを示すプロセッサコアデータ、前記複数の処理ノードのそれぞれにおける割り当てられた複数のメモリキューを示すメモリキューデータ、または前記複数の処理ノードのそれぞれの複数のネットワークアダプタの複数のポートを示すポートデータのうち少なくとも１つを受信することを含む、請求項１５に記載のネットワークコントローラ。
【請求項１７】
前記コンピューティングデバイスから前記アーキテクチャ情報を受信することは、前記複数の処理ノードのそれぞれのプロセッサの各処理コアにより実行される複数のアプリケーションを示すアプリケーション実行データを受信することを含み、
前記ネットワークフロー情報を決定することは、前記アプリケーション実行データに少なくとも基づき前記ネットワークパケットと関連付けられたネットワークフロー情報を決定することを含み、
前記ネットワークフロー情報は、前記コンピューティングデバイスの前記複数の処理ノードのうち前記ネットワークパケットを処理する前記ターゲットの処理ノードを、前記ターゲットの処理ノードの処理コアにより実行されるアプリケーションに少なくとも基づき識別する、請求項１５に記載のネットワークコントローラ。
【請求項１８】
前記転送情報は第１転送情報を含み、
転送情報の前記リクエストは前記第１転送情報のリクエストを含み、
前記ネットワークパケットは第１ネットワークパケットを含み、
前記ネットワークフロー情報は第１ネットワークフロー情報を含み、
前記フローフィルタは第１フローフィルタを含み、
前記ターゲットの処理ノードの前記メモリは第１メモリを含み、
前記ターゲットの処理ノードの前記メモリにおける前記メモリキューは、前記ターゲットの処理ノードの前記第１メモリにおける第１メモリキューを含み、
前記ターゲットの処理ノードの前記ネットワークアダプタは前記ターゲットの処理ノードの第１ネットワークアダプタを含み、
前記フロー管理モジュールはさらに、（ｉ）前記ネットワークスイッチから、第２ネットワークパケットと関連付けられた第２転送情報の第２リクエストを受信し、（ｉｉ）前記アーキテクチャ情報に少なくとも基づき、前記第２ネットワークパケットと関連付けられた第２ネットワークフロー情報を決定し、
前記第２ネットワークフロー情報は、前記コンピューティングデバイスの前記複数の処理ノードのうち前記第２ネットワークパケットを処理する異なる処理ノードを、前記異なる処理ノードにより実行される他のアプリケーションに少なくとも基づき識別し、
前記フロー管理モジュールはさらに、（ｉｉｉ）決定された前記第２ネットワークフロー情報を前記コンピューティングデバイスへ送信して、前記第２ネットワークフロー情報に少なくとも基づき前記異なる処理ノードの第２ネットワークアダプタにおける第２フローフィルタをプログラミングし、
前記第２フローフィルタは、前記異なる処理ノードの第２メモリにおける、前記第２ネットワークパケットを受信する第２メモリキューを指定し、
前記フロー管理モジュールはさらに、（ｉｖ）前記第２ネットワークパケットと関連付けられた前記第２転送情報を決定し、
前記第２転送情報は、前記コンピューティングデバイスの前記異なる処理ノードの前記第２ネットワークアダプタへ通信可能に結合される、前記第２ネットワークパケットが転送されることになる前記ネットワークスイッチの第２ポートを識別し、
前記フロー管理モジュールはさらに、（ｖ）決定された前記第２転送情報を前記ネットワークスイッチへ送信し、
前記第２ネットワークパケットは、前記第２転送情報に少なくとも基づき、前記ネットワークスイッチにより転送される、請求項１５から１７のいずれか一項に記載のネットワークコントローラ。
【請求項１９】
前記フロー管理モジュールはさらに、命令メッセージを前記コンピューティングデバイスへ送信し、
前記命令メッセージは、前記コンピューティングデバイスに、前記コンピューティングデバイスの前記複数の処理ノードのうち１または複数により他のアプリケーションを実行するよう命令する、請求項１５から１７のいずれか一項に記載のネットワークコントローラ。
【請求項２０】
複数のネットワークフローを複数の処理リソースにアライメントするための方法であり、
ネットワークコントローラにより、コンピューティングデバイスからアーキテクチャ情報を受信する段階を備え、
前記アーキテクチャ情報は、前記コンピューティングデバイスの複数の処理ノードのそれぞれのアーキテクチャを規定しており、
前記方法は、
前記ネットワークコントローラにより、およびネットワークスイッチから、ネットワークパケットと関連付けられた転送情報のリクエストを受信する段階と、
前記ネットワークコントローラにより、前記アーキテクチャ情報に少なくとも基づき前記ネットワークパケットと関連付けられたネットワークフロー情報を決定する段階と
を備え、
前記ネットワークフロー情報は、前記コンピューティングデバイスの前記複数の処理ノードのうち前記ネットワークパケットを処理するターゲットの処理ノードを、前記ターゲットの処理ノードにより実行されるアプリケーションに少なくとも基づき識別し、
前記方法は、前記ネットワークコントローラにより、決定された前記ネットワークフロー情報を前記コンピューティングデバイスへ送信して、前記ネットワークフロー情報に少なくとも基づき前記ターゲットの処理ノードのネットワークアダプタにおいてフローフィルタをプログラミングする段階を備え、
前記フローフィルタは、前記ターゲットの処理ノードのメモリにおける、前記ネットワークパケットを受信するメモリキューを指定し、
前記方法は、前記ネットワークコントローラにより、前記ネットワークパケットと関連付けられた前記転送情報を決定し、
前記転送情報は、前記コンピューティングデバイスの前記ターゲットの処理ノードの前記ネットワークアダプタに通信可能に結合された、前記ネットワークパケットが転送されることになる前記ネットワークスイッチのポートを識別し、
前記方法は、前記ネットワークコントローラにより、決定された前記転送情報を前記ネットワークスイッチへ送信する段階を備え、
前記ネットワークパケットは、前記転送情報に少なくとも基づき前記ネットワークスイッチにより転送される、方法。
【請求項２１】
前記コンピューティングデバイスから前記アーキテクチャ情報を受信する段階は、前記複数の処理ノードのそれぞれのプロセッサの各処理コアにより実行される複数のアプリケーションを示すアプリケーション実行データを受信する段階を含み、
前記ネットワークフロー情報を決定する段階は、前記アプリケーション実行データに少なくとも基づき前記ネットワークパケットと関連付けられたネットワークフロー情報を決定する段階を含み、
前記ネットワークフロー情報は、前記コンピューティングデバイスの前記複数の処理ノードのうち前記ネットワークパケットを処理する前記ターゲットの処理ノードを、前記ターゲットの処理ノードの処理コアにより実行されるアプリケーションに少なくとも基づき識別する、請求項２０に記載の方法。
【請求項２２】
前記転送情報は第１転送情報を含み、
転送情報の前記リクエストは前記第１転送情報のリクエストを含み、
前記ネットワークパケットは第１ネットワークパケットを含み、
前記ネットワークフロー情報は第１ネットワークフロー情報を含み、
前記フローフィルタは第１フローフィルタを含み、
前記ターゲットの処理ノードの前記メモリは第１メモリを含み、
前記ターゲットの処理ノードの前記メモリにおける前記メモリキューは、前記ターゲットの処理ノードの前記第１メモリにおける第１メモリキューを含み、
前記ターゲットの処理ノードの前記ネットワークアダプタは前記ターゲットの処理ノードの第１ネットワークアダプタを含み、
前記方法は、
前記ネットワークコントローラにより、および前記ネットワークスイッチから、第２ネットワークパケットと関連付けられた第２転送情報の第２リクエストを受信する段階と、
前記ネットワークコントローラにより、前記アーキテクチャ情報に少なくとも基づき、前記第２ネットワークパケットと関連付けられた第２ネットワークフロー情報を決定する段階と
をさらに備え、
前記第２ネットワークフロー情報は、前記コンピューティングデバイスの前記複数の処理ノードのうち前記第２ネットワークパケットを処理する異なる処理ノードを、前記異なる処理ノードにより実行される他のアプリケーションに少なくとも基づき識別し、
前記方法は、前記ネットワークコントローラにより、決定された前記第２ネットワークフロー情報を前記コンピューティングデバイスへ送信して、前記第２ネットワークフロー情報に少なくとも基づき前記異なる処理ノードの第２ネットワークアダプタにおける第２フローフィルタをプログラミングする段階をさらに備え、
前記第２フローフィルタは、前記異なる処理ノードの第２メモリにおける、前記第２ネットワークパケットを受信する第２メモリキューを指定し、
前記方法は、前記ネットワークコントローラにより、前記第２ネットワークパケットと関連付けられた前記第２転送情報を決定する段階をさらに備え、
前記第２転送情報は、前記コンピューティングデバイスの前記異なる処理ノードの前記第２ネットワークアダプタへ通信可能に結合される、前記第２ネットワークパケットが転送されることになる前記ネットワークスイッチの第２ポートを識別し、
前記方法は、前記ネットワークコントローラにより、決定された前記第２転送情報を前記ネットワークスイッチへ送信する段階をさらに備え、
前記第２ネットワークパケットは、前記第２転送情報に少なくとも基づき、前記ネットワークスイッチにより転送される、請求項２０に記載の方法。
【請求項２３】
ネットワークコントローラに、請求項２０から２２のいずれか一項に記載の方法を実行させるプログラム。
【請求項２４】
複数のネットワークフローを複数の処理リソースにアライメントするためのネットワークスイッチであり、
パケット転送モジュールを備え、
前記パケット転送モジュールは、（ｉ）リモートコンピューティングデバイスから前記ネットワークスイッチの第１ポートを介しネットワークパケットを受信し、（ｉｉ）受信された前記ネットワークパケットと関連付けられた転送情報のリクエストをネットワークコントローラへ送信し、（ｉｉｉ）前記ネットワークコントローラから前記転送情報を受信し、
前記転送情報は、前記受信されたネットワークパケットが転送されることになる前記ネットワークスイッチの第２ポートを示しており、
前記パケット転送モジュールは、（ｉｖ）前記受信されたネットワークパケットをコンピューティングデバイスへの送信のために前記第２ポートへ転送し、
前記受信されたネットワークパケットは、前記コンピューティングデバイスの複数の処理ノードのうちのターゲットの処理ノードにより実行されるアプリケーションにより処理される、ネットワークスイッチ。
【請求項２５】
接続情報を前記ネットワークコントローラへ送信する接続管理モジュールをさらに備え、
前記接続情報は、前記ネットワークスイッチと、前記コンピューティングデバイスまたは前記リモートコンピューティングデバイスのうち少なくとも１つとの間の前記ネットワークスイッチの１または複数のポートを介した１または複数のネットワーク接続を示す、請求項２４に記載のネットワークスイッチ。
【発明の詳細な説明】
【背景技術】
【０００１】
現代のコンピューティングデバイスは、私的な、ビジネスでの、およびソーシャルな使用のためのユビキタスなツールとなっている。そういうものとして、多くの現代のコンピューティングデバイスは、インターネットおよび企業のイントラネットを含む様々なデータネットワークに接続して、そのようなネットワーク上でデータ通信を取得および受信することが可能である。多くの場合、一のネットワークに接続されたコンピューティングデバイスは、異なるネットワーク上で接続されたコンピューティングデバイスと通信を行う必要がある。
【０００２】
ソフトウェアデファインドネットワーキング（ＳＤＮ）は、ネットワークトラフィックがどのように処理されることになり、実際にネットワークトラフィックを処理するデバイスまたはコンポーネントが別個のプレーン（すなわち、制御プレーンおよびデータプレーン）にどのように分離されるかについての決定が行われるネットワーキングアーキテクチャである。ＳＤＮ環境で、例えば、ネットワークスイッチなどのネットワークデバイスの代わりに、集中化されたＳＤＮコントローラが、ネットワークトラフィックに関する転送決定を行うのに用いられる。典型的には、転送決定は、ＳＤＮ環境で動作しているネットワークデバイスへ伝えられ、次にネットワークデバイスは、ネットワークトラフィックと関連付けられたネットワークパケットを、ＳＤＮコントローラにより行われた転送決定に基づき次の宛先へ転送する。しかし、ＳＤＮコントローラは、ネットワークトラフィックに関するきめ細かい転送決定を行う能力が欠如していることが多い。具体的には、典型的なＳＤＮコントローラは、デバイスアーキテクチャレベルではなくむしろシステムレベルで転送決定を行う。つまり、典型的なＳＤＮコントローラは、特定のタイプのネットワークトラフィックを受信および処理するのに最も最適である宛先コンピューティングデバイスの個別のコンポーネントおよび／またはコンポーネント群に基づき転送決定を行うことが可能ではない。
【図面の簡単な説明】
【０００３】
本明細書に記載されている概念は、限定によってではなく例示により、添付の複数の図面において示されている。図示を簡潔および明瞭にするため、複数の図面に示されている複数の要素は必ずしも縮尺通りに描写されていない。適切であると見なされる場合には、対応する、または類似の複数の要素を示すのに複数の参照ラベルが複数の図面間で繰り返されている。
【図１】複数のネットワークフローをコンピューティングデバイスの複数の処理リソースにアライメントするためのシステムの少なくとも１つの実施形態の簡略化されたブロック図である。
【図２】図１のシステムのコンピューティングデバイスの環境の少なくとも１つの実施形態の簡略化されたブロック図である。
【図３】図１のシステムのネットワークコントローラの環境の少なくとも１つの実施形態の簡略化されたブロック図である。
【図４】図１のシステムのネットワークスイッチの環境の少なくとも１つの実施形態の簡略化されたブロック図である。
【図５】図１および３のネットワークコントローラにより実行され得る、複数のネットワークフローを複数の処理リソースにアライメントするための方法の少なくとも１つの実施形態の簡略化されたフロー図である。
【図６】図１および２のコンピューティングデバイスにより実行され得る、複数のネットワークフローを複数の処理リソースにアライメントするための方法の少なくとも１つの実施形態の簡略化されたフロー図である。
【図７】図１および４のネットワークスイッチにより実行され得る、複数のネットワークフローを複数の処理リソースにアライメントするための方法の少なくとも１つの実施形態の簡略化されたフロー図である。
【図８】図１および４のネットワークスイッチにより実行され得る、複数のネットワークフローを複数の処理リソースにアライメントするための方法の少なくとも１つの他の実施形態の簡略化されたフロー図である。
【発明の概要】
【発明が解決しようとする課題】
【０００４】
本開示の複数の概念は、様々な変形例および代替的な形態の影響が可能であるが、その特定の複数の実施形態が、複数の図面において例示により示されており、本明細書において詳細に記載される。しかし、本開示の複数の概念を開示されている特定の複数の形態に限定する意図はなく、逆に、本開示および付属の複数の請求項と一貫した全ての変形例、同等物、および代替例を網羅することが意図されていることが理解されるべきである。
【０００５】
本明細書において「一実施形態」、「実施形態」、「例示的な実施形態」等について言及したとき、そのことは、記載されている実施形態が特定の特徴、構造、または特性を含むことを示しているが、あらゆる実施形態がその特定の特徴、構造、または特性を含んでもよいが、必ずしも含まなくてもよい。さらに、そのような複数のフレーズは、必ずしも同じ実施形態について言及しているとは限らない。さらに、特定の特徴、構造、または特性が実施形態に関連して記載されているとき、明示的に記載されていようといなかろうとそのような特徴、構造、または特性を他の複数の実施形態に関連して実現することは当業者の知識の範囲内である。追加的に、「Ａ、Ｂ、およびＣのうち少なくとも１つ」の形態のリストに含まれる複数のアイテムは、（Ａ）；（Ｂ）；（Ｃ）；（ＡおよびＢ）；（ＡおよびＣ）；（ＢおよびＣ）；または（Ａ，Ｂ，およびＣ）を意味し得ることが理解されるべきである。同様に、「Ａ、Ｂ、またはＣのうち少なくとも１つ」の形態で列挙されている複数のアイテムは、（Ａ）；（Ｂ）；（Ｃ）；（ＡおよびＢ）；（ＡおよびＣ）；（ＢおよびＣ）；または（Ａ，Ｂ，およびＣ）を意味し得る。
【０００６】
開示されている複数の実施形態は、いくつかの場合において、ハードウェア、ファームウェア、ソフトウェア、またはこれらの任意の組み合わせにより実装され得る。開示されている複数の実施形態は、１または複数のプロセッサにより読み取られ実行され得る、１または複数の一時的または非一時的マシン可読（例えば、コンピュータ可読）記憶媒体上により伝達される、またはそれらに格納された複数の命令としても実装され得る。マシン可読記憶媒体は、マシンにより可読な形態で情報を格納または送信するための何らかの記憶デバイス、メカニズム、または他の物理的構造（例えば、揮発性または不揮発性メモリ、メディアディスク、または他のメディアデバイス）として具現化され得る。
【０００７】
複数の図面において、いくつかの構造または方法に関する特徴が、特定の配置および／または順序付けで示されているかもしれない。しかし、そのような特定の配置および／または順序付けは要求されないかもしれないことが理解されるべきである。むしろ、いくつかの実施形態において、そのような複数の特徴は、例示的な複数の図面に示されているものとは異なるやり方および／または順序で配置され得る。追加的に、特定の図面に構造または方法に関する特徴が含まれているからとって、全ての実施形態においてそのような特徴が要求されることを示唆するわけではなく、いくつかの実施形態においては、それは含まれなくてもよく、または他の複数の特徴と組み合わせられ得る。
【０００８】
ここで図１を参照すると、例示的な実施形態において、複数のネットワークフローを複数の処理リソースにアライメントするためのシステム１００は、コンピューティングデバイス１１０、ネットワークコントローラ１７０、リモートコンピューティングデバイス１８０、およびネットワークスイッチ１９０を含み、これらのそれぞれが、ソフトウェアデファインドネットワーキング（ＳＤＮ）環境で動作可能であり得る。使用において、ネットワークスイッチ１９０は、リモートコンピューティングデバイス１８０からネットワークパケットを受信し得る。いくつかの実施形態において、ネットワークパケットは、コンピューティングデバイス１１０の複数の処理ノード１１２のうち１つ（例えば、処理ノード１１４または処理ノード１１６）のプロセッサ（例えば、プロセッサ１２０またはプロセッサ１４０）により実行されているアプリケーションをターゲットとし得、またはそうでなければそれを対象とし得る。そのような複数の実施形態において、ネットワークスイッチ１９０は、ネットワークコントローラ１７０からの受信されたネットワークパケットに関する、コンピューティングデバイス１１０、および／または、ＳＤＮ環境（例えば、トポロジーデータ、設定データ、レイアウトデータ、および／または、コンピューティングデバイス１１０および／またはネットワークの複数のハードウェアまたはソフトウェアコンポーネントを記述する任意の他のタイプのデータ）と関連付けられたアーキテクチャ情報を含む転送情報をリクエストする。いくつかの実施形態において、ネットワークコントローラ１７０は、コンピューティングデバイス１１０のどの処理ノード１１２内でどのアプリケーションが実行されているかを示す情報も含む。アーキテクチャ情報を用いて、ネットワークコントローラ１７０は、受信されたネットワークパケットに対応するネットワークフロー情報を決定および／または生成する。ネットワークフロー情報は、受信されたネットワークパケットがターゲットとしているアプリケーションを実行している特定の処理ノード１１２（例えば、処理ノード１１４または処理ノード１１６）を識別し得、またはそうでなければそれらを示し得る。いくつかの実施形態において、またネットワークフロー情報は、受信されたネットワークパケットが転送されるべき特定の処理ノード１１２のネットワークアダプタ（例えば、ＮＩＣ１３６またはＮＩＣ１５６）を識別し得、またはそうでなければそれを示し得る。
【０００９】
ネットワークフロー情報を決定した後、ネットワークコントローラ１７０は、ネットワークフロー情報をコンピューティングデバイス１１０へ送信し、コンピューティングデバイス１１０は、識別されたネットワークアダプタ（例えば、ＮＩＣ１３６またはＮＩＣ１５６）においてフローフィルタをプログラミングし、またはそうでなければそれを設定する。いくつかの実施形態において、フローフィルタは、ネットワークフローと関連付けられた複数のネットワークパケット（例えば、受信されたネットワークパケット、および、何らかの後続の複数のネットワークパケット）を、識別されたネットワークアダプタ（例えば、ＮＩＣ１３６またはＮＩＣ１５６）に割り当てられた特定のネットワークメモリキュー（例えば、Ｑ０  １３２、Ｑ１  １３４、Ｑ２  １５２、Ｑ３  １５４）にコピーするよう構成され得る。いくつかの実施形態において、複数のネットワークメモリキュー（例えば、Ｑ０  １３２、Ｑ１  １３４、Ｑ２  １５２、Ｑ３  １５４）は、双方向または単方向の複数のメモリキューとして動作するよう構成され得る。
【００１０】
フローフィルタがコンピューティングデバイス１１０によりプログラミングされた後、ネットワークコントローラ１７０は、フロー情報に基づき、受信されたネットワークパケットに関する転送情報を決定する。転送情報は、受信されたネットワークパケットが転送されるべき特定の処理ノード１１２のネットワークアダプタ（例えば、ＮＩＣ１３６またはＮＩＣ１５６）を識別し得、またはそうでなければそれを示し得る。いくつかの実施形態において、転送情報は、識別されたネットワークアダプタ（例えば、ＮＩＣ１３６またはＮＩＣ１５６）に通信可能に結合されたネットワークスイッチ１９０の特定のインタフェースまたはポート（例えば、ＰＡ１９２、ＰＢ１９４、ＰＣ１９６）を示す情報を含み得る。ネットワークコントローラ１７０は、転送情報をネットワークスイッチ１９０へ送信し得、ネットワークスイッチ１９０は、受信されたネットワークパケットを識別されたネットワークアダプタ（例えば、ＮＩＣ１３６またはＮＩＣ１５６）に通信可能に結合されたネットワークスイッチ１９０の特定のポート（例えば、ＰＡ１９２、ＰＢ１９４、ＰＣ１９６）へ転送するのに、転送情報を利用し得る。アーキテクチャ情報をコンピューティングデバイス１１０および／またはＳＤＮ環境と関連付けたままにしておくことにより、ネットワークコントローラ１７０は、ネットワークフローを、特定のアプリケーションを実行している特定の処理ノード１１２にアライメントし得ることが理解されるべきである。このやり方により、特定のネットワークフローと関連付けられた複数のネットワークパケットの処理と、そのフローがターゲットとするアプリケーションの実行が、同じ処理ノード１１２内で起こり得、これは複数のメモリリソースおよび利用可能ネットワーク帯域幅のより効率的な使用であり、ネットワークおよび／または処理レイテンシを低減し、コンピューティングデバイス１１０により消費される電力を少なくすることを可能とし、ネットワークパケットを処理するのに利用される処理リソースを少なくすることが可能となる。例えば、ターゲットとされているアプリケーションが実行されているのと同じ処理ノード１１２内でネットワークフローの複数のネットワークパケットを処理することは、一の処理ノード１１２（例えば、処理ノード１１２）内でネットワークフローの複数のネットワークパケットを処理し、それらのパケットを、１または複数の通信リンク（例えば、ＱｕｉｃｋＰａｔｈ  Ｉｎｔｅｒｃｏｎｎｅｃｔｓ（ＱＰＩ）１１８、ポイントツーポイントリンク、バスリンク、電線、ケーブル、ライトガイド、プリント回路基板のトレース等）を介しターゲットとされているアプリケーションが実行されている異なる処理ノード１１２（例えば、処理ノード１１４）へ送信（例えば、転送、送出等）することよりも効率的である。そのようなやり方で複数の処理ノード１１２間で複数のネットワークパケットを送信することは潜在的に、コンピューティングデバイス１１０のレイテンシ、ジッタ、スループットに影響を与え得る。このことは特に、ターゲットとされているアプリケーションが実行されているのものとは異なる処理ノード１１２で処理される必要がある多数の新たな、���よび／または既存のネットワークフローまたはネットワークパケットがある場合において当てはまり得る。
【００１１】
コンピューティングデバイス１１０は、サーバコンピュータ、デスクトップコンピュータ、ラップトップコンピューティングデバイス、民生用電子機器、モバイルコンピューティングデバイス、モバイルフォン、スマートフォン、タブレットコンピューティングデバイス、パーソナルデジタルアシスタント、ウェアラブルコンピューティングデバイス、スマートテレビ、スマート機器、および／または他のタイプのコンピューティングデバイスを含むがこれらに限定されない、本明細書に記載されている複数の機能を実行可能な任意のタイプのコンピューティングデバイスとして具現化され得る、またはそうでなければそれを含み得る。いくつかの実施形態において、コンピューティングデバイス１１０は、ソフトウェアデファインドネットワーキング（ＳＤＮ）環境で動作可能である。以下においてより詳細に説明されているように、例示的なコンピューティングデバイス１１０は、プロセッサ、メモリ、およびネットワークアダプタをそれぞれが含む複数の処理ノード１１２を含む。図１に示されるように、例示的なコンピューティングデバイス１１０は、入／出力（Ｉ／Ｏ）サブシステム１６２およびデータストレージ１６４も含む。当然、他の複数の実施形態において、コンピューティングデバイス１１０は、コンピュータにおいて一般的に見られるものなど（例えば、様々な入／出力デバイス）の他の、または追加の複数のコンポーネントも含み得る。
【００１２】
いくつかの実施形態において、コンピューティングデバイス１１０の各処理ノード１１２は、Ｎｏｎ−ｕｎｉｆｏｒｍ  Ｍｅｍｏｒｙ  Ａｃｃｅｓｓ（ＮＵＭＡ）ノードとして具現化され得る。例示的な実施形態において、コンピューティングデバイス１１０は処理ノード１１４および処理ノード１１６を含む。例示的な処理ノード１１４は、プロセッサ１２０、メモリ１２６、およびネットワークインタフェースカード（ＮＩＣ）１３６を含む。いくつかの実施形態において、処理ノード１１４内のプロセッサ１２０、メモリ１２６、およびＮＩＣ１３６は、１または複数の通信リンク（すなわち、ポイントツーポイントリンク、バスリンク、電線、ケーブル、ライトガイド、プリント回路基板のトレース等）を介し互いに通信可能に結合され得る。追加的に、いくつかの実施形態において、処理ノード１１４の例示的な複数のコンポーネントのうち１または複数は、他のコンポーネントに組み込まれ得、またはそうでなければその一部を形成し得る。例えば、いくつかの実施形態において、メモリ１２６、またはその複数の部分が、プロセッサ１２０に組み込まれ得る。
【００１３】
処理ノード１１４のプロセッサ１２０は、本明細書に記載されている複数の機能を実行可能な任意のタイプのプロセッサとして具現化され得る。例えば、いくつかの実施形態において、プロセッサ１２０は、シングルコアプロセッサ、デジタル信号プロセッサ、マイクロコントローラ、または他のプロセッサまたは処理／制御回路として具現化され得る。図１に例示的に示されているものなどの他の複数の実施形態において、プロセッサ１２０は、複数のプロセッサコア（例えば、コアＡ１２２およびコアＢ１２４）を有するマルチコアプロセッサとして具現化され得る。そのような複数の実施形態において、プロセッサ１２０の各プロセッサコア１２２、１２４は、１または複数のアプリケーションを実行可能である。
【００１４】
処理ノード１１４のメモリ１２６は、本明細書に記載されている複数の機能を実行可能な任意のタイプの揮発性または不揮発性メモリまたはデータストレージとして具現化され得る。動作において、メモリ１２６は、オペレーティングシステム、アプリケーション、プログラム、ライブラリ、ドライバなどの、コンピューティングデバイス１１０の動作中に用いられる様々なデータおよびソフトウェアを格納し得る。例えば、いくつかの実施形態において、メモリ１２６の一部（例えば、アプリケーションメモリスペース１２８）は、プロセッサコアＡ１２２および／またはプロセッサコアＢ１２４により実行されているアプリケーションによる使用のために割り当てられ得、またはそうでなければそのために確保され得る。追加的にいくつかの実施形態において、メモリ１２６の他の一部（例えば、ＮＩＣメモリスペース１３０）が、ＮＩＣ１３６により送出されることになるデータ、および／またはＮＩＣ１３６により受信されるデータの格納のために割り当てられ得、またはそうでなければそのために確保され得る。そのような複数の実施形態において、ＮＩＣメモリスペース１３０は、ＮＩＣ１３６のポートＰ１  １３７（例えば、インタフェース）を介し送出されることになる、または受信されたデータ（例えば、ネットワークパケット等）を格納するための１または複数のメモリキュー（例えば、Ｑ０  １３２およびＱ１  １３４）を含み得る。例示的な実施形態において、メモリ１２６は、１または複数の通信リンク（すなわち、ポイントツーポイントリンク、バスリンク、電線、ケーブル、ライトガイド、プリント回路基板のトレース等）を介しプロセッサ１２０に通信可能に結合される。
【００１５】
（複数の）コンピューティングノード１１０の処理ノード１１４のＮＩＣ１３６は、１または複数の通信ネットワーク（例えば、ローカルエリアネットワーク、パーソナルエリアネットワーク、ワイドエリアネットワーク、セルラーネットワーク、インターネットなどのグローバルネットワーク等）を介しコンピューティングデバイス１１０および／またはコンピューティングデバイス１１０の処理ノード１１４と他のコンピューティングデバイスとの間の通信を可能とすることが出来る任意のタイプの通信回路、デバイス、またはこれらの集合として具現化され得る。例えば、いくつかの実施形態において、処理ノード１１４のＮＩＣ１３６は、コンピューティングデバイス１１０の処理ノード１１４とリモートコンピューティングデバイス１８０との間の通信を可能とすることが出来得る。ＮＩＣ１３６は、そのような通信を実現するよう何らかの１または複数の通信技術（例えば、無線または有線通信）、および関連付けられた複数のプロトコル（例えば、Ｅｔｈｅｒｎｅｔ（登録商標）、ＷｉＦｉ（登録商標）、ＷｉＭＡＸ（登録商標）等）を用いるよう構成され得る。例示的な実施形態において、ＮＩＣ１３６は、ポート（例えば、Ｐ１  １３７）または通信インタフェースを含み、そうでなければこれらと通信可能に結合される。ポート（例えば、Ｐ１  １３７）は、処理ノード１１４を、任意の数の他のコンピューティングデバイス（例えば、リモートコンピューティングデバイス１８０）および／または複数のネットワーク（例えば、物理的または論理的なネットワーク）に通信可能に結合するよう構成され得る。例えば、例示的なポート１３７は、処理ノード１１４のＮＩＣ１３６を、ネットワークスイッチ１９０に通信可能に結合し、ネットワークスイッチ１９０は、リモートコンピューティングデバイス１８０、ネットワークコントローラ１７０、および／または任意の数の他のコンピューティングデバイスまたはネットワークに通信可能に結合され得る。
【００１６】
例示的な実施形態において、ＮＩＣ１３６は、１または複数の通信リンク（すなわち、ポイントツーポイントリンク、バスリンク、電線、ケーブル、ライトガイド、プリント回路基板のトレース等）を介しプロセッサ１２０に通信可能に結合される。例えば、いくつかの実施形態において、ＮＩＣ１３６は、処理ノード１１４のＰＣＩｅ  Ｉ／Ｏバスを介しプロセッサ１２０に通信可能に結合されたＰｅｒｉｐｈｅｒａｌ  Ｃｏｍｐｏｎｅｎｔ  Ｉｎｔｅｒｃｏｎｎｅｃｔ  Ｅｘｐｒｅｓｓ（ＰＣＩｅ）デバイスとして具現化される。当然、ＮＩＣ１３６が、処理ノード１１４のプロセッサ１２０に通信可能に結合された任意の他のタイプの通信デバイスとして具現化され得ることが理解されるべきである。
【００１７】
いくつかの実施形態において、ＮＩＣ１３６は、１または複数のフローフィルタ１３８も含み得る。以下により詳細に説明されているように、１または複数のフローフィルタ１３８は、ネットワークコントローラ１７０から受信されたネットワークフロー情報に少なくとも部分的に基づき、またはそうでなければその関数として、コンピューティングデバイス１１０によりＮＩＣ１３６においてプログラミングされ得る。いくつかの実施形態において、複数のフローフィルタ１３８は、ＮＩＣ１３６により受信された複数のネットワークパケットおよび／またはＮＩＣ１３６により送信されることになる複数のネットワークパケットの格納のために割り振られた、またはそうでなければ割り当てられたＮＩＣメモリスペース１３０における特定のメモリキュー（例えば、Ｑ０  １３２、Ｑ１  １３４等）を指定する。追加的にいくつかの実施形態において、複数のフローフィルタ１３８は、ＮＩＣ１３６の特定のポート（例えば、Ｐ１  １３７）により受信された複数のネットワークパケット、および／またはＮＩＣ１３６の特定のポート（例えば、Ｐ１  １３７）により送信されることになる複数のネットワークパケットの格納ために割り当てられたＮＩＣメモリスペース１３０における特定のメモリキュー（例えば、Ｑ０  １３２、Ｑ１  １３４等）を指定する。追加的に、または代替的に、いくつかの実施形態において、ＮＩＣ１３６（またはＮＩＣ１３６のドライバ）は、ＮＩＣ１３６内に含まれる各ポート（例えば、Ｐ１  １３７）のためにＮＩＣメモリスペース１３０におけるメモリキュー（例えば、Ｑ０  １３２、Ｑ１  １３４等）を事前に割り当てまたは事前に割り振り得る。つまり、コンピューティングデバイス１１０がＮＩＣ１３６において複数のフローフィルタ１３８をプログラミングする前に、ＮＩＣ１３６の各ポート（例えば、Ｐ１  １３７）は、ＮＩＣメモリスペース１３０における特定のメモリキュー（例えば、Ｑ０  １３２、Ｑ１  １３４等）が割り当てられ得、またはそうでなければ割り振られ得る。例えば、いくつかの実施形態において、ＮＩＣ１３６および／または関連付けられたドライバは、コンピューティングデバイス１１０の初期化の間に処理ノード１１４のＮＩＣメモリスペース１３０において１または複数のメモリキュー（例えば、Ｑ０  １３２、Ｑ１  １３４等）を事前に割り当て得る。このやり方で、ＮＩＣ１３６内に含まれる各ポート（例えば、Ｐ１  １３７）のための複数のメモリキュー（例えば、Ｑ０  １３２、Ｑ１  １３４等）が、ＮＩＣ１３６と同じ処理ノード１１４内に割り当てられる。いくつかの実施形態において、複数のネットワークメモリキュー（例えば、Ｑ０  １３２、Ｑ１  １３４、Ｑ２  １５２、Ｑ３  １５４）が、双方向の複数のメモリキュー（すなわち、送信および受信）または単方向の複数のメモリキュー（すなわち、送信または受信）として動作するよう構成され得ることが理解されるべきである。
【００１８】
例示的な処理ノード１１６は、プロセッサ１４０、メモリ１４６、およびＮＩＣ１５６を含む。処理ノード１１６のプロセッサ１４０は、複数のプロセッサコア（例えば、コアＡ１４２およびコアＢ１４４）を含み得る。処理ノード１１６のメモリ１４６は、プロセッサコアＡ１４２および／またはプロセッサコアＢ１４４により実行されているアプリケーションによる使用のために割り当てられたメモリの一部（例えば、アプリケーションメモリスペース１４８）と、ＮＩＣ１５６により送出されることになる、および／またはＮＩＣ１５６により受信されたデータの格納のために割り当てられたメモリの一部（例えば、ＮＩＣメモリスペース１５０）と、ＮＩＣ１５６のポート１５７（例えば、インタフェース）を介し送出されることになる、または受信されたデータ（例えば、ネットワークパケット等）を格納するための１または複数のメモリキュー（例えば、Ｑ２  １５２およびＱ３  １５４）とを含む。例示的なＮＩＣ１５６は、ポート（例えば、Ｐ２  １５７）を含み、そうでなければそれと通信可能に結合されている。追加的にいくつかの実施形態において、ＮＩＣ１５６は１または複数のフローフィルタ１５８を含む。処理ノード１１６のこれらのコンポーネントは、処理ノード１１４の対応する複数のコンポーネントと同様であり得る。それの記載は、処理ノード１１６の対応する複数のコンポーネントに適用可能であり、記載の明瞭化のために本明細書において繰り返されない。
【００１９】
いくつかの実施形態において、ＮＩＣ１３６およびＮＩＣ１５６は、スループットを増加させ、負荷の均等化を実施し、および／またはフォールトトレランスを提供するために、（論理的な接続１６０により例示的に示されるように）結合、トランキング、またはそうでなければ集約され得る。そのような複数の実施形態において、ＮＩＣ１３６およびＮＩＣ１５６は、例えば、リモートコンピューティングデバイス１８０などの他の複数のコンピューティングデバイスから複数のネットワークパケットを受信するために単一のインターネットプロトコル（ＩＰ）アドレスが割り振られ得る論理ネットワークインタフェースを形成し得る。当然、ＮＩＣ１３６とＮＩＣ１５６とをボンディングすることから形成される論理ネットワークインタフェースは単一のＩＰアドレスが割り振られ得るが、ＮＩＣ１３６およびＮＩＣ１５６のうちそれぞれは、別個の媒体アクセス制御（ＭＡＣ）アドレスを有し得ることが理解されるべきである。追加的にいくつかの実施形態において、コンピューティングデバイス１１０は、コンピューティングデバイス１１０をネットワークコントローラ１７０に通信可能に結合し得る１または複数の管理ポート（示されておらず）を含み得る。そのような複数の実施形態において、コンピューティングデバイス１１０の複数の管理ポートが、以下により詳細に説明されているように、ネットワークコントローラ１７０へ／から情報または複数のメッセージ（例えば、アーキテクチャ情報、転送情報等）を送出および受信するために用いられ得る。
【００２０】
プロセッサ１２０およびプロセッサ１４０のうちそれぞれは、コンピューティングデバイス１１０の他の複数のコンポーネントでの入／出力動作を容易にするよう回路および／または複数のコンポーネントとして具現化され得るＩ／Ｏサブシステム１６２に通信可能に結合され得る。例えば、Ｉ／Ｏサブシステム１６２は、メモリコントローラハブ、入／出力コントロールハブ、ファームウェアデバイス、通信リンク（すなわち、ポイントツーポイントリンク、バスリンク、電線、ケーブル、ライトガイド、プリント回路基板のトレース等）、および／または入／出力動作を容易にする他の複数のコンポーネントおよびサブシステムとして具現化され得、またはそうでなければこれらを含み得る。いくつかの実施形態において、Ｉ／Ｏサブシステム１６２は、システムオンチップ（ＳｏＣ）の一部を形成し得、処理ノード１１２（例えば、プロセッサ、メモリ、およびネットワークアダプタ）の複数のコンポーネント、およびコンピューティングデバイス１１０の他の複数のコンポーネントと共に単一の集積回路チップ上に組み込まれ得る。例えば、いくつかの実施形態において、Ｉ／Ｏサブシステム１６２、プロセッサ１２０、メモリ１２６、およびＮＩＣ１３６は、単一の集積回路チップ上に組み込まれ得る。
【００２１】
データストレージ１６４は、例えば、メモリデバイスおよび回路、メモリカード、ハードディスクドライブ、ソリッドステートドライブ、または他のデータ記憶デバイスなどの短期または長期のデータ格納のために構成された任意のタイプのデバイスまたは複数のデバイスとして具現化され得る。例えば、データストレージ１６４は、コンピューティングデバイス１１０により初期化および／または実行されることになる１または複数のオペレーティングシステムを格納するよう構成され得る。いくつかの実施形態において、（複数の）オペレーティングシステムの複数の部分は、より速い処理のために、および／または任意の他の理由で、動作中にメモリ１２６および／またはメモリ１４６にコピーされ得る。
【００２２】
ネットワークコントローラ１７０は、サーバコンピュータ、デスクトップコンピュータ、ラップトップコンピューティングデバイス、民生用電子機器、モバイルコンピューティングデバイス、モバイルフォン、スマートフォン、タブレットコンピューティングデバイス、パーソナルデジタルアシスタント、ウェアラブルコンピューティングデバイス、スマートテレビ、スマート機器、および／または他のタイプのコンピューティングまたはネットワーキングデバイスを含むがこれらに限定されない、本明細書に記載されている複数の機能を実行可能な任意のタイプのコンピューティングデバイスとして具現化され得る、またはそうでなければそれを含み得る。そういうものとして、ネットワークコントローラ１７０は、記載の明瞭化のために図１には示されていないプロセッサ、メモリデバイス、通信回路、およびデータストレージなどのネットワークコントローラまたは同様の複数のコンピューティングデバイスに一般的に見られる複数のデバイスおよび構造を含み得る。例示的な実施形態において、ネットワークコントローラ１７０は、ソフトウェアデファインドネットワーキング（ＳＤＮ）環境で動作可能である。そういうものとして、ネットワークコントローラ１７０は、コンピューティングデバイス１１０、ネットワークスイッチ１９０、および／またはＳＤＮ環境で動作可能な他の複数のコンピューティングデバイスからデータおよび／または複数の情報リクエストを受信し得る。例えば、ネットワークコントローラ１７０は、コンピューティングデバイス１１０の各処理ノード１１２のアーキテクチャを規定する、またはそうでなければそれを示すアーキテクチャ情報をコンピューティングデバイス１１０から受信し得る。またネットワークコントローラ１７０は、ネットワークスイッチ１９０の１または複数のポート（例えば、ＰＡ１９２、ＰＢ１９４、ＰＣ１９６）と、コンピューティングデバイス１１０、ネットワークコントローラ１７０、リモートコンピューティングデバイス１８０、および／または任意の他のコンピューティングデバイスまたは通信ネットワークとの間の１または複数のネットワーク接続（例えば、通信リンク）を規定する、またはそうでなければそれを示す接続情報をネットワークスイッチ１９０から受信し得る。
【００２３】
いくつかの実施形態において、ネットワークコントローラ１７０は、ネットワークスイッチ１９０から転送情報の１または複数のリクエストを受信するよう構成される。各転送情報リクエストは、ネットワークスイッチ１９０により受信されるネットワークパケットと関連付けられ得る。転送情報のリクエストを受信したことに応答して、ネットワークコントローラ１７０は、コンピューティングデバイス１１０から受信されたアーキテクチャ情報とネットワークスイッチ１９０から受信された接続情報とに少なくとも部分的に基づき、またはそうでなければそれらの関数として、ネットワークスイッチ１９０により受信されたネットワークパケットと関連付けられたネットワークフロー情報および転送情報を決定し得る。動作において、ネットワークコントローラ１７０は、複数のネットワークアダプタ（例えば、ＮＩＣ１３６またはＮＩＣ１５６）のうち１つにおけるフローフィルタがプログラミングされ得るように、コンピューティングデバイス１１０へ決定されたネットワークフロー情報を送出し得る。追加的に、ネットワークコントローラ１７０は、フローフィルタがプログラミングされたコンピューティングデバイス１１０のネットワークアダプタ（例えば、ＮＩＣ１３６またはＮＩＣ１５６）へ受信されたネットワークパケットを転送するのに転送情報を用い得るネットワークスイッチ１９０へ転送情報を送出し得る。このやり方で、ネットワークコントローラ１７０は、コンピューティングデバイス１１０のアーキテクチャ情報に基づき、ネットワークフローをコンピューティングデバイス１１０の特定の複数の処理コンポーネントにアライメントし得る。
【００２４】
いくつかの実施形態において、ネットワークコントローラ１７０は、コンピューティングデバイス１１０から受信されたアーキテクチャ情報をコンピューティングデバイスアーキテクチャデータベース１７２に保持し得、またはそうでなければ格納し得る。追加的に、ネットワークコントローラ１７０は、ネットワークスイッチ１９０から受信された接続情報をネットワークスイッチ接続データベース１７４に保持し得、またはそうでなければ格納し得る。他の複数の実施形態において、アーキテクチャ情報および接続情報は、別個のデータベースではなくむしろ同じデータベースに格納または保持され得る。当然、例示的な実施形態において、アーキテクチャ情報および接続情報が１または複数のデータベースに格納されるものとして記載されているが、他の複数の実施形態において、アーキテクチャ情報および／または接続情報は、異なるフォーマットを有するデータ構造（例えば、ドキュメント、ファイル等）に格納され得ることが理解されるべきである。例えば、アーキテクチャ情報および／または接続情報は、カンマ区切り（ＣＳＶ）ファイル、テキストファイル、暗号化データファイル、１または複数のＸＭＬ要素を有するＥｘｔｅｎｓｉｂｌｅ  Ｍａｒｋｕｐ  Ｌａｎｇｕａｇｅ（ＸＭＬ）ドキュメント、または任意の他の、アーキテクチャ情報および／または接続情報を格納するのに適切なフォーマットで具現化され得る。
【００２５】
リモートコンピューティングデバイス１８０は、デスクトップコンピュータ、ラップトップコンピューティングデバイス、サーバコンピュータ、民生用電子機器、モバイルコンピューティングデバイス、モバイルフォン、スマートフォン、タブレットコンピューティングデバイス、パーソナルデジタルアシスタント、ウェアラブルコンピューティングデバイス、スマートテレビ、スマート機器、および／または他のタイプのコンピューティングデバイスを含むがこれらに限定されない、本明細書に記載されている複数の機能を実行可能な任意のタイプのコンピューティングデバイスとして具現化され得る、またはそうでなければそれを含み得る。そういうものとして、リモートコンピューティングデバイス１８０は、記載の明瞭化のために図１には示されていないプロセッサ、メモリデバイス、通信回路、およびデータストレージなどの複数のコンピューティングデバイスに一般的に見られる複数のデバイスおよび構造を含み得る。いくつかの実施形態において、リモートコンピューティングデバイス１８０は、ネットワークスイッチ１９０を介しコンピューティングデバイス１１０へ／から複数のネットワークパケットを送信および／または受信するよう構成され得る。そのような複数の実施形態において、リモートコンピューティングデバイス１８０は、ネットワークスイッチ１９０のポート（例えば、ＰＢ１９４）に直接的に接続され得る。当然、他の複数の実施形態において、リモートコンピューティングデバイス１８０は、ネットワークスイッチ１９０に直接的に接続されなくてもよいことが理解されるべきである。例えば、いくつかの実施形態において、リモートコンピューティングデバイス１８０は、ネットワークスイッチ１９０に通信可能に結合された遠隔ネットワーク（または、一連の遠隔ネットワーク）に接続され得る。
【００２６】
ネットワークスイッチ１９０は、ネットワークスイッチ、ネットワークルータ、ネットワークハブ、無線アクセスポイント、デスクトップコンピュータ、ラップトップコンピューティングデバイス、サーバコンピュータ、民生用電子機器、モバイルコンピューティングデバイス、モバイルフォン、スマートフォン、タブレットコンピューティングデバイス、パーソナルデジタルアシスタント、ウェアラブルコンピューティングデバイス、スマートテレビ、スマート機器、および／または他のタイプのコンピューティングデバイスを含むがこれらに限定されない、本明細書に記載されている複数の機能を実行可能な任意のタイプのネットワーキングまたはコンピューティングデバイスとして具現化され得る、またはそうでなければそれを含み得る。そういうものとして、ネットワークスイッチ１９０は、記載の明瞭化のために図１には示されていないプロセッサ、メモリデバイス、通信回路、およびデータストレージなどのネットワークスイッチまたは同様の複数のコンピューティングデバイスに一般的に見られる複数のデバイスおよび構造を含み得る。例示的な実施形態において、ネットワークスイッチ１９０は、他の複数のデバイス中でも、コンピューティングデバイス１１０およびネットワークコントローラ１７０を含み得るソフトウェアデファインドネットワーキング（ＳＤＮ）環境で動作可能である。例示的なネットワークスイッチ１９０は、１または複数の通信リンク（例えば、ポイントツーポイントリンク、バスリンク、電線、ケーブル、ライトガイド等）を介し、コンピューティングデバイス１１０、ネットワークコントローラ１７０、リモートコンピューティングデバイス１８０、および／または任意の他のコンピューティングデバイスおよび／または通信ネットワークの１または複数のポートまたはインタフェースに通信可能に結合された１または複数のポートまたはインタフェースを含み得る。例えば、例示的なネットワークスイッチ１９０は、コンピューティングデバイス１１０のＮＩＣ１３６のポート（例えば、Ｐ１  １３７）に通信可能に結合され得る第１ポート（例えば、ＰＡ１９２）を含む。例示的なネットワークスイッチ１９０は、リモートコンピューティングデバイス１８０のポートに通信可能に結合され得る第２ポート（例えば、ＰＢ１９４）も含む。追加的に、ネットワークスイッチ１９０は、コンピューティングデバイス１１０のＮＩＣ１５６のポート（例えば、Ｐ２  １５７）と通信可能に結合され得る第３ポート（例えば、ＰＣ１９６）も含み得る。当然、他の複数の実施形態において、ネットワークスイッチ１９０は、追加の、またはＰＡ１９２、ＰＢ１９４、およびＰＣ１９６より少ないポートを含み得る。いくつかの実施形態において、ネットワークスイッチ１９０は、ネットワークスイッチ１９０とネットワークコントローラ１７０とを通信可能に結合し得る管理ポート（示されておらず）も含み得る。
【００２７】
いくつかの実施形態において、ネットワークスイッチ１９０は、ネットワークスイッチ１９０のポート（例えば、ＰＢ１９４）を介しネットワークスイッチ１９０に通信可能に結合され得るリモートコンピューティングデバイス１８０から１または複数のネットワークパケットを受信する。いくつかの実施形態において、ネットワークスイッチ１９０が、コンピューティングデバイス１１０のネットワークアダプタ（例えば、ＮＩＣ１３６またはＮＩＣ１５６）から１または複数のネットワークパケットも受信し得ることが理解されるべきである。追加的に、いくつかの実施形態において、ネットワークスイッチ１９０は、ネットワークスイッチ１９０の１または複数のポート（例えば、ＰＡ１９２、ＰＢ１９４、ＰＣ１９６）と、コンピューティングデバイス１１０、ネットワークコントローラ１７０、リモートコンピューティングデバイス１８０、および／または任意の他のコンピューティングデバイスまたは通信ネットワークとの間の１または複数のネットワーク接続（例えば、通信リンク）を規定する、またはそうでなければそれを示す接続情報をネットワークコントローラ１７０へ送信するよう構成される。いくつかの実施形態において、ネットワークコントローラ１７０へ送信される接続情報は、ネットワークスイッチ１９０により保持されるローカル接続情報に基づき得る。ネットワークスイッチ１９０のそのようなローカル接続情報は、ネットワークスイッチ１９０に通信可能に結合された各コンピューティングデバイス（例えば、コンピューティングデバイス１１０、ネットワークコントローラ１７０、リモートコンピューティングデバイス１８０、および／または任意の他のコンピューティングデバイス）と関連付けられた媒体アクセス制御（ＭＡＣ）アドレスを含み得る。追加的に、ネットワークスイッチ１９０のローカル接続情報は、各コンピューティングデバイスが通信可能に結合されたネットワークスイッチ１９０のポート（例えば、ＰＡ１９２、ＰＢ１９４、ＰＣ１９６）を識別するデータを含み得る。いくつかの実施形態において、ローカル接続情報は、コンピューティングデバイスのＭＡＣアドレスを、コンピューティングデバイスが接続された、またはそうでなければ通信可能に結合されたネットワークスイッチ１９０の特定のポート（例えば、ＰＡ１９２、ＰＢ１９４、ＰＣ１９６）にマッピングするのに用いられ得る。
【００２８】
追加的に、いくつかの実施形態において、ネットワークスイッチ１９０は、ネットワークコントローラ１７０から転送情報をリクエストするようにも構成される。いくつかの実施形態において、転送情報は、リモートコンピューティングデバイス１８０、コンピューティングデバイス１１０、および／または任意の他のコンピューティングデバイスまたは通信ネットワークから受信する複数のネットワークパケットと関連付けられ得る。そのような複数の実施形態において、ネットワークスイッチ１９０は、ネットワークコントローラ１７０から受信する転送情報に基づき、受信された複数のネットワークパケットを転送するよう構成され得る。そうするために、ネットワークスイッチ１９０は、１または複数のフローエントリを含む１または複数のフローテーブルを保持し得る。いくつかの実施形態において、（複数の）フローテーブルの各フローエントリは、１または複数のネットワークフロー、各ネットワークフローと関連付けられた複数のネットワークパケット、および各ネットワークフローの複数のネットワークパケットが転送されるべき宛先コンピューティングデバイスを識別するのにネットワークスイッチ１９０により用いられ得る。そのような複数の実施形態において、（複数の）フローテーブルのフローエントリは、受信されたネットワークパケット（および続いて受信された複数のネットワークパケット）が転送されるべきネットワークスイッチ１９０の特定のポート（例えば、ＰＡ１９２、ＰＢ１９４、ＰＣ１９６）を決定するのにネットワークスイッチ１９０により用いられ得る。追加的に、ネットワークスイッチ１９０が（複数の）転送テーブルを保持する複数の実施形態において、ネットワークスイッチ１９０は、ネットワークコントローラ１７０から受信する転送情報に基づき複数のフローエントリを（複数の）転送テーブルに追加するよう構成され得る。
【００２９】
ここで図２を参照すると、使用において、コンピューティングデバイス１１０は動作中に環境２００を確立する。例示的な環境２００は、アーキテクチャ通知モジュール２０２、ローカルフロー管理モジュール２０４、および１または複数のフローフィルタ１３８、１５８を含む。環境２００の複数のモジュール、ロジック、および他の複数のコンポーネントのうちそれぞれは、ハードウェア、ソフトウェア、ファームウェア、またはこれらの組み合わせとして具現化され得る。例えば、環境２００の複数のモジュール、ロジック、および他の複数のコンポーネントのうちそれぞれは、コンピューティングデバイス１１０のプロセッサ１２０、１４０、または他の複数のハードウェアコンポーネントの一部を形成し得、またはそうでなければそれらにより確立され得る。コンピューティングデバイス１１０が、記載の明瞭化のために図２においては図示されていない、コンピューティングデバイスにおいて一般的に見られる他の複数のコンポーネント、複数のサブコンポーネント、複数のモジュール、および複数のデバイスを含み得ることが理解されるべきである。
【００３０】
アーキテクチャ通知モジュール２０２は、アーキテクチャ情報をネットワークコントローラ１７０へ送信するよう構成され得る。アーキテクチャ情報は、コンピューティングデバイス１１０の各処理ノード１１２のアーキテクチャを規定する。いくつかの実施形態において、アーキテクチャ通知モジュール２０２により送信されるアーキテクチャ情報は、コンピューティングデバイス１１０の複数の処理ノード１１２のそれぞれ（例えば、処理ノード１１４および処理ノード１１６）により実行される複数のアプリケーションを示すアプリケーションデータ、複数の処理ノード１１２のそれぞれの複数のプロセッサ（例えば、プロセッサ１２０およびプロセッサ１４０）の複数のプロセッサコア（例えば、コアＡ１２２、コアＢ１２４、コアＡ１４２、コアＢ１４４）を示すプロセッサコアデータ、複数の処理ノード１１２のそれぞれにおける割り当てられた複数のメモリキュー（例えば、Ｑ０  １３２、Ｑ１  １３４、Ｑ２  １５２、Ｑ３  １５４）を示すメモリキューデータ、および／または、複数の処理ノード１１２のそれぞれの複数のネットワークアダプタ（例えば、ＮＩＣ１３６およびＮＩＣ１５６）の複数のポート（例えば、Ｐ１  １３７およびＰ２  １５７）を示すポートデータを含む。追加的に、または代替的に、アーキテクチャ通知モジュール２０２により送信されるアーキテクチャ情報は、コンピューティングデバイス１１０の各処理ノード１１２（例えば、処理ノード１１４および処理ノード１１６）の各プロセッサ（例えば、プロセッサ１２０およびプロセッサ１４０）の各プロセッサコア（例えば、コアＡ１２２、コアＢ１２４、コアＡ１４２、コアＢ１４４）により実行される複数のアプリケーションを示すデータを含み得る。
【００３１】
いくつかの実施形態において、アーキテクチャ通知モジュール２０２は、コンピューティングデバイス１１０またはそのコンポーネントの初期化にあたりネットワークコントローラ１７０へアーキテクチャ情報を送信するよう構成され得る。例えば、アーキテクチャ通知モジュール２０２は、コンピューティングデバイス１１０によるブート処理の完了に応答して、および／または、コンピューティングデバイス１１０の処理ノード１１２、またはプロセッサのプロセッサコアによる特定のアプリケーションの初期化または実行に応答して、ネットワークコントローラ１７０へアーキテクチャ情報を送信するよう構成され得る。他の例において、アーキテクチャ通知モジュール２０２は、設定可能なリファレンスアーキテクチャ通知インターバルに基づき、および／または、アーキテクチャ通知モジュール２０２にアーキテクチャ情報を送信するようリクエストする、ネットワークコントローラ１７０から受信された１または複数の命令またはコマンドに基づき、ネットワークコントローラ１７０へアーキテクチャ情報を送信するよう構成され得る。いくつかの実施形態において、アーキテクチャ通知モジュール２０２は、１または複数のレプレゼンテーショナルステートトランスファー（ＲＥＳＴ）メッセージとしてネットワークコントローラ１７０へアーキテクチャ情報を送信するよう構成され得る。当然、任意の他の適切なメッセージングプロトコルおよび／またはフォーマット（例えば、Ｓｉｍｐｌｅ  Ｏｂｊｅｃｔ  Ａｃｃｅｓｓ  Ｐｒｏｔｏｃｏｌ（ＳＯＡＰ）などのＸＭＬベースのプロトコルおよび／またはフォーマット、ＪａｖａＳｃｒｉｐｔ（登録商標）  Ｏｂｊｅｃｔ  Ｎｏｔａｔｉｏｎ（ＪＳＯＮ）などのオープンスタンダードベースのプロトコルおよび／またはフォーマット等）が、ネットワークコントローラ１７０へアーキテクチャ情報を送信するのにアーキテクチャ通知モジュール２０２により用いられ得ることが理解されるべきである。
【００３２】
ローカルフロー管理モジュール２０４は、ネットワークコントローラ１７０からネットワークフロー情報を受信するよう構成され得る。ネットワークコントローラ１７０から受信するネットワークフロー情報は、リモートコンピューティングデバイス１８０により送信されネットワークスイッチ１９０により受信されるネットワークパケットと関連付けられ得る。ネットワークフロー情報は、コンピューティングデバイス１１０のターゲットの処理ノード１１２（例えば、処理ノード１１４）により実行されるアプリケーションに基づき、ネットワークパケットを処理するターゲットの処理ノード１１２（例えば、処理ノード１１４）を識別し得る。いくつかの実施形態において、ネットワークフロー情報は、ターゲットの処理ノード１１２（例えば、処理ノード１１４）の特定のプロセッサコア（例えば、コアＡ１２２またはコアＢ１２４）により実行されるアプリケーションに基づき、ネットワークパケットを処理するターゲットの処理ノード１１２（例えば、処理ノード１１４）も識別し得る。いくつかの実施形態において、ローカルフロー管理モジュール２０４は、コンピューティングデバイス１１０のフローダイレクタモジュール、および／またはコンピューティングデバイス１１０のネットワークアダプタ（例えば、ＮＩＣ１３６またはＮＩＣ１５６）として具現化され得ることが理解されるべきである。
【００３３】
いくつかの実施形態において、ローカルフロー管理モジュール２０４は、ネットワークコントローラ１７０から受信するネットワークフロー情報に基づき、ターゲットの処理ノード１１２（例えば、処理ノード１１４）のネットワークアダプタ（例えば、ＮＩＣ１３６）において１または複数のフローフィルタ１３８をプログラミングするようにも構成され得る。１または複数のフローフィルタ（例えば、フローフィルタ１３８）は、ターゲットの処理ノード１１２（例えば、処理ノード１１４）のメモリ（例えば、メモリ１２６）における、ネットワークスイッチ１９０からネットワークパケット（および後続の関連する複数のネットワークパケット）を受信するメモリキュー（例えば、Ｑ０  １３２またはＱ１  １３４）を指定し得る。いくつかの実施形態において、ローカルフロー管理モジュール２０４によりプログラミングされる１または複数のフローフィルタ（例えば、フローフィルタ１３８）は、ネットワークスイッチ１９０から受信されたネットワークパケットをターゲットの処理ノード１１２（例えば、処理ノード１１４）のメモリ（例えば、メモリ１２６）における指定されたメモリキュー（例えば、Ｑ０  １３２またはＱ１  １３４）へコピーするのに、ターゲットの処理ノード１１２のネットワークアダプタ（例えば、ＮＩＣ１３６）により用いられ得る。
【００３４】
ここで図３を参照すると、使用において、ネットワークコントローラ１７０は動作中に環境３００を確立する。例示的な環境３００は、アーキテクチャ管理モジュール３０２、コンピューティングデバイスアーキテクチャデータベース１７２、ネットワークスイッチ接続データベース１７４、およびフロー管理モジュール３０４を含む。いくつかの実施形態において、フロー管理モジュール３０４は、フロー決定モジュール３０６および転送決定モジュール３０８を含み得る。環境３００の複数のモジュール、ロジック、および他の複数のコンポーネントのうちそれぞれは、ハードウェア、ソフトウェア、ファームウェア、またはこれらの組み合わせとして具現化され得る。例えば、環境３００の複数のモジュール、ロジック、および他の複数のコンポーネントのうちそれぞれは、ネットワークコントローラ１７０の複数のプロセッサまたは他の複数のハードウェアコンポーネントの一部を形成し得、またはそうでなければそれらにより確立され得る。ネットワークコントローラ１７０が、記載の明瞭化のために図３においては図示されていない、コンピューティングデバイスにおいて一般的に見られる他の複数のコンポーネント、複数のサブコンポーネント、複数のモジュール、および複数のデバイスを含み得ることが理解されるべきである。
【００３５】
アーキテクチャ管理モジュール３０２は、アーキテクチャ情報をコンピューティングデバイス１１０から受信するよう構成され得る。上記にて説明されたように、アーキテクチャ情報は、コンピューティングデバイス１１０の各処理ノード１１２のアーキテクチャを規定する。例えば、いくつかの実施形態において、アーキテクチャ管理モジュール３０２により受信されるアーキテクチャ情報は、アプリケーションデータ、プロセッサデータ、プロセッサコアデータ、メモリキューデータ、プロセッサコアアプリケーション実行データ、および／またはポートデータを含み得る。例示的な実施形態において、アーキテクチャ管理モジュール３０２は、コンピューティングデバイスアーキテクチャデータベース１７２において、またはアーキテクチャ情報を格納するのに適切な任意の他のデータ構造において、コンピューティングデバイス１１０から受信されたアーキテクチャ情報を格納するよう、またはそうでなければ保持するよう構成される。
【００３６】
いくつかの実施形態において、アーキテクチャ管理モジュール３０２は、コンピューティングデバイス１１０またはそのコンポーネントの初期化に応答して、コンピューティングデバイス１１０からアーキテクチャ情報を受信するよう構成され得る。例えば、アーキテクチャ管理モジュール３０２は、コンピューティングデバイス１１０によるブート処理の完了に応答して、および／または、コンピューティングデバイス１１０の処理ノード１１２、またはプロセッサのプロセッサコアによる特定のアプリケーションの初期化または実行に応答して、コンピューティングデバイス１１０からアーキテクチャ情報を受信するよう構成され得る。他の例において、アーキテクチャ管理モジュール３０２は、設定可能なリファレンスアーキテクチャ通知インターバルに基づき、および／または、コンピューティングデバイス１１０にアーキテクチャ情報を送信するようリクエストする、コンピューティングデバイス１１０へ送信された１または複数の命令またはコマンドに基づき、コンピューティングデバイス１１０からアーキテクチャ情報を受信するよう構成され得る。いくつかの実施形態において、アーキテクチャ管理モジュール３０２は、１または複数のＳｉｍｐｌｅ  Ｏｂｊｅｃｔ  Ａｃｃｅｓｓ  Ｐｒｏｔｏｃｏｌ（ＳＯＡＰ）メッセージとしてコンピューティングデバイス１１０からアーキテクチャ情報を受信するよう構成され得る。当然、任意の他の適切なメッセージングおよび／または通知プロトコルが、コンピューティングデバイス１１０からアーキテクチャ情報を受信するのにアーキテクチャ管理モジュール３０２により用いられ得ることが理解されるべきである。
【００３７】
アーキテクチャ管理モジュール３０２は、ネットワークスイッチ１９０から接続情報を受信するようにようにも構成され得る。接続情報は、ネットワークスイッチ１９０の１または複数のポート（例えば、ＰＡ１９２、ＰＢ１９４、ＰＣ１９６）と、コンピューティングデバイス１１０、ネットワークコントローラ１７０、リモートコンピューティングデバイス１８０、および／または任意の他のコンピューティングデバイスまたは通信ネットワークとの間の１または複数のネットワーク接続（例えば、通信リンク）を規定し得る、またはそうでなければそれを示し得る。いくつかの実施形態において、アーキテクチャ管理モジュール３０２は、１または複数のＯｐｅｎＦｌｏｗメッセージとしてネットワークスイッチ１９０から接続情報を受信するよう構成され得る。追加的に、または代替的に、アーキテクチャ管理モジュール３０２は、１または複数のレプレゼンテーショナルステートトランスファー（ＲＥＳＴ）メッセージとしてネットワークスイッチ１９０から接続情報を受信するよう構成され得る。当然、任意の他の適切なメッセージングプロトコルおよび／またはフォーマット（例えば、Ｓｉｍｐｌｅ  Ｏｂｊｅｃｔ  Ａｃｃｅｓｓ  Ｐｒｏｔｏｃｏｌ（ＳＯＡＰ）などのＸＭＬベースのプロトコルおよび／またはフォーマット、ＪａｖａＳｃｒｉｐｔ（登録商標）  Ｏｂｊｅｃｔ  Ｎｏｔａｔｉｏｎ（ＪＳＯＮ）などのオープンスタンダードベースのプロトコルおよび／またはフォーマット等）が、ネットワークスイッチ１９０から接続情報を受信するのにアーキテクチャ管理モジュール３０２により用いられ得ることが理解されるべきである。
【００３８】
いくつかの実施形態において、アーキテクチャ管理モジュール３０２は、ネットワークスイッチ１９０と、コンピューティングデバイス１１０、ネットワークコントローラ１７０、リモートコンピューティングデバイス１８０および／または任意の他のコンピューティングデバイスまたは通信ネットワークとの間のネットワーク接続（例えば、（通信リンク）の確立または終了にあたりネットワークスイッチ１９０から接続情報を受信するよう構成され得る。例えば、アーキテクチャ管理モジュール３０２は、ネットワークスイッチ１９０の複数のポート（例えば、ＰＡ１９２、ＰＢ１９４、ＰＣ１９６）のうち１または複数についてのリンク状態（例えば、「接続状態」、「接続されていない状態」、「アクティブな状態」、「非アクティブな状態」、「アップ」、「ダウン」等）の変化をネットワークスイッチ１９０が検出したことに応答して接続情報を受信するよう構成され得る。いくつかの実施形態において、アーキテクチャ管理モジュール３０２は、ネットワークスイッチ１９０のポート（例えば、ＰＡ１９２、ＰＢ１９４、ＰＣ１９６）に新たに接続されたコンピューティングデバイス（例えば、コンピューティングデバイス１１０、ネットワークコントローラ１７０、リモートコンピューティングデバイス１８０、および／または任意の他のコンピューティングデバイス）と関連付けられた新たなＭＡＣアドレスをネットワークスイッチ１９０が検出したことに応答して、ネットワークスイッチ１９０から接続情報を受信するよう構成され得る。追加的に、または代替的に、いくつかの実施形態において、アーキテクチャ管理モジュール３０２は、設定可能なリファレンス接続通知インターバルに基づき、および／または、接続情報を送信するようコンピューティングデバイス１１０にリクエストする、コンピューティングデバイス１１０へ送出された１または複数の命令またはコマンドに基づき、ネットワークスイッチ１９０から接続情報を受信するよう構成され得る。例示的な実施形態において、アーキテクチャ管理モジュール３０２は、ネットワークスイッチ接続データベース１７４において、または接続情報を格納するのに適切な任意の他のデータ構造において、ネットワークスイッチ１９０から受信された接続情報を格納するよう、またはそうでなければ保持するよう構成される。
【００３９】
フロー管理モジュール３０４は、ネットワークスイッチ１９０により受信されたネットワークパケットと関連付けられたネットワークフロー情報を決定するよう構成され得る。そうするために、いくつかの実施形態において、フロー管理モジュール３０４はフロー決定モジュール３０６を含む。そのような複数の実施形態において、フロー決定モジュール３０６は、コンピューティングデバイス１１０から受信されたアーキテクチャ情報に基づき、ネットワークスイッチ１９０により受信されたネットワークパケットと関連付けられたネットワークフロー情報を決定する。説明されるように、コンピューティングデバイス１１０から受信されたアーキテクチャ情報は、コンピューティングデバイスアーキテクチャデータベース１７２に格納され得る。いくつかの実施形態において、フロー決定モジュール３０６により決定されるネットワークフロー情報は、コンピューティングデバイス１１０のターゲットの処理ノード１１２（例えば、処理ノード１１４）により実行されているアプリケーションに少なくとも部分的に基づき、そうでなければその関数として、ネットワークパケットを処理するターゲットの処理ノード１１２（例えば、処理ノード１１４）を識別し、またはそうでなければそれを示す。そのような複数の実施形態において、フロー決定モジュール３０６は、ネットワークスイッチ１９０により受信されるネットワークパケットによりターゲットとされる特定のアプリケーションを決定する、またはそうでなければ識別する。フロー決定モジュール３０６は、識別されたアプリケーションを、コンピューティングデバイスアーキテクチャデータベース１７２に格納されているアーキテクチャ情報と比較して、識別されたアプリケーションを実行しているコンピューティングデバイス１１０のターゲットの処理ノード１１２（例えば、処理ノード１１４）を決定し得る。いくつかの実施形態において、フロー決定モジュール３０６は、識別されたアプリケーションを、コンピューティングデバイスアーキテクチャデータベース１７２に格納されているアーキテクチャ情報と比較して、識別されたアプリケーションを実行している特定のプロセッサコア（例えば、コアＡ１２２、コアＢ１２４、コアＡ１４２、またはコアＢ１４４）を決定し得る。追加的に、または代替的に、フロー決定モジュール３０６は、コンピューティングデバイスアーキテクチャデータベース１７２に格納されているアーキテクチャ情報に基づき識別されたアプリケーションを実行しているターゲットの処理ノード１１２（例えば、処理ノード１１４）と関連付けられた特定のネットワークアダプタ（例えば、ＮＩＣ１３６）およびメモリバンク（例えば、メモリ１２６）を決定し得、またはそうでなければ識別し得る。ネットワークパケットと関連付けられたネットワークフロー情報を決定した後に、フロー決定モジュール３０６は、決定されたネットワークフロー情報をコンピューティングデバイス１１０へ送信するよう構成され得る。
【００４０】
フロー管理モジュール３０４は、ネットワークスイッチ１９０により受信されたネットワークパケットと関連付けられた転送情報を決定するようにも構成され得る。そうするために、いくつかの実施形態において、フロー管理モジュール３０４は転送決定モジュール３０８を含む。そのような複数の実施形態において、転送決定モジュール３０８は、コンピューティングデバイス１１０から受信されたアーキテクチャ情報とネットワークスイッチ１９０から受信された接続情報とに基づき、ネットワークパケットに関する転送情報を決定する。説明されるように、コンピューティングデバイス１１０から受信するアーキテクチャ情報は、コンピューティングデバイスアーキテクチャデータベース１７２において格納され得、ネットワークスイッチ１９０から受信する接続情報は、ネットワークスイッチ接続データベース１７４において格納され得る。いくつかの実施形態において、転送決定モジュール３０８により決定される転送情報は、受信されたネットワークパケットが転送されるべきネットワークスイッチ１９０の特定のポート（例えば、ＰＡ１９２、ＰＢ１９４、またはＰＣ１９６）を識別し、そうでなければそれを示す。そのような複数の実施形態において、転送決定モジュール３０８は、ネットワークパケットによりターゲットとされているアプリケーションを実行しているターゲットの処理ノード１１２（例えば、処理ノード１１４）のネットワークアダプタ（例えば、ＮＩＣ１３６）がネットワークスイッチ１９０の特定のポート（例えば、ＰＡ１９２）に通信可能に結合されていることを決定するのに、アーキテクチャ情報および接続情報を利用するよう構成され得る。ネットワークパケットと関連付けられた転送情報を決定した後に、転送決定モジュール３０８は、決定された転送情報をネットワークスイッチ１９０へ送信するよう構成され得る。
【００４１】
追加的に、または代替的に、フロー管理モジュール３０４は、特定の処理ノード１１２（例えば、処理ノード１１４または処理ノード１１６）、および／または複数の処理ノード１１２のうち１つの特定のプロセッサコア（例えば、コアＡ１２２、コアＢ１２４、コアＡ１４２、またはコアＢ１４４）にアプリケーションを初期化または実行するよう命令する１または複数の命令またはコマンドをコンピューティングデバイス１１０へ送信するよう構成され得る。いくつかの実施形態において、フロー管理モジュール３０４はそのような複数の命令を、ネットワークスイッチ１９０により受信された１または複数のネットワークパケットがコンピューティングデバイス１１０の処理ノード１１２により実行されていないアプリケーションをターゲットとしていることを決定したことに応答して、コンピューティングデバイス１１０へ送信し得る。いくつかの実施形態において、フロー管理モジュール３０４は、特定の処理ノード１１２（例えば、処理ノード１１４または処理ノード１１６）、および／または最も利用されていない複数の処理ノード１１２のうち１つの特定のプロセッサコア（例えば、コアＡ１２２、コアＢ１２４、コアＡ１４２、またはコアＢ１４４）を決定し得る。つまり、フロー管理モジュール３０４は、最も多くのリソースおよび／または最大の処理能力を有する特定のプロセッサコア、および／または複数の処理ノード１１２のうち１つを決定し得る。そのような複数の実施形態において、フロー管理モジュール３０４により送信される複数の命令および／またはコマンドは、最も多くのリソースおよび／または最大の処理能力を有すると決定された特定の処理ノード１１２（例えば、処理ノード１１４または処理ノード１１６）、および／または特定のプロセッサコア（例えば、コアＡ１２２、コアＢ１２４、コアＡ１４２、またはコアＢ１４４）上で新たなアプリケーションを初期化する、またはそうでなければ実行するようコンピューティングデバイス１１０に命令し得る。
【００４２】
ここで図４を参照すると、使用において、ネットワークスイッチ１９０は動作中に環境４００を確立する。例示的な環境４００は、接続管理モジュール４０２およびパケット転送モジュール４０４を含む。環境４００の複数のモジュール、ロジック、および他のコンポーネントのうちそれぞれは、ハードウェア、ソフトウェア、ファームウェア、またはこれらの組み合わせとして具現化され得る。例えば、環境４００の複数のモジュール、ロジック、および他の複数のコンポーネントのうちそれぞれは、ネットワークスイッチ１９０の複数のプロセッサまたは他の複数のハードウェアコンポーネントの一部を形成し得、またはそうでなければそれらにより確立され得る。ネットワークスイッチ１９０が、記載の明瞭化のために図４においては図示されていない、コンピューティングデバイスにおいて一般的に見られる他の複数のコンポーネント、複数のサブコンポーネント、複数のモジュール、および複数のデバイスを含み得ることが理解されるべきである。
【００４３】
接続管理モジュール４０２は、接続情報をネットワークコントローラ１７０へ送信するよう構成され得る。接続情報は、ネットワークスイッチ１９０の１または複数のポート（例えば、ＰＡ１９２、ＰＢ１９４、ＰＣ１９６）と、コンピューティングデバイス１１０、ネットワークコントローラ１７０、リモートコンピューティングデバイス１８０、および／または任意の他のコンピューティングデバイスまたは通信ネットワークとの間の１または複数のネットワーク接続（例えば、通信リンク）を規定し得る、またはそうでなければそれを示し得る。いくつかの実施形態において、接続管理モジュール４０２は、１または複数のＯｐｅｎＦｌｏｗメッセージとしてネットワークコントローラ１７０から接続情報を送信するよう構成され得る。追加的に、または代替的に、接続管理モジュール４０２は、１または複数のレプレゼンテーショナルステートトランスファー（ＲＥＳＴ）メッセージとしてネットワークコントローラ１７０へ接続情報を送信するよう構成され得る。当然、任意の他の適切なメッセージングプロトコルおよび／またはフォーマット（例えば、Ｓｉｍｐｌｅ  Ｏｂｊｅｃｔ  Ａｃｃｅｓｓ  Ｐｒｏｔｏｃｏｌ（ＳＯＡＰ）などのＸＭＬベースのプロトコルおよび／またはフォーマット、ＪａｖａＳｃｒｉｐｔ（登録商標）  Ｏｂｊｅｃｔ  Ｎｏｔａｔｉｏｎ（ＪＳＯＮ）などのオープンスタンダードベースのプロトコルおよび／またはフォーマット等）が、ネットワークコントローラ１７０へ接続情報を送信するのに接続管理モジュール４０２により用いられ得ることが理解されるべきである。
【００４４】
いくつかの実施形態において、接続管理モジュール４０２は、ネットワークスイッチ１９０と、コンピューティングデバイス１１０、ネットワークコントローラ１７０、リモートコンピューティングデバイス１８０および／または任意の他のコンピューティングデバイスまたは通信ネットワークとの間のネットワーク接続（例えば、（通信リンク）の確立または終了にあたりネットワークコントローラ１７０へ接続情報を送信するよう構成され得る。例えば、接続管理モジュール４０２は、ネットワークスイッチ１９０の複数のポート（例えば、ＰＡ１９２、ＰＢ１９４、ＰＣ１９６）のうち１または複数についてのリンク状態（例えば、「接続状態」、「接続されていない状態」、「アクティブな状態」、「非アクティブな状態」、「アップ」、「ダウン」等）の変化を検出したことに応答して接続情報を送信するよう構成され得る。いくつかの実施形態において、接続管理モジュール４０２は、ネットワークスイッチ１９０のポート（例えば、ＰＡ１９２、ＰＢ１９４、ＰＣ１９６）に新たに接続されたコンピューティングデバイス（例えば、コンピューティングデバイス１１０、ネットワークコントローラ１７０、リモートコンピューティングデバイス１８０、および／または任意の他のコンピューティングデバイス）と関連付けられた新たなＭＡＣアドレスを検出したことに応答して、ネットワークコントローラ１７０へ接続情報を送信するよう構成され得る。追加的に、または代替的に、いくつかの実施形態において、接続管理モジュール４０２は、設定可能なリファレンス接続通知インターバルに基づき、および／または、接続情報を送信するよう接続管理モジュール４０２にリクエストする、ネットワークコントローラ１７０から受信された１または複数の命令またはコマンドに基づき、ネットワークコントローラ１７０へ接続情報を送信するよう構成され得る。
【００４５】
パケット転送モジュール４０４は、ネットワークスイッチ１９０のポート（例えば、ＰＡ１９２、ＰＢ１９４、またはＰＣ１９６）を介しリモートコンピューティングデバイス１８０からネットワークパケットを受信するよう構成され得る。リモートコンピューティングデバイス１８０からネットワークパケットを受信したことに応答して、パケット転送モジュール４０４は、受信されたネットワークパケットと関連付けられた転送情報のリクエストをネットワークコントローラ１７０へ送信するよう構成される。パケット転送モジュール４０４は、ネットワークコントローラ１７０からリクエストされた転送情報を受信するようにも構成され得る。転送情報は、受信されたネットワークパケットが転送されるべきコンピューティングデバイス１１０の特定の処理ノード１１２のネットワークアダプタ（例えば、ＮＩＣ１３６またはＮＩＣ１５６）を識別し得、またはそうでなければそれを示し得る。いくつかの実施形態において、転送情報は、コンピューティングデバイス１１０の識別されたネットワークアダプタ（例えば、ＮＩＣ１３６またはＮＩＣ１５６）に通信可能に結合されたネットワークスイッチ１９０の特定のインタフェースまたはポート（例えば、ＰＡ１９２、ＰＢ１９４、ＰＣ１９６）を示す情報を含み得る。追加的に、いくつかの実施形態において、パケット転送モジュール４０４は、１または複数のフローエントリを含む１または複数のフローテーブルを保持するよう構成され得る。そのような複数の実施形態において、パケット転送モジュール４０４は、ネットワークコントローラ１７０から受信された転送情報に基づき（複数の）転送テーブルに複数のフローエントリを追加するよう構成され得る。
【００４６】
パケット転送モジュール４０４は、受信された転送情報に基づき、ネットワークコントローラ１７０により識別されるコンピューティングデバイス１１０の特定の処理ノード１１２のネットワークアダプタ（例えば、ＮＩＣ１３６またはＮＩＣ１５６）へ、リモートコンピューティングデバイス１８０により受信されたネットワークパケットを転送するようにも構成され得る。そうするために、いくつかの実施形態において、パケット転送モジュール４０４は、ネットワークコントローラ１７０から受信された転送情報に基づきネットワークパケットを、ネットワークパケットが受信されたネットワークスイッチ１９０のポート（例えば、ＰＢ１９４）から、コンピューティングデバイス１１０の識別されたネットワークアダプタ（例えば、ＮＩＣ１３６またはＮＩＣ１５６）に通信可能に結合されたネットワークスイッチ１９０の他のポート（例えば、ＰＡ１９２）へ転送するよう構成され得る。１または複数のフローエントリを含む（複数の）フローテーブルをネットワークスイッチ１９０が保持している複数の実施形態において、パケット転送モジュール４０４は、（複数の）フローテーブルの１または複数のフローエントリに基づき、リモートコンピューティングデバイス１８０により受信されたネットワークパケットを、ネットワークコントローラ１７０により識別されるコンピューティングデバイス１１０の特定の処理ノード１１２のネットワークアダプタ（例えば、ＮＩＣ１３６またはＮＩＣ１５６）へ転送するよう構成され得る。
【００４７】
ここで図５を参照すると、ネットワークコントローラ１７０は、複数のネットワークフローをコンピューティングデバイス１１０の複数の処理リソースにアライメントするための方法５００を実行し得る。方法５００は、ネットワークコントローラ１７０がアーキテクチャ情報をコンピューティングデバイス１１０から受信するブロック５０２から開始する。上記にて説明した通り、アーキテクチャ情報は、コンピューティングデバイス１１０の各処理ノード１１２のアーキテクチャを規定し得る。例えば、いくつかの実施形態において、ブロック５０４において、ネットワークコントローラ１７０は、どのプロセッサ（例えば、プロセッサ１２０およびプロセッサ１４０）およびメモリバンク（例えば、メモリ１２６およびメモリ１４６）がコンピューティングデバイス１１０のどの処理ノード１１２（例えば、処理ノード１１４および処理ノード１１６）に含まれているかを示すアーキテクチャ情報をコンピューティングデバイス１１０から受信する。いくつかの実施形態において、アーキテクチャ情報は、どのプロセッサコア（例えば、コアＡ１２２、コアＢ１２４、コアＡ１４２、およびコアＢ１４４）がどのプロセッサ（例えば、プロセッサ１２０およびプロセッサ１４０）に含まれるかと識別する情報も含み得る。追加的に、ブロック５０６において、ネットワークコントローラ１７０は、どのアプリケーションがコンピューティングデバイス１１０のどの処理ノード１１２（例えば、処理ノード１１４および処理ノード１１６）により実行されているかを示すアーキテクチャ情報をコンピューティングデバイス１１０から受信する。いくつかの実施形態において、そのようなアーキテクチャ情報は、複数のプロセッサ（例えば、プロセッサ１２０およびプロセッサ１４０）のどのプロセッサコア（例えば、コアＡ１２２、コアＢ１２４、コアＡ１４２、またはコアＢ１４４）がどのアプリケーションを実行しているかも識別し得る。追加的に、または代替的に、受信されたアーキテクチャ情報は、実行されている各アプリケーションに割り振られた、またはそうでなければ割り当てられた複数のメモリスペース（例えば、アプリケーションメモリスペース１２８およびアプリケーションメモリスペース１４８）を識別する情報を含み得る。いくつかの実施形態において、ブロック５０８において、ネットワークコントローラ１７０は、どのメモリキュー（例えば、Ｑ０  １３２、Ｑ１  １３４、Ｑ２  １５２、およびＱ３  １５４）がどのネットワークアダプタ（例えば、ＮＩＣ１３６またはＮＩＣ１５６）のどのポート（例えば、Ｐ１  １３７またはＰ２  １５７）に割り振られているか、またはそうでなければ割り当てられているかを示すアーキテクチャ情報もコンピューティングデバイス１１０から受信し得る。当然、他の複数の実施形態において、ネットワークコントローラ１７０が任意の他のタイプのアーキテクチャ情報をコンピューティングデバイス１１０から受信し得ることが理解されるべきである。
【００４８】
決定ブロック５１０において、ネットワークコントローラ１７０は、転送情報のリクエストがネットワークスイッチ１９０から受信されたかを決定する。転送情報のリクエストは、ネットワークスイッチ１９０のポート（例えば、ＰＡ１９２、ＰＢ１９４、ＰＣ１９６）を介しリモートコンピューティングデバイス１８０からネットワークパケットをネットワークスイッチ１９０が受信したことに応答して、ネットワークスイッチ１９０から受信され得る。決定ブロック５１０において、転送情報のリクエストがネットワークスイッチ１９０から受信されたことをネットワークコントローラ１７０が決定した場合、方法５００はブロック５１２へ進む。しかし、代わりに、転送情報のリクエストがネットワークスイッチ１９０から受信されていないとネットワークコントローラ１７０が決定した場合、方法５００は決定ブロック５１０に戻り、ネットワークコントローラ１７０は、転送情報のリクエストが受信されたかを決定し続ける。
【００４９】
ブロック５１２において、ネットワークコントローラ１７０は、ネットワークスイッチ１９０により受信されたネットワークパケットと関連付けられたネットワークフロー情報を決定する。ネットワークフロー情報は、ターゲットの処理ノードにより実行されるアプリケーションに少なくとも部分的に基づき、またはそうでなければその関数として、ネットワークパケットを処理するコンピューティングデバイス１１０のターゲットの処理ノード１１２（例えば、処理ノード１１４）を識別し、そうでなければそれを示す。動作においてネットワークコントローラ１７０は、コンピューティングデバイス１１０から受信されコンピューティングデバイスアーキテクチャデータベース１７２において保持されているアーキテクチャ情報に基づきネットワークフロー情報を決定する。そういうものとして、いくつかの実施形態において、ネットワークコントローラ１７０はブロック５１４において、ネットワークスイッチ１９０により受信されたネットワークパケットによりターゲットとされている特定のアプリケーションを決定し得、またはそうでなければ識別し得る。そうするために、ネットワークコントローラ１７０は、ネットワークパケットと関連付けられたヘッダ情報（例えば、５タプルからのポート番号およびタイプ）を調べ、ターゲットとされているアプリケーションを決定し得る。当然、ネットワークコントローラ１７０が、ネットワークスイッチ１９０により受信されたネットワークパケットによりターゲットとされている特定のアプリケーションを決定または識別するための任意の他の処理を用い得ることが理解されるべきである。そのような複数の実施形態において、ネットワークコントローラ１７０は、決定されたアプリケーションを、コンピューティングデバイス１１０から受信されたアーキテクチャ情報と比較し、ネットワークフロー情報を決定し得る。例えば、いくつかの実施形態において、ネットワークコントローラ１７０は、受信されたネットワークパケットによりターゲットとされているアプリケーションが、コンピューティングデバイス１１０の特定の処理ノード１１２（例えば、処理ノード１１４）により実行されていることを決定し得る。そのような複数の実施形態において、ネットワークコントローラ１７０は、受信されたネットワークパケットによりターゲットとされているアプリケーションを実行しているコンピューティングデバイス１１０の特定の処理ノード１１２（例えば、処理ノード１１４）がターゲットの処理ノード１１２であることを決定し得る。追加的に、いくつかの実施形態において、ネットワークコントローラ１７０はブロック５１６において、ネットワークパケットによりターゲットとされているアプリケーションを実行している特定のプロセッサコア（例えば、コアＡ１２２、コアＢ１２４、コアＡ１４２、またはコアＢ１４４）も決定し得る。そのような複数の実施形態において、ネットワークコントローラ１７０は、受信されたネットワークパケットによりターゲットとされているアプリケーションを実行しているプロセッサコア（例えば、コアＡ１２２またはコアＢ１２４）を含むコンピューティングデバイス１１０の特定の処理ノード１１２（例えば、処理ノード１１４）がターゲットの処理ノード１１２であることを決定し得る。
【００５０】
ブロック５１８において、ネットワークコントローラ１７０はネットワークフロー情報をコンピューティングデバイス１１０へ送信する。ネットワークフロー情報はその後、ネットワークパケットによりターゲットとされているアプリケーションを実行している特定のターゲットの処理ノード１１２（例えば、処理ノード１１４）のネットワークアダプタ（例えば、ＮＩＣ１３６）においてフローフィルタ（例えば、フローフィルタ１３８）をプログラミングするのにコンピューティングデバイス１１０により用いられ得る。いくつかの実施形態において、特定のターゲットの処理ノード１１２（例えば、処理ノード１１４）のネットワークアダプタ（例えば、ＮＩＣ１３６）におけるフローフィルタ（例えば、フローフィルタ１３８）は、ターゲットの処理ノード１１２（例えば、処理ノード１１４）のメモリ（例えば、メモリ１２６）における、ネットワークスイッチ１９０により受信されるネットワークパケット（および後続の関連する複数のネットワークパケット）を受信するメモリキュー（例えば、Ｑ０  １３２またはＱ１  １３４）を指定する。
【００５１】
ブロック５２０において、ネットワークコントローラ１７０は、ネットワークスイッチ１９０により受信されるネットワークパケットと関連付けられた転送情報を決定する。転送情報は、受信されたネットワークパケットが転送されるべきネットワークスイッチ１９０の特定のポート（例えば、ＰＡ１９２、ＰＢ１９４、またはＰＣ１９６）を識別する。動作において、ネットワークコントローラ１７０は、コンピューティングデバイス１１０から受信し、コンピューティングデバイスアーキテクチャに保持されているアーキテクチャ情報、および／または、ネットワークスイッチ１９０から受信し、ネットワークスイッチ接続データベース１７４に保持されている接続情報に基づき、転送情報を決定する。例えば、いくつかの実施形態において、ネットワークコントローラ１７０は、ネットワークパケットによりターゲットとされているアプリケーションを実行しているターゲットの処理ノード１１２（例えば、処理ノード１１４）のネットワークアダプタ（例えば、ＮＩＣ１３６）がネットワークスイッチ１９０の特定のポート（例えば、ＰＡ１９２）に通信可能に結合されていることを決定するのに、アーキテクチャ情報および接続情報を利用し得る。
【００５２】
ブロック５２２において、ネットワークコントローラは、転送情報をネットワークスイッチ１９０へ送信する。転送情報はその後、受信されたネットワークパケットによりターゲットとされているアプリケーションを実行しているターゲットの処理ノード１１２（例えば、処理ノード１１４）のネットワークアダプタ（例えば、ＮＩＣ１３６）に通信可能に結合された特定のポート（例えば、ＰＡ１９２）へ受信されたネットワークパケットを転送するのにネットワークスイッチ１９０により用いられ得る。
【００５３】
ここで図６を参照すると、コンピューティングデバイス１１０は、複数のネットワークフローをコンピューティングデバイス１１０の複数の処理リソースにアライメントするための方法６００を実行し得る。方法６００は、コンピューティングデバイス１１０がアーキテクチャ情報をネットワークコントローラ１７０へ送信するブロック６０２から開始する。ここでも上記にて説明した通り、アーキテクチャ情報は、コンピューティングデバイス１１０の各処理ノード１１２のアーキテクチャを規定し得る。例えば、いくつかの実施形態において、ブロック６０４において、コンピューティングデバイス１１０は、どのプロセッサおよびメモリバンクがコンピューティングデバイス１１０のどの処理ノード１１２に含まれているかを示すアーキテクチャ情報をネットワークコントローラ１７０へ送信する。いくつかの実施形態において、アーキテクチャ情報は、どのプロセッサコアがどのプロセッサに含まれているかを識別する情報も含み得る。追加的に、ブロック６０６において、コンピューティングデバイス１１０は、どのアプリケーションがコンピューティングデバイス１１０のどの処理ノード１１２により実行されているかを示すアーキテクチャ情報をネットワークコントローラ１７０へ送信する。いくつかの実施形態において、そのようなアーキテクチャ情報は、複数のプロセッサのどのプロセッサコアがどのアプリケーションを実行しているかも識別し得る。追加的に、または代替的に、送信されるアーキテクチャ情報は、実行されている各アプリケーションに割り振られた、またはそうでなければ割り当てられた複数のメモリスペースを識別する情報を含み得る。いくつかの実施形態において、ブロック６０８において、コンピューティングデバイス１１０は、どのメモリキューがどのネットワークアダプタ（例えば、ＮＩＣ）のどのポートに割り振られているか、またはそうでなければ割り当てられているかを示すアーキテクチャ情報もネットワークコントローラ１７０へ送信し得る。当然、他の複数の実施形態において、コンピューティングデバイス１１０は、任意の他のタイプアーキテクチャ情報をネットワークコントローラ１７０へ送信し得ることが理解されるべきである。
【００５４】
決定ブロック６１０において、コンピューティングデバイス１１０は、ネットワークスイッチ１９０により受信されたネットワークパケットと関連付けられたネットワークフロー情報がネットワークコントローラ１７０から受信されたかを決定する。いくつかの実施形態において、ネットワーク情報は、コンピューティングデバイス１１０をネットワークコントローラ１７０に通信可能に結合するコンピューティングデバイス１１０の１または複数の管理ポート（示されておらず）を介し受信され得る。ネットワークフロー情報は、コンピューティングデバイス１１０のターゲットの処理ノード１１２（例えば、処理ノード１１４）により実行されているアプリケーションに少なくとも部分的に基づき、またはそうでなければその関数として、ネットワークパケットを処理するターゲットの処理ノード１１２を識別し、またはそうでなければそれを示す。いくつかの実施形態において、ネットワークフロー情報は、ネットワークパケットによりターゲットとされているアプリケーションを実行している特定のプロセッサコア（例えば、コアＡ１２２コアＢ１２４）も識別し得、またはそうでなければそれも示し得る。決定ブロック６１０において、ネットワークパケットと関連付けられたネットワークフロー情報がネットワークコントローラ１７０から受信されたことをコンピューティングデバイス１１０が決定した場合、方法６００はブロック６１２へ進む。しかし、代わりに、ネットワークパケットと関連付けられたネットワークフロー情報がネットワークコントローラ１７０から受信されていないとコンピューティングデバイス１１０が決定した場合、方法６００は決定ブロック６１６に進む。
【００５５】
ブロック６１２において、コンピューティングデバイス１１０は、ネットワークパケットによりターゲットとされているアプリケーションを実行しているターゲットの処理ノード１１２（例えば、処理ノード１１４）のネットワークアダプタ（例えば、ＮＩＣ１３６）においてフローフィルタ（例えば、フローフィルタ１３８）をプログラミングする。いくつかの実施形態において、ブロック６１４において、コンピューティングデバイス１１０は、ターゲットの処理ノード１１２（例えば、処理ノード１１４）のネットワークアダプタ（例えば、ＮＩＣ１３６）においてフローフィルタ（例えば、フローフィルタ１３８）をプログラミングして、ターゲットの処理ノード１１２（例えば、処理ノード１１４）のメモリ（例えば、メモリ１２６）における、ネットワークスイッチ１９０により受信されたネットワークパケット（および後続の関連する複数のネットワークパケット）を受信するメモリキュー（例えば、Ｑ０  １３２またはＱ１  １３４）を指定する。
【００５６】
決定ブロック６１６において、コンピューティングデバイス１１０は、ネットワークパケットがネットワークスイッチ１９０から受信されたかを決定する。そうするために、いくつかの実施形態において、コンピューティングデバイス１１０は、ネットワークパケットが、ターゲットの処理ノード１１２（例えば、処理ノード１１４）のネットワークアダプタ（例えば、ＮＩＣ１３６）により受信されたかを決定する。決定ブロック６１６において、ネットワークパケットがネットワークスイッチ１９０から受信されたことをコンピューティングデバイス１１０が決定した場合、方法６００はブロック６１８へ進む。しかし、代わりに、ネットワークパケットがネットワークスイッチ１９０から受信されていないとコンピューティングデバイス１１０が決定した場合、方法６００は決定ブロック６１０に戻り、コンピューティングデバイス１１０はネットワークフロー情報が受信されたかを決定する。
【００５７】
ブロック６１８において、ターゲットの処理ノード１１２（例えば、処理ノード１１４）のネットワークアダプタ（例えば、ＮＩＣ１３６）は、受信されたネットワークパケットを、ターゲットの処理ノード１１２のメモリ（例えば、メモリ１２６）における指定されたメモリキュー（例えば、Ｑ０  １３２またはＱ１  １３４）へコピーする。そうするために、ターゲットの処理ノード１１２のネットワークアダプタ（例えば、ＮＩＣ１３６）は、事前にプログラミングされたフローフィルタ（例えば、フローフィルタ１３８）をネットワークスイッチ１９０から受信されたネットワークパケットに適用する。ネットワークパケットが受信されたがネットワークパケットと関連付けられたネットワークフロー情報が受信されていないとコンピューティングデバイス１１０が決定する複数の実施形態において、ネットワークパケットを受信したネットワークアダプタ（例えば、ＮＩＣ１３６またはＮＩＣ１５６）は、受信されたネットワークパケットを、関連付けられたＮＩＣメモリスペース（例えば、ＮＩＣメモリスペース１３０またはＮＩＣメモリスペース１５０）におけるメモリキュー（例えば、Ｑ０  １３２、Ｑ１  １３４、Ｑ２  １５２、またはＱ３  １５４）にコピーする。
【００５８】
ブロック６２０において、ネットワークパケットによりターゲットとされている特定のアプリケーションは、ターゲットの処理ノード１１２（例えば、処理ノード１１４）のメモリ（例えば、メモリ１２６）における指定されたメモリキュー（例えば、Ｑ０  １３２またはＱ１  １３４）からネットワークパケットを受信し、またはそうでなければ取得する。いくつかの実施形態において、ターゲットとされているアプリケーションは、ネットワークパケットが、指定されたメモリキュー（例えば、Ｑ０  １３２またはＱ１  １３４）から取得されるべく利用可能であるかを決定し得る。そうするために、いくつかの実施形態において、ターゲットとされているアプリケーションは、指定されたメモリキュー（例えば、Ｑ０  １３２またはＱ１  １３４）をポーリングして、ネットワークパケットが取得のために利用可能であるかを決定し得る。追加的に、または代替的に、ターゲットとされているアプリケーションは、ネットワークパケットが指定されたメモリキュー（例えば、Ｑ０  １３２またはＱ１  １３４）から取得されるべく利用可能であることを示している、コンピューティングデバイス１１０の他のコンポーネントにより生成された割込みを受信し得る。そのような複数の実施形態において、ターゲットとされているアプリケーションは、ネットワークパケットが取得のために利用可能であると決定したことに応答して、指定されたメモリキュー（例えば、Ｑ０  １３２またはＱ１  １３４）からネットワークパケットを取得し得る。いくつかの実施形態において、ターゲットとされているアプリケーションは、ネットワークパケットを取得した後、指定されたメモリキュー（例えば、Ｑ０  １３２またはＱ１  １３４）をクリアする、またはそうでなければリセットする。ネットワークパケットが受信されたがネットワークパケットと関連付けられたネットワークフロー情報が受信されていないとコンピューティングデバイス１１０が決定する複数の実施形態において、ネットワークパケットによりターゲットとされている特定のアプリケーションは、ネットワークパケットが格納されている処理ノード１１２（例えば、処理ノード１１４または処理ノード１１６）のメモリ（例えば、メモリ１２６またはメモリ１４６）におけるメモリキュー（例えば、Ｑ０  １３２、Ｑ１  １３４、Ｑ２  １５２、またはＱ３  １５４）からネットワークパケットを受信し、またはそうでなければ取得する。いくつかの実施形態において、ネットワークパケットによりターゲットとされている特定のアプリケーションは、受信されたネットワークパケットを格納しているＮＩＣメモリスペース（例えば、ＮＩＣメモリスペース１５０）を含む処理ノード１１２（例えば、処理ノード１１６）とは異なる処理ノード１１２（例えば、処理ノード１１４）で実行され得ることが理解されるべきである。そのような複数の実施形態において、ターゲットとされているアプリケーションは、処理ノード１１４を処理ノード１１６に通信可能に結合する通信リンク（例えば、ＱＰＩ１１８等）を介し処理ノード１１２（例えば、処理ノード１１６）のＮＩＣメモリスペース（例えば、ＮＩＣメモリスペース１５０）からネットワークパケットを受信し得���またはそうでなければ取得し得る。
【００５９】
ここで図７を参照すると、ネットワークスイッチ１９０は、複数のネットワークフローをコンピューティングデバイス１１０の複数の処理リソースにアライメントするための方法７００を実行し得る。方法７００は、ネットワークパケットがリモートコンピューティングデバイス１８０から受信されたかをネットワークスイッチ１９０が決定する決定ブロック７０２から開始する。いくつかの実施形態において、ネットワークスイッチ１９０は、ネットワークパケットがネットワークスイッチ１９０のポート（例えば、ＰＡ１９２、ＰＢ１９４、ＰＣ１９６）を介しリモートコンピューティングデバイス１８０から受信されたかを決定する。決定ブロック７０２において、ネットワークパケットがリモートコンピューティングデバイス１８０から受信されたとネットワークスイッチ１９０が決定した場合、方法７００はブロック７０４へ進む。しかし、代わりに、ネットワークパケットがリモートコンピューティングデバイス１８０から受信されていないとネットワークスイッチ１９０が決定した場合、方法７００は決定ブロック７０２に戻り、ネットワークスイッチ１９０は、ネットワークパケットが受信されたかを決定し続ける。
【００６０】
決定ブロック７０４において、ネットワークスイッチ１９０は、ネットワークスイッチ１９０により保持されている（複数の）転送テーブルが、受信されたネットワークパケットと関連付けられたフローエントリを含むかを決定し得る。説明されているように、（複数の）フローテーブルの各フローエントリは、ネットワークコントローラ１７０から受信された転送情報に基づき得、１または複数のネットワークフロー、各ネットワークフローと関連付けられた複数のネットワークパケット、および、各ネットワークフローの複数のネットワークパケットが転送されるべき宛先コンピューティングデバイス（またはそのコンポーネント）を識別するのにネットワークスイッチ１９０により用いられ得る。決定ブロック７０４において、（複数の）転送テーブルが受信されたネットワークパケットと関連付けられたフローエントリを含むとネットワークスイッチ１９０が決定した場合、方法７００はブロック７１２に進む。しかし、代わりに、受信されたネットワークパケットと関連付けられたフローエントリを（複数の）転送テーブルが含まないとネットワークスイッチ１９０が決定した場合、方法７００はブロック７０６へ進む。
【００６１】
ブロック７０６において、ネットワークスイッチ１９０は、ネットワークコントローラ１７０から、受信されたネットワークパケットと関連付けられ転送情報をリクエストする。いくつかの実施形態において、転送情報は、受信されたネットワークパケットが転送されるべきネットワークスイッチ１９０の特定のポート（例えば、ＰＡ１９２、ＰＢ１９４、またはＰＣ１９６）を識別する。例えば、いくつかの実施形態において、転送情報は、受信されたネットワークパケットが転送されるべきコンピューティングデバイス１１０のターゲットの処理ノード１１２（例えば、処理ノード１１４）の特定のネットワークアダプタ（例えば、ＮＩＣ１３６）に通信可能に結合された特定のポート（例えば、ＰＡ１９２）を識別し得る。
【００６２】
決定ブロック７０８において、ネットワークスイッチ１９０は、ネットワークパケットに関するリクエストされた転送情報がネットワークコントローラ１７０から受信されたかを決定する。決定ブロック７０８において、ネットワークパケットに関する転送情報がネットワークコントローラ１７０から受信されたとネットワークスイッチ１９０が決定した場合、方法７００はブロック７１０へ進む。しかし、代わりに、ネットワークパケットに関する転送情報がネットワークコントローラ１７０から受信されていないとネットワークスイッチ１９０が決定した場合、方法７００は決定ブロック７０８に戻り、ネットワークスイッチ１９０は、ネットワークパケットに関するリクエストされた転送情報が受信されたかを決定し続ける。
【００６３】
ブロック７１０において、ネットワークスイッチは、ネットワークコントローラ１７０から受信された転送情報に基づき、ネットワークスイッチ１９０により保持されている（複数の）転送テーブルにフローエントリを追加する。（複数の）フローテーブルに追加されたフローエントリは、ネットワークフロー、ネットワークフローと関連付けられた複数のネットワークパケット、および、各ネットワークフローの複数のネットワークパケットが転送されるべき宛先コンピューティングデバイス（またはそのコンポーネント）を識別し得る。例えば、いくつかの実施形態において、（複数の）フローテーブルに追加されるフローエントリは、コンピューティングデバイス１１０（またはＮＩＣ１３６などのその特定のコンポーネント）が通信可能に結合された、受信されたネットワークパケット（および続いて受信された複数のネットワークパケット）が転送されるべきネットワークスイッチ１９０の特定のポート（例えば、ＰＡ１９２、ＰＢ１９４、ＰＣ１９６）を示し得る。
【００６４】
ブロック７１２において、ネットワークスイッチ１９０は、受信されたネットワークパケットと関連付けられ（複数の）転送テーブルのフローエントリに基づき、ネットワークパケットを転送する。例えば、いくつかの実施形態において、ネットワークスイッチ１９０は、リモートコンピューティングデバイス１８０から受信されたネットワークパケットを、受信されたネットワークパケットと関連付けられた（複数の）転送テーブルのフローエントリに基づき、ネットワークスイッチ１９０の１つのポート（例えば、ＰＢ１９４）を介し、ネットワークスイッチ１９０の異なるポート（例えば、ＰＡ１９２）へ転送し得る。
【００６５】
ここで図８を参照すると、ネットワークスイッチ１９０は、複数のネットワークフローをコンピューティングデバイス１１０の複数の処理リソースにアライメントするための方法８００を実行し得る。いくつかの実施形態において、ネットワークスイッチ１９０は、上記にて説明した方法７００と並列で方法８００を実行し得る。方法８００は、ネットワークパケットに関する転送情報がネットワークコントローラ１７０から受信されたかをネットワークスイッチ１９０が決定する決定ブロック８０２から開始する。決定ブロック８０２において、ネットワークパケットに関する転送情報がネットワークコントローラ１７０から受信されたとネットワークスイッチ１９０が決定した場合、方法８００はブロック８０４へ進む。しかし、代わりに、ネットワークパケットに関する転送情報がネットワークコントローラ１７０から受信されていないとネットワークスイッチ１９０が決定した場合、方法８００は決定ブロック８０２に戻り、ネットワークスイッチ１９０は、転送情報が受信されたかを決定し続ける。
【００６６】
ブロック８０４において、ネットワークスイッチ１９０は、ネットワークコントローラ１７０から受信された転送情報に基づき、ネットワークスイッチ１９０により保持されている（複数の）転送テーブルへフローエントリを追加する。（複数の）フローテーブルに追加されたフローエントリは、ネットワークフロー、ネットワークフローと関連付けられた複数のネットワークパケット、および、各ネットワークフローの複数のネットワークパケットが転送されるべき宛先コンピューティングデバイス（またはそのコンポーネント）を識別し得る。例えば、いくつかの実施形態において、（複数の）フローテーブルに追加されるフローエントリは、コンピューティングデバイス１１０が通信可能に結合された、受信されたネットワークパケット（および続いて受信された複数のネットワークパケット）が転送されるべきネットワークスイッチ１９０の特定のポート（例えば、ＰＡ１９２、ＰＢ１９４、ＰＣ１９６）を示し得る。
【００６７】
例
【００６８】
本明細書に開示されている複数の技術の例示的な複数の例が以下に提供される。複数の技術の実施形態は、以下に記載される複数の例のうち１または複数の、およびそれらの任意の組み合わせを含み得る。
【００６９】
例１は、複数のネットワークフローを複数の処理リソースにアライメントするためのコンピューティングデバイスを含み、
コンピューティングデバイスは、アーキテクチャ情報をネットワークコントローラへ送信するアーキテクチャ通知モジュールを備え、
アーキテクチャ情報は、コンピューティングデバイスの複数の処理ノードの各処理ノードのアーキテクチャを規定しており、
各処理ノードはプロセッサと、メモリと、ネットワークアダプタとを有し、
コンピューティングデバイスは、ローカルフロー管理モジュールを備え、
ローカルフロー管理モジュールは、（ｉ）ネットワークコントローラからネットワークフロー情報を受信し、
ネットワークフロー情報はネットワークパケットと関連付けられ、複数の処理ノードのうちネットワークパケットを処理するターゲットの処理ノードを、ターゲットの処理ノードにより実行されるアプリケーションに少なくとも基づき識別し、
ローカルフロー管理モジュールは、（ｉｉ）ネットワークフロー情報に少なくとも基づき、ターゲットの処理ノードのネットワークアダプタにおいてフローフィルタを、ターゲットの処理ノードのメモリにおける、ネットワークパケットを受信するメモリキューを指定するようプログラミングし、
ターゲットの処理ノードのネットワークアダプタは、ネットワークスイッチからネットワークパケットを受信し、ネットワークパケットは、ターゲットの処理ノードにより実行されるアプリケーションにより処理される。
【００７０】
例２は、例１の主題を含み、アーキテクチャ情報は、複数の処理ノードの各処理ノードにより実行される複数のアプリケーションを示す。
【００７１】
例３は、例１および２のいずれかの主題を含み、
各処理ノードのプロセッサは複数の処理コアを含み、
アーキテクチャ情報は、各処理ノードの各プロセッサの各処理コアにより実行される複数のアプリケーションを示すデータを含み、
ネットワークフロー情報を受信することは、ターゲットの処理ノードの処理コアにより実行されるアプリケーションに少なくとも基づき、ネットワークパケットを処理するターゲットの処理ノードを識別するネットワークフロー情報をネットワークコントローラから受信することを含む。
【００７２】
例４は、例１から３のいずれかの主題を含み、
ターゲットの処理ノードのネットワークアダプタはさらに、（ｉ）ターゲットの処理ノードのメモリにおけるメモリキューをネットワークアダプタのポートに割り当て、
ネットワークスイッチからネットワークパケットを受信することは、ネットワークアダプタのポートを介しネットワークスイッチからネットワークパケットを受信することを含み、
ターゲットの処理ノードのネットワークアダプタはさらに、（ｉｉ）受信されたネットワークパケットを、ネットワークアダプタのポートに割り当てられたターゲットの処理ノードのメモリにおけるメモリキューにコピーする。
【００７３】
例５は、例１から４のいずれかの主題を含み、
ターゲットの処理ノードにより実行されるアプリケーションは、（ｉ）受信されたネットワークパケットが、ターゲットの処理ノードのメモリにおけるメモリキューから取得されるべく利用可能であるか決定し、（ｉｉ）受信されたネットワークパケットがメモリキューから取得されるべく利用可能であるとの決定に応答して、ターゲットの処理ノードのメモリにおけるメモリキューから受信されたネットワークパケットを取得する。
【００７４】
例６は、例１から５のいずれかの主題を含み、
ネットワークパケットがメモリキューから取得されるべく利用可能であるか決定することは、（ｉ）リファレンスポーリングインターバルの関数としてターゲットの処理ノードのメモリにおけるメモリキューをポーリングすること、または、（ｉｉ）ネットワークパケットがメモリキューから取得されるべく利用可能であることを示す割込みを受信することのうち少なくとも１つを含む。
【００７５】
例７は、例１から６のいずれかの主題を含み、
ネットワークパケットは第１ネットワークパケットを含み、
ネットワークフロー情報は第１ネットワークフロー情報を含み、
フローフィルタは第１フローフィルタを含み、
ターゲットの処理ノードのメモリは第１メモリを含み、
ターゲットの処理ノードのメモリにおけるメモリキューはターゲットの処理ノードの第１メモリにおける第１メモリキューを含み、
ターゲットの処理ノードのネットワークアダプタはターゲットの処理ノードの第１ネットワークアダプタを含み、
ローカルフロー管理モジュールはさらに、（ｉ）ネットワークコントローラから第２ネットワークフロー情報を受信し、
第２ネットワークフロー情報は第２ネットワークパケットと関連付けられ、複数の処理ノードのうち第２ネットワークパケットを処理する異なる処理ノードを、異なる処理ノードにより実行される他のアプリケーションに少なくとも基づき識別し、
ローカルフロー管理モジュールはさらに、（ｉｉ）第２ネットワークフロー情報に少なくとも基づき、異なる処理ノードの第２ネットワークアダプタにおいて第２フローフィルタを、異なる処理ノードの第２メモリにおける、第２ネットワークパケットを受信する第２メモリキューを指定するようプログラミングし、
異なる処理ノードの第２ネットワークアダプタはネットワークスイッチから第２ネットワークパケットを受信し、
第２ネットワークパケットは、異なる処理ノードにより実行される他のアプリケーションにより処理される。
【００７６】
例８は、例１から７のいずれかの主題を含み、ターゲットの処理ノードは、ネットワークコントローラから受信された複数の命令に少なくとも基づき他のアプリケーションを実行する。
【００７７】
例９は、複数のネットワークフローを複数の処理リソースにアライメントするための方法を含み、方法は、複数の処理ノードを有するコンピューティングデバイスにより、アーキテクチャ情報をネットワークコントローラへ送信する段階を備え、
アーキテクチャ情報は、各処理ノードのアーキテクチャを規定しており、
各処理ノードはプロセッサと、メモリと、ネットワークアダプタとを含み、
方法は、コンピューティングデバイスにより、ネットワークコントローラからネットワークフロー情報を受信する段階を備え、
ネットワークフロー情報はネットワークパケットと関連付けられ、複数の処理ノードのうちネットワークパケットを処理するターゲットの処理ノードを、ターゲットの処理ノードにより実行されるアプリケーションに少なくとも基づき識別し、
方法は、
コンピューティングデバイスにより、ネットワークフロー情報に少なくとも基づき、ターゲットの処理ノードのネットワークアダプタにおいてフローフィルタを、ターゲットの処理ノードのメモリにおける、ネットワークパケットを受信するメモリキューを指定するようプログラミングする段階と、
ターゲットの処理ノードのネットワークアダプタにより、ネットワークスイッチからネットワークパケットを受信する段階と
を備え、
ネットワークパケットは、ターゲットの処理ノードにより実行されるアプリケーションにより処理される。
【００７８】
例１０は、例９の主題を含み、アーキテクチャ情報は、複数の処理ノードの各処理ノードにより実行される複数のアプリケーションを示す。
【００７９】
例１１は、例９および１０のいずれかの主題を含み、
各処理ノードのプロセッサは複数の処理コアを含み、
アーキテクチャ情報は、各処理ノードの各プロセッサの各処理コアにより実行される複数のアプリケーションを示すデータを含み、
ネットワークフロー情報を受信する段階は、ターゲットの処理ノードの処理コアにより実行されるアプリケーションに少なくとも基づき、ネットワークパケットを処理するターゲットの処理ノードを識別するネットワークフロー情報をネットワークコントローラから受信する段階を含む。
【００８０】
例１２は、例９から１１のいずれかの主題を含み、
ターゲットの処理ノードのネットワークアダプタにより、ターゲットの処理ノードのメモリにおけるメモリキューをネットワークアダプタのポートに割り当てる段階をさらに備え、
ネットワークスイッチからネットワークパケットを受信する段階は、ネットワークアダプタのポートを介しネットワークスイッチからネットワークパケットを受信する段階を有し、
方法は、ターゲットの処理ノードのネットワークアダプタにより、受信されたネットワークパケットを、ネットワークアダプタのポートに割り当てられたターゲットの処理ノードのメモリにおけるメモリキューへコピーする段階をさらに備える。
【００８１】
例１３は、例９から１２のいずれかに記載の主題を含み、
ターゲットの処理ノードにより実行されるアプリケーションにより、受信されたネットワークパケットが、ターゲットの処理ノードのメモリにおけるメモリキューから取得されるべく利用可能であるか決定する段階と、
ターゲットの処理ノードにより実行されるアプリケーションにより、受信されたネットワークパケットがメモリキューから取得されるべく利用可能であるとの決定に応答して、ターゲットの処理ノードのメモリにおけるメモリキューから受信されたネットワークパケットを取得する段階と
をさらに備える。
【００８２】
例１４は、例９から１３のいずれかに記載の主題を含み、ネットワークパケットがメモリキューから取得されるべく利用可能であるか決定する段階は、（ｉ）リファレンスポーリングインターバルの関数としてターゲットの処理ノードのメモリにおけるメモリキューをポーリングする段階と、（ｉｉ）ネットワークパケットがメモリキューから取得されるべく利用可能であることを示す割込みを受信する段階とのうち少なくとも１つを含む。
【００８３】
例１５は、例９から１４のいずれかに記載の主題を含み、
ネットワークパケットは第１ネットワークパケットを含み、
ネットワークフロー情報は第１ネットワークフロー情報を含み、
フローフィルタは第１フローフィルタを含み、
ターゲットの処理ノードのメモリは第１メモリを含み、
ターゲットの処理ノードのメモリにおけるメモリキューはターゲットの処理ノードの第１メモリにおける第１メモリキューを含み、
ターゲットの処理ノードのネットワークアダプタはターゲットの処理ノードの第１ネットワークアダプタを含み、
コンピューティングデバイスにより、ネットワークコントローラから第２ネットワークフロー情報を受信する段階をさらに備え、
第２ネットワークフロー情報は第２ネットワークパケットと関連付けられ、複数の処理ノードのうち第２ネットワークパケットを処理する異なる処理ノードを、異なる処理ノードにより実行される他のアプリケーションに少なくとも基づき識別し、
方法は、
コンピューティングデバイスにより、第２ネットワークフロー情報に少なくとも基づき、異なる処理ノードの第２ネットワークアダプタにおいて第２フローフィルタを、異なる処理ノードの第２メモリにおける、第２ネットワークパケットを受信する第２メモリキューを指定するようプログラミングする段階と、
異なる処理ノードの第２ネットワークアダプタにより、ネットワークスイッチから第２ネットワークパケットを受信する段階と
をさらに備え、
第２ネットワークパケットは、異なる処理ノードにより実行される他のアプリケーションにより処理される。
【００８４】
例１６は、例９から１５のいずれかに記載の主題を含み、
コンピューティングデバイスの複数の処理ノードのうち１または複数により、ネットワークコントローラから受信された複数の命令に少なくとも基づき他のアプリケーションを実行する段階をさらに備える。
【００８５】
例１７は、複数のネットワークフローを複数の処理リソースにアライメントするためのコンピューティングデバイスを含み、
コンピューティングデバイスは、プロセッサと、複数の命令を格納したメモリとを含み、複数の命令はプロセッサにより実行されたときにコンピューティングデバイスに、例９から１６のいずれかに記載の方法を実行させる。
【００８６】
例１８は、複数の命令を格納した１または複数のマシン可読媒体を含み、複数の命令が実行されることに応答して、コンピューティングデバイスが例９から１６のいずれかに記載の方法を実行することになる。
【００８７】
例１９は、複数のネットワークフローを複数の処理リソースにアライメントするためのコンピューティングデバイスを含み、
コンピューティングデバイスは、アーキテクチャ情報をネットワークコントローラへ送信するための手段を備え、
アーキテクチャ情報は、コンピューティングデバイスの複数の処理ノードの各処理ノードのアーキテクチャを規定しており、
各処理ノードはプロセッサと、メモリと、ネットワークアダプタとを有し、
コンピューティングデバイスは、ネットワークコントローラからネットワークフロー情報を受信するための手段を備え、
ネットワークフロー情報はネットワークパケットと関連付けられ、複数の処理ノードのうちネットワークパケットを処理するターゲットの処理ノードを、ターゲットの処理ノードにより実行されるアプリケーションに少なくとも基づき識別し、
コンピューティングデバイスは、ネットワークフロー情報に少なくとも基づき、ターゲットの処理ノードのネットワークアダプタにおいてフローフィルタを、ターゲットの処理ノードのメモリにおける、ネットワークパケットを受信するメモリキューを指定するようプログラミングするための手段を備え、
コンピューティングデバイスは、ターゲットの処理ノードのネットワークアダプタにより、ネットワークスイッチからネットワークパケットを受信するための手段を備え、
ネットワークパケットは、ターゲットの処理ノードにより実行されるアプリケーションにより処理される。
【００８８】
例２０は、例１９の主題を含み、アーキテクチャ情報は、複数の処理ノードの各処理ノードにより実行される複数のアプリケーションを示す。
【００８９】
例２１は、例１９および２０のいずれかに記載の主題を含み、
各処理ノードのプロセッサは複数の処理コアを含み、
アーキテクチャ情報は、各処理ノードの各プロセッサの各処理コアにより実行される複数のアプリケーションを示すデータを含み、
ネットワークフロー情報を受信するための手段は、ターゲットの処理ノードの処理コアにより実行されるアプリケーションに少なくとも基づき、ネットワークパケットを処理するターゲットの処理ノードを識別するネットワークフロー情報をネットワークコントローラから受信するための手段を含む。
【００９０】
例２２は、例１９から２１のいずれかに記載の主題を含み、
ターゲットの処理ノードのネットワークアダプタにより、ターゲットの処理ノードのメモリにおけるメモリキューをネットワークアダプタのポートに割り当てるための手段をさらに備え、
ネットワークスイッチからネットワークパケットを受信することは、ネットワークアダプタのポートを介しネットワークスイッチからネットワークパケットを受信することを有し、
ターゲットの処理ノードのネットワークアダプタにより、受信されたネットワークパケットを、ネットワークアダプタのポートに割り当てられたターゲットの処理ノードのメモリにおけるメモリキューへコピーするための手段をさらに備える。
【００９１】
例２３は、例１９から２２のいずれかに記載の主題を含み、
ターゲットの処理ノードにより実行されるアプリケーションにより、受信されたネットワークパケットが、ターゲットの処理ノードのメモリにおけるメモリキューから取得されるべく利用可能であるか決定するための手段と、
ターゲットの処理ノードにより実行されるアプリケーションにより、受信されたネットワークパケットがメモリキューから取得されるべく利用可能であるとの決定に応答して、ターゲットの処理ノードのメモリにおけるメモリキューから受信されたネットワークパケットを取得するための手段と
をさらに備える。
【００９２】
例２４は、例１９から２３のいずれかに記載の主題を含み、
ネットワークパケットがメモリキューから取得されるべく利用可能であるか決定するための手段は、（ｉ）リファレンスポーリングインターバルの関数としてターゲットの処理ノードのメモリにおけるメモリキューをポーリングするための手段と、（ｉｉ）ネットワークパケットがメモリキューから取得されるべく利用可能であることを示す割込みを受信するための手段とのうち少なくとも１つを含む。
【００９３】
例２５は、例１９から２４のいずれかに記載の主題を含み、
ネットワークパケットは第１ネットワークパケットを含み、
ネットワークフロー情報は第１ネットワークフロー情報を含み、
フローフィルタは第１フローフィルタを含み、
ターゲットの処理ノードのメモリは第１メモリを含み、
ターゲットの処理ノードのメモリにおけるメモリキューはターゲットの処理ノードの第１メモリにおける第１メモリキューを含み、
ターゲットの処理ノードのネットワークアダプタはターゲットの処理ノードの第１ネットワークアダプタを含み、
ネットワークコントローラから第２ネットワークフロー情報を受信するための手段をさらに備え、
第２ネットワークフロー情報は第２ネットワークパケットと関連付けられ、複数の処理ノードのうち第２ネットワークパケットを処理する異なる処理ノードを、異なる処理ノードにより実行される他のアプリケーションに少なくとも基づき識別し、
第２ネットワークフロー情報に少なくとも基づき、異なる処理ノードの第２ネットワークアダプタにおいて第２フローフィルタを、異なる処理ノードの第２メモリにおける、第２ネットワークパケットを受信する第２メモリキューを指定するようプログラミングするための手段と、
異なる処理ノードの第２ネットワークアダプタにより、ネットワークスイッチから第２ネットワークパケットを受信するための手段と
をさらに備え、
第２ネットワークパケットは、異なる処理ノードにより実行される他のアプリケーションにより処理される。
【００９４】
例２６は、例１９から２５のいずれかに記載の主題を含み、
コンピューティングデバイスの複数の処理ノードのうち１または複数により、ネットワークコントローラから受信された複数の命令に少なくとも基づき他のアプリケーションを実行するための手段をさらに備える。
【００９５】
例２７は、複数のネットワークフローを複数の処理リソースにアライメントするためのネットワークコントローラを含み、
ネットワークコントローラは、
コンピューティングデバイスからアーキテクチャ情報を受信するアーキテクチャ管理モジュールを備え、
アーキテクチャ情報は、コンピューティングデバイスの複数の処理ノードのそれぞれのアーキテクチャを規定しており、
ネットワークコントローラは、フロー管理モジュールを備え、
フロー管理モジュールは、（ｉ）ネットワークスイッチから、ネットワークパケットと関連付けられた転送情報のリクエストを受信し、（ｉｉ）アーキテクチャ情報に少なくとも基づきネットワークパケットと関連付けられたネットワークフロー情報を決定し、
ネットワークフロー情報は、コンピューティングデバイスの複数の処理ノードのうちネットワークパケットを処理するターゲットの処理ノードを、ターゲットの処理ノードにより実行されるアプリケーションに少なくとも基づき識別し、
フロー管理モジュールは、（ｉｉｉ）決定されたネットワークフロー情報をコンピューティングデバイスへ送信して、ネットワークフロー情報に少なくとも基づきターゲットの処理ノードのネットワークアダプタにおいてフローフィルタをプログラミングし、
フローフィルタは、ターゲットの処理ノードのメモリにおける、ネットワークパケットを受信するメモリキューを指定し、
フロー管理モジュールは、（ｉｖ）ネットワークパケットと関連付けられた転送情報を決定し、
転送情報は、コンピューティングデバイスのターゲットの処理ノードのネットワークアダプタに通信可能に結合された、ネットワークパケットが転送されることになるネットワークスイッチのポートを識別し、
フロー管理モジュールは、（ｖ）決定された転送情報をネットワークスイッチへ送信し、
ネットワークパケットは、転送情報に少なくとも基づきネットワークスイッチにより転送される。
【００９６】
例２８は、例２７の主題を含み、
コンピューティングデバイスからアーキテクチャ情報を受信することは、各処理ノードにより実行される複数のアプリケーションを示すアプリケーションデータ、複数の処理ノードのそれぞれのプロセッサを示すプロセッサデータ、複数の処理ノードのそれぞれのプロセッサの複数の処理コアを示すプロセッサコアデータ、複数の処理ノードのそれぞれにおける割り当てられた複数のメモリキューを示すメモリキューデータ、または、複数の処理ノードのそれぞれの複数のネットワークアダプタの複数のポートを示すポートデータのうち少なくとも１つを受信することを含む。
【００９７】
例２９は、例２７および２８のいずれかに記載の主題を含み、
コンピューティングデバイスからアーキテクチャ情報を受信することは、複数の処理ノードのそれぞれのプロセッサの各処理コアにより実行される複数のアプリケーションを示すアプリケーション実行データを受信することを含み、
ネットワークフロー情報を決定することは、アプリケーション実行データに少なくとも基づきネットワークパケットと関連付けられたネットワークフロー情報を決定することを含み、
ネットワークフロー情報は、コンピューティングデバイスの複数の処理ノードのうちネットワークパケットを処理するターゲットの処理ノードを、ターゲットの処理ノードの処理コアにより実行されるアプリケーションに少なくとも基づき識別する。
【００９８】
例３０は、例２７から２９のいずれかに記載の主題を含み、
転送情報は第１転送情報を含み、
転送情報のリクエストは第１転送情報のリクエストを含み、
ネットワークパケットは第１ネットワークパケットを含み、
ネットワークフロー情報は第１ネットワークフロー情報を含み、
フローフィルタは第１フローフィルタを含み、
ターゲットの処理ノードのメモリは第１メモリを含み、
ターゲットの処理ノードのメモリにおけるメモリキューは、ターゲットの処理ノードの第１メモリにおける第１メモリキューを含み、
ターゲットの処理ノードのネットワークアダプタはターゲットの処理ノードの第１ネットワークアダプタを含み、
フロー管理モジュールはさらに、（ｉ）ネットワークスイッチから、第２ネットワークパケットと関連付けられた第２転送情報の第２リクエストを受信し、（ｉｉ）アーキテクチャ情報に少なくとも基づき、第２ネットワークパケットと関連付けられた第２ネットワークフロー情報を決定し、
第２ネットワークフロー情報は、コンピューティングデバイスの複数の処理ノードのうち第２ネットワークパケットを処理する異なる処理ノードを、異なる処理ノードにより実行される他のアプリケーションに少なくとも基づき識別し、
フロー管理モジュールはさらに、（ｉｉｉ）決定された第２ネットワークフロー情報をコンピューティングデバイスへ送信して、第２ネットワークフロー情報に少なくとも基づき異なる処理ノードの第２ネットワークアダプタにおける第２フローフィルタをプログラミングし、
第２フローフィルタは、異なる処理ノードの第２メモリにおける、第２ネットワークパケットを受信する第２メモリキューを指定し、
フロー管理モジュールはさらに、（ｉｖ）第２ネットワークパケットと関連付けられた第２転送情報を決定し、
第２転送情報は、コンピューティングデバイスの異なる処理ノードの第２ネットワークアダプタへ通信可能に結合される、第２ネットワークパケットが転送されることになるネットワークスイッチの第２ポートを識別し、
フロー管理モジュールはさらに、（ｖ）決定された第２転送情報をネットワークスイッチへ送信し、
第２ネットワークパケットは、第２転送情報に少なくとも基づき、ネットワークスイッチにより転送される。
【００９９】
例３１は、例２７から３０のいずれかに記載の主題を含み、
フロー管理モジュールはさらに、命令メッセージをコンピューティングデバイスへ送信し、
命令メッセージは、コンピューティングデバイスに、コンピューティングデバイスの複数の処理ノードのうち１または複数により他のアプリケーションを実行するよう命令する。
【０１００】
例３２は、複数のネットワークフローを複数の処理リソースにアライメントするための方法を含み、
ネットワークコントローラにより、コンピューティングデバイスからアーキテクチャ情報を受信する段階を備え、
アーキテクチャ情報は、コンピューティングデバイスの複数の処理ノードのそれぞれのアーキテクチャを規定しており、
方法は、
ネットワークコントローラにより、およびネットワークスイッチから、ネットワークパケットと関連付けられた転送情報のリクエストを受信する段階と、
ネットワークコントローラにより、アーキテクチャ情報に少なくとも基づきネットワークパケットと関連付けられたネットワークフロー情報を決定する段階と
を備え、
ネットワークフロー情報は、コンピューティングデバイスの複数の処理ノードのうちネットワークパケットを処理するターゲットの処理ノードを、ターゲットの処理ノードにより実行されるアプリケーションに少なくとも基づき識別し、
方法は、ネットワークコントローラにより、決定されたネットワークフロー情報をコンピューティングデバイスへ送信して、ネットワークフロー情報に少なくとも基づきターゲットの処理ノードのネットワークアダプタにおいてフローフィルタをプログラミングする段階を備え、
フローフィルタは、ターゲットの処理ノードのメモリにおける、ネットワークパケットを受信するメモリキューを指定し、
方法は、ネットワークコントローラにより、ネットワークパケットと関連付けられた転送情報を決定し、
転送情報は、コンピューティングデバイスのターゲットの処理ノードのネットワークアダプタに通信可能に結合された、ネットワークパケットが転送されることになるネットワークスイッチのポートを識別し、
方法は、ネットワークコントローラにより、決定された転送情報をネットワークスイッチへ送信する段階を備え、
ネットワークパケットは、転送情報に少なくとも基づきネットワークスイッチにより転送される。
【０１０１】
例３３は、例３２の主題を含み、
コンピューティングデバイスからアーキテクチャ情報を受信する段階は、各処理ノードにより実行される複数のアプリケーションを示すアプリケーションデータ、複数の処理ノードのそれぞれのプロセッサを示すプロセッサデータ、複数の処理ノードのそれぞれのプロセッサの複数の処理コアを示すプロセッサコアデータ、複数の処理ノードのそれぞれにおける割り当てられた複数のメモリキューを示すメモリキューデータ、または、複数の処理ノードのそれぞれの複数のネットワークアダプタの複数のポートを示すポートデータのうち少なくとも１つを受信する段階を含む。
【０１０２】
例３４は、例３２および３３のいずれかに記載の主題を含み、
コンピューティングデバイスからアーキテクチャ情報を受信する段階は、複数の処理ノードのそれぞれのプロセッサの各処理コアにより実行される複数のアプリケーションを示すアプリケーション実行データを受信する段階を含み、
ネットワークフロー情報を決定する段階は、アプリケーション実行データに少なくとも基づきネットワークパケットと関連付けられたネットワークフロー情報を決定する段階を含み、
ネットワークフロー情報は、コンピューティングデバイスの複数の処理ノードのうちネットワークパケットを処理するターゲットの処理ノードを、ターゲットの処理ノードの処理コアにより実行されるアプリケーションに少なくとも基づき識別する。
【０１０３】
例３５は、例３２から３４のいずれかに記載の主題を含み、
転送情報は第１転送情報を含み、
転送情報のリクエストは第１転送情報のリクエストを含み、
ネットワークパケットは第１ネットワークパケットを含み、
ネットワークフロー情報は第１ネットワークフロー情報を含み、
フローフィルタは第１フローフィルタを含み、
ターゲットの処理ノードのメモリは第１メモリを含み、
ターゲットの処理ノードのメモリにおけるメモリキューは、ターゲットの処理ノードの第１メモリにおける第１メモリキューを含み、
ターゲットの処理ノードのネットワークアダプタはターゲットの処理ノードの第１ネットワークアダプタを含み、
方法は、
ネットワークコントローラにより、およびネットワークスイッチから、第２ネットワークパケットと関連付けられた第２転送情報の第２リクエストを受信する段階と、
ネットワークコントローラにより、アーキテクチャ情報に少なくとも基づき、第２ネットワークパケットと関連付けられた第２ネットワークフロー情報を決定する段階と
をさらに備え、
第２ネットワークフロー情報は、コンピューティングデバイスの複数の処理ノードのうち第２ネットワークパケットを処理する異なる処理ノードを、異なる処理ノードにより実行される他のアプリケーションに少なくとも基づき識別し、
方法は、ネットワークコントローラにより、決定された第２ネットワークフロー情報をコンピューティングデバイスへ送信して、第２ネットワークフロー情報に少なくとも基づき異なる処理ノードの第２ネットワークアダプタにおける第２フローフィルタをプログラミングする段階をさらに備え、
第２フローフィルタは、異なる処理ノードの第２メモリにおける、第２ネットワークパケットを受信する第２メモリキューを指定し、
方法は、ネットワークコントローラにより、第２ネットワークパケットと関連付けられた第２転送情報を決定する段階をさらに備え、
第２転送情報は、コンピューティングデバイスの異なる処理ノードの第２ネットワークアダプタへ通信可能に結合される、第２ネットワークパケットが転送されることになるネットワークスイッチの第２ポートを識別し、
方法は、ネットワークコントローラにより、決定された第２転送情報をネットワークスイッチへ送信する段階をさらに備え、
第２ネットワークパケットは、第２転送情報に少なくとも基づき、ネットワークスイッチにより転送される。
【０１０４】
例３６は、例３２から３５のいずれかに記載の主題を含み、ネットワークコントローラにより、命令メッセージをコンピューティングデバイスへ送信する段階をさらに備え、
命令メッセージは、コンピューティングデバイスに、コンピューティングデバイスの複数の処理ノードのうち１または複数により他のアプリケーションを実行するよう命令する。
【０１０５】
例３７は、複数のネットワークフローを複数の処理リソースにアライメントするためのネットワークコントローラを含み、
ネットワークコントローラは、プロセッサと、複数の命令を格納したメモリとを含み、複数の命令はプロセッサにより実行されたときにネットワークコントローラに、例３２から３６のいずれかに記載の方法を実行させる。
【０１０６】
例３８は、１または複数のマシン可読媒体を含み、１または複数のマシン可読媒体には、実行されることに応答して、ネットワークコントローラが例３２から３６のいずれかに記載の方法を実行することになる複数の命令が格納されている。
【０１０７】
例３９は、複数のネットワークフローを複数の処理リソースにアライメントするためのネットワークコントローラを含み、
ネットワークコントローラは、
コンピューティングデバイスからアーキテクチャ情報を受信するための手段を備え、
アーキテクチャ情報は、コンピューティングデバイスの複数の処理ノードのそれぞれのアーキテクチャを規定しており、
ネットワークコントローラは、
ネットワークスイッチから、ネットワークパケットと関連付けられた転送情報のリクエストを受信するための手段と、
アーキテクチャ情報に少なくとも基づきネットワークパケットと関連付けられたネットワークフロー情報を決定するための手段と
を備え、
ネットワークフロー情報は、コンピューティングデバイスの複数の処理ノードのうちネットワークパケットを処理するターゲットの処理ノードを、ターゲットの処理ノードにより実行されるアプリケーションに少なくとも基づき識別し、
ネットワークコントローラは、決定されたネットワークフロー情報をコンピューティングデバイスへ送信して、ネットワークフロー情報に少なくとも基づきターゲットの処理ノードのネットワークアダプタにおいてフローフィルタをプログラミングするための手段を備え
フローフィルタは、ターゲットの処理ノードのメモリにおける、ネットワークパケットを受信するメモリキューを指定し、
ネットワークコントローラは、ネットワークパケットと関連付けられた転送情報を決定するための手段を備え、
転送情報は、コンピューティングデバイスのターゲットの処理ノードのネットワークアダプタに通信可能に結合された、ネットワークパケットが転送されることになるネットワークスイッチのポートを識別し、
ネットワークコントローラは、決定された転送情報をネットワークスイッチへ送信するための手段を備え、
ネットワークパケットは、転送情報に少なくとも基づきネットワークスイッチにより転送される。
【０１０８】
例４０は、例３９の主題を含み、
コンピューティングデバイスからアーキテクチャ情報を受信するための手段は、各処理ノードにより実行される複数のアプリケーションを示すアプリケーションデータ、複数の処理ノードのそれぞれのプロセッサを示すプロセッサデータ、複数の処理ノードのそれぞれのプロセッサの複数の処理コアを示すプロセッサコアデータ、複数の処理ノードのそれぞれにおける割り当てられた複数のメモリキューを示すメモリキューデータ、または、複数の処理ノードのそれぞれの複数のネットワークアダプタの複数のポートを示すポートデータのうち少なくとも１つを受信するための手段を含む。
【０１０９】
例４１は、例３９および４０のいずれかに記載の主題を含み、
コンピューティングデバイスからアーキテクチャ情報を受信するための手段は、複数の処理ノードのそれぞれのプロセッサの各処理コアにより実行される複数のアプリケーションを示すアプリケーション実行データを受信するための手段を含み、
ネットワークフロー情報を決定するための手段は、アプリケーション実行データに少なくとも基づきネットワークパケットと関連付けられたネットワークフロー情報を決定するための手段を含み、
ネットワークフロー情報は、コンピューティングデバイスの複数の処理ノードのうちネットワークパケットを処理するターゲットの処理ノードを、ターゲットの処理ノードの処理コアにより実行されるアプリケーションに少なくとも基づき識別する。
【０１１０】
例４２は、例３９から４１のいずれかに記載の主題を含み、
転送情報は第１転送情報を含み、
転送情報のリクエストは第１転送情報のリクエストを含み、
ネットワークパケットは第１ネットワークパケットを含み、
ネットワークフロー情報は第１ネットワークフロー情報を含み、
フローフィルタは第１フローフィルタを含み、
ターゲットの処理ノードのメモリは第１メモリを含み、
ターゲットの処理ノードのメモリにおけるメモリキューは、ターゲットの処理ノードの第１メモリにおける第１メモリキューを含み、
ターゲットの処理ノードのネットワークアダプタはターゲットの処理ノードの第１ネットワークアダプタを含み、
ネットワークスイッチから、第２ネットワークパケットと関連付けられた第２転送情報の第２リクエストを受信するための手段と、
アーキテクチャ情報に少なくとも基づき、第２ネットワークパケットと関連付けられた第２ネットワークフロー情報を決定するための手段と
をさらに備え、
第２ネットワークフロー情報は、コンピューティングデバイスの複数の処理ノードのうち第２ネットワークパケットを処理する異なる処理ノードを、異なる処理ノードにより実行される他のアプリケーションに少なくとも基づき識別し、
決定された第２ネットワークフロー情報をコンピューティングデバイスへ送信して、第２ネットワークフロー情報に少なくとも基づき異なる処理ノードの第２ネットワークアダプタにおける第２フローフィルタをプログラミングするための手段と
を備え、
第２フローフィルタは、異なる処理ノードの第２メモリにおける、第２ネットワークパケットを受信する第２メモリキューを指定し、
ネットワークコントローラにより、第２ネットワークパケットと関連付けられた第２転送情報を決定するための手段を備え、
第２転送情報は、コンピューティングデバイスの異なる処理ノードの第２ネットワークアダプタへ通信可能に結合される、第２ネットワークパケットが転送されることになるネットワークスイッチの第２ポートを識別し、
決定された第２転送情報をネットワークスイッチへ送信するための手段を備え、
第２ネットワークパケットは、第２転送情報に少なくとも基づき、ネットワークスイッチにより転送される。
【０１１１】
例４３は、例３９から４２のいずれかに記載の主題を含み、命令メッセージをコンピューティングデバイスへ送信するための手段をさらに備え、
命令メッセージは、コンピューティングデバイスに、コンピューティングデバイスの複数の処理ノードのうち１または複数により他のアプリケーションを実行するよう命令する。
【０１１２】
例４４は、複数のネットワークフローを複数の処理リソースにアライメントするためのネットワークスイッチを含み、
ネットワークスイッチは、パケット転送モジュールを備え、
パケット転送モジュールは、（ｉ）リモートコンピューティングデバイスからネットワークスイッチの第１ポートを介しネットワークパケットを受信し、（ｉｉ）受信されたネットワークパケットと関連付けられた転送情報のリクエストをネットワークコントローラへ送信し、（ｉｉｉ）ネットワークコントローラから転送情報を受信し、
転送情報は、受信されたネットワークパケットが転送されることになるネットワークスイッチの第２ポートを示しており、
パケット転送モジュールは、（ｉｖ）受信されたネットワークパケットをコンピューティングデバイスへの送信のために第２ポートへ転送し、
受信されたネットワークパケットは、コンピューティングデバイスの複数の処理ノードのうちのターゲットの処理ノードにより実行されるアプリケーションにより処理される。
【０１１３】
例４５は、例４４の主題を含み、
接続情報をネットワークコントローラへ送信する接続管理モジュールをさらに備え、
接続情報は、ネットワークスイッチと、コンピューティングデバイスまたはリモートコンピューティングデバイスのうち少なくとも１つとの間のネットワークスイッチの１または複数のポートを介した１または複数のネットワーク接続を示す。
【０１１４】
例４６は、複数のネットワークフローを複数の処理リソースにアライメントするための方法を含み、
方法は、
ネットワークスイッチにより、ネットワークスイッチの第１ポートを介しリモートコンピューティングデバイスからネットワークパケットを受信する段階と、
ネットワークスイッチにより、受信されたネットワークパケットと関連付けられた転送情報のリクエストをネットワークコントローラへ送信する段階と、
ネットワークスイッチにより、ネットワークコントローラから転送情報を受信する段階と
を備え、
転送情報は、受信されたネットワークパケットが転送されることになるネットワークスイッチの第２ポートを示し、
方法は、ネットワークスイッチにより、受信されたネットワークパケットをコンピューティングデバイスへの送信のために第２ポートへ転送する段階を備え、
受信されたネットワークパケットは、コンピューティングデバイスの複数の処理ノードのうちのターゲットの処理ノードにより実行されるアプリケーションにより処理される。
【０１１５】
例４７は、例４６の主題を含み、
ネットワークスイッチにより、接続情報をネットワークコントローラへ送信する段階をさらに備え、
接続情報は、ネットワークスイッチと、コンピューティングデバイスまたはリモートコンピューティングデバイスのうち少なくとも１つとの間のネットワークスイッチの１または複数のポートを介した１または複数のネットワーク接続を示す。
【０１１６】
例４８は、複数のネットワークフローを複数の処理リソースにアライメントするためのネットワークスイッチを含み、
ネットワークスイッチは、プロセッサと、複数の命令を格納したメモリとを含み、複数の命令はプロセッサにより実行されたときにネットワークスイッチに、例４６または４７のいずれかに記載の方法を実行させる。
【０１１７】
例４９は、１または複数のマシン可読媒体を含み、１または複数のマシン可読媒体には、実行されることに応答して、ネットワークスイッチが例４６または４７のいずれかに記載の方法を実行することになる複数の命令が格納されている。
【０１１８】
例５０は、複数のネットワークフローを複数の処理リソースにアライメントするためのネットワークスイッチを含み、
ネットワークスイッチは、
リモートコンピューティングデバイスからネットワークスイッチの第１ポートを介しネットワークパケットを受信するための手段と、
受信されたネットワークパケットと関連付けられた転送情報のリクエストをネットワークコントローラへ送信するための手段と、
ネットワークコントローラから転送情報を受信するための手段と
を備え
転送情報は、受信されたネットワークパケットが転送されることになるネットワークスイッチの第２ポートを示しており、
ネットワークスイッチは、受信されたネットワークパケットをコンピューティングデバイスへの送信のために第２ポートへ転送するための手段を備え、
受信されたネットワークパケットは、コンピューティングデバイスの複数の処理ノードのうちのターゲットの処理ノードにより実行されるアプリケーションにより処理される。
【０１１９】
例５１は、例５０の主題を含み、
接続情報をネットワークコントローラへ送信するための手段をさらに備え、
接続情報は、ネットワークスイッチと、コンピューティングデバイスまたはリモートコンピューティングデバイスのうち少なくとも１つとの間のネットワークスイッチの１または複数のポートを介した１または複数のネットワーク接続を示す。
【図１】
2016046806.tif 000003
【図２】
2016046806.tif 000004
【図３】
2016046806.tif 000005
【図４】
2016046806.tif 000006
【図５】
2016046806.tif 000007
【図６】
2016046806.tif 000008
【図７】
2016046806.tif 000009
【図８】
2016046806.tif 000010
【外国語明細書】
2016046806000001.pdf