説明

中継装置及びコンピュータプログラム及び中継方法

【課題】中継前後の通信速度が異なる場合に、中継による遅延を抑える。
【解決手段】中継装置2は、ある通信装置(中継装置1)から受信したデータを異なる通信装置(中継装置3)に送信する。送信フレーム長算出装置22は、フレームを分割送信する際の送信ペイロード長を算出、通知する。送信開始タイミング通知装置23は、フレームの送信開始タイミングを通知する。フレーム生成/送信装置25は、受信フレームと送信ペイロード長からフレームを生成し、送信開始タイミングに従い、フレームを送信する。

【発明の詳細な説明】
【技術分野】
【0001】
この発明は、通信を中継する中継装置に関する。
【背景技術】
【0002】
VoIP(Voice over Internet Protocol)やネットワークゲームなどのリアルタイムな応答が求められるアプリケーションでは、ネットワーク上で発生するレイテンシ(遅延時間)の短さが重要視される。このようなアプリケーションを実現するネットワークは、多くの場合、送信元装置から送信先装置に通信を実施する場合、複数の中継装置を中継して通信を実現する。このため、中継通信におけるレイテンシの短縮が望まれる。
【0003】
レイテンシを短縮する方式としては、例えば、次のようなものがある。
中継通信を実施するネットワークにおいて、中継フレームの受信完了を待たずに中継フレームの送信を開始する。特に、中継前後での通信速度が異なる場合、中継前より中継後の通信速度が速くなる場合、バッファアンダーランが発生しないよう、中継前後の通信速度とフレーム長から待ち合わせを実施し、中継を開始する。これにより、中継処理によるレイテンシを抑制する。
【先行技術文献】
【特許文献】
【0004】
【特許文献1】特開平8−32615号公報
【発明の概要】
【発明が解決しようとする課題】
【0005】
中継前よりも中継後の通信速度が速くなる場合において、バッファアンダーランが発生しないよう待ち合わせを実施してから中継を開始する方式は、フレームの長さが長くなると、その分、待ち合わせ時間が長くなる。
この発明は、例えば上記のような課題を解決するためになされたものであり、中継前後の通信速度が異なる場合における中継による遅延を抑えることを目的とする。
【課題を解決するための手段】
【0006】
この発明にかかる中継装置は、
一個以上のフレームを受信する受信装置と、
上記受信装置が受信したフレームを組み換えて、上記受信装置が受信したフレームの個数と異なる個数のフレームを生成するフレーム組換部と、
上記受信装置がフレームを受信する通信速度と異なる通信速度で、上記フレーム組換部が生成したフレームを送信し、上記受信装置が上記一個以上のフレームの受信を完了する前に上記フレーム組換部が生成したフレームの送信を開始する送信装置とを有する。
【発明の効果】
【0007】
この発明にかかる中継装置によれば、分割して送信されたフレームを早めに後続の中継装置に通知することができるため、後続の通信経路が低速になったときの中継処理によるレイテンシを抑えることができる。
【図面の簡単な説明】
【0008】
【図1】中継前より中継後の通信速度が速く、フレームを分割しない場合における通信のタイミングを示す図。
【図2】実施の形態1における中継装置2の構成図。
【図3】受信速度より送信速度が速い場合における通信タイミングを示す図。
【図4】受信速度より送信速度が遅い場合における通信タイミングを示す図。
【図5】複数の中継装置によるフレームの中継の一例を示すタイミング図。
【図6】実施の形態2における中継装置100のハードウェア資源の一例を示す図。
【図7】実施の形態2における中継装置100が中継するフレーム510のハードウェア資源の一例を示す図。
【図8】実施の形態2における中継装置100の機能ブロックの一例を示すブロック構成図。
【図9】実施の形態2における中継装置100が受信するフレーム510Aと、中継装置100が送信するフレーム510a〜510eとの関係を示すタイミング図。
【図10】実施の形態2における中継装置100が受信するフレーム510Aと、中継装置100が送信するフレーム510aとの関係を示すタイミング図。
【図11】実施の形態2における中継装置100が受信するフレーム510A〜510Bと、中継装置100が送信するフレーム510a〜510cとの関係を示すタイミング図。
【図12】実施の形態2における中継装置100が受信するフレーム510A〜510Bと、中継装置100が送信するフレーム510a〜510cとの関係を示すタイミング図。
【図13】実施の形態2におけるヘッダ生成処理S300の流れの一例を示すフローチャート図。
【図14】実施の形態2における送信開始時刻算出処理S307の流れの一例を示すフローチャート図。
【図15】実施の形態2における最大待ち時間算出工程S401の流れの一例を示すフローチャート図。
【図16】実施の形態2における非分割設定工程S402の流れの一例を示すフローチャート図。
【図17】実施の形態2における分割数見積もり工程S403の流れの一例を示すフローチャート図。
【図18】実施の形態2における開始優先設定工程S405の流れの一例を示すフローチャート図。
【図19】実施の形態2における終了優先設定工程S406の流れの一例を示すフローチャート図。
【図20】実施の形態2における分割設定工程S407の流れの一例を示すフローチャート図。
【図21】実施の形態2における送信データ長算出処理S308の流れの一例を示すフローチャート図。
【図22】実施の形態2における送信データ長算出工程S461の流れの一例を示すフローチャート図。
【図23】実施の形態2における送信長算出工程S475の流れの一例を示すフローチャート図。
【図24】実施の形態2における空フレーム削除工程S462の流れの一例を示すフローチャート図。
【発明を実施するための形態】
【0009】
図1は、中継前より中継後の通信速度が速く、フレームを分割しない場合における通信のタイミングを示す図である。
レイテンシTは、次の式で表される。
【数11】

ただし、Sは受信経路の通信速度(以下、受信速度)、Sは送信経路の通信速度(以下、送信速度)、Lは中継ペイロード長、Lはヘッダ長、Lはフッタ長である。
このレイテンシは、ペイロード長、ヘッダ長、フッタ長の合計であるフレーム長に比例しており、長いフレームを中継する場合のレイテンシは大きくなる。以下に説明する中継装置は、フレーム長の増加に伴うレイテンシの増加を抑制する。
【0010】
実施の形態1.
実施の形態1について、図2〜図5を用いて説明する。
【0011】
この実施の形態における中継装置は、低速な通信経路から高速な通信経路に中継を実施するとき、中継装置がフレームの受信完了を待たずに、受信が完了した箇所から順に分割送信することで中継時のレイテンシを抑制する。
【0012】
まず、前提を説明する。
中継装置は、送信元装置と送信先装置の組み合わせに対応する受信速度Sと送信速度S、フレームのヘッダ長Lとフッタ長Lを予め記憶しているものとする。
また、フレームのヘッダには送信元装置のアドレス、送信先装置のアドレス、フレームのペイロード長(以下、受信ペイロード長)L、過去のフレームの分割前のペイロード長(以下、分割前ペイロード長)Lp0,Lp1,…,Lpi(ただし、iは、送信元装置の送信したフレームから分割されている回数)と分割後の送信速度(以下、分割後送信速度)S,S,…,Sを格納する(ただし、Sは直前の分割送信時の送信速度、Lは直前の分割送信時のペーロード長とする。)。さらに、フッタについては、フレームのヘッダとペイロードに格納されているデータから算出するものとする。
【0013】
図2は、この実施の形態における中継装置2の構成図である。
中継装置2(通信装置)は、ある通信装置から受信したデータを異なる通信装置に送信する。例えば、中継装置2は、中継装置2に隣接する送信元装置もしくは送信元側の中継装置1からフレームを受信し、受信したフレームを分割もしくは結合したフレームを生成し、送信先装置もしくは送信先側の中継装置3に生成したフレームを送信する。
【0014】
中継装置2の内部構造を説明する。
中継装置2は、送信フレーム長算出装置22と、送信開始タイミング通知装置23と、フレーム生成/送信装置25とを有する。
送信フレーム長算出装置22は、送信フレームのペイロード長(以下、送信ペイロード長)を算出、通知する。送信フレーム長算出装置22は、送信ペイロード長Lを算出し、送信開始タイミング通知装置23とフレーム生成/送信装置25とに通知する。
【0015】
送信開始タイミング通知装置23は、フレームの送信開始タイミングを通知する。送信開始タイミング通知装置23は、フレームの受信開始から送信開始までの待ち合わせ時間(以下、待ち合わせ時間)Tと、フレームの分割送信を実施する場合、さらに送信周期Tとフレーム送信回数Nを算出し、送信開始タイミングをフレーム生成/送信装置25に通知する。
【0016】
フレーム生成/送信装置25は、受信フレームと送信ペイロード長からフレームを生成し、送信開始タイミングに従い、フレームを送信する。フレーム生成/送信装置25は、送信フレームを生成し、送信開始タイミングに従い、送信先側の中継装置3もしくは送信先装置にフレームを送信する。
【0017】
次に動作について説明する。
中継装置2は、フレームのペイロード受信中に受信したペイロードを個別のフレームに分割し連続送信可能な場合、ペイロードの前寄りに格納されたデータを早く中継するため、受信したペイロードを分割して送信する(以下、分割送信)。また、中継装置2は、フレーム中継中に送信中のフレームの後続のフレームのペイロードが送信可能になったとき、通信タイミングの重複を回避するため、ペイロードを連結したフレームを送信する(以下、連結送信)。上記のいずれにも該当しない場合、中継装置2は、フレームをそのまま中継する(以下、素通り送信)。
【0018】
このうち、送信フレーム長算出装置22では、送信ペイロード長Lを算出する。
送信ペイロード長Lの算出式は、分割送信、素通り送信、連結送信でそれぞれ異なる。
【0019】
(1)分割送信
レイテンシを抑制するために受信ペイロードをより細かく分割し、繰り返し送信する。そこで、連続してフレームを送信できるように、受信ペイロードの受信時間と受信ペイロードを格納したフレームの送信時間が等しくなるときのペイロード長を送信ペイロード長Lとする。
(2)素通り送信
送信ペイロード長Lは変化せず、受信ペイロード長となる。
(3)連結送信
(1)で述べたとおり、分割送信ではフレームを連続して送信するため、分割送信時は帯域を100%使用する。このため、送信速度Sより速い分割後送信速度Sj−1で、分割送信を実施したペイロードLj−1のフレームを、送信速度Sで遅延なく送信することは帯域不足により、できない。よって、送信速度Sでも、遅延なく送信可能な送信速度Sより遅い分割後送信速度Sの時のペイロードLのフレームで送信を実施する(ただし、1≦j≦i)。
このとき、送信ペイロードLは、次の式のようになる。
【数12】

ただし、(1)は分割送信の場合、(2)は素通り送信の場合、(3)は連結送信の場合である。
送信フレーム長算出装置22は、算出した送信ペイロードLを、送信開始タイミング通知装置23とフレーム生成/送信装置25に通知する。
【0020】
送信開始タイミング通知装置23は、待ち合わせ時間Tと分割送信時の送信周期Tとフレーム送信数Nを算出し、送信開始タイミングをフレーム生成/送信装置25に通知する。
待ち合わせ時間Tの算出式は、送信方式(分割送信、素通り送信、連結送信)と、バッファアンダーランの発生の有無で異なる。まず、送信開始タイミング通知装置23は、送信ペイロード長と受信ペイロード長とから送信方式を特定する。次に、送信開始タイミング通知装置23は、フレームの受信開始と同時にフレームの送信を開始すると、バッファアンダーランが発生するか否かを判定する。バッファアンダーランが発生しない場合、送信開始タイミング通知装置23は、ヘッダの受信時間を、待ち合わせ時間Tとする。バッファアンダーランが発生する場合、送信開始タイミング通知装置23は、送信と受信が同時に完了するように待ち合わせ時間Tを設定する。各条件での待ち合わせ時間Tは、次のようになる。
【数13】

ただし、(1)は分割送信の場合、(2a)は素通り送信のうちバッファアンダーランが発生する場合、(2b)は素通り送信のうちバッファアンダーランが発生しない場合、(3a)は連結送信のうちバッファアンダーランが発生する場合、(3b)は連結送信のうちバッファアンダーランが発生しない場合である。
【0021】
図3は、受信速度より送信速度が速い場合における通信タイミングを示す図である。
図4は、受信速度より送信速度が遅い場合における通信タイミングを示す図である。
【0022】
また、分割送信時の送信周期Tは、受信ペイロードを格納したフレームの送信時間が受信ペイロードの受信時間と等しいため、次のようになる。
【数14】

【0023】
さらに、フレーム送信数Nは、受信ペイロードを送信ペイロードで割った値となる。
【数15】

【0024】
送信開始タイミング通知装置23は、これら、算出した待ち合わせ時間Tと分割送信時の送信周期Tとフレーム送信数Nを元に、送信開始タイミングをフレーム生成/送信装置25に通知する。
【0025】
フレーム生成/送信装置25は、ヘッダを含むフレームを生成し、送信先側の中継装置3もしくは送信先装置にフレームを送信する。
ヘッダの生成において、フレーム生成/送信装置25は、受信フレームのヘッダから、送信ペイロード長をLに変更する。さらに、分割送信の場合は、分割前ペイロード長にLを、分割後送信速度にSを追加する。また、連結送信の場合は、S〜Si−1とL〜Li−1の分割は連結させたため、参照する必要がないため削除する(ただし、S≦S<sj−1)。
フレームの生成において、フレーム生成/送信装置25は、上記のフレームに、ペイロードとして受信したフレームから送信ペイロード長L分のデータを連結し、フッタを生成することで、実現する。
フレームの送信において、フレーム生成/送信装置25は、送信開始タイミング通知装置23からの送信開始タイミングに従い実施する。
【0026】
受信速度より送信速度が速い場合、通信タイミングは、例えば図3のようになり、分割送信により、送信フレーム長を短縮できるようになる。
【0027】
図5は、複数の中継装置によるフレームの中継の一例を示すタイミング図である。
この例は、送信元装置から中継装置1への通信速度よりも、中継装置1から中継装置2への通信速度のほうが速く、中継装置2から送信先装置への通信速度は、送信元装置から中継装置1への通信速度と同じに戻る場合である。なお、ヘッダ及びフッタは省略し、ペイロードのみを示している。
左側は、比較例として、フレームの分割をしない場合、右側は、この実施の形態における分割送信および連結送信をした場合を示す。
このように、分割されたフレームを後続の中継装置で連結送信すると、先頭のフレームを基準にフレームが連結されるため、より早くフレームを送信できるようになる。
【0028】
中継装置1は、次の式を満たす場合に、分割送信を実施する。
【数16】

このときのレイテンシTは、次の式で表わされる。
【数17】

これに対し、分割送信しない場合のレイテンシTは、次の式で表わされる。
【数18】

