(57)【要約】ＴＬＳ／ＳＳＬプロトコルなどのトランスポート層セキュリティプロトコル、ＴＣＰ／ＩＰプロトコルスタックなどのトランスポート層プロトコルスタック、およびインターネットなどのネットワークへのアクセスに必要なネットワーク制御を拡張デバイスにオフロードすることにより、ホストプロセッサの処理負荷が大幅に軽減される。
2021501407.tif 000002
【特許請求の範囲】
【請求項１】
メモリと、
ネットワークコントローラと、
前記メモリおよび前記ネットワークコントローラに結合された拡張プロセッサと
を備えた拡張デバイスであって、前記拡張プロセッサは、
外部バスを介してホストプロセッサで実行されているアプリケーションからトランスポートプロトコルに従ってフォーマットされたアプリケーション通信を受信して、受信されたデータを形成し、
前記受信されたデータが暗号化されるべきであるかどうかを判断し、
前記受信されたデータが暗号化されるべきである場合、セキュリティプロトコルを処理し、前記セキュリティプロトコルは、前記受信されたデータから暗号化されたデータを生成し、
前記トランスポートプロトコルのトランスポート層プロトコルスタックを処理して、前記受信されたデータが暗号化されるべきでない場合は前記受信されたデータから、前記受信されたデータが暗号化されるべきである場合は前記暗号化されたデータから発信ＩＰ通信を生成し、
内部バスを介して前記ネットワークコントローラに前記発信ＩＰ通信を送信し、前記ネットワークコントローラは、前記発信ＩＰ通信をフォーマットしてフォーマットされたＩＰ通信を形成し、前記フォーマットされたＩＰ通信をネットワークに送信する
ように構成された、拡張デバイス。
【請求項２】
前記ネットワークコントローラは、前記ネットワークからデータパケットを受信し、前記データパケットから着信ＩＰ通信を形成し、前記着信ＩＰ通信を前記内部バスを介して前記拡張プロセッサに送信するように構成された、請求項１に記載の拡張デバイス。
【請求項３】
前記拡張プロセッサは、
前記トランスポート層プロトコルスタックを処理して、前記着信ＩＰ通信から処理されたデータを生成し、
前記処理されたデータが暗号化されているかどうかを判断し、
前記処理されたデータが暗号化されている場合、前記セキュリティプロトコルを処理し、前記セキュリティプロトコルは、前記処理されたデータから復号されたデータを生成し、
前記処理されたデータが暗号化されていない場合、前記処理されたデータを前記外部バスを介して前記ホストプロセッサで実行されている前記アプリケーションに送信し、前記復号されたデータは、前記処理されたデータが暗号化されている場合、前記外部バスを介して前記ホストプロセッサで実行されているアプリケーションに送信する
ようにさらに構成された、請求項２に記載の拡張デバイス。
【請求項４】
前記トランスポートプロトコルはＴＣＰ／ＩＰおよびＵＤＰのうちの１つを含む、請求項３に記載の拡張デバイス。
【請求項５】
前記セキュリティプロトコルはＴＬＳ／ＳＳＬを含む、請求項３に記載の拡張デバイス。
【請求項６】
前記拡張プロセッサは第１のカードに常駐し、前記ホストプロセッサは第２のカードに常駐する、請求項３に記載の拡張デバイス。
【請求項７】
前記ＩＰ通信はＩＰデータグラムおよびＵＤＰパケットのうちの１つを含む、請求項３に記載の拡張デバイス。
【請求項８】
拡張デバイスを操作する方法であって、
外部バスを介して、ホストプロセッサ上で実行されているアプリケーションからトランスポートプロトコルに従ってフォーマットされたアプリケーション通信を受信して、受信されたデータを形成するステップと、
前記受信されたデータが暗号化されるべきであるかどうかを判断するステップと、
前記受信されたデータが暗号化されるべきである場合にセキュリティプロトコルを処理するステップであって、前記セキュリティプロトコルは前記受信されたデータから暗号化されたデータを生成する、ステップと、
前記トランスポートプロトコルのトランスポート層プロトコルスタックを処理して、前記受信されたデータが暗号化されるべきでない場合は前記受信されたデータから、前記受信されたデータが暗号化されるべきである場合は前記暗号化されたデータから発信ＩＰ通信を生成する、ステップと、
前記発信ＩＰ通信を内部バスを介してネットワークコントローラに送信するステップと、
前記発信ＩＰ通信をフォーマットしてフォーマットされたＩＰ通信を形成し、前記フォーマットされたＩＰ通信をネットワーク上に送信するステップと
を含む、方法。
【請求項９】
前記ネットワークからデータパケットを受信し、前記データパケットから着信ＩＰ通信を形成し、前記着信ＩＰ通信を前記内部バスを介して拡張プロセッサに送信するステップをさらに含む、請求項８に記載の方法。
【請求項１０】
前記トランスポート層プロトコルスタックを処理して、前記着信ＩＰ通信から処理されたデータを生成するステップと、
前記処理されたデータが暗号化されているかどうかを判断するステップと、
前記処理されたデータが暗号化されている場合、前記セキュリティプロトコルを処理するステップであって、前記セキュリティプロトコルは前記処理されたデータから復号されたデータを生成する、ステップと、
前記処理されたデータが暗号化されていない場合、前記外部バスを介して前記ホストプロセッサ上で実行されている前記アプリケーションに前記処理されたデータを送信し、前記処理されたデータが暗号化されている場合、前記外部バスを介して前記ホストプロセッサ上で実行されている前記アプリケーションに前記復号されたデータを送信するステップと
をさらに含む、請求項９に記載の方法。
【請求項１１】
前記トランスポートプロトコルはＴＣＰ／ＩＰおよびＵＤＰのうちの１つを含む、請求項１０に記載の拡張デバイス。
【請求項１２】
前記セキュリティプロトコルはＴＬＳ／ＳＳＬを含む、請求項１０に記載の拡張デバイス。
【請求項１３】
前記拡張プロセッサは第１のカードに常駐し、前記ホストプロセッサは第２のカードに常駐する、請求項１０に記載の拡張デバイス。
【請求項１４】
前記ＩＰ通信は、ＩＰデータグラムおよびＵＤＰパケットのうちの１つを含む、請求項１０に記載の拡張デバイス。
【請求項１５】
プロセッサによって実行されると、前記プロセッサに拡張デバイスを動作させる方法を実行させるプログラム命令が埋め込まれた、非一時的なコンピュータ可読記憶媒体であって、前記方法は、
外部バスを介して、ホストプロセッサ上で実行されているアプリケーションからトランスポートプロトコルに従ってフォーマットされたアプリケーション通信を受信して受信されたデータを形成するステップと、
前記受信されたデータが暗号化されるべきであるかどうかを判断するステップと、
前記受信されたデータが暗号化されるべきである場合、セキュリティプロトコルを処理するステップであって、前記セキュリティプロトコルは前記受信されたデータから暗号化されたデータを生成する、ステップと、
前記トランスポートプロトコルのトランスポート層プロトコルスタックを処理して、前記受信されたデータが暗号化されるべきでない場合は前記受信されたデータから、前記受信されたデータが暗号化されるべきである場合は前記暗号化されたデータから発信ＩＰ通信を生成するステップと、
前記発信ＩＰ通信を内部バスを介してネットワークコントローラに送信するステップと、
前記発信ＩＰ通信をフォーマットしてフォーマットされたＩＰ通信を形成し、前記フォーマットされたＩＰ通信をネットワーク上に送信するステップと
を含む、媒体。
【請求項１６】
前記ネットワークからデータパケットを受信するステップと、前記データパケットから着信ＩＰ通信を形成するステップと、前記着信ＩＰ通信を前記内部バスを介して拡張プロセッサに送信するステップとをさらに含む、請求項１５に記載の媒体。
【請求項１７】
前記トランスポート層プロトコルスタックを処理して、前記着信ＩＰ通信から処理済みデータを生成するステップと、
前記処理されたデータが暗号化されているかどうかを判断するステップと、
前記処理されたデータが暗号化されている場合に前記セキュリティプロトコルを処理するステップであって、前記セキュリティプロトコルは前記処理されたデータから復号されたデータを生成する、ステップと、
前記処理されたデータが暗号化されていない場合、外部バスを介して前記ホストプロセッサで実行されている前記アプリケーションに前記処理されたデータを送信し、前記処理されたデータが暗号化されている場合、前記外部バスを介して前記ホストプロセッサ上で実行されているアプリケーションに前記復号されたデータを送信するステップと
をさらに含む、請求項１６に記載の媒体。
【請求項１８】
前記トランスポートプロトコルはＴＣＰ／ＩＰおよびＵＤＰのうちの１つを含む、請求項１０に記載の媒体。
【請求項１９】
前記セキュリティプロトコルはＴＬＳ／ＳＳＬを含む、請求項１０に記載の媒体。
【請求項２０】
前記拡張プロセッサは第１のカードに常駐し、前記ホストプロセッサは第２のカードに常駐する、請求項１０に記載の媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
本出願は、インターネットに関し、特に、アルゴリズムをオフロードするための方法、デバイス、およびシステムに関する。
【背景技術】
【０００２】
関連出願の相互参照
本出願は、参照によりその全体が本明細書に組み込まれている、２０１７年１０月２５日に出願された中国特許出願第２０１７１１０１５１９１．９号の優先権を主張するものである。
【０００３】
インターネット技術の発達により、ユーザは、種々の異なる情報にアクセスし、オンラインショッピング、支払い、送金などの様々なオンラインサービスを受けることができる。ＨＴＴＰ（ハイパーテキスト転送プロトコル）は、現在、インターネット上で最も広く使用されているアプリケーションレイヤプロトコルの１つである。ＨＴＴＰはトランスポートレイヤのＴＣＰプロトコルに基づいて通信し、クライアントとサーバとの間でハイパーテキストファイルを伝送する。
【０００４】
しかしながら、インターネットはオープンな環境であるため、またＨＴＴＰプロトコルがウェブブラウザとネットワークサーバとの間で情報を転送するために使用される場合、コンテンツはクリアテキストで送信され、データ暗号化は何ら提供されない。結果として、攻撃者がウェブブラウザとネットワークサーバとの間の送信メッセージを傍受した場合、攻撃者によって情報が直接読み取られ得る。したがって、ＨＴＴＰプロトコルは、銀行カード番号やパスワードのような機密情報を伝送するのに適していない。
【０００５】
ＳＳＬ（Ｓｅｃｕｒｅ  Ｓｏｃｋｅｔｓ  Ｌａｙｅｒ：セキュアソケットレイヤ）およびその後継のトランスポートレイヤセキュリティ（Ｔｒａｎｓｐｏｒｔ  Ｌａｙｅｒ  Ｓｅｃｕｒｉｔｙ：ＴＬＳ）は、ネットワーク通信のためのセキュリティおよびデータ完全性を提供するタイプのセキュアなトランスポートプロトコルである。ＳＳＬプロトコルをＨＴＴＰに追加すると（すなわち、ＨＴＴＰＳ（Ｈｙｐｅｒ  Ｔｅｘｔ  Ｔｒａｎｓｆｅｒ  Ｐｒｏｔｏｃｏｌ  ｏｖｅｒ  Ｓｅｃｕｒｅ  Ｓｏｃｋｅｔ  Ｌａｙｅｒ：セキュアソケットレイヤ上のハイパーテキスト転送プロトコル））、データのセキュアな送信を実現することができる。したがって、ＨＴＴＰＳは、セキュリティの目的を有するＨＴＴＰチャネルである。それはウェブブラウザとネットワークサーバとの間でデータの暗号化送信およびアイデンティティ認証を行うことができ、トランザクション支払いなどの機密情報の送信に使用され得る。
【０００６】
現在、ＴＬＳ／ＳＳＬは既存のネットワーク通信で最も広く使用されているセキュリティプロトコルレイヤの１つであり、多くのインターネット企業がウェブ全体のＨＴＴＰＳのゴールを既に提案している。しかし、ＴＬＳ／ＳＳＬプロトコルの採用の大きなコストは、ハンドシェイクネゴシエーション（暗号化／復号／圧縮／解凍ステップなど）の高い計算密度である。サーバホストは処理のために多くの時間がかかる（これは、ＨＴＴＰＳがＨＴＴＰよりも大幅に遅い主な理由でもある）。
【０００７】
ハードウェアアクセラレーションおよびオフロード（本明細書におけるオフロードは、サーバのＣＰＵで実行されたであろういくつかのアルゴリズムを、チップまたは他のＰＣＩカードを追加することによって処理または実行し、それにより、サーバＣＰＵリソースの消費を低減することを指す）によって、計算集約的な暗号化および復号アルゴリズムなどの動作が、サーバホストのＣＰＵとは別に行われることが可能であり、それにより、ＣＰＵがプロトコルスタックおよびオペレーティングシステムレベルでより多くの要求に対処することができ、したがって、遅延を減らしパフォーマンスを改善する目的を実現することができる。しかしながら、従来のＴＬＳ／ＳＳＬオフロード方法では、部分的なオフロード手法が採用されている。すなわち、ネットワークプロトコルのプロセス全体が依然としてホスト上で実行されていて、ステップの一部のみがオフロードされる。
【０００８】
従来技術では、特別なＴＴＬ／ＳＳＬハードウェアアクセラレーションカードが、サーバからＳＳＬオフロードを実行するために使用される。ＴＴＬ／ＳＳＬハードウェアアクセラレーションカードは、ＴＴＬ／ＳＳＬ暗号化および復号アルゴリズムなどの動作を行い、それにより、サーバ上でＴＴＬ／ＳＳＬ暗号化および復号アルゴリズムを実行することによって引き起こされる計算圧力を低減する。
【０００９】
図１は、従来のオフロードサーバ１００を示すブロック図である。図１に示されるように、オフロードサーバ１００は、ホスト１１０、ネットワークカード１２０、およびＴＬＳ／ＳＳＬアクセラレータカード１３０を含み、これらは、外部バス１４０およびバスプロトコルによって相互接続される。ホスト１１０は、ウェブサービス、セキュリティレイヤプロトコルスタック（ＴＬＳ／ＳＳＬ）ソフトウェア、ＴＣＰ／ＩＰプロトコルスタック、および拡張カードドライバなどを提供するためのアプリケーションを実行することができる。
【００１０】
アプリケーションは、ＴＬＳ／ＳＳＬアクセラレータカードのドライバを介してトランスポートレイヤセキュリティフレームワーク（ＴＬＳ／ＳＳＬ）のインターフェースを呼び出し、ホストのカーネルを介してＴＣＰ／ＩＰプロトコルスタック処理を達成し、ネットワークカードのドライバを介して基礎となるネットワークメッセージを送受信することによって、セキュリティプロトコルアルゴリズムのハードウェアオフロードを達成する。
【００１１】
ネットワークカードは、ホストインターフェースを介して制御側の構成を受信し、コントローラを介してデータ側の処理および転送を達成する。ＴＬＳ／ＳＳＬアクセラレータカード上には、通常、アルゴリズムをオフロードおよび復号するために使用される並列処理のための複数のハードウェアアクセラレーションユニットがある。すべてのアルゴリズムアクセラレーションカーネルは、信頼できるアービトレーションユニットを介してタスクディスパッチおよびデータドメイン分離を行う。
【００１２】
図２（ａ）および図２（ｂ）は、従来のオフロードサーバを動作させる方法を示す図を示す。図２（ａ）は、通信を送信する方法２００を示し、図２（ｂ）は、通信を受信する方法２６０を示す。図２（ａ）に示されるように、方法２００は２１０で始まり、ここで、ホスト上で実行されているアプリケーションが、インターネットのようなネットワークを介してリモートホストに送信されるコマンドを生成する。アプリケーションは、ＴＣＰ／ＩＰまたはＵＤＰなどの使用されるトランスポートプロトコルに従って、コマンドをフォーマットする。たとえば、ＴＣＰ／ＩＰプロトコルは、バイトのストリームとしてコマンドを受信することが期待される。
【００１３】
これに続いて、方法２００は２１２に進み、ここで、ホストは、コマンドがＴＬＳ／ＳＳＬ暗号化などの暗号化を必要とするかどうかを決定する。暗号化が必要とされない場合、方法２００は２１４に進み、ここで、ホストは、トランスポートレイヤプロトコルスタックを介してコマンドを処理する。ＴＣＰ／ＩＰプロトコルが使用される場合、ＴＣＰ／ＩＰプロトコルスタックのレイヤは、アプリケーションレイヤから受信されたバイトのストリームをセグメントに分割し、ヘッダをセグメントに添付する。ヘッダは、送信者および受信者情報、セグメント順序情報、ならびにエラー訂正情報を含むことができる。
【００１４】
セグメントがＴＣＰ／ＩＰプロトコルスタックを通って移動するときに、プロトコルスタックのレイヤが、カプセル化として知られるプロセスでフィールドをヘッダに追加する。ホスト上で実行されているＴＣＰ／ＩＰプロトコルスタックは、ＩＰデータグラムにセグメントをフォーマットする。ＩＰデータグラムは、データグラム長およびシーケンス順序と共にリモートホストのＩＰアドレスを含むヘッダを有する。
【００１５】
次に、方法２００は２１６に進み、ここで、ホストは、外部バスを介してＩＰデータグラムをネットワークインターフェースカード（ＮＩＣ）に送信する。ＮＩＣは、ヘッダおよびフッタをＩＰデータグラムに追加してフレームを形成する。フレームヘッダは、巡回冗長検査（ＣＲＣ）などのエラー訂正情報を含む。ＩＰアドレスはハードウェアアドレスに変換され、フレームはネットワーク媒体を介して伝送される電気／光信号に変換される。
【００１６】
ＴＬＳ／ＳＳＬ暗号化などの暗号化が必要とされる場合、ホストは、ＴＬＳ／ＳＳＬプロトコルスタックを処理し、外部バスを介してアルゴリズム計算タスクをＴＬＳ／ＳＳＬアクセラレータカードにオフロードする。これに続いて、方法２００は２１２から２２０に進み、ここで、ＴＬＳ／ＳＳＬアクセラレータカードがアービトレーションを行い、次いで２２２に進み、暗号化のための計算タスクを行う。得られた結果は、バスインターフェースを介してホストに返され、ホストは、ＴＣＰ／ＩＰプロトコルスタックを処理して、２１４でＩＰデータグラムを形成する。
【００１７】
したがって、ワークフローは、ホストがタスクを開始することから始まる。タスクは、アプリケーションからホストのＴＬＳ／ＳＳＬプロトコルスタックへ、次いでＴＬＳ／ＳＳＬアクセラレータカードドライバへと、バスプロトコルインターフェースを介してアクセラレータカードハードウェアに対し構成される。次に、ワークフローは、アクセラレーションカード上でアービトレーションおよび計算タスクを行う。得られた結果は、バスインターフェースを介してホストに返される。ホストは、これらのステップを複数回呼び出すことができる。これに続いて、ホストは、暗号化されたデータメッセージをＴＣＰ／ＩＰプロトコルによってカプセル化し、バスプロトコルインターフェースを介してそれをネットワークカードハードウェアに対し構成する。この後、制御側の設定に従って、ネットワークカードは、データ側のメッセージに対して、対応する発信動作処理を行う。
【００１８】
図２（ｂ）に示されるように、方法２６０は２６２で始まり、ここで、ＮＩＣが、リモートホストからネットワーク媒体を介してフレームを受信し、フレームをＩＰデータグラムに変換し、外部バスを介してＩＰデータグラムをホストに送信する。次に、方法２６０は２６４に進み、ここで、ホストが、ＴＣＰ／ＩＰプロトコルスタックを介してＩＰデータグラムを処理して、データセグメントを取得する。この後、方法２６０は２６６に進み、ここで、ホストは、データセグメントがＴＬＳ／ＳＳＬ復号などの復号を必要とするかどうかを決定する。復号が必要とされない場合、方法２６０は２６８に進み、ここで、ホストは、データセグメントをアプリケーションに送信する。
【００１９】
復号が必要とされる場合、ホストは、ＴＬＳ／ＳＳＬプロトコルスタックを処理し、外部バスを介してアルゴリズム計算タスクをＴＬＳ／ＳＳＬアクセラレータカードにオフロードする。これに続いて、方法２６０は２６６から２７０に進み、ここで、ＴＬＳ／ＳＳＬアクセラレータカードがアービトレーションを行い、次いで２７２に進み、ここで、アクセラレータカードは暗号化のための計算タスクを行う。アクセラレータカードは、得られた結果をバスインターフェースを介してホストに返し、ホストは、２６８で、復号されたセグメントをアプリケーションに送信する。
【００２０】
したがって、ワークフローは、ネットワークカードがデータメッセージを受信し、バスプロトコルインターフェースを介してそれをホストに送信することから始まる。次に、ホストは、受信されたデータメッセージをＴＣＰ／ＩＰプロトコルスタックによってパースし、処理されたデータは、それが暗号化されていない場合、アプリケーションに直接送信される。データが暗号化されている場合、ホストは、それをパースするためにＴＬＳ／ＳＳＬプロトコルレイヤに送信し、バスプロトコルインターフェースを介してＴＬＳ／ＳＳＬアクセラレータカードドライバによってそれをアクセラレータカードハードウェアに対し構成する。ホストは、上記のステップを複数回呼び出してよい。この後、復号されたプレーンテキストデータはアプリケーションにアップロードされる。
【００２１】
上記のステップから理解され得るように、従来のＴＬＳ／ＳＳＬオフロード方法は、ホスト上のいくつかの主要な暗号化および復号アルゴリズムステップの計算圧力を低減するが、いくらかのリソース消費および遅延コストをプロセス全体に導入する。これは、第１に、従来のＴＬＳ／ＳＳＬオフロード方法では、すべてのトラフィックがホストへ行くためである。結果として、ホストのＣＰＵは、リソースのかなりの部分をＴＣＰ／ＩＰプロトコルスタックのステップおよびＴＬＳ／ＳＳＬのプロトコルレイヤ解決に費やすことになる。
【００２２】
第２に、送信／受信の各データパスにおいて、複数のドライバインターフェース呼び出し、バスプロトコルインターフェース通信、および対応するカーネルモード／クライアントモード切り替えが、ホストと２つの拡張カードとの間に含まれる。加えて、従来の「ホスト＋ネットワークカード＋アクセラレーションカード」構造では、それらの間の相互接続は、システム共通バスを介しており、各データパケットは、バスデータ交換の複数のインスタンスに対応し、これは、バストラフィック負担を複数回大幅に増加させることに相当する。
【００２３】
上記から理解され得るように、プロセス全体について新しいリソース消費および遅延がそれに導入される。たとえば、ＡＥＳがストリームデータを暗号化するとき、ＳＳＬオフロードを頻繁に呼び出すコストが、サーバホストが暗号化および復号アルゴリズムを直接計算するコストよりも高くなり得る。
【００２４】
したがって、この部分的なオフロードおよび最適化は十分に完全ではない。それは、ホスト上のいくつかの主な暗号化および復号アルゴリズムステップの計算圧力を軽減することができるが、それはまた、プロセス全体に対してリソース消費および遅延コストを導入する。そのような部分的なオフロード手法に導入されるトレードオフコストは、いくつかのシナリオではオフロード手法それ自体によってもたらされる利益を相殺することさえある（たとえば、ＡＥＳがストリーミングデータを暗号化するときにオフロードを頻繁に呼び出すコストは、ホストによって直接計算するコストよりもさらに高くなることがある）。
【００２５】
従来技術により採用されたローカルハードウェアオフロード手法を使用する技術的解決策は、サーバホスト上のリソース占有が依然として比較的大きくなるという技術的問題をもたらしており、それに対する効果的な解決策はまだ提案されていない。
【発明の概要】
【００２６】
本発明は、ホストプロセッサの負荷を低減する拡張デバイスを提供する。拡張デバイスは、メモリ、ネットワークコントローラ、およびメモリとネットワークコントローラとに結合された拡張プロセッサを含む。拡張プロセッサは外部バスを介してホストプロセッサ上で実行されているアプリケーションからトランスポートプロトコルに従ってフォーマットされたアプリケーション通信を受信し、受信されたデータを形成するためのものである。拡張プロセッサはまた、受信されたデータが暗号化されるべきであるかどうかを判断し、受信されたデータが暗号化されるべきである場合はセキュリティプロトコルを処理する。セキュリティプロトコルは、受信されたデータから暗号化されたデータを生成する。加えて、拡張プロセッサはトランスポートプロトコルのトランスポート層プロトコルスタックを処理して、受信されたデータが暗号化されるべきでない場合は受信されたデータから、受信されたデータが暗号化されるべきである場合は暗号化されたデータから、発信ＩＰ通信を生成する。さらに、拡張プロセッサは、発信ＩＰ通信を内部バスを介してネットワークコントローラに送信する。ネットワークコントローラは、発信ＩＰ通信をフォーマットしてフォーマットされたＩＰ通信を形成し、フォーマットされたＩＰ通信をネットワークに送信する。
【００２７】
本発明はまた、拡張デバイスを操作する方法を提供する。この方法は、外部バスを介してホストプロセッサ上で実行されているアプリケーションからトランスポートプロトコルに従ってフォーマットされたアプリケーション通信を受信して、受信されたデータを形成することを含む。この方法はまた、受信されたデータが暗号化されるべきであるかどうかを判断すること、および受信されたデータが暗号化されるべきである場合にセキュリティプロトコルを処理することを含む。セキュリティプロトコルは受信されたデータから暗号化されたデータを生成する。加えて、この方法は、トランスポートプロトコルのトランスポート層プロトコルスタックを処理して、受信されたデータが暗号化されるべきでない場合は受信されたデータから、受信されたデータが暗号化されるべきである場合は暗号化されたデータから、発信ＩＰ通信を生成する。この方法はまた、内部バスを介して発信ＩＰ通信をネットワークコントローラに送信することを含む。さらに、この方法は、発信ＩＰ通信をフォーマットしてフォーマットされたＩＰ通信を形成すること、およびフォーマットされたＩＰ通信をネットワーク上に送信することを含む。
【００２８】
本発明はさらに、プロセッサによって実行されると、プロセッサに拡張デバイスを動作させる方法を実行させるプログラム命令が埋め込まれた、非一時的なコンピュータ可読記憶媒体を含む。この方法は、外部バスを介してホストプロセッサ上で実行されているアプリケーションからトランスポートプロトコルに従ってフォーマットされたアプリケーション通信を受信して、受信されたデータを形成することを含む。この方法はまた、受信されたデータが暗号化されるべきであるかどうかを判断すること、および受信されたデータが暗号化されるべきである場合にセキュリティプロトコルを処理することを含む。セキュリティプロトコルは受信されたデータから暗号化されたデータを生成する。加えて、この方法は、トランスポートプロトコルのトランスポート層プロトコルスタックを処理して、受信されたデータが暗号化されるべきでない場合は受信されたデータから、受信されたデータが暗号化されるべきである場合は暗号化されたデータから発信ＩＰ通信を生成することを含む。この方法はまた、内部バスを介して発信ＩＰ通信をネットワークコントローラに送信することを含む。さらに、この方法は、発信ＩＰ通信をフォーマットしてフォーマットされたＩＰ通信を形成すること、およびフォーマットされたＩＰ通信をネットワーク上に送信することを含む。
【００２９】
本発明の特徴および利点のより良い理解は、本発明の原理が利用される例示的な実施形態を説明する以下の詳細な説明および添付の図面を参照することによって得られるであろう。
【図面の簡単な説明】
【００３０】
本明細書において説明される図面は、本出願のさらなる理解のために提供され、本出願の一部を形成する。本出願の例示的な実施形態およびその説明は、本出願を説明するためのものであり、本出願の範囲に対して過度の限定を構成しない。
【００３１】
【図１】従来のオフロードサーバ１００を示すブロック図である。
【図２（ａ）】従来のオフロードサーバを動作させる方法を示す図であって、通信を送信する方法２００を示す図である。
【図２（ｂ）】従来のオフロードサーバを動作させる方法を示す図であって、通信を受信する方法２５０を示す図である。
【図３】本発明によるオフロードサーバ３００の例を示すブロック図である。
【図４】本発明によるオフロードサーバ３００のさらなる例を示すブロック図である。
【図５（ａ）】本発明によるオフロード方法の例を示すフローチャートであって、オフロード方法５００の例を示すフローチャートである。
【図５（ｂ）】本発明によるオフロード方法の例を示すフローチャートであって、代替例のオフロード方法５２０を示すフローチャートである。
【図５（ｃ）】本発明によるオフロード方法の例を示すフローチャートであって、本発明によるステップ５１０を実装する方法５３０の例を示すフローチャートである。
【図５（ｄ）】本発明によるオフロード方法の例を示すフローチャートであって、本発明によるステップ５１２を実装する方法５４０の例を示すフローチャートである。
【図６（ａ）】本発明によるオフロードサーバを動作させる方法の例を示す図であって、通信を送信する方法６００の例を示す図である。
【図６（ｂ）】本発明によるオフロードサーバを動作させる方法の例を示す図であって、通信を受信する方法６６０の例を示す図である。
【図７（ａ）】本発明によるオフロード方法を示すフローチャートであって、オフロード方法７００の例を示すフローチャートである。
【図７（ｂ）】本発明によるオフロード方法を示すフローチャートであって、本発明によるステップ７１２内に含まれる方法７３０の例を示すフローチャートである。
【図７（ｃ）】本発明によるオフロード方法を示すフローチャートであって、本発明によるステップ７１４内に含まれる方法７４０の例を示すフローチャートである。
【図７（ｄ）】本発明によるオフロード方法を示すフローチャートであって、本発明によるステップ７１０内に含まれる方法７５０の例を示すフローチャートである。
【図７（ｅ）】本発明によるオフロード方法を示すフローチャートであって、本発明によるステップ７１２内に含まれる方法７７０の例を示すフローチャートである。
【図８】本発明の１つまたは複数の実施形態による、オフロードサーバを動作させる方法８００の例を示す図である。
【図９】本発明の１つまたは複数の実施形態による、オフロードサーバを動作させる方法９００の例を示す図である。
【図１０】本発明の１つまたは複数の実施形態による、オフロードサーバを動作させる方法１０００の例を示す図である。
【図１１】本発明の１つまたは複数の実施形態による、アルゴリズムをオフロードするためのデバイス１１００の例を示すブロック図である。
【図１２】本発明の１つまたは複数の実施形態による、アルゴリズムをオフロードするためのデバイス１２００の例を示すブロック図である。
【図１３】本発明の１つまたは複数の実施形態による、拡張デバイス１３００の例を示すブロック図である。
【図１４】本発明の１つまたは複数の実施形態による、集積チップ１４００の例を示すブロック図である。
【発明を実施するための形態】
【００３２】
本出願の解決策を当業者がより良く理解できるように、本出願の実施形態の添付図面を参照して、本出願の実施形態における技術的解決策が明確かつ完全な方法で詳細にさらに説明される。説明される実施形態は、本発明の実施形態のすべてではなく本出願の実施形態のほんの一部であることは明らかである。本発明の範囲から逸脱することなく本出願の実施形態に基づいて当業者によって得られる他のすべての実施形態が、本出願の範囲内に入るものとする。
【００３３】
本出願の明細書および特許請求の範囲ならびに上記に提供された図面における「第１」および「第２」などの用語は、同様の対象を区別するために使用され、必ずしも特定の順番または順序を説明するために使用されない。そのように使用されるデータは、本明細書に説明される本出願の実施形態が、本明細書に示されまたは説明される以外の順序で実装され得るように、適宜に交換され得る。
【００３４】
さらに、「備える」および「備えている」という用語ならびにそれらの任意の代替形態は、非排他的な包含を定義することを意図されている。たとえば、一連のステップまたはユニットを備えるプロセス、方法、システム、製品、またはデバイスは、必ずしもそれらのステップまたはユニットに限定されず、本明細書に明示的に挙げられていない、またはそのようなプロセス、方法、システム、製品、またはデバイスに固有でない他のステップまたはユニットを含み得る。
【００３５】
まず、本出願の実施形態を説明する際に出現する名詞または用語のいくつかは、以下のように定義される
【００３６】
ＳＳＬ：（セキュアソケットレイヤ）は、信頼できるコネクション型ネットワークレイヤプロトコルとアプリケーションレイヤプロトコルとの間のプロトコルのレイヤである。ＳＳＬは、相互認証およびデジタル署名の採用によるデータ完全性、ならびに暗号化を介するデータプライバシを保証し、クライアントとサーバとの間のセキュアな通信を実現する。プロトコルは、２つのレイヤ、すなわち、ＳＳＬレコードプロトコルとＳＳＬハンドシェイクプロトコルからなる。
【００３７】
ＴＬＳ：（トランスポートレイヤセキュリティ）は、２つの通信アプリケーションの間の機密性およびデータ完全性を提供するために使用される。このプロトコルは、２つのレイヤ、すなわち、ＴＬＳレコードプロトコルとＴＬＳハンドシェイクプロトコルからなる。
【００３８】
ＨＴＴＰ：（ハイパーテキスト転送プロトコル）は、コンテンツをクリアテキストで送信するために、ハイパーテキストをネットワークサーバからローカルウェブブラウザに伝送するためのトランスポートプロトコルである。それは、データ暗号化の方法を何ら提供せず、銀行カード番号、パスワード、および他の情報などの機密情報を伝送するのに適していない。
【００３９】
ＨＴＴＰＳ：（セキュアソケットレイヤ上のハイパーテキスト転送プロトコル）は、セキュリティ目的のＨＴＴＰチャネルであり、すなわち、ＳＳＬプロトコルがＨＴＴＰに追加される。データ暗号化送信およびアイデンティティ認証が、ウェブブラウザおよびネットワークサーバにおいて行われる。それは、トランザクション支払いなどの機密情報の送信のために使用され得る。
【００４０】
ＮＩＣ：（ネットワークインターフェースカード、ネットワークカード、ＮＩＣとも呼ばれる）は、コンピュータをネットワークに接続するハードウェアデバイスである。ツイストペアケーブル接続、同軸ケーブル接続、または光ファイバ接続に関わらず、データ通信はネットワークカードを介して実行されなければならない。スマートＮＩＣは、インテリジェントネットワークカードを指す。
【００４１】
ＴＯＥ：（ＴＣＰオフロードエンジン）は、ネットワークカード上の専用プロセッサを使用して、すなわち、ＴＯＥチップを備えた専用ネットワークカードを使用することによって、データパケット処理タスクの一部またはすべてを行う。ＴＣＰを含む４つのレイヤの処理要求が、ホストプロセッサからＮＩＣに転送され、それにより、ネットワーク応答を高速化しながらサーバパフォーマンスを改善する。
【００４２】
ＭＡＣ：（メディアアクセス制御）は、データリンクレイヤのサブレイヤである。データリンクレイヤは、２つのサブレイヤ、すなわち、ＬＬＣ（論理リンク制御）とＭＡＣに分割される。上位のＬＬＣサブレイヤは、データリンクレイヤのフロー制御やエラー回復などのハードウェア非依存機能を実装するために使用され、下位のＭＡＣサブレイヤは、ＬＬＣと物理レイヤとの間のインターフェースを提供する。
【００４３】
ＰＨＹ：（物理レイヤ）は、ＯＳＩの最下レイヤである。ネットワークカードは、ＯＳＩの物理レイヤ（第１のレイヤ）およびデータリンクレイヤ（第２のレイヤ）において機能し、データ送信および受信に必要とされる、電気信号および光信号、回線状態、クロック基準、データコーディング、ならびに回路を定義し、データリンクレイヤデバイスに標準インターフェースを提供する。データリンクレイヤは、アドレッシング機構、データフレーム構築、データエラー検査、伝送制御などの機能を提供し、ネットワークレイヤに標準データインターフェースを提供する。
【００４４】
ＲＳＡ：（ＲＳＡアルゴリズム）は現在、最も有力であり、最も一般的に使用される公開鍵暗号化アルゴリズムである。それは非対称暗号アルゴリズムであり、鍵のペアを必要とする。暗号化で鍵の一方が使用されている場合、復号で他方の鍵が必要とされる。
【００４５】
ＡＥＳ：（高度暗号化標準）は、対称鍵暗号化におけるアルゴリズムの１つである。
【００４６】
オフロード：本出願の実施形態で言及されるオフロードの用語は、サーバＣＰＵでサポートする必要があるプロトコルまたは暗号化アルゴリズムが、システムに組み込まれた組み込みチップまたはＰＣＩカードによって引き受けられ、それにより、サーバのＣＰＵのリソース占有を低減し、より良いシステムパフォーマンスを提供する、プロセスを指す。たとえば、ＴＴＬ／ＳＳＬオフロードは、ＴＴＬ／ＳＳＬプロトコルに関係付けられた暗号化および復号アルゴリズムをサーバＣＰＵ上で実行する代わりに、ＣＰＵとは独立したハードウェアアクセラレーションカード（または拡張カード）上でそれが実行されることを指す。
【００４７】
さらに、本出願の実施形態によって提供されるアルゴリズムをオフロードするためのシステムは、サーバ上のプロトコルの関係付けられた動作（たとえば、ＴＴＬ／ＳＳＬプロトコル、ＴＣＰ／ＩＰプロトコルスタック処理および対応するオフロード制御など）、ＴＴＬ／ＳＳＬ暗号化および復号アルゴリズム、ならびに制御およびデータパスに関係付けられた基本的ネットワークカード機能を、サーバＣＰＵから独立した拡張デバイスによって実行し、それにより、サーバの大域的オフロードを実現する。
【００４８】
本出願の実施形態によれば、オフロード方法の例が提供される。この例は、ＨＴＴＰＳプロトコルに基づくウェブブラウザとウェブサイトサーバとの間のデータ送信のプロセスにおいてウェブサイトサーバのホストを高速化するために使用され得ることに留意されたい。
【００４９】
現在、データ送信のセキュリティを改善するために、ほとんどのアプリケーションまたはサービスは、ウェブブラウザとウェブサイトサーバとの間でデータを転送するためにＨＴＴＰＳを使用している。ＨＴＴＰＳは、ＨＴＴＰプロトコルとＴＴＬ／ＳＳＬプロトコルの組み合わせである。ＴＴＬ／ＳＳＬは、暗号化プロトコルのタイプであり、実際のアプリケーションで意義を有しない。ウェブサイトサーバがＨＴＴＰプロトコル上で実行されると、ＴＴＬ／ＳＳＬ暗号化および復号は、サーバホスト上で比較的大きなＣＰＵリソースを消費し、サーバのパフォーマンスを低減する。結果として、ウェブブラウザに対するウェブサイトサーバの応答速度が遅くなり、それが、ユーザのオンラインエクスペリエンスに深刻な影響を与える。
【００５０】
図３は、本発明によるオフロードサーバ３００の例を示すブロック図を示す。以下により詳細に説明されるように、ＨＴＴＰＳアプリケーションにおけるＳＳＬ暗号化／復号アルゴリズムをオフロードするのに加えて、ＴＣＰ／ＩＰプロトコルスタックおよびＴＴＬ／ＳＳＬプロトコルレイヤもアクセラレーションカードにオフロードされる。加えて、ネットワーク処理もアクセラレーションカードによって提供され得る。結果として、セキュリティプロトコルアルゴリズム、ハンドシェイクプロセス、および下位のネットワークプロトコルスタック処理の完全なハードウェアオフロードが、ＴＴＬ／ＳＳＬハードウェアアクセラレーションカード上で達成され、したがって、サーバホストのＣＰＵリソースの占有を低減することができる。
【００５１】
図３に示されるように、オフロードサーバ３００は、ホスト３１０および拡張デバイス３２０を含む。ホスト３１０は、ＨＴＴＰＳプロトコルに基づくデータ送信のためのサーバホストとすることができ、サーバホストは、ウェブサービスベースのアプリケーションプログラムおよび拡張デバイス（拡張カード）ドライバなどを提供するための任意のＨＴＴＰＳアプリケーションベースのウェブサイトまたはサービスサーバを含むが、これに限定されない、
【００５２】
拡張デバイス３２０は、外部バス３３０を介してホスト３１０に結合される。拡張デバイス３２０は、関係付けられたプロトコルをサーバからオフロードするために使用され得る。たとえば、（ＴＴＬ／ＳＳＬ暗号化および復号アルゴリズムを含む）ＴＴＬ／ＳＳＬプロトコルスタック処理、ＴＣＰ／ＩＰプロトコルスタック処理、ネットワーク処理（ＨＴＴＰプロトコルに基づくホスト３１０によるデータ送信プロセス中の基本的ネットワークカード機能に関係付けられた制御およびデータパスの処理）、およびその対応するオフロード制御が、ホスト３１０のＣＰＵリソース消費を低減するようにオフロードされ得る。ＨＴＴＰＳプロトコルに基づいてサーバホストとウェブブラウザとの間でデータ送信が行われるときに、データ送信および受信が含まれる。
【００５３】
図４は、本発明によるオフロードサーバ３００のさらなる例を示すブロック図を示す。図３に示されるように、ホスト３１０は、主にウェブサービスを提供するためのアプリケーションおよび拡張カードドライバなどを実行する。拡張デバイス３２０（「拡張カード」、「アクセラレーションネットワークカード」などとも呼ばれる）は、関係付けられたプロトコル（ＴＣＰ／ＩＰプロトコルスタック、ＴＬＳ／ＳＳＬプロトコルレイヤおよび対応するオフロード制御など）オフロードモジュール、ＴＬＳ／ＳＳＬアルゴリズムハードウェアアクセラレーションモジュール、基本的ネットワークカード機能に関係付けられた制御およびデータパスモジュールなどを含む。すなわち、セキュリティレイヤプロトコルスタックソフトウェアおよびＴＣＰ／ＩＰプロトコルスタックは、拡張デバイス３２０（アクセラレーションネットワークカード、拡張カードとも呼ばれる）にオフロードされる。ホスト３１０および拡張カード３２０は、外部バス３３０およびホストバスプロトコルによって相互接続される。
【００５４】
拡張デバイス３２０は、ホストインターフェースを介してホスト３１０のアプリケーションと通信する（完全オフロードモードでは、インターフェース通信におけるデータはプレーンテキストである）。アプリケーションは、トランスポートレイヤセキュリティフレームワーク（ＴＬＳ／ＳＳＬ）のインターフェースを呼び出すことによって、対応するＴＬＳ／ＳＳＬ処理、ＴＣＰ／ＩＰカプセル化、および他のネットワーク通信処理におけるアプリケーションデータの処理に必要とされるデータパスを、拡張デバイス３２０（ＴＬＳ／ＳＳＬアクセラレーションネットワークカード）に完全にオフロードする。拡張デバイス３２０は、セキュリティプロトコルアルゴリズム、ハンドシェイクプロセス、および下位のネットワークプロトコルスタック処理の完全なハードウェアオフロードを達成する。
【００５５】
拡張デバイス３２０（すなわち、拡張カード）は一般に、暗号化および復号アルゴリズムをオフロードするために並列に処理される複数のハードウェアアクセラレーションユニットを有する。これらのアルゴリズムアクセラレーションカーネルのすべては、信頼できるアービトレーションユニットを介してタスクディスパッチおよびデータドメイン分離を有することができる。
【００５６】
本発明の任意選択の実装解決策として、サーバホストがデータパケットをウェブブラウザに送信したとき、ホスト３１０は、データパケットを送信するタスクを開始し、ホスト３１０のアプリケーションは、拡張デバイス３２０のトランスポートレイヤセキュリティプロトコルのインターフェースを呼び出す。拡張デバイス３２０は、ローカルトランスポートレイヤセキュリティプロトコル（ＴＬＳ／ＳＳＬ）を開始して、ホストにより呼び出されたインターフェースに従ってタスクを処理するように構成される。トランスポートレイヤセキュリティプロトコル（ＴＬＳ／ＳＳＬ）がタスクを処理した後、拡張デバイス３２０はネットワークプロトコル処理ユニットを使用して、処理結果をデータメッセージとしてカプセル化し、拡張デバイス３２０に配備されたネットワークコントローラが、カプセル化されたデータメッセージを送出する。
【００５７】
任意選択で、拡張デバイス３２０が、タスクを処理するためにローカルトランスポートレイヤセキュリティプロトコル（ＴＬＳ／ＳＳＬ）を開始したとき、それは、タスクを処理するためにトランスポートレイヤセキュリティプロトコル（ＴＬＳ／ＳＳＬ）が使用される必要があるかどうかを最初に決定してよい。タスクを処理するのにトランスポートレイヤセキュリティプロトコル（ＴＬＳ／ＳＳＬ）を使用する必要がある場合、タスクはアービトレーションされる。これに続いて、タスクは処理のためにアルゴリズムアクセラレーションユニットに送信されて、タスクの処理結果が取得される。
【００５８】
拡張デバイス３２０が、タスクを処理のためにアルゴリズムアクセラレーションユニットに送信した後、それはタスクの処理結果を取得する。拡張デバイス３２０はさらに、ネットワークプロトコル処理ユニットを使用することによってタスクの処理結果をカプセル化し、カプセル化結果をネットワークコントローラに対し構成する。次に、ネットワークコントローラが、カプセル化されたデータメッセージを送出する。
【００５９】
上記の説明から理解され得るように、データ送信を含むタスクをホストが開始した後、拡張デバイス３２０は、トランスポートレイヤセキュリティプロトコル（たとえばＴＬＳ／ＳＳＬ）アルゴリズム、ネットワークプロトコル（たとえばＴＣＰ／ＩＰ）カプセル化、および下位レイヤネットワークプロトコルスタックの機能を達成する。
【００６０】
本発明の任意選択の実施形態として、拡張デバイス３２０上で、ソフトウェアスタックは、トランスポートレイヤセキュリティプロトコルのサービスを実行するために使用され得る。トランスポートレイヤセキュリティプロトコルのエンジンユニットは、暗号化および復号アルゴリズムのオフロードを行って、ＴＣＰオフロードエンジン（ＴＯＥ）を介してネットワークプロトコル（ＴＣＰ／ＩＰ）のハードウェアアクセラレーション処理を行うために使用され得る。
【００６１】
上記の実施形態に基づいて、本発明の任意選択の実施形態として、拡張装置３２０がネットワーク（ＴＣＰ／ＩＰ）プロトコル処理ユニットを使用することによって処理結果をデータメッセージとしてカプセル化する前に、それは、ＴＣＰオフロードエンジン（ＴＯＥ）が拡張デバイス３２０内に存在するかどうかを最初に決定してよい。ＴＣＰオフロードエンジン（ＴＯＥ）が拡張デバイス３２０に存在する場合、ネットワークプロトコル（ＴＣＰ／ＩＰ）のハードウェアアクセラレーション処理がＴＣＰオフロードエンジン（ＴＯＥ）を使用して行われる。
【００６２】
任意選択で、ＴＣＰオフロードエンジン（ＴＯＥ）が拡張デバイス３２０に存在しない場合、拡張デバイス３２０のリソース（たとえばＣＰＵリソース）の使用が予め決定された閾値を超えているかどうかが決定される。超えている場合、ロードバランシングスケジューリングモジュール（「トラフィックスケジューリングモジュール」とも呼ばれる）を使用して、トラフィックの一部を処理のためにホストへバイパスする。
【００６３】
本発明の別の任意選択の実施形態として、サーバホスト３１０がウェブブラウザからデータパケットを受信すると、拡張デバイス３２０がデータメッセージを受信し、ローカルネットワークコントローラを使用してデータメッセージをネットワークプロトコル処理ユニット（たとえばＴＣＰ／ＩＰ処理ユニット）に伝送して、パースを行う。次いで、それはパース結果を取得し、ローカルトランスポートレイヤセキュリティプロトコル（ＴＬＳ／ＳＳＬ）を使用してパース結果を処理して、処理結果を取得する。次に、処理結果はホストにアップロードされる。
【００６４】
任意選択の実施形態として、拡張デバイス３２０は、ＴＣＰオフロードエンジン（ＴＯＥ）を介してネットワークプロトコル（ＴＣＰ／ＩＰ）のハードウェアアクセラレーション処理を行うことができる。拡張デバイス３２０がデータメッセージを受信したとき、それは、ＴＣＰオフロードエンジン（ＴＯＥ）が拡張デバイス３２０内に存在するかどうかを最初に決定することができる。ＴＣＰオフロードエンジン（ＴＯＥ）が拡張デバイス３２０に存在する場合、それは、ＴＣＰオフロードエンジン（ＴＯＥ）を使用して、ネットワークプロトコル処理ユニット（たとえばＴＣＰ／ＩＰ処理ユニット）のハードウェアアクセラレーション処理を行い、プロセッサのメモリ領域にデータメッセージを記憶する。
【００６５】
任意選択で、データメッセージがプロセッサのメモリ領域に記憶された後、プロセッサは、データメッセージに対してプロトコルスタック処理を行う。ＴＬＳオフロードが必要な場合、それは復号処理のためにセキュアソケットレイヤ（ＳＳＬ）に送信され、トランスポートレイヤセキュリティプロトコルがハードウェアアクセラレーションを達成するために呼び出される。ＴＬＳオフロードが必要でない場合、復号結果は、復号された結果のタイプおよび宛先アドレスに応じて、プロセッサ上のアプリケーションにアップロードされるか、またはホストバスを介してホストにアップロードされる。
【００６６】
任意選択で、拡張デバイス３２０がデータメッセージを受信し、ローカルネットワークコントローラを使用して、データメッセージをパースのためにネットワーク（ＴＣＰ／ＩＰ）プロトコル処理ユニットに伝送すると、パース結果が取得される。その後、パース結果におけるデータが暗号化されているかどうかが決定され得る。パース結果におけるデータが暗号化されていない場合、拡張デバイス３２０は、パース結果をホスト３１０に直接アップロードする。パース結果におけるデータが暗号化されている場合、ローカルトランスポートレイヤセキュリティプロトコル（ＴＬＳ／ＳＳＬ）は、パース結果を処理するためにさらに使用される。
【００６７】
特に、解析結果がローカルトランスポートレイヤセキュリティプロトコル（ＴＬＳ／ＳＳＬ）を使用することによって処理されたとき、拡張デバイス３２０のプロセッサは、解析結果が処理のためにトランスポートレイヤセキュリティプロトコルのセキュアソケットレイヤに送信される必要があるかどうかを最初に決定することができる。解析結果がトランスポートレイヤセキュリティプロトコルのセキュアソケットレイヤに送信される必要がある場合、解析結果はトランスポートレイヤセキュリティプロトコルのセキュアソケットレイヤを使用して処理される。解析結果が処理のためにトランスポートレイヤセキュリティプロトコルのセキュアソケットレイヤに送信される必要がない場合、それはホストにバイパスされて解析結果が処理される。
【００６８】
この場合の第１の任意選択の実施形態として、トランスポートレイヤセキュリティプロトコルのセキュアソケットレイヤを使用して解析結果を処理するプロセスにおいて、ＴＣＰオフロードエンジンは、トランスポートレイヤ暗号化デバイスを使用して、そのドライバを呼び出すことによってデータを暗号化および復号する。暗号化および復号結果が予め決定された条件を満たす場合、それはホスト３１０にアップロードされる。
【００６９】
この場合の第２の実施形態として、トランスポートレイヤセキュリティプロトコルのセキュアソケットレイヤを使用して解析結果を処理するプロセスにおいて、ＴＣＰオフロードエンジンは、トランスポートレイヤ暗号化デバイスを使用して、そのドライバを呼び出すことによってデータを復号し、次いで、復号された結果のタイプおよび宛先アドレスに応じて復号結果をプロセッサ上のアプリケーションにアップロードするか、またはホストバスを介してそれをホスト３１０にアップロードする。
【００７０】
上述された任意選択の実施形態のいずれかに基づいて、拡張デバイス３２０がローカルトランスポートレイヤセキュリティプロトコル（ＴＬＳ／ＳＳＬ）を使用して解析結果を処理するとき、トランスポートレイヤセキュリティプロトコル（ＴＬＳ／ＳＳＬ）レイヤは、解析結果を処理して処理結果を取得する。取得された処理結果はさらにアービトレーションされ、暗号化および復号処理のための対応するアルゴリズムアクセラレーションユニットに送信されて、復号結果が取得される。
【００７１】
いくつかのアプリケーションの特定の特別なニーズ（アクセラレーションネットワークカードのファームウェアホットアップグレードなど）のために、ホストのＴＣＰ／ＩＰやＴＬＳ／ＳＳＬなどのプロトコルスタックが処理のために採用されることが可能であり、それは従来のＴＬＳ／ＳＳＬオフロード解決策の互換バージョンと同等である。ホットアップグレードなどの動作が実行された後も、ホストは完全なオフロード解決策へ切り替わり、負荷を低減し効率を高めることが可能である。
【００７２】
本出願の実施形態によって提供されるＴＬＳ／ＳＳＬ完全オフロード解決策では、拡張カードが、ＴＬＳ／ＳＳＬプロトコルレイヤの下でほとんどすべてのプロセスを達成し、ホストに対する計算圧力を大幅に低減することができる。特定の実装形態では、それは、多くの異なる特定の形態、たとえば、ＡＲＭカーネルインテリジェントネットワークカード＋ＴＬＳ／ＳＳＬハードウェアアクセラレーションモジュール＋ＴＯＥなどを有し得る。
【００７３】
本出願のいくつかの実施形態によれば、アルゴリズムをオフロードする別の例も提供され、これは、ＨＴＴＰＳプロトコルに基づいてデータ送信を行うサーバホストがデータをウェブブラウザに送信するプロセスで使用され得る。この例は、オフロードサーバ３００および４００に関して説明されているようなアルゴリズムをオフロードするためのシステムにおいて使用されてよい。このオフロード方法は、オフロードサーバ３００および４００に関して説明されているようなシナリオを含むがこれに限定されない場合に使用され得る。添付図面のフローチャートに示されているステップは、コンピュータ実行可能命令のセットなどのコンピュータシステムで実行されてよく、論理順序はフローチャートに示されているが、場合によっては、本明細書に示されまたは説明されているステップは、本明細書に示されているステップと異なる順序で行われてよいことに留意されたい。
【００７４】
ＨＴＴＰＳプロトコルに基づくサーバホストの現在利用可能なハードウェアオフロードアクセラレーション解決策は、ＨＴＴＰプロトコルに基づくデータ送信のプロセスにおいてＴＴＬ／ＳＳＬ暗号化および復号アルゴリズムに関係付けられた部分のみをオフロードすることができるという事実のため、サーバホストは、関係付けられたプロトコル（たとえば、ＴＴＬ／ＳＳＬプロトコル、ＴＣＰ／ＩＰプロトコルスタック処理および対応するオフロード制御）、ＴＴＬ／ＳＳＬ暗号化および復号アルゴリズム、ならびに基本的ネットワークカード機能に関係付けられた制御およびデータパスなどのために、依然として大量のＣＰＵリソースを消費する必要がある。
【００７５】
図５（ａ）〜図５（ｄ）は、本発明によるオフロード方法の例を示すフローチャートを示す。図５（ａ）は、オフロード方法５００の例を示すフローチャートを示す。図５（ｂ）は、代替例のオフロード方法５２０を示すフローチャートを示す。図５（ｃ）は、本発明によるステップ５１０を実装する方法５３０の例を示すフローチャートを示す。図５（ｄ）は、本発明によるステップ５１２を実装する方法５４０の例を示すフローチャートを示す。
【００７６】
図５（ａ）に示されるように、方法５００は５１０で始まり、ここで、拡張デバイスは、ローカルトランスポートレイヤセキュリティプロトコルを開始して、ホストにより呼び出されたインターフェースに従ってタスクを処理する。本発明の任意選択の実施形態として、ホストは、ＨＴＴＰＳプロトコルに基づくデータ送信のためのサーバホストとすることができ、サーバホストは、任意のＨＴＴＰＳアプリケーションベースのウェブサイトまたはサービスサーバを含むが、これに限定されない、
【００７７】
上記された拡張デバイスは、ＴＬＳ／ＳＳＬプロトコル処理モジュールおよびＴＣＰ／ＩＰプロトコルレイヤ処理モジュールと一体化された拡張カードまたはハードウェアアクセラレーションネットワークカードとすることができ、これは、ホスト上のアプリケーションデータについてＴＬＳ／ＳＳＬ処理およびＴＣＰ／ＩＰカプセル化などを行うために使用され得る。ホストはバスインターフェースを介して拡張デバイスと通信し、したがって、ホストはウェブサービスベースのアプリケーションおよび拡張カードドライバを提供するだけでよい。
【００７８】
ホストと拡張デバイスはバスインターフェースを介して接続されているので、ホストがデータを送信する必要があるとき、データを送信するタスクが確立され得る。さらに、拡張デバイス上の対応するインターフェース（たとえばＴＬＳ／ＳＳＬインターフェース）がホストによって呼び出されることができるため、拡張デバイスは、ローカルトランスポートレイヤセキュリティプロトコル（ＴＬＳ／ＳＳＬ）を開始して現在のタスク（たとえば、ＴＬＳ／ＳＳＬ暗号化処理）を取り扱うことができる。
【００７９】
上記の拡張デバイスは、ホストにより呼び出されたインターフェースに従って、対応するプロトコルオフロードプロセスを可能にすることができる。そのような場合、拡張デバイス上のＴＬＳ／ＳＳＬプロトコルレイヤ（すなわち、トランスポートレイヤセキュリティプロトコルレイヤ）は、サーバホストのプロトコルオフロードプロセスのプロセス制御を行うことができる。たとえば、計算タスクがある場合、アービトレーションが行われることが可能であり、計算結果が返されるまで、計算タスクはさらに、対応するアルゴリズムハードウェアアクセラレーションユニットにディスパッチされ得る。任意選択で、上記のプロセス制御動作は、異なる状況に応じて複数回行われてよい。
【００８０】
図５を再び参照すると、方法５００は次に５１２に進み、ここで、トランスポートレイヤセキュリティプロトコル（ＴＬＳ／ＳＳＬ）がタスクを処理した後、拡張デバイスがネットワークプロトコル処理ユニットを使用して処理結果をデータメッセージとしてカプセル化する。
【００８１】
任意選択の実施形態として、上記されたネットワークプロトコル処理ユニットは、ホストがウェブサービスを提供するときにホストによって送信されたデータメッセージに対してＴＣＰ／ＩＰカプセル化を行い、受信されたデータメッセージに対してＴＣＰ／ＩＰプロトコルスタックパース動作を行うように構成され得る。したがって、サーバホスト（すなわち、上記されたホスト）がデータを送信したとき、拡張デバイス上の対応するインターフェース（たとえば、ＴＬＳ／ＳＳＬインターフェース）が呼び出されるので、拡張デバイスがローカルトランスポートレイヤセキュリティプロトコル（ＴＬＳ／ＳＳＬ）を開始して現在のタスクに対してＴＬＳ／ＳＳＬ暗号化処理を行うことができる。さらに、拡張デバイス上の対応するインターフェースが処理結果を取得することができ、処理結果は、データメッセージとしてカプセル化され、バスプロトコルインターフェースを介してネットワークコントローラに対し構成される。
【００８２】
次に、方法５００は５１４に進み、ここで、拡張デバイスに配備されたネットワークコントローラが、カプセル化されたデータメッセージを送出する。５１４において、拡張デバイス上のＴＣＰ／ＩＰプロトコルスタック処理ユニットが暗号化されたデータメッセージをＴＣＰ／ＩＰプロトコルによってカプセル化し、それをネットワークコントローラに対し構成すると、ネットワークコントローラは、制御側の設定に従って、対応する発信動作処理をデータ側のデータメッセージに対して行う。
【００８３】
図４のオフロードサーバ４００を例にとると、本出願の実施形態により提供される完全なＴＬＳ／ＳＳＬオフロードのハードウェアアクセラレーション解決策は、主に以下のモジュール、すなわち、ホスト３１０および拡張デバイス３２０（すなわち、ＴＬＳ／ＳＳＬオフロードアクセラレーションネットワークカード、また簡潔にするために、「拡張カード」または「アクセラレーションネットワークカード」という用語は、「ＴＬＳ／ＳＳＬ完全オフロードハードウェアアクセラレーションネットワークカード」という用語の代わりに本出願の解決策の説明で使用される）を含む。ホスト３１０および拡張デバイス３２０は、外部バス３３０およびホストバスプロトコルによって相互接続される。
【００８４】
この場合、ホスト３１０は、ウェブサービスのためのアプリケーションおよび拡張カードドライバなどを提供するために使用される。セキュリティレイヤプロトコルスタックソフトウェア、オプションとしてＴＣＰ／ＩＰプロトコルスタックは、アクセラレーションネットワークカードにオフロードされることができ、またはホストコンピュータ上で達成されることができる。アプリケーションがトランスポートレイヤセキュリティフレームワーク（ＴＬＳ／ＳＳＬ）インターフェースを呼び出した後、後続のデータパスがＴＬＳ／ＳＳＬアクセラレーションネットワークカードに完全にオフロードされ、それにより、セキュリティプロトコルアルゴリズム、ハンドシェイクプロセス、および下位のネットワークプロトコルスタック処理の完全なハードウェアオフロードを達成する。
【００８５】
いくつかのアプリケーション（アクセラレーションネットワークカードファームウェアホットアップグレードなど）の特定の特別なニーズのために、ホストのＴＣＰ／ＩＰ、ＴＬＳ／ＳＳＬ、および他のプロトコルスタックが処理のために採用されることが可能であり、それは従来のＴＬＳ／ＳＳＬオフロード解決策の互換バージョンと同等である。ホットアップグレードなどの動作が達成された後も、ホストは完全なオフロード解決策へ切り替わり、負荷を低減し効率を高めることが可能である。
【００８６】
拡張デバイス３２０（すなわち、ＴＬＳ／ＳＳＬ完全オフロードハードウェアアクセラレーションネットワークカード）は、関係付けられたプロトコルオフロード（ＴＣＰ／ＩＰプロトコルスタック、ＴＬＳ／ＳＳＬプロトコルレイヤおよび対応するオフロード制御）、ＴＬＳ／ＳＳＬアルゴリズムハードウェアアクセラレーションモジュール、基本的ネットワークカード機能に関係付けられた制御およびデータパスモジュールを含む。拡張カードは、ホストインターフェースを介してアプリケーションと通信する（完全オフロードモードでは、インターフェース通信におけるデータはプレーンテキストである）。
【００８７】
アプリケーションデータは、拡張カード上の対応するＴＬＳ／ＳＳＬ処理、ＴＣＰ／ＩＰカプセル化、および他のネットワーク通信処理にかけられる。一般に、暗号化および復号アルゴリズムをオフロードするために拡張カードにおける並列処理のための複数のハードウェアアクセラレーションユニットがある。これらのアルゴリズムアクセラレーションカーネルのすべては、信頼できるアービトレーションユニットを介してタスクディスパッチおよびデータドメイン分離を行う。
【００８８】
上記から理解され得るように、本出願の上記の実施形態では、サーバホストによりウェブブラウザにデータを送信するプロセスにおいて、拡張デバイスは、ホストにより呼び出されたインターフェースに従ってローカルトランスポートレイヤセキュリティプロトコル（ＴＬＳ／ＳＳＬ）を開始して、データを送信するホストに関係付けられたタスクを処理し、トランスポートレイヤセキュリティプロトコル（ＴＬＳ／ＳＳＬ）が関係付けられたタスクを処理した後、拡張デバイス内のネットワークプロトコル処理ユニット（たとえばＴＣＰ／ＩＰ処理ユニット）が、データメッセージとして処理結果のＴＣＰ／ＩＰカプセル化を行うためにさらに使用される。
【００８９】
最後に、拡張デバイスに配備されたネットワークコントローラが、カプセル化されたデータメッセージを送出し、その結果、拡張カードがＴＬＳ／ＳＳＬプロトコルレイヤ下でほとんどすべてのプロセスを達成し、これにより、ホストに対する計算圧力を低減する。したがって、より多くのコンピューティングリソースがアプリケーションに提供され、セキュアなネットワークプロトコルにおける遅延およびスループットの技術的効果が、拡張カード上の並列コンピューティングカーネルによって保証され、それにより、サーバホスト上のリソース使用が依然として比較的大きいという従来技術で採用されていたローカルハードウェアオフロード解決策の技術的問題を解決する。
【００９０】
図５（ｂ）は、本発明による代替例のオフロード方法５２０を示すフローチャートを示す。方法５２０は方法５００と類似しており、結果として、両方の方法に共通する要素を指定するために同じ参照番号を利用する。図５（ｂ）に示されるように、方法５２０は方法５００と以下の点で異なり、拡張デバイスは、ホストにより呼び出されたインターフェースに従ってローカルトランスポートレイヤセキュリティプロトコルを開始してタスクを処理し、方法５２０はまず５２２に進み、ここで、ホストはタスクを開始し、ホストのアプリケーションは、拡張デバイスのトランスポートレイヤセキュリティプロトコルのインターフェースを呼び出し、したがって、拡張デバイスは、トランスポートレイヤセキュリティプロトコルアルゴリズム、ネットワークプロトコルカプセル化、および下位のネットワークプロトコルスタックの機能を実行するようになる。
【００９１】
特に、上記の実施形態では、上記のタスクは、サーバホストがウェブブラウザにデータを送信するタスクであり得る。拡張デバイスは、ＴＬＳ／ＳＳＬプロトコル処理モジュールおよびＴＣＰ／ＩＰプロトコルレイヤ処理モジュールと一体化された拡張カードまたはハードウェアアクセラレーションネットワークカードであり、これは、ホスト上のアプリケーションデータのＴＬＳ／ＳＳＬ処理およびＴＣＰ／ＩＰカプセル化を行うように構成されているため、サーバホストがタスクを開始すると、ホストアプリケーションは、拡張デバイスのＴＬＳ／ＳＳＬインターフェースを呼び出し、データを送信するタスクのＴＬＳ／ＳＳＬ暗号化および復号、ＴＣＰ／ＩＰカプセル化、プロトコルオフロードフローの制御、ならびに拡張デバイスを介するネットワークコントローラなどの下位のネットワークプロトコルスタックに対するカプセル化されたデータメッセージの構成を行うことができる。上記の実施形態によって、ＴＬＳ／ＳＳＬプロトコルレイヤ下のほとんどすべてのプロセスは、サーバホストから独立した拡張カードによって達成され、ホストに対する計算圧力が大幅に低減され得る。
【００９２】
図５（ｃ）は、本発明によるステップ５１０を実装する方法５３０の例を示すフローチャートを示す。図５（ｃ）に示されるように、方法５３０は、５３２で、タスクを処理するためにトランスポートレイヤセキュリティプロトコルを使用する必要があるかどうかを決定することによって始まる。必要である場合、方法５３０は５３４に進み、ここで、タスクはアービトレーションされ、次いで、処理のためにアルゴリズムアクセラレーションユニットに送信されてタスクの処理結果が取得される。
【００９３】
特に、上記の実施形態では、すべてのデータパケットがＴＬＳ／ＳＳＬ暗号化および復号動作を受ける必要があるわけではないので、タスクを処理するためにローカルトランスポートレイヤセキュリティプロトコル（ＴＬＳ／ＳＳＬ）が開始されたとき、ホストによって開始されたタスクは、トランスポートレイヤセキュリティプロトコル（ＴＬＳ／ＳＳＬ）によってタスクが取り扱われる必要があるかどうかとして最初に決定される。トランスポートレイヤセキュリティプロトコル（ＴＬＳ／ＳＳＬ）処理が必要とされる場合、タスクは処理のために拡張デバイス内のアルゴリズムアクセラレーションユニットに送信され、したがってタスクの処理結果が取得される。
【００９４】
任意選択の実施形態では、拡張デバイスがネットワークプロトコル処理ユニットを使用して、処理結果をデータメッセージとしてカプセル化する。ネットワークプロトコル処理ユニットは、処理結果をカプセル化し、カプセル化結果をネットワークコントローラに対し構成する。
【００９５】
任意選択で、拡張デバイス上で、ソフトウェアスタックがトランスポートレイヤセキュリティプロトコルのサービスを実行するために使用されてよく、さらに、トランスポートレイヤセキュリティプロトコルのエンジンユニットが暗号化および復号アルゴリズムのオフロードを行うために使用され、ネットワークプロトコルのハードウェアアクセラレーション処理がＴＣＰオフロードエンジンを介して行われる。
【００９６】
本発明の任意選択の実装様式として上記の実施形態に基づいて、拡張デバイスがネットワークプロトコル処理ユニットを使用して処理結果をデータメッセージとしてカプセル化するステップの前に、上記の方法は以下のステップをさらに含んでよい。
【００９７】
図５（ｄ）は、本発明によるステップ５１２を実装する方法５４０の例を示すフローチャートを示す。図５（ｄ）に示されるように、方法５４０は、５４２で、拡張デバイス内にＴＣＰオフロードエンジンが存在するかどうかを決定することによって始まる。ＴＣＰオフロードエンジンが拡張デバイスに存在する場合、方法５４０は５４４に進んで、ＴＣＰオフロードエンジンを使用してネットワークプロトコルのハードウェアアクセラレーションプロセスを行う。
【００９８】
任意選択の実施形態では、方法５４０は５４６に進み、ここで、ＴＣＰオフロードエンジンが拡張デバイスに存在しない場合、方法５４０は、拡張デバイスのリソース使用が予め決定された閾値を超えているかどうかを決定し、超えている場合、ロードバランシングスケジューリングモジュール（すなわち「トラフィックスケジューリングモジュール」）を使用して、トラフィックの一部を処理のためにホストへバイパスする。
【００９９】
図６（ａ）および図６（ｂ）は、本発明によるオフロードサーバを動作させる方法の例を示す図である。図６（ａ）は通信を送信する方法６００の例を示し、図６（ｂ）は通信を受信する方法６６０の例を示す。図６（ａ）に示されるように、方法６００は６１０で始まり、ここで、ホストプロセッサ上で実行されているアプリケーションが、インターネットのようなネットワークを介してリモートホストに送信される通信を生成する。アプリケーションフォーマットは、ＴＣＰ／ＩＰまたはＵＤＰなどの使用されるトランスポートプロトコルに従って、通信をフォーマットする。たとえば、ＴＣＰ／ＩＰプロトコルは、バイトのストリームとして通信を受信することが期待される。
【０１００】
これに続いて、方法６００は６１２に進み、ここで、拡張カード上のプロセッサが、外部バスを介して、ホストプロセッサ上で実行されているアプリケーションから（使用されるトランスポートプロトコルに従ってフォーマットされた）通信を受信して、受信されたデータを形成する。拡張カード上のプロトコルオフロード制御ユニットが、ホストにより呼び出されたインターフェースに従って、対応するプロトコルオフロードプロセスを可能にする。さらに、拡張カード上のＴＬＳ／ＳＳＬプロトコルレイヤがプロセス制御を開始する。
【０１０１】
この後、方法６００は６１４に進み、ここで、拡張カード上のプロセッサは、受信されたデータが暗号化を必要とするかどうかを決定する。ＴＬＳ／ＳＳＬ暗号化などの暗号化が必要とされる場合、拡張カード上のプロセッサは、セキュリティプロトコルを処理して、受信されたデータから暗号化されたデータを生成する。ホストは、ＴＬＳ／ＳＳＬプロトコルスタック（アルゴリズム計算タスクを含む）およびＴＣＰ／ＩＰプロトコルスタックを、外部バスを介して拡張カードにオフロードする。暗号化が必要とされる場合、方法６００は６１４から６１６に進み、ここで、拡張カード上のプロセッサはアービトレーションを行い、次いで６１８に進んで、暗号化のために計算タスクを行う（複数のプロセッサが計算を行うために使用され得る）。
【０１０２】
受信されたデータが６１４で暗号化を必要としない、または暗号化されたデータが６１８で生成されている場合、方法６００は６２０に進み、ここで、拡張カード上のプロセッサは、トランスポートプロトコルのトランスポートレイヤプロトコルスタックを処理して、受信されたデータが暗号化されるべきでない場合は受信されたデータから、受信されたデータが暗号化されるべきである場合は暗号化されたデータから、発信ＩＰ通信を生成する。
【０１０３】
ＴＣＰ／ＩＰプロトコルが使用される場合、発信ＩＰ通信はＩＰデータグラムである。上記されたように、ＴＣＰ／ＩＰプロトコルが使用される場合、ＴＣＰ／ＩＰプロトコルスタックのレイヤは、アプリケーションレイヤから受信されたバイトのストリームをセグメントに分割し、ヘッダをセグメントに添付し、セグメントは、ＩＰデータグラムへフォーマットされる。さらに、拡張カード上のプロセッサはＴＣＰ／ＩＰプロトコルスタックを実行することができ、またはＴＣＰオフロードエンジン（ＴＯＥ）が拡張デバイスに存在する場合、ネットワークプロトコル（ＴＣＰ／ＩＰ）のハードウェアアクセラレーション処理がＴＣＰオフロードエンジン（ＴＯＥ）を使用して行われる。
【０１０４】
次に、方法６００は６２２に進み、ここで、拡張カード上のプロセッサは、内部バスを介して発信ＩＰ通信をネットワークコントローラに送信する。ネットワークコントローラフォーマットは、発信ＩＰ通信をフォーマットしてフォーマットされたＩＰ通信を形成し、フォーマットされたＩＰ通信をネットワーク上に伝送する。ＴＣＰ／ＩＰコンテキストでは、拡張カード上のプロセッサは、内部バスを介してＩＰデータグラムをネットワークコントローラに送信する。ネットワークコントローラはフレームを形成し、フレームは、ネットワーク媒体を介して伝送される電気／光信号に変換される。
【０１０５】
したがって、ワークフローは、ホストがタスクを開始することから始まる。拡張カード（アクセラレーションネットワークカード）のＴＬＳ／ＳＳＬレイヤインターフェースは、アプリケーションによって呼び出され、タスクは、バスプロトコルインターフェースを介してドライバによって構成される。次に、拡張カード上の「プロトコルオフロード制御」ユニットが、ホストにより呼び出されたインターフェースに従って、対応するプロトコルオフロードプロセスを可能にする。これに続いて、拡張カード上のＴＬＳ／ＳＳＬプロトコルレイヤがプロセス制御を開始し、プロセス制御は複数回行われ得る。計算タスクが存在する場合、アービトレーションが行われ、計算結果が返されるまで、計算タスクは、対応するアルゴリズムハードウェアアクセラレーションユニットに分配される。
【０１０６】
この後、拡張カード上のＴＣＰ／ＩＰプロトコルスタック処理ユニットが、暗号化されたデータメッセージをＴＣＰ／ＩＰプロトコルによってカプセル化し、それを拡張カード上のネットワークコントローラに対し構成する。次いで、ネットワークコントローラは、その制御側の設定に従って、データ側で対応する発信動作処理を行う。
【０１０７】
図６（ｂ）に示されるように、方法６６０は６６２で始まり、ここで、ネットワークコントローラは、ネットワークからデータパケットを受信し、データパケットから着信ＩＰ通信を形成し、内部バスを介して着信ＩＰ通信を拡張カード上のプロセッサに送信する。ＴＣＰ／ＩＰコンテキストでは、拡張カードのネットワークコントローラが、ネットワーク媒体を介してリモートホストからフレームを受信し、フレームをＩＰデータグラムに変換する。
【０１０８】
次に、方法６６０は６６４に進み、ここで、拡張カード上のプロセッサは、トランスポートレイヤプロトコルスタックを処理して着信ＩＰ通信から処理されたデータを生成する。ＴＣＰ／ＩＰコンテキストでは、拡張カード上のプロセッサは、ＴＣＰ／ＩＰプロトコルスタックを介してＩＰデータグラムを処理してデータセグメントを取得する。さらに、拡張カード上のプロセッサはＴＣＰ／ＩＰプロトコルスタックを実行することができ、またはＴＣＰオフロードエンジン（ＴＯＥ）が拡張デバイスに存在する場合、ネットワークプロトコル（ＴＣＰ／ＩＰ）のハードウェアアクセラレーション処理がＴＣＰオフロードエンジン（ＴＯＥ）を使用して行われる。
【０１０９】
この後、方法６６０は６６６に進み、ここで、拡張カード上のプロセッサは、データセグメントがＴＬＳ／ＳＳＬ復号などの復号を必要とするかどうかを決定する。復号が必要とされる場合、方法６６０はセキュリティプロトコルを処理して、処理されたデータから復号されたデータを生成する。拡張カード上のプロセッサはＴＬＳ／ＳＳＬプロトコルスタックを処理し、方法６６０は６７２に進み、ここで、拡張カード上のプロセッサはアービトレーションを行い、次いで６７４に進んで、復号のために計算タスクを行う。
【０１１０】
処理されたデータが復号を必要としない場合、または復号されたデータが形成された後、方法６００は６７６に進み、ここで、拡張カード上のプロセッサは、処理されたデータが暗号化されていない場合は、処理されたデータを、外部バスを介してホストプロセッサ上で実行されているアプリケーションに送信し、処理されたデータが暗号化されている場合は、復号されたデータを、外部バスを介してホストプロセッサ上で実行されているアプリケーションに送信する。
【０１１１】
したがって、ワークフローは、拡張カードがデータメッセージを受信することから始まる。この後、拡張カード上のネットワークコントローラは、複数回行われ得るパースプロセスのために対応するデータをＴＣＰ／ＩＰプロトコルに伝送する。次に、パースの後に取得されたデータが暗号化されていない場合、それは、拡張カードの「プロトコルオフロード制御ユニット」を介してホストアプリケーションに直接送信される。
【０１１２】
データが暗号化されている場合、拡張カード上のＴＬＳ／ＳＳＬプロトコルレイヤがパースを開始し、計算結果が返されるまで、計算タスクは、対応するアルゴリズムハードウェアアクセラレーションユニットに分配される。次いで、復号されたプレーンテキストデータは、「プロトコルオフロード制御ユニット」を介してホストアプリケーションに送信される。
【０１１３】
上記のステップから理解され得るように、本出願で提案されているＴＬＳ／ＳＳＬ完全オフロード解決策では、拡張カードは、ＴＬＳ／ＳＳＬプロトコルレイヤ下のプロセスのほとんどすべてを達成し、ホストに対する計算圧力を大幅に低減することができる。さらに、ホストを含むプロセス全体に関して、本発明の利点の１つは、すべてのトラフィックがホストを通過するのを回避できることである。結果として、ホストのＣＰＵリソースが、ＴＣＰ／ＩＰプロトコルスタックおよびＴＬＳ／ＳＳＬのプロトコルレイヤパースなどのネットワーク送信に関係付けられた手順に浪費されなくなる。
【０１１４】
本発明の別の利点は、各データ送信／受信のデータパスにおいて、ホストと拡張カードとの間のドライバインターフェース呼び出しの数が大幅に減少されることである。すなわち、バスプロトコルインターフェース通信の数、対応するカーネル状態／ユーザ状態切り替えが減少される。本発明のさらなる利点は、「ホスト＋アクセラレーションネットワークカード」のアーキテクチャが、アプリケーションにホストのリソースがより多く割り当てられるのを可能にすることである。ホストバスインターフェース側はプレーンテキストデータを処理するだけでよく、それにより、バス帯域幅圧力を軽減し、データ処理フローを単純化し、追加のリソース消費および遅延コストを回避する。
【０１１５】
本出願の１つまたは複数の実施形態によれば、アルゴリズムをオフロードするための方法の実施形態がさらに提供される。この方法は、ウェブブラウザからデータを受信するＨＴＴＰＳプロトコルに基づくデータ送信を行うサーバホストのプロセスにおいて使用され、この実施形態は、オフロードサーバ３００に関して説明されたようにアルゴリズムをオフロードするためのシステムに適用されてよく、それは、オフロードサーバ３００および４００に関して述べられたシナリオを含むがこれに限定されない。添付図面のフローチャートに示されているステップは、コンピュータ実行可能命令のセットなどのコンピュータシステムで実行されてよく、論理順序はフローチャートに示されているが、場合によっては、示されまたは説明されているステップは、本明細書に示されているステップと異なる順序で行われてよいことに留意されたい。
【０１１６】
図７（ａ）〜図７（ｅ）は、本発明によるオフロード方法を示すフローチャートを示す。図７（ａ）は、オフロード方法７００の例を示すフローチャートを示す。図７（ｂ）は、本発明によるステップ７１２内に含まれる方法７３０の例を示すフローチャートを示す。図７（ｃ）は、本発明によるステップ７１４内に含まれる方法７４０の例を示すフローチャートを示す。図７（ｄ）は、本発明によるステップ７１０内に含まれる方法７５０の例を示すフローチャートを示す。図７（ｅ）は、本発明によるステップ７１２内に含まれる方法７７０の例を示すフローチャートを示す。
【０１１７】
図７（ａ）に示されるように、方法７００は７１０で始まり、ここで、拡張デバイスは、データメッセージを受信し、拡張デバイス上のローカルネットワークコントローラを使用して、データメッセージをパースのために拡張デバイスのネットワークプロトコル処理ユニットに伝送する。次に、方法７００は７１２に進み、ここで、拡張デバイスのネットワークプロトコル処理ユニットは、データメッセージをパースしてパース結果を生成する。これに続いて、方法７００は７１４に進み、ここで、拡張デバイスは、ローカルトランスポートレイヤセキュリティプロトコルを使用することによってパース結果を処理する。この後、方法７００は７１６に進み、ここで、拡張デバイスは処理結果をホストにアップロードする。
【０１１８】
特に、上記のステップでは、サーバホストがウェブブラウザからデータを受信するとき、ホストがデータを受信するために使用される。このとき、ホストから独立した拡張デバイス（すなわち、ＴＬＳ／ＳＳＬ完全オフロードハードウェアアクセラレーションネットワークカード）がデータメッセージを受信し、拡張デバイス上のネットワークコントローラを介して解析するために対応するデータをＴＣＰ／ＩＰプロトコルに伝送し、次いで、拡張デバイス上のトランスポートレイヤセキュリティプロトコル（ＴＬＳ／ＳＳＬ）を使用することによってパース結果を処理する。次に、拡張デバイスは、処理結果をホスト（すなわちサーバホスト）にアップロードする。
【０１１９】
拡張デバイス上のＴＬＳ／ＳＳＬプロトコルレイヤ（すなわち、トランスポートレイヤセキュリティプロトコルレイヤ）によって行われるパース動作は、計算結果が返されるまで、計算タスクをアービトレーションし、それを対応するアルゴリズムハードウェアアクセラレーションユニットにディスパッチすることを含むが、これに限定されない。状況に応じて、上記のステップは複数回行われてよい。
【０１２０】
上記から理解され得るように、本出願の上記の実施形態では、サーバホストがウェブブラウザからデータを受信する。次いで、拡張デバイスがデータメッセージを受信するために使用される。次に、拡張デバイスは、拡張デバイス内のネットワークプロトコル処理ユニット（たとえばＴＣＰ／ＩＰ処理ユニット）を使用して、ＴＣＰ／ＩＰパースを行ってデータメッセージを取得する。
【０１２１】
これに続いて、拡張デバイスは、パース結果を取得し、拡張デバイスのトランスポートレイヤセキュリティプロトコル（ＴＬＳ／ＳＳＬ）を使用してパース結果を処理し、処理結果をホスト（すなわち、サーバホスト）にアップロードする。このようにして、本発明は、拡張カードがＴＬＳ／ＳＳＬプロトコルレイヤ下でほとんどすべてのプロセスを達成することを可能にするという目標を実現し、それによりホストに対する計算圧力を低減し、より多くの計算リソースをアプリケーションに提供する。
【０１２２】
同時に、セキュアなネットワークプロトコルにおける遅延およびスループットの技術的効果が、拡張カード上の並列計算カーネルによって保証され、それにより、従来技術でのローカルハードウェアオフロードのみを使用する解決策によるサーバホストのリソース占有が依然として非常に大きいという技術的問題を解決する。
【０１２３】
図７（ｂ）は、本発明によるステップ７１２内に含まれる方法７３０の例を示すフローチャートを示す。図７（ｂ）に示されるように、方法７３０は７３２で始まり、ここで、データメッセージがネットワーク（ＴＣＰ／ＩＰ）プロトコル処理ユニットによってパースされてパース結果が取得された後、方法７３０は、パース結果におけるデータが暗号化されているかどうかを決定する。次に、方法７３０は７３４に進み、ここで、パース結果におけるデータが暗号化されていない場合、パース結果はホストに直接アップロードされる。あるいは、方法７００は７３６に進み、ここで、パース結果におけるデータが暗号化されている場合、方法７３０は７１４に進む。
【０１２４】
特に、上記の実施形態では、ローカルネットワークコントローラによってパースするためにデータメッセージがネットワーク（ＴＣＰ／ＩＰ）プロトコル処理ユニットに伝送された後、パースデータが暗号化されているかどうかが決定される。それが暗号化されていない場合、それは「プロトコルオフロード制御ユニット」を介してホストアプリケーションに直接送信される。データが暗号化されている場合、拡張カード上のＴＬＳ／ＳＳＬプロトコルレイヤがデータのパース始め、計算結果が返されるまで、計算タスクはアービトレーションされ、対応するアルゴリズムハードウェアアクセラレーションユニットに分配される。
【０１２５】
図７（ｃ）は、本発明によるステップ７１４内に含まれる方法７４０の例を示すフローチャートを示す。図７（ｃ）に示されるように、方法７４０は７４２で始まり、ここで、パース結果におけるデータが暗号化されていると決定された後、方法７４０は７４２で始まり、ここで、処理結果がアービトレーションされ、次いで７４４に進み、ここで、アービトレーションされた処理結果が復号処理のために対応するアルゴリズムアクセラレーションユニットに送信されて、復号結果が取得される。上記の実施形態により、アルゴリズムアクセラレーションユニットが復号処理を実行するために使用され、ハードウェアアクセラレーションが実現され得る。
【０１２６】
任意選択で、拡張デバイス上で、ソフトウェアスタックがトランスポートレイヤセキュリティプロトコルのサービスを実行するために使用されてよい。そして、トランスポートレイヤセキュリティプロトコルのエンジンユニットが暗号化および復号アルゴリズムのオフロードを行うために使用される。ネットワークプロトコル（ＴＣＰ／ＩＰ）のハードウェアアクセラレーション処理がＴＣＰオフロードエンジン（ＴＯＥ）を介して行われる。
【０１２７】
図７（ｄ）は、本発明によるステップ７１０内に含まれる方法７５０の例を示すフローチャートを示す。図７（ｄ）に示されるように、方法７５０は７５２で始まり、ここで、データメッセージがネットワークプロトコル処理ユニットに送信される前に、方法７５０は、拡張デバイス内にＴＣＰオフロードエンジンが存在するかどうかを決定する。ＴＣＰオフロードエンジンが拡張デバイスに存在する場合、方法７５０は７５４に進んで、ＴＣＰオフロードエンジンを使用して、ネットワークプロトコル処理ユニット（たとえばＴＣＰ／ＩＰ処理ユニット）のハードウェアアクセラレーションプロセスを行い、プロセッサのメモリ領域にデータメッセージを記憶する。
【０１２８】
あるいは、ＴＣＰオフロードエンジンが拡張デバイスに存在しない場合、方法７５０は７５６に進み、ここで、データメッセージはプロセッサのメモリ領域に記憶され、または処理のためにホストへバイパスされる。
【０１２９】
データメッセージがプロセッサのメモリ領域に記憶された後、方法７５０は７６０に進み、ここで、プロセッサがデータメッセージに対してプロトコルスタック処理を行う。次に、方法７５０は７６２に進み、ここで、ＴＬＳオフロードが必要とされる場合、データメッセージは復号処理のためにセキュアソケットレイヤ（ＳＳＬ）に送信され、トランスポートレイヤセキュリティプロトコルがハードウェアアクセラレーションを達成するために呼び出される。あるいは、方法７５０は７６４に進み、ここで、ＴＬＳオフロードが行われる必要がない場合、復号された結果のタイプおよび宛先アドレスに従って復号結果をプロセッサ上のアプリケーションにアップロードし、またはそれを外部バスを介してホストにアップロードする。
【０１３０】
任意選択の実施形態では、トランスポートレイヤセキュリティプロトコルのセキュアソケットレイヤを使用してパース結果を処理するプロセスにおいて、ＴＣＰオフロードエンジンは、トランスポートレイヤ暗号化デバイスを使用して、そのドライバを呼び出すことによってデータを暗号化および復号する。暗号化および復号結果が予め決定された条件を満たす場合、データはホストにアップロードされる。
【０１３１】
任意選択の実施形態では、トランスポートレイヤセキュリティプロトコルのセキュアソケットレイヤを使用してパース結果を処理するプロセスにおいて、ＴＣＰオフロードエンジンは、トランスポートレイヤ暗号化デバイスを使用して、復号された結果のタイプに応じて、そのドライバを呼び出すことによってデータを復号する。復号結果のタイプおよび宛先アドレスに応じて、復号結果は、プロセッサ上のアプリケーションにアップロードされるか、またはホストバスを介してホストにアップロードされる。
【０１３２】
図７（ｅ）は、本発明によるステップ７１２内に含まれる方法７７０の例を示すフローチャートを示す。図７（ｅ）に示されるように、方法７７０は７７２で始まり、ここで、データメッセージがネットワーク（ＴＣＰ／ＩＰ）プロトコル処理ユニットによってパースされてパース結果が取得された後、方法７７０は、パース結果が処理のためにトランスポートレイヤセキュリティプロトコルのセキュアソケットレイヤに送信される必要があるかを決定する。
【０１３３】
これに続いて、方法７７０は７７４に進み、ここで、パース結果がセキュアソケットレイヤに送信される必要がある場合、方法７７０は、トランスポートレイヤセキュリティプロトコルのセキュアソケットレイヤを使用することによってパース結果を処理する。あるいは、方法７７０は７７６に進み、ここで、パース結果がセキュアソケットレイヤに送信される必要がない場合、方法７７６は、パース結果を処理するためにホストにバイパスする。
【０１３４】
図８は、本発明の１つまたは複数の実施形態による、オフロードサーバを動作させる方法８００の例を示す図である。図８に示されるように、オフロードプロトコルモードでは、ホストが、ＡｐａｃｈｅなどのＨＴＴＰネットワークサービスアプリケーションプログラムを実行し、拡張カードが、ネットワークに関係付けられたプロトコル制御およびデータ処理のすべてを扱う。拡張カード上のソフトウェアスタックは、「ＡＲＭプロセッサ＋Ｌｉｎｕｘオペレーティングシステム」の形態で実装され得る。拡張カード上で、ＴＬＳ／ＳＳＬプロトコルレイヤサービスがソフトウェアスタックによって行われ、ＴＣＰ／ＩＰプロトコルスタックのハードウェアアクセラレーション処理がＴＯＥユニットによって行われ、暗号化および復号アルゴリズムオフロードがＴＬＳ／ＳＳＬエンジンによって行われる。
【０１３５】
図８にさらに示されるように、データメッセージを受信した（Ｓ０）後、ＭＡＣがＴＯＥを介してデータを処理する（Ｓ１）。処理されたデータはＡＲＭのメモリ領域に記憶され（Ｓ２）、ＡＲＭカーネルがＴＯＥのデータを処理する。ＡＲＭカーネルによって受信されたデータはＴＬＳ／ＡＰＰレイヤにある。プロトコルおよび予め設定された条件に従って、それは、データパケットが、処理のためにＳＳＬに渡されるか（Ｓ４）、または復号が必要とされない場合にホストへバイパスされるか（Ｓ６）を決定する。
【０１３６】
データパケットがＳＳＬによって処理される場合、方法８００は、ｌｉｂｃｒｙｐｔｏおよびユーザモードドライバを介してＴＬＳエンジンハードウェアへの設定を呼び出す（Ｓ５）。処理されたデータがセッションデータである場合、それはホストにアップロードされる（Ｓ６）。これに続いて、ＰＣＩｅ  ＤＭＡをホストのメモリ領域に書き込み、そして割り込みを提供する（Ｓ７）。
【０１３７】
ＴＯＥがある場合、ＡＲＭ上で実行されている拡張カードのカーネルは、ＴＣＰ／ＩＰプロトコルスタックを処理する必要がない。むしろ、ＴＯＥモジュールのインターフェースおよびデータを、他のプロセスが呼び出すのに便利なソケットインターフェースの様々な動作機能にカプセル化するだけでよい。さらに、ＰＣＩｅ  ＤＭＡがホストメモリ領域に書き込まれた後、ホストが割り込みに応答するのを待つ間にスループットレートを保証するために非同期モードを使用すべきである。ホストは、リングバッファに類似する形態を使用して受信を達成することができる。さらに、ホストがメッセージを送信する場合、プロセスおよびアイデアは類似するがパスは反対である。この実施形態は、最も一般的なサーバアプリケーションのコンテキストで機能する。
【０１３８】
図９は、本発明の１つまたは複数の実施形態による、オフロードサーバを動作させる方法９００の例を示す図である。図９に示されるように、ＴＯＥが存在するホストとアクセラレーションネットワークカードオフロードプロトコルの混合されたモードでは、いくつかのサーバプリケーションシナリオにおいて複数の要求があり得る。要求の１つは、いくつもの軽量アプリケーションが拡張カードにオフロードできることであり、利点は処理遅延が低減することである。もう１つの要求は、場合によって少数のホスト上のアプリケーションがＴＬＳ／ＳＳＬのハードウェアオフロードなしにｏｐｅｎＳＳＬの下位レイヤインターフェースを直接呼び出すことである。
【０１３９】
したがって、ホストがＨＴＴＰネットワークサービスアプリケーションを実行するとき、それはＴＬＳ／ＳＳＬプロトコルレイヤに関係付けられたランタイムライブラリを含む必要もある（ごく一部の場合、それが呼び出される必要がある）。拡張カードは、ネットワークに関係付けられたプロトコル制御およびデータ処理のすべて、ならびに軽量アプリケーションを取り扱う。拡張カード上のソフトウェアスタックは、「ＡＲＭプロセッサ＋Ｌｉｎｕｘオペレーティングシステム」の形態でも実装され得る。拡張カード上で、ＴＬＳ／ＳＳＬプロトコルレイヤサービスがソフトウェアスタックによって行われる。ＴＣＰ／ＩＰプロトコルスタックのハードウェアアクセラレーション処理がＴＯＥユニットによって行われ、暗号化および復号アルゴリズムオフロードがＴＬＳ／ＳＳＬエンジンによって行われる。
【０１４０】
図９にさらに示されるように、データメッセージを受信した（Ｓ０）後、ＭＡＣがＴＯＥを介してデータを処理する（Ｓ１）。処理されたデータはＡＲＭのメモリ領域に記憶され、ＡＲＭカーネルがＴＯＥのデータを処理する（Ｓ２）。ＡＲＭカーネルによって受信されたデータはＴＬＳ／ＡＰＰレイヤにある。プロトコルおよび予め設定された条件に従って、それは、データパケットが、処理のためにＳＳＬに渡されるか（Ｓ４）、または復号が必要とされない場合にホストへバイパスされるか（Ｓ６）を決定する。
【０１４１】
データパケットがＳＳＬによって処理される（Ｓ４）場合、方法９００は、ｌｉｂｃｒｙｐｔｏおよびユーザモードドライバを介してＴＬＳエンジンハードウェアへの設定を呼び出す（Ｓ５）。処理されたデータのタイプおよび宛先アドレスに応じて、方法９００は、処理されたデータを（プロセス間通信を介して）ＡＲＭ上のアプリケーションに送信するか、または処理されたデータをホストバスインターフェースを介してホストにアップロードする（Ｓ６）。これに続いて、方法９００は、ＰＣＩｅ  ＤＭＡをホストのメモリ領域に書き込み、そして割り込みを提供する（Ｓ７）。
【０１４２】
ＴＯＥがある場合、ＡＲＭ上で実行されている拡張カードのカーネルは、ＴＣＰ／ＩＰプロトコルスタックを処理する必要がない。むしろ、ＴＯＥモジュールのインターフェースおよびデータを、他のプロセスが呼び出すのに便利なソケットインターフェースの様々な動作機能にカプセル化するだけでよい。さらに、ＰＣＩｅ  ＤＭＡがホストメモリ領域に書き込まれた後、ホストが割り込みに応答するのを待つ間にスループットレートを保証するために非同期モードを使用すべきである。ホストは、リングバッファに類似する形態を使用して受信を達成してよい。さらに、ホストがメッセージを送信する場合、プロセスおよびアイデアは類似するがパスは反対である。
【０１４３】
図１０は、本発明の１つまたは複数の実施形態による、オフロードサーバを動作させる方法１０００の例を示す図である。図１０に示されるように、ＴＯＥが存在しないホストとアクセラレーションネットワークカードオフロードプロトコルの混合されたモードにおいて、拡張カードのいくつかのタイプに関して、コストおよび設計複雑性などの理由を考慮して、ＴＯＥハードウェアモジュールが拡張カードに含まれない。この場合、拡張カード上のＡＲＭプロセッサリソースの一部が、ＴＣＰ／ＩＰプロトコルスタックパースに割り当てられる。拡張カードの処理リソースが飽和している状況において、バイパスユニットが追加され得ることを考慮する必要もある。
【０１４４】
この実施形態では、ＴＯＥモジュールなしの混合されたプロトコルモードにおけるワークフローが説明される。したがって、ホストがＨＴＴＰネットワークサービスアプリケーションを実行するとき、それはＴＬＳ／ＳＳＬプロトコルレイヤに関係付けられたランタイムライブラリを含む必要もあり得る（ごく一部の場合、それが呼び出される必要がある）。拡張カードは、ネットワークに関係付けられたプロトコル制御およびデータ処理すべて、ならびに軽量アプリケーションプログラムを取り扱う。拡張カード上のソフトウェアスタックは、「ＡＲＭプロセッサ＋Ｌｉｎｕｘオペレーティングシステム」の形態でも実装され得る。
【０１４５】
拡張カード上で、ＴＬＳ／ＳＳＬプロトコルレイヤおよびＴＣＰ／ＩＰプロトコルスタックが、ソフトウェアスタックを介して実行され、暗号化および復号アルゴリズムがＴＬＳ／ＳＳＬエンジンによってオフロードされる。ネットワークポートのトラフィック（回線速度など）が増加するとＡＲＭがシステムトラフィックのボトルネックになるため、複数のトラフィックの間で区別をする必要がある。
【０１４６】
１つ目は、通常のＨＴＴＰＳトラフィックである。トラフィックのこの部分はクライアントによって開始され、ＡＲＭに対するＴＬＳ／ＳＳＬオフロードに渡されることが好ましいことを特徴とする。ＡＲＭカーネルリソース使用量が特定のレベルを超えると、一部の新しいトラフィックがＰＣＩｅにバイパスされ、ホストによって直接取り扱われる。２つ目は、混合されたＨＴＴＰおよび他の関係しないトラックである。この部分は、一般にＡＲＭ  ＴＬＳ／ＳＳＬオフロードモジュールに入ることは想定されず、したがって、それはホストにバイパスされ、または破棄され得る。
【０１４７】
３つ目は、ＨＴＴＰおよび他のプロトコルならびに他のポートに必要とされるトラフィックである。この部分は、ネットワーク検出および証明書チェーン検証などを含む。トラフィックのこの部分は、ＡＲＭによって、またはサブネット内の他のデバイスによって開始され得る。したがって、それらの個々の発信元および戻りアドレスを区別して、ＡＲＭおよびホストのそれぞれのネットワークプロセスおよび状態制御を保証するようにする必要がある。したがって、ＴＯＥモジュールが存在しないとき、ＡＲＭに関係付けられないトラフィックをホストに迂回させ、ＡＲＭによって構成されたバイパスルールに従ってフィルタリングするために、バイパスモジュールが必要とされる。
【０１４８】
図１０にさらに示されるように、データメッセージを受信した後、ＭＡＣは、データメッセージをオフロードのためにバイパスユニットに送信する（Ｓ１）。データがＡＲＭのメモリ領域に記憶され（Ｓ２）、またはデータをＰＣＩｅにバイパスしてホストにアップロードする（Ｓ３）。ＡＲＭカーネルによって受信されたデータは、まずプロトコルスタックによって処理される。データパケットがＴＬＳのハードウェアオフロードを必要とする場合、それは処理のためにＳＳＬに渡され（Ｓ４）、後続のプロセスコンテキスト状態および復号されたデータがホストにアップロードされる（Ｓ６）。
【０１４９】
データがＳＳＬによって処理される場合、方法１０００は、ｌｉｂｃｒｙｐｔｏおよびユーザモードドライバを介してハードウェアアクセラレーションのためにＴＬＳ／ＳＳＬを呼び出す（Ｓ５）。処理されたデータのタイプおよび宛先アドレスに応じて、方法１０００は、処理されたデータを（プロセス間通信を介して）ＡＲＭ上のアプリケーションに送信するか、または処理されたデータをホストバスインターフェースを介してホストにアップロードする（Ｓ６）。次に、方法１０００は、ＰＣＩｅ  ＤＭＡをホストのメモリ領域に書き込み、そして割り込みを提供するＳ（７）。
【０１５０】
ＴＯＥが存在しない場合、ＡＲＭカーネルは、ＴＣＰ／ＩＰスタックを取り扱う必要がある。さらに、ＰＣＩｅ  ＤＭＡがホストメモリ領域に書き込まれた後、ホストが割り込みに応答するのを待つ間にスループットレートを保証するために非同期モードを使用すべきである。ホストは、リングバッファに類似する形態を使用して受信を達成してよい。さらに、ホストがメッセージを送信する場合、プロセスおよびアイデアは類似するがパスは反対である。
【０１５１】
本出願は、ＴＬＳ／ＳＳＬプロトコルレイヤ下で部分を完全にオフロードするための方法を提案することに留意されたい。特定の実装において、複数の異なる特定の形態が存在する場合がある。たとえば、ＡＲＭカーネルインテリジェントネットワークカード＋ＴＬＳ／ＳＳＬハードウェアアクセラレーションモジュール＋ＴＯＥがある。
【０１５２】
本出願により提案される技術的解決策は、ＴＬＳ／ＳＳＬプロトコルレイヤ下でプロセスを完全にオフロードし、以下の３つのレベル、すなわち、拡張カードにおける「プロトコルオフロード」、「計算タスクアービトレーション」および「基本的ネットワーク制御」を含む再設計された構造を採用する。これにより、従来のＴＬＳ／ＳＳＬプロトコルの部分的オフロードに関連付けられた「コスト妥協」の問題点を解決する。
【０１５３】
本出願により提案されたＴＬＳ／ＳＳＬ完全オフロード解決策では、ホストに対する計算圧力が大幅に低減され、より多くの計算リソースがアプリケーションに提供され、ネットワークセキュリティプロトコルにおける遅延およびスループットが並列計算カーネルによって保証されることが理解され得る。
【０１５４】
図１１は、本発明の１つまたは複数の実施形態による、アルゴリズムをオフロードするためのデバイス１１００の例を示すブロック図を示す。図１１に示されるように、方法５００、６００、および６６０を実行できるデバイス１１００は、開始モジュール１１１０、カプセル化モジュール１１１２、および送信モジュール１１１４を含む。開始モジュール１１１０は、ローカルトランスポートレイヤセキュリティプロトコルを開始して、ホストにより呼び出されたインターフェースに従って、拡張デバイスを介してタスクを処理する。カプセル化モジュール１１１２は、トランスポートレイヤセキュリティプロトコルがネットワークプロトコル処理ユニットを使用することによって拡張デバイスを介してタスクを処理した後、データメッセージとして処理結果をカプセル化する。
【０１５５】
送信モジュール１１１４は、拡張デバイスに配備されたネットワークコントローラを介して、カプセル化されたデータメッセージを送出する。開始モジュール１１１０、カプセル化モジュール１１１２、および送出モジュール１１１４は、図５（ａ）の実装要素５１０から５１４を実装するために使用され得る。上記のモジュールおよび対応するステップによって実装された例およびアプリケーションシナリオは同じであり、方法５００に関して開示された内容を含むが、これに限定されない。上記のモジュールは、コンピュータ実行可能命令のセットなどのコンピュータシステムにおけるデバイスの一部として実装され得ることに留意されたい。
【０１５６】
上記から理解され得るように、本発明の上述の実施形態では、サーバホストによりウェブブラウザにデータを送信するプロセスにおいて、拡張デバイスは、ホストにより呼び出されたインターフェースに従ってローカルトランスポートレイヤセキュリティプロトコル（ＴＬＳ／ＳＳＬ）を開始して、データを送信するホストに関係付けられたタスクを処理する。トランスポートレイヤセキュリティプロトコル（ＴＬＳ／ＳＳＬ）が関係付けられたタスクを処理した後、拡張デバイス内のネットワークプロトコル処理ユニットが、データメッセージとして処理結果のＴＣＰ／ＩＰカプセル化を行うためにさらに使用される。
【０１５７】
最後に、拡張デバイスに配備されたネットワークコントローラが、カプセル化されたデータメッセージを送出し、その結果、拡張カードがＴＬＳ／ＳＳＬプロトコルレイヤ下でほとんどすべてのプロセスを達成し、それにより、ホストに対する計算圧力を低減する。したがって、より多くの計算リソースがアプリケーションに提供され、セキュアなネットワークプロトコルにおける遅延およびスループットの技術的効果が、拡張カード上の並列計算カーネルによって保証され、それにより、サーバホスト上のリソース使用が依然として比較的大きいという従来技術で採用されていたローカルハードウェアオフロード解決策の技術的問題を解決する。
【０１５８】
任意選択の実施形態では、デバイス１１００は、第１の処理モジュールをさらに含み、第１の処理モジュールは、ホストを介してタスクを開始し、ホストのアプリケーションを介して拡張されたデバイスのトランスポートレイヤセキュリティプロトコルのインターフェースを呼び出すことにより、拡張デバイスは、トランスポートレイヤセキュリティプロトコルアルゴリズムの機能、ネットワークプロトコルカプセル化、およびタスクのための下位ネットワークプロトコルスタックの機能性を実行することができる。
【０１５９】
本明細書では、上記の第１の処理モジュールは要素５２２に対応し、上記のモジュールおよび対応するステップによって実装された例およびアプリケーションシナリオは同じであり、方法５２０に関して開示された内容を含むが、これに限定されないことに留意されたい。上記のモジュールは、コンピュータ実行可能命令のセットなどのコンピュータシステムにおけるデバイスの一部として実装され得ることに留意されたい。
【０１６０】
任意選択の実施形態では、上記の開始モジュールは、タスクを処理するためにトランスポートレイヤセキュリティプロトコルが必要とされるかどうかを決定するように構成された第１の決定モジュールと、必要に応じて、タスクをアービトレーションし、タスクを処理のためにアルゴリズムアクセラレーションユニットに送信して、タスクの処理結果を取得する第１の実行モジュールとを含む。
【０１６１】
第１の決定モジュールおよび第１の実行モジュールは方法５３０の要素５３２および５３４に対応することに留意されたい。上記のモジュールおよび対応するステップによって実装された例およびアプリケーションシナリオは同じであり、方法５３０に関して開示された内容を含むが、これに限定されない。上記のモジュールは、コンピュータ実行可能命令のセットなどのコンピュータシステムにおけるデバイスの一部として実装され得ることに留意されたい。
【０１６２】
任意選択の実施形態では、上記のカプセル化モジュールは、ネットワークプロトコル処理ユニットを介して処理結果をカプセル化し、カプセル化結果をネットワークコントローラに対し構成するようにさらに構成される。任意選択の実施形態では、拡張デバイス上で、ソフトウェアスタックがトランスポートレイヤセキュリティプロトコルのサービスを実行するために使用され、トランスポートレイヤセキュリティプロトコルのエンジンユニットが暗号化および復号アルゴリズムのオフロードを行うために使用され、ＴＣＰオフロードエンジンがネットワークプロトコルのハードウェアアクセラレーション処理を行うために使用される。
【０１６３】
任意選択の実施形態では、上記のデバイスは、ＴＣＰオフロードエンジンが拡張デバイス内に存在するかどうかを決定するように構成された第２の決定モジュールと、それが存在する場合、ＴＣＰオフロードエンジンを介してネットワークプロトコルのハードウェアアクセラレーション処理を実行するように構成された第２の実行モジュールとをさらに含む。
【０１６４】
上記の第２の決定モジュールおよび第２の実行モジュールは方法５４０の要素５４２および５４４に対応することに留意されたい。上記のモジュールおよび対応するステップによって実装された例およびアプリケーションシナリオは同じであり、方法５４０に関して開示された内容を含むが、これに限定されない。上記のモジュールは、コンピュータ実行可能命令のセットなどのコンピュータシステムにおけるデバイスの一部として実装され得ることに留意されたい。
【０１６５】
任意選択の実施形態では、デバイス１１００は、ＴＣＰオフロードエンジンが存在しない場合、拡張デバイスのリソース使用が予め決定された閾値を超えているかどうかを決定する第３の実行モジュールをさらに含む。超えている場合、第３の実行モジュールは、ロードバランシングスケジューリングモジュール（すなわち「トラフィックスケジューリングモジュール」）を使用して、トラフィックの一部を処理のためにホストへバイパスする。
【０１６６】
上記の第３実行モジュールは方法５４０の要素５４６に対応することに留意されたい。上記のモジュールおよび対応するステップによって実装された例およびアプリケーションシナリオは同じであり、方法５４０に関して開示された内容を含むが、これに限定されない。上記のモジュールは、コンピュータ実行可能命令のセットなどのコンピュータシステムにおけるデバイスの一部として実装され得ることに留意されたい。
【０１６７】
図１２は、本出願の１つまたは複数の実施形態による、アルゴリズムをオフロードするためのデバイス１２００の例を示すブロック図を示す。図１２に示されるように、方法７００、７３０、７４０、７５０、および７７０を実行することができるデバイス１２００は、パースモジュール１２１０、第３の処理モジュール１２１２、およびアップロードモジュール１２１４を含む。パースモジュール１２１０は、拡張デバイスを介してデータメッセージを受信し、ローカルネットワークコントローラを使用して、データメッセージをパースのためにネットワークプロトコル処理ユニットに送信する。第３処理モジュール１２１２は、ローカルトランスポートレイヤセキュリティプロトコルによって拡張デバイスを介してパース結果を処理する。アップロードモジュール１２１４は、拡張デバイスを介して処理結果をホストにアップロードする。
【０１６８】
パースモジュール１２１０、第３処理モジュール１２１２、およびアップロードモジュール１２１４は、方法７００の要素７１０から７１６に対応する。上記のモジュールおよび対応するステップによって実装された例およびアプリケーションシナリオは同じであり、方法７００に関して開示された内容を含むが、これに限定されない。上記のモジュールは、コンピュータ実行可能命令のセットなどのコンピュータシステムにおけるデバイスの一部として実装され得ることに留意されたい。
【０１６９】
上記から理解され得るように、本出願の上記の実施形態では、サーバホストによりウェブブラウザから送信されたデータを受信するプロセスにおいて、拡張デバイスは、データメッセージを受信し、拡張デバイス内のネットワークプロトコル処理ユニット（たとえばＴＣＰ／ＩＰ処理ユニット）を使用することによってデータメッセージとして処理結果を用いてＴＣＰ／ＩＰパースを行って、パース結果を取得する。
【０１７０】
さらに、拡張デバイスは、拡張デバイスローカル送信レイヤセキュリティプロトコル（ＴＬＳ／ＳＳＬ）を使用してパース結果を処理し、処理結果をホスト（すなわちサーバホスト）にアップロードし、その結果、拡張カードがＴＬＳ／ＳＳＬプロトコルレイヤ下でほとんどすべてのプロセスを達成し、それにより、ホストに対する計算圧力を低減する。
【０１７１】
したがって、より多くの計算リソースがアプリケーションに提供され、セキュアなネットワークプロトコルにおける遅延およびスループットの技術的効果が、拡張カード上の並列計算カーネルによって保証され、それにより、サーバホスト上のリソース使用が依然として比較的大きいという従来技術で採用されていたローカルハードウェアオフロード解決策の技術的問題を解決する。
【０１７２】
任意選択の実施形態では、デバイス１２００は、パース結果におけるデータが暗号化されているかどうかを決定する第３の決定モジュールと、パース結果におけるデータが暗号化されていない場合に、パース結果をホストに直接アップロードする第４の実行モジュールとをさらに含む。デバイス１２００はまた、パース結果におけるデータが暗号化されている場合に、ローカルトランスポートレイヤセキュリティプロトコルを使用することによってパース結果を処理するステップを行う第５の実行モジュールを含む。
【０１７３】
第３の決定モジュール、第４の実行モジュール、および第５の実行モジュールは方法７３０の要素７３２から７３６に対応することに留意されたい。上記のモジュールおよび対応するステップによって実装された例およびアプリケーションシナリオは同じであり、方法７３０に関して開示された内容を含むが、これに限定されない。上記のモジュールは、コンピュータ実行可能命令のセットなどのコンピュータシステムにおけるデバイスの一部として実装され得ることに留意されたい。
【０１７４】
任意選択の実施形態では、第５の実行モジュールは、トランスポートレイヤセキュリティプロトコルレイヤを使用してパース結果を処理し、処理結果を取得する第４の処理モジュールを含む。第５の実行モジュールはまた、処理結果をアービトレーションし、データを暗号化および復号処理のために対応するアルゴリズムアクセラレーションユニットに送信して復号結果を取得する復号モジュールを含む。
【０１７５】
第４の処理モジュールおよび復号モジュールは方法７４０の要素７４２から７４４に対応することに留意されたい。上記のモジュールおよび対応するステップによって実装された例およびアプリケーションシナリオは同じであり、方法７４０に関して開示された内容を含むが、これに限定されない。上記のモジュールは、コンピュータ実行可能命令のセットなどのコンピュータシステムにおけるデバイスの一部として実装され得ることに留意されたい。
【０１７６】
任意選択の実施形態では、デバイス１２００は、ＴＣＰオフロードエンジンが拡張デバイス内に存在するかどうかを決定する第４の決定モジュールと、ＴＣＰオフロードエンジンが拡張デバイスに存在する場合に、ＴＣＰオフロードエンジンを使用して、ネットワークプロトコル処理ユニット（たとえばＴＣＰ／ＩＰ処理ユニット）のハードウェアアクセラレーション処理を実行し、データメッセージをプロセッサのメモリ領域に記憶する第６の実行モジュールとをさらに含む。
【０１７７】
第４の決定モジュールおよび第６の実行モジュールは方法７５０の要素７５２および７５４に対応することに留意されたい。上記のモジュールおよび対応するステップによって実装された例およびアプリケーションシナリオは同じであり、方法７５０に関して開示された内容を含むが、これに限定されない。上記のモジュールは、コンピュータ実行可能命令のセットなどのコンピュータシステムにおけるデバイスの一部として実装され得ることに留意されたい。
【０１７８】
任意選択の実施形態では、第３の処理モジュールは、拡張デバイスのプロセッサを使用して、パース結果が処理のためにトランスポートレイヤセキュリティプロトコルのセキュアソケットレイヤに送信される必要があるかどうかを決定する第５の決定モジュールを含む。さらに、第３の処理モジュールは、パース結果がセキュアソケットレイヤに送信される必要がある場合に、トランスポートレイヤセキュリティプロトコルのセキュアソケットレイヤを使用することによってパース結果を処理する第７の実行モジュールを含む。さらに、第３の処理モジュールは、パース結果がセキュアソケットレイヤに送信される必要がない場合に、ホストにバイパスしてパース結果を処理する第８の実行モジュールを含む。
【０１７９】
第５の決定モジュール、第７の実行モジュール、および第８の実行モジュールは方法７６０の要素７６２から７６６に対応することに留意されたい。上記のモジュールおよび対応するステップによって実装された例およびアプリケーションシナリオは同じであり、方法７６０に関して開示された内容を含むが、これに限定されない。上記のモジュールは、コンピュータ実行可能命令のセットなどのコンピュータシステムにおけるデバイスの一部として実装され得ることに留意されたい。
【０１８０】
任意選択の実施形態では、第７の実行モジュールは、トランスポートレイヤセキュリティプロトコルのセキュアソケットレイヤがパース結果を処理するために使用されるとき、ＴＣＰオフロードエンジンを使用して、そのドライバを呼び出すことによってトランスポートレイヤ暗号化デバイスを介してデータを暗号化および復号し、暗号化および復号結果が予め決定された条件を満たす場合はホストにアップロードする。
【０１８１】
任意選択の実施形態では、第７の実行モジュールは、トランスポートレイヤセキュリティプロトコルのセキュアソケットレイヤがパース結果を処理するために使用されるとき、ＴＣＰオフロードエンジンを使用して、そのドライバを呼び出すことによってトランスポートレイヤ暗号化デバイスを介してデータを暗号化および復号する。復号結果のタイプおよび宛先アドレスに応じて、復号結果は、プロセッサ上のアプリケーションにアップロードされるか、またはホストバスを介してホストにアップロードされる。
【０１８２】
任意選択の実施形態では、デバイス１２００は、第９の実行モジュールをさらに含み、第９の実行モジュールは、ＴＣＰオフロードエンジンが拡張デバイスに存在しない場合、プロセッサのメモリ領域にデータメッセージを記憶し、または処理のためにホストにバイパスする。第９の実行モジュールは、方法７５０における７５６に対応し、上記のモジュールおよび対応するステップによって実装された例およびアプリケーションシナリオは同じであり、方法７５０に関して開示された内容を含むが、これに限定されない。上記のモジュールは、コンピュータ実行可能命令のセットなどのコンピュータシステムにおけるデバイスの一部として実装され得ることに留意されたい。
【０１８３】
任意選択の実施形態では、デバイス１２００は、プロセッサによってデータメッセージに対してプロトコルスタック処理を行う第５の処理モジュールと、ＴＬＳオフロードを実行する必要がある場合、復号処理のためにそれをセキュアソケットレイヤ（ＳＳＬ）に送信し、トランスポートレイヤセキュリティプロトコルを呼び出してハードウェアアクセラレーションを達成する。
【０１８４】
第５の処理モジュールおよび第６の処理モジュールは方法７５０の７６０および７６２に対応し、上記のモジュールおよび対応するステップによって実装された例およびアプリケーションシナリオは同じであり、方法７５０に関して開示された内容を含むが、これに限定されないことに留意されたい。上記のモジュールは、コンピュータ実行可能命令のセットなどのコンピュータシステムにおけるデバイスの一部として実装され得ることに留意されたい。
【０１８５】
任意選択の実施形態では、デバイス１２００は、ＴＬＳオフロードが行われる必要がない場合に、復号結果のタイプおよび宛先アドレスに応じて復号結果をプロセッサ上のアプリケーションにアップロードするか、またはホストバスを介してそれをホストにアップロードする第７の処理モジュールをさらに含む。
【０１８６】
上述された第７の処理モジュールは方法７５０における７６４に対応し、上記のモジュールおよび対応するステップによって実装された例およびアプリケーションシナリオは同じであり、方法７５０に関して開示された内容を含むが、これに限定されないことに留意されたい。上記のモジュールは、コンピュータ実行可能命令のセットなどのコンピュータシステムにおけるデバイスの一部として実装され得ることに留意されたい。
【０１８７】
図１３は、本発明の１つまたは複数の実施形態による、拡張デバイス１３００の例を示すブロック図を示す。図１３に示されるように、拡張デバイス１３００はプロセッサ１３１０を含む（あるいは複数のプロセッサ１３１０が使用され得る）。プロセッサ１３１０は、マイクロプロセッサＭＣＵまたはプログラマブル論理デバイスＦＰＧＡなどの処理デバイスを含むが、これらに限定されない。
【０１８８】
さらに、拡張デバイス１３００は、データを記憶するためのメモリ１３１２、通信機能のためのネットワークコントローラ１３１４、および外部バス１３２２に結合された外部バスコントローラ１３２０を含む。さらに、拡張デバイス１３００は、プロセッサ１３１０、メモリ１３１２、ネットワークコントローラ１３１４、および外部バスコントローラ１３２０に結合された、内部バス１３２４を含む。一方、外部バス１３２２はホストプロセッサに結合される。
【０１８９】
さらに、拡張デバイス１３００は、ディスプレイ、入出力インターフェース（Ｉ／Ｏインターフェース）、（Ｉ／Ｏインターフェースのポートの１つとして含まれ得る）ユニバーサルシリアルバス（ＵＳＢ）ポート、ネットワークインターフェース、電源、および／またはカメラを含むこともできる。図１３は例示にすぎず、上記の電子デバイスの構成を限定するものではない。たとえば、拡張デバイス１３００は、図１３に示されるよりも多いまたは少ないコンポーネントを含んでもよく、または図１３に示されるものとは異なる構成を有してもよい。
【０１９０】
プロセッサ１３１０および／または他のデータ処理回路は、本明細書では一般に「データ処理回路」と呼ばれることもある。データ処理回路は、全体的または部分的に、ソフトウェア、ハードウェア、ファームウェア、またはそれらの任意の組み合わせとして具現化され得る。さらに、データ処理回路は、単一の個別の処理モジュールであってよく、または全体的もしくは部分的に拡張デバイス１３００における他のコンポーネントのいずれかに統合されてよい。本出願の実施形態で言及されているように、データ処理回路は、プロセッサ（たとえば、インターフェースに接続された可変抵抗端子経路の選択）として制御される。
【０１９１】
プロセッサ１３１０は、ＴＣＰ／ＩＰまたはＵＤＰなどのトランスポートプロトコルに従ってフォーマットされたデータを、ホストプロセッサ上で実行されているアプリケーションから外部バスを介して受信して、受信されたデータを形成する。プロセッサ１３１０はまた、受信されたデータが暗号化されるべきかどうかを決定し、受信されたデータが暗号化されるべき場合、ＴＬＳ／ＳＳＬなどのセキュリティプロトコルを処理して、受信されたデータから暗号化されたデータを生成する。
【０１９２】
さらに、プロセッサ１３１０は、トランスポートプロトコルのトランスポートレイヤプロトコルスタックを処理して、受信されたデータが暗号化されるべきでない場合は受信されたデータから、受信されたデータが暗号化されるべきである場合は暗号化されたデータから、発信ＩＰ通信を生成する。さらに、プロセッサ１３１０は、内部バス１３２４を介して発信ＩＰ通信をネットワークコントローラ１３１４に送信する。
【０１９３】
次いで、ネットワークコントローラ１３１４が、発信ＩＰ通信をフォーマットしてフォーマットされたＩＰ通信を形成し、フォーマットされたＩＰ通信をネットワーク上に伝送する。ネットワークコントローラ１３１４はまた、ネットワークからデータパケットを受信し、データパケットから着信ＩＰ通信を形成し、着信ＩＰ通信を内部バス１３２４を介してプロセッサ１３１０に送信する。
【０１９４】
プロセッサ１３１０はまた、トランスポートレイヤプロトコルスタックを処理して着信ＩＰ通信から処理されたデータを生成し、処理されたデータが暗号化されているかどうかを決定する。さらに、プロセッサ１３１０は、処理されたデータが暗号化されている場合にセキュリティプロトコルを処理し、そうすることで、セキュリティプロトコルは、処理されたデータから復号されたデータを生成する。
【０１９５】
さらに、プロセッサ１３１０は、処理されたデータが暗号化されていない場合は、処理されたデータを、外部バス１３２２を介してホストプロセッサ上で実行されているアプリケーションに送信し、処理されたデータが暗号化されていない場合は、復号されたデータを、外部バス１３２２を介してホストプロセッサ上で実行されているアプリケーションに送信する。拡張プロセッサ１３１０およびホストプロセッサは、ラックのバックプレーンが外部バス１３２２として機能するラックにおける異なるカードに存在することができる。
【０１９６】
プロセッサ１３１０は、送信デバイスによってメモリに記憶された情報およびアプリケーションプログラムを呼び出して、以下のステップを行うことができる：すなわち、拡張デバイスが、ローカルトランスポートレイヤセキュリティプロトコルを開始して、ホストにより呼び出されたインターフェースに従ってタスクを処理する。トランスポートレイヤセキュリティプロトコルがタスクを処理した後、拡張デバイスはネットワークプロトコル処理ユニット（たとえばＴＣＰ／ＩＰ処理ユニット）を使用して、処理結果をデータメッセージとしてカプセル化する。拡張デバイスに配備されたネットワークコントローラが、カプセル化されたデータメッセージを送出する。
【０１９７】
メモリ１３１２は、本出願の１つまたは複数の実施形態における分配ネットワークデバイスのネットワークアクセス状況を監視するための方法に対応するプログラム命令／データストレージデバイスなどのアプリケーションソフトウェアのソフトウェアプログラムおよびモジュールを記憶するために使用され得る。プロセッサ１３１０は、メモリ１３１２に記憶されたソフトウェアプログラムおよびモジュールを実行して、様々な機能のアプリケーションおよびデータ処理を実行する。すなわち、本出願における分配デバイスのネットワークアクセス状況を監視するための方法を実装する。メモリ１３１２は、高速ランダムアクセスメモリを含むことができ、１つもしくは複数の磁気ストレージデバイス、フラッシュメモリ、または他の不揮発性ソリッドステートメモリなどの不揮発性メモリを含むこともできる。いくつかの例では、メモリ１３１２は、プロセッサ１３１０に対して離れて配置されたメモリをさらに含むことができ、離れて配置されたメモリは、ネットワークを介して拡張デバイス１３００に接続されることができる。そのようなネットワークの例は、インターネット、イントラネット、ローカルエリアネットワーク、モバイル通信ネットワーク、およびこれらの組み合わせを含むが、これらに限定されない。
【０１９８】
ネットワークコントローラ１３１４は、ネットワークを介してデータを受信または送信する。上述されたネットワーク固有の例は、拡張デバイス１３００の通信プロバイダにより提供されるワイヤレスネットワークを含み得る。一例では、ネットワークコントローラ１３１４は、インターネットと通信するために基地局を介して他のネットワークデバイスに接続され得るネットワークインターフェースコントローラ（ＮＩＣ）を含む。一例では、ネットワークコントローラ１３１４は、ワイヤレスでインターネットと通信するための無線周波数（ＲＦ）モジュールとすることができる。ディスプレイは、たとえば、拡張デバイス１３００のユーザインターフェースとユーザが対話するのを可能にするタッチスクリーン液晶ディスプレイ（ＬＣＤ）とすることができる。
【０１９９】
いくつかの任意選択の実施形態では、図１３で上記に示された拡張デバイス１３００は、（回路を含む）ハードウェアコンポーネント、（コンピュータ可読媒体に記憶されたコンピュータコードを含む）ソフトウェアコンポーネント、またはハードウェアコンポーネントとソフトウェアコンポーネントの両方の組み合わせを含み得る。図１３は、例のうち特定の例の一例にすぎず、上述された拡張デバイス１３００に存在し得るコンポーネントのタイプを示すことが意図されている。
【０２００】
いくつかの実施形態では、図１３で上記に示された拡張デバイス１３００は、タッチディスプレイ（「タッチスクリーン」または「タッチパネル」とも呼ばれる）を有する。いくつかの実施形態では、図１３で上記に示された拡張デバイス１３００は、グラフィックユーザインターフェース（ＧＵＩ）を有し、ユーザは、そのタッチセンサ式表面に指および／またはジェスチャで触れることによってＧＵＩと対話することができる。
【０２０１】
本明細書での人間とコンピュータの対話は、ウェブページの作成、描画、文書処理、電子文書の作成、ゲームのプレイ、ビデオ会議、インスタントメッセージング、電子メールの送受信、会話インターフェース、デジタルビデオの再生、デジタル音楽の再生、および／またはウェブサーフィンなどの対話を含む。上述された人間とコンピュータの対話機能を実行するための実行可能な命令は、１つまたは複数のプロセッサ実行可能コンピュータプログラム製品または可読記憶媒体に構成／記憶される。
【０２０２】
この実施形態では、拡張デバイス１３００は、本出願における分配デバイスのネットワークアクセス状況を監視するための方法における以下のステップのプログラムコードを実行することができる。すなわち、拡張デバイスが、ローカルトランスポートレイヤセキュリティプロトコルを開始して、ホストにより呼び出されたインターフェースに従ってタスクを処理する。トランスポートレイヤセキュリティプロトコルがタスクを処理した後、拡張デバイスはネットワークプロトコル処理ユニット（たとえばＴＣＰ／ＩＰ処理ユニット）を使用して、処理結果をデータメッセージとしてカプセル化する。拡張デバイスに配備されたネットワークコントローラが、カプセル化されたデータメッセージを送出する。
【０２０３】
任意選択で、上記のプロセッサが以下のステップのプログラムコードをさらに実行してよい：すなわち、拡張デバイスが、ローカルトランスポートレイヤセキュリティプロトコルを開始して、ホストにより呼び出されたインターフェースに従ってタスクを処理する。トランスポートレイヤセキュリティプロトコルがタスクを処理した後、拡張デバイスはネットワークプロトコル処理ユニット（たとえばＴＣＰ／ＩＰ処理ユニット）を使用して、処理結果をデータメッセージとしてカプセル化する。拡張デバイスに配備されたネットワークコントローラが、カプセル化されたデータメッセージを送出する。
【０２０４】
任意選択で、上記のプロセッサは、以下のステップのプログラムコードをさらに実行してよい：すなわち、ホストがタスクを開始し、ホストのアプリケーションは、拡張デバイスのトランスポートレイヤセキュリティプロトコルのインターフェースを呼び出し、したがって、拡張デバイスは、トランスポートレイヤセキュリティプロトコルアルゴリズム、ネットワーク（ＴＣＰ／ＩＰ）プロトコルカプセル化、および下位のネットワークプロトコルスタックの機能を実行するようになる。
【０２０５】
任意選択で、上記のプロセッサは、以下のステップのプログラムコードをさらに実行してよい：すなわち、トランスポートレイヤセキュリティプロトコルがタスクを処理する必要があるかどうかを決定し、必要である場合、タスクをアービトレーションし、タスクを処理のためにアルゴリズムアクセラレーションユニットに送信し、次いでタスクの処理結果を取得する。任意選択で、上記のプロセッサは、以下のステップのプログラムコードをさらに実行してよい：すなわち、ネットワーク（ＴＣＰ／ＩＰ）プロトコル処理ユニットが処理結果をカプセル化し、カプセル化結果をネットワークコントローラに対し構成する。
【０２０６】
任意選択で、上記のプロセッサは、以下のステップのプログラムコードをさらに実行してよい：すなわち、拡張デバイス上で、ソフトウェアスタックがトランスポートレイヤセキュリティプロトコルのサービスを実行するように構成され、トランスポートレイヤセキュリティプロトコルのエンジンユニットが暗号化および復号アルゴリズムのオフロードを行うように構成され、ネットワーク（ＴＣＰ／ＩＰ）プロトコルのハードウェアアクセラレーション処理がＴＣＰオフロードエンジン（ＴＯＥ）を介して実行される。
【０２０７】
任意選択で、上記のプロセッサは、以下のステップのプログラムコードをさらに実行してよい：すなわち、ＴＣＰオフロードエンジン（ＴＯＥ）が拡張デバイス内に存在するかどうかを決定し、それが存在する場合、ＴＣＰオフロードエンジン（ＴＯＥ）がネットワーク（ＴＣＰ／ＩＰ）プロトコルのハードウェアアクセラレーション処理を実行するように構成される。任意選択で、上記のプロセッサは、以下のステップのプログラムコードをさらに実行してよい：すなわち、ＴＣＰオフロードエンジンが存在しない場合、拡張デバイスのリソース使用が予め決定された閾値を超えているかどうかを決定し、超えている場合、ロードバランシングスケジューリングモジュールが、トラフィックの一部を処理のためにホストへバイパスするように構成される。
【０２０８】
任意選択で、上記のプロセッサは、以下のステップのプログラムコードをさらに実行してよい：すなわち、拡張デバイスがデータメッセージを受信し、ローカルネットワークコントローラを使用してデータメッセージをパースのためにネットワークプロトコル処理ユニット（たとえばＴＣＰ／ＩＰ処理ユニット）に送信し、拡張デバイスはローカルトランスポートレイヤセキュリティプロトコルを使用してパース結果を処理し、拡張デバイスは処理結果をホストにアップロードする。
【０２０９】
任意選択で、上記のプロセッサは、以下のステップのプログラムコードをさらに実行してよい：すなわち、パース結果におけるデータが暗号化されているかどうかを決定し、パース結果におけるデータが暗号化されていない場合、パース結果をホストに直接アップロードする。パース結果におけるデータが暗号化されている場合、ローカルトランスポートレイヤセキュリティプロトコルを使用してパース結果を処理するステップを行う。
【０２１０】
任意選択で、上記のプロセッサは、以下のステップのプログラムコードをさらに実行してよい：すなわち、トランスポートレイヤセキュリティプロトコルレイヤがパース結果を処理して処理結果を取得し、処理結果をアービトレーションし、暗号化および復号処理のために対応するアルゴリズムアクセラレーションユニットに送信して、復号結果を取得する。
【０２１１】
任意選択で、上記のプロセッサは、以下のステップのプログラムコードをさらに実行してよい：すなわち、拡張デバイス内にＴＣＰオフロードエンジン（ＴＯＥ）が存在するかどうかを決定し、それが存在する場合、ＴＣＰオフロードエンジン（ＴＯＥ）を使用してネットワークプロトコル処理ユニット（たとえばＴＣＰ／ＩＰ処理ユニット）のハードウェアアクセラレーション処理を行い、プロセッサのメモリ領域にデータメッセージを記憶する。
【０２１２】
任意選択で、上記のプロセッサは、以下のステップのプログラムコードをさらに実行してよい：すなわち、拡張デバイスのプロセッサは、パース結果が処理のためにトランスポートレイヤセキュリティプロトコルのセキュアソケットレイヤに送信される必要があるかどうかを決定し、それが必要である場合、トランスポートレイヤセキュリティプロトコルのセキュアソケットレイヤを使用してパース結果を処理する。それが必要でない場合、ホストにバイパスしてパース結果を処理する。
【０２１３】
任意選択で、上記のプロセッサは、以下のステップのプログラムコードをさらに実行してよい：すなわち、トランスポートレイヤセキュリティプロトコルのセキュアソケットレイヤを使用してパース結果を処理するプロセスにおいて、ＴＣＰオフロードエンジンが、ドライバの呼び出しを介してトランスポートレイヤ暗号化デバイスを使用することによってデータを暗号化および復号し、暗号化および復号結果が予め決定された条件を満たす場合、ホストにアップロードする。
【０２１４】
任意選択で、上記のプロセッサは、以下のステップのプログラムコードをさらに実行してよい：すなわち、トランスポートレイヤセキュリティプロトコルのセキュアソケットレイヤを使用してパース結果を処理するプロセスにおいて、ＴＣＰオフロードエンジンが、ドライバの呼び出しを介してトランスポートレイヤ暗号化デバイスを使用することによってデータを復号し、復号結果のタイプおよび宛先アドレスに応じて復号結果をプロセッサ上のアプリケーションにアップロードするか、またはホストバスを介してホストにアップロードする。
【０２１５】
任意選択で、上記のプロセッサは、以下のステップのプログラムコードをさらに実行してよい：すなわち、それが存在しない場合、プロセッサのメモリ領域にデータメッセージを記憶し、またはデータメッセージを処理のためにホストにバイパスする。任意選択で、上記のプロセッサは、以下のステップのプログラムコードをさらに実行してよい：すなわち、プロセッサは、データメッセージに対してプロトコルスタック処理を行う。ＴＬＳオフロードを行う必要がある場合、復号処理のためにデータメッセージをセキュアソケットレイヤ（ＳＳＬ）に送信し、トランスポートレイヤセキュリティプロトコルを呼び出してハードウェアアクセラレーションを達成する。
【０２１６】
任意選択で、上記のプロセッサは、以下のステップのプログラムコードをさらに実行してよい：すなわち、ＴＬＳオフロードを行う必要がない場合、復号結果のタイプおよび宛先アドレスに応じて復号結果をプロセッサ上のアプリケーションにアップロードするか、またはホストバスを介してホストにアップロードする。
【０２１７】
図１３に示されている拡張デバイス１３００は、スマートフォン（Ａｎｄｒｏｉｄ携帯電話、ｉＯＳ携帯電話など）、タブレットコンピュータ、パームコンピュータ、またはモバイルインターネットデバイス（Ｍｏｂｉｌｅ  Ｉｎｔｅｒｎｅｔ  Ｄｅｖｉｃｅ、ＭＩＤ）、ＰＡＤ、および他の端末デバイスとすることもできる。図１３は、上記の電子デバイスの構造を限定するものではない。たとえば、拡張デバイス１３００は、図１３に示されるよりも多いまたは少ないコンポーネント（たとえば、ネットワークインターフェース、ディスプレイデバイスなど）を含んでもよく、または図１３に示されるものとは異なる構成を有してもよい。
【０２１８】
上記の実施形態のステップのすべてまたは一部は、端末デバイスに関係付けられたハードウェアに命令するプログラムによって達成され得る。プログラムは、コンピュータ可読記憶媒体に記憶されることができ、記憶媒体は、フラッシュディスク、読み取り専用メモリ（ＲＯＭ）、ランダムアクセスメモリ（ＲＡＭ）、磁気ディスク、または光ディスクを含み得る。
【０２１９】
本出願の実施形態は記憶媒体をさらに提供する。任意選択で、実施形態において、記憶媒体は、上記の実施形態により提供されるネットワークデバイスのネットワークアクセス状況を監視するための方法によって実行されるプログラムコードを保存するために使用されてよく、記憶媒体は、プログラムを実行するプロセス中に制御される。デバイスは、任意の実施形態の分配ネットワークデバイスのネットワークアクセス状況を監視する任意選択のまたは好ましい方法を実行する。
【０２２０】
任意選択で、この実施形態では、上記の記憶媒体は、コンピュータネットワークにおけるモバイル端末グループの任意の１つのモバイルデバイスに、またはモバイル端末グループの任意の１つのモバイルデバイスに配置され得る。任意選択で、実施形態において、記憶媒体は、以下のステップを実行するためのプログラムコードを記憶するように構成される：すなわち、拡張デバイスが、ローカルトランスポートレイヤセキュリティプロトコルを開始して、ホストにより呼び出されたインターフェースに従ってタスクを処理し、トランスポートレイヤセキュリティプロトコルがタスクを処理した後、拡張デバイスはネットワークプロトコル処理ユニット（たとえばＴＣＰ／ＩＰ処理ユニット）を使用して、処理結果をデータメッセージとしてカプセル化し、拡張デバイスに配備されたネットワークコントローラが、カプセル化されたデータメッセージを送出する。
【０２２１】
任意選択で、実施形態において、記憶媒体は、以下のステップを実行するためのプログラムコードを記憶するように構成される：すなわち、ホストがタスクを開始し、ホストのアプリケーションは、拡張デバイスのトランスポートレイヤセキュリティプロトコルのインターフェースを呼び出し、したがって、拡張デバイスは、トランスポートレイヤセキュリティプロトコルアルゴリズム、ネットワーク（ＴＣＰ／ＩＰ）プロトコルカプセル化、および下位のネットワークプロトコルスタックの機能を実行するようになる。
【０２２２】
任意選択で、実施形態において、記憶媒体は、以下のステップを実行するためのプログラムコードを記憶するように構成される：すなわち、トランスポートレイヤセキュリティプロトコルがタスクを処理する必要があるかどうかを決定する。必要である場合、タスクをアービトレーションし、タスクを処理のためにアルゴリズムアクセラレーションユニットに送信し、次いでタスクの処理結果を取得する。任意選択で、実施形態において、記憶媒体は、以下のステップを実行するためのプログラムコードを記憶するように構成される：すなわち、ネットワーク（ＴＣＰ／ＩＰ）プロトコル処理ユニットが処理結果をカプセル化し、カプセル化結果をネットワークコントローラに対し構成する。
【０２２３】
任意選択で、実施形態において、記憶媒体は、以下のステップを実行するためのプログラムコードを記憶するように構成される：すなわち、拡張デバイス上で、ソフトウェアスタックがトランスポートレイヤセキュリティプロトコルのサービスを実行するように構成され、トランスポートレイヤセキュリティプロトコルのエンジンユニットが暗号化および復号アルゴリズムのオフロードを行うように構成され、ネットワーク（ＴＣＰ／ＩＰ）プロトコルのハードウェアアクセラレーション処理がＴＣＰオフロードエンジン（ＴＯＥ）を介して実行される。
【０２２４】
任意選択で、実施形態において、記憶媒体は、以下のステップを実行するためのプログラムコードを記憶するように構成される：すなわち、ＴＣＰオフロードエンジン（ＴＯＥ）が拡張デバイス内に存在するかどうかを決定する。それが存在する場合、ＴＣＰオフロードエンジン（ＴＯＥ）がネットワーク（ＴＣＰ／ＩＰ）プロトコルのハードウェアアクセラレーション処理を実行するように構成される。
【０２２５】
任意選択で、実施形態において、記憶媒体は、以下のステップを実行するためのプログラムコードを記憶するように構成される：すなわち、ＴＣＰオフロードエンジンが存在しない場合、拡張デバイスのリソース使用が予め決定された閾値を超えているかどうかを決定する。超えている場合、ロードバランシングスケジューリングモジュールが、トラフィックの一部を処理のためにホストへバイパスするように構成される。
【０２２６】
任意選択で、実施形態において、記憶媒体は、以下のステップを実行するためのプログラムコードを記憶するように構成される：すなわち、拡張デバイスがデータメッセージを受信し、ローカルネットワークコントローラを使用してデータメッセージをパースのためにネットワークプロトコル処理ユニット（たとえばＴＣＰ／ＩＰ処理ユニット）に送信する。拡張デバイスはローカルトランスポートレイヤセキュリティプロトコルを使用してパース結果を処理し、拡張デバイスは処理結果をホストにアップロードする。
【０２２７】
任意選択で、実施形態において、記憶媒体は、以下のステップを実行するためのプログラムコードを記憶するように構成される：すなわち、パース結果におけるデータが暗号化されているかどうかを決定し、パース結果におけるデータが暗号化されていない場合、パース結果をホストに直接アップロードし、パース結果におけるデータが暗号化されている場合、ローカルトランスポートレイヤセキュリティプロトコルを使用してパース結果を処理するステップを行う。
【０２２８】
任意選択で、実施形態において、記憶媒体は、以下のステップを実行するためのプログラムコードを記憶するように構成される：すなわち、トランスポートレイヤセキュリティプロトコルレイヤがパース結果を処理して処理結果を取得し、処理結果をアービトレーションし、暗号化および復号処理のために対応するアルゴリズムアクセラレーションユニットに送信して、復号結果を取得する。
【０２２９】
任意選択で、実施形態において、記憶媒体は、以下のステップを実行するためのプログラムコードを記憶するように構成される：すなわち、拡張デバイス内にＴＣＰオフロードエンジン（ＴＯＥ）が存在するかどうかを決定し、それが存在する場合、ＴＣＰオフロードエンジン（ＴＯＥ）を使用してネットワークプロトコル処理ユニット（たとえばＴＣＰ／ＩＰ処理ユニット）のハードウェアアクセラレーション処理を行い、プロセッサのメモリ領域にデータメッセージを記憶する。
【０２３０】
任意選択で、実施形態において、記憶媒体は、以下のステップを実行するためのプログラムコードを記憶するように構成される：すなわち、拡張デバイスのプロセッサは、パース結果が処理のためにトランスポートレイヤセキュリティプロトコルのセキュアソケットレイヤに送信される必要があるかどうかを決定する。それが必要である場合、トランスポートレイヤセキュリティプロトコルのセキュアソケットレイヤを使用してパース結果を処理する。それが必要でない場合、ホストにバイパスしてパース結果を処理する。
【０２３１】
任意選択で、実施形態において、記憶媒体は、以下のステップを実行するためのプログラムコードを記憶するように構成される：すなわち、トランスポートレイヤセキュリティプロトコルのセキュアソケットレイヤを使用してパース結果を処理するプロセスにおいて、ＴＣＰオフロードエンジンが、ドライバの呼び出しを介してトランスポートレイヤ暗号化デバイスを使用することによってデータを暗号化および復号し、暗号化および復号結果が予め決定された条件を満たす場合、ホストにアップロードする。
【０２３２】
任意選択で、実施形態において、記憶媒体は、以下のステップを実行するためのプログラムコードを記憶するように構成される：すなわち、トランスポートレイヤセキュリティプロトコルのセキュアソケットレイヤを使用してパース結果を処理するプロセスにおいて、ＴＣＰオフロードエンジンが、ドライバの呼び出しを介してトランスポートレイヤ暗号化デバイスを使用することによってデータを復号し、復号結果のタイプおよび宛先アドレスに応じて復号結果をプロセッサ上のアプリケーションにアップロードするか、またはホストバスを介してホストにアップロードする。
【０２３３】
任意選択で、実施形態において、記憶媒体は、以下のステップを実行するためのプログラムコードを記憶するように構成される：すなわち、それが存在しない場合、プロセッサのメモリ領域にデータメッセージを記憶し、またはデータメッセージを処理のためにホストにバイパスする。任意選択で、実施形態において、記憶媒体は、以下のステップを実行するためのプログラムコードを記憶するように構成される：すなわち、プロセッサは、データメッセージに対してプロトコルスタック処理を行う。ＴＬＳオフロードを行う必要がある場合、復号処理のためにデータメッセージをセキュアソケットレイヤ（ＳＳＬ）に送信し、トランスポートレイヤセキュリティプロトコルを呼び出してハードウェアアクセラレーションを達成する。
【０２３４】
任意選択で、実施形態において、記憶媒体は、以下のステップを実行するためのプログラムコードを記憶するように構成される：すなわち、ＴＬＳオフロードを行う必要がない場合、復号結果のタイプおよび宛先アドレスに応じて復号結果をプロセッサ上のアプリケーションにアップロードするか、またはホストバスを介してホストにアップロードする。
【０２３５】
本出願の実施形態は、アルゴリズムをオフロードするためのシステムをさらに提供し、システムは、プロセッサおよびメモリを備え、メモリは、以下の処理ステップを処理するための命令をプロセッサに提供するためにプロセッサに結合される：すなわち、
【０２３６】
拡張デバイスが、ローカルトランスポートレイヤセキュリティプロトコルを開始して、ホストにより呼び出されたインターフェースに従ってタスクを処理し、
【０２３７】
トランスポートレイヤセキュリティプロトコルがタスクを処理した後、拡張デバイスはネットワークプロトコル処理ユニット（たとえばＴＣＰ／ＩＰ処理ユニット）を使用して、処理結果をデータメッセージとしてカプセル化し、
【０２３８】
拡張デバイスに配備されたネットワークコントローラが、カプセル化されたデータメッセージを送出する。
【０２３９】
上記から理解され得るように、本出願の上記の実施形態では、サーバホストによりウェブブラウザにデータを送信するプロセスにおいて、拡張デバイスは、ホストにより呼び出されたインターフェースに従ってローカルトランスポートレイヤセキュリティプロトコル（ＴＬＳ／ＳＳＬ）を開始して、データを送信するホストに関係付けられたタスクを処理し、トランスポートレイヤセキュリティプロトコル（ＴＬＳ／ＳＳＬ）が関係付けられたタスクを処理した後、拡張デバイス内のネットワークプロトコル処理ユニット（たとえばＴＣＰ／ＩＰ処理ユニット）が、データメッセージとして処理結果のＴＣＰ／ＩＰカプセル化を行うためにさらに使用される。最後に、拡張デバイスに配備されたネットワークコントローラが、カプセル化されたデータメッセージを送出し、その結果、拡張カードがＴＬＳ／ＳＳＬプロトコルレイヤ下でほとんどすべてのプロセスを達成し、それにより、ホストに対する計算圧力を低減する。したがって、より多くのコンピューティングリソースがアプリケーションに提供され、セキュアなネットワークプロトコルにおける遅延およびスループットの技術的効果が、拡張カード上の並列計算カーネルによって保証され、それにより、サーバホスト上のリソース使用が依然として比較的大きいという従来技術で採用されていたローカルハードウェアオフロード解決策の技術的問題を解決する。
【０２４０】
本出願の実施形態は、アルゴリズムをオフロードするためのシステムをさらに提供し、システムは、プロセッサおよびメモリを備え、メモリは、以下の処理ステップを処理するための命令をプロセッサに提供するためにプロセッサに結合される：すなわち、
【０２４１】
拡張デバイスがデータメッセージを受信し、ローカルネットワークコントローラを使用してデータメッセージをパースのためにネットワークプロトコル処理ユニット（たとえばＴＣＰ／ＩＰ処理ユニット）に送信し、拡張デバイスはローカルトランスポートレイヤセキュリティプロトコルを使用してパース結果を処理し、拡張デバイスは処理結果をホストにアップロードする。
【０２４２】
上記から理解され得るように、本出願の上記の実施形態では、サーバホストによりウェブブラウザから送信されたデータを受信するプロセスにおいて、拡張デバイスは、データメッセージを受信し、拡張デバイス内のネットワークプロトコル処理ユニット（たとえばＴＣＰ／ＩＰ処理ユニット）を使用することによってデータメッセージとして処理結果を用いてＴＣＰ／ＩＰパースを行って、パース結果を取得し、拡張デバイスローカル送信レイヤセキュリティプロトコル（ＴＬＳ／ＳＳＬ）を使用してパース結果を処理し、処理結果をホスト（すなわちサーバホスト）にアップロードし、その結果、拡張カードがＴＬＳ／ＳＳＬプロトコルレイヤ下でほとんどすべてのプロセスを達成し、それにより、ホストに対する計算圧力を低減する。したがって、より多くの計算リソースがアプリケーションに提供され、セキュアなネットワークプロトコルにおける遅延およびスループットの技術的効果が、拡張カード上の並列計算カーネルによって保証され、それにより、サーバホスト上のリソース使用が依然として比較的大きいという従来技術で採用されていたローカルハードウェアオフロード解決策の技術的問題を解決する。
【０２４３】
図１４は、本発明の１つまたは複数の実施形態による、集積チップ１４００の例を示すブロック図を示す。図１４に示されるように、方法５００、５２０、５３０、５４０、７００、７３０、７４０、７５０、および７７０を実装することができる集積チップ１４００は、ホストに結合された拡張インターフェース１４１０を含み、ホストは、アプリケーションを提供するように構成される。集積チップ１４００はまた、ホストにより呼び出されたインターフェースに従ってタスクを処理するトランスポートレイヤセキュリティプロトコル処理ユニット１４１２と、トランスポートレイヤセキュリティプロトコル処理ユニットと通信し、データメッセージをカプセル化またはパースするネットワークプロトコル処理ユニット１４１４と、データメッセージを送信または受信するネットワークコントローラ１４１６とを含む。集積チップ１４００は、埋め込み式にサーバホストにインストールされることができ、または様々なバスインターフェース（たとえばＰＣＩｅインターフェース）を介してサーバホストに接続されることができる。
【０２４４】
上記から理解され得るように、本出願の上記の実施形態では、拡張インターフェース１４１０がサーバホストに結合されている。サーバホストによりウェブブラウザにデータを送信するプロセスにおいて、ホストにより呼び出されたインターフェースに従ってトランスポートレイヤセキュリティプロトコル処理ユニット１４１２が、データを送信するホストに関係付けられたタスクを処理する。
【０２４５】
トランスポートレイヤセキュリティプロトコル（ＴＬＳ／ＳＳＬ）が関係付けられたタスクを処理した後、ネットワークプロトコル処理ユニット１４１４（たとえばＴＣＰ／ＩＰ処理ユニット）が、データメッセージとして処理結果のプロトコルカプセル化（たとえばＴＣＰ／ＩＰカプセル化）を行うためにさらに使用される。最後に、ネットワークコントローラ１４１６がカプセル化されたデータメッセージを送出する。さらに、サーバホストによりウェブブラウザから送信されたデータを受信するプロセスにおいて、ネットワークコントローラ１４１６がデータメッセージを受信し、受信されたデータは、ネットワークプロトコル処理ユニット１４１４を使用することによってパースされ、パース結果は、次いでトランスポートレイヤセキュリティプロトコル処理ユニット１４１２によって処理され、処理結果は、次いで拡張インターフェース１４１０を介してホスト（すなわちサーバホスト）にアップロードされる。
【０２４６】
このようにして、拡張カードがＴＬＳ／ＳＳＬプロトコルレイヤ下でほとんどすべてのプロセスを達成し、それにより、ホストに対する計算圧力を低減する。したがって、より多くの計算リソースがアプリケーションに提供され、セキュアなネットワークプロトコルにおける遅延およびスループットの技術的効果が、拡張カード上の並列計算カーネルによって保証され、それにより、サーバホスト上のリソース使用が依然として比較的大きいという従来技術で採用されていたローカルハードウェアオフロード解決策の技術的問題を解決する。
【０２４７】
本出願の実施形態の順序番号は単に説明のためのものであり、実施形態の利点および欠点を表していない。本出願の上述された実施形態において、様々な実施形態の説明は異なる焦点を有し、特定の実施形態で詳述されていない部分については、他の実施形態の関係付けられた説明が参照され得る。
【０２４８】
本出願によって提供される実施形態において、開示された技術的内容が他の方法で実装されてもよいことは理解されよう。上述された装置実施形態は単に概略である。たとえば、ユニットの分割は単に論理的機能分割である。実際の実装では別の分割方法があり得る。
【０２４９】
たとえば、複数のユニットまたはコンポーネントが異なるシステムに組み合わされもしくは統合されてよく、またはいくつかの特徴が無視されることもしくは実行されないことが可能である。さらに、示されまたは論じられた結合または直接結合または通信接続は、いくつかのインターフェース、ユニット、またはモジュールを介する間接結合または通信接続であってもよく、それは電気接続または他の接続であってよい。
【０２５０】
別個のコンポーネントとして説明されたユニットは、物理的に分離されても分離されなくてもよく、ユニットとして表示されたコンポーネントは、物理的ユニットであってもなくてもよく、すなわち、それらは、１つの場所に配置されても複数のネットワークユニットに分散されてもよい。ユニットの一部または全部は、特定の実施形態の解決策の目的を実現するための実際の必要に応じて選択され得る。
【０２５１】
さらに、本出願の一実施形態における各機能ユニットは１つの処理ユニットに統合されてもよく、または各ユニットは物理的に別々に存在してもよく、２つ以上のユニットが１つのユニットに統合されてもよい。上記の統合されたユニットは、ハードウェアの形態またはソフトウェア機能ユニットの形態で実装され得る。
【０２５２】
統合されたユニットは、ソフトウェア機能ユニットの形態で実装されてスタンドアロン製品として販売または使用される場合、コンピュータ可読記憶媒体に記憶され得る。そのような理解に基づいて、本出願の技術的解決策は、本質的にまたは先行技術に対する貢献において、技術的解決策の全部または一部は、記憶媒体に記憶されたソフトウェア製品の形態で具現化され得る。
【０２５３】
本発明の様々な実施形態で説明されている方法のステップの全部または一部をコンピュータデバイス（パーソナルコンピュータ、サーバ、またはネットワークデバイスなどであり得る）に実行させるために、いくつかの命令が含まれる。上記の記憶媒体は、ＵＳＢドライブ、読み取り専用メモリ（ＲＯＭ）、ランダムアクセスメモリ（ＲＡＭ）、リムーバブルハードディスク、磁気ディスク、および光ディスクなどを含む。
【０２５４】
上記の説明は、本出願の好ましい実施形態のほんの少数であり、当業者は、本出願の保護の範囲内と見なされるべき本出願の原理から逸脱することなく、いくつかの改善および変更を行うこともできることに留意されたい。
【図１】
2021501407.tif 000003
【図２（ａ）】
2021501407.tif 000004
【図２（ｂ）】
2021501407.tif 000005
【図３】
2021501407.tif 000006
【図４】
2021501407.tif 000007
【図５（ａ）】
2021501407.tif 000008
【図５（ｂ）】
2021501407.tif 000009
【図５（ｃ）】
2021501407.tif 000010
【図５（ｄ）】
2021501407.tif 000011
【図６（ａ）】
2021501407.tif 000012
【図６（ｂ）】
2021501407.tif 000013
【図７（ａ）】
2021501407.tif 000014
【図７（ｂ）】
2021501407.tif 000015
【図７（ｃ）】
2021501407.tif 000016
【図７（ｄ）】
2021501407.tif 000017
【図７（ｅ）】
2021501407.tif 000018
【図８】
2021501407.tif 000019
【図９】
2021501407.tif 000020
【図１０】
2021501407.tif 000021
【図１１】
2021501407.tif 000022
【図１２】
2021501407.tif 000023
【図１３】
2021501407.tif 000024
【図１４】
2021501407.tif 000025
【国際調査報告】
2021501407.tif 000026