JP6116072B2 - ネットワークフローを処理リソースにアライメントするための技術 - Google Patents

ネットワークフローを処理リソースにアライメントするための技術 Download PDF

Info

Publication number
JP6116072B2
JP6116072B2 JP2015141757A JP2015141757A JP6116072B2 JP 6116072 B2 JP6116072 B2 JP 6116072B2 JP 2015141757 A JP2015141757 A JP 2015141757A JP 2015141757 A JP2015141757 A JP 2015141757A JP 6116072 B2 JP6116072 B2 JP 6116072B2
Authority
JP
Japan
Prior art keywords
network
processing node
computing device
information
memory
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
JP2015141757A
Other languages
English (en)
Other versions
JP2016046806A (ja
Inventor
ガスパラキス、イオシフ
ピー. ジョンソン、ブライアン
ピー. ジョンソン、ブライアン
ジー. クッチ、パトリック
ジー. クッチ、パトリック
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Intel Corp
Original Assignee
Intel Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Intel Corp filed Critical Intel Corp
Publication of JP2016046806A publication Critical patent/JP2016046806A/ja
Application granted granted Critical
Publication of JP6116072B2 publication Critical patent/JP6116072B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L47/00Traffic control in data switching networks
    • H04L47/50Queue scheduling
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L47/00Traffic control in data switching networks
    • H04L47/10Flow control; Congestion control
    • H04L47/33Flow control; Congestion control using forward notification
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L69/00Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
    • H04L69/30Definitions, standards or architectural aspects of layered protocol stacks
    • H04L69/32Architecture of open systems interconnection [OSI] 7-layer type protocol stacks, e.g. the interfaces between the data link level and the physical level
    • H04L69/321Interlayer communication protocols or service data unit [SDU] definitions; Interfaces between layers
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/48Program initiating; Program switching, e.g. by interrupt
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L41/00Arrangements for maintenance, administration or management of data switching networks, e.g. of packet switching networks
    • H04L41/04Network management architectures or arrangements
    • H04L41/044Network management architectures or arrangements comprising hierarchical management structures
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L47/00Traffic control in data switching networks
    • H04L47/10Flow control; Congestion control
    • H04L47/35Flow control; Congestion control by embedding flow control information in regular packets, e.g. piggybacking
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/10Protocols in which an application is distributed across nodes in the network
    • H04L67/1001Protocols in which an application is distributed across nodes in the network for accessing one among a plurality of replicated servers
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/50Network services
    • H04L67/60Scheduling or organising the servicing of application requests, e.g. requests for application data transmissions using the analysis and optimisation of the required network resources
    • H04L67/63Routing a service request depending on the request content or context
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L69/00Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
    • H04L69/30Definitions, standards or architectural aspects of layered protocol stacks
    • H04L69/32Architecture of open systems interconnection [OSI] 7-layer type protocol stacks, e.g. the interfaces between the data link level and the physical level
    • H04L69/322Intralayer communication protocols among peer entities or protocol data unit [PDU] definitions
    • H04L69/329Intralayer communication protocols among peer entities or protocol data unit [PDU] definitions in the application layer [OSI layer 7]

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Computer Security & Cryptography (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Data Exchanges In Wide-Area Networks (AREA)

Description

現代のコンピューティングデバイスは、私的な、ビジネスでの、およびソーシャルな使用のためのユビキタスなツールとなっている。そういうものとして、多くの現代のコンピューティングデバイスは、インターネットおよび企業のイントラネットを含む様々なデータネットワークに接続して、そのようなネットワーク上でデータ通信を取得および受信することが可能である。多くの場合、一のネットワークに接続されたコンピューティングデバイスは、異なるネットワーク上で接続されたコンピューティングデバイスと通信を行う必要がある。
ソフトウェアデファインドネットワーキング(SDN)は、ネットワークトラフィックがどのように処理されることになり、実際にネットワークトラフィックを処理するデバイスまたはコンポーネントが別個のプレーン(すなわち、制御プレーンおよびデータプレーン)にどのように分離されるかについての決定が行われるネットワーキングアーキテクチャである。SDN環境で、例えば、ネットワークスイッチなどのネットワークデバイスの代わりに、集中化されたSDNコントローラが、ネットワークトラフィックに関する転送決定を行うのに用いられる。典型的には、転送決定は、SDN環境で動作しているネットワークデバイスへ伝えられ、次にネットワークデバイスは、ネットワークトラフィックと関連付けられたネットワークパケットを、SDNコントローラにより行われた転送決定に基づき次の宛先へ転送する。しかし、SDNコントローラは、ネットワークトラフィックに関するきめ細かい転送決定を行う能力が欠如していることが多い。具体的には、典型的なSDNコントローラは、デバイスアーキテクチャレベルではなくむしろシステムレベルで転送決定を行う。つまり、典型的なSDNコントローラは、特定のタイプのネットワークトラフィックを受信および処理するのに最も最適である宛先コンピューティングデバイスの個別のコンポーネントおよび/またはコンポーネント群に基づき転送決定を行うことが可能ではない。
本明細書に記載されている概念は、限定によってではなく例示により、添付の複数の図面において示されている。図示を簡潔および明瞭にするため、複数の図面に示されている複数の要素は必ずしも縮尺通りに描写されていない。適切であると見なされる場合には、対応する、または類似の複数の要素を示すのに複数の参照ラベルが複数の図面間で繰り返されている。
複数のネットワークフローをコンピューティングデバイスの複数の処理リソースにアライメントするためのシステムの少なくとも1つの実施形態の簡略化されたブロック図である。 図1のシステムのコンピューティングデバイスの環境の少なくとも1つの実施形態の簡略化されたブロック図である。 図1のシステムのネットワークコントローラの環境の少なくとも1つの実施形態の簡略化されたブロック図である。 図1のシステムのネットワークスイッチの環境の少なくとも1つの実施形態の簡略化されたブロック図である。 図1および3のネットワークコントローラにより実行され得る、複数のネットワークフローを複数の処理リソースにアライメントするための方法の少なくとも1つの実施形態の簡略化されたフロー図である。 図1および2のコンピューティングデバイスにより実行され得る、複数のネットワークフローを複数の処理リソースにアライメントするための方法の少なくとも1つの実施形態の簡略化されたフロー図である。 図1および4のネットワークスイッチにより実行され得る、複数のネットワークフローを複数の処理リソースにアライメントするための方法の少なくとも1つの実施形態の簡略化されたフロー図である。 図1および4のネットワークスイッチにより実行され得る、複数のネットワークフローを複数の処理リソースにアライメントするための方法の少なくとも1つの他の実施形態の簡略化されたフロー図である。
本開示の複数の概念は、様々な変形例および代替的な形態の影響が可能であるが、その特定の複数の実施形態が、複数の図面において例示により示されており、本明細書において詳細に記載される。しかし、本開示の複数の概念を開示されている特定の複数の形態に限定する意図はなく、逆に、本開示および付属の複数の請求項と一貫した全ての変形例、同等物、および代替例を網羅することが意図されていることが理解されるべきである。
本明細書において「一実施形態」、「実施形態」、「例示的な実施形態」等について言及したとき、そのことは、記載されている実施形態が特定の特徴、構造、または特性を含むことを示しているが、あらゆる実施形態がその特定の特徴、構造、または特性を含んでもよいが、必ずしも含まなくてもよい。さらに、そのような複数のフレーズは、必ずしも同じ実施形態について言及しているとは限らない。さらに、特定の特徴、構造、または特性が実施形態に関連して記載されているとき、明示的に記載されていようといなかろうとそのような特徴、構造、または特性を他の複数の実施形態に関連して実現することは当業者の知識の範囲内である。追加的に、「A、B、およびCのうち少なくとも1つ」の形態のリストに含まれる複数のアイテムは、(A);(B);(C);(AおよびB);(AおよびC);(BおよびC);または(A,B,およびC)を意味し得ることが理解されるべきである。同様に、「A、B、またはCのうち少なくとも1つ」の形態で列挙されている複数のアイテムは、(A);(B);(C);(AおよびB);(AおよびC);(BおよびC);または(A,B,およびC)を意味し得る。
開示されている複数の実施形態は、いくつかの場合において、ハードウェア、ファームウェア、ソフトウェア、またはこれらの任意の組み合わせにより実装され得る。開示されている複数の実施形態は、1または複数のプロセッサにより読み取られ実行され得る、1または複数の一時的または非一時的マシン可読(例えば、コンピュータ可読)記憶媒体上により伝達される、またはそれらに格納された複数の命令としても実装され得る。マシン可読記憶媒体は、マシンにより可読な形態で情報を格納または送信するための何らかの記憶デバイス、メカニズム、または他の物理的構造(例えば、揮発性または不揮発性メモリ、メディアディスク、または他のメディアデバイス)として具現化され得る。
複数の図面において、いくつかの構造または方法に関する特徴が、特定の配置および/または順序付けで示されているかもしれない。しかし、そのような特定の配置および/または順序付けは要求されないかもしれないことが理解されるべきである。むしろ、いくつかの実施形態において、そのような複数の特徴は、例示的な複数の図面に示されているものとは異なるやり方および/または順序で配置され得る。追加的に、特定の図面に構造または方法に関する特徴が含まれているからとって、全ての実施形態においてそのような特徴が要求されることを示唆するわけではなく、いくつかの実施形態においては、それは含まれなくてもよく、または他の複数の特徴と組み合わせられ得る。
ここで図1を参照すると、例示的な実施形態において、複数のネットワークフローを複数の処理リソースにアライメントするためのシステム100は、コンピューティングデバイス110、ネットワークコントローラ170、リモートコンピューティングデバイス180、およびネットワークスイッチ190を含み、これらのそれぞれが、ソフトウェアデファインドネットワーキング(SDN)環境で動作可能であり得る。使用において、ネットワークスイッチ190は、リモートコンピューティングデバイス180からネットワークパケットを受信し得る。いくつかの実施形態において、ネットワークパケットは、コンピューティングデバイス110の複数の処理ノード112のうち1つ(例えば、処理ノード114または処理ノード116)のプロセッサ(例えば、プロセッサ120またはプロセッサ140)により実行されているアプリケーションをターゲットとし得、またはそうでなければそれを対象とし得る。そのような複数の実施形態において、ネットワークスイッチ190は、ネットワークコントローラ170からの受信されたネットワークパケットに関する、コンピューティングデバイス110、および/または、SDN環境(例えば、トポロジーデータ、設定データ、レイアウトデータ、および/または、コンピューティングデバイス110および/またはネットワークの複数のハードウェアまたはソフトウェアコンポーネントを記述する任意の他のタイプのデータ)と関連付けられたアーキテクチャ情報を含む転送情報をリクエストする。いくつかの実施形態において、ネットワークコントローラ170は、コンピューティングデバイス110のどの処理ノード112内でどのアプリケーションが実行されているかを示す情報も含む。アーキテクチャ情報を用いて、ネットワークコントローラ170は、受信されたネットワークパケットに対応するネットワークフロー情報を決定および/または生成する。ネットワークフロー情報は、受信されたネットワークパケットがターゲットとしているアプリケーションを実行している特定の処理ノード112(例えば、処理ノード114または処理ノード116)を識別し得、またはそうでなければそれらを示し得る。いくつかの実施形態において、またネットワークフロー情報は、受信されたネットワークパケットが転送されるべき特定の処理ノード112のネットワークアダプタ(例えば、NIC136またはNIC156)を識別し得、またはそうでなければそれを示し得る。
ネットワークフロー情報を決定した後、ネットワークコントローラ170は、ネットワークフロー情報をコンピューティングデバイス110へ送信し、コンピューティングデバイス110は、識別されたネットワークアダプタ(例えば、NIC136またはNIC156)においてフローフィルタをプログラミングし、またはそうでなければそれを設定する。いくつかの実施形態において、フローフィルタは、ネットワークフローと関連付けられた複数のネットワークパケット(例えば、受信されたネットワークパケット、および、何らかの後続の複数のネットワークパケット)を、識別されたネットワークアダプタ(例えば、NIC136またはNIC156)に割り当てられた特定のネットワークメモリキュー(例えば、Q0 132、Q1 134、Q2 152、Q3 154)にコピーするよう構成され得る。いくつかの実施形態において、複数のネットワークメモリキュー(例えば、Q0 132、Q1 134、Q2 152、Q3 154)は、双方向または単方向の複数のメモリキューとして動作するよう構成され得る。
フローフィルタがコンピューティングデバイス110によりプログラミングされた後、ネットワークコントローラ170は、フロー情報に基づき、受信されたネットワークパケットに関する転送情報を決定する。転送情報は、受信されたネットワークパケットが転送されるべき特定の処理ノード112のネットワークアダプタ(例えば、NIC136またはNIC156)を識別し得、またはそうでなければそれを示し得る。いくつかの実施形態において、転送情報は、識別されたネットワークアダプタ(例えば、NIC136またはNIC156)に通信可能に結合されたネットワークスイッチ190の特定のインタフェースまたはポート(例えば、PA192、PB194、PC196)を示す情報を含み得る。ネットワークコントローラ170は、転送情報をネットワークスイッチ190へ送信し得、ネットワークスイッチ190は、受信されたネットワークパケットを識別されたネットワークアダプタ(例えば、NIC136またはNIC156)に通信可能に結合されたネットワークスイッチ190の特定のポート(例えば、PA192、PB194、PC196)へ転送するのに、転送情報を利用し得る。アーキテクチャ情報をコンピューティングデバイス110および/またはSDN環境と関連付けたままにしておくことにより、ネットワークコントローラ170は、ネットワークフローを、特定のアプリケーションを実行している特定の処理ノード112にアライメントし得ることが理解されるべきである。このやり方により、特定のネットワークフローと関連付けられた複数のネットワークパケットの処理と、そのフローがターゲットとするアプリケーションの実行が、同じ処理ノード112内で起こり得、これは複数のメモリリソースおよび利用可能ネットワーク帯域幅のより効率的な使用であり、ネットワークおよび/または処理レイテンシを低減し、コンピューティングデバイス110により消費される電力を少なくすることを可能とし、ネットワークパケットを処理するのに利用される処理リソースを少なくすることが可能となる。例えば、ターゲットとされているアプリケーションが実行されているのと同じ処理ノード112内でネットワークフローの複数のネットワークパケットを処理することは、一の処理ノード112(例えば、処理ノード112)内でネットワークフローの複数のネットワークパケットを処理し、それらのパケットを、1または複数の通信リンク(例えば、QuickPath Interconnects(QPI)118、ポイントツーポイントリンク、バスリンク、電線、ケーブル、ライトガイド、プリント回路基板のトレース等)を介しターゲットとされているアプリケーションが実行されている異なる処理ノード112(例えば、処理ノード114)へ送信(例えば、転送、送出等)することよりも効率的である。そのようなやり方で複数の処理ノード112間で複数のネットワークパケットを送信することは潜在的に、コンピューティングデバイス110のレイテンシ、ジッタ、スループットに影響を与え得る。このことは特に、ターゲットとされているアプリケーションが実行されているのものとは異なる処理ノード112で処理される必要がある多数の新たな、および/または既存のネットワークフローまたはネットワークパケットがある場合において当てはまり得る。
コンピューティングデバイス110は、サーバコンピュータ、デスクトップコンピュータ、ラップトップコンピューティングデバイス、民生用電子機器、モバイルコンピューティングデバイス、モバイルフォン、スマートフォン、タブレットコンピューティングデバイス、パーソナルデジタルアシスタント、ウェアラブルコンピューティングデバイス、スマートテレビ、スマート機器、および/または他のタイプのコンピューティングデバイスを含むがこれらに限定されない、本明細書に記載されている複数の機能を実行可能な任意のタイプのコンピューティングデバイスとして具現化され得る、またはそうでなければそれを含み得る。いくつかの実施形態において、コンピューティングデバイス110は、ソフトウェアデファインドネットワーキング(SDN)環境で動作可能である。以下においてより詳細に説明されているように、例示的なコンピューティングデバイス110は、プロセッサ、メモリ、およびネットワークアダプタをそれぞれが含む複数の処理ノード112を含む。図1に示されるように、例示的なコンピューティングデバイス110は、入/出力(I/O)サブシステム162およびデータストレージ164も含む。当然、他の複数の実施形態において、コンピューティングデバイス110は、コンピュータにおいて一般的に見られるものなど(例えば、様々な入/出力デバイス)の他の、または追加の複数のコンポーネントも含み得る。
いくつかの実施形態において、コンピューティングデバイス110の各処理ノード112は、Non−uniform Memory Access(NUMA)ノードとして具現化され得る。例示的な実施形態において、コンピューティングデバイス110は処理ノード114および処理ノード116を含む。例示的な処理ノード114は、プロセッサ120、メモリ126、およびネットワークインタフェースカード(NIC)136を含む。いくつかの実施形態において、処理ノード114内のプロセッサ120、メモリ126、およびNIC136は、1または複数の通信リンク(すなわち、ポイントツーポイントリンク、バスリンク、電線、ケーブル、ライトガイド、プリント回路基板のトレース等)を介し互いに通信可能に結合され得る。追加的に、いくつかの実施形態において、処理ノード114の例示的な複数のコンポーネントのうち1または複数は、他のコンポーネントに組み込まれ得、またはそうでなければその一部を形成し得る。例えば、いくつかの実施形態において、メモリ126、またはその複数の部分が、プロセッサ120に組み込まれ得る。
処理ノード114のプロセッサ120は、本明細書に記載されている複数の機能を実行可能な任意のタイプのプロセッサとして具現化され得る。例えば、いくつかの実施形態において、プロセッサ120は、シングルコアプロセッサ、デジタル信号プロセッサ、マイクロコントローラ、または他のプロセッサまたは処理/制御回路として具現化され得る。図1に例示的に示されているものなどの他の複数の実施形態において、プロセッサ120は、複数のプロセッサコア(例えば、コアA122およびコアB124)を有するマルチコアプロセッサとして具現化され得る。そのような複数の実施形態において、プロセッサ120の各プロセッサコア122、124は、1または複数のアプリケーションを実行可能である。
処理ノード114のメモリ126は、本明細書に記載されている複数の機能を実行可能な任意のタイプの揮発性または不揮発性メモリまたはデータストレージとして具現化され得る。動作において、メモリ126は、オペレーティングシステム、アプリケーション、プログラム、ライブラリ、ドライバなどの、コンピューティングデバイス110の動作中に用いられる様々なデータおよびソフトウェアを格納し得る。例えば、いくつかの実施形態において、メモリ126の一部(例えば、アプリケーションメモリスペース128)は、プロセッサコアA122および/またはプロセッサコアB124により実行されているアプリケーションによる使用のために割り当てられ得、またはそうでなければそのために確保され得る。追加的にいくつかの実施形態において、メモリ126の他の一部(例えば、NICメモリスペース130)が、NIC136により送出されることになるデータ、および/またはNIC136により受信されるデータの格納のために割り当てられ得、またはそうでなければそのために確保され得る。そのような複数の実施形態において、NICメモリスペース130は、NIC136のポートP1 137(例えば、インタフェース)を介し送出されることになる、または受信されたデータ(例えば、ネットワークパケット等)を格納するための1または複数のメモリキュー(例えば、Q0 132およびQ1 134)を含み得る。例示的な実施形態において、メモリ126は、1または複数の通信リンク(すなわち、ポイントツーポイントリンク、バスリンク、電線、ケーブル、ライトガイド、プリント回路基板のトレース等)を介しプロセッサ120に通信可能に結合される。
(複数の)コンピューティングノード110の処理ノード114のNIC136は、1または複数の通信ネットワーク(例えば、ローカルエリアネットワーク、パーソナルエリアネットワーク、ワイドエリアネットワーク、セルラーネットワーク、インターネットなどのグローバルネットワーク等)を介しコンピューティングデバイス110および/またはコンピューティングデバイス110の処理ノード114と他のコンピューティングデバイスとの間の通信を可能とすることが出来る任意のタイプの通信回路、デバイス、またはこれらの集合として具現化され得る。例えば、いくつかの実施形態において、処理ノード114のNIC136は、コンピューティングデバイス110の処理ノード114とリモートコンピューティングデバイス180との間の通信を可能とすることが出来得る。NIC136は、そのような通信を実現するよう何らかの1または複数の通信技術(例えば、無線または有線通信)、および関連付けられた複数のプロトコル(例えば、Ethernet(登録商標)、WiFi(登録商標)、WiMAX(登録商標)等)を用いるよう構成され得る。例示的な実施形態において、NIC136は、ポート(例えば、P1 137)または通信インタフェースを含み、そうでなければこれらと通信可能に結合される。ポート(例えば、P1 137)は、処理ノード114を、任意の数の他のコンピューティングデバイス(例えば、リモートコンピューティングデバイス180)および/または複数のネットワーク(例えば、物理的または論理的なネットワーク)に通信可能に結合するよう構成され得る。例えば、例示的なポート137は、処理ノード114のNIC136を、ネットワークスイッチ190に通信可能に結合し、ネットワークスイッチ190は、リモートコンピューティングデバイス180、ネットワークコントローラ170、および/または任意の数の他のコンピューティングデバイスまたはネットワークに通信可能に結合され得る。
例示的な実施形態において、NIC136は、1または複数の通信リンク(すなわち、ポイントツーポイントリンク、バスリンク、電線、ケーブル、ライトガイド、プリント回路基板のトレース等)を介しプロセッサ120に通信可能に結合される。例えば、いくつかの実施形態において、NIC136は、処理ノード114のPCIe I/Oバスを介しプロセッサ120に通信可能に結合されたPeripheral Component Interconnect Express(PCIe)デバイスとして具現化される。当然、NIC136が、処理ノード114のプロセッサ120に通信可能に結合された任意の他のタイプの通信デバイスとして具現化され得ることが理解されるべきである。
いくつかの実施形態において、NIC136は、1または複数のフローフィルタ138も含み得る。以下により詳細に説明されているように、1または複数のフローフィルタ138は、ネットワークコントローラ170から受信されたネットワークフロー情報に少なくとも部分的に基づき、またはそうでなければその関数として、コンピューティングデバイス110によりNIC136においてプログラミングされ得る。いくつかの実施形態において、複数のフローフィルタ138は、NIC136により受信された複数のネットワークパケットおよび/またはNIC136により送信されることになる複数のネットワークパケットの格納のために割り振られた、またはそうでなければ割り当てられたNICメモリスペース130における特定のメモリキュー(例えば、Q0 132、Q1 134等)を指定する。追加的にいくつかの実施形態において、複数のフローフィルタ138は、NIC136の特定のポート(例えば、P1 137)により受信された複数のネットワークパケット、および/またはNIC136の特定のポート(例えば、P1 137)により送信されることになる複数のネットワークパケットの格納ために割り当てられたNICメモリスペース130における特定のメモリキュー(例えば、Q0 132、Q1 134等)を指定する。追加的に、または代替的に、いくつかの実施形態において、NIC136(またはNIC136のドライバ)は、NIC136内に含まれる各ポート(例えば、P1 137)のためにNICメモリスペース130におけるメモリキュー(例えば、Q0 132、Q1 134等)を事前に割り当てまたは事前に割り振り得る。つまり、コンピューティングデバイス110がNIC136において複数のフローフィルタ138をプログラミングする前に、NIC136の各ポート(例えば、P1 137)は、NICメモリスペース130における特定のメモリキュー(例えば、Q0 132、Q1 134等)が割り当てられ得、またはそうでなければ割り振られ得る。例えば、いくつかの実施形態において、NIC136および/または関連付けられたドライバは、コンピューティングデバイス110の初期化の間に処理ノード114のNICメモリスペース130において1または複数のメモリキュー(例えば、Q0 132、Q1 134等)を事前に割り当て得る。このやり方で、NIC136内に含まれる各ポート(例えば、P1 137)のための複数のメモリキュー(例えば、Q0 132、Q1 134等)が、NIC136と同じ処理ノード114内に割り当てられる。いくつかの実施形態において、複数のネットワークメモリキュー(例えば、Q0 132、Q1 134、Q2 152、Q3 154)が、双方向の複数のメモリキュー(すなわち、送信および受信)または単方向の複数のメモリキュー(すなわち、送信または受信)として動作するよう構成され得ることが理解されるべきである。
例示的な処理ノード116は、プロセッサ140、メモリ146、およびNIC156を含む。処理ノード116のプロセッサ140は、複数のプロセッサコア(例えば、コアA142およびコアB144)を含み得る。処理ノード116のメモリ146は、プロセッサコアA142および/またはプロセッサコアB144により実行されているアプリケーションによる使用のために割り当てられたメモリの一部(例えば、アプリケーションメモリスペース148)と、NIC156により送出されることになる、および/またはNIC156により受信されたデータの格納のために割り当てられたメモリの一部(例えば、NICメモリスペース150)と、NIC156のポート157(例えば、インタフェース)を介し送出されることになる、または受信されたデータ(例えば、ネットワークパケット等)を格納するための1または複数のメモリキュー(例えば、Q2 152およびQ3 154)とを含む。例示的なNIC156は、ポート(例えば、P2 157)を含み、そうでなければそれと通信可能に結合されている。追加的にいくつかの実施形態において、NIC156は1または複数のフローフィルタ158を含む。処理ノード116のこれらのコンポーネントは、処理ノード114の対応する複数のコンポーネントと同様であり得る。それの記載は、処理ノード116の対応する複数のコンポーネントに適用可能であり、記載の明瞭化のために本明細書において繰り返されない。
いくつかの実施形態において、NIC136およびNIC156は、スループットを増加させ、負荷の均等化を実施し、および/またはフォールトトレランスを提供するために、(論理的な接続160により例示的に示されるように)結合、トランキング、またはそうでなければ集約され得る。そのような複数の実施形態において、NIC136およびNIC156は、例えば、リモートコンピューティングデバイス180などの他の複数のコンピューティングデバイスから複数のネットワークパケットを受信するために単一のインターネットプロトコル(IP)アドレスが割り振られ得る論理ネットワークインタフェースを形成し得る。当然、NIC136とNIC156とをボンディングすることから形成される論理ネットワークインタフェースは単一のIPアドレスが割り振られ得るが、NIC136およびNIC156のうちそれぞれは、別個の媒体アクセス制御(MAC)アドレスを有し得ることが理解されるべきである。追加的にいくつかの実施形態において、コンピューティングデバイス110は、コンピューティングデバイス110をネットワークコントローラ170に通信可能に結合し得る1または複数の管理ポート(示されておらず)を含み得る。そのような複数の実施形態において、コンピューティングデバイス110の複数の管理ポートが、以下により詳細に説明されているように、ネットワークコントローラ170へ/から情報または複数のメッセージ(例えば、アーキテクチャ情報、転送情報等)を送出および受信するために用いられ得る。
プロセッサ120およびプロセッサ140のうちそれぞれは、コンピューティングデバイス110の他の複数のコンポーネントでの入/出力動作を容易にするよう回路および/または複数のコンポーネントとして具現化され得るI/Oサブシステム162に通信可能に結合され得る。例えば、I/Oサブシステム162は、メモリコントローラハブ、入/出力コントロールハブ、ファームウェアデバイス、通信リンク(すなわち、ポイントツーポイントリンク、バスリンク、電線、ケーブル、ライトガイド、プリント回路基板のトレース等)、および/または入/出力動作を容易にする他の複数のコンポーネントおよびサブシステムとして具現化され得、またはそうでなければこれらを含み得る。いくつかの実施形態において、I/Oサブシステム162は、システムオンチップ(SoC)の一部を形成し得、処理ノード112(例えば、プロセッサ、メモリ、およびネットワークアダプタ)の複数のコンポーネント、およびコンピューティングデバイス110の他の複数のコンポーネントと共に単一の集積回路チップ上に組み込まれ得る。例えば、いくつかの実施形態において、I/Oサブシステム162、プロセッサ120、メモリ126、およびNIC136は、単一の集積回路チップ上に組み込まれ得る。
データストレージ164は、例えば、メモリデバイスおよび回路、メモリカード、ハードディスクドライブ、ソリッドステートドライブ、または他のデータ記憶デバイスなどの短期または長期のデータ格納のために構成された任意のタイプのデバイスまたは複数のデバイスとして具現化され得る。例えば、データストレージ164は、コンピューティングデバイス110により初期化および/または実行されることになる1または複数のオペレーティングシステムを格納するよう構成され得る。いくつかの実施形態において、(複数の)オペレーティングシステムの複数の部分は、より速い処理のために、および/または任意の他の理由で、動作中にメモリ126および/またはメモリ146にコピーされ得る。
ネットワークコントローラ170は、サーバコンピュータ、デスクトップコンピュータ、ラップトップコンピューティングデバイス、民生用電子機器、モバイルコンピューティングデバイス、モバイルフォン、スマートフォン、タブレットコンピューティングデバイス、パーソナルデジタルアシスタント、ウェアラブルコンピューティングデバイス、スマートテレビ、スマート機器、および/または他のタイプのコンピューティングまたはネットワーキングデバイスを含むがこれらに限定されない、本明細書に記載されている複数の機能を実行可能な任意のタイプのコンピューティングデバイスとして具現化され得る、またはそうでなければそれを含み得る。そういうものとして、ネットワークコントローラ170は、記載の明瞭化のために図1には示されていないプロセッサ、メモリデバイス、通信回路、およびデータストレージなどのネットワークコントローラまたは同様の複数のコンピューティングデバイスに一般的に見られる複数のデバイスおよび構造を含み得る。例示的な実施形態において、ネットワークコントローラ170は、ソフトウェアデファインドネットワーキング(SDN)環境で動作可能である。そういうものとして、ネットワークコントローラ170は、コンピューティングデバイス110、ネットワークスイッチ190、および/またはSDN環境で動作可能な他の複数のコンピューティングデバイスからデータおよび/または複数の情報リクエストを受信し得る。例えば、ネットワークコントローラ170は、コンピューティングデバイス110の各処理ノード112のアーキテクチャを規定する、またはそうでなければそれを示すアーキテクチャ情報をコンピューティングデバイス110から受信し得る。またネットワークコントローラ170は、ネットワークスイッチ190の1または複数のポート(例えば、PA192、PB194、PC196)と、コンピューティングデバイス110、ネットワークコントローラ170、リモートコンピューティングデバイス180、および/または任意の他のコンピューティングデバイスまたは通信ネットワークとの間の1または複数のネットワーク接続(例えば、通信リンク)を規定する、またはそうでなければそれを示す接続情報をネットワークスイッチ190から受信し得る。
いくつかの実施形態において、ネットワークコントローラ170は、ネットワークスイッチ190から転送情報の1または複数のリクエストを受信するよう構成される。各転送情報リクエストは、ネットワークスイッチ190により受信されるネットワークパケットと関連付けられ得る。転送情報のリクエストを受信したことに応答して、ネットワークコントローラ170は、コンピューティングデバイス110から受信されたアーキテクチャ情報とネットワークスイッチ190から受信された接続情報とに少なくとも部分的に基づき、またはそうでなければそれらの関数として、ネットワークスイッチ190により受信されたネットワークパケットと関連付けられたネットワークフロー情報および転送情報を決定し得る。動作において、ネットワークコントローラ170は、複数のネットワークアダプタ(例えば、NIC136またはNIC156)のうち1つにおけるフローフィルタがプログラミングされ得るように、コンピューティングデバイス110へ決定されたネットワークフロー情報を送出し得る。追加的に、ネットワークコントローラ170は、フローフィルタがプログラミングされたコンピューティングデバイス110のネットワークアダプタ(例えば、NIC136またはNIC156)へ受信されたネットワークパケットを転送するのに転送情報を用い得るネットワークスイッチ190へ転送情報を送出し得る。このやり方で、ネットワークコントローラ170は、コンピューティングデバイス110のアーキテクチャ情報に基づき、ネットワークフローをコンピューティングデバイス110の特定の複数の処理コンポーネントにアライメントし得る。
いくつかの実施形態において、ネットワークコントローラ170は、コンピューティングデバイス110から受信されたアーキテクチャ情報をコンピューティングデバイスアーキテクチャデータベース172に保持し得、またはそうでなければ格納し得る。追加的に、ネットワークコントローラ170は、ネットワークスイッチ190から受信された接続情報をネットワークスイッチ接続データベース174に保持し得、またはそうでなければ格納し得る。他の複数の実施形態において、アーキテクチャ情報および接続情報は、別個のデータベースではなくむしろ同じデータベースに格納または保持され得る。当然、例示的な実施形態において、アーキテクチャ情報および接続情報が1または複数のデータベースに格納されるものとして記載されているが、他の複数の実施形態において、アーキテクチャ情報および/または接続情報は、異なるフォーマットを有するデータ構造(例えば、ドキュメント、ファイル等)に格納され得ることが理解されるべきである。例えば、アーキテクチャ情報および/または接続情報は、カンマ区切り(CSV)ファイル、テキストファイル、暗号化データファイル、1または複数のXML要素を有するExtensible Markup Language(XML)ドキュメント、または任意の他の、アーキテクチャ情報および/または接続情報を格納するのに適切なフォーマットで具現化され得る。
リモートコンピューティングデバイス180は、デスクトップコンピュータ、ラップトップコンピューティングデバイス、サーバコンピュータ、民生用電子機器、モバイルコンピューティングデバイス、モバイルフォン、スマートフォン、タブレットコンピューティングデバイス、パーソナルデジタルアシスタント、ウェアラブルコンピューティングデバイス、スマートテレビ、スマート機器、および/または他のタイプのコンピューティングデバイスを含むがこれらに限定されない、本明細書に記載されている複数の機能を実行可能な任意のタイプのコンピューティングデバイスとして具現化され得る、またはそうでなければそれを含み得る。そういうものとして、リモートコンピューティングデバイス180は、記載の明瞭化のために図1には示されていないプロセッサ、メモリデバイス、通信回路、およびデータストレージなどの複数のコンピューティングデバイスに一般的に見られる複数のデバイスおよび構造を含み得る。いくつかの実施形態において、リモートコンピューティングデバイス180は、ネットワークスイッチ190を介しコンピューティングデバイス110へ/から複数のネットワークパケットを送信および/または受信するよう構成され得る。そのような複数の実施形態において、リモートコンピューティングデバイス180は、ネットワークスイッチ190のポート(例えば、PB194)に直接的に接続され得る。当然、他の複数の実施形態において、リモートコンピューティングデバイス180は、ネットワークスイッチ190に直接的に接続されなくてもよいことが理解されるべきである。例えば、いくつかの実施形態において、リモートコンピューティングデバイス180は、ネットワークスイッチ190に通信可能に結合された遠隔ネットワーク(または、一連の遠隔ネットワーク)に接続され得る。
ネットワークスイッチ190は、ネットワークスイッチ、ネットワークルータ、ネットワークハブ、無線アクセスポイント、デスクトップコンピュータ、ラップトップコンピューティングデバイス、サーバコンピュータ、民生用電子機器、モバイルコンピューティングデバイス、モバイルフォン、スマートフォン、タブレットコンピューティングデバイス、パーソナルデジタルアシスタント、ウェアラブルコンピューティングデバイス、スマートテレビ、スマート機器、および/または他のタイプのコンピューティングデバイスを含むがこれらに限定されない、本明細書に記載されている複数の機能を実行可能な任意のタイプのネットワーキングまたはコンピューティングデバイスとして具現化され得る、またはそうでなければそれを含み得る。そういうものとして、ネットワークスイッチ190は、記載の明瞭化のために図1には示されていないプロセッサ、メモリデバイス、通信回路、およびデータストレージなどのネットワークスイッチまたは同様の複数のコンピューティングデバイスに一般的に見られる複数のデバイスおよび構造を含み得る。例示的な実施形態において、ネットワークスイッチ190は、他の複数のデバイス中でも、コンピューティングデバイス110およびネットワークコントローラ170を含み得るソフトウェアデファインドネットワーキング(SDN)環境で動作可能である。例示的なネットワークスイッチ190は、1または複数の通信リンク(例えば、ポイントツーポイントリンク、バスリンク、電線、ケーブル、ライトガイド等)を介し、コンピューティングデバイス110、ネットワークコントローラ170、リモートコンピューティングデバイス180、および/または任意の他のコンピューティングデバイスおよび/または通信ネットワークの1または複数のポートまたはインタフェースに通信可能に結合された1または複数のポートまたはインタフェースを含み得る。例えば、例示的なネットワークスイッチ190は、コンピューティングデバイス110のNIC136のポート(例えば、P1 137)に通信可能に結合され得る第1ポート(例えば、PA192)を含む。例示的なネットワークスイッチ190は、リモートコンピューティングデバイス180のポートに通信可能に結合され得る第2ポート(例えば、PB194)も含む。追加的に、ネットワークスイッチ190は、コンピューティングデバイス110のNIC156のポート(例えば、P2 157)と通信可能に結合され得る第3ポート(例えば、PC196)も含み得る。当然、他の複数の実施形態において、ネットワークスイッチ190は、追加の、またはPA192、PB194、およびPC196より少ないポートを含み得る。いくつかの実施形態において、ネットワークスイッチ190は、ネットワークスイッチ190とネットワークコントローラ170とを通信可能に結合し得る管理ポート(示されておらず)も含み得る。
いくつかの実施形態において、ネットワークスイッチ190は、ネットワークスイッチ190のポート(例えば、PB194)を介しネットワークスイッチ190に通信可能に結合され得るリモートコンピューティングデバイス180から1または複数のネットワークパケットを受信する。いくつかの実施形態において、ネットワークスイッチ190が、コンピューティングデバイス110のネットワークアダプタ(例えば、NIC136またはNIC156)から1または複数のネットワークパケットも受信し得ることが理解されるべきである。追加的に、いくつかの実施形態において、ネットワークスイッチ190は、ネットワークスイッチ190の1または複数のポート(例えば、PA192、PB194、PC196)と、コンピューティングデバイス110、ネットワークコントローラ170、リモートコンピューティングデバイス180、および/または任意の他のコンピューティングデバイスまたは通信ネットワークとの間の1または複数のネットワーク接続(例えば、通信リンク)を規定する、またはそうでなければそれを示す接続情報をネットワークコントローラ170へ送信するよう構成される。いくつかの実施形態において、ネットワークコントローラ170へ送信される接続情報は、ネットワークスイッチ190により保持されるローカル接続情報に基づき得る。ネットワークスイッチ190のそのようなローカル接続情報は、ネットワークスイッチ190に通信可能に結合された各コンピューティングデバイス(例えば、コンピューティングデバイス110、ネットワークコントローラ170、リモートコンピューティングデバイス180、および/または任意の他のコンピューティングデバイス)と関連付けられた媒体アクセス制御(MAC)アドレスを含み得る。追加的に、ネットワークスイッチ190のローカル接続情報は、各コンピューティングデバイスが通信可能に結合されたネットワークスイッチ190のポート(例えば、PA192、PB194、PC196)を識別するデータを含み得る。いくつかの実施形態において、ローカル接続情報は、コンピューティングデバイスのMACアドレスを、コンピューティングデバイスが接続された、またはそうでなければ通信可能に結合されたネットワークスイッチ190の特定のポート(例えば、PA192、PB194、PC196)にマッピングするのに用いられ得る。
追加的に、いくつかの実施形態において、ネットワークスイッチ190は、ネットワークコントローラ170から転送情報をリクエストするようにも構成される。いくつかの実施形態において、転送情報は、リモートコンピューティングデバイス180、コンピューティングデバイス110、および/または任意の他のコンピューティングデバイスまたは通信ネットワークから受信する複数のネットワークパケットと関連付けられ得る。そのような複数の実施形態において、ネットワークスイッチ190は、ネットワークコントローラ170から受信する転送情報に基づき、受信された複数のネットワークパケットを転送するよう構成され得る。そうするために、ネットワークスイッチ190は、1または複数のフローエントリを含む1または複数のフローテーブルを保持し得る。いくつかの実施形態において、(複数の)フローテーブルの各フローエントリは、1または複数のネットワークフロー、各ネットワークフローと関連付けられた複数のネットワークパケット、および各ネットワークフローの複数のネットワークパケットが転送されるべき宛先コンピューティングデバイスを識別するのにネットワークスイッチ190により用いられ得る。そのような複数の実施形態において、(複数の)フローテーブルのフローエントリは、受信されたネットワークパケット(および続いて受信された複数のネットワークパケット)が転送されるべきネットワークスイッチ190の特定のポート(例えば、PA192、PB194、PC196)を決定するのにネットワークスイッチ190により用いられ得る。追加的に、ネットワークスイッチ190が(複数の)転送テーブルを保持する複数の実施形態において、ネットワークスイッチ190は、ネットワークコントローラ170から受信する転送情報に基づき複数のフローエントリを(複数の)転送テーブルに追加するよう構成され得る。
ここで図2を参照すると、使用において、コンピューティングデバイス110は動作中に環境200を確立する。例示的な環境200は、アーキテクチャ通知モジュール202、ローカルフロー管理モジュール204、および1または複数のフローフィルタ138、158を含む。環境200の複数のモジュール、ロジック、および他の複数のコンポーネントのうちそれぞれは、ハードウェア、ソフトウェア、ファームウェア、またはこれらの組み合わせとして具現化され得る。例えば、環境200の複数のモジュール、ロジック、および他の複数のコンポーネントのうちそれぞれは、コンピューティングデバイス110のプロセッサ120、140、または他の複数のハードウェアコンポーネントの一部を形成し得、またはそうでなければそれらにより確立され得る。コンピューティングデバイス110が、記載の明瞭化のために図2においては図示されていない、コンピューティングデバイスにおいて一般的に見られる他の複数のコンポーネント、複数のサブコンポーネント、複数のモジュール、および複数のデバイスを含み得ることが理解されるべきである。
アーキテクチャ通知モジュール202は、アーキテクチャ情報をネットワークコントローラ170へ送信するよう構成され得る。アーキテクチャ情報は、コンピューティングデバイス110の各処理ノード112のアーキテクチャを規定する。いくつかの実施形態において、アーキテクチャ通知モジュール202により送信されるアーキテクチャ情報は、コンピューティングデバイス110の複数の処理ノード112のそれぞれ(例えば、処理ノード114および処理ノード116)により実行される複数のアプリケーションを示すアプリケーションデータ、複数の処理ノード112のそれぞれの複数のプロセッサ(例えば、プロセッサ120およびプロセッサ140)の複数のプロセッサコア(例えば、コアA122、コアB124、コアA142、コアB144)を示すプロセッサコアデータ、複数の処理ノード112のそれぞれにおける割り当てられた複数のメモリキュー(例えば、Q0 132、Q1 134、Q2 152、Q3 154)を示すメモリキューデータ、および/または、複数の処理ノード112のそれぞれの複数のネットワークアダプタ(例えば、NIC136およびNIC156)の複数のポート(例えば、P1 137およびP2 157)を示すポートデータを含む。追加的に、または代替的に、アーキテクチャ通知モジュール202により送信されるアーキテクチャ情報は、コンピューティングデバイス110の各処理ノード112(例えば、処理ノード114および処理ノード116)の各プロセッサ(例えば、プロセッサ120およびプロセッサ140)の各プロセッサコア(例えば、コアA122、コアB124、コアA142、コアB144)により実行される複数のアプリケーションを示すデータを含み得る。
いくつかの実施形態において、アーキテクチャ通知モジュール202は、コンピューティングデバイス110またはそのコンポーネントの初期化にあたりネットワークコントローラ170へアーキテクチャ情報を送信するよう構成され得る。例えば、アーキテクチャ通知モジュール202は、コンピューティングデバイス110によるブート処理の完了に応答して、および/または、コンピューティングデバイス110の処理ノード112、またはプロセッサのプロセッサコアによる特定のアプリケーションの初期化または実行に応答して、ネットワークコントローラ170へアーキテクチャ情報を送信するよう構成され得る。他の例において、アーキテクチャ通知モジュール202は、設定可能なリファレンスアーキテクチャ通知インターバルに基づき、および/または、アーキテクチャ通知モジュール202にアーキテクチャ情報を送信するようリクエストする、ネットワークコントローラ170から受信された1または複数の命令またはコマンドに基づき、ネットワークコントローラ170へアーキテクチャ情報を送信するよう構成され得る。いくつかの実施形態において、アーキテクチャ通知モジュール202は、1または複数のレプレゼンテーショナルステートトランスファー(REST)メッセージとしてネットワークコントローラ170へアーキテクチャ情報を送信するよう構成され得る。当然、任意の他の適切なメッセージングプロトコルおよび/またはフォーマット(例えば、Simple Object Access Protocol(SOAP)などのXMLベースのプロトコルおよび/またはフォーマット、JavaScript(登録商標) Object Notation(JSON)などのオープンスタンダードベースのプロトコルおよび/またはフォーマット等)が、ネットワークコントローラ170へアーキテクチャ情報を送信するのにアーキテクチャ通知モジュール202により用いられ得ることが理解されるべきである。
ローカルフロー管理モジュール204は、ネットワークコントローラ170からネットワークフロー情報を受信するよう構成され得る。ネットワークコントローラ170から受信するネットワークフロー情報は、リモートコンピューティングデバイス180により送信されネットワークスイッチ190により受信されるネットワークパケットと関連付けられ得る。ネットワークフロー情報は、コンピューティングデバイス110のターゲットの処理ノード112(例えば、処理ノード114)により実行されるアプリケーションに基づき、ネットワークパケットを処理するターゲットの処理ノード112(例えば、処理ノード114)を識別し得る。いくつかの実施形態において、ネットワークフロー情報は、ターゲットの処理ノード112(例えば、処理ノード114)の特定のプロセッサコア(例えば、コアA122またはコアB124)により実行されるアプリケーションに基づき、ネットワークパケットを処理するターゲットの処理ノード112(例えば、処理ノード114)も識別し得る。いくつかの実施形態において、ローカルフロー管理モジュール204は、コンピューティングデバイス110のフローダイレクタモジュール、および/またはコンピューティングデバイス110のネットワークアダプタ(例えば、NIC136またはNIC156)として具現化され得ることが理解されるべきである。
いくつかの実施形態において、ローカルフロー管理モジュール204は、ネットワークコントローラ170から受信するネットワークフロー情報に基づき、ターゲットの処理ノード112(例えば、処理ノード114)のネットワークアダプタ(例えば、NIC136)において1または複数のフローフィルタ138をプログラミングするようにも構成され得る。1または複数のフローフィルタ(例えば、フローフィルタ138)は、ターゲットの処理ノード112(例えば、処理ノード114)のメモリ(例えば、メモリ126)における、ネットワークスイッチ190からネットワークパケット(および後続の関連する複数のネットワークパケット)を受信するメモリキュー(例えば、Q0 132またはQ1 134)を指定し得る。いくつかの実施形態において、ローカルフロー管理モジュール204によりプログラミングされる1または複数のフローフィルタ(例えば、フローフィルタ138)は、ネットワークスイッチ190から受信されたネットワークパケットをターゲットの処理ノード112(例えば、処理ノード114)のメモリ(例えば、メモリ126)における指定されたメモリキュー(例えば、Q0 132またはQ1 134)へコピーするのに、ターゲットの処理ノード112のネットワークアダプタ(例えば、NIC136)により用いられ得る。
ここで図3を参照すると、使用において、ネットワークコントローラ170は動作中に環境300を確立する。例示的な環境300は、アーキテクチャ管理モジュール302、コンピューティングデバイスアーキテクチャデータベース172、ネットワークスイッチ接続データベース174、およびフロー管理モジュール304を含む。いくつかの実施形態において、フロー管理モジュール304は、フロー決定モジュール306および転送決定モジュール308を含み得る。環境300の複数のモジュール、ロジック、および他の複数のコンポーネントのうちそれぞれは、ハードウェア、ソフトウェア、ファームウェア、またはこれらの組み合わせとして具現化され得る。例えば、環境300の複数のモジュール、ロジック、および他の複数のコンポーネントのうちそれぞれは、ネットワークコントローラ170の複数のプロセッサまたは他の複数のハードウェアコンポーネントの一部を形成し得、またはそうでなければそれらにより確立され得る。ネットワークコントローラ170が、記載の明瞭化のために図3においては図示されていない、コンピューティングデバイスにおいて一般的に見られる他の複数のコンポーネント、複数のサブコンポーネント、複数のモジュール、および複数のデバイスを含み得ることが理解されるべきである。
アーキテクチャ管理モジュール302は、アーキテクチャ情報をコンピューティングデバイス110から受信するよう構成され得る。上記にて説明されたように、アーキテクチャ情報は、コンピューティングデバイス110の各処理ノード112のアーキテクチャを規定する。例えば、いくつかの実施形態において、アーキテクチャ管理モジュール302により受信されるアーキテクチャ情報は、アプリケーションデータ、プロセッサデータ、プロセッサコアデータ、メモリキューデータ、プロセッサコアアプリケーション実行データ、および/またはポートデータを含み得る。例示的な実施形態において、アーキテクチャ管理モジュール302は、コンピューティングデバイスアーキテクチャデータベース172において、またはアーキテクチャ情報を格納するのに適切な任意の他のデータ構造において、コンピューティングデバイス110から受信されたアーキテクチャ情報を格納するよう、またはそうでなければ保持するよう構成される。
いくつかの実施形態において、アーキテクチャ管理モジュール302は、コンピューティングデバイス110またはそのコンポーネントの初期化に応答して、コンピューティングデバイス110からアーキテクチャ情報を受信するよう構成され得る。例えば、アーキテクチャ管理モジュール302は、コンピューティングデバイス110によるブート処理の完了に応答して、および/または、コンピューティングデバイス110の処理ノード112、またはプロセッサのプロセッサコアによる特定のアプリケーションの初期化または実行に応答して、コンピューティングデバイス110からアーキテクチャ情報を受信するよう構成され得る。他の例において、アーキテクチャ管理モジュール302は、設定可能なリファレンスアーキテクチャ通知インターバルに基づき、および/または、コンピューティングデバイス110にアーキテクチャ情報を送信するようリクエストする、コンピューティングデバイス110へ送信された1または複数の命令またはコマンドに基づき、コンピューティングデバイス110からアーキテクチャ情報を受信するよう構成され得る。いくつかの実施形態において、アーキテクチャ管理モジュール302は、1または複数のSimple Object Access Protocol(SOAP)メッセージとしてコンピューティングデバイス110からアーキテクチャ情報を受信するよう構成され得る。当然、任意の他の適切なメッセージングおよび/または通知プロトコルが、コンピューティングデバイス110からアーキテクチャ情報を受信するのにアーキテクチャ管理モジュール302により用いられ得ることが理解されるべきである。
アーキテクチャ管理モジュール302は、ネットワークスイッチ190から接続情報を受信するようにようにも構成され得る。接続情報は、ネットワークスイッチ190の1または複数のポート(例えば、PA192、PB194、PC196)と、コンピューティングデバイス110、ネットワークコントローラ170、リモートコンピューティングデバイス180、および/または任意の他のコンピューティングデバイスまたは通信ネットワークとの間の1または複数のネットワーク接続(例えば、通信リンク)を規定し得る、またはそうでなければそれを示し得る。いくつかの実施形態において、アーキテクチャ管理モジュール302は、1または複数のOpenFlowメッセージとしてネットワークスイッチ190から接続情報を受信するよう構成され得る。追加的に、または代替的に、アーキテクチャ管理モジュール302は、1または複数のレプレゼンテーショナルステートトランスファー(REST)メッセージとしてネットワークスイッチ190から接続情報を受信するよう構成され得る。当然、任意の他の適切なメッセージングプロトコルおよび/またはフォーマット(例えば、Simple Object Access Protocol(SOAP)などのXMLベースのプロトコルおよび/またはフォーマット、JavaScript(登録商標) Object Notation(JSON)などのオープンスタンダードベースのプロトコルおよび/またはフォーマット等)が、ネットワークスイッチ190から接続情報を受信するのにアーキテクチャ管理モジュール302により用いられ得ることが理解されるべきである。
いくつかの実施形態において、アーキテクチャ管理モジュール302は、ネットワークスイッチ190と、コンピューティングデバイス110、ネットワークコントローラ170、リモートコンピューティングデバイス180および/または任意の他のコンピューティングデバイスまたは通信ネットワークとの間のネットワーク接続(例えば、(通信リンク)の確立または終了にあたりネットワークスイッチ190から接続情報を受信するよう構成され得る。例えば、アーキテクチャ管理モジュール302は、ネットワークスイッチ190の複数のポート(例えば、PA192、PB194、PC196)のうち1または複数についてのリンク状態(例えば、「接続状態」、「接続されていない状態」、「アクティブな状態」、「非アクティブな状態」、「アップ」、「ダウン」等)の変化をネットワークスイッチ190が検出したことに応答して接続情報を受信するよう構成され得る。いくつかの実施形態において、アーキテクチャ管理モジュール302は、ネットワークスイッチ190のポート(例えば、PA192、PB194、PC196)に新たに接続されたコンピューティングデバイス(例えば、コンピューティングデバイス110、ネットワークコントローラ170、リモートコンピューティングデバイス180、および/または任意の他のコンピューティングデバイス)と関連付けられた新たなMACアドレスをネットワークスイッチ190が検出したことに応答して、ネットワークスイッチ190から接続情報を受信するよう構成され得る。追加的に、または代替的に、いくつかの実施形態において、アーキテクチャ管理モジュール302は、設定可能なリファレンス接続通知インターバルに基づき、および/または、接続情報を送信するようコンピューティングデバイス110にリクエストする、コンピューティングデバイス110へ送出された1または複数の命令またはコマンドに基づき、ネットワークスイッチ190から接続情報を受信するよう構成され得る。例示的な実施形態において、アーキテクチャ管理モジュール302は、ネットワークスイッチ接続データベース174において、または接続情報を格納するのに適切な任意の他のデータ構造において、ネットワークスイッチ190から受信された接続情報を格納するよう、またはそうでなければ保持するよう構成される。
フロー管理モジュール304は、ネットワークスイッチ190により受信されたネットワークパケットと関連付けられたネットワークフロー情報を決定するよう構成され得る。そうするために、いくつかの実施形態において、フロー管理モジュール304はフロー決定モジュール306を含む。そのような複数の実施形態において、フロー決定モジュール306は、コンピューティングデバイス110から受信されたアーキテクチャ情報に基づき、ネットワークスイッチ190により受信されたネットワークパケットと関連付けられたネットワークフロー情報を決定する。説明されるように、コンピューティングデバイス110から受信されたアーキテクチャ情報は、コンピューティングデバイスアーキテクチャデータベース172に格納され得る。いくつかの実施形態において、フロー決定モジュール306により決定されるネットワークフロー情報は、コンピューティングデバイス110のターゲットの処理ノード112(例えば、処理ノード114)により実行されているアプリケーションに少なくとも部分的に基づき、そうでなければその関数として、ネットワークパケットを処理するターゲットの処理ノード112(例えば、処理ノード114)を識別し、またはそうでなければそれを示す。そのような複数の実施形態において、フロー決定モジュール306は、ネットワークスイッチ190により受信されるネットワークパケットによりターゲットとされる特定のアプリケーションを決定する、またはそうでなければ識別する。フロー決定モジュール306は、識別されたアプリケーションを、コンピューティングデバイスアーキテクチャデータベース172に格納されているアーキテクチャ情報と比較して、識別されたアプリケーションを実行しているコンピューティングデバイス110のターゲットの処理ノード112(例えば、処理ノード114)を決定し得る。いくつかの実施形態において、フロー決定モジュール306は、識別されたアプリケーションを、コンピューティングデバイスアーキテクチャデータベース172に格納されているアーキテクチャ情報と比較して、識別されたアプリケーションを実行している特定のプロセッサコア(例えば、コアA122、コアB124、コアA142、またはコアB144)を決定し得る。追加的に、または代替的に、フロー決定モジュール306は、コンピューティングデバイスアーキテクチャデータベース172に格納されているアーキテクチャ情報に基づき識別されたアプリケーションを実行しているターゲットの処理ノード112(例えば、処理ノード114)と関連付けられた特定のネットワークアダプタ(例えば、NIC136)およびメモリバンク(例えば、メモリ126)を決定し得、またはそうでなければ識別し得る。ネットワークパケットと関連付けられたネットワークフロー情報を決定した後に、フロー決定モジュール306は、決定されたネットワークフロー情報をコンピューティングデバイス110へ送信するよう構成され得る。
フロー管理モジュール304は、ネットワークスイッチ190により受信されたネットワークパケットと関連付けられた転送情報を決定するようにも構成され得る。そうするために、いくつかの実施形態において、フロー管理モジュール304は転送決定モジュール308を含む。そのような複数の実施形態において、転送決定モジュール308は、コンピューティングデバイス110から受信されたアーキテクチャ情報とネットワークスイッチ190から受信された接続情報とに基づき、ネットワークパケットに関する転送情報を決定する。説明されるように、コンピューティングデバイス110から受信するアーキテクチャ情報は、コンピューティングデバイスアーキテクチャデータベース172において格納され得、ネットワークスイッチ190から受信する接続情報は、ネットワークスイッチ接続データベース174において格納され得る。いくつかの実施形態において、転送決定モジュール308により決定される転送情報は、受信されたネットワークパケットが転送されるべきネットワークスイッチ190の特定のポート(例えば、PA192、PB194、またはPC196)を識別し、そうでなければそれを示す。そのような複数の実施形態において、転送決定モジュール308は、ネットワークパケットによりターゲットとされているアプリケーションを実行しているターゲットの処理ノード112(例えば、処理ノード114)のネットワークアダプタ(例えば、NIC136)がネットワークスイッチ190の特定のポート(例えば、PA192)に通信可能に結合されていることを決定するのに、アーキテクチャ情報および接続情報を利用するよう構成され得る。ネットワークパケットと関連付けられた転送情報を決定した後に、転送決定モジュール308は、決定された転送情報をネットワークスイッチ190へ送信するよう構成され得る。
追加的に、または代替的に、フロー管理モジュール304は、特定の処理ノード112(例えば、処理ノード114または処理ノード116)、および/または複数の処理ノード112のうち1つの特定のプロセッサコア(例えば、コアA122、コアB124、コアA142、またはコアB144)にアプリケーションを初期化または実行するよう命令する1または複数の命令またはコマンドをコンピューティングデバイス110へ送信するよう構成され得る。いくつかの実施形態において、フロー管理モジュール304はそのような複数の命令を、ネットワークスイッチ190により受信された1または複数のネットワークパケットがコンピューティングデバイス110の処理ノード112により実行されていないアプリケーションをターゲットとしていることを決定したことに応答して、コンピューティングデバイス110へ送信し得る。いくつかの実施形態において、フロー管理モジュール304は、特定の処理ノード112(例えば、処理ノード114または処理ノード116)、および/または最も利用されていない複数の処理ノード112のうち1つの特定のプロセッサコア(例えば、コアA122、コアB124、コアA142、またはコアB144)を決定し得る。つまり、フロー管理モジュール304は、最も多くのリソースおよび/または最大の処理能力を有する特定のプロセッサコア、および/または複数の処理ノード112のうち1つを決定し得る。そのような複数の実施形態において、フロー管理モジュール304により送信される複数の命令および/またはコマンドは、最も多くのリソースおよび/または最大の処理能力を有すると決定された特定の処理ノード112(例えば、処理ノード114または処理ノード116)、および/または特定のプロセッサコア(例えば、コアA122、コアB124、コアA142、またはコアB144)上で新たなアプリケーションを初期化する、またはそうでなければ実行するようコンピューティングデバイス110に命令し得る。
ここで図4を参照すると、使用において、ネットワークスイッチ190は動作中に環境400を確立する。例示的な環境400は、接続管理モジュール402およびパケット転送モジュール404を含む。環境400の複数のモジュール、ロジック、および他のコンポーネントのうちそれぞれは、ハードウェア、ソフトウェア、ファームウェア、またはこれらの組み合わせとして具現化され得る。例えば、環境400の複数のモジュール、ロジック、および他の複数のコンポーネントのうちそれぞれは、ネットワークスイッチ190の複数のプロセッサまたは他の複数のハードウェアコンポーネントの一部を形成し得、またはそうでなければそれらにより確立され得る。ネットワークスイッチ190が、記載の明瞭化のために図4においては図示されていない、コンピューティングデバイスにおいて一般的に見られる他の複数のコンポーネント、複数のサブコンポーネント、複数のモジュール、および複数のデバイスを含み得ることが理解されるべきである。
接続管理モジュール402は、接続情報をネットワークコントローラ170へ送信するよう構成され得る。接続情報は、ネットワークスイッチ190の1または複数のポート(例えば、PA192、PB194、PC196)と、コンピューティングデバイス110、ネットワークコントローラ170、リモートコンピューティングデバイス180、および/または任意の他のコンピューティングデバイスまたは通信ネットワークとの間の1または複数のネットワーク接続(例えば、通信リンク)を規定し得る、またはそうでなければそれを示し得る。いくつかの実施形態において、接続管理モジュール402は、1または複数のOpenFlowメッセージとしてネットワークコントローラ170から接続情報を送信するよう構成され得る。追加的に、または代替的に、接続管理モジュール402は、1または複数のレプレゼンテーショナルステートトランスファー(REST)メッセージとしてネットワークコントローラ170へ接続情報を送信するよう構成され得る。当然、任意の他の適切なメッセージングプロトコルおよび/またはフォーマット(例えば、Simple Object Access Protocol(SOAP)などのXMLベースのプロトコルおよび/またはフォーマット、JavaScript(登録商標) Object Notation(JSON)などのオープンスタンダードベースのプロトコルおよび/またはフォーマット等)が、ネットワークコントローラ170へ接続情報を送信するのに接続管理モジュール402により用いられ得ることが理解されるべきである。
いくつかの実施形態において、接続管理モジュール402は、ネットワークスイッチ190と、コンピューティングデバイス110、ネットワークコントローラ170、リモートコンピューティングデバイス180および/または任意の他のコンピューティングデバイスまたは通信ネットワークとの間のネットワーク接続(例えば、(通信リンク)の確立または終了にあたりネットワークコントローラ170へ接続情報を送信するよう構成され得る。例えば、接続管理モジュール402は、ネットワークスイッチ190の複数のポート(例えば、PA192、PB194、PC196)のうち1または複数についてのリンク状態(例えば、「接続状態」、「接続されていない状態」、「アクティブな状態」、「非アクティブな状態」、「アップ」、「ダウン」等)の変化を検出したことに応答して接続情報を送信するよう構成され得る。いくつかの実施形態において、接続管理モジュール402は、ネットワークスイッチ190のポート(例えば、PA192、PB194、PC196)に新たに接続されたコンピューティングデバイス(例えば、コンピューティングデバイス110、ネットワークコントローラ170、リモートコンピューティングデバイス180、および/または任意の他のコンピューティングデバイス)と関連付けられた新たなMACアドレスを検出したことに応答して、ネットワークコントローラ170へ接続情報を送信するよう構成され得る。追加的に、または代替的に、いくつかの実施形態において、接続管理モジュール402は、設定可能なリファレンス接続通知インターバルに基づき、および/または、接続情報を送信するよう接続管理モジュール402にリクエストする、ネットワークコントローラ170から受信された1または複数の命令またはコマンドに基づき、ネットワークコントローラ170へ接続情報を送信するよう構成され得る。
パケット転送モジュール404は、ネットワークスイッチ190のポート(例えば、PA192、PB194、またはPC196)を介しリモートコンピューティングデバイス180からネットワークパケットを受信するよう構成され得る。リモートコンピューティングデバイス180からネットワークパケットを受信したことに応答して、パケット転送モジュール404は、受信されたネットワークパケットと関連付けられた転送情報のリクエストをネットワークコントローラ170へ送信するよう構成される。パケット転送モジュール404は、ネットワークコントローラ170からリクエストされた転送情報を受信するようにも構成され得る。転送情報は、受信されたネットワークパケットが転送されるべきコンピューティングデバイス110の特定の処理ノード112のネットワークアダプタ(例えば、NIC136またはNIC156)を識別し得、またはそうでなければそれを示し得る。いくつかの実施形態において、転送情報は、コンピューティングデバイス110の識別されたネットワークアダプタ(例えば、NIC136またはNIC156)に通信可能に結合されたネットワークスイッチ190の特定のインタフェースまたはポート(例えば、PA192、PB194、PC196)を示す情報を含み得る。追加的に、いくつかの実施形態において、パケット転送モジュール404は、1または複数のフローエントリを含む1または複数のフローテーブルを保持するよう構成され得る。そのような複数の実施形態において、パケット転送モジュール404は、ネットワークコントローラ170から受信された転送情報に基づき(複数の)転送テーブルに複数のフローエントリを追加するよう構成され得る。
パケット転送モジュール404は、受信された転送情報に基づき、ネットワークコントローラ170により識別されるコンピューティングデバイス110の特定の処理ノード112のネットワークアダプタ(例えば、NIC136またはNIC156)へ、リモートコンピューティングデバイス180により受信されたネットワークパケットを転送するようにも構成され得る。そうするために、いくつかの実施形態において、パケット転送モジュール404は、ネットワークコントローラ170から受信された転送情報に基づきネットワークパケットを、ネットワークパケットが受信されたネットワークスイッチ190のポート(例えば、PB194)から、コンピューティングデバイス110の識別されたネットワークアダプタ(例えば、NIC136またはNIC156)に通信可能に結合されたネットワークスイッチ190の他のポート(例えば、PA192)へ転送するよう構成され得る。1または複数のフローエントリを含む(複数の)フローテーブルをネットワークスイッチ190が保持している複数の実施形態において、パケット転送モジュール404は、(複数の)フローテーブルの1または複数のフローエントリに基づき、リモートコンピューティングデバイス180により受信されたネットワークパケットを、ネットワークコントローラ170により識別されるコンピューティングデバイス110の特定の処理ノード112のネットワークアダプタ(例えば、NIC136またはNIC156)へ転送するよう構成され得る。
ここで図5を参照すると、ネットワークコントローラ170は、複数のネットワークフローをコンピューティングデバイス110の複数の処理リソースにアライメントするための方法500を実行し得る。方法500は、ネットワークコントローラ170がアーキテクチャ情報をコンピューティングデバイス110から受信するブロック502から開始する。上記にて説明した通り、アーキテクチャ情報は、コンピューティングデバイス110の各処理ノード112のアーキテクチャを規定し得る。例えば、いくつかの実施形態において、ブロック504において、ネットワークコントローラ170は、どのプロセッサ(例えば、プロセッサ120およびプロセッサ140)およびメモリバンク(例えば、メモリ126およびメモリ146)がコンピューティングデバイス110のどの処理ノード112(例えば、処理ノード114および処理ノード116)に含まれているかを示すアーキテクチャ情報をコンピューティングデバイス110から受信する。いくつかの実施形態において、アーキテクチャ情報は、どのプロセッサコア(例えば、コアA122、コアB124、コアA142、およびコアB144)がどのプロセッサ(例えば、プロセッサ120およびプロセッサ140)に含まれるかと識別する情報も含み得る。追加的に、ブロック506において、ネットワークコントローラ170は、どのアプリケーションがコンピューティングデバイス110のどの処理ノード112(例えば、処理ノード114および処理ノード116)により実行されているかを示すアーキテクチャ情報をコンピューティングデバイス110から受信する。いくつかの実施形態において、そのようなアーキテクチャ情報は、複数のプロセッサ(例えば、プロセッサ120およびプロセッサ140)のどのプロセッサコア(例えば、コアA122、コアB124、コアA142、またはコアB144)がどのアプリケーションを実行しているかも識別し得る。追加的に、または代替的に、受信されたアーキテクチャ情報は、実行されている各アプリケーションに割り振られた、またはそうでなければ割り当てられた複数のメモリスペース(例えば、アプリケーションメモリスペース128およびアプリケーションメモリスペース148)を識別する情報を含み得る。いくつかの実施形態において、ブロック508において、ネットワークコントローラ170は、どのメモリキュー(例えば、Q0 132、Q1 134、Q2 152、およびQ3 154)がどのネットワークアダプタ(例えば、NIC136またはNIC156)のどのポート(例えば、P1 137またはP2 157)に割り振られているか、またはそうでなければ割り当てられているかを示すアーキテクチャ情報もコンピューティングデバイス110から受信し得る。当然、他の複数の実施形態において、ネットワークコントローラ170が任意の他のタイプのアーキテクチャ情報をコンピューティングデバイス110から受信し得ることが理解されるべきである。
決定ブロック510において、ネットワークコントローラ170は、転送情報のリクエストがネットワークスイッチ190から受信されたかを決定する。転送情報のリクエストは、ネットワークスイッチ190のポート(例えば、PA192、PB194、PC196)を介しリモートコンピューティングデバイス180からネットワークパケットをネットワークスイッチ190が受信したことに応答して、ネットワークスイッチ190から受信され得る。決定ブロック510において、転送情報のリクエストがネットワークスイッチ190から受信されたことをネットワークコントローラ170が決定した場合、方法500はブロック512へ進む。しかし、代わりに、転送情報のリクエストがネットワークスイッチ190から受信されていないとネットワークコントローラ170が決定した場合、方法500は決定ブロック510に戻り、ネットワークコントローラ170は、転送情報のリクエストが受信されたかを決定し続ける。
ブロック512において、ネットワークコントローラ170は、ネットワークスイッチ190により受信されたネットワークパケットと関連付けられたネットワークフロー情報を決定する。ネットワークフロー情報は、ターゲットの処理ノードにより実行されるアプリケーションに少なくとも部分的に基づき、またはそうでなければその関数として、ネットワークパケットを処理するコンピューティングデバイス110のターゲットの処理ノード112(例えば、処理ノード114)を識別し、そうでなければそれを示す。動作においてネットワークコントローラ170は、コンピューティングデバイス110から受信されコンピューティングデバイスアーキテクチャデータベース172において保持されているアーキテクチャ情報に基づきネットワークフロー情報を決定する。そういうものとして、いくつかの実施形態において、ネットワークコントローラ170はブロック514において、ネットワークスイッチ190により受信されたネットワークパケットによりターゲットとされている特定のアプリケーションを決定し得、またはそうでなければ識別し得る。そうするために、ネットワークコントローラ170は、ネットワークパケットと関連付けられたヘッダ情報(例えば、5タプルからのポート番号およびタイプ)を調べ、ターゲットとされているアプリケーションを決定し得る。当然、ネットワークコントローラ170が、ネットワークスイッチ190により受信されたネットワークパケットによりターゲットとされている特定のアプリケーションを決定または識別するための任意の他の処理を用い得ることが理解されるべきである。そのような複数の実施形態において、ネットワークコントローラ170は、決定されたアプリケーションを、コンピューティングデバイス110から受信されたアーキテクチャ情報と比較し、ネットワークフロー情報を決定し得る。例えば、いくつかの実施形態において、ネットワークコントローラ170は、受信されたネットワークパケットによりターゲットとされているアプリケーションが、コンピューティングデバイス110の特定の処理ノード112(例えば、処理ノード114)により実行されていることを決定し得る。そのような複数の実施形態において、ネットワークコントローラ170は、受信されたネットワークパケットによりターゲットとされているアプリケーションを実行しているコンピューティングデバイス110の特定の処理ノード112(例えば、処理ノード114)がターゲットの処理ノード112であることを決定し得る。追加的に、いくつかの実施形態において、ネットワークコントローラ170はブロック516において、ネットワークパケットによりターゲットとされているアプリケーションを実行している特定のプロセッサコア(例えば、コアA122、コアB124、コアA142、またはコアB144)も決定し得る。そのような複数の実施形態において、ネットワークコントローラ170は、受信されたネットワークパケットによりターゲットとされているアプリケーションを実行しているプロセッサコア(例えば、コアA122またはコアB124)を含むコンピューティングデバイス110の特定の処理ノード112(例えば、処理ノード114)がターゲットの処理ノード112であることを決定し得る。
ブロック518において、ネットワークコントローラ170はネットワークフロー情報をコンピューティングデバイス110へ送信する。ネットワークフロー情報はその後、ネットワークパケットによりターゲットとされているアプリケーションを実行している特定のターゲットの処理ノード112(例えば、処理ノード114)のネットワークアダプタ(例えば、NIC136)においてフローフィルタ(例えば、フローフィルタ138)をプログラミングするのにコンピューティングデバイス110により用いられ得る。いくつかの実施形態において、特定のターゲットの処理ノード112(例えば、処理ノード114)のネットワークアダプタ(例えば、NIC136)におけるフローフィルタ(例えば、フローフィルタ138)は、ターゲットの処理ノード112(例えば、処理ノード114)のメモリ(例えば、メモリ126)における、ネットワークスイッチ190により受信されるネットワークパケット(および後続の関連する複数のネットワークパケット)を受信するメモリキュー(例えば、Q0 132またはQ1 134)を指定する。
ブロック520において、ネットワークコントローラ170は、ネットワークスイッチ190により受信されるネットワークパケットと関連付けられた転送情報を決定する。転送情報は、受信されたネットワークパケットが転送されるべきネットワークスイッチ190の特定のポート(例えば、PA192、PB194、またはPC196)を識別する。動作において、ネットワークコントローラ170は、コンピューティングデバイス110から受信し、コンピューティングデバイスアーキテクチャに保持されているアーキテクチャ情報、および/または、ネットワークスイッチ190から受信し、ネットワークスイッチ接続データベース174に保持されている接続情報に基づき、転送情報を決定する。例えば、いくつかの実施形態において、ネットワークコントローラ170は、ネットワークパケットによりターゲットとされているアプリケーションを実行しているターゲットの処理ノード112(例えば、処理ノード114)のネットワークアダプタ(例えば、NIC136)がネットワークスイッチ190の特定のポート(例えば、PA192)に通信可能に結合されていることを決定するのに、アーキテクチャ情報および接続情報を利用し得る。
ブロック522において、ネットワークコントローラは、転送情報をネットワークスイッチ190へ送信する。転送情報はその後、受信されたネットワークパケットによりターゲットとされているアプリケーションを実行しているターゲットの処理ノード112(例えば、処理ノード114)のネットワークアダプタ(例えば、NIC136)に通信可能に結合された特定のポート(例えば、PA192)へ受信されたネットワークパケットを転送するのにネットワークスイッチ190により用いられ得る。
ここで図6を参照すると、コンピューティングデバイス110は、複数のネットワークフローをコンピューティングデバイス110の複数の処理リソースにアライメントするための方法600を実行し得る。方法600は、コンピューティングデバイス110がアーキテクチャ情報をネットワークコントローラ170へ送信するブロック602から開始する。ここでも上記にて説明した通り、アーキテクチャ情報は、コンピューティングデバイス110の各処理ノード112のアーキテクチャを規定し得る。例えば、いくつかの実施形態において、ブロック604において、コンピューティングデバイス110は、どのプロセッサおよびメモリバンクがコンピューティングデバイス110のどの処理ノード112に含まれているかを示すアーキテクチャ情報をネットワークコントローラ170へ送信する。いくつかの実施形態において、アーキテクチャ情報は、どのプロセッサコアがどのプロセッサに含まれているかを識別する情報も含み得る。追加的に、ブロック606において、コンピューティングデバイス110は、どのアプリケーションがコンピューティングデバイス110のどの処理ノード112により実行されているかを示すアーキテクチャ情報をネットワークコントローラ170へ送信する。いくつかの実施形態において、そのようなアーキテクチャ情報は、複数のプロセッサのどのプロセッサコアがどのアプリケーションを実行しているかも識別し得る。追加的に、または代替的に、送信されるアーキテクチャ情報は、実行されている各アプリケーションに割り振られた、またはそうでなければ割り当てられた複数のメモリスペースを識別する情報を含み得る。いくつかの実施形態において、ブロック608において、コンピューティングデバイス110は、どのメモリキューがどのネットワークアダプタ(例えば、NIC)のどのポートに割り振られているか、またはそうでなければ割り当てられているかを示すアーキテクチャ情報もネットワークコントローラ170へ送信し得る。当然、他の複数の実施形態において、コンピューティングデバイス110は、任意の他のタイプアーキテクチャ情報をネットワークコントローラ170へ送信し得ることが理解されるべきである。
決定ブロック610において、コンピューティングデバイス110は、ネットワークスイッチ190により受信されたネットワークパケットと関連付けられたネットワークフロー情報がネットワークコントローラ170から受信されたかを決定する。いくつかの実施形態において、ネットワーク情報は、コンピューティングデバイス110をネットワークコントローラ170に通信可能に結合するコンピューティングデバイス110の1または複数の管理ポート(示されておらず)を介し受信され得る。ネットワークフロー情報は、コンピューティングデバイス110のターゲットの処理ノード112(例えば、処理ノード114)により実行されているアプリケーションに少なくとも部分的に基づき、またはそうでなければその関数として、ネットワークパケットを処理するターゲットの処理ノード112を識別し、またはそうでなければそれを示す。いくつかの実施形態において、ネットワークフロー情報は、ネットワークパケットによりターゲットとされているアプリケーションを実行している特定のプロセッサコア(例えば、コアA122コアB124)も識別し得、またはそうでなければそれも示し得る。決定ブロック610において、ネットワークパケットと関連付けられたネットワークフロー情報がネットワークコントローラ170から受信されたことをコンピューティングデバイス110が決定した場合、方法600はブロック612へ進む。しかし、代わりに、ネットワークパケットと関連付けられたネットワークフロー情報がネットワークコントローラ170から受信されていないとコンピューティングデバイス110が決定した場合、方法600は決定ブロック616に進む。
ブロック612において、コンピューティングデバイス110は、ネットワークパケットによりターゲットとされているアプリケーションを実行しているターゲットの処理ノード112(例えば、処理ノード114)のネットワークアダプタ(例えば、NIC136)においてフローフィルタ(例えば、フローフィルタ138)をプログラミングする。いくつかの実施形態において、ブロック614において、コンピューティングデバイス110は、ターゲットの処理ノード112(例えば、処理ノード114)のネットワークアダプタ(例えば、NIC136)においてフローフィルタ(例えば、フローフィルタ138)をプログラミングして、ターゲットの処理ノード112(例えば、処理ノード114)のメモリ(例えば、メモリ126)における、ネットワークスイッチ190により受信されたネットワークパケット(および後続の関連する複数のネットワークパケット)を受信するメモリキュー(例えば、Q0 132またはQ1 134)を指定する。
決定ブロック616において、コンピューティングデバイス110は、ネットワークパケットがネットワークスイッチ190から受信されたかを決定する。そうするために、いくつかの実施形態において、コンピューティングデバイス110は、ネットワークパケットが、ターゲットの処理ノード112(例えば、処理ノード114)のネットワークアダプタ(例えば、NIC136)により受信されたかを決定する。決定ブロック616において、ネットワークパケットがネットワークスイッチ190から受信されたことをコンピューティングデバイス110が決定した場合、方法600はブロック618へ進む。しかし、代わりに、ネットワークパケットがネットワークスイッチ190から受信されていないとコンピューティングデバイス110が決定した場合、方法600は決定ブロック610に戻り、コンピューティングデバイス110はネットワークフロー情報が受信されたかを決定する。
ブロック618において、ターゲットの処理ノード112(例えば、処理ノード114)のネットワークアダプタ(例えば、NIC136)は、受信されたネットワークパケットを、ターゲットの処理ノード112のメモリ(例えば、メモリ126)における指定されたメモリキュー(例えば、Q0 132またはQ1 134)へコピーする。そうするために、ターゲットの処理ノード112のネットワークアダプタ(例えば、NIC136)は、事前にプログラミングされたフローフィルタ(例えば、フローフィルタ138)をネットワークスイッチ190から受信されたネットワークパケットに適用する。ネットワークパケットが受信されたがネットワークパケットと関連付けられたネットワークフロー情報が受信されていないとコンピューティングデバイス110が決定する複数の実施形態において、ネットワークパケットを受信したネットワークアダプタ(例えば、NIC136またはNIC156)は、受信されたネットワークパケットを、関連付けられたNICメモリスペース(例えば、NICメモリスペース130またはNICメモリスペース150)におけるメモリキュー(例えば、Q0 132、Q1 134、Q2 152、またはQ3 154)にコピーする。
ブロック620において、ネットワークパケットによりターゲットとされている特定のアプリケーションは、ターゲットの処理ノード112(例えば、処理ノード114)のメモリ(例えば、メモリ126)における指定されたメモリキュー(例えば、Q0 132またはQ1 134)からネットワークパケットを受信し、またはそうでなければ取得する。いくつかの実施形態において、ターゲットとされているアプリケーションは、ネットワークパケットが、指定されたメモリキュー(例えば、Q0 132またはQ1 134)から取得されるべく利用可能であるかを決定し得る。そうするために、いくつかの実施形態において、ターゲットとされているアプリケーションは、指定されたメモリキュー(例えば、Q0 132またはQ1 134)をポーリングして、ネットワークパケットが取得のために利用可能であるかを決定し得る。追加的に、または代替的に、ターゲットとされているアプリケーションは、ネットワークパケットが指定されたメモリキュー(例えば、Q0 132またはQ1 134)から取得されるべく利用可能であることを示している、コンピューティングデバイス110の他のコンポーネントにより生成された割込みを受信し得る。そのような複数の実施形態において、ターゲットとされているアプリケーションは、ネットワークパケットが取得のために利用可能であると決定したことに応答して、指定されたメモリキュー(例えば、Q0 132またはQ1 134)からネットワークパケットを取得し得る。いくつかの実施形態において、ターゲットとされているアプリケーションは、ネットワークパケットを取得した後、指定されたメモリキュー(例えば、Q0 132またはQ1 134)をクリアする、またはそうでなければリセットする。ネットワークパケットが受信されたがネットワークパケットと関連付けられたネットワークフロー情報が受信されていないとコンピューティングデバイス110が決定する複数の実施形態において、ネットワークパケットによりターゲットとされている特定のアプリケーションは、ネットワークパケットが格納されている処理ノード112(例えば、処理ノード114または処理ノード116)のメモリ(例えば、メモリ126またはメモリ146)におけるメモリキュー(例えば、Q0 132、Q1 134、Q2 152、またはQ3 154)からネットワークパケットを受信し、またはそうでなければ取得する。いくつかの実施形態において、ネットワークパケットによりターゲットとされている特定のアプリケーションは、受信されたネットワークパケットを格納しているNICメモリスペース(例えば、NICメモリスペース150)を含む処理ノード112(例えば、処理ノード116)とは異なる処理ノード112(例えば、処理ノード114)で実行され得ることが理解されるべきである。そのような複数の実施形態において、ターゲットとされているアプリケーションは、処理ノード114を処理ノード116に通信可能に結合する通信リンク(例えば、QPI118等)を介し処理ノード112(例えば、処理ノード116)のNICメモリスペース(例えば、NICメモリスペース150)からネットワークパケットを受信し得、またはそうでなければ取得し得る。
ここで図7を参照すると、ネットワークスイッチ190は、複数のネットワークフローをコンピューティングデバイス110の複数の処理リソースにアライメントするための方法700を実行し得る。方法700は、ネットワークパケットがリモートコンピューティングデバイス180から受信されたかをネットワークスイッチ190が決定する決定ブロック702から開始する。いくつかの実施形態において、ネットワークスイッチ190は、ネットワークパケットがネットワークスイッチ190のポート(例えば、PA192、PB194、PC196)を介しリモートコンピューティングデバイス180から受信されたかを決定する。決定ブロック702において、ネットワークパケットがリモートコンピューティングデバイス180から受信されたとネットワークスイッチ190が決定した場合、方法700はブロック704へ進む。しかし、代わりに、ネットワークパケットがリモートコンピューティングデバイス180から受信されていないとネットワークスイッチ190が決定した場合、方法700は決定ブロック702に戻り、ネットワークスイッチ190は、ネットワークパケットが受信されたかを決定し続ける。
決定ブロック704において、ネットワークスイッチ190は、ネットワークスイッチ190により保持されている(複数の)転送テーブルが、受信されたネットワークパケットと関連付けられたフローエントリを含むかを決定し得る。説明されているように、(複数の)フローテーブルの各フローエントリは、ネットワークコントローラ170から受信された転送情報に基づき得、1または複数のネットワークフロー、各ネットワークフローと関連付けられた複数のネットワークパケット、および、各ネットワークフローの複数のネットワークパケットが転送されるべき宛先コンピューティングデバイス(またはそのコンポーネント)を識別するのにネットワークスイッチ190により用いられ得る。決定ブロック704において、(複数の)転送テーブルが受信されたネットワークパケットと関連付けられたフローエントリを含むとネットワークスイッチ190が決定した場合、方法700はブロック712に進む。しかし、代わりに、受信されたネットワークパケットと関連付けられたフローエントリを(複数の)転送テーブルが含まないとネットワークスイッチ190が決定した場合、方法700はブロック706へ進む。
ブロック706において、ネットワークスイッチ190は、ネットワークコントローラ170から、受信されたネットワークパケットと関連付けられ転送情報をリクエストする。いくつかの実施形態において、転送情報は、受信されたネットワークパケットが転送されるべきネットワークスイッチ190の特定のポート(例えば、PA192、PB194、またはPC196)を識別する。例えば、いくつかの実施形態において、転送情報は、受信されたネットワークパケットが転送されるべきコンピューティングデバイス110のターゲットの処理ノード112(例えば、処理ノード114)の特定のネットワークアダプタ(例えば、NIC136)に通信可能に結合された特定のポート(例えば、PA192)を識別し得る。
決定ブロック708において、ネットワークスイッチ190は、ネットワークパケットに関するリクエストされた転送情報がネットワークコントローラ170から受信されたかを決定する。決定ブロック708において、ネットワークパケットに関する転送情報がネットワークコントローラ170から受信されたとネットワークスイッチ190が決定した場合、方法700はブロック710へ進む。しかし、代わりに、ネットワークパケットに関する転送情報がネットワークコントローラ170から受信されていないとネットワークスイッチ190が決定した場合、方法700は決定ブロック708に戻り、ネットワークスイッチ190は、ネットワークパケットに関するリクエストされた転送情報が受信されたかを決定し続ける。
ブロック710において、ネットワークスイッチは、ネットワークコントローラ170から受信された転送情報に基づき、ネットワークスイッチ190により保持されている(複数の)転送テーブルにフローエントリを追加する。(複数の)フローテーブルに追加されたフローエントリは、ネットワークフロー、ネットワークフローと関連付けられた複数のネットワークパケット、および、各ネットワークフローの複数のネットワークパケットが転送されるべき宛先コンピューティングデバイス(またはそのコンポーネント)を識別し得る。例えば、いくつかの実施形態において、(複数の)フローテーブルに追加されるフローエントリは、コンピューティングデバイス110(またはNIC136などのその特定のコンポーネント)が通信可能に結合された、受信されたネットワークパケット(および続いて受信された複数のネットワークパケット)が転送されるべきネットワークスイッチ190の特定のポート(例えば、PA192、PB194、PC196)を示し得る。
ブロック712において、ネットワークスイッチ190は、受信されたネットワークパケットと関連付けられ(複数の)転送テーブルのフローエントリに基づき、ネットワークパケットを転送する。例えば、いくつかの実施形態において、ネットワークスイッチ190は、リモートコンピューティングデバイス180から受信されたネットワークパケットを、受信されたネットワークパケットと関連付けられた(複数の)転送テーブルのフローエントリに基づき、ネットワークスイッチ190の1つのポート(例えば、PB194)を介し、ネットワークスイッチ190の異なるポート(例えば、PA192)へ転送し得る。
ここで図8を参照すると、ネットワークスイッチ190は、複数のネットワークフローをコンピューティングデバイス110の複数の処理リソースにアライメントするための方法800を実行し得る。いくつかの実施形態において、ネットワークスイッチ190は、上記にて説明した方法700と並列で方法800を実行し得る。方法800は、ネットワークパケットに関する転送情報がネットワークコントローラ170から受信されたかをネットワークスイッチ190が決定する決定ブロック802から開始する。決定ブロック802において、ネットワークパケットに関する転送情報がネットワークコントローラ170から受信されたとネットワークスイッチ190が決定した場合、方法800はブロック804へ進む。しかし、代わりに、ネットワークパケットに関する転送情報がネットワークコントローラ170から受信されていないとネットワークスイッチ190が決定した場合、方法800は決定ブロック802に戻り、ネットワークスイッチ190は、転送情報が受信されたかを決定し続ける。
ブロック804において、ネットワークスイッチ190は、ネットワークコントローラ170から受信された転送情報に基づき、ネットワークスイッチ190により保持されている(複数の)転送テーブルへフローエントリを追加する。(複数の)フローテーブルに追加されたフローエントリは、ネットワークフロー、ネットワークフローと関連付けられた複数のネットワークパケット、および、各ネットワークフローの複数のネットワークパケットが転送されるべき宛先コンピューティングデバイス(またはそのコンポーネント)を識別し得る。例えば、いくつかの実施形態において、(複数の)フローテーブルに追加されるフローエントリは、コンピューティングデバイス110が通信可能に結合された、受信されたネットワークパケット(および続いて受信された複数のネットワークパケット)が転送されるべきネットワークスイッチ190の特定のポート(例えば、PA192、PB194、PC196)を示し得る。
本明細書に開示されている複数の技術の例示的な複数の例が以下に提供される。複数の技術の実施形態は、以下に記載される複数の例のうち1または複数の、およびそれらの任意の組み合わせを含み得る。
例1は、複数のネットワークフローを複数の処理リソースにアライメントするためのコンピューティングデバイスを含み、
コンピューティングデバイスは、アーキテクチャ情報をネットワークコントローラへ送信するアーキテクチャ通知モジュールを備え、
アーキテクチャ情報は、コンピューティングデバイスの複数の処理ノードの各処理ノードのアーキテクチャを規定しており、
各処理ノードはプロセッサと、メモリと、ネットワークアダプタとを有し、
コンピューティングデバイスは、ローカルフロー管理モジュールを備え、
ローカルフロー管理モジュールは、(i)ネットワークコントローラからネットワークフロー情報を受信し、
ネットワークフロー情報はネットワークパケットと関連付けられ、複数の処理ノードのうちネットワークパケットを処理するターゲットの処理ノードを、ターゲットの処理ノードにより実行されるアプリケーションに少なくとも基づき識別し、
ローカルフロー管理モジュールは、(ii)ネットワークフロー情報に少なくとも基づき、ターゲットの処理ノードのネットワークアダプタにおいてフローフィルタを、ターゲットの処理ノードのメモリにおける、ネットワークパケットを受信するメモリキューを指定するようプログラミングし、
ターゲットの処理ノードのネットワークアダプタは、ネットワークスイッチからネットワークパケットを受信し、ネットワークパケットは、ターゲットの処理ノードにより実行されるアプリケーションにより処理される。
例2は、例1の主題を含み、アーキテクチャ情報は、複数の処理ノードの各処理ノードにより実行される複数のアプリケーションを示す。
例3は、例1および2のいずれかの主題を含み、
各処理ノードのプロセッサは複数の処理コアを含み、
アーキテクチャ情報は、各処理ノードの各プロセッサの各処理コアにより実行される複数のアプリケーションを示すデータを含み、
ネットワークフロー情報を受信することは、ターゲットの処理ノードの処理コアにより実行されるアプリケーションに少なくとも基づき、ネットワークパケットを処理するターゲットの処理ノードを識別するネットワークフロー情報をネットワークコントローラから受信することを含む。
例4は、例1から3のいずれかの主題を含み、
ターゲットの処理ノードのネットワークアダプタはさらに、(i)ターゲットの処理ノードのメモリにおけるメモリキューをネットワークアダプタのポートに割り当て、
ネットワークスイッチからネットワークパケットを受信することは、ネットワークアダプタのポートを介しネットワークスイッチからネットワークパケットを受信することを含み、
ターゲットの処理ノードのネットワークアダプタはさらに、(ii)受信されたネットワークパケットを、ネットワークアダプタのポートに割り当てられたターゲットの処理ノードのメモリにおけるメモリキューにコピーする。
例5は、例1から4のいずれかの主題を含み、
ターゲットの処理ノードにより実行されるアプリケーションは、(i)受信されたネットワークパケットが、ターゲットの処理ノードのメモリにおけるメモリキューから取得されるべく利用可能であるか決定し、(ii)受信されたネットワークパケットがメモリキューから取得されるべく利用可能であるとの決定に応答して、ターゲットの処理ノードのメモリにおけるメモリキューから受信されたネットワークパケットを取得する。
例6は、例1から5のいずれかの主題を含み、
ネットワークパケットがメモリキューから取得されるべく利用可能であるか決定することは、(i)リファレンスポーリングインターバルの関数としてターゲットの処理ノードのメモリにおけるメモリキューをポーリングすること、または、(ii)ネットワークパケットがメモリキューから取得されるべく利用可能であることを示す割込みを受信することのうち少なくとも1つを含む。
例7は、例1から6のいずれかの主題を含み、
ネットワークパケットは第1ネットワークパケットを含み、
ネットワークフロー情報は第1ネットワークフロー情報を含み、
フローフィルタは第1フローフィルタを含み、
ターゲットの処理ノードのメモリは第1メモリを含み、
ターゲットの処理ノードのメモリにおけるメモリキューはターゲットの処理ノードの第1メモリにおける第1メモリキューを含み、
ターゲットの処理ノードのネットワークアダプタはターゲットの処理ノードの第1ネットワークアダプタを含み、
ローカルフロー管理モジュールはさらに、(i)ネットワークコントローラから第2ネットワークフロー情報を受信し、
第2ネットワークフロー情報は第2ネットワークパケットと関連付けられ、複数の処理ノードのうち第2ネットワークパケットを処理する異なる処理ノードを、異なる処理ノードにより実行される他のアプリケーションに少なくとも基づき識別し、
ローカルフロー管理モジュールはさらに、(ii)第2ネットワークフロー情報に少なくとも基づき、異なる処理ノードの第2ネットワークアダプタにおいて第2フローフィルタを、異なる処理ノードの第2メモリにおける、第2ネットワークパケットを受信する第2メモリキューを指定するようプログラミングし、
異なる処理ノードの第2ネットワークアダプタはネットワークスイッチから第2ネットワークパケットを受信し、
第2ネットワークパケットは、異なる処理ノードにより実行される他のアプリケーションにより処理される。
例8は、例1から7のいずれかの主題を含み、ターゲットの処理ノードは、ネットワークコントローラから受信された複数の命令に少なくとも基づき他のアプリケーションを実行する。
例9は、複数のネットワークフローを複数の処理リソースにアライメントするための方法を含み、方法は、複数の処理ノードを有するコンピューティングデバイスにより、アーキテクチャ情報をネットワークコントローラへ送信する段階を備え、
アーキテクチャ情報は、各処理ノードのアーキテクチャを規定しており、
各処理ノードはプロセッサと、メモリと、ネットワークアダプタとを含み、
方法は、コンピューティングデバイスにより、ネットワークコントローラからネットワークフロー情報を受信する段階を備え、
ネットワークフロー情報はネットワークパケットと関連付けられ、複数の処理ノードのうちネットワークパケットを処理するターゲットの処理ノードを、ターゲットの処理ノードにより実行されるアプリケーションに少なくとも基づき識別し、
方法は、
コンピューティングデバイスにより、ネットワークフロー情報に少なくとも基づき、ターゲットの処理ノードのネットワークアダプタにおいてフローフィルタを、ターゲットの処理ノードのメモリにおける、ネットワークパケットを受信するメモリキューを指定するようプログラミングする段階と、
ターゲットの処理ノードのネットワークアダプタにより、ネットワークスイッチからネットワークパケットを受信する段階と
を備え、
ネットワークパケットは、ターゲットの処理ノードにより実行されるアプリケーションにより処理される。
例10は、例9の主題を含み、アーキテクチャ情報は、複数の処理ノードの各処理ノードにより実行される複数のアプリケーションを示す。
例11は、例9および10のいずれかの主題を含み、
各処理ノードのプロセッサは複数の処理コアを含み、
アーキテクチャ情報は、各処理ノードの各プロセッサの各処理コアにより実行される複数のアプリケーションを示すデータを含み、
ネットワークフロー情報を受信する段階は、ターゲットの処理ノードの処理コアにより実行されるアプリケーションに少なくとも基づき、ネットワークパケットを処理するターゲットの処理ノードを識別するネットワークフロー情報をネットワークコントローラから受信する段階を含む。
例12は、例9から11のいずれかの主題を含み、
ターゲットの処理ノードのネットワークアダプタにより、ターゲットの処理ノードのメモリにおけるメモリキューをネットワークアダプタのポートに割り当てる段階をさらに備え、
ネットワークスイッチからネットワークパケットを受信する段階は、ネットワークアダプタのポートを介しネットワークスイッチからネットワークパケットを受信する段階を有し、
方法は、ターゲットの処理ノードのネットワークアダプタにより、受信されたネットワークパケットを、ネットワークアダプタのポートに割り当てられたターゲットの処理ノードのメモリにおけるメモリキューへコピーする段階をさらに備える。
例13は、例9から12のいずれかに記載の主題を含み、
ターゲットの処理ノードにより実行されるアプリケーションにより、受信されたネットワークパケットが、ターゲットの処理ノードのメモリにおけるメモリキューから取得されるべく利用可能であるか決定する段階と、
ターゲットの処理ノードにより実行されるアプリケーションにより、受信されたネットワークパケットがメモリキューから取得されるべく利用可能であるとの決定に応答して、ターゲットの処理ノードのメモリにおけるメモリキューから受信されたネットワークパケットを取得する段階と
をさらに備える。
例14は、例9から13のいずれかに記載の主題を含み、ネットワークパケットがメモリキューから取得されるべく利用可能であるか決定する段階は、(i)リファレンスポーリングインターバルの関数としてターゲットの処理ノードのメモリにおけるメモリキューをポーリングする段階と、(ii)ネットワークパケットがメモリキューから取得されるべく利用可能であることを示す割込みを受信する段階とのうち少なくとも1つを含む。
例15は、例9から14のいずれかに記載の主題を含み、
ネットワークパケットは第1ネットワークパケットを含み、
ネットワークフロー情報は第1ネットワークフロー情報を含み、
フローフィルタは第1フローフィルタを含み、
ターゲットの処理ノードのメモリは第1メモリを含み、
ターゲットの処理ノードのメモリにおけるメモリキューはターゲットの処理ノードの第1メモリにおける第1メモリキューを含み、
ターゲットの処理ノードのネットワークアダプタはターゲットの処理ノードの第1ネットワークアダプタを含み、
コンピューティングデバイスにより、ネットワークコントローラから第2ネットワークフロー情報を受信する段階をさらに備え、
第2ネットワークフロー情報は第2ネットワークパケットと関連付けられ、複数の処理ノードのうち第2ネットワークパケットを処理する異なる処理ノードを、異なる処理ノードにより実行される他のアプリケーションに少なくとも基づき識別し、
方法は、
コンピューティングデバイスにより、第2ネットワークフロー情報に少なくとも基づき、異なる処理ノードの第2ネットワークアダプタにおいて第2フローフィルタを、異なる処理ノードの第2メモリにおける、第2ネットワークパケットを受信する第2メモリキューを指定するようプログラミングする段階と、
異なる処理ノードの第2ネットワークアダプタにより、ネットワークスイッチから第2ネットワークパケットを受信する段階と
をさらに備え、
第2ネットワークパケットは、異なる処理ノードにより実行される他のアプリケーションにより処理される。
例16は、例9から15のいずれかに記載の主題を含み、
コンピューティングデバイスの複数の処理ノードのうち1または複数により、ネットワークコントローラから受信された複数の命令に少なくとも基づき他のアプリケーションを実行する段階をさらに備える。
例17は、複数のネットワークフローを複数の処理リソースにアライメントするためのコンピューティングデバイスを含み、
コンピューティングデバイスは、プロセッサと、複数の命令を格納したメモリとを含み、複数の命令はプロセッサにより実行されたときにコンピューティングデバイスに、例9から16のいずれかに記載の方法を実行させる。
例18は、複数の命令を格納した1または複数のマシン可読媒体を含み、複数の命令が実行されることに応答して、コンピューティングデバイスが例9から16のいずれかに記載の方法を実行することになる。
例19は、複数のネットワークフローを複数の処理リソースにアライメントするためのコンピューティングデバイスを含み、
コンピューティングデバイスは、アーキテクチャ情報をネットワークコントローラへ送信するための手段を備え、
アーキテクチャ情報は、コンピューティングデバイスの複数の処理ノードの各処理ノードのアーキテクチャを規定しており、
各処理ノードはプロセッサと、メモリと、ネットワークアダプタとを有し、
コンピューティングデバイスは、ネットワークコントローラからネットワークフロー情報を受信するための手段を備え、
ネットワークフロー情報はネットワークパケットと関連付けられ、複数の処理ノードのうちネットワークパケットを処理するターゲットの処理ノードを、ターゲットの処理ノードにより実行されるアプリケーションに少なくとも基づき識別し、
コンピューティングデバイスは、ネットワークフロー情報に少なくとも基づき、ターゲットの処理ノードのネットワークアダプタにおいてフローフィルタを、ターゲットの処理ノードのメモリにおける、ネットワークパケットを受信するメモリキューを指定するようプログラミングするための手段を備え、
コンピューティングデバイスは、ターゲットの処理ノードのネットワークアダプタにより、ネットワークスイッチからネットワークパケットを受信するための手段を備え、
ネットワークパケットは、ターゲットの処理ノードにより実行されるアプリケーションにより処理される。
例20は、例19の主題を含み、アーキテクチャ情報は、複数の処理ノードの各処理ノードにより実行される複数のアプリケーションを示す。
例21は、例19および20のいずれかに記載の主題を含み、
各処理ノードのプロセッサは複数の処理コアを含み、
アーキテクチャ情報は、各処理ノードの各プロセッサの各処理コアにより実行される複数のアプリケーションを示すデータを含み、
ネットワークフロー情報を受信するための手段は、ターゲットの処理ノードの処理コアにより実行されるアプリケーションに少なくとも基づき、ネットワークパケットを処理するターゲットの処理ノードを識別するネットワークフロー情報をネットワークコントローラから受信するための手段を含む。
例22は、例19から21のいずれかに記載の主題を含み、
ターゲットの処理ノードのネットワークアダプタにより、ターゲットの処理ノードのメモリにおけるメモリキューをネットワークアダプタのポートに割り当てるための手段をさらに備え、
ネットワークスイッチからネットワークパケットを受信することは、ネットワークアダプタのポートを介しネットワークスイッチからネットワークパケットを受信することを有し、
ターゲットの処理ノードのネットワークアダプタにより、受信されたネットワークパケットを、ネットワークアダプタのポートに割り当てられたターゲットの処理ノードのメモリにおけるメモリキューへコピーするための手段をさらに備える。
例23は、例19から22のいずれかに記載の主題を含み、
ターゲットの処理ノードにより実行されるアプリケーションにより、受信されたネットワークパケットが、ターゲットの処理ノードのメモリにおけるメモリキューから取得されるべく利用可能であるか決定するための手段と、
ターゲットの処理ノードにより実行されるアプリケーションにより、受信されたネットワークパケットがメモリキューから取得されるべく利用可能であるとの決定に応答して、ターゲットの処理ノードのメモリにおけるメモリキューから受信されたネットワークパケットを取得するための手段と
をさらに備える。
例24は、例19から23のいずれかに記載の主題を含み、
ネットワークパケットがメモリキューから取得されるべく利用可能であるか決定するための手段は、(i)リファレンスポーリングインターバルの関数としてターゲットの処理ノードのメモリにおけるメモリキューをポーリングするための手段と、(ii)ネットワークパケットがメモリキューから取得されるべく利用可能であることを示す割込みを受信するための手段とのうち少なくとも1つを含む。
例25は、例19から24のいずれかに記載の主題を含み、
ネットワークパケットは第1ネットワークパケットを含み、
ネットワークフロー情報は第1ネットワークフロー情報を含み、
フローフィルタは第1フローフィルタを含み、
ターゲットの処理ノードのメモリは第1メモリを含み、
ターゲットの処理ノードのメモリにおけるメモリキューはターゲットの処理ノードの第1メモリにおける第1メモリキューを含み、
ターゲットの処理ノードのネットワークアダプタはターゲットの処理ノードの第1ネットワークアダプタを含み、
ネットワークコントローラから第2ネットワークフロー情報を受信するための手段をさらに備え、
第2ネットワークフロー情報は第2ネットワークパケットと関連付けられ、複数の処理ノードのうち第2ネットワークパケットを処理する異なる処理ノードを、異なる処理ノードにより実行される他のアプリケーションに少なくとも基づき識別し、
第2ネットワークフロー情報に少なくとも基づき、異なる処理ノードの第2ネットワークアダプタにおいて第2フローフィルタを、異なる処理ノードの第2メモリにおける、第2ネットワークパケットを受信する第2メモリキューを指定するようプログラミングするための手段と、
異なる処理ノードの第2ネットワークアダプタにより、ネットワークスイッチから第2ネットワークパケットを受信するための手段と
をさらに備え、
第2ネットワークパケットは、異なる処理ノードにより実行される他のアプリケーションにより処理される。
例26は、例19から25のいずれかに記載の主題を含み、
コンピューティングデバイスの複数の処理ノードのうち1または複数により、ネットワークコントローラから受信された複数の命令に少なくとも基づき他のアプリケーションを実行するための手段をさらに備える。
例27は、複数のネットワークフローを複数の処理リソースにアライメントするためのネットワークコントローラを含み、
ネットワークコントローラは、
コンピューティングデバイスからアーキテクチャ情報を受信するアーキテクチャ管理モジュールを備え、
アーキテクチャ情報は、コンピューティングデバイスの複数の処理ノードのそれぞれのアーキテクチャを規定しており、
ネットワークコントローラは、フロー管理モジュールを備え、
フロー管理モジュールは、(i)ネットワークスイッチから、ネットワークパケットと関連付けられた転送情報のリクエストを受信し、(ii)アーキテクチャ情報に少なくとも基づきネットワークパケットと関連付けられたネットワークフロー情報を決定し、
ネットワークフロー情報は、コンピューティングデバイスの複数の処理ノードのうちネットワークパケットを処理するターゲットの処理ノードを、ターゲットの処理ノードにより実行されるアプリケーションに少なくとも基づき識別し、
フロー管理モジュールは、(iii)決定されたネットワークフロー情報をコンピューティングデバイスへ送信して、ネットワークフロー情報に少なくとも基づきターゲットの処理ノードのネットワークアダプタにおいてフローフィルタをプログラミングし、
フローフィルタは、ターゲットの処理ノードのメモリにおける、ネットワークパケットを受信するメモリキューを指定し、
フロー管理モジュールは、(iv)ネットワークパケットと関連付けられた転送情報を決定し、
転送情報は、コンピューティングデバイスのターゲットの処理ノードのネットワークアダプタに通信可能に結合された、ネットワークパケットが転送されることになるネットワークスイッチのポートを識別し、
フロー管理モジュールは、(v)決定された転送情報をネットワークスイッチへ送信し、
ネットワークパケットは、転送情報に少なくとも基づきネットワークスイッチにより転送される。
例28は、例27の主題を含み、
コンピューティングデバイスからアーキテクチャ情報を受信することは、各処理ノードにより実行される複数のアプリケーションを示すアプリケーションデータ、複数の処理ノードのそれぞれのプロセッサを示すプロセッサデータ、複数の処理ノードのそれぞれのプロセッサの複数の処理コアを示すプロセッサコアデータ、複数の処理ノードのそれぞれにおける割り当てられた複数のメモリキューを示すメモリキューデータ、または、複数の処理ノードのそれぞれの複数のネットワークアダプタの複数のポートを示すポートデータのうち少なくとも1つを受信することを含む。
例29は、例27および28のいずれかに記載の主題を含み、
コンピューティングデバイスからアーキテクチャ情報を受信することは、複数の処理ノードのそれぞれのプロセッサの各処理コアにより実行される複数のアプリケーションを示すアプリケーション実行データを受信することを含み、
ネットワークフロー情報を決定することは、アプリケーション実行データに少なくとも基づきネットワークパケットと関連付けられたネットワークフロー情報を決定することを含み、
ネットワークフロー情報は、コンピューティングデバイスの複数の処理ノードのうちネットワークパケットを処理するターゲットの処理ノードを、ターゲットの処理ノードの処理コアにより実行されるアプリケーションに少なくとも基づき識別する。
例30は、例27から29のいずれかに記載の主題を含み、
転送情報は第1転送情報を含み、
転送情報のリクエストは第1転送情報のリクエストを含み、
ネットワークパケットは第1ネットワークパケットを含み、
ネットワークフロー情報は第1ネットワークフロー情報を含み、
フローフィルタは第1フローフィルタを含み、
ターゲットの処理ノードのメモリは第1メモリを含み、
ターゲットの処理ノードのメモリにおけるメモリキューは、ターゲットの処理ノードの第1メモリにおける第1メモリキューを含み、
ターゲットの処理ノードのネットワークアダプタはターゲットの処理ノードの第1ネットワークアダプタを含み、
フロー管理モジュールはさらに、(i)ネットワークスイッチから、第2ネットワークパケットと関連付けられた第2転送情報の第2リクエストを受信し、(ii)アーキテクチャ情報に少なくとも基づき、第2ネットワークパケットと関連付けられた第2ネットワークフロー情報を決定し、
第2ネットワークフロー情報は、コンピューティングデバイスの複数の処理ノードのうち第2ネットワークパケットを処理する異なる処理ノードを、異なる処理ノードにより実行される他のアプリケーションに少なくとも基づき識別し、
フロー管理モジュールはさらに、(iii)決定された第2ネットワークフロー情報をコンピューティングデバイスへ送信して、第2ネットワークフロー情報に少なくとも基づき異なる処理ノードの第2ネットワークアダプタにおける第2フローフィルタをプログラミングし、
第2フローフィルタは、異なる処理ノードの第2メモリにおける、第2ネットワークパケットを受信する第2メモリキューを指定し、
フロー管理モジュールはさらに、(iv)第2ネットワークパケットと関連付けられた第2転送情報を決定し、
第2転送情報は、コンピューティングデバイスの異なる処理ノードの第2ネットワークアダプタへ通信可能に結合される、第2ネットワークパケットが転送されることになるネットワークスイッチの第2ポートを識別し、
フロー管理モジュールはさらに、(v)決定された第2転送情報をネットワークスイッチへ送信し、
第2ネットワークパケットは、第2転送情報に少なくとも基づき、ネットワークスイッチにより転送される。
例31は、例27から30のいずれかに記載の主題を含み、
フロー管理モジュールはさらに、命令メッセージをコンピューティングデバイスへ送信し、
命令メッセージは、コンピューティングデバイスに、コンピューティングデバイスの複数の処理ノードのうち1または複数により他のアプリケーションを実行するよう命令する。
例32は、複数のネットワークフローを複数の処理リソースにアライメントするための方法を含み、
ネットワークコントローラにより、コンピューティングデバイスからアーキテクチャ情報を受信する段階を備え、
アーキテクチャ情報は、コンピューティングデバイスの複数の処理ノードのそれぞれのアーキテクチャを規定しており、
方法は、
ネットワークコントローラにより、およびネットワークスイッチから、ネットワークパケットと関連付けられた転送情報のリクエストを受信する段階と、
ネットワークコントローラにより、アーキテクチャ情報に少なくとも基づきネットワークパケットと関連付けられたネットワークフロー情報を決定する段階と
を備え、
ネットワークフロー情報は、コンピューティングデバイスの複数の処理ノードのうちネットワークパケットを処理するターゲットの処理ノードを、ターゲットの処理ノードにより実行されるアプリケーションに少なくとも基づき識別し、
方法は、ネットワークコントローラにより、決定されたネットワークフロー情報をコンピューティングデバイスへ送信して、ネットワークフロー情報に少なくとも基づきターゲットの処理ノードのネットワークアダプタにおいてフローフィルタをプログラミングする段階を備え、
フローフィルタは、ターゲットの処理ノードのメモリにおける、ネットワークパケットを受信するメモリキューを指定し、
方法は、ネットワークコントローラにより、ネットワークパケットと関連付けられた転送情報を決定し、
転送情報は、コンピューティングデバイスのターゲットの処理ノードのネットワークアダプタに通信可能に結合された、ネットワークパケットが転送されることになるネットワークスイッチのポートを識別し、
方法は、ネットワークコントローラにより、決定された転送情報をネットワークスイッチへ送信する段階を備え、
ネットワークパケットは、転送情報に少なくとも基づきネットワークスイッチにより転送される。
例33は、例32の主題を含み、
コンピューティングデバイスからアーキテクチャ情報を受信する段階は、各処理ノードにより実行される複数のアプリケーションを示すアプリケーションデータ、複数の処理ノードのそれぞれのプロセッサを示すプロセッサデータ、複数の処理ノードのそれぞれのプロセッサの複数の処理コアを示すプロセッサコアデータ、複数の処理ノードのそれぞれにおける割り当てられた複数のメモリキューを示すメモリキューデータ、または、複数の処理ノードのそれぞれの複数のネットワークアダプタの複数のポートを示すポートデータのうち少なくとも1つを受信する段階を含む。
例34は、例32および33のいずれかに記載の主題を含み、
コンピューティングデバイスからアーキテクチャ情報を受信する段階は、複数の処理ノードのそれぞれのプロセッサの各処理コアにより実行される複数のアプリケーションを示すアプリケーション実行データを受信する段階を含み、
ネットワークフロー情報を決定する段階は、アプリケーション実行データに少なくとも基づきネットワークパケットと関連付けられたネットワークフロー情報を決定する段階を含み、
ネットワークフロー情報は、コンピューティングデバイスの複数の処理ノードのうちネットワークパケットを処理するターゲットの処理ノードを、ターゲットの処理ノードの処理コアにより実行されるアプリケーションに少なくとも基づき識別する。
例35は、例32から34のいずれかに記載の主題を含み、
転送情報は第1転送情報を含み、
転送情報のリクエストは第1転送情報のリクエストを含み、
ネットワークパケットは第1ネットワークパケットを含み、
ネットワークフロー情報は第1ネットワークフロー情報を含み、
フローフィルタは第1フローフィルタを含み、
ターゲットの処理ノードのメモリは第1メモリを含み、
ターゲットの処理ノードのメモリにおけるメモリキューは、ターゲットの処理ノードの第1メモリにおける第1メモリキューを含み、
ターゲットの処理ノードのネットワークアダプタはターゲットの処理ノードの第1ネットワークアダプタを含み、
方法は、
ネットワークコントローラにより、およびネットワークスイッチから、第2ネットワークパケットと関連付けられた第2転送情報の第2リクエストを受信する段階と、
ネットワークコントローラにより、アーキテクチャ情報に少なくとも基づき、第2ネットワークパケットと関連付けられた第2ネットワークフロー情報を決定する段階と
をさらに備え、
第2ネットワークフロー情報は、コンピューティングデバイスの複数の処理ノードのうち第2ネットワークパケットを処理する異なる処理ノードを、異なる処理ノードにより実行される他のアプリケーションに少なくとも基づき識別し、
方法は、ネットワークコントローラにより、決定された第2ネットワークフロー情報をコンピューティングデバイスへ送信して、第2ネットワークフロー情報に少なくとも基づき異なる処理ノードの第2ネットワークアダプタにおける第2フローフィルタをプログラミングする段階をさらに備え、
第2フローフィルタは、異なる処理ノードの第2メモリにおける、第2ネットワークパケットを受信する第2メモリキューを指定し、
方法は、ネットワークコントローラにより、第2ネットワークパケットと関連付けられた第2転送情報を決定する段階をさらに備え、
第2転送情報は、コンピューティングデバイスの異なる処理ノードの第2ネットワークアダプタへ通信可能に結合される、第2ネットワークパケットが転送されることになるネットワークスイッチの第2ポートを識別し、
方法は、ネットワークコントローラにより、決定された第2転送情報をネットワークスイッチへ送信する段階をさらに備え、
第2ネットワークパケットは、第2転送情報に少なくとも基づき、ネットワークスイッチにより転送される。
例36は、例32から35のいずれかに記載の主題を含み、ネットワークコントローラにより、命令メッセージをコンピューティングデバイスへ送信する段階をさらに備え、
命令メッセージは、コンピューティングデバイスに、コンピューティングデバイスの複数の処理ノードのうち1または複数により他のアプリケーションを実行するよう命令する。
例37は、複数のネットワークフローを複数の処理リソースにアライメントするためのネットワークコントローラを含み、
ネットワークコントローラは、プロセッサと、複数の命令を格納したメモリとを含み、複数の命令はプロセッサにより実行されたときにネットワークコントローラに、例32から36のいずれかに記載の方法を実行させる。
例38は、1または複数のマシン可読媒体を含み、1または複数のマシン可読媒体には、実行されることに応答して、ネットワークコントローラが例32から36のいずれかに記載の方法を実行することになる複数の命令が格納されている。
例39は、複数のネットワークフローを複数の処理リソースにアライメントするためのネットワークコントローラを含み、
ネットワークコントローラは、
コンピューティングデバイスからアーキテクチャ情報を受信するための手段を備え、
アーキテクチャ情報は、コンピューティングデバイスの複数の処理ノードのそれぞれのアーキテクチャを規定しており、
ネットワークコントローラは、
ネットワークスイッチから、ネットワークパケットと関連付けられた転送情報のリクエストを受信するための手段と、
アーキテクチャ情報に少なくとも基づきネットワークパケットと関連付けられたネットワークフロー情報を決定するための手段と
を備え、
ネットワークフロー情報は、コンピューティングデバイスの複数の処理ノードのうちネットワークパケットを処理するターゲットの処理ノードを、ターゲットの処理ノードにより実行されるアプリケーションに少なくとも基づき識別し、
ネットワークコントローラは、決定されたネットワークフロー情報をコンピューティングデバイスへ送信して、ネットワークフロー情報に少なくとも基づきターゲットの処理ノードのネットワークアダプタにおいてフローフィルタをプログラミングするための手段を備え
フローフィルタは、ターゲットの処理ノードのメモリにおける、ネットワークパケットを受信するメモリキューを指定し、
ネットワークコントローラは、ネットワークパケットと関連付けられた転送情報を決定するための手段を備え、
転送情報は、コンピューティングデバイスのターゲットの処理ノードのネットワークアダプタに通信可能に結合された、ネットワークパケットが転送されることになるネットワークスイッチのポートを識別し、
ネットワークコントローラは、決定された転送情報をネットワークスイッチへ送信するための手段を備え、
ネットワークパケットは、転送情報に少なくとも基づきネットワークスイッチにより転送される。
例40は、例39の主題を含み、
コンピューティングデバイスからアーキテクチャ情報を受信するための手段は、各処理ノードにより実行される複数のアプリケーションを示すアプリケーションデータ、複数の処理ノードのそれぞれのプロセッサを示すプロセッサデータ、複数の処理ノードのそれぞれのプロセッサの複数の処理コアを示すプロセッサコアデータ、複数の処理ノードのそれぞれにおける割り当てられた複数のメモリキューを示すメモリキューデータ、または、複数の処理ノードのそれぞれの複数のネットワークアダプタの複数のポートを示すポートデータのうち少なくとも1つを受信するための手段を含む。
例41は、例39および40のいずれかに記載の主題を含み、
コンピューティングデバイスからアーキテクチャ情報を受信するための手段は、複数の処理ノードのそれぞれのプロセッサの各処理コアにより実行される複数のアプリケーションを示すアプリケーション実行データを受信するための手段を含み、
ネットワークフロー情報を決定するための手段は、アプリケーション実行データに少なくとも基づきネットワークパケットと関連付けられたネットワークフロー情報を決定するための手段を含み、
ネットワークフロー情報は、コンピューティングデバイスの複数の処理ノードのうちネットワークパケットを処理するターゲットの処理ノードを、ターゲットの処理ノードの処理コアにより実行されるアプリケーションに少なくとも基づき識別する。
例42は、例39から41のいずれかに記載の主題を含み、
転送情報は第1転送情報を含み、
転送情報のリクエストは第1転送情報のリクエストを含み、
ネットワークパケットは第1ネットワークパケットを含み、
ネットワークフロー情報は第1ネットワークフロー情報を含み、
フローフィルタは第1フローフィルタを含み、
ターゲットの処理ノードのメモリは第1メモリを含み、
ターゲットの処理ノードのメモリにおけるメモリキューは、ターゲットの処理ノードの第1メモリにおける第1メモリキューを含み、
ターゲットの処理ノードのネットワークアダプタはターゲットの処理ノードの第1ネットワークアダプタを含み、
ネットワークスイッチから、第2ネットワークパケットと関連付けられた第2転送情報の第2リクエストを受信するための手段と、
アーキテクチャ情報に少なくとも基づき、第2ネットワークパケットと関連付けられた第2ネットワークフロー情報を決定するための手段と
をさらに備え、
第2ネットワークフロー情報は、コンピューティングデバイスの複数の処理ノードのうち第2ネットワークパケットを処理する異なる処理ノードを、異なる処理ノードにより実行される他のアプリケーションに少なくとも基づき識別し、
決定された第2ネットワークフロー情報をコンピューティングデバイスへ送信して、第2ネットワークフロー情報に少なくとも基づき異なる処理ノードの第2ネットワークアダプタにおける第2フローフィルタをプログラミングするための手段と
を備え、
第2フローフィルタは、異なる処理ノードの第2メモリにおける、第2ネットワークパケットを受信する第2メモリキューを指定し、
ネットワークコントローラにより、第2ネットワークパケットと関連付けられた第2転送情報を決定するための手段を備え、
第2転送情報は、コンピューティングデバイスの異なる処理ノードの第2ネットワークアダプタへ通信可能に結合される、第2ネットワークパケットが転送されることになるネットワークスイッチの第2ポートを識別し、
決定された第2転送情報をネットワークスイッチへ送信するための手段を備え、
第2ネットワークパケットは、第2転送情報に少なくとも基づき、ネットワークスイッチにより転送される。
例43は、例39から42のいずれかに記載の主題を含み、命令メッセージをコンピューティングデバイスへ送信するための手段をさらに備え、
命令メッセージは、コンピューティングデバイスに、コンピューティングデバイスの複数の処理ノードのうち1または複数により他のアプリケーションを実行するよう命令する。
例44は、複数のネットワークフローを複数の処理リソースにアライメントするためのネットワークスイッチを含み、
ネットワークスイッチは、パケット転送モジュールを備え、
パケット転送モジュールは、(i)リモートコンピューティングデバイスからネットワークスイッチの第1ポートを介しネットワークパケットを受信し、(ii)受信されたネットワークパケットと関連付けられた転送情報のリクエストをネットワークコントローラへ送信し、(iii)ネットワークコントローラから転送情報を受信し、
転送情報は、受信されたネットワークパケットが転送されることになるネットワークスイッチの第2ポートを示しており、
パケット転送モジュールは、(iv)受信されたネットワークパケットをコンピューティングデバイスへの送信のために第2ポートへ転送し、
受信されたネットワークパケットは、コンピューティングデバイスの複数の処理ノードのうちのターゲットの処理ノードにより実行されるアプリケーションにより処理される。
例45は、例44の主題を含み、
接続情報をネットワークコントローラへ送信する接続管理モジュールをさらに備え、
接続情報は、ネットワークスイッチと、コンピューティングデバイスまたはリモートコンピューティングデバイスのうち少なくとも1つとの間のネットワークスイッチの1または複数のポートを介した1または複数のネットワーク接続を示す。
例46は、複数のネットワークフローを複数の処理リソースにアライメントするための方法を含み、
方法は、
ネットワークスイッチにより、ネットワークスイッチの第1ポートを介しリモートコンピューティングデバイスからネットワークパケットを受信する段階と、
ネットワークスイッチにより、受信されたネットワークパケットと関連付けられた転送情報のリクエストをネットワークコントローラへ送信する段階と、
ネットワークスイッチにより、ネットワークコントローラから転送情報を受信する段階と
を備え、
転送情報は、受信されたネットワークパケットが転送されることになるネットワークスイッチの第2ポートを示し、
方法は、ネットワークスイッチにより、受信されたネットワークパケットをコンピューティングデバイスへの送信のために第2ポートへ転送する段階を備え、
受信されたネットワークパケットは、コンピューティングデバイスの複数の処理ノードのうちのターゲットの処理ノードにより実行されるアプリケーションにより処理される。
例47は、例46の主題を含み、
ネットワークスイッチにより、接続情報をネットワークコントローラへ送信する段階をさらに備え、
接続情報は、ネットワークスイッチと、コンピューティングデバイスまたはリモートコンピューティングデバイスのうち少なくとも1つとの間のネットワークスイッチの1または複数のポートを介した1または複数のネットワーク接続を示す。
例48は、複数のネットワークフローを複数の処理リソースにアライメントするためのネットワークスイッチを含み、
ネットワークスイッチは、プロセッサと、複数の命令を格納したメモリとを含み、複数の命令はプロセッサにより実行されたときにネットワークスイッチに、例46または47のいずれかに記載の方法を実行させる。
例49は、1または複数のマシン可読媒体を含み、1または複数のマシン可読媒体には、実行されることに応答して、ネットワークスイッチが例46または47のいずれかに記載の方法を実行することになる複数の命令が格納されている。
例50は、複数のネットワークフローを複数の処理リソースにアライメントするためのネットワークスイッチを含み、
ネットワークスイッチは、
リモートコンピューティングデバイスからネットワークスイッチの第1ポートを介しネットワークパケットを受信するための手段と、
受信されたネットワークパケットと関連付けられた転送情報のリクエストをネットワークコントローラへ送信するための手段と、
ネットワークコントローラから転送情報を受信するための手段と
を備え
転送情報は、受信されたネットワークパケットが転送されることになるネットワークスイッチの第2ポートを示しており、
ネットワークスイッチは、受信されたネットワークパケットをコンピューティングデバイスへの送信のために第2ポートへ転送するための手段を備え、
受信されたネットワークパケットは、コンピューティングデバイスの複数の処理ノードのうちのターゲットの処理ノードにより実行されるアプリケーションにより処理される。
例51は、例50の主題を含み、
接続情報をネットワークコントローラへ送信するための手段をさらに備え、
接続情報は、ネットワークスイッチと、コンピューティングデバイスまたはリモートコンピューティングデバイスのうち少なくとも1つとの間のネットワークスイッチの1または複数のポートを介した1または複数のネットワーク接続を示す。

Claims (25)

  1. 複数のネットワークフローを複数の処理リソースにアライメントするためのコンピューティングデバイスであり、
    アーキテクチャ情報をネットワークコントローラへ送信するアーキテクチャ通知モジュールを備え、
    前記アーキテクチャ情報は、前記コンピューティングデバイスの複数の処理ノードの各処理ノードのアーキテクチャを規定しており、
    各処理ノードはプロセッサと、メモリと、ネットワークアダプタとを有し、
    前記コンピューティングデバイスは、ローカルフロー管理モジュールを備え、
    前記ローカルフロー管理モジュールは、(i)前記ネットワークコントローラからネットワークフロー情報を受信し、
    前記ネットワークフロー情報はネットワークパケットと関連付けられ、前記複数の処理ノードのうち前記ネットワークパケットを処理するターゲットの処理ノードを、前記ターゲットの処理ノードにより実行されるアプリケーションに少なくとも基づき識別し、
    前記ローカルフロー管理モジュールは、(ii)前記ネットワークフロー情報に少なくとも基づき、前記ターゲットの処理ノードの前記ネットワークアダプタにおいてフローフィルタを、前記ターゲットの処理ノードの前記メモリにおける、前記ネットワークパケットを受信するメモリキューを指定するようプログラミングし、
    前記ターゲットの処理ノードの前記ネットワークアダプタはネットワークスイッチから前記ネットワークパケットを受信し、前記ネットワークパケットは、前記ターゲットの処理ノードにより実行される前記アプリケーションにより処理される、コンピューティングデバイス。
  2. 前記アーキテクチャ情報は、前記複数の処理ノードの各処理ノードにより実行される複数のアプリケーションを示す、請求項1に記載のコンピューティングデバイス。
  3. 各処理ノードの前記プロセッサは複数の処理コアを含み、
    前記アーキテクチャ情報は、各処理ノードの各プロセッサの各処理コアにより実行される前記複数のアプリケーションを示すデータを含み、
    前記ネットワークフロー情報を受信することは、前記ターゲットの処理ノードの処理コアにより実行されるアプリケーションに少なくとも基づき、前記ネットワークパケットを処理する前記ターゲットの処理ノードを識別するネットワークフロー情報を前記ネットワークコントローラから受信することを含む、請求項2に記載のコンピューティングデバイス。
  4. 前記ターゲットの処理ノードの前記ネットワークアダプタはさらに、(i)前記ターゲットの処理ノードの前記メモリにおける前記メモリキューを前記ネットワークアダプタのポートに割り当て、
    前記ネットワークスイッチから前記ネットワークパケットを受信することは、前記ネットワークアダプタの前記ポートを介し前記ネットワークスイッチから前記ネットワークパケットを受信することを含み、
    前記ターゲットの処理ノードの前記ネットワークアダプタはさらに、(ii)受信された前記ネットワークパケットを、前記ネットワークアダプタの前記ポートに割り当てられた前記ターゲットの処理ノードの前記メモリにおける前記メモリキューにコピーする、請求項1から3のいずれか一項に記載のコンピューティングデバイス。
  5. 前記ターゲットの処理ノードにより実行される前記アプリケーションは、(i)前記受信されたネットワークパケットが、前記ターゲットの処理ノードの前記メモリにおける前記メモリキューから取得されるべく利用可能であるか決定し、(ii)前記受信されたネットワークパケットが前記メモリキューから取得されるべく利用可能であるとの決定に応答して、前記ターゲットの処理ノードの前記メモリにおける前記メモリキューから前記受信されたネットワークパケットを取得する、請求項4に記載のコンピューティングデバイス。
  6. 前記ネットワークパケットが前記メモリキューから取得されるべく利用可能であるか決定することは、(i)リファレンスポーリングインターバルの関数として前記ターゲットの処理ノードの前記メモリにおける前記メモリキューをポーリングすること、または、(ii)前記ネットワークパケットが前記メモリキューから取得されるべく利用可能であることを示す割込みを受信することのうち少なくとも1つを含む、請求項5に記載のコンピューティングデバイス。
  7. 前記ネットワークパケットは第1ネットワークパケットを含み、
    前記ネットワークフロー情報は第1ネットワークフロー情報を含み、
    前記フローフィルタは第1フローフィルタを含み、
    前記ターゲットの処理ノードの前記メモリは第1メモリを含み、
    前記ターゲットの処理ノードの前記メモリにおける前記メモリキューは前記ターゲットの処理ノードの前記第1メモリにおける第1メモリキューを含み、
    前記ターゲットの処理ノードの前記ネットワークアダプタは前記ターゲットの処理ノードの第1ネットワークアダプタを含み、
    前記ローカルフロー管理モジュールはさらに、(i)前記ネットワークコントローラから第2ネットワークフロー情報を受信し、
    前記第2ネットワークフロー情報は第2ネットワークパケットと関連付けられ、前記複数の処理ノードのうち前記第2ネットワークパケットを処理する異なる処理ノードを、前記異なる処理ノードにより実行される他のアプリケーションに少なくとも基づき識別し、
    前記ローカルフロー管理モジュールはさらに、(ii)前記第2ネットワークフロー情報に少なくとも基づき、前記異なる処理ノードの第2ネットワークアダプタにおいて第2フローフィルタを、前記異なる処理ノードの第2メモリにおける、前記第2ネットワークパケットを受信する第2メモリキューを指定するようプログラミングし、
    前記異なる処理ノードの前記第2ネットワークアダプタは前記ネットワークスイッチから前記第2ネットワークパケットを受信し、
    前記第2ネットワークパケットは、前記異なる処理ノードにより実行される前記他のアプリケーションにより処理される、請求項4に記載のコンピューティングデバイス。
  8. 前記ターゲットの処理ノードは、前記ネットワークコントローラから受信された複数の命令に少なくとも基づき他のアプリケーションを実行する、請求項1から3のいずれか一項に記載のコンピューティングデバイス。
  9. 複数のネットワークフローを複数の処理リソースにアライメントするための方法であり、
    複数の処理ノードを有するコンピューティングデバイスにより、アーキテクチャ情報をネットワークコントローラへ送信する段階を備え、
    前記アーキテクチャ情報は、各処理ノードのアーキテクチャを規定しており、
    各処理ノードはプロセッサと、メモリと、ネットワークアダプタとを含み、
    前記方法は、前記コンピューティングデバイスにより、前記ネットワークコントローラからネットワークフロー情報を受信する段階を備え、
    前記ネットワークフロー情報はネットワークパケットと関連付けられ、前記複数の処理ノードのうち前記ネットワークパケットを処理するターゲットの処理ノードを、前記ターゲットの処理ノードにより実行されるアプリケーションに少なくとも基づき識別し、
    前記方法は、
    前記コンピューティングデバイスにより、前記ネットワークフロー情報に少なくとも基づき、前記ターゲットの処理ノードの前記ネットワークアダプタにおいてフローフィルタを、前記ターゲットの処理ノードの前記メモリにおける、前記ネットワークパケットを受信するメモリキューを指定するようプログラミングする段階と、
    前記ターゲットの処理ノードの前記ネットワークアダプタにより、ネットワークスイッチから前記ネットワークパケットを受信する段階と
    を備え、
    前記ネットワークパケットは、前記ターゲットの処理ノードにより実行される前記アプリケーションにより処理される、方法。
  10. 前記アーキテクチャ情報は、前記複数の処理ノードの各処理ノードにより実行される複数のアプリケーションを示す、請求項9に記載の方法。
  11. 前記ターゲットの処理ノードの前記ネットワークアダプタにより、前記ターゲットの処理ノードの前記メモリにおける前記メモリキューを前記ネットワークアダプタのポートに割り当てる段階をさらに備え、
    前記ネットワークスイッチから前記ネットワークパケットを受信する段階は、前記ネットワークアダプタの前記ポートを介し前記ネットワークスイッチから前記ネットワークパケットを受信する段階を有し、
    前記方法は、前記ターゲットの処理ノードの前記ネットワークアダプタにより、受信された前記ネットワークパケットを、前記ネットワークアダプタの前記ポートに割り当てられた前記ターゲットの処理ノードの前記メモリにおける前記メモリキューへコピーする段階をさらに備える、請求項9に記載の方法。
  12. 前記ターゲットの処理ノードにより実行される前記アプリケーションにより、前記受信されたネットワークパケットが、前記ターゲットの処理ノードの前記メモリにおける前記メモリキューから取得されるべく利用可能であるか決定する段階と、
    前記ターゲットの処理ノードにより実行される前記アプリケーションにより、前記受信されたネットワークパケットが前記メモリキューから取得されるべく利用可能であるとの決定に応答して、前記ターゲットの処理ノードの前記メモリにおける前記メモリキューから前記受信されたネットワークパケットを取得する段階と
    をさらに備える、請求項11に記載の方法。
  13. 前記ネットワークパケットは第1ネットワークパケットを含み、
    前記ネットワークフロー情報は第1ネットワークフロー情報を含み、
    前記フローフィルタは第1フローフィルタを含み、
    前記ターゲットの処理ノードの前記メモリは第1メモリを含み、
    前記ターゲットの処理ノードの前記メモリにおける前記メモリキューは前記ターゲットの処理ノードの前記第1メモリにおける第1メモリキューを含み、
    前記ターゲットの処理ノードの前記ネットワークアダプタは前記ターゲットの処理ノードの第1ネットワークアダプタを含み、
    前記方法は、
    前記コンピューティングデバイスにより、前記ネットワークコントローラから第2ネットワークフロー情報を受信する段階をさらに備え、
    前記第2ネットワークフロー情報は第2ネットワークパケットと関連付けられ、前記複数の処理ノードのうち前記第2ネットワークパケットを処理する異なる処理ノードを、前記異なる処理ノードにより実行される他のアプリケーションに少なくとも基づき識別し、
    前記方法は、
    前記コンピューティングデバイスにより、前記第2ネットワークフロー情報に少なくとも基づき、前記異なる処理ノードの第2ネットワークアダプタにおいて第2フローフィルタを、前記異なる処理ノードの第2メモリにおける、前記第2ネットワークパケットを受信する第2メモリキューを指定するようプログラミングする段階と、
    前記異なる処理ノードの前記第2ネットワークアダプタにより、前記ネットワークスイッチから前記第2ネットワークパケットを受信する段階と
    をさらに備え、
    前記第2ネットワークパケットは、前記異なる処理ノードにより実行される前記他のアプリケーションにより処理される、請求項11に記載の方法。
  14. コンピューティングデバイスに、請求項9から13のいずれか一項に記載の方法を実行させるプログラム。
  15. 複数のネットワークフローを複数の処理リソースにアライメントするためのネットワークコントローラであり、
    コンピューティングデバイスからアーキテクチャ情報を受信するアーキテクチャ管理モジュールを備え、
    前記アーキテクチャ情報は、前記コンピューティングデバイスの複数の処理ノードのそれぞれのアーキテクチャを規定しており、
    前記ネットワークコントローラは、フロー管理モジュールを備え、
    前記フロー管理モジュールは、(i)ネットワークスイッチから、ネットワークパケットと関連付けられた転送情報のリクエストを受信し、(ii)前記アーキテクチャ情報に少なくとも基づき前記ネットワークパケットと関連付けられたネットワークフロー情報を決定し、
    前記ネットワークフロー情報は、前記コンピューティングデバイスの前記複数の処理ノードのうち前記ネットワークパケットを処理するターゲットの処理ノードを、前記ターゲットの処理ノードにより実行されるアプリケーションに少なくとも基づき識別し、
    前記フロー管理モジュールは、(iii)決定された前記ネットワークフロー情報を前記コンピューティングデバイスへ送信して、前記ネットワークフロー情報に少なくとも基づき前記ターゲットの処理ノードのネットワークアダプタにおいてフローフィルタをプログラミングし、
    前記フローフィルタは、前記ターゲットの処理ノードのメモリにおける、前記ネットワークパケットを受信するメモリキューを指定し、
    前記フロー管理モジュールは、(iv)前記ネットワークパケットと関連付けられた前記転送情報を決定し、
    前記転送情報は、前記コンピューティングデバイスの前記ターゲットの処理ノードの前記ネットワークアダプタに通信可能に結合された、前記ネットワークパケットが転送されることになる前記ネットワークスイッチのポートを識別し、
    前記フロー管理モジュールは、(v)決定された前記転送情報を前記ネットワークスイッチへ送信し、
    前記ネットワークパケットは、前記転送情報に少なくとも基づき前記ネットワークスイッチにより転送される、ネットワークコントローラ。
  16. 前記コンピューティングデバイスから前記アーキテクチャ情報を受信することは、各処理ノードにより実行される複数のアプリケーションを示すアプリケーションデータ、前記複数の処理ノードのそれぞれのプロセッサを示すプロセッサデータ、前記複数の処理ノードのそれぞれの前記プロセッサの複数の処理コアを示すプロセッサコアデータ、前記複数の処理ノードのそれぞれにおける割り当てられた複数のメモリキューを示すメモリキューデータ、または前記複数の処理ノードのそれぞれの複数のネットワークアダプタの複数のポートを示すポートデータのうち少なくとも1つを受信することを含む、請求項15に記載のネットワークコントローラ。
  17. 前記コンピューティングデバイスから前記アーキテクチャ情報を受信することは、前記複数の処理ノードのそれぞれのプロセッサの各処理コアにより実行される複数のアプリケーションを示すアプリケーション実行データを受信することを含み、
    前記ネットワークフロー情報を決定することは、前記アプリケーション実行データに少なくとも基づき前記ネットワークパケットと関連付けられたネットワークフロー情報を決定することを含み、
    前記ネットワークフロー情報は、前記コンピューティングデバイスの前記複数の処理ノードのうち前記ネットワークパケットを処理する前記ターゲットの処理ノードを、前記ターゲットの処理ノードの処理コアにより実行されるアプリケーションに少なくとも基づき識別する、請求項15に記載のネットワークコントローラ。
  18. 前記転送情報は第1転送情報を含み、
    転送情報の前記リクエストは前記第1転送情報のリクエストを含み、
    前記ネットワークパケットは第1ネットワークパケットを含み、
    前記ネットワークフロー情報は第1ネットワークフロー情報を含み、
    前記フローフィルタは第1フローフィルタを含み、
    前記ターゲットの処理ノードの前記メモリは第1メモリを含み、
    前記ターゲットの処理ノードの前記メモリにおける前記メモリキューは、前記ターゲットの処理ノードの前記第1メモリにおける第1メモリキューを含み、
    前記ターゲットの処理ノードの前記ネットワークアダプタは前記ターゲットの処理ノードの第1ネットワークアダプタを含み、
    前記フロー管理モジュールはさらに、(i)前記ネットワークスイッチから、第2ネットワークパケットと関連付けられた第2転送情報の第2リクエストを受信し、(ii)前記アーキテクチャ情報に少なくとも基づき、前記第2ネットワークパケットと関連付けられた第2ネットワークフロー情報を決定し、
    前記第2ネットワークフロー情報は、前記コンピューティングデバイスの前記複数の処理ノードのうち前記第2ネットワークパケットを処理する異なる処理ノードを、前記異なる処理ノードにより実行される他のアプリケーションに少なくとも基づき識別し、
    前記フロー管理モジュールはさらに、(iii)決定された前記第2ネットワークフロー情報を前記コンピューティングデバイスへ送信して、前記第2ネットワークフロー情報に少なくとも基づき前記異なる処理ノードの第2ネットワークアダプタにおける第2フローフィルタをプログラミングし、
    前記第2フローフィルタは、前記異なる処理ノードの第2メモリにおける、前記第2ネットワークパケットを受信する第2メモリキューを指定し、
    前記フロー管理モジュールはさらに、(iv)前記第2ネットワークパケットと関連付けられた前記第2転送情報を決定し、
    前記第2転送情報は、前記コンピューティングデバイスの前記異なる処理ノードの前記第2ネットワークアダプタへ通信可能に結合される、前記第2ネットワークパケットが転送されることになる前記ネットワークスイッチの第2ポートを識別し、
    前記フロー管理モジュールはさらに、(v)決定された前記第2転送情報を前記ネットワークスイッチへ送信し、
    前記第2ネットワークパケットは、前記第2転送情報に少なくとも基づき、前記ネットワークスイッチにより転送される、請求項15から17のいずれか一項に記載のネットワークコントローラ。
  19. 前記フロー管理モジュールはさらに、命令メッセージを前記コンピューティングデバイスへ送信し、
    前記命令メッセージは、前記コンピューティングデバイスに、前記コンピューティングデバイスの前記複数の処理ノードのうち1または複数により他のアプリケーションを実行するよう命令する、請求項15から17のいずれか一項に記載のネットワークコントローラ。
  20. 複数のネットワークフローを複数の処理リソースにアライメントするための方法であり、
    ネットワークコントローラにより、コンピューティングデバイスからアーキテクチャ情報を受信する段階を備え、
    前記アーキテクチャ情報は、前記コンピューティングデバイスの複数の処理ノードのそれぞれのアーキテクチャを規定しており、
    前記方法は、
    前記ネットワークコントローラにより、およびネットワークスイッチから、ネットワークパケットと関連付けられた転送情報のリクエストを受信する段階と、
    前記ネットワークコントローラにより、前記アーキテクチャ情報に少なくとも基づき前記ネットワークパケットと関連付けられたネットワークフロー情報を決定する段階と
    を備え、
    前記ネットワークフロー情報は、前記コンピューティングデバイスの前記複数の処理ノードのうち前記ネットワークパケットを処理するターゲットの処理ノードを、前記ターゲットの処理ノードにより実行されるアプリケーションに少なくとも基づき識別し、
    前記方法は、前記ネットワークコントローラにより、決定された前記ネットワークフロー情報を前記コンピューティングデバイスへ送信して、前記ネットワークフロー情報に少なくとも基づき前記ターゲットの処理ノードのネットワークアダプタにおいてフローフィルタをプログラミングする段階を備え、
    前記フローフィルタは、前記ターゲットの処理ノードのメモリにおける、前記ネットワークパケットを受信するメモリキューを指定し、
    前記方法は、前記ネットワークコントローラにより、前記ネットワークパケットと関連付けられた前記転送情報を決定し、
    前記転送情報は、前記コンピューティングデバイスの前記ターゲットの処理ノードの前記ネットワークアダプタに通信可能に結合された、前記ネットワークパケットが転送されることになる前記ネットワークスイッチのポートを識別し、
    前記方法は、前記ネットワークコントローラにより、決定された前記転送情報を前記ネットワークスイッチへ送信する段階を備え、
    前記ネットワークパケットは、前記転送情報に少なくとも基づき前記ネットワークスイッチにより転送される、方法。
  21. 前記コンピューティングデバイスから前記アーキテクチャ情報を受信する段階は、前記複数の処理ノードのそれぞれのプロセッサの各処理コアにより実行される複数のアプリケーションを示すアプリケーション実行データを受信する段階を含み、
    前記ネットワークフロー情報を決定する段階は、前記アプリケーション実行データに少なくとも基づき前記ネットワークパケットと関連付けられたネットワークフロー情報を決定する段階を含み、
    前記ネットワークフロー情報は、前記コンピューティングデバイスの前記複数の処理ノードのうち前記ネットワークパケットを処理する前記ターゲットの処理ノードを、前記ターゲットの処理ノードの処理コアにより実行されるアプリケーションに少なくとも基づき識別する、請求項20に記載の方法。
  22. 前記転送情報は第1転送情報を含み、
    転送情報の前記リクエストは前記第1転送情報のリクエストを含み、
    前記ネットワークパケットは第1ネットワークパケットを含み、
    前記ネットワークフロー情報は第1ネットワークフロー情報を含み、
    前記フローフィルタは第1フローフィルタを含み、
    前記ターゲットの処理ノードの前記メモリは第1メモリを含み、
    前記ターゲットの処理ノードの前記メモリにおける前記メモリキューは、前記ターゲットの処理ノードの前記第1メモリにおける第1メモリキューを含み、
    前記ターゲットの処理ノードの前記ネットワークアダプタは前記ターゲットの処理ノードの第1ネットワークアダプタを含み、
    前記方法は、
    前記ネットワークコントローラにより、および前記ネットワークスイッチから、第2ネットワークパケットと関連付けられた第2転送情報の第2リクエストを受信する段階と、
    前記ネットワークコントローラにより、前記アーキテクチャ情報に少なくとも基づき、前記第2ネットワークパケットと関連付けられた第2ネットワークフロー情報を決定する段階と
    をさらに備え、
    前記第2ネットワークフロー情報は、前記コンピューティングデバイスの前記複数の処理ノードのうち前記第2ネットワークパケットを処理する異なる処理ノードを、前記異なる処理ノードにより実行される他のアプリケーションに少なくとも基づき識別し、
    前記方法は、前記ネットワークコントローラにより、決定された前記第2ネットワークフロー情報を前記コンピューティングデバイスへ送信して、前記第2ネットワークフロー情報に少なくとも基づき前記異なる処理ノードの第2ネットワークアダプタにおける第2フローフィルタをプログラミングする段階をさらに備え、
    前記第2フローフィルタは、前記異なる処理ノードの第2メモリにおける、前記第2ネットワークパケットを受信する第2メモリキューを指定し、
    前記方法は、前記ネットワークコントローラにより、前記第2ネットワークパケットと関連付けられた前記第2転送情報を決定する段階をさらに備え、
    前記第2転送情報は、前記コンピューティングデバイスの前記異なる処理ノードの前記第2ネットワークアダプタへ通信可能に結合される、前記第2ネットワークパケットが転送されることになる前記ネットワークスイッチの第2ポートを識別し、
    前記方法は、前記ネットワークコントローラにより、決定された前記第2転送情報を前記ネットワークスイッチへ送信する段階をさらに備え、
    前記第2ネットワークパケットは、前記第2転送情報に少なくとも基づき、前記ネットワークスイッチにより転送される、請求項20に記載の方法。
  23. ネットワークコントローラに、請求項20から22のいずれか一項に記載の方法を実行させるプログラム。
  24. 複数のネットワークフローを複数の処理リソースにアライメントするためのネットワークスイッチであり、
    パケット転送モジュールを備え、
    前記パケット転送モジュールは、(i)リモートコンピューティングデバイスから前記ネットワークスイッチの第1ポートを介しネットワークパケットを受信し、(ii)受信された前記ネットワークパケットと関連付けられた転送情報のリクエストをネットワークコントローラへ送信し、(iii)前記ネットワークコントローラから前記転送情報を受信し、
    前記ネットワークコントローラは、コンピューティングデバイスの複数の処理ノードのそれぞれのアーキテクチャを規定するアーキテクチャ情報に少なくとも基づいて、前記ネットワークパケットと関連付けられたネットワークフロー情報を決定し、前記ネットワークフロー情報に少なくとも基づいて、前記ネットワークパケットと関連付けられた前記転送情報を決定して前記ネットワークスイッチに送信し、
    前記ネットワークフロー情報は、前記コンピューティングデバイスの前記複数の処理ノードのうち前記ネットワークパケットを処理するターゲットの処理ノードを、前記ターゲットの処理ノードにより実行されるアプリケーションに少なくとも基づき識別し、
    前記ネットワークフロー情報は前記コンピューティングデバイスへ送信されて、前記ターゲットの処理ノードのメモリにおける、前記ネットワークパケットを受信するメモリキューを指定するフローフィルタを、前記ターゲットの処理ノードのネットワークアダプタにおいてプログラミングするのに用いられ、
    前記転送情報は、前記受信されたネットワークパケットが転送されることになる前記ネットワークスイッチの第2ポートを示しており、
    前記パケット転送モジュールは、(iv)前記受信されたネットワークパケットをコンピューティングデバイスへの送信のために前記第2ポートへ転送し、
    前記受信されたネットワークパケットは、前記コンピューティングデバイスの複数の処理ノードのうちのターゲットの処理ノードにより実行されるアプリケーションにより処理される、ネットワークスイッチ。
  25. 接続情報を前記ネットワークコントローラへ送信する接続管理モジュールをさらに備え、
    前記接続情報は、前記ネットワークスイッチと、前記コンピューティングデバイスまたは前記リモートコンピューティングデバイスのうち少なくとも1つとの間の前記ネットワークスイッチの1または複数のポートを介した1または複数のネットワーク接続を示す、請求項24に記載のネットワークスイッチ。
JP2015141757A 2014-08-25 2015-07-16 ネットワークフローを処理リソースにアライメントするための技術 Active JP6116072B2 (ja)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US14/467,917 2014-08-25
US14/467,917 US10200292B2 (en) 2014-08-25 2014-08-25 Technologies for aligning network flows to processing resources

Publications (2)

Publication Number Publication Date
JP2016046806A JP2016046806A (ja) 2016-04-04
JP6116072B2 true JP6116072B2 (ja) 2017-04-19

Family

ID=53716332

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2015141757A Active JP6116072B2 (ja) 2014-08-25 2015-07-16 ネットワークフローを処理リソースにアライメントするための技術

Country Status (6)

Country Link
US (3) US10200292B2 (ja)
EP (1) EP2991306B1 (ja)
JP (1) JP6116072B2 (ja)
KR (1) KR101724552B1 (ja)
CN (1) CN105391648B (ja)
TW (1) TWI589136B (ja)

Families Citing this family (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11324022B1 (en) 2014-10-06 2022-05-03 Sprint Spectrum L.P. Method and system for selecting a carrier on which to schedule communications of a type of bearer traffic
US9807766B1 (en) * 2015-01-30 2017-10-31 Sprint Spectrum L.P. Method and system for component carrier selection based on content type
KR20170056879A (ko) * 2015-11-16 2017-05-24 한국전자통신연구원 Sdn 다중 오케스트레이터
CN106936739B (zh) * 2015-12-30 2020-02-11 新华三技术有限公司 一种报文转发方法及装置
KR20170087602A (ko) * 2016-01-21 2017-07-31 현대자동차주식회사 네트워크에서 동작 모드의 전환 방법
US10142231B2 (en) * 2016-03-31 2018-11-27 Intel Corporation Technologies for network I/O access
US10237169B2 (en) * 2016-04-01 2019-03-19 Intel Corporation Technologies for quality of service based throttling in fabric architectures
TWI646805B (zh) * 2016-11-23 2019-01-01 財團法人資訊工業策進會 網路通訊協定轉譯系統及方法
KR102078744B1 (ko) * 2018-03-13 2020-02-19 (주) 시스메이트 멀티 코어 프로세서 및 범용 네트워크 컨트롤러 하이브리드 구조의 네트워크 인터페이스 카드
US11042416B2 (en) * 2019-03-06 2021-06-22 Google Llc Reconfigurable computing pods using optical networks

Family Cites Families (26)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6865160B1 (en) * 1998-05-04 2005-03-08 Hewlett-Packard Development Company, L.P. Broadcast tree determination in load balancing switch protocols
US6338078B1 (en) 1998-12-17 2002-01-08 International Business Machines Corporation System and method for sequencing packets for multiprocessor parallelization in a computer network system
US8180918B2 (en) * 2003-03-07 2012-05-15 Tria Network Systems, LLC Multiplexing and congestion control
US7765405B2 (en) 2005-02-25 2010-07-27 Microsoft Corporation Receive side scaling with cryptographically secure hashing
JP2007265089A (ja) * 2006-03-29 2007-10-11 Fujitsu Ltd ソフトウェア保守支援プログラム,処理方法および装置
US7756027B1 (en) * 2007-06-13 2010-07-13 Juniper Networks, Inc. Automatic configuration of virtual network switches
CN101689158B (zh) 2007-07-09 2012-06-06 惠普发展公司,有限责任合伙企业 用于多核处理器的数据分组处理方法
US20090300209A1 (en) * 2008-06-03 2009-12-03 Uri Elzur Method and system for path based network congestion management
US8355337B2 (en) * 2009-01-28 2013-01-15 Headwater Partners I Llc Network based service profile management with user preference, adaptive policy, network neutrality, and user privacy
US20110004597A1 (en) * 2009-03-16 2011-01-06 Yehiel Engel System and method for content aware routing of data within a platform hub
US9098335B2 (en) * 2009-12-23 2015-08-04 Citrix Systems, Inc. Systems and methods for managing spillover limits in a multi-core system
US8295305B2 (en) * 2009-12-30 2012-10-23 International Business Machines Corporation Dual scheduling of work from multiple sources to multiple sinks using source and sink attributes to achieve fairness and processing efficiency
US9680750B2 (en) * 2010-07-06 2017-06-13 Nicira, Inc. Use of tunnels to hide network addresses
JP5808700B2 (ja) 2012-03-05 2015-11-10 株式会社Nttドコモ 通信制御装置、通信制御システム、仮想化サーバ管理装置、スイッチ装置および通信制御方法
US9143557B2 (en) * 2012-06-27 2015-09-22 Juniper Networks, Inc. Feedback loop for service engineered paths
US8929220B2 (en) * 2012-08-24 2015-01-06 Advanced Micro Devices, Inc. Processing system using virtual network interface controller addressing as flow control metadata
US20140162903A1 (en) 2012-10-31 2014-06-12 Purdue Research Foundation Metabolite Biomarkers For Forecasting The Outcome of Preoperative Chemotherapy For Breast Cancer Treatment
TWI487331B (zh) 2012-12-18 2015-06-01 Wistron Corp 管理網路傳輸順序之方法及其非揮發性電腦可讀媒體
US10057387B2 (en) * 2012-12-26 2018-08-21 Realtek Singapore Pte Ltd Communication traffic processing architectures and methods
US9450817B1 (en) * 2013-03-15 2016-09-20 Juniper Networks, Inc. Software defined network controller
US9485187B2 (en) * 2013-07-08 2016-11-01 Futurewei Technologies, Inc. Intelligent software-defined networking based service paths
US9787586B2 (en) * 2013-10-24 2017-10-10 University Of Houston System Location-based network routing
US10009287B2 (en) * 2013-12-26 2018-06-26 Huawei Technologies Co., Ltd. Hierarchical software-defined network traffic engineering controller
US9588923B2 (en) * 2014-01-24 2017-03-07 Applied Micro Circuits Corporation Flow pinning in a server on a chip
US9825860B2 (en) * 2014-05-30 2017-11-21 Futurewei Technologies, Inc. Flow-driven forwarding architecture for information centric networks
US20170318082A1 (en) * 2016-04-29 2017-11-02 Qualcomm Incorporated Method and system for providing efficient receive network traffic distribution that balances the load in multi-core processor systems

Also Published As

Publication number Publication date
US20190158412A1 (en) 2019-05-23
US20160057066A1 (en) 2016-02-25
JP2016046806A (ja) 2016-04-04
EP2991306B1 (en) 2017-08-23
CN105391648B (zh) 2019-06-04
US20200389408A1 (en) 2020-12-10
TW201630384A (zh) 2016-08-16
KR20160024747A (ko) 2016-03-07
US11792132B2 (en) 2023-10-17
US10757031B2 (en) 2020-08-25
EP2991306A1 (en) 2016-03-02
CN105391648A (zh) 2016-03-09
TWI589136B (zh) 2017-06-21
US10200292B2 (en) 2019-02-05
KR101724552B1 (ko) 2017-04-07

Similar Documents

Publication Publication Date Title
JP6116072B2 (ja) ネットワークフローを処理リソースにアライメントするための技術
US9838300B2 (en) Temperature sensitive routing of data in a computer system
US10257066B2 (en) Interconnect congestion control in a storage grid
US9473415B2 (en) QoS in a system with end-to-end flow control and QoS aware buffer allocation
CN107005484B (zh) 一种用于进行自适应数据分组路由的方法和网络设备
US9276760B2 (en) Directed route load/store packets for distributed switch initialization
US9455916B2 (en) Method and system for changing path and controller thereof
US20140258577A1 (en) Wire Level Virtualization Over PCI-Express
US10091063B2 (en) Technologies for directed power and performance management
US20220045969A1 (en) Mapping nvme-over-fabric packets using virtual output queues
CN107786448B (zh) 建立业务流的转发路径的方法和装置
US10715437B2 (en) Deadline driven packet prioritization for IP networks
US20130262735A1 (en) Data processing apparatus, computation device, control method for data processing apparatus
US10560527B2 (en) Network service chains using hardware logic devices in an information handling system
US11271897B2 (en) Electronic apparatus for providing fast packet forwarding with reference to additional network address translation table
WO2020184381A1 (ja) 処理装置、情報処理システム、情報処理方法、及びプログラム
JP2012142824A (ja) ネットワーク装置、通信システム及びそれらに用いるデータ転送方法

Legal Events

Date Code Title Description
A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20160725

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20160809

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20161027

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20170221

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20170317

R150 Certificate of patent or registration of utility model

Ref document number: 6116072

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250