(57)【要約】【課題】本発明はパケット再送制御装置に関し、パケットデータの再送制御を簡略化することができるパケット再送制御装置を提供することを目的としている。【解決手段】メモリ上のパケットへのポインタを含んだ送信要求に従ってパケットをネットワークに転送するパケット再送制御装置において、転送済みのパケットに対する送信要求を蓄積する再送用ＦＩＦＯ３６を備え、再送が必要な時にこの再送用ＦＩＦＯ３６の送信要求を用いて再転送を行なう手段を設けて構成する。【選択図】　　　図１
2004128786.tif 000002
【特許請求の範囲】
【請求項１】
メモリ上のパケットへのポインタを含んだ送信要求に従ってパケットをネットワークに転送するパケット再送制御装置において、
転送済みのパケットに対する送信要求を蓄積する再送用ＦＩＦＯを備え、
再送が必要な時にこの再送用ＦＩＦＯの送信要求を用いて再転送を行なう手段を設けることを特徴とするパケット再送制御装置。
【請求項２】
前記再送用ＦＩＦＯにおいて、該再送用ＦＩＦＯからの送信要求の読み出しと同時に送信要求を再送用ＦＩＦＯに入力する回路
を設けることを特徴とする請求項１記載のパケット再送制御装置。
【請求項３】
前記送信要求を蓄積する送信要求ＦＩＦＯを備え、
送信要求ＦＩＦＯの読み出しを行なうと同時に、読み出した送信要求を再送用ＦＩＦＯに入力する手段
を設けることを特徴とする請求項１又は２の何れかに記載のパケット再送制御装置。
【請求項４】
前記送信要求の中に送信シーケンス番号を含んだ装置において、受信側からの受信確認シーケンス番号を格納するレジスタと、
このレジスタの値と再送用ＦＩＦＯの先頭の送信要求にあるシーケンス番号を比較する回路とを備え、
比較の結果、再送用ＦＩＦＯの先頭の送信要求シーケンス番号が受信確認シーケンス番号より小さいならば廃棄を繰り返す手段
を設けることを特徴とする請求項１乃至３の何れかに記載のパケット再送制御装置。
【請求項５】
送信ウィンドウサイズを設定するレジスタと、再送用ＦＩＦＯに送信要求の書き込みを行なうとカウントアップし、読み出しを行なうとカウントダウンするカウンタと、
カウンタの値で示される再送用ＦＩＦＯ内の送信要求数と送信ウィンドウサイズを比較する比較回路とを備え、
前記再送用ＦＩＦＯ内の送信要求が送信ウィンドウサイズレジスタの値よりも小さい場合にだけ送信要求の実行を許可する信号を出し、また再送用ＦＩＦＯ内の送信要求数が送信ウィンドウサイズと同じ場合に再送の開始指示を出す手段
を設けることを特徴とする請求項１乃至３の何れかに記載のパケット再送制御装置。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明はパケット再送制御装置に関する。本発明は信頼性を持つパケット通信装置に関するものであり、図８に示すように送信側装置１から受信側装置２に向けてパケット送信を行ない（（１））、このパケットが受信側装置２で受信されると、受信側装置２から受信確認を出し（（２））、受信確認を送信側装置１がチェックして、正しく受信されていない場合には、送信側装置１からパケットを再転送する（（３））ような再送制御方式に関するものである。
【０００２】
パケットの再送制御方式には、Ｓｔｏｐ　ａｎｄ　Ｗａｉｔ　ＡＲＱ（Ａｕｔｏｍａｔｉｃ　Ｒｅｐｅａｔ　Ｒｅｑｕｅｓｔ）、Ｇｏ−ｂａｃｋ−ｎ　ＡＲＱ、Ｓｅｌｅｃｔｉｖｅ　Ｒｅｐｅａｔ　ＡＲＱがあるが、本発明が対象としているのは、そのうち最もよく用いられるＧｏ−ｂａｃｋ−ｎ　ＡＲＱ方式に関するものである。
【０００３】
【従来の技術】
この種のシステムとしては、送信バッファや再送バッファをＦＩＦＯ（Ｆｉｒｓｔ　Ｉｎ　Ｆｉｒｓｔ　Ｏｕｔ）により構成して、高速かつ簡単な制御で再送する方式が知られている（特許文献１参照）。
【０００４】
ここでは、前述したＧｏ−ｂａｃｋ−ｎ　ＡＲＱ方式について説明する。Ｇｏ−ｂａｃｋ−ｎ　ＡＲＱ方式は、おのおののパケットに対する受信確認を待たずに次のパケットを送り出す方式である。この方式では、受信側からの受信確認を待たずに送ることのできるパケットの数をｎ個以下と決め、ｎ個送信しても受信確認が来ない場合には、ｎ個前のパケットから再転送を行なう方式である。
【０００５】
図９はＧｏ−ｂａｃｋ−ｎ　ＡＲＱ方式の説明図である。図に示すように、受信確認が来る毎に受信確認を待たずに送ることのできるパケットの範囲（ウィンドウ）がスライドしていくので、スライディングウィンドウＡＲＱとも呼ばれ、ｎはウィンドウサイズとも呼ばれる。送信側装置１から送信パケットがｎ個受信側装置２に向けて転送される。受信側装置２からは、受信確認パケットが返されるが、この返送の仕組みに特徴がある。
【０００６】
送信したパケットに対して受信確認パケットが戻ってきたかどうかを判定するために、送信するパケットにはシーケンス番号を付加し、受信側から送り返す受信確認パケットには、送信したパケットのシーケンス番号に１を加えた番号を付加する。送信側装置１では、受信側装置２からのシーケンス番号を受信側装置２が次に要求しているパケットのシーケンス番号であると認識し、そのシーケンス番号−１までは受信が行なわれたと解釈する。
【０００７】
送信側装置１から送信できるパケットの数は、受信したシーケンス番号のパケットから、受信したシーケンス番号＋ｎ−１までのパケットのｎ個である。この方式は、受信確認が得られなければ次のパケットが送信できないＳｔｏｐ　ａｎｄ　Ｗａｉｔ方式に比較して高い転送効率が得られる。また、受信確認が得られなかったパケットだけを再送するＳｅｌｅｃｔｉｖｅ　Ｒｅｐｅａｔ方式に比較して実現が容易であるため、パケット通信を行なうシステムで広く用いられている。
【０００８】
Ｇｏ−ｂａｃｋ−ｎ　ＡＲＱ方式では、既に送信済みの複数のパケットを常に送信側装置１で保持しておき、受信確認が送信側装置１で得られた時点で初めて送信側装置１では、パケットの保持をしないで済むようになる。このような仕組みを実現するためには、通常はメモリ上にリングバッファを構成し、ＣＰＵがリングバッファを管理、制御して実現する方法が一般的である。しかしながら、このような方法は、ＣＰＵによりリングバッファの複雑な管理を行なわなければならない。
【０００９】
図１０は送信要求キューのＣＰＵ管理による再転送機構の説明図である。図に示すシステムは、メモリ内にあるパケットデータをネットワークに送信するシステムを示している。このようなシステムは、ネットワークカード内部や、計算機内部によく見られる形態である。図において、１０はＣＰＵ、１１は該ＣＰＵ１０と接続されたＣＰＵバス、１２は該ＣＰＵバス１１と接続されたＩ／Ｏバスブリッジ、１３は該Ｉ／Ｏバスブリッジ１２と接続されたメモリバス、１４は該メモリバス１３と接続されたメモリである。１５はＩ／Ｏバスブリッジ１２と接続されたＩ／Ｏバス、１６は該Ｉ／Ｏバスと接続されたネットワークインターフェースである。Ｉ／Ｏバスブリッジ１２において、２０はパケットデータのＤＭＡ転送を行なうためのＤＭＡエンジンである。メモリ１４において、３０は送信要求キューが記憶されるリングバッファ、３１はパケットである。図の太い実線はパケットデータの流れを示している。
【００１０】
送信要求キューの詳細図を同図に示している。送信要求キューは、前述したようにリングバッファ３０で構成されている。そして、その内部には送信要求が書き込まれて記憶されるようになっている。送信要求には、受信確認済みのものと、送信済みのものと、まだ送信されていないものとがある。Ｐ１は未受信確認ポインタ、Ｐ２は要求読出しポインタ、Ｐ３は要求書き込みポインタである。図中、Ｉ／Ｏバスブリッジ１２は、ＣＰＵバス１１、メモリバス１３、Ｉ／Ｏバス１５を接続し、各バス間のデータ転送を可能にしている。また、ＤＭＡエンジン２０は、ＣＰＵ１０によらないメモリ１４とＩ／Ｏバス１５間のバス転送を可能にしている。
【００１１】
ＣＰＵ１０は、パケットのメモリアドレスを含んだ送信要求をリングバッファ３０で構成された送信要求キューに入れる。そして、ＤＭＡエンジン２０に対して要求読出しポインタＰ２を設定する。ＤＭＡエンジン２０は、要求読出しポインタＰ２で示されたリングバッファ３０のエントリから送信要求を読み出し、送信要求に含まれているパケットへのポインタやサイズを認識する。そして、認識されたポインタで示されるメモリアドレスからパケットを読み出し、ネットワークインターフェース１６に向けてパケットを転送する。ＣＰＵ１０は、リングバッファ３０への送信要求書き込みの際には書き込みポインタＰ３を更新する必要がある。一方、読み出しポインタＰ２は通常ＤＭＡエンジン２０が更新する。
【００１２】
このように構成されたシステムにおいて、再転送が必要な場合には、ＣＰＵ１０はＤＭＡエンジン２０に対してリングバッファ３０から読み出すエントリを既に読んだエントリに設定しなおし、ＤＭＡエンジン２０を起動する必要がある。再転送に必要な送信要求を保持しておくために、ＣＰＵ１０が新たな送信要求をリングバッファ３０に書き込む際には、受信確認されていない送信要求を上書きしないようにしなければならない。
【００１３】
このためには、受信確認されていない送信要求がどこまでかを示すリングバッファのポインタ（図の未受信確認ポインタＰ１）を用意し、受信確認がなされたら、このポインタを更新するような制御が必要となる。
【００１４】
【特許文献１】
特開２０００−１５１６２３号公報
【００１５】
【発明が解決しようとする課題】
ＣＰＵ１０は、リングバッファ３０の管理だけでこれらの複雑な制御を行なう必要があり、更には送信してから一定時間内に受信確認が得られない場合には、再転送をしたり（タイムアウト）、受信パケットの中を解析してシーケンス番号を取り出すような処理も必要であることから、制御のためのオーバヘッドでパケットの転送性能が限られてしまう場合がある。また、キューをメモリ１４上に構成することで、パケットデータのＤＭＡとキューへのアクセスが競合し、この点も性能低下の原因となっている。
【００１６】
本発明は前述した問題点（ＣＰＵの過渡な制御負荷）を減少させることにある。ＣＰＵの制御の簡略化を実現する方法としては、キューをメモリ上に構成する代わりにＦＩＦＯで構成し、ＣＰＵがポインタの制御をしないで済むようにする方法がある。しかしながら、送信要求キューを単純にＦＩＦＯ化した場合、ＦＩＦＯは読み出したデータを必要に応じて再度読むことができないため、単純には再転送を実現することができなくなってしまう。
【００１７】
本発明はこのような課題に鑑みてなされたものであって、パケットデータの再送制御を簡略化することができるパケット再送制御装置を提供することを目的としている。
【００１８】
【課題を解決するための手段】
本発明で課題を解決するための基本的な考えは、送信済みのパケットに対する送信要求を保存しておく専用の再転送用ＦＩＦＯを設け、送信要求キューから送信要求を読み出すと同時に、前記再転送用のＦＩＦＯに要求を保存しておくことである。このようにすることで、再転送時に必要な送信要求を取り出せるようにすることができる。また、ＦＩＦＯを用いることで、ＣＰＵはリングバッファポインタを管理する必要がなくなるので処理が簡略化される。
【００１９】
更に、再転送用のＦＩＦＯに入れることのできる送信要求数を送信ウィンドウサイズにすることで、再転送が必要な条件を、再転送用ＦＩＦＯが一杯かどうかで判断できるようになる。また、再転送用のＦＩＦＯにタイムスタンプを入れておき、再転送用ＦＩＦＯの先頭のタイムスタンプとタイマとを比較することにより、送信済みパケットのタイムアウトを簡単に検出することが可能となる。
（１）図１は本発明の原理ブロック図である。図１０と同一のものは、同一の符号を付して示す。図において、１０はＣＰＵ、１１はＣＰＵバス、１２はＩ／Ｏバスブリッジ、１３はメモリバス、１４はメモリ、１５はＩ／Ｏバス、１６はネットワークインターフェース、３１はメモリ１４に格納されているパケットである。
【００２０】
Ｉ／Ｏバスブリッジ１２において、２０はＤＭＡ転送を行なうＤＭＡエンジン、３５は送信待ちキュー、３６は転送済みのパケットに対する送信要求を蓄積する再送用ＦＩＦＯである。送信要求キュー３５の出力は再送用ＦＩＦＯ３６に入力されており、送信要求キュー３５の出力と、再送用ＦＩＦＯ３６の出力は、共にＤＭＡエンジン２０と接続されている。
【００２１】
このように構成すれば、ＣＰＵ１０は再転送が必要な場合には、再送用ＦＩＦＯ３６から送信要求を読み出すようにＤＭＡエンジン２０に指示することで、パケットデータの再転送が可能となり、メモリ上にリングバッファを設けるのに比較して送信要求の取り出しや再送制御が簡単になる。
（２）請求項２記載の発明は、前記再送用ＦＩＦＯにおいて、該再送用ＦＩＦＯからの送信要求の読み出しと同時に送信要求を再送用ＦＩＦＯに入力する回路を設けることを特徴とする。
【００２２】
このように構成すれば、再転送したパケットを更に再転送することができ、データ転送の信頼性を更に向上させることができる。
（３）請求項３記載の発明は、前記送信要求を蓄積する送信要求ＦＩＦＯを備え、送信要求ＦＩＦＯの読み出しを行なうと同時に、読み出した送信要求を再送用ＦＩＦＯに入力する手段を設けることを特徴とする。
【００２３】
このように構成すれば、送信要求キューをＦＩＦＯで実現することにより、ＣＰＵの負担が減り、パケットデータの再転送が可能となり、メモリ上にリングバッファを設けるのに比較して送信要求の取り出しや再送制御が簡単になる。
（４）請求項４記載の発明は、前記送信要求の中に送信シーケンス番号を含んだ装置において、受信側からの受信確認シーケンス番号を格納するレジスタと、このレジスタの値と再送用ＦＩＦＯの先頭の送信要求にあるシーケンス番号を比較する回路とを備え、比較の結果、再送用ＦＩＦＯの先頭の送信要求シーケンス番号が受信確認シーケンス番号より小さいならば廃棄を繰り返す手段を設けることを特徴とする。
【００２４】
このように構成すれば、受信確認済みの送信要求を自動的に再送用ＦＩＦＯから廃棄することが可能となる。
（５）請求項５記載の発明は、送信ウィンドウサイズを設定するレジスタと、再送用ＦＩＦＯに送信要求の書き込みを行なうとカウントアップし、読み出しを行なうとカウントダウンするカウンタと、カウンタの値で示される再送用ＦＩＦＯ内の送信要求数と送信ウィンドウサイズを比較する比較回路とを備え、前記再送用ＦＩＦＯ内の送信要求が送信ウィンドウサイズレジスタの値よりも小さい場合にだけ送信要求の実行を許可する信号を出し、また再送用ＦＩＦＯ内の送信要求数が送信ウィンドウサイズと同じ場合に再送の開始指示を出す手段を設けることを特徴とする。
【００２５】
このように構成すれば、送信要求の実行と再送の実行とを切り分けてパケットの転送を確実に行なうことが可能となる。
【００２６】
この発明において、前記再送用ＦＩＦＯからポインタが読まれる毎にカウントアップするカウンタを備え、再転送の開始時にリセットしてからカウントアップを開始し、カウント値が送信ウィンドウサイズに達したら再転送の終了を指示する手段を設けることを特徴とする。
【００２７】
このように構成すれば、カウンタを用いて再送用パケットの転送制御を確実に行なうことが可能となる。
【００２８】
また、この発明において、前記受信確認シーケンス番号の格納レジスタにおいて、格納する値がレジスタの元の値よりも大きい場合に限りレジスタの値を更新する手段を設けることを特徴とする。
【００２９】
このように構成すれば、受信確認シーケンス番号の最新の値を更新し、保持することが可能となる。
【００３０】
また、この発明において、時間をカウントするタイマを備え、前記再送用ＦＩＦＯに送信要求を投入した時刻を一緒に入れるようにしておき、再送用ＦＩＦＯの先頭データの時刻と現在時刻とを比較して、予め決めた時間以上の時に再送要求信号を出す手段を設けることを特徴とする。
【００３１】
このように構成すれば、タイムアウトの検出と再送処理の起動を容易に行なうことが可能となる。
【００３２】
【発明の実施の形態】
以下、図面を参照して本発明の実施の形態例を詳細に説明する。
【００３３】
先ず、図１に示した原理ブロック図について更に詳細に説明する。
【００３４】
送信要求キュー３５は、メモリ１４内部のパケットのポインタを含む送信要求を格納しているキューである。このブロック図では、送信要求キュー３５をＩ／Ｏバスブリッジ１２の中に入れているが、ＣＰＵ１０とＤＭＡエンジン２０がアクセス可能なところであれば、どこでもよい。
【００３５】
また、この送信要求キュー３５は、リングバッファメモリ又はＦＩＦＯで実現することができるが、ＦＩＦＯで実現する方がＣＰＵ１０の制御が簡単になり好ましい。リングバッファを用いる場合には、制御の簡略化の効果が低い。送信要求キュー３５にＦＩＦＯを用いた例の動作を以下に説明する。
【００３６】
送信要求キュー３５に、ＣＰＵ１０が送信要求を入れる。次に、ＣＰＵ１０がＤＭＡエンジン２０に対して送信ＦＩＦＯ３５からの読み出しを指示すると、ＤＭＡエンジン２０は送信ＦＩＦＯ３５の送信要求を読み出してパケットデータの転送を開始する。
【００３７】
送信要求キュー３５としてＦＩＦＯを用いた場合、一旦送出された送信要求データは元には戻らない。この送信要求でパケットが転送されなかった場合、回復の手段がない。そこで、再送用ＦＩＦＯ３６を用いて送信要求を保存しておくようにしたものである。
【００３８】
該ＤＭＡエンジン２０は、送信ＦＩＦＯ３５からの送信要求を読み出すと同時に再送用ＦＩＦＯ３６を制御し、読み出した送信要求を再送用ＦＩＦＯ３６に書き込む。再転送が必要な場合には、ＣＰＵ１０は再送用ＦＩＦＯ３６から送信要求を読み出すようにＤＭＡエンジン２０に指示する。この結果、ＤＭＡエンジン２０は再送用ＦＩＦＯ３６からの出力を基に、パケット３１を探索し、ネットワークインターフェース１６を介してネットワークに送出する。
【００３９】
更に、再転送の条件判定と再送起動指示を行なうことで、ＣＰＵ１０の関与なしで自動的にパケットの再送を行なうことが可能になる。このような構成により、メモリ上にリングバッファを設ける従来の装置に比較して、送信要求の取り出しや再送制御を簡単に行なうことが可能となる。
【００４０】
図２は本発明の第１の実施の形態例を示すブロック図である。図１と同一のものは、同一の符号を付して示す。図１の構成と異なる点は、再送用ＦＩＦＯ３６の出力を入力側に戻すループ３８を設けた点である。その他の構成は、図１と同じである。
【００４１】
図１に示す再送用ＦＩＦＯ３６を備えただけでは、再転送したパケットに対して更に再転送するような場合には対応できない。そこで、再転送を繰り返せるようにするため、再送用ＦＩＦＯ３６から送信要求を読み出す際に、当該要求を再度再送用ＦＩＦＯ３６に入力できるようにするためのループ３８を設ける。具体的には、再送用ＦＩＦＯ３６の出力と入力とをループ３８で結び、再送用ＦＩＦＯ３６からの読み出し信号の制御と同時に書き込み用信号の制御を行なって、読み込んだデータをもう一度再送用ＦＩＦＯ３６に入れるように、ＤＭＡエンジン２０が制御するようにする。
【００４２】
このように構成すれば、再転送したパケットを更に再転送することができ、データ転送の信頼性を更に向上させることができる。
【００４３】
本発明によれば、前述した送信要求キュー３５を前述したようにＦＩＦＯで構成することもできる。このようにすれば、ＣＰＵの負担が減り、パケットデータの再転送が可能となり、メモリ上にリングバッファを設けるのに比較して送信要求の取り出しや再送制御が簡単になる。
【００４４】
図３は本発明の第２の実施の形態例を示すブロック図である。図２と同一のものは、同一の符号を付して示す。図において、１２はＩ／Ｏバスブリッジ、２０はＤＭＡエンジン、３６は再送用ＦＩＦＯである。４０は受信確認がとれた送信要求を廃棄する受信確認済送信要求廃棄装置である。４１は受信確認がとれたシーケンス番号を格納する受信確認シーケンス番号格納レジスタ、４２は送信要求のシーケンス番号と受信確認シーケンス番号格納レジスタ４１に格納されているシーケンス番号とを比較する比較器、４３は該比較器４２の出力を受けて、再送用ＦＩＦＯ３６の読み捨て指示を行なうＦＩＦＯ制御回路である。受信確認シーケンス番号格納レジスタ４１と、比較器４２と、ＦＩＦＯ制御回路４３は、受信確認済送信要求廃棄装置４０に含まれる。このように構成された装置の動作を説明すれば、以下の通りである。
【００４５】
受信が確認されたパケットの送信要求は再送用ＦＩＦＯ３６から取り除く必要がある。この実施の形態例では、この処理をＣＰＵによらずに自動化している。比較器４２は、受信確認シーケンス番号格納レジスタ４１に記憶されている受信確認シーケンス番号と、再送用ＦＩＦＯ３６の先頭の送信要求にあるシーケンス番号を比較する。
【００４６】
そして、比較の結果、再送用ＦＩＦＯ３６の先頭の送信要求シーケンス番号が受信確認シーケンス番号よりも小さいならば、ＦＩＦＯ制御回路４３を駆動して再送用ＦＩＦＯ３６に記憶されている送信要求を廃棄する。再送用ＦＩＦＯ３６のシーケンス場号が受信確認シーケンス番号格納レジスタ４１に記憶されているシーケンス番号よりも小さいということは、既に受信確認済みの送信要求がＦＩＦＯの中に含まれていることになるので、この不要な送信要求をＦＩＦＯ制御回路４３により廃棄するものである。
【００４７】
このように構成すれば、受信確認済みの送信要求を自動的に再送用ＦＩＦＯから廃棄することが可能となる。
【００４８】
図４は本発明の第３の実施の形態例を示すブロック図である。図３と同一のものは、同一の符号を付して示す。図において、１２はＩ／Ｏバスブリッジ、２０はＤＭＡエンジン、３５は送信要求キュー、３６は再送用ＦＩＦＯである。５０は送信と再転送制御をＤＭＡエンジン２０に対して指示する送信・再転送制御回路である。
【００４９】
該送信・再転送制御回路５０において、５１はＤＭＡエンジン２０からの指示によりウィンドウの幅（サイズ）を指定するウィンドウ指定レジスタ、５３は再送用ＦＩＦＯ内の送信要求数をカウントする再送用ＦＩＦＯ内送信要求数カウンタ、５２はウィンドウ指定レジスタ５１の値と再送用ＦＩＦＯ内送信要求数を比較する比較器である。
【００５０】
再送用ＦＩＦＯ内送信要求数カウンタ５３は、再送用ＦＩＦＯ３６内の送信要求を書き込む毎に１だけカウントアップし、送信要求を読み出す毎に１だけカウントダウンする。送信・再転送制御回路５０は、該比較器５２の比較結果により、ＤＭＡエンジン２０の送信と再転送の制御を行なう。ウィンドウ指定レジスタ５１と、比較器５２と、再送用ＦＩＦＯ内送信要求数カウンタ５３は、送信・再転送制御回路５０に含まれる。このように構成された装置の動作を制御すれば、以下の通りである。
【００５１】
装置の動作中において、送信・再転送制御回路５０は、送信要求数が送信ウィンドウサイズ未満の場合には、送信要求に余裕があることになるので、ＤＭＡエンジン２０に対して送信要求の読み出しを許可する信号を出す。ＤＭＡエンジン２０は、この信号を見て許可がある時だけ送信要求キュー３５からの読み出しを行なう。
【００５２】
送信ウィンドウサイズと再送用ＦＩＦＯ３６内の送信要求数が同じ場合には、ＤＭＡエンジン２０に対して再転送要求信号を出し、再送用ＦＩＦＯ３６を先頭から読み出して、再転送を行なうようにする。再転送の終了は、後述の再転送終了自動判定回路で判断する。
【００５３】
この実施の形態例によれば、送信要求の実行と、再送の実行とを切り分けて確実にパケット転送を行なうことができる。
【００５４】
図５は本発明の第４の実施の形態例を示すブロック図である。図３、図４と同一のものは、同一の符号を付して示す。図において、１２はＩ／Ｏバスブリッジ、２０はＤＭＡエンジン、３５は送信要求キュー、３６は再送用ＦＩＦＯ、４０は受信確認済送信要求廃棄装置、５０は送信・再転送制御回路、５１はウィンドウの幅（サイズ）を設定するウィンドウ指定レジスタである。
【００５５】
６０は再転送終了を自動的に判定する再転送終了自動判定回路である。該再転送自動判定回路６０において、６１は再送用ＦＩＦＯ３６の読み出し数をカウントする再送用ＦＩＦＯ読み出しカウンタ、６２は該再送用ＦＩＦＯ読み出しカウンタ６１の値とウィンドウ指定レジスタ５１の値（ウィンドウ数）を比較する比較器である。このように構成された装置の動作を説明すれば、以下の通りである。
【００５６】
再送用ＦＩＦＯ読み出しカウンタ６１は、当初はリセットされており、再送用ＦＩＦＯ３６からの読み出しを行なう毎にカウントを行なっている。再送用ＦＩＦＯ３６内にある送信要求数がウィンドウサイズ（図４で示す再送用ＦＩＦＯ内送信要求数カウンタ５３）を超えるまで、再転送中であることを示す信号を受信確認済送信要求廃棄装置４０とＤＭＡエンジン２０に与え、受信確認済みの送信要求の廃棄を禁止する。それと同時に、再転送中にはＤＭＡエンジン２０が送信要求キュー３５から送信要求を読み出すことを禁止する。具体的には、再送用ＦＩＦＯ３６内にある送信要求数がウィンドウサイズを超えるかどうかは比較器６２にて行なっている。そして、該比較器６２は、受信確認済送信要求廃棄装置４０とＤＭＡエンジン２０に制御信号を送り、前述したように、受信確認済みの送信要求の廃棄と、送信要求の読み出しとを禁止する。
【００５７】
この実施の形態例によれば、カウンタを用いて再送用パケットの転送制御を確実に行なうことが可能となる。
【００５８】
図６は受信確認シーケンス番号蓄積装置の一実施の形態例を示すブロック図である。図において、７０が受信確認シーケンス番号蓄積装置である。該受信確認シーケンス番号蓄積装置７０は、Ｉ／Ｏバスブリッジ１２内に設けられる（図５参照）。該受信確認シーケンス番号蓄積装置７０において、７１は受信確認シーケンス番号を格納する受信確認シーケンス番号格納レジスタ、７２は受信確認シーケンス番号を受けて、受信確認シーケンス番号格納レジスタ７１と比較し、比較結果に応じて更新を行なう比較・更新回路である。
【００５９】
このように構成された回路において、比較・更新回路７２が入力の受信確認シーケンス番号を受信確認シーケンス番号格納レジスタ７１の値と比較し、既にレジスタ７１に登録されているものより大きい場合にのみ、受信シーケンス番号を更新する。そして、空読みができない間に到着した受信確認シーケンス番号を蓄積し、更新する。即ち、この実施の形態例では、受信確認シーケンス番号が受信確認シーケンス番号格納レジスタ７１の値よりも大きい場合には、既に受信確認シーケンス番号格納レジスタに記憶されている受信確認シーケンス番号は既に受信確認が終了しているものと考えられるので、この受信確認シーケンス番号格納レジスタ７１を入力されてくる新しいシーケンス番号で更新するようにしたものである。
【００６０】
この実施の形態例によれば、受信確認シーケンス番号の最新の値を更新し、保持することが可能となる。
【００６１】
図７は本発明の第５の実施の形態例を示すブロック図である。図５と同一のものは、同一の符号を付して示す。図において、２０はＤＭＡエンジン、３５は送信要求キュー、３６は再送用ＦＩＦＯである。８０はタイムアウトを検出するタイムアウト検出装置である。
【００６２】
該タイムアウト検出装置８０において、８１は２つの値の差を計算する減算器、８２は時間をカウントするタイマ、８３はタイマ８２のタイムアウトの時間を指定するタイムアウト時間指定レジスタである。該タイムアウト時間指定レジスタ８３には、タイムアウト時間を任意に設定することができるようになっている。このように構成された装置の動作を説明すれば、以下の通りである。
【００６３】
再送用ＦＩＦＯ３６に送信要求を入力する際に、タイマ８２からの時刻情報を読み出してタイムスタンプを同時に入力するようにする。そして、減算器８１は、タイマ８２の値から、再送用ＦＩＦＯ３６の先頭のタイムスタンプの値を減算し、その結果を求める。
【００６４】
ここで、前記時刻差がタイムアウト時間指定レジスタ８３の値より大きくなれば、パケットの送信がうまくいかなかったものと判断し、ＤＭＡエンジン２０に対して再転送指示を出す。この指示を受けて、ＤＭＡエンジン２０は、再送用ＦＩＦＯ３６の送信要求を読み出して、パケットの再送を行なう。
【００６５】
この実施の形態例によれば、タイムアウトの検出と、再送処理の起動を容易に行なうことが可能となる。
【００６６】
このように、本発明によれば、Ｇｏ−ｂａｃｋ−ｎ　ＡＲＱ方式をメモリ上にリングバッファを構成し、複雑なポインタ制御を行なうことなしに、簡単なＦＩＦＯ制御でパケット転送を実現することができ、処理能力を向上させることができる。
【００６７】
（付記１）　メモリ上のパケットへのポインタを含んだ送信要求に従ってパケットをネットワークに転送するパケット送信装置において、
転送済みのパケットに対する送信要求を蓄積する再送用ＦＩＦＯを備え、
再送が必要な時にこの再送用ＦＩＦＯの送信要求を用いて再転送を行なう手段を設けることを特徴とするパケット再送制御装置。
【００６８】
（付記２）　前記再送用ＦＩＦＯにおいて、該再送用ＦＩＦＯからの送信要求の読み出しと同時に送信要求を再送用ＦＩＦＯに入力する回路
を設けることを特徴とする付記１記載のパケット再送制御装置。
【００６９】
（付記３）　前記送信要求を蓄積する送信要求ＦＩＦＯを備え、
送信要求ＦＩＦＯの読み出しを行なうと同時に、読み出した送信要求を再送用ＦＩＦＯに入力する手段
を設けることを特徴とする付記１又は２の何れかに記載のパケット再送制御装置。
【００７０】
（付記４）　前記送信要求の中に送信シーケンス番号を含んだ装置において、受信側からの受信確認シーケンス番号を格納するレジスタと、
このレジスタの値と再送用ＦＩＦＯの先頭の送信要求にあるシーケンス番号を比較する回路とを備え、
比較の結果、再送用ＦＩＦＯの先頭の送信要求シーケンス番号が受信確認シーケンス番号より小さいならば廃棄を繰り返す手段
を設けることを特徴とする付記１乃至３の何れかに記載のパケット再送制御装置。
【００７１】
（付記５）　送信ウィンドウサイズを設定するレジスタと、再送用ＦＩＦＯに送信要求の書き込みを行なうとカウントアップし、読み出しを行なうとカウントダウンするカウンタと、
カウンタの値で示される再送用ＦＩＦＯ内の送信要求数と送信ウィンドウサイズを比較する比較回路とを備え、
前記再送用ＦＩＦＯ内の送信要求が送信ウィンドウサイズレジスタの値よりも小さい場合にだけ送信要求の実行を許可する信号を出し、また再送用ＦＩＦＯ内の送信要求数が送信ウィンドウサイズと同じ場合に再送の開始指示を出す手段
を設けることを特徴とする付記１乃至３の何れかに記載のパケット再送制御装置。
【００７２】
（付記６）　前記再送用ＦＩＦＯからポインタが読まれる毎にカウントアップするカウンタを備え、
再転送の開始時にリセットしてからカウントアップを開始し、カウント値が送信ウィンドウサイズに達したら再転送の終了を指示する手段
を設けることを特徴とする付記２又は３の何れかに記載のパケット再送制御装置。
【００７３】
（付記７）　前記受信確認シーケンス番号の格納レジスタにおいて、格納する値がレジスタの元の値よりも大きい場合に限りレジスタの値を更新する手段を設けることを特徴とする付記４記載のパケット再送制御装置。
【００７４】
（付記８）　時間をカウントするタイマを備え、
前記再送用ＦＩＦＯに送信要求を投入した時刻を一緒に入れるようにしておき、再送用ＦＩＦＯの先頭データの時刻と現在時刻とを比較して、予め決めた時間以上の時に再送要求信号を出す手段
を設けることを特徴とする付記１乃至３の何れかに記載のパケット再送制御装置。
【００７５】
【発明の効果】
以上説明したように、本発明によれば、以下の効果が得られる。
（１）請求項１記載の発明によれば、ＣＰＵは再転送が必要な場合には、再送用ＦＩＦＯから送信要求を読み出すようにＤＭＡエンジンに指示することで、パケットデータの再転送が可能となり、メモリ上にリングバッファを設けるのに比較して送信要求の取り出しや再送制御が簡単になる。
（２）請求項２記載の発明によれば、再転送したパケットを更に再転送することができ、データ転送の信頼性を更に向上させることができる。
（３）請求項３記載の発明によれば、送信要求キューをＦＩＦＯで実現することにより、ＣＰＵの負担が減り、パケットデータの再転送が可能となり、メモリ上にリングバッファを設けるのに比較して送信要求の取り出しや再送制御が簡単になる。
（４）請求項４記載の発明によれば、受信確認済みの送信要求を自動的に再送用ＦＩＦＯから廃棄することが可能となる。
（５）請求項５記載の発明によれば、送信要求の実行と再送の実行とを切り分けてパケットの転送を確実に行なうことが可能となる。
【００７６】
このように、本発明によれば、パケットデータの再送制御を簡略化することができるパケット再送制御装置を提供することができる。
【図面の簡単な説明】
【図１】本発明の原理ブロック図である。
【図２】本発明の第１の実施の形態例を示すブロック図である。
【図３】本発明の第２の実施の形態例を示すブロック図である。
【図４】本発明の第３の実施の形態例を示すブロック図である。
【図５】本発明の第４の実施の形態例を示すブロック図である。
【図６】受信確認シーケンス番号蓄積装置の一実施の形態例を示すブロック図である。
【図７】本発明の第５の実施の形態例を示すブロック図である。
【図８】再送制御方式の概念図である。
【図９】Ｇｏ−ｂａｃｋ−ｎ　ＡＲＱ方式の説明図である。
【図１０】送信要求キューのＣＰＵ管理による再転送機構の説明図である。
【符号の説明】
１０　ＣＰＵ
１１　ＣＰＵバス
１２　Ｉ／Ｏバスブリッジ
１３　メモリバス
１４　メモリ
１５　Ｉ／Ｏバス
１６　ネットワークインターフェース
２０　ＤＭＡエンジン
３５　送信要求キュー
３６　再送用ＦＩＦＯ
【図１】
2004128786.tif 000003
【図２】
2004128786.tif 000004
【図３】
2004128786.tif 000005
【図４】
2004128786.tif 000006
【図５】
2004128786.tif 000007
【図６】
2004128786.tif 000008
【図７】
2004128786.tif 000009
【図８】
2004128786.tif 000010
【図９】
2004128786.tif 000011
【図１０】
2004128786.tif 000012