(57)【要約】【課題】再送応答の判断を遅らせることで、パケットの再送回数を減少させることが可能な通信装置を提供する。【解決手段】所定区切りの一連のパケットがネットワークを介して送信端末から順序番号が付与されて送信されたパケットを受信する受信端末において、パケットを受信するパケット受信部と、パケット受信部が受信したパケットの受信順からネットワークの経路の分岐数を推定して計算する推定部と、受信順及び分岐数から経路の途中で欠落したパケットを判定する欠落判定部と、パケット受信部が受信したパケットを保持するパケット保持部と、パケット保持部に保持されているパケット及び欠落判定部で欠落と判定されたパケットの順序番号とから、欠落したパケットの再送を送信端末へ要求する応答部と、を備えることを特徴とする、通信装置が提供される。【選択図】図２
2011182234.tif 000002
【特許請求の範囲】
【請求項１】
所定区切りの一連のパケットがネットワークを介して送信端末から順序番号が付与されて送信されたパケットを受信する受信端末において、
パケットを受信するパケット受信部と、
前記パケット受信部が受信したパケットの受信順から前記ネットワークの経路の分岐数を推定して計算する推定部と、
前記受信順及び前記分岐数から前記経路の途中で欠落したパケットを判定する欠落判定部と、
前記パケット受信部が受信したパケットを保持するパケット保持部と、
前記パケット保持部に保持されているパケット及び前記欠落判定部で欠落と判定されたパケットの順序番号とから、欠落したパケットの再送を前記送信端末へ要求する応答部と、
を備えることを特徴とする、通信装置。
【請求項２】
前記推定部は、前記順序番号ｎ番（ｎは０以上の整数）までのパケットを前記パケット受信部が全て受信した後、順序番号ｎ＋１番より大きいｍ番（ｍは２以上の整数）のパケットを前記パケット受信部が受信した場合に、その後順序番号ｎ＋１番からｍ番までの全てのパケットを前記パケット受信部が受信するまでの間に前記パケット受信部が受信した最大の順序番号のパケットと順序番号ｎ＋１番のパケットとの間に入る全ての受信パケットについて、前記受信パケットを前記パケット受信部が受信した順に並べた列で順序番号が降順に並ぶ個数が最大となるように選んだ列における、順序番号が降順に並ぶ個数を前記経路の分岐数と推定することを特徴とする、請求項１に記載の通信装置。
【請求項３】
前記欠落判定部は、前記順序番号ｎ番（ｎは０以上の整数）までのパケットを前記パケット受信部が全て受信した後、順序番号ｎ＋１番より大きいｍ番（ｍは２以上の整数）のパケットを前記パケット受信部が受信した場合に、その後順序番号ｎ＋１番からｍ番までの全てのパケットを前記パケット受信部が受信するまでの間に前記パケット受信部が受信した最大の順序番号のパケットと順序番号ｎ＋１番のパケットとの間に入る全ての受信パケットについて、前記受信パケットを前記パケット受信部が受信した順に並べた列で順序番号が降順に並ぶ個数が、前記推定部が推定した前記経路の分岐数以上になるものがあれば、順序番号ｎ＋１番のパケットから、前記受信パケットのうち順序番号ｎ＋１番より大きいものの中で最小の順序番号の１つ手前までのパケットが欠落していると判定することを特徴とする、請求項１または２に記載の通信装置。
【請求項４】
前記応答部は、前記順序番号ｎ番（ｎは０以上の整数）までのパケットを前記パケット受信部が全て受信した後、前記パケット受信部がパケットを受信しても順序番号ｎ＋１番のパケットが前記パケット保持部に存在しない場合、順序番号ｎ＋１番のパケットの欠落を前記欠落判定部が判定するまでパケットの再送の要求を控えることを特徴とする、請求項１〜３のいずれかに記載の通信装置。
【請求項５】
所定区切りの一連のパケットがネットワークを介して送信端末から複数の送信インタフェースによって順序番号及びインタフェース識別子が付与されて送信されたパケットを受信する受信端末において、
パケットを受信するパケット受信部と、
前記パケット受信部が受信したパケットの受信順及び前記インタフェース識別子から前記ネットワークの経路の分岐数を推定して計算する推定部と、
前記受信順、前記インタフェース識別子及び前記分岐数から前記経路の途中で欠落したパケットを判定する欠落判定部と、
前記パケット受信部が受信したパケットを保持するパケット保持部と、
前記パケット保持部に保持されているパケット及び前記欠落判定部で欠落と判定されたパケットの順序番号とから、欠落したパケットの再送を要求する応答部と、
を備えることを特徴とする、通信装置。
【請求項６】
前記推定部は、前記順序番号ｎ番（ｎは０以上の整数）までのパケットを前記パケット受信部が全て受信した後、順序番号ｎ＋１番より大きいｍ番（ｍは２以上の整数）のパケットを前記パケット受信部が受信した場合に、その後順序番号ｎ＋１番からｍ番までの全てのパケットを前記パケット受信部が受信するまでの間に前記パケット受信部が受信した最大の順序番号のパケットと順序番号ｎ＋１番のパケットとの間に入る全ての受信パケットについて、前記受信パケットからある送信インタフェースからの受信パケットを抽出して前記パケット受信部が受信した順に並べた列で順序番号が降順に並ぶ個数が最大となるように選んだ列における、順序番号が降順に並ぶ個数を該送信インタフェースにおける前記経路の分岐数と推定することを特徴とする、請求項５に記載の通信装置。
【請求項７】
前記欠落判定部は、前記順序番号ｎ番（ｎは０以上の整数）までのパケットを前記パケット受信部が全て受信した後、順序番号ｎ＋１番より大きいｍ番（ｍは２以上の整数）のパケットを前記パケット受信部が受信した場合に、その後順序番号ｎ＋１番からｍ番までの全てのパケットを前記パケット受信部が受信するまでの間に前記パケット受信部が受信した最大の順序番号のパケットと順序番号ｎ＋１番のパケットとの間に入る全ての受信パケットについて、前記受信パケットからある送信インタフェースからの受信パケットを抽出して前記パケット受信部が受信した順に並べた列で順序番号が降順に並ぶ個数が、前記推定部が推定した前記経路の分岐数以上になるものが全ての送信インタフェースについて成立すれば、順序番号ｎ＋１番から、前記受信パケットのうち順序番号ｎ＋１番より大きいものの中で最小の順序番号の１つ手前までのパケットが欠落していると判定することを特徴とする、請求項５または６に記載の通信装置。
【請求項８】
前記応答部は、前記順序番号ｎ番（ｎは０以上の整数）までのパケットを前記パケット受信部が全て受信した後、前記パケット受信部がパケットを受信しても順序番号ｎ＋１番のパケットが前記パケット保持部に存在しない場合、順序番号ｎ＋１番のパケットの欠落を前記欠落判定部が判定するまでパケットの再送の要求を控えることを特徴とする、請求項５〜７のいずれかに記載の通信装置。
【請求項９】
所定区切りの一連のパケットがネットワークを介して送信端末から順序番号が付与されて送信されたパケットを受信するパケット受信ステップと、
前記パケット受信ステップで受信したパケットの受信順から前記ネットワークの経路の分岐数を推定して計算する推定ステップと、
前記受信順及び前記分岐数から前記経路の途中で欠落したパケットを判定する欠落判定ステップと、
前記パケット受信ステップで受信したパケットを保持するパケット保持ステップと、
前記パケット保持ステップで保持されているパケット及び前記欠落判定ステップで欠落と判定されたパケットの順序番号とから、欠落したパケットの再送を前記送信端末へ要求する応答ステップと、
を備えることを特徴とする、通信制御方法。
【請求項１０】
所定区切りの一連のパケットがネットワークを介して送信端末から複数の送信インタフェースによって順序番号及びインタフェース識別子が付与されて送信されたパケットを受信するパケット受信ステップと、
前記パケット受信ステップで受信したパケットの受信順及び前記インタフェース識別子から前記ネットワークの経路の分岐数を推定して計算する推定ステップと、
前記受信順、前記インタフェース識別子及び前記分岐数から前記経路の途中で欠落したパケットを判定する欠落判定ステップと、
前記パケット受信ステップで受信したパケットを保持するパケット保持ステップと、
前記パケット保持ステップで保持されているパケット及び前記欠落判定ステップで欠落と判定されたパケットの順序番号とから、欠落したパケットの再送を要求する応答ステップと、
を備えることを特徴とする、通信制御方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、通信装置及び通信制御方法に関する。
【背景技術】
【０００２】
データを小分けされたパケットに変換して伝送するパケット通信においては、通常マルチパス伝送方式が採用されている。マルチパス伝送方式においては、送信元からのパケットの送信順と、受信元でのパケットの受信順とを一致させるための技術が開発されている。
【０００３】
例えば、下記の非特許文献１には、パケットベースでマルチパスにルーティングする一連のパケットフローを、複数のパスに振り分けるルータが、そのノードでのパケットの到着間隔によって振り分けるパスを決定する技術が開示されており、これにより受信ノードでのパケットの到着順序が送信ノードのパケット送信順序と同一になるようにしている。
【０００４】
また例えば、下記の特許文献１には、１セッションを複数のパスを使って送信するマルチパス環境で、受信バッファの先頭にあるパケット番号からパケットロスを素早く検出する技術が開示されており、ロスしているパケットの再送を要求することで、受信ノードでのパケットの到着順序が送信ノードのパケット送信順序と同一にすることができる。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】特開２００９−５５４１９号公報
【非特許文献】
【０００６】
【非特許文献１】“Ｄｙｎａｍｉｃ  Ｌｏａｄ  Ｂａｌａｎｃｉｎｇ  Ｗｉｔｈｏｕｔ  Ｐａｃｋｅｔ  Ｒｅｏｒｄｅｒｉｎｇ”，ＡＣＭ  ＳＩＧＣＯＭＭ  Ｃｏｍｐｕｔｅｒ  Ｃｏｍｍｕｎｉｃａｔｉｏｎ  Ｒｅｖｉｅｗ，Ｊｕｎｅ  ２００７
【発明の概要】
【発明が解決しようとする課題】
【０００７】
しかし、非特許文献１に記載された技術のように送信側でパケットの送信を制御しても、宛先で順序通りにパケットが受信出来るとは限らない。ネットワークのリソースの使用状態は時々刻々と変化するので、送信時に想定していたパケット到着までの遅延時間が正しいとは限らないからである。またネットワークによっては経路の途中で経路が分岐したり、分岐した経路が再び合流等したりすることで順序が入れ替わってしまう場合もあり得る。この場合に、送信側で到着順序の保証を制御することは困難である。
【０００８】
例えば、１パケット受信するごとにパケットを送信し、欠落していると判断されるパケットの再送を要求する制御下で、例えば１０番までのパケットを受信し、その後に図７に示したような順番で、パケットを受信側で受信した場合を考える。この場合に、経路途中での順序の逆転を想定していなければ、受信側に１３番のパケットが到着した時点で、受信側で１１番及び１２番のパケットは欠落していると判断され、１１番及び１２番のパケットの再送が受信側から要求される。
【０００９】
また、同様の制御下で、２０番までのパケットを受信し、その後に図１８に示したような順番で、パケットを受信側で受信した場合を考える。この場合も、経路途中での順序の逆転を想定していなければ、受信側に２７番のパケットが到着した時点で２１番から２６番のパケットが欠落していると判断され、２１番から２６番のパケットの再送が受信側から要求される。
【００１０】
このように、マルチパス伝送方式によってパケットが送信される場合に、ある１つの経路で、さらに経路が分岐することでパケットの順序が入れ替わる場合には、受信端末が持つ複数の受信バッファの先頭にあるパケットからだけではパケットロスの判断が早すぎてしまい、実際にはロスしていないパケットまでも再送の対象となってしまう。
【００１１】
例えば、２０番までのパケットを受信し、その後に図１８に示したような順番で、パケットを受信側で受信した場合を考える。そして、例えば特許文献１において述べられている状況、すなわち送信端末のＩＦ（インタフェース）１、２から送られたパケットが受信端末のＩＦ３、４で受信されるとする。この場合に、ＩＦ３で２７番のパケットを、ＩＦ４で２６番のパケットを受信バッファにて受け取ったとすると、特許文献２で開示された技術を用いると、受信バッファの先頭にあるパケットから、パケットがロスしているかどうかを判断するので、２１番から２５番のパケットが欠落していると判断され、２１番から２５番のパケットの再送が受信端末から要求される。
【００１２】
このように、従来は実際にはロスしていないパケットまでも再送の対象となることでパケットの再送回数が増大し、ネットワーク上に無駄なトラフィックが流れてしまうという問題があった。
【００１３】
そこで、本発明は、上記問題に鑑みてなされたものであり、本発明の目的とするところは、送信側で順序番号を付与された送信パケットに対して、受信側で到着したパケットの並びから経路の分岐数を推定し、受信側で順序番号通りパケットが届いていない場合であっても推定した分岐数から順序逆転が起こっていることを判断して再送応答の判断を遅らせることで、パケットの再送回数を減少させることが可能な、新規かつ改良された通信装置及び通信制御方法を提供することにある。
【課題を解決するための手段】
【００１４】
上記課題を解決するために、本発明のある観点によれば、所定区切りの一連のパケットがネットワークを介して送信端末から順序番号が付与されて送信されたパケットを受信する受信端末において、パケットを受信するパケット受信部と、前記パケット受信部が受信したパケットの受信順から前記ネットワークの経路の分岐数を推定して計算する推定部と、前記受信順及び前記分岐数から前記経路の途中で欠落したパケットを判定する欠落判定部と、前記パケット受信部が受信したパケットを保持するパケット保持部と、前記パケット保持部に保持されているパケット及び前記欠落判定部で欠落と判定されたパケットの順序番号とから、欠落したパケットの再送を前記送信端末へ要求する応答部と、を備えることを特徴とする、通信装置が提供される。
【００１５】
前記推定部は、前記順序番号ｎ番（ｎは０以上の整数）までのパケットを前記パケット受信部が全て受信した後、順序番号ｎ＋１番より大きいｍ番（ｍは２以上の整数）のパケットを前記パケット受信部が受信した場合に、その後順序番号ｎ＋１番からｍ番までの全てのパケットを前記パケット受信部が受信するまでの間に前記パケット受信部が受信した最大の順序番号のパケットと順序番号ｎ＋１番のパケットとの間に入る全ての受信パケットについて、前記受信パケットを前記パケット受信部が受信した順に並べた列で順序番号が降順に並ぶ個数が最大となるように選んだ列における、順序番号が降順に並ぶ個数を前記経路の分岐数と推定してもよい。
【００１６】
前記欠落判定部は、前記順序番号ｎ番（ｎは０以上の整数）までのパケットを前記パケット受信部が全て受信した後、順序番号ｎ＋１番より大きいｍ番（ｍは２以上の整数）のパケットを前記パケット受信部が受信した場合に、その後順序番号ｎ＋１番からｍ番までの全てのパケットを前記パケット受信部が受信するまでの間に前記パケット受信部が受信した最大の順序番号のパケットと順序番号ｎ＋１番のパケットとの間に入る全ての受信パケットについて、前記受信パケットを前記パケット受信部が受信した順に並べた列で順序番号が降順に並ぶ個数が、前記推定部が推定した前記経路の分岐数以上になるものがあれば、順序番号ｎ＋１番から、前記受信パケットのうち順序番号ｎ＋１番より大きいものの中で最小の順序番号の１つ手前までのパケットが欠落していると判定してもよい。
【００１７】
前記応答部は、前記順序番号ｎ番（ｎは０以上の整数）までのパケットを前記パケット受信部が全て受信した後、前記パケット受信部がパケットを受信しても順序番号ｎ＋１番のパケットが前記パケット保持部に存在しない場合、順序番号ｎ＋１番のパケットの欠落を前記欠落判定部が判定するまでパケットの再送の要求を控えてもよい。
【００１８】
また、上記課題を解決するために、本発明の別の観点によれば、所定区切りの一連のパケットがネットワークを介して、送信端末から複数の送信インタフェースによって順序番号及びインタフェース識別子が付与されて送信されたパケットを受信する受信端末において、パケットを受信するパケット受信部と、前記パケット受信部が受信したパケットの受信順及び前記インタフェース識別子から前記ネットワークの経路の分岐数を推定して計算する推定部と、前記受信順、前記インタフェース識別子及び前記分岐数から前記経路の途中で欠落したパケットを判定する欠落判定部と、前記パケット受信部が受信したパケットを保持するパケット保持部と、前記パケット保持部に保持されているパケット及び前記欠落判定部で欠落と判定されたパケットの順序番号とから、欠落したパケットの再送を要求する応答部と、を備えることを特徴とする、通信装置が提供される。
【００１９】
前記推定部は、前記順序番号ｎ番（ｎは０以上の整数）までのパケットを前記パケット受信部が全て受信した後、順序番号ｎ＋１番より大きいｍ番（ｍは２以上の整数）のパケットを前記パケット受信部が受信した場合に、その後順序番号ｎ＋１番からｍ番までの全てのパケットを前記パケット受信部が受信するまでの間に前記パケット受信部が受信した最大の順序番号のパケットと順序番号ｎ＋１番のパケットとの間に入る全ての受信パケットについて、前記受信パケットからある送信インタフェースからの受信パケットを抽出して前記パケット受信部が受信した順に並べた列で順序番号が降順に並ぶ個数が最大となるように選んだ列における、順序番号が降順に並ぶ個数を該送信インタフェースにおける前記経路の分岐数と推定してもよい。
【００２０】
前記欠落判定部は、前記順序番号ｎ番（ｎは０以上の整数）までのパケットを前記パケット受信部が全て受信した後、順序番号ｎ＋１番より大きいｍ番（ｍは２以上の整数）のパケットを前記パケット受信部が受信した場合に、その後順序番号ｎ＋１番からｍ番までの全てのパケットを前記パケット受信部が受信するまでの間に前記パケット受信部が受信した最大の順序番号のパケットと順序番号ｎ＋１番のパケットとの間に入る全ての受信パケットについて、前記受信パケットからある送信インタフェースからの受信パケットを抽出して前記パケット受信部が受信した順に並べた列で順序番号が降順に並ぶ個数が、前記推定部が推定した前記経路の分岐数以上になるものが全ての送信インタフェースについて成立すれば、順序番号ｎ＋１番から、前記受信パケットのうち順序番号ｎ＋１番より大きいものの中で最小の順序番号の１つ手前までのパケットが欠落していると判定してもよい。
【００２１】
前記応答部は、前記順序番号ｎ番（ｎは０以上の整数）までのパケットを前記パケット受信部が全て受信した後、前記パケット受信部がパケットを受信しても順序番号ｎ＋１番のパケットが前記パケット保持部に存在しない場合、順序番号ｎ＋１番のパケットの欠落を前記欠落判定部が判定するまでパケットの再送の要求を控えるようにしてもよい。
【００２２】
また、上記課題を解決するために、本発明の別の観点によれば、所定区切りの一連のパケットがネットワークを介して送信端末から順序番号が付与されて送信されたパケットを受信するパケット受信ステップと、前記パケット受信ステップで受信したパケットの受信順から前記ネットワークの経路の分岐数を推定して計算する推定ステップと、前記受信順及び前記分岐数から前記経路の途中で欠落したパケットを判定する欠落判定ステップと、前記パケット受信ステップで受信したパケットを保持するパケット保持ステップと、前記パケット保持ステップで保持されているパケット及び前記欠落判定ステップで欠落と判定されたパケットの順序番号とから、欠落したパケットの再送を前記送信端末へ要求する応答ステップと、を備えることを特徴とする、通信制御方法が提供される。
【００２３】
また、上記課題を解決するために、本発明の別の観点によれば、所定区切りの一連のパケットがネットワークを介して送信端末から複数の送信インタフェースによって順序番号及びインタフェース識別子が付与されて送信されたパケットを受信するパケット受信ステップと、前記パケット受信ステップで受信したパケットの受信順及び前記インタフェース識別子から前記ネットワークの経路の分岐数を推定して計算する推定ステップと、前記受信順、前記インタフェース識別子及び前記分岐数から前記経路の途中で欠落したパケットを判定する欠落判定ステップと、前記パケット受信ステップで受信したパケットを保持するパケット保持ステップと、前記パケット保持ステップで保持されているパケット及び前記欠落判定ステップで欠落と判定されたパケットの順序番号とから、欠落したパケットの再送を要求する応答ステップと、を備えることを特徴とする、通信制御方法が提供される。
【発明の効果】
【００２４】
以上説明したように本発明によれば、送信側で順序番号を付与された送信パケットに対して、受信側で到着したパケットの並びから経路の分岐数を推定し、受信側で順序番号通りパケットが届いていない場合であっても推定した分岐数から順序逆転が起こっていることを判断して再送応答の判断を遅らせることで、パケットの再送回数を減少させることが可能な、新規かつ改良された通信装置及び通信制御方法を提供することができる。
【図面の簡単な説明】
【００２５】
【図１】本発明の第１の実施形態に係る通信システムの概略構成を示す説明図である。
【図２】本発明の第１の実施形態にかかる受信端末１００Ｂの構成を示す説明図である。
【図３】本発明の第１の実施形態にかかる推定部１３０の動作を示す流れ図である。
【図４】本発明の第１の実施形態にかかる欠落判定部１４０の動作を示す流れ図である。
【図５】本発明の第１の実施形態にかかるバッファ１５０の動作を示す流れ図である。
【図６】本発明の第１の実施形態にかかる応答部１７０の動作を示す流れ図である。
【図７】受信端末１００Ｂが受信するパケット列の一例を示す説明図である。
【図８】受信端末１００Ｂが受信するパケット列の一例を示す説明図である。
【図９】受信端末１００Ｂが受信するパケット列の一例を示す説明図である。
【図１０】ネットワーク１０における経路の一例を示す説明図である。
【図１１】本発明の第２の実施形態に係る通信システムの概略構成を示す説明図である。
【図１２】本発明の第２の実施形態にかかる受信端末２００Ｂの構成を示す説明図である。
【図１３】本発明の第２の実施形態にかかる推定部２３０の動作を示す流れ図である。
【図１４】本発明の第２の実施形態にかかる欠落判定部２４０の動作を示す流れ図である。
【図１５】本発明の第２の実施形態にかかるバッファ２５０の動作を示す流れ図である。
【図１６】本発明の第２の実施形態にかかる応答部２７０の動作を示す流れ図である。
【図１７】受信端末２００Ｂが受信するパケット列の一例を示す説明図である。
【図１８】受信端末２００Ｂが受信するパケット列の一例を示す説明図である。
【図１９】ネットワーク１０における経路の一例を示す説明図である。
【発明を実施するための形態】
【００２６】
以下に添付図面を参照しながら、本発明の好適な実施の形態について詳細に説明する。なお、本明細書及び図面において、実質的に同一の機能構成を有する構成要素については、同一の符号を付することにより重複説明を省略する。
【００２７】
＜１．第１の実施形態＞
［１−１．通信システムの構成］
まず、図１を参照して、本発明の第１の実施形態に係る通信システムの概略構成について説明する。図１に示したように、本発明の第１の実施形態に係る通信システム１は、送信端末１００Ａから受信端末１００Ｂに対して、ネットワーク１０を介して、順序番号を付与したパケットの形式で送信したいデータを送信する。本実施形態においては、パケットを再送する場合を除き、原則として順序番号の昇順でパケットを送信する。
【００２８】
一方、受信端末１００Ｂは、本発明の通信装置の一例であり、送信端末１００Ａから送信されるパケットを受信すると、順序番号の最初から初めて抜けなく受信した一連のパケットの内の最大の番号や、欠落しているパケットの番号を応答パケットとして送信端末１００Ａへ送信する。この応答パケットを送信端末１００Ａが受信することで、送信端末１００Ａは次に送信するパケットの順序番号を制御する。このような通信制御は、ＴＣＰ（Ｔｒａｎｓｍｉｓｓｉｏｎ  Ｃｏｎｔｒｏｌ  Ｐｒｏｔｏｃｏｌ）等の通信方式に見られるものである。本実施形態は、このような制御下における主に応答パケットの制御に関わるものである。
【００２９】
パケットが流れるネットワーク１０の内部では、経路途中のルータ（図示せず）等がパケットを複数の経路に振り分けることで、経路が分岐され得る。図１に示した分岐はその状態を表したものである。送信端末１００Ａ、受信端末１００Ｂは、ネットワーク１０の中のパケットが通る経路や分岐の数については把握していない。なお、以下の説明では、ネットワーク１０は複数の経路に分岐されているものとして説明するが、本発明は、送信端末１００Ａと受信端末１００Ｂとの間に分岐が全く無い場合であっても同様に適用できるものである。
【００３０】
以上、図１を参照して、本発明の第１の実施形態に係る通信システムの概略構成について説明した。次に、本発明の第１の実施形態にかかる受信端末１００Ｂの構成について説明する。
【００３１】
［１−２．受信端末の構成］
図２は、本発明の第１の実施形態にかかる受信端末１００Ｂの構成を示す説明図である。以下、図２を用いて本発明の第１の実施形態にかかる受信端末１００Ｂの構成について説明する。
【００３２】
図２に示したように、本発明の第１の実施形態にかかる受信端末１００Ｂは、パケット受信部１２０と、推定部１３０と、欠落判定部１４０と、バッファ１５０と、データ受信部１６０と、応答部１７０と、情報部１８０と、を含んで構成される。
【００３３】
パケット受信部１２０は、送信端末１００Ａから送信されてくる、順序番号が付与されたパケットを受信するものであり、パケット受信部１２０は受信したパケットを送信されてきた順序通りにバッファ１５０に渡す。
【００３４】
推定部１３０は、情報部１８０が保持している経路の分岐数の推定値と、データ受信部１６０が受信した最後尾のパケットの順序番号とを取得し、この順序番号と、分岐数の推定値と、パケット受信部１２０が受信したパケットの並びとから、送信経路途中での分岐数を推定するものである。推定部１３０が推定した分岐数の推定値は情報部１８０に送られる。
【００３５】
本実施形態では、送信経路途中での分岐数は以下のように推定する。
【００３６】
パケット受信部１２０で受信しているパケットは、送信端末１００Ａが受信端末１００Ｂに対して順序番号の昇順に送信したパケットとする。これは、受信端末１００Ｂからの応答パケットによって既に送信端末１００Ａが送信した順序番号の小さいパケットを、再度送っていない状態である。このことは、受信端末１００Ｂにおいても、自身の送信する応答パケットによって判断する。
【００３７】
推定部１３０は、情報部１８０から分岐数の推定値ｋを取得するとともに、データ受信部１６０が受信した最後尾のパケットの順序番号を取得する。データ受信部１６０は、順序番号がｎ番目（ｎ＝０，１，２，・・・）までのパケットを全て受け取っているとすると、ｎ＝０の場合は、データ受信部１６０は未だパケットを受け取っていない。その後、順序番号がｎ番目より大きいｍ番目のパケットをパケット受信部１２０が受信したとする。ｍ−ｎ≦ｋの場合は、推定部１３０は、ｋを分岐数の推定値とする。一方、ｍ−ｎ＞ｋである場合、推定部１３０は、先のｍ番目のパケットを含め、以降受信するｎ番目よりも順序番号が大きいパケットから選んだパケットを、パケット受信部１２０が受信した順に並べる。そして推定部１３０は、このパケット列について、順序番号が降順に並ぶ個数を数え上げる。ただし順序番号は連続していなくても良い。またパケットが１つの場合にはその個数を１とする。例えば、順序番号が１３、１１と並んでいれば、順序番号が降順に並ぶ個数は２であり、順序番号が１３しかない場合には、順序番号が降順に並ぶ個数は１となる。
【００３８】
ｍ−ｎ＞ｋである場合、推定部１３０は、この個数が最大となるようにパケット列を選び、この列の順序番号が降順に並ぶ個数を分岐数の推定値とする。これは、通常であれば順序番号の昇順でパケットが到着するが、ネットワーク１０で分岐があることで、パケットの到達順序が逆になることがある。従って、本実施形態では順序番号が降順の並ぶ個数を分岐の数と推定する。
【００３９】
数え上げる対象とするパケットは、順序番号がｎ＋１番目からｍ番目までの全てのパケットをパケット受信部１２０が受信するまでの間に、パケット受信部１２０が受信した順序番号が最大の番号と、ｎ＋１番目のとの間に入る全てのパケットである（順序番号がｎ＋１番目のパケットも含まれる）。例えば、ｎ＝１０、ｍ＝１３の場合に、図７に示したような順序で受信端末１００Ｂがパケットを受信したとする。この場合は、パケット受信部１２０が、ｎ＋１＝１１番からｍ＝１３番までの全てのパケット、すなわち１１番と１２番のパケットを受信するまでに受信したパケットの最大の番号は１６番である。このときに、１１番から１６番の間に入る全てのパケット、すなわち１１、１２、１３、１４、１５、１６番が数え上げの対象となる。そして、順序番号が降順に並ぶ個数の最大値は、１６、１５、１２または１６、１５、１４の場合の「３」となる。
【００４０】
図７に示したようにパケットが受信端末１００Ｂに到達した場合、例えば図１０に示したような経路で送信端末１００Ａから受信端末１００Ｂに転送される。この場合の分岐数の推定値は「３」である。
【００４１】
欠落判定部１４０は、パケット受信部１２０で受信したパケットの並びと、情報部１８０が保持している、データ受信部１６０が受信した最後尾の順序番号と、情報部１８０が保持している、分岐数の推定値ｋとから、パケットが未到着なのか、経路途中で欠落しているのかを判定するものである。欠落判定部１４０は、パケットが欠落していると判定すると、応答部１７０に対して欠落しているパケットの順序番号を通知する。
【００４２】
欠落判定部１４０によるパケットの欠落判定方法について以下で説明する。
【００４３】
情報部１８０が保持している、データ受信部１６０が受信した最後尾の順序番号がｎ番目（ｎ＝０，１，２，・・・）であったとする。次に欠落判定部１４０は、パケット受信部１２０で、順序番号がｎ＋１番目より大きいｍ番目のパケットを受信した場合に、そのパケットを含め、以降受信するｎ＋１番目よりも順序番号が大きいパケットから選んだパケットを、パケット受信部１２０が受信した順に並べる。そして、このパケット列について、順序番号が降順に並ぶ個数を数える。ただし、順序番号は連続していなくても良い。この個数がｋ個以上になるパケット列があれば、欠落判定部１４０は、ｎ＋１番目から、これまで受信したｎ＋１番目より大きい番号の中で最小の順序番号の１つ手前までのパケットが欠落していると判定する。
【００４４】
バッファ１５０は、パケット受信部１２０からパケットを受け取るものであり、バッファ１５０が受け取ったパケットは、順序番号の昇順に、重複無くデータ受信部１６０へ送られる。また、データ受信部１６０に送られた順序番号の最後尾の番号はバッファ１５０から情報部１８０に送られる。パケット受信部１２０から受け取ったパケットがバッファ１５０に存在しているパケットと重複したり、既にデータ受信部１６０に送ったパケットと同じものであったりした場合には、そのパケットはバッファ１５０から破棄される。
【００４５】
データ受信部１６０は、バッファ１５０から渡されたパケットを受信するものである。
【００４６】
応答部１７０は、送信端末１００Ａがパケットを送る数や番号を制御するための応答パケットを生成して送信するものである。応答パケットの送信を行うために、応答部１７０は情報部１８０から、データ受信部１６０が受信した最後尾の順序番号ｎを取得する。また応答部１７０は、欠落判定部１４０から欠落しているパケットの情報も取得する。
【００４７】
応答部１７０が生成する応答パケットの内容は、（１）どの順序番号のパケットまで正しい順序で受け取ったかを知らせるものであってもよく、（２）特定の順序番号のパケットの再送を要求するものであってもよい。いずれの内容のパケットであっても、応答パケットを受信した送信端末１００Ａは、どのパケットが受信端末１００Ｂに送られていないのかが分かり、送信端末１００Ａは受信端末１００Ｂに届けるべきパケットを再送することが出来る。
【００４８】
なお、受信端末１００Ｂからの応答パケットは、送信端末１００Ａと受信端末１００Ｂとの間で予め定められた制御のタイミングで、上記（１）または（２）の少なくともいずれかの内容が記述されて、受信端末１００Ｂから送信端末１００Ａへ送信される。
【００４９】
応答部１７０は、応答パケットを送るタイミングになった場合に、バッファ１５０にパケットが無いときは、予め定められた上記（１）または（２）の少なくともいずれかの内容で応答パケットを送信する。一方、応答部１７０は、応答パケットを送るタイミングになった場合に、バッファ１５０にパケットがあるとき、すなわち順序番号どおりにパケットが届いておらず、抜けている順序番号のパケットがあるのでバッファ１５０にパケットがあるときは、上記（１）または（２）の内容を送信する場合であっても、欠落判定部１４０から欠落している順序番号を受け取るまで応答パケットの送信を控える。ただし、（２）の場合には、その抜けているパケットが無いものとして、すなわちその抜けているパケットの再送を要求しない内容で、応答部１７０は応答パケットを送信しても良い。その後、欠落判定部１４０からパケット欠落の通知があれば、応答部１７０はそのパケットの欠落を送信端末１００Ａに通知する。
【００５０】
情報部１８０は、推定部１３０が推定した経路の分岐数の推定値と、バッファ１５０がデータ受信部１６０に送ったパケットのうち最後尾の順序番号とを保存する。情報部１８０が保存する、経路の分岐数の推定値の初期値は１である。また、最後尾の順序番号は、この番号以前の順序番号のパケットを、データ受信部１６０が全て受信していることを保証するものである。
【００５１】
以上、図２を用いて本発明の第１の実施形態にかかる受信端末１００Ｂの構成について説明した。次に、本発明の第１の実施形態にかかる受信端末１００Ｂの動作について説明する。
【００５２】
［１−３．受信端末の動作］
上述したように、パケット受信部１２０は、送信端末１００Ａから送信された、順序番号が付与されたパケットを受信し、送られてきた順序通りにバッファ１５０に受信したパケットを渡す。
【００５３】
図３は、本発明の第１の実施形態にかかる受信端末１００Ｂに含まれる推定部１３０の動作について示す流れ図である。以下、図３を用いて推定部１３０の動作について詳細に説明する。
【００５４】
前提として、パケット受信部１２０で受信しているパケットは、送信端末１００Ａが受信端末１００Ｂに対して順序番号の昇順に送信したパケットであるとする。推定部１３０は、情報部１８０から、分岐数の推定値ｋを取得するとともに、データ受信部１６０が受信した最後尾のパケットの順序番号ｎを取得する（ステップＳ３０１）。
【００５５】
続いて、推定部１３０は、パケット受信部１２０が新たに受信したパケットの順序番号ｍを取得する（ステップＳ３０２）。推定部１３０は、ｍ−ｎ≦ｋとなるかどうかを判定し（ステップＳ３０３）、ｍ−ｎ≦ｋであれば後段のステップＳ３０８へ進むが、ｋ＜ｍ−ｎであれば、推定部１３０は、パケット受信部１２０が順序番号ｍのパケットの次に受信したパケットの順序番号を取得する（ステップＳ３０４）。
【００５６】
続いて、推定部１３０は、順序番号ｍのパケットを含め、これまで取得した、順序番号ｎよりも順序番号が大きいパケットから選んだパケットを、パケット受信部１２０が受信した順に整列し、このパケット列について、順序番号が降順に並ぶ個数ｄを計数する（ステップＳ３０５）。数え上げの対象とするパケットは、順序番号がｎ＋１番目からｍ番目までの全てのパケットをパケット受信部１２０が受信するまでの間に、パケット受信部１２０が受信した順序番号が最大のパケットと、順序番号がｎ＋１番のパケットとの間に入る全てのパケットである。推定部１３０は、この個数が最大となるように選んだパケット列について、順序番号が降順に並ぶ個数ｄを分岐数の推定値の候補とする。
【００５７】
推定部１３０は、上記ステップＳ３０５で数え上げた、順序番号が降順に並ぶ個数が最大となるように選んだパケット列について、順序番号が降順に並ぶ個数ｄを分岐数の推定値ｋの候補とする（ステップＳ３０６）。そして推定部１３０は、順序番号がｎ＋１番目からｍ番目までの全てのパケットをパケット受信部１２０が受信するまでの間に、パケット受信部１２０が受信した順序番号が最大のパケットと、順序番号がｎ＋１番のパケットとの間に入る全てのパケットを受信したかどうかを判断する（ステップＳ３０７）。全てのパケットを受信していれば、推定部１３０は上記ステップＳ３０６で候補とした分岐数の推定値ｋを情報部１８０に保存する（ステップＳ３０８）。一方、まだ全てのパケットを受信していなければ、上記ステップＳ３０４に戻って、推定部１３０は、さらに次に受信したパケットの順序番号を取得する処理を実行する。
【００５８】
このように、推定部１３０はネットワーク１０における分岐数を推定することができる。受信端末１００Ｂは、この推定部１３０が推定した分岐数を用いて、パケットが欠落しているかどうかの判定を行うことができる。
【００５９】
以上、図３を用いて推定部１３０の動作について詳細に説明した。次に、本発明の第１の実施形態にかかる受信端末１００Ｂに含まれる欠落判定部１４０の動作について説明する。
【００６０】
図４は、本発明の第１の実施形態にかかる受信端末１００Ｂに含まれる欠落判定部１４０の動作を示す流れ図である。以下、図４を用いて欠落判定部１４０の動作について詳細に説明する。
【００６１】
まず、欠落判定部１４０はパケットの欠落判定処理に際し、情報部１８０から、分岐数の推定値ｋと、データ受信部１６０が受信した最後尾のパケットの順序番号ｎとを取得する（ステップＳ４０１）。次に、欠落判定部１４０はパケット受信部１２０が新たに受信したパケットの順序番号ｍを受け取り（ステップＳ４０２）、ｎ＋１＜ｍとなっているかどうかを判定する（ステップＳ４０３）。
【００６２】
上記ステップＳ４０３の判定の結果、ｎ＋１≧ｍである場合には、欠落判定部１４０は、受信パケットに欠落は発生していないと判断し、処理を終了する。一方、上記ステップＳ４０３の判定の結果、ｎ＋１＜ｍである場合には、続いて欠落判定部１４０はｋ＝１であるかどうかを判定する（ステップＳ４０４）。
【００６３】
上記ステップＳ４０４の判定の結果、情報部１８０が保持している分岐数ｋの値がｋ＝１である場合には、受信パケットに欠落が発生していると判断し、欠落判定部１４０は応答部１７０へパケットの欠落を通知する（ステップＳ４０５）。このステップＳ４０５では、欠落判定部１４０は、ｎ＋１番目から、これまで受信したｎ＋１番より大きい番号の中で最小の順序番号の一つ手前までの順序番号のパケットが欠落していると判定し、応答部１７０へパケットの欠落を通知する。
【００６４】
一方、上記ステップＳ４０４の判定の結果、情報部１８０が保持している分岐数ｋの値がｋ＝１でない場合には、次に、欠落判定部１４０はパケット受信部１２０が次に受信したパケットの順序番号を取得する（ステップＳ４０６）。
【００６５】
上記ステップＳ４０６でパケット受信部１２０が次に受信したパケットの順序番号を取得すると、続いて欠落判定部１４０は、上記ステップＳ４０６で取得した順序番号がｎ＋１であるかどうかを判定する（ステップＳ４０７）。
【００６６】
上記ステップＳ４０７の判定の結果、上記ステップＳ４０６で取得した順序番号がｎ＋１であるならば、欠落判定部１４０は処理を終了する。一方、上記ステップＳ４０７の判定の結果、上記ステップＳ４０６で取得した順序番号がｎ＋１で無いならば、続いて欠落判定部１４０は、順序番号ｍのパケットを含め、これまでパケット受信部１２０から受け取ったｎ＋１より大きい順序番号から選んだ順序番号を、パケット受信部１２０が受信した順に並べた列を対象に、ある番号から始めて順序番号が降順に並ぶ個数ｄを数え上げる（ステップＳ４０８）。
【００６７】
そして欠落判定部１４０は、上記ステップＳ４０８で数え上げた個数ｄについて、ｋ≦ｄを満たす列が存在するかどうかを判定する（ステップＳ４０９）。ｋ≦ｄを満たす列が１つでも存在すれば、受信パケットに欠落が発生していると判断し、欠落判定部１４０は応答部１７０へパケットの欠落を通知する（ステップＳ４０５）。一方、どの列のｄについてもｄ＜ｋであるならば、上記ステップＳ４０６に戻り、欠落判定部１４０はパケット受信部１２０が次に受信したパケットの順序番号を取得する。
【００６８】
以上、図４を用いて欠落判定部１４０の動作について詳細に説明した。次に、本発明の第１の実施形態にかかる受信端末１００Ｂに含まれるバッファ１５０の動作について説明する。
【００６９】
図５は、本発明の第１の実施形態にかかる受信端末１００Ｂに含まれるバッファ１５０の動作を説明する流れ図である。以下、図５を用いてバッファ１５０の動作について説明する。
【００７０】
まず、バッファ１５０はパケット受信部１２０からパケットを受け取ると（ステップＳ５０１）、受信したパケットに付与されている順序番号の小さい順に、受け取ったパケットをデータ受信部１６０へ渡す（ステップＳ５０２）。バッファ１５０は、欠落している順序番号のパケットがあれば、そのパケットがパケット受信部１２０から送られて来るまで待機する。また、既にデータ受信部１６０へ渡したものと重複しているパケットがあれば、バッファ１５０はそのパケットを破棄する。
【００７１】
そして、バッファ１５０は、データ受信部１６０へ渡した最後のパケットの順序番号を情報部１８０に渡す。
【００７２】
以上、図５を用いてバッファ１５０の動作について説明した。次に、本発明の第１の実施形態にかかる受信端末１００Ｂに含まれる応答部１７０の動作について説明する。
【００７３】
図６は、本発明の第１の実施形態にかかる応答部１７０の動作について示す流れ図である。以下、図６を用いて第１の実施形態にかかる応答部１７０の動作について説明する。
【００７４】
応答部１７０は、データ受信部１６０が受け取った最後のパケットの順序番号ｎを情報部１８０から取得する（ステップＳ６０１）。次に、応答部１７０はバッファ１５０にパケットが存在しているかどうかを確認する（ステップＳ６０２）。
【００７５】
上記ステップＳ６０２の確認の結果、バッファ１５０にパケットが無いか、または順序番号がｎ＋１であるパケットがあれば、順序番号通りにパケットが受信出来ているので、応答部１７０は、予め定められた上記（１）または（２）の少なくともいずれかの内容で応答パケットを送信し、処理を終了する。
【００７６】
一方、上記ステップＳ６０２の確認の結果、バッファ１５０に順序番号がｎ＋２以降のパケットが存在していれば、応答部１７０は欠落判定部１４０からの順序番号ｎ＋１のパケットの欠落の通知を受けているかどうかを確認する（ステップＳ６０３）。欠落判定部１４０からの順序番号ｎ＋１のパケットの欠落の通知を受けていなければ、上記ステップＳ６０２に戻り、応答部１７０は応答パケットの送信を控える。一方、欠落判定部１４０からの順序番号ｎ＋１のパケットの欠落の通知を受けていれば、応答部１７０は、送信端末１００Ａに対して、順序番号ｎ＋１のパケットが欠落していることを応答パケットにより通知する（ステップＳ６０４）。この通知は、予め定められた上記（１）または（２）の少なくともいずれかの内容によって行われる。
【００７７】
以上、図６を用いて第１の実施形態にかかる応答部１７０の動作について説明した。このように、応答部１７０は欠落判定部１４０からの順序番号ｎ＋１のパケットの欠落の通知を受けるまで応答パケットの送信を控えることで、ネットワーク１０への無駄なトラフィックの発生を抑えることができる。
【００７８】
ここで、推定部１３０、欠落判定部１４０、バッファ１５０、応答部１７０の具体的な動作例を説明する。送信端末１００Ａは、受信端末１００Ｂに対して、１、２、３、・・・と続く順序番号を付与したデータパケットを番号の昇順に送信している。以降、パケットの番号についての記述がある場合には、特に断らない限りこの順序番号を指す。受信端末１００Ｂは、送信端末１００Ａが送信したデータパケットを受け取り、１パケットを受け取る度に１応答パケットを送信端末１００Ａに送信しているとする。
【００７９】
送信端末１００Ａから送信されるデータパケット、受信端末１００Ｂから送信される応答パケット共に、経路途中のネットワーク１０の中で、ルータ（図示せず）等によってパケットが複数の経路に分配されている可能性があるが、送信端末１００Ａ、受信端末１００Ｂとも、いくつの経路に分配されているかは分からない。
【００８０】
ここで、受信端末１００Ｂが、１０番まで順序通りにデータパケットを受信しており、データ受信部１６０が受信したパケットを全て受け取っているとする。これ以降、送信端末１００Ａから受信するパケットについての受信端末１００Ｂの動作を、図面を参照しながら具体的に説明する。このとき、情報部１８０にはデータ受信部１６０が受信した最後の順序番号１０番と、経路の分岐数の推定値ｋ＝１とが保存されている。
【００８１】
このとき、パケット受信部１２０が１３番のパケットを受信したとする。パケット受信部１２０が受信した１３番のパケットはバッファ１５０に渡される。そして、その１３番のパケットも含め、図７に示した順序でパケット受信部１２０がパケットを受信した場合に、推定部１３０の動作を図３に示した流れ図に沿って説明する。
【００８２】
まず、推定部１３０は、情報部１８０から、分岐数の推定値ｋ＝１を取得するとともに、データ受信部１６０が受信した最後尾のパケットの順序番号ｎ＝１０を取得する（ステップＳ３０１）。続いて、推定部１３０は、パケット受信部１２０が新たに受信したパケットの順序番号ｍ＝１３を取得する（ステップＳ３０２）。推定部１３０は、ｍ−ｎ≦ｋとなるかどうかを判定し（ステップＳ３０３）、ｋ＜ｍ−ｎであるので、推定部１３０は、パケット受信部１２０が順序番号ｍ＝１３のパケットの次に受信したパケットの順序番号（１１）を取得する（ステップＳ３０４）。
【００８３】
１１番のパケットを受信した時点で、降順に並ぶ個数は１３番、１１番であるから２つである。よって、順序番号が降順に並ぶ個数ｄはｄ＝２である（ステップＳ３０５）。そして、推定部１３０は、順序番号が降順に並ぶ個数ｄ＝２を分岐数の推定値ｋの候補とする（ステップＳ３０６）。
【００８４】
１１番のパケットを受信した時点での最大の順序番号は１３である。そしてパケット受信部１２０は１２番のパケットを受信していないので、推定部１３０は、パケット受信部１２０が受信した順序番号が最大のパケット（１３番のパケット）と、順序番号がｎ＋１番のパケット（１１番の）との間に入る全てのパケットを受信したかどうかを判断し（ステップＳ３０７）、全てのパケットを受信していないので、ステップＳ３０４に戻って、推定部１３０は、さらに次に受信したパケットの順序番号を取得する処理を実行する。
【００８５】
その後、パケット受信部１２０が１４番のパケットを受信すると、１４番のパケットを受信した時点で、降順に並ぶ個数は１６番、１５番、１４番であるから３つである。従って、順序番号が降順に並ぶ個数ｄはｄ＝３である（ステップＳ３０５）。そして、推定部１３０は、順序番号が降順に並ぶ個数ｄ＝３を分岐数の推定値ｋの候補とする（ステップＳ３０６）。
【００８６】
１４番のパケットを受信した時点での最大の順序番号は１６である。推定部１３０は、パケット受信部１２０が受信した順序番号が最大のパケット（１６番のパケット）と、順序番号がｎ＋１番のパケット（１１番の）との間に入る全てのパケットを受信したかどうかを判断し（ステップＳ３０７）、全てのパケットを受信しているので、推定部１３０は上記ステップＳ３０６で候補とした分岐数の推定値ｋ＝３を情報部１８０に保存する（ステップＳ３０８）。
【００８７】
推定部１３０が分岐数の推定値を３と推定するまでは、分岐数の推定値は１である。分岐数の推定値は１である状態で、図８に示した様に１５番のパケットまでを受信した場合のバッファ１５０の動作を図５に示した流れ図に沿って説明する。
【００８８】
バッファ１５０はパケット受信部１２０からパケットを受け取ると（ステップＳ５０１）、受信したパケットに付与されている順序番号の小さい順に、すなわち１１番のパケットをデータ受信部１６０へ渡す（ステップＳ５０２）とともに、バッファ１５０は、データ受信部１６０へ渡した最後のパケットの順序番号（１１）を情報部１８０に渡す。このとき、１３番、１６番、１５番のパケットはバッファ１５０に保持されたままの状態となっている。
【００８９】
また図８に示した様に１３番のパケットを受信し、１３番のパケットがバッファ１５０に格納された場合の欠落判定部１４０及び応答部１７０の動作を図４及び図６に示した流れ図に沿って説明する。
【００９０】
欠落判定部１４０はパケットの欠落判定処理に際し、情報部１８０から、分岐数の推定値ｋ＝１と、データ受信部１６０が受信した最後尾のパケットの順序番号ｎ＝１０とを取得する（ステップＳ４０１）。次に、欠落判定部１４０はパケット受信部１２０が新たに受信したパケットの順序番号ｍ＝１３を受け取り（ステップＳ４０２）、ｎ＋１＜ｍであり、かつｋ＝１であるから、受信パケットに欠落が発生していると判断し、欠落判定部１４０は応答部１７０へ１１番及び１２番のパケットの欠落を通知する（ステップＳ４０５）。
【００９１】
受信端末１００Ｂが１３番のパケットを受信した場合に、応答部１７０は情報部１８０からデータ受信部１６０が受け取った最後のパケットの順序番号ｎ＝１０を取得する（ステップＳ６０１）。次に、応答部１７０はバッファ１５０にパケットが存在しているかどうかを確認し（ステップＳ６０２）、バッファ１５０には１３番のパケットが存在するので、応答部１７０は欠落判定部１４０からの順序番号１１番及び１２番のパケットの欠落の通知を受けているかどうかを確認する（ステップＳ６０３）。欠落判定部１４０から順序番号１１番及び１２番のパケットの欠落の通知を受けていれば、応答部１７０は、送信端末１００Ａに対して、順序番号１１番及び１２番のパケットが欠落していることを応答パケットにより通知する（ステップＳ６０４）。
【００９２】
一方、推定部１３０が分岐数の推定値を３と推定した状態で、図９に示した様な順番でパケットまでを受信した場合の欠落判定部１４０、バッファ１５０及び応答部１７０の動作を図４、図５及び図６に示した流れ図に沿って説明する。なお、図９に示した様な順番でパケットまでを受信した場合において、情報部１８０には、データ受信部１６０が受信した最後尾の順序番号２０番と、経路の分岐数の推定値ｋ＝３とが保存されているものとする。
【００９３】
欠落判定部１４０はパケットの欠落判定処理に際し、情報部１８０から、分岐数の推定値ｋ＝３と、データ受信部１６０が受信した最後尾のパケットの順序番号ｎ＝２０とを取得する（ステップＳ４０１）。次に、欠落判定部１４０はパケット受信部１２０が新たに受信したパケットの順序番号ｍ＝２３を受け取り（ステップＳ４０２）、ｎ＋１＜ｍであり、かつｋ＝１でないから、次に、欠落判定部１４０はパケット受信部１２０が次に受信したパケットの順序番号（２６）を取得する（ステップＳ４０６）。
【００９４】
ステップＳ４０６でパケット受信部１２０が次に受信したパケットの順序番号を取得すると、続いて欠落判定部１４０は、上記ステップＳ４０６で取得した順序番号がｎ＋１（２１）であるかどうかを判定する（ステップＳ４０７）。ステップＳ４０６で取得した順序番号はｎ＋１（２１）では無いので、続いて欠落判定部１４０は、順序番号ｍ＝２３のパケットを含め、これまでパケット受信部１２０から受け取ったｎ＋１（２１）より大きい順序番号から選んだ順序番号を、パケット受信部１２０が受信した順に並べた列を対象に、ある番号から始めて順序番号が降順に並ぶ個数ｄを数え上げる（ステップＳ４０８）。個数ｄは１であり、ｄ＜ｋであるので、上記ステップＳ４０６に戻り、欠落判定部１４０はパケット受信部１２０が次に受信したパケットの順序番号（２５）を取得する。
【００９５】
ステップＳ４０６で取得した順序番号はｎ＋１（２１）では無いので、再び順序番号が降順に並ぶ個数ｄを数え上げる。ｄ＝２であり、ｄ＜ｋであるので、再び上記ステップＳ４０６に戻り、パケット受信部１２０が次に受信したパケットの順序番号（２１）を取得する。この順序番号はｎ＋１に等しいので、欠落判定部１４０は処理を終了する。
【００９６】
バッファ１５０は、パケット受信部１２０から２１番のパケットを受け取ると（ステップＳ５０１）、受け取った２１番のパケットをデータ受信部１６０へ渡す（ステップＳ５０２）とともに、バッファ１５０は、データ受信部１６０へ渡した最後のパケットの順序番号（２１）を情報部１８０に渡す。このとき、２３番、２６番、２５番のパケットはバッファ１５０に保持されたままの状態となっている。
【００９７】
また、応答部１７０はデータ受信部１６０が受け取った最後のパケットの順序番号ｎ＝２０を情報部１８０から取得する（ステップＳ６０１）。次に、応答部１７０はバッファ１５０にパケットが存在しているかどうかを確認し（ステップＳ６０２）、バッファ１５０に存在するのはｎ＋１（２１）番以降のパケットしか無いので、応答部１７０は欠落判定部１４０からの順序番号ｎ＋１（２１）番のパケットの欠落の通知を受けているかどうかを確認する（ステップＳ６０３）。欠落判定部１４０からの順序番号ｎ＋１（２１）番のパケットの欠落の通知を受けていなければ、上記ステップＳ６０２に戻り、応答部１７０は応答パケットの送信を控える。
【００９８】
やがて、バッファ１５０に２１番のパケットが到達すると、順序番号通りにパケットが受信出来たので、応答部１７０は、予め定められた上記（１）または（２）の少なくともいずれかの内容で応答パケットを送信端末１００Ａへ送信し、処理を終了する。
【００９９】
以上、推定部１３０、欠落判定部１４０、バッファ１５０、応答部１７０の具体的な動作例について説明した。
【０１００】
以上説明したように本発明の第１の実施形態にかかる受信端末１００Ｂによれば、パケット受信部１２０で受信したパケットの順序番号から、推定部１３０によってネットワーク１０の内部の経路の分岐数を推定し、番号通りにパケットを受信しなかった場合でも、この分岐数の情報を用いて、応答部１７０からの応答パケットの送信を控える。これにより受信端末１００Ｂは、通信経路途中の分岐によってパケットの到着順序が逆転している場合であっても、経路途中のパケットロスであると誤判定することが無くなる。
【０１０１】
従来技術では、経路途中の分岐によって到着順序が保証されないので、受信端末で順序番号の大きいパケットが先に届くと、それより順序番号の小さいパケットは自動的にパケットロスであると判定され、応答パケットによって送信端末からの再送が発生してしまう。例えば、上述したように、従来技術では図７のようにパケットが到着した場合、１３番のパケットが到着した時点で１１番及び１２番のパケットが再送の対象となる。これに対して本発明の第１の実施形態にかかる受信端末１００Ｂでは、後から到着するパケットからもパケットの未着を判断するので、１３番のパケットが到着した時点で即座に１１番及び１２番のパケットを再送の対象とすることはしない。従って、本発明の第１の実施形態によれば、番号通りにパケットが到着しなかった場合でも、パケットの到着時点でパケットの未着を判断するのではなく、後から到着するパケットからもパケットの未着を判断するので、ネットワークに無駄なトラフィックが流れることを防ぐことができる。
【０１０２】
＜２．第２の実施形態＞
［２−１．通信システムの構成］
次に、図１１を参照して、本発明の第２の実施形態に係る通信システムの概略構成について説明する。図１１に示したように、本発明の第２の実施形態に係る通信システム２は、送信端末２００Ａから受信端末２００Ｂに対して、ネットワーク１０を介して、順序番号を付与したパケットの形式で送信したいデータを送信する。本実施形態においては、パケットを再送する場合を除き、原則として順序番号の昇順でパケットを送信する。
【０１０３】
そして、送信端末２００Ａは、複数の（例えば２つの）インタフェースＩＦ１、ＩＦ２を有しており、このインタフェースＩＦ１、ＩＦ２に送信するパケットを振り分けている。パケットには複数のインタフェースを区別する印（ＩＦ番号）が付与されており、またどのインタフェースにどのパケットを振り分けるかについての決まりは特に定められていない。
【０１０４】
一方、受信端末２００Ｂは、送信端末２００Ａから送信されて来るパケットを受け取ると、順序番号の最初から始めて抜けなく受信した一連のパケットの内の最大の番号や、または欠落しているパケットの番号を応答パケットとして送信端末２００Ａに送信する。この応答パケットを送信端末２００Ａが受信することで、送信端末２００Ａは次に送信すべきパケットを制御することができる。このような通信制御は、ＴＣＰ等の通信方式に見られるものである。本実施形態も同様に、このような制御下における主に応答パケットの制御に関わるものである。
【０１０５】
パケットが流れるネットワーク１０の内部では、経路途中のルータ（図示せず）等がパケットを複数の経路に振り分けることで、経路が分岐され得る。図１１に示した分岐はその状態を表したものである。送信端末２００Ａ、受信端末２００Ｂは、ネットワーク１０の中のパケットが通る経路や分岐の数については把握していない。なお、以下の説明では、ネットワーク１０は複数の経路に分岐されているものとして説明するが、本発明は、送信端末１００Ａと受信端末１００Ｂとの間に分岐が全く無い場合であっても同様に適用できるものである。
【０１０６】
以上、図１１を参照して、本発明の第２の実施形態に係る通信システムの概略構成について説明した。次に、本発明の第２の実施形態にかかる受信端末２００Ｂの構成について説明する。
【０１０７】
［２−２．受信端末の構成］
図１２は、本発明の第２の実施形態にかかる受信端末２００Ｂの構成を示す説明図である。以下、図１２を用いて本発明の第２の実施形態にかかる受信端末２００Ｂの構成について説明する。
【０１０８】
図１２に示したように、本発明の第２の実施形態にかかる受信端末２００Ｂは、パケット受信部２２０と、推定部２３０と、欠落判定部２４０と、バッファ２５０と、データ受信部２６０と、応答部２７０と、情報部２８０と、を含んで構成される。
【０１０９】
パケット受信部２２０は、送信端末２００Ａから送信されてくる、順序番号及びＩＦ番号が付与されたパケットを受信するものであり、パケット受信部１２０は受信したパケットを送信されてきた順序通りにバッファ１５０に渡す。本実施形態では、ＩＦ番号１、２のいずれかがパケットに付与されているものとする。
【０１１０】
送信端末２００Ａが受信端末２００Ｂにデータを送信するときに使用するインタフェースの数を受信した場合には、各インタフェースの分岐数の推定値を、初期値を１として情報部２８０に渡す。インタフェースの数は、インタフェースの識別子など、送信端末２００Ａが送信するパケットのインタフェースの数が判別可能なものであればどのようなものであっても構わない。また、インタフェースの数は、送信端末２００Ａがパケットに付与した印の種類から判断しても良い。本実施形態では、受信端末２００Ｂは送信端末２００Ａからインタフェース数を受け取ることにする。
【０１１１】
推定部２３０は、情報部２８０が保持しているインタフェースごとの経路の分岐数の推定値と、データ受信部２６０が受信した最後尾のパケットの順序番号とを取得し、この順序番号と、インタフェースごとの分岐数の推定値と、パケット受信部２２０が受信したパケットの並びとから、送信経路途中での分岐数を推定するものである。推定部２３０が推定した分岐数の推定値は情報部２８０に送られる。
【０１１２】
本実施形態では、送信経路途中での分岐数は以下のように推定する。
【０１１３】
パケット受信部２２０で受信しているパケットは、送信端末２００Ａが受信端末２００Ｂに対して順序番号の昇順に送信したパケットとする。これは、受信端末２００Ｂからの応答パケットによって既に送信端末２００Ａが送信した順序番号の小さいパケットを、再度送っていない状態である。このことは、受信端末２００Ｂにおいても、自身の送信する応答パケットによって判断する。
【０１１４】
推定部２３０は、情報部２８０から分岐数の推定値ｋｉを取得するとともに、データ受信部１６０が受信した最後尾のパケットの順序番号を取得する。なお、添字ｉはインタフェースを区別する識別子であり、以下においても添字は同じ意味で用いる。データ受信部２６０は、順序番号がｎ番目（ｎ＝０，１，２，・・・）までのパケットを全て受け取っているとすると、ｎ＝０の場合は、データ受信部２６０は未だパケットを受け取っていない。その後、順序番号がｎ番目より大きいｍ番目のパケットをパケット受信部２２０が受信したとする。また、これは送信端末２００ＡのＩＦｉからのパケットであった。ｍ−ｎ≦ｋｉの場合は、推定部２３０は、ｋｉをそのインタフェースＩＦｉにおける分岐数の推定値とする。一方、ｍ−ｎ＞ｋｉである場合、推定部２３０は、先のｍ番目のパケットを含め、以降受信するｎ番目よりも順序番号が大きいパケットからインタフェースごとに選んだパケットを、パケット受信部２２０が受信した順に並べる。そして推定部２３０は、このパケット列について、順序番号が降順に並ぶ個数を数え上げる。ただし順序番号は連続していなくても良い。またパケットが１つの場合にはその個数を１とする。例えば、順序番号が１３、１１と並んでいれば、順序番号が降順に並ぶ個数は２であり、順序番号が１３しかない場合には、順序番号が降順に並ぶ個数は１となる。
【０１１５】
ｍ−ｎ＞ｋである場合、推定部２３０は、インタフェースごとに、この個数が最大となるようにパケット列を選び、この列の順序番号が降順に並ぶ個数を、そのインタフェースの分岐数の推定値とする。これは、通常であれば順序番号の昇順でパケットが到着するが、ネットワーク１０で分岐があることで、パケットの到達順序が逆になることがある。従って、本実施形態では順序番号が降順の並ぶ個数を分岐の数と推定する。
【０１１６】
数え上げる対象とするパケットは、順序番号がｎ＋１番目からｍ番目までの全てのパケットをパケット受信部２２０が受信するまでの間に、パケット受信部２２０が受信した順序番号が最大の番号と、ｎ＋１番目のとの間に入る全てのパケットである（順序番号がｎ＋１番目のパケットも含まれる）。例えば、ｎ＝１０、ｍ＝１３の場合に、図１７に示したような順序で受信端末２００Ｂがパケットを受信したとする。この場合は、パケット受信部２２０が、ｎ＋１＝１１番からｍ＝１３番までの全てのパケット、すなわち１１番と１２番のパケットを受信するまでに受信したパケットの最大の番号は１６番である。このときに、１１番から１６番の間に入る全てのパケット、すなわち１１、１２、１３、１４、１５、１６番が数え上げの対象となる。そして、順序番号が降順に並ぶ個数の最大値は、ＩＦ１が１６、１５、１４の場合の「３」であり、ＩＦ２が１２、１１の場合の「２」となる。従って、分岐数の推定値はｋ１＝３であり、ｋ２＝２である。
【０１１７】
図１７に示したようにパケットが受信端末２００Ｂに到達した場合、例えば図１９に示したような経路で送信端末２００Ａから受信端末２００Ｂに転送される。
【０１１８】
欠落判定部２４０は、パケット受信部２２０で受信したパケットの並びと、情報部２８０が保持している、データ受信部２６０が受信した最後尾の順序番号と、情報部２８０が保持している、インタフェースごとの分岐数の推定値ｋｉとから、パケットが未到着なのか、経路途中で欠落しているのかを判定するものである。欠落判定部２４０は、パケットが欠落していると判定すると、応答部２７０に対して欠落しているパケットの順序番号を通知する。
【０１１９】
欠落判定部２４０によるパケットの欠落判定方法について以下で説明する。
【０１２０】
情報部２８０が保持している、データ受信部２６０が受信した最後尾の順序番号がｎ番目（ｎ＝０，１，２，・・・）であったとする。次に欠落判定部２４０は、パケット受信部２２０で、順序番号がｎ＋１番目より大きいｍ番目のパケットを受信した場合に、そのパケットを含め、以降受信するｎ＋１番目よりも順序番号が大きいパケットから選んだパケットを、パケット受信部２２０が受信した順に並べる。そして、このパケット列から、その並びのままインタフェースごとにパケットを選び出し、そのインタフェースごとに選び出したパケット列について、順序番号が降順に並ぶ個数をインタフェースごとに数える。ただし、順序番号は連続していなくても良い。また、パケットが１つの場合は、その個数を１とする。
【０１２１】
そして欠落判定部２４０は、インタフェースごとに、順序番号が降順に並ぶ個数が分岐数の推定値ｋｉ個以上になるパケット列がそのインタフェースのパケットにあるかどうかを調べる。欠落判定部１４０は、全てのインタフェースについてこの条件を満たしていれば、ｎ＋１番目から、これまで受信したｎ＋１番目より大きい番号の中で最小の順序番号の１つ手前までのパケットが欠落していると判定する。
【０１２２】
バッファ２５０は、パケット受信部２２０からパケットを受け取るものであり、バッファ２５０が受け取ったパケットは、順序番号の昇順に、重複無くデータ受信部２６０へ送られる。また、データ受信部２６０に送られた順序番号の最後尾の番号はバッファ２５０から情報部２８０に送られる。パケット受信部２２０から受け取ったパケットがバッファ２５０に存在しているパケットと重複したり、既にデータ受信部２６０に送ったパケットと同じものであったりした場合には、そのパケットはバッファ２５０から破棄される。
【０１２３】
データ受信部２６０は、バッファ２５０から渡されたパケットを受信するものである。
【０１２４】
応答部２７０は、送信端末２００Ａがパケットを送る数や番号を制御するための応答パケットを生成して送信するものである。応答パケットの送信を行うために、応答部２７０は情報部２８０から、データ受信部２６０が受信した最後尾の順序番号ｎを取得する。また応答部２７０は、欠落判定部２４０から欠落しているパケットの情報も取得する。
【０１２５】
応答部２７０は、上述の本発明の第１の実施形態における応答部１７０と同様の機能を有する。すなわち、応答パケットを送るタイミングになった場合に、バッファ２５０にパケットが無いときは、予め定められた上記（１）または（２）の少なくともいずれかの内容で応答パケットを送信する。一方、応答部２７０は、応答パケットを送るタイミングになった場合に、バッファ２５０にパケットがあるとき、すなわち順序番号どおりにパケットが届いておらず、抜けている順序番号のパケットがあるのでバッファ２５０にパケットがあるときは、上記（１）または（２）の内容を送信する場合であっても、欠落判定部１４０から欠落している順序番号を受け取るまで応答パケットの送信を控える。ただし、上記（２）の場合には、その抜けているパケットが無いものとして、すなわちその抜けているパケットの再送を要求しない内容で、応答部２７０は応答パケットを送信しても良い。
【０１２６】
情報部２８０は、推定部２３０が推定した、送信端末２００Ａのパケット送信に使用するインタフェースごとの経路の分岐数の推定値ｋｉと、バッファ２５０がデータ受信部２６０に送ったパケットのうち最後尾の順序番号とを保存する。情報部２８０が保存する、経路の分岐数の推定値ｋｉの初期値は１である。また、最後尾の順序番号は、この番号以前の順序番号のパケットを、データ受信部２６０が全て受信していることを保証するものである。
【０１２７】
以上、図１２を用いて本発明の第２の実施形態にかかる受信端末２００Ｂの構成について説明した。次に、本発明の第２の実施形態にかかる受信端末２００Ｂの動作について説明する。
【０１２８】
［２−３．受信端末の動作］
上述したように、パケット受信部２２０は、送信端末２００Ａから送信された、順序番号及びＩＦ番号が付与されたパケットを受信し、送られてきた順序通りにバッファ２５０に受信したパケットを渡す。また、送信端末２００Ａが受信端末２００Ｂへデータを送信するときに使用するインタフェースの数を受信端末２００Ｂが受信すると、各インタフェースの分岐数の推定値ｋｉの初期値を１として情報部２８０に渡す。
【０１２９】
図１３は、本発明の第２の実施形態にかかる受信端末２００Ｂに含まれる推定部２３０の動作について示す流れ図である。以下、図１３を用いて推定部２３０の動作について詳細に説明する。
【０１３０】
前提として、パケット受信部２２０で受信しているパケットは、送信端末２００Ａが受信端末２００Ｂに対して順序番号の昇順に送信したパケットであるとする。推定部２３０は、情報部２８０から、各インタフェースの分岐数の推定値ｋｉを取得するとともに、データ受信部２６０が受信した最後尾のパケットの順序番号ｎを取得する（ステップＳ１３０１）。
【０１３１】
続いて、推定部２３０は、パケット受信部２２０が新たに受信したパケットの順序番号ｍ及びそのパケットのＩＦ番号ｉを取得する（ステップＳ１３０２）。推定部２３０は、ｍ−ｎ≦ｋｉとなるかどうかを判定し（ステップＳ１３０３）、ｍ−ｎ≦ｋｉであれば後段のステップＳ１３０８へ進むが、ｋｉ＜ｍ−ｎであれば、推定部２３０は、パケット受信部２２０が順序番号ｍのパケットの次に受信したパケットの順序番号及びそのパケットのＩＦ番号ｉを取得する（ステップＳ１３０４）。
【０１３２】
続いて、推定部２３０は、順序番号ｍのパケットを含め、これまで取得した、順序番号ｎよりも順序番号が大きいパケットから選んだパケットを、パケット受信部２２０が受信した順に整列し、このパケット列から、その並びのままインタフェースごとにパケットを選び出す。そして、そのインタフェースごとに選び出したパケット列について、インタフェースごとに順序番号が降順に並ぶ個数ｄｉを数え上げる（ステップＳ１３０５）。ただし、順序番号は連続していなくてもよく、またパケットが１つの場合はその個数を１としてカウントする。数え上げの対象とするパケットは、順序番号がｎ＋１番目からｍ番目までの全てのパケットをパケット受信部２２０が受信するまでの間に、パケット受信部２２０が受信した順序番号が最大のパケットと、順序番号がｎ＋１番のパケットとの間に入る全てのパケットである。推定部２３０は、インタフェースごとにこの個数が最大となるように選んだパケット列について、順序番号が降順に並ぶ個数ｄｉを、インタフェースＩＦｉの分岐数の推定値の候補とする。
【０１３３】
推定部２３０は、上記ステップＳ１３０５で数え上げた、順序番号が降順に並ぶ個数が最大となるように選んだパケット列について、順序番号が降順に並ぶ個数ｄｉが分岐数の推定値ｋｉより大きければ、順序番号が降順に並ぶ個数ｄｉを分岐数の推定値ｋｉの候補とする（ステップＳ１３０６）。そして推定部２３０は、順序番号がｎ＋１番目からｍ番目までの全てのパケットをパケット受信部１２０が受信するまでの間に、パケット受信部１２０が受信した順序番号が最大のパケットと、順序番号がｎ＋１番のパケットとの間に入る全てのパケットを受信したかどうかを判断する（ステップＳ１３０７）。全てのパケットを受信していれば、推定部２３０は上記ステップＳ１３０６で候補とした分岐数の推定値ｋｉを情報部２８０に保存する（ステップＳ１３０８）。一方、まだ全てのパケットを受信していなければ、上記ステップＳ１３０４に戻って、推定部２３０は、さらに次に受信したパケットの順序番号を取得する処理を実行する。
【０１３４】
このように、推定部２３０はネットワーク１０におけるインタフェースごとの分岐数を推定することができる。受信端末２００Ｂは、この推定部２３０が推定した分岐数を用いて、パケットが欠落しているかどうかの判定を行うことができる。
【０１３５】
以上、図１３を用いて推定部２３０の動作について詳細に説明した。次に、本発明の第２の実施形態にかかる受信端末２００Ｂに含まれる欠落判定部２４０の動作について説明する。
【０１３６】
図１４は、本発明の第２の実施形態にかかる受信端末２００Ｂに含まれる欠落判定部２４０の動作を示す流れ図である。以下、図１４を用いて欠落判定部２４０の動作について詳細に説明する。
【０１３７】
まず、欠落判定部２４０はパケットの欠落判定処理に際し、情報部２８０から、インタフェースごとの分岐数の推定値ｋｉと、データ受信部２６０が受信した最後尾のパケットの順序番号ｎとを取得する（ステップＳ１４０１）。次に、欠落判定部２４０はパケット受信部２２０が新たに受信したパケットの順序番号ｍ及びそのパケットのＩＦ番号ｉを受け取り（ステップＳ１４０２）、ｎ＋１＜ｍとなっているかどうかを判定する（ステップＳ１４０３）。
【０１３８】
上記ステップＳ１４０３の判定の結果、ｎ＋１≧ｍである場合には、欠落判定部２４０は、受信パケットに欠落は発生していないと判断し、処理を終了する。一方、上記ステップＳ１４０３の判定の結果、ｎ＋１＜ｍである場合には、続いて欠落判定部１４０はｋｉ＝１であるかどうかを判定する（ステップＳ１４０４）。
【０１３９】
上記ステップＳ４０４の判定の結果、情報部１８０が保持している分岐数ｋｉの値がｋｉ＝１である場合には、受信パケットに欠落が発生していると判断し、欠落判定部２４０は応答部２７０へパケットの欠落を通知する（ステップＳ１４０５）。このステップＳ１４０５では、欠落判定部２４０は、ｎ＋１番目から、これまで受信したｎ＋１番より大きい番号の中で最小の順序番号の一つ手前までの順序番号のパケットが欠落していると判定し、応答部２７０へパケットの欠落を通知する。
【０１４０】
一方、上記ステップＳ１４０４の判定の結果、情報部２８０が保持している分岐数ｋｉの値がｋｉ＝１でない場合には、次に、欠落判定部２４０はパケット受信部２２０が次に受信したパケットの順序番号を取得する（ステップＳ１４０６）。
【０１４１】
上記ステップＳ１４０６でパケット受信部２２０が次に受信したパケットの順序番号を取得すると、続いて欠落判定部２４０は、上記ステップＳ１４０６で取得した順序番号がｎ＋１であるかどうかを判定する（ステップＳ１４０７）。
【０１４２】
上記ステップＳ１４０７の判定の結果、上記ステップＳ１４０６で取得した順序番号がｎ＋１であるならば、欠落判定部２４０は処理を終了する。一方、上記ステップＳ１４０７の判定の結果、上記ステップＳ１４０６で取得した順序番号がｎ＋１で無いならば、続いて欠落判定部２４０は、順序番号ｍのパケットを含め、以降パケット受信部２２０が受信するｎ＋１より大きい順序番号が大きいパケットを、パケット受信部２２０が受信した順に並べる。そして、このパケット列からその並びのまま、インタフェースごとにパケットを選び出す。そして、そのインタフェースごとに選び出したパケット列について、インタフェースごとに順序番号が降順に並ぶ個数ｄｉを数え上げる（ステップＳ１４０８）。
【０１４３】
そして欠落判定部２４０は、上記ステップＳ１４０８で数え上げた個数ｄｉについて、ｋｉ≦ｄｉを満たす列が存在するかどうかを判定する（ステップＳ１４０９）。全てのインタフェースについてｋｉ≦ｄｉを満たす列が１つでも存在すれば、受信パケットに欠落が発生していると判断し、欠落判定部２４０は応答部２７０へパケットの欠落を通知する（ステップＳ１４０５）。一方、どの列のｄｉについてもｄｉ＜ｋｉであるならば、上記ステップＳ１４０６に戻り、欠落判定部２４０はパケット受信部２２０が次に受信したパケットの順序番号を取得する。
【０１４４】
以上、図１４を用いて欠落判定部２４０の動作について詳細に説明した。次に、本発明の第２の実施形態にかかる受信端末２００Ｂに含まれるバッファ２５０の動作について説明する。
【０１４５】
図１５は、本発明の第２の実施形態にかかる受信端末２００Ｂに含まれるバッファ２５０の動作を説明する流れ図である。以下、図１５を用いてバッファ２５０の動作について説明する。
【０１４６】
まず、バッファ２５０はパケット受信部２２０からパケットを受け取ると（ステップＳ１５０１）、受信したパケットに付与されている順序番号の小さい順に、受け取ったパケットをデータ受信部２６０へ渡す（ステップＳ１５０２）。バッファ２５０は、欠落している順序番号のパケットがあれば、そのパケットがパケット受信部２２０から送られて来るまで待機する。また、既にデータ受信部２６０へ渡したものと重複しているパケットがあれば、バッファ２５０はそのパケットを破棄する。
【０１４７】
そして、バッファ２５０は、データ受信部２６０へ渡した最後のパケットの順序番号を情報部２８０に渡す。
【０１４８】
以上、図１５を用いてバッファ２５０の動作について説明した。次に、本発明の第２の実施形態にかかる受信端末２００Ｂに含まれる応答部２７０の動作について説明する。
【０１４９】
図１６は、本発明の第２の実施形態にかかる応答部２７０の動作について示す流れ図である。以下、図１６を用いて第２の実施形態にかかる応答部２７０の動作について説明する。
【０１５０】
応答部２７０は、情報部２８０からデータ受信部２６０が受け取った最後のパケットの順序番号ｎを取得する（ステップＳ１６０１）。次に、応答部２７０はバッファ２５０にパケットが存在しているかどうかを確認する（ステップＳ１６０２）。
【０１５１】
上記ステップＳ１６０２の確認の結果、バッファ２５０にパケットが無いか、または順序番号がｎ＋１であるパケットがあれば、順序番号通りにパケットが受信出来ているので、応答部２７０は、予め定められた上記（１）または（２）の少なくともいずれかの内容で応答パケットを送信し、処理を終了する。
【０１５２】
一方、上記ステップＳ１６０２の確認の結果、バッファ２５０に順序番号がｎ＋２以降のパケットが存在していれば、応答部２７０は欠落判定部２４０からの順序番号ｎ＋１のパケットの欠落の通知を受けているかどうかを確認する（ステップＳ１６０３）。欠落判定部２４０からの順序番号ｎ＋１のパケットの欠落の通知を受けていなければ、上記ステップＳ１６０２に戻り、応答部２７０は応答パケットの送信を控える。一方、欠落判定部２４０からの順序番号ｎ＋１のパケットの欠落の通知を受けていれば、応答部２７０は、送信端末２００Ａに対して、順序番号ｎ＋１のパケットが欠落していることを応答パケットにより通知する（ステップＳ１６０４）。この通知は、予め定められた上記（１）または（２）の少なくともいずれかの内容によって行われる。
【０１５３】
以上、図１６を用いて第２の実施形態にかかる応答部２７０の動作について説明した。このように、応答部２７０は欠落判定部２４０からの順序番号ｎ＋１のパケットの欠落の通知を受けるまで応答パケットの送信を控えることで、ネットワーク１０への無駄なトラフィックの発生を抑えることができる。
【０１５４】
ここで、推定部２３０、欠落判定部２４０、バッファ２５０、応答部２７０の具体的な動作例を説明する。送信端末２００Ａは、受信端末２００Ｂに対して、１、２、３、・・・と続く順序番号を付与したデータパケットを番号の昇順に送信している。以降、パケットの番号についての記述がある場合には、特に断らない限りこの順序番号を指す。また、データパケットには、送信端末２００Ａがデータパケットを送信したインタフェースのＩＦ番号１、２のいずれかが付与されているものとする。そして、受信端末２００Ｂは、送信端末２００Ａが送信したデータパケットを受け取り、１パケットを受け取る度に１応答パケットを送信端末１００Ａに送信しているとする。
【０１５５】
送信端末２００Ａから送信されるデータパケット、受信端末２００Ｂから送信される応答パケット共に、経路途中のネットワーク１０の中で、ルータ（図示せず）等によってパケットが複数の経路に分配されている可能性があるが、送信端末２００Ａ、受信端末２００Ｂとも、いくつの経路に分配されているかは分からない。
【０１５６】
ここで、受信端末２００Ｂが、１０番まで順序通りにデータパケットを受信しており、データ受信部２６０が受信したパケットを全て受け取っているとする。これ以降、送信端末２００Ａから受信するパケットについての受信端末２００Ｂの動作を、図面を参照しながら具体的に説明する。このとき、情報部２８０にはデータ受信部２６０が受信した最後の順序番号１０番と、経路の分岐数の推定値ｋ１＝１、ｋ２＝１とが保存されている。
【０１５７】
このとき、パケット受信部２２０が１３番のパケットを受信したとする。パケット受信部２２０が受信した１３番のパケットはバッファ２５０に渡される。そして、その１３番のパケットも含め、図１７に示した順序でパケット受信部２２０がパケットを受信した場合に、推定部２３０の動作を図１３に示した流れ図に沿って説明する。
【０１５８】
まず、推定部２３０は、情報部２８０から、分岐数の推定値ｋ１＝１、ｋ２＝１を取得するとともに、データ受信部２６０が受信した最後尾のパケットの順序番号ｎ＝１０を取得する（ステップＳ１３０１）。続いて、推定部２３０は、パケット受信部２２０が新たに受信したパケットの順序番号ｍ＝１３と、そのパケットのＩＦ番号ｉ＝２とを取得する（ステップＳ１３０２）。推定部２３０は、ｍ−ｎ≦ｋ２となるかどうかを判定し（ステップＳ１３０３）、ｋ２＜ｍ−ｎであるので、推定部２３０は、パケット受信部２２０が順序番号ｍ＝１３のパケットの次に受信したパケットの順序番号（１２）と、パケットのＩＦ番号ｉ＝１とを取得する（ステップＳ１３０４）。
【０１５９】
続いて、推定部２３０はインタフェースごとに順序番号が降順に並ぶ個数ｄ１、ｄ２を数え上げる（ステップＳ１３０５）。ここでは、ｄ１及びｄ２の値はｄ１＝ｄ２＝１となる。どのインタフェースについてもｄｉ≦ｋｉであるから、推定部２３０は、パケット受信部２２０が受信した順序番号が最大のパケット（１３番のパケット）と、順序番号がｎ＋１番のパケット（１１番の）との間に入る全てのパケットを受信したかどうかを判断し（ステップＳ１３０７）、１１番のパケットを受信していないので、全てのパケットを受信していないので、ステップＳ１３０４に戻って、推定部２３０は、さらに次に受信したパケットの順序番号を取得する処理を実行する。
【０１６０】
以後、１４番のパケットまでパケット受信部２２０が受信すると、推定部２３０は、パケット受信部２２０が受信したパケットの順序番号（１４）と、パケットのＩＦ番号ｉ＝２とを取得する（ステップＳ１３０４）。推定部２３０はインタフェースごとに順序番号が降順に並ぶ個数ｄ１、ｄ２を数え上げる（ステップＳ１３０５）。ここでは、インタフェース１については１６番、１５番、１４番の並びでｄ１＝３となり、インタフェース２については１２番、１１番の並びでｄ２＝２となる。そして、推定部２３０は、順序番号が降順に並ぶ個数をインタフェースごとの分岐数の推定値ｋｉの候補とする（ステップＳ１３０６）。
【０１６１】
続いて推定部２３０は、パケット受信部２２０が受信した順序番号が最大のパケット（１３番のパケット）と、順序番号がｎ＋１番のパケット（１１番の）との間に入る全てのパケットを受信したかどうかを判断し（ステップＳ１３０７）、全てのパケットを受信しているので、推定部２３０は上記ステップＳ１３０６で候補としたインタフェースごとの分岐数の推定値ｋ１＝３、ｋ２＝２を情報部１８０に保存する（ステップＳ１３０８）。
【０１６２】
次に、推定部２３０がインタフェースごとの分岐数の推定値をｋ１＝３、ｋ２＝２と推定した後の動作を説明する。ここでは、図１８のように送信端末２００Ａからのパケットを受信端末２００Ｂが受信した場合について説明する。情報部２８０には、データ受信部２６０が受信した最後尾のパケットの順序番号（２０）と、インタフェースごとの分岐数の推定値をｋ１＝３、ｋ２＝２とが保存されている。
【０１６３】
欠落判定部２４０はパケットの欠落判定処理に際し、情報部２８０から、インタフェースごとの分岐数の推定値をｋ１＝３、ｋ２＝２と、データ受信部２６０が受信した最後尾のパケットの順序番号ｎ＝２０とを取得する（ステップＳ１４０１）。次に、欠落判定部２４０はパケット受信部２２０が新たに受信したパケットの順序番号ｍ＝２７及びそのパケットを送信したインタフェースのＩＦ番号ｉ＝１を受け取る（ステップＳ１４０２）。受信したパケットの順序番号ｍ（＝２７）はｎ＋１（＝２１）では無いので、欠落判定部２４０は次にパケット受信部２２０が受信したパケットの順序番号ｍ＝２６及びそのパケットを送信したインタフェースのＩＦ番号ｉ＝２を受け取る。これも受信したパケットの順序番号ｍ（＝２６）はｎ＋１（＝２１）では無いので、欠落判定部２４０は、全てのインタフェースについてｋｉ≦ｄｉを満たすパケット列が存在するかどうかを確認する。
【０１６４】
確認の結果、ｋｉ≦ｄｉを満たすパケット列は存在しないので、その後は、欠落判定部２４０は次にパケット受信部２２０が受信したパケットの順序番号及びそのパケットを送信したインタフェースのＩＦ番号の取得処理を繰り返す。そして、２５番のパケットを受信した時点で、全てのインタフェースについてｋｉ≦ｄｉを満たすパケット列が存在するようになるので（インタフェース１については２６番、２４番、２３番からなるパケット列、インタフェース２については２７番、２５番からなるパケット列）、続いて欠落判定部２４０は、ｎ＋１＝２１番目のパケットから、これまで受信したｎ＋１＝２１番目より大きい番号の中で、最小の順序番号の一つ手前、すなわち２２番目までのパケットが欠落していると判定し、応答部２７０へその旨を通知する。
【０１６５】
バッファ２５０は、パケット受信部２２０からパケットを受け取るが、２１番のパケットが欠落しているので、パケット受信部２２０から２１番のパケットが送られて来るまで待機する。なお、バッファ２５０は、パケット受信部２２０から受け取ったパケットは保持している。
【０１６６】
また、応答部２７０はデータ受信部２６０が受け取った最後のパケットの順序番号ｎ＝２０を情報部２８０から取得する（ステップＳ１６０１）。応答部２７０は、バッファ２５０に２１番のパケットが存在しているかどうかを確認し（ステップＳ１６０２）、バッファ２５０に存在するのはｎ＋１（２３）番以降のパケットしか無いので、応答部２７０は欠落判定部２４０からの順序番号２１番と２２番のパケットの欠落の通知を受けているかどうかを確認する（ステップＳ１６０３）。欠落判定部２４０からは、２１番及び２２番のパケットが欠落している旨の通知を受けているので、送信端末２００Ａに対して、２１番及び２２番のパケットが欠落していることを応答パケットにより通知する。応答部２７０は、予め定められた上記（１）または（２）の少なくともいずれかの内容で応答パケットを送信端末２００Ａへ送信し、処理を終了する。
【０１６７】
以上、推定部２３０、欠落判定部２４０、バッファ２５０、応答部２７０の具体的な動作例について説明した。
【０１６８】
以上説明したように本発明の第２の実施形態にかかる受信端末２００Ｂによれば、送信端末２００Ａが複数のインタフェースからパケットを送信してきた場合に、パケット受信部２２０で受信したパケットの順序番号から、推定部２３０によってネットワーク１０の内部の経路の分岐数をインタフェースごとに推定し、番号通りにパケットを受信しなかった場合でも、この分岐数の情報を用いて、応答部２７０からの応答パケットの送信を控える。これにより受信端末２００Ｂは、通信経路途中の分岐によってパケットの到着順序が逆転している場合であっても、経路途中のパケットロスであると誤判定することが無くなる。
【０１６９】
上記非特許文献１に開示の発明では、経路途中の分岐によって到着順序が保証されないので、受信端末で順序番号の大きいパケットが先に届くと、それより順序番号の小さいパケットは自動的にパケットロスであると判定され、応答パケットによって送信端末からの再送が発生してしまう。例えば、上述したように、上記非特許文献１に開示の発明では図７のようにパケットが到着した場合、１３番のパケットが到着した時点で１１番及び１２番のパケットが再送の対象となる。
【０１７０】
また、上記特許文献２に開示の発明では、受信バッファでバッファ内の先頭のパケットしか見ないので、受信端末側で順序番号の大きいパケットが先に到着すると、それより順序番号の小さいパケットが自動的にパケットロスと判定されてしまい、応答パケットの送信及び送信端末からのパケットの再送が発生してしまう。図１８のようにパケットが受信端末に到着すると、上記特許文献２に開示の発明では、順序番号が２６番のパケットを受信した時点で、自動的に２１番から２５番のパケットはパケットロスと判定されてしまい、パケットの再送の対象となってしまう。
【０１７１】
これに対して本発明の第２の実施形態にかかる受信端末２００Ｂでは、後から到着するパケットからもパケットの未着を判断するので、２６番のパケットが到着した時点で即座に２１番から２５番のパケットを再送の対象とすることはしない。従って、本発明の第２の実施形態によれば、番号通りにパケットが到着しなかった場合でも、パケットの到着時点でパケットの未着を判断するのではなく、後から到着するパケットからもパケットの未着を判断するので、ネットワークに無駄なトラフィックが流れることを防ぐことができる。
【０１７２】
尚、上記各実施形態において説明した構成は、ネットワークを構成して利用されるもの一般に適用される。例えば、Ｐ２Ｐ（Ｐｅｅｒ  ｔｏ  Ｐｅｅｒ）の仮想ネットワークの構造や無線アドホックネットワークに適用することも出来る。
【０１７３】
また、上記各実施形態において、フローチャートに記述されたステップは、記載された順序に沿って時系列的に行われる処理はもちろん、必ずしも時系列的に処理されなくとも、並列的に又は個別的に実行される処理をも含む。また時系列的に処理されるステップでも、場合によっては適宜順序を変更することが可能であることは言うまでもない。
【０１７４】
また、上記各実施形態における各種動作は、ハードウェア的な処理によって実行されるようにしてもよく、ソフトウェア的な処理によって実行されるようにしてもよい。ソフトウェア的な処理によって上記各実施形態における各種動作を実行する場合には、コンピュータプログラムが格納された記録媒体及びコンピュータプログラムを実行するプロセッサその他の制御手段を受信端末１００Ｂ、２００Ｂに設け、係る記録媒体からコンピュータプログラムを読み出し、制御手段において順次実行するようにしてもよい。
【０１７５】
以上、添付図面を参照しながら本発明の好適な実施形態について詳細に説明したが、本発明はかかる例に限定されない。本発明の属する技術の分野における通常の知識を有する者であれば、特許請求の範囲に記載された技術的思想の範疇内において、各種の変更例または修正例に想到し得ることは明らかであり、これらについても、当然に本発明の技術的範囲に属するものと了解される。
【産業上の利用可能性】
【０１７６】
本発明は、通信装置及び通信制御方法に適用可能であり、特にある一恋のデーを送信する場合にそのデータの到着を保証する通信、例えばＴＣＰやＳＣＴＰに適用可能である。
【符号の説明】
【０１７７】
１００Ａ、２００Ａ    送信端末
１００Ｂ、２００Ｂ    受信端末
１２０、２２０    パケット受信部
１３０、２３０    推定部
１４０、２４０    欠落判定部
１５０、２５０    バッファ
１６０、２６０    データ受信部
１７０、２７０    応答部
１８０、２８０    情報部
【図１】
2011182234.tif 000003
【図２】
2011182234.tif 000004
【図３】
2011182234.tif 000005
【図４】
2011182234.tif 000006
【図５】
2011182234.tif 000007
【図６】
2011182234.tif 000008
【図７】
2011182234.tif 000009
【図８】
2011182234.tif 000010
【図９】
2011182234.tif 000011
【図１０】
2011182234.tif 000012
【図１１】
2011182234.tif 000013
【図１２】
2011182234.tif 000014
【図１３】
2011182234.tif 000015
【図１４】
2011182234.tif 000016
【図１５】
2011182234.tif 000017
【図１６】
2011182234.tif 000018
【図１７】
2011182234.tif 000019
【図１８】
2011182234.tif 000020
【図１９】
2011182234.tif 000021