(57)【要約】  再送データが出力されるまでの遅延を短縮することを可能にするため、データ入力部から入力されたデータを第一の転送部へ転送し、前記データの再送の要否を判断し、前記再送が必要と判断したとき、再送すべき再送データを第二の転送部へ転送し、前記再送データの前記第二の転送部への前記転送の時点で前記第一の転送部に残留する前記データの少なくともいずれかに先立って、前記第二の転送部の前記再送データを前記第一の転送部の前記データと同一の宛先に出力する。
2017199913.tif 000002
【特許請求の範囲】
【請求項１】
データを入力するデータ入力手段と、
第一の転送手段と、
第二の転送手段と、
前記データを前記第一の転送手段へ転送するデータ送信手段と、
前記データの再送の要否を判断する再送制御手段と、
前記再送が必要と判断したとき、再送すべき再送データを前記第二の転送手段へ転送する再送データ送信手段と、
前記再送データの前記第二の転送手段への前記転送の時点で前記第一の転送手段に残留する前記データの少なくともいずれかに先立って、前記第二の転送手段の前記再送データを前記第一の転送手段の前記データと同一の宛先に出力する入出力処理手段と
を備えることを特徴とする送信装置。
【請求項２】
前記第一の転送手段のデータリンク層の第一のデータリンクバッファの前記データを前記入出力処理手段へ転送する第一のデータリンク処理手段と、
前記第二の転送手段の前記データリンク層の第二のデータリンクバッファの前記再送データを前記入出力処理手段へ転送する第二のデータリンク処理手段
をさらに備えることを特徴とする請求項１に記載の送信装置。
【請求項３】
前記再送データ送信手段は、前記再送データに前記再送データであることを示すフラグを付与して前記再送データの前記第二の転送手段への前記転送を行い、
前記フラグに従って、前記データを前記第一のデータリンクバッファへ転送し、前記再送データを前記第二のデータリンクバッファへ転送するネットワーク処理手段
をさらに備えることを特徴とする請求項２に記載の送信装置。
【請求項４】
前記第一のデータリンク処理手段は、前記入出力処理手段へ転送する前記データの第三のデータ番号を状態記憶部に記憶させ、
前記ネットワーク処理手段は、前記第一のデータリンクバッファへ転送する前記データの第一のデータ番号を前記状態記憶部に記憶させ、
前記第二のデータリンク処理手段は、前記状態記憶部に記憶させた前記第三のデータ番号および前記第一のデータ番号に基づき、前記再送データが追い越したデータ数を算出する
ことを特徴とする請求項３に記載の送信装置。
【請求項５】
前記第一の転送手段のネットワーク層の第一のネットワークバッファの前記データを前記第一のデータリンクバッファへ転送する第一のネットワーク処理手段と、
前記第二の転送手段の前記ネットワーク層の第二のネットワークバッファの前記再送データを前記第二のデータリンクバッファへ転送する第二のネットワーク処理手段と
をさらに備え、
前記データ送信手段は、前記第一の転送手段への前記データの前記転送を、前記データを前記第一のネットワークバッファへ転送することにより行い、
前記再送データ送信手段は、前記第二の転送手段への前記再送データの前記転送を、前記再送データを前記第二のネットワークバッファへ転送することにより行う
ことを特徴とする請求項２に記載の送信装置。
【請求項６】
前記第一のデータリンク処理手段は、前記入出力処理手段へ転送する前記データの第三のデータ番号を状態記憶部に記憶させ、
前記第一のネットワーク処理手段は、前記第一のデータリンクバッファへ転送する前記データの第一のデータ番号を前記状態記憶部に記憶させ、
前記第二のデータリンク処理手段は、前記状態記憶部に記憶させた前記第三のデータ番号および前記第一のデータ番号に基づき、前記再送データが追い越したデータ数を算出する
ことを特徴とする請求項５に記載の送信装置。
【請求項７】
前記第一のデータリンク処理手段は、前記入出力処理手段へ転送する前記データの第三のデータ番号を状態記憶部に記憶させ、
前記データ送信手段は、前記第一のネットワークバッファへ転送する前記データの第二のデータ番号を前記状態記憶部に記憶させ、
前記第二のデータリンク処理手段は、前記状態記憶部に記憶させた前記第三のデータ番号および前記第二のデータ番号に基づき、前記再送データが追い越したデータ数を算出する
ことを特徴とする請求項５あるいは請求項６に記載の送信装置。
【請求項８】
前記第一の転送手段のネットワーク層の第一のネットワークバッファの前記データをデータリンク層のデータリンクバッファへ転送する第一のネットワーク処理手段と、
前記第二の転送手段の前記ネットワーク層の第二のネットワークバッファの前記再送データを、前記第一の転送手段と前記第二の転送手段とが共有する前記データリンクバッファへ転送する第二のネットワーク処理手段と、
前記データリンクバッファの前記データおよび前記再送データを前記入出力処理手段へ転送するデータリンク処理手段と
をさらに備え、
前記データ送信手段は、前記第一の転送手段への前記データの前記転送を、前記データを前記第一のネットワークバッファへ転送することにより行い、
前記再送データ送信手段は、前記第二の転送手段への前記再送データの前記転送を、前記再送データを前記第二のネットワークバッファへ転送することにより行う
ことを特徴とする請求項１に記載の送信装置。
【請求項９】
前記第一のネットワーク処理手段は、前記データリンク層へ転送する前記データの第一のデータ番号を状態記憶部に記憶させ、
前記データ送信手段は、前記第一のネットワークバッファへ転送する前記データの第二のデータ番号を前記状態記憶部に記憶させ、
前記第二のネットワーク処理手段は、前記状態記憶部に記憶させた前記第一のデータ番号および前記第二のデータ番号に基づき、前記再送データが追い越したデータ数を算出する
ことを特徴とする請求項５から請求項８のいずれかに記載の送信装置。
【請求項１０】
前記第一のネットワーク処理手段および前記第二のネットワーク処理手段は、通信フローに対する転送条件を状態記憶部に記憶させ、前記状態記憶部の前記転送条件に従って、前記データおよび前記再送データの前記転送を行う
ことを特徴とする請求項５から請求項９のいずれかに記載の送信装置。
【請求項１１】
前記転送条件は、パケットフィルタの処理状態を含む
ことを特徴とする請求項１０に記載の送信装置。
【請求項１２】
前記再送制御手段は、受信したＡＣＫ（ACKnowledgement）に基づいて前記再送の前記要否の前記判断を行う
ことを特徴とする請求項１から請求項１１のいずれかに記載の送信装置。
【請求項１３】
前記入出力処理手段は、前記データおよび前記再送データの前記出力を、一つの出力インタフェースから行う
ことを特徴とする請求項１から請求項１２のいずれかに記載の送信装置。
【請求項１４】
前記入出力処理手段は、前記データおよび前記再送データのデータ出力番号を所定のルールに従って書き換える
ことを特徴とする請求項１から請求項１３のいずれかに記載の送信装置。
【請求項１５】
前記データ出力番号は、ＩＰ（Internet Protocol）ヘッダのＩＰＩＤ（IP Identification）である
ことを特徴とする請求項１４に記載の送信装置。
【請求項１６】
データ入力部から入力されたデータを第一の転送部へ転送し、
前記データの再送の要否を判断し、
前記再送が必要と判断したとき、再送すべき再送データを第二の転送部へ転送し、
前記再送データの前記第二の転送部への前記転送の時点で前記第一の転送部に残留する前記データの少なくともいずれかに先立って、前記第二の転送部の前記再送データを前記第一の転送部の前記データと同一の宛先に出力する
ことを特徴とする送信方法。
【請求項１７】
前記第一の転送部の前記データは、前記第一の転送部のデータリンク層の第一のデータリンクバッファの前記データであり、
前記第二の転送部の前記再送データは、前記第二の転送部の前記データリンク層の第二のデータリンクバッファの前記再送データである
ことを特徴とする請求項１６に記載の送信方法。
【請求項１８】
前記再送データに前記再送データであることを示すフラグを付与して前記再送データの前記第二の転送部への前記転送を行い、
前記フラグに従って、前記データを前記第一のデータリンクバッファへ転送し、前記再送データを前記第二のデータリンクバッファへ転送する
ことを特徴とする請求項１７に記載の送信方法。
【請求項１９】
前記出力する前記データの第三のデータ番号を状態記憶部に記憶させ、
前記第一のデータリンクバッファへ転送する前記データの第一のデータ番号を前記状態記憶部に記憶させ、
前記状態記憶部に記憶させた前記第三のデータ番号および前記第一のデータ番号に基づき、前記再送データが追い越したデータ数を算出する
ことを特徴とする請求項１８に記載の送信方法。
【請求項２０】
前記第一の転送部のネットワーク層の第一のネットワークバッファの前記データを前記第一のデータリンクバッファへ転送し、
前記第二の転送部の前記ネットワーク層の第二のネットワークバッファの前記再送データを前記第二のデータリンクバッファへ転送し、
前記第一の転送部への前記データの前記転送を、前記データを前記第一のネットワークバッファへ転送することにより行い、
前記第二の転送部への前記再送データの前記転送を、前記再送データを前記第二のネットワークバッファへ転送することにより行う
ことを特徴とする請求項１７に記載の送信方法。
【請求項２１】
前記出力する前記データの第三のデータ番号を状態記憶部に記憶させ、
前記第一のデータリンクバッファへ転送する前記データの第一のデータ番号を前記状態記憶部に記憶させ、
前記状態記憶部に記憶させた前記第三のデータ番号および前記第一のデータ番号に基づき、前記再送データが追い越したデータ数を算出する
ことを特徴とする請求項２０に記載の送信方法。
【請求項２２】
前記出力する前記データの第三のデータ番号を状態記憶部に記憶させ、
前記第一のネットワークバッファへ転送する前記データの第二のデータ番号を前記状態記憶部に記憶させ、
前記状態記憶部に記憶させた前記第三のデータ番号および前記第二のデータ番号に基づき、前記再送データが追い越したデータ数を算出する
ことを特徴とする請求項２０あるいは請求項２１に記載の送信方法。
【請求項２３】
前記第一の転送部のネットワーク層の第一のネットワークバッファの前記データをデータリンク層のデータリンクバッファへ転送し、
前記第二の転送部の前記ネットワーク層の第二のネットワークバッファの前記再送データを、前記第一の転送部と前記第二の転送部とが共有する前記データリンクバッファへ転送し、
前記データリンクバッファの前記データおよび前記再送データを前記出力し、
前記第一の転送部への前記データの前記転送を、前記データを前記第一のネットワークバッファへ転送することにより行い、
前記第二の転送部への前記再送データの前記転送を、前記再送データを前記第二のネットワークバッファへ転送することにより行う
ことを特徴とする請求項１６に記載の送信方法。
【請求項２４】
前記データリンク層へ転送する前記データの第一のデータ番号を状態記憶部に記憶させ、
前記第一のネットワークバッファへ転送する前記データの第二のデータ番号を前記状態記憶部に記憶させ、
前記状態記憶部に記憶させた前記第一のデータ番号および前記第二のデータ番号に基づき、前記再送データが追い越したデータ数を算出する
ことを特徴とする請求項２０から請求項２３のいずれかに記載の送信方法。
【請求項２５】
通信フローに対する転送条件を状態記憶部に記憶させ、前記状態記憶部の前記転送条件に従って、前記データおよび前記再送データの前記転送を行う
ことを特徴とする請求項２０から請求項２４のいずれかに記載の送信方法。
【請求項２６】
前記転送条件は、パケットフィルタの処理状態を含む
ことを特徴とする請求項２５に記載の送信方法。
【請求項２７】
受信したＡＣＫ（ACKnowledgement）に基づいて前記再送の前記要否の前記判断を行う
ことを特徴とする請求項１６から請求項２６のいずれかに記載の送信方法。
【請求項２８】
前記データおよび前記再送データの前記出力を、一つの出力インタフェースから行う
ことを特徴とする請求項１６から請求項２７のいずれかに記載の送信方法。
【請求項２９】
前記データおよび前記再送データのデータ出力番号を所定のルールに従って書き換える
ことを特徴とする請求項１６から請求項２８のいずれかに記載の送信方法。
【請求項３０】
前記データ出力番号は、ＩＰ（Internet Protocol）ヘッダのＩＰＩＤ（IP Identification）である
ことを特徴とする請求項２９に記載の送信方法。
【請求項３１】
コンピュータに、
データ入力部から入力されたデータを第一の転送部へ転送するデータ送信機能と、
前記データの再送の要否を判断する再送制御機能と、
前記再送が必要と判断したとき、再送すべき再送データを第二の転送部へ転送する再送データ送信機能と、
前記再送データの前記第二の転送部への前記転送の時点で前記第一の転送部に残留する前記データの少なくともいずれかに先立って、前記第二の転送部の前記再送データを前記第一の転送部の前記データと同一の宛先に出力する入出力処理機能と
を実現させることを特徴とする送信プログラム。
【請求項３２】
前記第一の転送部のデータリンク層の第一のデータリンクバッファの前記データを前記入出力処理機能へ転送する第一のデータリンク処理機能と、
前記第二の転送部の前記データリンク層の第二のデータリンクバッファの前記再送データを前記入出力処理機能へ転送する第二のデータリンク処理機能
をコンピュータにさらに実現させることを特徴とする請求項３１に記載の送信プログラム。
【請求項３３】
前記再送データ送信機能は、前記再送データに前記再送データであることを示すフラグを付与して前記再送データの前記第二の転送部への前記転送を行い、
前記フラグに従って、前記データを前記第一のデータリンクバッファへ転送し、前記再送データを前記第二のデータリンクバッファへ転送するネットワーク処理機能
をコンピュータにさらに実現させることを特徴とする請求項３２に記載の送信プログラム。
【請求項３４】
前記第一のデータリンク処理機能は、前記入出力処理機能へ転送する前記データの第三のデータ番号を状態記憶部に記憶させ、
前記ネットワーク処理機能は、前記第一のデータリンクバッファへ転送する前記データの第一のデータ番号を前記状態記憶部に記憶させ、
前記第二のデータリンク処理機能は、前記状態記憶部に記憶させた前記第三のデータ番号および前記第一のデータ番号に基づき、前記再送データが追い越したデータ数を算出する
ことを特徴とする請求項３３に記載の送信プログラム。
【請求項３５】
前記第一の転送部のネットワーク層の第一のネットワークバッファの前記データを前記第一のデータリンクバッファへ転送する第一のネットワーク処理機能と、
前記第二の転送部の前記ネットワーク層の第二のネットワークバッファの前記再送データを前記第二のデータリンクバッファへ転送する第二のネットワーク処理機能と
をコンピュータにさらに実現させ、
前記データ送信機能は、前記第一の転送部への前記データの前記転送を、前記データを前記第一のネットワークバッファへ転送することにより行い、
前記再送データ送信機能は、前記第二の転送部への前記再送データの前記転送を、前記再送データを前記第二のネットワークバッファへ転送することにより行う
ことを特徴とする請求項３２に記載の送信プログラム。
【請求項３６】
前記第一のデータリンク処理機能は、前記入出力処理機能へ転送する前記データの第三のデータ番号を状態記憶部に記憶させ、
前記第一のネットワーク処理機能は、前記第一のデータリンクバッファへ転送する前記データの第一のデータ番号を前記状態記憶部に記憶させ、
前記第二のデータリンク処理機能は、前記状態記憶部に記憶させた前記第三のデータ番号および前記第一のデータ番号に基づき、前記再送データが追い越したデータ数を算出する
ことを特徴とする請求項３５に記載の送信プログラム。
【請求項３７】
前記第一のデータリンク処理機能は、前記入出力処理機能へ転送する前記データの第三のデータ番号を状態記憶部に記憶させ、
前記データ送信機能は、前記第一のネットワークバッファへ転送する前記データの第二のデータ番号を前記状態記憶部に記憶させ、
前記第二のデータリンク処理機能は、前記状態記憶部に記憶させた前記第三のデータ番号および前記第二のデータ番号に基づき、前記再送データが追い越したデータ数を算出する
ことを特徴とする請求項３５あるいは請求項３６に記載の送信プログラム。
【請求項３８】
前記第一の転送部のネットワーク層の第一のネットワークバッファの前記データをデータリンク層のデータリンクバッファへ転送する第一のネットワーク処理機能と、
前記第二の転送部の前記ネットワーク層の第二のネットワークバッファの前記再送データを、前記第一の転送部と前記第二の転送部とが共有する前記データリンクバッファへ転送する第二のネットワーク処理機能と、
前記データリンクバッファの前記データおよび前記再送データを前記入出力処理機能へ転送するデータリンク処理機能と
をコンピュータにさらに実現させ、
前記データ送信機能は、前記第一の転送部への前記データの前記転送を、前記データを前記第一のネットワークバッファへ転送することにより行い、
前記再送データ送信機能は、前記第二の転送部への前記再送データの前記転送を、前記再送データを前記第二のネットワークバッファへ転送することにより行う
ことを特徴とする請求項３１に記載の送信プログラム。
【請求項３９】
前記第一のネットワーク処理機能は、前記データリンク層へ転送する前記データの第一のデータ番号を状態記憶部に記憶させ、
前記データ送信機能は、前記第一のネットワークバッファへ転送する前記データの第二のデータ番号を前記状態記憶部に記憶させ、
前記第二のネットワーク処理機能は、前記状態記憶部に記憶させた前記第一のデータ番号および前記第二のデータ番号に基づき、前記再送データが追い越したデータ数を算出する
ことを特徴とする請求項３５から請求項３８のいずれかに記載の送信プログラム。
【請求項４０】
前記第一のネットワーク処理機能および前記第二のネットワーク処理機能は、通信フローに対する転送条件を状態記憶部に記憶させ、前記状態記憶部の前記転送条件に従って、前記データおよび前記再送データの前記転送を行う
ことを特徴とする請求項３５から請求項３９のいずれかに記載の送信プログラム。
【請求項４１】
前記転送条件は、パケットフィルタの処理状態を含む
ことを特徴とする請求項４０に記載の送信プログラム。
【請求項４２】
前記再送制御機能は、受信したＡＣＫ（ACKnowledgement）に基づいて前記再送の前記要否の前記判断を行う
ことを特徴とする請求項３１から請求項４１のいずれかに記載の送信プログラム。
【請求項４３】
前記入出力処理機能は、前記データおよび前記再送データの前記出力を、一つの出力インタフェースから行う
ことを特徴とする請求項３１から請求項４２のいずれかに記載の送信プログラム。
【請求項４４】
前記入出力処理機能は、前記データおよび前記再送データのデータ出力番号を所定のルールに従って書き換える
ことを特徴とする請求項３１から請求項４３のいずれかに記載の送信プログラム。
【請求項４５】
前記データ出力番号は、ＩＰ（Internet Protocol）ヘッダのＩＰＩＤ（IP Identification）である
ことを特徴とする請求項４４に記載の送信プログラム。
【請求項４６】
請求項３１から請求項４５のいずれかに記載の送信プログラムを記録した、コンピュータ読み取り可能な記録媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、受信装置へ送信したデータの消失を検知して消失データの再送を行う、送信装置、方法、プログラムおよび記録媒体に関する。
【背景技術】
【０００２】
インターネットで用いられる代表的な通信プロトコルであるＴＣＰ／ＩＰ（Transmission Control Protocol／Internet Protocol）通信方式では、これを利用するアプリケーションに対してデータ転送の完全性を保証している。つまり、送信装置が送信したデータが送信装置、ネットワークもしくは受信装置にて消失した場合、送信装置は消失したデータを再送する。そして、受信装置は受信したデータを整列して元のデータを復元し、受信側のアプリケーションへと転送する。【０００３】
近年、データセンタがユーザデータなどを保有してサービス提供者がユーザごとに調整したサービスを提供するような、クラウド型サービスが発展している。クラウド型サービスでは、データセンタとユーザ端末との距離が長距離となる場合がある。そのため、データセンタとユーザ端末との間の通信距離によらず十分な通信速度を発揮する通信方法が求められている。【０００４】
このような長距離の高速通信を実現するため、送信装置、ネットワーク、受信装置のそれぞれには、より多くのデータ／パケットを一時的に蓄積するためのバッファが必要となる。特に通信速度を最初に決定することになる送信装置内には大きなバッファが必要である。近年では、長距離の１０Ｇｂｐｓ回線を活用するため、ＴＣＰ層に３００ＭＢ、ＩＰ層に３００ＭＢ、データリンク層に１００ＭＢほどのバッファを送信装置が持つこともしばしばある。【０００５】
基本的に、高速通信を実現できるように大きなバッファを設定した場合には、データを再送する場合に、大きな転送遅延が発生する可能性が高くなる。一般的なＴＣＰ／ＩＰ通信では、一対の送受信装置間のデータ転送では一つの通信経路を使用する。イーサネット（登録商標）に代表されるデータリンク層も、原則一つの通信経路を利用し、また、その転送順序は入れ替わらない。そのため、再送データは送信中のすべてのデータの最後尾で転送されることになり、送信待ち時間が大きくなる。【０００６】
図１９に、一般的なＴＣＰ／ＩＰによるデータ転送の例を示す。送信装置は受信装置へデータを送信し、受信装置は送信装置へ確認応答（ＡＣＫ：ACKnowledgement）を返信する。送信装置にはアプリケーション層、ＴＣＰ層、ＩＰ層、イーサネット層の各処理レイヤがあるが、図１９にはＴＣＰ層以下を記載する。【０００７】
データとＡＣＫにはそれぞれシーケンス番号が付与されている。以降、データのシーケンス番号をデータ番号、ＡＣＫのシーケンス番号をＡＣＫ番号と呼ぶ。図１９には、ＴＣＰ層から出力されたデータ番号１１以降のデータの送信を示している。また、簡単のため、送信装置のＴＣＰ層は、受信したＡＣＫ番号に６を加えたデータ番号のデータまでを送信できるものとする。【０００８】
ＴＣＰ層が出力したデータは、ＩＰ層、イーサネット層でそれぞれバッファされ、イーサネット層から順次出力される。図１９では１行に１つのデータが送信されている。イーサネット層には１つのデータ、ＩＰには６つのデータをバッファできるものとする。受信装置は受信したデータ番号の次の番号（つまり、次に受信することを期待する番号）をＡＣＫ番号とする。【０００９】
図１９の例では、データ１２がネットワークにて消失したとしている。受信装置は、データ１３を受信したとき、到着を期待していたのはデータ１２であるので、ＡＣＫ１２を返信する。受信装置は、データ１２が到着するまで、他のデータを受信した際にはＡＣＫ１２を返信する。【００１０】
送信装置のＴＣＰ層は、３つの重複したＡＣＫ（ＡＣＫ１２）が到着したことで、データ１２が消失したことと判断し、データ１２（下線付き）を再送する。このとき、送信装置のイーサネット層とＩＰ層のバッファには、データ１７、データ１８が格納されている。そのため、データ１２が送信されるのはデータ１７、データ１８の後になる。さらに、データ１２が受信装置に到着してＡＣＫ（ＡＣＫ１９）が送信装置に到着するまで、送信装置が送信可能なデータはデータ１８（ＡＣＫ番号（１２）＋６）までとなる。そのため、送信装置はデータ１９以降を送信できず、送信が一時停止してしまう。【００１１】
一方、再送データを他のデータより優先的に転送する方法が、特許文献１および特許文献２に記載されている。【００１２】
特許文献１では、再送パケットをヘッダ情報に基づいて検出し、再送パケットのＩＰヘッダのＴｏＳ（Type of Service）フィールドの値を通常より高い優先度を示す値に書き換える方法が提案されている。これにより、後段の装置では、ＴｏＳフィールドの値によって再送データを優先的に転送することが可能になる。【００１３】
また、特許文献２では、再送パケットをＵＤＰ（User Datagram Protocol）でカプセル化し、後段の装置で再送パケットを優先的に転送する方法が提案されている。
【先行技術文献】
【特許文献】
【００１４】
【特許文献１】国際公開第２００２／０５１１０１号
【特許文献２】特開２０１４−０４９９０５号公報
【発明の概要】
【発明が解決しようとする課題】
【００１５】
しかし、特許文献１に記載の方法および特許文献２に記載の方法のいずれも、後段の装置での優先処理を可能とする方法であり、送信装置内では再送データを優先することができない。【００１６】
特許文献１に記載の方法のように、ＩＰ層で再送パケットのＴｏＳフィールドを書き換えても、データリンク層以下ではＴｏＳフィールドを参照しないため、再送パケットを優先することができない。また、特許文献２に記載の方法のように、再送パケットをＵＤＰでカプセル化しても、ＩＰ層以下には効果がない。【００１７】
そのため、特許文献１に記載の方法および特許文献２に記載の方法のいずれも、送信装置から再送データが出力されるまでの遅延が大きくなる問題を解決することができない。【００１８】
本発明の目的は、再送データが出力されるまでの遅延を短縮することを可能とする、送信装置、方法、プログラムおよび記録媒体を提供することにある。
【課題を解決するための手段】
【００１９】
上述の問題を解決するために、本発明の送信装置は、データを入力するデータ入力手段と、第一の転送手段と、第二の転送手段と、前記データを前記第一の転送手段へ転送するデータ送信手段と、前記データの再送の要否を判断する再送制御手段と、前記再送が必要と判断したとき、再送すべき再送データを前記第二の転送手段へ転送する再送データ送信手段と、前記再送データの前記第二の転送手段への前記転送の時点で前記第一の転送手段に残留する前記データの少なくともいずれかに先立って、前記第二の転送手段の前記再送データを前記第一の転送手段の前記データと同一の宛先に出力する入出力処理手段とを備えることを特徴とする。【００２０】
また、本発明の送信方法は、データ入力部から入力されたデータを第一の転送部へ転送し、前記データの再送の要否を判断し、前記再送が必要と判断したとき、再送すべき再送データを第二の転送部へ転送し、前記再送データの前記第二の転送部への前記転送の時点で前記第一の転送部に残留する前記データの少なくともいずれかに先立って、前記第二の転送部の前記再送データを前記第一の転送部の前記データと同一の宛先に出力することを特徴とする。【００２１】
また、本発明のコンピュータ読み取り可能な記録媒体に記録された送信プログラムは、コンピュータに、データ入力部から入力されたデータを第一の転送部へ転送するデータ送信機能と、前記データの再送の要否を判断する再送制御機能と、前記再送が必要と判断したとき、再送すべき再送データを第二の転送部へ転送する再送データ送信機能と、前記再送データの前記第二の転送部への前記転送の時点で前記第一の転送部に残留する前記データの少なくともいずれかに先立って、前記第二の転送部の前記再送データを前記第一の転送部の前記データと同一の宛先に出力する入出力処理機能とを実現させることを特徴とする。
【発明の効果】
【００２２】
本発明の送信装置、方法、プログラムおよび記録媒体により、再送データが出力されるまでの遅延を短縮することが可能になる。
【図面の簡単な説明】
【００２３】
【図１】本発明の第一の実施形態の送信装置の構成例を示す図である。
【図２】本発明の第一の実施形態の送信装置の動作例を示す図である。
【図３】本発明の第二の実施形態の送信システムの構成例を示す図である。
【図４】本発明の第二の実施形態の送信装置の構成例を示す図である。
【図５】本発明の第二の実施形態の受信装置の構成例を示す図である。
【図６】本発明の第二の実施形態の送信装置の処理レイヤと論理的／物理的処理部の対応関係の例を示す図である。
【図７】本発明の第二の実施形態の送信装置のデータ転送の例を示す図である。
【図８】本発明の第二の実施形態の送信装置の動作例を示す図である。
【図９】本発明の第二の実施形態の送信装置の動作例を示す図である。
【図１０】本発明の第二の実施形態の送信装置の動作例を示す図である。
【図１１】本発明の第三の実施形態の送信装置の構成例を示す図である。
【図１２】本発明の第三の実施形態の送信装置の動作例を示す図である。
【図１３】本発明の第四の実施形態の送信装置の構成例を示す図である。
【図１４】本発明の第五および第六の実施形態の送信装置の構成例を示す図である。
【図１５】本発明の第六の実施形態の送信装置の構成例を示す図である。
【図１６】本発明の第六の実施形態の送信装置の動作例を示す図である。
【図１７】本発明の第七の実施形態の送信装置の動作例を示す図である。
【図１８】本発明の各実施形態のハードウェア構成例を示す図である。
【図１９】一般的な送信装置のデータ転送の例を示す図である。
【図２０】一般的な送信装置の処理レイヤと論理的／物理的処理部の対応関係の例を示す図である。
【発明を実施するための形態】
【００２４】
［第一の実施形態］
本発明の第一の実施の形態について説明する。
【００２５】
図１に本実施形態の送信装置１０の構成例を示す。本実施形態の送信装置１０は、データ入力部１１、第一の転送部１２、第二の転送部１３、データ送信部１４、再送制御部１５、再送データ送信部１６および入出力処理部１７により構成される。
【００２６】
データ入力部１１は、データを入力する部分である。データ送信部１４は、データを第一の転送部１２へ転送する部分である。再送制御部１５は、データの再送の要否を判断する部分である。再送データ送信部１６は、再送が必要と判断したとき、再送すべき再送データを第二の転送部１３へ転送する部分である。入出力処理部１７は、再送データの第二の転送部１３への転送の時点で第一の転送部１２に残留するデータの少なくともいずれかに先立って、第二の転送部１３の再送データを第一の転送部１２のデータと同一の宛先に出力する部分である。
【００２７】
このように送信装置１０を構成することによって、送信装置１０は、再送データの第二の転送部１３への転送の時点で第一の転送部１２に残留するデータの少なくともいずれかに先立って、第二の転送部１３の再送データを第一の転送部１２のデータと同一の宛先に出力する。これにより、第一の転送部１２上のバッファに多くのデータが格納されていたとしても、第二の転送部１３を使用して、再送データをより早く出力することが可能になる。そのため、再送データが出力されるまでの遅延を短縮することが可能になる。
【００２８】
次に、図２に本実施形態の送信装置１０の動作の例を示す。
【００２９】
データ送信部１４は、データ入力部１１が入力したデータを第一の転送部１２へ転送する（ステップＳ１０１、Ｓ１０２）。再送制御部１５は、データの再送の要否を判断し、再送データ送信部１６は、再送が必要と判断したとき、再送すべき再送データを第二の転送部１３へ転送する（ステップＳ１０３、Ｓ１０４）。入出力処理部１７は、再送データの第二の転送部１３への転送の時点で第一の転送部１２に残留するデータの少なくともいずれかに先立って、第二の転送部１３の再送データを第一の転送部１２のデータと同一の宛先に出力する（ステップＳ１０５）。
【００３０】
このように動作することによって、送信装置１０は、再送データの第二の転送部１３への転送の時点で第一の転送部１２に残留するデータの少なくともいずれかに先立って、第二の転送部１３の再送データを第一の転送部１２のデータと同一の宛先に出力する。これにより、第一の転送部１２上のバッファに多くのデータが格納されていたとしても、第二の転送部１３を使用して、再送データをより早く出力することが可能になる。そのため、再送データが出力されるまでの遅延を短縮することが可能になる。
【００３１】
以上で説明したように、本発明の第一の実施形態では、送信装置は、再送データの第二の転送部への転送の時点で第一の転送部に残留するデータの少なくともいずれかに先立って、第二の転送部の再送データを第一の転送部のデータと同一の宛先に出力する。これにより、第一の転送部上のバッファに多くのデータが格納されていたとしても、第二の転送部を使用して、再送データをより早く出力することが可能になる。そのため、再送データが出力されるまでの遅延を短縮することが可能になる。
【００３２】
［第二の実施形態］
次に、本発明の第二の実施の形態について説明する。本実施形態では、第一の実施形態の送信装置についてより具体的に説明する。
【００３３】
まず、図３に、本実施形態の送信装置２０を用いた送受信システムの構成例を示す。
【００３４】
送信装置２０と受信装置７０は、ネットワーク９０を介し、ＴＣＰコネクション９１を利用してデータ転送を行う。送信装置２０はデータを受信装置７０へ送信し、受信装置７０はデータに対する確認応答（ＡＣＫ）を送信装置２０へ返信する。データはネットワーク９０上で消失する可能性がある。ネットワーク９０としては、たとえば、インターネットなどを想定する。
【００３５】
図４に本実施形態の送信装置２０の構成例を示す。図１の構成例との差分は、第一の転送部１２が第一のネットワーク処理部２１および第一のデータリンク処理部２２を、第二の転送部１３が第二のネットワーク処理部２３および第二のデータリンク処理部２４を備える点である。また、データ送信部１４、再送制御部１５および再送データ送信部１６をまとめて、トランスポート処理部２５としている。
【００３６】
データ入力部１１は、送信するデータをデータ送信部１４へ入力する部分である。データ入力部１１は、アプリケーション等のデータを、データ送信部１４へ入力する。
【００３７】
トランスポート処理部２５は、データ入力部１１からデータを受け取り、受け取ったデータをセグメント化し、再送制御しつつ信頼性ある通信を実現する部分である。トランスポート処理部２５は、トランスポート層の処理を行う部分であり、本実施形態では、ＴＣＰ層の処理を行う。トランスポート処理部２５は、データ送信部１４、再送制御部１５および再送データ送信部１６を備える。
【００３８】
データ送信部１４は、データ入力部１１から受け取ったデータをセグメント化して第一のネットワーク処理部２１へ転送する部分である。また、セグメント化したデータを、再送用に、再送制御部１５にも転送する。
【００３９】
再送制御部１５は、再送制御を行う部分であり、データの再送の要否を判断する。
【００４０】
再送データ送信部１６は、再送制御部１５が再送が必要と判断したとき、再送データ（セグメント化はデータ送信部１４で実施済み）を第二のネットワーク処理部２３へ転送する部分である。
【００４１】
第一のネットワーク処理部２１は、データ送信部１４から受け取ったデータをパケット化し、第一のデータリンク処理部２２へ渡す部分である。第一のネットワーク処理部２１は、ネットワーク層の処理を行う部分であり、本実施形態では、ＩＰ層の処理を行う。
【００４２】
また、第一のネットワーク処理部２１は、データ送信部１４からデータを受け取って一時的に格納する第一のネットワークバッファを持つ。データ送信部１４は、第一のネットワークバッファにデータを格納し、第一のネットワーク処理部２１は、第一のネットワークバッファから取り出したデータをパケット化して第一のデータリンク処理部２２へ渡す。
【００４３】
第二のネットワーク処理部２３は、再送データ送信部１６から受け取った再送データをパケット化し、第二のデータリンク処理部２４に渡す部分である。第二のネットワーク処理部２３も、第一のネットワーク処理部２１と同様に、ネットワーク層の処理を行う部分であり、本実施形態では、ＩＰ層の処理を行う。
【００４４】
また、第二のネットワーク処理部２３は、再送データ送信部１６からデータを受け取って一時的に格納する第二のネットワークバッファを持つ。再送データ送信部１６は、第二のネットワークバッファにデータを格納し、第二のネットワーク処理部２３は、第二のネットワークバッファから取り出したデータをパケット化して第二のデータリンク処理部２４へ渡す。
【００４５】
第一のデータリンク処理部２２および第二のデータリンク処理部２４は、それぞれ、第一のネットワーク処理部２１および第二のネットワーク処理部２３から受け取ったパケットをフレーム化して入出力処理部１７へ渡す部分である。第一のデータリンク処理部２２および第二のデータリンク処理部２４は、データリンク層の処理を行う部分であり、本実施形態では、イーサネットの処理を行う。
【００４６】
また、第一のデータリンク処理部２２は、第一のネットワーク処理部２１からパケットを受け取って一時的に格納する第一のデータリンクバッファを持つ。第一のネットワーク処理部２１は、第一のデータリンクバッファにパケットを格納し、第一のデータリンク処理部２２は、第一のデータリンクバッファから取り出したパケットをフレーム化して入出力処理部１７へ渡す。
【００４７】
また、第二のデータリンク処理部２４は、第二のネットワーク処理部２３からパケットを受け取って一時的に格納する第二のネットワークバッファを持つ。第二のネットワーク処理部２３は、第二のデータリンクバッファにパケットを格納し、第二のデータリンク処理部２４は、第二のデータリンクバッファから取り出したパケットをフレーム化して入出力処理部１７へ渡す。
【００４８】
入出力処理部１７は、第一のデータリンク処理部２２および第二のデータリンク処理部２４から受け取ったデータをネットワーク９０に出力する部分である。
【００４９】
図５に受信装置７０の構成例を示す。本実施形態の送信装置２０は、一般的なＴＣＰの受信動作を実現する受信装置７０と通信が可能である。そのため、図５には、本実施形態の説明に必要な部分のみを図示する。
【００５０】
受信装置７０は、アプリケーション７１、トランスポート受信部７２、ネットワーク処理部７５、データリンク処理部７６および入出力処理部７７を備える。また、トランスポート受信部７２は、データ受信部７３およびＡＣＫ送信部７４を備える。
【００５１】
アプリケーション７１は、受信装置７０が受信したデータを受け取り、利用する部分である。
【００５２】
トランスポート受信部７２は、ネットワーク処理部７５から受け取ったセグメントに対してＡＣＫを送信し、セグメントをデータ化してアプリケーション７１に渡す部分である。本実施形態では、トランスポート受信部７２は、ＴＣＰ層のデータ受信処理を行う。
【００５３】
データ受信部７３は、データ（セグメント）を受信する部分である。ＡＣＫ送信部７４は、受信したデータに対するＡＣＫを作成し送信する部分である。
【００５４】
ネットワーク処理部７５は、データリンク処理部７６から受け取ったパケットをセグメント化しデータ受信部７３へと渡す部分である。本実施形態では、ネットワーク処理部７５は、ＩＰ層のデータ受信処理を行う。また、ネットワーク処理部７５は、ＡＣＫ送信部７４から受け取ったＡＣＫをパケット化してデータリンク処理部７６へ渡す。
【００５５】
データリンク処理部７６は、入出力処理部７７から受け取った信号をパケット化してネットワーク処理部７５へ渡す部分である。本実施形態では、データリンク処理部７６は、イーサネットの処理を行う。また、データリンク処理部７６は、ネットワーク処理部７５から受け取ったパケットをフレーム化して入出力処理部７７へ渡す。
【００５６】
入出力処理部７７は、ネットワーク９０から受け取った信号をフレーム化してデータリンク処理部７６に渡す部分である。また、入出力処理部７７は、データリンク処理部７６から受け取ったフレームをネットワーク９０へ出力する。
【００５７】
次に、本実施形態の送信装置２０の再送用の転送部（第二の転送部１３）について、処理レイヤと論理的／物理的処理部の対応関係を示しつつ説明する。
【００５８】
一般的に利用可能なイーサネットのＮＩＣ（Network Interface Card）の中には仮想化機能を有するものがある。この仮想化機能を用いると、ＯＳ（Operating System）は、物理的には一つのＮＩＣを、複数の割り込み番号を持つ複数のＮＩＣとして扱えるようになる。この仮想化機能は、本来、ＯＳ上に複数の仮想マシンを動作させ、それぞれの仮想マシンにＮＩＣを仮想的に割り当てるための機能である。本実施形態の送信装置は、このＮＩＣの仮想化機能を用いることで、ネットワーク層とデータリンク層に二つの経路を備え、また、一つのインタフェースでネットワークに接続することが可能になる。これにより、本実施形態の送信装置は、一般的なパソコンとＮＩＣを用いても実現することが可能になる。
【００５９】
図２０に、一般的なＴＣＰ／ＩＰ送信装置における各処理レイヤと、論理的／物理的な処理部の対応関係の概要の例を示す。図２０（ａ）は、ＴＣＰ／ＩＰにおける各処理レイヤを、図２０（ｂ）は、論理的／物理的な処理部の構成を示す。
【００６０】
図２０（ｂ）では、Ｍａｉｎ  ｂｏａｒｄ（計算機本体）とＮＩＣがＰＣＩ（Peripheral Component Interconnect）バスで接続されている。イーサネットの処理は、一部がＭａｉｎ  ｂｏａｒｄのＯＳ／Ｄｒｉｖｅｒで、一部がＮＩＣで処理される。一般的なＯＳでは、Ｍａｉｎ  ｂｏａｒｄ上のメモリにＩＰ（イーサネットの一部処理も含む場合がある）のバッファがあり、ＮＩＣにイーサネットのバッファがある。
【００６１】
これに対し、図６に本実施形態の送信装置の各処理レイヤと論理的／物理的な処理部の対応関係の概要の例を示す。ＮＩＣの仮想化機能を利用すると、図６（ｂ）のように、物理的なＮＩＣ内に、仮想ＮＩＣ（図６のｖＮＩＣ）を２つ作成することが可能である。第一の転送部１２および第二の転送部１３のデバイスドライバからそれぞれの仮想ＮＩＣにフレームを渡すことで、イーサネットまでバッファが分離された経路を作成することができる。
【００６２】
このように送信装置２０を構成することによって、送信装置２０は、再送データの第二の転送部１３への転送の時点で第一の転送部１２に残留するデータの少なくともいずれかに先立って、第二の転送部１３の再送データを第一の転送部１２のデータと同一の宛先に出力する。これにより、第一の転送部１２上のバッファに多くのデータが格納されていたとしても、第二の転送部１３を使用して、再送データをより早く出力することが可能になる。そのため、再送データが出力されるまでの遅延を短縮することが可能になる。
【００６３】
次に、本実施形態の送信装置２０と受信装置７０の通信手順について説明する。なお、受信装置７０の動作は既存のＴＣＰの受信動作で良いため、ここでは主に送信装置２０に着目して説明する。
【００６４】
図７に、本実施形態のＴＣＰ／ＩＰによるデータ転送の例を示す。送信装置２０は受信装置７０へデータを送信し、受信装置７０は送信装置２０へ確認応答（ＡＣＫ）を返信する。送信装置にはアプリケーション層、ＴＣＰ層、ＩＰ層、イーサネット層の各処理レイヤがあるが、図７にはＴＣＰ層以下を記載する。
【００６５】
データとＡＣＫにはそれぞれシーケンス番号が付与されている。以降、データのシーケンス番号をデータ番号、ＡＣＫのシーケンス番号をＡＣＫ番号と呼ぶ。図７には、ＴＣＰ層から出力されたデータ番号１１以降のデータの送信を示している。また、簡単のため、送信装置のＴＣＰ層は、受信したＡＣＫ番号に６を加えたデータ番号のデータまでを送信できるものとする。
【００６６】
ＴＣＰ層が出力したデータは、ＩＰ層、イーサネット層でそれぞれバッファされ、イーサネット層から順次出力される。図７では１行に１つのデータが送信されている。イーサネット層には１つのデータ、ＩＰ層には６つのデータをバッファできるものとする。また、イーサネット層は、通常データ用のバッファ１と再送データ用のバッファ２を持つものとする。ＩＰ層も２つのバッファを持つが、ここでは通常データ用のバッファのみを図示する。受信装置は受信したデータ番号の次の番号（つまり、次に受信することを期待する番号）をＡＣＫ番号とする。
【００６７】
図７の例では、データ１２がネットワーク９０にて消失したとしている。受信装置７０は、データ１３を受信したとき、到着を期待していたのはデータ１２であるので、ＡＣＫ１２を返信する。受信装置は、データ１２が到着するまで、他のデータを受信した際にはＡＣＫ１２を返信する。
【００６８】
送信装置２０のＴＣＰ層は、３つの重複したＡＣＫ（ＡＣＫ１２）が到着したことで、データ１２が消失したことと判断し、データ１２（下線付き）を再送する。このとき、本実施形態では、第二のネットワーク処理部２３および第二のデータリンク処理部２４を用いて再送データ（データ１２）を送信する。そして、データ１２は、第一のネットワーク処理部２１のバッファに格納されていたデータ１７、データ１８より先に入出力処理部１７から出力される。
【００６９】
このように、データ１２は、図１９の例では、データ１７、データ１８の後に出力されるのに対し、図７の例では、データ１７、データ１８より先に出力される。そのため、本実施形態の送信装置２０は、再送データが出力されるまでの遅延を短縮することが可能になる。
【００７０】
また、図１９の例では、データ１２が受信装置に到着し、その後返信されたＡＣＫ（ＡＣＫ１９）が送信装置に到着するまでの間、送信可能なデータがない状態となっている。これに対し、図７の例では、データ１２が受信装置７０に到着し、その後返信されたＡＣＫ（ＡＣＫ１７）が送信装置２０に到着するまでの間にも、送信可能なデータ（ＡＣＫ番号（１２）＋６までのデータ、つまり、データ１７、データ１８）がある。このように、本実施形態の送信装置２０は、送信が一時停止する時間を短縮することができる。（図７の場合は、一時停止する時間をなしにすることができる。）そのため、より安定した高い性能にてデータ転送が可能になる。
【００７１】
次に、図８から図１０に本実施形態の送信装置２０の動作例を示す。なお、受信装置７０の動作は一般的なＴＣＰの受信動作と同様であるため、ここでは主に送信装置２０に着目して説明する。
【００７２】
送信装置２０は、送信装置２０と受信装置７０との間のＴＣＰコネクションを開設し、受信装置７０へ送信するデータをデータ入力部１１（アプリケーション）から受け取ると、データ送信処理を開始する。また、送信装置２０は、受信装置７０へ送信するデータがなく、かつ、アプリケーションからコネクション終了指示を受け取った場合、データ送信処理を終了する。図８から図１０は、データ送信処理を行っている間の、送信装置２０の動作例である。図８はデータ送信時の動作例、図９はＡＣＫ受信時の動作例、図１０は再送タイマー満了時の動作例である。
【００７３】
送信装置２０のデータ送信部１４は、データ入力部１１からデータを受け取ると（ステップＳ２０１でＹＥＳ）、データをＴＣＰセグメント化する。そして、輻輳ウィンドウ制御と広告ウィンドウに基づき送信可能な範囲のＴＣＰセグメントを第一の転送部１２へ転送する。第一の転送部１２の第一のネットワーク処理部２１は、受け取ったセグメントをＩＰパケット化して第一のデータリンク処理部２２へ転送する。第一のデータリンク処理部２２は、受け取ったパケットをイーサネットフレーム化し、入出力処理部１７へ転送する。そして、入出力処理部１７は受け取ったフレームを受信装置７０へ送信する（ステップＳ２０２）。ステップＳ２０２において、データ送信部１４から第一の転送部１２に転送されたセグメントは、入出力処理部１７から出力されるまでは、各レイヤ（ネットワーク層、データリンク層）のバッファに格納される。
【００７４】
また、データ送信部１４は、セグメントを第一の転送部１２へ転送するとともに、再送制御部１５にも転送する。そして、このとき、再送制御部１５は再送タイマーを起動する（ステップＳ２０３）。再送タイマーは、たとえばＲＴＴ（Round-Trip Time：平準化されたパケット往復遅延時間）のｓ倍にセットする。また、各セグメントに対して一つの再送タイマーを起動する。
【００７５】
再送制御部１５では、入出力処理部１７、第二の転送部１３、再送データ送信部１６経由で受信装置７０からＡＣＫを受信すると（ステップＳ２０４でＹＥＳ）、ステップＳ２０３で起動した再送タイマーを無効化する（ステップＳ２０５）。図７のように、受信を期待するデータの番号がＡＣＫ番号としてＡＣＫに記載されている場合には、受信したＡＣＫのＡＣＫ番号の前の番号のセグメントまでの再送タイマーを無効化する。たとえば、ＡＣＫ番号が１２のときは、データ番号１１までの再送タイマーを無効化する。なお、ステップＳ２０５において、再送タイマーがすでに無効化されている場合、再送制御部１５は、再度無効化を行っても良いし、再送タイマーが起動中か否かを判断して、起動中の再送タイマーのみを無効化しても良い。
【００７６】
また、再送制御部１５では、３回同じＡＣＫ番号のＡＣＫを受信した場合（ステップＳ２０６でＹＥＳ）、データが消失したために再送が必要と判断する。そして、再送データ送信部１６は、受信したＡＣＫ番号に対応する再送データのセグメントを第二の転送部１３へ転送する。第二のネットワーク処理部２３は、受け取ったセグメントをＩＰパケット化し、第二のデータリンク処理部２４へ転送する。第二のデータリンク処理部２４は、受け取ったパケットをフレーム化して入出力処理部１７へ転送する。そして、入出力処理部１７は受け取ったフレームを受信装置７０へ送信する（ステップＳ２０７）。このとき、再送制御部１５では、再送したデータに対する再送タイマーを再起動する（ステップＳ２０８）。
【００７７】
また、再送制御部１５では、再送タイマーが満了したときにも（ステップＳ２０９でＹＥＳ）、満了した再送タイマーに対応するデータの再送が必要と判断する。そして、再送データ送信部１６は、該当するデータの再送データセグメントを第二の転送部１３経由で再送信する（ステップＳ２１０）。
【００７８】
このように動作することによって、送信装置２０は、再送データの第二の転送部１３への転送の時点で第一の転送部１２に残留するデータの少なくともいずれかに先立って、第二の転送部１３の再送データを第一の転送部１２のデータと同一の宛先に出力する。これにより、第一の転送部１２上のバッファに多くのデータが格納されていたとしても、第二の転送部１３を使用して、再送データをより早く出力することが可能になる。そのため、再送データが出力されるまでの遅延を短縮することが可能になる。
【００７９】
次に、本実施形態の効果について説明する。
【００８０】
第一の効果は、再送データの送信遅延の短縮が可能になることである。
【００８１】
一般的なハードウェア構成のＴＣＰ／ＩＰ／イーサネット送信装置では、送信バッファが大きいとき、再送データが出力されるまでの遅延が大きくなってしまう。ＴＣＰではデータの再送を制御するが、再送データを送信装置から優先的に送信する手段を持っていない。
【００８２】
これに対して、本実施形態の送信装置は、第一の転送部と第二の転送部を備え、第一の転送部を用いて通常データを送信し、第二の転送部を用いて再送データを送信する。そのため、第一の転送部上の送信バッファに大量にデータが格納されている場合であっても、第一の転送部上のデータより先に再送データを送信装置から出力することが可能になる。これにより、再送データの送信遅延を短縮することが可能になる。
【００８３】
第二の効果は、データリンク層での再送データの送信遅延の短縮が可能になることである。
【００８４】
一般的な構成の送信装置では、同じ宛先へのデータはデータリンク層が受け取った順番に送信されるため、再送データがデータリンク層から出力されるまでの遅延が大きくなる。ネットワーク層であるＩＰ層で優先制御を行っても、一般的なデータリンク層であるイーサネットでは優先制御の仕組みがないため、再送データが送信されるまでの時間を短縮することができない。
【００８５】
これに対して、本実施形態の送信装置は、第二のデータリンク処理部を備え、この第二のデータリンク処理部を用いて再送パケットを送信する。言い換えると、本実施形態の送信装置は、データリンク層に通常データ用のバッファと再送データ用のバッファとを備える。これにより、データリンク層での再送データの送信遅延の短縮が可能になる。
【００８６】
第三の効果は、一般的な送信装置のネットワーク層であっても、データリンク層の再送用バッファへ再送データを転送することが可能になることである。
【００８７】
一般的な送信装置のネットワーク層は、同じ宛先へのデータは一つのデータリンク層へ転送する。そのため、ネットワーク層で優先制御を行ったとしても、同じ宛先へのデータは一つのデータリンク層へ転送され、データリンク層で再送データが送信されるまでに遅延が生じてしまう。
【００８８】
これに対して、本実施形態の送信装置では、第二のネットワーク処理部と第二のデータリンク処理部とを備え、これを用いて再送データを転送する。言い換えると、本実施形態の送信装置は、ネットワーク層およびデータリンク層それぞれに通常データ用と再送データ用のバッファを備える。これにより、一般的な送信装置のネットワーク層であっても、ネットワーク層の再送用バッファからデータリンク層の再送用バッファへ再送データを転送することが可能になる。その結果、データリンク層での再送データの送信遅延の短縮が可能になる。
【００８９】
第四の効果は、ネットワーク層、データリンク層で再送データを識別する場合に比べて、コストの低減が可能になることである。
【００９０】
ネットワーク層やデータリンク層のデータは、再送パケットか否かの情報を持たない。そのため、ネットワーク層やデータリンク層で再送パケットを識別するためには、入力されたすべてのデータのＴＣＰ／ＩＰヘッダを参照し、該当するＴＣＰ／ＩＰコネクションのデータを取り出し、ＴＣＰによる再送動作が行われたことを推定する必要がある。ＴＣＰの再送動作は、３回以上同じＡＣＫが送信されたとき、再送信タイマーが期限切れとなったとき（Retransmission TimeOut）、ＳＡＣＫ（Selective ACK）オプションで消失データを通知されたときなどに行われる。これらの再送動作の発生を推定するためには、多くのコスト（計算機資源、記憶資源、計算時間、電力コスト等）が必要となる。
【００９１】
これに対して、本実施形態の送信装置では、トランスポート層が再送データを第二の転送部に振り分ける。そのため、ネットワーク層やデータリンク層は再送パケットの識別が不要になる。これにより、ネットワーク層やデータリンク層で再送データを識別する場合に比べてコストを低減することが可能になる。
【００９２】
第五の効果は、複数のデータリンク層のデータを同一の出力インタフェース（出力ポート）から出力することが可能になることである。
【００９３】
一般的な構成の送信装置は、複数のデータリンク層を経由したデータをデータリンク層ごとに異なる出力インタフェースから出力する。したがって、第二の転送部を経由する再送データは、通常データとは異なる出力インタフェースから出力されることになる。再送データが通常データとは異なる出力インタフェースから送信されると、受信装置は、正常に再送データを受信することが困難になる。
【００９４】
これに対して、本実施形態の送信装置は、たとえば、ＮＩＣの仮想化機能を利用することで、複数のデータリンク層が一つの出力インタフェース（出力ポート）を共有する構成とすることが可能である。これにより、送信装置は、複数のデータリンク層のデータを同一の出力インタフェースから出力することが可能になる。
【００９５】
以上で説明したように、本発明の第二の実施形態では、送信装置は、再送データの第二の転送部への転送の時点で第一の転送部に残留するデータの少なくともいずれかに先立って、第二の転送部の再送データを第一の転送部２のデータと同一の宛先に出力する。これにより、第一の転送部上のバッファに多くのデータが格納されていたとしても、第二の転送部を使用して、再送データをより早く出力することが可能になる。そのため、再送データが出力されるまでの遅延を短縮することが可能になる。
【００９６】
また、本実施形態の送信装置は、データリンク層に通常データ用のバッファと再送データ用のバッファとを備える。これにより、データリンク層での再送データの送信遅延の短縮が可能になる。
【００９７】
また、本実施形態の送信装置は、ネットワーク層およびデータリンク層それぞれに通常データ用と再送データ用のバッファを備える。これにより、一般的な送信装置のネットワーク層であっても、ネットワーク層の再送用バッファからデータリンク層の再送用バッファへ再送データを転送することが可能になる。その結果、データリンク層での再送データの送信遅延の短縮が可能になる。
【００９８】
また、本実施形態の送信装置では、トランスポート層が再送データを第二の転送部に振り分ける。そのため、ネットワーク層やデータリンク層では再送パケットの識別が不要になる。これにより、ネットワーク層やデータリンク層で再送データを識別する場合に比べてコストを低減することが可能になる。
【００９９】
また、本実施形態の送信装置は、たとえば、ＮＩＣの仮想化機能を利用することで、複数のデータリンク層が一つの出力インタフェース（出力ポート）を共有する構成とすることが可能である。これにより、複数のデータリンク層に送信したデータを同一の出力インタフェースから出力することが可能になる。
【０１００】
［第三の実施形態］
次に、本発明の第三の実施の形態について説明する。
【０１０１】
第二の実施形態では、ネットワーク処理部とデータリンク処理部を二つずつ設け、転送部が異なるネットワーク処理部とデータリンク処理部を備えるように構成した。これに対して、本実施形態では、一つのネットワーク処理部を転送部で共有する。
【０１０２】
図１１に本実施形態の送信装置３０の構成例を示す。図４との違いは、ネットワーク処理部が一つである点、および、再送データ送信部１６が再送データ送信部３６となっている点である。他の部分については図４と同様のため、説明を省略する。
【０１０３】
再送データ送信部３６と再送データ送信部１６との違いは、再送データ送信部３６では、ネットワーク処理部３１へ転送する再送データのセグメントに、再送データであることを示すフラグを付与する点である。
【０１０４】
ネットワーク処理部３１は、データ送信部１４および再送データ送信部３６からセグメントを受け取り、パケット化する。また、セグメントのフラグを確認し、通常データを第一のデータリンク処理部２２へ、再送データを第二のデータリンク処理部２４へ転送する。
【０１０５】
このように送信装置３０を構成することによって、送信装置３０は、再送データの第二の転送部１３への転送の時点で第一の転送部１２に残留するデータの少なくともいずれかに先立って、第二の転送部１３の再送データを第一の転送部１２のデータと同一の宛先に出力する。これにより、第一の転送部１２上のバッファに多くのデータが格納されていたとしても、第二の転送部１３を使用して、再送データをより早く出力することが可能になる。そのため、再送データが出力されるまでの遅延を短縮することが可能になる。
【０１０６】
また、本実施形態の送信装置は、トランスポート層からネットワーク層へ再送データを転送する際に再送データであることを示すフラグを再送データに付与する。また、ネットワーク層では、そのフラグを確認し、再送データである場合は再送用のデータリンク層へ転送する。そのため、ネットワーク層が一つであっても、二つのデータリンク層へ通常データと再送データを振り分けることが可能になる。これにより、データリンク層での再送データの送信遅延の短縮が可能になる。
【０１０７】
また、本実施形態の送信装置は、ネットワーク処理部を各転送部で共有する。これにより、ネットワーク処理部を二つ備える場合に比べて、送信装置が使用するハードウェア資源を少なくすることが可能になる。
【０１０８】
次に、図８から図１０、図１２を用いて本実施形態の送信装置３０の動作例について説明する。
【０１０９】
再送データ送信部３６は、図９のステップＳ２０７および図１０のステップＳ２１０において、再送データのセグメントを転送する際、再送データのセグメントに再送データであることを示すフラグを付与する。そして、ネットワーク処理部３１は、図８のステップＳ２０２、図９のステップＳ２０７および図１０のステップＳ２１０において、セグメントのフラグを確認し、通常データを第一のデータリンク処理部２２へ、再送データを第二のデータリンク処理部２４へ転送する。
【０１１０】
図１２に、図８のステップＳ２０２、図９のステップＳ２０７および図１０のステップＳ２１０における、ネットワーク処理部３１の動作の例を示す。
【０１１１】
ネットワーク処理部３１では、データ送信部１４あるいは再送データ送信部３６からセグメントを受信すると（ステップＳ３０１）、セグメントをパケット化する（ステップＳ３０２）。そして、セグメントに再送データであることを示すフラグが付与されていなければ（ステップＳ３０３でＮＯ）、パケットを第一のデータリンク処理部２２へ転送する（ステップＳ３０４）。セグメントに再送データであることを示すフラグが付与されていれば、パケットを第二のデータリンク処理部２４へ転送する（ステップＳ３０５）。
【０１１２】
このように動作することによって、送信装置３０は、再送データの第二の転送部１３への転送の時点で第一の転送部１２に残留するデータの少なくともいずれかに先立って、第二の転送部１３の再送データを第一の転送部１２のデータと同一の宛先に出力する。これにより、第一の転送部１２上のバッファに多くのデータが格納されていたとしても、第二の転送部１３を使用して、再送データをより早く出力することが可能になる。そのため、再送データが出力されるまでの遅延を短縮することが可能になる。
【０１１３】
以上で説明したように、本発明の第三の実施形態では、第一および第二の実施形態と同様に、送信装置は、再送データの第二の転送部への転送の時点で第一の転送部に残留するデータの少なくともいずれかに先立って、第二の転送部の再送データを第一の転送部のデータと同一の宛先に出力する。これにより、第一の転送部上のバッファに多くのデータが格納されていたとしても、第二の転送部を使用して、再送データをより早く出力することが可能になる。そのため、再送データが出力されるまでの遅延を短縮することが可能になる。
【０１１４】
また、本実施形態の送信装置は、トランスポート層からネットワーク層へ再送データを出力する際に再送データであることを示すフラグを再送データに付与する。また、ネットワーク層は、そのフラグを確認し、再送データを再送用のデータリンク層へ転送する。そのため、ネットワーク層が一つであっても、二つのデータリンク層へ通常データと再送データを振り分けることが可能になる。これにより、データリンク層での再送データの送信遅延の短縮が可能になる。
【０１１５】
また、本実施形態の送信装置は、ネットワーク処理部を各転送部で共有する。これにより、ネットワーク処理部を二つ備える場合に比べて、送信装置が使用するハードウェア資源を少なくすることが可能になる。
【０１１６】
［第四の実施形態］
次に、本発明の第四の実施の形態について説明する。
【０１１７】
第二の実施形態では、ネットワーク処理部とデータリンク処理部を二つずつ設け、各転送部が異なるネットワーク処理部とデータリンク処理部を備えるように構成した。また、第三の実施形態では、一つのネットワーク処理部を各転送部で共有した。これに対して、本実施形態では、一つのデータリンク処理部を各転送部で共有する。
【０１１８】
図１３に本実施形態の送信装置４０の構成例を示す。図４との違いは、データリンク処理部が一つである点である。他の部分については図４と同様のため、説明を省略する。
【０１１９】
データリンク処理部４１は、第一のネットワーク処理部２１および第二のネットワーク処理部２３からパケットを受け取り、フレーム化する。また、フレーム化したデータを入出力処理部１７へ転送する。
【０１２０】
このように送信装置４０を構成することによって、送信装置４０は、再送データの第二の転送部１３への転送の時点で第一の転送部１２に残留するデータの少なくともいずれかに先立って、第二の転送部１３の再送データを第一の転送部１２のデータと同一の宛先に出力する。これにより、第一の転送部１２上のバッファに多くのデータが格納されていたとしても、第二の転送部１３を使用して、再送データをより早く出力することが可能になる。そのため、再送データが出力されるまでの遅延を短縮することが可能になる。
【０１２１】
また、本実施形態の送信装置は、二つのネットワーク処理部を持つ。これにより、ネットワーク層での再送データの送信遅延の短縮が可能になる。
【０１２２】
また、本実施形態の送信装置は、データリンク処理部を各転送部で共有する。これにより、データリンク処理部を二つ備える場合に比べて、送信装置が使用するハードウェア資源を少なくすることが可能になる。
【０１２３】
次に、図８から図１０を用いて本実施形態の送信装置４０の動作例について説明する。
【０１２４】
図８のステップＳ２０２において、データ送信部１４は、第一のネットワーク処理部２１へデータを転送する。データを受け取った第一のネットワーク処理部２１は、データリンク処理部４１へデータを転送する。そして、データリンク処理部４１はデータを入出力処理部１７経由で出力する。
【０１２５】
また、図９のステップＳ２０７および図１０のステップＳ２１０において、再送データ送信部１６は第二のネットワーク処理部２３へ再送データを転送する。再送データを受け取った第二のネットワーク処理部２３は、データリンク処理部４１へデータを転送する。そして、データリンク処理部４１はデータを入出力処理部１７経由で出力する。
【０１２６】
このように動作することによって、送信装置４０は、再送データの第二の転送部１３への転送の時点で第一の転送部１２に残留するデータの少なくともいずれかに先立って、第二の転送部１３の再送データを第一の転送部１２のデータと同一の宛先に出力する。これにより、第一の転送部１２上のバッファに多くのデータが格納されていたとしても、第二の転送部１３を使用して、再送データをより早く出力することが可能になる。そのため、再送データが出力されるまでの遅延を短縮することが可能になる。
【０１２７】
以上で説明したように、本発明の第四の実施形態では、第一から第三の実施形態と同様に、送信装置は、再送データの第二の転送部への転送の時点で第一の転送部に残留するデータの少なくともいずれかに先立って、第二の転送部の再送データを第一の転送部のデータと同一の宛先に出力する。これにより、第一の転送部上のバッファに多くのデータが格納されていたとしても、第二の転送部を使用して、再送データをより早く出力することが可能になる。そのため、再送データが出力されるまでの遅延を短縮することが可能になる。
【０１２８】
また、本実施形態の送信装置は、二つのネットワーク処理部を持つ。これにより、ネットワーク層での再送データの送信遅延の短縮が可能になる。
【０１２９】
また、本実施形態の送信装置は、データリンク処理部を各転送部で共有する。これにより、データリンク処理部を二つ備える場合に比べて、送信装置が使用するハードウェア資源を少なくすることが可能になる。
【０１３０】
［第五の実施形態］
次に、本発明の第五の実施の形態について説明する。本実施形態は、ネットワーク処理部を二つ設ける場合に、第一のネットワーク処理部２１と第二のネットワーク処理部２３の通信フローに対する転送条件を同一にする形態である。
【０１３１】
一般的に、ＩＰ層では、サービス／通信の安全性を向上させるために、通信セッションの状態によってパケットフィルタを設定し、正常に開設がなされたＴＣＰコネクションのパケットのみを通過させるようになっている。このため、第二の転送部１３を使用する場合に、第一の転送部１２と第二の転送部１３のパケットフィルタの処理状態を同一にする必要がある場合がある。本実施形態では、第一の転送部１２と第二の転送部１３のパケットフィルタの処理状態などの通信フローに対する転送条件を同一にする形態について説明する。
【０１３２】
図１４に、本実施形態の送信装置５０の構成例を示す。図４に対して、状態記憶部５８を追加している。また、図１３に対して状態記憶部５８を追加しても良い。
【０１３３】
状態記憶部５８は、第一のネットワーク処理部２１および第二のネットワーク処理部２３のパケットフィルタの処理状態などの通信フローに対する転送条件を記憶させる部分である。第一のネットワーク処理部２１と第二のネットワーク処理部２３とがこの状態記憶部５８を共有することで、第一のネットワーク処理部２１と第二のネットワーク処理部２３とは転送条件を合わせることが可能になる。状態記憶部５８には、たとえば、パケットを通過させるコネクションについての、ＩＰアドレス、ポート番号などを記憶させることが可能である。
【０１３４】
このように送信装置５０を構成することによって、送信装置５０は、再送データの第二の転送部１３への転送の時点で第一の転送部１２に残留するデータの少なくともいずれかに先立って、第二の転送部１３の再送データを第一の転送部１２のデータと同一の宛先に出力する。これにより、第一の転送部１２上のバッファに多くのデータが格納されていたとしても、第二の転送部１３を使用して、再送データをより早く出力することが可能になる。そのため、再送データが出力されるまでの遅延を短縮することが可能になる。
【０１３５】
また、本実施形態の送信装置は、複数のネットワーク層の間に状態記憶部を設け、複数のネットワーク層の転送条件を同期させる。これにより、複数のネットワーク層を使用しても、それぞれのネットワーク層の転送条件を同期させ、処理に矛盾が生じないようにすることが可能になる。
【０１３６】
また、本実施形態の送信装置は、二つのネットワーク層の間に状態記憶部を設け、パケットフィルタの処理状態を同期させる。これにより、通信状態に応じて設定される動的なフィルタの処理状態を、二つのネットワーク層で同一にすることができるため、正常に通信することが可能になる。
【０１３７】
次に、本実施形態の送信装置５０の動作例について説明する。
【０１３８】
第一のネットワーク処理部２１と第二のネットワーク処理部２３は、動的フィルタの処理状態などの、通信フローに対する転送条件を変更するたびに、その転送条件を状態記憶部５８に記憶させる。また、フィルタリングなどの転送処理の際には、状態記憶部５８に記憶させた転送条件を参照して転送処理を行う。
【０１３９】
このように動作することによって、送信装置５０は、再送データの第二の転送部１３への転送の時点で第一の転送部１２に残留するデータの少なくともいずれかに先立って、第二の転送部１３の再送データを第一の転送部１２のデータと同一の宛先に出力する。これにより、第一の転送部１２上のバッファに多くのデータが格納されていたとしても、第二の転送部１３を使用して、再送データをより早く出力することが可能になる。そのため、再送データが出力されるまでの遅延を短縮することが可能になる。
【０１４０】
以上で説明したように、本発明の第五の実施形態では、第一から第三の実施形態と同様に、送信装置は、再送データの第二の転送部への転送の時点で第一の転送部に残留するデータの少なくともいずれかに先立って、第二の転送部の再送データを第一の転送部のデータと同一の宛先に出力する。これにより、第一の転送部上のバッファに多くのデータが格納されていたとしても、第二の転送部を使用して、再送データをより早く出力することが可能になる。そのため、再送データが出力されるまでの遅延を短縮することが可能になる。
【０１４１】
また、本実施形態の送信装置は、複数のネットワーク層の間に状態記憶部を設け、複数のネットワーク層の転送条件を同期させる。これにより、複数のネットワーク層を使用しても、それぞれのネットワーク層の転送条件を同期させ、処理に矛盾が生じないようにすることが可能になる。
【０１４２】
また、本実施形態の送信装置は、二つのネットワーク層の間に状態記憶部を設け、パケットフィルタの処理状態を同期させる。これにより、通信状態に応じて設定される動的なフィルタの処理状態を、二つのネットワーク層で同一にすることができるため、正常に通信することが可能になる。
【０１４３】
［第六の実施形態］
次に、本発明の第六の実施の形態について説明する。本実施形態は、再送データが追い越したデータ数を計測する形態である。
【０１４４】
第一から第五の実施形態のような、第二の転送部による再送データの優先制御を送信装置に導入しても、利用者にとっては、再送データが追い越したデータ数がわからなければ、優先制御を導入した効果を把握することが難しい。そのため、本実施形態では、再送データが優先制御によって追い越したデータ数を送信装置が計測することで、優先制御を導入した効果を利用者が把握することを可能にする。また、これにより、優先制御への投資効果が明らかになり、ユーザの満足度が改善される可能性がある。
【０１４５】
図１５に、本実施形態の送信装置６０の構成例を示す。図１５では、図４の構成例に状態記憶部５８を追加している。図１１や図１３の構成例に状態記憶部５８を追加することも可能である。
【０１４６】
本実施形態では、追い越したデータ数の算出を第二のネットワーク処理部２３、あるいは、第二のデータリンク処理部２４が行う。
【０１４７】
追い越したデータ数の算出を第二のネットワーク処理部２３が行う場合は、算出されるデータ数は、再送データがネットワーク層で追い越したデータ数となり、データリンク層で追い越したデータ数は含まれない。
【０１４８】
追い越したデータ数の算出を第二のデータリンク処理部２４が行う場合は、データリンク層で追い越したデータ数、あるいは、ネットワーク層で追い越したデータ数とデータリンク層で追い越したデータ数の合計を算出することができる。
【０１４９】
まず、追い越したデータ数の算出を第二のネットワーク処理部２３が行う場合について説明する。
【０１５０】
第一のネットワーク処理部２１は、データリンク層へデータパケットを転送するとき、そのデータ番号（ＴＣＰシーケンス番号）を状態記憶部５８に記憶させる。このデータ番号（第一のデータ番号）は、データリンク層へ転送済みのデータ番号である。
【０１５１】
また、データ送信部１４は、第一のネットワーク処理部２１へデータを転送するとき、そのデータ番号（第二のデータ番号）を状態記憶部５８に記憶させる。この第二のデータ番号は、第一のネットワーク処理部２１のバッファに格納されているデータの最大のデータ番号である。
【０１５２】
そして、第二のネットワーク処理部２３は、再送データをデータリンク層へ転送するとき、状態記憶部５８に記憶されている第一のデータ番号および第二のデータ番号に基づいて、ネットワーク層で追い越したデータ数を算出する。
【０１５３】
たとえば、図７の例の場合、ＩＰ層に格納されているデータ数は、（第二のデータ番号−第一のデータ番号）である。ＩＰ層からイーサネット層にデータ番号１２の再送データを転送したとき、状態記憶部５８が記憶している第一のデータ番号は１７、第二のデータ番号は１８である。このとき、ＩＰ層に格納されているデータ数は第二のデータ番号−第一のデータ番号＝１であり、これが、データ番号１２の再送データがＩＰ層で追い越したデータ数である。
【０１５４】
次に、データリンク層で追い越したデータ数を第二のデータリンク処理部２４が算出する場合について説明する。
【０１５５】
第一のデータリンク処理部２２は、入出力処理部１７へデータパケットを転送するとき、そのデータ番号（ＴＣＰシーケンス番号）（第三のデータ番号）を状態記憶部５８に記憶させる。この第三のデータ番号は、第一のデータリンク処理部２２から入出力処理部１７へ転送済みのデータ番号である。
【０１５６】
また、第一のネットワーク処理部２１（あるいはネットワーク処理部３１）は、第一のデータリンク処理部２２へデータを転送するとき、そのデータ番号（第一のデータ番号）を状態記憶部５８に記憶させる。この第一のデータ番号は、データリンク層へ転送済みのデータ番号であり、この場合、第一のデータリンク処理部２２のバッファに格納されているデータの最大のデータ番号である。
【０１５７】
第二のデータリンク処理部２４では、再送データを入出力処理部１７へ転送するとき、状態記憶部５８に記憶されている第三のデータ番号および第一のデータ番号に基づいて、データリンク層で追い越したデータ数を算出する。
【０１５８】
たとえば、図７の例の場合、イーサネット層のバッファ１に格納されているデータ数は、（第一のデータ番号−第三のデータ番号）である。イーサネット層のバッファ２から入出力処理部にデータ番号１２の再送データを転送したとき、状態記憶部５８が記憶している第三のデータ番号は１６、第一のデータ番号は１７である。このとき、イーサネット層のバッファ１に格納されているデータ数は第一のデータ番号−第三のデータ番号＝１であり、これが、データ番号１２の再送データがデータリンク層で追い越したデータ数である。
【０１５９】
次に、ネットワーク層で追い越したデータ数とデータリンク層で追い越したデータ数の合計を第二のデータリンク処理部２４が算出する場合について説明する。
【０１６０】
第一のデータリンク処理部２２は、入出力処理部１７へデータパケットを転送するとき、そのデータ番号（ＴＣＰシーケンス番号）（第三のデータ番号）を状態記憶部５８に記憶させる。この第三のデータ番号は、第一のデータリンク処理部２２から入出力処理部１７へ転送済みのデータ番号である。
【０１６１】
また、データ送信部１４は、第一のネットワーク処理部２１へデータを転送するとき、そのデータ番号（第二のデータ番号）を状態記憶部５８に記憶させる。この第二のデータ番号は、第一のネットワーク処理部２１のバッファに格納されているデータの最大のデータ番号である。
【０１６２】
第二のデータリンク処理部２４では、再送データを入出力処理部１７へ転送するとき、状態記憶部５８に記憶されている第三のデータ番号および第二のデータ番号に基づいて、データリンク層とネットワーク層で追い越したデータ数の合計を算出する。
【０１６３】
たとえば、図７の例の場合、ネットワーク層とイーサネット層のバッファ１に格納されているデータ数の合計は、（第二のデータ番号−第三のデータ番号）である。イーサネット層のバッファ２から入出力処理部にデータ番号１２の再送データを転送したとき、状態記憶部５８が記憶している第三のデータ番号は１６、第二のデータ番号は１８である。このとき、イーサネット層のバッファ１とＩＰ層に格納されているデータ数の合計は第二のデータ番号−第三のデータ番号＝２であり、これが、データ番号１２の再送データがデータリンク層およびネットワーク層で追い越したデータ数である。
【０１６４】
このように送信装置を構成することによって、送信装置は、再送データの第二の転送部１３への転送の時点で第一の転送部１２に残留するデータの少なくともいずれかに先立って、第二の転送部１３の再送データを第一の転送部１２のデータと同一の宛先に出力する。これにより、第一の転送部１２上のバッファに多くのデータが格納されていたとしても、第二の転送部１３を使用して、再送データをより早く出力することが可能になる。そのため、再送データが出力されるまでの遅延を短縮することが可能になる。
【０１６５】
また、本実施形態の送信装置は、状態記憶部に記憶させたデータ番号から、再送データが追い越したデータ数を算出する。これにより、優先制御を導入した効果を利用者が把握することが可能になる。
【０１６６】
次に、図１６に、本実施形態の送信装置６０の追い越しデータ数算出動作の動作例を示す。再送データの転送動作については、第一の実施形態から第五の実施形態の説明と同様のため、説明を省略する。
【０１６７】
まず、ネットワーク層で追い越したデータ数の算出動作の例について説明する。
【０１６８】
まず、第一のネットワーク処理部２１は、データリンク層へデータを転送する際（ステップＳ４０１でＹＥＳ）、そのデータ番号（第一のデータ番号）を状態記憶部５８へ記憶させる（ステップＳ４０２）。これは、第一のネットワーク処理部２１から転送済みのデータのデータ番号である。
【０１６９】
また、データ送信部１４は、データを第一のネットワーク処理部２１へ転送する際（ステップＳ４０３でＹＥＳ）、そのデータ番号（第二のデータ番号）を状態記憶部５８へ記憶させる（ステップＳ４０４）。これは、第一のネットワーク処理部２１のバッファに格納されているデータの最大のデータ番号である。
【０１７０】
そして、第二のネットワーク処理部２３は、再送データをデータリンク層へ転送する際（ステップＳ４０５でＹＥＳ）、状態記憶部５８の第一のデータ番号と第二のデータ番号とに基づいて、追い越しデータ数を算出する（ステップＳ４０６）。
【０１７１】
次に、データリンク層で追い越したデータ数の算出動作の例について説明する。
【０１７２】
まず、第一のデータリンク処理部２２は、入出力処理部１７へデータを転送する際（ステップＳ４０１でＹＥＳ）、そのデータ番号（第三のデータ番号）を状態記憶部５８へ記憶させる（ステップＳ４０２）。これは、第一のデータリンク処理部２２から転送済みのデータのデータ番号である。
【０１７３】
また、第一のネットワーク処理部２１あるいはネットワーク処理部３１は、データを第一のデータリンク処理部２２へ転送する際（ステップＳ４０３でＹＥＳ）、そのデータ番号（第一のデータ番号）を状態記憶部５８へ記憶させる（ステップＳ４０４）。これは、第一のデータリンク処理部２２のバッファに格納されているデータの最大のデータ番号である。
【０１７４】
そして、第二のデータリンク処理部２４は、再送データを入出力処理部１７へ転送する際（ステップＳ４０５でＹＥＳ）、状態記憶部５８の第三のデータ番号と第一のデータ番号とに基づいて、追い越しデータ数を算出する（ステップＳ４０６）。
【０１７５】
次に、データリンク層とネットワーク層で追い越したデータ数の合計の算出動作の例について説明する。
【０１７６】
まず、第一のデータリンク処理部２２は、入出力処理部１７へデータを転送する際（ステップＳ４０１でＹＥＳ）、そのデータ番号（第三のデータ番号）を状態記憶部５８へ記憶させる（ステップＳ４０２）。これは、第一のデータリンク処理部２２から転送済みのデータのデータ番号である。
【０１７７】
また、データ送信部１４は、データを第一のネットワーク処理部２１へ転送する際（ステップＳ４０３でＹＥＳ）、そのデータ番号（第二のデータ番号）を状態記憶部５８へ記憶させる（ステップＳ４０４）。これは、第一のネットワーク処理部２１のバッファに格納されているデータの最大のデータ番号である。
【０１７８】
そして、第二のデータリンク処理部２４は、再送データを入出力処理部１７へ転送する際（ステップＳ４０５でＹＥＳ）、状態記憶部５８の第三のデータ番号と第二のデータ番号とに基づいて、追い越しデータ数を算出する（ステップＳ４０６）。
【０１７９】
このように動作することによって、送信装置は、再送データの第二の転送部１３への転送の時点で第一の転送部１２に残留するデータの少なくともいずれかに先立って、第二の転送部１３の再送データを第一の転送部１２のデータと同一の宛先に出力する。これにより、第一の転送部１２上のバッファに多くのデータが格納されていたとしても、第二の転送部１３を使用して、再送データをより早く出力することが可能になる。そのため、再送データが出力されるまでの遅延を短縮することが可能になる。
【０１８０】
以上で説明したように、本発明の第六の実施形態では、第一から第五の実施形態と同様に、送信装置は、再送データの第二の転送部への転送の時点で第一の転送部に残留するデータの少なくともいずれかに先立って、第二の転送部の再送データを第一の転送部のデータと同一の宛先に出力する。これにより、第一の転送部上のバッファに多くのデータが格納されていたとしても、第二の転送部を使用して、再送データをより早く出力することが可能になる。そのため、再送データが出力されるまでの遅延を短縮することが可能になる。
【０１８１】
また、本実施形態の送信装置は、状態記憶部に記憶させたデータ番号から、再送データが追い越したデータ数を算出する。これにより、優先制御を導入した効果を利用者が把握することが可能になる。
【０１８２】
［第七の実施形態］
次に、本発明の第七の実施の形態について説明する。本実施形態は、入出力処理部において、出力データに所定のルールに従った番号を付与する形態である。
【０１８３】
第一から第六の実施形態では、第一のネットワーク処理部２１から出力されたデータと第二のネットワーク処理部２３から出力された再送データとは、連続したパケット番号を持たない。しかし、受信装置には、受信データに連続したパケット番号が付与されていることを想定しているものがある。たとえば、ＩＰヘッダの識別子フィールド（ＩＰＩＤ：IP Identification）に連続番号が格納されていると想定し、ＩＰＩＤに基づいてデータの消失を推定している受信装置がある。そのため、本実施形態では、入出力処理部において、出力データに所定のルールに従った番号、たとえば連続番号を付与する。
【０１８４】
まず、本実施形態の送信装置の構成例について説明する。本実施形態の送信装置の構成例は、第一から第六の実施形態（図１、図４、図１１、図１４、図１５）と同様である。
【０１８５】
入出力処理部１７では、第一の転送部１２と第二の転送部１３からデータフレームを受け取り、受け取ったフレームに所定のルールに従った番号を付与して、受信装置へ出力する。たとえば、入出力処理部１７では、受け取ったフレームのＩＰヘッダのＩＰＩＤを連続番号に書き換える。
【０１８６】
このように送信装置を構成することによって、送信装置は、再送データの第二の転送部１３への転送の時点で第一の転送部１２に残留するデータの少なくともいずれかに先立って、第二の転送部１３の再送データを第一の転送部１２のデータと同一の宛先に出力する。これにより、第一の転送部１２上のバッファに多くのデータが格納されていたとしても、第二の転送部１３を使用して、再送データをより早く出力することが可能になる。そのため、再送データが出力されるまでの遅延を短縮することが可能になる。
【０１８７】
また、本実施形態の送信装置は、入出力処理部において、出力データに所定のルールに従った番号を付与する。これにより、所定のルールに従った番号を付与されたデータを出力することが可能になる。
【０１８８】
次に、図１７を用いて本実施形態の送信装置の入出力処理部１７の動作例について説明する。入出力処理部１７以外の動作については、第一から第六の実施形態と同様のため、説明を省略する。
【０１８９】
入出力処理部１７では、第一の転送部１２あるいは第二の転送部１３からデータフレームを受け取ると（ステップＳ５０１でＹＥＳ）、そのフレームに所定のルールに従った番号を付与する（ステップＳ５０２）。たとえば、ＩＰヘッダのＩＰＩＤを連続番号に書き換える。そして、そのフレームを受信装置へ出力する（ステップＳ５０３）。
【０１９０】
このように動作することによって、送信装置は、再送データの第二の転送部１３への転送の時点で第一の転送部１２に残留するデータの少なくともいずれかに先立って、第二の転送部１３の再送データを第一の転送部１２のデータと同一の宛先に出力する。これにより、第一の転送部１２上のバッファに多くのデータが格納されていたとしても、第二の転送部１３を使用して、再送データをより早く出力することが可能になる。そのため、再送データが出力されるまでの遅延を短縮することが可能になる。
【０１９１】
以上で説明したように、本発明の第七の実施形態では、第一から第六の実施形態と同様に、送信装置は、再送データの第二の転送部への転送の時点で第一の転送部に残留するデータの少なくともいずれかに先立って、第二の転送部の再送データを第一の転送部のデータと同一の宛先に出力する。これにより、第一の転送部上のバッファに多くのデータが格納されていたとしても、第二の転送部を使用して、再送データをより早く出力することが可能になる。そのため、再送データが出力されるまでの遅延を短縮することが可能になる。
【０１９２】
また、本実施形態の送信装置は、入出力処理部において、出力データに所定のルールに従った番号を付与する。これにより、所定のルールに従った番号を付与されたデータを出力することが可能になる。
【０１９３】
［ハードウェア構成例］
上述した本発明の各実施形態における送信装置（１０、２０、３０、４０、５０、６０）を、一つの情報処理装置（コンピュータ）を用いて実現するハードウェア資源の構成例について説明する。なお、送信装置は、物理的または機能的に少なくとも二つの情報処理装置を用いて実現してもよい。また、送信装置は、専用の装置として実現してもよい。また、送信装置の一部の機能のみを情報処理装置を用いて実現しても良い。
【０１９４】
図１８は、本発明の各実施形態の送信装置を実現可能な情報処理装置のハードウェア構成例を概略的に示す図である。情報処理装置８０は、通信インタフェース８１、入出力インタフェース８２、演算装置８３、記憶装置８４、不揮発性記憶装置８５およびドライブ装置８６を備える。
【０１９５】
通信インタフェース８１は、各実施形態の送信装置が、有線あるいは／および無線で外部装置と通信するための通信手段である。なお、送信装置を、少なくとも二つの情報処理装置を用いて実現する場合、それらの装置の間を通信インタフェース８１経由で相互に通信可能なように接続しても良い。
【０１９６】
入出力インタフェース８２は、入力デバイスの一例であるキーボードや、出力デバイスとしてのディスプレイ等のマンマシンインタフェースである。
【０１９７】
演算装置８３は、汎用のＣＰＵ（Central Processing Unit）やマイクロプロセッサ等の演算処理装置である。演算装置８３は、たとえば、不揮発性記憶装置８５に記憶された各種プログラムを記憶装置８４に読み出し、読み出したプログラムに従って処理を実行することが可能である。
【０１９８】
記憶装置８４は、演算装置８３から参照可能な、ＲＡＭ（Random Access Memory）等のメモリ装置であり、プログラムや各種データ等を記憶する。記憶装置８４は、揮発性のメモリ装置であっても不揮発性のメモリ装置であっても良い。
【０１９９】
不揮発性記憶装置８５は、たとえば、ＲＯＭ（Read Only Memory）、フラッシュメモリ、等の、不揮発性の記憶装置であり、各種プログラムやデータ等を記憶することが可能である。
【０２００】
ドライブ装置８６は、たとえば、後述する記録媒体８７に対するデータの読み込みや書き込みを処理する装置である。
【０２０１】
記録媒体８７は、たとえば、光ディスク、光磁気ディスク、半導体フラッシュメモリ等、データを記録可能な任意の記録媒体である。
【０２０２】
本発明の各実施形態は、たとえば、図１８に例示した情報処理装置８０により送信装置を構成し、この送信装置に対して、上記各実施形態において説明した機能を実現可能なプログラムを供給することにより実現してもよい。
【０２０３】
この場合、送信装置に対して供給したプログラムを、演算装置８３が実行することによって、実施形態を実現することが可能である。また、送信装置のすべてではなく、一部の機能を情報処理装置８０で構成することも可能である。
【０２０４】
さらに、上記プログラムを記録媒体８７に記録しておき、送信装置の出荷段階、あるいは運用段階等において、適宜上記プログラムが不揮発性記憶装置８５に格納されるよう構成してもよい。なお、この場合、上記プログラムの供給方法は、出荷前の製造段階、あるいは運用段階等において、適当な治具を利用して送信装置内にインストールする方法を採用してもよい。また、上記プログラムの供給方法は、インターネット等の通信回線を介して外部からダウンロードする方法等の一般的な手順を採用してもよい。
【０２０５】
上記の実施形態の一部または全部は、以下の付記のようにも記載されうるが、以下には限られない。
【０２０６】
（付記１）
データを入力するデータ入力手段と、
第一の転送手段と、
第二の転送手段と、
前記データを前記第一の転送手段へ転送するデータ送信手段と、
前記データの再送の要否を判断する再送制御手段と、
前記再送が必要と判断したとき、再送すべき再送データを前記第二の転送手段へ転送する再送データ送信手段と、
前記再送データの前記第二の転送手段への前記転送の時点で前記第一の転送手段に残留する前記データの少なくともいずれかに先立って、前記第二の転送手段の前記再送データを前記第一の転送手段の前記データと同一の宛先に出力する入出力処理手段と
を備えることを特徴とする送信装置。
【０２０７】
（付記２）
前記第一の転送手段のデータリンク層の第一のデータリンクバッファの前記データを前記入出力処理手段へ転送する第一のデータリンク処理手段と、
前記第二の転送手段の前記データリンク層の第二のデータリンクバッファの前記再送データを前記入出力処理手段へ転送する第二のデータリンク処理手段
をさらに備えることを特徴とする付記１に記載の送信装置。
【０２０８】
（付記３）
前記再送データ送信手段は、前記再送データに前記再送データであることを示すフラグを付与して前記再送データの前記第二の転送手段への前記転送を行い、
前記フラグに従って、前記データを前記第一のデータリンクバッファへ転送し、前記再送データを前記第二のデータリンクバッファへ転送するネットワーク処理手段
をさらに備えることを特徴とする付記２に記載の送信装置。
【０２０９】
（付記４）
前記第一のデータリンク処理手段は、前記入出力処理手段へ転送する前記データの第三のデータ番号を状態記憶部に記憶させ、
前記ネットワーク処理手段は、前記第一のデータリンクバッファへ転送する前記データの第一のデータ番号を前記状態記憶部に記憶させ、
前記第二のデータリンク処理手段は、前記状態記憶部に記憶させた前記第三のデータ番号および前記第一のデータ番号に基づき、前記再送データが追い越したデータ数を算出する
ことを特徴とする付記３に記載の送信装置。
【０２１０】
（付記５）
前記第一の転送手段のネットワーク層の第一のネットワークバッファの前記データを前記第一のデータリンクバッファへ転送する第一のネットワーク処理手段と、
前記第二の転送手段の前記ネットワーク層の第二のネットワークバッファの前記再送データを前記第二のデータリンクバッファへ転送する第二のネットワーク処理手段と
をさらに備え、
前記データ送信手段は、前記第一の転送手段への前記データの前記転送を、前記データを前記第一のネットワークバッファへ転送することにより行い、
前記再送データ送信手段は、前記第二の転送手段への前記再送データの前記転送を、前記再送データを前記第二のネットワークバッファへ転送することにより行う
ことを特徴とする付記２に記載の送信装置。
【０２１１】
（付記６）
前記第一のデータリンク処理手段は、前記入出力処理手段へ転送する前記データの第三のデータ番号を状態記憶部に記憶させ、
前記第一のネットワーク処理手段は、前記第一のデータリンクバッファへ転送する前記データの第一のデータ番号を前記状態記憶部に記憶させ、
前記第二のデータリンク処理手段は、前記状態記憶部に記憶させた前記第三のデータ番号および前記第一のデータ番号に基づき、前記再送データが追い越したデータ数を算出する
ことを特徴とする付記５に記載の送信装置。
【０２１２】
（付記７）
前記第一のデータリンク処理手段は、前記入出力処理手段へ転送する前記データの第三のデータ番号を状態記憶部に記憶させ、
前記データ送信手段は、前記第一のネットワークバッファへ転送する前記データの第二のデータ番号を前記状態記憶部に記憶させ、
前記第二のデータリンク処理手段は、前記状態記憶部に記憶させた前記第三のデータ番号および前記第二のデータ番号に基づき、前記再送データが追い越したデータ数を算出する
ことを特徴とする付記５あるいは付記６に記載の送信装置。
【０２１３】
（付記８）
前記第一の転送手段のネットワーク層の第一のネットワークバッファの前記データをデータリンク層のデータリンクバッファへ転送する第一のネットワーク処理手段と、
前記第二の転送手段の前記ネットワーク層の第二のネットワークバッファの前記再送データを、前記第一の転送手段と前記第二の転送手段とが共有する前記データリンクバッファへ転送する第二のネットワーク処理手段と、
前記データリンクバッファの前記データおよび前記再送データを前記入出力処理手段へ転送するデータリンク処理手段と
をさらに備え、
前記データ送信手段は、前記第一の転送手段への前記データの前記転送を、前記データを前記第一のネットワークバッファへ転送することにより行い、
前記再送データ送信手段は、前記第二の転送手段への前記再送データの前記転送を、前記再送データを前記第二のネットワークバッファへ転送することにより行う
ことを特徴とする付記１に記載の送信装置。
【０２１４】
（付記９）
前記第一のネットワーク処理手段は、前記データリンク層へ転送する前記データの第一のデータ番号を状態記憶部に記憶させ、
前記データ送信手段は、前記第一のネットワークバッファへ転送する前記データの第二のデータ番号を前記状態記憶部に記憶させ、
前記第二のネットワーク処理手段は、前記状態記憶部に記憶させた前記第一のデータ番号および前記第二のデータ番号に基づき、前記再送データが追い越したデータ数を算出する
ことを特徴とする付記５から付記８のいずれかに記載の送信装置。
【０２１５】
（付記１０）
前記第一のネットワーク処理手段および前記第二のネットワーク処理手段は、通信フローに対する転送条件を状態記憶部に記憶させ、前記状態記憶部の前記転送条件に従って、前記データおよび前記再送データの前記転送を行う
ことを特徴とする付記５から付記９のいずれかに記載の送信装置。
【０２１６】
（付記１１）
前記転送条件は、パケットフィルタの処理状態を含む
ことを特徴とする付記１０に記載の送信装置。
【０２１７】
（付記１２）
前記再送制御手段は、受信したＡＣＫ（ACKnowledgement）に基づいて前記再送の前記要否の前記判断を行う
ことを特徴とする付記１から付記１１のいずれかに記載の送信装置。
【０２１８】
（付記１３）
前記入出力処理手段は、前記データおよび前記再送データの前記出力を、一つの出力インタフェースから行う
ことを特徴とする付記１から付記１２のいずれかに記載の送信装置。
【０２１９】
（付記１４）
前記入出力処理手段は、前記データおよび前記再送データのデータ出力番号を所定のルールに従って書き換える
ことを特徴とする付記１から付記１３のいずれかに記載の送信装置。
【０２２０】
（付記１５）
前記データ出力番号は、ＩＰ（Internet Protocol）ヘッダのＩＰＩＤ（IP Identification）である
ことを特徴とする付記１４に記載の送信装置。
【０２２１】
（付記１６）
データ入力部から入力されたデータを第一の転送部へ転送し、
前記データの再送の要否を判断し、
前記再送が必要と判断したとき、再送すべき再送データを第二の転送部へ転送し、
前記再送データの前記第二の転送部への前記転送の時点で前記第一の転送部に残留する前記データの少なくともいずれかに先立って、前記第二の転送部の前記再送データを前記第一の転送部の前記データと同一の宛先に出力する
ことを特徴とする送信方法。
【０２２２】
（付記１７）
前記第一の転送部の前記データは、前記第一の転送部のデータリンク層の第一のデータリンクバッファの前記データであり、
前記第二の転送部の前記再送データは、前記第二の転送部の前記データリンク層の第二のデータリンクバッファの前記再送データである
ことを特徴とする付記１６に記載の送信方法。
【０２２３】
（付記１８）
前記再送データに前記再送データであることを示すフラグを付与して前記再送データの前記第二の転送部への前記転送を行い、
前記フラグに従って、前記データを前記第一のデータリンクバッファへ転送し、前記再送データを前記第二のデータリンクバッファへ転送する
ことを特徴とする付記１７に記載の送信方法。
【０２２４】
（付記１９）
前記出力する前記データの第三のデータ番号を状態記憶部に記憶させ、
前記第一のデータリンクバッファへ転送する前記データの第一のデータ番号を前記状態記憶部に記憶させ、
前記状態記憶部に記憶させた前記第三のデータ番号および前記第一のデータ番号に基づき、前記再送データが追い越したデータ数を算出する
ことを特徴とする付記１８に記載の送信方法。
【０２２５】
（付記２０）
前記第一の転送部のネットワーク層の第一のネットワークバッファの前記データを前記第一のデータリンクバッファへ転送し、
前記第二の転送部の前記ネットワーク層の第二のネットワークバッファの前記再送データを前記第二のデータリンクバッファへ転送し、
前記第一の転送部への前記データの前記転送を、前記データを前記第一のネットワークバッファへ転送することにより行い、
前記第二の転送部への前記再送データの前記転送を、前記再送データを前記第二のネットワークバッファへ転送することにより行う
ことを特徴とする付記１７に記載の送信方法。
【０２２６】
（付記２１）
前記出力する前記データの第三のデータ番号を状態記憶部に記憶させ、
前記第一のデータリンクバッファへ転送する前記データの第一のデータ番号を前記状態記憶部に記憶させ、
前記状態記憶部に記憶させた前記第三のデータ番号および前記第一のデータ番号に基づき、前記再送データが追い越したデータ数を算出する
ことを特徴とする付記２０に記載の送信方法。
【０２２７】
（付記２２）
前記出力する前記データの第三のデータ番号を状態記憶部に記憶させ、
前記第一のネットワークバッファへ転送する前記データの第二のデータ番号を前記状態記憶部に記憶させ、
前記状態記憶部に記憶させた前記第三のデータ番号および前記第二のデータ番号に基づき、前記再送データが追い越したデータ数を算出する
ことを特徴とする付記２０あるいは付記２１に記載の送信方法。
【０２２８】
（付記２３）
前記第一の転送部のネットワーク層の第一のネットワークバッファの前記データをデータリンク層のデータリンクバッファへ転送し、
前記第二の転送部の前記ネットワーク層の第二のネットワークバッファの前記再送データを、前記第一の転送部と前記第二の転送部とが共有する前記データリンクバッファへ転送し、
前記データリンクバッファの前記データおよび前記再送データを前記出力し、
前記第一の転送部への前記データの前記転送を、前記データを前記第一のネットワークバッファへ転送することにより行い、
前記第二の転送部への前記再送データの前記転送を、前記再送データを前記第二のネットワークバッファへ転送することにより行う
ことを特徴とする付記１６に記載の送信方法。
【０２２９】
（付記２４）
前記データリンク層へ転送する前記データの第一のデータ番号を状態記憶部に記憶させ、
前記第一のネットワークバッファへ転送する前記データの第二のデータ番号を前記状態記憶部に記憶させ、
前記状態記憶部に記憶させた前記第一のデータ番号および前記第二のデータ番号に基づき、前記再送データが追い越したデータ数を算出する
ことを特徴とする付記２０から付記２３のいずれかに記載の送信方法。
【０２３０】
（付記２５）
通信フローに対する転送条件を状態記憶部に記憶させ、前記状態記憶部の前記転送条件に従って、前記データおよび前記再送データの前記転送を行う
ことを特徴とする付記２０から付記２４のいずれかに記載の送信方法。
【０２３１】
（付記２６）
前記転送条件は、パケットフィルタの処理状態を含む
ことを特徴とする付記２５に記載の送信方法。
【０２３２】
（付記２７）
受信したＡＣＫ（ACKnowledgement）に基づいて前記再送の前記要否の前記判断を行う
ことを特徴とする付記１６から付記２６のいずれかに記載の送信方法。
【０２３３】
（付記２８）
前記データおよび前記再送データの前記出力を、一つの出力インタフェースから行う
ことを特徴とする付記１６から付記２７のいずれかに記載の送信方法。
【０２３４】
（付記２９）
前記データおよび前記再送データのデータ出力番号を所定のルールに従って書き換える
ことを特徴とする付記１６から付記２８のいずれかに記載の送信方法。
【０２３５】
（付記３０）
前記データ出力番号は、ＩＰ（Internet Protocol）ヘッダのＩＰＩＤ（IP Identification）である
ことを特徴とする付記２９に記載の送信方法。
【０２３６】
（付記３１）
コンピュータに、
データ入力部から入力されたデータを第一の転送部へ転送するデータ送信機能と、
前記データの再送の要否を判断する再送制御機能と、
前記再送が必要と判断したとき、再送すべき再送データを第二の転送部へ転送する再送データ送信機能と、
前記再送データの前記第二の転送部への前記転送の時点で前記第一の転送部に残留する前記データの少なくともいずれかに先立って、前記第二の転送部の前記再送データを前記第一の転送部の前記データと同一の宛先に出力する入出力処理機能と
を実現させることを特徴とする送信プログラム。
【０２３７】
（付記３２）
前記第一の転送部のデータリンク層の第一のデータリンクバッファの前記データを前記入出力処理機能へ転送する第一のデータリンク処理機能と、
前記第二の転送部の前記データリンク層の第二のデータリンクバッファの前記再送データを前記入出力処理機能へ転送する第二のデータリンク処理機能
をコンピュータにさらに実現させることを特徴とする付記３１に記載の送信プログラム。
【０２３８】
（付記３３）
前記再送データ送信機能は、前記再送データに前記再送データであることを示すフラグを付与して前記再送データの前記第二の転送部への前記転送を行い、
前記フラグに従って、前記データを前記第一のデータリンクバッファへ転送し、前記再送データを前記第二のデータリンクバッファへ転送するネットワーク処理機能
をコンピュータにさらに実現させることを特徴とする付記３２に記載の送信プログラム。
【０２３９】
（付記３４）
前記第一のデータリンク処理機能は、前記入出力処理機能へ転送する前記データの第三のデータ番号を状態記憶部に記憶させ、
前記ネットワーク処理機能は、前記第一のデータリンクバッファへ転送する前記データの第一のデータ番号を前記状態記憶部に記憶させ、
前記第二のデータリンク処理機能は、前記状態記憶部に記憶させた前記第三のデータ番号および前記第一のデータ番号に基づき、前記再送データが追い越したデータ数を算出する
ことを特徴とする付記３３に記載の送信プログラム。
【０２４０】
（付記３５）
前記第一の転送部のネットワーク層の第一のネットワークバッファの前記データを前記第一のデータリンクバッファへ転送する第一のネットワーク処理機能と、
前記第二の転送部の前記ネットワーク層の第二のネットワークバッファの前記再送データを前記第二のデータリンクバッファへ転送する第二のネットワーク処理機能と
をコンピュータにさらに実現させ、
前記データ送信機能は、前記第一の転送部への前記データの前記転送を、前記データを前記第一のネットワークバッファへ転送することにより行い、
前記再送データ送信機能は、前記第二の転送部への前記再送データの前記転送を、前記再送データを前記第二のネットワークバッファへ転送することにより行う
ことを特徴とする付記３２に記載の送信プログラム。
【０２４１】
（付記３６）
前記第一のデータリンク処理機能は、前記入出力処理機能へ転送する前記データの第三のデータ番号を状態記憶部に記憶させ、
前記第一のネットワーク処理機能は、前記第一のデータリンクバッファへ転送する前記データの第一のデータ番号を前記状態記憶部に記憶させ、
前記第二のデータリンク処理機能は、前記状態記憶部に記憶させた前記第三のデータ番号および前記第一のデータ番号に基づき、前記再送データが追い越したデータ数を算出する
ことを特徴とする付記３５に記載の送信プログラム。
【０２４２】
（付記３７）
前記第一のデータリンク処理機能は、前記入出力処理機能へ転送する前記データの第三のデータ番号を状態記憶部に記憶させ、
前記データ送信機能は、前記第一のネットワークバッファへ転送する前記データの第二のデータ番号を前記状態記憶部に記憶させ、
前記第二のデータリンク処理機能は、前記状態記憶部に記憶させた前記第三のデータ番号および前記第二のデータ番号に基づき、前記再送データが追い越したデータ数を算出する
ことを特徴とする付記３５あるいは付記３６に記載の送信プログラム。
【０２４３】
（付記３８）
前記第一の転送部のネットワーク層の第一のネットワークバッファの前記データをデータリンク層のデータリンクバッファへ転送する第一のネットワーク処理機能と、
前記第二の転送部の前記ネットワーク層の第二のネットワークバッファの前記再送データを、前記第一の転送部と前記第二の転送部とが共有する前記データリンクバッファへ転送する第二のネットワーク処理機能と、
前記データリンクバッファの前記データおよび前記再送データを前記入出力処理機能へ転送するデータリンク処理機能と
をコンピュータにさらに実現させ、
前記データ送信機能は、前記第一の転送部への前記データの前記転送を、前記データを前記第一のネットワークバッファへ転送することにより行い、
前記再送データ送信機能は、前記第二の転送部への前記再送データの前記転送を、前記再送データを前記第二のネットワークバッファへ転送することにより行う
ことを特徴とする付記３１に記載の送信プログラム。
【０２４４】
（付記３９）
前記第一のネットワーク処理機能は、前記データリンク層へ転送する前記データの第一のデータ番号を状態記憶部に記憶させ、
前記データ送信機能は、前記第一のネットワークバッファへ転送する前記データの第二のデータ番号を前記状態記憶部に記憶させ、
前記第二のネットワーク処理機能は、前記状態記憶部に記憶させた前記第一のデータ番号および前記第二のデータ番号に基づき、前記再送データが追い越したデータ数を算出する
ことを特徴とする付記３５から付記３８のいずれかに記載の送信プログラム。
【０２４５】
（付記４０）
前記第一のネットワーク処理機能および前記第二のネットワーク処理機能は、通信フローに対する転送条件を状態記憶部に記憶させ、前記状態記憶部の前記転送条件に従って、前記データおよび前記再送データの前記転送を行う
ことを特徴とする付記３５から付記３９のいずれかに記載の送信プログラム。
【０２４６】
（付記４１）
前記転送条件は、パケットフィルタの処理状態を含む
ことを特徴とする付記４０に記載の送信プログラム。
【０２４７】
（付記４２）
前記再送制御機能は、受信したＡＣＫ（ACKnowledgement）に基づいて前記再送の前記要否の前記判断を行う
ことを特徴とする付記３１から付記４１のいずれかに記載の送信プログラム。
【０２４８】
（付記４３）
前記入出力処理機能は、前記データおよび前記再送データの前記出力を、一つの出力インタフェースから行う
ことを特徴とする付記３１から付記４２のいずれかに記載の送信プログラム。
【０２４９】
（付記４４）
前記入出力処理機能は、前記データおよび前記再送データのデータ出力番号を所定のルールに従って書き換える
ことを特徴とする付記３１から付記４３のいずれかに記載の送信プログラム。
【０２５０】
（付記４５）
前記データ出力番号は、ＩＰ（Internet Protocol）ヘッダのＩＰＩＤ（IP Identification）である
ことを特徴とする付記４４に記載の送信プログラム。
【０２５１】
（付記４６）
付記３１から付記４５のいずれかに記載の送信プログラムを記録した、コンピュータ読み取り可能な記録媒体。
【０２５２】
以上、上述した実施形態を模範的な例として本発明を説明した。しかしながら、本発明は、上述した実施形態には限定されない。即ち、本発明は、本発明のスコープ内において、当業者が理解し得る様々な態様を適用することができる。
【０２５３】
この出願は、２０１６年５月１８日に出願された日本出願特願２０１６−０９９６９８を基礎とする優先権を主張し、その開示の全てをここに取り込む。
【符号の説明】
【０２５４】
１０、２０、３０、４０、５０、６０    送信装置
１１    データ入力部
１２    第一の転送部
１３    第二の転送部
１４    データ送信部
１５    再送制御部
１６    再送データ送信部
１７    入出力処理部
２１    第一のネットワーク処理部
２２    第一のデータリンク処理部
２３    第二のネットワーク処理部
２４    第二のデータリンク処理部
２５    トランスポート処理部
３１    ネットワーク処理部
３６    再送データ送信部
４１    データリンク処理部
５８    状態記憶部
７０    受信装置
７１    アプリケーション
７２    トランスポート受信部
７３    データ受信部
７４    ＡＣＫ送信部
７５    ネットワーク処理部
７６    データリンク処理部
７７    入出力処理部
９０    ネットワーク
９１    ＴＣＰコネクション
８０    情報処理装置
８１    通信インタフェース
８２    入出力インタフェース
８３    演算装置
８４    記憶装置
８５    不揮発性記憶装置
８６    ドライブ装置
８７    記録媒体
【図１】
2017199913.tif 000003
【図２】
2017199913.tif 000004
【図３】
2017199913.tif 000005
【図４】
2017199913.tif 000006
【図５】
2017199913.tif 000007
【図６】
2017199913.tif 000008
【図７】
2017199913.tif 000009
【図８】
2017199913.tif 000010
【図９】
2017199913.tif 000011
【図１０】
2017199913.tif 000012
【図１１】
2017199913.tif 000013
【図１２】
2017199913.tif 000014
【図１３】
2017199913.tif 000015
【図１４】
2017199913.tif 000016
【図１５】
2017199913.tif 000017
【図１６】
2017199913.tif 000018
【図１７】
2017199913.tif 000019
【図１８】
2017199913.tif 000020
【図１９】
2017199913.tif 000021
【図２０】
2017199913.tif 000022
【手続補正書】
【提出日】平成30年9月11日(2018.9.11)
【手続補正２】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
データを入力するデータ入力手段と、
第一の転送手段と、
第二の転送手段と、
前記データを前記第一の転送手段へ転送するデータ送信手段と、
前記データの再送の要否を判断する再送制御手段と、
前記再送が必要と判断したとき、再送すべき再送データを前記第二の転送手段へ転送する再送データ送信手段と、
前記再送データの前記第二の転送手段への前記転送の時点で前記第一の転送手段に残留する前記データの少なくともいずれかに先立って、前記第二の転送手段の前記再送データを前記第一の転送手段の前記データと同一の宛先に出力する入出力処理手段と
を備えることを特徴とする送信装置。
【請求項２】
前記第一の転送手段のデータリンク層の第一のデータリンクバッファの前記データを前記入出力処理手段へ転送する第一のデータリンク処理手段と、
前記第二の転送手段の前記データリンク層の第二のデータリンクバッファの前記再送データを前記入出力処理手段へ転送する第二のデータリンク処理手段
をさらに備えることを特徴とする請求項１に記載の送信装置。
【請求項３】
前記再送データ送信手段は、前記再送データに前記再送データであることを示すフラグを付与して前記再送データの前記第二の転送手段への前記転送を行い、
前記フラグに従って、前記データを前記第一のデータリンクバッファへ転送し、前記再送データを前記第二のデータリンクバッファへ転送するネットワーク処理手段
をさらに備えることを特徴とする請求項２に記載の送信装置。
【請求項４】
前記第一のデータリンク処理手段は、前記入出力処理手段へ転送する前記データの第三のデータ番号を状態記憶部に記憶させ、
前記ネットワーク処理手段は、前記第一のデータリンクバッファへ転送する前記データの第一のデータ番号を前記状態記憶部に記憶させ、
前記第二のデータリンク処理手段は、前記状態記憶部に記憶させた前記第三のデータ番号および前記第一のデータ番号に基づき、前記再送データが追い越したデータ数を算出する
ことを特徴とする請求項３に記載の送信装置。
【請求項５】
前記第一の転送手段のネットワーク層の第一のネットワークバッファの前記データを前記第一のデータリンクバッファへ転送する第一のネットワーク処理手段と、
前記第二の転送手段の前記ネットワーク層の第二のネットワークバッファの前記再送データを前記第二のデータリンクバッファへ転送する第二のネットワーク処理手段と
をさらに備え、
前記データ送信手段は、前記第一の転送手段への前記データの前記転送を、前記データを前記第一のネットワークバッファへ転送することにより行い、
前記再送データ送信手段は、前記第二の転送手段への前記再送データの前記転送を、前記再送データを前記第二のネットワークバッファへ転送することにより行う
ことを特徴とする請求項２に記載の送信装置。
【請求項６】
前記第一のデータリンク処理手段は、前記入出力処理手段へ転送する前記データの第三のデータ番号を状態記憶部に記憶させ、
前記第一のネットワーク処理手段は、前記第一のデータリンクバッファへ転送する前記データの第一のデータ番号を前記状態記憶部に記憶させ、
前記第二のデータリンク処理手段は、前記状態記憶部に記憶させた前記第三のデータ番号および前記第一のデータ番号に基づき、前記再送データが追い越したデータ数を算出する
ことを特徴とする請求項５に記載の送信装置。
【請求項７】
前記第一のデータリンク処理手段は、前記入出力処理手段へ転送する前記データの第三のデータ番号を状態記憶部に記憶させ、
前記データ送信手段は、前記第一のネットワークバッファへ転送する前記データの第二のデータ番号を前記状態記憶部に記憶させ、
前記第二のデータリンク処理手段は、前記状態記憶部に記憶させた前記第三のデータ番号および前記第二のデータ番号に基づき、前記再送データが追い越したデータ数を算出する
ことを特徴とする請求項５あるいは請求項６に記載の送信装置。
【請求項８】
前記第一の転送手段のネットワーク層の第一のネットワークバッファの前記データをデータリンク層のデータリンクバッファへ転送する第一のネットワーク処理手段と、
前記第二の転送手段の前記ネットワーク層の第二のネットワークバッファの前記再送データを、前記第一の転送手段と前記第二の転送手段とが共有する前記データリンクバッファへ転送する第二のネットワーク処理手段と、
前記データリンクバッファの前記データおよび前記再送データを前記入出力処理手段へ転送するデータリンク処理手段と
をさらに備え、
前記データ送信手段は、前記第一の転送手段への前記データの前記転送を、前記データを前記第一のネットワークバッファへ転送することにより行い、
前記再送データ送信手段は、前記第二の転送手段への前記再送データの前記転送を、前記再送データを前記第二のネットワークバッファへ転送することにより行う
ことを特徴とする請求項１に記載の送信装置。
【請求項９】
前記第一のネットワーク処理手段は、前記データリンク層へ転送する前記データの第一のデータ番号を状態記憶部に記憶させ、
前記データ送信手段は、前記第一のネットワークバッファへ転送する前記データの第二のデータ番号を前記状態記憶部に記憶させ、
前記第二のネットワーク処理手段は、前記状態記憶部に記憶させた前記第一のデータ番号および前記第二のデータ番号に基づき、前記再送データが追い越したデータ数を算出する
ことを特徴とする請求項５から請求項８のいずれかに記載の送信装置。
【請求項１０】
前記第一のネットワーク処理手段および前記第二のネットワーク処理手段は、通信フローに対する転送条件を状態記憶部に記憶させ、前記状態記憶部の前記転送条件に従って、前記データおよび前記再送データの前記転送を行う
ことを特徴とする請求項５から請求項９のいずれかに記載の送信装置。
【請求項１１】
前記転送条件は、パケットフィルタの処理状態を含む
ことを特徴とする請求項１０に記載の送信装置。
【請求項１２】
前記再送制御手段は、受信したＡＣＫ（ACKnowledgement）に基づいて前記再送の前記要否の前記判断を行う
ことを特徴とする請求項１から請求項１１のいずれかに記載の送信装置。
【請求項１３】
前記入出力処理手段は、前記データおよび前記再送データの前記出力を、一つの出力インタフェースから行う
ことを特徴とする請求項１から請求項１２のいずれかに記載の送信装置。
【請求項１４】
前記入出力処理手段は、前記データおよび前記再送データのデータ出力番号を所定のルールに従って書き換える
ことを特徴とする請求項１から請求項１３のいずれかに記載の送信装置。
【請求項１５】
前記データ出力番号は、ＩＰ（Internet Protocol）ヘッダのＩＰＩＤ（IP Identification）である
ことを特徴とする請求項１４に記載の送信装置。
【請求項１６】
データ入力部から入力されたデータを第一の転送部へ転送し、
前記データの再送の要否を判断し、
前記再送が必要と判断したとき、再送すべき再送データを第二の転送部へ転送し、
前記再送データの前記第二の転送部への前記転送の時点で前記第一の転送部に残留する前記データの少なくともいずれかに先立って、前記第二の転送部の前記再送データを前記第一の転送部の前記データと同一の宛先に出力する
ことを特徴とする送信方法。
【請求項１７】
コンピュータに、
データ入力部から入力されたデータを第一の転送部へ転送するデータ送信機能と、
前記データの再送の要否を判断する再送制御機能と、
前記再送が必要と判断したとき、再送すべき再送データを第二の転送部へ転送する再送データ送信機能と、
前記再送データの前記第二の転送部への前記転送の時点で前記第一の転送部に残留する前記データの少なくともいずれかに先立って、前記第二の転送部の前記再送データを前記第一の転送部の前記データと同一の宛先に出力する入出力処理機能と
を実現させることを特徴とする送信プログラム。
【手続補正３】
【補正対象書類名】明細書
【補正対象項目名】００４７
【補正方法】変更
【補正の内容】
【００４７】
また、第二のデータリンク処理部２４は、第二のネットワーク処理部２３からパケットを受け取って一時的に格納する第二のデータリンクバッファを持つ。第二のネットワーク処理部２３は、第二のデータリンクバッファにパケットを格納し、第二のデータリンク処理部２４は、第二のデータリンクバッファから取り出したパケットをフレーム化して入出力処理部１７へ渡す。
【手続補正４】
【補正対象書類名】明細書
【補正対象項目名】００９５
【補正方法】変更
【補正の内容】
【００９５】
以上で説明したように、本発明の第二の実施形態では、送信装置は、再送データの第二の転送部への転送の時点で第一の転送部に残留するデータの少なくともいずれかに先立って、第二の転送部の再送データを第一の転送部のデータと同一の宛先に出力する。これにより、第一の転送部上のバッファに多くのデータが格納されていたとしても、第二の転送部を使用して、再送データをより早く出力することが可能になる。そのため、再送データが出力されるまでの遅延を短縮することが可能になる。
【手続補正５】
【補正対象書類名】図面
【補正対象項目名】図１１
【補正方法】変更
【補正の内容】
【図１１】
2017199913.tif 000023
【国際調査報告】
2017199913.tif 000024
2017199913.tif 000025
2017199913.tif 000026
2017199913.tif 000027