JP6859795B2 - 中継通信方法、中継通信プログラム、及び中継通信装置 - Google Patents

中継通信方法、中継通信プログラム、及び中継通信装置 Download PDF

Info

Publication number
JP6859795B2
JP6859795B2 JP2017062657A JP2017062657A JP6859795B2 JP 6859795 B2 JP6859795 B2 JP 6859795B2 JP 2017062657 A JP2017062657 A JP 2017062657A JP 2017062657 A JP2017062657 A JP 2017062657A JP 6859795 B2 JP6859795 B2 JP 6859795B2
Authority
JP
Japan
Prior art keywords
data
bundle
application
relay
priority
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
JP2017062657A
Other languages
English (en)
Other versions
JP2018166258A (ja
Inventor
山村 新也
新也 山村
忠勝 永尾
忠勝 永尾
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Fujitsu Ltd
Original Assignee
Fujitsu Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Fujitsu Ltd filed Critical Fujitsu Ltd
Priority to JP2017062657A priority Critical patent/JP6859795B2/ja
Priority to US15/925,160 priority patent/US11082281B2/en
Publication of JP2018166258A publication Critical patent/JP2018166258A/ja
Application granted granted Critical
Publication of JP6859795B2 publication Critical patent/JP6859795B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/50Network services
    • H04L67/60Scheduling or organising the servicing of application requests, e.g. requests for application data transmissions using the analysis and optimisation of the required network resources
    • H04L67/61Scheduling or organising the servicing of application requests, e.g. requests for application data transmissions using the analysis and optimisation of the required network resources taking into account QoS or priority requirements
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L47/00Traffic control in data switching networks
    • H04L47/10Flow control; Congestion control
    • H04L47/36Flow control; Congestion control by determining packet size, e.g. maximum transfer unit [MTU]
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L47/00Traffic control in data switching networks
    • H04L47/10Flow control; Congestion control
    • H04L47/24Traffic characterised by specific attributes, e.g. priority or QoS
    • H04L47/2425Traffic characterised by specific attributes, e.g. priority or QoS for supporting services specification, e.g. SLA
    • H04L47/2433Allocation of priorities to traffic types
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L47/00Traffic control in data switching networks
    • H04L47/70Admission control; Resource allocation
    • H04L47/82Miscellaneous aspects
    • H04L47/821Prioritising resource allocation or reservation requests
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L47/00Traffic control in data switching networks
    • H04L47/70Admission control; Resource allocation
    • H04L47/80Actions related to the user profile or the type of traffic
    • H04L47/803Application aware
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L69/00Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
    • H04L69/16Implementation or adaptation of Internet protocol [IP], of transmission control protocol [TCP] or of user datagram protocol [UDP]
    • H04L69/161Implementation details of TCP/IP or UDP/IP stack architecture; Specification of modified or new header fields
    • H04L69/162Implementation details of TCP/IP or UDP/IP stack architecture; Specification of modified or new header fields involving adaptations of sockets based mechanisms

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Data Exchanges In Wide-Area Networks (AREA)
  • Telephonic Communication Services (AREA)
  • Computer And Data Communications (AREA)

Description

本件は、中継通信方法、中継通信プログラム、及び中継通信装置に関する。
近年、無線アクセスポイント(以下、「AP」と表記)が普及した結果、スマートフォンなどの端末は、無線アクセスポイントと通信キャリアの広域無線接続を切り替えながら通信を行うスタイルが広まっている。このような環境において、通信状態は、端末の接続数や周囲の電波状況に影響されるため、通信品質が場所や時間によりばらついて、通信が断続的となる。
例えば、ユーザが移動中、リンク対象のAPを切り替えながらインターネット上のサーバと通信を行う場合、通信のデータ量が多く、APのリンク可能範囲内の滞在時間が短いと、通信が途中で切断されるため、他のAPとの再リンク後に通信のやり直しが必要となる。
これに対し、端末のアプリケーションに、通信の遅延や途絶に対する耐性を持たせることが検討されている。例えば、通信が断続的となる環境でも円滑な通信を可能にする技術として、途絶耐性ネットワーク(DTN:Delay, Disruption Tolerant Networking)が知られている(例えば特許文献1及び2)。この技術は、IETF(The Internet Engineering Task Force)により標準化が進められ、例えばRFC(Request For Comments)5050には、DTNに適用するバンドルプロトコルが規定されている。
特開2008−205890号公報 国際公開2009/078427号
バンドルプロトコルは、本来、宇宙空間や海中などの特殊な環境下の通信のように、リアルタイム性がなく、遅延を前提とした通信に適用することを想定しているため、一般的なアプリケーションには直接的に用いることが難しい。このため、一般的なアプリケーションの通信にバンドルプロトコルを用いるためには、バンドルプロトコルに基づき通信を行うプロキシ機能の使用が考えられる。
プロキシ機能を備えた中継通信装置は、通信の切断中、アプリケーションからデータを受信してバンドル化したうえでバッファに格納しておき、通信の復旧後に送信する。このとき、バンドル化されたデータの送信順序は、アプリケーションからの受信順序に一致する。
しかし、この送信順序は、データの用途によっては適切ではないことがある。例えば監視カメラの映像データのようにリアルタイム性の高いデータを送信する場合、時系列順で古い映像データが新しい映像データより先に送信されると、受信側で新しい映像の確認が遅れるため、監視に支障を生ずるおそれがある。
これに対し、中継通信装置が、古い映像データを廃棄すれば新しい映像データを優先的に送信することができるため、監視に支障が生ずることを防止できる。しかし、古い映像データは、過去の映像解析には用いられる可能性があるため、廃棄することができない。
そこで本件は、データを破棄せずにデータ送信の優先処理を行うことができる中継通信方法、中継通信プログラム、及び中継通信装置を提供することを目的とする。
1つの態様では、中継通信方法は、アプリケーションからデータを受け付ける工程と、前記アプリケーションの新たなデータの受け付けに応じ、通信先へ中継するデータ残量と、前記アプリケーションから受け付けた複数のデータの各々の優先度とに基づいて、前記複数のデータの各々途絶耐性ネットワークのプロトコルにより同一の通信先に中継する中継経路をデータごとに決定する工程とを、コンピュータが実行する方法である。
1つの態様では、中継通信プログラムは、アプリケーションからデータを受け付け、前記アプリケーションの新たなデータの受け付けに応じ、通信先へ中継するデータ残量と、前記アプリケーションから受け付けた複数のデータの各々の優先度とに基づいて、前記複数のデータの各々途絶耐性ネットワークのプロトコルにより同一の通信先に中継する中継経路をデータごとに決定する、処理を、コンピュータに実行させるプログラムである。
1つの態様では、中継通信装置は、アプリケーションからデータを受け付ける受付部と、前記アプリケーションの新たなデータの受け付けに応じ、通信先へ中継するデータ残量と、前記アプリケーションから受け付けた複数のデータの各々の優先度とに基づいて、前記複数のデータの各々途絶耐性ネットワークのプロトコルにより同一の通信先に中継する中継経路をデータごとに決定する決定部とを有する。
1つの側面として、データを破棄せずにデータ送信の優先処理を行うことができる。
端末の一例を示す構成図である。 サーバの一例を示す構成図である。 端末及びサーバの各機能構成の一例を示す構成図である。 バンドルのフォーマットを示す図である。 コネクションリスト、フィルタテーブル、バンドルバッファ、送信イベントキュー、及び受信イベントキューの一例を示す図である。 プロトコル変換の一例を示す図である。 クライアントアプリケーションのデータ送信処理の一例を示すフローチャートである。 バンドルの送信処理の一例を示すフローチャートである。 バンドルのエクスポート処理の一例を示すフローチャートである。 バンドルの受信処理の一例を示すフローチャートである。 バンドルのインポート処理の一例を示すフローチャートである。 バンドルプロトコルの適用の切り替え処理の一例を示すフローチャートである。 映像データの送信処理の比較例を示すシーケンス図である。 コネクションが切断されていない場合の映像データの送信処理の一例を示すシーケンス図である。 コネクションが切断された場合の映像データの送信処理の一例を示すシーケンス図である。 コネクションが切断された場合の映像データの送信処理の他の例を示すシーケンス図である。 サイズが異なるデータの送信処理の比較例を示すシーケンス図である。 サイズが異なるデータの送信処理の一例を示すシーケンス図である。
図1は、端末の一例を示す構成図である。端末1としては、例えば、スマートフォンやパーソナルコンピュータなどの通信端末が挙げられるが、これに限定されない。
端末1は、CPU(Central Processing Unit)10、ROM(Read Only Memory)11、RAM(Random Access Memory)12、HDD(Hard Disk Drive)やメモリなどの記憶部13を有する。端末1は、さらに、無線LAN(Local Area Network)モジュール14、入力部15、表示部16、HDDやSSD(Solid State Drive)などのストレージ17、及びUSB(Universal Serial Bus)インターフェース(USB−IF)部18を有する。CPU10は、互いに信号の入出力ができるように、ROM11、RAM12、記憶部13、無線LANモジュール14、入力部15、表示部16、ストレージ17、及びUSB−IF18と、バス19を介して接続されている。
ROM11は、CPU10を駆動するプログラムが格納されている。ROM11内のプログラムには、実施例の中継通信方法を実行する中継通信プログラムが含まれる。
RAM12は、CPU10のワーキングメモリとして機能する。記憶部13には、プログラムの実行に用いられる各種の情報が記憶されている。USB−IF18は、CPU10のドライバからの制御に従って、例えばUSBメモリなどの記憶媒体9との通信を処理する。ストレージ17には、USB−IF18を介して読み書き可能なデータ格納領域(後述のエクスポートバッファなど)が設けられている。
無線LANモジュール14は、例えば、アクセス系ネットワークに接続されたAPとリンクアップすることによりインターネット上のサーバと通信する。無線LANモジュール14は、複数の通信回線によりAPとリンクアップすることが可能である。
入力部15は、端末1に情報を入力する手段である。入力部15としては、例えばキーボード、マウス、及びタッチパネルなどが挙げられる。入力部15は、入力された情報を、バス19を介しCPU10に出力する。
表示部16は、端末1の情報を出力する手段である。表示部16としては、例えばディスプレイ、タッチパネル、及びプリンタなどが挙げられる。表示部16は、CPU10からバス19を介して情報を取得して表示する。
CPU10は、ROM11からプログラムを読み込むと、中継通信方法を実行するための各種の機能が形成される。CPU10は、プログラムを実行するコンピュータの一例である。なお、端末1の機能構成については後述する。
図2は、サーバ2の一例を示す構成図である。サーバ2は、例えばインターネットに接続され、端末1と通信することにより所定のサービスを提供する中継通信装置である。
サーバ2は、CPU20、ROM21、RAM22、HDD23、通信ポート24、ストレージ25、及びUSB−IF26を有する。CPU20は、互いに信号の入出力ができるように、ROM21、RAM22、HDD23、通信ポート24、HHDDやSSDなどのストレージ25、及びUSB−IF26と、バス29を介して接続されている。
ROM21は、CPU20を駆動するプログラムが格納されている。RAM22は、CPU20のワーキングメモリとして機能する。通信ポート24は、例えばNIC(Network Interface Card)であり、インターネットを介し端末1と通信する。
USB−IF26は、CPU20のドライバからの制御に従って、例えばUSBメモリなどの記憶媒体9との通信を処理する。ストレージ25には、USB−IF26を介して読み書き可能なデータの格納領域(後述のインポートバッファなど)が設けられている。
図3は、端末1及びサーバ2の各機能構成の一例を示す構成図である。端末1及びサーバ2は、ネットワークNWを介して接続されている。
端末1は、アプリケーション機能部100と、プロキシプロトコル機能部110と、バンドル制御部120と、バンドルバッファ122と、経路テーブル(経路TBL)123と、中継経路判定部124と、エクスポート処理部125と、エクスポートバッファ127と、イベントリスト126とを有する。
アプリケーション機能部100は、クライアントアプリケーション(APLc)101と、TCP(Transmission Control Protocol)処理部102とを有する。プロキシプロトコル機能部110は、プロキシ制御部111と、コネクション監視部112と、アドレス変換部113と、送受信制御部114と、応答制御部115と、コネクションリスト116と、初期設定ファイル117と、フィルタテーブル(フィルタTBL)118とを有する。
クライアントアプリケーション101、TCP処理部102、プロキシ制御部111、コネクション監視部112、アドレス変換部113、送受信制御部114、応答制御部115、バンドル制御部120、中継経路判定部124、及びエクスポート処理部125は、端末1のCPU10に形成される機能である。また、コネクションリスト116と、初期設定ファイル117と、フィルタTBL118、バンドルバッファ122、経路TBL123、及びイベントリスト126は、記憶部13に形成されており、エクスポートバッファ127は、ストレージ17に形成されている。
なお、図3に示された端末1の機能構成のうち、アプリケーション機能部100を除く部分は、実施例の中継通信装置及び中継通信プログラムとして機能し、クライアントアプリケーション101から通信先への通信を中継する。実施例の中継通信装置及び中継通信プログラムは、図3に示されるように端末1の内部に設けられてもよいが、端末1とは別の装置に設けられてもよい。
一方、サーバ2は、アプリケーション機能部200と、プロキシプロトコル機能部210と、バンドル制御部220と、バンドルバッファ222と、インポート処理部225と、イベントリスト226と、経路TBL223と、インポートバッファ227とを有する。
アプリケーション機能部200は、サーバアプリケーション(APLs)201と、TCP処理部202とを有する。プロキシプロトコル機能部210は、プロキシ制御部211と、コネクション監視部212と、アドレス変換部213と、送受信制御部214と、応答制御部215と、コネクションリスト216と、初期設定ファイル217と、フィルタTBL218とを有する。
サーバアプリケーション201、TCP処理部202、プロキシ制御部211、コネクション監視部212、アドレス変換部213、送受信制御部214、応答制御部215、バンドル制御部220、及びインポート処理部225は、サーバ2のCPU20に形成される機能である。また、コネクションリスト216と、初期設定ファイル217と、フィルタTBL218、バンドルバッファ222、経路TBL223、及びイベントリスト226は、HDD23に形成されており、インポートバッファ227は、ストレージ25に形成されている。
サーバアプリケーション201とクライアントアプリケーション101は、TCP処理部102,202により通信することにより連携して所定の機能を提供する。サーバアプリケーション201とクライアントアプリケーション101の機能としては、例えばファイル転送機能や映像データ転送機能などが挙げられるが限定はない。なお、クライアントアプリケーション101はアプリケーションの一例である。
TCP処理部102,202は、例えばOS(Operating System)のドライバなどにより提供されるTCP/IP(Internet Protocol)の通信機能を備える。端末1のTCP処理部102は、無線LANモジュール14を制御してパケットの送受信を行い、サーバ2のTCP処理部202は、通信ポート24を制御してパケットの送受信を行う。
サーバアプリケーション201とクライアントアプリケーション101は、ネットワークNWを介し、直接的にTCP/IPに基づく通信を行う。しかし、通信が断続的となる環境においては、バンドル制御部120,220が、TCP/IPに基づく通信に代えて、DTNのバンドルプロトコルに基づく通信を行う。
バンドル制御部120は、クライアントアプリケーション101から通信先への通信を、その通信先とのコネクションの状態に応じて、TCP/IPに基づく通信からDTNのバンドルプロトコルに基づく通信に切り替えて行う。このとき、コネクション監視部112は、通信先とのコネクションを状態を監視し、コネクションの状態に応じてアドレス変換部113を制御する。
これにより、コネクション監視部112は、クライアントアプリケーション101の通信先との通信をTCP/IPによる通信からDTNのバンドルプロトコルによる通信に切り替える。したがって、クライアントアプリケーション101の通信プロトコルが、TCP処理部102のTCP/IPからバンドル制御部120のバンドルプロトコルに切り替えられる。
また、バンドル制御部220は、サーバアプリケーション201から通信先への通信を、その通信先とのコネクションの状態に応じて、TCP/IPに基づく通信からDTNのバンドルプロトコルに基づく通信に切り替えて行う。このとき、コネクション監視部212は、通信先とのコネクションを状態を監視し、コネクションの状態に応じて、アドレス変換部213を制御する。
これにより、コネクション監視部212は、サーバアプリケーション201の通信先との通信をTCP/IPによる通信からDTNのバンドルプロトコルによる通信に切り替える。したがって、サーバアプリケーション201の通信プロトコルが、TCP処理部202のTCP/IPからバンドル制御部220のバンドルプロトコルに切り替えられる。
バンドル制御部120,220は、例えば、RFC5050の規定に従い、バンドルプロトコルに基づく通信を行う。バンドル制御部120,220は、サーバアプリケーション201とクライアントアプリケーション101の送信対象データを、バンドルと呼ばれるデータメッセージのペイロード部分に収容して送信する。
図4には、バンドルのフォーマットが示されている。バンドルは、プライマリバンドルブロック及びバンドルペイロードブロックを含む。プライマリバンドルブロックには、送信元や宛先に関する情報、及び、バンドルの削除までの時間を示すライフタイム(「Life time」)などが含まれる。バンドルペイロードブロックには、データを収容するペイロード(「Bundle Payload」)が含まれる。なお、バンドル内の各項目についてはRFC5050に規定されている。
バンドル制御部120,220は、バンドルを送信するとき、経路TBL123,223を参照して、バンドルプロトコルにおける宛先を示すEID(Endpoint ID)に対応するTCP/IP上の宛先IPアドレス及びTCPポート番号(以下、「ポート番号」と表記)を取得する。バンドル制御部120,220は、その宛先とのコネクション、つまり端末1とサーバ2の間のコネクションが切断されているとき、バンドルバッファ122,222にバンドルを格納しておき、コネクションが再接続されたとき、バンドルバッファ122,222からバンドルを読み出して送信する。
これにより、DTNに基づく通信が行われる。なお、バンドルの送受信は、端末1の場合、バンドル制御部120が無線LANモジュール14を制御して行い、サーバ2の場合、バンドル制御部220が通信ポート24を制御して行う。
図5には、バンドルバッファ122,222の一例が示されている。バンドルバッファ122,222はバンドルの格納領域である。バンドルは、バンドルを識別するバンドルIDとともにバンドルバッファ122に格納される。なお、バンドル制御部120,220は、バンドルの送信時だけでなく、バンドルの受信時もバンドルをバンドルバッファ122に格納する。
再び図3を参照すると、プロキシプロトコル機能部110,210は、クライアントアプリケーション101及びサーバアプリケーション201の通信を、TCPのソケット通信からバンドルプロトコルの通信に変換する。このとき、プロキシプロトコル機能部110,210は、バンドル制御部120,220に対しバンドルAPI(Application Programing Interface)により設定及び制御を行うことにより、一般的なアプリケーションでもDTNを利用可能とする。以下にプロキシプロトコル機能部110,210の詳細を説明する。
アドレス変換部113,213は、クライアントアプリケーション101及びサーバアプリケーション201の通信の宛先を送受信制御部114,214の宛先に変換する。例えば端末1において、アドレス変換部113は、サーバ2を宛先とするパケットの宛先IPアドレス及びポート番号を、送受信部に設定されたTCPソケット(以下、「ソケット」と表記)の宛先IPアドレス及びポート番号に変換する。
このため、プロキシプロトコル機能部110,210は、クライアントアプリケーション101及びサーバアプリケーション201から通信先に送信されるパケットのデータを受信することができる。すなわち、端末1のプロキシプロトコル機能部110は、受付部の一例として、クライアントアプリケーション101からパケットのデータを受け付ける。なお、アドレス変換部113,213は、例えば、OSとしてWindows(登録商標)が使用される場合、WFP(Windows Filtering Platform)により実現され、OSとしてLinux(登録商標)が使用される場合、「iptables」により実現される。
送受信制御部114,214は、クライアントアプリケーション101及びサーバアプリケーション201のTCPのソケット通信を終端する。送受信制御部114,214は、装置内のローカルなループバックコネクションを確立する。
例えば、端末1の送受信制御部114は、クライアントアプリケーション101からのソケットの接続を監視し、プロキシ制御部111からの指示に従い、サーバアプリケーション201に対するソケットの確立と、指示されたソケットへのデータの送信を行う。
送受信制御部114,214は、クライアントアプリケーション101及びサーバアプリケーション201からソケット経由で受信したパケットを、ユーザやオペレータが設定したポリシー(アルゴリズムや処理方針)に従い指定サイズで分割してプロキシ制御部111,211に出力する。分割のサイズは、例えば、ソケットのオープンからクローズまでに受信したデータサイズ、パケットの受信サイズ、または所定値とする。
また、送受信制御部114,214は、バンドルの送受信をイベントリスト126,226により管理する。送受信制御部114,214は、バンドルの送信に関する送信イベント情報をイベントリスト126,226に登録し、バンドルの送信処理によりイベントリスト126,226から送信イベント情報が削除されたときに送信処理の完了を認識する。一方、バンドルが受信された場合、送受信制御部114,214は、バンドルの受信に関する受信イベント情報をイベントリスト126,226から取得することにより受信処理の完了を認識する。
送信イベント情報はイベントリスト126,226の送信キューに格納されており、受信イベント情報はイベントリスト126,226の受信キューに格納されている。
図5には、送信イベントキュー及び受信イベントキューの一例が示されている。送信イベント情報としては、送信イベント情報のIDとともに、一例として送信先アドレス及びサイズが登録されている。送信先アドレスは、送信先のIPアドレス及びポート番号を示し、サイズは、送信対象のバンドルのサイズを示す。
受信イベント情報としては、受信イベント情報のIDとともに、一例として送信先アドレス及びサイズが登録されている。送信先アドレスは、送信先のIPアドレス及びポート番号を示し、サイズは、送信対象のバンドルのサイズを示す。
プロキシ制御部111,211は、送受信制御部114,214で受信したパケットのデータを、プロキシメッセージのペイロードに収容して、バンドルAPIによりバンドル制御部120,220に出力する。これにより、プロキシ制御部111,211からバンドル制御部120,220に対してバンドルの送信が要求される。
プロキシ制御部111,211は、プロキシメッセージを、宛先に応じたコネクション番号により管理する。プロキシ制御部111,211は、送受信制御部114,214によりソケットがオープンされるたびに新規のコネクション番号をコネクションリスト116,216に登録する。
図5には、コネクションリスト116,216の一例が示されている。コネクションリスト116,216には、コネクション番号、ソケットチャネルID、及び宛先EIDが対応付けられて登録されている。ソケットチャネルIDは、送受信制御部114,214のソケットの識別子である。
プロキシ制御部111,211は、パケットの受信元のソケットのソケットチャネルIDに応じたコネクション番号をプロキシメッセージに付与してバンドル制御部120,220に出力する。また、プロキシ制御部111,211は、該当する宛先EIDへのバンドルの送信をバンドル制御部120,220に要求する。
したがって、端末1のコネクションリスト116の宛先EIDには、サーバ2のEIDが登録され、サーバ2のコネクションリスト216の宛先EIDには、端末1のEIDが登録されている。なお、プロキシ制御部111,211は、初期設定ファイル117,217を読み出すことにより、自装置のEIDや通信先のEIDなどの通信に必要な情報を取得する。
また、プロキシ制御部111,211は、バンドル制御部120,220からプロキシメッセージを受信する。プロキシ制御部111,211は、受信したプロキシメッセージのコネクション番号がコネクションリスト116,216に未登録である場合、送受信制御部114,214に新規のソケットのオープンを指示し、そのソケットによる通信を開始する。
また、プロキシ制御部111,211は、受信したプロキシメッセージにデータが収容されていない場合、そのコネクション番号に対応するソケットチャネルIDをコネクションリスト116から検索する。プロキシ制御部111,211は、検索したソケットチャネルIDのソケットの削除を送受信制御部114,214に指示する。
このように、ソケットとEIDは、コネクションリスト116により対応付けられて管理される。このため、ソケットを用いるTCP/IPの通信をバンドルプロトコルに基づき行うことが可能となる。
また、バンドル制御部120,220は、プロキシ制御部111,211からのバンドルの送信要求に応じてバンドルを送信する。したがって、バンドル制御部120,220は、クライアントアプリケーション101及びサーバアプリケーション201から通信先への通信を途絶耐性ネットワークのプロトコルに基づいて行うことができる。バンドル制御部120,220は、バンドルを送信したとき、該当する送信イベント情報をイベントリスト126の送信イベントキューから削除する。また、バンドル制御部120,220は、バンドルを受信したとき、該当する受信イベント情報をイベントリスト126の受信イベントキューに登録する。
応答制御部115,215は、クライアントアプリケーション101及びサーバアプリケーション201からの通信が応答を要する場合、その応答を生成してクライアントアプリケーション101及びサーバアプリケーション201に出力する。このため、コネクションの切断により通信先との通信が途絶した場合でも、クライアントアプリケーション101及びサーバアプリケーション201は、通信の途絶を知ることなく動作を行う。したがって、コネクションの再接続後に通信のやり直しを必要としない。
例えば、端末1において、プロキシ制御部111がクライアントアプリケーション101の通信を行った場合、応答制御部115はその通信に対する応答をクライアントアプリケーション101に出力する。クライアントアプリケーション101からサーバアプリケーション201に対してファイルを分割して転送の場合、端末1の応答制御部115は、サーバアプリケーション201に代わり、応答として、クライアントアプリケーション101に対し次のファイルデータの送信を促す。
コネクション監視部112,212は、バンドル制御部120,220のコネクションの状態を監視する。コネクション監視部112,212は、コネクションが切断された状態ではコネクションの接続を行い、接続に成功した場合、コネクション監視部112,212にバンドルバッファ122,222内の送信対象のバンドルの送信を指示する。
また、コネクション監視部112,212は、コネクションの状態に応じて、アドレス変換部113,213に対し変換情報の設定及び削除を行う。コネクション監視部112,212は、フィルタTBL118,218に基づき変換情報を設定する。
図5には、フィルタTBL118,218の一例が示されている。フィルタTBL118,218には、パケットのフィルタ条件、変換情報、及び設定状態が対応付けられて登録されている。フィルタ条件には、アドレス変換の対象のパケットの送信元及び宛先のIPアドレスやポート番号などが指定されている。変換情報には、フィルタ条件に合致するパケットの書き換え対象の部分及び書き換え後の値を示す。設定状態は、フィルタ条件及び変換情報の設定の有効または無効を示す。
コネクション監視部112,212は、コネクションの状態に応じて、アドレス変換部113,213の変換情報の設定または削除を行う。このため、クライアントアプリケーション101及びサーバアプリケーション201の通信に自動的にバンドルプロトコルが適用される。
このように、コネクション監視部112,212は、通信先とのコネクションの状態を検出し、コネクションの状態に応じて、クライアントアプリケーション101及びサーバアプリケーション201の通信に対するバンドルプロトコルの適用の可否を決定する。このため、バンドルプロトコルは、コネクションの状態に応じてクライアントアプリケーション101及びサーバアプリケーション201の通信に使用される。
クライアントアプリケーション101及びサーバアプリケーション201は、通信が断続的となる場合、上記の構成によりTCP/IPをプロトコル変換することにより通信を行う。
図6にはプロトコル変換の一例が示されている。図6には、図3に示された構成のうち、端末1のクライアントアプリケーション101、プロキシ制御部111、及びバンドル制御部120と、サーバ2のサーバアプリケーション201、プロキシ制御部211、及びバンドル制御部220が示されている。
クライアントアプリケーション101及びサーバアプリケーション201の間では、IPアドレス及びポート番号によるTCP/IPの通信が行われる。クライアントアプリケーション101には任意のソケットSC1がオープンされ、サーバアプリケーション201には固定のソケットSC6がオープンされる。
プロキシ制御部111,211の間では、コネクション番号によるプロキシ間プロトコルによる通信が行われる。プロキシ制御部111には、送受信制御部114によりサーバアプリケーション201のソケットSC6に1対1で対応するソケットSC2がオープンされる。プロキシ制御部211には、送受信制御部214によりクライアントアプリケーション101のソケットSC1に1対1で対応するソケットSC5がオープンされる。
クライアントアプリケーション101とプロキシ制御部111の間ではソケットSC1,SC2による通信が行われ、サーバアプリケーション201とプロキシ制御部211の間ではソケットSC5,SC6による通信が行われる。このため、送受信制御部114,214は、クライアントアプリケーション101及びサーバアプリケーション201の各ソケットSC1,SC6に合わせてソケットSC2,SC5のオープン及びクローズを行い、そのソケットSC2,SC5によるデータ送受信を行う。
バンドル制御部120,220の間では、EIDによるバンドルプロトコルの通信が行われる。バンドル制御部120,220には、ソケットSC3,SC4がそれぞれオープンされる。
クライアントアプリケーション101からサーバアプリケーション201への通信が行われる場合、端末1において、プロキシ制御部111は、初期設定ファイル117に基づきパケットのポート番号を宛先EIDに変換し、バンドル制御部120は、経路TBL123に基づき宛先EIDを宛先IPアドレス及びポート番号に変換する。
また、サーバ2において、バンドル制御部220は、宛先EIDを、後述する出力ポインタに変換し、プロキシ制御部211は、出力ポインタを宛先IPアドレス及びポート番号に変換する。このようにして、クライアントアプリケーション101からサーバアプリケーション201への通信は行われる。
再び図3を参照すると、端末1からサーバ2へのバンドルの送信順序は、アプリケーションからの受信順序に一致する。しかし、この送信順序は、バンドル内のデータの用途によっては適切ではないことがある。例えば監視カメラの映像データのようにリアルタイム性の高いデータを送信する場合、時系列順で古い映像データが新しい映像データより先に送信されると、受信側で新しい映像の確認が遅れるため、監視に支障を生ずるおそれがある。
これに対し、バンドル制御部120が、古い映像データを廃棄すれば新しい映像データを優先的に送信することができるため、監視に支障が生ずることを防止できる。しかし、古い映像データは、過去の映像解析には用いられる可能性があるため、廃棄することができない。
そこで、端末1は、バンドルバッファ122内のバンドルのデータ残量に応じ、バンドルバッファ122内の優先度が低いバンドルのデータ(以下、「低優先データ」と表記)及び優先度が高いバンドルのデータ(以下、「高優先データ」と表記)の中継経路を分ける。高優先データは、例えば時刻情報が新しい映像データであり、低優先データは、例えば時刻情報が古い映像データである。
より具体的には、高優先データはバンドル制御部120によりバンドルバッファ122から中継経路Raを経由してサーバ2のバンドルバッファ122に送信される。また、低優先データは、エクスポート処理部125によりエクスポートバッファ127から中継経路Rbを経由してサーバ2のインポートバッファ227へエクスポートされる。これにより、端末1は、高優先データを優先してサーバ2に中継し、低優先データを破棄せずに任意のタイミングでサーバ2に中継することができる。この中継通信方法について以下に説明する。
中継経路判定部124は、バンドルの中継経路の判定処理を行う。中継経路判定部124は、プロキシプロトコル機能部110がクライアントアプリケーション101から新たなパケットのデータを受け付けたとき、通信先へ中継するバンドルのデータ残量と、クライアントアプリケーション101から受け付けた複数のパケットのデータの各々の優先度とに基づいて、各データの中継経路を決定する。なお、中継経路判定部124は決定部の一例である。
より具体的には、中継経路判定部124は、バンドルバッファ122に格納されたバンドルのデータ残量を取得して所定量と比較し、データ残量が所定量以上である場合、バンドルごとの優先度に応じてバンドルのエクスポート処理をエクスポート処理部125に指示する。中継経路判定部124は、バンドルバッファ122内の各バンドルの優先度同士を比較し、その比較結果に基づき、低優先データのエクスポート処理をエクスポート処理部125に指示する。
このため、高優先データは、バンドルバッファ122内に格納されたままとなるので、中継経路Raを経由してサーバ2に送信される。なお、本例において、中継経路判定部124は、データ残量が0(Byte)以上である場合にエクスポート処理を指示するが、これに限定されず、データ残量が1(MByte)以上である場合に指示してもよい。
バンドルの優先度としては、例えばパケットのデータが映像データである場合、時刻情報が挙げられる。この場合、クライアントアプリケーション101は、例えば監視カメラから映像データを取得し、各映像データに付与された時刻情報に基づき優先度を設定する。優先度は、例えば制御情報としてパケットに付与される。
エクスポート処理部125は、データ処理部の一例であり、バンドルバッファ122から、中継経路判定部124に指示されたバンドルを取得してエクスポートバッファ127に格納する。これにより、バンドルバッファ122内の低優先データはエクスポートバッファ127に移動する。
エクスポートバッファ127は、USBの通信インターフェースに対応する格納領域の一例である。エクスポートバッファ127内の低優先データは、USB−IF18の制御に従って例えば記憶媒体9に書き込まれ、中継経路Rbを経由してサーバ2に中継される。
このように、エクスポート処理部125は、低優先データを高優先データとは異なる通信インターフェースに対応する格納領域に格納する。このため、端末1は、低優先データを高優先データとは別の通信インターフェースにより中継することができる。なお、中継経路Rbは、記憶媒体9による経路に限定されず、例えば近距離無線通信(NFC: Near Field Radio Communication)による中継経路であってもよい。この場合、USB−IF18,26は、NFCに対応する通信デバイスに接続される。
エクスポート処理部125は、低優先データをエクスポートバッファ127に格納するとき、低優先データに該当する送信イベント情報をイベントリスト126から削除する。エクスポート処理部125は、送信イベント情報を格納対象の低優先データに付与する。このため、送受信制御部114は、低優先データが高優先データとは別の中継経路Rbを経由して中継されるにも関わらず、疑似的にバンドルの送信を認識することができる。なお、送信イベント情報は、低優先データの中継処理に関する情報の一例である。
サーバ2において、USB−IF26は、例えば記憶媒体9から低優先データを読み出してインポートバッファ227に書き込む。インポート処理部225は、例えば周期的にインポートバッファ227を監視し、その結果、インポートバッファ227に低優先データを検出した場合、インポートバッファ227から低優先データを読み出してバンドルバッファ222に書き込む。
このとき、インポート処理部225は、低優先データに該当する受信イベント情報をイベントリスト226の受信イベントキューに登録する。このため、送受信制御部214は、低優先データが高優先データとは別の中継経路Rbを経由して中継されたにも関わらず、疑似的にバンドルの受信を認識することができる。
このように、中継経路判定部124は、プロキシプロトコル機能部110によりクライアントアプリケーション101の新たなデータの受け付けに応じ、サーバ2に中継するデータ残量と、クライアントアプリケーション101から受け付けた各データの優先度に基づいて、各データの中継経路Ra,Rbを決定する。このため、端末1は、データを破棄せずにデータ送信の優先処理を行うことができる。なお、中継経路Ra,Rbは、途絶耐性ネットワークのプロトコルによる中継経路の一例である。
ここで、優先度は、クライアントアプリケーション101から受け付けた各データに付与された時刻情報に基づき設定されている場合、端末1は、時系列上で新しい映像データを優先してサーバ2に中継し、古い映像データを任意のタイミングでサーバ2に中継することができる。
中継経路判定部124は、プロキシプロトコル機能部110が新たなデータを受け付けたとき、そのデータの優先度と、そのデータより先に受け付けた未送信のデータ(以下、「先行データ」と表記)の優先度とを比較する。中継経路判定部124は、その比較結果に応じ、低優先データのエクスポート処理をエクスポート処理部125に指示する。
このため、エクスポート処理部125は、新たなデータが低優先データである場合、新たなデータに送信イベント情報を付与してエクスポートバッファ127に格納し、先行データが低優先データである場合、先行データに送信イベント情報を付与してエクスポートバッファ127に格納する。なお、先行データは、クライアントアプリケーション101から受け付けた複数のデータのうち、上記の新たなデータ以外の他のデータに該当する。
また、中継経路判定部124は、プロキシプロトコル機能部110が新たなデータを受け付けたとき、そのデータのバンドルのサイズに基づき中継経路を決定する。より具体的には、中継経路判定部124は、新たなデータのバンドルのサイズを所定値と比較し、バンドルのサイズが所定値以上である場合、そのデータのエクスポート処理をエクスポート処理部125に指示する。エクスポート処理部125は、新たなデータに送信イベント情報を付与してエクスポートバッファ127に格納する。
このため、サイズの大きなデータは、任意のタイミングでエクスポートバッファ127から中継経路Rbを経由してサーバ2に中継され、サイズの小さなデータは、バンドルバッファ122から中継経路Raを経由してサーバ2に中継される。したがって、端末1は、サイズの小さなデータをサイズの大きなデータより優先して送信できるため、サイズの小さなデータの送信がサイズの大きなデータの送信のために遅延することが抑制される。
次に、端末1及びサーバ2の各処理について述べる。
図7は、クライアントアプリケーション101のデータ送信処理の一例を示すフローチャートである。端末1のプロキシ制御部111は、符号G1で示されるような初期設定ファイル117を読み出す(ステップSt1)。初期設定ファイル117には、「TCP_PROXY_CLIENT」として、端末1のEID「dtn://node1」と、通信先のサーバアプリケーション201宛てのパケットをTCPで受信するためのポート番号「8001」が書き込まれている。
次に、プロキシ制御部111は、クライアントアプリケーション101からサーバアプリケーション201宛のパケットを受信するためのソケットを送受信制御部114に生成する(ステップSt2)。ソケットには、上記のポート番号「8001」、またはループバックIPアドレス「127.0.0.1」が設定される。クライアントアプリケーション101は、サーバアプリケーション201のソケットに代えて、送受信制御部114が生成したソケットにパケットを送信する。このとき、パケットの宛先IPアドレス及びポート番号は、所定の設定またはアドレス変換部113により変換される。
次に、送受信制御部114は、ソケットでのパケットの受信の有無を判定する(ステップSt3)。送受信制御部114は、パケットが受信されていない場合(ステップSt3のNo)、再度、ステップSt3の判定処理を実行する。
プロキシ制御部111は、パケットが受信された場合(ステップSt3のYes)、パケットの送信元ポート番号が新規であるか否かを判定する(ステップSt4)。つまり、プロキシ制御部111は、クライアントアプリケーション101のポート番号が変更され、新たなチャネルが確立されたか否かを判定する。なお、送受信制御部114は、ソケットでパケットが受信されると、クライアントアプリケーション101からの通信の完了を検出し、受信したパケットのデータを、メモリなどを介してプロキシ制御部111に出力する。
プロキシ制御部111は、送信元ポート番号が新規である場合(ステップSt4のYes)、コネクションリスト116に新たなコネクション番号と、そのコネクション番号に対応するソケットチャネルID及び宛先EIDを登録する(ステップSt9)。また、プロキシ制御部111は、送信元ポート番号が新規ではない場合(ステップSt4のNo)、ステップSt9の処理を実行しない。
次に、送受信制御部114は、パケットのデータに該当する送信イベント情報をイベントリスト126の送信イベントキューに登録する(ステップSt4a)。
次に、プロキシ制御部111は、符号G2で示されるようなプロキシメッセージを生成する(ステップSt5)。プロキシメッセージには、コネクション番号及びペイロードが含まれる。プロキシ制御部111は、ペイロードにパケットのデータを収容し、コネクションリスト116から検索したコネクション番号を付与することにより、プロキシメッセージを生成する。プロキシメッセージは、バンドルAPIによりバンドル制御部120に出力される。
次に、応答制御部115は、送信対象のパケットに対する応答の要否を判定する(ステップSt6)。応答制御部115は、TCPのACKではなく、アプリケーションレベルでの通信の継続に必要な応答の有無を判定する。
応答制御部115は、応答が必要である場合(ステップSt6のYes)、所定のアルゴリズムに基づき、サーバアプリケーション201の代わりに応答データを生成してクライアントアプリケーション101に送信する(ステップSt7)。つまり、応答制御部115は、クライアントアプリケーション101に通信の完了を通知する。また、応答制御部115は、応答が不要である場合(ステップSt6のNo)、応答データを生成しない。
次に、プロキシ制御部111は、バンドルAPIによりバンドル制御部120にバンドルの送信を要求する(ステップSt8)。バンドル制御部120は、プロキシメッセージからバンドルを生成して送信する。これにより、バンドル制御部120,220は、クライアントアプリケーション101及びサーバアプリケーション201から通信先への通信を途絶耐性ネットワークのプロトコルに基づいて行う。このようにして、クライアントアプリケーション101のデータ送信処理は実行される。
図8は、バンドルの送信処理の一例を示すフローチャートである。バンドル制御部120は、プロキシ制御部111からバンドルの送信を要求されると、経路TBL123を読み出す(ステップSt11)。次に、バンドル制御部120は、経路TBL123に基づき、宛先IPアドレス及びポート番号に対応する宛先EIDのバンドルを生成する(ステップSt12)。
次に、中継経路判定部124は、新たに生成されたバンドル(以下、「新たなバンドル」と表記)のサイズを所定値Sthと比較する(ステップSt13)。中継経路判定部124は、新たなバンドルのサイズが所定値Sth以上である場合(ステップSt13のNo)、そのバンドルのエクスポート処理をエクスポート処理部125に指示し(ステップSt20c)、処理を終了する。このため、エクスポート処理は、新たなバンドルのサイズが所定値Sth以上である場合に実行される。ここで、所定値Sthは、例えばサーバ2に中継するときのバンドルの遅延の許容量に応じて予め設定される。なお、新たなバンドルは上記の新たなデータに該当する。
このように、中継経路判定部124は、プロキシプロトコル機能部110による新たなデータの受け付けに応じ、そのデータのバンドルのサイズに基づき中継経路Ra,Rbを決定する。したがって、端末1は、上述したように、サイズの小さなデータをサイズの大きなデータより優先して送信できるため、サイズの小さなデータの送信がサイズの大きなデータの送信のために遅延することが抑制される。
新たなバンドルのサイズが所定値Sthより小さい場合(ステップSt13のYes)、バンドル制御部120は、宛先EIDに応じた通信先とのコネクションが確立状態であるか否かを判定する(ステップSt14)。バンドル制御部120は、コネクションが確立状態である場合(ステップSt14のYes)、バンドルを送信する(ステップSt15)。次に、バンドル制御部120は、送信イベント情報をイベントリスト126の送信イベントキューから削除して(ステップSt16)、処理を終了する。
また、バンドル制御部120は、コネクションが確立状態でない場合(ステップSt14のNo)、バンドルをバンドルバッファ122に格納する(ステップSt17)。次に、中継経路判定部124は、バンドルバッファ122のバンドルのデータ残量を所定量Bthと比較する(ステップSt18)。データ残量が所定量Bth以下である場合(ステップSt18のNo)、バンドル制御部120は、宛先EIDに応じた通信先とのコネクションが確立状態であるか否かを判定する(ステップSt19)。
ここで、所定量Bthは、例えばサーバ2に中継するときのバンドルの遅延の許容量に応じて予め設定される。このため、エクスポート処理は、バンドルバッファ122のデータ残量、つまり格納量が所定量Bthより多い場合に実行される。したがって、バンドルの遅延が問題となる場合、バンドルは、エクスポートバッファ127に格納され、中継経路Rbを経由してサーバ2に中継される。なお、本例では所定量Bthを0とするが、これに限定されない。
バンドル制御部120は、コネクションが確立状態である場合(ステップSt19のYes)、バンドルを送信する(ステップSt15)。また、バンドル制御部120は、コネクションが確立状態でない場合(ステップSt19のNo)、再びステップSt19の処理を実行する。
中継経路判定部124は、データ残量が所定量Bthより大きい場合(ステップSt18のYes)、新たなバンドルがバンドルバッファ122内の他のバンドルより優先度が高いか否かを判定する(ステップSt20)。中継経路判定部124は、新たなバンドルがバンドルバッファ122内の他のバンドルより優先度が低い場合(ステップSt20のNo)、新たなバンドルのエクスポート処理をエクスポート処理部125に指示し(ステップSt20b)、処理を終了する。
また、中継経路判定部124は、新たなバンドルがバンドルバッファ122内の他のバンドルより優先度が高い場合(ステップSt20のYes)、他のバンドルのエクスポート処理をエクスポート処理部125に指示する(ステップSt20a)。その後、ステップSt19の処理が実行される。このようにして、バンドルの送信処理は実行される。
図9は、バンドルのエクスポート処理の一例を示すフローチャートである。本処理は、エクスポート処理部125が、上記のステップSt20a〜20cにおいて、中継経路判定部124からの指示に従って実行する処理である。なお、本処理の説明では、新たなバンドル及び他のバンドルを単に「バンドル」と記載する。
エクスポート処理部125は、バンドルバッファ122から、中継経路判定部124に指示されたバンドルを読み出す(ステップSt61)。次に、エクスポート処理部125は、送信イベント情報をイベントリスト126の送信イベントキューから取得する(ステップSt62)。次に、エクスポート処理部125は、符号G3で示されるように、送信イベント情報をバンドルに付与する(ステップSt63)。
次に、エクスポート処理部125は、送信イベント情報が付与されたバンドルをエクスポートバッファ127に格納する(ステップSt64)。これにより、バンドルは中継経路Rbを経由してサーバ2に中継される。
次に、エクスポート処理部125は、送信イベント情報をイベントリスト126の送信イベントキューから削除する(ステップSt65)。これにより、送受信制御部114は、疑似的にバンドル送信の完了を認識する。このようにして、エクスポート処理は実行される。
ステップSt20aについて、エクスポート処理部125は、バンドルバッファ122内のデータ残量が所定量Bthより多い場合、新たなバンドルの優先度が他のバンドルの優先度より高いとき、他のバンドルをエクスポートバッファ127に格納する。このため、端末1は、新たなバンドルを他のバンドルより優先してサーバ2に中継することができ、他のバンドルを新たなバンドルとは異なる中継経路Rbにより任意のタイミングでサーバ2に中継することができる。
また、ステップSt20aについて、エクスポート処理部125は、バンドルバッファ122内のデータ残量が所定量Bthより多い場合、新たなバンドルの優先度が他のバンドルの優先度より高いとき、他のバンドルに送信イベント情報を付与する。このため、端末1は、他のバンドルをバンドルプロトコルにより疑似的に送信することができる。
ステップSt20bについて、エクスポート処理部125は、バンドルバッファ122内のデータ残量が所定量Bthより多い場合、新たなバンドルの優先度が他のバンドルの優先度より低いとき、新たなバンドルをエクスポートバッファ127に格納する。このため、端末1は、他のバンドルを新しいバンドルより優先してサーバ2に中継することができ、新しいバンドルを他のバンドルとは異なる中継経路Rbにより任意のタイミングでサーバ2に中継することができる。
また、ステップSt20cについて、エクスポート処理部125は、バンドルのサイズが所定値Sth以上である場合、新たなバンドルをエクスポートバッファ127に格納する。このため、端末1は、サイズの小さいバンドルをサイズの大きなバンドルより優先してサーバ2に中継することができ、サイズの大きいバンドルをサイズの小さなバンドルとは異なる中継経路Rbにより任意のタイミングでサーバ2に中継することができる。
図10は、バンドルの受信処理の一例を示すフローチャートである。本処理は、サーバ2において実行される。
プロキシ制御部211は、符号G4で示されるような初期設定ファイル217を読み出す(ステップSt21)。初期設定ファイル217には、「COM_EID」として、サーバ2のEID「dtn://node1」が記録され、「TCP_PROXY_REGISTRATION」として、サーバ2の受信データの出力ポインタ「data/receive」が記録され、「TCP_PROXY_SERVER」として、サーバ2のIPアドレス「192.168.1.1」及びポート番号「8001」が記録されている。
次に、プロキシ制御部211は、バンドル制御部220に対して端末1のクライアントアプリケーション101からバンドルを受信できるように、バンドルAPIによりEID及び出力ポインタを登録する(ステップSt22)。このとき、プロキシ制御部211は、初期設定ファイル217の「COM_EID」及び「TCP_PROXY_REGISTRATION」でそれぞれ指定されたEID及び出力ポインタを登録する。これにより、バンドル制御部220は、バンドルを受信したとき、出力ポインタ「data/receive」の指定ディレクトリにバンドルを出力する。
次に、バンドル制御部220は、バンドルの受信の有無を判定する(ステップSt23)。バンドル制御部220は、バンドルを受信していない場合(ステップSt23のNo)、再びステップSt23の処理を実行する。また、バンドル制御部220は、バンドルを受信した場合(ステップSt23のYes)、ステップSt22で登録済みのEIDとバンドルの宛先EIDが一致するか否かを判定する(ステップSt24)。
バンドル制御部220は、登録済みのEIDとバンドルの宛先EIDが不一致である場合(ステップSt24のNo)、自装置宛てのバンドルではないため、バンドルを廃棄して処理を終了する。バンドル制御部220は、登録済みのEIDとバンドルの宛先EIDが一致する場合(ステップSt24のYes)、バンドルに該当する受信イベント情報をイベントリスト226の受信イベントキューに登録する(ステップSt24a)。次に、バンドル制御部220は、バンドルのペイロードからパケットのデータを取得してプロキシメッセージを生成して、出力ポインタの指定ディレクトリに出力する(ステップSt25)。
次に、プロキシ制御部211は、出力ポインタの指定ディレクトリを参照して、プロキシメッセージを取得する(ステップSt26)。次に、プロキシ制御部211は、プロキシメッセージのコネクション番号がコネクションリスト116に登録済みであるか否かを判定する(ステップSt27)。
プロキシ制御部211は、コネクション番号が未登録である場合(ステップSt27のNo)、送受信制御部214に対し、初期設定ファイル217の「TCP_PROXY_SERVER」で指定されたIPアドレス及びポート番号のソケットのオープンを指示する(ステップSt28)。また、プロキシ制御部211は、コネクション番号が登録済みである場合(ステップSt27のYes)、プロキシメッセージのペイロードにパケットのデータが収容されているか否かを判定する(ステップSt30)。
プロキシ制御部211は、パケットのデータが収容されている場合(ステップSt30のYes)、該当するソケットにデータを送信する(ステップSt29)。次に、送受信制御部214は、データに該当する受信イベント情報をイベントリスト226の受信イベントキューから削除して(ステップSt29a)、処理を終了する。
また、プロキシ制御部211は、パケットのデータが収容されていない場合(ステップSt30のNo)、送受信制御部114に対し、該当するソケットのクローズを指示する(ステップSt31)。このようにして、バンドルの受信処理は実行される。
図11は、バンドルのインポート処理の一例を示すフローチャートである。図11において、図10と共通する処理には同一の符号を付し、その説明は省略する。
インポート処理部225は、インポートバッファ227内のバンドルの有無を判定する(ステップSt51)。インポート処理部225は、バンドルが無い場合(ステップSt51のNo)、再びステップSt51の処理を実行する。
インポート処理部225は、バンドルが有る場合(ステップSt51のYes)、インポートバッファ227からバンドルを読み出す(ステップSt52)。次に、インポート処理部225は、符号G5で示されるように、バンドルから送信イベント情報を分離して取得する(ステップSt53)。次に、インポート処理部225は、送信イベント情報から受信イベント情報を生成する(ステップSt54)。なお、受信イベント情報は、図5に示されるように、送信イベント情報と同じ構成である。
次に、インポート処理部225は、インポートバッファ227から読み出したバンドルをバンドルバッファ222に格納する(ステップSt55)。次に、インポート処理部225は、受信イベント情報をイベントリスト226の受信イベントキューに登録する(ステップSt56)。このため、サーバ2は、端末1から中継経路Rbを介して疑似的にバンドルを受信することができる。
その後、ステップSt25〜St29aの処理が実行される。これにより、インポート処理されたバンドルは、中継経路Raを経由して受信されたバンドルと同様にサーバアプリケーション201に出力される。このようにして、バンドルのインポート処理は実行される。
図12は、バンドルプロトコルの適用の切り替え処理の一例を示すフローチャートである。コネクション監視部112,212は、通信先とのコネクションの接続の有無を検出する(ステップSt41)。
バンドル制御部120,220は、経路TBL123,223に設定された宛先IPアドレス及びポート番号に基づき、該当する通信先とのリンクのアップ・ダウンや、キープアライブ(keep alive)機能により通信の状態を検出する。コネクション監視部112,212は、バンドル制御部120,220の検出結果を取得し、またはバンドルAPIによる制御などによりコネクションの状態を検出する。
コネクション監視部112,212は、コネクションが接続されている場合(ステップSt41のYes)、バンドルバッファ122,222に送信待ちのバンドルが格納されているか否かを判定する(ステップSt42)。コネクション監視部112,212は、格納済みのバンドルがない場合(ステップSt42のNo)、再びステップSt41の処理を実行する。
また、コネクション監視部112,212は、格納済みのバンドルがある場合(ステップSt42のYes)、フィルタTBL118,218の設定状態を参照することによりアドレス変換部113,213に対する変換情報の設定の有無を判定する(ステップSt43)。コネクション監視部112,212は、変換情報の設定がない場合(ステップSt43のNo)、処理を終了する。また、コネクション監視部112,212は、変換情報の設定が有る場合(ステップSt43のYes)、変換情報を削除する(ステップSt44)。
これにより、TCP処理部102,202から送受信制御部114,214のソケットに対するパケットの転送が停止する。したがって、クライアントアプリケーション101及びサーバアプリケーション201の間の通信に対してバンドルプロトコルの適用が停止されるため、プロキシプロトコル機能部110,210を介さない直接的なTCP/IPの通信が行われる。
一方、コネクション監視部112,212は、コネクションが切断されている場合(ステップSt41のNo)、フィルタTBL118,218の設定状態を参照することによりアドレス変換部113,213に対する変換情報の設定の有無を判定する(ステップSt45)。コネクション監視部112,212は、変換情報の設定が有る場合(ステップSt45のYes)、処理を終了する。また、コネクション監視部112,212は、変換情報の設定がない場合(ステップSt45のNo)、変換情報を設定する(ステップSt46)。
これにより、TCP処理部102,202から送受信制御部114,214のソケットに対するパケットの転送が開始される。したがって、クライアントアプリケーション101及びサーバアプリケーション201の間の通信に対してバンドルプロトコルの適用が開始されるため、プロキシプロトコル機能部110,210を介した通信が行われる。
このように、コネクション監視部112,212は、通信先とのコネクションの状態を検出し、そのコネクションの状態に応じて、クライアントアプリケーション101及びサーバアプリケーション201の間の通信に対するバンドルプロトコルの適用の可否を決定する。このため、バンドルプロトコルの適用が自動的に行われる。
次に、端末1からサーバ2への映像データの中継動作の例を説明する。
図13は、映像データの送信処理の比較例を示すシーケンス図である。本比較例では、監視カメラシステムにおいて、時刻t1の映像データ#1と、時刻t1より後の時刻t2の映像データ#2とがクライアントアプリケーション101からサーバアプリケーション201に送信され、エクスポート処理は実行されない。
端末1とサーバ2の間のコネクションが切断された後、端末1のクライアントアプリケーション101は、監視カメラから映像データ#1を受信する。プロキシプロトコル機能部110は、映像データ#1をクライアントアプリケーション101から受け付け、映像データ#1のバンドル(以下、「バンドル#1」と表記)の送信をバンドル制御部120に要求する。バンドル制御部120は、コネクションが切断されているため、バンドル#1をバンドルバッファ122に格納する。
次に、クライアントアプリケーション101は、監視カメラから映像データ#2を受信する。映像データ#2のバンドル(以下、「バンドル#2」と表記)は、映像データ#1と同様の処理によりバンドルバッファ122に格納される。その後、端末1とサーバ2のコネクションが再接続される。
コネクションが再接続されると、バンドル制御部120は、最初にバンドル#1をバンドルバッファ122から読み出してサーバ2に送信し、次にバンドル#2をバンドルバッファ122から読み出してサーバ2に送信する。
サーバ2のバンドル制御部220は、バンドル#1を受信するとバンドルバッファ122に格納し、プロキシメッセージに収容してプロキシプロトコル機能部210に出力する。プロキシプロトコル機能部210は、プロキシメッセージから映像データ#1を取得してサーバアプリケーション201に送信する。
次にバンドル制御部220は、バンドル#2を受信してバンドルバッファ222に格納する。プロキシプロトコル機能部210は、バンドル#1と同様にプロキシメッセージから映像データ#2を取得してサーバアプリケーション201に送信する。
このように、サーバアプリケーション201は、時刻の早いほうの映像データ#1を映像データ#2より先に受信する。このため、サーバ2において新しい映像(つまり映像データ#2)の確認が遅れるため、監視に支障を生ずるおそれがある。
これに対し、実施例の端末1は、上述したエクスポート処理を実行することによって、時刻の早い映像データを時刻の遅い映像データとは異なる中継経路Rbでサーバ2に中継する。
図14は、コネクションが切断されていない場合の映像データの送信処理の一例を示すシーケンス図である。映像データ#1〜#3は、この順に監視カメラからクライアントアプリケーション101に入力される。
映像データ#1〜#3には、その映像が生成された時刻を示す時刻情報が付与されている。映像データ#1の時刻情報は「0:00」を示し、映像データ#2の時刻情報は「0:10」を示し、映像データ#3の時刻情報は「0:20」を示す。
クライアントアプリケーション101は、時刻情報の順に従い映像データ#1〜#3に優先度を設定する。このため、映像データ#1には優先度「0」が設定され、映像データ#2には優先度「1」が設定され、映像データ#3には優先度「2」が設定される。
端末1とサーバ2の間のコネクションは切断されていないため、クライアントアプリケーション101は、バンドルプロトコルを用いずに、TCP/IPにより映像データ#1〜#3をこの順にサーバアプリケーション201に送信する。
図15は、コネクションが切断された場合の映像データの送信処理の一例を示すシーケンス図である。本例において、端末1とサーバ2の間のコネクションは、時刻「0:09」に切断され、時刻「0:15」に再接続される。なお、以降の例において、映像データ#1〜#3を収容するバンドル#1〜#3のサイズは、所定値Sthより小さいと仮定する。
クライアントアプリケーション101は、映像データ#1の受信時、端末1とサーバ2の間のコネクションは切断されていないため、バンドルプロトコルを用いずに、TCP/IPにより映像データ#1をサーバアプリケーション201に送信する。クライアントアプリケーション101は、コネクションの切断後、監視カメラから映像データ#2を受信する。バンドル制御部120は、ステップSt17の処理により、映像データ#2を収容したバンドル#2をバンドルバッファ122に格納する。
クライアントアプリケーション101は、コネクションが再接続された後に監視カメラから映像データ#3を受信し、バンドルプロトコルを用いずに、TCP/IPにより映像データ#3をサーバアプリケーション201に送信する。次に、バンドル制御部120は、コネクションが確立状態であるため(ステップSt19のYes)、バンドルバッファ122からバンドル#2を読み出してサーバ2に送信する(ステップSt15)。バンドル#2はサーバ2のバンドルバッファ222に格納され、サーバアプリケーション201は、バンドル#2から映像データ#2を取得する。
本例において、映像データ#1〜#3のうち、映像データ#2だけがバンドルバッファ122に格納されるため、エクスポート処理は実行されない。
図16は、コネクションが切断された場合の映像データの送信処理の他の例を示すシーケンス図である。本例において、端末1とサーバ2の間のコネクションは、時刻「0:09」に切断され、時刻「0:25」に再接続される。
クライアントアプリケーション101は、映像データ#1の受信時、端末1とサーバ2の間のコネクションは切断されていないため、バンドルプロトコルを用いずに、TCP/IPにより映像データ#1をサーバアプリケーション201に送信する。クライアントアプリケーション101は、コネクションの切断後、監視カメラから映像データ#2を受信する。バンドル制御部120は、ステップSt17の処理により、映像データ#2を収容したバンドル#2をバンドルバッファ122に格納する。
次に、クライアントアプリケーション101は、監視カメラから映像データ#3を受信する。バンドル制御部120は、ステップSt17の処理により、映像データ#3を収容したバンドル#3をバンドルバッファ122に格納する。
中継経路判定部124は、クライアントアプリケーション101から映像データ#3が受け付けられたとき、ステップSt20の処理により、映像データ#2と映像データ#3の各優先度を比較する。つまり、中継経路判定部124は、映像データ#3の受付時、バンドルバッファ122に格納されたバンドル#2及びバンドル#3について優先度の大小を判定する。
新しい映像データ#3の優先度「2」は、古い映像データ#2の優先度「1」より高いため、中継経路判定部124は、バンドル#3をバンドルバッファ122に格納したままとし、ステップSt20aの処理により、バンドル#2のエクスポート処理をエクスポート処理部125に指示する。エクスポート処理部125は、指示されたバンドル#2をバンドルバッファ122から読み出して、ステップSt64の処理によりエクスポートバッファ127に格納する。
コネクションが再接続された後、バンドル制御部120は、バンドルバッファ122からバンドル#3を読み出してサーバ2に送信する。バンドル#3はサーバ2のバンドルバッファ222に格納され、サーバアプリケーション201は、バンドル#3から映像データ#3を取得する。
エクスポートバッファ127内のバンドル#2は、USB−IF18の制御により任意のタイミングで記憶媒体9に書き込まれる。そして、バンドル#2は、サーバ2のUSB−IF18の制御により任意のタイミングでインポートバッファ227に書き込まれる。インポート処理部225は、インポートバッファ227内のバンドル#2を検出すると、バンドル#2をバンドルバッファ222に格納する。サーバアプリケーション201は、バンドル#2から映像データ#2を取得する。
このように、端末1は、古い映像データ#2をエクスポート処理により中継経路Rbでサーバ2に中継し、新しい映像データ#3をバンドルプロトコルにより中継経路Raでサーバ2に中継する。これにより、端末1は、古い映像データ#2を破棄することなく、新しい映像データ#3を優先して送信することができる。
また、端末1は、サイズの大きいバンドルをエクスポート処理により中継経路Rbでサーバ2に中継し、サイズの小さいバンドルプロトコルにより中継経路Raでサーバ2に中継する。
図17は、サイズが異なるデータの送信処理の比較例を示すシーケンス図である。本例において、クライアントアプリケーション101は、1(GByte)のデータ#1と100(MByte)のデータ#2をサーバ2に送信する。また、比較例のバンドル制御部120は、バンドルのサイズの判定処理(ステップSt13)を実行しない。なお、データ#1はバンドル#1に収容され、データ#2はバンドル#2に収容される。
端末1とサーバ2の間のコネクションの切断後、クライアントアプリケーション101は、データ#1をプロキシプロトコル機能部110に出力する。バンドル制御部120は、プロキシプロトコル機能部110のプロキシメッセージからデータ#1を取得してバンドル#1を生成し、バンドルバッファ122に格納する。
次に、クライアントアプリケーション101は、データ#2をプロキシプロトコル機能部110に出力する。バンドル制御部120は、プロキシプロトコル機能部110のプロキシメッセージからデータ#2を取得してバンドル#2を生成し、バンドルバッファ122に格納する。
コネクションの再接続後、バンドル制御部120は、バンドルバッファ122からバンドル#1を読み出してサーバ2に送信する。バンドル#1はサーバ2のバンドルバッファ222に格納され、サーバアプリケーション201は、バンドル#1からデータ#1を取得する。
次に、バンドル制御部120は、バンドルバッファ122からバンドル#2を読み出してサーバ2に送信する。バンドル#2はサーバ2のバンドルバッファ222に格納され、サーバアプリケーション201は、バンドル#2からデータ#2を取得する。
このように、端末1は、サイズの大きいデータ#1をサイズの小さいデータ#2より先にサーバ2に送信する。サイズの小さなデータ#2の送信がサイズの大きなデータ#1の送信のために遅延するおそれがある。
そこで、中継経路判定部124は、クライアントアプリケーション101からデータ#1,#2が受け付けられたとき、データ#1,#2のサイズに基づきその中継経路Ra,Rbを決定する。より具体的には、中継経路判定部124は、バンドル#1,#2のサイズを所定値Sthと比較し、その比較結果に基づきその中継経路Ra,Rbを決定する。
図18は、サイズが異なるデータの送信処理の一例を示すシーケンス図である。本例において、クライアントアプリケーション101は、上記の比較例と同様にデータ#1及びデータ#2をプロキシプロトコル機能部110に出力する。なお、所定値Sthは、一例として500(MByte)であると仮定する。
中継経路判定部124は、バンドル#1のサイズである1(GByte)がSth以上であるため、エクスポート処理部125にバンドル#1のエクスポート処理を指示する。エクスポート処理部125は、バンドルバッファ122からバンドル#1を読み出してエクスポートバッファ127に格納する。バンドル#1は、USB−IF18の制御により任意のタイミングで記憶媒体9に書き込まれ、サーバ2のUSB−IF26の制御により記憶媒体9からインポートバッファ227に書き込まれる。
インポート処理部225は、インポートバッファ227からバンドル#1を読み出してバンドルバッファ222に格納する。サーバアプリケーション201は、バンドル#1からデータ#1を取得する。
また、中継経路判定部124は、バンドル#2のサイズである100(MByte)がSthより小さいため、バンドル#2をバンドルバッファ122に格納したままにする。バンドル制御部120は、コネクションの再接続後、バンドルバッファ122からバンドル#2を読み出してサーバ2に送信する。バンドル#2はサーバ2のバンドルバッファ222に格納され、サーバアプリケーション201は、バンドル#2からデータ#2を取得する。
このように、端末1は、サイズの大きいデータ#1を、サイズの小さいデータ#2とは異なる中継経路Rbでサーバ2に中継する。このため、サイズの小さなデータ#2の送信がサイズの大きなデータ#1の送信のために遅延することが防止される。
なお、上記の処理機能は、コンピュータによって実現することができる。その場合、処理装置が有すべき機能の処理内容を記述したプログラムが提供される。そのプログラムをコンピュータで実行することにより、上記処理機能がコンピュータ上で実現される。処理内容を記述したプログラムは、コンピュータで読み取り可能な記録媒体(ただし、搬送波は除く)に記録しておくことができる。
プログラムを流通させる場合には、例えば、そのプログラムが記録されたDVD(Digital Versatile Disc)、CD−ROM(Compact Disc Read Only Memory)などの可搬型記録媒体の形態で販売される。また、プログラムをサーバコンピュータの記憶装置に格納しておき、ネットワークを介して、サーバコンピュータから他のコンピュータにそのプログラムを転送することもできる。
プログラムを実行するコンピュータは、例えば、可搬型記録媒体に記録されたプログラムもしくはサーバコンピュータから転送されたプログラムを、自己の記憶装置に格納する。そして、コンピュータは、自己の記憶装置からプログラムを読み取り、プログラムに従った処理を実行する。なお、コンピュータは、可搬型記録媒体から直接プログラムを読み取り、そのプログラムに従った処理を実行することもできる。また、コンピュータは、サーバコンピュータからプログラムが転送されるごとに、逐次、受け取ったプログラムに従った処理を実行することもできる。
上述した実施形態は本発明の好適な実施の例である。但し、これに限定されるものではなく、本発明の要旨を逸脱しない範囲内において種々変形実施可能である。
なお、以上の説明に関して更に以下の付記を開示する。
(付記1) アプリケーションからデータを受け付ける工程と、
前記アプリケーションの新たなデータの受け付けに応じ、通信先へ中継するデータ残量と、前記アプリケーションから受け付けた複数のデータの各々の優先度とに基づいて、前記複数のデータの各々の途絶耐性ネットワークのプロトコルによる中継経路を決定する工程とを、コンピュータが実行することを特徴とする中継通信方法。
(付記2) 前記優先度は、前記アプリケーションから受け付けた前記複数のデータの各々に付与された時刻情報に基づき設定されていることを特徴とする付記1に記載の中継通信方法。
(付記3) 前記データ残量が所定量より多い場合、前記アプリケーションから受け付けた前記複数のデータのうち、前記新たなデータの前記優先度が他のデータの前記優先度より高いとき、前記他のデータを前記新たなデータとは異なる通信インターフェースに対応する格納領域に格納する工程を、前記コンピュータが実行することを特徴とする付記1または2に記載の中継通信方法。
(付記4) 前記データ残量が前記所定量より多い場合、前記アプリケーションから受け付けた前記複数のデータのうち、前記新たなデータの前記優先度が前記他のデータの前記優先度より高いとき、前記他のデータに当該中継処理に関する情報を付与する工程を、前記コンピュータが実行することを特徴とする付記3に記載の中継通信方法。
(付記5) 前記データ残量が前記所定量より多い場合、前記アプリケーションから受け付けた前記複数のデータのうち、前記新たなデータの前記優先度が他のデータの前記優先度より低いとき、前記新たなデータを前記他のデータとは異なる通信インターフェースに対応する格納領域に格納する工程を、前記コンピュータが実行することを特徴とする付記1乃至4の何れかに記載の中継通信方法。
(付記6) 前記データ残量が前記所定量より多い場合、前記アプリケーションから受け付けた前記複数のデータのうち、前記新たなデータの前記優先度が前記他のデータの前記優先度より低いとき、前記新たなデータに当該中継処理に関する情報を付与する工程を、前記コンピュータが実行することを特徴とする付記5に記載の中継通信方法。
(付記7) 前記アプリケーションから前記新たなデータを受け付けたとき、前記新たなデータのサイズに基づき前記新たなデータの途絶耐性ネットワークのプロトコルによる中継経路を決定する工程を、前記コンピュータが実行することを特徴とする付記1乃至6の何れかに記載の中継通信方法。
(付記8) アプリケーションからデータを受け付け、
前記アプリケーションの新たなデータの受け付けに応じ、通信先へ中継するデータ残量と、前記アプリケーションから受け付けた複数のデータの各々の優先度とに基づいて、前記複数のデータの各々の途絶耐性ネットワークのプロトコルによる中継経路を決定する、処理を、コンピュータに実行させることを特徴とする中継通信プログラム。
(付記9) 前記優先度は、前記アプリケーションから受け付けた前記複数のデータの各々に付与された時刻情報に基づき設定されていることを特徴とする付記8に記載の中継通信プログラム。
(付記10) 前記データ残量が所定量より多い場合、前記アプリケーションから受け付けた前記複数のデータのうち、前記新たなデータの前記優先度が他のデータの前記優先度より高いとき、前記他のデータを前記新たなデータとは異なる通信インターフェースに対応する格納領域に格納する処理を、前記コンピュータに実行させることを特徴とする付記8または9に記載の中継通信プログラム。
(付記11) 前記データ残量が前記所定量より多い場合、前記アプリケーションから受け付けた前記複数のデータのうち、前記新たなデータの前記優先度が前記他のデータの前記優先度より高いとき、前記他のデータに当該中継処理に関する情報を付与する処理を、前記コンピュータに実行させることを特徴とする付記10に記載の中継通信プログラム。
(付記12) 前記データ残量が前記所定量より多い場合、前記アプリケーションから受け付けた前記複数のデータのうち、前記新たなデータの前記優先度が他のデータの前記優先度より低いとき、前記新たなデータを前記他のデータとは異なる通信インターフェースに対応する格納領域に格納する処理を、前記コンピュータに実行させることを特徴とする付記8乃至11の何れかに記載の中継通信プログラム。
(付記13) 前記データ残量が前記所定量より多い場合、前記アプリケーションから受け付けた前記複数のデータのうち、前記新たなデータの前記優先度が前記他のデータの前記優先度より低いとき、前記新たなデータに当該中継処理に関する情報を付与する処理を、前記コンピュータに実行させることを特徴とする付記12に記載の中継通信プログラム。
(付記14) 前記アプリケーションから前記新たなデータを受け付けたとき、前記新たなデータのサイズに基づき前記新たなデータの途絶耐性ネットワークのプロトコルによる中継経路を決定する処理を、前記コンピュータに実行させることを特徴とする付記8乃至13の何れかに記載の中継通信プログラム。
(付記15) アプリケーションからデータを受け付ける受付部と、
前記アプリケーションの新たなデータの受け付けに応じ、通信先へ中継するデータ残量と、前記アプリケーションから受け付けた複数のデータの各々の優先度とに基づいて、前記複数のデータの各々の途絶耐性ネットワークのプロトコルによる中継経路を決定する決定部とを有することを特徴とする中継通信装置。
(付記16) 前記優先度は、前記アプリケーションから受け付けた前記複数のデータの各々に付与された時刻情報に基づき設定されていることを特徴とする付記15に記載の中継通信装置。
(付記17) 前記データ残量が所定量より多い場合、前記アプリケーションから受け付けた前記複数のデータのうち、前記新たなデータの前記優先度が他のデータの前記優先度より高いとき、前記他のデータを前記新たなデータとは異なる通信インターフェースに対応する格納領域に格納するデータ処理部を有することを特徴とする付記15または16に記載の中継通信装置。
(付記18) 前記データ処理部は、前記データ残量が前記所定量より多い場合、前記アプリケーションから受け付けた前記複数のデータのうち、前記新たなデータの前記優先度が前記他のデータの前記優先度より高いとき、前記他のデータに当該中継処理に関する情報を付与することを特徴とする付記17に記載の中継通信装置。
(付記19) 前記データ処理部は、前記データ残量が前記所定量より多い場合、前記アプリケーションから受け付けた前記複数のデータのうち、前記新たなデータの前記優先度が他のデータの前記優先度より低いとき、前記新たなデータを前記他のデータとは異なる通信インターフェースに対応する格納領域に格納するデータ処理部を有することを特徴とする付記17または18に記載の中継通信装置。
(付記20) 前記データ処理部は、前記データ残量が前記所定量より多い場合、前記アプリケーションから受け付けた前記複数のデータのうち、前記新たなデータの前記優先度が前記他のデータの前記優先度より低いとき、前記新たなデータに当該中継処理に関する情報を付与することを特徴とする付記19に記載の中継通信装置。
(付記21) 前記決定部は、前記アプリケーションの前記新たなデータを受け付けに応じ、前記新たなデータのサイズに基づき前記新たなデータの途絶耐性ネットワークのプロトコルによる中継経路を決定することを特徴とする付記15乃至20の何れかに記載の中継通信装置。
1 端末
2 サーバ
110,210 プロキシプロトコル機能部
124 中継経路決定部
125 エクスポート処理部
126,226 イベントリスト
127 エクスポートバッファ
225 インポート処理部
227 インポートバッファ

Claims (9)

  1. アプリケーションからデータを受け付ける工程と、
    前記アプリケーションの新たなデータの受け付けに応じ、通信先へ中継するデータ残量と、前記アプリケーションから受け付けた複数のデータの各々の優先度とに基づいて、前記複数のデータの各々途絶耐性ネットワークのプロトコルにより同一の通信先に中継する中継経路をデータごとに決定する工程とを、コンピュータが実行することを特徴とする中継通信方法。
  2. 前記優先度は、前記アプリケーションから受け付けた前記複数のデータの各々に付与された時刻情報に基づき設定されていることを特徴とする請求項1に記載の中継通信方法。
  3. 前記データ残量が所定量より多い場合、前記アプリケーションから受け付けた前記複数のデータのうち、前記新たなデータの前記優先度が他のデータの前記優先度より高いとき、前記他のデータを前記新たなデータとは異なる通信インターフェースに対応する格納領域に格納する工程を、前記コンピュータが実行することを特徴とする請求項1または2に記載の中継通信方法。
  4. 前記データ残量が前記所定量より多い場合、前記アプリケーションから受け付けた前記複数のデータのうち、前記新たなデータの前記優先度が前記他のデータの前記優先度より高いとき、前記他のデータに当該中継処理に関する情報を付与する工程を、前記コンピュータが実行することを特徴とする請求項3に記載の中継通信方法。
  5. 前記データ残量が所定量より多い場合、前記アプリケーションから受け付けた前記複数のデータのうち、前記新たなデータの前記優先度が他のデータの前記優先度より低いとき、前記新たなデータを前記他のデータとは異なる通信インターフェースに対応する格納領域に格納する工程を、前記コンピュータが実行することを特徴とする請求項1または2に記載の中継通信方法。
  6. 前記データ残量が前記所定量より多い場合、前記アプリケーションから受け付けた前記複数のデータのうち、前記新たなデータの前記優先度が前記他のデータの前記優先度より低いとき、前記新たなデータに当該中継処理に関する情報を付与する工程を、前記コンピュータが実行することを特徴とする請求項5に記載の中継通信方法。
  7. 前記アプリケーションの前記新たなデータの受け付けに応じ、前記新たなデータのサイズに基づき前記新たなデータの途絶耐性ネットワークのプロトコルによる中継経路を決定する工程を、前記コンピュータが実行することを特徴とする請求項1乃至6の何れかに記載の中継通信方法。
  8. アプリケーションからデータを受け付け、
    前記アプリケーションの新たなデータの受け付けに応じ、通信先へ中継するデータ残量と、前記アプリケーションから受け付けた複数のデータの各々の優先度とに基づいて、前記複数のデータの各々途絶耐性ネットワークのプロトコルにより同一の通信先に中継する中継経路をデータごとに決定する、処理を、コンピュータに実行させることを特徴とする中継通信プログラム。
  9. アプリケーションからデータを受け付ける受付部と、
    前記アプリケーションの新たなデータの受け付けに応じ、通信先へ中継するデータ残量と、前記アプリケーションから受け付けた複数のデータの各々の優先度とに基づいて、前記複数のデータの各々途絶耐性ネットワークのプロトコルにより同一の通信先に中継する中継経路をデータごとに決定する決定部とを有することを特徴とする中継通信装置。
JP2017062657A 2017-03-28 2017-03-28 中継通信方法、中継通信プログラム、及び中継通信装置 Active JP6859795B2 (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP2017062657A JP6859795B2 (ja) 2017-03-28 2017-03-28 中継通信方法、中継通信プログラム、及び中継通信装置
US15/925,160 US11082281B2 (en) 2017-03-28 2018-03-19 Relay communication method and relay communication device

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2017062657A JP6859795B2 (ja) 2017-03-28 2017-03-28 中継通信方法、中継通信プログラム、及び中継通信装置

Publications (2)

Publication Number Publication Date
JP2018166258A JP2018166258A (ja) 2018-10-25
JP6859795B2 true JP6859795B2 (ja) 2021-04-14

Family

ID=63672634

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2017062657A Active JP6859795B2 (ja) 2017-03-28 2017-03-28 中継通信方法、中継通信プログラム、及び中継通信装置

Country Status (2)

Country Link
US (1) US11082281B2 (ja)
JP (1) JP6859795B2 (ja)

Families Citing this family (33)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10810222B2 (en) 2014-11-24 2020-10-20 Asana, Inc. Continuously scrollable calendar user interface
US10977434B2 (en) 2017-07-11 2021-04-13 Asana, Inc. Database model which provides management of custom fields and methods and apparatus therfor
US10623359B1 (en) 2018-02-28 2020-04-14 Asana, Inc. Systems and methods for generating tasks based on chat sessions between users of a collaboration environment
US11138021B1 (en) 2018-04-02 2021-10-05 Asana, Inc. Systems and methods to facilitate task-specific workspaces for a collaboration work management platform
US10613735B1 (en) 2018-04-04 2020-04-07 Asana, Inc. Systems and methods for preloading an amount of content based on user scrolling
US10785046B1 (en) 2018-06-08 2020-09-22 Asana, Inc. Systems and methods for providing a collaboration work management platform that facilitates differentiation between users in an overarching group and one or more subsets of individual users
EP3848117A4 (en) 2018-09-05 2022-06-08 Sumitomo Electric Industries, Ltd. CHROMIUM ADSORBENT AND FUEL CELL
US10616151B1 (en) 2018-10-17 2020-04-07 Asana, Inc. Systems and methods for generating and presenting graphical user interfaces
US10956845B1 (en) 2018-12-06 2021-03-23 Asana, Inc. Systems and methods for generating prioritization models and predicting workflow prioritizations
US11113667B1 (en) 2018-12-18 2021-09-07 Asana, Inc. Systems and methods for providing a dashboard for a collaboration work management platform
US11782737B2 (en) 2019-01-08 2023-10-10 Asana, Inc. Systems and methods for determining and presenting a graphical user interface including template metrics
US10684870B1 (en) 2019-01-08 2020-06-16 Asana, Inc. Systems and methods for determining and presenting a graphical user interface including template metrics
US11204683B1 (en) 2019-01-09 2021-12-21 Asana, Inc. Systems and methods for generating and tracking hardcoded communications in a collaboration management platform
US11783253B1 (en) 2020-02-11 2023-10-10 Asana, Inc. Systems and methods to effectuate sets of automated actions outside and/or within a collaboration environment based on trigger events occurring outside and/or within the collaboration environment
US11599855B1 (en) 2020-02-14 2023-03-07 Asana, Inc. Systems and methods to attribute automated actions within a collaboration environment
US11763259B1 (en) 2020-02-20 2023-09-19 Asana, Inc. Systems and methods to generate units of work in a collaboration environment
US11900323B1 (en) 2020-06-29 2024-02-13 Asana, Inc. Systems and methods to generate units of work within a collaboration environment based on video dictation
US11455601B1 (en) 2020-06-29 2022-09-27 Asana, Inc. Systems and methods to measure and visualize workload for completing individual units of work
US11449836B1 (en) 2020-07-21 2022-09-20 Asana, Inc. Systems and methods to facilitate user engagement with units of work assigned within a collaboration environment
US11568339B2 (en) 2020-08-18 2023-01-31 Asana, Inc. Systems and methods to characterize units of work based on business objectives
US11769115B1 (en) 2020-11-23 2023-09-26 Asana, Inc. Systems and methods to provide measures of user workload when generating units of work based on chat sessions between users of a collaboration environment
US11405435B1 (en) 2020-12-02 2022-08-02 Asana, Inc. Systems and methods to present views of records in chat sessions between users of a collaboration environment
US11694162B1 (en) 2021-04-01 2023-07-04 Asana, Inc. Systems and methods to recommend templates for project-level graphical user interfaces within a collaboration environment
US11676107B1 (en) 2021-04-14 2023-06-13 Asana, Inc. Systems and methods to facilitate interaction with a collaboration environment based on assignment of project-level roles
US11553045B1 (en) 2021-04-29 2023-01-10 Asana, Inc. Systems and methods to automatically update status of projects within a collaboration environment
US11803814B1 (en) 2021-05-07 2023-10-31 Asana, Inc. Systems and methods to facilitate nesting of portfolios within a collaboration environment
US11792028B1 (en) 2021-05-13 2023-10-17 Asana, Inc. Systems and methods to link meetings with units of work of a collaboration environment
US11809222B1 (en) 2021-05-24 2023-11-07 Asana, Inc. Systems and methods to generate units of work within a collaboration environment based on selection of text
US11756000B2 (en) 2021-09-08 2023-09-12 Asana, Inc. Systems and methods to effectuate sets of automated actions within a collaboration environment including embedded third-party content based on trigger events
US11635884B1 (en) 2021-10-11 2023-04-25 Asana, Inc. Systems and methods to provide personalized graphical user interfaces within a collaboration environment
US11997425B1 (en) 2022-02-17 2024-05-28 Asana, Inc. Systems and methods to generate correspondences between portions of recorded audio content and records of a collaboration environment
US11836681B1 (en) 2022-02-17 2023-12-05 Asana, Inc. Systems and methods to generate records within a collaboration environment
US11863601B1 (en) 2022-11-18 2024-01-02 Asana, Inc. Systems and methods to execute branching automation schemes in a collaboration environment

Family Cites Families (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP4105221B2 (ja) * 2006-09-20 2008-06-25 松下電器産業株式会社 中継伝送機器および中継伝送方法
JP4803066B2 (ja) 2007-02-21 2011-10-26 日本電気株式会社 ルーティング方法およびノード
WO2009078427A1 (ja) 2007-12-17 2009-06-25 Nec Corporation 経路制御方法およびノード
JP5494797B2 (ja) * 2010-04-27 2014-05-21 富士通株式会社 無線中継装置、無線中継方法
US8817797B2 (en) * 2012-01-31 2014-08-26 Alcatel Lucent Method and apparatus for multipath protocol packet relay
JP2013258525A (ja) * 2012-06-12 2013-12-26 Hitachi Ltd 無線通信システム、ゲートウェイ装置、及びデータ配信方法

Also Published As

Publication number Publication date
US11082281B2 (en) 2021-08-03
US20180287853A1 (en) 2018-10-04
JP2018166258A (ja) 2018-10-25

Similar Documents

Publication Publication Date Title
JP6859795B2 (ja) 中継通信方法、中継通信プログラム、及び中継通信装置
JP4230663B2 (ja) 無線通信ネットワークにおけるパケット・ヘッダの削減
US9455873B2 (en) End-to-end analysis of transactions in networks with traffic-altering devices
US9203890B2 (en) Relay device, relay system, and relay method
JP2010161823A (ja) トンネル情報に基づきアドレス指定衝突を解決する方法及びシステム
US7532620B2 (en) Routing table synchronization method, network apparatus, and routing table synchronization program
US10742768B2 (en) Relaying system and method of transmitting IP address of client to server using encapsulation protocol
JP3149926B2 (ja) アドレス変換方法及び装置
CN112104744A (zh) 流量代理方法、服务器及存储介质
CN102629944A (zh) 网络加速方法、装置及系统
JP6662152B2 (ja) 通信プログラム、通信方法、及び通信装置
EP1294156A2 (en) Method and apparatus for transferring packets in network with monitoring of malicious packets
JP2006508599A (ja) データ処理システム
JP2000235536A (ja) データ通信方式及び装置
WO2003056770A1 (fr) Appareil de relais, procede de commande de conversion d'adresse et programme
JP3609811B2 (ja) ネットワーク中継装置とネットワーク中継方法
JP2020028074A (ja) 通信装置、通信プログラム、及び通信方法
US20190205189A1 (en) Communication system, terminal, and server
JP2009053770A (ja) 通信制御装置、通信制御方法及び通信制御プログラム
JP2000022708A (ja) 移動ipシステムの移動端末及び記録媒体
KR101082651B1 (ko) 멀티호밍을 지원하기 위한 가상화 드라이브 장치 및 그 방법
JP3875911B2 (ja) フレームデータ中継装置
JP2006245896A (ja) ネットワーク制御サーバ、ユーザ端末収容ノード、通信ネットワークおよびネットワーク制御プログラム
JP3655623B2 (ja) ルータ装置、データ通信ネットワークシステム及びデータ転送方法
JP4211859B2 (ja) 情報処理装置および方法、並びに記録媒体

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20191212

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20201027

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20201201

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20210120

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20210224

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20210309

R150 Certificate of patent or registration of utility model

Ref document number: 6859795

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150