JP2013027007A - 通信装置 - Google Patents

通信装置 Download PDF

Info

Publication number
JP2013027007A
JP2013027007A JP2011163020A JP2011163020A JP2013027007A JP 2013027007 A JP2013027007 A JP 2013027007A JP 2011163020 A JP2011163020 A JP 2011163020A JP 2011163020 A JP2011163020 A JP 2011163020A JP 2013027007 A JP2013027007 A JP 2013027007A
Authority
JP
Japan
Prior art keywords
data
buffer
transmission
size
lan
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
JP2011163020A
Other languages
English (en)
Other versions
JP5258938B2 (ja
Inventor
Takashi Isobe
隆史 磯部
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.)
Hitachi Ltd
Original Assignee
Hitachi 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 Hitachi Ltd filed Critical Hitachi Ltd
Priority to JP2011163020A priority Critical patent/JP5258938B2/ja
Priority to EP12817123.8A priority patent/EP2738984A4/en
Priority to US13/820,029 priority patent/US8811419B2/en
Priority to CN2012800027094A priority patent/CN103081419A/zh
Priority to PCT/JP2012/055260 priority patent/WO2013014963A1/ja
Publication of JP2013027007A publication Critical patent/JP2013027007A/ja
Application granted granted Critical
Publication of JP5258938B2 publication Critical patent/JP5258938B2/ja
Expired - Fee Related 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/10Flow control; Congestion control
    • H04L47/27Evaluation or update of window size, e.g. using information derived from acknowledged [ACK] packets

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Data Exchanges In Wide-Area Networks (AREA)
  • Small-Scale Networks (AREA)

Abstract

【課題】LAN側とWAN側の2つのTCP通信を中継する中継装置において、WAN側の回線帯域がLAN側の回線帯域よりも小さい場合でも中継装置のLAN側受信バッファとWAN側送信バッファでのバッファ溢れ防ぎ、さらに、コネクションが強制切断されることを防ぐ。
【解決手段】WAN側のTCP通信にて計測した送信スループット・廃棄率・RTTと、LAN側の受信バッファの未整列データサイズと整列済みデータサイズとWAN側の送信バッファの未送信データサイズとACK待ちデータサイズとの合計値に基づいて、LAN側の送信端末へ返信するACKパケットに記載する受信ウィンドウサイズ(rwnd)の値を制御する。更に、rwndが減少して予め定めた閾値を下回り、再び超過したときに、受信ウィンドウサイズ(rwnd)の値を記載したACKパケットをLAN側の送信端末へ即座に送信する。
【選択図】図1

Description

