JP2021501407A - アルゴリズムをオフロードするための方法、デバイス、およびシステム - Google Patents
アルゴリズムをオフロードするための方法、デバイス、およびシステム Download PDFInfo
- Publication number
- JP2021501407A JP2021501407A JP2020523252A JP2020523252A JP2021501407A JP 2021501407 A JP2021501407 A JP 2021501407A JP 2020523252 A JP2020523252 A JP 2020523252A JP 2020523252 A JP2020523252 A JP 2020523252A JP 2021501407 A JP2021501407 A JP 2021501407A
- Authority
- JP
- Japan
- Prior art keywords
- data
- protocol
- encrypted
- host
- communication
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
- 238000000034 method Methods 0.000 title claims description 341
- 238000004422 calculation algorithm Methods 0.000 title description 77
- 238000012545 processing Methods 0.000 claims abstract description 251
- 230000008569 process Effects 0.000 claims description 147
- 238000004891 communication Methods 0.000 claims description 93
- 238000009616 inductively coupled plasma Methods 0.000 description 161
- 235000010384 tocopherol Nutrition 0.000 description 161
- 235000019731 tricalcium phosphate Nutrition 0.000 description 161
- 230000032258 transport Effects 0.000 description 146
- 230000001133 acceleration Effects 0.000 description 84
- 238000005538 encapsulation Methods 0.000 description 25
- 238000010586 diagram Methods 0.000 description 19
- 230000005540 biological transmission Effects 0.000 description 17
- 230000006870 function Effects 0.000 description 15
- 230000008901 benefit Effects 0.000 description 12
- 238000004458 analytical method Methods 0.000 description 11
- 238000012546 transfer Methods 0.000 description 8
- 238000005516 engineering process Methods 0.000 description 5
- 238000012544 monitoring process Methods 0.000 description 5
- 230000003287 optical effect Effects 0.000 description 5
- 238000002955 isolation Methods 0.000 description 3
- 238000004886 process control Methods 0.000 description 3
- 238000004364 calculation method Methods 0.000 description 2
- 238000012937 correction Methods 0.000 description 2
- 230000000694 effects Effects 0.000 description 2
- 230000000977 initiatory effect Effects 0.000 description 2
- 230000003993 interaction Effects 0.000 description 2
- 230000009471 action Effects 0.000 description 1
- 230000006399 behavior Effects 0.000 description 1
- 230000006835 compression Effects 0.000 description 1
- 238000007906 compression Methods 0.000 description 1
- 238000004590 computer program Methods 0.000 description 1
- 238000010276 construction Methods 0.000 description 1
- 230000008878 coupling Effects 0.000 description 1
- 238000010168 coupling process Methods 0.000 description 1
- 238000005859 coupling reaction Methods 0.000 description 1
- 125000004122 cyclic group Chemical group 0.000 description 1
- 238000013500 data storage Methods 0.000 description 1
- 230000006837 decompression Effects 0.000 description 1
- 230000001934 delay Effects 0.000 description 1
- 238000013461 design Methods 0.000 description 1
- 238000011161 development Methods 0.000 description 1
- 239000000835 fiber Substances 0.000 description 1
- 230000006872 improvement Effects 0.000 description 1
- 238000007689 inspection Methods 0.000 description 1
- 239000004973 liquid crystal related substance Substances 0.000 description 1
- 230000005577 local transmission Effects 0.000 description 1
- 230000007246 mechanism Effects 0.000 description 1
- 238000010295 mobile communication Methods 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 238000005457 optimization Methods 0.000 description 1
- 238000011084 recovery Methods 0.000 description 1
- 230000004044 response Effects 0.000 description 1
- 229920006395 saturated elastomer Polymers 0.000 description 1
- 239000007787 solid Substances 0.000 description 1
- 238000012795 verification Methods 0.000 description 1
Images
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L63/00—Network architectures or network communication protocols for network security
- H04L63/04—Network architectures or network communication protocols for network security for providing a confidential data exchange among entities communicating through data packet networks
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/10—Protecting distributed programs or content, e.g. vending or licensing of copyrighted material ; Digital rights management [DRM]
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/60—Protecting data
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L63/00—Network architectures or network communication protocols for network security
- H04L63/04—Network architectures or network communication protocols for network security for providing a confidential data exchange among entities communicating through data packet networks
- H04L63/0428—Network architectures or network communication protocols for network security for providing a confidential data exchange among entities communicating through data packet networks wherein the data content is protected, e.g. by encrypting or encapsulating the payload
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L63/00—Network architectures or network communication protocols for network security
- H04L63/04—Network architectures or network communication protocols for network security for providing a confidential data exchange among entities communicating through data packet networks
- H04L63/0428—Network architectures or network communication protocols for network security for providing a confidential data exchange among entities communicating through data packet networks wherein the data content is protected, e.g. by encrypting or encapsulating the payload
- H04L63/0485—Networking architectures for enhanced packet encryption processing, e.g. offloading of IPsec packet processing or efficient security association look-up
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L63/00—Network architectures or network communication protocols for network security
- H04L63/16—Implementing security features at a particular protocol layer
- H04L63/164—Implementing security features at a particular protocol layer at the network layer
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L63/00—Network architectures or network communication protocols for network security
- H04L63/16—Implementing security features at a particular protocol layer
- H04L63/166—Implementing security features at a particular protocol layer at the transport layer
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L63/00—Network architectures or network communication protocols for network security
- H04L63/16—Implementing security features at a particular protocol layer
- H04L63/168—Implementing security features at a particular protocol layer above the transport layer
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L63/00—Network architectures or network communication protocols for network security
- H04L63/18—Network architectures or network communication protocols for network security using different networks or channels, e.g. using out of band channels
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L69/00—Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
- H04L69/18—Multiprotocol handlers, e.g. single devices capable of handling multiple protocols
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L69/00—Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
- H04L69/30—Definitions, standards or architectural aspects of layered protocol stacks
- H04L69/32—Architecture of open systems interconnection [OSI] 7-layer type protocol stacks, e.g. the interfaces between the data link level and the physical level
- H04L69/321—Interlayer communication protocols or service data unit [SDU] definitions; Interfaces between layers
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04W—WIRELESS COMMUNICATION NETWORKS
- H04W12/00—Security arrangements; Authentication; Protecting privacy or anonymity
- H04W12/10—Integrity
Landscapes
- Engineering & Computer Science (AREA)
- Computer Security & Cryptography (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Computer Hardware Design (AREA)
- General Engineering & Computer Science (AREA)
- Computing Systems (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- General Physics & Mathematics (AREA)
- Physics & Mathematics (AREA)
- Multimedia (AREA)
- Technology Law (AREA)
- General Health & Medical Sciences (AREA)
- Bioethics (AREA)
- Health & Medical Sciences (AREA)
- Computer And Data Communications (AREA)
- Communication Control (AREA)
Abstract
TLS/SSLプロトコルなどのトランスポート層セキュリティプロトコル、TCP/IPプロトコルスタックなどのトランスポート層プロトコルスタック、およびインターネットなどのネットワークへのアクセスに必要なネットワーク制御を拡張デバイスにオフロードすることにより、ホストプロセッサの処理負荷が大幅に軽減される。
Description
本出願は、インターネットに関し、特に、アルゴリズムをオフロードするための方法、デバイス、およびシステムに関する。
関連出願の相互参照
本出願は、参照によりその全体が本明細書に組み込まれている、2017年10月25日に出願された中国特許出願第201711015191.9号の優先権を主張するものである。
本出願は、参照によりその全体が本明細書に組み込まれている、2017年10月25日に出願された中国特許出願第201711015191.9号の優先権を主張するものである。
インターネット技術の発達により、ユーザは、種々の異なる情報にアクセスし、オンラインショッピング、支払い、送金などの様々なオンラインサービスを受けることができる。HTTP(ハイパーテキスト転送プロトコル)は、現在、インターネット上で最も広く使用されているアプリケーションレイヤプロトコルの1つである。HTTPはトランスポートレイヤのTCPプロトコルに基づいて通信し、クライアントとサーバとの間でハイパーテキストファイルを伝送する。
しかしながら、インターネットはオープンな環境であるため、またHTTPプロトコルがウェブブラウザとネットワークサーバとの間で情報を転送するために使用される場合、コンテンツはクリアテキストで送信され、データ暗号化は何ら提供されない。結果として、攻撃者がウェブブラウザとネットワークサーバとの間の送信メッセージを傍受した場合、攻撃者によって情報が直接読み取られ得る。したがって、HTTPプロトコルは、銀行カード番号やパスワードのような機密情報を伝送するのに適していない。
SSL(Secure Sockets Layer:セキュアソケットレイヤ)およびその後継のトランスポートレイヤセキュリティ(Transport Layer Security:TLS)は、ネットワーク通信のためのセキュリティおよびデータ完全性を提供するタイプのセキュアなトランスポートプロトコルである。SSLプロトコルをHTTPに追加すると(すなわち、HTTPS(Hyper Text Transfer Protocol over Secure Socket Layer:セキュアソケットレイヤ上のハイパーテキスト転送プロトコル))、データのセキュアな送信を実現することができる。したがって、HTTPSは、セキュリティの目的を有するHTTPチャネルである。それはウェブブラウザとネットワークサーバとの間でデータの暗号化送信およびアイデンティティ認証を行うことができ、トランザクション支払いなどの機密情報の送信に使用され得る。
現在、TLS/SSLは既存のネットワーク通信で最も広く使用されているセキュリティプロトコルレイヤの1つであり、多くのインターネット企業がウェブ全体のHTTPSのゴールを既に提案している。しかし、TLS/SSLプロトコルの採用の大きなコストは、ハンドシェイクネゴシエーション(暗号化/復号/圧縮/解凍ステップなど)の高い計算密度である。サーバホストは処理のために多くの時間がかかる(これは、HTTPSがHTTPよりも大幅に遅い主な理由でもある)。
ハードウェアアクセラレーションおよびオフロード(本明細書におけるオフロードは、サーバのCPUで実行されたであろういくつかのアルゴリズムを、チップまたは他のPCIカードを追加することによって処理または実行し、それにより、サーバCPUリソースの消費を低減することを指す)によって、計算集約的な暗号化および復号アルゴリズムなどの動作が、サーバホストのCPUとは別に行われることが可能であり、それにより、CPUがプロトコルスタックおよびオペレーティングシステムレベルでより多くの要求に対処することができ、したがって、遅延を減らしパフォーマンスを改善する目的を実現することができる。しかしながら、従来のTLS/SSLオフロード方法では、部分的なオフロード手法が採用されている。すなわち、ネットワークプロトコルのプロセス全体が依然としてホスト上で実行されていて、ステップの一部のみがオフロードされる。
従来技術では、特別なTTL/SSLハードウェアアクセラレーションカードが、サーバからSSLオフロードを実行するために使用される。TTL/SSLハードウェアアクセラレーションカードは、TTL/SSL暗号化および復号アルゴリズムなどの動作を行い、それにより、サーバ上でTTL/SSL暗号化および復号アルゴリズムを実行することによって引き起こされる計算圧力を低減する。
図1は、従来のオフロードサーバ100を示すブロック図である。図1に示されるように、オフロードサーバ100は、ホスト110、ネットワークカード120、およびTLS/SSLアクセラレータカード130を含み、これらは、外部バス140およびバスプロトコルによって相互接続される。ホスト110は、ウェブサービス、セキュリティレイヤプロトコルスタック(TLS/SSL)ソフトウェア、TCP/IPプロトコルスタック、および拡張カードドライバなどを提供するためのアプリケーションを実行することができる。
アプリケーションは、TLS/SSLアクセラレータカードのドライバを介してトランスポートレイヤセキュリティフレームワーク(TLS/SSL)のインターフェースを呼び出し、ホストのカーネルを介してTCP/IPプロトコルスタック処理を達成し、ネットワークカードのドライバを介して基礎となるネットワークメッセージを送受信することによって、セキュリティプロトコルアルゴリズムのハードウェアオフロードを達成する。
ネットワークカードは、ホストインターフェースを介して制御側の構成を受信し、コントローラを介してデータ側の処理および転送を達成する。TLS/SSLアクセラレータカード上には、通常、アルゴリズムをオフロードおよび復号するために使用される並列処理のための複数のハードウェアアクセラレーションユニットがある。すべてのアルゴリズムアクセラレーションカーネルは、信頼できるアービトレーションユニットを介してタスクディスパッチおよびデータドメイン分離を行う。
図2(a)および図2(b)は、従来のオフロードサーバを動作させる方法を示す図を示す。図2(a)は、通信を送信する方法200を示し、図2(b)は、通信を受信する方法260を示す。図2(a)に示されるように、方法200は210で始まり、ここで、ホスト上で実行されているアプリケーションが、インターネットのようなネットワークを介してリモートホストに送信されるコマンドを生成する。アプリケーションは、TCP/IPまたはUDPなどの使用されるトランスポートプロトコルに従って、コマンドをフォーマットする。たとえば、TCP/IPプロトコルは、バイトのストリームとしてコマンドを受信することが期待される。
これに続いて、方法200は212に進み、ここで、ホストは、コマンドがTLS/SSL暗号化などの暗号化を必要とするかどうかを決定する。暗号化が必要とされない場合、方法200は214に進み、ここで、ホストは、トランスポートレイヤプロトコルスタックを介してコマンドを処理する。TCP/IPプロトコルが使用される場合、TCP/IPプロトコルスタックのレイヤは、アプリケーションレイヤから受信されたバイトのストリームをセグメントに分割し、ヘッダをセグメントに添付する。ヘッダは、送信者および受信者情報、セグメント順序情報、ならびにエラー訂正情報を含むことができる。
セグメントがTCP/IPプロトコルスタックを通って移動するときに、プロトコルスタックのレイヤが、カプセル化として知られるプロセスでフィールドをヘッダに追加する。ホスト上で実行されているTCP/IPプロトコルスタックは、IPデータグラムにセグメントをフォーマットする。IPデータグラムは、データグラム長およびシーケンス順序と共にリモートホストのIPアドレスを含むヘッダを有する。
次に、方法200は216に進み、ここで、ホストは、外部バスを介してIPデータグラムをネットワークインターフェースカード(NIC)に送信する。NICは、ヘッダおよびフッタをIPデータグラムに追加してフレームを形成する。フレームヘッダは、巡回冗長検査(CRC)などのエラー訂正情報を含む。IPアドレスはハードウェアアドレスに変換され、フレームはネットワーク媒体を介して伝送される電気/光信号に変換される。
TLS/SSL暗号化などの暗号化が必要とされる場合、ホストは、TLS/SSLプロトコルスタックを処理し、外部バスを介してアルゴリズム計算タスクをTLS/SSLアクセラレータカードにオフロードする。これに続いて、方法200は212から220に進み、ここで、TLS/SSLアクセラレータカードがアービトレーションを行い、次いで222に進み、暗号化のための計算タスクを行う。得られた結果は、バスインターフェースを介してホストに返され、ホストは、TCP/IPプロトコルスタックを処理して、214でIPデータグラムを形成する。
したがって、ワークフローは、ホストがタスクを開始することから始まる。タスクは、アプリケーションからホストのTLS/SSLプロトコルスタックへ、次いでTLS/SSLアクセラレータカードドライバへと、バスプロトコルインターフェースを介してアクセラレータカードハードウェアに対し構成される。次に、ワークフローは、アクセラレーションカード上でアービトレーションおよび計算タスクを行う。得られた結果は、バスインターフェースを介してホストに返される。ホストは、これらのステップを複数回呼び出すことができる。これに続いて、ホストは、暗号化されたデータメッセージをTCP/IPプロトコルによってカプセル化し、バスプロトコルインターフェースを介してそれをネットワークカードハードウェアに対し構成する。この後、制御側の設定に従って、ネットワークカードは、データ側のメッセージに対して、対応する発信動作処理を行う。
図2(b)に示されるように、方法260は262で始まり、ここで、NICが、リモートホストからネットワーク媒体を介してフレームを受信し、フレームをIPデータグラムに変換し、外部バスを介してIPデータグラムをホストに送信する。次に、方法260は264に進み、ここで、ホストが、TCP/IPプロトコルスタックを介してIPデータグラムを処理して、データセグメントを取得する。この後、方法260は266に進み、ここで、ホストは、データセグメントがTLS/SSL復号などの復号を必要とするかどうかを決定する。復号が必要とされない場合、方法260は268に進み、ここで、ホストは、データセグメントをアプリケーションに送信する。
復号が必要とされる場合、ホストは、TLS/SSLプロトコルスタックを処理し、外部バスを介してアルゴリズム計算タスクをTLS/SSLアクセラレータカードにオフロードする。これに続いて、方法260は266から270に進み、ここで、TLS/SSLアクセラレータカードがアービトレーションを行い、次いで272に進み、ここで、アクセラレータカードは暗号化のための計算タスクを行う。アクセラレータカードは、得られた結果をバスインターフェースを介してホストに返し、ホストは、268で、復号されたセグメントをアプリケーションに送信する。
したがって、ワークフローは、ネットワークカードがデータメッセージを受信し、バスプロトコルインターフェースを介してそれをホストに送信することから始まる。次に、ホストは、受信されたデータメッセージをTCP/IPプロトコルスタックによってパースし、処理されたデータは、それが暗号化されていない場合、アプリケーションに直接送信される。データが暗号化されている場合、ホストは、それをパースするためにTLS/SSLプロトコルレイヤに送信し、バスプロトコルインターフェースを介してTLS/SSLアクセラレータカードドライバによってそれをアクセラレータカードハードウェアに対し構成する。ホストは、上記のステップを複数回呼び出してよい。この後、復号されたプレーンテキストデータはアプリケーションにアップロードされる。
上記のステップから理解され得るように、従来のTLS/SSLオフロード方法は、ホスト上のいくつかの主要な暗号化および復号アルゴリズムステップの計算圧力を低減するが、いくらかのリソース消費および遅延コストをプロセス全体に導入する。これは、第1に、従来のTLS/SSLオフロード方法では、すべてのトラフィックがホストへ行くためである。結果として、ホストのCPUは、リソースのかなりの部分をTCP/IPプロトコルスタックのステップおよびTLS/SSLのプロトコルレイヤ解決に費やすことになる。
第2に、送信/受信の各データパスにおいて、複数のドライバインターフェース呼び出し、バスプロトコルインターフェース通信、および対応するカーネルモード/クライアントモード切り替えが、ホストと2つの拡張カードとの間に含まれる。加えて、従来の「ホスト+ネットワークカード+アクセラレーションカード」構造では、それらの間の相互接続は、システム共通バスを介しており、各データパケットは、バスデータ交換の複数のインスタンスに対応し、これは、バストラフィック負担を複数回大幅に増加させることに相当する。
上記から理解され得るように、プロセス全体について新しいリソース消費および遅延がそれに導入される。たとえば、AESがストリームデータを暗号化するとき、SSLオフロードを頻繁に呼び出すコストが、サーバホストが暗号化および復号アルゴリズムを直接計算するコストよりも高くなり得る。
したがって、この部分的なオフロードおよび最適化は十分に完全ではない。それは、ホスト上のいくつかの主な暗号化および復号アルゴリズムステップの計算圧力を軽減することができるが、それはまた、プロセス全体に対してリソース消費および遅延コストを導入する。そのような部分的なオフロード手法に導入されるトレードオフコストは、いくつかのシナリオではオフロード手法それ自体によってもたらされる利益を相殺することさえある(たとえば、AESがストリーミングデータを暗号化するときにオフロードを頻繁に呼び出すコストは、ホストによって直接計算するコストよりもさらに高くなることがある)。
従来技術により採用されたローカルハードウェアオフロード手法を使用する技術的解決策は、サーバホスト上のリソース占有が依然として比較的大きくなるという技術的問題をもたらしており、それに対する効果的な解決策はまだ提案されていない。
本発明は、ホストプロセッサの負荷を低減する拡張デバイスを提供する。拡張デバイスは、メモリ、ネットワークコントローラ、およびメモリとネットワークコントローラとに結合された拡張プロセッサを含む。拡張プロセッサは外部バスを介してホストプロセッサ上で実行されているアプリケーションからトランスポートプロトコルに従ってフォーマットされたアプリケーション通信を受信し、受信されたデータを形成するためのものである。拡張プロセッサはまた、受信されたデータが暗号化されるべきであるかどうかを判断し、受信されたデータが暗号化されるべきである場合はセキュリティプロトコルを処理する。セキュリティプロトコルは、受信されたデータから暗号化されたデータを生成する。加えて、拡張プロセッサはトランスポートプロトコルのトランスポート層プロトコルスタックを処理して、受信されたデータが暗号化されるべきでない場合は受信されたデータから、受信されたデータが暗号化されるべきである場合は暗号化されたデータから、発信IP通信を生成する。さらに、拡張プロセッサは、発信IP通信を内部バスを介してネットワークコントローラに送信する。ネットワークコントローラは、発信IP通信をフォーマットしてフォーマットされたIP通信を形成し、フォーマットされたIP通信をネットワークに送信する。
本発明はまた、拡張デバイスを操作する方法を提供する。この方法は、外部バスを介してホストプロセッサ上で実行されているアプリケーションからトランスポートプロトコルに従ってフォーマットされたアプリケーション通信を受信して、受信されたデータを形成することを含む。この方法はまた、受信されたデータが暗号化されるべきであるかどうかを判断すること、および受信されたデータが暗号化されるべきである場合にセキュリティプロトコルを処理することを含む。セキュリティプロトコルは受信されたデータから暗号化されたデータを生成する。加えて、この方法は、トランスポートプロトコルのトランスポート層プロトコルスタックを処理して、受信されたデータが暗号化されるべきでない場合は受信されたデータから、受信されたデータが暗号化されるべきである場合は暗号化されたデータから、発信IP通信を生成する。この方法はまた、内部バスを介して発信IP通信をネットワークコントローラに送信することを含む。さらに、この方法は、発信IP通信をフォーマットしてフォーマットされたIP通信を形成すること、およびフォーマットされたIP通信をネットワーク上に送信することを含む。
本発明はさらに、プロセッサによって実行されると、プロセッサに拡張デバイスを動作させる方法を実行させるプログラム命令が埋め込まれた、非一時的なコンピュータ可読記憶媒体を含む。この方法は、外部バスを介してホストプロセッサ上で実行されているアプリケーションからトランスポートプロトコルに従ってフォーマットされたアプリケーション通信を受信して、受信されたデータを形成することを含む。この方法はまた、受信されたデータが暗号化されるべきであるかどうかを判断すること、および受信されたデータが暗号化されるべきである場合にセキュリティプロトコルを処理することを含む。セキュリティプロトコルは受信されたデータから暗号化されたデータを生成する。加えて、この方法は、トランスポートプロトコルのトランスポート層プロトコルスタックを処理して、受信されたデータが暗号化されるべきでない場合は受信されたデータから、受信されたデータが暗号化されるべきである場合は暗号化されたデータから発信IP通信を生成することを含む。この方法はまた、内部バスを介して発信IP通信をネットワークコントローラに送信することを含む。さらに、この方法は、発信IP通信をフォーマットしてフォーマットされたIP通信を形成すること、およびフォーマットされたIP通信をネットワーク上に送信することを含む。
本発明の特徴および利点のより良い理解は、本発明の原理が利用される例示的な実施形態を説明する以下の詳細な説明および添付の図面を参照することによって得られるであろう。
本明細書において説明される図面は、本出願のさらなる理解のために提供され、本出願の一部を形成する。本出願の例示的な実施形態およびその説明は、本出願を説明するためのものであり、本出願の範囲に対して過度の限定を構成しない。
本出願の解決策を当業者がより良く理解できるように、本出願の実施形態の添付図面を参照して、本出願の実施形態における技術的解決策が明確かつ完全な方法で詳細にさらに説明される。説明される実施形態は、本発明の実施形態のすべてではなく本出願の実施形態のほんの一部であることは明らかである。本発明の範囲から逸脱することなく本出願の実施形態に基づいて当業者によって得られる他のすべての実施形態が、本出願の範囲内に入るものとする。
本出願の明細書および特許請求の範囲ならびに上記に提供された図面における「第1」および「第2」などの用語は、同様の対象を区別するために使用され、必ずしも特定の順番または順序を説明するために使用されない。そのように使用されるデータは、本明細書に説明される本出願の実施形態が、本明細書に示されまたは説明される以外の順序で実装され得るように、適宜に交換され得る。
さらに、「備える」および「備えている」という用語ならびにそれらの任意の代替形態は、非排他的な包含を定義することを意図されている。たとえば、一連のステップまたはユニットを備えるプロセス、方法、システム、製品、またはデバイスは、必ずしもそれらのステップまたはユニットに限定されず、本明細書に明示的に挙げられていない、またはそのようなプロセス、方法、システム、製品、またはデバイスに固有でない他のステップまたはユニットを含み得る。
まず、本出願の実施形態を説明する際に出現する名詞または用語のいくつかは、以下のように定義される
SSL:(セキュアソケットレイヤ)は、信頼できるコネクション型ネットワークレイヤプロトコルとアプリケーションレイヤプロトコルとの間のプロトコルのレイヤである。SSLは、相互認証およびデジタル署名の採用によるデータ完全性、ならびに暗号化を介するデータプライバシを保証し、クライアントとサーバとの間のセキュアな通信を実現する。プロトコルは、2つのレイヤ、すなわち、SSLレコードプロトコルとSSLハンドシェイクプロトコルからなる。
TLS:(トランスポートレイヤセキュリティ)は、2つの通信アプリケーションの間の機密性およびデータ完全性を提供するために使用される。このプロトコルは、2つのレイヤ、すなわち、TLSレコードプロトコルとTLSハンドシェイクプロトコルからなる。
HTTP:(ハイパーテキスト転送プロトコル)は、コンテンツをクリアテキストで送信するために、ハイパーテキストをネットワークサーバからローカルウェブブラウザに伝送するためのトランスポートプロトコルである。それは、データ暗号化の方法を何ら提供せず、銀行カード番号、パスワード、および他の情報などの機密情報を伝送するのに適していない。
HTTPS:(セキュアソケットレイヤ上のハイパーテキスト転送プロトコル)は、セキュリティ目的のHTTPチャネルであり、すなわち、SSLプロトコルがHTTPに追加される。データ暗号化送信およびアイデンティティ認証が、ウェブブラウザおよびネットワークサーバにおいて行われる。それは、トランザクション支払いなどの機密情報の送信のために使用され得る。
NIC:(ネットワークインターフェースカード、ネットワークカード、NICとも呼ばれる)は、コンピュータをネットワークに接続するハードウェアデバイスである。ツイストペアケーブル接続、同軸ケーブル接続、または光ファイバ接続に関わらず、データ通信はネットワークカードを介して実行されなければならない。スマートNICは、インテリジェントネットワークカードを指す。
TOE:(TCPオフロードエンジン)は、ネットワークカード上の専用プロセッサを使用して、すなわち、TOEチップを備えた専用ネットワークカードを使用することによって、データパケット処理タスクの一部またはすべてを行う。TCPを含む4つのレイヤの処理要求が、ホストプロセッサからNICに転送され、それにより、ネットワーク応答を高速化しながらサーバパフォーマンスを改善する。
MAC:(メディアアクセス制御)は、データリンクレイヤのサブレイヤである。データリンクレイヤは、2つのサブレイヤ、すなわち、LLC(論理リンク制御)とMACに分割される。上位のLLCサブレイヤは、データリンクレイヤのフロー制御やエラー回復などのハードウェア非依存機能を実装するために使用され、下位のMACサブレイヤは、LLCと物理レイヤとの間のインターフェースを提供する。
PHY:(物理レイヤ)は、OSIの最下レイヤである。ネットワークカードは、OSIの物理レイヤ(第1のレイヤ)およびデータリンクレイヤ(第2のレイヤ)において機能し、データ送信および受信に必要とされる、電気信号および光信号、回線状態、クロック基準、データコーディング、ならびに回路を定義し、データリンクレイヤデバイスに標準インターフェースを提供する。データリンクレイヤは、アドレッシング機構、データフレーム構築、データエラー検査、伝送制御などの機能を提供し、ネットワークレイヤに標準データインターフェースを提供する。
RSA:(RSAアルゴリズム)は現在、最も有力であり、最も一般的に使用される公開鍵暗号化アルゴリズムである。それは非対称暗号アルゴリズムであり、鍵のペアを必要とする。暗号化で鍵の一方が使用されている場合、復号で他方の鍵が必要とされる。
AES:(高度暗号化標準)は、対称鍵暗号化におけるアルゴリズムの1つである。
オフロード:本出願の実施形態で言及されるオフロードの用語は、サーバCPUでサポートする必要があるプロトコルまたは暗号化アルゴリズムが、システムに組み込まれた組み込みチップまたはPCIカードによって引き受けられ、それにより、サーバのCPUのリソース占有を低減し、より良いシステムパフォーマンスを提供する、プロセスを指す。たとえば、TTL/SSLオフロードは、TTL/SSLプロトコルに関係付けられた暗号化および復号アルゴリズムをサーバCPU上で実行する代わりに、CPUとは独立したハードウェアアクセラレーションカード(または拡張カード)上でそれが実行されることを指す。
さらに、本出願の実施形態によって提供されるアルゴリズムをオフロードするためのシステムは、サーバ上のプロトコルの関係付けられた動作(たとえば、TTL/SSLプロトコル、TCP/IPプロトコルスタック処理および対応するオフロード制御など)、TTL/SSL暗号化および復号アルゴリズム、ならびに制御およびデータパスに関係付けられた基本的ネットワークカード機能を、サーバCPUから独立した拡張デバイスによって実行し、それにより、サーバの大域的オフロードを実現する。
本出願の実施形態によれば、オフロード方法の例が提供される。この例は、HTTPSプロトコルに基づくウェブブラウザとウェブサイトサーバとの間のデータ送信のプロセスにおいてウェブサイトサーバのホストを高速化するために使用され得ることに留意されたい。
現在、データ送信のセキュリティを改善するために、ほとんどのアプリケーションまたはサービスは、ウェブブラウザとウェブサイトサーバとの間でデータを転送するためにHTTPSを使用している。HTTPSは、HTTPプロトコルとTTL/SSLプロトコルの組み合わせである。TTL/SSLは、暗号化プロトコルのタイプであり、実際のアプリケーションで意義を有しない。ウェブサイトサーバがHTTPプロトコル上で実行されると、TTL/SSL暗号化および復号は、サーバホスト上で比較的大きなCPUリソースを消費し、サーバのパフォーマンスを低減する。結果として、ウェブブラウザに対するウェブサイトサーバの応答速度が遅くなり、それが、ユーザのオンラインエクスペリエンスに深刻な影響を与える。
図3は、本発明によるオフロードサーバ300の例を示すブロック図を示す。以下により詳細に説明されるように、HTTPSアプリケーションにおけるSSL暗号化/復号アルゴリズムをオフロードするのに加えて、TCP/IPプロトコルスタックおよびTTL/SSLプロトコルレイヤもアクセラレーションカードにオフロードされる。加えて、ネットワーク処理もアクセラレーションカードによって提供され得る。結果として、セキュリティプロトコルアルゴリズム、ハンドシェイクプロセス、および下位のネットワークプロトコルスタック処理の完全なハードウェアオフロードが、TTL/SSLハードウェアアクセラレーションカード上で達成され、したがって、サーバホストのCPUリソースの占有を低減することができる。
図3に示されるように、オフロードサーバ300は、ホスト310および拡張デバイス320を含む。ホスト310は、HTTPSプロトコルに基づくデータ送信のためのサーバホストとすることができ、サーバホストは、ウェブサービスベースのアプリケーションプログラムおよび拡張デバイス(拡張カード)ドライバなどを提供するための任意のHTTPSアプリケーションベースのウェブサイトまたはサービスサーバを含むが、これに限定されない、
拡張デバイス320は、外部バス330を介してホスト310に結合される。拡張デバイス320は、関係付けられたプロトコルをサーバからオフロードするために使用され得る。たとえば、(TTL/SSL暗号化および復号アルゴリズムを含む)TTL/SSLプロトコルスタック処理、TCP/IPプロトコルスタック処理、ネットワーク処理(HTTPプロトコルに基づくホスト310によるデータ送信プロセス中の基本的ネットワークカード機能に関係付けられた制御およびデータパスの処理)、およびその対応するオフロード制御が、ホスト310のCPUリソース消費を低減するようにオフロードされ得る。HTTPSプロトコルに基づいてサーバホストとウェブブラウザとの間でデータ送信が行われるときに、データ送信および受信が含まれる。
図4は、本発明によるオフロードサーバ300のさらなる例を示すブロック図を示す。図3に示されるように、ホスト310は、主にウェブサービスを提供するためのアプリケーションおよび拡張カードドライバなどを実行する。拡張デバイス320(「拡張カード」、「アクセラレーションネットワークカード」などとも呼ばれる)は、関係付けられたプロトコル(TCP/IPプロトコルスタック、TLS/SSLプロトコルレイヤおよび対応するオフロード制御など)オフロードモジュール、TLS/SSLアルゴリズムハードウェアアクセラレーションモジュール、基本的ネットワークカード機能に関係付けられた制御およびデータパスモジュールなどを含む。すなわち、セキュリティレイヤプロトコルスタックソフトウェアおよびTCP/IPプロトコルスタックは、拡張デバイス320(アクセラレーションネットワークカード、拡張カードとも呼ばれる)にオフロードされる。ホスト310および拡張カード320は、外部バス330およびホストバスプロトコルによって相互接続される。
拡張デバイス320は、ホストインターフェースを介してホスト310のアプリケーションと通信する(完全オフロードモードでは、インターフェース通信におけるデータはプレーンテキストである)。アプリケーションは、トランスポートレイヤセキュリティフレームワーク(TLS/SSL)のインターフェースを呼び出すことによって、対応するTLS/SSL処理、TCP/IPカプセル化、および他のネットワーク通信処理におけるアプリケーションデータの処理に必要とされるデータパスを、拡張デバイス320(TLS/SSLアクセラレーションネットワークカード)に完全にオフロードする。拡張デバイス320は、セキュリティプロトコルアルゴリズム、ハンドシェイクプロセス、および下位のネットワークプロトコルスタック処理の完全なハードウェアオフロードを達成する。
拡張デバイス320(すなわち、拡張カード)は一般に、暗号化および復号アルゴリズムをオフロードするために並列に処理される複数のハードウェアアクセラレーションユニットを有する。これらのアルゴリズムアクセラレーションカーネルのすべては、信頼できるアービトレーションユニットを介してタスクディスパッチおよびデータドメイン分離を有することができる。
本発明の任意選択の実装解決策として、サーバホストがデータパケットをウェブブラウザに送信したとき、ホスト310は、データパケットを送信するタスクを開始し、ホスト310のアプリケーションは、拡張デバイス320のトランスポートレイヤセキュリティプロトコルのインターフェースを呼び出す。拡張デバイス320は、ローカルトランスポートレイヤセキュリティプロトコル(TLS/SSL)を開始して、ホストにより呼び出されたインターフェースに従ってタスクを処理するように構成される。トランスポートレイヤセキュリティプロトコル(TLS/SSL)がタスクを処理した後、拡張デバイス320はネットワークプロトコル処理ユニットを使用して、処理結果をデータメッセージとしてカプセル化し、拡張デバイス320に配備されたネットワークコントローラが、カプセル化されたデータメッセージを送出する。
任意選択で、拡張デバイス320が、タスクを処理するためにローカルトランスポートレイヤセキュリティプロトコル(TLS/SSL)を開始したとき、それは、タスクを処理するためにトランスポートレイヤセキュリティプロトコル(TLS/SSL)が使用される必要があるかどうかを最初に決定してよい。タスクを処理するのにトランスポートレイヤセキュリティプロトコル(TLS/SSL)を使用する必要がある場合、タスクはアービトレーションされる。これに続いて、タスクは処理のためにアルゴリズムアクセラレーションユニットに送信されて、タスクの処理結果が取得される。
拡張デバイス320が、タスクを処理のためにアルゴリズムアクセラレーションユニットに送信した後、それはタスクの処理結果を取得する。拡張デバイス320はさらに、ネットワークプロトコル処理ユニットを使用することによってタスクの処理結果をカプセル化し、カプセル化結果をネットワークコントローラに対し構成する。次に、ネットワークコントローラが、カプセル化されたデータメッセージを送出する。
上記の説明から理解され得るように、データ送信を含むタスクをホストが開始した後、拡張デバイス320は、トランスポートレイヤセキュリティプロトコル(たとえばTLS/SSL)アルゴリズム、ネットワークプロトコル(たとえばTCP/IP)カプセル化、および下位レイヤネットワークプロトコルスタックの機能を達成する。
本発明の任意選択の実施形態として、拡張デバイス320上で、ソフトウェアスタックは、トランスポートレイヤセキュリティプロトコルのサービスを実行するために使用され得る。トランスポートレイヤセキュリティプロトコルのエンジンユニットは、暗号化および復号アルゴリズムのオフロードを行って、TCPオフロードエンジン(TOE)を介してネットワークプロトコル(TCP/IP)のハードウェアアクセラレーション処理を行うために使用され得る。
上記の実施形態に基づいて、本発明の任意選択の実施形態として、拡張装置320がネットワーク(TCP/IP)プロトコル処理ユニットを使用することによって処理結果をデータメッセージとしてカプセル化する前に、それは、TCPオフロードエンジン(TOE)が拡張デバイス320内に存在するかどうかを最初に決定してよい。TCPオフロードエンジン(TOE)が拡張デバイス320に存在する場合、ネットワークプロトコル(TCP/IP)のハードウェアアクセラレーション処理がTCPオフロードエンジン(TOE)を使用して行われる。
任意選択で、TCPオフロードエンジン(TOE)が拡張デバイス320に存在しない場合、拡張デバイス320のリソース(たとえばCPUリソース)の使用が予め決定された閾値を超えているかどうかが決定される。超えている場合、ロードバランシングスケジューリングモジュール(「トラフィックスケジューリングモジュール」とも呼ばれる)を使用して、トラフィックの一部を処理のためにホストへバイパスする。
本発明の別の任意選択の実施形態として、サーバホスト310がウェブブラウザからデータパケットを受信すると、拡張デバイス320がデータメッセージを受信し、ローカルネットワークコントローラを使用してデータメッセージをネットワークプロトコル処理ユニット(たとえばTCP/IP処理ユニット)に伝送して、パースを行う。次いで、それはパース結果を取得し、ローカルトランスポートレイヤセキュリティプロトコル(TLS/SSL)を使用してパース結果を処理して、処理結果を取得する。次に、処理結果はホストにアップロードされる。
任意選択の実施形態として、拡張デバイス320は、TCPオフロードエンジン(TOE)を介してネットワークプロトコル(TCP/IP)のハードウェアアクセラレーション処理を行うことができる。拡張デバイス320がデータメッセージを受信したとき、それは、TCPオフロードエンジン(TOE)が拡張デバイス320内に存在するかどうかを最初に決定することができる。TCPオフロードエンジン(TOE)が拡張デバイス320に存在する場合、それは、TCPオフロードエンジン(TOE)を使用して、ネットワークプロトコル処理ユニット(たとえばTCP/IP処理ユニット)のハードウェアアクセラレーション処理を行い、プロセッサのメモリ領域にデータメッセージを記憶する。
任意選択で、データメッセージがプロセッサのメモリ領域に記憶された後、プロセッサは、データメッセージに対してプロトコルスタック処理を行う。TLSオフロードが必要な場合、それは復号処理のためにセキュアソケットレイヤ(SSL)に送信され、トランスポートレイヤセキュリティプロトコルがハードウェアアクセラレーションを達成するために呼び出される。TLSオフロードが必要でない場合、復号結果は、復号された結果のタイプおよび宛先アドレスに応じて、プロセッサ上のアプリケーションにアップロードされるか、またはホストバスを介してホストにアップロードされる。
任意選択で、拡張デバイス320がデータメッセージを受信し、ローカルネットワークコントローラを使用して、データメッセージをパースのためにネットワーク(TCP/IP)プロトコル処理ユニットに伝送すると、パース結果が取得される。その後、パース結果におけるデータが暗号化されているかどうかが決定され得る。パース結果におけるデータが暗号化されていない場合、拡張デバイス320は、パース結果をホスト310に直接アップロードする。パース結果におけるデータが暗号化されている場合、ローカルトランスポートレイヤセキュリティプロトコル(TLS/SSL)は、パース結果を処理するためにさらに使用される。
特に、解析結果がローカルトランスポートレイヤセキュリティプロトコル(TLS/SSL)を使用することによって処理されたとき、拡張デバイス320のプロセッサは、解析結果が処理のためにトランスポートレイヤセキュリティプロトコルのセキュアソケットレイヤに送信される必要があるかどうかを最初に決定することができる。解析結果がトランスポートレイヤセキュリティプロトコルのセキュアソケットレイヤに送信される必要がある場合、解析結果はトランスポートレイヤセキュリティプロトコルのセキュアソケットレイヤを使用して処理される。解析結果が処理のためにトランスポートレイヤセキュリティプロトコルのセキュアソケットレイヤに送信される必要がない場合、それはホストにバイパスされて解析結果が処理される。
この場合の第1の任意選択の実施形態として、トランスポートレイヤセキュリティプロトコルのセキュアソケットレイヤを使用して解析結果を処理するプロセスにおいて、TCPオフロードエンジンは、トランスポートレイヤ暗号化デバイスを使用して、そのドライバを呼び出すことによってデータを暗号化および復号する。暗号化および復号結果が予め決定された条件を満たす場合、それはホスト310にアップロードされる。
この場合の第2の実施形態として、トランスポートレイヤセキュリティプロトコルのセキュアソケットレイヤを使用して解析結果を処理するプロセスにおいて、TCPオフロードエンジンは、トランスポートレイヤ暗号化デバイスを使用して、そのドライバを呼び出すことによってデータを復号し、次いで、復号された結果のタイプおよび宛先アドレスに応じて復号結果をプロセッサ上のアプリケーションにアップロードするか、またはホストバスを介してそれをホスト310にアップロードする。
上述された任意選択の実施形態のいずれかに基づいて、拡張デバイス320がローカルトランスポートレイヤセキュリティプロトコル(TLS/SSL)を使用して解析結果を処理するとき、トランスポートレイヤセキュリティプロトコル(TLS/SSL)レイヤは、解析結果を処理して処理結果を取得する。取得された処理結果はさらにアービトレーションされ、暗号化および復号処理のための対応するアルゴリズムアクセラレーションユニットに送信されて、復号結果が取得される。
いくつかのアプリケーションの特定の特別なニーズ(アクセラレーションネットワークカードのファームウェアホットアップグレードなど)のために、ホストのTCP/IPやTLS/SSLなどのプロトコルスタックが処理のために採用されることが可能であり、それは従来のTLS/SSLオフロード解決策の互換バージョンと同等である。ホットアップグレードなどの動作が実行された後も、ホストは完全なオフロード解決策へ切り替わり、負荷を低減し効率を高めることが可能である。
本出願の実施形態によって提供されるTLS/SSL完全オフロード解決策では、拡張カードが、TLS/SSLプロトコルレイヤの下でほとんどすべてのプロセスを達成し、ホストに対する計算圧力を大幅に低減することができる。特定の実装形態では、それは、多くの異なる特定の形態、たとえば、ARMカーネルインテリジェントネットワークカード+TLS/SSLハードウェアアクセラレーションモジュール+TOEなどを有し得る。
本出願のいくつかの実施形態によれば、アルゴリズムをオフロードする別の例も提供され、これは、HTTPSプロトコルに基づいてデータ送信を行うサーバホストがデータをウェブブラウザに送信するプロセスで使用され得る。この例は、オフロードサーバ300および400に関して説明されているようなアルゴリズムをオフロードするためのシステムにおいて使用されてよい。このオフロード方法は、オフロードサーバ300および400に関して説明されているようなシナリオを含むがこれに限定されない場合に使用され得る。添付図面のフローチャートに示されているステップは、コンピュータ実行可能命令のセットなどのコンピュータシステムで実行されてよく、論理順序はフローチャートに示されているが、場合によっては、本明細書に示されまたは説明されているステップは、本明細書に示されているステップと異なる順序で行われてよいことに留意されたい。
HTTPSプロトコルに基づくサーバホストの現在利用可能なハードウェアオフロードアクセラレーション解決策は、HTTPプロトコルに基づくデータ送信のプロセスにおいてTTL/SSL暗号化および復号アルゴリズムに関係付けられた部分のみをオフロードすることができるという事実のため、サーバホストは、関係付けられたプロトコル(たとえば、TTL/SSLプロトコル、TCP/IPプロトコルスタック処理および対応するオフロード制御)、TTL/SSL暗号化および復号アルゴリズム、ならびに基本的ネットワークカード機能に関係付けられた制御およびデータパスなどのために、依然として大量のCPUリソースを消費する必要がある。
図5(a)〜図5(d)は、本発明によるオフロード方法の例を示すフローチャートを示す。図5(a)は、オフロード方法500の例を示すフローチャートを示す。図5(b)は、代替例のオフロード方法520を示すフローチャートを示す。図5(c)は、本発明によるステップ510を実装する方法530の例を示すフローチャートを示す。図5(d)は、本発明によるステップ512を実装する方法540の例を示すフローチャートを示す。
図5(a)に示されるように、方法500は510で始まり、ここで、拡張デバイスは、ローカルトランスポートレイヤセキュリティプロトコルを開始して、ホストにより呼び出されたインターフェースに従ってタスクを処理する。本発明の任意選択の実施形態として、ホストは、HTTPSプロトコルに基づくデータ送信のためのサーバホストとすることができ、サーバホストは、任意のHTTPSアプリケーションベースのウェブサイトまたはサービスサーバを含むが、これに限定されない、
上記された拡張デバイスは、TLS/SSLプロトコル処理モジュールおよびTCP/IPプロトコルレイヤ処理モジュールと一体化された拡張カードまたはハードウェアアクセラレーションネットワークカードとすることができ、これは、ホスト上のアプリケーションデータについてTLS/SSL処理およびTCP/IPカプセル化などを行うために使用され得る。ホストはバスインターフェースを介して拡張デバイスと通信し、したがって、ホストはウェブサービスベースのアプリケーションおよび拡張カードドライバを提供するだけでよい。
ホストと拡張デバイスはバスインターフェースを介して接続されているので、ホストがデータを送信する必要があるとき、データを送信するタスクが確立され得る。さらに、拡張デバイス上の対応するインターフェース(たとえばTLS/SSLインターフェース)がホストによって呼び出されることができるため、拡張デバイスは、ローカルトランスポートレイヤセキュリティプロトコル(TLS/SSL)を開始して現在のタスク(たとえば、TLS/SSL暗号化処理)を取り扱うことができる。
上記の拡張デバイスは、ホストにより呼び出されたインターフェースに従って、対応するプロトコルオフロードプロセスを可能にすることができる。そのような場合、拡張デバイス上のTLS/SSLプロトコルレイヤ(すなわち、トランスポートレイヤセキュリティプロトコルレイヤ)は、サーバホストのプロトコルオフロードプロセスのプロセス制御を行うことができる。たとえば、計算タスクがある場合、アービトレーションが行われることが可能であり、計算結果が返されるまで、計算タスクはさらに、対応するアルゴリズムハードウェアアクセラレーションユニットにディスパッチされ得る。任意選択で、上記のプロセス制御動作は、異なる状況に応じて複数回行われてよい。
図5を再び参照すると、方法500は次に512に進み、ここで、トランスポートレイヤセキュリティプロトコル(TLS/SSL)がタスクを処理した後、拡張デバイスがネットワークプロトコル処理ユニットを使用して処理結果をデータメッセージとしてカプセル化する。
任意選択の実施形態として、上記されたネットワークプロトコル処理ユニットは、ホストがウェブサービスを提供するときにホストによって送信されたデータメッセージに対してTCP/IPカプセル化を行い、受信されたデータメッセージに対してTCP/IPプロトコルスタックパース動作を行うように構成され得る。したがって、サーバホスト(すなわち、上記されたホスト)がデータを送信したとき、拡張デバイス上の対応するインターフェース(たとえば、TLS/SSLインターフェース)が呼び出されるので、拡張デバイスがローカルトランスポートレイヤセキュリティプロトコル(TLS/SSL)を開始して現在のタスクに対してTLS/SSL暗号化処理を行うことができる。さらに、拡張デバイス上の対応するインターフェースが処理結果を取得することができ、処理結果は、データメッセージとしてカプセル化され、バスプロトコルインターフェースを介してネットワークコントローラに対し構成される。
次に、方法500は514に進み、ここで、拡張デバイスに配備されたネットワークコントローラが、カプセル化されたデータメッセージを送出する。514において、拡張デバイス上のTCP/IPプロトコルスタック処理ユニットが暗号化されたデータメッセージをTCP/IPプロトコルによってカプセル化し、それをネットワークコントローラに対し構成すると、ネットワークコントローラは、制御側の設定に従って、対応する発信動作処理をデータ側のデータメッセージに対して行う。
図4のオフロードサーバ400を例にとると、本出願の実施形態により提供される完全なTLS/SSLオフロードのハードウェアアクセラレーション解決策は、主に以下のモジュール、すなわち、ホスト310および拡張デバイス320(すなわち、TLS/SSLオフロードアクセラレーションネットワークカード、また簡潔にするために、「拡張カード」または「アクセラレーションネットワークカード」という用語は、「TLS/SSL完全オフロードハードウェアアクセラレーションネットワークカード」という用語の代わりに本出願の解決策の説明で使用される)を含む。ホスト310および拡張デバイス320は、外部バス330およびホストバスプロトコルによって相互接続される。
この場合、ホスト310は、ウェブサービスのためのアプリケーションおよび拡張カードドライバなどを提供するために使用される。セキュリティレイヤプロトコルスタックソフトウェア、オプションとしてTCP/IPプロトコルスタックは、アクセラレーションネットワークカードにオフロードされることができ、またはホストコンピュータ上で達成されることができる。アプリケーションがトランスポートレイヤセキュリティフレームワーク(TLS/SSL)インターフェースを呼び出した後、後続のデータパスがTLS/SSLアクセラレーションネットワークカードに完全にオフロードされ、それにより、セキュリティプロトコルアルゴリズム、ハンドシェイクプロセス、および下位のネットワークプロトコルスタック処理の完全なハードウェアオフロードを達成する。
いくつかのアプリケーション(アクセラレーションネットワークカードファームウェアホットアップグレードなど)の特定の特別なニーズのために、ホストのTCP/IP、TLS/SSL、および他のプロトコルスタックが処理のために採用されることが可能であり、それは従来のTLS/SSLオフロード解決策の互換バージョンと同等である。ホットアップグレードなどの動作が達成された後も、ホストは完全なオフロード解決策へ切り替わり、負荷を低減し効率を高めることが可能である。
拡張デバイス320(すなわち、TLS/SSL完全オフロードハードウェアアクセラレーションネットワークカード)は、関係付けられたプロトコルオフロード(TCP/IPプロトコルスタック、TLS/SSLプロトコルレイヤおよび対応するオフロード制御)、TLS/SSLアルゴリズムハードウェアアクセラレーションモジュール、基本的ネットワークカード機能に関係付けられた制御およびデータパスモジュールを含む。拡張カードは、ホストインターフェースを介してアプリケーションと通信する(完全オフロードモードでは、インターフェース通信におけるデータはプレーンテキストである)。
アプリケーションデータは、拡張カード上の対応するTLS/SSL処理、TCP/IPカプセル化、および他のネットワーク通信処理にかけられる。一般に、暗号化および復号アルゴリズムをオフロードするために拡張カードにおける並列処理のための複数のハードウェアアクセラレーションユニットがある。これらのアルゴリズムアクセラレーションカーネルのすべては、信頼できるアービトレーションユニットを介してタスクディスパッチおよびデータドメイン分離を行う。
上記から理解され得るように、本出願の上記の実施形態では、サーバホストによりウェブブラウザにデータを送信するプロセスにおいて、拡張デバイスは、ホストにより呼び出されたインターフェースに従ってローカルトランスポートレイヤセキュリティプロトコル(TLS/SSL)を開始して、データを送信するホストに関係付けられたタスクを処理し、トランスポートレイヤセキュリティプロトコル(TLS/SSL)が関係付けられたタスクを処理した後、拡張デバイス内のネットワークプロトコル処理ユニット(たとえばTCP/IP処理ユニット)が、データメッセージとして処理結果のTCP/IPカプセル化を行うためにさらに使用される。
最後に、拡張デバイスに配備されたネットワークコントローラが、カプセル化されたデータメッセージを送出し、その結果、拡張カードがTLS/SSLプロトコルレイヤ下でほとんどすべてのプロセスを達成し、これにより、ホストに対する計算圧力を低減する。したがって、より多くのコンピューティングリソースがアプリケーションに提供され、セキュアなネットワークプロトコルにおける遅延およびスループットの技術的効果が、拡張カード上の並列コンピューティングカーネルによって保証され、それにより、サーバホスト上のリソース使用が依然として比較的大きいという従来技術で採用されていたローカルハードウェアオフロード解決策の技術的問題を解決する。
図5(b)は、本発明による代替例のオフロード方法520を示すフローチャートを示す。方法520は方法500と類似しており、結果として、両方の方法に共通する要素を指定するために同じ参照番号を利用する。図5(b)に示されるように、方法520は方法500と以下の点で異なり、拡張デバイスは、ホストにより呼び出されたインターフェースに従ってローカルトランスポートレイヤセキュリティプロトコルを開始してタスクを処理し、方法520はまず522に進み、ここで、ホストはタスクを開始し、ホストのアプリケーションは、拡張デバイスのトランスポートレイヤセキュリティプロトコルのインターフェースを呼び出し、したがって、拡張デバイスは、トランスポートレイヤセキュリティプロトコルアルゴリズム、ネットワークプロトコルカプセル化、および下位のネットワークプロトコルスタックの機能を実行するようになる。
特に、上記の実施形態では、上記のタスクは、サーバホストがウェブブラウザにデータを送信するタスクであり得る。拡張デバイスは、TLS/SSLプロトコル処理モジュールおよびTCP/IPプロトコルレイヤ処理モジュールと一体化された拡張カードまたはハードウェアアクセラレーションネットワークカードであり、これは、ホスト上のアプリケーションデータのTLS/SSL処理およびTCP/IPカプセル化を行うように構成されているため、サーバホストがタスクを開始すると、ホストアプリケーションは、拡張デバイスのTLS/SSLインターフェースを呼び出し、データを送信するタスクのTLS/SSL暗号化および復号、TCP/IPカプセル化、プロトコルオフロードフローの制御、ならびに拡張デバイスを介するネットワークコントローラなどの下位のネットワークプロトコルスタックに対するカプセル化されたデータメッセージの構成を行うことができる。上記の実施形態によって、TLS/SSLプロトコルレイヤ下のほとんどすべてのプロセスは、サーバホストから独立した拡張カードによって達成され、ホストに対する計算圧力が大幅に低減され得る。
図5(c)は、本発明によるステップ510を実装する方法530の例を示すフローチャートを示す。図5(c)に示されるように、方法530は、532で、タスクを処理するためにトランスポートレイヤセキュリティプロトコルを使用する必要があるかどうかを決定することによって始まる。必要である場合、方法530は534に進み、ここで、タスクはアービトレーションされ、次いで、処理のためにアルゴリズムアクセラレーションユニットに送信されてタスクの処理結果が取得される。
特に、上記の実施形態では、すべてのデータパケットがTLS/SSL暗号化および復号動作を受ける必要があるわけではないので、タスクを処理するためにローカルトランスポートレイヤセキュリティプロトコル(TLS/SSL)が開始されたとき、ホストによって開始されたタスクは、トランスポートレイヤセキュリティプロトコル(TLS/SSL)によってタスクが取り扱われる必要があるかどうかとして最初に決定される。トランスポートレイヤセキュリティプロトコル(TLS/SSL)処理が必要とされる場合、タスクは処理のために拡張デバイス内のアルゴリズムアクセラレーションユニットに送信され、したがってタスクの処理結果が取得される。
任意選択の実施形態では、拡張デバイスがネットワークプロトコル処理ユニットを使用して、処理結果をデータメッセージとしてカプセル化する。ネットワークプロトコル処理ユニットは、処理結果をカプセル化し、カプセル化結果をネットワークコントローラに対し構成する。
任意選択で、拡張デバイス上で、ソフトウェアスタックがトランスポートレイヤセキュリティプロトコルのサービスを実行するために使用されてよく、さらに、トランスポートレイヤセキュリティプロトコルのエンジンユニットが暗号化および復号アルゴリズムのオフロードを行うために使用され、ネットワークプロトコルのハードウェアアクセラレーション処理がTCPオフロードエンジンを介して行われる。
本発明の任意選択の実装様式として上記の実施形態に基づいて、拡張デバイスがネットワークプロトコル処理ユニットを使用して処理結果をデータメッセージとしてカプセル化するステップの前に、上記の方法は以下のステップをさらに含んでよい。
図5(d)は、本発明によるステップ512を実装する方法540の例を示すフローチャートを示す。図5(d)に示されるように、方法540は、542で、拡張デバイス内にTCPオフロードエンジンが存在するかどうかを決定することによって始まる。TCPオフロードエンジンが拡張デバイスに存在する場合、方法540は544に進んで、TCPオフロードエンジンを使用してネットワークプロトコルのハードウェアアクセラレーションプロセスを行う。
任意選択の実施形態では、方法540は546に進み、ここで、TCPオフロードエンジンが拡張デバイスに存在しない場合、方法540は、拡張デバイスのリソース使用が予め決定された閾値を超えているかどうかを決定し、超えている場合、ロードバランシングスケジューリングモジュール(すなわち「トラフィックスケジューリングモジュール」)を使用して、トラフィックの一部を処理のためにホストへバイパスする。
図6(a)および図6(b)は、本発明によるオフロードサーバを動作させる方法の例を示す図である。図6(a)は通信を送信する方法600の例を示し、図6(b)は通信を受信する方法660の例を示す。図6(a)に示されるように、方法600は610で始まり、ここで、ホストプロセッサ上で実行されているアプリケーションが、インターネットのようなネットワークを介してリモートホストに送信される通信を生成する。アプリケーションフォーマットは、TCP/IPまたはUDPなどの使用されるトランスポートプロトコルに従って、通信をフォーマットする。たとえば、TCP/IPプロトコルは、バイトのストリームとして通信を受信することが期待される。
これに続いて、方法600は612に進み、ここで、拡張カード上のプロセッサが、外部バスを介して、ホストプロセッサ上で実行されているアプリケーションから(使用されるトランスポートプロトコルに従ってフォーマットされた)通信を受信して、受信されたデータを形成する。拡張カード上のプロトコルオフロード制御ユニットが、ホストにより呼び出されたインターフェースに従って、対応するプロトコルオフロードプロセスを可能にする。さらに、拡張カード上のTLS/SSLプロトコルレイヤがプロセス制御を開始する。
この後、方法600は614に進み、ここで、拡張カード上のプロセッサは、受信されたデータが暗号化を必要とするかどうかを決定する。TLS/SSL暗号化などの暗号化が必要とされる場合、拡張カード上のプロセッサは、セキュリティプロトコルを処理して、受信されたデータから暗号化されたデータを生成する。ホストは、TLS/SSLプロトコルスタック(アルゴリズム計算タスクを含む)およびTCP/IPプロトコルスタックを、外部バスを介して拡張カードにオフロードする。暗号化が必要とされる場合、方法600は614から616に進み、ここで、拡張カード上のプロセッサはアービトレーションを行い、次いで618に進んで、暗号化のために計算タスクを行う(複数のプロセッサが計算を行うために使用され得る)。
受信されたデータが614で暗号化を必要としない、または暗号化されたデータが618で生成されている場合、方法600は620に進み、ここで、拡張カード上のプロセッサは、トランスポートプロトコルのトランスポートレイヤプロトコルスタックを処理して、受信されたデータが暗号化されるべきでない場合は受信されたデータから、受信されたデータが暗号化されるべきである場合は暗号化されたデータから、発信IP通信を生成する。
TCP/IPプロトコルが使用される場合、発信IP通信はIPデータグラムである。上記されたように、TCP/IPプロトコルが使用される場合、TCP/IPプロトコルスタックのレイヤは、アプリケーションレイヤから受信されたバイトのストリームをセグメントに分割し、ヘッダをセグメントに添付し、セグメントは、IPデータグラムへフォーマットされる。さらに、拡張カード上のプロセッサはTCP/IPプロトコルスタックを実行することができ、またはTCPオフロードエンジン(TOE)が拡張デバイスに存在する場合、ネットワークプロトコル(TCP/IP)のハードウェアアクセラレーション処理がTCPオフロードエンジン(TOE)を使用して行われる。
次に、方法600は622に進み、ここで、拡張カード上のプロセッサは、内部バスを介して発信IP通信をネットワークコントローラに送信する。ネットワークコントローラフォーマットは、発信IP通信をフォーマットしてフォーマットされたIP通信を形成し、フォーマットされたIP通信をネットワーク上に伝送する。TCP/IPコンテキストでは、拡張カード上のプロセッサは、内部バスを介してIPデータグラムをネットワークコントローラに送信する。ネットワークコントローラはフレームを形成し、フレームは、ネットワーク媒体を介して伝送される電気/光信号に変換される。
したがって、ワークフローは、ホストがタスクを開始することから始まる。拡張カード(アクセラレーションネットワークカード)のTLS/SSLレイヤインターフェースは、アプリケーションによって呼び出され、タスクは、バスプロトコルインターフェースを介してドライバによって構成される。次に、拡張カード上の「プロトコルオフロード制御」ユニットが、ホストにより呼び出されたインターフェースに従って、対応するプロトコルオフロードプロセスを可能にする。これに続いて、拡張カード上のTLS/SSLプロトコルレイヤがプロセス制御を開始し、プロセス制御は複数回行われ得る。計算タスクが存在する場合、アービトレーションが行われ、計算結果が返されるまで、計算タスクは、対応するアルゴリズムハードウェアアクセラレーションユニットに分配される。
この後、拡張カード上のTCP/IPプロトコルスタック処理ユニットが、暗号化されたデータメッセージをTCP/IPプロトコルによってカプセル化し、それを拡張カード上のネットワークコントローラに対し構成する。次いで、ネットワークコントローラは、その制御側の設定に従って、データ側で対応する発信動作処理を行う。
図6(b)に示されるように、方法660は662で始まり、ここで、ネットワークコントローラは、ネットワークからデータパケットを受信し、データパケットから着信IP通信を形成し、内部バスを介して着信IP通信を拡張カード上のプロセッサに送信する。TCP/IPコンテキストでは、拡張カードのネットワークコントローラが、ネットワーク媒体を介してリモートホストからフレームを受信し、フレームをIPデータグラムに変換する。
次に、方法660は664に進み、ここで、拡張カード上のプロセッサは、トランスポートレイヤプロトコルスタックを処理して着信IP通信から処理されたデータを生成する。TCP/IPコンテキストでは、拡張カード上のプロセッサは、TCP/IPプロトコルスタックを介してIPデータグラムを処理してデータセグメントを取得する。さらに、拡張カード上のプロセッサはTCP/IPプロトコルスタックを実行することができ、またはTCPオフロードエンジン(TOE)が拡張デバイスに存在する場合、ネットワークプロトコル(TCP/IP)のハードウェアアクセラレーション処理がTCPオフロードエンジン(TOE)を使用して行われる。
この後、方法660は666に進み、ここで、拡張カード上のプロセッサは、データセグメントがTLS/SSL復号などの復号を必要とするかどうかを決定する。復号が必要とされる場合、方法660はセキュリティプロトコルを処理して、処理されたデータから復号されたデータを生成する。拡張カード上のプロセッサはTLS/SSLプロトコルスタックを処理し、方法660は672に進み、ここで、拡張カード上のプロセッサはアービトレーションを行い、次いで674に進んで、復号のために計算タスクを行う。
処理されたデータが復号を必要としない場合、または復号されたデータが形成された後、方法600は676に進み、ここで、拡張カード上のプロセッサは、処理されたデータが暗号化されていない場合は、処理されたデータを、外部バスを介してホストプロセッサ上で実行されているアプリケーションに送信し、処理されたデータが暗号化されている場合は、復号されたデータを、外部バスを介してホストプロセッサ上で実行されているアプリケーションに送信する。
したがって、ワークフローは、拡張カードがデータメッセージを受信することから始まる。この後、拡張カード上のネットワークコントローラは、複数回行われ得るパースプロセスのために対応するデータをTCP/IPプロトコルに伝送する。次に、パースの後に取得されたデータが暗号化されていない場合、それは、拡張カードの「プロトコルオフロード制御ユニット」を介してホストアプリケーションに直接送信される。
データが暗号化されている場合、拡張カード上のTLS/SSLプロトコルレイヤがパースを開始し、計算結果が返されるまで、計算タスクは、対応するアルゴリズムハードウェアアクセラレーションユニットに分配される。次いで、復号されたプレーンテキストデータは、「プロトコルオフロード制御ユニット」を介してホストアプリケーションに送信される。
上記のステップから理解され得るように、本出願で提案されているTLS/SSL完全オフロード解決策では、拡張カードは、TLS/SSLプロトコルレイヤ下のプロセスのほとんどすべてを達成し、ホストに対する計算圧力を大幅に低減することができる。さらに、ホストを含むプロセス全体に関して、本発明の利点の1つは、すべてのトラフィックがホストを通過するのを回避できることである。結果として、ホストのCPUリソースが、TCP/IPプロトコルスタックおよびTLS/SSLのプロトコルレイヤパースなどのネットワーク送信に関係付けられた手順に浪費されなくなる。
本発明の別の利点は、各データ送信/受信のデータパスにおいて、ホストと拡張カードとの間のドライバインターフェース呼び出しの数が大幅に減少されることである。すなわち、バスプロトコルインターフェース通信の数、対応するカーネル状態/ユーザ状態切り替えが減少される。本発明のさらなる利点は、「ホスト+アクセラレーションネットワークカード」のアーキテクチャが、アプリケーションにホストのリソースがより多く割り当てられるのを可能にすることである。ホストバスインターフェース側はプレーンテキストデータを処理するだけでよく、それにより、バス帯域幅圧力を軽減し、データ処理フローを単純化し、追加のリソース消費および遅延コストを回避する。
本出願の1つまたは複数の実施形態によれば、アルゴリズムをオフロードするための方法の実施形態がさらに提供される。この方法は、ウェブブラウザからデータを受信するHTTPSプロトコルに基づくデータ送信を行うサーバホストのプロセスにおいて使用され、この実施形態は、オフロードサーバ300に関して説明されたようにアルゴリズムをオフロードするためのシステムに適用されてよく、それは、オフロードサーバ300および400に関して述べられたシナリオを含むがこれに限定されない。添付図面のフローチャートに示されているステップは、コンピュータ実行可能命令のセットなどのコンピュータシステムで実行されてよく、論理順序はフローチャートに示されているが、場合によっては、示されまたは説明されているステップは、本明細書に示されているステップと異なる順序で行われてよいことに留意されたい。
図7(a)〜図7(e)は、本発明によるオフロード方法を示すフローチャートを示す。図7(a)は、オフロード方法700の例を示すフローチャートを示す。図7(b)は、本発明によるステップ712内に含まれる方法730の例を示すフローチャートを示す。図7(c)は、本発明によるステップ714内に含まれる方法740の例を示すフローチャートを示す。図7(d)は、本発明によるステップ710内に含まれる方法750の例を示すフローチャートを示す。図7(e)は、本発明によるステップ712内に含まれる方法770の例を示すフローチャートを示す。
図7(a)に示されるように、方法700は710で始まり、ここで、拡張デバイスは、データメッセージを受信し、拡張デバイス上のローカルネットワークコントローラを使用して、データメッセージをパースのために拡張デバイスのネットワークプロトコル処理ユニットに伝送する。次に、方法700は712に進み、ここで、拡張デバイスのネットワークプロトコル処理ユニットは、データメッセージをパースしてパース結果を生成する。これに続いて、方法700は714に進み、ここで、拡張デバイスは、ローカルトランスポートレイヤセキュリティプロトコルを使用することによってパース結果を処理する。この後、方法700は716に進み、ここで、拡張デバイスは処理結果をホストにアップロードする。
特に、上記のステップでは、サーバホストがウェブブラウザからデータを受信するとき、ホストがデータを受信するために使用される。このとき、ホストから独立した拡張デバイス(すなわち、TLS/SSL完全オフロードハードウェアアクセラレーションネットワークカード)がデータメッセージを受信し、拡張デバイス上のネットワークコントローラを介して解析するために対応するデータをTCP/IPプロトコルに伝送し、次いで、拡張デバイス上のトランスポートレイヤセキュリティプロトコル(TLS/SSL)を使用することによってパース結果を処理する。次に、拡張デバイスは、処理結果をホスト(すなわちサーバホスト)にアップロードする。
拡張デバイス上のTLS/SSLプロトコルレイヤ(すなわち、トランスポートレイヤセキュリティプロトコルレイヤ)によって行われるパース動作は、計算結果が返されるまで、計算タスクをアービトレーションし、それを対応するアルゴリズムハードウェアアクセラレーションユニットにディスパッチすることを含むが、これに限定されない。状況に応じて、上記のステップは複数回行われてよい。
上記から理解され得るように、本出願の上記の実施形態では、サーバホストがウェブブラウザからデータを受信する。次いで、拡張デバイスがデータメッセージを受信するために使用される。次に、拡張デバイスは、拡張デバイス内のネットワークプロトコル処理ユニット(たとえばTCP/IP処理ユニット)を使用して、TCP/IPパースを行ってデータメッセージを取得する。
これに続いて、拡張デバイスは、パース結果を取得し、拡張デバイスのトランスポートレイヤセキュリティプロトコル(TLS/SSL)を使用してパース結果を処理し、処理結果をホスト(すなわち、サーバホスト)にアップロードする。このようにして、本発明は、拡張カードがTLS/SSLプロトコルレイヤ下でほとんどすべてのプロセスを達成することを可能にするという目標を実現し、それによりホストに対する計算圧力を低減し、より多くの計算リソースをアプリケーションに提供する。
同時に、セキュアなネットワークプロトコルにおける遅延およびスループットの技術的効果が、拡張カード上の並列計算カーネルによって保証され、それにより、従来技術でのローカルハードウェアオフロードのみを使用する解決策によるサーバホストのリソース占有が依然として非常に大きいという技術的問題を解決する。
図7(b)は、本発明によるステップ712内に含まれる方法730の例を示すフローチャートを示す。図7(b)に示されるように、方法730は732で始まり、ここで、データメッセージがネットワーク(TCP/IP)プロトコル処理ユニットによってパースされてパース結果が取得された後、方法730は、パース結果におけるデータが暗号化されているかどうかを決定する。次に、方法730は734に進み、ここで、パース結果におけるデータが暗号化されていない場合、パース結果はホストに直接アップロードされる。あるいは、方法700は736に進み、ここで、パース結果におけるデータが暗号化されている場合、方法730は714に進む。
特に、上記の実施形態では、ローカルネットワークコントローラによってパースするためにデータメッセージがネットワーク(TCP/IP)プロトコル処理ユニットに伝送された後、パースデータが暗号化されているかどうかが決定される。それが暗号化されていない場合、それは「プロトコルオフロード制御ユニット」を介してホストアプリケーションに直接送信される。データが暗号化されている場合、拡張カード上のTLS/SSLプロトコルレイヤがデータのパース始め、計算結果が返されるまで、計算タスクはアービトレーションされ、対応するアルゴリズムハードウェアアクセラレーションユニットに分配される。
図7(c)は、本発明によるステップ714内に含まれる方法740の例を示すフローチャートを示す。図7(c)に示されるように、方法740は742で始まり、ここで、パース結果におけるデータが暗号化されていると決定された後、方法740は742で始まり、ここで、処理結果がアービトレーションされ、次いで744に進み、ここで、アービトレーションされた処理結果が復号処理のために対応するアルゴリズムアクセラレーションユニットに送信されて、復号結果が取得される。上記の実施形態により、アルゴリズムアクセラレーションユニットが復号処理を実行するために使用され、ハードウェアアクセラレーションが実現され得る。
任意選択で、拡張デバイス上で、ソフトウェアスタックがトランスポートレイヤセキュリティプロトコルのサービスを実行するために使用されてよい。そして、トランスポートレイヤセキュリティプロトコルのエンジンユニットが暗号化および復号アルゴリズムのオフロードを行うために使用される。ネットワークプロトコル(TCP/IP)のハードウェアアクセラレーション処理がTCPオフロードエンジン(TOE)を介して行われる。
図7(d)は、本発明によるステップ710内に含まれる方法750の例を示すフローチャートを示す。図7(d)に示されるように、方法750は752で始まり、ここで、データメッセージがネットワークプロトコル処理ユニットに送信される前に、方法750は、拡張デバイス内にTCPオフロードエンジンが存在するかどうかを決定する。TCPオフロードエンジンが拡張デバイスに存在する場合、方法750は754に進んで、TCPオフロードエンジンを使用して、ネットワークプロトコル処理ユニット(たとえばTCP/IP処理ユニット)のハードウェアアクセラレーションプロセスを行い、プロセッサのメモリ領域にデータメッセージを記憶する。
あるいは、TCPオフロードエンジンが拡張デバイスに存在しない場合、方法750は756に進み、ここで、データメッセージはプロセッサのメモリ領域に記憶され、または処理のためにホストへバイパスされる。
データメッセージがプロセッサのメモリ領域に記憶された後、方法750は760に進み、ここで、プロセッサがデータメッセージに対してプロトコルスタック処理を行う。次に、方法750は762に進み、ここで、TLSオフロードが必要とされる場合、データメッセージは復号処理のためにセキュアソケットレイヤ(SSL)に送信され、トランスポートレイヤセキュリティプロトコルがハードウェアアクセラレーションを達成するために呼び出される。あるいは、方法750は764に進み、ここで、TLSオフロードが行われる必要がない場合、復号された結果のタイプおよび宛先アドレスに従って復号結果をプロセッサ上のアプリケーションにアップロードし、またはそれを外部バスを介してホストにアップロードする。
任意選択の実施形態では、トランスポートレイヤセキュリティプロトコルのセキュアソケットレイヤを使用してパース結果を処理するプロセスにおいて、TCPオフロードエンジンは、トランスポートレイヤ暗号化デバイスを使用して、そのドライバを呼び出すことによってデータを暗号化および復号する。暗号化および復号結果が予め決定された条件を満たす場合、データはホストにアップロードされる。
任意選択の実施形態では、トランスポートレイヤセキュリティプロトコルのセキュアソケットレイヤを使用してパース結果を処理するプロセスにおいて、TCPオフロードエンジンは、トランスポートレイヤ暗号化デバイスを使用して、復号された結果のタイプに応じて、そのドライバを呼び出すことによってデータを復号する。復号結果のタイプおよび宛先アドレスに応じて、復号結果は、プロセッサ上のアプリケーションにアップロードされるか、またはホストバスを介してホストにアップロードされる。
図7(e)は、本発明によるステップ712内に含まれる方法770の例を示すフローチャートを示す。図7(e)に示されるように、方法770は772で始まり、ここで、データメッセージがネットワーク(TCP/IP)プロトコル処理ユニットによってパースされてパース結果が取得された後、方法770は、パース結果が処理のためにトランスポートレイヤセキュリティプロトコルのセキュアソケットレイヤに送信される必要があるかを決定する。
これに続いて、方法770は774に進み、ここで、パース結果がセキュアソケットレイヤに送信される必要がある場合、方法770は、トランスポートレイヤセキュリティプロトコルのセキュアソケットレイヤを使用することによってパース結果を処理する。あるいは、方法770は776に進み、ここで、パース結果がセキュアソケットレイヤに送信される必要がない場合、方法776は、パース結果を処理するためにホストにバイパスする。
図8は、本発明の1つまたは複数の実施形態による、オフロードサーバを動作させる方法800の例を示す図である。図8に示されるように、オフロードプロトコルモードでは、ホストが、ApacheなどのHTTPネットワークサービスアプリケーションプログラムを実行し、拡張カードが、ネットワークに関係付けられたプロトコル制御およびデータ処理のすべてを扱う。拡張カード上のソフトウェアスタックは、「ARMプロセッサ+Linuxオペレーティングシステム」の形態で実装され得る。拡張カード上で、TLS/SSLプロトコルレイヤサービスがソフトウェアスタックによって行われ、TCP/IPプロトコルスタックのハードウェアアクセラレーション処理がTOEユニットによって行われ、暗号化および復号アルゴリズムオフロードがTLS/SSLエンジンによって行われる。
図8にさらに示されるように、データメッセージを受信した(S0)後、MACがTOEを介してデータを処理する(S1)。処理されたデータはARMのメモリ領域に記憶され(S2)、ARMカーネルがTOEのデータを処理する。ARMカーネルによって受信されたデータはTLS/APPレイヤにある。プロトコルおよび予め設定された条件に従って、それは、データパケットが、処理のためにSSLに渡されるか(S4)、または復号が必要とされない場合にホストへバイパスされるか(S6)を決定する。
データパケットがSSLによって処理される場合、方法800は、libcryptoおよびユーザモードドライバを介してTLSエンジンハードウェアへの設定を呼び出す(S5)。処理されたデータがセッションデータである場合、それはホストにアップロードされる(S6)。これに続いて、PCIe DMAをホストのメモリ領域に書き込み、そして割り込みを提供する(S7)。
TOEがある場合、ARM上で実行されている拡張カードのカーネルは、TCP/IPプロトコルスタックを処理する必要がない。むしろ、TOEモジュールのインターフェースおよびデータを、他のプロセスが呼び出すのに便利なソケットインターフェースの様々な動作機能にカプセル化するだけでよい。さらに、PCIe DMAがホストメモリ領域に書き込まれた後、ホストが割り込みに応答するのを待つ間にスループットレートを保証するために非同期モードを使用すべきである。ホストは、リングバッファに類似する形態を使用して受信を達成することができる。さらに、ホストがメッセージを送信する場合、プロセスおよびアイデアは類似するがパスは反対である。この実施形態は、最も一般的なサーバアプリケーションのコンテキストで機能する。
図9は、本発明の1つまたは複数の実施形態による、オフロードサーバを動作させる方法900の例を示す図である。図9に示されるように、TOEが存在するホストとアクセラレーションネットワークカードオフロードプロトコルの混合されたモードでは、いくつかのサーバプリケーションシナリオにおいて複数の要求があり得る。要求の1つは、いくつもの軽量アプリケーションが拡張カードにオフロードできることであり、利点は処理遅延が低減することである。もう1つの要求は、場合によって少数のホスト上のアプリケーションがTLS/SSLのハードウェアオフロードなしにopenSSLの下位レイヤインターフェースを直接呼び出すことである。
したがって、ホストがHTTPネットワークサービスアプリケーションを実行するとき、それはTLS/SSLプロトコルレイヤに関係付けられたランタイムライブラリを含む必要もある(ごく一部の場合、それが呼び出される必要がある)。拡張カードは、ネットワークに関係付けられたプロトコル制御およびデータ処理のすべて、ならびに軽量アプリケーションを取り扱う。拡張カード上のソフトウェアスタックは、「ARMプロセッサ+Linuxオペレーティングシステム」の形態でも実装され得る。拡張カード上で、TLS/SSLプロトコルレイヤサービスがソフトウェアスタックによって行われる。TCP/IPプロトコルスタックのハードウェアアクセラレーション処理がTOEユニットによって行われ、暗号化および復号アルゴリズムオフロードがTLS/SSLエンジンによって行われる。
図9にさらに示されるように、データメッセージを受信した(S0)後、MACがTOEを介してデータを処理する(S1)。処理されたデータはARMのメモリ領域に記憶され、ARMカーネルがTOEのデータを処理する(S2)。ARMカーネルによって受信されたデータはTLS/APPレイヤにある。プロトコルおよび予め設定された条件に従って、それは、データパケットが、処理のためにSSLに渡されるか(S4)、または復号が必要とされない場合にホストへバイパスされるか(S6)を決定する。
データパケットがSSLによって処理される(S4)場合、方法900は、libcryptoおよびユーザモードドライバを介してTLSエンジンハードウェアへの設定を呼び出す(S5)。処理されたデータのタイプおよび宛先アドレスに応じて、方法900は、処理されたデータを(プロセス間通信を介して)ARM上のアプリケーションに送信するか、または処理されたデータをホストバスインターフェースを介してホストにアップロードする(S6)。これに続いて、方法900は、PCIe DMAをホストのメモリ領域に書き込み、そして割り込みを提供する(S7)。
TOEがある場合、ARM上で実行されている拡張カードのカーネルは、TCP/IPプロトコルスタックを処理する必要がない。むしろ、TOEモジュールのインターフェースおよびデータを、他のプロセスが呼び出すのに便利なソケットインターフェースの様々な動作機能にカプセル化するだけでよい。さらに、PCIe DMAがホストメモリ領域に書き込まれた後、ホストが割り込みに応答するのを待つ間にスループットレートを保証するために非同期モードを使用すべきである。ホストは、リングバッファに類似する形態を使用して受信を達成してよい。さらに、ホストがメッセージを送信する場合、プロセスおよびアイデアは類似するがパスは反対である。
図10は、本発明の1つまたは複数の実施形態による、オフロードサーバを動作させる方法1000の例を示す図である。図10に示されるように、TOEが存在しないホストとアクセラレーションネットワークカードオフロードプロトコルの混合されたモードにおいて、拡張カードのいくつかのタイプに関して、コストおよび設計複雑性などの理由を考慮して、TOEハードウェアモジュールが拡張カードに含まれない。この場合、拡張カード上のARMプロセッサリソースの一部が、TCP/IPプロトコルスタックパースに割り当てられる。拡張カードの処理リソースが飽和している状況において、バイパスユニットが追加され得ることを考慮する必要もある。
この実施形態では、TOEモジュールなしの混合されたプロトコルモードにおけるワークフローが説明される。したがって、ホストがHTTPネットワークサービスアプリケーションを実行するとき、それはTLS/SSLプロトコルレイヤに関係付けられたランタイムライブラリを含む必要もあり得る(ごく一部の場合、それが呼び出される必要がある)。拡張カードは、ネットワークに関係付けられたプロトコル制御およびデータ処理すべて、ならびに軽量アプリケーションプログラムを取り扱う。拡張カード上のソフトウェアスタックは、「ARMプロセッサ+Linuxオペレーティングシステム」の形態でも実装され得る。
拡張カード上で、TLS/SSLプロトコルレイヤおよびTCP/IPプロトコルスタックが、ソフトウェアスタックを介して実行され、暗号化および復号アルゴリズムがTLS/SSLエンジンによってオフロードされる。ネットワークポートのトラフィック(回線速度など)が増加するとARMがシステムトラフィックのボトルネックになるため、複数のトラフィックの間で区別をする必要がある。
1つ目は、通常のHTTPSトラフィックである。トラフィックのこの部分はクライアントによって開始され、ARMに対するTLS/SSLオフロードに渡されることが好ましいことを特徴とする。ARMカーネルリソース使用量が特定のレベルを超えると、一部の新しいトラフィックがPCIeにバイパスされ、ホストによって直接取り扱われる。2つ目は、混合されたHTTPおよび他の関係しないトラックである。この部分は、一般にARM TLS/SSLオフロードモジュールに入ることは想定されず、したがって、それはホストにバイパスされ、または破棄され得る。
3つ目は、HTTPおよび他のプロトコルならびに他のポートに必要とされるトラフィックである。この部分は、ネットワーク検出および証明書チェーン検証などを含む。トラフィックのこの部分は、ARMによって、またはサブネット内の他のデバイスによって開始され得る。したがって、それらの個々の発信元および戻りアドレスを区別して、ARMおよびホストのそれぞれのネットワークプロセスおよび状態制御を保証するようにする必要がある。したがって、TOEモジュールが存在しないとき、ARMに関係付けられないトラフィックをホストに迂回させ、ARMによって構成されたバイパスルールに従ってフィルタリングするために、バイパスモジュールが必要とされる。
図10にさらに示されるように、データメッセージを受信した後、MACは、データメッセージをオフロードのためにバイパスユニットに送信する(S1)。データがARMのメモリ領域に記憶され(S2)、またはデータをPCIeにバイパスしてホストにアップロードする(S3)。ARMカーネルによって受信されたデータは、まずプロトコルスタックによって処理される。データパケットがTLSのハードウェアオフロードを必要とする場合、それは処理のためにSSLに渡され(S4)、後続のプロセスコンテキスト状態および復号されたデータがホストにアップロードされる(S6)。
データがSSLによって処理される場合、方法1000は、libcryptoおよびユーザモードドライバを介してハードウェアアクセラレーションのためにTLS/SSLを呼び出す(S5)。処理されたデータのタイプおよび宛先アドレスに応じて、方法1000は、処理されたデータを(プロセス間通信を介して)ARM上のアプリケーションに送信するか、または処理されたデータをホストバスインターフェースを介してホストにアップロードする(S6)。次に、方法1000は、PCIe DMAをホストのメモリ領域に書き込み、そして割り込みを提供するS(7)。
TOEが存在しない場合、ARMカーネルは、TCP/IPスタックを取り扱う必要がある。さらに、PCIe DMAがホストメモリ領域に書き込まれた後、ホストが割り込みに応答するのを待つ間にスループットレートを保証するために非同期モードを使用すべきである。ホストは、リングバッファに類似する形態を使用して受信を達成してよい。さらに、ホストがメッセージを送信する場合、プロセスおよびアイデアは類似するがパスは反対である。
本出願は、TLS/SSLプロトコルレイヤ下で部分を完全にオフロードするための方法を提案することに留意されたい。特定の実装において、複数の異なる特定の形態が存在する場合がある。たとえば、ARMカーネルインテリジェントネットワークカード+TLS/SSLハードウェアアクセラレーションモジュール+TOEがある。
本出願により提案される技術的解決策は、TLS/SSLプロトコルレイヤ下でプロセスを完全にオフロードし、以下の3つのレベル、すなわち、拡張カードにおける「プロトコルオフロード」、「計算タスクアービトレーション」および「基本的ネットワーク制御」を含む再設計された構造を採用する。これにより、従来のTLS/SSLプロトコルの部分的オフロードに関連付けられた「コスト妥協」の問題点を解決する。
本出願により提案されたTLS/SSL完全オフロード解決策では、ホストに対する計算圧力が大幅に低減され、より多くの計算リソースがアプリケーションに提供され、ネットワークセキュリティプロトコルにおける遅延およびスループットが並列計算カーネルによって保証されることが理解され得る。
図11は、本発明の1つまたは複数の実施形態による、アルゴリズムをオフロードするためのデバイス1100の例を示すブロック図を示す。図11に示されるように、方法500、600、および660を実行できるデバイス1100は、開始モジュール1110、カプセル化モジュール1112、および送信モジュール1114を含む。開始モジュール1110は、ローカルトランスポートレイヤセキュリティプロトコルを開始して、ホストにより呼び出されたインターフェースに従って、拡張デバイスを介してタスクを処理する。カプセル化モジュール1112は、トランスポートレイヤセキュリティプロトコルがネットワークプロトコル処理ユニットを使用することによって拡張デバイスを介してタスクを処理した後、データメッセージとして処理結果をカプセル化する。
送信モジュール1114は、拡張デバイスに配備されたネットワークコントローラを介して、カプセル化されたデータメッセージを送出する。開始モジュール1110、カプセル化モジュール1112、および送出モジュール1114は、図5(a)の実装要素510から514を実装するために使用され得る。上記のモジュールおよび対応するステップによって実装された例およびアプリケーションシナリオは同じであり、方法500に関して開示された内容を含むが、これに限定されない。上記のモジュールは、コンピュータ実行可能命令のセットなどのコンピュータシステムにおけるデバイスの一部として実装され得ることに留意されたい。
上記から理解され得るように、本発明の上述の実施形態では、サーバホストによりウェブブラウザにデータを送信するプロセスにおいて、拡張デバイスは、ホストにより呼び出されたインターフェースに従ってローカルトランスポートレイヤセキュリティプロトコル(TLS/SSL)を開始して、データを送信するホストに関係付けられたタスクを処理する。トランスポートレイヤセキュリティプロトコル(TLS/SSL)が関係付けられたタスクを処理した後、拡張デバイス内のネットワークプロトコル処理ユニットが、データメッセージとして処理結果のTCP/IPカプセル化を行うためにさらに使用される。
最後に、拡張デバイスに配備されたネットワークコントローラが、カプセル化されたデータメッセージを送出し、その結果、拡張カードがTLS/SSLプロトコルレイヤ下でほとんどすべてのプロセスを達成し、それにより、ホストに対する計算圧力を低減する。したがって、より多くの計算リソースがアプリケーションに提供され、セキュアなネットワークプロトコルにおける遅延およびスループットの技術的効果が、拡張カード上の並列計算カーネルによって保証され、それにより、サーバホスト上のリソース使用が依然として比較的大きいという従来技術で採用されていたローカルハードウェアオフロード解決策の技術的問題を解決する。
任意選択の実施形態では、デバイス1100は、第1の処理モジュールをさらに含み、第1の処理モジュールは、ホストを介してタスクを開始し、ホストのアプリケーションを介して拡張されたデバイスのトランスポートレイヤセキュリティプロトコルのインターフェースを呼び出すことにより、拡張デバイスは、トランスポートレイヤセキュリティプロトコルアルゴリズムの機能、ネットワークプロトコルカプセル化、およびタスクのための下位ネットワークプロトコルスタックの機能性を実行することができる。
本明細書では、上記の第1の処理モジュールは要素522に対応し、上記のモジュールおよび対応するステップによって実装された例およびアプリケーションシナリオは同じであり、方法520に関して開示された内容を含むが、これに限定されないことに留意されたい。上記のモジュールは、コンピュータ実行可能命令のセットなどのコンピュータシステムにおけるデバイスの一部として実装され得ることに留意されたい。
任意選択の実施形態では、上記の開始モジュールは、タスクを処理するためにトランスポートレイヤセキュリティプロトコルが必要とされるかどうかを決定するように構成された第1の決定モジュールと、必要に応じて、タスクをアービトレーションし、タスクを処理のためにアルゴリズムアクセラレーションユニットに送信して、タスクの処理結果を取得する第1の実行モジュールとを含む。
第1の決定モジュールおよび第1の実行モジュールは方法530の要素532および534に対応することに留意されたい。上記のモジュールおよび対応するステップによって実装された例およびアプリケーションシナリオは同じであり、方法530に関して開示された内容を含むが、これに限定されない。上記のモジュールは、コンピュータ実行可能命令のセットなどのコンピュータシステムにおけるデバイスの一部として実装され得ることに留意されたい。
任意選択の実施形態では、上記のカプセル化モジュールは、ネットワークプロトコル処理ユニットを介して処理結果をカプセル化し、カプセル化結果をネットワークコントローラに対し構成するようにさらに構成される。任意選択の実施形態では、拡張デバイス上で、ソフトウェアスタックがトランスポートレイヤセキュリティプロトコルのサービスを実行するために使用され、トランスポートレイヤセキュリティプロトコルのエンジンユニットが暗号化および復号アルゴリズムのオフロードを行うために使用され、TCPオフロードエンジンがネットワークプロトコルのハードウェアアクセラレーション処理を行うために使用される。
任意選択の実施形態では、上記のデバイスは、TCPオフロードエンジンが拡張デバイス内に存在するかどうかを決定するように構成された第2の決定モジュールと、それが存在する場合、TCPオフロードエンジンを介してネットワークプロトコルのハードウェアアクセラレーション処理を実行するように構成された第2の実行モジュールとをさらに含む。
上記の第2の決定モジュールおよび第2の実行モジュールは方法540の要素542および544に対応することに留意されたい。上記のモジュールおよび対応するステップによって実装された例およびアプリケーションシナリオは同じであり、方法540に関して開示された内容を含むが、これに限定されない。上記のモジュールは、コンピュータ実行可能命令のセットなどのコンピュータシステムにおけるデバイスの一部として実装され得ることに留意されたい。
任意選択の実施形態では、デバイス1100は、TCPオフロードエンジンが存在しない場合、拡張デバイスのリソース使用が予め決定された閾値を超えているかどうかを決定する第3の実行モジュールをさらに含む。超えている場合、第3の実行モジュールは、ロードバランシングスケジューリングモジュール(すなわち「トラフィックスケジューリングモジュール」)を使用して、トラフィックの一部を処理のためにホストへバイパスする。
上記の第3実行モジュールは方法540の要素546に対応することに留意されたい。上記のモジュールおよび対応するステップによって実装された例およびアプリケーションシナリオは同じであり、方法540に関して開示された内容を含むが、これに限定されない。上記のモジュールは、コンピュータ実行可能命令のセットなどのコンピュータシステムにおけるデバイスの一部として実装され得ることに留意されたい。
図12は、本出願の1つまたは複数の実施形態による、アルゴリズムをオフロードするためのデバイス1200の例を示すブロック図を示す。図12に示されるように、方法700、730、740、750、および770を実行することができるデバイス1200は、パースモジュール1210、第3の処理モジュール1212、およびアップロードモジュール1214を含む。パースモジュール1210は、拡張デバイスを介してデータメッセージを受信し、ローカルネットワークコントローラを使用して、データメッセージをパースのためにネットワークプロトコル処理ユニットに送信する。第3処理モジュール1212は、ローカルトランスポートレイヤセキュリティプロトコルによって拡張デバイスを介してパース結果を処理する。アップロードモジュール1214は、拡張デバイスを介して処理結果をホストにアップロードする。
パースモジュール1210、第3処理モジュール1212、およびアップロードモジュール1214は、方法700の要素710から716に対応する。上記のモジュールおよび対応するステップによって実装された例およびアプリケーションシナリオは同じであり、方法700に関して開示された内容を含むが、これに限定されない。上記のモジュールは、コンピュータ実行可能命令のセットなどのコンピュータシステムにおけるデバイスの一部として実装され得ることに留意されたい。
上記から理解され得るように、本出願の上記の実施形態では、サーバホストによりウェブブラウザから送信されたデータを受信するプロセスにおいて、拡張デバイスは、データメッセージを受信し、拡張デバイス内のネットワークプロトコル処理ユニット(たとえばTCP/IP処理ユニット)を使用することによってデータメッセージとして処理結果を用いてTCP/IPパースを行って、パース結果を取得する。
さらに、拡張デバイスは、拡張デバイスローカル送信レイヤセキュリティプロトコル(TLS/SSL)を使用してパース結果を処理し、処理結果をホスト(すなわちサーバホスト)にアップロードし、その結果、拡張カードがTLS/SSLプロトコルレイヤ下でほとんどすべてのプロセスを達成し、それにより、ホストに対する計算圧力を低減する。
したがって、より多くの計算リソースがアプリケーションに提供され、セキュアなネットワークプロトコルにおける遅延およびスループットの技術的効果が、拡張カード上の並列計算カーネルによって保証され、それにより、サーバホスト上のリソース使用が依然として比較的大きいという従来技術で採用されていたローカルハードウェアオフロード解決策の技術的問題を解決する。
任意選択の実施形態では、デバイス1200は、パース結果におけるデータが暗号化されているかどうかを決定する第3の決定モジュールと、パース結果におけるデータが暗号化されていない場合に、パース結果をホストに直接アップロードする第4の実行モジュールとをさらに含む。デバイス1200はまた、パース結果におけるデータが暗号化されている場合に、ローカルトランスポートレイヤセキュリティプロトコルを使用することによってパース結果を処理するステップを行う第5の実行モジュールを含む。
第3の決定モジュール、第4の実行モジュール、および第5の実行モジュールは方法730の要素732から736に対応することに留意されたい。上記のモジュールおよび対応するステップによって実装された例およびアプリケーションシナリオは同じであり、方法730に関して開示された内容を含むが、これに限定されない。上記のモジュールは、コンピュータ実行可能命令のセットなどのコンピュータシステムにおけるデバイスの一部として実装され得ることに留意されたい。
任意選択の実施形態では、第5の実行モジュールは、トランスポートレイヤセキュリティプロトコルレイヤを使用してパース結果を処理し、処理結果を取得する第4の処理モジュールを含む。第5の実行モジュールはまた、処理結果をアービトレーションし、データを暗号化および復号処理のために対応するアルゴリズムアクセラレーションユニットに送信して復号結果を取得する復号モジュールを含む。
第4の処理モジュールおよび復号モジュールは方法740の要素742から744に対応することに留意されたい。上記のモジュールおよび対応するステップによって実装された例およびアプリケーションシナリオは同じであり、方法740に関して開示された内容を含むが、これに限定されない。上記のモジュールは、コンピュータ実行可能命令のセットなどのコンピュータシステムにおけるデバイスの一部として実装され得ることに留意されたい。
任意選択の実施形態では、デバイス1200は、TCPオフロードエンジンが拡張デバイス内に存在するかどうかを決定する第4の決定モジュールと、TCPオフロードエンジンが拡張デバイスに存在する場合に、TCPオフロードエンジンを使用して、ネットワークプロトコル処理ユニット(たとえばTCP/IP処理ユニット)のハードウェアアクセラレーション処理を実行し、データメッセージをプロセッサのメモリ領域に記憶する第6の実行モジュールとをさらに含む。
第4の決定モジュールおよび第6の実行モジュールは方法750の要素752および754に対応することに留意されたい。上記のモジュールおよび対応するステップによって実装された例およびアプリケーションシナリオは同じであり、方法750に関して開示された内容を含むが、これに限定されない。上記のモジュールは、コンピュータ実行可能命令のセットなどのコンピュータシステムにおけるデバイスの一部として実装され得ることに留意されたい。
任意選択の実施形態では、第3の処理モジュールは、拡張デバイスのプロセッサを使用して、パース結果が処理のためにトランスポートレイヤセキュリティプロトコルのセキュアソケットレイヤに送信される必要があるかどうかを決定する第5の決定モジュールを含む。さらに、第3の処理モジュールは、パース結果がセキュアソケットレイヤに送信される必要がある場合に、トランスポートレイヤセキュリティプロトコルのセキュアソケットレイヤを使用することによってパース結果を処理する第7の実行モジュールを含む。さらに、第3の処理モジュールは、パース結果がセキュアソケットレイヤに送信される必要がない場合に、ホストにバイパスしてパース結果を処理する第8の実行モジュールを含む。
第5の決定モジュール、第7の実行モジュール、および第8の実行モジュールは方法760の要素762から766に対応することに留意されたい。上記のモジュールおよび対応するステップによって実装された例およびアプリケーションシナリオは同じであり、方法760に関して開示された内容を含むが、これに限定されない。上記のモジュールは、コンピュータ実行可能命令のセットなどのコンピュータシステムにおけるデバイスの一部として実装され得ることに留意されたい。
任意選択の実施形態では、第7の実行モジュールは、トランスポートレイヤセキュリティプロトコルのセキュアソケットレイヤがパース結果を処理するために使用されるとき、TCPオフロードエンジンを使用して、そのドライバを呼び出すことによってトランスポートレイヤ暗号化デバイスを介してデータを暗号化および復号し、暗号化および復号結果が予め決定された条件を満たす場合はホストにアップロードする。
任意選択の実施形態では、第7の実行モジュールは、トランスポートレイヤセキュリティプロトコルのセキュアソケットレイヤがパース結果を処理するために使用されるとき、TCPオフロードエンジンを使用して、そのドライバを呼び出すことによってトランスポートレイヤ暗号化デバイスを介してデータを暗号化および復号する。復号結果のタイプおよび宛先アドレスに応じて、復号結果は、プロセッサ上のアプリケーションにアップロードされるか、またはホストバスを介してホストにアップロードされる。
任意選択の実施形態では、デバイス1200は、第9の実行モジュールをさらに含み、第9の実行モジュールは、TCPオフロードエンジンが拡張デバイスに存在しない場合、プロセッサのメモリ領域にデータメッセージを記憶し、または処理のためにホストにバイパスする。第9の実行モジュールは、方法750における756に対応し、上記のモジュールおよび対応するステップによって実装された例およびアプリケーションシナリオは同じであり、方法750に関して開示された内容を含むが、これに限定されない。上記のモジュールは、コンピュータ実行可能命令のセットなどのコンピュータシステムにおけるデバイスの一部として実装され得ることに留意されたい。
任意選択の実施形態では、デバイス1200は、プロセッサによってデータメッセージに対してプロトコルスタック処理を行う第5の処理モジュールと、TLSオフロードを実行する必要がある場合、復号処理のためにそれをセキュアソケットレイヤ(SSL)に送信し、トランスポートレイヤセキュリティプロトコルを呼び出してハードウェアアクセラレーションを達成する。
第5の処理モジュールおよび第6の処理モジュールは方法750の760および762に対応し、上記のモジュールおよび対応するステップによって実装された例およびアプリケーションシナリオは同じであり、方法750に関して開示された内容を含むが、これに限定されないことに留意されたい。上記のモジュールは、コンピュータ実行可能命令のセットなどのコンピュータシステムにおけるデバイスの一部として実装され得ることに留意されたい。
任意選択の実施形態では、デバイス1200は、TLSオフロードが行われる必要がない場合に、復号結果のタイプおよび宛先アドレスに応じて復号結果をプロセッサ上のアプリケーションにアップロードするか、またはホストバスを介してそれをホストにアップロードする第7の処理モジュールをさらに含む。
上述された第7の処理モジュールは方法750における764に対応し、上記のモジュールおよび対応するステップによって実装された例およびアプリケーションシナリオは同じであり、方法750に関して開示された内容を含むが、これに限定されないことに留意されたい。上記のモジュールは、コンピュータ実行可能命令のセットなどのコンピュータシステムにおけるデバイスの一部として実装され得ることに留意されたい。
図13は、本発明の1つまたは複数の実施形態による、拡張デバイス1300の例を示すブロック図を示す。図13に示されるように、拡張デバイス1300はプロセッサ1310を含む(あるいは複数のプロセッサ1310が使用され得る)。プロセッサ1310は、マイクロプロセッサMCUまたはプログラマブル論理デバイスFPGAなどの処理デバイスを含むが、これらに限定されない。
さらに、拡張デバイス1300は、データを記憶するためのメモリ1312、通信機能のためのネットワークコントローラ1314、および外部バス1322に結合された外部バスコントローラ1320を含む。さらに、拡張デバイス1300は、プロセッサ1310、メモリ1312、ネットワークコントローラ1314、および外部バスコントローラ1320に結合された、内部バス1324を含む。一方、外部バス1322はホストプロセッサに結合される。
さらに、拡張デバイス1300は、ディスプレイ、入出力インターフェース(I/Oインターフェース)、(I/Oインターフェースのポートの1つとして含まれ得る)ユニバーサルシリアルバス(USB)ポート、ネットワークインターフェース、電源、および/またはカメラを含むこともできる。図13は例示にすぎず、上記の電子デバイスの構成を限定するものではない。たとえば、拡張デバイス1300は、図13に示されるよりも多いまたは少ないコンポーネントを含んでもよく、または図13に示されるものとは異なる構成を有してもよい。
プロセッサ1310および/または他のデータ処理回路は、本明細書では一般に「データ処理回路」と呼ばれることもある。データ処理回路は、全体的または部分的に、ソフトウェア、ハードウェア、ファームウェア、またはそれらの任意の組み合わせとして具現化され得る。さらに、データ処理回路は、単一の個別の処理モジュールであってよく、または全体的もしくは部分的に拡張デバイス1300における他のコンポーネントのいずれかに統合されてよい。本出願の実施形態で言及されているように、データ処理回路は、プロセッサ(たとえば、インターフェースに接続された可変抵抗端子経路の選択)として制御される。
プロセッサ1310は、TCP/IPまたはUDPなどのトランスポートプロトコルに従ってフォーマットされたデータを、ホストプロセッサ上で実行されているアプリケーションから外部バスを介して受信して、受信されたデータを形成する。プロセッサ1310はまた、受信されたデータが暗号化されるべきかどうかを決定し、受信されたデータが暗号化されるべき場合、TLS/SSLなどのセキュリティプロトコルを処理して、受信されたデータから暗号化されたデータを生成する。
さらに、プロセッサ1310は、トランスポートプロトコルのトランスポートレイヤプロトコルスタックを処理して、受信されたデータが暗号化されるべきでない場合は受信されたデータから、受信されたデータが暗号化されるべきである場合は暗号化されたデータから、発信IP通信を生成する。さらに、プロセッサ1310は、内部バス1324を介して発信IP通信をネットワークコントローラ1314に送信する。
次いで、ネットワークコントローラ1314が、発信IP通信をフォーマットしてフォーマットされたIP通信を形成し、フォーマットされたIP通信をネットワーク上に伝送する。ネットワークコントローラ1314はまた、ネットワークからデータパケットを受信し、データパケットから着信IP通信を形成し、着信IP通信を内部バス1324を介してプロセッサ1310に送信する。
プロセッサ1310はまた、トランスポートレイヤプロトコルスタックを処理して着信IP通信から処理されたデータを生成し、処理されたデータが暗号化されているかどうかを決定する。さらに、プロセッサ1310は、処理されたデータが暗号化されている場合にセキュリティプロトコルを処理し、そうすることで、セキュリティプロトコルは、処理されたデータから復号されたデータを生成する。
さらに、プロセッサ1310は、処理されたデータが暗号化されていない場合は、処理されたデータを、外部バス1322を介してホストプロセッサ上で実行されているアプリケーションに送信し、処理されたデータが暗号化されていない場合は、復号されたデータを、外部バス1322を介してホストプロセッサ上で実行されているアプリケーションに送信する。拡張プロセッサ1310およびホストプロセッサは、ラックのバックプレーンが外部バス1322として機能するラックにおける異なるカードに存在することができる。
プロセッサ1310は、送信デバイスによってメモリに記憶された情報およびアプリケーションプログラムを呼び出して、以下のステップを行うことができる:すなわち、拡張デバイスが、ローカルトランスポートレイヤセキュリティプロトコルを開始して、ホストにより呼び出されたインターフェースに従ってタスクを処理する。トランスポートレイヤセキュリティプロトコルがタスクを処理した後、拡張デバイスはネットワークプロトコル処理ユニット(たとえばTCP/IP処理ユニット)を使用して、処理結果をデータメッセージとしてカプセル化する。拡張デバイスに配備されたネットワークコントローラが、カプセル化されたデータメッセージを送出する。
メモリ1312は、本出願の1つまたは複数の実施形態における分配ネットワークデバイスのネットワークアクセス状況を監視するための方法に対応するプログラム命令/データストレージデバイスなどのアプリケーションソフトウェアのソフトウェアプログラムおよびモジュールを記憶するために使用され得る。プロセッサ1310は、メモリ1312に記憶されたソフトウェアプログラムおよびモジュールを実行して、様々な機能のアプリケーションおよびデータ処理を実行する。すなわち、本出願における分配デバイスのネットワークアクセス状況を監視するための方法を実装する。メモリ1312は、高速ランダムアクセスメモリを含むことができ、1つもしくは複数の磁気ストレージデバイス、フラッシュメモリ、または他の不揮発性ソリッドステートメモリなどの不揮発性メモリを含むこともできる。いくつかの例では、メモリ1312は、プロセッサ1310に対して離れて配置されたメモリをさらに含むことができ、離れて配置されたメモリは、ネットワークを介して拡張デバイス1300に接続されることができる。そのようなネットワークの例は、インターネット、イントラネット、ローカルエリアネットワーク、モバイル通信ネットワーク、およびこれらの組み合わせを含むが、これらに限定されない。
ネットワークコントローラ1314は、ネットワークを介してデータを受信または送信する。上述されたネットワーク固有の例は、拡張デバイス1300の通信プロバイダにより提供されるワイヤレスネットワークを含み得る。一例では、ネットワークコントローラ1314は、インターネットと通信するために基地局を介して他のネットワークデバイスに接続され得るネットワークインターフェースコントローラ(NIC)を含む。一例では、ネットワークコントローラ1314は、ワイヤレスでインターネットと通信するための無線周波数(RF)モジュールとすることができる。ディスプレイは、たとえば、拡張デバイス1300のユーザインターフェースとユーザが対話するのを可能にするタッチスクリーン液晶ディスプレイ(LCD)とすることができる。
いくつかの任意選択の実施形態では、図13で上記に示された拡張デバイス1300は、(回路を含む)ハードウェアコンポーネント、(コンピュータ可読媒体に記憶されたコンピュータコードを含む)ソフトウェアコンポーネント、またはハードウェアコンポーネントとソフトウェアコンポーネントの両方の組み合わせを含み得る。図13は、例のうち特定の例の一例にすぎず、上述された拡張デバイス1300に存在し得るコンポーネントのタイプを示すことが意図されている。
いくつかの実施形態では、図13で上記に示された拡張デバイス1300は、タッチディスプレイ(「タッチスクリーン」または「タッチパネル」とも呼ばれる)を有する。いくつかの実施形態では、図13で上記に示された拡張デバイス1300は、グラフィックユーザインターフェース(GUI)を有し、ユーザは、そのタッチセンサ式表面に指および/またはジェスチャで触れることによってGUIと対話することができる。
本明細書での人間とコンピュータの対話は、ウェブページの作成、描画、文書処理、電子文書の作成、ゲームのプレイ、ビデオ会議、インスタントメッセージング、電子メールの送受信、会話インターフェース、デジタルビデオの再生、デジタル音楽の再生、および/またはウェブサーフィンなどの対話を含む。上述された人間とコンピュータの対話機能を実行するための実行可能な命令は、1つまたは複数のプロセッサ実行可能コンピュータプログラム製品または可読記憶媒体に構成/記憶される。
この実施形態では、拡張デバイス1300は、本出願における分配デバイスのネットワークアクセス状況を監視するための方法における以下のステップのプログラムコードを実行することができる。すなわち、拡張デバイスが、ローカルトランスポートレイヤセキュリティプロトコルを開始して、ホストにより呼び出されたインターフェースに従ってタスクを処理する。トランスポートレイヤセキュリティプロトコルがタスクを処理した後、拡張デバイスはネットワークプロトコル処理ユニット(たとえばTCP/IP処理ユニット)を使用して、処理結果をデータメッセージとしてカプセル化する。拡張デバイスに配備されたネットワークコントローラが、カプセル化されたデータメッセージを送出する。
任意選択で、上記のプロセッサが以下のステップのプログラムコードをさらに実行してよい:すなわち、拡張デバイスが、ローカルトランスポートレイヤセキュリティプロトコルを開始して、ホストにより呼び出されたインターフェースに従ってタスクを処理する。トランスポートレイヤセキュリティプロトコルがタスクを処理した後、拡張デバイスはネットワークプロトコル処理ユニット(たとえばTCP/IP処理ユニット)を使用して、処理結果をデータメッセージとしてカプセル化する。拡張デバイスに配備されたネットワークコントローラが、カプセル化されたデータメッセージを送出する。
任意選択で、上記のプロセッサは、以下のステップのプログラムコードをさらに実行してよい:すなわち、ホストがタスクを開始し、ホストのアプリケーションは、拡張デバイスのトランスポートレイヤセキュリティプロトコルのインターフェースを呼び出し、したがって、拡張デバイスは、トランスポートレイヤセキュリティプロトコルアルゴリズム、ネットワーク(TCP/IP)プロトコルカプセル化、および下位のネットワークプロトコルスタックの機能を実行するようになる。
任意選択で、上記のプロセッサは、以下のステップのプログラムコードをさらに実行してよい:すなわち、トランスポートレイヤセキュリティプロトコルがタスクを処理する必要があるかどうかを決定し、必要である場合、タスクをアービトレーションし、タスクを処理のためにアルゴリズムアクセラレーションユニットに送信し、次いでタスクの処理結果を取得する。任意選択で、上記のプロセッサは、以下のステップのプログラムコードをさらに実行してよい:すなわち、ネットワーク(TCP/IP)プロトコル処理ユニットが処理結果をカプセル化し、カプセル化結果をネットワークコントローラに対し構成する。
任意選択で、上記のプロセッサは、以下のステップのプログラムコードをさらに実行してよい:すなわち、拡張デバイス上で、ソフトウェアスタックがトランスポートレイヤセキュリティプロトコルのサービスを実行するように構成され、トランスポートレイヤセキュリティプロトコルのエンジンユニットが暗号化および復号アルゴリズムのオフロードを行うように構成され、ネットワーク(TCP/IP)プロトコルのハードウェアアクセラレーション処理がTCPオフロードエンジン(TOE)を介して実行される。
任意選択で、上記のプロセッサは、以下のステップのプログラムコードをさらに実行してよい:すなわち、TCPオフロードエンジン(TOE)が拡張デバイス内に存在するかどうかを決定し、それが存在する場合、TCPオフロードエンジン(TOE)がネットワーク(TCP/IP)プロトコルのハードウェアアクセラレーション処理を実行するように構成される。任意選択で、上記のプロセッサは、以下のステップのプログラムコードをさらに実行してよい:すなわち、TCPオフロードエンジンが存在しない場合、拡張デバイスのリソース使用が予め決定された閾値を超えているかどうかを決定し、超えている場合、ロードバランシングスケジューリングモジュールが、トラフィックの一部を処理のためにホストへバイパスするように構成される。
任意選択で、上記のプロセッサは、以下のステップのプログラムコードをさらに実行してよい:すなわち、拡張デバイスがデータメッセージを受信し、ローカルネットワークコントローラを使用してデータメッセージをパースのためにネットワークプロトコル処理ユニット(たとえばTCP/IP処理ユニット)に送信し、拡張デバイスはローカルトランスポートレイヤセキュリティプロトコルを使用してパース結果を処理し、拡張デバイスは処理結果をホストにアップロードする。
任意選択で、上記のプロセッサは、以下のステップのプログラムコードをさらに実行してよい:すなわち、パース結果におけるデータが暗号化されているかどうかを決定し、パース結果におけるデータが暗号化されていない場合、パース結果をホストに直接アップロードする。パース結果におけるデータが暗号化されている場合、ローカルトランスポートレイヤセキュリティプロトコルを使用してパース結果を処理するステップを行う。
任意選択で、上記のプロセッサは、以下のステップのプログラムコードをさらに実行してよい:すなわち、トランスポートレイヤセキュリティプロトコルレイヤがパース結果を処理して処理結果を取得し、処理結果をアービトレーションし、暗号化および復号処理のために対応するアルゴリズムアクセラレーションユニットに送信して、復号結果を取得する。
任意選択で、上記のプロセッサは、以下のステップのプログラムコードをさらに実行してよい:すなわち、拡張デバイス内にTCPオフロードエンジン(TOE)が存在するかどうかを決定し、それが存在する場合、TCPオフロードエンジン(TOE)を使用してネットワークプロトコル処理ユニット(たとえばTCP/IP処理ユニット)のハードウェアアクセラレーション処理を行い、プロセッサのメモリ領域にデータメッセージを記憶する。
任意選択で、上記のプロセッサは、以下のステップのプログラムコードをさらに実行してよい:すなわち、拡張デバイスのプロセッサは、パース結果が処理のためにトランスポートレイヤセキュリティプロトコルのセキュアソケットレイヤに送信される必要があるかどうかを決定し、それが必要である場合、トランスポートレイヤセキュリティプロトコルのセキュアソケットレイヤを使用してパース結果を処理する。それが必要でない場合、ホストにバイパスしてパース結果を処理する。
任意選択で、上記のプロセッサは、以下のステップのプログラムコードをさらに実行してよい:すなわち、トランスポートレイヤセキュリティプロトコルのセキュアソケットレイヤを使用してパース結果を処理するプロセスにおいて、TCPオフロードエンジンが、ドライバの呼び出しを介してトランスポートレイヤ暗号化デバイスを使用することによってデータを暗号化および復号し、暗号化および復号結果が予め決定された条件を満たす場合、ホストにアップロードする。
任意選択で、上記のプロセッサは、以下のステップのプログラムコードをさらに実行してよい:すなわち、トランスポートレイヤセキュリティプロトコルのセキュアソケットレイヤを使用してパース結果を処理するプロセスにおいて、TCPオフロードエンジンが、ドライバの呼び出しを介してトランスポートレイヤ暗号化デバイスを使用することによってデータを復号し、復号結果のタイプおよび宛先アドレスに応じて復号結果をプロセッサ上のアプリケーションにアップロードするか、またはホストバスを介してホストにアップロードする。
任意選択で、上記のプロセッサは、以下のステップのプログラムコードをさらに実行してよい:すなわち、それが存在しない場合、プロセッサのメモリ領域にデータメッセージを記憶し、またはデータメッセージを処理のためにホストにバイパスする。任意選択で、上記のプロセッサは、以下のステップのプログラムコードをさらに実行してよい:すなわち、プロセッサは、データメッセージに対してプロトコルスタック処理を行う。TLSオフロードを行う必要がある場合、復号処理のためにデータメッセージをセキュアソケットレイヤ(SSL)に送信し、トランスポートレイヤセキュリティプロトコルを呼び出してハードウェアアクセラレーションを達成する。
任意選択で、上記のプロセッサは、以下のステップのプログラムコードをさらに実行してよい:すなわち、TLSオフロードを行う必要がない場合、復号結果のタイプおよび宛先アドレスに応じて復号結果をプロセッサ上のアプリケーションにアップロードするか、またはホストバスを介してホストにアップロードする。
図13に示されている拡張デバイス1300は、スマートフォン(Android携帯電話、iOS携帯電話など)、タブレットコンピュータ、パームコンピュータ、またはモバイルインターネットデバイス(Mobile Internet Device、MID)、PAD、および他の端末デバイスとすることもできる。図13は、上記の電子デバイスの構造を限定するものではない。たとえば、拡張デバイス1300は、図13に示されるよりも多いまたは少ないコンポーネント(たとえば、ネットワークインターフェース、ディスプレイデバイスなど)を含んでもよく、または図13に示されるものとは異なる構成を有してもよい。
上記の実施形態のステップのすべてまたは一部は、端末デバイスに関係付けられたハードウェアに命令するプログラムによって達成され得る。プログラムは、コンピュータ可読記憶媒体に記憶されることができ、記憶媒体は、フラッシュディスク、読み取り専用メモリ(ROM)、ランダムアクセスメモリ(RAM)、磁気ディスク、または光ディスクを含み得る。
本出願の実施形態は記憶媒体をさらに提供する。任意選択で、実施形態において、記憶媒体は、上記の実施形態により提供されるネットワークデバイスのネットワークアクセス状況を監視するための方法によって実行されるプログラムコードを保存するために使用されてよく、記憶媒体は、プログラムを実行するプロセス中に制御される。デバイスは、任意の実施形態の分配ネットワークデバイスのネットワークアクセス状況を監視する任意選択のまたは好ましい方法を実行する。
任意選択で、この実施形態では、上記の記憶媒体は、コンピュータネットワークにおけるモバイル端末グループの任意の1つのモバイルデバイスに、またはモバイル端末グループの任意の1つのモバイルデバイスに配置され得る。任意選択で、実施形態において、記憶媒体は、以下のステップを実行するためのプログラムコードを記憶するように構成される:すなわち、拡張デバイスが、ローカルトランスポートレイヤセキュリティプロトコルを開始して、ホストにより呼び出されたインターフェースに従ってタスクを処理し、トランスポートレイヤセキュリティプロトコルがタスクを処理した後、拡張デバイスはネットワークプロトコル処理ユニット(たとえばTCP/IP処理ユニット)を使用して、処理結果をデータメッセージとしてカプセル化し、拡張デバイスに配備されたネットワークコントローラが、カプセル化されたデータメッセージを送出する。
任意選択で、実施形態において、記憶媒体は、以下のステップを実行するためのプログラムコードを記憶するように構成される:すなわち、ホストがタスクを開始し、ホストのアプリケーションは、拡張デバイスのトランスポートレイヤセキュリティプロトコルのインターフェースを呼び出し、したがって、拡張デバイスは、トランスポートレイヤセキュリティプロトコルアルゴリズム、ネットワーク(TCP/IP)プロトコルカプセル化、および下位のネットワークプロトコルスタックの機能を実行するようになる。
任意選択で、実施形態において、記憶媒体は、以下のステップを実行するためのプログラムコードを記憶するように構成される:すなわち、トランスポートレイヤセキュリティプロトコルがタスクを処理する必要があるかどうかを決定する。必要である場合、タスクをアービトレーションし、タスクを処理のためにアルゴリズムアクセラレーションユニットに送信し、次いでタスクの処理結果を取得する。任意選択で、実施形態において、記憶媒体は、以下のステップを実行するためのプログラムコードを記憶するように構成される:すなわち、ネットワーク(TCP/IP)プロトコル処理ユニットが処理結果をカプセル化し、カプセル化結果をネットワークコントローラに対し構成する。
任意選択で、実施形態において、記憶媒体は、以下のステップを実行するためのプログラムコードを記憶するように構成される:すなわち、拡張デバイス上で、ソフトウェアスタックがトランスポートレイヤセキュリティプロトコルのサービスを実行するように構成され、トランスポートレイヤセキュリティプロトコルのエンジンユニットが暗号化および復号アルゴリズムのオフロードを行うように構成され、ネットワーク(TCP/IP)プロトコルのハードウェアアクセラレーション処理がTCPオフロードエンジン(TOE)を介して実行される。
任意選択で、実施形態において、記憶媒体は、以下のステップを実行するためのプログラムコードを記憶するように構成される:すなわち、TCPオフロードエンジン(TOE)が拡張デバイス内に存在するかどうかを決定する。それが存在する場合、TCPオフロードエンジン(TOE)がネットワーク(TCP/IP)プロトコルのハードウェアアクセラレーション処理を実行するように構成される。
任意選択で、実施形態において、記憶媒体は、以下のステップを実行するためのプログラムコードを記憶するように構成される:すなわち、TCPオフロードエンジンが存在しない場合、拡張デバイスのリソース使用が予め決定された閾値を超えているかどうかを決定する。超えている場合、ロードバランシングスケジューリングモジュールが、トラフィックの一部を処理のためにホストへバイパスするように構成される。
任意選択で、実施形態において、記憶媒体は、以下のステップを実行するためのプログラムコードを記憶するように構成される:すなわち、拡張デバイスがデータメッセージを受信し、ローカルネットワークコントローラを使用してデータメッセージをパースのためにネットワークプロトコル処理ユニット(たとえばTCP/IP処理ユニット)に送信する。拡張デバイスはローカルトランスポートレイヤセキュリティプロトコルを使用してパース結果を処理し、拡張デバイスは処理結果をホストにアップロードする。
任意選択で、実施形態において、記憶媒体は、以下のステップを実行するためのプログラムコードを記憶するように構成される:すなわち、パース結果におけるデータが暗号化されているかどうかを決定し、パース結果におけるデータが暗号化されていない場合、パース結果をホストに直接アップロードし、パース結果におけるデータが暗号化されている場合、ローカルトランスポートレイヤセキュリティプロトコルを使用してパース結果を処理するステップを行う。
任意選択で、実施形態において、記憶媒体は、以下のステップを実行するためのプログラムコードを記憶するように構成される:すなわち、トランスポートレイヤセキュリティプロトコルレイヤがパース結果を処理して処理結果を取得し、処理結果をアービトレーションし、暗号化および復号処理のために対応するアルゴリズムアクセラレーションユニットに送信して、復号結果を取得する。
任意選択で、実施形態において、記憶媒体は、以下のステップを実行するためのプログラムコードを記憶するように構成される:すなわち、拡張デバイス内にTCPオフロードエンジン(TOE)が存在するかどうかを決定し、それが存在する場合、TCPオフロードエンジン(TOE)を使用してネットワークプロトコル処理ユニット(たとえばTCP/IP処理ユニット)のハードウェアアクセラレーション処理を行い、プロセッサのメモリ領域にデータメッセージを記憶する。
任意選択で、実施形態において、記憶媒体は、以下のステップを実行するためのプログラムコードを記憶するように構成される:すなわち、拡張デバイスのプロセッサは、パース結果が処理のためにトランスポートレイヤセキュリティプロトコルのセキュアソケットレイヤに送信される必要があるかどうかを決定する。それが必要である場合、トランスポートレイヤセキュリティプロトコルのセキュアソケットレイヤを使用してパース結果を処理する。それが必要でない場合、ホストにバイパスしてパース結果を処理する。
任意選択で、実施形態において、記憶媒体は、以下のステップを実行するためのプログラムコードを記憶するように構成される:すなわち、トランスポートレイヤセキュリティプロトコルのセキュアソケットレイヤを使用してパース結果を処理するプロセスにおいて、TCPオフロードエンジンが、ドライバの呼び出しを介してトランスポートレイヤ暗号化デバイスを使用することによってデータを暗号化および復号し、暗号化および復号結果が予め決定された条件を満たす場合、ホストにアップロードする。
任意選択で、実施形態において、記憶媒体は、以下のステップを実行するためのプログラムコードを記憶するように構成される:すなわち、トランスポートレイヤセキュリティプロトコルのセキュアソケットレイヤを使用してパース結果を処理するプロセスにおいて、TCPオフロードエンジンが、ドライバの呼び出しを介してトランスポートレイヤ暗号化デバイスを使用することによってデータを復号し、復号結果のタイプおよび宛先アドレスに応じて復号結果をプロセッサ上のアプリケーションにアップロードするか、またはホストバスを介してホストにアップロードする。
任意選択で、実施形態において、記憶媒体は、以下のステップを実行するためのプログラムコードを記憶するように構成される:すなわち、それが存在しない場合、プロセッサのメモリ領域にデータメッセージを記憶し、またはデータメッセージを処理のためにホストにバイパスする。任意選択で、実施形態において、記憶媒体は、以下のステップを実行するためのプログラムコードを記憶するように構成される:すなわち、プロセッサは、データメッセージに対してプロトコルスタック処理を行う。TLSオフロードを行う必要がある場合、復号処理のためにデータメッセージをセキュアソケットレイヤ(SSL)に送信し、トランスポートレイヤセキュリティプロトコルを呼び出してハードウェアアクセラレーションを達成する。
任意選択で、実施形態において、記憶媒体は、以下のステップを実行するためのプログラムコードを記憶するように構成される:すなわち、TLSオフロードを行う必要がない場合、復号結果のタイプおよび宛先アドレスに応じて復号結果をプロセッサ上のアプリケーションにアップロードするか、またはホストバスを介してホストにアップロードする。
本出願の実施形態は、アルゴリズムをオフロードするためのシステムをさらに提供し、システムは、プロセッサおよびメモリを備え、メモリは、以下の処理ステップを処理するための命令をプロセッサに提供するためにプロセッサに結合される:すなわち、
拡張デバイスが、ローカルトランスポートレイヤセキュリティプロトコルを開始して、ホストにより呼び出されたインターフェースに従ってタスクを処理し、
トランスポートレイヤセキュリティプロトコルがタスクを処理した後、拡張デバイスはネットワークプロトコル処理ユニット(たとえばTCP/IP処理ユニット)を使用して、処理結果をデータメッセージとしてカプセル化し、
拡張デバイスに配備されたネットワークコントローラが、カプセル化されたデータメッセージを送出する。
上記から理解され得るように、本出願の上記の実施形態では、サーバホストによりウェブブラウザにデータを送信するプロセスにおいて、拡張デバイスは、ホストにより呼び出されたインターフェースに従ってローカルトランスポートレイヤセキュリティプロトコル(TLS/SSL)を開始して、データを送信するホストに関係付けられたタスクを処理し、トランスポートレイヤセキュリティプロトコル(TLS/SSL)が関係付けられたタスクを処理した後、拡張デバイス内のネットワークプロトコル処理ユニット(たとえばTCP/IP処理ユニット)が、データメッセージとして処理結果のTCP/IPカプセル化を行うためにさらに使用される。最後に、拡張デバイスに配備されたネットワークコントローラが、カプセル化されたデータメッセージを送出し、その結果、拡張カードがTLS/SSLプロトコルレイヤ下でほとんどすべてのプロセスを達成し、それにより、ホストに対する計算圧力を低減する。したがって、より多くのコンピューティングリソースがアプリケーションに提供され、セキュアなネットワークプロトコルにおける遅延およびスループットの技術的効果が、拡張カード上の並列計算カーネルによって保証され、それにより、サーバホスト上のリソース使用が依然として比較的大きいという従来技術で採用されていたローカルハードウェアオフロード解決策の技術的問題を解決する。
本出願の実施形態は、アルゴリズムをオフロードするためのシステムをさらに提供し、システムは、プロセッサおよびメモリを備え、メモリは、以下の処理ステップを処理するための命令をプロセッサに提供するためにプロセッサに結合される:すなわち、
拡張デバイスがデータメッセージを受信し、ローカルネットワークコントローラを使用してデータメッセージをパースのためにネットワークプロトコル処理ユニット(たとえばTCP/IP処理ユニット)に送信し、拡張デバイスはローカルトランスポートレイヤセキュリティプロトコルを使用してパース結果を処理し、拡張デバイスは処理結果をホストにアップロードする。
上記から理解され得るように、本出願の上記の実施形態では、サーバホストによりウェブブラウザから送信されたデータを受信するプロセスにおいて、拡張デバイスは、データメッセージを受信し、拡張デバイス内のネットワークプロトコル処理ユニット(たとえばTCP/IP処理ユニット)を使用することによってデータメッセージとして処理結果を用いてTCP/IPパースを行って、パース結果を取得し、拡張デバイスローカル送信レイヤセキュリティプロトコル(TLS/SSL)を使用してパース結果を処理し、処理結果をホスト(すなわちサーバホスト)にアップロードし、その結果、拡張カードがTLS/SSLプロトコルレイヤ下でほとんどすべてのプロセスを達成し、それにより、ホストに対する計算圧力を低減する。したがって、より多くの計算リソースがアプリケーションに提供され、セキュアなネットワークプロトコルにおける遅延およびスループットの技術的効果が、拡張カード上の並列計算カーネルによって保証され、それにより、サーバホスト上のリソース使用が依然として比較的大きいという従来技術で採用されていたローカルハードウェアオフロード解決策の技術的問題を解決する。
図14は、本発明の1つまたは複数の実施形態による、集積チップ1400の例を示すブロック図を示す。図14に示されるように、方法500、520、530、540、700、730、740、750、および770を実装することができる集積チップ1400は、ホストに結合された拡張インターフェース1410を含み、ホストは、アプリケーションを提供するように構成される。集積チップ1400はまた、ホストにより呼び出されたインターフェースに従ってタスクを処理するトランスポートレイヤセキュリティプロトコル処理ユニット1412と、トランスポートレイヤセキュリティプロトコル処理ユニットと通信し、データメッセージをカプセル化またはパースするネットワークプロトコル処理ユニット1414と、データメッセージを送信または受信するネットワークコントローラ1416とを含む。集積チップ1400は、埋め込み式にサーバホストにインストールされることができ、または様々なバスインターフェース(たとえばPCIeインターフェース)を介してサーバホストに接続されることができる。
上記から理解され得るように、本出願の上記の実施形態では、拡張インターフェース1410がサーバホストに結合されている。サーバホストによりウェブブラウザにデータを送信するプロセスにおいて、ホストにより呼び出されたインターフェースに従ってトランスポートレイヤセキュリティプロトコル処理ユニット1412が、データを送信するホストに関係付けられたタスクを処理する。
トランスポートレイヤセキュリティプロトコル(TLS/SSL)が関係付けられたタスクを処理した後、ネットワークプロトコル処理ユニット1414(たとえばTCP/IP処理ユニット)が、データメッセージとして処理結果のプロトコルカプセル化(たとえばTCP/IPカプセル化)を行うためにさらに使用される。最後に、ネットワークコントローラ1416がカプセル化されたデータメッセージを送出する。さらに、サーバホストによりウェブブラウザから送信されたデータを受信するプロセスにおいて、ネットワークコントローラ1416がデータメッセージを受信し、受信されたデータは、ネットワークプロトコル処理ユニット1414を使用することによってパースされ、パース結果は、次いでトランスポートレイヤセキュリティプロトコル処理ユニット1412によって処理され、処理結果は、次いで拡張インターフェース1410を介してホスト(すなわちサーバホスト)にアップロードされる。
このようにして、拡張カードがTLS/SSLプロトコルレイヤ下でほとんどすべてのプロセスを達成し、それにより、ホストに対する計算圧力を低減する。したがって、より多くの計算リソースがアプリケーションに提供され、セキュアなネットワークプロトコルにおける遅延およびスループットの技術的効果が、拡張カード上の並列計算カーネルによって保証され、それにより、サーバホスト上のリソース使用が依然として比較的大きいという従来技術で採用されていたローカルハードウェアオフロード解決策の技術的問題を解決する。
本出願の実施形態の順序番号は単に説明のためのものであり、実施形態の利点および欠点を表していない。本出願の上述された実施形態において、様々な実施形態の説明は異なる焦点を有し、特定の実施形態で詳述されていない部分については、他の実施形態の関係付けられた説明が参照され得る。
本出願によって提供される実施形態において、開示された技術的内容が他の方法で実装されてもよいことは理解されよう。上述された装置実施形態は単に概略である。たとえば、ユニットの分割は単に論理的機能分割である。実際の実装では別の分割方法があり得る。
たとえば、複数のユニットまたはコンポーネントが異なるシステムに組み合わされもしくは統合されてよく、またはいくつかの特徴が無視されることもしくは実行されないことが可能である。さらに、示されまたは論じられた結合または直接結合または通信接続は、いくつかのインターフェース、ユニット、またはモジュールを介する間接結合または通信接続であってもよく、それは電気接続または他の接続であってよい。
別個のコンポーネントとして説明されたユニットは、物理的に分離されても分離されなくてもよく、ユニットとして表示されたコンポーネントは、物理的ユニットであってもなくてもよく、すなわち、それらは、1つの場所に配置されても複数のネットワークユニットに分散されてもよい。ユニットの一部または全部は、特定の実施形態の解決策の目的を実現するための実際の必要に応じて選択され得る。
さらに、本出願の一実施形態における各機能ユニットは1つの処理ユニットに統合されてもよく、または各ユニットは物理的に別々に存在してもよく、2つ以上のユニットが1つのユニットに統合されてもよい。上記の統合されたユニットは、ハードウェアの形態またはソフトウェア機能ユニットの形態で実装され得る。
統合されたユニットは、ソフトウェア機能ユニットの形態で実装されてスタンドアロン製品として販売または使用される場合、コンピュータ可読記憶媒体に記憶され得る。そのような理解に基づいて、本出願の技術的解決策は、本質的にまたは先行技術に対する貢献において、技術的解決策の全部または一部は、記憶媒体に記憶されたソフトウェア製品の形態で具現化され得る。
本発明の様々な実施形態で説明されている方法のステップの全部または一部をコンピュータデバイス(パーソナルコンピュータ、サーバ、またはネットワークデバイスなどであり得る)に実行させるために、いくつかの命令が含まれる。上記の記憶媒体は、USBドライブ、読み取り専用メモリ(ROM)、ランダムアクセスメモリ(RAM)、リムーバブルハードディスク、磁気ディスク、および光ディスクなどを含む。
上記の説明は、本出願の好ましい実施形態のほんの少数であり、当業者は、本出願の保護の範囲内と見なされるべき本出願の原理から逸脱することなく、いくつかの改善および変更を行うこともできることに留意されたい。
Claims (20)
- メモリと、
ネットワークコントローラと、
前記メモリおよび前記ネットワークコントローラに結合された拡張プロセッサと
を備えた拡張デバイスであって、前記拡張プロセッサは、
外部バスを介してホストプロセッサで実行されているアプリケーションからトランスポートプロトコルに従ってフォーマットされたアプリケーション通信を受信して、受信されたデータを形成し、
前記受信されたデータが暗号化されるべきであるかどうかを判断し、
前記受信されたデータが暗号化されるべきである場合、セキュリティプロトコルを処理し、前記セキュリティプロトコルは、前記受信されたデータから暗号化されたデータを生成し、
前記トランスポートプロトコルのトランスポート層プロトコルスタックを処理して、前記受信されたデータが暗号化されるべきでない場合は前記受信されたデータから、前記受信されたデータが暗号化されるべきである場合は前記暗号化されたデータから発信IP通信を生成し、
内部バスを介して前記ネットワークコントローラに前記発信IP通信を送信し、前記ネットワークコントローラは、前記発信IP通信をフォーマットしてフォーマットされたIP通信を形成し、前記フォーマットされたIP通信をネットワークに送信する
ように構成された、拡張デバイス。 - 前記ネットワークコントローラは、前記ネットワークからデータパケットを受信し、前記データパケットから着信IP通信を形成し、前記着信IP通信を前記内部バスを介して前記拡張プロセッサに送信するように構成された、請求項1に記載の拡張デバイス。
- 前記拡張プロセッサは、
前記トランスポート層プロトコルスタックを処理して、前記着信IP通信から処理されたデータを生成し、
前記処理されたデータが暗号化されているかどうかを判断し、
前記処理されたデータが暗号化されている場合、前記セキュリティプロトコルを処理し、前記セキュリティプロトコルは、前記処理されたデータから復号されたデータを生成し、
前記処理されたデータが暗号化されていない場合、前記処理されたデータを前記外部バスを介して前記ホストプロセッサで実行されている前記アプリケーションに送信し、前記復号されたデータは、前記処理されたデータが暗号化されている場合、前記外部バスを介して前記ホストプロセッサで実行されているアプリケーションに送信する
ようにさらに構成された、請求項2に記載の拡張デバイス。 - 前記トランスポートプロトコルはTCP/IPおよびUDPのうちの1つを含む、請求項3に記載の拡張デバイス。
- 前記セキュリティプロトコルはTLS/SSLを含む、請求項3に記載の拡張デバイス。
- 前記拡張プロセッサは第1のカードに常駐し、前記ホストプロセッサは第2のカードに常駐する、請求項3に記載の拡張デバイス。
- 前記IP通信はIPデータグラムおよびUDPパケットのうちの1つを含む、請求項3に記載の拡張デバイス。
- 拡張デバイスを操作する方法であって、
外部バスを介して、ホストプロセッサ上で実行されているアプリケーションからトランスポートプロトコルに従ってフォーマットされたアプリケーション通信を受信して、受信されたデータを形成するステップと、
前記受信されたデータが暗号化されるべきであるかどうかを判断するステップと、
前記受信されたデータが暗号化されるべきである場合にセキュリティプロトコルを処理するステップであって、前記セキュリティプロトコルは前記受信されたデータから暗号化されたデータを生成する、ステップと、
前記トランスポートプロトコルのトランスポート層プロトコルスタックを処理して、前記受信されたデータが暗号化されるべきでない場合は前記受信されたデータから、前記受信されたデータが暗号化されるべきである場合は前記暗号化されたデータから発信IP通信を生成する、ステップと、
前記発信IP通信を内部バスを介してネットワークコントローラに送信するステップと、
前記発信IP通信をフォーマットしてフォーマットされたIP通信を形成し、前記フォーマットされたIP通信をネットワーク上に送信するステップと
を含む、方法。 - 前記ネットワークからデータパケットを受信し、前記データパケットから着信IP通信を形成し、前記着信IP通信を前記内部バスを介して拡張プロセッサに送信するステップをさらに含む、請求項8に記載の方法。
- 前記トランスポート層プロトコルスタックを処理して、前記着信IP通信から処理されたデータを生成するステップと、
前記処理されたデータが暗号化されているかどうかを判断するステップと、
前記処理されたデータが暗号化されている場合、前記セキュリティプロトコルを処理するステップであって、前記セキュリティプロトコルは前記処理されたデータから復号されたデータを生成する、ステップと、
前記処理されたデータが暗号化されていない場合、前記外部バスを介して前記ホストプロセッサ上で実行されている前記アプリケーションに前記処理されたデータを送信し、前記処理されたデータが暗号化されている場合、前記外部バスを介して前記ホストプロセッサ上で実行されている前記アプリケーションに前記復号されたデータを送信するステップと
をさらに含む、請求項9に記載の方法。 - 前記トランスポートプロトコルはTCP/IPおよびUDPのうちの1つを含む、請求項10に記載の拡張デバイス。
- 前記セキュリティプロトコルはTLS/SSLを含む、請求項10に記載の拡張デバイス。
- 前記拡張プロセッサは第1のカードに常駐し、前記ホストプロセッサは第2のカードに常駐する、請求項10に記載の拡張デバイス。
- 前記IP通信は、IPデータグラムおよびUDPパケットのうちの1つを含む、請求項10に記載の拡張デバイス。
- プロセッサによって実行されると、前記プロセッサに拡張デバイスを動作させる方法を実行させるプログラム命令が埋め込まれた、非一時的なコンピュータ可読記憶媒体であって、前記方法は、
外部バスを介して、ホストプロセッサ上で実行されているアプリケーションからトランスポートプロトコルに従ってフォーマットされたアプリケーション通信を受信して受信されたデータを形成するステップと、
前記受信されたデータが暗号化されるべきであるかどうかを判断するステップと、
前記受信されたデータが暗号化されるべきである場合、セキュリティプロトコルを処理するステップであって、前記セキュリティプロトコルは前記受信されたデータから暗号化されたデータを生成する、ステップと、
前記トランスポートプロトコルのトランスポート層プロトコルスタックを処理して、前記受信されたデータが暗号化されるべきでない場合は前記受信されたデータから、前記受信されたデータが暗号化されるべきである場合は前記暗号化されたデータから発信IP通信を生成するステップと、
前記発信IP通信を内部バスを介してネットワークコントローラに送信するステップと、
前記発信IP通信をフォーマットしてフォーマットされたIP通信を形成し、前記フォーマットされたIP通信をネットワーク上に送信するステップと
を含む、媒体。 - 前記ネットワークからデータパケットを受信するステップと、前記データパケットから着信IP通信を形成するステップと、前記着信IP通信を前記内部バスを介して拡張プロセッサに送信するステップとをさらに含む、請求項15に記載の媒体。
- 前記トランスポート層プロトコルスタックを処理して、前記着信IP通信から処理済みデータを生成するステップと、
前記処理されたデータが暗号化されているかどうかを判断するステップと、
前記処理されたデータが暗号化されている場合に前記セキュリティプロトコルを処理するステップであって、前記セキュリティプロトコルは前記処理されたデータから復号されたデータを生成する、ステップと、
前記処理されたデータが暗号化されていない場合、外部バスを介して前記ホストプロセッサで実行されている前記アプリケーションに前記処理されたデータを送信し、前記処理されたデータが暗号化されている場合、前記外部バスを介して前記ホストプロセッサ上で実行されているアプリケーションに前記復号されたデータを送信するステップと
をさらに含む、請求項16に記載の媒体。 - 前記トランスポートプロトコルはTCP/IPおよびUDPのうちの1つを含む、請求項10に記載の媒体。
- 前記セキュリティプロトコルはTLS/SSLを含む、請求項10に記載の媒体。
- 前記拡張プロセッサは第1のカードに常駐し、前記ホストプロセッサは第2のカードに常駐する、請求項10に記載の媒体。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201711015191.9A CN109714302B (zh) | 2017-10-25 | 2017-10-25 | 算法的卸载方法、装置和系统 |
CN201711015191.9 | 2017-10-25 | ||
PCT/US2018/057067 WO2019083977A1 (en) | 2017-10-25 | 2018-10-23 | METHOD, DEVICE, AND SYSTEM FOR DELIVERING ALGORITHMS |
Publications (1)
Publication Number | Publication Date |
---|---|
JP2021501407A true JP2021501407A (ja) | 2021-01-14 |
Family
ID=66170737
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2020523252A Pending JP2021501407A (ja) | 2017-10-25 | 2018-10-23 | アルゴリズムをオフロードするための方法、デバイス、およびシステム |
Country Status (6)
Country | Link |
---|---|
US (1) | US11171936B2 (ja) |
EP (1) | EP3701690B1 (ja) |
JP (1) | JP2021501407A (ja) |
CN (1) | CN109714302B (ja) |
TW (1) | TW201917623A (ja) |
WO (1) | WO2019083977A1 (ja) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2022533997A (ja) * | 2019-05-20 | 2022-07-27 | マイクロソフト テクノロジー ライセンシング,エルエルシー | Socおよびfpgaを有するサーバオフロードカード |
Families Citing this family (31)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11336625B2 (en) | 2018-03-16 | 2022-05-17 | Intel Corporation | Technologies for accelerated QUIC packet processing with hardware offloads |
CN110677250B (zh) | 2018-07-02 | 2022-09-02 | 阿里巴巴集团控股有限公司 | 密钥和证书分发方法、身份信息处理方法、设备、介质 |
CN110795774B (zh) * | 2018-08-02 | 2023-04-11 | 阿里巴巴集团控股有限公司 | 基于可信高速加密卡的度量方法、设备和系统 |
CN110795742B (zh) | 2018-08-02 | 2023-05-02 | 阿里巴巴集团控股有限公司 | 高速密码运算的度量处理方法、装置、存储介质及处理器 |
CN110874478B (zh) | 2018-08-29 | 2023-05-02 | 阿里巴巴集团控股有限公司 | 密钥处理方法及装置、存储介质和处理器 |
CN110958213B (zh) * | 2018-09-27 | 2021-10-22 | 华为技术有限公司 | 处理tcp报文的方法、toe组件以及网络设备 |
US20190199835A1 (en) * | 2018-11-28 | 2019-06-27 | Manasi Deval | Quick user datagram protocol (udp) internet connections (quic) packet offloading |
US11805109B1 (en) * | 2019-02-25 | 2023-10-31 | Amazon Technologies, Inc. | Data transfer encryption offloading using session pairs |
US20200236140A1 (en) * | 2019-04-16 | 2020-07-23 | Intel Corporation | Transport layer security offload to a network interface |
CN111988264A (zh) * | 2019-05-22 | 2020-11-24 | 阿里巴巴集团控股有限公司 | 区块链与网络系统、数据接收与发送方法及设备 |
CN113721840A (zh) * | 2019-10-18 | 2021-11-30 | 华为技术有限公司 | 数据访问方法、装置和第一计算设备 |
US11394700B2 (en) * | 2020-01-31 | 2022-07-19 | Pensando Systems Inc. | Proxy service through hardware acceleration using an IO device |
CN111245866B (zh) * | 2020-03-04 | 2021-09-14 | 深圳市龙信信息技术有限公司 | 基于硬件加速的以太网应用层协议控制系统及方法 |
US11934330B2 (en) | 2020-05-08 | 2024-03-19 | Intel Corporation | Memory allocation for distributed processing devices |
CN113778320A (zh) * | 2020-06-09 | 2021-12-10 | 华为技术有限公司 | 网卡以及网卡处理数据的方法 |
CN112055032B (zh) * | 2020-09-21 | 2022-05-17 | 迈普通信技术股份有限公司 | 一种报文处理方法、装置、电子设备及存储介质 |
US11709790B2 (en) * | 2021-02-24 | 2023-07-25 | Xilinx, Inc. | Spatial distribution in a 3D data processing unit |
CN112953967A (zh) * | 2021-03-30 | 2021-06-11 | 扬州万方电子技术有限责任公司 | 网络协议卸载装置和数据传输系统 |
CN115643037B (zh) * | 2021-07-20 | 2024-04-19 | 广州汽车集团股份有限公司 | 车载can总线通信方法、装置和系统 |
CN113709135B (zh) * | 2021-08-24 | 2023-02-07 | 杭州迪普科技股份有限公司 | Ssl流量审计采集系统与方法 |
US11861023B2 (en) | 2021-08-25 | 2024-01-02 | International Business Machines Corporation | Matching cryptographic computing resources to the predicted requirements for decrypting encrypted communications |
CN114238187B (zh) * | 2022-02-24 | 2022-04-29 | 苏州浪潮智能科技有限公司 | 一种基于fpga的全栈网卡任务处理系统 |
CN114640447A (zh) * | 2022-03-25 | 2022-06-17 | 广东浪潮智慧计算技术有限公司 | 一种数据包处理方法、智能网卡及存储介质 |
CN115118448B (zh) * | 2022-04-21 | 2023-09-01 | 腾讯科技(深圳)有限公司 | 数据处理方法、装置、设备及存储介质 |
CN115225690B (zh) * | 2022-06-22 | 2024-04-19 | 中科驭数(北京)科技有限公司 | 基于硬件协议栈的tcp长连接保活方法及装置 |
CN115473861B (zh) * | 2022-08-18 | 2023-11-03 | 珠海高凌信息科技股份有限公司 | 基于通信与计算分离的高性能处理系统和方法、存储介质 |
CN116032545B (zh) * | 2022-12-06 | 2024-03-22 | 北京中睿天下信息技术有限公司 | 一种ssl或tls流量多级过滤方法和系统 |
CN116232944B (zh) * | 2023-05-06 | 2023-08-04 | 珠海星云智联科技有限公司 | 用于传输层安全协议报文业务的方法、设备及介质 |
CN116996592B (zh) * | 2023-09-27 | 2023-12-22 | 网络通信与安全紫金山实验室 | 网卡、数据发送处理方法和数据接收处理方法 |
CN117615042A (zh) * | 2023-11-30 | 2024-02-27 | 中科驭数(北京)科技有限公司 | 数据通信方法、装置、计算机设备及存储介质 |
CN117749865B (zh) * | 2024-02-06 | 2024-08-16 | 苏州元脑智能科技有限公司 | 会话处理方法、系统、装置、设备及存储介质 |
Family Cites Families (40)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6226680B1 (en) * | 1997-10-14 | 2001-05-01 | Alacritech, Inc. | Intelligent network interface system method for protocol processing |
JP2000284865A (ja) | 1999-03-31 | 2000-10-13 | Fujitsu Ltd | 電源制御装置とそれを用いた情報処理装置 |
US7068772B1 (en) * | 2001-03-30 | 2006-06-27 | Accessline Communications Corporation | Economical call processing system and method, such as for providing one-number telecommunication services |
US7151831B2 (en) | 2001-06-06 | 2006-12-19 | Sony Corporation | Partial encryption and PID mapping |
US6983382B1 (en) * | 2001-07-06 | 2006-01-03 | Syrus Ziai | Method and circuit to accelerate secure socket layer (SSL) process |
US7631107B2 (en) | 2002-06-11 | 2009-12-08 | Pandya Ashish A | Runtime adaptable protocol processor |
WO2004021150A2 (en) * | 2002-08-30 | 2004-03-11 | Broadcom Corporation | System and method for tpc/ip offload independent of bandwidth delay product |
US7685254B2 (en) | 2003-06-10 | 2010-03-23 | Pandya Ashish A | Runtime adaptable search processor |
US7590736B2 (en) | 2003-06-30 | 2009-09-15 | Microsoft Corporation | Flexible network load balancing |
US7606929B2 (en) | 2003-06-30 | 2009-10-20 | Microsoft Corporation | Network load balancing with connection manipulation |
US7567504B2 (en) | 2003-06-30 | 2009-07-28 | Microsoft Corporation | Network load balancing with traffic routing |
US7613822B2 (en) | 2003-06-30 | 2009-11-03 | Microsoft Corporation | Network load balancing with session information |
US7636372B2 (en) * | 2003-12-19 | 2009-12-22 | Broadcom Corporation | Method and system for providing smart offload and upload |
US7783880B2 (en) * | 2004-11-12 | 2010-08-24 | Microsoft Corporation | Method and apparatus for secure internet protocol (IPSEC) offloading with integrated host protocol stack management |
CN1809057A (zh) * | 2005-01-18 | 2006-07-26 | 英业达股份有限公司 | 通过装置卸载减轻主机负载的系统及其方法 |
US8713180B2 (en) * | 2005-06-22 | 2014-04-29 | Cisco Technology, Inc. | Zero-copy network and file offload for web and application servers |
US7430220B2 (en) * | 2005-07-29 | 2008-09-30 | International Business Machines Corporation | System load based dynamic segmentation for network interface cards |
US8447898B2 (en) * | 2005-10-28 | 2013-05-21 | Microsoft Corporation | Task offload to a peripheral device |
US20070266233A1 (en) * | 2006-05-12 | 2007-11-15 | Mahesh Jethanandani | Method and apparatus to minimize latency by avoiding small tcp segments in a ssl offload environment |
US8103785B2 (en) | 2007-12-03 | 2012-01-24 | Seafire Micros, Inc. | Network acceleration techniques |
US8990380B2 (en) | 2010-08-12 | 2015-03-24 | Citrix Systems, Inc. | Systems and methods for quality of service of ICA published applications |
EP2659624B1 (en) | 2010-12-28 | 2017-04-12 | Citrix Systems Inc. | Systems and methods for vlan tagging via cloud bridge |
US9589029B2 (en) | 2010-12-28 | 2017-03-07 | Citrix Systems, Inc. | Systems and methods for database proxy request switching |
WO2012091948A2 (en) | 2010-12-28 | 2012-07-05 | Citrix Systems, Inc. | Systems and methods for database proxy request switching |
CN102143218B (zh) * | 2011-01-24 | 2014-07-02 | 上海红神信息技术有限公司 | web接入云体系结构及接入方法 |
EP2705632B8 (en) | 2011-05-06 | 2018-09-12 | Citrix Systems, Inc. | Systems and methods for cloud bridging between public and private clouds |
US9130864B2 (en) | 2011-06-27 | 2015-09-08 | Citrix Systems, Inc. | Prioritizing classes of network traffic to provide a predetermined quality of service |
US8804740B2 (en) | 2012-06-15 | 2014-08-12 | Citrix Systems, Inc. | Systems and methods for reassembly of packets distributed across a cluster |
US9866475B2 (en) | 2012-06-15 | 2018-01-09 | Citrix Systems, Inc. | Systems and methods for forwarding traffic in a cluster network |
EP2909716B1 (en) | 2012-10-16 | 2021-02-17 | Citrix Systems, Inc. | Systems and methods for bridging between public and private clouds through multi-level api integration |
US10044612B2 (en) | 2013-11-06 | 2018-08-07 | Citrix Systems, Inc. | Systems and methods for port allocation |
WO2015171469A1 (en) | 2014-05-04 | 2015-11-12 | Midfin Systems Inc. | Constructing and operating high-performance unified compute infrastructure across geo-distributed datacenters |
US20150341285A1 (en) | 2014-05-22 | 2015-11-26 | Akamai Technologies, Inc. | Metadata transport between mobile network core and external data network |
US9948505B2 (en) | 2015-05-05 | 2018-04-17 | Citrix Systems, Inc. | Systems and methods for integrating a device with a software-defined networking controller |
IL238690B (en) | 2015-05-07 | 2019-07-31 | Mellanox Technologies Ltd | Network-based computational accelerator |
US10095558B2 (en) * | 2015-05-26 | 2018-10-09 | Cavium, Inc. | Systems and methods for offloading inline SSL processing to an embedded networking device |
US10057084B2 (en) | 2015-10-06 | 2018-08-21 | Citrix Systems, Inc. | Systems and methods of extending on premise network into the cloud |
US10116466B2 (en) | 2015-12-10 | 2018-10-30 | Vmware, Inc. | Transport protocol task offload emulation to detect offload segments for communication with a private network |
US10237187B2 (en) | 2016-04-29 | 2019-03-19 | Citrix Systems, Inc. | System and method for service chain load balancing |
US10225239B2 (en) | 2016-09-29 | 2019-03-05 | Chelsio Communications, Inc. | Method for in-line TLS/SSL cleartext encryption and authentication |
-
2017
- 2017-10-25 CN CN201711015191.9A patent/CN109714302B/zh active Active
-
2018
- 2018-08-22 TW TW107129270A patent/TW201917623A/zh unknown
- 2018-10-23 JP JP2020523252A patent/JP2021501407A/ja active Pending
- 2018-10-23 US US16/168,507 patent/US11171936B2/en active Active
- 2018-10-23 EP EP18870198.1A patent/EP3701690B1/en active Active
- 2018-10-23 WO PCT/US2018/057067 patent/WO2019083977A1/en unknown
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2022533997A (ja) * | 2019-05-20 | 2022-07-27 | マイクロソフト テクノロジー ライセンシング,エルエルシー | Socおよびfpgaを有するサーバオフロードカード |
JP7502338B2 (ja) | 2019-05-20 | 2024-06-18 | マイクロソフト テクノロジー ライセンシング,エルエルシー | Socおよびfpgaを有するサーバオフロードカード |
Also Published As
Publication number | Publication date |
---|---|
EP3701690A4 (en) | 2021-07-07 |
TW201917623A (zh) | 2019-05-01 |
WO2019083977A1 (en) | 2019-05-02 |
CN109714302B (zh) | 2022-06-14 |
US20190124054A1 (en) | 2019-04-25 |
EP3701690B1 (en) | 2024-04-03 |
EP3701690A1 (en) | 2020-09-02 |
CN109714302A (zh) | 2019-05-03 |
US11171936B2 (en) | 2021-11-09 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
EP3701690B1 (en) | Method, device, and system for offloading algorithms | |
EP3603001B1 (en) | Hardware-accelerated payload filtering in secure communication | |
US10785020B2 (en) | Hardware offload for QUIC connections | |
CN108989194B (zh) | 分布式IPSec网关 | |
US11757973B2 (en) | Technologies for accelerated HTTP processing with hardware acceleration | |
US11140162B2 (en) | Response method and system in virtual network computing authentication, and proxy server | |
US9027129B1 (en) | Techniques for protecting against denial of service attacks | |
US11777865B2 (en) | Discovery and adjustment of path maximum transmission unit | |
JP2019528604A (ja) | 仮想マルチパスデータトランスポートのためのシステム及び方法 | |
Gomes et al. | Cute mote, a customizable and trustable end-device for the internet of things | |
KR20200023485A (ko) | 프록시 기반 네트워크 통신들에서의 제어 데이터의 전송 | |
US11979457B2 (en) | Managing network services using multipath protocols | |
EP4351086A1 (en) | Access control method, access control system and related device | |
WO2010023951A1 (ja) | セキュア通信装置、セキュア通信方法及びプログラム | |
CN112395040B (zh) | 内存数据传输方法、系统及服务器 | |
CN107343001B (zh) | 数据处理方法及装置 | |
JP2004328359A (ja) | パケット処理装置 | |
US20240259348A1 (en) | Directed isolated network connectivity | |
US20200097311A1 (en) | Method and systems for administering virtual machines to client devices | |
Hooda et al. | A new approach to design programmable secure network interface card | |
CN114500399A (zh) | 数据传输方法、设备、介质和产品 |