(57)【要約】【課題】  パケットロスに対し、再送制御及び輻輳制御を行う通信プロトコルにおいて、リアルタイム通信を実現する【解決手段】  データ受信部202は、ネットワークインターフェース201からパケットを受け取り、データ受信部に渡す通信プロトコルスタック203、また、ネットワークインターフェース201が受信したパケットをスヌープしてデータ受信部202に渡すスヌープパケット出力部204の両者からパケットを受信し、そのパケットの重複がないように、つまり同じシーケンス番号のパケットが重複することがないように、その受け取ったデータをアプリケーションに提供する。【選択図】  図1
2006222494.tif 000002
【特許請求の範囲】
【請求項１】
再送制御と輻輳制御を行う通信プロトコルによりパケット通信を行うパケット通信装置であって、ネットワークインターフェースが受信したパケットをスヌープすることにより、損失したパケットの再送を待つことなく、前記損失したパケットの後続パケットのデータをアプリケーションに送出するパケット通信装置。
【請求項２】
ネットワークに接続されたネットワークインターフェースと、ネットワークインターフェースを通じてのパケットの送受信を管理する通信プロトコルスタックと、ネットワークインターフェースの受信パケットをスヌープするスヌープパケット出力部と、通信プロトコルスタック及びスヌープパケット出力部からパケットを受け取り、パケットのシーケンス番号の重複がないように、シーケンス番号が重複して届いたパケットを廃棄した上でパケットのデータをアプリケーションに送信するデータ受信部から構成されるパケット通信装置。
【請求項３】
通信プロトコルにおける輻輳制御が発生するタイミングを検出し、該タイミングを検出したときにダミーパケットを生成して通信プロトコルスタックに与えることで、通信プロトコルスタックに前記損失したパケットの後続パケットのデータをアプリケーションに送出させるパケット通信装置。
【請求項４】
ネットワークに接続されたネットワークインターフェースと、ネットワークインターフェースを通じてパケットの送受信を管理し、受信したパケットのデータをアプリケーションに送信する通信プロトコルスタックと、ネットワークインターフェースを経由して送受信されるパケットを監視し、通信プロトコルにおける輻輳制御が発生するタイミングを検出し、前記タイミングの検出をダミーパケット生成部に通知するパケット監視部と、前記検出の通知を受けてダミーパケットの生成を行い、ネットワークインターフェースを通じて通信プロトコルスタックに送信するダミーパケット生成部から構成されるパケット通信装置。
【請求項５】
ネットワークインターフェースを監視することでパケットの損失を検出すると、通信プロトコルにおいて直ちに再送制御が実施されるために必要な応答パケットを追加生成し、パケット送信側に送信するパケット通信装置。
【請求項６】
ネットワークに接続されたネットワークインターフェースと、ネットワークインターフェースを通じてパケットの送受信を管理し、受信したパケットのデータをアプリケーションに送信する通信プロトコルスタックと、ネットワークインターフェースを経由して送受信されるパケットを監視してDuplicated ACKの送信を検出し、その検出をACK生成部に通知するパケット監視部と、前記検出の通知を受けて1個以上のDuplicated ACKを生成しネットワークインターフェースに送信するACK生成部から構成されるパケット通信装置。
【請求項７】
ネットワークインターフェースを監視することでパケットの損失を検出すると、通信プロトコルにおいて直ちに再送制御及び輻輳制御が実施されるために必要な応答パケットを追加生成し、パケット送信側に送信すると同時に、損失したと判断したパケットのダミーパケットを生成しネットワークインターフェースに送信するパケット通信装置。
【請求項８】
ネットワークに接続されたネットワークインターフェースと、ネットワークインターフェースを通じてパケットの送受信を管理し、受信したパケットのデータをアプリケーションに送信する通信プロトコルスタックと、ネットワークインターフェースを経由して送受信されるパケットを監視してDuplicated ACKの送信を検出し、その検出をACK生成部とダミーパケット生成部に通知するパケット監視部と、前記検出の通知を受けて、再送制御及び輻輳制御が実施されるために必要な1つ以上のDuplicated ACKの生成を行いネットワークインターフェースに送信する前記ACK生成部と、前記検出の通知を受けてダミーパケットを生成し、ネットワークインターフェースを通じて、通信プロトコルスタックに送信する前記ダミーパケット生成部から構成されるデータパケットの通信装置。
【請求項９】
ネットワークインターフェースを監視することで、パケットのシーケンス番号の順序性が保たれているかを監視し、順序性が保たれていないことを検出した場合にはダミーパケットを生成してネットワークインターフェースを通じて通信プロトコルスタックに送信し、さらに前記順序性を保てなくなった原因となったシーケンス番号のパケットが、後続の所定のパケット数以内で受信できないことを確認すると、通信プロトコルにおいて直ちに輻輳制御が実施されるために必要な応答パケットを追加生成し、ネットワークインターフェースに送信するパケット通信装置。
【請求項１０】
ネットワークに接続されたネットワークインターフェースと、ネットワークインターフェースを通じてパケットの送受信を管理し、受信したパケットのデータをアプリケーションに送信する通信プロトコルスタックと、ネットワークインターフェースを経由して送受信されるパケットのシーケンス番号の順序性が保たれているかを監視し、順序性が保たれていないことを検出すると、該検出をダミー
パケット生成部に通知し、さらに次に連続して到着する複数個のパケットに未到着パケットが含まれるかどうかを監視し、含まれないことが検出された場合は該検出をACK生成部に通知するパケット監視部と、前記未到着パケットが含まれないことの検出の通知を受けて輻輳制御が実施されるために必要な1個以上のDuplicated ACKの生成を行いネットワークインターフェースに送信する前記ACK生成部と、前記順序性が保たれていないことの検出の通知を受けてダミーパケットを生成し通信プロトコルスタックに送信する前記ダミーパケット生成部から構成されるデータパケットの通信装置。
【請求項１１】
ネットワークインターフェースを監視することで、パケットのシーケンス番号の順序性が保たれているかを監視し、順序性が保たれていないことを検出した場合にはダミーパケットを生成してネットワークインターフェースを通じて通信プロトコルスタックに送信し、さらにパケットの再送の可否を指示するフラグが設定されているときにのみ、前記順序性を保てなくなった原因となったシーケンス番号のパケットが、後続の所定のパケット数以内で受信できないことを確認すると、通信プロトコルにおいて直ちに輻輳制御が実施されるために必要な応答パケットを追加生成し、ネットワークインターフェースに送信するパケット通信装置。
【請求項１２】
ネットワークに接続されたネットワークインターフェースと、ネットワークインターフェースからパケットの送受信を管理し、受信したデータをアプリケーションに送信する通信プロトコルスタックと、ネットワークインターフェースで送受信されるパケットのシーケンス番号の順序性が保たれているかを監視し、順序性が保たれていないことを検出すると、該検出を再送可否判断部に通知するパケット監視部と、一定期間有効な再送可否判断フラグを有し、再送可否判断フラグがセットされていない場合は再送可否判断フラグのセット及びダミーパケット生成部及びACK生成部に通知を行い、再送可否判断フラグがセットされている場合はダミーパケット生成部への通知を行う再送可否判断部と、前記再送可否判断部からの通知を受けるとダミーパケットを生成し、ネットワークインターフェースに送信するダミーパケット生成部と、前記再送可否判断部からの通知を受けると、輻輳制御を実行するために必要な１つ以上のDuplicated ACKを生成し、ネットワークインターフェースに送信するACK生成部から構成されるパケット通信装置。
【請求項１３】
ネットワークインターフェースを監視することで自装置から送信したパケットの損失を検出すると、通信プロトコルにおいて直ちに再送制御及び輻輳制御が実施されるために必要な応答パケットを追加生成し、通信プロトコルスタックに送信することで、パケットを受信側に再送させるパケット通信装置。
【請求項１４】
ネットワークに接続されたネットワークインターフェースと、ネットワークインターフェースを管理し、アプリケーションからデータパケットを送信する通信プロトコルスタックと、ネットワークインターフェースを経由して送受信されるパケットを監視してDuplicated ACKの受信を検出し、その検出をACK生成部に通知するパケット監視部と、前記検出の通知を受けて、再送制御及び輻輳制御が実施されるために必要な1個以上のDuplicated ACKを生成し、ネットワークインターフェースを通じて通信プロトコルスタックに送信するダミーACK生成部から構成されるデータパケットの通信装置。
【請求項１５】
ネットワークインターフェースを監視することで自装置から送信したパケットの損失を検出すると、パケットの再送の可否を指示するフラグが設定されているときにのみ、通信プロトコルにおいて直ちに再送制御及び輻輳制御が実施されるために必要な応答パケットを追加生成し、通信プロトコルスタックに送信することで、パケットを受信側に再送させるパケット通信装置。
【請求項１６】
ネットワークに接続されたネットワークインターフェースと、ネットワークインターフェースを管理し、アプリケーションからデータパケットを送信する通信プロトコルスタックと、ネットワークインターフェースを経由して送受信されるパケットを監視してDuplicated ACKの受信を検出し、その検出を再送可否判断部に通知するパケット監視部と、一定期間有効な再送可否判断フラグを有し、再送可否判断フラグがセットされているかを確認し、再送可否判断フラグがセットされていない場合、再送可否判断フラグをセットし、ACK生成部に通知を行う再送可否判断部と、再送可否判断部からの通知を受信した際に、再送制御及び輻輳制御が実施されるために必要な複数個のDuplicated ACKを生成し、通信プロトコルスタックに送信するACK生成部とから構成されるパケット通信装置。
【請求項１７】
前記通信プロトコルをTCP/IPとすることを特徴とする請求項１から１６に記載のパケット通信装置。
【請求項１８】
前記再送制御が実施されるのに必要な応答パケットとして、TCP/IPにおいて再送制御が行われるために必要なDuplicated ACKを追加生成することを特徴とする請求項５、７、１３、１６に記載のパケット通信装置。
【請求項１９】
通信プロトコルにおける輻輳制御が発生するタイミングをTCP/IPにおけるDuplicated ACKの検出により行うことを特徴とする請求項３、４に記載のパケット通信装置。
【請求項２０】
パケットの送信端末と受信端末の間でのパケットの送受信を中継するパケット中継装置であって、請求項１から１２のいずれか１つのパケット通信装置を第一のパケット通信装置として有し、さらに請求項１３から１６いずれか１つのパケット通信装置を第二のパケット通信装置として有し、前記第一のパケット通信装置により送信側端末からパケットを受信し、前記第二のパケット通信装置により前記受信パケットを受信側端末に送信する、パケット通信装置。
【請求項２１】
前記送信端末から送信されて中継装置で受信される間に損失したパケットが存在したときに、前記第二のパケット通信装置から前記受信側端末に前記損失したパケットの後続のパケットをパケットのシーケンス番号の順序性を保たれるように、シーケンス番号を付替えて送信することを特徴とするパケット中継装置。
【請求項２２】
ネットワークインターフェースが受信したパケットをスヌープすることにより、損失したパケットの再送を待つことなく、前記損失したパケットの後続パケットのデータをアプリケーションに送出するパケット通信方法。
【請求項２３】
ネットワークインターフェースが受信したパケットを、ネットワークインターフェースを通じてのパケットの送受信を管理する通信プロトコルスタックから受信する第一のパケット取得手段と、ネットワークインターフェースの受信パケットをスヌープすることでネットワークインターフェースが受信したパケットを取得する第二のパケット取得手段によりパケットを取得し、前記第一のパケット取得手段と前記第二のパケット取得手段で取得したパケットのシーケンス番号の重複がないように、シーケンス番号が重複して届いたパケットを廃棄した上でパケットのデータをアプリケーションに送出するパケット通信方法。
【請求項２４】
通信プロトコルにおける輻輳制御が発生するタイミングを検出し、該タイミングを検出したときにダミーパケットを生成して通信プロトコルスタックに提供することで、通信プロトコルスタックに前記損失したパケットの後続パケットのデータをアプリケーションに送出させることを特徴とするパケット通信方法。
【請求項２５】
ネットワークインターフェースを経由して送受信されるパケットを監視することで通信プロトコルにおける輻輳制御が発生するタイミングを検出し、該タイミングを検出したときにダミーパケットを生成して、該生成したダミーパケットをネットワークインターフェースを経由して通信プロトコルスタックに提供することで、通信プロトコルスタックに前記損失したパケットの後続パケットのデータをアプリケーションに送出させることを特徴とするパケット通信方法。
【請求項２６】
ネットワークインターフェースを監視することでパケットの損失を検出し、前記パケットの損失を検出すると通信プロトコルにおいて直ちに再送制御及び輻輳制御が実施されるために必要な応答パケットを追加生成し、パケット送信側に送信するパケット通信方法。
【請求項２７】
ネットワークインターフェースを監視することでパケットの損失を検出すると、通信プロトコルにおいて直ちに再送制御及び輻輳制御が実施されるために必要な応答パケットを追加生成し、パケット送信側に送信すると同時に、損失したと判断したパケットのダミーパケットを生成しネットワークインターフェースに送信するパケット通信方法。
【請求項２８】
ネットワークインターフェースを経由して送受信されるパケットを監視してDuplicated ACKの送信を検出し、Duplicated ACKが検出されると、ダミーパケットを生成してネットワークインターフェースを通じて通信プロトコルスタックに送信し、さらに再送制御及び輻輳制御が実施されるために必要な追加のDuplicated ACKの生成を行い、ネットワークインターフェースを通じて、送信側端末に送信することで、損失したパケットの後続のパケットのデータをアプリケーションに提供するのと同時に輻輳制御を発生させるパケット通信方法。
【請求項２９】
ネットワークインターフェースを監視することで、パケットのシーケンス番号の順序性が保たれているかを監視し、順序性が保たれていないことを検出するとダミーパケットを生成してネットワークインターフェースを通じて通信プロトコルスタックに送信し、さらに前記順序性を保てなくなった原因となったシーケンス番号のパケットが、後続の所定のパケット数以内で受信できるか否かを監視し、受信できないことを確認すると、通信プロトコルにおいて直ちに輻輳制御が実施されるために必要な応答パケットを追加生成し、ネットワークインターフェースに送信するパケット通信方法。
【請求項３０】
ネットワークインターフェースを監視することで、パケットのシーケンス番号の順序性が保たれているかを監視し、順序性が保たれていないことを検出するとダミーパケットを生成してネットワークインターフェースを通じて通信プロトコルスタックに送信し、さらにパケットの再送の可否を指示するフラグが設定されているときにのみ、前記順序性を保てなくなった原因となったシーケンス番号のパケットが、後続の所定のパケット数以内で受信できるか否かを監視し、受信できないことを確認すると、通信プロトコルにおいて直ちに輻輳制御が実施されるために必要な応答パケットを追加生成し、ネットワークインターフェースに送信するパケット通信方法。
【請求項３１】
ネットワークインターフェースを監視することで自装置から送信したパケットの損失を検出すると、通信プロトコルにおいて直ちに再送制御及び輻輳制御が実施されるために必要な応答パケットを追加生成し、通信プロトコルスタックに送信することで、パケットを受信側に再送するパケット通信方法。
【請求項３２】
アプリケーションから送信したパケットの損失を、ネットワークインターフェースを経由して送受信されるパケットを監視してDuplicated ACKの受信を検出することで検出し、前記検出の通知を受けて、再送制御及び輻輳制御が実施されるために必要な1個以上のDuplicated ACKを生成し、ネットワークインターフェースを通じて通信プロトコルスタックに送信するパケット通信方法。
【請求項３３】
ネットワークインターフェースを監視することで自装置から送信したパケットの損失を検出すると、パケットの再送の可否を指示するフラグが設定されているときにのみ、通信プロトコルにおいて直ちに再送制御及び輻輳制御が実施されるために必要な応答パケットを追加生成し、通信プロトコルスタックに送信することで、パケットを受信側に再送させるパケット通信方法。
【請求項３４】
前記通信プロトコルをTCP/IPとすることを特徴とする請求項２２から３２に記載のパケット通信方法。
【請求項３５】
前記再送制御が実施されるのに必要な応答パケットとして、TCP/IPにおいて再送制御及び輻輳制御が行われるために必要なDuplicated ACKを追加生成することを特徴とする請求項２６、２７、３０、３２に記載のパケット通信方法。
【請求項３６】
通信プロトコルにおける輻輳制御が発生するタイミングをTCP/IPにおけるDuplicated ACKの検出により行うことを特徴とする請求項２４、２５に記載のパケット通信方法。
【請求項３７】
パケットの送信端末と受信端末の間でのパケットの送受信を中継するパケット中継方法であって、請求項２２から２９のいずれか１つに記載の第一のパケット通信方法により送信側端末からパケットを受信し、前記受信したパケットを受信側端末に請求項３０から３２いずれか１つの第二のパケット通信方法により送信するパケット中継方法。
【請求項３８】
前記送信端末から送信されて中継装置で受信される間に損失したパケットが存在したときに、前記第二のパケット通信方法で前記受信側端末にパケットを送信するときに、前記損失したパケットの後続のパケットをそのシーケンス番号の順序性が保たれるように、シーケンス番号を付替えて送信することを特徴とする請求項３６に記載のパケット中継方法。
【請求項３９】
請求項２２から３５いずれかに記載のパケット通信方法をパケット通信装置に実行させるパケット通信プログラム。
【請求項４０】
請求項３６または３７のいずれかに記載のパケット中継方法をパケット中継装置に実行させるパケット通信プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、パケットの損失に対し、再送を行う通信プロトコル（例えばTCP(Transmission Control Protocol)）を利用した通信に関し、特に映像・音声のようなリアルタイム性を要求されるデータ通信を実現するための通信装置及び通信方法及び通信プログラムに関する。
【背景技術】
【０００２】
近年、送信側から受信側にデータをパケットに分割して送信し、受信側でデータに再現して再生する通信アプリケーションが増加している。例えば、インターネット上でのIP電話(VoIP)や、TV会議、映画やライブの映像配信などが挙げられる。このようなアプリケーションでは、送信側からデータがパケットとして送信されてから一定時間以内に受信側で再生されることが、通信アプリケーションとしての品質を高く保つ、つまり音声を途切れなく再生する、または画像を途切れなく再送するために重要となる。つまり、このような通信アプリケーションにおいては、パケットが送出されてからデータを再生するまでの遅延時間をできるだけ小さくすることが求められる。以下では、このようなパケットが送出されてからデータを再生するまでの遅延時間をできるだけ小さくする必要があることを、リアルタイム性を必要する、という表現で表すこととする。
【０００３】
このようなリアルタイム性を必要とするアプリケーションにおける通信プロトコルとしては、再送制御を伴わないプロトコルが用いられることが多い。具体的な通信プロトコルの１つとしては、UDP(User Datagram Packet)を挙げることができる。UDPはパケットを損失なく転送するための信頼性よりも、軽量で高速であることを目的とする通信プロトコルである。送信したパケットが、受信側の端末等に到着する前に損失した場合（パケットロスが発生した場合）でも、その損失したパケット（ロスパケット）の再送を行わない。このため、一部受信側で再現できないデータが存在することを許容すれば、再送に伴う遅延が発生しない。
【０００４】
しかし、通信アプリケーションを利用するユーザの環境によっては、再送制御を伴わないプロトコルを用いることができない場合がある。例えば、企業、大学、家庭ネットワークにおいて外部からのパケットの遮断やフィルタリング等といったセキュリティ上の理由により、ファイアウォールやプロキシを設置している場合を挙げることができる。
【０００５】
このような環境で前述のアプリケーションのデータをファイアウォールやプロキシを越えて通信する方法として、ファイアウォールやプロキシを通過するHTTP(Hyper Text Transfer Protocol)を利用して、データパケットをやりとりすることで、コミュニケーションを実現する方法が特許文献1に開示されている。ここで、HTTPは、再送制御を伴うTCPの上に規定される通信プロトコルである。
【０００６】
【特許文献１】特開2001-86163号公報（第４頁〜８頁、第１図）
【非特許文献１】Sumitha Bhandarkar、  "A Study of the Growth and Development of Video Streaming over the Internet"、  [平成16年8月26日検索]、インターネット＜http://students.cs.tamu.edu/sumitha/courses/cpsc689-606/hw5.doc＞
【発明の開示】
【発明が解決しようとする課題】
【０００７】
リアルタイム性を必要とするアプリケーションにおいて、再送制御を伴うプロトコルを用いた場合に発生する問題を、TCPを例として図31を参照して説明する。
【０００８】
図31はTCPの再送制御の処理シーケンスの一例である。送信側はシーケンス番号を付与し、データパケットを送信する。受信側はデータパケットを受信すると、受信したことを送信側に通知（応答）するために、シーケンス番号を付与した“ACK”情報を含んだパケット(以下略してACK）を送信し、同時に、アプリケーションに対して受信したデータを渡す。
【０００９】
例えば、シーケンス番号1（図31においては＃１と表記）のデータパケットを受信すると(3101)、受信側はシーケンス番号１のACKを送信側に送出し(3102)、同時にそのデータパケットのデータをアプリケーションに対して渡す(3103)。
【００１０】
ここで、シーケンス番号2のパケットが損失したとする(3104)。受信側はパケットが届いていないので何の応答も返さない。TCPでは後述するように同一シーケンス番号を含むACKをあらかじめ決められた回数だけ連続して受信するまでは、パケットロスの発生を認識しないので、続いて、送信側はシーケンス番号3のパケットを送信する(3105)。受信側では、シーケンス番号3のパケットを受信した際、シーケンス番号2のパケットが届いていないことを検出し、送信側にその内容を伝える。具体的には、受信側は、シーケンス番号1までのパケットを受け取っていることを伝えるACKを送信する(3106)。シーケンス番号1までのパケットを受け取っていることを伝えるACKは、 3102でも既におり、2回目の送信であることから、この3106で送信されるACKは“Duplicated ACK”と呼ばれる（図31においてはDup ACKと表記する）。なお、一般的にACK とDuplicated ACKで実体的な差はないが、以下では2回目以降のACKの送信であることを表現するために、ACK とDuplicated ACKとをできるだけ使い分けて記載するものとする。
【００１１】
3105で受信したシーケンス番号3のデータは、アプリケーションには渡らず、TCPのプロトコルスタックに一時蓄積される。送信側はこのあと、シーケンス番号4、シーケンス番号5のデータパケットを送信し(3107, 3109)、受信側はシーケンス番号2のパケットが届いていないため、同様にシーケンス番号１のDuplicated ACKを送信し(3108, 3110)、シーケンス番号4及びシーケンス番号5のデータパケットをTCPのプロトコルスタックに一時蓄積する。TCPでは、送信側でDuplicated ACKを、パラメータとして設定されている回数、一般的な実装では 3回、連続で受信すると、パケットロスが発生したことを検出し、Duplicated ACKで指定されているシーケンス番号の次のパケットを再送する制御が行われる。ここでは、シーケンス番号2のパケットが再送される(3111)。受信側では、3111でシーケンス番号2のパケットを受信すると、シーケンス番号5までのデータを受け取っていることになるので、シーケンス番号5を付与したACKを送信する(3112)。同時にアプリケーションに対して、シーケンス番号2、3、4、5のパケットのデータを渡す(3113〜3116)。
【００１２】
この例に示されるように、パケットロスが発生すると、受信側では損失パケットが再送されるまで受信データがアプリケーションに渡されないので、再送に伴う遅延が発生するという課題がある。この例では、3104でのシーケンス番号2のパケットロスに伴い、3117に示される遅延時間が発生している。アプリケーションにおいての遅延時間の許容範囲が3117で示される時間未満の場合は、アプリケーションの実行に障害を来たすことになる。例えば、映像・音声の再生を行うアプリケーションの場合、再生データが再生時間に間に合わなくなり、再生が途切れる症状が発生する可能性がある。
【００１３】
このような課題に対して、映像・音声の再生可能時間を閾値として設定し、その閾値以内に届かなかったデータパケットに対して、ダミーのACKを送信し、あたかも受信していないデータパケットを受信したかのように送信側にACKの応答を返すことにより、TCPの再送制御を行わせないようにし、再送処理の無駄を省く方法も提案されている（例えば非特許文献１）。この場合、受信側端末では、再送制御を行わなかったデータパケットは受信されないが、後続のパケットは受信されるため、アプリケーションには、再送制御を行わなかったデータパケットの後続のデータパケットのデータは渡すことが可能となる。これにより、パケットの再送に伴う遅延を抑制することができる。
【００１４】
しかし、再送制御を伴うプロトコルでは、再送制御と連携した輻輳制御が行われていることが多い。例えばTCPでは再送制御に加え、輻輳ウインドウサイズを調整することによる輻輳制御が行われている。輻輳制御では、データ送信側が再送を行う際に送信レートを低く押さえることで、ネットワークの混雑を可能な限り解消しようとする機構である。例えばTCPでは、Duplicated ACKを3回続けて受信した場合に、再送処理と同時に一度に送出するパケット数を低く押さえることで、ネットワークの混雑を回避しようとする処理を行う。
【００１５】
この制御は、パケットロスが発生する原因として、ネットワークの混雑を仮定し、送信レートを低く押さえること、つまり輻輳ウインドウサイズを小さくすることでネットワークの混雑を少しでも早く解消させることを目的としている。
【００１６】
非特許文献1で提案されている方法では、再送制御を抑制する効果があるものの、送信側が輻輳制御を行わなくなるため、ネットワークが混雑している場合、その混雑度をますます加速させてしまうという課題が内在している。
【００１７】
本発明の目的は、再送制御に伴うデータ受信までの遅延の削減と、輻輳制御を両立させて実現することができるパケット通信装置、パケット通信方法、およびパケット通信プログラムを提供することにある。この手段により、リアルタイム性を必要とするアプリケーションを、再送制御と輻輳制御の機能を持つプロトコルを用いて、再送制御に伴う遅延の影響を受けずに実行することを可能ならしめると同時にネットワーク全体としての適切な輻輳制御を行わしめることができる。
【課題を解決するための手段】
【００１８】
かかる目的を達成するために、本発明の第一の通信装置は、パケットを受信するネットワークインターフェースと、ネットワークインターフェースからパケットを受け取りデータ受信部に渡す通信プロトコルスタックと、ネットワークインターフェースが受信したパケットをスヌープしてデータ受信部に渡すスヌープパケット出力部と、通信プロトコルスタック及びスヌープパケット出力部からパケットのデータを受け取り、そのパケットデータの重複がないように、つまり同じシーケンス番号のパケットのデータが重複することがないように、その受け取ったデータをアプリケーションに提供するデータ受信部から構成されることを特徴とする。
【００１９】
また、本発明による第二の通信装置は、パケットを受信するネットワークインターフェースと、ネットワークインターフェースからパケットを受け取りアプリケーションに提供する通信プロトコルスタックと、ネットワークインターフェースが受信したパケットを監視し、輻輳制御が送信側で実行されることになる回数分のDuplicated ACKが送信されるタイミングを受信側のネットワークインターフェース部において監視し、そのタイミングをダミーパケット生成部に通知するパケット監視部と、その通知をトリガーとしてダミーパケットを生成しネットワークインターフェースに送出するダミーパケット生成部とから構成されることを特徴とする。
【００２０】
また、本発明による第三の通信装置は、パケットを受信するネットワークインターフェースと、ネットワークインターフェースからパケットを受け取りアプリケーションに提供する通信プロトコルスタックと、ネットワークインターフェースが受信するパケットを監視し、Duplicated ACKが送信されるタイミングを監視し、そのタイミングでダミーのDuplicate ACKを１つ以上発生し、ネットワークインターフェース部に送出するACK生成部から構成されることを特徴とする。
【００２１】
また、本発明による第四の通信装置は、パケットを送受信するネットワークインターフェースと、ネットワークインターフェースからパケットを受け取りアプリケーションに提供する通信プロトコルスタックと、ネットワークインターフェースが受信したパケットを監視し、受信したパケットがDuplicate ACKであった場合に、ダミーパケット生成部及びACK生成部に通知を行うパケット監視部と、パケット監視部からの通知を受け、1つ以上のDuplicated ACKを生成し、ネットワークインターフェース部に送出するACK生成部と、また、パケット監視部からの通知を受け、ロスパケットのダミーパケットを生成し、ネットワークインターフェース部を通じて、通信プロトコルに送信するダミーパケット生成部から構成されることを特徴とする。
【００２２】
また、本発明による第五の通信装置は、パケットを受信するネットワークインターフェースと、ネットワークインターフェースからパケットを受け取り、アプリケーションに提供する通信プロトコルスタックと、ネットワークインターフェースが送受信したパケットを監視し、シーケンス番号の順序性が崩れたときにダミーパケット生成部に通知し、さらに順序性が崩れたパケットが、次に連続して到着する複数個のパケットに含まれるかどうかを監視し、その中に順序性が崩れたパケットが到着しない場合、 ACK生成部に通知するパケット監視部と、パケット監視部からの通知を受け、ダミーパケットを生成し、ネットワークインターフェースに送信するダミーパケット生成部と、パケット監視部からの通知を受け、複数個のDuplicated ACKを生成し、ネットワークインターフェースに送信するACK生成部と、から構成されることを特徴とする。
【００２３】
また、本発明による第六の通信装置は、パケットを受信するネットワークインターフェースと、ネットワークインターフェースからパケットを受け取り、アプリケーションに提供する通信プロトコルスタックと、ネットワークインターフェースが送受信したパケットを監視し、シーケンス番号の順序性が崩れたときに、再送可否判断部に通知を行うパケット監視部と、一定期間有効な再送可否判断フラグを確認し、再送可否判断フラグがセットされていない場合、再送可否判断フラグのセットを行い、同時にダミーパケット生成部及びACK生成部に通知を行い、再送可否判断フラグがセットされている場合、ダミーパケット生成部に通知を行う再送可否判断部と、再送可否判断部からの通知を受け、ダミーパケットを生成し、ネットワークインターフェースに送信するダミーパケット生成部と、再送可否判断部からの通知を受け、複数のDuplicated ACKを生成し、ネットワークインターフェースに送信するACK生成部と、から構成されることを特徴とする。
【００２４】
また、本発明による第七の通信装置は、パケットを受信するネットワークインターフェースと、ネットワークインターフェースからパケットを受け取り、アプリケーションに提供する通信プロトコルスタックと、ネットワークインターフェースが送受信したパケットを監視し、Duplicated ACKの受信を検出した際、ACK生成部に通知するパケット監視部と、パケット監視部からの通知を受け、複数個のDuplicated ACKを生成し、通信プロトコルスタックに送信するACK生成部と、から構成されることを特徴とする。
【００２５】
また、本発明による第八の通信装置は、パケットを受信するネットワークインターフェースと、ネットワークインターフェースからパケットを受け取り、アプリケーションに提供する通信プロトコルスタックと、ネットワークインターフェースが送受信したパケットを監視し、Duplicated ACKの受信を検出すると、再送可否判断部に通知を行うパケット監視部と、一定期間有効な再送可否判断フラグがセットされているかを確認し、再送可否判断フラグがセットされていない場合、再送可否判断フラグをセットし、ACK生成部に通知を行う再送可否判断部と、再送可否判断部からの通知を受信した際に、複数個のDuplicated ACKを生成し、通信プロトコルスタックに送信するACK生成部と、から構成されることを特徴とする。
【発明の効果】
【００２６】
本発明の第一の効果は、リアルタイム性を要求するアプリケーションにおいて再送制御を伴う通信プロトコルでデータを送受信した場合に、パケットロス発生時の再送制御によって発生するアプリケーションでのデータ再生遅延を削減できることである。
【００２７】
その理由は、データ送受信時にパケットロスが発生した場合も、損失したパケットの再送制御による遅延を抑制する制御を行うからである。
【００２８】
本発明の第二の効果は、リアルタイム性を要求するアプリケーションにおいて再送制御と輻輳制御を伴う通信プロトコルでデータを送受信した場合に、輻輳制御を損なうことなく、再送制御に伴うデータを再現するまでの遅延を削減できることである。
【００２９】
その理由は、再送制御による遅延を抑制する制御に行う場合においても、輻輳制御に必要なパケットを適切に送出することで輻輳制御まで抑制しないようにしているからである。
【００３０】
本発明の第三の効果は、通信プロトコルに修正を加えることなく、上記第一、または第二の効果を実現できることである。同一端末上で同じ通信プロトコルを利用している他のアプリケーションに影響を与えることなく、上記第一、または第二の効果を得ることができる。
【００３１】
その理由は、再送制御による遅延の抑制や、輻輳制御に必要なパケットの送出を、ネットワークインターフェースを介して通信プロコルスタックに対して行うようにすることで、通信プロトコルスタックと連動はするものの、独立の機能部として実現できているためである。
【発明を実施するための最良の形態】
【００３２】
以下、本発明を実施するための実施の形態について図面を参照しながら説明を行う。図1は、本発明の通信装置の実施の形態の全体の接続関係を示す構成図である。送信側端末110と受信側端末120がネットワーク130を介して接続されている。送信側端末110は、ネットワーク130にパケットを送信する送信側通信装置111と、送信側通信装置111を通じてネットワーク130にパケットのデータを送り込む送信側アプリケーション112から構成されている。受信側端末120は、ネットワーク130からパケットを受信する受信側通信装置121と、受信側通信装置121からパケットのデータを取り込む受信側アプリケーション122から構成されている。なお、送信側端末110と受信側端末120の送信側、受信側の役割は説明のために便宜的に固定しているものであり、実際は随意役割を入れ替え、相互にデータを送受するとして問題ない。
【００３３】
（第１の実施の形態）
図2は、本発明に係る受信側通信装置の第1の実施の形態の構成図である。図2を参照すると、本発明に係る受信側通信装置（以下、通信装置200）は、ネットワークインターフェース201、データ受信部202、通信プロトコルスタック203、スヌープパケット出力部204を含む。これらの手段は次のように動作する。
【００３４】
ネットワークインターフェース201は図1のネットワーク130と接続し、パケットの送受信を行う。データ受信部202は、通信プロトコルスタック203及びスヌープパケット出力部204からパケットデータを受け取り、パケットデータの重複がないように、重複して届いたパケットを廃棄する。図１の受信側アプリケーション122はデータ受信部202からパケットデータを受信する。通信プロトコルスタック203はネットワークインターフェース201を通じてのパケットの送受信を管理する。スヌープパケット出力部204は、ネットワークインターフェースから受信パケットをスヌープする。ここで行われるスヌープ処理とは、ネットワークインターフェースが受信する特定のパケットを複製する処理を指す。以降、このフローを繰り返す。
【００３５】
なお、通信プロトコルスタック203は、図29に表されるように、ネットワークインターフェース側のプロトコルスタック2031と、データ受信部側のインターフェースとなるソケットインターフェース2032として多層的に実現することもできる。また、スヌープパケット出力部204についても、図30に示されるように、ネットワークインターフェース側のパケットスヌープ部2041と、データ受信部側のインターフェースとなるスヌープインターフェース2042のように階層的に実装することもできる。なお、このことは後述する第２から第８の実施の形態における通信プロトコルスタック、パケット監視部においても同様である。
【００３６】
次に図2の構成図および図3のフローチャートを参照して、本実施の形態の全体の動作について詳細に説明する。
【００３７】
通信装置200のスヌープパケット出力部204は、ネットワークインターフェース201から到着パケットをスヌープする(ステップS101)。データ受信部202は、スヌープパケット出力部204からパケットデータを受け取る（ステップS102)。またデータ受信部202は、ステップS102に並行して、通信プロトコルスタック203からパケットデータを受け取る(ステップS111)。データ受信部202は、図2のS102 において受け取ったパケットデータとの重複がないように、重複して受け取ったものがあればパケットデータの片方を廃棄する(ステップS103)。図示しないアプリケーションは、データ受信部202からパケットデータを受け取り、データの再現を行う(ステップS104)。
【００３８】
次に本発明の実施の形態の動作を図4のシーケンス図に示される、通信プロトコルとしてTCP/IPを採用した場合の一例を基にして具体的に説明する。以下では、輻輳制御及び再送制御の実施を判断するためのDuplicated ACKの受信回数を、TCP/IPで一般的に採用されている3回としている。なお、以下の記載、および図において、「＃  L」はシーケンス番号Lのパケットを表し、「ACK M」はシーケンス番号Mが付されたACKを表し、「Dup ACK N」はシーケンス番号Nが付されたDuplicated ACKを表すものとする。
【００３９】
通信装置のネットワークインターフェース201は、図1におけるネットワーク130を通じて送信側の端末110からシーケンス番号1のデータパケットを受信する(401)。通信プロトコルスタック203はデータパケットをネットワークインターフェース201から取得し(402)、シーケンス番号１の[ACK 1]をネットワークインターフェース201に送出する(403)。ネットワークインターフェース201は、送信側の端末110に[ACK 1]を送信する(408)。通信プロトコルスタック203は、パケットデータをデータ受信部に送信する(405)。通信プロトコルスタック203がパケットを取得するのに先行、または並行して、スヌープパケット出力部204は、データパケットをネットワークインターフェース201からスヌープして(404)、データ受信部202に送信する(406)。データ受信部202は、シーケンス番号1のデータパケットを重複して取得したことから、そのうち１つを廃棄して、405または406で受信したどちらかのパケットデータのみを図示しないアプリケーションに送信する(407)。
【００４０】
次にシーケンス番号2のパケットが損失し(409)、続いて送信側端末110からはシーケンス番号3のパケットがネットワークインターフェース201に到達したとする(410)。通信プロトコルスタック203はデータパケットをネットワークインターフェース201から取得し(411)、まだシーケンス番号2のデータパケットを受信していないことから、 Duplicated ACKと呼ばれる [Dup ACK 1]をネットワークインターフェース201に送出する(412)。ネットワークインターフェース201は、送信側端末110に[Dup ACK 1]を送信する(416)。通信プロトコルスタック203は、シーケンス番号2のデータパケットを受信していないことからパケットデータをデータ受信部202に送信することはしない。通信プロトコルスタック203がパケットを取得するのに先行、または並行して、スヌープパケット出力部204は、データパケットをネットワークインターフェース201からスヌープして(413)、データ受信部202に送信する(414)。データ受信部202は、414でスヌープパケット出力部204から受信したパケットデータを図示しないアプリケーションに送信する(415)。
【００４１】
シーケンス番号4、シーケンス番号5のパケットの到達においても、シーケンス番号3のパケットの到達時と同様の動作が繰り返され、送信側端末110には、２つのDuplicated ACKが到達する(418,420)。また、データ受信部202からアプリケーションには、シーケンス番号4のパケットデータ、シーケンス番号5のパケットデータが送出される(417,419)。
【００４２】
送信側端末110では、輻輳制御のトリガーとなる連続して3つ目のDuplicated ACKが到達したとき(420)に、輻輳制御が実施される。また、同時にシーケンス番号2のパケットが損失したことが検知され、シーケンス番号2のパケットを再送する(421)。ネットワークインターフェースがシーケンス番号2のパケットを受信すると、通信プロトコルスタック203はパケットを取得し(422)、[ACK 5]を生成してネットワークインターフェース201に送出する(423)。ここで、通信プロトコルスタックは、シーケンス番号5までのパケットを受信完了したことになるため、ACKにはシーケンス番号5が付される。通信プロトコルスタック203は、シーケンス番号2から5のデータパケットを、データ受信部202に送出する(425〜428)。通信プロトコルスタックがシーケンス番号2のパケットを取得するのに先行、または並行して、スヌープパケット出力部204は、データパケットをネットワークインターフェース201から受信して(424)、データ受信部202に送信する(429)。データ受信部202は、シーケンス番号5までのデータパケットを既に取得していることから、425から428で受信したシーケンス番号2から5のパケットを廃棄する。
【００４３】
なお、上記例では、シーケンス番号2のパケットのデータがアプリケーションに渡されないことになるので、アプリケーションの側でそのようなパケットの損失に対応している必要はある。例えば、映像や音声のようなアプリケーションでは、損失したパケットの前後に受信したデータから損失したパケットのデータを予測する技術を有する場合が多く、このような技術を活用することで対応が可能である。
【００４４】
次に、本実施の形態の効果について説明する。本実施の形態では、通信プロトコルスタックの再生制御のために損失したパケットが再送されるまで、アプリケーションにデータを提供できない場合であっても、ネットワークインターフェースから、通信プロトコルスタックが受信するデータを、直接スヌープパケット出力部がスヌープし、データ受信部202を通じて受け取ることで、損失したパケットが再送されるより前に、後続のパケットを受け取ることが可能である。図4の例では、440で示される時間の遅延を削減することが可能となる。
【００４５】
これにより、パケットロスによる再送制御の影響を受けることなく、損失したパケット以降のパケットを連続的に受け取ることが出来る。アプリケーションが映像や音声等を再現するものの場合を例とすると、映像や音声を途切れることなく再生することが可能となる。
【００４６】
さらに本実施の形態では、スヌープパケット出力部のスヌープは、通信プロトコルの再送制御には影響を与えていないため、輻輳制御は実行される。リアルタイム性を要求するアプリケーションにおいて再送制御と輻輳制御を伴う通信プロトコルでデータを送受信した場合に、輻輳制御を損なうことなく、再送制御に伴うデータを再現するまでの遅延を削減できる。
【００４７】
また、本実施の形態では、スヌープパケット出力部が、通信プロトコルスタックを介さずに直接ネットワークインターフェースからスヌープしている。つまり通信プロトコルに修正を加える必要がない。通信プロトコルは、コンピュータのオペレーションシステムの一部（カーネル）として実装されていることも多く、修正を施すことが困難なケースも多いが、本実施の形態の構成を取れば、通信プロトコルに手を入れる必要がない。
【００４８】
（第2の実施の形態）
次に本発明の第2の実施の形態について、図面を参照して説明する。
【００４９】
図5は、本発明に係る受信側通信装置の第2の実施の形態の構成図である。図5を参照すると、本発明に係る受信側通信装置（以下、通信装置500）は、ネットワークインターフェース501、通信プロトコルスタック502、パケット監視部503、ダミーパケット生成部504を含む。これらの手段は次のように動作する。ネットワークインターフェース501は、図1のネットワーク130と接続し、パケットの送受信を行う。通信プロトコルスタック502はネットワークインターフェース501を通じたパケットの送受信を管理する。受信したパケットは通信プロトコルの制御にしたがって図1に示す受信側のアプリケーション122に送られる。なお、本実施の形態では、データの重複受信を行わない構成としたので、実施の形態１における重複したデータの削除を行うデータ受信部は構成として不要となる。
【００５０】
パケット監視部503は、ネットワークインターフェース501を経由して送受信されるパケットを監視し、Duplicated ACKの送信を検出する。そのDuplicated ACKが通信プロトコルにおける輻輳制御のトリガーとなるもの、つまりそのDuplicated ACKが送信側で受信された場合に、輻輳制御を起こすACKである場合、パケット監視部503はダミーパケット生成部504にダミーパケットの生成を要求する。ダミーパケット生成部504は、ダミーパケットを生成し、ネットワークインターフェース501を通じて通信プロトコルスタック502に送信する。ここで生成されるダミーパケットとは、損失したパケットに含まれるシーケンス番号等のヘッダ情報が同一であるパケットである。パケットのデータ部分は空であってもよいし、前回に受信したデータの複製データとするなどしても問題ない。
【００５１】
次に図5、および図6を参照して、本実施の形態の全体の動作について詳細に説明する。図6は、本発明の第２の実施の形態に係る通信装置の動作を示すフローチャートである。通信装置500のパケット監視部503は、ネットワークインターフェース501を経由して送受信されるパケットを監視する (図6のS201)。
【００５２】
パケット監視部503は、送受信されるパケットからDuplicated ACKの送信を検出し、そのDuplicated ACKが通信プロトコルにおける輻輳制御のトリガーとなるもの、つまりそのDuplicated ACKが送信側端末で受信された場合に、輻輳制御を起こすACKであるかを判断する(図6のS202)。輻輳制御のトリガーとなる予め定められた回数のDuplicated ACKが検出されるまで、S201、S202を繰り返す。
【００５３】
輻輳制御を起こすDuplicated ACKであると判断された場合、ダミーパケット生成部504に通知が行われ、ダミーパケット生成部504がダミーパケットの生成を行い、ネットワークインターフェース501を通じて通信プロトコルスタック502に送信する(図6のS203)。ここで、輻輳制御を起こすDuplicated ACKが検出されるとは、通信プロトコルがTCP/IPである場合、同一シーケンス番号が付加されたDuplicated ACKの3回目の送信が検出された場合が相当する。以降、S201からS203を繰り返す。
【００５４】
次に本発明の実施の形態の動作を図7のシーケンス図に示される、通信プロトコルとしてTCP/IPとした場合の一例を基にして具体的に説明する。以下では、輻輳制御及び再送制御の実施を判断するためのDuplicated ACKの受信回数を、TCP/IPで一般的に採用されている3回としている。
【００５５】
通信装置のネットワークインターフェース501は、図１に示すネットワーク130を通じて送信側端末110から送信されるシーケンス番号1のデータパケットを受信する(701)。通信プロトコルスタック502はデータパケットをネットワークインターフェース501から取得し(702)、シーケンス番号１の[ACK 1]をネットワークインターフェース501に送出する(703)。ネットワークインターフェース501は、送信側端末110に[ACK 1]を送信する(705)。通信プロトコルスタック502は、シーケンス番号1のパケットデータを図1に示す受信側アプリケーション122に送信する(704)。
【００５６】
次にシーケンス番号2のパケットが損失し(706)、続いて送信側端末110からはシーケンス番号3のパケットがネットワークインターフェース501に到達したとする(707)。通信プロトコルスタック502はデータパケットをネットワークインターフェース501から取得し(708)、まだシーケンス番号2のデータパケットを受信していないことから、シーケンス番号１までしか受信していないことを意味する、Duplicated ACKと呼ばれる[Dup ACK 1]をネットワークインターフェース501に送出する(709)。ネットワークインターフェース501は、送信側端末110に[Dup ACK 1]を送信する(710)。通信プロトコルスタック502は、シーケンス番号2のデータパケットを受信していないことからシーケンス番号3のパケットデータを受信側アプリケーション122に送信することはしない。
【００５７】
シーケンス番号4、シーケンス番号5のパケットの到達においても、シーケンス番号3のパケットの到達時と同様の動作が繰り返され、送信側端末110には、Duplicated ACK [ACK 1]が到達する(711〜718)。
【００５８】
パケット監視部503は輻輳制御のトリガーとなる連続して3つ目のDuplicated ACKを検出すると（718, 719）、ダミーパケット生成部504にダミーパケットの生成を要求する(720)。ダミーパケット生成部504は、シーケンス番号2のダミーパケットを生成し、ネットワークインターフェース501を通じて、通信プロトコルスタック502に送信する(721,722)。通信プロトコルスタック502は、シーケンス番号2のダミーパケットを受信側アプリケーション122に送信する（723）すると同時に、既に受け取っているシーケンス番号3から5のパケットを受信側アプリケーション122に送信する（724〜726）。
【００５９】
また、通信プロトコルスタック502は、シーケンス番号5までのパケットを受信できたことから、シーケンス番号5のACKを送出する(728, 729)。
【００６０】
送信側端末110では、輻輳制御のトリガーとなる連続して3つ目のDuplicated ACKが718で到達したときに、輻輳制御が働く。同時にシーケンス番号2のパケットが損失したことが検知され、シーケンス番号2のパケットが再送される(727)。ネットワークインターフェース501がこの再送パケット（シーケンス番号2）を受信し(727)、通信プロトコルスタック502はパケットを取得するが(730)、これまでにシーケンス番号5までのパケットを受信完了したことになるため、この再送パケット（シーケンス番号2）の受信において、シーケンス番号5を付したACKを生成してネットワークインターフェース501に送出する(731)。通信プロトコルスタック502は、重複して受け取ったパケット、ここでの例ではシーケンス番号2のデータパケット、については廃棄を行う(733)。
【００６１】
次に本実施の形態の効果について説明する。
【００６２】
本実施の形態では、通信プロトコルスタックの再生制御のために損失したパケットが再送されるまで、アプリケーションにデータを提供できない場合であっても、ダミーパケット生成部がダミーパケットを生成し、通信プロトコルに提供することで、損失したパケットが再送されるより前に、パケットを受け取ることが可能である。図7の例では、受信側アプリケーションにシーケンス番号2のダミーパケットのデータが到着する時刻(723)から、従来の方法で受信側アプリケーションにシーケンス番号2のパケットのデータが届く時刻(741)の間の時間分の遅延を削減することが可能となる。つまり、おおよそ、再送制御のトリガーとなるDuplicated ACKの送出から、ロスパケットが再送されるまでの時間を削減することが可能となり、パケットロスによる再送制御の影響を軽減することが出来る。アプリケーションが映像や音声等を再現する場合を例とすると、映像や音声を途切れることなく再生することが可能となる。
【００６３】
さらに本実施の形態では、ダミーパケットの生成を輻輳制御のトリガーとなるDuplicated ACKが送信されるのを待ってから行うため、通信プロトコルの輻輳制御に影響を与えていない。そのため、リアルタイム性を要求するアプリケーションにおいて再送制御と輻輳制御を伴う通信プロトコルでデータを送受信した場合に、輻輳制御を損なうことなく、再送制御に伴うデータを再現するまでの遅延を削減できる。
【００６４】
また、本実施の形態では、パケット監視部が、通信プロトコルスタックを介さずに直接ネットワークインターフェースを監視している。つまり通信プロトコルに修正を加える必要がない。通信プロトコルは、コンピュータのオペレーションシステムの一部（カーネル）として実装されていることも多く、修正を施すことが困難なケースも多いが、本実施の形態の構成を取れば、通信プロトコルに手を入れる必要がない。
【００６５】
（第３の実施の形態）
次に本発明の第3の発明の実施の形態について、図面を参照して説明する。
【００６６】
図8は、本発明に係る受信側通信装置の第3の実施の形態の構成図である。図8を参照すると、本発明に係る受信側通信装置（以下、通信装置800）は、ネットワークインターフェース801、通信プロトコルスタック802、パケット監視部803、ACK生成部804を含む。
【００６７】
これらの手段は次のように動作する。ネットワークインターフェース801は、図1に示すネットワーク130と接続し、パケットの送受信を行う。通信プロトコルスタック802はパケットの送受信を管理し、通信プロトコルの動作にしたがってパケットのデータを図1に示す受信側アプリケーション122に送る。パケット監視部803は、ネットワークインターフェース801を経由して送受信されるパケットを監視し、Duplicated ACKの送信を検出する。Duplicated ACKの送信を検出するとパケット監視部803は、ACK生成部804にダミーのDuplicatd ACKの生成を要求する。ACK生成部804は輻輳制御を発生させるために必要な個数のDuplicated ACKを生成し、ネットワークインターフェース801を通じて、図1に示す送信側端末110に送信する。
【００６８】
次に図8の構成図、および図9のフローチャートを参照して、本実施の形態の全体の動作について詳細に説明する。通信装置800のパケット監視部803は、ネットワークインターフェース801を経由して送受信されるパケットを監視する (図9のS301)。パケット監視部803は、送受信されるパケットからDuplicated ACKの送信を検出する(図9のS302)。Duplicated ACKが検出されるまで、S301、S302を繰り返す。Duplicated ACKが検出された場合、パケット監視部803からダミーACK生成部804に通知が行われ、ダミーACK生成部804は、輻輳制御及び再送制御を発生させるために必要な個数のDuplicated ACKの生成を行い、ネットワークインターフェース801に送信する(図9のS303)。以降、ステップS301からステップS303を繰り返し行う。
【００６９】
次に本発明の実施の形態の動作を図10のシーケンス図に示される、通信プロトコルとしてTCP/IPとした場合の一例を基にして具体的に説明する。再送制御及び輻輳制御は、同一シーケンス番号のDuplicated ACKを3つ受け取ったときに発生すると設定されているとする。
【００７０】
通信装置のネットワークインターフェース801は、図1で示すネットワーク130を通じて送信側端末110から送出されてきたシーケンス番号1のデータパケットを受信する(1001)。通信プロトコルスタック802はデータパケットをネットワークインターフェース801から取得し(1002)、シーケンス番号１の確認応答である[ACK 1]をネットワークインターフェース801に送出する(1003)。ネットワークインターフェース801は、送信側端末110に[ACK 1]を送信する(1005)。通信プロトコルスタックは、シーケンス番号1のパケットデータを受信側アプリケーション122に送信する(1004)。
【００７１】
次にシーケンス番号2のパケットが損失(1006)、続いて送信側端末110からはシーケンス番号3のパケットがネットワークインターフェース801に到達したとする(1007)。通信プロトコルスタック802はシーケンス番号3のデータパケットをネットワークインターフェース801から取得し(1008)、まだシーケンス番号2のデータパケットを受信していないことから、シーケンス番号１のDuplicated ACKと呼ばれる[Dup ACK 1]をネットワークインターフェース801に送出する(1009)。ネットワークインターフェース801は、送信側端末110に[Dup ACK  1]を送信する(1010)。通信プロトコルスタック802は、シーケンス番号2のデータパケットを受信していないことからシーケンス番号3のパケットのデータを受信側アプリケーション122に送信することはしない。
【００７２】
ここで、パケット監視部803は、ネットワークインターフェース801からDuplicated ACKが送出されたこと(1009, 1010の処理)を検出すると(1011)、ACK生成部804に、Duplicated ACKの生成を要求する（1012）。ACK生成部804は、検出したDuplicated ACKに加えて幾つのDuplicated ACKが送信側端末に届けば、再送制御及び輻輳制御が発生するかを算出し、その算出した数の分だけのダミーのDuplicated ACKを生成する。ここでの例では、３つのDuplicated ACKが届くと、再送制御及び輻輳制御が発生することから、2個のダミーのDuplicated ACKを生成し、送出することになる(1013〜1016)。
【００７３】
送信側端末110では、再送制御のトリガーとなるDuplicated ACKが到達したとき(1016)に、シーケンス番号2のパケットが損失したことが検知され、シーケンス番号2のパケットが再送される(1017)。また、再送制御と同時に輻輳制御も働く。ネットワークインターフェース801がシーケンス番号2のパケットを受信すると、通信プロトコルスタック802はパケットを取得し(1018)、これまでにシーケンス番号3までのパケットを受信完了したことになるため、このシーケンス番号3を付したACKを生成してネットワークインターフェース801を通じて、送信側端末110に送出する(1021,1022)。通信プロトコルスタック802は、既に受信完了しているシーケンス番号3までのパケットのデータを、受信側アプリケーション122に送信する(1019, 1020)。
【００７４】
次に本実施の形態の効果について説明する。本実施の形態では、パケットが損失したことを、パケット監視部がネットワークインターフェース部においてDuplicated ACKを監視することで検出すると、直ちに再送制御が実施されるよう、ACK生成部が複数個のDuplicated ACKを追加生成し送信側端末に送信することで、従来よりも早期にロスパケットの再送が実行される。このため、ロスパケットが再送されるまでの時間を従来よりも削減できる。映像や音声等を再現するアプリケーションの場合を例とすると、映像や音声を途切れることなく再生することが可能となる。
【００７５】
さらに本実施の形態では、Duplicated ACKの送信を促進する方向であることから、通信プロトコルの輻輳制御を抑制しない。そのため、リアルタイム性を要求するアプリケーションにおいて再送制御と輻輳制御を伴う通信プロトコルでデータを送受信した場合に、輻輳制御を損なうことなく、再送制御に伴うデータを再現するまでの遅延を削減できる。
【００７６】
また、本実施の形態では、パケット監視部が、通信プロトコルスタックを介さずに直接ネットワークインターフェースを監視しており、かつ新たに生成されるDuplicated ACKも直接ネットワークインターフェースに送信されている。つまり通信プロトコルに修正を加える必要がない。通信プロトコルは、コンピュータのオペレーションシステムの一部（カーネル）として実装されていることも多く、修正を施すことが困難なケースも多いが、本実施の形態の構成を取れば、通信プロトコルに手を入れる必要がない。
【００７７】
（第４の実施の形態）
次に本発明の第4の実施の形態について、図面を参照して説明する。
【００７８】
図11は、本発明に係る受信側通信装置の第4の実施の形態の構成図である。本発明に関わる受信側通信装置（以下、通信装置1100）は、ネットワークインターフェース1101、通信プロトコルスタック1102、パケット監視部1103、ダミーパケット生成部1104、ACK生成部1105を含む。
【００７９】
これらの手段は次のように動作する。ネットワークインターフェース1101は、図1に示されるネットワーク130と接続し、パケットの送受信を行う。通信プロトコルスタック1102はパケットの送受信を管理し、通信プロトコルの動作にしたがってパケットのデータを図1で示される受信側アプリケーション122に送信する。パケット監視部1103は、ネットワークインターフェース1101を経由して送受信されるパケットを監視し、Duplicated ACKの送信を検出する。Duplicated ACKの送信を検出するとパケット監視部1103は、ダミーパケット生成部1104及びACK生成部1105に通知を行う。ダミーパケット生成部1104は、パケット監視部1103の通知を受けると、ロスパケットのダミーパケットを生成し、ネットワークインターフェース1101を通じて、通信プロトコルスタック1102に送信する。ACK生成部1105は、パケット監視部1103の通知を受けると、輻輳制御を発生させるために必要な個数のDuplicated ACKを生成し、ネットワークインターフェース1101に送信する。
【００８０】
次に図11の構成図、および図12のフローチャートを参照して、本実施の形態の全体の動作について詳細に説明する。通信装置1100のパケット監視部1103は、ネットワークインターフェース1101を経由して送受信されるパケットを監視する (図12のS401)。パケット監視部1103は、送受信されるパケットからDuplicated ACKの送信を検出し、Duplicated ACKが検出された場合、パケット監視部1103からダミー生成部1104及びACK生成部1105に通知が行われる。(図12のS402)。ダミーパケット生成部1104はロスパケットのダミーパケットを生成し、ネットワークインターフェース1101を通じて、通信プロトコルスタックに送信する(図12のS403)。合わせてACK生成部1105は複数個のDuplicated ACKの生成を行い、ネットワークインターフェース1101を通じて、送信側端末110に送信する(図12のS404)。このとき、ACK生成部1105は、送信側端末110が再送制御及び輻輳制御を実行するために必要なだけのDuplicated ACKを少なくとも生成して追加する。
【００８１】
次に本発明の実施の形態の動作を図13のシーケンス図に示される、通信プロトコルとしてTCP/IPとした場合の一例を基にして具体的に説明する。再送制御及び輻輳制御は、同一シーケンス番号のDuplicated ACKを3つ以上、受け取ったときに発生すると設定されているとする。
【００８２】
通信装置のネットワークインターフェース1101は、図1に示す送信側端末110からシーケンス番号1のデータパケットを受信する(1301)。通信プロトコルスタック1102はデータパケットをネットワークインターフェース1101から取得し(1302)、シーケンス番号１の確認応答 [ACK 1]をネットワークインターフェース1101に送出する(1303)。ネットワークインターフェース1101は、送信側端末110に[ACK 1]を送信する(1305)。通信プロトコルスタック1102は、シーケンス番号1のパケットデータを図1に示す受信側アプリケーション112に送信する(1304)。
【００８３】
次にシーケンス番号2のパケットが損失し、続いて送信側端末110からはシーケンス番号3のパケットがネットワークインターフェース1101に到達したとする(1306,1307)。通信プロトコルスタック1102はシーケンス番号3のデータパケットをネットワークインターフェース1101から取得し(1308)、まだシーケンス番号2のデータパケットを受信していないことから、シーケンス番号１のDuplicated ACK である[Dup ACK 1]をネットワークインターフェース1101に送出する(1309)。ネットワークインターフェース1101は、送信側端末110に[Dup ACK 1]を送信する(1310)。通信プロトコルスタック1102は、シーケンス番号2のデータパケットを受信していないことからシーケンス番号3のパケットデータをアプリケーションに送信することはしない。
【００８４】
ここで、パケット監視部1103は、ネットワークインターフェース1101からDuplicated ACKが送出されたこと(1309,1310の処理)を検出すると(1311)、ダミーパケット生成部1104にダミーパケットの生成、ACK生成部1105に複数個のDuplicated ACKの生成を要求する（1312,1313）。ダミーパケット生成部1104は、シーケンス番号2のロスパケットのダミーパケットを生成し、ネットワークインターフェース1101を通じて、通信プロトコルスタック1102に送信する(1318)。
【００８５】
通信プロトコルスタック1102は、シーケンス番号2のパケットが受信できたと判断し(1319)、シーケンス番号2とシーケンス番号3のパケットのデータを受信側アプリケーション122に送信する(1320, 1321)。ダミーパケットの生成直後、または直前にACK生成部1105は、検出したDuplicated ACKに加え、幾つのDuplicated ACKが送信側端末に届けば、再送制御及び輻輳制御が発生するかを算出し、その算出した数の分だけのDuplicated ACKを生成する(1314,1316)。ここでの例では、３つのDuplicated ACKが届くと、再送制御が発生することから、2個のDuplicated ACKを追加生成して、ネットワークインターフェース1101に送出することになる(1314〜1317)。
【００８６】
一方、通信プロトコルスタック1102はダミーパケットを取得すると(1319)、これまでにシーケンス番号3までのパケットを受信完了したことになるため、このシーケンス番号3を付した[ACK 3]を生成してネットワークインターフェース1101に送出する(1323)。
【００８７】
送信側端末110では、再送制御のトリガーとなる所定の個数のDuplicated ACK、ここでの例では3個のDuplicated ACKが到達したとき(1317)に、シーケンス番号2のパケットが損失したことが検知され、シーケンス番号2のパケットが再送される(1322)。送信側では、再送制御と同時に輻輳制御も実行される。ただし、この時点ではシーケンス番号3の[ACK 3]は送信側に届いてなかったものとして説明を行っている。
【００８８】
ネットワークインターフェース1101が再送されたシーケンス番号2のパケットを受信すると(1322)、通信プロトコルスタック1102はシーケンス番号2のパケットを取得するが(1325)、これまでにシーケンス番号3までのパケットを受信完了したことになっているため、シーケンス番号3のパケットまで受信したことを示す[ACK 3]を生成してネットワークインターフェース1101に送出する(1326)。また、このとき、通信プロトコルスタック1102は、既に受信完了していると判断した1325で受信したシーケンス番号2のパケットを廃棄する。
【００８９】
次に本実施の形態の効果について説明する。本実施の形態では、パケットが損失したことを、パケット監視部がネットワークインターフェース部においてDuplicated ACKを監視することで検出すると、直ちに再送制御が実施されるよう、ACK生成部が複数個のDuplicated ACKを生成し、また、送信側端末に送信するのと同時にダミーパケット生成部がロスパケットのダミーパケットを生成する。そのため、ロスパケットの再送を待たずに後続の受信済みのパケットのデータを受信側アプリケーションが受信することができるため、第3の実施の形態よりもデータの再現までの遅延を削減することができる。より具体的に説明すれば、実施の形態３に記載したやり方では、図10の1019、1020のタイミングでしか受信側アプリケーションがパケットのデータを受信できなかったのが、1320、1321のタイミングでデータを受信できるようになり、実施の形態3と比較し、遅延を削減することが可能となる。
【００９０】
（第5の実施の形態）
次に本発明の第5の実施の形態について、図面を参照して説明する。
【００９１】
本発明に係る受信側通信装置の第5の実施の形態の構成は、図11に示される第4の実施の形態の構成と同じである。本発明に関わる受信側通信装置（以下、通信装置1100）は、ネットワークインターフェース1101、通信プロトコルスタック1102、パケット監視部1103、ダミーパケット生成部1104、ACK生成部1105を含む。
【００９２】
これらの手段は次のように動作する。ネットワークインターフェース1101は、図1に示すネットワーク130と接続し、パケットの送受信を行う。通信プロトコルスタック1102はパケットの送受信を管理する。パケット監視部1103は、ネットワークインターフェース1101を経由して送受信されるパケットを監視し、パケットのシーケンス番号を監視する。パケットのシーケンス番号の順序性が崩れたとき、つまりパケットのシーケンス番号が１つ順に増加しておらず、シーケンス番号が連続していない、または大きいシーケンス番号のパケットが先に到着する、などが観測された場合、パケット監視部1103は、ダミーパケット生成部1104に本来受信すべきシーケンス番号のダミーパケットの生成を要求する。ダミーパケット生成部1104は、ダミーパケットを生成し、ネットワークインターフェース1101を通じて、通信プロトコルスタック1102に送信する。
【００９３】
また、パケット監視部1103は順序性が崩れた、つまり、正しい順番で届かなかったパケットが、その次に連続的に届くパケット、例えば、通信プロトコルがTCPであれば、輻輳制御及び再送制御の判断に必要となるDuplicated ACKの個数、一般的には3個以上、が必要になるため、既に到着したパケットに加え、その次に到着する2個のパケットに、まだ到着していないパケットが含まれるかどうかを監視する。もし、該当するパケットが含まれていなければ、パケット監視部1103は、パケット消失が発生したと判断し、ACK生成部1105に複数個のDuplicated ACKの生成を要求する。
【００９４】
ACK生成部1105は、送信側端末に輻輳制御を発生させるために必要となるDuplicated ACKを複数個、標準的なTCPの実装では、3個以上のDuplicated ACKを生成し、送信側端末に送信する。送信側端末は3個以上のDuplicated ACKを受信するため、再送制御及び輻輳制御を実施する。
【００９５】
次に、本実施の形態の全体の動作について、図11の構成図および図14のフローチャートを参照して詳細に説明する。
【００９６】
パケット監視部1103は、ネットワークインターフェース1101を経由して送受信されるパケットのシーケンス番号を監視する(図14のS501)。パケットのシーケンス番号の順序性が崩れた場合、例えば、パケットのシーケンス番号が１つ順に増加しないで到着する、または大きいシーケンス番号のパケットが先に到着する、などが観測された場合、パケット監視部1103はダミーパケット生成部1104にダミーパケットの生成を要求し(図14のS502)、ダミーパケット生成部1104はS502で未到着パケット、つまり、本来シーケンスの順序に沿って受信されるべきパケットで受信できていないパケット、と観測されたシーケンス番号のダミーパケットを、ネットワークインターフェース1101を通じて、通信プロトコルスタック1102に送信する(図14のS503)。
【００９７】
パケット監視部1103は、未到着パケットが次に連続して到着するパケット、例えば、TCPであれば、シーケンス番号通りにパケットが到着しない可能性があるため、TCPでは複数回、一般には3回のパケットを受信する間にシーケンス通りのパケットが到着することが期待されており、その間にパケットが到着しない場合のみ、再送制御及び輻輳制御を行うため、既に到着したパケットに加え、その次に到着する2個のパケット、つまり、連続して受信する3個のパケットに含まれるかどうかを監視する(図14のS504)。
【００９８】
該当するパケットが含まれない場合、パケット監視部1103は、ACK生成部1105にDuplicated ACKの生成を要求し、ACK生成部1105はその時点で最後に受信したパケットが損失したと仮定し、その旨を示す複数個のDuplicated ACK、例えば、TCPの場合、再送制御及び輻輳制御が実施される3個以上のDuplicated ACK、を生成し、送信者側端末110に送信する(図14のS505)。以降、図14のステップS501からS505を繰り返す。また、図14のステップS502でパケットのシーケンス番号の順序性が保たれていた場合も、ステップS501からS505を繰り返す。
【００９９】
次に本発明の実施の形態の動作を図15のシーケンス図に示される、通信プロトコルをTCP/IPとした場合の一例を基にして具体的に説明する。輻輳制御及び再送制御は、同一シーケンス番号のDuplicated ACKを3つ受け取ったときに発生すると設定されているとする。
【０１００】
ネットワークインターフェース1101は、送信側端末110から送信されたシーケンス番号1のパケットを受信する(1501)。ネットワークインターフェース1101が受信したデータは通信プロトコルスタック602に渡され(1502)、パケット監視部1103は、1501で受信したパケットをスヌープし、シーケンス番号を確認する(1503)。通信プロトコルスタック1102は、1502で受信したデータを受信側アプリケーション122へ渡す (1504)。
【０１０１】
通信プロトコルスタック1102はデータを受信したことを意味するACKパケット[ACK 1]を、ネットワークインターフェース1101を通じて、送信側端末に通知する(1505,1506)。本シーケンスで示す例においては、次に送信側端末110から送信されるシーケンス番号2のパケットが伝送中に何らかの原因により損失したと仮定する(1507)。送信側端末110は続けてシーケンス番号3のパケットを送信する(1508)。ネットワークインターフェース1101はシーケンス番号3のパケットを受信し、通信プロトコルスタック1102に送信する(1509)。通信プロトコルスタック1102では、シーケンス番号2のパケットを受信していないため、受信側アプリケーション122にパケットを渡すことは出来ず、同時にシーケンス番号2のデータが届いていないことを通知するために[Dup ACK 1]のパケットを送信側端末110に通知する(1511, 1512)。
【０１０２】
パケット監視部1103は、ネットワークインターフェース1101が受信したシーケンス番号3のパケットをスヌープし、シーケンス番号のチェックを行う(1510)。パケット監視部1103はシーケンス番号の欠落を検出し、欠落したシーケンス番号2を記憶しておくと同時に、ダミーパケット生成部1104にダミーパケットの生成を要求する(1513)。ダミーパケット生成部1104はシーケンス番号2のパケットに該当するダミーパケットを生成し、ネットワークインターフェース1101を通じて、通信プロトコルスタック1102に送信する(1514,1515)。
【０１０３】
通信プロトコルスタック1102はシーケンス番号2のパケットを受信したと判断したことから、シーケンス番号2及び3のデータを受信側アプリケーション122に渡す(1516,1517)。通信プロトコルスタック1102は、データを受信したことを示す[ACK 3]を送信側端末に送信する(1518,1519)。続けて、送信側端末はシーケンス番号4のパケットを送信する(1520)。
【０１０４】
通信プロトコルスタック1102はシーケンス番号4のデータをネットワークインターフェース1101から受け取り、受信側アプリケーション122に渡し(1521,1523)、シーケンス番号4のパケットに対する確認応答である[ACK 4]を送信側端末110に送信する(1524,1525)。パケット監視部1103は、ネットワークインターフェース1101のパケットをスヌープし、ネットワークインターフェース1101を通じて得たパケットのシーケンス番号が4であることから、シーケンス番号2のパケットが届いていないことを確認する(1522)。
【０１０５】
送信側端末がシーケンス番号5のパケットを送信する。通信プロトコルスタック1102は通常通りの振る舞いを行う(1527,1529,1531)。パケット監視部1103はネットワークインターフェース1101のパケットをスヌープし、ネットワークインターフェース1101を通じて得たパケットのシーケンス番号が5であることからシーケンス番号2のパケットが届いていないことを確認し、連続して受信する3個のパケットにシーケンス番号2のパケットが含まれていないことから、パケットの損失が発生したと判断する(1528)。パケット監視部1103はACK生成部1105にACKの生成を要求する(1530)。ACK生成部1105は、シーケンス番号が5のパケットがロスしたとし、その旨を示す[ACK 5]を輻輳制御が発生するために必要な個数、本シーケンスではTCPの実装で多く採用されている3個、を生成し、送信側端末に送信する(1533,1534,1535,1536,1537,1538)。送信側端末はDuplicated ACKを3個以上受信したため、パケット損失が発生したと判断し、輻輳制御を実施し、データ送信を継続する。
【０１０６】
次に、本実施の形態によるさらなる効果について説明する。本実施の形態では、パケットのシーケンス番号の順序性が崩れた場合でも、その次に連続的に届くパケットのシーケンス番号を確認し、動作するため、パケットの到着順序が狂った場合でも輻輳制御及び再送制御の実施を抑制することが出来る。
【０１０７】
（第6の実施の形態）
次に本発明の第6の実施の形態について、図面を参照して説明する。
【０１０８】
図16は、本発明に係る受信側通信装置の第６の実施の形態の構成図である。本発明に関わる受信側通信装置（以下、通信装置1600）は、ネットワークインターフェース1601、通信プロトコルスタック1602、パケット監視部1603、再送可否判断部1604、ダミーパケット生成部1605、ACK生成部1606、を含む。これらの手段は次のように動作する。
【０１０９】
ネットワークインターフェース1601は、図1に示すネットワーク130と接続し、パケットの送受信を行う。通信プロトコルスタック1602はパケットの送受信を管理する。パケット監視部1603は、ネットワークインターフェース1601を経由して送受信されるパケットを監視し、パケットのシーケンス番号を監視する。パケットのシーケンス番号の順序性が崩れたとき、つまりパケットのシーケンス番号が１つ順に増加しないで、シーケンス番号が連続していない、または大きいシーケンス番号のパケットが先に到着する、などが観測された場合、パケット監視部1603は、再送可否判断部1604に通知する。再送可否判断部1604は、その内部に再送可否の必要性を判断するフラグ、再送可否判断フラグを有しており、パケット監視部1603からの通知を受けた際、再送可否判断フラグがセットされている場合、ダミーパケット生成部1605に通知を行い、再送可否判断フラグがセットされていない場合、ACK生成部1606に通知を行う。ダミーパケット生成部1605は、再送可否判断部1604からの通知を受け、ダミーパケットを生成し、ネットワークインターフェース1601を通じて、通信プロトコルスタック1102に送信する。ACK生成部1606は、再送可否判断部1604からの通知を受け、Duplicated ACKを複数個生成し、ネットワークインターフェース1601を通じて、送信側端末に送信する。
【０１１０】
次に、本実施の形態の全体の動作について、図16の構成図および図17のフローチャートを参照して詳細に説明する。
【０１１１】
パケット監視部1603は、ネットワークインターフェース1601を経由して送受信されるパケットのシーケンス番号を監視する(図17のS601)。
【０１１２】
パケットのシーケンス番号の順序性が崩れた場合、例えば、パケットのシーケンス番号が１つ順に増加しないで到着する、または大きいシーケンス番号のパケットが先に到着する、などが観測された場合、パケット監視部1603は再送可否判断部1604に通知する(図17のS602)。また、順番通りに届いている場合、次のパケットの到着に備える。
【０１１３】
パケット監視部1603の通知を受けた再送可否判断部1604は、自身が有する再送可否判断フラグを確認し、再送可否判断フラグがセットされていない場合、ダミーパケット生成部1605及びACK生成部1606に通知し、再送可否判断フラグがセットされている場合は、ダミーパケット生成部1605にのみ通知を行う(図17のS603)。
【０１１４】
再送可否判断部1604からの通知を受けたACK生成部1606は、輻輳制御及び再送制御の判断に必要となるDuplicated ACKの個数、一般的なTCPであれば、3個以上のDuplicated ACKパケットを生成し、ネットワークインターフェース1601を通じて、送信側端末110に通知し、また、再送可否判断フラグのセットを行う(図17のS604)。
【０１１５】
再送可否判断部1605からの通知を受けたダミーパケット生成部1605は、本来受信すべきシーケンス番号を有するダミーパケットを生成し、ネットワークインターフェース1601を通じて、通信プロトコルスタック1602に送信する。以降、S601からS605を繰り返す。
【０１１６】
再送可否判断フラグには再送可否判断部1604により、有効期間が設定される。有効期間については、TCP/IPコネクションの形成時や事前に測定されるRTT(Round Trip Time：送信側端末から受信側端末へのパケット送信に要する時間)等のパラメータから算出される数値、例えば、測定されたRTTの3倍の時間等、を採用することなどができる。また、再送可否判断フラグは、再送可否判断部1604がダミーパケット生成部1605及びACK生成部1606に通知をする際に設定され、有効期間が経過すると、再送可否判断フラグはリセット（セットされていない状態に）されるとする。
【０１１７】
次に本発明の実施の形態の動作を図18のシーケンス図に示される、通信プロトコルをTCP/IPとした場合の一例を基にして具体的に説明する。輻輳制御及び再送制御は、同一シーケンス番号のDuplicated ACKを3つ受け取ったときに発生すると設定されているとする。
【０１１８】
ネットワークインターフェース1601は、図1に示す送信側端末110から送信されたシーケンス番号1のパケットを受信する(1801)。ネットワークインターフェース1601が受信したデータは通信プロトコルスタック1602に渡され(1802)、パケット監視部1603は、1801で受信したパケットをスヌープし、シーケンス番号を確認する(1803)。
【０１１９】
通信プロトコルスタック1602は、1802で受信したデータを図1に示す受信側アプリケーション122へ渡す (1804)。 通信プロトコルスタック1602はデータを受信したことを意味するACKパケット、ここではシーケンス番号1のパケットを受信したことを意味する[ACK 1]を、ネットワークインターフェース1601を通じて、送信側端末110に通知する(1805,1806)。
【０１２０】
本シーケンスでは、次に送信側端末110から送信されるシーケンス番号2のパケットが伝送中に何らかの原因により損失したと仮定する(1807)。送信側端末110は続けてシーケンス番号3のパケットを送信する(1808)。通信プロトコルスタック1602はネットワークインターフェース1601からシーケンス番号3のデータを受信するが、シーケンス番号2のデータを受信できていないため、その旨を通知するパケット、つまり、Duplicated ACKと呼ばれるシーケンス番号1のデータまでしか受け取っていないことを示す[Dup ACK 1]を送信側端末110に送信する(1809,1811,1812)。
【０１２１】
パケット監視部1603は、ネットワークインターフェース1601を監視し、シーケンス番号2のパケットが損失していることを検出する(1810)。パケット監視部1603は、再送可否判断部1604に通知を行う(1813)。再送可否判断部1604は、本シーケンスでは当初、再送可否判断フラグがセットされていないことを想定するとし、再送可否判断フラグがセットされていないことから、ACK生成部1606及びダミーパケット生成部1605に通知を行う(1814,1815)。
【０１２２】
ACK生成部1606は、複数個、本シーケンスでは一般的なTCPの実装で採用されている3個以上のDuplicated ACKを生成し、送信側端末110に送信する(1816,1817,1818,1819,1820,1821)。また、ダミーパケット生成部1605は、未到着のシーケンス番号2のパケットに代わるダミーパケットを生成し、ネットワークインターフェース1601を通じて、通信プロトコルスタック1602に通知する(1822,1823)。通信プロトコルスタック1602は、シーケンス番号2のデータを受信したことから、シーケンス番号2及び3のデータを受信側アプリケーション122に送信し(1824,1825)、シーケンス番号3までのデータを受信したことを通知するため、[Dup ACK 3]のパケットを生成し、送信側端末110に通知する(1826,1827)。送信側端末110は、Duplicated ACKを3個以上連続で受信したため、輻輳制御及び再送制御を実行し、データ送信を継続する(1828,1829,1830,1831,1832)
。
【０１２３】
ここで、送信側端末が送信したシーケンス番号4のパケットが損失したとする(1833)。送信側端末110はシーケンス番号5のパケットを送信する(1834)。パケット監視部1603はシーケンス番号4のパケットが損失していることを検出し(1836)、再送可否判断部1604に通知する(1837)。再送可否判断部1604は再送可否判断フラグを確認し、再送可否判断フラグがセットされていることから、ダミーパケット生成部1605にのみダミーパケットの生成を要求する(1838)。ダミーパケット生成部1605は、未到着のシーケンス番号4のパケットに代わるダミーパケットを生成し、ネットワークインターフェース1601を通じて、通信プロトコルスタック1602に通知する(1839,1840)。通信プロトコルスタック1602は、シーケンス番号4及び5のデータを受信し(1841,1842)、シーケンス番号5までのデータを受信したことを通知するため、[ACK 5]のパケットを生成し、送信側端末110に通知する(1843,1844)。
【０１２４】
本実施の形態によるさらなる効果について説明する。パケットロスが断続的に発生する場合、パケットの欠落の度にDuplicated ACKを生成すると、輻輳制御が連続して発生するため、TCPとしてのパフォーマンスが大きく劣化してしまうが、本実施の形態のように、本来、Duplicated ACKが複数回送信されるのに要する時間、つまり、一般的なTCPではRTTの3倍の時間において、断続的に発生するパケットロスに関しては、Duplicated ACKの送信を抑制することで、輻輳制御の実施回数を低く抑え、TCPの大きなパフォーマンスの劣化を防止することが可能となる。
【０１２５】
（第７の実施の形態）
次に本発明の第7の実施の形態について、図面を参照して説明する。
【０１２６】
図19は、本発明に係る通信装置の第7の実施の形態の構成図である。本発明に関わる送信側通信装置1900は、ネットワークインターフェース1901、通信プロトコルスタック1902、パケット監視部1903、ACK生成部1904を含む。第１の実施の形態から第６の実施の形態とは異なり、これらの手段はデータを送信する側の送信側通信装置として機能する。その動作は以下に示すようになる。
【０１２７】
ネットワークインターフェース1901は、図1に示すネットワーク130と接続し、パケットの送受信を行う。通信プロトコルスタック1902は、図１に示す送信側アプリケーション112から、ネットワークインタフェース1901を通じて行われる、図1に示す受信側端末120へのパケットの送信を管理する。パケット監視部1903は、ネットワークインターフェース1901を経由して送受信されるパケットを監視し、Duplicated ACKの受信を検出する。Duplicated ACKの受信を検出すると、パケット監視部1903は、ACK生成部1904にDuplicated ACKの生成を要求する。ACK生成部1904は輻輳制御が発生するために必要な個数のDuplicated ACKを生成し、ネットワークインターフェース1901を通じて、通信プロトコルスタック1902に送信する。
【０１２８】
次に、本実施の形態の全体の動作について図20のフローチャートを参照して詳細に説明する。
【０１２９】
パケット監視部1903は、ネットワークインターフェース1901を経由して送受信されるパケットのシーケンス番号を監視する(S701)。パケット監視部1903は、Duplicated ACKの受信を検出すると、ACK生成部1904に通知を行う(S702)。ACK生成部1904は、複数個、例えば、一般的なTCP/IPでは、3個以上のDuplicated ACKを受信することで、輻輳制御及び再送制御が実施されるため、既に受信したDuplicated ACKを差し引いた2個以上、のDuplicated ACKを生成し、ネットワークインターフェース1901を通じて、通信プロトコルスタック1902に送信する(S703)。以降、S701からS703を繰り返す。S702において、Duplicated ACKが検出されなかった場合、パケット監視部1903は、次のパケットの到着に備える。
【０１３０】
次に本発明の実施の形態の動作を図21のシーケンス図に示される、通信プロトコルをTCP/IPとした場合の一例を基にして具体的に説明する。輻輳制御及び再送制御は、同一シーケンス番号のDuplicated ACKを3個以上、受け取ったときに発生すると設定されているとする。
【０１３１】
送信側の通信プロトコルスタック1902はネットワークインターフェース1901を通じて、受信側端末120へシーケンス番号1のデータを送信する(2101，2102)。受信側端末はパケットを受信したことを表す確認通知[ACK 1]を送信する(2103)。通信プロトコルスタック1902はネットワークインターフェース1901を通じて、受信側端末120の確認通知を受信する(2104)。パケット監視部1903は、ネットワークインターフェース1901を通じて、受信パケットの監視を行い、シーケンス番号1を受信した旨を示す確認応答[ACK 1]の受信を確認する(2105)。
【０１３２】
通信プロトコルスタック1902が送信したシーケンス番号2のパケットがネットワーク伝送中に損失したとする(2106, 2107)。通信プロトコルスタック1902はシーケンス番号3のパケットを続いて送信する(2108, 2109)。受信側端末120はシーケンス番号2のパケットを受信できていないため、確認通知としてシーケンス番号1のDuplicated ACK（[Dup ACK 1]）を送信する(2110)。通信プロトコルスタック1902は、ネットワークインターフェース1901を通じて、確認通知[Dup ACK 1]を受信する(2111)。パケット監視部1903は、ネットワークインターフェース1901を通じて、確認通知 [Dup ACK 1]の受信を確認し、2105で受信した確認通知と同一であることから、パケットの損失を疑い、ACK生成部1904に通知を行い(2112, 2113)、シーケンス番号1のACKの生成を指示する。
【０１３３】
通知を受け取ったACK生成部1904は、Duplicated ACKを複数個、本シーケンスでは、2個以上(一般的なTCP/IPでは、3個以上のDuplicated ACKを受信することで、輻輳制御及び再送制御が実施されるため、既に受信したDuplicated ACKを差し引いた2個以上)のシーケンス番号1までしか受け取っていない旨を示すDuplicated ACK [ACK 1]を生成し、ネットワークインターフェース1901を通じて、通信プロトコルスタック1902に送信する(2114,2115,2116,2117)。
【０１３４】
通信プロトコルスタック1902は、シーケンス番号１のDuplicated ACKを3個以上受信したため、輻輳制御を行い、また、同時にシーケンス番号2のパケットを再送する。受信側端末120はシーケンス番号3までのデータを受信したことを表す確認通知 [ACK 3]を送信する(2120,2121)。
【０１３５】
本実施の形態による効果について説明する。送信側において、Duplicated ACKの受信が検出された際に、輻輳制御及び再送制御の実施に必要な複数個のDuplicated ACKを生成し、輻輳制御及び再送制御を行うことで、従来よりも早期にロスパケットの再送が行われるため、映像や音声等を再現するアプリケーションの場合を例とすると、映像や音声を途切れることなく再生することが可能となる。
【０１３６】
さらに、本実施の形態では、Duplicated ACKの送信を促進する方向であることから、通信プロトコルの輻輳制御を抑制しない。そのため、リアルタイム性を要求するアプリケーションにおいて再送制御と輻輳制御を伴う通信プロトコルでデータを送受信した場合に、輻輳制御を損なうことなく、再送制御に伴うデータを再現するまでの遅延を削減できる。
【０１３７】
また、本実施の形態では、パケット監視部が、通信プロトコルスタックを介さずに直接ネットワークインターフェースを監視しており、かつ新たに生成されるDuplicated ACKも直接ネットワークインターフェースに送信されている。つまり通信プロトコルに修正を加える必要がない。通信プロトコルは、コンピュータのオペレーションシステムの一部（カーネル）として実装されていることも多く、修正を施すことが困難なケースも多いが、本実施の形態の構成を取れば、通信プロトコルに手を入れる必要がない。
【０１３８】
（第８の実施の形態）
次に本発明の第8の発明を実施するための最良の形態について、図面を参照して説明する。
【０１３９】
図22は、本発明に係る通信装置の第8の実施の形態の構成図である。本発明に関わる通信装2200は、ネットワークインターフェース2201、通信プロトコルスタック2202、パケット監視部2203、再送可否判断部2204、ACK生成部2205を含む。第7の実施の形態と同様に、これらの手段はデータを送信する側の通信装置として機能し、次のように動作する。
【０１４０】
ネットワークインターフェース2201は、ネットワーク130と接続し、パケットの送受信を行う。通信プロトコルスタック2202は、図１に示す送信側アプリケーション112から、ネットワークインタフェース1901を通じて行われる、図1に示す受信側端末120へのパケットの送信を管理する。パケット監視部2203は、ネットワークインターフェース2201を経由して送受信されるパケットを監視し、Duplicated ACKの送信を検出した場合、再送可否判断部2204に通知する。
【０１４１】
再送可否判断部2204は、一定期間有効な再送可否判断フラグを有しており、再送可否判断フラグがセットされているかを確認する。再送可否判断フラグがセットされていない場合、ACK生成部2205にDuplicated ACKの生成要求を通知する。再送可否判断フラグがセットされていない場合、再送可否判断部2204はそのパケットに関し、特別な処理は行わず、次のパケットの到着に備える。 ACK生成部2205は輻輳制御が発生するために必要な個数のDuplicated ACKを生成し、ネットワークインターフェース2201を通じて、通知プロトコルスタック2202に送信する。
【０１４２】
再送可否判断フラグの有効期間については、TCP/IPコネクションの形成時や事前に測定されるRTT等のパラメータから算出される数値、例えば、測定されたRTTの3倍の時間等、を採用し、また、再送可否判断フラグは、再送可否判断部2204がパケット監視部2203からの通知を受信した際、再送可否判断フラグがセットされていない場合に設定され、有効期間が経過すると、生成時と同様、再送可否判断部2204により再送可否判断フラグはリセット（セットされていない状態に）されるとする。
【０１４３】
次に、本実施の形態の全体の動作について図22及び図23を参照し、詳細に説明する。
【０１４４】
パケット監視部2203は、ネットワークインターフェース2201を経由して送受信されるパケットのシーケンス番号を監視する(S801)。パケット監視部2203は、受信しているパケットがDuplicated ACKであるか判断し(S802)、Duplicated ACKである場合、再送可否判断部2204へ通知し(S803)、Duplicated ACKでなければ、次のパケットの到着に備える(S804)。
再送可否判断部2204は、再送可否判断フラグがセットされているかを確認し、再送可否判断フラグがセットされていない場合、ACK生成部2205に通知を行い、再送可否判断フラグがセットされている場合は、次のパケットの到着に備える(S805)。 ACK生成部2205は、複数個、例えば、一般的なTCP/IPでは、3個以上のDuplicated ACKを受信することで、輻輳制御及び再送制御が実施されるため、既に受信したDuplicated ACKを差し引いた2個以上、のDuplicated ACKを生成し、ネットワークインターフェース2201を通じて、通信プロトコルスタック2202に送信する(S806)。以降、S801からS806を繰り返す。
【０１４５】
次に図24のシーケンス図に基づき、本実施の形態の動作を説明する。送信側の通信プロトコルスタック2202はネットワークインターフェース2201を通じて、受信側端末へシーケンス番号1のデータを送信する(2401、2402)。受信側端末120はパケットを受信したことを表す確認通知[ACK 1]を送信する(2403)。通信プロトコルスタック2202はネットワークインターフェース2201を通じて、受信側端末120の確認通知を受信する(2404)。
【０１４６】
パケット監視部2203は、ネットワークインターフェース2201を通じて、受信パケットの監視を行い、確認通知[ACK 1]の受信を確認する(2405)。通信プロトコルスタック2202が送信したシーケンス番号2のパケットがネットワーク伝送中に損失したとする(2406, 2407)。通信プロトコルスタック2202はシーケンス番号3のパケットを続いて送信する(2408, 2409)。受信側端末120はシーケンス番号2のパケットを受信できていないため、その旨を示す確認通知として[Dup ACK 1]を送信する(2410)。
【０１４７】
通信プロトコルスタック2202は、ネットワークインターフェース2201を通じて、確認通知[Dup ACK 1]を受信する(2411)。パケット監視部2203は、ネットワークインターフェース2201を通じて、確認通知[ACK 1]の受信を確認し、先に受信した確認通知(2405)と同一であることから、パケットの損失を疑い、再送可否判断部2204に通知する(2413)。
【０１４８】
再送可否判断部2204は、再送可否判断フラグがセットされているかどうかを確認する。本シーケンスでは、再送可否判断フラグはセットされていないとし、このとき、再送可否判断部2204はACK生成部2205に通知を行い、再送可否判断フラグをセットする(2414)。
【０１４９】
通知を受け取ったACK生成部2205は、Duplicated ACKを複数個、本シーケンスでは、2個以上(一般的なTCP/IPでは、3個以上のDuplicated ACKを受信することで、輻輳制御及び再送制御が実施されるため、既に受信したDuplicated ACKを差し引いた2個以上)のシーケンス番号1までしか受け取っていない旨を示すDuplicated ACK [ACK 1]を生成し、ネットワークインターフェース2201を通じて、通信プロトコルスタック2202に送信する(2415,2416,2417,2418)。通信プロトコルスタック2202は、Duplicated ACKを3個以上受信したため、輻輳制御を行い、また、同時にシーケンス番号2のパケットを再送する(2419.2420)。
【０１５０】
受信側端末120はシーケンス番号2及び3のデータを受信したことを表す確認通知[ACK 3]を通知する(2421,2422,2423)。次に通信プロトコルスタック2202が送信したシーケンス番号4のパケットがネットワーク伝送中に損失したとする(2424,2425)。
【０１５１】
通信プロトコルスタック2202は引き続き、シーケンス番号5のパケットを送信する(2426,2427)。受信側端末120はシーケンス番号4のパケットを受信していないため、確認通知[ACK 3]を送信する(2428)。通信プロトコルスタック2202はネットワークインターフェース2201を通じて、確認通知[ACK 3]を受信する(2429)。パケット監視部2203はネットワークインターフェース2201を通じて監視している受信パケットから(2430)、確認通知[ACK 3]が重複していることを確認し、再送可否判断部2204に通知する(2431)。
【０１５２】
再送可否判断部2204は、再送可否判断フラグがセットされているため、ACK生成部2205に対しては指示を発行しない。再送可否判断フラグがセットされている期間においては、パケット監視部2203及び再送可否判断部2204を含め、通信装置2200は同様の処理を繰り返す(2432から2446)。
【０１５３】
本実施の形態による効果としては、第７の実施の形態による効果に加え、断続的にパケットロスが発生した場合、パケットロスの発生の度に複数個のDuplicated ACKを生成すると、輻輳制御が連続して実行されるため、TCPとしてのパフォーマンスが大きく劣化してしまうが、本実施の形態のように、一定時間内に断続的に発生するパケットロスに関して、Duplicated ACKの送信を抑制することで、輻輳制御の実施回数を低く抑え、TCPの大きなパフォーマンスの劣化を防止することが可能となる。
【実施例１】
【０１５４】
次に具体的な実施例を用いて、本発明を実施するための最良の形態の動作を説明する。まず、第1の実施の形態である通信装置を利用した実施例について説明する。図25は、第1の実施の形態の通信装置を含むVoD(Video On Demand)クライアント2550とVoDサービスを提供するVoDサーバ2540より構成されるリアルタイムに映像・音声データが配信されるVoDシステムの一例である。
【０１５５】
図26は、図25記載のVoDクライアント2550とVoDサーバ2540のパケットのシーケンスを示したもので、VoDクライアント2550においては、通信装置2551により受信されるビデオ再生アプリケーション2552における再生データの受信順序が示されている。
【０１５６】
実施例図25記載のVoDシステムでは、VoDサーバ2540、本発明に係る通信装置2551及びビデオ再生アプリケーション2552を含むVoDクライアント2550、VoDクライアント2550とVoDサーバ2540を結ぶネットワーク上に存在するファイアウォール2560から構成される。
【０１５７】
VoDクライアント2550は、ファイアウォール2560を越えてVoDサーバ2540から映像・音声を受け取るため、HTTP(Hyper Text Transfer Protocol)を利用し、受け取ったパケットによりビデオを再生するとする。
【０１５８】
実施例図26を参照すると、VoDクライアント2550が映像・音声をVoDサーバ2540にデータ要求を行うと、VoDサーバ2540は、シーケンス番号1のデータを送信する(2601)。
【０１５９】
通信装置2551はシーケンス番号1のデータを受信すると、ACKを返す(2602)と同時に、シーケンス番号1のデータをビデオ再生アプリケーション2552に渡す(2603)。次にネットワークの輻輳により、VoDサーバ2540が送信したシーケンス番号2のデータが損失したとする(2604)。このとき、VoDクライアント2550はデータを受け取らないため、何も応答しない。VoDサーバ2540は続いて、シーケンス番号3のデータを送信する(2605)。通信装置2551は、シーケンス番号3のデータを受け取り、Duplicated ACKとして[Dup ACK 1] を返す(2606)と同時に、スヌープされたデータをビデオ再生アプリケーション2552に渡す(2607)。受信したシーケンス番号3のデータは再生データとして利用される。
【０１６０】
シーケンス番号4及びシーケンス番号5についても同様の処理が発生する(2608〜2613)。この後、VoDサーバ2540は、Duplicated ACKを3回受信するため、シーケンス番号2のパケットを再送する(2614)。通信装置2551は再送されたパケットを受信すると、その時点で受信している最大のシーケンス番号である5をACKとして返す(2615)と同時に、プロトコルスタックに蓄積されていた受信データを廃棄する。 続いて、VoDサーバ2540はその次のシーケンス番号6のデータを送信し(2616)、VoDサービスを継続する。なお、通信装置2551内の動作は第１の実施の形態と同じであることから記載は省略した。また、第2〜第6の実施の形態に関しても、VoDクライアント500は、本実施例と同様の動作を行うため、記載を省略する。
【実施例２】
【０１６１】
次に、第１の実施の形態に示される通信装置と第７の実施の形態の通信装置を用いた実施例について説明する。図27は、パケットの受信時の機能として第1の実施の形態の通信装置の機能を持ち、パケットの送信時の機能として第7の実施の形態の通信装置の機能を併せ持つ中継装置2730と、HTTPによるビデオチャットを行うビデオチャットクライアント2710と2720から構成される。中継装置2730はビデオチャットクライアント2710及び2720のHTTPによる通信を仲介するProxyとして働くこととし、中継装置2730は、ビデオチャットクライアント2710及び2720から送信されるデータを受信し、他のビデオチャットクライアントにそのデータを転送する機能を有するとする。
【０１６２】
図28は、ビデオチャットクライアント2710を送信側と2720を受信側として、中継装置2730を有する中継装置2730を介してデータパケットをやりとりする場合のシーケンスを示したものになっている。なお、実際のビデオチャットのアプリケーションにおいては、ビデオチャットクライアント2710と2720の送信側、受信側の役割は随意入れ替わり、相互にデータを送受している。
【０１６３】
中継装置2730は、送信側のビデオチャットクライアント2710から送信されたデータを一端終端し、受信側のビデオチャットクライアント2720に送信する。このことを明示するため、送信側から送信され中継装置2730で終端されるシーケンス番号ｍのパケットを＃ｍで表記し、中継装置2730から送信されるシーケンス番号ｎのパケットを$nで表記する。
【０１６４】
まず、図28の上半分を参照して、中継装置2730が第７の実施の形態で示した機能を用いて行うパケットの中継（転送）動作を説明する。ビデオチャットクライアント2710が中継装置2730を通じて、ビデオチャットクライアント2720にデータを送っている。中継装置2730は、ビデオチャットクライアント2710から送信されたシーケンス番号#1のパケットを受信するが(2801)、TCPの接続はここで終端され、中継装置2730はビデオチャットクライアント2710に対し、確認応答である[ACK #1]を送信する(2802)。同時に中継装置2730は、ビデオチャットクライアント2720に向け、2801で受信したシーケンス番号$1のパケットを送信する(2803)。ビデオチャットクライアント2720からは、パケットを受信したことを意味する確認応答[ACK $1]が送信される(2804)。続いて、ビデオチャットクライアント2710から送信されたシーケンス番号#2のパケットを中継装置2730は受信し(2805)、確認応答[ACK #2]を送信する(2806)。そしてこのシーケンス番号$2のパケットをビデオチャットクライアント2720に転送する際にパケットが損失したとする(2807)。
【０１６５】
さらに中継装置2730は、ビデオチャットクライアント2710からはシーケンス番号3のデータが続いて送信される(2808,2809)。中継装置2730は受信したパケットをビデオチャットクライアント2720に転送し(2810)、ビデオチャットクライアント2720から確認応答として、[Dup ACK $1]を受信したとする(2811)。このとき、中継装置2730は2804で受信した確認応答[ACK $1]と重複していることから、パケットロスが発生したと判断し、実施の形態7で述べた動作、つまり、内部で再送制御及び輻輳制御が発生するだけのDuplicated ACKの生成、受信を行(2812,2813)を行い、シーケンス番号$2のデータを再送する(2814, 2815)。
【０１６６】
このとき、再送制御と同時に輻輳制御も実施される。続いて、通信装置2731は、シーケンス番号#4のデータをビデオチャットクライアント2710から受信し(2816)、そのデータをビデオチャットクライアント2720に転送する(2818)ことで、ビデオチャットサービスを継続する。
【０１６７】
次に、図28の下半分を参照して、中継装置2730が第１の実施の形態で示した機能を用いて行うパケットの中継（転送）動作を説明する。ビデオチャットクライアント2710は通信装置2731に対し、シーケンス番号#5のデータを送信する(2820)。中継装置2730は、シーケンス番号#5のデータを受信したため、確認応答[ACK #5]をビデオチャットクライアント2710に送信する(2821)。中継装置2730は、2820で受信したパケットをビデオチャットクライアント2720に、シーケンス番号$1のパケットとして送信し(2822)、ビデオチャットクライアント2720はパケットの受信を示す確認応答[ACK $5]を送信する(2823)。
【０１６８】
次にビデオチャットクライアント2710が送信したシーケンス番号#6のデータがネットワークの障害等により損失したとする(2824)。ビデオチャットクライアント2720は、続いてシーケンス番号#7のデータを送信する(2825)。中継装置2730は、シーケンス番号#6のデータを受信していないため、ビデオチャットクライアント2710に対し、確認応答[Dup ACK #5]を送信する(2826)と同時に、実施の形態1で述べた方法により、スヌープされたシーケンス番号#3のデータを受け取り、そのデータをシーケンス番号$6として、ビデオチャットクライアント2720に送信する(2827)。
【０１６９】
ビデオチャットクライアント2720からは確認応答である[ACK $6]が送信される(2828)。その後、ビデオチャットクライアント2710はシーケンス番号#8、#9のデータを送信し(2829,2833)、中継装置2730からは[Dup ACK #5]を受信する(2830, 2834)。中継装置2730は、実施の形態1で述べた方法によりスヌープしたデータをシーケンス番号$7及び$8のデータとしてビデオチャットクライアント2720に送信する(2831, 2835)。ビデオチャットクライアント2710は、確認応答[Dup ACK #5]を3回受け取った(2826, 2830,2834)ことから、輻輳制御及び再送制御を実施する(2837,2838)。
【０１７０】
本実施例では、データの送信側もしくは受信側に本発明の実施形態が含まれない場合でも、データを中継する装置に本発明の実施形態を導入することで、再送制御に伴うデータ受信までの遅延を削減し、かつ、輻輳制御を実施することが可能となる。
【産業上の利用可能性】
【０１７１】
本発明によれば、ファイアウォールやプロキシのため、HTTPしか利用できない環境下においても、会議サービスのようなリアルタイムで映像・音声の通信を行うサービスに適用可能である。
【図面の簡単な説明】
【０１７２】
【図１】第１から第８の実施の形態における端末の接続構成図である。
【図２】第１の実施の形態の構成図である。
【図３】第１の実施の形態のフローチャートである。
【図４】第１の実施の形態のシーケンス図である。
【図５】第２の実施の形態の構成図である。
【図６】第２の実施の形態のフローチャートである。
【図７】第２の実施の形態のシーケンス図である。
【図８】第３の実施の形態の構成図である。
【図９】第３の実施の形態のフローチャートである。
【図１０】第３の実施の形態のシーケンス図である。
【図１１】第４、第５の実施の形態の構成図である。
【図１２】第４の実施の形態のフローチャートである。
【図１３】第４の実施の形態のシーケンス図である。
【図１４】第５の実施の形態のフローチャートである。
【図１５】第５の実施の形態のシーケンス図である。
【図１６】第６の実施の形態の構成図である。
【図１７】第６の実施の形態のフローチャートである。
【図１８】第６の実施の形態のシーケンス図である。
【図１９】第７の実施の形態の構成図である。
【図２０】第７の実施の形態のフローチャートである。
【図２１】第７の実施の形態のシーケンス図である。
【図２２】第８の実施の形態の構成図である。
【図２３】第８の実施の形態のフローチャートである。
【図２４】第８の実施の形態のシーケンス図である。
【図２５】第１の実施例の全体接続構成図である。
【図２６】第１の実施例のシーケンス図である。
【図２７】第２の実施例の全体接続構成図である。
【図２８】第２の実施例のシーケンス図である。
【図２９】第１から第８の実施の形態における通信プロトコルの実装例を示す構成図である。
【図３０】第１の実施の形態におけるスヌープパケット出力部、第２から第８の実施の形態におけるパケット監視部の実装例を示す構成図である。
【図３１】従来例におけるシーケンス図である。
【符号の説明】
【０１７３】
110：送信側端末
111，1900，2200：送信側通信装置
112：送信側アプリケーション
120：受信側端末
121，500，800，1100，1600：受信側通信装置
122：受信側アプリケーション
130：ネットワーク
201，501，801，1101，1601，1901，2201：ネットワークインターフェース
202：データ受信部
203，502，802，1102，1602，1902，2202：通信プロトコルスタック
204：スヌープパケット出力部
503，803，1103，1603，1903，2203：パケット監視部
504，1104，1605：ダミーパケット生成部
804，1105，1606，1904，2205：ACK生成部
1604，2204：再生可否判断部
【図１】
2006222494.tif 000003
【図２】
2006222494.tif 000004
【図３】
2006222494.tif 000005
【図４】
2006222494.tif 000006
【図５】
2006222494.tif 000007
【図６】
2006222494.tif 000008
【図７】
2006222494.tif 000009
【図８】
2006222494.tif 000010
【図９】
2006222494.tif 000011
【図１０】
2006222494.tif 000012
【図１１】
2006222494.tif 000013
【図１２】
2006222494.tif 000014
【図１３】
2006222494.tif 000015
【図１４】
2006222494.tif 000016
【図１５】
2006222494.tif 000017
【図１６】
2006222494.tif 000018
【図１７】
2006222494.tif 000019
【図１８】
2006222494.tif 000020
【図１９】
2006222494.tif 000021
【図２０】
2006222494.tif 000022
【図２１】
2006222494.tif 000023
【図２２】
2006222494.tif 000024
【図２３】
2006222494.tif 000025
【図２４】
2006222494.tif 000026
【図２５】
2006222494.tif 000027
【図２６】
2006222494.tif 000028
【図２７】
2006222494.tif 000029
【図２８】
2006222494.tif 000030
【図２９】
2006222494.tif 000031
【図３０】
2006222494.tif 000032
【図３１】
2006222494.tif 000033