説明

中継装置、通信システム及びそれらに用いるフロー制御方法

【課題】 メモリ不足を発生させることなく、代理接続サービスを継続することが可能な中継装置を提供する。
【解決手段】 中継装置は、複数のTCPセッションを代理接続し、受信データを保持する受信バッファのサイズをTCPセッションの受信ウインドウサイズとして接続先に通知する。中継装置は、自装置の中継動作に用いるメモリを、受信ウインドウサイズを接続済みTCPセッションで総和した通知済み受信ウインドウサイズ領域(A1)と、中継転送するデータをTCPセッションの接続先に送信する際に通信途中のデータ紛失時の再送に備えるための送信バッファ領域(A2)との2つの部分に分けて管理し、送信バッファ領域(A2)の空き領域に基づいて受信データの中継を実施するデータ転送手段を有する。

【発明の詳細な説明】
【技術分野】
【0001】
本発明は中継装置、通信システム及びそれらに用いるフロー制御方法に関し、特にTCP(Transmission Control Protocol)セッション単位でのフロー制御方法に関する。
【背景技術】
【0002】
受信ウインドウサイズを拡大したTCPセッションを大量(数万セッション以上)に代理接続(Proxy)する装置においては、受信ウインドウサイズとセッション数との乗算で示される分のメモリを保有している必要がある。
【0003】
上記のTCPセッションを代理接続する装置としては、一つのTCPセッションのデータをシステム内の受信バッファに蓄積して、受信ウインドウサイズを指定する装置が提案されている(例えば、特許文献1参照)。
【先行技術文献】
【特許文献】
【0004】
【特許文献1】特開2005−348107号公報
【発明の概要】
【発明が解決しようとする課題】
【0005】
上述した本発明に関連するTCPセッションを代理接続する装置では、受信ウインドウサイズとセッション数の乗算で示される分のメモリを保有していない場合、ネットワークが輻輳している状況下においてTCPセッションで運ばれるデータがメモリ不足によって蓄積することができず、代理接続サービスを継続することが困難となる。
【0006】
具体的には、メモリ不足によってパケットロスが発生し、最終的にTCPセッションを切断してしまうことが発生し得る。この状況は、受信ウインドウサイズを拡大した場合において、必要メモリ量が多量になることから、より顕著となる。
【0007】
そこで、本発明の目的は上記の問題点を解消し、メモリ不足を発生させることなく、代理接続サービスを継続することができる中継装置、通信システム及びそれらに用いるフロー制御方法を提供することにある。
【課題を解決するための手段】
【0008】
本発明による中継装置は、複数のTCP(Transmission Control Protocol)セッションを代理接続し、受信データを保持する受信バッファのサイズを前記TCPセッションの受信ウインドウサイズとして接続先に通知する中継装置であって、
自装置の中継動作に用いるメモリを、前記受信ウインドウサイズを接続済みTCPセッションで総和した通知済み受信ウインドウサイズ領域と、中継転送するデータを前記TCPセッションの接続先に送信する際に通信途中のデータ紛失時の再送に備えるための送信バッファ領域との2つの部分に分けて管理し、
前記送信バッファ領域の空き領域に基づいて前記受信データの中継を実施するデータ転送手段を備えている。
【0009】
本発明による通信システムは、上記の中継装置を含むことを特徴とする。
【0010】
本発明によるフロー制御方法は、複数のTCP(Transmission Control Protocol)セッションを代理接続し、受信データを保持する受信バッファのサイズを前記TCPセッションの受信ウインドウサイズとして接続先に通知する中継装置に用いるフロー制御方法であって、
前記中継装置の中継動作に用いるメモリを、前記受信ウインドウサイズを接続済みTCPセッションで総和した通知済み受信ウインドウサイズ領域と、中継転送するデータを前記TCPセッションの接続先に送信する際に通信途中のデータ紛失時の再送に備えるための送信バッファ領域との2つの部分に分けて管理し、
前記中継装置が、前記送信バッファ領域の空き領域に基づいて前記受信データの中継を実施するデータ転送処理を実行している。
【発明の効果】
【0011】
本発明は、上記のような構成及び動作とすることで、メモリ不足を発生させることなく、代理接続サービスを継続することができるという効果が得られる。
【図面の簡単な説明】
【0012】
【図1】本発明におけるメモリの使用方式を示す図である。
【図2】本発明の実施の形態による通信システムの構成例を示すブロック図である。
【図3】本発明の実施の形態におけるバッファの概念図である。
【図4】本発明の実施の形態による中継装置の動作を示すフローチャートである。
【発明を実施するための形態】
【0013】
次に、本発明の実施の形態について図面を参照して説明する。まず、本発明による中継装置の概要について説明する。本発明による中継装置は、受信ウインドウサイズを拡大したTCP(Transmission Control Protocol)セッションを大量(数万セッション以上)に代理接続(Proxy)する装置であり、メモリ不足による代理接続サービスの中断を発生させずに、各セッションをベストエフォートで接続できるようにしている。つまり、本発明は、TCPセッション接続先へ通知する受信ウインドウサイズを能動的に制御することにより、メモリ不足を発生させることなく、代理接続サービスを継続できる装置を提供する。
【0014】
本発明による中継装置は、端末とサーバとの間のTCP通信を中継している。ここで、端末側は、モバイル環境や国際伝送網等の遅延(RTT:Round Trip Time)の大きな環境を想定し、帯域遅延積の関係から端末側の受信ウインドウサイズが大きいものとする。
【0015】
図1は本発明におけるメモリの使用方式を示す図である。図1に示すメモリは、上記の中継装置に搭載されているメモリのうち、中継動作に用いられるメモリを示したものである。
【0016】
このメモリの搭載メモリ量Aは、受信ウインドウサイズを接続済みTCPセッションで総和した通知済み受信ウインドウサイズ領域A1と、中継転送するデータを相手先に送信する際に通信途中のデータ紛失時の再送に備えるための送信バッファ領域A2との2つに分類される。つまり、受信バッファの総和が通知済み受信ウインドウサイズ領域A1となる。
【0017】
しかしながら、送信バッファの総和は、送信バッファ領域A2とは等しくならない。これは、受信ウインドウサイズに関しては、下記で説明するように、相手に通知したサイズを変更することができないために固定的に確保されることに対し、送信バッファ領域A2は、送信しようとした時に初めて確保されるものであるため、送信バッファの総和は、通信状況によって増減するためである。また、通信相手から通知された受信ウインドウサイズの最大値を総和したものは送信バッファ領域A2を超える可能性がある。
【0018】
本発明による中継装置は、搭載メモリを通知済み受信ウインドウサイズ領域A1と送信バッファ領域A2との2つの部分に分けて管理することで、端末やサーバに通知した受信ウインドウサイズ分のデータの確実な受信を保証することができる。これにより、本発明による中継装置は、メモリ不足によってパケットを受信できないという状況を防ぐことができ、パケットロスによるダウンロード速度低下や、再送動作が発生することによる送信側端末(あるいはサーバ)の負荷増大を回避することができる。
【0019】
また、本発明による中継装置は、送信バッファを通信状況に応じてTCPセッションに割り当てるためにアクティブセッションの概念を導入したことにより、接続セッション数が大量化した場合でも送信バッファを必要とするセッションを管理することが可能となる。これにより、本発明による代理接続装置は、単純に接続セッション数を残りメモリ量で除算しただけではメモリ使用効率が悪くなってしまう問題を回避し、メモリ使用効率を上げることができる。
【0020】
さらに、本発明による中継装置は、メモリの空き状況のうち、受信に備えて確保しておくべき領域と、他のセッションと共有できる空きメモリとを分けて管理することが可能になることから、空きメモリが不足してきた状況下においても、ベストエフォート動作が可能となる。
【0021】
図2は本発明の実施の形態による通信システムの構成例を示すブロック図である。図2において、本発明の実施の形態による通信システムは、端末2とサーバ3との間で中継装置1を介してTCP通信を行っている。ここで、端末2側は、モバイル環境や国際伝送網等の遅延(RTT)の大きな環境を想定し、帯域遅延積の関係から端末2側の受信ウインドウサイズが大きいものとする。
【0022】
次に、中継装置1は、TCPプロトコルの処理を行うTCP処理部11と、受信したデータを対側装置に転送するまでの間保持しておくためのデータ記憶部12と、受信したデータを加工して転送するためのデータ転送部13と、データの到着や相手装置へのデータ送信完了等のイベントを発生させるためのイベント発生部14と、現時点で空いているメモリ量を計算するための空きバッファ量計算部15と、現時点で通信中であることを示すアクティブセッションを管理するためのアクティブセッション管理部16とを具備している。
【0023】
中継装置1は、TCP処理部11において、空きバッファ量計算部15によって計算される空きバッファ量を参照し、受信ウインドウサイズとして通信相手である端末2やサーバ3に通知すると同時に、空きバッファ量から通知した分を減算する。このことにより、端末2やサーバ3から受信したデータは、全てデータ記憶部12において受信できることが保証される。
【0024】
データ転送部13においてデータを加工・中継する際は、空きバッファ量をアクティブセッション管理部16から提供されるアクティブセッション数で割ったものを送信データ量の上限としてデータの中継を実施する。ここで、送信データは、通信途中のデータ紛失に備えて保持したままにしておくが、通信相手より受信確認(ACK:ACKnowledgement)されれば破棄して良いデータであるため、受信確認された時点でイベント発生部14より送信完了イベントを発生させ、空きバッファ量計算部15にて空きバッファ量を増加させる。
【0025】
図3は本発明の実施の形態におけるバッファの概念図である。図3において、受信バッファ101,103は、それぞれサーバ3と端末2とからの受信データを保持するバッファである。この受信バッファ101,103のサイズは、TCPセッションの受信ウインドウサイズとして通信相手に対して通知されており、プロトコル規約により一度通知したサイズを受信側の都合で減らす(shrinkさせる)ことは原則としてできない。
【0026】
受信バッファ101,103のサイズは、TCP処理部11がデータを受信すると減少し、データ転送部13がデータを処理して対側の送信バッファ102,104に書込むと増加する。
【0027】
次に、送信バッファ102,104は、それぞれ端末2とサーバ3とへ送信するためのデータを保持するバッファである。この送信バッファ102,104のサイズは、通信相手側の受信ウインドウサイズとして通信相手から最大値が通知されるものであり、通知されたサイズを超えて送信を行うことはできない。
【0028】
図4は本発明の実施の形態による中継装置1の動作を示すフローチャートである。図4は、本実施の形態の送信時におけるデータ転送部13の動作を示しており、中継装置1内のCPU(中央処理装置)(図示せず)がプログラムを実行することでも実現可能である。これら図1〜図4を参照して本実施の形態の送信時におけるデータ転送の動作について説明する。
【0029】
尚、図4においては、サーバ3から端末2へデータを送信している場合のデータ転送の動作を示している。また、端末2からサーバ3へデータを送信するという逆側の動作についても、ここで説明する場合と同様に考えることができるため、ここでは逆側の動作の説明を省略する。さらに、TCPセッションの接続、切断といったプロトコル動作についても一般的であるため、ここではそれらプロトコル動作の説明も省略する。
【0030】
データ転送部13は、TCPセッションが接続されると、中継動作を開始し、イベントの受信を待つ(図4ステップS1)。TCP処理部11は、受信バッファ101にデータが到着すると、イベント発生部14を通じて受信イベントを発生させる。この受信イベントは、TCPセッション単位に発生する。
【0031】
データ転送部13は、この受信イベントを受信すると、送信バッファ102の空きを確認し、受信したデータを送信するために十分な空きが存在すれば、送信バッファ102を予約する(図4ステップS2)。
【0032】
送信バッファ102の空きは、空きバッファ量計算部15によって、(セッション毎の送信バッファ量)=min((セッション単位の最大として設定されている値),(空きメモリ量)/(アクティブセッション数),(受信データ量))という式で計算が行われる。
【0033】
ここで、アクティブセッションとは未送信の送信データを保持しているセッションのことを指し、アクティブセッション管理部16によって計算される。言い換えれば、単純に接続しているだけで通信していないセッションを除くということである。
【0034】
データ転送部13は、もしも、送信バッファ102に十分な空きが存在しなければ、何もせずにそのまま中継動作を終了する。つまり、受信バッファ101にそのまま受信データを待ち合わせておくということになり、サーバ3は、受信バッファ101のメモリ量分までしかデータを送信することができず、フロー制御されていることとなる。
【0035】
次に、データ転送部13は、送信バッファ102の予約を行うと、TCP処理部11から上記のステップS2の処理で予約した分だけのデータを受信し、必要な加工処理を実施してから送信バッファ102に書込む(図4ステップS3)。送信バッファ102に書込まれた送信データは、TCP処理部11によって通常のTCP規約にしたがって端末2へ送信される。
【0036】
送信が完了した場合(つまり、TCPのACKを受信した場合)、送信バッファ102から不要となった送信済みデータが取り除かれることとなるが、この時、イベント発生部14を通じて送信完了イベントが発生される。データ転送部13は、送信完了イベントを受けると、上述したデータ受信イベントと同様の動作を行う。
【0037】
この手順を実施した後、まだ受信バッファ101に処理すべきデータが残っていた場合は、受信イベントをイベント発生部14を通じてデータ転送部13に送信する。この受信イベントは、発生順に処理されるため、別のセッションにデータが到着していた場合は、そちらの処理が先に実施されることとなり、セッション間の公平性が保たれる。
【0038】
このように、本実施の形態では、中継装置1の搭載メモリを通知済み受信ウインドウサイズ領域A1と送信バッファ領域A2との2つの部分に分けて管理することで、端末2やサーバ3に通知した受信ウインドウサイズ分のデータの確実な受信を保証することができる。
【0039】
これにより、本実施の形態では、中継装置1がメモリ不足によってパケットを受信できないという状況を防ぐことができ、パケットロスによるダウンロード速度低下や、再送動作が発生することによる送信側端末(あるいはサーバ)の負荷増大を回避することができる。
【0040】
また、本実施の形態では、送信バッファ102,104を通信状況に応じてTCPセッションに割り当てるためにアクティブセッションの概念を導入したことにより、接続セッション数が大量化した場合でも送信バッファ102,104を必要とするセッションを管理することが可能となる。
【0041】
これにより、本実施の形態では、単純に接続セッション数で残りメモリ量を除算しただけではメモリ使用効率が悪くなってしまう問題を回避し、メモリ使用効率を上げることができる。
【0042】
さらに、本実施の形態では、メモリの空き状況のうち、受信に備えて確保しておくべき領域と、他のセッションと共有できる空きメモリとを分けて管理することが可能になることから、空きメモリが不足してきた状況下においても、ベストエフォート動作が可能となる。
【0043】
上述した本発明の実施の形態においては、中継装置1と端末2、サーバ3とを別々の装置として記載しているが、端末2、サーバ3のどちらかと中継装置1とを一体化した場合も、片方向の通信に関しては上記と同様の効果を期待することができる。
【0044】
本実施の形態においては、端末2側がモバイルネットワーク等の遅延が大きいネットワークを想定して記述しているが、特に前提として必要ではなく、どのようなネットワークにおいても上記と同様の効果が得られる。
【符号の説明】
【0045】
1 中継装置
2 端末
3 サーバ
11 TCP処理部
12 データ記憶部
13 データ転送部
14 イベント発生部
15 空きバッファ量計算部
16 アクティブセッション管理部
101,103 受信バッファ
102,104 送信バッファ
A 搭載メモリ量
A1 通知済み受信ウインドウサイズ
A2 送信バッファ

