(57)【要約】【課題】網通信システムにおいてデータパケットを伝送するための誤り訂正通信方法。【解決手段】網通信システム内に実装される誤り訂正通信プロトコルが提供される。本発明のプロトコルは、単一あるいは複数のエンドポイントに送られるパケット、例えば、ブロードキャストパケットの誤り訂正伝送を提供する。本発明のプロトコルによると、各送信エンドポイントは、送信されるべき自身のトラヒック、例えば、データパケットを、別個の待ち行列内に分離する。一つの待ち行列の先頭の所のパケットのみが送信され、送信完了信号が生成されるまで、他のパケットは送信されない。任意の時間において任意の送信エンドポイントからたった一つの不完全な送信のみが存在する。受信に成功したことを示す受信機アクノレッジメントが受信されていない場合は、パケットはその待ち行列の先頭の所に残され、その待ち行列は、"再試行ペンディング"状態に置かれ、短な"再試行ペンディング"タイマが開始される。【選択図】図２
2006287981.tif 000002
【特許請求の範囲】
【請求項１】
複数のエンドポイントを少なくとも一つの伝送媒体を介して接続する網通信システムにおいてデータパケットを伝送するための方法であって、送信エンドポイントから送信されるべきパケットが複数の待ち行列に分離され、前記複数の待ち行列の各々が自身のパケットがそれに向けて送信されるべき前記複数のエンドポイントの少なくとも一つの対応する宛先エンドポイントを持ち、この方法が：
任意の時間において、前記送信エンドポイントから、パケットを複数の待ち行列の内の一つの待ち行列の先頭から、前記一つの待ち行列が再試行ペンディング状態になく、不完全な送信を持たないときに限り、前記待ち行列の前記少なくとも一つの対応する宛先エンドポイントに送信するステップ；
前記送信エンドポイントにおいて送信完了信号を生成するステップ；および、
前記待ち行列の前記少なくとも一つの対応する宛先エンドポイントからパケットの受信に成功したことを示すアクノレッジメントが受信されている場合は、送信されたパケットを前記待ち行列の先頭から除去あるいは除去されたままに保ち、アクノレッジメントが受信されてない場合は、前記待ち行列を再試行ペンディング状態にし、前記送信されたパケットを前記待ち行列の先頭の所にそのまま残すか、あるいは前記送信されたパケットを前記待ち行列の先頭の所に戻すかし、所定の時間期間が経過した後に、前記待ち行列を再試行ペンディング状態から解除することによって、前記送信されたパケットに対する送信完了信号を処理するステップ；
とを含むことを特徴とする方法。
【請求項２】
さらに、前記処理するステップにおいて前記アクノレッジメントが受信されてない場合、前記パケットを前記送信エンドポイントから前記待ち行列の前記少なくとも一つの対応するエンドポイントに、ある限られた回数まで、再送信するステップを含み、前記パケットをある限られた回数まで再送信するステップが前記待ち行列を再試行ペンディング状態にすることなく遂行されることを特徴とする請求項１記載の方法。
【請求項３】
さらに：
各待ち行列に対して、その待ち行列からの一連の失敗した再試行に対する再試行カウントを維持するステップ；および
前記再試行カウントが所定の回数を超えたとき、回復動作を開始するステップを含むことを特徴とする請求項１記載の方法。
【請求項４】
前記待ち行列の先頭からの前記パケットの送信が、前記送信エンドポイントから前記待ち行列の前記少なくとも一つの対応する宛先エンドポイントの任意の一つへの不完全な送信が存在しない場合にのみ行なわれることを特徴とする請求項１記載の方法。
【請求項５】
前記待ち行列の先頭からの前記パケットの送信が、前記送信エンドポイントからの不完全な送信がない場合にのみ行なわれることを特徴とする請求項１記載の方法。
【請求項６】
前記送信完了信号が、前記少なくとも一つの対応する宛先エンドポイントからの前記アクノレッジメントが前記送信エンドポイントによって受信されるべきときまでは発生しないことを特徴とする請求項１記載の方法。
【請求項７】
前記パケットを送信するステップが：
前記パケットを前記待ち行列の前記少なくとも一つの対応する宛先エンドポイントに識別子を付けて送信するステップ；
前記待ち行列の前記少なくとも一つの対応する宛先エンドポイントの所で、前記待ち行列からの次に期待される識別子を追跡するステップ；および
前記待ち行列の前記少なくとも一つの対応する宛先エンドポイントの所で、受信に成功したが前記次に期待される識別子と同一でない対応する識別子を持つパケットを破棄するステップを含むことを特徴とする請求項１記載の方法。
【請求項８】
網通信システムであって、このシステムが：
誤り訂正通信方法を扱うための少なくとも一つのプロセッサ；および
少なくとも一つの伝送媒体を介して接続された複数のエンドポイントを含み、送信エンドポイントから送信されるべきパケットが複数の待ち行列に分離され、前記複数の待ち行列の各々が自身のパケットがそれに向けて送信されるべき前記複数のエンドポイントの少なくとも一つの対応する宛先エンドポイントを持ち、前記誤り訂正通信方法が：
任意の時間において、前記送信エンドポイントから、パケットを複数の待ち行列の内の、再試行ペンディング状態ではなく、不完全な送信を持たない一つの待ち行列の先頭から、前記待ち行列の前記少なくとも一つの対応する宛先エンドポイントに送信するステップ；
前記送信されたパケットの受信に成功したとき、前記待ち行列の前記少なくとも一つの対応する宛先エンドポイントから、前記パケットの受信に成功したことを示すアクノレッジメントを前記送信エンドポイントに送信するステップ；
前記送信エンドポイントにおいて送信完了信号を生成するステップ；および、
前記待ち行列の前記少なくとも一つの対応する宛先エンドポイントからパケットの受信に成功したことを示すアクノレッジメントが受信されている場合は、送信されたパケットを前記待ち行列の先頭から除去あるいは除去されたままに保ち、アクノレッジメントが受信されてない場合は、前記待ち行列を再試行ペンディング状態にし、前記送信されたパケットを前記待ち行列の先頭の所にそのまま残すか、あるいは前記送信されたパケットを前記待ち行列の先頭の所に戻すかし、所定の時間期間が経過した後に、前記待ち行列を再試行ペンディング状態から解除することによって、前記送信されたパケットに対する送信完了信号を処理するステップ；
とを含むことを特徴とするシステム。
【請求項９】
前記誤り訂正通信システムが、さらに、前記処理するステップにおいて前記アクノレッジメントが受信されてない場合、前記パケットを前記送信エンドポイントから前記待ち行列の前記少なくとも一つの対応するエンドポイントに、ある限られた回数まで、再送信するステップを含み、前記パケットをある限られた回数まで再送信するステップが前記待ち行列を再試行ペンディング状態にすることなく遂行されることを特徴とする請求項８記載のシステム。
【請求項１０】
前記誤り訂正通信システムが、さらに：
各待ち行列に対して、その待ち行列からの一連の失敗した再試行に対する再試行カウントを維持するステップ；および
前記再試行カウントが所定の回数を超えたとき、回復動作を開始するステップを含むことを特徴とする請求項８記載のシステム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は一般的には網通信システムおよび関連する通信プロトコル、より詳細には、網通信システムにおいてデータパケットを伝送するための誤り訂正通信方法に関する。
【背景技術】
【０００２】
複数の通信エンドポイント、つまり、バス、例えば、IEEE標準1349ハイパフォーマンスシリアルバス（IEEE Standard 1394 High Performace Serial Bus）に接続されたデバイスもしくはユニット、あるいはバス以外の他の伝送媒体を介して接続されたデバイスもしくはユニットを含む網通信システムにおいては、データが伝送に際に退廃したり、あるいは自身の処理速度が他の送信エンドポイントより遅いためにあるいは他のエンドポイントからの送信も同時に処理しているためにビジー状態にあるエンドポイントに送られたりすることがある。これら事象（イベント）から回復するための従来の技術による誤り訂正通信プロトコルは、これらを実現することが著しく複雑であることに加えて、（殆どの通信パケットは問題なく送信される場合でも）通信される個々の全てのパケットの処理のために追加の（プロセッササイクルにおける）処理オーバヘッドが要求される。この複雑さおよび処理オーバヘッドをサポートするためには、追加の負担が掛かり、実現のコストが増加するとともに、網通信システムのスループットが制限される。
【０００３】
従来の技術による誤り訂正通信プロトコル、例えば、LAPD（Link Access Procedure on the D-channel）は、典型的には、受信エンドポイントに対して各受信されたパケットを別個にアクノレッジすることを要求する。送信されたパケットは、送信の際に失われる（例えば、退廃する）ことがあるために、送信エンドポイントは、各サポートされる論理リンク上の前に送信されたが、アクノレッジされてない（受信が確認されてない）パケットに対して、再送信タイマを維持することを要求される。タイマの満了によって専用の回復手続きが刺激（起動）される。例えば、受信機が最後に正常に受信されたパケットについて照会され、最終的には、退廃されたパケットが再送信される。再送信間隔は、通常は、受信機内における処理遅延およびおそらくは送信遅延のために必然的に受信機アクノレッジメントが遅延されるために、１００ミリ秒（100s of milliseconds）のオーダとされる。送信されたパケットに対するアクノレッジメントの受信に伴って発生する大きな遅延のために、送信機がまだアクノレッジされてないある数の未決（アウトスタンディング）送信パケットを維持できるようにするために"ウインドウ機構（window mechanisms）"が採用される。
【０００４】
受信機における"ビジー状態（busy conditions）"は、典型的には、ビジー状態が存在するとき、およびこれから脱したとき、送信エンドポイントに明示的に通知することで扱われる（この動作自身がビジー受信機にとって追加の処理負荷となる）。これは、ビジー状態から回復するために通常の再送信間隔を用いた場合、新たなパケットを受信機に取り込むのに過剰な遅延が発生するために必要となる。上で説明の誤り回復手続きおよびビジー状態回復手続きは、両方とも、それ自身も誤りを含むような状況で機能することを要求される（例えば、ビジー状態が解除されたという受信機アクノレッジメントあるいは指標自身が退廃することもあり得る）。
【０００５】
さらに、２つのエンドポイント間の通信の一方向の誤りあるいはビジー状態からの回復のための通信が、これら同一の２つのエンドポイント間の通信の他方向のビジーあるいは過負荷状態によって妨害されることもある。これらプロトコルは、実現が複雑となることに加えて、多数のリンクに対してリンク毎に状態情報（例えば、再送信タイマおよび送信ウインドウ）を維持することを必要とされるために、これらプロトコルは典型的にはソフトウエアにて実現される。典型的なマルチタスキングプリエンプティブ（multi-tasking,pre-emptive）オペレーティングシステムにおいては、各誤りのまないパケットに対するプロトコル処理のために、２個あるいはそれ以上のコンテクストスイッチ、並びにソフトウエアタイマを開始および停止する作業が要求される。多量のトラヒックを扱うことが要求される場合は、オペレーティングシステムの単にこのような動作自体のプロセッサオーバヘッドが非常に大きくなる。さらに、これら複雑なプロトコルのソフトウエア開発には誤りがつきものであり、開発コストも莫大なものとなる。これらを含む製品が、製品に展開された後に通信プロトコル内に一つあるいは複数の発見の困難な"バグ（bugs）"を含むことも稀なことではない。
【発明の開示】
【発明が解決しようとする課題】
【０００６】
従って、通信システムの性能および独立な相互に通信するエンドポイント間でのパケットの伝送における効率を改善できる誤り訂正通信プロトコルに対する必要性が存在する。さらに、単純で、ハードウエアにて安価に実現することができ、高い性能を持ち、しかも、コスト的にも効率の良い、誤り訂正プロトコルおよび網通信システムに対する必要性が存在する。
【課題を解決するための手段】
【０００７】
本発明は、複数のエンドポイント、つまり、デバイスあるいはユニット、例えば、サーバおよび端末を、少なくとも一つの伝送媒体を介して接続する網通信システム内に実装される誤り訂正通信プロトコルを提供する。本発明によるプロトコルにおいては、各送信エンドポイントは、自身のトラヒック、例えば、送信されるべきデータパケットを、別個の待ち行列内に分離する。一つの待ち行列の先頭の所のパケットが送信され、送信完了信号（transmit complete signal）がサービス（生成）されるまでは、他のパケットは送信されない。送信は、送信完了信号がサービス（生成）されるまでは、"不完全（incomplete）"であると呼ばれる。ある与えられた送信エンドポイントからは、任意の時点において、たった一つの不完全な送信のみが存在する。
【０００８】
パケットが誤りなしに受信され、受信すなわち宛先エンドポイントによって受理されると、受信エンドポイントは直ちに受信が成功したことを示すアクノレッジメントを送信エンドポイントに送り返す。送信完了信号が送信エンドポイントの所で、受信機アクノレッジメントが送信エンドポイントによって受信されるべき時点で生成される。
【０００９】
送信エンドポイントによって（ハードウエアあるいはソフトウエア送信完了割込みサービスルーチンを用いて）送信完了信号が処理（生成）される際に、受信に成功したことを示す受信機アクノレッジメントが受信されている場合は、先に送信されたパケットがその待ち行列の先頭から除去される。このアクノレッジメントが受信されてない場合は、パケットはその待ち行列の先頭の所にそのまま残され、その待ち行列は、"再試行ペンディング（pending retry）"状態に置かれ、短な"再試行ペンディング（pending retry）"タイマ、好ましくは、ハードウエアタイマが（その再試行ペンディングタイマが別の待ち行列に対する再試行ペンディングのために既に開始されてない場合に限り）、開始される。いずれの場合も、もう一つのパケットが、存在する場合は、再試行ペンディング状態にない待ち行列の先頭から送信される。
【００１０】
再試行ペンディングタイマが満了すると、ハードウエアあるいはソフトウエアの送信完了割込みサービスルーチン（transmit complete interrupt service routine）は、その再試行ペンディングタイマと関連する全ての待ち行列を、再試行ペンディング状態から解除し、それらのパケットが再び送信できるようにする。こうして、これら待ち行列の各々からの送信されるべき最初のパケットが再送信される。少なくとも１ビットから成る増分（昇順）シーケンス番号が同一の待ち行列からの全ての送信に対して用いられ、受信エンドポイントによってチェックされ、これに基づいて、重複パケット、例えば、受信機アクノレッジメントが失われたために誤って再送信されたパケットが受信エンドポイントによって破棄される。
【００１１】
以下では、様々な好ましい実施例について図面を参照しながら説明する。
【発明を実施するための最良の形態】
【００１２】
以下に図面について詳細に説明するが、図面中、類似の参照符号は類似あるいは同一の要素を指す。図１Ａおよび１Ｂは、本発明の誤り訂正通信プロトコルを実現する一例としての網通信システムを示す。図１Ａは、ローカルバス網１０を示し、図１Ｂはローカルリング網２０を示す。各網１０、２０は、複数のエンドポイント４０１〜４０ｎ、つまり、デバイスあるいはユニット、例えば、サーバおよび端末を接続する伝送媒体３０を含む。
【００１３】
伝送媒体３０は物理層プロトコルを含むが、本発明によると、このプロトコルは、好ましくは、伝送媒体３０に接続された送信エンドポイント、例えば、４０１からの各送信が、受信エンドポイント４０、例えば、４０ｎによって直ちにアクノレッジされることを要求する。この物理層プロトコルは、好ましくは、さらに、送信エンドポイント４０１が送信完了割込み信号（transmit complete interrupt signal）を生成するとき、この信号が受信エンドポイント４０ｎのアクノレッジメントが受信されたか否か、および受信された場合は、そのアクノレッジメントが受信の成功を示したか、あるいはビジー状態あるいは他の問題に起因して失敗したことを示すかの指標も提供することも要求する。
【００１４】
図１Ａに示す一例としての網通信システムにおいては、伝送媒体３０上の物理（PHY）層およびリンク層上で動作するプロトコルとしては、好ましくは、IEEE 1394 Standard for a High Performance Serial Busにおいて指定されるプロトコルが用いられる。図１Ｂにおいては、物理（PHY）層および媒体アクセス制御（MAC）層上で動作するプロトコルとしては、好ましくは、ASNI/ATA Standard 878.1 for a Local Area Network Token Busにおいて指定されるプロトコルが用いられる。
【００１５】
説明の実施例においては、IEEE 1394およびANSI/ATA 878.1の両方のプロトコ ルおよび市販のハードウエアが、本発明の局面、すなわち、受信機が送信されたパケットの受信に成功したことを直ちにアクノレッジする要件、および送信完了信号（transmit complete signal）を生成するとき、受信機からのアクノレッジメントが送信機によって受信されたか否かの指標を提供する要件を満たすために利用できる。好ましくは、この送信完了信号は、ソフトウエアに対して送信完了割込み信号（transmit complete interrupt signal）を生成する。さらに、好ましくは、この送信完了割込み信号は、当業者において周知の様々な技法の一つによって生成（発生）できることが保障されるように設計される。例えば、この信号を生成する通常の機構が故障した場合は、この信号が生成されるべきであった時間より後の所定の短な遅延の後に、"ウォッチドッグ（watch dog）"回路によってこの信号が生成されるようにされる。
【００１６】
図２は、本発明の誤り訂正通信プロトコルの流れ図を示す。ステップ２００において、送信エンドポイント４０１から送信されるべきパケットが存在するという事象（イベント）が発生すると、ステップ２０５において、これらパケットが複数の待ち行列内に分離される。各宛先エンドポイントに対して一つの待ち行列が準備され、好ましくは、同一のエンドポイントへの全ての上位の論理リンクは、同一の待ち行列を共有する。トラヒックがそれまで空であった待ち行列内に入れられると、その待ち行列は、"空（empty）"状態から、"準備完了（ready）"状態に遷移する。
【００１７】
一度に、たった一つの不完全な送信（incomplete transmission）のみが存在し（送信はその送信に対する送信完了信号がサービス（生成）されるまで"不完全（incomplete）"と呼ばれる）、"準備完了（ready）"待ち行列は、好ましくは、ラウンドロビン方式にてサービスされる。次に、このプロトコルは、ステップ２１０において、不完全な送信が存在するか否か決定するためのチェックを行なう。不完全な送信が存在しない場合は、ステップ２１５において、第一の"準備完了"待ち行列の先頭の所のパケットが、それが存在する場合は、対応する受信すなわち宛先エンドポイント４０ｎに送られる。他のパケットについては、ステップ２２０において、送信エンドポイント４０１によって送信完了割込み信号がサービス（生成）されるまで送信されない。ステップ２１０において不完全な送信が存在する場合は、プロトコルはステップ２１５をスキップし、終端する。
【００１８】
本発明のプロトコルは、複数の待ち行列が同時に不完全な送信を持つように実現することもできることに注意する。この場合は、図２のステップ２１０におけるチェックは、各準備完了待ち行列（ready queue）に対して、不完全な送信が存在するか否かを決定するように修正される。そして、不完全な送信が存在しない場合は、ステップ２１５においては、不完全な送信を持たない少なくとも一つの準備完了待ち行列の先頭の所のパケットが送信される。この場合は、さらに、送信完了信号は、どの待ち行列に対して送信完了信号が生成されたかを示すように修正される。
【００１９】
ステップ２２０において、送信エンドポイント４０１の所で送信完了割込み信号が存在する（生成された）という事象が発生すると、送信完了割込みサービスルーチン（transmit complete interrupt signal）は、ステップ２３０において、受信の成功を示す受信機からのアクノレッジメントが受信されたか否かを決定する。アクノレッジメントが存在する場合は、この過程はステップ２３５に進み、前に送信されたパケットをその待ち行列の先頭から除去する。
【００２０】
受信の成功を示す受信機からのアクノレッジメントが受信されてない場合、例えば、受信エンドポイント４０ｎがビジーであった場合、受信機からのアクノレッジメント自身が退廃した場合、あるいはパケットが受信機によって退廃された状態にて受信された場合は、ステップ２６０において、前に送られたパケットはその待ち行列の先頭の所に残され、その待ち行列が"再試行ペンディング（pending retry）"状態にされる。ステップ２６５において、再試行ペンディングタイマ（pending retry timer）がオンであるかいなかチェックされる。再試行ペンディングタイマがオンでない場合は、ステップ２７０において、再試行ペンディングタイマが開始され、次に、このプロトコルはステップ２４０に進む。再試行ペンディングタイマがオンである場合は、これは別の待ち行列に対して再試行ペンディングのために開始されたものであるために、このプロトコルはステップ２４０に進む。受信エンドポイント４０ｎの所にエラーあるいはビジー状態が存在しない場合は、対応する送信待ち行列は、再試行ペンディング状態に入ることはない。受信パケットが退廃された状態にて受信されたことを検出するための機構については、当業者においては周知であり、例えば、巡回冗長検査（CRC）が用いられる。
【００２１】
ステップ２４０において、準備完了状態にある任意の待ち行列から送信エンドポイント４０１によって対応する受信エンドポイントに送信されるべき一つあるいはそれ以上の追加のパケットが存在するか否か決定される。存在する場合は、ステップ２４５において、次の"準備完了"待ち行列の先頭の所のパケットが送信される。送信すべき追加のパケットが存在しない場合は、プロトコルは終端する。
【００２２】
ステップ２８０において、再試行ペンディングタイマが満了するという事象が発生すると、ステップ２８０において、"再試行ペンディング"状態にある全ての待ち行列が"準備完了（ready）"状態にされる。プロトコルは次にステップ２１０に進む。
【００２３】
受信エンドポイントの所にエラーあるいはビジー状態が存在しない場合は、対応する再試行ペンディングタイマが本発明の誤り訂正通信プロトコルによってセットされることは決してなく、そのエンドポイントに送信している任意の送信待ち行列が再試行ペンディング状態に入れられることもない。再試行ペンディング状態においては、再試行ペンディングタイマによって再試行がそれらが成功する確率が高くなるように遅延されるとともに、連続的な再送信が必要とされる場合は、プロセッサおよび媒体に過剰な負担が掛ることを防止するために、再送信の速度が制限される。これによって、一つの待ち行列からの送信によって、他の待ち行列からの送信が著しく影響されるという問題が防止される。再試行ペンディングタイマの値は、あらゆるタイプのエラーからの回復をタイムリーに遂行するのに十分に短くセットされ、こうして、全てのエラー状態（例えば、敗退パケット、ビジー状態、および敗退アクノレッジメント）が本発明のプロトコルによって扱われる。
【００２４】
再試行ペンディングタイマは、好ましくは、以下が達成されるように、つまり：１）エラーあるいはビジー状態が任意のエンドポイントに対するスループットを著しく低することがないように十分に短く、２）ビジーエンドポイントがバッファ内に別のパケットに対する空間を作るために、自身の受信割込みサービスルーチン（receive interrupt service routine）を実行するのに十分に長く、３）送信エンドポイントが、受信エンドポイントを受信エンドポイントがトラヒックを扱うことができるとき、トラヒックの受信中であり、ビジーであるものと保つことができるのに十分に短く、あるいは４）送信エンドポイントが、常に失敗する受信エンドポイント（例えば、存在しないエンドポイントあるいはブーティング中のエンドポイント）に連続的に再送信するような状況において、プロセッササイクルの過剰な割合を消費することを防止するのに十分に長くなるように、１００ミリ秒（100s of usecs）のオーダに設定される。
【００２５】
本発明の好ましい実施例によると、ある待ち行列からの各パケットは、シーケンス番号を付けて送られる。このシーケンス番号は、好ましくは、単一ビットとして実現され、新たなパケットが送られる度にトグルされる。受信エンドポイント４０ｎは、各送信エンドポイントからの次に期待されるシーケンス番号を追跡することで、（例えば、退廃アクノレッジメントなどの理由から）誤って再送信されたパケットを破棄する。
【００２６】
こうして、受信機に、受信されるパケットを通じて、送信エンドポイントの識別が、様々な技法の一つ、例えば、"ソースアドレス（source address）"を介して提供される。後者の例が、IEEE 1394およびANSI/ATA 878.1プロトコルによって提供されているため、詳しくは、これを参照されたい。送信エンドポイントのこの識別は、受信エンドポイントにとって、送信エンドポイントにアクノレッジメントパケットを送るためにも必要とされる。本発明の誤り訂正通信プロトコルは、パケットの受信の成功を、たとえそのパケットが後に重複するものとして破棄された場合でも、アクノレッジされることを要求することに注意する。
【００２７】
シーケンス番号は、１ビットより多数のビットから構成することもできる。この場合は、好ましくは、送信エンドポイントによって送信されるシーケンス番号を受信エンドポイントによって期待されるそれと同期するための機構が提供される。このような機構は当業者において周知であり、例えば、１）"RESET"あるいは"RESTART Sequence Number"パケットを送信するやり方；２）常に"０"なるシーケンス番号を持つパケットを受理し、次に期待されるシーケンス番号を"１"にリセットするやり方；および／あるいは３）幾つかの順番には並んでいるが、ただし期待されないシーケンス番号が受信され、それらのパケットが拒絶された後に、次に送信されたシーケンス番号を受理するやり方；などが考えられる。ただし、重複パケットを破棄する目的で、送信パケットを、シーケンス番号以外の他の手段にて、受信エンドポイントに対して識別することも考えられる。
【００２８】
誤り訂正通信プロトコルを用いるパケット伝送は保障されるが、パケット伝送が保障されるポイント間には複数のソフトウエア層が介在するため、およびパケットが用いられるより上位のソフトウエア層が存在するため、まだ異なるエンドポイント上に常駐し、誤り訂正通信プロトコルを用いる２つの上位ソフトウエア層間のインタチェンジに（例えば、再開されたプロセス、バッファ状態、および／あるいはソフトウエアの欠陥などのために）エラーが発生する可能性が残される。ただし、底辺に横たわる通信機構が信頼できるものである場合は、しばしば、上位層の所に、単純でオーバヘッドの小さな方法がインタチェンジの健全性をチェックするために用いられる。このような方法には、上位においてやりとりパケットに番号を付けるやり方が含まれる。従って、パケットに番号を付け、重複するパケットを破棄する機能は、本発明のプロトコルが実現されるレベルにおいては全く扱わず、より上位のリンクレベルあるいはアプリケーションレベルにて扱うことも考えられる。
【００２９】
"準備完了（ready）"状態の待ち行列はラウンドロビン方式とは別のやり方にて扱う（サービスする）ことも考えられる。例えば、ある待ち行列からの送信に、他の待ち行列からの送信より高い取り扱い（優先）を与えることも考えられる。
【００３０】
さらに、説明の再試行ペンディングタイマ以外の機構を再送信の遅延および再送信速度の制限のために用いることもできる。例えば、再試行ペンディングタイマが定期的にルーチン的に満了し、その時点で、再試行ペンディング状態にある全ての待ち行列を、存在する場合、準備完了（ready）状態に戻すことも考えられる。
【００３１】
さらに、複数の待ち行列が一つの専用の再試行ペンディングタイマを共有する場合、１つではなく複数の再試行ペンディングタイマを用いて、２つの待ち行列間の再送信の開始を独立して許可することも、あるいはある一つあるいは複数の待ち行列からの送信に他の待ち行列からの送信より高い優先を、ある再試行ペンディングタイマのタイムアウト間隔を他の再試行ペンディングタイマのタイムアウト間隔より短くすることで与えることもできる。
【００３２】
さらに、２つの異なる再試行ペンディングタイマ、つまり：再試行ペンディングエラータイマ（pending retry error timer）と再試行ペンディングビジータイマ（pending retry busy timer）を用いることもできる。この場合は、再試行ペンディングビジータイマは、受信エンドポイントがビジー状態を示す受信機アクノレッジメントを受信したとき開始され、対応する待ち行列も再試行ペンディングビジー状態に置かれる。受信の成功を示す受信機アクノレッジメントが受信されない全ての他のケースにおいては、再試行ペンディングエラータイマが開始され、対応する待ち行列が再試行ペンディングエラー状態に置かれる。
【００３３】
送信完了信号の処理（生成）されたとき、受信の成功を示す受信機アクノレッジメントが送信エンドポイントによって受信されてない場合、別のやり方として、１からある限られた数までの即座の再試行、つまり再送信を遂行した後に、待ち行列を再試行ペンディング状態にし、再試行ペンディングタイマを開始することもできる。このような動作は、図２のステップ２６０に修正を加えることで、つまり、ステップ２６０において直接に再送信を遂行し、あるいは、ステップ２６０において間接的にそのパケットを待ち行列の先頭の所に残し、その待ち行列を準備完了状態のままにとどめることで遂行することができる。そして、これら限られた数の即座の再試行を試みたが送信の成功のアクノレッジメントが得られない場合に限り、ステップ２６０において、図２に示される動作を遂行すること、つまり、その待ち行列を再試行ペンディング状態に置くこともできる。さらに、この即座の再送信は、送信エンドポイントによって受信される、あるいは受信を失敗したアクノレッジメントのタイプに基づいて、条件付にて遂行することもできる。例えば、受信エンドポイントがビジー状態であることを示すアクノレッジメントの場合は、即座の再試行は行なわないようにすることもできる。
【００３４】
さらに、ステップ２０５において送信エンドポイント４０１から受信エンドポイント４０ｎに送信されるべきパケットは、おのおのが単一の宛先エンドポイント４０ｎを持つ複数の送信待ち行列に分離することもできる。これは、異なるタイプの送信パケット、あるいは異なるサブセットの上位リンクから送られるパケットに対して、異なる取り扱いを適用するために行なわれる。このような場合、本発明のプロトコルのレベルが重複するパケットを削除する機能も遂行する場合は、受信機は、それからパケットを受信することができる送信エンドポイントに対する各待ち行列に対して期待されるシーケンス番号を維持するようにされる。さらに、受信されたシーケンス番号を期待されるシーケンス番号と比較する目的で、受信機の所には、送信エンドポイントの識別のみでなく、そのエンドポイント内の送信待ち行列の識別も供給される。
【００３５】
フローコントロール、すなわち一時的にビジーであるエンドポイントへの送信を停止する動作は、受信の成功を示す受信機アクノレッジメントが受信されない場合に、待ち行列を再試行ペンディング状態に置くことによって達成される。送信が正常に受信されなかった理由を示す専用の受信機アクノレッジメントを送り返すことも考えられる。さらに、このような２つの理由として、受信機の所でのビジー状態と、送信されたパケットが退廃された状態にて受信されたことを示すこともできる。さらに、２つの異なるタイムアウト値を、再試行を必要とする理由に基づいて再試行タイマ内にプログラムすることもできる。例えば、送信の退廃の場合はより短い値を用い、エンドポイントがビジーである場合はより長い値を用いることもできる。
【００３６】
さらに、１つより多数の送信待ち行列が一つの再試行タイマを共有する場合であって、これら待ち行列の一つが、その後、タイマが開始されたときより短い時間間隔に基づいて再送信することを必要とする場合、一つの再試行タイマのタイムアウト間隔を、より長い値からより短い値に変更することも考えられる。さらに、各々が同一の宛先エンドポイント４０ｎを持つ２つの送信待ち行列が、各々、その宛先エンドポイントの２つの異なる待ち行列に送信し、これら待ち行列が、他の受信機待ち行列の状態とは独立に、ビジー状態にあったり、ビジー状態でなかったりすることもある。このような場合は、受信エンドポイント４０ｎの所に、受信パケットがそれに向うべき待ち行列の指標を、当業者に周知の様々な技法の一つ、例えば、"宛先アドレス"を用いて提供することもできる。さらに、このような場合、受信エンドポイント４０ｎは、送信エンドポイント４０1へのアクノレッジメントを、受信パケットに対する宛先待ち行列の状態に基づいて、行なったり、行なわなかったりすることもできる。
【００３７】
さらに、送信エンドポイントの所の各待ち行列と関連して、再試行カウンタを用いることもできる。このカウンタは、待ち行列からのエントリがある度に増分し、待ち行列からの送信が成功する度にクリアすることが考えられる。再試行カウンタが所定の閾値あるいは回数を超えた場合は、回復動作を開始することが考えられる。
【００３８】
さらに、任意の待ち行列、例えば、ブロードキャスト待ち行列からの送信に対して、１つより多くの宛先エンドポイントが存在することもある。このような場合は、宛先エンドポイントのあるサブセットから受信の成功を示す受信機アクノレッジメントが受信されない場合、その特定のブロードキャスト待ち行列を再試行ペンディング状態に置き、再試行ペンディングタイマを開始することも考えられる。これら宛先エンドポイントのサブセットは、一つの宛先エンドポイントから成ることも、複数の宛先エンドポイントの全てから成ることも、あるいは複数の宛先エンドポイントのある他のサブセットから成ることも考えられる。この動作は、ブロードキャストパケットのアクノレッジメントを可能にする。
【００３９】
成功した旨のアクノレッジメントがそれから受信されることを要求される宛先エンドポイントのサブセットが全てのアドレスされた宛先エンドポイントから成る場合は、本発明の動作はブロードキャストパケットの誤り訂正送信を提供する。この機能は、本発明の重複パケットをサイレントに破棄する一方で、全てのタイプの誤り状態に対して類似する回復手続きに従うという局面によって可能とされる。例えば、本発明のプロトコルは、３つの宛先エンドポイントへのブロードキャストパケット伝送において、これらエンドポイントの一つがパケットの受信に成功し、もう一つのエンドポイントがパケットを退廃された状態にて受信し、最後のエンドポイントがビジー状態のためにパケットの受信ができなかったような状況からの回復にも対応することができる。
【００４０】
さらに、伝送媒体のハードウエアおよび／あるいは物理層が最も最近に送信されたパケットの受信に成功したことの指標を直ちに提供しないような場合、本発明の誤り訂正通信プロトコルがうまく実現できるように、この指標をオーバヘッドおよびスループットの小さなコストにて提供することもできる。この場合は、各受信パケットの下位レベルの処理を行なう受信エンドポイントの割込みサービスルーチン（interrupt service routine）が、各受信されたメッセージの送信エンドポイントに、アクノレッジメントを送り返すように設計される。送信エンドポイントは、このようなアクノレッジメントを受信すると、送信完了割込み信号を生成する。失われたアクノレッジメントから回復するためには、送信過程（エンドポイント）は、各データパケットが受信エンドポイントに向けて送信される度に、ハードウエアタイマを開始する。ハードウエアタイマは、それが、例えば、前に発生した受信機アクノレッジメントが受信されないために満了したような場合、同様にして、送信完了割込み信号を生成する。
【００４１】
さらに、本発明の誤り訂正通信プロトコルの全体をソフトウエアにて実現する代わりに、本発明のプロトコルの少なくとも一部をハードウエアにて実現することもできる。さらに、ソフトウエアにて実現されるプロトコルは、網通信システムの内側あるいは外側に駐在する少なくとも一つのプロセッサによって処理されるプログラマブルインストラクションから構成することも考えられる。さらに、ソフトウエアにて実現されるプロトコルの部分は、割込みサービスルーチン内に実現することが考えられる。こうしないと、オペレーティングシステムの動作、例えば、オペレーティングシステムのコンテクストスイッチにプロセッサオーバヘッドが発生する恐れがあるためである。
【００４２】
本発明の誤り訂正通信プロトコルは、従来の技術によるプロトコルと比較して、本発明のプロトコルは誤り訂正手続きを送信に異常が発生した場合にのみ、（例えば、再試行ペンディングタイマを始動することで）開始するためにより効率的である。本発明のプロトコルによって実現される低遅延再伝送／誤り訂正は、本発明の連続再送信がプロセッササイクルの過剰な割合を消費しないという局面と一体となって、受信エンドポイントがビジーであることを含む全ての"誤り状態（error conditions）"を同一の誤り訂正機構によって扱うことを可能にする。さらに、本発明の誤り訂正通信プロトコルでは、ウインドウニング（windowing）、および"are you still there"？照会は不要となる。さらに、本発明のプロトコルでは、従来の技術のプロトコルにおいて典型的な失われたあるいは退廃された受信機アクノレッジメントと関連する回復の遅延を回避することができる。
【００４３】
さらに、本発明の誤り訂正通信プロトコルでは、全ての上位の通信リンクをたった一つのあるいはより小さなセットのタイマのみを用いて扱うことが可能となる。受信機の所でアクノレッジメントを送信するか否かを決定するために要求される機能は最小で済む。パケットに誤りが存在しないことが観察され、これをより上位のソフトウエアによる後の処理のために格納するためのスペースが存在する場合は、アクノレッジメントが送り返される。本発明のプロトコルは、パケットが重複するものと決定され、あるいは他の上位のリンク状態の結果として、破棄されたか否かに関係なく、アクノレッジメントを送り返す。
【００４４】
本発明のプロトコルの上述の様々な特徴のために、従来の技術によるプロトコルよりも実現が容易になるとともに、ハードウエアによる実現のコストも低減される。プロトコルがハードウエアにて完全には実現できない場合でも、残りの部分をソフトウエア割込みルーチン内にプロセッササイクルの効率が向上するようなやり方にて実現することができる。
【００４５】
もう一つの長所として、受信機アクノレッジメントが受信および送信エンドポイントの両方の所で、好ましくはパケットの送信と関連する手続きの一つとしてハードウエアにて扱われるために、２つのエンドポイント間の一方向の通信が２つのエンドポイント間の他方向の通信における輻湊、プロセッサオーバヘッド、フローコントロールあるいはビジー状態によって影響を受けることがなくなる。
【００４６】
上の説明は単に本発明の原理の適用を解説するものである。例えば、上に説明の機能および本発明の動作に対する最適な形態としての実施例は単に解説のためのものであり、当業者においては本発明の範囲および精神から逸脱することなく、他の構成および方法を実現できるものである。
【図面の簡単な説明】
【００４７】
【図１Ａ】本発明による誤り訂正通信プロトコルを実現する一例としての網通信システムを示す図である。
【図１Ｂ】本発明による誤り訂正通信プロトコルを実現する一例としての網通信システムを示す図である。
【図２】本発明による誤り訂正通信プロトコルを図解する流れ図である。
【符号の説明】
【００４８】
１０  ローカルバス網
２０  ローカルリング網
伝送媒体３０
エンドポイント４０
【図１Ａ】
2006287981.tif 000003
【図１Ｂ】
2006287981.tif 000004
【図２】
2006287981.tif 000005