JP2013027007A - 通信装置 - Google Patents
通信装置 Download PDFInfo
- 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
Links
Images
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L47/00—Traffic control in data switching networks
- H04L47/10—Flow control; Congestion control
- H04L47/27—Evaluation 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
【解決手段】WAN側のTCP通信にて計測した送信スループット・廃棄率・RTTと、LAN側の受信バッファの未整列データサイズと整列済みデータサイズとWAN側の送信バッファの未送信データサイズとACK待ちデータサイズとの合計値に基づいて、LAN側の送信端末へ返信するACKパケットに記載する受信ウィンドウサイズ(rwnd)の値を制御する。更に、rwndが減少して予め定めた閾値を下回り、再び超過したときに、受信ウィンドウサイズ(rwnd)の値を記載したACKパケットをLAN側の送信端末へ即座に送信する。
【選択図】図1
Description
或る拠点に存在する端末が、別の拠点に存在する端末と通信する場合は、自拠点LAN(Local Area Network)とWANを接続する回線と、WANと別拠点LANを接続する回線とを経由して通信が行われる。これらの回線は、契約帯域によって、使用可能な帯域幅が制限されている。
特許文献1では、輻輳ウィンドウサイズの値に基づいて、送信バッファに蓄積するデータサイズや新たに蓄積可能なデータサイズを制御する方法が記載されている。
特許文献2では、帯域幅と通信遅延の乗算値に基づいて、バッファのデータサイズを制御する方法が記載されている。
第1網と第2網とを介するTCP通信を中継する通信装置において、
第1網から受信し、第2網へ中継する中継データを一時的に蓄積するバッファと、
前記バッファに蓄積した中継データのサイズを計算する受信部と、
第2網への実際の送信スループットを計測する送信帯域制御部と
を備え、
前記受信部は、
中継データのサイズと、送信スループットとに基づいて、第1網側のTCP通信で送信するACKパケットに記載する受信ウィンドウサイズの値を計算する前記通信装置が提供される。
本態様により、バッファに余裕ができたときに、通信が即座に再開され、通信停止時間を短縮することができる。
まず、図13と図14を用いて、従来の中継装置1310、1320の課題を説明する。
図13には、端末111と端末121との間の通信を、従来の装置1310、1320が中継する際のシーケンス図を示す。図14には、端末111と装置1310との間のLAN帯域1401と、装置1310と装置1320との間のWAN帯域1402の推移を示す。
装置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は、データパケットを受信する毎に、受信バッファ残存量を記載したACKパケットを、LAN側の送信端末111に向けて送信する(1315)。
その後、装置1310から3つ目のデータがWAN側へ送信され(1334)、3つ目のデータに対するACKが戻ってきても(1335)、データ1が到達できていないため、WAN側の送信バッファに蓄積されたデータ1〜3は消去されずにそのまま残る(1316)。
以上、記載したように、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)によりコネクションを強制切断してしまう、という課題もあった。
本実施の形態は、これらの従来の方式では解決できなかった課題を解決する。
通信装置(中継装置ともいう。以下、単に装置と記す)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通信を中継してもよい。また、端末、装置及びネットワークの数は図示以外にも適宜の数を備えても良い。
装置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個は、それぞれ異なる数でもよい。
WAN側のTCPモジュール209は、送信帯域制御部715と、送信履歴更新部705と、を備える。送信帯域制御部715は、送信スループット(531、532)の情報を状態テーブル212に蓄積する。送信履歴更新部705は、WAN側送信バッファ207から読み出した送信データサイズに応じて、状態テーブル212のバッファ管理ポインタ(508〜510、515〜517、521〜526)の情報を更新する。
パケットは、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)を含む。
受信バッファ(204、208)は、受信したデータの先頭(新しいデータ)を示すポインタright_recv303と、整列済みデータと未整列データの境界を示すポインタleft_recv302と、プロキシ206による読出し済データと未読出しデータの境界を示すleft_rbuf301と、を管理する。
状態テーブル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とを有する。
プロキシ206は、例えばLAN側の受信バッファrbuf204からデータを読出すデータ読出し部601と、読み出したデータに対して圧縮・解凍・暗号化・復号・削除・複製・追記などの加工を行うデータ加工部602と、加工済みデータをWAN側の送信バッファsbuf207へ書き込むデータ書き込み部603と、WAN側の受信バッファrbuf208からデータを読み出すデータ読出し部606と、読み出したデータに対して圧縮・解凍・暗号化・復号・削除・複製・追記などの加工を行うデータ加工部605と、加工済みデータをLAN側の送信バッファsbuf205へ書き込むデータ書き込み部604とを有する。データ加工部602とデータ加工部605との間で、データのやり取りをする場合もある。データ加工部602、605の処理は、上述の例以外にも、データに対する適宜の処理でもよい。
図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)ヘッダ、等などを使用してもよい。推定の手法は適宜の手法を用いてよい。
データ読出し部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)ヘッダ、等などを使用してもよい。
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とを有する。
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とを有する。
帯域テーブル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を用いる場合もある。
送信帯域制御部715は、帯域テーブル213に記載された値を用いて制御帯域(token)を決定し、トークン更新部717へ伝える。更に、状態テーブル212のrts_ratio528を更新する。
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は、処理が始まると(ステップ1211)、データパケットの受信があるか否かをポーリングして確認する(ステップ1212)。受信パケットがある場合は、新たなrwnd527を求めてTCPヘッダ420のwin_size427に記載したACKパケットをLAN側へ返信する(ステップ1214)。ステップ1212において、受信パケットが無い場合でも、rwnd527が予め定めた閾値未満から閾値以上に増加したことを確認した場合は(ステップ1213)、新たなrwnd527を求めてTCPヘッダ420のwin_size427に記載したACKパケットをLAN側へ返信する(ステップ1214)。ステップ1213にて、変化が確認されなかった場合は、ステップ1212へと戻る。
受信履歴更新部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)。
図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と同じであるが、ステップ1111がステップ1118へ変更されており、装置に蓄積された中継データの合計値を求める手法が異なる。WAN送信バッファsbufとLAN受信バッファrbufに蓄積されたデータサイズと、加工中のデータサイズの合計値から、計測した送信スループットとラウンドトリップタイムの積を減算した値を、装置に蓄積された中継データの合計値とする(ステップ1118)。これにより、ラウンドトリップタイムRTTが大きいほど、中継データの合計値が少なく見積もられ、rwndが大きめに設定されて、TCP通信が多くのバッファ量を使うことができるようrwnd527を制御することができ、RTTを考慮した受信ウィンドウサイズrwnd527の計算が可能となる。
全体的な処理の流れは、図11Bと同じであるが、ステップ1118がステップ1119とステップ11120へ変更されおり、装置に蓄積された中継データの合計値を求める手法が異なる。まず、ステップ1119において、計測した送信スループットと再送率と、ラウンドとリップタイムに基づいて、係数kを計算する。例えば、送信スループット、ラウンドトリップタイム、再送率が大きくなると、係数kも大きくなるように係数kを求める。より詳細な求め方を図11Dで例示する。更に、ステップ1120において、WAN送信バッファsbufとLAN受信バッファrbufに蓄積されたデータサイズと、加工中のデータサイズを加算した値から、計測した送信スループットとラウンドトリップタイムと係数kの積を減算した値を、装置に蓄積された中継データの合計値とする。これにより、例えば再送率が大きいほど、TCP通信が多くのバッファ量を使うことができるよう、rwnd527を制御することができ、RTTを考慮した受信ウィンドウサイズrwnd527計算が可能となる。例えば、再送率が大きいほどステップ1114で設定される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)。
図11Dに示した、rwnd値の計算方式により、WAN側のTCP通信の送信スループットold_sndと、再送率rts_ratioと、RTTと、LAN側の未整列データサイズと整列済みデータサイズと、WAN側の送信バッファの未送信データサイズとACK待ちデータサイズと、加工中のデータサイズに基づいて、LAN側の送信端末へ返信するACKパケットに記載する受信ウィンドウサイズ(rwnd)の値を制御することができる。
図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側の受信バッファに蓄積された4つ目のデータが、WAN側の送信バッファへ移される(1510)。
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網と第2網のTCP通信を中継する通信装置において、
第1網から受信し、第2網へ中継する中継データを一時的に蓄積するバッファと、
前記バッファに蓄積した中継データのサイズを計算する受信部と、
第2網への実際の送信スループットを計測する送信帯域制御部と
を備え、
前記受信部は、
中継データのサイズと、送信スループットとに基づいて、第1網側のTCP通信で送信するACKパケットに記載する受信ウィンドウサイズの値を計算する前記通信装置。 - 請求項1に記載の通信装置において、
前記バッファが空いていても残存量が所定量以下であれば残存量をゼロとして、前記ACKパケットに記載する受信ウィンドウサイズの値を定める通信装置。 - 請求項1に記載の通信装置において、
前記受信部は、
中継データのサイズを、送信スループットで除算し、
中継データのサイズを送信スループットで除算した値が、予め定められた閾値以上の場合に、
第1網側のTCP通信で送信するACKパケットに記載する前記受信ウィンドウサイズの値を0にすることを特徴とする通信装置。 - 請求項1に記載の通信装置において、
第2網でのラウンドトリップタイムを記録する第1記憶領域
をさらに備え、
前記受信部は、
前記中継データのサイズと、前記送信スループットと、前記ラウンドトリップタイムとに基づいて、第1網側のTCP通信で送信するACKパケットに記載する前記受信ウィンドウサイズの値を計算することを特徴とする通信装置。 - 請求項4に記載の通信装置において、
前記受信部は、
前記中継データのサイズから、前記送信スループットと前記ラウンドトリップタイムの乗算値を減算した値を、送信スループットで除算した値が、予め定められた閾値以上の場合に、
第1網側のTCP通信で送信するACKパケットに記載する前記受信ウィンドウサイズの値を0にすることを特徴とする通信装置。 - 請求項4に記載の通信装置において、
第2網側のTCP通信においてパケット廃棄を検出したときに、廃棄パケットを再送するパケット再送部
をさらに備え、
前記送信帯域制御部は、
第2網側のTCP通信での再送スループットを計測し、計測した再送スループットを送信スループットで除算することで再送率を計算し、
前記受信部は、
前記中継データのサイズと、前記送信スループットと、前記ラウンドトリップタイムと、再送率とに基づいて、第1網側のTCP通信で送信するACKパケットに記載する前記受信ウィンドウサイズの値を決定することを特徴とする通信装置。 - 請求項6に記載の通信装置において、
前記受信部は、
前記送信スループットと前記ラウンドトリップタイムと前記再送率の増加に伴い大きくなる係数を計算し、
前記中継データのサイズから、前記送信スループットとラウンドトリップタイムと前記係数との乗算値を減算した値を、送信スループットで除算した値が、予め定められた閾値以上の場合に、
第1網側のTCP通信で送信するACKパケットに記載する前記受信ウィンドウサイズの値を0にすることを特徴とする通信装置。 - 請求項6に記載の通信装置において、
インターバル時間を保持する第2記憶領域と、
現在時刻との基準時刻との差がインターバル時間よりも大きいときに、該インターバル時間が加算される該基準時刻を記録する第3記憶領域と、
基準時刻後の再送スループットと、基準時刻前の送信スループットを記録する第4記憶領域と
をさらに備え、
前記受信部は、
基準時刻後の再送スループットを、基準時刻前の送信スループットで除算することで再送率を求めることを特徴とする通信装置。 - 請求項1に記載の通信装置において、
前記バッファは、
第1網からの受信データを整列されるまで蓄積しておき、整列後も読み出されるまで蓄積しておく第1網側受信バッファと、
第2網への送信データを蓄積しておき、データ送信後も第2網側からACKを受信するまで蓄積しておく第2網側送信バッファと
を有し、
前記受信部は、
前記第1網側受信バッファに蓄積された整列済みデータと未整列データのサイズと、前記第2網側送信バッファに蓄積された未送信データとACK待ちデータのサイズとを加算することで、蓄積された中継データのサイズを計算することを特徴とする通信装置。 - 請求項9に記載の通信装置において、
前記第1網側受信バッファの整列済みデータを読出し、前記第2側送信バッファへ未送信データとして書き込むデータ転送部
をさらに備え、
前記受信部は、
前記データ転送部が処理中のデータのサイズをさらに加算することで、中継データのサイズを計算することを特徴とする通信装置。 - 請求項10に記載の通信装置において、
前記データ転送部が、データ転送中にデータの加工を行うことを特徴とする通信装置。 - 請求項1に記載の通信装置において、
前記受信部は、
第1網側のTCP通信で通知すべき受信ウィンドウサイズの値が予め定められた閾値未満に減少した後、再び該閾値以上に増加したときに、第1網側のTCP通信において受信パケットが無いときでも、第1網側のTCP通信での新たな受信ウィンドウサイズの値を求めて、該受信ウィンドウサイズの値を記載したACKパケットを送信することを特徴とする通信装置。 - 請求項3に記載の通信装置において、
前記受信部は、
第1網側のTCP通信にて受信ウィンドウサイズの値を0にしたACKパケットを送信した後に、未受信データを含むパケットを受信したときに、
第1網側のTCP通信での受信シーケンス番号をインクリメントして、受信ウィンドウサイズを0にしたACKパケットを送信することを特徴とする通信装置。 - 請求項9に記載の通信装置において、
前記受信部は、
第1網側のTCP通信にて受信ウィンドウサイズの値を0にしたACKパケットを送信した後に、未受信データを含むパケットを受信したときに、
前記第1網側の受信バッファに空きがあれば、受信したパケットを該第1網側受信バッファに蓄積して、
第1網側のTCP通信での受信シーケンス番号をインクリメントして、受信ウィンドウサイズを0にしたACKパケットを送信することを特徴とする通信装置。
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)
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)
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)
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)
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 |
-
2011
- 2011-07-26 JP JP2011163020A patent/JP5258938B2/ja not_active Expired - Fee Related
-
2012
- 2012-03-01 EP EP12817123.8A patent/EP2738984A4/en not_active Withdrawn
- 2012-03-01 WO PCT/JP2012/055260 patent/WO2013014963A1/ja active Application Filing
- 2012-03-01 US US13/820,029 patent/US8811419B2/en not_active Expired - Fee Related
- 2012-03-01 CN CN2012800027094A patent/CN103081419A/zh active Pending
Patent Citations (3)
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)
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 |