このように、分割送信をすることにより、レイテンシTwが、分割送信をしない場合より短くなる。
【0029】
また、通信路上でフレームの干渉が発生する場合、図4のようにヘッダ、フッタを削減し、ペイロードを連結することで、通信タイミングの重複による待ち合わせを削減し、後続のフレームのレイテンシを短縮することもできる。
【0030】
以上説明した通信装置(中継装置1〜3)は、ある通信装置から受信したデータを異なる通信装置に送信する。通信装置は、送信フレーム長算出装置22と、送信開始タイミング通知装置23と、フレーム生成/送信装置25とを有する。送信フレーム長算出装置22は、フレームを分割送信する際の送信ペイロード長を算出、通知する。送信開始タイミング通知装置23は、フレームの送信開始タイミングを通知する。フレーム生成/送信装置25は、受信フレームと送信ペイロード長からフレームを生成し、送信開始タイミングに従い、フレームを送信する。
【0031】
実施の形態2.
実施の形態2について、図6〜図24を用いて説明する。
なお、実施の形態1と共通する部分については、同一の符号を付し、説明を省略する。
【0032】
図6は、この実施の形態における中継装置100のハードウェア資源の一例を示す図である。
中継装置100は、処理装置911と、記憶装置914と、受信装置915と、送信装置916とを有する。
処理装置911は、記憶装置914が記憶したプログラムを実行することにより、データを処理し、中継装置100全体を制御する。
記憶装置914は、処理装置911が実行するプログラムや、処理装置911が処理するデータなどを記憶する。
受信装置915は、データを受信する。受信装置915が受信したデータは、処理装置911が直接処理してもよいし、記憶装置914が一時的に記憶してもよい。
送信装置916は、処理装置911が処理したデータや記憶装置914が記憶したデータを送信する。
中継装置100の機能ブロックは、記憶装置914が記憶したプログラムを処理装置911が実行することにより、実現される。なお、中継装置100の機能ブロックは、処理装置911がプログラムを実行することにより実現するのではなく、デジタル回路やアナログ回路などの電子回路やその他の電気的構成、あるいは機械的構成などその他の構成により実現するものであってもよい。
【0033】
図7は、この実施の形態における中継装置100が中継するフレーム510のハードウェア資源の一例を示す図である。
中継装置100は、フレーム形式のデータを中継する。受信装置915は、データをフレーム510として受信し、送信装置916は、データをフレーム510として送信する。フレーム510は、ヘッダ部分511と、データ部分512と、フッタ部分513とを有する。
【0034】
ヘッダ部分511は、固定された長さ(バイト数もしくはビット数)を有する。ヘッダ部分511の長さをヘッダ長711と呼び、数式中では「L」と記述する。
データ部分512は、任意の長さを有する。データ部分512の長さをデータ長712と呼び、数式中では「L」と記述する。なお、データ長712には、例えばバイト単位でなければならないとか、4バイトの倍数でなれけばならないとかいった制約が設けられていてもよい。
フッタ部分513は、固定された長さを有する。フッタ部分513の長さをフッタ長713と呼び、数式中では「L」と記述する。
【0035】
ヘッダ部分511は、フレーム510の始まりを表わすデータや、例えばIPアドレスなどフレーム510の宛先を表わすデータや、データ部分512の長さを表わすデータなどを含む。また、フレーム510が、もともとは1つのフレーム510であったものを、中継装置100が分割して複数のフレームにしたものである場合、ヘッダ部分511は、分割数や、分割された各フレームの長さや、各フレームの送信終了時刻から次のフレームの送信開始時刻までの遅延時間などを表わすデータを含む。なお、これらのデータは、分割されたフレームのうち、先頭のフレームにのみ含まれる構成であってもよい。
データ部分512は、送信すべきデータ本体である。
フッタ部分513は、フレーム510の終わりを表わすデータなどを含む。なお、フッタ部分513は、なくてもよい。
なお、この実施の形態におけるフレーム510のフッタ部分513には、新たな情報は含まれない。すなわち、中継装置100は、受信するフレーム510のフッタ部分513をまだ受信する前であっても、ヘッダ部分511とデータ部分512との受信が終わっていれば、送信するフレーム510のフッタ部分513を生成することができる。
【0036】
図8は、この実施の形態における中継装置100の機能ブロックの一例を示すブロック構成図である。
中継装置100は、受信速度取得部111と、送信速度取得部112と、受信ヘッダ取得部121と、受信データ長取得部122と、後続データ長取得部123と、後続遅延取得部124と、受信データ取得部125と、受信フッタ取得部126と、送信データ長算出部131と、送信開始時刻算出部132と、送信ヘッダ生成部141と、送信データ生成部142と、送信フッタ生成部143とを有する。
【0037】
受信速度取得部111は、処理装置911を用いて、受信装置915がフレーム510を受信する通信速度を取得する。受信装置915がフレーム510を受信する通信速度を「S」と記述する。通信速度Sは、例えばビット毎秒のように、単位時間当たりに受信するデータの長さによって表される。中継装置100が1つのフレーム510を受信するのにかかる時間は、以下の式で表される。
【数19】

ただし、Tは、フレーム510の受信にかかる時間である。Tは、フレーム510のうちヘッダ部分511の受信にかかる時間である。Tは、フレーム510のうちデータ部分512の受信にかかる時間である。Tは、フレーム510のうちフッタ部分513の受信にかかる時間である。Lは、中継装置100が受信するフレーム510のデータ長712である。
【0038】
送信速度取得部112は、処理装置911を用いて、送信装置916がフレーム510を送信する通信速度を取得する。送信装置916がフレーム510を送信する通信速度を「S」と記述する。通信速度Sは、通信速度Sと同様、例えばビット毎秒のように、単位時間当たりに送信するデータの長さによって表される。中継装置100が1つのフレーム510を送信するのにかかる時間は、以下の式で表される。
【数20】

ただし、Tは、フレーム510の送信にかかる時間である。Tは、フレーム510のうちヘッダ部分511の送信にかかる時間である。Tは、フレーム510のうちデータ部分512の送信にかかる時間である。Tは、フレーム510のうちフッタ部分513の送信にかかる時間である。Lは、中継装置100が送信するフレーム510のデータ長712である。
【0039】
受信ヘッダ取得部121は、処理装置911を用いて、受信装置915が受信したデータから、フレーム510のヘッダ部分511を取得する。受信ヘッダ取得部121は、記憶装置914を用いて、取得したヘッダ部分511を記憶する。
例えば、受信ヘッダ取得部121は、処理装置911を用いて、受信装置915が受信したデータを、フレーム510の始まりを表わすデータと順次比較して、フレーム510の先頭を探す。フレーム510の先頭を見つけたら、受信ヘッダ取得部121は、処理装置911を用いて、そこからヘッダ長711分のデータをヘッダ部分511として取得する。ヘッダ部分511の取得が終わったら、受信ヘッダ取得部121は、処理装置911を用いて、そのことを受信データ取得部125に通知する。
【0040】
受信データ長取得部122は、処理装置911を用いて、受信ヘッダ取得部121が記憶したヘッダ部分511を解析して、データ長712を取得する。受信データ長取得部122は、記憶装置914を用いて、取得したデータ長712を記憶する。
後続データ長取得部123は、処理装置911を用いて、受信ヘッダ取得部121が記憶したヘッダ部分511を解析して、フレーム510が分割フレームである場合に、分割数と、フレーム510のあとに後続する1以上のフレームそれぞれのデータ長712を取得する。後続データ長取得部123は、記憶装置914を用いて、取得した後続フレームのデータ長712を記憶する。
後続遅延取得部124は、処理装置911を用いて、受信ヘッダ取得部121が記憶したヘッダ部分511を解析して、フレーム510が分割フレームである場合に、フレーム510のあとに後続する1以上のフレームそれぞれの遅延時間を取得する。後続遅延取得部124は、記憶装置914を用いて、取得した後続フレームの遅延時間を記憶する。
【0041】
受信データ取得部125は、処理装置911を用いて、受信装置915が受信したデータから、フレーム510のデータ部分512を取得する。受信データ取得部125は、記憶装置914を用いて、取得したデータ部分512を記憶する。
例えば、受信データ取得部125は、処理装置911を用いて、受信ヘッダ取得部121からの通知を受けて、データ部分512の始まりを検知する。受信データ取得部125は、処理装置911を用いて、受信装置915が受信したデータを、データ部分512のデータとして順次取得する。受信データ取得部125は、記憶装置914を用いて、取得したデータを、先入れ先出し形式のバッファに記憶する。受信データ取得部125は、処理装置911を用いて、取得したデータの長さを計数し、受信データ長取得部122が記憶したデータ長712と等しくなったら、データの取得を終了する。受信データ取得部125は、処理装置911を用いて、そのことを受信フッタ取得部126へ通知する。
【0042】
受信フッタ取得部126は、処理装置911を用いて、受信装置915が受信したデータから、フレーム510のフッタ部分513を取得する。
例えば、受信フッタ取得部126は、処理装置911を用いて、受信データ取得部125からの通知を受けて、フッタ部分513の開始を検知する。受信フッタ取得部126は、処理装置911を用いて、受信装置915が受信したデータのうち、そこからフッタ長713分のデータを、フッタ部分513として取得する。フッタ部分513の取得が終わったら、受信フッタ取得部126は、処理装置911を用いて、そのことを受信ヘッダ取得部121に通知する。
受信フッタ取得部126からの通知を受けると、受信ヘッダ取得部121は、処理装置911を用いて、次のフレーム510の先頭を探す。
【0043】
送信データ長算出部131は、処理装置911を用いて、中継装置100が送信するフレーム510のデータ長712を算出する。送信データ長算出部131は、記憶装置914を用いて、算出したデータ長712を記憶する。
中継装置100は、受信したデータをできる限り早く送信することにより、中継による遅延を少なくする。このため、受信速度Sよりも送信速度Sが速い場合など、データの受信が間に合わなくなる可能性がある。そこで、送信データ長算出部131は、データの受信が間に合うぎりぎりのデータ長712を算出する。送信データ長算出部131が算出するデータ長712は、中継装置100が受信したフレーム510のデータ長712よりも短くなる場合(フレームの分割)もあれば、長くなる場合(フレームの結合)もある。
【0044】
送信開始時刻算出部132は、処理装置911を用いて、中継装置100がフレーム510の送信を開始する時刻を算出する。送信開始時刻算出部132は、記憶装置914を用いて、算出した送信開始時刻を記憶する。
場合によっては、フレーム510の送信開始を少し遅らせることにより、データの受信が間に合わなくなるのを防ぐことができる場合がある。その結果、中継装置100が送信するフレーム510のデータ長712が長くなり、中継装置100が送信するフレーム510の数が減るので、逆に、データ全体の送信を早く終わらせることができる。
なお、送信開始時刻算出部132が算出する送信開始時刻は、「何時何分何秒」のような絶対時刻であってもよいし、例えば「前のフレームの送信が終わってから何秒後」のような相対時刻であってもよい。
【0045】
送信ヘッダ生成部141は、処理装置911を用いて、送信データ長算出部131が算出したデータ長712と、送信開始時刻算出部132が算出した送信開始時刻とに基づいて、中継装置100が送信するフレーム510のヘッダ部分511を生成する。送信ヘッダ生成部141は、処理装置911を用いて、生成したヘッダ部分511を送信装置916に通知する。
送信データ生成部142は、処理装置911を用いて、送信データ長算出部131が算出したデータ長712に基づいて、受信データ取得部125が記憶したデータを順次取得し、中継装置100が送信するフレーム510のデータ部分512を生成する。送信データ生成部142は、処理装置911を用いて、生成したデータ部分512を送信装置916に順次通知する。
送信フッタ生成部143は、処理装置911を用いて、送信ヘッダ生成部141が生成したヘッダ部分511や送信データ生成部142が生成したデータ部分512などに基づいて、中継装置100が送信するフレーム510のフッタ部分513を生成する。送信フッタ生成部143は、処理装置911を用いて、生成したフッタ部分513を送信装置916に通知する。
【0046】
送信装置916は、送信開始時刻算出部132が算出した送信開始時刻になったら、送信ヘッダ生成部141が生成したヘッダ部分511と、送信データ生成部142が生成したデータ部分512と、送信フッタ生成部143が生成したフッタ部分513とからなるフレーム510の送信を開始する。送信装置916がフレーム510の送信を開始する時点では、ヘッダ部分511は完成しているが、まだデータ部分512の生成の途中かもしれない。しかし、送信データ長算出部131が算出したデータ長712と、送信開始時刻算出部132が算出した送信開始時刻が適切であれば、送信装置916がフレーム510の送信を終了する時点では、データ部分512もフッタ部分513も完成しているはずである。
【0047】
次に、中継装置100が送信するフレーム510のデータ長712を送信データ長算出部131が算出する方式およびフレーム510の送信開始時刻を送信開始時刻算出部132が算出する方式について説明する。
以下の説明において、中継装置100が受信するフレーム510には、アルファベット大文字を付けて「510A」「510B」のように記述し、中継装置100が送信するフレーム510には、アルファベット小文字を付けて「510a」「510b」のように記述する。
また、送信データ長算出部131がデータ長712を算出する処理など、処理装置911による処理にかかる時間は、フレーム510の受信あるいは送信にかかる時間と比べて非常に短いので、以下の説明では、処理装置911による処理にかかる時間を無視する。なお、処理装置911による処理にかかる時間が無視できない場合は、その分を一定の遅延時間と考えれば、以下の説明をそのまま適用できる。
【0048】
まず、受信速度Sより送信速度Sのほうが速い場合について説明する。
【0049】
図9は、この実施の形態における中継装置100が受信するフレーム510Aと、中継装置100が送信するフレーム510a〜510eとの関係を示すタイミング図である。
横軸は、時刻を示す。縦軸は、データの受信率または送信率を示す。破線751は、中継装置100が受信するデータの受信率を示す。受信率とは、中継装置100が受信するフレーム510Aのデータ部分512Aのデータ長712のうち、中継装置100が受信したデータの長さの割合である。実線752は、中継装置100が送信するデータの送信率を示す。送信率とは、中継装置100が受信するフレーム510Aのデータ部分512Aのデータ長712のうち、中継装置100が送信したデータの長さの割合である。
【0050】
時刻611において、受信装置915は、フレーム510Aの受信を開始する。
時刻612において、受信装置915は、ヘッダ部分511Aの受信を終え、データ部分512Aの受信を開始する。受信ヘッダ取得部121が取得したヘッダ部分511Aを、受信データ長取得部122・後続データ長取得部123・後続遅延取得部124がそれぞれ解析する。受信データ長取得部122は、データ部分512Aのデータ長712Aを取得する。後続データ長取得部123・後続遅延取得部124は、分割数、後続するフレームのデータ長、遅延時間などを取得する。この例では、フレーム510Aが分割されたフレームではないので、分割数は1である。後続データ長取得部123・後続遅延取得部124は、後続フレームのデータ長や遅延時間を取得しない。
送信データ長算出部131は、受信速度S・送信速度S・受信データ長712A・分割数などに基づいて、送信するフレーム510a〜510eの数、各フレーム510a〜510eのデータ長712a〜712eなどを算出する。送信開始時刻算出部132は、受信速度S・送信速度S・受信データ長712A・分割数などに基づいて、各フレーム510a〜510eの送信開始時刻を算出する。
送信ヘッダ生成部141は、送信データ長算出部131が算出したデータ長712a〜712eと、送信開始時刻算出部132が算出した送信開始時刻とに基づいて、送信するフレーム510a〜510eのヘッダ部分511a〜511eを生成する。
この例では、送信開始時刻算出部132が算出した最初のフレーム510aの送信開始時刻までの待ち時間が「0」なので、送信装置916は、すぐに、最初のフレーム510aの送信を開始する。
【0051】
時刻613において、送信装置916は、最初のフレーム510aのうち、ヘッダ部分511aの送信を終え、データ部分512aの送信を開始する。この時点において、受信装置915は、送信装置916が送信する最初のフレーム510aのデータ部分512aに入れるべきデータのうち、約半分しか受信していない。
【0052】
時刻614において、受信装置915は、送信装置916が送信する最初のフレーム510aのデータ部分512aに入れるべきデータの受信を終える。送信データ生成部142は、データ部分512aを完成させる。送信装置916は、データ部分512aの送信を終える。送信フッタ生成部143は、フッタ部分513aを生成する。送信装置916は、フッタ部分513aの送信を開始する。
【0053】
時刻615において、送信装置916は、最初のフレーム510aの送信を終える。
この例では、送信開始時刻算出部132が算出した次のフレーム510bの送信開始時刻までの待ち時間が「0」なので、送信装置916は、すぐに、次のフレーム510bの送信を開始する。
【0054】
時刻616において、送信装置916は、二番目のフレーム510bのヘッダ部分511bの送信を終え、データ部分512bの送信を開始する。
時刻617において、送信装置916は、二番目のフレーム510bのデータ部分512bの送信を終え、フッタ部分513bの送信を開始する。
時刻618において、送信装置916は、二番目のフレーム510bの送信を終える。
この例では、送信開始時刻算出部132が算出した次のフレーム510cの送信開始時刻までの待ち時間が「0」ではないので、送信装置916は、待ち時間が経過するまで次のフレーム510cの送信を開始しない。
【0055】
時刻619において、待ち時間が経過したので、送信装置916は、三番目のフレーム510cの送信を開始する。
【0056】
このようにして、送信装置916は、受信装置915が受信したフレーム510Aを分割した5つのフレーム510a〜510eを送信する。
【0057】
ここで、送信装置916は、受信装置915が受信し終わったデータしか送信することができないので、実線752は、必ず、破線751よりも右下にあり、左上にはみ出すことはない。
また、破線751と実線752との囲まれた部分の面積が、中継による遅延を表わす。この面積が小さいほど、中継による遅延が少ないことを意味する。したがって、送信データ長算出部131および送信開始時刻算出部132は、この面積がなるべく小さくなるよう、データ長712および送信開始時刻を算出する。
【0058】
送信装置916が送信を開始できる最も早い時刻から、受信装置915がデータ部分512Aのうち、最初から長さLのデータの受信を完了する時刻までの時間t(L)は、次の式で表される。
【数21】

