JP6823333B1 - データ送信装置、プログラム及びシステム - Google Patents

データ送信装置、プログラム及びシステム Download PDF

Info

Publication number
JP6823333B1
JP6823333B1 JP2020547246A JP2020547246A JP6823333B1 JP 6823333 B1 JP6823333 B1 JP 6823333B1 JP 2020547246 A JP2020547246 A JP 2020547246A JP 2020547246 A JP2020547246 A JP 2020547246A JP 6823333 B1 JP6823333 B1 JP 6823333B1
Authority
JP
Japan
Prior art keywords
data
divided
transmission
processing
communication
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
JP2020547246A
Other languages
English (en)
Other versions
JPWO2021234936A1 (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.)
LOPPO LLC
METAMAGIC CO., LTD.
SHINONOMEKAZAN CO., LTD.
TVT CO., LTD.
Original Assignee
LOPPO LLC
METAMAGIC CO., LTD.
SHINONOMEKAZAN CO., LTD.
TVT CO., 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 LOPPO LLC, METAMAGIC CO., LTD., SHINONOMEKAZAN CO., LTD., TVT CO., LTD. filed Critical LOPPO LLC
Application granted granted Critical
Publication of JP6823333B1 publication Critical patent/JP6823333B1/ja
Publication of JPWO2021234936A1 publication Critical patent/JPWO2021234936A1/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • 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/04Protocols for data compression, e.g. ROHC
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5061Partitioning or combining of resources
    • G06F9/5066Algorithms for mapping a plurality of inter-dependent sub-tasks onto a plurality of physical CPUs
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/52Program synchronisation; Mutual exclusion, e.g. by means of semaphores
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2209/00Indexing scheme relating to G06F9/00
    • G06F2209/50Indexing scheme relating to G06F9/50
    • G06F2209/5017Task decomposition

Abstract

【課題】通信されるデータ量を減らして通信帯域を有効利用することと、通信遅延を小さくすることとを同時に実現するデータ送信装置、プログラム及びシステムを提供する。【解決手段】本発明のデータ送信装置2は、送信対象となるデータを複数の分割データに分割するデータ分割部212と、前記複数の分割データのそれぞれにこれら複数の分割データを識別する識別情報を紐付ける識別情報付与部213と、前記複数の分割データに対する一群のデータ処理を、並列処理可能な複数のスレッド211のいずれかに割り当てて実行するデータ処理部214と、を備え、前記一群のデータ処理は、前記複数の分割データのうち、所定の分割データを圧縮し、前記識別情報が紐付けられた複数の送信データを準備する送信データ準備処理と、データの配送順序を保証しない通信方式で前記複数の送信データを外部に送信する送信処理と、を含む。【選択図】図1

Description