【特許請求の範囲】
【請求項1】
複数のTCP(Transmission Control Protocol)セッションを代理接続し、受信データを保持する受信バッファのサイズを前記TCPセッションの受信ウインドウサイズとして接続先に通知する中継装置であって、
自装置の中継動作に用いるメモリを、前記受信ウインドウサイズを接続済みTCPセッションで総和した通知済み受信ウインドウサイズ領域と、中継転送するデータを前記TCPセッションの接続先に送信する際に通信途中のデータ紛失時の再送に備えるための送信バッファ領域との2つの部分に分けて管理し、
前記送信バッファ領域の空き領域に基づいて前記受信データの中継を実施するデータ転送手段を有することを特徴とする中継装置。
【請求項2】
前記TCPセッションの接続先へ送信するデータを保持する送信バッファを、通信状況に応じて前記TCPセッションに割り当てるためにアクティブセッションの概念を導入し、前記送信バッファを必要とするセッションを管理することを特徴とする請求項1記載の中継装置。
【請求項3】
前記データ転送手段は、前記送信バッファに十分な空きが存在しなければ、何もせずにそのまま中継動作を終了し、前記受信バッファにそのまま受信データを待ち合わせておくことを特徴とする請求項2記載の中継装置。
【請求項4】
上記の請求項1から請求項3のいずれかに記載の中継装置を含むことを特徴とする通信システム。
【請求項5】
複数のTCP(Transmission Control Protocol)セッションを代理接続し、受信データを保持する受信バッファのサイズを前記TCPセッションの受信ウインドウサイズとして接続先に通知する中継装置に用いるフロー制御方法であって、
前記中継装置の中継動作に用いるメモリを、前記受信ウインドウサイズを接続済みTCPセッションで総和した通知済み受信ウインドウサイズ領域と、中継転送するデータを前記TCPセッションの接続先に送信する際に通信途中のデータ紛失時の再送に備えるための送信バッファ領域との2つの部分に分けて管理し、
前記中継装置が、前記送信バッファ領域の空き領域に基づいて前記受信データの中継を実施するデータ転送処理を実行することを特徴とするフロー制御方法。
【請求項6】
前記中継装置において、前記TCPセッションの接続先へ送信するデータを保持する送信バッファを、通信状況に応じて前記TCPセッションに割り当てるためにアクティブセッションの概念を導入したことを特徴とする請求項5記載のフロー制御方法。
【請求項7】
前記データ転送処理において、前記送信バッファに十分な空きが存在しなければ、何もせずにそのまま中継動作を終了し、前記受信バッファにそのまま受信データを待ち合わせておくことを特徴とする請求項6記載のフロー制御方法。

【図1】
image rotate

【図2】
image rotate

【図3】
image rotate

【図4】
image rotate


【公開番号】特開2012−90071(P2012−90071A)
【公開日】平成24年5月10日(2012.5.10)
【国際特許分類】
【出願番号】特願2010−235031(P2010−235031)
【出願日】平成22年10月20日(2010.10.20)
【出願人】(000004237)日本電気株式会社 (19,353)
【Fターム(参考)】