JP2014147011A5 - - Google Patents

Download PDF

Info

Publication number
JP2014147011A5
JP2014147011A5 JP2013015245A JP2013015245A JP2014147011A5 JP 2014147011 A5 JP2014147011 A5 JP 2014147011A5 JP 2013015245 A JP2013015245 A JP 2013015245A JP 2013015245 A JP2013015245 A JP 2013015245A JP 2014147011 A5 JP2014147011 A5 JP 2014147011A5
Authority
JP
Japan
Prior art keywords
priority
communication device
packets
packet
retransmitted
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
JP2013015245A
Other languages
English (en)
Other versions
JP2014147011A (ja
JP5636574B2 (ja
Filing date
Publication date
Application filed filed Critical
Priority to JP2013015245A priority Critical patent/JP5636574B2/ja
Priority claimed from JP2013015245A external-priority patent/JP5636574B2/ja
Priority to US14/650,438 priority patent/US9450706B2/en
Priority to PCT/JP2013/081250 priority patent/WO2014119094A1/ja
Publication of JP2014147011A publication Critical patent/JP2014147011A/ja
Publication of JP2014147011A5 publication Critical patent/JP2014147011A5/ja
Application granted granted Critical
Publication of JP5636574B2 publication Critical patent/JP5636574B2/ja
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Description

通信装置、パケット転送方法及びそのプログラム
本発明は、通信装置に関する。
クラウドコンピューティングでは、利用者は、利用者が存在する拠点ではなく外部のデータセンタの計算機資源を使用する。データセンタは利用者が使用するデータを保持するため、利用者の拠点とデータセンタと間で頻繁にデータを転送する。
データセンタは広く世界中に所在しており、利用者の拠点と同じ国内にない場合がある。例えば、利用料が安価な海外のデータセンタが利用される場合も多い。
海外のデータセンタを利用する場合、データの転送が低速になる場合がある。遠距離のデータセンタとの間の通信では、パケットが送信されてから応答が返されるまでの時間であるRound Trip Time(RTT)が大きい。その場合、通常の通信方式では通信速度が遅くなるという問題がある。
本技術分野の背景技術として、国際公開2012/066824号パンフレット(特許文献1)がある。特許文献1には、「送信端末と受信端末間にプロキシ装置を用いるときに、送信端末から末尾のデータを受信し、その直後に故障した場合、送信端末では送信が完了している一方で、受信端末では受信が完了していないケースを防ぐ。プロキシ装置内にACK待ちの送信中データも整列待ちの受信中データも無い状態でデータパケットを受信した場合はACK返信を行わず、プロキシ装置内にACK待ちの送信中データ、或いは整列待ちの受信中データが有る状態でデータパケットを受信した場合は1つ前に受信したデータパケットに対するACKを返信し、受信端末側からACKを受信してACK待ちの送信中データも整列待ちの受信中データも無い状態になったタイミングで通常のACKを返信するための手段を備える。」ことが記載されている。
国際公開2012/066824号パンフレット
前述した特許文献1では、再送要求にNACKを用いることによって、再送効率を向上させている。しかし、NACKを用いる場合、送信側及び受信側の双方の通信端末が特許文献1に記載された通信方式に対応している必要がある。しかし、ネットワーク内には、特許文献1に記載された通信方式に対応している端末と、一般的な通信方式を用いる端末とが混在しており、一般的な通信方式による通信も発生する。
例えば、RFC3517では、選択的確認応答(Selective Acknowledgement:SACK)を用いた再送制御方法が規定されている。しかし、高速通信においては下記の問題が発生し、RFC3517に規定された方法によっては、このような問題に対応できない。
RFC3517に既定された方法では、正常に受信されたパケットの番号を受信端末が送信端末に通知し、送信端末が通知されなかった箇所を検出することによって、廃棄されたパケットを再送する。そのため、受信端末及び送信端末がパケットの受信個所又は廃棄箇所を記憶する。
ネットワークにおけるパケット廃棄率が大きい場合、特に廃棄が不連続に発生した場合は、記憶される廃棄箇所の数が多くなるため、廃棄箇所を記憶するために多くの記憶容量が必要となる。受信端末及び送信端末の記憶容量は、実装方法によっては、上限がある。このため、所定量以上の廃棄が発生した場合、記憶容量が不足し、新たに送信されたパケットが受信できなくなるおそれがある。
そこで、本発明は、廃棄されたパケットを効率よく再送し、廃棄箇所の記憶容量を削減することを目的とする。
本願において開示される発明の代表的な一例を示せば以下の通りである。すなわち、ネットワークに接続される通信装置であって、前記ネットワークに接続された対向通信装置にデータを送信し、前記対向通信装置が送信した確認応答を受信し、送信されたデータが廃棄された箇所を記憶するための記憶容量が、前記対向通信装置において不足しているかを監視し、前記記憶容量が不足している場合、廃棄箇所に再送の優先度を設定してデータを再送する。
本発明の代表的な実施の形態によれば、廃棄箇所の記憶容量を削減して、データ転送のスループットを向上することができる。
本発明の第1の実施例のシステムの構成を示す図である。 本発明の第1の実施例の送信端末の機能ブロック図である。 SACKのパケットフォーマットを説明する図である。 第1の実施例の再送管理テーブルの構成例を説明する図である。 第1の実施例の再送管理テーブルの構成例を説明する図である。 再送優先度を設定せずシーケンス番号の順に再送を行った場合の通信シーケンスを示す図である。 シーケンス番号の順によらず再送を行った場合の通信シーケンスを示す図である。 第1の実施例の優先度設定部が実行する処理のフローチャートである。 受信端末において廃棄箇所の記憶容量が不足している場合の通信シーケンスを示す図である。 第1の実施例の廃棄検出部が実行する処理のフローチャートである。 第2の実施例の再送管理部の機能ブロック図である。 第2の実施例の一時テーブルの構成例を説明する図である。 第2の実施例の優先度設定部が実行する処理のフローチャートである。 第2の実施例の再送管理テーブルの構成例を説明する図である。 第2の実施例の再送管理テーブルの構成例を説明する図である。 第3の実施例における再送管理部の機能ブロック図である。 第3の実施例の廃棄検出部が実行する処理のフローチャートである。 第4の実施例の廃棄検出部が実行する処理のフローチャートである。 第5の実施例のシステムの構成を示す図である。 第5の実施例のプロキシ装置の機能ブロック図である。
<実施例1>
図1は、本発明の第1の実施例のシステムの構成を示す図である。
第1の実施例のシステムは、送信端末1、WAN3及び受信端末2を含む。
送信端末1は、少なくともネットワークインターフェース(NIF)5、主記憶31、補助記憶装置33、プロセッサ34、及びそれらの装置を相互に接続しデータを転送するシステムバス35を有する。主記憶31は、プログラム及びデータを一時的に格納する。補助記憶装置33は、プログラム及びデータを格納する。プロセッサ34は、主記憶31に格納されたプログラムを実行する。
主記憶31は、独自TCP機能6のためのプログラム、アプリケーションプログラム4、アプリケーションデータ32などを格納する。
補助記憶装置33は、例えば、フラッシュメモリ、磁気記憶装置等の不揮発性の記憶装置であり、プロセッサ34が実行するプログラム及びプログラム実行時に使用されるデータを格納する。すなわち、プロセッサ34が実行するプログラムは、補助記憶装置33から読み出されて、主記憶31にロードされて、プロセッサ34によって実行される。
プロセッサ34は、アプリケーションデータ32を用いてアプリケーションプログラム4を実行する。
また、プロセッサ34が所定のプログラムを実行することによって、独自TCP機能6が送信データを制御する。独自TCP機能6は送信データをネットワークインターフェース5に送り、ネットワークインターフェース5が送信データをWAN3に送信する。
なお、図1では、独自TCP機能6の全てをソフトウェアで構成した例を示したが、独自TCP機能6の一部又は全てをロジック回路による専用LSI又はネットワークインターフェース5に実装してもよい。
プロセッサ34が実行するプログラムは、リムーバブルメディア(CD−ROM、フラッシュメモリなど)又はネットワークを介して送信端末1に提供され、非一時的記憶媒体である補助記憶装置33に格納される。このため、送信端末1は、リムーバブルメディアを読み込むインターフェース(例えば、光ディスクドライブ、USBポートなど)を有するとよい。
図2は、第1の実施例の送信端末1の機能ブロック図であり、特に、独自TCP機能6を詳細に示す。
送信端末1は、アプリケーションプログラム4、ネットワークインターフェース5及び独自TCP機能6を有する。
独自TCP機能6は、送信部7、受信部8、送信バッファ9、受信バッファ10、送信制御部11及び再送管理部12を有する。
送信部7は、ネットワークインターフェース5よりWAN3にデータを送信する制御をする。送信制御部11は、送信部7が送信バッファ9からデータを読み出すタイミングを制御することによって、送信部7から送信されるデータの量及び順序を制御する。送信バッファ9は、アプリケーションプログラム4から送信されるデータを一時的に格納する。送信部7は、送信バッファ9に格納されるデータのうち、送信すべきデータを読み出す。送信バッファ9に格納されるデータは、廃棄されたパケットを再送するために使用される。
受信部8は、WAN3からネットワークインターフェース5に届いたデータを受信し、受信したデータの順序等の整合性を確保するために、受信バッファ10に書き込む。受信バッファ10は、アプリケーションプログラム4へ送られるデータを一時的に格納する。再送管理部12は、パケットの破棄を検出し、破棄されたパケットの再送を制御する。
再送管理部12は、廃棄検出部13、優先度設定部14、再送管理テーブル15、再送部16及び記憶部17を有する。廃棄検出部13は、受信した確認応答(Acknowledgement:ACK)パケットから、正しく受信された箇所又は廃棄された箇所を検出し、また、大量廃棄の発生を検出する。記憶部17は、受信端末2から返信される確認応答の値を格納する。優先度設定部14は、再送パケットの優先度を設定する。再送管理テーブル15は、正しく受信されたパケット又は廃棄されたパケットを管理するためのテーブルである。再送部16は、再送管理テーブル15を参照して、設定された優先度に基づいてパケットを再送する。記憶部17は、ACKの値及び四つのSACKブロックを格納するため、ACKメモリ18、SLE1〜4メモリ19〜22及びSRE1〜4メモリ23〜26の記憶領域を有する。これらの記憶領域は、SACKパケットのフィールドに対応する(図3参照)。
受信端末2は、一般的な通信方式、例えば、RFC2018に規定される標準方式を用いる。RFC2018では、ACKに加えてSACKを用いる。ACKは、シーケンスの先頭から連続して正しく受信されている箇所を示し、SACKは、廃棄により受信済みの箇所に隙間が生じた場合でも、受信された箇所を送信端末に通知する。
図3は、SACKを含むACKのパケットフォーマットを説明する図である。
SACKは、TCPヘッダ101のオプションフィールド102に付加され、何もしないことを示すNOP(No Operation)103の後に、種別104、長さ105を指定し、さらに第1ブロックの始端(SACK Left Edge:SLE)106及び終端(SACK Right Edge:SRE)107を指定する。終端107は受信済みデータのシーケンス番号に1を加えたものであり、受信端末2が送信端末1に対して次に送信することを要求するパケットのシーケンス番号を表す。例えば、パケット長が100であるシーケンス番号1000のパケットに対するSACKは、パケットがシーケンス番号1000から1099のデータを持っているため、始端が1000、終端が1100となる。
複数のパケットが廃棄された場合は、複数のSACKブロックを通知するため、ブロックの始端(108、110、112)及び終端(109、111、113)を複数指定する。なお、オプション長の制限により、最大で4ブロックを送ることができるので、過去に通知済みのSACKブロックも含め、最新の4ブロックが通知される。
図4A及び図4Bは、第1の実施例の再送管理テーブル15の構成例を説明する図であり、優先度が設定された後の状態を示す。
再送管理テーブル15は、各エントリに、エントリ番号120、受信済みシーケンス番号の始端121及び終端122、及び再送優先度124を格納する。なお、再送管理テーブル15は、パケット数123のフィールドを有してもよい。パケット数123は、当該エントリの再送箇所の再送パケット数を示す。なお、パケット数123は、シーケンス番号とパケット長から計算できるため、再送管理テーブル15の必須の構成ではない。
再送管理テーブル15が、受信端末2が受信済みであるシーケンス番号を保持しているため、再送管理テーブル15に記載されていないパケットは再送すべきパケットである。具体的には、あるエントリの前のエントリの受信済終端から該当エントリの受信済始端までのシーケンスのパケットが再送すべきパケットである。ただし、エントリ番号1ではACK番号から受信済始端までが再送すべきパケットである。これらのシーケンス番号の差をパケット長(例えば、100)で除算した値がパケット数である。
また、再送管理テーブル15は、図4Bのような構成でもよい。図4Bに示す再送管理テーブル15では、図4Aに示す再送管理テーブル15のように受信済箇所の始端121及び終端122を管理するのではなく、再送すべき箇所の始端125及び終端126を管理する。よって、図4Bに示す再送管理テーブル15に保持されている箇所のパケットを再送すればよい。
図4Aに示す再送管理テーブル15では、受信済箇所の始端121及び終端122を管理するので、確認応答パケット受信時の処理負荷を小さくすることができる。一方、図4Bに示す再送管理テーブル15では、再送すべき箇所の始端125及び終端126を管理するので、再送時の処理負荷を低減することができる。
再送優先度設定の詳細について説明する前に、優先度設定の必要性について説明する。
通常、シーケンス番号が小さいパケットから順に再送される。図5は、再送優先度を設定せずシーケンス番号の順に再送する例を示す。受信端末2は、送信端末1の再送管理テーブル130aと同じ情報を格納している。そのため、送信端末1の再送管理テーブル15の記憶容量は、受信端末2の廃棄箇所の記憶容量に比例する。なお、実装によっては、送信端末1の再送管理テーブル15の構成と、受信端末2の廃棄箇所の記憶領域の構成とは同一でなくてもよい。
送信端末1は、エントリ番号2の再送ブロックとして、シーケンス番号1200から順に5パケットを再送した(131〜135)が、シーケンス番号1300のパケットが廃棄された(132)。受信端末2は受信箇所に関してACK又はSACKを含むACKを返信する。まず、受信端末2は、1200番のパケットを受信したため、SACK1100−1300を含むACKを返信する(136)。これを受信した送信端末1は、エントリ1の終端を1300に書き換える。次に受信端末2は、シーケンス番号1300のパケットが廃棄されたため、シーケンス番号1400のパケットを受信する(133)。受信端末2はSACK1400−1500及びSACK1100−1300を含むACKを返信する(137)。
これを受信した送信端末1は、新たなエントリ1400−1500を再送管理テーブル15に記憶する(130b)。続いて、受信端末2は、シーケンス番号1500及び1600のパケットを受信する(134、135)。これらのパケットにより、シーケンス番号1500〜1700のパケットが受信される。そのため、エントリ番号2及び3がつながることとなり、SACK1400−2000を含むACKが返信される(138、139)。このACKを受信した送信端末1は、再送管理テーブル130bのエントリ2及び3を連結し、新たにエントリ2として1400−2000を記憶する(130c)。
ここで、この再送の前後において再送管理テーブル130a及び130cのエントリ数は、変わらず、一時的に増加している(130b)。つまり、再送中に再び廃棄が発生すると、再送管理テーブル15のエントリ数は減らない。
一方、図6はシーケンス番号の順によらず再送を行った例を示す。
送信端末1が、シーケンス番号の順によらず、エントリ番号3のブロックとして、シーケンス番号2000のパケットを再送する(141)。シーケンス番号2000のパケットの送信が成功すると、受信端末2はSACK1700−3000を含むACKを返信する(142)。
送信端末1は、このACKを受信すると、エントリ2及び3を連結し、新たに1700−3000をエントリ2として記憶する(140b)。よって、再送管理テーブルのエントリ数を減らすことができる。もし、シーケンス番号2000のパケットの再送が失敗しても、エントリの数は変わらない。
このように、再送パケットが再び廃棄されるとエントリ数を減らすことができない。再送パケットが再び廃棄される確率が一定であれば、再送ブロック中一つでも廃棄される確率は、該当ブロックのパケット数に応じて大きくなる。よって、再送ブロックのパケット数が少ないエントリは、再送管理テーブル15のエントリ数を減らしやすく、一方で、再送ブロックのパケット数が多いエントリは、再送管理テーブル15のエントリ数を減らしにくい。
以上の例から分かるように、受信端末2において廃棄箇所の記憶容量が限られている場合、シーケンス番号の順に再送するのではなく、再送パケット数の少ない箇所を優先して再送した方が、受信端末2が廃棄箇所を記憶するための容量を削減することができる。特に、パケット数が少ないブロックほど、再送パケットの廃棄による記憶容量の増加を避けられるため、このようなブロックを優先的に再送すればよい。
第1の実施例では、パケット数が1である再送ブロックを優先して再送する場合の例を示す。図7は、第1の実施例の優先度設定部14が実行する処理のフローチャートである。優先度設定部14は、廃棄検出部13が受信端末2における廃棄箇所記憶容量の不足が発生したこと検出し、それが通知されるまで待機する(150)。そして、優先度設定部14は、廃棄箇所記憶容量の不足の発生が通知されれば、再送管理テーブル15のエントリを順に調べる(151)。その結果、再送すべきパケットの数が1であれば優先度を1に設定し(152)、再送すべきパケットの数が1でなければ優先度を0に設定する(153)。その後、最後のエントリまで処理が完了したかを判定し(154)、最後のエントリまで処理が完了していれば、処理を終了する。
優先度設定後の再送管理テーブル15における状態の例を図4A及び図4Bに示す。パケット数が1であるエントリが優先度1に、パケット数が2以上であるエントリが優先度0に設定されている。
次に、受信端末2における廃棄箇所の記憶容量が不足している状態を検出する方法について説明する。
図8は、記憶容量が不足している場合の通信シーケンスを示す。
図8に示す例において、受信端末2は、図示するシーケンス以前に、シーケンス番号0から1000のパケットを受信し、そこからいくつかの廃棄を挟んで、シーケンス番号が1500、1600、1800及び2000のパケットを受信している。この状態で、受信端末2では、廃棄箇所を記憶できる容量が一杯になっており、新たな廃棄を記憶できない。
送信端末1が、シーケンス番号が2000のパケットに続いて、シーケンス番号が2100及び2200のパケットを送信し(160、161)、受信端末2が、この二つのパケットを受信した。これらのパケットは廃棄箇所を増加させないため、受信端末2は、SACK2000−2200を含むACK(166)及びSACK2000−2300を含むACK(167)が送信される。
その後、次に送信されたシーケンス番号が2300のパケットが廃棄され(162)、シーケンス番号が2400番のパケットは受信端末2が受信した(163)。このとき受信端末2は、記憶容量の上限に達しているため、新たな廃棄箇所を記憶できない。このため、受信端末2は、パケットを受信したのでACKを送信するが、新たなパケット受信を記憶しないため、直前のACKパケットと同じSACKを含むACKパケットを返信する。すなわち、SACK2000−2300を含むACKが送信される(168)。以降、受信端末2は、新たなパケットを受信するたびに同じACKを送信する(169、170)。
つまり、送信端末1が、直前のACKパケットと同じSACKを含むACKパケットを受信した場合、受信端末2の廃棄箇所の記憶容量が上限に達していることが分かる。
図9は、第1の実施例の廃棄検出部13が実行する処理のフローチャートである。
廃棄検出部13は、ACK又はSACKを含むACKパケットを受信すると(180)、ACKメモリ18、SLE1〜4メモリ19〜22及びSRE1〜4メモリ23〜26を記憶部17からを読み出し(181)、直前に受信したACKパケットのSACKと一致しているかを判定する(182)。
記憶部17の記憶内容と直前に受信したACKパケットのSACKとが一致している場合、優先度設定部14へ通知する(183)。一方、記憶部17の記憶内容と直前に受信したACKパケットのSACKとが一致していない場合、変更点を再送管理テーブル15に記憶する(184)。
再送部16は、再送管理テーブル15のエントリを調べ、優先度が高いエントリから順にパケットを再送する。優先度が同一のエントリはシーケンス番号の小さいパケットから再送する。
以上に説明したように、第1の実施例では、廃棄されたパケットを効率的に再送し、廃棄箇所の記憶容量を削減することができ、データ転送のスループットを向上することができる。また、再送すべきパケットの数が少ない廃棄箇所に高い優先度を設定するので、受信端末2の廃棄箇所の記憶容量の不足を緩和することができる。さらに、再送すべきパケットの数が1である廃棄箇所の優先度を高く設定し、再送すべきパケットの数が2以上である廃棄箇所の優先度を0に設定するので、再送すべきパケット数が1である廃棄箇所のパケットを優先的に再送することができ、再送を容易に制御することができる。
<実施例2>
本発明の第2の実施例では、第1の実施例とは異なる優先度設定方法を示す。
第1の実施例ではパケット数が1の再送ブロックのみを再送したが、第2の実施例ではパケット数が1以上(例えば、パケット数が2や3)のブロックも再送する。但し、パケット数が小さいブロックの優先度を高く設定するため、パケット数が1のブロックが先に再送される。連続してパケットの廃棄が発生する場合、第2の実施例の方法が有効である。なお、第2の実施例において、前述した実施例との相違点のみを説明し、第1の実施例と同じ構成及び処理については同じ符号を付し、それらの説明は省略する。
図10は、第2の実施例の再送管理部12の機能ブロック図である。
第2の実施例の再送管理部12は、第1の実施例の構成に加え、優先度を設定するためにデータを並び替える一時テーブル30を有する。
図11は、第2の実施例の一時テーブル30の構成例を説明する図である。
一時テーブル30は、再送管理テーブル15の各エントリへのポインタ(例えば、再送管理テーブル15のエントリ番号)210、各ブロックのパケット数211及び各ブロックの優先度212を含む。
図12は、第2の実施例の優先度設定部14が実行する処理のフローチャートである。
優先度設定部14は、廃棄検出部13が受信端末2における廃棄箇所記憶容量の不足が発生したこと検出し、それが通知されるまで待機する(200)。そして、優先度設定部14は、廃棄箇所記憶容量の不足の発生が通知されれば、再送管理テーブル15から一時テーブル30を生成する(201)。その後、一時テーブル30をパケット数211の昇順にソートする(202)。なお、パケット数211が同一のエントリはシーケンス番号が小さい順に並べるとよい。
そして、一時テーブル30の先頭から末尾に向かって小さくなるように優先度212を設定して、パケット数が小さいものに高い優先度212を設定する(203)。例えば、(エントリ数−インデックス番号)とする。最後に、ポインタをたどって、設定した優先度212を再送管理テーブル15に書き戻す(204)。なお、図11は優先度212を設定した後の一時テーブル30の状態を示す。
図13A及び図13Bは、第2の実施例において優先度が設定された再送管理テーブル15の構成例を説明する図である。
図13Aは、受信済の始端と終端を管理する場合の再送管理テーブル15を示し、図13Bは、再送すべき個所の始端と終端を管理する場合の再送管理テーブル15を示す。再送部16は、再送管理テーブル15に含まれる優先度に従って、パケットを再送する。
以上に説明したように、第2の実施例では、前述した第1の実施例の効果に加え、再送すべきパケットの数が少なく、かつ、シーケンス番号が小さいパケットを含む廃棄箇所に高い優先度を設定するので、受信端末2の廃棄箇所の記憶容量をより確実に減らすことができ、記憶容量の不足を緩和する効果が大きい。さらに、一時テーブル30を用いて、パケット数の順に優先度を設定するので、優先度を設定する処理の負荷を抑制することができる。
<実施例3>
本発明の第3の実施例では、第1の実施例とは異なる記憶容量の不足の検出方法を示す。
第1の実施例では、何らかの理由によって、直前のACKパケットと全てのSACKが重複するACKパケットを受信した場合、受信端末2で記憶容量不足が発生していると誤って判定することがある。このような現象は、例えば、受信端末2がRFC2883に規定された標準方式を採用する場合、既に受信済のパケットと同一のパケットを再び受信された場合、同じSACKによって、同じパケットを受信した旨を送信端末1に通知する。このとき、受信端末2が受信済のパケットを送信端末1が再送した後、さらに、タイムアウトなどによって送信端末1が同一のパケットを再送したか、又は、ネットワーク上でパケットの複製が発生した。この場合、受信端末2は、同一のSACKを含むACKパケットを連続して返信する。
これに対する対策として、同一のSACKを含むACKパケットを複数受信したことによって、受信端末2の記憶容量の不足を検出する方法が有効である。しかし、ある時間に送信されるパケットの数は、送信端末1の送信制御によって変動する。このため、単純にパケット数で判定すると、送信パケット数が少ないときは記憶容量の不足を過剰に検出しやすく、送信パケット数が多いときは記憶容量の不足を検出しにくくなる。そこで、第3の実施例では、送信パケット数に対して、同一のSACKを含むACKパケットの数を基準として記憶容量の不足を検出することによって、送信パケット数によらず検出能力の変動を抑制する。
第3の実施例において、前述した実施例との相違点のみを説明し、第1及び第2の実施例と同じ構成及び処理については同じ符号を付し、それらの説明を省略する。
図14は、第3の実施例における再送管理部12の機能ブロック図である。
第3の実施例の再送管理部12は、前述した第1の実施例の再送管理部の構成に加え、カウンタ40を有する。カウンタ40は、送信パケット数カウンタ(snd)41及び、SACKの値が重複したパケット数をカウントする重複SACKカウンタ(sack.dup)42を有する。
図15は、第3の実施例の廃棄検出部13が実行する処理のフローチャートである。
廃棄検出部13は、繰り返し(例えば、所定時刻ごとに)受信端末2における記憶容量の不足が発生していないか調べる。このため、現在時刻と基準時刻との差が、所定のインターバル以上であるかを判定する(300)。
その結果、時刻差が所定のインターバル以上である場合、基準時刻を現在時刻に更新して(301)、カウンタの値を取得し(302)、sack.dup/sndを計算し、計算されたsack.dup/sndと所定の閾値とを比較する(303)。
その結果、計算されたsack.dup/sndが所定の閾値より大きければ(303でYES)、受信端末2で記憶容量の不足が発生したと判定して、優先度設定部14へ通知する(304)。
現在時刻と基準時刻との差が所定のインターバル未満であれば(303でNO)、ACK又はSACK付きのACKパケットを受信したかを判定する(307)。これによって、ACK受信時のみ処理を実行することができる。ACK又はSACK付きのACKパケットを受信すると(307でYES)、再送管理テーブル15を参照し(308)、新たなACK又はSACKを受信したかを判定する(309)。
その結果、新たなACK又はSACKを受信した箇所があれば(309でYES)、受信したACK及びSACKを再送管理テーブル15に格納し(310)、新たなSACK情報を記憶部17に書き込む(311)。一方、新たなACK又はSACKを受信した箇所がなければ(309でNO)、記憶部17に格納された重複SACKカウンタ(sack.dup)42を1だけカウントアップする(312)。
最後に、送信すべきパケットがあれば、当該パケットを送信し(305)、送信パケット数カウンタ(snd)41を1だけカウントアップする(306)。
第3の実施例の方法は、第1の実施例のみではなく、第2の実施例の方法とも組み合わせることができる。
以上に説明したように、第3の実施例では、送信パケットの数と確認応答パケットの数との比が所定の閾値以上である場合、廃棄箇所の記憶容量の不足を検出する。このため、受信端末2が誤って同じSACKが返信した場合でも、廃棄箇所の記憶容量の不足を誤検出する可能性を低くすることができる。
<実施例4>
本発明の第4の実施例では、記憶容量の不足を事前に検出する方法を示す。
第1及び第3の実施例では、受信端末2での廃棄箇所記憶容量の不足が生じてから再送優先度を設定する。そのため、記憶容量の不足が解消するまでに送信された新規パケットは、受信側に届くにもかかわらず破棄される。そこで、第4の実施例では、廃棄箇所記憶容量の不足を事前に検出し、容量が不足しそうな場合には予め再送優先度を設定する。
第4の実施例において、前述した実施例との相違点のみを説明し、第1から第3の実施例と同じ構成及び処理については同じ符号を付し、それらの説明は省略する。
受信端末2の廃棄箇所記憶容量の不足を検出するため、廃棄検出部13は再送管理テーブル15のエントリ数を監視する。エントリ数が所定値を超えれば、記憶容量の不足が近いと判定し、優先度設定部14に記憶容量不足を通知する。他の機能及び処理は、前述した他の実施例と同じである。
図16は、第4の実施例の廃棄検出部13が実行する処理のフローチャートである。
廃棄検出部13は、再送管理テーブル15のエントリ数を監視する(400)。そして、再送管理テーブル15のエントリ数が所定の閾値以上であれば、優先度設定部14へ通知する(401)。一方、再送管理テーブル15のエントリ数が所定の閾値より小さければ、ACK(又は、SACK)を受信した場合(402)、再送管理テーブル15に記憶する(403)。
第4の実施例の方法は、第1から第3の実施例のいずれとも組み合わせることができる。
以上に説明したように、第4の実施例では、再送管理テーブル15のエントリ数が所定
の閾値以上である場合、廃棄箇所の記憶容量が不足することを予測するので、実際に記憶
容量が不足する前に、記憶容量を削減することができ、データ転送のスループットの低下
を抑制することができる。
<実施例5>
本発明の第5の実施例は、独自TCP機能6を実装できない場合の例である。
第1から第4の実施例では、送信端末61が独自TCP機能6を実装する。しかし、送信端末61に独自TCP機能6を実装できない場合、図17に示すように送信端末61と同一のLocal Area Network (LAN)54内に独自TCP機能6を有するプロキシ装置50を設置することができる。
第5の実施例において、前述した実施例との相違点のみを説明し、第1から第4の実施
例と同じ構成及び処理については同じ符号を付し、それらの説明は省略する。
図17は、第5の実施例のシステムの構成を示す図であり、図18は、第5の実施例のプロキシ装置50の機能ブロック図である。
第1の実施例のシステムは、送信端末61、プロキシ装置50、WAN3及び受信端末2を含む。
プロキシ装置50は、少なくともネットワークインターフェース(NIF)5及び51、主記憶71、補助記憶装置68、プロセッサ69、及びそれらの装置を相互に接続しデータを転送するシステムバス70を有する計算機である。主記憶71は、プログラム及びデータを一時的に格納する。補助記憶装置68は、プログラム及びデータを格納する。プロセッサ69は、主記憶71に格納されたプログラムを実行する。
主記憶71は、独自TCP機能6のためのプログラム、一般TCP機能52のためのプログラム、プロキシ53のためのプログラムなどを格納する。
ネットワークインターフェース51は、送信端末61と接続するためにLAN54用のインターフェースである。
補助記憶装置68は、例えば、フラッシュメモリ、磁気記憶装置等の不揮発性の記憶装置であり、プロセッサ69が実行するプログラム及びプログラム実行時に使用されるデータを格納する。すなわち、プロセッサ69が実行するプログラムは、補助記憶装置68から読み出されて、主記憶71にロードされて、プロセッサ69によって実行される。
プロセッサ69は、所定のプログラムを実行する。これによって、独自TCP機能6は送信端末61から送信された送信データを制御する。独自TCP機能6は送信データをネットワークインターフェース5に送り、ネットワークインターフェース5がWAN3に送信データを送信する。
独自TCP機能6は、前述したいずれかの実施例による再送制御を行って、パケットを転送する。独自TCP機能6の構成は、例えば、図2を用いて第1の実施例において前述したとおりである。
図18に示すように、一般TCP機能52は、LAN側受信部55、LAN側送信部56、LAN側受信バッファ57、LAN側送信バッファ58及びLAN側制御部59を有する。LAN側制御部59は、通常のTCPプロトコルに従って、パケットを転送する。
プロキシ53は、独自TCP機能6と一般TCP機能52との間でデータを交換する。
なお、図17では、独自TCP機能6及び一般TCP機能52の全てをソフトウェアで構成した例を示したが、独自TCP機能6及び一般TCP機能52の一部又は全てをロジック回路による専用LSI又はネットワークインターフェース5に実装してもよい。
プロセッサ69が実行するプログラムは、リムーバブルメディア(CD−ROM、フラッシュメモリなど)又はネットワークを介してプロキシ装置50に提供され、非一時的記憶媒体である補助記憶装置68に格納される。このため、プロキシ装置50は、リムーバブルメディアを読み込むインターフェース(例えば、光ディスクドライブ、USBポートなど)を有するとよい。
送信端末61は、少なくともネットワークインターフェース、主記憶装置、補助記憶装置、プロセッサ、及びそれらの装置を相互に接続しデータを転送するシステムバスを有する計算機である。主記憶装置は、プログラム及びデータを一時的に格納する。補助記憶装置は、プログラム及びデータを格納する。プロセッサは、主記憶装置に格納されたプログラムを実行する。
主記憶装置は、アプリケーションプログラム、アプリケーションデータなどを格納する
補助記憶装置は、例えば、フラッシュメモリ、磁気記憶装置等の不揮発性の記憶装置であり、プロセッサが実行するプログラム及びプログラム実行時に使用されるデータを格納する。すなわち、プロセッサが実行するプログラムは、記憶装置から読み出されて、主記憶装置にロードされて、プロセッサによって実行される。
プロセッサは、アプリケーションデータを用いてアプリケーションプログラムを実行する。プロセッサが実行するプログラムは、リムーバブルメディア(CD−ROM、フラッシュメモリなど)又はネットワークを介して送信端末61に提供され、非一時的記憶媒体である補助記憶装置33に格納される。このため、送信端末61は、リムーバブルメディアを読み込むインターフェース(例えば、光ディスクドライブ、USBポートなど)を有するとよい。
第5の実施例は、前述した第2から第4の実施例と組み合わせることができる。すなわち、第1から第4の実施例においては、送信端末61に独自TCP機能6を実装したが、送信端末61に独自TCP機能6を実装せず、独自TCP機能6を実装したプロキシ装置50を用いる場合、各実施例と同様の独自TCP機能6を用いることによって、同様の効果が得られる。
以上に説明したように、第5の実施例では、独自TCP機能6と一般TCP機能52との間でデータを交換するプロキシ機能を有するので、送信端末1に特別な実装をすることなく、データ転送のスループットを向上することができる。
以上、本発明を添付の図面を参照して詳細に説明したが、本発明はこのような具体的構成に限定されるものではなく、添付した請求の範囲の趣旨内における様々な変更及び同等の構成を含むものである。
1 送信端末
2 受信端末
3 WAN
4 アプリケーションプログラム
5 ネットワークインターフェース
6 独自TCP機能
7 送信部
8 受信部
9 送信バッファ
10 受信バッファ
11 送信制御部
12 再送管理部
13 廃棄検出部
14 優先度設定部
15 再送管理テーブル
16 再送部
17 記憶部
50 プロキシ装置
51 LAN側ネットワークインターフェース
52 一般TCP機能
53 プロキシ
54 LAN
55 LAN側受信部
56 LAN側送信部
57 LAN側受信バッファ
58 LAN側送信バッファ
59 LAN側制御部
61 送信端末

Claims (20)

  1. ネットワークに接続される通信装置であって、
    前記ネットワークに接続された対向通信装置にデータを送信し、
    前記対向通信装置が送信した確認応答を受信し、
    送信されたデータが廃棄された箇所を記憶するための記憶容量が、前記対向通信装置において不足しているかを監視し、
    前記記憶容量が不足している場合、廃棄箇所に再送の優先度を設定してデータを再送することを特徴とする通信装置。
  2. 請求項1に記載の通信装置であって、
    前記ネットワークを介して前記対向通信装置にパケットを送信する送信部と、
    前記ネットワークを介して前記対向通信装置から選択的確認応答及び確認応答の情報を含む確認応答パケットを受信する受信部と、
    前記受信した確認応答パケットから特定された再送すべき箇所を記憶するための再送管理テーブルと、
    前記受信した確認応答パケットから、前記対向通信装置において前記記憶容量が不足していることを検出する検出部と、
    前記検出部が前記対向通信装置において前記記憶容量の不足を検出した場合に再送すべきパケットを含む廃棄箇所に優先度を設定する優先度設定部と、
    前記設定された優先度に従って、廃棄されたパケットを再送する再送部と、を備えることを特徴とする通信装置。
  3. 請求項2に記載の通信装置であって、
    前記優先度設定部は、再送すべきパケットの数が少ない廃棄箇所に高い優先度を設定することを特徴とする通信装置。
  4. 請求項3に記載の通信装置であって、
    前記優先度設定部は、
    再送すべきパケットの数が1である廃棄箇所の優先度を高く設定し、
    再送すべきパケットの数が2以上である廃棄箇所の優先度を0に設定することを特徴とする通信装置。
  5. 請求項3に記載の通信装置であって、
    前記優先度設定部は、再送すべきパケットの数が少なく、かつ、シーケンス番号が小さいパケットを含む廃棄箇所に高い優先度を設定することを特徴とする通信装置。
  6. 請求項5に記載の通信装置であって、
    前記優先度設定部は、
    前記再送管理テーブルのエントリを示すポインタ、前記エントリのパケット数及び優先度を含む一時テーブルを生成し、
    前記一時テーブル上で、前記パケット数の順に優先度を設定し、
    前記設定された優先度を前記再送管理テーブルに書き戻すことを特徴とする通信装置。
  7. 請求項2から6のいずれか一つに記載の通信装置であって、
    前記検出部は、連続する確認応答パケットにおいて前記選択的確認応答及び前記確認応答の情報がすべて一致している場合、前記対向通信装置において前記記憶容量が不足していることを検出することを特徴とする通信装置。
  8. 請求項2から6のいずれか一つに記載の通信装置であって、
    送信したパケットの数を計数する第1のカウンタと、
    前記選択的確認応答及び前記確認応答の情報がすべて一致している確認応答パケットの数を計数する第2のカウンタと、を有し、
    前記検出部は、前記第1のカウンタで計数された送信パケットの数と、前記第2のカウンタで計数された確認応答パケットの数との比が所定の閾値以上である場合、前記対向通信装置において前記記憶容量が不足していることを検出することを特徴とする通信装置。
  9. 請求項2から6のいずれか一つに記載の通信装置であって、
    前記検出部は、前記再送管理テーブルのエントリ数が所定の閾値以上である場合、前記対向通信装置において前記記憶容量が不足することを予測し、
    前記優先度設定部は、前記記憶容量が不足することが予測された場合、再送すべきパケットに優先度を設定することを特徴とする通信装置。
  10. 請求項2に記載の通信装置であって、
    一般的な通信方式を用いる他の通信装置との通信を制御する一般通信機能と、
    前記設定された優先度に従ってパケットを再送する通信機能との間でデータの交換を行うプロキシ機能と、を備えることを特徴とする通信装置。
  11. ネットワークに接続された通信装置間でパケットを転送する方法であって、
    第1の通信装置が、前記ネットワークを介して対向する第2の通信装置から選択的確認応答及び確認応答の情報を含む確認応答パケットを受信し、
    前記第1の通信装置が、前記受信した確認応答パケットから特定された再送すべき箇所を再送管理テーブルに記憶し、
    前記第1の通信装置が、前記受信した確認応答パケットから、前記第2の通信装置において送信されたデータが廃棄された箇所を記憶するための記憶容量が不足していることを検出し、
    前記第1の通信装置が、前記第2の通信装置において前記記憶容量の不足を検出した場合に再送すべきパケットを含む廃棄箇所に優先度を設定し、
    前記第1の通信装置が、前記設定された優先度に従って、廃棄された再送パケットの送信順序を制御するパケット転送方法。
  12. 請求項11に記載の方法であって、
    前記第1の通信装置が、再送すべきパケットの数が少ない廃棄箇所に高い優先度を設定し、前記設定された優先度に従ってパケットを再送することを特徴とするパケット転送方法。
  13. 請求項12に記載の方法であって、
    前記第1の通信装置が、再送すべきパケットの数が1である廃棄箇所の優先度を高く設定し、再送すべきパケットの数が2以上である廃棄箇所の優先度を0に設定し、
    前記第1の通信装置が、前記設定された優先度に基づいて、前記再送すべきパケット数が1である廃棄箇所のパケットを優先的に再送することを特徴とするパケット転送方法。
  14. 請求項12に記載の方法であって、
    前記第1の通信装置が、前記廃棄箇所のうち再送すべきパケット数が少なく、かつ、シーケンス番号が小さいものから優先度を高く設定することを特徴とするパケット転送方法。
  15. 請求項14に記載の方法であって、
    前記第1の通信装置が、前記再送管理テーブルのエントリを示すポインタ、前記エントリのパケット数及び優先度を含む一時テーブルを生成し、
    前記第1の通信装置が、前記一時テーブル上で、前記パケット数の順に優先度を設定し、
    前記第1の通信装置が、前記設定された優先度を前記再送管理テーブルに書き戻すことを特徴とするパケット転送方法。
  16. ネットワークに接続された通信装置にパケットを転送させるためのプログラムであって、
    前記通信装置は、前記プログラムを実行するプロセッサと、前記プログラムを格納する記憶部を有し、
    前記プログラムは、
    前記ネットワークを介して対向する対向通信装置から選択的確認応答及び確認応答の情報を含む確認応答パケットを受信する手順と、
    前記受信した確認応答パケットから特定された再送すべき箇所を再送管理テーブルに記憶する手順と、
    前記受信した確認応答パケットから、前記対向通信装置において送信されたデータが廃棄された箇所を記憶するための記憶容量が不足していることを検出する手順と、
    前記対向通信装置において前記記憶容量の不足を検出した場合に再送すべきパケットを含む廃棄箇所に優先度を設定する手順と、
    前記設定された優先度に従って、廃棄された再送パケットの送信順序を制御する手順とを、前記通信装置に実行させるためのプログラム。
  17. 請求項16に記載のプログラムであって、
    再送すべきパケットの数が少ない廃棄箇所に高い優先度を設定し、前記設定された優先度に従ってパケットを再送する手順を、前記通信装置に実行させるためのプログラム。
  18. 請求項17に記載のプログラムであって、
    再送すべきパケットの数が1である廃棄箇所の優先度を高く設定し、再送すべきパケットの数が2以上である廃棄箇所の優先度を0に設定する手順と、
    前記設定された優先度に基づいて、前記再送すべきパケット数が1である廃棄箇所のパケットを優先的に再送する手順とを、前記通信装置に実行させるためのプログラム。
  19. 請求項17に記載のプログラムであって、
    前記廃棄箇所のうち再送すべきパケット数が少なく、かつ、シーケンス番号が小さいものから優先度を高く設定する手順を、前記通信装置に実行させるためのプログラム。
  20. 請求項19に記載のプログラムであって、
    前記再送管理テーブルのエントリを示すポインタ、前記エントリのパケット数及び優先度を含む一時テーブルを生成する手順と、
    前記一時テーブル上で、前記パケット数の順に優先度を設定する手順と、
    前記設定された優先度を前記再送管理テーブルに書き戻す手順とを、前記通信装置に実行させるためのプログラム。
JP2013015245A 2013-01-30 2013-01-30 通信装置、パケット転送方法及びそのプログラム Expired - Fee Related JP5636574B2 (ja)

Priority Applications (3)

Application Number Priority Date Filing Date Title
JP2013015245A JP5636574B2 (ja) 2013-01-30 2013-01-30 通信装置、パケット転送方法及びそのプログラム
US14/650,438 US9450706B2 (en) 2013-01-30 2013-11-20 Communication apparatus and packet transfer method
PCT/JP2013/081250 WO2014119094A1 (ja) 2013-01-30 2013-11-20 通信装置及びパケット転送方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2013015245A JP5636574B2 (ja) 2013-01-30 2013-01-30 通信装置、パケット転送方法及びそのプログラム

Publications (3)

Publication Number Publication Date
JP2014147011A JP2014147011A (ja) 2014-08-14
JP2014147011A5 true JP2014147011A5 (ja) 2014-09-25
JP5636574B2 JP5636574B2 (ja) 2014-12-10

Family

ID=51261826

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2013015245A Expired - Fee Related JP5636574B2 (ja) 2013-01-30 2013-01-30 通信装置、パケット転送方法及びそのプログラム

Country Status (3)

Country Link
US (1) US9450706B2 (ja)
JP (1) JP5636574B2 (ja)
WO (1) WO2014119094A1 (ja)

Families Citing this family (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP5636574B2 (ja) 2013-01-30 2014-12-10 株式会社日立製作所 通信装置、パケット転送方法及びそのプログラム
US11102273B2 (en) * 2015-05-13 2021-08-24 Cisco Technology, Inc. Uplink performance management
CN112148654A (zh) * 2019-06-27 2020-12-29 凌阳科技股份有限公司 调整时钟信号的时钟沿的方法及电路

Family Cites Families (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7076717B2 (en) * 2003-06-13 2006-07-11 Microsoft Corporation Time-aware best-effort hole-filling retry method and system for network communications
JP2010213150A (ja) 2009-03-12 2010-09-24 Nec Corp 送信装置、大容量ファイル配信システム、同システムにおけるファィル再送制御方法、再送制御プログラム
CN102187626B (zh) * 2009-07-22 2014-06-04 松下电器产业株式会社 通信方法
WO2012066824A1 (ja) 2010-11-16 2012-05-24 株式会社日立製作所 通信装置および通信システム
JP5636574B2 (ja) 2013-01-30 2014-12-10 株式会社日立製作所 通信装置、パケット転送方法及びそのプログラム

Similar Documents

Publication Publication Date Title
CN111512603B (zh) 一种数据传输方法及第一设备
US20200280902A1 (en) Method and apparatus for transmitting data packets using dual sequence numbers
CN109936510B (zh) 多路径rdma传输
US10425344B2 (en) Avoiding dropped data packets on a network transmission
US9503383B2 (en) Flow control for reliable message passing
US10430374B2 (en) Selective acknowledgement of RDMA packets
CN110661723A (zh) 一种数据传输方法、计算设备、网络设备及数据传输系统
US10594442B2 (en) End-to-end negative acknowledgment
CN109981385B (zh) 一种实现丢包检测的方法、装置和系统
US10133687B2 (en) Communication apparatus and data processing method
JP5636574B2 (ja) 通信装置、パケット転送方法及びそのプログラム
US6996105B1 (en) Method for processing data packet headers
JP2014147011A5 (ja)
CN113572582B (zh) 数据发送、重传控制方法及系统、存储介质及电子设备
CN113973091A (zh) 一种报文处理方法、网络设备以及相关设备
CN113852445B (zh) 一种提高数据传输可靠性的方法、系统、设备和存储介质
US20240146806A1 (en) Intermediate apparatus, communication method, and program
US8854957B2 (en) Packet retransmission control system, packet retransmission control method and retransmission control program
CN117560304B (zh) 一种网络状态监测方法、系统、设备和介质
WO2022056791A1 (zh) 一种报文重传方法和装置
CN117692109A (zh) 远程直接内存访问的数据重传方法及相关设备
JP2019047162A (ja) 情報処理システム、情報処理方法、プログラム、及び情報処理装置
JP2000253098A (ja) 信号処理装置及び信号処理システム
Li et al. Efficient new delayed ACK for TCP: old problem, new insight