本発明は、通信装置に関し、特に、端末間の通信を中継する通信装置に関する。
クラウド等に用いられる拠点間の通信網として、IP―VPN(Internet Protocol− Virtual Private Network)技術等を用いたWAN(Wide Area Network)を用いることが、一般的になっている。
或る拠点に存在する端末が、別の拠点に存在する端末と通信する場合は、自拠点LAN(Local Area Network)とWANを接続する回線と、WANと別拠点LANを接続する回線とを経由して通信が行われる。これらの回線は、契約帯域によって、使用可能な帯域幅が制限されている。
端末間の通信では、TCP(Transport Communication Protocol)を用いるのが一般的である。TCP通信では、送信端末の送信バッファと、受信端末の受信バッファを介して、データ転送が行われる。送信端末で動作するアプリケーションは、送信するデータを送信バッファに書き込む。送信端末は、送信バッファに書き込まれたデータをパケットに載せて、受信端末に向けて送信する。受信端末は、送信端末からパケットを受け取ると、受信データを受信バッファに蓄積する。更に、整列済み受信データの最後尾を示すシーケンス番号と、受信バッファの残存量を記載したACKパケットを送信端末に返信する。送信端末は、ACKパケットを受け取ると、記載されているシーケンス番号から受信済みデータを判断して、送信バッファから消去する。受信端末で動作するアプリケーションは、受信バッファに蓄積された整列済み受信データを定期的に読み出し、読出されたデータは受信バッファから消去される。各端末は、1つのTCP通信に対して、1組の送信バッファと受信バッファを持っており、送信する場合は送信バッファにデータを書き込み、受信する場合は受信バッファからデータを読み出す。
特許文献1では、輻輳ウィンドウサイズの値に基づいて、送信バッファに蓄積するデータサイズや新たに蓄積可能なデータサイズを制御する方法が記載されている。
特許文献2では、帯域幅と通信遅延の乗算値に基づいて、バッファのデータサイズを制御する方法が記載されている。
特開2005−348107号公報 特表2004−520725号公報
LAN側とWAN側の2つのTCP通信を中継する中継装置において、LAN側の回線帯域がWAN側の回線帯域よりも大きいと、LAN側の送信端末から中継装置への入力スループットが、中継装置からWANへの出力スループットよりも大きくなる場合があり、中継装置のバッファに大量のデータが蓄積され溢れることがある。バッファ溢れがおきると、バッファ残存量0であることがLAN側の送信端末に通知され、LAN側の送信端末から中継装置への送信が停止する。
中継装置からWANへの出力スループットが、LAN側の送信端末から中継装置への入力スループットよりも相対的に小さいときは、中継装置のバッファに溜まったデータが減り、バッファに空きが生じるまでに時間がかかる。中継装置のバッファに再び空きが生じて通信が再開されるまでに長時間かかることにより、尚且つ、TCPではバッファが空いたことが即座にLAN側の送信端末に通知されないことにより、通信停止時間が長期化する課題がある。また、通信停止時間に長期化により通信が切断されたと送信端末に誤認され、コネクションが強制切断されてしまう課題があった。
本発明は、以上の点に鑑み、第一網側と第二網側を介して行われるTCP通信を中継する通信装置において、第一網側の回線帯域より第二網側の回線帯域が小さい場合、通信装置の送受信バッファのあふれを防ぎ、さらに端末間のコネクションが強制切断されることを防ぐ通信装置を提供することを目的とする。
上記課題の少なくとも一を解決するために、本発明の第1の解決手段によると、
第1網と第2網とを介するTCP通信を中継する通信装置において、
第1網から受信し、第2網へ中継する中継データを一時的に蓄積するバッファと、
前記バッファに蓄積した中継データのサイズを計算する受信部と、
第2網への実際の送信スループットを計測する送信帯域制御部と
を備え、
前記受信部は、
中継データのサイズと、送信スループットとに基づいて、第1網側のTCP通信で送信するACKパケットに記載する受信ウィンドウサイズの値を計算する前記通信装置が提供される。
例えば、第一の解決手段の具体的な一態様としては、LAN側TCP通信向け受信バッファに蓄積されている未整列データサイズと整列済みデータサイズと、WAN側TCP通信向け送信バッファに蓄積されている未送信データサイズと確認応答待ちデータサイズと、から装置に蓄積されたデータサイズの合計値を計算する手段と、WAN側TCP通信の送信スループットと再送スループットを計測する手段と、蓄積データサイズの合計値と、WAN側TCP通信の送信スループットと再送スループットとラウンドトリップタイム(RTT)に基づいて、LAN側の送信端末へ返信するACKパケットに記載する受信ウィンドウサイズ(rwnd)の値を計算するための手段を備える。更に、rwndが減少して予め定めた閾値を下回った後、再びその閾値を超過したときに、rwndの値を記載したACKパケットをLAN側の送信端末へ即座に送信する手段を備える。
本態様により、バッファに余裕ができたときに、通信が即座に再開され、通信停止時間を短縮することができる。
本発明によると、第一網側と第二網側を介して行われるTCP通信を中継する通信装置において、第一網側の回線帯域より第二網側の回線帯域が小さい場合、通信装置の中継のための送受信バッファのあふれを防ぐ。また、本発明によると、端末間のコネクションが強制切断されるころを防ぐ通信装置を提供できる。
本実施の形態における装置を有するシステム構成図。 装置200のブロック図。 バッファのポインタの説明図。 パケットのフォーマット図。 状態テーブル212のフォーマット図。 プロキシ部206のブロック図。 WAN側TCP部209のブロック図。 LAN側のTCPモジュール203のブロック図。 帯域テーブル213のフォーマット図。 プロキシ部206がLAN側受信バッファのデータをWAN側送信バッファへ移動する処理のフローチャート図。 プロキシ部206がWAN側受信バッファのデータをLAN側送信バッファへ移動する処理のフローチャート図。 装置がLAN側の送信端末へ返信するACKパケット記載のrwndを決定する処理のフローチャート図(1)。 装置がLAN側の送信端末へ返信するACKパケット記載のrwndを決定する処理のフローチャート図(2)。 装置がLAN側の送信端末へ返信するACKパケット記載のrwndを決定する処理のフローチャート図(3)。 rwnd527のより詳細な一例を示したフローチャート図。 受信履歴更新部726のACK返信処理のフローチャート図。 LAN側TCPの受信履歴更新部726のACK返信の詳細な一例を示したフローチャート図。 従来の中継装置の課題を説明するためのシーケンス図。 従来の中継装置の課題を説明するためのスループット図。 本願の効果を説明するためのシーケンス図。 本願の効果を説明するためのスループット図。 LAN側からデータ付きパケットを受信した際のパケットの流れの説明図。 旧基準時刻、基準時刻、現在時刻の説明図。
本発明を実施するための代表的な形態は、下記の通りである。
まず、図13と図14を用いて、従来の中継装置1310、1320の課題を説明する。
図13には、端末111と端末121との間の通信を、従来の装置1310、1320が中継する際のシーケンス図を示す。図14には、端末111と装置1310との間のLAN帯域1401と、装置1310と装置1320との間のWAN帯域1402の推移を示す。
装置1310は、この例ではLAN側に2パケット蓄積可能な受信バッファrbufと、WAN側に3パケット蓄積可能な送信バッファsbufを備える(1301)。
装置1310は、端末111から1つ目のデータパケット1313を受信すると、装置1310のLAN側の受信バッファrbufにパケット記載のデータを1つ蓄積する(1302)。装置1310は、1つ目のデータパケット受信後、1つ目のデータを受け取ったことを表すACK=1と受信バッファの残りサイズが1であることを表すwin_size=1を記載したACKパケット(1329)を端末111に向けて返信する。LAN側の受信バッファに蓄積された1つ目のデータは、WAN側の送信バッファに移される(1303)。1つ目のデータは、WAN側の送信バッファに移された後、WAN側の装置1320に向けて送られるが、ここでは廃棄されてしまうものとする(1328)。
次に、装置1310が、LAN側の端末111から2つ目のデータパケット1314を受信すると、装置1310のLAN側の受信バッファrbufにパケット記載のデータを1つ蓄積する(1304)。装置1310は、2つ目のデータパケット受信後、2つ目のデータを受け取ったことを表すACK=2と受信バッファの残りサイズが1であることを表すwin_size=1を記載したACKパケット(1330)を端末111に向けて返信する。LAN側の受信バッファに蓄積された2つ目のデータは、WAN側の送信バッファに移される(1305)。1つ目のデータが廃棄されて、WAN側へ送信する際の制御帯域が小さいままなので、2つ目のデータは、WAN側の送信バッファに移された後、しばらくはWAN側に向けて送信されずに、蓄積される。
次に、装置1310が、LAN側の端末111から3つ目のデータパケット1324を受信すると、装置1310のLAN側の受信バッファrbufにパケット記載のデータを1つ蓄積する(1306)。装置1310は、3つ目のデータパケット受信後、3つ目のデータを受け取ったことを表すACK=3と受信バッファの残りサイズが1であることを表すwin_size=1を記載したACKパケットを端末111に向けて返信する。LAN側の受信バッファに蓄積された3つ目のデータは、WAN側の送信バッファに移される(1307)。1つ目のデータが廃棄されて、WAN側の制御帯域が小さいままなので、3つ目のデータは、WAN側の送信バッファに移された後、しばらくはWAN側に向けて送信されずに、蓄積される。前回、蓄積されたままだった2つ目のデータが例えばここでWAN側に向けて送信される(1331)。
次に、装置1310が、LAN側の端末111から4つ目のデータパケット1325を受信すると、装置1310のLAN側の受信バッファrbufにパケット記載のデータが1つ蓄積される(1308)。装置1310は、4つ目のデータパケット受信後、4つ目のデータを受け取ったことを表すACK=4と受信バッファの残存量が1であることを表すwin_size=1を記載したACKパケットを端末111に向けて返信する。LAN側の受信バッファに蓄積された4つ目のデータは、WAN側の送信バッファが一杯なため、移されない(1332)。WAN側の装置1320から、データ2に対するACKが戻ってきても(1333)、データ1が送信できていないため、WAN側の送信バッファに蓄積されたデータ1〜3は消去されずにそのまま残る(1332)。
次に、LAN側の端末111から5つ目のデータパケット1326が送信されると、LAN側の受信バッファにパケットが2つ蓄積される(1309)。5つ目のデータパケット受信後、装置1310は、5つ目のデータを受け取ったことを表すACK=5と受信バッファの残りサイズが0であることを表すwin_size=0を記載したACKパケットを端末111に向けて返信する。
以上、述べてきたように、装置1310は、データパケットを受信する毎に、受信バッファ残存量を記載したACKパケットを、LAN側の送信端末111に向けて送信する(1315)。
LAN側の受信バッファ残存量が無いことを示すwin_size=0のACKパケットを受け取った端末111は、装置1310においてLAN側の受信バッファが一杯と判断して、データ送信を停止する。
その後、装置1310から3つ目のデータがWAN側へ送信され(1334)、3つ目のデータに対するACKが戻ってきても(1335)、データ1が到達できていないため、WAN側の送信バッファに蓄積されたデータ1〜3は消去されずにそのまま残る(1316)。
装置1310は、LAN側の送信端末111からデータパケットを受信しないときは、ACKパケット(1317)を定期的に装置111へ送る(1318)。ACKパケットには、LAN側の受信バッファの残りサイズが0であることを表すwin_size=0が記載される。このように、パケット受信時(1315)、または定期的に(1318)、ACKパケットがLAN側の装置111へと送信される。
このように、WAN側の回線帯域がLAN側の回線帯域よりも小さい場合、LAN側の送信端末111から装置1310への入力スループットが、装置1310からWAN側の装置1320への出力スループットよりも大きく差が大きいため、装置1310のWAN側の送信バッファsbufとLAN側の受信バッファrbufに大量のデータがたまり、すぐに満杯となってしまう。更に、バッファに空きが生じるまでに時間がかかり、その後のデータ送信の停止時間が長時間におよぶため、端末111がコネクションに何らかの問題が生じたと判断して、RSTパケット送信(1319)によりコネクションを強制切断してしまう場合がある(1401)。
装置1310は、データ1に対するACKパケットが戻ってこないと、しばらくしてからデータ1を再送する(1321)。その後、装置1320からデータ1〜3を受け取ったことを表すACK=3を受信する(1322)。これにより、WAN側の送信バッファに蓄積されたデータ1〜3が消去される(1311)。その後、LAN側の受信バッファに蓄積された4つ目と5つ目のデータが、WAN側の送信バッファへ移される(1312)。これにより、LAN側の受信バッファrbufが空となる。
受信パケットがないときはACKパケットは定期的に送信されるため、LAN側の受信バッファが空になっても、ただちにwin_sizeを記載したACKパケットが端末111に送信されない(1323)。従って、端末111はデータ送信を再開できず、データ送信の停止時間が長期化してしまう。場合によっては、定期的なACKパケット送信の前に(1327)、端末111がコネクションに何らかの問題が生じたと判断して、RSTパケット送信(1319)によりコネクションを強制切断してしまう。
図14を参照してさらに説明する。
以上、記載したように、LAN側の回線帯域に対してWAN側の回線帯域が小さい場合は、LAN側の送信端末111から中継装置1310への入力スループット(1401)が、中継装置1310からWAN側の中継装置1320への出力スループット(1402)よりも大きいため、装置1310のWAN側の送信バッファsbufとLAN側の受信バッファrbufに大量のデータがたまり、すぐに満杯となってしまう(1403)。更に、バッファに空きが生じるまでに時間がかかり、その後のデータ送信の停止時間が長時間におよぶため、端末111がコネクションに何らかの問題が生じたと判断して、RSTパケット送信(1319)によりコネクションを強制切断してしまう(1404)、という課題があった。加えて、LAN側の受信バッファが空になっても、ただちにwin_sizeを記載したACKパケットが端末111に送信されないため(1323)、端末111はデータ送信を再開できず、データ送信の停止時間が長期化してしまう。場合によっては、端末111がコネクションに何らかの問題が生じたと判断して、RSTパケット送信(1319)によりコネクションを強制切断してしまう、という課題もあった。
更に、特許文献1に記載されているように、TCP通信を制御するための変数である輻輳ウィンドウサイズに基づいて、バッファへの蓄積サイズや新たに蓄積可能なデータサイズを制御する方式では、WAN側のRTTが増大したときに、バッファの使用可能量が減少してしまう。例えば、送信スループットやRTTや廃棄率の増大に応じて必要バッファ量が増大する独自TCPを用いて通信するケースでは、十分なスループットを達成できなくなり課題となる。また、特許文献2に記載のように、中継装置と中継装置の間の通信速度が、中継装置とクライアントの間の通信速度よりも高い時に、クライアント端末に対する受信ウィンドウサイズを抑える方式では、スループットの小さい方の通信の受信ウィンドウサイズを抑えて、通信速度差を余計に拡大させることとなり、本願の課題を解決することはできない。更に、特許文献2に記載のように、帯域遅延積を用いてバッファへのデータ蓄積量を制限する方式では、制限を越えるパケットを受信したときにバッファ溢れを生じ、パケット廃棄を生じさせることで、パケット再送が頻発し、データ送信の再開がかえって遅くなってしまう、という課題があった。
本実施の形態は、これらの従来の方式では解決できなかった課題を解決する。
図1には、本実施の形態の通信装置を適用したネットワークシステムの構成図を示す。
通信装置(中継装置ともいう。以下、単に装置と記す)101、102、103は、複数の拠点内LAN(第1網)110、120、130とWAN(第2網)140を接続する通信回線上に設置される。各拠点内LAN110、120、130には、複数の端末111〜113、121〜123、131〜133が接続している。装置101、102、103は、第1網と第2網の2つのTCP通信を中継する。なお、装置101、102、103は、2つのWANのTCP通信を中継してもよい。また、端末、装置及びネットワークの数は図示以外にも適宜の数を備えても良い。
図2には、本実施の形態の装置200のブロック図を示す。
装置200は、例えば、外部のWAN/LANネットワークとのパケットの送受信を行うWAN側及びLAN側のネットワークインターフェース(201/211)と、TCP以外のUDPパケットやARPパケット等を素通しさせるためのフィルタ(202/210)と、TCP通信のための制御を行うWAN側及びLAN側のTCPモジュール203/209と、WAN側のTCPモジュール209の管理するN個の送信バッファ207およびN個の受信バッファ208と、LAN側のTCPモジュール203の管理するN個の送信バッファ205およびN個の受信バッファ204と、送受信バッファ間でデータの乗せ換えを行うプロキシ(データ転送部)206と、N個のエントリを備えた状態テーブル212と、N個のエントリを備えた帯域テーブル213とを備える。なお、上述のN個は、それぞれ異なる数でもよい。
TCPモジュール203/209、プロキシ206、状態テーブル212及び帯域テーブル213については、後に他の図面を参照して詳述し、ここでは概略を述べる。
WAN側のTCPモジュール209は、送信帯域制御部715と、送信履歴更新部705と、を備える。送信帯域制御部715は、送信スループット(531、532)の情報を状態テーブル212に蓄積する。送信履歴更新部705は、WAN側送信バッファ207から読み出した送信データサイズに応じて、状態テーブル212のバッファ管理ポインタ(508〜510、515〜517、521〜526)の情報を更新する。
プロキシ206は、データ読出し部601と、データ加工部602と、データ書き込み部603を備える。データ加工部602は、加工中のデータサイズ(529、530)の情報を、状態テーブル212に蓄積する。データ読出し部601は、LAN側受信バッファ204から読み出したデータサイズに応じて、状態テーブル212のバッファ管理ポインタ(508〜510、515〜517、521〜526)の情報を更新する。データ書き込み部603は、WAN側送信バッファ207に書き込んだデータサイズに応じて、状態テーブル212のバッファ管理ポインタ(508〜510、515〜517、521〜526)の情報を更新する。
LAN側のTCPモジュール203は、受信履歴更新部726と、集約部732とを備える。受信履歴更新部726は、受信したパケットデータを、LAN側受信バッファに蓄積する。更に、受信履歴更新部726は、蓄積したデータサイズに応じて、状態テーブル212のバッファ管理ポインタ(508〜510、515〜517、521〜526)の情報を更新する。更に、受信履歴更新部726は、状態テーブル212のバッファ管理ポインタ(508〜510、515〜517、521〜526)と加工中データサイズ(529、530)から読み出した情報から、LAN側受信バッファに蓄積されたデータサイズと、WAN側送信バッファに蓄積されたデータサイズと、加工中データサイズの合計値を計算する。更に、受信履歴更新部726は、計算したデータサイズと、状態テーブル212の送信スループット(531、532)の情報とに基づいて、受信ウィンドウサイズ(rwnd)を計算し、計算した受信ウィンドウサイズ(rwnd)の値を記載したACKパケットを生成し、生成したACKパケットを集約部732経由でLAN側に送信する。
図4には、装置がやりとりするパケットのフォーマット図を表す。
パケットは、MACヘッダ400、IPヘッダ410、TCPヘッダ420、TCPオプションヘッダ430及びペイロード450を有する。MACヘッダ400は、宛先MACアドレスを表すDMAC401と、送信元MACアドレスを表すSMAC402と、MACフレームタイプを表すType403を含む。IPヘッダ410は、MACヘッダを除くパケット長を表すIP length411と、プロトコル番号を表すprotocol412と、送信元IPアドレスを表すSIP413と、宛先IPアドレスを現すDIP414とを含む。TCPヘッダ420は、送信元ポート番号を表すsrc.port421と、宛先ポート番号を表すdst.port422と、送信シーケンス番号を表すSEQ423と、受信シーケンス番号を表すACK424と、TCPフラグ番号を表すflag425と、TCPのヘッダ長を表すtcp hlen426と、受信バッファの残りサイズを表すwin−size427とを含む。TCPオプションヘッダ430は、オプション種別を表すoption kind431と、オプション長を表すoption length432と、どこからどこまで部分的に受信できたかを記載するleft_edge_1〜4(433、435、437、439)、right_edge_1〜4(434、436、438、440)を含む。
図3には、送受信バッファ管理用のポインタの説明図を表す。本図では、データを左から右に書き込んでいき、左から右に読み出していくものとする。
受信バッファ(204、208)は、受信したデータの先頭(新しいデータ)を示すポインタright_recv303と、整列済みデータと未整列データの境界を示すポインタleft_recv302と、プロキシ206による読出し済データと未読出しデータの境界を示すleft_rbuf301と、を管理する。
受信したデータの先頭を示すポインタright_recv303は、ロスの発生が無く、前から順番にデータを受信すると、受信したデータサイズ分増えて、右へ移動する。受信できずに歯抜けになっているデータ箇所(ロスセグメント)が存在する状態で、再送パケットを受信して、ロスセグメントが消滅すると、整列済みデータと未整列データの境界を示すポインタleft_recv302は、最も小さなロスセグメントの左端まで移動する。プロキシ206は、読出し済データと未読出しデータの境界を示すleft_rbuf301から順番にデータを読み出し、読み出したデータサイズ分、left_rbuf301を右へ移動させる。読み出せるデータサイズの最大値は、left_recv302とleft_rbuf301の差に応じた値である。
送信バッファ(205、207)は、プロキシ206により書き込み済みで送信可能状態となっているデータの先頭を表すポインタright_sbuf306と、送信済みデータの先頭を示す(送信済みデータと未送信データの境界でもある)ポインタright_send305と、受信側から確認応答を受信済みのデータの先頭を示すポインタleft_send304と、を管理する。
プロキシ206が書き込み済みで送信可能状態となっているデータの先頭を表すポインタright_sbuf306は、プロキシ206がデータを書き込む毎に、書き込んだデータサイズ分増加し、右へ移動する。送信したデータ、の先頭を示すポインタright_send305を始点として、新たなデータが送信され、right_send305は、送信されたデータサイズ分増加し、右へ移動する。受信側から、left_send304よりも大きな受信シーケンス番号を持つ確認応答パケットを受信すると、left_send304は、確認応答パケットに記載された受信シーケンス番号へと増加し、右へ移動する。
図5には、状態テーブル212のフォーマット図を示す。
状態テーブル212は、n個のエントリ520−1〜nを有する。
各エントリ520は、エントリが使用中であるか否かを記載するVLD501と、LANまたはWAN側のコネクションが確立中であるか否かを記載するconnect_state502と、LAN側の端末のIPアドレスを表すLIP503と、WAN側の端末のIPアドレスを表すWIP504と、LAN側の端末のTCPポート番号を表すLport505と、WAN側の端末のTCPポート番号を表すWport506と、LAN側のTCP通信の状態を表すlan_state507と、LAN側の受信バッファ管理用のポインタを表すlan_left_rbuf508、lan_left_recv509、lan_right_recv510と、LAN側のウィンドウスケールオプションの値を表すlan_ws511と、LAN側の平均RTTを表すlan_rtt512と、LAN側の輻輳ウィンドウサイズを表すcwnd513と、LAN側の送信バッファ管理用のポインタを表すlan_left_send521、lan_right_send522、lan_right_sbuf523と、LAN側の送信端末に通知する受信ウィンドウサイズを表すrwnd527と、LAN側の受信バッファから読み出され加工中のデータサイズを表すlan_wan529と、WAN側のTCP通信の状態を表すwan_state514と、WAN側の受信バッファ管理用のポインタを表すwan_left_rbuf515、wan_left_recv516、wan_right_recv517と、WAN側のウィンドウスケールオプションの値を表すwan_ws518と、WAN側の平均RTTを表すwan_rtt519と、WAN側の再送率を表すrts_ratio528と、WAN側の基準時刻後の送信帯域を表すsnd531と、WAN側の基準時刻前の送信帯域を表すold_snd532と、WAN側の送信バッファ管理用のポインタを表すwan_left_send524、wan_right_send525、wan_right_sbuf526と、WAN側の受信バッファから読み出され加工中のデータサイズを表すwan_lan530とを有する。
図6には、プロキシ206のブロック図を示す。
プロキシ206は、例えばLAN側の受信バッファrbuf204からデータを読出すデータ読出し部601と、読み出したデータに対して圧縮・解凍・暗号化・復号・削除・複製・追記などの加工を行うデータ加工部602と、加工済みデータをWAN側の送信バッファsbuf207へ書き込むデータ書き込み部603と、WAN側の受信バッファrbuf208からデータを読み出すデータ読出し部606と、読み出したデータに対して圧縮・解凍・暗号化・復号・削除・複製・追記などの加工を行うデータ加工部605と、加工済みデータをLAN側の送信バッファsbuf205へ書き込むデータ書き込み部604とを有する。データ加工部602とデータ加工部605との間で、データのやり取りをする場合もある。データ加工部602、605の処理は、上述の例以外にも、データに対する適宜の処理でもよい。
データ読出し部601は、lan_left_rbuf508からlan_left_recv509までの間に蓄積されている整列済みデータから読み出した先頭データから、読み出すべきデータサイズと、データ加工後のデータサイズを推定する。先頭データとしては、TLS(Transport Layer Security)/SSL(Secure Socket Layer)ヘッダ、SMB(Server Message Block)ヘッダ、等などを使用してもよい。TLS/SSLヘッダに記載された値からは、復号後のチェックサムやヘッダを除いた平文データサイズを推定することができる。SMBヘッダからは、プリフェッチ等を行った後のコマンドデータサイズを推定することができる。推定した加工後のデータサイズと、wan_right_sbuf526とwan_left_send524の差、すなわち未送信データとACK確認待ちデータの合計との和が、WAN側の送信バッファサイズwan_sbuf_sizeを超えない場合は、データを受信バッファ204から読み出して、データ加工部602へ転送する。更に、推定した読み出すべきデータサイズと、データ加工後のデータサイズのうち、大きい方を状態テーブル212のlan_wan529へ記載する。詳細は、図9に示すフローチャート図を参照して後述する。
データ読出し部606は、wan_left_rbuf515からwan_left_recv516までの間に蓄積されている整列済みデータから読み出した先頭データから、読み出すべきデータサイズと、データ加工後のデータサイズを推定する。先頭データとしては、TLS(Transport Layer Security)/SSL(Secure Socket Layer)ヘッダ、SMB(Server Message Block)ヘッダ、等などを使用してもよい。推定した加工後のデータサイズと、lan_right_sbuf523とlan_left_send521の差、すなわち未送信データとACK確認待ちデータの合計との和が、LAN側の送信バッファサイズlan_sbuf_sizeを超えない場合は、データを受信バッファ208から読み出して、データ加工部605へ転送する。更に、推定した読み出すべきデータサイズと、データ加工後のデータサイズのうち、大きい方を状態テーブル212のwan_lan530へ記載する。詳細は、図10に示すフローチャート図を参照して後述する。
図9と図10には、データ読出し部601とデータ読出し部606のデータ読出し処理のフローチャート図をそれぞれ示す。
図9の各処理は、データ読み出し部601が実行する。
データ読出し部601は、処理を開始すると(ステップ900)、はじめにlan_left_recv509がlan_left_rbuf508よりも大きいか比較し、LAN側の受信バッファに整列済みデータが存在するか否かを判定する(ステップ901)。ステップ900で大きくないと判断した場合、すなわち整列済みデータが存在しない場合は、ステップ901を繰り返す。一方、ステップ900で大きいと判断した場合、すなわち整列済みデータが存在する場合は、次に、lan_left_recv509からlan_left_rbuf508の間にある整列済みデータの先頭データから、読み出すべきデータサイズと、データ加工後のデータサイズを推定する(ステップ906)。先頭データとしては、TLS(Transport Layer Security)/SSL(Secure Socket Layer)ヘッダ、SMB(Server Message Block)ヘッダ、等などを使用してもよい。推定の手法は適宜の手法を用いてよい。
次に、wan_right_sbuf526とwan_left_send524の差分(未送信データとACK確認待ちデータの合計値)と、WAN側の送信バッファサイズwan_sbuf_sizeとの差分(バッファ空きサイズ)が、ステップ906で推定した加工後のデータサイズよりも大きいか否か比較を行う(ステップ902)。ステップ902にて大きいと判定した場合、ステップ906にて推定した読み出すべきデータサイズのデータを、LAN側の受信バッファから読み出す(ステップ903)。ステップ902にて否と判定した場合は、データ加工しない場合のみ、wan_right_sbuf526とwan_left_send524の差分(未送信データとACK確認待ちデータの合計値)と、WAN側の送信バッファサイズwan_sbuf_sizeとの差分(バッファ空きサイズ)に相当するサイズのデータを、LAN側の受信バッファから読み出す(ステップ904)。データを加工するか否かは、予め定められても良いし、パケットの種類毎に定められても良い。データ読み出し後、lan_left_rbuf508に読み出したデータサイズを加算する(ステップ905)。ステップ905の後、ステップ901へ戻る。なお、wan_right_sbuf526は、データ書き込み部603がデータを書き込んだ際に、書き込んだデータサイズ分だけ増加する。
図10の各処理は、データ読み出し部606が実行する。
データ読出し部606は、処理を開始すると(ステップ1000)、はじめにwan_left_recv516がwan_left_rbuf515よりも大きいか比較し、WAN側の受信バッファに整列済みデータが存在するか否かを判定する(ステップ1001)。ステップ1001で大きくないと判断した場合、すなわち整列済みデータが存在しない場合は、ステップ1001を繰り返す。一方、ステップ1001で大きいと判断した場合、すなわち整列済みデータが存在する場合は、次に、wan_left_recv516からwan_left_rbuf515の間にある整列済みデータの先頭データから、読み出すべきデータサイズと、データ加工後のデータサイズを推定する(ステップ1006)。先頭データとしては、TLS(Transport Layer Security)/SSL(Secure Socket Layer)ヘッダ、SMB(Server Message Block)ヘッダ、等などを使用してもよい。
次に、lan_right_sbuf523とlan_left_send521の差分(未送信データとACK確認待ちデータの合計値)と、LAN側の送信バッファサイズlan_sbuf_sizeとの差分(バッファ空きサイズ)が、ステップ1006で推定した加工後のデータサイズよりも大きいか否か比較を行う(ステップ1002)。ステップ1002にて大きいと判定した場合、ステップ1006にて推定した読み出すべきデータサイズのデータを、WAN側の受信バッファから読み出す(ステップ1003)。ステップ1002にて否と判定した場合は、データ加工しない場合のみ、lan_right_sbuf523とlan_left_send521の差分(未送信データとACK確認待ちデータの合計値)と、LAN側の送信バッファサイズlan_sbuf_sizeとの差分(バッファ空きサイズ)に相当するサイズのデータを、WAN側の受信バッファから読み出す(ステップ1004)。データ読出し後、wan_left_rbuf515に読出したデータサイズを加算する(ステップ1005)。ステップ1005の後、ステップ1001へ戻る。なお、lan_right_sbuf523は、データ書き込み部604がデータを書き込んだ際に、書き込んだデータサイズ分だけ増加する。
図7Aには、WAN側のTCPモジュール209のブロック図を示す。
TCP通信を実現するTCPモジュール209は、受信処理を行うRX部(受信部)702と、送信処理を行うTX部(送信部)701を有する。RX部702は、受信パケットをTCP制御パケットとデータ付パケットとACKパケットに分離するパケット解析部708と、受信したTCP制御パケットに基づいて状態テーブル212内のTCP状態lan_state507、wan_state514を変更するTCP制御部707と、受信したデータパケットの送信シーケンス番号SEQ423と受信シーケンス番号ACK424とに基づいて、状態テーブル212内のバッファ管理ポインタを変更してACKパケットを返信する受信履歴更新部706とを有する。
TX部701は、状態テーブル212内のTCP状態lan_state507、wan_state514を用いてTCP制御パケットを送信するTCP制御部703と、受信したACKパケットに基づいて状態テーブル212内のバッファ管理ポインタを変更し、受信したACKパケット記載の部分的確認応答left_edge_1〜4(433、435、436、439)、right_edge_1〜4(434、436、438、440)を用いて送信バッファsbuf207からデータを読み出してパケットを再送するパケット再送部704と、送信バッファsbuf207から読み出したデータを載せたパケットを送信して、状態テーブル212内のバッファ管理ポインタを変更する送信履歴更新部705とを有する。さらに、TX部701は、再送パケットとデータパケットを受け取り、バッファ1〜n(709−1〜n)に振り分けると共に、各TCPコネクションの送信/再送ビット長を送信帯域制御部715に通知する振分部708と、現在時刻を生成して送信帯域制御部715に通知するタイマ713と、インターバル時間を保存して送信帯域制御部715に通知するインターバル格納部714と、帯域テーブル213を制御して、各TCPコネクションのトークンサイズをトークン更新部717に通知する送信帯域制御部715と、TCPコネクション毎にトークンバケツを管理して、送信可能なコネクションをマルチプレクサ712に通知するトークン更新部717と、ACKパケット、TCP制御パケット、再送パケット、データパケットをFIFOで集約して、出力するマルチプレクサ712およびバッファ709〜711とを有する。
図7Bには、LAN側のTCPモジュール203のブロック図を示す。
TCP通信を実現するTCPモジュール203は、受信処理を行うRX部722と、送信処理を行うTX部721を有する。RX部722は、受信パケットをTCP制御パケットとデータ付パケットとACKパケットに分離するパケット解析部728と、受信したTCP制御パケットに基づいて状態テーブル212内のTCP状態lan_state507、wan_state514を変更するTCP制御部727と、受信したデータパケットの送信シーケンス番号SEQ423と受信シーケンス番号ACK424とに基づいて、状態テーブル212内のバッファ管理ポインタを変更してACKパケットを返信する受信履歴更新部726とを有する。
TX部721は、状態テーブル212内のTCP状態lan_state507、wan_state514を用いてTCP制御パケットを送信するTCP制御部723と、受信したACKパケットに基づいて状態テーブル212内のバッファ管理ポインタを変更し、受信したACKパケット記載の部分的確認応答left_edge_1〜4(433、435、436、439)、right_edge_1〜4(434、436、438、440)を用いて送信バッファsbuf205からデータを読み出してパケットを再送するパケット再送部724と、送信バッファsbuf205から読み出したデータを載せたパケットを送信して、状態テーブル212内のバッファ管理ポインタを変更する送信履歴更新部725と、ACKパケット、TCP制御パケット、再送パケット、データパケットをFIFOで集約して、出力するマルチプレクサ732およびバッファ729〜731とを有する。
図8には、帯域テーブル213のフォーマットを表す。
帯域テーブル213は、コネクション毎に、旧基準時刻前の送信帯域・制御帯域、基準時刻前の送信帯域・再送帯域・制御帯域、基準時刻、及び、基準時刻後の送信ビット積算値・再送ビット積算値・制御帯域を記録する。基準時刻後の制御帯域は、現在時刻における制御帯域を表す(本実施例では、tokenと表す)。基準時刻後の送信帯域は、現在時刻における送信帯域を表し(本実施例では、sndと表す)、基準時刻後の送信ビット積算値をインターバル時間で除算することで求められる。基準時刻後の再送帯域は、現在時刻における再送帯域を表し(本実施例では、rtsと表す)、基準時刻後の再送ビット積算値をインターバル時間で除算することで求められる。基準時刻前の制御帯域・送信帯域・再送帯域は、基準時刻の直前までの制御帯域・送信帯域・再送帯域を表す(本実施例では、old_token、old_snd、old_rtsと表す)。また、現在使用している基準時刻の一つ前に使用していた基準時刻を旧基準時刻と呼び、旧基準時刻前の制御帯域・送信帯域・再送帯域は、旧基準時刻の直前までの制御帯域・送信帯域・再送帯域を表す(本実施例では、old_old_token、old_old_snd、old_old_rtsと表す)。例えば、基準時刻前の再送率old_rts_ratioは、old_rts/old_old_sndで求められる。また、基準時刻後の現在の再送率rts_ratioは、rts/old_sndで求められる。なお、インターバル格納部714のインターバル時間の代わりに、状態テーブル212記載のwan_rtt519を用いる場合もある。
帯域テーブル213の各情報は、例えば、送信帯域制御部715により更新される。また、送信帯域制御部715は、送信ビット積算値、再送ビット積算値などから、送信帯域(送信スループット)snd531、再送帯域(再送スループット)rts、再送率rts_ratio528をそれぞれ求め、状態テーブル212に記憶する。
図18には、旧基準時刻、基準時刻、現在時刻の関係を表す。旧基準時刻と、基準時刻の差は、インターバル時間である。旧基準時刻前のインーターバル時間の制御帯域・送信帯域・再送帯域は、old_old_token、old_old_snd、old_old_rtsと表す(1803)。旧基準時刻から基準時刻までの制御帯域・送信帯域・再送帯域は、old_token、old_snd、old_rtsと表す(1802)。基準時刻から現在時刻までの制御帯域・送信帯域・再送帯域は、token、snd、rtsと表す(1801)。インターバル時間は、例えばRTT等の変動する値でもよいし、固定の値を用いても良い。
送信帯域制御部715は、帯域テーブル213に記載された値を用いて制御帯域(token)を決定し、トークン更新部717へ伝える。更に、状態テーブル212のrts_ratio528を更新する。
図17には、LAN側からデータ付きパケットを受信した際のパケットの流れを表す。
LAN側から到着したデータ付きパケットは受信履歴更新部726に到着する。受信履歴更新部726は、ACKパケットを集約部732経由でLAN側に返信し、パケットに記載されたデータをLAN側受信バッファrbuf204へと蓄積する。更に、蓄積データサイズに基づいて状態テーブル212のポインタを更新する。データ読出し部601は、LAN側受信バッファrbuf204に蓄積された整列済みデータを読出し、データ加工部602へ転送する。更に、読み出したデータサイズに基づいて状態テーブル212のポインタを更新する。データ加工部602は、データを加工して、データ書き込み部603へ転送する。更に、加工中のデータサイズに基づいて状態テーブル212の加工中データサイズを更新する。データ書き込み部603は、加工済みデータをWAN側送信バッファsbuf207へと書き込む。更に、書き込んだデータサイズに基づいて状態テーブル212のポインタを更新する。WAN側送信バッファsbuf207に書き込まれたデータは、送信履歴更新部705から読み出されて、WAN側へデータ付きパケットとして送信される。
受信履歴更新部726は、LAN側の受信バッファ204の最大値から、lan_right_recv510とlan_left_rbuf508との差分を引くことで、受信バッファの残存量を計算する。受信データのペイロード450のサイズが、受信バッファ204の残存量以下のときは、ペイロード450に記載されたデータ全てを受信バッファ204に格納する。ペイロード450のサイズが、受信バッファ204の残存量よりも大きい場合は、ペイロード450の先頭から受信バッファの残存量に相当するサイズのデータだけを受信バッファ204に格納する。格納データサイズが0よりも大きいときは、データ付きパケットのTCPヘッダ420に記載されたSEQ423の値と、格納データサイズに基づいて、受信バッファ管理用ポインタの更新を行う。例えば、SEQ423に格納データサイズを加算した値が、lan_right_recv510よりも大きい場合は、lan_right_recv510を、SEQ423に格納データサイズを加算した値に変更する。更に、格納データは、lan_right_recv510で最後尾となるように、LAN側の受信バッファ204に記憶される。その後、rwnd527をTCPヘッダ420のwin_size427に記載し、受信バッファ管理ポインタの1つlan_left_recv509をTCPヘッダ420のACK424に記載したACKパケットを、LAN側へ返信する。
なお、受信履歴更新部726において、データを格納するか否かの判断に、rwnd527の値は使用されない。そのため、rwnd527が0であっても、受信バッファの残存量が0よりも大きければ、ACKパケットを送信した後に受信したパケットのペイロード450に記載されたデータは受信バッファに格納され、受信シーケンス番号がインクリメントされたACK424を持ち、受信ウィンドウサイズを0にしたACKパケットが、LAN側へ返信される。
送信履歴更新部705は、wan_right_send525から右方向に、最大wan_right_sbuf526までのデータを、WAN側送信バッファsbuf207から読み出す。wan_right_send525は、読み出したデータサイズ分、増加して、右に移動する。更に、読み出したデータをペイロード450に記載し、wan_right_send525をSEQ423に記載したTCPヘッダ420を追加したデータ付きパケットを、WAN側へ送信する。
図12Aには、LAN側TCPの受信履歴更新部726のACK返信の一例を示したフローチャート図を示す。
受信履歴更新部726は、処理が始まると(ステップ1211)、データパケットの受信があるか否かをポーリングして確認する(ステップ1212)。受信パケットがある場合は、新たなrwnd527を求めてTCPヘッダ420のwin_size427に記載したACKパケットをLAN側へ返信する(ステップ1214)。ステップ1212において、受信パケットが無い場合でも、rwnd527が予め定めた閾値未満から閾値以上に増加したことを確認した場合は(ステップ1213)、新たなrwnd527を求めてTCPヘッダ420のwin_size427に記載したACKパケットをLAN側へ返信する(ステップ1214)。ステップ1213にて、変化が確認されなかった場合は、ステップ1212へと戻る。
図12Aに示すように、LAN側TCPの受信履歴更新部726が、ステップ1213の処理を行うことで、データパケットの受信が無いときでも、LAN側の送信端末に通知すべきrwndが予め定めた閾値を超過したら即座に、rwndを記載したACKパケットをLAN側の送信端末に返信できるようになる。これにより、LAN側の送信端末は、LAN側の受信バッファに空きが生じたことを直ちに知り、送信を再開することが可能となる。
図12Bには、LAN側TCPの受信履歴更新部726のACK返信の、より詳細な一例を示したフローチャート図を示す。
受信履歴更新部726は、処理が始まると(ステップ1200)、はじめに、内部変数lan_rbuf_fullを0に初期化する(ステップ1201)。次に、rwnd527を計算する(ステップ1210)。rwnd527の計算方法は、図11A〜Dを参照して後述する。次に、内部変数lan_rbuf_fullが0であり、かつ、rwnd527が最大セグメントサイズ(1パケットに載せられる最大データサイズ)mss(上述の閾値に相当)よりも小さいか否かを判定する(ステップ1202)。ステップ1202において真であれば、内部変数lan_rbuf_fullを1に変更して(ステップ1203)、ステップ1204へと進む。ステップ1202において偽であれば、ステップ1204へと進む。ステップ1204では、新たなデータパケットの受信があるか否かを判定する。受信パケットがある場合は、受信バッファ管理用ポインタ更新を行う(ステップ1205)。例えば、SEQ423にペイロード450のサイズを加算した値が、lan_right_recv510よりも大きい場合は、lan_right_recv510をSEQ423にイロード450のサイズを加算した値に変更する。さらに、rwnd527を計算する(ステップ1208)。rwnd527の計算方法は、図11A〜Dを参照して後述する。一方、ステップ1204にて受信パケットが無い場合は、内部変数lan_rbuf_fullが1であり、かつ、rwnd527が最大セグメントサイズ(1パケットに載せられる最大データサイズ)mss以上であるか否かを判定する(ステップ1206)。否の場合は、ステップ1210へと戻る。真である場合は、内部変数lan_rbuf_fullを0にして(ステップ1207)、ステップ1208へと進む。ステップ1208では、rwnd527を計算する。その後、rwnd527をTCPヘッダ420のwin_size427に、受信バッファ管理ポインタの1つlan_left_recv509をTCPヘッダ420のACK424に、それぞれ記載したACKパケットを返信する(ステップ1209)。
図12Bに示すように、LAN側TCPの受信履歴更新部726が、ステップ1206とステップ1207の処理(及びステップ1202、1203の処理)を行うことで、データパケットの受信が無いときでも、LAN側の送信端末に通知すべきrwndがMSSを超過したら即座に、rwndを記載したACKパケットをLAN側の送信端末に返信できるようになる。これにより、LAN側の送信端末は、LAN側の受信バッファに空きが生じたことを直ちに知り、送信を再開することができる。
次に、rwnd527の計算について説明する。例えば、図12Aのステップ1214、図12Bのステップ1210、1208の処理に相当する。
図11Aには、LAN側TCPの受信履歴更新部726の行うrwnd527計算の一例を示したフローチャート図を示す。
rwnd527計算がはじまると(ステップ1110)、WAN送信バッファsbuf207とLAN受信バッファrbuf204に蓄積されたデータサイズ(蓄積データサイズ)と、プロキシ206で加工中のデータサイズを加算した値を、装置に蓄積された中継データサイズの合計値とする(ステップ1111)。各データサイズは、状態テーブル212から読み出してもよいし、又は状態テーブル212から読み出されたデータから求めてもよい。更に、装置に蓄積された中継データサイズの合計値を、計測したWAN側の送信スループット(snd又はold_snd)で除算して、装置内のデータが空になる時間を推定する(ステップ1112)。更に、推定した時間が、予め定められた閾値thrよりも大きいか否かを判定する(ステップ1113)。閾値は、TCPのタイムアウト時間より定めることができる。例えば、タイムアウト時間をそのまま閾値としても良いし、係数をかけてもよい。ステップ1113において、大きいと判定した場合は、rwnd527を0にして(ステップ1117)、処理を終了する(ステップ1116)。ステップ1113において、否と判定した場合は、計測した送信スループットと閾値を乗算した値と、装置に蓄積された中継データサイズの合計値と、の差をrwnd527に設定する(ステップ1114)。更に、rwnd527を右にwan_ws518シフトした値と、65535のどちらか小さい方を、新たなrwnd527の値として(ステップ1115)、終了する(ステップ1116)。ステップ1115により、例えばACKに書き込める最大値65535を超える場合は、rwnd527が最大値65535となる。なお、ACKに書き込める最大値は他の値が定められていてもよい。
図11Aに示したLAN側TCPモジュール203の受信履歴更新部726の行う処理により、装置に蓄積された中継データの合計値と、計測したWAN側の送信スループットとに基づいて、LAN側に返信するACKパケットに記載する受信ウィンドウサイズを定める手段が実現される。更に、蓄積された中継データの合計値を、計測した送信スループットで除算した値が、ある閾値以上になったときに、LAN側に送信するACKパケットに記載する受信ウィンドウサイズの値を0にする手段が実現される。
なお、特許文献2には、例えば受信履歴更新部726における、図11Aに示したような、送信帯域制御部715が計測したWAN側の送信スループットと、装置に蓄積された中継データサイズに基づいてrwnd527を計算する手段や、図12に示したような、rwnd527の変化をトリガとしてACKパケットを返信する手段について記載がない。上に記載した効果は、図11Aに示すrwnd527の計算方法と、図12に示すACK返信方法とを用いて、初めて可能となる。
図11Bには、LAN側TCPモジュール203の受信履歴更新部726の行うrwnd527計算の別の一例を示したフローチャート図を示す。
全体的な処理の流れは、図11Aと同じであるが、ステップ1111がステップ1118へ変更されており、装置に蓄積された中継データの合計値を求める手法が異なる。WAN送信バッファsbufとLAN受信バッファrbufに蓄積されたデータサイズと、加工中のデータサイズの合計値から、計測した送信スループットとラウンドトリップタイムの積を減算した値を、装置に蓄積された中継データの合計値とする(ステップ1118)。これにより、ラウンドトリップタイムRTTが大きいほど、中継データの合計値が少なく見積もられ、rwndが大きめに設定されて、TCP通信が多くのバッファ量を使うことができるようrwnd527を制御することができ、RTTを考慮した受信ウィンドウサイズrwnd527の計算が可能となる。
図11Bに示したLAN側TCPモジュール203の受信履歴更新部726の行う処理により、装置に蓄積された中継データの合計値と、計測したWAN側の送信スループットと、ラウンドトリップタイムとに基づいて、LAN側に送信するACKパケットに記載する受信ウィンドウサイズの値を計算する手段が実現される。更に、装置に蓄積された及び加工中の中継データの合計値を、計測したWAN側の送信スループットとラウンドトリップタイムの乗算値で減算した値を、計測したWAN側の送信スループットで除算した値が、ある閾値以上になったときに、LAN側に送信するACKパケットに記載する受信ウィンドウサイズの値を0にする手段が実現される。
図11Cには、LAN側TCPモジュール203の受信履歴更新部726の行うrwnd527計算のさらに別の一例を示したフローチャート図を示す。
全体的な処理の流れは、図11Bと同じであるが、ステップ1118がステップ1119とステップ11120へ変更されおり、装置に蓄積された中継データの合計値を求める手法が異なる。まず、ステップ1119において、計測した送信スループットと再送率と、ラウンドとリップタイムに基づいて、係数kを計算する。例えば、送信スループット、ラウンドトリップタイム、再送率が大きくなると、係数kも大きくなるように係数kを求める。より詳細な求め方を図11Dで例示する。更に、ステップ1120において、WAN送信バッファsbufとLAN受信バッファrbufに蓄積されたデータサイズと、加工中のデータサイズを加算した値から、計測した送信スループットとラウンドトリップタイムと係数kの積を減算した値を、装置に蓄積された中継データの合計値とする。これにより、例えば再送率が大きいほど、TCP通信が多くのバッファ量を使うことができるよう、rwnd527を制御することができ、RTTを考慮した受信ウィンドウサイズrwnd527計算が可能となる。例えば、再送率が大きいほどステップ1114で設定されるrwnd527が他の例に比べて大きくなり、端末からのデータを受信してバッファにたまりやすくなる。再送率が大きい場合は再送のためのデータも含めてバッファにためておく必要があり、本例では他の例に比べてバッファに蓄積される量を多めにすることができる。
図11Cに示したLAN側TCPモジュール203の受信履歴更新部726の行う処理により、中継装置に蓄積されたデータのサイズと、WAN側の送信スループットと、ラウンドトリップタイムと、WAN側の再送率とに基づいて、LAN側に送信するACKパケットに記載する受信ウィンドウサイズの値を決定する手段が実現される。更に、WAN側の送信スループットとラウンドトリップタイムとWAN側の再送率から係数を計算し、中継装置に蓄積されたデータのサイズを、WAN側の送信スループットとラウンドトリップタイムと前記係数との乗算値で減算した値を、WAN側の送信スループットで除算した値が、ある閾値以上になったときに、LAN側に送信するACKパケットに記載する受信ウィンドウサイズの値を0にする手段が実現される。
図11Dには、LAN側TCPモジュール203の受信履歴更新部726の行うrwnd527計算の別のより詳細な一例を示したフローチャート図を示す。
rwnd527計算がはじまると(ステップ1100)、基準時刻前の送信帯域old_snd532とRTT平均値wan_rtt519を乗算することで内部変数cを計算し、更に、内部変数kに1を代入する(ステップ1101)。その後、最大セグメントサイズ(1パケットに載せられる最大データサイズ)mssを内部変数cで除算した値が、rts_ratio528のk乗よりも大きいか否かを判定する(ステップ1102)。小さい場合はkに2を加算して(ステップ1103)、ステップ1102を繰り返す。ステップ1102が真の場合は、内部変数cをc=c*k+old_snd*thrに更新する(ステップ1104)。更に、内部変数cが、WAN側送信バッファの蓄積データサイズとLAN側受信バッファの蓄積データサイズと加工中のデータサイズの和wan_right_sbuf526−wan_left_send524+lan_right_recv510−lan_left_rbuf508+lan_wan529よりも大きいか否かを判定する(ステップ1105)。小さい場合は、rwndを0にして(ステップ1108)、終了する(ステップ1109)。ステップ1105が真の場合は、内部変数cと、WAN側送信バッファの蓄積データサイズとLAN側受信バッファの蓄積データサイズと加工中のデータサイズの和wan_right_sbuf526−wan_left_send524+lan_right_recv510−lan_left_rbuf508+lan_wan529と、の差を、rwnd527の値とする(ステップ1106)。更に、rwnd527を右にwan_ws518シフトした値と、65535のどちらか小さい方を、新たなrwnd527の値として(ステップ1107)、終了する(ステップ1109)。
これにより、RTTや再送率が大きいほど、TCP通信が多くのバッファ量を使うことができるよう、rwnd527を制御することができ、RTTを考慮した受信ウィンドウサイズrwnd527計算が可能となる。
図11Dに示した、rwnd値の計算方式により、WAN側のTCP通信の送信スループットold_sndと、再送率rts_ratioと、RTTと、LAN側の未整列データサイズと整列済みデータサイズと、WAN側の送信バッファの未送信データサイズとACK待ちデータサイズと、加工中のデータサイズに基づいて、LAN側の送信端末へ返信するACKパケットに記載する受信ウィンドウサイズ(rwnd)の値を制御することができる。
図11A〜Dに示したrwnd値の計算方式により、WAN側の回線帯域がLAN側の回線帯域よりも小さいときに、LAN側の送信端末のデータの送信しすぎを防止することができる。これにより、WAN側の送信バッファとLAN側の受信バッファが満杯になることによる通信停止時間の長期化およびそれに伴うタイムアウトとコネクション強制切断を防ぐことができる。
更に、図12Bのステップ1206およびステップ1207を備えることで、データパケットの受信が無いときでも、LAN側の送信端末に通知すべきrwndがMSSを超過したら即座に、rwndを記載したACKパケットをLAN側の送信端末に返信できるようになる。これにより、LAN側の送信端末は、LAN側の受信バッファに空きが生じたことを直ちに知り、送信を再開することができる。
図15と図16を用いて、装置101、102の効果を説明する。
図15には、端末111と端末121との間の通信を、装置101、102が中継する際のシーケンス図を示す。図16には、端末111と装置101との間のLAN帯域1601と、装置101と装置102との間のWAN帯域1602の推移を示す。
装置101は、この例ではLAN側に2パケット蓄積可能な受信バッファrbufと、WAN側に3パケット蓄積可能な送信バッファsbufを備える(1501)。端末111から1つ目のデータパケットが送信されると、LAN側の受信バッファにパケットが1つ蓄積される(1502)。1つ目のデータパケット受信後、装置101は、1つ目のデータを受け取ったことを表すACK=1と、WAN側の制御帯域・RTT・再送率とバッファの使用状況から計算したwin_size=3を記載したACKパケットを端末111に向けて返信する。win−sizeが上述のrwndに相当する。LAN側の受信バッファに蓄積された1つ目のデータは、WAN側の送信バッファに移される(1503)。1つ目のデータは、WAN側の送信バッファに移された後、WAN側に向けて送られるが、ここでは廃棄されてしまうものとする。データ廃棄が起きると、WAN側の制御帯域は減少する。
次に、LAN側の端末111から2つ目のデータパケットが送信されると、LAN側の受信バッファにパケットが1つ蓄積される(1504)。2つ目のデータパケット受信後、装置101は、WAN側の制御帯域・RTT・再送率とバッファの使用状況からwin_sizeを計算する。WAN側の制御帯域が減少し、バッファ使用量が増加したので、win_sizeは減少する。装置101は、2つ目のデータを受け取ったことを表すACK=2と、減少したwin_size=2を記載したACKパケットを端末111に向けて返信する。LAN側の受信バッファに蓄積された2つ目のデータは、WAN側の送信バッファに移される(1505)。1つ目のデータが廃棄されて、WAN側の制御帯域が小さいままなので、2つ目のデータは、WAN側の送信バッファに移された後、しばらくはWAN側に向けて送信されずに、蓄積される。
次に、LAN側の端末111から3つ目のデータパケットが送信されると、LAN側の受信バッファにパケットが1つ蓄積される(1506)。3つ目のデータパケット受信後、装置101は、WAN側の制御帯域・RTT・再送率とバッファの使用状況からwin_sizeを計算する。WAN側の制御帯域が減少したままで、バッファ使用量が増加したので、win_sizeは減少する。装置101は、3つ目のデータを受け取ったことを表すACK=3と、減少したwin_size=1を記載したACKパケットを端末111に向けて返信する。LAN側の受信バッファに蓄積された3つ目のデータは、WAN側の送信バッファに移される(1507)。1つ目のデータが廃棄されて、WAN側の制御帯域が小さいままなので、3つ目のデータは、WAN側の送信バッファに移された後、しばらくはWAN側に向けて送信されずに、蓄積される。前回、蓄積されたままだった2つ目のデータが、例えばここでWAN側に向けて送信される。
次に、LAN側の端末111から4つ目のデータパケット1513が送信されると、LAN側の受信バッファにパケットが1つ蓄積される(1508)。4つ目のデータパケット1513受信後、装置101は、WAN側の制御帯域・RTT・再送率とバッファの使用状況からwin_sizeを計算する。WAN側の制御帯域が減少したままで、バッファ使用量が増加したので、win_sizeは減少する。装置101は、4つ目のデータを受け取ったことを表すACK=4と、減少したwin_size=0を記載したACKパケット(1514)を端末111に向けて返信する。
このように、装置101からWAN側の装置102への出力スループットが、LAN側の端末111から装置101への入力スループットよりも相対的に小さい時は、LAN側の受信バッファに空きがあっても、図13に示した従来方式よりも早めにバッファ残存量0であることを示すwin_size=0を記載したACKパケットを端末111に送信する(1516)。win_size=0のACKパケットを受け取った端末111は、LAN側の受信バッファが一杯と判断して、データ送信を停止する。これにより、LAN側の端末111から装置101への入力スループットを小さくすることができ、データ送信停止時のバッファへのデータ蓄積量を少なくすることができる。
LAN側の受信バッファに蓄積された4つ目のデータは、WAN側の送信バッファが一杯なため、移されない(1515)。WAN側の装置102から、データ2に対するACKが戻ってきても、データ1が送信できていないため、WAN側の送信バッファに蓄積されたデータ1〜3は消去されずにそのまま残る(1515)。同様に、その後、装置101から3つ目のデータパケット(1517)が送信されて、データ3に対するACKが戻ってきても、データ1が送信できていないため、WAN側の送信バッファに蓄積されたデータ1〜3は消去されずにそのまま残る(1518)。
データ1を送信してからしばらくたってから、装置101は、データ1を再送する(1519)。その後、装置102からデータ1〜3を受け取ったことを表すACK=3のACKパケット(1520)を受信して初めて、WAN側の送信バッファに蓄積されたデータ1〜3が消去される(1509)。3つ目のデータまで送信できたので、WAN側の制御帯域は回復する。
送受信バッファに蓄積していたデータ1〜3が消去され、データ4だけが残ると、WAN側の制御帯域・RTT・再送率とバッファの使用状況からwin_sizeが再計算される。WAN側の制御帯域が大きく回復し、バッファへの蓄積量が減少したので、win_sizeは増加する。win_sizeが0より大きくなると、即座に、3に増加したwin_size=3を記載したACKパケット(1522)が、端末111に向けて返信される。このように、バッファ残存量に余裕ができて、win_sizeの値が回復すると、即座にACKパケットが送信され、win_sizeの値が通知される(1521)。
その後、LAN側の受信バッファに蓄積された4つ目のデータが、WAN側の送信バッファへ移される(1510)。
次に、LAN側の端末111から5つ目のデータパケットが送信されると、LAN側の受信バッファにパケットが1つ蓄積される(1511)。5つ目のデータパケット受信後、装置101は、WAN側の制御帯域・RTT・再送率とバッファの使用状況からwin_sizeを計算する。バッファ使用量が増加したのでwin_sizeは減少する。5つ目のデータを受け取ったことを表すACK=5と、減少したwin_size=2を記載したACKパケットを端末111に向けて返信する。更に、4つ目のデータをWAN側へ送信すると共に、LAN側の受信バッファに蓄積された5つ目のデータが、WAN側の送信バッファへ移される(1512)。
以上のように、WAN側の回線帯域がLAN側の回線帯域よりも小さく、装置101からWAN側の装置102への出力スループット(1602)が、LAN側の端末111から装置101への入力スループット(1601)よりも小さい時に、装置101は、LAN側の受信バッファとWAN側の送信バッファの残存量が少なくなってくると、早めにwin_size=0を記載したACKパケットを装置111へ送ることで、送信端末111の送信を停止させる。これにより、LAN側の端末111から装置101への入力スループットを少なくすることができ(1601)、データ送信停止時のバッファへのデータ蓄積量を少なくすることができる(1603)。データ蓄積量が少ないため、WAN側の装置102へのデータ送信が進展し、バッファ残存量に余裕ができるまでの時間も短期化し、送信再開までの時間を短くすることができる(1604)。更に、バッファ残存量が回復したときに、直ちに0よりも大きなwin_sizeを送信端末111に通知することで、データ送信を即座に再開させることができる。これらにより、LAN側の送信端末111から装置101への送信停止時間が小さくなり、コネクションが切断されたとLAN側の送信端末111に誤認されることによるコネクション強制切断が起きにくくなる(1604)。加えて、装置101におけるLAN側の受信バッファとWAN側の送信バッファへのデータ蓄積量のゆらぎが小さくなり、底をつきにくくなるため、WAN側の送信帯域を一定に保ちやすくなる(1602)。
上述の本実施の形態の態様により、LAN側とWAN側の2つのTCP通信を中継する中継装置において、WAN側の回線帯域がLAN側の回線帯域よりも小さく、中継装置からWAN側への出力スループットが、LAN側の送信端末から中継装置への入力スループットよりも相対的に小さいときに、LAN側TCP通信向け受信バッファに空きがあっても、早めに、バッファ残存量0であることをLAN側の送信端末へ通知して送信を停止させることができる。これにより、LAN側の送信端末から中継装置への入力スループットが小さくなるので、LAN側のTCP通信の受信バッファとWAN側のTCP通信の送信バッファに、短時間で大量のデータが蓄積され溢れることを防ぐ。加えて、バッファへの蓄積量を少なくすることにより、中継装置のバッファに再び余裕が生じて、通信が再開されるまでの通信停止時間を短縮する。更に、バッファに余裕が生じたときに、そのことを直ちに送信端末に通知することで、通信を即座に再開させ、通信停止時間を短縮する。これらの効果により、LAN側の送信端末と中継装置との間の通信停止時間が短縮され、通信が切断されたとLAN側の送信端末に誤認され、タイムアウトにより、コネクションが強制切断されてしまうことを防ぐ。
本発明は、例えば端末間の通信を中継する通信装置に利用可能である。
101 装置
102 装置
103 装置
110 ネットワーク
121 端末
200 通信装置
203、209 TCPモジュール
204、208 受信バッファ
205、207 送信バッファ
206 プロキシ
212 状態テーブル
213 帯域テーブル
301 ポインタ
400 ヘッダデータ
520 エントリ
601 機能ブロック
704 パケット再送部
705 送信履歴更新部
715 送信帯域制御部
726 受信履歴更新部

