地絡事故時の区間分離等に用いられるモバイルエージェントは、最も高いQoSが求められる。即ち、リアルタイム処理の実現が求められている。ここで、リアルタイム処理とは、アプリケーションが要求する時間内での実行完了の通知、または、その時間内での実行失敗の通知がなされることをいうものとし、需要地系統において要求される速度は、例えば地絡事故発生から区間分離まで電力機器(例えば開閉器)の動作を含めて1秒以内であるものとする。このため需要地系統におけるリアルタイム処理の実現が課題となっている。
しかしながら、非特許文献1、2の技術を用いた場合、需要地系統におけるリアルタイムでの処理を実現できない場合がある。例えば非特許文献2に記載の技術では、配電系統の事故発生とほぼ同時に情報通信側に障害が発生した場合、要求された時間内での処理完了ができなかった。これは、モバイルエージェントを伝送する下位のプロトコルとして、セション層プロトコルにJAVA RMIとトランスポート層プロトコルにTCPの組合せを用いていることに起因している。尚、セション層プロトコルとしてJAVA RMIを用いた場合は、トランスポート層のプロトコルとしてTCPを用いる必要がある。
トランスポート層のプロトコルとしてTCPを用いた場合、受信側が送信側に対して正常に受信できたデータのシーケンス番号を送り返すことによって、送達確認を行っている。ここで、データが受信側に到着しなければ、送信側にACK(Acknowledgement Flag:送達確認に用いる信号)は送り返されない。また、送信側ではデータを送信してから対応するACKを受け取るまでのの時間を計測し、一定時間内にACKが到着しなければ、応答がなかったデータ(セグメント)を再送する。この際の待ち時間をRTOと呼び、RTOの初期値は、RTTの4倍+αとなっている。RTOは再送を行う度に2倍に増やされ、最大で64秒となる。RTTは初期値を3秒とし、これまでに送ったデータに対しACKが返ってくるまでにかかった時間から算出する(数式1)。尚、srttは、平滑化した値、rttは実測値、αの推奨値0.9である。測定結果の一例としてrttは約400ミリ秒(100Mbps)であった。即ち、再送は1.6+α秒後に行われることとなり、需要地系統における要求時間である1秒以内を実現することができない。このようにTCPを用いると、通信システムに障害が発生した場合等、リアルタイム処理を実現できない場合が存在する。
<数1>
srtt = α × srtt + (1-α) × rtt
またTCPでは、再送制御に加えて高速再転送という仕組みを備えている。この仕組みでは、送信側はACKを待たずに次々とデータを送信する。受信側では、受け取っていないセグメントが存在し、それより大きなセグメント番号を持つデータを受信するたびに受け取っていないセグメント番号とACKによって送信側に知らせる。送信側は、3回連続同じセグメント番号をもったACKを受信すると、その番号以降のすべてのデータ(セグメント)を送信し直すものである。再送までにACKを3回受信しなければならないため、数100ミリ秒で処理を実行するアプリケーションの要求を満たすことはできず、通信に瞬断が発生した場合等、リアルタイム処理を実現することができない場合が存在する。
このため、QoS制御と高い信頼性を維持しつつ、リアルタイム処理を同時に実現する必要がある。しかしながら、上記述べたように、通信プロトコルとしてTCPを用いた場合は、需要地系統においてリアルタイム処理を実現することはできない。
そこで、本発明はJAVA RMIを用いることなく新たなセション層のプロトコルを利用し、TCPに代えてUDPをトランスポート層のプロトコルとして採用することにより通信瞬断に対する高信頼化を目的とする。より具体的には、需要地系統におけるモバイルエージェントの伝送に関する通信障害に対し頑強なシステムとなるデータ伝送方法、伝送システムを提供することを目的とする。
かかる目的を達成するため、請求項1記載のデータ伝送方法は、送信側装置と受信側装置が通信ネットワークを介して相互に接続されたデータ伝送方法において、送信側装置が、データを複数のデータユニットに分割し、該データユニットを受信側装置に対し、トランスポート層経由で予め設定された回数分繰り返し送信する処理を行い、かつ受信側装置が、データユニットを受信し、既に受信したデータユニットと同一のデータユニットを受信した場合には該データユニットを廃棄する処理と、データを分割したデータユニットをすべて受信した後にデータユニットを結合してデータを復元する処理をセション層において行うようにしている。
また、請求項5に記載のデータ伝送システムは、送信側装置と受信側装置が通信ネットワークを介して相互に接続されたデータ伝送システムにおいて、データを複数のデータユニットに分割し、該データユニットを受信側装置に対し、トランスポート層経由で予め設定された回数分繰り返し送信する処理をセション層において行う連続送信手段を送信側装置に設け、前記データユニットを受信し、既に受信したデータユニットと同一のデータユニットを受信した場合には該データユニットを廃棄する処理と、データを分割したデータユニットをすべて受信した後にデータユニットを結合してデータを復元する処理をセション層において行う後着廃棄手段を受信側装置に設けたものである。
したがって、送信側装置は、複数のデータユニットに分割されたデータを複数回に渡って連続的に送信し、受信側装置は、そのデータを分割したデータユニットを連続的に受信し、既に受信した受信済みのデータユニットと同一のデータユニットを受信した場合には該データユニットの廃棄を行い、かつ分割されたデータユニットをすべて受信した場合には、分割された複数のデータユニットからデータの復元をする並列処理を行うことで、再送要求の伝送にかかる処理時間を除いている。
請求項2に記載のデータ伝送方法は、送信側装置と受信側装置が通信ネットワークを介して相互に接続されたデータ伝送方法において、送信側装置が、データを複数のデータユニットに分割し、該データユニットをバッファに記憶して、該データユニットを受信側装置に対し、トランスポート層経由で送信する処理を行い、かつ受信側装置が、受信したデータを分割したデータユニットに欠落があった場合に、送信側装置に対して欠落したデータユニットの再送要求を返信し、再送要求を受けた送信側装置が、バッファに記憶したデータユニットのうち再送要求のあったデータユニットを受信側装置に対し、トランスポート層経由で送信し、受信側装置が、データを分割したデータユニットをすべて受信した後にデータユニットを結合してデータを復元する処理をセション層において行うようにしている。
また、請求項6に記載のデータ伝送システムは、送信側装置と受信側装置が通信ネットワークを介して相互に接続されたデータ伝送システムにおいて、データを複数のデータユニットに分割し、該データユニットをバッファに記憶して、該データユニットを受信側装置に対し、トランスポート層経由で送信する処理をセション層において行う再送受付手段を送信側装置に設け、受信したデータを分割したデータユニットに欠落があった場合に、送信側装置に対して欠落したデータユニットの再送要求を返信する処理をセション層において行う再送要求手段を受信側装置に設け、さらに再送受付手段は、バッファに記憶したデータユニットのうち再送要求のあったデータユニットを受信側装置に対し、トランスポート層経由で送信し、再送要求手段は、データを分割したデータユニットをすべて受信した後にデータユニットを結合してデータを復元するものである。
したがって、送信側装置は、データを分割した複数のデータユニットを作成し、送信側装置のバッファに記憶したうえで、受信側装置に対してデータユニットを送信し、受信側装置は、そのデータを分割したデータユニットに欠落がある場合は、データの復元ができないので、該欠落データユニットの再送要求を行い、送信側装置から当該データユニットを受信し、データを分割したすべてのデータユニットが揃った時点で、分割されたデータユニットからデータの復元をする並列処理を行っている。
請求項3に記載のデータ伝送方法は、送信側装置と受信側装置が通信ネットワークを介して相互に接続されたデータ伝送方法において、優先度が判断されたデータに対して、送信側装置が、優先度の高いデータに対しては、データを複数のデータユニットに分割し、該データユニットを受信側装置に対し、トランスポート層経由で予め設定された回数分繰り返し送信する処理を行い、かつ受信側装置が、データユニットを受信し、既に受信したデータユニットと同一のデータユニットを受信した場合には該データユニットを廃棄する処理と、データを分割したデータユニットをすべて受信した後にデータユニットを結合してデータを復元する処理を行い、その他のデータに対しては、データを複数のデータユニットに分割し、該データユニットをバッファに記憶して、該データユニットを受信側装置に対し、トランスポート層経由で送信する処理を行い、かつ受信側装置が、受信したデータを分割したデータユニットに欠落があった場合に、送信側装置に対して欠落したデータユニットの再送要求を返信し、再送要求を受けた送信側装置が、バッファに記憶したデータユニットのうち再送要求のあったデータユニットを受信側装置に対し、トランスポート層経由で送信し、受信側装置が、データを分割したデータユニットをすべて受信した後にデータユニットを結合してデータを復元する処理をセション層において行うようにしている。
また、請求項7に記載のデータ伝送システムは、送信側装置と受信側装置が通信ネットワークを介して相互に接続されたデータ伝送システムにおいて、データの優先度の判断をセション層より上位に位置するプレゼンテーション層あるいはアプリケーション層において行う判断手段と、優先度の高いデータを複数のデータユニットに分割し、該データユニットを受信側装置に対し、トランスポート層経由で予め設定された回数分繰り返し受信側装置に対して送信する処理をセション層において行う連続送信手段を送信側装置に設け、データユニットを受信し、既に受信したデータユニットと同一のデータユニットを受信した場合には該データユニットを廃棄する処理と、データを分割したデータユニットをすべて受信した後にデータユニットを結合してデータを復元する処理をセション層において行う後着廃棄手段を受信側装置に設け、その他のデータを複数のデータユニットに分割し、該データユニットをバッファに記憶して、受信側装置に対し、トランスポート層経由で送信する処理をセション層において行う再送受付手段を送信側装置に設け、受信したデータを分割したデータユニットに欠落があった場合に、送信側装置に対して欠落したデータユニットの再送要求を返信する処理をセション層において行う再送要求手段を受信側装置に設け、さらに再送受付手段は、バッファに記憶したデータユニットのうち再送要求のあったデータユニットを受信側装置に対し、トランスポート層経由で送信し、再送要求手段は、データを分割したデータユニットをすべて受信した後にデータユニットを結合してデータを復元するものである。
したがって、上位層においてデータの優先度を判断したうえで、優先度の高いデータに対しては、送信側装置は、複数のデータユニットに分割されたデータを複数回に渡って連続的に送信し、受信側装置は、そのデータを分割したデータユニットを連続的に受信し、既に受信した受信済みのデータユニットと同一のデータユニットを受信した場合には該データユニットの廃棄を行い、かつ分割されたデータユニットをすべて受信した場合には、分割された複数のデータユニットからデータの復元をする並列処理を行うことで、再送要求の伝送にかかる処理時間を除き、その他のデータに対しては、送信側装置が、そのデータを分割した複数のデータユニットを作成し、送信側装置のバッファに記憶したうえで受信側装置に対して送信し、受信側装置は、そのデータを分割したデータユニットに欠落がある場合は、データの復元ができないので、該欠落データユニットの再送要求を行い、送信側装置から当該データユニットを受信し、データを分割したすべてのデータユニットが揃った時点で、分割されたデータユニットからデータの復元をする並列処理を行っている。
請求項4に記載の発明は、請求項1から3のいずれかに記載のデータ伝送方法において、さらに受信側装置が、データの復元を完了した後に送信側装置に対し送達確認を送信し、かつ送信側装置が送達確認を受信した場合に、送達確認応答を受信側装置に返信するようにしている。
また、請求項8に記載の発明は、さらに受信側装置に、データの復元を完了した後に送信側装置に対し送達確認を送信する処理をセション層において行う送達確認手段と、送信側装置に送達確認を受信した場合に、送達確認応答を受信側装置に返信する処理をセション層において行う送達確認応答手段を設けたものである。
したがって、受信側装置は、データが送達されたことを、送信側装置に対して送達確認を送信することにより通知を行い、さらに送信側装置は、送達確認を受信したことを、受信側装置に対し送達確認応答を返信することにより通知を行っている。
以上説明したように、請求項1に記載の伝送方法、請求項5に記載のデータ伝送システムによれば、通信ネットワークに障害等が発生し、データユニットの一部が受信側装置に到達しない場合であっても、送信側装置は、受信側装置からの再送要求を待つことなくデータユニットを複数回に渡り送信するので、再送要求の伝送にかかる処理時間を除くことができる。これにより、データ伝送処理における高信頼化を図り、通信の瞬断発生時でもリアルタイム処理を実現することができる。例えば需要地系統での監視制御用モバイルエージェントに要求される時間内での伝送処理を実現することができる。
更に、請求項2に記載のデータ伝送方法、請求項6に記載のデータ伝送システムによれば、通信ネットワークに障害等が発生し、データユニットの一部が受信側装置に到達しない場合であっても、送信側装置は、データユニットをバッファに記録しているので、受信側装置からの再送要求に応じて、データユニットの再送を行うことができる。これにより、通信の効率化を図り、データ伝送処理の高信頼化を図ることができる。
更に、請求項3に記載のデータ伝送方法、請求項7に記載のデータ伝送システムによれば、データの優先度に応じて、優先度の高いデータに対しては、送信側装置は、受信側装置からの再送要求を待つことなくデータユニットを複数回に渡り送信することにより、その他のデータに対しては、送信側装置が、データユニットをバッファに記録したうえで受信側装置に送信することにより、優先度の高いデータに対しては高速処理を実現し、その他のデータに対しては通信を効率的にすることでデータ伝送処理の高信頼化、QoS制御、高速化を図ることでのリアルタイム処理を併せて実現することができる。
更に、請求項4に記載のデータ伝送方法、請求項8に記載のデータ伝送システムによれば、データの送達確認を行うことで、データ伝送処理の高信頼化を図ることができる。
以下、本発明の構成を図面に示す実施の形態に基づいて詳細に説明する。本発明のデータ伝送方法は、送信側装置と受信側装置が通信ネットワークを介して相互に接続されたデータ伝送方法において、優先度が判断されたデータに対して、送信側装置が、前記優先度の高いデータに対しては、データを複数のデータユニットに分割し、該データユニットを受信側装置に対し、トランスポート層経由で予め設定された回数分繰り返し送信する処理を行い、かつ受信側装置が、データユニットを受信し、既に受信したデータユニットと同一のデータユニットを受信した場合には該データユニットを廃棄する処理と、データを分割したデータユニットをすべて受信した後にデータユニットを結合してデータを復元する処理を行い、その他のデータに対しては、前記データを複数のデータユニットに分割し、該データユニットをバッファに記憶して、該データユニットを前記受信側装置に対し、前記トランスポート層経由で送信する処理を行い、かつ前記受信側装置が、受信した前記データを分割した前記データユニットに欠落があった場合に、前記送信側装置に対して欠落した前記データユニットの再送要求を返信し、前記再送要求を受けた前記送信側装置が、前記バッファに記憶した前記データユニットのうち再送要求のあった前記データユニットを前記受信側装置に対し、前記トランスポート層経由で送信し、前記受信側装置が、前記データを分割した前記データユニットをすべて受信した後に前記データユニットを結合して前記データを復元する処理をセション層において行うものである。尚、本明細書においてはデータとは、一般のデータ、プログラム及びプログラムとデータが一体となったエージェントをいうものとする。
本実施形態においては、需要地系統の監視制御用モバイルエージェントの伝送について説明する。図1から図19までに本発明の実施の一形態を示す。まず、本発明のデータ伝送システムについて説明する。本発明のデータ伝送システムは、モバイルエージェントを送信する送信側装置1、通信ネットワーク2、モバイルエージェントを受信する受信側装置3によって構成される。通常は、送信側装置1、受信側装置3は、通信ネットワーク内に複数台存在するものとするが、それぞれ最低1台あれば足りるものとする。尚、送信側装置1が受信側装置3に、受信側装置3が送信側装置1にそれぞれなりうるのは、勿論である。
図1に送信側装置1の構成の一例を示す。送信側装置1は、ディスプレイ等の出力装置4と、キーボード、マウス等の入力装置5と、CPU6と、主記憶装置(メインメモリ)7と、ハードディスク等の補助記憶装置8等により構成される。上記のハードウェア資源は例えばバス9を通じて電気的に接続され、ネットワークI/F10を通じてWAN等の通信ネットワーク2との通信を行うものである。尚、通信ネットワーク2は一般的には有線通信ネットワークであるが、一部又は全部を無線通信ネットワークとしても構わない。また、通信ネットワーク2は、特に限られるものではなく、例えばインターネット等を利用しても良い。
また、セション層プロトコル11は、いわゆるミドルウェアによって実現され、CPU6に読み込まれ実行されることによって、コンピュータが送信側装置1として機能する。さらに、送信側装置1は、エージェントを複数のデータユニットに分割し、該データユニットを受信側装置に対し、トランスポート層経由で予め設定された回数分繰り返し送信する連続送信手段25と、エージェントを複数のデータユニットに分割し、該データユニットをバッファに記憶したうえで受信側装置に対し送信する処理と、バッファに記憶したデータユニットのうち再送要求のあったデータユニットを受信側装置に対して送信する処理を行う再送受付手段26と、受信側装置3からの移動完了確認を受信した場合に、移動完了確認応答を受信側装置3に返信する処理を行う移動完了確認応答手段27を有している。尚、本実施形態では、伝送の対象はエージェントであるので、「送達確認」を「移動完了確認」、「送達確認応答」を「移動完了確認応答」とそれぞれいうものとし、また、「送達確認手段」を「移動完了確認手段」、「送達確認応答」を「移動完了確認応答手段」とそれぞれいうものとする。
また、送信側装置1は、受信側装置3にもなりうるものであるので、送信側装置1は、受信済みの前記データユニットを廃棄する処理と、一つのエージェントを分割したデータユニットをすべて受信した後にそのデータユニットを結合して元のエージェントを復元する処理を行う後着廃棄手段28と、受信したエージェントを分割したデータユニットに欠落があった場合に、送信側装置に対して欠落しているデータユニットの再送要求を返信する処理とエージェントを分割したデータユニットをすべて受信した後にデータユニットを結合してエージェントを復元する処理を行う再送要求手段29と、エージェントの復元を完了した後に送信側装置に対し移動完了確認を送信する処理を行う移動完了確認手段30を有している。また、データの優先度の判断を行う判断手段31を有している。また、受信側装置3の構成も同一であることは勿論である。尚、上記述べた送信側装置1の構成は一例であり、これに限られるものではない。例えば、移動完了確認の送信と、移動完了確認応答の返信を行わないこととすれば、移動完了確認応答手段27と移動完了確認手段30を有しないこととしても良い。また、以下に述べる処理において、データの一時記録、保管を伴う処理については、すべて送信側装置1、または送信側装置3のCPU6が、CPU6内のキャッシュメモリ、または主記憶装置7、または記憶装置のバッファ領域上で行うものである。また、以下、単に記憶装置とした場合は、CPU6内のキャッシュメモリ、主記憶装置7、補助記憶装置8のいずれかをいうものとする。
また、図2に本実施形態におけるプロトコルスタックの一例を示す。上位にStrategy、Agent(エージェント)14、及びAgentPlatform(エージェントプラットフォーム)15、セション層にセション層プロトコル11、トランスポート層にUDP17、ネットワーク層にIP、データベース層にEthernet(登録商標)を用いる。また、図示はしないが物理層が存在する。
本実施形態においては、トランスポート層にUDP17を用いる。UDP17はコネクションレスで動作するため、必要なオーバーヘッドと能力が小さく、通信速度が速い。したがって、セション層において、順序制御や高信頼化の実現に向けての様々な方式をとることが可能となる。本実施形態においては、セション層プロトコル11により確認、再送制御等を実現する。また、UDP17を用いることにより、TCPでは提供されないマルチキャストの通信を行うことが可能となる。尚、本実施形態におけるセション層プロトコル11は、トランスポート層にUDP17を用いる他は、他の階層のプロトコルを限定するものではない。したがって、他の通信ネットワークにおいても適用することが可能である。
図5に、エージェントシステムにおけるQoS制御方式を実現するエージェント及び受信部とセション層プロトコルの対応付けを示す。例えばMAFDAPSにおいてはエージェントを優先度に応じて以下の三種類に分類するものとしている。
(1)緊急処理エージェント:優先度「高」
(2)迅速処理エージェント:優先度「中」
(3)平常処理エージェント:優先度「低」
本実施形態では、事故時の処理等を優先度「高」に、電圧安定化や機器の通常制御等に用いるものを優先度「中」に、保全情報や電源の計画運転に関するデータ等を優先度「低」に割り当てるものとしているが、一般には応用プログラム(Strategy)が利用するエージェントは限られるものではない。また、上記エージェントの優先度の区分方法は一例でありこれに限られるものではない。
以下に、セション層プロトコル11について詳細に説明する。図3及び図4にセション層プロトコル11の内部構成を示す。図3に送信側装置1、図4に受信側装置3のセション層プロトコルの内部構成を示す。セション層プロトコル11は、セション上位エンティティ12とセション下位エンティティ13の2階層構造からなる。
送信側装置1のセション上位エンティティ12は、エージェント14を構成するオブジェクトをバイト列に並べることにより通信可能なデータとするオブジェクト直列化処理、UDPの最大通信容量を超える場合に直列化されたバイト列をデータグラムに分割するバイト列分割処理及び分割された各バイト列(データグラム)に対しデータの何番目であるかの順番の情報をセション層ヘッダに与えるヘッダ添付処理、移動要求を出しているエージェント識別子の記録を行うものである。尚、データグラムとは、UDPにおける伝送の基本単位をいう。
また、受信側装置3のセション上位エンティティ12は、受信したデータグラムの一時的保存、受信したデータグラムを結合するバイト列結合処理及び結合されたバイト列をオブジェクト化してエージェントプラットフォーム15の受信部16に渡すバイト列オブジェクト化処理を行うものである。
送信側装置1のセション下位エンティティ13は、UDPソケットの管理に加え、同じデータユニット18を繰り返し送信する連続送信機能及び送信したデータユニット18をバッファに保管する再送受付機能を有する。以下、連続送信機能を有するセション下位エンティティを連続送信機能付セション下位エンティティ13a、再送受付機能を有するセション下位エンティティを再送受付機能付セション下位エンティティ13bという。
また、受信側装置3のセション下位エンティティ13は、UDPソケットの管理、セション層ヘッダの解釈に加え、複数回送信されたデータユニット18のうち後着のデータユニット18を廃棄する後着廃棄機能及び到着していないデータユニット18に対して再送要求を行う再送要求機能を有する。以下、後着廃棄機能を有するセション下位エンティティを後着廃棄機能付セション下位エンティティ13c、再送要求機能を有するセション下位エンティティを再送要求機能付セション下位エンティティ13dという。また、再送要求機能付セション下位エンティティ13dは、タイマーを有し、設定された時間内に送信されてこなかったデータを再送するよう、送信側装置1に要求するものとしている。これによりリアルタイム処理を可能としている。また、これらのセション下位エンティティ13は、送信側と受信側のそれぞれにおいてインタフェースを統一するものとする。
また、セション下位エンティティ13は、通信途絶監視機能を有している。通信途絶監視機能とは、セション層での通信が途絶していないかどうかをエージェントの伝送の有無にかかわらず、一定周期で監視する機能をいう。本実施形態では、例えば通信途絶監視用のデータユニット18は、シーケンス番号22を負の整数に設定し、送信側装置1のセション下位エンティティ13から送信されるものとしている。尚、シーケンス番号22の設定は上記に限られるものではない。通信途絶監視用のデータユニット18を受信側装置1のセション下位エンティティ13が受信すると、受信確認信号を送信側装置3のセション下位エンティティ13に返送する。送信側装置1のセション下位エンティティ13は、受信確認信号を受け取った最新の時刻と現在の時刻を予め設定された一定の時間毎に比較し、予め設定された時間以上経過している場合には、セション上位エンティティ12に対して通信途絶が発生していることを通知するものである。
本実施形態では、例えば送信側装置1のセション上位エンティティ12は初期設定時に、セション下位エンティティ13が、連続送信機能付セション下位エンティティ13aであるか、または再送受付機能付セション下位エンティティ13bであるかの認識を行うものとする。尚、初期設定時とは、例えば装置の起動時、再起動時、アプリケーションプログラムの起動時が該当する。また、受信側装置3のセション上位エンティティ12も同様に初期設定時に、後着廃棄機能付セション下位エンティティ13cであるか、または再送要求機能付セション下位エンティティ13dであるかの認識を行うものとする。本実施形態では、例えば優先度により、オブジェクトクラス定義がそれぞれ異なることとしているので、セション上位エンティティ12はオブジェクトクラス定義により、セション下位エンティティ13の認識を行うものとしている。尚、セション上位エンティティ12が直接初期設定を行わない場合、すなわち初期設定プログラムが別途存在する場合には、セション上位エンティティ12はセション下位エンティティ13の違いを認識する必要はない。
本実施形態では、例えば初期設定時の認識は次のように行われる。セション上位エンティティ12を設定する際に、緊急処理用または通常時用であるのかを予め指定する。この指定は、例えば次のように行われる。まず、エージェントプラットフォーム15にセション上位エンティティ12が緊急処理用であるのか、通常用であるのかの違いを予め認識させておく。さらにエージェントはエージェントプラットフォーム15に問い合わせを行って、いずれのセション上位エンティティ12であるのかを認識し、適切なセション上位エンティティ12を選択するようにしている。また、緊急処理用である場合は、セション下位エンティティ13として送信側装置1であれば連続送信機能付下位エンティティを13a、受信側装置3であれば後着廃棄機能付下位エンティティ13cを生成してセション上位エンティティ12との関連づけを行う。尚、関連づけは、例えばオブジェクトの参照によることとしている。本実施形態では、セション上位エンティティ12の有するセション下位エンティティ13の参照番号を記憶する記憶領域に、関連づけるセション下位エンティティ13の参照番号を記憶しておくことで、関連づけを行っている。また、通常時用である場合は、セション下位エンティティ13として送信側装置1であれば再送受付機能付下位エンティティを13b、受信側装置3であれば再送要求機能付下位エンティティ13dを生成してセション上位エンティティ12との関連づけを行うものである。尚、セション上位エンティティ12とセション下位エンティティ13は別のオブジェクトであって、かつセション下位エンティティは種類に関わらず同一のインタフェースを有しているため、セション下位エンティティ13との組合せはこれに限られるものではない。
また、送信側装置1においては、一つのセション上位エンティティに対して、連続送信機能付セション下位エンティティ13aと再送受付機能付セション下位エンティティ13bとは、初期設定時にいずれか選択し、同時に使用することはない。また、受信側装置3においても同様に、一つのセション上位エンティティに対して、後着廃棄機能付セション下位エンティティ13cと再送要求機能付セション下位エンティティ13dとを同時に使用することはない。
また、本実施形態では、例えば優先度「中」や「低」のエージェントの伝送を行っている場合に、優先度「高」のエージェントの伝送を行う場合には、優先度「中」や「低」のエージェントの伝送は、一時的に中断し、優先度「高」のエージェントの伝送を行うようにしている。また、優先度「高」のエージェントの伝送を行っている場合には、優先度「中」や「低」のエージェントの伝送要求は発生しないものとしている。
また、送信側装置1の連続送信機能付セション下位エンティティ13aと通信を行うのは、受信側装置3の後着廃棄機能付セション下位エンティティ13bであり、受信側装置3の再送要求機能付セション下位エンティティ13dとは通信を行うことはできない。また、同様に送信側装置1の再送受付機能付セション下位エンティティ13cと受信側装置3の後着廃棄機能付セション下位エンティティ13bは通信を行うことはないものとする。
また、受信側装置3のセション下位エンティティ13は、自らスレッドを有し、他のスレッド(例えばモバイルエージェント)と並列に処理を実行可能としている。即ち、受信処理やエージェントの処理が行われていても、新たなデータユニット18の受信を開始することが可能である。また、受信側装置3のセション上位エンティティは、エージェントの移動完了確認を行うためのセション下位エンティティ13を有する。
また、セション層プロトコル11は、別ルート送信の隠蔽機能を有している。別ルート送信の隠蔽機能とは、ある受信側装置3に対して複数の経路が存在する場合に、送信側装置1がいずれの経路を選択して送信するのか、または、複数の経路に対して同時に送信し、受信側装置3において後着廃棄等の処理を行うかの判断をセション層において行うことをいう。
これにより、エージェント又はエージェントプラットフォーム等の上位層における経路選択の判断処理をなくすことができる。より具体的には、通常、異なる経路にデータを送信する場合には、受信側装置1及び送信側装置3に複数の通信ネットワークカードを装備しておき、UDPのソケットを必要数設定する必要があるが、セション層においてUDPのソケット設定を行うことにより、上位層に対しては複数の経路が存在しない場合と同じインタフェースにて利用可能とする状態を実現するものである。尚、複数経路の設定は、イーサネットスイッチにおけるMSTP(Multiple Spanning Tree Protocol)や、MPLS(Multiprotocol Label Switching)技術を用いることにより実現されるものである。
また、エージェントが移動後に到着する受信部16には、緊急処理用受信部16aと通常処理用受信部16bがあるものとする。本実施形態では、緊急処理エージェントを連続送信機能(連続送信機能付セション下位エンティティ13aと後着廃棄機能付セション下位エンティティ13cの組合せ)付きセション層プロトコル11aにより緊急処理用受信部16aに送信し、また迅速処理エージェント及び平常処理エージェントを再送要求機能(再送受付機能付セション下位エンティティ13bと再送要求機能付セション下位エンティティ13dの組合せ)付セション層プロトコル11bにより通常処理用受信部16bに送信するものとしている。尚、受信部16に対しての優先度の設定は、上記方法に限られるものではない。また、後着廃棄機能付セション下位エンティティ13bは最も優先度の高いエージェント及び受信部16に利用されるものであるので、この処理を制御するスレッドの優先度も「高」に設定するものとするが、これに限られるものではなく、他の優先度としても良い。
また、本実施形態においては、セション下位エンティティ13の種類に応じて、UDPレベルにおいて異なるトポロジを形成することとすることとしている。例えば図6にセション下位エンティティ13とUDPトポロジの組み合わせを示す。図6(a)に示すように、連続送信機能付きセション層プロトコル11aを用いる場合には、UDPのマルチキャスト機能を利用することにより、送信側装置1から複数の受信側装置3へ同時に同じデータが伝送可能となる。これにより、例えば高いリアルタイム性が要求される処理を行う場合において、本来その機能を提供すべき受信側装置とそのバックアップ装置に対して、別々に送信処理を行うようにした場合に、処理時間が長くなるという問題に対しても、マルチキャスト機能を利用することでバックアップ装置へのデータ伝送を行う場合であっても、バックアップを行わない場合と同じ処理となる。これによりエージェントの移動の効率化を図ることができる。尚、この通信は一方向とし、エージェントレベルで装置間の双方向通信を行う場合には、別のマルチキャストグループを設定するものとする。
また、図6(b)に示すように、再送要求機能付セション層プロトコル11bを用いる場合には、ユニキャスト機能を用いて、送信側装置1から受信側装置3にデータユニットを転送する。
以下に、セション層プロトコル11によるモバイルエージェントの伝送方法について詳細に説明する。送信処理、受信処理、移動完了確認処理について説明する。
(送信処理)
まず、セション層プロトコル11が行う送信処理について説明する。以下、セション上位エンティティ12、連続送信機能付セション下位エンティティ13a、再送受付機能付セション下位エンティティ13cがデータユニット18を送信する際にそれぞれ行う処理を説明する。
図7に、セション上位エンティティ12がデータユニット18を送信する処理のフローチャートを示す。先ず、エージェント14がセション上位エンティティ12に対し移動を要求する(S101)。エージェント14を構成するオブジェクトを通信可能な形式であるバイト列に変換する(S102)。送信するバイト列の大きさと設定されたユーザ領域20の大きさからUDPの最大通信容量に従って分割数を算出する(S103)。算出された分割数に基づいて送信するバイト列を分割し(S104)、分割された各バイト列にヘッダを付加してデータユニット18を作成する(S105)。尚、ユーザ領域20とは、セション層のデータユニット18においてユーザデータを格納する領域をいい、データユニット18とは、セション下位エンティティ12によって送受信される単位をいい、ヘッダ19とユーザ領域20からなるものである。
図19にデータユニット18の一例を示す。データユニット18は、セション識別子21(8バイト)、シーケンス番号22(8バイト)、分割数23(4バイト)、分割現在位置24(4バイト)により構成されるヘッダ19とユーザ領域20からなる。尚、上記述べたデータユニット18の構成、例えばバイト数は一例でありこれに限られるものではない。また、本実施形態ではシーケンス番号22は、データ伝送に用いられる場合には常に正の値を有するものとし、通信途絶監視機能に用いられる場合には負の整数に設定するものとするが、設定方法はこれに限られるものではない。
次に、データユニット18を配列として管理可能とし(S106)、移動中のエージェントの識別子を登録する(S107)。このようにデータユニット18を配列として管理することにより、配列のインデックスにて順番等の管理が可能となるので、例えば送信する際にインデックスの小さい順にバイト列をデータユニット18から抽出することが容易となる。さらにセション下位エンティティ13に対して分割されたバイト列の送信を依頼し(S108)、シーケンス番号22の更新を行う(S109)。以上で、セション上位エンティティ12がデータユニット18を送信する処理は終了する。
次に、連続送信機能付セション下位エンティティ13aがデータユニット18を送信する処理のフローチャートを図8に示す。セション上位エンティティ12から送信依頼を受けデータの送信回数を0に初期化する(S110)。次に、送信回数が予め設定された繰り返し回数に達したかどうかの判断を行い(S111)、予め設定された繰り返し回数に達していれば(S111:Yes)、処理は終了するが、予め設定された繰り返し回数に達していない場合(S111:No)は、配列の先頭から参照する(S112)。尚、本実施形態では、送信回数はプログラム起動時に初期設定ファイルに予め記述された回数を読み取って設定するものとしているが、これに限られるものではなく、例えばプログラム起動後に、受信するエージェントによって設定するようにしてもよい。なお、初期設定ファイルとは、補助記憶装置8に記憶され、送受信ポート番号や相手装置名等セションエンティティが正常に動作するためのデータを指示するためのものである。
次に、参照位置が配列の最後尾を過ぎたかどうかの判断を行い(S113)、配列の最後尾を過ぎていない場合(S113:No)は、参照しているデータユニット18に基づき、データグラムパケットを作成する(S114)。さらに、作成したデータグラムパケットをUDPにて送信し(S115)、参照位置を次に移したうえで(S116)、S113へ戻る。最後尾を過ぎている場合(S113:Yes)は、送信回数を1増やし(S117)、さらに予め設定された時間だけ待機し(S118)、S111に戻るものである。尚、本実施形態では、待機時間はプログラム起動時に初期設定ファイルに予め記述された時間を読み取って設定するものとしているが、これに限られるものではなく、例えばプログラム起動後に、受信するエージェントによって設定するようにしてもよい。また、待機時間を0に設定して待機しないようにしても良い。以上で、連続送信機能付セション下位エンティティ13aがデータユニット18を送信する処理は終了する。
次に、再送受付機能付セション下位エンティティ13cがデータユニット18を送信する処理のフローチャートを図9に示す。先ず、参照位置を配列の先頭に定め(S119)、参照位置が配列の最後尾を過ぎたかどうかを判断する(S120)。配列の最後尾を過ぎていない場合(S120:No)は、参照しているデータユニット18に基づき、データグラムパケットを作成し(S121)、作成したデータグラムパケットをUDPにて送信し(S122)、S120へ戻る。最後尾を過ぎている場合(S120:Yes)は、分割されたバイト列を管理する配列を送信側装置1の記憶装置上のバッファに保存する(S123)。バッファに保存しておくことにより、再送要求を受け取った際の再送を可能とするものである。以上で、再送受付機能付セション下位エンティティ13cがデータユニット18を送信する処理は終了する。以上が、セション層プロトコル11が行う送信処理についての説明である。
(受信処理)
次に、セション層プロトコル11が行う受信処理について説明する。以下、後着廃棄機能付セション下位エンティティ13b、再送受付機能付セション下位エンティティ13d、セション上位エンティティ12がデータユニット18を受信する際にそれぞれ行う処理を説明する。
後着廃棄機能付セション下位エンティティ13bがデータユニット18を受信する際のフローチャートを図10に示す。先ず、連続送信機能により送信されたデータグラムパケットを受信し(S201)、セション識別子21が正しいかどうか判断する(S202)。正しいセション識別子21である場合(S202:Yes)は、当該シーケンス番号22のデータユニット18は既にすべて受信したかどうかを判断する(S203)。すべて受信していない場合(S203:No)は、受信したデータユニット18が有するシーケンス番号22の記録が受信側装置3の受信ログファイルに存在するかどうかを判断する(S204)。なお、受信ログファイルは主記憶装置7に記録され、既に受信されているデータユニット18を識別するために存在する。存在しない場合(S204:No)は、当該シーケンス番号22の記録を受信側装置3のログに保存する(S206)。存在する場合(S204:Yes)は、受信したデータユニット18と同一の分割現在位置24(フラグメント)を示すデータユニット18が既に受信されているかどうか判断し(S205)、受信していない場合(S205:No)は、受信したデータユニット18の記録を受信側装置3のログに保存する(S207)。次に、データユニット18からセション上位用データユニットを作成し(S208)、当該シーケンス番号22におけるすべてのデータユニット18が揃ったかどうか判断する(S209)。揃った場合(S209:Yes)は、最後の分割であることを示すフラッグをセション上位用データユニットに設定し(S210)、当該シーケンス番号22のデータユニット18をすべて受信したことを記憶装置に記録する(S211)。セション上位エンティティにセション上位用データユニットを渡し(S212)、S201に戻るものである。以上で、後着廃棄機能付セション下位エンティティ13bがデータユニット18を受信する処理は終了する。
再送要求機能付セション下位エンティティ13dがデータユニット18を受信する処理のフローチャートを図11に示す。先ず、再送要求機能により送信されたデータグラムパケットを受信し(S213)、セション識別子21が正しいかどうか判断する(S214)。正しい場合セション識別子21である場合(S214:Yes)は、当該シーケンス番号22のデータユニット18を既にすべて受信したかどうかの判断を行う(S215)。すべて受信していない場合(S215::No)は、受信したデータユニット18が有するシーケンス番号22の記録が受信側装置3のログに存在するかどうかを判断する(S216)。存在しない場合(S216:No)は、再送要求処理を並行して処理ができるように起動する(S218)。
再送要求処理は、再送要求機能付セション下位エンティティ13dが送信側装置1に対して設定された時間内に送信されてこなかったデータを再送するよう、送信側装置1に要求するものである。再送要求処理のフローチャートを図16に示す。先ずシーケンス番号の記録をログに保存し、時計の計測を開始し(S218−1)、設定された時間だけ待機する(S218−2)。次に、バッファを参照して受信していないデータユニット番号を収集して(S218−3)、受信していないデータユニット18が存在していれば(S218−3:Yes)、受信していないデータユニットの分割現在位置24を送信側装置1に対して送信し(S218−4)、S218−1の処理に戻るものである。受信していないデータユニット18が存在しなくなった場合(S218−3:No)は、タイマを消去し(S218−5)、再送要求処理は終了する。
これに対し、受信したデータユニット18が有するシーケンス番号22の記録が受信側装置3のログに存在する場合(S216:Yes)は、受信したデータユニット18と同一の分割現在位置24のデータユニット18が既に受信されているかどうか判断する(S217)。そして、受信していない場合(S217:No)あるいは再送要求処理(S218)の後、受信したデータユニット18の記録を受信側装置3のログに保存する(S219)。受信したデータユニット18からセション上位用データユニットを作成し(S220)、当該シーケンス番号22におけるすべてのデータユニット18が揃ったかどうか判断する(S221)。揃った場合(S221:Yes)は、最後のフラグメントであることを示すフラッグをセション上位用データユニットに設定し(S222)、当該シーケンス番号22のデータユニット18を既にすべて受信したことを記憶装置に記録する(S223)。セション上位エンティティ12にセション上位用データユニットを渡し(S224)、S213に戻るものである。以上で、再送要求機能付セション下位エンティティ13dがデータユニット18を受信する処理は終了する。
セション上位エンティティ12がデータユニット18を受信する処理のフローチャートを図12に示す。先ず、受信したデータユニット18のシーケンス番号22に対応したデータユニット18が送信側装置1のバッファに存在するかどうかの判断をおこない(S225)、バッファが存在しない場合(S225:No)は、当該シーケンス番号22に対応した受信用バッファを記憶装置上に作成する(S226)。次に、データユニット18からユーザ領域20のバイト列を抽出し(S227)、当該シーケンス番号22における最後のデータユニット18かどうかの判断をおこなう(S228)。最後のデータユニット18でない場合(S228:No)、処理は終了する。最後のデータユニット18である場合(S228:Yes)は、ユーザ領域20のバイト列を結合し(S229)、結合後のバイト列からオブジェクトを複製し(S230)、さらに複製したオブジェクトを受信部16に渡す(S231)。 さらに、受信用バッファから該当するデータユニット18を削除し(S232)、復元したエージェントの識別子を到着処理ログファイルに記述(S233)を行い、移動完了確認の送信処理を起動する(S234)。なお、到着処理ログファイルは、主記憶装置7に記憶され、復元されたエージェントのうち、移動完了確認応答が受信されていないものを判別するためのものである。以上で、セション上位エンティティ12がデータユニット18を受信する処理は終了する。
(移動完了確認処理)
セション層プロトコル11が行う移動完了確認処理について説明する。先ず、受信側装置3が移動完了確認を送信する際のフローチャートを図13に示す。受信側装置は、エージェントの復元の後、移動完了確認を送信側装置1に返送し(S301)、予め設定された時間だけ待機して(S302)、移動完了確認応答を受信しているかどうか判断する(S303)。受信している場合(S303:Yes)は、処理は終了する。移動完了確認応答を受信していない場合(S303:No)は、設定された返送回数を超えているかどうかを判断する(S304)。返送回数を超えている場合(S304:Yes)は、移動完了確認応答が得られないことを受信部16に通知する(S305)。具体的には、エージェントが一意に持っている識別子を受信部16に受け渡すことにより、受信部16は、どのエージェントの移動完了応答が受信できていないかを認識するものである。このとき、セション下位エンティティ13は、エージェントとして復元されていながら対応する移動完了確認応答が得られていないエージェント識別子を主記憶装置7に記録されている到着処理ログファイルに記述し、移動完了確認応答の受信があったかどうかの照合を可能としている。返送回数を超えていない場合(S304:No)は、S301に戻る。以上で移動完了確認の送信受信側が移動完了確認を送信する処理は終了する。
送信側装置1が移動完了確認を受信し、受信側装置3に対し移動完了確認応答を送信する処理のフローチャートを図14に示す。先ず、エージェントの移動完了確認を受信側装置3より受け取り(S306)、既に移動完了確認を行ったエージェントかどうかの判断を行う(S307)。既に、移動完了確認を行っている場合(S307:Yes)は、処理は終了する。移動完了確認を行っていない場合(S307:No)は、移動中と登録されているエージェントの移動完了を上位エンティティに通知し(S308)、上位エンティティにおいて該当するエージェントの識別子を主記憶装置7にある到着処理ログファイルから削除する。次に、移動完了確認応答を受信側装置1に送信し(S309)、予め設定された時間だけ待機する(S310)。さらに、送信回数が設定された回数を超えたかどうかの判断を行い(S311)、設定された回数を超えていれば(S311:Yes)、処理は終了する。設定された回数を超えていなければ(S311:No)、S309に戻ることとしている。尚、例えば連続送信を複数の受信側装置3に対して行う場合は、移動完了確認は受信側装置3ごとに実施されるものである。以上で、送信側装置1が移動完了確認を受信し、移動完了確認応答を受信側装置3に送信する処理は終了する。
受信側装置3が、移動完了確認応答を受信する処理のフローチャートを図15に示す。エージェントの移動完了確認応答を送信側装置1より受け取ると(S312)、当該エージェントの識別子を主記憶装置7に保存されている到着処理ログファイルから削除し(S313)、エージェントの移動完了確認応答を記憶装置に記録する(S314)。以上で、移動完了確認応答の受信側が、移動完了確認応答を受信する処理は終了する。
以上、説明した送信処理、受信処理、移動完了確認処理によるセション層におけるモバイルエージェントの伝送方法について、連続送信機能を利用した場合と再送機能を利用した場合に分けて説明する。
まず、連続送信機能を利用した場合のデータ交換手順を図17に示す。このデータ交換手順は、エージェントを複数、例えば3つのデータユニット18に分割し同じデータを2回送信する場合、即ち再送回数を2回に設定する場合において、1回目の送信時に2番目のデータユニット18が何らかの理由により受信側に到着しなかった例を示す。
連続送信機能を用いた場合、送信側装置1はデータユニット18の到着成否にかかわらず、予め設定された回数(本実施形態においては2回とする)分、繰り返して送信を行うものである。データユニット18を受信した受信側装置3は後着廃棄機能を用いて、各データユニット18を一つずつ揃えて、エージェントを復元する。さらに、受信側装置3は、復元に成功した後、エージェントの移動完了確認を送信側装置1に送信する。移動完了確認は、送信側装置1からの移動完了確認応答を受信するか、または設定された回数分送信を行った後に終了する。さらに、移動完了確認を受信した送信側装置1は、移動完了確認応答を送信する。尚、移動完了確認とは、受信側から送信側へ送信される移動完了したエージェントの識別子を示す。また、本実施形態では、例えば移動完了確認を受信できなかった場合には、エージェントの復元に失敗した旨の応答を返信し、以降はアプリケーションプログラムの処理に従うこととしているがこれに限られるものではない。
次に、移動完了確認を受け取った送信側装置1は、移動完了確認応答を設定された回数分、受信側装置3に送るものとしている。尚、本実施形態において示すようにエージェントの移動完了確認とその応答を行うものとするが、以下に述べる移動完了確認とその応答は必ずしも行うことを必要とせず、省略することとしても良い。
次に、再送要求機能を利用した場合のデータ交換手順を図18に示す。このデータ交換手順は、図17による例と同様、エージェントを3つのデータユニット18に分割して送信する際に、そのうち2番目のデータユニット18が何らかの理由により受信側に到着しなかった例を示す。
再送要求機能を用いた場合には、設定された到着しないデータユニット18があると、受信側から送信側に対し、到着していないデータユニット18を特定しその再送を要求するものとしている。要求を受けた送信側は、該当するデータユニット18を送信する。エージェントの復元以降、移動完了確認とその応答に関する処理は、連続送信機能を用いた場合と同様におこなうものとしている。
本実施形態においては、連続送信機能付きセション層プロトコル11aと再送要求機能付セション層プロトコル11bを実装した送信側装置1、受信側装置3により通信ネットワークが構成されるものとしたが、実施の形態はこれに限られるものではない。例えば、連続送信機能付きセション層プロトコル11aのみを実装した送信側装置1、受信側装置3で通信ネットワークを構成し、すべての伝送処理を連続送信機能、後着廃棄機能の組み合わせにより処理することとしても良い。また、逆に、再送要求機能付セション層プロトコル11bのみを実装した送信側装置1、受信側装置3で通信ネットワークを構成し、すべての伝送処理を再送受付機能、再送要求機能の組合せにより処理することとしても良い。
以上、本実施形態においては、需要地系統におけるモバイルエージェントをセション層プロトコル11を用いて伝送する場合について説明したが、上記述べたセション層プロトコルはモバイルエージェントの伝送のみに用いられるものではなく、他の通信ネットワークにも適用すること可能である。伝送を行う対象もモバイルエージェントに限定されるものではなく、一般のデータ、プログラム等であっても良い。