本発明は、データ送信装置、プログラム及びシステムに関する。
インターネットワークを介してデータを送受信する需要は、ますます高まっており、アプリケーションプログラム、音声データ、動画データ等の大容量のデータの送受信も増え続けている。それに伴い、通信されるデータ量を減らして限られたリソースである通信帯域を有効利用することが、ますます求められている。
また、リモートワーク、テレワークの普及等により、インターネットワークを介した音声通信(音声チャット)や映像付き音声通信(ビデオチャット)などの、即時性のある情報伝達であるリアルタイムコミュニケーションを行う需要も、近年さらに高まっている。該コミュニケーションにおいては、送信側と受信側との間に時間差があると、利用者間の意思疎通に不都合が生じる。
データの送受信に関する通信されるデータ量を減らし通信遅延を小さくする工夫として、送受信されるデータを圧縮する手法がある。例えば、特許文献1には、PCIe(登録商標)で接続された産業用シングルパスインクジェットプリンタ等で利用可能である、画像データ処理システムが開示されている。
特開2018−157324号公報
ところで、伸長処理において、元になるデータを分割して圧縮した複数の圧縮データに対して複数の伸長回路を用いて処理時間の短縮を図ろうとする場合、1つの伸長回路を用いる場合に比べて伸長処理に要する時間が短くなるため、受信が遅れた圧縮データを受信装置が伸長処理中に受信できる機会が減る。結果として、伸長処理が終わってしばらく経ってから受信が遅れた圧縮データが受信され得る。こうした受信では、伸長処理が終わってから受信が遅れた圧縮データの受信までの時間が、通信遅延に加わり、通信遅延を増大させる。したがって、伸長処理を行う時間が長いシステムの場合より、一部の圧縮データの受信の遅れが全体の通信遅延に与える影響が大きくなる。そのため、送り側がデータを分割し、圧縮し、送信することで通信されるデータ量を減らして通信帯域を有効利用するシステムをインターネットワーク上で実現するにあたっては、通信遅延の点においてさらなる改善の余地がある。
本発明は、このような事情に鑑みてなされたもので、通信されるデータ量を減らして通信帯域を有効利用することと、通信遅延を小さくすることとを同時に実現するデータ送信装置等を提供することを目的とする。
本発明者らは、上記課題を解決するために鋭意検討した結果、送信対象となるデータを複数の分割データに分割し、並列処理可能な複数のスレッドを用いて、所定の分割データの圧縮と、識別情報の紐付けと、データの配送順序を保証しない通信方式を用いた送信とを含む一群のデータ処理を行うことで、上記の目的を達成できることを見出し、本発明を完成させるに至った。
具体的に、本発明は、送信対象となるデータを複数の分割データに分割するデータ分割部と、前記複数の分割データのそれぞれにこれら複数の分割データを識別する識別情報を紐付ける識別情報付与部と、前記複数の分割データに対する一群のデータ処理を、並列処理可能な複数のスレッドのいずれかに割り当てて実行するデータ処理部と、を備え、前記一群のデータ処理は、前記複数の分割データのうち、所定の分割データを圧縮し、前記識別情報が紐付けられた複数の送信データを準備する送信データ準備処理と、データの配送順序を保証しない通信方式で前記複数の送信データを外部に送信する送信処理と、を含む、データ送信装置を提供する。
本発明によれば、配送順序を保証しない通信方式を用いるため、配送順序を保証する通信方式が有する一部の圧縮データの受信の遅れがその後に送信された圧縮データ全ての受信の遅れを招き通信遅延をさらに増大させる課題を解決できる。本発明によれば、送信データを受信した受け側は、データの受信順序によらず、識別情報を用いて送信対象となるデータを再構成できる。すなわち、識別情報を紐付けることで、並列処理可能な複数のスレッドを用いて送信データ準備処理と送信処理とを行うことにより生じた課題と、データの配送順序を保証しない通信方式を用いたことにより生じた課題とを、一挙に解決できる。したがって、本発明によれば、データの受信順序が保証されないことによる有害な副作用を避けつつ、圧縮により通信されるデータ量を減らして通信帯域を有効利用することと、並列処理がもたらす伸長時間短縮及び配送順序を保証しない通信方式により通信遅延を小さくすることとを同時に達成できる。
本発明によれば、通信されるデータ量を減らして通信帯域を有効利用することと、通信遅延を小さくすることとを同時に実現するデータ送信装置、プログラム及びデータ通信システムを提供できる。
図1は、本実施形態のデータ通信システム1の構成の一例を示すブロック図である。 図2は、本実施形態のデータ送信装置2を用いたデータ送信の流れの一例を示すメインフローチャートである。 図3は、本実施形態のデータ送信装置2を用いたデータ分割の一例を示す概念図である。 図4は、本実施形態の送信対象データ221及び識別情報一覧222の一例である。 図5は、本実施形態の並列処理可能なスレッド211で実行されるデータ処理の流れの一例を示すフローチャートである。 図6は、本実施形態のデータ処理部が送信する送信データの一例を示す概念図である。 図7は、本実施形態のデータ処理の並列処理の一例を示す概念図である。 図8は、本実施形態のデータ受信装置3を用いたデータ受信の流れの一例を示すメインフローチャートである。 図9は、本実施形態の受信データ321の一例である。 図10は、本実施形態の並列処理可能なスレッド311で実行されるデータ受信の流れの一例を示すフローチャートである。 図11は、本実施形態のデータ受信の並列処理の一例を示す概念図である。 図12は、本発明による遅延時間の改善を示す概念図である。 図13は、変形例1のデータ受信装置3を用いたデータ受信の流れの一例を示すメインフローチャートである。 図14は、変形例2のデータ受信装置3を用いたデータ受信の流れの一例を示すメインフローチャートである。
以下、本発明を実施するための好適な形態の一例について図を参照しながら説明する。なお、これはあくまでも一例であって、本発明の技術的範囲はこれに限られるものではない。
<データ通信システム1>
データ通信システム1(以下、単にシステム1とも称する)は、データ送信装置2(以下、単に送信装置2とも称する)と、データ受信装置3(以下、単に受信装置3とも称する)と、ネットワーク4と、を含んで構成される。
〔データ送信装置2〕
送信装置2は、制御部21と、記憶部22と、通信部23と、を含んで構成される。送信装置2は、データを送信する各種のプログラムを実行可能であることが好ましい。データを送信する各種のプログラムは、例えば、音声チャット、映像チャット又はビデオチャット、動画データの配信サーバ、音声データの配信サーバ、Webサーバ、データ配信サーバ、SAN、NAS、ファイルサーバ、クラウドストレージ、メールサーバ、等を実現するプログラムが挙げられる。データ送信装置2がデータを送信する各種のプログラムを実行可能であることにより、これら各種のプログラムが送信するデータの送信されるデータ量を減らして通信帯域を有効利用し、通信遅延を小さくできる。
[制御部21]
制御部21は、CPU、RAM、及びROM等を備える。制御部21は、ハードウェアマルチスレッディングを利用可能であることが好ましい。CPUは、マルチコアCPUであることが好ましい。制御部21は、ベクトルプロセッサ又はアレイプロセッサを備えていてもよい。ベクトルプロセッサ又はアレイプロセッサは、GPUであってもよい。市場に広く流通しているGPUであれば、比較的安価にベクトルプロセッサを実現できる。ハードウェアマルチスレッディングを高速に実現しうる、マルチコアCPU、ベクトルプロセッサ、アレイプロセッサ等を備えていることにより、制御部21は、並列処理可能なスレッドの実行をより高速に実現できる。並列処理可能なスレッドの実行をより高速に実現することにより、後述する圧縮処理をより短い時間で実行でき、通信遅延を小さくできる。
制御部21は、所定のプログラムを読み込み、必要に応じて記憶部22及び/又は通信部23と協働することで、送信装置2におけるソフトウェア構成の要素である、スレッド群211、データ分割部212、識別情報付与部213、データ処理部214等を実現する。
スレッド群211は、コンピュータ上での並列処理を実現する構成要素であり、スレッド群211の複数のスレッドが割り当てられた一群の処理を並列処理によって同時に実行する。スレッド群211を実現するスレッド機構は、特に限定されず、例えば、ユーザスレッド、カーネルスレッド等の既存技術のスレッド機構がある。スレッド群211は、ハードウェアマルチスレッディングを利用可能であるスレッド機構を含むことが好ましい。スレッド群211は、非同期な並列処理を実行可能であることが好ましい。非同期な並列処理を実行可能であれば、並列処理の同期のために時間を費やすことがなく、通信遅延の増大を防げる。スレッド群211は、アドレス空間を、処理単位ごとに仮想化せず、アドレス空間の分離も行わないことが好ましい。仮想化及び/又は分離を行わないことにより、仮想化及び分離に伴う余分な時間がかからず、通信遅延を小さくできる。スレッド群211は、割り当てられた一群の処理を並列処理によって実行するため、複数の処理を同時に行える。したがって、処理完了までの時間を並列処理が行われない場合より短縮でき、通信遅延を小さくできる。
[記憶部22]
記憶部22は、データやファイルが記憶される装置であって、ハードディスクや半導体メモリ、記録媒体、メモリカード等による、データのストレージ部を有する。記憶部22は、ネットワークを介してNAS、SAN、クラウドストレージ、ファイルサーバ、分散ファイルシステム等の記憶装置又は記憶システムとの接続を可能にする仕組みを有してもよい。記憶部22には、マイクロコンピューターで実行される制御プログラム、送信対象データ221、識別情報一覧222等が記憶されている。
[通信部23]
通信部23は、送信装置2を受信装置3その他の機器と通信可能にするためのデバイスを有する。デバイスの種類は特に限定されるものでなく、例えばイーサネット規格に対応したネットワークカード、IEEE802.11に準拠したWi−Fi対応デバイス、等を有する。大量のデータをやり取りするために、通信部23は、イーサネット規格に対応したネットワークカードを有することが好ましい。
〔データ受信装置3〕
データ受信装置3は、制御部31と、記憶部32と、通信部33と、を含んで構成される。データ受信装置3は、データを受信する各種のプログラムを実行可能であることが好ましい。データを受信する各種のプログラムは、例えば、音声チャット、映像チャット、ビデオチャット、動画データの配信サーバ、動画データの再生を行うソフトウェア、音声データの配信サーバ、音声データの再生を行うソフトウェア、Webサーバ、Webサーバからデータを取得するソフトウェア、データ配信サーバ、データ配信サーバからデータを取得するソフトウェア、SAN、SANからデータを取得するソフトウェア、NAS、NASからデータを取得するソフトウェア、ファイルサーバ、ファイルサーバからデータを取得するソフトウェア、クラウドストレージ、クラウドストレージからデータを取得するソフトウェア、メールサーバ、メールサーバからメールを取得するソフトウェア、等を実現するプログラムが挙げられる。データ受信装置3がデータを受信する各種のプログラムを実行可能であることにより、これら各種のプログラムが受信するデータの受信されるデータ量を減らして通信帯域を有効利用し、通信遅延を小さくできる。
[制御部31]
制御部31のハードウェア構成は、制御部21と同様である。制御部31は、所定のプログラムを読み込み、必要に応じて記憶部32及び/又は通信部33と協働することで、受信装置3におけるソフトウェア構成の要素である、スレッド群311、データ受信部312、再構成部313等を実現する。スレッド群311は、スレッド群211と同様である。
[記憶部32]
記憶部32のハードウェア構成は、記憶部22と同様である。記憶部32には、受信データ321、識別情報一覧322等が記憶されている。
[通信部33]
通信部33は、受信装置3を送信装置2その他の機器と通信可能にするためのデバイスを有する。通信部33のハードウェア構成は、通信部23と同様である。
〔ネットワーク4〕
ネットワーク4は、送信装置2と、受信装置3とを接続する。ネットワーク4の種類は特に限定されず、パーソナルエリアネットワーク、ローカルエリアネットワーク、イントラネット、エクストラネット、インターネット、Wi−Fiネットワーク、あるいはこれらを含むネットワークを複数組み合わせたネットワーク等が挙げられる。
〔データ送信のメインフローチャート〕
以下では、図2を参照しながら、送信装置2が行うデータ送信に関する処理の好ましい手順について説明する。
[ステップS1:データの分割]
送信対象となる送信対象データに関するデータ送信が指令されると、まず、制御部21は、記憶部22と協働してデータ分割部212を実行し、送信対象データを分割し、複数の分割データを生成する(ステップS1)。制御部21は、処理をステップS2に移す。分割データは、通信方式に応じた1回のデータ送信における送信データ量の上限から所定のデータ量を引いた値以下のデータ量を有することが好ましい。送信対象データの種類は問わない。送信対象データとして、例えば、文書データ、音声データ、画像データ、動画データ、書庫データ、アプリケーションソフトウェア等を実現するプログラム、インストーラを実現するプログラム又はデータ、アプリケーションソフトウェアが利用するデータ、アプリケーションソフトウェアに機能を追加するデータ、アプリケーションソフトウェアの機能を変更するデータ、BIOSを書き換えるためのデータ、受け側のコンピュータに特定の動作又は一連の動作を指令する命令及び命令群、等が挙げられる。
図3は、ステップS1で行われる送信対象となるデータの分割の一例である。図3は、1回のデータ送信における送信データ量の上限が65,535オクテットでヘッダのデータ量が20オクテットであるIPと、ヘッダのデータ量が8オクテットであるUDPとを組み合わせた通信方式を用い、圧縮時に付与されるヘッダのデータ量が7オクテットである場合のデータの分割の一例を示している。データ分割部212は、送信データ量の上限とヘッダのデータ量から、送信対象データを、分割データのデータ量が65,500オクテット以下となるように分割する。このように分割することにより、後述するデータ処理が生成する送信データのデータ量がIPの定める1回のデータ送信における上限データ量65,535オクテット以下となり、データ量を上限以下にするために追加の分割を行う必要がなく、分割による遅延時間の増大を防げる。
[ステップS2:識別情報の紐付け]
図2に戻る。制御部21は、記憶部22と協働して識別情報付与部213を実行し、ステップS1で生成された分割データに識別情報を紐付ける。(ステップS2)。制御部21は、処理をステップS3に移す。識別情報付与部213は、識別情報の一覧である識別情報一覧を生成し、受信装置3等の外部へ送信する処理をさらに行ってもよい。識別情報は、分割データから元のデータを再構成可能であれば、特に限定されない。識別情報として、例えば、分割データに割り当てられた通し番号、分割データに割り当てられた通し番号と分割数とを組にした情報、分割データの先頭アドレスのデータの元のデータにおけるアドレス番号、分割データの先頭アドレスのデータの元のデータにおけるアドレス番号と元のデータのデータ量との組、等が挙げられる。
図4は、送信対象データ221及び識別情報一覧222の一例である。送信対象データ221は、分割データを識別し、再構成を可能にする識別情報と、分割データに関する送信データが送信済であるか未送信であるかを記憶する送信フラグと、分割データが圧縮済であるか否かを記憶する圧縮フラグと、分割データ及び/又は圧縮データを記憶する分割データ/圧縮データとを含む。ステップS2において識別情報付与部213は、送信フラグを、未送信を示すよう設定し、圧縮フラグを、未圧縮を示すよう設定することが好ましい。識別情報一覧222は、図4に示す例のように、送信対象データ221と同じテーブルに記憶されてもよく、別のテーブルに記憶されてもよく、複数のテーブルに記憶されてもよい。
[ステップS3:送信指令の受信の有無を判定]
図2に戻る。制御部21は、記憶部22と協働してデータ処理部214を実行し、外部から送信指令を受信したか否かを判定する。(ステップS3)。受信していれば、制御部21は、処理をステップS4に移す。受信していなければ、制御部21は、処理をステップS5に移す。外部から送信指令を受信したか否かを判定することにより、通信障害等によって送信済の送信データの一部又は全部が伝送中に失われていても、受信した送信指令に応じて、それらの送信データを送信できる。
[ステップS4:該当する送信フラグを未送信に設定]
制御部21は、記憶部22と協働してデータ処理部214を実行し、送信指令が示す送信対象となる送信データについて、送信対象データ221に記憶された送信フラグを、未送信を示すよう設定する(ステップS4)。制御部21は、処理をステップS5に移す。送信指令は、送信対象となる送信データに関する識別情報を列挙して送信対象となる送信データを示してもよく、送信対象から除く送信データに関する識別情報を列挙して送信対象となる送信データを示してもよく、送信対象となる送信データの範囲を示す情報によって送信対象となる送信データを示してもよい。また、これらの手法を組み合わせて送信対象となる送信データを示してもよい。
[ステップS5:未送信の送信対象データの有無を判定]
制御部21は、記憶部22と協働してデータ処理部214を実行し、送信フラグが未送信を示す送信データがあるか否かを判定する(ステップS5)。未送信を示す送信データがあれば、制御部21は、処理をステップS6に移す。未送信を示す送信データがなければ、制御部21は、処理をステップS8に移す。
[ステップS6:データ処理を割当て可能なスレッドの有無を判定]
制御部21は、記憶部22と協働してデータ処理部214を実行し、データ処理を割当て可能なスレッド211があるか否かを判定する(ステップS6)。該当するスレッド211があれば、制御部21は、処理をステップS7に移す。該当するスレッドがなければ、制御部21は、処理をステップS8に移す。
[ステップS7:スレッドにデータ処理を割り当てて実行]
制御部21は、記憶部22と協働してデータ処理部214を実行し、データ処理を割当て可能なスレッド群211の有するスレッドのいずれかに分割データに対する一群のデータ処理を割り当てて実行させる(ステップS7)。制御部21は、処理をステップS8に移す。ステップS7の詳細については、後に図5を参照しながら説明する。
[ステップS8:受信完了情報の受信の有無を判定]
制御部21は、記憶部22と協働してデータ処理部214を実行し、受信完了情報を受信したか否かを判定する(ステップS8)。受信したならば、制御部21は、処理を終了し、他の送信対象データに関するデータ送信を待機して、ステップS1〜S8を繰り返す。受信していないならば、制御部21は、処理をステップS3に移す。受信完了情報を受信したか否かを判定するため、受け側が全ての送信データを受信して受信完了情報を送信するまで、送信データの送信を続けられる。したがって、受け側が全ての送信データを受信する前に送信を終了し、受け側が送信データの不足から送信対象データを利用できなくなることがない。
〔データ処理のフローチャート〕
図5は、本実施形態における並列処理可能なスレッドで実行される一群のデータ処理の手順を示すフローチャートの一例である。
[ステップS11:圧縮を要する所定データか否かを判定]
スレッド群211の有するスレッドのいずれかに一群のデータ処理の実行が割り当てられると、制御部21は、記憶部22と協働してデータ処理部214を実行し、分割データが圧縮を要する所定データであるか否かを判定する(ステップS11)。所定データであるならば、制御部21は、処理をステップS12に移す。所定データでないならば、制御部21は、処理をステップS13に移す。所定データであるか否かを判定するため、圧縮を要する所定データのみを圧縮でき、通信遅延を小さくできる。所定データであるか否かの判定は、特に限定されない。例えば、圧縮フラグが圧縮済である場合に所定データではないと判定する判定、分割データのデータ量が所定のデータ量以下である場合に所定データではないと判定する判定、これらの判定を組み合わせた判定、等が挙げられる。
[ステップS12:所定データの圧縮]
制御部21は、記憶部22と協働してデータ処理部214を実行し、所定データを圧縮し、対応する圧縮フラグを圧縮済に変更する(ステップS12)。制御部21は、処理をステップS13に移す。
データを圧縮する手法は、特に限定されない。データを圧縮する手法は、例えば、エントロピー符号化に基づく手法、辞書式符号化に基づく手法、エントロピー符号化と辞書式符号化をともに含む手法、のいずれか1つ又は複数を含む。データを圧縮する手法は、BWT、CTW、差分符号化、DMC、差分パルス符号変調、MTF、PAQ、PPM、RLE等を含んでもよい。データを圧縮する手法は、伸長速度に優れた圧縮方式であるLZO(Lempel−Ziv−Oberhumer)とほぼ同等の圧縮率を有しつつ、圧縮速度がLZOよりも優れており、制御部21の処理能力や通信状況等に応じてより通信遅延を小さくするよう圧縮速度と圧縮率とのトレードオフ関係を変更可能であることから、lz4fastアルゴリズムを用いた方式を含むことが好ましい。
データを圧縮する手法は、圧縮された所定データに圧縮に関する情報を記憶するヘッダを付与してもよい。圧縮に関するヘッダは、例えば、圧縮手法、圧縮前のデータ量、圧縮率、チェックサム、等を含む。圧縮に関する情報を記憶するヘッダを付与することにより、受信装置3等の受け側は圧縮に関する情報を用いた伸長処理等を行える。
[ステップS13:識別情報が紐付けられた送信データを生成]
制御部21は、記憶部22と協働してデータ処理部214を実行し、ステップS12で圧縮された所定データ又は所定データでない分割データと識別情報とを紐付けた、送信データを生成する(ステップS13)。制御部21は、処理をステップS14に移す。ステップS12で圧縮された所定データのデータ量が圧縮される前の分割データのデータ量より大きかった場合、圧縮される前の分割データと識別情報とを紐付けて送信データを生成することが好ましい。送信データは、圧縮手法に関する情報を含んでいてもよい。
[ステップS14:送信処理可能か否かを判定]
制御部21は、記憶部22と協働してデータ処理部214を実行し、送信データの送信処理が可能か否かを判定する(ステップS14)。可能ならば、制御部21は、処理をステップS15に移す。可能でないならば、制御部21は、ステップS14を繰り返す。制御部21は、所定時間待機してからステップS14を繰り返してもよい。所定時間待機することにより、送信処理が可能か否かの判定による制御部21及び通信部23への負担を減らし、同じ制御部21及び通信部23を利用する他のスレッドの実行速度及び処理に要する時間を改善して全体の実行時間の増大を防げる。
[ステップS15:配送順序を保証しない通信方式で送信データを送信]
制御部21は、記憶部22及び通信部23と協働してデータ処理部214を実行し、配送順序を保証しない通信方式で受信装置3等の外部に送信データを送信する(ステップS15)。制御部21は、処理をステップS16に移す。配送順序を保証しない通信方式は、特に限定されない。配送順序を保証しない通信方式として、例えば、トランスポート層に相当する通信プロトコルのUDP、SCTP、DCCPのいずれか1つ又は複数を含む通信方式が挙げられる。配送順序を保証しない通信方式は、インターネット層に相当する通信プロトコルを含んでもよい。配送順序を保証しない通信方式は、IPを含むことが好ましい。IPを含むことにより、IPを用いる既存のインターネットワークを利用した通信を行える。
通信方式がUDPを含むことにより、TCPを含む通信方式と異なり、事前に転送チャネルやデータ経路に関する特別な設定をする必要がない。したがって、通信遅延をさらに小さくできる。UDPは簡便な通信プロトコルであるため、特別な機器やネットワークを用意することなく、既存のインターネットワーク及びそのための既存の機器を用いて配送順序を保証しない通信方式による送信処理を実現できる。UDPの代わりに利用できるTCP、MPTCP、DCCPと異なり、UDPは、フロー制御を行わない。フロー制御が行われると、通信遅延が増大しうる。通信方式がUDPを含むことにより、これらの通信方式を用いる場合より、通信遅延を減らしうる。UDPのヘッダのデータ量は8オクテットであり、標準データ量が20オクテットであるTCPのヘッダや、標準データ量が52オクテットであるMPTCPのヘッダや、標準データ量が16オクテットであるDCCPのヘッダよりデータ量が小さい。通信方式がUDPを含むことにより、付加されるヘッダのデータ量が小さくなるため、通信されるデータ量を減らして通信帯域を有効利用できる。
通信方式が、SCTPを含むことにより、ネットワーク障害が生じた場合であっても、その障害からの復元力によって、比較的短い時間で送受信を再開できる。すなわち、ネットワーク障害発生時の通信遅延を小さく抑えられる。また、ネットワーク障害によってデータが失われれば、失われたデータが再び送信されて受信されるまでデータを利用できず、通信遅延が増大するが、SCTPは、データの到着をより確実にする信頼性を有するため、このような通信遅延の増大を抑えられる。SCTPのヘッダのデータ量は12オクテットであり、TCPのヘッダや、MPTCPのヘッダや、DCCPのヘッダよりデータ量が小さい。したがって、TCP、MPTCP、DCCPを用いる場合より、通信されるデータ量を減らして通信帯域を有効利用できる。
図6は、図3に示した分割データに関する送信データの一例である。分割データ1〜3はそれぞれ圧縮されている。分割データ4は、所定データでなかったために圧縮されず、非圧縮データのままである。これらのデータのそれぞれに、35オクテットのヘッダが付与される。これらを合計した送信されるデータ量は、93640オクテットとなり、送信対象データの200000オクテットより小さい。したがって、通信されるデータ量を減らして通信帯域を有効利用できる。
[ステップS16:対応する送信フラグを送信済に変更]
図5に戻る。制御部21は、記憶部22及び通信部23と協働してデータ処理部214を実行し、ステップS15で送信した送信データに対応する送信フラグを、送信済を示すよう変更する(ステップS16)。制御部21は、処理を終了して次の一群のデータ処理の実行がスレッド211に割り当てられるまで待機する。
図7は、並列処理可能なスレッドに割り当てたステップS11〜ステップS16の一群のデータ処理の並列処理を示す概念図である。この例では、スレッド群211は、2つのスレッド(スレッド211a及びスレッド211b)を有する。図7が示すように、多くの送信処理は、送信処理を行っていない他のスレッドの圧縮処理と同時に実行されるため、それらが送信完了までの処理時間を増大させることがない。したがって、処理開始から送信完了までの時間が短くなり、通信遅延を小さくできる。図7ではスレッド群211が2つのスレッドを有する場合を示したが、スレッド数がさらに多ければ、送信処理中に送信処理を行っていない他のスレッドで実行される圧縮処理の数が増え、処理開始から送信完了までの時間がさらに短くなることが理解されよう。
送信装置2は、ステップS1からステップS16に係る上述の手順で送信対象データを分割及び圧縮して送信するため、通信されるデータ量を減らして通信帯域を有効利用することと、通信遅延を小さくすることとを同時に実現するデータ送信装置を提供できる。
〔データ受信のメインフローチャート〕
以下では、図8を参照しながら、受信装置3が行うデータ受信に関する処理の好ましい手順について説明する。
[ステップS101:スレッドにデータ処理を割り当てて実行]
制御部31は、記憶部32と協働してデータ受信部312を実行し、一群のデータ受信を割当て可能なスレッド311に一群のデータ受信を割り当てて実行させる(ステップS101)。制御部31は、処理をステップS102に移す。ステップS101の詳細については、後に図10を参照しながら説明する。
[ステップS102:識別情報一覧を受信したか判定]
制御部31は、記憶部32及び通信部33と協働してデータ受信部312を実行し、識別情報一覧を受信したか否かを判定する(ステップS102)。受信したら、制御部31は、記憶部32と協働して識別情報一覧を識別情報一覧321に記憶し、処理をステップS103に移す。受信していないならば、制御部31は、ステップS102の処理を繰り返す。
[ステップS103:所定時間が経過するまで待機]
制御部31は、記憶部32と協働してデータ受信部312を実行し、所定時間が経過するまで処理を待機する(ステップS103)。制御部31は、処理をステップS104に移す。所定時間待機することにより、後述する送信指令を立て続けに送信することによる通信されるデータ量の増大を防げる。制御部31は、所定時間が経過するまで処理を待機する代わりに、スレッド群311のスレッドを同期するスレッド同期オブジェクトがスレッドの同期に関する所定の動作を実行するまで処理を待機してもよい。スレッドの同期に関する所定の動作を実行するまで処理を待機することにより、スレッド群311のスレッドの同期処理がより効果的に行われ、通信遅延を小さくできる。また、受信データ321、識別情報322等へのアクセスを制御する排他制御コンテナがアクセスの排他制御に関する所定の動作を実行するまで処理を待機してもよい。アクセスの排他制御に関する所定の動作を実行するまで処理を待機することにより、受信データ321、識別情報322等へのアクセスがより効果的に行われ、通信遅延を小さくできる。スレッド同期オブジェクトは、Mutex、Semaphore、Eventのいずれか、又は、これらのいずれかを継承したオブジェクトを含むことが好ましい。排他制御コンテナは、Queue、Stack、List、Vectorのいずれか又はこれらのいずれかを継承したコンテナを含むことが好ましい。
[ステップS104:識別情報一覧と受信データとの間に差異があるか判定]
制御部31は、記憶部32と協働してデータ受信部312を実行し、識別情報一覧321と後述する受信データ322との間に差異があるか否かを判定する(ステップS104)。差異があれば、制御部31は、処理をステップS105に移す。差異がなければ、制御部31は、処理をステップS106に移す。
図9は、受信データ322の一例である。受信データ322は、被分割圧縮データを識別し、再構成を可能にする識別情報と、被分割圧縮データに対する伸長処理が必要であるか否かを示す処理フラグと、受信した被分割圧縮データを記憶する処理前データと、被分割圧縮データに伸長処理を行う等して得られた被分割データを記憶する処理後データとを含む。識別情報は、被分割データから元のデータを再構成可能とする情報であれば、特に限定されない。
[ステップS105:識別情報一覧のうち、受信データと異なるデータの送信を指令]
図8に戻る。制御部31は、記憶部32及び通信部33と協働してデータ受信部312を実行し、識別情報一覧を送信した外部に、識別情報一覧のうち受信データ321に記憶された識別情報と異なる被分割圧縮データの送信を指令する(ステップS105)。制御部31は、処理をステップS103に移す。識別情報一覧のうち受信データ321に記憶された識別情報と異なる被分割圧縮データの送信を指令することにより、通信障害等によって被分割圧縮データの一部又は全部がネットワーク4を介した伝送中に失われていても、それら失われた被分割圧縮データの送信を指令して、受信できる。
[ステップS106:識別情報を用いて元になるデータを再構成]
制御部31は、記憶部32と協働して再構成部313を実行し、識別情報を用いて元になるデータを再構成する(ステップS106)。制御部31は、処理をステップS107に移す。再構成部313は、処理フラグが要処理を示していない被分割データに関する再構成から順に進めていくことが好ましい。処理フラグが要処理を示していない被分割データに関する再構成から順に進めることで、再構成と処理フラグが要処理を示す被分割データに関する伸長処理とを同時に実行し、通信遅延を小さくできる。再構成の手法は、識別情報を用いるものであれば、特に限定されない。再構成の手法として、例えば、通し番号の順に被分割データを連結する再構成手法、受信して伸長したデータを再構成後のファイルのアドレス番号の位置に書き込む再構成手法、等が挙げられる。受信して伸長したデータを再構成後のファイルのアドレス番号の位置に書き込む再構成手法は、予め元のデータのデータ量の記憶領域を確保することが好ましい。
[ステップS107:受信完了情報を送信]
制御部31は、記憶部32及び通信部33と協働して再構成部313を実行し、識別情報一覧を送信した外部に、受信完了を通知する受信完了情報を送信する(ステップS107)。制御部31は、処理をステップS101に移し、ステップS101からステップS107を繰り返す。
〔データ処理のフローチャート〕
図10は、本実施形態における並列処理可能なスレッドで実行される一群のデータ受信の手順を示すフローチャートの一例である。
[ステップS111:被分割圧縮データ受信の有無を判定]
スレッド311に一群のデータ受信の実行が割り当てられると、制御部31は、記憶部32及び通信部33と協働してデータ受信部312を実行し、被分割圧縮データを識別可能な識別情報と紐付けられた被分割圧縮データを受信したか否かを判定する(ステップS111)。受信したならば、制御部31は、処理をステップS112に移す。受信していないならば、制御部31は、ステップS111を繰り返す。受信していないならば、制御部31は、所定時間待機してから、ステップS111を繰り返してもよい。所定時間待機することにより、制御部31及び通信部33への負担を減らし、他のスレッドの実行速度及び処理に要する時間を改善して、通信遅延の増大を防げる。
[ステップS112:受信データ321に被分割圧縮データを記憶]
制御部31は、記憶部32及び通信部33と協働してデータ受信部312を実行し、受信データ321に識別情報と被分割圧縮データとを紐付けて記憶する(ステップS112)。制御部31は、処理をステップS113に移す。図9に示した受信データ321の例では、受信した被分割圧縮データを、処理前データに記憶し、紐付けられた識別情報を。識別情報に記憶している。被分割圧縮データを記憶する順番は、特に限定されない。被分割圧縮データを記憶する順番として、例えば、図9に示す被分割圧縮データを受信した順番、識別情報が含む通し番号に沿った順番、等が挙げられる。
[ステップS113:伸長処理が必要か否かを判定]
図10に戻る。制御部31は、記憶部32及び通信部33と協働してデータ受信部312を実行し、受信した被分割圧縮データに関する伸長処理が必要か否かを判定する(ステップS113)。伸長処理が必要であれば、制御部31は、処理をステップS114に移す。伸長処理が必要でなければ、制御部31は、処理をステップS116に移す。
[ステップS114:処理フラグを要処理に変更]
制御部31は、記憶部32及び通信部33と協働してデータ受信部312を実行し、受信データ321が記憶する受信した被分割圧縮データに関する処理フラグを、要処理を示すよう変更する(ステップS114)。制御部31は、処理をステップS115に移す。
[ステップS115:伸長処理を実行]
制御部31は、記憶部32及び通信部33と協働してデータ受信部312を実行し、受信した被分割圧縮データに関する伸長処理を実行する(ステップS115)。制御部31は、処理をステップS116に移す。
データを伸長する手法は、特に限定されない。データを伸長する手法は、送信装置2等の送り側が用いる圧縮手法で圧縮されたデータを伸長する手法を含むことが好ましい。データを伸長する手法は、圧縮手法の判別を含んでいてもよい。圧縮手法の判別を含むことにより、送信装置2等の送り側が用いた圧縮手法が予めわかっていない場合でもデータを伸長できる。データを伸長する手法は、伸長速度に優れた圧縮方式であるLZOとほぼ同等の圧縮率を有しつつ、伸長速度がLZOよりも優れていることから、lz4fastアルゴリズムを用いた方式を含むことが好ましい。
制御部31は、伸長処理に失敗した場合、該当する被分割圧縮データを受信データ321から取り除くエラー処理を行ってもよい。該当する被分割圧縮データを受信データ321から取り除くことにより、S104及びS105において該当する被分割圧縮データの送信が指令される。これにより、通信エラー等によって被分割圧縮データが破損して伸長処理に失敗した場合でも、伸長処理に成功するまで該当する被分割圧縮データの送信をいち早く指令できる。したがって、通信エラー等によって被分割圧縮データが破損して伸長処理に失敗した場合でも、元になるデータの再構成がより小さい通信遅延で実現できる。
[ステップS116:処理フラグを処理不要に変更]
制御部31は、記憶部32及び通信部33と協働してデータ受信部312を実行し、受信データ321が記憶する受信した被分割圧縮データに関する処理フラグを、処理不要を示すよう変更する(ステップS116)。制御部31は、処理をステップS111に移し、ステップS111からステップS116を繰り返す。
図11は、並列処理可能なスレッドに割り当てたステップS111〜ステップS16の一群のデータ受信の並列処理を示す概念図である。この例では、スレッド311は、2つのスレッド(スレッド311a及びスレッド311b)を有する。図11が示すように、多くの受信処理は、受信処理を行っていない他のスレッドの伸長処理と同時に実行されるため、それらが受信処理及び伸長処理完了までの処理時間を増大させることがない。したがって、処理開始から受信処理及び伸長処理完了までの時間が短くなり、通信遅延を小さくできる。図11ではスレッド311が2つのスレッドを有する場合を示したが、スレッド数がさらに多ければ、受信処理中に受信処理を行っていない他のスレッドで実行される伸長処理の数が増え、処理開始から受信処理及び伸長処理完了までの時間がさらに短くなることが理解されよう。
受信装置2は、ステップS101からステップS116に係る上述の手順で被分割圧縮データを受信及び伸長して再構成するため、通信されるデータ量を減らして通信帯域を有効利用することと、通信遅延を小さくすることとを同時に実現するデータ受信装置を提供できる。
<データ通信システムの使用例>
続いて、本実施形態におけるシステム1の使用例を説明する。
本実施形態によると、送信装置2は、ネットワーク4を介し、受信装置3と接続可能に構成されている。
〔データの送信〕
利用者又は送信装置2で実行される他のプログラムは、送信装置2に送信対象データの送信を指令する。送信装置2は、データ分割部212を実行し、送信対象データを分割して分割データを生成する。送信装置2は、識別情報付与部213を実行し、分割データに識別情報を付与し、識別情報一覧222を受信装置3に送信する。送信装置2は、データ処理部214を実行し、並列処理可能な複数のスレッド211のいずれか(例えば、スレッド211a)に複数の分割データに関する一群のデータ処理を割り当てて実行させる。データ処理を割り当てられたスレッドは、所定の分割データを圧縮し、識別情報が紐付けられた送信データを準備する。そして、データ処理を割り当てられたスレッドは、データの配送順序を保証しない通信方式で送信データを受信装置3に送信する。
〔データの配送〕
送信データは、ネットワーク4を介して、受信装置3に配送される。
〔データの受信〕
受信装置3は、データ受信部321を実行し、並列処理可能な複数のスレッド311のいずれかにデータ受信に関する一群の処理を割り当てて実行させる。スレッド311は、送信装置2が送信した送信データを識別情報が紐付けられた被分割圧縮データとして受信する。さらに、スレッド311は、伸長処理を要する被分割圧縮データの伸長処理を行い、伸長された被分割圧縮データに関する被分割データを生成する。また、伸長処理を要しない被分割圧縮データから、被分割データを生成する。全ての被分割圧縮データを受信すると、受信装置3は、送信装置2に受信完了情報を送信する。そして、再構成部313を実行し、複数の被分割データ及び識別情報を用いて送信対象データを再構成する。再構成された送信対象データは、受信装置3で実行される他のプログラムによって利用されてもよい。
〔データの送信の終了〕
送信装置2は、受信完了情報を受信し、データの送信を終了する。
図12は、本発明による遅延時間の改善の概要を示す概念図である。分割を行わないデータ通信では、圧縮処理と、送信処理と、データの伝送と、受信処理と、伸長処理と、を逐次実行するため、送り側の送信対象データに関する通信開始から、受け側で送信対象データが利用できるようになる通信完了までの時間は、これらの処理に要する時間とデータの伝送に要する時間とを合計した時間となる。本発明のデータ通信では、並列処理可能な複数のスレッドを用いて圧縮処理と送信処理とを同時に行うため、送信処理に要する時間が通信遅延に与える影響を、実質的に無視できる。また、本発明のデータ通信では、並列処理可能な複数のスレッドを用いて受信処理と伸長処理とを同時に行うため、受信処理に要する時間が通信遅延に与える影響を、実質的に無視できる。送信処理と受信処理が通信遅延に与える影響を実質的に無視できるため、再構成に要する時間を加えても、通信開始から通信完了までの時間を短縮できる。
よって、本実施形態に記載のデータ通信システム1によれば、通信されるデータ量を減らして通信帯域を有効利用することと、通信遅延を小さくすることとを同時に実現するデータ通信システムを提供できる。
<変形例>
以下、本実施形態に記載の発明における種々の変形例を例示する。
〔変形例1〕 (被分割圧縮データの分割数を受信するデータ受信)
実施例の受信装置3は、識別情報一覧を受信し、ステップS104で識別情報一覧と受信データとの間に差異があるか判定し、ステップS105で識別情報一覧のうち、受信データと異なるデータの送信を指令したが、これに限るものでない。本変形例では、受信装置3は、識別情報一覧を受信せず、被分割圧縮データの分割数を受信し、受信した被分割圧縮データの数がこの分割数未満であるときに、受信した被分割圧縮データと異なる被分割圧縮データの送信を指令する場合について説明する。以下、図13を参照しながら、被分割圧縮データの分割数を受信するデータ受信の手順について説明する。
〔被分割圧縮データの分割数を受信するデータ受信に関するメインフローチャート〕
図13は、本変形例における被分割圧縮データの分割数を受信するデータ受信を行う手順を示すフローチャートの一例である。本変形例の被分割圧縮データのうち少なくとも1つは、被分割圧縮データの分割数を示す情報を含む。本変形例の記憶部32は、被分割圧縮データの分割数を記憶する最終データ分割数変数を記憶する。
[ステップS101:スレッドにデータ処理を割り当てて実行]
[ステップS103:所定時間が経過するまで待機]
ステップS101は、分割数変数を、未受信を示すよう設定し、制御部31が処理をステップS103に移すことを除き、基本実施例のステップS101と同じである。ステップS103は、制御部31が処理をステップS201に移すことを除き、基本実施例のステップS103と同じである。
[ステップS201:分割数の受信の有無を判定]
制御部31は、記憶部32及び通信部33と協働してデータ受信部312を実行し、分割数変数を参照して、分割数が未受信であるか否かを判定する(ステップS201)。未受信を示していれば、制御部31は、処理をステップS202に移す。未受信を示していなければ、制御部31は、処理をステップS203に移す。
[ステップS202:分割数の送信を指令]
制御部31は、記憶部32及び通信部33と協働してデータ受信部312を実行し、送り側に分割数の送信を指令する(ステップS202)。制御部31は、処理をステップS103に移す。送り側に分割数の送信を指令することにより、通信障害等によって分割数がネットワーク4を介した伝送中に失われていても、分割数を受信できる。
[ステップS203:未受信のデータの有無を判定]
制御部31は、記憶部32及び通信部33と協働してデータ受信部312を実行し、分割数変数と受信データ321が記憶する被分割圧縮データの数とが一致するか否かを比較して、未受信の被分割圧縮データがあるか否かを判定する(ステップS203)。未受信の被分割圧縮データがあれば、制御部31は、処理をステップS204に移す。未受信の被分割圧縮データがなければ、制御部31は、処理をステップS106に移す。
[ステップS204:受信データと異なるデータの送信を指令]
制御部31は、記憶部32及び通信部33と協働してデータ受信部312を実行し、送信装置2等の送り側に、受信データと異なるデータの送信を指令する(ステップS204)。制御部31は、処理をステップS106に移す。受信データと異なるデータの送信の指令は、受信データ321が記憶する識別情報の一覧を含むことが好ましい。
[ステップS106:識別情報を用いて元になるデータを再構成]
[ステップS107:受信完了情報を送信]
ステップS106及びステップS107は、基本実施例と同じである。
並列処理可能なスレッドで実行される一群のデータ受信の手順は、ステップS111で分割数を示す情報を含む被分割圧縮データを受信した場合に分割数変数を受信した情報が示す分割数を示すよう変更することを除き、基本実施例と同じである。
本変形例では、受信装置3は、識別情報一覧を受信せず、被分割圧縮データの分割数を受信し、受信した被分割圧縮データの数がこの分割数未満であるときに、受信した被分割圧縮データと異なる被分割圧縮データの送信を指令するため、識別情報一覧を受信せずにデータの再構成を行える。したがって、送信装置2等の送り側は、識別情報一覧を送信する必要がない。これにより、通信されるデータ量を小さくし、通信帯域をさらに有効利用できる。
〔変形例2〕 (全ての被分割圧縮データを受信したか否かを判別可能とする情報を受信するデータ受信)
本変形例では、受信装置3は、全ての被分割圧縮データを受信したか否かを判別可能とする情報を受信し、全ての被分割圧縮データを受信していないときに、受信した被分割圧縮データと異なる被分割圧縮データの送信を指令する場合を説明する。全ての被分割圧縮データを受信したか否かを判別可能とする情報は、特に限定されない。全ての被分割圧縮データを受信したか否かを判別可能とする情報は、例えば、被分割圧縮データのハッシュ値、被分割圧縮データのチェックサム、元になるデータのデータ量、等が挙げられる。
〔全ての被分割圧縮データを受信したか否かを判別可能とする情報を受信するデータ受信に関するメインフローチャート〕
図14は、全ての被分割圧縮データを受信したか否かを判別可能とする情報を受信するデータ受信を行う手順を示すフローチャートの一例である。本変形例の被分割圧縮データのうち少なくとも1つは、全ての被分割圧縮データを受信したか否かを判別可能とする情報を含む。本変形例の記憶部32は、全ての被分割圧縮データを受信したか否かを判別可能とする情報を記憶する受信完了判別情報を記憶する。
[ステップS101:スレッドにデータ処理を割り当てて実行]
[ステップS103:所定時間が経過するまで待機]
ステップS101は、受信完了判別情報を、未受信を示すよう設定し、制御部31が処理をステップS103に移すことを除き、基本実施例のステップS101と同じである。ステップS103は、制御部31が処理をステップS301に移すことを除き、基本実施例のステップS103と同じである。
[ステップS301:全ての被分割圧縮データを受信したか否かを判別可能とする情報の受信の有無を判定]
制御部31は、記憶部32及び通信部33と協働してデータ受信部312を実行し、受信完了判別情報を参照して、全ての被分割圧縮データを受信したか否かを判別可能とする情報が未受信であるか否かを判定する(ステップS301)。分割数変数が未受信を示していれば、制御部31は、処理をステップS302に移す。分割数変数が未受信を示していなければ、制御部31は、処理をステップS303に移す。
[ステップS302:全ての被分割圧縮データを受信したか否かを判別可能とする情報の送信を指令]
制御部31は、記憶部32及び通信部33と協働してデータ受信部312を実行し、送り側に全ての被分割圧縮データを受信したか否かを判別可能とする情報の送信を指令する(ステップS302)。制御部31は、処理をステップS103に移す。送り側に全ての被分割圧縮データを受信したか否かを判別可能とする情報の送信を指令することにより、通信障害等によって全ての被分割圧縮データを受信したか否かを判別可能とする情報がネットワーク4を介した伝送中に失われていても、全ての被分割圧縮データを受信したか否かを判別可能とする情報を受信できる。
[ステップS303:未受信のデータの有無を判定]
制御部31は、記憶部32及び通信部33と協働してデータ受信部312を実行し、受信完了判別情報と受信データ321とを比較して、未受信の被分割圧縮データがあるか否かを判定する(ステップS203)。未受信の被分割圧縮データがあれば、制御部31は、処理をステップS204に移す。未受信の被分割圧縮データがなければ、制御部31は、処理をステップS106に移す。受信完了判別情報と受信データ321との比較を行う方法は、特に限定されない。
[ステップS204:受信データと異なるデータの送信を指令]
[ステップS106:識別情報を用いて元になるデータを再構成]
[ステップS107:受信完了情報を送信]
ステップS204は変形例1と同じである。ステップS106及びステップS107は、基本実施例と同じである。
本変形例では、受信装置3は、識別情報一覧を受信せず、全ての被分割圧縮データを受信したか否かを判別可能とする情報を受信し、全ての被分割圧縮データを受信していないときに、受信した被分割圧縮データと異なる被分割圧縮データの送信を指令するため、識別情報一覧を受信せずにデータの再構成を行える。したがって、送信装置2等の送り側は、識別情報一覧を送信する必要がない。これにより、通信されるデータ量を小さくし、通信帯域をさらに有効利用できる。
〔変形例3〕 (並列処理可能な複数のスレッドで再構成処理を実行するデータ受信)
本変形例では、受信装置3は、並列処理可能な複数のスレッドで再構成処理を実行する場合について説明する。本変形例の識別情報一覧322は、元のデータのデータ量と、被分割圧縮データに関する被分割データのデータ量とを含むことが好ましい。
〔並列処理可能な複数のスレッドで再構成処理を実行するデータ受信に関するメインフローチャート〕
[ステップS101:スレッドにデータ処理を割り当てて実行]
[ステップS102:識別情報一覧を受信したか判定]
[ステップS103:所定時間が経過するまで待機]
[ステップS104:識別情報一覧と受信データとの間に差異があるか判定]
[ステップS105:識別情報一覧のうち、受信データと異なるデータの送信を指令]
[ステップS107:受信完了情報を送信]
ステップS101は、一群のデータ受信が再構成処理をさらに含むことを除き、基本実施例と同じである。ステップS102、ステップS103、ステップS105、ステップS107は、基本実施例と同じである。ステップS104は、識別情報一覧321と後述する受信データ322との間に差異がなければ、処理をステップS107に移すことを除き、基本実施例と同じである。
〔データ処理のフローチャート〕
本変形例における並列処理可能なスレッドで実行される一群のデータ受信の手順は、ステップS116に続けて以下の処理を行う。
[ステップS117:識別情報を用いて元になるデータを再構成]
制御部31は、記憶部32と協働して再構成部313を実行し、識別情報を用いて元になるデータを再構成する(ステップS117)。制御部31は、処理をステップS111に移し、ステップS111からステップS117を繰り返す。再構成の手法は、識別情報を用いるものであれば、特に限定されない。再構成の手法として、例えば、通し番号の順に被分割データを連結する再構成手法、受信して伸長したデータを再構成後のファイルのアドレス番号の位置に書き込む再構成手法、等が挙げられる。再構成の手法は、受信して伸長したデータを再構成後のファイルのアドレス番号の位置に書き込む再構成手法を含むことが好ましい。受信して伸長したデータを再構成後のファイルのアドレス番号の位置に書き込む再構成手法であれば、複数の再構成処理を同時に実行できる。したがって、通信遅延をより小さくできる。
本変形例の受信装置3は、並列処理可能な複数のスレッドで再構成処理を実行するため、受信処理中又は図11に示したようなデータの受信を待機中の時間に再構成処理が行われうる。したがって、受信処理中の時間の無駄や、データの受信を待機中の時間の無駄をさらに減らしうる。これにより、通信されるデータ量を減らして通信帯域を有効利用することと、通信遅延を小さくすることとを同時に実現するデータ受信装置を提供できる。
以上、本発明の実施形態及び各種変形例について説明したが、本発明は上述したこれらの実施形態及び各種変形例に限るものではない。また、本発明の実施形態及び各種変形例に記載された効果は、本発明から生じる最も好適な効果を列挙したものに過ぎず、本発明による効果は、本発明の実施形態及び各種変形例に記載されたものに限定されるものではない。
また、上述した実施の形態は本発明を分かりやすく説明するために詳細に説明したものであり、必ずしも説明した全ての構成を備えるものに限定されるものではない。また、ある実施の形態の構成の一部を他の実施の形態の構成に置き換えることが可能であり、また、ある実施の形態の構成に他の実施の形態の構成を加えることも可能である。
1 データ通信システム
2 データ送信装置
21 制御部
211 スレッド群
211a スレッド
211b スレッド
212 データ分割部
213 識別情報付与部
214 データ処理部
22 記憶部
221 送信対象データ
222 識別情報一覧
23 通信部
3 データ受信装置
31 制御部
311 スレッド群
311a スレッド
311b スレッド
312 データ受信部
313 再構成部
32 記憶部
321 受信データ
322 識別情報一覧
33 通信部
4 ネットワーク

