データ転送装置、データ転送方法、及び、プログラム
【課題】単位データに対する処理を迅速に完了することが可能なデータ転送装置を提供すること。
【解決手段】データ転送装置100は、複数の通信ポートと、複数の通信ポートのそれぞれを経由して受信した単位データを一時的に記憶するバッファと、上記単位データの送信先に基づいて、当該単位データを出力する通信ポートを特定するための転送準備処理を実行するための、複数のスレッドを生成するスレッド生成部101と、複数の通信ポートの1つを経由して受信された複数の上記単位データからなり且つ予め定められた方式に従って形成された単位データブロックを、予め定められた処理単位毎に分割することにより複数の処理ブロックを生成し、当該生成された処理ブロックのそれぞれを上記生成された複数のスレッドに分散処理させる処理制御部102と、を備える。
【解決手段】データ転送装置100は、複数の通信ポートと、複数の通信ポートのそれぞれを経由して受信した単位データを一時的に記憶するバッファと、上記単位データの送信先に基づいて、当該単位データを出力する通信ポートを特定するための転送準備処理を実行するための、複数のスレッドを生成するスレッド生成部101と、複数の通信ポートの1つを経由して受信された複数の上記単位データからなり且つ予め定められた方式に従って形成された単位データブロックを、予め定められた処理単位毎に分割することにより複数の処理ブロックを生成し、当該生成された処理ブロックのそれぞれを上記生成された複数のスレッドに分散処理させる処理制御部102と、を備える。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、データを転送するデータ転送装置に関する。
【背景技術】
【0002】
予め定められた形式に従った単位データ(プロトコル・データ・ユニット、例えば、パケット、フレーム、又は、セグメント等)を転送するデータ転送装置が知られている。この種のデータ転送装置の一つとして特許文献1に記載のデータ転送装置は、複数の通信ポート(物理ポート)と、通信ポートを経由して受信した単位データを一時的に記憶するバッファと、を備える。
【0003】
データ転送装置は、複数の単位データからなる単位データブロック毎に転送準備処理を行う。例えば、単位データブロックは、予め設定されたデータ量を有するように定められる。また、単位データブロックは、予め設定された時間間隔内に受信された単位データを含むように定められる。転送準備処理は、単位データブロックに含まれる各単位データの送信先に基づいて、当該単位データを出力する通信ポートを特定するための処理である。
【0004】
また、複数のスレッドを生成し、生成した複数のスレッドにより分散処理を行うマルチスレッド技術が知られている。
【先行技術文献】
【特許文献】
【0005】
【特許文献1】特開2006−246087号公報
【発明の概要】
【発明が解決しようとする課題】
【0006】
そこで、マルチスレッド技術をデータ転送装置に適用することが好適であると考えられる。この場合、データ転送装置は、各通信ポートに対して1つのスレッドを割り当て、各通信ポートを経由して受信した単位データに対する転送準備処理を、当該通信ポートに対して割り当てられたスレッドに実行させるように構成されることが好適であると考えられる。
【0007】
ところで、図1に示したように、単位データブロックDB#1〜DB#8に含まれる単位データの数は、通信ポート毎に異なることが多い。従って、各スレッド#1〜#4が転送準備処理を完了するタイミングは、互いに異なることが多い。その結果、図1に示した例においては、スレッド#1,#2,#4において、いずれの処理も実行していない空転時間(無駄な時間)が生じる。
【0008】
即ち、上記データ転送装置にマルチスレッド技術を適用した場合、単位データブロックに含まれる単位データの数が相対的に多い通信ポートに係る転送準備処理の完了が無駄に遅くなってしまう。その結果、この通信ポートを経由して受信した単位データの遅延時間(転送処理に要する時間)が無駄に長くなってしまう。
【0009】
これに対処するため、転送準備処理を完了したスレッドが、当該スレッドに対して割り当てられた通信ポート以外の通信ポートに係る単位データを処理するようにデータ転送装置を構成することが考えられる。しかしながら、この場合、転送準備処理の結果が出力される順序が変化するので、単位データを、受信した順に送信するためには、単位データを転送する順序を制御する必要が生じるという問題がある。
【0010】
このため、本発明の目的は、上述した課題である「単位データに対する処理が無駄に遅くなる場合が生じること」を解決することが可能なデータ転送装置を提供することにある。
【課題を解決するための手段】
【0011】
かかる目的を達成するため本発明の一形態であるデータ転送装置は、
複数の通信ポートと、
上記複数の通信ポートのそれぞれを経由して受信した単位データを一時的に記憶するバッファと、
上記単位データの送信先に基づいて、当該単位データを出力する通信ポートを特定するための転送準備処理を実行するための、複数のスレッドを生成するスレッド生成手段と、
上記複数の通信ポートの1つを経由して受信された複数の上記単位データからなり且つ予め定められた方式に従って形成された単位データブロックを、予め定められた処理単位毎に分割することにより複数の処理ブロックを生成し、当該生成された処理ブロックのそれぞれを上記生成された複数のスレッドに分散処理させる処理制御手段と、
を備える。
【0012】
また、本発明の他の形態であるデータ転送方法は、
複数の通信ポートと、
上記複数の通信ポートのそれぞれを経由して受信した単位データを一時的に記憶するバッファと、
を備えるデータ転送装置に適用され、
上記単位データの送信先に基づいて、当該単位データを出力する通信ポートを特定するための転送準備処理を実行するための、複数のスレッドを生成し、
上記複数の通信ポートの1つを経由して受信された複数の上記単位データからなり且つ予め定められた方式に従って形成された単位データブロックを、予め定められた処理単位毎に分割することにより複数の処理ブロックを生成し、当該生成された処理ブロックのそれぞれを上記生成された複数のスレッドに分散処理させる方法である。
【0013】
また、本発明の他の形態であるプログラムは、
複数の通信ポートと、
上記複数の通信ポートのそれぞれを経由して受信した単位データを一時的に記憶するバッファと、
を備えるデータ転送装置に、
上記単位データの送信先に基づいて、当該単位データを出力する通信ポートを特定するための転送準備処理を実行するための、複数のスレッドを生成するスレッド生成手段と、
上記複数の通信ポートの1つを経由して受信された複数の上記単位データからなり且つ予め定められた方式に従って形成された単位データブロックを、予め定められた処理単位毎に分割することにより複数の処理ブロックを生成し、当該生成された処理ブロックのそれぞれを上記生成された複数のスレッドに分散処理させる処理制御手段と、
を実現させるためのプログラムである。
【発明の効果】
【0014】
本発明は、以上のように構成されることにより、単位データに対する処理を迅速に完了することができる。
【図面の簡単な説明】
【0015】
【図1】背景技術に係るデータ転送装置の各スレッドが処理を実行する時間を概念的に示した説明図である。
【図2】本発明の第1実施形態に係るデータ転送装置の概略構成を表す図である。
【図3】本発明の第1実施形態に係るデータ転送装置の機能の概略を表すブロック図である。
【図4】本発明の第1実施形態に係るデータ転送装置のCPUが実行するプログラムを示したフローチャートである。
【図5】本発明の第1実施形態に係るデータ転送装置のバッファが記憶している単位データブロックを概念的に示した説明図である。
【図6】本発明の第1実施形態に係るデータ転送装置の各スレッドが処理する処理ブロックを概念的に示した説明図である。
【図7】本発明の第1実施形態に係るデータ転送装置のバッファが記憶している単位データブロックを概念的に示した説明図である。
【図8】本発明の第1実施形態に係るデータ転送装置のバッファが記憶している単位データブロックを概念的に示した説明図である。
【図9】本発明の第2実施形態に係るデータ転送装置のCPUが、図4の処理に追加して実行する処理を示したフローチャートである。
【図10】本発明の第2実施形態に係るデータ転送装置の各スレッドが処理する処理ブロックを概念的に示した説明図である。
【図11】本発明の第3実施形態に係るデータ転送装置の機能の概略を表すブロック図である。
【発明を実施するための形態】
【0016】
以下、本発明に係る、データ転送装置、データ転送方法、及び、プログラム、の各実施形態について図1〜図11を参照しながら説明する。
【0017】
<第1実施形態>
(構成)
図2に示したように、第1実施形態に係るデータ転送装置1は、中央処理装置(CPU;Central Processing Unit)11と、記憶装置としてのメモリ12と、バッファ13と、複数の通信ポートSP1,SP2,RP1,RP2,RP3,RP4と、を備える。
【0018】
データ転送装置1は、メモリ12に記憶されているプログラムをCPU11が実行することにより、後述する機能を実現するように構成されている。
各通信ポートSP1,SP2,RP1,RP2,RP3,RP4は、通信回線を介して他の通信装置と接続されている。
【0019】
本例では、通信ポートSP1,SP2のそれぞれは、データを受信する通信装置と接続されている。即ち、通信ポートSP1,SP2のそれぞれは、送信用通信ポートとも表記される。また、通信ポートRP1,RP2,RP3,RP4(RP1〜RP4)のそれぞれは、データを送信する通信装置と接続されている。即ち、通信ポートRP1〜RP4のそれぞれは、受信用通信ポートとも表記される。
【0020】
バッファ13は、複数の通信ポートRP1〜RP4のそれぞれを経由して受信した単位データを一時的に記憶する。単位データは、予め定められた形式に従ったデータである。本例では、単位データは、プロトコル・データ・ユニット(例えば、パケット、フレーム、又は、セグメント等)を構成する。
【0021】
データ転送装置1は、受信用通信ポートRP1〜RP4を介して単位データを受信する。データ転送装置1は、受信した単位データをバッファ13に一時的に記憶させる。データ転送装置1は、バッファ13に記憶されている単位データに含まれる、当該単位データの送信先を表す情報(例えば、送信先のIP(Internet Protocol)アドレス等)に基づいて、当該単位データの送信先と対応付けられた送信用通信ポートSP1,SP2を特定する。
【0022】
そして、データ転送装置1は、特定した送信用通信ポートSP1,SP2を経由させて、バッファ13に記憶されている単位データを送信する。
このように、データ転送装置1は、単位データを転送するように構成される。
【0023】
(機能)
図3は、上記のように構成されたデータ転送装置1の機能を表すブロック図である。
データ転送装置1の機能は、スレッド生成部(スレッド生成手段)21と、処理制御部(処理制御手段)22と、単位データ送信部(単位データ送信手段)23と、を含む。
【0024】
スレッド生成部21は、単位データの送信先に基づいて、当該単位データを出力する送信用通信ポートSP1,SP2を特定するための転送準備処理を実行するための、複数(本例では、4つ)のスレッドT1〜T4を生成する。
【0025】
処理制御部22は、スレッド生成部21により生成された複数のスレッドT1〜T4に対して入力順位を予め設定する。本例では、処理制御部22は、スレッドT4、スレッドT3、スレッドT2、及び、スレッドT1の順に、入力順位が高くなるように、複数のスレッドT1〜T4に対して入力順位を設定する。
【0026】
処理制御部22は、複数の受信用通信ポートRP1〜RP4のそれぞれに対して、当該受信用通信ポートRP1〜RP4を経由して受信され且つバッファ13に記憶されている、すべての単位データのデータ量(通信ポート毎データ量)を取得する。次いで、処理制御部22は、取得された通信ポート毎データ量が大きくなるほど大きくなる優先度を複数の受信用通信ポートRP1〜RP4のそれぞれに対して算出する。本例では、処理制御部22は、取得された通信ポート毎データ量に正比例する整数を優先度として算出する。
【0027】
次いで、処理制御部22は、転送準備処理の対象となる受信用通信ポートRP1〜RP4を選択する。本例では、処理制御部22は、算出された優先度が最大である受信用通信ポートRP1〜RP4を1つだけ選択する。
【0028】
処理制御部22は、選択された受信用通信ポートRP1〜RP4を経由して受信された複数の単位データからなる単位データブロックを取得する。単位データブロックは、予め定められた方式に従って形成される。本例では、単位データブロックは、予め設定された時間間隔内に受信された単位データからなる。なお、単位データブロックは、予め設定されたデータ量を有するように形成されていてもよい。
【0029】
処理制御部22は、取得された単位データブロックを、受信された順序に従って並んだ単位データの位置を維持しながら、予め定められた処理単位毎に分割することにより複数の処理ブロックを生成する。本例では、処理制御部22は、1つの処理ブロックに含まれる単位データの数を、予め設定された処理単位数とするように、取得された単位データブロックを分割する。なお、処理制御部22は、1つの処理ブロックに含まれるデータ量を、予め設定された処理単位量とするように、取得された単位データブロックを分割するように構成されていてもよい。
【0030】
このようにして、処理制御部22は、複数の受信用通信ポートRP1〜RP4の1つを経由して受信された複数の単位データからなる単位データブロックを、予め定められた処理単位毎に分割することにより複数の処理ブロックを生成している、と言うことができる。
【0031】
処理制御部22は、生成された処理ブロックのそれぞれを、スレッド生成部21により生成された複数のスレッドT1〜T4に分散処理させる。このとき、処理制御部22は、設定された入力順位がより高いスレッドT1〜T4に、より早期に受信された単位データを含む処理ブロックを処理させる。
【0032】
これにより、各スレッドT1〜T4は、処理ブロックに対して転送準備処理を実行する。その結果、各スレッドT1〜T4は、単位データを出力する送信用通信ポートSP1,SP2を特定するための通信ポート特定情報を出力する。
【0033】
このようにして、処理制御部22は、上記取得された通信ポート毎データ量がより大きい受信用通信ポートRP1〜RP4を経由して受信された単位データからなる単位データブロックほど、より早期に複数のスレッドT1〜T4に処理させている、と言うことができる。また、処理制御部22は、上記算出された優先度が最大である受信用通信ポートRP1〜RP4を経由して受信された単位データからなる単位データブロックを複数のスレッドT1〜T4に処理させている、と言うこともできる。
【0034】
処理制御部22は、優先度を算出し且つ単位データブロックを取得し且つ複数の処理ブロックを生成し且つ複数の処理ブロックを複数のスレッドに分散処理させる処理を、バッファ13に単位データが記憶されている間、繰り返し実行する。
【0035】
単位データ送信部23は、複数のスレッドT1〜T4が転送準備処理を実行することにより出力した通信ポート特定情報を受け付ける。単位データ送信部23は、受け付けた通信ポート特定情報のそれぞれに対して、当該通信ポート特定情報により特定される送信用通信ポートSP1,SP2へ、バッファ13に記憶されている単位データを出力する(即ち、通信装置へ送信する)転送処理を実行する。
【0036】
このとき、単位データ送信部23は、処理制御部22により設定された入力順位がより高いスレッドT1〜T4から出力された通信ポート特定情報に対して、より早期に転送処理を実行する。
このように、単位データ送信部23は、処理制御部22により設定された入力順位がより高いスレッドT1〜T4により処理された単位データをより早期に送信している、と言うことができる。
【0037】
データ転送装置1は、単位データ送信部23により転送された単位データをバッファ13から消去する。
【0038】
(作動)
次に、上述したデータ転送装置1の作動について説明する。
先ず、データ転送装置1は、起動時に、転送準備処理を実行するための、複数(本例では、4つ)のスレッドT1〜T4を生成する。更に、データ転送装置1は、生成された複数のスレッドT1〜T4に対して入力順位を設定する。本例では、データ転送装置1は、スレッドT4、スレッドT3、スレッドT2、及び、スレッドT1の順に、入力順位が高くなるように、複数のスレッドT1〜T4に対して入力順位を設定する。
【0039】
また、データ転送装置1は、各受信用通信ポートRP1〜RP4を介して単位データを受信する毎に、受信した単位データをバッファ13に一時的に記憶させる。
【0040】
一方、データ転送装置1は、図4にフローチャートにより示したプログラムを実行する。
具体的に述べると、データ転送装置1は、このプログラムの処理を開始すると、バッファ13に単位データが存在する(記憶されている)か否かを判定する(ステップS101)。データ転送装置1は、バッファ13に単位データが記憶されていない場合、ステップS101にて待機する。
【0041】
いま、バッファ13に単位データが記憶されている場合を想定して説明を続ける。この場合、データ転送装置1は、「Yes」と判定してステップS102へ進み、すべてのスレッドが処理を完了しているか否かを判定する。データ転送装置1は、すべてのスレッドが処理を完了していない場合、ステップS102にて待機する。
【0042】
いま、すべてのスレッドが処理を完了している場合を想定して説明を続ける。この場合、データ転送装置1は、「Yes」と判定してステップS103へ進み、複数の受信用通信ポートRP1〜RP4のそれぞれに対して、通信ポート毎データ量を取得する。
【0043】
いま、図5に示したように、バッファ13が単位データブロックDB#1〜DB#8を記憶している場合を想定する。単位データブロックDB#1〜DB#8は、この順に、データ転送装置1に受信されたデータである。
【0044】
また、単位データブロックDB#1,DB#5は、受信用通信ポートRP1を経由して受信されたデータであり、単位データブロックDB#2,DB#6は、受信用通信ポートRP2を経由して受信されたデータであり、単位データブロックDB#3,DB#7は、受信用通信ポートRP3を経由して受信されたデータであり、単位データブロックDB#4,DB#8は、受信用通信ポートRP4を経由して受信されたデータである。
【0045】
次いで、データ転送装置1は、取得された通信ポート毎データ量が大きくなるほど大きくなる優先度を複数の受信用通信ポートRP1〜RP4のそれぞれに対して算出する(ステップS104)。
ここでは、受信用通信ポートRP3に対して算出された優先度が最大となる場合を想定する。
【0046】
そして、データ転送装置1は、転送準備処理の対象となる受信用通信ポートRP1〜RP4として、算出された優先度が最大である受信用通信ポートRP1〜RP4を1つだけ選択する。従って、ここでは、データ転送装置1は、受信用通信ポートRP3を選択する。そして、データ転送装置1は、選択された受信用通信ポートRP3を経由して受信された複数の単位データからなる単位データブロックDB#3を取得する(ステップS105)。
【0047】
次いで、データ転送装置1は、取得された単位データブロックDB#3を、受信された順序に従って並んだ単位データの位置を維持しながら、予め定められた処理単位毎に分割することにより複数の処理ブロックDB#3−1〜DB#3−4を生成する(ステップS106)。ここでは、生成された処理ブロックの数(処理ブロック数)と、生成されたスレッドの数(スレッド数)と、が一致する場合を想定する。
【0048】
そして、データ転送装置1は、図6の(A)に示したように、生成された処理ブロックDB#3−1〜DB#3−4のそれぞれを、生成された複数のスレッドT1〜T4に分散処理させる。
【0049】
これにより、スレッドT1は、処理ブロックDB#3−1に対して転送準備処理を実行し、スレッドT2は、処理ブロックDB#3−2に対して転送準備処理を実行し、スレッドT3は、処理ブロックDB#3−3に対して転送準備処理を実行し、スレッドT4は、処理ブロックDB#3−4に対して転送準備処理を実行する(ステップS107)。
【0050】
その結果、各スレッドT1〜T4は、単位データを出力する送信用通信ポートSP1,SP2を特定するための通信ポート特定情報を出力する。そして、データ転送装置1は、通信ポート特定情報のそれぞれに対して、当該通信ポート特定情報により特定される送信用通信ポートSP1,SP2へ、バッファ13に記憶されている単位データを出力する(即ち、通信装置へ送信する)転送処理を実行する(ステップS108)。
【0051】
その後、データ転送装置1は、ステップS101へ戻り、ステップS101〜ステップS108の処理を繰り返し実行する。
【0052】
この時点では、バッファ13は、図7に示したように、単位データブロックDB#1,DB#2,DB#4〜DB#8を記憶している。また、受信用通信ポートRP1に対して算出される優先度が最大となる。
【0053】
従って、データ転送装置1は、受信用通信ポートRP1を選択し、選択された受信用通信ポートRP1を経由して受信された複数の単位データからなる単位データブロックDB#1を取得する(ステップS105)。
【0054】
次いで、データ転送装置1は、取得された単位データブロックDB#1を、受信された順序に従って並んだ単位データの位置を維持しながら、予め定められた処理単位毎に分割することにより複数の処理ブロックDB#1−1〜DB#1−3を生成する(ステップS106)。ここでは、処理ブロック数がスレッド数よりも少ない場合を想定する。
【0055】
そして、データ転送装置1は、図6の(B)に示したように、生成された処理ブロックDB#1−1〜DB#1−3のそれぞれを、生成された複数のスレッドT1〜T3に分散処理させる。
【0056】
これにより、スレッドT1は、処理ブロックDB#1−1に対して転送準備処理を実行し、スレッドT2は、処理ブロックDB#1−2に対して転送準備処理を実行し、スレッドT3は、処理ブロックDB#1−3に対して転送準備処理を実行する(ステップS107)。
【0057】
その結果、各スレッドT1〜T3は、単位データを出力する送信用通信ポートSP1,SP2を特定するための通信ポート特定情報を出力する。そして、データ転送装置1は、通信ポート特定情報のそれぞれに対して転送処理を実行する(ステップS108)。
【0058】
その後、データ転送装置1は、ステップS101へ戻り、ステップS101〜ステップS108の処理を繰り返し実行する。
【0059】
この時点では、バッファ13は、図8に示したように、単位データブロックDB#2,DB#4〜DB#8を記憶している。また、受信用通信ポートRP4に対して算出される優先度が最大となる。
【0060】
従って、データ転送装置1は、受信用通信ポートRP4を選択し、選択された受信用通信ポートRP4を経由して受信された複数の単位データからなる単位データブロックDB#4を取得する(ステップS105)。
【0061】
次いで、データ転送装置1は、取得された単位データブロックDB#4を、受信された順序に従って並んだ単位データの位置を維持しながら、予め定められた処理単位毎に分割することにより複数の処理ブロックDB#4−1〜DB#4−4を生成する(ステップS106)。ここでは、処理ブロック数とスレッド数とが一致する場合を想定する。
【0062】
そして、データ転送装置1は、図6の(C)に示したように、生成された処理ブロックDB#4−1〜DB#4−4のそれぞれを、生成された複数のスレッドT1〜T4に分散処理させる。
【0063】
これにより、スレッドT1は、処理ブロックDB#4−1に対して転送準備処理を実行し、スレッドT2は、処理ブロックDB#4−2に対して転送準備処理を実行し、スレッドT3は、処理ブロックDB#4−3に対して転送準備処理を実行し、スレッドT4は、処理ブロックDB#4−4に対して転送準備処理を実行する(ステップS107)。
【0064】
その結果、各スレッドT1〜T4は、単位データを出力する送信用通信ポートSP1,SP2を特定するための通信ポート特定情報を出力する。そして、データ転送装置1は、通信ポート特定情報のそれぞれに対して転送処理を実行する(ステップS108)。
【0065】
以上、説明したように、本発明の第1実施形態に係るデータ転送装置1によれば、単位データブロックに含まれる単位データの数が相対的に多い通信ポートRP1〜RP4に係る転送準備処理の完了が無駄に遅くることを防止することができる。その結果、この通信ポートRP1〜RP4を経由して受信した単位データの遅延時間(転送処理に要する時間)が無駄に長くなることを防止することができる。このように、データ転送装置1によれば、単位データに対する処理(転送準備処理)を迅速に完了することができる。
【0066】
更に、本発明の第1実施形態に係るデータ転送装置1は、複数のスレッドT1〜T4に対して入力順位を予め設定するとともに、設定された入力順位がより高いスレッドT1〜T4に、より早期に受信された単位データを含む処理ブロックを処理させる。加えて、データ転送装置1は、設定された入力順位がより高いスレッドにより処理された単位データをより早期に送信する。
【0067】
これによれば、単位データが受信された順序を変更することなく、単位データを送信(転送)することができる。
【0068】
更に、本発明の第1実施形態に係るデータ転送装置1は、複数の通信ポートRP1〜RP4のそれぞれに対して通信ポート毎データ量を取得する。加えて、データ転送装置1は、取得された通信ポート毎データ量がより大きい通信ポートRP1〜RP4を経由して受信された単位データからなる単位データブロックほど、より早期に複数のスレッドT1〜T4に処理させる。
【0069】
これによれば、ある通信ポートRP1〜RP4を経由して、単位時間あたりに受信される単位データのデータ量が過大である場合であっても、当該単位データの遅延時間(転送処理に要する時間)が過大となることを回避することができる。
【0070】
<第2実施形態>
次に、本発明の第2実施形態に係るデータ転送装置について説明する。第2実施形態に係るデータ転送装置は、上記第1実施形態に係るデータ転送装置に対して、処理ブロック数がスレッド数よりも少ない場合、当該生成された処理ブロックのそれぞれを複数のスレッドの一部に処理させるとともに、複数のスレッドの残余のスレッドに、他の単位データブロックを処理させる点において相違している。従って、以下、かかる相違点を中心として説明する。
【0071】
(機能)
第2実施形態に係る処理制御部22は、取得した単位データブロック(第1の単位データブロック)を処理単位毎に分割することにより複数の処理ブロックを生成した際に、生成された処理ブロックの数(処理ブロック数)が、スレッド生成部21により生成されたスレッドT1〜T4の数(スレッド数、本例では、4つ)よりも少ないか否かを判定する。
【0072】
そして、処理制御部22は、処理ブロック数がスレッド数よりも少ないと判定した場合、第1の単位データブロックに対する、スレッドT1〜T4による転送準備処理が完了する将来の時点にて算出される予定の優先度を算出する。更に、処理制御部22は、算出された優先度が最大である受信用通信ポートRP1〜RP4を経由して受信された単位データからなる単位データブロックを第2の単位データブロックとして選択する。
【0073】
加えて、処理制御部22は、選択された第2の単位データブロックを処理単位毎に分割することにより複数の処理ブロックを生成する。そして、処理制御部22は、第1の単位データブロックに基づいて生成された処理ブロックのそれぞれを複数のスレッドT1〜T4の一部に処理させるとともに、複数のスレッドT1〜T4の残余のスレッドに、第2の単位データブロックに基づいて生成された処理ブロックを処理させる。
【0074】
(作動)
次に、第2実施形態に係るデータ転送装置1の作動について、図9を参照しながら説明する。第2実施形態に係るデータ転送装置1は、図4に示したプログラムに代えて、図4のステップS106及びステップS107の間に、図9に示したステップS201〜ステップS205の処理を追加したプログラムを実行する。
【0075】
いま、第1実施形態と同様に、図5に示したように、バッファ13が単位データブロックDB#1〜DB#8を記憶している場合を想定する。
この場合、データ転送装置1は、受信用通信ポートRP3に対して最大の優先度を算出する(図4のステップS104)。
【0076】
そして、データ転送装置1は、受信用通信ポートRP3を選択し、選択された受信用通信ポートRP3を経由して受信された複数の単位データからなる単位データブロックDB#3を取得する(図4のステップS105)。
【0077】
次いで、データ転送装置1は、取得された単位データブロックDB#3を、受信された順序に従って並んだ単位データの位置を維持しながら、予め定められた処理単位毎に分割することにより複数の処理ブロックDB#3−1〜DB#3−4を生成する(図4のステップS106)。
【0078】
次いで、データ転送装置1は、図9のステップS201へ進み、処理ブロック数がスレッド数よりも少ないか否かを判定する。ここでは、処理ブロック数とスレッド数とが一致する。従って、データ転送装置1は、「No」と判定して図4のステップS107へ進む。
【0079】
そして、データ転送装置1は、図10の(A)に示したように、生成された処理ブロックDB#3−1〜DB#3−4のそれぞれを、生成された複数のスレッドT1〜T4に分散処理させる。
その後、データ転送装置1は、転送処理を実行し(図4のステップS108)、図4のステップS101へ戻る。
【0080】
この時点では、バッファ13は、図7に示したように、単位データブロックDB#1,DB#2,DB#4〜DB#8を記憶している。
この場合、データ転送装置1は、受信用通信ポートRP1に対して最大の優先度を算出する(図4のステップS104)。
【0081】
そして、データ転送装置1は、受信用通信ポートRP1を選択し、選択された受信用通信ポートRP1を経由して受信された複数の単位データからなる単位データブロックDB#1を取得する(図4のステップS105)。
【0082】
次いで、データ転送装置1は、取得された単位データブロックDB#1(即ち、第1の単位データブロック)を、受信された順序に従って並んだ単位データの位置を維持しながら、予め定められた処理単位毎に分割することにより複数の処理ブロックDB#1−1〜DB#1−3を生成する(図4のステップS106)。
【0083】
次いで、データ転送装置1は、図9のステップS201へ進み、処理ブロック数がスレッド数よりも少ないか否かを判定する。ここでは、処理ブロック数がスレッド数よりも少ない。従って、データ転送装置1は、「Yes」と判定して図9のステップS202へ進む。
【0084】
そして、データ転送装置1は、図4のステップS105にて取得された単位データブロックDB#1(即ち、第1の単位データブロック)に対する、スレッドT1〜T3による転送準備処理が完了する将来の時点にて算出される予定の優先度を算出する。
【0085】
具体的には、データ転送装置1は、バッファ13から単位データブロックDB#1が消去された状態における通信ポート毎データ量を取得する(図9のステップS202)。更に、データ転送装置1は、取得された通信ポート毎データ量が大きくなるほど大きくなる優先度を複数の受信用通信ポートRP1〜RP4のそれぞれに対して算出する(図9のステップS203)。このようにして、データ転送装置1は、上記将来の時点にて算出される予定の優先度を算出する。
【0086】
そして、データ転送装置1は、算出された優先度が最大である受信用通信ポートRP1〜RP4(ここでは、受信用通信ポートRP4)を経由して受信された単位データからなる単位データブロックDB#4を第2の単位データブロックとして取得(選択)する(図9のステップS204)。
【0087】
次いで、データ転送装置1は、取得された単位データブロックDB#4(第2の単位データブロック)を処理単位毎に分割することにより複数の処理ブロックDB#4−1〜DB#4を生成する(図9のステップS205)。
【0088】
そして、データ転送装置1は、図10の(B)に示したように、単位データブロックDB#1(第1の単位データブロック)に基づいて生成された処理ブロックDB#1−1〜DB#1−3のそれぞれを複数のスレッドT1〜T4の一部のスレッドT1〜T3に処理させるとともに、複数のスレッドT1〜T4の残余のスレッドT4に、単位データブロックDB#4(第2の単位データブロック)に基づいて生成された処理ブロックDB#4−1を処理させる。
【0089】
これにより、スレッドT1は、処理ブロックDB#1−1に対して転送準備処理を実行し、スレッドT2は、処理ブロックDB#1−2に対して転送準備処理を実行し、スレッドT3は、処理ブロックDB#1−3に対して転送準備処理を実行し、スレッドT4は、処理ブロックDB#4−1に対して転送準備処理を実行する(図4のステップS107)。
【0090】
その結果、各スレッドT1〜T4は、単位データを出力する送信用通信ポートSP1,SP2を特定するための通信ポート特定情報を出力する。そして、データ転送装置1は、通信ポート特定情報のそれぞれに対して転送処理を実行する(ステップS108)。
【0091】
次に、データ転送装置1が図4のステップS107に進んだときには、データ転送装置1は、図10の(C)に示したように、単位データブロックDB#4(第1の単位データブロック)に基づいて生成された処理ブロックDB#4−2〜DB#4−4のそれぞれを複数のスレッドT1〜T4の一部のスレッドT1〜T3に処理させるとともに、複数のスレッドT1〜T4の残余のスレッドT4に、単位データブロックDB#2(第2の単位データブロック)に基づいて生成された処理ブロックDB#2−1を処理させる。
【0092】
これにより、スレッドT1は、処理ブロックDB#4−2に対して転送準備処理を実行し、スレッドT2は、処理ブロックDB#4−3に対して転送準備処理を実行し、スレッドT3は、処理ブロックDB#4−4に対して転送準備処理を実行し、スレッドT4は、処理ブロックDB#2−1に対して転送準備処理を実行する(図4のステップS107)。
【0093】
その結果、各スレッドT1〜T4は、単位データを出力する送信用通信ポートSP1,SP2を特定するための通信ポート特定情報を出力する。そして、データ転送装置1は、通信ポート特定情報のそれぞれに対して転送処理を実行する(ステップS108)。
【0094】
以上、説明したように、本発明の第2実施形態に係るデータ転送装置1は、第1の単位データブロックから複数の処理ブロックを生成した場合において、処理ブロック数がスレッド数よりも少ない場合、当該生成された処理ブロックのそれぞれを複数のスレッドT1〜T4の一部に処理させるとともに、複数のスレッドT1〜T4の残余のスレッドに、第2の単位データブロックを処理させる。
【0095】
これによれば、単位データブロックに含まれる単位データの数(又は、データ量)が少ない場合であっても、スレッドにおいて、いずれの処理も実行していない空転時間(無駄な時間)が生じることを防止することができる。この結果、単位データに対する処理(転送準備処理)をより一層迅速に完了することができる。
【0096】
更に、本発明の第2実施形態に係るデータ転送装置1は、第1の単位データブロックに対する処理が完了する将来の時点にて算出される予定の優先度を算出し、当該算出された優先度が最大である通信ポートRP1〜RP4を経由して受信された単位データからなる単位データブロックを第2の単位データブロックとして選択する。
【0097】
これによれば、ある通信ポートRP1〜RP4を経由して、単位時間あたりに受信される単位データのデータ量が過大である場合であっても、当該単位データの遅延時間(転送処理に要する時間)が過大となることをより一層確実に回避することができる。
【0098】
<第3実施形態>
次に、本発明の第3実施形態に係るデータ転送装置について図11を参照しながら説明する。
第3実施形態に係るデータ転送装置100は、
複数の通信ポートと、
上記複数の通信ポートのそれぞれを経由して受信した単位データを一時的に記憶するバッファと、
上記単位データの送信先に基づいて、当該単位データを出力する通信ポートを特定するための転送準備処理を実行するための、複数のスレッドを生成するスレッド生成部(スレッド生成手段)101と、
上記複数の通信ポートの1つを経由して受信された複数の上記単位データからなり且つ予め定められた方式に従って形成された単位データブロックを、予め定められた処理単位毎に分割することにより複数の処理ブロックを生成し、当該生成された処理ブロックのそれぞれを上記生成された複数のスレッドに分散処理させる処理制御部(処理制御手段)102と、
を備える。
【0099】
これによれば、単位データブロックに含まれる単位データの数が相対的に多い通信ポートに係る転送準備処理の完了が無駄に遅くることを防止することができる。その結果、この通信ポートを経由して受信した単位データの遅延時間(転送処理に要する時間)が無駄に長くなることを防止することができる。このように、データ転送装置100によれば、単位データに対する処理(転送準備処理)を迅速に完了することができる。
【0100】
以上、上記実施形態を参照して本願発明を説明したが、本願発明は、上述した実施形態に限定されるものではない。本願発明の構成及び詳細に、本願発明の範囲内において当業者が理解し得る様々な変更をすることができる。
【0101】
例えば、上記各実施形態においては、受信用通信ポートRP1〜RP4の数と、生成されるスレッドの数と、が一致していたが、異なっていてもよい。
【0102】
なお、上記各実施形態においてデータ転送装置1の各機能は、CPUがプログラム(ソフトウェア)を実行することにより実現されていたが、回路等のハードウェアにより実現されていてもよい。
【0103】
また、上記各実施形態においてプログラムは、記憶装置に記憶されていたが、コンピュータが読み取り可能な記録媒体に記憶されていてもよい。例えば、記録媒体は、フレキシブルディスク、光ディスク、光磁気ディスク、及び、半導体メモリ等の可搬性を有する媒体である。
【0104】
また、上記実施形態の他の変形例として、上述した実施形態及び変形例の任意の組み合わせが採用されてもよい。
【0105】
<付記>
上記実施形態の一部又は全部は、以下の付記のように記載され得るが、以下には限られない。
【0106】
(付記1)
複数の通信ポートと、
前記複数の通信ポートのそれぞれを経由して受信した単位データを一時的に記憶するバッファと、
前記単位データの送信先に基づいて、当該単位データを出力する通信ポートを特定するための転送準備処理を実行するための、複数のスレッドを生成するスレッド生成手段と、
前記複数の通信ポートの1つを経由して受信された複数の前記単位データからなり且つ予め定められた方式に従って形成された単位データブロックを、予め定められた処理単位毎に分割することにより複数の処理ブロックを生成し、当該生成された処理ブロックのそれぞれを前記生成された複数のスレッドに分散処理させる処理制御手段と、
を備えるデータ転送装置。
【0107】
これによれば、単位データブロックに含まれる単位データの数が相対的に多い通信ポートに係る転送準備処理の完了が無駄に遅くることを防止することができる。その結果、この通信ポートを経由して受信した単位データの遅延時間(転送処理に要する時間)が無駄に長くなることを防止することができる。このように、上記データ転送装置によれば、単位データに対する処理(転送準備処理)を迅速に完了することができる。
【0108】
(付記2)
付記1に記載のデータ転送装置であって、
前記処理制御手段は、前記複数のスレッドに対して入力順位を予め設定するとともに、当該設定された入力順位がより高いスレッドに、より早期に受信された単位データを含む処理ブロックを処理させるように構成され、
前記設定された入力順位がより高いスレッドにより処理された単位データをより早期に送信する単位データ送信手段を備えるデータ転送装置。
【0109】
これによれば、単位データが受信された順序を変更することなく、単位データを送信(転送)することができる。
【0110】
(付記3)
付記1又は付記2に記載のデータ転送装置であって、
前記処理制御手段は、
前記複数の通信ポートのそれぞれに対して、当該通信ポートを経由して受信され且つ前記バッファに記憶されている、すべての単位データのデータ量を取得し、当該取得されたデータ量がより大きい通信ポートを経由して受信された単位データからなる単位データブロックほど、より早期に前記複数のスレッドに処理させるように構成されたデータ転送装置。
【0111】
これによれば、ある通信ポートを経由して、単位時間あたりに受信される単位データのデータ量が過大である場合であっても、当該単位データの遅延時間(転送処理に要する時間)が過大となることを回避することができる。
【0112】
(付記4)
付記3に記載のデータ転送装置であって、
前記処理制御手段は、
前記取得されたデータ量が大きくなるほど大きくなる優先度を算出し、当該算出された優先度が最大である通信ポートを経由して受信された単位データからなる単位データブロックを前記複数のスレッドに処理させるように構成されたデータ転送装置。
【0113】
(付記5)
付記4に記載のデータ転送装置であって、
前記処理制御手段は、
第1の単位データブロックを前記処理単位毎に分割することにより複数の処理ブロックを生成するとともに、当該生成された処理ブロックの数が、前記生成されたスレッドの数よりも少ない場合、当該生成された処理ブロックのそれぞれを前記生成された複数のスレッドの一部に処理させるとともに、当該生成された複数のスレッドの残余のスレッドに、第2の単位データブロックを処理させるように構成されたデータ転送装置。
【0114】
これによれば、単位データブロックに含まれる単位データの数(又は、データ量)が少ない場合であっても、スレッドにおいて、いずれの処理も実行していない空転時間(無駄な時間)が生じることを防止することができる。この結果、単位データに対する処理(転送準備処理)をより一層迅速に完了することができる。
【0115】
(付記6)
付記5に記載のデータ転送装置であって、
前記処理制御手段は、
前記第1の単位データブロックに対する処理が完了する将来の時点にて算出される予定の優先度を算出し、当該算出された優先度が最大である通信ポートを経由して受信された単位データからなる単位データブロックを前記第2の単位データブロックとして選択するように構成されたデータ転送装置。
【0116】
これによれば、ある通信ポートを経由して、単位時間あたりに受信される単位データのデータ量が過大である場合であっても、当該単位データの遅延時間(転送処理に要する時間)が過大となることをより一層確実に回避することができる。
【0117】
(付記7)
複数の通信ポートと、
前記複数の通信ポートのそれぞれを経由して受信した単位データを一時的に記憶するバッファと、
を備えるデータ転送装置に適用され、
前記単位データの送信先に基づいて、当該単位データを出力する通信ポートを特定するための転送準備処理を実行するための、複数のスレッドを生成し、
前記複数の通信ポートの1つを経由して受信された複数の前記単位データからなり且つ予め定められた方式に従って形成された単位データブロックを、予め定められた処理単位毎に分割することにより複数の処理ブロックを生成し、当該生成された処理ブロックのそれぞれを前記生成された複数のスレッドに分散処理させる、データ転送方法。
【0118】
(付記8)
付記7に記載のデータ転送方法であって、
前記複数のスレッドに対して入力順位を予め設定するとともに、当該設定された入力順位がより高いスレッドに、より早期に受信された単位データを含む処理ブロックを処理させ、
前記設定された入力順位がより高いスレッドによって処理された単位データをより早期に送信する、データ転送方法。
【0119】
(付記9)
付記7又は付記8に記載のデータ転送方法であって、
前記複数の通信ポートのそれぞれに対して、当該通信ポートを経由して受信され且つ前記バッファに記憶されている、すべての単位データのデータ量を取得し、当該取得されたデータ量がより大きい通信ポートを経由して受信された単位データからなる単位データブロックほど、より早期に前記複数のスレッドに処理させる、データ転送方法。
【0120】
(付記10)
複数の通信ポートと、
前記複数の通信ポートのそれぞれを経由して受信した単位データを一時的に記憶するバッファと、
を備えるデータ転送装置に、
前記単位データの送信先に基づいて、当該単位データを出力する通信ポートを特定するための転送準備処理を実行するための、複数のスレッドを生成するスレッド生成手段と、
前記複数の通信ポートの1つを経由して受信された複数の前記単位データからなり且つ予め定められた方式に従って形成された単位データブロックを、予め定められた処理単位毎に分割することにより複数の処理ブロックを生成し、当該生成された処理ブロックのそれぞれを前記生成された複数のスレッドに分散処理させる処理制御手段と、
を実現させるためのプログラム。
【0121】
(付記11)
付記10に記載のプログラムであって、
前記処理制御手段は、前記複数のスレッドに対して入力順位を予め設定するとともに、当該設定された入力順位がより高いスレッドに、より早期に受信された単位データを含む処理ブロックを処理させるように構成され、
前記データ転送装置に、更に、
前記設定された入力順位がより高いスレッドにより処理された単位データをより早期に送信する単位データ送信手段を実現させるためのプログラム。
【0122】
(付記12)
付記10又は付記11に記載のプログラムであって、
前記処理制御手段は、
前記複数の通信ポートのそれぞれに対して、当該通信ポートを経由して受信され且つ前記バッファに記憶されている、すべての単位データのデータ量を取得し、当該取得されたデータ量がより大きい通信ポートを経由して受信された単位データからなる単位データブロックほど、より早期に前記複数のスレッドに処理させるように構成されたプログラム。
【産業上の利用可能性】
【0123】
本発明は、データを転送する、レイヤ3スイッチ、又は、ルータ等に適用可能である。
【符号の説明】
【0124】
1 データ転送装置
11 CPU
12 メモリ
13 バッファ
21 スレッド生成部
22 処理制御部
23 単位データ送信部
100 データ転送装置
101 スレッド生成部
102 処理制御部
RP1,RP2,RP3,RP4,SP1,SP2 通信ポート
【技術分野】
【0001】
本発明は、データを転送するデータ転送装置に関する。
【背景技術】
【0002】
予め定められた形式に従った単位データ(プロトコル・データ・ユニット、例えば、パケット、フレーム、又は、セグメント等)を転送するデータ転送装置が知られている。この種のデータ転送装置の一つとして特許文献1に記載のデータ転送装置は、複数の通信ポート(物理ポート)と、通信ポートを経由して受信した単位データを一時的に記憶するバッファと、を備える。
【0003】
データ転送装置は、複数の単位データからなる単位データブロック毎に転送準備処理を行う。例えば、単位データブロックは、予め設定されたデータ量を有するように定められる。また、単位データブロックは、予め設定された時間間隔内に受信された単位データを含むように定められる。転送準備処理は、単位データブロックに含まれる各単位データの送信先に基づいて、当該単位データを出力する通信ポートを特定するための処理である。
【0004】
また、複数のスレッドを生成し、生成した複数のスレッドにより分散処理を行うマルチスレッド技術が知られている。
【先行技術文献】
【特許文献】
【0005】
【特許文献1】特開2006−246087号公報
【発明の概要】
【発明が解決しようとする課題】
【0006】
そこで、マルチスレッド技術をデータ転送装置に適用することが好適であると考えられる。この場合、データ転送装置は、各通信ポートに対して1つのスレッドを割り当て、各通信ポートを経由して受信した単位データに対する転送準備処理を、当該通信ポートに対して割り当てられたスレッドに実行させるように構成されることが好適であると考えられる。
【0007】
ところで、図1に示したように、単位データブロックDB#1〜DB#8に含まれる単位データの数は、通信ポート毎に異なることが多い。従って、各スレッド#1〜#4が転送準備処理を完了するタイミングは、互いに異なることが多い。その結果、図1に示した例においては、スレッド#1,#2,#4において、いずれの処理も実行していない空転時間(無駄な時間)が生じる。
【0008】
即ち、上記データ転送装置にマルチスレッド技術を適用した場合、単位データブロックに含まれる単位データの数が相対的に多い通信ポートに係る転送準備処理の完了が無駄に遅くなってしまう。その結果、この通信ポートを経由して受信した単位データの遅延時間(転送処理に要する時間)が無駄に長くなってしまう。
【0009】
これに対処するため、転送準備処理を完了したスレッドが、当該スレッドに対して割り当てられた通信ポート以外の通信ポートに係る単位データを処理するようにデータ転送装置を構成することが考えられる。しかしながら、この場合、転送準備処理の結果が出力される順序が変化するので、単位データを、受信した順に送信するためには、単位データを転送する順序を制御する必要が生じるという問題がある。
【0010】
このため、本発明の目的は、上述した課題である「単位データに対する処理が無駄に遅くなる場合が生じること」を解決することが可能なデータ転送装置を提供することにある。
【課題を解決するための手段】
【0011】
かかる目的を達成するため本発明の一形態であるデータ転送装置は、
複数の通信ポートと、
上記複数の通信ポートのそれぞれを経由して受信した単位データを一時的に記憶するバッファと、
上記単位データの送信先に基づいて、当該単位データを出力する通信ポートを特定するための転送準備処理を実行するための、複数のスレッドを生成するスレッド生成手段と、
上記複数の通信ポートの1つを経由して受信された複数の上記単位データからなり且つ予め定められた方式に従って形成された単位データブロックを、予め定められた処理単位毎に分割することにより複数の処理ブロックを生成し、当該生成された処理ブロックのそれぞれを上記生成された複数のスレッドに分散処理させる処理制御手段と、
を備える。
【0012】
また、本発明の他の形態であるデータ転送方法は、
複数の通信ポートと、
上記複数の通信ポートのそれぞれを経由して受信した単位データを一時的に記憶するバッファと、
を備えるデータ転送装置に適用され、
上記単位データの送信先に基づいて、当該単位データを出力する通信ポートを特定するための転送準備処理を実行するための、複数のスレッドを生成し、
上記複数の通信ポートの1つを経由して受信された複数の上記単位データからなり且つ予め定められた方式に従って形成された単位データブロックを、予め定められた処理単位毎に分割することにより複数の処理ブロックを生成し、当該生成された処理ブロックのそれぞれを上記生成された複数のスレッドに分散処理させる方法である。
【0013】
また、本発明の他の形態であるプログラムは、
複数の通信ポートと、
上記複数の通信ポートのそれぞれを経由して受信した単位データを一時的に記憶するバッファと、
を備えるデータ転送装置に、
上記単位データの送信先に基づいて、当該単位データを出力する通信ポートを特定するための転送準備処理を実行するための、複数のスレッドを生成するスレッド生成手段と、
上記複数の通信ポートの1つを経由して受信された複数の上記単位データからなり且つ予め定められた方式に従って形成された単位データブロックを、予め定められた処理単位毎に分割することにより複数の処理ブロックを生成し、当該生成された処理ブロックのそれぞれを上記生成された複数のスレッドに分散処理させる処理制御手段と、
を実現させるためのプログラムである。
【発明の効果】
【0014】
本発明は、以上のように構成されることにより、単位データに対する処理を迅速に完了することができる。
【図面の簡単な説明】
【0015】
【図1】背景技術に係るデータ転送装置の各スレッドが処理を実行する時間を概念的に示した説明図である。
【図2】本発明の第1実施形態に係るデータ転送装置の概略構成を表す図である。
【図3】本発明の第1実施形態に係るデータ転送装置の機能の概略を表すブロック図である。
【図4】本発明の第1実施形態に係るデータ転送装置のCPUが実行するプログラムを示したフローチャートである。
【図5】本発明の第1実施形態に係るデータ転送装置のバッファが記憶している単位データブロックを概念的に示した説明図である。
【図6】本発明の第1実施形態に係るデータ転送装置の各スレッドが処理する処理ブロックを概念的に示した説明図である。
【図7】本発明の第1実施形態に係るデータ転送装置のバッファが記憶している単位データブロックを概念的に示した説明図である。
【図8】本発明の第1実施形態に係るデータ転送装置のバッファが記憶している単位データブロックを概念的に示した説明図である。
【図9】本発明の第2実施形態に係るデータ転送装置のCPUが、図4の処理に追加して実行する処理を示したフローチャートである。
【図10】本発明の第2実施形態に係るデータ転送装置の各スレッドが処理する処理ブロックを概念的に示した説明図である。
【図11】本発明の第3実施形態に係るデータ転送装置の機能の概略を表すブロック図である。
【発明を実施するための形態】
【0016】
以下、本発明に係る、データ転送装置、データ転送方法、及び、プログラム、の各実施形態について図1〜図11を参照しながら説明する。
【0017】
<第1実施形態>
(構成)
図2に示したように、第1実施形態に係るデータ転送装置1は、中央処理装置(CPU;Central Processing Unit)11と、記憶装置としてのメモリ12と、バッファ13と、複数の通信ポートSP1,SP2,RP1,RP2,RP3,RP4と、を備える。
【0018】
データ転送装置1は、メモリ12に記憶されているプログラムをCPU11が実行することにより、後述する機能を実現するように構成されている。
各通信ポートSP1,SP2,RP1,RP2,RP3,RP4は、通信回線を介して他の通信装置と接続されている。
【0019】
本例では、通信ポートSP1,SP2のそれぞれは、データを受信する通信装置と接続されている。即ち、通信ポートSP1,SP2のそれぞれは、送信用通信ポートとも表記される。また、通信ポートRP1,RP2,RP3,RP4(RP1〜RP4)のそれぞれは、データを送信する通信装置と接続されている。即ち、通信ポートRP1〜RP4のそれぞれは、受信用通信ポートとも表記される。
【0020】
バッファ13は、複数の通信ポートRP1〜RP4のそれぞれを経由して受信した単位データを一時的に記憶する。単位データは、予め定められた形式に従ったデータである。本例では、単位データは、プロトコル・データ・ユニット(例えば、パケット、フレーム、又は、セグメント等)を構成する。
【0021】
データ転送装置1は、受信用通信ポートRP1〜RP4を介して単位データを受信する。データ転送装置1は、受信した単位データをバッファ13に一時的に記憶させる。データ転送装置1は、バッファ13に記憶されている単位データに含まれる、当該単位データの送信先を表す情報(例えば、送信先のIP(Internet Protocol)アドレス等)に基づいて、当該単位データの送信先と対応付けられた送信用通信ポートSP1,SP2を特定する。
【0022】
そして、データ転送装置1は、特定した送信用通信ポートSP1,SP2を経由させて、バッファ13に記憶されている単位データを送信する。
このように、データ転送装置1は、単位データを転送するように構成される。
【0023】
(機能)
図3は、上記のように構成されたデータ転送装置1の機能を表すブロック図である。
データ転送装置1の機能は、スレッド生成部(スレッド生成手段)21と、処理制御部(処理制御手段)22と、単位データ送信部(単位データ送信手段)23と、を含む。
【0024】
スレッド生成部21は、単位データの送信先に基づいて、当該単位データを出力する送信用通信ポートSP1,SP2を特定するための転送準備処理を実行するための、複数(本例では、4つ)のスレッドT1〜T4を生成する。
【0025】
処理制御部22は、スレッド生成部21により生成された複数のスレッドT1〜T4に対して入力順位を予め設定する。本例では、処理制御部22は、スレッドT4、スレッドT3、スレッドT2、及び、スレッドT1の順に、入力順位が高くなるように、複数のスレッドT1〜T4に対して入力順位を設定する。
【0026】
処理制御部22は、複数の受信用通信ポートRP1〜RP4のそれぞれに対して、当該受信用通信ポートRP1〜RP4を経由して受信され且つバッファ13に記憶されている、すべての単位データのデータ量(通信ポート毎データ量)を取得する。次いで、処理制御部22は、取得された通信ポート毎データ量が大きくなるほど大きくなる優先度を複数の受信用通信ポートRP1〜RP4のそれぞれに対して算出する。本例では、処理制御部22は、取得された通信ポート毎データ量に正比例する整数を優先度として算出する。
【0027】
次いで、処理制御部22は、転送準備処理の対象となる受信用通信ポートRP1〜RP4を選択する。本例では、処理制御部22は、算出された優先度が最大である受信用通信ポートRP1〜RP4を1つだけ選択する。
【0028】
処理制御部22は、選択された受信用通信ポートRP1〜RP4を経由して受信された複数の単位データからなる単位データブロックを取得する。単位データブロックは、予め定められた方式に従って形成される。本例では、単位データブロックは、予め設定された時間間隔内に受信された単位データからなる。なお、単位データブロックは、予め設定されたデータ量を有するように形成されていてもよい。
【0029】
処理制御部22は、取得された単位データブロックを、受信された順序に従って並んだ単位データの位置を維持しながら、予め定められた処理単位毎に分割することにより複数の処理ブロックを生成する。本例では、処理制御部22は、1つの処理ブロックに含まれる単位データの数を、予め設定された処理単位数とするように、取得された単位データブロックを分割する。なお、処理制御部22は、1つの処理ブロックに含まれるデータ量を、予め設定された処理単位量とするように、取得された単位データブロックを分割するように構成されていてもよい。
【0030】
このようにして、処理制御部22は、複数の受信用通信ポートRP1〜RP4の1つを経由して受信された複数の単位データからなる単位データブロックを、予め定められた処理単位毎に分割することにより複数の処理ブロックを生成している、と言うことができる。
【0031】
処理制御部22は、生成された処理ブロックのそれぞれを、スレッド生成部21により生成された複数のスレッドT1〜T4に分散処理させる。このとき、処理制御部22は、設定された入力順位がより高いスレッドT1〜T4に、より早期に受信された単位データを含む処理ブロックを処理させる。
【0032】
これにより、各スレッドT1〜T4は、処理ブロックに対して転送準備処理を実行する。その結果、各スレッドT1〜T4は、単位データを出力する送信用通信ポートSP1,SP2を特定するための通信ポート特定情報を出力する。
【0033】
このようにして、処理制御部22は、上記取得された通信ポート毎データ量がより大きい受信用通信ポートRP1〜RP4を経由して受信された単位データからなる単位データブロックほど、より早期に複数のスレッドT1〜T4に処理させている、と言うことができる。また、処理制御部22は、上記算出された優先度が最大である受信用通信ポートRP1〜RP4を経由して受信された単位データからなる単位データブロックを複数のスレッドT1〜T4に処理させている、と言うこともできる。
【0034】
処理制御部22は、優先度を算出し且つ単位データブロックを取得し且つ複数の処理ブロックを生成し且つ複数の処理ブロックを複数のスレッドに分散処理させる処理を、バッファ13に単位データが記憶されている間、繰り返し実行する。
【0035】
単位データ送信部23は、複数のスレッドT1〜T4が転送準備処理を実行することにより出力した通信ポート特定情報を受け付ける。単位データ送信部23は、受け付けた通信ポート特定情報のそれぞれに対して、当該通信ポート特定情報により特定される送信用通信ポートSP1,SP2へ、バッファ13に記憶されている単位データを出力する(即ち、通信装置へ送信する)転送処理を実行する。
【0036】
このとき、単位データ送信部23は、処理制御部22により設定された入力順位がより高いスレッドT1〜T4から出力された通信ポート特定情報に対して、より早期に転送処理を実行する。
このように、単位データ送信部23は、処理制御部22により設定された入力順位がより高いスレッドT1〜T4により処理された単位データをより早期に送信している、と言うことができる。
【0037】
データ転送装置1は、単位データ送信部23により転送された単位データをバッファ13から消去する。
【0038】
(作動)
次に、上述したデータ転送装置1の作動について説明する。
先ず、データ転送装置1は、起動時に、転送準備処理を実行するための、複数(本例では、4つ)のスレッドT1〜T4を生成する。更に、データ転送装置1は、生成された複数のスレッドT1〜T4に対して入力順位を設定する。本例では、データ転送装置1は、スレッドT4、スレッドT3、スレッドT2、及び、スレッドT1の順に、入力順位が高くなるように、複数のスレッドT1〜T4に対して入力順位を設定する。
【0039】
また、データ転送装置1は、各受信用通信ポートRP1〜RP4を介して単位データを受信する毎に、受信した単位データをバッファ13に一時的に記憶させる。
【0040】
一方、データ転送装置1は、図4にフローチャートにより示したプログラムを実行する。
具体的に述べると、データ転送装置1は、このプログラムの処理を開始すると、バッファ13に単位データが存在する(記憶されている)か否かを判定する(ステップS101)。データ転送装置1は、バッファ13に単位データが記憶されていない場合、ステップS101にて待機する。
【0041】
いま、バッファ13に単位データが記憶されている場合を想定して説明を続ける。この場合、データ転送装置1は、「Yes」と判定してステップS102へ進み、すべてのスレッドが処理を完了しているか否かを判定する。データ転送装置1は、すべてのスレッドが処理を完了していない場合、ステップS102にて待機する。
【0042】
いま、すべてのスレッドが処理を完了している場合を想定して説明を続ける。この場合、データ転送装置1は、「Yes」と判定してステップS103へ進み、複数の受信用通信ポートRP1〜RP4のそれぞれに対して、通信ポート毎データ量を取得する。
【0043】
いま、図5に示したように、バッファ13が単位データブロックDB#1〜DB#8を記憶している場合を想定する。単位データブロックDB#1〜DB#8は、この順に、データ転送装置1に受信されたデータである。
【0044】
また、単位データブロックDB#1,DB#5は、受信用通信ポートRP1を経由して受信されたデータであり、単位データブロックDB#2,DB#6は、受信用通信ポートRP2を経由して受信されたデータであり、単位データブロックDB#3,DB#7は、受信用通信ポートRP3を経由して受信されたデータであり、単位データブロックDB#4,DB#8は、受信用通信ポートRP4を経由して受信されたデータである。
【0045】
次いで、データ転送装置1は、取得された通信ポート毎データ量が大きくなるほど大きくなる優先度を複数の受信用通信ポートRP1〜RP4のそれぞれに対して算出する(ステップS104)。
ここでは、受信用通信ポートRP3に対して算出された優先度が最大となる場合を想定する。
【0046】
そして、データ転送装置1は、転送準備処理の対象となる受信用通信ポートRP1〜RP4として、算出された優先度が最大である受信用通信ポートRP1〜RP4を1つだけ選択する。従って、ここでは、データ転送装置1は、受信用通信ポートRP3を選択する。そして、データ転送装置1は、選択された受信用通信ポートRP3を経由して受信された複数の単位データからなる単位データブロックDB#3を取得する(ステップS105)。
【0047】
次いで、データ転送装置1は、取得された単位データブロックDB#3を、受信された順序に従って並んだ単位データの位置を維持しながら、予め定められた処理単位毎に分割することにより複数の処理ブロックDB#3−1〜DB#3−4を生成する(ステップS106)。ここでは、生成された処理ブロックの数(処理ブロック数)と、生成されたスレッドの数(スレッド数)と、が一致する場合を想定する。
【0048】
そして、データ転送装置1は、図6の(A)に示したように、生成された処理ブロックDB#3−1〜DB#3−4のそれぞれを、生成された複数のスレッドT1〜T4に分散処理させる。
【0049】
これにより、スレッドT1は、処理ブロックDB#3−1に対して転送準備処理を実行し、スレッドT2は、処理ブロックDB#3−2に対して転送準備処理を実行し、スレッドT3は、処理ブロックDB#3−3に対して転送準備処理を実行し、スレッドT4は、処理ブロックDB#3−4に対して転送準備処理を実行する(ステップS107)。
【0050】
その結果、各スレッドT1〜T4は、単位データを出力する送信用通信ポートSP1,SP2を特定するための通信ポート特定情報を出力する。そして、データ転送装置1は、通信ポート特定情報のそれぞれに対して、当該通信ポート特定情報により特定される送信用通信ポートSP1,SP2へ、バッファ13に記憶されている単位データを出力する(即ち、通信装置へ送信する)転送処理を実行する(ステップS108)。
【0051】
その後、データ転送装置1は、ステップS101へ戻り、ステップS101〜ステップS108の処理を繰り返し実行する。
【0052】
この時点では、バッファ13は、図7に示したように、単位データブロックDB#1,DB#2,DB#4〜DB#8を記憶している。また、受信用通信ポートRP1に対して算出される優先度が最大となる。
【0053】
従って、データ転送装置1は、受信用通信ポートRP1を選択し、選択された受信用通信ポートRP1を経由して受信された複数の単位データからなる単位データブロックDB#1を取得する(ステップS105)。
【0054】
次いで、データ転送装置1は、取得された単位データブロックDB#1を、受信された順序に従って並んだ単位データの位置を維持しながら、予め定められた処理単位毎に分割することにより複数の処理ブロックDB#1−1〜DB#1−3を生成する(ステップS106)。ここでは、処理ブロック数がスレッド数よりも少ない場合を想定する。
【0055】
そして、データ転送装置1は、図6の(B)に示したように、生成された処理ブロックDB#1−1〜DB#1−3のそれぞれを、生成された複数のスレッドT1〜T3に分散処理させる。
【0056】
これにより、スレッドT1は、処理ブロックDB#1−1に対して転送準備処理を実行し、スレッドT2は、処理ブロックDB#1−2に対して転送準備処理を実行し、スレッドT3は、処理ブロックDB#1−3に対して転送準備処理を実行する(ステップS107)。
【0057】
その結果、各スレッドT1〜T3は、単位データを出力する送信用通信ポートSP1,SP2を特定するための通信ポート特定情報を出力する。そして、データ転送装置1は、通信ポート特定情報のそれぞれに対して転送処理を実行する(ステップS108)。
【0058】
その後、データ転送装置1は、ステップS101へ戻り、ステップS101〜ステップS108の処理を繰り返し実行する。
【0059】
この時点では、バッファ13は、図8に示したように、単位データブロックDB#2,DB#4〜DB#8を記憶している。また、受信用通信ポートRP4に対して算出される優先度が最大となる。
【0060】
従って、データ転送装置1は、受信用通信ポートRP4を選択し、選択された受信用通信ポートRP4を経由して受信された複数の単位データからなる単位データブロックDB#4を取得する(ステップS105)。
【0061】
次いで、データ転送装置1は、取得された単位データブロックDB#4を、受信された順序に従って並んだ単位データの位置を維持しながら、予め定められた処理単位毎に分割することにより複数の処理ブロックDB#4−1〜DB#4−4を生成する(ステップS106)。ここでは、処理ブロック数とスレッド数とが一致する場合を想定する。
【0062】
そして、データ転送装置1は、図6の(C)に示したように、生成された処理ブロックDB#4−1〜DB#4−4のそれぞれを、生成された複数のスレッドT1〜T4に分散処理させる。
【0063】
これにより、スレッドT1は、処理ブロックDB#4−1に対して転送準備処理を実行し、スレッドT2は、処理ブロックDB#4−2に対して転送準備処理を実行し、スレッドT3は、処理ブロックDB#4−3に対して転送準備処理を実行し、スレッドT4は、処理ブロックDB#4−4に対して転送準備処理を実行する(ステップS107)。
【0064】
その結果、各スレッドT1〜T4は、単位データを出力する送信用通信ポートSP1,SP2を特定するための通信ポート特定情報を出力する。そして、データ転送装置1は、通信ポート特定情報のそれぞれに対して転送処理を実行する(ステップS108)。
【0065】
以上、説明したように、本発明の第1実施形態に係るデータ転送装置1によれば、単位データブロックに含まれる単位データの数が相対的に多い通信ポートRP1〜RP4に係る転送準備処理の完了が無駄に遅くることを防止することができる。その結果、この通信ポートRP1〜RP4を経由して受信した単位データの遅延時間(転送処理に要する時間)が無駄に長くなることを防止することができる。このように、データ転送装置1によれば、単位データに対する処理(転送準備処理)を迅速に完了することができる。
【0066】
更に、本発明の第1実施形態に係るデータ転送装置1は、複数のスレッドT1〜T4に対して入力順位を予め設定するとともに、設定された入力順位がより高いスレッドT1〜T4に、より早期に受信された単位データを含む処理ブロックを処理させる。加えて、データ転送装置1は、設定された入力順位がより高いスレッドにより処理された単位データをより早期に送信する。
【0067】
これによれば、単位データが受信された順序を変更することなく、単位データを送信(転送)することができる。
【0068】
更に、本発明の第1実施形態に係るデータ転送装置1は、複数の通信ポートRP1〜RP4のそれぞれに対して通信ポート毎データ量を取得する。加えて、データ転送装置1は、取得された通信ポート毎データ量がより大きい通信ポートRP1〜RP4を経由して受信された単位データからなる単位データブロックほど、より早期に複数のスレッドT1〜T4に処理させる。
【0069】
これによれば、ある通信ポートRP1〜RP4を経由して、単位時間あたりに受信される単位データのデータ量が過大である場合であっても、当該単位データの遅延時間(転送処理に要する時間)が過大となることを回避することができる。
【0070】
<第2実施形態>
次に、本発明の第2実施形態に係るデータ転送装置について説明する。第2実施形態に係るデータ転送装置は、上記第1実施形態に係るデータ転送装置に対して、処理ブロック数がスレッド数よりも少ない場合、当該生成された処理ブロックのそれぞれを複数のスレッドの一部に処理させるとともに、複数のスレッドの残余のスレッドに、他の単位データブロックを処理させる点において相違している。従って、以下、かかる相違点を中心として説明する。
【0071】
(機能)
第2実施形態に係る処理制御部22は、取得した単位データブロック(第1の単位データブロック)を処理単位毎に分割することにより複数の処理ブロックを生成した際に、生成された処理ブロックの数(処理ブロック数)が、スレッド生成部21により生成されたスレッドT1〜T4の数(スレッド数、本例では、4つ)よりも少ないか否かを判定する。
【0072】
そして、処理制御部22は、処理ブロック数がスレッド数よりも少ないと判定した場合、第1の単位データブロックに対する、スレッドT1〜T4による転送準備処理が完了する将来の時点にて算出される予定の優先度を算出する。更に、処理制御部22は、算出された優先度が最大である受信用通信ポートRP1〜RP4を経由して受信された単位データからなる単位データブロックを第2の単位データブロックとして選択する。
【0073】
加えて、処理制御部22は、選択された第2の単位データブロックを処理単位毎に分割することにより複数の処理ブロックを生成する。そして、処理制御部22は、第1の単位データブロックに基づいて生成された処理ブロックのそれぞれを複数のスレッドT1〜T4の一部に処理させるとともに、複数のスレッドT1〜T4の残余のスレッドに、第2の単位データブロックに基づいて生成された処理ブロックを処理させる。
【0074】
(作動)
次に、第2実施形態に係るデータ転送装置1の作動について、図9を参照しながら説明する。第2実施形態に係るデータ転送装置1は、図4に示したプログラムに代えて、図4のステップS106及びステップS107の間に、図9に示したステップS201〜ステップS205の処理を追加したプログラムを実行する。
【0075】
いま、第1実施形態と同様に、図5に示したように、バッファ13が単位データブロックDB#1〜DB#8を記憶している場合を想定する。
この場合、データ転送装置1は、受信用通信ポートRP3に対して最大の優先度を算出する(図4のステップS104)。
【0076】
そして、データ転送装置1は、受信用通信ポートRP3を選択し、選択された受信用通信ポートRP3を経由して受信された複数の単位データからなる単位データブロックDB#3を取得する(図4のステップS105)。
【0077】
次いで、データ転送装置1は、取得された単位データブロックDB#3を、受信された順序に従って並んだ単位データの位置を維持しながら、予め定められた処理単位毎に分割することにより複数の処理ブロックDB#3−1〜DB#3−4を生成する(図4のステップS106)。
【0078】
次いで、データ転送装置1は、図9のステップS201へ進み、処理ブロック数がスレッド数よりも少ないか否かを判定する。ここでは、処理ブロック数とスレッド数とが一致する。従って、データ転送装置1は、「No」と判定して図4のステップS107へ進む。
【0079】
そして、データ転送装置1は、図10の(A)に示したように、生成された処理ブロックDB#3−1〜DB#3−4のそれぞれを、生成された複数のスレッドT1〜T4に分散処理させる。
その後、データ転送装置1は、転送処理を実行し(図4のステップS108)、図4のステップS101へ戻る。
【0080】
この時点では、バッファ13は、図7に示したように、単位データブロックDB#1,DB#2,DB#4〜DB#8を記憶している。
この場合、データ転送装置1は、受信用通信ポートRP1に対して最大の優先度を算出する(図4のステップS104)。
【0081】
そして、データ転送装置1は、受信用通信ポートRP1を選択し、選択された受信用通信ポートRP1を経由して受信された複数の単位データからなる単位データブロックDB#1を取得する(図4のステップS105)。
【0082】
次いで、データ転送装置1は、取得された単位データブロックDB#1(即ち、第1の単位データブロック)を、受信された順序に従って並んだ単位データの位置を維持しながら、予め定められた処理単位毎に分割することにより複数の処理ブロックDB#1−1〜DB#1−3を生成する(図4のステップS106)。
【0083】
次いで、データ転送装置1は、図9のステップS201へ進み、処理ブロック数がスレッド数よりも少ないか否かを判定する。ここでは、処理ブロック数がスレッド数よりも少ない。従って、データ転送装置1は、「Yes」と判定して図9のステップS202へ進む。
【0084】
そして、データ転送装置1は、図4のステップS105にて取得された単位データブロックDB#1(即ち、第1の単位データブロック)に対する、スレッドT1〜T3による転送準備処理が完了する将来の時点にて算出される予定の優先度を算出する。
【0085】
具体的には、データ転送装置1は、バッファ13から単位データブロックDB#1が消去された状態における通信ポート毎データ量を取得する(図9のステップS202)。更に、データ転送装置1は、取得された通信ポート毎データ量が大きくなるほど大きくなる優先度を複数の受信用通信ポートRP1〜RP4のそれぞれに対して算出する(図9のステップS203)。このようにして、データ転送装置1は、上記将来の時点にて算出される予定の優先度を算出する。
【0086】
そして、データ転送装置1は、算出された優先度が最大である受信用通信ポートRP1〜RP4(ここでは、受信用通信ポートRP4)を経由して受信された単位データからなる単位データブロックDB#4を第2の単位データブロックとして取得(選択)する(図9のステップS204)。
【0087】
次いで、データ転送装置1は、取得された単位データブロックDB#4(第2の単位データブロック)を処理単位毎に分割することにより複数の処理ブロックDB#4−1〜DB#4を生成する(図9のステップS205)。
【0088】
そして、データ転送装置1は、図10の(B)に示したように、単位データブロックDB#1(第1の単位データブロック)に基づいて生成された処理ブロックDB#1−1〜DB#1−3のそれぞれを複数のスレッドT1〜T4の一部のスレッドT1〜T3に処理させるとともに、複数のスレッドT1〜T4の残余のスレッドT4に、単位データブロックDB#4(第2の単位データブロック)に基づいて生成された処理ブロックDB#4−1を処理させる。
【0089】
これにより、スレッドT1は、処理ブロックDB#1−1に対して転送準備処理を実行し、スレッドT2は、処理ブロックDB#1−2に対して転送準備処理を実行し、スレッドT3は、処理ブロックDB#1−3に対して転送準備処理を実行し、スレッドT4は、処理ブロックDB#4−1に対して転送準備処理を実行する(図4のステップS107)。
【0090】
その結果、各スレッドT1〜T4は、単位データを出力する送信用通信ポートSP1,SP2を特定するための通信ポート特定情報を出力する。そして、データ転送装置1は、通信ポート特定情報のそれぞれに対して転送処理を実行する(ステップS108)。
【0091】
次に、データ転送装置1が図4のステップS107に進んだときには、データ転送装置1は、図10の(C)に示したように、単位データブロックDB#4(第1の単位データブロック)に基づいて生成された処理ブロックDB#4−2〜DB#4−4のそれぞれを複数のスレッドT1〜T4の一部のスレッドT1〜T3に処理させるとともに、複数のスレッドT1〜T4の残余のスレッドT4に、単位データブロックDB#2(第2の単位データブロック)に基づいて生成された処理ブロックDB#2−1を処理させる。
【0092】
これにより、スレッドT1は、処理ブロックDB#4−2に対して転送準備処理を実行し、スレッドT2は、処理ブロックDB#4−3に対して転送準備処理を実行し、スレッドT3は、処理ブロックDB#4−4に対して転送準備処理を実行し、スレッドT4は、処理ブロックDB#2−1に対して転送準備処理を実行する(図4のステップS107)。
【0093】
その結果、各スレッドT1〜T4は、単位データを出力する送信用通信ポートSP1,SP2を特定するための通信ポート特定情報を出力する。そして、データ転送装置1は、通信ポート特定情報のそれぞれに対して転送処理を実行する(ステップS108)。
【0094】
以上、説明したように、本発明の第2実施形態に係るデータ転送装置1は、第1の単位データブロックから複数の処理ブロックを生成した場合において、処理ブロック数がスレッド数よりも少ない場合、当該生成された処理ブロックのそれぞれを複数のスレッドT1〜T4の一部に処理させるとともに、複数のスレッドT1〜T4の残余のスレッドに、第2の単位データブロックを処理させる。
【0095】
これによれば、単位データブロックに含まれる単位データの数(又は、データ量)が少ない場合であっても、スレッドにおいて、いずれの処理も実行していない空転時間(無駄な時間)が生じることを防止することができる。この結果、単位データに対する処理(転送準備処理)をより一層迅速に完了することができる。
【0096】
更に、本発明の第2実施形態に係るデータ転送装置1は、第1の単位データブロックに対する処理が完了する将来の時点にて算出される予定の優先度を算出し、当該算出された優先度が最大である通信ポートRP1〜RP4を経由して受信された単位データからなる単位データブロックを第2の単位データブロックとして選択する。
【0097】
これによれば、ある通信ポートRP1〜RP4を経由して、単位時間あたりに受信される単位データのデータ量が過大である場合であっても、当該単位データの遅延時間(転送処理に要する時間)が過大となることをより一層確実に回避することができる。
【0098】
<第3実施形態>
次に、本発明の第3実施形態に係るデータ転送装置について図11を参照しながら説明する。
第3実施形態に係るデータ転送装置100は、
複数の通信ポートと、
上記複数の通信ポートのそれぞれを経由して受信した単位データを一時的に記憶するバッファと、
上記単位データの送信先に基づいて、当該単位データを出力する通信ポートを特定するための転送準備処理を実行するための、複数のスレッドを生成するスレッド生成部(スレッド生成手段)101と、
上記複数の通信ポートの1つを経由して受信された複数の上記単位データからなり且つ予め定められた方式に従って形成された単位データブロックを、予め定められた処理単位毎に分割することにより複数の処理ブロックを生成し、当該生成された処理ブロックのそれぞれを上記生成された複数のスレッドに分散処理させる処理制御部(処理制御手段)102と、
を備える。
【0099】
これによれば、単位データブロックに含まれる単位データの数が相対的に多い通信ポートに係る転送準備処理の完了が無駄に遅くることを防止することができる。その結果、この通信ポートを経由して受信した単位データの遅延時間(転送処理に要する時間)が無駄に長くなることを防止することができる。このように、データ転送装置100によれば、単位データに対する処理(転送準備処理)を迅速に完了することができる。
【0100】
以上、上記実施形態を参照して本願発明を説明したが、本願発明は、上述した実施形態に限定されるものではない。本願発明の構成及び詳細に、本願発明の範囲内において当業者が理解し得る様々な変更をすることができる。
【0101】
例えば、上記各実施形態においては、受信用通信ポートRP1〜RP4の数と、生成されるスレッドの数と、が一致していたが、異なっていてもよい。
【0102】
なお、上記各実施形態においてデータ転送装置1の各機能は、CPUがプログラム(ソフトウェア)を実行することにより実現されていたが、回路等のハードウェアにより実現されていてもよい。
【0103】
また、上記各実施形態においてプログラムは、記憶装置に記憶されていたが、コンピュータが読み取り可能な記録媒体に記憶されていてもよい。例えば、記録媒体は、フレキシブルディスク、光ディスク、光磁気ディスク、及び、半導体メモリ等の可搬性を有する媒体である。
【0104】
また、上記実施形態の他の変形例として、上述した実施形態及び変形例の任意の組み合わせが採用されてもよい。
【0105】
<付記>
上記実施形態の一部又は全部は、以下の付記のように記載され得るが、以下には限られない。
【0106】
(付記1)
複数の通信ポートと、
前記複数の通信ポートのそれぞれを経由して受信した単位データを一時的に記憶するバッファと、
前記単位データの送信先に基づいて、当該単位データを出力する通信ポートを特定するための転送準備処理を実行するための、複数のスレッドを生成するスレッド生成手段と、
前記複数の通信ポートの1つを経由して受信された複数の前記単位データからなり且つ予め定められた方式に従って形成された単位データブロックを、予め定められた処理単位毎に分割することにより複数の処理ブロックを生成し、当該生成された処理ブロックのそれぞれを前記生成された複数のスレッドに分散処理させる処理制御手段と、
を備えるデータ転送装置。
【0107】
これによれば、単位データブロックに含まれる単位データの数が相対的に多い通信ポートに係る転送準備処理の完了が無駄に遅くることを防止することができる。その結果、この通信ポートを経由して受信した単位データの遅延時間(転送処理に要する時間)が無駄に長くなることを防止することができる。このように、上記データ転送装置によれば、単位データに対する処理(転送準備処理)を迅速に完了することができる。
【0108】
(付記2)
付記1に記載のデータ転送装置であって、
前記処理制御手段は、前記複数のスレッドに対して入力順位を予め設定するとともに、当該設定された入力順位がより高いスレッドに、より早期に受信された単位データを含む処理ブロックを処理させるように構成され、
前記設定された入力順位がより高いスレッドにより処理された単位データをより早期に送信する単位データ送信手段を備えるデータ転送装置。
【0109】
これによれば、単位データが受信された順序を変更することなく、単位データを送信(転送)することができる。
【0110】
(付記3)
付記1又は付記2に記載のデータ転送装置であって、
前記処理制御手段は、
前記複数の通信ポートのそれぞれに対して、当該通信ポートを経由して受信され且つ前記バッファに記憶されている、すべての単位データのデータ量を取得し、当該取得されたデータ量がより大きい通信ポートを経由して受信された単位データからなる単位データブロックほど、より早期に前記複数のスレッドに処理させるように構成されたデータ転送装置。
【0111】
これによれば、ある通信ポートを経由して、単位時間あたりに受信される単位データのデータ量が過大である場合であっても、当該単位データの遅延時間(転送処理に要する時間)が過大となることを回避することができる。
【0112】
(付記4)
付記3に記載のデータ転送装置であって、
前記処理制御手段は、
前記取得されたデータ量が大きくなるほど大きくなる優先度を算出し、当該算出された優先度が最大である通信ポートを経由して受信された単位データからなる単位データブロックを前記複数のスレッドに処理させるように構成されたデータ転送装置。
【0113】
(付記5)
付記4に記載のデータ転送装置であって、
前記処理制御手段は、
第1の単位データブロックを前記処理単位毎に分割することにより複数の処理ブロックを生成するとともに、当該生成された処理ブロックの数が、前記生成されたスレッドの数よりも少ない場合、当該生成された処理ブロックのそれぞれを前記生成された複数のスレッドの一部に処理させるとともに、当該生成された複数のスレッドの残余のスレッドに、第2の単位データブロックを処理させるように構成されたデータ転送装置。
【0114】
これによれば、単位データブロックに含まれる単位データの数(又は、データ量)が少ない場合であっても、スレッドにおいて、いずれの処理も実行していない空転時間(無駄な時間)が生じることを防止することができる。この結果、単位データに対する処理(転送準備処理)をより一層迅速に完了することができる。
【0115】
(付記6)
付記5に記載のデータ転送装置であって、
前記処理制御手段は、
前記第1の単位データブロックに対する処理が完了する将来の時点にて算出される予定の優先度を算出し、当該算出された優先度が最大である通信ポートを経由して受信された単位データからなる単位データブロックを前記第2の単位データブロックとして選択するように構成されたデータ転送装置。
【0116】
これによれば、ある通信ポートを経由して、単位時間あたりに受信される単位データのデータ量が過大である場合であっても、当該単位データの遅延時間(転送処理に要する時間)が過大となることをより一層確実に回避することができる。
【0117】
(付記7)
複数の通信ポートと、
前記複数の通信ポートのそれぞれを経由して受信した単位データを一時的に記憶するバッファと、
を備えるデータ転送装置に適用され、
前記単位データの送信先に基づいて、当該単位データを出力する通信ポートを特定するための転送準備処理を実行するための、複数のスレッドを生成し、
前記複数の通信ポートの1つを経由して受信された複数の前記単位データからなり且つ予め定められた方式に従って形成された単位データブロックを、予め定められた処理単位毎に分割することにより複数の処理ブロックを生成し、当該生成された処理ブロックのそれぞれを前記生成された複数のスレッドに分散処理させる、データ転送方法。
【0118】
(付記8)
付記7に記載のデータ転送方法であって、
前記複数のスレッドに対して入力順位を予め設定するとともに、当該設定された入力順位がより高いスレッドに、より早期に受信された単位データを含む処理ブロックを処理させ、
前記設定された入力順位がより高いスレッドによって処理された単位データをより早期に送信する、データ転送方法。
【0119】
(付記9)
付記7又は付記8に記載のデータ転送方法であって、
前記複数の通信ポートのそれぞれに対して、当該通信ポートを経由して受信され且つ前記バッファに記憶されている、すべての単位データのデータ量を取得し、当該取得されたデータ量がより大きい通信ポートを経由して受信された単位データからなる単位データブロックほど、より早期に前記複数のスレッドに処理させる、データ転送方法。
【0120】
(付記10)
複数の通信ポートと、
前記複数の通信ポートのそれぞれを経由して受信した単位データを一時的に記憶するバッファと、
を備えるデータ転送装置に、
前記単位データの送信先に基づいて、当該単位データを出力する通信ポートを特定するための転送準備処理を実行するための、複数のスレッドを生成するスレッド生成手段と、
前記複数の通信ポートの1つを経由して受信された複数の前記単位データからなり且つ予め定められた方式に従って形成された単位データブロックを、予め定められた処理単位毎に分割することにより複数の処理ブロックを生成し、当該生成された処理ブロックのそれぞれを前記生成された複数のスレッドに分散処理させる処理制御手段と、
を実現させるためのプログラム。
【0121】
(付記11)
付記10に記載のプログラムであって、
前記処理制御手段は、前記複数のスレッドに対して入力順位を予め設定するとともに、当該設定された入力順位がより高いスレッドに、より早期に受信された単位データを含む処理ブロックを処理させるように構成され、
前記データ転送装置に、更に、
前記設定された入力順位がより高いスレッドにより処理された単位データをより早期に送信する単位データ送信手段を実現させるためのプログラム。
【0122】
(付記12)
付記10又は付記11に記載のプログラムであって、
前記処理制御手段は、
前記複数の通信ポートのそれぞれに対して、当該通信ポートを経由して受信され且つ前記バッファに記憶されている、すべての単位データのデータ量を取得し、当該取得されたデータ量がより大きい通信ポートを経由して受信された単位データからなる単位データブロックほど、より早期に前記複数のスレッドに処理させるように構成されたプログラム。
【産業上の利用可能性】
【0123】
本発明は、データを転送する、レイヤ3スイッチ、又は、ルータ等に適用可能である。
【符号の説明】
【0124】
1 データ転送装置
11 CPU
12 メモリ
13 バッファ
21 スレッド生成部
22 処理制御部
23 単位データ送信部
100 データ転送装置
101 スレッド生成部
102 処理制御部
RP1,RP2,RP3,RP4,SP1,SP2 通信ポート
【特許請求の範囲】
【請求項1】
複数の通信ポートと、
前記複数の通信ポートのそれぞれを経由して受信した単位データを一時的に記憶するバッファと、
前記単位データの送信先に基づいて、当該単位データを出力する通信ポートを特定するための転送準備処理を実行するための、複数のスレッドを生成するスレッド生成手段と、
前記複数の通信ポートの1つを経由して受信された複数の前記単位データからなり且つ予め定められた方式に従って形成された単位データブロックを、予め定められた処理単位毎に分割することにより複数の処理ブロックを生成し、当該生成された処理ブロックのそれぞれを前記生成された複数のスレッドに分散処理させる処理制御手段と、
を備えるデータ転送装置。
【請求項2】
請求項1に記載のデータ転送装置であって、
前記処理制御手段は、前記複数のスレッドに対して入力順位を予め設定するとともに、当該設定された入力順位がより高いスレッドに、より早期に受信された単位データを含む処理ブロックを処理させるように構成され、
前記設定された入力順位がより高いスレッドにより処理された単位データをより早期に送信する単位データ送信手段を備えるデータ転送装置。
【請求項3】
請求項1又は請求項2に記載のデータ転送装置であって、
前記処理制御手段は、
前記複数の通信ポートのそれぞれに対して、当該通信ポートを経由して受信され且つ前記バッファに記憶されている、すべての単位データのデータ量を取得し、当該取得されたデータ量がより大きい通信ポートを経由して受信された単位データからなる単位データブロックほど、より早期に前記複数のスレッドに処理させるように構成されたデータ転送装置。
【請求項4】
請求項3に記載のデータ転送装置であって、
前記処理制御手段は、
前記取得されたデータ量が大きくなるほど大きくなる優先度を算出し、当該算出された優先度が最大である通信ポートを経由して受信された単位データからなる単位データブロックを前記複数のスレッドに処理させるように構成されたデータ転送装置。
【請求項5】
請求項4に記載のデータ転送装置であって、
前記処理制御手段は、
第1の単位データブロックを前記処理単位毎に分割することにより複数の処理ブロックを生成するとともに、当該生成された処理ブロックの数が、前記生成されたスレッドの数よりも少ない場合、当該生成された処理ブロックのそれぞれを前記生成された複数のスレッドの一部に処理させるとともに、当該生成された複数のスレッドの残余のスレッドに、第2の単位データブロックを処理させるように構成されたデータ転送装置。
【請求項6】
請求項5に記載のデータ転送装置であって、
前記処理制御手段は、
前記第1の単位データブロックに対する処理が完了する将来の時点にて算出される予定の優先度を算出し、当該算出された優先度が最大である通信ポートを経由して受信された単位データからなる単位データブロックを前記第2の単位データブロックとして選択するように構成されたデータ転送装置。
【請求項7】
複数の通信ポートと、
前記複数の通信ポートのそれぞれを経由して受信した単位データを一時的に記憶するバッファと、
を備えるデータ転送装置に適用され、
前記単位データの送信先に基づいて、当該単位データを出力する通信ポートを特定するための転送準備処理を実行するための、複数のスレッドを生成し、
前記複数の通信ポートの1つを経由して受信された複数の前記単位データからなり且つ予め定められた方式に従って形成された単位データブロックを、予め定められた処理単位毎に分割することにより複数の処理ブロックを生成し、当該生成された処理ブロックのそれぞれを前記生成された複数のスレッドに分散処理させる、データ転送方法。
【請求項8】
請求項7に記載のデータ転送方法であって、
前記複数のスレッドに対して入力順位を予め設定するとともに、当該設定された入力順位がより高いスレッドに、より早期に受信された単位データを含む処理ブロックを処理させ、
前記設定された入力順位がより高いスレッドによって処理された単位データをより早期に送信する、データ転送方法。
【請求項9】
請求項7又は請求項8に記載のデータ転送方法であって、
前記複数の通信ポートのそれぞれに対して、当該通信ポートを経由して受信され且つ前記バッファに記憶されている、すべての単位データのデータ量を取得し、当該取得されたデータ量がより大きい通信ポートを経由して受信された単位データからなる単位データブロックほど、より早期に前記複数のスレッドに処理させる、データ転送方法。
【請求項10】
複数の通信ポートと、
前記複数の通信ポートのそれぞれを経由して受信した単位データを一時的に記憶するバッファと、
を備えるデータ転送装置に、
前記単位データの送信先に基づいて、当該単位データを出力する通信ポートを特定するための転送準備処理を実行するための、複数のスレッドを生成するスレッド生成手段と、
前記複数の通信ポートの1つを経由して受信された複数の前記単位データからなり且つ予め定められた方式に従って形成された単位データブロックを、予め定められた処理単位毎に分割することにより複数の処理ブロックを生成し、当該生成された処理ブロックのそれぞれを前記生成された複数のスレッドに分散処理させる処理制御手段と、
を実現させるためのプログラム。
【請求項1】
複数の通信ポートと、
前記複数の通信ポートのそれぞれを経由して受信した単位データを一時的に記憶するバッファと、
前記単位データの送信先に基づいて、当該単位データを出力する通信ポートを特定するための転送準備処理を実行するための、複数のスレッドを生成するスレッド生成手段と、
前記複数の通信ポートの1つを経由して受信された複数の前記単位データからなり且つ予め定められた方式に従って形成された単位データブロックを、予め定められた処理単位毎に分割することにより複数の処理ブロックを生成し、当該生成された処理ブロックのそれぞれを前記生成された複数のスレッドに分散処理させる処理制御手段と、
を備えるデータ転送装置。
【請求項2】
請求項1に記載のデータ転送装置であって、
前記処理制御手段は、前記複数のスレッドに対して入力順位を予め設定するとともに、当該設定された入力順位がより高いスレッドに、より早期に受信された単位データを含む処理ブロックを処理させるように構成され、
前記設定された入力順位がより高いスレッドにより処理された単位データをより早期に送信する単位データ送信手段を備えるデータ転送装置。
【請求項3】
請求項1又は請求項2に記載のデータ転送装置であって、
前記処理制御手段は、
前記複数の通信ポートのそれぞれに対して、当該通信ポートを経由して受信され且つ前記バッファに記憶されている、すべての単位データのデータ量を取得し、当該取得されたデータ量がより大きい通信ポートを経由して受信された単位データからなる単位データブロックほど、より早期に前記複数のスレッドに処理させるように構成されたデータ転送装置。
【請求項4】
請求項3に記載のデータ転送装置であって、
前記処理制御手段は、
前記取得されたデータ量が大きくなるほど大きくなる優先度を算出し、当該算出された優先度が最大である通信ポートを経由して受信された単位データからなる単位データブロックを前記複数のスレッドに処理させるように構成されたデータ転送装置。
【請求項5】
請求項4に記載のデータ転送装置であって、
前記処理制御手段は、
第1の単位データブロックを前記処理単位毎に分割することにより複数の処理ブロックを生成するとともに、当該生成された処理ブロックの数が、前記生成されたスレッドの数よりも少ない場合、当該生成された処理ブロックのそれぞれを前記生成された複数のスレッドの一部に処理させるとともに、当該生成された複数のスレッドの残余のスレッドに、第2の単位データブロックを処理させるように構成されたデータ転送装置。
【請求項6】
請求項5に記載のデータ転送装置であって、
前記処理制御手段は、
前記第1の単位データブロックに対する処理が完了する将来の時点にて算出される予定の優先度を算出し、当該算出された優先度が最大である通信ポートを経由して受信された単位データからなる単位データブロックを前記第2の単位データブロックとして選択するように構成されたデータ転送装置。
【請求項7】
複数の通信ポートと、
前記複数の通信ポートのそれぞれを経由して受信した単位データを一時的に記憶するバッファと、
を備えるデータ転送装置に適用され、
前記単位データの送信先に基づいて、当該単位データを出力する通信ポートを特定するための転送準備処理を実行するための、複数のスレッドを生成し、
前記複数の通信ポートの1つを経由して受信された複数の前記単位データからなり且つ予め定められた方式に従って形成された単位データブロックを、予め定められた処理単位毎に分割することにより複数の処理ブロックを生成し、当該生成された処理ブロックのそれぞれを前記生成された複数のスレッドに分散処理させる、データ転送方法。
【請求項8】
請求項7に記載のデータ転送方法であって、
前記複数のスレッドに対して入力順位を予め設定するとともに、当該設定された入力順位がより高いスレッドに、より早期に受信された単位データを含む処理ブロックを処理させ、
前記設定された入力順位がより高いスレッドによって処理された単位データをより早期に送信する、データ転送方法。
【請求項9】
請求項7又は請求項8に記載のデータ転送方法であって、
前記複数の通信ポートのそれぞれに対して、当該通信ポートを経由して受信され且つ前記バッファに記憶されている、すべての単位データのデータ量を取得し、当該取得されたデータ量がより大きい通信ポートを経由して受信された単位データからなる単位データブロックほど、より早期に前記複数のスレッドに処理させる、データ転送方法。
【請求項10】
複数の通信ポートと、
前記複数の通信ポートのそれぞれを経由して受信した単位データを一時的に記憶するバッファと、
を備えるデータ転送装置に、
前記単位データの送信先に基づいて、当該単位データを出力する通信ポートを特定するための転送準備処理を実行するための、複数のスレッドを生成するスレッド生成手段と、
前記複数の通信ポートの1つを経由して受信された複数の前記単位データからなり且つ予め定められた方式に従って形成された単位データブロックを、予め定められた処理単位毎に分割することにより複数の処理ブロックを生成し、当該生成された処理ブロックのそれぞれを前記生成された複数のスレッドに分散処理させる処理制御手段と、
を実現させるためのプログラム。
【図1】
【図2】
【図3】
【図4】
【図5】
【図6】
【図7】
【図8】
【図9】
【図10】
【図11】
【図2】
【図3】
【図4】
【図5】
【図6】
【図7】
【図8】
【図9】
【図10】
【図11】
【公開番号】特開2012−23419(P2012−23419A)
【公開日】平成24年2月2日(2012.2.2)
【国際特許分類】
【出願番号】特願2010−157492(P2010−157492)
【出願日】平成22年7月12日(2010.7.12)
【出願人】(000004237)日本電気株式会社 (19,353)
【Fターム(参考)】
【公開日】平成24年2月2日(2012.2.2)
【国際特許分類】
【出願日】平成22年7月12日(2010.7.12)
【出願人】(000004237)日本電気株式会社 (19,353)
【Fターム(参考)】
[ Back to top ]