JP2003333076A - ネットワークスタックをオフロードする方法 - Google Patents

ネットワークスタックをオフロードする方法

Info

Publication number
JP2003333076A
JP2003333076A JP2003124294A JP2003124294A JP2003333076A JP 2003333076 A JP2003333076 A JP 2003333076A JP 2003124294 A JP2003124294 A JP 2003124294A JP 2003124294 A JP2003124294 A JP 2003124294A JP 2003333076 A JP2003333076 A JP 2003333076A
Authority
JP
Japan
Prior art keywords
layer
state
peripheral device
network
offload
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.)
Granted
Application number
JP2003124294A
Other languages
English (en)
Other versions
JP4327496B2 (ja
Inventor
James Pinkerton
ピンカートン ジェームズ
Abolade Gbadegesin
グバデゲシン アボラデ
Sanjay Kaniyar
カニヤー サンジャイ
N K Srinivas
ケー スリニバス エヌ
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Microsoft Corp
Original Assignee
Microsoft Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Microsoft Corp filed Critical Microsoft Corp
Publication of JP2003333076A publication Critical patent/JP2003333076A/ja
Application granted granted Critical
Publication of JP4327496B2 publication Critical patent/JP4327496B2/ja
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/34Network arrangements or protocols for supporting network services or applications involving the movement of software or configuration parameters 
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L69/00Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
    • H04L69/16Implementation or adaptation of Internet protocol [IP], of transmission control protocol [TCP] or of user datagram protocol [UDP]
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L69/00Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
    • H04L69/16Implementation or adaptation of Internet protocol [IP], of transmission control protocol [TCP] or of user datagram protocol [UDP]
    • H04L69/161Implementation details of TCP/IP or UDP/IP stack architecture; Specification of modified or new header fields
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L69/00Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
    • H04L69/16Implementation or adaptation of Internet protocol [IP], of transmission control protocol [TCP] or of user datagram protocol [UDP]
    • H04L69/161Implementation details of TCP/IP or UDP/IP stack architecture; Specification of modified or new header fields
    • H04L69/162Implementation details of TCP/IP or UDP/IP stack architecture; Specification of modified or new header fields involving adaptations of sockets based mechanisms
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L69/00Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
    • H04L69/16Implementation or adaptation of Internet protocol [IP], of transmission control protocol [TCP] or of user datagram protocol [UDP]
    • H04L69/165Combined use of TCP and UDP protocols; selection criteria therefor
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/40Network security protocols

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Computer Security & Cryptography (AREA)
  • Computer And Data Communications (AREA)
  • Data Exchanges In Wide-Area Networks (AREA)
  • Pile Receivers (AREA)

Abstract

(57)【要約】 【課題】 ネットワークスタック接続をオフロードする
方法を提供すること。 【解決手段】 ネットワークスタック接続をオフロード
する要求を、スタックを介して周辺デバイスに送る。こ
の要求は、スタック中の各ソフトウェア層からのリソー
ス要件リストを含む。デバイスは、リストについてリソ
ースを割り振り、デバイスと通信するためのハンドルを
各ソフトウェア層に送る。各層の状態がデバイスに送ら
れる。状態は、定数、CPUが扱うキャッシュされる変
数、またはデバイスが扱う委任される変数として分類さ
れる、状態変数を含む。

Description

【発明の詳細な説明】
【0001】
【発明の属する技術分野】本発明は一般に、コンピュー
タシステムの効率、速度、および/またはスループット
を向上させる方法に関し、より詳細には、通常ならホス
トプロセッサによって実施されるコンピューティングタ
スクを特定のハードウェアコンポーネントにオフロード
する(offloading)方法に関する。
【0002】
【従来の技術】オペレーティングシステム、アプリケー
ションソフトウェア、ネットワーキング、ネットワーク
化通信などの複雑さおよび精巧さは、劇的な速度で増大
し続けている。複雑化および精巧化の結果の1つとし
て、アプリケーションおよびシステムの機能の増加があ
る。この機能増加により、増加したシステム機能および
アプリケーション機能を実行するためにCPUが実施し
なければならない義務が追加されるせいで、しばしばC
PUオーバーヘッドが増大する。
【0003】CPUオーバーヘッドの増大が容易にわか
る領域の1つはネットワーク化アプリケーションの領域
であり、この領域では、高帯域幅メディアが増加してい
るためにネットワーク速度が上昇している。ネットワー
ク速度はしばしば、ホストコンピュータのCPUプロセ
ッサ速度およびメモリ帯域幅能力に匹敵し、ますますそ
れを超過している。これらのネットワーク化アプリケー
ションは、7層ISOモデルやWindows(登録商
標)オペレーティングシステムによって使用される階層
モデルなど、ほとんどのオペレーティングシステムによ
って階層アーキテクチャが使用されるせいで、さらにホ
ストプロセッサに負担を課す。周知のように、このよう
なモデルは、ネットワークへの物理接続とエンドユーザ
アプリケーションとの間のデータフローを記述するのに
使用される。データビットをネットワークケーブル上に
配置するなどの最も基本的な機能は下層で実施され、ア
プリケーションの詳細に伴う機能は上層で実施される。
本質的に各層の目的は、サービスが実際にどのように実
装されるかに関する詳細を次に高い層から見えないよう
にして、次に高い層にサービスを提供することである。
各層は、それぞれが他のコンピュータ上の同じ層と通信
していると信じるような形で抽象化される。
【0004】データパケットが各層間を進む中でデータ
パケットに対して実施される様々な機能は、ソフトウェ
ア集約的である可能性があり、かなりの量のCPUプロ
セッサリソースおよびメモリリソースを必要とすること
が多い。例えば、様々な層でパケットに対して実施され
るいくつかの機能は、パケットチェックサム計算および
検証、データの暗号化および復号(例えばSSL暗号化
やIP Security暗号化)、メッセージダイジ
ェスト計算、TCPセグメンテーション、TCP再送お
よび肯定応答(ACK)処理、サービス拒否攻撃から守
るためのパケットフィルタリング、ユーザデータグラム
プロトコル(UDP)パケットフラグメンテーションな
ど、非常にCPU集約的である。これらの各機能が実施
されるとき、その結果CPUに求められる需要は、コン
ピュータシステム全体のスループットおよび性能に大き
く影響する可能性がある。
【0005】CPUリソースに対する需要は増大してい
るものの、ネットワークインタフェースカード(NI
C)などのコンピュータハードウェア周辺装置の能力お
よびスループットもまた増大している。これらの周辺装
置には、通常ならCPUによって実施されるタスクおよ
び機能の多くを実施することのできる専用プロセッサお
よびメモリが装備されることが多い。
【0006】コンピュータ産業はこの能力を認識し、従
来はCPUによって実施されていたCPU集約的なタス
クおよび機能をオフロードする方法を開発した。例え
ば、周辺デバイスに照会し、集約的なタスクおよび機能
を実施できる周辺デバイスに特定のプロセッサタスクを
オフロードする解決法が提供されている(例えば、本願
と同じくAnand他に譲渡された特許文献1、200
0年9月7日出願の米国特許出願第09/657510
号明細書「Method and Computer Program Product for
Offloading Processing Tasks from Software to Hardw
are」、2000年11月29日出願の米国特許出願第
09/726082号明細書「Method andComputer Pro
gram Product for Offloading Processing Tasks from
Softwareto Hardware」参照)。通常オフロードされる
特定のタスクには、TCP(伝送制御プロトコル)およ
び/またはIP(インターネットプロトコル)チェック
サム計算、LSO(large send offlo
ad)などのTCPセグメンテーション、セキュアイン
ターネットプロトコル(IPSEC)暗号化および復号
が含まれる。
【0007】これらのオフロード機構は、ネットワーク
スタックに最小限の数の変更を加えるという副次的要件
を有する点で制限される。この副次的要件の結果、オフ
ロードがロングコードパスを有するという別の制限があ
る。というのは、周辺デバイスに到達するために、オフ
ロードされるタスクおよび機能がディセーブルにされた
状態でネットワークスタック全体がトラバースされるか
らである。さらに、ネットワークスタックとの統合がな
いという制限もある。ネットワークスタックが周辺デバ
イスに対して照会またはパラメータ設定するための明確
なインタフェースがなく、あるいは通知または能力変更
がある場合にネットワークスタックに通知するための周
辺デバイス用インタフェースがない。例えばLSO要求
の処理中にルートが変化した場合、この場合のフォール
バック機構は、スタックがタイムアウトを待機してLS
O要求を再送するようにするものである。
【0008】周辺デバイス製造業者が試みたもう1つの
手法は、TCP接続全体をコアスタックからネットワー
クインタフェースカード(NIC)にオフロードするも
のである。この手法は、プロプラエタリインタフェース
を使用してプロトコルスタック全体をバイパスするもの
であり、周辺デバイスがTCPメッセージ、IP(イン
ターネットプロトコル)メッセージ、ICMP(インタ
ーネット制御メッセージプロトコル)メッセージ、DN
S(ドメインネームサーバ)メッセージ、RIPメッセ
ージのすべてを扱う必要があり、NICが全部を処理す
る必要がある。さらにこの手法は、マルチホーム環境に
対処せず、ホストオペレーティングシステムのネットワ
ーク管理ユーティリティとすっきり統合しない。状態が
変化すると、オフロード接続は容易に失敗する可能性が
ある。
【0009】
【特許文献1】米国特許第6,141,705号明細書
【0010】
【発明が解決しようとする課題】本発明は、TCPベー
スのプロトコルスタックなどのネットワークスタック接
続をオフロードする方法を提供する。
【0011】
【課題を解決するための手段】複数のソフトウェア層を
有するNDIS(ネットワークドライバインタフェース
仕様)パスを介して周辺デバイスに通常なら送られるデ
ータを、スイッチ層から周辺デバイスへのパスにオフロ
ードする。ネットワークスタックおよび処理ユニットと
の密な同期が維持される。スタックをオフロードする要
求が、NDISパスを介して周辺デバイスに送られる。
この要求は、周辺デバイスがリソース割振りに必要な情
報を有することができるように、リソース要件のリスト
を含む。NDISパス中の各層は、その層のリソース要
件をリストに加える。周辺デバイスが要求を受け入れる
場合、周辺デバイスは、各ソフトウェア層にリソースを
割り振り、各ソフトウェア層が周辺デバイスと通信でき
るように、各ソフトウェア層にオフロードハンドルを送
る。
【0012】周辺デバイスがオフロードを受け入れたこ
とがソフトウェア層に通信されると、各ソフトウェア層
ごとの状態が周辺デバイスに送られる。あるいは、状態
はオフロード要求と共に送られ、状態に加えられた変化
だけが周辺デバイスに送られる。各状態は状態変数を有
し、各状態変数は、一定の変数、キャッシュされる変
数、または委任される(delegated)変数とし
て分類される。一定の変数は、プロトコルスタックがオ
フロードされている間は変化しない。キャッシュされる
変数はCPUが扱い、委任される変数は周辺デバイスが
扱う。
【0013】本発明はまた、オフロードされたネットワ
ーク接続を周辺デバイスからホストにアップロードする
方法も提供する。アップロードは、周辺デバイスおよび
スイッチ層のいずれかから開始される。アップロードが
開始されると、周辺デバイスはすべての未解決要求を完
了し、委任される状態をスイッチ層に渡す。委任される
状態がホストに受け入れられた後、周辺デバイスにおけ
る状態リソースは開放される。
【0014】オフロード転送またはアップロード転送の
間、更新(例えばARP更新またはRIP更新)が到着
する可能性がある。複数の更新メッセージが周辺デバイ
スによって受信される場合は、周辺デバイスが古いデー
タを使用しないように、シーケンス番号を用いて一番最
近の更新メッセージが使用されるようにする。
【0015】本発明の他の特徴および利点は、例示的な
実施形態に関する後続の詳細な説明から明らかになるで
あろう。この詳細な説明は、添付の図面を参照しながら
進める。
【0016】本発明の特徴については頭記の特許請求の
範囲に詳細に述べるが、本発明はその目的および利点と
共に、後続の詳細な説明を添付の図面と合わせて読めば
最もよく理解されるであろう。
【0017】
【発明の実施の形態】図面に目を向けると、本発明を適
したコンピューティング環境で実施する場合が示してあ
り、図面では、同じ参照番号は同じ要素を指す。必須で
はないが本発明は、パーソナルコンピュータによって実
行されるプログラムモジュールなどのコンピュータ実行
可能命令の一般的なコンテキストで述べる。一般にプロ
グラムモジュールは、特定のタスクを実施するかまたは
特定の抽象データ型を実装するルーチン、プログラム、
オブジェクト、コンポーネント、データ構造などを含
む。さらに、当業者なら理解するであろうが、この発明
的方法はハンドヘルドデバイス、マルチプロセッサシス
テム、マイクロプロセッサベースのまたはプログラム可
能な民生用電子機器、ネットワークPC、ミニコンピュ
ータ、メインフレームコンピュータ、ネットワーク化さ
れた周辺装置(例えばネットワーク化されたプリンタ)
など、他のコンピュータシステム構成でも実施すること
ができる。本発明は分散コンピューティング環境で実施
することもでき、その場合、タスクは通信ネットワーク
を介してリンクされたリモート処理デバイスによって実
施される。分散コンピューティング環境では、プログラ
ムモジュールは、ローカルおよびリモートの両方のメモ
リ記憶デバイスに位置することができる。
【0018】図1に、本発明を実施できる適したコンピ
ューティングシステム環境100の例を示す。コンピュ
ーティングシステム環境100は、適したコンピューテ
ィング環境の一例にすぎず、本発明の使用範囲または機
能についてどんな制限を意味するものでもない。またコ
ンピューティング環境100は、この例示的な動作環境
100に示すコンポーネントのいずれか1つまたは組合
せに関してどんな依存も要件も有するものと解釈すべき
ではない。
【0019】本発明は、その他多くの汎用または専用コ
ンピューティングシステム環境または構成でも動作す
る。本発明で使用するのに適する可能性のある周知のコ
ンピューティングシステム、環境、および/または構成
の例には、限定しないがパーソナルコンピュータ、サー
バコンピュータ、ハンドヘルドデバイスまたはラップト
ップデバイス、マルチプロセッサシステム、マイクロプ
ロセッサベースのシステム、セットトップボックス、プ
ログラム可能な民生用電子機器、ネットワークPC、ミ
ニコンピュータ、メインフレームコンピュータ、ネット
ワーク化された周辺装置(例えばネットワーク化された
プリンタ)や、これらのシステムまたはデバイスのいず
れかを含む分散コンピューティング環境などが含まれ
る。
【0020】本発明は、コンピュータによって実行され
るプログラムモジュールなどのコンピュータ実行可能命
令の一般的なコンテキストで述べることができる。一般
にプログラムモジュールは、特定のタスクを実施するか
特定の抽象データ型を実装するルーチン、プログラム、
オブジェクト、コンポーネント、データ構造などを含
む。本発明は分散コンピューティング環境で実施するこ
ともでき、その場合、タスクは通信ネットワークを介し
てリンクされたリモート処理デバイスによって実施され
る。分散コンピューティング環境では、プログラムモジ
ュールは、メモリ記憶装置を含めたローカルとリモート
の両方のコンピュータ記憶媒体に位置することができ
る。
【0021】図1を参照すると、本発明を実施するため
の例示的なシステムは、コンピュータ110の形をとる
汎用コンピューティングデバイスを含む。コンピュータ
110のコンポーネントには、限定しないが処理ユニッ
ト120と、システムメモリ130と、システムメモリ
を含めた様々なシステムコンポーネントを処理ユニット
120に結合するシステムバス121とを含めることが
できる。システムバス121は、様々なバスアーキテク
チャのいずれかを用いた、メモリバスまたはメモリコン
トローラ、周辺バス、クロスバー、スイッチトバスファ
ブリック、ローカルバスを含めて、いくつかのタイプの
バス構造のいずれかとすることができる。システムバス
121は、バスの階層とすることもできる。限定ではな
く例として、このようなアーキテクチャには、ISA
(Industry Standard Archit
ecture)バス、MCA(Micro Chann
elArchitecture)バス、EISA(En
hanced ISA)バス、VESA(Video
Electronics Standards Ass
ociate)ローカルバス、NC−NUMA(No
Cache Non−Uniform Memory
Access)アーキテクチャバス、CC−NUMA
(Cache−Coherent Non−Unifo
rm Memory Access)アーキテクチャバ
ス、およびメザニンバスとも呼ばれるPCI(Peri
pheral Component Intercon
nect)バスが含まれる。
【0022】コンピュータ110は通常、様々なコンピ
ュータ可読媒体を備える。コンピュータ可読媒体は、コ
ンピュータ110からアクセスできる任意の利用可能な
媒体とすることができ、揮発性および不揮発性、取外し
可能および取外し不可能の両方の媒体が含まれる。限定
ではなく例として、コンピュータ可読媒体には、コンピ
ュータ記憶媒体および通信媒体を含めることができる。
コンピュータ記憶媒体には、コンピュータ可読命令、デ
ータ構造、プログラムモジュール、または他のデータな
どの情報を記憶するための任意の方法または技術で実現
される、揮発性と不揮発性、取外し可能および取外し不
可能の両方の媒体が含まれる。コンピュータ記憶媒体に
は、限定しないがRAM、ROM、EEPROM、フラ
ッシュメモリまたは他のメモリ技術、CD−ROM、デ
ィジタル多用途ディスク(DVD)または他の光ディス
ク記憶装置、磁気カセット、磁気テープ、磁気ディスク
記憶装置または他の磁気記憶デバイスが含まれ、あるい
は、所望の情報を記憶するのに使用できコンピュータ1
10からアクセスできる他の任意の媒体が含まれる。通
信媒体は通常、搬送波や他のトランスポート機構など変
調されたデータ信号中に、コンピュータ可読命令、デー
タ構造、プログラムモジュール、または他のデータを組
み入れたものであり、任意の情報送達媒体が含まれる。
「変調されたデータ信号」という語は、信号中の情報が
符号化される形で1つまたは複数の特性が設定または変
更された信号を意味する。限定ではなく例として、通信
媒体には、配線式ネットワークや直接配線式接続などの
配線式媒体と、音響、無線周波、赤外線、その他の無線
媒体などの無線媒体とが含まれる。以上の任意の組合せ
もコンピュータ可読媒体の範囲に含めるべきである。
【0023】システムメモリ130は、読取り専用メモ
リ(ROM)131およびランダムアクセスメモリ(R
AM)132など、揮発性および/または不揮発性メモ
リの形のコンピュータ記憶媒体を含む。ROM131に
は通常、起動中などにコンピュータ110内の要素間で
情報を転送するのを助ける基本ルーチンを含むBIOS
(basic input/output syste
m)133が記憶されている。RAM132は通常、処
理ユニット120がすぐにアクセス可能な、かつ/また
は現在作用している、データおよび/またはプログラム
モジュールを含む。限定ではなく例として、図1には、
オペレーティングシステム134、アプリケーションプ
ログラム135、その他のプログラムモジュール13
6、およびプログラムデータ137を示す。
【0024】コンピュータ110はその他の取外し可能
/取外し不可能、揮発性/不揮発性コンピュータ記憶媒
体を備えることもできる。例にすぎないが図1には、取
外し不可能な不揮発性の磁気媒体に対して読み書きする
ハードディスクドライブ141と、取外し可能な不揮発
性の磁気ディスク152に対して読み書きする磁気ディ
スクドライブ151と、CD ROMや他の光媒体など
取外し可能な不揮発性の光ディスク156に対して読み
書きする光ディスクドライブ155を示す。この例示的
な動作環境で使用できるその他の取外し可能/取外し不
可能、揮発性/不揮発性コンピュータ記憶媒体には、限
定しないが磁気テープカセット、フラッシュメモリカー
ド、ディジタル多用途ディスク、ディジタルビデオテー
プ、半導体RAM、半導体ROMなどが含まれる。ハー
ドディスクドライブ141は通常、インタフェース14
0などの取外し不可能メモリインタフェースを介してシ
ステムバス121に接続され、磁気ディスクドライブ1
51および光ディスクドライブ155は通常、インタフ
ェース150などの取外し可能メモリインタフェースで
システムバス121に接続される。
【0025】以上に論じ図1に示した各ドライブおよび
それらに関連するコンピュータ記憶媒体は、コンピュー
タ可読命令、データ構造、プログラムモジュール、およ
び他のデータの記憶域をコンピュータ110に提供す
る。例えば図1には、ハードディスクドライブ141が
オペレーティングシステム144、アプリケーションプ
ログラム145、その他のプログラムモジュール14
6、およびプログラムデータ147を記憶しているのが
示されている。これらのコンポーネントは、オペレーテ
ィングシステム134、アプリケーションプログラム1
35、その他のプログラムモジュール136、およびプ
ログラムデータ137と同じ場合もあり異なる場合もあ
ることに留意されたい。ここでは、オペレーティングシ
ステム144、アプリケーションプログラム145、そ
の他のプログラムモジュール146、およびプログラム
データ147が少なくとも異なるコピーであることを示
すために、異なる番号を付してある。
【0026】ユーザは、キーボード162や、マウス、
トラックボール、タッチパッドと一般に呼ばれるポイン
ティングデバイス161などの入力デバイスを介して、
コンピュータ110にコマンドおよび情報を入力するこ
とができる。その他の入力デバイス(図示せず)には、
マイクロホン、ジョイスティック、ゲームパッド、衛星
放送受信アンテナ、スキャナ、ビデオ入力などを含める
ことができる。これらおよび他の入力デバイスは、シス
テムバスに結合されたユーザ入力インタフェース160
を介して処理ユニット120に接続されることが多い
が、パラレルポート、ゲームポート、またはユニバーサ
ルシリアルバス(「USB」)など、他のインタフェー
スおよびバス構造で接続されてもよい。モニタ191ま
たは他のタイプの表示デバイスもまた、ビデオインタフ
ェース190などのインタフェースを介してシステムバ
ス121に接続される。モニタに加えて、コンピュータ
は通常、スピーカ197、プリンタ196、ビデオ出力
など、他の周辺出力デバイスも備えることができ、これ
らは出力周辺インタフェース195を介して接続するこ
とができる。
【0027】コンピュータ110は、リモートコンピュ
ータ180など1つまたは複数のリモートコンピュータ
への論理接続を用いて、ネットワーク化された環境で動
作することができる。リモートコンピュータ180は、
別のパーソナルコンピュータ、サーバ、ルータ、ネット
ワーク周辺デバイス(例えばプリンタ)、ネットワーク
PC、ピアデバイス、または他の一般的なネットワーク
ノードとすることができる。図1にはメモリ記憶デバイ
ス181しか示していないが、通常はパーソナルコンピ
ュータ110に関して上述した要素の多くまたはすべて
を含む。図1に示す論理接続は、ローカルエリアネット
ワーク(LAN)171およびワイドエリアネットワー
ク(WAN)173を含むが、他のネットワークを含む
こともできる。このようなネットワーキング環境は、オ
フィス、企業全体のコンピュータネットワーク、イント
ラネット、およびインターネットでよくみられるもので
ある。
【0028】パーソナルコンピュータ110は、LAN
ネットワーキング環境で使用されるときは、ネットワー
クインタフェースまたはアダプタ(例えばネットワーク
インタフェースカード(NIC)170を介してLAN
171に接続される。WANネットワーキング環境で使
用されるときは通常、モデム172、またはインターネ
ットなどのWAN173を介した通信を確立するための
他の手段を備える。モデム172は内蔵でも外付けでも
よく、ユーザ入力インタフェース160または他の適切
な機構を介してシステムバス121に接続することがで
きる。ネットワーク化環境では、パーソナルコンピュー
タ110に関して示したプログラムモジュールまたはそ
の一部を、リモートメモリ記憶デバイスに記憶すること
ができる。限定ではなく例として、図1には、リモート
アプリケーションプログラム185がメモリデバイス1
81上にあるものとして示す。図示のネットワーク接続
は例示的なものであり、コンピュータ間に通信リンクを
確立するための他の手段を使用してもよいことは理解さ
れるであろう。
【0029】以下の記述では、特に指示しない限り、1
つまたは複数のコンピュータによって実施される働きお
よび操作の象徴表現に関して本発明を述べる。したがっ
て、このような働きおよび操作は、しばしばコンピュー
タ実行される(computer−executed)
と言及するが、データを構造化形式で表す電気信号をコ
ンピュータの処理ユニットによって操作することを含む
ことは理解されるであろう。この操作は、データを変形
させるか、データをコンピュータのメモリシステム中の
位置に維持し、これにより、当業者によく理解されてい
る方式でコンピュータの動作が再構成あるいは改変され
る。データが維持される位置のデータ構造は、データの
フォーマットで定義される特定の属性を有する、メモリ
の物理位置である。ただし、こうしたコンテキストで本
発明を述べるが、当業者には理解されるように、以下に
述べる多くのアクションおよび動作はハードウェアに実
装することもできるので、このコンテキストは限定的な
ものではない。
【0030】図2に、本発明のネットワーキングモデル
およびコンポーネントを構成するいくつかのコンポーネ
ントの相互関係を示す。通常の動作中は、ネットワーク
化メッセージがアプリケーション200からネットワー
クスタック202を介して周辺デバイス204に送ら
れ、そこでメッセージは、ネットワーク上の他のデバイ
スおよびアプリケーションに送られ、他のデバイスおよ
びアプリケーションから受け取られる。ネットワークス
タック202は、1つまたは複数の中間ソフトウェア層
206を含む。アプリケーション200から送られたデ
ータは中間ソフトウェア層206の中を通るが、このと
きデータには、データのパッケージ化、高信頼データ送
信、データ暗号化、およびメッセージダイジェストの計
算など、特定の操作を実施することができる。
【0031】スイッチ208は、中間ソフトウェア層2
06に対するネットワークスタック動作の実施から処理
ユニット120をオフロードするのに使用される。スイ
ッチ208は別個に示してあるが、ネットワークスタッ
ク202の最上部の中間層に統合してもよいことに留意
されたい。周辺デバイス204に対するチムニー210
を介して周辺デバイス204にデータが送られ、ネット
ワークスタック動作が実施される。この階層構造では、
中間ソフトウェア層はすべてホスト中または周辺デバイ
ス中にある必要はなく、いずれかの中間層を完全にオフ
ロードすることもでき、ホストに残すこともでき、ある
いはこの両方を組み合わせることもできる(例えば1つ
または複数の特定の接続をオフロードする)。さらに、
チムニーの最上部にチムニーを重ねることもできる(例
えばTCPチムニーの最上部にIPSECチムニーを重
ねることができる)。接続は、高信頼および低信頼デー
タ転送とユニキャストまたはマルチキャストのデータ転
送との任意の組合せとすることができる。中間層がホス
トに残される場合、ホストは、周辺デバイス204中の
キャッシュされる変数(後述する)を更新する。例え
ば、接続に関するトランスポート制御ブロック(TC
B、transport control bloc
k)状態エントリをトランスポート層についてオフロー
ドし、ネットワーク層についてのルートキャッシュエン
トリ(RCE)を周辺デバイス204にオフロードする
ことができる。スイッチ208は、オフロードされたT
CBのためにチムニー210を介してトラフィックを送
りながら、同じRCEを共有する別のTCBのためにネ
ットワークスタック202を介してトラフィックを送り
続ける。
【0032】スイッチ208は、中間層206にオフロ
ード要求を送ることによってオフロードを開始する。オ
フロード要求は、周辺デバイス204が接続をうまくオ
フロードできるかどうかを決定する助けとなるリソース
情報を含む。各中間層206は、オフロード要求を拒否
するか、またはオフロード要求にリソース情報を加え
て、ネットワークスタック202中の隣接するソフトウ
ェア層に送る。周辺デバイス204は、オフロード要求
を受け取ると、接続をオフロードするのに利用できるリ
ソースがあるかどうかを計算する。オフロードが不可能
な場合は、周辺デバイス204はオフロード要求を拒否
する。そうでない場合はオフロード要求を受け入れ、接
続のためのリソースを割り振る。周辺デバイス204
は、パラメータのリンクリストを有する完了メッセージ
を中間ソフトウェア層206に送ることによってオフロ
ード要求を完了する。パラメータのリンクリストは、中
間ソフトウェア層206およびスイッチ208が周辺デ
バイスと通信できるようにするための情報を、中間ソフ
トウェア層206およびスイッチ208に提供するもの
である。各中間ソフトウェア層206は、その層につい
ての情報をパラメータのリンクリストから除去する。
【0033】中間層206は、オフロードのための完了
メッセージを受け取ると、その状態を周辺デバイス20
4に渡す。各状態は、CONST(一定)、CACHE
D(キャッシュされる)、DELEGATED(委任さ
れる)の3タイプの変数を有するものとすることができ
る。1つの状態が3タイプの変数すべてを有することも
あり、3タイプの変数のサブセットを有することもあ
る。CONST変数は、オフロードされた接続の寿命の
間は決して変化しない定数である。これらは、接続がア
ップロードされるときに層に再び読み込まれることはな
い。ホスト処理ユニット120は、CACHED変数の
所有権を維持し、ホスト処理ユニット120中のCAC
HED変数に変化があった場合には周辺デバイス204
中で更新されるようにする。CACHED状態を変更す
る制御メッセージが、ネットワークスタック202によ
って扱われる。この結果、ホストはCACHED変数を
書き込むが、接続がアップロードされるときに再び読み
出す必要はない。ホスト処理ユニット120は、DEL
EGATED変数の所有権を周辺デバイス204に譲渡
する。DELEGATED変数は、オフロードが行われ
るときに1度書き込まれ、オフロードが終了したときに
再び読み込まれる。接続をホストに転送して戻すオーバ
ーヘッドは、DELEGATED変数を転送して戻すだ
けで最小化される。ネットワークスタック202と、様
々な性能上の理由でオフロード(すなわち委任)されて
いる周辺デバイス204との間で共有(例えば制御)し
なければならない状態は、ネットワークスタック202
とチムニー210(例えばTCPオフロードにおけるI
P ID)との間ですっきりと分離され、したがって、
ネットワークスタック202と周辺デバイス204は両
方とも、その状態の排他的部分をそれぞれ保有する。ホ
スト処理ユニット120は、必要なときにDELEGA
TED変数を周辺デバイス204に照会する(例えば統
計のため)。ホスト処理ユニット120はまた、診断の
ためにCONST変数またはCACHED変数を照会す
ることもできる。状態を3つのカテゴリに分けることに
より、ネットワークスタック202は、チムニー210
とすっきりと共存することができる。状態はオフロード
要求に含めることもできることに留意されたい。これ
は、状態が、委任される状態変数を含まない場合、ある
いは最初のオフロード要求とオフロード要求完了との間
で変化しない委任される状態変数を含む場合に行うこと
ができる。
【0034】周辺デバイス204またはホストは、オフ
ロードされた接続をアップロードするときを決定する。
アップロードは、周辺デバイス204およびスイッチ2
08のいずれかによって開始される。アップロードが開
始されると、周辺デバイス204は、すべての未解決要
求を適切な状態で完了し、一番上の中間層の委任される
状態をスイッチ208に渡す。スイッチ208は、それ
以上の送信要求があればそれらをキューに入れ、受信バ
ッファのポスティングを停止する。スイッチ208は、
委任される状態の制御を獲得するよう一番上の中間層に
命じる。一番上の中間層は、委任される状態の制御を握
り、完了メッセージをスイッチ208に送る。スイッチ
208は、完了メッセージを受け取った後、アップロー
ドを周辺デバイス204に確認し、これにより周辺デバ
イス204は、もう使用されていないリソースを開放す
ることができる。
【0035】一番上の中間層は、委任される状態の制御
を獲得するまでは、オフロードされた接続に関する入来
データパケットを周辺デバイス204に転送して、処理
されるようにすることに留意されたい。データパケット
は、周辺デバイス204が委任される状態をスイッチ2
08に渡すときと、一番上の中間層が委任される状態の
制御を獲得するときとの間に到着する場合もある。周辺
デバイス204は、委任される状態をスイッチ208に
渡した後はもう入来データパケットを処理することがで
きない。入来データを受け取ったときは、周辺デバイス
204は、アップロードが進行中であることを示すエラ
ーメッセージを一番上の中間層に送る。エラーメッセー
ジは、入来データの転送を停止して、委任される状態を
受け取るまでそれ以上のデータをバッファに入れるよ
う、一番上の中間層に通知する。あるいは、周辺デバイ
ス204上のバッファメモリをさらに犠牲にして、入来
データを周辺デバイス204に転送し、周辺デバイス2
04がそのデータをバッファするようにすることもでき
る。
【0036】複数の接続を中間ソフトウェア層206か
ら周辺デバイス204にオフロードすることもできる。
中間ソフトウェア層206は、上層の状態オブジェクト
(すなわちその中間ソフトウェア層206よりも上の層
の状態オブジェクト)の数に関する参照カウンタを維持
する。これらの状態オブジェクトは、オフロードについ
ての中間ソフトウェア層の状態オブジェクトを参照する
ものである。本明細書において、状態オブジェクトと
は、特定の層についての状態変数の集合であり、本明細
書ではCONST、CACHED、またはDELEGA
TEDとして分類する。中間層のオフロードされる状態
オブジェクトがそれよりも上の層からそれへの参照を有
さない場合、中間層206は、この中間層についての状
態オブジェクトをアップロードして委任される状態変数
を中間層206に送るよう周辺デバイス204にメッセ
ージを送る。周辺デバイス204は中間層206につい
ての状態オブジェクトを削除し、中間層206はスイッ
チ208に完了メッセージを送る。
【0037】全体概念を述べたところで、次に図3に目
を向け、一実施形態における本発明の詳細について述べ
る。この実施形態では、周辺デバイス204はNIC1
70であり、スイッチ208はトランスポート層インタ
フェーススイッチ(TLI)306であり、ネットワー
クスタック202はトランスポート層300、ネットワ
ーク層302、およびフレーミング層304を備える。
ネットワーク層302はパス層とも呼ばれ、フレーミン
グ層304は隣接層とも呼ばれる。
【0038】動作中、ネットワーク化メッセージがアプ
リケーション200からネットワークスタック202を
介してNIC170に送られる。アプリケーション20
0から送られたデータはTLIスイッチ306を通る
が、TLIスイッチ306は、データがホストベースの
ネットワークスタック202を下りるかまたはチムニー
308を下りるかを制御する。TLIスイッチ306は
ネットワークスタック202の最上層に組み入れてもよ
いことに留意されたい。ネットワークスタック202中
のソフトウェア層は、アプリケーション200からデー
タを受け取り、パケット形式にパッケージし、NDIS
ミニドライバ310を介して周辺デバイスハードウェア
314に送る。データパケットがネットワークスタック
202を通る間にスタック202が実施することのでき
る他のタスクには、データ暗号化、高信頼データ転送、
およびメッセージダイジェスト(例えばデータパケット
についてのチェックサムやCRC)の計算が含まれる。
これらのタスクの多くは、処理ユニット120によって
実施され、プロセッサ集約的である。
【0039】TLIスイッチ306を使用して、接続に
関するデータをチムニー308(およびチムニードライ
バ312)を介してNIC170に送ることにより、ス
タック動作の実施から処理ユニット120をオフロード
する。NDISミニドライバ310およびチムニードラ
イバ312の上端は、Microsoft(登録商標)
オペレーティングシステムにおけるNDIS APIで
あることを当業者なら認識するであろう。説明のため
に、伝送制御プロトコル(TCP)ベースのプロトコル
スタックを用いて本発明を説明する。ただし理解される
ように、本発明の教示を用いて多くのタイプの周辺デバ
イスを使用することができ、他のネットワークスタック
をオフロードすることもできることを、当業者なら認識
するであろう。例えば、SCTP(stream co
ntrol transmission protoc
ol)またはユーザデータグラムプロトコル(UDP)
ベースのプロトコルスタックをオフロードすることもで
きる。さらに、本発明を用いて、iSCSI(inte
rnet small computer syste
m interface)、ネットワークファイルシス
テム(NFS)、またはCIFS(common in
terface file system)など、より
高機能のプロトコルをオフロードすることもできる。
【0040】オフロードが行われるのには多くの理由が
ある。限定ではなく例として、いくつかの理由を以下に
挙げる。システム管理者が、オフロードする特定のサー
ビスを選択することがあり得る。接続上にあるトラフィ
ック(バイト数またはパケット数からみて)が多量のリ
ソースを消費している場合に、特定の接続がオフロード
されることもある。あるタイプのサービスがオフロード
されることもある。例えば、IPSECなどのセキュリ
ティプロトコルがオフロードされることがある。オフロ
ードはポリシーによって主導することもできる。例えば
管理者は、組織内からの接続はすべて最初にオフロード
されるというポリシーを有することができる。使用され
ているシステムリソース(例えばCPU利用、データキ
ャッシュ使用、ページテーブルキャッシュ使用、メモリ
帯域幅)により、ホストプロセッサが接続をオフロード
することになる場合もある。
【0041】図4に、TCP接続をオフロードするため
に実施されるステップを示す。3段階のプロセスが用い
られる。一般に、この3段階のプロセスは、TCP接続
をオフロードするのに必要なリソースを割り振り、各層
300、302、304、306にハンドルを提供し、
各層300、302、304、306についての状態を
NIC170にオフロードするものである。オフロード
移行中、TLIスイッチ306は、アプリケーション2
00から送られたメッセージをすべてバッファに入れ
る。あるいは、トランスポート層300がデータをバッ
ファに入れる。オフロードが完了したとき、バッファに
入れられたデータは、オフロードデータ送信と同じ機構
を使用してNIC170に転送される。オフロード移行
中に入来パケットが受信されたときは、NIC170
は、トランスポート層の委任される状態がNIC170
に渡されるまで、層300、302、304、306を
介してデータを上に移動させ続ける。
【0042】TLIスイッチ306は、トランスポート
層300にオフロード要求を送ることにより(線40
0)、オフロードを開始する。オフロード要求は、次の
層のローカル状態へのポインタ(例えばトランスポート
層300ではTCBポインタ、ネットワーク層302で
はRCEポインタ、フレーミング層304ではARPテ
ーブルポインタ、またはNDISミニドライバ310で
はNDISミニポートポインタ)、オフロードタイプ
(例えばTLIスイッチ306ではTCP、ネットワー
ク層302ではIPv6など)、および、NIC170
がTCP接続をうまくオフロードできるかどうか決定す
る助けとなるリソース情報を含む。TLIスイッチ30
6はまた、ディスパッチテーブルをNIC170に提供
することもできる。トランスポート層300は、オフロ
ード要求を拒否するか、あるいは、TCPリソース情報
をTLIスイッチリソース情報に付加して、オフロード
要求をネットワーク層302に送る(線402)。
【0043】ネットワーク層302は、オフロード要求
を受け取り、接続のオフロードを拒否するか、あるい
は、TCPリソース情報およびTLIスイッチリソース
情報にネットワークリソース要件を付加して、オフロー
ド要求をフレーミング層304に送る(線404)。ネ
ットワーク層302はまた、ディスパッチテーブルをN
IC170に送ることもできる。フレーミング層304
は、接続のオフロードを拒否するか、あるいは、ネット
ワークリソース要件、TCPリソース情報、およびTL
Iスイッチリソース情報にフレーミングリソース要件を
付加して、オフロード要求をNIC170に送る(線4
06)。
【0044】NIC170は、オフロード要求を受け取
り、TCP接続をオフロードするのに利用可能なリソー
スがあるかどうかを計算する。オフロードが不可能であ
ると判定した場合は、NICはオフロード要求を拒否す
る。オフロードが可能であると判定した場合は、NIC
はオフロード要求を受け入れ、この接続のためのリソー
ス(例えばTCB、ルートキャッシュエントリ(RC
E)、アドレス解決プロトコル(ARP)テーブルエン
トリ(ATE))を割り振る。NIC170は、層30
0、302、304、306に渡すためにパラメータの
リンクリストおよびディスパッチテーブルを生み出し、
パラメータのリンクリストを有する完了メッセージをフ
レーミング層304に送ることによってオフロード要求
を完了する(線408)。パラメータは、各層300、
302、304、306ごとのオフロードハンドルおよ
びディスパッチテーブルを含む。本明細書において、オ
フロードハンドルとは、ソフトウェア層が周辺デバイス
と通信できるようにする機構を意味する。限定ではなく
例として、オフロードハンドルは、ポインタベースのハ
ンドル、配列のルックアップとして使用される整数値、
ハッシュテーブル(例えばハッシング関数)、ソフトウ
ェア層(またはネットワークスタック)と周辺デバイス
との間の通信チャネルとすることができ、または、周辺
デバイスが状態オブジェクトをルックアップするのに使
用する、ソフトウェア層から伝えられたパラメータのセ
ットとすることができる。
【0045】ディスパッチテーブルは、データをNIC
170に直接送るかまたはデータをNIC170から直
接受け取るのに使用される。ディスパッチテーブルはま
た、診断を提供するのに使用することもできる。例え
ば、システムが正しく機能しているようにするために、
システムを監視して障害を注入するソフトウェア層を追
加することができる。さらに、必要なら、追加機能を加
えることのできるソフトウェア層でディスパッチテーブ
ルにパッチを当てることもできる。例えば、フィルタド
ライバの機能を提供するソフトウェア層を追加すること
ができる。パッチを当てるのは、通常、追加機能を挿入
する場所で元の機能へのポインタをとって、追加機能に
リダイレクトする(すなわちポイントする)ことによっ
て行う。パッチが挿入された後、元の機能が呼び出され
たとき、追加機能はその機能を実施してから元の機能を
呼び出す。
【0046】フレーミング層304は、フレーミング層
についてのオフロードハンドルおよびディスパッチテー
ブルをそのARPテーブルエントリに記憶し、宛先MA
Cアドレスが変化した場合またはカプセル化タイプが変
化した場合に更新しやすくする。次いでフレーミング層
304は、ATEに関連するNIC170の状態を更新
する(線410)。フレーミング層304は、その状態
をリンクリストから除去し、リンクリスト中の残りの情
報をネットワーク層302に転送する(線412)。
【0047】ネットワーク層302は、ネットワーク層
302についてのオフロードハンドルおよびディスパッ
チテーブルを記憶する。ネットワーク層302もまた、
その状態をNIC170に送る(線414)。ネットワ
ーク層302は、ネットワーク層情報をリンクリストか
ら除去し、パラメータのリンクリストおよびディスパッ
チテーブルを有する完了メッセージをトランスポート層
300に送る(線416)。ネットワーク層302は、
オフロード状態について受け取るIPフラグメントをN
IC170に転送して、処理されるようにすることもで
き、あるいはIPフラグメントをネットワーク層で処理
して、トランスポート層300に転送することもでき
る。
【0048】代替実施形態では、層の状態オブジェクト
はオフロード要求と共に送られる。例えば、フレーミン
グ層状態オブジェクトおよびネットワーク層状態オブジ
ェクトはオフロード要求と共に送られ、キャッシュされ
る状態がオフロード要求と完了イベントとの間で変化し
たときだけ状態は更新される。層の状態オブジェクト全
体は、委任される状態が存在しない場合、または委任さ
れる状態がオフロード要求とオフロード要求完了との間
で変化し得ない場合だけ、オフロード要求と共に送るこ
とができる。ただし、委任される状態が存在し、オフロ
ード要求とオフロード要求完了との間で変化し得る場合
であっても、CONSTとして分類される状態変数は、
オフロード要求と共に送ることができる。
【0049】トランスポート層300は、トランスポー
ト層についてのオフロードハンドルを記憶し、その状態
をNIC170に送る(線418)。未解決の送信バッ
ファまたは受信バッファが保留中である場合は、トラン
スポート層300はバッファをTLIスイッチ306に
返す。トランスポート層300がバッファをTLIスイ
ッチ306に戻し始めると、TLIスイッチ306は、
バッファをトランスポート層300に送るのを停止し、
それらをキューに入れ、トランスポート層300からT
LIスイッチ306にパラメータのリンクリストおよび
ディスパッチテーブルを有する完了メッセージが送られ
てくるのを待機する。トランスポート層300は、すべ
てのバッファを返し、次いで完了メッセージを送る(線
420)。TLIスイッチ306は、完了メッセージを
受け取ると、送信バッファおよび受信バッファをNIC
170に転送する(線422)。TLIスイッチ306
は、ディスパッチテーブルを使用して未解決のおよび将
来の受信バッファをすべてポストし、処理のためにNI
C170に送る。オフロード要求が完了するのにかかる
時間の間、各層300、302、304は、オフロード
される状態オブジェクト(すなわち層に関連する状態オ
ブジェクト)に対する新しいオフロード要求を拒絶する
か、あるいはオフロードが完了するまでそれらをキュー
に入れる。
【0050】トランスポート状態がまだNIC170に
オフロードされていない場合、トランスポート層300
は依然として、入来TCBデータを処理してデータをT
LIスイッチ306に渡す能力を有する。TCBデータ
がオフロードの最中に到着した場合、トランスポート層
300は、データを保持するか、あるいはデータを処理
してTLIスイッチ306に渡すことができる。トラン
スポート層300がその状態をNIC170に送るとき
(線418)とTLIスイッチがバッファをNIC17
0に転送するとき(線422)との間、ネットワークス
タック202を通ってくる入来TCBデータはNIC1
70に送られる。
【0051】後続のオフロード要求時には、ネットワー
ク層302およびフレーミング層304は、NIC17
0から受け取った前のオフロードからのオフロードハン
ドルをNIC170に渡す。これにより、ネットワーク
層302およびフレーミング層304のためのリソース
がすでに割り振られていることがNIC170に信号で
伝えられ、したがって、NICリソースが温存され、オ
フロードが高速化される。
【0052】先に示したように、層300、302、3
04は、それらの状態をNIC170に渡す。各状態
は、CONST、CACHED、DELEGATEDの
3タイプの変数を有する。CONST変数は、オフロー
ドされた接続の寿命の間は決して変化しない変数であ
る。これらは、接続終了時に層に再び読み込まれること
はない。ホスト処理ユニット120は、CACHED変
数の所有権を維持し、ホスト処理ユニット120中のC
ACHED変数に変化があった場合にはNIC170中
で更新されるようにする。この結果、ホストはCACH
ED変数を書き込むが、再び読み出すことはない(シス
テム診断がそう要求しない限り)。ホスト処理ユニット
120は、DELEGATED変数の所有権をNIC1
70に譲渡する。DELEGATED変数は、オフロー
ドが行われるときに1度書き込まれ、オフロードが終了
したときに再び読み込まれる。接続をホストに転送して
戻すオーバーヘッドは、DELEGATED変数を転送
して戻すだけで最小化される。ホスト処理ユニット12
0は、必要なときにDELEGATED変数をNIC1
70に照会する(例えば統計のため)。
【0053】トランスポート層300についてのCON
ST変数は、宛先ポートと、ソースポートと、「気付
(care−of)」アドレスが変化する可能性のある
モバイルIPケースがあることを示すフラグと、SEN
DおよびRECVウィンドウスケールファクタと、ネッ
トワーク層302についてのNICハンドルとを含む。
トランスポート層300についてのCACHED変数
は、TCP変数およびIP変数である。TCP変数は、
Effective MSS、NIC170によって受
信指示にコピーされるバイトの数、Naglingをオ
フにするフラグ、キープアライブが必要であることを示
すフラグ、およびキープアライブ設定(すなわち間隔、
プローブ数、およびデルタ)を含む。IP変数は、TO
SおよびTTLを含む。DELEGATED変数は、現
在TCP状態、次のRECV(すなわちRCV.NEX
T)についてのシーケンス番号、受信ウィンドウサイズ
(RCV.WND)、First Un−Acked
Dataについてのシーケンス番号(SND.UN
A)、次のSENDについてのシーケンス番号(SN
D.NEXT)、それまで送られた中で最大のシーケン
ス番号(SND.MAX)、最大Send Windo
w(MAX_WIN)、現在輻輳ウィンドウ(CWI
N)、スロースタートしきい値(SSTHRESH)、
平滑化RTT(8*A)、Delta(8*D)、現在
再送カウント、Next Retransmitに残さ
れた時間、およびエコーされるタイムスタンプを含む。
【0054】ネットワーク層302についてのCONS
T変数は、宛先IPアドレス(IPv4とIPv6のい
ずれかの場合の)、およびソース宛先IPアドレス(I
Pv4とIPv6のいずれかの場合の)を含む。ネット
ワーク層302についてのCACHED変数は、フレー
ミング層304についてのNICハンドルを含む。ネッ
トワーク層302についてのDELEGATED変数
は、IPパケットID開始値を含む。フレーミング層3
04についてのCACHED変数は、ARPアドレス
と、ヘッダのフォーマット(例えばLLC/SNAP
[Logical Link Control/Sub
−Network Access Protocol]
やDIX[Digital、Intel、Xero
x])を示すためのフラグを含む。
【0055】トランスポート層の状態は、ネットワーク
層についてのハンドルを含み、ネットワーク層の状態
は、フレーミング状態についてのハンドルを含む。とい
うのは、ネットワーク層の状態は複数の接続間で共有さ
れる可能性があり、フレーミング層の状態は複数のパス
間で共有される可能性があるからである(例えばIPエ
イリアス)。この階層はいくつかの理由で維持される。
IP ID名前空間はオフロードされる接続すべてにわ
たってパスごとに管理しなければならないので、接続に
はネットワーク層についてのNICハンドルが必要であ
る。ルート更新が次のホップアドレスを変更し、それに
より新しいMACアドレスをポイントする可能性がある
ので、パスにはフレーミング層についてのNICハンド
ルが必要である。また、この階層により、NICが維持
する必要のある状態の量が圧縮される。例えば、IPv
4の場合のARP更新は、IPアドレスからMACアド
レスへのマッピングを変更する可能性がある(例えばサ
ーバ上でフェイルオーバされたインタフェース)。ホス
トは、キャッシュされた変数としてMACアドレスを維
持しており、したがってキャッシュされる状態の更新を
1度するだけでよく、すべての接続は新しいインタフェ
ースにフェイルオーバされる。
【0056】TCP接続がオフロードされると、NIC
170は、送信するパケットに対するパケット識別子
(例えばIP ID)の割当てを担う。IP IDは、
インタフェースごとに、または層状態オブジェクトごと
にオフロードされる。NIC170には、IP ID名
前空間の一部が割り当てられる。一実施形態では、NI
C170には、IP ID名前空間全体の半分が割り当
てられ、ネットワーク状態がNIC170に渡されたと
きに使用するIPパケットID開始値が与えられる。N
IC170は、以下の式を用いて、送信するIPパケッ
トに対するIPIDを生成する。 Cur_IPID=[(Start_IPID_For_This_Path)+(Counter_For_
This_Path)mod32K]mod64K Counter_For_This_Path=Counter_For_This_Path+1
【0057】オフロードされた接続がアップロードされ
るか無効にされるときは、NIC170は、使用するこ
とになる次のIPID値をネットワーク層に転送して、
行われる次のオフロードのために記憶し、ホスト処理ユ
ニット120は、割り当てられたIP ID名前空間の
一部を使用し続ける。ホスト処理ユニット120は、I
P ID名前空間を全部使用することもできるが、カウ
ンタはオフロードが行われるたびにセットしなければな
らない。
【0058】NIC170は、データが受け取られた順
にデータを受信バッファに配置し、アプリケーションバ
ッファがオフロード接続のためにポストされた順にアプ
リケーションバッファを満たす。多くのアプリケーショ
ンは、受信バッファをポストする前に受信指示を待機す
る。一実施形態では、NIC170は、データが接続の
ために到着したがアプリケーション受信バッファがポス
トされていない場合に使用するために、大域的なバッフ
ァプールを有する。大域的バッファプールは、オフロー
ドされたいくつかの接続にまたがって使用され、1)順
番になっていないTCP送信を処理し、2)IPデータ
グラムのデフラグメンテーションを実施し、3)アプリ
ケーションがゼロコピーアルゴリズムには小さすぎるバ
ッファをポストしている場合にゼロコピーアルゴリズム
ではないバッファコピーアルゴリズムを実施するのに使
用することができる。あるいは、リソースの効率的使用
が問題でない場合は、接続単位のバッファプールを使用
することもできる。ただし、NICが接続単位のバッフ
ァプールをサポートしない場合、またはシステムリソー
スが不足している場合(例えばアプリケーションバッフ
ァをメモリ中に留めておくのに十分なリソースがない場
合)は、大域的バッファプールを使用する。
【0059】次に図5A〜5Dに目を向けると、NIC
170は、オフロード実施後のオフロードを表す逆ツリ
ー500を有する。図において、点線はNIC170に
よって割り振られた新しい状態を表す。図5AのNIC
170では、ARPエントリ502がルートキャッシュ
エントリ504に結合され、ルートキャッシュエントリ
504はTCPエントリ506に結合されている。例え
ばすべてのトラフィックがルータに行くことになる場
合、次のホップは常に同じARPエントリ502へのホ
ップになる。ルートキャッシュエントリ504が次のT
CP接続オフロードに使用される場合、新しいリソース
はオフロードされる新しいTCBだけである。したがっ
て、オフロードがネットワークスタック202の下方に
向けて開始したとき、すでに状態をオフロードしている
中間ソフトウェア層(例えばネットワーク層302やフ
レーミング層304)は、単に、NICによって生成さ
れて前のオフロード要求時に割り振られたオフロードハ
ンドルを挿入するだけである。NIC170は、新しい
リソース(例えばTCPエントリ508)を割り振り、
新しいリソースについてのオフロードハンドルをネット
ワークスタック202を通して上に送り返すだけでよ
い。このとき逆ツリー500では、TCPエントリ50
8がルートキャッシュエントリ504に結合されている
(図5B参照)。この手法は、NICリソースを節約
し、オフロードを高速化する。さらに、キャッシュされ
る変数状態が変化した場合も、単一の構造を更新するだ
けでよい。もしチムニー中の様々なソフトウェア層につ
いてのすべての状態が単一のエントリとしてオフロード
されたとすれば、最上部のソフトウェア層よりも下の状
態更新は、複数の更新を必要とすることになる。
【0060】図5Cには、逆ツリー500のより詳細な
構成を示す。ARPテーブルエントリ502を通る2つ
のルートキャッシュエントリ504および510があ
る。TCP接続506および508がルートキャッシュ
エントリ504を使用する。TCP接続512および5
14がルートキャッシュエントリ510を参照する。A
RP更新が行われる場合(例えばマルチホームサーバの
インタフェースがフェイルオーバする場合)は、エント
リ502だけを更新すればよい。これにより、NIC1
70への更新を1度しか必要とせずに、何千も何十万も
あるかもしれない接続を新しいインタフェースにフェイ
ルオーバすることができる。図5Dには、独立した2つ
の逆ツリー(エントリ502〜508およびエントリ5
10〜516)が、ルート更新の実施後に単一の逆ツリ
ー500にマージされたのを示す。ルート更新前は、ル
ートキャッシュエントリ510に対する次のホップAR
PエントリはARPテーブルエントリ516である。ル
ート更新後は、次のホップARPテーブルエントリはA
RPテーブルエントリ502である。したがって、逆ツ
リーを用いると、ルート更新は、ネットワークスタック
状態が単一のエントリとしてオフロードされた場合の何
千や何万もの更新ではなく、NIC170への単一のト
ランザクションとして処理することができる。
【0061】次に図6に目を向けるが、接続がNIC1
70にオフロードされた後は、NIC170へのパスは
2つある。第1のパスは、NDISミニドライバ310
を通り、フレーミング層304、ネットワーク層30
2、およびトランスポート層300を通る。第2のパス
はオフロード接続608を通り、これはチムニーと呼ば
れる。ホストコンピュータからみると、通信の点では2
つのパスについてすべて同じである。キャッシュされる
状態変数が2つのパスを同期させ、処理ユニット120
は、先に示したようにNIC170中のキャッシュされ
る状態変数を更新する。キャッシュされる変数の更新を
矢印602、604、606で示す。
【0062】入来データパケットが到着したとき、NI
C170は、入来データパケットがオフロードされるパ
スを通るかオフロードされないパス(すなわちNDIS
ミニドライバ310および層304、302、300の
NDISパス)を通るかを決定する。一実施形態では、
NIC170は、ソースおよび宛先TCPポート番号
と、ソースおよび宛先IPアドレスと、プロトコルタイ
プとに対してハッシング関数を実施することにより、ど
ちらのパスに入来データパケットを送るかを決定する。
ハッシュがオフロードされる接続パラメータと一致する
場合(すなわち、ハッシュバケットチェーンが調べら
れ、接続のタプルすべての一致が生じる場合)は、チム
ニー608を使用する。ハッシュがハッシュインデック
スと一致しない場合は、ネットワークスタック202を
通るオフロードされないパスを使用する。キャッシュさ
れる状態を更新する制御メッセージが、ホストによって
処理される。この結果、NIC170は、ICMP、D
NS、RIPメッセージなど、オフロードされる接続の
外にあるどんな制御メッセージも処理する必要がない。
【0063】本発明は、Netstatなど既存のツー
ルを使用して、ホスト上のすべての接続や、プロトコル
タイプ、ローカルとリモートのポートおよびIPアドレ
スバインディング、接続の状態、プロセスIDなどの接
続パラメータを含めた、様々な情報を取り出し、統計を
導き出す能力をユーザに提供する。本発明では、統計
は、層ごとまたは層状態オブジェクトごとに収集され
る。1つの層内で層状態オブジェクトをグループ化し
て、複数の層状態オブジェクトにわたる統計を収集する
ことができる。例えば、ネットワーク層についての統計
は、使用されるプロトコル(例えばIPv4およびIP
v6)ごとの統計になるように分割することができる。
CONSTおよびCACHED状態変数に関連する統計
はホストから提供され、DELEGATED状態変数に
関連する統計は周辺デバイス204から提供される。照
会が行われたとき、DELEGATED状態変数に関連
する統計は、CONSTおよびCACHED状態変数に
関連する統計に添付される。
【0064】パケットカウントなどのように、ホスト層
状態と周辺デバイス層状態のグループ化全体にわたって
合計される種類の統計もある。別のタイプの統計は、シ
ステム中にある機能の状態のリストである(例えばシス
テム中のあらゆるTCBの状態のリスト)。TCBにつ
いての統計は、ホストによって追跡される統計と周辺デ
バイスによって追跡される統計とが組み合わさったもの
である。同様に、パケットカウントについての統計は、
ホスト層状態の統計と周辺デバイス層状態の統計の合計
である。
【0065】以下の表1に、TCP MIB(管理情報
ベース)の場合におけるホストと周辺デバイス204と
の分割の例を示し、以下の表2に、IPv4 MIB統
計を提示する。表では、第1列はフィールドであり、第
2列は、統計の追跡を周辺デバイスが担当するかホスト
ネットワークスタックが担当するかを指定し、第3列
は、各フィールドがどのように追跡されるかを示す。周
辺デバイスが担当する統計は、層状態オブジェクトごと
または層ごとに追跡される。本明細書において、層ごと
とは、プロトコルごとの周辺デバイスごとの層ごとに統
計が追跡されることを意味する。ただし、ホスト状態と
周辺デバイスからの状態で統計が統合されるときは、統
計は概してプロトコルごとに提示されることに留意され
たい。ホストネットワークスタックが周辺デバイスに照
会せずに生成することのできる統計は、「スタックが完
全な情報を有する」または「スタックだけで行われる」
として類別している。「スタックが完全な情報を有す
る」カテゴリは、周辺デバイスが統計について知ってい
るが統計を追跡しないことを示す。「スタックだけで行
われる」統計は、周辺デバイスが統計について知らない
ことを示す。通常のNDISインタフェースを介して、
アダプタ統計に照会する。アダプタ統計は、bytes
sentやbytes receivedなどの変数
を含む。
【0066】
【表1】
【0067】ts_RtoAlgorithmは、肯定
応答されなかったオクテットを再送するのに用いられる
タイムアウト値を決定するのに使用されるアルゴリズム
の値である。ts_Rto_Minは、ミリ秒で測定さ
れた送信タイムアウトに関する、TCP実装によって許
容される最小値の値である。ts_Rto_Minは、
ミリ秒で測定された再送タイムアウトに関する、TCP
実装によって許容される最大値である。ts_MaxC
onnは、サポートできるTCP接続の総数である。t
s_ActiveOpensは、TCP接続がCLOS
ED状態からSYN_SENT状態への直接移行を行っ
た回数である。ts_PassiveOpensは、T
CP接続がLISTEN状態からSYN_RCVD状態
への直接移行を行った回数である。ts_Attemp
tFailsは、TCP接続がSYN_SENT状態お
よびSYN_RCVD状態のいずれかからCLOSED
状態への直接移行を行った回数と、TCP接続がSYN
_RCVD状態からLISTEN状態への直接移行を行
った回数とを足した回数である。ts_EstabRe
setsは、TCP接続がESTABLISHED状態
およびCLOSE_WAIT状態のいずれかからCLO
SED状態への直接移行を行った回数である。ts_C
urrEstabは、現在の状態がESTABLISH
EDおよびCLOSE_WAITのいずれかであるTC
P接続の数である。ts_InSegsは、エラーで受
信されたものを含めた受信セグメントの総数である。t
s_OutSegsは、再送オクテットしか含まない接
続を除いた現在の接続上にある送信セグメントの総数で
ある。ts_RetransSegsは、再送されたセ
グメントの総数である。ts_InErrsは、エラー
(例えば不良TCPチェックサム)で受信されたセグメ
ントの総数である。ts_OutRstsは、RSTフ
ラグを含む送信済みTCPセグメントの数である。ts
_NumConsは、現存するTCP接続の総数であ
る。
【0068】
【表2】
【0069】ipsi_Forwardingは、ホス
ト宛ではないがホストによって受信されたデータグラム
の転送に関して、ホストがIPルータとして働いている
かどうかの指標を提供する値である。ipsi_Def
aultTTLは、TTL値がトランスポート層プロト
コルから供給されないときに、このエンティティで発生
するデータグラムのIPヘッダのTime−To−Li
veフィールドに挿入されるデフォルト値である。ip
si_InReceivesは、エラーで受信されたも
のを含めた、インタフェースから受信された入力データ
グラムの総数である。ipsi_InHdrError
sは、バッドチェックサム、バージョン番号不一致、そ
の他のフォーマットエラー、生存時間の超過、入力デー
タグラムのIPオプションの処理中に発見されたエラー
などを含めて、入力データグラムのIPヘッダにあるエ
ラーのせいで廃棄された入力データグラムの数である。
ipsi_InAddrErrorsは、入力データグ
ラムのIPヘッダの宛先フィールドにあるIPアドレス
がホストで受信される有効アドレスではなかったために
廃棄された入力データグラムの数である。ipsi_F
orwDatagramsは、ホストが入力データグラ
ムの最終IP宛先ではなく、そのため最終宛先に転送す
るルートを見つける試みがなされた入力データグラムの
数である。ipsi_UnknownProtosは、
うまく受信されたが未知のまたはサポートされないプロ
トコルであるために廃棄された、ローカルにアドレス指
定されたデータグラムの数である。ipsi_InDi
scardsは、継続処理を阻む問題には遭遇しなかっ
たが廃棄された(例えばバッファ空間の不足により)、
入力IPデータグラムの数である。ipsi_InDe
liversは、うまくIPユーザプロトコルに送達さ
れた入力データグラムの総数である。ipsi_Out
Requestsは、ローカルIPユーザプロトコル
(ICMPを含む)が送信要求に応じてIPに供給した
IPデータグラムの総数である。ipsi_Routi
ngDiscardsは、有効であるにもかかわらず廃
棄が選択されたルーティングエントリの数である。ip
si_OutDiscardsは、宛先に送信されるの
を阻む問題には遭遇しなかったが廃棄された(例えばバ
ッファ空間の不足により)、出力IPデータグラムの数
である。ipsi_OutNoRoutesは、宛先に
送信するためのルートが見つからなかったために廃棄さ
れたIPデータグラムの数である。ipsi_Reas
mTimeoutは、受信フラグメントがホストで再ア
センブルされるのを待機している間に受信フラグメント
が保持される最大秒である。ipsi_ReasmRe
qdsは、ホストで再アセンブルする必要のあった受信
IPフラグメントの数である。ipsi_ReasmO
Ksは、うまく再アセンブルされたIPデータグラムの
数である。ipsi_ReasmFailsは、IP再
アセンブリアルゴリズムによって検出された障害(例え
ばタイムアウトやエラーなど)の数である。ipsi_
FragOKsは、ホストでうまくフラグメント化され
たIPデータグラムの数である。ipsi_FragF
ailsは、ホストでフラグメント化する必要があるの
にそうすることができなかったために廃棄された、例え
ばDon’t Fragmentフラグがセットされて
いたために廃棄された、IPデータグラムの数である。
ipsi_FragCreatesは、ホストにおける
フラグメント化によって生成されたIPデータグラムフ
ラグメントの数である。ipsi_NumIfは、使用
可能なインタフェースの総数である。ipsi_Num
Addrは、システム上の固有IPアドレスの総数であ
る。ipsi_NumRoutesは、現在アクティブ
なルートの総数である。
【0070】本発明は、オフロードされたネットワーク
接続を周辺デバイスからホストにアップロードする方法
も提供する。アップロードが行われるのには多くの理由
がある。限定ではなく例として、いくつかの理由を次に
挙げる。ルートが変更され、トラフィックを異なるイン
タフェース上に送ることが必要になる場合がある。接続
トラフィック挙動が変化し、したがってもはやオフロー
ドに適さなくなる場合もある。例えば、トラフィックが
不十分であったり、アクティビティが不足していたり、
接続が設定時間よりも長くフロー制御されていたりする
(例えばウィンドウ更新が受信されていない)ことがあ
る。さらに、周辺デバイスが特定の機能をサポートでき
ない場合もあり、また、過剰なIPフラグメント、順番
になっていない過剰なトラフィック、帯域外データの使
用、過剰な再送がある場合や、キープアライブがタイム
アウトした場合、セキュリティ関連付けが無効になり更
新されない場合、過剰なデータが周辺デバイスに転送さ
れている場合は、トラフィック挙動がオフロードに適さ
ないことがある。オフロードされた接続をアップロード
することに対する他の理由は、リソースの問題によるも
のである。例えば、接続の処理を継続するためのリソー
スが周辺デバイスに不足している場合がある。別の接続
が、オフロードされた接続よりも高い優先度を有するこ
とがあり、周辺デバイスのリソース使用可能性がしきい
値よりも低いときに接続をアップロードすれば、優先度
のより高い接続が周辺デバイスのリソースを使用し続け
ることができる場合がある。
【0071】システムリソースは、オフロードされた接
続を処理するためのリソースをホストプロセッサが有す
るように、変更されている場合がある。チムニーは、元
のオフロードとは異なるリソースを必要とする場合があ
る(例えばセキュリティフィルタ変更など)。ホスト
は、周辺デバイスのリソースがしきい値レベルに近づい
ているかどうかを判定することができ、この場合、オフ
ロード接続はホスト処理ユニットによってより効率的に
処理される。例えばしきい値には、トラフィックサイズ
(バイト数またはパケット数)、フラグメント数、ウィ
ンドウサイズ、オフロードタイプを含めることができ
る。
【0072】次に図7に目を向けると、アップロード
は、周辺デバイス204(例えばNIC170)とTL
Iスイッチ306のいずれかによって開始される。接続
は様々な理由でアップロードされることがある。これら
の理由には、接続が別の周辺デバイスに移動すること、
メディア切断の発生、順番になっていない過剰なセグメ
ント、過剰なデータが周辺デバイス204に転送される
こと、アプリケーション200がバッファを事前ポスト
しないこと、過剰なIPフラグメント、低帯域接続、過
剰な再送が含まれる。
【0073】図7は、TLIスイッチ306がアップロ
ードを開始する場合を示している(線700)。NIC
170がアップロードを開始する場合は、線700は存
在しないことに留意されたい。アップロードが開始され
ると、NIC170はすべての未解決要求を適切な状態
で完了し、委任されるトランスポート層状態をスイッチ
層に渡す(線702)。NIC170は、送信を完了し
ない、または受信バッファを完全に満たさない場合もあ
る。NIC170は、すべての送受信状態が、トランス
ポート層300に戻される委任される状態と同期するよ
うにするだけである。TLIスイッチ306は、それ以
上の送信要求があればそれらをキューに入れ、受信バッ
ファのポストを停止する。TLIスイッチ306は、委
任されるトランスポート状態の制御を獲得するようトラ
ンスポート層に命じる(線704)。トランスポート層
300は、受け取ったセグメントをNIC170に転送
するのを停止し、委任される状態の制御を獲得し、完了
メッセージをTLIスイッチ306に送る(線70
6)。TLIスイッチ306は、トランスポート層30
0が委任されるトランスポート状態の制御を握った旨の
確認を受け取った後、NIC170にアップロードを確
認し(線708)、それによりNIC170はリソース
を開放することができる。トランスポート層300はま
た、完了メッセージをTLIスイッチ306に送る前ま
たはその後に、アップロードする接続をネットワーク層
302に通知する(線710)。
【0074】トランスポート層300は、委任される状
態の制御を獲得する(線706)までは、オフロードさ
れた接続に関する入来データパケットをNIC170に
転送して、処理されるようにすることに留意されたい。
データパケットは、NIC170が委任される状態をT
LIスイッチ306に渡すとき(線702)と、トラン
スポート層300が委任される状態の制御を獲得すると
き(線706)との間に到着するかもしれない。NIC
170は、委任される状態をTLIスイッチ306に渡
した後はもう入来データパケットを処理することができ
ない。アップロード接続に関する入来パケットを受信し
たときは、NIC170は、アップロードが進行中であ
ることを示すエラーメッセージをトランスポート層30
0に送り、場合によってはこれらの入来パケットを廃棄
する。エラーメッセージは、入来データの転送を停止す
るようトランスポート層300に通知する。一実施形態
では、トランスポート層300は、委任される状態を受
け取るまではそれ以上のデータをバッファに入れる。
【0075】複数の接続を中間ソフトウェア層から周辺
デバイスにオフロードすることもできる。中間ソフトウ
ェア層は、中間ソフトウェア層から周辺デバイスにオフ
ロードされた接続の数に関する参照カウンタを維持す
る。参照カウントが0になる場合、次の中間ソフトウェ
ア層へのアップロード要求が生成される。これにより、
次の層の参照カウントがデクリメントされる。次の層の
参照カウントが0になる場合、アップロード要求はネッ
トワークスタック202中を下降し続ける。中間ソフト
ウェア層の参照カウントが0でなくなるか、または周辺
デバイスがアップロード要求を受け取るまで、このプロ
セスが繰り返される。ネットワーク層302は、NIC
170に関連するオフロードされた状態オブジェクトの
数に関する参照カウントをデクリメントする。参照カウ
ントが0になる場合は、NIC170中でネットワーク
層302のために割り振られたリソースを使用している
TCBはない。参照カウントが0になるとき、ネットワ
ーク層302はNIC170にメッセージを送り、ネッ
トワーク層302についての状態オブジェクトをアップ
ロードして委任されるネットワーク状態変数をネットワ
ーク層302に送るよう伝える(線712)。NIC1
70は、状態を削除して、委任されるネットワーク状態
変数およびNIC170が使用したであろう次のIPI
D値をネットワーク層302に送る(線714)。ネッ
トワーク層302は、接続が再びオフロードされた場合
に初期値として使用するために、この情報を記憶する。
ネットワーク層302はフレーミング層304にもメッ
セージを送り、フレーミング層304にその参照カウン
トをデクリメントさせる(線716)。
【0076】フレーミング層304もまた参照カウント
を維持し、ネットワーク層302からメッセージを受け
取ったときにその参照カウントをデクリメントする。フ
レーミング層304中の参照カウントが0になる場合、
フレーミング層は、フレーミング層状態を削除するよう
NIC170にメッセージを送る(線718)。NIC
170は、NIC170中の状態変数を削除し、委任さ
れる状態変数があればフレーミング層に送る(線72
0)。フレーミング層304はネットワーク層302に
完了メッセージを送り(線722)、ネットワーク層3
02はトランスポート層に完了メッセージを送る(線7
24)。
【0077】TCP接続は、その存続期間のいずれかの
時点で、IPSECなどのセキュリティプロトコルを使
用したセキュア接続を用いることが必要な場合がある。
接続がIPセキュアであり周辺デバイス204がセキュ
リティを扱うことができない場合、接続をオフロードす
ることはできない。セキュアIP接続をオフロードする
ときは、前述のようにセキュリティ関連状態をCONS
T変数、CACHED変数、およびDELEGATED
変数に分割して扱う。ホスト処理ユニット120は、鍵
の再交渉などの制御メッセージを管理する。周辺デバイ
ス204は、セキュリティアソシエーション状態変数を
使用して、必要なすべてのIPSECデータ操作を実施
する。
【0078】次に図8に目を向けると、セキュア接続を
オフロードするステップが示されている。以下の記述で
は、図4に示した前述のステップは同じであり、繰り返
し記述しない。例示のために、トランスポートモードで
動作するIPSEC接続を用いる。トランスポート層3
00が、TCPリソース情報をTLIスイッチリソース
情報に追加したオフロード要求をIPSEC層800に
送ったとき、IPSEC層オフロードが開始する(線4
02’)。IPSEC層800は、IPSECリソース
要件をTCPリソース情報およびTLIスイッチリソー
ス情報に追加したオフロード要求を、ネットワーク層3
02に送る(線802)。リソース要件は、IPSEC
層がオフロードしたいセキュリティアソシエーションの
数を含む。NICがオフロード要求を受け入れる場合、
NICはセキュリティアソシエーションを扱うためのリ
ソースを割り振る。ネットワーク層302は、パラメー
タのリンクリストおよびディスパッチテーブルを有する
完了メッセージを、トランスポート層300ではなくI
PSEC層に送る(線804)。
【0079】IPSEC層800は、完了メッセージを
受け取ると、IPSEC状態が前にオフロードされてい
ない場合はIPSEC層状態をインバウンド記述子およ
びアウトバウンド記述子の一部としてNIC170に送
り、セキュリティアソシエーション中の委任される状態
の所有権をNIC170に譲渡する(線806)。状態
が前にオフロードされている場合は、IPSEC層は参
照カウントをインクリメントする。所有権が譲渡される
と、NIC170はすべてのパケットを復号および暗号
化する。IPSEC層800は、パラメータのリンクリ
ストおよびディスパッチテーブルを有する完了メッセー
ジをトランスポート層に送る(線414’)。
【0080】IPSEC層800からNIC170に渡
されるCONST状態変数は、パケットを特定のセキュ
リティアソシエーションに分類するのに必要な情報と、
インバウンドおよびアウトバウンドのセキュリティアソ
シエーションに固有の情報からなる。CONST変数
は、ソースおよび宛先ポート、プロトコルタイプ、およ
びセキュリティアソシエーション変数を含む。
【0081】CACHED状態変数は、セキュリティア
ソシエーションの存続期間を決定するファクタと、イン
バウンドおよびアウトバウンドのセキュリティアソシエ
ーションに固有の情報を備える。CACHED変数は、
暗号化されるバイトに基づくソフト制限(例えばバイト
カウントに対する鍵更新(rekey))およびハード
制限(例えばバイトカウントに対するストップ)、セキ
ュリティアソシエーションを使用できる最大回数に関す
るソフト制限(例えば事前定義済みティックでの鍵更
新)およびハード制限(例えば事前定義済みティックで
のストップ)、セキュリティアソシエーションを使用で
きる最大アイドル時間に関するハード制限(例えば最大
アイドルティック)を含む。ソフト制限に達したとき
は、NIC170はホスト処理ユニット120に通知す
る。ハード制限に達したときは、NIC170はセキュ
リティアソシエーションを廃棄する。
【0082】DELEGATED変数は、実行情報(r
unning information)と、インバウ
ンドおよびアウトバウンドのセキュリティアソシエーシ
ョンに固有の情報とを含む。DELEGATED変数
は、セキュリティアソシエーションで暗号化または復号
されるバイトのカウント、セキュリティアソシエーショ
ンの存続時間、およびセキュリティアソシエーションの
アイドル時間を含む。
【0083】次に図9に目を向けると、IPSECを使
用してオフロード済みネットワーク接続を周辺デバイス
からホストにアップロードする場合が示されている。以
下の記述では、図7に示した前述のステップは同じであ
り、繰り返し記述しない。トランスポート層300は、
完了メッセージをスイッチ層306に送る前またはその
後に、アップロードする接続をIPSEC層800に通
知する(線710’)。すべてのセキュリティアソシエ
ーションに関連する参照カウントがデクリメントされ
る。0になる参照カウントがない場合は、IPSEC層
800は完了メッセージをトランスポート層300に送
る(線724’)。オフロードされている接続が、特定
のセキュリティアソシエーションを使用する最後の接続
である場合は、IPSEC層800はNIC170にメ
ッセージを送り、委任される状態変数をIPSEC層8
00にアップロードするよう伝える(線900)。NI
C170は、委任される状態変数をIPSEC層800
に返す(線902)。NIC170は、セキュリティア
ソシエーションの使用を停止し、セキュリティアソシエ
ーションに属するパケットをスタック202を介してI
PSEC層800に送る。IPSEC層800はNIC
170に完了メッセージを送り、NIC170は、セキ
ュリティアソシエーションのために割り振られたリソー
スを開放する(線904)。
【0084】セキュリティアソシエーションの参照カウ
ントが0になる場合は、IPSEC層800はネットワ
ーク層302にもメッセージを送り、アップロードされ
る状態をネットワーク層302に通知する(線90
6)。フレーミング層304がネットワーク層302に
完了メッセージを送った後(線722)、ネットワーク
層302はIPSEC層に完了メッセージを送る(線9
08)。IPSEC層800は、トランスポート層に完
了メッセージを送る(線724’)。
【0085】トランスポート層300、ネットワーク層
302、フレーミング層304、またはIPSEC層8
00についての状態がオフロードされているとき、更新
(例えばARP更新やRIP更新)が到着する可能性が
ある。完了メッセージが受け取られる前に更新が行われ
る場合は、単にローカル状態が更新され、オフロード要
求と共に状態オブジェクトが送られた場合に状態が変更
されたことを示すフラグがセットされる。
【0086】キャッシュされる状態を更新するためのN
ICの更新ルーチンが呼び出されている間に更新が行わ
れる場合、競合があり得る。別個のメッセージが次いで
状態を更新し、それによりNIC更新ルーチンが呼び出
された場合、NICは、スケジューリングの問題のせい
で2番目の呼出しを先とみなし、元の更新が到着したと
きに古いデータを使用することになる可能性がある。古
いデータが使用された場合、次の更新が到着するまで誤
ったエントリが使用されることになり、多量のデータが
誤った場所に送信されるか、あるいはドロップされる可
能性がある。この競合状況に対しては2つの解決法が考
えられる。第1の考えられる解決法は、完了メッセージ
が常に第2の更新を実施するようにすることだが、この
結果、多数の更新が入来した場合に再帰問題が生じる可
能性がある。第2の考えられる解決法は、更新にシーケ
ンス番号を付加して、一番最近のシーケンス番号を常に
使用するようにすることである。
【0087】IPSECがサポートする別の動作モード
はトンネリングであり、トンネリングでは、データパケ
ットがセキュア接続の一部として新しいパケットにカプ
セル化される。トンネルは、ネットワークスタック20
2に対しては仮想インタフェースに見える。IPSEC
トンネルをオフロードするステップは、トランスポート
モードでIPSEC接続をオフロードするステップと同
様である。トランスポートモードでは、IPSECヘッ
ダがIPヘッダとTCPヘッダとの間に配置される。ト
ンネルモードでは、UDPを用いてトンネルを提供す
る。ヘッダチェーンは、TCPヘッダ、IPSECヘッ
ダ、UDPヘッダ、IPヘッダ、フレーミング層ヘッダ
と続く。トンネルを確立するために、交渉されたセキュ
リティ接続を記述するインバウンド記述子およびアウト
バウンド記述子を周辺デバイスに送る。記述子は、接続
についての状態変数と、接続を確立するのに必要な他の
情報を含む。トンネルについてのCACHEDおよびD
ELEGATED状態変数は、トランスポートモードの
CACHEDおよびDELEGATED状態変数と同じ
である。トンネルについてのCONST状態変数は、ソ
ースおよび宛先ポート、ローカルアドレス、リモートア
ドレス、プロトコルタイプ、およびセキュリティアソシ
エーション変数を含む。
【0088】ホスト処理ユニットとの密な同期を維持し
て、ネットワークスタック接続を周辺デバイスにオフロ
ードおよびアップロードする方法について述べた。この
方法は多くのプロトコルで用いることができる。例え
ば、使用できるプロトコルにはTCPやSCTPなどが
含まれる。
【0089】本発明の原理を適用できる多くの可能な実
施形態に鑑みれば、図面に関して本明細書に述べた実施
形態は例示的なものでしかなく、本発明の範囲を限定す
るものと解釈すべきではないことが理解されるであろ
う。例えば、本発明の趣旨を逸脱することなく、ソフト
ウェアで示した例示的実施形態の要素をハードウェアで
実装することもでき、またその逆も可能であり、あるい
は例示的実施形態の構成および詳細を修正することもで
きることは、当業者なら理解するであろう。したがっ
て、本明細書に述べた本発明は、頭記の特許請求の範囲
およびその均等物に含まれるこのような実施形態すべて
を企図する。
【図面の簡単な説明】
【図1】本発明が存在する例示的なコンピュータシステ
ムを一般的に示すブロック図である。
【図2】本発明のネットワークスタックの機能層および
バイパス経路を示すブロック図である。
【図3】本発明のNDIS経路の機能層およびバイパス
経路を示すブロック図である。
【図4】本発明のオフロード機構を示すラダー図であ
る。
【図5A】本発明の逆ツリーを示す図である。
【図5B】本発明の逆ツリーを示す図である。
【図5C】本発明の逆ツリーを示す図である。
【図5D】ルート更新の実施後に単一の逆ツリーにマー
ジされた2つの独立した逆ツリーを示す図である。
【図6】ホストコンピュータと周辺デバイスとの間の同
期を示すブロック図である。
【図7】本発明のアップロード機構を示すラダー図であ
る。
【図8】本発明の教示による、セキュアプロトコルスタ
ック接続のオフロード機構を示すラダー図である。
【図9】本発明の教示による、オフロードされたセキュ
アプロトコルスタック接続のアップロード機構を示すラ
ダー図である。
【符号の説明】
100 コンピューティングシステム環境 110 コンピュータ 120 処理ユニット 121 システムバス 130 システムメモリ 131 ROM 132 RAM 133 BIOS 134 オペレーティングシステム 135 アプリケーションプログラム 136 その他のプログラムモジュール 137 プログラムデータ 140 取外し不可能な不揮発性メモリインタフェース 141 ハードディスクドライブ 144 オペレーティングシステム 145 アプリケーションプログラム 146 その他のプログラムモジュール 147 プログラムデータ 150 取外し可能な不揮発性メモリインタフェース 151 磁気ディスクドライブ 152 磁気ディスク 155 光ディスクドライブ 156 光ディスク 160 ユーザ入力インタフェース 161 マウス 162 キーボード 170 ネットワークインタフェースカード(NIC) 171 ローカルエリアネットワーク 172 モデム 173 ワイドエリアネットワーク 180 リモートコンピュータ 181 メモリ記憶デバイス 185 リモートアプリケーションプログラム 190 ビデオインタフェース 191 モニタ 195 出力周辺インタフェース 196 プリンタ 197 スピーカ 200 アプリケーション 202 ネットワークスタック 206 中間層 208 スイッチ 210 チムニー 300 トランスポート層 302 ネットワーク層 304 フレーミング層 306 TLIスイッチ 310 NDISミニドライバ 310 NDISミニポート 312 チムニードライバ 314 ハードウェア 500 逆ツリー 502 ARPテーブルエントリ 504 ルートキャッシュエントリ 506 TCPエントリ 508 TCPエントリ 510 ルートキャッシュエントリ 512 エントリ 514 エントリ 516 ARPテーブルエントリ 800 セキュリティ層 800 IPSEC層
───────────────────────────────────────────────────── フロントページの続き (72)発明者 ジェームズ ピンカートン アメリカ合衆国 98074 ワシントン州 サマミッシュ ノースイースト 204 コ ート 3718 (72)発明者 アボラデ グバデゲシン アメリカ合衆国 98102 ワシントン州 シアトル レイクビュー ブールバード イースト 1232 ナンバー6 (72)発明者 サンジャイ カニヤー アメリカ合衆国 98052 ワシントン州 レッドモンド ノースイースト 148 ア ベニュー 8500 アパートメント エイチ エイチ1120 (72)発明者 エヌ ケー スリニバス アメリカ合衆国 98075 ワシントン州 サマミッシュ サウスイースト 9 ウェ イ 26735 Fターム(参考) 5K030 GA08 HA08 JA01 JA02 JA11 KA13 LE01

