(57)【要約】【課題】ネットワーク・インターフェース・カードＴＣＰアクセラレーション・オフロード障害の検出および回復のコンピュータ実施される方法およびデータ処理システムを提供すること。【解決手段】ネットワーク・インターフェース・カード内の伝送制御プロトコル・オフロード機能の要求を含む伝送制御プロトコル・セグメントの肯定応答の受信の失敗に応答して、その伝送制御プロトコル・セグメントが、伝送制御プロトコル・オフロード機能の要求を伴わずに再送信される。伝送制御プロトコル・オフロード機能の要求を伴わずに再送信された伝送制御プロトコル・セグメントの肯定応答が受信されるとき、カウンタが増分され、このカウンタは、伝送制御プロトコル・オフロード機能の障害を示す。このカウンタが許容される障害の事前定義の個数を超えることに応答して、そのネットワーク・インターフェース・カードの伝送制御プロトコル・オフロード機能へのすべての要求が、停止される。【選択図】図５
2010517152.tif 000002
【特許請求の範囲】
【請求項１】
ネットワーク・インターフェース・カード伝送制御プロトコル・アクセラレーション・オフロード障害を検出し、回復する、データ処理システム内の方法であって、
ネットワーク・インターフェース・カード内の伝送制御プロトコル・オフロード機能の要求を含む伝送制御プロトコル・セグメントの肯定応答の受信の失敗に応答して、伝送制御プロトコル・オフロード機能の前記要求を伴わずに前記伝送制御プロトコル・セグメントを再送信することと、
伝送制御プロトコル・オフロード機能の要求を伴わない前記再送信された伝送制御プロトコル・セグメントの肯定応答の受信に応答して、前記伝送制御プロトコル・オフロード機能の障害を示すカウンタを増分することと、
前記カウンタが許容される障害の事前定義の個数を超えたことの判定に応答して、前記ネットワーク・インターフェース・カードの前記伝送制御プロトコル・オフロード機能へのすべての要求を停止することと
を含む方法。
【請求項２】
肯定応答の受信の前記失敗が、前記伝送制御プロトコル・セグメントの送信の事前定義の回数の試みの後に発生する、請求項１に記載の方法。
【請求項３】
前記カウンタが、前記伝送制御プロトコル・オフロード機能が失敗した回数を示すプライベート・カウンタである、請求項１に記載の方法。
【請求項４】
伝送制御プロトコル・オフロード機能の前記要求を伴わない前記再送信された伝送制御プロトコル・セグメントの肯定応答の受信の失敗に応答して、前記伝送制御プロトコル・オフロード機能が前記失敗の原因ではないと判定すること
をさらに含む、請求項１に記載の方法。
【請求項５】
前記伝送制御プロトコル・オフロード機能が、伝送制御プロトコル・チェックサム・オフロード機能または伝送制御プロトコル・セグメンテーション・オフロード機能のうちの１つを含む、請求項１に記載の方法。
【請求項６】
前記伝送制御プロトコル・セグメントが、前記伝送制御プロトコル・セグメントの肯定応答を受信する複数の失敗した試みに応答して伝送制御プロトコル・オフロード機能に関する要求を伴わずに再送信される、請求項１に記載の方法。
【請求項７】
前記ネットワーク・インターフェース・カードに関する前記伝送制御プロトコル・オフロード機能に対する前記要求が、すべての既存のまたは新規の伝送制御プロトコル接続について停止される、請求項１に記載の方法。
【請求項８】
前記ネットワーク・インターフェース・カードに関する前記伝送制御プロトコル・オフロード機能に対する前記要求が、事前定義の時間の期間について停止される、請求項１に記載の方法。
【請求項９】
前記事前定義の時間の期間が、分、時、日、または前記データ処理システムがリブートされるまでのうちの１つを含む、請求項１に記載の方法。
【請求項１０】
障害が事前定義の時間の期間内に発生する場合に、前記障害が許容される障害と判定される、請求項１に記載の方法。
【請求項１１】
ネットワーク・インターフェース・カード伝送制御プロトコル・アクセラレーション・オフロード障害を検出し、回復するデータ処理システムであって、
バスと、
前記バスに接続されたストレージ・デバイスであって、コンピュータ使用可能コードを含む、ストレージ・デバイスと、
前記バスに接続された少なくとも１つの管理されるデバイスと、
前記バスに接続された通信ユニットと、
前記バスに接続された処理ユニットであって、前記処理ユニットが、ネットワーク・インターフェース・カード内の伝送制御プロトコル・オフロード機能の要求を含む伝送制御プロトコル・セグメントの肯定応答の受信の失敗に応答して、伝送制御プロトコル・オフロード機能の前記要求を伴わずに前記伝送制御プロトコル・セグメントを再送信することと、伝送制御プロトコル・オフロード機能の前記要求を伴わない前記再送信された伝送制御プロトコル・セグメントの肯定応答の受信に応答して、前記伝送制御プロトコル・オフロード機能の障害を示すカウンタを増分することと、前記カウンタが許容される障害の事前定義の個数を超えたことの判定に応答して、前記ネットワーク・インターフェース・カードの前記伝送制御プロトコル・オフロード機能へのすべての要求を停止することとを行うために前記コンピュータ使用可能コードを実行する、処理ユニットと
を含むデータ処理システム。
【請求項１２】
肯定応答の受信の前記失敗が、前記伝送制御プロトコル・セグメントの送信の事前定義の回数の試みの後に発生する、請求項１１にデータ処理システム。
【請求項１３】
前記カウンタが、前記伝送制御プロトコル・オフロード機能が失敗した回数を示すプライベート・カウンタである、請求項１１に記載のデータ処理システム。
【請求項１４】
前記処理ユニットが、伝送制御プロトコル・オフロード機能の前記要求を伴わない前記再送信された伝送制御プロトコル・セグメントの肯定応答の受信の失敗に応答して、前記伝送制御プロトコル・オフロード機能が前記障害の原因ではないと判定するために前記コンピュータ使用可能コードをさらに実行する、請求項１１に記載のデータ処理システム。
【請求項１５】
前記伝送制御プロトコル・オフロード機能が、伝送制御プロトコル・チェックサム・オフロード機能または伝送制御プロトコル・セグメンテーション・オフロード機能のうちの１つを含む、請求項１１に記載のデータ処理システム。
【請求項１６】
前記伝送制御プロトコル・セグメントが、前記伝送制御プロトコル・セグメントの肯定応答を受信する複数の失敗した試みに応答して伝送制御プロトコル・オフロード機能に関する前記要求なしで再送信される、請求項１１に記載のデータ処理システム。
【請求項１７】
前記ネットワーク・インターフェース・カードに関する前記伝送制御プロトコル・オフロード機能に対する前記要求が、すべての既存のまたは新規の伝送制御プロトコル接続について停止される、請求項１１に記載のデータ処理システム。
【請求項１８】
前記ネットワーク・インターフェース・カードに関する前記伝送制御プロトコル・オフロード機能に対する前記要求が、事前定義の時間の期間について停止される、請求項１１に記載のデータ処理システム。
【請求項１９】
前記事前定義の時間の期間が、分、時、日、または前記データ処理システムがリブートされるまでのうちの１つを含む、請求項１１に記載のデータ処理システム。
【請求項２０】
障害が事前定義の時間の期間内に発生する場合に、前記障害が許容される障害と判定される、請求項１１に記載のデータ処理システム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、全般的には改善されたデータ処理システムに関し、具体的には、ネットワーク・インターフェース・カード（ＮＩＣ）伝送制御プロトコル（ＴＣＰ）アクセラレーション・オフロード障害の検出および回復のコンピュータ実施される方法およびデータ処理システムに関する。
【背景技術】
【０００２】
データ通信は、機能強化された通信標準およびネットワーク可用性のゆえに、近年に指数関数的に成長してきた。伝送制御プロトコル（ＴＣＰ）は、データのパケットが、送信されたのと同一の順序で送達され、受信されることを保証する標準であり、インターネット・プロトコル（ＩＰ）は、ＴＣＰと共に、情報がシステムの間でインターネットにまたがってどのように移動するのかを指定するのに使用される。ほとんどのコンピュータは、ネットワークを介して情報を送信し、受信するのにＴＣＰ／ＩＰプロトコルを使用するネットワーク・インターフェース・カードを有する。
【０００３】
伝統的なネットワーク・インターフェース・カードでは、ＴＣＰスタックは、システム・プロセッサを使用して、データをネットワーク・インターフェース・カードに渡す前に、ＴＣＰセグメントをイーサネット・フレームに分解する。これは、特にネットワーク・インターフェース・カードが毎秒数万回の割込みを生成する可能性があるギガビット・ネットワークで、長い処理時間を必要とする。これらの割込みは、さらに多くのプロセッサ・サイクルを利用する。
【０００４】
ローカル・エリア・ネットワーク（ＬＡＮ）テクノロジ、特にイーサネットは、媒体速度を３〜４年おきに１０倍改善してきたが、中央処理装置（ＣＰＵ）速度は、１年おきに２倍になる。その結果、ＣＰＵは、高入出力（Ｉ／Ｏ）性能システムで高速レートでのボトルネックになりつつある。プロセッサ性能のこの遅れを軽減するために、ますます多数のネイティブ・ホスト機能を、データ・スループットを加速するためにＩ／Ｏアダプタにオフロードすることができる。スループットは、特定の長さの時間に転送されるデータの量の尺度である。機能のオフロードは、ホストＣＰＵ作業負荷を減らし、Ｉ／Ｏアダプタ・スループットを改善するという追加の利益を有する。
【０００５】
１つのＴＣＰアクセラレーション・オフロード機能が、ＴＣＰセグメンテーション・オフロード（ＴＳＯ）である。「ラージ・センド・オフロード（ｌａｒｇｅ  ｓｅｎｄ  ｏｆｆｌｏａｄ）」（ＬＳＯ）としても知られるＴＣＰセグメンテーション・オフロードでは、ホストＴＣＰプロトコル・スタックが、サイズにおいて６４ＫＢまでの大きいＴＣＰセグメントを作成する。次に、この大きいセグメントが、ＩＰプロトコル・スタックに渡され、そこで、このセグメントが、単一のＩＰパケットにカプセル化される。次に、カプセル化されたセグメントは、ネットワーク・インターフェース・カード・デバイス・ドライバに渡され、最後に、送信のためにネットワーク・インターフェース・カードに渡される。次に、ＴＣＰセグメンテーション・オフロードを実施するネットワーク・インターフェース・カードは、この単一の大きいＴＣＰセグメントを通常は標準イーサネット接続について１４６０バイトである複数のより小さいＴＣＰセグメントに組み立てなおし、セグメントごとに必要なイーサネット／ＩＰ／ＴＣＰヘッダ情報を挿入する。セグメンテーション・オフローディングを使用することの性能上の利益は、より大きいパケットをホストＴＣＰスタックによって作成でき、これが、通常は減らされたホスト・プロセッサ利用度になるという事実によって得られる。追加の性能上の利益は、一般に、より大きいＰＣＩデータ・トランザクションが、より高いＰＣＩバス・スループットになるという事実のおかげで得られる。バッファをイーサネット・フレームにセグメント化するという作業が、ネットワーク・インターフェース・カードによって行われるので、プロセッサは、他のタスクの実行に使用可能である。
【０００６】
もう１つのＴＣＰアクセラレーション・オフロード機能が、ＴＣＰチェックサム・オフロード（ＴＣＯ）である。ＴＣＰチェックサム・オフロードでは、ＴＣＰチェックサム・オフロードを実施するネットワーク・インターフェース・カードが、ホストＣＰＵの代わりにＴＣＰチェックサムの計算を実行する。ＴＣＰチェックサム・オフロードは、ＴＣＰペイロード、ＴＣＰヘッダ、およびＩＰヘッダのチェックサムを実行するというタスクがネットワーク・インターフェース・カードにオフロードされるので、ホストＣＰＵ作業負荷を大幅に減らすことができる。ホスト・プロトコル・レイヤは、任意選択で、ＴＣＰ擬似ヘッダ・チェックサムを計算し（ネットワーク・インターフェース・カードの特定の要件に依存する）、その値をチェックサム・フィールドに置くことができる。次に、ネットワーク・インターフェース・カードは、ＩＰヘッダを参照する必要なしに、正しいＴＣＰチェックサムを計算することができる。
【０００７】
ＴＣＰアクセラレーション・オフロード機能が期待されるとおりに動作するときに、ネットワークおよびシステム性能を大幅に高めることができる。したがって、ＩＢＭ（Ｒ）Ｃｏｒｐｏｒａｔｉｏｎ社の製品であるＡＩＸ（Ｒ）（Ａｄｖａｎｃｅｄ  Ｉｎｔｅｒａｃｔｉｖｅ  ｅＸｅｃｕｔｉｖｅ）を含む多くのオペレーティング・システムは、これらのアクセラレーション機能を利用する。
【０００８】
しかし、現在のＴＣＰアクセラレーション・オフロード機能の大きい制限は、これらのアクセラレーション・オフロード機能が正しく動作できないとき深刻な問題が発生し得ることである。たとえば、ネットワーク・インターフェース・カード内のＴＣＰチェックサム・ジェネレータ論理は、この論理を実施するそのカードのハードウェア状態機械またはマイクロコード内の障害に起因して「不良」状態に遷移する場合がある。この状況では、アダプタによって送られるすべてのＴＣＰチェックサム・オフロード・パケットが、無効なＴＣＰチェックサムを有することになり、これにより、これらのパケットが宛先ホストによって破棄されることになる。したがって、アクセラレーション・オフロード機能が期待されるとおりに動作できないときに、しばしばネットワーク・アダプタが実際上使用不能に思われる点まで、深刻なネットワーク劣化が発生し得る。
【発明の概要】
【発明が解決しようとする課題】
【０００９】
例示的実施形態は、ネットワーク・インターフェース・カードＴＣＰアクセラレーション・オフロード障害の検出および回復のコンピュータ実施される方法およびデータ処理システムを提供する。
【課題を解決するための手段】
【００１０】
ネットワーク・インターフェース・カード内の伝送制御プロトコル・オフロード機能の要求を含む伝送制御プロトコル・セグメントの肯定応答の受信の失敗に応答して、その伝送制御プロトコル・セグメントが、伝送制御プロトコル・オフロード機能の要求を伴わずに再送信される。伝送制御プロトコル・オフロード機能の要求を伴わずに再送信された伝送制御プロトコル・セグメントの肯定応答が受信されるとき、カウンタが増分され、このカウンタは、伝送制御プロトコル・オフロード機能の障害を示す。このカウンタが許容される障害の事前定義の個数を超えることに応答して、そのネットワーク・インターフェース・カードの伝送制御プロトコル・オフロード機能へのすべての要求が、停止される。
【００１１】
本発明を、例としてのみ、添付図面を参照してこれから説明する。
【図面の簡単な説明】
【００１２】
【図１】例示的実施形態を実施できるデータ処理システムのネットワークを示す絵図である。
【図２】例示的実施形態を実施できるデータ処理システムを示すブロック図である。
【図３】例示的実施形態によるネットワーク・インターフェース・カードを示すブロック図である。
【図４】例示的実施形態による伝送制御プロトコル／インターネット・プロトコル（ＴＣＰ／ＩＰ）および類似するプロトコルを示す図である。
【図５】例示的実施形態によるネットワーク・インターフェース・カードＴＣＰアクセラレーション・オフロード障害の検出および回復を示す流れ図である。
【発明を実施するための形態】
【００１３】
図面、具体的には図１〜２を参照すると、例示的実施形態を実施できるデータ処理環境の例示的な図が示されている。図１〜２が、例示にすぎず、異なる実施形態を実施できる環境に関する限定を主張しまたは暗示することは意図されていないことを理解されたい。図示の環境に対する多くの変更を行うことができる。
【００１４】
図１に、例示的実施形態を実施できるデータ処理システムのネットワークの絵図を示す。ネットワーク・データ処理システム１００は、例示的実施形態を実施できるコンピュータのネットワークである。ネットワーク・データ処理システム１００は、ネットワーク１０２を含み、ネットワーク１０２は、ネットワーク・データ処理システム１００内で一緒に接続されたさまざまなデバイスおよびコンピュータの間の通信リンクを提供するのに使用される媒体である。ネットワーク１０２は、ワイヤ、無線通信リンク、または光ファイバ・ケーブルなどの接続を含むことができる。
【００１５】
図示の例では、サーバ１０４およびサーバ１０６は、ストレージ・ユニット１０８と共にネットワーク１０２に接続する。さらに、クライアント１１０、１１２、および１１４が、ネットワーク１０２に接続する。クライアント１１０、１１２、および１１４は、たとえば、パーソナル・コンピュータまたはネットワーク・コンピュータとすることができる。図示の例では、サーバ１０４は、ブート・ファイル、オペレーティング・システム・イメージ、およびアプリケーションなどのデータをクライアント１１０、１１２、および１１４に供給する。クライアント１１０、１１２、および１１４は、この例ではサーバ１０４に対するクライアントである。ネットワーク・データ処理システム１００は、追加のサーバ、クライアント、および図示されていない他のデバイスを含むことができる。
【００１６】
図示の例では、ネットワーク・データ処理システム１００は、インターネットであり、ネットワーク１０２は、互いに通信するのに伝送制御プロトコル／インターネット・プロトコル（ＴＣＰ／ＩＰ）プロトコル・スイートを使用するネットワークおよびゲートウェイの全世界の集合を表す。インターネットの心臓部には、データおよびメッセージをルーティングする、数千台の商用、政府、教育、および他のコンピュータ・システムからなる、主要ノードまたはホスト・コンピュータの間の高速データ通信回線のバックボーンがある。もちろん、ネットワーク・データ処理システム１００を、たとえばイントラネット、ローカル・エリア・ネットワーク（ＬＡＮ）、または広域ネットワーク（ＷＡＮ）など、複数の異なるタイプのネットワークとして実施することもできる。図１は、例として意図されており、異なる例示的実施形態に関するアーキテクチャ的限定として意図されたものではない。
【００１７】
図２を参照すると、例示的実施形態を実施できるデータ処理システムのブロック図が示されている。データ処理システム２００は、図１のサーバ１０４またはクライアント１１０など、本プロセスを実施するコンピュータ使用可能プログラム・コードまたは命令を例示的実施形態のために配置できるコンピュータの例である。
【００１８】
図示の例では、データ処理システム２００は、ノース・ブリッジおよびメモリ・コントローラ・ハブ（ＮＢ／ＭＣＨ）２０２とサウス・ブリッジおよび入出力（Ｉ／Ｏ）コントローラ・ハブ（ＳＢ／ＩＣＨ）２０４とを含むハブ・アーキテクチャを使用する。処理ユニット２０６、メイン・メモリ２０８、およびグラフィックス・プロセッサ２１０は、ノース・ブリッジおよびメモリ・コントローラ・ハブ２０２に結合される。処理ユニット２０６は、１つまたは複数のプロセッサを含むことができ、１つまたは複数の異種プロセッサ・システムを使用して実施することすらできる。グラフィックス・プロセッサ２１０を、たとえばａｃｃｅｌｅｒａｔｅｄ  ｇｒａｐｈｉｃｓ  ｐｏｒｔ（ＡＧＰ）を介してＮＢ／ＭＣＨに結合することができる。
【００１９】
図示の例では、ネットワーク・アダプタ２１２は、サウス・ブリッジおよびＩ／Ｏコントローラ・ハブ２０４に結合され、オーディオ・アダプタ２１６、キーボードおよびマウス・アダプタ２２０、モデム２２２、読み取り専用メモリ（ＲＯＭ）２２４、ｕｎｉｖｅｒｓａｌ  ｓｅｒｉａｌ  ｂｕｓ（ＵＳＢ）および他のポート２３２、ならびにＰＣＩ／ＰＣＩｅデバイス２３４は、バス２３８を介してサウス・ブリッジおよびＩ／Ｏコントローラ・ハブ２０４に結合され、ハード・ディスク・ドライブ（ＨＤＤ）２２６およびＣＤ−ＲＯＭ  ２３０は、バス２４０を介してサウス・ブリッジおよびＩ／Ｏコントローラ・ハブ２０４に結合される。ＰＣＩ／ＰＣＩｅデバイスは、たとえば、イーサネット・アダプタ、アドイン・カード、およびノートブック・コンピュータ用のＰＣカードを含むことができる。ＰＣＩは、カード・バス・コントローラを使用するが、ＰＣＩｅは使用しない。ＲＯＭ  ２２４は、たとえば、フラッシュ基本入出力システム（ＢＩＯＳ）とすることができる。ハード・ディスク・ドライブ２２６およびＣＤ−ＲＯＭ  ２３０は、たとえば、ｉｎｔｅｇｒａｔｅｄ  ｄｒｉｖｅ  ｅｌｅｃｔｒｏｎｉｃｓ（ＩＤＥ）またはｓｅｒｉａｌ  ａｄｖａｎｃｅｄ  ｔｅｃｈｎｏｌｏｇｙ  ａｔｔａｃｈｍｅｎｔ（ＳＡＴＡ）インターフェースを使用することができる。スーパーＩ／Ｏ（ＳＩＯ）デバイス２３６を、サウス・ブリッジおよびＩ／Ｏコントローラ・ハブ２０４に結合することができる。
【００２０】
オペレーティング・システムが、処理ユニット２０６上で動作し、図２のデータ処理システム２００内のさまざまなコンポーネントの制御を調整し、提供する。オペレーティング・システムは、Ｍｉｃｒｏｓｏｆｔ（Ｒ）Ｗｉｎｄｏｗｓ（Ｒ）ＸＰ（ＭｉｃｒｏｓｏｆｔおよびＷｉｎｄｏｗｓは米国、他国、またはその両方でのＭｉｃｒｏｓｏｆｔ  Ｃｏｒｐｏｒａｔｉｏｎ社の商標である）などの市販オペレーティング・システムとすることができる。Ｊａｖａ（商標）プログラミング・システムなどのオブジェクト指向プログラミング・システムが、オペレーティング・システムとあいまって動作することができ、データ処理システム２００上で実行されるＪａｖａ（商標）プログラムまたはアプリケーションからオペレーティング・システムへの呼び出しを提供する。Ｊａｖａ（商標）およびＪａｖａ（商標）に基づく商標すべては、米国、他国、またはその両方でのＳｕｎ  Ｍｉｃｒｏｓｙｓｔｅｍｓ，  Ｉｎｃ．社の商標である。
【００２１】
オペレーティング・システム、オブジェクト指向プログラミング・システム、およびアプリケーションもしくはプログラムの命令は、ハード・ディスク・ドライブ２２６などのストレージ・デバイスに配置され、処理ユニット２０６による実行のためにメイン・メモリ２０８にロードされ得る。例示的実施形態のプロセスは、コンピュータ実施される命令を使用して処理ユニット２０６によって実行することができ、このコンピュータ実施される命令は、たとえばメイン・メモリ２０８、ＲＯＭ  ２２４、または１つもしくは複数の周辺デバイスなどのメモリに配置することができる。
【００２２】
図１〜２のハードウェアは、実施態様に応じて変化し得る。フラッシュ・メモリ、同等の不揮発性メモリ、または光ディスク・ドライブおよび類似物など、他の内部ハードウェアまたは周辺デバイスを、図１〜２に示されたハードウェアに加えてまたはその代わりに使用することができる。また、例示的実施形態のプロセスを、マルチプロセッサ・データ処理システムに適用することができる。
【００２３】
いくつかの例示的な例で、データ処理システム２００を、携帯情報端末（ＰＤＡ）とすることができ、ＰＤＡは、一般に、オペレーティング・システム・ファイルまたはユーザ生成データあるいはその両方を格納する不揮発性メモリを提供するためにフラッシュ・メモリを用いて構成される。バス・システムは、システム・バス、Ｉ／Ｏバス、およびＰＣＩバスなど、１つまたは複数のバスからなるものとすることができる。もちろん、バス・システムを、ファブリックまたはアーキテクチャに接続された異なるコンポーネントまたはデバイスの間でのデータの転送を提供する任意のタイプの通信ファブリックまたはアーキテクチャを使用して実施することができる。通信ユニットは、モデムまたはネットワーク・アダプタなど、データを送信し受信するのに使用される１つまたは複数のデバイスを含むことができる。メモリは、たとえば、メイン・メモリ２０８、またはノース・ブリッジおよびメモリ・コントローラ・ハブ２０２に見られるものなどのキャッシュとすることができる。処理ユニットは、１つまたは複数のプロセッサまたはＣＰＵを含むことができる。図１〜２に図示された例および上で説明した例は、アーキテクチャ的限定を暗示することを意図されたものではない。たとえば、データ処理システム２００を、ＰＤＡの形をとることに加えて、タブレット・コンピュータ、ラップトップ・コンピュータ、または電話デバイスとすることもできる。
【００２４】
例示的実施形態は、ネットワーク・インターフェース・カード（ＮＩＣ）伝送制御プロトコル（ＴＣＰ）アクセラレーション・オフロード障害の検出および回復のコンピュータ実施される方法およびデータ処理システムを提供する。具体的に言うと、例示的実施形態は、オペレーティング・システムのＴＣＰスタックが慢性のネットワーク・インターフェース・カードＴＣＰアクセラレーション・オフロード障害を検出し、これから回復することを可能にするために、ＴＣＰ内の既存の再送信プロトコルを活用する。ＴＣＰの既存の再送信プロトコルは、受信デバイスによって肯定応答されないデータ・セグメントを再送信する能力を含む。たとえば、ＴＣＰは、再送信タイマを利用することができ、この再送信タイマは、データ・セグメントの受信が受信デバイスによって肯定応答されるまで、または受信デバイスへの再送信の最大回数を超えたとＴＣＰが判断するときまで、ＴＣＰに１つのデータ・セグメントを複数回再送信させる。さらに、例示的実施形態は、ＴＣＰによって作成される個々のデータ・セグメントごとにオフロード・サービスを明示的に要求するために、ＴＣＰチェックサム・オフロードまたはＴＣＰセグメンテーション・オフロードなどのネットワーク・インターフェース・カードＴＣＰアクセラレーション・オフロード機能をサポートするオペレーティング・システムＴＣＰスタックの既存の能力をも使用する。したがって、これらのＴＣＰスタックは、基礎になるネットワーク・インターフェース・カードがオフロード機能をサポートする場合であっても、ＴＣＰアクセラレーション・オフロード機能を要求しないことを選択する能力を有する。
【００２５】
上にリストしたＴＣＰの現在の能力を利用して、例示的実施形態は、オペレーティング・システムのＴＣＰスタックが、特にネットワーク・インターフェース・カードＴＣＰアクセラレーション・オフロード障害（他のネットワーク問題またはネットワーク障害ではなく）によって引き起こされる伝送障害を検出できる機構を提供する。この機構は、ＴＣＰスタックが、障害を発生しているネットワーク・インターフェース・カードについてネットワーク・インターフェース・カードＴＣＰアクセラレーション・オフロード機能の使用をやめることをも可能にし、したがって、ユーザ介入を必要とせずに障害からの回復を容易にする。
【００２６】
例示的実施形態の機構は、オペレーティング・システムＴＣＰスタックが、セグメントのＴＣＰチェックサム・オフロードまたはＴＣＰセグメンテーション・オフロードを実行するようにネットワーク・インターフェース・カードに要求するＴＣＰセグメントを作成するとき実施され得る。オペレーティング・システムＴＣＰスタックが、事前定義のタイム・インターバル内にそのセグメントの肯定応答を受信しない場合に、オペレーティング・システムＴＣＰスタックは、そのセグメントを再送信する。ネットワーク・インターフェース・カードＴＣＰアクセラレーション・オフロード障害を検出し、これから回復するために、オペレーティング・システムＴＣＰスタックが、事前定義の回数の再送信の試みの後に肯定応答を受信せず、ＴＣＰチェックサム・オフロードまたはＴＣＰセグメンテーション・オフロードが以前にそのセグメントについて要求されたときに、オペレーティング・システムＴＣＰスタックは、要求されたＴＣＰチェックサム・オフロードまたはＴＣＰセグメンテーション・オフロードを用いずにそのセグメントを再送信する。その後、オペレーティング・システムＴＣＰスタックがそのセグメントの肯定応答を受信する場合に、オペレーティング・システムＴＣＰスタックは、ネットワーク・インターフェース・カードのＴＣＰアクセラレーション・オフロード機能が障害を発生している状態をオペレーティング・システムＴＣＰスタックが疑う回数を示すプライベート・カウンタを増分する。このプライベート・カウンタが、「許容される」障害の事前定義の回数に達する場合に、オペレーティング・システムＴＣＰスタックは、すべての既存のまたは新規のＴＣＰ接続について、また、事前定義の時間期間の間（分、時、日、またはシステムがリブートされるまで）、そのネットワーク・インターフェース・カードにＴＣＰアクセラレーション・オフロード機能を要求するのをやめる。
【００２７】
図３に移ると、例示的実施形態によるネットワーク・インターフェース・カードの図が示されている。ネットワーク・インターフェース・カード３００は、図２のネットワーク・アダプタ２１２として実施することができる。図示されているように、ネットワーク・インターフェース・カード３００は、イーサネット・インターフェース３０２、データ・バッファ３０４、およびＰＣＩバス・インターフェース３０６を含む。この３つのコンポーネントは、ネットワークとデータ処理システムのバスとの間の経路を提供する。イーサネット・インターフェース３０２は、データ処理システムに接続されたネットワークへのインターフェースを提供する。ＰＣＩバス・インターフェース３０６は、バスへのインターフェースを提供する。データ・バッファ３０４は、ネットワーク・インターフェース・カード３００を介して送信され、受信されるデータを格納するのに使用される。このデータ・バッファは、追加ストレージを提供するためのＳＲＡＭインターフェースへの接続をも含む。
【００２８】
ネットワーク・インターフェース・カード３００は、電気的消去可能プログラマブル読み取り専用メモリ（ＥＥＰＲＯＭ）インターフェース３０８、レジスタ／構成／状況／制御ユニット３１０、発振器３１２、および制御ユニット３１４をも含む。ＥＥＰＲＯＭインターフェース３０８は、ＥＥＰＲＯＭチップへのインターフェースを提供し、このＥＥＰＲＯＭチップは、ネットワーク・インターフェース・カード３００の命令および他の構成情報を含むことができる。異なるパラメータおよびセッティングを、ＥＥＰＲＯＭインターフェース３０８を介してＥＥＰＲＯＭチップに格納することができる。
【００２９】
レジスタ／構成／状況／制御ユニット３１０は、ネットワーク・インターフェース・カード３００上でプロセスを構成し、実行するのに使用される情報を格納する場所を提供する。たとえば、タイマのタイマ値を、これらのレジスタ内に格納することができる。さらに、異なるプロセスの状況情報を、このユニット内に格納することもできる。発振器３１２は、ネットワーク・インターフェース・カード３００上でプロセスを実行するためのクロック信号を供給する。
【００３０】
制御ユニット３１４は、ネットワーク・インターフェース・カード３００によって実行される異なるプロセスおよび機能を制御する。制御ユニット３１４は、さまざまな形をとることができる。たとえば、制御ユニット３１４を、プロセッサまたは特定用途向け集積回路（ＡＳＩＣ）とすることができる。これらの例では、データのフロー制御を管理するのに使用される本発明のプロセスは、制御ユニット３１４によって実行される。プロセッサとして実施される場合に、これらのプロセスの命令を、ＥＥＰＲＯＭインターフェース３０８を介してアクセスされるチップ内に格納することができる。
【００３１】
データは、受信動作でイーサネット・インターフェース３０２を介して受信される。このデータは、ＰＣＩバス・インターフェース３０６を介するデータ処理システムへの転送のためにデータ・バッファ３０４に格納される。たとえば、このデータを、ＰＣＩローカル・バスを使用してまたは図２のサウス・ブリッジおよびＩ／Ｏコントローラ・ハブ２０４を介してバスに転送することができる。
【００３２】
図４は、伝送制御プロトコル／インターネット・プロトコル（ＴＣＰ／ＩＰ）および類似するプロトコルの図であり、本発明の例示的実施形態に従って示されている。ＴＣＰ／ＩＰおよび類似するプロトコルは、通信アーキテクチャ４００によって利用される。この例では、通信アーキテクチャ４００は、４レイヤ・システムである。このアーキテクチャは、アプリケーション・レイヤ４０２、トランスポート・レイヤ４０４、ネットワーク・レイヤ４０６、およびリンク・レイヤ４０８を含む。各レイヤは、さまざまな通信タスクを処理する責任を負う。リンク・レイヤ４０８は、データ−リンク・レイヤまたはネットワーク・インターフェース・レイヤとも呼ばれ、通常は、オペレーティング・システム内のデバイス・ドライバと、コンピュータ内の対応するネットワーク・インターフェース・カードとを含む。このレイヤは、光ケーブルまたはイーサネット・ケーブルなどの使用されているネットワーク媒体との物理的インターフェースのハードウェア詳細のすべてを処理する。
【００３３】
ネットワーク・レイヤ４０６は、インターネット・レイヤと呼ばれ、ネットワークを回るデータのパケットの移動を処理する。たとえば、ネットワーク・レイヤ４０６は、ネットワークを介して転送されるデータのさまざまなパケットのルーティングを処理する。ＴＣＰ／ＩＰスイート内のネットワーク・レイヤ４０６は、インターネット・プロトコル（ＩＰ）、Ｉｎｔｅｒｎｅｔ  ｃｏｎｔｒｏｌ  ｍｅｓｓａｇｅ  ｐｒｏｔｏｃｏｌ（ＩＣＭＰ）、およびＩｎｔｅｒｎｅｔ  ｇｒｏｕｐ  ｍａｎａｇｅｍｅｎｔ  ｐｒｏｔｏｃｏｌ（ＩＧＭＰ）を含む複数のプロトコルからなる。
【００３４】
次に、トランスポート・レイヤ４０４は、２つのホスト・コンピュータの間でのデータの転送を容易にする、ネットワーク・レイヤ４０６とアプリケーション・レイヤ４０２との間のインターフェースを提供する。例示的実施形態で説明する検出および回復の方法を、さまざまな転送プロトコルを使用して実施することができる。トランスポート・レイヤ４０４は、たとえば、アプリケーションからそれに渡されたデータの、下のネットワーク・レイヤ用の適当なサイズのチャンクへの分割、受信されたパケットの肯定応答、および送信される他端肯定応答パケットを確認するタイムアウトのセッティングなどを世話する。ＴＣＰ／ＩＰプロトコル・スイートでは、２つの明確に異なるトランスポート・プロトコルすなわちＴＣＰおよびユーザ・データグラム・プロトコル（ＵＤＰ）が存在する。ＴＣＰは、ドロップアウト検出サービスおよび再送信サービスを含む、データが２つのホストの間で正しく伝送されることを保証する信頼性サービスを提供する。
【００３５】
ＴＣＰセグメンテーションおよびＴＣＰチェックサムは、本発明の実施形態の例示的実施態様として使用され、決して、セグメンテーション・オフロードおよびチェックサム・オフロードをＴＣＰプロトコル・スイートに限定するものではない。他の実施形態では、セグメンテーション・オフロードおよびチェックサム・オフロードを任意のトランスポート・プロトコル、たとえばユーザ・データグラム・プロトコルおよびＴＣＰプロトコルの他のバージョンと共に使用することができる。
【００３６】
逆に、ユーザ・データグラム・プロトコルは、データが正しく転送されることを保証する機構を全く提供せずに、データグラムと呼ばれるデータのパケットをあるホストから他のホストに単に送信することによって、アプリケーション・レイヤにはるかに単純なサービスを提供する。ＵＤＰを使用するときは、アプリケーション・レイヤが信頼性機能性を実行しなければならない。
【００３７】
アプリケーション・レイヤ４０２は、特定のアプリケーションの詳細を処理する。リモートログイン用のＴｅｌｎｅｔ、ファイル転送プロトコル（ＦＴＰ）、電子メール用のシンプル・メール転送プロトコル（ＳＭＴＰ）、および簡易ネットワーク管理プロトコル（ＳＮＭＰ）を含む、多くの一般的なＴＣＰ／ＩＰアプリケーションが、ほとんどすべての実施態様について存在する。
【００３８】
図５は、例示的実施形態によるネットワーク・インターフェース・カードＴＣＰアクセラレーション・オフロード障害の検出および回復のプロセスを示す流れ図である。ＴＣＰは、データ転送にしばしば使用されるプロトコルであり、その理由から、例示的プロトコルでの１つの例示的実施形態の実施態様の例示的な例を提供する。ＴＣＰスタックは、デバイスのオペレーティング・システム内で実施され、プロセッサによって実行される。ＴＣＰスタックは、成功のセグメント化を保証するために、ネットワーク・インターフェース・カード・ドライバから情報を送信し、受信する。ＴＣＰスタックおよび対応するオペレーティング・システムの命令を、図２に示されたデータ処理システム２００のハード・ディスク・ドライブ２２６またはメイン・メモリ２０８内に格納し、処理ユニット２０６またはネットワーク・アダプタ２１２によって実行するなど、データ処理システム内で格納し、ロードし、実行することができる。
【００３９】
このプロセスは、オペレーティング・システムＴＣＰスタックがＴＣＰセグメントを作成する（ステップ５０２）とき開始される。オペレーティング・システムＴＣＰスタックは、このセグメントについてＴＣＰチェックサム・オフロードまたはＴＣＰセグメンテーション・オフロードを実行するようにネットワーク・インターフェース・カードに示すためにメッセージ・バッファ・ヘッダ内の１つまたは複数の制御フラグをセットする（ステップ５０４）。オペレーティング・システムＴＣＰスタックは、ホスト・メモリ内のＴＣＰスタックのセッションごとの内部制御ブロック内のテーブルをも維持する。このテーブルは、ＴＣＰオフロード要求に関連した送信されたセグメントごとに１エントリを含む。ステップ５０４内で、オペレーティング・システムＴＣＰスタックは、ＴＣＰオフロード要求に関連した、送信されるセグメントごとに、これらのエントリを作成し、これらをこのテーブル内に配置する。次に、オペレーティング・システムＴＣＰスタックは、送信のためにメッセージ・バッファをＩＰに渡す（ステップ５０６）。
【００４０】
オペレーティング・システムＴＣＰスタックは、そのセグメントの肯定応答が事前定義のタイム・インターバル内に受信されたかどうかを判定する（ステップ５０８）。肯定応答が受信済みである（ステップ５０８の「ｙｅｓ」出力）場合には、このプロセスはその後に終了する。肯定応答が受信済みではない（ステップ５０８の「ｎｏ」出力）場合には、オペレーティング・システムＴＣＰスタックは、セグメントを再送信する（ステップ５１０）。再送信が実行されるたびに、再送信バックオフ・アルゴリズムが、事前定義のタイム・インターバルを増加させることができる。
【００４１】
この点の前のステップが、現在機能しているＴＣＰプロトコルを記述することに留意されたい。これ以降のステップは、例示的実施形態でネットワーク・インターフェース・カードＴＣＰアクセラレーション・オフロード障害の検出および回復を可能にするＴＣＰ機能を記述する。
【００４２】
次に、オペレーティング・システムＴＣＰスタックは、再送信されたセグメントの肯定応答が事前定義のタイム・インターバル内に受信されたかどうかを判定する（ステップ５１２）。肯定応答が受信済みである（ステップ５１２の「ｙｅｓ」出力）場合には、このプロセスはその後に終了する。肯定応答が受信済みではない（ステップ５１２の「ｎｏ」出力）場合には、オペレーティング・システムＴＣＰスタックは、事前定義の回数の再送信の試みが行われたかどうかを判定する（ステップ５１４）。言い換えると、オペレーティング・システムＴＣＰスタックは、再送信の回数が事前定義の値と等しいかどうかを判定する。オペレーティング・システムＴＣＰスタックは、ＴＣＰプロトコルの再送信能力を実施するために、アクティブＴＣＰセッションごとに再送信カウンタを維持する。オペレーティング・システムＴＣＰスタックは、所与のセッションのパケット再送信を実行するとき、そのセッションの再送信カウンタをも増分する。再送信カウンタは、オペレーティング・システムＴＣＰスタックによって、ホスト・メモリ内のセッションごとの内部制御ブロック内に格納することができる。
【００４３】
再送信の試みの所定の回数が満足されていない（ステップ５１４の「ｎｏ」出力）場合には、このプロセスは、ステップ５１０にループ・バックする。再送信の試みの所定の回数が満足されている（ステップ５１４の「ｙｅｓ」出力）場合には、オペレーティング・システムＴＣＰスタックは、ＴＣＰチェックサム・オフロードまたはＴＣＰセグメンテーション・オフロードがそのセグメントについて以前に要求されたかどうかを判定する（ステップ５１６）。この判定は、このセグメントがＴＣＰチェックサム・オフロードまたはＴＣＰセグメンテーション・オフロードなどのＴＣＰアクセラレーション・オフロード要求と共に送信されたかどうかを判定するために、ステップ５４０で維持されたテーブルにアクセスすることによって行うことができる。
【００４４】
ＴＣＰチェックサムまたはセグメンテーション・オフロードがセグメントについて以前に要求されなかった（ステップ５１６の「ｎｏ」出力）場合には、ＴＣＰ再送信アルゴリズムは、ステップ５１０に戻り、現在実施されているとおりに（すなわち、産業界での現在のＴＣＰスタック実施態様と一貫する形で）機能し続ける。
【００４５】
ＴＣＰチェックサムまたはセグメンテーション・オフロードがセグメントについて以前に要求された（ステップ５１６の「ｙｅｓ」出力）場合には、オペレーティング・システムＴＣＰスタックは、ＴＣＰチェックサム・オフロードまたはＴＣＰセグメンテーション・オフロードを要求せずにセグメントを再送信する（ステップ５１８）。
【００４６】
次に、オペレーティング・システムＴＣＰスタックは、要求されるオフロード機能なしで再送信されたセグメントの肯定応答が受信されたかどうかを判定する（ステップ５２０）。再送信されたセグメントの肯定応答が受信される（ステップ５２０の「ｙｅｓ」出力）場合には、オペレーティング・システムＴＣＰスタックは、ネットワーク・インターフェース・カードのＴＣＰアクセラレーション・オフロード機能が障害を発生している状態をオペレーティング・システムＴＣＰスタックが疑う回数を示すプライベート・カウンタを増分する（ステップ５２２）。このプライベート・カウンタは、ホストＴＣＰスタックによって維持されるセッションごとの内部制御ブロック内に含めることができ、ホスト・メモリ内に格納される。再送信されたセグメント肯定応答が受信されない（ステップ５２０の「ｎｏ」出力）場合には、オペレーティング・システムＴＣＰスタックは、送信障害がネットワーク・インターフェース・カードＴＣＰアクセラレーション・オフロード障害に起因しないと仮定することができ、したがって、プライベート・カウンタは増分されず、このプロセスは、ステップ５１０に戻って、現在実施されているとおりに機能する（すなわち、ホストＴＣＰスタックは、産業界によって現在定義されているＴＣＰ再送信アルゴリズムを実行し続ける）。
【００４７】
ステップ５２２に戻って、オペレーティング・システムＴＣＰスタックは、プライベート・カウンタが「許容される」障害の所定の回数（たとえば、４回の障害）に達したかどうかを判定する（ステップ５２４）。「許容される」障害の所定の回数に達していない（ステップ５２４の「ｎｏ」出力）場合には、このプロセスは、その後に終了する。「許容される」障害の所定の回数に達している（ステップ５２４の「ｙｅｓ」出力）場合には、オペレーティング・システムＴＣＰスタックは、そのネットワーク・インターフェース・カードにＴＣＰアクセラレーション・オフロード機能を要求するのを停止する（ステップ５２６）。オペレーティング・システムＴＣＰスタックは、すべての既存のまたは新規のＴＣＰ接続について、ならびに事前定義の時間の期間の間に（たとえば、分、時、日、システムがリブートされるまでなど）、ネットワーク・インターフェース・カードにオフロード機能を要求するのを停止することができる。「許容される」障害の回数は、同様に、望まれる場合に事前定義の時間期間によって上限を定めることができる。たとえば、オペレーティング・システムＴＣＰスタックは、６０分のタイム・インターバル内に４回を超える障害を許容しないものとすることができる。
【００４８】
成功の送信がネットワーク・インターフェース・カードＴＣＰスタック・アクセラレーティング・オフロード機能のディスエーブルと偶然に一致するので、ネットワーク・インターフェース・カードＴＣＰアクセラレーション・オフロード機能が障害を発生しているとオペレーティング・システムＴＣＰスタックが誤って結論することがある「偽陽性」状態に対して例示的実施形態が保護することに留意されたい。プライベート・カウンタおよび「許容される」障害の事前定義の回数を使用することによって、完全に機能しているネットワーク・インターフェース・カードをディスエーブルする可能性が、大幅に減らされる。
【００４９】
本発明は、完全にハードウェアの実施形態、完全にソフトウェアの実施形態、またはハードウェア要素とソフトウェア要素との両方を含む実施形態の形をとることができる。好ましい実施形態では、本発明は、ソフトウェアで実施され、ソフトウェアは、ファームウェア、常駐ソフトウェア、マイクロコードなどを含むがこれらに限定はされない。
【００５０】
さらに、本発明は、コンピュータもしくは任意の命令実行システムによってまたはこれと共に使用されるプログラム・コードを提供するコンピュータ使用可能媒体もしくはコンピュータ可読媒体からアクセス可能なコンピュータ・プログラム製品の形をとることができる。この説明において、コンピュータ使用可能媒体またはコンピュータ可読媒体は、命令実行システム、命令実行装置、もしくは命令実行デバイスによってまたはこれと共に使用されるプログラムを含み、格納し、通信し、伝搬し、または搬送することができるすべての有形の装置とすることができる。
【００５１】
媒体は、電子システム、磁気システム、光学システム、電磁システム、赤外線システム、もしくは半導体システム（または装置もしくはデバイス）または伝搬媒体とすることができる。コンピュータ可読媒体の例は、半導体メモリまたはソリッド・ステート・メモリ、磁気テープ、取り外し可能コンピュータ・ディスケット、ランダム・アクセス・メモリ（ＲＡＭ）、読み取り専用メモリ（ＲＯＭ）、リジッド磁気ディスク、および光ディスクを含む。光ディスクの現在の例は、コンパクト・ディスク読み取り専用メモリ（ＣＤ−ＲＯＭ）、書き換え可能コンパクト・ディスク（ＣＤ−Ｒ／Ｗ）、およびＤＶＤを含む。
【００５２】
プログラム・コードを格納し、または実行し、あるいはその両方を行うのに適するデータ処理システムは、メモリ要素に直接にまたはシステム・バスを介して間接的に結合された少なくとも１つのプロセッサを含む。メモリ要素は、プログラム・コードの実際の実行中に使用されるローカル・メモリ、バルク・ストレージ、および実行中にコードをバルク・ストレージから取り出さなければならない回数を減らすために少なくとも一部のプログラム・コードの一時的ストレージを提供するキャッシュ・メモリを含むことができる。
【００５３】
入出力デバイスまたはＩ／Ｏデバイス（キーボード、ディスプレイ、ポインティング・デバイスなどを含むがこれに限定はされない）を、直接にまたは介在するＩ／Ｏコントローラを介してのいずれかでシステムに結合することができる。
【００５４】
ネットワーク・アダプタをこのシステムに結合して、介在するプライベート・ネットワークまたはパブリック・ネットワークを介してデータ処理システムを他のデータ処理システム、リモート・プリンタ、またはリモート・ストレージ・デバイスに結合することを可能にすることもできる。モデム、ケーブル・モデム、およびイーサネット・カードが、現在使用可能なタイプのネットワーク・アダプタのうちのごく小数である。
【００５５】
本発明の説明は、例示および説明のために提示されたものであって、網羅的であることまたは本発明を開示された形態に限定することは意図されていない。多数の修正形態および変形形態が、当業者に明白であろう。実施形態は、本発明の原理およびその実際的な応用例を最もよく説明し、当業者が企図される特定の用途に適するようにさまざまな変更を加えたさまざまな実施形態について本発明を理解することを可能にするために選択され、説明された。
【図１】
2010517152.tif 000003
【図２】
2010517152.tif 000004
【図３】
2010517152.tif 000005
【図４】
2010517152.tif 000006
【図５】
2010517152.tif 000007
【国際調査報告】
2010517152.tif 000008
2010517152.tif 000009