JP2018113645A - 通信装置、通信システム、通信方法、および、通信プログラム - Google Patents

通信装置、通信システム、通信方法、および、通信プログラム Download PDF

Info

Publication number
JP2018113645A
JP2018113645A JP2017004340A JP2017004340A JP2018113645A JP 2018113645 A JP2018113645 A JP 2018113645A JP 2017004340 A JP2017004340 A JP 2017004340A JP 2017004340 A JP2017004340 A JP 2017004340A JP 2018113645 A JP2018113645 A JP 2018113645A
Authority
JP
Japan
Prior art keywords
data
communication device
transmission
communication
divided
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.)
Granted
Application number
JP2017004340A
Other languages
English (en)
Other versions
JP6747303B2 (ja
Inventor
裕亮 亀山
Hirosuke Kameyama
裕亮 亀山
真一 佐沢
Shinichi Sazawa
真一 佐沢
正芳 橋間
Masayoshi Hashima
正芳 橋間
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 JP2017004340A priority Critical patent/JP6747303B2/ja
Priority to PCT/JP2017/046640 priority patent/WO2018131466A1/ja
Publication of JP2018113645A publication Critical patent/JP2018113645A/ja
Priority to US16/371,647 priority patent/US10728356B2/en
Application granted granted Critical
Publication of JP6747303B2 publication Critical patent/JP6747303B2/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
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/50Network services
    • H04L67/56Provisioning of proxy services
    • H04L67/568Storing data temporarily at an intermediate stage, e.g. caching
    • 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/56Provisioning of proxy services
    • H04L67/568Storing data temporarily at an intermediate stage, e.g. caching
    • H04L67/5682Policies or rules for updating, deleting or replacing the stored data
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L1/00Arrangements for detecting or preventing errors in the information received
    • H04L1/004Arrangements for detecting or preventing errors in the information received by using forward error control
    • H04L1/0041Arrangements at the transmitter end
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L1/00Arrangements for detecting or preventing errors in the information received
    • H04L1/004Arrangements for detecting or preventing errors in the information received by using forward error control
    • H04L1/0045Arrangements at the receiver end
    • 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/32Flow control; Congestion control by discarding or delaying data units, e.g. packets or frames
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L65/00Network arrangements, protocols or services for supporting real-time applications in data packet communication
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/2866Architectures; Arrangements
    • H04L67/2876Pairs of inter-processing entities at each side of the network, e.g. split proxies

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Multimedia (AREA)
  • Information Transfer Between Computers (AREA)
  • Data Exchanges In Wide-Area Networks (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

【課題】キャッシュの使用効率を改善する。
【解決手段】通信装置は、記憶部、通信部、特定部を備える。記憶部は、通信先への送信履歴の無い送信データの一部である第1の分割データを、送信データを識別する識別情報に対応付けて記憶する。通信部は、送信データと第1の分割データを特定する情報の組み合わせを含む送信パケットを送信することにより、送信データのうち第1の分割データに含まれないデータである第2の分割データを識別情報に対応付けて通信先に記憶させる。特定部は、送信パケットの送信後は、送信データの代わりに、識別情報と第1の分割データを通信先への送信対象として特定する。
【選択図】図2

Description

本発明は、通信装置、通信システム、通信方法、および、通信プログラムに関する。
近年、通信の高速化が求められてきており、通信速度を高速化するために様々な試みが行われてきている。例えば、データの送信量を減らすために、送信対象のデータに対して重複除去が行われることがある。重複除去では、受信側の転送装置が、過去に送信側の転送装置から受信したデータを、識別子に対応付けて記憶しており、送信側の転送装置も過去に送信したデータと識別子を対応付けて記憶している。送信側の転送装置は、送信対象のデータの一部または全部が既に送信したことがあるデータであるかを判定し、既に送信したことがあるデータについては、実際のデータの代わりに、そのデータに対応付けられた識別子を受信側の転送装置に送信する。受信側の転送装置は、受信した識別子に対応付けて記憶しているデータを読み出し、読み出したデータを送信側の転送装置から送信されたデータとして扱う。
図1は、重複除去の例を説明する図である。図1に示すシステムでは、端末10aと端末10bが、転送装置5aと転送装置5bを介して通信する。端末10aは転送装置5aに接続されており、端末10bは転送装置5bに接続されている。さらに、転送装置5aと転送装置5bは、WAN(Wide Area Network)3を介して通信する。
例えば、端末10aが端末10bにデータAを送信しようとしたとする。この場合、端末10aは、転送装置5aにデータAを送信する(矢印A1)。転送装置5aは、端末10aから受信した送信データが過去に送信したことがあるデータであるかを判定する。ここで、端末10aから送信されたデータが比較的大きい場合、転送装置5aは、受信したデータを適宜、複数のデータに区切り、過去に送信したことがあるデータや送信データ中に複数回含まれるデータを特定する。図1の例では、転送装置5aと転送装置5bの間では、過去に、データA、データB、データCを用いた通信が行われている。このため、転送装置5aと転送装置5bのいずれも、データA、データB、データCをキャッシュ6(6a、6b)に、各データを識別する識別子に対応付けて記憶している。例えば、転送装置5aと転送装置5bのいずれも、データAを識別子aに対応付けて記憶しているとする。同様に、データBは識別子b、データCは識別子cと対応付けられているとする。
図1の例では、送信データがデータAである。そこで、転送装置5aは、データAの代わりに、データAに対応付けられている識別子aを端末10bに向けて送信する(矢印A2)。このため、端末10b宛のデータとして識別子aが転送装置5bに到達する(矢印A3)。すると、転送装置5bは、キャッシュ6bを参照することにより、識別子aに対応付けられたデータAを取得し、端末10aから送信されたデータとして、データAを端末10bに送信する(矢印A4)。
関連する技術として、第1装置から受信したデータのうち、過去に第1装置から受信したデータに重複する重複パターンをその重複パターンに対応付けられた識別子に置き換えて第2装置に転送する中継装置が知られている(例えば、特許文献1など)。また、データを送信する際にキャッシュデータとの差分データとキャッシュデータの識別子を送信するサーバも提案されている(例えば、特許文献2など)。
特開2015−82296号公報 特開2007−299019号公報
双方向通信で重複除去を行う際には、送信側の転送装置と受信側の転送装置のいずれかから一度送信されたデータが、送信側の転送装置と受信側の転送装置の両方に保持されることになる。従って、ネットワーク全体では、重複除去の対象となるデータの大きさと転送装置の台数分の積と同じ容量が、重複除去を用いた通信のために使用されることになってしまい、ネットワーク中に含まれる装置が備えるキャッシュの使用効率が悪い。
本発明は、1つの側面では、キャッシュの使用効率を改善することを目的とする。
ある1つの態様にかかる通信装置は、記憶部、通信部、特定部を備える。記憶部は、通信先への送信履歴の無い送信データの一部である第1の分割データを、前記送信データを識別する識別情報に対応付けて記憶する。通信部は、前記送信データと前記第1の分割データを特定する情報の組み合わせを含む送信パケットを送信することにより、第2の分割データを前記識別情報に対応付けて前記通信先に記憶させる。ここで、第2の分割データは、前記送信データのうち前記第1の分割データに含まれないデータである。特定部は、前記送信パケットの送信後は、前記送信データの代わりに、前記識別情報と前記第1の分割データを前記通信先への送信対象として特定する。
キャッシュの使用効率が改善される。
重複除去の例を説明する図である。 実施形態にかかる通信方法の例を説明する図である。 通信装置の構成の例を説明する図である。 通信装置のハードウェア構成の例を説明する図である。 第1の実施形態にかかる通信方法の例を説明する図である。 送信処理の例を説明するフローチャートである。 受信処理の例を説明するフローチャートである。 第2の実施形態にかかる通信方法の例を説明する図である。 第2の実施形態にかかる通信方法の例を説明する図である。 送信処理の例を説明するフローチャートである。 受信処理の例を説明するフローチャートである。 分割サイズの調整例を説明する図である。 3つの通信装置での通信処理の例を説明する図である。 送信処理の例を説明するフローチャートである。 受信処理の例を説明するフローチャートである。 第4の実施形態にかかる通信装置の構成の例を説明する図である。 消失訂正を用いた割符情報の生成方法の例を説明する図である。 3つの通信装置での通信処理の例を説明する図である。
図2は、実施形態にかかる通信方法の例を説明する図である。実施形態にかかる方法では、データを送信しようとする通信装置20は、送信対象のデータを、自装置がキャッシュに記憶する分と、転送先の通信装置20に記憶させる分に分ける。さらに、各通信装置20は、分割される前のデータを一意に識別可能な識別情報に対応付けて、自装置が記憶する分のデータを保持するものとする。以下の説明では、分割前のデータの識別情報(インデックス)として、分割前のデータから得られる情報を用いるものとする。なお、識別情報の計算方法は、データの送信側と受信側で共通していれば、任意の既知の方法に設定できる。
例えば、図2の例では、通信装置20aがWAN3を介して通信装置20bと通信可能である。この状態で、通信装置20aがデータAを初めて通信装置20bに送信しようとしているとする。ここで、通信装置20aは、データAを分割データA−1と分割データA−2に分割したとする。さらに、通信装置20aは、分割データA−1をデータAの識別情報に対応付けて通信装置20aが保持するキャッシュ41aに格納する。
通信装置20aは、データAと共に、データAのうちで通信装置20aが記憶する分割データA−1を識別するための情報を、通信装置20bに送信する。例えば、通信装置20aは、分割データA−1を識別するための情報として、データAのうちで分割データA−1に該当する領域を表わすアドレスの情報、データの先頭からの割合、データの先頭からのビット数などを使用できる。
データAとデータ分割A−1を識別するための情報が通信装置20bに到達したとする。すると、通信装置20bは、データAのうち、分割データA−1を識別するための情報によって特定される領域分のデータを除いたデータ(分割データA−2)を、データAの識別情報と共に通信装置20bが保持しているキャッシュ41bに記録する。
その後、通信装置20aが通信装置20bにデータAを送信しようとするときには、通信装置20aは、データAの識別情報と分割データA−1の組み合わせを通信装置20bに送信する。すると、通信装置20bは、データAの識別情報に対応付けて記憶している分割データA−2と、通信装置20aから受信した分割データA−1を用いて、データAを再現する。
一方、通信装置20bが通信装置20aにデータAを送信しようとする場合、通信装置20bは、データAの識別情報と分割データA−2の組み合わせを通信装置20aに送信する。すると、通信装置20aは、データAの識別情報に対応付けて記憶している分割データA−1と、通信装置20bから受信した分割データA−2を用いて、データAを再現する。
このように、実施形態にかかる方法では、データAの転送処理に使用されるキャッシュは、通信装置20aと通信装置20bの間で相補的になるように分割して保持される。また、通信装置20aに保持されている分割データA−1と、通信装置20bに保持されている分割データA−2を合わせるとデータAとほぼ同じ程度の容量である。このため、実施形態にかかる方法では、ネットワーク中の各通信装置20が保持するキャッシュを効率的に使用しつつ、重複除去処理を行うことができる。
なお、図2では、通信装置20aと通信装置20bが直接通信する場合の例を説明したが、通信装置20aと通信装置20bのいずれも、通信可能な他の装置から受信したデータを転送する際にも、図2に示す通信方法を使用できる。
<装置構成>
図3は、通信装置20の構成の例を説明する図である。通信装置20は、通信部21、制御部30、記憶部40を備える。制御部30は、重複判定部31、分割サイズ決定部32、分割処理部33、保存処理部34、特定部35、復元処理部36を有する。記憶部40は、キャッシュ41として動作する。さらに、オプションとして、記憶部40は、重複カウンタ42を保持しても良い。
キャッシュ41には、送信対象となったデータの識別情報と、識別情報で識別されるデータの一部、識別情報で識別されるデータのうちのどの領域を記憶しているかを表わす情報などが記録される。重複カウンタ42には、送信対象となったデータか、そのデータの識別情報に対応付けて、データの送信回数が記録される。なお、通信装置20が複数の通信装置20と通信する場合、キャッシュ41や重複カウンタ42は、通信先となる通信装置20ごとに、通信先の通信装置20を特定可能な情報に対応付けて生成されても良い。キャッシュ41や重複カウンタ42の例は後述する。
通信部21は、ネットワーク中の他の通信装置20や通信装置20に接続している端末10との間でパケットを送受信する。重複判定部31は、送信対象のデータの識別情報がキャッシュ41に含まれているかにより、送信対象のデータを過去に送受信したことがあるかを判定する。分割サイズ決定部32は、送信対象のデータを複数の通信装置20で記憶するために、分割データの大きさを決定する。分割処理部33は、分割サイズ決定部32が決定したサイズに合わせて送信対象のデータを分割することにより、分割データを生成する。特定部35は、通信先の通信装置20に送信するデータを特定する。保存処理部34は、自装置が記憶する分割データと、その分割データに含まれているデータが分割前のデータ中のどの領域に当たるかを特定する情報をキャッシュ41に記録することにより、適宜、キャッシュ41を更新する。復元処理部36は、他の通信装置20から受信した受信パケット中のデータと、キャッシュ41に記録されているデータを用いて、送信元が送信対象としたデータを復元する。
図4は、通信装置20のハードウェア構成の例を説明する図である。通信装置20は、プロセッサ101、メモリ102、バス103、ネットワーク接続装置104を有する。プロセッサ101は、任意の処理回路であり、例えば、CPU(Central Processing Unit)とすることができる。プロセッサ101は、メモリ102をワーキングメモリとして使用して、プログラムを実行することにより、様々な処理を実行する。メモリ102には、RAM(Random Access Memory)が含まれ、さらに、ROM(Read Only Memory)等の不揮発性のメモリも含まれる。メモリ102は、プログラムやプロセッサ101での処理に使用されるデータの格納に使用される。ネットワーク接続装置104は、ネットワークを介した他の装置との通信に使用される。バス103は、プロセッサ101、メモリ102、ネットワーク接続装置104を、互いにデータの入出力が可能になるように接続する。
プロセッサ101は制御部30として動作し、メモリ102は記憶部40として動作する。さらに、ネットワーク接続装置104は、通信部21として動作する。なお、図4には図示していないが、通信装置20は、さらに、オペレータが指示などを入力するための入力装置や、通信装置20が保持している情報をオペレータが視認可能になるように表示するための表示装置などを保持していていてもよい。入力装置は、例えば、キーボードなどであり、表示装置は例えばディスプレイなどである。
<第1の実施形態>
図5は、第1の実施形態にかかる通信方法の例を説明する図である。図5においても、通信装置20aが通信装置20bにデータAを送信する場合を例として説明する。以下の説明では、いずれの通信装置20に関する説明であるかを分かりやすくするために、符号の後にその通信装置20の符号の末尾のアルファベットを示すことがある。例えば、重複判定部31aは制御装置20a中の重複判定部31である。また、以下の説明では、送信対象のデータを識別する識別情報として、ハッシュ値が用いられるものとする。なお、ハッシュ値の計算に用いられるハッシュ関数は、通信装置20aと通信装置20bで共通していれば、任意の既知のハッシュ関数に設定できる。
ケースC1は、通信装置20aが初めて通信装置20bにデータAを送信するときの処理の例である。まず、重複判定部31aは、データAが通信装置20aから送信されているかを、キャッシュ41aを参照することによって判定する。この時点では、キャッシュ41aには、データAのハッシュ値は含まれていなかったとする。すると、重複判定部31aは、データAは過去に通信装置20aから送信したデータとは重複していないと判定する。分割サイズ決定部32aは、データAから生成する分割データの大きさを決定する。ここでは、分割サイズ決定部32aは、データAを50%ずつ2つに分けることを決定したとする。分割処理部33は、データAの前半の50%を分割データA−1とし、データAの後半の50%を分割データA−2としたとする。
図5の例では、特定部35aは、分割データA−1を通信装置20aが記憶するデータとし、分割データA−2を通信装置20bに記憶させるデータとして特定したとする。すると、保存処理部34aは、データAから得られたハッシュ値、および、分割データA−1のアドレス情報と共に、分割データA−1をキャッシュ41aに記録する。図5のテーブルT1は、キャッシュ41aに記録されている情報のうち、分割データA−1に関する情報例を示す。テーブルT1の例では、データAのハッシュ値はhashAである。アドレス情報は、分割データA−1がデータAのうちのどの領域を占めているかを表わす情報である。図5では、分割前のデータAの前半50%であることを、A(1−50)と表記する。さらに、保存処理部34aは、分割データA−1自体もキャッシュ41aに格納する。
特定部35aは、今回の送信処理が通信装置20bへの初めてのデータAの送信であるため、分割前のデータAと、通信装置20aが格納している分割データA−1を識別するための情報を、通信装置20bへの送信対象として特定する。特定部35aは送信対象のデータA等を含むパケットP1を生成し、通信部21aを介して通信装置20bに送信する。このため、ケースC1に示すように、データAが通信装置20aから通信装置20bに送信される。
通信装置20bの通信部21bは、パケットP1を受信する。復元処理部36bは、パケットP1に、送信データを識別するための識別情報が含まれているかを判定する。ここでは、ハッシュ値はパケットP1に含まれていないとする。すると、復元処理部36bは、パケットP1に含まれているデータは復元対象とせずに処理を終了する。
一方、保存処理部34bは、パケットP1で送信されてきたデータAのうち、通信装置20aで格納されている分割データA−1の領域を識別する情報を取得する。さらに、保存処理部34bは、パケットP1に含まれているデータAのうち、通信装置20aで保持されていない領域を、通信装置20bが保持する対象として認識する。図5の例では、データAの前半50%(A(1−50))が通信装置20aで格納されているので、保存処理部34bは、データAの後半50%(A(51−100))を通信装置20bで格納することが要求されていると認識する。そこで、保存処理部34bは、データAの後半50%を、分割データA−2に該当する領域を表わすアドレスの情報に対応付けてキャッシュ41bに格納する。さらに、保存処理部34bは、データAのハッシュ値(hashA)を求め、得られた値も分割データA−2に対応付けてキャッシュ41bに記録する。このため、パケットP1の処理が終わった時点では、通信装置20bは、テーブルT2に示す情報をキャッシュ41bに含んでいる。
ケースC2は、通信装置20aが再び通信装置20bにデータAを送信するときの処理の例である。重複判定部31aは、データAのハッシュ値(hashA)がキャッシュ41aに含まれているかを判定する。ケースC−2の時点では、テーブルT1に示すように、データAのハッシュ値はキャッシュ41aに含まれている。このため、重複判定部31aは、データAは過去に通信装置20bに送信ずみのデータであると判定する。
特定部35aは、キャッシュ41aを参照することにより、データAのハッシュ値(hashA)と、hashAに対応付けられている分割データA−1を、データAの代わりに通信装置20aから通信装置20bに送信するデータとして決定する。特定部35aは、データAのハッシュ値と送信対象の分割データA−1を含むパケットP2を生成し、通信部21aを介して通信装置20bに送信する。このため、ケースC2に示すように、分割データA−1が通信装置20aから通信装置20bに送信される。
通信装置20bの通信部21bは、パケットP2を受信する。復元処理部36bは、パケットP2に、送信データを識別するための識別情報として、データAのハッシュ値が含まれているので、パケットP2に含まれているデータを復元対象として認識する。キャッシュ41bには、テーブルT2に示すように、データAのハッシュ値(hashA)に対応付けて分割データA−2が記録されている。そこで、復元処理部36bは、パケットP2中の分割データA−1と、キャッシュ41b中に格納されている分割データA−2を用いて、データAを復元する。なお、復元処理部36は、復元処理の際に、適宜、キャッシュ41bに記録されている分割データA−2のアドレス情報を用いることができる。このため、ケースC2に示すように、通信装置20aが分割データA−1をデータAのハッシュ値と共に通信装置20bに送信することにより、通信装置20bは元の送信データであるデータAを復元できる。
図5では、通信装置20aから通信装置20bにデータAが送信される場合について説明したが、通信装置20bから通信装置20aにデータAを送信する場合にも同様の処理が行われる。例えば、通信装置20bが通信装置20aにデータAを送信する場合、重複判定部31bは、キャッシュ41b(テーブルT2)を用いて、データAの送受信が通信装置20bで行われていると判定する。すると、復元処理部36bは、キャッシュ41bに基づいて、データAのハッシュ値(hashA)と、hashAに対応付けられている分割データA−2を、データAの代わりに送信するデータとして決定する。このため、通信装置20bからは、データAのハッシュ値と分割データA−2を含むパケットが通信装置20aに送信される。すると、通信装置20aでは、復元処理部36aがキャッシュ41a(テーブルT1)を参照することにより、キャッシュ41a中に格納されている分割データA−1と受信パケット中の分割データA−2から送信データAを復元できる。
図5を参照しながら、パケットP1とP2によって送信対象のデータが送信される場合を例として説明したが、図5は一例である。送信対象のデータは、任意の数のパケットを用いて送受信され得る。
図6は、送信処理の例を説明するフローチャートである。図6の例では、送信対象のデータを識別する際にインデックスが使用されている。インデックスは送信対象のデータのハッシュ値など、送信側と受信側の両方の通信装置20がデータから計算可能な値であって、送信対象のデータを識別可能な値である。
まず、重複判定部31は、送信データAを取得する(ステップS1)。ここで、通信装置20自身がアプリケーションなどを処理する場合、重複判定部31は、通信装置20での処理によって生成された送信データAを取得できる。一方、通信装置20に端末10が接続されており、端末10でアプリケーションが動作している場合、重複判定部31は、端末10から送信データAを取得できる。重複判定部31は、送信データAの識別に使用するインデックスを作成する(ステップS2)。重複判定部31は、作成したインデックスがキャッシュ41中にあるかを判定する(ステップS3)。
インデックスがキャッシュ41中にない場合、保存処理部34は、送信データのうちで送信側の通信装置20で記憶するアドレス分の領域を分割データ(A−1)として抽出する(ステップS3でNo、ステップS4)。保存処理部34は、抽出した分割データ(A−1)を、送信データ(A)のインデックスに対応付けて、キャッシュ41に保存する(ステップS5)。特定部35は、送信側の通信装置20で記憶しているデータのアドレスと、送信データAを含むパケットを生成し、通信部21を介して送信する(ステップS6)。
インデックスがキャッシュ41中にある場合、特定部35は、送信側の通信装置20で記憶しているデータのアドレスと、送信データAのインデックスを含むパケットを生成し、通信部21を介して送信する(ステップS3でYes、ステップS7)。
図7は、受信処理の例を説明するフローチャートである。図7でも、送信対象のデータの識別に用いられるインデックスとして、送信対象のデータのハッシュ値など、送信側と受信側の両方の通信装置20がデータから計算可能であり、かつ、送信対象のデータを識別可能な値が使用されている。
通信部21は、データを受信する(ステップS11)。復元処理部36は、受信したデータにインデックスが含まれているかを判定する(ステップS12)。受信したデータにインデックスが含まれていない場合、保存処理部34は、受信データAの識別に使用するインデックスを計算して記憶する(ステップS12でNo、ステップS13)。保存処理部34は、受信データのうちで送信側の通信装置20で記憶されていない領域を分割データ(A−2)として抽出する(ステップS14)。保存処理部34は、抽出した分割データ(A−2)を、受信データ(A)のインデックスに対応付けて、キャッシュ41に保存する(ステップS15)。
一方、受信したデータにインデックスが含まれている場合、復元処理部36は、インデックスに対応付けられている分割データをキャッシュ41から読み出す(ステップS12でYes、ステップS16)。復元処理部36は、受信したデータと読み出した分割データを、アドレス情報に従って組み合わせることにより、復元データを生成する(ステップS17)。復元データの生成後、復元データは実装に応じて処理される。通信装置20自身がアプリケーションなどを処理する場合、復元処理部36は、復元データを通信装置20中のアプリケーション処理部(図示せず)に出力し、復元データをアプリケーション処理部に処理させる。一方、通信装置20に端末10が接続されており、端末10でアプリケーションが動作している場合、復元処理部36は、通信部21を介して、復元データを端末10に向けて送信する。
このように、実施形態にかかる方法では、あるデータの転送処理に使用されるキャッシュは、送信側の通信装置20と受信側の通信装置20に分割して保持され、転送処理に使用されるデータ自体の容量と同程度にまで削減される。このため、実施形態にかかる方法では、ネットワーク中の各通信装置20が保持するキャッシュを効率的に使用しつつ、重複除去処理を行うことができる。
なお、以上の説明では、送信側の通信装置20と受信側の通信装置20の各々が同程度の量のデータを保持する場合を例として説明したが、これは一例である。送信側の通信装置20と受信側の通信装置20が保持するデータの割合は実装に応じて任意に変更され得る。例えば、送信側の通信装置20が備えるキャッシュ41の容量が、受信側の通信装置20の備えるキャッシュ41の容量よりも小さい場合、送信側の通信装置20は、送信対象のデータのうちで自装置が保持するデータの量を少なくするように設定され得る。
<第2の実施形態>
第2の実施形態では、送受信の対象となるデータのうち各通信装置20が保持するデータの割合を変動させる場合の例を説明する。第2の実施形態では、各通信装置20は、重複カウンタ42を保持している。さらに、第2の実施形態では、各通信装置20は、通信先の通信装置20との間で通信を確立した際に、通信先の通信装置20が保存可能なデータ容量の最大値を取得するものとする。
図8と図9は、第2の実施形態にかかる通信方法の例を説明する図である。以下、図8と図9を参照しながら、通信装置20aから通信装置20bにデータD(D(1−100)とも表記する)が複数回送信される場合について、送信処理と各通信装置20が保持するデータの詳細を、送信回数ごとに分けて説明する。以下の説明では、各通信装置20が保持するデータ量が3回の送信処理によって最適化される場合を例とする。なお、各通信装置20が備える分割サイズ決定部32は、予め、記憶するデータ量の調整に使用される送信処理の回数を記憶しているものとする。さらに、以下の説明では、データDのハッシュ値をHと表わす。
(1)1回目のデータ送信
重複判定部31aは、データDのハッシュ値がキャッシュ41aに記録されていないと判定したとする。すると、分割サイズ決定部32aは、1回目の送信処理の際に通信装置20aが記憶するデータの大きさと、通信装置20bに記憶させるデータの大きさを決定する。図8の例では、分割サイズ決定部32aは、1回目の送信処理の際に通信装置20aがデータDの前半50%を保持し、通信装置20bにデータDの後半50%を保持させることを決定したとする。すると、分割処理部33aは、データDを分割データD(1−50)と分割データD(51−100)に分割する。なお、分割データD(1−50)はデータDの前半50%のデータであり、分割データD(51−100)はデータDの後半50%のデータである。
保存処理部34aは、重複カウンタ42aにデータDの送信回数を記録する。なお、42では、図8の重複カウンタ42a−1に示すように、データに対応付けてそのデータの送信回数が記録されても良く、また、データのハッシュ値に対応付けてデータの送信回数が記録されても良い。
保存処理部34aは、さらに、データDのうちで転送装置20aが保持する分のデータをキャッシュ41aに格納する。キャッシュ41には、分割前のデータのハッシュ値、保持対象のデータ、保持対象のデータのアドレス情報が含まれている。このため、保存処理部34aの処理により、通信装置20aが保持するキャッシュ41aには、キャッシュ41a−1に示す情報が格納される。すなわち、キャッシュ41aには、データDのハッシュ値としてHが記録され、キャッシュ対象のデータは、データDの前半50%分の分割データD(1−50)となる。さらに、アドレスの情報として、前半50%を表わす情報(1−50)が記録される。
特定部35aは、データDが初めて通信装置20bに送信されるため、データDの全体を送信対象として特定する。さらに、データDのうち、通信装置20aが保持する情報のアドレスも、通信装置20bへの通知対象とする。このため、例えば、特定部35aは、図8に示すパケットTD1を生成することができる。なお、パケットTD1の例では、データDと通信装置20aが記憶している分割データのアドレス情報の他に、データDのハッシュ値Hも含まれているが、受信側の通信装置20bがハッシュ値を計算する場合、送信パケットにハッシュ値が含まれていなくても良い。さらに、図を見やすくするために、パケットTD1中のペイロード部分を図示しているが、適宜、パケットTD1にはヘッダ等が含められる。特定部35aは、生成したパケットTD1を通信部21a経由で通信装置20bに向けて送信する。
通信装置20bの通信部21bは、パケットTD1を受信する。復元処理部36bは、パケットTD1に含まれているハッシュ値がキャッシュ41bに含まれているかを判定する。通信装置20bがパケットTD1を受信したときには、ハッシュ値Hやハッシュ値Hに対応付けられた情報がキャッシュ41bに含まれていないとする。すると、復元処理部36bは、パケットTD1に含まれているデータは復元対象としない。復元処理部36bは、予め行われている設定に従って、パケットTD1中のデータを出力する。例えば、受信データが通信装置20b中で処理される場合には、復元処理部36bはデータDを、通信装置20b中のアプリケーション処理部(図示せず)に出力できる。一方、通信装置20に端末10が接続されており、端末10でアプリケーションが動作している場合、復元処理部36bは通信部21b経由でデータを端末10に送信する。
一方、保存処理部34bは、復元されたデータDのうち、通信装置20aで格納されている領域のアドレスを取得する。さらに、保存処理部34bは、データDのうち、通信装置20aで保持されていない領域を、通信装置20bが保持する対象として認識する。図8の例では、データDの前半50%(D(1−50))が通信装置20aで格納されているので、保存処理部34bは、データDの後半50%(D(51−100))を通信装置20bで格納することが要求されていると認識する。そこで、保存処理部34bは、データDの後半50%と、分割データD(51−100)のアドレス情報を、データDのハッシュ値(H)に対応付けて、キャッシュ41bに格納する。このため、通信装置20bには、キャッシュ41b−1に示す情報が記録される。
さらに、保存処理部34bは、データDに対するデータの送受信が行われていることを重複カウンタ42に記録しても良い。なお、データに関する送受信の回数が受信側でも記録される場合、送信側と受信側の各々の通信装置20は、対向装置ごとに異なる重複カウンタ42を保持している。
(2)2回目のデータ送信
次に、通信装置20aから通信装置20bに、データDが2回目に送信される場合の処理の例を説明する。
重複判定部31aは、データDのハッシュ値がキャッシュ41aに記録されていると判定し、重複カウンタ42a−1からデータDの送信回数を取得する。ここでは、重複判定部31aは、データDが既に1回送信されているので今回の送信処理が2回目であることを特定する。分割サイズ決定部32aは、データDの送受信処理の回数が、記憶するデータ量の調整に使用される送信処理の回数Pを超えているかを判定する。ここでは、記憶するデータ量の調整に使用される送信処理の回数Pは3であるとする。今回は2回目のデータ送信であるため、送受信処理の回数はデータ量の調整に使用される送信処理の回数Pを超えていない。そこで、分割サイズ決定部32aは、今回の送受信処理により、通信装置20aと通信装置20bにおいて記憶するデータ量を調整することを決定する。分割サイズ決定部32aは、通信装置20aが記憶するデータの大きさの変動量を、式(1)を用いて算出する。
式(1)において、IRsは、処理対象のデータの全容量のうち、送信側の通信装置20が最初の送信の際に記憶しているデータ量の割合を表わす。Vsは、送信側の通信装置20が保存可能なデータ容量の最大値であり、Vrは受信側の通信装置20が保存可能なデータ容量の最大値である。Pは、記憶するデータ量の調整に使用される送信処理の回数である。
図8の例では、データDについての最初の送受信の際には、送信側の通信装置20aにおいて、データDのうちの50%を保持している。例えば、通信装置20aが保存可能なデータ容量の最大値は、通信装置20bが保存可能なデータ容量の最大値の半分であるとする。すると、VsがVrの2分の1となるので、Vs/(Vs+Vr)=1/3となる。図8の例では、記憶するデータ量の調整に使用される送信処理の回数Pが3であるので、式(1)より、変動量は、次のように計算できる。
変動量(%)=(0.5−1/3)×100/3≒8% ・・・(2)
分割サイズ決定部32aは、得られた変動量を、適宜、データのハッシュ値に対応付けて記憶する。
分割サイズ決定部32aは、得られた変動量を用いて、2回目の送信処理の際に通信装置20aが記憶するデータの大きさと、通信装置20bに記憶させるデータの大きさを決定する。図8の例では、データDのうちで最初に通信装置20aが記憶している割合は50%であり、変動量が8%である。さらに、通信装置20aが記憶可能なデータの最大量は転送装置20bが記憶可能なデータの最大量よりも小さい。このため、データ分割サイズ決定部32aは、2回目の送信処理の際に通信装置20aが保持するデータを、データDの前半50%から変動量である8%分を減らすことにより、データの先頭から42%に変更する。通信装置20aが保持するデータ量の変動に伴い、分割サイズ決定部32aは、通信装置20bに記憶させるデータを、データDの後半50%から8%分を増加させることにより、データの末尾側の58%分に変更する。分割サイズ決定部32aは、決定した割合を分割処理部33aと特定部35aに通知する。
分割処理部33aは、分割サイズ決定部32aからの通知に従って、データDを分割データD(1−42)と分割データD(43−100)に分割する。なお、分割データD(1−42)はデータDの先頭から42%のデータであり、分割データD(43−100)はデータDの先頭から42%に後続するデータである。
特定部35aは、キャッシュ41a−1を参照することにより、通信装置20bとの通信に際して通信装置20aがデータDの前半50%を記憶していることを特定する。そこで、特定部35aは、データDの前半50%と、送信対象のデータがデータDの前半50%であることを表わすアドレス情報を、通信装置20bに対する送信対象のデータとして特定する。さらに、特定部35aは、分割サイズ決定部32aから通知された割合のうち、通信装置20aが記憶するデータのアドレス情報と、データDのハッシュ値Hも、送信対象として特定する。このため、例えば、特定部35aは、図8に示すパケットTD2を、データDの2回目の送信の際に送信するパケットとして生成することができる。なお、パケットTD1と同様に、パケットTD2には適宜ヘッダ等が含められる。特定部35aは、生成したパケットTD2を通信部21a経由で通信装置20bに向けて送信する。
一方、保存処理部34aは、重複カウンタ42aにデータDの送信回数を記録する。このため、通信装置20aが保持する重複カウンタ42aは、重複カウンタ42a−2に示すように更新される。さらに、保存処理部34aは、データDのうちで転送装置20aが保持する分のデータを、分割前のデータのハッシュ値、および、保持対象のデータのアドレス情報に対応付けて格納する。このため、保存処理部34aの処理により、通信装置20aが保持するキャッシュ41aには、キャッシュ41a−2に示す情報が格納される。すなわち、キャッシュ41aには、データDのハッシュ値Hに対応付けて、データDの先頭から42%分の分割データD(1−42)と、アドレスの情報(1−42)が記録される。
次に、通信装置20bでの処理について説明する。通信装置20bの通信部21bは、パケットTD2を受信する。復元処理部36bは、パケットTD2に含まれているハッシュ値がキャッシュ41b−1に含まれているかを判定する。通信装置20bがパケットTD2を受信したときには、ハッシュ値Hやハッシュ値Hに対応付けられた情報がキャッシュ41b−1に含まれている。すると、復元処理部36bは、パケットTD2に含まれているデータと、キャッシュ41b−1に含まれているデータを、各データのアドレス情報に対応付けられた順序でつなぎ合わせることにより、データDを復元する。すなわち、復元処理部36bは、パケットTD2に含まれているデータD(1−50)の後に、キャッシュ41b−1中に保持しているD(51−100)をつなげたデータを生成することにより、データDを復元できる。復元処理部36bは、復元したデータDを、予め設定された出力先に出力する。例えば、データDが通信装置20b中で処理される場合には、復元処理部36bはデータDを、通信装置20b中のアプリケーション処理部(図示せず)に出力できる。一方、通信装置20に端末10が接続されており、端末10でアプリケーションが動作している場合、復元処理部36bは通信部21b経由でデータDを端末10に送信する。
一方、保存処理部34bは、パケットTD2を用いて、データDのうちで通信装置20aにおいて格納されている領域のアドレスを取得する。さらに、保存処理部34bは、パケットTD2に含まれているデータDのうち、通信装置20aで保持されていない領域を、通信装置20bが保持する対象として認識する。図8の例では、データDの先頭から42%(D(1−42))が通信装置20aで格納されるので、保存処理部34bは、データDの先頭から42%のデータの後続データ(D(43−100))を通信装置20bで格納することが要求されていると認識する。そこで、保存処理部34bは、分割データD(43−100)と、分割データD(43−100)のアドレス情報を、データDのハッシュ値(H)に対応付けて、キャッシュ41bに格納する。このため、通信装置20bに中のキャッシュ41b−1は、キャッシュ41b−2に示すように更新される。
(3)3回目のデータ送信
図9を参照しながら、通信装置20aから通信装置20bに、データDが3回目に送信される場合の処理の例を説明する。
重複判定部31aは、データDのハッシュ値がキャッシュ41a−2に記録されていると判定し、重複カウンタ42a−2からデータDの送信回数を取得する。ここでは、重複判定部31aは、データDが既に2回送信されているので今回の送信処理が3回目であると認識する。分割サイズ決定部32aは、データDの送受信処理の回数が、記憶するデータ量の調整に使用される送信処理の回数Pを超えているかを判定する。図9の例でもP=3であるので、分割サイズ決定部32aは、通信装置20aと通信装置20bにおいて記憶するデータ量を調整することを決定する。そこで、分割サイズ決定部32aは、2回目のデータ送信の際に求めた変動量を用いて、3回目の送信処理の際に通信装置20aが記憶するデータの大きさと、通信装置20bに記憶させるデータの大きさを決定する。
図9の例では、通信装置20aがデータDのうちの先頭の42%を記憶している。さらに、図8を参照しながら説明したとおり、1回の変動処理によって、通信装置20aが保持するデータ量は8%減少する。このため、データ分割サイズ決定部32aは、3回目の送信処理の際に通信装置20aが保持するデータを、データDの先頭から34%に変更する。さらに、通信装置20aが保持するデータ量の変動に伴い、分割サイズ決定部32aは、通信装置20bに記憶させるデータを、データの末尾側の66%分に変更する。分割サイズ決定部32aは、決定した割合を分割処理部33aと特定部35aに通知する。
分割処理部33aは、分割サイズ決定部32aからの通知に従って、データDを分割データD(1−34)と分割データD(35−100)に分割する。ここで、分割データD(1−34)はデータDの先頭から34%のデータであり、分割データD(35−100)はデータDの先頭から34%に後続するデータである。
特定部35aは、キャッシュ41a−2を参照することにより、通信装置20bとの通信に際して通信装置20aがデータDの先頭から42%を記憶していることを特定する。そこで、特定部35aは、データDの先頭から42%を、アドレス情報、および、データDのハッシュ値と共に、通信装置20bに対する送信対象のデータとして特定する。さらに、特定部35aは、分割サイズ決定部32aから通知された割合のうち、通信装置20aが送信する割合の情報も、送信対象の情報とする。このため、特定部35aは、図9に示すパケットTD3を、データDの2回目の送信の際に送信するパケットとして生成することができる。なお、パケットTD1などと同様に、パケットTD3には、適宜、ヘッダ等が含められる。特定部35aは、生成したパケットTD3を通信部21a経由で通信装置20bに向けて送信する。
その後、保存処理部34aは、2回目にデータDを送信したときと同様に、重複カウンタ42aとキャッシュ41aの更新処理を行う。この処理により、通信装置20aが保持する重複カウンタ42aは、重複カウンタ42a−3に示すとおりになる。一方、通信装置20aが保持するキャッシュ41aには、キャッシュ41a−3に示す情報が格納される。
次に、通信装置20bでの処理について説明する。通信装置20bでの処理は、2回目にデータDを通信装置20bが受信した場合と同様である。通信装置20bの復元処理部36bは、通信部21bを介してパケットTD3を受信する。復元処理部36bは、パケットTD3に含まれているハッシュ値がキャッシュ41b−2に含まれているので、パケットTD3に含まれているデータと、キャッシュ41b−2に含まれているデータから、データDを復元する。その後、復元処理部36bは、復元したデータDを、予め設定された出力先に出力する。
一方、保存処理部34bは、復元されたデータDのうち、通信装置20aで格納されている領域のアドレスを取得する。さらに、保存処理部34bは、データDのうち、通信装置20aで保持されていない領域を、通信装置20bが保持する対象としてキャッシュ41bに格納する。図9の例では、データDの先頭から34%(D(1−34))が通信装置20aで格納されている。このため、保存処理部34bは、データDの先頭から34%のデータに後続する分割データ(D(35−100))と、分割データD(35−100)のアドレス情報を、データDのハッシュ値(H)に対応付けて、キャッシュ41bに格納する。その結果、通信装置20bに中のキャッシュ41b−2は、キャッシュ41b−3に示すように更新される。
(4)送信回数がデータ量の調整に用いる送信処理の回数Pを超えたケース
4回目以降にデータDが通信装置20aから通信装置20bに送信される場合、送信側の通信装置20aの分割サイズ決定部32aは、送信回数が記憶するデータ量の調整に使用される送信処理の回数Pを超えていると判定する。このため、4回目以降には、分割サイズ決定部32aはデータ量の変更を行わないことを決定する。そこで、特定部35aは、キャッシュ41a−3に記録されているデータDの先頭から34%(D(1−34))と、データのアドレス情報、データDのハッシュ値を含むパケットを通信装置20bに送信する。
一方、通信装置20bでは、3回目の送信処理と同様に復元処理が行われる。保存処理部34bは、データDのうちで通信装置20aが保持している割合が変動していないことを、受信パケット中の情報とキャッシュ41b−3の情報から特定すると、キャッシュ41b−3を更新せずに処理を終了する。
なお、図8、図9を参照しながら説明した処理は一例であり、実装に応じて処理は変更され得る。例えば、送信側の通信装置20がデータの送信処理のたびに変動量を計算しても良い。さらに、データ量の調整に用いる送信処理の回数Pや、最初に送信側の通信装置20が記憶するデータの容量は任意に変更され得る。
図10は、送信処理の例を説明するフローチャートである。重複判定部31は、送信データD(1−100)を取得する(ステップS21)。ここで、通信装置20自身がアプリケーションなどを処理する場合、重複判定部31は、通信装置20での処理によって生成された送信データを取得できる。一方、通信装置20に端末10が接続されており、端末10でアプリケーションが動作している場合、重複判定部31は、端末10から送信データを取得できる。重複判定部31は、送信対象のデータD(1−100)を識別する情報として、データD(1−100)のハッシュ値Hを算出する(ステップS22)。重複判定部31は、ハッシュ値Hがキャッシュ41中に含まれているかを判定する(ステップS23)。
ハッシュ値Hがキャッシュ41中に含まれていない場合、分割サイズ決定部32は、送信側の通信装置20で保存するデータのアドレスの範囲(保存データアドレス範囲)Rを決定する(ステップS23でNo、ステップS30)。保存処理部34は、ハッシュ値Hを重複カウンタ42に保存する(ステップS31)。なお、ステップS31では、ハッシュ値Hに送受信の回数=0が対応付けられる。さらに、保存処理部34は、保存データアドレス範囲分のデータ(D(R))と、保存データアドレス範囲の値Rをキャッシュ41に保存する(ステップS32)。その後、特定部35は、送信先の通信装置20に向けて、保存データアドレス範囲R、送信対象のデータD(1−100)、送信対象のデータのハッシュ値Hを含むパケットを、通信部21経由で送信する(ステップS33)。その後、保存処理部34は、重複カウンタ42において、ハッシュ値Hに対応するカウント値を1つインクリメントして処理を終了する(ステップS34)。
一方、送信対象のデータのハッシュ値Hがキャッシュ41中に含まれている場合、分割サイズ決定部32は、保存データ量の調整終了までの転送回数Pがカウント値以下であるかを判定する(ステップS23でYes、ステップS24)。保存データ量の調整終了までの転送回数Pがカウント値以下である場合、分割サイズ決定部32は、保存データアドレスの変動量Vを算出する(ステップS24でYes、ステップS25)。分割サイズ決定部32は、保存データアドレス範囲Rを保存データアドレスの変動量Vだけ変更したものを、新たな保存データアドレス範囲R’とする(ステップS26)。通信部21は、送信先の通信装置20に向けて、過去の保存データアドレス範囲R、保存データアドレス範囲分のデータD(R)、送信対象のデータのハッシュ値H、新たな保存データアドレス範囲R’を送信する(ステップS27)。保存処理部34は、新たな保存データアドレス範囲分のデータD(R’)をキャッシュ41に保存する(ステップS28)。その後、保存処理部34は、重複カウンタ42において、ハッシュ値Hに対応するカウント値を1つインクリメントして処理を終了する(ステップS34)。
一方、保存データ量の調整終了までの転送回数Pがカウント値を越えている場合、保存データアドレスの範囲は変更されない(ステップS24でNo)。そこで、特定部35は、送信先の通信装置20に向けて、保存データアドレス範囲R、保存していたデータD(R)、送信対象のデータのハッシュ値Hを含むパケットを、通信部21経由で送信する(ステップS29)。その後、ステップS34以降の処理が行われる。
なお、図10は処理の一例である。例えば、ステップS31〜S33の順序は任意に変更され得る。さらに、図8、図9を参照しながら説明したように、送信側の通信装置20において一度計算した変動量を記憶する場合には、ステップS25の処理は3回目以降の送信処理では行われなくても良い。さらに、ステップS23での判定の際、重複判定部31は、ハッシュ値がキャッシュ41に記録されているかを判定する代わりに、ハッシュ値が重複カウンタ42に記録されているかを判定しても良い。
図11は、受信処理の例を説明するフローチャートである。なお、図11は、データの全体が送信される場合には、パケット中にデータのハッシュ値が含まれないケースについての処理の例である。さらに、図11の例では、端末10でアプリケーションが動作しているため、通信装置20で復元されたデータは端末10に送信される。
通信部21は、パケットを受信する(ステップS40)。復元処理部36は、受信パケット中に、データのハッシュ値が含まれているかを判定する(ステップS41)。受信パケット中にデータのハッシュ値が含まれていない場合、1回目の送信であるため、データの全体(D(1−100))が送信されている(ステップS41でNo)。そこで、保存処理部34は、受信したデータのうち、送信側の通信装置20で保存されないデータを特定する(ステップS44)。保存処理部34は、受信データからハッシュ値Hを求め、得られたハッシュ値Hをキャッシュ41に保存する(ステップS45)。保存処理部34は、特定したデータを、特定したデータのアドレスと共にハッシュ値Hに対応付けてキャッシュ41に保存する(ステップS46)。その後、通信部21は、通信装置20に接続している端末10に送受信の対象となったデータD(1−100)を出力する(ステップS48)。
一方、受信パケット中にデータのハッシュ値が含まれている場合、送受信の対象となっているデータは、自装置により、過去に送受信されている(ステップS41でYes)。そこで、復元処理部36は、キャッシュ41中でハッシュ値Hに対応付けられているデータを取得すると共に、受信したデータD(R)とキャッシュ41から取得したデータを結合して、送受信対象のデータを復元する(ステップS42)。保存処理部34は、復元したデータD(1−100)のうち、送信側での保存データアドレス範囲R’に含まれないデータをキャッシュに保存する(ステップS43)。その後、復元処理部36は、データの復元に成功したかを判定する(ステップS47)。データの復元に成功すると、通信部21は、通信装置20に接続している端末10に送受信の対象となったデータD(1−100)を出力する(ステップS47でYes、S48)。一方、データの復元に成功していないと判定すると、ステップS40以降の処理が繰り返される(ステップS47でNo)。
図12は、分割サイズの調整例を説明する図である。図8〜図11の説明では、分かり易くするために、特定のデータに注目して説明したが、複数のデータに対して個別に分割サイズの調整等が行われ得る。このため、図12に示すように、データA〜データCが通信装置20aから通信装置20bに送信される場合、送信回数に応じて、送信側の通信装置20aは自装置で記憶するデータの範囲を決定する。送信側の通信装置20aは、自装置で記憶する対象に決定したデータを保持すると共に、各データについて、自装置で記憶する対象に決定した範囲を、受信側の通信装置20bに通知する。このため、受信側の通信装置20bでは、送信側の通信装置20aが保持していないアドレス領域のデータに対する格納処理を、データA〜Cの各々に対して行う。
例えば、通信装置20aがデータの格納に使用可能な領域は、通信装置20bがデータの格納に使用可能な領域よりも小さいとする。また、データA〜Cの中では、送信処理回数は、データA、データB、データCの順に大きくなるとする。すると、通信装置20aは、送信処理の回数が格納データ量の調整に使用する送信回数Pになるまで、データAのうちで通信装置20bに記憶させるデータ量を段階的に増加させていくと共に、自装置が記憶するデータ量を削減する。データAについては、送受信の回数が送信回数Pに達していないので、データAのうちで通信装置20aが保持している分割データA_1の量は、データAのうちで通信装置20bが保持している分割データA_2の量よりも多い。
データBに対する送受信の回数は、送信回数Pには至っていないものの、データAの送信回数よりも大きいとする。この場合、図12に示すように、データBのうちで通信装置20aが保持している分割データB_1の量と、データBのうちで通信装置20bが保持している分割データB_2の量の差は、分割データA_1と分割データA_2の差よりも小さくなっている。
一方、データCについては、送受信の回数は、送信回数Pを超えているとする。このため、通信装置20aと通信装置20bがデータCを保持する割合は各装置が保持可能なデータ量に応じて最適化されている。従って、データCのうちで通信装置20aが保持している分割データC_1の量と、データCのうちで通信装置20bが保持している分割データC_2の量の比は、各装置が保持可能なデータ量の比となっている。
このように、第2の実施形態によると、通信装置20が格納可能なデータ量に応じて、各装置が保持するデータの割合を変更することができる。なお、以上の例では、各装置が保持可能なデータ量に応じて、各装置の保持するデータ量を最適化する場合を例として説明したが、送信側と受信側の各々で保持するデータの割合や、割合の決定方法は、実装に応じて任意に変更され得る。
<第3の実施形態>
第1および第2の実施形態では、2台の通信装置20の間での通信処理の例を説明したが、第3の実施形態では、3台以上の各通信装置20の各々がデータの一部を記憶し、通信処理を行う場合について説明する。
図13は、3つの通信装置での通信処理の例を説明する図である。図13に示すネットワークには、通信装置20a〜20cが含まれている。第3の実施形態では、パケットを受信した通信装置20は、送信側の通信装置20に対して、送信対象となっているデータの取得に成功した場合、データ取得を完了したことを表わす通知(完了通知)を送信側の通信装置20に送信する。また、送信側の通信装置20は、受信側の通信装置20から完了通知を受信するまでは、記憶部40のうちのキャッシュ41以外の領域に送信対象のデータを保持しているものとする。以下、第3の実施形態を、通信装置20aから通信装置20bへのデータAの送信、通信装置20aから通信装置20cへのデータAの送信、通信装置20cから通信装置20bへのデータAの送信に分けて説明する。
(1)通信装置20aから通信装置20bへのデータAの送信
通信装置20aが初めてデータAを送信するとする。通信装置20aの分割処理部33aは、第1の実施形態で説明した処理と同様の処理により、送信対象のデータAを分割データA−1とA−2に分割したとする。また、保存処理部34aは、分割データA−1と分割データA−1のアドレス情報を、データAのハッシュ値と共にキャッシュ41aに格納したとする。特定部35aは、通信装置20b宛に、データAと通信装置20aが分割データA−1を保持することを示す情報を含むパケットを送信する。
通信装置20b中の保存処理部34bは、第1の実施形態と同様の処理により、データAのうち分割データA−2を通信装置20aで保持されていない情報として、キャッシュ41bに格納する。さらに、特定部35bは、データAの受信に成功したことを表わす完了通知を生成し、通信部21経由で通信装置20aに送信する。
通信装置20a中の通信部21aは完了通知を受信する。重複判定部31aは、データAの受信の成功を通知する完了通知が通信部21aで受信されると、記憶部40a中に保持しているデータAを削除する。
その後、通信装置20aが、再度、データAを通信装置20bに送信する場合、重複判定部31aは、第1の実施形態と同様に、データAを取得し、キャッシュ41aにデータAのハッシュ値が含まれていることを特定する。さらに、重複判定部31aは、取得したデータAを記憶部40aに保持する。一方、特定部35aは、キャッシュ41a中に格納されているデータAのハッシュ値(hashA)、分割データA−1、および、分割データA−1のアドレス情報を、通信装置20bに送信する(ステップS51)。通信装置20b中の復元処理部36bは、第1の実施形態と同様の処理により、受信したパケット中の分割データA−1とキャッシュ41bに格納している分割データA−2を用いてデータAを復元する。
(2)通信装置20aから通信装置20cへのデータAの送信
次に、通信装置20aが通信装置20cにもデータAを送信する場合、重複判定部31aは、送信対象のデータAのハッシュ値がキャッシュ41aに含まれていることを特定する。すると、特定部35aは、キャッシュ41a中に格納されているデータAのハッシュ値、分割データA−1、および、分割データA−1のアドレス情報を、通信装置20cに送信する(ステップS52)。
通信装置20cの復元処理部36cは、受信パケットにデータAのハッシュ値が含まれているため、受信パケットに含まれているデータを用いた復元処理を行おうとする。しかし、ステップS52の時点では、受信パケット中の含まれているハッシュ値がキャッシュ41cに含まれていないので、復元処理部36cは復元処理に失敗する。すると、復元処理部36cは、受信パケット中に含まれている分割データA−1とハッシュ値の組み合わせを保持すると共に、データの復元を行うために通信装置20cへの追加のデータ送信を要求する送信要求を生成する。ここで、送信要求には、データ送信を要求するデータを特定するために使用可能な情報が含まれる。図13の例では、送信要求には、データAのハッシュ値、受信に成功した分割データA−1のアドレスとそのアドレスで特定される情報の受信に成功したことを表わす情報が含まれているとする。復元処理部36cは、通信部21cを介して、送信要求を通信装置20aに送信する(ステップS53)。
通信装置20a中の特定部35aは、通信部21aを介して送信要求を取得する。特定部35aは、送信要求中のハッシュ値とアドレスの情報を用いて、送信要求によって要求されたデータを特定する。ステップS53で送信された送信要求の場合、データAのハッシュ値と分割データA−1の受信に成功したことが通知されている。そこで、特定部35aは、データAのうちで分割データA−1を除いた領域のデータ(分割データA−2)が、通信装置20cにおいて受信されていないと判定する。特定部35aは、データAのハッシュ値、分割データA−2、データAのうちで通信装置20aが記憶する領域のアドレスを含めた送信パケットを生成する。例えば、特定部35aは、以下の情報を含む送信パケットを生成する。
ハッシュ値 :hashA
データ :分割データA−2
通信装置20aで記憶するデータのアドレス:A(1−50)
特定部35aは、生成したパケットを通信部21a経由で通信装置20cに送信する(ステップS54)。
通信装置20cの復元処理部36cは、通信部21cを介してパケットを取得すると、既に取得済みの分割データA−1と、受信パケット中の分割データA−2を用いてデータAを復元する。保存処理部34cは、復元処理が成功すると、復元されたデータAのうちで、通信装置20aで記憶されていない領域を、データAのハッシュ値に対応付けて記憶する。このため、保存処理部34cの処理により、キャッシュ41cには、図13に示すように、分割データA−2が格納される。さらに、ステップS54のパケットの受信により、復元処理に成功しているので、特定部35cは、データAの受信に成功したことをあらわす完了通知を生成し、通信部21c経由で通信装置20aに送信する。
通信装置20a中の重複判定部31aは、データAの受信の成功を通知する完了通知が通信部21aで受信されると、記憶部40a中に保持しているデータAを削除する。
(3)通信装置20cから通信装置20bへのデータAの送信
この時点では、ステップS54での処理により、通信装置20cのキャッシュ41cにデータAのハッシュ値や分割データA−2が含まれている。このため、送信対象のデータAの代わりに、特定部35cは、データAのハッシュ値、分割データA−2、および、分割データA−2のアドレス情報を、通信装置20bに送信する(ステップS55)。
通信装置20bの復元処理部36bは、受信パケットにデータAのハッシュ値が含まれているため、受信パケットに含まれているデータを用いた復元処理を行おうとする。しかし、通信装置20bが備えるキャッシュ41bには、データAのハッシュ値に対応付けて分割データA−2と、分割データA−2のアドレス情報が記録されている。このため、復元処理部36bは、データAのうち分割データA−2しか取得しないので、復元処理に失敗する。そこで、復元処理部36bは、データの復元を行うために通信装置20cへの追加のデータ送信を要求する送信要求を生成する。ここで生成される送信要求には、以下の情報が含まれる。
ハッシュ値 :hashA
受信に成功したデータのアドレス:A(51−100)
復元処理部36bは、通信部21bを介して、送信要求を通信装置20cに送信する(ステップS56)。
通信装置20c中の特定部35cは、通信部21cを介して送信要求を取得する。特定部35cは、送信要求中のハッシュ値とアドレスの情報を用いて、送信要求によって要求されたデータを特定する。ステップS56で送信された送信要求の場合、データAのハッシュ値とA(51−100)の領域のデータの受信に成功したことが通知されているので、特定部35aは、データAのうちでA(51−100)を除いた領域のデータ(分割データA−1)が、通信装置20bにおいて受信されていないと判定する。そこで、特定部35cは、データAのハッシュ値、分割データA−1、データAのうちで通信装置20cが記憶する領域のアドレスを含めた送信パケットを生成する。例えば、特定部35cは、以下の情報を含む送信パケットを生成する。
ハッシュ値 :hashA
データ :分割データA−1
通信装置20cで記憶するデータのアドレス:A(51−100)
特定部35cは、生成したパケットを通信部21c経由で通信装置20bに送信する(ステップS57)。
通信装置20bの復元処理部36bは、通信部21bを介してパケットを取得すると、分割データA−2と受信パケット中の分割データA−1を用いてデータAを復元する。ここで、保存処理部34cは、復元されたデータAのハッシュ値に対応付けてデータAの一部(分割データA−2)を既にキャッシュ41bに記憶しているので、復元処理が成功してもキャッシュ41bの情報を更新しない。ステップS57のパケットの受信により、復元処理に成功しているので、特定部35bは、データAの受信に成功したことを表わす完了通知を生成し、通信部21b経由で通信装置20cに送信する。
通信装置20c中の重複判定部31cは、データAの受信の成功を通知する完了通知が通信部21cで受信されると、記憶部40c中に保持しているデータAを削除する。
図14は、第3の実施形態での送信処理の例を説明するフローチャートである。ステップS61〜S67の処理は、図6を参照しながら説明したステップS1〜S7と同様である。
特定部35は、データの送信先の通信装置20から完了通知を受信したかを判定する(ステップS68)。データの送信先の通信装置20から完了通知を受信した場合、特定部35は処理を終了する(ステップS68でYes)。
一方、データの送信先の通信装置20から完了通知を受信していない場合、特定部35は、データの送信先の通信装置20から送信要求を受信したかを判定する(ステップS68でNo、ステップS69)。送信要求を受信していない場合、ステップS68に戻る(ステップS69でNo)。送信要求を受信した場合、送信要求で要求されたアドレスのデータを送信して、ステップS68に戻る(ステップS69でYes、ステップS70)。
図15は、受信処理の例を説明するフローチャートである。ステップS81〜S85の処理は、図7を参照しながら説明したステップS11〜S15と同様である。従って、ステップS81〜S85では、受信側の通信装置20は、送信側の通信装置20から送信対象のデータの全体を受信している。そこで、ステップS85の処理後、特定部35は、受信完了通知を、データの送信元の通信装置20に送信する(ステップS95)。
受信したデータにインデックスが含まれている場合、復元処理部36は、インデックスに対応付けられている分割データがキャッシュ41に保持されているかを判定する(ステップS82でYes、ステップS86)。インデックスに対応付けられている分割データがキャッシュ41に保持されていない場合、復元処理部36は、不足しているデータのアドレス情報を送信要求として、データの送信元の通信装置20に送信する(ステップS86でNo、ステップS87)。その後、通信部21は、送信要求の宛先とした通信装置20からパケットを受信する(ステップS88)。すると、復元処理部36は、ステップS88で取得したパケット中のデータを含めて、送信元の通信装置20が送信しようとしたデータの復元ができたかを判定する(ステップS89)。送信元の通信装置20が送信しようとしたデータの復元ができていない場合、ステップS87以降の処理が行われる(ステップS89でNo)。
一方、データの復元ができた場合、受信側の通信装置20は、これまでに送受信の対象となっているデータの一部をキャッシュ41に保持していないが、今回、送受信の対象のデータを取得したことになる(ステップS89でYes)。そこで、次回以降の通信に備えて、送受信の対象となっているデータの一部をキャッシュ41に保持するために、ステップS83以降の処理を行う(ステップS89でYes、ステップS83)。
次に、受信したデータにインデックスが含まれており、かつ、インデックスに対応付けられている分割データがキャッシュ41に保持されている場合の処理について説明する(ステップS82でYes、ステップS86でYes)。この場合、復元処理部36は、インデックスに対応付けられている分割データをキャッシュ41から読み出す(ステップS90)。復元処理部36は、受信したデータと読み出した分割データを、アドレス情報に従って組み合わせる(ステップS91)。復元処理部36は、ステップS91の処理により送信元の通信装置20が送信しようとしたデータの復元ができたかを判定する(ステップS92)。送信元の通信装置20が送信しようとしたデータの復元ができていない場合、復元処理部36は、不足しているデータのアドレス情報を送信要求として、データの送信元の通信装置20に送信する(ステップS92でNo、ステップS93)。その後、通信部21は、送信要求の宛先とした通信装置20からパケットを受信する(ステップS94)。すると、復元処理部36は、ステップS94で取得したパケット中のデータを含めて、送信元の通信装置20が送信しようとしたデータの復元ができたかを判定する(ステップS92)。送信元の通信装置20が送信しようとしたデータの復元ができていない場合、ステップS93以降の処理が行われる(ステップS92でNo)。一方、送信元の通信装置20が送信しようとしたデータの復元ができた場合、特定部35は、受信完了通知を、データの送信元の通信装置20に送信する(ステップS92でYes、ステップS95)。
このように、第3の実施形態によると、3台以上の各通信装置20の各々がデータの一部を記憶し、記憶したデータを活用した重複処理を行いつつ、通信処理を行うことができる。さらに、送信側の通信装置20で記憶しているデータと受信側の通信装置20で記憶しているデータから、送受信対象のデータが再現されない場合、受信側の通信装置20からの要求に応じて、送信側の通信装置20は、未送信の分割データを送信する。このため、各通信装置20が他の通信装置20で保持されている分割データのアドレス情報等を管理しなくても、3台以上の各通信装置20が自装置で記憶しているデータを用いた重複処理を行うことができる。このため、第3の実施形態を用いると、通信装置20が他の通信装置20と行った通信の結果を用いて重複除去を効率的に行うことができる場合がある。
<第4の実施形態>
第4の実施形態では、消失訂正符号を用いた通信が行われる場合について説明する。
図16は、第4の実施形態にかかる通信装置の構成の例を説明する図である。通信装置50は、通信部21、制御部55、記憶部40を備える。制御部55は、重複判定部31、分割サイズ決定部32、保存処理部34、特定部35、符号化処理部56、復号処理部57を有する。記憶部40は、キャッシュ41として動作し、さらに、オプションとして、重複カウンタ42を保持する。
符号化処理部56は、分割サイズ決定部32で決定されたサイズに合わせて送信対象のデータを分割した上で、符号化する。保存処理部34は、符号化処理部56が符号化した分割データを、送信対象のデータのハッシュ値に対応付けてキャッシュ41に記録する。特定部35は、キャッシュ41中に含まれている符号化された分割データ等を、適宜、送信対象として特定する。復号処理部57は、他の通信装置50から符号化された分割データを含むパケットを受信した場合、符号化された分割データとキャッシュ41に保持しているデータを用いて、送受信の対象のデータを復元する。
なお、送信側の通信装置50から受信側の通信装置50に、送信履歴の無いデータが送信される場合は、他の実施形態と同様に、符号化を行わずに送信対象のデータの全体が受信側の通信装置50に送信される。ただし、送信側の通信装置50が記憶するデータは、符号化によって得られた割符などの形で、送信対象のデータのハッシュ値と共にキャッシュ41に格納される。さらに、第4の実施形態においても、送信側の通信装置50は、送信側の通信装置50で記憶しているデータを特定する際に使用可能なアドレス情報を受信側の通信装置50に通知する。このため、受信側の通信装置50に含まれている符号化処理部56は、送信側で保存しているデータのアドレスを用いて、自装置が保持するデータの量を決定すると共に、自装置が保持するデータを符号化する。このとき、符号化処理部56は、送受信の対象となっているデータのうち、送信側の通信装置50で記憶されていないデータと、送信側の通信装置50で記憶されているデータの一部を、受信側の通信装置50で記憶するデータとして選択しても良い。すると、送信側と受信側の双方で、符号化したデータを保持しているので、2回目以降に送信されたデータの一部が欠落した場合でも、データの復元が可能になるケースがある。
例えば、送信側の通信装置50aにおいてデータAの先頭から60%を符号化した上で、記憶しているとする。受信側の通信装置50bは、データAの末尾側40%に加えて、通信装置50aが保持しているデータの一部を保持対象としたために、データAの末尾よりの60%のデータを符号化して保持したとする。この場合、通信装置50aから送信されたデータの一部が欠落したとしても、通信装置50bが保持している符号化データと通信装置50bが通信装置50aから受信した符号化データを合わせて、通信装置50bがデータAを復元できる場合がある。
図16に示す転送装置50でも、ハードウェア構成は図4に示すとおりである。ネットワーク接続装置104は、通信部21として動作する。制御部55はプロセッサ101により実現される。さらに、記憶部40はメモリ102によって実現される。
図17は、消失訂正を用いた割符情報の生成方法の例を説明する図である。図17の例では、送受信の対象のデータを4つの分割データに分割した上で、8行4列の行列式を割符化行列として8種類の符号化データを生成する場合を示している。また、異なる2つの符号化データが1つの割符データとして使用される。
図17の例では、割符化行列で成分の値が1に設定されている分割データ同士での排他的論理和(XOR)を計算することにより、各符号化データが生成される。例えば、送受信の対象のデータが1〜4の分割データに分割された場合、割符Aに含める1つ目の符号化データは、1つ目の分割データ、2つ目の分割データ、および、4つ目の分割データの排他的論理和である。同様に、割符Aの2つ目の符号化データは、2つ目の分割データと3つ目の分割データの排他的論理和である。さらに、割符Bの1つ目の符号化データは、1つ目の分割データと3つ目の分割データの排他的論理和であり、2つ目の符号化データは、2つ目の分割データ、3つ目の分割データ、および、4つ目の分割データの排他的論理和である。割符Cの1つ目の符号化データは、1つ目の分割データと4つ目の分割データの排他的論理和であり、2つ目の符号化データは、2つ目の分割データである。割符Dの1つ目の符号化データは、1つ目の分割データであり、2つ目の符号化データは2つ目の分割データと4つ目の分割データの排他的論理和である。これらの割符の生成は、送信側の通信装置50の符号化処理部56で行われる。
一方、復号処理部57では、受信したデータやキャッシュ41に含まれている符号化データを復号することにより、送受信の対象となっているデータを復元する。このとき、例えば、復号処理部57は、割符同士の排他的論理和の算出等を行うことにより、データを復元する。
なお、符号化されたデータを含む割符を用いて、第3の実施形態と同様に、3つの通信装置50の間でのデータの送受信が行われても良い。3つの通信装置50の間でのデータの送受信が割符を用いて行われると、符号化データによる誤り訂正により、再送処理を行わずに通信ができる場合がある。
図18は、3つの通信装置50(50a〜50c)での通信処理の例を説明する図である。例えば、送受信の対象がデータAであるとする。また、図18では、通信装置50aから通信装置50bにデータAと共に、通信装置50aがデータAの80%分の分割データを保持することを通知したとする。2回目以降の通信に備えて、通信装置50aは、データAの80%分の分割データを符号化して得られた符号化データa1_80を、データAのハッシュ値に対応付けて、キャッシュ41aに保持する。
一方、通信装置50bの符号化処理部56bは、データAのうちで通信装置50aが保持していないデータと、通信装置50aが保持しているデータの一部を合わせて、通信装置50bが保持するデータを決定する。図18の例では、符号化処理部56bは、データAの80%分のデータを含む符号化データa2_80を、データAのハッシュ値に対応付けて、キャッシュ41bに格納したとする。
次に、通信装置50aは、通信装置50bへのデータAの送信後に通信装置50cにデータAを送信しようとしたとする。この場合、図13を参照した説明と同様の処理により、通信装置50cには符号化データa1_80が送信される。通信装置50cの復号処理部57cは、符号化データa1_80を復号化するが、符号化データa1_80にはデータAの80%しか含まれていないので、データAの復元に失敗する。そこで、特定部35cは、第3の実施形態と同様に、通信装置50aに追加のデータを要求する。追加のデータの受信により、通信装置50cでデータAが復元されると、符号化処理部56cは、データAのうち、通信装置50aで保持されていないデータを含むデータを符号化して、キャッシュ41cに格納する。図18の例では、符号化処理部56cは、データAの40%分のデータを含む符号化データa3_40を、データAのハッシュ値に対応付けて、キャッシュ41cに格納したとする。
このように、通信装置50a中のキャッシュ41aに符号化データa1_80、通信装置50b中のキャッシュ41bに符号化データa2_80、通信装置50c中のキャッシュ41cに符号化データa3_40が格納されたとする。
その後、通信装置50aが通信装置50bにデータAを送信する際には、特定部35aは、キャッシュ41aに格納されている符号化データa1_80とデータAのハッシュ値を送信対象とする(ステップS101)。すると、通信装置50bの復号処理部57bは、キャッシュ41bに格納されている符号化データa2_80と符号化データa1_80を用いてデータAを復元する。
一方、通信装置50aが通信装置50cにデータAを送信する際にも、特定部35aは、符号化データa1_80とデータAのハッシュ値を送信対象とする(ステップS102)。この場合、通信装置50cの復号処理部57cは、キャッシュ41cに格納されている符号化データa3_40と符号化データa1_80を用いてデータAを復元する。
次に、通信装置50cが通信装置50bにデータAを送信する場合の例を説明する。通信装置50cにおいても、データAの送信の際には、第3の実施形態と同様に、重複判定部31cがキャッシュ41c中にデータAのハッシュ値と符号化データa3_40が格納指されていることを認識する。すると、特定部35cはデータAの代わりに符号化データa3_40を送信対象として特定するので、データAのハッシュ値と符号化データa3_40が、通信装置50bに送信される(ステップS103)。
通信装置50b中の符号化処理部56bは、データAのハッシュ値に対応付けてキャッシュ41bに格納している符号化データa2_80と、受信データ中の符号化データa3_40を用いてデータAの復元を試みる。ここで、符号化データa2_80にはデータAの80%のデータが含まれ、符号化データa3_40にはデータAの40%のデータが含まれている。このため、符号化処理部56bは、符号化データa2_80と符号化データa3_40を用いてデータAの復元に成功する可能性がある。符号化処理部56bがステップS103で送信された符号化データとキャッシュ41b中に格納している符号化データから、データAの復元に成功すると、通信装置50bは通信装置50cに対して追加のデータの送信を要求しない。
このため、図18に示すように、符号化データを用いた3台以上の通信装置50間での通信では、第3の実施形態に比べて、送信側の通信装置50からの再送処理が発生しない場合がある。このため、第4の実施形態のように、消失訂正符号化を用いることにより、3台以上の通信装置50を含むシステムでの通信効率が改善する可能性がある。
<その他>
なお、実施形態は上記に限られるものではなく、様々に変形可能である。以下にその例をいくつか述べる。
例えば、以上の説明で示したキャッシュ41や重複カウンタ42は一例であり、実装に応じて変更され得る。例えば、キャッシュ41や重複カウンタ42に含まれる情報要素は、実装に応じて変更され得る。
符号化処理に使用される割符化行列は一例であり、実装に応じて変更され得る。また、割符に含まれるデータの量や各通信装置50が保持するデータの割合も、実装に応じて任意に変更され得る。
上述の第1〜第4の実施形態を含む実施形態に関し、さらに以下の付記を開示する。
(付記1)
通信先への送信履歴の無い送信データの一部である第1の分割データを、前記送信データを識別する識別情報に対応付けて記憶する記憶部と、
前記送信データと前記第1の分割データを特定する情報の組み合わせを含む送信パケットを送信することにより、前記送信データのうち前記第1の分割データに含まれないデータである第2の分割データを前記識別情報に対応付けて前記通信先に記憶させる通信部と、
前記送信パケットの送信後は、前記送信データの代わりに、前記識別情報と前記第1の分割データを前記通信先への送信対象として特定する特定部
を備えることを特徴とする通信装置。
(付記2)
前記送信データのうちで前記記憶部が記憶するデータを決定する決定部をさらに備え、
前記送信パケットの送信後に、前記決定部が前記送信データのうちで前記記憶部が記憶するデータを第3の分割データに決定すると、前記記憶部は、前記識別情報に対応付けて記憶するデータを、前記第1の分割データから第3の分割データに変更し、
前記通信部は、前記識別情報と前記第3の分割データを特定する情報の組み合わせを含む他の送信パケットを前記通信先に送信することにより、前記通信先に、前記送信データのうちで前記第3の分割データに含まれないデータである第4の分割データを前記識別情報に対応付けて記憶させる
ことを特徴とする付記1に記載の通信装置。
(付記3)
前記記憶部は、前記通信先に記憶させるデータを調整する調整回数をさらに記憶し、
前記決定部は、前記通信先へ前記送信データの一部以上を送信した回数が前記調整回数を超えると、前記送信データのうちで前記通信先に記憶させるデータを変更しないと判定し、
前記特定部は、前記送信データを識別する識別情報と共に、前記識別情報に対応付けて前記記憶部に格納されているデータを、前記通信先に送信する対象として特定する
ことを特徴とする付記2に記載の通信装置。
(付記4)
前記記憶部は、他の通信装置から受信した受信データに含まれている他の識別情報に対応付けて、前記他の識別情報で識別されるデータのうち、前記他の通信装置が記憶していない領域のデータを記憶し、
前記他の識別情報を含むデータパケットを受信すると、前記データパケット中のデータと前記他の識別情報に対応付けて前記記憶部が格納しているデータを用いて、送信対象のデータを復元する復元処理部
をさらに備えることを特徴とする付記1〜3のいずれか1項に記載の通信装置。
(付記5)
誤り訂正符号を用いた符号化処理を行う符号化処理部をさらに備え、
前記記憶部は、前記符号化処理により前記第1の分割データを符号化して得られたデータを、前記送信データを識別する識別情報に対応付けて記憶し、
前記通信部は、前記送信パケットを送信することにより、前記第2の分割データを符号化して得られるデータを前記識別情報に対応付けて前記通信先に記憶させる
ことを特徴とする付記1〜4のいずれか1項に記載の通信装置。
(付記6)
第1の通信装置と、
前記第1の通信装置と通信する第2の通信装置
を備え、
前記第2の通信装置は、
前記第1の通信装置への送信履歴の無い送信対象である対象データの一部である第1の分割データを、前記対象データを識別する識別情報に対応付けて記憶し、
前記対象データと前記第1の分割データを特定する情報の組み合わせを含む送信パケットを、前記第1の通信装置へ送信し、
前記第1の通信装置は、前記対象データのうち前記第1の分割データに含まれないデータである第2の分割データを前記識別情報に対応付けて記憶し、
前記第2の通信装置は、前記送信パケットの送信後は、前記対象データの代わりに、前記識別情報と前記第1の分割データを前記第1の通信装置へ送信する
ことを特徴とする通信システム。
(付記7)
前記第1の通信装置は、前記第2の通信装置から前記識別情報に前記第1の分割データを対応付けたパケットを受信すると、前記第1の分割データと前記第2の分割データを用いて、前記対象データを復元する
ことを特徴とする付記6に記載の通信システム。
(付記8)
前記第2の通信装置は、
前記送信パケットの送信後に、前記対象データのうちで前記第2の通信装置が記憶するデータを前記第1の分割データから第3の分割データに変更する場合、前記識別情報に対応付けて前記第3の分割データを記憶し、
前記識別情報と前記第3の分割データを特定する情報の組み合わせを含む他の送信パケットを前記第1の通信装置に送信し、
前記第1の通信装置は、前記他の送信パケットを受信すると、前記対象データのうち前記第3の分割データに含まれないデータである第4の分割データを前記識別情報に対応付けて記憶する
ことを特徴とする付記6または7に記載の通信システム。
(付記9)
第1の通信装置と、前記第1の通信装置と通信する第2の通信装置を含むネットワークにおいて、
前記第2の通信装置は、
前記第1の通信装置への送信履歴の無い送信対象である対象データの一部である第1の分割データを、前記対象データを識別する識別情報に対応付けて記憶し、
前記対象データと前記第1の分割データを特定する情報の組み合わせを含む送信パケットを、前記第1の通信装置へ送信し、
前記第1の通信装置は、前記対象データのうち前記第1の分割データに含まれないデータである第2の分割データを前記識別情報に対応付けて記憶し、
前記第2の通信装置は、前記送信パケットの送信後は、前記対象データの代わりに、前記識別情報と前記第1の分割データを前記第1の通信装置へ送信する
ことを特徴とする通信方法。
(付記10)
前記第1の通信装置は、前記第2の通信装置から前記識別情報に前記第1の分割データを対応付けたパケットを受信すると、前記第1の分割データと前記第2の分割データを用いて、前記対象データを復元する
ことを特徴とする付記9に記載の通信方法。
(付記11)
前記第2の通信装置は、
前記送信パケットの送信後に、前記対象データのうちで前記第2の通信装置が記憶するデータを前記第1の分割データから第3の分割データに変更する場合、前記識別情報に対応付けて前記第3の分割データを記憶し、
前記識別情報と前記第3の分割データを特定する情報の組み合わせを含む他の送信パケットを前記第1の通信装置に送信し、
前記第1の通信装置は、前記他の送信パケットを受信すると、前記対象データのうち前記第3の分割データに含まれないデータである第4の分割データを前記識別情報に対応付けて記憶する
ことを特徴とする付記9または10に記載の通信方法。
(付記12)
通信先への送信履歴の無い送信データの一部である第1の分割データを、前記送信データを識別する識別情報に対応付けて記憶し、
前記送信データと前記第1の分割データを特定する情報の組み合わせを含む送信パケットを送信することにより、前記送信データのうち前記第1の分割データに含まれないデータである第2の分割データを前記識別情報に対応付けて前記通信先に記憶させ、
前記送信パケットの送信後は、前記送信データの代わりに、前記識別情報と前記第1の分割データを前記通信先への送信対象として特定する
処理を通信装置に行わせることを特徴とする通信プログラム。
(付記13)
前記送信パケットの送信後に、前記送信データのうちで前記識別情報に対応付けて記憶するデータを前記第1の分割データから第3の分割データに変更すると、前記識別情報と前記第3の分割データを特定する情報の組み合わせを含む他の送信パケットを前記通信先に送信することにより、前記通信先に、前記送信データのうちで前記第3の分割データに含まれないデータである第4の分割データを前記識別情報に対応付けて記憶させる
処理を通信装置に行わせることを特徴とする付記12に記載の通信プログラム。
(付記14)
前記通信装置に、
前記通信先に記憶させるデータを調整する調整回数をさらに記憶し、
前記通信先への前記送信データの一部以上を送信した回数が前記調整回数を超えると、前記送信データのうちで前記通信先に記憶させるデータを変更しないと判定し、
前記送信データを識別する識別情報と共に、前記識別情報に対応付けて記憶しているデータを、前記通信先に送信する対象として特定する
処理を行わせることを特徴とする付記13に記載の通信プログラム。
(付記15)
前記通信装置に、
他の通信装置から受信した受信データに含まれている他の識別情報に対応付けて、前記他の識別情報で識別されるデータのうち、前記他の通信装置が記憶していない領域のデータを記憶し、
前記他の識別情報を含むデータパケットを受信すると、前記データパケット中のデータと前記他の識別情報に対応付けて記憶しているデータを用いて、送信対象のデータを復元する、
処理を行わせることを特徴とする付記12〜14のいずれか1項に記載の通信プログラム。
3 WAN
5 転送装置
6 キャッシュ
10 端末
20、50 通信装置
21 通信部
30、55 制御部
31 重複判定部
32 分割サイズ決定部
33 分割処理部
34 保存処理部
35 特定部
36 復元処理部
40 記憶部
41 キャッシュ
42 重複カウンタ
56 符号化処理部
57 復号処理部
101 プロセッサ
102 メモリ
103 バス
104 ネットワーク接続装置

Claims (7)

  1. 通信先への送信履歴の無い送信データの一部である第1の分割データを、前記送信データを識別する識別情報に対応付けて記憶する記憶部と、
    前記送信データと前記第1の分割データを特定する情報の組み合わせを含む送信パケットを送信することにより、前記送信データのうち前記第1の分割データに含まれないデータである第2の分割データを前記識別情報に対応付けて前記通信先に記憶させる通信部と、
    前記送信パケットの送信後は、前記送信データの代わりに、前記識別情報と前記第1の分割データを前記通信先への送信対象として特定する特定部
    を備えることを特徴とする通信装置。
  2. 前記送信データのうちで前記記憶部が記憶するデータを決定する決定部をさらに備え、
    前記送信パケットの送信後に、前記決定部が前記送信データのうちで前記記憶部が記憶するデータを第3の分割データに決定すると、前記記憶部は、前記識別情報に対応付けて記憶するデータを、前記第1の分割データから第3の分割データに変更し、
    前記通信部は、前記識別情報と前記第3の分割データを特定する情報の組み合わせを含む他の送信パケットを前記通信先に送信することにより、前記通信先に、前記送信データのうちで前記第3の分割データに含まれないデータである第4の分割データを前記識別情報に対応付けて記憶させる
    ことを特徴とする請求項1に記載の通信装置。
  3. 前記記憶部は、前記通信先に記憶させるデータを調整する調整回数をさらに記憶し、
    前記決定部は、前記通信先へ前記送信データの一部以上を送信した回数が前記調整回数を超えると、前記送信データのうちで前記通信先に記憶させるデータを変更しないと判定し、
    前記特定部は、前記送信データを識別する識別情報と共に、前記識別情報に対応付けて前記記憶部に格納されているデータを、前記通信先に送信する対象として特定する
    ことを特徴とする請求項2に記載の通信装置。
  4. 前記記憶部は、他の通信装置から受信した受信データに含まれている他の識別情報に対応付けて、前記他の識別情報で識別されるデータのうち、前記他の通信装置が記憶していない領域のデータを記憶し、
    前記他の識別情報を含むデータパケットを受信すると、前記データパケット中のデータと前記他の識別情報に対応付けて前記記憶部が格納しているデータを用いて、送信対象のデータを復元する復元処理部
    をさらに備えることを特徴とする請求項1〜3のいずれか1項に記載の通信装置。
  5. 第1の通信装置と、
    前記第1の通信装置と通信する第2の通信装置
    を備え、
    前記第2の通信装置は、
    前記第1の通信装置への送信履歴の無い送信対象である対象データの一部である第1の分割データを、前記対象データを識別する識別情報に対応付けて記憶し、
    前記対象データと前記第1の分割データを特定する情報の組み合わせを含む送信パケットを、前記第1の通信装置へ送信し、
    前記第1の通信装置は、前記対象データのうち前記第1の分割データに含まれないデータである第2の分割データを前記識別情報に対応付けて記憶し、
    前記第2の通信装置は、前記送信パケットの送信後は、前記対象データの代わりに、前記識別情報と前記第1の分割データを前記第1の通信装置へ送信する
    ことを特徴とする通信システム。
  6. 第1の通信装置と、前記第1の通信装置と通信する第2の通信装置を含むネットワークにおいて、
    前記第2の通信装置は、
    前記第1の通信装置への送信履歴の無い送信対象である対象データの一部である第1の分割データを、前記対象データを識別する識別情報に対応付けて記憶し、
    前記対象データと前記第1の分割データを特定する情報の組み合わせを含む送信パケットを、前記第1の通信装置へ送信し、
    前記第1の通信装置は、前記対象データのうち前記第1の分割データに含まれないデータである第2の分割データを前記識別情報に対応付けて記憶し、
    前記第2の通信装置は、前記送信パケットの送信後は、前記対象データの代わりに、前記識別情報と前記第1の分割データを前記第1の通信装置へ送信する
    ことを特徴とする通信方法。
  7. 通信先への送信履歴の無い送信データの一部である第1の分割データを、前記送信データを識別する識別情報に対応付けて記憶し、
    前記送信データと前記第1の分割データを特定する情報の組み合わせを含む送信パケットを送信することにより、前記送信データのうち前記第1の分割データに含まれないデータである第2の分割データを前記識別情報に対応付けて前記通信先に記憶させ、
    前記送信パケットの送信後は、前記送信データの代わりに、前記識別情報と前記第1の分割データを前記通信先への送信対象として特定する
    処理を通信装置に行わせることを特徴とする通信プログラム。
JP2017004340A 2017-01-13 2017-01-13 通信装置、通信システム、通信方法、および、通信プログラム Active JP6747303B2 (ja)

Priority Applications (3)

Application Number Priority Date Filing Date Title
JP2017004340A JP6747303B2 (ja) 2017-01-13 2017-01-13 通信装置、通信システム、通信方法、および、通信プログラム
PCT/JP2017/046640 WO2018131466A1 (ja) 2017-01-13 2017-12-26 通信装置、通信システム、通信方法、および、通信プログラム
US16/371,647 US10728356B2 (en) 2017-01-13 2019-04-01 Communication device and communication system

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2017004340A JP6747303B2 (ja) 2017-01-13 2017-01-13 通信装置、通信システム、通信方法、および、通信プログラム

Publications (2)

Publication Number Publication Date
JP2018113645A true JP2018113645A (ja) 2018-07-19
JP6747303B2 JP6747303B2 (ja) 2020-08-26

Family

ID=62839988

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2017004340A Active JP6747303B2 (ja) 2017-01-13 2017-01-13 通信装置、通信システム、通信方法、および、通信プログラム

Country Status (3)

Country Link
US (1) US10728356B2 (ja)
JP (1) JP6747303B2 (ja)
WO (1) WO2018131466A1 (ja)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2019017161A1 (ja) 2017-07-20 2019-01-24 株式会社ミツバ モータ及びブラシレスワイパーモータ
JP2022500785A (ja) * 2018-09-19 2022-01-04 ツイッター インコーポレイテッド プログレッシブなapiレスポンス

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2009205201A (ja) * 2008-02-26 2009-09-10 Kddi Corp 重複排除技術を用いたデータバックアップ方法、記憶制御通信装置及びプログラム
JP2012079044A (ja) * 2010-09-30 2012-04-19 Yahoo Japan Corp ファイル送受信システム、端末装置、ストレージサーバ、ファイル送受信方法及びプログラム
US20140172795A1 (en) * 2012-03-02 2014-06-19 Huawei Technologies Co., Ltd. Data processing method and data processing device
WO2016181461A1 (ja) * 2015-05-11 2016-11-17 富士通株式会社 転送装置、通信システム、通信方法、および、通信プログラム

Family Cites Families (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP3984086B2 (ja) * 2002-03-27 2007-09-26 株式会社東芝 キャッシュサーバ、データ転送装置及びプログラム
US20040111507A1 (en) * 2002-12-05 2004-06-10 Michael Villado Method and system for monitoring network communications in real-time
US20070061451A1 (en) * 2002-12-05 2007-03-15 Michael Villado Method and system for monitoring network communications in real-time
JP2007299019A (ja) 2004-06-24 2007-11-15 Nec Corp データ通信システム、サーバ装置及びそれに用いるデータ通信方法並びにそのプログラム
JP4331090B2 (ja) * 2004-11-05 2009-09-16 パナソニック株式会社 通信システム、情報処理装置、仲介サーバ、識別情報送信サーバ、通信方法及びプログラム
TWI328758B (en) * 2006-11-15 2010-08-11 Primax Electronics Ltd Method for processing working state of processing device by using identification data
CN104125559B (zh) * 2013-04-28 2018-01-09 华为终端(东莞)有限公司 一种数据传输的方法、装置及系统
JP6164042B2 (ja) 2013-10-24 2017-07-19 富士通株式会社 中継装置、中継方法、中継プログラム、および中継システム
JP6318878B2 (ja) * 2014-06-04 2018-05-09 富士通株式会社 通信装置、システム及び通信処理方法

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2009205201A (ja) * 2008-02-26 2009-09-10 Kddi Corp 重複排除技術を用いたデータバックアップ方法、記憶制御通信装置及びプログラム
JP2012079044A (ja) * 2010-09-30 2012-04-19 Yahoo Japan Corp ファイル送受信システム、端末装置、ストレージサーバ、ファイル送受信方法及びプログラム
US20140172795A1 (en) * 2012-03-02 2014-06-19 Huawei Technologies Co., Ltd. Data processing method and data processing device
WO2016181461A1 (ja) * 2015-05-11 2016-11-17 富士通株式会社 転送装置、通信システム、通信方法、および、通信プログラム

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2019017161A1 (ja) 2017-07-20 2019-01-24 株式会社ミツバ モータ及びブラシレスワイパーモータ
JP2022500785A (ja) * 2018-09-19 2022-01-04 ツイッター インコーポレイテッド プログレッシブなapiレスポンス
JP7217342B2 (ja) 2018-09-19 2023-02-02 ツイッター インコーポレイテッド プログレッシブなapiレスポンス

Also Published As

Publication number Publication date
JP6747303B2 (ja) 2020-08-26
US20190230184A1 (en) 2019-07-25
WO2018131466A1 (ja) 2018-07-19
US10728356B2 (en) 2020-07-28

Similar Documents

Publication Publication Date Title
US20210209373A1 (en) Media authentication using distributed ledger
CN110263579B (zh) 一种数据处理方法、系统及相关设备
JP5677070B2 (ja) 受信装置及び、受信装置による処理方法
CN105450712B (zh) 一种数据传输方法及装置
CN111258756B (zh) 一种负载均衡方法、装置、计算机设备和可读存储介质
WO2018131466A1 (ja) 通信装置、通信システム、通信方法、および、通信プログラム
CN108243001B (zh) 一种数据加密通信方法
CN109241009B (zh) 防止文件重复上传的方法及其控制方法及装置
CN111147392B (zh) 基于区块链的数据同步方法、装置、设备及可读存储介质
CN108243146A (zh) 一种高效的信息提交方法
CN112817602A (zh) 一种json格式数据发送、接收方法、设备及介质
CN113810769A (zh) 数据传输方法及系统
CN103152606A (zh) 视频文件处理方法及装置、系统
US9648145B2 (en) Communication apparatus and method thereof
WO2021190031A1 (zh) 基于wdm的数据传输方法、装置、系统及存储介质
JP5416135B2 (ja) フィンガープリント技術の実現方法、装置、及びシステム
CN110602515B (zh) 基于区块链的数据处理方法、服务器及存储介质
CN111741038B (zh) 数据传输方法和数据传输装置
US9928370B2 (en) Communication device, communication method, computer program product, and communication system
CN115348278A (zh) 区块链的分布式存储方法
CN115297109A (zh) 一种基于二维码的文件传输方法及系统
JP4966642B2 (ja) 通信装置及び通信制御方法
CN111211992B (zh) 一种信息传输方法及装置
JP2018037702A (ja) 通信システム、通信装置、および、データ分割制御方法
CN111614750A (zh) 一种数据更新方法、系统、设备及存储介质

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20191008

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20200720

R150 Certificate of patent or registration of utility model

Ref document number: 6747303

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150