JP5264966B2 - 通信装置 - Google Patents

通信装置 Download PDF

Info

Publication number
JP5264966B2
JP5264966B2 JP2011163047A JP2011163047A JP5264966B2 JP 5264966 B2 JP5264966 B2 JP 5264966B2 JP 2011163047 A JP2011163047 A JP 2011163047A JP 2011163047 A JP2011163047 A JP 2011163047A JP 5264966 B2 JP5264966 B2 JP 5264966B2
Authority
JP
Japan
Prior art keywords
tcp
bandwidth
communication
transmission
data
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.)
Expired - Fee Related
Application number
JP2011163047A
Other languages
English (en)
Other versions
JP2013027010A (ja
Inventor
隆史 磯部
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
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 JP2011163047A priority Critical patent/JP5264966B2/ja
Priority to CN201280002708XA priority patent/CN103098422A/zh
Priority to EP12818266.4A priority patent/EP2738983A4/en
Priority to US13/819,839 priority patent/US8681617B2/en
Priority to PCT/JP2012/055259 priority patent/WO2013014962A1/ja
Publication of JP2013027010A publication Critical patent/JP2013027010A/ja
Application granted granted Critical
Publication of JP5264966B2 publication Critical patent/JP5264966B2/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/11Identifying congestion
    • 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/19Flow control; Congestion control at layers above the network layer
    • H04L47/193Flow control; Congestion control at layers above the network layer at the transport layer, e.g. TCP related
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L69/00Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
    • H04L69/16Implementation or adaptation of Internet protocol [IP], of transmission control protocol [TCP] or of user datagram protocol [UDP]
    • H04L69/161Implementation details of TCP/IP or UDP/IP stack architecture; Specification of modified or new header fields
    • H04L69/162Implementation details of TCP/IP or UDP/IP stack architecture; Specification of modified or new header fields involving adaptations of sockets based mechanisms
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L69/00Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
    • H04L69/16Implementation or adaptation of Internet protocol [IP], of transmission control protocol [TCP] or of user datagram protocol [UDP]
    • H04L69/163In-band adaptation of TCP data exchange; In-band control procedures

Landscapes

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

Description

本発明は、通信装置に係り、特に、端末間の通信帯域を制御する通信装置に関する。
クラウド等に用いられる拠点間の通信網として、IP−VPN(Internet Protocol− Virtual Private Network)技術等を用いたWAN(Wide Area Network)を用いることが、一般的になっている。
或る拠点に存在する端末が、別の拠点に存在する端末と通信する場合は、自拠点LANとWANを接続する回線と、WANと別拠点LANを接続する回線とを経由して通信が行われる。これらの回線は、契約帯域によって、使用可能な帯域幅が制限されている。
端末間の通信では、TCPを用いるのが一般的である。TCP通信では、送信端末が送信したデータに対して、受信端末が受信済みデータの位置を送信端末にフィードバック通知する。送信端末は、フィードバック通知される受信済みデータの位置が増加しなくなると、廃棄検出と判定する。
さらに、送信端末は、輻輳ウィンドウサイズ(受信したことを受信端末から通知されなくても送信可能なデータサイズ)と呼ばれるパラメータを管理しており、RTT(Round Trip Time)や廃棄検出の有無に応じて、輻輳ウィンドウサイズを変化させる。
RTT増加時や廃棄検出時にネットワークが混雑していると判定して、ウィンドウサイズを減少させることで、送信帯域を間接的に減少させて、ネットワークの混雑を回避する。また、RTT減少時や廃棄が無い時にネットワークが空いていると判定して、ウィンドウサイズを増加させることで、送信帯域を間接的に増加させて、ネットワークの回線帯域を有効利用する。
RTTが大きいほど、ウィンドウサイズが増加しにくくなり、RTTの異なる通信が1つの回線を共有する際に、割り当てられる帯域に不公平が生じる場合がある。
以上のように、TCPを用いた通信では、送信帯域がRTTと廃棄率に大きく左右される。
RTTと廃棄検出以外に、過去の送信帯域と直近の再送帯域を組み合わせて帯域を制御したり、装置間で交換したコネクション数の情報を用いて帯域を制御したりする技術もある(特許文献1)。
国際公開05/00666号
TCPを用いた通信では、送信帯域がRTTと廃棄率に大きく左右されるため、WANのようなRTTが大きく、ホップ数が大きく廃棄発生箇所が多い環境で、契約帯域を大幅に下回る送信帯域しか得られない場合がある。更に、複数のTCP通信の間で回線帯域が公平に割り当てられない。
本発明は、以上の点に鑑み、TCPを用いた通信において、WANのようなRTTが大きく、ホップ数が大きく廃棄発生箇所が多い環境で、送信帯域が契約帯域を大幅に下回ることを防ぐ通信装置を提供することを目的とする。
上記課題を解決するために、本願発明の一態様では、各拠点におけるLANからWANへのアクセス回線部分に設置された装置が、2つのTCP通信を中継するTCP変換部を含むカードを複数備え、カード内のTCP変換部が、ある拠点の端末と装置の間のTCP通信、2つの装置間のTCP通信、装置と別拠点の端末の間のTCP通信を中継する手段と、装置内の複数のTCP変換部の間で、データ送信中のコネクション数とデータ受信中のコネクション数の情報を交換する手段と、データ送信中のコネクション数とデータ受信中のコネクション数の合計数を計算する手段と、データ受信中のコネクション数の合計数とWANへのアクセス回線帯域の情報を、対向装置内のTCP変換部に対して、TCPコネクション毎に通知する手段と、受信側端末に接続された装置内のTCP変換部が、送信側端末に接続された装置内のTCP変換部に対して廃棄箇所を、TCPコネクション毎にフィードバック通知する手段と、送信側端末に接続された装置内のTCP変換部が、フィードバック通知された廃棄箇所を再送する手段と、送信側端末に接続された装置内のカードが、直近の再送帯域と、それ以前の送信帯域と、自装置のデータ送信中のコネクション数の合計数とWANへのアクセス回線帯域と、対向装置から通知されたデータ受信中のコネクション数の合計数とWANへのアクセス回線帯域と、に基づいて制御帯域を決定する手段と、を備える態様とする。
上述の態様により、送信帯域がRTTと廃棄率に大きく左右されなくなり、WANのようなRTTが大きく、ホップ数が大きく廃棄発生箇所が多い環境で、実効帯域が改善する。更に、複数のTCP通信の間で回線帯域が公平に割り当てられる。
本発明の解決手段によると、
TCP通信を中継するTCP変換部を有するカードを複数備え、
前記TCP変換部は、
自TCP変換部を介してデータ送信中のTCPコネクション数の情報を、自装置内の他のTCP変換部との間で交換する情報交換部と、
各TCP通信の最大送信帯域を定める帯域制御部と
を有し、
前記情報交換部は、他のTCP変換部と交換したTCPコネクション数の情報に基づいて、装置全体におけるデータ送信中のTCPコネクション数の合計値を計算し、
前記帯域制御部は、装置全体におけるデータ送信中のTCPコネクション数の合計値に基づいて、各TCP通信の最大送信帯域を定める通信装置が提供される。
本発明によると、TCPを用いた通信において、WANのようなRTTが大きく、ホップ数が大きく廃棄発生箇所が多い環境で、送信帯域が契約帯域を大幅に下回ることを防ぐ通信装置を提供することができる。
本実施の形態における装置を有するシステム構成図。 カード1100内のTCP変換部200のブロック図。 バッファのポインタの説明図。 パケットのフォーマット図。 状態テーブル212のフォーマット図。 プロキシ部206のブロック図。 TCP部209のブロック図。 TCP部203のブロック図。 帯域テーブル213のフォーマット図。 プロキシ部206がLAN側受信バッファのデータをWAN側送信バッファへ移動する処理のフローチャート図。 プロキシ部206がWAN側受信バッファのデータをLAN側送信バッファへ移動する処理のフローチャート図。 装置1111のブロック図。 帯域テーブル213が保持する値の意味を説明するための概念図 再送率の変化率と、自装置と対向装置のコネクション数とアクセス帯域を用いて制御帯域を更新するフローチャート図(1)。 再送率の変化率と、自装置と対向装置のコネクション数とアクセス帯域を用いて制御帯域を更新するフローチャート図(2)。 1つのカードを含む装置1111−Aが、自装置の統計情報に基づく帯域制御を行う概念図。 複数のカードを含む装置1111−Aが、自装置の統計情報に基づく帯域制御を行う概念図。 1つのカードを含む装置1111−Aが、1つのカードを含む対向装置1111−Bの統計情報に基づく帯域制御を行う概念図。 1つのカードを含む装置1111−Aが、複数のカードを含む対向装置1111−Bの統計情報に基づく帯域制御を行う概念図。 1つのカードを含む装置1111−Aが、自装置の統計情報と、1つのカードを含む対向装置1111−Bの統計情報とに基づく帯域制御を行う概念図。 1つのカードを含む装置1111−Aが、自装置の統計情報と、複数のカードを含む対向装置1111−Bの統計情報とに基づく帯域制御を行う概念図。 複数のカードを含む装置1111−Aが、自装置の統計情報と、1つのカードを含む対向装置1111−Bの統計情報とに基づく帯域制御を行う概念図。 複数のカードを含む装置1111−Aが、自装置の統計情報と、複数のカードを含む対向装置1111−Bの統計情報とに基づく帯域制御を行う概念図。 自装置と対向装置の1コネクションあたり帯域に基づいて制御帯域を制限する処理のフローチャート図。 2つのWAN(2340、2330)を中継する装置2303を含む場合(実施例2)のシステム構成図。 実施例2における装置2303内のTCP変換部のブロック図。 実施例2における状態テーブル2401のフォーマット図。 実施例3における状態テーブル212−1のフォーマット図。
本発明を実施するための代表的な形態は、下記の通りである。実施例1には基本的な一形態を、実施例2には2つのWANを中継する形態を、実施例3にはTCPコネクション毎に重み付けする形態を記載する。
図1には、本実施の形態の通信装置を適用した中継システムの構成図を示す。
通信装置(中継装置ともいう。以下、単に装置と記す)101、102、103は、複数の拠点内LAN110、120、130とWAN140を接続する通信回線上に設置される。各拠点内LAN110、120、130には、複数の端末111〜113、121〜123、131〜133が接続している。また、端末、装置及びネットワークの数は図示以外にも適宜の数を備えても良い。
装置101は、LAN110からWAN140にデータ送信中のTCP通信の送信コネクション数と、LAN110からWAN140への回線141の送信アクセス帯域を管理する。更に、送信コネクション数と送信アクセス帯域の情報を用いて、1つのTCP通信が回線帯域を使いすぎないように、1コネクションあたりの通信帯域の最大値を制限することで、コネクション間の公平性を確保する。
例えば、回線141の送信アクセス帯域が100Mbpsで、TCP通信の送信コネクション数が10だった場合、1コネクションあたりの通信帯域の最大値を10Mbpsに制限しつつ、TCP通信の帯域制御を実施する。
装置102は、WAN140からLAN120に向かうデータを受信中のTCP通信の受信コネクション数と、WAN140からLAN120への回線142の受信アクセス帯域を管理する。装置102には、装置101からの通信データだけでなく、装置103からの通信データも流れ込む。装置102は、自装置で管理している受信コネクション数と受信アクセス帯域の情報を、装置101と装置103へ通知する。装置101は、自装置の送信コネクション数と送信アクセス帯域の情報に加えて、対向装置102の受信コネクション数と受信アクセス帯域の情報を用いて、1つのTCP通信が回線141や回線142の帯域を使いすぎないように、1コネクションあたりの通信帯域の最大値を制限することで、コネクション間の公平性を確保する。
例えば、回線141の送信アクセス帯域が100Mbps、回線142の受信アクセス帯域が40Mbpsで、装置101の送信コネクション数が10、装置102の受信コネクション数が8である場合、回線141における1コネクションあたりの通信帯域の最大値は10Mbpsだが、回線142における1コネクションあたりの通信帯域の最大値は5Mbpsとなる。このような場合、装置101は、装置102へ向かうTCP通信の1コネクションあたりの通信帯域の最大値を、両者のうち少ないほうの回線142における最大値5Mbpsに制限することで、自装置の接続している回線141だけでなく、リモートの回線142にも考慮したコネクション間の公平性を実現することができる。自装置の情報だけを用いて、1コネクションあたりの通信帯域の最大値を10Mbpsに制限するだけだと、回線142の帯域を使いすぎてしまうため、対向装置の情報も用いて、総合的に帯域を制限することが重要である。
図11には、本実施の形態の通信装置1111のブロック図を示す。図1の装置101、102、103に相当する。
装置1111は、ひとつ又は複数のカード1100−(1〜s)と、ひとつ又は複数のNIF(Network InterFace)1106−(1〜t)と、複数のスイッチ1104−(1〜w)と、これらの間でデータをやり取りするための接続部(1105−(1〜s)、1110−(1〜t))と、カード1100とNIF1106とスイッチ1104を管理するための管理部1120とを備える。
カード1100−(1〜s)は、TCP通信の中継を行うTCP変換部200−(1〜s)と、複数のネットワーク回線1103−(1〜s)−(1〜e)を収容してパケットの送受信を行うインターフェース1102−(1〜s)と、TCP変換部200−(1〜s)とインターフェース1102−(1〜s)と接続部1105−(1〜s)との間でパケットの送受信を行うスイッチ1101−(1〜s)とを備える。
NIF#1〜t(1106−(1〜t))は、複数のネットワーク回線1109−(1〜t)−(1〜i)−(1〜f)を収容してパケットの送受信を行う複数のインターフェース1107−(1〜t)−(1〜i)と、インターフェース1107−(1〜t)−(1〜i)と接続部1110−(1〜t)との間でパケットの送受信を行うスイッチ1108−(1〜t)とを備える。
管理部1120には、端末(管理端末)1121が接続され、端末1121から管理用の情報を送受信する他、内部の情報を端末1121に向けて送信し、端末1121に内部情報を表示することができる。
装置1111は、ネットワーク回線1103−(1〜s)−(1〜e)やネットワーク回線1109−(1〜t)−(1〜i)−(1〜f)のいずれか1つ以上がLANに接続され、ネットワーク回線1103−(1〜s)−(1〜e)やネットワーク回線1109−(1〜t)−(1〜i)−(1〜f)のいずれか1つ以上がWANに接続される。LANから装置1111に入力されたパケットは、TCP変換部200のいずれか1つに転送され、その後、WANへと出力される。WANから装置1111に入力されたパケットは、TCP変換部200のいずれか1つに転送され、その後、LANへと出力される。
装置1111は、ネットワーク回線1103−(1〜s)−(1〜e)やネットワーク回線1109−(1〜t)−(1〜i)−(1〜f)からパケットを受信すると、TCP変換を行うべきパケットか否かを判断する。例えば、パケットのヘッダ情報に基づき判断できる。TCP変換を行うべきパケットと判断した場合は、TCP変換部200へと転送する。TCP変換を行わないパケットは、通常のルータやスイッチと同様に転送を行う。TCP変換部200は、転送されてきたパケットに対して、TCP通信の中継処理を行ったあと、通常のルータやスイッチと同様に転送を行う。
図2には、TCP通信の中継を行うTCP変換部200のブロック図を示す。
TCP変換部200は、TCP通信のための制御を行うWAN側及びLAN側のTCP処理部203/209と、WAN側のTCP209の管理するN個の送信バッファ207およびN個の受信バッファ208と、LAN側のTCP203の管理するN個の送信バッファ205およびN個の受信バッファ204と、送受信バッファ間でデータの乗せ換えを行うプロキシ206と、N個のエントリを備えた状態テーブル(状態記憶領域)212と、N個のエントリを備えた帯域テーブル213と、装置1111内のTCP変換部200の間でデータ送信中のコネクション数やデータ受信中のコネクション数の情報を交換するための情報交換部230と、パケットをWAN側のTCP処理部209またはLAN側のTCP処理部203または情報交換部230へと振り分ける振分部221と、WAN側のTCP処理部209またはLAN側のTCP処理部203または情報交換部230から送信されたパケットを集約したあと通常のルータやスイッチと同様に転送を行う集約部220とを有する。なお、上述のN個はそれぞれ異なる数でもよい。
振分部221は、転送されてきたパケットがLAN側から来たパケットかWAN側から来たパケットかを判定して、LAN側から来たパケットをLAN側のTCP処理部203へ転送し、WAN側から来たパケットをWAN側のTCP処理部209へと転送する。LAN側からきたかWAN側からきたかは、例えばパケット内の適宜の情報を用いて判断してもよい。
TCP処理部203、209、プロキシ206については、後に詳述しここでは概略を述べる。
LAN側のTCP処理部203は、送信履歴更新部725と、パケット再送部724と、受信履歴更新部726と、振分部728と、集約部732とを備える。受信履歴更新部726は、受信したパケットデータを、LAN側受信バッファ204に蓄積する。更に、受信履歴更新部726は、蓄積したデータサイズに応じて、状態テーブル212のバッファ管理ポインタ(508〜510、515〜517、521〜526)の情報を更新する。更に、受信履歴更新部726は、受信したデータの位置を記載したACKパケットを集約部732経由で返信する。送信履歴更新部725は、LAN側送信バッファ205から読み出した送信データをパケットにして送信すると共に、読み出した送信データサイズに応じて、状態テーブル212のバッファ管理ポインタ(508〜510、515〜517、521〜526)の情報を更新する。
WAN側のTCP処理部209は、送信帯域制御部715と、送信履歴更新部705と、パケット再送部704と、受信履歴更新部706と、振分部708と、集約部712とを備える。受信履歴更新部706は、受信したパケットデータを、WAN側受信バッファ208に蓄積する。更に、受信履歴更新部706は、蓄積したデータサイズに応じて、状態テーブル212のバッファ管理ポインタ(508〜510、515〜517、521〜526)の情報を更新する。更に、受信履歴更新部706は、受信したデータの位置を記載したACKパケットを集約部712経由で返信する。送信帯域制御部715は、計測した送信帯域(532〜534)と再送帯域(530、531)の情報を状態テーブル212に蓄積する。送信履歴更新部705は、WAN側送信バッファ207から読み出した送信データをパケットにして送信すると共に、読み出した送信データサイズに応じて、状態テーブル212のバッファ管理ポインタ(508〜510、515〜517、521〜526)の情報を更新する。
プロキシ206は、データ読出し部(601、606)と、データ加工部(602、605)と、データ書込部(603、604)を備える。データ加工部(602、605)は、加工中のデータサイズ(529、530)の情報を、状態テーブル212に蓄積する。データ読出部(601、606)は、受信バッファ(204、208)から読み出したデータサイズに応じて、状態テーブル212のバッファ管理ポインタ(508〜510、515〜517、521〜526)の情報を更新する。データ書込部(603、604)は、送信バッファ(207、205)に書き込んだデータサイズに応じて、状態テーブル212のバッファ管理ポインタ(508〜510、515〜517、521〜526)の情報を更新する。
図3には、送受信バッファ管理用のポインタの説明図を表す。本図では、データを左から右に書き込んでいき、左から右に読み出していくものとする。
受信バッファは、受信したデータの先頭を示すポインタright_recv303と、整列済みデータと未整列データの境界を示すポインタleft_recv302と、プロキシ206がすでに読出し済のデータとまだ読出していないデータの境界を示すleft_rbuf301と、を管理する。
受信したデータの先頭を示すポインタright_recv303は、ロスの発生が無く、前から順番にデータを受信すると、受信したデータサイズ分増えて、右へ移動する。受信できずに歯抜けになっているデータ箇所(ロスセグメント)が存在する状態で、再送パケットを受信して、ロスセグメントが消滅すると、整列済みデータと未整列データの境界を示すポインタleft_recv302は、最も小さなロスセグメントの左端まで移動する。プロキシ206は、読出済データと未読出データの境界を示すleft_rbuf301から右へ向かって順番にデータを読み出し、読み出したデータサイズ分、left_rbuf301を右へ移動させる。読み出せるデータサイズの最大値は、left_recv302とleft_rbuf301の差である。
送信バッファは、プロキシ206が書込済みで送信可能な状態となっているデータの先頭を表すポインタright_sbuf306と、すでに送信済みのデータの先頭を示すポインタright_send305と、受信側から確認応答を受信済みのデータの先頭を示すポインタleft_send304と、を管理する。
プロキシ206が書込済みで送信可能な状態となっているデータの先頭を表すポインタright_sbuf306は、プロキシ206がデータを書き込む毎に、書き込んだデータサイズ分増加し、右へ移動する。送信済みデータの先頭を示すポインタright_send305を始点として右に向かって新たなデータが送信され、right_send305は、送信されたデータサイズ分増加し、右へ移動する。受信側から、left_send304よりも大きな受信シーケンス番号を持つ確認応答パケットを受信すると、left_send304は、確認応答パケットに記載された受信シーケンス番号へと増加し、右へ移動する。
図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とを含む。TCPオプションヘッダ430は、オプション種別を表すoption kind431と、オプション長を表すoption length432と、どこからどこまで部分的に受信できたかを記載するleft_edge_1〜4(433、435、437、439)、right_edge_1〜4(434、436、438、440)を含む。left_edge_1〜4(433、435、437、439)、right_edge_1〜4(434、436、438、440)には受信できなかった部分を記載するケースもある。更に、TCPオプションヘッダ430に、送信アクセス回線帯域max_send_bandwidth443、受信アクセス回線帯域max_recv_bandwidth441、データ受信中のコネクション数recv_number442及びデータ送信中のコネクション数send_number444を記載して、装置間の情報交換や、装置内のTCP変換部同士の情報交換などに使用してもよい。
図5には、状態テーブル212のフォーマット図を示す。
各TCP変換部200の状態テーブル212は、例えばTCPコネクション毎の状態を記録するためのn個のエントリ520と、装置1111の送信アクセス回線帯域を記録するmax_snd_bandwidth539と、装置1111の受信アクセス回線を記録するmax_rcv_bandwidth540と、装置1111全体のデータ送信中のTCPコネクション数を記録するall_snd_num536と、装置1111全体のデータ受信中のTCPコネクション数を記録するall_rcv_num538と、各TCP変換部200がデータ送信中のTCPコネクション数を記録するsnd_num535と、各TCP変換部200がデータ受信中のTCPコネクション数を記録するrcv_num537と、各TCPコネクションの最小帯域を記録するeach_min_bandwidth543とを有する。
各エントリ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_wan528と、LAN側の送信バッファ管理用のポインタを表すlan_left_send521、lan_right_send522、lan_right_sbuf523と、LAN側の送信端末に通知する受信ウィンドウサイズを表すrwnd527と、WAN側のTCP通信の状態を表すwan_state514と、WAN側の受信バッファ管理用のポインタを表すwan_left_rbuf515、wan_left_recv516、wan_right_recv517と、WAN側のウィンドウスケールオプションの値を表すwan_ws518と、WAN側の平均RTTを表すwan_rtt519と、WAN側の受信バッファから読み出され加工中のデータサイズを表すwan_lan529と、WAN側の送信バッファ管理用のポインタを表すwan_left_send524、wan_right_send525、wan_right_sbuf526と、WAN側の直近の再送率を表すrts_ratio530と、WAN側の過去の再送率を表すold_rts_ratio531と、WAN側の直近の送信帯域を表すsnd532と、WAN側の過去の送信帯域を表すold_snd533と、WAN側のさらにそのまた過去の送信帯域を表すold_old_snd534とを有する。さらに、対向装置のデータ受信中のコネクション数を記録するeach_rcv_num541と、対向装置の受信アクセス回線帯域を記録するeach_rcv_bandwidth542とを有する。
each_rcv_num541と、each_rcv_bandwidth542は、対向装置が通知してきた情報に基づいて更新される。例えば、パケット再送部704が、対向装置が送信してきたACKパケットのTCPオプションフィールドに記載された値などを用いて、TCPコネクション毎に更新する。each_rcv_num541と、each_rcv_bandwidth542は、例えば、該当するエントリに対応するTCP通信の対向装置から受信される。
max_snd_bandwidth539や、max_rcv_bandwidth540などは、端末1121経由などで手動で更新される。
snd_num535や、rcv_num537は、情報交換部230が更新する。情報交換部230が、例えば、状態テーブル212のエントリ毎にバッファ蓄積量(right_sbufとleft_sendの差と、right_recvとleft_rbufの差の合計)をチェックし、送信バッファにデータが蓄積されているエントリはデータ送信中のコネクション、受信バッファにデータが蓄積されているエントリはデータ受信中のコネクション、と判断することで計算する。
all_rcv_num538と、all_snd_num536は、装置1111内部の他の全てのTCP変換部200との間の情報交換に基づいて、更新される。TCP変換部200の情報交換部230は、他の全てのTCP変換部200に対して、自分のsnd_num535や、rcv_num537を通知すると共に、他の全てのTCP変換部200から通知されてきたsnd_num535や、rcv_num537の合計値を計算することで、all_rcv_num538と、all_snd_num536を得て、定期的に更新する。情報交換部230は、自装置でデータ受信中のTCPコネクションの合計値all_rcv_num538と、接続される回線の最大受信帯域max_rcv_bandwidth540を、TCP通信の対向装置に通知する。
図6には、プロキシ206のブロック図を示す。
プロキシ206は、LAN側の受信バッファrbuf204からデータを読出すデータ読出し部601と、読み出したデータに対して圧縮・解凍・暗号化・復号・削除・複製・追記などの加工を行うデータ加工部602と、加工済みデータをWAN側の送信バッファsbuf207へ書き込むデータ書き込み部603と、WAN側の受信バッファrbuf208からデータを読み出すデータ読出し部606と、読み出したデータに対して圧縮・解凍・暗号化・復号・削除・複製・追記などの加工を行うデータ加工部605と、加工済みデータをLAN側の送信バッファsbuf205へ書き込むデータ書き込み部604とを有する。データ加工部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を超えない場合は、データを読み出して、データ加工部602へ転送する。更に、推定した読み出すべきデータサイズと、データ加工後のデータサイズのうち、大きい方を状態テーブル212のlan_wan528へ記載する。詳細は、図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を超えない場合は、データを読み出して、データ加工部605へ転送する。更に、推定した読み出すべきデータサイズと、データ加工後のデータサイズのうち、大きい方を状態テーブル212のwan_lan529へ記載する。詳細は、図10に示すフローチャート図を参照して後述する。
図9と図10にはそれぞれ、データ読出し部601とデータ読出し部606のデータ読出し処理のフローチャート図を示す。
図9の各ステップは、データ読出し部601が実行する。
データ読出し部601は、処理を開始すると(ステップ900)、はじめにlan_left_recv509がlan_left_rbuf508よりも大きいか比較を行い、LAN側の受信バッファ204に整列済みデータが存在するか否かを判定する(ステップ901)。ステップ901において大きくないと判定した場合、すなわち整列済みデータが存在しない場合は、ステップ901を繰り返す。ステップ901において大きいと判定した場合、すなわち整列済みデータが存在する場合は、次に、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側の受信バッファ204から読み出す(ステップ903)。ステップ902にて否と判定した場合は、データ加工しない場合のみ、wan_right_sbuf526とwan_left_send524の差分(未送信データとACK確認待ちデータの合計値)と、WAN側の送信バッファサイズwan_sbuf_sizeとの差分(バッファ空きサイズ)に相当するサイズのデータを、LAN側の受信バッファ204から読み出す(ステップ904)。読み出されたデータは、データ加工部602を介してデータ書き込み部603に出力される。データ読み出し後、lan_left_rbuf508に読み出したデータサイズを加算する(ステップ905)。ステップ905の後、ステップ901へ戻る。なお、wan_right_sbuf526は、データ書き込み部603がデータを書き込んだ際に、書き込んだデータサイズ分だけ増加する。
図10の各ステップはデータ読出し部606が実行する。データ読出し部606は、処理を開始すると(ステップ1000)、はじめにwan_left_recv516がwan_left_rbuf515よりも大きいか比較を行い、WAN側の受信バッファ208に整列済みデータが存在するか否かを判定する(ステップ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側の受信バッファ208から読み出す(ステップ1003)。ステップ1002にて否と判定した場合は、データ加工しない場合のみ、lan_right_sbuf523とlan_left_send521の差分(未送信データとACK確認待ちデータの合計値)と、LAN側の送信バッファサイズlan_sbuf_sizeとの差分(バッファ空きサイズ)に相当するサイズのデータを、WAN側の受信バッファ208から読み出す(ステップ1004)。読み出されたデータは、データ加工部605を介してデータ書き込み部604に出力される。データ読出し後、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と、再送パケットとデータパケットを受け取り、バッファ1〜n(709−1〜n)に振り分けると共に、各TCPコネクションの送信/再送ビット長を送信帯域制御部715に通知する振分部708と、現在時刻を生成して送信帯域制御部715に通知するタイマ713と、インターバル時間(予め定めた固定値、または計測したRTTなど)を保存して送信帯域制御部715に通知するインターバル格納部714と、帯域テーブル213を制御して、各TCPコネクションのトークンサイズをトークン更新部に通知する送信帯域制御部715と、TCPコネクション毎にトークンバケツを管理して、送信可能なコネクションをマルチプレクサ712に通知するトークン更新部717と、ACKパケット、TCP制御パケット、再送パケット、データパケットをFIFOで集約して、出力するマルチプレクサ712およびバッファ709〜711とを有する。
本実施例において、TX部701の各ブロックのうち、各TCP通信の制御帯域(最大送信帯域)に従いデータを送信するブロック(例えば、トークン更新部717、マルチプレクサ712、バッファ709等)をまとめて送信制御部と称することもある。
図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とを有する。
WAN側TCP処理部209の送信帯域制御部715は基準時刻という内部変数を管理している。基準時刻と、タイマ713の現在時刻との差が、インターバル格納部714のインターバル時間よりも大きくなると、基準時刻にインターバル時間を加算して新たな基準時刻とする。加算前の基準時刻は、旧基準時刻となる。すなわち、現在使用している基準時刻の一つ前に使用していた基準時刻は旧基準時刻となる。
図8には、送信帯域制御部715が管理する帯域テーブル213のフォーマットを表す。
帯域テーブル213は、コネクション毎に、基準時刻と、基準時刻後の送信ビット積算値・再送ビット積算値・制御帯域と、基準時刻前の送信帯域・再送帯域・制御帯域と、旧基準時刻前の送信帯域・制御帯域と、を記録する。
基準時刻後の制御帯域は、現在時刻における制御帯域を表す(本実施例では、tokenと表す)。基準時刻後の送信帯域は、現在時刻における送信帯域を表し(本実施例では、sndと表す)、基準時刻後の送信ビット積算値を、現在時刻と基準時刻の差分で除算することで求められる。基準時刻後の再送帯域は、現在時刻における再送帯域を表し(本実施例では、rtsと表す)、基準時刻後の再送ビット積算値を、現在時刻と基準時刻の差分で除算することで求められる。基準時刻前の制御帯域・送信帯域・再送帯域は、旧基準時刻から基準時刻までの制御帯域・送信帯域・再送帯域の平均値を表す(本実施例では、old_token、old_snd、old_rtsと表す)。旧基準時刻前の制御帯域・送信帯域は、旧基準時刻の直前までの制御帯域・送信帯域を表す(本実施例では、old_old_token、old_old_snd、と表す)。基準時刻前の再送率old_rts_ratioは、old_rts/old_old_sndで求められる。また、基準時刻後の現在の再送率rts_ratioは、rts/old_sndで求められる。インターバル時間として、状態テーブル212記載のwan_rtt519を用いる場合もある。
図12には、旧基準時刻・基準時刻・現在時刻と、その前後の制御帯域・送信帯域・再送帯域の関係を表す。
基準時刻と旧基準時刻との差は、インターバル時間である。旧基準時刻前のインターバル時間の制御帯域・送信帯域の平均値は、old_old_token、old_old_sndと表す(1203)。旧基準時刻から基準時刻までの間の制御帯域・送信帯域・再送帯域の平均値は、old_token、old_snd、old_rtsと表す(1202)。基準時刻から現在時刻までの制御帯域・送信帯域・再送帯域の平均値は、token、snd、rtsと表す(1201)。
送信帯域制御部715は、帯域テーブル213に記載された値を用いて、上述のようにrts_ratio530とold_rts_ratio531を計算し、制御帯域(token)を決定し、トークン更新部717へ伝える。更に、状態テーブル212を更新する。
図2を用いて、LAN側からデータ付きパケットを受信した際のパケットの流れを説明する。
LAN側から到着したデータ付きパケットは、LAN側TCP処理部203に入り、受信履歴更新部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側の受信バッファの最大値から、lan_right_recv510とlan_left_rbuf508との差分を、引くことで、受信バッファの残存量を計算する。ペイロード450のサイズが、受信バッファの残存量以下のときは、ペイロード450に記載されたデータ全てを受信バッファに格納する。ペイロード450のサイズが、受信バッファの残存量よりも大きい場合は、ペイロード450の先頭から受信バッファの残存量に相当するサイズのデータだけを受信バッファに格納する。格納データサイズが0よりも大きいときは、データ付きパケットのTCPヘッダ420に記載されたSEQ423の値と、格納データサイズに基づいて、受信バッファ管理用ポインタの更新を行う。例えば、パケットヘッダ記載のSEQ423に格納データサイズを加算した値が、lan_right_recv510よりも大きい場合は、lan_right_recv510を、SEQ423に格納データサイズを加算した値に変更する。更に、受信データの最後尾がlan_right_recv510となるように、受信データをLAN側の受信バッファに記載する。その後、受信ウィンドウサイズrwnd527をTCPヘッダ420のwin_size427に記載し、受信バッファ管理ポインタの1つlan_left_recv509をTCPヘッダ420のACK424に記載したACKパケットを、LAN側へ返信する。
なお、受信履歴更新部726において、データを格納するか否かの判断に、rwnd527の値は使用されない。そのため、rwnd527が0であっても、受信バッファの残存量が0よりも大きければ、ペイロード450に記載されたデータが受信バッファに格納され、インクリメントされたACK424を持つACKパケットが、LAN側へ返信される。
また、送信履歴更新部705についてさらに説明すると、wan_right_send525から右方向に、最大wan_right_sbuf526までのデータを、WAN側送信バッファsbuf207から読み出す。wan_right_send525は、読み出したデータサイズ分、増加して、右に移動する。更に、読み出したデータをペイロード450に記載し、wan_right_send525をSEQ423に記載したTCPヘッダ420を追加したデータ付きパケットを、WAN側へ送信する。
(制御帯域の更新処理)
制御帯域の更新処理とは別に、情報交換部230により、上述のように自装置の他の情報交換部との情報通知及び受信、対向装置の情報交換部との情報通知及び受信がされ、状態テーブル212の各情報が更新される。
図13Aには、送信帯域制御部715が制御帯域(token)を更新する際の概念的なフローチャートを表す。送信帯域制御部715が、本フローチャートに従い処理を実行することで、自装置の送信アクセス回線帯域とデータ送信中コネクション数から求められる自装置の1コネクションあたり帯域だけでなく、対向装置から通知された受信アクセス回線帯域とデータ受信中コネクション数から求められる対向装置の1コネクションあたり帯域も用いることで、より公平に帯域を制限しつつ、再送率に基づく帯域制御を実現することができる。図13Aの各ステップは、送信帯域制御部715により実行される。
制御帯域の更新処理がスタートすると(ステップ1301)、送信帯域制御部715が、パケット再送率(=rts/old_tokenまたはrts/old_snd)の増加率が一定値(予め定められた閾値)を超過したか否かを判定する(ステップ1302)。超過した場合は、現在の再送帯域(rts)と、昔の(基準時刻より前の)制御帯域(old_token)または昔の(基準時刻より前の)送信帯域(old_snd)を用いて、制御帯域(token)を更新する(ステップ1303)。例えば、基準時刻より前の制御帯域を、現在の再送帯域に応じた量減らし、現時刻の制御帯域とする。一方、超過しなかった場合は、制御帯域を増加させる(ステップ1304)。ステップ1303やステップ1304のあとに、自装置のコネクション数とアクセス帯域、および対向装置のコネクション数とアクセス帯域とに基づいて、制御帯域(token)を更新する(ステップ1305)。最後に、各コネクションの最小帯域(each_min_bandwidth543)に基づき、制御帯域(token)を更新する(ステップ1306)。制御帯域(token)を変更することで、トークンバケツに蓄積されるトークンの量が変わり、それによりパケットの送信レートを変更することが可能となる。
図13Bには、送信帯域制御部715が帯域テーブル213記載の値を用いて、制御帯域(token)を変更するフローチャート図を表す。図13Aをより詳細にした例を示す。図13Bの各ステップは、送信帯域制御部715により実行される。
制御帯域(token)の更新処理がスタートすると(ステップ1306)、送信帯域制御部715が、タイマ713の出力する現在時刻と、帯域テーブル213記載の基準時刻との差が、インターバル格納部714の出力するインターバル時間以上であるか否かを判定する(ステップ1307)。インターバル時間として、計測したRTTの平均値や初期値等を記録したwan_rtt519等を使用してもよい。ステップ1307において真と判断された場合は、基準時刻後の現在の制御帯域tokenの値をtmpに退避させておく(ステップ1308)。更に、例えば、帯域テーブル213に記憶された再送ビット積算値(基準時刻後)/(現在時刻−基準時刻)/送信帯域(基準時刻前)で求められる再送率(基準時刻後)rts_ratioが、再送帯域(基準時刻前)/送信帯域(旧基準時刻前)で求められる旧再送率(基準時刻前)old_rts_ratioのK倍(K:予め定められた1以上の係数)よりも大きいか否かを判定する(ステップ1309)。上述のステップ1302に相当する。Kの値は、固定としてもよいし、tokenの値に応じて変化してもよい。ステップ1309において、大きいと判定した場合は、再送率の増加率が大きいと判断して、制御帯域(基準時刻後)tokenの値を、制御帯域(基準時刻前)old_tokenの値よりも小さくなるように、例えば再送帯域rtsを用いて減少させる。例えば、制御帯域(基準時刻後)token=制御帯域(基準時刻前)old_token−再送帯域(基準時刻後)rtsなどとする(ステップ1311)。ステップ1309で偽と判定された場合は、制御帯域(基準時刻後)tokenを増加させる(ステップ1310)。制御帯域(基準時刻後)tokenの増加方法は、線形に増加させてもよいし、指数的に増加させてもよいし、線形増加と指数増加を組み合わせても良いし、最初線形増加させてその後で指数増加してもよいし、増加率を制御帯域(基準時刻後)tokenに応じて変化させてもよい。
ステップ1311またはステップ1310が完了すると、例えば送信帯域(旧基準時刻前)old_old_snd=送信帯域(基準時刻前)old_snd、送信帯域(基準時刻前)old_snd=送信帯域(基準時刻後)snd、再送帯域(基準時刻前)old_rts=再送帯域(基準時刻後)rts、基準時刻=基準時刻+インターバル、送信ビット積算値(基準時刻後)=0、再送ビット積算値(基準時刻後)=0、制御帯域(旧基準時刻前)old_old_token=制御帯域(基準時刻前)old_token、制御帯域(基準時刻前)old_token=tmp、と更新し、各値を帯域テーブル213に記録する(ステップ1312)。その後ステップ1315に移る。
一方、ステップ1307で、偽と判定された場合は、ステップ1309と同様に、再送ビット積算値(基準時刻後)/(現在時刻−基準時刻)/送信帯域(基準時刻前)で求められる再送率(基準時刻後)rts_ratioが、再送帯域(基準時刻前)/送信帯域(旧基準時刻前)で求められる旧再送率(基準時刻前)old_rts_ratioのK倍(K:予め定められた1以上の係数)よりも大きいか否かを判定する(ステップ1313)。Kの値は、固定としてもよいし、tokenの値に応じて変化してもよい。ステップ1313において大きいと判定した場合は、再送率の変化率が大きいと判断して、ステップ1311と同様に、制御帯域(基準時刻後)tokenの値を、制御帯域(基準時刻前)old_tokenの値よりも小さくなるように、再送帯域rtsを用いて減少させる。例えば、制御帯域(基準時刻後)token=制御帯域(基準時刻前)old_token−再送帯域(基準時刻後)rtsとする(ステップ1314)。ステップ1313において小さいあるいは同等と判定した場合は、何もしない。これらのステップにより、インターバル時間が経過しなくても、再送率の増加を即座に検出し、制御帯域を更新できる。その後ステップ1315に移る。
ステップ1315では、制御帯域(基準時刻後)tokenが、装置1111の送信アクセス回線帯域max_snd_bandwidth539を、装置1111のデータ送信中のTCPコネクション数all_snd_num536で除算した1コネクションンあたり送信アクセス回線帯域よりも大きい場合は、制御帯域(基準時刻後)tokenを、1コネクションあたり送信アクセス回線帯域に変更する。更に、制御帯域(基準時刻後)tokenが、対向装置の受信アクセス回線帯域each_rcv_bandwidth542を、対向装置のデータ受信中のTCPコネクション数each_rcv_num541で除算した1コネクションあたり受信アクセス回線帯域よりも大きい場合は、制御帯域(基準時刻後)tokenを、1コネクションあたり受信アクセス回線帯域に変更する(ステップ1315)。更に、制御帯域(基準時刻後)tokenが、各TCP通信の最小帯域each_min_bandwidthよりも小さい場合は、制御帯域(基準時刻後)tokenを各TCP通信の最小帯域each_min_bandwidthに変更する(ステップ1316)。すなわち図13Bで示す2つの式で定まるtokenのうちいずれか小さいほうをとる。なお、ステップ1315、1316におけるそれぞれのデータは、状態テーブル212を参照して読み出すことができる。制御帯域(token)を変更することで、トークンバケツに蓄積されるトークンの量が変わり、それによりパケットの送信レートを変更することが可能となる。
このように、自装置の送信アクセス回線帯域とデータ送信中コネクション数から求められる自装置の1コネクションあたり帯域だけでなく、対向装置から通知された受信アクセス回線帯域とデータ受信中コネクション数から求められる対向装置の1コネクションあたり帯域も用いることで、より公平に帯域を制限しつつ、再送率に基づく帯域制御を実現することができる。
図22には、ステップ1305やステップ1315の詳細な処理例のフローチャートを示す。図22の各ステップは、送信帯域制御部715により実行される。
処理がスタートすると(ステップ2201)、状態テーブル212から、装置1111の送信アクセス回線帯域max_snd_bandwidth539と、装置1111のデータ送信中のTCPコネクション数all_snd_num536と、対向装置の受信アクセス回線帯域each_rcv_bandwidth542と、対向装置のデータ受信中のTCPコネクション数each_rcv_num541との情報を読み出す(ステップ2208)。装置1111の送信アクセス回線帯域max_snd_bandwidth539を、装置1111のデータ送信中のTCPコネクション数all_snd_num536で除算した1コネクションンあたり送信アクセス回線帯域が、対向装置の受信アクセス回線帯域each_rcv_bandwidth542を、対向装置のデータ受信中のTCPコネクション数each_rcv_num541で除算した1コネクションあたり受信アクセス回線帯域よりも大きいか否かを判定する(ステップ2202)。大きい場合は、制御帯域(基準時刻後)tokenが、対向装置の1コネクションあたり受信アクセス回線帯域よりも大きいか否かを判定する(ステップ2203)。大きい場合は、制御帯域(基準時刻後)tokenを、対向装置の1コネクションあたり受信アクセス回線帯域に、定数αを加算した値、または定数αを乗算した値に変更する(ステップ2205)。αの値は1でもよいし、他の値でもよい。ステップ2203において否と判定した場合は何もせずに終了する(ステップ2207)。
一方、ステップ2202において否と判定した場合は、制御帯域(基準時刻後)tokenが、自装置の1コネクションあたり送信アクセス回線帯域よりも大きいか否かを判定する(ステップ2204)。大きい場合は、制御帯域(基準時刻後)tokenを、自装置の1コネクションあたり送信アクセス回線帯域に、定数αを加算した値、または定数αを乗算した値に変更する(ステップ2206)。ステップ2204において否と判定した場合は何もせずに終了する(ステップ2207)。更に、制御帯域tokenを状態テーブル212および帯域テーブル213へ書き込む(ステップ2209)。なお、ステップ2203、2204で否と判定した場合は、ステップ2209を省略し、処理を終了してもよい。
このように、自装置の送信アクセス回線帯域とデータ送信中コネクション数から求められる自装置の1コネクションあたり帯域だけでなく、対向装置から通知された受信アクセス回線帯域とデータ受信中コネクション数から求められる対向装置の1コネクションあたり帯域も用いることで、より公平に帯域を制限しつつ、再送率に基づく帯域制御を実現することができる。
以上の送信帯域制御部715の制御帯域を更新する方法により、過去の送信帯域と直近の再送帯域に基づく再送率の変化率を用いて帯域を制御する方法と、装置間で交換したコネクション数の情報を用いて帯域を制御する方法と、を組みあわせて、帯域を制御することが可能となる。これにより、制御帯域が利用可能帯域付近で上下するように更新されるため、利用可能帯域を100%近く使い切ることができる。更に、標準的なTCP通信しかできない端末間でも、RTTや廃棄率に依存しない通信を実現することができる。
(動作例)
図14には、TCP変換部200を1つ含む装置1111−Aと、TCP変換部200を1つ含む装置1111−Bと、の間で自装置の統計情報に基づいて帯域制御を行う例の概念図を示す。
装置1111−Aの送信アクセス回線60Mbpsとし、3台の送信端末(1401〜1403)から3台の受信端末(1404〜1406)に向けて、装置1111−Aと装置1111−Bを経由して、3つのTCP通信が行われている。
装置1111−A内のTCP変換部200−A内の状態テーブル212−Aでは、snd_num=3、all_snd_num=3、max_snd_bandwidth=60Mbpsと記録される。本情報を用いて、TCP変換部200−A内の送信帯域制御部715−Aは、公平分配可能なTCP通信の1コネクションあたりの帯域を20Mbpsと計算する。送信帯域制御部715−Aは、再送率に基づいて制御帯域tokenを決定した後(ステップ1302〜1304相当)、制御帯域tokenが20Mbpsを超過している場合は、制御帯域tokenが20Mbps以下となるよう制御帯域を制限する(ステップ1305相当)。
図15には、TCP変換部200を複数含む装置1111−Aと、TCP変換部200を1つ含む装置1111−Bと、の間で自装置の統計情報に基づいて帯域制御を行う例の概念図を示す。
装置1111−Aの送信アクセス回線60Mbpsとし、3台の送信端末(1501〜1503)から3台の受信端末(1504〜1506)に向けて、装置1111−Aと装置1111−Bを経由して、3つのTCP通信が行われている。2つのTCP通信は、1つ目のTCP変換部200−A−1を経由し、1つのTCP通信は、2つ目のTCP変換部200−A−2を経由する。
装置1111−A内のTCP変換部200−A−1内の状態テーブル212−A−1では、snd_num=2、all_snd_num=3、max_snd_bandwidth=60Mbpsと記録される。本情報を用いて、TCP変換部200−A−1内の送信帯域制御部715−A−1は、公平分配可能なTCP通信の1コネクションあたりの帯域を20Mbpsと計算する。送信帯域制御部715−A−1は、再送率に基づいて制御帯域tokenを決定した後(ステップ1302〜1304相当)、制御帯域tokenが20Mbpsを超過している場合は、制御帯域tokenが20Mbps以下となるよう制御帯域を制限する(ステップ1305相当)。
装置1111−A内のTCP変換部200−A−2内の状態テーブル212−A−1では、snd_num=1、all_snd_num=3、max_snd_bandwidth=60Mbpsと記録される。本情報を用いて、TCP変換部200−A−2内の送信帯域制御部715−A−2は、公平分配可能なTCP通信の1コネクションあたりの帯域を20Mbpsと計算する。送信帯域制御部715−A−2は、再送率に基づいて制御帯域tokenを決定した後(ステップ1302〜1304相当)、制御帯域tokenが20Mbpsを超過している場合は、制御帯域tokenが20Mbps以下となるよう制御帯域を制限する(ステップ1305相当)。
図16には、TCP変換部200を1つ含む装置1111−Aと、TCP変換部200を1つ含む装置1111−Bと、の間で対向装置の統計情報に基づいて帯域制御を行う例の概念図を示す。
装置1111−Bの受信アクセス回線30Mbpsとし、3台の送信端末(1601〜1603)から3台の受信端末(1604〜1606)に向けて、装置1111−Aと装置1111−Bを経由して、3つのTCP通信が行われている。
装置1111−B内のTCP変換部200−B内の状態テーブル212−Bでは、rcv_num=3、all_rcv_num=3、max_rcv_bandwidth=30Mbpsと記録される。本情報は、ACKパケット等に載せられて、送信端末(1601〜1603)側の装置1111−Aに通知され、TCP変換部200−Aの状態テーブル212に記録される。通知された情報に基づいて、TCP変換部200−A内の送信帯域制御部715−Aは、制御帯域の最大値が10Mbps以下となるように制御帯域を調整する。
図17には、TCP変換部200を1つ含む装置1111−Aと、TCP変換部200を複数含む装置1111−Bと、の間で対向装置の統計情報に基づいて帯域制御を行う例の概念図を示す。
装置1111−Bの受信アクセス回線30Mbpsとし、3台の送信端末(1701〜1703)から3台の受信端末(1704〜1706)に向けて、装置1111−Aと装置1111−Bを経由して、3つのTCP通信が行われている。2つのTCP通信は、1つ目のTCP変換部200−B−1を経由し、1つのTCP通信は、2つ目のTCP変換部200−B−2を経由する。
装置1111−B内のTCP変換部200−B−1内の状態テーブル212−B−1では、rcv_num=2、all_rcv_num=3、max_rcv_bandwidth=30Mbpsと記録される。本情報は、ACKパケット等に載せられて、送信端末(1701〜1703)側の装置1111−Aに通知され、状態テーブル212−Aに記録される。通知された情報に基づいて、TCP変換部200−A内の送信帯域制御部715−Aは、制御帯域の最大値が10Mbps以下となるように制御帯域を調整する。
装置1111−B内のTCP変換部200−B−2内の状態テーブル212−B−2では、rcv_num=1、all_rcv_num=3、max_rcv_bandwidth=30Mbpsと記録される。本情報は、ACKパケット等に載せられて、送信端末(1701〜1703)側の装置1111−Aに通知され、状態テーブル212−Aに記録される。通知された情報に基づいて、TCP変換部200−A内の送信帯域制御部715−Aは、公平分配可能なTCP通信の1コネクションあたりの帯域を10Mbpsと計算する。送信帯域制御部715−Aは、再送率に基づいて制御帯域tokenを決定した後(ステップ1302〜1304相当)、制御帯域tokenが10Mbpsを超過している場合は、制御帯域tokenが10Mbps以下となるよう制御帯域を制限する(ステップ1305相当)。
図18には、TCP変換部200を1つ含む装置1111−Aと、TCP変換部200を1つ含む装置1111−Bと、の間で自装置と対向装置の統計情報に基づいて帯域制御を行う例の概念図を示す。
装置1111−Aの送信アクセス回線60Mbps、装置1111−Bの受信アクセス回線30Mbpsとし、3台の送信端末(1801〜1803)から3台の受信端末(1804〜1806)に向けて、装置1111−Aと装置1111−Bを経由して、3つのTCP通信が行われている。
装置1111−B内のTCP変換部200−B内の状態テーブル212−Bでは、rcv_num=3、all_rcv_num=3、max_rcv_bandwidth=30Mbpsと記録される。本情報は、ACKパケット等に載せられて、送信端末(1801〜1803)側の装置1111−Aに通知され、状態テーブル212−Aに記録される。装置1111−A内のTCP変換部200−A内の状態テーブル212−Aでは、snd_num=3、all_snd_num=3、max_snd_bandwidth=60Mbpsと記録される。対向装置からの情報と、自装置内の記録情報を用いて、TCP変換部200−A内の送信帯域制御部715−Aは、公平分配可能なTCP通信の1コネクションあたりの帯域を10Mbpsと計算する。送信帯域制御部715−Aは、再送率に基づいて制御帯域tokenを決定した後(ステップ1302〜1304相当)、制御帯域tokenが10Mbpsを超過している場合は、制御帯域tokenが10Mbps以下となるよう制御帯域を制限する(ステップ1305相当)。
図19には、TCP変換部200を1つ含む装置1111−Aと、TCP変換部200を複数含む装置1111−Bと、の間で自装置と対向装置の統計情報に基づいて帯域制御を行う例の概念図を示す。
装置1111−Aの送信アクセス回線60Mbps、装置1111−Bの受信アクセス回線30Mbpsとし、3台の送信端末(1901〜1903)から3台の受信端末(1904〜1906)に向けて、装置1111−Aと装置1111−Bを経由して、3つのTCP通信が行われている。2つのTCP通信は、1つ目のTCP変換部200−B−1を経由し、1つのTCP通信は、2つ目のTCP変換部200−B−2を経由する。
装置1111−B内のTCP変換部200−B−1内の状態テーブル212−B−1では、rcv_num=2、all_rcv_num=3、max_rcv_bandwidth=30Mbpsと記録される。本情報は、ACKパケット等に載せられて、送信端末(1901〜1903)側の装置1111−Aに通知され、状態テーブル212−Aに記録される。
装置1111−B内のTCP変換部200−B−2内の状態テーブル212−B−2では、rcv_num=1、all_rcv_num=3、max_rcv_bandwidth=30Mbpsと記録される。本情報は、ACKパケット等に載せられて、送信端末(1901〜1903)側の装置1111−Aに通知され、状態テーブル212−Aに記録される。
装置1111−A内のTCP変換部200−A内の送信帯域制御部715−Aは、対向装置からの情報と、自装置内の記録情報を用いて、公平分配可能なTCP通信の1コネクションあたりの帯域を10Mbpsと計算する。送信帯域制御部715−Aは、再送率に基づいて制御帯域tokenを決定した後(ステップ1302〜1304相当)、制御帯域tokenが10Mbpsを超過している場合は、制御帯域tokenが10Mbps以下となるよう制御帯域を制限する(ステップ1305相当)。
図20には、TCP変換部200を複数含む装置1111−Aと、TCP変換部200を1つ含む装置1111−Bと、の間で自装置と対向装置の統計情報に基づいて帯域制御を行う例の概念図を示す。
装置1111−Aの送信アクセス回線60Mbps、装置1111−Bの受信アクセス回線30Mbpsとし、3台の送信端末(2001〜2003)から3台の受信端末(2004〜2006)に向けて、装置1111−Aと装置1111−Bを経由して、3つのTCP通信が行われている。2つのTCP通信は、1つ目のTCP変換部200−B−1を経由し、1つのTCP通信は、2つ目のTCP変換部200−B−2を経由する。
装置1111−B内のTCP変換部200−B内の状態テーブル212−Bでは、rcv_num=3、all_rcv_num=3、max_rcv_bandwidth=30Mbpsと記録される。本情報は、ACKパケット等に載せられて、送信端末(2001〜2003)側の装置1111−Aに通知され、状態テーブル212−A−1、212−A−2に記録される。
装置1111−A内のTCP変換部200−A−1内の状態テーブル212−A−1では、snd_num=2、all_snd_num=3、max_snd_bandwidth=60Mbpsと記録される。装置1111−A内のTCP変換部200−A−1内の送信帯域制御部715−A−1は、対向装置からの情報と、自装置内の記録情報を用いて、公平分配可能なTCP通信の1コネクションあたりの帯域を10Mbpsと計算する。送信帯域制御部715−A−1は、再送率に基づいて制御帯域tokenを決定した後(ステップ1302〜1304相当)、制御帯域tokenが10Mbpsを超過している場合は、制御帯域tokenが10Mbps以下となるよう制御帯域を制限する(ステップ1305相当)。
装置1111−A内のTCP変換部200−A−2内の状態テーブル212−A−2では、snd_num=1、all_snd_num=3、max_snd_bandwidth=60Mbpsと記録される。装置1111−A内のTCP変換部200−A−2内の送信帯域制御部715−A−2は、対向装置からの情報と、自装置内の記録情報を用いて、公平分配可能なTCP通信の1コネクションあたりの帯域を10Mbpsと計算する。送信帯域制御部715−A−2は、再送率に基づいて制御帯域tokenを決定した後(ステップ1302〜1304相当)、制御帯域tokenが10Mbpsを超過している場合は、制御帯域tokenが10Mbps以下となるよう制御帯域を制限する(ステップ1305相当)。
図21には、TCP変換部200を複数含む装置1111−Aと、TCP変換部200を複数含む装置1111−Bと、の間で自装置と対向装置の統計情報に基づいて帯域制御を行う例の概念図を示す。
装置1111−Aの送信アクセス回線60Mbps、装置1111−Bの受信アクセス回線30Mbpsとし、3台の送信端末(2101〜2103)から3台の受信端末(2104〜2106)に向けて、装置1111−Aと装置1111−Bを経由して、3つのTCP通信が行われている。2つのTCP通信は、1つ目のTCP変換部200−A−1とTCP変換部200−B−1を経由し、1つのTCP通信は、2つ目のTCP変換部200−A−2とTCP変換部200−B−2を経由する。
装置1111−B内のTCP変換部200−B−1内の状態テーブル212−B−1では、rcv_num=2、all_rcv_num=3、max_rcv_bandwidth=30Mbpsと記録される。本情報は、ACKパケット等に載せられて、送信端末(2101〜2103)側の装置1111−A(例えばTCP通信において対向するTCP変換部200−A−1)に通知され、状態テーブル212−A−1に記録される。
装置1111−B内のTCP変換部200−B−2内の状態テーブル212−B−2では、rcv_num=1、all_rcv_num=3、max_rcv_bandwidth=30Mbpsと記録される。本情報は、ACKパケット等に載せられて、送信端末(2101〜2103)側の装置1111−A(例えばTCP通信において対向するTCP変換部200−A−2)に通知され、状態テーブル212−A−2に記録される。
装置1111−A内のTCP変換部200−A−1内の状態テーブル212−A−1では、snd_num=2、all_snd_num=3、max_snd_bandwidth=60Mbpsと記録される。装置1111−A内のTCP変換部200−A−1内の送信帯域制御部715−A−1は、対向装置からの情報と、自装置内の記録情報を用いて、公平分配可能なTCP通信の1コネクションあたりの帯域を10Mbpsと計算する。送信帯域制御部715−A−1は、再送率に基づいて制御帯域tokenを決定した後(ステップ1302〜1304相当)、制御帯域tokenが10Mbpsを超過している場合は、制御帯域tokenが10Mbps以下となるよう制御帯域を制限する(ステップ1305相当)。
装置1111−A内のTCP変換部200−A−2内の状態テーブル212−A−2では、snd_num=1、all_snd_num=3、max_snd_bandwidth=60Mbpsと記録される。装置1111−A内のTCP変換部200−A−2内の送信帯域制御部715−A−2は、対向装置からの情報と、自装置内の記録情報を用いて、公平分配可能なTCP通信の1コネクションあたりの帯域を10Mbpsと計算する。送信帯域制御部715−A−2は、再送率に基づいて制御帯域tokenを決定した後(ステップ1302〜1304相当)、制御帯域tokenが10Mbpsを超過している場合は、制御帯域tokenが10Mbps以下となるよう制御帯域を制限する(ステップ1305相当)。
なお、装置1111に接続された端末1121が、装置1111内部の各TCP変換部200内の状態テーブル212のsnd_num、all_snd_num、max_snd_bandwidth、rcv_num、all_rcv_num、max_rcv_bandwidth、each_rcv_bandwidth、each_rcv_num等の情報を読み取り、外部へ表示することで、TCPコネクション毎の帯域を表示したり、装置が収容しているTCPコネクション数を表示したり、対向装置のアクセス帯域やTCPコネクション数の情報を表示したりすることができる。
以上の送信帯域制御部715の制御帯域を更新する方法により、過去の送信帯域と直近の再送帯域を用いて、再送率の変化率を用いて帯域を制御する方法と、装置間で交換したコネクション数の情報を用いて帯域を制御する方法と、を組みあわせて、帯域を制御することが可能となる。これにより、制御帯域が利用可能帯域付近で上下するように更新されるため、利用可能帯域を100%近く使い切ることができる。
図23には、2つのWAN(2340、2330)を中継する装置2303を含むシステム構成図を示す。
装置2301と装置2302は、実施例1と同じ通信装置を用いる。装置2301は、端末(2311〜2313)が接続されたLAN2310と、WAN2340に接続している。装置2302は、端末(2321〜2323)が接続されたLAN2320と、WAN2330に接続している。通信装置(以下、単に装置と記す)2303は、WAN2340とWAN2330に接続している。
装置2303は、図11に示すブロック図と同様な構成をとる。図11中のLANはWANに変わる。
図24には、装置2303内のTCP変換部のブロック図を示す。
図2の構成と比べると、装置2303では、LAN TCPブロック203が、WAN TCPブロック209−1に置き換わっている。さらに、第2の帯域テーブル213−1を持ち、帯域テーブル213を2つ備える。WAN TCP処理部209−1の構成は、WAN TCP処理部209と同様である。上述の制御帯域の更新処理が、WAN2340側とWAN2330側の双方で行われる。
図25には、状態テーブル2401のフォーマットを表す。
状態テーブル2401は、LAN管理用の情報がなくなり、WAN管理用の情報を2セット備える。
状態テーブル2401は、TCPコネクション毎の状態を記録するためのn個のエントリ520と、装置2303のそれぞれのWANに対する送信アクセス回線帯域を記録するmax_snd_bandwidth(539、539−1)と、装置2303のそれぞれのWANに対する受信アクセス回線を記録するmax_rcv_bandwidth(540、540−1)と、装置2303がそれぞれのWANに対してデータ送信中のTCPコネクション数を記録するall_snd_num(536、536−1)と、装置2303がそれぞれのWANからデータ受信中のTCPコネクション数を記録するall_rcv_num(538、538−1)と、各TCP変換部200がそれぞれのWANに対してデータ送信中のTCPコネクション数を記録するsnd_num(535、535−1)と、各TCP変換部200がそれぞれのWANからデータ受信中のTCPコネクション数を記録するrcv_num(537、537−1)と、それぞれのWANに対する各TCPコネクションの最小帯域を記録するeach_min_bandwidth(543、543−1)とを有する。
各エントリ520は、それぞれのWANの情報を含む。例えば、各エントリ520は、エントリが使用中であるか否かを記載するVLD501と、コネクションが確立中であるか否かを記載するconnect_state502と、WAN側の端末のIPアドレスを表すWIP504と、もう一つのWAN側の端末のIPアドレスを表すwIP503と、WAN側の端末のTCPポート番号を表すWport506と、もう一つのWAN側の端末のTCPポート番号を表すwport505と、それぞれのWAN側のTCP通信の状態を表すwan_state(514、514−1)と、それぞれのWAN側の受信バッファ管理用のポインタを表すwan_left_rbuf(515、515−1)、wan_left_recv(516、516−1)、wan_right_recv(517、517−1)と、それぞれのWAN側のウィンドウスケールオプションの値を表すwan_ws(518、518−1)と、それぞれのWAN側の平均RTTを表すwan_rtt(519、519−1)と、それぞれのWAN側の受信バッファから読み出され加工中のデータサイズを表すwan_lan(529、529−1)と、それぞれのWAN側の送信バッファ管理用のポインタを表すwan_left_send(524、524−1)、wan_right_send(525、525−1)、wan_right_sbuf(526、526−1)と、それぞれのWAN側の直近の再送率を表すrts_ratio(530、530−1)と、それぞれのWAN側の過去の再送率を表すold_rts_ratio(531、531−1)と、それぞれのWAN側の直近の送信帯域を表すsnd(532、532−1)と、それぞれのWAN側の過去の送信帯域を表すold_snd(533、533−1)と、それぞれのWAN側のさらにそのまた過去の送信帯域を表すold_old_snd(534、534−1)と、それぞれのWAN側の対向装置のデータ受信中のコネクション数を記録するeach_rcv_num(541、541−1)と、それぞれのWAN側の対向装置の受信アクセス回線帯域を記録するeach_rcv_bandwidth(542、542−1)とを有する。
each_rcv_num(541、541−1)と、each_rcv_bandwidth542、542−1)は、対向装置が通知してきた情報に基づいて更新される。パケット再送部704が、対向装置が送信してきたACKパケットのTCPオプションフィールドに記載された値などを用いて、TCPコネクション毎に更新する。
max_snd_bandwidth(539、539−1)や、max_rcv_bandwidth(540、540−1)などは、端末1121経由などで手動で更新される。
snd_num(535、535−1)や、rcv_num(537、537−1)は、情報交換部2402が、それぞれのWAN毎に交換する。情報交換部2402が、状態テーブル212のエントリ毎にバッファ蓄積量をチェックし、送信バッファにデータが蓄積されているエントリはデータ送信中のコネクション、受信バッファにデータが蓄積されているエントリはデータ受信中のコネクションと判断してコネクション数を積算していくことで、snd_num(535、535−1)や、rcv_num(537、537−1)を計算する。
all_rcv_num(538、538−1)と、all_snd_num(536、536−1)は、装置2303内部の他の全てのTCP変換部200との間の情報交換に基づいて、更新される。TCP変換部200の情報交換部2402は、他の全てのTCP変換部200に対して、自分のsnd_num(535、535−1)や、rcv_num(537、537−1)を、それぞれのWAN毎に通知する。また、他の全てのTCP変換部200から通知されてきたsnd_num(535、535−1)や、rcv_num(537、537−1)の合計値をそれぞれのWAN毎に計算することで、all_rcv_num(538、538−1)と、all_snd_num(536、536−1)をそれぞれのWAN毎に得て、定期的に更新する。
装置2303が、それぞれのWANに対して独立に動作し、それぞれのWANにおいて情報交換を独立に行うことで、実施例1と同様な機能を、2つのWANを中継する装置でも実現することができる。
本実施例では、TCPコネクション毎に重み付けしてコネクション数を計算する一例を示す。
図26には、本実施例の状態テーブル212−1のフォーマットを示す。
状態テーブル212−1は、実施例1の構成に対して、各エントリに重みweight2601の情報が追加されている。
重みweight2601は、例えば、各コネクションのバッファ蓄積量(right_sbufとleft_sendの差と、right_recvとleft_rbufの差の合計)に基づいて決めても良いし、ポート番号(TCPポート番号)に基づいて決めても良い。ポート番号に基づいて決める場合は、装置1111に接続された端末1121から、ポート番号毎に重み付けを手動で情報交換部230に指定しておいてもよい。情報交換部230は、エントリのポート番号LportやWportを見て、指定された重み付けをweight2601に記録する。
情報交換部230は、コネクション数の合計値を計算する場合に、1コネクションに対して、該コネクションに対応するweight2601に記載された値を加算していく。例えば、weight2601が2の場合は該コネクション1本に対して2を加算し、0.5の場合は0.5を加算する。こうして求めたコネクション数の合計値(snd_num)を、他のTCP交換部200と交換する。
また、送信帯域制御部715が、自装置の複数のTCP通信の各コネクションに対する帯域を求めるには、装置1111の送信アクセス回線帯域max_snd_bandwidth539を、装置1111のデータ送信中のTCPコネクション数all_snd_num536で除算し、得られた値を該当するTCP通信のweight2601と乗算することで求める。また、送信帯域制御部715は、対向装置の複数のTCP通信の各コネクションに対する帯域を求めるには、対向装置の受信アクセス回線帯域each_rcv_bandwidth542を、対向装置のデータ受信中のTCPコネクション数each_rcv_num541で除算し、得られた値を該当するTCP通信のweight2601と乗算することで求める。
以上のように、重み付けweight2601を反映させたTCPコネクション数を用いることにより、TCPコネクション毎に重み付けしつつ、実施例1と同様な機能を実現することができる。
本発明は、例えば端末間の通信を中継する通信装置に利用可能である。
101 装置
102 装置
103 装置
110 ネットワーク
121 端末
200 TCP変換部
203、209 TCP処理部
204、208 受信バッファ
205、207 送信バッファ
206 プロキシ
212 状態テーブル
213 帯域テーブル
230 情報交換部
301 ポインタ
400 ヘッダデータ
520 エントリ
601 データ読出し部
715 送信帯域制御部
1100 カード
1106 NIF

Claims (14)

  1. TCP通信を中継するTCP変換部を有するカードを複数備え、
    前記TCP変換部は、
    自TCP変換部を介してデータ送信中のTCPコネクション数の情報を、自装置内の他のTCP変換部との間で交換する情報交換部と、
    各TCP通信の最大送信帯域を定める帯域制御部と
    を有し、
    前記情報交換部は、他のTCP変換部と交換したTCPコネクション数の情報に基づいて、装置全体におけるデータ送信中のTCPコネクション数の合計値を計算し、
    前記帯域制御部は、装置全体におけるデータ送信中のTCPコネクション数の合計値に基づいて、各TCP通信の最大送信帯域を定める通信装置。
  2. 請求項1に記載の通信装置において、
    前記TCP変換部は、接続している回線の最大送信帯域を記録する状態記憶領域をさらに有し、
    前記帯域制御部は、記録された回線の最大送信帯域と、装置全体におけるデータ送信中のTCPコネクション数の合計値とに基づいて、各TCP通信の最大送信帯域を定める制限することを特徴とする通信装置。
  3. 請求項1に記載の通信装置において、
    前記TCP変換部は、TCP通信の対向装置から、該対向装置におけるデータ受信中のTCPコネクション数の合計値を受信し、
    前記帯域制御部は、装置全体のデータ送信中のTCPコネクション数の合計値と、前記対向装置から受信した対向装置におけるデータ受信中のTCPコネクション数の合計値とに基づいて、各TCP通信の最大送信帯域を制限することを特徴とする通信装置。
  4. 請求項3に記載の通信装置において、
    前記情報交換部は、
    データ受信中のTCPコネクション数の情報を他のTCP変換部との間で交換し、
    交換したTCPコネクション数の情報に基づいて、装置全体のデータ受信中のTCPコネクション数の合計値を計算し、
    計算した装置全体のデータ受信中のTCPコネクション数の合計値を、前記対向装置へ通知することを特徴とする通信装置。
  5. 請求項3に記載の通信装置において、
    前記TCP変換部は、装置の接続している回線の最大送信帯域を記録する状態記憶領域をさらに有し、
    前記TCP変換部は、前記対向装置における回線の最大受信帯域を、該対向装置からさらに受信し、
    前記帯域制御部は、自装置に記録した回線の最大送信帯域と、自装置全体のデータ送信中のTCPコネクション数の合計値と、前記対向装置から受信した該対向装置における回線の最大受信帯域と、前記対向装置から受信した該対向装置におけるデータ受信中のTCPコネクション数の合計値とに基づいて、各TCP通信の最大送信帯域を制限することを特徴とする通信装置。
  6. 請求項5に記載の通信装置において、
    前記帯域制御部は、自装置に記録した回線の最大送信帯域を、自装置全体のデータ送信中のTCPコネクション数の合計値で除算した値と、前記対向装置から受信した該対向装置における回線の最大受信帯域を、該対向装置から受信した該対向装置におけるデータ受信中のTCPコネクション数の合計値で除算した値とに基づいて、各TCP通信の最大帯域を制限することを特徴とする通信装置。
  7. 請求項5に記載の通信装置において、
    前記状態記憶領域は、接続している回線の最大受信帯域をさらに記録し、
    前記情報交換部は、記録した回線の最大受信帯域と、自装置全体のデータ受信中のTCPコネクション数の合計値を、前記対向装置へ通知することを特徴とする通信装置。
  8. 請求項1に記載の通信装置において、
    前記帯域制御部は、各TCP通信におけるデータの再送率をさらに用いて、各TCP通信の最大送信帯域を制限することを特徴とする通信装置。
  9. 請求項8に記載の通信装置において、
    前記帯域制御部は、
    各TCP通信における基準時刻後の再送帯域と基準時刻以前の送信帯域とを計測し、
    基準時刻後の再送帯域と基準時刻以前の送信帯域で除算することでデータの再送率を計算することを特徴とする通信装置。
  10. 請求項1に記載の通信装置において、
    前記帯域制御部は、各TCP通信における再送率の変化率を計算し、
    再送率の変化率に応じて各TCP通信の最大送信帯域を変更することを特徴とする通信装置。
  11. 請求項10に記載の通信装置において、
    前記帯域制御部は、再送率の変化率が予め定められた閾値を超過したときに各TCP通信の最大送信帯域を再送率に応じて減少させることを特徴とする通信装置。
  12. 請求項10に記載の通信装置において、
    前記帯域制御部は、再送率の変化率が予め定められた閾値を超過しないときに各TCP通信の最大送信帯域を増加させることを特徴とする通信装置。
  13. 請求項1に記載の通信装置において、
    各TCP通信の最大送信帯域に従いデータを送信する送信制御部
    さらに備える通信装置。
  14. 請求項1に記載の通信装置において、
    各TCP通信に対して重みを設定し、
    各TCPコネクションについて、対応する各重みを加算してTCPコネクション数の合計値を求め、該重みに応じて最大送信帯域を定める通信装置。
JP2011163047A 2011-07-26 2011-07-26 通信装置 Expired - Fee Related JP5264966B2 (ja)

Priority Applications (5)

Application Number Priority Date Filing Date Title
JP2011163047A JP5264966B2 (ja) 2011-07-26 2011-07-26 通信装置
CN201280002708XA CN103098422A (zh) 2011-07-26 2012-03-01 通信装置
EP12818266.4A EP2738983A4 (en) 2011-07-26 2012-03-01 COMMUNICATION DEVICE
US13/819,839 US8681617B2 (en) 2011-07-26 2012-03-01 Communication device
PCT/JP2012/055259 WO2013014962A1 (ja) 2011-07-26 2012-03-01 通信装置

Applications Claiming Priority (1)

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

Publications (2)

Publication Number Publication Date
JP2013027010A JP2013027010A (ja) 2013-02-04
JP5264966B2 true JP5264966B2 (ja) 2013-08-14

Family

ID=47600822

Family Applications (1)

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

Country Status (5)

Country Link
US (1) US8681617B2 (ja)
EP (1) EP2738983A4 (ja)
JP (1) JP5264966B2 (ja)
CN (1) CN103098422A (ja)
WO (1) WO2013014962A1 (ja)

Families Citing this family (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2014165551A (ja) * 2013-02-21 2014-09-08 Fujitsu Ltd 通信装置、通信方法、プログラム、及び、通信システム
WO2014141437A1 (ja) * 2013-03-14 2014-09-18 株式会社日立製作所 通信ノード装置、帯域制御方法、及び計算機読み取り可能な記憶媒体
US11018935B1 (en) * 2013-05-10 2021-05-25 Marvell Asia Pte Ltd Network traffic quality-based dynamic path change
JP2016201579A (ja) * 2013-08-13 2016-12-01 株式会社日立製作所 通信装置及び送信帯域制御方法
US9621468B1 (en) * 2014-12-05 2017-04-11 Amazon Technologies, Inc. Packet transmission scheduler
JP6468560B2 (ja) * 2015-10-22 2019-02-13 日本電信電話株式会社 無線通信システム及びその制御方法、並びに、通信制御プログラム
JP6927155B2 (ja) * 2018-05-30 2021-08-25 日本電信電話株式会社 異常検出装置、異常検出方法および異常検出プログラム

Family Cites Families (17)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH104409A (ja) * 1996-06-14 1998-01-06 Hitachi Ltd 複数のユニットからなるシステムおよび情報の転送制御方法
AU2002352637A1 (en) * 2001-11-13 2003-05-26 Ems Technologies, Inc. Performance enhancing proxy techniques for internet protocol traffic
US7747255B2 (en) * 2003-03-26 2010-06-29 Sony Corporation System and method for dynamic bandwidth estimation of network links
US7324523B2 (en) * 2003-03-26 2008-01-29 Sony Corporation System and method for dynamically allocating bandwidth to applications in a network based on utility functions
US7656799B2 (en) * 2003-07-29 2010-02-02 Citrix Systems, Inc. Flow control system architecture
US8238241B2 (en) * 2003-07-29 2012-08-07 Citrix Systems, Inc. Automatic detection and window virtualization for flow control
US7522620B2 (en) * 2003-08-12 2009-04-21 Intel Corporation Method and apparatus for scheduling packets
US20050220115A1 (en) * 2004-04-06 2005-10-06 David Romano Method and apparatus for scheduling packets
CN101253737B (zh) * 2005-08-31 2013-02-20 日本电气株式会社 通信系统、通信终端、中继节点及用于这些设备的通信方法以及其程序
JP2007097144A (ja) * 2005-08-31 2007-04-12 Nec Corp 通信システム、通信端末、中継ノード及びそれに用いる通信方法並びにそのプログラム
US7970733B2 (en) * 2006-09-13 2011-06-28 Broadcom Corporation Method for communicating data in xDSL using data retransmission
CN103152279B (zh) * 2007-03-12 2016-08-03 思杰系统有限公司 用于在tcp拥塞控制中提供服务质量优先的系统和方法
EP2058989A1 (en) * 2007-11-09 2009-05-13 Thomson Licensing, Inc. Wireless rate control method
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
CN101494652B (zh) * 2009-02-27 2012-01-11 中国电子科技集团公司第五十四研究所 一种卫星通信系统中增强tcp协议性能的方法
CN102577267B (zh) * 2009-09-16 2014-12-24 株式会社日立制作所 使终端之间的通信高速化的通信装置及通信系统
WO2012066824A1 (ja) 2010-11-16 2012-05-24 株式会社日立製作所 通信装置および通信システム

Also Published As

Publication number Publication date
EP2738983A4 (en) 2015-03-11
EP2738983A1 (en) 2014-06-04
US8681617B2 (en) 2014-03-25
WO2013014962A1 (ja) 2013-01-31
JP2013027010A (ja) 2013-02-04
CN103098422A (zh) 2013-05-08
US20130163422A1 (en) 2013-06-27

Similar Documents

Publication Publication Date Title
JP5651805B2 (ja) 通信装置
JP5264966B2 (ja) 通信装置
JP5816718B2 (ja) 通信装置、通信システム、およびデータ通信の中継方法
JP5258938B2 (ja) 通信装置
US8843654B2 (en) Data packet transfer over wide area network in fast and reliable manner
JP5521060B2 (ja) 端末間の通信を高速化する通信装置および通信システム
US9467390B2 (en) Method and device for data transmission
US9071452B2 (en) High-speed communication system and high-speed communication method
JP5832335B2 (ja) 通信装置および通信システム
WO2015022809A1 (ja) 通信装置及び送信帯域制御方法
JP2014135575A (ja) 通信装置、及び、送信帯域の制御方法
JP2009200581A (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

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20130329

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

Free format text: JAPANESE INTERMEDIATE CODE: A971005

Effective date: 20130417

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

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20130423

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20130430

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