第一項は、受信装置915がフレーム510Aのデータ部分512Aの受信を開始してから、長さLのデータの受信を完了するまでの時間を表わす。第二項は、受信装置915がフレーム510Aのヘッダ部分511Aの受信を完了してから、送信装置916が最初のフレーム510aのヘッダ部分511aの送信を完了するまでの時間を表わす。
【0059】
また、送信装置916が送信を開始できる最も早い時刻から、送信装置916が長さLのデータの送信を最も早く完了できる時刻までの時間t(L)は、次の式で表される。
【数22】

【0060】
受信時間t(L)が送信時間t(L)よりも常に小さければ、フレームを分割せず、かつ、待ち時間を設けずに、中継装置100が受信したデータを送信できる。そこで、受信時間t(L)と送信時間t(L)との差t(L)を考える。
【数23】

【0061】
受信速度Sより送信速度Sのほうが速い場合、差t(L)が最も大きくなるのは、Lが最大のとき、すなわち、Lが、フレーム510Aのデータ長712Aと等しいときである。
【数24】

ただし、Lは、フレーム510Aのデータ長712Aである。
【0062】
また、この値は、フレームを分割しない場合において、最初のフレーム510Aの送信開始時刻までの待ち時間を意味する。
【0063】
フレームを分割すると、1回分割するごとに、ヘッダ部分511とフッタ部分513とを1つずつ余分に送信する必要が生じる。送信装置916がヘッダ部分511を送信するのにかかる時間とフッタ部分513を送信するのにかかる時間との合計時間tは、次の式で表される。
【数25】

【0064】
したがって、フレームを1回分割するごとに、待ち時間は、時間tだけ減る。フレームの分割数をnとすると、待ち時間は、次の式で表される。
【数26】

【0065】
例えば、送信開始時刻算出部132は、処理装置911を用いて、数24の値max[t(L)]を計算する。
【0066】
送信開始時刻算出部132が計算した値max[t(L)]が0以下である場合、送信開始時刻算出部132は、処理装置911を用いて、分割数を「1」とする。送信開始時刻算出部132は、処理装置911を用いて、最初の(そして唯一の)フレーム510aの送信開始時刻までの待ち時間を「0」に設定する。
【0067】
送信開始時刻算出部132が計算した値max[t(L)]が0より大きい場合、送信開始時刻算出部132は、処理装置911を用いて、数25の値tを計算する。
送信開始時刻算出部132は、処理装置911を用いて、計算した値max[t(L)]と、計算した値tとに基づいて、値max[t(L)]を値tで割った商を超えない最大の整数kと、値max[t(L)]を値tで割った余りmとを計算する。
【0068】
送信開始時刻算出部132が計算した余りmが0である場合、送信開始時刻算出部132は、処理装置911を用いて、計算した整数kに1を加えた整数[k+1]を計算する。送信開始時刻算出部132は、処理装置911を用いて、分割数を、計算した整数[k+1]に設定する。送信開始時刻算出部132は、処理装置911を用いて、[k+1]個のフレーム510の送信開始時刻までの待ち時間を、すべて「0」に設定する。
【0069】
送信開始時刻算出部132が計算した余りmが0ではなく、整数kが0である場合、送信開始時刻の算出方式には、送信開始を優先する方式と、送信終了を優先する方式との2種類がある。以下、それぞれの方式について説明する。
【0070】
・送信開始を優先する方式
送信開始時刻算出部132は、処理装置911を用いて、分割数を「2」とする。送信開始時刻算出部132は、処理装置911を用いて、2つのフレーム510a,510bの送信開始時刻までの待ち時間を、ともに「0」に設定する。
【0071】
・送信終了を優先する方式
送信開始時刻算出部132は、処理装置911を用いて、分割数を「1」とする。送信開始時刻算出部132は、処理装置911を用いて、最初の(そして唯一の)フレーム510aの送信開始時刻までの待ち時間を、算出した余りmに設定する。
【0072】
送信開始を優先する方式の場合、最初のフレーム510aの送信開始時刻までの待ち時間が0である代わりに、最後のフレーム510bのデータ部分512bの送信終了時刻が、受信するフレーム510Aのデータ部分512Aの受信終了時刻よりも遅れることになる。送信終了の遅延時間は、次の式で表される。
【数27】

【0073】
これに対し、送信終了を優先する方式の場合、送信開始に余りmの遅延が生じる代わり、受信するフレーム510Aのデータ部分512Aの受信終了とほぼ同時に、最後の(この場合、唯一の)フレーム510aのデータ部分512aの送信が終了する。
【0074】
送信開始時刻算出部132は、上記いずれかの方式にしたがって、送信開始時刻を算出する。あるいは、送信開始時刻算出部132は、所定の条件にしたがって、上記2つの方式を使い分けて、送信開始時刻を算出する構成であってもよい。
【0075】
中継装置100の後段に別の中継装置100’がある場合、すなわち、中継装置100が送信したフレーム510を受信して中継する中継装置100’がある場合において、中継装置100’の送信速度が、中継装置100の送信速度Sより速ければ、送信開始時刻よりも送信終了時刻のほうが重要である。このため、送信終了を優先する方式のほうが望ましい。
これに対し、中継装置100’の送信速度が、中継装置100の送信速度Sより遅ければ、送信開始時刻のほうが送信終了時刻よりも重要である。このため、送信開始を優先する方式のほうが望ましい。
【0076】
送信開始時刻算出部132が計算した余りmが0ではなく、整数kが1以上である場合、送信開始時刻算出部132は、処理装置911を用いて、計算した整数kに1を加えた整数[k+1]を計算する。送信開始時刻算出部132は、処理装置911を用いて、分割数を、計算した整数[k+1]に設定する。送信開始時刻算出部132は、処理装置911を用いて、[k+1]個のフレーム510のうち、いずれかのフレームの送信開始時刻までの待ち時間を、計算した余りmに設定する。送信開始時刻算出部132は、処理装置911を用いて、[k+1]個のフレーム510のうち、残りのk個のフレームの送信開始時刻までの待ち時間を「0」に設定する。
【0077】
なお、最初のフレーム510aに待ち時間を設けると、送信開始が遅れることになるので、待ち時間を設けるフレームは、二番目以降のフレームであることが望ましい。また、後段への影響を考慮すると、待ち時間を設けるフレームは、分割したフレームのうち真ん中付近にあることが望ましい。
例えば、送信開始時刻算出部132は、処理装置911を用いて、分割数[k+1]を2で割った商を超えない最大の整数iを算出する。送信開始時刻算出部132は、処理装置911を用いて、[i+1]番目のフレームに待ち時間を設ける。
【0078】
また、送信開始時刻算出部132は、1つのフレームに待ち時間を設けるのではなく、複数のフレームに待ち時間を設ける構成としてもよい。その場合、複数のフレームの待ち時間の合計が余りmと等しくなるようにする。
例えば、分割数[k+1]が4以上である場合、送信開始時刻算出部132は、処理装置911を用いて、分割数[k+1]から3を差し引いた差[k−2]を計算する。送信開始時刻算出部132は、処理装置911を用いて、計算した差[k−2]で、余りmを割った商[m/(k−2)]を計算する。送信開始時刻算出部132は、処理装置911を用いて、三番目のフレームからk番目(最後から二番目)のフレームまでの[k−2]個のフレームについて、送信開始時刻までの待ち時間を、計算した商[m/(k−2)]に設定する。
【0079】
送信データ長算出部131は、送信開始時刻算出部132が算出した分割数や、送信開始時刻に基づいて、各フレーム510のデータ長712を算出する。
【0080】
例えば、送信開始時刻算出部132が算出した分割数が「1」の場合、送信データ長算出部131は、処理装置911を用いて、最初の(そして唯一の)フレーム510aのデータ長712aを、フレーム510Aのデータ長712Aと等しい値に設定する。
【0081】
送信開始時刻算出部132が算出した分割数が2以上である場合、送信データ長算出部131は、処理装置911を用いて、各フレームについて、次の式を満たす値Lを計算する。
【数28】

ただし、iは、フレーム番号である。フレーム番号iは、最初のフレームを1とする。Twjは、送信開始時刻算出部132が算出したj番目のフレームの送信開始時刻までの待ち時間である。nは、送信開始時刻算出部132が算出した分割数である。
【0082】
送信データ長算出部131は、処理装置911を用いて、各フレームについて、データ長として許容される長さのうち、次の式を満たす最大の長さLpiを算出する。
【数29】

送信データ長算出部131は、処理装置911を用いて、各フレームのデータ長712を、算出した長さLpiに設定する。
【0083】
次に、受信速度Sより送信速度Sのほうが遅い場合および受信速度Sと送信速度Sとが等しい場合について説明する。
【0084】
図10は、この実施の形態における中継装置100が受信するフレーム510Aと、中継装置100が送信するフレーム510aとの関係を示すタイミング図である。
横軸は、時刻を示す。縦軸は、データの受信率または送信率を示す。破線751は、中継装置100が受信するデータの受信率を示す。実線752は、中継装置100が送信するデータの送信率を示す。
【0085】
時刻611において、受信装置915は、フレーム510Aの受信を開始する。
時刻612において、受信装置915は、フレーム510Aのヘッダ部分511Aの受信を終え、データ部分512Aの受信を開始する。送信ヘッダ生成部141は、中継装置100が送信するフレーム510aのヘッダ部分511aを生成する。送信装置916は、すぐに、フレーム510aの送信を開始する。
時刻613において、送信装置916は、フレーム510aのヘッダ部分511aの送信を終え、データ部分512aの送信を開始する。
時刻614において、受信装置915は、フレーム510Aのデータ部分512Aの受信を終え、フッタ部分513Aの受信を開始する。
時刻615において、送信装置916は、フレーム510aのデータ部分512aの送信を終え、フッタ部分513aの送信を開始する。
【0086】
このように、受信速度Sより送信速度Sのほうが遅い場合や、受信速度Sと送信速度Sとが等しい場合には、データの受信が間に合わなくなる心配はない。
【0087】
送信開始時刻算出部132は、処理装置911を用いて、分割数を「1」に設定する。送信開始時刻算出部132は、処理装置911を用いて、最初の(そして唯一の)フレーム510aの送信開始時刻までの待ち時間を「0」に設定する。送信データ長算出部131は、処理装置911を用いて、最初のフレーム510aのデータ長712aを、フレーム510Aのデータ長712Aと等しい値に設定する。
【0088】
次に、中継装置100と同様の中継装置100’が、中継装置100よりも前段にあり、中継装置100’が分割した複数のフレーム510を、中継装置100が中継する場合について説明する。
【0089】
まず、受信速度Sより送信速度Sのほうが速い場合について説明する。
【0090】
図11は、この実施の形態における中継装置100が受信するフレーム510A〜510Bと、中継装置100が送信するフレーム510a〜510cとの関係を示すタイミング図である。
横軸は、時刻を示す。縦軸は、データの受信率または送信率を示す。破線751は、中継装置100が受信するデータの受信率を示す。実線752は、中継装置100が送信するデータの送信率を示す。
【0091】
時刻611において、受信装置915は、中継装置100’が分割した2つのフレーム510A〜510Bのうち、最初のフレーム510Aの受信を開始する。
時刻612において、受信装置915は、フレーム510Aのヘッダ部分511Aの受信を終え、データ部分512Aの受信を開始する。受信ヘッダ取得部121が取得したヘッダ部分511Aを、受信データ長取得部122・後続データ長取得部123・後続遅延取得部124がそれぞれ解析する。受信データ長取得部122は、データ部分512Aのデータ長712Aを取得する。後続データ長取得部123・後続遅延取得部124は、分割数、後続するフレームのデータ長、遅延時間などを取得する。この例では、フレーム510Aが2つに分割されたフレームの最初のフレームなので、分割数は2である。後続データ長取得部123は、後続するフレーム510Bのデータ長712Bを取得する。後続遅延取得部124は、フレーム510Aの送信終了時刻からフレーム510Bの送信開始時刻までの遅延時間を取得する。
送信データ長算出部131は、受信速度S・送信速度S・受信データ長712A・分割数・後続データ長712B・遅延時間などに基づいて、送信するフレーム510a〜510cの数、各フレーム510a〜510cのデータ長712a〜712cなどを算出する。送信開始時刻算出部132は、受信速度S・送信速度S・受信データ長712A・分割数・後続データ長712B・遅延時間などに基づいて、各フレーム510a〜510cの送信開始時刻を算出する。
送信ヘッダ生成部141は、送信データ長算出部131が算出したデータ長712a〜712eと、送信開始時刻算出部132が算出した送信開始時刻とに基づいて、送信するフレーム510a〜510eのヘッダ部分511a〜511eを生成する。
この例では、送信開始時刻算出部132が算出した最初のフレーム510aの送信開始時刻までの待ち時間が「0」なので、送信装置916は、すぐに、最初のフレーム510aの送信を開始する。
【0092】
時刻613において、送信装置916は、フレーム510aのヘッダ部分511aの送信を終え、データ部分512aの送信を開始する。
時刻614において、送信装置916は、フレーム510aのデータ部分512aの送信を終え、フッタ部分513aの送信を開始する。
時刻615において、送信装置916は、フレーム510aの送信を終える。この例では、送信開始時刻算出部132が算出した二番目のフレーム510bの送信開始時刻までの待ち時間が「0」なので、送信装置916は、すぐに、二番目のフレーム510bの送信を開始する。
時刻616において、送信装置916は、フレーム510bのヘッダ部分511bの送信を終え、データ部分512bの送信を開始する。
時刻617において、受信装置915は、フレーム510Aの受信を終え、フレーム510Bの受信を開始する。
時刻618において、送信装置916は、フレーム510bのデータ部分512bの送信を終え、フッタ部分513bの送信を開始する。
時刻619において、送信装置916は、フレーム510bの送信を終える。この例では、送信開始時刻算出部132が算出した三番目のフレーム510cの送信開始時刻までの待ち時間が「0」ではないので、送信装置916は、待ち時間が経過するまで、三番目のフレーム510cの送信を開始しない。
時刻620において、待ち時間が経過したので、送信装置916は、フレーム510cの送信を開始する。
時刻621において、受信装置915は、フレーム510Bのヘッダ部分511Bの受信を終え、データ部分512Bの受信を開始する。
【0093】
後続データ長取得部123がフレーム510Aのヘッダ部分511Aを解析して、後続フレーム510Bのデータ長712Bを取得しているので、送信ヘッダ生成部141は、送信装置916がフレーム510Bのヘッダ部分511Bを受信し終わるよりも前に、フレーム510cのヘッダ部分511cを生成することができる。
【0094】
送信装置916が送信を開始できる最も早い時刻から、受信装置915が複数に分割されたフレームのデータ部分512を受信して、最初から合計した長さLのデータの受信を完了する時刻までの時間t(L)は、次の式で表される。
【数30】

