(57)【要約】      （修正有）【課題】共有受信バッファに溢れが発生した場合において、パケットの再送を効率的に行う。【解決手段】情報処理装置は、複数の送信元から受信したパケットを処理する。そして、複数の送信元から受信したパケットを格納するバッファと、バッファに、受信した第１のパケットを格納するための空き領域が無い場合、パケットの送信を停止することを要求する停止要求を第１のパケットの送信元に送信すると共に、第１のパケットを廃棄する第１処理部と、バッファに空き領域が生じた場合、第１のパケットの送信元に、第１のパケットを再送することを要求する再送要求を送信する第２処理部とを有する。【選択図】図２
2014236453.tif 000002
【特許請求の範囲】
【請求項１】
複数の送信元から受信したパケットを処理する情報処理装置において、
前記複数の送信元から受信したパケットを格納するバッファと、
前記バッファに、受信した第１のパケットを格納するための空き領域が無い場合、パケットの送信を停止することを要求する停止要求を前記第１のパケットの送信元に送信すると共に、前記第１のパケットを廃棄する第１処理部と、
前記バッファに空き領域が生じた場合、前記第１のパケットの送信元に、前記第１のパケットを再送することを要求する再送要求を送信する第２処理部と、
を有する情報処理装置。
【請求項２】
パケットの送信元を表す送信元情報と前記停止要求を送信したか否かを表すデータとを対応付けて格納する第１データ格納部
をさらに有し、
前記第１処理部は、
前記第１のパケットの送信元情報と前記停止要求を送信したことを表すデータとを対応付けて前記第１データ格納部に格納し、
前記第２処理部は、
前記バッファに空き領域が生じた場合、前記第１のパケットの送信元情報を前記第１データ格納部から読み出し、当該送信元情報が表す送信元に、前記再送要求を送信する
ことを特徴とする請求項１記載の情報処理装置。
【請求項３】
複数の送信装置と、前記複数の送信装置から受信したパケットを処理する受信装置とを含む情報処理システムにおいて、
前記受信装置は、
前記複数の送信装置から受信したパケットを格納するバッファと、
前記バッファに、受信した第１のパケットを格納するための空き領域が無い場合、パケットの送信を停止することを要求する停止要求を、前記複数の送信装置のうち前記第１のパケットを送信した送信装置に送信すると共に、前記第１のパケットを廃棄する第１処理部と、
前記バッファに空き領域が生じた場合、前記複数の送信装置のうち前記第１のパケットを送信した送信装置に、前記第１のパケットを再送することを要求する再送要求を送信する第２処理部と、
を有し、
前記複数の送信装置の各々は、
前記受信装置から前記停止要求を受信した場合、前記受信装置へのパケットの送信を停止し、前記受信装置から前記再送要求を受信した場合、前記第１のパケットを前記受信装置に送信する第３処理部と、
を有する情報処理システム。
【請求項４】
複数の送信装置と、前記複数の送信装置から受信したパケットを処理する受信装置とを含む情報処理システムの制御方法において、
前記受信装置は、前記複数の送信装置から受信したパケットを格納するバッファに、受信した第１のパケットを格納するための空き領域が無い場合、パケットの送信を停止することを要求する停止要求を、前記複数の送信装置のうち前記第１のパケットを送信した第１の送信装置に送信すると共に、前記第１のパケットを廃棄し、
前記第１の送信装置は、前記受信装置から前記停止要求を受信した場合、前記受信装置へのパケットの送信を停止し、
前記受信装置は、前記バッファに空き領域が生じた場合、前記第１の送信装置に、前記第１のパケットを再送することを要求する再送要求を送信し、
前記第１の送信装置は、前記受信装置から前記再送要求を受信した場合、前記第１のパケットを前記受信装置に送信する
ことを特徴とする情報処理システムの制御方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、情報処理装置、情報処理システム及び情報処理システムの制御方法に関する。
【背景技術】
【０００２】
例えばＩｎｆｉｎｉｂａｎｄにおけるＳＲＱ（Shared Receive Queue）等、複数のノード又はプロセス等から受信したパケットを格納するバッファ（以下、共有受信バッファと呼ぶ）が知られている。
【０００３】
図１に、共有受信バッファを用いたシステムの一例を示す。図１の例では、受信ノードが共有受信バッファ１０００を有している。受信ノードは、送信ノード＃１及び送信ノード＃２から受信したパケットを共有受信バッファ１０００に一旦格納する。そして、受信ノードは、共有受信バッファ１０００に格納されたパケットを順次処理する。
【０００４】
例えば送信ノード及び受信ノードの数がいずれも１であるようなシステムにおいては、パケットの送信元は、自身が送信したパケットの数及びサイズ等に基づきバッファに空き領域が有るか否かを推定できる。しかし、図１に示したようなシステムにおいては複数の送信元からのパケットが共有受信バッファに格納されるため、パケットの送信元は、共有受信バッファに空き領域が有るかわからない。そのため、共有受信バッファに空き領域が無いにも関わらず送信元がパケットを送信した結果、共有受信バッファに溢れが発生し、送信されたパケットが廃棄されるという事態が生じ得る。
【０００５】
従って、共有受信バッファを用いたシステムにおいては、共有受信バッファに溢れが発生した場合に備え、送信元のノード又はプロセス等がパケットを再送する仕組みを備えることが求められる。
【０００６】
送信装置と受信装置とを含むシステムにおけるパケットの再送に関して、以下のような技術が存在する。具体的には、受信装置は、パケットに記された順序番号と、欠落なくデータパケットが送達されたと仮定した場合における順序番号である受信期待順序番号とを送信装置に送信する。送信装置は、受信装置から受信した情報に基づき欠落パケットを特定すると共に、欠落パケットを再送する。
【０００７】
しかし、上記の技術においては、パケットが伝送路上のビット誤り或いは輻輳等により廃棄された場合に発生する欠落を想定しており、バッファ溢れによるパケットの廃棄に対して対処を行うことは想定されていない。バッファ溢れが発生した場合には、廃棄されたパケットをすぐに再送したとしてもバッファ溢れが解消していないことがあるため、パケットを再び廃棄することになる可能性がある。また、上記の技術における受信装置は、共有受信バッファに相当するようなバッファを備えていない。
【０００８】
従って、上記の従来技術は、共有受信バッファに溢れが発生した場合における再送には対処することができない。
【先行技術文献】
【特許文献】
【０００９】
【特許文献１】特開２００１−１６８９０７号公報
【発明の概要】
【発明が解決しようとする課題】
【００１０】
従って、本発明の目的は、１つの側面では、共有受信バッファに溢れが発生した場合において、パケットの再送を効率的に行うための技術を提供することである。
【課題を解決するための手段】
【００１１】
本発明に係る情報処理装置は、複数の送信元から受信したパケットを処理する情報処理装置である。そして、本情報処理装置は、複数の送信元から受信したパケットを格納するバッファと、バッファに、受信した第１のパケットを格納するための空き領域が無い場合、パケットの送信を停止することを要求する停止要求を第１のパケットの送信元に送信すると共に、第１のパケットを廃棄する第１処理部と、バッファに空き領域が生じた場合、第１のパケットの送信元に、第１のパケットを再送することを要求する再送要求を送信する第２処理部とを有する。
【発明の効果】
【００１２】
共有受信バッファに溢れが発生した場合において、パケットの再送を効率的に行えるようになる。
【図面の簡単な説明】
【００１３】
【図１】図１は、共有受信バッファを用いたシステムの一例を示す図である。
【図２】図２は、本実施の形態におけるシステムの概要を示す図である。
【図３】図３は、再送テーブルのデータ構造の一例を示す図である。
【図４】図４は、Ｔｙｐｅフィールドの値とパケットの種類との対応を示す図である。
【図５】図５は、停止要求の一例を示す図である。
【図６】図６は、再送要求の一例を示す図である。
【図７】図７は、通常のパケットの一例を示す図である。
【図８】図８は、ＡＣＫ及びＮＡＫの一例を示す図である。
【図９】図９は、パケットを送信するノードにおいて行われる処理の処理フローを示す図である。
【図１０】図１０は、パケットを受信するノードにおけるネットワークアダプタが行う処理の処理フローを示す図である。
【図１１】図１１は、パケットを受信するノードにおける受信プロセスによって行われる処理の処理フローを示す図である。
【図１２】図１２は、本実施の形態の処理シーケンスを示す図である。
【図１３】図１３は、本実施の形態の処理を具体的に説明するための図である。
【図１４】図１４は、本実施の形態の処理を具体的に説明するための図である。
【図１５】図１５は、本実施の形態の処理を具体的に説明するための図である。
【図１６】図１６は、本実施の形態の処理を具体的に説明するための図である。
【図１７】図１７は、本実施の形態の処理を具体的に説明するための図である。
【図１８】図１８は、本実施の形態の効果を具体的に説明するための図である。
【図１９】図１９は、本実施の形態の効果を具体的に説明するための図である。
【図２０】図２０は、本実施の形態の効果を具体的に説明するための図である。
【図２１】図２１は、コンピュータの機能ブロック図である。
【発明を実施するための形態】
【００１４】
図２に、本実施の形態のシステム概要を示す。例えばレイヤ２スイッチであるネットワークスイッチ３には、ノード１００と、ノード１１０と、ノード１２０とが接続されている。図２において、ノードの数は３であるが、数に限定は無い。
【００１５】
ノード１００は、ＣＰＵ（Central Processing Unit）１０１と、バッファ管理部１０３及び停止要求生成部１０４を含むネットワークアダプタ１０２と、１又は複数のプロセス用領域１０６を含むメインメモリ１０５とを有する。ネットワークアダプタ１０２は、ネットワークスイッチ３に接続されている。ＣＰＵ１０１は、ネットワークアダプタ１０２及びメインメモリ１０５に接続されている。プロセス用領域１０６は、プロセス毎に用意される領域である。従って、プロセスの数がＮ（Ｎは自然数）である場合にはプロセス用領域１０６の数もＮである。
【００１６】
バッファ管理部１０３は、プロセス用領域１０６におけるバッファ１０７及び再送テーブル１０８を管理する。停止要求生成部１０４は、バッファ管理部１０３の指示に従い、パケットを受信することができない旨を通知し且つパケットの送信を停止することを要求する停止要求（ＮＡＫ−ＲＮＲ（Non-AcKnowledgement-Receiver Not Ready））を生成する。プロセス用領域１０６は、ＣＰＵ１０１により実行されるプログラムのプロセスのためのメモリ領域である。バッファ１０７は共有受信バッファ（例えばＳＲＱ）である。再送テーブル１０８には、再送を管理するためのデータが格納される。処理部１０９は、バッファ１０７に格納されているパケットの処理及び再送要求を生成する処理等を実行する。
【００１７】
ノード１１０及びノード１２０の構成はノード１００の構成と同様であるので、説明を省略する。なお、ノード１００乃至１２０は、パケットの送信者及び受信者のいずれにもなり得る。
【００１８】
図３に、再送テーブルのデータ構造の一例を示す。図３の例では、再送テーブルには、ノードＩＤとプロセスＩＤとの組み合わせ毎に、停止要求の送信が有るか否かを示すフラグが格納される。停止要求の送信が無い（すなわち、パケットの再送をしない）場合には、フラグは「１」に設定される。停止要求の送信が有る場合（すなわち、パケットの再送をする）場合には、フラグは「０」に設定される。例えば、ノードの数がＮ（Ｎは自然数）であり、各ノードにおけるプロセスの最大値がＭ（Ｍは自然数）である場合には、Ｎ＊Ｍのフラグ格納領域が用意される。
【００１９】
図４に、ノード間で送受信されるパケットに含まれるＴｙｐｅフィールドの値とパケットの種類との対応を示す。本実施の形態においては、５種類のパケットが使用される。パケットにおけるＴｙｐｅフィールドの値が「０００」である場合は通常のパケットであり、Ｔｙｐｅフィールドの値が「００１」である場合はＡＣＫ（ACKnowledgement）であり、Ｔｙｐｅフィールドの値が「０１０」である場合はＮＡＫ（Non-AcKnowledgement、本実施の形態においてはＮＡＫ−ＲＮＲ以外のＮＡＫを指す）であり、Ｔｙｐｅフィールドの値が「０１１」である場合は停止要求（ＮＡＫ−ＲＮＲ）であり、Ｔｙｐｅフィールドの値が「１００」である場合は再送要求である。
【００２０】
図５に、停止要求の一例を示す。停止要求には、パケット長を示す情報（１０ビット）と、宛先バッファＩＤ（宛先プロセスＩＤであってもよい。９ビット）と、宛先ノードＩＤ（１２ビット）と、送信元バッファＩＤ（送信元プロセスＩＤであってもよい。８ビット）と、送信元ノードＩＤ（１２ビット）と、Ｔｙｐｅの値（３ビット）と、廃棄したパケットのシーケンス番号（１６ビット）とが含まれる。停止要求は、停止要求生成部１０４乃至１２４により、廃棄したパケットに含まれる情報に基づき生成される。
【００２１】
図６に、再送要求の一例を示す。再送要求には、パケット長を示す情報（１０ビット）と、宛先バッファＩＤ（宛先プロセスＩＤであってもよい。９ビット）と、宛先ノードＩＤ（１２ビット）と、送信元バッファＩＤ（送信元プロセスＩＤであってもよい。８ビット）と、送信元ノードＩＤ（１２ビット）と、Ｔｙｐｅの値（３ビット）とが含まれる。再送要求は、処理部１０９乃至１２９により、再送テーブル１０８乃至１２８に基づき生成される。
【００２２】
図７に、通常のパケットの一例を示す。通常のパケットには、パケット長を示す情報（１０ビット）と、宛先バッファＩＤ（宛先プロセスＩＤであってもよい。９ビット）と、宛先ノードＩＤ（１２ビット）と、送信元バッファＩＤ（送信元プロセスＩＤであってもよい。８ビット）と、送信元ノードＩＤ（１２ビット）と、Ｔｙｐｅの値（３ビット）と、シーケンス番号（１６ビット）と、ペイロード（可変長）とが含まれる。
【００２３】
図８に、ＡＣＫ及びＮＡＫの一例を示す。通常のパケットには、パケット長を示す情報（１０ビット）と、宛先バッファＩＤ（宛先プロセスＩＤであってもよい。９ビット）と、宛先ノードＩＤ（１２ビット）と、送信元バッファＩＤ（送信元プロセスＩＤであってもよい。８ビット）と、送信元ノードＩＤ（１２ビット）と、Ｔｙｐｅの値（３ビット）と、最後に受信したパケットのシーケンス番号（１６ビット）と、ペイロード（可変長）とが含まれる。
【００２４】
次に、図９を用いて、パケットを送信するノードにおいて行われる処理について説明する。説明を簡単にするため、パケットを送信するノードはノード１００であるとする。
【００２５】
まず、ノード１００のプロセス用領域１０６における処理部１０９は、パケットを生成し、パケットを処理するプロセス（以下、受信プロセスと呼ぶ）に送信する（図９：ステップＳ１）。なお、生成されるパケットは、例えば図７に示したようなパケットである。
【００２６】
処理部１０９は、受信プロセスから完了通知を受信するまで待機する（ステップＳ３）。そして、処理部１０９は、受信プロセスから完了通知を受信する（ステップＳ５）。なお、受信した完了通知は、バッファ管理部１０３によってバッファ１０７に格納される。本実施の形態における完了通知は、ＡＣＫ、ＮＡＫ又はＮＡＫ−ＲＮＲ（すなわち、停止要求）のいずれかである。
【００２７】
処理部１０９は、完了通知がＡＣＫであるか判断する（ステップＳ７）。完了通知はＡＣＫである場合（ステップＳ７：Ｙｅｓルート）、パケットを再送しなくてもよいので、処理を終了する。
【００２８】
完了通知がＡＣＫではない場合（ステップＳ７：Ｎｏルート）、処理部１０９は、完了通知はＮＡＫ−ＲＮＲであるか判断する（ステップＳ９）。
【００２９】
完了通知がＮＡＫ−ＲＮＲではない場合（ステップＳ９：Ｎｏルート）、完了通知はＮＡＫ−ＲＮＲ以外のＮＡＫでありすぐに再送できるため、ステップＳ１５の処理に移行する。
【００３０】
完了通知がＮＡＫ−ＲＮＲである場合（ステップＳ９：Ｙｅｓルート）、処理部１０９は、受信プロセスから再送要求を受信するまで待機する（ステップＳ１１）。そして、処理部１０９は、受信プロセスから再送要求を受信する（ステップＳ１３）。なお、受信したＮＡＫ−ＲＮＲはバッファ管理部１０３によってバッファ１０７に格納される。
【００３１】
処理部１０９は、ステップＳ１において送信したパケットを受信プロセスに再度送信する（ステップＳ１５）。そして処理を終了する。
【００３２】
以上のように、ＮＡＫ−ＲＮＲ（すなわち、停止要求）を受信した場合にはすぐには再送をせず、再送要求を受信した後に再送をする。これにより、再送されたパケットが共有受信バッファの溢れにより再び廃棄されることを防げるようになる。
【００３３】
一方、ＮＡＫ−ＲＮＲ以外のＮＡＫを受信した場合には、すぐにパケットを再送しても問題は無いので、すぐにパケットを再送する。すなわち、タイムアウトを待ってから再送を行うわけではない。これにより、再送までの時間を短縮できるようになる。
【００３４】
次に、図１０を用いて、パケットを受信するノードにおけるネットワークアダプタが行う処理について説明する。説明を簡単にするため、パケットを受信するノードはノード１１０であるとする。
【００３５】
まず、ノード１１０のネットワークアダプタ１１２におけるバッファ管理部１１３は、パケットを送信するプロセス（以下、送信プロセスと呼ぶ）からパケットを受信するまで待機する（図１０：ステップＳ２１）。
【００３６】
バッファ管理部１１３は、送信プロセスからパケットを受信する（ステップＳ２３）。そして、バッファ管理部１１３は、受信したパケットをバッファ１１７に書き込み可能である（すなわち、バッファ１１７に空き領域が有る）か判断する（ステップＳ２５）。
【００３７】
受信したパケットをバッファ１１７に書き込み可能である場合（ステップＳ２５：Ｙｅｓルート）、バッファ管理部１１３は、受信したパケットをバッファ１１７に書き込み（ステップＳ２７）、ステップＳ２１の処理に戻る。
【００３８】
一方、受信したパケットをバッファ１１７に書き込み可能ではない場合（ステップＳ２５：Ｎｏルート）、バッファ管理部１１３は、停止要求生成部１１４に、パケットの送信を停止することを要求するＮＡＫ−ＲＮＲ（すなわち、停止要求）を生成させる。そして、バッファ管理部１１３は、停止要求生成部１１４により生成されたＮＡＫ−ＲＮＲを、受信したパケットの送信元の送信プロセスに送信する（ステップＳ２９）。
【００３９】
バッファ管理部１１３は、再送テーブル１１８を更新する（ステップＳ３１）。具体的には、バッファ管理部１１３は、送信プロセスのノードのＩＤと送信プロセスのＩＤとの組み合わせに対応するフラグを「０」に設定する。そして、バッファ管理部１１３は、受信したパケットを廃棄する（ステップＳ３３）。
【００４０】
バッファ管理部１１３は、処理を終了するか判断する（ステップＳ３５）。処理を終了する場合（ステップＳ３５：Ｙｅｓルート）、処理を終了する。例えば、ノード１１０の電源オフをノード１１０の操作者により指示された場合には、処理を終了する。
【００４１】
一方、処理を終了しない場合（ステップＳ３５：Ｎｏルート）、次のパケットについて処理するため、ステップＳ２１の処理に戻る。
【００４２】
以上のように停止要求を送信すれば、バッファに空き領域が無いにも関わらずパケットが再送されるのを抑制できるので、無駄な再送パケットを減らすことができる。
【００４３】
次に、図１１を用いて、パケットを受信するノードにおける受信プロセス（ここでは、処理部１２９）によって行われる処理について説明する。
【００４４】
まず、処理部１２９は、バッファ１２７におけるパケットを処理する（図１１：ステップＳ４１）。ステップＳ４１においては、（１）バッファ１２７に格納されている全パケットを処理してもよいし、（２）予め定められた数のパケットを処理してもよいし、（３）バッファ１２７に格納されているパケットの数が予め定められた数になるまで処理してもよい。
【００４５】
処理部１２９は、再送テーブル１２８において、フラグが「０」であるノードＩＤ及びプロセスＩＤの組合せが有るか判断する（ステップＳ４３）。フラグが「０」であるノードＩＤ及びプロセスＩＤの組合せが無い場合（ステップＳ４３：Ｎｏルート）、パケットの再送をしなくてもよいので、処理を終了する。
【００４６】
一方、フラグが「０」であるノードＩＤ及びプロセスＩＤの組合せが有る場合（ステップＳ４３：Ｙｅｓルート）、処理部１２９は、そのプロセスＩＤが表す送信プロセスに、パケットを再送することを要求する再送要求を送信する（ステップＳ４５）。
【００４７】
処理部１２９は、再送テーブル１２８において、ステップＳ４３において特定された組合せに対応するフラグを「０」から「１」に変更する（ステップＳ４７）。そしてステップＳ４３の処理に戻る。
【００４８】
なお、パケットを受信するノードが、パケットを送信する可能性がある送信プロセスに対し、マルチキャストによって停止要求を送信するという方法も考えられる。しかし、マルチキャストにコストがかかる場合（例えば、ハードウェアによるマルチキャストを行うことができないためハードウェアによる複数回のユニキャストによりマルチキャストと同等の送信を行う場合）があるため、このような方法が適切ではない場合もある。
【００４９】
これに対し、本実施の形態においては、実際にパケットを送信した送信プロセスに対してのみ停止要求及び再送要求を送信するので、マルチキャストによって停止要求及び再送要求を送信する場合と比較して、無駄な要求を減らせるようになる。
【００５０】
また、空き領域が生じた場合に再送要求を送信するので、タイムアウトを待ってから再送をする場合と比較して、迅速に再送を行えるようになる。
【００５１】
図１２に、本実施の形態の処理シーケンスを示す。図１２には、パケットを送信する送信プロセス、パケットを受信するノードにおけるネットワークアダプタ（以下、受信側ネットワークアダプタと呼ぶ）、及び受信パケットを処理する受信プロセスの処理が示されている。
【００５２】
まず、送信プロセスが、パケットを受信するノードに対してパケットを送信する。受信側ネットワークアダプタは、送信プロセスからのパケットを受信する。受信側ネットワークアダプタは、受信プロセス用領域に設けられたバッファに受信パケットを格納することを試みるが、受信パケットをバッファに格納するとバッファ溢れが発生することを検出する。
【００５３】
そこで、受信側ネットワークアダプタは、送信プロセスに対し停止要求を送信すると共に、受信パケットを廃棄する。また、受信側ネットワークアダプタは、メインメモリにおける受信プロセス用領域に設けられた再送テーブルを更新する。具体的には、送信プロセスのノードのＩＤと送信プロセスのＩＤとの組み合わせに対応するフラグを「０」に設定する。
【００５４】
受信プロセスは、受信プロセス用領域に設けられたバッファに格納されているパケットを処理する。例えば、ＦＩＦＯ（First In First Out）によりパケットを処理する。処理によってバッファに空き領域が生じた場合には、受信プロセスは、再送要求を生成し、受信側ネットワークアダプタに出力する。受信側ネットワークアダプタは、受け取った再送要求を送信プロセスに送信する。
【００５５】
送信プロセスは、受信側ネットワークアダプタから再送要求を受信する。送信プロセスは、停止要求を受信する直前に送信したパケット（すなわち、受信側ネットワークアダプタが廃棄したパケット）を、受信側ネットワークアダプタに送信する。受信側ネットワークアダプタは、再送されたパケットを、受信プロセス用領域におけるバッファに書き込む。
【００５６】
以上のような処理を実行すれば、共有受信バッファに空き領域が無いにも関わらずパケットが再送されることを防げるので、無駄な再送パケットを減らすことができる。すなわち、共有受信バッファの溢れが生じた場合において、効率的にパケットの再送を行えるようになる。
【００５７】
次に、図１３乃至図１７を用いて、本実施の形態の処理をより具体的に説明する。図１３乃至図１７には、パケットの送信、バッファ溢れの検出、停止要求の送信、再送要求の送信及びパケットの再送という一連の処理が示されている。
【００５８】
図１３を用いて、ノード１１０における処理部１１９がパケットＰ１を送信した場合における処理を説明する。ノード１１０のプロセス用領域１１６におけるパケットＰ１は、バッファ管理部１１３を介してネットワークに送信される。パケットＰ１は、ネットワークスイッチ３によってノード１００に転送される。ノード１００におけるバッファ管理部１０３は、パケットＰ１を受信すると、バッファ１０７に空き領域が有るか判断し、空き領域が有る場合にはパケットＰ１をバッファ１０７に格納する。バッファ１０７に格納されたパケットＰ１は、処理部１０９によって処理される。
【００５９】
図１４を用いて、ノード１２０における処理部１２９がパケットＰ２を送信した場合における処理を説明する。ノード１２０のプロセス用領域１２６におけるパケットＰ２は、ネットワークアダプタ１２２を介してネットワークに送信される。パケットＰ２は、ネットワークスイッチ３によってノード１００に転送される。ノード１００におけるバッファ管理部１０３は、パケットＰ２を受信すると、バッファ１０７に空き領域が有るか判断する。ここでは、バッファ１０７に空き領域が無い（すなわち、バッファ溢れが発生した）と判断される。そのため、パケットＰ２はバッファ１０７には格納されず、バッファ管理部１０３によって廃棄される。
【００６０】
図１５を用いて、停止要求がノード１００からノード１２０に送信された場合における処理を説明する。停止要求生成部１０４によって生成された停止要求Ｓは、バッファ管理部１０３によってネットワークに送信される。停止要求Ｓは、ネットワークスイッチ３によってノード１２０に転送される。ノード１２０におけるバッファ管理部１２３は、停止要求Ｓを受信すると、バッファ１２７に格納する。停止要求Ｓを受信したため、処理部１２９は、停止要求において指定されている送信プロセスに対してパケットを送信することを停止する。
【００６１】
図１６を用いて、再送要求がノード１００からノード１２０に送信された場合における処理を説明する。処理部１０９によって生成された再送要求Ｒは、バッファ管理部１０３によってネットワークに送信される。再送要求Ｒは、ネットワークスイッチ３によってノード１２０に転送される。ノード１２０におけるバッファ管理部１２３は、再送要求Ｒを受信すると、バッファ１２７に格納する。
【００６２】
図１７を用いて、ノード１２０における処理部１２９がパケットＰ２を再送した場合における処理を説明する。ノード１２０のプロセス用領域１２６におけるパケットＰ２は、ネットワークアダプタ１２２を介してネットワークに再送される。パケットＰ２は、ネットワークスイッチ３によってノード１００に転送される。ノード１００におけるバッファ管理部１０３は、パケットＰ２を受信すると、バッファ１０７に空き領域が有るか判断する。ここでは、バッファ１０７に空き領域が有ると判断される。そのため、パケットＰ２はバッファ１０７には格納され、処理部１０９によって処理される。
【００６３】
次に、図１８乃至図２０を用いて、本実施の形態の効果を具体的に説明する。
【００６４】
図１８に、説明に利用するシステムを示す。図１８に示したシステムにおいては、１キロ（ｋ）台の送信ノードと、１台の受信ノードとがネットワークスイッチに接続されている。各送信ノードには３２の送信プロセスがあるため、本システムには合計で３２ｋの送信プロセスが受信プロセスに対してパケットを送信する。受信プロセスにより使用されるバッファには、４ｋのパケットを格納できる。
【００６５】
ここで、３２ｋの送信プロセス（以下、送信プロセス群と呼ぶ）の各々が、受信プロセスに対して１つのパケットを同時に送信し、送信されたパケットを受信プロセスが処理する場合を考える。前提として、以下では、バッファに格納されたパケットは、次に送信プロセス群が送信するパケットがバッファに格納されるまでに処理される（すなわち、バッファは空になる）とする。
【００６６】
図１８に示したシステムにおいて本実施の形態の処理を実行しない場合、図１９に示すような結果になる。図１９には、送信プロセス群からの送信パケット数と、受信プロセスから送信プロセス群に送信されるＡＣＫの数と、受信プロセスから送信プロセス群に送信されるＮＡＫの数とが時系列で示されている。時刻ｔ０は初期の時刻であり、時刻ｔ１５は処理が完了する時刻である。
【００６７】
図１９に示すように、送信プロセス群からの送信パケットは２単位時間毎に受信プロセスに送信され、その数は４ｋずつ減っている。これは、受信プロセスによって４ｋずつパケットが処理されるからである。時刻ｔ０から時刻ｔ１５までの間に送信されるパケットの合計は１４４ｋである。
【００６８】
受信プロセスからのＡＣＫは、２単位時間毎に送信プロセス群に送信され、その数は４ｋである。時刻ｔ０から時刻ｔ１５までの間に送信されるＡＣＫの合計は３２ｋである。
【００６９】
受信プロセスからのＮＡＫの数は、直前に送信プロセス群から送信されたパケットの数から、２単位時間毎に処理されるパケットの数である４ｋを引いた数である。時刻ｔ０から時刻ｔ１５までの間に送信されるＮＡＫの合計は１１２ｋである。
【００７０】
よって、ネットワークにおいて転送されるパケットの数の合計は１４４ｋ＋３２ｋ＋１１２ｋ＝２８８ｋである。
【００７１】
一方、図１８に示したシステムにおいて本実施の形態の処理を実行する場合、図２０に示すような結果になる。図２０には、送信プロセス群からの送信パケット数と、受信プロセスから送信プロセス群に送信されるＡＣＫの数と、受信プロセスから送信プロセス群に送信される停止要求の数と、受信プロセスから送信プロセス群に送信される再送要求の数とが時系列で示されている。時刻ｔ０は初期の時刻であり、時刻ｔ１５は処理が完了する時刻である。
【００７２】
図２０に示すように、送信プロセス群からの送信パケットは２単位時間毎に受信プロセスに送信される。その数は、時刻ｔ０においては３２ｋであるが、ｔ０以外の時刻においては４ｋである。時刻ｔ０から時刻ｔ１５までの間に送信されるパケットの合計は６０ｋである。
【００７３】
受信プロセスからのＡＣＫは、２単位時間毎に送信プロセス群に送信され、その数は４ｋである。時刻ｔ０から時刻ｔ１５までの間に送信されるＡＣＫの合計は３２ｋである。
【００７４】
受信プロセスからの停止要求は、時刻ｔ１において２８ｋ送信されるが、それ以降は送信されることはない。時刻ｔ０から時刻ｔ１５までの間に送信される停止要求の合計は２８ｋである。
【００７５】
受信プロセスからの再送要求は、２単位時間毎に送信プロセス群に送信され、その数は４ｋである。時刻ｔ０から時刻ｔ１５までの間に送信される再送要求の合計は２８ｋである。よって、ネットワークにおいて転送されるパケットの数の合計は６０ｋ＋３２ｋ＋２８ｋ＋２８ｋ＝１４８ｋである。
【００７６】
バッファに格納できるパケットの数のｍ倍のプロセスと通信する場合、パケットの数の削減率は、（ｍ２−４ｍ＋３）／（ｍ２＋ｍ）＊１００（単位は％）で求めることができる。上の例の場合、ｍ＝８であるから、パケットの数の削減率は３５／７２＊１００≒４９（％）になる。
【００７７】
また、図２０を図１９と比較すると、処理の完了までに要するステップ数は同じであるが、本実施の形態の処理はタイムアウトを待ってから処理を行うわけではないため、１ステップに要する時間が短い。従って、処理の完了までに要する時間は、図１９の場合より短い。
【００７８】
以上本発明の一実施の形態を説明したが、本発明はこれに限定されるものではない。例えば、上で説明したノード１００乃至１２０の機能ブロック構成は実際のプログラムモジュール構成に一致しない場合もある。
【００７９】
また、上で説明した各テーブルの構成は一例であって、上記のような構成でなければならないわけではない。さらに、処理フローにおいても、処理結果が変わらなければ処理の順番を入れ替えることも可能である。さらに、並列に実行させるようにしても良い。
【００８０】
なお、上で述べたノード１００乃至１２０は、コンピュータ装置であって、図２１に示すように、メモリ２５０１とＣＰＵ（Central Processing Unit）２５０３とハードディスク・ドライブ（ＨＤＤ：Hard Disk Drive）２５０５と表示装置２５０９に接続される表示制御部２５０７とリムーバブル・ディスク２５１１用のドライブ装置２５１３と入力装置２５１５とネットワークに接続するための通信制御部２５１７とがバス２５１９で接続されている。オペレーティング・システム（ＯＳ：Operating System）及び本実施例における処理を実施するためのアプリケーション・プログラムは、ＨＤＤ２５０５に格納されており、ＣＰＵ２５０３により実行される際にはＨＤＤ２５０５からメモリ２５０１に読み出される。ＣＰＵ２５０３は、アプリケーション・プログラムの処理内容に応じて表示制御部２５０７、通信制御部２５１７、ドライブ装置２５１３を制御して、所定の動作を行わせる。また、処理途中のデータについては、主としてメモリ２５０１に格納されるが、ＨＤＤ２５０５に格納されるようにしてもよい。本発明の実施例では、上で述べた処理を実施するためのアプリケーション・プログラムはコンピュータ読み取り可能なリムーバブル・ディスク２５１１に格納されて頒布され、ドライブ装置２５１３からＨＤＤ２５０５にインストールされる。インターネットなどのネットワーク及び通信制御部２５１７を経由して、ＨＤＤ２５０５にインストールされる場合もある。このようなコンピュータ装置は、上で述べたＣＰＵ２５０３、メモリ２５０１などのハードウェアとＯＳ及びアプリケーション・プログラムなどのプログラムとが有機的に協働することにより、上で述べたような各種機能を実現する。
【００８１】
以上述べた本発明の実施の形態をまとめると、以下のようになる。
【００８２】
本実施の形態に係る情報処理装置は、複数の送信元から受信したパケットを処理する情報処理装置である。そして、本情報処理装置は、（Ａ）複数の送信元から受信したパケットを格納するバッファと、（Ｂ）バッファに、受信した第１のパケットを格納するための空き領域が無い場合、パケットの送信を停止することを要求する停止要求を第１のパケットの送信元に送信すると共に、第１のパケットを廃棄する第１処理部と、（Ｃ）バッファに空き領域が生じた場合、第１のパケットの送信元に、第１のパケットを再送することを要求する再送要求を送信する第２処理部とを有する。
【００８３】
このようにすれば、バッファ（例えば共有受信バッファ）に空き領域が無いにも関わらずパケットが再送されるのを抑制できるので、無駄な再送パケットを減らすことができる。すなわち、バッファに溢れが発生した場合にパケットの再送を効率的に行えるようになる。また、実際にパケットを送信した送信元に対してのみ停止要求及び再送要求を送信するので、マルチキャストによって停止要求及び再送要求を送信する場合と比較して、無駄な要求を減らすことができるようになる。さらに、空き領域が生じた場合に再送要求を送信するので、タイムアウトを待ってから再送をする場合と比較して、迅速に再送を行えるようになる。
【００８４】
また、本情報処理装置が、（Ｄ）パケットの送信元を表す送信元情報と停止要求を送信したか否かを表すデータとを対応付けて格納する第１データ格納部をさらに有してもよい。そして、上で述べた第１処理部は、（ｂ１）第１のパケットの送信元情報と停止要求を送信したことを表すデータとを対応付けて第１データ格納部に格納し、上で述べた第２処理部は、（ｃ１）バッファに空き領域が生じた場合、第１のパケットの送信元情報を第１データ格納部から読み出し、当該送信元情報が表す送信元に、再送要求を送信してもよい。上で述べたように送信元情報を保存しておけば、廃棄されたパケットを漏れなく再取得できるようになる。また、複数の送信元が存在するような場合にも対処できるようになる。
【００８５】
また、上で述べた送信元情報は、ノードの識別情報とプロセスの識別情報とを含んでもよい。このようにすれば、１つのノードにおいて複数のプロセスが実行されており、複数のプロセスの各々がパケットを送信するような場合にも対処できるようになる。
【００８６】
なお、上記方法による処理をコンピュータに行わせるためのプログラムを作成することができ、当該プログラムは、例えばフレキシブルディスク、ＣＤ−ＲＯＭ、光磁気ディスク、半導体メモリ、ハードディスク等のコンピュータ読み取り可能な記憶媒体又は記憶装置に格納される。尚、中間的な処理結果はメインメモリ等の記憶装置に一時保管される。
【００８７】
以上の実施例を含む実施形態に関し、さらに以下の付記を開示する。
【００８８】
（付記１）
複数の送信元から受信したパケットを処理する情報処理装置において、
前記複数の送信元から受信したパケットを格納するバッファと、
前記バッファに、受信した第１のパケットを格納するための空き領域が無い場合、パケットの送信を停止することを要求する停止要求を前記第１のパケットの送信元に送信すると共に、前記第１のパケットを廃棄する第１処理部と、
前記バッファに空き領域が生じた場合、前記第１のパケットの送信元に、前記第１のパケットを再送することを要求する再送要求を送信する第２処理部と、
を有する情報処理装置。
【００８９】
（付記２）
パケットの送信元を表す送信元情報と前記停止要求を送信したか否かを表すデータとを対応付けて格納する第１データ格納部
をさらに有し、
前記第１処理部は、
前記第１のパケットの送信元情報と前記停止要求を送信したことを表すデータとを対応付けて前記第１データ格納部に格納し、
前記第２処理部は、
前記バッファに空き領域が生じた場合、前記第１のパケットの送信元情報を前記第１データ格納部から読み出し、当該送信元情報が表す送信元に、前記再送要求を送信する
ことを特徴とする付記１記載の情報処理装置。
【００９０】
（付記３）
前記送信元情報は、ノードの識別情報とプロセスの識別情報とを含む
ことを特徴とする付記２記載の情報処理装置。
【００９１】
（付記４）
複数の送信装置と、前記複数の送信装置から受信したパケットを処理する受信装置とを含む情報処理システムにおいて、
前記受信装置は、
前記複数の送信装置から受信したパケットを格納するバッファと、
前記バッファに、受信した第１のパケットを格納するための空き領域が無い場合、パケットの送信を停止することを要求する停止要求を、前記複数の送信装置のうち前記第１のパケットを送信した送信装置に送信すると共に、前記第１のパケットを廃棄する第１処理部と、
前記バッファに空き領域が生じた場合、前記複数の送信装置のうち前記第１のパケットを送信した送信装置に、前記第１のパケットを再送することを要求する再送要求を送信する第２処理部と、
を有し、
前記複数の送信装置の各々は、
前記受信装置から前記停止要求を受信した場合、前記受信装置へのパケットの送信を停止し、前記受信装置から前記再送要求を受信した場合、前記第１のパケットを前記受信装置に送信する第３処理部と、
を有する情報処理システム。
【００９２】
（付記５）
複数の送信装置と、前記複数の送信装置から受信したパケットを処理する受信装置とを含む情報処理システムの制御方法において、
前記受信装置は、前記複数の送信装置から受信したパケットを格納するバッファに、受信した第１のパケットを格納するための空き領域が無い場合、パケットの送信を停止することを要求する停止要求を、前記複数の送信装置のうち前記第１のパケットを送信した第１の送信装置に送信すると共に、前記第１のパケットを廃棄し、
前記第１の送信装置は、前記受信装置から前記停止要求を受信した場合、前記受信装置へのパケットの送信を停止し、
前記受信装置は、前記バッファに空き領域が生じた場合、前記第１の送信装置に、前記第１のパケットを再送することを要求する再送要求を送信し、
前記第１の送信装置は、前記受信装置から前記再送要求を受信した場合、前記第１のパケットを前記受信装置に送信する
ことを特徴とする情報処理システムの制御方法。
【符号の説明】
【００９３】
１００，１１０，１２０  ノード    １０１，１１１，１２１  ＣＰＵ
１０２，１１２，１２２  ネットワークアダプタ    １０３，１１３，１２３  バッファ管理部
１０４，１１４，１２４  停止要求生成部    １０５，１１５，１２５  メインメモリ
１０６，１１６，１２６  プロセス用領域    １０７，１１７，１２７  バッファ
１０８，１１８，１２８  再送テーブル    １０９，１１９，１２９  処理部
３  ネットワークスイッチ
【図１】
2014236453.tif 000003
【図２】
2014236453.tif 000004
【図３】
2014236453.tif 000005
【図４】
2014236453.tif 000006
【図５】
2014236453.tif 000007
【図６】
2014236453.tif 000008
【図７】
2014236453.tif 000009
【図８】
2014236453.tif 000010
【図９】
2014236453.tif 000011
【図１０】
2014236453.tif 000012
【図１１】
2014236453.tif 000013
【図１２】
2014236453.tif 000014
【図１３】
2014236453.tif 000015
【図１４】
2014236453.tif 000016
【図１５】
2014236453.tif 000017
【図１６】
2014236453.tif 000018
【図１７】
2014236453.tif 000019
【図１８】
2014236453.tif 000020
【図１９】
2014236453.tif 000021
【図２０】
2014236453.tif 000022
【図２１】
2014236453.tif 000023