(57)【要約】【課題】無駄な再送を防ぐこと。【解決手段】転送装置１００は、所定時間毎にフェイズＩＤの値を加算しつつ、送信済みのデータパケットのパケットＩＤと、フェイズＩＤとを対応付けて判定テーブルに登録しておく。転送装置１００は、受信側の転送装置２００から、応答パケットを受信した場合に、受信パケットに含まれる受信パケットＩＤと、送信済みのデータパケットのパケットＩＤとを基にして、未達パケットを判定する。そして、転送装置１００は、未達パケットのフェイズＩＤと、受信パケットの最大フェイズとの関係から、未達パケットに対応するデータパケットが、消失したのか、オンザフライなのかを判定し、消失した場合にのみ、該当するデータパケットを再送する。【選択図】図１
2014057170.tif 000002
【特許請求の範囲】
【請求項１】
パケットを一意に識別する第１識別番号が割り当てられたパケットを、宛先に順次送信し、所定時間毎に値が加算される第２識別番号を宛先に順次送信する送信部と、
前記送信部によって送信されたパケットの第１識別番号と、該パケットが前記送信部から送信された時点の第２識別番号とを対応付けてテーブルに登録する登録部と、
宛先に到達したパケットの第１識別番号と前記宛先に到達した直近の第２識別番号を受信し、前記宛先に到達したパケットの第１識別番号および前記直近の第２識別番号と、前記テーブルとを基にして、前記宛先に再送するパケットの第１識別番号を判定する判定部と、
前記判定部の判定結果を基にして、パケットを再送する再送部と
を有することを特徴とする転送装置。
【請求項２】
前記判定部は、前記テーブルから前記直近の第２識別番号の値未満の第２識別番号に対応する第１識別番号のうち、宛先に到達したパケットの第１識別番号と異なる値の第１識別番号を、前記宛先に再送するパケットの第１識別番号として判定することを特徴とする請求項１に記載の転送装置。
【請求項３】
コンピュータが実行する転送方法であって、
パケットを一意に識別する第１識別番号が割り当てられたパケットを、宛先に順次送信し、所定時間毎に値が加算される第２識別番号を宛先に順次送信し、
送信したパケットの第１識別番号と、該パケットが前記送信部から送信された時点の第２識別番号とを対応付けてテーブルに登録し、
宛先に到達したパケットの第１識別番号と前記宛先に到達した直近の第２識別番号を受信し、前記宛先に到達したパケットの第１識別番号および前記直近の第２識別番号と、前記テーブルとを基にして、前記宛先に再送するパケットの第１識別番号を判定し、
判定結果を基にして、パケットを再送する
各処理を実行する転送方法。
【請求項４】
パケットを一意に識別する第１識別番号が割り当てられたパケットを、宛先に順次送信し、所定時間毎に値が加算される第２識別番号を宛先に順次送信し、
送信したパケットの第１識別番号と、該パケットが前記送信部から送信された時点の第２識別番号とを対応付けてテーブルに登録し、
宛先に到達したパケットの第１識別番号と前記宛先に到達した直近の第２識別番号を受信し、前記宛先に到達したパケットの第１識別番号および前記直近の第２識別番号と、前記テーブルとを基にして、前記宛先に再送するパケットの第１識別番号を判定し、
判定結果を基にして、パケットを再送する
各処理を実行させることを特徴とする転送プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、転送装置等に関する。
【背景技術】
【０００２】
近年、光通信等の普及により、ネットワーク帯域はますます拡大している。しかし、以下に説明するように、ネットワーク遅延の影響によって、ネットワーク帯域を有効に使い切れていない。
【０００３】
従来の転送装置は、ＴＣＰ（Transmission  Control  Protocol）によって、パケット送信を実行している。ＴＣＰでは、受信ウインドウサイズを設定し、受信ウインドウサイズ分のパケットを送信した後に、宛先からＡＣＫ（Acknowledge）を受信することで、パケットが宛先に届いたか否かを判定する。転送装置は、パケットが届いたことを確認した後に、次のパケットを送信する。
【０００４】
図１２は、従来技術を説明するための図である。図１２に示すように、送信側の転送装置は、受信ウインドウサイズ分のパケット１ａを受信側の転送装置に送信し、受信側からＡＣＫ１ｂを受信する。送信側の転送装置は、ＡＣＫ１ｂを受信することで、パケット１ａが宛先に届いたことを確認し、次のパケット１ｃを受信側の転送装置に送信する。パケット１ａを送信してから、ＡＣＫ１ｂを受信するまでの時間は、ＲＴＴ（Round  Trip  Time）と呼ばれる。
【０００５】
ＴＣＰで用いられる受信ウインドウサイズの標準のデータ量は、６４ＫＢである。ここで、ＲＴＴをＸ（ｍｓ）とすると、１秒間に６４ＫＢ×（１０００／Ｘ）しかデータを送信することができない。例えば、ＲＴＴを２００（ｍｓ）とすると、１秒間に送信できるデータ量は、２．５６（Ｍｂｐｓ）となる。すなわち、受信ウインドウサイズが６４ＫＢで、ＲＴＴが２００（ｍｓ）の場合には、ネットワーク帯域がいかに広くても、送信可能なデータ量は、２．５６（Ｍｂｐｓ）となる。
【０００６】
上記問題を解消するべく、各種の従来技術が存在する。従来技術１は、ＴＣＰのスケールオプションによって、受信ウインドウサイズを拡大し、一度に送信するデータ量を増加させる。そして、従来技術１は、パケットを送信した後に、定期的な計測に基づいて設定した応答遅延時間内に、ＡＣＫを受信しない場合には、パケットが消失したものとみなして、パケットを再送する。
【０００７】
図１３は、従来技術１を説明するための図である。図１３に示すように、従来技術１は、パケット２ａを受信側に送信し、応答遅延時間３ａ以内に、パケット２ａに対するＡＣＫ２ｂを受信した場合には、パケット２ａが受信側に届いたと判定する。一方、従来技術１は、パケット２ｃを受信側に送信し、応答遅延時間３ｂ以内に、パケット２ｃに対するＡＣＫを受信できなかった場合には、パケット２ｃが消失したとみなして、パケット２ｃに対応するパケット２ｄを再送する。
【０００８】
従来技術２は、パケットの送信側の転送装置が、パケットをパケットＩＤの昇順で送信する。そして、パケットの受信側の転送装置が、受信するパケットのパケットＩＤの順序を監視して、パケットＩＤに抜けが存在した場合に、パケットの再送を要求するものである。
【０００９】
図１４は、従来技術２を説明するための図である。図１４に示すように、従来技術２は、送信側の転送装置が、パケット４ａ，４ｂ，４ｃ，４ｄ，４ｅの順で、パケットを受信側の転送装置に送信する。パケット４ａ，４ｂ，４ｃ，４ｄ，４ｅのパケットＩＤをそれぞれ、１，２，３，４，５とする。受信側の転送装置は、パケット４ａ，４ｂ，４ｃ，４ｅを受信する。受信側の転送装置は、パケット４ａ，４ｂ，４ｃ，４ｅのパケットＩＤを監視しており、パケットＩＤ「４」の抜けを検出する。この場合には、受信側の転送装置は、再送要求パケット５ａを、送信側の転送装置に送信する。再送要求パケット５ａは、再送対象となるパケットのパケットＩＤを含む。送信側の転送装置は、再送要求のあったパケット４ｄを、受信側の転送装置に送信する。
【先行技術文献】
【特許文献】
【００１０】
【特許文献１】特開２００８−１４１６３３号公報
【発明の概要】
【発明が解決しようとする課題】
【００１１】
しかしながら、上述した従来技術では、ネットワーク帯域の限界までデータ転送を行おうとすると、受信ウインドウサイズを大きくせざるを得えず、無駄な再送を防ぐことができないという問題がある。
【００１２】
例えば、上記の従来技術１では、応答遅延時間以内にＡＣＫを受信しない場合に、パケットが消失したものとみなして、パケットを再送している。しかし、ネットワークの負荷増大によって、パケットの到達が遅れ、応答遅延時間以内に、ＡＣＫが送信側の転送装置に届かないことがある。このような場合には、送信側が行った再送は、無駄な再送となる。送信側の転送装置から送信されたが、受信側の転送装置に届いていないパケットは、パケットオンザフライ（packets  on-the-fly）と呼ばれる。
【００１３】
上記の従来技術２では、受信側の転送装置が、パケットＩＤの順序を監視して、パケットの抜けを検出し、パケットの再送を要求するものである。しかし、この従来技術２では、再送パケットの消失を検出するためには、従来技術１と同様にして、応答遅延時間を設定することになる。図１５は、従来技術２の問題を説明する図である。図１５に示すように、初めてパケットを送信する場合には、図１４でも説明したように、パケット４ｄの消失を検出することができるが、再度、パケット４ｄを再送して、係るパケット４ｄが消失してしまう場合もあり得る。この場合には、パケット４ｄの消失をパケット４ｆ以降のパケットのパケットＩＤの順番で検出することができない。すなわち、再送パケット４ｄの消失を検出するためには、送信側の転送装置が、応答遅延時間を設定して、再度再送パケットを送信するか否かを判定することとなる。
【００１４】
１つの側面では、パケットオンザフライが大量に存在しても、無駄な再送を防ぐことができる転送装置、転送方法および転送プログラムを提供することを目的とする。
【課題を解決するための手段】
【００１５】
第１の案では、転送装置は、送信部、登録部、判定部、再送部を有する。送信部は、パケットを一意に識別する第１識別番号が割り当てられたパケットを、宛先に順次送信し、所定時間毎に値が加算される第２識別番号を宛先に順次送信する。登録部は、送信部によって送信されたパケットの第１識別番号と、該パケットが送信部から送信された時点の第２識別番号とを対応付けてテーブルに登録する。判定部は、宛先に到達したパケットの第１識別番号と宛先に到達した直近の第２識別番号を受信し、宛先に到達したパケットの第１識別番号および直近の第２識別番号と、テーブルとを基にして、宛先に再送するパケットの第１識別番号を判定する。再送部は、判定部の判定結果を基にして、パケットを再送する。
【発明の効果】
【００１６】
本発明の第１実施態様によれば、無駄な再送を防ぐことができるという効果を奏する。
【図面の簡単な説明】
【００１７】
【図１】図１は、本実施例に係る転送システムの一例を示す図である。
【図２】図２は、転送システムで行われるデータ通信を説明するための図である。
【図３】図３は、各種パケットのデータ構造の一例を示す図である。
【図４】図４は、本実施例に係る送信側の転送装置の構成を示す機能ブロック図である。
【図５】図５は、判定テーブルのデータ構造の一例を示す図である。
【図６】図６は、パケット管理テーブルのデータ構造の一例を示す図である。
【図７】図７は、本実施例に係る受信側の転送装置の構成を示す機能ブロック図である。
【図８】図８は、本実施例に係る転送装置がフェイズパケットを送信する処理手順を示すフローチャートである。
【図９】図９は、本実施例に係る転送装置がデータパケットを送信する処理手順を示すフローチャートである。
【図１０】図１０は、本実施例に係る転送装置が応答パケットを受信した場合の処理手順を示すフローチャートである。
【図１１】図１１は、転送プログラムを実行するコンピュータの一例を示す図である。
【図１２】図１２は、従来技術を説明するための図である。
【図１３】図１３は、従来技術１を説明するための図である。
【図１４】図１４は、従来技術２を説明するための図である。
【図１５】図１５は、従来技術２の問題を説明する図である。
【発明を実施するための形態】
【００１８】
以下に、本願の開示する転送装置、転送方法および転送プログラムの実施例を図面に基づいて詳細に説明する。なお、この実施例によりこの発明が限定されるものではない。
【実施例】
【００１９】
本実施例に係る転送システムの構成について説明する。図１は、本実施例に係る転送システムの一例を示す図である。図１に示すように、この転送システムは、転送装置１００、２００を有する。また、転送装置１００および２００は、ネットワーク５０を介して相互に接続される。
【００２０】
ここで、本実施例の転送システムで行われるデータ通信について説明する。図２は、転送システムで行われるデータ通信を説明するための図である。一例として、転送装置１００をパケットの送信側とし、転送装置２００をパケットの受信側とする。また、転送装置１００は、送信バッファサイズを、帯域遅延積以上の大きさとする。帯域遅延積は、ネットワーク５０の帯域とＲＴＴとを乗算したものであり、管理者が予め設定しておくものとする。
【００２１】
図２に示すように、転送装置１００は、データパケットを一意に識別するパケットＩＤ（Identifier）を付与し、パケットＩＤの昇順で、データパケットを宛先となる転送装置２００に順次送信する。例えば、転送装置１００は、パケットＩＤ「１」のデータパケット１０ａ、パケットＩＤ「２」のデータパケット１０ｂ、パケットＩＤ「３」のデータパケット１０ｃ、パケットＩＤ「４」のデータパケット１０ｄの順で、各データパケットを送信する。
【００２２】
転送装置１００は、所定時間毎に値が加算されるフェイズ（phase）を管理する。転送装置１００は、このフェイズの値が更新される度に、フェイズパケットを転送装置２００に送信する。フェイズパケットには、フェイズの値を示すフェイズＩＤが含まれる。図２に示す例では、転送装置１００は、フェイズの値が１から２に変化した時点で、フェイズパケット１１ａを、転送装置２００に送信する。フェイズパケット１１ａには、フェイズＩＤ「２」が含まれる。なお、転送装置１００は、フェイズＩＤ「１」のフェイズパケットを転送装置２００に送信済みとする。
【００２３】
なお、転送装置１００は、データパケットを送信する度に、データパケットを送信した時点のフェイズＩＤと、データパケットのパケットＩＤとを対応付けて、判定テーブル１２０ａに登録する。
【００２４】
一方、転送装置２００は、転送装置１００からデータパケットおよびフェイズパケットを順次受信し、所定時間毎に応答パケットを転送装置１００に送信する。この応答パケットは、転送装置１００が受信したデータパケットのパケットＩＤと、最大フェイズの値とを含む。受信したデータパケットのパケットＩＤを受信パケットＩＤとする。最大フェイズは、転送装置２００が受信したフェイズパケットのフェイズＩＤのうち、最大のフェイズＩＤに対応するものである。
【００２５】
例えば、転送装置２００は、フェイズパケット１１ａを受信した時点で、最大フェイズを１から２に変更する。例えば、転送装置２００は、データパケット１０ａ，１０ｃを受信し、データパケット１０ｄを受信する前に、応答パケット１２ａを転送装置１００に送信したものとする。なお、データパケット１０ｂは、転送装置２００に到達する前に消失（ｌｏｓｓ）したものとする。この場合には、転送装置２００は、最大フェイズ「２」、受信パケットＩＤ「１，３」を含む応答パケット１２ａを転送装置１００に送信する。
【００２６】
転送装置１００は、データパケット１０ａ〜１０ｄ、フェイズパケット１１ａを転送装置２００に送信した後に、応答パケット１２ａを受信したものとする。転送装置１００は、応答パケット１２ａの含まれる受信パケットＩＤおよび最大フェイズと、判定テーブル１２０ａとを基にして、転送装置２００に再送するデータパケットのパケットＩＤを判定する。
【００２７】
転送装置１００は、最大フェイズの値未満のフェイズＩＤに対応する判定テーブル１２０ａのパケットＩＤのうち、受信パケットＩＤと異なるパケットＩＤを、再送するデータパケットのパケットＩＤと判定する。図２の応答パケット１２ａを受信した場合には、判定テーブル１２０ａのパケットＩＤのうち、最大フェイズ「２」未満となるフェイズＩＤに対応するパケットＩＤは「１，２」となる。また、このパケットＩＤ「１，２」のうち、受信パケットＩＤ「１，３」と異なるのは、パケットＩＤ「２」となる。このため、転送装置１００は、パケットＩＤ「２」のデータパケットを、転送装置２００に送信すると判定する。
【００２８】
上記の手順に従って、転送装置１００が、再送対象となるパケットＩＤを判定することで、パケットオンザフライが存在している場合に、無駄な再送を防ぐことができる。図２に示す例では、パケット１０ｄは、パケットオンザフライ状態であるため、パケット１０ｄを再送してしまうと、無駄な再送となってしまうが、本実施例にかかる転送装置１００は、このような無駄な再送を行わない。
【００２９】
次に、図２で送受信されるデータパケット、フェイズパケット、応答パケットのデータ構造の一例について説明する。図３は、各種パケットのデータ構造の一例を示す図である。図３に示す１０は、データパケットのデータ構造の一例である。１１は、フェイズパケットのデータ構造の一例である。１２は、応答パケットのデータ構造の一例である。
【００３０】
データパケット１０は、ＵＤＰ（User  Datagram  Protocol）ヘッダ、パケットＩＤ、送信データを含む。このうち、送信データは、各種のユーザデータである。フェイズパケット１１は、ＵＤＰヘッダ、フェイズＩＤを含む。なお、本実施例では一例として、ＵＤＰを用いて説明するが、ＵＤＰに限られず、その他の一般的な通信プロトコルを利用することができる。
【００３１】
応答パケット１２は、ＵＤＰヘッダ、最大フェイズ、受信パケットＩＤを含む。このうち、受信パケットＩＤには、転送装置２００に到達したパケットＩＤの情報が含まれる。図３に示す受信パケットＩＤは、パケットＩＤ０〜１００００までのパケットＩＤのうち、０〜８０１９、８０２５〜８６９９、８７０１〜９００９、９０１２〜１００００のパケットＩＤを受信したことを示す。すなわち、８０２０〜８０２４、８７００、９０１０〜９０１１のパケットＩＤが未受信である。
【００３２】
次に、図１、２に示した送信側の転送装置１００の構成について説明する。図４は、本実施例に係る送信側の転送装置の構成を示す機能ブロック図である。図４に示すように、この転送装置１００は、通信部１１０、フェイズタイマ１１５、記憶部１２０、制御部１３０を有する。
【００３３】
通信部１１０は、ネットワーク５０を介して転送装置２００との間でデータ通信を実行する処理部である。例えば、通信部１１０は、通信装置等に対応する。後述する制御部１３０は、通信部１１０を介して、転送装置２００とデータをやり取りする。
【００３４】
フェイズタイマ１１５は、所定時間毎に、制御部１３０にシグナルを送信するタイマである。後述するように、このフェイズタイマ１１５は、フェイズＩＤデータ１２０ｃに値を加算するタイミングを計るためのタイマである。
【００３５】
記憶部１２０は、判定テーブル１２０ａ、パケット管理データ１２０ｂ、フェイズＩＤデータ１２０ｃを記憶する記憶部である。図２で説明したように、判定テーブル１２０ａは、パケットＩＤとフェイズＩＤとを対応付けて記憶する。図５は、判定テーブルのデータ構造の一例を示す図である。
【００３６】
パケット管理テーブル１２０ｂは、データパケットを記憶するテーブルである。図６は、パケット管理テーブルのデータ構造の一例を示す図である。図６に示すように、このパケット管理テーブル１２０ｂは、パケットＩＤと、該パケットＩＤに対応するデータパケットのデータと送信フラグとを対応付けて保持する。例えば、１行目のレコードには、パケットＩＤ「１」と、該パケットＩＤ「１」のデータパケットのデータとが登録される。各データパケットには、図３で説明したように、ＵＤＰヘッダ、パケットＩＤ、送信データが含まれる。送信フラグは、該当するデータパケットが転送装置２００に送信済みか否かを示すものである。例えば、オンが送信済みを示し、オフが未送信を示す。
【００３７】
フェイズＩＤデータ１２０ｃは、フェイズＩＤの値を保持するデータである。なお、フェイズＩＤデータ１２０ｃの初期値を０とする。
【００３８】
制御部１３０は、タイマ監視部１３１、送信部１３２、登録部１３３、判定部１３４、再送部１３５を有する。
【００３９】
タイマ監視部１３１は、フェイズタイマ１１５からシグナルを受信する度に、フェイズＩＤデータ１２０ｃの値に所定値を加算する処理部である。例えば、タイマ監視部１３１は、フェイズタイマ１１５からシグナルを受信する度に、フェイズＩＤデータ１２０ｃの値に１を加算する。
【００４０】
送信部１３２は、データパケットを送信する処理およびフェイズパケットを送信する処理を実行する処理部である。
【００４１】
送信部１３２が、データパケットを送信する処理について説明する。送信部１３２は、パケット管理データ１２０ｂに登録されたデータパケットを取得し、パケットＩＤの値が昇順となるように、順次データパケットを転送装置２００に送信する。送信部１３１は、データパケットを送信した時点で、送信したデータパケットのパケットＩＤを、登録部１３３に通知する。また、送信部１３２は、送信したデータパケットに対応するパケット管理データ１２０ｂの送信フラグをオンに設定する。
【００４２】
送信部１３２がフェイズパケットを送信する処理について説明する。送信部１３２は、フェイズＩＤデータ１２０ｃの値を監視し、フェイズＩＤデータ１２０ｃの値に１が加算される度に、フェイズパケットを生成し、フェイズパケットを転送装置２００に送信する。送信部１３２は、加算された後の値を、フェイズパケットのフェイズＩＤに格納して、フェイズパケットを生成する。
【００４３】
例えば、フェイズＩＤデータの値「１」に１が加算されて、「２」となった場合には、送信部１３２は、フェイズＩＤに「２」を格納することで、フェイズパケットを生成し、生成したフェイズパケットを転送装置２００に送信する。
【００４４】
登録部１３３は、送信部１３２がデータパケットを送信した場合に、データパケットのパケットＩＤと、かかるデータパケットが送信された時点のフェイズＩＤデータ１２０ｃの値とを対応付けて、判定テーブル１２０ａに登録する処理部である。登録部１３３は、送信部１３２がデータパケットを送信した時点で、送信部１３２から送信したデータパケットのパケットＩＤを取得するものとする。
【００４５】
判定部１３４は、転送装置２００から、応答パケットを受信した場合に、応答パケットと、判定テーブル１２０ａとを基にして、再送するデータパケットのパケットＩＤを判定する処理部である。判定部１３４は、再送するデータパケットのパケットＩＤを、再送部１３５に出力する。
【００４６】
判定部１３４の処理を具体的に説明する。まず、判定部１３４は、転送装置１００に到達していないデータパケットを示す未達パケットを判定する。判定部１３４は、応答パケットの受信パケットＩＤと、パケット管理データ１２０ｂのうち送信済みのデータパケットのパケットＩＤとを比較し、受信パケットＩＤの値と異なるパケットＩＤを特定する。判定部１３４は、特定したパケットＩＤに対応するデータパケットを、未達パケットと判定する。例えば、受信パケットＩＤに「１，３」が含まれ、送信済みのデータパケットのパケットＩＤが「１，２，３」となる場合には、未達パケットは、パケットＩＤ「２」のデータパケットとなる。
【００４７】
判定部１３４は、未達パケットを判定した後に、未達パケットを再送するか否かを判定する。具体的に、判定部１３４は、未達パケットに対応するフェイズＩＤを判定テーブル１２０ａから特定し、未達パケットに対応するフェイズＩＤの値が、応答パケットの最大フェイズの値よりも小さい場合に、未達パケットを再送すると判定する。判定部１３４は、再送する未達パケットのパケットＩＤを、再送部１３５に出力する。
【００４８】
なお、判定部１３４は、受信パケットに含まれる受信パケットＩＤを学習しておき、学習した受信パケットＩＤを、再送対象のパケットＩＤから除外してもよい。
【００４９】
再送部１３５は、判定部１３４の判定結果に基づいて、データパケットを再送する処理部である。具体的に、再送部１３５は、判定部１３４からパケットＩＤを取得し、取得したパケットＩＤに対応するデータパケットを、パケット管理データ１２０ｂから検出する。そして、再送部１３５は、検出したデータパケットを、転送装置２００に送信する。
【００５０】
次に、図１、２に示した受信側の転送装置２００の構成について説明する。図７は、本実施例に係る受信側の転送装置の構成を示す機能ブロック図である。図７に示すように、転送装置２００は、通信部２１０、応答タイマ２１５、記憶部２２０、制御部２３０を有する。
【００５１】
通信部２１０は、ネットワーク５０を介して転送装置１００との間でデータ通信を実行する処理部である。例えば、通信部２１０は、通信装置等に対応する。後述する制御部２３０は、通信部２１０を介して、転送装置１００とデータをやり取りする。
【００５２】
応答タイマ２１５は、所定時間毎に、制御部２３０にシグナルを送信するタイマである。後述するように、この応答タイマ２１５は、応答パケットを送信するタイミングを計るためのものである。
【００５３】
記憶部２２０は、パケットデータ２２０ａ、フェイズデータ２２０ｂを記憶する記憶部である。パケットデータ２２０ａは、転送装置１００から受信するデータパケットのデータである。フェイズデータ２２０ｂは、転送装置１００から受信したフェイズＩＤのうち、最大のフェイズＩＤの値を記憶するデータである。
【００５４】
受信部２３１は、転送装置１００からデータパケット、フェイズパケットを受信する処理部である。受信部２３１は、転送装置１００からデータパケットを受信した場合には、受信したデータパケットをパケットデータ２２０ａに登録する。
【００５５】
また、受信部２３１は、フェイズパケットを受信した場合には、フェイズパケットのフェイズＩＤの値と、フェイズデータ２２０ｂの値とを比較する。受信部２３１は、フェイズパケットのフェイズＩＤの値の方が、フェイズデータ２２０ｂの値よりも大きい場合には、フェイズパケットのフェイズＩＤの値によって、フェイズデータ２２０ｂの値を更新する。一方、受信部２３１は、フェイズパケットのフェイズＩＤの値が、フェイズデータ２２０ｂの値以下の場合には、フェイズデータ２２０ｂの値をそのままとする。
【００５６】
再送要求部２３２は、応答タイマ２１５からシグナルを受け付ける毎に、応答パケットを生成し、応答パケットを転送装置１００に送信する処理部である。再送要求部２３２は、パケットデータ２２０ａに記憶されたパケットＩＤを、受信パケットＩＤとして応答パケットに格納する。また、再送要求部２３２は、フェイズデータ２２０ｂの値を、最大フェイズとして応答パケットに格納する。再送要求部２３２は、受信パケットＩＤおよび最大フェイズを格納した応答パケットを転送装置１００に送信する。
【００５７】
次に、本実施例に係る転送装置１００がフェイズパケットを送信する処理手順について説明する。図８は、本実施例に係る転送装置がフェイズパケットを送信する処理手順を示すフローチャートである。図８に示すように、転送装置１００は、フェイズタイマ１１５からシグナルを受信し（ステップＳ１０１）、フェイズＩＤデータ１２０ｃの値に１を加算する（ステップＳ１０２）。
【００５８】
転送装置１００は、更新されたフェイズＩＤデータ１２０ｃの値をフェイズパケットに格納して転送装置２００に送信する（ステップＳ１０３）。転送装置１００は、フェイズタイマ１１５をリセットする（ステップＳ１０４）。
【００５９】
次に、本実施例に係る転送装置１００がデータパケットを送信する処理手順について説明する。図９は、本実施例に係る転送装置がデータパケットを送信する処理手順を示すフローチャートである。例えば、転送装置１００は、送信要求を受け付けたことを契機として、図９に示す処理を実行する。例えば、転送装置１００にデータパケットの送信を依頼するクライアント等から、転送装置１００は、送信要求を受け付ける。
【００６０】
図９に示すように、転送装置１００は、送信要求を受付（ステップＳ２０１）、フェイズタイマ１１５がセットされているか否かを判定する（ステップＳ２０２）。転送装置１００は、フェイズタイマがセットされている場合には（ステップＳ２０２，Ｙｅｓ）、ステップＳ２０４に移行する。
【００６１】
一方、転送装置１００は、フェイズタイマ１１５がセットされていない場合には（ステップＳ２０２，Ｎｏ）、フェイズタイマ１１５をセットする（ステップＳ２０３）。転送装置１００は、現在のフェイズＩＤデータの値と、パケットＩＤとの組みを判定テーブル１２０ａに記録する（ステップＳ２０４）。
【００６２】
転送装置１００は、データパケットを生成し、データパケットを転送装置２００に送信する（ステップＳ２０５）。
【００６３】
次に、本実施例に係る転送装置１００が、転送装置２００から応答パケットを受信した場合の処理について説明する。図１０は、本実施例に係る転送装置が応答パケットを受信した場合の処理手順を示すフローチャートである。
【００６４】
図１０に示すように、転送装置１００は、転送装置２００から応答パケットを受信する（ステップＳ３０１）。転送装置１００は、応答パケットから未達パケット情報を取得する（ステップＳ３０２）。
【００６５】
転送装置１００は、未達パケットが存在するか否かを判定する（ステップＳ３０３）。転送装置１００は、未達パケットが存在しない場合には（ステップＳ３０３，Ｎｏ）、処理を終了する。
【００６６】
転送装置１００は、未達パケットが存在する場合には（ステップＳ３０３，Ｙｅｓ）、未選択の未達パケットを選択する（ステップＳ３０４）。転送装置１００は、未達パケットのフェイズＩＤの値が、応答パケットの最大フェイズの値よりも小さいか否かを判定する（ステップＳ３０５）。転送装置１００は、未達パケットのフェイズＩＤの値が、応答パケットの最大フェイズの値以上の場合には（ステップＳ３０５，Ｎｏ）、ステップＳ３０７に移行する。
【００６７】
一方、転送装置１００は、未達パケットのフェイズＩＤの値が、応答パケットの最大フェイズの値よりも小さい場合には（ステップＳ３０５，Ｙｅｓ）、未達パケットの再送を実行する（ステップＳ３０６）。
【００６８】
転送装置１００は、未達パケットを全て選択したか否かを判定する（ステップＳ３０７）。転送装置１００は、未達パケットを全て選択していない場合には（ステップＳ３０７，Ｎｏ）、ステップＳ３０４に移行する。一方、転送装置１００は、未達パケットを全て選択した場合には（ステップＳ３０７，Ｙｅｓ）、処理を終了する。なお、通信の終了は、送信元から送信先へ、通信終了の通知をし、その通知の到達と送信すべき全てのパケットが到達したことを確認して完了する。
【００６９】
次に、本実施例に係る転送装置１００の効果について説明する。転送装置１００は、所定時間毎にフェイズＩＤの値を加算しつつ、送信済みのデータパケットのパケットＩＤと、フェイズＩＤとを対応付けて判定テーブル１２０ａに登録しておく。転送装置１００は、受信側の転送装置２００から、応答パケットを受信した場合に、受信パケットに含まれる受信パケットＩＤと、送信済みのデータパケットのパケットＩＤとを基にして、未達パケットを判定する。そして、転送装置１００は、未達パケットのフェイズＩＤと、受信パケットの最大フェイズとの関係から、未達パケットに対応するデータパケットが、消失したのか、オンザフライなのかを判定し、消失した場合にのみ、該当するデータパケットを再送する。このような処理を実行することで、オンザフライのデータパケットに対応するパケットを再送することを防ぐことができるので、無駄な再送を防ぐことができる。
【００７０】
また、転送装置１００によれば、未達パケットの再送信に対し、応答遅延時間等を設定しなくても、再送対象となるパケットを適切に判定することができる。
【００７１】
また、転送装置１００は、判定テーブル１２０ａから最大フェイズの値未満のフェイズＩＤに対応するパケットＩＤのうち、受信パケットＩＤと異なる値のパケットＩＤを、再送するデータパケットのパケットＩＤとして判定する。このため、未到達パケットが消失したのか、オンザフライなのかを適切に判定することができる。
【００７２】
ところで、本実施例では一例として、転送装置１００は、データパケットとフェイズパケットとをそれぞれ別々に送信したが、データパケットおよびフェイズパケットとをまとめて、転送装置２００に送信しても良い。例えば、転送装置１００は、データパケットに、フェイズＩＤを格納するデータ領域を設け、係る領域にフェイズＩＤデータ１２０ｃの値を格納しても良い。
【００７３】
次に、各実施例に示した転送装置１００と同様の機能を実現する転送プログラムを実行するコンピュータの一例を説明する。図１１は、転送プログラムを実行するコンピュータの一例を示す図である。
【００７４】
図１１に示すように、コンピュータ３００は、各種演算処理を実行するＣＰＵ３０１と、ユーザからのデータの入力を受け付ける入力装置３０２と、ディスプレイ３０３を有する。また、コンピュータ３００は、記憶媒体からプログラム等を読取る読み取り装置３０４と、ネットワークを介して他のコンピュータとの間でデータの授受を行うインタフェース装置３０５とを有する。また、コンピュータ３００は、各種情報を一時記憶するＲＡＭ３０６と、ハードディスク装置３０７を有する。そして、各装置３０１〜３０７は、バス３０８に接続される。
【００７５】
ハードディスク装置３０７は、例えば、送信プログラム３０７ａ、登録プログラム３０７ｂ、判定プログラム３０７ｃ、再送プログラム３０７ｄを有する。ＣＰＵ３０１は、各プログラム３０７ａ〜３０７ｄを読み出して、ＲＡＭ３０６に展開する。
【００７６】
送信プログラム３０７ａは、送信プロセス３０６ａとして機能する。登録プログラム３０７ｂは、登録プロセス３０６ｂとして機能する。判定プログラム３０７ｃは、判定プロセス３０６ｃとして機能する。再送プログラム３０７ｄは、再送プロセス３０６ｄとして機能する。
【００７７】
例えば、送信プロセス３０６ａは、送信部１３２に対応する。登録プロセス３０６ｂは、登録部１３３に対応する。判定プロセス３０６ｃは、判定部１３４に対応する。再送プロセス３０６ｄは、再送部１３５に対応する。
【００７８】
なお、各プログラム３０７ａ〜３０７ｄについては、必ずしも最初からハードディスク装置３０７に記憶させておかなくてもよい。例えば、コンピュータ３００に挿入されるフレキシブルディスク（ＦＤ）、ＣＤ−ＲＯＭ、ＤＶＤディスク、光磁気ディスク、ＩＣカードなどの「可搬用の物理媒体」に各プログラムを記憶させておく。そして、コンピュータ３００がこれらから各プログラム３０７ａ〜３０７ｄを読み出して実行するようにしてもよい。
【００７９】
なお、図４、図７に示した制御部１３０，２３０は、例えば、ＡＳＩＣ（Application  Specific  Integrated  Circuit）や、ＦＰＧＡ（Field  Programmable  Gate  Array）などの集積装置に対応する。また、制御部１３０，２３０は、例えば、ＣＰＵやＭＰＵ（Micro  Processing  Unit）等の電子回路に対応する。
【００８０】
また、図４、図７に示した記憶部１２０，２２０は、例えば、ＲＡＭ（Random  Access  Memory）、ＲＯＭ（Read  Only  Memory）、フラッシュメモリ（Flash  Memory）などの半導体メモリ素子などの記憶装置に対応する。
【００８１】
以上の各実施例を含む実施形態に関し、さらに以下の付記を開示する。
【００８２】
（付記１）パケットを一意に識別する第１識別番号が割り当てられたパケットを、宛先に順次送信し、所定時間毎に値が加算される第２識別番号を宛先に順次送信する送信部と、
前記送信部によって送信されたパケットの第１識別番号と、該パケットが前記送信部から送信された時点の第２識別番号とを対応付けてテーブルに登録する登録部と、
宛先に到達したパケットの第１識別番号と前記宛先に到達した直近の第２識別番号を受信し、前記宛先に到達したパケットの第１識別番号および前記直近の第２識別番号と、前記テーブルとを基にして、前記宛先に再送するパケットの第１識別番号を判定する判定部と、
前記判定部の判定結果を基にして、パケットを再送する再送部と
を有することを特徴とする転送装置。
【００８３】
（付記２）前記判定部は、前記テーブルから前記直近の第２識別番号の値未満の第２識別番号に対応する第１識別番号のうち、宛先に到達したパケットの第１識別番号と異なる値の第１識別番号を、前記宛先に再送するパケットの第１識別番号として判定することを特徴とする付記１に記載の転送装置。
【００８４】
（付記３）コンピュータが実行する転送方法であって、
パケットを一意に識別する第１識別番号が割り当てられたパケットを、宛先に順次送信し、所定時間毎に値が加算される第２識別番号を宛先に順次送信し、
送信したパケットの第１識別番号と、該パケットが前記送信部から送信された時点の第２識別番号とを対応付けてテーブルに登録し、
宛先に到達したパケットの第１識別番号と前記宛先に到達した直近の第２識別番号を受信し、前記宛先に到達したパケットの第１識別番号および前記直近の第２識別番号と、前記テーブルとを基にして、前記宛先に再送するパケットの第１識別番号を判定し、
判定結果を基にして、パケットを再送する
各処理を実行する転送方法。
【００８５】
（付記４）前記判定する処理は、前記テーブルから前記直近の第２識別番号の値未満の第２識別番号に対応する第１識別番号のうち、宛先に到達したパケットの第１識別番号と異なる値の第１識別番号を、前記宛先に再送するパケットの第１識別番号として判定することを特徴とする付記３に記載の転送方法。
【００８６】
（付記５）コンピュータに、
パケットを一意に識別する第１識別番号が割り当てられたパケットを、宛先に順次送信し、所定時間毎に値が加算される第２識別番号を宛先に順次送信し、
送信したパケットの第１識別番号と、該パケットが前記送信部から送信された時点の第２識別番号とを対応付けてテーブルに登録し、
宛先に到達したパケットの第１識別番号と前記宛先に到達した直近の第２識別番号を受信し、前記宛先に到達したパケットの第１識別番号および前記直近の第２識別番号と、前記テーブルとを基にして、前記宛先に再送するパケットの第１識別番号を判定し、
判定結果を基にして、パケットを再送する
各処理を実行させることを特徴とする転送プログラム。
【００８７】
（付記６）前記判定する処理は、前記テーブルから前記直近の第２識別番号の値未満の第２識別番号に対応する第１識別番号のうち、宛先に到達したパケットの第１識別番号と異なる値の第１識別番号を、前記宛先に再送するパケットの第１識別番号として判定することを特徴とする付記５に記載の転送プログラム。
【符号の説明】
【００８８】
５０    ネットワーク
１００，２００  転送装置
【図１】
2014057170.tif 000003
【図２】
2014057170.tif 000004
【図３】
2014057170.tif 000005
【図４】
2014057170.tif 000006
【図５】
2014057170.tif 000007
【図６】
2014057170.tif 000008
【図７】
2014057170.tif 000009
【図８】
2014057170.tif 000010
【図９】
2014057170.tif 000011
【図１０】
2014057170.tif 000012
【図１１】
2014057170.tif 000013
【図１２】
2014057170.tif 000014
【図１３】
2014057170.tif 000015
【図１４】
2014057170.tif 000016
【図１５】
2014057170.tif 000017