ただし、iは、最初から合計した長さLのデータの末尾のデータが含まれるフレームの番号である。Twjは、受信装置915が受信する複数に分割されたフレームのうちj番目のフレームの送信開始時刻までの待ち時間である。iは、次の式を満たす。
【数31】

ただし、Lpjは、受信装置915が受信する複数に分割されたフレームのうちj番目のフレームのデータ長712である。
【0095】
したがって、受信時間t(L)と送信時間t(L)との差t(L)は、次の式で表される。
【数32】

【0096】
受信速度Sより送信速度Sのほうが速い場合、差t(L)が最も大きくなるのは、Lが最大のとき、すなわち、Lが、フレーム510Aのデータ長712Aと等しいときである。
【数33】

ただし、nは、受信装置915が受信する複数に分割されたフレームの分割数である。
【0097】
例えば、送信開始時刻算出部132は、処理装置911を用いて、数33の値max[t(L)]を計算する。
【0098】
送信開始時刻算出部132が計算した値max[t(L)]が0以下である場合、送信開始時刻算出部132は、処理装置911を用いて、分割数を「1」に設定する。送信開始時刻算出部132は、処理装置911を用いて、最初の(そして唯一の)フレーム510aの送信開始時刻までの待ち時間を「0」に設定する。
【0099】
送信開始時刻算出部132が計算した値max[t(L)]が0より大きい場合、送信開始時刻算出部132は、処理装置911を用いて、数25の値tを計算する。
送信開始時刻算出部132は、処理装置911を用いて、計算した値max[t(L)]と、計算した値tとに基づいて、値max[t(L)]を値tで割った商を超えない最大の整数kと、値max[t(L)]を値tで割った余りmとを計算する。
【0100】
送信開始時刻算出部132が計算した余りmが0である場合、送信開始時刻算出部132は、処理装置911を用いて、計算した整数kに1を加えた整数[k+1]を計算する。送信開始時刻算出部132は、処理装置911を用いて、分割数を、計算した整数[k+1]に設定する。送信開始時刻算出部132は、処理装置911を用いて、[k+1]個のフレーム510の送信開始時刻までの待ち時間を、すべて「0」に設定する。
【0101】
送信開始時刻算出部132が計算した余りmが0ではなく、整数kが0である場合、送信開始時刻の算出方式には、上述した場合と同様、送信開始を優先する方式と、送信終了を優先する方式との2種類がある。
【0102】
・送信開始を優先する方式
送信開始時刻算出部132は、処理装置911を用いて、分割数を「2」とする。送信開始時刻算出部132は、処理装置911を用いて、2つのフレーム510a,510bの送信開始時刻までの待ち時間を、ともに「0」に設定する。
【0103】
・送信終了を優先する方式
送信開始時刻算出部132は、処理装置911を用いて、分割数を「1」とする。送信開始時刻算出部132は、処理装置911を用いて、最初の(そして唯一の)フレーム510aの送信開始時刻までの待ち時間を、算出した余りmに設定する。
【0104】
送信開始時刻算出部132が計算した余りmが0ではなく、整数kが1以上である場合、送信開始時刻算出部132は、処理装置911を用いて、計算した整数kに1を加えた整数[k+1]を計算する。送信開始時刻算出部132は、処理装置911を用いて、分割数を、計算した整数[k+1]に設定する。送信開始時刻算出部132は、処理装置911を用いて、[k+1]個のフレーム510のうち、いずれかのフレームの送信開始時刻までの待ち時間を、計算した余りmに設定する。送信開始時刻算出部132は、処理装置911を用いて、[k+1]個のフレーム510のうち、残りのk個のフレームの送信開始時刻までの待ち時間を「0」に設定する。
例えば、送信開始時刻算出部132は、処理装置911を用いて、分割数[k+1]を2で割った商を超えない最大の整数iを算出する。送信開始時刻算出部132は、処理装置911を用いて、[i+1]番目のフレームに待ち時間を設ける。
なお、送信開始時刻算出部132は、1つのフレームに待ち時間を設けるのではなく、複数のフレームに待ち時間を設ける構成としてもよい。
【0105】
送信データ長算出部131は、送信開始時刻算出部132が算出した分割数や、送信開始時刻に基づいて、各フレーム510のデータ長712を算出する。
【0106】
例えば、送信開始時刻算出部132が算出した分割数が「1」の場合、送信データ長算出部131は、処理装置911を用いて、最初の(そして唯一の)フレーム510aのデータ長712aを、受信装置915が受信する複数の分割されたフレームのデータ長の合計と等しい値に設定する。
【0107】
送信開始時刻算出部132が算出した分割数が2以上である場合、送信データ長算出部131は、処理装置911を用いて、各フレームについて、次の式を満たす最も大きい値Lを計算する。
【数34】

ただし、iは、フレーム番号である。Twjは、送信開始時刻算出部132が算出したj番目のフレームの送信開始時刻までの待ち時間である。nは、送信開始時刻算出部132が算出した分割数である。
【0108】
送信データ長算出部131は、処理装置911を用いて、各フレームについて、データ長として許容される長さのうち、次の式を満たす最大の長さLpiを算出する。
【数35】

送信データ長算出部131は、処理装置911を用いて、各フレームのデータ長712を、算出した長さLpiに設定する。
【0109】
なお、送信データ長算出部131が算出した長さLpiが0であるフレームが存在する場合、送信データ長算出部131は、処理装置911を用いて、そのフレームを削除する。送信データ長算出部131は、処理装置911を用いて、分割数を1つ減らす。送信データ長算出部131は、処理装置911を用いて、削除したフレームの待ち時間と、送信開始時刻算出部132が計算した値tとの合計を計算する。送信データ長算出部131は、処理装置911を用いて、削除したフレームの次のフレームの送信開始時刻までの待ち時間に、計算した合計を加える。
【0110】
また、待ち時間を設けたフレームについて、もっと短い待ち時間で同じデータ長のフレームを構成できる場合、送信開始時刻算出部132は、処理装置911を用いて、そのフレームの送信開始時刻を早める。例えば、送信開始時刻算出部132は、処理装置911を用いて、送信データ長算出部131が算出したデータ長に基づいて、各フレームについて、同じデータ長のフレームを構成できる最小の待ち時間を算出する。そのフレームに設定した待ち時間よりも、算出した待ち時間のほうが短い場合、送信開始時刻算出部132は、処理装置911を用いて、そのフレームに設定した待ち時間と、算出した待ち時間との差を算出する。送信開始時刻算出部132は、処理装置911を用いて、そのフレームの待ち時間を、算出した待ち時間に設定する。送信開始時刻算出部132は、処理装置911を用いて、次のフレームの待ち時間と、算出した差との和を算出する。送信データ長算出部131は、処理装置911を用いて、次のフレームの待ち時間を、算出した和に設定する。
【0111】
次に、受信速度Sより送信速度Sのほうが遅い場合および受信速度Sと送信速度Sとが等しい場合について説明する。
【0112】
図12は、この実施の形態における中継装置100が受信するフレーム510A〜510Bと、中継装置100が送信するフレーム510a〜510cとの関係を示すタイミング図である。
横軸は、時刻を示す。縦軸は、データの受信率または送信率を示す。破線751は、中継装置100が受信するデータの受信率を示す。実線752は、中継装置100が送信するデータの送信率を示す。
【0113】
時刻611において、受信装置915は、フレーム510Aの受信を開始する。
時刻612において、受信装置915は、フレーム510Aのヘッダ部分511Aの受信を終え、データ部分512Aの受信を開始する。受信ヘッダ取得部121が取得したヘッダ部分511Aを、受信データ長取得部122・後続データ長取得部123・後続遅延取得部124がそれぞれ解析する。受信データ長取得部122は、データ部分512Aのデータ長712Aを取得する。後続データ長取得部123・後続遅延取得部124は、分割数、後続するフレームのデータ長、遅延時間などを取得する。この例では、フレーム510Aが5つに分割されたフレームの最初のフレームなので、分割数は5である。後続データ長取得部123は、後続するフレーム510B〜510Eのデータ長712B〜712Eを取得する。後続遅延取得部124は、フレーム510A〜510Dそれぞれの送信終了時刻からフレーム510B〜510Eそれぞれの送信開始時刻までの遅延時間を取得する。
送信データ長算出部131は、受信速度S・送信速度S・受信データ長712A・分割数・後続データ長712B・遅延時間などに基づいて、送信するフレーム510a〜510bの数、各フレーム510a〜510bのデータ長712a〜712bなどを算出する。送信開始時刻算出部132は、受信速度S・送信速度S・受信データ長712A・分割数・後続データ長712B・遅延時間などに基づいて、各フレーム510a〜510bの送信開始時刻を算出する。
送信ヘッダ生成部141は、送信データ長算出部131が算出したデータ長712a〜712bと、送信開始時刻算出部132が算出した送信開始時刻とに基づいて、送信するフレーム510a〜510bのヘッダ部分511a〜511bを生成する。
この例では、送信開始時刻算出部132が算出した最初のフレーム510aの送信開始時刻までの待ち時間が「0」なので、送信装置916は、すぐに、最初のフレーム510aの送信を開始する。
【0114】
時刻613において、受信装置915は、フレーム510Aのデータ部分512Aの受信を終え、フッタ部分513Aの受信を開始する。
時刻614において、送信装置916は、フレーム510aのヘッダ部分511aの送信を終え、データ部分512aの送信を開始する。
時刻615において、受信装置915は、フレーム510Bのヘッダ部分511Bの受信を終え、データ部分512Bの受信を開始する。この時点において、送信装置916は、まだ、受信装置915が受信したフレーム510Aのデータ部分512Aにあったデータの送信を終えていない。
時刻616において、受信装置915は、フレーム510Bのデータ部分512Bの受信を終え、フッタ部分513Bの受信を開始する。
時刻617において、送信装置916は、フレーム510aのデータ部分512aの送信を終え、フッタ部分513aの送信を開始する。この時点において、送信装置916は、受信装置915が受信を終えているデータをすべて送信し終えている。
時刻618において、送信装置916は、フレーム510aのフッタ部分513aの送信を終える。この例では、送信開始時刻算出部132が算出した最初のフレーム510aの送信開始時刻までの待ち時間が「0」ではないので、送信装置916は、待ち時間が経過するまで、次のフレーム510bの送信を開始しない。
時刻619において、受信装置915は、フレーム510Cのヘッダ部分511Cの受信を終え、データ部分512Cの受信を開始する。
時刻620において、待ち時間が経過したので、送信装置916は、二番目のフレーム510bの送信を開始する。
時刻621において、送信装置916は、フレーム510bのヘッダ部分511bの送信を終え、データ部分512bの送信を開始する。
時刻622において、受信装置915は、フレーム510Cのデータ部分512Cの受信を終え、フッタ部分513Cの受信を開始する。
時刻623において、受信装置915は、フレーム510Dのヘッダ部分511Dの受信を終え、データ部分512Dの受信を開始する。
時刻624において、受信装置915は、フレーム510Dのデータ部分512Dの受信を終え、フッタ部分513Dの受信を開始する。
時刻625において、受信装置915は、フレーム510Eのヘッダ部分511Eの受信を終え、データ部分512Eの受信を開始する。この時点において、送信装置916は、受信装置915が受信したフレーム510Dのデータ部分512Dにあったデータの送信をちょうど終えたところである。送信装置916は、そのまま続けて、受信装置915が受信したフレーム510Eのデータ部分512Eのデータを送信する。
時刻626において、受信装置915は、フレーム510Eのデータ部分512Eの受信を終え、フッタ部分513Eの受信を開始する。
時刻627において、送信装置916は、フレーム510bのデータ部分512bの送信を終え、フッタ部分513bの送信を開始する。
【0115】
このように、受信速度Sよりも送信速度Sのほうが遅い場合は、データの受信が完了する時刻よりも、データの受信を開始する時刻のほうが重要となる。
【0116】
送信装置916が送信を開始できる最も早い時刻から、受信装置915が複数に分割されたフレームのデータ部分512を受信して、最初から合計した長さLのデータの受信を完了し、次のデータの受信を開始する時刻までの時間tr*(L)は、次の式で表される。
【数36】

ただし、iは、最初から合計した長さLのデータの次のデータが含まれるフレームの番号である。iは、次の式を満たす。
【数37】

【0117】
数36の右辺は、数30の右辺と同じであるが、iの定義が異なる。数37と数31とを比較すると、等号が成立する場合のみ、iの値が異なる。
【0118】
受信時間tr*(L)と送信時間t(L)との差t(L)は、次の式で表される。
【数38】

数36と同様、この式の右辺は、数32の右辺と同じであるが、iの定義が異なる。
【0119】
受信速度Sよりも送信速度Sのほうが遅い場合、差t(L)が最も大きくなる可能性があるのは、数37の等号が成立する場合である。すなわち、
【数39】

ただし、iは、1以上m以下の整数である。mは、受信装置915が受信する複数に分割されたフレームの分割数である。この式の右辺は、受信装置915が受信する複数に分割されたフレームのうち、最初のフレームから[i−1]番目のフレームまでのデータ長の合計を表わす。
【0120】
例えば、送信開始時刻算出部132は、処理装置911を用いて、1以上m以下のm個の整数iそれぞれについて、数39の値Lを計算する。送信開始時刻算出部132は、算出したm個の値Lのなかで最も大きい値を、値max[t(L)]とする。
【数40】

