以下、各実施形態に係るパケット中継システムについて、図面を参照して説明する。
図1は、各実施形態に共通するパケット中継システムの全体構成の一例を示す図である。パケット中継システムは、第一通信装置3、パケット中継装置4、第二通信装置5から構成される。第一通信装置3は一台であってもよいし複数台であってもよい。また、パケット中継装置4についても、一台であってもよいし複数台であってもよい。また、第二通信装置5は一台であってもよいし複数台であってもよい。以下説明する各実施形態では、第一通信装置3が複数台、パケット中継装置4と第二通信装置5が一台のケースを想定する。
第一通信装置3とパケット中継装置4は、ネットワーク1、第二通信装置5とパケット中継装置4はネットワーク2を通じて接続され、相互に通信が可能である。第一通信装置3は、複数の装置から構成されても良い。ネットワーク1とネットワーク2は、例えばLANなどのローカルな回線であっても良いし、インターネットや専用回線などの広域な有線通信回線や、3Gなどの広域な無線通信回線を用いてもよい。ただし、ネットワーク2には通信遅延が大きい回線も想定しており、通信プロトコルとしてはUDP(User Datagram Protocol)などの遅延の少ない高速なプロトコルを用いることが望ましい。
パケット中継装置4は、第一通信装置3から受信した複数のパケットを一つのパケットにまとめ(以降、1以上のパケット(多くは複数のパケット)が一つにまとめられたパケットを集約パケットとよぶ)、第二通信装置5に送信する機能を持つ。また、第二通信装置5から受信した集約パケットを個々のパケットに分割して、第一通信装置3に送信する機能を持つ。
例えば、第一通信装置3は、パケット中継装置4に対して各種の検知信号(入力信号)等をパケットで送信し、パケット中継装置4からの応答信号(出力信号)をパケットで受信する。検知信号とは、制御対象デバイスが設置された環境に関する環境情報、制御対象デバイスの状態に関する状態情報、又は各種の記憶媒体から読み取られたリード情報である。例えば、環境情報は明るさや温度、湿度、気圧、天候などを示す情報や、緯度、経度、高度などの位置情報や、速度、加速度、圧力などの物理情報や、文字列、画像、映像、音声などの多次元の情報である。状態情報は制御対象デバイスの電源状態(例えばオン又はオフ)や電流値や電圧値、圧力値、動作の状態などを示す情報や、ビット値、バイト値などのデジタル情報である。応答信号とは、制御対象デバイスを動作させるための信号(例えば制御信号)であり、電源状態や電流値や電圧値、圧力値、動作の状態などを示す情報や、ビット値、バイト値などのデジタル情報である。また、検知信号と応答信号は、一定回数の検知信号と応答信号のやり取りを行い、制御対象デバイスを動作させるトランザクション処理としても良い。
例えば、本実施形態のパケット中継システムを交通システムに適用する場合、制御対象デバイスは駅務機器となる。例えば、駅務機器は、自動改札機、自動精算機、及び自動券売機等である。制御対象デバイスが自動改札機の場合、検知信号は無線通信媒体(所謂、無線カード)から読み取られたリード情報等であり、応答信号は通行を制御するゲートの駆動信号等である。この場合のリード情報は、無線通信媒体のID、入場記録(入場駅及び入場日時)、出場記録(出場駅及び出場時刻)、及び金額情報のうちの少なくとも一つとなる。一般的に、自動改札機の場合、検知信号に対する応答信号の高速応答が要求される。また、制御対象デバイスが自動精算機の場合(且つ第二通信装置5側で精算処理を行うようなクラウド精算システムの場合)、検知信号は無線通信媒体から読み取られたリード情報であり、応答信号はリード情報から算出される不足金額情報等である。自動精算機において要求される応答信号の応答は、自動改札機において要求される応答信号の応答より遅くてもよい。なお、自動改札機及び自動精算機のそれぞれにおいて、応答信号の要求時間が異なる複数の処理を実行するケースも含まれる。交通システムにおいては、多数の自動改札機が設置され、これら多数の自動改札機のそれぞれから多数の検知信号が高頻度で送信され、多数の自動精算機が設置され、これら多数の自動精算機のそれぞれから多数の検知信号が送信される。本実施形態の伝送中継システムはこのような条件の交通システムにおいて通信処理の負荷を軽減することができる。
なお、本実施形態の伝送中継システムは、上記説明した駅務システムへの適用に限定されるものではなく、防災システム、水処理システム等の様々な社会インフラシステム、及びビル制御等の様々な産業システムに適用することができる。また、制御対象デバイスは、例えば、プラント、防災システム、交通システム等の社会インフラシステムのハードウェア、ソフトウェアでも良いし、産業システム、家電、PC、情報端末等のハードウェア、ソフトウェアでも良い。
なお、本実施形態の伝送中継システムの中継処理が適用されるケースは、例えば、第一通信装置3から送信された情報(例えば検知信号)が、パケット中継装置4を中継して、第二通信装置5へ送信され、第二通信装置5からの応答(応答信号)が、パケット中継装置4を中継して、第一通信装置3へ送信されるケース(以下、ケースC1)である。このようなケース以外に、例えば、第一通信装置3から送信された情報が、パケット中継装置4を中継して、第二通信装置5へ送信されるケース(以下、ケースC2)であってもよい。このようなケースとしては、検知信号をログとしてサーバへ蓄積するようなケースである。また、本実施形態の伝送中継システムの中継処理は、1台のデバイスにおいてケースC1とケースC2を異なるプログラムで実行するようなケース(以下、ケースC3)にも適用可能である。つまり、中継処理においてケースC1とC2が混在するようなケースC3にも適用可能である。
(実施形態1)
図2は、実施形態1に係るパケット中継装置4の内部構成の一例を示す図である。パケット中継装置4は、第一受信部10(受信部)、制御パケット生成部11、識別子登録部12、識別子付与部13、最大待機時間計算部14、集約用バッファ15、周期管理部16、結合部17、第一送信部18(送信部)、第二受信部19(受信部)、分割部20、識別子取得部21、識別子データベース22、第二送信部23(送信部)、及び識別子データベース22等を備える。なお、1以上のプロセッサー(処理部)により、制御パケット生成部11、識別子登録部12、識別子付与部13、最大待機時間計算部14、周期管理部16、結合部17、分割部20、識別子取得部21等の各機能を実現することができる。また、1以上の記憶部により、集約用バッファ15及び識別子データベース22を構成するようにしてもよい。
第一受信部10は、第一通信装置3から受信した複数のパケットを集約して第二通信装置5に送信するため、第一通信装置3から複数のパケットを受信する。さらに第一受信部10は、受信パケットのデータに基づき、受信パケットを制御パケットか通常パケットかに識別する機能を持つ。第一受信部10は、制御パケットに識別された受信パケットを制御パケット生成部11へ送り、通常パケットに識別された受信パケットを識別子登録部12へ送る。ここでいう制御パケットとはアプリケーションがやり取りするメッセージ以外の、例えばネットワークの制御に関するメッセージ(制御情報)を含むパケットのことを指す。例えば、TCP/IPではコネクションの確立や切断に関するメッセージである。
制御パケット生成部11は、制御パケットに識別された受信パケットに含まれる制御情報を第二通信装置5に伝えるための制御パケットを生成する。つまり、制御パケット生成部11は、受信パケットから制御パケットを生成し、集約用バッファ15に登録する。
識別子登録部12は、受信パケットごとに異なる識別子(パケット識別情報)を生成して、IPアドレスなどの第一通信装置3の識別情報(装置識別情報)と共に識別子データベース22に登録する。つまり、識別子データベース22は、全ての受信パケット(通常パケットに識別された受信パケット及び制御パケットに識別された受信パケット)のパケット識別情報と第一通信装置3の識別情報とを含む登録情報を有し、この登録情報を参照すればどの受信パケットがどの第一通信装置から送信されてきたパケットなのかが判明する。識別子付与部13は、集約パケットに含まれる各パケット対して生成した識別子を付与する。この識別子はパケット毎に異なる識別子ではなく、通信セッション毎、もしくは第一通信装置3毎に異なるものとしても良い。なお、本パケット中継システムを駅務機器に適用するケースでは、駅識別情報又は改札機識別情報をパケット識別情報としてもよいし、パケット識別情報の一部としてもよい。
最大待機時間計算部14は、パケット送信まで許容可能な送信待機時間(以下、送信待機時間を最大待機時間の例で説明する)を計算してパケットと共に集約用バッファ15に登録する。周期管理部16は、集約パケットを生成するために、集約用バッファ15から定期的に最大待機時間(デッドライン)が迫っているパケット群を取り出す。結合部17は、周期管理部16から呼び出されて取り出したパケット群を一つのパケットに結合して集約パケットを生成する。例えば、結合部17は、集約パケットに含まれる最大パケット数及び集約パケットの最大サイズ(集約パケットに含まれる1以上のパケットの合計最大サイズ)等の少なくとも一つの条件に基づき、集約パケットを生成する。第一送信部18は、最大待機時間以内に第二通信装置5に集約パケットを送信する。
第二通信装置5は、第一通信装置3からの集約パケット(以下、受信集約パケット)を受信し、第一通信装置3に対して集約パケット(以下、返信集約パケット)を返信する。第二通信装置5は、受信集約パケットに含まれる識別子とパケットを取得し、パケットに含まれる情報(例えば検知信号)を処理して、処理結果(例えば制御信号)を取得し、処理結果を含むパケットを生成し、取得した識別子と生成したパケットを含む送信集約パケットを生成する。つまり、受信集約パケットと返信集約パケットの基本構成は同じで、且つ受信集約パケットに含まれる識別子とパケットの組と、返信集約パケットに含まれる識別子とパケットの組は対応する。
第二受信部19は、第二通信装置5から集約パケットを受信して第一通信装置3に送信するために、第二通信装置5からパケットを受信する。分割部20は、集約パケットを個々のパケットに分割する。言い換えれば、分割部20は、集約パケットに含まれるパケットを取得する。識別子取得部21は、個々のパケットの識別子を用いて対応する第一通信装置3の識別情報を識別子データベース22から探す。第二送信部23は、第一通信装置3にパケットを送信する。
識別子登録部12と識別子付与部13の機能と目的について詳細を説明する。例えば、特段の処理を経ず、パケット中継装置4が、第一通信装置3から送信されるパケットを第二通信装置5へ中継すると、第二通信装置5は、中継されたパケットの送信元をパケット中継装置4と判定してしまう。すると第二通信装置5が返答パケットをパケット中継装置4に返した際に、パケット中継装置4はどの第一通信装置3に返答パケット(データ)を返せばよいか判定できない。そこで識別子登録部12が、第一通信装置3から受信した各パケットに対する識別子を生成し、生成した識別子と第一通信装置3との通信に必要な識別情報(IPアドレスやソケット・インタフェースのディスクリプタ情報など)とを含む登録情報を識別子データベース22に登録する。さらに、識別子付与部13が、第二通信装置5に送信される各パケット(集約パケットに含まれる各パケット)に、生成した識別子を付与する。
第二通信装置5は、パケット中継装置4に集約パケットを返信するが、その集約パケットに含まれる各パケットには識別子が付与されている。識別子取得部21は、識別子データベース22に登録された登録情報を参照し、集約パケットに含まれる各パケットに付与された識別子に基づき、各パケットの送信元の第一通信装置3の識別情報を検索する。第二送信部23は、検索された第一通信装置3の識別情報に基づき、第二通信装置5から受信した集約パケットに含まれる各パケットを送信元の第一通信装置3へ転送することができる。また、この識別子をパケット単位、第一通信装置3とのセッション単位、第一通信装置3のIPアドレスとポート単位で割り振ることにより、各々どのパケット、セッション、IPアドレスとポートに対応するパケットの返答が第二通信装置5から来たかを判別することも可能となる。
図3が実施形態1に係る識別子データベース22に登録される登録情報の一例である。この例では、登録情報は、パケット毎の識別子(パケット識別子0、1、2、3、4)と、対応する第一通信装置3のIPアドレスと返答送信先のポート番号を含む。例えば、第二通信装置5からの集約パケットに含まれたパケットにパケット識別子2が付与されている場合、第二送信部23はIPアドレス:192.168.0.11、ポート番号:10000を宛先としてパケットを送信する。
例えば、最大待機時間計算部14は、パケット送信までの最大待機時間を決定する。最大待機時間計算部14が最大待機時間を計算するにあたり、例えば固定時間を最大待機時間としても良いし、第一通信装置3からパケット毎の最大待機時間情報を受け取ってその情報を最大待機時間としても良い。また複数の通信からなるトランザクション単位での最大送信時間が定められている場合には、各パケット受信時にそのトランザクションの最大送信時間から経過時間を減じ、残りの通信回数で除算した時間を最大待機時間としても良い。例えば、1トランザクションについて10回のパケット送信が必要で190msと最大送信待機時間が定められている場合に、既に3回の通信が終わっていて、現在までの経過時間が50msとすると、(190−50)/(10−3)=20msが4回目のパケット送信での最大待機時間となる。また最大通信時間が与えられた場合には、第二通信装置5との通信に必要な時間(通信所要時間)を計測しておき、最大通信時間から通信所要時間を減じて最大待機時間を求めるといった方法も考えられる。従来技術では個々のパケットもしくはトランザクションごとに通信時間を制御することは困難であったが、本実施形態のパケット中継装置4の構成により、この課題を解決することができ、効率的にネットワーク帯域を利用できる。
第一受信部10は、受信パケットを通常パケットと制御パケットとに分類し、通常パケットの場合には識別子登録部12を、制御パケットの場合には制御パケット生成部11を呼び出す機能を持つ。制御パケット生成部11は、制御パケットの情報に応じて第二通信装置5に制御情報を伝えるための制御情報を含むパケットを生成する。例えば第一通信装置3とパケット中継装置4間はTCP/IP、パケット中継装置4と第二通信装置5の間はUDP/IPのように各々違うプロトコルを利用する場合には、パケットの中継によりTCP/IP固有の制御情報が失われてしまう。本実施形態によれば、パケット中継装置4が制御パケットにより制御情報を伝えるので、第二通信装置5側でも制御情報を得ることができる。例えばこの制御情報としてはTCP/IPの場合にはコネクションの確立要求や切断要求などがある。第二通信装置5側で通信には実際にはUDP/IPを利用しつつも、第二通信装置5上で動作するアプリケーションに対しては、TCP/IPの振る舞いをエミュレーションするような場合には本機能が役立つ。
なお、本実施形態では、通常パケット及び制御パケットを含む集約パケット(場合によっては通常パケットだけを含む集約パケット及び制御パケットだけを含む集約パケット)を送信するケースについて説明するが、予め制御情報の送信条件を定め、制御情報の送信条件に基づき制御情報を送信するようにしてもよい。制御情報の送信条件は、通常パケットに対する最大待機時間から独立した情報とする。これにより、例えば、制御パケットを集約パケットに含めずに(制御パケットを集約せずに)送信することもできる。周期管理部16の管理の下、結合部17により集約パケットが生成されるが、集約パケットと独立して制御パケットを送信する場合、より早いタイミングで制御パケットを第二通信装置5へ送信することができる。或いは、制御情報の送信条件において、制御パケットに対する最大送信待機時間を通常パケットに対する最大待機時間より短く設定することにより、制御パケットに対する最大送信待機時間(制御情報の送信条件)に基づき集約パケット(制御情報専用の集約パケットでもよいし通常パケットと制御パケットの混在が可能な集約パケットでもよい)を生成し、より早いタイミングで制御パケットを集約パケットで第二通信装置5へ送信することができる。
周期管理部16は、定期的に集約用バッファ15に登録されたパケットを取り出すが、例えば周期管理部16が一定時間ごとに呼び出される場合には次の呼び出し時には最大待機時間を超えてしまうパケットをすべて取り出す方法を用いればよい。例えば、第一タイミングで送信される第一集約パケット、及び第一タイミングの次の第二タイミングに送信される第二集約パケットを仮定する。図4に示す例では現在の時間(第一集約パケットの生成及び送信)がt=10(第一タイミング)で、次回のパケット集約(第二集約パケットの生成及び送信)がt=20(第二タイミング)に行われる場合には、t=20までに最大待機時間を迎えるパケット1とパケット2を取り出し集約パケット(第二集約パケット)を生成し送信する。これにより最大待機時間(パケット1とパケット2の最大待機時間)を超えることなく、パケットの集約と送信が可能になる。なお、周期管理部16は、集約パケットの集約パケットに含まれる最大パケット数及び集約パケットの最大サイズ等の条件を満たす場合には、次の呼び出し時には最大待機時間を超えないパケット3も取り出す(可能な限り待機しているパケットを取り出す)ようにしてもよい(実施形態2で詳細は説明する)。また制御パケットについては一般に送受信の優先度が高いため、最大送信待機時間(通常パケット用の最大送信待機時間)に依らず、無条件で取り出し集約パケットに含めるようにしても良いし、制御パケット用の最大送信待機時間を設け、この制御パケット用の最大送信待機時間に基づき制御パケットを取り出して集約パケットに含めるようにしても良いし、集約パケットに含めずに制御パケットを送信するようにしてもよい。
結合部17は、周期管理部16が取り出したパケット群をまとめて集約パケットを生成する。例えば、結合部17は、集約パケットの集約パケットに含まれる最大パケット数及び集約パケットの最大サイズ等の条件に基づき、周期管理部16が取り出したパケット群から、1又は複数の集約パケットを生成する。結合部17が生成する集約パケットのフレーム構成の例を図5に示す。図5の例では、パケットの種別、すなわち通常のパケットか制御情報を伝えるためのパケットかの情報、通常パケットの場合にはパケット識別子とパケット本体、制御情報の場合にもパケット識別子とパケット本体(制御の内容を示す情報)が含まれる。また、ヘッダとしては集約したパケットの数やパケット毎のサイズ、エラー検出のためのハッシュ値、改ざん検出のためのMAC(Message Authentication Code)値を付与しても良い。ハッシュ値やMAC値の計算にはSHA1、CMAC、HMACなどの一般によく知られた方式を用いればよい。
図6〜8に実施形態1に係るパケット中継処理の一例をフローチャートで示す。図6は第一通信装置3からパケットを受信した際の処理の一例を示すフローチャート、図7は定期的に実行されるパケット集約の処理の一例を示すフローチャート、図8は第二通信装置5からパケットを受信した際の処理の一例を示すフローチャートである。
まず、図6に示される第一通信装置3からパケットを受信した際の処理の一例について説明する。第一受信部10が第一通信装置3からパケットを受信する(ステップ100)と、第一受信部10は受信パケットが制御パケットか通常パケットかを判定する(ステップ101)。制御パケットの場合(ステップ101:Yes)には、制御パケット生成部11は制御情報を含む制御パケットを生成して(ステップ102)、集約用バッファ15に登録する(ステップ103)。一方で通常のパケットの場合(ステップ101:No)には、識別子登録部12はパケット毎などに識別子を生成して、第一通信装置3のIPアドレスなどの識別子情報とともに識別子データベース22に登録する(ステップ104)。この際に通信セッション毎に識別子を割り振る場合には(既に当該通信セッションに識別子が割り当てられている場合には)、新規に識別子を生成せずに既に割り当てられているものを利用する。さらに識別子付与部13は、パケットに識別子情報を付与する(ステップ105)。続いて最大待機時間計算部14は既に説明した方法などにより最大待機時間を取得して(ステップ106)、識別子付与済みのパケットと共に、集約用バッファ15に登録する(ステップ107)。なお、通常パケットと同様に、制御パケットについても、パケット毎に識別子を生成し付与するようにしてもよい。
続いて図7に示されるパケット集約の処理の一例について説明する。周期管理部16は所定時間が経過したけどうかを判定し(ステップ110)、経過していなければ(ステップ110:No)、ステップ110に戻る。所定時間が経過していれば(ステップ110:Yes)、集約用バッファ15に未処理の送信待ちパケットがあるかどうかを判定して、存在しない場合には(ステップ111:No)、第一送信部18は第二通信装置5に集約パケットを送信する(ステップ112)。このとき第一送信部18は1つもパケットが集約されなかった場合には、何もせず完了しても良い。一方、集約用バッファ15に未処理の送信待ちパケットがある場合には(ステップ111:Yes)、パケットが制御パケットかどうかを判断して制御パケットの場合(ステップ113:Yes)には、ステップ115に進む。一方制御パケットでない場合(ステップ113:No)には、そのパケットが次回の集約実行時に最大待機時間を超えるかどうかを判定し、超えない場合(ステップ114:No)にはステップ111に戻り、当該パケットは集約を行わずに次のパケットの処理に移る。一方で、最大待機時間を超える場合(ステップ114:Yes)、結合部17は集約パケットにパケットを追加するとともに、集約パケットのヘッダ情報を更新する(ステップ115)。なお、周期管理部16は、集約パケットの集約パケットに含まれる最大パケット数及び集約パケットの最大サイズ等の条件を満たす場合には、次の呼び出し時には最大待機時間を超えないパケットも取り出し(可能な限り待機しているパケットを取り出し)、結合部17が、集約パケットに取り出されたパケットを追加するようにしてもよい(実施形態2で詳細は説明する)。
最後に図8の第二通信装置5からの集約パケット受信時の処理の一例について説明する。第二受信部19が第二通信装置5から集約パケットを受信する(ステップ120)と、分割部20は集約パケットに含まれる複数パケットを個々のパケットに分割する(ステップ121)。分割部20は個々のパケットについて、未処理のパケットが存在するかどうかを判定してすべてのパケットの処理が終わった場合(ステップ122:No)には、処理を終了する(ステップ123)。一方で未処理のパケットが存在する場合(ステップ122:Yes)には、識別子取得部21を呼び出す。識別子取得部21は、識別子データベース22に基づき、パケットに含まれるパケットの識別子情報から、対応する第一通信装置3の識別情報を検索して取得する(ステップ124)。さらに、第二送信部23は取得した識別情報に対応する第一通信装置3にパケットを送信し(ステップ125)、次のパケットの処理するためにステップ122に戻る。
本実施形態によればパケット毎、トランザクションごとの時間制約に応じて柔軟なパケットの集約が可能となる。その際にパケット中継装置4と第一通信装置3間、パケット中継装置4と第二通信装置5間で通信プロトコルが異なる構成であっても、パケット中継装置4と第一通信装置3間の通信プロトコル固有の情報を失わずに通信を行うことができる。これにより、第二通信装置5上で動くアプリケーションに対しては、パケット中継装置4と第一通信装置3間で用いるプロトコルであたかも通信を行っているように見せかけることも可能である。また第二通信装置5側では、第一通信装置3のアドレス等の識別情報を解らずとも、パケット中継装置4からの集約パケットに含まれるパケット識別子情報を含めてパケット中継装置4に返答を返すことにより、パケットの出元である第一通信装置3に返答を返すことができ、パケット中継の存在を意識する必要がない。
(実施形態2)
例えば、最大送信待機時間が迫るまでパケットを集約しないようにしてもよいが、例えば特定の時刻に最大送信待機時間が集中する場合、集約パケットのサイズが極端に大きくなり、ネットワークの輻輳を発生させる可能性がある。これはネットワーク通信時間が極端に長くなる可能性があるため、実施形態2では、ネットワークの輻輳を防ぐ構成の詳細について説明する。
図9は、実施形態2に係るパケット中継装置4の内部構成の一例を示す図である。図9に示す実施形態2に係るパケット中継装置4と、図2に示す実施形態1に係るパケット中継装置4とで、実質的に同一の構成には同一の符号を付し、実質的に同一処理についての説明は適宜省略する。
図9に示すように、実施形態2に係るパケット中継装置4は、輻輳制御部31を備える。さらに結合部17は、実施形態1で説明した機能に加えて、輻輳制御部31と周期管理部16が取り出したパケットを結合する機能をさらに有する。実施形態1で説明したように、1以上のプロセッサー(処理部)により、輻輳制御部31を含む各部の各機能を実現することができる。
輻輳制御部31は、周期管理部16が取り出したパケットの数が一定数(最大パケット数)を満たさない、もしくはパケットサイズが一定サイズ(合計最大サイズ)を満たさない場合には、集約用バッファ15から次回の集約時に最大待機時間を超えないパケットであっても取り出す機能を有する。集約用バッファ15からパケットを取り出す際には、最大待機時間を参照して最大待機時間までの時間が短いパケットから順に取り出しても良いし、パケットに優先度情報が付与されている場合には優先度の高いパケットから順に取り出しても良い。さらに低優先度のパケット送信が遅れるのを防止するため、優先度ごとに取り出すパケット数の上限を決めておき、その数を上限に最大待機時間までの時間が短いパケットから順にパケットを取り出す機能を持たせても良い。また取り出すパケット数やサイズの上限は、輻輳制御部31がネットワークの負荷状況を観測して動的に変更しても良い。結合部17は輻輳制御部31と周期管理部16の両方が取り出したパケットをすべて結合して集約パケットを生成する。
図10は実施形態に係るパケット中継装置4におけるパケット集約の処理の一例を図示したものである。第一通信装置3からのパケット受信時、第二通信装置5からのパケット受信時の処理は実施形態1と同等である。周期管理部16は所定時間が経過したかどうかを判定し(ステップ200)、経過していなければ(ステップ200:No)、ステップ200に戻る。所定時間が経過していれば(ステップ200:Yes)、集約用バッファ15に未処理の送信待ちパケットがあるかどうかを判定して、ある場合には(ステップ201:Yes)、パケットが制御パケットかどうかを判断して制御パケットの場合(ステップ202:Yes)には、ステップ204に進む。一方、制御パケットでない場合(ステップ202:No)には、そのパケットが次回の集約実行時に最大待機時間を超えるかどうかを判定し、超えない場合(ステップ203:No)にはステップ201に戻り、当該パケットは集約を行わずに次のパケットの処理に移る。一方で、最大待機時間を超える場合(ステップ203:Yes)、結合部17は集約パケットにパケットを追加するとともに、集約パケットのヘッダ情報を更新する(ステップ204)。一方で未処理のパケットが存在しない場合には(ステップ201:No)、輻輳制御部は既に集約されたパケットのサイズもしくは数が一定値以下かどうかを判定する。一定値以下でない場合には(ステップ205:No)、第一送信部18は第二通信装置5に集約パケットを送信する(ステップ206)。一方で一定値以下の場合には、集約用バッファ15に未送信のパケットがあるかどうかを判定し、未送信のパケットがない場合(ステップ207:No)には第一送信部18は第二通信装置5に集約パケットを送信する(ステップ206)。一方、未送信のパケットがある場合(ステップ207:Yes)にはそのパケットを集約するかどうかを判定する。このアルゴリズムは先述のように、最大待機時間までの残り待機時間で未送信パケットをソートして残り待機時間の長さで判断しても良いし、優先度情報から判断しても良いし、優先度情報と最大待機時間までの残り待機時間の両方を考慮して選んでも良い。パケットを集約すると判断した場合(ステップ210)には、結合部17は集約パケットに取り出したパケットを結合して、ヘッダをアップデートし(ステップ210)、次のパケットを処理するためにステップ205に戻る。
パケットの集約はパケットの細分化による性能低下を防ぐことが可能である一方、1パケットのサイズが大きくなり、他者を含むネットワークの利用状況によってはネットワークの輻輳を起こしやすくすることがある。実施形態2の構成によれば最大待機時間までに余裕がある場合でも、最大待機時間までの残り待機時間、パケットの優先度、及びネットワークの負荷状況の少なくとも一つに応じて前もってパケットを送ることができ、ネットワークの輻輳を防ぐことが可能となる。本構成は通信のリアルタイム性を向上させるために有用である。
(実施形態3)
実施形態1及び2では、最大待機時間は各パケット毎の送信待機時間、もしくはトランザクションごとの合計送信時間から求めていた。一方で時間制約は、第一通信装置3でのパケット送信開始から第二通信装置5での処理を経て、第一通信装置3が返答を受信するまでの時間、もしくは複数の通信からなるトランザクション処理の場合には最初の送信から、最後の受信までの時間として定められることも多い。このような時間制約が与えられた場合には、高精度な最大待機時間を求めることが難しい。実施形態3の構成によれば、第二通信装置5での処理時間や第二通信装置5までの通信時間を考慮して最大待機時間を決めることが可能となり、送信から受信完了までの時間を時間制約として与えることができるようになる。また、返答時間が予測できることで、第二通信装置5からの返答がない際に適切なタイミングでエラーを返したり、再送したりといったことが可能となる。
図11は実施形態3に係るパケット中継装置4の内部構成の一例を示す図である。図11に示す実施形態3に係るパケット中継装置4と、図9に示す実施形態2に係るパケット中継装置4とで、実質的に同一の構成には同一の符号を付し、実質的に同一処理についての説明は適宜省略する。
図11に示すように、パケット中継装置4は、応答時間予測部41、再要求部42、エラー生成部43、及び最大待機時間計算部44を備える。応答時間予測部41は、第二通信装置5への送信から第二通信装置5からの返答受信までに要する時間を予測する。再要求部42は、第二通信装置5に要求の再送信を行う。エラー生成部43は、第二通信装置5から一定時間以内に返答がない場合に、第一通信装置3に返すエラー情報を生成する。最大待機時間計算部44は、最大応答時間から応答時間予測部が予想した予測応答時間を引いて最大待機時間を計算する機能を有する。実施形態1、2で説明したように、1以上のプロセッサー(処理部)により、応答時間予測部41、再要求部42、エラー生成部43、及び最大待機時間計算部44を含む各部の各機能を実現することができる。
応答時間予測部41は、第二通信装置5への送信から第二通信装置5からの返答受信までに要する時間を予測する。処理時間の予測方法として、処理内容が固定の場合にはあらかじめ応答時間予測部41に処理時間を設定しておいても良いし、実際にかかった処理時間を実測してもよい。入力データ等により処理内容が変動し、処理時間も変わる場合にはあらかじめ最悪実行時間を計測しておき、応答時間予測部41に設定しておく方法が考えられる。また、入力データやネットワーク状況から応答時間を予測するテーブルもしくは予測式を用意しておき、それを利用して応答時間を予測しても良い。
最大待機時間計算部44は、最大応答時間から応答時間予測部41が予想した予測応答時間を引いて最大待機時間を計算する。第一通信装置3での1回のパケット送信から返答受信までの時間制約が30msと与えられ、応答時間予測部41により第二通信装置5との通信時間を含む処理時間が20msと予測された場合には、10msが最大待機時間となる。さらに第一通信装置3とパケット中継装置間4の遅延を考慮する場合には、さらに通信時間を最大待機時間から減じても良い。例えば往復で2msの通信時間がかかる場合には8msが最大待機時間となる。
またトランザクション単位で時間制約が与えられた場合には、残りのトランザクションに必要な時間を計算して、最大応答時間から減算し、さらに経過時間を減じたものを残りの通信回数で割っても良い。例えば、最大応答時間が200msで既に30msが経過しており、残りのトランザクションに必要な時間が50ms、残り通信回数が6回の場合、(200−30−50)/6=20msが最大待機時間となる。
再要求部42は、一定時間内に第二通信装置5から返答が来ない場合に、第一送信部18を介して再度第二通信装置5に対して要求を送信する機能を有する。この送信タイミングとしては、例えば最大待機時間より前にパケットを送信している場合には、最大待機時間(デッドライン)になった際に要求を送信すればよい。これにより時間制約を守ることができる。またリアルタイム制約が緩い場合には、予測応答時間を超えても返答がない場合に要求を再送信する方式、予測応答時間の一定割合を超えても返答がない場合に要求を再送信する方式なども考えられる。要求の再送信先は、最初のリクエストを送った第二通信装置5でも良いし、最初のリクエストを送った第二通信装置5が異常状態にあることを想定して別の第二通信装置5(第三通信装置と呼ぶ)としても良い。また、再要求を1回だけ送っても良いし、複数回送っても良い。なお再要求部42が再要求を送る要求を決定するにあたり、複数の要求を並列に送信する場合、すなわち第二通信装置5への要求を送信し、送信先の第二通信装置5からの返答を待たずに次の要求を第二通信装置5に投げる場合には、第二通信装置5からの返答があった際にどの要求に対する返答かを識別し、また、返答がない要求を識別する。実施形態1で示したように、第二通信装置5へのパケット送信時に識別子登録部12によりパケット毎に識別子を付与することができる。第二通信装置5からの返答時にはその識別子がパケットに付与されているので、どの識別子に対する返答があり、どの識別子に対する返答がないのか判断することができる。
エラー生成部43は、第二通信装置5から一定時間以内に返答がない場合に、第一通信装置3に返すエラー情報を生成する。エラー生成部43は生成したエラー情報を第二送信部23を介して第一通信装置3に送信する。エラー生成のタイミングとしては、例えば最大待機時間になった際にエラーを生成すればよい。また、再要求部42が再要求を送ってから予測応答時間を経過してもまだ返答がない場合にエラーを生成しても良い。返答未受信のパケットの判断には、再要求部42の説明で述べたとおり、パケットの識別子を用いることができる。
図12は、実施形態3に係るパケット中継装置4の再要求部42とエラー生成部43の処理の一例を示すフローチャートである。第一通信装置3からのパケット受信時、パケット集約時、第二通信装置5からのパケット受信時の処理は実施形態1及び2と同等である。
エラー生成部43は、周期的に返答未受信のパケットがあるかどうかを確認する。返答未受信のパケットがない場合(ステップ300:No)には周期処理を終了する。返答未受信のパケットが存在する場合(ステップ300:Yes)には、エラー生成部43は返答未受信の各パケットについて、パケット送信からの経過時間が第一規定時間を超えているかどうかを判定する。この方法としては例えば上記で述べたように予測応答時間を用いれば良い。第一規定時間を超えている場合(ステップ301:Yes)には、エラー生成部43はエラー情報を生成してパケットの送信元である第一通信装置3にエラーを返す(ステップ304)。一方、第一規定時間を超えていない場合には再要求部42はパケット送信からの経過時間が第二規定時間を超えているかどうかを判定する。この時間としては上記で述べたようにデッドライン等の情報を用いればよい。第二規定時間を超えている場合(ステップ302:Yes)には、再要求部42は第一送信部18を介して再度要求を第二通信装置5に送信する。一方、第二規定時間を超えていない場合には周期処理を終了する。
また、実施形態1における図6のステップ106では第一通信装置3からのパケット受信時に、最大送信時間などの情報を用いて最大待機時間を計算していた。実施形態3のステップ106ではこの計算アルゴリズムとして上記で述べたように最大応答時間と予測応答時間を用いて計算を行う。具体的には最大待機時間計算部44が最大応答時間から応答時間予測部41が予想した予測応答時間を引いて最大待機時間を計算する。他の処理の流れは図6のステップと同様である。
実施形態3によれば、第二通信装置5での処理時間や第二通信装置5までの通信時間を考慮して最大待機時間を決めることが可能となり、送信から受信完了までの時間を時間制約として与えることができ、トランザクション全体でのリアルタイム制御が容易になる。また、返答時間が予測できることで、第一通信装置3からの返答がない際に適切なタイミングでエラーを返したり、再送したりといったことも可能となる。
以上、実施形態1、2、3によれば、パケット単位もしくはトランザクション単位で時間制約が存在する場合にもサーバ装置、クライアント装置に手を加えることなく、時間制約を満たすことができるようになる。
なお、上記した実施形態1、2、3に係るパケット中継システムにおける処理はいくつかのソフトウェアによって実行することが可能である。このため、上記処理の手順を実行するいくつかのプログラムを格納したコンピュータ読み取り可能な記憶媒体を通じてこれらプログラムをパケット中継装置4へインストールして実行するだけで、上記処理を容易に実現することができる。例えば、パケット中継装置4は、上記プログラムをネットワーク経由でダウンロードし、ダウンロードしたプログラムを記憶し、プログラムのインストールを完了することができる。或いは、パケット中継装置4は、上記プログラムを情報記憶媒体から読み取り、読み取ったプログラムを記憶し、プログラムのインストールを完了することができる。
本発明のいくつかの実施形態を説明したが、これらの実施形態は、例として提示したものであり、発明の範囲を限定することは意図していない。これら実施形態は、その他の様々な形態で実施されることが可能であり、発明の要旨を逸脱しない範囲で、種々の省略、置き換え、変更を行うことができる。これら実施形態やその変形は、発明の範囲や要旨に含まれると同様に、特許請求の範囲に記載された発明とその均等の範囲に含まれるものである。