(57)【要約】      （修正有）【課題】アクセラレートされたＱＵＩＣパケット処理の技術を提供する。【解決手段】コンピューティングデバイスは、ネットワークコントローラをＱＵＩＣ接続に関連づけられた暗号化キーでプログラムし、ＱＵＩＣパケットをネットワークコントローラに渡すネットワークコントローラドライバである。ＱＵＩＣパケットは、ＱＵＩＣヘッダと平文ペイロードとを含むＵＤＰパケットを含み、ＱＵＩＣ接続に関連づけられるネットワークコントローラドライバを含む。ネットワークコントローラは、ＱＵＩＣパケットの平文ペイロードを暗号化キーで暗号化してＱＵＩＣパケットの暗号化されたペイロードを生成する暗号アクセラレータを含み、暗号化されたペイロードを含むＱＵＩＣパケットをＱＵＩＣ接続に関連づけられたリモートコンピューティングデバイスに送信する。【選択図】図１
2019161641.tif 000002
【特許請求の範囲】
【請求項１】
アクセラレートされたパケット処理のためのコンピューティングデバイスであって、
ネットワークコントローラと、
（ｉ）前記ネットワークコントローラをＱＵＩＣ接続に関連づけられた暗号化キーでプログラムし、（ｉｉ）第１のＱＵＩＣパケットを前記ネットワークコントローラに渡すネットワークコントローラドライバであり、前記第１のＱＵＩＣパケットは、ＱＵＩＣヘッダと平文ペイロードとを含むＵＤＰパケットを含み、前記第１のＱＵＩＣパケットは前記ＱＵＩＣ接続に関連づけられる、ネットワークコントローラドライバと、を含み、
前記ネットワークコントローラは、前記第１のＱＵＩＣパケットの前記平文ペイロードを前記暗号化キーで暗号化して前記第１のＱＵＩＣパケットの暗号化されたペイロードを生成する暗号アクセラレータを含み、
前記ネットワークコントローラは、前記平文ペイロードの暗号化に応答して、前記暗号化されたペイロードを含む前記第１のＱＵＩＣパケットを前記ＱＵＩＣ接続に関連づけられたリモートコンピューティングデバイスに送信する、コンピューティングデバイス。
【請求項２】
前記第１のＱＵＩＣパケットの前記平文ペイロードを暗号化することは、前記平文ペイロードをアプリケーションレイヤ暗号化プロトコルで暗号化することを含む、請求項１に記載のコンピューティングデバイス。
【請求項３】
前記ネットワークコントローラは、前記第１のＱＵＩＣパケットを複数のセグメント化されたＱＵＩＣパケットにセグメント化する大容量送信オフロードアクセラレータをさらに含み、前記セグメント化されたＱＵＩＣパケットの各々は平文ペイロードを含み、所定のサイズ以下であり、
前記平文ペイロードを暗号化することは、前記セグメント化されたＱＵＩＣパケットの各々の前記平文ペイロードを前記暗号化キーで暗号化して前記セグメント化されたＱＵＩＣパケットの各々の暗号化されたペイロードを生成することを含み、
前記第１のＱＵＩＣパケットを送信することは、前記複数のセグメント化されたＱＵＩＣパケットを送信することを含む、請求項１に記載のコンピューティングデバイス。
【請求項４】
前記大容量送信オフロードアクセラレータはさらに、
前記第１のＱＵＩＣパケットから前記ＱＵＩＣヘッダを前記セグメント化されたＱＵＩＣパケットの各々にコピーし、
前記セグメント化されたＱＵＩＣパケットの各々の前記ＱＵＩＣヘッダのパケット番号を更新する、請求項３に記載のコンピューティングデバイス。
【請求項５】
前記第１のＱＵＩＣパケットを生成し、前記第１のＱＵＩＣパケットの前記ＱＵＩＣヘッダはパケット番号を含み、
前記第１のＱＵＩＣパケットの長さに基づいて前記第１のＱＵＩＣパケットから生成されるセグメント化されたＱＵＩＣパケットの数を計算し、
前記第１のＱＵＩＣパケットの前記パケット番号と前記セグメント化されたＱＵＩＣパケットの数とに基づいて、次のＱＵＩＣパケットのための次パケット番号を計算するＱＵＩＣプロトコルスタック、をさらに含む請求項３に記載のコンピューティングデバイス。
【請求項６】
コンピューティングデバイスのネットワークコントローラをＱＵＩＣ接続に関連づけられた暗号化キーでプログラムするステップと、
第１のＱＵＩＣパケットを前記コンピューティングデバイスの前記ネットワークコントローラに渡すステップであり、前記第１のＱＵＩＣパケットは、ＱＵＩＣヘッダと平文ペイロードとを含むＵＤＰパケットを含み、前記第１のＱＵＩＣパケットは前記ＱＵＩＣ接続に関連づけられる、ステップと、
前記ネットワークコントローラにより、前記第１のＱＵＩＣパケットの前記平文ペイロードを前記暗号化キーで暗号化して前記第１のＱＵＩＣパケットの暗号化されたペイロードを生成するステップと、
前記ネットワークコントローラにより、前記平文ペイロードの暗号化に応答して、前記暗号化されたペイロードを含む前記第１のＱＵＩＣパケットを前記ＱＵＩＣ接続に関連づけられたリモートコンピューティングデバイスに送信するステップと、
を前記コンピューティングデバイスに実行させるコンピュータプログラム。
【請求項７】
前記ネットワークコントローラにより、前記第１のＱＵＩＣパケットの認証データを計算するステップと、
前記ネットワークコントローラにより、前記認証データを前記第１のＱＵＩＣパケットに追加するステップと、
を前記コンピューティングデバイスにさらに実行させ、
前記第１のＱＵＩＣパケットを送信することは、前記認証データを追加したことに応答して前記第１のＱＵＩＣパケットを送信することを含む、請求項６に記載のコンピュータプログラム。
【請求項８】
前記ネットワークコントローラにより、前記第１のＱＵＩＣパケットを複数のセグメント化されたＱＵＩＣパケットにセグメント化するステップであり、前記セグメント化されたＱＵＩＣパケットの各々は平文ペイロードを含み、所定のサイズ以下である、ステップ、
を前記コンピューティングデバイスにさらに実行させ、
前記平文ペイロードを暗号化することは、前記セグメント化されたＱＵＩＣパケットの各々の前記平文ペイロードを前記暗号化キーで暗号化して前記セグメント化されたＱＵＩＣパケットの各々の暗号化されたペイロードを生成することを含み、
前記第１のＱＵＩＣパケットを送信することは、前記複数のセグメント化されたＱＵＩＣパケットを送信することを含む、請求項６に記載のコンピュータプログラム。
【請求項９】
前記ネットワークコントローラにより、前記第１のＱＵＩＣパケットから前記ＱＵＩＣヘッダを前記セグメント化されたＱＵＩＣパケットの各々にコピーするステップと、
前記ネットワークコントローラにより、前記セグメント化されたＱＵＩＣパケットの各々の前記ＱＵＩＣヘッダのパケット番号を更新するステップと、
を前記コンピューティングデバイスにさらに実行させる、請求項８に記載のコンピュータプログラム。
【請求項１０】
アクセラレートされたパケット処理のためのコンピューティングデバイスであって、
ネットワークコントローラと、
前記ネットワークコントローラをＱＵＩＣ接続に関連づけられた暗号化キーでプログラムするネットワークコントローラドライバと、を含み、
前記ネットワークコントローラは、（ｉ）リモートコンピューティングデバイスから第１のネットワークパケットを受信し、（ｉｉ）前記第１のネットワークパケットがＱＵＩＣパケットを含むかどうかを決定し、前記ＱＵＩＣパケットは、ＱＵＩＣヘッダと暗号化されたペイロードとを含むＵＤＰパケットを含み、前記ＱＵＩＣパケットは前記ＱＵＩＣ接続に関連づけられ、
前記ネットワークコントローラは、前記第１のネットワークパケットがＱＵＩＣパケットを含むとの決定に応答して前記第１のネットワークパケットの前記暗号化されたペイロードを前記暗号化キーで解読して前記第１のネットワークパケットの平文ペイロードを生成する暗号アクセラレータを含む、コンピューティングデバイス。
【請求項１１】
第１のプロセッサコアとＱＵＩＣプロトコルスタックとをさらに含み、
前記ネットワークコントローラは、（ｉ）前記暗号化されたペイロードの解読に応答して所定の割り当て機能を所定のエントロピーソースで評価してキュー識別子を生成し、（ｉｉ）前記所定の割り当て機能の評価に応答して前記第１のネットワークパケットを前記キュー識別子に関連づけられた受信キューに転送する受信側スケーリングアクセラレータをさらに含み、
前記ＱＵＩＣプロトコルスタックは、前記第１のプロセッサコアにより、前記第１のネットワークパケットの前記受信キューへの転送に応答して前記第１のネットワークパケットを処理し、前記第１のプロセッサコアは前記受信キューに関連づけられる、請求項１０に記載のコンピューティングデバイス。
【請求項１２】
前記ネットワークコントローラドライバはさらに、前記ネットワークコントローラを前記所定のエントロピーソースで構成する、請求項１１に記載のコンピューティングデバイス。
【請求項１３】
前記エントロピーソースは、前記第１のネットワークパケットの前記ＱＵＩＣヘッダのフィールドを含む、請求項１１に記載のコンピューティングデバイス。
【請求項１４】
前記エントロピーソースは、ＱＵＩＣ接続識別子又はＱＵＩＣショートパケットタイプフィールドを含む、請求項１３に記載のコンピューティングデバイス。
【請求項１５】
前記エントロピーソースは、前記第１のネットワークパケットの前記平文ペイロードのフィールドを含む、請求項１１に記載のコンピューティングデバイス。
【請求項１６】
前記エントロピーソースは、ＱＵＩＣストリーム識別子を含む、請求項１５に記載のコンピューティングデバイス。
【請求項１７】
前記エントロピーソースは、前記第１のネットワークパケットのＵＤＰソースＩＰアドレスとＵＤＰ宛先ＩＰアドレスとＵＤＰソースポートとＵＤＰ宛先ポートとを含むタプルを含む、請求項１１に記載のコンピューティングデバイス。
【請求項１８】
前記ネットワークコントローラドライバはさらに、前記ネットワークコントローラを前記所定の割り当て機能で構成する、請求項１１に記載のコンピューティングデバイス。
【請求項１９】
前記所定の割り当て機能は、前記エントロピーソースに基づくフィルタ機能を含む、請求項１１に記載のコンピューティングデバイス。
【請求項２０】
コンピューティングデバイスのネットワークコントローラをＱＵＩＣ接続に関連づけられた暗号化キーでプログラムするステップと、
前記ネットワークコントローラにより、リモートコンピューティングデバイスから第１のネットワークパケットを受信するステップと、
前記ネットワークコントローラにより、前記第１のネットワークパケットがＱＵＩＣパケットを含むかどうかを決定するステップであり、前記ＱＵＩＣパケットは、ＱＵＩＣヘッダと暗号化されたペイロードとを含むＵＤＰパケットを含み、前記ＱＵＩＣパケットは前記ＱＵＩＣ接続に関連づけられる、ステップと、
前記ネットワークコントローラにより、前記第１のネットワークパケットがＱＵＩＣパケットを含むと決定したことに応答して、前記第１のネットワークパケットの前記暗号化されたペイロードを前記暗号化キーで解読して前記第１のネットワークパケットの平文ペイロードを生成するステップと、
を前記コンピューティングデバイスに実行させるコンピュータプログラム。
【請求項２１】
前記ネットワークコントローラにより、前記暗号化されたペイロードを解読したことに応答して、所定の割り当て機能を所定のエントロピーソースで評価してキュー識別子を生成するステップと、
前記ネットワークコントローラにより、前記所定の割り当て機能を評価したことに応答して、前記第１のネットワークパケットを前記キュー識別子に関連づけられた受信キューに転送するステップと、
前記コンピューティングデバイスの第１のプロセッサコアにより、前記第１のネットワークパケットを前記受信キューに転送したことに応答して前記第１のネットワークパケットを処理するステップであり、前記第１のプロセッサコアは前記受信キューに関連づけられる、ステップと、
を前記コンピューティングデバイスにさらに実行させる、請求項２０に記載のコンピュータプログラム。
【請求項２２】
前記エントロピーソースは、前記第１のネットワークパケットの前記ＱＵＩＣヘッダのフィールドを含む、請求項２１に記載のコンピュータプログラム。
【請求項２３】
前記エントロピーソースは、前記第１のネットワークパケットの前記平文ペイロードのフィールドを含む、請求項２１に記載のコンピュータプログラム。
【請求項２４】
前記エントロピーソースは、前記第１のネットワークパケットのＵＤＰソースＩＰアドレスとＵＤＰ宛先ＩＰアドレスとＵＤＰソースポートとＵＤＰ宛先ポートとを含むタプルを含む、請求項２１に記載のコンピュータプログラム。
【請求項２５】
前記所定の割り当て機能は、前記エントロピーソースに基づくフィルタ機能を含む、請求項２１に記載のコンピュータプログラム。
【請求項２６】
請求項６乃至９又は請求項２０乃至２５のうちいずれか１項に記載のコンピュータプログラムを記憶したコンピュータ読取可能記憶媒体。
【発明の詳細な説明】
【背景技術】
【０００１】
ＱＵＩＣ（クイックＵＤＰインターネット接続（Quick  UDP  Internet  Connections））は、トランスミッションコントロールプロトコル（Transmission  Control  Protocol；ＴＣＰ）のような従来のネットワークプロトコルに取って代わるために使用され得る比較的新しいネットワークプロトコルである。ＱＵＩＣは、ＵＤＰ（ユーザデータグラムプロトコル（User  Datagram  Protocol））の上に構築されたトランスポートレイヤプロトコルである。ＱＵＩＣは、ＵＤＰを通じての２つのエンドポイント間の多重された接続のセットをサポートし、低減された接続及びトランスポートレイテンシと共にＴＬＳ／ＳＳＬと同等のセキュリティ保護を、並びに輻輳を回避するために各方向における帯域幅推定を提供し得る。ゆえに、ＱＵＩＣは、ＴＣＰのような従来のプロトコルと比較して改善された暗号化及び改善された接続レイテンシを提供することが意図され、同時に、柔軟な輻輳管理及び既存のネットワークインフラストラクチャとの互換性も提供する。比較的新しくはあるが、ＱＵＩＣは全インターネットトラフィックのうち７％をすでに形成し、特定の大規模ネットワークユーザがＱＵＩＣを現在有効にしている。現在のＱＵＩＣプロトコル実装（例えば、ユーザモードプロトコルスタック及びライブラリ）はソフトウェアで十分に実装されている。
【０００２】
関連出願の相互参照
本出願は、2018年3月16日に出願された米国仮特許出願第62/644,045号の利益を主張する。
【図面の簡単な説明】
【０００３】
本明細書で説明される概念は、添付図面において限定としてでなく例として示される。例示の簡潔さ及び明確さのため、図に示される要素は必ずしも縮尺どおりに描かれていない。適切と考えられる場合、参照ラベルは、対応する又は類似の要素を示すために複数の図の中で繰り返されている。
【図１】アクセラレートされたＱＵＩＣパケット処理のためのシステムの少なくとも１つの実施例の簡略ブロック図である。
【図２】図１のコンピューティングデバイスの環境の少なくとも１つの実施例の簡略ブロック図である。
【図３】図１〜２のシステムにより実行できるハードウェアオフロードでＱＵＩＣパケット処理をアクセラレートする方法の少なくとも１つの実施例の簡略相互作用図である。
【図４】図１〜２のコンピューティングデバイスにより実行できるアクセラレートされたラージパケットセグメンテーションのための方法の少なくとも１つの実施例の簡略フロー図である。
【図５】図１〜２のコンピューティングデバイスにより実行できるアクセラレートされたパケット暗号化のための方法の少なくとも１つの実施例の簡略フロー図である。
【図６】図１〜２のコンピューティングデバイスにより実行できるアクセラレートされたパケット解読のための方法の少なくとも１つの実施例の簡略フロー図である。
【図７】図１〜２のコンピューティングデバイスにより実行できるアクセラレートされた受信側スケーリング及びフィルタリングのための方法の少なくとも１つの実施例の簡略フロー図である。
【発明を実施するための形態】
【０００４】
本開示の概念は様々な変更及び代替形式を受け入れる余地があるが、その具体的な実施例が図面に例として示されており、本明細書で詳細に説明される。しかしながら、本開示の概念を開示される特定の形式に限定する意図はないことが理解されるべきであり、逆に、その意図は本開示及び別記の特許請求の範囲と一貫する全ての変更、均等物、及び代替物をカバーすることである。
【０００５】
明細書における「１つの実施例」、「実施例」、「例示的な実施例」等への参照は、説明される実施例が特定の特徴、構造、又は特性を含み得るが、あらゆる実施例が必ずその特定の特徴、構造、又は特性を含んでもよく、あるいは含まなくてもよいことを示す。さらに、こうした表現は、必ずしも同じ実施例を参照するわけではない。さらに、特定の特徴、構造、又は特性が一実施例と関連して説明されるとき、明示的に説明されるか否かにかかわらず、他の実施例と関連してこうした特徴、構造、又は特性を達成することは当業者の知識の範囲内であると考えられる。さらに、「少なくとも１つのＡ、Ｂ、及びＣ」の形式のリストに含まれる項目は、（Ａ）、（Ｂ）、（Ｃ）、（Ａ及びＢ）、（Ａ及びＣ）、（Ｂ及びＣ）、又は（Ａ、Ｂ、及びＣ）を意味し得ることが十分理解されるべきである。同様に、「Ａ、Ｂ、又はＣのうち少なくとも１つ」の形式で列挙された項目は、（Ａ）、（Ｂ）、（Ｃ）、（Ａ及びＢ）、（Ａ及びＣ）、（Ｂ及びＣ）、又は（Ａ、Ｂ、及びＣ）を意味し得る。
【０００６】
開示される実施例は、いくつかの場合、ハードウェア、ファームウェア、ソフトウェア、又はこれらの任意の組み合わせで実現されてよい。開示される実施例は、１つ以上のプロセッサにより読み出し及び実行できる、一時的又は非一時的なマシン読取可能（例えば、コンピュータ読取可能）記憶媒体により搬送された命令又は該記憶媒体に記憶された命令として実現されてもよい。マシン読取可能記憶媒体は、任意の記憶デバイス、機構、又はマシンにより読取可能な形式の情報を記憶又は送信する他の物理的構造（例えば、揮発又は不揮発性のメモリ、媒体ディスク、又は他の媒体デバイス）として具現化されてよい。
【０００７】
図面において、いくつかの構造的又は方法の特徴が具体的な配置及び／又は順序づけで示されることがある。しかしながら、こうした具体的な配置及び／又は順序づけは要求されない可能性があることが十分理解されるべきである。むしろ、いくつかの実施例において、こうした特徴は、例示的な図に示されるのとは異なる方式及び／又は順序で配置されることがある。さらに、特定の図に構造的又は方法の特徴を含むことは、こうした特徴が全ての実施例で要求されることを示すようには意図されず、いくつかの実施例において、含まれなくてもよく、あるいは他の特徴と組み合わせられてもよい。
【０００８】
次に図１を参照し、アクセラレートされた（accelerated）ＱＵＩＣパケット処理のためのシステム１００が、ネットワーク１０４を通じて通信する複数のコンピューティングデバイス１０２を含む。各コンピューティングデバイスは、ＱＵＩＣプロトコルネットワークトラフィックのためのハードウェアアクセラレータサポートを含む。送信において、ハードウェアアクセラレータはＱＵＩＣペイロードを暗号化し、ラージ（large）ＱＵＩＣパケットを必要に応じてより小さいパケットにセグメント化する。受信において、ハードウェアアクセラレータはＱＵＩＣペイロードを解読し、複数の利用可能な方法のうち１つを使用して受信キューを選択して、多くのプロセッサ１２０コアにわたりホスト処理を分配する。ゆえに、コンピューティングデバイス１０２は、現在の解決策により使用されるソフトウェアのみのＱＵＩＣと比較されたとき、大きく改善されたＱＵＩＣプロトコル性能を提供し、改善されたスループット及び低減されたプロセッサ使用量を提供し得る。さらに、ハードウェアアクセラレートされたＱＵＩＣプロトコルパケット処理は、ホストプロセッサのプロセッササイクル使用量を低減し、クラウドサービスプロバイダに価値を提供し得る。
【０００９】
各コンピューティングデバイス１０２は、本明細書で説明される機能を実行できる任意のタイプの計算又はコンピュータデバイスとして具現化されてよく、コンピュータ、サーバ、ワークステーション、デスクトップコンピュータ、ラップトップコンピュータ、ノートブックコンピュータ、タブレットコンピュータ、モバイルコンピューティングデバイス、ウェアラブルコンピューティングデバイス、ネットワーク電化製品、ウェブ電化製品、分散コンピューティングシステム、プロセッサベースのシステム、及び／又は消費者電子デバイスを限定なく含む。図１に示されるように、コンピューティングデバイス１０２は、プロセッサ１２０、入力／出力サブシステム１２４、メモリ１２６、データ記憶デバイス１２８、通信サブシステム１３０、アクセラレータ１４０、及び／又はサーバ若しくは同様のコンピューティングデバイスで一般に見られる他のコンポーネント及びデバイスを例示的に含む。当然ながら、コンピューティングデバイス１０２は、他の実施例において、サーバコンピュータで一般に見られるもののような他の又はさらなるコンポーネント（例えば、様々な入力／出力デバイス）を含んでもよい。さらに、いくつかの実施例において、例示的なコンポーネントの１つ以上が別のコンポーネントに組み込まれ、あるいはその他の方法で別のコンポーネントの一部を形成してもよい。例えば、メモリ１２６又はその一部が、いくつかの実施例においてプロセッサ１２０に組み込まれてもよい。
【００１０】
プロセッサ１２０は、本明細書で説明される機能を実行できる任意のタイプのプロセッサとして具現化されてよい。プロセッサ１２０は例示的にマルチコアプロセッサであるが、他の実施例において、プロセッサ１２０はシングル若しくはマルチコアプロセッサ、デジタルシグナルプロセッサ、マイクロコントローラ、又は他のプロセッサ若しくは処理／制御回路として具現化されてもよい。例示的なプロセッサ１２０は複数のプロセッサコア１２２を含み、その各々はプログラムされた命令を実行できる独立した汎用処理ユニットである。例えば、各プロセッサコア１２２は、ＩＡ‐３２又はＩｎｔｅｌ（登録商標）６４のような汎用命令セットアーキテクチャ（instruction  set  architecture；ＩＳＡ）からの命令を実行してもよい。１つのプロセッサコア１２２で例示されているが、いくつかの実施例においてプロセッサ１２０は、より多数のプロセッサコア１２２、例えば、４つのプロセッサコア１２２、１４個のプロセッサコア１２２、２８個のプロセッサコア１２２、又は異なる数を含んでもよい。さらに、単一のプロセッサ１２０を含むものとして例示されているが、いくつかの実施例においてコンピューティングデバイス１０２は、複数のプロセッサ１２０を有するマルチソケットサーバとして具現化されてもよい。
【００１１】
メモリ１２６は、本明細書で説明される機能を実行できる任意のタイプの揮発又は不揮発性のメモリ又はデータ記憶装置として具現化されてよい。動作において、メモリ１２６は、オペレーティングシステム、アプリケーション、プログラム、ライブラリ、及びドライバのような、コンピューティングデバイス１０２の動作の間に使用される様々なデータ及びソフトウェアを記憶してよい。メモリ１２６は、Ｉ／Ｏサブシステム１２４を介してプロセッサ１２０に通信可能に結合され、Ｉ／Ｏサブシステム１２４は、プロセッサ１２０、アクセラレータ１３４、メモリ１２６、及びコンピューティングデバイス１０２の他のコンポーネントとの入力／出力動作を容易にする回路及び／又はコンポーネントとして具現化されてよい。例えば、Ｉ／Ｏサブシステム１２４は、メモリコントローラハブ、入力／出力制御ハブ、センサハブ、ファームウェアデバイス、通信リンク（すなわち、ポイントツーポイントリンク、バスリンク、ワイヤ、ケーブル、光ガイド、印刷回路板トレース等）、及び／又は入力／出力動作を容易にする他のコンポーネント及びサブシステムとして具現化され、あるいはその他の方法で含んでもよい。いくつかの実施例において、Ｉ／Ｏサブシステム１２４は、システムオンチップ（ＳｏＣ）の一部を形成し、プロセッサ１２０、メモリ１２６、及びコンピューティングデバイス１０２の他のコンポーネントと共に単一の集積回路チップに組み込まれてもよい。
【００１２】
データ記憶デバイス１２８は、例えば、メモリデバイス及び回路、メモリカード、ハードディスクドライブ、ソリッドステートドライブ、不揮発フラッシュメモリ、又は他のデータ記憶デバイスのような、データの短期又は長期記憶について構成された任意のタイプの１つ又は複数のデバイスとして具現化されてよい。コンピューティングデバイス１０２は、通信サブシステム１３０をさらに含み、通信サブシステム１３０は、コンピュータネットワーク１０４を通じてコンピューティングデバイス１０２と他のリモートデバイスとの間の通信を可能にできる任意の通信回路、デバイス、又はこれらの集合として具現化されてよい。例えば、通信サブシステム１３０は、ネットワークインターフェースコントローラ（network  interface  controller；ＮＩＣ）１３２、又はリモートデバイスとの間でネットワークデータを送信及び／又は受信する他のネットワークコントローラとして具現化され、あるいはその他の方法で含んでもよい。ＮＩＣ１３２は、任意のネットワークインターフェースカード、ネットワークアダプタ、ホストファブリックインターフェース、ネットワークコプロセッサ、又はコンピューティングデバイス１０２をネットワーク１０４に接続する他のコンポーネントとして具現化されてよい。通信サブシステム１３０は、任意の１つ以上の通信技術（例えば、有線又は無線通信）及び関連プロトコル（例えば、イーサネット（登録商標）、ＩｎｆｉｎｉＢａｎｄ（登録商標）、Ｂｌｕｅｔｏｏｔｈ（登録商標）、Ｗｉ‐Ｆｉ（登録商標）、ＷｉＭＡＸ（登録商標）、３Ｇ、４Ｇ  ＬＴＥ（登録商標）等）を使用してこうした通信を達成するように構成されてよい。いくつかの実施例において、通信サブシステム１３２及び／又はＮＩＣ１３２は、ＳｏＣの一部を形成し、プロセッサ１２０及びコンピューティングデバイス１０２の他のコンポーネントと共に単一の集積回路チップに組み込まれてもよい。
【００１３】
図１に示されるように、コンピューティングデバイス１０２は、アクセラレータ１３４をさらに含んでよい。アクセラレータ１３４は、フィールドプログラマブルゲートアレイ（ＦＰＧＡ）、特定用途向け集積回路（ＡＳＩＣ）、組み込みデジタル論理ブロック、コプロセッサ、又はアクセラレートされたネットワーク機能を実行できる他のデジタル論理デバイスとして具現化されてよい。別個のコンポーネントとして例示されているが、いくつかの実施例において、アクセラレータ１３４はＮＩＣ１３２に組み込まれ、あるいはその他の方法で結合されてもよいことが理解されるべきである。さらに、又は別法として、いくつかの実施例において、アクセラレータ１３４は、プロセッサ１２０及びＮＩＣ１３２と共にマルチチップパッケージに含まれるＦＰＧＡとして具現化されてもよい。アクセラレータ１３４は、コヒーレント及び／又は非コヒーレントインターコネクトを含む複数の高速接続インターフェースを介してプロセッサ１２０及び／又はＮＩＣ１３２に結合されてもよい。
【００１４】
コンピューティングデバイス１０２は、１つ以上の周辺デバイス１３６をさらに含んでよい。周辺デバイス１３６は、任意数のさらなる入力／出力デバイス、インターフェースデバイス、及び／又は他の周辺デバイスを含んでよい。例えば、いくつかの実施例において、周辺デバイス１３６は、タッチスクリーン、グラフィックス回路、グラフィカル処理ユニット（ＧＰＵ）及び／又はプロセッサグラフィックス、オーディオデバイス、マイクロフォン、カメラ、キーボード、マウス、ネットワークインターフェース、及び／又は他の入力／出力デバイス、インターフェースデバイス、及び／又は周辺デバイスを含んでもよい。
【００１５】
さらに、又は別法として、コンピューティングデバイス１０２に含まれるものとして例示されているが、プロセッサ１２０、メモリ１２６、データ記憶デバイス１２８、ＮＩＣ１３２、及び／又はアクセラレータ１３４のようなコンピューティングデバイス１０２の１つ以上のコンポーネントが、複数のラック、スレッド、又は他のコンピューティングシャーシの中で物理的に分けられ、あるいはその他の方法で分散されてもよいことが理解されるべきである。こうした実施例において、コンピューティングデバイス１０２の１つ以上が、複数の分けられたコンポーネントからプールされ、あるいはその他の方法で構成されてもよい。こうした実施例において、ＮＩＣ１３２は、仮想スイッチ又は他の仮想化環境に含まれてもよい。
【００１６】
コンピューティングデバイス１０２は、ネットワーク１０４を通じて互いに及び／又はシステム１００の他のデバイスとデータを送信及び受信するように構成されてよい。ネットワーク１０４は、任意数の様々な有線及び／又は無線ネットワークとして具現化されてよい。例えば、ネットワーク１０４は、有線若しくは無線のローカルエリアネットワーク（ＬＡＮ）及び／又は有線若しくは無線のワイドエリアネットワーク（ＷＡＮ）として具現化され、あるいはその他の方法で含んでもよい。そのようなものとして、ネットワーク１０４は、システム１００のデバイス間の通信を容易にするための、さらなるコンピュータ、ルータ、及びスイッチのような任意数のさらなるデバイスを含んでもよい。例示的な実施例において、ネットワーク１０４は、ローカルイーサネットネットワークとして具現化される。
【００１７】
次に図２を参照し、例示的な実施例において、コンピューティングデバイス１０２は、動作の間に環境２００を確立する。例示的な環境２００は、アプリケーション２０２、ＱＵＩＣプロトコルスタック２０４、ＮＩＣドライバ２０６、及びＮＩＣ１３２を含む。ＮＩＣ１３２は、暗号アクセラレータ２０８、大容量送信オフロード（large  send  offload；ＬＳＯ）アクセラレータ２１０、及び受信側スケーリング（receive-side  scaling；ＲＳＳ）アクセラレータ２１２をさらに含む。図示されるように、環境２００の様々なコンポーネントは、ハードウェア、マイクロコード、ファームウェア、ソフトウェア、又はこれらの組み合わせとして具現化されてよい。そのようなものとして、いくつかの実施例において、環境２００のコンポーネントの１つ以上が、回路又は電子デバイスの集合（例えば、アプリケーション回路２０２、ＱＵＩＣプロトコルスタック回路２０４、ドライバ回路２０６、暗号アクセラレータ回路２０８、ＬＳＯアクセラレータ回路２１０、及び／又はＲＳＳアクセラレータ回路２１２）として具現化されてもよい。こうした実施例において、アプリケーション回路２０２、ＱＵＩＣプロトコルスタック回路２０４、ドライバ回路２０６、暗号アクセラレータ回路２０８、ＬＳＯアクセラレータ回路２１０、及び／又はＲＳＳアクセラレータ回路２１２のうち１つ以上が、プロセッサ１２０、ＮＩＣ１３２、アクセラレータ１３４、Ｉ／Ｏサブシステム１２４、及び／又はコンピューティングデバイス１０２の他のコンポーネントの一部を形成してもよいことが十分理解されるべきである。例示的な実施例において、アプリケーション２０２、ＱＵＩＣプロトコルスタック２０４、及びＮＩＣドライバ２０６は、プロセッサ１２０の１つ以上のプロセッサコア１２２により実行され、暗号アクセラレータ２０８、ＬＳＯアクセラレータ２１０、及びＲＳＳアクセラレータ２１２は、ハードウェア、ファームウェア、マイクロコード、又はＮＩＣ１３２の他のリソースとして具現化される。さらに、又は別法として、いくつかの実施例において、暗号アクセラレータ２０８、ＬＳＯアクセラレータ２１０、及び／又はＲＳＳアクセラレータ２１２は、１つ以上のスタンドアロンアクセラレータ１３４として具現化され、あるいはその他の方法で含まれてもよい。さらに、いくつかの実施例において、例示的なコンポーネントの１つ以上が別のコンポーネントの一部を形成してもよく、かつ／あるいは、例示的なコンポーネントの１つ以上が互いから独立していてもよい。
【００１８】
アプリケーション２０２は、送信されるネットワークデータを生成し、かつ／あるいは受信したネットワークデータを処理するように構成されてよい。例えば、アプリケーション２０２は、パケットデータをメモリ１２６内の１つ以上のアプリケーションバッファに記憶してもよい。アプリケーション２０２は、任意のクライアント、サーバ、又はコンピューティングデバイス１０２により実行される他のネットワークアプリケーションとして具現化されてよい。
【００１９】
ＱＵＩＣプロトコルスタック２０４は、送信されるＱＵＩＣパケットを生成するように構成される。各ＱＵＩＣパケットは、ＱＵＩＣヘッダと平文ペイロードとを含むＵＤＰパケットとして具現化されてよい。各ＱＵＩＣパケットは、リモートホスト（例えば、リモートコンピューティングデバイス１０２）とのＱＵＩＣ接続に関連づけられてよい。ペイロードは、複数の多重されたＱＵＩＣストリームを含んでよく、ゆえに、複数のＱＵＩＣストリームヘッダを含んでもよい。各ＱＵＩＣパケットのＱＵＩＣヘッダは、パケット番号を含む。いくつかの実施例において、各ＱＵＩＣパケットは、ネットワーク１０４及び／又はシステム１００の他のデバイスによりサポートされる最大セグメントサイズ（maximum  segment  size；ＭＳＳ）より大きくてもよい。ＱＵＩＣプロトコルスタック２０４は、各ＱＵＩＣパケットから生成されるセグメント化されたＱＵＩＣパケットの数を、そのＱＵＩＣパケットの長さに基づいて計算し、生成されることになるセグメント化されたＱＵＩＣパケットの数に基づいて次のＱＵＩＣパケットのパケット番号を更新するように構成されてよい。ＱＵＩＣプロトコルスタック２０４は、コンピューティングデバイス１０２の１つ以上のプロセッサコア１２２により、受信したネットワークパケットを処理するようにさらに構成される。プロセッサコア１２２は、これらパケットが関連づけられた受信キューに転送されたことに応答してネットワークパケットを処理してよい。
【００２０】
ＮＩＣドライバ２０６は、ＮＩＣ１３２を各ＱＵＩＣ接続に関連づけられた暗号化キーでプログラムする（program）ように構成される。ＮＩＣドライバ２０６は、ＱＵＩＣパケットを送信のためにネットワークコントローラ１３２に渡すようにさらに構成される。ＮＩＣドライバ２０６は、ＮＩＣ１３２が大容量送信オフロード（ＬＳＯ）が可能であるかどうかを決定し、そうでない場合、ＱＵＩＣパケットを複数のセグメント化されたＱＵＩＣパケットにセグメント化するようにさらに構成されてもよい。ＮＩＣドライバ２０６は、ＮＩＣ１３２を所定のエントロピーソースで構成するようにさらに構成されてもよい。エントロピーソースは、ＱＵＩＣ接続識別子又はＱＵＩＣショートパケットタイプフィールドのようなＱＵＩＣヘッダのフィールドとして、ＱＵＩＣストリーム識別子のような平文ペイロードのフィールドとして、ＵＤＰソースＩＰアドレスとＵＤＰ宛先ＩＰアドレスとＵＤＰソースポートとＵＤＰ宛先ポートとを含むタプルとして、又は各々の受信したネットワークパケットから抽出された他のデータとして具現化されてよい。ＮＩＣドライバ２０６は、ＮＩＣ１３２を所定の割り当て機能（assignment  function）で構成するようにさらに構成されてもよく、所定の割り当て機能は、ハッシュ機能、フィルタ機能、又は入力としてエントロピーソースを使用する他の機能として具現化されてよい。ドライバ２０６は、プロセッサコア１２２をそれぞれの受信キューに関連づけるようにさらに構成されてもよい。
【００２１】
ＬＳＯアクセラレータ２１０は、ＱＵＩＣパケットが所定のＭＳＳより大きいかどうかを決定し、そうである場合、ＱＵＩＣパケットを複数のセグメント化されたＱＵＩＣパケットにセグメント化するように構成される。セグメント化されたＱＵＩＣパケットの各々は平文ペイロードを含み、所定のＭＳＳ以下である。ＬＳＯアクセラレータ２１０は、ＱＵＩＣパケットからＱＵＩＣヘッダをセグメント化されたＱＵＩＣパケットの各々にコピーし、セグメント化されたＱＵＩＣパケットの各々のＱＵＩＣヘッダのパケット番号を更新するようにさらに構成されてもよい。
【００２２】
暗号アクセラレータ２０８は、各々のＱＵＩＣパケット及び／又はセグメント化されたＱＵＩＣパケットの平文ペイロードを暗号化キーで暗号化して暗号化されたペイロードを生成するように構成される。いくつかの実施例において、ＱＵＩＣ暗号化は、ペイロードの暗号化の後、パケット番号を別個に暗号化してもよい。暗号アクセラレータ２０８は、各々のＱＵＩＣパケット及び／又はセグメント化されたＱＵＩＣパケットの認証データを計算し、認証データをそれぞれのＱＵＩＣパケットに追加するようにさらに構成されてもよい。暗号アクセラレータ２０８は、受信したＱＵＩＣパケットの暗号化されたペイロードを暗号化キーで解読して対応する平文ペイロードを生成するようにさらに構成される。暗号アクセラレータ２０８は、受信したＱＵＩＣパケットに含まれる認証データを使用して受信したＱＵＩＣパケットを検証するようにさらに構成されてもよい。
【００２３】
ＲＳＳアクセラレータ２１２は、暗号化されたペイロードを解読したことに応答して、各々の受信したＱＵＩＣパケットについて所定の割り当て機能を所定のエントロピーソースで評価してキュー識別子を生成するように構成される。ＲＳＳアクセラレータ２１２は、各々の受信したＱＵＩＣパケットを対応するキュー識別子に関連づけられた受信キューに転送するようにさらに構成される。
【００２４】
ＮＩＣ１３２は、平文ペイロードを暗号化したことに応答して、暗号化されたペイロードを含むＱＵＩＣパケット及び／又はセグメント化されたＱＵＩＣパケットを、ＱＵＩＣ接続に関連づけられたリモートホストに送信するように構成される。ＮＩＣ１３２は、リモートホストからネットワークパケットを受信し、各々の受信したネットワークパケットがＱＵＩＣパケットであるかどうかを決定するようにさらに構成される。受信したネットワークパケットがＱＵＩＣパケットである場合、ＮＩＣ１３２は、上述されたように、受信したＱＵＩＣパケットを暗号アクセラレータ２０８及び／又はＲＳＳアクセラレータ２１２で処理してよい。
【００２５】
次に図３を参照し、使用において、システム１００の２つのコンピューティングデバイス１０２ａ、１０２ｂが、アクセラレートされたＱＵＩＣパケット処理のための方法３００を実行し得る。いくつかの実施例において、方法３００の動作は、図２に示される各コンピューティングデバイス１０２の環境２００の１つ以上のコンポーネントにより実行されてもよいことが十分理解されるべきである。例示的な例において、コンピューティングデバイス１０２ａは送信機であり、コンピューティングデバイス１０２ｂは受信機である。しかしながら、いくつかの実施例において、各コンピューティングデバイス１０２ａ、１０２ｂは、送信機及び受信機の双方の動作を実行してもよい。方法３００はブロック３０２で開始し、ブロック３０２において、プロセッサコア１２２ａを有するコンピューティングデバイス１０２ａは、ＱＵＩＣパケットを作成する。例えば、ＱＵＩＣパケットは、アプリケーション２０２、ＱＵＩＣプロトコルスタック２０４、及びＮＩＣドライバ２０６のうち１つ以上により生成されてもよい。ＱＵＩＣパケットは、ＱＵＩＣヘッダ及び平文ペイロードを含んでよく、平文ペイロードは、１つ以上の多重されたＱＵＩＣストリームを含んでよい。プロセッサ１２２ａは、ＱＵＩＣパケットを処理のためにＮＩＣ１３２ａに渡す。
【００２６】
ブロック３０４において、ＮＩＣ１３２ａを有するコンピューティングデバイス１０２ａは、大容量送信オフロード（ＬＳＯ）アクセラレーション（acceleration）を実行してよい。いくつかの実施例において、プロセッサ１２２ａにより生成されたＱＵＩＣパケットは、ネットワーク１０４又はシステム１００の他のデバイスの最大セグメントサイズ（ＭＳＳ）より大きくてもよい。ＮＩＣ１３２ａは、ラージＱＵＩＣパケットを送信のために複数のより小さいＱＵＩＣパケットにセグメント化してよい。ＬＳＯアクセラレーションのための方法の１つの可能な実施例が、以下で図４に関連してさらに説明される。
【００２７】
ブロック３０６において、ＮＩＣ１３２ａを有するコンピューティングデバイス１０２ａは、送信される１つ以上のＱＵＩＣパケットの平文ペイロードを暗号化する。ＮＩＣ１３２ａは、アプリケーションレイヤ暗号化プロトコルを含むＱＵＩＣプロトコルに適した任意の暗号化プロトコルを使用してペイロードを暗号化してよい。ＮＩＣ１３２ａは、各ＱＵＩＣ接続について暗号化キーでコア１２２ａによりプログラムされてよい。暗号化のアクセラレーションのための方法の１つの可能な実施例が、以下で図５に関連してさらに説明される。
【００２８】
ブロック３０８において、ＮＩＣ１３２ａを有するコンピューティングデバイス１０２ａは、暗号化されたＱＵＩＣパケットをリモートコンピューティングデバイス１０２ｂに送信する。ブロック３１０において、ＮＩＣ１３２ｂを有するコンピューティングデバイス１０２ｂは、暗号化されたＱＵＩＣパケットを受信する。ＮＩＣ１３２ｂは、受信したパケットをＱＵＩＣパケットとして認識し、次いでさらなる処理（例えば、解読及び／又は受信側スケーリング及びフィルタリング）を実行してよい。例えば、ＮＩＣ１３２は、ＱＵＩＣパケットを特定の宛先ポートを有するＵＤＰパケットとして認識してもよい。
【００２９】
ブロック３１２において、ＮＩＣ１３２ｂを有するコンピューティングデバイス１０２ｂは、受信したＱＵＩＣパケットの暗号化されたペイロードを解読する。ＮＩＣ１３２ｂは、ＱＵＩＣプロトコルに適した任意の暗号化プロトコルを使用してペイロードを解読してよい。ＮＩＣ１３２ｂは、各ＱＵＩＣ接続について暗号化キーでコア１２２ｂによりプログラムされてよい。解読のアクセラレーションのための方法の１つの可能な実施例が、以下で図６に関連してさらに説明される。
【００３０】
ブロック３１４において、ＮＩＣ１３２ｂを有するコンピューティングデバイス１０２ｂは、受信したＱＵＩＣパケットの受信側スケーリング（ＲＳＳ）及びフィルタリングを実行する。ＮＩＣ１３２ｂは、受信したＱＵＩＣパケットを処理のために１つ以上のプロセッサコア１２２（例えば、例示のプロセッサコア１２２ｂ、１２２ｃ）に分散する。ＮＩＣ１３２ｂは、１つ以上の割り当て機能及び関連づけられたエントロピーソースでプログラムされてＱＵＩＣパケットのプロセッサコア１２２への分散を制御してもよい。例えば、ＮＩＣ１３２ｂは、ＱＵＩＣパケットをプロセッサコア１２２間で均等に分散してもよく、あるいは、ＮＩＣ１３２ｂは、特定のプロセッサコア１２２に対して受信したＱＵＩＣパケットをフィルタしてもよい。ＲＳＳ及びフィルタリングアクセラレーションのための方法の１つの可能な実施例が、以下で図７に関連して説明される。
【００３１】
ブロック３１６ａ、３１６ｂにおいて、プロセッサコア１２２ｂ、１２２ｃを有するコンピューティングデバイス１０２ｂは、それぞれ、受信したＱＵＩＣパケットを処理する。コンピューティングデバイス１０２ｂは、例えば、ＱＵＩＣヘッダをＱＵＩＣプロトコルスタック２０４で処理し、解読されたペイロードデータをアプリケーション２０２で処理してもよい。パケットを処理のためにプロセッサコア１２２に分散した後、方法３００は完了する。方法３００は、さらなるパケットを処理するために繰り返されてよい。
【００３２】
次に図４を参照し、使用において、コンピューティングデバイス１０２は、アクセラレートされたラージパケットセグメンテーションのための方法４００を実行し得る。方法４００は、例えば、上述されたように図３のブロック３０４と関連して実行されてもよい。いくつかの実施例において、方法４００の動作は、図２に示されるコンピューティングデバイス１０２の環境２００の１つ以上のコンポーネントにより実行されてもよいことが十分理解されるべきである。方法４００はブロック４０２で開始し、ブロック４０２において、コンピューティングデバイス１０２のＱＵＩＣプロトコルスタック２０４は、トランジットセグメンテーションオフロード（transit  segmentation  offload；ＴＳＯ）能力としても知られるＮＩＣ１３２の大容量送信オフロード（ＬＳＯ）能力についてＮＩＣドライバ２０６に問い合わせる。ＱＵＩＣプロトコルスタック２０４は、例えば、ＱＵＩＣプロトコルスタック２０４の初期化の間、及び／又はその他の方法で出ていくＱＵＩＣパケットを処理する前に、ＮＩＣドライバ２０６に問い合わせてもよい。ブロック４０４において、コンピューティングデバイス１０２は、ＮＩＣ１３２がＬＳＯアクセラレーションを実行できるかどうかを決定する。そうでない場合、方法４００はブロック４０６に分岐し、ブロック４０６において、コンピューティングデバイス１０２は、ラージＱＵＩＣパケットのソフトウェアセグメンテーションを実行する。例えば、ＱＵＩＣプロトコルスタック２０４及び／又はドライバ２０６は、プロセッサ１２０の処理リソースを使用してラージＱＵＩＣパケットをより小さいＱＵＩＣパケットにセグメント化してもよい。ブロック４０４を再び参照し、ＮＩＣ１３２がＬＳＯアクセラレーションが可能である場合、方法４００はブロック４０８に進む。
【００３３】
ブロック４０８において、ＱＵＩＣプロトコルスタック２０４は、ＱＵＩＣヘッダ及びペイロードを有するラージパケットをＮＩＣドライバ２０６に渡す。ＱＵＩＣプロトコルスタック２０４は、アプリケーションバッファ又は他のメモリバッファ内にアプリケーション２０２により提供されるデータに基づいてパケットを生成してよい。ＱＵＩＣプロトコルスタック２０４は、ヘッダ又は他のデータでパケットデータを追加し、あるいはその他の方法でフレーム化して、ＱＵＩＣパケットを作成してよい。ＱＵＩＣヘッダはパケット番号を含み、パケット番号はＱＵＩＣプロトコルスタック２０４により記憶され、更新されてよい。結果的なラージパケットは、ネットワーク１０４及び／又はシステム１００の他のデバイスの最大セグメントサイズ（ＭＳＳ）より大きいサイズを有する。ラージパケットのペイロードは、１つ以上のＱＵＩＣストリームヘッダを含んでよく、該ＱＵＩＣストリームヘッダは、ペイロード内でセグメント境界にマッチする位置に作成されてよい。ブロック４１０において、ＱＵＩＣプロトコルスタック２０４は、セグメンテーションにより生成されるセグメント化されたＱＵＩＣパケットの数に基づいて、送信される次のパケットのパケット番号を計算する。例示的な例において、ＱＵＩＣプロトコルスタック２０４は、ラージＱＵＩＣパケットのサイズに基づいて、ＬＳＯアクセラレータ２１０が３つのセグメント化されたＱＵＩＣパケットを生成すると決定してもよい。この例示的な例において、ＱＵＩＣプロトコルスタック２０４は、パケット番号を３だけインクリメントしてもよい。その結果、次に送信されるＱＵＩＣパケットは、正しいパケット番号を含むことになる。ＱＵＩＣプロトコルスタック２０４は、パケットセグメンテーションを実際に実行することなく次のＱＵＩＣパケットのパケット番号を計算し得ることに留意する。
【００３４】
ブロック４１２において、ＮＩＣドライバ２０６は、ＱＵＩＣプロトコルスタックから受信したラージＱＵＩＣパケットがＬＳＯアクセラレータ２１０の任意のハードウェア固有要件に合うかどうかを検証する。ブロック４１４において、ＮＩＣドライバ２０６は、ラージパケットがＬＳＯアクセラレータ２１０の要件を満たすかどうかを確認する。そうでない場合、方法４００はブロック４０６に分岐して、上述されたようにソフトウェアセグメンテーションを実行する。ＮＩＣドライバ２０６は、ＱＵＩＣプロトコルスタック２０４にエラーをさらに示してもよい。ブロック４１４を再び参照し、ラージパケットがＬＳＯアクセラレータ２１０の要件を満たす場合、方法４００はブロック４１６に進む。
【００３５】
ブロック４１６において、ＮＩＣドライバ２０６は、ラージパケットをＮＩＣ１３２に渡す。ブロック４１８において、ＮＩＣ１３２のＬＳＯアクセラレータ２１０は、ラージパケットを複数のより小さいパケットにセグメント化する。（任意のヘッダを含む）より小さいパケットの各々は、ネットワーク１０４のＭＳＳより小さいサイズを有する。より小さいパケットの各々は、ラージＱＵＩＣパケットからコピーされ又はその他の方法で抽出されたペイロードデータを含んでよい。ブロック４２０において、ＮＩＣ１３２のＬＳＯアクセラレータ２１０は、ラージＱＵＩＣパケットのための供給されたＱＵＩＣヘッダを使用して、ワイヤ（すなわち、ネットワーク１０４）で送信されることになるより小さいＱＵＩＣパケットの各々のためのＱＵＩＣヘッダを構築する。ＮＩＣ１３２は、例えば、ラージパケットのＱＵＩＣヘッダをより小さいＱＵＩＣパケットの各々にコピーしてもよい。ＮＩＣ１３２は、ワイヤで送信されることになるより小さいパケットの各々のＱＵＩＣヘッダ内のパケット番号を、例えば、このことに応じてパケット番号をインクリメントすることにより、さらに更新してもよい。いくつかの実施例において、ＮＩＣ１３２は、ＱＵＩＣヘッダを複製することと同様に、ＱＵＩＣペイロードの先頭からＱＵＩＣストリームヘッダをさらに複製してもよい。別法として、上述されたように、ＱＵＩＣストリームヘッダは、ＱＵＩＣプロトコルスタック２０４及び／又はドライバ２０６によりセグメント境界でラージペイロードに含まれていてもよい。ラージＱＵＩＣパケットを複数のより小さいＱＵＩＣパケットにセグメント化した後、方法４００はブロック４０８にループバックし、さらなるラージＱＵＩＣパケットを処理する。上述されたように、セグメンテーションが完了した後、セグメント化されたＱＵＩＣパケットはＮＩＣ１３２により暗号化され、次いでリモートデバイスに送信されてよい。
【００３６】
次に図５を参照し、使用において、コンピューティングデバイス１０２は、アクセラレートされたパケット暗号化のための方法５００を実行し得る。方法５００は、例えば、上述されたように図３のブロック３０６と関連して実行されてもよい。いくつかの実施例において、方法５００の動作は、図２に示されるコンピューティングデバイス１０２の環境２００の１つ以上のコンポーネントにより実行されてもよいことが十分理解されるべきである。方法５００はブロック５０２で開始し、ブロック５０２において、ＮＩＣドライバ２０６は、ＮＩＣ１３２をＱＵＩＣ接続に関連づけられた１つ以上の暗号化キーで（例えば、特定のＱＵＩＣ接続ＩＤで）プログラムする。ＮＩＣ１３２は、ＱＵＩＣ接続がリモートホストでオープンされたとき又はＱＵＩＣ接続がその他の方法で初期化されたとき、暗号化キーでプログラムされてよい。暗号化キーは、例えば、セキュアキー交換又は他のセキュアプロセスを使用して、リモートホストとの間で確立されてもよい。暗号化キーは、関連づけられたＱＵＩＣ接続の存続期間の間、ＮＩＣ１３２により記憶されてよい。いくつかの実施例において、暗号化キーは、関連づけられたＱＵＩＣ接続の存続期間の間、必要に応じて、ＱＵＩＣプロトコルスタック２０４により更新されてもよい。
【００３７】
ブロック５０４において、ＮＩＣドライバ２０６は、ＱＵＩＣパケットを送信のためにＮＩＣ１３２に渡す。いくつかの実施例において、ブロック５０６において、ＮＩＣ１３２は、図３及び図４と関連して上述されたように、大容量送信オフロード（ＬＳＯ）アクセラレーションを実行してもよい。当然ながら、いくつかの実施例において、供給されたＱＵＩＣパケットはＭＳＳより小さくてもよく、あるいはその他の方法でハードウェアＬＳＯアクセラレーションを要求しなくてもよい。
【００３８】
ブロック５０８において、ＮＩＣ１３２は、関連づけられたＱＵＩＣ接続に対してプログラムされた暗号化キーを使用して、ＱＵＩＣパケットの（又は、必要に応じて、ＬＳＯアクセラレーションから出力されたセグメント化されたＱＵＩＣパケットの）平文ペイロードを暗号化する。ＮＩＣ１３２は、各ＱＵＩＣパケットの平文ペイロードを暗号化されたペイロードで置換してよい。ＮＩＣ１３２は、ＱＵＩＣプロトコルに適した任意の暗号化プロトコルを使用してペイロードを暗号化してよい。例えば、ＮＩＣ１３２は、ＴＬＳ／ＳＳＬ又はＨＴＴＰセキュア（ＨＴＴＰＳ）暗号化のような１つ以上のアプリケーションレイヤ暗号化プロトコルを実行してもよい。さらに、平文ペイロードとして説明されているが、いくつかの実施例において、ＱＵＩＣパケットのペイロードは、ＮＩＣ１３２により暗号化される前に、スクランブルされ、暗号化され、あるいはその他の方法で前処理されてもよいことが理解されるべきである。いくつかの実施例において、ＮＩＣ１３２は、ペイロードの暗号化の後、パケット番号を別個に暗号化してもよい。ブロック５１０において、ＮＩＣ１３２は、チェックサム、署名、認証タグ、又はＱＵＩＣパケットが本物であるか又はその他の方法で改ざんされていないことを検証するために使用できる他の情報を計算してもよい。ブロック５１２において、ＮＩＣ１３２は、認証データを各ＱＵＩＣパケットに追加する。認証データを追加した後、方法５００はブロック５０４にループバックし、パケットデータを処理することを継続する。上述されたように、暗号化が完了した後、暗号化されたＱＵＩＣパケットはリモートホストに送信される。
【００３９】
次に図６を参照し、使用において、コンピューティングデバイス１０２は、アクセラレートされたパケット解読のための方法６００を実行し得る。方法６００は、例えば、上述されたように図３のブロック３１２と関連して実行されてもよい。いくつかの実施例において、方法６００の動作は、図２に示されるコンピューティングデバイス１０２の環境２００の１つ以上のコンポーネントにより実行されてもよいことが十分理解されるべきである。方法６００はブロック６０２で開始し、ブロック６０２において、ＮＩＣドライバ２０６は、ＮＩＣ１３２をＱＵＩＣ接続に関連づけられた１つ以上の暗号化キーで（例えば、特定のＱＵＩＣ接続ＩＤで）プログラムする。上述されたように、ＮＩＣ１３２は、ＱＵＩＣ接続がリモートホストでオープンされたとき又はＱＵＩＣ接続がその他の方法で初期化されたとき、暗号化キーでプログラムされてよい。暗号化キーは、例えば、セキュアキー交換又は他のセキュアプロセスを使用して、リモートホストとの間で確立されてもよい。暗号化キーは、関連づけられたＱＵＩＣ接続の存続期間の間、ＮＩＣ１３２により記憶されてよい。いくつかの実施例において、暗号化キーは、関連づけられたＱＵＩＣ接続の存続期間の間、必要に応じて、ＱＵＩＣプロトコルスタック２０４により更新されてもよい。
【００４０】
ブロック６０４において、ＮＩＣ１３２は、リモートホストからネットワーク１０４を通じて受信したＱＵＩＣパケットを認識する。ＮＩＣ１３２は、入ってくるネットワークパケットのパケットヘッダを解析し、実行時構成（runtime  configuration）を介してＱＵＩＣパケットを認識してよい。例えば、ＮＩＣ１３２は、ＱＵＩＣパケットを特定の宛先ポートを有するＵＤＰパケットとして認識してもよい。この例において、ポート番号はＮＩＣドライバ２０６により供給される。
【００４１】
ブロック６０６において、ＮＩＣ１３２は、関連づけられたＱＵＩＣ接続に対してプログラムされた暗号化キーを使用して、受信したＱＵＩＣパケットの暗号化されたペイロードを解読する。ＮＩＣ１３２は、各ＱＵＩＣパケットの暗号化されたペイロードを、解読された平文ペイロードで置換してよい。ＮＩＣ１３２は、ＱＵＩＣプロトコルに適した任意の暗号化プロトコルを使用してペイロードを解読してよい。例えば、ＮＩＣ１３２は、ＴＬＳ／ＳＳＬ又はＨＴＴＰセキュア（ＨＴＴＰＳ）暗号化のような１つ以上のアプリケーションレイヤ暗号化プロトコルを実行してもよい。さらに、平文ペイロードとして説明されているが、いくつかの実施例において、ＮＩＣ１３２による解読の後のＱＵＩＣパケットのペイロードは、さらにデスクランブルされ、解読され、あるいはその他の方法で後処理されてもよいことが理解されるべきである。いくつかの実施例において、ＮＩＣ１３２は、ペイロードの解読の前、パケット番号を別個に解読してもよい。ブロック６０８において、ＮＩＣ１３２は、ＱＵＩＣパケットに含まれる認証データを使用して、受信したＱＵＩＣパケットを検証する。例えば、ＮＩＣ１３２は、チェックサム、署名、認証タグ、又はＱＵＩＣパケットが本物であるか又はその他の方法で改ざんされていないことを検証するために使用できる他の情報を検証してもよい。ＱＵＩＣパケットを解読し、検証した後、方法６００はブロック６０４にループバックし、ＱＵＩＣパケットを処理することを継続する。図３と関連して上述されたように、解読の後、受信したパケットは、受信側スケーリング又はフィルタリングを使用する処理のためにプロセッサコア１２２に転送されてよい。
【００４２】
次に図７を参照し、使用において、コンピューティングデバイス１０２は、アクセラレートされた受信側スケーリング及びフィルタリングのための方法７００を実行し得る。方法７００は、例えば、上述されたように図３のブロック３１４と関連して実行されてもよい。いくつかの実施例において、方法７００の動作は、図２に示されるコンピューティングデバイス１０２の環境２００の１つ以上のコンポーネントにより実行されてもよいことが十分理解されるべきである。方法７００はブロック７０２で開始し、ブロック７０２において、ＮＩＣドライバ２０６は、１つ以上の受信キューをコンピューティングデバイス１０２のプロセッサコア１２２に関連づける。以下でさらに説明されるように、各プロセッサコア１２２は、そのプロセッサコア１２２に関連づけられた１つ以上の受信キューから受信したＱＵＩＣパケットを処理する。各受信キューは関連づけられたキュー識別子を有し、これは整数値として具現化されてもよい。
【００４３】
ブロック７０４において、ＮＩＣドライバ２０６は、ＮＩＣ１３２を、受信したＱＵＩＣパケット内のエントロピーの１つ以上のソースで構成する。例えば、ＮＩＣドライバ２０６は、ＱＵＩＣ接続ＩＤ又はＱＵＩＣショートパケットタイプフィールドのようなＱＵＩＣヘッダの１つ以上のフィールドを指定してもよい。別の例として、ＮＩＣドライバ２０６は、ＱＵＩＣストリームＩＤのような平文ペイロード内の１つ以上のフィールドを指定してもよい。ゆえに、いくつかの実施例において、ＱＵＩＣパケットの平文コンテンツに基づいてＲＳＳ及び／又はフィルタリングを実行することは、ＮＩＣ１３２によりハードウェアで解読を実行することをさらに要求する。別の例として、ＮＩＣドライバ２０６は、ソースＩＰアドレスとソースＵＤＰポートと宛先ＩＰアドレスと宛先ＵＤＰポートとを含むＵＤＰ４タプルを指定してもよい。
【００４４】
ブロック７０６において、ＮＩＣドライバ２０６は、ＮＩＣ１３２を、エントロピーの所与のソースに基づいて値の範囲を生成する割り当て機能で構成する。以下でさらに説明されるように、割り当て機能により出力された値の範囲は、受信したＱＵＩＣパケットを処理するために使用される受信キューのキュー識別子に対応する。いくつかの実施例において、割り当て機能は、受信したＱＵＩＣパケットを受信キューにわたり均等に（及び、これにより、対応するプロセッサコア１２２にわたり均等に）分配するために使用されてもよい。例えば、割り当て機能は、値の範囲にわたり一様に動作するハッシュ機能として具現化されてもよい。別の例として、割り当て機能は、スケジューリング機能（例えば、ラウンドロビンスケジューリング、優先度スケジューリング、又は他のスケジューリングアルゴリズム）として具現化されてもよい。さらに、又は別法として、いくつかの実施例においてＱＵＩＣパケットをプロセッサコア１２２にわたり均等に分配するのでなく、いくつかの実施例において割り当て機能は、特定のＱＵＩＣパケットを特定のプロセッサコア１２２に割り当てるフィルタリング機能を実行してもよい。例えば、割り当て機能は、特定の値（及び、ゆえに特定の受信キュー）を特定のアプリケーション、接続ＩＤ、又は他のパケットデータに割り当ててもよい。この例において、特定のアプリケーション、ＱＵＩＣ接続、又は他のパケットデータに関連づけられたすべてのＱＵＩＣパケットは、同じプロセッサコア１２２により処理されてもよい。
【００４５】
ブロック７０８において、ＮＩＣ１３２は、リモートホストからネットワーク１０４を通じて受信したＱＵＩＣパケットを認識する。上述されたように、ＮＩＣ１３２は、入ってくるネットワークパケットのパケットヘッダを解析し、実行時構成を介してＱＵＩＣパケットを認識してよい。例えば、ＮＩＣ１３２は、ＱＵＩＣパケットを特定の宛先ポートを有するＵＤＰパケットとして認識してもよい。この例において、ポート番号はＮＩＣドライバ２０６により供給される。いくつかの実施例において、ブロック７１０において、ＮＩＣ１３２は、図３及び図６と関連して上述されたように、ＱＵＩＣパケットペイロードを解読し、検証してもよい。
【００４６】
ブロック７１２において、ＮＩＣ１３２は、割り当て機能を構成されたエントロピーソースで評価してキュー識別子を決定する。例えば、ＮＩＣ１３２は、ネットワークパケットから１つ以上のフィールド（例えば、ＱＵＩＣ接続ＩＤ、ＱＵＩＣショートパケットタイプフィールド、ＱＵＩＣストリームＩＤ、ＵＤＰ４タプル、又は他のフィールド）を抽出し、抽出されたフィールドを割り当て機能への入力として提供してもよい。割り当て機能は、キュー識別子に対応する値を出力する。ブロック７１４において、ＮＩＣ１３２は、受信したＱＵＩＣパケットを識別された受信キューに転送する。例えば、ＮＩＣ１３２は、受信したＱＵＩＣパケットをメモリ１２６内の適切な位置に記憶してもよい。
【００４７】
ブロック７１６において、プロセッサコア１２２は、関連づけられた受信キュー内の受信したＱＵＩＣパケットを処理する。プロセッサコア１２２は、例えば、割り込み、ＤＭＡ完了、又はＮＩＣ１３２により生成される別の通知に応答して、ＱＵＩＣパケットを処理してもよい。プロセッサコア１２２は、パケットヘッダ及び平文ペイロードを含むＱＵＩＣパケットに対して任意のネットワーク又は他のアプリケーション処理を実行してよい。いくつかの実施例において、ブロック７１８において、ＱＵＩＣプロトコルスタック２０４は、受信したパケットの１つ以上のＱＵＩＣヘッダを処理してもよい。いくつかの実施例において、ブロック７２０において、アプリケーション２０２は、ＱＵＩＣパケットの平文ペイロードを処理してもよい。ＱＵＩＣパケットデータを適切なプロセッサコア１２２に転送した後、方法７００はブロック７０８にループバックし、入ってくるネットワークパケットデータを処理することを継続する。
【００４８】
いくつかの実施例において、方法３００、４００、５００、６００、及び／又は７００はコンピュータ読取可能媒体に記憶された様々な命令として具現化されてよく、該命令がプロセッサ１２０、ＮＩＣ１３２、アクセラレータ１３４、及び／又はコンピューティングデバイス１０２の他のコンポーネントにより実行されて、コンピューティングデバイス１０２にそれぞれの方法３００、４００、５００、６００、及び／又は７００を実行させてもよい。コンピュータ読取可能媒体は、これらに限られないがメモリ１２６、データ記憶デバイス１２８、ファームウェアデバイス、マイクロコード、コンピューティングデバイス１０２の他のメモリ若しくはデータ記憶デバイス、コンピューティングデバイス１０２の周辺デバイス１３６により読み取り可能なポータブル媒体、及び／又は他の媒体を含む、コンピューティングデバイス１０２により読み取りが可能な任意のタイプの媒体として具現化されてよい。
【００４９】
本明細書で開示される技術の例示的な例が以下で提供される。技術の実施例は、以下で説明される例のうち任意の１つ以上及び任意の組み合わせを含み得る。
【００５０】
例１は、アクセラレートされたパケット処理のためのコンピューティングデバイスを含み、当該コンピューティングデバイスは、ネットワークコントローラと、（ｉ）上記ネットワークコントローラをＱＵＩＣ接続に関連づけられた暗号化キーでプログラムし、（ｉｉ）第１のＱＵＩＣパケットを上記ネットワークコントローラに渡すネットワークコントローラドライバであり、上記第１のＱＵＩＣパケットは、ＱＵＩＣヘッダと平文ペイロードとを含むＵＤＰパケットを含み、上記第１のＱＵＩＣパケットは上記ＱＵＩＣ接続に関連づけられる、ネットワークコントローラドライバと、を含み、上記ネットワークコントローラは、上記第１のＱＵＩＣパケットの上記平文ペイロードを上記暗号化キーで暗号化して上記第１のＱＵＩＣパケットの暗号化されたペイロードを生成する暗号アクセラレータを含み、上記ネットワークコントローラは、上記平文ペイロードの暗号化に応答して、上記暗号化されたペイロードを含む上記第１のＱＵＩＣパケットを上記ＱＵＩＣ接続に関連づけられたリモートコンピューティングデバイスに送信する。
【００５１】
例２は、例１に記載の構成要件を含み、上記第１のＱＵＩＣパケットの上記平文ペイロードを暗号化することは、上記平文ペイロードをアプリケーションレイヤ暗号化プロトコルで暗号化することを含む。
【００５２】
例３は、例１及び２のうちいずれか１つに記載の構成要件を含み、上記暗号アクセラレータはさらに、（ｉ）上記第１のＱＵＩＣパケットの認証データを計算し、（ｉｉ）上記認証データを上記第１のＱＵＩＣパケットに追加し、上記第１のＱＵＩＣパケットを送信することは、上記認証データの追加に応答して上記第1のＱＵＩＣパケットを送信することを含む。
【００５３】
例４は、例１〜３のうちいずれか１つに記載の構成要件を含み、上記ネットワークコントローラは、上記第１のＱＵＩＣパケットを複数のセグメント化されたＱＵＩＣパケットにセグメント化する大容量送信オフロードアクセラレータをさらに含み、上記セグメント化されたＱＵＩＣパケットの各々は平文ペイロードを含み、所定のサイズ以下であり、上記平文ペイロードを暗号化することは、上記セグメント化されたＱＵＩＣパケットの各々の上記平文ペイロードを上記暗号化キーで暗号化して上記セグメント化されたＱＵＩＣパケットの各々の暗号化されたペイロードを生成することを含み、上記第１のＱＵＩＣパケットを送信することは、上記複数のセグメント化されたＱＵＩＣパケットを送信することを含む。
【００５４】
例５は、例１〜４のうちいずれか１つに記載の構成要件を含み、上記大容量送信オフロードアクセラレータはさらに、上記第１のＱＵＩＣパケットから上記ＱＵＩＣヘッダを上記セグメント化されたＱＵＩＣパケットの各々にコピーし、上記セグメント化されたＱＵＩＣパケットの各々の上記ＱＵＩＣヘッダのパケット番号を更新する。
【００５５】
例６は、例１〜５のうちいずれか１つに記載の構成要件を含み、上記第１のＱＵＩＣパケットを生成し、上記第１のＱＵＩＣパケットの上記ＱＵＩＣヘッダはパケット番号を含み、上記第１のＱＵＩＣパケットの長さに基づいて上記第１のＱＵＩＣパケットから生成されるセグメント化されたＱＵＩＣパケットの数を計算し、上記第１のＱＵＩＣパケットの上記パケット番号と上記セグメント化されたＱＵＩＣパケットの数とに基づいて、次のＱＵＩＣパケットのための次パケット番号を計算するＱＵＩＣプロトコルスタック、をさらに含む。
【００５６】
例７は、例１〜６のうちいずれか１つに記載の構成要件を含み、上記ネットワークコントローラドライバはさらに、上記ネットワークコントローラが大容量送信オフロードが可能かどうかを決定し、上記ネットワークコントローラが大容量送信オフロードが可能でないとの決定に応答して上記第１のＱＵＩＣパケットを上記複数のセグメント化されたＱＵＩＣパケットにセグメント化する。
【００５７】
例８は、アクセラレートされたパケット処理のためのコンピューティングデバイスを含み、当該コンピューティングデバイスは、ネットワークコントローラと、上記ネットワークコントローラをＱＵＩＣ接続に関連づけられた暗号化キーでプログラムするネットワークコントローラドライバと、を含み、上記ネットワークコントローラは、（ｉ）リモートコンピューティングデバイスから第１のネットワークパケットを受信し、（ｉｉ）上記第１のネットワークパケットがＱＵＩＣパケットを含むかどうかを決定し、上記ＱＵＩＣパケットは、ＱＵＩＣヘッダと暗号化されたペイロードとを含むＵＤＰパケットを含み、上記ＱＵＩＣパケットは上記ＱＵＩＣ接続に関連づけられ、上記ネットワークコントローラは、上記第１のネットワークパケットがＱＵＩＣパケットを含むとの決定に応答して上記第１のネットワークパケットの上記暗号化されたペイロードを上記暗号化キーで解読して上記第１のネットワークパケットの平文ペイロードを生成する暗号アクセラレータを含む。
【００５８】
例９は、例８に記載の構成要件を含み、上記第１のネットワークパケットの上記暗号化されたペイロードを解読することは、上記暗号化されたペイロードをアプリケーションレイヤ暗号化プロトコルで解読することを含む。
【００５９】
例１０は、例８及び９のうちいずれか１つに記載の構成要件を含み、上記第１のネットワークパケットは認証データをさらに含み、上記暗号アクセラレータはさらに、上記第１のネットワークパケットがＱＵＩＣパケットを含むとの決定に応答して上記第１のネットワークパケットを上記認証データで検証する。
【００６０】
例１１は、例８〜１０のうちいずれか１つに記載の構成要件を含み、第１のプロセッサコアとＱＵＩＣプロトコルスタックとをさらに含み、上記ネットワークコントローラは、（ｉ）上記暗号化されたペイロードの解読に応答して所定の割り当て機能を所定のエントロピーソースで評価してキュー識別子を生成し、（ｉｉ）上記所定の割り当て機能の評価に応答して上記第１のネットワークパケットを上記キュー識別子に関連づけられた受信キューに転送する受信側スケーリングアクセラレータをさらに含み、上記ＱＵＩＣプロトコルスタックは、上記第１のプロセッサコアにより、上記第１のネットワークパケットの上記受信キューへの転送に応答して上記第１のネットワークパケットを処理し、上記第１のプロセッサコアは上記受信キューに関連づけられる。
【００６１】
例１２は、例８〜１１のうちいずれか１つに記載の構成要件を含み、上記ネットワークコントローラドライバはさらに、上記ネットワークコントローラを上記所定のエントロピーソースで構成する。
【００６２】
例１３は、例８〜１２のうちいずれか１つに記載の構成要件を含み、上記エントロピーソースは、上記第１のネットワークパケットの上記ＱＵＩＣヘッダのフィールドを含む。
【００６３】
例１４は、例８〜１３のうちいずれか１つに記載の構成要件を含み、上記エントロピーソースは、ＱＵＩＣ接続識別子又はＱＵＩＣショートパケットタイプフィールドを含む。
【００６４】
例１５は、例８〜１４のうちいずれか１つに記載の構成要件を含み、上記エントロピーソースは、上記第１のネットワークパケットの上記平文ペイロードのフィールドを含む。
【００６５】
例１６は、例８〜１５のうちいずれか１つに記載の構成要件を含み、上記エントロピーソースは、ＱＵＩＣストリーム識別子を含む。
【００６６】
例１７は、例８〜１６のうちいずれか１つに記載の構成要件を含み、上記エントロピーソースは、上記第１のネットワークパケットのＵＤＰソースＩＰアドレスとＵＤＰ宛先ＩＰアドレスとＵＤＰソースポートとＵＤＰ宛先ポートとを含むタプルを含む。
【００６７】
例１８は、例８〜１７のうちいずれか１つに記載の構成要件を含み、上記ネットワークコントローラドライバはさらに、上記ネットワークコントローラを上記所定の割り当て機能で構成する。
【００６８】
例１９は、例８〜１８のうちいずれか１つに記載の構成要件を含み、上記所定の割り当て機能は、上記エントロピーソースに基づくフィルタ機能を含む。
【００６９】
例２０は、例８〜１９のうちいずれか１つに記載の構成要件を含み、上記ネットワークコントローラドライバはさらに、上記第１のプロセッサコアを上記受信キューに関連づける。
【００７０】
例２１は、アクセラレートされたパケット処理のための方法を含み、当該方法は、コンピューティングデバイスにより、上記コンピューティングデバイスのネットワークコントローラをＱＵＩＣ接続に関連づけられた暗号化キーでプログラムするステップと、上記コンピューティングデバイスにより、第１のＱＵＩＣパケットを上記コンピューティングデバイスの上記ネットワークコントローラに渡すステップであり、上記第１のＱＵＩＣパケットは、ＱＵＩＣヘッダと平文ペイロードとを含むＵＤＰパケットを含み、上記第１のＱＵＩＣパケットは上記ＱＵＩＣ接続に関連づけられる、ステップと、上記ネットワークコントローラにより、上記第１のＱＵＩＣパケットの上記平文ペイロードを上記暗号化キーで暗号化して上記第１のＱＵＩＣパケットの暗号化されたペイロードを生成するステップと、上記ネットワークコントローラにより、上記平文ペイロードの暗号化に応答して、上記暗号化されたペイロードを含む上記第１のＱＵＩＣパケットを上記ＱＵＩＣ接続に関連づけられたリモートコンピューティングデバイスに送信するステップと、を含む。
【００７１】
例２２は、例２１に記載の構成要件を含み、上記第１のＱＵＩＣパケットの上記平文ペイロードを暗号化することは、上記平文ペイロードをアプリケーションレイヤ暗号化プロトコルで暗号化することを含む。
【００７２】
例２３は、例２１及び２２のうちいずれか１つに記載の構成要件を含み、上記ネットワークコントローラにより、上記第１のＱＵＩＣパケットの認証データを計算するステップと、上記ネットワークコントローラにより、上記認証データを上記第１のＱＵＩＣパケットに追加するステップと、をさらに含み、上記第１のＱＵＩＣパケットを送信するステップは、上記認証データを追加したことに応答して上記第１のＱＵＩＣパケットを送信するステップを含む。
【００７３】
例２４は、例２１〜２３のうちいずれか１つに記載の構成要件を含み、上記ネットワークコントローラにより、上記第１のＱＵＩＣパケットを複数のセグメント化されたＱＵＩＣパケットにセグメント化するステップ、をさらに含み、上記セグメント化されたＱＵＩＣパケットの各々は平文ペイロードを含み、所定のサイズ以下であり、上記平文ペイロードを暗号化することは、上記セグメント化されたＱＵＩＣパケットの各々の上記平文ペイロードを上記暗号化キーで暗号化して上記セグメント化されたＱＵＩＣパケットの各々の暗号化されたペイロードを生成することを含み、上記第１のＱＵＩＣパケットを送信するステップは、上記複数のセグメント化されたＱＵＩＣパケットを送信するステップを含む。
【００７４】
例２５は、例２１〜２４のうちいずれか１つに記載の構成要件を含み、上記ネットワークコントローラにより、上記第１のＱＵＩＣパケットから上記ＱＵＩＣヘッダを上記セグメント化されたＱＵＩＣパケットの各々にコピーするステップと、上記ネットワークコントローラにより、上記セグメント化されたＱＵＩＣパケットの各々の上記ＱＵＩＣヘッダのパケット番号を更新するステップと、をさらに含む。
【００７５】
例２６は、例２１〜２５のうちいずれか１つに記載の構成要件を含み、上記コンピューティングデバイスにより、上記第１のＱＵＩＣパケットを生成するステップであり、上記第１のＱＵＩＣパケットの上記ＱＵＩＣヘッダはパケット番号を含む、ステップと、上記コンピューティングデバイスにより、上記第１のＱＵＩＣパケットの長さに基づいて上記第１のＱＵＩＣパケットから生成されるセグメント化されたＱＵＩＣパケットの数を計算するステップと、上記コンピューティングデバイスにより、上記第１のＱＵＩＣパケットの上記パケット番号と上記セグメント化されたＱＵＩＣパケットの数とに基づいて、次のＱＵＩＣパケットのための次パケット番号を計算するステップと、をさらに含む。
【００７６】
例２７は、例２１〜２６のうちいずれか１つに記載の構成要件を含み、上記コンピューティングデバイスにより、上記ネットワークコントローラが大容量送信オフロードが可能かどうかを決定するステップと、上記コンピューティングデバイスのプロセッサコアにより、上記ネットワークコントローラが大容量送信オフロードが可能でないと決定したことに応答して上記第１のＱＵＩＣパケットを上記複数のセグメント化されたＱＵＩＣパケットにセグメント化するステップと、をさらに含む。
【００７７】
例２８は、アクセラレートされたパケット処理のための方法を含み、当該方法は、コンピューティングデバイスにより、上記コンピューティングデバイスのネットワークコントローラをＱＵＩＣ接続に関連づけられた暗号化キーでプログラムするステップと、上記ネットワークコントローラにより、リモートコンピューティングデバイスから第１のネットワークパケットを受信するステップと、上記ネットワークコントローラにより、上記第１のネットワークパケットがＱＵＩＣパケットを含むかどうかを決定するステップであり、上記ＱＵＩＣパケットは、ＱＵＩＣヘッダと暗号化されたペイロードとを含むＵＤＰパケットを含み、上記ＱＵＩＣパケットは上記ＱＵＩＣ接続に関連づけられる、ステップと、上記ネットワークコントローラにより、上記第１のネットワークパケットがＱＵＩＣパケットを含むと決定したことに応答して、上記第１のネットワークパケットの上記暗号化されたペイロードを上記暗号化キーで解読して上記第１のネットワークパケットの平文ペイロードを生成するステップと、を含む。
【００７８】
例２９は、例２８に記載の構成要件を含み、上記第１のネットワークパケットの上記暗号化されたペイロードを解読することは、上記暗号化されたペイロードをアプリケーションレイヤ暗号化プロトコルで解読することを含む。
【００７９】
例３０は、例２８及び２９のうちいずれか１つに記載の構成要件を含み、上記第１のネットワークパケットは認証データをさらに含み、当該方法は、上記ネットワークコントローラにより、上記第１のネットワークパケットがＱＵＩＣパケットを含むと決定したことに応答して上記第１のネットワークパケットを上記認証データで検証するステップをさらに含む。
【００８０】
例３１は、例２８〜３０のうちいずれか１つに記載の構成要件を含み、上記ネットワークコントローラにより、上記暗号化されたペイロードを解読したことに応答して所定の割り当て機能を所定のエントロピーソースで評価してキュー識別子を生成するステップと、上記ネットワークコントローラにより、上記所定の割り当て機能を評価したことに応答して上記第１のネットワークパケットを上記キュー識別子に関連づけられた受信キューに転送するステップと、上記コンピューティングデバイスの第１のプロセッサコアにより、上記第１のネットワークパケットを上記受信キューに転送したことに応答して上記第１のネットワークパケットを処理するステップであり、上記第１のプロセッサコアは上記受信キューに関連づけられる、ステップと、をさらに含む。
【００８１】
例３２は、例２８〜３１のうちいずれか１つに記載の構成要件を含み、上記コンピューティングデバイスにより、上記ネットワークコントローラを上記所定のエントロピーソースで構成するステップ、をさらに含む。
【００８２】
例３３は、例２８〜３２のうちいずれか１つに記載の構成要件を含み、上記エントロピーソースは、上記第１のネットワークパケットの上記ＱＵＩＣヘッダのフィールドを含む。
【００８３】
例３４は、例２８〜３３のうちいずれか１つに記載の構成要件を含み、上記エントロピーソースは、ＱＵＩＣ接続識別子又はＱＵＩＣショートパケットタイプフィールドを含む。
【００８４】
例３５は、例２８〜３４のうちいずれか１つに記載の構成要件を含み、上記エントロピーソースは、上記第１のネットワークパケットの上記平文ペイロードのフィールドを含む。
【００８５】
例３６は、例２８〜３５のうちいずれか１つに記載の構成要件を含み、上記エントロピーソースは、ＱＵＩＣストリーム識別子を含む。
【００８６】
例３７は、例２８〜３６のうちいずれか１つに記載の構成要件を含み、上記エントロピーソースは、上記第１のネットワークパケットのＵＤＰソースＩＰアドレスとＵＤＰ宛先ＩＰアドレスとＵＤＰソースポートとＵＤＰ宛先ポートとを含むタプルを含む。
【００８７】
例３８は、例２８〜３７のうちいずれか１つに記載の構成要件を含み、上記コンピューティングデバイスにより、上記ネットワークコントローラを上記所定の割り当て機能で構成するステップ、をさらに含む。
【００８８】
例３９は、例２８〜３８のうちいずれか１つに記載の構成要件を含み、上記所定の割り当て機能は、上記エントロピーソースに基づくフィルタ機能を含む。
【００８９】
例４０は、例２８〜３９のうちいずれか１つに記載の構成要件を含み、上記コンピューティングデバイスにより、上記第１のプロセッサコアを上記受信キューに関連づけるステップ、をさらに含む。
【００９０】
例４１は、記憶された複数の命令を含む１つ以上のコンピュータ読取可能記憶媒体を含み、上記命令は、実行されたことに応答してコンピューティングデバイスに、上記コンピューティングデバイスのネットワークコントローラをＱＵＩＣ接続に関連づけられた暗号化キーでプログラムするステップと、第１のＱＵＩＣパケットを上記コンピューティングデバイスの上記ネットワークコントローラに渡すステップであり、上記第１のＱＵＩＣパケットは、ＱＵＩＣヘッダと平文ペイロードとを含むＵＤＰパケットを含み、上記第１のＱＵＩＣパケットは上記ＱＵＩＣ接続に関連づけられる、ステップと、上記第１のＱＵＩＣパケットの上記平文ペイロードを上記暗号化キーで暗号化して上記第１のＱＵＩＣパケットの暗号化されたペイロードを生成するステップと、上記平文ペイロードの暗号化に応答して、上記暗号化されたペイロードを含む上記第１のＱＵＩＣパケットを上記ＱＵＩＣ接続に関連づけられたリモートコンピューティングデバイスに送信するステップと、を実行させる。
【００９１】
例４２は、例４１に記載の構成要件を含み、上記第１のＱＵＩＣパケットの上記平文ペイロードを暗号化することは、上記平文ペイロードをアプリケーションレイヤ暗号化プロトコルで暗号化することを含む。
【００９２】
例４３は、例４１及び４２のうちいずれか１つに記載の構成要件を含み、記憶された複数の命令をさらに含み、上記命令は、実行されたことに応答して上記コンピューティングデバイスに、上記ネットワークコントローラにより、上記第１のＱＵＩＣパケットの認証データを計算するステップと、上記ネットワークコントローラにより、上記認証データを上記第１のＱＵＩＣパケットに追加するステップと、を実行させ、上記第１のＱＵＩＣパケットを送信するステップは、上記認証データを追加したことに応答して上記第１のＱＵＩＣパケットを送信するステップを含む。
【００９３】
例４４は、例４１〜４３のうちいずれか１つに記載の構成要件を含み、記憶された複数の命令をさらに含み、上記命令は、実行されたことに応答して上記コンピューティングデバイスに、上記ネットワークコントローラにより、上記第１のＱＵＩＣパケットを複数のセグメント化されたＱＵＩＣパケットにセグメント化するステップ、を実行させ、上記セグメント化されたＱＵＩＣパケットの各々は平文ペイロードを含み、所定のサイズ以下であり、上記平文ペイロードを暗号化することは、上記セグメント化されたＱＵＩＣパケットの各々の上記平文ペイロードを上記暗号化キーで暗号化して上記セグメント化されたＱＵＩＣパケットの各々の暗号化されたペイロードを生成することを含み、上記第１のＱＵＩＣパケットを送信するステップは、上記複数のセグメント化されたＱＵＩＣパケットを送信するステップを含む。
【００９４】
例４５は、例４１〜４４のうちいずれか１つに記載の構成要件を含み、記憶された複数の命令をさらに含み、上記命令は、実行されたことに応答して上記コンピューティングデバイスに、上記ネットワークコントローラにより、上記第１のＱＵＩＣパケットから上記ＱＵＩＣヘッダを上記セグメント化されたＱＵＩＣパケットの各々にコピーするステップと、上記ネットワークコントローラにより、上記セグメント化されたＱＵＩＣパケットの各々の上記ＱＵＩＣヘッダのパケット番号を更新するステップと、を実行させる。
【００９５】
例４６は、例４１〜４５のうちいずれか１つに記載の構成要件を含み、記憶された複数の命令をさらに含み、上記命令は、実行されたことに応答して上記コンピューティングデバイスに、上記コンピューティングデバイスにより、上記第１のＱＵＩＣパケットを生成するステップであり、上記第１のＱＵＩＣパケットの上記ＱＵＩＣヘッダはパケット番号を含む、ステップと、上記コンピューティングデバイスにより、上記第１のＱＵＩＣパケットの長さに基づいて上記第１のＱＵＩＣパケットから生成されるセグメント化されたＱＵＩＣパケットの数を計算するステップと、上記コンピューティングデバイスにより、上記第１のＱＵＩＣパケットの上記パケット番号と上記セグメント化されたＱＵＩＣパケットの数とに基づいて、次のＱＵＩＣパケットのための次パケット番号を計算するステップと、を実行させる。
【００９６】
例４７は、例４１〜４６のうちいずれか１つに記載の構成要件を含み、記憶された複数の命令をさらに含み、上記命令は、実行されたことに応答して上記コンピューティングデバイスに、上記ネットワークコントローラが大容量送信オフロードが可能かどうかを決定するステップと、上記コンピューティングデバイスのプロセッサコアにより、上記ネットワークコントローラが大容量送信オフロードが可能でないと決定したことに応答して上記第１のＱＵＩＣパケットを上記複数のセグメント化されたＱＵＩＣパケットにセグメント化するステップと、を実行させる。
【００９７】
例４８は、記憶された複数の命令を含む１つ以上のコンピュータ読取可能記憶媒体を含み、上記命令は、実行されたことに応答してコンピューティングデバイスに、上記コンピューティングデバイスのネットワークコントローラをＱＵＩＣ接続に関連づけられた暗号化キーでプログラムするステップと、上記ネットワークコントローラにより、リモートコンピューティングデバイスから第１のネットワークパケットを受信するステップと、上記ネットワークコントローラにより、上記第１のネットワークパケットがＱＵＩＣパケットを含むかどうかを決定するステップであり、上記ＱＵＩＣパケットは、ＱＵＩＣヘッダと暗号化されたペイロードとを含むＵＤＰパケットを含み、上記ＱＵＩＣパケットは上記ＱＵＩＣ接続に関連づけられる、ステップと、上記ネットワークコントローラにより、上記第１のネットワークパケットがＱＵＩＣパケットを含むと決定したことに応答して、上記第１のネットワークパケットの上記暗号化されたペイロードを上記暗号化キーで解読して上記第１のネットワークパケットの平文ペイロードを生成するステップと、を実行させる。
【００９８】
例４９は、例４８に記載の構成要件を含み、上記第１のネットワークパケットの上記暗号化されたペイロードを解読することは、上記暗号化されたペイロードをアプリケーションレイヤ暗号化プロトコルで解読することを含む。
【００９９】
例５０は、例４８及び４９のうちいずれか１つに記載の構成要件を含み、上記第１のネットワークパケットは認証データをさらに含み、当該１つ以上のコンピュータ読取可能記憶媒体は、記憶された複数の命令をさらに含み、上記命令は、実行されたことに応答して上記コンピューティングデバイスに、上記ネットワークコントローラにより、上記第１のネットワークパケットがＱＵＩＣパケットを含むと決定したことに応答して上記第１のネットワークパケットを上記認証データで検証するステップを実行させる。
【０１００】
例５１は、例４８〜５０のうちいずれか１つに記載の構成要件を含み、記憶された複数の命令をさらに含み、上記命令は、実行されたことに応答して上記コンピューティングデバイスに、上記ネットワークコントローラにより、上記暗号化されたペイロードを解読したことに応答して所定の割り当て機能を所定のエントロピーソースで評価してキュー識別子を生成するステップと、上記ネットワークコントローラにより、上記所定の割り当て機能を評価したことに応答して上記第１のネットワークパケットを上記キュー識別子に関連づけられた受信キューに転送するステップと、上記コンピューティングデバイスの第１のプロセッサコアにより、上記第１のネットワークパケットを上記受信キューに転送したことに応答して上記第１のネットワークパケットを処理するステップであり、上記第１のプロセッサコアは上記受信キューに関連づけられる、ステップと、を実行させる。
【０１０１】
例５２は、例４８〜５１のうちいずれか１つに記載の構成要件を含み、記憶された複数の命令をさらに含み、上記命令は、実行されたことに応答して上記コンピューティングデバイスに、上記ネットワークコントローラを上記所定のエントロピーソースで構成するステップ、を実行させる。
【０１０２】
例５３は、例４８〜５２のうちいずれか１つに記載の構成要件を含み、上記エントロピーソースは、上記第１のネットワークパケットの上記ＱＵＩＣヘッダのフィールドを含む。
【０１０３】
例５４は、例４８〜５３のうちいずれか１つに記載の構成要件を含み、上記エントロピーソースは、ＱＵＩＣ接続識別子又はＱＵＩＣショートパケットタイプフィールドを含む。
【０１０４】
例５５は、例４８〜５４のうちいずれか１つに記載の構成要件を含み、上記エントロピーソースは、上記第１のネットワークパケットの上記平文ペイロードのフィールドを含む。
【０１０５】
例５６は、例４８〜５５のうちいずれか１つに記載の構成要件を含み、上記エントロピーソースは、ＱＵＩＣストリーム識別子を含む。
【０１０６】
例５７は、例４８〜５６のうちいずれか１つに記載の構成要件を含み、上記エントロピーソースは、上記第１のネットワークパケットのＵＤＰソースＩＰアドレスとＵＤＰ宛先ＩＰアドレスとＵＤＰソースポートとＵＤＰ宛先ポートとを含むタプルを含む。
【０１０７】
例５８は、例４８〜５７のうちいずれか１つに記載の構成要件を含み、記憶された複数の命令をさらに含み、上記命令は、実行されたことに応答して上記コンピューティングデバイスに、上記ネットワークコントローラを上記所定の割り当て機能で構成するステップ、を実行させる。
【０１０８】
例５９は、例４８〜５８のうちいずれか１つに記載の構成要件を含み、上記所定の割り当て機能は、上記エントロピーソースに基づくフィルタ機能を含む。
【０１０９】
例６０は、例４８〜５９のうちいずれか１つに記載の構成要件を含み、記憶された複数の命令をさらに含み、上記命令は、実行されたことに応答して上記コンピューティングデバイスに、上記第１のプロセッサコアを上記受信キューに関連づけるステップ、を実行させる。
【図１】
2019161641.tif 000003
【図２】
2019161641.tif 000004
【図３】
2019161641.tif 000005
【図４】
2019161641.tif 000006
【図５】
2019161641.tif 000007
【図６】
2019161641.tif 000008
【図７】
2019161641.tif 000009
【外国語明細書】
2019161641000001.pdf