【0121】
送信開始時刻算出部132が計算した値max[t(L)]が0以下である場合、送信開始時刻算出部132は、処理装置911を用いて、分割数を「1」とする。送信開始時刻算出部132は、処理装置911を用いて、最初の(そして唯一の)フレーム510aの送信開始時刻までの待ち時間を「0」に設定する。
【0122】
送信開始時刻算出部132が計算した値max[t(L)]が0より大きい場合、送信開始時刻算出部132は、処理装置911を用いて、数25の値tを計算する。
送信開始時刻算出部132は、処理装置911を用いて、計算した値max[t(L)]と、計算した値tとに基づいて、値max[t(L)]を値tで割った商を超えない最大の整数kと、値max[t(L)]を値tで割った余りmとを計算する。
【0123】
送信開始時刻算出部132が計算した余りmが0である場合、送信開始時刻算出部132は、処理装置911を用いて、計算した整数kに1を加えた整数[k+1]を計算する。送信開始時刻算出部132は、処理装置911を用いて、分割数を、計算した整数[k+1]に設定する。送信開始時刻算出部132は、処理装置911を用いて、[k+1]個のフレーム510の送信開始時刻までの待ち時間を、すべて「0」に設定する。
【0124】
送信開始時刻算出部132が計算した余りmが0ではなく、整数kが0である場合、送信開始時刻の算出方式には、上述した場合と同様、送信開始を優先する方式と、送信終了を優先する方式との2種類がある。
【0125】
・送信開始を優先する方式
送信開始時刻算出部132は、処理装置911を用いて、分割数を「2」とする。送信開始時刻算出部132は、処理装置911を用いて、2つのフレーム510a,510bの送信開始時刻までの待ち時間を、ともに「0」に設定する。
【0126】
・送信終了を優先する方式
送信開始時刻算出部132は、処理装置911を用いて、分割数を「1」とする。送信開始時刻算出部132は、処理装置911を用いて、最初の(そして唯一の)フレーム510aの送信開始時刻までの待ち時間を、算出した余りmに設定する。
【0127】
送信開始時刻算出部132が計算した余りmが0ではなく、整数kが1以上である場合、送信開始時刻算出部132は、処理装置911を用いて、計算した整数kに1を加えた整数[k+1]を計算する。送信開始時刻算出部132は、処理装置911を用いて、分割数を、計算した整数[k+1]に設定する。送信開始時刻算出部132は、処理装置911を用いて、[k+1]個のフレーム510のうち、いずれかのフレームの送信開始時刻までの待ち時間を、計算した余りmに設定する。送信開始時刻算出部132は、処理装置911を用いて、[k+1]個のフレーム510のうち、残りのk個のフレームの送信開始時刻までの待ち時間を「0」に設定する。
例えば、送信開始時刻算出部132は、処理装置911を用いて、分割数[k+1]を2で割った商を超えない最大の整数iを算出する。送信開始時刻算出部132は、処理装置911を用いて、[i+1]番目のフレームに待ち時間を設ける。
なお、送信開始時刻算出部132は、1つのフレームに待ち時間を設けるのではなく、複数のフレームに待ち時間を設ける構成としてもよい。
【0128】
送信データ長算出部131は、送信開始時刻算出部132が算出した分割数や、送信開始時刻に基づいて、各フレーム510のデータ長712を算出する。
【0129】
例えば、送信開始時刻算出部132が算出した分割数が「1」の場合、送信データ長算出部131は、処理装置911を用いて、最初の(そして唯一の)フレーム510aのデータ長712aを、受信装置915が受信する複数に分割されたフレームのデータ長の合計と等しい値に設定する。
【0130】
送信開始時刻算出部132が算出した分割数が2以上である場合、送信データ長算出部131は、処理装置911を用いて、各フレームについて、次の式を満たす最も小さい値Lを計算する。
【数41】

ただし、iは、フレーム番号である。Twjは、送信開始時刻算出部132が算出したj番目のフレームの送信開始時刻までの待ち時間である。nは、送信開始時刻算出部132が算出した分割数である。
【0131】
送信データ長算出部131は、処理装置911を用いて、各フレームについて、データ長として許容される長さのうち、次の式を満たす最大の長さLpiを算出する。
【数42】

