JP6303452B2 - 通信ノード - Google Patents

通信ノード Download PDF

Info

Publication number
JP6303452B2
JP6303452B2 JP2013249286A JP2013249286A JP6303452B2 JP 6303452 B2 JP6303452 B2 JP 6303452B2 JP 2013249286 A JP2013249286 A JP 2013249286A JP 2013249286 A JP2013249286 A JP 2013249286A JP 6303452 B2 JP6303452 B2 JP 6303452B2
Authority
JP
Japan
Prior art keywords
packet
link
queue
packets
tcp
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
JP2013249286A
Other languages
English (en)
Other versions
JP2015106880A (ja
Inventor
哲明 鶴岡
哲明 鶴岡
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Fujitsu Ltd
Original Assignee
Fujitsu Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Fujitsu Ltd filed Critical Fujitsu Ltd
Priority to JP2013249286A priority Critical patent/JP6303452B2/ja
Priority to US14/557,486 priority patent/US9674095B2/en
Publication of JP2015106880A publication Critical patent/JP2015106880A/ja
Application granted granted Critical
Publication of JP6303452B2 publication Critical patent/JP6303452B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

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/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
    • 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
    • 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/32Flow control; Congestion control by discarding or delaying data units, e.g. packets or frames
    • H04L47/323Discarding or blocking control packets, e.g. ACK packets
    • 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/28Flow control; Congestion control in relation to timing considerations
    • H04L47/283Flow control; Congestion control in relation to timing considerations in response to processing delays, e.g. caused by jitter or round trip time [RTT]
    • 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/32Flow control; Congestion control by discarding or delaying data units, e.g. packets or frames

Description

本開示は、通信ノードに関する。
インターネットに代表されるように、近年におけるネットワークでは、ネットワーク層以下の層(レイヤ)は、パケット化されたデータをデータグラムとして宛先まで転送する機能をサポートするが、データが宛先に到着したことを保証しない。エンド・トゥ・エンド(End-to-End)の転送保証は、ネットワーク層の上位層、例えばTransport Control Protocol(TCP)に代表されるトランスポート層のサービスを用いて実現される。以下、エンド・トゥ・エンドのトランスポート層サービスを用いた個々の通信を“コネクション”と称する。
上記したTCPのような、トランスポート層サービスを用いてエンド・トゥ・エンドの転送保証を行うネットワーク構成では、多くの場合ベストエフォート型でネットワークが利用される。このため、例えば、ネットワークを流れるトラフィック量に応じて、送信可能なデータ量,すなわち通信可能な容量が変化する。
通信可能な容量の変化に対応するために、TCPは、輻輳検出アルゴリズムを具備し、通信量を制御する。輻輳検出アルゴリズムの例として、tahoeおよびその改良版reno/new renoと呼ばれる輻輳制御アルゴリズムが知られている。
特表2008−511205号公報 特表2001−510957号公報 特開2010−187129号公報
しかしながら、上記した輻輳検出アルゴリズムにおける通信量の制御は、以下のような単純なものであった。すなわち、パケットの廃棄(バッファのオーバーフロー)が検出されるまで、ラウンドトリップタイム(RTT)あたりの送信パケット数(輻輳ウィンドウと呼ばれる)が1つずつ増やされる。一方、パケットの廃棄が検出されたときには、RTTあたりの送信パケット数が半分或いは最小値に低減される。このため、RTTが大きい場合には、十分な空き帯域があってもスループットが空き帯域を有効利用できるように上昇するまでに時間がかかり、実行通信速度が得られない、という問題があった。
特に、近年では、Long Term Evolution(LTE)やWorldwide Interoperability for Microwave Access (WiMAX)のような、様々な無線通信規格に準拠する端末が、ネットワークと無線接続される形態が増えてきている。このような形態では、TCPコネクションは、無線区間に跨がって確立される。無線区間の帯域幅は、無線環境(端末の電波の受信状況)に応じて変動する。
良好なスループットを得るには、無線環境の変動に伴う帯域幅の増減に追従するように、データの送信レートが制御されることが好ましい。しかしながら、上記した輻輳検出アルゴリズムでは、無線環境の好転により帯域幅が増加しても、増加した帯域幅を利用できるように送信レートが上昇するまでに時間がかかる。一方、送信レートの低下は、バッフ
ァのオーバーフロー(パケットの廃棄)によって起こるため、再送手順がスループット向上の妨げとなる。上記問題は、無線リンクに限られず、環境の変化に応じて帯域変動が起こり得る有線リンクについても当てはまる。
本発明の態様の一つは、上述した事情に鑑みなされたものであり、エンド間にあるリンクの帯域に合わせたスループット調整を輻輳制御よりも短時間で実行可能とする技術を提供することを課題とする。
本発明の態様(aspect)の一つは、ウィンドウサイズを用いたフロー制御及び輻輳制御を行う特定のプロトコルに従って送信側のエンドと受信側のエンドとの間をパケットが流れるパケット転送路上に配置される通信ノードであって、
前記転送路上にあるリンクからパケットを受信する処理と、前記リンクへパケットを送信する処理とを行う通信インタフェースと、
前記リンクから受信される前記特定のプロトコルのパケット又は前記リンクへ送信される前記特定のプロトコルのパケットを一時的に蓄積するキューを記憶する記憶装置と、
前記リンクの受信側の現在の帯域に基づき、前記キューに蓄積されたパケットの滞留時間を調整する制御装置と、を含む。
本発明の態様の一つによれば、エンド間にあるリンクの帯域に合わせたスループット調整を輻輳制御よりも短時間で実行可能となる。
図1は、実施形態に係るネットワークシステムの構成例を示す。 図2は、実施形態1に係るトラフィック制御装置を含む通信ノードが適用されたネットワークシステムの例を示す。 図3は、TCP(トランスポート層サービス)を用いたデータの転送例を示すシーケンス図である。 図4は、リンク帯域(BW)の変化に対する挿入遅延Dの変化の例を示す。 図5は、トラフィック制御装置の構成例を示す図である。 図6は、RTT測定方法の一例を示す。 図7は、アップリンク転送における滞留時間調整の例を示す。 図8は、実施形態2に係るトラフィック制御装置の構成例を示す。 図9は、実施形態3に係るトラフィック制御装置の構成例を示す図である。 図10は、実施形態4に係るトラフィック制御装置の構成例を示す。 図11は、実施形態5に係る通信アダプタのハードウェア構成例を示す。 図12は、CPUがトラフィック制御用のプログラムを実行することによって生じる機能を模式的に示す。 図13は、コネクション管理テーブルのデータ構造例を示す。 図14は、制御対象のパケットをキューに格納するまでの処理例を示すフローチャートである。 図15は、TCPヘッダのフォーマットを示す。 図16Aは、TCPヘッダのオプションフィールドにセット可能なタイムスタンプオプションのフォーマット例を示す。 図16Bは、タイムスタンプオプションの他のフォーマット例を示す。 図17は、制御対象のキューに格納されたパケットの読み出し処理の例を示すフローチャートである。 図18は、遅延量の付与方法の一例を示す。 図19は、通信ノードの一例であるモバイルルータのハードウェア構成例を示す。 図20は、通信ノードの一例である基地局のハードウェア構成例を示す。
以下、図面を参照して本発明の実施形態について説明する。実施形態の構成は例示であり、本発明は実施形態の構成に限定されない。
〔ネットワークシステムの例〕
図1は、本発明の実施形態に係るトラフィック制御装置を適用可能なネットワーク構成例を示す図である。図1において、ネットワークサービスのプロバイダによって管理及び運用されるプロバイダ網1がある。プロバイダ網1はインターネット2に接続されている。プロバイダ網1は、ルータのような中継装置や、ユーザ(端末)に対してアプリケーション(APL)に基づくサービスを提供するアプリケーションサーバ(APLサーバ)1Aなどを含む。
プロバイダ網1は、ブロードバンド・リモート・アクセス・サーバ (BRAS)3やゲ
ートウェイ(GW)4を介してアクセス網5と接続されている。アクセス網5は、例えば、E-UTRA(Evolved Universal Terrestrial Radio Access)/E-UTRAN(Evolved Universal Terrestrial Radio Access Network)や、無線LAN(Local Area Network)に適用される様々な無線網である。但し、アクセス網5は、無線網に限られず、LANも含み得る。プロバイダ網1,インターネット2,アクセス網5のそれぞれは、「ネットワーク」の一例である。
アクセス網5は、基地局(BS),フェムトBS,アクセスポイントのような、端末と無線通信を行う無線機を備えている。図1には、アクセス網5に接続されたBS6及びBS7が示されている。プロバイダ網1も、端末と通信する無線機を有することができ、例として、フェムトBS8が示されている。
端末は、アクセス網5の無線機(BS6,BS7,フェムトBS8)と直接に無線通信を行う。或いは、端末は、無線アダプタ,Customer Premises Equipment(CPE),テ
ザリング機能を有する通信機器(例えば、スマートフォン)を介して無線機と通信を行うことができる。CPEは、モバイルルータ,ブロードバンドルータ,セットトップボックス等を含む。
図1には、フェムトBS8と無線通信を行う端末9と、BS7と無線通信を行う端末10と、BS7と無線アダプタ(AD)11を介して通信を行う端末12と、CPE13を介して通信を行う端末14とが図示されている。
端末は、例えば、スマートフォン,フィーチャーフォン,セルラーフォン,Personal Digital Assistant (PDA),パーソナルコンピュータ(PC),ワークステーションの
ような、TCP/IP通信機能を有する様々なコンピュータである。PCのタイプは、ラップトップ型,タブレット型,デスクトップ型のいずれでも良い。各端末は、ネットワーク(アクセス網5,プロバイダ網1)を介して、通信相手(Correspondent Node(CN))と、TCPコネクションを確立し、TCP/IP通信を行うことができる。
図1に示す例では、例えば、端末12は、通信アダプタ11,BS7,アクセス網5,GW4,プロバイダ網1,及びインターネット2を介してCN15と接続され、TCP通信(TCP/IP通信)を行う。TCP通信にあたり、端末12とCN15との間に、TCPコネクションが確立され、双方向のパケットフローが生じる。端末12及びCN15は、それぞれの「エンド」に相当する。端末12及びCN15は、双方向通信を行う。端
末10及びCN15のそれぞれは、「送信側のエンド」及び「受信側のエンド」の一例である。
実施形態に係るトラフィック制御装置は、エンド間のTCPコネクション上に位置する機器に実装される。例えば、帯域幅が変動するリンク(代表的には無線リンク)に対して直接的なパケットの送受信を行う通信機器(通信ノード)にトラフィック制御装置は実装される。
図1に示す例では、トラフィック制御装置は、BS6,BS7,フェムトBS8のような網の無線機として機能する中継装置に実装可能である。また、トラフィック制御装置は、網の無線機との直接の通信機能を持つ端末(無線端末:図1では、端末9及び端末10)に実装可能である。或いは、トラフィック制御装置は、無線アダプタ11や、CPE13,及びテザリング機能を有する通信機器(中継装置)のそれぞれに実装可能である。
〔実施形態1〕
図2は、実施形態1に係るトラフィック制御装置を含む通信ノードが適用されたネットワークシステムの例を示す。図2に示すネットワークシステムは、クライアント21が、ネットワーク22を介して接続されたサーバ(CN)23と双方向のTCP通信を行うクライアントサーバシステムである。クライアント21は、トラフィック制御装置を含む通信ノード20を介してネットワーク22に接続される。
クライアント21は、図1を用いて説明した端末に相当し、ネットワーク22は、図1に示したアクセス網5,プロバイダ網1,インターネット2の少なくとも1つに相当する。サーバ23は、図1を用いて説明したCN15に相当する。通信ノード20は、図1に示したCPE13に相当し、例えば、モバイルルータである。
通信ノード20は、ネットワーク22側のリンク24と接続される通信インタフェース(図示せず)と、クライアント21側のリンク25と接続される通信インタフェース(図示せず)とを含む。クライアント21とサーバ23とは、TCP通信の開始に当たって、リンク25,通信ノード20,リンク24,ネットワーク22を介してTCPコネクションを確立する。
そして、TCPコネクション(TCP回線)を用いて、パケット(TCP/IPパケット)がクライアント21とサーバ23との間で送受信される。通信ノードは、リンク24から受信されるダウンリンク方向のパケットをリンク25に送信(中継)する一方で、リンク25から受信されるアップリンク方向のパケットをリンク24に送信(中継)する。なお、ダウンリンク方向は、「第1方向」の一例であり、アップリンク方向は、「第2方向」の一例である。また、リンク24は、「第1リンク」の一例であり、リンク25は、「第2リンク」の一例である。
TCPパケットの送受信によって、サーバ23からクライアント21へ向かう方向(ダウンリンク方向とする)のパケットのフローと、クライアント21からサーバ23へ向かう方向(アップリンク方向とする)のパケットのフローとが生じる。これらのフローは、TCPコネクションに基づくパケットフローとして管理される。パケットフローは、プロトコル種別(例えば、ポート番号)や、TCPコネクションの識別子(例えば、送信元及び宛先ポート番号並びに送信元及び宛先IPアドレスの組み合わせ)によって識別される。
TCPによって、サーバ23が、クライアント21に提供すべきデータブロック(TCPでは「セグメント」と呼ばれる)を含んだTCP/IPパケット(データパケットと呼
ぶ)P1をクライアント21へ送信する。データパケットP1は、データパケットP1を識別するためのシーケンス番号を含んでいる。クライアント21は、データパケットP1が正常に受信されたとき、正常に受信されたパケットのシーケンス番号に対応する確認応答番号を含む肯定応答(Acknowledgement:ACK(確認応答))を含んだパケット(A
CKパケット)P2をサーバ23へ送信する。サーバ23は、ACKパケットを受信することで、データパケットP1が正常に受信されたことを認識する。ACKパケットの受信を契機にサーバ23は、次のデータパケットP1を送信する。クライアント21がサーバ23へデータパケットP1を送信する場合には、上記と逆の動作が行われる。
図3は、TCP(トランスポート層サービス)を用いたデータの転送例を示すシーケンス図である。送信側エンド(以下単に「送信側」と記載することもある。図2ではサーバ23)は、ウィンドウサイズ(Win)に応じて、それぞれ異なるシーケンス番号を有する
1以上のデータパケットP1(実線矢印)を送信する。ウィンドウサイズは、受信側エンド(以下単に「受信側」と記載することもある。図2ではクライアント21)の確認応答を待つ(受信する)ことなく送信可能なデータ量(RTT当たりの送信データパケット数)を示す。受信側では、受信されたデータパケットに対するACKパケットP2(破線矢印)を送信する。ACKパケットP2には、受信された複数のシーケンス番号を含めることができる。図3の例では、4つのデータパケットP1に対して、2つ分のデータパケットに対するACKパケットP2が送信されている。
ウィンドウサイズは、受信側からのACKパケットP2にて示され、送信側は、ウィンドウサイズの範囲で、ACKパケットP2を待つことなくデータパケットP1を送信することができる。送信データ量がウィンドウサイズに達すると、送信側は、データパケットP1の送信を停止し、ACKパケットP2の受信を待つ。そして、送信側は、ACKパケットP2を受信したとき、当該ACKパケットP2で示されるウィンドウサイズがデータパケットP1の送信を許容する場合には、次のデータパケットP1の送信を行う。これに対し、送信側は、或る期間内にACKパケットP2を受信できない場合、対応するデータパケットP1の再送を行う。これによって、クライアント21に対するデータパケットP1の転送が保証される。上記制御は、一般に、フロー制御と呼ばれている。
送信側では、或るシーケンス番号のデータパケットP1が送信されてから、当該シーケンス番号に対応する確認応答番号を含むACKパケットP2が受信されるまでの時間が、ラウンドトリップタイム(RTT)として観測される。或るデータパケットP1に対するACKパケットP2の受信を送信側が待つ時間(待ち時間)は、RTTに基づいて決定される。待ち時間が満了してもACKパケットP2が受信されないとき、送信側は、データパケットP1の再送を行う。
また、TCPでは、上記したフロー制御と並列に以下のような輻輳制御が行われる。すなわち、TCPでは、コネクション確立時に受信側から通知されたウィンドウサイズに拘らず、ウィンドウサイズの初期値を所定値(例えば最小値)に設定し、データパケットP1を受信側に送る。送信側は、受信側からデータパケットP1のACKパケットP2を受信する毎に、ウィンドウサイズを徐々に(例えば、RTT当たりパケット1個分)増加させる。データパケットP1又はACKパケットP2のロストが起きなければ、ウィンドウサイズは、最終的に、コネクション確立時に通知されたウィンドウサイズ(最大ウィンドウサイズ)となる。このようなウィンドウサイズの制御はスロースタート制御と呼ばれる。一方で、例えば、データパケットP1の転送路上のバッファ溢れによって或るデータパケットP1がロストし、当該或るデータパケットP1に対するACKパケットP2が送信側で受信されない場合(待ち時間が満了した場合)がある。このとき、送信側は、輻輳検出アルゴリズムによって、ウィンドウサイズを所定値(例えば、最大ウィンドウサイズの半分の値、或いは最小値)に低下させる。その後、スロースタート制御によって、再びA
CKパケットの受信状況に応じてウィンドウサイズを徐々に増加させる処理が行われる。
本実施形態では、通信ノード20がリンク24からデータパケットP1を受信する方向(受信側)におけるリンク24の帯域の変動に応じて、リンク24へ送信するACKパケットP2のキューにおける滞留時間を制御する例について説明する。
図2に戻って、通信ノード20は、トラフィック制御装置26を含む。通信ノード20は、リンク24及び25に対して、上記したパケットフローのパケット(データパケットP1,ACKパケットP2)についての直接な送受信を行う。
トラフィック制御装置26は、パケットフローのパケット(データパケット、ACKパケット)を一時的に滞留させるキュー(バッファ)を有する。図2に示す例では、トラフィック制御装置26は、ダウンリンク方向のパケット(データパケットP1)を一時的に蓄積可能なキュー27と、アップリンク方向のパケット(ACKパケットP2)を一時的に蓄積可能なキュー28とを含む。トラフィック制御装置26は、キュー27及びキュー28におけるパケットの滞留時間を調整(制御)することができる。図2の例では、キュー28における滞留時間が調整(制御)される。これら滞留時間が調整(制御)可能なキューは、双方向に設けても良いが、一方向のみに設けることもできる。
リンク24は、例えば、無線リンクであり、環境の変化に伴ってリンク24の帯域幅(以下単に帯域と表記)が変動する特性を有する。トラフィック制御装置26は、例えば、リンク24を監視対象のリンクとし、リンク24の受信側の帯域を監視する。以下の説明は、リンク24の受信側が監視対象である場合について説明するが、リンク24とリンク25との双方の受信側の帯域が監視対象であっても、リンク25の受信側のみが監視対象であっても良い。リンク25が監視される場合の動作は、制御対象のパケット及びキューが異なる点を除き、以下に説明するリンク24に関する動作及び処理と同じである。なお、監視対象のリンクは、無線リンクに限定されず、有線リンクであっても、環境の変化に応じて帯域が変動するリンクは、監視対象のリンクとなり得る。
トラフィック制御装置26は、通信ノード20を通過するTCPコネクションに関して、データパケットP1に含まれたシーケンス番号,ACKパケットP2に含まれたシーケンス番号(応答番号)を含むヘッダ情報を観測する。また、トラフィック制御装置26は、パケットのRTTの観測を行う。
トラフィック制御装置26は、リンク24の帯域に応じてACKパケットP2の遅延時間(遅延量)を調整する。遅延量の調整は、キュー28におけるACKパケットP2の滞留時間の調整によって行われる。リンク24の受信側の帯域が大きいときに滞留時間が短く、リンク24の受信側の帯域が小さいときに滞留時間が長くなるように調整される。
ここに、ウィンドウサイズ(Win[bit])をRTT[sec]で除した時のデータ帯域値[bit
/sec]は、実効スループットを表す(Win/RTT=実効スループット)。ウィンドウサイズとRTTとを掛けたもの(Win×RTT)は、帯域幅遅延積(BDP)と呼ばれる。実効スループットがリンク帯域(BW)に達していれば(実効スループット=リンク帯域(BW))となる。したがって、ウィンドウサイズがBDPに達することは、リンク帯域を使い切ることを意味する。
上記に鑑み、トラフィック制御装置26は、例えば、リンク24の受信側の帯域が最大であるときに、ACKパケットP2に与える遅延量(滞留時間)が0となることを基準として、遅延量(滞留時間)を調整する。具体的には、トラフィック制御装置26は、リンク24の帯域が最大帯域から低下している量に合わせて、キュー28におけるパケット(
ACKパケットP2)の滞留時間を調整する。最大帯域は、リンク24の物理的な帯域を上限として、適宜設定可能である。
すなわち、帯域遅延積(BDP=Win×RTT)における“帯域”の増減を“遅延(滞留時間)”の増減で吸収し、パスのBDPが結果的に維持されるように、トラフィック制御装置26は、最大帯域からの低下量に応じた遅延(以下、「挿入遅延」、「挿入遅延D」と表記)を追加する。すなわち、トラフィック制御装置26は、キュー28に蓄積されたACKパケットP2の滞留時間を制御する。これによって、TCPコネクションにおける輻輳ウィンドウサイズの変更なく、送信レートを維持可能となる。
換言すれば、以下の式(1)を満たす挿入遅延Dが、リンク24(帯域変動リンク)の通信可能帯域(BW)に合わせて挿入される。
(RTT+D)×BWnow = RTT×BWmax ・・・(1)
但し、BWnowは、帯域変動リンクにおける現在の通信可能帯域であり、BWmaxは、帯域変動リンクにおける最大通信可能帯域である。上記式(1)の変形によって、挿入遅延Dは、以下の式(2)で求めることができる。
D = RTT ×(BWmax − BWnow / BWnow) ・・・(2)
挿入遅延Dの算出に伴い、キュー28におけるパケットの滞留時間が変更される。このとき、現在の滞留時間を、いきなり挿入遅延Dに応じた滞留時間に変更することは好ましいことではない。例えば、スループットが最大値30Mbpsから5Mbpsに低下した場合を考える。このとき、本来のRTTが10msであったと仮定すると、5Mbpsのときの挿入遅延Dは50msとなる。しかしながら、このような50msの遅延が一時に加えられると、遅延(滞留時間)が増加したタイミングでACKパケットP2の間隔が50ms空いてしまう。一方、RTTが5msに戻されるときに、状況次第ではACKパケットP2の順序の入れ替えが必要となる。
このため、遅延量の増減が発生した場合は、トラフィック制御装置26は、徐々に遅延量を増減させて、最終的に挿入遅延Dの値に応じた滞留時間に到達するように、滞留時間を制御する。このように、遅延量を連続的に変化させることで、不要なパケット間隔の発生や追い越しを回避することができる。
過渡期においては、遅延が印加(挿入)される前の経過時間ΔTは、変化前の帯域BWprevに従っており、経過時間ΔTを変化後の帯域BWnewに相当するものに換算する。遅
延印加後に見える時間経過ΔT’は、以下の式(3)で表される。
ΔT’=ΔT×BWprev/BWnew ・・・(3)
式(3)より、遅延の付加量の変化ΔDは、下記の式(4)となり、遅延量の変化の勾配Kは、以下の式(5)で求められる。
ΔD = ΔT'−ΔT = ((BWprev/BWnew)−1)ΔT ・・・(4)
となり、遅延量の変化の勾配Kは以下の式(5)で求められる。
K = (BWprev/BWnew)−1 ・・・(5)
この結果、遅延を挿入する時刻tにおける遅延量D(t)は、以下の式(6)で表すことができ、過渡期において、BWprev相当のACKパケットの送信ペースをBWnew相当の
ACKパケットの送信ペースに換算することができる。
D(t)=D(t0)+K(t−t0) ・・・(6)
図4は、リンク帯域(BW)の変化に対する挿入遅延Dの変化の例を示す。図4に示すグラフの横軸は時間であり、縦軸は、リンク帯域(BW)及び遅延量を示す。リンク帯域BWは、0から所定の最大値BWmaxまでの間を変動し得る。グラフ中の塗りつぶされた
範囲は、時間経過に伴うリンク帯域BWの変動を示す。実線の折れ線グラフは、リンク帯域BWに応じた挿入遅延Dの変化を示す。破線の折れ線グラフは、挿入遅延Dと伝送路遅延等の本来生じる遅延とを合算した遅延を示す。このように、リンク帯域BWと、挿入遅延Dとは反比例するように変化する。但し、挿入遅延Dは、勾配Kで目的の遅延量まで徐々に連続的に変動する。
このように、個々のTCPコネクション毎に、監視対象のリンク帯域の変動に合わせてRTTが変動し、帯域遅延積(BPD)を維持されれば、TCPにおいて輻輳ウィンドウサイズが変化しない(輻輳制御によるウィンドウサイズの低下を回避し得る)状態で、適正なスループットで送信がなされる。複数のTCPコネクションが同一のリンクを共用する場合においても、各TCPコネクションに関して同じ比率で送信レートが増減する。このため、全体の比率が維持される。
図5は、トラフィック制御装置の構成例を示す図である。図5に示すトラフィック制御装置は、環境の変化に伴ってダウンリンク方向の帯域変動が生じるリンク24を監視する。トラフィック制御装置は、監視対象のリンクにおける帯域変動に応じて、当該リンクを通過する、TCP又はTCP相当のプロトコル(上記したフロー制御及び輻輳制御が行われるプロトコル)に従って生成されたパケットフローに関して、確認応答パケット(ACKパケットP2)の遅延量(滞留時間)を調整する。
図5の例では、ダウンリンク方向のリンクの帯域変動に対応する構成を例示する。但し、アップリンク方向の帯域変動にも対応するように、遅延挿入をダウンリンク方向のキュー(キュー27)にも適用することができる。
図5には、端末21Aと通信相手(Correspondent Node: CN)23Aとが図示されている。端末21Aは、図2に示したクライアント21に相当し、CN23Aは、図2に示したサーバ23に相当する。通信ノード20は、端末21Aとリンク(図示略)を介して接続される一方、リンク24を介してネットワーク(NW)22に接続されたL2対向装置22Aと接続される。L2対向装置22Aは、例えば基地局であり、リンク24は、無線リンクであり、環境の変化に伴って帯域幅が変動する。
端末21Aは、複数のアプリケーション(APL)41と、TCPをサポートするTCP機能42とを有している。CN23Aも、端末21Aと同様に、複数のアプリケーション(APL)51と、TCP機能52とを有している。
端末21Aの或るAPL41は、CN23Aの或るAPL51とのTCP通信によって、データの授受を行う。APL41とAPL51とのTCP通信開始に当たり、TCP42とTCP52との間でTCPコネクションが確立される。TCPコネクション上で、双方向のパケットフローが生成される。パケットフローは、端末21Aから通信ノード20,リンク24,L2対向装置22A,NW22を通ってCN23Aに到達するアップリンク方向のフローと、CN23AからNW22,L2対向装置22A,リンク24,通信ノード20を通って端末21Aに到達するダウンリンク方向のフローとからなる。
CN23Aの或るAPL51は、端末21Aへ送信すべきデータをTCP機能52に送る。TCP機能52は、データにTCPヘッダを付与する。さらに、CN23Aでは、IPヘッダの付与、レイヤ2,レイヤ1の処理が行われ、パケットが端末21Aへ向けて送信される。
通信ノード20は、トラフィック制御装置26を有している。トラフィック制御装置26は、ダウンリンク方向のパケットを一時的に蓄積するキュー(バッファ)27と、アップリンク方向のパケットを一時的に蓄積するキュー(バッファ)28とを有している。さらに、トラフィック制御装置26は、受信処理部31と、リンク帯域検出部32と、RTT測定部33と、滞留時間制御部34と、送信処理部35とを有している。キュー27は、CN23Aから送信されるデータパケットを蓄積し、キュー28は、端末21Aから送信されるACKパケットを蓄積する。
受信処理部31は、CN23Aから送信された、或るTCPコネクションに係るパケットの受信処理を行い、パケットをキュー27に送る。キュー27に蓄積されたパケットは、所定の滞留時間が経過した後に読み出され、端末21Aへ送られる。端末21Aでは、TCP機能42を経て、パケット中のデータが宛先に相当するAPL41に与えられる。TCP機能42は、パケット(データパケット)に対するACKパケットを生成し、通信ノード20へ送信する。
リンク帯域検出部32は、リンク24のダウンリンク方向の帯域(通信速度)を検出する。リンク帯域は、例えば、リンク24に対する物理層制御に関する情報に基づき検出することができる。リンク帯域の計測方法は、既存のあらゆる手法を適用可能である。
RTT測定部33は、或るTCPコネクションに係るRTTを測定する。図6は、RTT測定方法の一例を示す。RTTは、所定の区間始点(例えばキュー27)からクライアント21(端末21A)を経由して所定の区間終点(例えばキュー28)に達するまでの区間(図6の矢印出示す区間(1))と、所定の区間始点(例えばキュー28)からサーバ23(CN23A)を経由して所定の区間終点(例えばキュー27)に達するまでの区間(図6の矢印で示す区間(2))における遅延時間を合算して計測する。
<<手法1>>
手法1として、以下の手順で測定が可能である。区間(1)に関しては、RTT測定部33は、区間(1)の始点を通過する(キュー27から読み出される)データパケットのシーケンス番号と、その通過時刻(読み出し時刻)を記憶する。その後、RTT測定部33は、記憶したシーケンス番号に対応する確認応答番号を含むACKパケットが区間(1)の終点(キュー28)に達したときの到着時刻を検出し、読み出し時刻と到着時刻との差分から区間(1)の遅延時間を算出する。
一方、区間(2)に関しては、RTT測定部33は、TCPコネクションの確立時に送受信される、端末21AからCN23AへのSYNパケット又はSYN+ACKパケット
の区間(2)の始点の通過時刻を記憶する。その後、RTT測定部33は、上記SYNパケット又はSYN+ACKパケットに対応するSYN+ACKパケット又はACKパケットの区間(2)の終点の通過時刻(例えば、キュー27へ達したときの時刻)を得る。RTT測定部33は、通過時刻の差分から、区間(2)の遅延時間を得る。そして、RTT測定部33は、区間(1)の遅延時間と区間(2)の遅延時間とを合算することによって、RTTを得ることができる。
<<手法2>>
或いは、区間(1)及び区間(2)の双方に適用可能な測定方法として、タイムスタンプ情報を含むパケットを利用する方法(手法2)がある。すなわち、Request For Comments(RFC)1323には、タイムスタンプ情報を含むタイプスタンプオプションが規定されており、オプションヘッダには、TCPパケットのタイムスタンプ値(TS値)と、その応答値(TS Echo Reply:タイムスタンプエコー値)とを格納することができる(図
16A,図16B参照)。
この場合、RTT測定部33は、区間(1)の始点を通過するパケットに含まれたタイムスタンプ値と、その通過時刻とを記憶する。その後、記憶されたタイプスタンプ値がタイムスタンプエコー値として設定されたパケットが区間(1)の終点に達したときの時刻を検出し、通過時刻と到達時刻との差分から、区間(1)の遅延時間を得る。RTT測定部33は、区間(2)についても同様の処理を行い、区間(2)の遅延時間を得る。そして、区間(1)及び区間(2)の遅延時間の合計値をRTTとして算出する。
図5に戻って、滞留時間制御部34は、リンク帯域検出部32からリンク帯域の情報(BWnow)を受け取るとともに、RTT測定部33からRTTを受け取る。滞留時間制御
部34は、リンク帯域の情報及びRTTを用いて、上記した式(2)を用いて挿入遅延Dを算出するとともに、式(5)を用いて勾配Kを算出する。さらに、滞留時間制御部34は、遅延量D(t)を式(6)を用いて算出し、遅延量D(t)に応じた滞留時間で、キュー28からACKパケットを読み出す。送信処理部35は、キュー28から読み出されたACKパケットに対する送信処理を行う。これによって、ACKパケットがリンク24へ送出される。
CN23Aは、送信データ量がウィンドウサイズに達していれば、ACKパケットの到着を待って次のデータパケットの送信を行う。このため、ACKパケットの送信タイミングの調整で、CN23Aからのデータパケットのスループット(送信レート)が制御される。図3に示したように、リンク24の帯域が低下した場合には、遅延量(滞留時間)を増加し、リンク24の帯域が増加した場合には、遅延量(滞留時間)を低下させて、理想的には帯域と遅延量とが反比例するような制御を行う。
<実施形態1の作用効果>
実施形態1によれば、或るTCPコネクションに係るパケットフローに関して、監視対象のリンク24(帯域可変リンク)の受信側のリンク帯域とRTTとに基づき、ACKパケットに対するキュー28での滞留時間が調整される。すなわち、フロー制御では、送信側でのデータ送信量がウィンドウサイズに達している場合、ACKパケットを受信するまで送信側からのデータパケットの送信は停止される。このとき、ACKパケットがキュー28で滞留すると、送信側へのACKパケットの到着が遅延し、送信側からのデータパケットの送信タイミングが遅れる。すなわち、送信側における単位時間当たりのデータ送信量が減る。これは、データパケットの転送路上でのバッファ溢れが回避される方向に作用する。上記のように、キュー28での滞留時間は、リンク24の受信側の最大帯域からの低下量に応じて決定される。従って、キュー28から読み出されるACKパケットがパケット転送路上でロストせず、待ち時間内に送信側へ到着する限り、輻輳制御によるウィンドウサイズの大幅な低下は起こらない。すなわち、ウィンドウサイズが維持された状態で、データパケットの送信レート(スループット)がリンク24の受信側の帯域低下に応じて低下する状態となる。一方、リンク24の受信側の帯域が、或る値から最大帯域へ向けて上昇する場合には、ACKパケットのキュー28での滞留時間が短くなる。このため、ACKパケットの到着タイミング及び送信側からのデータパケットの送信タイミングが早まる。従って、単位時間当たりのデータ送信量がリンク24の受信側の上昇に伴って増える。このように、実施形態1によれば、ウィンドウサイズが維持されることで、TCPの輻輳制御による送信レート制御(すなわち、ACKパケットの受信不可(例えばデータパケットのロスト)に伴うウィンドウサイズの大幅な低下及びスロースタート制御によるウィンドウサイズの増加)に比べて、リンク24の受信側の帯域変動(低下及び上昇)に短時間で追従可能な送信レート(スループット)の調整を行うことができる。
換言すれば、実施形態1に係るトラフィック制御装置は、無線リンクのように帯域幅が
環境条件で変動するようなリンクに対し送受信を行う通信ノード(通信アダプタ,或いは中継装置など)に設けられる。トラフィック制御装置は、当該リンクを流れるトラフィックがTCP又はTCP相当のスループット(トラフィック)制御機構を有しているときに、リンクの帯域に応じて付加的に与える遅延量を調整することによって、リンク帯域に応じたスループットに調整することが可能となる。
<変形例>
実施形態1の構成は、次のような変形が可能である。例えば、上記したリンク帯域BWの変動に応じた挿入遅延Dの変動を行うトラフィック制御が適用されるプロトコルは、TCPに限られず、TCPと同等のスループットの制御方法(フロー制御及び輻輳制御)を用いるプロトコルについても適用が可能である。また、上記した例では、1つのTCPコネクション(パケットフロー)に対する挿入遅延Dの増減について説明したが、複数のTCPコネクションや、或いはTCPと非TCPのプロトコルとをひとまとめにしたトラフィックに対し本制御を実行することも可能である。
また、図2及び図5の例では、ダウンリンク転送におけるACKパケットの滞留時間調整について説明した。これに対し、トラフィック制御装置26は、アップリンク転送において、ACKパケットの滞留時間調整を行うこともできる。
図7は、アップリンク転送における滞留時間調整の例を示す。アップリンク転送では、クライアント21からサーバ23へデータパケットP1が転送され、サーバ23がクライアント21へACKパケットを転送する。この場合、キュー28の代わりに、キュー27におけるACKパケットP2に対する挿入遅延Dがリンク24のアップリンク方向の帯域の増減に怖じて増減する制御(滞留時間調整)が行われる。詳細は、実施形態1におけるキュー28に対する制御と同様であるので説明は省略する。トラフィック制御装置26は、ダウンリンク転送の代わりに、或いは、ダウンリンク転送及びアップリンク転送の双方に関して、ACKパケットの滞留時間調整を実行することができる。
また、図2及び図7に示した例では、キュー28(図2),キュー27(図5)におけるACKパケットP2の遅延量(滞留時間)を調整する例について説明した。但し、ACKパケットの滞留時間調整に加えて、或いはACKパケットの滞留時間調整の代わりに、キュー27及びキュー28の少なくとも一方におけるデータパケットP1に対する遅延量の増減(滞留時間調整)が行われても良い。
〔実施形態2〕
次に、本発明の実施形態2について説明する。実施形態2は、実施形態1と同様の構成を有するため、共通の構成についての説明は省略し、主として相違点について説明する。
実施形態1では、TCP又はTCP相当のプロトコル、すなわち、RTT及びウィンドウサイズ制御(フロー制御及び輻輳制御)でスループット(送信レート)が制御されるプロトコルに係るパケットフローに関するトラフィック制御について説明した。
もっとも、通常、端末と通信相手(CN)とは、例えばUser Datagram Protocol(UDP)のような、TCP以外のプロトコル(「非TCPプロトコル」と称する)に基づく通信も行う。実施形態2では、パケットのプロトコル種別によって、付加的な遅延(挿入遅延D)を与えるかどうかを選択可能とするトラフィック制御装置について説明する。
図8は、実施形態2に係るトラフィック制御装置の構成例を示す。実施形態2は、実施形態1の構成(図5)において、トラフィック制御装置26の代わりにトラフィック制御装置26Aが適用される点において、実施形態1と異なる。但し、トラフィック制御装置
26A以外の構成については実施形態1(図5)と同じであるので説明を省略する。
図8において、トラフィック制御装置26Aは、以下の点でトラフィック制御装置26(図5)と異なる。すなわち、トラフィック制御装置26Aは、トラフィック制御装置26が備える構成に加えて、端末21Aからのパケットを受信するプロトコル振分部38と、制御対象キュー28Aと、非制御対象キュー28Bと、スケジューラ39とさらに含む。
プロトコル振分部38は、プロトコルの判別部の一例であり、例えば、受信されたパケットのヘッダに付与されたプロトコルの識別子を元に、パケットのプロトコル種別を判別する。プロトコル振分部38は、パケットのプロトコル種別がTCP(TCPと同様のフロー制御及び輻輳制御を行うプロトコルを含む)である場合に、パケットを制御対象キュー28Aに振り分ける。これに対し、プロトコル振分部38は、プロトコル種別が非TCPであれば、パケットを非制御対象キュー28Bに振り分ける。
制御対象キュー28A(キュー28A)は、実施形態1におけるキュー28に相当し、TCPのパケットを一時的に蓄積する。キュー28Aにおけるパケットの滞留時間は、実施形態1で説明した手法で、滞留時間制御部34によって調整される。非制御対象キュー28B(キュー28B)は、非TCPのパケットを一時的に蓄積する。
スケジューラ39は、滞留時間制御部34によって算出された挿入遅延D(遅延量D(t))に基づく読み出しタイミングが反映されたパケットの読み出しスケジュールに従って、キュー28AからのTCPのパケットとキュー28Bからの非TCPのパケットの読み出しを行い、読み出したパケットを送信処理部35に与える。
また、実施形態1で示したように、1つのコネクションについてダウンリンク方向(往路)とアップリンク方向(復路)の一方に遅延を挿入すれば、スループットの調整が可能である。このため、TCPのパケットフローに関して、復路のパケットに該当するACKパケットのみがキュー28Aに振り分けられ、ACKパケット以外のパケットは、キュー28Bに振り分けられるようにしても良い。この場合、プロトコル振分部38は、TCPのパケットのヘッダを参照し、ACKパケットである場合にのみ、キュー28Aへの振分を行い、ACKパケット以外のパケットは、キュー28Bに振り分ける。
実施形態2によれば、プロトコル振分部38が、パケットのプロトコル種別を判別し、付加的な遅延を与える(滞留時間制御の)必要がない非TCPのパケットについては、TCP用のキューであるキュー28Aと異なるキュー28Bに格納する。これによって、パケットのプロトコル種別によって、付加的な遅延(挿入遅延D)を与えるかどうかが選択可能となる。
〔実施形態3〕
次に、本発明の実施形態3について説明する。実施形態3は、実施形態1と同様の構成を有するため、共通の構成についての説明は省略し、主として相違点について説明する。
実施形態3では、TCPコネクション(パケットフロー)毎に、RTTの算出を行う。TCPコネクションは、例えば、APL41(図5)毎に確立することができる。換言すれば、端末21AとCN23Aとの間に、複数のTCPコネクションが並列に確立されることがある。或いは、エンド間が異なる複数のTCPコネクションが通信ノード20を通過する場合が起こり得る。
ここで、RTT値は、実施形態1で説明したように、エンド・トゥ・エンドにおけるパ
ス(パケットフロー)全体の遅延の合計値である。このため、RTT値は、コネクション毎に異なる。実施形態3では、コネクション毎にパケットの遅延量(滞留時間)を調整する構成について説明する。
図9は、実施形態3に係るトラフィック制御装置の構成例を示す図である。実施形態1(図5)との相違点は、以下の通りである。すなわち、受信処理部31から出力されるパケットのフローを判別する、ダウンリンク側のフロー振分部36Aと、端末21Aから受信されるパケットのフローを判別する、アップリンク側のフロー振分部36Bとが設けられている。
フロー振分部36A及びフロー振分部36Bは、キュー27に入力されるパケットのヘッダに格納されたパケットフロー(TCPコネクション)の識別子(例えば、送信元及び宛先ポート番号,並びに送信元及び宛先IPアドレス)に基づいて、TCPコネクションを判別する。RTT測定部33は、フロー(コネクション)毎に用意され、コネクション単位毎のRTTを測定する。
フロー振分部36Bの後段には、複数のキューが設けられる。図28に示す例では、制御対象のフロー(コネクション)毎に設けられたキュー28a及び28bと、非制御対象のフロー用のキュー28cとが図示されている。制御対象のキューの数(2個)は例示であり、コネクションの数に応じたキューが用意される。
滞留時間制御部34は、フロー毎の挿入遅延D,勾配K及び遅延量D(t)を算出し、対応するキューにおけるパケット(ACKパケット)の滞留時間を調整する。スケジューラは、各キューからの読み出しが競合しないように、各キューからのパケットの読み出しタイミング(送信時刻)をスケジューリングする。
このように、実施形態3では、RTT値がコネクション毎に異なる点に鑑み、コネクション毎に遅延量が算出され、コネクション毎にACKパケットの滞留時間を調整するためのキュー(キュー28a及び28b)が用意される。これによって、コネクションのRTTに応じた遅延量をパケットフローに対して付与することができ、より精度の高いトラフィック(スループット)の制御を行うことができる。
〔実施形態4〕
次に、本発明の実施形態4について説明する。実施形態4は、実施形態2及び実施形態3の変形例に相当する。実施形態4は、実施形態2及び実施形態3と同様の構成を有するため、共通の構成についての説明は省略し、主として相違点について説明する。
図10は、実施形態4に係るトラフィック制御装置26Cの構成例を示す。実施形態4は、トラフィック制御装置26Cの構成を除き、図9に示した実施形態3における構成と同様の構成を有する。このため、トラフィック制御装置26C以外の構成に関しては、図9に示した構成要素について適宜言及する。
図10に示すトラフィック制御装置26Cは、実施形態3におけるトラフィック制御装置26B(図9)と以下の点で異なっている。すなわち、トラフィック制御装置26Cは、実施形態2で説明したプロトコル振分部38を有する。プロトコル振分部38は、端末21から送信されるパケットを受け取り、パケットのプロトコル種別を判別する。プロトコル種別がTCPであれば、プロトコル振分部38は、パケットをフロー振分部36Bに渡す。一方、プロトコル種別が非TCPであれば、プロトコル振分部38は、非TCPのパケット用のキュー(バッファ)28Bに、パケットを格納する。
スケジューラ39は、キュー28a,28b,28c、並びにキュー28Bからの読み出しタイミング(送信時刻)のスケジューリングを行い、各キューからの送信時刻に応じて、パケットを対応するキューから読み出して送信処理部35に送る。
実施形態4におけるトラフィック制御装置26Cによれば、実施形態2の作用効果と実施形態3の作用効果の双方を得ることができる。
〔実施形態5〕
次に、本発明の実施形態5について説明する。実施形態5は実施形態1〜4との共通点を含むので、主として相違点について説明し、共通点については説明を省略する。
図11は、実施形態5に係る通信アダプタのハードウェア構成例を示す。図11において、通信アダプタ100は、Universal Serial Bus(USB)やイーサネット(登録商標)
のようなPC110との通信インタフェース(I/F)を有し、LTEやWiMAXのような
無線機(基地局,AP)との無線接続機能を有する。通信アダプタ100は、「通信ノード」の一例である。
通信アダプタ100は、図1に示したアダプタ11に適用可能であり、図11に示すPC110は、図1に示した端末12に適用可能である。また、図1に示した端末9や端末10は、PC110が通信アダプタ100を内蔵したハードウェア構成を有する。
このように、端末110と通信アダプタ110との接続形態として、端末と通信アダプタとがケーブルを介して接続される第1の形態と、通信アダプタが端末に着脱自在な状態でコネクタ接続される第2の形態と、通信アダプタが端末に内蔵される第3の形態とがある。しかし、第1,第2及び第3の形態のいずれが採用されても良い。
通信アダプタ100は、バスBを介して接続されたCentral Processing Unit(CPU
)101,Random Access Memory(RAM)102,Flash Read Only Memory(フラッシュROM)103,リンクインタフェース(リンクI/F)104,及びリンクインタフェース(リンクI/F)105を含んでいる。リンクI/F105には、PHY/RF部106が接続されており、PHY/RF部106には、アンテナ107が接続されている。リンクI/Fは、「通信インタフェース」の一例である。
RAM102は、CPU101の作業領域として使用される。フラッシュROM103は、不揮発性記憶媒体の一例であり、CPU101によって実行される各種のプログラムや、各プログラムの実行に際して使用されるデータを記憶する。RAM102,フラッシュROM103のそれぞれは、「記憶装置」、或いは「コンピュータ読み取り可能な記録媒体」の一例である。
リンクI/F104は、端末の一例であるPC110と接続される通信インタフェース回路であり、例えばイーサネット(登録商標)をサポートし、パケットに対するレイヤ2以下の処理を行う。リンクI/F105は、無線接続用の通信インタフェース回路であり、パケットに係るレイヤ2以下の処理を行う。PHY/RF部106は、物理層に係る処理と無線信号に係る処理とを司る回路である。リンクI/F105,PHY/RF部106及びアンテナ107を用いて、アクセスネットワーク5(基地局)と無線通信を行うことができる。リンクI/F104及びリンクI/F105のそれぞれは、「通信インタフェース」の一例である。
PC110は、例えば、汎用のパーソナルコンピュータであり、1以上のアプリケーション(APL)を搭載している。PC110は、TCP/IPをサポートしており、通信
相手(CN)とTCPコネクションを確立してTCP通信を行うことができる。
PC110は、ディスク記憶媒体(CD-ROM,DVD-ROMなど)、或いはフラッシュメモリのような、可搬性を有する記憶媒体111のドライブ装置又は読み取り装置(図示せず)を有している。PC110は、記憶媒体110に記憶されたトラフィック制御用のプログラムを、通信アダプタ100のフラッシュROM103にインストールすることができる。
CPU101は、フラッシュROM103にインストールされたトラフィック制御用のプログラムをRAM102にロードして実行する。これによって、通信アダプタ100がトラフィック制御装置を含む通信ノードとして機能するための処理を行う。
PC110は、通信アダプタ100を介してLTEの基地局,或いはWiMAXの基地局(
AP)と無線接続を行い、基地局が接続されたネットワークを介して通信相手(CN)と接続される。そして、PC110は、CNと通信を行うことができる。
図12は、CPU101がトラフィック制御用のプログラムを実行することによって生じる機能を模式的に示す。図12において、ローカルリンクは、PC110と接続されるインタフェース(「リンクレイヤ1」或いは「第1リンクL1」と称する)であり、リンクI/F104によって生成される。リンクI/F104は、リンクレイヤ1の送信部201と、リンクレイヤ1の受信部202として機能する。
一方、“ネットワーク”側のリンク(「リンクレイヤ2」或いは「第2リンクL2」と称する)は、基地局(NW)と接続される無線リンクであり、時間経過に伴い帯域(通信速度)が変動する。リンクレイヤ2(第2リンクL2)が監視対象のリンクである。リンクI/F105及びPHY/RF部106は、リンクレイヤ2の受信部203及びリンクレイヤ2の送信部204として機能する。受信部203は、受信処理部31(図9)に相当し、送信部204は、送信処理部35(図9)に相当する。
受信部203と送信部201とのダウンリンク方向(NW→PC)のパケット転送路上には、コネクション識別処理部238Aと、キュー128a,128b,128cと、スケジューラ39とが配置される。
コネクション識別処理部238A(識別処理部238A)は、フロー振分部36A及びプロトコル振分部38(図10)と同等の機能を有する。識別処理部238Aは、受信部203で受信されたパケットのプロトコル種別及びパケットフロー(TCPコネクション)を識別し、パケットをキュー128a,128b,128cのいずれかに格納する(振り分けを行う)。
キュー128a,128b,128cは、識別処理部238Aの後段に配置されている。キュー128a及び128bのそれぞれは、制御対象(滞留時間調整を行う)のパケットが格納されるキュー(バッファ)であり、キュー28a,28b(図9)に相当する。キュー128cは、非制御対象(滞留時間調整を行わない)のパケットが格納されるキューであり、キュー28c(図9)に相当する。
制御対象のパケットが格納されるキューは、TCPコネクション毎に生成される。キュー128a及び128bは例示である。キュー128cは、非制御対象のプロトコル種別のパケットや、非制御対象のTCPコネクションのパケットを必要に応じて一時的に蓄積する。
キュー128a,128b,128c、並びに後述するキュー228a,228b,228cは、例えばRAM102の記憶領域を用いて形成される。但し、リンクI/F104又はリンクI/F105がメモリを有する場合には、当該メモリを用いて生成することもできる。
スケジューラ39Aは、キュー128a,128b,128cの後段に配置されている。スケジューラ39Aは、キュー128a,128b,128cからのパケットの読み出しタイミングを制御し、読み出されたパケットを送信部201へ送る。スケジューラ39Aは、スケジューラ39(図10)に相当する。
受信部202と送信部204とのアップリンク方向(PC→NW)のパケット転送路上には、コネクション識別処理部238B(識別処理部238B)と、キュー228a,228b,228cと、スケジューラ39Bとが配置される。
識別処理部238Bは、識別処理部238Aと同等のプロトコル種別及びTCPコネクションの判別機能と、判別結果に応じたパケットの振分機能とを有する。
キュー228a,228b,228cは、識別処理部238Bの後段に配置されている。キュー228a及び228bは、制御対象の1以上のキューの例示であり、制御対象のTCPコネクション毎に生成される。キュー228cは、非制御対象のパケットの蓄積に使用される。
スケジューラ39Bは、キュー228a,228b,228cの後段に配置されている。スケジューラ39Bは、キュー228a,228b,228cからのパケットの読み出しタイミングを制御し、読み出されたパケットを送信部204へ送る。スケジューラ39Bは、スケジューラ39(図10)に相当する。
識別処理部238Aと識別処理部238Bのそれぞれはコネクション管理部206に接続されている。コネクション管理部206は、コネクション管理テーブル207を管理している。
図13は、コネクション管理テーブル207(テーブル207)のデータ構造例を示す。図13において、テーブル207は、ソース(送信元)IPアドレス,ソースポート番号,宛先IPアドレス,宛先ポート番号,状態,開始時刻,エージングタイマ,転送方向,及び計測RTT値が格納される1以上のエントリが格納される。エントリは、TCPコネクション毎に生成される。
図12に戻って、コネクション管理部206は、RTT測定部208に接続されている。RTT測定部208は、TCPコネクション毎のRTTを測定する。RTT測定部208は、遅延量決定部209に接続されている。遅延量決定部209は、滞留時間制御部34(図9)に相当する。
遅延量決定部209は、制御対象のTCPコネクションに関して、受信部203から入力されるリンクレイヤ2(第2リンク)のダウンリンク方向の回線速度情報(現在の帯域BWnowを示す)と、RTT測定部33から通知される当該TCPコネクションのRTT
とを用いて、実施形態1で説明した手法を用いて挿入遅延D,勾配K及び遅延量D(t)を求め、スケジューラ39Bに通知する。スケジューラ39Bは、遅延量D(t)を用いて、対応するパケットのキュー(キュー228a又は228b)からの読み出しタイミングを決定する。
また、遅延量決定部209は、制御対象のTCPコネクションに関して、送信部204から入力されるリンクレイヤ2のアップリンク方向の回線速度情報(現在の帯域BWnow
を示す)と、RTT測定部33から通知される当該TCPコネクションのRTTとを用いて、実施形態1で説明した手法を用いて挿入遅延D,勾配K及び遅延量D(t)を求め、スケジューラ39Aに通知する。スケジューラ39Bは、遅延量D(t)を用いて、対応するパケットのキュー(キュー128a又は128b)からの読み出しタイミングを決定する。
上記した識別処理部238A及び238B,スケジューラ39A及び39B,コネクション管理部206,RTT測定部33,遅延量決定部209は、CPU101がトラフィック制御用のプログラムを実行することによって実現する機能である。テーブル207は、例えばRAM102、又はフラッシュROM103に記憶される。
なお、識別処理部238A及び238B,スケジューラ39A及び39B,コネクション管理部206,RTT測定部33,遅延量決定部209としての機能は、上記したCPU101や、Digital Signal Processor(DSP)のようなプロセッサの機能として実装可能である。プロセッサは、「制御装置」の一例である。制御装置は、Field Programmable Gate Array(FPGA)のようなプログラマブルロジックデバイス(PLD)を含む
また、識別処理部238A及び238B,スケジューラ39A及び39B,コネクション管理部206,RTT測定部33,遅延量決定部209としての機能は、Large Scale Integrated circuit(LSI)やApplication Specific Integrated Circuit(ASIC
)のような集積回路(IC)を用いたハードウェアロジック(ワイヤードロジック)によって実装されても良い。すなわち、上記した各機能は、プロセッサ,PLD,ICの少なくとも1つ、或いは2以上の組み合わせによって形成される「制御装置」によって実装可能である。
上記した実装方法は、実施形態1〜4において説明したリンク帯域検出部32,RTT測定部33,滞留時間制御部34,フロー振分部36A及び36B,プロトコル振分部38,スケジューラ39についても当てはまる。
<CPUによる処理>
図14は、制御対象のパケットをキューに格納するまでの処理例を示すフローチャートである。図14に示す処理は、ダウンリンク転送の場合とアップリンク転送の場合とで共通な処理である。以下の説明では、例として、ダウンリンク転送の場合について説明する。
図14に示す処理は、例えば、リンクI/F104(受信部202)で受信されたパケットをCPU101がバスBを介して受信した場合に開始される。 最初の01では、CPU101は、識別処理部238Bとして機能し、パケットのプロトコル種別が制御対象プロトコル(TCP)か否かを判定する。例えば、CPU101は、パケットのIPヘッダに含まれるプロトコル番号がTCPを示す番号が否かで、TCPかTCP以外のプロトコルかを判定することができる。プロトコル種別がTCPでなければ(01,NO)、処理が07に進む。これに対し、プロトコル種別がTCPであれば(01,YES)、処理が02に進む。
02では、CPU101は、コネクション管理部206として機能し、TCPパケットがTCPコネクションの確立開始を示すSYNパケットか否かを判定する。すなわち、CPU101は、パケットのTCPヘッダを参照し、SYNフラグがセットされているか否
かを判定する。
図15は、RFC783で規定されるTCPヘッダのフォーマットを示し、図16A及び図16Bは、RFC1323で規定されるTCPヘッダのオプションフィールドにセット可能なタイムスタンプオプションのフォーマットを示す。TCPでは、コネクションを確立するために3ウェイハンドシェイクと呼ばれる3手順を行う。
第1の手順では、通信の要求者が通信相手に対してSYNパケット、すなわち、SYNフラグがTCPヘッダにセットされたパケットを送る。第2の手順では、SYNパケットを受信した通信相手が、要求者の接続を許可するSYN-ACKパケット(SYN+AC
K)を送信する。SYN-ACKパケットは、SYNフラグとACKフラグ(図15参照
)がセットされたTCPヘッダを有するパケットである。第3にSYN-ACKパケット
を受け取った要求者は、接続開始を表すACKパケット(SYNフラグがオフでACKフラグがセットされたTCPパケット)を要求者に送信し、通信相手との通信を開始する。
なお、SYNパケットには、無作為の値Aがシーケンス番号として設定される。SYN-ACKパケットでは、(A+1)の値が確認応答番号としてセットされるとともに、無
作為の値Bがシーケンス番号としてセットされる。さらに、ACKパケットでは、(B+1)の値が確認応答番号としてセットされる。
CPU101は、パケットがSYNパケットであれば(02,YES)、処理を04に進める。一方、CPU101は、パケットがSYNパケットでなければ(02,NO)、処理を03に進める。
03では、CPU101は、コネクション管理部206として機能し、テーブル207(図13)に、新たなTCPコネクションに係るエントリを登録する。エントリには、コネクションの識別子として使用されるソースIPアドレス,ソースポート番号,宛先IPアドレス,及び宛先ポート番号が設定される。さらに、状態“SYN”(確立手順中を示す)が格納される。
なお、状態“ESTB”はコネクション確立済みを示し、状態“IDLE”はアイドル状態を示す。状態“FIN”はコネクション終了を要求するFINフラグがセットされたパケット(FINパケット)の送信状態を示し、状態“FIN-W”は、FINパケット
の応答パケットを待っている状態を示す。
開始時刻として、図16A又は図16Bに示すタイムスタンプのオプションフィールドにおけるタイムスタンプ値(TS Value)が格納される。また、エージングタイマは、コネクションの異常終了に備えて、強制的なコネクションの終了手順を開始するまでの猶予期間を示す。転送方向は、監視対象リンクからの送信又は受信を示す。動作例では、リンクレイヤ2の受信側が監視対象であるので、アップリンク方向が“送信”に、ダウンリンク方向が“受信”に当たる。計測RTT値として、RTT測定部33により測定されたRTT値が格納される。03の終了後、処理が05に進む。
04では、CPU101は、コネクション管理部206として機能し、テーブル207から、受信されたTCPパケットに対応するエントリを検索する、CPU101は、TCPパケットのTCPヘッダに含まれた情報で、エントリを更新する。その後、処理が05に進む。
05では、CPU101は、RTT測定部33として機能し、03で登録、04で更新されたエントリで特定されるTCPコネクションについてのRTTを測定する。測定方法
は、実施形態1で説明した手法1又は手法2を用いる。例えば、CPU101は、オプションヘッダのタイムスタンプ値(図16A又は図16B)を用いる手法2で、RTTを計測する。RTTの計測が終了すると、CPU101は、新たなRTT値で、テーブル207の該当エントリにおけるRTT値を更新する。
06以降の処理は、RTT値が更新されてから実行される。06では、CPU101は、識別処理部238Bとして機能し、パケットがACKパケットか否かを判定する。パケットがACKパケットであれば(06,YES)、処理が08に進む、パケットがACKパケットでなければ、処理が07に進む。
07では、CPU101は、識別処理部238Bとして機能し、非制御対象のキュー(例えば、キュー228c)にパケットを格納する。
08では、CPU101は、遅延量の算出処理を行う。すなわち、CPU101は、コネクション管理部206として、テーブル207を参照し、ACKパケットに対応するコネクションのエントリに格納されたRTT値を読み出す。続いて、CPU101は、遅延量決定部209として機能し、送信部204から回線速度情報(現在の帯域を示す情報)を得て、RTT値と回線速度情報とを用いて挿入遅延D,勾配K,遅延量D(t)を算出する。挿入遅延D等の算出方法は、実施形態1で説明した式(1)〜(6)を用いて行う。
09では、CPU101は、遅延量決定部209として機能し、勾配K及び遅延量D(t)を求めて、ACKパケットの送信予定時刻tout(tout=tnow+D(t))を算出する
。送信予定時刻は、ACKパケットを格納するキューの識別情報とともに、スケジューラ39Bに通知される(RAM102の所定アドレスに記憶される)。
10では、CPU101は、識別処理部238Bとして機能し、ACKパケットを、コネクション毎に用意された制御対象のキュー(例えばキュー228a)に格納する。ここまでが、制御対象のパケットが、滞留時間調整可能なキューに格納されるまでの処理である。
図17は、制御対象のキューに格納されたパケットの読み出し処理の例を示すフローチャートである。図17に示す処理は、ダウンリンク転送の場合とアップリンク転送の場合とで共通な処理である。以下の説明はダウンリンク転送の場合を例として説明する。すなわち、図17に示す処理が、スケジューラ39Bとして機能するCPU101によって実行される場合について説明する。
最初の101では、CPU101は、非制御対象のキュー(キュー228c)にパケットが格納(蓄積)されているか否かを判定する。パケットが蓄積されている場合(101,YES)には、処理が106に進む。パケットが蓄積されていない場合(101,NO)には、処理が102に進む。
102では、CPU101は、制御対象キュー(キュー228a及び228b)のうち、先頭パケットの送信予定時刻(送信時刻)が最も早い(最先の)キューを検索する。
103では、CPU101は、該当のキューが検索されたか否かを判定する。このとき、全ての制御対象キューが空である場合(103,NO)には、処理が101に戻る。これに対し、該当のキューがある場合(103,YES)には、処理が104へ進む。
104では、CPU101は、現時刻が送信時刻に達したか否かを判定する。現時刻が
送信時刻に達していない場合(104,NO)には、処理が101に戻る。これに対し、現時刻が送信時刻に達した場合(104,YES)には、処理が105に進む。
105では、CPU101は、該当のキューにおける先頭パケットを読み出し、当該パケットの送信処理を行う。106では、CPU101は、非制御対象のキューの先頭パケットを送信する。パケットは、送信部204(リンクI/F105)からネットワークへ送信され、CNへ送られる。なお、105又は106が終了すると、処理が101に戻り、101以降の処理が繰り返し実行される。
なお、図14及び図17の処理がアップリンク転送に適用される場合には、CPU101が、識別処理部238A,スケジューラ39Aとして機能する一方、キュー128a,128b,128cが使用される。CPU101による、コネクション管理部206,RTT測定部33,遅延量決定部209としての処理は、ダウンリンク転送の場合における処理と同じである。
<動作例>
次に、通信アダプタ100の動作例として、PC110が或る通信相手(CN)と或るTCPコネクションを確立し、PC110とCNとの間でTCP通信(TCP/IP通信)が実行される場合の動作例について説明する。
PC100からネットワーク(CN)へTCPコネクションに係るデータパケットが送信される(アップリンク転送が行われる)とき、データパケットは、リンクレイヤ1の受信部202(リンクI/F104)で受信される。そして、データパケットは、リンクレイヤ2の送信部204(リンクI/F105,PHY/RF部106)から第2リンクへ送信される。
データパケットは、基地局及びネットワークを介して通信相手(CN)へ到達する。一方、CNから送信される、データパケットに対するACKパケットは、リンクレイヤ2(第2リンク)の受信部203に到着し、リンクレイヤ1(第1リンク)の送信部201から送出されてPC110に届く。
受信部201で受信されたデータパケットは、識別処理部238Bにおけるプロトコル種別及びTCPコネクションの識別処理を経て、識別結果に応じたキューに格納される(振り分けられる)。例えば、識別処理部238Bには、TCPコネクションのACKパケットを制御対象のキューに格納し、当該ACKパケット以外のパケットは、非制御対象のキューに格納する設定が施されている。
このため、データパケットは、非制御対象のキューであるキュー228cに格納される。スケジューラ39Bは、他のキューからのパケット読み出しとの調整を行った上で、キュー228aからデータパケットを読み出し、送信部204に送る。
データパケットを受信したCNは、データパケットに対応するACKパケットを返送する。ACKパケットは、ネットワーク,基地局,及びリンクレイヤ2を通過して通信アダプタ100の受信部203(リンクI/F105)に届く。
すると、識別処理部238AがACKパケットの属するTCPコネクションを識別し、遅延量決定部209が、識別されたTCPコネクションに対応付けられた遅延時間調整キュー(制御対象のキュー:例えばキュー128a)に付与する遅延量(遅延時間)を算出する。その後、ACKパケットがキュー128aにエンキューされる。
その後、遅延時間が経過した時点以降において、スケジューラ39Aにより、他のキューとの送出の調整が図られた上で、ACKパケットがキュー128aから読み出され、送信部201からローカルリンク側(PC110)に送出される。
付与される遅延時間は、リンクレイヤ2の送出インタフェース(すなわち、アップリンク)の帯域(通信速度)と、当該TCPコネクションのRTTとを用いて決定される。RTTの測定(計測)は、上述したように、TCPコネクションに係るデータパケットの識別処理部の通過時刻,及びデータパケットに対応するACKパケットの識別処理部の通過時刻を用いて測定され、テーブル207に記憶されるRTT値は、随時更新される。
また、TCPコネクションに係るデータパケットがCNからPC110へ送信される(ダウンリンク転送が行われる)とき、データパケットは、受信部203で受信され、送信部201から送出される。データパケットを受信したPC110は、データパケットに対応するACKパケットを送信する。ACKパケットは、第1リンクを介して受信部202で受信され、送信部204から第2リンクへ送信され、最終的にCNに届く。
受信部203でデータパケットが受信されたとき、識別処理部238Aは、データパケットを非制御対象のキューであるキュー128cに振り分ける。スケジューラ39Aは、他のキューとの読み出しタイミングの調整を行った後、データパケットをキュー128cから読み出す。読み出されたデータパケットは、送信部201から第1リンクを介してPC110へ送信される。
PC110がデータパケットに対するACKパケットを送信すると、ACKパケットは、受信部202で受信される。このとき、識別処理部238B及びコネクション管理部206により、ACKパケットのTCPコネクションが特定され、当該TCPコネクションのRTT値及び受信部203から得られるリンクレイヤ2の受信インタフェース(ダウンリンク)の帯域(回線速度情報)からACKパケットに与える遅延量(挿入遅延:遅延時間)が算出される。そして、ACKパケットは、対応する制御対象のキュー(例えば、キュー228a)に格納される。
その後、遅延時間が経過した時点以降で、スケジューラ39BがACKパケットをキュー228aから読み出す。ACKパケットは、送信部204からリンクレイヤ2へ送出される。遅延時間は、リンクレイヤ2(第2リンク)の受信インタフェース(=ダウンリンク)の帯域(通信速度)とTCPコネクションのRTTとを用いて決定する。RTTの測定は
、TCPコネクションに係るパケットフローのパケット(データパケット,ACKパケット)の通過時刻を用いて、随時行われ、テーブル207のRTT値は随時更新される。
コネクション識別を適切に行うために、パケットが通過するTCPコネクションの発生と終了を監視し、アクティブなコネクションと当該コネクションを識別するための情報が、テーブル207に記憶される。
TCPの場合、上記したように、コネクションの確立(発生)はSYNパケットが送信されることから始まる3ウェイハンドシェイクの流れを監視することによって行われる。一方、コネクションの終了は、FINフラグがセットされたTCPパケット(FINパケット)の送信から始まる切断シーケンスを監視することによって行われる。
TCPコネクションは、図13に示したようなテーブル207にて管理される。テーブル207を用いてTCPコネクションの特定や、RTT値の管理が行われる。また、コネクションの異常終了への対応を考慮し、テーブル207の各エントリは、エージングタイマを備える。このような、TCPの状態遷移及び状態遷移に基づくコネクションの判別技
術は、ステートインスペクション技術として知られている。ステートインスペクション技術自体は公知であるので説明を省略する。
以上のように、通信アダプタ100は、或るTCPコネクションに関して、ダウンリンク方向及びアップリンク方向のそれぞれのACKパケットに、第2リンクの帯域に応じた遅延を付与(追加)する。これによって、ダウンリンク方向及びアップリンク方向の双方において、データパケットの送信レート(スループット)を帯域の変動に応じて効率的に制御することが可能となる。
実施形態5は、上述した実施形態1〜4における作用効果を得ることができる。すなわち、実施形態5では、TCPコネクションのパケットフローの一方にリンク帯域に応じた挿入遅延を与えることで、パケットのフローの他方のスループットを、リンク帯域に応じた値に制御することができる。
また、実施形態5では、制御対象のプロトコル(TCP)以外のパケットが常に遅延非挿入キュー(キュー128c、或いはキュー228c)に格納されるように制御することができる。
また、実施形態5では、実施形態1〜4と同様に、RTTの計測結果と、第1リンクの帯域(通信速度)に応じて挿入遅延量を決定する。なお、実施形態5において、プロトコル種別やコネクションの識別を行うことは必須ではない。例えば、該制御対象のリンク区間のレイテンシが、当該リンクを流れるコネクションのRTTの支配要素であるような場合は、1つのコネクションのRTTを代表値として使ったり、典型値を固定値として運用したりすることが可能である。
この場合、制御対象プロトコル(例えばTCP)について共通の付加遅延時間(挿入遅延D)を与えればよいため、キューは、制御対象プロトコル用のキューは、複数のコネクション間でひとまとめにすることができる。また、実施形態5の構成に代えて、アップリンク方向とダウンリンク方向との一方のみに挿入遅延を付加する構成を採用することができる。
また、実施形態5では、遅延量D(t)を連続的に変化させて最終的に挿入遅延Dに至るように制御することが可能である。これによって、不要なパケット間隔の発生やパケットの追い越しを回避することができる。
また、実施形態5では、コネクション毎にRTTが測定され、コネクション毎に異なる挿入遅延が算出される。これによって、コネクションのRTTに応じたスループット(トラフィック)制御を行うことが可能となる。
また、実施形態5では、挿入遅延Dの算出に当たり、上記した式(2)を用いる。これによって、遅延が挿入されるコネクションからの観点では、帯域遅延積(BDP)の変化が打ち消されるので、ウィンドウサイズを好適な値に維持することができる。
また、実施形態5では、上記した式(5)及び式(6)を用いて算出される勾配K及び遅延量D(t)が適用される。これによって、遅延量を連続的に変化させることができる。
また、実施形態5は、ACKパケットに対して遅延が付与される構成を採用する。遅延量を与えるパケット列が密に詰まっていると、印加遅延量を短くする方向に制御することができない。実施形態で説明した遅延量制御は、帯域が変動する監視対象リンクの帯域に
応じて行われる。このため、監視対象リンクがボトルネックリンクとなっている場合に効果が得られる。
しかしながら、監視対象リンクがボトルネックになっている場合、データパケットは隙間なく流れている状態になっているのが通例である。この場合、遅延量を減らす方向の制御を加えることができない場合が起こり得る。一方、ACKパケットの送信レートは、ACKパケットの発生要因となるデータパケットの送信レートに準じたものになるけれども、通常、ACKパケットはデータ部を持たないため、ACKパケット間は空いた状態となる。また、ACKパケットは、複数のデータパケットに関してまとめたものを送信可能であるため、ACKパケットの送信間隔はデータパケットの間隔に比べて大きくなる傾向にある。
従って、上記したような帯域に応じた遅延量の挿入がデータパケットに対する挿入に比べて容易である。また、遅延の付与のために、パケットを一時的に蓄えるキュー(バッファ)が用意される。ACKパケットのサイズは、データパケットのサイズより小さいので、キューのサイズ(容量)を小さくすることができる。見かけ上の(TCPで認識される)RTTを増加する目的で挿入される遅延は、パケットフローの往路と復路とは関係なく、パケットフローのどこに挿入しても同様の効果を得ることができる。従って、ACKパケットが流れる側のトラフィックに対し遅延を印加するのが好ましい。
また、実施形態5における通信アダプタでは、以下のような制御を行うことができる。すなわち、新規に確立されたTCPコネクションが検出された時点では、付加すべき遅延量を最小値に設定する。例えば、最小値は、0であり、0のとき、遅延は付加されない。但し、0より大きい最小値を予め定めることもできる。その後、遅延量が時間経過に応じて徐々に増加し、最終的に挿入遅延Dの値となるようにする。遅延量は、経過時間に比例して増加するように制御されても良く、指数的に収束させるような増加方法も考えられる。
また、本来の付加遅延量(あるいはその近傍値、例えば挿入遅延Dの値)に達するまでに要する時間は、当該コネクションがスロースタートに要する時間見合いで適宜決定することができる。或いは、例えば1秒のような固定値を使用することもできる。これによって、遅延の付与によって、スロースタート開始時のスループット増加のペースが低下する弊害を抑えることができる。
具体的に説明すると、第2リンクを利用する新たなTCPコネクションの確立(発生)に伴う通信の開始時点において、第2リンクのリンク帯域(BWnow)がリンクの最大帯
域(BWmax)より下がっていると仮定する。このとき、コネクション上に見える(エン
ド間に現れる)RTTとして、リンク帯域の低下に応じた長さのRTTで通信が開始されるべきである。
しかしながら、TCPは、通信開始時には、最低又は小さいウィンドウサイズを用い、パケットのオーバーフローが生じるまで、徐々にウィンドウサイズを増加する制御(スロースタート制御)を行う。ウィンドウサイズの上昇(増加)速度は、RTTが大きい程遅くなる傾向にある。
このため、通信開始時における挿入遅延Dが大きいと、当該コネクションにおけるウィンドウサイズが現在のリンク帯域に応じたサイズに至るまでに時間を要する。また、当該コネクションを流れるデータ量が少ない場合には、スロースタート中に通信が終了する可能性がある。このように、コネクション確立に伴う通信開始時点で挿入遅延Dが挿入されることで、リンク帯域を有効利用可能なスループットになるまでに時間がかかる、或いは
、良好なスループットに至る前に通信が終了する虞があった。
このため、図18に示すような遅延量の付与に係る制御を行うことが可能である。すなわち、コネクション開始時点(通信アダプタ100で新たなコネクションが検出された時点)における挿入遅延の量は最小値(例えば0)とし、そこから適宜の時間内で式(2)を用いて算出される挿入遅延Dの値に収斂するように、遅延量を徐々に増加させることで、上記した弊害を緩和又は抑止することができる。
また、実施形態5では、遅延挿入によるトラフィック制御が、通信アダプタ100におけるプロセッサ(CPU101)によるソフトウェア(プログラム)の実行によって行われる形態について説明した。上記した例では、PC110によって、通信アダプタ100にプログラムがインストールされる例について説明したが、トラフィック制御用のプログラムは、ファームウェアとして、予めフラッシュROM103に記憶される構成を採用しても良い。或いは、通信アダプタ100が、PC110又は記録媒体111に記憶されているトラフィック制御用のプログラムを必要に応じてRAM102にダウンロードする構成を適用することも可能である。
なお、通信ノードの他の例のハードウェア構成について説明する。図19は、モバイルルータ100Aのハードウェア構成の一例を示す。例えば、モバイルルータ100Aは、図1に示したCPE13として適用可能である。モバイルルータ100Aは、無線インタフェースとして、アンテナ107とRF部106Aを有している。モバイルルータ100Aは、無線インタフェースを用いて端末と無線接続することができる。
さらに、モバイルルータ100Aは、LAN側のインタフェースを提供するレイヤ2スイッチ及びPHYチップ105A(チップ105A)を有している。チップ105Aは、複数のLAN回線を収容するためのポートを有し、ポートの一つがRF部106Aと接続されている。リンクI/F104Aは、WAN側のインタフェースを提供し、ネットワーク(NW)と接続されている。
チップ105Aは、キューとして使用可能なメモリを有するとともに、スケジューラとして機能するハードウェア(電子回路,集積回路)を備えている。実施形態1〜5で説明したトラフィック制御は、主にレイヤ2(L2)での処理であるため、チップ105Aが備えるレイヤ2スイッチ(L2SW)に、キュー及びスケジューラとしての機能を実装することができる。
プロトコル種別の識別,コネクションの識別,RTT測定は、レイヤ3以上に対する処理であるため、例えば、CPU101のプログラム実行に基づく処理として実装する。また、キューイング制御や、スケジューラの制御もCPU101が行う。CPU101によって実行されるプログラムは、フラッシュROM103に記憶される。これらのCPU101が行う処理は、専用のハードウェア(集積回路)で実装することも可能である。
図20は、通信ノードの一例として、基地局100Bのハードウェア構成例を示す。基地局100Bは、例えば、図1に示した基地局(BS)6,基地局7,フェムト基地局8のそれぞれに適用可能である。
基地局100Bは、チップ105Aの代わりに、ベースバンド信号に係る処理を司るBB処理部105Bを備える点で、モバイルルータ100Aと異なる。端末がネットワーク(NW)と接続するとき、端末とネットワークとの間に、ベアラと呼ばれる論理回線が確立される。ベアラは、RF部106A,BB処理部105A,リンクI/F(回線インタフェース)104を通過するUプレーンのベアラを含み、TCPコネクションは、当該ベ
アラ内に設けられた状態となる。
基地局100BのCPU101は、フラッシュROM103に記憶されたプログラムのRAM102にロードして実行することにより、リンクI/Fで送受信されるTCPパケットの覗き見を行い、実施形態1〜5で説明したようなリンク帯域に応じた遅延挿入によるトラフィック制御を実行することができる。なお、モバイルルータ100A,基地局100Bでの監視対象リンクは、例えば、モバイルルータ100A及び基地局100Bのそれぞれにおけるダウンリンク側の無線リンクである。
以上説明したように、実施形態1〜5で説明したトラフィック制御が実行されることによって、TCPコネクションのスループットを、TCPに基づくスループット調整と異なる方法で調整することができる。
すなわち、監視対象のリンク帯域が低下した場合には、挿入遅延量が増加する。これによって、TCPの下でのスループット調整で生じる、リンク帯域の低下により発生するキューのオーバーフローによるパケットロスを回避することができる。
また、監視対象のリンク帯域が増加(上昇)した場合には、挿入遅延量の減少を図る。これによって、TCPでのスループット調整に比べ、リンク帯域の増加に対し、効率的にスループットを追従させる(増加させる)ことができる。従って、リンク帯域の増加に効率的に追随できないことによる帯域の無駄を解消することができる。よって、実施形態1〜5によれば、回線帯域の利用効率を高めるとともに結果的に高いスループットを得ることができる。
P1・・・データパケット
P2・・・ACKパケット
1・・・プロバイダ網
2・・・インターネット
4・・・ゲートウェイ
5・・・アクセス網
6,7・・・基地局
8・・・フェムト基地局
9,10,12,14・・・端末
11,100・・・通信アダプタ
13・・・CPE
15・・・通信相手(CN)
21・・・クライアント
22・・・ネットワーク
22A・・・L2対向装置
23・・・サーバ
24,25・・・リンク
26,26A,26B,26C・・・トラフィック制御装置
27,28,128a,128b,128c,228a,228b,228c・・・キュー
31・・・受信処理部
32・・・リンク帯域検出部
33・・・RTT測定部
34・・・滞留時間制御部
35・・・送信処理部
36A,36B・・・フロー振分部
38・・・プロトコル振分部
39,39A,39B・・・スケジューラ
41,51・・・アプリケーション
42,52・・・TCP機能
100・・・通信アダプタ
100A・・・モバイルルータ
100B・・・基地局
101・・・CPU
102・・・RAM
103・・・フラッシュROM
104,105・・・リンクインタフェース
106・・・PHY/RF部
107・・・アンテナ
110・・・パーソナルコンピュータ
111・・・記録媒体
201,204・・・送信部
202,203・・・受信部
206・・・コネクション管理部
207・・・コネクション管理テーブル
209・・・遅延量決定部
238A,238B・・・コネクション識別処理部

Claims (11)

  1. ウィンドウサイズを用いたフロー制御及び輻輳制御を行う特定のプロトコルに従って送信側のエンドと受信側のエンドとの間をパケットが流れるパケット転送路上に配置される通信ノードであって、
    前記転送路上にあるリンクからパケットを受信する処理と、前記リンクへパケットを送信する処理とを行う通信インタフェースと、
    前記リンクから受信される前記特定のプロトコルのパケット又は前記リンクへ送信される前記特定のプロトコルのパケットを一時的に蓄積するキューを記憶する記憶装置と、
    前記リンクの受信側の現在の帯域に基づき、前記キューに蓄積されたパケットの滞留時間を調整する制御装置と、を含み
    前記制御装置は、前記リンクの受信側の帯域が所定値から低下した量が大きくなるほどパケットの滞留時間を長くする
    通信ノード。
  2. 前記制御装置は、前記リンクから受信されるパケット又は前記リンクへ送信されるパケットのプロトコル種別を判別し、プロトコル種別が前記特定のプロトコルを示すときに、当該パケットを前記キューに蓄積する
    請求項1に記載の通信ノード。
  3. 前記制御装置は、前記特定のプロトコルのパケットの観測によって得られるラウンドトリップタイムと、前記リンクの受信側の現在の帯域とを用いて前記キューに蓄積されたパケットの滞留時間を算出する
    請求項1又は2に記載の通信ノード。
  4. 前記制御装置は、前記キューに蓄積されるパケットの滞留時間が変化して所定の滞留時間に至るように、前記キューに蓄積されるパケットの滞留時間を調整する
    請求項1からのいずれか1項に記載の通信ノード。
  5. 前記特定のプロトコルは、エンド間の通信開始に当たってエンド間のコネクションを確立し、
    前記記憶装置は、コネクションに関連づけられた1以上のキューを記憶し、
    前記制御装置は、前記リンクから受信される前記特定のプロトコルのパケット又は前記リンクへ送信される前記特定のプロトコルのパケットのコネクションを判別し、コネクションの判別結果に対応する前記1以上のキューの何れかに当該パケットを蓄積する処理と、各キューに蓄積されるパケットのラウンドトリップタイムを求めて、各キューに蓄積されるパケットの滞留時間を算出する処理とを行う
    請求項1からのいずれか1項に記載の通信ノード。
  6. 前記制御装置は、前記キューに蓄積されるパケットの滞留時間の調整に用いる遅延量Dを、ラウンドトリップタイムの値RTTと、前記リンクの受信側の最大帯域BWmaxと、
    前記リンクの受信側の現在の帯域BWnowとを用いて、以下の式、
    D = RTT ×(BWmax − BWnow / BWnow
    により求める
    請求項1からのいずれか1項に記載の通信ノード。
  7. 前記制御装置は、前記キューに蓄積されるパケットの滞留時間を変化させて前記遅延量Dに対応する滞留時間にするときに、変化の勾配Kを、今までの帯域BWprevと新たな帯域BWnewとを用いて以下の式、
    K=(BWprev/BWnew)−1
    で求めるとともに、単位時間当たりの遅延量D(t)を、以下の式、
    D(t)=D(t0)+K(t−t0)
    で求める請求項に記載の通信ノード。
  8. 前記制御装置は、新たなコネクションの確立が検出されたときに、当該コネクションに付与する遅延量を求めるとともに、当該コネクションに付与される初回の遅延量が0又は最小値で、その後、当該コネクションに関して定められた期間で前記求めた遅延量に達するように、当該コネクションに対応するキューに蓄積されるパケットの滞留時間を調整する
    請求項に記載の通信ノード。
  9. 前記キューは、前記確認応答を含むパケットを蓄積する
    請求項1からのいずれか1項に記載の通信ノード。
  10. ウィンドウサイズを用いたフロー制御及び輻輳制御を行う特定のプロトコルに従って送信側のエンドと受信側のエンドとの間をパケットが流れるパケット転送路上に配置されるコンピュータに、
    前記転送路上にあるリンクからパケットを受信する処理と、
    前記リンクへパケットを送信する処理と、
    前記リンクから受信される前記特定のプロトコルのパケット又は前記リンクへ送信される前記特定のプロトコルのパケットをキューに蓄積する処理と、
    前記リンクの受信側の現在の帯域に基づき、前記キューに蓄積されたパケットの滞留時間を調整する処理とを実行させ、
    前記滞留時間を調整する処理において、前記リンクの受信側の帯域が所定値から低下した量が大きくなるほどパケットの滞留時間を長くする
    プログラム。
  11. ウィンドウサイズを用いたフロー制御及び輻輳制御を行う特定のプロトコルに従って送信側のエンドと受信側のエンドとの間をパケットが流れるパケット転送路上に配置される通信ノードが、
    前記転送路上にあるリンクからパケットを受信する処理と、
    前記リンクへパケットを送信する処理と、
    前記リンクから受信される前記特定のプロトコルのパケット又は前記リンクへ送信される前記特定のプロトコルのパケットをキューに蓄積する処理と、
    前記リンクの受信側の現在の帯域に基づき、前記キューに蓄積されたパケットの滞留時間を調整する処理とを行い、
    前記滞留時間を調整する処理において、前記リンクの受信側の帯域が所定値から低下した量が大きくなるほどパケットの滞留時間を長くする
    通信ノードのトラフィック制御方法。
JP2013249286A 2013-12-02 2013-12-02 通信ノード Active JP6303452B2 (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP2013249286A JP6303452B2 (ja) 2013-12-02 2013-12-02 通信ノード
US14/557,486 US9674095B2 (en) 2013-12-02 2014-12-02 Communication node

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2013249286A JP6303452B2 (ja) 2013-12-02 2013-12-02 通信ノード

Publications (2)

Publication Number Publication Date
JP2015106880A JP2015106880A (ja) 2015-06-08
JP6303452B2 true JP6303452B2 (ja) 2018-04-04

Family

ID=53266257

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2013249286A Active JP6303452B2 (ja) 2013-12-02 2013-12-02 通信ノード

Country Status (2)

Country Link
US (1) US9674095B2 (ja)
JP (1) JP6303452B2 (ja)

Families Citing this family (25)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10368255B2 (en) 2017-07-25 2019-07-30 Time Warner Cable Enterprises Llc Methods and apparatus for client-based dynamic control of connections to co-existing radio access networks
US9066153B2 (en) 2013-03-15 2015-06-23 Time Warner Cable Enterprises Llc Apparatus and methods for multicast delivery of content in a content delivery network
US11540148B2 (en) 2014-06-11 2022-12-27 Time Warner Cable Enterprises Llc Methods and apparatus for access point location
US10303626B2 (en) * 2015-03-31 2019-05-28 Cavium, Llc. Approach for chip-level flop insertion and verification based on logic interface definition
KR102350504B1 (ko) * 2015-04-27 2022-01-14 삼성전자주식회사 통신 시스템에서 하향링크 전송률 제어를 위한 장치 및 방법
JP6464911B2 (ja) * 2015-05-01 2019-02-06 富士通株式会社 情報処理システム、情報処理システムの制御方法及び受信装置
US10284484B1 (en) * 2015-07-15 2019-05-07 Cisco Technology, Inc. Accelerated ramp up for delay-based rate adaptation
WO2017094235A1 (ja) * 2015-11-30 2017-06-08 日本電気株式会社 冗長化処理装置、情報処理装置、冗長化システム、方法および記憶媒体
US9986578B2 (en) 2015-12-04 2018-05-29 Time Warner Cable Enterprises Llc Apparatus and methods for selective data network access
US10327187B2 (en) 2015-12-04 2019-06-18 Time Warner Cable Enterprises Llc Apparatus and method for wireless network extensibility and enhancement
JP6528691B2 (ja) * 2016-01-20 2019-06-12 富士通コネクテッドテクノロジーズ株式会社 通信装置及び通信制御プログラム
US9918345B2 (en) 2016-01-20 2018-03-13 Time Warner Cable Enterprises Llc Apparatus and method for wireless network services in moving vehicles
US10554572B1 (en) * 2016-02-19 2020-02-04 Innovium, Inc. Scalable ingress arbitration for merging control and payload
US10492034B2 (en) 2016-03-07 2019-11-26 Time Warner Cable Enterprises Llc Apparatus and methods for dynamic open-access networks
CN105871744A (zh) * 2016-03-31 2016-08-17 北京小米移动软件有限公司 动态控制流量的方法及装置
US10164858B2 (en) 2016-06-15 2018-12-25 Time Warner Cable Enterprises Llc Apparatus and methods for monitoring and diagnosing a wireless network
CN107800642A (zh) * 2016-08-31 2018-03-13 北京金山云网络技术有限公司 一种拥塞控制方法及装置
JP6805713B2 (ja) * 2016-10-19 2020-12-23 日本電気株式会社 受信トラヒックの高速化装置、高速化方法、および高速化プログラム
US10050884B1 (en) * 2017-03-21 2018-08-14 Citrix Systems, Inc. Method to remap high priority connection with large congestion window to high latency link to achieve better performance
US10645547B2 (en) 2017-06-02 2020-05-05 Charter Communications Operating, Llc Apparatus and methods for providing wireless service in a venue
US10638361B2 (en) 2017-06-06 2020-04-28 Charter Communications Operating, Llc Methods and apparatus for dynamic control of connections to co-existing radio access networks
CN111917656B (zh) * 2017-07-27 2023-11-07 超聚变数字技术有限公司 传输数据的方法和设备
JP7172126B2 (ja) * 2018-05-14 2022-11-16 オムロン株式会社 モータ制御装置
US10581759B1 (en) 2018-07-12 2020-03-03 Innovium, Inc. Sharing packet processing resources
US10834020B1 (en) 2019-05-09 2020-11-10 L3Harris Technologies, Inc. Scalable network overhead for contested environments

Family Cites Families (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO1999004536A2 (en) 1997-07-14 1999-01-28 Nokia Networks Oy Flow control in a telecommunications network
US6570876B1 (en) * 1998-04-01 2003-05-27 Hitachi, Ltd. Packet switch and switching method for switching variable length packets
TW527804B (en) * 2001-05-25 2003-04-11 Accton Technology Corp Method and apparatus for bandwidth management of TCP traffic employing post-acknowledgement control
KR20050085742A (ko) * 2002-12-19 2005-08-29 코닌클리케 필립스 일렉트로닉스 엔.브이. 무선 네트워크에서의 실시간 데이터 보호
JP4128198B2 (ja) * 2003-07-15 2008-07-30 富士通株式会社 帯域制御装置
EP1762052A1 (en) * 2004-06-22 2007-03-14 TELEFONAKTIEBOLAGET LM ERICSSON (publ) Network feedback method and device
EP1779347A4 (en) 2004-08-17 2009-06-17 California Inst Of Techn METHOD AND DEVICE FOR NETWORK EXTENSION CONTROL USING A QUEEN CONTROL AND DISTANCE DELAY MEASUREMENTS
EP1758418A1 (en) * 2005-08-25 2007-02-28 NTT DoCoMo INC. Method for flow control during handover
WO2010032370A1 (ja) * 2008-09-19 2010-03-25 パナソニック株式会社 伝送レート制御装置及び伝送レート制御方法
JP5033150B2 (ja) 2009-02-10 2012-09-26 日本電信電話株式会社 データ送信制御装置、データ送信制御方法およびデータ送信制御プログラム
JP2011151738A (ja) * 2010-01-25 2011-08-04 Kyocera Corp 端末装置、制御プログラム及び制御方法
JP2011176693A (ja) * 2010-02-25 2011-09-08 Mitsubishi Electric Corp 移動体無線通信装置、tcpフロー制御装置及びその方法

Also Published As

Publication number Publication date
US20150156129A1 (en) 2015-06-04
US9674095B2 (en) 2017-06-06
JP2015106880A (ja) 2015-06-08

Similar Documents

Publication Publication Date Title
JP6303452B2 (ja) 通信ノード
US9641650B2 (en) TCP proxy server
JP6553196B2 (ja) トラフィックフローの監視
JP2020502948A (ja) パケット伝送システムおよび方法
CN108540380B (zh) 多子流网络传输方法及装置
US9635148B2 (en) Partitioning data sets for transmission on multiple physical links
EP3281380B1 (en) Method and system for the scheduling of packets in a bundling scenario based on tcp tunnels and native tcp information
EP2760182A1 (en) Data communication apparatus, data transmission method, and computer system
KR102111029B1 (ko) 다중망 병합 전송 장치, 그리고 이의 패킷 스케줄링 방법
JP5169338B2 (ja) 無線通信システム及びその方法と、それらに用いられる装置及びプログラム
WO2018157819A1 (zh) 多子流网络传输方法及装置
JP2009141565A (ja) 受信端末装置
JP2010130329A (ja) 通信装置および中継装置
JP2015149560A (ja) 制御装置及び制御方法
US9544235B2 (en) Scaling WiFi performance for large-audience environments via access points
JP6973511B2 (ja) 通信装置、通信システム、通信方法及びプログラム
Seyedzadegan et al. The TCP fairness in WLAN: a review
Kim et al. TCP acknowledgement compression for fairness among uplink TCP flows in IEEE 802.11 n WLANs
Cheng et al. Improving the ramping up behavior of TCP slow start
EP3386166A1 (en) Technique for managing communications at a router
Mishra et al. Effective impact of ECN with RED to control heavy congestion
Hamsa The Traffic-Aware Scatter Net Scheduling (TAAS) for Multicast Wireless Protocols
TW202335470A (zh) 網路流壅塞管理裝置及其方法
Shaii et al. Congestion avoidance: Network based schemes solution
JP4977677B2 (ja) エッジノードおよび帯域制御方法

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20160804

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20170602

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20170718

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20170911

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20180206

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20180219

R150 Certificate of patent or registration of utility model

Ref document number: 6303452

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150