Claims (1)

  1. データ受信装置に、
    外部からの一群のデータ受信を、並列処理可能な複数のスレッドのいずれかに割り当てて実行するデータ受信ステップを実行させ、
    前記一群のデータ受信は、
    元になるデータが複数に分割され、かつ、分割された複数の分割データのうち所定の分割データが圧縮された複数の被分割圧縮データであって、これら複数の被分割圧縮データがそれぞれ識別情報によって識別可能な複数の被分割圧縮データを受信する被分割圧縮データ受信処理と、
    受信した前記複数の被分割圧縮データを伸長する伸長処理と、
    伸長された前記被分割圧縮データから前記元になるデータを再構成する再構成処理と、
    を含
    前記一群のデータ受信は、前記外部から前記識別情報の一覧を受信する一覧受信処理をさらに含み、
    前記データ受信装置に、前記識別情報の一覧に紐づけられるデータ群のうち、前記被分割圧縮データ受信処理で受信した複数の被分割圧縮データとは異なる一又は複数のデータの送信を前記外部に指令する送信指令ステップをさらに実行させる、プログラム。
JP2020547246A 2020-05-22 2020-05-22 データ送信装置、プログラム及びシステム Active JP6823333B1 (ja)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/JP2020/020250 WO2021234936A1 (ja) 2020-05-22 2020-05-22 データ送信装置、プログラム及びシステム