Claims (14)

  1. 第1網と第2網のTCP通信を中継する通信装置において、
    第1網から受信し、第2網へ中継する中継データを一時的に蓄積するバッファと、
    前記バッファに蓄積した中継データのサイズを計算する受信部と、
    第2網への実際の送信スループットを計測する送信帯域制御部と
    を備え、
    前記受信部は、
    中継データのサイズと、送信スループットとに基づいて、第1網側のTCP通信で送信するACKパケットに記載する受信ウィンドウサイズの値を計算する前記通信装置。
  2. 請求項1に記載の通信装置において、
    前記バッファが空いていても残存量が所定量以下であれば残存量をゼロとして、前記ACKパケットに記載する受信ウィンドウサイズの値を定める通信装置。
  3. 請求項1に記載の通信装置において、
    前記受信部は、
    中継データのサイズを、送信スループットで除算し、
    中継データのサイズを送信スループットで除算した値が、予め定められた閾値以上の場合に、
    第1網側のTCP通信で送信するACKパケットに記載する前記受信ウィンドウサイズの値を0にすることを特徴とする通信装置。
  4. 請求項1に記載の通信装置において、
    第2網でのラウンドトリップタイムを記録する第1記憶領域
    をさらに備え、
    前記受信部は、
    前記中継データのサイズと、前記送信スループットと、前記ラウンドトリップタイムとに基づいて、第1網側のTCP通信で送信するACKパケットに記載する前記受信ウィンドウサイズの値を計算することを特徴とする通信装置。
  5. 請求項4に記載の通信装置において、
    前記受信部は、
    前記中継データのサイズから、前記送信スループットと前記ラウンドトリップタイムの乗算値を減算した値を、送信スループットで除算した値が、予め定められた閾値以上の場合に、
    第1網側のTCP通信で送信するACKパケットに記載する前記受信ウィンドウサイズの値を0にすることを特徴とする通信装置。
  6. 請求項4に記載の通信装置において、
    第2網側のTCP通信においてパケット廃棄を検出したときに、廃棄パケットを再送するパケット再送部
    をさらに備え、
    前記送信帯域制御部は、
    第2網側のTCP通信での再送スループットを計測し、計測した再送スループットを送信スループットで除算することで再送率を計算し、
    前記受信部は、
    前記中継データのサイズと、前記送信スループットと、前記ラウンドトリップタイムと、再送率とに基づいて、第1網側のTCP通信で送信するACKパケットに記載する前記受信ウィンドウサイズの値を決定することを特徴とする通信装置。
  7. 請求項6に記載の通信装置において、
    前記受信部は、
    前記送信スループットと前記ラウンドトリップタイムと前記再送率の増加に伴い大きくなる係数を計算し、
    前記中継データのサイズから、前記送信スループットとラウンドトリップタイムと前記係数との乗算値を減算した値を、送信スループットで除算した値が、予め定められた閾値以上の場合に、
    第1網側のTCP通信で送信するACKパケットに記載する前記受信ウィンドウサイズの値を0にすることを特徴とする通信装置。
  8. 請求項6に記載の通信装置において、
    インターバル時間を保持する第2記憶領域と、
    現在時刻との基準時刻との差がインターバル時間よりも大きいときに、該インターバル時間が加算される該基準時刻を記録する第3記憶領域と、
    基準時刻後の再送スループットと、基準時刻前の送信スループットを記録する第4記憶領域と
    をさらに備え、
    前記受信部は、
    基準時刻後の再送スループットを、基準時刻前の送信スループットで除算することで再送率を求めることを特徴とする通信装置。
  9. 請求項1に記載の通信装置において、
    前記バッファは、
    第1網からの受信データを整列されるまで蓄積しておき、整列後も読み出されるまで蓄積しておく第1網側受信バッファと、
    第2網への送信データを蓄積しておき、データ送信後も第2網側からACKを受信するまで蓄積しておく第2網側送信バッファと
    を有し、
    前記受信部は、
    前記第1網側受信バッファに蓄積された整列済みデータと未整列データのサイズと、前記第2網側送信バッファに蓄積された未送信データとACK待ちデータのサイズとを加算することで、蓄積された中継データのサイズを計算することを特徴とする通信装置。
  10. 請求項9に記載の通信装置において、
    前記第1網側受信バッファの整列済みデータを読出し、前記第2側送信バッファへ未送信データとして書き込むデータ転送部
    をさらに備え、
    前記受信部は、
    前記データ転送部が処理中のデータのサイズをさらに加算することで、中継データのサイズを計算することを特徴とする通信装置。
  11. 請求項10に記載の通信装置において、
    前記データ転送部が、データ転送中にデータの加工を行うことを特徴とする通信装置。
  12. 請求項1に記載の通信装置において、
    前記受信部は、
    第1網側のTCP通信で通知すべき受信ウィンドウサイズの値が予め定められた閾値未満に減少した後、再び該閾値以上に増加したときに、第1網側のTCP通信において受信パケットが無いときでも、第1網側のTCP通信での新たな受信ウィンドウサイズの値を求めて、該受信ウィンドウサイズの値を記載したACKパケットを送信することを特徴とする通信装置。
  13. 請求項3に記載の通信装置において、
    前記受信部は、
    第1網側のTCP通信にて受信ウィンドウサイズの値を0にしたACKパケットを送信した後に、未受信データを含むパケットを受信したときに、
    第1網側のTCP通信での受信シーケンス番号をインクリメントして、受信ウィンドウサイズを0にしたACKパケットを送信することを特徴とする通信装置。
  14. 請求項9に記載の通信装置において、
    前記受信部は、
    第1網側のTCP通信にて受信ウィンドウサイズの値を0にしたACKパケットを送信した後に、未受信データを含むパケットを受信したときに、
    前記第1網側の受信バッファに空きがあれば、受信したパケットを該第1網側受信バッファに蓄積して、
    第1網側のTCP通信での受信シーケンス番号をインクリメントして、受信ウィンドウサイズを0にしたACKパケットを送信することを特徴とする通信装置。
