JP6172296B2 - 通信装置、通信方法、および、通信プログラム - Google Patents

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

Info

Publication number
JP6172296B2
JP6172296B2 JP2015557635A JP2015557635A JP6172296B2 JP 6172296 B2 JP6172296 B2 JP 6172296B2 JP 2015557635 A JP2015557635 A JP 2015557635A JP 2015557635 A JP2015557635 A JP 2015557635A JP 6172296 B2 JP6172296 B2 JP 6172296B2
Authority
JP
Japan
Prior art keywords
data
communication device
transmitted
communication
unit
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
JP2015557635A
Other languages
English (en)
Other versions
JPWO2015107653A1 (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
Publication of JPWO2015107653A1 publication Critical patent/JPWO2015107653A1/ja
Application granted granted Critical
Publication of JP6172296B2 publication Critical patent/JP6172296B2/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
    • H04L47/00Traffic control in data switching networks
    • H04L47/50Queue scheduling
    • H04L47/56Queue scheduling implementing delay-aware scheduling
    • 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/22Traffic shaping
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L1/00Arrangements for detecting or preventing errors in the information received
    • H04L1/12Arrangements for detecting or preventing errors in the information received by using return channel
    • H04L1/16Arrangements for detecting or preventing errors in the information received by using return channel in which the return channel carries supervisory signals, e.g. repetition request signals
    • H04L1/18Automatic repetition systems, e.g. Van Duuren systems
    • H04L1/1812Hybrid protocols; Hybrid automatic repeat request [HARQ]
    • H04L1/1816Hybrid protocols; Hybrid automatic repeat request [HARQ] with retransmission of the same, encoded, message
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L1/00Arrangements for detecting or preventing errors in the information received
    • H04L1/12Arrangements for detecting or preventing errors in the information received by using return channel
    • H04L1/16Arrangements for detecting or preventing errors in the information received by using return channel in which the return channel carries supervisory signals, e.g. repetition request signals
    • H04L1/18Automatic repetition systems, e.g. Van Duuren systems
    • H04L1/1867Arrangements specially adapted for the transmitter end
    • H04L1/189Transmission or retransmission of more than one copy of a message
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L43/00Arrangements for monitoring or testing data switching networks
    • H04L43/08Monitoring or testing based on specific metrics, e.g. QoS, energy consumption or environmental parameters
    • H04L43/0852Delays
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L43/00Arrangements for monitoring or testing data switching networks
    • H04L43/08Monitoring or testing based on specific metrics, e.g. QoS, energy consumption or environmental parameters
    • H04L43/0876Network utilisation, e.g. volume of load or congestion level
    • H04L43/0894Packet rate
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L43/00Arrangements for monitoring or testing data switching networks
    • H04L43/16Threshold monitoring
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L45/00Routing or path finding of packets in data switching networks
    • H04L45/74Address processing for routing
    • H04L45/742Route cache; Operation thereof
    • 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/20Traffic policing
    • 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
    • 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

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Environmental & Geological Engineering (AREA)
  • Information Transfer Between Computers (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Communication Control (AREA)
  • Small-Scale Networks (AREA)

Description

本発明は、複数の通信装置の間で行われる通信に関する。
近年、通信の高速化が求められてきており、通信速度を高速化するために様々な試みが行われてきている。例えば、データの送信量を減らすために、送信対象のデータに対して重複除去が行われることがある。重複除去では、受信側の通信装置が、過去に送信側の通信装置から受信したデータを、識別子に対応付けてキャッシュに保存しており、送信側の通信装置も過去に送信したデータの識別子を記憶している。送信側の通信装置は、送信しようとするデータがすでに送信したことがあるデータであるかを、データの識別子を用いて判定し、すでに送信したことがあるデータについては、データの代わりに、そのデータに対応付けられた識別子を受信側の通信装置に送信する。受信側の通信装置は、受信した識別子に対応付けられたデータをキャッシュから読み出して、読み出したデータを送信側の通信装置から送信されたデータとして扱う。
重複するデータの処理に関連して、同一のイメージデータを処理する場合、プリンタドライバはその旨を示す情報をデータに付加してプリンタに転送し、プリンタがイメージデータをキャッシュする方法が提案されている(例えば、特許文献1)。
特開2002−91731号公報
キャッシュを用いて送信データ中の重複を除去する場合、受信側の通信装置が備えているキャッシュのサイズが大きいほど多くのデータがキャッシュに格納されるため、重複したデータの送信を防ぎやすくなる。しかし、受信側の通信装置が備えるキャッシュの容量は有限であるため、受信側の装置は、キャッシュの空き容量がなくなると、最終アクセスからの経過時間が長いデータから順に削除することになる。このため、受信側でのデータの削除により、効率的に重複除去ができない場合がある。例えば、送信対象のデータ中に、データAが複数回含まれていたとしても、先に送信されるデータAと後に送信されるデータAの間に、重複していないデータが大量に送信される場合がある。このとき、後から送信されるデータAの送信前に受信側の通信装置のキャッシュの空き容量がなくなり、データAが受信側の通信装置で削除されると、送信側の通信装置は、データAを受信側の通信装置に再度送信することになる。
本発明は、1つの側面として、重複部分を含むデータの転送を効率的に防止し、通信を高速化することを目的とする。
実施形態に係る通信装置は、記憶部、設定部、送信部を備える。記憶部は、データを前記データの宛先に送信した回数を、前記データを識別する識別子に対応付けて記憶する。設定部は、前記宛先へ送信する対象のデータである対象データの送信回数が閾値に達すると、前記対象データの代替として前記宛先に送信する代替データを、前記対象データと前記対象データの保持を要求する保持要求の組み合わせに設定する。設定部は、前記対象データに対する保持要求の送信後は、前記対象データの識別子を前記代替データに設定する。送信部は、前記代替データを前記宛先に送信する。
重複部分を含むデータの転送が効率的に防止され、通信が高速化される。
実施形態に係る通信の例を説明する図である。 実施形態にかかる通信装置が用いられるネットワークの例を示す。 通信装置の構成の例を示す図である。 通信装置のハードウェア構成の例を示す図である。 重複検知部の処理の例を説明する図である。 送信データテーブルの例を示す図である 送信処理の例を説明する図である。 受信キャッシュでのデータの保存方法の例とインデックス値の決定方法の例を示す図である。 通信処理の例を説明する図である。 データを送信する通信装置の処理の例を説明するフローチャートである。 データを受信する通信装置の処理の例を説明するフローチャートである。 第2の実施形態にかかる通信装置の構成の例を示す図である。 閾値の決定方法の例を説明する図である。 データを受信する通信装置の処理の例を説明するフローチャートである。
図1は、実施形態に係る通信の例を示す。以下、送信側の通信装置を通信装置10a、受信側の通信装置を通信装置10bとする。さらに、通信装置10bが備えている受信キャッシュを、受信キャッシュ32bとする。
通信装置10aは、通信装置10bにデータを送信するとき、送信対象のデータを一意に識別できる識別子を生成する。通信装置10aは、送信対象のデータを通信装置10bに送信するときに、そのデータを受信側の通信装置に送信した回数を、識別子に対応付けて記憶するものとする。図1の例では、通信装置10aと通信装置10bの通信が開始されたところであり、通信装置10aからは、まだデータの送信が行われていないものとする。通信装置10aは、予め閾値Nを記憶しており、同じデータの送信回数がN回未満の間は、送信するデータのキャッシュへの保持を禁止する情報を付して、通信装置10bにデータを送信する。以下、送信するデータのキャッシュへの保持を禁止する情報のことを「禁止情報」と記載することがある。通信装置10bは、禁止情報と共に受信したデータは受信キャッシュ32bに格納しない。
一方、同じデータの送信回数が閾値Nと一致すると、通信装置10aは、送信するデータのキャッシュへの保持を要求する情報を付して、通信装置10bにデータを送信する。以下、送信するデータのキャッシュへの保持を要求する情報のことを、「保持要求」と記載することがある。通信装置10bは、保持要求と共に受信したデータを、そのデータの識別子に対応付けて受信キャッシュ32bに格納する。
同じデータの送信回数が閾値Nを越えると、通信装置10aは、送信するデータの代わりに、そのデータの識別子を通信装置10bに通知する。通信装置10bは、通知された識別子に対応付けられたデータを受信キャッシュ32bから読み出し、読み出したデータを、通信装置10aから受信したデータとして扱う。
例えば、時刻T0から通信装置10aと通信装置10bが通信を開始した場合を例として説明する。ここでは、閾値Nは2に設定されているものとする。通信装置10aは、時刻T0の時点で、データAを通信装置10bに送信するために、データAの通信装置10bへの送信回数を閾値Nと比較する。この時点では、データAは通信装置10bに送信されていないので、今回の送信が1回目である。通信装置10aは、今回の送信での送信回数が閾値Nに達していないため、図1の矢印αに示すように、データAと共にデータAについての禁止情報を、通信装置10bに送信する。すると、通信装置10bは、データAを受信しても、データAを受信キャッシュ32bに格納しない。このため、受信キャッシュ32b_0に示すように、受信キャッシュ32bにデータが格納されない。その後、通信装置10aは、データB、データC、データD、データEについてもデータAと同様に、禁止情報と共に、通信装置10bに送信する。このため、通信装置10bは、データEの受信までは、通信装置10aから受信したいずれのデータも受信キャッシュ32bに格納しない。
次に、通信装置10aは、再度データAを通信装置10bに送信するための処理を行う。通信装置10aから通信装置10bへのデータAの送信回数は、今回の送信で2回になる。通信装置10aは、送信回数が閾値Nと同じ値になっているので、図1の矢印βに示すように、データAとともに、データAについての保持要求を通信装置10bに送信する。通信装置10bは、データAを受信すると受信キャッシュ32bに格納する。このため、時刻T1で行われる送信処理により、通信装置10bは受信キャッシュ32b_1を保持する。
その後、通信装置10aは、データFを初めて送信するので、禁止情報と共にデータFを、通信装置10bに送信する。すると、通信装置10bはデータFを格納しないため、受信キャッシュ32bに保持されているデータは変更されない。
時刻T2に、通信装置10aは、通信装置10bに向けたデータBの2回目の送信処理を行う。このとき、通信装置10aは、データBの送信回数が閾値Nと同じ値になるので、図1の矢印βに示すように、データBとデータBの保持要求を通信装置10bに送信する。通信装置10bはデータBを受信キャッシュ32bに格納するため、時刻T2で行われる送信処理により、通信装置10bは、受信キャッシュ32b_1を受信キャッシュ32b_2に更新する。
その後、通信装置10aは、データG、データHを禁止情報と共に通信装置10bに送信する。通信装置10bはデータG、データHを格納しないため、受信キャッシュ32b_2に保持されているデータは変更されない。
時刻T3に通信装置10aは、データAを3回目に送信しようとする。このとき、データAの送信回数は、閾値Nを上回っているので、通信装置10aは、データAがすでに通信装置10bに格納されていると判定する。そこで、通信装置10aは、矢印γに示すように、データAの識別子を通信装置10bに送信する。通信装置10bは、データAの識別子を受信すると、受信した識別子をキーとして受信キャッシュ32b_2を検索し、データAを取得する。通信装置10bは、取得したデータAを、通信装置10aからの送信データとして扱う。
時刻T4に通信装置10aは、データBの3回目の送信処理を行う。このときも、時刻T3でのデータAの送信処理と同様に、送信回数が閾値Nを上回っているので、通信装置10aは、データBの識別子を通信装置10bに送信する。通信装置10bは、データBの識別子をキーとして受信キャッシュ32b_2を検索し、データBを取得する。通信装置10bは、取得したデータBを、通信装置10aからの送信データとして扱う。
このように、実施形態にかかる方法では、閾値以上の回数送信されるデータは受信側の通信装置10が備える受信キャッシュ32に格納されるが、送信回数が閾値未満のデータは受信側の通信装置10に格納されない。このため、閾値以上の回数送信されるデータ同士の間に、閾値未満の回数しか送信されないデータが受信キャッシュ32の容量以上に含まれている場合でも、受信側の通信装置10は、重複して送信されてくるデータを受信キャッシュ32に記憶できる。図1の例では、時刻T1でのデータAの送信から時刻T3でのデータAの送信までの間に、受信キャッシュ32bの容量分だけ、データA以外のデータが通信装置10aから通信装置10bに送信される。しかし、時刻T1〜T3に送信されるデータは、データB以外は閾値以下の回数しか送信されていないことから受信キャッシュ32bへの格納対象にならない。このため、受信キャッシュ32bでの容量不足が発生せず、時刻T3にデータAが再送されるときにも、データAが受信キャッシュ32bに保持される。このため、重複除去が効率的に行われる。
換言すると、実施形態にかかる送信側の通信装置10では、データの送信回数を、重複の発生頻度の指標として用いることにより、受信側の通信装置10に、重複して受信する可能性が比較的高いデータを選択的に記憶させている。従って、通信装置10は、重複部分を含むデータの転送を効率的に防止できる。
<ネットワークの例と装置構成>
図2は、実施形態にかかる通信装置10が用いられるネットワークの例を示す。図2は、Wide Area Network(WAN)5をはさんで、エリア4a中の装置とエリア4b中の装置が通信する場合のネットワークの例を示す。エリア4a、4bには通信を行う任意の種類の装置が任意の数だけ含まれる。図2の例では、エリア4aにサーバ1a〜1c、タブレット2a、携帯電話3aが含まれ、エリア4bにサーバ1d〜1f、タブレット2b、携帯電話3bが含まれている場合を示している。エリア4aに含まれている装置は、通信装置10aを介してWAN5にアクセスし、エリア4bに含まれている装置は、通信装置10bを介してWAN5にアクセスするものとする。ここで、通信装置10aおよび通信装置10bは、WAN高速化装置として動作することができる。図2の例では、エリア4aに含まれている装置が通信装置10aと通信装置10bを介してエリア4bに含まれている装置にデータを送信している。
図3は、通信装置10の構成の例を示す。通信装置10は、送信部11、受信部12、送受信部13、接続管理部14、キャッシュ管理部15、データ処理部16、重複検知部20、記憶部30を備える。重複検知部20は、分割部21、識別子生成部22、および、設定部23を有する。記憶部30は、送信データテーブル31、受信キャッシュ32を有する。
送信部11は、通信装置10がWAN5に含まれている装置や、他の通信装置10にパケットを送信するときに使用される。送信部11は、設定部23などから入力されたパケットを、宛先に向けて送信する。受信部12は、WAN5に含まれている装置や、他の通信装置10からパケットを受信する。受信部12は、受信したパケットを、キャッシュ管理部15に出力する。送受信部13は、通信装置10とWAN5を介さずに通信する装置との間で通信装置10がパケットを送受信するときに使用される。ここで、WAN5を介さずに通信装置10と通信する装置は、通信装置10と通信可能なエリア4に含まれているサーバ1などの装置である。送受信部13は、エリア4に含まれている装置から受信したパケットを、データ処理部16に出力する。
接続管理部14は、通信装置10同士の接続や、通信装置10が通信可能なエリア4に含まれている装置との間の接続状態に関する情報を保持する。キャッシュ管理部15は、受信したパケットに保持要求が含まれている場合、保持要求と共に取得したデータを受信キャッシュ32に格納し、さらに、受信パケット中のデータをデータ処理部16に出力する。一方、受信パケットに禁止情報が含まれている場合、キャッシュ管理部15は、禁止情報と共に取得したデータをデータ処理部16に出力するが、禁止情報と共に取得したデータを受信キャッシュ32には格納しない。受信部12から入力されたパケット中のデータが、特定のデータを表わす識別子である場合、キャッシュ管理部15は、受信キャッシュ32から識別子に対応付けられたデータを読み出し、読み出したデータをデータ処理部16に出力する。なお、受信パケットが、データの受信側の通信装置10で保持されている受信キャッシュ32の情報を通知する制御パケットである場合、キャッシュ管理部15は、入力された制御パケットを設定部23に出力する。
データ処理部16は、キャッシュ管理部15から取得したデータを、送信元の通信装置10から送られてきたデータとして処理する。キャッシュ管理部15から取得したデータが通信装置10自身に宛てたデータである場合、データ処理部16は、アプリケーション等を用いて、入力されたデータを処理する。一方、キャッシュ管理部15から入力されたデータが、通信装置10と通信可能なエリア4に含まれている装置に宛てられたものである場合、データ処理部16は、データを宛先の装置へ転送するための処理を行う。
重複検知部20は、データを他の通信装置10に送信する通信装置10で動作する。分割部21は、送信対象とするファイルなどを予め決められたデータ長に分割することにより、個々の送信パケットに含めることができる大きさのデータを生成する。以下、個々の送信パケットに含めることができる大きさのデータのことを「チャンク」と記載する。チャンクは、データの重複が発生しているかの判定や、送信回数を特定するときの対象とされるデータのブロックである。分割部21は、生成したチャンクを識別子生成部22に出力する。識別子生成部22は、各チャンクを一意に識別するための識別子を生成する。識別子の生成方法は、任意であるが、例えば、ハッシュ関数を識別子の生成に用いることができる。識別子生成部22は、生成した識別子を設定部23に出力する。
設定部23は、入力された識別子をキーとして、送信データテーブル31を検索する。送信データテーブル31の例については後で示すが、送信データテーブル31は、チャンクを受信側の通信装置10に送信した回数を、そのチャンクを識別する識別子に対応付けている。送信データテーブル31は、キーとして使用する識別子が送信データテーブル31に含まれていない場合、処理対象の識別子を、送信回数=1という情報に対応付けて送信データテーブル31に記録する。一方、識別子に対応付けられた送信回数を送信データテーブル31から得られた場合、設定部23は、得られた回数に1を加えて、閾値Nと比較する。ここで、閾値Nは、保持要求を有するパケットの送信を含めて、受信側の通信装置10に処理対象のチャンクを送信する回数を示す。送信回数が閾値Nよりも小さい間は、設定部23は、チャンクとそのチャンクに対する禁止情報を、送信パケットに含める。一方、送信回数が閾値Nに一致すると、設定部23は、処理対象のチャンクに保持要求を含めて送信パケットを生成する。送信回数が閾値Nを超えると、設定部23は、識別子を送信パケットに含めて受信側の通信装置10に送信する。なお、受信側の通信装置10が個々のチャンクを保持する領域を示すインデックス値を用いて、送信側の通信装置10に受信側の受信キャッシュ32の状況を通知しているときには、設定部23は、インデックス値を識別子として用いても良い。インデックス値を用いた通信の例については、後述する。
図4は、通信装置10のハードウェア構成の例を示す。通信装置10は、プロセッサ101、メモリ102、バス105、外部記憶装置106、ネットワーク接続装置109を備える。さらにオプションとして、通信装置10は、入力装置103、出力装置104、媒体駆動装置107を備えても良い。通信装置10は、例えば、コンピュータなどで実現されることがある。
プロセッサ101は、Central Processing Unit(CPU)を含む任意の処理回路とすることができる。プロセッサ101は、接続管理部14、キャッシュ管理部15、データ処理部16、および、重複検知部20として動作する。なお、プロセッサ101は、例えば、外部記憶装置106に記憶されたプログラムを実行することができる。メモリ102は、記憶部30として動作し、送信データテーブル31を記憶する他、受信キャッシュ32を実現する。さらに、メモリ102は、プロセッサ101の動作により得られたデータや、プロセッサ101の処理に用いられるデータも、適宜、記憶する。ネットワーク接続装置109は、他の装置との通信に使用され、送信部11、受信部12、送受信部13として動作する。
入力装置103は、例えば、ボタン、キーボードやマウスとして実現され、出力装置104は、ディスプレイなどとして実現される。バス105は、プロセッサ101、メモリ102、入力装置103、出力装置104、外部記憶装置106、媒体駆動装置107、ネットワーク接続装置109の間を相互にデータの受け渡しが行えるように接続する。外部記憶装置106は、プログラムやデータなどを格納し、格納している情報を、適宜、プロセッサ101などに提供する。媒体駆動装置107は、メモリ102や外部記憶装置106のデータを可搬記憶媒体108に出力することができ、また、可搬記憶媒体108からプログラムやデータ等を読み出すことができる。ここで、可搬記憶媒体108は、フロッピイディスク、Magneto-Optical(MO)ディスク、Compact Disc Recordable(CD−R)やDigital Versatile Disk Recordable(DVD−R)を含む、持ち運びが可能な任意の記憶媒体とすることができる。
<第1の実施形態>
以下、図2に示すネットワークにおいて、エリア4a中の装置からエリア4b中の装置にデータが送信される場合を例として、通信装置10aと通信装置10bで行われる処理の例を説明する。以下、理解し易くするために、エリア4a中の装置とエリア4b中の装置の間の通信の開始により、通信装置10aと通信装置10bの通信が開始された場合を例として説明する。以下の例でも閾値Nは2である場合を例とするが、閾値Nの値は実装に応じて任意の値に設定され得る。
また、以下の説明では、いずれの装置による動作であるかを分り易くするために、符号の後に、その通信装置10の符号の末尾のアルファベットを付すものとする。例えは、設定部23aは、通信装置10aに備えられている設定部23であり、受信キャッシュ32bは、通信装置10bに備えられた受信キャッシュ32である。
(1)通信装置10aは、エリア4aに含まれている装置から、送受信部13aを介してデータを受信する。送受信部13aは、受信したパケットをデータ処理部16aに出力する。データ処理部16aは、入力されたパケットから受信データと送信元や宛先の情報などを取得し、通信装置10b宛てのデータとする。データ処理部16aは、通信装置10b宛てのデータを分割部21aに出力する。
図5は、重複検知部20aでの処理の例を説明する図である。分割部21aは、入力されたデータを予め決められたデータ長のチャンクに分割する。図5の例では、分割部21aは、入力されたデータをX個のチャンクに分割している。分割部21aは、個々のチャンクを、識別子生成部22aに出力する。なお、分割部21aに入力されたデータの大きさが、チャンクとして許容されるデータの大きさ以下であれば、分割部21aは、データを分割せずに識別子生成部22aに出力する。
図5の例では、識別子生成部22aは、予め保持しているハッシュ関数を用いて、チャンクからハッシュ値を生成し、得られたハッシュ値を個々のチャンクの識別子とする。なお、識別子生成部22aで使用されるハッシュ関数は、個々のチャンクを一意に識別できるようなハッシュ値を生成可能な任意の関数であるものとする。例えば、Secure Hash Algorithm-1(SHA1)等のハッシュ関数が識別子生成部22aで使用されることがある。
(2)識別子生成部22aは、個々のチャンクとハッシュ値を対応付けて、設定部23aに出力する。設定部23aは、ハッシュ値を用いて、送信データテーブル31aの検索や送信データテーブル31aの更新処理を行う。
図6は、送信データテーブル31の例を示す。図6に示す送信データテーブル31は、ハッシュ値、送信回数、インデックス(index)を対応付けている。ハッシュ値は、識別子生成部22aで生成された値である。設定部23aは、ハッシュ値で識別されるチャンクの各々について、通信装置10bに送信した回数を記録している。インデックスは、受信側の通信装置10bが保持する受信キャッシュ32bにおいて、ハッシュ値で特定されるチャンクが保持されている領域の特定に使用される値である。設定部23aは、保持要求を付して送信するチャンクの大きさを用いて、インデックスを計算し、得られた値を送信データテーブル31aに記録する。
図7のC1は、データAであるチャンクがHash1として、設定部23aに入力された場合に行われる送信処理の例を示す。なお、図7の場合では、図を簡略化するために、データAがチャンクとして許容される大きさ以下のデータであった場合の例を示している。識別子生成部22aから設定部23aに、Hash1というハッシュ値と、データAが入力されたとする。今までに通信装置10aから通信装置10bにデータの送信が行われていないので、設定部23aは、送信データテーブル31aにHash1のチャンクのエントリを生成し、Hash1のチャンクの送信回数を1に設定する。新たにエントリを生成する時点では、設定部23aは、インデックスの値を未定とする。このため、Hash1について、図6の送信データテーブル31a_1の1番目のエントリに示すデータが、送信データテーブル31aに記録される。
設定部23aは、送信データテーブル31a中のエントリの更新処理を行った後に、Hash1のチャンクの送信回数と閾値Nを比較する。ここでは、Hash1の送信回数が1であるので閾値Nよりも送信回数は小さい。そこで、設定部23aは、Hash1のチャンク(データA)、禁止情報、データAの最終的な宛先などの情報をペイロードとした通信装置10a宛てのパケットP1を生成する。
ここで、禁止情報は、ペイロード中のデータを受信キャッシュ32bに格納しないことを通信装置10b中のキャッシュ管理部15bに通知できる情報であれば、任意の形式を取ることができる。以下の説明では、パケット中のヘッダの直後の2ビットを、キャッシュ管理部15bがペイロード中のデータを受信キャッシュ32bに格納するかを判定するために使用するフラグとして使用する場合を例として説明する。以下、禁止情報では、ヘッダの直後の2ビットの値が00であり、保持要求では、ヘッダの直後の2ビットの値が01であるものとする。設定部23aは、生成したパケットP1を、送信部11aに出力する。送信部11aは、図7のC1に示すように、パケットP1を通信装置10bに送信する。
(3)通信装置10bの受信部12bは、通信装置10aから送信されたパケットP1を受信すると、パケットP1をキャッシュ管理部15bに出力する。キャッシュ管理部15bは、パケット中のヘッダの直後の2ビットの値が00であることから、禁止情報が付されたデータを取得したと判定する。すると、キャッシュ管理部15bは、パケットP1からデータAと最終的な宛先の情報などを抽出して、データ処理部16bに出力する。このとき、図7のC1に示すように、キャッシュ管理部15bは、抽出したデータAを受信キャッシュ32bに格納しない。データ処理部16bは、キャッシュ管理部15bから取得した情報に基づいて、データAをエリア4b中の装置に送信するためのパケットを生成する。データ処理部16bは、送受信部13bを介して、生成したパケットを宛先の装置に送信する。
(4)その後もエリア4a中の装置からエリア4b中の装置へのデータの送信が続けられ、送信対象のチャンクに同様の処理が行われたとする。送信処理に伴い、送信データテーブル31aの更新も行われる。このため、例えば、Hash1〜Hash6のチャンクが通信装置10aから通信装置10bに1回ずつ送信されると、送信データテーブル31aは、図6に示す送信データテーブル31a_1に示すようになる。
(5)図7のC2に示すように、通信装置10aに再度データAが送信されたとする。すると、通信装置10aの分割部21aは、手順(1)で述べたようにデータAを識別子生成部22aに出力する。識別子生成部22aは、記憶しているハッシュ関数を用いてデータAに対するハッシュ値(Hash1)を計算する。識別子生成部22aは、Hash1というハッシュ値と共に、データAを設定部23aに出力する。
(6)設定部23aは、識別子生成部22aから入力されたHash1というハッシュ値をキーとして、送信データテーブル31a_1(図6)を検索する。すると、1番目のエントリの情報がヒットする。そこで、設定部23aは、送信回数を1つインクリメントした値を、閾値Nと比較する。ここでは、送信データテーブル31a_1でのHash1に対応付けられた送信回数の値は1であり、今回の処理により、設定部23aは、Hash1で識別されるチャンクを通信装置10bに送信するのは2回目になる。閾値Nは2であるので、設定部23aは、送信回数を1つインクリメントした値と閾値Nが一致したと判定する。そこで、設定部23aは、通信装置10bにHash1で識別されるチャンクを受信キャッシュ32bに保持することを要求する。
設定部23aは、これまでに通信装置10bに対して保持要求を出したデータの大きさの合計値を、通信装置10bの受信キャッシュ32bにおいて、Hash1のデータが保持される領域のインデックス値に設定する。ここでは、設定部23aはこれまでに保持要求を付して通信装置10bに送信したデータは無いものとする。すると、設定部23aは、Hash1のインデックスを0に設定する。このため、2回目に通信装置10aが受信したデータAの処理により、送信データテーブル31a中のHash1に対するエントリ中の情報は、送信データテーブル31a_2の1番目のエントリに示す通りに更新される。このとき、設定部23aは、保持要求を出したデータのデータ長を、保持要求を出したデータのインデックスに加えた値を、次に保持要求を付して送信するデータに対するインデックスとして記憶する。例えば、Hash1のデータの大きさが1000バイトである場合、設定部23aは、次に通信装置10bに対して保持することを要求するデータのインデックス値が1000になることを記憶する。
さらに、設定部23aは、通信装置10bにHash1で識別されるチャンクを受信キャッシュ32bに保持することを要求するために、データAと保持要求を含むパケットP2を生成する。設定部23aは、生成したパケットP2を送信部11aに出力する。送信部11aは、図7のC2に示すように、パケットP2を通信装置10bに送信する。
(7)通信装置10bのキャッシュ管理部15bは、手順(3)と同様に、受信部12bを介してパケットP2を取得する。キャッシュ管理部15bは、パケット中のヘッダの直後の2ビットの値が01であることから、保持要求が付されたデータを取得したと判定する。すると、キャッシュ管理部15bは、パケットP2からデータAと最終的な宛先の情報などを抽出して、データ処理部16bに出力する。さらに、図7のC2に示すように、キャッシュ管理部15bは、抽出したデータAを受信キャッシュ32bに格納する。データ処理部16bは、キャッシュ管理部15bから取得した情報に基づいて、手順(3)と同様に処理する。
(8)その後、データBを通信装置10aがエリア4a中の装置から2回目に受信したとする。ここで、データBのハッシュ値は、Hash2であるとする。2回目にデータBを受信すると、通信装置10aは、手順(5)、(6)と同様の処理を用いて、データBについての保持要求とデータBを通信装置10bに送信する。すなわち、Hash2のデータを2回目に送信対象として取得すると、設定部23aは、Hash2のデータに保持要求を付して通信装置10bに送信する。このとき、設定部23aは、Hash2のインデックス値を、手順(6)での計算に従って、1000に設定する。このため、Hash2についての送信データテーブル31aの情報は、図6の送信データテーブル31a_2の2番目のエントリに示すとおりに更新される。ここで、Hash2のデータのデータ長が1200バイトであるとすると、設定部23aは、次に保持要求を出すデータについてのインデックス値を2200に設定する。
(9)Hash2のチャンクを含むパケットを受信した通信装置10bは、手順(7)と同様の処理を行う。このため、Hash2のチャンクは、Hash2のチャンクの最終的な宛先に転送されると共に、受信キャッシュ32bに格納される。図8に受信キャッシュ32でのデータの保存方法の例とインデックス値の決定方法の例を示す。図8の左側のテーブルは、受信キャッシュ32bへのデータの格納状況をキャッシュ管理部15bが管理するために保持する情報の例である。右側の図は、受信キャッシュ32bでのデータの格納例を示す。キャッシュ管理部15bは、受信キャッシュ32bに格納されている個々のチャンクについて、ハッシュ値、容量(データ長)、そのチャンクが格納されている領域の先頭の位置を特定するためのインデックス値を記憶する。
手順(7)で述べた処理により、Hash1で識別されるデータAがインデックス0から1000バイト分の領域に保持されているので、キャッシュ管理部15bは、インデックス1000から始まる領域にHash2で識別されるチャンクを格納する。ここで、Hash2で識別されるチャンクはデータBであるとすると、Hash2のチャンクは、図8の右側に示すように、受信キャッシュ32bにおいてデータAが格納された領域の続きに格納される。また、キャッシュ管理部15bは、Hash2のチャンクの格納状況を、図8の左側のテーブルの2番目のエントリに示すように記憶する。
(10)その後も、エリア4a中の装置からエリア4b中の装置へのデータの送信が続けられ、Hash3〜Hash5のチャンクについても、閾値Nと同数の送信が行われたとする。すると、通信装置10aは、Hash3〜Hash5のチャンクの各々についても、手順(5)、(6)、(8)等で述べた処理を行うことにより、受信キャッシュ32bに格納することを、通信装置10bに要求する。なお、Hash3〜Hash5のチャンクの送信の合間に、送信回数が閾値Nに達していない別のチャンク(Hash7、Hash8)の送信を行う場合、通信装置10aは、手順(3)と同様の処理を行う。このため、Hash3〜Hash5のチャンクの2回目の送信と、Hash6〜Hash8のチャンクの1回目の送信を終えた段階では、通信装置10aが保持する送信データテーブル31aは、送信データテーブル31a_2(図6)に示す通りになる。
(11)一方、通信装置10bでは、Hash3〜Hash5のチャンクを含むパケットを受信すると、手順(9)で述べたように、受信したパケットに含まれているチャンクを受信キャッシュ32bに格納する。さらに、Hash3〜Hash5のチャンクのそれぞれについて、ハッシュ値とインデックスを対応付ける。このため、Hash3〜Hash5のチャンクの処理により、受信キャッシュ32bには、図8の右側に示すようにデータが格納され、キャッシュ管理部15bは、図8の左側に示すような情報を保持する。
(12)図7のC3に示すように、さらに、エリア4a中の装置から通信装置10aにデータAが送信されたとする。すると、通信装置10aの分割部21aは、手順(1)で述べたようにデータAを識別子生成部22aに出力する。識別子生成部22aは、記憶しているハッシュ関数を用いてデータAに対するハッシュ値(Hash1)を計算する。識別子生成部22aは、Hash1というハッシュ値と共に、データAを設定部23aに出力する。
(13)設定部23aは、識別子生成部22aから入力されたハッシュ値Hash1をキーとして、送信データテーブル31a_2(図6)を検索する。すると、1番目のエントリから、Hash1のチャンクが既に2階送信されていることを特定する。そこで、設定部23aは、送信回数を1つインクリメントした値を、閾値Nと比較する。ここでは、Hash1で識別されるチャンクを通信装置10bに送信するのは3回目になるのに対し、閾値Nは2であるため、設定部23aは、Hash1のチャンクについては、送信回数が閾値Nを越えると判定する。そこで、設定部23aは、通信装置10bにHash1で識別されるチャンクの代わりに、そのチャンクを識別する値を含めたパケットを生成する。ここで、チャンクの識別に使用される値は、通信装置10bにおいてチャンクを一意に識別できる任意の情報である。例えば、インデックス値と、チャンクのデータ長がチャンクの識別子としてパケットに含められても良い。この場合、設定部23aは、Hash1に対応付けられたインデックスである0と、データ長が1000バイトであることをデータとして含めたパケットP3を送信部11aに出力する。このとき、設定部23aは、送信するデータがチャンクを識別するための情報であることを示す情報をパケットP3に含めるものとする。以下の説明では、送信するデータがチャンクを識別するための情報であることを示す情報として、設定部23aは、パケット中のヘッダの直後の2ビットの値を11に設定するものとする。図7のC3に示すように、送信部11aは、パケットP3を通信装置10bに送信する。なお、設定部23aは、送信データテーブル31aのHash1のチャンクについての送信回数を更新する。
(14)通信装置10bのキャッシュ管理部15bは、手順(3)と同様に、受信部12bを介してパケットP3を取得する。キャッシュ管理部15bは、パケット中のヘッダの直後の2ビットの値が11であることから、受信キャッシュ32bに格納済みのチャンクに対応付けられたインデックス値とデータ長が通知された判定する。すると、キャッシュ管理部15bは、パケットP3からインデックス値やデータ長を抽出する。キャッシュ管理部15bは、抽出したインデックス値で表わされる受信キャッシュ32bの領域から、抽出したデータ長の情報を、通信装置10aから受信したデータとして取得する。キャッシュ管理部15bは取得したデータをデータ処理部16bに出力する。データ処理部16bは、キャッシュ管理部15bから取得した情報に基づいて、手順(3)と同様に処理する。
図9は、通信処理の手順の例を説明する図である。手順(1)〜(14)で説明した処理が行われることにより、エリア4a中の装置からエリア4b中の装置へのデータの送信の際に、通信装置10aと通信装置10bとの間で効率的に重複排除処理が行われる。すなわち、通信装置10aは、エリア4a中の装置から、エリア4b中の装置への送信データを受信すると、受信したデータを適宜、チャンクに分割して、個々のチャンクについての送信回数の判定を行う。このとき、通信装置10a中の設定部23aは、送信データテーブル31aのデータを使用して、送信の回数と閾値の関係を判定する。送信回数がN回以下のチャンクについては、図9中の矢印Aに示すように、通信装置10aは、実データを含むパケットを通信装置10bに送信する。このとき、送信回数がN回未満の間、設定部23aは、通信装置10bに送信するパケット中に、禁止情報を含めておくことにより、通信装置10bでのデータの格納を抑制する。また、送信回数がN回になると、保持要求を含めることにより、設定部23aは、送信するチャンクを通信装置10bに保持させる。送信回数がN+1回以上になると、図9中の矢印Bに示すように、設定部23aは、実データの代わりにチャンクを一意に特定できる識別子(IDデータ)を含むパケットを通信装置10bに送信する。すなわち、設定部23aは、同じデータの送信回数と閾値Nとの比較結果に応じて、送信対象のデータの代替として送信する代替のデータを生成し、生成した代替データを受信側の通信装置10に送信するデータとしている。さらに、通信装置10aでは、矢印Cに示すように、データの送信状況を送信データテーブル31aに保存する。
禁止情報を含むパケットを受信した場合、通信装置10bは、図9の矢印Dに示すように、チャンクの実データを転送処理に用いるが、受信キャッシュ32bに受信したデータを格納しない。保持要求を含むパケットを受信した場合、通信装置10bは、図9の矢印Eに示すように、チャンクの実データを転送処理に用い、さらに、実データを受信キャッシュ32bに格納する。実データの代わりにチャンクの識別子を含むパケットを受信した場合、通信装置10b中のキャッシュ管理部15bは、図9の矢印Fに示すように、識別子で識別されるチャンクの実データを受信キャッシュ32bから読み出すことによりデータを復元する。通信装置10bは、復元されたデータを転送処理に用いる。なお、チャンクの識別に使用される識別子は、図6〜図8を参照しながら説明したように、インデックス値とチャンクのデータ長とすることができるが、その他の情報を用いても良い。例えば、チャンクのハッシュ値が識別子として用いられても良いものとする。
図10は、データを送信する通信装置10での処理の例を説明するフローチャートである。なお、図10は一例であり、例えば、ステップS5とS7の判断の順序が互いに変更されるなどの変更が加えられても良い。送信側の通信装置10の送受信部13は、送信データを取得する(ステップS1)。送受信部13からデータを入力されると、分割部21は、データを所定の長さ以下のチャンクに分割する(ステップS2)。識別子生成部22は、分割部21で生成された各チャンクについて、ハッシュ関数を用いてハッシュ値を計算する(ステップS3)。識別子生成部22は、ハッシュ値とチャンクのデータを設定部23に出力する。設定部23は、入力されたチャンクについて、送信データテーブル31を用いて、今回の送信が同じ通信装置10への何回目の送信であるかを特定する(ステップS4)。設定部23は、今回の送信を行ったときの送信回数が閾値未満であるかを判定する(ステップS5)。今回の送信を行ったときの送信回数が閾値未満の場合、設定部23は、実データと禁止情報を受信側の通信装置10に送信する(ステップS5で閾値未満、ステップS6)。今回の送信を行ったときの送信回数が閾値未満ではない場合、設定部23は、今回の送信を行ったときの送信回数が閾値を超えているかを判定する(ステップS5でNo、ステップS7)。送信回数が閾値と一致している場合、設定部23は、実データと保持要求を、受信側の通信装置10に送信する(ステップS7で閾値と一致、ステップS8)。送信回数が閾値を越えている場合、設定部23は、実データを含めずに、チャンクの識別子のみを、受信側の通信装置10に送信する(ステップS7で閾値より大、ステップS9)。
図11は、データを受信する通信装置10での処理の例を説明するフローチャートである。図11は一例であり、例えば、ステップS23では、禁止情報を含むかを判定する代わりに、保持要求を含むかを判定するように変形されても良い。受信部12は、送信側の通信装置10からパケットを受信すると、データをキャッシュ管理部15に出力する(ステップS21)。キャッシュ管理部15は、パケット中の予め決められている領域の値を特定することにより、パケット中に実データが含まれているかを判定する(ステップS22)。パケット中に実データが含まれている場合、キャッシュ管理部15は、パケット中に禁止情報が含まれているかを判定する(ステップS22でYes、ステップS23)。パケット中に禁止情報が含まれていない場合、キャッシュ管理部15は、実データを受信キャッシュ32に書き込んだ後で、実データの転送処理を行う(ステップS23でNo、ステップS24、S25)。一方、パケット中に禁止情報が含まれている場合、キャッシュ管理部15は、実データを受信キャッシュ32に書き込まずに、実データの転送処理を行う(ステップS23でYes、ステップS25)。一方、受信したパケットに実データが含まれていない場合、キャッシュ管理部15は、受信パケットからデータの識別子を取得する(ステップS22でNo、ステップS26)。キャッシュ管理部15は、取得した識別子に対応付けられたデータを受信キャッシュ32から読み込む(ステップS27)。キャッシュ管理部15は、読み込んだデータをデータ処理部16に出力する。データ処理部16は、キャッシュ管理部15から入力されたデータの転送処理を行う(ステップS28)。
このように、実施形態にかかる方法では、送信回数が閾値未満の間は、送信データが受信側の通信装置10において格納されない。このため、閾値以上の回数、送信されるデータ同士の間に、閾値未満の回数しか送信されないデータが含まれている場合でも、受信側の通信装置10は、閾値以上の回数だけ送信される可能性が高いデータを、選択的に受信キャッシュ32に記憶することができる。従って、通信装置10を用いたシステムでは、重複部分を含むデータの転送が効率的に防止される。
ネットワーク中で送受信されるトラフィックの傾向として、重複して送受信される回数の多いデータは、一部のデータに集中する傾向があることが報告されている。(例えば、A. Anand, et al., “Redundancy in Network Traffic : Findings and Implications,” in SIGMETRICS/Performance 2009, Seattle, WA USA)。例えば、1回送信されたデータを全て記憶することができる受信キャッシュを用いて重複排除を行った場合に、送信対象とするデータの量を、重複排除を行わない場合に比べてA%削減できるとする。同じデータについて、重複回数の多い順にチャンクを並べたときの上位20%に重複するチャンクだけを重複排除の対象とした場合に削減できる量は、概ね、0.8×A%程度であるということも報告されている。すなわち、重複除去に使用するデータ数を5分の1に削減しても、重複除去の性能の低下は20%程度に過ぎない。従って、第1の実施形態で示すように、最初の数回は禁止情報を付した実データを受信側の通信装置10に送信することによって受信キャッシュ32への格納を妨げたとしても、送受信されるデータ量の削減に対して、ほとんど影響を与えないといえる。
さらに、実施形態にかかる方法では、受信キャッシュ32に格納されるデータは、受信側の通信装置10に少なくとも閾値と同じ回数は送信されるチャンクである。このため、全ての受信データが受信キャッシュに格納される場合に比べて、通信装置10中の受信キャッシュ32の容量を小さくすることができる。
なお、以上の説明では、分り易くするために通信装置10aが送信側、通信装置10bが受信側の場合を例として説明したが、いずれの通信装置10も、送信側と受信側の両方の装置として動作することができる。さらに、通信装置10は、複数の通信装置10にデータの送信をすることができ、また、複数の通信装置10からデータを受信することもできる。このため、複数の通信装置10との間で通信が行われる場合、キャッシュ管理部15は、送信側の通信装置10と受信側の通信装置10の組合せごとに分けて、受信キャッシュ32の情報を管理する。従って、キャッシュ管理部15は、通信装置10aから通信装置10bに送信されたインデックス0に格納されたデータと、通信装置10cから通信装置10bに送信されたインデックス0に格納されたデータを別個に管理できる。同様に、設定部23も、宛先の通信装置10ごとに、別の送信データテーブル31を保持しており、受信側の通信装置10にあわせた送信データテーブル31を用いて、送信パケットに含める情報を設定しているものとする。
<第2の実施形態>
第2の実施形態では、トラフィックレートに応じて、通信装置50が閾値Nを変更する場合の例を説明する。以下、ネットワーク上を単位時間当たりに流れるデータ量を「トラフィックレート」と記載することがある。また、以下の説明では、特定の経路を1秒に流れるデータ量をbps(Bits Per Second)で示すものとする。
図12は、第2の実施形態にかかる通信装置50の構成の例を示す図である。通信装置50は、閾値設定部40を備え、さらに、送信部11、受信部12、送受信部13、接続管理部14、キャッシュ管理部15、データ処理部16、重複検知部20、記憶部30を備える。送信部11、受信部12、送受信部13、接続管理部14、キャッシュ管理部15、データ処理部16、重複検知部20、記憶部30は、第1の実施形態と同様に動作する。
閾値設定部40は、閾値決定部41とトラフィックレート算出部42を有する。トラフィックレート算出部42は、接続管理部14から、通信装置50自身が受信側として通信している通信装置50の数と、それらの通信装置50の識別子を取得する。閾値決定部41は、送信側の通信装置50の各々について、その装置から受信するデータのトラフィックレートを算出する。トラフィックレート算出部42は、得られた結果を閾値決定部41に出力する。
閾値決定部41は、受信キャッシュ32の空き容量を求め、送信元の装置ごとに、保持要求を付してデータを送信するときの送信回数(閾値N)を計算する。このとき、閾値決定部41は、受信データのトラフィックレートが低いほど、送信側の装置で使用される閾値Nが小さくなるように、閾値Nを決定する。このため、トラフィックレートが低いほど、同じデータが繰り返し送受信される回数が小さくなり、通信経路を有効活用できるようになる。一方、トラフィックレートが高い場合は、閾値Nが比較的大きく設定されるので、同じデータが繰り返して送受信されることはあるが、受信側の通信装置50において受信キャッシュ32に格納するデータを、送信回数が比較的大きいデータに限定できる。
図13は、閾値の決定方法の例を説明する図である。図13では、通信装置50aが通信装置50b〜50eからデータを受信しており、通信装置50aが通信装置50b〜50eの各々で使用される閾値Nを計算する場合を例として説明する。なお、図13では、通信装置50a〜50eの各々が送信側と受信側のいずれとして動作しているときの閾値が計算されているかを見やすくするために、便宜上、通信装置50aを受信装置、通信装置50b〜50eを送信装置と表記している。
通信装置50a中の接続管理部14aは、通信装置50b〜50eとの間で、通信装置50aが受信側として通信していることを、トラフィックレート算出部42aに通知する。トラフィックレート算出部42aは、通信装置50b〜50eの各々から受信するデータのトラフィックレートを算出する。例えば、トラフィックレート算出部42aは、送信元の装置別に所定の時間中に受信したパケットの数を計数することにより、トラフィックレートを計算できる。また、トラフィックレート算出部42aは、送信元の装置別に、所定のデータの量を受信するまでにかかった時間から、トラフィックレートを計算することができる。図13の例では、トラフィックレート算出部42aは、通信装置50aが通信装置50bとの間では50Mbps、通信装置50cとの間では20Mbps、通信装置50dおよび50eとの間では15Mbpsで通信していると計算したとする。トラフィックレート算出部42aは、各通信装置50について得られたトラフィックレートの値を、閾値決定部41aに出力する。
閾値決定部41aは、受信キャッシュ32aの空き容量を計算する。閾値決定部41aは、閾値Nを、トラフィックレートの割合に正比例するように決定することにより、トラフィックレートの低い通信で優先的に受信キャッシュ32aを使用できるようにする。すなわち、以下の式を用いて、閾値Nを決定する。
N=M×R×C ・・・(1)
ここで、Mは、受信キャッシュ32aの空き容量、Cは定数である。Rは、通信装置50aが受信しているデータのトラフィックレートの合計値のうち、閾値Nを計算する対象とする通信装置50との間のトラフィックレートが占める割合である。乗数Cは、閾値Nが1〜20程度の予め決められた値の範囲に収まるように設定される。閾値決定部41aは、通信装置50aにデータを送信してきている全ての通信装置50b〜50eに対して同じ定数Cを用いて、閾値Nを計算する。なお、計算で得られた閾値Nが整数でない場合、閾値決定部41aは、得られた計算値より小さい整数の最大値を、閾値Nに設定するものとする。なお、得られた計算値より小さい整数の最大値が1より小さくなる場合、閾値決定部41aは、閾値Nを1に設定する。
例えば、受信キャッシュ32aの空き容量が1Mバイトであるとすると、式(1)中のMは1×10となる。ここで、閾値決定部41aが使用する定数Cが1×10−8であるとする。通信装置50aが通信装置50b〜50eとの間で行っている通信では、トラフィックレートの合計値は、50Mbps+20Mbps+15Mbps+15Mbps=100Mbpsである。そこで、トラフィックレートの割合Rは、通信装置50bでは50/100、通信装置50cでは20/100であり、通信装置50dと50eでは15/100である。この場合、閾値決定部41は、式(1)より、閾値Nを以下のように計算する。
N(通信装置50b)=1×10×(50/100)×1×10−8=5
N(通信装置50c)=1×10×(20/100)×1×10−8=2
N(通信装置50d、50e)
=1×10×(15/100)×1×10−8=1.5
従って、閾値決定部41aは、通信装置50bとの間の閾値Nを5、通信装置50cとの間の閾値Nを2とする。さらに、通信装置50dと通信装置50eについては、計算値が1.5であるので、閾値Nを1に設定する。
閾値決定部41aは、得られた値を、送信側の通信装置50に通知するための制御パケットを生成する。制御パケットには、宛先のアドレスを指定するためのヘッダ、閾値Nの値を通知することを示す情報、および、得られた閾値Nが含まれる。閾値決定部41aは、生成した制御パケットを、送信部11aを介して送信先の通信装置50に送信する。
通信装置50bの受信部12bは、通信装置50aから受信した制御パケットを設定部23bに出力する。設定部23bは、記憶している閾値Nを、制御パケットに格納されている値に更新する。設定部23bは、閾値Nを更新すると、以後は、更新後の値を用いて、通信装置50aに送信するデータを設定する。すなわち、新たに設定された閾値Nよりも送信回数が小さい間、設定部23bは、実データに禁止情報を付したものを、送信対象とし、新たな閾値Nと同じ回数の送信では、実データと保持情報を通信装置50aへの送信対象とする。通信装置50c〜通信装置50eも、通信装置50aから制御パケットを受信すると、同様の処理を行う。なお、送信側の通信装置50は、同じデータの送信回数が閾値Nになると保持要求と共にデータを送信するので、閾値Nは、送信側の通信装置50にとって、保持要求を付さずに同じデータを送信できる回数の上限値の指標であるともいえる。このため、第2の実施形態では、受信側の通信装置50が送信側の通信装置50に対して、同じデータを保持要求を付さずに送信できる回数の上限値の指標を決定しているともいえる。
図14は、データを受信する通信装置50の処理の例を説明するフローチャートである。図14は、閾値Nの再計算が所定の周期ごとに行われる場合の例を示している。この場合、各通信装置50はタイマを保持しており、受信側の通信装置50が所定の周期ごとに閾値Nの計算処理を行うものとする。図14の例では、変数n、m、定数Yを使用する。定数Yは、閾値Nを計算する通信装置50に対してデータを送信している通信装置50の数である。変数nは、トラフィックレートの計算を行った経路の数を計数するために使用される変数である。また、変数mは、閾値Nの計算を行った通信装置50の数を計数するために使用される。なお、図14でも、データの送信側の通信装置50を分かりやすくするために、フローチャート中では、送信側の通信装置50のことを、便宜上、送信装置と記載している。
トラフィックレート算出部42は、タイマを初期化する(ステップS41)。トラフィックレート算出部42は、変数nを1に設定すると共に、接続管理部14から通信装置50にデータを送信している送信元の通信装置50の数(Y)を取得する(ステップS42)。トラフィックレート算出部42は、n番目の送信側の通信装置50との間の通信のトラフィックレートを計算する(ステップS43)。トラフィックレート算出部42は、nを1つインクリメントして、nがY以下であるかを判定する(ステップS44、S45)。変数nがY以下である場合、トラフィックレート算出部42は、ステップS43以降の処理を繰り返す(ステップS45でYes)。一方、変数nがYを超えると、閾値決定部41は、変数mを1に設定する(ステップS45でNo、ステップS46)。閾値決定部41は、m番目の送信側の通信装置50との間で使用する閾値Nを計算する(ステップS47)。閾値決定部41は、変数mを1つインクリメントして、mがY以下であるかを判定する(ステップS48、S49)。変数mがY以下である場合、閾値決定部41は、ステップS47以降の処理を繰り返す(ステップS49でYes)。一方、変数mがYを超えると、トラフィックレート算出部42は、タイマが満了したかを判定する(ステップS49でNo、ステップS50)。タイマが満了していない場合、トラフィックレート算出部42は、タイマが満了するまで待機する(ステップS50でNo)。タイマが満了すると、トラフィックレート算出部42は、ステップS41以降の処理を繰り返す(ステップS50でYes)。
第2の実施形態によると、通信装置50は、受信キャッシュ32の空き領域に応じて閾値Nの値を変更することができる。さらに、送信側の個々の通信装置50で使用される閾値Nの計算は、定期的に行われるので、受信側の通信装置50と通信する送信側の通信装置50の数が変動した場合にも、変動に応じて閾値Nが変更できる。従って、通信装置50で行われている通信の状況に応じて、自律的に閾値Nの値が変更されるため、状況に適した通信の設定が行われる。
<その他>
なお、実施形態は上記に限られるものではなく、様々に変形可能である。以下にその例をいくつか述べる。
送信回数が閾値を超えたときにチャンクの識別のために送信される情報は、受信側の通信装置10においてチャンクを一意に識別できる任意の情報であり、例えば、ハッシュ値であっても良い。ハッシュ値が識別子として使用される場合、送信側の通信装置10に含まれる設定部23は、送信しようとするチャンクについてハッシュ値を、チャンクの代わりにパケットに含めて受信側の通信装置10に送信する。この場合、受信側の通信装置10は、通知されたハッシュ値に対応付けられたデータを受信したものとして処理を行う。
識別子としてインデックス値とチャンクの長さが用いられる場合でも、受信側の通信装置10に備えられている受信キャッシュ32の空き容量がなくなることもあり得る。そこで、受信側の通信装置10は、受信キャッシュ32の空き容量がなくなったことによりチャンクを削除する場合は、削除するチャンクを送信側の通信装置10に通知する。この処理により、送信側の通信装置10と受信側の通信装置10の間で同じチャンクに対するインデックス値を一致させることができる。なお、通信装置50同士の通信においても、インデックス値を用いて重複しているデータを受信側の通信装置50に通知する場合は、送信側と受信側の通信装置50で同様の処理が行われる。
以上の説明で記載した送信データテーブル31や受信キャッシュ32に記憶される情報要素や情報の形式は、一例に過ぎない。送信データテーブル31や受信キャッシュ32に記憶される情報要素や情報の記憶の形式等は、実装に応じて任意に変更され得る。
第1および第2の実施形態のいずれにおいても、受信側の装置が保持する受信キャッシュ32の空き領域が小さいほど、保持情報を含めたデータを送信するかを決定するときに使用する閾値の値が大きくなるように調整されるように、変形することができる。例えば、第2の実施形態の場合では、閾値決定部41は、閾値Nを計算する際に、受信キャッシュ32の空き容量が小さいほど、定数Cの値を大きくすることができる。このとき、閾値決定部41は、受信キャッシュ32の空き容量と定数Cの関係を予め記憶しているものとし、閾値Nを計算するときの受信キャッシュ32の空き容量に合わせて、定数Cを選択できるものとする。第1の実施形態では、設定部23に設定される閾値Nは、受信キャッシュ32のうちの使用可能な容量が小さいほど、閾値Nが小さくなるように設定されるものとする。
第2の実施形態において、受信側の装置が通信装置50であれば、送信側の装置は通信装置50と通信装置10のいずれでも、同様に閾値の変更処理が可能である。なお、この場合、通信装置10も、データの受信側の通信装置50から受信した制御パケットについては、送信側の通信装置50と同様の処理を行うものとする。
1 サーバ
2 タブレット
3 携帯電話
4 エリア
5 WAN
10、50 通信装置
11 送信部
12 受信部
13 送受信部
14 接続管理部
15 キャッシュ管理部
16 データ処理部
20 重複検知部
21 分割部
22 識別子生成部
23 設定部
30 記憶部
31 送信データテーブル
32 受信キャッシュ
40 閾値設定部
41 閾値決定部
42 トラフィックレート算出部
101 プロセッサ
102 メモリ
103 入力装置
104 出力装置
105 バス
106 外部記憶装置
107 媒体駆動装置
108 可搬記憶媒体
109 ネットワーク接続装置

Claims (10)

  1. データを前記データの宛先に送信した回数を、前記データを識別する識別子に対応付けて記憶する記憶部と、
    前記宛先へ送信する対象のデータである対象データの送信回数が閾値に達すると、前記対象データの代替として前記宛先に送信する代替データを、前記対象データと前記対象データの保持を要求する保持要求の組み合わせに設定し、前記対象データに対する保持要求の送信後は、前記対象データの識別子を前記代替データに設定する設定部と、
    前記代替データを前記宛先に送信する送信部
    を備えることを特徴とする通信装置。
  2. 前記設定部は、前記対象データの送信回数が前記閾値未満の間、前記代替データを、前記対象データと前記対象データの保持を禁止する情報の組み合わせに設定する
    ことを特徴とする請求項1に記載の通信装置。
  3. 前記通信装置に向けて送信されたデータを受信する受信部と、
    受信データのうちで、前記保持要求が付加されたデータを保持する受信キャッシュと、
    前記通信装置にデータを送信する装置である送信元から受信するデータのトラフィックレートを算出する算出部と、
    前記送信元が前記保持要求を付加するまでに前記通信装置に同じデータを送信できる回数の上限値の指標として前記送信元が使用する指標値を、前記トラフィックレートが低いほど小さな値になるように決定する決定部を備え、
    前記送信部は、前記指標値を含むパケットを前記送信元に送信する
    ことを特徴とする請求項1または2に記載の通信装置。
  4. 第1の通信装置と第2の通信装置を含むネットワークにおいて、
    前記第1の通信装置は、
    前記第2の通信装置に送信するデータを識別する識別子を生成し、
    前記第2の通信装置へ送信する対象のデータである対象データの送信回数が閾値に達すると、前記対象データの代替として前記第2の通信装置に送信する代替データを、前記対象データと前記対象データの保持を要求する保持要求との組み合わせに設定し、
    前記第2の通信装置は、前記保持要求と共に受信した前記対象データを前記第2の通信装置が保持する受信キャッシュに保持し、
    前記第1の通信装置は、前記保持要求の送信後は、前記対象データの識別子を前記代替データに設定し、
    前記第2の通信装置は、前記識別子を受信すると、前記識別子に対応付けられたデータを、前記第1の通信装置から受信したデータとして扱う
    ことを特徴とする通信方法。
  5. 前記第1の通信装置は、前記第2の通信装置への前記対象データの送信回数が前記閾値未満の間、前記代替データを、前記対象データと前記対象データの保持を禁止する禁止情報の組み合わせに設定し、
    前記第2の通信装置は、前記禁止情報と共に受信した対象データを、前記第1の通信装置からの受信データとして処理する際に、前記受信キャッシュに格納しない
    ことを特徴とする請求項4に記載の通信方法。
  6. 前記第2の通信装置は、
    前記第1の通信装置から受信するデータのトラフィックレートを算出し、
    前記閾値の値を、前記トラフィックレートが低いほど小さな値になるように決定し、
    前記第1の通信装置に、前記閾値として決定した値を通知し、
    前記第1の通信装置は、前記第2の通信装置から通知された値を前記閾値として用いて、前記保持要求を付してデータを前記第2の通信装置に送信するかを判定する
    ことを特徴とする請求項4または5に記載の通信方法。
  7. 前記第1の通信装置は、第1の閾値を用いて前記第2の通信装置に送信するデータに前記保持要求を含めるかを判定し、
    第3の通信装置は、第2の閾値を用いて前記第2の通信装置に送信するデータに前記保持要求を含めるかを判定し、
    前記第2の通信装置は、
    前記第1の通信装置から受信するデータのトラフィックレートである第1のレートと、前記第3の通信装置から受信するデータのトラフィックレートである第2のレートを算出し、
    前記第2のレートが前記第1のレートより高い場合、前記第2の閾値の値が前記第1の閾値よりも大きくなるように、前記第1および第2の閾値の更新値を決定し、
    前記第1の通信装置は、前記第2の通信装置から通知された前記第1の閾値の更新値を用いて、前記第2の通信装置に送信するデータに前記保持要求を含めるかを判定し、
    前記第3の通信装置は、前記第2の通信装置から通知された前記第2の閾値の更新値を用いて、前記第2の通信装置に送信するデータに前記保持要求を含めるかを判定する
    ことを特徴とする請求項4または5に記載の通信方法。
  8. データを前記データの宛先に送信した回数を、前記データを識別する識別子に対応付けて記憶し、
    前記宛先へ送信する対象のデータである対象データの送信回数が閾値に達すると、前記対象データの代替として前記宛先に送信する代替データを、前記対象データと前記対象データの保持を要求する保持要求の組み合わせに設定し、
    前記対象データに対する保持要求の送信後は、前記対象データの識別子を前記代替データに設定し、
    前記代替データを前記宛先に送信する
    処理を通信装置に行わせることを特徴とする通信プログラム。
  9. 前記対象データの送信回数が前記閾値未満の間、前記代替データを、前記対象データと前記対象データの保持を禁止する情報の組み合わせに設定する
    処理を、前記通信装置に行わせることを特徴とする請求項8に記載の通信プログラム。
  10. 前記通信装置に向けて送信されたデータを受信し、
    前記通信装置にデータを送信する装置である送信元から受信するデータのトラフィックレートを算出し、
    前記送信元が前記保持要求を付加するまでに前記通信装置に同じデータを送信できる回数の上限値の指標として前記送信元が使用する指標値を、前記トラフィックレートが低いほど小さな値になるように決定し、
    前記指標値を含むパケットを前記送信元に送信する
    処理を、前記通信装置に行わせることを特徴とする請求項8または9に記載の通信プログラム。
JP2015557635A 2014-01-16 2014-01-16 通信装置、通信方法、および、通信プログラム Active JP6172296B2 (ja)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/JP2014/050687 WO2015107653A1 (ja) 2014-01-16 2014-01-16 通信装置、通信方法、および、通信プログラム

Publications (2)

Publication Number Publication Date
JPWO2015107653A1 JPWO2015107653A1 (ja) 2017-03-23
JP6172296B2 true JP6172296B2 (ja) 2017-08-02

Family

ID=53542572

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2015557635A Active JP6172296B2 (ja) 2014-01-16 2014-01-16 通信装置、通信方法、および、通信プログラム

Country Status (5)

Country Link
US (1) US9935889B2 (ja)
EP (1) EP3096501A4 (ja)
JP (1) JP6172296B2 (ja)
CN (1) CN105900395A (ja)
WO (1) WO2015107653A1 (ja)

Families Citing this family (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP6439874B2 (ja) * 2015-07-31 2018-12-19 富士通株式会社 情報処理装置、情報処理方法、及び、情報処理プログラム
JP6821363B2 (ja) * 2016-09-15 2021-01-27 キヤノン株式会社 通信装置、通信方法、及びプログラム
CN107800758B (zh) * 2017-03-28 2020-07-24 平安壹钱包电子商务有限公司 风控数据处理方法、装置及系统
US11606277B2 (en) * 2021-02-10 2023-03-14 Cohesity, Inc. Reducing the impact of network latency during a restore operation

Family Cites Families (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7194504B2 (en) * 2000-02-18 2007-03-20 Avamar Technologies, Inc. System and method for representing and maintaining redundant data sets utilizing DNA transmission and transcription techniques
JP4478310B2 (ja) 2000-09-20 2010-06-09 キヤノン株式会社 情報処理装置およびデータ処理方法および記憶媒体
JP5272428B2 (ja) * 2008-02-07 2013-08-28 日本電気株式会社 アクセス頻度の高い情報を事前にキャッシュする予測型キャッシュ方法、そのシステム及びそのプログラム
JP5084551B2 (ja) * 2008-02-26 2012-11-28 Kddi株式会社 重複排除技術を用いたデータバックアップ方法、記憶制御通信装置及びプログラム
CN101630290B (zh) * 2009-08-17 2011-06-08 成都市华为赛门铁克科技有限公司 重复数据处理方法和装置
JP5356350B2 (ja) * 2010-09-30 2013-12-04 ヤフー株式会社 ファイル送受信システム、端末装置、ストレージサーバ、ファイル送受信方法及びプログラム
JP5654314B2 (ja) * 2010-10-26 2015-01-14 任天堂株式会社 情報処理プログラム、情報処理装置、情報処理方法および情報処理システム
CN102693315A (zh) * 2012-05-29 2012-09-26 上海家配电子商务有限公司 一种基于共享内存映射的url去重方法及装置
WO2014101130A1 (zh) * 2012-12-28 2014-07-03 华为技术有限公司 数据处理方法及装置

Also Published As

Publication number Publication date
EP3096501A4 (en) 2017-02-01
EP3096501A1 (en) 2016-11-23
US9935889B2 (en) 2018-04-03
CN105900395A (zh) 2016-08-24
US20160301621A1 (en) 2016-10-13
JPWO2015107653A1 (ja) 2017-03-23
WO2015107653A1 (ja) 2015-07-23

Similar Documents

Publication Publication Date Title
US9158806B2 (en) Integrity checking and selective deduplication based on network parameters
JP6172296B2 (ja) 通信装置、通信方法、および、通信プログラム
CN107979592B (zh) 一种发送业务请求消息的方法及装置
CN108062419B (zh) 一种文件存储方法、电子设备、系统和介质
JP6295767B2 (ja) スイッチ装置、情報処理システムおよびスイッチ装置の制御方法
CN108282522B (zh) 基于动态路由的数据存储访问方法及系统
CN103823807B (zh) 一种去除重复数据的方法、装置及系统
CN105338090A (zh) 一种基于WebSocket的断点续传方法及装置
CN105407128A (zh) 在ccn中的中间路由器上兴趣保持活动
CN109587822B (zh) 信息发送控制方法、信息接收控制方法、装置、存储介质
JP2011170667A (ja) ファイル同期システム、ファイル同期方法およびファイル同期プログラム
CN106302638B (zh) 一种数据管理方法、转发设备及系统
CN108337208B (zh) 基于云存储的数据保护方法、替换装置以及云存储系统
JP6432407B2 (ja) ノード、情報処理システム、方法、および、プログラム
JP6886874B2 (ja) エッジ装置、データ処理システム、データ送信方法、及びプログラム
CN106453663B (zh) 改进的基于云服务的存储扩容方法及装置
JP6056857B2 (ja) 通信制御装置及び通信制御方法
JP6420462B2 (ja) サービスノード能力処理方法、装置、サービス分類器及びサービスコントローラ
JP2018148544A (ja) 鍵共有装置、鍵共有システム、鍵共有方法およびプログラム
CN109361625B (zh) 核查转发表项的方法、装置和控制器
WO2020134392A1 (zh) 数据分发方法、装置及存储介质
JP2007299019A (ja) データ通信システム、サーバ装置及びそれに用いるデータ通信方法並びにそのプログラム
CN111444160A (zh) 一种数据存储系统和上传、存储方法、装置、设备及介质
JP6452573B2 (ja) データ送信装置及びデータ受信装置及びデータ送信方法及びデータ受信方法及びデータ送信プログラム及びデータ受信プログラム
CN103297430B (zh) 数据传输方法及设备

Legal Events

Date Code Title Description
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: 20170606

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20170619

R150 Certificate of patent or registration of utility model

Ref document number: 6172296

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150