Publications (2)

Publication Number Publication Date
JP6823333B1 true JP6823333B1 (ja) 2021-02-03
JPWO2021234936A1 JPWO2021234936A1 (ja) 2021-11-25

Family

ID=74225975

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2020547246A Active JP6823333B1 (ja) 2020-05-22 2020-05-22 データ送信装置、プログラム及びシステム

Country Status (3)

Country Link
US (1) US20210368026A1 (ja)
JP (1) JP6823333B1 (ja)
WO (1) WO2021234936A1 (ja)

Family Cites Families (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2000278138A (ja) * 1999-03-24 2000-10-06 Hitachi Ltd 圧縮データ復元装置,圧縮データ復元方法、及び、電子線描画システム
US20020101932A1 (en) * 2000-11-29 2002-08-01 Montgomery Dennis L. Method and apparatus for encoding information using multiple passes and decoding in a single pass
JP3923315B2 (ja) * 2002-01-08 2007-05-30 富士通株式会社 データ圧縮装置
JP5051327B1 (ja) * 2012-03-22 2012-10-17 富士ゼロックス株式会社 画像処理装置及びプログラム
JP2018011207A (ja) * 2016-07-14 2018-01-18 株式会社日立製作所 通信装置、通信制御方法、及びネットワークシステム
CN116774961A (zh) * 2017-08-25 2023-09-19 微软技术许可有限责任公司 无线可编程媒体处理系统

Also Published As

Publication number Publication date
JPWO2021234936A1 (ja) 2021-11-25
US20210368026A1 (en) 2021-11-25
WO2021234936A1 (ja) 2021-11-25

Similar Documents

Publication Publication Date Title
CN101828372B (zh) 对网络连接的tcp行为并行化
US7653749B2 (en) Remote protocol support for communication of large objects in arbitrary format
US8671152B2 (en) Network processor system and network protocol processing method
JP7154399B2 (ja) データ伝送方法、装置、コンピュータ読み取り可能な媒体および電子デバイス
US20120110194A1 (en) Data communication method and information processing device
US10367873B2 (en) Method of communicating data packets within data communication systems
US8504694B2 (en) Remote content classification and transmission using multiple transport channels
MXPA05010227A (es) Sistema y metodo para transmitir archivos con base en medios.
JP2007334899A (ja) 複数のタイプのデータ接続を利用して、データを通信するシステムおよび方法
JP2007317181A (ja) ネットワークストレージ装置
US10050893B2 (en) Data transmission using modified weighted fair queue algorithm
US10521317B1 (en) Compressing data to be replicated utilizing a compression method selected based on network behavior
CN105207975A (zh) 一种vdi架构下的usb图像设备数据传输方法和系统
CN111147573A (zh) 一种数据传输的方法和装置
JP6823333B1 (ja) データ送信装置、プログラム及びシステム
US20040049367A1 (en) Communication device and communication method
CN112350979B (zh) 数据传输方法和设备
JP2009188655A (ja) 通信制御方法、情報処理システム、情報処理装置及びプログラム
US10673801B2 (en) Dynamic communication session management
WO2021181896A1 (ja) 通信装置、通信装置の制御方法、および集積回路
JP7075077B2 (ja) バックアップサーバ、バックアップ方法、プログラム、ストレージシステム
CN116260887A (zh) 数据传输方法、数据发送装置、数据接收装置和存储介质
US20220329674A1 (en) Communication apparatus, communication method, and storage medium
WO2013082783A1 (zh) 数据处理方法及设备
US11336592B2 (en) Flexible link level retry for shared memory switches

Legal Events

Date Code Title Description
A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20200918

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20201001

A871 Explanation of circumstances concerning accelerated examination

Free format text: JAPANESE INTERMEDIATE CODE: A871

Effective date: 20201001

A975 Report on accelerated examination

Free format text: JAPANESE INTERMEDIATE CODE: A971005

Effective date: 20201023

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: 20201214

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20201225

R150 Certificate of patent or registration of utility model

Ref document number: 6823333

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250