JP2011163020A 2011-07-26 2011-07-26 通信装置 Expired - Fee Related JP5258938B2 (ja)

Priority Applications (5)

Application Number Priority Date Filing Date Title
JP2011163020A JP5258938B2 (ja) 2011-07-26 2011-07-26 通信装置
EP12817123.8A EP2738984A4 (en) 2011-07-26 2012-03-01 COMMUNICATION DEVICE
US13/820,029 US8811419B2 (en) 2011-07-26 2012-03-01 Communication device
CN2012800027094A CN103081419A (zh) 2011-07-26 2012-03-01 通信装置
PCT/JP2012/055260 WO2013014963A1 (ja) 2011-07-26 2012-03-01 通信装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2011163020A JP5258938B2 (ja) 2011-07-26 2011-07-26 通信装置

Publications (2)

Publication Number Publication Date
JP2013027007A true JP2013027007A (ja) 2013-02-04
JP5258938B2 JP5258938B2 (ja) 2013-08-07

Family

ID=47600823

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2011163020A Expired - Fee Related JP5258938B2 (ja) 2011-07-26 2011-07-26 通信装置

Country Status (5)

Country Link
US (1) US8811419B2 (ja)
EP (1) EP2738984A4 (ja)
JP (1) JP5258938B2 (ja)
CN (1) CN103081419A (ja)
WO (1) WO2013014963A1 (ja)