Claims (49)

    【特許請求の範囲】
  1. 【請求項1】 コンピュータシステム環境で、ネットワ
    ークスタック状態オブジェクトおよび少なくとも1つの
    関連するプロトコルスタックを、複数のソフトウェア層
    を通って周辺デバイスに行く第1のパスから、スイッチ
    層から前記周辺デバイスに行く第2のパスにオフロード
    する方法であって、前記ネットワークスタック状態オブ
    ジェクトは、キャッシュされる状態変数、ならびに、一
    定の状態変数および委任される状態変数のうちの少なく
    とも一方を有し、前記方法は、 前記ネットワークスタック状態オブジェクトをオフロー
    ドする要求を、前記スイッチ層から前記複数のソフトウ
    ェア層を介して前記周辺デバイスに送るステップであっ
    て、前記要求はリソース要件リストを有するステップ
    と、 前記ネットワークスタック状態オブジェクトがオフロー
    ドされる場合に、 前記複数のソフトウェア層の少なくとも1つにおいてオ
    フロードハンドルを受け取るステップと、 前記複数のソフトウェア層の前記少なくとも1つから前
    記周辺デバイスに前記ネットワークスタック状態オブジ
    ェクトを送るステップと、 前記スイッチ層から前記周辺デバイスにバッファを転送
    するステップとを備えることを特徴とする方法。
  2. 【請求項2】 前記複数のソフトウェア層の少なくとも
    1つは前記リソース要件リストに層リソース要件を追加
    することを特徴とする請求項1に記載の方法。
  3. 【請求項3】 前記周辺デバイスから少なくとも1つの
    第1のディスパッチテーブルを受け取るステップをさら
    に備えることを特徴とする請求項1に記載の方法。
  4. 【請求項4】 前記少なくとも1つの第1のディスパッ
    チテーブルは、ネットワークスタック全体についてのプ
    ロトコルスタックディスパッチテーブル、および前記複
    数のソフトウェア層のうちの1つについての層ディスパ
    ッチテーブルの少なくとも一方を含むことを特徴とする
    請求項3に記載の方法。
  5. 【請求項5】 前記周辺デバイスに第2のディスパッチ
    テーブルを送るステップをさらに備えることを特徴とす
    る請求項3に記載の方法。
  6. 【請求項6】 前記第1のディスパッチテーブルおよび
    前記第2のディスパッチテーブルにパッチを当てて、少
    なくとも1つの機能を実施するための少なくとも1つの
    ソフトウェア層を追加するステップをさらに備えること
    を特徴とする請求項5に記載の方法。
  7. 【請求項7】 前記少なくとも1つのソフトウェア層
    は、追加機能、性能診断、および機能診断のうちの少な
    くとも1つを実施することを特徴とする請求項6に記載
    の方法。
  8. 【請求項8】 前のオフロードが行われたかどうかを前
    記複数のソフトウェア層のそれぞれによって判定するス
    テップと、 前記前のオフロードが行われた場合に、 前記周辺デバイスに前記オフロードハンドルを送るステ
    ップとをさらに備えることを特徴とする請求項1に記載
    の方法。
  9. 【請求項9】 前記複数のソフトウェア層の1つはTC
    P層であり、前記一定の変数は、宛先ポート、ソースポ
    ート、ウィンドウスケールファクタ、および前記オフロ
    ードハンドルのうちの少なくとも1つを含むことを特徴
    とする請求項1に記載の方法。
  10. 【請求項10】 前記複数のソフトウェア層の1つはT
    CP層であり、前記キャッシュされる変数は、TCP変
    数およびIP変数のうちの少なくとも一方を含むことを
    特徴とする請求項1に記載の方法。
  11. 【請求項11】 前記複数のソフトウェア層の1つはT
    CP層であり、前記委任される変数は、現在TCP状
    態、受信ウィンドウサイズ、次のRECVについてのシ
    ーケンス番号、最大送信ウィンドウ、現在輻輳ウィンド
    ウ、送信済み最大シーケンス番号、および次のSEND
    についてのシーケンス番号のうちの少なくとも1つを含
    むことを特徴とする請求項1に記載の方法。
  12. 【請求項12】 前記複数のソフトウェア層の1つはネ
    ットワーク層であり、前記一定の変数は、宛先IPアド
    レスおよびソースIPアドレスのうちの少なくとも一方
    を含むことを特徴とする請求項1に記載の方法。
  13. 【請求項13】 前記複数のソフトウェア層の1つはネ
    ットワーク層であり、前記キャッシュされる変数は次の
    層への前記オフロードハンドルを含むことを特徴とする
    請求項1に記載の方法。
  14. 【請求項14】 前記複数のソフトウェア層の1つはネ
    ットワーク層であり、前記委任される変数は、IPパケ
    ットID開始値、ローカルアドレス、およびリモートア
    ドレスを含むことを特徴とする請求項1に記載の方法。
  15. 【請求項15】 前記複数のソフトウェア層の1つはフ
    レーミング層であり、前記キャッシュされる変数はAR
    Pアドレスを含むことを特徴とする請求項1に記載の方
    法。
  16. 【請求項16】 前記複数のソフトウェア層の1つはI
    Pセキュリティ層であり、前記一定の変数は、ソースポ
    ート、宛先ポート、プロトコルタイプ、ローカルIPア
    ドレス、リモートIPアドレス、およびセキュリティア
    ソシエーション変数のうちの少なくとも1つを含むこと
    を特徴とする請求項1に記載の方法。
  17. 【請求項17】 前記複数のソフトウェア層の1つはI
    Pセキュリティ層であり、前記キャッシュされる変数
    は、バイトカウントに対する鍵更新、バイトカウントに
    対するストップ、事前定義済みティックにおける鍵更
    新、事前定義済みティックにおけるストップ、およびセ
    キュリティアソシエーションを使用できる最大アイドル
    時間のうちの少なくとも1つを含むことを特徴とする請
    求項1に記載の方法。
  18. 【請求項18】 前記複数のソフトウェア層の1つはI
    Pセキュリティ層であり、前記委任される変数は、セキ
    ュリティアソシエーションで暗号化または復号されるバ
    イトのカウント、前記セキュリティアソシエーションに
    残された存続時間、および前記セキュリティアソシエー
    ションに残されたアイドル時間のうちの少なくとも1つ
    を含むことを特徴とする請求項1に記載の方法。
  19. 【請求項19】 ホスト処理デバイスが、前記キャッシ
    ュされる変数を処理し、前記キャッシュされる状態中の
    変数が変化したときに前記キャッシュされる変数を更新
    するよう前記周辺デバイスに命じることを特徴とする請
    求項1に記載の方法。
  20. 【請求項20】 少なくとも1つのキャッシュされる変
    数を更新するために前記周辺デバイスに更新メッセージ
    を送るステップをさらに備えることを特徴とする請求項
    1に記載の方法。
  21. 【請求項21】 前記更新メッセージにシーケンス番号
    を付加するステップをさらに備えることを特徴とする請
    求項20に記載の方法。
  22. 【請求項22】 オフロード完了メッセージが受け取ら
    れて、それにより前記バッファが前記周辺デバイスに転
    送されるまでは、前記複数のソフトウェア層を介してデ
    ータを送信するステップをさらに備えることを特徴とす
    る請求項1に記載の方法。
  23. 【請求項23】 前記複数のソフトウェア層のうちの1
    つに関する特定の構造がオフロードされつつある場合
    に、前記複数のソフトウェア層のうちの1つに対する追
    加のオフロード要求を、前記オフロード要求が完了する
    までブロックするステップをさらに備えることを特徴と
    する請求項1に記載の方法。
  24. 【請求項24】 前記ネットワークスタック状態オブジ
    ェクトがオフロードされるかどうかを前記複数のソフト
    ウェア層の少なくとも1つによって判定するステップを
    さらに備えることを特徴とする請求項1に記載の方法。
  25. 【請求項25】 前記オフロード要求が送られるかどう
    かを判定するステップをさらに備えることを特徴とする
    請求項1に記載の方法。
  26. 【請求項26】 前記オフロード要求が送られるかどう
    かを判定するステップは、 オフロードする特定のサービスを選択するステップ、 前記ネットワークスタック状態オブジェクトに関連する
    バイト数およびパケット数のうちの一方がホストリソー
    スを多量に消費しているかどうかを判定するステップ、 オフロードの実施をポリシーが要求するかどうかを判定
    するステップ、ならびにプロセッサ利用、データキャッ
    シュ使用、ページテーブルキャッシュ使用およびメモリ
    帯域幅使用のうちの少なくとも1つがしきい値を超える
    かどうかを判定するステップのうち、少なくとも1つの
    ステップを含むことを特徴とする請求項25に記載の方
    法。
  27. 【請求項27】 IP ID空間全体の一部を前記周辺
    デバイスに割り当てるステップをさらに備えることを特
    徴とする請求項1に記載の方法。
  28. 【請求項28】 前記IP ID空間全体の一部を割り
    当てるステップは、前記IP ID空間全体のほぼ半分
    を前記周辺デバイスに割り当てるステップを含むことを
    特徴とする請求項27に記載の方法。
  29. 【請求項29】 パケットに対するIP IDを、以下
    の式 Cur_IPID=[(Start_IPID_For_This_Path)+(Counter_For_
    This_Path)mod32K]mod64K Counter_For_This_Path=Counter_For_This_Path+1 に従って生成するステップをさらに備えることを特徴と
    する請求項28に記載の方法。
  30. 【請求項30】 請求項1に記載のステップを実施する
    ためのコンピュータ実行可能命令を有することを特徴と
    するコンピュータ可読媒体。
  31. 【請求項31】 前記周辺デバイスから少なくとも1つ
    の第1のディスパッチテーブルを受け取ること、および
    前記周辺デバイスに第2のディスパッチテーブルを送る
    ことを含むステップを実施するための実行可能命令をさ
    らに有することを特徴とする請求項30に記載のコンピ
    ュータ可読媒体。
  32. 【請求項32】 前記キャッシュされる変数を処理する
    こと、および前記キャッシュされる状態中の変数が変化
    したときに前記キャッシュされる変数を更新するよう前
    記周辺デバイスに命じることを含むステップを実施する
    ための実行可能命令をさらに有することを特徴とする請
    求項30に記載のコンピュータ可読媒体。
  33. 【請求項33】 コンピュータシステム環境で、ネット
    ワークスタック状態オブジェクトを、複数のソフトウェ
    ア層を通って周辺デバイスに行く第1のパスから、スイ
    ッチ層から前記周辺デバイスに行く第2のパスにオフロ
    ードする方法であって、前記ネットワークスタック状態
    オブジェクトは、キャッシュされる変数、ならびに、一
    定の状態変数および委任される状態変数のうちの少なく
    とも一方を有し、前記方法は、 前記ネットワークスタック状態オブジェクトをオフロー
    ドする要求を前記スイッチ層から受け取るステップであ
    って、前記要求はリソース要件リストを有するステップ
    と、 前記ネットワークスタック状態オブジェクトがオフロー
    ドされるかどうかを判定するステップと、 前記ネットワークスタック状態オブジェクトがオフロー
    ドされる場合に、 リソースを割り振るステップと、 前記複数のソフトウェア層の少なくとも1つにオフロー
    ドハンドルを渡すステップと、 前記複数のソフトウェア層の前記少なくとも1つから、
    前記周辺デバイスへの前記ネットワークスタック状態オ
    ブジェクトを受け取るステップと、 前記スイッチ層からバッファを受け取るステップとを備
    えることを特徴とする方法。
  34. 【請求項34】 前記スイッチ層からディスパッチテー
    ブルを受け取るステップをさらに備えることを特徴とす
    る請求項33に記載の方法。
  35. 【請求項35】 前記スイッチ層にディスパッチテーブ
    ルを送るステップをさらに備えることを特徴とする請求
    項33に記載の方法。
  36. 【請求項36】 請求項33に記載のステップを実施す
    るためのコンピュータ実行可能命令を有することを特徴
    とするコンピュータ可読媒体。
  37. 【請求項37】 前記スイッチ層から第1のディスパッ
    チテーブルを受け取ること、および前記スイッチ層に第
    2のディスパッチテーブルを送ることを含むステップを
    実施するためのコンピュータ実行可能命令をさらに有す
    ることを特徴とする請求項36に記載のコンピュータ可
    読媒体。
  38. 【請求項38】 コンピュータ環境で、ネットワークス
    タック状態オブジェクトおよび少なくとも1つの関連す
    るプロトコルスタックを、複数のソフトウェア層を通っ
    て周辺デバイスに行く第1のパスから、スイッチ層から
    前記周辺デバイスに行く第2のパスにオフロードする方
    法であって、前記ネットワークスタック状態オブジェク
    トは、キャッシュされる状態、ならびに、一定の状態お
    よび委任される状態のうちの少なくとも一方を有し、前
    記方法は、 前記プロトコルスタックをオフロードする要求を、前記
    複数のソフトウェア層を介して前記周辺デバイスに送る
    ステップであって、前記要求はリソース要件リストを有
    するステップと、 前記プロトコルスタックがオフロードされる場合に、 前記複数のソフトウェア層の各層につき、前記層が前の
    オフロードからの既存のオフロードハンドルを有さない
    場合に前記リソース要件リストにリソース要件を追加す
    ること、および前記リソース要件リストに既存のオフロ
    ードハンドルを追加することのうちの一方を実施するス
    テップと、 状態をオフロードしつつあり既存のオフロードハンドル
    を有さない前記複数のソフトウェア層のそれぞれにつ
    き、キャッシュされる状態を前記周辺デバイスに送るス
    テップと、 前記プロトコルスタックがオフロードされた場合に、前
    記スイッチ層から前記周辺デバイスにバッファを転送す
    るステップとを備えることを特徴とする方法。
  39. 【請求項39】 前記複数のソフトウェア層はトランス
    ポート層、ネットワーク層、およびフレーミング層を含
    み、状態エントリが第1の状態エントリから変化した場
    合に、前記リソース要件リストにリソース要件を追加す
    るステップは、 プロトコル状態エントリが第1のプロトコル状態エント
    リから変化した場合に、前記リソース要件リストにトラ
    ンスポートリソース要件を追加するステップと、 ネットワーク状態エントリが第1のネットワーク状態エ
    ントリから変化した場合に、前記リソース要件リストに
    ネットワークリソース要件を追加するステップと、 フレーミング状態エントリが第1のフレーミング状態エ
    ントリから変化した場合に、前記リソース要件リストに
    フレーミングリソース要件を追加するステップとを含む
    ことを特徴とする請求項38に記載の方法。
  40. 【請求項40】 前記複数のソフトウェア層の各層につ
    き、 状態エントリが変化していない場合に前記周辺デバイス
    に第1のハンドルを送るステップをさらに備えることを
    特徴とする請求項38に記載の方法。
  41. 【請求項41】 前記状態エントリが変化していない場
    合に前記周辺デバイスに前記第1のハンドルを送るステ
    ップは、プロトコル状態エントリが変化していない場合
    に、前記周辺デバイスに第1のプロトコルハンドルを送
    るステップを含むことを特徴とする請求項40に記載の
    方法。
  42. 【請求項42】 前記状態エントリが変化していない場
    合に前記周辺デバイスに前記第1のハンドルを送るステ
    ップは、ネットワーク状態エントリが変化していない場
    合に、前記周辺デバイスに第1のネットワークハンドル
    を送るステップを含むことを特徴とする請求項40に記
    載の方法。
  43. 【請求項43】 前記状態エントリが変化していない場
    合に前記周辺デバイスに前記第1のハンドルを送るステ
    ップは、フレーミング状態エントリが変化していない場
    合に、前記周辺デバイスにフレーミングハンドルを送る
    ステップを含むことを特徴とする請求項40に記載の方
    法。
  44. 【請求項44】 請求項39に記載のステップを実施す
    るためのコンピュータ実行可能命令を有することを特徴
    とするコンピュータ可読媒体。
  45. 【請求項45】 前記複数のソフトウェア層の各層につ
    き、 前記状態エントリが変化していない場合に前記周辺デバ
    イスに前記第1のハンドルを送ることを含むステップを
    実施するための実行可能命令をさらに有することを特徴
    とする請求項44に記載のコンピュータ可読媒体。
  46. 【請求項46】 前記複数のソフトウェア層はトランス
    ポート層、ネットワーク層、およびフレーミング層を含
    み、状態エントリが第1の状態エントリから変化した場
    合に、前記リソース要件リストにリソース要件を追加す
    るステップは、 プロトコル状態エントリが第1のプロトコル状態エント
    リから変化した場合に、前記リソース要件リストにトラ
    ンスポートリソース要件を追加するステップと、 ネットワーク状態エントリが第1のネットワーク状態エ
    ントリから変化した場合に、前記リソース要件リストに
    ネットワークリソース要件を追加するステップと、 フレーミング状態エントリが第1のフレーミング状態エ
    ントリから変化した場合に、前記リソース要件リストに
    フレーミングリソース要件を追加するステップとを含む
    ことを特徴とする請求項44に記載の方法。
  47. 【請求項47】 コンピュータ環境で、プロトコルスタ
    ックを、複数のソフトウェア層を通って周辺デバイスに
    行く第1のパスから、スイッチ層から前記周辺デバイス
    に行く第2のパスにオフロードする方法であって、 前記プロトコルスタックをオフロードする要求を受け取
    るステップであって、前記要求は、リソース要件リスト
    と、前記複数のソフトウェア層の少なくとも1つに対す
    る少なくとも1つの既存のオフロードハンドルとを有す
    るステップと、 前記プロトコルスタックがオフロードされるかどうかを
    判定するステップと、 前記プロトコルスタックがオフロードされる場合に、前
    記リソース要件リストを扱うためのリソースを割り振る
    ステップと、 既存のオフロードハンドルを有さない前記複数の層の各
    層が層状態オブジェクトをオフロードした場合に、前記
    各層にオフロードハンドルを送るステップとを備えるこ
    とを特徴とする方法。
  48. 【請求項48】 前記複数のソフトウェア層はプロトコ
    ル層、ネットワーク層およびフレーミング層を含み、既
    存のオフロードハンドルを有さない前記複数の層の各層
    が層状態オブジェクトをオフロードした場合に前記各層
    に前記オフロードハンドルを送るステップは、 プロトコル状態オブジェクトがオフロードされた場合
    に、前記プロトコル層にプロトコルハンドルを送るステ
    ップと、 ネットワーク状態オブジェクトがオフロードされた場合
    に、前記ネットワーク層にネットワークハンドルを送る
    ステップと、 フレーミング状態オブジェクトがオフロードされた場合
    に、前記フレーミング層にフレーミングハンドルを送る
    ステップとを含むことを特徴とする請求項47に記載の
    方法。
  49. 【請求項49】 請求項47に記載のステップを実施す
    るためのコンピュータ実行可能命令を有することを特徴
    とするコンピュータ可読媒体。
