(57)【要約】【課題】  データを破棄せずにデータ送信の優先処理を行うことができる中継通信方法、中継通信プログラム、及び中継通信装置を提供する。【解決手段】  中継通信方法は、アプリケーションからデータを受け付ける工程と、前記アプリケーションの新たなデータの受け付けに応じ、通信先へ中継するデータ残量と、前記アプリケーションから受け付けた複数のデータの各々の優先度とに基づいて、前記複数のデータの各々の途絶耐性ネットワークのプロトコルによる中継経路を決定する工程とを、コンピュータが実行する方法である。【選択図】図１６
2018166258.tif 000002
【特許請求の範囲】
【請求項１】
アプリケーションからデータを受け付ける工程と、
前記アプリケーションの新たなデータの受け付けに応じ、通信先へ中継するデータ残量と、前記アプリケーションから受け付けた複数のデータの各々の優先度とに基づいて、前記複数のデータの各々の途絶耐性ネットワークのプロトコルによる中継経路を決定する工程とを、コンピュータが実行することを特徴とする中継通信方法。
【請求項２】
前記優先度は、前記アプリケーションから受け付けた前記複数のデータの各々に付与された時刻情報に基づき設定されていることを特徴とする請求項１に記載の中継通信方法。
【請求項３】
前記データ残量が所定量より多い場合、前記アプリケーションから受け付けた前記複数のデータのうち、前記新たなデータの前記優先度が他のデータの前記優先度より高いとき、前記他のデータを前記新たなデータとは異なる通信インターフェースに対応する格納領域に格納する工程を、前記コンピュータが実行することを特徴とする請求項１または２に記載の中継通信方法。
【請求項４】
前記データ残量が前記所定量より多い場合、前記アプリケーションから受け付けた前記複数のデータのうち、前記新たなデータの前記優先度が前記他のデータの前記優先度より高いとき、前記他のデータに当該中継処理に関する情報を付与する工程を、前記コンピュータが実行することを特徴とする請求項３に記載の中継通信方法。
【請求項５】
前記データ残量が前記所定量より多い場合、前記アプリケーションから受け付けた前記複数のデータのうち、前記新たなデータの前記優先度が他のデータの前記優先度より低いとき、前記新たなデータを前記他のデータとは異なる通信インターフェースに対応する格納領域に格納する工程を、前記コンピュータが実行することを特徴とする請求項１乃至４の何れかに記載の中継通信方法。
【請求項６】
前記データ残量が前記所定量より多い場合、前記アプリケーションから受け付けた前記複数のデータのうち、前記新たなデータの前記優先度が前記他のデータの前記優先度より低いとき、前記新たなデータに当該中継処理に関する情報を付与する工程を、前記コンピュータが実行することを特徴とする請求項５に記載の中継通信方法。
【請求項７】
前記アプリケーションの前記新たなデータの受け付けに応じ、前記新たなデータのサイズに基づき前記新たなデータの途絶耐性ネットワークのプロトコルによる中継経路を決定する工程を、前記コンピュータが実行することを特徴とする請求項１乃至６の何れかに記載の中継通信方法。
【請求項８】
アプリケーションからデータを受け付け、
前記アプリケーションの新たなデータの受け付けに応じ、通信先へ中継するデータ残量と、前記アプリケーションから受け付けた複数のデータの各々の優先度とに基づいて、前記複数のデータの各々の途絶耐性ネットワークのプロトコルによる中継経路を決定する、処理を、コンピュータに実行させることを特徴とする中継通信プログラム。
【請求項９】
アプリケーションからデータを受け付ける受付部と、
前記アプリケーションの新たなデータの受け付けに応じ、通信先へ中継するデータ残量と、前記アプリケーションから受け付けた複数のデータの各々の優先度とに基づいて、前記複数のデータの各々の途絶耐性ネットワークのプロトコルによる中継経路を決定する決定部とを有することを特徴とする中継通信装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本件は、中継通信方法、中継通信プログラム、及び中継通信装置に関する。
【背景技術】
【０００２】
近年、無線アクセスポイント（以下、「ＡＰ」と表記）が普及した結果、スマートフォンなどの端末は、無線アクセスポイントと通信キャリアの広域無線接続を切り替えながら通信を行うスタイルが広まっている。このような環境において、通信状態は、端末の接続数や周囲の電波状況に影響されるため、通信品質が場所や時間によりばらついて、通信が断続的となる。
【０００３】
例えば、ユーザが移動中、リンク対象のＡＰを切り替えながらインターネット上のサーバと通信を行う場合、通信のデータ量が多く、ＡＰのリンク可能範囲内の滞在時間が短いと、通信が途中で切断されるため、他のＡＰとの再リンク後に通信のやり直しが必要となる。
【０００４】
これに対し、端末のアプリケーションに、通信の遅延や途絶に対する耐性を持たせることが検討されている。例えば、通信が断続的となる環境でも円滑な通信を可能にする技術として、途絶耐性ネットワーク（DTN：Delay, Disruption Tolerant Networking）が知られている（例えば特許文献１及び２）。この技術は、ＩＥＴＦ（The Internet Engineering Task Force）により標準化が進められ、例えばＲＦＣ（Request For Comments）５０５０には、ＤＴＮに適用するバンドルプロトコルが規定されている。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】特開２００８−２０５８９０号公報
【特許文献２】国際公開２００９／０７８４２７号
【発明の概要】
【発明が解決しようとする課題】
【０００６】
バンドルプロトコルは、本来、宇宙空間や海中などの特殊な環境下の通信のように、リアルタイム性がなく、遅延を前提とした通信に適用することを想定しているため、一般的なアプリケーションには直接的に用いることが難しい。このため、一般的なアプリケーションの通信にバンドルプロトコルを用いるためには、バンドルプロトコルに基づき通信を行うプロキシ機能の使用が考えられる。
【０００７】
プロキシ機能を備えた中継通信装置は、通信の切断中、アプリケーションからデータを受信してバンドル化したうえでバッファに格納しておき、通信の復旧後に送信する。このとき、バンドル化されたデータの送信順序は、アプリケーションからの受信順序に一致する。
【０００８】
しかし、この送信順序は、データの用途によっては適切ではないことがある。例えば監視カメラの映像データのようにリアルタイム性の高いデータを送信する場合、時系列順で古い映像データが新しい映像データより先に送信されると、受信側で新しい映像の確認が遅れるため、監視に支障を生ずるおそれがある。
【０００９】
これに対し、中継通信装置が、古い映像データを廃棄すれば新しい映像データを優先的に送信することができるため、監視に支障が生ずることを防止できる。しかし、古い映像データは、過去の映像解析には用いられる可能性があるため、廃棄することができない。
【００１０】
そこで本件は、データを破棄せずにデータ送信の優先処理を行うことができる中継通信方法、中継通信プログラム、及び中継通信装置を提供することを目的とする。
【課題を解決するための手段】
【００１１】
１つの態様では、中継通信方法は、アプリケーションからデータを受け付ける工程と、前記アプリケーションの新たなデータの受け付けに応じ、通信先へ中継するデータ残量と、前記アプリケーションから受け付けた複数のデータの各々の優先度とに基づいて、前記複数のデータの各々の途絶耐性ネットワークのプロトコルによる中継経路を決定する工程とを、コンピュータが実行する方法である。
【００１２】
１つの態様では、中継通信プログラムは、アプリケーションからデータを受け付け、前記アプリケーションの新たなデータの受け付けに応じ、通信先へ中継するデータ残量と、前記アプリケーションから受け付けた複数のデータの各々の優先度とに基づいて、前記複数のデータの各々の途絶耐性ネットワークのプロトコルによる中継経路を決定する、処理を、コンピュータに実行させるプログラムである。
【００１３】
１つの態様では、中継通信装置は、アプリケーションからデータを受け付ける受付部と、前記アプリケーションの新たなデータの受け付けに応じ、通信先へ中継するデータ残量と、前記アプリケーションから受け付けた複数のデータの各々の優先度とに基づいて、前記複数のデータの各々の途絶耐性ネットワークのプロトコルによる中継経路を決定する決定部とを有する。
【発明の効果】
【００１４】
１つの側面として、データを破棄せずにデータ送信の優先処理を行うことができる。
【図面の簡単な説明】
【００１５】
【図１】端末の一例を示す構成図である。
【図２】サーバの一例を示す構成図である。
【図３】端末及びサーバの各機能構成の一例を示す構成図である。
【図４】バンドルのフォーマットを示す図である。
【図５】コネクションリスト、フィルタテーブル、バンドルバッファ、送信イベントキュー、及び受信イベントキューの一例を示す図である。
【図６】プロトコル変換の一例を示す図である。
【図７】クライアントアプリケーションのデータ送信処理の一例を示すフローチャートである。
【図８】バンドルの送信処理の一例を示すフローチャートである。
【図９】バンドルのエクスポート処理の一例を示すフローチャートである。
【図１０】バンドルの受信処理の一例を示すフローチャートである。
【図１１】バンドルのインポート処理の一例を示すフローチャートである。
【図１２】バンドルプロトコルの適用の切り替え処理の一例を示すフローチャートである。
【図１３】映像データの送信処理の比較例を示すシーケンス図である。
【図１４】コネクションが切断されていない場合の映像データの送信処理の一例を示すシーケンス図である。
【図１５】コネクションが切断された場合の映像データの送信処理の一例を示すシーケンス図である。
【図１６】コネクションが切断された場合の映像データの送信処理の他の例を示すシーケンス図である。
【図１７】サイズが異なるデータの送信処理の比較例を示すシーケンス図である。
【図１８】サイズが異なるデータの送信処理の一例を示すシーケンス図である。
【発明を実施するための形態】
【００１６】
図１は、端末の一例を示す構成図である。端末１としては、例えば、スマートフォンやパーソナルコンピュータなどの通信端末が挙げられるが、これに限定されない。
【００１７】
端末１は、ＣＰＵ（Central Processing Unit）１０、ＲＯＭ（Read Only Memory）１１、ＲＡＭ（Random Access Memory）１２、ＨＤＤ（Hard Disk Drive）やメモリなどの記憶部１３を有する。端末１は、さらに、無線ＬＡＮ（Local Area Network）モジュール１４、入力部１５、表示部１６、ＨＤＤやＳＳＤ（Solid State Drive）などのストレージ１７、及びＵＳＢ（Universal Serial Bus）インターフェース（ＵＳＢ−ＩＦ）部１８を有する。ＣＰＵ１０は、互いに信号の入出力ができるように、ＲＯＭ１１、ＲＡＭ１２、記憶部１３、無線ＬＡＮモジュール１４、入力部１５、表示部１６、ストレージ１７、及びＵＳＢ−ＩＦ１８と、バス１９を介して接続されている。
【００１８】
ＲＯＭ１１は、ＣＰＵ１０を駆動するプログラムが格納されている。ＲＯＭ１１内のプログラムには、実施例の中継通信方法を実行する中継通信プログラムが含まれる。
【００１９】
ＲＡＭ１２は、ＣＰＵ１０のワーキングメモリとして機能する。記憶部１３には、プログラムの実行に用いられる各種の情報が記憶されている。ＵＳＢ−ＩＦ１８は、ＣＰＵ１０のドライバからの制御に従って、例えばＵＳＢメモリなどの記憶媒体９との通信を処理する。ストレージ１７には、ＵＳＢ−ＩＦ１８を介して読み書き可能なデータ格納領域（後述のエクスポートバッファなど）が設けられている。
【００２０】
無線ＬＡＮモジュール１４は、例えば、アクセス系ネットワークに接続されたＡＰとリンクアップすることによりインターネット上のサーバと通信する。無線ＬＡＮモジュール１４は、複数の通信回線によりＡＰとリンクアップすることが可能である。
【００２１】
入力部１５は、端末１に情報を入力する手段である。入力部１５としては、例えばキーボード、マウス、及びタッチパネルなどが挙げられる。入力部１５は、入力された情報を、バス１９を介しＣＰＵ１０に出力する。
【００２２】
表示部１６は、端末１の情報を出力する手段である。表示部１６としては、例えばディスプレイ、タッチパネル、及びプリンタなどが挙げられる。表示部１６は、ＣＰＵ１０からバス１９を介して情報を取得して表示する。
【００２３】
ＣＰＵ１０は、ＲＯＭ１１からプログラムを読み込むと、中継通信方法を実行するための各種の機能が形成される。ＣＰＵ１０は、プログラムを実行するコンピュータの一例である。なお、端末１の機能構成については後述する。
【００２４】
図２は、サーバ２の一例を示す構成図である。サーバ２は、例えばインターネットに接続され、端末１と通信することにより所定のサービスを提供する中継通信装置である。
【００２５】
サーバ２は、ＣＰＵ２０、ＲＯＭ２１、ＲＡＭ２２、ＨＤＤ２３、通信ポート２４、ストレージ２５、及びＵＳＢ−ＩＦ２６を有する。ＣＰＵ２０は、互いに信号の入出力ができるように、ＲＯＭ２１、ＲＡＭ２２、ＨＤＤ２３、通信ポート２４、ＨＨＤＤやＳＳＤなどのストレージ２５、及びＵＳＢ−ＩＦ２６と、バス２９を介して接続されている。
【００２６】
ＲＯＭ２１は、ＣＰＵ２０を駆動するプログラムが格納されている。ＲＡＭ２２は、ＣＰＵ２０のワーキングメモリとして機能する。通信ポート２４は、例えばＮＩＣ（Network Interface Card）であり、インターネットを介し端末１と通信する。
【００２７】
ＵＳＢ−ＩＦ２６は、ＣＰＵ２０のドライバからの制御に従って、例えばＵＳＢメモリなどの記憶媒体９との通信を処理する。ストレージ２５には、ＵＳＢ−ＩＦ２６を介して読み書き可能なデータの格納領域（後述のインポートバッファなど）が設けられている。
【００２８】
図３は、端末１及びサーバ２の各機能構成の一例を示す構成図である。端末１及びサーバ２は、ネットワークＮＷを介して接続されている。
【００２９】
端末１は、アプリケーション機能部１００と、プロキシプロトコル機能部１１０と、バンドル制御部１２０と、バンドルバッファ１２２と、経路テーブル（経路ＴＢＬ）１２３と、中継経路判定部１２４と、エクスポート処理部１２５と、エクスポートバッファ１２７と、イベントリスト１２６とを有する。
【００３０】
アプリケーション機能部１００は、クライアントアプリケーション（ＡＰＬｃ）１０１と、ＴＣＰ（Transmission Control Protocol）処理部１０２とを有する。プロキシプロトコル機能部１１０は、プロキシ制御部１１１と、コネクション監視部１１２と、アドレス変換部１１３と、送受信制御部１１４と、応答制御部１１５と、コネクションリスト１１６と、初期設定ファイル１１７と、フィルタテーブル（フィルタＴＢＬ）１１８とを有する。
【００３１】
クライアントアプリケーション１０１、ＴＣＰ処理部１０２、プロキシ制御部１１１、コネクション監視部１１２、アドレス変換部１１３、送受信制御部１１４、応答制御部１１５、バンドル制御部１２０、中継経路判定部１２４、及びエクスポート処理部１２５は、端末１のＣＰＵ１０に形成される機能である。また、コネクションリスト１１６と、初期設定ファイル１１７と、フィルタＴＢＬ１１８、バンドルバッファ１２２、経路ＴＢＬ１２３、及びイベントリスト１２６は、記憶部１３に形成されており、エクスポートバッファ１２７は、ストレージ１７に形成されている。
【００３２】
なお、図３に示された端末１の機能構成のうち、アプリケーション機能部１００を除く部分は、実施例の中継通信装置及び中継通信プログラムとして機能し、クライアントアプリケーション１０１から通信先への通信を中継する。実施例の中継通信装置及び中継通信プログラムは、図３に示されるように端末１の内部に設けられてもよいが、端末１とは別の装置に設けられてもよい。
【００３３】
一方、サーバ２は、アプリケーション機能部２００と、プロキシプロトコル機能部２１０と、バンドル制御部２２０と、バンドルバッファ２２２と、インポート処理部２２５と、イベントリスト２２６と、経路ＴＢＬ２２３と、インポートバッファ２２７とを有する。
【００３４】
アプリケーション機能部２００は、サーバアプリケーション（ＡＰＬｓ）２０１と、ＴＣＰ処理部２０２とを有する。プロキシプロトコル機能部２１０は、プロキシ制御部２１１と、コネクション監視部２１２と、アドレス変換部２１３と、送受信制御部２１４と、応答制御部２１５と、コネクションリスト２１６と、初期設定ファイル２１７と、フィルタＴＢＬ２１８とを有する。
【００３５】
サーバアプリケーション２０１、ＴＣＰ処理部２０２、プロキシ制御部２１１、コネクション監視部２１２、アドレス変換部２１３、送受信制御部２１４、応答制御部２１５、バンドル制御部２２０、及びインポート処理部２２５は、サーバ２のＣＰＵ２０に形成される機能である。また、コネクションリスト２１６と、初期設定ファイル２１７と、フィルタＴＢＬ２１８、バンドルバッファ２２２、経路ＴＢＬ２２３、及びイベントリスト２２６は、ＨＤＤ２３に形成されており、インポートバッファ２２７は、ストレージ２５に形成されている。
【００３６】
サーバアプリケーション２０１とクライアントアプリケーション１０１は、ＴＣＰ処理部１０２，２０２により通信することにより連携して所定の機能を提供する。サーバアプリケーション２０１とクライアントアプリケーション１０１の機能としては、例えばファイル転送機能や映像データ転送機能などが挙げられるが限定はない。なお、クライアントアプリケーション１０１はアプリケーションの一例である。
【００３７】
ＴＣＰ処理部１０２，２０２は、例えばＯＳ（Operating System）のドライバなどにより提供されるＴＣＰ／ＩＰ（Internet Protocol）の通信機能を備える。端末１のＴＣＰ処理部１０２は、無線ＬＡＮモジュール１４を制御してパケットの送受信を行い、サーバ２のＴＣＰ処理部２０２は、通信ポート２４を制御してパケットの送受信を行う。
【００３８】
サーバアプリケーション２０１とクライアントアプリケーション１０１は、ネットワークＮＷを介し、直接的にＴＣＰ／ＩＰに基づく通信を行う。しかし、通信が断続的となる環境においては、バンドル制御部１２０，２２０が、ＴＣＰ／ＩＰに基づく通信に代えて、ＤＴＮのバンドルプロトコルに基づく通信を行う。
【００３９】
バンドル制御部１２０は、クライアントアプリケーション１０１から通信先への通信を、その通信先とのコネクションの状態に応じて、ＴＣＰ／ＩＰに基づく通信からＤＴＮのバンドルプロトコルに基づく通信に切り替えて行う。このとき、コネクション監視部１１２は、通信先とのコネクションを状態を監視し、コネクションの状態に応じてアドレス変換部１１３を制御する。
【００４０】
これにより、コネクション監視部１１２は、クライアントアプリケーション１０１の通信先との通信をＴＣＰ／ＩＰによる通信からＤＴＮのバンドルプロトコルによる通信に切り替える。したがって、クライアントアプリケーション１０１の通信プロトコルが、ＴＣＰ処理部１０２のＴＣＰ／ＩＰからバンドル制御部１２０のバンドルプロトコルに切り替えられる。
【００４１】
また、バンドル制御部２２０は、サーバアプリケーション２０１から通信先への通信を、その通信先とのコネクションの状態に応じて、ＴＣＰ／ＩＰに基づく通信からＤＴＮのバンドルプロトコルに基づく通信に切り替えて行う。このとき、コネクション監視部２１２は、通信先とのコネクションを状態を監視し、コネクションの状態に応じて、アドレス変換部２１３を制御する。
【００４２】
これにより、コネクション監視部２１２は、サーバアプリケーション２０１の通信先との通信をＴＣＰ／ＩＰによる通信からＤＴＮのバンドルプロトコルによる通信に切り替える。したがって、サーバアプリケーション２０１の通信プロトコルが、ＴＣＰ処理部２０２のＴＣＰ／ＩＰからバンドル制御部２２０のバンドルプロトコルに切り替えられる。
【００４３】
バンドル制御部１２０，２２０は、例えば、ＲＦＣ５０５０の規定に従い、バンドルプロトコルに基づく通信を行う。バンドル制御部１２０，２２０は、サーバアプリケーション２０１とクライアントアプリケーション１０１の送信対象データを、バンドルと呼ばれるデータメッセージのペイロード部分に収容して送信する。
【００４４】
図４には、バンドルのフォーマットが示されている。バンドルは、プライマリバンドルブロック及びバンドルペイロードブロックを含む。プライマリバンドルブロックには、送信元や宛先に関する情報、及び、バンドルの削除までの時間を示すライフタイム（「Life time」）などが含まれる。バンドルペイロードブロックには、データを収容するペイロード（「Bundle Payload」）が含まれる。なお、バンドル内の各項目についてはＲＦＣ５０５０に規定されている。
【００４５】
バンドル制御部１２０，２２０は、バンドルを送信するとき、経路ＴＢＬ１２３，２２３を参照して、バンドルプロトコルにおける宛先を示すＥＩＤ（Endpoint ID）に対応するＴＣＰ／ＩＰ上の宛先ＩＰアドレス及びＴＣＰポート番号（以下、「ポート番号」と表記）を取得する。バンドル制御部１２０，２２０は、その宛先とのコネクション、つまり端末１とサーバ２の間のコネクションが切断されているとき、バンドルバッファ１２２，２２２にバンドルを格納しておき、コネクションが再接続されたとき、バンドルバッファ１２２，２２２からバンドルを読み出して送信する。
【００４６】
これにより、ＤＴＮに基づく通信が行われる。なお、バンドルの送受信は、端末１の場合、バンドル制御部１２０が無線ＬＡＮモジュール１４を制御して行い、サーバ２の場合、バンドル制御部２２０が通信ポート２４を制御して行う。
【００４７】
図５には、バンドルバッファ１２２，２２２の一例が示されている。バンドルバッファ１２２，２２２はバンドルの格納領域である。バンドルは、バンドルを識別するバンドルＩＤとともにバンドルバッファ１２２に格納される。なお、バンドル制御部１２０，２２０は、バンドルの送信時だけでなく、バンドルの受信時もバンドルをバンドルバッファ１２２に格納する。
【００４８】
再び図３を参照すると、プロキシプロトコル機能部１１０，２１０は、クライアントアプリケーション１０１及びサーバアプリケーション２０１の通信を、ＴＣＰのソケット通信からバンドルプロトコルの通信に変換する。このとき、プロキシプロトコル機能部１１０，２１０は、バンドル制御部１２０，２２０に対しバンドルＡＰＩ（Application Programing Interface）により設定及び制御を行うことにより、一般的なアプリケーションでもＤＴＮを利用可能とする。以下にプロキシプロトコル機能部１１０，２１０の詳細を説明する。
【００４９】
アドレス変換部１１３，２１３は、クライアントアプリケーション１０１及びサーバアプリケーション２０１の通信の宛先を送受信制御部１１４，２１４の宛先に変換する。例えば端末１において、アドレス変換部１１３は、サーバ２を宛先とするパケットの宛先ＩＰアドレス及びポート番号を、送受信部に設定されたＴＣＰソケット（以下、「ソケット」と表記）の宛先ＩＰアドレス及びポート番号に変換する。
【００５０】
このため、プロキシプロトコル機能部１１０，２１０は、クライアントアプリケーション１０１及びサーバアプリケーション２０１から通信先に送信されるパケットのデータを受信することができる。すなわち、端末１のプロキシプロトコル機能部１１０は、受付部の一例として、クライアントアプリケーション１０１からパケットのデータを受け付ける。なお、アドレス変換部１１３，２１３は、例えば、ＯＳとしてWindows（登録商標）が使用される場合、ＷＦＰ（Windows Filtering Platform）により実現され、ＯＳとしてLinux（登録商標）が使用される場合、「iptables」により実現される。
【００５１】
送受信制御部１１４，２１４は、クライアントアプリケーション１０１及びサーバアプリケーション２０１のＴＣＰのソケット通信を終端する。送受信制御部１１４，２１４は、装置内のローカルなループバックコネクションを確立する。
【００５２】
例えば、端末１の送受信制御部１１４は、クライアントアプリケーション１０１からのソケットの接続を監視し、プロキシ制御部１１１からの指示に従い、サーバアプリケーション２０１に対するソケットの確立と、指示されたソケットへのデータの送信を行う。
【００５３】
送受信制御部１１４，２１４は、クライアントアプリケーション１０１及びサーバアプリケーション２０１からソケット経由で受信したパケットを、ユーザやオペレータが設定したポリシー（アルゴリズムや処理方針）に従い指定サイズで分割してプロキシ制御部１１１，２１１に出力する。分割のサイズは、例えば、ソケットのオープンからクローズまでに受信したデータサイズ、パケットの受信サイズ、または所定値とする。
【００５４】
また、送受信制御部１１４，２１４は、バンドルの送受信をイベントリスト１２６,２２６により管理する。送受信制御部１１４，２１４は、バンドルの送信に関する送信イベント情報をイベントリスト１２６，２２６に登録し、バンドルの送信処理によりイベントリスト１２６，２２６から送信イベント情報が削除されたときに送信処理の完了を認識する。一方、バンドルが受信された場合、送受信制御部１１４，２１４は、バンドルの受信に関する受信イベント情報をイベントリスト１２６，２２６から取得することにより受信処理の完了を認識する。
【００５５】
送信イベント情報はイベントリスト１２６，２２６の送信キューに格納されており、受信イベント情報はイベントリスト１２６，２２６の受信キューに格納されている。
【００５６】
図５には、送信イベントキュー及び受信イベントキューの一例が示されている。送信イベント情報としては、送信イベント情報のＩＤとともに、一例として送信先アドレス及びサイズが登録されている。送信先アドレスは、送信先のＩＰアドレス及びポート番号を示し、サイズは、送信対象のバンドルのサイズを示す。
【００５７】
受信イベント情報としては、受信イベント情報のＩＤとともに、一例として送信先アドレス及びサイズが登録されている。送信先アドレスは、送信先のＩＰアドレス及びポート番号を示し、サイズは、送信対象のバンドルのサイズを示す。
【００５８】
プロキシ制御部１１１，２１１は、送受信制御部１１４，２１４で受信したパケットのデータを、プロキシメッセージのペイロードに収容して、バンドルＡＰＩによりバンドル制御部１２０，２２０に出力する。これにより、プロキシ制御部１１１，２１１からバンドル制御部１２０，２２０に対してバンドルの送信が要求される。
【００５９】
プロキシ制御部１１１，２１１は、プロキシメッセージを、宛先に応じたコネクション番号により管理する。プロキシ制御部１１１，２１１は、送受信制御部１１４，２１４によりソケットがオープンされるたびに新規のコネクション番号をコネクションリスト１１６，２１６に登録する。
【００６０】
図５には、コネクションリスト１１６，２１６の一例が示されている。コネクションリスト１１６，２１６には、コネクション番号、ソケットチャネルＩＤ、及び宛先ＥＩＤが対応付けられて登録されている。ソケットチャネルＩＤは、送受信制御部１１４，２１４のソケットの識別子である。
【００６１】
プロキシ制御部１１１，２１１は、パケットの受信元のソケットのソケットチャネルＩＤに応じたコネクション番号をプロキシメッセージに付与してバンドル制御部１２０，２２０に出力する。また、プロキシ制御部１１１，２１１は、該当する宛先ＥＩＤへのバンドルの送信をバンドル制御部１２０，２２０に要求する。
【００６２】
したがって、端末１のコネクションリスト１１６の宛先ＥＩＤには、サーバ２のＥＩＤが登録され、サーバ２のコネクションリスト２１６の宛先ＥＩＤには、端末１のＥＩＤが登録されている。なお、プロキシ制御部１１１，２１１は、初期設定ファイル１１７，２１７を読み出すことにより、自装置のＥＩＤや通信先のＥＩＤなどの通信に必要な情報を取得する。
【００６３】
また、プロキシ制御部１１１，２１１は、バンドル制御部１２０，２２０からプロキシメッセージを受信する。プロキシ制御部１１１，２１１は、受信したプロキシメッセージのコネクション番号がコネクションリスト１１６，２１６に未登録である場合、送受信制御部１１４，２１４に新規のソケットのオープンを指示し、そのソケットによる通信を開始する。
【００６４】
また、プロキシ制御部１１１，２１１は、受信したプロキシメッセージにデータが収容されていない場合、そのコネクション番号に対応するソケットチャネルＩＤをコネクションリスト１１６から検索する。プロキシ制御部１１１，２１１は、検索したソケットチャネルＩＤのソケットの削除を送受信制御部１１４，２１４に指示する。
【００６５】
このように、ソケットとＥＩＤは、コネクションリスト１１６により対応付けられて管理される。このため、ソケットを用いるＴＣＰ／ＩＰの通信をバンドルプロトコルに基づき行うことが可能となる。
【００６６】
また、バンドル制御部１２０，２２０は、プロキシ制御部１１１，２１１からのバンドルの送信要求に応じてバンドルを送信する。したがって、バンドル制御部１２０，２２０は、クライアントアプリケーション１０１及びサーバアプリケーション２０１から通信先への通信を途絶耐性ネットワークのプロトコルに基づいて行うことができる。バンドル制御部１２０，２２０は、バンドルを送信したとき、該当する送信イベント情報をイベントリスト１２６の送信イベントキューから削除する。また、バンドル制御部１２０，２２０は、バンドルを受信したとき、該当する受信イベント情報をイベントリスト１２６の受信イベントキューに登録する。
【００６７】
応答制御部１１５，２１５は、クライアントアプリケーション１０１及びサーバアプリケーション２０１からの通信が応答を要する場合、その応答を生成してクライアントアプリケーション１０１及びサーバアプリケーション２０１に出力する。このため、コネクションの切断により通信先との通信が途絶した場合でも、クライアントアプリケーション１０１及びサーバアプリケーション２０１は、通信の途絶を知ることなく動作を行う。したがって、コネクションの再接続後に通信のやり直しを必要としない。
【００６８】
例えば、端末１において、プロキシ制御部１１１がクライアントアプリケーション１０１の通信を行った場合、応答制御部１１５はその通信に対する応答をクライアントアプリケーション１０１に出力する。クライアントアプリケーション１０１からサーバアプリケーション２０１に対してファイルを分割して転送の場合、端末１の応答制御部１１５は、サーバアプリケーション２０１に代わり、応答として、クライアントアプリケーション１０１に対し次のファイルデータの送信を促す。
【００６９】
コネクション監視部１１２，２１２は、バンドル制御部１２０，２２０のコネクションの状態を監視する。コネクション監視部１１２，２１２は、コネクションが切断された状態ではコネクションの接続を行い、接続に成功した場合、コネクション監視部１１２，２１２にバンドルバッファ１２２，２２２内の送信対象のバンドルの送信を指示する。
【００７０】
また、コネクション監視部１１２，２１２は、コネクションの状態に応じて、アドレス変換部１１３，２１３に対し変換情報の設定及び削除を行う。コネクション監視部１１２，２１２は、フィルタＴＢＬ１１８，２１８に基づき変換情報を設定する。
【００７１】
図５には、フィルタＴＢＬ１１８，２１８の一例が示されている。フィルタＴＢＬ１１８，２１８には、パケットのフィルタ条件、変換情報、及び設定状態が対応付けられて登録されている。フィルタ条件には、アドレス変換の対象のパケットの送信元及び宛先のＩＰアドレスやポート番号などが指定されている。変換情報には、フィルタ条件に合致するパケットの書き換え対象の部分及び書き換え後の値を示す。設定状態は、フィルタ条件及び変換情報の設定の有効または無効を示す。
【００７２】
コネクション監視部１１２，２１２は、コネクションの状態に応じて、アドレス変換部１１３，２１３の変換情報の設定または削除を行う。このため、クライアントアプリケーション１０１及びサーバアプリケーション２０１の通信に自動的にバンドルプロトコルが適用される。
【００７３】
このように、コネクション監視部１１２，２１２は、通信先とのコネクションの状態を検出し、コネクションの状態に応じて、クライアントアプリケーション１０１及びサーバアプリケーション２０１の通信に対するバンドルプロトコルの適用の可否を決定する。このため、バンドルプロトコルは、コネクションの状態に応じてクライアントアプリケーション１０１及びサーバアプリケーション２０１の通信に使用される。
【００７４】
クライアントアプリケーション１０１及びサーバアプリケーション２０１は、通信が断続的となる場合、上記の構成によりＴＣＰ／ＩＰをプロトコル変換することにより通信を行う。
【００７５】
図６にはプロトコル変換の一例が示されている。図６には、図３に示された構成のうち、端末１のクライアントアプリケーション１０１、プロキシ制御部１１１、及びバンドル制御部１２０と、サーバ２のサーバアプリケーション２０１、プロキシ制御部２１１、及びバンドル制御部２２０が示されている。
【００７６】
クライアントアプリケーション１０１及びサーバアプリケーション２０１の間では、ＩＰアドレス及びポート番号によるＴＣＰ／ＩＰの通信が行われる。クライアントアプリケーション１０１には任意のソケットＳＣ１がオープンされ、サーバアプリケーション２０１には固定のソケットＳＣ６がオープンされる。
【００７７】
プロキシ制御部１１１，２１１の間では、コネクション番号によるプロキシ間プロトコルによる通信が行われる。プロキシ制御部１１１には、送受信制御部１１４によりサーバアプリケーション２０１のソケットＳＣ６に１対１で対応するソケットＳＣ２がオープンされる。プロキシ制御部２１１には、送受信制御部２１４によりクライアントアプリケーション１０１のソケットＳＣ１に１対１で対応するソケットＳＣ５がオープンされる。
【００７８】
クライアントアプリケーション１０１とプロキシ制御部１１１の間ではソケットＳＣ１，ＳＣ２による通信が行われ、サーバアプリケーション２０１とプロキシ制御部２１１の間ではソケットＳＣ５，ＳＣ６による通信が行われる。このため、送受信制御部１１４，２１４は、クライアントアプリケーション１０１及びサーバアプリケーション２０１の各ソケットＳＣ１，ＳＣ６に合わせてソケットＳＣ２，ＳＣ５のオープン及びクローズを行い、そのソケットＳＣ２，ＳＣ５によるデータ送受信を行う。
【００７９】
バンドル制御部１２０，２２０の間では、ＥＩＤによるバンドルプロトコルの通信が行われる。バンドル制御部１２０，２２０には、ソケットＳＣ３，ＳＣ４がそれぞれオープンされる。
【００８０】
クライアントアプリケーション１０１からサーバアプリケーション２０１への通信が行われる場合、端末１において、プロキシ制御部１１１は、初期設定ファイル１１７に基づきパケットのポート番号を宛先ＥＩＤに変換し、バンドル制御部１２０は、経路ＴＢＬ１２３に基づき宛先ＥＩＤを宛先ＩＰアドレス及びポート番号に変換する。
【００８１】
また、サーバ２において、バンドル制御部２２０は、宛先ＥＩＤを、後述する出力ポインタに変換し、プロキシ制御部２１１は、出力ポインタを宛先ＩＰアドレス及びポート番号に変換する。このようにして、クライアントアプリケーション１０１からサーバアプリケーション２０１への通信は行われる。
【００８２】
再び図３を参照すると、端末１からサーバ２へのバンドルの送信順序は、アプリケーションからの受信順序に一致する。しかし、この送信順序は、バンドル内のデータの用途によっては適切ではないことがある。例えば監視カメラの映像データのようにリアルタイム性の高いデータを送信する場合、時系列順で古い映像データが新しい映像データより先に送信されると、受信側で新しい映像の確認が遅れるため、監視に支障を生ずるおそれがある。
【００８３】
これに対し、バンドル制御部１２０が、古い映像データを廃棄すれば新しい映像データを優先的に送信することができるため、監視に支障が生ずることを防止できる。しかし、古い映像データは、過去の映像解析には用いられる可能性があるため、廃棄することができない。
【００８４】
そこで、端末１は、バンドルバッファ１２２内のバンドルのデータ残量に応じ、バンドルバッファ１２２内の優先度が低いバンドルのデータ（以下、「低優先データ」と表記）及び優先度が高いバンドルのデータ（以下、「高優先データ」と表記）の中継経路を分ける。高優先データは、例えば時刻情報が新しい映像データであり、低優先データは、例えば時刻情報が古い映像データである。
【００８５】
より具体的には、高優先データはバンドル制御部１２０によりバンドルバッファ１２２から中継経路Ｒａを経由してサーバ２のバンドルバッファ１２２に送信される。また、低優先データは、エクスポート処理部１２５によりエクスポートバッファ１２７から中継経路Ｒｂを経由してサーバ２のインポートバッファ２２７へエクスポートされる。これにより、端末１は、高優先データを優先してサーバ２に中継し、低優先データを破棄せずに任意のタイミングでサーバ２に中継することができる。この中継通信方法について以下に説明する。
【００８６】
中継経路判定部１２４は、バンドルの中継経路の判定処理を行う。中継経路判定部１２４は、プロキシプロトコル機能部１１０がクライアントアプリケーション１０１から新たなパケットのデータを受け付けたとき、通信先へ中継するバンドルのデータ残量と、クライアントアプリケーション１０１から受け付けた複数のパケットのデータの各々の優先度とに基づいて、各データの中継経路を決定する。なお、中継経路判定部１２４は決定部の一例である。
【００８７】
より具体的には、中継経路判定部１２４は、バンドルバッファ１２２に格納されたバンドルのデータ残量を取得して所定量と比較し、データ残量が所定量以上である場合、バンドルごとの優先度に応じてバンドルのエクスポート処理をエクスポート処理部１２５に指示する。中継経路判定部１２４は、バンドルバッファ１２２内の各バンドルの優先度同士を比較し、その比較結果に基づき、低優先データのエクスポート処理をエクスポート処理部１２５に指示する。
【００８８】
このため、高優先データは、バンドルバッファ１２２内に格納されたままとなるので、中継経路Ｒａを経由してサーバ２に送信される。なお、本例において、中継経路判定部１２４は、データ残量が０（Byte）以上である場合にエクスポート処理を指示するが、これに限定されず、データ残量が１（MByte）以上である場合に指示してもよい。
【００８９】
バンドルの優先度としては、例えばパケットのデータが映像データである場合、時刻情報が挙げられる。この場合、クライアントアプリケーション１０１は、例えば監視カメラから映像データを取得し、各映像データに付与された時刻情報に基づき優先度を設定する。優先度は、例えば制御情報としてパケットに付与される。
【００９０】
エクスポート処理部１２５は、データ処理部の一例であり、バンドルバッファ１２２から、中継経路判定部１２４に指示されたバンドルを取得してエクスポートバッファ１２７に格納する。これにより、バンドルバッファ１２２内の低優先データはエクスポートバッファ１２７に移動する。
【００９１】
エクスポートバッファ１２７は、ＵＳＢの通信インターフェースに対応する格納領域の一例である。エクスポートバッファ１２７内の低優先データは、ＵＳＢ−ＩＦ１８の制御に従って例えば記憶媒体９に書き込まれ、中継経路Ｒｂを経由してサーバ２に中継される。
【００９２】
このように、エクスポート処理部１２５は、低優先データを高優先データとは異なる通信インターフェースに対応する格納領域に格納する。このため、端末１は、低優先データを高優先データとは別の通信インターフェースにより中継することができる。なお、中継経路Ｒｂは、記憶媒体９による経路に限定されず、例えば近距離無線通信（NFC: Near Field Radio Communication）による中継経路であってもよい。この場合、ＵＳＢ−ＩＦ１８，２６は、ＮＦＣに対応する通信デバイスに接続される。
【００９３】
エクスポート処理部１２５は、低優先データをエクスポートバッファ１２７に格納するとき、低優先データに該当する送信イベント情報をイベントリスト１２６から削除する。エクスポート処理部１２５は、送信イベント情報を格納対象の低優先データに付与する。このため、送受信制御部１１４は、低優先データが高優先データとは別の中継経路Ｒｂを経由して中継されるにも関わらず、疑似的にバンドルの送信を認識することができる。なお、送信イベント情報は、低優先データの中継処理に関する情報の一例である。
【００９４】
サーバ２において、ＵＳＢ−ＩＦ２６は、例えば記憶媒体９から低優先データを読み出してインポートバッファ２２７に書き込む。インポート処理部２２５は、例えば周期的にインポートバッファ２２７を監視し、その結果、インポートバッファ２２７に低優先データを検出した場合、インポートバッファ２２７から低優先データを読み出してバンドルバッファ２２２に書き込む。
【００９５】
このとき、インポート処理部２２５は、低優先データに該当する受信イベント情報をイベントリスト２２６の受信イベントキューに登録する。このため、送受信制御部２１４は、低優先データが高優先データとは別の中継経路Ｒｂを経由して中継されたにも関わらず、疑似的にバンドルの受信を認識することができる。
【００９６】
このように、中継経路判定部１２４は、プロキシプロトコル機能部１１０によりクライアントアプリケーション１０１の新たなデータの受け付けに応じ、サーバ２に中継するデータ残量と、クライアントアプリケーション１０１から受け付けた各データの優先度に基づいて、各データの中継経路Ｒａ，Ｒｂを決定する。このため、端末１は、データを破棄せずにデータ送信の優先処理を行うことができる。なお、中継経路Ｒａ，Ｒｂは、途絶耐性ネットワークのプロトコルによる中継経路の一例である。
【００９７】
ここで、優先度は、クライアントアプリケーション１０１から受け付けた各データに付与された時刻情報に基づき設定されている場合、端末１は、時系列上で新しい映像データを優先してサーバ２に中継し、古い映像データを任意のタイミングでサーバ２に中継することができる。
【００９８】
中継経路判定部１２４は、プロキシプロトコル機能部１１０が新たなデータを受け付けたとき、そのデータの優先度と、そのデータより先に受け付けた未送信のデータ（以下、「先行データ」と表記）の優先度とを比較する。中継経路判定部１２４は、その比較結果に応じ、低優先データのエクスポート処理をエクスポート処理部１２５に指示する。
【００９９】
このため、エクスポート処理部１２５は、新たなデータが低優先データである場合、新たなデータに送信イベント情報を付与してエクスポートバッファ１２７に格納し、先行データが低優先データである場合、先行データに送信イベント情報を付与してエクスポートバッファ１２７に格納する。なお、先行データは、クライアントアプリケーション１０１から受け付けた複数のデータのうち、上記の新たなデータ以外の他のデータに該当する。
【０１００】
また、中継経路判定部１２４は、プロキシプロトコル機能部１１０が新たなデータを受け付けたとき、そのデータのバンドルのサイズに基づき中継経路を決定する。より具体的には、中継経路判定部１２４は、新たなデータのバンドルのサイズを所定値と比較し、バンドルのサイズが所定値以上である場合、そのデータのエクスポート処理をエクスポート処理部１２５に指示する。エクスポート処理部１２５は、新たなデータに送信イベント情報を付与してエクスポートバッファ１２７に格納する。
【０１０１】
このため、サイズの大きなデータは、任意のタイミングでエクスポートバッファ１２７から中継経路Ｒｂを経由してサーバ２に中継され、サイズの小さなデータは、バンドルバッファ１２２から中継経路Ｒａを経由してサーバ２に中継される。したがって、端末１は、サイズの小さなデータをサイズの大きなデータより優先して送信できるため、サイズの小さなデータの送信がサイズの大きなデータの送信のために遅延することが抑制される。
【０１０２】
次に、端末１及びサーバ２の各処理について述べる。
【０１０３】
図７は、クライアントアプリケーション１０１のデータ送信処理の一例を示すフローチャートである。端末１のプロキシ制御部１１１は、符号Ｇ１で示されるような初期設定ファイル１１７を読み出す（ステップＳｔ１）。初期設定ファイル１１７には、「TCP_PROXY_CLIENT」として、端末１のＥＩＤ「dtn://node1」と、通信先のサーバアプリケーション２０１宛てのパケットをＴＣＰで受信するためのポート番号「８００１」が書き込まれている。
【０１０４】
次に、プロキシ制御部１１１は、クライアントアプリケーション１０１からサーバアプリケーション２０１宛のパケットを受信するためのソケットを送受信制御部１１４に生成する（ステップＳｔ２）。ソケットには、上記のポート番号「８００１」、またはループバックＩＰアドレス「127.0.0.1」が設定される。クライアントアプリケーション１０１は、サーバアプリケーション２０１のソケットに代えて、送受信制御部１１４が生成したソケットにパケットを送信する。このとき、パケットの宛先ＩＰアドレス及びポート番号は、所定の設定またはアドレス変換部１１３により変換される。
【０１０５】
次に、送受信制御部１１４は、ソケットでのパケットの受信の有無を判定する（ステップＳｔ３）。送受信制御部１１４は、パケットが受信されていない場合（ステップＳｔ３のＮｏ）、再度、ステップＳｔ３の判定処理を実行する。
【０１０６】
プロキシ制御部１１１は、パケットが受信された場合（ステップＳｔ３のＹｅｓ）、パケットの送信元ポート番号が新規であるか否かを判定する（ステップＳｔ４）。つまり、プロキシ制御部１１１は、クライアントアプリケーション１０１のポート番号が変更され、新たなチャネルが確立されたか否かを判定する。なお、送受信制御部１１４は、ソケットでパケットが受信されると、クライアントアプリケーション１０１からの通信の完了を検出し、受信したパケットのデータを、メモリなどを介してプロキシ制御部１１１に出力する。
【０１０７】
プロキシ制御部１１１は、送信元ポート番号が新規である場合（ステップＳｔ４のＹｅｓ）、コネクションリスト１１６に新たなコネクション番号と、そのコネクション番号に対応するソケットチャネルＩＤ及び宛先ＥＩＤを登録する（ステップＳｔ９）。また、プロキシ制御部１１１は、送信元ポート番号が新規ではない場合（ステップＳｔ４のＮｏ）、ステップＳｔ９の処理を実行しない。
【０１０８】
次に、送受信制御部１１４は、パケットのデータに該当する送信イベント情報をイベントリスト１２６の送信イベントキューに登録する（ステップＳｔ４ａ）。
【０１０９】
次に、プロキシ制御部１１１は、符号Ｇ２で示されるようなプロキシメッセージを生成する（ステップＳｔ５）。プロキシメッセージには、コネクション番号及びペイロードが含まれる。プロキシ制御部１１１は、ペイロードにパケットのデータを収容し、コネクションリスト１１６から検索したコネクション番号を付与することにより、プロキシメッセージを生成する。プロキシメッセージは、バンドルＡＰＩによりバンドル制御部１２０に出力される。
【０１１０】
次に、応答制御部１１５は、送信対象のパケットに対する応答の要否を判定する（ステップＳｔ６）。応答制御部１１５は、ＴＣＰのＡＣＫではなく、アプリケーションレベルでの通信の継続に必要な応答の有無を判定する。
【０１１１】
応答制御部１１５は、応答が必要である場合（ステップＳｔ６のＹｅｓ）、所定のアルゴリズムに基づき、サーバアプリケーション２０１の代わりに応答データを生成してクライアントアプリケーション１０１に送信する（ステップＳｔ７）。つまり、応答制御部１１５は、クライアントアプリケーション１０１に通信の完了を通知する。また、応答制御部１１５は、応答が不要である場合（ステップＳｔ６のＮｏ）、応答データを生成しない。
【０１１２】
次に、プロキシ制御部１１１は、バンドルＡＰＩによりバンドル制御部１２０にバンドルの送信を要求する（ステップＳｔ８）。バンドル制御部１２０は、プロキシメッセージからバンドルを生成して送信する。これにより、バンドル制御部１２０，２２０は、クライアントアプリケーション１０１及びサーバアプリケーション２０１から通信先への通信を途絶耐性ネットワークのプロトコルに基づいて行う。このようにして、クライアントアプリケーション１０１のデータ送信処理は実行される。
【０１１３】
図８は、バンドルの送信処理の一例を示すフローチャートである。バンドル制御部１２０は、プロキシ制御部１１１からバンドルの送信を要求されると、経路ＴＢＬ１２３を読み出す（ステップＳｔ１１）。次に、バンドル制御部１２０は、経路ＴＢＬ１２３に基づき、宛先ＩＰアドレス及びポート番号に対応する宛先ＥＩＤのバンドルを生成する（ステップＳｔ１２）。
【０１１４】
次に、中継経路判定部１２４は、新たに生成されたバンドル（以下、「新たなバンドル」と表記）のサイズを所定値Ｓｔｈと比較する（ステップＳｔ１３）。中継経路判定部１２４は、新たなバンドルのサイズが所定値Ｓｔｈ以上である場合（ステップＳｔ１３のＮｏ）、そのバンドルのエクスポート処理をエクスポート処理部１２５に指示し（ステップＳｔ２０ｃ）、処理を終了する。このため、エクスポート処理は、新たなバンドルのサイズが所定値Ｓｔｈ以上である場合に実行される。ここで、所定値Ｓｔｈは、例えばサーバ２に中継するときのバンドルの遅延の許容量に応じて予め設定される。なお、新たなバンドルは上記の新たなデータに該当する。
【０１１５】
このように、中継経路判定部１２４は、プロキシプロトコル機能部１１０による新たなデータの受け付けに応じ、そのデータのバンドルのサイズに基づき中継経路Ｒａ，Ｒｂを決定する。したがって、端末１は、上述したように、サイズの小さなデータをサイズの大きなデータより優先して送信できるため、サイズの小さなデータの送信がサイズの大きなデータの送信のために遅延することが抑制される。
【０１１６】
新たなバンドルのサイズが所定値Ｓｔｈより小さい場合（ステップＳｔ１３のＹｅｓ）、バンドル制御部１２０は、宛先ＥＩＤに応じた通信先とのコネクションが確立状態であるか否かを判定する（ステップＳｔ１４）。バンドル制御部１２０は、コネクションが確立状態である場合（ステップＳｔ１４のＹｅｓ）、バンドルを送信する（ステップＳｔ１５）。次に、バンドル制御部１２０は、送信イベント情報をイベントリスト１２６の送信イベントキューから削除して（ステップＳｔ１６）、処理を終了する。
【０１１７】
また、バンドル制御部１２０は、コネクションが確立状態でない場合（ステップＳｔ１４のＮｏ）、バンドルをバンドルバッファ１２２に格納する（ステップＳｔ１７）。次に、中継経路判定部１２４は、バンドルバッファ１２２のバンドルのデータ残量を所定量Ｂｔｈと比較する（ステップＳｔ１８）。データ残量が所定量Ｂｔｈ以下である場合（ステップＳｔ１８のＮｏ）、バンドル制御部１２０は、宛先ＥＩＤに応じた通信先とのコネクションが確立状態であるか否かを判定する（ステップＳｔ１９）。
【０１１８】
ここで、所定量Ｂｔｈは、例えばサーバ２に中継するときのバンドルの遅延の許容量に応じて予め設定される。このため、エクスポート処理は、バンドルバッファ１２２のデータ残量、つまり格納量が所定量Ｂｔｈより多い場合に実行される。したがって、バンドルの遅延が問題となる場合、バンドルは、エクスポートバッファ１２７に格納され、中継経路Ｒｂを経由してサーバ２に中継される。なお、本例では所定量Ｂｔｈを０とするが、これに限定されない。
【０１１９】
バンドル制御部１２０は、コネクションが確立状態である場合（ステップＳｔ１９のＹｅｓ）、バンドルを送信する（ステップＳｔ１５）。また、バンドル制御部１２０は、コネクションが確立状態でない場合（ステップＳｔ１９のＮｏ）、再びステップＳｔ１９の処理を実行する。
【０１２０】
中継経路判定部１２４は、データ残量が所定量Ｂｔｈより大きい場合（ステップＳｔ１８のＹｅｓ）、新たなバンドルがバンドルバッファ１２２内の他のバンドルより優先度が高いか否かを判定する（ステップＳｔ２０）。中継経路判定部１２４は、新たなバンドルがバンドルバッファ１２２内の他のバンドルより優先度が低い場合（ステップＳｔ２０のＮｏ）、新たなバンドルのエクスポート処理をエクスポート処理部１２５に指示し（ステップＳｔ２０ｂ）、処理を終了する。
【０１２１】
また、中継経路判定部１２４は、新たなバンドルがバンドルバッファ１２２内の他のバンドルより優先度が高い場合（ステップＳｔ２０のＹｅｓ）、他のバンドルのエクスポート処理をエクスポート処理部１２５に指示する（ステップＳｔ２０ａ）。その後、ステップＳｔ１９の処理が実行される。このようにして、バンドルの送信処理は実行される。
【０１２２】
図９は、バンドルのエクスポート処理の一例を示すフローチャートである。本処理は、エクスポート処理部１２５が、上記のステップＳｔ２０ａ〜２０ｃにおいて、中継経路判定部１２４からの指示に従って実行する処理である。なお、本処理の説明では、新たなバンドル及び他のバンドルを単に「バンドル」と記載する。
【０１２３】
エクスポート処理部１２５は、バンドルバッファ１２２から、中継経路判定部１２４に指示されたバンドルを読み出す（ステップＳｔ６１）。次に、エクスポート処理部１２５は、送信イベント情報をイベントリスト１２６の送信イベントキューから取得する（ステップＳｔ６２）。次に、エクスポート処理部１２５は、符号Ｇ３で示されるように、送信イベント情報をバンドルに付与する（ステップＳｔ６３）。
【０１２４】
次に、エクスポート処理部１２５は、送信イベント情報が付与されたバンドルをエクスポートバッファ１２７に格納する（ステップＳｔ６４）。これにより、バンドルは中継経路Ｒｂを経由してサーバ２に中継される。
【０１２５】
次に、エクスポート処理部１２５は、送信イベント情報をイベントリスト１２６の送信イベントキューから削除する（ステップＳｔ６５）。これにより、送受信制御部１１４は、疑似的にバンドル送信の完了を認識する。このようにして、エクスポート処理は実行される。
【０１２６】
ステップＳｔ２０ａについて、エクスポート処理部１２５は、バンドルバッファ１２２内のデータ残量が所定量Ｂｔｈより多い場合、新たなバンドルの優先度が他のバンドルの優先度より高いとき、他のバンドルをエクスポートバッファ１２７に格納する。このため、端末１は、新たなバンドルを他のバンドルより優先してサーバ２に中継することができ、他のバンドルを新たなバンドルとは異なる中継経路Ｒｂにより任意のタイミングでサーバ２に中継することができる。
【０１２７】
また、ステップＳｔ２０ａについて、エクスポート処理部１２５は、バンドルバッファ１２２内のデータ残量が所定量Ｂｔｈより多い場合、新たなバンドルの優先度が他のバンドルの優先度より高いとき、他のバンドルに送信イベント情報を付与する。このため、端末１は、他のバンドルをバンドルプロトコルにより疑似的に送信することができる。
【０１２８】
ステップＳｔ２０ｂについて、エクスポート処理部１２５は、バンドルバッファ１２２内のデータ残量が所定量Ｂｔｈより多い場合、新たなバンドルの優先度が他のバンドルの優先度より低いとき、新たなバンドルをエクスポートバッファ１２７に格納する。このため、端末１は、他のバンドルを新しいバンドルより優先してサーバ２に中継することができ、新しいバンドルを他のバンドルとは異なる中継経路Ｒｂにより任意のタイミングでサーバ２に中継することができる。
【０１２９】
また、ステップＳｔ２０ｃについて、エクスポート処理部１２５は、バンドルのサイズが所定値Ｓｔｈ以上である場合、新たなバンドルをエクスポートバッファ１２７に格納する。このため、端末１は、サイズの小さいバンドルをサイズの大きなバンドルより優先してサーバ２に中継することができ、サイズの大きいバンドルをサイズの小さなバンドルとは異なる中継経路Ｒｂにより任意のタイミングでサーバ２に中継することができる。
【０１３０】
図１０は、バンドルの受信処理の一例を示すフローチャートである。本処理は、サーバ２において実行される。
【０１３１】
プロキシ制御部２１１は、符号Ｇ４で示されるような初期設定ファイル２１７を読み出す（ステップＳｔ２１）。初期設定ファイル２１７には、「COM_EID」として、サーバ２のＥＩＤ「dtn://node1」が記録され、「TCP_PROXY_REGISTRATION」として、サーバ２の受信データの出力ポインタ「data/receive」が記録され、「TCP_PROXY_SERVER」として、サーバ２のＩＰアドレス「192.168.1.1」及びポート番号「８００１」が記録されている。
【０１３２】
次に、プロキシ制御部２１１は、バンドル制御部２２０に対して端末１のクライアントアプリケーション１０１からバンドルを受信できるように、バンドルＡＰＩによりＥＩＤ及び出力ポインタを登録する（ステップＳｔ２２）。このとき、プロキシ制御部２１１は、初期設定ファイル２１７の「COM_EID」及び「TCP_PROXY_REGISTRATION」でそれぞれ指定されたＥＩＤ及び出力ポインタを登録する。これにより、バンドル制御部２２０は、バンドルを受信したとき、出力ポインタ「data/receive」の指定ディレクトリにバンドルを出力する。
【０１３３】
次に、バンドル制御部２２０は、バンドルの受信の有無を判定する（ステップＳｔ２３）。バンドル制御部２２０は、バンドルを受信していない場合（ステップＳｔ２３のＮｏ）、再びステップＳｔ２３の処理を実行する。また、バンドル制御部２２０は、バンドルを受信した場合（ステップＳｔ２３のＹｅｓ）、ステップＳｔ２２で登録済みのＥＩＤとバンドルの宛先ＥＩＤが一致するか否かを判定する（ステップＳｔ２４）。
【０１３４】
バンドル制御部２２０は、登録済みのＥＩＤとバンドルの宛先ＥＩＤが不一致である場合（ステップＳｔ２４のＮｏ）、自装置宛てのバンドルではないため、バンドルを廃棄して処理を終了する。バンドル制御部２２０は、登録済みのＥＩＤとバンドルの宛先ＥＩＤが一致する場合（ステップＳｔ２４のＹｅｓ）、バンドルに該当する受信イベント情報をイベントリスト２２６の受信イベントキューに登録する（ステップＳｔ２４ａ）。次に、バンドル制御部２２０は、バンドルのペイロードからパケットのデータを取得してプロキシメッセージを生成して、出力ポインタの指定ディレクトリに出力する（ステップＳｔ２５）。
【０１３５】
次に、プロキシ制御部２１１は、出力ポインタの指定ディレクトリを参照して、プロキシメッセージを取得する（ステップＳｔ２６）。次に、プロキシ制御部２１１は、プロキシメッセージのコネクション番号がコネクションリスト１１６に登録済みであるか否かを判定する（ステップＳｔ２７）。
【０１３６】
プロキシ制御部２１１は、コネクション番号が未登録である場合（ステップＳｔ２７のＮｏ）、送受信制御部２１４に対し、初期設定ファイル２１７の「TCP_PROXY_SERVER」で指定されたＩＰアドレス及びポート番号のソケットのオープンを指示する（ステップＳｔ２８）。また、プロキシ制御部２１１は、コネクション番号が登録済みである場合（ステップＳｔ２７のＹｅｓ）、プロキシメッセージのペイロードにパケットのデータが収容されているか否かを判定する（ステップＳｔ３０）。
【０１３７】
プロキシ制御部２１１は、パケットのデータが収容されている場合（ステップＳｔ３０のＹｅｓ）、該当するソケットにデータを送信する（ステップＳｔ２９）。次に、送受信制御部２１４は、データに該当する受信イベント情報をイベントリスト２２６の受信イベントキューから削除して（ステップＳｔ２９ａ）、処理を終了する。
【０１３８】
また、プロキシ制御部２１１は、パケットのデータが収容されていない場合（ステップＳｔ３０のＮｏ）、送受信制御部１１４に対し、該当するソケットのクローズを指示する（ステップＳｔ３１）。このようにして、バンドルの受信処理は実行される。
【０１３９】
図１１は、バンドルのインポート処理の一例を示すフローチャートである。図１１において、図１０と共通する処理には同一の符号を付し、その説明は省略する。
【０１４０】
インポート処理部２２５は、インポートバッファ２２７内のバンドルの有無を判定する（ステップＳｔ５１）。インポート処理部２２５は、バンドルが無い場合（ステップＳｔ５１のＮｏ）、再びステップＳｔ５１の処理を実行する。
【０１４１】
インポート処理部２２５は、バンドルが有る場合（ステップＳｔ５１のＹｅｓ）、インポートバッファ２２７からバンドルを読み出す（ステップＳｔ５２）。次に、インポート処理部２２５は、符号Ｇ５で示されるように、バンドルから送信イベント情報を分離して取得する（ステップＳｔ５３）。次に、インポート処理部２２５は、送信イベント情報から受信イベント情報を生成する（ステップＳｔ５４）。なお、受信イベント情報は、図５に示されるように、送信イベント情報と同じ構成である。
【０１４２】
次に、インポート処理部２２５は、インポートバッファ２２７から読み出したバンドルをバンドルバッファ２２２に格納する（ステップＳｔ５５）。次に、インポート処理部２２５は、受信イベント情報をイベントリスト２２６の受信イベントキューに登録する（ステップＳｔ５６）。このため、サーバ２は、端末１から中継経路Ｒｂを介して疑似的にバンドルを受信することができる。
【０１４３】
その後、ステップＳｔ２５〜Ｓｔ２９ａの処理が実行される。これにより、インポート処理されたバンドルは、中継経路Ｒａを経由して受信されたバンドルと同様にサーバアプリケーション２０１に出力される。このようにして、バンドルのインポート処理は実行される。
【０１４４】
図１２は、バンドルプロトコルの適用の切り替え処理の一例を示すフローチャートである。コネクション監視部１１２，２１２は、通信先とのコネクションの接続の有無を検出する（ステップＳｔ４１）。
【０１４５】
バンドル制御部１２０，２２０は、経路ＴＢＬ１２３，２２３に設定された宛先ＩＰアドレス及びポート番号に基づき、該当する通信先とのリンクのアップ・ダウンや、キープアライブ（keep alive）機能により通信の状態を検出する。コネクション監視部１１２，２１２は、バンドル制御部１２０，２２０の検出結果を取得し、またはバンドルＡＰＩによる制御などによりコネクションの状態を検出する。
【０１４６】
コネクション監視部１１２，２１２は、コネクションが接続されている場合（ステップＳｔ４１のＹｅｓ）、バンドルバッファ１２２，２２２に送信待ちのバンドルが格納されているか否かを判定する（ステップＳｔ４２）。コネクション監視部１１２，２１２は、格納済みのバンドルがない場合（ステップＳｔ４２のＮｏ）、再びステップＳｔ４１の処理を実行する。
【０１４７】
また、コネクション監視部１１２，２１２は、格納済みのバンドルがある場合（ステップＳｔ４２のＹｅｓ）、フィルタＴＢＬ１１８，２１８の設定状態を参照することによりアドレス変換部１１３，２１３に対する変換情報の設定の有無を判定する（ステップＳｔ４３）。コネクション監視部１１２，２１２は、変換情報の設定がない場合（ステップＳｔ４３のＮｏ）、処理を終了する。また、コネクション監視部１１２，２１２は、変換情報の設定が有る場合（ステップＳｔ４３のＹｅｓ）、変換情報を削除する（ステップＳｔ４４）。
【０１４８】
これにより、ＴＣＰ処理部１０２，２０２から送受信制御部１１４，２１４のソケットに対するパケットの転送が停止する。したがって、クライアントアプリケーション１０１及びサーバアプリケーション２０１の間の通信に対してバンドルプロトコルの適用が停止されるため、プロキシプロトコル機能部１１０，２１０を介さない直接的なＴＣＰ／ＩＰの通信が行われる。
【０１４９】
一方、コネクション監視部１１２，２１２は、コネクションが切断されている場合（ステップＳｔ４１のＮｏ）、フィルタＴＢＬ１１８，２１８の設定状態を参照することによりアドレス変換部１１３，２１３に対する変換情報の設定の有無を判定する（ステップＳｔ４５）。コネクション監視部１１２，２１２は、変換情報の設定が有る場合（ステップＳｔ４５のＹｅｓ）、処理を終了する。また、コネクション監視部１１２，２１２は、変換情報の設定がない場合（ステップＳｔ４５のＮｏ）、変換情報を設定する（ステップＳｔ４６）。
【０１５０】
これにより、ＴＣＰ処理部１０２，２０２から送受信制御部１１４，２１４のソケットに対するパケットの転送が開始される。したがって、クライアントアプリケーション１０１及びサーバアプリケーション２０１の間の通信に対してバンドルプロトコルの適用が開始されるため、プロキシプロトコル機能部１１０，２１０を介した通信が行われる。
【０１５１】
このように、コネクション監視部１１２，２１２は、通信先とのコネクションの状態を検出し、そのコネクションの状態に応じて、クライアントアプリケーション１０１及びサーバアプリケーション２０１の間の通信に対するバンドルプロトコルの適用の可否を決定する。このため、バンドルプロトコルの適用が自動的に行われる。
【０１５２】
次に、端末１からサーバ２への映像データの中継動作の例を説明する。
【０１５３】
図１３は、映像データの送信処理の比較例を示すシーケンス図である。本比較例では、監視カメラシステムにおいて、時刻ｔ１の映像データ＃１と、時刻ｔ１より後の時刻ｔ２の映像データ＃２とがクライアントアプリケーション１０１からサーバアプリケーション２０１に送信され、エクスポート処理は実行されない。
【０１５４】
端末１とサーバ２の間のコネクションが切断された後、端末１のクライアントアプリケーション１０１は、監視カメラから映像データ＃１を受信する。プロキシプロトコル機能部１１０は、映像データ＃１をクライアントアプリケーション１０１から受け付け、映像データ＃１のバンドル（以下、「バンドル＃１」と表記）の送信をバンドル制御部１２０に要求する。バンドル制御部１２０は、コネクションが切断されているため、バンドル＃１をバンドルバッファ１２２に格納する。
【０１５５】
次に、クライアントアプリケーション１０１は、監視カメラから映像データ＃２を受信する。映像データ＃２のバンドル（以下、「バンドル＃２」と表記）は、映像データ＃１と同様の処理によりバンドルバッファ１２２に格納される。その後、端末１とサーバ２のコネクションが再接続される。
【０１５６】
コネクションが再接続されると、バンドル制御部１２０は、最初にバンドル＃１をバンドルバッファ１２２から読み出してサーバ２に送信し、次にバンドル＃２をバンドルバッファ１２２から読み出してサーバ２に送信する。
【０１５７】
サーバ２のバンドル制御部２２０は、バンドル＃１を受信するとバンドルバッファ１２２に格納し、プロキシメッセージに収容してプロキシプロトコル機能部２１０に出力する。プロキシプロトコル機能部２１０は、プロキシメッセージから映像データ＃１を取得してサーバアプリケーション２０１に送信する。
【０１５８】
次にバンドル制御部２２０は、バンドル＃２を受信してバンドルバッファ２２２に格納する。プロキシプロトコル機能部２１０は、バンドル＃１と同様にプロキシメッセージから映像データ＃２を取得してサーバアプリケーション２０１に送信する。
【０１５９】
このように、サーバアプリケーション２０１は、時刻の早いほうの映像データ＃１を映像データ＃２より先に受信する。このため、サーバ２において新しい映像（つまり映像データ＃２）の確認が遅れるため、監視に支障を生ずるおそれがある。
【０１６０】
これに対し、実施例の端末１は、上述したエクスポート処理を実行することによって、時刻の早い映像データを時刻の遅い映像データとは異なる中継経路Ｒｂでサーバ２に中継する。
【０１６１】
図１４は、コネクションが切断されていない場合の映像データの送信処理の一例を示すシーケンス図である。映像データ＃１〜＃３は、この順に監視カメラからクライアントアプリケーション１０１に入力される。
【０１６２】
映像データ＃１〜＃３には、その映像が生成された時刻を示す時刻情報が付与されている。映像データ＃１の時刻情報は「０：００」を示し、映像データ＃２の時刻情報は「０：１０」を示し、映像データ＃３の時刻情報は「０：２０」を示す。
【０１６３】
クライアントアプリケーション１０１は、時刻情報の順に従い映像データ＃１〜＃３に優先度を設定する。このため、映像データ＃１には優先度「０」が設定され、映像データ＃２には優先度「１」が設定され、映像データ＃３には優先度「２」が設定される。
【０１６４】
端末１とサーバ２の間のコネクションは切断されていないため、クライアントアプリケーション１０１は、バンドルプロトコルを用いずに、ＴＣＰ／ＩＰにより映像データ＃１〜＃３をこの順にサーバアプリケーション２０１に送信する。
【０１６５】
図１５は、コネクションが切断された場合の映像データの送信処理の一例を示すシーケンス図である。本例において、端末１とサーバ２の間のコネクションは、時刻「０：０９」に切断され、時刻「０：１５」に再接続される。なお、以降の例において、映像データ＃１〜＃３を収容するバンドル＃１〜＃３のサイズは、所定値Ｓｔｈより小さいと仮定する。
【０１６６】
クライアントアプリケーション１０１は、映像データ＃１の受信時、端末１とサーバ２の間のコネクションは切断されていないため、バンドルプロトコルを用いずに、ＴＣＰ／ＩＰにより映像データ＃１をサーバアプリケーション２０１に送信する。クライアントアプリケーション１０１は、コネクションの切断後、監視カメラから映像データ＃２を受信する。バンドル制御部１２０は、ステップＳｔ１７の処理により、映像データ＃２を収容したバンドル＃２をバンドルバッファ１２２に格納する。
【０１６７】
クライアントアプリケーション１０１は、コネクションが再接続された後に監視カメラから映像データ＃３を受信し、バンドルプロトコルを用いずに、ＴＣＰ／ＩＰにより映像データ＃３をサーバアプリケーション２０１に送信する。次に、バンドル制御部１２０は、コネクションが確立状態であるため（ステップＳｔ１９のＹｅｓ）、バンドルバッファ１２２からバンドル＃２を読み出してサーバ２に送信する（ステップＳｔ１５）。バンドル＃２はサーバ２のバンドルバッファ２２２に格納され、サーバアプリケーション２０１は、バンドル＃２から映像データ＃２を取得する。
【０１６８】
本例において、映像データ＃１〜＃３のうち、映像データ＃２だけがバンドルバッファ１２２に格納されるため、エクスポート処理は実行されない。
【０１６９】
図１６は、コネクションが切断された場合の映像データの送信処理の他の例を示すシーケンス図である。本例において、端末１とサーバ２の間のコネクションは、時刻「０：０９」に切断され、時刻「０：２５」に再接続される。
【０１７０】
クライアントアプリケーション１０１は、映像データ＃１の受信時、端末１とサーバ２の間のコネクションは切断されていないため、バンドルプロトコルを用いずに、ＴＣＰ／ＩＰにより映像データ＃１をサーバアプリケーション２０１に送信する。クライアントアプリケーション１０１は、コネクションの切断後、監視カメラから映像データ＃２を受信する。バンドル制御部１２０は、ステップＳｔ１７の処理により、映像データ＃２を収容したバンドル＃２をバンドルバッファ１２２に格納する。
【０１７１】
次に、クライアントアプリケーション１０１は、監視カメラから映像データ＃３を受信する。バンドル制御部１２０は、ステップＳｔ１７の処理により、映像データ＃３を収容したバンドル＃３をバンドルバッファ１２２に格納する。
【０１７２】
中継経路判定部１２４は、クライアントアプリケーション１０１から映像データ＃３が受け付けられたとき、ステップＳｔ２０の処理により、映像データ＃２と映像データ＃３の各優先度を比較する。つまり、中継経路判定部１２４は、映像データ＃３の受付時、バンドルバッファ１２２に格納されたバンドル＃２及びバンドル＃３について優先度の大小を判定する。
【０１７３】
新しい映像データ＃３の優先度「２」は、古い映像データ＃２の優先度「１」より高いため、中継経路判定部１２４は、バンドル＃３をバンドルバッファ１２２に格納したままとし、ステップＳｔ２０ａの処理により、バンドル＃２のエクスポート処理をエクスポート処理部１２５に指示する。エクスポート処理部１２５は、指示されたバンドル＃２をバンドルバッファ１２２から読み出して、ステップＳｔ６４の処理によりエクスポートバッファ１２７に格納する。
【０１７４】
コネクションが再接続された後、バンドル制御部１２０は、バンドルバッファ１２２からバンドル＃３を読み出してサーバ２に送信する。バンドル＃３はサーバ２のバンドルバッファ２２２に格納され、サーバアプリケーション２０１は、バンドル＃３から映像データ＃３を取得する。
【０１７５】
エクスポートバッファ１２７内のバンドル＃２は、ＵＳＢ−ＩＦ１８の制御により任意のタイミングで記憶媒体９に書き込まれる。そして、バンドル＃２は、サーバ２のＵＳＢ−ＩＦ１８の制御により任意のタイミングでインポートバッファ２２７に書き込まれる。インポート処理部２２５は、インポートバッファ２２７内のバンドル＃２を検出すると、バンドル＃２をバンドルバッファ２２２に格納する。サーバアプリケーション２０１は、バンドル＃２から映像データ＃２を取得する。
【０１７６】
このように、端末１は、古い映像データ＃２をエクスポート処理により中継経路Ｒｂでサーバ２に中継し、新しい映像データ＃３をバンドルプロトコルにより中継経路Ｒａでサーバ２に中継する。これにより、端末１は、古い映像データ＃２を破棄することなく、新しい映像データ＃３を優先して送信することができる。
【０１７７】
また、端末１は、サイズの大きいバンドルをエクスポート処理により中継経路Ｒｂでサーバ２に中継し、サイズの小さいバンドルプロトコルにより中継経路Ｒａでサーバ２に中継する。
【０１７８】
図１７は、サイズが異なるデータの送信処理の比較例を示すシーケンス図である。本例において、クライアントアプリケーション１０１は、１（GByte）のデータ＃１と１００（MByte）のデータ＃２をサーバ２に送信する。また、比較例のバンドル制御部１２０は、バンドルのサイズの判定処理（ステップＳｔ１３）を実行しない。なお、データ＃１はバンドル＃１に収容され、データ＃２はバンドル＃２に収容される。
【０１７９】
端末１とサーバ２の間のコネクションの切断後、クライアントアプリケーション１０１は、データ＃１をプロキシプロトコル機能部１１０に出力する。バンドル制御部１２０は、プロキシプロトコル機能部１１０のプロキシメッセージからデータ＃１を取得してバンドル＃１を生成し、バンドルバッファ１２２に格納する。
【０１８０】
次に、クライアントアプリケーション１０１は、データ＃２をプロキシプロトコル機能部１１０に出力する。バンドル制御部１２０は、プロキシプロトコル機能部１１０のプロキシメッセージからデータ＃２を取得してバンドル＃２を生成し、バンドルバッファ１２２に格納する。
【０１８１】
コネクションの再接続後、バンドル制御部１２０は、バンドルバッファ１２２からバンドル＃１を読み出してサーバ２に送信する。バンドル＃１はサーバ２のバンドルバッファ２２２に格納され、サーバアプリケーション２０１は、バンドル＃１からデータ＃１を取得する。
【０１８２】
次に、バンドル制御部１２０は、バンドルバッファ１２２からバンドル＃２を読み出してサーバ２に送信する。バンドル＃２はサーバ２のバンドルバッファ２２２に格納され、サーバアプリケーション２０１は、バンドル＃２からデータ＃２を取得する。
【０１８３】
このように、端末１は、サイズの大きいデータ＃１をサイズの小さいデータ＃２より先にサーバ２に送信する。サイズの小さなデータ＃２の送信がサイズの大きなデータ＃１の送信のために遅延するおそれがある。
【０１８４】
そこで、中継経路判定部１２４は、クライアントアプリケーション１０１からデータ＃１，＃２が受け付けられたとき、データ＃１，＃２のサイズに基づきその中継経路Ｒａ，Ｒｂを決定する。より具体的には、中継経路判定部１２４は、バンドル＃１，＃２のサイズを所定値Ｓｔｈと比較し、その比較結果に基づきその中継経路Ｒａ，Ｒｂを決定する。
【０１８５】
図１８は、サイズが異なるデータの送信処理の一例を示すシーケンス図である。本例において、クライアントアプリケーション１０１は、上記の比較例と同様にデータ＃１及びデータ＃２をプロキシプロトコル機能部１１０に出力する。なお、所定値Ｓｔｈは、一例として５００（MByte）であると仮定する。
【０１８６】
中継経路判定部１２４は、バンドル＃１のサイズである1（GByte）がＳｔｈ以上であるため、エクスポート処理部１２５にバンドル＃１のエクスポート処理を指示する。エクスポート処理部１２５は、バンドルバッファ１２２からバンドル＃１を読み出してエクスポートバッファ１２７に格納する。バンドル＃１は、ＵＳＢ−ＩＦ１８の制御により任意のタイミングで記憶媒体９に書き込まれ、サーバ２のＵＳＢ−ＩＦ２６の制御により記憶媒体９からインポートバッファ２２７に書き込まれる。
【０１８７】
インポート処理部２２５は、インポートバッファ２２７からバンドル＃１を読み出してバンドルバッファ２２２に格納する。サーバアプリケーション２０１は、バンドル＃１からデータ＃１を取得する。
【０１８８】
また、中継経路判定部１２４は、バンドル＃２のサイズである1００（MByte）がＳｔｈより小さいため、バンドル＃２をバンドルバッファ１２２に格納したままにする。バンドル制御部１２０は、コネクションの再接続後、バンドルバッファ１２２からバンドル＃２を読み出してサーバ２に送信する。バンドル＃２はサーバ２のバンドルバッファ２２２に格納され、サーバアプリケーション２０１は、バンドル＃２からデータ＃２を取得する。
【０１８９】
このように、端末１は、サイズの大きいデータ＃１を、サイズの小さいデータ＃２とは異なる中継経路Ｒｂでサーバ２に中継する。このため、サイズの小さなデータ＃２の送信がサイズの大きなデータ＃１の送信のために遅延することが防止される。
【０１９０】
なお、上記の処理機能は、コンピュータによって実現することができる。その場合、処理装置が有すべき機能の処理内容を記述したプログラムが提供される。そのプログラムをコンピュータで実行することにより、上記処理機能がコンピュータ上で実現される。処理内容を記述したプログラムは、コンピュータで読み取り可能な記録媒体（ただし、搬送波は除く）に記録しておくことができる。
【０１９１】
プログラムを流通させる場合には、例えば、そのプログラムが記録されたＤＶＤ（Digital Versatile Disc）、ＣＤ−ＲＯＭ（Compact Disc Read Only Memory）などの可搬型記録媒体の形態で販売される。また、プログラムをサーバコンピュータの記憶装置に格納しておき、ネットワークを介して、サーバコンピュータから他のコンピュータにそのプログラムを転送することもできる。
【０１９２】
プログラムを実行するコンピュータは、例えば、可搬型記録媒体に記録されたプログラムもしくはサーバコンピュータから転送されたプログラムを、自己の記憶装置に格納する。そして、コンピュータは、自己の記憶装置からプログラムを読み取り、プログラムに従った処理を実行する。なお、コンピュータは、可搬型記録媒体から直接プログラムを読み取り、そのプログラムに従った処理を実行することもできる。また、コンピュータは、サーバコンピュータからプログラムが転送されるごとに、逐次、受け取ったプログラムに従った処理を実行することもできる。
【０１９３】
上述した実施形態は本発明の好適な実施の例である。但し、これに限定されるものではなく、本発明の要旨を逸脱しない範囲内において種々変形実施可能である。
【０１９４】
なお、以上の説明に関して更に以下の付記を開示する。
（付記１）  アプリケーションからデータを受け付ける工程と、
前記アプリケーションの新たなデータの受け付けに応じ、通信先へ中継するデータ残量と、前記アプリケーションから受け付けた複数のデータの各々の優先度とに基づいて、前記複数のデータの各々の途絶耐性ネットワークのプロトコルによる中継経路を決定する工程とを、コンピュータが実行することを特徴とする中継通信方法。
（付記２）  前記優先度は、前記アプリケーションから受け付けた前記複数のデータの各々に付与された時刻情報に基づき設定されていることを特徴とする付記１に記載の中継通信方法。
（付記３）  前記データ残量が所定量より多い場合、前記アプリケーションから受け付けた前記複数のデータのうち、前記新たなデータの前記優先度が他のデータの前記優先度より高いとき、前記他のデータを前記新たなデータとは異なる通信インターフェースに対応する格納領域に格納する工程を、前記コンピュータが実行することを特徴とする付記１または２に記載の中継通信方法。
（付記４）  前記データ残量が前記所定量より多い場合、前記アプリケーションから受け付けた前記複数のデータのうち、前記新たなデータの前記優先度が前記他のデータの前記優先度より高いとき、前記他のデータに当該中継処理に関する情報を付与する工程を、前記コンピュータが実行することを特徴とする付記３に記載の中継通信方法。
（付記５）  前記データ残量が前記所定量より多い場合、前記アプリケーションから受け付けた前記複数のデータのうち、前記新たなデータの前記優先度が他のデータの前記優先度より低いとき、前記新たなデータを前記他のデータとは異なる通信インターフェースに対応する格納領域に格納する工程を、前記コンピュータが実行することを特徴とする付記１乃至４の何れかに記載の中継通信方法。
（付記６）  前記データ残量が前記所定量より多い場合、前記アプリケーションから受け付けた前記複数のデータのうち、前記新たなデータの前記優先度が前記他のデータの前記優先度より低いとき、前記新たなデータに当該中継処理に関する情報を付与する工程を、前記コンピュータが実行することを特徴とする付記５に記載の中継通信方法。
（付記７）  前記アプリケーションから前記新たなデータを受け付けたとき、前記新たなデータのサイズに基づき前記新たなデータの途絶耐性ネットワークのプロトコルによる中継経路を決定する工程を、前記コンピュータが実行することを特徴とする付記１乃至６の何れかに記載の中継通信方法。
（付記８）  アプリケーションからデータを受け付け、
前記アプリケーションの新たなデータの受け付けに応じ、通信先へ中継するデータ残量と、前記アプリケーションから受け付けた複数のデータの各々の優先度とに基づいて、前記複数のデータの各々の途絶耐性ネットワークのプロトコルによる中継経路を決定する、処理を、コンピュータに実行させることを特徴とする中継通信プログラム。
（付記９）  前記優先度は、前記アプリケーションから受け付けた前記複数のデータの各々に付与された時刻情報に基づき設定されていることを特徴とする付記８に記載の中継通信プログラム。
（付記１０）  前記データ残量が所定量より多い場合、前記アプリケーションから受け付けた前記複数のデータのうち、前記新たなデータの前記優先度が他のデータの前記優先度より高いとき、前記他のデータを前記新たなデータとは異なる通信インターフェースに対応する格納領域に格納する処理を、前記コンピュータに実行させることを特徴とする付記８または９に記載の中継通信プログラム。
（付記１１）  前記データ残量が前記所定量より多い場合、前記アプリケーションから受け付けた前記複数のデータのうち、前記新たなデータの前記優先度が前記他のデータの前記優先度より高いとき、前記他のデータに当該中継処理に関する情報を付与する処理を、前記コンピュータに実行させることを特徴とする付記１０に記載の中継通信プログラム。
（付記１２）  前記データ残量が前記所定量より多い場合、前記アプリケーションから受け付けた前記複数のデータのうち、前記新たなデータの前記優先度が他のデータの前記優先度より低いとき、前記新たなデータを前記他のデータとは異なる通信インターフェースに対応する格納領域に格納する処理を、前記コンピュータに実行させることを特徴とする付記８乃至１１の何れかに記載の中継通信プログラム。
（付記１３）  前記データ残量が前記所定量より多い場合、前記アプリケーションから受け付けた前記複数のデータのうち、前記新たなデータの前記優先度が前記他のデータの前記優先度より低いとき、前記新たなデータに当該中継処理に関する情報を付与する処理を、前記コンピュータに実行させることを特徴とする付記１２に記載の中継通信プログラム。
（付記１４）  前記アプリケーションから前記新たなデータを受け付けたとき、前記新たなデータのサイズに基づき前記新たなデータの途絶耐性ネットワークのプロトコルによる中継経路を決定する処理を、前記コンピュータに実行させることを特徴とする付記８乃至１３の何れかに記載の中継通信プログラム。
（付記１５）  アプリケーションからデータを受け付ける受付部と、
前記アプリケーションの新たなデータの受け付けに応じ、通信先へ中継するデータ残量と、前記アプリケーションから受け付けた複数のデータの各々の優先度とに基づいて、前記複数のデータの各々の途絶耐性ネットワークのプロトコルによる中継経路を決定する決定部とを有することを特徴とする中継通信装置。
（付記１６）  前記優先度は、前記アプリケーションから受け付けた前記複数のデータの各々に付与された時刻情報に基づき設定されていることを特徴とする付記１５に記載の中継通信装置。
（付記１７）  前記データ残量が所定量より多い場合、前記アプリケーションから受け付けた前記複数のデータのうち、前記新たなデータの前記優先度が他のデータの前記優先度より高いとき、前記他のデータを前記新たなデータとは異なる通信インターフェースに対応する格納領域に格納するデータ処理部を有することを特徴とする付記１５または１６に記載の中継通信装置。
（付記１８）  前記データ処理部は、前記データ残量が前記所定量より多い場合、前記アプリケーションから受け付けた前記複数のデータのうち、前記新たなデータの前記優先度が前記他のデータの前記優先度より高いとき、前記他のデータに当該中継処理に関する情報を付与することを特徴とする付記１７に記載の中継通信装置。
（付記１９）  前記データ処理部は、前記データ残量が前記所定量より多い場合、前記アプリケーションから受け付けた前記複数のデータのうち、前記新たなデータの前記優先度が他のデータの前記優先度より低いとき、前記新たなデータを前記他のデータとは異なる通信インターフェースに対応する格納領域に格納するデータ処理部を有することを特徴とする付記１７または１８に記載の中継通信装置。
（付記２０）  前記データ処理部は、前記データ残量が前記所定量より多い場合、前記アプリケーションから受け付けた前記複数のデータのうち、前記新たなデータの前記優先度が前記他のデータの前記優先度より低いとき、前記新たなデータに当該中継処理に関する情報を付与することを特徴とする付記１９に記載の中継通信装置。
（付記２１）  前記決定部は、前記アプリケーションの前記新たなデータを受け付けに応じ、前記新たなデータのサイズに基づき前記新たなデータの途絶耐性ネットワークのプロトコルによる中継経路を決定することを特徴とする付記１５乃至２０の何れかに記載の中継通信装置。
【符号の説明】
【０１９５】
１       端末
２       サーバ
１１０，２１０     プロキシプロトコル機能部
１２４      中継経路決定部
１２５      エクスポート処理部
１２６，２２６     イベントリスト
１２７      エクスポートバッファ
２２５      インポート処理部
２２７      インポートバッファ
【図１】
2018166258.tif 000003
【図２】
2018166258.tif 000004
【図３】
2018166258.tif 000005
【図４】
2018166258.tif 000006
【図５】
2018166258.tif 000007
【図６】
2018166258.tif 000008
【図７】
2018166258.tif 000009
【図８】
2018166258.tif 000010
【図９】
2018166258.tif 000011
【図１０】
2018166258.tif 000012
【図１１】
2018166258.tif 000013
【図１２】
2018166258.tif 000014
【図１３】
2018166258.tif 000015
【図１４】
2018166258.tif 000016
【図１５】
2018166258.tif 000017
【図１６】
2018166258.tif 000018
【図１７】
2018166258.tif 000019
【図１８】
2018166258.tif 000020