Cited By (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2015022809A1 (ja) * 2013-08-13 2015-02-19 株式会社日立製作所 通信装置及び送信帯域制御方法
WO2017051860A1 (ja) * 2015-09-25 2017-03-30 日本電気株式会社 データ通信装置、データ通信制御方法及びプログラム
WO2018056406A1 (ja) * 2016-09-23 2018-03-29 日本電気株式会社 プロトコル終端装置、中継方法、プログラム
US10412017B2 (en) 2017-09-13 2019-09-10 Kabushiki Kaisha Toshiba Transfer device, transfer method, and computer program product
WO2019203209A1 (ja) * 2018-04-17 2019-10-24 日本電気株式会社 中継装置、データ中継方法及びプログラム
JP2021027427A (ja) * 2019-08-01 2021-02-22 株式会社デンソー 電子制御装置
JP7394321B2 (ja) 2020-03-11 2023-12-08 パナソニックIpマネジメント株式会社 路側機、車載器、通信システム、および通信方法

Families Citing this family (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN104184794B (zh) * 2013-05-27 2019-01-08 韩国电子通信研究院 数据包大小随机化方法
US9954790B2 (en) * 2014-11-04 2018-04-24 Electronics & Telecommunications Research Institute Method for flow control in network
KR102442040B1 (ko) * 2014-11-04 2022-09-08 한국전자통신연구원 네트워크에서 플로우 컨트롤 방법
CN106576100B (zh) * 2015-03-26 2019-08-16 华为技术有限公司 Tcp网络代理配置方法和装置
CN106101161B (zh) 2016-08-26 2019-02-01 网宿科技股份有限公司 一种用于处理伪造的tcp数据包的方法和系统
WO2018041366A1 (en) * 2016-09-02 2018-03-08 Telefonaktiebolaget Lm Ericsson (Publ) Tcp proxy using a communication distance indicator
CN107708199B (zh) * 2017-09-26 2021-01-26 南京哈卢信息科技有限公司 一种提高低功耗无线蜂窝网下行可靠性的方法
US11470569B2 (en) * 2017-11-21 2022-10-11 Qualcomm Incorporated Uplink transmissions without uplink timing control and measurement
CN117793964A (zh) * 2022-09-21 2024-03-29 中兴通讯股份有限公司 核心网数据传输方法、电子设备及计算机可读存储介质

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH10262054A (ja) * 1997-03-18 1998-09-29 Nec Corp Atm網における端末間フロー制御方法
JP2009105801A (ja) * 2007-10-25 2009-05-14 Fujitsu Ltd フロー制御方法及びwan最適化装置
JP2011035608A (ja) * 2009-07-31 2011-02-17 Nippon Telegr & Teleph Corp <Ntt> エッジノード、ウィンドウサイズ制御方法およびプログラム

Family Cites Families (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6249530B1 (en) * 1997-12-22 2001-06-19 Sun Microsystems, Inc. Network bandwidth control
EP1151375A4 (en) 1999-02-02 2003-10-22 Mentat Inc INTERNET VIA SATELLITE
US6975647B2 (en) * 2001-11-13 2005-12-13 Ems Technologies Canada, Ltd Enhancements for TCP performance enhancing proxies
US7277963B2 (en) * 2002-06-26 2007-10-02 Sandvine Incorporated TCP proxy providing application layer modifications
JP4650792B2 (ja) * 2003-12-03 2011-03-16 日本電気株式会社 セッション中継装置、セッション中継方法及びセッション中継プログラム
US7616644B2 (en) * 2004-02-25 2009-11-10 Nokia Corporation Method and apparatus providing a protocol to enable a wireless TCP session using a split TCP connection
JP4510524B2 (ja) 2004-06-03 2010-07-28 Kddi株式会社 データ通信装置
US8150995B2 (en) * 2005-09-30 2012-04-03 Microsoft Corporation Receive window auto-tuning
JP4702151B2 (ja) * 2006-04-10 2011-06-15 パナソニック株式会社 ネットワーク中継装置およびネットワーク通信システム
TW200816719A (en) * 2006-08-23 2008-04-01 Matsushita Electric Ind Co Ltd Communication equipment
US20100054123A1 (en) * 2008-08-30 2010-03-04 Liu Yong Method and device for hign utilization and efficient flow control over networks with long transmission latency
JP2010226455A (ja) * 2009-03-24 2010-10-07 Sony Corp ネットワーク通信装置
WO2011033894A1 (ja) 2009-09-16 2011-03-24 株式会社日立製作所 端末間の通信を高速化する通信装置および通信システム
EP2642702B1 (en) 2010-11-16 2019-04-03 Hitachi, Ltd. Communication apparatus and communication system

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH10262054A (ja) * 1997-03-18 1998-09-29 Nec Corp Atm網における端末間フロー制御方法
JP2009105801A (ja) * 2007-10-25 2009-05-14 Fujitsu Ltd フロー制御方法及びwan最適化装置
JP2011035608A (ja) * 2009-07-31 2011-02-17 Nippon Telegr & Teleph Corp <Ntt> エッジノード、ウィンドウサイズ制御方法およびプログラム

Cited By (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2015022809A1 (ja) * 2013-08-13 2015-02-19 株式会社日立製作所 通信装置及び送信帯域制御方法
WO2017051860A1 (ja) * 2015-09-25 2017-03-30 日本電気株式会社 データ通信装置、データ通信制御方法及びプログラム
JPWO2017051860A1 (ja) * 2015-09-25 2018-07-12 日本電気株式会社 データ通信装置、データ通信制御方法及びプログラム
TWI649991B (zh) * 2015-09-25 2019-02-01 日商日本電氣股份有限公司 資料通信裝置、資料通信控制方法及程式
WO2018056406A1 (ja) * 2016-09-23 2018-03-29 日本電気株式会社 プロトコル終端装置、中継方法、プログラム
JPWO2018056406A1 (ja) * 2016-09-23 2019-07-04 日本電気株式会社 プロトコル終端装置、中継方法、プログラム
US10412017B2 (en) 2017-09-13 2019-09-10 Kabushiki Kaisha Toshiba Transfer device, transfer method, and computer program product
WO2019203209A1 (ja) * 2018-04-17 2019-10-24 日本電気株式会社 中継装置、データ中継方法及びプログラム
JPWO2019203209A1 (ja) * 2018-04-17 2021-04-22 日本電気株式会社 中継装置、データ中継方法及びプログラム
JP2021027427A (ja) * 2019-08-01 2021-02-22 株式会社デンソー 電子制御装置
JP7172909B2 (ja) 2019-08-01 2022-11-16 株式会社デンソー 電子制御装置
JP7394321B2 (ja) 2020-03-11 2023-12-08 パナソニックIpマネジメント株式会社 路側機、車載器、通信システム、および通信方法

Also Published As

Publication number Publication date
JP5258938B2 (ja) 2013-08-07
EP2738984A4 (en) 2015-03-11
EP2738984A1 (en) 2014-06-04
US8811419B2 (en) 2014-08-19
WO2013014963A1 (ja) 2013-01-31
CN103081419A (zh) 2013-05-01
US20140140352A1 (en) 2014-05-22

Similar Documents

Publication Publication Date Title
JP5258938B2 (ja) 通信装置
JP5816718B2 (ja) 通信装置、通信システム、およびデータ通信の中継方法
US9231829B2 (en) Communication device
JP5020076B2 (ja) 低頻度ackのシステムに適した高性能tcp
US8681617B2 (en) Communication device
JP5832335B2 (ja) 通信装置および通信システム
JP2009055114A (ja) 通信装置、通信システム、転送効率向上方法及び転送効率向上プログラム
US10574706B2 (en) Method and system for upload optimization
JP7067544B2 (ja) 通信システム、通信装置、方法およびプログラム
JP4229807B2 (ja) データ転送方法とtcpプロキシ装置およびそれを用いたネットワークシステム
US9130843B2 (en) Method and apparatus for improving HTTP adaptive streaming performance using TCP modifications at content source
CA2940077C (en) Buffer bloat control
JP2016201579A (ja) 通信装置及び送信帯域制御方法
JP5737756B2 (ja) 通信装置およびパケット廃棄軽減方法
WO2017061075A1 (ja) 制御システム、可用帯域推定システム、装置、方法およびプログラム
JP2014135575A (ja) 通信装置、及び、送信帯域の制御方法

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20130307

A871 Explanation of circumstances concerning accelerated examination

Free format text: JAPANESE INTERMEDIATE CODE: A871

Effective date: 20130307

TRDD Decision of grant or rejection written
A975 Report on accelerated examination

Free format text: JAPANESE INTERMEDIATE CODE: A971005

Effective date: 20130402

A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20130409

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20130423

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20160502

Year of fee payment: 3

R150 Certificate of patent or registration of utility model

Free format text: JAPANESE INTERMEDIATE CODE: R150

LAPS Cancellation because of no payment of annual fees