(57)【要約】【課題】中継前後の通信速度が異なる場合に、中継による遅延を抑える。【解決手段】中継装置２は、ある通信装置（中継装置１）から受信したデータを異なる通信装置（中継装置３）に送信する。送信フレーム長算出装置２２は、フレームを分割送信する際の送信ペイロード長を算出、通知する。送信開始タイミング通知装置２３は、フレームの送信開始タイミングを通知する。フレーム生成／送信装置２５は、受信フレームと送信ペイロード長からフレームを生成し、送信開始タイミングに従い、フレームを送信する。【選択図】図２
2012034047.tif 000002
【特許請求の範囲】
【請求項１】
一個以上のフレームを受信する受信装置と、
上記受信装置が受信したフレームを組み換えて、上記受信装置が受信したフレームの個数と異なる個数のフレームを生成するフレーム組換部と、
上記受信装置がフレームを受信する通信速度と異なる通信速度で、上記フレーム組換部が生成したフレームを送信し、上記受信装置が上記一個以上のフレームの受信を完了する前に上記フレーム組換部が生成したフレームの送信を開始する送信装置とを有することを特徴とする中継装置。
【請求項２】
上記フレーム組換部は、上記受信装置が受信したフレームの個数より多い個数のフレームを生成し、
上記送信装置は、上記受信装置がフレームを受信する通信速度よりも速い通信速度で、上記フレーム組換部が生成した複数のフレームを送信することを特徴とする請求項１に記載の中継装置。
【請求項３】
上記フレーム組換部は、上記受信装置が受信した一個のフレームを複数のフレームに分割し、数１の右辺を計算することにより、分割した複数のフレームの長さを算出することを特徴とする請求項２に記載の中継装置。
【数１】
2012034047.tif 000038
ただし、Ｌｔｐは、分割した複数のフレームそれぞれのうちデータ部分の長さである。Ｓｒは、上記受信装置がフレームを受信する通信速度であり、単位時間当たりの受信データ長である。Ｓｔは、上記送信装置が複数のフレームを送信する通信速度であり、単位時間当たりの送信データ長である。Ｌｈは、上記受信装置が受信するフレーム及び上記送信装置が送信する複数のフレームそれぞれのうち、上記データ部分に先行するヘッダ部分の長さである。Ｌｆは、上記受信装置が受信するフレーム及び上記送信装置が送信する複数のフレームそれぞれのうち、上記データ部分に後続するフッタ部分の長さである。
【請求項４】
上記中継装置は、
上記受信装置がフレームを受信する通信速度と、上記送信装置が複数のフレームを送信する通信速度とに基づいて、上記送信装置が送信する複数のフレームに含まれるデータを上記送信装置が送信する時刻より前に、上記受信装置が上記データを受信するよう、上記送信装置が上記複数のフレームの送信を開始する時刻を算出する送信開始時刻算出部とを有することを特徴とする請求項２または請求項３に記載の中継装置。
【請求項５】
上記送信開始時刻算出部は、数２の右辺を計算することにより、上記送信装置が上記複数のフレームの送信を開始する時刻を算出することを特徴とする請求項４に記載の中継装置。
【数２】
2012034047.tif 000039
ただし、Ｔｗは、上記受信装置が上記フレームの受信を開始した時刻から、上記送信装置が上記複数のフレームのうち最初のフレームの送信を開始する時刻までの待ち時間である。Ｓｒは、上記受信装置がフレームを受信する通信速度であり、単位時間当たりの受信データ長である。Ｓｔは、上記送信装置が複数のフレームを送信する通信速度であり、単位時間当たりの送信データ長である。Ｌｈは、上記受信装置が受信するフレーム及び上記送信装置が送信する複数のフレームのうち、上記データ部分に先行するヘッダ部分の長さである。Ｌｆは、上記受信装置が受信するフレーム及び上記送信装置が送信する複数のフレームのうち、上記データ部分に後続するフッタ部分の長さである。
【請求項６】
上記フレーム組換部は、上記受信装置が受信したフレームの個数より少ない個数のフレームを生成し、
上記送信装置は、上記受信装置がフレームを受信する通信速度よりも遅い通信速度で、上記フレーム組換部が生成したフレームを送信することを特徴とする請求項１に記載の中継装置。
【請求項７】
上記フレーム組換部は、上記受信装置が受信した複数のフレームを結合して、一個のフレームを生成することを特徴とする請求項６に記載の中継装置。
【請求項８】
上記中継装置は、
上記受信装置が複数のフレームを受信する通信速度と、上記送信装置がフレームを送信する通信速度とに基づいて、上記送信装置が送信するフレームに含まれるデータを上記送信装置が送信する時刻より前に、上記受信装置が上記データを受信するよう、上記送信装置が上記フレームの送信を開始する時刻を算出する送信開始時刻算出部とを有することを特徴とする請求項６または請求項７に記載の中継装置。
【請求項９】
上記送信開始時刻算出部は、数３の右辺を計算することにより、上記送信装置が上記フレームの送信を開始する時刻を算出することを特徴とする請求項８に記載の中継装置。
【数３】
2012034047.tif 000040
ただし、Ｔｗは、上記受信装置が上記複数のフレームのうち最初のフレームの受信を開始した時刻から、上記送信装置が上記フレームの送信を開始する時刻までの待ち時間である。Ｓｒは、上記受信装置がフレームを受信する通信速度であり、単位時間当たりの受信データ長である。Ｓｔは、上記送信装置が複数のフレームを送信する通信速度であり、単位時間当たりの送信データ長である。Ｓｔ０は、上記中継装置よりも送信元側にある他の中継装置が分割送信した時の送信速度である。Ｌｈは、上記受信装置が受信するフレーム及び上記送信装置が送信する複数のフレームのうち、上記データ部分に先行するヘッダ部分の長さである。Ｌｆは、上記受信装置が受信するフレーム及び上記送信装置が送信する複数のフレームのうち、上記データ部分に後続するフッタ部分の長さである。Ｌｒｐは、上記受信装置が受信する複数のフレームのデータ部分の長さである。Ｌ０ｐは、上記他の中継装置が分割送信した複数のフレームのデータ部分の長さである。
【請求項１０】
コンピュータが実行することにより、上記コンピュータが請求項１乃至請求項９のいずれかに記載の中継装置として機能することを特徴とするコンピュータプログラム。
【請求項１１】
受信装置と、フレーム組換部と、送信装置とを有する中継装置が、フレームを中継する中継方法において、
上記受信装置が、一個以上のフレームを受信し、
上記フレーム組換部が、上記受信装置が受信したフレームを組み換えて、上記受信装置が受信したフレームの個数と異なる個数のフレームを生成し、
上記送信装置が、上記受信装置がフレームを受信する通信速度と異なる通信速度で、上記フレーム組換部が生成したフレームを送信し、上記受信装置が上記一個以上のフレームの受信を完了する前に上記フレーム組換部が生成したフレームの送信を開始することを特徴とする中継方法。
【発明の詳細な説明】
【技術分野】
【０００１】
この発明は、通信を中継する中継装置に関する。
【背景技術】
【０００２】
ＶｏＩＰ（Ｖｏｉｃｅ  ｏｖｅｒ  Ｉｎｔｅｒｎｅｔ  Ｐｒｏｔｏｃｏｌ）やネットワークゲームなどのリアルタイムな応答が求められるアプリケーションでは、ネットワーク上で発生するレイテンシ（遅延時間）の短さが重要視される。このようなアプリケーションを実現するネットワークは、多くの場合、送信元装置から送信先装置に通信を実施する場合、複数の中継装置を中継して通信を実現する。このため、中継通信におけるレイテンシの短縮が望まれる。
【０００３】
レイテンシを短縮する方式としては、例えば、次のようなものがある。
中継通信を実施するネットワークにおいて、中継フレームの受信完了を待たずに中継フレームの送信を開始する。特に、中継前後での通信速度が異なる場合、中継前より中継後の通信速度が速くなる場合、バッファアンダーランが発生しないよう、中継前後の通信速度とフレーム長から待ち合わせを実施し、中継を開始する。これにより、中継処理によるレイテンシを抑制する。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開平８−３２６１５号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
中継前よりも中継後の通信速度が速くなる場合において、バッファアンダーランが発生しないよう待ち合わせを実施してから中継を開始する方式は、フレームの長さが長くなると、その分、待ち合わせ時間が長くなる。
この発明は、例えば上記のような課題を解決するためになされたものであり、中継前後の通信速度が異なる場合における中継による遅延を抑えることを目的とする。
【課題を解決するための手段】
【０００６】
この発明にかかる中継装置は、
一個以上のフレームを受信する受信装置と、
上記受信装置が受信したフレームを組み換えて、上記受信装置が受信したフレームの個数と異なる個数のフレームを生成するフレーム組換部と、
上記受信装置がフレームを受信する通信速度と異なる通信速度で、上記フレーム組換部が生成したフレームを送信し、上記受信装置が上記一個以上のフレームの受信を完了する前に上記フレーム組換部が生成したフレームの送信を開始する送信装置とを有する。
【発明の効果】
【０００７】
この発明にかかる中継装置によれば、分割して送信されたフレームを早めに後続の中継装置に通知することができるため、後続の通信経路が低速になったときの中継処理によるレイテンシを抑えることができる。
【図面の簡単な説明】
【０００８】
【図１】中継前より中継後の通信速度が速く、フレームを分割しない場合における通信のタイミングを示す図。
【図２】実施の形態１における中継装置２の構成図。
【図３】受信速度より送信速度が速い場合における通信タイミングを示す図。
【図４】受信速度より送信速度が遅い場合における通信タイミングを示す図。
【図５】複数の中継装置によるフレームの中継の一例を示すタイミング図。
【図６】実施の形態２における中継装置１００のハードウェア資源の一例を示す図。
【図７】実施の形態２における中継装置１００が中継するフレーム５１０のハードウェア資源の一例を示す図。
【図８】実施の形態２における中継装置１００の機能ブロックの一例を示すブロック構成図。
【図９】実施の形態２における中継装置１００が受信するフレーム５１０Ａと、中継装置１００が送信するフレーム５１０ａ〜５１０ｅとの関係を示すタイミング図。
【図１０】実施の形態２における中継装置１００が受信するフレーム５１０Ａと、中継装置１００が送信するフレーム５１０ａとの関係を示すタイミング図。
【図１１】実施の形態２における中継装置１００が受信するフレーム５１０Ａ〜５１０Ｂと、中継装置１００が送信するフレーム５１０ａ〜５１０ｃとの関係を示すタイミング図。
【図１２】実施の形態２における中継装置１００が受信するフレーム５１０Ａ〜５１０Ｂと、中継装置１００が送信するフレーム５１０ａ〜５１０ｃとの関係を示すタイミング図。
【図１３】実施の形態２におけるヘッダ生成処理Ｓ３００の流れの一例を示すフローチャート図。
【図１４】実施の形態２における送信開始時刻算出処理Ｓ３０７の流れの一例を示すフローチャート図。
【図１５】実施の形態２における最大待ち時間算出工程Ｓ４０１の流れの一例を示すフローチャート図。
【図１６】実施の形態２における非分割設定工程Ｓ４０２の流れの一例を示すフローチャート図。
【図１７】実施の形態２における分割数見積もり工程Ｓ４０３の流れの一例を示すフローチャート図。
【図１８】実施の形態２における開始優先設定工程Ｓ４０５の流れの一例を示すフローチャート図。
【図１９】実施の形態２における終了優先設定工程Ｓ４０６の流れの一例を示すフローチャート図。
【図２０】実施の形態２における分割設定工程Ｓ４０７の流れの一例を示すフローチャート図。
【図２１】実施の形態２における送信データ長算出処理Ｓ３０８の流れの一例を示すフローチャート図。
【図２２】実施の形態２における送信データ長算出工程Ｓ４６１の流れの一例を示すフローチャート図。
【図２３】実施の形態２における送信長算出工程Ｓ４７５の流れの一例を示すフローチャート図。
【図２４】実施の形態２における空フレーム削除工程Ｓ４６２の流れの一例を示すフローチャート図。
【発明を実施するための形態】
【０００９】
図１は、中継前より中継後の通信速度が速く、フレームを分割しない場合における通信のタイミングを示す図である。
レイテンシＴｗは、次の式で表される。
【数１１】
2012034047.tif 000003
ただし、Ｓｒは受信経路の通信速度（以下、受信速度）、Ｓｔは送信経路の通信速度（以下、送信速度）、Ｌｐは中継ペイロード長、Ｌｈはヘッダ長、Ｌｆはフッタ長である。
このレイテンシは、ペイロード長、ヘッダ長、フッタ長の合計であるフレーム長に比例しており、長いフレームを中継する場合のレイテンシは大きくなる。以下に説明する中継装置は、フレーム長の増加に伴うレイテンシの増加を抑制する。
【００１０】
実施の形態１．
実施の形態１について、図２〜図５を用いて説明する。
【００１１】
この実施の形態における中継装置は、低速な通信経路から高速な通信経路に中継を実施するとき、中継装置がフレームの受信完了を待たずに、受信が完了した箇所から順に分割送信することで中継時のレイテンシを抑制する。
【００１２】
まず、前提を説明する。
中継装置は、送信元装置と送信先装置の組み合わせに対応する受信速度Ｓｒと送信速度Ｓｔ、フレームのヘッダ長Ｌｈとフッタ長Ｌｆを予め記憶しているものとする。
また、フレームのヘッダには送信元装置のアドレス、送信先装置のアドレス、フレームのペイロード長（以下、受信ペイロード長）Ｌｐｒ、過去のフレームの分割前のペイロード長（以下、分割前ペイロード長）Ｌｐ０，Ｌｐ１，…，Ｌｐｉ（ただし、ｉは、送信元装置の送信したフレームから分割されている回数）と分割後の送信速度（以下、分割後送信速度）Ｓｔ０，Ｓｔ１，…，Ｓｔｉを格納する（ただし、Ｓｔ０は直前の分割送信時の送信速度、Ｌｐ０は直前の分割送信時のペーロード長とする。）。さらに、フッタについては、フレームのヘッダとペイロードに格納されているデータから算出するものとする。
【００１３】
図２は、この実施の形態における中継装置２の構成図である。
中継装置２（通信装置）は、ある通信装置から受信したデータを異なる通信装置に送信する。例えば、中継装置２は、中継装置２に隣接する送信元装置もしくは送信元側の中継装置１からフレームを受信し、受信したフレームを分割もしくは結合したフレームを生成し、送信先装置もしくは送信先側の中継装置３に生成したフレームを送信する。
【００１４】
中継装置２の内部構造を説明する。
中継装置２は、送信フレーム長算出装置２２と、送信開始タイミング通知装置２３と、フレーム生成／送信装置２５とを有する。
送信フレーム長算出装置２２は、送信フレームのペイロード長（以下、送信ペイロード長）を算出、通知する。送信フレーム長算出装置２２は、送信ペイロード長Ｌｐｔを算出し、送信開始タイミング通知装置２３とフレーム生成／送信装置２５とに通知する。
【００１５】
送信開始タイミング通知装置２３は、フレームの送信開始タイミングを通知する。送信開始タイミング通知装置２３は、フレームの受信開始から送信開始までの待ち合わせ時間（以下、待ち合わせ時間）Ｔｗと、フレームの分割送信を実施する場合、さらに送信周期Ｔｃとフレーム送信回数Ｎｃを算出し、送信開始タイミングをフレーム生成／送信装置２５に通知する。
【００１６】
フレーム生成／送信装置２５は、受信フレームと送信ペイロード長からフレームを生成し、送信開始タイミングに従い、フレームを送信する。フレーム生成／送信装置２５は、送信フレームを生成し、送信開始タイミングに従い、送信先側の中継装置３もしくは送信先装置にフレームを送信する。
【００１７】
次に動作について説明する。
中継装置２は、フレームのペイロード受信中に受信したペイロードを個別のフレームに分割し連続送信可能な場合、ペイロードの前寄りに格納されたデータを早く中継するため、受信したペイロードを分割して送信する（以下、分割送信）。また、中継装置２は、フレーム中継中に送信中のフレームの後続のフレームのペイロードが送信可能になったとき、通信タイミングの重複を回避するため、ペイロードを連結したフレームを送信する（以下、連結送信）。上記のいずれにも該当しない場合、中継装置２は、フレームをそのまま中継する（以下、素通り送信）。
【００１８】
このうち、送信フレーム長算出装置２２では、送信ペイロード長Ｌｐｔを算出する。
送信ペイロード長Ｌｐｔの算出式は、分割送信、素通り送信、連結送信でそれぞれ異なる。
【００１９】
（１）分割送信
レイテンシを抑制するために受信ペイロードをより細かく分割し、繰り返し送信する。そこで、連続してフレームを送信できるように、受信ペイロードの受信時間と受信ペイロードを格納したフレームの送信時間が等しくなるときのペイロード長を送信ペイロード長Ｌｐｔとする。
（２）素通り送信
送信ペイロード長Ｌｐｔは変化せず、受信ペイロード長となる。
（３）連結送信
（１）で述べたとおり、分割送信ではフレームを連続して送信するため、分割送信時は帯域を１００％使用する。このため、送信速度Ｓｔより速い分割後送信速度Ｓｔｊ−１で、分割送信を実施したペイロードＬｐｊ−１のフレームを、送信速度Ｓｔで遅延なく送信することは帯域不足により、できない。よって、送信速度Ｓｔでも、遅延なく送信可能な送信速度Ｓｔより遅い分割後送信速度Ｓｔｊの時のペイロードＬｐｊのフレームで送信を実施する（ただし、１≦ｊ≦ｉ）。
このとき、送信ペイロードＬｐｔは、次の式のようになる。
【数１２】
2012034047.tif 000004
ただし、（１）は分割送信の場合、（２）は素通り送信の場合、（３）は連結送信の場合である。
送信フレーム長算出装置２２は、算出した送信ペイロードＬｐｔを、送信開始タイミング通知装置２３とフレーム生成／送信装置２５に通知する。
【００２０】
送信開始タイミング通知装置２３は、待ち合わせ時間Ｔｗと分割送信時の送信周期Ｔｃとフレーム送信数Ｎｃを算出し、送信開始タイミングをフレーム生成／送信装置２５に通知する。
待ち合わせ時間Ｔｗの算出式は、送信方式（分割送信、素通り送信、連結送信）と、バッファアンダーランの発生の有無で異なる。まず、送信開始タイミング通知装置２３は、送信ペイロード長と受信ペイロード長とから送信方式を特定する。次に、送信開始タイミング通知装置２３は、フレームの受信開始と同時にフレームの送信を開始すると、バッファアンダーランが発生するか否かを判定する。バッファアンダーランが発生しない場合、送信開始タイミング通知装置２３は、ヘッダの受信時間を、待ち合わせ時間Ｔｗとする。バッファアンダーランが発生する場合、送信開始タイミング通知装置２３は、送信と受信が同時に完了するように待ち合わせ時間Ｔｗを設定する。各条件での待ち合わせ時間Ｔｗは、次のようになる。
【数１３】
2012034047.tif 000005
ただし、（１）は分割送信の場合、（２ａ）は素通り送信のうちバッファアンダーランが発生する場合、（２ｂ）は素通り送信のうちバッファアンダーランが発生しない場合、（３ａ）は連結送信のうちバッファアンダーランが発生する場合、（３ｂ）は連結送信のうちバッファアンダーランが発生しない場合である。
【００２１】
図３は、受信速度より送信速度が速い場合における通信タイミングを示す図である。
図４は、受信速度より送信速度が遅い場合における通信タイミングを示す図である。
【００２２】
また、分割送信時の送信周期Ｔｃは、受信ペイロードを格納したフレームの送信時間が受信ペイロードの受信時間と等しいため、次のようになる。
【数１４】
2012034047.tif 000006
【００２３】
さらに、フレーム送信数Ｎｃは、受信ペイロードを送信ペイロードで割った値となる。
【数１５】
2012034047.tif 000007
【００２４】
送信開始タイミング通知装置２３は、これら、算出した待ち合わせ時間Ｔｗと分割送信時の送信周期Ｔｃとフレーム送信数Ｎｃを元に、送信開始タイミングをフレーム生成／送信装置２５に通知する。
【００２５】
フレーム生成／送信装置２５は、ヘッダを含むフレームを生成し、送信先側の中継装置３もしくは送信先装置にフレームを送信する。
ヘッダの生成において、フレーム生成／送信装置２５は、受信フレームのヘッダから、送信ペイロード長をＬｐｔに変更する。さらに、分割送信の場合は、分割前ペイロード長にＬｐｒを、分割後送信速度にＳｔを追加する。また、連結送信の場合は、Ｓｔ０〜Ｓｔｉ−１とＬｐ０〜Ｌｐｉ−１の分割は連結させたため、参照する必要がないため削除する（ただし、Ｓｔｊ≦Ｓｔ＜ｓｔｊ−１）。
フレームの生成において、フレーム生成／送信装置２５は、上記のフレームに、ペイロードとして受信したフレームから送信ペイロード長Ｌｐｔ分のデータを連結し、フッタを生成することで、実現する。
フレームの送信において、フレーム生成／送信装置２５は、送信開始タイミング通知装置２３からの送信開始タイミングに従い実施する。
【００２６】
受信速度より送信速度が速い場合、通信タイミングは、例えば図３のようになり、分割送信により、送信フレーム長を短縮できるようになる。
【００２７】
図５は、複数の中継装置によるフレームの中継の一例を示すタイミング図である。
この例は、送信元装置から中継装置１への通信速度よりも、中継装置１から中継装置２への通信速度のほうが速く、中継装置２から送信先装置への通信速度は、送信元装置から中継装置１への通信速度と同じに戻る場合である。なお、ヘッダ及びフッタは省略し、ペイロードのみを示している。
左側は、比較例として、フレームの分割をしない場合、右側は、この実施の形態における分割送信および連結送信をした場合を示す。
このように、分割されたフレームを後続の中継装置で連結送信すると、先頭のフレームを基準にフレームが連結されるため、より早くフレームを送信できるようになる。
【００２８】
中継装置１は、次の式を満たす場合に、分割送信を実施する。
【数１６】
2012034047.tif 000008
このときのレイテンシＴｗは、次の式で表わされる。
【数１７】
2012034047.tif 000009
これに対し、分割送信しない場合のレイテンシＴｗは、次の式で表わされる。
【数１８】
2012034047.tif 000010
このように、分割送信をすることにより、レイテンシＴｗが、分割送信をしない場合より短くなる。
【００２９】
また、通信路上でフレームの干渉が発生する場合、図４のようにヘッダ、フッタを削減し、ペイロードを連結することで、通信タイミングの重複による待ち合わせを削減し、後続のフレームのレイテンシを短縮することもできる。
【００３０】
以上説明した通信装置（中継装置１〜３）は、ある通信装置から受信したデータを異なる通信装置に送信する。通信装置は、送信フレーム長算出装置２２と、送信開始タイミング通知装置２３と、フレーム生成／送信装置２５とを有する。送信フレーム長算出装置２２は、フレームを分割送信する際の送信ペイロード長を算出、通知する。送信開始タイミング通知装置２３は、フレームの送信開始タイミングを通知する。フレーム生成／送信装置２５は、受信フレームと送信ペイロード長からフレームを生成し、送信開始タイミングに従い、フレームを送信する。
【００３１】
実施の形態２．
実施の形態２について、図６〜図２４を用いて説明する。
なお、実施の形態１と共通する部分については、同一の符号を付し、説明を省略する。
【００３２】
図６は、この実施の形態における中継装置１００のハードウェア資源の一例を示す図である。
中継装置１００は、処理装置９１１と、記憶装置９１４と、受信装置９１５と、送信装置９１６とを有する。
処理装置９１１は、記憶装置９１４が記憶したプログラムを実行することにより、データを処理し、中継装置１００全体を制御する。
記憶装置９１４は、処理装置９１１が実行するプログラムや、処理装置９１１が処理するデータなどを記憶する。
受信装置９１５は、データを受信する。受信装置９１５が受信したデータは、処理装置９１１が直接処理してもよいし、記憶装置９１４が一時的に記憶してもよい。
送信装置９１６は、処理装置９１１が処理したデータや記憶装置９１４が記憶したデータを送信する。
中継装置１００の機能ブロックは、記憶装置９１４が記憶したプログラムを処理装置９１１が実行することにより、実現される。なお、中継装置１００の機能ブロックは、処理装置９１１がプログラムを実行することにより実現するのではなく、デジタル回路やアナログ回路などの電子回路やその他の電気的構成、あるいは機械的構成などその他の構成により実現するものであってもよい。
【００３３】
図７は、この実施の形態における中継装置１００が中継するフレーム５１０のハードウェア資源の一例を示す図である。
中継装置１００は、フレーム形式のデータを中継する。受信装置９１５は、データをフレーム５１０として受信し、送信装置９１６は、データをフレーム５１０として送信する。フレーム５１０は、ヘッダ部分５１１と、データ部分５１２と、フッタ部分５１３とを有する。
【００３４】
ヘッダ部分５１１は、固定された長さ（バイト数もしくはビット数）を有する。ヘッダ部分５１１の長さをヘッダ長７１１と呼び、数式中では「Ｌｈ」と記述する。
データ部分５１２は、任意の長さを有する。データ部分５１２の長さをデータ長７１２と呼び、数式中では「Ｌｐ」と記述する。なお、データ長７１２には、例えばバイト単位でなければならないとか、４バイトの倍数でなれけばならないとかいった制約が設けられていてもよい。
フッタ部分５１３は、固定された長さを有する。フッタ部分５１３の長さをフッタ長７１３と呼び、数式中では「Ｌｆ」と記述する。
【００３５】
ヘッダ部分５１１は、フレーム５１０の始まりを表わすデータや、例えばＩＰアドレスなどフレーム５１０の宛先を表わすデータや、データ部分５１２の長さを表わすデータなどを含む。また、フレーム５１０が、もともとは１つのフレーム５１０であったものを、中継装置１００が分割して複数のフレームにしたものである場合、ヘッダ部分５１１は、分割数や、分割された各フレームの長さや、各フレームの送信終了時刻から次のフレームの送信開始時刻までの遅延時間などを表わすデータを含む。なお、これらのデータは、分割されたフレームのうち、先頭のフレームにのみ含まれる構成であってもよい。
データ部分５１２は、送信すべきデータ本体である。
フッタ部分５１３は、フレーム５１０の終わりを表わすデータなどを含む。なお、フッタ部分５１３は、なくてもよい。
なお、この実施の形態におけるフレーム５１０のフッタ部分５１３には、新たな情報は含まれない。すなわち、中継装置１００は、受信するフレーム５１０のフッタ部分５１３をまだ受信する前であっても、ヘッダ部分５１１とデータ部分５１２との受信が終わっていれば、送信するフレーム５１０のフッタ部分５１３を生成することができる。
【００３６】
図８は、この実施の形態における中継装置１００の機能ブロックの一例を示すブロック構成図である。
中継装置１００は、受信速度取得部１１１と、送信速度取得部１１２と、受信ヘッダ取得部１２１と、受信データ長取得部１２２と、後続データ長取得部１２３と、後続遅延取得部１２４と、受信データ取得部１２５と、受信フッタ取得部１２６と、送信データ長算出部１３１と、送信開始時刻算出部１３２と、送信ヘッダ生成部１４１と、送信データ生成部１４２と、送信フッタ生成部１４３とを有する。
【００３７】
受信速度取得部１１１は、処理装置９１１を用いて、受信装置９１５がフレーム５１０を受信する通信速度を取得する。受信装置９１５がフレーム５１０を受信する通信速度を「Ｓｒ」と記述する。通信速度Ｓｒは、例えばビット毎秒のように、単位時間当たりに受信するデータの長さによって表される。中継装置１００が１つのフレーム５１０を受信するのにかかる時間は、以下の式で表される。
【数１９】
2012034047.tif 000011
ただし、Ｔｒは、フレーム５１０の受信にかかる時間である。Ｔｈｒは、フレーム５１０のうちヘッダ部分５１１の受信にかかる時間である。Ｔｐｒは、フレーム５１０のうちデータ部分５１２の受信にかかる時間である。Ｔｆｒは、フレーム５１０のうちフッタ部分５１３の受信にかかる時間である。Ｌｐｒは、中継装置１００が受信するフレーム５１０のデータ長７１２である。
【００３８】
送信速度取得部１１２は、処理装置９１１を用いて、送信装置９１６がフレーム５１０を送信する通信速度を取得する。送信装置９１６がフレーム５１０を送信する通信速度を「Ｓｔ」と記述する。通信速度Ｓｔは、通信速度Ｓｒと同様、例えばビット毎秒のように、単位時間当たりに送信するデータの長さによって表される。中継装置１００が１つのフレーム５１０を送信するのにかかる時間は、以下の式で表される。
【数２０】
2012034047.tif 000012
ただし、Ｔｔは、フレーム５１０の送信にかかる時間である。Ｔｈｔは、フレーム５１０のうちヘッダ部分５１１の送信にかかる時間である。Ｔｐｔは、フレーム５１０のうちデータ部分５１２の送信にかかる時間である。Ｔｆｔは、フレーム５１０のうちフッタ部分５１３の送信にかかる時間である。Ｌｐｔは、中継装置１００が送信するフレーム５１０のデータ長７１２である。
【００３９】
受信ヘッダ取得部１２１は、処理装置９１１を用いて、受信装置９１５が受信したデータから、フレーム５１０のヘッダ部分５１１を取得する。受信ヘッダ取得部１２１は、記憶装置９１４を用いて、取得したヘッダ部分５１１を記憶する。
例えば、受信ヘッダ取得部１２１は、処理装置９１１を用いて、受信装置９１５が受信したデータを、フレーム５１０の始まりを表わすデータと順次比較して、フレーム５１０の先頭を探す。フレーム５１０の先頭を見つけたら、受信ヘッダ取得部１２１は、処理装置９１１を用いて、そこからヘッダ長７１１分のデータをヘッダ部分５１１として取得する。ヘッダ部分５１１の取得が終わったら、受信ヘッダ取得部１２１は、処理装置９１１を用いて、そのことを受信データ取得部１２５に通知する。
【００４０】
受信データ長取得部１２２は、処理装置９１１を用いて、受信ヘッダ取得部１２１が記憶したヘッダ部分５１１を解析して、データ長７１２を取得する。受信データ長取得部１２２は、記憶装置９１４を用いて、取得したデータ長７１２を記憶する。
後続データ長取得部１２３は、処理装置９１１を用いて、受信ヘッダ取得部１２１が記憶したヘッダ部分５１１を解析して、フレーム５１０が分割フレームである場合に、分割数と、フレーム５１０のあとに後続する１以上のフレームそれぞれのデータ長７１２を取得する。後続データ長取得部１２３は、記憶装置９１４を用いて、取得した後続フレームのデータ長７１２を記憶する。
後続遅延取得部１２４は、処理装置９１１を用いて、受信ヘッダ取得部１２１が記憶したヘッダ部分５１１を解析して、フレーム５１０が分割フレームである場合に、フレーム５１０のあとに後続する１以上のフレームそれぞれの遅延時間を取得する。後続遅延取得部１２４は、記憶装置９１４を用いて、取得した後続フレームの遅延時間を記憶する。
【００４１】
受信データ取得部１２５は、処理装置９１１を用いて、受信装置９１５が受信したデータから、フレーム５１０のデータ部分５１２を取得する。受信データ取得部１２５は、記憶装置９１４を用いて、取得したデータ部分５１２を記憶する。
例えば、受信データ取得部１２５は、処理装置９１１を用いて、受信ヘッダ取得部１２１からの通知を受けて、データ部分５１２の始まりを検知する。受信データ取得部１２５は、処理装置９１１を用いて、受信装置９１５が受信したデータを、データ部分５１２のデータとして順次取得する。受信データ取得部１２５は、記憶装置９１４を用いて、取得したデータを、先入れ先出し形式のバッファに記憶する。受信データ取得部１２５は、処理装置９１１を用いて、取得したデータの長さを計数し、受信データ長取得部１２２が記憶したデータ長７１２と等しくなったら、データの取得を終了する。受信データ取得部１２５は、処理装置９１１を用いて、そのことを受信フッタ取得部１２６へ通知する。
【００４２】
受信フッタ取得部１２６は、処理装置９１１を用いて、受信装置９１５が受信したデータから、フレーム５１０のフッタ部分５１３を取得する。
例えば、受信フッタ取得部１２６は、処理装置９１１を用いて、受信データ取得部１２５からの通知を受けて、フッタ部分５１３の開始を検知する。受信フッタ取得部１２６は、処理装置９１１を用いて、受信装置９１５が受信したデータのうち、そこからフッタ長７１３分のデータを、フッタ部分５１３として取得する。フッタ部分５１３の取得が終わったら、受信フッタ取得部１２６は、処理装置９１１を用いて、そのことを受信ヘッダ取得部１２１に通知する。
受信フッタ取得部１２６からの通知を受けると、受信ヘッダ取得部１２１は、処理装置９１１を用いて、次のフレーム５１０の先頭を探す。
【００４３】
送信データ長算出部１３１は、処理装置９１１を用いて、中継装置１００が送信するフレーム５１０のデータ長７１２を算出する。送信データ長算出部１３１は、記憶装置９１４を用いて、算出したデータ長７１２を記憶する。
中継装置１００は、受信したデータをできる限り早く送信することにより、中継による遅延を少なくする。このため、受信速度Ｓｒよりも送信速度Ｓｔが速い場合など、データの受信が間に合わなくなる可能性がある。そこで、送信データ長算出部１３１は、データの受信が間に合うぎりぎりのデータ長７１２を算出する。送信データ長算出部１３１が算出するデータ長７１２は、中継装置１００が受信したフレーム５１０のデータ長７１２よりも短くなる場合（フレームの分割）もあれば、長くなる場合（フレームの結合）もある。
【００４４】
送信開始時刻算出部１３２は、処理装置９１１を用いて、中継装置１００がフレーム５１０の送信を開始する時刻を算出する。送信開始時刻算出部１３２は、記憶装置９１４を用いて、算出した送信開始時刻を記憶する。
場合によっては、フレーム５１０の送信開始を少し遅らせることにより、データの受信が間に合わなくなるのを防ぐことができる場合がある。その結果、中継装置１００が送信するフレーム５１０のデータ長７１２が長くなり、中継装置１００が送信するフレーム５１０の数が減るので、逆に、データ全体の送信を早く終わらせることができる。
なお、送信開始時刻算出部１３２が算出する送信開始時刻は、「何時何分何秒」のような絶対時刻であってもよいし、例えば「前のフレームの送信が終わってから何秒後」のような相対時刻であってもよい。
【００４５】
送信ヘッダ生成部１４１は、処理装置９１１を用いて、送信データ長算出部１３１が算出したデータ長７１２と、送信開始時刻算出部１３２が算出した送信開始時刻とに基づいて、中継装置１００が送信するフレーム５１０のヘッダ部分５１１を生成する。送信ヘッダ生成部１４１は、処理装置９１１を用いて、生成したヘッダ部分５１１を送信装置９１６に通知する。
送信データ生成部１４２は、処理装置９１１を用いて、送信データ長算出部１３１が算出したデータ長７１２に基づいて、受信データ取得部１２５が記憶したデータを順次取得し、中継装置１００が送信するフレーム５１０のデータ部分５１２を生成する。送信データ生成部１４２は、処理装置９１１を用いて、生成したデータ部分５１２を送信装置９１６に順次通知する。
送信フッタ生成部１４３は、処理装置９１１を用いて、送信ヘッダ生成部１４１が生成したヘッダ部分５１１や送信データ生成部１４２が生成したデータ部分５１２などに基づいて、中継装置１００が送信するフレーム５１０のフッタ部分５１３を生成する。送信フッタ生成部１４３は、処理装置９１１を用いて、生成したフッタ部分５１３を送信装置９１６に通知する。
【００４６】
送信装置９１６は、送信開始時刻算出部１３２が算出した送信開始時刻になったら、送信ヘッダ生成部１４１が生成したヘッダ部分５１１と、送信データ生成部１４２が生成したデータ部分５１２と、送信フッタ生成部１４３が生成したフッタ部分５１３とからなるフレーム５１０の送信を開始する。送信装置９１６がフレーム５１０の送信を開始する時点では、ヘッダ部分５１１は完成しているが、まだデータ部分５１２の生成の途中かもしれない。しかし、送信データ長算出部１３１が算出したデータ長７１２と、送信開始時刻算出部１３２が算出した送信開始時刻が適切であれば、送信装置９１６がフレーム５１０の送信を終了する時点では、データ部分５１２もフッタ部分５１３も完成しているはずである。
【００４７】
次に、中継装置１００が送信するフレーム５１０のデータ長７１２を送信データ長算出部１３１が算出する方式およびフレーム５１０の送信開始時刻を送信開始時刻算出部１３２が算出する方式について説明する。
以下の説明において、中継装置１００が受信するフレーム５１０には、アルファベット大文字を付けて「５１０Ａ」「５１０Ｂ」のように記述し、中継装置１００が送信するフレーム５１０には、アルファベット小文字を付けて「５１０ａ」「５１０ｂ」のように記述する。
また、送信データ長算出部１３１がデータ長７１２を算出する処理など、処理装置９１１による処理にかかる時間は、フレーム５１０の受信あるいは送信にかかる時間と比べて非常に短いので、以下の説明では、処理装置９１１による処理にかかる時間を無視する。なお、処理装置９１１による処理にかかる時間が無視できない場合は、その分を一定の遅延時間と考えれば、以下の説明をそのまま適用できる。
【００４８】
まず、受信速度Ｓｒより送信速度Ｓｔのほうが速い場合について説明する。
【００４９】
図９は、この実施の形態における中継装置１００が受信するフレーム５１０Ａと、中継装置１００が送信するフレーム５１０ａ〜５１０ｅとの関係を示すタイミング図である。
横軸は、時刻を示す。縦軸は、データの受信率または送信率を示す。破線７５１は、中継装置１００が受信するデータの受信率を示す。受信率とは、中継装置１００が受信するフレーム５１０Ａのデータ部分５１２Ａのデータ長７１２のうち、中継装置１００が受信したデータの長さの割合である。実線７５２は、中継装置１００が送信するデータの送信率を示す。送信率とは、中継装置１００が受信するフレーム５１０Ａのデータ部分５１２Ａのデータ長７１２のうち、中継装置１００が送信したデータの長さの割合である。
【００５０】
時刻６１１において、受信装置９１５は、フレーム５１０Ａの受信を開始する。
時刻６１２において、受信装置９１５は、ヘッダ部分５１１Ａの受信を終え、データ部分５１２Ａの受信を開始する。受信ヘッダ取得部１２１が取得したヘッダ部分５１１Ａを、受信データ長取得部１２２・後続データ長取得部１２３・後続遅延取得部１２４がそれぞれ解析する。受信データ長取得部１２２は、データ部分５１２Ａのデータ長７１２Ａを取得する。後続データ長取得部１２３・後続遅延取得部１２４は、分割数、後続するフレームのデータ長、遅延時間などを取得する。この例では、フレーム５１０Ａが分割されたフレームではないので、分割数は１である。後続データ長取得部１２３・後続遅延取得部１２４は、後続フレームのデータ長や遅延時間を取得しない。
送信データ長算出部１３１は、受信速度Ｓｒ・送信速度Ｓｔ・受信データ長７１２Ａ・分割数などに基づいて、送信するフレーム５１０ａ〜５１０ｅの数、各フレーム５１０ａ〜５１０ｅのデータ長７１２ａ〜７１２ｅなどを算出する。送信開始時刻算出部１３２は、受信速度Ｓｒ・送信速度Ｓｔ・受信データ長７１２Ａ・分割数などに基づいて、各フレーム５１０ａ〜５１０ｅの送信開始時刻を算出する。
送信ヘッダ生成部１４１は、送信データ長算出部１３１が算出したデータ長７１２ａ〜７１２ｅと、送信開始時刻算出部１３２が算出した送信開始時刻とに基づいて、送信するフレーム５１０ａ〜５１０ｅのヘッダ部分５１１ａ〜５１１ｅを生成する。
この例では、送信開始時刻算出部１３２が算出した最初のフレーム５１０ａの送信開始時刻までの待ち時間が「０」なので、送信装置９１６は、すぐに、最初のフレーム５１０ａの送信を開始する。
【００５１】
時刻６１３において、送信装置９１６は、最初のフレーム５１０ａのうち、ヘッダ部分５１１ａの送信を終え、データ部分５１２ａの送信を開始する。この時点において、受信装置９１５は、送信装置９１６が送信する最初のフレーム５１０ａのデータ部分５１２ａに入れるべきデータのうち、約半分しか受信していない。
【００５２】
時刻６１４において、受信装置９１５は、送信装置９１６が送信する最初のフレーム５１０ａのデータ部分５１２ａに入れるべきデータの受信を終える。送信データ生成部１４２は、データ部分５１２ａを完成させる。送信装置９１６は、データ部分５１２ａの送信を終える。送信フッタ生成部１４３は、フッタ部分５１３ａを生成する。送信装置９１６は、フッタ部分５１３ａの送信を開始する。
【００５３】
時刻６１５において、送信装置９１６は、最初のフレーム５１０ａの送信を終える。
この例では、送信開始時刻算出部１３２が算出した次のフレーム５１０ｂの送信開始時刻までの待ち時間が「０」なので、送信装置９１６は、すぐに、次のフレーム５１０ｂの送信を開始する。
【００５４】
時刻６１６において、送信装置９１６は、二番目のフレーム５１０ｂのヘッダ部分５１１ｂの送信を終え、データ部分５１２ｂの送信を開始する。
時刻６１７において、送信装置９１６は、二番目のフレーム５１０ｂのデータ部分５１２ｂの送信を終え、フッタ部分５１３ｂの送信を開始する。
時刻６１８において、送信装置９１６は、二番目のフレーム５１０ｂの送信を終える。
この例では、送信開始時刻算出部１３２が算出した次のフレーム５１０ｃの送信開始時刻までの待ち時間が「０」ではないので、送信装置９１６は、待ち時間が経過するまで次のフレーム５１０ｃの送信を開始しない。
【００５５】
時刻６１９において、待ち時間が経過したので、送信装置９１６は、三番目のフレーム５１０ｃの送信を開始する。
【００５６】
このようにして、送信装置９１６は、受信装置９１５が受信したフレーム５１０Ａを分割した５つのフレーム５１０ａ〜５１０ｅを送信する。
【００５７】
ここで、送信装置９１６は、受信装置９１５が受信し終わったデータしか送信することができないので、実線７５２は、必ず、破線７５１よりも右下にあり、左上にはみ出すことはない。
また、破線７５１と実線７５２との囲まれた部分の面積が、中継による遅延を表わす。この面積が小さいほど、中継による遅延が少ないことを意味する。したがって、送信データ長算出部１３１および送信開始時刻算出部１３２は、この面積がなるべく小さくなるよう、データ長７１２および送信開始時刻を算出する。
【００５８】
送信装置９１６が送信を開始できる最も早い時刻から、受信装置９１５がデータ部分５１２Ａのうち、最初から長さＬのデータの受信を完了する時刻までの時間ｔｒ（Ｌ）は、次の式で表される。
【数２１】
2012034047.tif 000013
第一項は、受信装置９１５がフレーム５１０Ａのデータ部分５１２Ａの受信を開始してから、長さＬのデータの受信を完了するまでの時間を表わす。第二項は、受信装置９１５がフレーム５１０Ａのヘッダ部分５１１Ａの受信を完了してから、送信装置９１６が最初のフレーム５１０ａのヘッダ部分５１１ａの送信を完了するまでの時間を表わす。
【００５９】
また、送信装置９１６が送信を開始できる最も早い時刻から、送信装置９１６が長さＬのデータの送信を最も早く完了できる時刻までの時間ｔｔ（Ｌ）は、次の式で表される。
【数２２】
2012034047.tif 000014
【００６０】
受信時間ｔｒ（Ｌ）が送信時間ｔｔ（Ｌ）よりも常に小さければ、フレームを分割せず、かつ、待ち時間を設けずに、中継装置１００が受信したデータを送信できる。そこで、受信時間ｔｒ（Ｌ）と送信時間ｔｔ（Ｌ）との差ｔ（Ｌ）を考える。
【数２３】
2012034047.tif 000015
【００６１】
受信速度Ｓｒより送信速度Ｓｔのほうが速い場合、差ｔ（Ｌ）が最も大きくなるのは、Ｌが最大のとき、すなわち、Ｌが、フレーム５１０Ａのデータ長７１２Ａと等しいときである。
【数２４】
2012034047.tif 000016
ただし、Ｌｒｐは、フレーム５１０Ａのデータ長７１２Ａである。
【００６２】
また、この値は、フレームを分割しない場合において、最初のフレーム５１０Ａの送信開始時刻までの待ち時間を意味する。
【００６３】
フレームを分割すると、１回分割するごとに、ヘッダ部分５１１とフッタ部分５１３とを１つずつ余分に送信する必要が生じる。送信装置９１６がヘッダ部分５１１を送信するのにかかる時間とフッタ部分５１３を送信するのにかかる時間との合計時間ｔｄは、次の式で表される。
【数２５】
2012034047.tif 000017
【００６４】
したがって、フレームを１回分割するごとに、待ち時間は、時間ｔｄだけ減る。フレームの分割数をｎとすると、待ち時間は、次の式で表される。
【数２６】
2012034047.tif 000018
【００６５】
例えば、送信開始時刻算出部１３２は、処理装置９１１を用いて、数２４の値ｍａｘ［ｔ（Ｌ）］を計算する。
【００６６】
送信開始時刻算出部１３２が計算した値ｍａｘ［ｔ（Ｌ）］が０以下である場合、送信開始時刻算出部１３２は、処理装置９１１を用いて、分割数を「１」とする。送信開始時刻算出部１３２は、処理装置９１１を用いて、最初の（そして唯一の）フレーム５１０ａの送信開始時刻までの待ち時間を「０」に設定する。
【００６７】
送信開始時刻算出部１３２が計算した値ｍａｘ［ｔ（Ｌ）］が０より大きい場合、送信開始時刻算出部１３２は、処理装置９１１を用いて、数２５の値ｔｄを計算する。
送信開始時刻算出部１３２は、処理装置９１１を用いて、計算した値ｍａｘ［ｔ（Ｌ）］と、計算した値ｔｄとに基づいて、値ｍａｘ［ｔ（Ｌ）］を値ｔｄで割った商を超えない最大の整数ｋと、値ｍａｘ［ｔ（Ｌ）］を値ｔｄで割った余りｍとを計算する。
【００６８】
送信開始時刻算出部１３２が計算した余りｍが０である場合、送信開始時刻算出部１３２は、処理装置９１１を用いて、計算した整数ｋに１を加えた整数［ｋ＋１］を計算する。送信開始時刻算出部１３２は、処理装置９１１を用いて、分割数を、計算した整数［ｋ＋１］に設定する。送信開始時刻算出部１３２は、処理装置９１１を用いて、［ｋ＋１］個のフレーム５１０の送信開始時刻までの待ち時間を、すべて「０」に設定する。
【００６９】
送信開始時刻算出部１３２が計算した余りｍが０ではなく、整数ｋが０である場合、送信開始時刻の算出方式には、送信開始を優先する方式と、送信終了を優先する方式との２種類がある。以下、それぞれの方式について説明する。
【００７０】
・送信開始を優先する方式
送信開始時刻算出部１３２は、処理装置９１１を用いて、分割数を「２」とする。送信開始時刻算出部１３２は、処理装置９１１を用いて、２つのフレーム５１０ａ，５１０ｂの送信開始時刻までの待ち時間を、ともに「０」に設定する。
【００７１】
・送信終了を優先する方式
送信開始時刻算出部１３２は、処理装置９１１を用いて、分割数を「１」とする。送信開始時刻算出部１３２は、処理装置９１１を用いて、最初の（そして唯一の）フレーム５１０ａの送信開始時刻までの待ち時間を、算出した余りｍに設定する。
【００７２】
送信開始を優先する方式の場合、最初のフレーム５１０ａの送信開始時刻までの待ち時間が０である代わりに、最後のフレーム５１０ｂのデータ部分５１２ｂの送信終了時刻が、受信するフレーム５１０Ａのデータ部分５１２Ａの受信終了時刻よりも遅れることになる。送信終了の遅延時間は、次の式で表される。
【数２７】
2012034047.tif 000019
【００７３】
これに対し、送信終了を優先する方式の場合、送信開始に余りｍの遅延が生じる代わり、受信するフレーム５１０Ａのデータ部分５１２Ａの受信終了とほぼ同時に、最後の（この場合、唯一の）フレーム５１０ａのデータ部分５１２ａの送信が終了する。
【００７４】
送信開始時刻算出部１３２は、上記いずれかの方式にしたがって、送信開始時刻を算出する。あるいは、送信開始時刻算出部１３２は、所定の条件にしたがって、上記２つの方式を使い分けて、送信開始時刻を算出する構成であってもよい。
【００７５】
中継装置１００の後段に別の中継装置１００’がある場合、すなわち、中継装置１００が送信したフレーム５１０を受信して中継する中継装置１００’がある場合において、中継装置１００’の送信速度が、中継装置１００の送信速度Ｓｔより速ければ、送信開始時刻よりも送信終了時刻のほうが重要である。このため、送信終了を優先する方式のほうが望ましい。
これに対し、中継装置１００’の送信速度が、中継装置１００の送信速度Ｓｔより遅ければ、送信開始時刻のほうが送信終了時刻よりも重要である。このため、送信開始を優先する方式のほうが望ましい。
【００７６】
送信開始時刻算出部１３２が計算した余りｍが０ではなく、整数ｋが１以上である場合、送信開始時刻算出部１３２は、処理装置９１１を用いて、計算した整数ｋに１を加えた整数［ｋ＋１］を計算する。送信開始時刻算出部１３２は、処理装置９１１を用いて、分割数を、計算した整数［ｋ＋１］に設定する。送信開始時刻算出部１３２は、処理装置９１１を用いて、［ｋ＋１］個のフレーム５１０のうち、いずれかのフレームの送信開始時刻までの待ち時間を、計算した余りｍに設定する。送信開始時刻算出部１３２は、処理装置９１１を用いて、［ｋ＋１］個のフレーム５１０のうち、残りのｋ個のフレームの送信開始時刻までの待ち時間を「０」に設定する。
【００７７】
なお、最初のフレーム５１０ａに待ち時間を設けると、送信開始が遅れることになるので、待ち時間を設けるフレームは、二番目以降のフレームであることが望ましい。また、後段への影響を考慮すると、待ち時間を設けるフレームは、分割したフレームのうち真ん中付近にあることが望ましい。
例えば、送信開始時刻算出部１３２は、処理装置９１１を用いて、分割数［ｋ＋１］を２で割った商を超えない最大の整数ｉを算出する。送信開始時刻算出部１３２は、処理装置９１１を用いて、［ｉ＋１］番目のフレームに待ち時間を設ける。
【００７８】
また、送信開始時刻算出部１３２は、１つのフレームに待ち時間を設けるのではなく、複数のフレームに待ち時間を設ける構成としてもよい。その場合、複数のフレームの待ち時間の合計が余りｍと等しくなるようにする。
例えば、分割数［ｋ＋１］が４以上である場合、送信開始時刻算出部１３２は、処理装置９１１を用いて、分割数［ｋ＋１］から３を差し引いた差［ｋ−２］を計算する。送信開始時刻算出部１３２は、処理装置９１１を用いて、計算した差［ｋ−２］で、余りｍを割った商［ｍ／（ｋ−２）］を計算する。送信開始時刻算出部１３２は、処理装置９１１を用いて、三番目のフレームからｋ番目（最後から二番目）のフレームまでの［ｋ−２］個のフレームについて、送信開始時刻までの待ち時間を、計算した商［ｍ／（ｋ−２）］に設定する。
【００７９】
送信データ長算出部１３１は、送信開始時刻算出部１３２が算出した分割数や、送信開始時刻に基づいて、各フレーム５１０のデータ長７１２を算出する。
【００８０】
例えば、送信開始時刻算出部１３２が算出した分割数が「１」の場合、送信データ長算出部１３１は、処理装置９１１を用いて、最初の（そして唯一の）フレーム５１０ａのデータ長７１２ａを、フレーム５１０Ａのデータ長７１２Ａと等しい値に設定する。
【００８１】
送信開始時刻算出部１３２が算出した分割数が２以上である場合、送信データ長算出部１３１は、処理装置９１１を用いて、各フレームについて、次の式を満たす値Ｌｉを計算する。
【数２８】
2012034047.tif 000020
ただし、ｉは、フレーム番号である。フレーム番号ｉは、最初のフレームを１とする。Ｔｔｗｊは、送信開始時刻算出部１３２が算出したｊ番目のフレームの送信開始時刻までの待ち時間である。ｎは、送信開始時刻算出部１３２が算出した分割数である。
【００８２】
送信データ長算出部１３１は、処理装置９１１を用いて、各フレームについて、データ長として許容される長さのうち、次の式を満たす最大の長さＬｔｐｉを算出する。
【数２９】
2012034047.tif 000021
送信データ長算出部１３１は、処理装置９１１を用いて、各フレームのデータ長７１２を、算出した長さＬｔｐｉに設定する。
【００８３】
次に、受信速度Ｓｒより送信速度Ｓｔのほうが遅い場合および受信速度Ｓｒと送信速度Ｓｔとが等しい場合について説明する。
【００８４】
図１０は、この実施の形態における中継装置１００が受信するフレーム５１０Ａと、中継装置１００が送信するフレーム５１０ａとの関係を示すタイミング図である。
横軸は、時刻を示す。縦軸は、データの受信率または送信率を示す。破線７５１は、中継装置１００が受信するデータの受信率を示す。実線７５２は、中継装置１００が送信するデータの送信率を示す。
【００８５】
時刻６１１において、受信装置９１５は、フレーム５１０Ａの受信を開始する。
時刻６１２において、受信装置９１５は、フレーム５１０Ａのヘッダ部分５１１Ａの受信を終え、データ部分５１２Ａの受信を開始する。送信ヘッダ生成部１４１は、中継装置１００が送信するフレーム５１０ａのヘッダ部分５１１ａを生成する。送信装置９１６は、すぐに、フレーム５１０ａの送信を開始する。
時刻６１３において、送信装置９１６は、フレーム５１０ａのヘッダ部分５１１ａの送信を終え、データ部分５１２ａの送信を開始する。
時刻６１４において、受信装置９１５は、フレーム５１０Ａのデータ部分５１２Ａの受信を終え、フッタ部分５１３Ａの受信を開始する。
時刻６１５において、送信装置９１６は、フレーム５１０ａのデータ部分５１２ａの送信を終え、フッタ部分５１３ａの送信を開始する。
【００８６】
このように、受信速度Ｓｒより送信速度Ｓｔのほうが遅い場合や、受信速度Ｓｒと送信速度Ｓｔとが等しい場合には、データの受信が間に合わなくなる心配はない。
【００８７】
送信開始時刻算出部１３２は、処理装置９１１を用いて、分割数を「１」に設定する。送信開始時刻算出部１３２は、処理装置９１１を用いて、最初の（そして唯一の）フレーム５１０ａの送信開始時刻までの待ち時間を「０」に設定する。送信データ長算出部１３１は、処理装置９１１を用いて、最初のフレーム５１０ａのデータ長７１２ａを、フレーム５１０Ａのデータ長７１２Ａと等しい値に設定する。
【００８８】
次に、中継装置１００と同様の中継装置１００’が、中継装置１００よりも前段にあり、中継装置１００’が分割した複数のフレーム５１０を、中継装置１００が中継する場合について説明する。
【００８９】
まず、受信速度Ｓｒより送信速度Ｓｔのほうが速い場合について説明する。
【００９０】
図１１は、この実施の形態における中継装置１００が受信するフレーム５１０Ａ〜５１０Ｂと、中継装置１００が送信するフレーム５１０ａ〜５１０ｃとの関係を示すタイミング図である。
横軸は、時刻を示す。縦軸は、データの受信率または送信率を示す。破線７５１は、中継装置１００が受信するデータの受信率を示す。実線７５２は、中継装置１００が送信するデータの送信率を示す。
【００９１】
時刻６１１において、受信装置９１５は、中継装置１００’が分割した２つのフレーム５１０Ａ〜５１０Ｂのうち、最初のフレーム５１０Ａの受信を開始する。
時刻６１２において、受信装置９１５は、フレーム５１０Ａのヘッダ部分５１１Ａの受信を終え、データ部分５１２Ａの受信を開始する。受信ヘッダ取得部１２１が取得したヘッダ部分５１１Ａを、受信データ長取得部１２２・後続データ長取得部１２３・後続遅延取得部１２４がそれぞれ解析する。受信データ長取得部１２２は、データ部分５１２Ａのデータ長７１２Ａを取得する。後続データ長取得部１２３・後続遅延取得部１２４は、分割数、後続するフレームのデータ長、遅延時間などを取得する。この例では、フレーム５１０Ａが２つに分割されたフレームの最初のフレームなので、分割数は２である。後続データ長取得部１２３は、後続するフレーム５１０Ｂのデータ長７１２Ｂを取得する。後続遅延取得部１２４は、フレーム５１０Ａの送信終了時刻からフレーム５１０Ｂの送信開始時刻までの遅延時間を取得する。
送信データ長算出部１３１は、受信速度Ｓｒ・送信速度Ｓｔ・受信データ長７１２Ａ・分割数・後続データ長７１２Ｂ・遅延時間などに基づいて、送信するフレーム５１０ａ〜５１０ｃの数、各フレーム５１０ａ〜５１０ｃのデータ長７１２ａ〜７１２ｃなどを算出する。送信開始時刻算出部１３２は、受信速度Ｓｒ・送信速度Ｓｔ・受信データ長７１２Ａ・分割数・後続データ長７１２Ｂ・遅延時間などに基づいて、各フレーム５１０ａ〜５１０ｃの送信開始時刻を算出する。
送信ヘッダ生成部１４１は、送信データ長算出部１３１が算出したデータ長７１２ａ〜７１２ｅと、送信開始時刻算出部１３２が算出した送信開始時刻とに基づいて、送信するフレーム５１０ａ〜５１０ｅのヘッダ部分５１１ａ〜５１１ｅを生成する。
この例では、送信開始時刻算出部１３２が算出した最初のフレーム５１０ａの送信開始時刻までの待ち時間が「０」なので、送信装置９１６は、すぐに、最初のフレーム５１０ａの送信を開始する。
【００９２】
時刻６１３において、送信装置９１６は、フレーム５１０ａのヘッダ部分５１１ａの送信を終え、データ部分５１２ａの送信を開始する。
時刻６１４において、送信装置９１６は、フレーム５１０ａのデータ部分５１２ａの送信を終え、フッタ部分５１３ａの送信を開始する。
時刻６１５において、送信装置９１６は、フレーム５１０ａの送信を終える。この例では、送信開始時刻算出部１３２が算出した二番目のフレーム５１０ｂの送信開始時刻までの待ち時間が「０」なので、送信装置９１６は、すぐに、二番目のフレーム５１０ｂの送信を開始する。
時刻６１６において、送信装置９１６は、フレーム５１０ｂのヘッダ部分５１１ｂの送信を終え、データ部分５１２ｂの送信を開始する。
時刻６１７において、受信装置９１５は、フレーム５１０Ａの受信を終え、フレーム５１０Ｂの受信を開始する。
時刻６１８において、送信装置９１６は、フレーム５１０ｂのデータ部分５１２ｂの送信を終え、フッタ部分５１３ｂの送信を開始する。
時刻６１９において、送信装置９１６は、フレーム５１０ｂの送信を終える。この例では、送信開始時刻算出部１３２が算出した三番目のフレーム５１０ｃの送信開始時刻までの待ち時間が「０」ではないので、送信装置９１６は、待ち時間が経過するまで、三番目のフレーム５１０ｃの送信を開始しない。
時刻６２０において、待ち時間が経過したので、送信装置９１６は、フレーム５１０ｃの送信を開始する。
時刻６２１において、受信装置９１５は、フレーム５１０Ｂのヘッダ部分５１１Ｂの受信を終え、データ部分５１２Ｂの受信を開始する。
【００９３】
後続データ長取得部１２３がフレーム５１０Ａのヘッダ部分５１１Ａを解析して、後続フレーム５１０Ｂのデータ長７１２Ｂを取得しているので、送信ヘッダ生成部１４１は、送信装置９１６がフレーム５１０Ｂのヘッダ部分５１１Ｂを受信し終わるよりも前に、フレーム５１０ｃのヘッダ部分５１１ｃを生成することができる。
【００９４】
送信装置９１６が送信を開始できる最も早い時刻から、受信装置９１５が複数に分割されたフレームのデータ部分５１２を受信して、最初から合計した長さＬのデータの受信を完了する時刻までの時間ｔｒ（Ｌ）は、次の式で表される。
【数３０】
2012034047.tif 000022
ただし、ｉは、最初から合計した長さＬのデータの末尾のデータが含まれるフレームの番号である。Ｔｒｗｊは、受信装置９１５が受信する複数に分割されたフレームのうちｊ番目のフレームの送信開始時刻までの待ち時間である。ｉは、次の式を満たす。
【数３１】
2012034047.tif 000023
ただし、Ｌｒｐｊは、受信装置９１５が受信する複数に分割されたフレームのうちｊ番目のフレームのデータ長７１２である。
【００９５】
したがって、受信時間ｔｒ（Ｌ）と送信時間ｔｔ（Ｌ）との差ｔ（Ｌ）は、次の式で表される。
【数３２】
2012034047.tif 000024
【００９６】
受信速度Ｓｒより送信速度Ｓｔのほうが速い場合、差ｔ（Ｌ）が最も大きくなるのは、Ｌが最大のとき、すなわち、Ｌが、フレーム５１０Ａのデータ長７１２Ａと等しいときである。
【数３３】
2012034047.tif 000025
ただし、ｎｒは、受信装置９１５が受信する複数に分割されたフレームの分割数である。
【００９７】
例えば、送信開始時刻算出部１３２は、処理装置９１１を用いて、数３３の値ｍａｘ［ｔ（Ｌ）］を計算する。
【００９８】
送信開始時刻算出部１３２が計算した値ｍａｘ［ｔ（Ｌ）］が０以下である場合、送信開始時刻算出部１３２は、処理装置９１１を用いて、分割数を「１」に設定する。送信開始時刻算出部１３２は、処理装置９１１を用いて、最初の（そして唯一の）フレーム５１０ａの送信開始時刻までの待ち時間を「０」に設定する。
【００９９】
送信開始時刻算出部１３２が計算した値ｍａｘ［ｔ（Ｌ）］が０より大きい場合、送信開始時刻算出部１３２は、処理装置９１１を用いて、数２５の値ｔｄを計算する。
送信開始時刻算出部１３２は、処理装置９１１を用いて、計算した値ｍａｘ［ｔ（Ｌ）］と、計算した値ｔｄとに基づいて、値ｍａｘ［ｔ（Ｌ）］を値ｔｄで割った商を超えない最大の整数ｋと、値ｍａｘ［ｔ（Ｌ）］を値ｔｄで割った余りｍとを計算する。
【０１００】
送信開始時刻算出部１３２が計算した余りｍが０である場合、送信開始時刻算出部１３２は、処理装置９１１を用いて、計算した整数ｋに１を加えた整数［ｋ＋１］を計算する。送信開始時刻算出部１３２は、処理装置９１１を用いて、分割数を、計算した整数［ｋ＋１］に設定する。送信開始時刻算出部１３２は、処理装置９１１を用いて、［ｋ＋１］個のフレーム５１０の送信開始時刻までの待ち時間を、すべて「０」に設定する。
【０１０１】
送信開始時刻算出部１３２が計算した余りｍが０ではなく、整数ｋが０である場合、送信開始時刻の算出方式には、上述した場合と同様、送信開始を優先する方式と、送信終了を優先する方式との２種類がある。
【０１０２】
・送信開始を優先する方式
送信開始時刻算出部１３２は、処理装置９１１を用いて、分割数を「２」とする。送信開始時刻算出部１３２は、処理装置９１１を用いて、２つのフレーム５１０ａ，５１０ｂの送信開始時刻までの待ち時間を、ともに「０」に設定する。
【０１０３】
・送信終了を優先する方式
送信開始時刻算出部１３２は、処理装置９１１を用いて、分割数を「１」とする。送信開始時刻算出部１３２は、処理装置９１１を用いて、最初の（そして唯一の）フレーム５１０ａの送信開始時刻までの待ち時間を、算出した余りｍに設定する。
【０１０４】
送信開始時刻算出部１３２が計算した余りｍが０ではなく、整数ｋが１以上である場合、送信開始時刻算出部１３２は、処理装置９１１を用いて、計算した整数ｋに１を加えた整数［ｋ＋１］を計算する。送信開始時刻算出部１３２は、処理装置９１１を用いて、分割数を、計算した整数［ｋ＋１］に設定する。送信開始時刻算出部１３２は、処理装置９１１を用いて、［ｋ＋１］個のフレーム５１０のうち、いずれかのフレームの送信開始時刻までの待ち時間を、計算した余りｍに設定する。送信開始時刻算出部１３２は、処理装置９１１を用いて、［ｋ＋１］個のフレーム５１０のうち、残りのｋ個のフレームの送信開始時刻までの待ち時間を「０」に設定する。
例えば、送信開始時刻算出部１３２は、処理装置９１１を用いて、分割数［ｋ＋１］を２で割った商を超えない最大の整数ｉを算出する。送信開始時刻算出部１３２は、処理装置９１１を用いて、［ｉ＋１］番目のフレームに待ち時間を設ける。
なお、送信開始時刻算出部１３２は、１つのフレームに待ち時間を設けるのではなく、複数のフレームに待ち時間を設ける構成としてもよい。
【０１０５】
送信データ長算出部１３１は、送信開始時刻算出部１３２が算出した分割数や、送信開始時刻に基づいて、各フレーム５１０のデータ長７１２を算出する。
【０１０６】
例えば、送信開始時刻算出部１３２が算出した分割数が「１」の場合、送信データ長算出部１３１は、処理装置９１１を用いて、最初の（そして唯一の）フレーム５１０ａのデータ長７１２ａを、受信装置９１５が受信する複数の分割されたフレームのデータ長の合計と等しい値に設定する。
【０１０７】
送信開始時刻算出部１３２が算出した分割数が２以上である場合、送信データ長算出部１３１は、処理装置９１１を用いて、各フレームについて、次の式を満たす最も大きい値Ｌｉを計算する。
【数３４】
2012034047.tif 000026
ただし、ｉは、フレーム番号である。Ｔｔｗｊは、送信開始時刻算出部１３２が算出したｊ番目のフレームの送信開始時刻までの待ち時間である。ｎは、送信開始時刻算出部１３２が算出した分割数である。
【０１０８】
送信データ長算出部１３１は、処理装置９１１を用いて、各フレームについて、データ長として許容される長さのうち、次の式を満たす最大の長さＬｔｐｉを算出する。
【数３５】
2012034047.tif 000027
送信データ長算出部１３１は、処理装置９１１を用いて、各フレームのデータ長７１２を、算出した長さＬｔｐｉに設定する。
【０１０９】
なお、送信データ長算出部１３１が算出した長さＬｔｐｉが０であるフレームが存在する場合、送信データ長算出部１３１は、処理装置９１１を用いて、そのフレームを削除する。送信データ長算出部１３１は、処理装置９１１を用いて、分割数を１つ減らす。送信データ長算出部１３１は、処理装置９１１を用いて、削除したフレームの待ち時間と、送信開始時刻算出部１３２が計算した値ｔｄとの合計を計算する。送信データ長算出部１３１は、処理装置９１１を用いて、削除したフレームの次のフレームの送信開始時刻までの待ち時間に、計算した合計を加える。
【０１１０】
また、待ち時間を設けたフレームについて、もっと短い待ち時間で同じデータ長のフレームを構成できる場合、送信開始時刻算出部１３２は、処理装置９１１を用いて、そのフレームの送信開始時刻を早める。例えば、送信開始時刻算出部１３２は、処理装置９１１を用いて、送信データ長算出部１３１が算出したデータ長に基づいて、各フレームについて、同じデータ長のフレームを構成できる最小の待ち時間を算出する。そのフレームに設定した待ち時間よりも、算出した待ち時間のほうが短い場合、送信開始時刻算出部１３２は、処理装置９１１を用いて、そのフレームに設定した待ち時間と、算出した待ち時間との差を算出する。送信開始時刻算出部１３２は、処理装置９１１を用いて、そのフレームの待ち時間を、算出した待ち時間に設定する。送信開始時刻算出部１３２は、処理装置９１１を用いて、次のフレームの待ち時間と、算出した差との和を算出する。送信データ長算出部１３１は、処理装置９１１を用いて、次のフレームの待ち時間を、算出した和に設定する。
【０１１１】
次に、受信速度Ｓｒより送信速度Ｓｔのほうが遅い場合および受信速度Ｓｒと送信速度Ｓｔとが等しい場合について説明する。
【０１１２】
図１２は、この実施の形態における中継装置１００が受信するフレーム５１０Ａ〜５１０Ｂと、中継装置１００が送信するフレーム５１０ａ〜５１０ｃとの関係を示すタイミング図である。
横軸は、時刻を示す。縦軸は、データの受信率または送信率を示す。破線７５１は、中継装置１００が受信するデータの受信率を示す。実線７５２は、中継装置１００が送信するデータの送信率を示す。
【０１１３】
時刻６１１において、受信装置９１５は、フレーム５１０Ａの受信を開始する。
時刻６１２において、受信装置９１５は、フレーム５１０Ａのヘッダ部分５１１Ａの受信を終え、データ部分５１２Ａの受信を開始する。受信ヘッダ取得部１２１が取得したヘッダ部分５１１Ａを、受信データ長取得部１２２・後続データ長取得部１２３・後続遅延取得部１２４がそれぞれ解析する。受信データ長取得部１２２は、データ部分５１２Ａのデータ長７１２Ａを取得する。後続データ長取得部１２３・後続遅延取得部１２４は、分割数、後続するフレームのデータ長、遅延時間などを取得する。この例では、フレーム５１０Ａが５つに分割されたフレームの最初のフレームなので、分割数は５である。後続データ長取得部１２３は、後続するフレーム５１０Ｂ〜５１０Ｅのデータ長７１２Ｂ〜７１２Ｅを取得する。後続遅延取得部１２４は、フレーム５１０Ａ〜５１０Ｄそれぞれの送信終了時刻からフレーム５１０Ｂ〜５１０Ｅそれぞれの送信開始時刻までの遅延時間を取得する。
送信データ長算出部１３１は、受信速度Ｓｒ・送信速度Ｓｔ・受信データ長７１２Ａ・分割数・後続データ長７１２Ｂ・遅延時間などに基づいて、送信するフレーム５１０ａ〜５１０ｂの数、各フレーム５１０ａ〜５１０ｂのデータ長７１２ａ〜７１２ｂなどを算出する。送信開始時刻算出部１３２は、受信速度Ｓｒ・送信速度Ｓｔ・受信データ長７１２Ａ・分割数・後続データ長７１２Ｂ・遅延時間などに基づいて、各フレーム５１０ａ〜５１０ｂの送信開始時刻を算出する。
送信ヘッダ生成部１４１は、送信データ長算出部１３１が算出したデータ長７１２ａ〜７１２ｂと、送信開始時刻算出部１３２が算出した送信開始時刻とに基づいて、送信するフレーム５１０ａ〜５１０ｂのヘッダ部分５１１ａ〜５１１ｂを生成する。
この例では、送信開始時刻算出部１３２が算出した最初のフレーム５１０ａの送信開始時刻までの待ち時間が「０」なので、送信装置９１６は、すぐに、最初のフレーム５１０ａの送信を開始する。
【０１１４】
時刻６１３において、受信装置９１５は、フレーム５１０Ａのデータ部分５１２Ａの受信を終え、フッタ部分５１３Ａの受信を開始する。
時刻６１４において、送信装置９１６は、フレーム５１０ａのヘッダ部分５１１ａの送信を終え、データ部分５１２ａの送信を開始する。
時刻６１５において、受信装置９１５は、フレーム５１０Ｂのヘッダ部分５１１Ｂの受信を終え、データ部分５１２Ｂの受信を開始する。この時点において、送信装置９１６は、まだ、受信装置９１５が受信したフレーム５１０Ａのデータ部分５１２Ａにあったデータの送信を終えていない。
時刻６１６において、受信装置９１５は、フレーム５１０Ｂのデータ部分５１２Ｂの受信を終え、フッタ部分５１３Ｂの受信を開始する。
時刻６１７において、送信装置９１６は、フレーム５１０ａのデータ部分５１２ａの送信を終え、フッタ部分５１３ａの送信を開始する。この時点において、送信装置９１６は、受信装置９１５が受信を終えているデータをすべて送信し終えている。
時刻６１８において、送信装置９１６は、フレーム５１０ａのフッタ部分５１３ａの送信を終える。この例では、送信開始時刻算出部１３２が算出した最初のフレーム５１０ａの送信開始時刻までの待ち時間が「０」ではないので、送信装置９１６は、待ち時間が経過するまで、次のフレーム５１０ｂの送信を開始しない。
時刻６１９において、受信装置９１５は、フレーム５１０Ｃのヘッダ部分５１１Ｃの受信を終え、データ部分５１２Ｃの受信を開始する。
時刻６２０において、待ち時間が経過したので、送信装置９１６は、二番目のフレーム５１０ｂの送信を開始する。
時刻６２１において、送信装置９１６は、フレーム５１０ｂのヘッダ部分５１１ｂの送信を終え、データ部分５１２ｂの送信を開始する。
時刻６２２において、受信装置９１５は、フレーム５１０Ｃのデータ部分５１２Ｃの受信を終え、フッタ部分５１３Ｃの受信を開始する。
時刻６２３において、受信装置９１５は、フレーム５１０Ｄのヘッダ部分５１１Ｄの受信を終え、データ部分５１２Ｄの受信を開始する。
時刻６２４において、受信装置９１５は、フレーム５１０Ｄのデータ部分５１２Ｄの受信を終え、フッタ部分５１３Ｄの受信を開始する。
時刻６２５において、受信装置９１５は、フレーム５１０Ｅのヘッダ部分５１１Ｅの受信を終え、データ部分５１２Ｅの受信を開始する。この時点において、送信装置９１６は、受信装置９１５が受信したフレーム５１０Ｄのデータ部分５１２Ｄにあったデータの送信をちょうど終えたところである。送信装置９１６は、そのまま続けて、受信装置９１５が受信したフレーム５１０Ｅのデータ部分５１２Ｅのデータを送信する。
時刻６２６において、受信装置９１５は、フレーム５１０Ｅのデータ部分５１２Ｅの受信を終え、フッタ部分５１３Ｅの受信を開始する。
時刻６２７において、送信装置９１６は、フレーム５１０ｂのデータ部分５１２ｂの送信を終え、フッタ部分５１３ｂの送信を開始する。
【０１１５】
このように、受信速度Ｓｒよりも送信速度Ｓｔのほうが遅い場合は、データの受信が完了する時刻よりも、データの受信を開始する時刻のほうが重要となる。
【０１１６】
送信装置９１６が送信を開始できる最も早い時刻から、受信装置９１５が複数に分割されたフレームのデータ部分５１２を受信して、最初から合計した長さＬのデータの受信を完了し、次のデータの受信を開始する時刻までの時間ｔｒ＊（Ｌ）は、次の式で表される。
【数３６】
2012034047.tif 000028
ただし、ｉは、最初から合計した長さＬのデータの次のデータが含まれるフレームの番号である。ｉは、次の式を満たす。
【数３７】
2012034047.tif 000029
【０１１７】
数３６の右辺は、数３０の右辺と同じであるが、ｉの定義が異なる。数３７と数３１とを比較すると、等号が成立する場合のみ、ｉの値が異なる。
【０１１８】
受信時間ｔｒ＊（Ｌ）と送信時間ｔｔ（Ｌ）との差ｔ＊（Ｌ）は、次の式で表される。
【数３８】
2012034047.tif 000030
数３６と同様、この式の右辺は、数３２の右辺と同じであるが、ｉの定義が異なる。
【０１１９】
受信速度Ｓｒよりも送信速度Ｓｔのほうが遅い場合、差ｔ＊（Ｌ）が最も大きくなる可能性があるのは、数３７の等号が成立する場合である。すなわち、
【数３９】
2012034047.tif 000031
ただし、ｉは、１以上ｍ以下の整数である。ｍは、受信装置９１５が受信する複数に分割されたフレームの分割数である。この式の右辺は、受信装置９１５が受信する複数に分割されたフレームのうち、最初のフレームから［ｉ−１］番目のフレームまでのデータ長の合計を表わす。
【０１２０】
例えば、送信開始時刻算出部１３２は、処理装置９１１を用いて、１以上ｍ以下のｍ個の整数ｉそれぞれについて、数３９の値Ｌを計算する。送信開始時刻算出部１３２は、算出したｍ個の値Ｌのなかで最も大きい値を、値ｍａｘ［ｔ＊（Ｌ）］とする。
【数４０】
2012034047.tif 000032
【０１２１】
送信開始時刻算出部１３２が計算した値ｍａｘ［ｔ＊（Ｌ）］が０以下である場合、送信開始時刻算出部１３２は、処理装置９１１を用いて、分割数を「１」とする。送信開始時刻算出部１３２は、処理装置９１１を用いて、最初の（そして唯一の）フレーム５１０ａの送信開始時刻までの待ち時間を「０」に設定する。
【０１２２】
送信開始時刻算出部１３２が計算した値ｍａｘ［ｔ＊（Ｌ）］が０より大きい場合、送信開始時刻算出部１３２は、処理装置９１１を用いて、数２５の値ｔｄを計算する。
送信開始時刻算出部１３２は、処理装置９１１を用いて、計算した値ｍａｘ［ｔ＊（Ｌ）］と、計算した値ｔｄとに基づいて、値ｍａｘ［ｔ＊（Ｌ）］を値ｔｄで割った商を超えない最大の整数ｋと、値ｍａｘ［ｔ＊（Ｌ）］を値ｔｄで割った余りｍとを計算する。
【０１２３】
送信開始時刻算出部１３２が計算した余りｍが０である場合、送信開始時刻算出部１３２は、処理装置９１１を用いて、計算した整数ｋに１を加えた整数［ｋ＋１］を計算する。送信開始時刻算出部１３２は、処理装置９１１を用いて、分割数を、計算した整数［ｋ＋１］に設定する。送信開始時刻算出部１３２は、処理装置９１１を用いて、［ｋ＋１］個のフレーム５１０の送信開始時刻までの待ち時間を、すべて「０」に設定する。
【０１２４】
送信開始時刻算出部１３２が計算した余りｍが０ではなく、整数ｋが０である場合、送信開始時刻の算出方式には、上述した場合と同様、送信開始を優先する方式と、送信終了を優先する方式との２種類がある。
【０１２５】
・送信開始を優先する方式
送信開始時刻算出部１３２は、処理装置９１１を用いて、分割数を「２」とする。送信開始時刻算出部１３２は、処理装置９１１を用いて、２つのフレーム５１０ａ，５１０ｂの送信開始時刻までの待ち時間を、ともに「０」に設定する。
【０１２６】
・送信終了を優先する方式
送信開始時刻算出部１３２は、処理装置９１１を用いて、分割数を「１」とする。送信開始時刻算出部１３２は、処理装置９１１を用いて、最初の（そして唯一の）フレーム５１０ａの送信開始時刻までの待ち時間を、算出した余りｍに設定する。
【０１２７】
送信開始時刻算出部１３２が計算した余りｍが０ではなく、整数ｋが１以上である場合、送信開始時刻算出部１３２は、処理装置９１１を用いて、計算した整数ｋに１を加えた整数［ｋ＋１］を計算する。送信開始時刻算出部１３２は、処理装置９１１を用いて、分割数を、計算した整数［ｋ＋１］に設定する。送信開始時刻算出部１３２は、処理装置９１１を用いて、［ｋ＋１］個のフレーム５１０のうち、いずれかのフレームの送信開始時刻までの待ち時間を、計算した余りｍに設定する。送信開始時刻算出部１３２は、処理装置９１１を用いて、［ｋ＋１］個のフレーム５１０のうち、残りのｋ個のフレームの送信開始時刻までの待ち時間を「０」に設定する。
例えば、送信開始時刻算出部１３２は、処理装置９１１を用いて、分割数［ｋ＋１］を２で割った商を超えない最大の整数ｉを算出する。送信開始時刻算出部１３２は、処理装置９１１を用いて、［ｉ＋１］番目のフレームに待ち時間を設ける。
なお、送信開始時刻算出部１３２は、１つのフレームに待ち時間を設けるのではなく、複数のフレームに待ち時間を設ける構成としてもよい。
【０１２８】
送信データ長算出部１３１は、送信開始時刻算出部１３２が算出した分割数や、送信開始時刻に基づいて、各フレーム５１０のデータ長７１２を算出する。
【０１２９】
例えば、送信開始時刻算出部１３２が算出した分割数が「１」の場合、送信データ長算出部１３１は、処理装置９１１を用いて、最初の（そして唯一の）フレーム５１０ａのデータ長７１２ａを、受信装置９１５が受信する複数に分割されたフレームのデータ長の合計と等しい値に設定する。
【０１３０】
送信開始時刻算出部１３２が算出した分割数が２以上である場合、送信データ長算出部１３１は、処理装置９１１を用いて、各フレームについて、次の式を満たす最も小さい値Ｌｉを計算する。
【数４１】
2012034047.tif 000033
ただし、ｉは、フレーム番号である。Ｔｔｗｊは、送信開始時刻算出部１３２が算出したｊ番目のフレームの送信開始時刻までの待ち時間である。ｎは、送信開始時刻算出部１３２が算出した分割数である。
【０１３１】
送信データ長算出部１３１は、処理装置９１１を用いて、各フレームについて、データ長として許容される長さのうち、次の式を満たす最大の長さＬｔｐｉを算出する。
【数４２】
2012034047.tif 000034
送信データ長算出部１３１は、処理装置９１１を用いて、各フレームのデータ長７１２を、算出した長さＬｔｐｉに設定する。
【０１３２】
なお、送信データ長算出部１３１が算出した長さＬｔｐｉが０であるフレームが存在する場合、送信データ長算出部１３１は、処理装置９１１を用いて、そのフレームを削除する。送信データ長算出部１３１は、処理装置９１１を用いて、分割数を１つ減らす。送信データ長算出部１３１は、処理装置９１１を用いて、削除したフレームの待ち時間と、送信開始時刻算出部１３２が計算した値ｔｄとの合計を計算する。送信データ長算出部１３１は、処理装置９１１を用いて、削除したフレームの次のフレームの送信開始時刻までの待ち時間に、計算した合計を加える。
【０１３３】
また、待ち時間を設けたフレームについて、もっと短い待ち時間で同じデータ長のフレームを構成できる場合、送信開始時刻算出部１３２は、処理装置９１１を用いて、そのフレームの送信開始時刻を早める。例えば、送信開始時刻算出部１３２は、処理装置９１１を用いて、送信データ長算出部１３１が算出したデータ長に基づいて、各フレームについて、同じデータ長のフレームを構成できる最小の待ち時間を算出する。そのフレームに設定した待ち時間よりも、算出した待ち時間のほうが短い場合、送信開始時刻算出部１３２は、処理装置９１１を用いて、そのフレームに設定した待ち時間と、算出した待ち時間との差を算出する。送信開始時刻算出部１３２は、処理装置９１１を用いて、そのフレームの待ち時間を、算出した待ち時間に設定する。送信開始時刻算出部１３２は、処理装置９１１を用いて、次のフレームの待ち時間と、算出した差との和を算出する。送信データ長算出部１３１は、処理装置９１１を用いて、次のフレームの待ち時間を、算出した和に設定する。
【０１３４】
図１３は、この実施の形態におけるヘッダ生成処理Ｓ３００の流れの一例を示すフローチャート図である。
ヘッダ生成処理Ｓ３００において、中継装置１００は、送信するフレーム５１０のヘッダ部分５１１を生成する。
ヘッダ生成処理Ｓ３００は、受信ヘッダ取得工程Ｓ３０１と、受信データ長取得工程Ｓ３０２と、分割数取得工程Ｓ３０３と、後続フレーム選択工程Ｓ３０４と、後続データ長取得工程Ｓ３０５と、後続遅延取得工程Ｓ３０６と、送信開始時刻算出処理Ｓ３０７と、送信データ長算出処理Ｓ３０８と、送信開始時刻最適化処理Ｓ３０９と、先頭ヘッダ生成工程Ｓ３１０と、送信フレーム選択工程Ｓ３１１と、後続ヘッダ生成工程Ｓ３１２とを有する。
【０１３５】
受信ヘッダ取得工程Ｓ３０１において、受信ヘッダ取得部１２１は、処理装置９１１を用いて、受信装置９１５が受信したデータから、受信するフレーム５１０Ａのヘッダ部分５１１Ａを取得する。
受信データ長取得工程Ｓ３０２において、受信データ長取得部１２２は、処理装置９１１を用いて、受信ヘッダ取得工程Ｓ３０１で受信ヘッダ取得部１２１が取得したヘッダ部分５１１Ａを解析して、フレーム５１０Ａのデータ長７１２Ａを取得する。
分割数取得工程Ｓ３０３において、後続データ長取得部１２３は、処理装置９１１を用いて、受信ヘッダ取得工程Ｓ３０１で受信ヘッダ取得部１２１が取得したヘッダ部分５１１Ａを解析して、ヘッダ部分５１１Ａが複数に分割されたフレームの先頭フレームであるか否か、先頭フレームである場合には、複数に分割されたフレーム全体の数（分割数）を取得する。
【０１３６】
後続フレーム選択工程Ｓ３０４において、受信データ長取得部１２２は、処理装置９１１を用いて、受信する複数に分割されたフレームのなかから、次のフレームを選択する。
フレーム５１０Ａが複数に分割されたフレームでない場合や、複数に分割されたフレームの最後のフレームまで処理が終わった場合は、受信データ長取得部１２２は、処理装置９１１を用いて、送信開始時刻算出処理Ｓ３０７へ処理を進める。
フレーム５１０Ａが複数に分割されたフレームであり、まだ処理していない後続フレームがある場合、受信データ長取得部１２２は、処理装置９１１を用いて、次のフレームを選択し、後続データ長取得工程Ｓ３０５へ処理を進める。
【０１３７】
後続データ長取得工程Ｓ３０５において、後続データ長取得部１２３は、処理装置９１１を用いて、受信ヘッダ取得工程Ｓ３０１で受信ヘッダ取得部１２１が取得したヘッダ部分５１１Ａを解析して、後続フレーム選択工程Ｓ３０４で選択したフレームのデータ長７１２を取得する。
【０１３８】
後続遅延取得工程Ｓ３０６において、後続遅延取得部１２４は、処理装置９１１を用いて、受信ヘッダ取得工程Ｓ３０１で受信ヘッダ取得部１２１が取得したヘッダ部分５１１Ａを解析して、後続フレーム選択工程Ｓ３０４で後続データ長取得部１２３が選択したフレームの遅延時間を取得する。
後続遅延取得部１２４は、処理装置９１１を用いて、後続フレーム選択工程Ｓ３０４に処理を戻し、次のフレームを選択する。
【０１３９】
送信開始時刻算出処理Ｓ３０７において、送信開始時刻算出部１３２は、処理装置９１１を用いて、送信するフレームの分割数ｎと、各フレームの送信開始時刻までの待ち時間Ｔｔｗｉ（ｉは、１以上ｎ以下の整数。）とを算出する。
【０１４０】
送信データ長算出処理Ｓ３０８において、送信データ長算出部１３１は、処理装置９１１を用いて、送信するフレームのデータ長Ｌｔｐｉを算出する。
【０１４１】
送信開始時刻最適化処理Ｓ３０９において、送信開始時刻算出部１３２は、処理装置９１１を用いて、送信開始時刻算出処理Ｓ３０７で算出した各フレームの送信開始時刻までの待ち時間Ｔｔｗｉを最適化して、できるだけ小さくする。
【０１４２】
先頭ヘッダ生成工程Ｓ３１０において、送信ヘッダ生成部１４１は、処理装置９１１を用いて、送信するフレームのうち、先頭のフレーム５１０ａのヘッダ部分５１１ａを生成する。送信ヘッダ生成部１４１が生成するヘッダ部分５１１ａは、フレーム５１０ａのデータ長、分割数ｎ、後続フレームのデータ長、後続フレームの遅延時間を表わすデータを含む。送信ヘッダ生成部１４１は、処理装置９１１を用いて、フレーム５１０ａのデータ長や後続フレームのデータ長に、送信データ長算出処理Ｓ３０８で送信データ長算出部１３１が算出したデータ長Ｌｔｐｉを設定する。送信ヘッダ生成部１４１は、処理装置９１１を用いて、後続フレームの遅延時間に、送信開始時刻最適化処理Ｓ３０９で送信開始時刻算出部１３２が最適化した送信開始時刻までの待ち時間Ｔｔｗｉを設定する。
【０１４３】
送信フレーム選択工程Ｓ３１１において、送信ヘッダ生成部１４１は、処理装置９１１を用いて、送信する複数に分割したフレームのなかから、次のフレームを選択する。
送信するフレームの分割数が１である場合や、複数に分割したフレームの最後のフレームまで処理が終わった場合は、送信ヘッダ生成部１４１は、処理装置９１１を用いて、ヘッダ生成処理Ｓ３００を終了する。
送信するフレームの分割数が２以上であり、まだ処理していないフレームがある場合、送信ヘッダ生成部１４１は、処理装置９１１を用いて次のフレームを選択し、後続ヘッダ生成工程Ｓ３１２へ処理を進める。
【０１４４】
後続ヘッダ生成工程Ｓ３１２において、送信ヘッダ生成部１４１は、処理装置９１１を用いて、送信フレーム選択工程Ｓ３１１で選択したフレームのヘッダ部分５１１を生成する。後続するフレームのヘッダ部分５１１は、そのフレームのデータ長を表わすデータを含む。送信ヘッダ生成部１４１は、処理装置９１１を用いて、そのフレームのデータ長に、送信データ長算出処理Ｓ３０８で送信データ長算出部１３１が算出したデータ長Ｌｔｐｉを設定する。
送信ヘッダ生成部１４１は、処理装置９１１を用いて、送信フレーム選択工程Ｓ３１１に処理を戻す。
【０１４５】
図１４は、この実施の形態における送信開始時刻算出処理Ｓ３０７の流れの一例を示すフローチャート図である。
送信開始時刻算出処理Ｓ３０７は、最大待ち時間算出工程Ｓ４０１と、非分割設定工程Ｓ４０２と、分割数見積もり工程Ｓ４０３と、優先判定工程Ｓ４０４と、開始優先設定工程Ｓ４０５と、終了優先設定工程Ｓ４０６と、分割設定工程Ｓ４０７とを有する。
【０１４６】
最大待ち時間算出工程Ｓ４０１において、送信開始時刻算出部１３２は、処理装置９１１を用いて、最大待ち時間ｔｍａｘを算出する。最大待ち時間ｔｍａｘは、上述したｔ（Ｌ）の最大値またはｔ＊（Ｌ）の最大値である。
算出した最大待ち時間ｔｍａｘが０以下である場合、送信開始時刻算出部１３２は、処理装置９１１を用いて、非分割設定工程Ｓ４０２へ処理を進める。
算出した最大待ち時間ｔｍａｘが０より大きい場合、送信開始時刻算出部１３２は、処理装置９１１を用いて、分割数見積もり工程Ｓ４０３へ処理を進める。
【０１４７】
非分割設定工程Ｓ４０２において、送信開始時刻算出部１３２は、処理装置９１１を用いて、受信するフレームを分割せず、１つのフレームとして送信する（受信するフレームが複数に分割されたフレームである場合には、１つのフレームに結合して送信する）と判定し、分割数や待ち時間を設定する。
送信開始時刻算出部１３２は、処理装置９１１を用いて、送信開始時刻算出処理Ｓ３０７を終了する。
【０１４８】
分割数見積もり工程Ｓ４０３において、送信開始時刻算出部１３２は、処理装置９１１を用いて、最大待ち時間算出工程Ｓ４０１で算出した最大待ち時間ｔｍａｘに基づいて、整数ｋと余りｍとを算出する。
算出した整数ｋが０である場合、送信開始時刻算出部１３２は、処理装置９１１を用いて、優先判定工程Ｓ４０４へ処理を進める。
算出した整数ｋが１以上である場合、送信開始時刻算出部１３２は、処理装置９１１を用いて、分割設定工程Ｓ４０７へ処理を進める。
【０１４９】
優先判定工程Ｓ４０４において、送信開始時刻算出部１３２は、処理装置９１１を用いて、送信開始時刻を優先するか、送信終了時刻を優先するかを判定する。
送信開始時刻を優先すると判定した場合、送信開始時刻算出部１３２は、処理装置９１１を用いて、開始優先設定工程Ｓ４０５へ処理を進める。
送信終了時刻を優先すると判定した場合、送信開始時刻算出部１３２は、処理装置９１１を用いて、終了優先設定工程Ｓ４０６へ処理を進める。
【０１５０】
開始優先設定工程Ｓ４０５において、送信開始時刻算出部１３２は、処理装置９１１を用いて、受信する１つまたは複数のフレームを、２つのフレームに組み換えて送信すると判定し、分割数や待ち時間を設定する。
送信開始時刻算出部１３２は、処理装置９１１を用いて、送信開始時刻算出処理Ｓ３０７を終了する。
【０１５１】
終了優先設定工程Ｓ４０６において、送信開始時刻算出部１３２は、処理装置９１１を用いて、受信する１つまたは複数のフレームを、１つのフレームとして送信すると判定し、分割数や待ち時間を設定する。
送信開始時刻算出部１３２は、処理装置９１１を用いて、送信開始時刻算出処理Ｓ３０７を終了する。
【０１５２】
分割設定工程Ｓ４０７において、送信開始時刻算出部１３２は、処理装置９１１を用いて、受信する１つまたは複数のフレームを、２つ以上のフレームに組み換えて送信すると判定し、分割数や待ち時間を設定する。
送信開始時刻算出部１３２は、処理装置９１１を用いて、送信開始時刻算出処理Ｓ３０７を終了する。
【０１５３】
図１５は、この実施の形態における最大待ち時間算出工程Ｓ４０１の流れの一例を示すフローチャート図である。
最大待ち時間算出工程Ｓ４０１は、係数算出工程Ｓ４１１と、追加算出工程Ｓ４１２と、第一選択工程Ｓ４１３と、開始算出工程Ｓ４１４と、受信長算出工程Ｓ４１５と、終了算出工程Ｓ４１６と、最大設定工程Ｓ４１７と、受信選択工程Ｓ４１８と、開始算出工程Ｓ４１９と、受信長算出工程Ｓ４２０と、終了算出工程Ｓ４２１と、最大比較工程Ｓ４２２と、最大更新工程Ｓ４２３と、最大比較工程Ｓ４２４と、最大更新工程Ｓ４２５とを有する。
【０１５４】
係数算出工程Ｓ４１１において、送信開始時刻算出部１３２は、処理装置９１１を用いて、係数ａを算出する。係数ａは、データの長さを送受信時間差に換算するための係数である。係数ａは、受信速度Ｓｒの逆数から、送信速度Ｓｔの逆数を差し引いた差である。受信速度Ｓｒより送信速度Ｓｔのほうが速ければ、係数ａは正になる。逆に、受信速度Ｓｒより送信速度Ｓｔのほうが遅ければ、係数ａは負になる。
例えば、送信開始時刻算出部１３２は、処理装置９１１を用いて、１を受信速度Ｓｒで割った商を算出する。送信開始時刻算出部１３２は、処理装置９１１を用いて、１を送信速度Ｓｔで割った商を算出する。送信開始時刻算出部１３２は、処理装置９１１を用いて、１を受信速度Ｓｒで割った商から、１を送信速度Ｓｔで割った商を差し引いた差を算出する。送信開始時刻算出部１３２は、記憶装置９１４を用いて、算出した差を、係数ａとして記憶する。
【０１５５】
追加算出工程Ｓ４１２において、送信開始時刻算出部１３２は、処理装置９１１を用いて、追加受信時間ｔｄｒを算出する。追加受信時間ｔｄｒは、フレームが１回分割されるたびに必要となるヘッダ部分５１１およびフッタ部分５１３を受信するのにかかる時間である。追加受信時間ｔｄｒは、ヘッダ長７１１とフッタ長７１３との合計を、受信速度Ｓｒで割った商である。
例えば、送信開始時刻算出部１３２は、処理装置９１１を用いて、ヘッダ長７１１とフッタ長７１３との和を算出する。送信開始時刻算出部１３２は、処理装置９１１を用いて、ヘッダ長７１１とフッタ長７１３との和を、受信速度Ｓｒで割った商を算出する。送信開始時刻算出部１３２は、記憶装置９１４を用いて、算出した商を、追加受信時間ｔｄｒとして記憶する。
【０１５６】
第一選択工程Ｓ４１３において、送信開始時刻算出部１３２は、処理装置９１１を用いて、受信する１または複数のフレームのなかから、最初のフレームを選択する。
例えば、送信開始時刻算出部１３２は、記憶装置９１４を用いて、選択受信フレーム番号ｉとｓて、１を記憶する。選択受信フレーム番号ｉは、選択するフレームの番号である。
【０１５７】
開始算出工程Ｓ４１４において、送信開始時刻算出部１３２は、処理装置９１１を用いて、受信する最初のフレームについて、開始時間差ｔ＊１を算出する。開始時間差ｔ＊ｉは、ｉ番目のフレームのデータ部分５１２の受信開始時におけるｔ＊（Ｌ）である。最初のフレームの受信開始時にはＬ＝０なので、開始時間差ｔ＊１は、ヘッダ長７１１を送信速度Ｓｔで割った商の符号を反転した値である。
例えば、送信開始時刻算出部１３２は、処理装置９１１を用いて、ヘッダ長７１１を送信速度Ｓｔで割った商を算出する。送信開始時刻算出部１３２は、処理装置９１１を用いて、ヘッダ長７１１を送信速度Ｓｔで割った商に−１を乗じた積を算出する。送信開始時刻算出部１３２は、記憶装置９１４を用いて、算出した積を、最初のフレームの開始時間差ｔ＊１として記憶する。
【０１５８】
受信長算出工程Ｓ４１５において、送信開始時刻算出部１３２は、処理装置９１１を用いて、受信する最初のフレームについて、累計受信データ長Ｌｒ１を算出する。累計受信データ長Ｌｒｉは、複数に分割されたフレームのうち、最初のフレームからｉ番目のフレームまでのデータ長７１２の合計である。したがって、最初のフレームの累計受信データ長Ｌｒ１は、最初のフレームのデータ長Ｌｒｐ１と等しい。
例えば、送信開始時刻算出部１３２は、記憶装置９１４を用いて、最初のフレームの累計受信データ長Ｌｒ１として、最初のフレームのデータ長Ｌｒｐ１を記憶する。
【０１５９】
終了算出工程Ｓ４１６において、送信開始時刻算出部１３２は、処理装置９１１を用いて、受信する最初のフレームについて、終了時間差ｔ１を算出する。終了時間差ｔｉは、ｉ番目のフレームのデータ部分５１２の受信終了時におけるｔ（Ｌ）である。終了時間差ｔｉは、そのフレームのデータ長Ｌｒｐｉと、係数ａとの積を、そのフレームの開始時間差ｔ＊ｉに加えた値である。
例えば、送信開始時刻算出部１３２は、処理装置９１１を用いて、最初のフレームのデータ長Ｌｒｐ１と、係数算出工程Ｓ４１１で算出した係数ａとの積を算出する。送信開始時刻算出部１３２は、処理装置９１１を用いて、算出した積と、開始算出工程Ｓ４１４で算出した開始時間差ｔ＊１との和を算出する。送信開始時刻算出部１３２は、記憶装置９１４を用いて、算出した和を、最初のフレームについての終了時間差ｔｉとして記憶する。
【０１６０】
最大設定工程Ｓ４１７において、送信開始時刻算出部１３２は、記憶装置９１４を用いて、最大待ち時間ｔｍａｘとして、暫定的に０を記憶する。
【０１６１】
受信選択工程Ｓ４１８において、送信開始時刻算出部１３２は、処理装置９１１を用いて、受信する１または複数のフレームのなかから、次のフレームを選択する。
例えば、送信開始時刻算出部１３２は、処理装置９１１を用いて、選択受信フレーム番号ｉに１を加える。送信開始時刻算出部１３２は、記憶装置９１４を用いて、記憶した選択受信フレーム番号ｉを更新し、１を加えた選択受信フレーム番号ｉを、新しい選択受信フレーム番号ｉとして記憶する。
次のフレームが存在しない場合、すなわち、選択受信フレーム番号ｉが、受信するフレームの分割数ｎｒより大きい場合、送信開始時刻算出部１３２は、処理装置９１１を用いて、最大比較工程Ｓ４２４へ処理を進める。
次のフレームが存在する場合、すなわち、選択受信フレーム番号ｉが、受信するフレームの分割数ｎｒ以下である場合、送信開始時刻算出部１３２は、処理装置９１１を用いて、開始算出工程Ｓ４１９へ処理を進める。
【０１６２】
開始算出工程Ｓ４１９において、送信開始時刻算出部１３２は、処理装置９１１を用いて、受信選択工程Ｓ４１８で選択したｉ番目のフレームについて、開始時間差ｔ＊ｉを算出する。ｉ番目のフレームの開始時間差ｔ＊ｉは、前のフレームの終了時間差ｔｉに、追加受信時間ｔｄｒを加え、更に、そのフレームの送信開始時刻までの待ち時間Ｔｒｗｉを加えた値である。
例えば、送信開始時刻算出部１３２は、処理装置９１１を用いて、終了算出工程Ｓ４１６またはＳ４２１で算出した［ｉ−１」番目のフレームの終了時間差ｔｉと、追加算出工程Ｓ４１２で算出した追加受信時間ｔｄｒと、ｉ番目のフレームの送信開始時刻までの待ち時間Ｔｒｗｉとの合計を算出する。送信開始時刻算出部１３２は、記憶装置９１４を用いて、算出した合計を、ｉ番目のフレームの開始時間差ｔ＊ｉとして記憶する。
【０１６３】
受信長算出工程Ｓ４２０において、送信開始時刻算出部１３２は、処理装置９１１を用いて、受信選択工程Ｓ４１８で選択したｉ番目のフレームについて、累計受信データ長Ｌｒｉを算出する。ｉ番目のフレームの累計受信データ長Ｌｒｉは、前のフレームの累計受信データ長Ｌｒｉ−１に、そのフレームのデータ長Ｌｒｐｉを加えた値である。
例えば、送信開始時刻算出部１３２は、処理装置９１１を用いて、受信長算出工程Ｓ４１５またはＳ４２０で算出した［ｉ−１］番目のフレームの累計受信データ長Ｌｒｉ−１と、ｉ番目のフレームのデータ長Ｌｒｐｉとの合計を算出する。送信開始時刻算出部１３２は、記憶装置９１４を用いて、算出した合計を、ｉ番目のフレームの累計受信データ長Ｌｒｉとして記憶する。
【０１６４】
終了算出工程Ｓ４２１において、送信開始時刻算出部１３２は、処理装置９１１を用いて、受信選択工程Ｓ４１８で選択したｉ番目のフレームについて、終了時間差ｔｉを算出する。ｉ番目のフレームの終了時間差ｔｉは、そのフレームのデータ長Ｌｒｐｉと、係数ａとの積を、そのフレームの開始時間差ｔ＊ｉに加えた値である。
例えば、送信開始時刻算出部１３２は、処理装置９１１を用いて、ｉ番目のフレームのデータ長Ｌｒｐｉと、係数算出工程Ｓ４１１で算出した係数ａとの積を算出する。送信開始時刻算出部１３２は、処理装置９１１を用いて、算出した積と、開始算出工程Ｓ４１９で算出したｉ番目のフレームの開始時間差ｔ＊ｉとの和を算出する。送信開始時刻算出部１３２は、記憶装置９１４を用いて、算出した和を、ｉ番目のフレームの終了時間差ｔｉとして記憶する。
【０１６５】
最大比較工程Ｓ４２２において、送信開始時刻算出部１３２は、処理装置９１１を用いて、記憶した最大待ち時間ｔｍａｘと、開始算出工程Ｓ４１９で算出したｉ番目のフレームの開始時間差ｔ＊ｉとを比較する。
最大待ち時間ｔｍａｘが、ｉ番目のフレームの開始時間差ｔ＊ｉ以上である場合、送信開始時刻算出部１３２は、処理装置９１１を用いて、受信選択工程Ｓ４１８に処理を戻し、次のフレームを選択する。
最大待ち時間ｔｍａｘが、ｉ番目のフレームの開始時間差ｔ＊ｉより小さい場合、送信開始時刻算出部１３２は、処理装置９１１を用いて、最大更新工程Ｓ４２３へ処理を進める。
【０１６６】
最大更新工程Ｓ４２３において、送信開始時刻算出部１３２は、記憶装置９１４を用いて、記憶した最大待ち時間ｔｍａｘを更新し、開始算出工程Ｓ４１９で算出したｉ番目のフレームの開始時間差ｔ＊ｉを、新しい最大待ち時間ｔｍａｘとして記憶する。
送信開始時刻算出部１３２は、処理装置９１１を用いて、受信選択工程Ｓ４１８に処理を戻し、次のフレームを選択する。
【０１６７】
最大比較工程Ｓ４２４において、送信開始時刻算出部１３２は、処理装置９１１を用いて、記憶した最大待ち時間ｔｍａｘと、終了算出工程Ｓ４１６またはＳ４２１で算出した最後のフレームの終了時間差ｔｎｒとを比較する。
最大待ち時間ｔｍａｘが、最後のフレームの終了時間差ｔｎｒ以上である場合、送信開始時刻算出部１３２は、処理装置９１１を用いて、最大待ち時間算出工程Ｓ４０１を終了する。
最大待ち時間ｔｍａｘが、最後のフレームの終了時間差ｔｎｒより小さい場合、送信開始時刻算出部１３２は、処理装置９１１を用いて、最大更新工程Ｓ４２５へ処理を進める。
【０１６８】
最大更新工程Ｓ４２５において、送信開始時刻算出部１３２は、記憶装置９１４を用いて、記憶した最大待ち時間ｔｍａｘを更新し、最後のフレームの終了時間差ｔｎｒを、新しい最大待ち時間ｔｍａｘとして記憶する。
送信開始時刻算出部１３２は、処理装置９１１を用いて、最大待ち時間算出工程Ｓ４０１を終了する。
【０１６９】
図１６は、この実施の形態における非分割設定工程Ｓ４０２の流れの一例を示すフローチャート図である。
非分割設定工程Ｓ４０２は、分割数設定工程Ｓ４３１と、待ち時間設定工程Ｓ４３２とを有する。
【０１７０】
分割数設定工程Ｓ４３１において、送信開始時刻算出部１３２は、記憶装置９１４を用いて、送信するフレームの分割数ｎとして、１を記憶する。
待ち時間設定工程Ｓ４３２において、送信開始時刻算出部１３２は、記憶装置９１４を用いて、送信する最初のフレームの送信開始時刻までの待ち時間Ｔｔｗ１として、０を記憶する。
送信開始時刻算出部１３２は、処理装置９１１を用いて、非分割設定工程Ｓ４０２を終了する。
【０１７１】
図１７は、この実施の形態における分割数見積もり工程Ｓ４０３の流れの一例を示すフローチャート図である。
分割数見積もり工程Ｓ４０３は、追加算出工程Ｓ４３６と、整数算出工程Ｓ４３７と、余り算出工程Ｓ４３８とを有する。
【０１７２】
追加算出工程Ｓ４３６において、送信開始時刻算出部１３２は、処理装置９１１を用いて、追加送信時間ｔｄを算出する。追加送信時間ｔｄは、フレームを１回分割するたびに必要となるヘッダ部分５１１およびフッタ部分５１３を送信するのにかかる時間である。追加送信時間ｔｄは、ヘッダ長７１１とフッタ長７１３との合計を、送信速度Ｓｔで割った商である。
例えば、送信開始時刻算出部１３２は、処理装置９１１を用いて、ヘッダ長７１１とフッタ長７１３との和を算出する。送信開始時刻算出部１３２は、処理装置９１１を用いて、ヘッダ長７１１とフッタ長７１３との和を、送信速度Ｓｔで割った商を算出する。送信開始時刻算出部１３２は、記憶装置９１４を用いて、算出した商を、追加送信時間ｔｄとして記憶する。
【０１７３】
整数算出工程Ｓ４３７において、送信開始時刻算出部１３２は、処理装置９１１を用いて、整数ｋを算出する。整数ｋは、最大待ち時間ｔｍａｘを追加送信時間ｔｄで割った商を超えない最大の整数である。
例えば、送信開始時刻算出部１３２は、処理装置９１１を用いて、最大待ち時間算出工程Ｓ４０１で算出した最大待ち時間ｔｍａｘを、追加算出工程Ｓ４３６で算出した追加送信時間ｔｄで割った商を算出する。送信開始時刻算出部１３２は、処理装置９１１を用いて、算出した商の小数部分を切り捨てて、整数にする。送信開始時刻算出部１３２は、記憶装置９１４を用いて、小数部分を切り捨てて整数にした商を、整数ｋとして記憶する。
【０１７４】
余り算出工程Ｓ４３８において、送信開始時刻算出部１３２は、処理装置９１１を用いて、余りｍを算出する。余りｍは、最大待ち時間ｔｍａｘを追加送信時間ｔｄで割った余りである。
例えば、送信開始時刻算出部１３２は、処理装置９１１を用いて、整数算出工程Ｓ４３７で算出した整数ｋと、追加算出工程Ｓ４３６で算出した追加送信時間ｔｄとの積を算出する。送信開始時刻算出部１３２は、処理装置９１１を用いて、最大待ち時間算出工程Ｓ４０１で算出した最大待ち時間ｔｍａｘから、算出した積を差し引いた差を算出する。送信開始時刻算出部１３２は、記憶装置９１４を用いて、算出した差を、余りｍとして記憶する。
送信開始時刻算出部１３２は、処理装置９１１を用いて、分割数見積もり工程Ｓ４０３を終了する。
【０１７５】
図１８は、この実施の形態における開始優先設定工程Ｓ４０５の流れの一例を示すフローチャート図である。
開始優先設定工程Ｓ４０５は、分割数設定工程Ｓ４４１と、待ち時間設定工程Ｓ４４２とを有する。
【０１７６】
分割数設定工程Ｓ４４１において、送信開始時刻算出部１３２は、記憶装置９１４を用いて、分割数ｎとして、２を記憶する。
待ち時間設定工程Ｓ４４２において、送信開始時刻算出部１３２は、記憶装置９１４を用いて、最初のフレームの送信開始時刻までの待ち時間Ｔｔｗ１として、０を記憶する。送信開始時刻算出部１３２は、記憶装置９１４を用いて、二番目のフレームの送信開始時刻までの待ち時間Ｔｔｗ２として、０を記憶する。
送信開始時刻算出部１３２は、処理装置９１１を用いて、開始優先設定工程Ｓ４０５を終了する。
【０１７７】
図１９は、この実施の形態における終了優先設定工程Ｓ４０６の流れの一例を示すフローチャート図である。
終了優先設定工程Ｓ４０６は、分割数設定工程Ｓ４４６と、待ち時間設定工程Ｓ４４７とを有する。
【０１７８】
分割数設定工程Ｓ４４６において、送信開始時刻算出部１３２は、記憶装置９１４を用いて、分割数ｎとして、１を記憶する。
待ち時間設定工程Ｓ４４７において、送信開始時刻算出部１３２は、記憶装置９１４を用いて、最初のフレームの送信開始時刻までの待ち時間Ｔｔｗ１として、分割数見積もり工程Ｓ４０３で算出した余りｍを記憶する。
送信開始時刻算出部１３２は、処理装置９１１を用いて、終了優先設定工程Ｓ４０６を終了する。
【０１７９】
図２０は、この実施の形態における分割設定工程Ｓ４０７の流れの一例を示すフローチャート図である。
分割設定工程Ｓ４０７は、分割数設定工程Ｓ４５１と、第一選択工程Ｓ４５２と、待ち時間設定工程Ｓ４５３と、送信選択工程Ｓ４５４と、余り判定工程Ｓ４５５と、待ちフレーム選択工程Ｓ４５６と、待ち時間設定工程Ｓ４５７とを有する。
【０１８０】
分割数設定工程Ｓ４５１において、送信開始時刻算出部１３２は、処理装置９１１を用いて、分割数見積もり工程Ｓ４０３で算出した整数ｋに１を加えた和を算出する。送信開始時刻算出部１３２は、記憶装置９１４を用いて、算出した和を、分割数ｎとして記憶する。
【０１８１】
第一選択工程Ｓ４５２において、送信開始時刻算出部１３２は、処理装置９１１を用いて、送信するｎ個のフレームのなかから、最初のフレームを選択する。
例えば、送信開始時刻算出部１３２は、記憶装置９１４を用いて、選択送信フレーム番号ｉとして、１を記憶する。
【０１８２】
待ち時間設定工程Ｓ４５３において、送信開始時刻算出部１３２は、記憶装置９１４を用いて、第一選択工程Ｓ４５２または送信選択工程Ｓ４５４で選択したｉ番目のフレームの送信開始時刻までの待ち時間Ｔｔｗｉとして、０を記憶する。
【０１８３】
送信選択工程Ｓ４５４において、送信開始時刻算出部１３２は、処理装置９１１を用いて、送信するｎ個のフレームのなかから、次のフレームを選択する。
例えば、送信開始時刻算出部１３２は、処理装置９１１を用いて、選択送信フレーム番号ｉに１を加える。送信開始時刻算出部１３２は、記憶装置９１４を用いて、記憶した選択送信フレーム番号ｉを更新し、１を加えた選択送信フレーム番号を、新しい選択送信フレーム番号ｉとして記憶する。
次のフレームが存在しない場合、すなわち、選択送信フレーム番号ｉが、分割数設定工程Ｓ４５１で算出した分割数ｎより大きい場合、送信開始時刻算出部１３２は、処理装置９１１を用いて、余り判定工程Ｓ４５５へ処理を進める。
次のフレームが存在する場合、すなわち、選択送信フレーム番号ｉが、分割数設定工程Ｓ４５１で算出した分割数ｎ以下である場合、送信開始時刻算出部１３２は、処理装置９１１を用いて、待ち時間設定工程Ｓ４５３に処理を戻し、次のフレームの待ち時間を算出する。
【０１８４】
余り判定工程Ｓ４５５において、送信開始時刻算出部１３２は、処理装置９１１を用いて、分割数見積もり工程Ｓ４０３で算出した余りｍと、０とを比較する。
余りｍが０である場合、送信開始時刻算出部１３２は、処理装置９１１を用いて、分割設定工程Ｓ４０７を終了する。
余りｍが０より大きい場合、送信開始時刻算出部１３２は、処理装置９１１を用いて、待ちフレーム選択工程Ｓ４５６へ処理を進める。
【０１８５】
待ちフレーム選択工程Ｓ４５６において、送信開始時刻算出部１３２は、処理装置９１１を用いて、待ち時間を設けるフレームを選択する。
例えば、送信開始時刻算出部１３２は、処理装置９１１を用いて、分割数設定工程Ｓ４５１で算出した分割数ｎを２で割った商を算出する。送信開始時刻算出部１３２は、処理装置９１１を用いて、算出した商の小数部分を切り捨てて、整数にする。送信開始時刻算出部１３２は、処理装置９１１を用いて、小数部分を切り捨てて整数にした商と、１との和を算出する。送信開始時刻算出部１３２は、記憶装置９１４を用いて、算出した和を、選択送信フレーム番号ｉとして記憶する。
【０１８６】
待ち時間設定工程Ｓ４５７において、送信開始時刻算出部１３２は、処理装置９１１を用いて、待ちフレーム選択工程Ｓ４５６で選択したフレームに待ち時間を設定する。
例えば、送信開始時刻算出部１３２は、記憶装置９１４を用いて、ｉ番目のフレームの送信開始時刻までの待ち時間Ｔｔｗｉとして、分割数見積もり工程Ｓ４０３で算出した余りｍを記憶する。
送信開始時刻算出部１３２は、処理装置９１１を用いて、分割設定工程Ｓ４０７を終了する。
【０１８７】
図２１は、この実施の形態における送信データ長算出処理Ｓ３０８の流れの一例を示すフローチャート図である。
送信データ長算出処理Ｓ３０８は、送信データ長算出工程Ｓ４６１と、空フレーム削除工程Ｓ４６２とを有する。
【０１８８】
送信データ長算出工程Ｓ４６１において、送信データ長算出部１３１は、処理装置９１１を用いて、送信するｎ個のフレームのデータ長Ｌｔｐｉを算出する。
空フレーム削除工程Ｓ４６２において、送信データ長算出部１３１は、処理装置９１１を用いて、送信データ長算出工程Ｓ４６１で算出したデータ長Ｌｔｐｉが０のフレームがあれば、そのフレームを削除して、分割数ｎと、待ち時間Ｔｔｗｉとを調整する。
送信データ長算出部１３１は、処理装置９１１を用いて、送信データ長算出処理Ｓ３０８を終了する。
【０１８９】
図２２は、この実施の形態における送信データ長算出工程Ｓ４６１の流れの一例を示すフローチャート図である。
送信データ長算出工程Ｓ４６１は、分割数判定工程Ｓ４７１と、データ長設定工程Ｓ４７２と、累計初期化工程Ｓ４７３と、第一選択工程Ｓ４７４と、送信長算出工程Ｓ４７５と、データ長設定工程Ｓ４８１と、累計送信長更新工程Ｓ４８２と、送信選択工程Ｓ４８３と、累計時間差更新工程Ｓ４８４と、最終データ長設定工程Ｓ４８５とを有する。
【０１９０】
分割数判定工程Ｓ４７１において、送信データ長算出部１３１は、処理装置９１１を用いて、送信開始時刻算出処理Ｓ３０７で送信開始時刻算出部１３２が算出した分割数ｎと、１とを比較する。
分割数ｎが１である場合、送信データ長算出部１３１は、処理装置９１１を用いて、データ長設定工程Ｓ４７２へ処理を進める。
分割数ｎが１より大きい場合、送信データ長算出部１３１は、処理装置９１１を用いて、累計初期化工程Ｓ４７３へ処理を進める。
【０１９１】
データ長設定工程Ｓ４７２において、送信データ長算出部１３１は、記憶装置９１４を用いて、送信する最初のフレームのデータ長Ｌｔｐ１として、最大待ち時間算出工程Ｓ４０１で送信開始時刻算出部１３２が算出した、受信する最後のフレームの累計受信データ長Ｌｒｎｒを記憶する。
送信データ長算出部１３１は、処理装置９１１を用いて、送信データ長算出工程Ｓ４６１を終了する。
【０１９２】
累計初期化工程Ｓ４７３において、送信データ長算出部１３１は、記憶装置９１４を用いて、累計送信データ長Ｌｔとして、０を記憶する。累計送信データ長Ｌｔは、データ長Ｌｔｐｉが決定したフレームのデータ長Ｌｔｐｉを合計したものである。
また、送信データ長算出部１３１は、記憶装置９１４を用いて、最初のフレームの送信開始時刻までの待ち時間Ｔｔｗ１を、累計時間差Ｔｔとして記憶する。
【０１９３】
第一選択工程Ｓ４７４において、送信データ長算出部１３１は、処理装置９１１を用いて、送信するｎ個のフレームのなかから、最初のフレームを選択する。送信データ長算出部１３１は、処理装置９１１を用いて、受信するｎｒ個のフレームのなかから、最初のフレームを選択する。
例えば、送信データ長算出部１３１は、記憶装置９１４を用いて、選択送信フレーム番号ｉとして、１を記憶する。送信データ長算出部１３１は、記憶装置９１４を用いて、選択受信フレーム番号ｊとして、１を記憶する。
【０１９４】
送信長算出工程Ｓ４７５において、送信データ長算出部１３１は、処理装置９１１を用いて、第一選択工程Ｓ４７４または送信選択工程Ｓ４８３で選択したｉ番目の送信フレームについて、最大累計送信データ長Ｌｔｉを算出する。最大累計送信データ長Ｌｔｉは、ｉ番目の送信フレームのデータ部分５１２の送信が完了した時点における累計送信データ長Ｌｔの最大値である。実際の累計送信データ長Ｌｔは、データ長の制約により、最大累計送信データ長Ｌｔｉよりも小さくなる場合がある。
【０１９５】
データ長設定工程Ｓ４８１において、送信データ長算出部１３１は、処理装置９１１を用いて、第一選択工程Ｓ４７４または送信選択工程Ｓ４８３で選択したｉ番目の送信フレームについて、送信データ長Ｌｔｐｉを算出する。
例えば、送信データ長算出部１３１は、処理装置９１１を用いて、送信長算出工程Ｓ４７５で算出した最大累計送信データ長Ｌｔｉから、累計初期化工程Ｓ４７３または累計送信長更新工程Ｓ４８２で算出した累計送信データ長Ｌｔを差し引いた差を算出する。送信データ長算出部１３１は、処理装置９１１を用いて、算出した差を超えない値のなかで、データ長として許容される最大の値を算出する（図中の「ｆｉｔ」は、この処理を関数として記述したものである）。送信データ長算出部１３１は、記憶装置９１４を用いて、算出した値を、ｉ番目の送信フレームの送信データ長Ｌｔｐｉとして記憶する。
【０１９６】
累計送信長更新工程Ｓ４８２において、送信データ長算出部１３１は、処理装置９１１を用いて、累計送信データ長Ｌｔを更新する。
例えば、送信データ長算出部１３１は、処理装置９１１を用いて、記憶した累計送信データ長Ｌｔと、データ長設定工程Ｓ４８１で算出したｉ番目の送信フレームの送信データ長Ｌｔｐｉとの合計を算出する。送信データ長算出部１３１は、記憶装置９１４を用いて、記憶した累計送信データ長Ｌｔを更新し、算出した合計を、新しい累計送信データ長Ｌｔとして記憶する。
【０１９７】
送信選択工程Ｓ４８３において、送信データ長算出部１３１は、処理装置９１１を用いて、次の送信フレームを選択する。
例えば、送信データ長算出部１３１は、処理装置９１１を用いて、記憶した選択送信フレーム番号ｉに１を加える。送信データ長算出部１３１は、記憶装置９１４を用いて、記憶した選択送信フレーム番号ｉを更新し、１を加えた選択送信フレーム番号を、新しい選択送信フレーム番号ｉとして記憶する。
次の送信フレームが最後のフレームである場合、すなわち、選択送信フレーム番号ｉが、送信開始時刻算出処理Ｓ３０７で送信開始時刻算出部１３２が算出した分割数ｎ以上である場合、送信データ長算出部１３１は、処理装置９１１を用いて、最終データ長設定工程Ｓ４８５へ処理を進める。
次のフレームが最後よりも前のフレームである場合、すなわち、選択送信フレーム番号ｉが、送信開始時刻算出処理Ｓ３０７で送信開始時刻算出部１３２が算出した分割数ｎより小さい場合、送信データ長算出部１３１は、累計時間差更新工程Ｓ４８４へ処理を進める。
【０１９８】
累計時間差更新工程Ｓ４８４において、送信データ長算出部１３１は、処理装置９１１を用いて、累計時間差Ｔｔを更新する。
例えば、送信データ長算出部１３１は、処理装置９１１を用いて、記憶した累計時間差Ｔｔと、送信開始時刻算出処理Ｓ３０７で送信開始時刻算出部１３２が算出した追加送信時間ｔｄと、ｉ番目のフレームの送信開始時刻までの待ち時間Ｔｔｗｉとの合計を算出する。送信データ長算出部１３１は、記憶装置９１４を用いて、記憶した累計時間差Ｔｔを更新し、算出した合計を、新しい累計時間差Ｔｔとして記憶する。
送信データ長算出部１３１は、処理装置９１１を用いて、送信長算出工程Ｓ４７５に処理を戻す。
【０１９９】
最終データ長設定工程Ｓ４８５において、送信データ長算出部１３１は、処理装置９１１を用いて、送信する最後のフレームのデータ長Ｌｔｐｎを算出する。
例えば、送信データ長算出部１３１は、処理装置９１１を用いて、最大待ち時間算出工程Ｓ４０１で送信開始時刻算出部１３２が算出した、受信する最後のフレームの累計受信データ長Ｌｒｎｒから、累計送信長更新工程Ｓ４８２で算出した累計送信データ長Ｌｔを差し引いた差を算出する。送信データ長算出部１３１は、記憶装置９１４を用いて、算出した差を、最後のフレームの送信データ長Ｌｔｐｎとして記憶する。
送信データ長算出部１３１は、処理装置９１１を用いて、送信データ長算出工程Ｓ４６１を終了する。
【０２００】
図２３は、この実施の形態における送信長算出工程Ｓ４７５の流れの一例を示すフローチャート図である。
送信長算出工程Ｓ４７５は、開始比較工程Ｓ４７６と、終了比較工程Ｓ４７７と、受信選択工程Ｓ４７８と、送信長設定工程Ｓ４７９と、送信長設定工程Ｓ４８０とを有する。
【０２０１】
開始比較工程Ｓ４７６において、送信データ長算出部１３１は、処理装置９１１を用いて、記憶した累計時間差Ｔｔと、送信開始時刻算出処理Ｓ３０７で送信開始時刻算出部１３２が算出したｊ番目の受信フレームの開始時間差ｔ＊ｊとを比較する。
累計時間差Ｔｔが、開始時間差ｔ＊ｊ以上である場合、ｊ番目の受信フレームのデータのうち少なくとも一部は、ｉ番目の送信フレームに含めることができる。送信データ長算出部１３１は、処理装置９１１を用いて、終了比較工程Ｓ４７７へ処理を進める。
累計時間差Ｔｔが、開始時間差ｔ＊ｊより小さい場合、ｊ番目の受信フレームのデータは、ｉ番目の送信フレームに含めることができない。送信データ長算出部１３１は、処理装置９１１を用いて、送信長設定工程Ｓ４７９へ処理を進める。
【０２０２】
終了比較工程Ｓ４７７において、送信データ長算出部１３１は、処理装置９１１を用いて、記憶した累計時間Ｔｔと、送信開始時刻算出処理Ｓ３０７で送信開始時刻算出部１３２が算出したｊ番目の受信フレームの終了時間差ｔｊとを比較する。
累計時間差Ｔｔが、終了時間差ｔｊ以上である場合、ｊ番目の受信フレームのデータすべてを、ｉ番目の送信フレームに含めることができる。送信データ長算出部１３１は、処理装置９１１を用いて、受信選択工程Ｓ４７８へ処理を進める。
累計時間差Ｔｔが、終了時間差ｔｊより小さい場合、ｊ番目の受信フレームのデータのうち一部は、ｉ番目の送信フレームに含めることができない。送信データ長算出部１３１は、処理装置９１１を用いて、送信長設定工程Ｓ４８０へ処理を進める。
【０２０３】
受信選択工程Ｓ４７８において、送信データ長算出部１３１は、次の受信フレームを選択する。
例えば、送信データ長算出部１３１は、処理装置９１１を用いて、記憶した選択受信フレーム番号ｊに１を加える。送信データ長算出部１３１は、記憶装置９１４を用いて、記憶した選択受信フレーム番号ｊを更新し、１を加えた選択受信フレーム番号を、新しい選択受信フレーム番号ｊとして記憶する。
送信データ長算出部１３１は、処理装置９１１を用いて、開始比較工程Ｓ４７６に処理を戻す。
【０２０４】
送信長設定工程Ｓ４７９において、送信データ長算出部１３１は、処理装置９１１を用いて、ｉ番目の送信フレームの最大累計送信データ長Ｌｔｉを算出する。この場合、ｉ番目の送信フレームの最大累計送信データ長Ｌｔｉは、［ｊ−１］番目の受信フレームの累計受信データ長Ｌｒｊ−１と等しい。
例えば、送信データ長算出部１３１は、記憶装置９１４を用いて、送信開始時刻算出処理Ｓ３０７で送信開始時刻算出部１３２が算出した［ｊ−１］番目の受信フレームの累計受信データ長Ｌｒｊ−１を、ｉ番目の送信フレームの最大累計送信データ長Ｌｔｉとして記憶する。
送信データ長算出部１３１は、処理装置９１１を用いて、送信長算出工程Ｓ４７５を終了する。
【０２０５】
送信長設定工程Ｓ４８０において、送信データ長算出部１３１は、処理装置９１１を用いて、ｉ番目の送信フレームの最大累計送信データ長Ｌｔｉを算出する。この場合、ｉ番目の送信フレームの最大累計送信データ長Ｌｔｉは、［ｊ−１］番目の受信フレームの累計受信データ長Ｌｒｊ−１に、ｊ番目の受信フレームに含まれるデータのうち、受信が間に合うデータの長さを加えたものである。
例えば、送信データ長算出部１３１は、処理装置９１１を用いて、記憶した累計時間差Ｔｔから、送信開始時刻算出処理Ｓ３０７で送信開始時刻算出部１３２が算出したｊ番目の受信フレームの開始時間差ｔ＊ｊを差し引いた差を算出する。送信データ長算出部１３１は、処理装置９１１を用いて、算出した差を、送信開始時刻算出処理Ｓ３０７で送信開始時刻算出部１３２が算出した係数ａで割った商を算出する。送信データ長算出部１３１は、処理装置９１１を用いて、算出した商と、送信開始時刻算出処理Ｓ３０７で送信開始時刻算出部１３２が算出した［ｊ−１］番目の受信フレームの累計受信データ長Ｌｒｊ−１との合計を算出する。送信データ長算出部１３１は、記憶装置９１４を用いて、算出した合計を、ｉ番目の送信フレームの最大累計送信データ長Ｌｔｉとして記憶する。
送信データ長算出部１３１は、処理装置９１１を用いて、送信長算出工程Ｓ４７５を終了する。
【０２０６】
図２４は、この実施の形態における空フレーム削除工程Ｓ４６２の流れの一例を示すフローチャート図である。
空フレーム削除工程Ｓ４６２は、第一選択工程Ｓ４９１と、データ長判定工程Ｓ４９２と、待ち時間更新工程Ｓ４９３と、移動判定工程Ｓ４９４と、フレーム番号更新工程Ｓ４９５と、移動先更新工程Ｓ４９６と、送信選択工程Ｓ４９７と、分割数更新工程Ｓ４９８とを有する。
【０２０７】
第一選択工程Ｓ４９１において、送信データ長算出部１３１は、処理装置９１１を用いて、最初の送信フレームを選択する。また、送信データ長算出部１３１は、処理装置９１１を用いて、空フレーム削除後に、選択したフレームを移動する移動先のフレーム番号を１とする。
例えば、送信データ長算出部１３１は、記憶装置９１４を用いて、選択送信フレーム番号ｉとして、１を記憶する。送信データ長算出部１３１は、記憶装置９１４を用いて、移動先フレーム番号ｊとして、１を記憶する。
【０２０８】
データ長判定工程Ｓ４９２において、送信データ長算出部１３１は、処理装置９１１を用いて、送信データ長算出工程Ｓ４６１で算出したｉ番目の送信フレームの送信データ長Ｌｔｐｉと、０とを比較する。
ｉ番目の送信フレームの送信データ長Ｌｔｐｉが０である場合、送信データ長算出部１３１は、そのフレームを削除する。送信データ長算出部１３１は、処理装置９１１を用いて、待ち時間更新工程Ｓ４９３へ処理を進める。
ｉ番目の送信フレームの送信データ長Ｌｔｐｉが０より大きい場合、送信データ長算出部１３１は、処理装置９１１を用いて、移動判定工程Ｓ４９４へ処理を進める。
【０２０９】
待ち時間更新工程Ｓ４９３において、送信データ長算出部１３１は、処理装置９１１を用いて、削除したフレームの次のフレームの待ち時間を更新する。
例えば、送信データ長算出部１３１は、処理装置９１１を用いて、ｉ番目の送信フレームの待ち時間Ｔｔｗｉと、［ｉ＋１］番目の送信フレームの待ち時間Ｔｔｗｉ＋１と、追加送信時間ｔｄとの合計を算出する。送信データ長算出部１３１は、記憶装置９１４を用いて、［ｉ＋１］番目の送信フレームの待ち時間Ｔｔｗｉ＋１を更新し、算出した合計を、［ｉ＋１］番目の送信フレームの待ち時間Ｔｔｗｉ＋１として記憶する。
送信データ長算出部１３１は、処理装置９１１を用いて、送信選択工程Ｓ４９７へ処理を進める。
【０２１０】
移動判定工程Ｓ４９４において、送信データ長算出部１３１は、処理装置９１１を用いて、選択送信フレーム番号ｉと、移動先フレーム番号ｊとを比較する。
選択送信フレーム番号ｉと、移動先フレーム番号ｊとが等しい場合は、フレームを移動する必要がない。送信データ長算出部１３１は、処理装置９１１を用いて、移動先更新工程Ｓ４９６へ処理を進める。
選択送信フレーム番号ｉが、移動先フレーム番号ｊより大きい場合は、削除したフレームの分、送信フレームを前に詰める必要がある。送信データ長算出部１３１は、処理装置９１１を用いて、フレーム番号更新工程Ｓ４９５へ処理を進める。
【０２１１】
フレーム番号更新工程Ｓ４９５において、送信データ長算出部１３１は、処理装置９１１を用いて、ｉ番目の送信フレームを前に詰めてｊ番目にする。
例えば、送信データ長算出部１３１は、記憶装置９１４を用いて、ｊ番目の送信フレームの送信データ長Ｌｔｐｊを更新し、ｉ番目の送信フレームの送信データ長Ｌｔｐｉを、新しいｊ番目の送信フレームの送信データ長Ｌｔｐｊとして記憶する。送信データ長算出部１３１は、記憶装置９１４を用いて、ｊ番目の送信フレームの待ち時間Ｔｔｗｊを更新し、ｉ番目の送信フレームの待ち時間Ｔｔｗｉを、ｊ番目の送信フレームの待ち時間Ｔｔｗｊとして記憶する。
【０２１２】
移動先更新工程Ｓ４９６において、送信データ長算出部１３１は、処理装置９１１を用いて、移動先フレーム番号を１つ進める。
例えば、送信データ長算出部１３１は、処理装置９１１を用いて、記憶した移動先フレーム番号ｊに１を加える。送信データ長算出部１３１は、記憶装置９１４を用いて、記憶した移動先フレーム番号ｊを更新し、１を加えた移動先フレーム番号を、新しい移動先フレーム番号ｊとして記憶する。
【０２１３】
送信選択工程Ｓ４９７において、送信データ長算出部１３１は、処理装置９１１を用いて、次の送信フレームを選択する。
例えば、送信データ長算出部１３１は、処理装置９１１を用いて、選択送信フレーム番号ｉに１を加える。送信データ長算出部１３１は、記憶装置９１４を用いて、記憶した選択送信フレーム番号ｉを更新し、１を加えた選択送信フレーム番号を、新しい選択送信フレーム番号ｉとして記憶する。
次のフレームが存在しない場合、すなわち、選択送信フレーム番号ｉが、送信開始時刻算出処理Ｓ３０７で送信開始時刻算出部１３２が算出した分割数ｎより大きい場合、送信データ長算出部１３１は、処理装置９１１を用いて、分割数更新工程Ｓ４９８へ処理を進める。
次のフレームが存在する場合、すなわち、選択送信フレーム番号ｉが、送信開始時刻算出処理Ｓ３０７で送信開始時刻算出部１３２が算出した分割数ｎ以下である場合、送信データ長算出部１３１は、処理装置９１１を用いて、データ長判定工程Ｓ４９２に処理を戻す。
【０２１４】
分割数更新工程Ｓ４９８において、送信データ長算出部１３１は、処理装置９１１を用いて、分割数ｎを更新する。
例えば、送信データ長算出部１３１は、処理装置９１１を用いて、記憶した移動先フレーム番号ｊから１を差し引いた差を算出する。送信データ長算出部１３１は、記憶装置９１４を用いて、分割数ｎを更新し、算出した差を、新しい分割数ｎとして記憶する。
【０２１５】
以上、各実施の形態で説明した構成は、一例であり、異なる実施の形態で説明した構成を組み合わせた構成としてもよい。また、主要でない部分の構成を既存の技術など他の構成と置き換えるなどの変形をした構成としてもよい。
【０２１６】
以上説明した中継装置（１〜３；１００）は、受信装置（９１５）と、フレーム組換部（送信フレーム長算出装置２２，フレーム生成／送信装置２５；送信データ長算出部１３１，送信開始時刻算出部１３２，送信ヘッダ生成部１４１，送信データ生成部１４２，送信フッタ生成部１４３）と、送信装置（９１６；フレーム生成／送信装置２５）とを有する。
受信装置（９１５）は、一個以上のフレームを受信する。
フレーム組換部は、上記受信装置（９１５）が受信したフレームを組み換えて、上記受信装置（９１５）が受信したフレームの個数と異なる個数のフレームを生成する。
送信装置（９１６；２５）は、上記受信装置（９１５）がフレームを受信する通信速度と異なる通信速度で、上記フレーム組換部が生成したフレームを送信し、上記受信装置（９１５）が上記一個以上のフレームの受信を完了する前に上記フレーム組換部が生成したフレームの送信を開始する。
【０２１７】
フレーム組換部が組み換えたフレームを送信装置が送信するので、受信速度と送信速度とが異なる場合であっても、中継による遅延を抑えることができる。
【０２１８】
フレーム組換部は、上記受信装置（９１５）が受信したフレームの個数より多い個数のフレームを生成する。
送信装置（９１６；２５）は、上記受信装置（９１５）がフレームを受信する通信速度よりも速い通信速度で、上記フレーム組換部が生成した複数のフレームを送信する。
【０２１９】
受信速度よりも送信速度が速い場合において、受信したフレームの個数より多い個数のフレームをフレーム組換部が生成するので、送信開始までの待ち時間を減らすことができ、中継による遅延を抑えることができる。
【０２２０】
フレーム組換部（送信データ長算出部１３１；送信フレーム長算出装置２２）は、上記受信装置（９１５）が受信した一個のフレームを複数のフレームに分割し、次の式の右辺を計算することにより、分割した複数のフレームの長さを算出する。
【数４３】
2012034047.tif 000035
ただし、Ｌｔｐは、分割した複数のフレームそれぞれのうちデータ部分の長さである。Ｓｒは、上記受信装置（９１５）がフレームを受信する通信速度であり、単位時間当たりの受信データ長である。Ｓｔは、上記送信装置（９１６；２５）が複数のフレームを送信する通信速度であり、単位時間当たりの送信データ長である。Ｌｈは、上記受信装置（９１５）が受信するフレーム及び上記送信装置（９１６；２５）が送信する複数のフレームそれぞれのうち、上記データ部分に先行するヘッダ部分の長さである。Ｌｆは、上記受信装置（９１５）が受信するフレーム及び上記送信装置（９１６；２５）が送信する複数のフレームそれぞれのうち、上記データ部分に後続するフッタ部分の長さである。
【０２２１】
受信速度よりも送信速度が速い場合において、受信した一個のフレームを複数のフレームにフレーム組換部が分割するので、送信開始までの待ち時間を減らすことができる。また、上の式により各フレームの長さを計算することで、中継による遅延を更に抑えることができる。
【０２２２】
中継装置（１〜３；１００）は、送信開始時刻算出部（１３２；送信開始タイミング通知装置２３）を有する。
送信開始時刻算出部（１３２；２３）は、上記受信装置（９１５）がフレームを受信する通信速度と、上記送信装置が複数のフレームを送信する通信速度とに基づいて、上記送信装置（９１６；２５）が送信する複数のフレームに含まれるデータを上記送信装置（９１６；２５）が送信する時刻より前に、上記受信装置（９１５）が上記データを受信するよう、上記送信装置（９１６；２５）が上記複数のフレームの送信を開始する時刻を算出する。
【０２２３】
これにより、データの受信が送信に間に合わなくなるのを防ぐことができるので、中継による遅延を更に抑えることができる。
【０２２４】
送信開始時刻算出部（１３２；２３）は、次の式の右辺を計算することにより、上記送信装置（９１６；２５）が上記複数のフレームの送信を開始する時刻を算出する。
【数４４】
2012034047.tif 000036
ただし、Ｔｗは、上記受信装置（９１５）が上記フレームの受信を開始した時刻から、上記送信装置（９１６；２５）が上記複数のフレームのうち最初のフレームの送信を開始する時刻までの待ち時間である。Ｓｒは、上記受信装置（９１５）がフレームを受信する通信速度であり、単位時間当たりの受信データ長である。Ｓｔは、上記送信装置（９１６；２５）が複数のフレームを送信する通信速度であり、単位時間当たりの送信データ長である。Ｌｈは、上記受信装置（９１５）が受信するフレーム及び上記送信装置（９１６；２５）が送信する複数のフレームのうち、上記データ部分に先行するヘッダ部分の長さである。Ｌｆは、上記受信装置（９１５）が受信するフレーム及び上記送信装置（９１６；２５）が送信する複数のフレームのうち、上記データ部分に後続するフッタ部分の長さである。
【０２２５】
上の式により送信開始時刻を算出することで、中継による遅延を更に抑えることができる。
【０２２６】
フレーム組換部は、上記受信装置（９１５）が受信したフレームの個数より少ない個数のフレームを生成する。
上記送信装置（９１６；２５）は、上記受信装置（９１５）がフレームを受信する通信速度よりも遅い通信速度で、上記フレーム組換部が生成したフレームを送信する。
【０２２７】
受信速度よりも送信速度が遅い場合において、受信したフレームの個数より少ない個数のフレームをフレーム組換部が生成するので、フレームのヘッダ部分やフッタ部分の数が減る分、送信するデータ量が減る。これにより、中継による遅延を抑えることができる。
【０２２８】
フレーム組換部は、上記受信装置（９１５）が受信した複数のフレームを結合して、一個のフレームを生成する。
【０２２９】
受信速度よりも送信速度が遅い場合において、受信した複数のフレームを一つに結合することにより、送信にかかる時間を短縮することができる。
【０２３０】
中継装置（１〜３；１００）は、送信開始時刻算出部（１３２；２３）を有する。
送信開始時刻算出部（１３２；２３）は、上記受信装置（９１５）が複数のフレームを受信する通信速度と、上記送信装置（９１６；２５）がフレームを送信する通信速度とに基づいて、上記送信装置（９１６；２５）が送信するフレームに含まれるデータを上記送信装置（９１６；２５）が送信する時刻より前に、上記受信装置（９１５）が上記データを受信するよう、上記送信装置（９１６；２５）が上記フレームの送信を開始する時刻を算出する。
【０２３１】
これにより、受信するフレームの個数よりも送信するフレームの個数が少なく、受信するデータ量よりも送信するデータ量が少なくなった場合でも、データの受信が送信に間に合わなくなるのを防ぐことができる。
【０２３２】
送信開始時刻算出部（１３２；２３）は、次の式の右辺を計算することにより、上記送信装置（９１６；２５）が上記フレームの送信を開始する時刻を算出する。
【数４５】
2012034047.tif 000037
ただし、Ｔｗは、上記受信装置（９１５）が上記複数のフレームのうち最初のフレームの受信を開始した時刻から、上記送信装置（９１６；２５）が上記フレームの送信を開始する時刻までの待ち時間である。Ｓｒは、上記受信装置がフレームを受信する通信速度であり、単位時間当たりの受信データ長である。Ｓｔは、上記送信装置が複数のフレームを送信する通信速度であり、単位時間当たりの送信データ長である。Ｓｔ０は、上記中継装置よりも送信元側にある他の中継装置が分割送信した時の送信速度である。Ｌｈは、上記受信装置が受信するフレーム及び上記送信装置が送信する複数のフレームのうち、上記データ部分に先行するヘッダ部分の長さである。Ｌｆは、上記受信装置が受信するフレーム及び上記送信装置が送信する複数のフレームのうち、上記データ部分に後続するフッタ部分の長さである。Ｌｒｐは、上記受信装置が受信する複数のフレームのデータ部分の長さである。Ｌ０ｐは、上記他の中継装置が分割送信した複数のフレームのデータ部分の長さである。
【０２３３】
上の式により送信開始時刻を算出することで、中継による遅延を更に抑えることができる。
【０２３４】
中継装置（１〜３；１００）は、コンピュータを中継装置として機能させるコンピュータプログラムを、コンピュータが実行することにより実現することができる。
【符号の説明】
【０２３５】
１〜３，１００  中継装置、２２  送信フレーム長算出装置、２３  送信開始タイミング通知装置、２５  フレーム生成／送信装置、１１１  受信速度取得部、１１２  送信速度取得部、１２１  受信ヘッダ取得部、１２２  受信データ長取得部、１２３  後続データ長取得部、１２４  後続遅延取得部、１２５  受信データ取得部、１２６  受信フッタ取得部、１３１  送信データ長算出部、１３２  送信開始時刻算出部、１４１  送信ヘッダ生成部、１４２  送信データ生成部、１４３  送信フッタ生成部、５１０  フレーム、５１１  ヘッダ部分、５１２  データ部分、５１３  フッタ部分、７１１  ヘッダ長、７１２  データ長、７１３  フッタ長、９１１  処理装置、９１４  記憶装置、９１５  受信装置、９１６  送信装置。
【図１】
2012034047.tif 000041
【図２】
2012034047.tif 000042
【図３】
2012034047.tif 000043
【図４】
2012034047.tif 000044
【図５】
2012034047.tif 000045
【図６】
2012034047.tif 000046
【図７】
2012034047.tif 000047
【図８】
2012034047.tif 000048
【図９】
2012034047.tif 000049
【図１０】
2012034047.tif 000050
【図１１】
2012034047.tif 000051
【図１２】
2012034047.tif 000052
【図１３】
2012034047.tif 000053
【図１４】
2012034047.tif 000054
【図１５】
2012034047.tif 000055
【図１６】
2012034047.tif 000056
【図１７】
2012034047.tif 000057
【図１８】
2012034047.tif 000058
【図１９】
2012034047.tif 000059
【図２０】
2012034047.tif 000060
【図２１】
2012034047.tif 000061
【図２２】
2012034047.tif 000062
【図２３】
2012034047.tif 000063
【図２４】
2012034047.tif 000064