送信データ長算出部131は、処理装置911を用いて、各フレームのデータ長712を、算出した長さLpiに設定する。
【0132】
なお、送信データ長算出部131が算出した長さLpiが0であるフレームが存在する場合、送信データ長算出部131は、処理装置911を用いて、そのフレームを削除する。送信データ長算出部131は、処理装置911を用いて、分割数を1つ減らす。送信データ長算出部131は、処理装置911を用いて、削除したフレームの待ち時間と、送信開始時刻算出部132が計算した値tとの合計を計算する。送信データ長算出部131は、処理装置911を用いて、削除したフレームの次のフレームの送信開始時刻までの待ち時間に、計算した合計を加える。
【0133】
また、待ち時間を設けたフレームについて、もっと短い待ち時間で同じデータ長のフレームを構成できる場合、送信開始時刻算出部132は、処理装置911を用いて、そのフレームの送信開始時刻を早める。例えば、送信開始時刻算出部132は、処理装置911を用いて、送信データ長算出部131が算出したデータ長に基づいて、各フレームについて、同じデータ長のフレームを構成できる最小の待ち時間を算出する。そのフレームに設定した待ち時間よりも、算出した待ち時間のほうが短い場合、送信開始時刻算出部132は、処理装置911を用いて、そのフレームに設定した待ち時間と、算出した待ち時間との差を算出する。送信開始時刻算出部132は、処理装置911を用いて、そのフレームの待ち時間を、算出した待ち時間に設定する。送信開始時刻算出部132は、処理装置911を用いて、次のフレームの待ち時間と、算出した差との和を算出する。送信データ長算出部131は、処理装置911を用いて、次のフレームの待ち時間を、算出した和に設定する。
【0134】
図13は、この実施の形態におけるヘッダ生成処理S300の流れの一例を示すフローチャート図である。
ヘッダ生成処理S300において、中継装置100は、送信するフレーム510のヘッダ部分511を生成する。
ヘッダ生成処理S300は、受信ヘッダ取得工程S301と、受信データ長取得工程S302と、分割数取得工程S303と、後続フレーム選択工程S304と、後続データ長取得工程S305と、後続遅延取得工程S306と、送信開始時刻算出処理S307と、送信データ長算出処理S308と、送信開始時刻最適化処理S309と、先頭ヘッダ生成工程S310と、送信フレーム選択工程S311と、後続ヘッダ生成工程S312とを有する。
【0135】
受信ヘッダ取得工程S301において、受信ヘッダ取得部121は、処理装置911を用いて、受信装置915が受信したデータから、受信するフレーム510Aのヘッダ部分511Aを取得する。
受信データ長取得工程S302において、受信データ長取得部122は、処理装置911を用いて、受信ヘッダ取得工程S301で受信ヘッダ取得部121が取得したヘッダ部分511Aを解析して、フレーム510Aのデータ長712Aを取得する。
分割数取得工程S303において、後続データ長取得部123は、処理装置911を用いて、受信ヘッダ取得工程S301で受信ヘッダ取得部121が取得したヘッダ部分511Aを解析して、ヘッダ部分511Aが複数に分割されたフレームの先頭フレームであるか否か、先頭フレームである場合には、複数に分割されたフレーム全体の数(分割数)を取得する。
【0136】
後続フレーム選択工程S304において、受信データ長取得部122は、処理装置911を用いて、受信する複数に分割されたフレームのなかから、次のフレームを選択する。
フレーム510Aが複数に分割されたフレームでない場合や、複数に分割されたフレームの最後のフレームまで処理が終わった場合は、受信データ長取得部122は、処理装置911を用いて、送信開始時刻算出処理S307へ処理を進める。
フレーム510Aが複数に分割されたフレームであり、まだ処理していない後続フレームがある場合、受信データ長取得部122は、処理装置911を用いて、次のフレームを選択し、後続データ長取得工程S305へ処理を進める。
【0137】
後続データ長取得工程S305において、後続データ長取得部123は、処理装置911を用いて、受信ヘッダ取得工程S301で受信ヘッダ取得部121が取得したヘッダ部分511Aを解析して、後続フレーム選択工程S304で選択したフレームのデータ長712を取得する。
【0138】
後続遅延取得工程S306において、後続遅延取得部124は、処理装置911を用いて、受信ヘッダ取得工程S301で受信ヘッダ取得部121が取得したヘッダ部分511Aを解析して、後続フレーム選択工程S304で後続データ長取得部123が選択したフレームの遅延時間を取得する。
後続遅延取得部124は、処理装置911を用いて、後続フレーム選択工程S304に処理を戻し、次のフレームを選択する。
【0139】
送信開始時刻算出処理S307において、送信開始時刻算出部132は、処理装置911を用いて、送信するフレームの分割数nと、各フレームの送信開始時刻までの待ち時間Twi(iは、1以上n以下の整数。)とを算出する。
【0140】
送信データ長算出処理S308において、送信データ長算出部131は、処理装置911を用いて、送信するフレームのデータ長Lpiを算出する。
【0141】
送信開始時刻最適化処理S309において、送信開始時刻算出部132は、処理装置911を用いて、送信開始時刻算出処理S307で算出した各フレームの送信開始時刻までの待ち時間Twiを最適化して、できるだけ小さくする。
【0142】
先頭ヘッダ生成工程S310において、送信ヘッダ生成部141は、処理装置911を用いて、送信するフレームのうち、先頭のフレーム510aのヘッダ部分511aを生成する。送信ヘッダ生成部141が生成するヘッダ部分511aは、フレーム510aのデータ長、分割数n、後続フレームのデータ長、後続フレームの遅延時間を表わすデータを含む。送信ヘッダ生成部141は、処理装置911を用いて、フレーム510aのデータ長や後続フレームのデータ長に、送信データ長算出処理S308で送信データ長算出部131が算出したデータ長Lpiを設定する。送信ヘッダ生成部141は、処理装置911を用いて、後続フレームの遅延時間に、送信開始時刻最適化処理S309で送信開始時刻算出部132が最適化した送信開始時刻までの待ち時間Twiを設定する。
【0143】
送信フレーム選択工程S311において、送信ヘッダ生成部141は、処理装置911を用いて、送信する複数に分割したフレームのなかから、次のフレームを選択する。
送信するフレームの分割数が1である場合や、複数に分割したフレームの最後のフレームまで処理が終わった場合は、送信ヘッダ生成部141は、処理装置911を用いて、ヘッダ生成処理S300を終了する。
送信するフレームの分割数が2以上であり、まだ処理していないフレームがある場合、送信ヘッダ生成部141は、処理装置911を用いて次のフレームを選択し、後続ヘッダ生成工程S312へ処理を進める。
【0144】
後続ヘッダ生成工程S312において、送信ヘッダ生成部141は、処理装置911を用いて、送信フレーム選択工程S311で選択したフレームのヘッダ部分511を生成する。後続するフレームのヘッダ部分511は、そのフレームのデータ長を表わすデータを含む。送信ヘッダ生成部141は、処理装置911を用いて、そのフレームのデータ長に、送信データ長算出処理S308で送信データ長算出部131が算出したデータ長Lpiを設定する。
送信ヘッダ生成部141は、処理装置911を用いて、送信フレーム選択工程S311に処理を戻す。
【0145】
図14は、この実施の形態における送信開始時刻算出処理S307の流れの一例を示すフローチャート図である。
送信開始時刻算出処理S307は、最大待ち時間算出工程S401と、非分割設定工程S402と、分割数見積もり工程S403と、優先判定工程S404と、開始優先設定工程S405と、終了優先設定工程S406と、分割設定工程S407とを有する。
【0146】
最大待ち時間算出工程S401において、送信開始時刻算出部132は、処理装置911を用いて、最大待ち時間tmaxを算出する。最大待ち時間tmaxは、上述したt(L)の最大値またはt(L)の最大値である。
算出した最大待ち時間tmaxが0以下である場合、送信開始時刻算出部132は、処理装置911を用いて、非分割設定工程S402へ処理を進める。
算出した最大待ち時間tmaxが0より大きい場合、送信開始時刻算出部132は、処理装置911を用いて、分割数見積もり工程S403へ処理を進める。
【0147】
非分割設定工程S402において、送信開始時刻算出部132は、処理装置911を用いて、受信するフレームを分割せず、1つのフレームとして送信する(受信するフレームが複数に分割されたフレームである場合には、1つのフレームに結合して送信する)と判定し、分割数や待ち時間を設定する。
送信開始時刻算出部132は、処理装置911を用いて、送信開始時刻算出処理S307を終了する。
【0148】
分割数見積もり工程S403において、送信開始時刻算出部132は、処理装置911を用いて、最大待ち時間算出工程S401で算出した最大待ち時間tmaxに基づいて、整数kと余りmとを算出する。
算出した整数kが0である場合、送信開始時刻算出部132は、処理装置911を用いて、優先判定工程S404へ処理を進める。
算出した整数kが1以上である場合、送信開始時刻算出部132は、処理装置911を用いて、分割設定工程S407へ処理を進める。
【0149】
優先判定工程S404において、送信開始時刻算出部132は、処理装置911を用いて、送信開始時刻を優先するか、送信終了時刻を優先するかを判定する。
送信開始時刻を優先すると判定した場合、送信開始時刻算出部132は、処理装置911を用いて、開始優先設定工程S405へ処理を進める。
送信終了時刻を優先すると判定した場合、送信開始時刻算出部132は、処理装置911を用いて、終了優先設定工程S406へ処理を進める。
【0150】
開始優先設定工程S405において、送信開始時刻算出部132は、処理装置911を用いて、受信する1つまたは複数のフレームを、2つのフレームに組み換えて送信すると判定し、分割数や待ち時間を設定する。
送信開始時刻算出部132は、処理装置911を用いて、送信開始時刻算出処理S307を終了する。
【0151】
終了優先設定工程S406において、送信開始時刻算出部132は、処理装置911を用いて、受信する1つまたは複数のフレームを、1つのフレームとして送信すると判定し、分割数や待ち時間を設定する。
送信開始時刻算出部132は、処理装置911を用いて、送信開始時刻算出処理S307を終了する。
【0152】
分割設定工程S407において、送信開始時刻算出部132は、処理装置911を用いて、受信する1つまたは複数のフレームを、2つ以上のフレームに組み換えて送信すると判定し、分割数や待ち時間を設定する。
送信開始時刻算出部132は、処理装置911を用いて、送信開始時刻算出処理S307を終了する。
【0153】
図15は、この実施の形態における最大待ち時間算出工程S401の流れの一例を示すフローチャート図である。
最大待ち時間算出工程S401は、係数算出工程S411と、追加算出工程S412と、第一選択工程S413と、開始算出工程S414と、受信長算出工程S415と、終了算出工程S416と、最大設定工程S417と、受信選択工程S418と、開始算出工程S419と、受信長算出工程S420と、終了算出工程S421と、最大比較工程S422と、最大更新工程S423と、最大比較工程S424と、最大更新工程S425とを有する。
【0154】
係数算出工程S411において、送信開始時刻算出部132は、処理装置911を用いて、係数aを算出する。係数aは、データの長さを送受信時間差に換算するための係数である。係数aは、受信速度Sの逆数から、送信速度Sの逆数を差し引いた差である。受信速度Sより送信速度Sのほうが速ければ、係数aは正になる。逆に、受信速度Sより送信速度Sのほうが遅ければ、係数aは負になる。
例えば、送信開始時刻算出部132は、処理装置911を用いて、1を受信速度Sで割った商を算出する。送信開始時刻算出部132は、処理装置911を用いて、1を送信速度Sで割った商を算出する。送信開始時刻算出部132は、処理装置911を用いて、1を受信速度Sで割った商から、1を送信速度Sで割った商を差し引いた差を算出する。送信開始時刻算出部132は、記憶装置914を用いて、算出した差を、係数aとして記憶する。
【0155】
追加算出工程S412において、送信開始時刻算出部132は、処理装置911を用いて、追加受信時間tを算出する。追加受信時間tは、フレームが1回分割されるたびに必要となるヘッダ部分511およびフッタ部分513を受信するのにかかる時間である。追加受信時間tは、ヘッダ長711とフッタ長713との合計を、受信速度Sで割った商である。
例えば、送信開始時刻算出部132は、処理装置911を用いて、ヘッダ長711とフッタ長713との和を算出する。送信開始時刻算出部132は、処理装置911を用いて、ヘッダ長711とフッタ長713との和を、受信速度Sで割った商を算出する。送信開始時刻算出部132は、記憶装置914を用いて、算出した商を、追加受信時間tとして記憶する。
【0156】
第一選択工程S413において、送信開始時刻算出部132は、処理装置911を用いて、受信する1または複数のフレームのなかから、最初のフレームを選択する。
例えば、送信開始時刻算出部132は、記憶装置914を用いて、選択受信フレーム番号iとsて、1を記憶する。選択受信フレーム番号iは、選択するフレームの番号である。
【0157】
開始算出工程S414において、送信開始時刻算出部132は、処理装置911を用いて、受信する最初のフレームについて、開始時間差tを算出する。開始時間差tは、i番目のフレームのデータ部分512の受信開始時におけるt(L)である。最初のフレームの受信開始時にはL=0なので、開始時間差tは、ヘッダ長711を送信速度Sで割った商の符号を反転した値である。
例えば、送信開始時刻算出部132は、処理装置911を用いて、ヘッダ長711を送信速度Sで割った商を算出する。送信開始時刻算出部132は、処理装置911を用いて、ヘッダ長711を送信速度Sで割った商に−1を乗じた積を算出する。送信開始時刻算出部132は、記憶装置914を用いて、算出した積を、最初のフレームの開始時間差tとして記憶する。
【0158】
受信長算出工程S415において、送信開始時刻算出部132は、処理装置911を用いて、受信する最初のフレームについて、累計受信データ長Lを算出する。累計受信データ長Lは、複数に分割されたフレームのうち、最初のフレームからi番目のフレームまでのデータ長712の合計である。したがって、最初のフレームの累計受信データ長Lは、最初のフレームのデータ長Lp1と等しい。
例えば、送信開始時刻算出部132は、記憶装置914を用いて、最初のフレームの累計受信データ長Lとして、最初のフレームのデータ長Lp1を記憶する。
【0159】
終了算出工程S416において、送信開始時刻算出部132は、処理装置911を用いて、受信する最初のフレームについて、終了時間差tを算出する。終了時間差tは、i番目のフレームのデータ部分512の受信終了時におけるt(L)である。終了時間差tは、そのフレームのデータ長Lpiと、係数aとの積を、そのフレームの開始時間差tに加えた値である。
例えば、送信開始時刻算出部132は、処理装置911を用いて、最初のフレームのデータ長Lp1と、係数算出工程S411で算出した係数aとの積を算出する。送信開始時刻算出部132は、処理装置911を用いて、算出した積と、開始算出工程S414で算出した開始時間差tとの和を算出する。送信開始時刻算出部132は、記憶装置914を用いて、算出した和を、最初のフレームについての終了時間差tとして記憶する。
【0160】
最大設定工程S417において、送信開始時刻算出部132は、記憶装置914を用いて、最大待ち時間tmaxとして、暫定的に0を記憶する。
【0161】
受信選択工程S418において、送信開始時刻算出部132は、処理装置911を用いて、受信する1または複数のフレームのなかから、次のフレームを選択する。
例えば、送信開始時刻算出部132は、処理装置911を用いて、選択受信フレーム番号iに1を加える。送信開始時刻算出部132は、記憶装置914を用いて、記憶した選択受信フレーム番号iを更新し、1を加えた選択受信フレーム番号iを、新しい選択受信フレーム番号iとして記憶する。
次のフレームが存在しない場合、すなわち、選択受信フレーム番号iが、受信するフレームの分割数nより大きい場合、送信開始時刻算出部132は、処理装置911を用いて、最大比較工程S424へ処理を進める。
次のフレームが存在する場合、すなわち、選択受信フレーム番号iが、受信するフレームの分割数n以下である場合、送信開始時刻算出部132は、処理装置911を用いて、開始算出工程S419へ処理を進める。
【0162】
開始算出工程S419において、送信開始時刻算出部132は、処理装置911を用いて、受信選択工程S418で選択したi番目のフレームについて、開始時間差tを算出する。i番目のフレームの開始時間差tは、前のフレームの終了時間差tに、追加受信時間tを加え、更に、そのフレームの送信開始時刻までの待ち時間Twiを加えた値である。
例えば、送信開始時刻算出部132は、処理装置911を用いて、終了算出工程S416またはS421で算出した[i−1」番目のフレームの終了時間差tと、追加算出工程S412で算出した追加受信時間tと、i番目のフレームの送信開始時刻までの待ち時間Twiとの合計を算出する。送信開始時刻算出部132は、記憶装置914を用いて、算出した合計を、i番目のフレームの開始時間差tとして記憶する。
【0163】
受信長算出工程S420において、送信開始時刻算出部132は、処理装置911を用いて、受信選択工程S418で選択したi番目のフレームについて、累計受信データ長Lを算出する。i番目のフレームの累計受信データ長Lは、前のフレームの累計受信データ長Li−1に、そのフレームのデータ長Lpiを加えた値である。
例えば、送信開始時刻算出部132は、処理装置911を用いて、受信長算出工程S415またはS420で算出した[i−1]番目のフレームの累計受信データ長Li−1と、i番目のフレームのデータ長Lpiとの合計を算出する。送信開始時刻算出部132は、記憶装置914を用いて、算出した合計を、i番目のフレームの累計受信データ長Lとして記憶する。
【0164】
終了算出工程S421において、送信開始時刻算出部132は、処理装置911を用いて、受信選択工程S418で選択したi番目のフレームについて、終了時間差tを算出する。i番目のフレームの終了時間差tは、そのフレームのデータ長Lpiと、係数aとの積を、そのフレームの開始時間差tに加えた値である。
例えば、送信開始時刻算出部132は、処理装置911を用いて、i番目のフレームのデータ長Lpiと、係数算出工程S411で算出した係数aとの積を算出する。送信開始時刻算出部132は、処理装置911を用いて、算出した積と、開始算出工程S419で算出したi番目のフレームの開始時間差tとの和を算出する。送信開始時刻算出部132は、記憶装置914を用いて、算出した和を、i番目のフレームの終了時間差tとして記憶する。
【0165】
最大比較工程S422において、送信開始時刻算出部132は、処理装置911を用いて、記憶した最大待ち時間tmaxと、開始算出工程S419で算出したi番目のフレームの開始時間差tとを比較する。
最大待ち時間tmaxが、i番目のフレームの開始時間差t以上である場合、送信開始時刻算出部132は、処理装置911を用いて、受信選択工程S418に処理を戻し、次のフレームを選択する。
最大待ち時間tmaxが、i番目のフレームの開始時間差tより小さい場合、送信開始時刻算出部132は、処理装置911を用いて、最大更新工程S423へ処理を進める。
【0166】
最大更新工程S423において、送信開始時刻算出部132は、記憶装置914を用いて、記憶した最大待ち時間tmaxを更新し、開始算出工程S419で算出したi番目のフレームの開始時間差tを、新しい最大待ち時間tmaxとして記憶する。
送信開始時刻算出部132は、処理装置911を用いて、受信選択工程S418に処理を戻し、次のフレームを選択する。
【0167】
最大比較工程S424において、送信開始時刻算出部132は、処理装置911を用いて、記憶した最大待ち時間tmaxと、終了算出工程S416またはS421で算出した最後のフレームの終了時間差tnrとを比較する。
最大待ち時間tmaxが、最後のフレームの終了時間差tnr以上である場合、送信開始時刻算出部132は、処理装置911を用いて、最大待ち時間算出工程S401を終了する。
最大待ち時間tmaxが、最後のフレームの終了時間差tnrより小さい場合、送信開始時刻算出部132は、処理装置911を用いて、最大更新工程S425へ処理を進める。
【0168】
最大更新工程S425において、送信開始時刻算出部132は、記憶装置914を用いて、記憶した最大待ち時間tmaxを更新し、最後のフレームの終了時間差tnrを、新しい最大待ち時間tmaxとして記憶する。
送信開始時刻算出部132は、処理装置911を用いて、最大待ち時間算出工程S401を終了する。
【0169】
図16は、この実施の形態における非分割設定工程S402の流れの一例を示すフローチャート図である。
非分割設定工程S402は、分割数設定工程S431と、待ち時間設定工程S432とを有する。
【0170】
分割数設定工程S431において、送信開始時刻算出部132は、記憶装置914を用いて、送信するフレームの分割数nとして、1を記憶する。
待ち時間設定工程S432において、送信開始時刻算出部132は、記憶装置914を用いて、送信する最初のフレームの送信開始時刻までの待ち時間Tw1として、0を記憶する。
送信開始時刻算出部132は、処理装置911を用いて、非分割設定工程S402を終了する。
【0171】
図17は、この実施の形態における分割数見積もり工程S403の流れの一例を示すフローチャート図である。
分割数見積もり工程S403は、追加算出工程S436と、整数算出工程S437と、余り算出工程S438とを有する。
【0172】
追加算出工程S436において、送信開始時刻算出部132は、処理装置911を用いて、追加送信時間tを算出する。追加送信時間tは、フレームを1回分割するたびに必要となるヘッダ部分511およびフッタ部分513を送信するのにかかる時間である。追加送信時間tは、ヘッダ長711とフッタ長713との合計を、送信速度Sで割った商である。
例えば、送信開始時刻算出部132は、処理装置911を用いて、ヘッダ長711とフッタ長713との和を算出する。送信開始時刻算出部132は、処理装置911を用いて、ヘッダ長711とフッタ長713との和を、送信速度Sで割った商を算出する。送信開始時刻算出部132は、記憶装置914を用いて、算出した商を、追加送信時間tとして記憶する。
【0173】
整数算出工程S437において、送信開始時刻算出部132は、処理装置911を用いて、整数kを算出する。整数kは、最大待ち時間tmaxを追加送信時間tで割った商を超えない最大の整数である。
例えば、送信開始時刻算出部132は、処理装置911を用いて、最大待ち時間算出工程S401で算出した最大待ち時間tmaxを、追加算出工程S436で算出した追加送信時間tで割った商を算出する。送信開始時刻算出部132は、処理装置911を用いて、算出した商の小数部分を切り捨てて、整数にする。送信開始時刻算出部132は、記憶装置914を用いて、小数部分を切り捨てて整数にした商を、整数kとして記憶する。
【0174】
余り算出工程S438において、送信開始時刻算出部132は、処理装置911を用いて、余りmを算出する。余りmは、最大待ち時間tmaxを追加送信時間tで割った余りである。
例えば、送信開始時刻算出部132は、処理装置911を用いて、整数算出工程S437で算出した整数kと、追加算出工程S436で算出した追加送信時間tとの積を算出する。送信開始時刻算出部132は、処理装置911を用いて、最大待ち時間算出工程S401で算出した最大待ち時間tmaxから、算出した積を差し引いた差を算出する。送信開始時刻算出部132は、記憶装置914を用いて、算出した差を、余りmとして記憶する。
送信開始時刻算出部132は、処理装置911を用いて、分割数見積もり工程S403を終了する。
【0175】
図18は、この実施の形態における開始優先設定工程S405の流れの一例を示すフローチャート図である。
開始優先設定工程S405は、分割数設定工程S441と、待ち時間設定工程S442とを有する。
【0176】
分割数設定工程S441において、送信開始時刻算出部132は、記憶装置914を用いて、分割数nとして、2を記憶する。
待ち時間設定工程S442において、送信開始時刻算出部132は、記憶装置914を用いて、最初のフレームの送信開始時刻までの待ち時間Tw1として、0を記憶する。送信開始時刻算出部132は、記憶装置914を用いて、二番目のフレームの送信開始時刻までの待ち時間Tw2として、0を記憶する。
送信開始時刻算出部132は、処理装置911を用いて、開始優先設定工程S405を終了する。
【0177】
図19は、この実施の形態における終了優先設定工程S406の流れの一例を示すフローチャート図である。
終了優先設定工程S406は、分割数設定工程S446と、待ち時間設定工程S447とを有する。
【0178】
分割数設定工程S446において、送信開始時刻算出部132は、記憶装置914を用いて、分割数nとして、1を記憶する。
待ち時間設定工程S447において、送信開始時刻算出部132は、記憶装置914を用いて、最初のフレームの送信開始時刻までの待ち時間Tw1として、分割数見積もり工程S403で算出した余りmを記憶する。
送信開始時刻算出部132は、処理装置911を用いて、終了優先設定工程S406を終了する。
【0179】
図20は、この実施の形態における分割設定工程S407の流れの一例を示すフローチャート図である。
分割設定工程S407は、分割数設定工程S451と、第一選択工程S452と、待ち時間設定工程S453と、送信選択工程S454と、余り判定工程S455と、待ちフレーム選択工程S456と、待ち時間設定工程S457とを有する。
【0180】
分割数設定工程S451において、送信開始時刻算出部132は、処理装置911を用いて、分割数見積もり工程S403で算出した整数kに1を加えた和を算出する。送信開始時刻算出部132は、記憶装置914を用いて、算出した和を、分割数nとして記憶する。
【0181】
第一選択工程S452において、送信開始時刻算出部132は、処理装置911を用いて、送信するn個のフレームのなかから、最初のフレームを選択する。
例えば、送信開始時刻算出部132は、記憶装置914を用いて、選択送信フレーム番号iとして、1を記憶する。
【0182】
待ち時間設定工程S453において、送信開始時刻算出部132は、記憶装置914を用いて、第一選択工程S452または送信選択工程S454で選択したi番目のフレームの送信開始時刻までの待ち時間Twiとして、0を記憶する。
【0183】
送信選択工程S454において、送信開始時刻算出部132は、処理装置911を用いて、送信するn個のフレームのなかから、次のフレームを選択する。
例えば、送信開始時刻算出部132は、処理装置911を用いて、選択送信フレーム番号iに1を加える。送信開始時刻算出部132は、記憶装置914を用いて、記憶した選択送信フレーム番号iを更新し、1を加えた選択送信フレーム番号を、新しい選択送信フレーム番号iとして記憶する。
次のフレームが存在しない場合、すなわち、選択送信フレーム番号iが、分割数設定工程S451で算出した分割数nより大きい場合、送信開始時刻算出部132は、処理装置911を用いて、余り判定工程S455へ処理を進める。
次のフレームが存在する場合、すなわち、選択送信フレーム番号iが、分割数設定工程S451で算出した分割数n以下である場合、送信開始時刻算出部132は、処理装置911を用いて、待ち時間設定工程S453に処理を戻し、次のフレームの待ち時間を算出する。
【0184】
余り判定工程S455において、送信開始時刻算出部132は、処理装置911を用いて、分割数見積もり工程S403で算出した余りmと、0とを比較する。
余りmが0である場合、送信開始時刻算出部132は、処理装置911を用いて、分割設定工程S407を終了する。
余りmが0より大きい場合、送信開始時刻算出部132は、処理装置911を用いて、待ちフレーム選択工程S456へ処理を進める。
【0185】
待ちフレーム選択工程S456において、送信開始時刻算出部132は、処理装置911を用いて、待ち時間を設けるフレームを選択する。
例えば、送信開始時刻算出部132は、処理装置911を用いて、分割数設定工程S451で算出した分割数nを2で割った商を算出する。送信開始時刻算出部132は、処理装置911を用いて、算出した商の小数部分を切り捨てて、整数にする。送信開始時刻算出部132は、処理装置911を用いて、小数部分を切り捨てて整数にした商と、1との和を算出する。送信開始時刻算出部132は、記憶装置914を用いて、算出した和を、選択送信フレーム番号iとして記憶する。
【0186】
待ち時間設定工程S457において、送信開始時刻算出部132は、処理装置911を用いて、待ちフレーム選択工程S456で選択したフレームに待ち時間を設定する。
例えば、送信開始時刻算出部132は、記憶装置914を用いて、i番目のフレームの送信開始時刻までの待ち時間Twiとして、分割数見積もり工程S403で算出した余りmを記憶する。
送信開始時刻算出部132は、処理装置911を用いて、分割設定工程S407を終了する。
【0187】
図21は、この実施の形態における送信データ長算出処理S308の流れの一例を示すフローチャート図である。
送信データ長算出処理S308は、送信データ長算出工程S461と、空フレーム削除工程S462とを有する。
【0188】
送信データ長算出工程S461において、送信データ長算出部131は、処理装置911を用いて、送信するn個のフレームのデータ長Lpiを算出する。
空フレーム削除工程S462において、送信データ長算出部131は、処理装置911を用いて、送信データ長算出工程S461で算出したデータ長Lpiが0のフレームがあれば、そのフレームを削除して、分割数nと、待ち時間Twiとを調整する。
送信データ長算出部131は、処理装置911を用いて、送信データ長算出処理S308を終了する。
【0189】
図22は、この実施の形態における送信データ長算出工程S461の流れの一例を示すフローチャート図である。
送信データ長算出工程S461は、分割数判定工程S471と、データ長設定工程S472と、累計初期化工程S473と、第一選択工程S474と、送信長算出工程S475と、データ長設定工程S481と、累計送信長更新工程S482と、送信選択工程S483と、累計時間差更新工程S484と、最終データ長設定工程S485とを有する。
【0190】
分割数判定工程S471において、送信データ長算出部131は、処理装置911を用いて、送信開始時刻算出処理S307で送信開始時刻算出部132が算出した分割数nと、1とを比較する。
分割数nが1である場合、送信データ長算出部131は、処理装置911を用いて、データ長設定工程S472へ処理を進める。
分割数nが1より大きい場合、送信データ長算出部131は、処理装置911を用いて、累計初期化工程S473へ処理を進める。
【0191】
データ長設定工程S472において、送信データ長算出部131は、記憶装置914を用いて、送信する最初のフレームのデータ長Lp1として、最大待ち時間算出工程S401で送信開始時刻算出部132が算出した、受信する最後のフレームの累計受信データ長Lnrを記憶する。
送信データ長算出部131は、処理装置911を用いて、送信データ長算出工程S461を終了する。
【0192】
累計初期化工程S473において、送信データ長算出部131は、記憶装置914を用いて、累計送信データ長Lとして、0を記憶する。累計送信データ長Lは、データ長Lpiが決定したフレームのデータ長Lpiを合計したものである。
また、送信データ長算出部131は、記憶装置914を用いて、最初のフレームの送信開始時刻までの待ち時間Tw1を、累計時間差Tとして記憶する。
【0193】
第一選択工程S474において、送信データ長算出部131は、処理装置911を用いて、送信するn個のフレームのなかから、最初のフレームを選択する。送信データ長算出部131は、処理装置911を用いて、受信するn個のフレームのなかから、最初のフレームを選択する。
例えば、送信データ長算出部131は、記憶装置914を用いて、選択送信フレーム番号iとして、1を記憶する。送信データ長算出部131は、記憶装置914を用いて、選択受信フレーム番号jとして、1を記憶する。
【0194】
送信長算出工程S475において、送信データ長算出部131は、処理装置911を用いて、第一選択工程S474または送信選択工程S483で選択したi番目の送信フレームについて、最大累計送信データ長Lを算出する。最大累計送信データ長Lは、i番目の送信フレームのデータ部分512の送信が完了した時点における累計送信データ長Lの最大値である。実際の累計送信データ長Lは、データ長の制約により、最大累計送信データ長Lよりも小さくなる場合がある。
【0195】
データ長設定工程S481において、送信データ長算出部131は、処理装置911を用いて、第一選択工程S474または送信選択工程S483で選択したi番目の送信フレームについて、送信データ長Lpiを算出する。
例えば、送信データ長算出部131は、処理装置911を用いて、送信長算出工程S475で算出した最大累計送信データ長Lから、累計初期化工程S473または累計送信長更新工程S482で算出した累計送信データ長Lを差し引いた差を算出する。送信データ長算出部131は、処理装置911を用いて、算出した差を超えない値のなかで、データ長として許容される最大の値を算出する(図中の「fit」は、この処理を関数として記述したものである)。送信データ長算出部131は、記憶装置914を用いて、算出した値を、i番目の送信フレームの送信データ長Lpiとして記憶する。
【0196】
累計送信長更新工程S482において、送信データ長算出部131は、処理装置911を用いて、累計送信データ長Lを更新する。
例えば、送信データ長算出部131は、処理装置911を用いて、記憶した累計送信データ長Lと、データ長設定工程S481で算出したi番目の送信フレームの送信データ長Lpiとの合計を算出する。送信データ長算出部131は、記憶装置914を用いて、記憶した累計送信データ長Lを更新し、算出した合計を、新しい累計送信データ長Lとして記憶する。
【0197】
送信選択工程S483において、送信データ長算出部131は、処理装置911を用いて、次の送信フレームを選択する。
例えば、送信データ長算出部131は、処理装置911を用いて、記憶した選択送信フレーム番号iに1を加える。送信データ長算出部131は、記憶装置914を用いて、記憶した選択送信フレーム番号iを更新し、1を加えた選択送信フレーム番号を、新しい選択送信フレーム番号iとして記憶する。
次の送信フレームが最後のフレームである場合、すなわち、選択送信フレーム番号iが、送信開始時刻算出処理S307で送信開始時刻算出部132が算出した分割数n以上である場合、送信データ長算出部131は、処理装置911を用いて、最終データ長設定工程S485へ処理を進める。
次のフレームが最後よりも前のフレームである場合、すなわち、選択送信フレーム番号iが、送信開始時刻算出処理S307で送信開始時刻算出部132が算出した分割数nより小さい場合、送信データ長算出部131は、累計時間差更新工程S484へ処理を進める。
【0198】
累計時間差更新工程S484において、送信データ長算出部131は、処理装置911を用いて、累計時間差Tを更新する。
例えば、送信データ長算出部131は、処理装置911を用いて、記憶した累計時間差Tと、送信開始時刻算出処理S307で送信開始時刻算出部132が算出した追加送信時間tと、i番目のフレームの送信開始時刻までの待ち時間Twiとの合計を算出する。送信データ長算出部131は、記憶装置914を用いて、記憶した累計時間差Tを更新し、算出した合計を、新しい累計時間差Tとして記憶する。
送信データ長算出部131は、処理装置911を用いて、送信長算出工程S475に処理を戻す。
【0199】
最終データ長設定工程S485において、送信データ長算出部131は、処理装置911を用いて、送信する最後のフレームのデータ長Lpnを算出する。
例えば、送信データ長算出部131は、処理装置911を用いて、最大待ち時間算出工程S401で送信開始時刻算出部132が算出した、受信する最後のフレームの累計受信データ長Lnrから、累計送信長更新工程S482で算出した累計送信データ長Lを差し引いた差を算出する。送信データ長算出部131は、記憶装置914を用いて、算出した差を、最後のフレームの送信データ長Lpnとして記憶する。
送信データ長算出部131は、処理装置911を用いて、送信データ長算出工程S461を終了する。
【0200】
図23は、この実施の形態における送信長算出工程S475の流れの一例を示すフローチャート図である。
送信長算出工程S475は、開始比較工程S476と、終了比較工程S477と、受信選択工程S478と、送信長設定工程S479と、送信長設定工程S480とを有する。
【0201】
開始比較工程S476において、送信データ長算出部131は、処理装置911を用いて、記憶した累計時間差Tと、送信開始時刻算出処理S307で送信開始時刻算出部132が算出したj番目の受信フレームの開始時間差tとを比較する。
累計時間差Tが、開始時間差t以上である場合、j番目の受信フレームのデータのうち少なくとも一部は、i番目の送信フレームに含めることができる。送信データ長算出部131は、処理装置911を用いて、終了比較工程S477へ処理を進める。
累計時間差Tが、開始時間差tより小さい場合、j番目の受信フレームのデータは、i番目の送信フレームに含めることができない。送信データ長算出部131は、処理装置911を用いて、送信長設定工程S479へ処理を進める。
【0202】
終了比較工程S477において、送信データ長算出部131は、処理装置911を用いて、記憶した累計時間Tと、送信開始時刻算出処理S307で送信開始時刻算出部132が算出したj番目の受信フレームの終了時間差tとを比較する。
累計時間差Tが、終了時間差t以上である場合、j番目の受信フレームのデータすべてを、i番目の送信フレームに含めることができる。送信データ長算出部131は、処理装置911を用いて、受信選択工程S478へ処理を進める。
累計時間差Tが、終了時間差tより小さい場合、j番目の受信フレームのデータのうち一部は、i番目の送信フレームに含めることができない。送信データ長算出部131は、処理装置911を用いて、送信長設定工程S480へ処理を進める。
【0203】
受信選択工程S478において、送信データ長算出部131は、次の受信フレームを選択する。
例えば、送信データ長算出部131は、処理装置911を用いて、記憶した選択受信フレーム番号jに1を加える。送信データ長算出部131は、記憶装置914を用いて、記憶した選択受信フレーム番号jを更新し、1を加えた選択受信フレーム番号を、新しい選択受信フレーム番号jとして記憶する。
送信データ長算出部131は、処理装置911を用いて、開始比較工程S476に処理を戻す。
【0204】
送信長設定工程S479において、送信データ長算出部131は、処理装置911を用いて、i番目の送信フレームの最大累計送信データ長Lを算出する。この場合、i番目の送信フレームの最大累計送信データ長Lは、[j−1]番目の受信フレームの累計受信データ長Lj−1と等しい。
例えば、送信データ長算出部131は、記憶装置914を用いて、送信開始時刻算出処理S307で送信開始時刻算出部132が算出した[j−1]番目の受信フレームの累計受信データ長Lj−1を、i番目の送信フレームの最大累計送信データ長Lとして記憶する。
送信データ長算出部131は、処理装置911を用いて、送信長算出工程S475を終了する。
【0205】
送信長設定工程S480において、送信データ長算出部131は、処理装置911を用いて、i番目の送信フレームの最大累計送信データ長Lを算出する。この場合、i番目の送信フレームの最大累計送信データ長Lは、[j−1]番目の受信フレームの累計受信データ長Lj−1に、j番目の受信フレームに含まれるデータのうち、受信が間に合うデータの長さを加えたものである。
例えば、送信データ長算出部131は、処理装置911を用いて、記憶した累計時間差Tから、送信開始時刻算出処理S307で送信開始時刻算出部132が算出したj番目の受信フレームの開始時間差tを差し引いた差を算出する。送信データ長算出部131は、処理装置911を用いて、算出した差を、送信開始時刻算出処理S307で送信開始時刻算出部132が算出した係数aで割った商を算出する。送信データ長算出部131は、処理装置911を用いて、算出した商と、送信開始時刻算出処理S307で送信開始時刻算出部132が算出した[j−1]番目の受信フレームの累計受信データ長Lj−1との合計を算出する。送信データ長算出部131は、記憶装置914を用いて、算出した合計を、i番目の送信フレームの最大累計送信データ長Lとして記憶する。
送信データ長算出部131は、処理装置911を用いて、送信長算出工程S475を終了する。
【0206】
図24は、この実施の形態における空フレーム削除工程S462の流れの一例を示すフローチャート図である。
空フレーム削除工程S462は、第一選択工程S491と、データ長判定工程S492と、待ち時間更新工程S493と、移動判定工程S494と、フレーム番号更新工程S495と、移動先更新工程S496と、送信選択工程S497と、分割数更新工程S498とを有する。
【0207】
第一選択工程S491において、送信データ長算出部131は、処理装置911を用いて、最初の送信フレームを選択する。また、送信データ長算出部131は、処理装置911を用いて、空フレーム削除後に、選択したフレームを移動する移動先のフレーム番号を1とする。
例えば、送信データ長算出部131は、記憶装置914を用いて、選択送信フレーム番号iとして、1を記憶する。送信データ長算出部131は、記憶装置914を用いて、移動先フレーム番号jとして、1を記憶する。
【0208】
データ長判定工程S492において、送信データ長算出部131は、処理装置911を用いて、送信データ長算出工程S461で算出したi番目の送信フレームの送信データ長Lpiと、0とを比較する。
i番目の送信フレームの送信データ長Lpiが0である場合、送信データ長算出部131は、そのフレームを削除する。送信データ長算出部131は、処理装置911を用いて、待ち時間更新工程S493へ処理を進める。
i番目の送信フレームの送信データ長Lpiが0より大きい場合、送信データ長算出部131は、処理装置911を用いて、移動判定工程S494へ処理を進める。
【0209】
待ち時間更新工程S493において、送信データ長算出部131は、処理装置911を用いて、削除したフレームの次のフレームの待ち時間を更新する。
例えば、送信データ長算出部131は、処理装置911を用いて、i番目の送信フレームの待ち時間Twiと、[i+1]番目の送信フレームの待ち時間Twi+1と、追加送信時間tとの合計を算出する。送信データ長算出部131は、記憶装置914を用いて、[i+1]番目の送信フレームの待ち時間Twi+1を更新し、算出した合計を、[i+1]番目の送信フレームの待ち時間Twi+1として記憶する。
送信データ長算出部131は、処理装置911を用いて、送信選択工程S497へ処理を進める。
【0210】
移動判定工程S494において、送信データ長算出部131は、処理装置911を用いて、選択送信フレーム番号iと、移動先フレーム番号jとを比較する。
選択送信フレーム番号iと、移動先フレーム番号jとが等しい場合は、フレームを移動する必要がない。送信データ長算出部131は、処理装置911を用いて、移動先更新工程S496へ処理を進める。
選択送信フレーム番号iが、移動先フレーム番号jより大きい場合は、削除したフレームの分、送信フレームを前に詰める必要がある。送信データ長算出部131は、処理装置911を用いて、フレーム番号更新工程S495へ処理を進める。
【0211】
フレーム番号更新工程S495において、送信データ長算出部131は、処理装置911を用いて、i番目の送信フレームを前に詰めてj番目にする。
例えば、送信データ長算出部131は、記憶装置914を用いて、j番目の送信フレームの送信データ長Lpjを更新し、i番目の送信フレームの送信データ長Lpiを、新しいj番目の送信フレームの送信データ長Lpjとして記憶する。送信データ長算出部131は、記憶装置914を用いて、j番目の送信フレームの待ち時間Twjを更新し、i番目の送信フレームの待ち時間Twiを、j番目の送信フレームの待ち時間Twjとして記憶する。
【0212】
移動先更新工程S496において、送信データ長算出部131は、処理装置911を用いて、移動先フレーム番号を1つ進める。
例えば、送信データ長算出部131は、処理装置911を用いて、記憶した移動先フレーム番号jに1を加える。送信データ長算出部131は、記憶装置914を用いて、記憶した移動先フレーム番号jを更新し、1を加えた移動先フレーム番号を、新しい移動先フレーム番号jとして記憶する。
【0213】
送信選択工程S497において、送信データ長算出部131は、処理装置911を用いて、次の送信フレームを選択する。
例えば、送信データ長算出部131は、処理装置911を用いて、選択送信フレーム番号iに1を加える。送信データ長算出部131は、記憶装置914を用いて、記憶した選択送信フレーム番号iを更新し、1を加えた選択送信フレーム番号を、新しい選択送信フレーム番号iとして記憶する。
次のフレームが存在しない場合、すなわち、選択送信フレーム番号iが、送信開始時刻算出処理S307で送信開始時刻算出部132が算出した分割数nより大きい場合、送信データ長算出部131は、処理装置911を用いて、分割数更新工程S498へ処理を進める。
次のフレームが存在する場合、すなわち、選択送信フレーム番号iが、送信開始時刻算出処理S307で送信開始時刻算出部132が算出した分割数n以下である場合、送信データ長算出部131は、処理装置911を用いて、データ長判定工程S492に処理を戻す。
【0214】
分割数更新工程S498において、送信データ長算出部131は、処理装置911を用いて、分割数nを更新する。
例えば、送信データ長算出部131は、処理装置911を用いて、記憶した移動先フレーム番号jから1を差し引いた差を算出する。送信データ長算出部131は、記憶装置914を用いて、分割数nを更新し、算出した差を、新しい分割数nとして記憶する。
【0215】
以上、各実施の形態で説明した構成は、一例であり、異なる実施の形態で説明した構成を組み合わせた構成としてもよい。また、主要でない部分の構成を既存の技術など他の構成と置き換えるなどの変形をした構成としてもよい。
【0216】
以上説明した中継装置(1〜3;100)は、受信装置(915)と、フレーム組換部(送信フレーム長算出装置22,フレーム生成/送信装置25;送信データ長算出部131,送信開始時刻算出部132,送信ヘッダ生成部141,送信データ生成部142,送信フッタ生成部143)と、送信装置(916;フレーム生成/送信装置25)とを有する。
受信装置(915)は、一個以上のフレームを受信する。
フレーム組換部は、上記受信装置(915)が受信したフレームを組み換えて、上記受信装置(915)が受信したフレームの個数と異なる個数のフレームを生成する。
送信装置(916;25)は、上記受信装置(915)がフレームを受信する通信速度と異なる通信速度で、上記フレーム組換部が生成したフレームを送信し、上記受信装置(915)が上記一個以上のフレームの受信を完了する前に上記フレーム組換部が生成したフレームの送信を開始する。
【0217】
フレーム組換部が組み換えたフレームを送信装置が送信するので、受信速度と送信速度とが異なる場合であっても、中継による遅延を抑えることができる。
【0218】
フレーム組換部は、上記受信装置(915)が受信したフレームの個数より多い個数のフレームを生成する。
送信装置(916;25)は、上記受信装置(915)がフレームを受信する通信速度よりも速い通信速度で、上記フレーム組換部が生成した複数のフレームを送信する。
【0219】
受信速度よりも送信速度が速い場合において、受信したフレームの個数より多い個数のフレームをフレーム組換部が生成するので、送信開始までの待ち時間を減らすことができ、中継による遅延を抑えることができる。
【0220】
フレーム組換部(送信データ長算出部131;送信フレーム長算出装置22)は、上記受信装置(915)が受信した一個のフレームを複数のフレームに分割し、次の式の右辺を計算することにより、分割した複数のフレームの長さを算出する。
【数43】

ただし、Lは、分割した複数のフレームそれぞれのうちデータ部分の長さである。Sは、上記受信装置(915)がフレームを受信する通信速度であり、単位時間当たりの受信データ長である。Sは、上記送信装置(916;25)が複数のフレームを送信する通信速度であり、単位時間当たりの送信データ長である。Lは、上記受信装置(915)が受信するフレーム及び上記送信装置(916;25)が送信する複数のフレームそれぞれのうち、上記データ部分に先行するヘッダ部分の長さである。Lは、上記受信装置(915)が受信するフレーム及び上記送信装置(916;25)が送信する複数のフレームそれぞれのうち、上記データ部分に後続するフッタ部分の長さである。
【0221】
受信速度よりも送信速度が速い場合において、受信した一個のフレームを複数のフレームにフレーム組換部が分割するので、送信開始までの待ち時間を減らすことができる。また、上の式により各フレームの長さを計算することで、中継による遅延を更に抑えることができる。
【0222】
中継装置(1〜3;100)は、送信開始時刻算出部(132;送信開始タイミング通知装置23)を有する。
送信開始時刻算出部(132;23)は、上記受信装置(915)がフレームを受信する通信速度と、上記送信装置が複数のフレームを送信する通信速度とに基づいて、上記送信装置(916;25)が送信する複数のフレームに含まれるデータを上記送信装置(916;25)が送信する時刻より前に、上記受信装置(915)が上記データを受信するよう、上記送信装置(916;25)が上記複数のフレームの送信を開始する時刻を算出する。
【0223】
これにより、データの受信が送信に間に合わなくなるのを防ぐことができるので、中継による遅延を更に抑えることができる。
【0224】
送信開始時刻算出部(132;23)は、次の式の右辺を計算することにより、上記送信装置(916;25)が上記複数のフレームの送信を開始する時刻を算出する。
【数44】

ただし、Tは、上記受信装置(915)が上記フレームの受信を開始した時刻から、上記送信装置(916;25)が上記複数のフレームのうち最初のフレームの送信を開始する時刻までの待ち時間である。Sは、上記受信装置(915)がフレームを受信する通信速度であり、単位時間当たりの受信データ長である。Sは、上記送信装置(916;25)が複数のフレームを送信する通信速度であり、単位時間当たりの送信データ長である。Lは、上記受信装置(915)が受信するフレーム及び上記送信装置(916;25)が送信する複数のフレームのうち、上記データ部分に先行するヘッダ部分の長さである。Lは、上記受信装置(915)が受信するフレーム及び上記送信装置(916;25)が送信する複数のフレームのうち、上記データ部分に後続するフッタ部分の長さである。
【0225】
上の式により送信開始時刻を算出することで、中継による遅延を更に抑えることができる。
【0226】
フレーム組換部は、上記受信装置(915)が受信したフレームの個数より少ない個数のフレームを生成する。
上記送信装置(916;25)は、上記受信装置(915)がフレームを受信する通信速度よりも遅い通信速度で、上記フレーム組換部が生成したフレームを送信する。
【0227】
受信速度よりも送信速度が遅い場合において、受信したフレームの個数より少ない個数のフレームをフレーム組換部が生成するので、フレームのヘッダ部分やフッタ部分の数が減る分、送信するデータ量が減る。これにより、中継による遅延を抑えることができる。
【0228】
フレーム組換部は、上記受信装置(915)が受信した複数のフレームを結合して、一個のフレームを生成する。
【0229】
受信速度よりも送信速度が遅い場合において、受信した複数のフレームを一つに結合することにより、送信にかかる時間を短縮することができる。
【0230】
中継装置(1〜3;100)は、送信開始時刻算出部(132;23)を有する。
送信開始時刻算出部(132;23)は、上記受信装置(915)が複数のフレームを受信する通信速度と、上記送信装置(916;25)がフレームを送信する通信速度とに基づいて、上記送信装置(916;25)が送信するフレームに含まれるデータを上記送信装置(916;25)が送信する時刻より前に、上記受信装置(915)が上記データを受信するよう、上記送信装置(916;25)が上記フレームの送信を開始する時刻を算出する。
【0231】
これにより、受信するフレームの個数よりも送信するフレームの個数が少なく、受信するデータ量よりも送信するデータ量が少なくなった場合でも、データの受信が送信に間に合わなくなるのを防ぐことができる。
【0232】
送信開始時刻算出部(132;23)は、次の式の右辺を計算することにより、上記送信装置(916;25)が上記フレームの送信を開始する時刻を算出する。
【数45】

ただし、Tは、上記受信装置(915)が上記複数のフレームのうち最初のフレームの受信を開始した時刻から、上記送信装置(916;25)が上記フレームの送信を開始する時刻までの待ち時間である。Sは、上記受信装置がフレームを受信する通信速度であり、単位時間当たりの受信データ長である。Sは、上記送信装置が複数のフレームを送信する通信速度であり、単位時間当たりの送信データ長である。Sは、上記中継装置よりも送信元側にある他の中継装置が分割送信した時の送信速度である。Lは、上記受信装置が受信するフレーム及び上記送信装置が送信する複数のフレームのうち、上記データ部分に先行するヘッダ部分の長さである。Lは、上記受信装置が受信するフレーム及び上記送信装置が送信する複数のフレームのうち、上記データ部分に後続するフッタ部分の長さである。Lは、上記受信装置が受信する複数のフレームのデータ部分の長さである。Lは、上記他の中継装置が分割送信した複数のフレームのデータ部分の長さである。
【0233】
上の式により送信開始時刻を算出することで、中継による遅延を更に抑えることができる。
【0234】
中継装置(1〜3;100)は、コンピュータを中継装置として機能させるコンピュータプログラムを、コンピュータが実行することにより実現することができる。
【符号の説明】
【0235】
1〜3,100 中継装置、22 送信フレーム長算出装置、23 送信開始タイミング通知装置、25 フレーム生成/送信装置、111 受信速度取得部、112 送信速度取得部、121 受信ヘッダ取得部、122 受信データ長取得部、123 後続データ長取得部、124 後続遅延取得部、125 受信データ取得部、126 受信フッタ取得部、131 送信データ長算出部、132 送信開始時刻算出部、141 送信ヘッダ生成部、142 送信データ生成部、143 送信フッタ生成部、510 フレーム、511 ヘッダ部分、512 データ部分、513 フッタ部分、711 ヘッダ長、712 データ長、713 フッタ長、911 処理装置、914 記憶装置、915 受信装置、916 送信装置。

【特許請求の範囲】
【請求項1】
一個以上のフレームを受信する受信装置と、
上記受信装置が受信したフレームを組み換えて、上記受信装置が受信したフレームの個数と異なる個数のフレームを生成するフレーム組換部と、
上記受信装置がフレームを受信する通信速度と異なる通信速度で、上記フレーム組換部が生成したフレームを送信し、上記受信装置が上記一個以上のフレームの受信を完了する前に上記フレーム組換部が生成したフレームの送信を開始する送信装置とを有することを特徴とする中継装置。
【請求項2】
上記フレーム組換部は、上記受信装置が受信したフレームの個数より多い個数のフレームを生成し、
上記送信装置は、上記受信装置がフレームを受信する通信速度よりも速い通信速度で、上記フレーム組換部が生成した複数のフレームを送信することを特徴とする請求項1に記載の中継装置。
【請求項3】
上記フレーム組換部は、上記受信装置が受信した一個のフレームを複数のフレームに分割し、数1の右辺を計算することにより、分割した複数のフレームの長さを算出することを特徴とする請求項2に記載の中継装置。
【数1】

ただし、Lは、分割した複数のフレームそれぞれのうちデータ部分の長さである。Sは、上記受信装置がフレームを受信する通信速度であり、単位時間当たりの受信データ長である。Sは、上記送信装置が複数のフレームを送信する通信速度であり、単位時間当たりの送信データ長である。Lは、上記受信装置が受信するフレーム及び上記送信装置が送信する複数のフレームそれぞれのうち、上記データ部分に先行するヘッダ部分の長さである。Lは、上記受信装置が受信するフレーム及び上記送信装置が送信する複数のフレームそれぞれのうち、上記データ部分に後続するフッタ部分の長さである。
【請求項4】
上記中継装置は、
上記受信装置がフレームを受信する通信速度と、上記送信装置が複数のフレームを送信する通信速度とに基づいて、上記送信装置が送信する複数のフレームに含まれるデータを上記送信装置が送信する時刻より前に、上記受信装置が上記データを受信するよう、上記送信装置が上記複数のフレームの送信を開始する時刻を算出する送信開始時刻算出部とを有することを特徴とする請求項2または請求項3に記載の中継装置。
【請求項5】
上記送信開始時刻算出部は、数2の右辺を計算することにより、上記送信装置が上記複数のフレームの送信を開始する時刻を算出することを特徴とする請求項4に記載の中継装置。
【数2】

ただし、Tは、上記受信装置が上記フレームの受信を開始した時刻から、上記送信装置が上記複数のフレームのうち最初のフレームの送信を開始する時刻までの待ち時間である。Sは、上記受信装置がフレームを受信する通信速度であり、単位時間当たりの受信データ長である。Sは、上記送信装置が複数のフレームを送信する通信速度であり、単位時間当たりの送信データ長である。Lは、上記受信装置が受信するフレーム及び上記送信装置が送信する複数のフレームのうち、上記データ部分に先行するヘッダ部分の長さである。Lは、上記受信装置が受信するフレーム及び上記送信装置が送信する複数のフレームのうち、上記データ部分に後続するフッタ部分の長さである。
【請求項6】
上記フレーム組換部は、上記受信装置が受信したフレームの個数より少ない個数のフレームを生成し、
上記送信装置は、上記受信装置がフレームを受信する通信速度よりも遅い通信速度で、上記フレーム組換部が生成したフレームを送信することを特徴とする請求項1に記載の中継装置。
【請求項7】
上記フレーム組換部は、上記受信装置が受信した複数のフレームを結合して、一個のフレームを生成することを特徴とする請求項6に記載の中継装置。
【請求項8】
上記中継装置は、
上記受信装置が複数のフレームを受信する通信速度と、上記送信装置がフレームを送信する通信速度とに基づいて、上記送信装置が送信するフレームに含まれるデータを上記送信装置が送信する時刻より前に、上記受信装置が上記データを受信するよう、上記送信装置が上記フレームの送信を開始する時刻を算出する送信開始時刻算出部とを有することを特徴とする請求項6または請求項7に記載の中継装置。
【請求項9】
上記送信開始時刻算出部は、数3の右辺を計算することにより、上記送信装置が上記フレームの送信を開始する時刻を算出することを特徴とする請求項8に記載の中継装置。
【数3】

ただし、Tは、上記受信装置が上記複数のフレームのうち最初のフレームの受信を開始した時刻から、上記送信装置が上記フレームの送信を開始する時刻までの待ち時間である。Sは、上記受信装置がフレームを受信する通信速度であり、単位時間当たりの受信データ長である。Sは、上記送信装置が複数のフレームを送信する通信速度であり、単位時間当たりの送信データ長である。Sは、上記中継装置よりも送信元側にある他の中継装置が分割送信した時の送信速度である。Lは、上記受信装置が受信するフレーム及び上記送信装置が送信する複数のフレームのうち、上記データ部分に先行するヘッダ部分の長さである。Lは、上記受信装置が受信するフレーム及び上記送信装置が送信する複数のフレームのうち、上記データ部分に後続するフッタ部分の長さである。Lは、上記受信装置が受信する複数のフレームのデータ部分の長さである。Lは、上記他の中継装置が分割送信した複数のフレームのデータ部分の長さである。
【請求項10】
コンピュータが実行することにより、上記コンピュータが請求項1乃至請求項9のいずれかに記載の中継装置として機能することを特徴とするコンピュータプログラム。
【請求項11】
受信装置と、フレーム組換部と、送信装置とを有する中継装置が、フレームを中継する中継方法において、
上記受信装置が、一個以上のフレームを受信し、
上記フレーム組換部が、上記受信装置が受信したフレームを組み換えて、上記受信装置が受信したフレームの個数と異なる個数のフレームを生成し、
上記送信装置が、上記受信装置がフレームを受信する通信速度と異なる通信速度で、上記フレーム組換部が生成したフレームを送信し、上記受信装置が上記一個以上のフレームの受信を完了する前に上記フレーム組換部が生成したフレームの送信を開始することを特徴とする中継方法。

【図1】
image rotate

【図2】
image rotate

【図3】
image rotate

【図4】
image rotate

【図5】
image rotate

【図6】
image rotate

【図7】
image rotate

【図8】
image rotate

【図9】
image rotate

【図10】
image rotate

【図11】
image rotate

【図12】
image rotate

【図13】
image rotate

【図14】
image rotate

【図15】
image rotate

【図16】
image rotate

【図17】
image rotate

【図18】
image rotate

【図19】
image rotate

【図20】
image rotate

【図21】
image rotate

【図22】
image rotate

【図23】
image rotate

【図24】
image rotate