JP2003124294A 2002-04-30 2003-04-28 ネットワークスタックをオフロードする方法 Expired - Fee Related JP4327496B2 (ja)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US10/135,489 US7007103B2 (en) 2002-04-30 2002-04-30 Method to offload a network stack
US10/135,489 2002-04-30

Publications (2)

Publication Number Publication Date
JP2003333076A true JP2003333076A (ja) 2003-11-21
JP4327496B2 JP4327496B2 (ja) 2009-09-09

Family

ID=29215650

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2003124294A Expired - Fee Related JP4327496B2 (ja) 2002-04-30 2003-04-28 ネットワークスタックをオフロードする方法

Country Status (5)

Country Link
US (3) US7007103B2 (ja)
EP (1) EP1359724B1 (ja)
JP (1) JP4327496B2 (ja)
AT (1) ATE327626T1 (ja)
DE (1) DE60305378T2 (ja)

Cited By (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2004280826A (ja) * 2003-03-12 2004-10-07 Microsoft Corp プロトコル独立型クライアント側キャッシュ(protocol−independentclient−sidecaching)システムおよび方法
JP2005085284A (ja) * 2003-09-10 2005-03-31 Microsoft Corp フェイルオーバーイベントをサポートするネットワーク状態オブジェクトの多重オフロード
JP2005192216A (ja) * 2003-12-19 2005-07-14 Nvidia Corp トランスポートオフロードエンジンのための再送信システムおよび方法
JP2006074780A (ja) * 2004-09-02 2006-03-16 Internatl Business Mach Corp <Ibm> 待ち時間の少ないデータ暗号解除インターフェース
JP2006191537A (ja) * 2004-11-12 2006-07-20 Microsoft Corp 統合ホストプロトコルスタック管理を使用するセキュアなインターネットプロトコル(ispec)オフロードのための方法および装置
JP2006216018A (ja) * 2005-02-01 2006-08-17 Microsoft Corp ユーザモードでのネットワーク接続のディスパッチ
JP2008061223A (ja) * 2006-08-04 2008-03-13 Canon Inc 通信装置及び通信方法
JP2009237768A (ja) * 2008-03-26 2009-10-15 Toshiba Corp データ受信装置、データ受信方法およびデータ処理プログラム
US7693166B2 (en) 2005-02-17 2010-04-06 Nec Corporation Method and apparatus for transmitting data to network and method and apparatus for receiving data from network
JP2011018373A (ja) * 2002-04-30 2011-01-27 Microsoft Corp オフロードされたネットワークスタックの状態オブジェクトをアップロードする方法及びそれを同期する方法
JP2012510126A (ja) * 2008-11-26 2012-04-26 マイクロソフト コーポレーション リモートデスクトッププロトコルのためのハードウェアアクセラレーション
US8725879B2 (en) 2009-02-06 2014-05-13 Fujitsu Limited Network interface device
US9667607B2 (en) 2011-11-04 2017-05-30 Ricoh Company, Ltd. Control apparatus and communications control method

Families Citing this family (127)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5978379A (en) * 1997-01-23 1999-11-02 Gadzoox Networks, Inc. Fiber channel learning bridge, learning half bridge, and protocol
US6697868B2 (en) * 2000-02-28 2004-02-24 Alacritech, Inc. Protocol processing stack for use with intelligent network interface device
US6904519B2 (en) * 1998-06-12 2005-06-07 Microsoft Corporation Method and computer program product for offloading processing tasks from software to hardware
US7430171B2 (en) 1998-11-19 2008-09-30 Broadcom Corporation Fibre channel arbitrated loop bufferless switch circuitry to increase bandwidth without significant increase in cost
US7447795B2 (en) * 2001-04-11 2008-11-04 Chelsio Communications, Inc. Multi-purpose switching network interface controller
US8218555B2 (en) 2001-04-24 2012-07-10 Nvidia Corporation Gigabit ethernet adapter
US7212534B2 (en) 2001-07-23 2007-05-01 Broadcom Corporation Flow based congestion control
US7295555B2 (en) 2002-03-08 2007-11-13 Broadcom Corporation System and method for identifying upper layer protocol message boundaries
US7007103B2 (en) * 2002-04-30 2006-02-28 Microsoft Corporation Method to offload a network stack
US7171505B2 (en) * 2002-05-02 2007-01-30 International Business Machines Corporation Universal network interface connection
US7457845B2 (en) * 2002-08-23 2008-11-25 Broadcom Corporation Method and system for TCP/IP using generic buffers for non-posting TCP applications
US7934021B2 (en) 2002-08-29 2011-04-26 Broadcom Corporation System and method for network interfacing
US7426579B2 (en) * 2002-09-17 2008-09-16 Broadcom Corporation System and method for handling frames in multiple stack environments
US7411959B2 (en) 2002-08-30 2008-08-12 Broadcom Corporation System and method for handling out-of-order frames
US7346701B2 (en) 2002-08-30 2008-03-18 Broadcom Corporation System and method for TCP offload
US7397800B2 (en) * 2002-08-30 2008-07-08 Broadcom Corporation Method and system for data placement of out-of-order (OOO) TCP segments
US8180928B2 (en) 2002-08-30 2012-05-15 Broadcom Corporation Method and system for supporting read operations with CRC for iSCSI and iSCSI chimney
US7313623B2 (en) * 2002-08-30 2007-12-25 Broadcom Corporation System and method for TCP/IP offload independent of bandwidth delay product
US7519650B2 (en) 2002-09-05 2009-04-14 International Business Machines Corporation Split socket send queue apparatus and method with efficient queue flow control, retransmission and sack support mechanisms
US7058797B2 (en) * 2002-09-10 2006-06-06 Veritas Operating Corporation Use of off-motherboard resources in a computer system
US7936766B2 (en) * 2002-09-20 2011-05-03 Wind River Systems, Inc. System and method for separating logical networks on a dual protocol stack
US7313148B2 (en) * 2002-11-18 2007-12-25 Sun Microsystems, Inc. Method and system for TCP large segment offload with ack-based transmit scheduling
US7370082B2 (en) * 2003-05-09 2008-05-06 Microsoft Corporation Remote invalidation of pre-shared RDMA key
US7412488B2 (en) * 2003-06-05 2008-08-12 Nvidia Corporation Setting up a delegated TCP connection for hardware-optimized processing
US7420931B2 (en) * 2003-06-05 2008-09-02 Nvidia Corporation Using TCP/IP offload to accelerate packet filtering
US20050022017A1 (en) * 2003-06-24 2005-01-27 Maufer Thomas A. Data structures and state tracking for network protocol processing
US20050050187A1 (en) * 2003-09-03 2005-03-03 International Business Machines Corporation Method and apparatus for support of bottleneck avoidance in an intelligent adapter
US7526577B2 (en) * 2003-09-19 2009-04-28 Microsoft Corporation Multiple offload of network state objects with support for failover events
US8285881B2 (en) * 2003-09-10 2012-10-09 Broadcom Corporation System and method for load balancing and fail over
US20050060538A1 (en) * 2003-09-15 2005-03-17 Intel Corporation Method, system, and program for processing of fragmented datagrams
US8655755B2 (en) * 2003-10-22 2014-02-18 Scottrade, Inc. System and method for the automated brokerage of financial instruments
US8549345B1 (en) 2003-10-31 2013-10-01 Oracle America, Inc. Methods and apparatus for recovering from a failed network interface card
US7689702B1 (en) * 2003-10-31 2010-03-30 Sun Microsystems, Inc. Methods and apparatus for coordinating processing of network connections between two network protocol stacks
US7978716B2 (en) * 2003-11-24 2011-07-12 Citrix Systems, Inc. Systems and methods for providing a VPN solution
US7636372B2 (en) * 2003-12-19 2009-12-22 Broadcom Corporation Method and system for providing smart offload and upload
US7814219B2 (en) 2003-12-19 2010-10-12 Intel Corporation Method, apparatus, system, and article of manufacture for grouping packets
US20050188074A1 (en) * 2004-01-09 2005-08-25 Kaladhar Voruganti System and method for self-configuring and adaptive offload card architecture for TCP/IP and specialized protocols
US20050223088A1 (en) * 2004-03-31 2005-10-06 Cisco Technology, Inc. System using planning information to modify operation of a digital network
US20050246443A1 (en) * 2004-03-31 2005-11-03 Intel Corporation Management of offload operations in a network storage driver
US7586951B2 (en) * 2004-04-27 2009-09-08 Intel Corporation Method, apparatus, and system for idle state definition for power management
US7826457B2 (en) * 2004-05-11 2010-11-02 Broadcom Corp. Method and system for handling out-of-order segments in a wireless system via direct data placement
US7831745B1 (en) 2004-05-25 2010-11-09 Chelsio Communications, Inc. Scalable direct memory access using validation of host and scatter gather engine (SGE) generation indications
US7757074B2 (en) 2004-06-30 2010-07-13 Citrix Application Networking, Llc System and method for establishing a virtual private network
US8495305B2 (en) 2004-06-30 2013-07-23 Citrix Systems, Inc. Method and device for performing caching of dynamically generated objects in a data communication network
US8739274B2 (en) * 2004-06-30 2014-05-27 Citrix Systems, Inc. Method and device for performing integrated caching in a data communication network
US7386566B2 (en) * 2004-07-15 2008-06-10 Microsoft Corporation External metadata processing
KR20070039597A (ko) * 2004-07-23 2007-04-12 사이트릭스 시스템스, 인크. 사설망에 대한 원격 액세스를 보안화하기 위한 방법 및시스템
AU2005266943C1 (en) 2004-07-23 2011-01-06 Citrix Systems, Inc. Systems and methods for optimizing communications between network nodes
JP4091095B2 (ja) * 2004-08-06 2008-05-28 シャープ株式会社 送信機、受信機、通信システム、通信方法、通信プログラム
US7769905B1 (en) * 2004-08-13 2010-08-03 Oracle America, Inc. Adapting network communication to asynchronous interfaces and methods
ES2335788T3 (es) * 2004-09-16 2010-04-05 Beckhoff Automation Gmbh Procedimiento para la transmision de datos y sistema de automatizacion para el empleo de un procedimiento de transmision de datos de este tipo.
US8145908B1 (en) * 2004-10-29 2012-03-27 Akamai Technologies, Inc. Web content defacement protection system
US20060153215A1 (en) * 2004-12-20 2006-07-13 Linden Cornett Connection context prefetch
US20060253605A1 (en) * 2004-12-30 2006-11-09 Prabakar Sundarrajan Systems and methods for providing integrated client-side acceleration techniques to access remote applications
US7810089B2 (en) 2004-12-30 2010-10-05 Citrix Systems, Inc. Systems and methods for automatic installation and execution of a client-side acceleration program
US8700695B2 (en) * 2004-12-30 2014-04-15 Citrix Systems, Inc. Systems and methods for providing client-side accelerated access to remote applications via TCP pooling
US8954595B2 (en) 2004-12-30 2015-02-10 Citrix Systems, Inc. Systems and methods for providing client-side accelerated access to remote applications via TCP buffering
US8549149B2 (en) 2004-12-30 2013-10-01 Citrix Systems, Inc. Systems and methods for providing client-side accelerated access to remote applications via TCP multiplexing
US8255456B2 (en) 2005-12-30 2012-08-28 Citrix Systems, Inc. System and method for performing flash caching of dynamically generated objects in a data communication network
US7787391B2 (en) * 2005-01-28 2010-08-31 Sharp Kabushiki Kaisha Communication device, communication system, communication method, communication program, and communication circuit
US8284684B2 (en) 2005-01-28 2012-10-09 Sharp Kabushiki Kaisha Communication device, communication system, communication method, and communication circuit
CN101964705B (zh) 2005-01-28 2012-08-08 夏普株式会社 通信设备、通信***、通信方法、通信程序、通信电路
US8051182B2 (en) * 2005-01-28 2011-11-01 Sharp Kabushiki Kaisha Communication device, communication system, communication method, communication program, and communication circuit
US7454667B2 (en) * 2005-04-26 2008-11-18 Intel Corporation Techniques to provide information validation and transfer
FI20055239A (fi) * 2005-05-13 2006-11-14 Nethawk Oy Menetelmä sanomien käsittelemiseksi tietojenkäsittelylaite ja tietokoneohjelmatuote
US7653070B2 (en) * 2005-06-07 2010-01-26 Broadcom Corporation Method and system for supporting efficient and cache-friendly TCP session lookup operations based on canonicalization tags
US7430220B2 (en) * 2005-07-29 2008-09-30 International Business Machines Corporation System load based dynamic segmentation for network interface cards
US7660264B1 (en) 2005-12-19 2010-02-09 Chelsio Communications, Inc. Method for traffic schedulign in intelligent network interface circuitry
US7715436B1 (en) 2005-11-18 2010-05-11 Chelsio Communications, Inc. Method for UDP transmit protocol offload processing with traffic management
US7616563B1 (en) 2005-08-31 2009-11-10 Chelsio Communications, Inc. Method to implement an L4-L7 switch using split connections and an offloading NIC
US7660306B1 (en) 2006-01-12 2010-02-09 Chelsio Communications, Inc. Virtualizing the operation of intelligent network interface circuitry
US7724658B1 (en) 2005-08-31 2010-05-25 Chelsio Communications, Inc. Protocol offload transmit traffic management
US7886083B2 (en) * 2005-08-31 2011-02-08 Microsoft Corporation Offloaded neighbor cache entry synchronization
US7639715B1 (en) 2005-09-09 2009-12-29 Qlogic, Corporation Dedicated application interface for network systems
US7760733B1 (en) 2005-10-13 2010-07-20 Chelsio Communications, Inc. Filtering ingress packets in network interface circuitry
US20090262661A1 (en) * 2005-11-10 2009-10-22 Sharp Kabushiki Kaisha Data transmission device and method of controlling same, data receiving device and method of controlling same, data transfer system, data transmission device control program, data receiving device control program, and storage medium containing the programs
US7921184B2 (en) * 2005-12-30 2011-04-05 Citrix Systems, Inc. System and method for performing flash crowd caching of dynamically generated objects in a data communication network
US8301839B2 (en) * 2005-12-30 2012-10-30 Citrix Systems, Inc. System and method for performing granular invalidation of cached dynamically generated objects in a data communication network
US20070156974A1 (en) * 2006-01-03 2007-07-05 Haynes John E Jr Managing internet small computer systems interface communications
US8700800B2 (en) * 2006-02-15 2014-04-15 Tropos Networks, Inc. Roaming of clients between gateways of clusters of a wireless mesh network
US7895646B2 (en) * 2006-05-25 2011-02-22 International Business Machines Corporation IKE daemon self-adjusting negotiation throttle
US20070297334A1 (en) * 2006-06-21 2007-12-27 Fong Pong Method and system for network protocol offloading
US7894453B2 (en) * 2006-07-20 2011-02-22 Oracle America, Inc. Multiple virtual network stack instances
US7885257B2 (en) * 2006-07-20 2011-02-08 Oracle America, Inc. Multiple virtual network stack instances using virtual network interface cards
US8543808B2 (en) * 2006-08-24 2013-09-24 Microsoft Corporation Trusted intermediary for network data processing
US8661160B2 (en) * 2006-08-30 2014-02-25 Intel Corporation Bidirectional receive side scaling
US8214509B2 (en) * 2006-10-02 2012-07-03 Microsoft Corporation Receive coalescing and direct data placement
JP4219950B2 (ja) * 2006-10-16 2009-02-04 シャープ株式会社 通信機器、通信方法、通信回路、携帯電話機、プログラム、およびプログラムを記録したコンピュータ読み取り可能な記録媒体
GB0621774D0 (en) * 2006-11-01 2006-12-13 Level 5 Networks Inc Driver level segmentation
US9794378B2 (en) * 2006-11-08 2017-10-17 Standard Microsystems Corporation Network traffic controller (NTC)
US8467390B2 (en) * 2006-12-14 2013-06-18 Oracle America, Inc. Method and system for network stack tuning
US7966039B2 (en) * 2007-02-02 2011-06-21 Microsoft Corporation Bidirectional dynamic offloading of tasks between a host and a mobile device
US8935406B1 (en) 2007-04-16 2015-01-13 Chelsio Communications, Inc. Network adaptor configured for connection establishment offload
US8589587B1 (en) 2007-05-11 2013-11-19 Chelsio Communications, Inc. Protocol offload in intelligent network adaptor, including application level signalling
US8060644B1 (en) 2007-05-11 2011-11-15 Chelsio Communications, Inc. Intelligent network adaptor with end-to-end flow control
US7826350B1 (en) 2007-05-11 2010-11-02 Chelsio Communications, Inc. Intelligent network adaptor with adaptive direct data placement scheme
US7831720B1 (en) 2007-05-17 2010-11-09 Chelsio Communications, Inc. Full offload of stateful connections, with partial connection offload
JP4964683B2 (ja) * 2007-06-18 2012-07-04 株式会社リコー 通信装置およびプログラム
US20090019160A1 (en) * 2007-07-12 2009-01-15 International Business Machines Corporation Method and system for workload management utilizing tcp/ip and operating system data
US8014282B2 (en) * 2008-06-26 2011-09-06 Intel Corporation Hashing packet contents to determine a processor
GB2462825A (en) * 2008-08-19 2010-02-24 Howler Technologies Ltd Processing packetised data using a Cell Broadband Engine architecture
US8914417B2 (en) 2009-01-07 2014-12-16 International Business Machines Corporation Apparatus, system, and method for maintaining a context stack
US20100215052A1 (en) * 2009-02-20 2010-08-26 Inventec Corporation Iscsi network interface card with arp/icmp resolution function
US8726007B2 (en) * 2009-03-31 2014-05-13 Novell, Inc. Techniques for packet processing with removal of IP layer routing dependencies
US9497039B2 (en) * 2009-05-28 2016-11-15 Microsoft Technology Licensing, Llc Agile data center network architecture
US8416692B2 (en) 2009-05-28 2013-04-09 Microsoft Corporation Load balancing across layer-2 domains
WO2011068091A1 (ja) 2009-12-04 2011-06-09 日本電気株式会社 サーバ及びフロー制御プログラム
US9391716B2 (en) 2010-04-05 2016-07-12 Microsoft Technology Licensing, Llc Data center using wireless communication
US8726093B2 (en) 2010-06-30 2014-05-13 Oracle America, Inc. Method and system for maintaining direct hardware access in the event of network interface card failure
US8694618B2 (en) * 2011-04-13 2014-04-08 Microsoft Corporation Maximizing data transfer through multiple network devices
US8627412B2 (en) 2011-04-14 2014-01-07 Microsoft Corporation Transparent database connection reconnect
US8966499B2 (en) 2011-09-09 2015-02-24 Microsoft Technology Licensing, Llc Virtual switch extensibility
JP5857735B2 (ja) 2011-12-27 2016-02-10 株式会社リコー 画像処理方法、画像処理装置、及び制御プログラム
US8848741B2 (en) 2012-06-21 2014-09-30 Breakingpoint Systems, Inc. High-speed CLD-based TCP segmentation offload
US8824508B2 (en) * 2012-06-21 2014-09-02 Breakingpoint Systems, Inc. High-speed CLD-based TCP assembly offload
US9058219B2 (en) 2012-11-02 2015-06-16 Amazon Technologies, Inc. Custom resources in a resource stack
US9954751B2 (en) 2015-05-29 2018-04-24 Microsoft Technology Licensing, Llc Measuring performance of a network using mirrored probe packets
CN106559460B (zh) * 2015-09-30 2020-06-26 华为技术有限公司 软件定义协议网络中分配资源的方法和***
FR3052890B1 (fr) * 2016-06-21 2018-07-13 Thales Sa Procede de reception garantie de signaux communs dans un systeme avionique comportant une pluralite de calculateurs electroniques
US20180150256A1 (en) * 2016-11-29 2018-05-31 Intel Corporation Technologies for data deduplication in disaggregated architectures
US11409569B2 (en) * 2018-03-29 2022-08-09 Xilinx, Inc. Data processing system
CN108600002B (zh) * 2018-04-17 2021-02-26 浙江工业大学 一种基于半监督学习的移动边缘计算分流决策方法
US10531436B1 (en) 2018-09-12 2020-01-07 Capital One Services, Llc Multiple network connections to increase data throughput of mobile device
US11863318B2 (en) * 2020-08-31 2024-01-02 Frontiir Pte Ltd. Error correction for network packets
US11568089B2 (en) * 2020-08-31 2023-01-31 Frontiir Pte Ltd. Offloading operations from a primary processing device to a secondary processing device
CN115225690B (zh) * 2022-06-22 2024-04-19 中科驭数(北京)科技有限公司 基于硬件协议栈的tcp长连接保活方法及装置
CN117041353B (zh) * 2023-10-08 2024-01-16 北京小米移动软件有限公司 任务处理的方法、装置、电子设备及存储介质

Family Cites Families (30)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5835726A (en) * 1993-12-15 1998-11-10 Check Point Software Technologies Ltd. System for securing the flow of and selectively modifying packets in a computer network
US6067407A (en) * 1995-06-30 2000-05-23 Canon Information Systems, Inc. Remote diagnosis of network device over a local area network
US5737337A (en) * 1996-09-30 1998-04-07 Motorola, Inc. Method and apparatus for interleaving data in an asymmetric digital subscriber line (ADSL) transmitter
US6094712A (en) 1996-12-04 2000-07-25 Giganet, Inc. Computer network interface for direct mapping of data transferred between applications on different host computers from virtual addresses to physical memory addresses application data
US7133940B2 (en) * 1997-10-14 2006-11-07 Alacritech, Inc. Network interface device employing a DMA command queue
US7185266B2 (en) * 2003-02-12 2007-02-27 Alacritech, Inc. Network interface device for error detection using partial CRCS of variable length message portions
US6434620B1 (en) * 1998-08-27 2002-08-13 Alacritech, Inc. TCP/IP offload network interface device
US6226680B1 (en) * 1997-10-14 2001-05-01 Alacritech, Inc. Intelligent network interface system method for protocol processing
US8782199B2 (en) * 1997-10-14 2014-07-15 A-Tech Llc Parsing a packet header
US6687758B2 (en) * 2001-03-07 2004-02-03 Alacritech, Inc. Port aggregation for network connections that are offloaded to network interface devices
US6757746B2 (en) 1997-10-14 2004-06-29 Alacritech, Inc. Obtaining a destination address so that a network interface device can write network data without headers directly into host memory
US5937169A (en) * 1997-10-29 1999-08-10 3Com Corporation Offload of TCP segmentation to a smart adapter
US6765901B1 (en) 1998-06-11 2004-07-20 Nvidia Corporation TCP/IP/PPP modem
US6141705A (en) * 1998-06-12 2000-10-31 Microsoft Corporation System for querying a peripheral device to determine its processing capabilities and then offloading specific processing tasks from a host to the peripheral device when needed
US6904519B2 (en) * 1998-06-12 2005-06-07 Microsoft Corporation Method and computer program product for offloading processing tasks from software to hardware
US6711164B1 (en) * 1999-11-05 2004-03-23 Nokia Corporation Method and apparatus for performing IP-ID regeneration to improve header compression efficiency
US6829357B1 (en) * 1999-12-14 2004-12-07 Trw Inc. Communication system having a transmitter and a receiver that engage in reduced size encrypted data communication
JP3975045B2 (ja) * 2000-01-24 2007-09-12 パナソニック コミュニケーションズ株式会社 ネットワーク制御装置及びリモート表示装置
US20010034754A1 (en) * 2000-03-17 2001-10-25 Elwahab Amgad Mazen Device, system and method for providing web browser access and control of devices on customer premise gateways
EP1330725B1 (en) 2000-09-29 2012-03-21 Alacritech, Inc. Intelligent network storage interface system and devices
US8019901B2 (en) * 2000-09-29 2011-09-13 Alacritech, Inc. Intelligent network storage interface system
US7283527B2 (en) * 2002-02-27 2007-10-16 International Business Machines Corporation Apparatus and method of maintaining two-byte IP identification fields in IP headers
US7535913B2 (en) * 2002-03-06 2009-05-19 Nvidia Corporation Gigabit ethernet adapter supporting the iSCSI and IPSEC protocols
US7181531B2 (en) * 2002-04-30 2007-02-20 Microsoft Corporation Method to synchronize and upload an offloaded network stack connection with a network stack
US7007103B2 (en) * 2002-04-30 2006-02-28 Microsoft Corporation Method to offload a network stack
US7114096B2 (en) * 2003-04-02 2006-09-26 International Business Machines Corporation State recovery and failover of intelligent network adapters
US7412488B2 (en) * 2003-06-05 2008-08-12 Nvidia Corporation Setting up a delegated TCP connection for hardware-optimized processing
US7526577B2 (en) * 2003-09-19 2009-04-28 Microsoft Corporation Multiple offload of network state objects with support for failover events
US7586936B2 (en) * 2005-04-01 2009-09-08 International Business Machines Corporation Host Ethernet adapter for networking offload in server environment
US7684344B2 (en) * 2005-07-18 2010-03-23 Broadcom Corporation Method and system for transparent TCP offload

Cited By (18)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2011018373A (ja) * 2002-04-30 2011-01-27 Microsoft Corp オフロードされたネットワークスタックの状態オブジェクトをアップロードする方法及びそれを同期する方法
JP2004280826A (ja) * 2003-03-12 2004-10-07 Microsoft Corp プロトコル独立型クライアント側キャッシュ(protocol−independentclient−sidecaching)システムおよび方法
JP4613023B2 (ja) * 2003-03-12 2011-01-12 マイクロソフト コーポレーション プロトコル独立型クライアント側キャッシュ(protocol−independentclient−sidecaching)システムおよび方法
JP4658546B2 (ja) * 2003-09-10 2011-03-23 マイクロソフト コーポレーション フェイルオーバーイベントをサポートするネットワーク状態オブジェクトの多重オフロード
JP2005085284A (ja) * 2003-09-10 2005-03-31 Microsoft Corp フェイルオーバーイベントをサポートするネットワーク状態オブジェクトの多重オフロード
JP2005192216A (ja) * 2003-12-19 2005-07-14 Nvidia Corp トランスポートオフロードエンジンのための再送信システムおよび方法
JP2006074780A (ja) * 2004-09-02 2006-03-16 Internatl Business Mach Corp <Ibm> 待ち時間の少ないデータ暗号解除インターフェース
JP2006191537A (ja) * 2004-11-12 2006-07-20 Microsoft Corp 統合ホストプロトコルスタック管理を使用するセキュアなインターネットプロトコル(ispec)オフロードのための方法および装置
KR101201187B1 (ko) 2004-11-12 2012-11-13 마이크로소프트 코포레이션 통합된 호스트 프로토콜 관리를 이용한 보안 인터넷 프로토콜 (ipsec) 오프로드를 위한 방법 및 시스템
JP2006216018A (ja) * 2005-02-01 2006-08-17 Microsoft Corp ユーザモードでのネットワーク接続のディスパッチ
KR101219822B1 (ko) * 2005-02-01 2013-01-08 마이크로소프트 코포레이션 사용자 모드에서의 네트워크 연결의 디스패칭
US7693166B2 (en) 2005-02-17 2010-04-06 Nec Corporation Method and apparatus for transmitting data to network and method and apparatus for receiving data from network
JP2008061223A (ja) * 2006-08-04 2008-03-13 Canon Inc 通信装置及び通信方法
JP2009237768A (ja) * 2008-03-26 2009-10-15 Toshiba Corp データ受信装置、データ受信方法およびデータ処理プログラム
JP2012510126A (ja) * 2008-11-26 2012-04-26 マイクロソフト コーポレーション リモートデスクトッププロトコルのためのハードウェアアクセラレーション
US8850027B2 (en) 2008-11-26 2014-09-30 Microsoft Corporation Hardware acceleration for remote desktop protocol
US8725879B2 (en) 2009-02-06 2014-05-13 Fujitsu Limited Network interface device
US9667607B2 (en) 2011-11-04 2017-05-30 Ricoh Company, Ltd. Control apparatus and communications control method

Also Published As

Publication number Publication date
EP1359724B1 (en) 2006-05-24
US7007103B2 (en) 2006-02-28
US7590755B2 (en) 2009-09-15
DE60305378D1 (de) 2006-06-29
US20050091412A1 (en) 2005-04-28
JP4327496B2 (ja) 2009-09-09
DE60305378T2 (de) 2007-02-22
US20030204634A1 (en) 2003-10-30
ATE327626T1 (de) 2006-06-15
US20060069792A1 (en) 2006-03-30
US7254637B2 (en) 2007-08-07
EP1359724A1 (en) 2003-11-05

Similar Documents

Publication Publication Date Title
JP4327496B2 (ja) ネットワークスタックをオフロードする方法
JP4638658B2 (ja) オフロードされたネットワークスタックの状態オブジェクトをアップロードする方法及びそれを同期する方法
US10652147B2 (en) Packet coalescing
US7526577B2 (en) Multiple offload of network state objects with support for failover events
JP5442755B2 (ja) リモートデスクトッププロトコルのためのハードウェアアクセラレーション
US7685287B2 (en) Method and system for layering an infinite request/reply data stream on finite, unidirectional, time-limited transports
US8139482B1 (en) Method to implement an L4-L7 switch using split connections and an offloading NIC
US8359405B1 (en) Performance enhancing proxy and method for enhancing performance
JP4658546B2 (ja) フェイルオーバーイベントをサポートするネットワーク状態オブジェクトの多重オフロード
CN1309201C (zh) 用于网络传输丢失容限的客户端应用控制的方法和***

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20060224

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20080411

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20080808

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20081110

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

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20090515

A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20090611

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20120619

Year of fee payment: 3

R150 Certificate of patent or registration of utility model

Free format text: JAPANESE INTERMEDIATE CODE: R150

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20120619

Year of fee payment: 3

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20130619

Year of fee payment: 4

LAPS Cancellation because of no payment of annual fees