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

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

Info

Publication number
JP5935940B2
JP5935940B2 JP2015506469A JP2015506469A JP5935940B2 JP 5935940 B2 JP5935940 B2 JP 5935940B2 JP 2015506469 A JP2015506469 A JP 2015506469A JP 2015506469 A JP2015506469 A JP 2015506469A JP 5935940 B2 JP5935940 B2 JP 5935940B2
Authority
JP
Japan
Prior art keywords
packet
communication device
communication
transfer
transmission
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
JP2015506469A
Other languages
English (en)
Other versions
JPWO2014147774A1 (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
Application granted granted Critical
Publication of JP5935940B2 publication Critical patent/JP5935940B2/ja
Publication of JPWO2014147774A1 publication Critical patent/JPWO2014147774A1/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
    • 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/1819Hybrid protocols; Hybrid automatic repeat request [HARQ] with retransmission of additional or different redundancy
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L1/00Arrangements for detecting or preventing errors in the information received
    • H04L1/0001Systems modifying transmission characteristics according to link quality, e.g. power backoff
    • H04L1/0009Systems modifying transmission characteristics according to link quality, e.g. power backoff by adapting the channel coding
    • 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/1887Scheduling and prioritising arrangements
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L41/00Arrangements for maintenance, administration or management of data switching networks, e.g. of packet switching networks
    • H04L41/08Configuration management of networks or network elements
    • H04L41/0896Bandwidth or capacity management, i.e. automatically increasing or decreasing capacities
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L43/00Arrangements for monitoring or testing data switching networks
    • H04L43/06Generation of reports
    • H04L43/062Generation of reports related to network traffic
    • 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
    • H04L43/0864Round trip delays
    • 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/28Routing or path finding of packets in data switching networks using route fault recovery
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L45/00Routing or path finding of packets in data switching networks
    • H04L45/70Routing based on monitoring results
    • 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
    • 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/0823Errors, e.g. transmission errors
    • H04L43/0829Packet loss
    • H04L43/0841Round trip packet loss

Description

本発明は、複数の通信装置の間で行われる通信に関する。
クラウドコンピューティングの普及により、通信の高速化が求められているが、データの送受信を行う通信装置同士の距離は、事業のグローバル化などにより長くなってきている。Transmission Control Protocol(TCP)など、通信中に消失したパケットを再送する方式を用いて通信が行われる場合、送信側の通信装置は、受信側の通信装置からの確認応答パケットを用いて、次に送信するデータの大きさや再送を行うかを決定する。送信側の通信装置と受信側の通信装置との間の経路の往復遅延時間(Round Trip Time、RTT)は、送信側の通信装置と受信側の通信装置の間の距離が長いほど長くなる。このため、TCPを用いた通信では、送信側の通信装置と受信側の通信装置の間の距離が長くなると、通信速度が遅くなってしまう。一方、誤り訂正を用いる通信方式では、送信側の通信装置は、送信するデータを含むパケットの他に冗長パケットを送信する。パケットロスが発生したときに、受信側の通信装置は、消失したパケットに含まれているデータを、冗長パケットを用いて復元する。このため、誤り訂正を用いる通信では、再送による遅延を防止できるが、冗長パケットを送信するために、スループットが低下するという問題がある。
関連する技術として、冗長パケットを用いたときの通信で発生するジッタと、消失したパケットを再送する方式を用いたときの通信で発生するジッタを計測し、ジッタが小さいほうの通信方式を用いてデータを送信する通信装置が考案されている(例えば、特許文献1)。さらに、誤り訂正メカニズムを、状態パラメータやコネクションパラメータを用いて決定する方法も提案されている(例えば、特許文献2)。ここで、状態パラメータは、帯域幅や許容される遅延時間など、データが使用されるアプリケーションに応じて要求される品質情報である。また、コネクションパラメータは、通信コネクションに関する情報である。
国際公開第2007/061087号 特表2002−507369号公報
通信中に消失したパケットを再送する方式では、送信側の通信装置と受信側の通信装置の距離が長くなると、往復遅延時間が長くなることにより通信速度が落ちるという問題がある。一方、誤り訂正に使用される冗長パケットを送信する方式では、再送処理による通信速度の低下は防止できるが、冗長パケットを送信することにより、スループットが低下するという問題がある。
使用可能な通信方式のうちでジッタが小さい方式を採用して通信を行う通信装置では、各パケットの送信にかかる時間の変動を小さくすることはできるが、通信の高速化をすることはできない。また、誤り訂正メカニズムを、状態パラメータなどを用いて決定する方法では、アプリケーションから要求される品質情報を用いて通信方式を決定することになる。このため、品質情報が分からないと適切に通信方式を選択できないという問題がある。従って、品質情報を用いて通信方式を決定する方法は、不特定のアプリケーションで用いられるデータの転送を行う通信装置には適用できない。
本発明は、1つの側面では、スループットの低下を防ぎつつ遅延を抑制する方法を提供することを目的とする。
実施形態にかかる通信方法が用いられるネットワークは、第1の通信装置、第2の通信装置、および、第3の通信装置を含む。前記第2の通信装置は、前記第1の通信装置から受信したパケットから、前記第3の通信装置に転送するパケットである転送パケットを特定する。前記第2の通信装置は、前記転送パケットを前記第1の通信装置から受信する間隔を計測する。前記第2の通信装置は、前記転送パケットを前記第3の通信装置に転送する。前記第2の通信装置は、前記転送パケットの受信状況を通知する通知情報を、前記第3の通信装置から受信する。前記第2の通信装置は、前記通知情報を用いて、前記第3の通信装置へ転送したパケットのうちで前記第3の通信装置から受信の成功が通知されていないパケットである対象パケットを選択する。前記第2の通信装置は、前記第1の通信装置から前記転送パケットを受信する間隔が閾値を超えると、前記対象パケットを、誤り補正が可能な形式で前記第3の通信装置に再送信する。
スループットの低下を防ぎつつ、遅延を抑制できる。
実施形態にかかる通信方法の例を示す図である。 ネットワークの例を示す図である。 通信装置の構成の例を示す図である。 通信装置のハードウェア構成の例を示す図である。 通信方法の例を示すシーケンス図である。 送信テーブルの例を示す図である。 パケットのフォーマットの例を示す図である。 TCPヘッダとUDPヘッダのフォーマットの例を示す図である。 通信装置間でのパケットの送受信の例を示す図である。 制御応答パケットに含まれる情報の例を示す図である。 送信テーブルの更新例を示す図である。 送信データの種類によるパケットの送信パターンの例を示す図である。 通信装置の処理の例を示す図である。 通信装置の処理の例を説明するフローチャートである。 パケットの受信のタイミング例を説明する図である。 送信テーブルの変形例を示す図である。 ネットワークの例を示す図である。
図1は、実施形態にかかる通信方法の例を示す。図1の例では、端末は通信装置Bに向けてパケットを送信するものとする。通信装置Aは、端末から受信したパケットを、通信装置Bに転送する。図1中の太い矢印は、複数のパケットを示す。図1において、「P」の文字と数字の組合せは、端末から送信されたパケットを示し、Pに続く数字は、パケットのシーケンス番号を示すものとする。白抜きの矢印は、受信側が受信に失敗したパケットが送信側から再送される通信方式での通信を示す。以下、受信側が受信に失敗したパケットが送信側から再送される通信方式のことを、「再送ベース」の通信方式と記載することがある。一方、点描を含む矢印は、誤り訂正に使用される冗長パケットを送信する方式で行われる通信を示すものとする。以下の説明では、誤り訂正に使用される冗長パケットを送信する方式のことを、「誤り訂正ベース」の通信方式と記載することがある。
(1)端末は、再送ベースの通信方式で、通信装置Bに向けて、P0〜P9999のパケットを送信する。ここでは、通信装置Aは端末から送信されたパケットを全て受信できたものとする。
(2)通信装置Aは、端末から受信したパケットを、再送ベースの方式で通信装置Bに転送する。このとき、通信装置Bは通信装置Aから送信されたパケットのうち、P100のパケットの受信に失敗したとする。
(3)端末は、再送ベースの通信方式で、通信装置Bに向けて、P10000〜P19999のパケットを送信する。
(4)通信装置Bは、所定の時間間隔で、通信装置Aに、パケットの受信状況を通知するための制御応答パケット(Ack)を送信する。制御応答パケットには、制御応答パケットが生成される時点での受信状況が記録されている。図1の例では、通信装置Bは、P100の受信に失敗したことを通知する制御応答パケットを、通信装置Aに送信する。通信装置Aは、P0〜P99とP101〜P9999の通信装置Bへの送信に成功し、P100の通信装置Bへの送信に失敗したことを認識する。
(5)通信装置Aは、通信装置Bから制御応答パケットが送信されてから制御応答パケットの処理を終了するまでの間に、端末から受信したパケットP10000〜P19999を、再送ベースの方式で通信装置Bに転送する。
(6)端末から通信装置Bあてのパケットの送信が中断されたとする。端末から通信装置B宛てのパケットの送信が中断されている期間、通信装置Aは、端末からパケットを受信しないので、通信装置Aから通信装置Bへの新たなパケットの転送も中断されている。端末からパケットを受信しない期間が所定の閾値Thを超えると、通信装置Aは、通信装置Bへの新たなパケットの転送処理が中断している期間が閾値Thを超えたと判定する。ここで、閾値Thは、往復遅延時間(RTT)よりも短い時間に設定されるものとする。新たなパケットの転送処理が中断している期間が閾値Thを超えると、通信装置Aは、転送の成功が確認できていないパケットを、誤り訂正ベースの送信方法を用いて、通信装置Bに再送する。この時点では、通信装置Aは、通信装置Bから新たに制御応答パケットを受信していないため、P10000〜P19999については送信が成功しているかを知らない。さらに、通信装置Aは、手順(4)でP100のパケットの転送に失敗したことを認識している。そこで、通信装置Aは、通信装置Bに、P100とP10000〜P19999のパケットを、誤り訂正ベースで再送する。
通信装置Bは、通信装置Aから再送されたパケットにより、P100とP10000〜P19999を受信できる。手順(6)では、通信装置Aから誤り訂正ベースでパケットが送信されているので、通信装置Bは、受信に失敗したパケットについては、冗長パケットなどを用いて復元することができる。
(7)端末は、新たにパケットP20000〜P29999を通信装置Aに送信したとする。すると、通信装置Aは、通信装置Bに、再送ベースの通信方法により、P20000〜P29999を転送する。
このように、通信装置Aは、新たな転送対象のパケットを受信しない期間が閾値を超えると、パケットの転送に使用できる帯域の空きが増えたと判定する。そこで、新たなパケットの転送を行う合間に、転送の成功が確認できていないパケットを、誤り訂正ベースの通信方法で、再度、転送する。このため、制御応答パケットを待っているパケットについては、制御応答パケットの到着を待たずに再送処理が行われる。従って、制御応答パケットを待っているパケットであり、かつ、1度目の送信に失敗しているパケットについては、往復遅延時間(RTT)が経過する前に再送が行われることになる。従って、実施形態にかかる通信方法を用いると、RTTが長くなっても、遅延を抑えることができる。
なお、以下の説明では、通信装置Aと通信装置Bの間での往復遅延時間は、通信にかかる時間の計測に用いられるパケット(計測パケット)の送信時刻から計測パケットの応答パケットの受信時刻までの時間であるものとする。例えば、通信装置Aが第1の計測パケットを通信装置Bに送信した時刻から、第1の計測パケットの応答として通信装置Bから送信された第2の計測パケットを通信装置Aが受信する時刻までが、通信装置Aと通信装置Bの間のRTTである。
ところで、実施形態にかかる通信装置は、新たなパケットの転送を行う合間に行う再送では冗長パケットを送信するが、再送ベースで通信している間は冗長パケットを送信しない。このため、実施形態にかかる通信方法では、冗長パケットの送信によるスループットの低下を小さく抑えることができる。
なお、図1の例では、理解し易くするために、端末から通信装置B宛てのパケットが送信されているケースを例として説明したが、端末からのパケットは、通信装置Bを介して他の装置に転送されても良いものとする。
<ネットワークの例と装置構成>
図2は、実施形態にかかる通信装置10が用いられるネットワークの例を示す。図2は、Wide Area Network(WAN)2をはさんで、端末1とデータセンタ3中のサーバ4が通信する場合のネットワークの例を示す。データセンタ3には、通信装置10bとサーバ4が含まれているものとする。また、端末1は、通信装置10aを介してWAN2にアクセスするものとする。ここで、通信装置10aおよび通信装置10bは、WAN高速化装置として動作することができるものとする。なお、端末1の数とデータセンタ3に含まれているサーバ4の数は任意である。
図3は、通信装置10の構成の例を示す。通信装置10は、送信部11、受信部12、送受信部13、転送処理部14、再送処理部15、パケット処理部16、受信パケット管理部17、帯域算出部18、切り替え部20を備える。切り替え部20は、計測部21、選択部22、閾値計算部23を有する。
送信部11は、通信装置10がWAN2に含まれている装置や、他の通信装置10にパケットを送信するときに使用される。送信部11は、転送処理部14、再送処理部15、受信パケット管理部17などから入力されたパケットを、宛先に向けて送信する。受信部12は、WAN2に含まれている装置や、他の通信装置10からパケットを受信する。受信部12は、受信したパケットを、パケット処理部16に出力する。送受信部13は、通信装置10が端末1やサーバ4との間でパケットを送受信するときに使用される。送受信部13は、端末1から受信したパケットを、選択部22に出力する。
転送処理部14は、選択部22から入力されたパケットを、再送ベースの通信方法を用いてWAN2に送信するためのパケットに変換して、送信部11に出力する。再送処理部15は、選択部22から入力されたパケットを、誤り訂正ベースの通信方法を用いてWAN2に送信するためのパケットに変換して、送信部11に出力する。パケットのフォーマットについては後述する。
パケット処理部16、受信パケット管理部17、帯域算出部18は、通信装置10が、WAN2を介して接続されている他の通信装置10からパケットを受信している場合に処理を行う。パケット処理部16は、他の通信装置10から受信したパケットを、端末1やサーバ4に送信可能な形式に変換する。パケット処理部16は、処理済のパケットを送受信部13に出力する。すると、送受信部13は、端末1またはサーバ4に宛てたパケットを端末1またはサーバ4に送信する。
受信パケット管理部17は、パケット処理部16での受信状況をモニタする。例えば、受信パケット管理部17は、現在受信しているパケットのシーケンスIDの最大値と受信できたパケットのシーケンスIDを特定する。シーケンスIDについては後述する。受信パケット管理部17は、特定した情報を用いて、送信側の通信装置10に宛てた制御応答パケットを生成する。受信パケット管理部17は、制御応答パケットを送信部11に出力する。
帯域算出部18は、通信装置10が、WAN2を介して接続されている他の通信装置10からパケットを受信している場合、パケットの受信に使用している帯域幅を算出する。帯域算出部18は、得られた帯域幅を受信パケット管理部17に通知する。
計測部21は、通信装置10が端末1からパケットを受信していない期間の長さを計測する。計測部21は、通信装置10が端末1からパケットを受信すると、計測値を0にリセットする。
選択部22は、送受信部13から入力されたパケットを、転送処理部14に出力する。さらに、選択部22は、通信装置10が他の通信装置10に転送したパケットと、送信先の通信装置10から制御応答(Ack)を受信したパケットを特定することにより、パケットの送信状況をモニタする。選択部22は、通信装置10が端末1からパケットを受信していない期間Tが閾値Thを越えると、送信済みのパケットのうちでAckを受信していないパケットを選択する。言い換えると、選択部22は、誤り訂正ベースの再送処理の対象とするパケットを選択する。選択部22は、選択したパケットを、再送処理部15に出力する。閾値計算部23は、選択部22が判定に使用する閾値Thを計算し、得られた閾値を選択部22に出力する。さらに、選択部22は、送信部11からパケットが送信された最新の時刻をモニタする。
図4は、通信装置10のハードウェア構成の例を示す。通信装置10は、プロセッサ31、メモリ32、バス35、外部記憶装置36、ネットワーク接続装置39を備える。さらにオプションとして、通信装置10は、入力装置33、出力装置34、媒体駆動装置37を備えても良い。通信装置10は、例えば、コンピュータなどで実現されることがある。
プロセッサ31は、Central Processing Unit(CPU)を含む任意の処理回路とすることができる。プロセッサ31は、転送処理部14、再送処理部15、パケット処理部16、受信パケット管理部17、帯域算出部18、切り替え部20として動作する。なお、プロセッサ31は、例えば、外部記憶装置36に記憶されたプログラムを実行することができる。メモリ32は、プロセッサ31の動作により得られたデータや、プロセッサ31の処理に用いられるデータも、適宜、記憶する。ネットワーク接続装置39は、他の装置との通信に使用され、送信部11、受信部12、送受信部13として動作する。
入力装置33は、例えば、ボタン、キーボードやマウスとして実現され、出力装置34は、ディスプレイなどとして実現される。バス35は、プロセッサ31、メモリ32、入力装置33、出力装置34、外部記憶装置36、媒体駆動装置37、ネットワーク接続装置39の間を相互にデータの受け渡しが行えるように接続する。外部記憶装置36は、プログラムやデータなどを格納し、格納している情報を、適宜、プロセッサ31などに提供する。媒体駆動装置37は、メモリ32や外部記憶装置36のデータを可搬記憶媒体38に出力することができ、また、可搬記憶媒体38からプログラムやデータ等を読み出すことができる。ここで、可搬記憶媒体38は、フロッピイディスク、Magneto-Optical(MO)ディスク、Compact Disc Recordable(CD−R)やDigital Versatile Disk Recordable(DVD−R)を含む、持ち運びが可能な任意の記憶媒体とすることができる。
<第1の実施形態>
以下、図2に示すネットワークにおいて、端末1とサーバ4の間で通信が行われるケースでの通信装置10の処理を説明する。図5は、通信方法の例を示すシーケンス図であり、図5の(A)〜(E)に分けて、通信装置10aおよび通信装置10bで行われる処理を説明する。以下の例では、通信装置10aは端末1との間でTCPパケットを送受信し、通信装置10bはサーバ4との間でTCPパケットを送受信する。また、通信装置10aが通信装置10bに向けてデータを送信する場合を例とする。さらに、第1の実施形態では、理解し易くするために、通信装置10aと通信装置10bは、WAN2に設置されている専用線を用いて通信しているものとする。さらに、通信装置10aと通信装置10bのいずれの動作であるかを分り易くするために、通信装置10中の部分の番号の後ろに、その処理を行っている通信装置10の番号に含まれているアルファベットを記載するものとする。例えば、計測部21aは通信装置10aに含まれている計測部21であり、受信パケット管理部17bは、通信装置10bに含まれている受信パケット管理部17である。
(A)端末1から受信したパケットの転送処理
まず、端末1がサーバ4宛のデータを通信装置10aに送信する。端末1と通信装置10aの間の通信では、図5の(a1)に示すように、TCPプロトコルを用いて行われ、適宜、確認応答や再送処理が行われる。通信装置10aは、端末1との通信を開始するとき、TCP通信を行っている端末1を一意に認識するための識別番号(TCPアプリケーション識別子)を、端末1との間の通信で使用されるコネクションに対して割り振る。
ここで、パケットP0〜P19999が連続的に通信装置10aに送信されたとする。通信装置10aの計測部21aは、通信装置10aが端末1からパケットを受信するごとにパケットを受信していない期間の長さを0にリセットする。送信側の通信装置10aの選択部22aは、送受信部13aからパケットP0を取得し、送信テーブルを作成する(図5の(a2)、(a3))。
図6(a)は、送信テーブルの例を示す。送信テーブルは、端末1から受信したパケットを保持する。送受信部13aは、パケットP0を選択部22aに出力する。このとき、選択部22aは、パケットP0が端末1からサーバ4に転送する対象のパケットであるため、パケットP0に送信中であることを示すフラグを付加する。以下、送信中であることを示すフラグを「送信中フラグ」と記載することがある。さらに、選択部22aは、端末1から受信した各パケットに対し、TCPアプリケーション識別子ごとに、同じコネクションを介して受信したパケットの順序を示す識別子として、シーケンスIDを割り当てる。選択部22aは、TCPアプリケーション識別子で識別されるコネクションを介して最初に受信したパケットのシーケンスIDを0とし、受信したパケットの順序になるように、シーケンスIDを割り当てるものとする。以下の説明では、分かりやすくするために、端末1から送信された最初のパケットのシーケンス番号が0であるケースを例として説明する。従って、以下の例では、パケットのTCPヘッダ中のシーケンス番号と、パケットに割り当てられたシーケンスIDは同じ値である。選択部22aは、パケットP0に割り当てたシーケンスIDをキーとしたハッシュテーブルを生成して、パケットP0を記憶する。さらに、選択部22aは、送受信部13aから入力されたパケットP0を、TCPアプリケーション識別子およびシーケンスIDに対応付けて、転送処理部14aに出力する。
P1〜P9999のパケットを受信したときも、P0のときと同様に処理する。このため、選択部22aは、パケットP0〜P9999を処理することにより、図6(a)に示す情報を格納したハッシュテーブルを備えることになる。さらに、選択部22aは、パケットP0〜P9999を、転送処理部14aに出力する。転送処理部14aは、選択部22aから入力されたパケットを転送パケットに変換する(図5の(a4))。
図7は、パケットのフォーマットの例を示す図である。図7は、通信装置10aと通信装置10bの間で送受信されるパケットの例を示している。以下、通信装置10aと通信装置10bの間でデータの送受信に使用されるパケットのことを「転送パケット」と記載することがある。図7(a)は、データの転送に使用されるパケットのフォーマットの例である。データの転送に使用される転送パケットは、Internet Protocol(IP)ヘッダ、User Datagram Protocol(UDP)ヘッダ、プロトコルID情報、データヘッダ、データを含む。IPヘッダとUDPヘッダのフォーマットは、それぞれのプロトコルで規定された通りである。プロトコルIDは、転送パケットが、データの転送と、データの再送のいずれに使われているかを判定するための情報を格納する。データヘッダは図7(c)に示すように、TCPアプリケーション識別子、シーケンスID、パケットIDを含む。データは、転送パケットにより送信されるデータである。
図7(d)は、選択部22aから転送処理部14aに入力されるパケットの例を示す図である。選択部22aから転送処理部14aに入力されるパケットは、IPヘッダ、TCPヘッダ、および、データを含む。転送処理部14aは、選択部22aから入力されたパケットのIPヘッダは変更しない。
TCPヘッダに含まれている情報要素の例を図8(a)に示す。TCPヘッダは、送信元ポート番号、宛先ポート番号、シーケンス番号、確認応答番号、データオフセット、リザーブ領域、制御ビット、ウィンドウサイズ、チェックサム、緊急ポインタ、オプションを含む。一方、UDPヘッダは、図8(b)に示すように、送信元ポート番号、宛先ポート番号、セグメントサイズ、チェックサムを含む。
そこで、転送処理部14aは、パケットP0が選択部22aから入力されると、パケットP0のTCPヘッダから、送信元ポート番号、宛先ポート番号、シーケンス番号を取得する。転送処理部14aは、取得した送信元ポート番号と宛先ポート番号を、転送パケットのUDPヘッダの送信元ポート番号と宛先ポート番号に設定する。転送処理部14aは、選択部22aから通知されたTCPアプリケーションの識別子とシーケンスIDをデータヘッダに含める。転送処理部14は、端末1から受信したパケットのTCPヘッダに含まれていたシーケンス番号を、パケットIDとしてデータヘッダに記録する。
さらに、転送処理部14aは、プロトコルIDを、データの転送を表す値に設定する。転送処理部14aは、パケットP0のデータを転送パケットのデータとし、セグメントサイズ、チェックサムを設定する。以上の処理により、転送処理部14aは、パケットP0を、パケットP0によって送信されたデータを含む転送パケットに変換する。転送処理部14aは、生成した転送パケットを送信部11aに出力する(図5の(a5))。
図9は、通信装置10aと通信装置10bの間でのパケットの送受信の例を示す。送信部11aは、転送処理部14aから入力された転送パケットを通信装置10bに送信する(図5の(a6))。選択部22aは、送信部11aが転送パケットを送信した時刻を最終送信時刻として記憶する。図9の転送パケット(U0)は、パケットP0から変換された転送パケットを表す。その他に通信装置10aが通信装置10bに転送するパケットについても、パケットP0と同様に転送処理部14aでの変換処理と送信部11aからの送信処理が行われる。図9で通信装置10aから通信装置10bに送信されている各パケットは、Uの後に続く数字と同じ値のシーケンスIDが付けられた転送パケットであるものとする。なお、選択部22aは、通信装置10aから転送パケットが送信されるたびに、最終送信時刻を新たな送信時刻に更新する。
(B)通信装置10bで行われる受信処理とサーバ4への転送処理
通信装置10bは、通信装置10aから転送パケットを受信する(図5の(b1))。通信装置10bの受信部12bは、受信したパケットを、パケット処理部16bに出力する(図5の(b2))。パケット処理部16bは、入力された転送パケット中のデータヘッダからシーケンスIDとTCPアプリケーション識別子を抽出し、得られた値を受信パケット管理部17bに出力する。受信パケット管理部17bは、パケット処理部16bから入力された値を、通信装置10aから受信できたパケットのシーケンスIDとして、TCPアプリケーション識別子に対応付けて記憶する。転送パケットU0からは、シーケンスID=0が得られるので、受信パケット管理部17bは、シーケンスID=0のパケットの受信に成功したと認識する。
次に、パケット処理部16bは、転送パケットのUDPヘッダ中の情報とデータヘッダ中のパケットIDを含むTCPヘッダを生成する。ここで、パケット処理部16bは、パケットIDを、TCPヘッダ中のシーケンス番号とする。さらに、パケット処理部16bは、UDPヘッダの送信元ポート番号と宛先ポート番号を、TCPヘッダの送信元ポート番号と宛先ポート番号に設定する。パケット処理部16bは、転送パケットからUDPヘッダ、プロトコルID、データヘッダを除去し、これらの情報の代わりに生成したTCPヘッダを含めることにより、端末1から送信された情報を含むTCPパケットを生成する(図5の(b4))。例えば、転送パケットU0からは、パケットP0で送信された情報を含むTCPパケットが生成される。パケット処理部16bは、生成したパケットを送受信部13bに出力する。送受信部13bは、パケット処理部16bから入力されたパケットを、サーバ4に送信する(図5の(b5))。
通信装置10bは、他に受信した転送パケットも同様に処理する。このため、通信装置10bが通信装置10aから受信できた転送パケットに含まれている情報は、サーバ4に送信される。さらに、帯域算出部18bは、パケットの受信に使用した帯域幅を計算する。受信パケット管理部17bは、通信装置10bが通信装置10aから受信することができたパケットに含まれているシーケンスIDを記憶している。例えば、通信装置10bは、受信したパケットのシーケンスIDを記録するテーブル(受信テーブル)を保持することができる(図5の(b3))。ここでは、通信装置10bは、シーケンスIDが0〜8019、8024〜8699、8701〜9009、9022〜9999のパケットの受信に成功したとする。受信パケット管理部17bは、受信に成功したパケットのシーケンスIDを記憶する。
(C)通信装置10bからの制御応答パケットの送信
通信装置10bは、予め決められた周期ごとに、通信装置10aに制御応答パケット(Ack)を送信することにより、受信状況を通知する。制御情報の通知に使用されるパケットのフォーマットを、図7(b)に示す。制御情報の通知に使用されるパケットは、IPヘッダ、UDPヘッダ、プロトコルID情報、データヘッダ、制御情報を含む。制御応答パケットの場合、プロトコルID情報はAckに設定され、制御情報には、受信に成功したパケットを特定する情報が記録される。
図10は、制御応答パケットの制御情報に含まれる情報の例を示す図である。制御応答パケット中の制御情報には、制御情報識別子、受信サイズ、最大受信サイズ、受信帯域、応答要求情報、再送開始ID、再送開始シーケンス長が含まれる。制御情報識別子は、受信状況を報告する対象となっているパケットに含まれていたTCPアプリケーション識別子である。受信サイズは、TCPアプリケーション識別子が等しいパケットのうち、連続的に受信に成功したパケットの末端までで得られるデータの総量をバイト単位で示した値である。受信サイズを1つの転送パケット中のペイロードの大きさで割ると、連続的に受信できているシーケンスIDの最大値が得られる。なお、転送パケット中のペイロードの大きさは、予め、通信装置10aと通信装置10bに設定されているものとする。最大受信サイズは、受信に成功しているパケットに付されているシーケンスIDの最大値と、転送パケットのペイロードのバイト数の積である。受信帯域は、通信装置10bが通信装置10aからの転送パケットの受信に使用した帯域幅である。通信装置10bの受信帯域は、帯域算出部18bが算出する。
再送開始IDと再送開始シーケンス長は、組合せで使用される。再送開始IDは、通信装置10bが受信に失敗したパケットをシーケンスIDが連番になっているグループごとに分けたときに、各グループの中の最小のシーケンスIDとなる値である。再送開始シーケンス長は、再送開始IDを最小値とするグループに属する受信に失敗したパケットの数である。応答要求情報は、パケットに対するAckを要求するかを示す値である。再送ベースの送信方法の場合、応答要求情報は、Ackを要求することを示す値に設定される。一方、誤り訂正ベースの再送や、Ackを通知するための制御パケットなどでは、応答要求情報は、Ackを要求しないことを示す値に設定される。
図10は、通信装置10bが生成する制御応答パケットでの制御情報の例である。通信装置10bは、シーケンスIDが0〜8019、8024〜8699、8701〜9009、9022〜9999のパケットの受信に成功している。このため、通信装置10bの受信パケット管理部17bは、8020〜8023、8700、9010〜9021のシーケンスIDが割り当てられたパケットの再送を通信装置10aに要求するための制御応答パケットを生成する。受信パケット管理部17bは、受信サイズを8019×U、最大受信サイズを10000×Uに設定する。ここで、Uは、転送パケットのペイロード長である。さらに、受信パケット管理部17bは、再送開始IDとして、8020、8700、9010を指定する。さらに、受信パケット管理部17bは、再送開始ID=8020に対応する再送開始シーケンス長を4に指定することにより、8020〜8023のシーケンスIDが割り当てられたパケットの再送を要求する。同様に、受信パケット管理部17bは、再送開始ID=8700に対応する再送開始シーケンス長を1、再送開始ID=9010に対応する再送開始シーケンス長を11に指定する。さらに、受信パケット管理部17bは、帯域算出部18bで得られた受信帯域を制御応答パケットに含める(図5の(c1))。
受信パケット管理部17bは、宛先を通信装置10a、送信元を通信装置10bに指定したIPヘッダを、制御応答パケットに付加する。さらに、受信パケット管理部17bは、UDPヘッダ、データヘッダなども適宜設定し、プロトコルIDに制御応答パケットであることを示す情報を含める。受信パケット管理部17bは、生成した制御応答パケットを、送信部11bに出力する。送信部11bは、入力された制御応答パケットを、通信装置10aに送信する(図5の(c2))。
(D)制御応答パケットを用いた送信履歴管理
通信装置10aは、シーケンスID=9999のパケットの送信後で、通信装置10bから制御応答パケットを受信する前に、シーケンスIDが10000〜19999のパケットを通信装置10bに送信していたとする。すると、通信装置10bからの制御応答パケットを受信する前に選択部22aは、送信中のパケットの情報として、図6(b)に示す情報を保持している。
その後、通信装置10aの受信部12aは、図10を参照しながら説明した情報を含む制御応答パケットを受信する。受信部12aは、制御応答パケットをパケット処理部16aに出力する(図5の(d1))。パケット処理部16aは、プロトコルIDの値が制御応答パケットであることを示す情報である場合、入力されたパケットを選択部22aに出力する。選択部22aは、制御応答パケットが入力されると、通信装置10bでの受信状況に応じて、送信中のパケットの情報を更新する。
図11は、送信テーブルの更新例を示す。選択部22aは、制御応答パケットから送信に成功したことが確認できたパケットの情報を削除する。例えば、図10に示す情報を含む制御応答パケットを受信すると、選択部22aは、シーケンスIDが0〜8019、8024〜8699、8701〜9009、9022〜9999のパケットの送信に成功したと判定する。一方、選択部22aは、8020〜8023、8700、9010〜9021のシーケンスIDが割り当てられたパケットの送信に失敗したと判定する。さらに、シーケンスIDが10000〜19999のパケットについては、制御応答パケットを受信していないので、送信の成功状況が分らないと判定する。そこで、送信に成功したと判定したパケットの情報を削除することにより、送信中のパケットの情報を、図6(b)に示す情報から、図11に示す情報に更新する(図5の(d2))。
(E)新たなパケットの転送の中断中に行われる誤り訂正ベースの再送
図12は、送信データの種類によるパケットの送信パターンの例を示す。ファイル転送が行われる場合、端末1からのデータの送信は連続的に行われる。このため、図12(a)に示すように、通信装置10aが端末1からのパケットを受信しない時間間隔は、比較的短い。言い換えると、通信装置10aは、端末1から連続的にパケットを受信する。一方、送信データが動画などである場合、図12(b)に示すように、動画フレームレートに応じて、パケットが端末1から送信されない期間が発生する。このため、端末1から動画が転送されている場合、通信装置10aが端末1からパケットを受信しない期間は、ファイル転送が行われている場合に比べて長い。
通信装置10aが、端末1からパケットを受信しない場合、通信装置10aは新たなパケットを通信装置10bに転送しないので、通信装置10aと通信装置10bの通信回線に空き容量が発生する可能性がある。そこで、通信装置10aは、新たなパケットの転送を行わないことによって発生した空き容量で、送信の成功が確認できていないパケットを誤り訂正ベースで再送する。以下、誤り訂正ベースの再送を行うかを判定する方法から、再送処理までを詳しく説明する。
通信装置10aの閾値計算部23aは、誤り訂正ベースの再送を行うかを判定するために使用する閾値を計算する。選択部22aは、再送の対象となるパケットを選択して、選択したパケットのデータ量を閾値計算部23aに通知する。ここで、選択部22aは、送信に失敗したことを通知されているパケットに加えて、制御応答パケットによって受信状況が通知されていないパケットも、再送対象とする。従って、図11を用いて説明した例では、選択部22aは、シーケンスIDが8020〜8023、8700、9010〜9021、10000〜19999のパケットを再送対象とする。
閾値計算部23aは、受信の確認が取れていないデータを誤り訂正ベースで再送する際に送信する冗長分の情報量を、未使用の帯域幅で送信できる時間を閾値として求め、得られた値を選択部22aに通知する。閾値計算部23aは、次式により閾値Thを計算する。なお、ここでは、閾値Thが往復遅延時間(RTT)よりも小さい値である場合について説明する。
Th=X×A/(B−Bused
ここで、Xは再送しようとするデータの総量をバイト単位で示す値である。Aは、誤り訂正ベースの再送を行うために送信する冗長分のパケットに含まれるデータ量が再送の対象とするデータの総量に対して占める割合である。Aは、再送方式によって任意に設定されるが、例えば、0.1〜0.2程度の値に設定することができる。Bは、通信装置10aと通信装置10bの間を結ぶ回線の帯域幅である。なお、閾値計算部23aは、予め、Aの値と帯域幅(B)を記憶しているか、メモリ32aから読み出すものとする。Busedは、通信装置10aと通信装置10bの間の通信に使用されている帯域幅であり、制御応答パケットによって、通信装置10bから通知された値を用いる。従って、(B−Bused)は、通信装置10aと通信装置10bの間の通信に使用されていない空き帯域の帯域幅である。
選択部22aは、計測部21aから、通信装置10aが端末1からパケットを受信していない期間の値を取得して、閾値Thと比較する。ここで、通信装置10aが端末1からパケットを受信していない期間が閾値Thを超えたとする。すると、選択部22aは、誤り訂正ベースの再送処理が可能であると判定する(図5の(e1))。
選択部22aは、再送処理の対象とするパケットを、再送処理部15aに出力する。再送処理部15aは、選択部22aから入力されたパケットに含まれているデータを誤り訂正が可能になるように、冗長化する。例えば、再送処理部15aは、選択部22aから入力されたパケットのデータをForward Error Correction(FEC)符号化により、誤り訂正に用いる冗長パケットを生成する。さらに、再送処理部15aは、各パケットと、冗長パケットのそれぞれに、ヘッダ情報を付加する。再送処理部15aは、転送処理部14aが転送パケットを生成したときと同様の手順でヘッダ情報を付加する。ただし、再送処理部15aは、プロトコルID情報に、誤り訂正ベースの再送パケットであることを示す情報を記録する。再送処理部15aは、生成したパケットを送信部11aに出力する(図5の(e2))。送信部11aは、再送処理部15aから入力されたパケットを、通信装置10bに送信する(図5の(e3))。選択部22aは、再送処理部15aから誤り訂正ベースで送信されたパケットを送信テーブルから削除する。
図13は、実施形態にかかる通信装置の処理の例を示す。端末1からTCPパケットを受信している間、通信装置10aは、受信したパケットをUDPパケットに変換して通信装置10bに送信する。通信装置10aは、通信装置10bの受信パケット管理部17bで生成された受信テーブルの情報を含む制御応答パケット(Ack)を所定の周期で受信し、制御応答パケットに応じた再送処理を行う。なお、通信装置10aは、TCPパケットを端末1から受信している間に再送を行う場合は、送信に失敗したパケットを再送ベースで再送する。
一方、通信装置10aの選択部22aは、端末1からTCPパケットを受信しない期間が所定の期間を超えると、通信装置10aと通信装置10bの間に新たなパケットが転送されていないことにより、回線が空いたと判定する。このため、選択部22aは、受信の確認が取れていないパケットを選択して、再送処理部15aに出力する。再送処理部15aは、FEC符号化を用いて、選択部22aから入力されたパケットを誤り訂正が可能な形式にし、再送処理を行う。端末1からのTCPパケットの送信が再開すると、通信装置10aは、再度、冗長化パケットを用いない通信方法でパケットを転送する。
図14は、通信装置の処理の例を説明するフローチャートである。図14の処理例では、TCPパケットを転送パケットに変換して転送する処理にかかる時間が、パケットによって変動しないとする。このため、計測部21は、最後に送信部11からの送信が行われた時刻(最終送信時刻)と現在時刻との差を、通信装置10が端末1からパケットを受信していない期間の近似値として扱っている。また、計測部21は、閾値Thよりも十分に短い値に設定したタイマを保持していて、タイマがタイムアップするたびに、選択部22に誤り訂正ベースの再送を行うかの判定を要求するものとする。
切り替え部20やパケット処理部16として動作しているプロセッサ31は、割り込みの要求があるまで待機する(ステップS1)。プロセッサ31は、割り込みがあると、割り込みで要求されている内容を判定する(ステップS2)。割り込みがTCPパケットの受信を示している場合、端末1からの受信パケットが選択部22aに入力されている(ステップS3)。そこで、選択部22はTCPパケットを転送処理部14に出力し、転送処理部14は、TCPパケットを転送パケットに変換する(ステップS4)。転送処理部14は、送信部11を介して、転送パケットを、再送ベースの転送方法で、受信側の通信装置10に転送する(ステップS5)。選択部22は、最終送信時刻を現在時刻に更新する(ステップS6)。
ステップS2において、割り込みがUDPパケットの受信を示している場合、受信側の通信装置10からの制御応答パケットが選択部22に入力されている(ステップS7)。選択部22は制御応答パケットを用いて、送信テーブルを更新する(ステップS8)。選択部22は、さらに、Ackを未受信であるため再送の対象とするパケットの量と、空き帯域の推定値を更新する(ステップS9)。閾値計算部23は、空き帯域の値を利用して閾値Thを算出する(ステップS10)。
ステップS2において、計測部21が保持するタイマのタイムアップによる割り込みであると判定された場合、計測部21が選択部22に、誤り訂正ベースの再送処理を行うかの判定を要求している(ステップS11)。そこで、選択部22は、現在時刻を取得する(ステップS12)。選択部22は、最終送信時刻に閾値を加えることによって得られる時刻と現在時刻を比較する(ステップS13)。最終送信時刻に閾値を加えることによって得られる時刻が現在時刻よりも後の時刻である場合、最後にパケットを受信側の通信装置10に転送してから経過した時間は、閾値よりも短い。この場合、選択部22は、まだ誤り訂正ベースの再送をすることができる程度に、受信側の通信装置10との間の帯域が空いていないと判定し、ステップS1に戻る(ステップS13でNo)。最終送信時刻に閾値を加えることによって得られる時刻が現在時刻以降の時刻である場合、最後にパケットを受信側の通信装置10に転送してから経過した時間は、閾値以上である。この場合、選択部22は、誤り訂正ベースの再送をすることができる程度に、受信側の通信装置10との間の帯域が空いていると判定し、誤り訂正ベースの再送を再送処理部15に要求する(ステップS13でYes)。再送処理部15は、選択部22の要求に応じて、誤り訂正ベースの再送処理を行う。また、選択部22は最終送信時刻を現在時刻に更新する(ステップS14)。
図15は、パケットの受信のタイミング例を説明する図である。通信装置10aが転送パケットU0〜Unを、再送ベースの送信方法で通信装置10bに送信したとする。さらに、通信装置10bがパケットUx−1を受信したときに生成された制御応答パケットが、通信装置10bから通信装置10aに送信されたとする。ここで、パケットU0〜Ux−1までは全て通信装置10bで受信できたとすると、通信装置10aの選択部22aは、Ux〜UnはAck待ちであると判定し、Ux〜Unを送信テーブルに残す。
一方、通信装置10bは、Ux〜Un−1を受信できなかったが、パケットUnを受信したとする。すると、通信装置10bは、パケットUnは受信できたがUx〜Un−1の受信に失敗したことを通知するための制御応答パケットを生成し、通信装置10aに向けて送信する。
ここで、パケットUnが通信装置10bに到達するまでの間に、通信装置10aが端末1からパケットを受信しない期間が閾値Thを超えていたとする。すると、選択部22aは再送処理部15aに、誤り訂正ベースでのUx〜Unの再送を要求する。このため、通信装置10aは、Ux〜Unについての制御応答パケットを受信する前に、Ux〜Unを誤り訂正ベースで通信装置10bに再送する。従って、通信装置10bは、時刻T1にUx〜Unを受信できる。Ux〜Unについての制御応答パケットは、通信装置10aがUx〜Unを送信した時刻から往復遅延時間(RTT)が経過した時刻に通信装置10aに到達する。このため、通信装置10aは、制御応答パケットの受信待ちの間に、通信装置10bからのAckを待っているパケットであり、かつ、1回目の送信に失敗したパケットを、そのパケットのRTTが経過する前に強制的に再送信していることになる。従って、RTTとは無関係にパケットの強制的な再送信を行うことができるため、通信装置10aを用いた通信では、RTTの長さが長くなることによる遅延が発生しにくい。
例えば、図15に示すように、通信装置10bからの2回目の制御応答パケットを待ってからUx〜Un−1を再送した場合、通信装置10bがUx〜Un−1を受信する時刻は、時刻T2にまで遅延してしまう。従って、実施形態にかかる通信方法を用いると、通信装置10aと通信装置10bの間で発生する通信遅延を、T2―T1の期間分だけ縮めることができる。さらに、誤り訂正ベースの再送は、通信装置10aと通信装置10bの間の回線に所定以上の空きがあることが見込まれる場合に行われる。このため、冗長パケットの送信によるスループットの低下を防ぐことができる。
例えば、通信装置10aと通信装置10bの間の帯域幅がM(bps)、FECによる冗長度がA、通信装置10aと通信装置10bの間のRTTがr(sec)、パケットロス率がdであるときの送信方法によるスループットとレイテンシを比較する。なお、冗長度Aは0.1程度、パケットロス率dは0.1〜0.2程度の値であると仮定する。
再送ベースで全てのパケットの転送および再送を行うと、スループットは、Mbpsである。しかし、レイテンシの期待値は、(r/2)×(1−d)+(r/2+r)×dとなる。FECで全てのパケットの転送を行う場合は、スループットは、M/(1+A)bpsとなるが、レイテンシの期待値は(r/2)である。
一方、通信装置10を用いて転送処理を行うことにより、再送ベースの転送と誤り訂正ベースの再送を組み合わせてパケットを転送すると、スループットの期待値はMbpsであり、レイテンシの期待値は(r/2)である。従って、通信装置10を用いて、再送ベースの転送と誤り訂正ベースの再送を行うことにより、スループットを低下させることなく、再送による遅延を抑制することができる。
<第2の実施形態>
第1の実施形態では、閾値Thが通信装置10aと通信装置10bの間の往復遅延時間(RTT)よりも短いケースを例として説明したが、閾値Thの計算値がRTTを超える場合もある。この場合、通信装置10aは、送信の成功が確認できていないパケットの再送処理を複数回に分けることにより、送信側と受信側の通信装置10の間のRTTが経過する前に、受信側の通信装置10での受信状況を確認できていないパケットを強制的に再送できる。
第2の実施形態では、計測部21は、計測パケットを用いて通信装置10aと通信装置10bの間の通信にかかる時間も計測できるものとする。計測部21aは、第1の計測パケットを生成し、送信部11aから通信装置10bに第1の計測パケットが送信された時刻を記憶する。第1の計測パケットは通信装置10bの受信部12bで受信され、計測部21bに出力される。なお、受信部12bは、計測パケットのフォーマットを予め記憶しており、他のパケットと計測パケットを識別できるものとする。計測部21bは、第1の計測パケットに応答する第2の計測パケットを生成し、送信部11bを介して、通信装置10aに送信する。通信装置10aの受信部12aは第2の計測パケットを受信すると、計測部21aに第2の計測パケットを出力する。計測部21aは、第2の計測パケットを受信した時刻を取得し、第1の計測パケットの送信時刻との間の差分を計算する。計測部21aは、得られた差分を、RTTとして閾値計算部23aに出力する。
閾値計算部23aは、閾値ThとRTTの値を比較する。閾値ThがRTT以上の場合、閾値計算部23aは、閾値Thの代わりに閾値Thkを算出する。閾値Thkが算出される場合、誤り訂正ベースの再送処理を行うかの判定の際に、閾値Thの代わりに閾値Thkが使用される。閾値Thkは、以下の式から算出される。
Thk=Y×A/(B−Bused)=X×A/K(B−Bused)=Th/K
ここで、Y=X/Kである。Yは、1回の誤り訂正ベースの再送処理で送信しようとするデータのバイト数である。Kは誤り訂正ベースで行う再送処理の回数である。また、Xは再送しようとするデータの総量のバイト数であり、Aは誤り訂正ベースの再送を行うために送信する冗長分のパケットに含まれるデータ量が再送するデータの量に対して占める割合である。(B−Bused)は、通信装置10aと通信装置10bの間の通信に使用されていない空き帯域の帯域幅である。
閾値計算部23aは、再送処理の回数を、閾値Thの値に応じて決定することができる。例えば、閾値計算部23aは、閾値Thが長いほどKの値を大きくすることができ、閾値Thの長さに応じて、任意の2以上の整数をKに設定することができる。このように、誤り訂正ベースの再送処理を複数回に分けることにより、再送処理の際に送信される冗長分のデータ量が多くなっても、通信装置10は、RTTの経過前にAckを受信していないパケットを強制的に再送信できる。このため、送信側の通信装置10と受信側の通信装置10の距離が長くなることにより、RTTが長くなっても、通信の遅延を抑えることができる。
さらに、第2の実施形態では、1度の再送処理の際に送信されるデータ量が少なくなるので、1度の再送処理に用いられる冗長パケットの量も抑えることができる。このため、誤り訂正ベースの再送により予測以上にスループットが低下する事態を避けやすくなる。
<その他>
なお、実施形態は上記に限られるものではなく、様々に変形可能である。以下にその例をいくつか述べる。
上記の実施形態では、図を見やすくするために、TCPヘッダのシーケンス番号とデータヘッダのシーケンスIDが同じ値である場合を例として説明したが、両者は異なっていてもよい。TCPヘッダはTCPを用いた通信を行う装置間で決められたシーケンス番号であるが、シーケンスIDは、コネクションごとに0からカウントアップされる。従って、例えば、端末1から通信装置10aに送信されるパケットのシーケンス番号が100から開始したとすると、シーケンス番号100のTCPパケットに含まれるデータは、シーケンスID=0の転送パケットに含まれることになる。
上記の実施形態では、送信テーブルがハッシュテーブルである場合を例として説明したが、シーケンスIDに対応付けて、各パケットの送信状況とAckの受信状況を記録するテーブルを送信テーブルとしても良い。送信テーブルの変形例を図16に示す。図16の例では、送信中フラグ=0は送信済みであることを示し、送信中フラグ=1は送信後でAckが取得できていないことを示す。Ack受信状況は、制御応答パケットの受信状況を示す。従って、送信中フラグ=0でAck受信状況=受信となっているパケットは、そのパケットの送信後、そのパケットの送信の成功を示すAckが含まれている制御応答パケットを受信したパケットを表す。送信中フラグ=1でAck受信状況=受信待ちとなっているパケットは、そのパケットの送信後、送信の結果を示すAckが含まれた制御応答パケットを受信していないパケットを表す。さらに、送信中フラグ=1でAck受信状況=受信となっているパケットは、そのパケットの送信後、そのパケットの送信の失敗を示す情報が含まれている制御応答パケットを受信したパケットを表す。従って、図16は、シーケンスID8020〜8023、8700、9010〜9021のパケットの送信に失敗し、さらに、シーケンスIDが10000〜19999のパケットについては、制御応答パケットを受信していない場合の送信テーブルである。
図17は、ネットワークの例を示す。通信装置10は、図17に示すように、3台以上の通信装置10が含まれるネットワークで使用されても良い。この場合、選択部22での判定では、閾値Thdが用いられる。閾値Thdは、以下の式で求められる。
Thd=X×A/Z
ここで、Zは、帯域幅から通信に使用されている帯域の総和を差し引いた値を、送信元の通信装置10と通信しうる通信装置10の数で割った値である。また、Xは再送しようとするデータのバイト数、Aは誤り訂正によって付加される冗長度である。
例えば、図17の例では、通信装置10a〜10cがネットワーク中にあるので、通信装置10aに接続されている回線は、通信装置10aと通信装置10bの間の通信と、通信装置10aと通信装置10cの間の通信の両方に使用される可能性がある。そこで、通信装置10aに接続されている回線の帯域幅から、通信装置10aと通信装置10bの間の通信で使用されている帯域幅と、通信装置10aと通信装置10cの通信で使用される帯域幅を差し引いた値を2で割った値が、Zとして用いられる。このように選択部22が使用する閾値を変更することにより、2以上の任意の数の通信装置10が含まれるネットワークにおいて、再送ベースと誤り訂正ベースの2種類の送信方法を組み合わせた通信を行うことができる。
さらに、RTTの計測方法は、実装に応じて変更されても良い。第2の実施形態では、閾値ThがRTT以上の場合に閾値Thkを用いて再送を行うかを判定し、一度の再送処理では、再送の対象として選択されたパケットの1/Kを再送する場合を説明したが、閾値ThがRTTより短くても同様の処理を行っても良い。
また、上記の例では、TCPやUDPが用いられる場合を例として説明したが、実装に応じて、通信に使用するプロトコルを変更しても良い。さらに、誤り訂正ベースの再送の際に、FEC以外の誤り訂正を用いることもできるものとする。
1 端末
2 WAN
3 データセンタ
4 サーバ
10 通信装置
11 送信部
12 受信部
13 送受信部
14 転送処理部
15 再送処理部
16 パケット処理部
17 受信パケット管理部
18 帯域算出部
20 切り替え部
21 計測部
22 選択部
23 閾値計算部
31 プロセッサ
32 メモリ
33 入力装置
34 出力装置
35 バス
36 外部記憶装置
37 媒体駆動装置
38 可搬記憶媒体
39 ネットワーク接続装置

Claims (8)

  1. 第1の通信装置、第2の通信装置、および、第3の通信装置を含むネットワークにおいて、前記第2の通信装置は、
    前記第1の通信装置から受信したパケットから、前記第3の通信装置に転送するパケットである転送パケットを特定し、
    前記転送パケットを前記第1の通信装置から受信する間隔を計測し、
    前記転送パケットを前記第3の通信装置に転送し、
    前記転送パケットの受信状況を通知する通知情報を、前記第3の通信装置から受信し、
    前記通知情報を用いて、前記第3の通信装置へ転送したパケットのうちで前記第3の通信装置から受信の成功が通知されていないパケットである対象パケットを選択し、
    前記第1の通信装置から前記転送パケットを受信する間隔が閾値を超えると、前記対象パケットを、誤り補正が可能な形式で前記第3の通信装置に再送信する
    ことを特徴とする通信方法。
  2. 前記対象パケットは、前記第3の通信装置から受信状況が通知されていないパケットと、前記第3の通信装置からパケットの受信の失敗を通知されたパケットを含む
    ことを特徴とする請求項1に記載の通信方法。
  3. 前記第2の通信装置は、前記対象パケットを前記誤り訂正が可能な形式で送信するために用いる冗長分のデータを、前記第2の通信装置と前記第3の通信装置の間の回線中の使用されていない帯域幅を用いて、前記第2の通信装置が前記第3の通信装置に送信するためにかかる時間を、前記閾値として計算する
    ことを特徴とする請求項1または2に記載の通信方法。
  4. 前記第2の通信装置は、
    前記第2の通信装置が第1のパケットを前記第3の通信装置に向けて送信した時刻から、前記第1のパケットについての応答である第2のパケットが前記第2の通信装置に到達するまでの時間である応答時間を求め、
    前記閾値が、前記応答時間を越えているかを判定し、
    前記閾値が前記応答時間を超えている場合、前記閾値を第1の値で割って得られる商が前記応答時間よりも短くなるように、前記第1の値を求め、
    前記対象パケットを前記誤り訂正が可能な形式で送信するために用いる冗長分のデータの量を前記第1の値で割って得られるデータ量である第2の値を求め、
    前記第2の値のデータ量を、前記第2の通信装置と前記第3の通信装置の間の回線中の使用されていない帯域幅を用いて、前記第2の通信装置が前記第3の通信装置に送信するためにかかる時間の長さを第3の値とし、
    前記第1の通信装置から前記転送パケットを受信する間隔が前記第3の値を超えると、前記対象パケットを前記第1の値と同数のグループに分けて得られる1つのグループに含まれるパケットを、誤り補正が可能な形式で前記第3の通信装置に再送信する
    ことを特徴とする請求項3に記載の通信方法。
  5. 端末からパケットを受信する受信部と、
    前記端末の通信先に向けて転送するパケットである転送パケットを受信する間隔を計測する計測部と、
    前記転送パケットを、前記通信先に向けて転送する転送処理部と、
    前記通信先へ転送したパケットのうちで前記通信先から受信の成功が通知されていないパケットである対象パケットを選択する選択部と、
    前記転送パケットの受信間隔が閾値を超えると、前記対象パケットを、誤り補正が可能な形式で前記通信先に再送信するための処理を行う再送処理部
    を備えることを特徴とする通信装置。
  6. 前記選択部は、前記通信先からの受信状況の通知を受信していないパケットと、前記通信先からパケットの受信の失敗を通知されたパケットを、前記対象パケットとして選択する
    ことを特徴とする請求項5に記載の通信装置。
  7. 前記対象パケットを前記誤り訂正が可能な形式で送信するために用いる冗長分のデータを、前記通信装置と前記通信先の間の回線中の使用されていない帯域幅を用いて、前記通信装置が前記通信先に送信するためにかかる時間を、前記閾値として計算する計算部
    をさらに備えることを特徴とする請求項5または6に記載の通信装置。
  8. 第1の通信装置、第2の通信装置、および第3の通信装置を含むネットワーク中の前記第2の通信装置に、
    前記第1の通信装置から受信したパケットから、前記第3の通信装置に転送するパケットである転送パケットを特定し、
    前記転送パケットを前記第1の通信装置から受信する間隔を計測し、
    前記転送パケットを前記第3の通信装置に転送し、
    前記転送パケットの受信状況を通知する通知情報を、前記第3の通信装置から受信し、
    前記通知情報を用いて、前記第3の通信装置へ転送したパケットのうちで前記第3の通信装置から受信の成功が通知されていないパケットである対象パケットを選択し、
    前記第1の通信装置から前記転送パケットを受信する間隔が閾値を超えると、前記対象パケットを、誤り補正が可能な形式で前記第3の通信装置に再送信する
    処理を行わせることを特徴とする通信プログラム。
JP2015506469A 2013-03-20 2013-03-20 通信方法、通信装置、および、通信プログラム Active JP5935940B2 (ja)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/JP2013/057920 WO2014147774A1 (ja) 2013-03-20 2013-03-20 通信方法、通信装置、および、通信プログラム

Publications (2)

Publication Number Publication Date
JP5935940B2 true JP5935940B2 (ja) 2016-06-15
JPWO2014147774A1 JPWO2014147774A1 (ja) 2017-02-16

Family

ID=51579506

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2015506469A Active JP5935940B2 (ja) 2013-03-20 2013-03-20 通信方法、通信装置、および、通信プログラム

Country Status (5)

Country Link
US (1) US9866351B2 (ja)
EP (1) EP2978171B1 (ja)
JP (1) JP5935940B2 (ja)
CN (1) CN105103500A (ja)
WO (1) WO2014147774A1 (ja)

Families Citing this family (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP6412160B2 (ja) * 2014-12-12 2018-10-24 株式会社日立製作所 通信装置、通信装置システム及び通信方法
US10165530B2 (en) * 2016-03-22 2018-12-25 Christoph RULAND Verification of time information transmitted by time signals or time telegrams
US10841833B2 (en) 2016-10-12 2020-11-17 Qualcomm Incorporated Streamlined user plane headers for high data rates
US10374762B2 (en) * 2017-02-28 2019-08-06 At&T Intellectual Property I, L.P. Use of underutilized bandwidth via radio access resource sharing
US11140589B2 (en) * 2017-08-08 2021-10-05 Lg Electronics, Inc Method and apparatus for handling failure of early data transmission in wireless communication system
CN108462707B (zh) * 2018-03-13 2020-08-28 中山大学 一种基于深度学习序列分析的移动应用识别方法
US11057829B2 (en) * 2018-08-29 2021-07-06 Apple Inc. Power saving for non-trigger-based ranging
CN110971942B (zh) * 2018-09-28 2021-08-17 杭州海康威视数字技术股份有限公司 数据传输方法和装置
US10757166B2 (en) * 2018-11-20 2020-08-25 International Business Machines Corporation Passive re-assembly of HTTP2 fragmented segments
WO2020034576A1 (en) * 2019-01-11 2020-02-20 Zte Corporation Timing adjustments for data transmission in wireless systems
JP2021121065A (ja) * 2020-01-30 2021-08-19 株式会社Preferred Networks 通信装置及び通信方法
CN112181883B (zh) * 2020-09-24 2022-11-08 深圳市乐唯科技开发有限公司 一种串口通讯的数据传输方法、系统及存储介质

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2003179580A (ja) * 2001-12-12 2003-06-27 Sony Corp データ通信システム、データ送信装置、データ受信装置、および方法、並びにコンピュータ・プログラム
WO2007007383A1 (ja) * 2005-07-08 2007-01-18 Fujitsu Limited 送信装置、受信装置、情報通信方法
JP2010098766A (ja) * 2010-01-18 2010-04-30 Fujitsu Ltd 受信装置、受信方法、無線通信システム、及び通信方法
JP2012004952A (ja) * 2010-06-18 2012-01-05 Fujitsu Ltd データ転送装置、データ転送方法及びデータ転送プログラム

Family Cites Families (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
DE19728469A1 (de) 1997-07-03 1999-01-07 Siemens Ag Verfahren und Anordnung zur Codierung digitaler Daten
JP5425397B2 (ja) * 2004-12-02 2014-02-26 トムソン ライセンシング 適応型前方誤り訂正を行う装置及び方法
WO2007061087A1 (ja) 2005-11-28 2007-05-31 Nec Corporation 通信装置、通信システム、通信方法、および、通信プログラム
US7937640B2 (en) * 2006-12-18 2011-05-03 At&T Intellectual Property I, L.P. Video over IP network transmission system
WO2009089152A1 (en) * 2008-01-03 2009-07-16 Conexant Systems, Inc. Cognitive and universal impulse noise protection
EP2443779B1 (en) * 2009-06-19 2020-08-05 BlackBerry Limited Uplink transmissions for type 2 relay
WO2011122829A2 (ko) * 2010-03-29 2011-10-06 엘지전자 주식회사 상향링크 다중 안테나 전송을 지원하기 위한 효율적인 제어정보 전송 방법 및 장치
US8948252B2 (en) * 2010-03-30 2015-02-03 Sony Corporation Moving picture transmission apparatus, moving picture transmission system, moving picture transmission method, and program
US20120105637A1 (en) * 2010-11-03 2012-05-03 Broadcom Corporation Multi-Level Video Processing Within A Vehicular Communication Network
WO2012144822A2 (en) * 2011-04-19 2012-10-26 Lg Electronics Inc. Method and apparatus for transmitting and receiving data in a wireless communication system that supports a relay node
US9537637B2 (en) * 2012-07-15 2017-01-03 Lg Electronics Inc. Method for transmitting downlink signal at a relay node in a wireless communication system and apparatus therefor
US9729270B2 (en) * 2013-03-12 2017-08-08 Empire Technology Development Llc Self-adaptively improving system stability

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2003179580A (ja) * 2001-12-12 2003-06-27 Sony Corp データ通信システム、データ送信装置、データ受信装置、および方法、並びにコンピュータ・プログラム
WO2007007383A1 (ja) * 2005-07-08 2007-01-18 Fujitsu Limited 送信装置、受信装置、情報通信方法
JP2010098766A (ja) * 2010-01-18 2010-04-30 Fujitsu Ltd 受信装置、受信方法、無線通信システム、及び通信方法
JP2012004952A (ja) * 2010-06-18 2012-01-05 Fujitsu Ltd データ転送装置、データ転送方法及びデータ転送プログラム

Also Published As

Publication number Publication date
EP2978171B1 (en) 2017-09-20
EP2978171A4 (en) 2016-05-04
EP2978171A1 (en) 2016-01-27
JPWO2014147774A1 (ja) 2017-02-16
US9866351B2 (en) 2018-01-09
CN105103500A (zh) 2015-11-25
US20150349930A1 (en) 2015-12-03
WO2014147774A1 (ja) 2014-09-25

Similar Documents

Publication Publication Date Title
JP5935940B2 (ja) 通信方法、通信装置、および、通信プログラム
EP2759164B1 (en) Dynamic subflow control for a multipath transport connection in a wireless communication network
JP5816718B2 (ja) 通信装置、通信システム、およびデータ通信の中継方法
US8473825B2 (en) Evolved universal terrestrial radio access acknowledged mode radio link control status report for segmented protocol data units
US9577791B2 (en) Notification by network element of packet drops
JP5867188B2 (ja) 情報処理装置、輻輳制御方法および輻輳制御プログラム
JP6094357B2 (ja) 通信方法、通信システム、及び通信装置
JP2014524092A (ja) 単一ソケットポイントツーマルチポイント性能による高信頼性仮想双方向データストリーム通信のためのシステムおよび方法
US9037935B2 (en) Apparatus and method for retransmitting message in message transmission system
WO2014092779A1 (en) Notification by network element of packet drops
JP6148459B2 (ja) データを送信ノードから宛先ノードに移送する方法
CN109981385B (zh) 一种实现丢包检测的方法、装置和系统
JP2015027100A (ja) パケット通信の伝送制御方法及びパケット通信システム
JP2022505424A (ja) パケット処理方法および装置
KR20190011898A (ko) 무선 통신 시스템에서 단말, 기지국 및 이의 통신 방법
JP5998923B2 (ja) プログラム、情報処理装置、及び通信方法
US11632326B1 (en) Selection of network paths for reliable communications based on network reliability metrics
US11962517B2 (en) Communications method, apparatus, and system for recovering lost packets
US11811877B2 (en) Universal transport framework for heterogeneous data streams
WO2022056791A1 (zh) 一种报文重传方法和装置
WO2015040833A1 (ja) 通信装置及び通信装置の制御方法
JP2016096391A (ja) 通信装置及びプログラム
JP2009094863A (ja) 高信頼マルチキャストデータ配信システム,高信頼マルチキャストデータ配信方法および高信頼マルチキャストデータ配信プログラム

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20160425

R150 Certificate of patent or registration of utility model

Ref document number: 5935940

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150