(57)【要約】【課題】  輻輳を低減させるようにネットワークを介してパケットを再送信するための方法、システム、およびコンピュータ・プログラム・コードを提供する。【解決手段】  少なくとも１つのネットワーク・エンドポイントによって受信するように決められたネットワークを介する少なくとも１つのパケットを送信するための方法、装置、およびコンピュータ読み取り可能媒体。少なくとも１つのネットワーク・エンドポイントに送信されるキューから、複数のパケットを順次処理する。複数のパケットから少なくとも第１のパケットを、ネットワーク・エンドポイントに送信する。ネットワーク・エンドポイントに送信された少なくとも第１のパケットは、承認されていないと判定される。少なくとも第１のパケットに関連した第１の再試行パケットを、少なくとも１つのネットワーク・エンドポイントに送信する。ネットワーク・エンドポイントへの第１の再試行パケット以外のパケットの送信を一時停止する。第１の再試行パケットは、少なくとも１つのネットワーク・エンドポイントによって承認されたことが判定される。複数のパケットにおける残りのパケットの少なくとも１つのネットワーク・エンドポイントへの送信を再開する。【選択図】  図２
2010521848.tif 000002
【特許請求の範囲】
【請求項１】
少なくとも１つのネットワーク・エンドポイントによって受信するように決められたネットワークを介する少なくとも１つのパケットを送信するための情報処理システムを動作させる方法であって、
少なくとも１つのネットワーク・エンドポイントに送信されるキューから複数のパケットを順次処理するステップと、
前記複数のパケットから少なくとも第１のパケットを前記少なくとも１つのネットワーク・エンドポイントに送信するステップと、
前記少なくとも１つのネットワーク・エンドポイントに送信された前記少なくとも第１のパケットが承認されていないことを判定するステップと、
前記少なくとも第１のパケットが前記少なくとも１つのネットワーク・エンドポイントによって承認されていないことの判定に応答して、前記少なくとも第１のパケットに関連した第１の再試行パケットを前記少なくとも１つのネットワーク・エンドポイントに送信するステップと、
前記少なくとも１つのネットワーク・エンドポイントへの前記第１の再試行パケット以外のパケットの送信を一時停止するステップと、
前記第１の再試行パケットが前記少なくとも１つのネットワーク・エンドポイントによって承認されたことを判定するステップと、
前記第１の再試行パケットが承認されたことの判定に応答して、前記複数のパケットにおける残りのパケットの前記少なくとも１つのネットワーク・エンドポイントへの送信を再開するステップと、
を含む、方法。
【請求項２】
前記少なくとも第１のパケットの前記送信に応答して、前記少なくとも第１のパケットに関連した複数のタイマを開始させるステップを更に含む、請求項１に記載の方法。
【請求項３】
前記一時停止するステップが、前記少なくとも１つのネットワーク・ノードへの前記第１の再試行パケット以外のパケットの送信を一時停止するステップであって、前記他のネットワーク・エンドポイントへのパケットの送信は一時停止しない前記ステップを更に含む、請求項１または２に記載の方法。
【請求項４】
前記複数のタイマにおける第１のタイマが、前記少なくとも１つのネットワーク・エンドポイントからの承認を受信するための第１の所与の閾値に関連付けられている、請求項２または３に記載の方法。
【請求項５】
前記少なくとも１つのネットワーク・エンドポイントに送信された前記第１の再試行パケットが承認されていないことを判定する前記ステップが、
前記少なくとも１つのネットワーク・エンドポイントに送信された前記第１の再試行パケットに関連した承認パケットを監視するステップと、
前記第１のタイマに関連した値が前記第１の所与の閾値よりも大きいことに応答して、前記第１の所与の閾値の後に前記承認パケットを受信していないことを判定するステップと、
を更に含む、請求項４に記載の方法。
【請求項６】
前記第１の再試行パケットを送信する前記ステップが、
前記少なくとも第１のパケットが、関連する承認パケットなしに前記少なくとも１つのネットワーク・エンドポイントに送信された最も早いパケットであることを判定するステップと、
前記判定に応答して、前記第１の再試行データ・パケットを前記少なくとも１つのネットワーク・エンドポイントに送信するステップであって、前記少なくとも１つのネットワーク・エンドポイントから前記第１の再試行パケットに関連した承認パケットを受信するまで、前記少なくとも１つのネットワーク・エンドポイントに他のパケットを送信しない、前記ステップと、
を更に含む、前出の請求項のいずれかに記載の方法。
【請求項７】
前記第１の再試行パケットの第１の送信の際に第２のタイマを開始させるステップであって、前記第１の再試行パケットの前記送信に関連した承認を前記少なくとも１つのネットワーク・エンドポイントから受信するまで前記第２のタイマが動作し続ける、前記ステップと、
前記第２のタイマに基づいて、前記少なくとも１つのネットワーク・エンドポイントに再試行されているパケットについて第２の所与の閾値が発生したことを判定するステップと、
前記第２の閾値が発生したことの判定に応答して、前記第１の再試行パケットを以前に送信するために用いられた送信ルートとは異なる代替的な送信ルートを用いて、前記第１の再試行パケットを前記少なくとも１つのネットワーク・エンドポイントに再送信するステップと、
を更に含む、請求項６に記載の方法。
【請求項８】
前記少なくとも１つのネットワーク・エンドポイントから承認パケットを受信するステップと、
前記承認パケットに関連したシーケンス番号を分析するステップと、
前記分析に応答して、前記シーケンス番号が、前記少なくとも１つのネットワーク・エンドポイントに関連した現シーケンス番号よりも大きいこと、および、前記少なくとも１つのネットワーク・エンドポイントに送信されたパケット・シーケンスにおける最後の送信パケットに関連したシーケンス番号以下の少なくとも１つであることを判定するステップと、
前記シーケンス番号が、前記少なくとも１つのネットワーク・エンドポイントに関連した現シーケンス番号よりも大きいこと、および、前記少なくとも１つのネットワーク・エンドポイントに送信されたパケット・シーケンスにおける最後の送信パケットに関連したシーケンス番号以下の少なくとも１つであることの判定に応答して、前記シーケンス番号を、前記少なくとも１つの宛先ネットワークから受信された承認として記憶するステップと、
前記シーケンス番号の少なくとも１つが、前記少なくとも１つのネットワーク・エンドポイントに関連した現シーケンス番号よりも大きいこと、および、前記少なくとも１つのネットワーク・エンドポイントに送信されたパケット・シーケンスにおける最後の送信パケットに関連したシーケンス番号以下の少なくとも１つであることの判定に応答して、前記承認パケットを捨てるステップと、
を更に含む、前出の請求項のいずれかに記載の方法。
【請求項９】
少なくとも１つのネットワーク・エンドポイントによって受信するように決められたネットワークを介する少なくとも１つのパケットを送信するためのシステムであって、
メモリと、
前記メモリに通信可能に結合されたプロセッサと、
ネットワーク・エンドポイントに送信される複数のパケットを記憶するように適合されたキューと、
前記メモリおよび前記プロセッサに通信可能に結合されたパケット・マネージャであって、前出の請求項のいずれかに記載された前記方法の前記ステップ全てを実行するように適合された、前記パケット・マネージャと、
を含む、システム。
【請求項１０】
コンピュータ・プログラム・コードであって、コンピュータ・システムにロードされて実行されると、請求項１から８のいずれかに記載された方法の前記ステップ全てを前記コンピュータ・システムに実行させる、コンピュータ・プログラム・コード。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、一般に、ネットワークを介してデータを送信する分野に関し、更に具体的には、信頼性の高い転送プロトコルを用いたネットワークを介するパケット送出の管理に関する。
【背景技術】
【０００２】
ネットワーキング・システムにおいては、信頼性の高い転送プロトコルを用いて、送信中にエラーが生じた場合でもデータが正しく受信されることを保証する。一般に、信頼性の高い転送プロトコルでは、パケットを最初に送信する際に、連続したシーケンス番号をパケットに割り当てる。パケットがその宛先において（次のホップ（hop）において、またはそれらの最終的な宛先においてのいずれかで）受信されると、受信側は承認パケットを発信側に返信して、どのシーケンス番号を受信したかを知らせる。承認されないパケットは通常、既定のタイムアウト期間が過ぎた後、発信側によって再びキューに入れられて再送信される。しかしながら、従来の信頼性の高い転送システムにおいては、あるノードがタイムアウト（すなわち承認が受信されていないこと）を検出すると、そのノードのためにキューに入っていた全てのパケットを再送信する。これは、ネットワークが多数のパケットでいっぱいになるという欠点がある。エンドポイントへの失敗のない送信を妨げる通信の問題点が解決されない場合、パケットは全て捨てられてしまう。伝達が失敗したパケットを全て再送信することによる通信リソースの消費は、問題のないネットワーク内の無関係のノードに動作に悪影響を及ぼしかねない。なぜなら、共有される通信リソースの可用性が低減するからである。
【発明の概要】
【発明が解決しようとする課題】
【０００３】
従って、上述したような従来技術の問題点を克服する必要がある。
【課題を解決するための手段】
【０００４】
従って、本発明は、少なくとも１つのネットワーク・エンドポイントによって受信するように決められたネットワークを介する少なくとも１つのパケットを送信するための情報処理システムを動作させる方法を提供する。この方法は、少なくとも１つのネットワーク・エンドポイントに送信されるキューから複数のパケットを順次処理するステップと、複数のパケットから少なくとも第１のパケットを少なくとも１つのネットワーク・エンドポイントに送信するステップと、少なくとも１つのネットワーク・エンドポイントに送信された少なくとも第１のパケットが承認されていないことを判定するステップと、少なくとも第１のパケットが少なくとも１つのネットワーク・エンドポイントによって承認されていないことの判定に応答して、少なくとも第１のパケットに関連した第１の再試行パケットを少なくとも１つのネットワーク・エンドポイントに送信するステップと、少なくとも１つのネットワーク・エンドポイントへの第１の再試行パケット以外のパケットの送信を一時停止するステップと、第１の再試行パケットが少なくとも１つのネットワーク・エンドポイントによって承認されたことを判定するステップと、第１の再試行パケットが承認されたことの判定に応答して、複数のパケットにおける残りのパケットの少なくとも１つのネットワーク・エンドポイントへの送信を再開するステップと、を含む。
【０００５】
この方法は、少なくとも第１のパケットの送信に応答して、少なくとも第１のパケットに関連した複数のタイマを開始させるステップを更に含むことができる。
【０００６】
好ましくは、少なくとも１つのネットワーク・エンドポイントにおける各ネットワーク・エンドポイントごとに複数のパケット内のパケットが、１を基準とするシーケンス番号に従って順序付けられ、その各シーケンス番号に対応した順序でその各ネットワーク・エンドポイントに各パケットが送信される。
【０００７】
好ましくは、一時停止するステップが、少なくとも１つのネットワーク・ノードへの第１の再試行パケット以外のパケットの送信を一時停止するステップであって、他のネットワーク・エンドポイントへのパケットの送信は一時停止しないステップを更に含む。
【０００８】
好ましくは、複数のタイマにおける第１のタイマが、少なくとも１つのネットワーク・エンドポイントからの承認を受信するための第１の所与の閾値に関連付けられている。
【０００９】
好ましくは、少なくとも１つのネットワーク・エンドポイントに送信された第１の再試行パケットが承認されていないことを判定するステップが、少なくとも１つのネットワーク・エンドポイントに送信された第１の再試行パケットに関連した承認パケットを監視するステップと、第１のタイマに関連した値が第１の所与の閾値よりも大きいことに応答して、第１の所与の閾値の後に承認パケットを受信していないことを判定するステップと、を更に含む。
【００１０】
好ましくは、第１の再試行パケットを送信するステップが、少なくとも第１のパケットが、関連する承認パケットなしに少なくとも１つのネットワーク・エンドポイントに送信された最も早いパケットであることを判定するステップと、判定に応答して、第１の再試行データ・パケットを少なくとも１つのネットワーク・エンドポイントに送信するステップであって、少なくとも１つのネットワーク・エンドポイントから第１の再試行パケットに関連した承認パケットを受信するまで、少なくとも１つのネットワーク・エンドポイントに他のパケットを送信しない、ステップと、を更に含む。
【００１１】
この方法は、送信に応答して、第１の再試行パケットに関連した少なくとも１つのタイマを開始させるステップを更に含むことができる。
【００１２】
この方法は、第１の再試行パケットの第１の送信の際に第２のタイマを開始させるステップであって、第１の再試行パケットの送信に関連した承認を少なくとも１つのネットワーク・エンドポイントから受信するまで第２のタイマが動作し続けるステップと、第２のタイマに基づいて、少なくとも１つのネットワーク・エンドポイントに再試行されているパケットについて第２の所与の閾値が発生したことを判定する、ステップと、第２の閾値が発生したことの判定に応答して、第１の再試行パケットを以前に送信するために用いられた送信ルートとは異なる代替的な送信ルートを用いて、第１の再試行パケットを少なくとも１つのネットワーク・エンドポイントに再送信するステップと、
を更に含むことができる。
【００１３】
この方法は、少なくとも１つのネットワーク・エンドポイントへの全パケット送信をいつ一時停止するかを決定するための所与の閾値に関連した複数のタイマにおける少なくとも１つのタイマを監視するステップと、この監視に応答して、少なくとも１つのタイマに関連した所与の閾値が発生したことを判定するステップと、この閾値が発生したことの判定に応答して、少なくとも１つのネットワーク・エンドポイントへの全パケット送信を一時停止するステップと、を更に含むことができる。
【００１４】
この方法は、少なくとも１つのネットワーク・エンドポイント上におけるエラー回復を実行するステップを更に含むことができる。
【００１５】
この方法は、少なくとも１つのネットワーク・エンドポイントから承認パケットを受信するステップと、承認パケットに関連したシーケンス番号を分析するステップと、分析に応答して、シーケンス番号が、少なくとも１つのネットワーク・エンドポイントに関連した現シーケンス番号よりも大きいこと、および、少なくとも１つのネットワーク・エンドポイントに送信されたパケット・シーケンスにおける最後の送信パケットに関連したシーケンス番号以下の少なくとも１つであることを判定するステップと、シーケンス番号が、少なくとも１つのネットワーク・エンドポイントに関連した現シーケンス番号よりも大きいこと、および、少なくとも１つのネットワーク・エンドポイントに送信されたパケット・シーケンスにおける最後の送信パケットに関連したシーケンス番号以下の少なくとも１つであることの判定に応答して、シーケンス番号を、少なくとも１つの宛先ネットワークから受信された承認として記憶するステップと、シーケンス番号の少なくとも１つが、少なくとも１つのネットワーク・エンドポイントに関連した現シーケンス番号よりも大きいこと、および、少なくとも１つのネットワーク・エンドポイントに送信されたパケット・シーケンスにおける最後の送信パケットに関連したシーケンス番号以下の少なくとも１つであることの判定に応答して、承認パケットを捨てるステップと、を更に含むことができる。
【００１６】
第２の態様において、少なくとも１つのネットワーク・エンドポイントによって受信するように決められたネットワークを介する少なくとも１つのパケットを送信するための情報処理システムが提供される。この情報処理システムは、メモリと、メモリに通信可能に結合されたプロセッサと、ネットワーク・エンドポイントに送信される複数のパケットを記憶するように適合されたキューと、メモリおよびプロセッサに通信可能に結合されたパケット・マネージャと、を含む。パケット・マネージャは、少なくとも１つのネットワーク・エンドポイントに送信されるキューから複数のパケットを順次処理し、複数のパケットから少なくとも第１のパケットを少なくとも１つのネットワーク・エンドポイントに送信し、少なくとも１つのネットワーク・エンドポイントに送信された少なくとも第１のパケットが承認されていないことを判定し、少なくとも第１のパケットが少なくとも１つのネットワーク・エンドポイントによって承認されていないことの判定に応答して、少なくとも第１のパケットに関連した第１の再試行パケットを少なくとも１つのネットワーク・エンドポイントに送信し、少なくとも１つのネットワーク・エンドポイントへの第１の再試行パケット以外のパケットの送信を一時停止し、第１の再試行パケットが少なくとも１つのネットワーク・エンドポイントによって承認されたことを判定し、第１の再試行パケットが承認されたことの判定に応答して、複数のパケットにおける残りのパケットの少なくとも１つのネットワーク・エンドポイントへの送信を再開するように適合されている。
【００１７】
好ましくは、パケット・マネージャは、更に、少なくとも第１のパケットの送信に応答して、少なくとも第１のパケットに関連した複数のタイマを開始させる。
【００１８】
好ましくは、パケット・マネージャによる一時停止が、少なくとも１つのネットワーク・ノードへの第１の再試行パケット以外のパケットの送信を一時停止し、他のネットワーク・エンドポイントへのパケットの送信は一時停止しないことを更に含む。
【００１９】
好ましくは、複数のタイマにおける第１のタイマが、少なくとも１つのネットワーク・エンドポイントからの承認を受信するための第１の所与の閾値に関連付けられている。
【００２０】
好ましくは、少なくとも１つのネットワーク・エンドポイントに送信された第１の再試行パケットが承認されていないことの判定が、少なくとも１つのネットワーク・エンドポイントに送信された第１の再試行パケットに関連した承認パケットを監視することと、第１のタイマに関連した値が第１の所与の閾値よりも大きいことに応答して、第１の所与の閾値の後に承認パケットを受信していないことを判定することと、を更に含む。
【００２１】
好ましくは、第１の再試行パケットの送信が、少なくとも第１のパケットが、関連する承認パケットなしに少なくとも１つのネットワーク・エンドポイントに送信された最も早いパケットであることを判定することと、判定に応答して、第１の再試行データ・パケットを少なくとも１つのネットワーク・エンドポイントに送信し、少なくとも１つのネットワーク・エンドポイントから第１の再試行パケットに関連した承認パケットを受信するまで、少なくとも１つのネットワーク・エンドポイントに他のパケットを送信しないことと、を更に含む。
【００２２】
好ましくは、パケット・マネージャは、第１の再試行パケットの第１の送信の際に第２のタイマを開始させ、第１の再試行パケットの送信に関連した承認を少なくとも１つのネットワーク・エンドポイントから受信するまで第２のタイマが動作し続け、第２のタイマに基づいて、少なくとも１つのネットワーク・エンドポイントに再試行されているパケットについて第２の所与の閾値が発生したことを判定し、第２の閾値が発生したことの判定に応答して、第１の再試行パケットを以前に送信するために用いられた送信ルートとは異なる代替的な送信ルートを用いて、第１の再試行パケットを少なくとも１つのネットワーク・エンドポイントに再送信するように更に適合されている。
【００２３】
好ましくは、パケット・マネージャは、少なくとも１つのネットワーク・エンドポイントへの全パケット送信をいつ一時停止するかを決定するための所与の閾値に関連した複数のタイマにおける少なくとも１つのタイマを監視し、この監視に応答して、少なくとも１つのタイマに関連した所与の閾値が発生したことを判定し、この閾値が発生したことの判定に応答して、少なくとも１つのネットワーク・エンドポイントへの全パケット送信を一時停止するように更に適合されている。
【００２４】
好ましくは、パケット・マネージャは、少なくとも１つのネットワーク・エンドポイント上におけるエラー回復を実行するように更に適合されている。
【００２５】
第３の態様においては、コンピュータ・プログラム・コードが提供される。これは、コンピュータ・システムにロードされて実行されると、第１の態様に従った方法のステップ全てをコンピュータ・システムに実行させる。
【００２６】
コンピュータ・プログラムは、少なくとも１つのネットワーク・エンドポイントによって受信するように決められたネットワークを介する少なくとも１つのパケットを送信するために、機械実行可能プログラムによってタンジブルに（tangibly）符号化されたコンピュータ読み取り可能媒体として具現化することができる。機械実行可能プログラムは、少なくとも１つのネットワーク・エンドポイントに送信されるキューから複数のパケットを順次処理し、複数のパケットから少なくとも第１のパケットを少なくとも１つのネットワーク・エンドポイントに送信し、少なくとも１つのネットワーク・エンドポイントに送信された少なくとも第１のパケットが承認されていないことを判定し、少なくとも第１のパケットが少なくとも１つのネットワーク・エンドポイントによって承認されていないことの判定に応答して、少なくとも第１のパケットに関連した第１の再試行パケットを少なくとも１つのネットワーク・エンドポイントに送信し、少なくとも１つのネットワーク・エンドポイントへの第１の再試行パケット以外のパケットの送信を一時停止し、第１の再試行パケットが少なくとも１つのネットワーク・エンドポイントによって承認されたことを判定し、第１の再試行パケットが承認されたことの判定に応答して、複数のパケットにおける残りのパケットの少なくとも１つのネットワーク・エンドポイントへの送信を再開するための命令を含む。
【００２７】
コンピュータ・プログラムは、少なくとも第１のパケットの送信に応答して、少なくとも第１のパケットに関連した複数のタイマを開始させるための命令を更に含むことができる。
【００２８】
好ましくは、一時停止するための命令が、少なくとも１つのネットワーク・ノードへの第１の再試行パケット以外のパケットの送信を一時停止し、他のネットワーク・エンドポイントへのパケットの送信は一時停止しないための命令を更に含む。
【００２９】
好ましくは、複数のタイマにおける第１のタイマが、少なくとも１つのネットワーク・エンドポイントからの承認を受信するための第１の所与の閾値に関連付けられている。
【００３０】
好ましくは、第１の再試行パケットを送信するための命令が、少なくとも第１のパケットが、関連する承認パケットなしに少なくとも１つのネットワーク・エンドポイントに送信された最も早いパケットであることを判定し、この判定に応答して、第１の再試行データ・パケットを少なくとも１つのネットワーク・エンドポイントに送信し、少なくとも１つのネットワーク・エンドポイントから第１の再試行パケットに関連した承認パケットを受信するまで、少なくとも１つのネットワーク・エンドポイントに他のパケットを送信しないための命令を更に含む。
【００３１】
コンピュータ・プログラムは、第１の再試行パケットの第１の送信の際に第２のタイマを開始させ、第１の再試行パケットの送信に関連した承認を少なくとも１つのネットワーク・エンドポイントから受信するまで第２のタイマが動作し続け、第２のタイマに基づいて、少なくとも１つのネットワーク・エンドポイントに再試行されているパケットについて第２の所与の閾値が発生したことを判定し、第２の閾値が発生したことの判定に応答して、第１の再試行パケットを以前に送信するために用いられた送信ルートとは異なる代替的な送信ルートを用いて、第１の再試行パケットを少なくとも１つのネットワーク・エンドポイントに再送信するための命令を更に含むことができる。
【００３２】
コンピュータ・プログラムは、少なくとも１つのネットワーク・エンドポイントへの全パケット送信をいつ一時停止するかを決定するための所与の閾値に関連した複数のタイマにおける少なくとも１つのタイマを監視し、この監視に応答して、少なくとも１つのタイマに関連した所与の閾値が発生したことを判定し、この閾値が発生したことの判定に応答して、少なくとも１つのネットワーク・エンドポイントへの全パケット送信を一時停止するための命令を更に含むことができる。
【００３３】
更に、ネットワーク・デバイスを提供することができる。このデバイスは、メモリと、メモリに通信可能に結合されたプロセッサと、メモリおよびプロセッサに通信可能に結合された少なくとも１つのネットワーク・アダプタと、少なくともネットワーク・エンドポイントに送信される複数のパケットを記憶するように適合されたキューと、メモリ、キュー、およびプロセッサに通信可能に結合されたパケット・マネージャと、を含む。パケット・マネージャは、少なくとも１つのネットワーク・エンドポイントに送信されるキューから複数のパケットを順次処理し、複数のパケットから少なくとも第１のパケットを少なくとも１つのネットワーク・エンドポイントに送信し、少なくとも１つのネットワーク・エンドポイントに送信された少なくとも第１のパケットが承認されていないことを判定し、少なくとも第１のパケットが少なくとも１つのネットワーク・エンドポイントによって承認されていないことの判定に応答して、少なくとも第１のパケットに関連した第１の再試行パケットを少なくとも１つのネットワーク・エンドポイントに送信し、少なくとも１つのネットワーク・エンドポイントへの第１の再試行パケット以外のパケットの送信を一時停止し、第１の再試行パケットが少なくとも１つのネットワーク・エンドポイントによって承認されたことを判定し、第１の再試行パケットが承認されたことの判定に応答して、複数のパケットにおける残りのパケットの少なくとも１つのネットワーク・エンドポイントへの送信を再開するように適合されている。
【００３４】
好ましくは、パケット・マネージャは、更に、少なくとも第１のパケットの送信に応答して、少なくとも第１のパケットに関連した複数のタイマを開始させる。
【００３５】
好ましくは、パケット・マネージャによる一時停止が、少なくとも１つのネットワーク・ノードへの第１の再試行パケット以外のパケットの送信を一時停止し、他のネットワーク・エンドポイントへのパケットの送信は一時停止しないことを更に含む。
【００３６】
好ましくは、複数のタイマにおける第１のタイマが、少なくとも１つのネットワーク・エンドポイントからの承認を受信するための第１の所与の閾値に関連付けられている。
【００３７】
好ましくは、少なくとも１つのネットワーク・エンドポイントに送信された第１の再試行パケットが承認されていないことの判定が、少なくとも１つのネットワーク・エンドポイントに送信された第１の再試行パケットに関連した承認パケットを監視し、第１のタイマに応答して、第１の所与の閾値の後に承認パケットを受信していないことを判定することを更に含む。
【００３８】
好ましくは、第１の再試行パケットの送信が、少なくとも第１のパケットが、関連する承認パケットなしに少なくとも１つのネットワーク・エンドポイントに送信された最も早いパケットであることを判定し、この判定に応答して、第１の再試行データ・パケットを少なくとも１つのネットワーク・エンドポイントに送信し、少なくとも１つのネットワーク・エンドポイントから第１の再試行パケットに関連した承認パケットを受信するまで、少なくとも１つのネットワーク・エンドポイントに他のパケットを送信しないことを更に含む。
【００３９】
好ましくは、パケット・マネージャは、第１の再試行パケットの第１の送信の際に第２のタイマを開始させ、第１の再試行パケットの送信に関連した承認を少なくとも１つのネットワーク・エンドポイントから受信するまで第２のタイマが動作し続け、第２のタイマに基づいて、少なくとも１つのネットワーク・エンドポイントに再試行されているパケットについて第２の所与の閾値が発生したことを判定し、第２の閾値が発生したことの判定に応答して、第１の再試行パケットを以前に送信するために用いられた送信ルートとは異なる代替的な送信ルートを用いて、第１の再試行パケットを少なくとも１つのネットワーク・エンドポイントに再送信するように更に適合されている。
【００４０】
従って、本発明の好適な実施形態は、少なくとも１つのネットワーク・エンドポイントによって受信するように決められたネットワークを介する少なくとも１つのパケットを送信するための、方法、情報処理システム、コンピュータ読み取り可能媒体、およびネットワーク・デバイスを含む。この方法は、少なくとも１つのネットワーク・エンドポイントに送信されるキューから、複数のパケットを順次処理することを含む。複数のパケットから少なくとも第１のパケットを、少なくとも１つのネットワーク・エンドポイントに送信する。少なくとも１つのネットワーク・エンドポイントに送信された少なくとも第１のパケットは、承認されていないと判定される。少なくとも第１のパケットが少なくとも１つのネットワーク・エンドポイントに承認されていないことの判定に応答して、少なくとも第１のパケットに関連した第１の再試行パケットを、少なくとも１つのネットワーク・エンドポイントに送信する。少なくとも１つのネットワーク・エンドポイントへの第１の再試行パケット以外のパケットの送信を一時停止する。第１の再試行パケットは、少なくとも１つのネットワーク・エンドポイントによって承認されたことが判定される。第１の再試行パケットが承認されたことの判定に応答して、複数のパケットにおける残りのパケットの少なくとも１つのネットワーク・エンドポイントへの送信を再開する。
【００４１】
別の実施形態において、少なくとも１つのネットワーク・エンドポイントによって受信するように決められたネットワークを介する少なくとも１つのパケットを送信するための情報処理システムが開示される。情報処理システムは、メモリと、このメモリに通信可能に結合されたプロセッサと、を含む。また、情報処理システムは、ネットワーク・エンドポイントに送信される複数のパケットを記憶するように適合されたキューも含む。メモリおよびプロセッサに、パケット・マネージャが通信可能に結合されている。パケット・マネージャは、少なくとも１つのネットワーク・エンドポイントに送信されるキューから複数のパケットを順次処理するように適合されている。複数のパケットから少なくとも第１のパケットを、少なくとも１つのネットワーク・エンドポイントに送信する。少なくとも１つのネットワーク・エンドポイントに送信された少なくとも第１のパケットは、承認されていないと判定される。少なくとも第１のパケットが少なくとも１つのネットワーク・エンドポイントによって承認されていないことの判定に応答して、少なくとも第１のパケットに関連した第１の再試行パケットを、少なくとも１つのネットワーク・エンドポイントに送信する。少なくとも１つのネットワーク・エンドポイントへの第１の再試行パケット以外のパケットの送信を一時停止する。第１の再試行パケットは、少なくとも１つのネットワーク・エンドポイントによって承認されたことが判定される。第１の再試行パケットが承認されたことの判定に応答して、複数のパケットにおける残りのパケットの少なくとも１つのネットワーク・エンドポイントへの送信を再開する。
【００４２】
更に別の実施形態において、少なくとも１つのネットワーク・エンドポイントによって受信するように決められたネットワークを介する少なくとも１つのパケットを送信するためのコンピュータ読み取り可能媒体が開示される。コンピュータ読み取り可能媒体は、少なくとも１つのネットワーク・エンドポイントに送信されるキューから複数のパケットを順次処理するための命令を含む。複数のパケットから少なくとも第１のパケットを、少なくとも１つのネットワーク・エンドポイントに送信する。少なくとも１つのネットワーク・エンドポイントに送信された少なくとも第１のパケットは、承認されていないと判定される。少なくとも第１のパケットが少なくとも１つのネットワーク・エンドポイントによって承認されていないことの判定に応答して、少なくとも第１のパケットに関連した第１の再試行パケットを少なくとも１つのネットワーク・エンドポイントに送信する。少なくとも１つのネットワーク・エンドポイントへの第１の再試行パケット以外のパケットの送信を一時停止する。第１の再試行パケットは、少なくとも１つのネットワーク・エンドポイントによって承認されたことが判定される。第１の再試行パケットが承認されたことの判定に応答して、複数のパケットにおける残りのパケットの少なくとも１つのネットワーク・エンドポイントへの送信を再開する。
【００４３】
別の実施形態では、ネットワーク・デバイスが開示される。ネットワーク・デバイスは、メモリと、このメモリに通信可能に結合されたプロセッサと、を含む。また、ネットワーク・デバイスは、メモリおよびプロセッサに通信可能に結合された少なくとも１つのネットワーク・アダプタも含む。少なくともネットワーク・エンドポイントに送信される複数のパケットを記憶するように、キューが適合されている。メモリ、キューに、パケット・マネージャが通信可能に結合され、プロセッサは、少なくとも１つのネットワーク・エンドポイントに送信されるキューから複数のパケットを順次処理するように適合されている。複数のパケットから少なくとも第１のパケットを、少なくとも１つのネットワーク・エンドポイントに送信する。少なくとも１つのネットワーク・エンドポイントに送信された少なくとも第１のパケットは、承認されていないと判定される。少なくとも第１のパケットが少なくとも１つのネットワーク・エンドポイントによって承認されていないことの判定に応答して、少なくとも第１のパケットに関連した第１の再試行パケットを、少なくとも１つのネットワーク・エンドポイントに送信する。少なくとも１つのネットワーク・エンドポイントへの第１の再試行パケット以外のパケットの送信を一時停止する。第１の再試行パケットは、少なくとも１つのネットワーク・エンドポイントによって承認されたことが判定される。第１の再試行パケットが承認されたことの判定に応答して、複数のパケットにおける残りのパケットの少なくとも１つのネットワーク・エンドポイントへの送信を再開する。
【００４４】
本発明の１つの利点は、未承認パケットの再送信によるネットワークにおける輻輳を低減させるように、ネットワークを介してパケットを再送信するパケット再送信モジュールが提供されることである。例えば、パケット再送信モジュールは、特定のエンドポイント間の未着パケットの再送信を、承認されずにその単一パケットに対する応答を待っている最初のパケットのみに限定する。第１の未承認パケットを承認した後でのみ、再送信モジュールは次に進んで全ての他の未処理（outstanding）パケットの送信を行う。この送信は、まだ送信されていないパケットがこれから送信されることを検出するまで続き、その時に再送信モジュールはその正常送信機構に戻る（すなわち、未処理パケット数の限度に達するまで即時承認を待つことなく送信する）。本発明の実施形態では、承認タイムアウトの場合に、ネットワークが未承認パケットでいっぱいになるのを防ぎ、パケットは受信された最初の順序で再送信される。
【００４５】
これより、本発明の好適な実施形態について、一例としてのみ、添付図面を参照して説明する。
【図面の簡単な説明】
【００４６】
【図１】本発明の実施形態に従った、パケットを送信するための例示的なネットワークを示すブロック図である。
【図２】本発明の実施形態に従ったパケット再送信モジュールの更に詳細な図である。
【図３】本発明の実施形態に従った再試行状態機械の詳細図である。
【図４】本発明の実施形態に従った、図３の再試行状態機械の続きである。
【図５】本発明の実施形態に従った、図１の情報処理システムの詳細図である。
【図６】本発明の実施形態に従った、新たに受信したパケットを処理するための例示的なプロセスを示す動作フロー図である。
【図７】本発明の実施形態に従った、新たに受信したパケットを処理するための例示的なプロセスを示す動作フロー図である。
【図８】本発明の実施形態に従った、タイマを維持するための例示的なプロセスを示す動作フロー図である。
【図９】本発明の実施形態に従った、ノードが４つの異なる送信状態を経る際にノードに送信される一連のパケットの高レベルの例を示す図である。
【発明を実施するための形態】
【００４７】
本発明において用いる場合、プログラム、ソフトウェア・アプリケーション等の言葉は、コンピュータ・システム上で実行するために設計された命令シーケンスとして定義する。プログラム、コンピュータ・プログラム、またはソフトウェア・アプリケーションは、コンピュータ・システム上で実行するために設計されたサブルーチン、機能、手順、オブジェクト方法、オブジェクト実施、実行可能アプリケーション、アプレット、サーブレット（servlet）、ソース・コード、オブジェクト・コード、共有ライブラリ／ダイナミック・ロード・ライブラリまたは他の命令シーケンスあるいはそれら全てを含むことができる。
【００４８】
例示的なネットワーク
本発明の一実施形態に従って、図１に示すように、例示的なネットワーク１００を図示する。図１は、情報処理システム１０４、エンドポイントＡ１０６、およびエンドポイントＮ１０８等のネットワーク・ノードに通信可能に結合されたネットワーク１０２を示す。エンドポイント１０６、１０８は各々、情報処理システム、ルータ、ゲートウェイ、ネットワーク・ハブ等とすることができる。換言すると、エンドポイント１０６、１０８は、送信されたパケットを受信するように決められたいずれかのネットワーク構成要素である。一実施形態においては、エンドポイント１０６、１０８は相互に関連していない、すなわち、それらは異なるシーケンス番号を有する。
【００４９】
一実施形態において、情報処理システム１０４は、パケット・マネージャ１１０を含む。パケット・マネージャ１１０は、パケット・ソース１１２からエンドポイント１０６、１０８に送信するためのパケットを受信し、これらのパケットを信頼性高くエンドポイント１０６、１０８に送信する。パケット・マネージャ１１０は、とりわけ、パケットをエンドポイント１０６、１０８に再送信するためのパケット再送信モジュール１１４を含む。一実施形態において、パケット・ソース１１２は、パケット・マネージャ１１０に通信可能に結合された１つ以上の他の情報処理システムとすることができる。また、パケット・ソース１１２は、情報処理システム１０４内に常駐する１つ以上のプロセスとすることも可能である。例えば、一実施形態において、パケット・ソース１１２は、エンドポイント１０６、１０８に送信されるパケットを発生するアプリケーションである。
【００５０】
パケット・マネージャ１１０は、パケットをエンドポイント１０６、１０８に送信する場合に、１つ以上の信頼性の高い転送プロトコルを用いる。従来、パケットは、最初に送信される際に増分シーケンス番号が割り当てられる。宛先（様々な通信システムの要件に基づいて、次のホップまたは最終的な宛先のいずれか）において受信されると、受信側は、承認パケットを発信側に返信して、どのシーケンス番号を受信したかを知らせる。あるいは、信頼性の高い転送では、承認パケットを合体させる場合がある。承認パケットの合体は、いくつかのパケットを受信し、その最後のパケットに対応する１つの承認を送信することを含む。信頼性の高い転送によって送信を行うシステムでは、送信側のノードが、受信された最後の承認パケットで示されたシーケンス番号に対応するパケットを含めてそれまでの承認されていないパケット全てのコピーを維持する。承認されないパケットは通常、既定のタイムアウト期間が経過した後、送信側ノードによって再送信される。代替ポートもしくはルートに再送信すること、またはパケットを捨てることを含めて、他の改善も可能である。
【００５１】
信頼性の高いプロトコルは、マルチレーン（multilane）またはマルチプル・コンテキスト（multiple context）のシーケンス番号の使用をサポートする場合もあり、そうでない場合もある。マルチレーンまたはマルチプル・コンテキストのシーケンス番号は、別個のシーケンス番号の組を用いて、いくつかの無関係の通信ストリームを同時に維持する場合を含む。このモードにおいては、異なるストリーム（時に「ノード」と称される）は、それらの間に何ら関係を持たない。本発明の好適な実施形態は、このモードをサポートしており、ノードの数、未処理パケットの最大数、またはシーケンス番号のサイズには限定されない。
【００５２】
全てのパケットがエンドポイント１０６、１０８に再送信される従来の再送信方式に比べ、いくつかの実施形態のパケット再送信モジュール１１４は、未着パケットの再送信を、承認を受信していない最初のパケットのみに限定する。パケットの送信後、パケット再送信モジュール１１４は、パケットの受信成功を確認したエンドポイント１０６、１０８からの応答を待つ。承認されない送信済みパケットは、先にタイムアウトしたパケットが承認されるまで、送信側によって蓄積される。例えば、承認されない送信済みパケットは再試行キュー（図示せず）に蓄積される。再試行キュー（図示せず）は、再送信を必要とするパケットのためのものであり、保持バッファは、ネットワーク・バックプレッシャー（back-pressure）のために最初の送信を妨害されたパケットのためのものであり、または、ステージング・バッファは、送信成功または回復不能エラーのために情報処理システム１０４からの処分を待っているパケットのためのものである。一実施形態においては、パケットの再送信、パケットの保持、およびパケットを再度キューに入れることは、同時に行うことができる。再試行キューは、共有循環マルチポートＦＩＦＯバッファとすることができる。
【００５３】
再送信されているパケット、すなわち、受信側から適時の承認メッセージを受信しなかった第１のパケットが、受信側によって承認された後、パケット再送信モジュール１１４は、次に、未処理の承認されていないパケットの送出を行い、次の送信パケットがまだ送信されたことのないパケットであることを検出するまで続ける。送信されたことのないパケットが次の送信パケットとして検出されると、パケット・マネージャ１１０は、その正常な送信機構に戻る（すなわち、未処理パケット数の限度に達するまで、即時承認を待つことなく送信する）。パケット再送信モジュール１１４について、以下で更に詳細に考察する。
【００５４】
パケット再送信モジュール
図２は、パケット再送信モジュール１１４の際に詳細な図を示すブロック図である。図２は、パケット再送信モジュール１１４を、パケット・マネージャ１１０内にあるものとして示す。一実施形態において、パケット再送信モジュール１１４は、パケット・ディスパッチャ２０２に通信可能に結合されている。従って、パケット・ディスパッチャ２０２内にあるものとして図示した構成要素については論じない。本発明の更に別の実施形態においては、テーブル２４０等、パケット再送信モジュール１１４内にあるものとして図示した構成要素を、パケット再送信モジュール１１４とは別個にすることも可能である。
【００５５】
パケット２０４、２０６は、別個に、および任意に同時に、パケット再送信モジュール１１４内への経路を介してパケット再送信モジュール１１４に入ることができる。新しいパケット２０４は、アプリケーションからの、以前に送信されたことがないものであり、または、現在送信することができないために（すなわちネットワーク・バックプレッシャーまたはノードの動作モードの変更のために）再試行キューに置かれたパケットである。パケット・マネージャが受信するパケットの一例として、パケット・ソース１１２から受信される新しいパケット２０４が挙げられる。一実施形態においては、パケット・マネージャ１１０は短縮パケットを受信する。例えば、いったんパケットを受信すると、パケット分析器（図示せず）が受信パケットを分析して、パケット内のどのデータを抽出するかを決定する。この分析に基づいて、データ抽出器（図示せず）が、受信したパケットから、パケットを送信するエンドポイントおよびパケットを送出する出力ポートを決定するためにパケット・ディスパッチャ２０２によって用いられるデータを抽出する。
【００５６】
パケット・ディスパッチャ２０２に送信される抽出データは、「短縮パケット」と称される。換言すると、パケット・ディスパッチャ２０２に送信されるパケットは、パケット短縮器（図示せず）によって受信される完全なパケットではない。短縮パケットは、パケット再送信モジュール１１４が受信側エンドポイントを決定するために必要な情報のみを含む。パケット内に含まれる残りのデータに対するポインタをパケット・バッファにストアして、パケット・マネージャ１１０のデータ処理を簡略化する。パケット・マネージャ１１０が受信するパケットの別の例は、再試行キューから検索される再試行パケット２０６である。再試行キューは、すぐに送信することができないか、または受信側によって承認されていないために潜在的な再送信を待っているパケットをストアするために用いられるデータ記憶メモリである。従って、一実施形態において、再試行パケット２０６は、以前に送信を阻止されたパケット、またはすでに送信されたが承認タイムアウトを待っているパケットすなわち受信側デバイスから承認が受信されていないパケットあるいはその両方である。
【００５７】
一実施形態において、受信されたパケット２０４、２０６は、どのエンドポイントまたはコンテキストがパケットを受信するように決められているかを示すノード宛先、パケットに関連したシーケンス番号、パケット・バッファにストアされたパケットの残りを指すバッファ・ポインタ等の情報を含む。本発明の一実施形態において、パケットは、承認されるかまたは捨てられるまでパケット・バッファにストアされる。その実施形態では、送信された各パケットは、承認が受信されるまでセーブされる。
【００５８】
新しいパケット２０４は、新パケット・テーブル更新モジュール２１０によって評価される。このモジュール２１０は、第１のパス上で送信可能な新しいパケットに応答して、どのようにコンテキスト・テーブル２４０を更新するか、およびそれらをすぐに送信するかまたは再びキューに入れる必要があるか否かを判定する。再試行パケット２０６は、再試行パケット評価器２２４によって評価されて、どのようにコンテキスト・テーブル２４０を更新するか、およびそれらを送信するかまたは再びキューに入れる必要があるか否かを判定する。新パケット・テーブル更新モジュール２１０および再試行評価器２２４からの情報は、どのテーブル・エントリを更新するかを決定しパケット・ディスパッチャ２０２にどのパケットを送信するかを伝達するパケット送信情報（送信器ビジー信号２６０等）と共に、テーブル更新論理２１２モジュールによって処理される。テーブル更新論理２１２は、再試行評価器２２４およびテーブル更新論理２１０の双方からのノード情報を復号して、それらが２つの異なるノード上で動作している場合は、２４０における双方のノードのための各テーブルを同時に並行して更新する。また、これは、テーブルの機構に従ってＲＡＭまたはレジスタを直接操作するための論理を含み、これは、再開する必要があるタイマ、増分する必要があるシーケンス番号、または単に直接書き込みとしてのいずれかであるが、これらには限定されない。
【００５９】
更に詳細には、新しいパケット２０４がパケット再送信モジュール１１４によって受信されると、新パケット・テーブル更新器２１０は、このパケットを受信するように決められたエンドポイントに関連した送信モードを決定する。例えば、送信モードは、「正常」、「再試行」、「デッド（dead）」、または「回復」とすることができる。「正常」モードにおいては、パケットは、未処理パケットの数の限度に達するまで、即時承認を待つことなく送信される。「再試行」モードにおいては、未着パケットの再送信は、受信側ノードによって承認されていない送信済みの最初のパケットのみに限定される。「回復」モードでは、以前に承認されず再送信したパケットに関連した承認が受信側から受信された後、全ての未処理パケットを（送信されていないパケットを検出するまで）宛先ノードに送信する。
【００６０】
送信モードが「正常」である場合、パケット・ディスパッチャ２０２は、新しいパケット２０４をその各宛先に送信する。いったん新しいパケット２０４を送信すると、再試行タイマおよびデッド・タイマ（dead timer）等のパケット・タイマを始動する。再試行タイマは、宛先ノードからの承認を待つ最大時間およびパケットの送信を再試行する時を判定するために、パケット再送信モジュール１１４によって用いられる。デッド・タイマは、承認されていないパケットの再試行を停止する時およびパケット送信のためのエラー回復処理を開始する時を判定するために、パケット再送信モジュール１１４によって用いられる。送信モードが「再試行」である場合、パケット再送信モジュール１１４によって受信された新しいパケット２０４は、再試行キューに送信される。新しいパケットおよび再試行パケットは、パケット再送信モジュール１１４によって同時に受信可能であることに留意すべきである。
【００６１】
パケット再送信モジュール１１４は、エンドポイント１０６、１０８に対するパケットの再送信を管理する。パケット再送信モジュール１１４は、パケットを送信した時から承認が予想される時までの期間を監視する。パケット再送信モジュール１１４は、いつパケットの送信を再試行するか、再送信がその宛先まで代替ポートまたはルートを用いるべきか否か、またはパケットの再送信を終了するべきか否かを判定する。また、パケット再送信モジュール１１４は、指定された時間内かつ指定された再送信試行数の後にその宛先ノードによってパケットが承認されていないことを判定することによって、再送信が成功したか否かを判定する。
【００６２】
パケット再送信モジュール１１４は、再試行キューからの再試行パケットを監視して、送信済みパケットについて承認が受信されたか否かを判定する。再送信モジュールが、再試行タイマに基づいて、いずれかのノードについて再試行キューからのパケットがタイムアウトしたと判定した（例えば所与の時間間隔内にパケットについて承認が受信されない）場合、パケット再送信モジュール１１４は「再試行」状態に入り、パケット・ディスパッチャ２０２はこのパケットを再試行キューに維持する。しかしながら、パケット再送信モジュール１１４が、パケットに関連するデッド・タイマが切れたと判定した場合、パケットが属するノードは「デッド」状態に入る。パケット・ディスパッチャ２０２は、この状態情報を用いてこれらのパケットの配置を決定する。
【００６３】
上述したように、パケット再送信モジュール１１４は、いつパケットを再送信するかを決めるために分析され更新される１組のテーブル２４０に結合されている。例えば、図２には、「次に発信」（「Ｎ２Ｇ」）テーブル２２６、「モード」テーブル２２８、「代替ポート」（「ＡｌｔＰｏｒｔ」）テーブル２３０、「最後に承認されたシーケンス番号」（「ＬａｓｔＡｃｔ」）テーブル２３２、「再試行タイマ」テーブル２３４、「デッド・タイマ」テーブル２３６、「代替ルート・タイマ」（「ＡｌｔＴｉｍｅｒ」）テーブル２３８、およびＬａｓｔＳＱＮテーブル２８０が示されている。これらのテーブルは一実施形態の一例として列挙したものであり、本発明の更に別の実施形態は他のデータ維持テーブルも利用可能であることに留意すべきである。
【００６４】
Ｎ２Ｇテーブル２２６は、各アクティブ・データ・ストリームごとに、特定の宛先に送信される次のパケットのシーケンス番号を含む。例えば、ある特定のデータ・ストリームについてノードＮがシーケンス番号７を送信されたばかりである場合、Ｎ２Ｇテーブル２２６はこのデータ・ストリームについてエントリ８を含む。一実施形態では、Ｎ２Ｇテーブル２２６はノード番号によってインデクスされ（indexed）、レジスタ・アレイによって実施される。
【００６５】
一実施形態において、モード・テーブル２２８は、ノード番号によってインデクスされ、各インデクス・ノードのモードを含む。一例において、モード・テーブル２２８は、特定のノードについて４つの異なるモードを参照する。すなわち、正常、再試行、回復、およびデッドである。再試行モードは、ノードの特定のパケットに関連した再試行タイマが切れたことを示す。以前に送信したパケットを再送信するために、Ｎ２Ｇ番号は戻される。このモードの間、このノードに送信されるのはＮ２Ｇパケットのみであり、他のパケットは送信されない。また、再試行モードは、代替ポート上でパケットを再送信することを可能とする。追加のノード・インデクス・タイマを用いることにより、同一の試行ポートに異なるものを再送信するか否かについて更に決定を行うことができる。デッド・モードは、ノード上でデッド・タイマが切れたことを示す。デッド・モードの間、パケット再送信モジュールは、リンクの他端がもはや機能していないと想定し、それ以上は送信を試行しない。回復モードは、パケットが再送信されたノードから承認が受信されたことを示す。パケット再送信モジュール１１４が送信したことのないパケットを識別するまで、残りのパケットを通常どおり再送信することができる。正常モードでは、パケットが順序正しいならば、パケットをノードに送ることができる。
【００６６】
また、ＡｌｔＰｏｒｔテーブル２３０は、一実施形態ではノード番号によってインデクスされ、データ通信エラーを克服するためにパケット再ルーティングの解決策を試す必要があることを示す。例えば、多数の再送信を試行した後でも承認が受信されない場合、ＡｌｔＰｏｒｔテーブル２３０は、パッケージ再送信モジュール１１４に、新しいルーティング解決策を用いる必要があることを知らせることができる。
【００６７】
また、ＬａｓｔＳｑｎテーブル２８０は、一実施形態ではノード番号によってインデクスされ、宛先エンドポイントについてのパケットに割り当てられた最後のシーケンス番号を示す。ＬａｓｔＳｑｎテーブル２８０への最後のシーケンス番号のエントリは、パケットが最初に受信された場合に生成され、他の方法で持続される。また、ＬａｓｔＡｃｋテーブル２３２は、一実施形態ではノード番号によってインデクスされ、宛先ノードにより承認された最後のパケットのシーケンス番号を示す。受信論理２５０が承認パケットを受信すると、このテーブルはパケット再送信モジュール１１４によって更新される。受信した承認のシーケンス番号が、特定のエンドポイントについてＬａｓｔＡｃｋテーブル２３２に現在ストアされている値よりも大きく、かつ、このエンドポイントについて最新のパケットに最後に割り当てられたシーケンス番号の値（ＬａｓｔＳｑｎ  ２８０）以下である場合、ＬａｓｔＡｃｋシーケンス番号テーブル２３２に書き込むことができる。他の場合、受信した承認パケットは無視される。このような受信した承認メッセージを無視することによって、不良シーケンス番号をＬａｓｔＡｃｋシーケンス番号テーブル２３２内に書き込まないことが確実となる。不良シーケンス番号の書き込みは、いつパケットを再送信するかを決定するために再送信モジュール１１４によって用いられる再試行状態機械の適正な動作に影響を及ぼす恐れがある。再試行状態機械については、以下で更に詳細に論じる。
【００６８】
ＲｅｔｒｙＴｉｍｅｒテーブル２３４およびＤｅａｄＴｉｍｅｒテーブル２３６は、同様に構成され、一実施形態ではバッファ・ポインタによってインデクスされる。いくつかの実施形態は、バッファ・ポインタ当たり２ビット・タイマを用い、「ＳＹＮＣ」パルスを供給してタイマを更新する回数を設定する。一実施形態では、ＲｅｔｒｙＴｉｍｅｒテーブル２３４およびＤｅａｄＴｉｍｅｒテーブル２３６は、上述の再試行タイマおよびデッド・タイマの状態を反映する。再送信モジュール１１４は、ＲｅｔｒｙＴｉｍｅｒテーブル２３４およびＤｅａｔＴｉｍｅｒテーブル２３６を分析して、いつパケットの送信を再試行するか、または、いつパケットの再送信を停止してエラー回復動作を実行するかを決定することができる。ＡｌｔＴｉｍｅｒテーブル２３８は、バッファ・ポインタでなくノード番号によってインデクスされ、代替ルート・タイマの状態を反映し、いつパケットを再送信するための代替ルートを用いるかを決定するために、再送信モジュール１１４によって用いられる。
【００６９】
再試行パケット２０６がパケット・マネージャ１１４によって受信されると、再試行評価器２２４は、再試行パケット２０６に関連した情報を再試行パケット・テーブル更新器２１２に伝達するために再試行パケット２０６を分析する。再試行評価器２２４は、入来した再試行パケット２０６およびその関連するノードに関して、上述の１組のテーブル２４０および再試行状態機械２４２（以下で更に詳細に論じる）を分析して、再試行パケット２０６を再送信するか否かおよびノードをどの状態に移すかを決定する。
【００７０】
例えば、１組のテーブル２４０は、タイマ状態、各ノードに関連した現在の送信モード、各ノードおよびデータ・ストリームから最後に承認された送信パケット等の経過を把握している。再試行評価器２２４が、あるパケットについて再試行タイマが初期化されたこと、および所与の応答閾値を超えたことを判定すると、再試行評価器は、ノードに関連した送信モードを「正常」から「再試行」に変更するために、再試行パケット・テーブル更新モジュール２１２に信号を送信することができる。これによって、そのノードに新しいパケットが送信されることを防ぐ。
【００７１】
再試行モードの間、パケット再送信モジュール１１４が、承認されなかった最も早いパケットに対応する再試行キューからのパケットを再送信のために受信し、再試行タイマがタイムアウトすると、そのパケットを再び送信しパケット・タイマ（例えば再試行タイマ）２３４を再開するために、パケット送信モジュール２０２に信号を送信する。この時点で、そのノードに他のパケットは全く送信されない。しかしながら、１つ以上のノードが「再試行」状態にあっても、同様の「再試行」状態にない他のノードにはパケットを送信することができる。その後、再試行時間が再び切れた後に再試行キューからそのパケットを受信すると、そのパケットのみがそのノードに再送信される。
【００７２】
このサイクルが所与の間隔よりも長く続いた場合（例えば、代替ルート・タイマが所与の閾値を超えて、代替通信ルートを用いてその特定のノードとデータ通信を行うべきであることが示される）、パケット送信モジュール２０２に、任意のルーティング変更を用いた再送信を送出する。例えば、再試行評価器２２４は、ＡｌｔＴｉｍｅｒテーブル２３８から、このデータ・ストリームについてＡｌｔＰｏｒｔテーブル２３０のエントリによって指定される経路に対してルーティング変更を行う必要があると判定する。そのノードについてのパケット再送信およびそのパケットのパケット・タイマ２３４の再開は、そのデータ・ストリームのデッド・タイマが閾値を超えるまで続く。いったんデッド・タイマがその閾値を超えると、再送信モジュール１１４はそのノードのモードを「デッド」に変更し、再送信モジュール１１４は、そのネットワークの回復プロトコル（複数のプロトコル）を実行するために、パケット送信モジュール２１４に信号を送信する。例えば、典型的には、そのノードに対する全てのパケットを再試行キューから消去する。
【００７３】
しかしながら、再試行期間中に、そのノードに対する未処理ノードのいずれかに対応する承認が受信された場合、そのノードのモードを「再試行」から「回復」に変更する。パケット・モニタ１１４は、入来する再試行パケット２０６を監視して、Ｎ２Ｇシーケンス番号パケットに対応するパケットを探す。いったん検出されると、パケット・モニタ１１４は、そのパケットを再送信し対応する再試行タイマを再開するために、パケット送信モジュール２０２に信号を送信する。
【００７４】
「回復」モードでは、続けて、パケット・モニタ２２０が、再試行キューから受信した全てのパケットを監視し、パケット（複数のパケット）を再送信するべきか否かを判定する。回復モードの間、再送信モジュール１１４がまだ送信されたことのないパケット２０４、２０６を検出するまで、再試行タイマ２３４は無視される。これは、この実施形態においては、パケットに関連した再試行タイマが初期化されていないことを認識することによって判定される。
【００７５】
これは、例えば、新しいパケットを送信することになっているノードが「再試行」モードにある間にそれらのパケットが到着した場合に起こる可能性があり、そのパケットは再試行キューに直接送信される。新しいパケットは「再試行」モードで送信されないので、そのパケットのタイマはセットされていない。送信されていないパケットを見つけると、ノードはその「正常」モードに戻されて、送信側は新しいパケットを送信する。
【００７６】
明らかであるように、本発明の好適な実施形態の再送信モジュール１１４は、「再試行」モードにおいて１つのノードについて１つのパケットのみを送信し、そのパケットの承認を用いてエンドポイントが再び機能しているか否かを検査し、いつそのノードのモードを変更して通信が再確立されたことを反映するかを検査する。いったんその１つのパケットに対する承認が受信されると、その場合にのみ、未処理パケットのいっそう迅速な再送信が試行される。トラブルのあるノードに対する未処理パケットの再送信は、他のノードへのパケット送信と混ざって、おそらく問題は発生せず、または、おそらく並行して回復する。従来技術の手法に比べてこのアルゴリズムが優れている点は、タイムアウトを検出した場合にネットワークが未承認パケットでいっぱいにならないこと、および、パケットが受信された最初の順序で再送信されることが保証されることである。
【００７７】
いつパケットを再送信するかを決定するための状態機械図
図３は、いつパケットを再送信するかを決定するためにパケット再送信モジュール１１４によって用いられる例示的な状態機械３００を示す図である。対象のノードのモードが「正常」である場合、以下の決定が行われる。再試行タイマが開始している（３０２）が、再試行タイマもデッド・タイマも切れている場合、何も行われず、現在のパケットは送信されない（３０４）。タイマが開始したか否かの判定は、そのバッファ・ポインタのタイマ値（状態）がアイドル状態でないことをチェクすることによって行われる。デッド・タイマが切れている場合（３０６）、モードは「デッド」に変更され、Ｎ２ＧはＬＡＳＴＡＣＫ＋１の値のままである（３０８）が、これは単に形式であり、いったんこの状態になると、このノードにはどのパケットも送信されない。
【００７８】
デッド・タイマが切れていないが再試行タイマが切れている場合（３１０）、モードは「再試行」にセットされ、Ｎ２Ｇは同様にＳＡＬＴＡＣＫ＋１にセットされる（３１２）。これは、承認されておらず再送信されるパケットである最も早いパケットを表す。これ自体は再送信を実行させるわけではなく、ノードは単に再試行状態に置かれるだけであることに留意すべきである。このノード上のこのパケットに対して再試行タイマが開始していない場合、パケットのＳＱＮをチェックして（３１４）、これがＮ２Ｇに等しいか否か、すなわちこれが順序正しいか否かを調べる。パケットのＳＱＮが順序正しい場合、このパケットは送信のためにイネーブルされ、Ｎ２Ｇ値を増分する（３１６）。この動作は、送信が検出されたためにパケットが以前に遅延されたことを示す。信号ＳｔａｒｔＲｅｔｒｙＴｉｍｅｒおよびＳｔａｒｔＤｅａｄＴｉｍｅｒによってこのパケットを送信する場合、再試行タイマおよびデッド・タイマを開始する。
【００７９】
これが順序正しくない場合は、このエントリを再びキューに入れて、このパケットに何の動作も行わない（３０４）。このノードのモードが「デッド」である場合（３１８）、エントリを再びキューに入れて、このノードに対してそれ以上のことは行わない。このノードのモードが「再試行」である場合（３２０）、以下の決定を行う。ＬａｓｔＡｃｋ  ＳＱＮがこのノードのＮ２Ｇ  ＳＱＮ以上である場合（３２２）、これは、このノードに対して現在再送信されているシーケンス番号の値よりも大きいこのノードに対する承認が認められたこと、すなわちリンクの他端から有効な応答があったことを示す。その場合、Ｎ２Ｇを次の順序のシーケンス番号（ＬａｓｔＡｃｋ＋１）にリセットし、モードを「回復」に更新する（３２４）。ＬａｓｔＡｃｋ  ＳＱＮがこのノードのＮ２Ｇ  ＳＱＮ以上でない場合、タイマをチェックする。このノードに対してデッド・タイマが切れると（３２６）、モードを「デッド」に更新する（３２８）。デッド・タイマが切れていない（３３０）が、再試行タイマ（３３２）も切れていない場合、何もすることはなく、パケットを再びキューに入れる（３３４）。
【００８０】
再試行タイマが切れた場合（３３６）、これは、このパケットを再送信する必要があることを示し、モードは変わらないままである。しかしながら、ＳｔａｒｔＲｅｔｒｙＴｉｍｅｒをアサートすることによって再試行タイマを再開させる。この時点で、ＡｌｔＰｏｒｔタイマの任意のチェック（３３８）を行うことができる。これが初めてのパケット再送信である場合、ａｌｔ−ｐｏｒｔタイマは動作しておらず、これを信号ＳｔａｒｔＡｌｔＴｉｍｅｒによって開始させる。これが初めてのパケット再送信でなく、ＡｌｔＰｏｒｔタイマが切れていることが観察された場合、ＡｌｔＰｏｒｔ＿Ｎｅｘｔ（３４２）をアサートして、送信側の論理はそのルーティング・テーブルを更新する必要があることを示す（３４０）。
【００８１】
正常状態から再試行状態へ遷移を行う場合、再試行タイマは再開されなかったことに留意すべきである。これによって、再試行状態機械がこのパケットを再び処理して初めて再送信がスケジューリングされることが確実となる。再試行しているパケットのシーケンス番号がＮ２Ｇ  ＳＱＮである場合、ＡＴＴＮ信号をアサートする。このモードの間、再試行タイマが切れるたびに一度このパケットのみを送信することに留意すべきである。
【００８２】
図４は、図３の状態図の続きである。このノードのモードが「回復」（４０２）である場合、以下の決定を行う。このノードについてデッド・タイマが切れている場合（４０４）、モードを「デッド」に更新する（４０６）。パケットのシーケンス番号がＮ２Ｇと等しくない場合（４０８）、すなわちこれが順序において次のものでない場合、これは再びキューに入れられ、再送信のためにイネーブルされない。次いでシーケンス番号をチェックして、これがＮ２Ｇ未満であるか否かを調べる（４１０）。換言すると、全ての他の未処理パケットを再送信する前にこのパケットが二度認知されたか否か、である。その場合、再送信タイマをチェックして、これが再び切れたか否かを調べる（４１２）。その場合、Ｎ２Ｇ＿ｎｅｘｔをセットして、モードを「再試行」にセットする（４１４）。他の場合、受信からＬａｓｔＡｃｋシーケンス番号の値をチェックして、これがＮ２Ｇよりも大きいか否かを調べる（４１６）。その場合、Ｎ２Ｇ＿ｎｅｘｔをこの値＋１にセットして、回復モードはこのシーケンス番号によって継続する（４１８）。これは、最後にこのノードを評価して以来受信された追加のＡＣＫパケットを表す。正しいパケットを待っている間にＮ２Ｇの値を更新することによって、最終的に他のエンドポイントによって順序正しくないものとして拒絶されるパケットが送信されることを防ぐ。他の場合、何も変更はない（４２６）。再試行タイムアウトのチェックは任意であることに留意すべきである。回路の別の実施形態は、それを無視し、単に状態機械の「ＮＯ」分岐で継続する。
【００８３】
しかしながら、シーケンス番号がＮ２Ｇに等しい場合、再試行タイマの追加のチェック（４２０）を行って、それがすでに開始しているか否かを調べる。タイマが開始していない場合、これは、現在のパケットが以前に送信されていないことを示す。また、これは、ノードが以前に承認されていないパケットを全て再送信しており、「正常」モード４２２に戻る必要があることを意味する。他の場合、これは回復モードのままであり、シーケンス番号がＮ２Ｇ値に一致した場合はいつでもＡＴＴＮをアサートすると共に、再試行タイマを再び開始する必要があることを示す（４２４）。正常モードに移ると、デッド・タイマを開始する（このパケットは第１の場所において送信されたことがないので、そのデッド・タイマは開始されていない。再送信が行われる場合デッド・タイマは再開されない。すなわちパケットを最初に送信する場合だけである）。図２のように、これらの計算の結果は再試行パケット・テーブル更新モジュール２１２に提示される。Ｎ２Ｇ＿Ｎｅｘｔ、Ｍｏｄｅ＿Ｎｅｘｔ、ＡｌｔＰｏｉｎｔ＿Ｎｅｘｔは、Ｎ２Ｇ、Ｍｏｄｅ、ＡｌｔＰｏｒｔ、およびタイマ開始パルスＳｔａｒｔＡｌｔＴｉｍｅｒ、ＳｔａｒｔＲｅｔｒｙＴｉｍｅｒ、ＳｔａｒｔＤｅａｄＴｉｍｅｒの次の状態遷移を示す。
【００８４】
例示的な情報処理システム
図５は、図１の情報処理システムの更に詳細な図を示すブロック図である。情報処理システム１０４は、本発明の例示的な実施形態を実施するように適合された適切な構成の処理システムに基づいている。例えば、パーソナル・コンピュータ、ワークステーション等、いずれかの適切に構成された処理システムを、本発明の実施形態によって情報処理システム１０４として同様に用いることができる。
【００８５】
情報処理システム１０４は、コンピュータ５０２を含む。コンピュータ５０２はプロセッサ５０４を有し、これは、メイン・メモリ５０６（例えば揮発性メモリ）、大容量記憶インタフェース５０８、端末インタフェース５１０、およびネットワーク・アダプタ・ハードウェア５１２に通信可能に接続されている。システム・バス５１４がこれらのシステム構成要素を相互接続する。大容量記憶インタフェース５０８は、データ記憶デバイス５１６等の大容量記憶デバイスを情報処理システム１０４に接続するために用いられる。データ記憶デバイスの１つの具体的な種類は、ＣＤドライブ等のコンピュータ読み取り可能媒体であり、これを用いてＣＤ５１８またはＤＶＤまたはフレキシブルディスク（図示せず）にデータを記憶しこれからデータを読み取ることができる。他の種類のデータ記憶デバイスは、例えば固定ディスク・タイプのファイル・システム動作をサポートするように構成されたデータ記憶デバイスである。
【００８６】
一実施形態において、メイン・メモリ５０６は、上述したようなパケット・マネージャ１１０を含み、このパケット・マネージャがパケット再送信モジュール１１４を含む。パケット再送信モジュール１１４は、一実施形態において、パケット・ディスパッチャ２０２内に常駐するか、またはパケット・ディスパッチャ２０２とは別個のものとすることができる。図２に示すパケット再送信モジュール１１４について例示し記載した構成要素は、簡略化のため、図５に繰り返さない。一実施形態において、情報処理システム１０４は従来の仮想アドレッシング機構を用いて、プログラムが、あたかも、メイン・メモリ５０６およびデータ記憶デバイス５１６等の多数の小さい記憶エンティティに対するアクセスでなく、本明細書ではコンピュータ・システム・メモリと称する大きい単一の記憶エンティティに対するアクセスを有するかのようにふるまうことを可能とする。本明細書において用いる場合、「コンピュータ・システム・メモリ」という言葉は、情報処理システム１０４の仮想メモリ全体を総称することに留意すべきである。
【００８７】
コンピュータ５０２について１つのみのＣＰＵ５０４を示すが、多数のＣＰＵを有するコンピュータ・システムも等しく有効に使用可能である。本発明の実施形態は更に、複数のインタフェースを組み込んでおり、その各々が、ＣＰＵ５０４から処理の負担を軽減するために用いられる別個の完全にプログラミングされたマイクロプロセッサを含む。端末インタフェース５１０は、１つ以上の端末５２０をコンピュータ５０２に直接接続して、コンピュータ５０２に対するユーザ・インタフェースを提供するために用いられる。これらの端末５２０は、非インテリジェントまたは完全にプログラミングされたワークステーションとすることができ、システム管理者およびユーザが情報処理システム１０４と通信を行うことを可能とするために用いられる。また、端末５２０は、ユーザ・インタフェースおよび周辺デバイスを含むことができ、これらはコンピュータ５０２に接続されて、端末Ｉ／Ｆ５１０に含まれる端末インタフェース・ハードウェアによって制御される。端末Ｉ／Ｆ５１０は、ビデオ・アダプタおよび、キーボード、ポインティング・デバイス等のためのインタフェースを含む。
【００８８】
メイン・メモリ５０６に、一実施形態に従ったオペレーティング・システム（図示せず）を含ませることができ、これは、Ｌｉｎｕｘ、ＵＮＩＸ、ＷｉｎｄｏｗｓＸＰ、およびＷｉｎｄｏｗｓ  Ｓｅｒｖｅｒオペレーティング・システム等の適切なマルチタスク・オペレーティング・システムである。本発明の実施形態は、いずれかの他の適切なオペレーティング・システム、またはカーネル、または他の適切な制御ソフトウェアを用いることができる。本発明のいくつかの実施形態は、オブジェクト指向フレームワーク機構等のアーキテクチャを利用し、これによって、オペレーティング・システム（図示せず）のコンポーネント命令をクライアント内に配置したいずれかのプロセッサ上で実行することができる。ネットワーク・アダプタ・ハードウェア５１２は、ネットワーク１０２に対するインタフェースを与えるために用いられる。本発明の実施形態は、現在のアナログ技法またはデジタル技法あるいはその両方を含むものまたは将来のネットワーキング機構によるものを含めて、いずれかのデータ通信接続と機能するように適合させることができる。
【００８９】
本発明の例示的な実施形態を、完全に機能するコンピュータ・システムの文脈において説明したが、実施形態は、例えばフレキシブルディスク、ＣＤ−ＲＯＭ５１８、もしくは他の形態の記録可能媒体による、またはいずれかのタイプの電子伝送機構によるプログラムとして配布することも可能であることは、当業者には認められよう。
【００９０】
パケットを再送信するための例示的なプロセス
図６は、再送信されたパケットを処理するための例示的なプロセスを示す動作フロー図である。この実施形態において、再試行パケットは、パケット・ディスパッチャ２０２に配置された再試行キューから来る。パケットは、不定の頻度でいずれかのノードにいずれかの順序で来ることができ、上述したように、「以前に」は、実際に送信されることなく再びキューに入れられたパケットを表す場合がある。プロセスはステップ６０２において開始し、再試行評価器２２４にエントリする。パケットは、ノード、シーケンス番号、およびＢｕｆＰｔｒによって表される。ステップ６０４において、再試行状態機械２４２のプロセスを適用し、Ｎ２Ｇ＿Ｎｅｘｔ、Ｍｏｄｅ＿Ｎｅｘｔ、ＡｌｔＰｏｒｔ＿Ｎｅｘｔ、ＡＴＴＮ、ＳｔａｒｔＲｅｔｒｙＴｉｍｅｒ、ＳｔａｒｔＡｌｔＰＴｉｍｅｒ、およびＳｔａｒｔＤｅａｄＴｉｍｅｒの計算のための結果が生じる。次いで、ステップ６０６において、ＡＴＴＮの値を調べる。値の結果が負である場合、これは、本候補のパケットが送信不可能であることを示し、以下の動作を行う。
【００９１】
最初に、ステップ６４０において、テーブル更新論理２１２をイネーブルして、以前の計算のとおりにテーブル２４０の値を更新する。ステップ６５０において、パケット２７６を再びキューに入れるために、パケット・ディスパッチャ２０２に信号を送信する。次いで、プロセスは、ステップ６９０においてこのパケットについて終了し、次のパケットについて再び開始する。しかしながら、ステップ６０６においてＡＴＴＮ信号が正である場合、ステップ６１０においてテーブル更新論理２１２は送信器の状態を調べて、これがビジーであるか否かを調べる。送信器信号がビジーである場合（２６０）、ステップ６１６において、何も行わない。ステップ６９２において、プロセスはこのパケットについて終了し、何も実行しないようにパケット・ディスパッチャ２０２に信号を送信しないので、
おそらく同じパケットによって再び再開する。
【００９２】
ステップ６１０における判定の結果、送信器がビジーでないことがわかると、ステップ６４２においてテーブル更新論理２１２をイネーブルして、以前の計算のとおりにテーブル２４０の値を更新する。ステップ６６０において、パケット２７４を送信するために、パケット・ディスパッチャ２０２に信号を送信する。ステップ６９４において、プロセスはこのパケットについて終了し、次のパケットについて再開する。
【００９３】
新たに受信したパケットを処理するための例示的なプロセス
図７は、ノードｉｄによって識別されシーケンス番号およびバッファ・ポインタを割り当てられた新たに受信されたパケット２０４を処理するためにテーブル更新論理２１０が行う例示的なプロセスを示す動作フロー・チャートである。図７の動作フロー図は、ステップ７０２において開始し、直接ステップ７０３に進む。新たなパケットが到着すると、ステップ７０３においてこのパケットに新たなシーケンス番号を割り当て、値を増分する。ステップ７０４において、テーブル更新論理２１０は、入来パケットに関連したノードのモードが正常であるか否かを判定する。この判定の結果が否定的である場合、パケットは送信することができず、ステップ７０６においてテーブル更新論理２１０はパケットを再びキューに入れる。ステップ７３０において制御フローは終了する。この判定の結果が肯定的である場合、ステップ７０８において、テーブル更新論理２１０は、そのＳＱＮがそのノードのＮ２Ｇ  ＳＱＮに等しいことによって明らかであるように、そのノードのパケットのＳＱＮがＮ２Ｇに等しいか否かを判定する。この判定の結果が否定的である場合、そのパケットを送信することはできず、パケットを再びキューに入れる（ステップ７０６）。
【００９４】
この判定の結果が肯定的である場合、ステップ７１０において、新たなパケットのノードを再試行評価器２２４が動作しているノードと比較する。それらが同じノードでない場合、これは、新たなパケット・テーブル更新モジュール２１０および再試行パケット・テーブル更新論理２１２が同じノードまたはバッファ・ポインタについてテーブルの変更を試みていないことを示し、双方は別個に進むことができる。ステップ７１２において、新たなパケットを送信することができ、ステップ７１４において、そのノードのＮ２Ｇ値をＮ２Ｇ＋１に進ませる。更に、これが初めてのこのパケットの送信であるので、ステップ７１６において、再試行タイマおよびデッド・タイマを開始する。次いで、ステップ７１８において制御フローは終了する。
【００９５】
ステップ７１０において、新たなパケットおよび再試行評価器２２４が処理しているパケットが同じノードからの異なるパケットである場合、ステップ７２０において、パケット再送信モジュール１１４は、Ｒｅｔｒｙ（ｎｅｘｔ＿Ｍｏｄｅ）が正常であるか否かを判定する。この判定が否定的である場合、すなわち再試行状態機械２４２が、モードが正常モードから変更されるはずことを判定した場合（「ｍｏｄｅ＿ｎｅｘｔ」信号から明らかであるように）、新たなパケットは送信してはならず、ステップ７０６において再びキューに入れられる。これが再試行キューから戻った場合、再試行状態機械は続けてこのパケットを処理する。しかしながら、再試行状態機械２４２が「正常」モードから変化しようと試みていない場合、ステップ７２６においてこのパケットを送信することができるが、ステップ７２２において、再試行パケット・テーブル更新モジュール２１２は、そのノードのＮ２Ｇテーブル・エントリの制御を、新たなパケット・テーブル更新モジュール２１０に譲る。また、ステップ７２４において、この新たなパケットのバッファ・ポインタのために、再試行およびデッド・タイマを開始させる。次いで、ステップ７２８において制御フローは終了する。
【００９６】
タイマ論理のための例示的なフロー
図８は、本発明の一実施形態によるタイマ論理の例示的なフローを示す動作フロー図である。図８の動作フロー図は、ステップ８０２において開始し、直接ステップ８０４に進む。ステップ８０４において、現在のタイマをクリアする。ステップ８０６において、タイマはアイドルである。ステップ８０８において、パケット・マネージャ１１０は、タイマを開始する必要があるか否かを判定する。この判定の結果が否定的である場合、タイマはアイドルのままである。この判定の結果が肯定的である場合、ステップ８１０においてタイマを開始する。ステップ８１２において、パケット・マネージャ１１０は、タイマを同期させるか否かを判定する。この判定の結果が否定的である場合、制御フローはステップ８１０に戻る。この判定の結果が肯定的である場合、ステップ８１４においてタイマは動作し続ける。ステップ８１６において、パケット・マネージャ１１０は、タイマを同期させるか否かを判定する。この判定の結果が否定的である場合、ステップ８１４においてタイマは動作し続ける。この判定の結果が肯定的である場合、タイマを同期させ、ステップ８１８においてタイムアウトする。
【００９７】
ノードが４つのモードを移行する際にノードに送信されるパケットの例
図９は、ノードが上述した４つのモードを移行する際にノードに送信される一連のパケットの高レベルの例を示す。最初に、（９０１）において、シーケンス番号１、２、３、４、５、６、７、８、９、１０を有するパケットを送信する。ノードは正常であるので、これらのパケットは（９０２において）直接、１、２、３、４、５、６、７を通る。（この例では）７が送信された後、再試行状態機械２４２は、ＳＱＮ１が承認されておらず、再試行タイマで期限が切れたことを（独立して）検出する。再試行状態機械２４２は、ノードの状態を「再試行」に移行させ、ＳＱＮ＃１のみを再送信するべきことを示し、これは次いでＴＸポート９０２によって実行される。再試行状態機械２４２は続けて、そのノード上で第２のタイムアウトを検出し、ＳＱＮ＃１を再び再送信するべきことを示す。後の時点で、最終的に、＃３の承認が検出されるので、このノードのＬＡＳＴＡＣＫ  ＳＱＮは３に更新される。再試行評価器２２４によってこのノードのいずれかのパケットが認識されると、このノードの状態は「回復」に変更され、Ｎ２Ｇ  ＳＱＮは「４」に更新される。
【００９８】
再試行評価器２２４によってこのノードのＳＱＮ４、５、６、・・・が認識されると、これは、このパケットを再送信することを示し、それらを順序正しく実行するので、ＴＸポート９０２において４、５、６、７、８、９、１０をこの順序で送信する。いったんパケット＃８を送信すると、再試行状態機械２４２はそのノードのモードを「正常」に移行させる。なぜなら、パケット８は、以前に送信されていないパケットを表すからである。
【００９９】
非限定の例
当業者に知られるように、本発明は、ハードウェアまたはソフトウェアにおいて、またはハードウェアおよびソフトウェアの組み合わせにおいて生成することができる。しかしながら、一実施形態において、本発明はソフトウェアにおいて実施される。好適な実施形態に関連付けて開示した本発明の原理に従ったシステムまたは方法は、記述または特許請求された個々の機能もしくはステップを実行するための別個の要素もしくは手段、または記述または特許請求された機能もしくはステップのいずれかの実行を組み合わせる１つ以上の要素もしくは手段を有する単一のコンピュータ・システムにおいて生成することができ、または、当業者に知られるいずれかの適切な手段によって相互接続された分散型コンピュータ・システムに配置することができる。
【０１００】
好適な実施形態に関連付けて開示した本発明の原理に従って、本発明および本発明の原理は、いかなる特定の種類のコンピュータ・システムにも限定されず、当業者に知られるような、記述した機能および記述した方法ステップを実行するように構成された、いずれかの汎用コンピュータと共に用いることができる。上述したように、かかるコンピュータの動作は、当業者に知られるような、コンピュータの動作または制御において用いるための媒体上に含まれるコンピュータ・プログラムに従ったものとすることができる。コンピュータ・システムは、コンピュータ・プログラムを保持または含有するように使用可能であり、埋め込みメモリ等のコンピュータの固定具とすることができ、または、当業者に知られるような、ディスク等の可搬型の媒体上のものとすることも可能である。
【０１０１】
本発明は、いずれかの特定のコンピュータ・プログラム、論理または言語、または命令に限定されず、当業者に知られるいずれかの適切なプログラム、論理または言語、または命令によって実施することができる。開示した本発明の原理を限定することなく、いずれかのコンピューティング・システムは、とりわけ、少なくとも、コンピュータ読み取り可能媒体を含むことができ、このコンピュータ読み取り可能媒体から、データ、命令、メッセージまたはメッセージ・パケット、および他のコンピュータ読み取り可能情報をコンピュータが読むことを可能とする。コンピュータ読み取り可能媒体は、ＲＯＭ、フラッシュ・メモリ、フレキシブルディスク、ディスク・ドライブ・メモリ、ＣＤ−ＲＯＭ、および他の永久記憶装置等の不揮発性メモリを含むことができる。更に、コンピュータ読み取り可能媒体は、例えば、ＲＡＭ、バッファ、キャッシュ・メモリ、およびネットワーク回路等の揮発性メモリを含むことができる。
【０１０２】
更に、コンピュータ読み取り可能媒体は、コンピュータ読み取り可能情報等をコンピュータが読むことを可能とする有線ネットワークまたは無線ネットワークを含む、ネットワーク・リンクまたはネットワーク・インタフェースあるいはその両方等、一時状態媒体におけるコンピュータ読み取り可能情報を含むことができる。
【図１】
2010521848.tif 000003
【図２】
2010521848.tif 000004
【図３】
2010521848.tif 000005
【図４】
2010521848.tif 000006
【図５】
2010521848.tif 000007
【図６】
2010521848.tif 000008
【図７】
2010521848.tif 000009
【図８】
2010521848.tif 000010
【図９】
2010521848.tif 000011
【手続補正書】
【提出日】平成21年12月25日(2009.12.25)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
少なくとも１つのネットワーク・エンドポイントによって受信するように決められたネットワークを介する少なくとも１つのパケットを送信するための情報処理システムを動作させる方法であって、
少なくとも１つのネットワーク・エンドポイントに送信されるキューから複数のパケットを順次処理するステップと、
前記複数のパケットから少なくとも第１のパケットを前記少なくとも１つのネットワーク・エンドポイントに送信するステップと、
前記少なくとも１つのネットワーク・エンドポイントに送信された前記少なくとも第１のパケットが承認されていないことを判定するステップと、
前記少なくとも第１のパケットが前記少なくとも１つのネットワーク・エンドポイントによって承認されていないことの判定に応答して、前記少なくとも第１のパケットに関連した第１の再試行パケットを前記少なくとも１つのネットワーク・エンドポイントに送信するステップと、
前記少なくとも１つのネットワーク・エンドポイントへの前記第１の再試行パケット以外のパケットの送信を一時停止するステップと、
前記第１の再試行パケットが前記少なくとも１つのネットワーク・エンドポイントによって承認されたことを判定するステップと、
前記第１の再試行パケットが承認されたことの判定に応答して、前記複数のパケットにおける残りのパケットの前記少なくとも１つのネットワーク・エンドポイントへの送信を再開するステップと、
を含む、方法。
【請求項２】
前記少なくとも第１のパケットの前記送信に応答して、前記少なくとも第１のパケットに関連した複数のタイマを開始させるステップを更に含む、請求項１に記載の方法。
【請求項３】
前記一時停止するステップが、前記少なくとも１つのネットワーク・ノードへの前記第１の再試行パケット以外のパケットの送信を一時停止するステップであって、前記他のネットワーク・エンドポイントへのパケットの送信は一時停止しない前記ステップを更に含む、請求項１または２に記載の方法。
【請求項４】
前記複数のタイマにおける第１のタイマが、前記少なくとも１つのネットワーク・エンドポイントからの承認を受信するための第１の所与の閾値に関連付けられている、請求項２または３に記載の方法。
【請求項５】
前記少なくとも１つのネットワーク・エンドポイントに送信された前記第１の再試行パケットが承認されていないことを判定する前記ステップが、
前記少なくとも１つのネットワーク・エンドポイントに送信された前記第１の再試行パケットに関連した承認パケットを監視するステップと、
前記第１のタイマに関連した値が前記第１の所与の閾値よりも大きいことに応答して、前記第１の所与の閾値の後に前記承認パケットを受信していないことを判定するステップと、
を更に含む、請求項４に記載の方法。
【請求項６】
前記第１の再試行パケットを送信する前記ステップが、
前記少なくとも第１のパケットが、関連する承認パケットなしに前記少なくとも１つのネットワーク・エンドポイントに送信された最も早いパケットであることを判定するステップと、
前記判定に応答して、前記第１の再試行データ・パケットを前記少なくとも１つのネットワーク・エンドポイントに送信するステップであって、前記少なくとも１つのネットワーク・エンドポイントから前記第１の再試行パケットに関連した承認パケットを受信するまで、前記少なくとも１つのネットワーク・エンドポイントに他のパケットを送信しない、前記ステップと、
を更に含む、前出の請求項のいずれかに記載の方法。
【請求項７】
前記第１の再試行パケットの第１の送信の際に第２のタイマを開始させるステップであって、前記第１の再試行パケットの前記送信に関連した承認を前記少なくとも１つのネットワーク・エンドポイントから受信するまで前記第２のタイマが動作し続ける、前記ステップと、
前記第２のタイマに基づいて、前記少なくとも１つのネットワーク・エンドポイントに再試行されているパケットについて第２の所与の閾値が発生したことを判定するステップと、
前記第２の閾値が発生したことの判定に応答して、前記第１の再試行パケットを以前に送信するために用いられた送信ルートとは異なる代替的な送信ルートを用いて、前記第１の再試行パケットを前記少なくとも１つのネットワーク・エンドポイントに再送信するステップと、
を更に含む、請求項６に記載の方法。
【請求項８】
前記少なくとも１つのネットワーク・エンドポイントから承認パケットを受信するステップと、
前記承認パケットに関連したシーケンス番号を分析するステップと、
前記分析に応答して、前記シーケンス番号が、前記少なくとも１つのネットワーク・エンドポイントに関連した現シーケンス番号よりも大きいこと、および、前記少なくとも１つのネットワーク・エンドポイントに送信されたパケット・シーケンスにおける最後の送信パケットに関連したシーケンス番号以下の少なくとも１つであることを判定するステップと、
前記シーケンス番号が、前記少なくとも１つのネットワーク・エンドポイントに関連した現シーケンス番号よりも大きいこと、および、前記少なくとも１つのネットワーク・エンドポイントに送信されたパケット・シーケンスにおける最後の送信パケットに関連したシーケンス番号以下の少なくとも１つであることの判定に応答して、前記シーケンス番号を、前記少なくとも１つの宛先ネットワークから受信された承認として記憶するステップと、
前記シーケンス番号の少なくとも１つが、前記少なくとも１つのネットワーク・エンドポイントに関連した現シーケンス番号よりも大きいこと、および、前記少なくとも１つのネットワーク・エンドポイントに送信されたパケット・シーケンスにおける最後の送信パケットに関連したシーケンス番号以下の少なくとも１つであることの判定に応答して、前記承認パケットを捨てるステップと、
を更に含む、前出の請求項のいずれかに記載の方法。
【請求項９】
少なくとも１つのネットワーク・エンドポイントによって受信するように決められたネットワークを介する少なくとも１つのパケットを送信するためのシステムであって、
メモリと、
前記メモリに通信可能に結合されたプロセッサと、
ネットワーク・エンドポイントに送信される複数のパケットを記憶するように適合されたキューと、
前記メモリおよび前記プロセッサに通信可能に結合されたパケット・マネージャであって、前出の請求項のいずれかに記載された前記方法の前記ステップ全てを実行するように適合された、前記パケット・マネージャと、
を含む、システム。
【請求項１０】
コンピュータ・プログラム・コードであって、コンピュータ・システムにロードされて実行されると、請求項１から８のいずれかに記載された方法の前記ステップ全てを前記コンピュータ・システムに実行させる、コンピュータ・プログラム・コード。
【国際調査報告】
2010521848.tif 000012
2010521848.tif 000013
2010521848.tif 000014
2010521848.tif 000015