説明

TCP転送装置およびそのプログラム

【課題】本発明は、高速再転送アルゴリズムが採用され、論理回線ごとの遅延差によってTCPパケットの到着順序が入れ替わる場合でも、TCP伝送のスループットを向上させることができるTCP転送装置を提供する。
【解決手段】TCP分割転送装置3は、TCPパケットを受信するTCPパケット受信部31と、複数の論理回線Lの中から1つの論理回線Lを選択し、選択論理回線の情報が含まれる転送情報を生成する経路選択部33と、有効なフィルタが設定されている場合にはACKパケットを破棄し、有効なフィルタが設定されていない場合にはACKパケットを通過させるACK制御部35と、論理回線遅延量を予め計測する遅延量設定部36と、ACK制御部35が通過させたACKパケットをTCP伝送装置1に送信するTCPパケット送信部37とを備える。

【発明の詳細な説明】
【技術分野】
【0001】
本発明は、シーケンス番号が含まれるTCPパケットを送信側端末装置から受信し、複数の論理回線の何れかを介して、受信したTCPパケットをTCPパケットの宛先となる受信側端末装置に向けて転送するTCP転送装置およびそのプログラムに関する。
【背景技術】
【0002】
近年、情報伝達のインフラとして普及しているIP(Internet Protocol)ネットワークは、一般的に、パケットの伝送が保証されないベストエフォートネットワークである。このため、ファイル伝送のように、確実にパケットが伝送されることを必要とする用途には、伝達確認を行うTCP(Transmission Control Protocol)が、広く利用されている(非特許文献1)。
【0003】
TCPの基本的な通信アルゴリズムを以下に説明する。送信側は、伝送するパケットのヘッダにシーケンス番号を含めて送信する。受信側は、受信したパケットのシーケンス番号を元に、次に受信すべきシーケンス番号をACK(Acknowledgement)パケットにてACK番号として返送する。送信側は、受信したACKパケットにより、受信側がどのパケットまで正常に受信できたかを知ることができる。また、一定時間の間に受信を確認できなかったパケットに対して、送信側は、もう一度同じパケットを送信することで、確実な伝送を実現する。
【0004】
また、TCPでは、送信量をコントロールする値として、輻輳ウィンドウと受信ウィンドウとを使用する。輻輳ウィンドウとは、送信側がACKパケットの返送を待たずに送信できるデータ量のことである。また、受信ウィンドウとは、受信側がある時点で処理できるデータ量のことである。ここで、輻輳ウィンドウは、ACKパケットを受け取る度に拡大され、より大きなデータをACKパケットの返送を待たずに送信できるようになる。一方、パケットロスが発生し、あるパケットに対するACKパケットを受信できず、パケットの再送を行った場合、輻輳ウィンドウは、初期値にリセットされる。
【0005】
また、TCPでは、ACKパケットのタイムアウトを待たずに、パケットロスを検知してパケットを再送する高速再転送アルゴリズムが用いられる。例えば、送信側が同じACK番号を持ったACKパケットを3つ連続で受け取った場合、送信側は、タイムアウトを待たずにパケットの再送を行う。この場合、輻輳ウィンドウが縮小される。さらに、Reno、NewReno、Vegasなど、輻輳ウィンドウの拡大幅や縮小幅を変えるTCP伝送性能改善技術が提案されている(非特許文献2〜4)。
【0006】
ここで、TCPに限られず、伝達確認を行うデータ伝送の最大スループットは、受信ウィンドウの最大サイズおよび往復伝番遅延によって定まる。この受信ウィンドウの最大サイズによるボトルネックを回避するには、単一の回線上に複数のTCPコネクションを確立する手法が考えられる。この手法では、受信ウィンドウがコネクションの数だけ拡大するため、TCP伝送のスループットが向上する。
【0007】
一方、受信ウィンドウのサイズが十分な場合、回線の伝送速度がボトルネックとなり、前記した単一の回線上に複数のTCPコネクションを確立する手法では、スループットの改善効果を期待できない。この場合、複数回線を用いる手法によって、回線の合計伝送速度を増加させ、TCP伝送のスループットを向上させることができる。
【先行技術文献】
【非特許文献】
【0008】
【非特許文献1】RFC793 Transmission Control Protocol
【非特許文献2】RFC2581 TCP Congestion Control
【非特許文献3】RFC3782 The NewReno Modification to TCP’s Fast Recovery Algorithm
【非特許文献4】TCP Vegas: End to End Congestion Avoidance on a Global Internet. IEEE Journal on Selected Areas in Communication, Vol 13, No. 8, 1465-1480
【発明の概要】
【発明が解決しようとする課題】
【0009】
しかし、複数回線を用いる手法では、各回線の遅延量を一致させることが困難である。このため、遅延量が小さい回線で伝送されたパケットが、遅延量が大きい回線で伝送されたパケットを追い越すことにより、パケットの到着順序が入れ替わることがある。そして、高速再転送アルゴリズムを採用した場合、パケットの到着順序が入れ替わると、受信側が、パケットロスが発生したと勘違いして、追い越されたパケットの再送要求を送信側に行ってしまう。このため、複数回線を用いる手法では、TCP伝送のスループットが向上しないという問題が発生する。
【0010】
図9を参照して、この問題を具体的に説明する。
この図9では、「PCK」がパケットを示し、PCKの後に図示した「1」,「2」などの数値がそのパケットのシーケンス番号を示す。また、「ACK」がACKパケットを示し、ACKの後に図示した「1」,「2」などの数値がそのACKパケットのACK番号を示している。
【0011】
まず、送信側のTCP伝送装置91は、遅延量が大きい回線を介して、先頭のパケットであるPCK1を、受信側のTCP伝送装置93に送信する(ステップS91)。次に、TCP伝送装置91は、遅延量が小さい回線を介して、PCK1の次のパケットであるPCK2を、TCP伝送装置93に送信する。ここで、両回線の遅延量が異なるため、TCP伝送装置93には、PCK1よりPCK2が先に到着する(ステップS92)。
【0012】
この場合、TCP伝送装置93は、PCK1のパケットロスが発生したと判定して、PCK1の再送を要求すべく、ACK1をTCP伝送装置91に送信する(ステップS93)。このACK1に応じて、TCP伝送装置91は、輻輳ウィンドウを初期値にリセットして、PCK1をTCP伝送装置93に再送する(ステップS94)。
【0013】
この結果、複数回線を用いる手法では、PCK1のパケットロスが発生していないにも関わらず、高速再転送アルゴリズムによるPCK1の再送および輻輳ウィンドウの縮小が行われるため、TCP伝送のスループットが向上しない。
【0014】
そこで、本発明は、前記した問題を解決し、高速再転送アルゴリズムが採用され、論理回線ごとの遅延差によってTCPパケットの到着順序が入れ替わる場合でも、TCP伝送のスループットを向上させることができるTCP転送装置およびそのプログラムを提供することを目的とする。
【課題を解決するための手段】
【0015】
前記した課題に鑑みて、本願第1発明に係るTCP転送装置は、シーケンス番号が含まれるTCPパケットを送信側端末装置から受信し、複数の論理回線の何れかを介して、受信したTCPパケットを当該TCPパケットの宛先となる受信側端末装置に向けて転送するTCP転送装置であって、TCPパケット受信部と、経路選択部と、ACK制御部と、ACKパケット送信部と、を備えることを特徴とする。
【0016】
かかる構成によれば、TCP転送装置は、TCPパケット受信部によって、TCPパケットを受信する。また、TCP転送装置は、経路選択部によって、複数の論理回線の中から、TCPパケット受信部によって受信されたTCPパケットが転送される論理回線を所定の規則によって選択し、選択した論理回線を介して、TCPパケットを受信側端末装置に向けて転送すると共に、転送したTCPパケットのシーケンス番号および選択した論理回線である選択論理回線の情報が含まれる転送情報を生成する。
【0017】
ここで、経路選択部は、少なくとも、TCPパケットを転送する論理回線(論理回線の上り方向)を選択すればよく、ACKパケットが返送される論理回線(論理回線の下り方向)を必ずしも選択する必要がない。なお、経路選択部が論理回線の下り方向を選択しない場合、論理回線の下り方向は、戻り回線情報として通知される。
【0018】
また、複数の論理回線は、少なくとも、TCP転送装置から受信側端末装置までの一部区間に構築されていれば、TCP転送装置から受信側端末装置までの全区間に構築されなくともよい。例えば、TCP転送装置から受信側端末装置までの間に他のTCP転送装置が配置される場合、複数の論理回線は、TCP転送装置から他のTCP転送装置までの区間に構築される。この場合、他のTCP転送装置から受信側端末装置までの残り区間には、1つの論理回線を構築する。
【0019】
また、TCP転送装置は、ACK制御部によって、経路選択部によって転送されたTCPパケットへの応答であるACKパケットを受信側端末装置から受信し、受信したACKパケットをフィルタによって破棄または通過させる。そして、TCP転送装置は、ACKパケット送信部によって、ACK制御部が通過させたACKパケットを送信側端末装置に送信する。
【0020】
また、TCP転送装置は、ACK制御部によって、論理回線ごとに予め設定された論理回線遅延量に基づいて、経路選択部によって生成された転送情報に含まれる選択論理回線の遅延量を算出し、算出した選択論理回線の遅延量をTCPパケットが転送されてからの有効期間とし、かつ、転送情報に含まれるシーケンス番号を破棄対象ACK番号としたフィルタを設定する。
【0021】
ここで、TCPパケットの到着順序が入れ替わった場合、受信側端末装置は、パケットロスが発生したと勘違いして、追い越されたTCPパケットの再送を要求すべく、ACKパケットを返送する。この場合、ACK制御部は、パケットロスと勘違いして送信されたACKパケットを、フィルタによって破棄する。従って、TCP転送装置は、送信側端末装置がこのACKパケットを受信することがなく、パケットロスが発生していないにも関わらず、TCPパケットの再送および輻輳ウィンドウの縮小が行われる事態を防止できる。
【0022】
また、本願第2発明に係るTCP転送装置は、ACK制御部が、論理回線ごとに往復遅延時間を予め計測して、計測した往復遅延時間を論理回線遅延量として設定する遅延量設定手段、をさらに備えることが好ましい。
【0023】
また、本願第3発明に係るTCP転送装置は、ACK制御部が、フィルタの有効期間内にACKパケットを受信し、かつ、受信したACKパケットのACK番号がフィルタの破棄対象ACK番号と一致する場合、ACKパケットを破棄することが好ましい。
【0024】
また、本願第4発明に係るTCP転送装置は、経路選択部が、TCPパケット受信部によって受信されたTCPパケットをTCP以外の他のプロトコルヘッダでカプセル化し、カプセル化したTCPパケットを受信側端末装置に向けて転送することが好ましい。
【0025】
なお、本願第1発明に係るTCP転送装置は、一般的なコンピュータを、TCPパケット受信部、経路選択部、ACK制御部、ACKパケット送信部として機能させるTCP転送プログラムによって実現することもできる。
【発明の効果】
【0026】
本願発明によれば、以下のような優れた効果を奏する。
本願第1発明によれば、パケットロスと勘違いして受信側端末装置が返送したACKパケットをフィルタによって破棄するため、送信側端末装置がこのACKパケットを受信することがない。これによって、本願第1発明によれば、パケットロスが発生していないにも関わらず、TCPパケットの再送および輻輳ウィンドウの縮小が行われる事態を防止でき、TCP伝送のスループットを向上させることができる。
【0027】
本願第2発明によれば、往復遅延時間を用いて、フィルタの有効期間を適切な長さで設定することができる。このため、本願第2発明によれば、フィルタの有効期間が経過した後、ACKパケットが送信側端末装置に送信されるため、パケットロスによりTCPパケットの再送が必要な場合には、送信側端末装置が素早くTCPパケットを再送することができる。
【0028】
本願第3発明によれば、新たなTCPパケットの送信を要求するACKパケットを通過させ、既に送信したTCPパケットの再送を要求するACKパケットのみを破棄するので、ACKパケットを必要以上に破棄することがない。
【0029】
本願第4発明によれば、TCPパケットを他のプロトコルヘッダでカプセル化することで、TCPパケットを、TCP以外の他のプロトコルを用いて、受信側端末装置に送信することができる。
【図面の簡単な説明】
【0030】
【図1】本発明の第1実施形態に係るTCP分割転送装置を含むTCP分割転送システムの概略図である。
【図2】図1のTCP分割転送装置の構成を示すブロック図である。
【図3】TCPパケットの到着順が入れ替わるケースにおいて、図1のTCP分割転送装置の動作を示すシーケンス図である。
【図4】TCPパケットの到着順が入れ替わらないケースにおいて、図1のTCP分割転送装置の動作を示すシーケンス図である。
【図5】本発明の第2,第3実施形態に係るTCP分割転送装置を含むTCP分割転送システムの概略図である。
【図6】図5のTCP分割転送装置の構成を示すブロック図である。
【図7】本発明の第2実施形態において、IPヘッダでカプセル化されたTCPパケットのデータ構造を説明する図である。
【図8】本発明の第3実施形態において、UDPヘッダでカプセル化されたTCPパケットのデータ構造を説明する図である。
【図9】従来技術の問題点を説明するシーケンス図である。
【発明を実施するための形態】
【0031】
(第1実施形態)
以下、本発明の各実施形態について、適宜図面を参照しながら詳細に説明する。なお、各実施形態において、同一の機能を有する手段には同一の符号を付し、説明を省略した。
【0032】
[TCP分割転送システムの概略]
図1を参照し、本発明の第1実施形態に係るTCP分割転送装置3を含むTCP分割転送システム100の概略について説明する。
図1に示すように、TCP分割転送システム100は、TCPストリームを複数の論理回線に分割して伝送するものであり、TCP伝送装置(送信側端末装置)1と、TCP分割転送装置(TCP転送装置)3と、TCP分割転送装置(他のTCP転送装置)5と、TCP伝送装置(受信側端末装置)7とを備える。
【0033】
第1実施形態では、TCP伝送装置1が、TCPパケットをTCP伝送装置7に向けて転送することとして説明する。以下の説明において、TCP伝送装置1からTCP伝送装置7への方向を「上り方向」とし、TCP伝送装置7からTCP伝送装置1への方向を「下り方向」と呼ぶ場合がある。
【0034】
TCP伝送装置1は、TCP伝送機能を有する装置であり、例えば、図示を省略したネットワークインターフェースを備える一般的なコンピュータである。
ここでは、TCP伝送装置1は、論理回線Lを介して、TCP分割転送装置3と接続されている。そして、TCP伝送装置1は、一般的なクライアントサーバアプリケーション(例えば、HTTP,SMTP、FTP、TELNET)によって作成されたTCPパケットを、TCP分割転送装置3に送信する。
【0035】
TCP分割転送装置3は、TCPパケットをTCP伝送装置1から受信し、複数の論理回線L,L,・・・,Lの何れかを介して(mは2以上の任意の整数)、受信したTCPパケットを、このTCPパケットの宛先となるTCP伝送装置7に向けて転送するものである。
【0036】
ここでは、TCP分割転送装置3は、複数の論理回線L,L,・・・,Lを介して、TCP分割転送装置5と接続されている。そして、TCP分割転送装置3は、複数の論理回線L,L,・・・,Lの中から1つの論理回線Lを選択する。さらに、TCP分割転送装置3は、選択した論理回線Lを介して、TCP伝送装置1から受信したTCPパケットをTCP分割転送装置5に転送する。
なお、TCP分割転送装置3の構成については、後記する。
【0037】
論理回線L(L,L,L,L,・・・,L)は、上り方向および下り方向のTCP伝送でそれぞれ使用される物理回線のペア、または、上り方向および下り方向のTCP伝送で共通して使用される、1つの物理回線で構成される。
なお、論理回線Lと物理回線との関係については、第2実施形態以降で説明する。
【0038】
TCP分割転送装置5は、TCP分割転送装置3と同一構成の装置である。
ここでは、TCP分割転送装置5は、論理回線Lを介して、TCP伝送装置7と接続されている。そして、TCP分割転送装置5は、TCP分割転送装置3から転送されたTCPパケットをTCP伝送装置7に送信する。
また、TCP分割転送装置5は、論理回線Lの論理回線遅延量(例えば、往復遅延時間(RTT:Round Trip Time))を予め計測しておくこととし、その理由を後記する。
【0039】
TCP伝送装置7は、TCP伝送装置1と同一構成の装置である。
ここでは、TCP伝送装置7は、TCP分割転送装置5からTCPパケットを受信し、このTCPパケットの送信先ポート番号に対応するクライアントサーバアプリケーションによって、このTCPパケットを処理する。このとき、TCP伝送装置7は、受信したTCPパケットのシーケンス番号に基づいて、次に受信すべきTCPパケットのシーケンス番号を、ACK番号として算出する。そして、TCP伝送装置7は、算出したACK番号を格納したACKパケットを生成して、TCP伝送装置1に向けて返送する。
【0040】
また、TCP伝送装置7は、一般的な手法によって、パケットロスが発生したか判定する。例えば、TCP伝送装置7は、TCPパケットを一定時間受信できない場合や、シーケンス番号順にTCPパケットを受信できない場合、パケットロスが発生したと判定する。ここで、パケットロスが発生した場合、TCP伝送装置7は、TCPパケットの再送をTCP伝送装置1に要求する。具体的には、TCP伝送装置7は、受信できなかったTCPパケットのシーケンス番号を表すACK番号を算出し、このACK番号を格納したACKパケットを生成して、TCP伝送装置1に向けて返送する。
【0041】
以上のように、TCP分割転送システム100では、TCP伝送装置1からTCP分割転送装置3,5を経由して、TCP伝送装置7にTCPパケットを送信する。また、TCP分割転送システム100では、TCP伝送装置7からTCP分割転送装置5,3を経由して、このTCPパケットに対するACKパケットをTCP伝送装置1に返送する。
また、TCP分割転送システム100では、複数の論理回線L,L,・・・,Lで遅延差が生じるためにTCPパケットの到着順が入れ替わる場合でも、以下で説明するTCP分割転送装置3によってその弊害を防止する。
【0042】
[TCP分割転送装置の構成]
図2を参照して、TCP分割転送装置3の構成について説明する(適宜図1参照)。
図2に示すように、TCP分割転送装置3は、TCPパケット受信部31と、経路選択部33と、ACK制御部35と、TCPパケット送信部(ACKパケット送信部)37とを備える。
なお、図2では、説明をわかり易くするため、各論理回線Lを上り方向および下り方向で分けて図示している。
【0043】
TCPパケット受信部31は、論理回線Lを介して、TCP伝送装置1によって送信されたTCPパケットを受信するものである。そして、TCPパケット受信部31は、受信したTCPパケットを経路選択部33に出力する。
【0044】
経路選択部33は、複数の論理回線L,L,・・・,Lの中から、TCPパケット受信部31によって受信されたTCPパケットが転送される論理回線Lを所定の規則によって選択し、選択した論理回線Lを介して、TCPパケットをTCP伝送装置7に向けて転送すると共に、転送したTCPパケットのシーケンス番号および選択した論理回線Lを示す情報が含まれる転送情報を生成するものである。
【0045】
ここで、経路選択部33は、IPによりTCPパケットをカプセル化することで、論理回線Lを選択する。言い換えるなら、経路選択部33は、IP層(ネットワーク層)で実装された規則によって、複数の論理回線L,L,・・・,Lの中から、TCPパケットを転送する論理回線Lを選択する。論理回線Lの選択方法としては、例えば、複数の論理回線L,L,・・・,Lの中からランダムに論理回線Lを選択する方法、または、予め定められた割合に基づいて選択する方法(重み付きラウンドロビン)があげられる。そして、経路選択部33は、選択した論理回線Lを介して、TCPパケット受信部31から出力されたTCPパケットをTCP分割転送装置5に転送する。
【0046】
このとき、経路選択部33は、TCP分割転送装置5に転送したTCPパケットのシーケンス番号と、選択した論理回線Lである選択論理回線の情報とを含む転送情報を生成する。そして、経路選択部33は、生成した転送情報をACK制御部35に出力する。
【0047】
以下、ACK制御部35より先に、遅延量設定部36について説明する。
遅延量設定部36は、論理回線L,L,・・・,Lごとの遅延量を示す論理回線遅延量を予め計測するものである。そして、遅延量設定部36は、計測した論理回線遅延量を、図示を省略したメモリ等に記憶させる。
【0048】
ここで、遅延量設定部36は、論理回線遅延量として、往復遅延時間を計測する。具体的には、遅延量設定部36は、論理回線L,L,・・・,Lをそれぞれ経由させて、計測用パケットをTCP分割転送装置5に送信する。この計測用パケットを受信した場合、TCP分割転送装置5は、予め計測した論理回線Lの論理回線遅延量だけ遅延させてから、この計測用パケットに対する応答パケット(ACKパケット)をTCP分割転送装置3に返送する。そして、遅延量設定部36は、論理回線L,L,・・・,Lごとに、計測用パケットの送信時刻と、この計測用パケットに対する応答パケットの受信時刻との差を、論理回線L,L,・・・,Lごとの論理回線遅延量として計測する。
【0049】
以上のように、論理回線L,L,・・・,Lごとの論理回線遅延量には、複数の論理回線L,L,・・・,Lが構築された区間(TCP分割転送装置3,5の間)の往復遅延時間に加えて、論理回線Lが構築された区間(TCP分割転送装置5とTCP伝送装置7の間)の往復遅延時間を反映させることが好ましい。これによって、遅延量設定部36は、より正確な論理回線遅延量を計測できる。
【0050】
ACK制御部35は、前記した遅延量設定部36を備えると共に、経路選択部33によって転送されたTCPパケットへの応答であるACKパケットをTCP伝送装置7から受信し、受信したACKパケットをフィルタ(不図示)によって破棄または通過させものである。
【0051】
具体的に、ACK制御部35は、遅延量設定部36が計測した論理回線遅延量に基づいて、経路選択部33から出力された転送情報が示す論理回線Lの遅延量を算出する。つまり、ACK制御部35は、TCPパケットが転送される上り方向の物理回線と、ACKパケットが返送される下り方向の物理回線とで構成される論理回線L,L,・・・,Lの往復遅延時間を、論理回線Lの遅延量として算出する。そして、ACK制御部35は、算出した論理回線L,L,・・・,Lの遅延量を有効期間とし、かつ、転送情報のシーケンス番号を破棄対象ACK番号としたフィルタを設定する。
【0052】
ここで、TCP伝送装置7からACKパケットを受信した場合、ACK制御部35は、このACKパケットを受信した時刻が有効期間内で、かつ、このACKパケットのACK番号が破棄対象ACK番号と一致する有効なフィルタが設定されているか否かを判定する。ここで、受信したACKパケットに対して有効なフィルタが設定されている場合、ACK制御部35は、このACKパケットを破棄する。一方、受信したACKパケットに対して有効なフィルタが設定されていない場合、ACK制御部35は、このACKパケットを通過させる。
【0053】
TCPパケット送信部37は、ACK制御部35が通過させたACKパケットを、論理回線Lを介して、TCP伝送装置1に転送するものである。
【0054】
[TCP分割転送装置の動作:TCPパケットの到着順が入れ替わるケース]
図3を参照して、TCPパケットの到着順が入れ替わるケースを例に、TCP分割転送装置3の動作について説明する(適宜図2参照)。
【0055】
図3では、「PCK」がパケットを示し、PCKの後に図示した「1」,「2」などの数値がそのTCPパケットのシーケンス番号を示す。また、「ACK」がACKパケットを示し、ACKの後に図示した「1」,「2」などの数値がそのACKパケットのACK番号を示している。
また、図3では、縦軸が時間を示すと共に、フィルタα,βの有効期間をハッチングで図示した。
また、図3では、遅延量が大きい論理回線Lを介してPCK1が送信され、論理回線Lより遅延量が小さい論理回線Lを介して、PCK2が送信される。
【0056】
TCP分割転送装置3は、TCPパケット受信部31によって、TCP伝送装置1からPCK1を受信する(ステップS1)。このPCK1には、先頭のTCPパケットであることを示すシーケンス番号「1」が付与されている。
【0057】
TCP分割転送装置3は、経路選択部33によって、複数の論理回線L,L,・・・,Lの中から論理回線Lを選択して、論理回線Lを介して、TCP伝送装置7に向けてPCK1を転送する。また、TCP分割転送装置3は、経路選択部33によって、シーケンス番号「1」および選択論理回線Lとした転送情報を生成して、ACK制御部35に出力する(ステップS2)。
【0058】
TCP分割転送装置3は、ACK制御部35によって、経路選択部33からの転送情報に基づいて、破棄対象ACK番号「1」としたフィルタαを設定する(ステップS3)。このフィルタαは、論理回線Lの遅延量が大きいため、有効期間が長くなる。
【0059】
TCP分割転送装置3は、TCPパケット受信部31によって、TCP伝送装置1からPCK2を受信する(ステップS4)。このPCK2には、PCK1の次のTCPパケットであることを示すシーケンス番号「2」が付与されている。
【0060】
TCP分割転送装置3は、経路選択部33によって、複数の論理回線L,L,・・・,Lの中から論理回線Lを選択して、論理回線Lを介して、TCP伝送装置7に向けてPCK2を転送する。また、TCP分割転送装置3は、経路選択部33によって、シーケンス番号「2」および選択論理回線Lとした転送情報を生成して、ACK制御部35に出力する(ステップS5)。
【0061】
TCP分割転送装置3は、ACK制御部35によって、経路選択部33からの転送情報に基づいて、破棄対象ACK番号「2」としたフィルタβを設定する(ステップS6)。このフィルタβは、論理回線Lの遅延量が論理回線Lより小さいため、フィルタαより有効期間が短くなる。
【0062】
このケースでは、TCP分割転送装置3は、PCK2より先にPCK1をTCP伝送装置7に向けて転送している。しかし、論理回線Lの遅延量が論理回線Lより大きいため、TCP伝送装置7には、PCK1より先にPCK2が到着する。この場合、TCP伝送装置7は、PCK1のパケットロスが発生したと勘違いし、ACK番号「1」のACKパケットをTCP伝送装置1に返送する。従って、TCP分割転送装置3は、ACK制御部35によって、このACK1を受信することになる(ステップS7)。
【0063】
ここで、ACK1をフィルタαの有効期間内に受信し、かつ、ACK1のACK番号「1」と、フィルタαの破棄対象ACK番号「1」とが一致する。つまり、ACK1に対する有効なフィルタが設定されているため、TCP分割転送装置3は、ACK制御部35によって、このACK1を破棄する(ステップS8)。
【0064】
PCK1が到着した後、TCP伝送装置7は、シーケンス番号「3」のTCPパケットを要求すべく、ACK番号「3」のACKパケットをTCP伝送装置1に返送する。従って、TCP分割転送装置3は、ACK制御部35によって、このACK3を受信することになる(ステップS9)。
【0065】
ここで、シーケンス番号「3」のTCPパケットを転送していないため、TCP分割転送装置3には、ACK3に対する有効なフィルタが設定されていない。このため、TCP分割転送装置3は、ACK制御部35によって、このACK3をTCP伝送装置1まで通過させる(ステップS10)。
【0066】
その後、TCP伝送装置1は、このACK3に応じて、PCK3をTCP伝送装置7に向けて送信する。このように、TCP分割転送システム100では、PCK2に追い越されたPCK1がTCP伝送装置7に到着した後、正常なTCP伝送処理に復帰する。
【0067】
以上のように、TCP分割転送装置3では、パケットロスと勘違いしてTCP伝送装置7が返送したACK1をフィルタによって破棄するため、TCP伝送装置1がこのACK1を受信することがない。すなわち、TCP分割転送装置3は、新たなTCPパケットの送信を要求するACKパケットを通過させ、既に送信されたTCPパケットの再送を要求するACKパケットを破棄するというように、ACKパケットを必要以上に破棄することがない。これによって、TCP分割転送装置3は、パケットロスが発生していないにも関わらず、TCPパケットの再送および輻輳ウィンドウの縮小が行われる事態を防止でき、TCP伝送のスループットを向上させることができる。
【0068】
ここで、図3において、TCP分割転送装置3がPCK1を転送した後、PCK1のパケットロスが発生した場合を考える。すると、TCP伝送装置7は、PCK1の再送を要求すべく、ACK1をTCP伝送装置1に送信する。この場合、このACK1がフィルタαによって破棄されてしまうため、PCK1が再送できないようにも思われる。しかし、TCP分割転送装置3では、フィルタαの有効期間が適切な長さで設定されるため、この有効期間が経過した後、ACK1をTCP伝送装置1まで通過させることになる。従って、TCP伝送装置1は、パケットロスによりPCK1の再送が必要な場合、素早くPCK1を再送することができる。
【0069】
[TCP分割転送装置の動作:TCPパケットの到着順が入れ替わらないケース]
図4を参照して、TCPパケットの到着順が入れ替わらないケースを例に、TCP分割転送装置3の動作について説明する(適宜図2参照)。
図4では、論理回線L,Lの遅延量が同程度であることとして説明する。
【0070】
ステップS11,S12の処理は、図3のステップS1,S2の処理と同様のため、説明を省略する。
TCP分割転送装置3は、ACK制御部35によって、経路選択部33からの転送情報に基づいて、破棄対象ACK番号「1」としたフィルタαを設定する(ステップS13)。
【0071】
このケースでは、PCK1,2の到着順が入れ替わることなく到着するため、TCP伝送装置7は、PCK1の次のTCPパケットの送信を要求すべく、ACK番号「2」のACKパケットをTCP伝送装置1に返送する。従って、TCP分割転送装置3は、ACK制御部35によって、TCP伝送装置7からACK2を受信することになる(ステップS14)。
【0072】
ここで、TCP分割転送装置3には、シーケンス番号「2」のTCPパケットを転送していないため、ACK2に対する有効なフィルタが設定されていない。このため、TCP分割転送装置3は、ACK制御部35によって、このACK2をTCP伝送装置1まで通過させる(ステップS15)。
【0073】
その後、TCP伝送装置1は、このACK2に応じて、PCK2をTCP伝送装置7に向けて送信する。このように、TCP分割転送システム100では、PCK1,2の到着順が入れ替わらない場合、正常なTCP伝送処理を継続することができる。
【0074】
以上、本発明の第1実施形態に係るTCP分割転送装置3について説明したが、本発明は、これに限定されない。以下、TCP分割転送装置3の種々の変形例について説明する(適宜図1,図2参照)。
【0075】
(変形例1)
第1実施形態では、論理回線遅延量として往復遅延時間を説明したが、本発明では、論理回線遅延量として、論理回線L,L,・・・,Lの通信品質を示す様々な指標を利用することができる。例えば、遅延量設定部36は、論理回線遅延量として、ビットレートまたは符号化誤り率を用いることができる。
【0076】
具体的には、遅延量設定部36には、ビットレートと論理回線遅延量とが反比例の関係になる遅延量算出関数を予め定義しておく。そして、遅延量設定部36は、論理回線L,L,・・・,Lのビットレートを測定して、測定したビットレートを遅延量算出関数に引数として与えることで、論理回線遅延量を算出する。
【0077】
この他、遅延量設定部36には、符号化誤り率と論理回線遅延量とが比例の関係になる遅延量算出関数を予め定義しておく。そして、論理回線L,L,・・・,Lの符号化誤り率を測定して、測定した符号化誤り率を遅延量算出関数に引数として与えることで、論理回線遅延量を算出する。
【0078】
(変形例2)
第1実施形態では、TCP伝送装置1からTCP伝送装置7に向けてTCPパケットを送信することとして説明したが、実際には、TCP伝送装置1,7が互いにTCPパケットを送信することが考えられる。そこで、図2のTCP伝送装置1の各手段が、以下で説明する機能を備えてもよい。
【0079】
TCP伝送装置7がTCP伝送装置1に向けてTCPパケットを送信する場合、TCP伝送装置1は、TCP伝送装置7に向けて、送信データが含まれていないACKパケットを返送することになる。そこで、経路選択部33は、TCPパケット受信部31から入力されたTCPパケットが、このACKパケットである場合、転送情報を生成せず、この転送情報をACK制御部35に出力しなくともよい。
【0080】
ACK制御部35は、TCP伝送装置7から、ACKパケット以外のTCPパケットを受信することがある。従って、受信したTCPパケットに送信データが含まれている場合、ACK制御部35は、このTCPパケットをフィルタによって破棄せず、通過させてもよい。
【0081】
遅延量設定部36は、論理回線Lの論理回線遅延量(例えば、往復遅延時間)を予め計測してもよい。そして、TCP分割転送装置5から計測用パケットを受信した場合、ACK制御部35は、遅延量設定部36が計測した論理回線Lの論理回線遅延量だけ遅延させてから、この計測用パケットに対する応答パケットをTCP分割転送装置5に返送する。
このようにして、TCP分割転送装置3は、TCP分割転送装置5が計測する論理回線遅延量に、論理回線Lの論理回線遅延量を反映させることができる。
【0082】
なお、第1実施形態では、TCP分割転送装置3は、TCPパケットを送信したとき(例えば、図3のステップS3)にフィルタを設定することとしたが、ACKパケットを受信したとき(例えば、図3のステップS8)にフィルタを設定することもできる。
以後、ACKパケットを受信したときにフィルタを設定するケースを第2実施形態とし、TCPパケットを送信したときにフィルタを設定するケースを第3実施形態として詳細に説明する。
【0083】
(第2実施形態)
[TCP分割転送システムの概略]
図5を参照し、TCP分割転送システム100Bについて、第1実施形態と異なる点を説明する。具体的には、TCP分割転送システム100Bでは、複数のIP回線P(P,P,P,P,・・・,P)を用いると共に、IPヘッダでTCPパケットをカプセル化することが、第1実施形態と異なる。
【0084】
図5に示すように、TCP分割転送システム100Bは、TCPストリームを、外部IPネットワーク(例えば、イーサネット(登録商標)LAN)NWを介して伝送するものであり、TCP伝送装置(送信側端末装置)1と、TCP分割転送装置(TCP転送装置)3Bと、TCP分割転送装置5Bと、TCP伝送装置(受信側端末装置)7とを備える。
【0085】
この第2実施形態では、TCP分割転送装置3Bは、論理回線L(図1参照)の上り方向を選択し、この論理回線Lの上り方向を使用してTCPパケットを転送する。また、TCP分割転送装置5Bは、論理回線Lの下り方向を予め選択しておき、この論理回線Lの下り方向を使用してACKパケットを返送する。そして、TCP分割転送装置3Bは、ACKパケットを受信した後、このACKパケットのヘッダから論理回線Lの下り方向を判別する。つまり、TCP分割転送装置3Bは、ACKパケットを受信するまで、上り方向および下り方向を含めた論理回線Lの全体を判別できないため、ACKパケットを受信したときにフィルタを設定する。
【0086】
IP回線P(P,P,P,P,・・・,P)は、上り方向および下り方向の両端が、固有のIPアドレスを有するIPインタフェース(図6参照)に接続された物理回線である。
【0087】
TCP伝送装置1,7は、図1と同様の装置である。
TCP伝送装置1は、IP回線Pを介して、TCP分割転送装置3Bと接続されている。また、TCP伝送装置7は、IP回線Pを介して、TCP分割転送装置5Bと接続されている。
【0088】
TCP分割転送装置3Bは、TCPパケットをTCP伝送装置1から受信し、複数のIP回線P,P,・・・,Pの何れかを介して(nは2以上の任意の整数)、受信したTCPパケットを、このTCPパケットの宛先となるTCP伝送装置7に向けて転送するものである。
【0089】
ここで、TCP分割転送装置3Bは、複数のIP回線P,P,・・・,Pを介して、TCP分割転送装置5Bと接続されている。そして、TCP分割転送装置3Bは、複数のIP回線P,P,・・・,Pの中から、論理回線Lの上り方向に使用するIP回線Pを選択する。さらに、TCP分割転送装置3Bは、選択したIP回線Pを介して、TCP伝送装置1から受信したTCPパケットをTCP分割転送装置5Bに転送する。
なお、TCP分割転送装置3Bの構成については、後記する。
【0090】
TCP分割転送装置5Bは、TCP分割転送装置3Bと同一構成の装置である。
ここで、TCP分割転送装置5Bは、ACKパケットを返送するIP回線P(論理回線の下り方向)を予め選択しておく。例えば、TCP分割転送装置5Bは、図1の経路選択部33と同様の手法で、論理回線の下り方向に使用するIP回線Pを選択する。そして、TCP分割転送装置5Bは、TCP分割転送装置3Bから転送されたTCPパケットをTCP伝送装置7に送信する。また、このとき、TCP分割転送装置5Bは、選択したIP回線Pを介して、このTCPパケットに対するACKパケットを返送する。
【0091】
以下、論理回線L(図1参照)と、物理回線(IP回線P)との関係について説明する。
論理回線Lは、TCPパケットの転送に使用される上り方向のIP回線Pと、ACKの返送に使用される下り方向のIP回線Pとのペアで構成される。図1の論理回線Lを例にすると、論理回線Lの上り方向にIP回線Pを使用し、論理回線Lの下り方向にIP回線Pを使用するというように、IP回線P,Pのペアで構成される。
また、論理回線Lは、上り方向および下り方向が共通するように、単一のIP回線Pで構成されてもよい。図1の論理回線Lを例にすると、論理回線Lの上り方向および下り方向にIP回線Pを使用するというように、単一のIP回線Pで構成される。
【0092】
[TCP分割転送装置の構成]
図6を参照して、TCP分割転送装置3Bの構成について説明する(適宜図5参照)。
図6に示すように、TCP分割転送装置3Bは、IPインターフェース30(30,30,30,・・・,30)と、TCPパケット受信部31Bと、経路選択部33Bと、ACK制御部35Bと、TCPパケット送信部(ACKパケット送信部)37Bとを備える。
【0093】
IPインターフェース30(30,30,30,・・・,30)は、例えば、固有のIPアドレスが予め設定されたネットワークインターフェースである。また、IPインターフェース30(30,30,30,・・・,30)は、IP回線P(P,P,P,・・・,P)にそれぞれ接続されている。
【0094】
ここで、IPインターフェース30は、TCP伝送装置1からTCP伝送装置7へ向けて送信されたTCPパケットを受信すると、TCPパケット受信部31Bに出力する。この場合、TCP伝送装置7に向けて送信されたTCPパケットの識別方法として、例えば、TCPパケットの宛先が、TCP伝送装置7のIPアドレスに一致するか否かを判定する方法が利用できる。
なお、第2実施形態では、TCP伝送装置1から受信したTCPパケットには、IPヘッダが付加されている。以後、IPヘッダが付加されたTCPパケットを、「オリジナルIPパケット」と呼ぶことがある。
【0095】
TCPパケット受信部31Bは、IPインターフェース30を介して、TCP伝送装置1によって送信されたオリジナルIPパケットを受信するものである。そして、TCPパケット受信部31Bは、受信したオリジナルIPパケットを経路選択部33Bに出力する。
【0096】
経路選択部33Bは、複数のIP回線P,P,・・・,Pの中から、TCPパケット受信部31Bによって受信されたオリジナルIPパケットが転送されるIP回線Pを所定の規則によって選択し、選択したIP回線Pを介して、カプセル化されたIPパケットをTCP伝送装置7に向けて転送すると共に、転送したIPパケットのシーケンス番号および選択論理回線の情報が含まれる転送情報を生成するものである。
【0097】
ここで、経路選択部33Bは、図2の経路選択部33と同様の手法で、論理回線Lの上り方向に使用するIP回線Pを選択する。そして、経路選択部33Bは、オリジナルIPパケットをIPヘッダでカプセル化して、選択したIP回線Pに対応するIPインターフェース30に出力する。例えば、RFC1853で規定された「IP in IP Tunneling」を用いる場合、経路選択部33Bは、図7に示すように、オリジナルIPパケットをカプセル化する。
【0098】
図7の例では、経路選択部33Bは、バージョンを「4」、ヘッダ長を「5」、Type of Serviceを「0」に設定する。また、経路選択部33Bは、IPパケット長として、オリジナルIPパケットの長さに「20」を加算した値を設定する。また、経路選択部33Bは、例えば、プロトコル番号として、IPv4を意味する「4」を設定する。また、経路選択部33Bは、ヘッダチェックサムを、RFC791に規定された方法で算出して設定する。
【0099】
また、経路選択部33Bは、送信元IPアドレスとして、選択したIP回線Pに対応するIPインターフェース30のIPアドレスを設定する。また、経路選択部33Bは、宛先IPアドレスとして、選択したIP回線Pにおいて、下り方向の端に接続されたIPインターフェースのIPアドレスを設定する。言い換えるなら、宛先IPアドレスには、TCP分割転送装置5Bに備えられたIPインターフェース(不図示)のIPアドレスが設定される。
つまり、第2実施形態では、選択論理回線の情報(論理回線Lの上り方向に使用したIP回線Pの情報)として、例えば、送信元IPアドレスおよび宛先IPアドレスの組を用いることができる。
【0100】
また、経路選択部33Bは、識別子、フラグ、フラグメントオフセットおよび生存期間を、オリジナルIPパケット内のIPヘッダに格納された値と同一に設定する。
以下、図6に戻り、経路選択部33Bの説明を続ける。
【0101】
また、経路選択部33Bは、TCP分割転送装置5Bに転送したオリジナルIPパケットのシーケンス番号と、選択論理回線の情報とを含む転送情報を生成する。そして、経路選択部33Bは、生成した転送情報をACK制御部35Bに出力する。
【0102】
IPインターフェース30,30,・・・,30は、経路選択部33Bから入力されたIPパケット(IPヘッダでカプセル化されたオリジナルIPパケット)を、それぞれに接続されたIP回線P,P,・・・,Pを介して、TCP分割転送装置5Bに出力する。
【0103】
また、IPインターフェース30,30,・・・,30は、それぞれに接続されたIP回線P,P,・・・,Pを介して、ACKパケット(図7と同様のIPヘッダでカプセル化されたACKパケット)をTCP伝送装置7から受信し、このACKパケットをACK制御部35Bに出力する。この場合、TCP伝送装置1へ向けて返送されたACKパケットの識別方法としては、例えばIPインターフェース30,30,・・・,30のIPアドレスに宛先IPアドレスが一致し、オリジナルIPパケット内のIPヘッダにおいて、宛先IPアドレスがTCP伝送装置1のIPアドレスに一致するか否かを判定する方法が利用できる。
【0104】
ACK制御部35Bは、遅延量設定部36を備えると共に、経路選択部33Bによって転送されたIPパケットへの応答であるACKパケットをTCP伝送装置7から受信し、受信したACKパケットをフィルタ(不図示)によって破棄または通過させものである。
【0105】
ここで、ACK制御部35Bは、経路選択部33Bからの転送情報に基づいて論理回線Lの上り方向を判別し、受信したACKパケットのIPヘッダに基づいて論理回線Lの下り方向を判別する。言い換えるなら、ACK制御部35Bは、ACKパケットが返送されたIP回線Pを、論理回線Lの下り方向として判別する。そして、ACK制御部35Bは、図2のACK制御部35と同様にフィルタを設定し、このフィルタによって受信したACKパケットを破棄または通過させる。
【0106】
TCPパケット送信部37Bは、ACK制御部35Bが通過させたACKパケットを、IPインターフェース30を介して、TCP伝送装置1に送信するものである。この場合、IPインターフェース30は、ACK制御部35Bが通過させたACKパケットをTCP伝送装置1に送信する。
【0107】
以上のように、TCP分割転送装置3Bは、図1のTCP分割転送装置3と同様、パケットロスが発生していないにも関わらず、TCPパケットの再送および輻輳ウィンドウの縮小が行われる事態を防止でき、TCP伝送のスループットを向上させることができる。また、TCP分割転送装置3Bは、IPヘッダでTCPパケットをカプセル化するため、IPで伝送する外部ネットワークNWを介して、TCPパケットをTCP伝送装置7に転送することができる。
【0108】
なお、第2実施形態では、IPインターフェース30(30,30,30,・・・,30)と、IP回線P(P,P,P,・・・,P)とが1対1で対応することとして説明したが、本発明は、これに限定されない。例えば、TCP分割転送装置3Bは、IPインターフェース30を、IPインターフェースP,P,・・・,Pの何れかと共用してもよい。また、例えば、TCP分割転送装置3Bは、IPインターフェースP,P,・・・,Pが、少なくとも2以上のIPインターフェース30で構成されてもよい。
【0109】
(第3実施形態)
[TCP分割転送システムの概略]
図5に戻り、TCP分割転送システム100Cの概略として、第2実施形態と異なる点を説明する。具体的には、TCP分割転送システム100Cでは、UDP(User Datagram Protocol)ヘッダでTCPパケットをカプセル化することが、第2実施形態と異なる。
【0110】
図5に示すように、TCP分割転送システム100Cは、TCPストリームを、外部IPネットワーク(例えば、イーサネットLAN)NWを介して伝送するものであり、TCP伝送装置(送信側端末装置)1と、TCP分割転送装置(TCP転送装置)3Cと、TCP分割転送装置5Cと、TCP伝送装置(受信側端末装置)7とを備える。
【0111】
この第3実施形態では、TCP分割転送装置3Cは、論理回線L(図1参照)の上り方向および下り方向を選択し、この論理回線Lの上り方向を使用してTCPパケットを転送する。つまり、TCP分割転送装置3Cは、TCPパケットを送信したとき、上り方向および下り方向を含めた論理回線Lの全体が判別できるので、フィルタを設定する。このとき、TCP分割転送装置3Cは、戻り回線情報をTCP分割転送装置5Cに通知する。そして、TCP分割転送装置5Cは、戻り回線情報で通知された論理回線Lの下り方向を使用して、ACKパケットを返送する。
【0112】
TCP分割転送装置3Cは、TCPパケットをTCP伝送装置1から受信し、複数のIP回線P,P,・・・,Pの何れかを介して、受信したTCPパケットを、このTCPパケットの宛先となるTCP伝送装置7に向けて転送するものである。
ここで、TCP分割転送装置3Cは、複数のIP回線P,P,・・・,Pの中から、論理回線Lの上り方向および下り方向に使用するIP回線Pを選択する。そして、TCP分割転送装置3Cは、戻り回線情報を格納したUDPヘッダでTCPパケットをカプセル化して、TCP分割転送装置5Cに転送する。
【0113】
TCP分割転送装置5Cは、TCP分割転送装置3Cと同一構成の装置である。
ここで、TCP分割転送装置5Cは、TCPパケットのUDPヘッダに格納された戻り回線情報から、論理回線Lの下り方向に使用するIP回線Pを判別する。そして、TCP分割転送装置5Cは、判別したIP回線Pを介して、このTCPパケットに対するACKパケットを返送する。
【0114】
[TCP分割転送装置の構成]
図6に戻り、TCP分割転送装置3Cの構成について、第2実施形態と異なる点を主に説明する(適宜図5参照)。
図6に示すように、TCP分割転送装置3Cは、IPインターフェース30(30,30,30,・・・,30)と、TCPパケット受信部31Bと、経路選択部33Cと、ACK制御部35Cと、TCPパケット送信部(ACKパケット送信部)37Bとを備える。
【0115】
経路選択部33Cは、図2の経路選択部33と同様の手法で、論理回線Lの上り方向および下り方向に使用するIP回線Pを選択する。そして、経路選択部33Cは、オリジナルIPパケットをUDPヘッダでカプセル化して、選択したIP回線Pに対応するIPインターフェース30に出力する。例えば、RFC1853で規定された「IP in IP Tunneling」を用いる場合、経路選択部33Cは、図8に示すように、オリジナルIPパケットをカプセル化する。
【0116】
図8の例では、経路選択部33Cは、バージョンを「4」、ヘッダ長を「5」、Type of Serviceを「0」に設定する。また、経路選択部33Cは、IPパケット長として、オリジナルIPパケットの長さに「36」を加算した値を設定する。また、経路選択部33Cは、例えば、プロトコル番号として、UDPを意味する「17」を設定する。また、経路選択部33Cは、ヘッダチェックサムを、RFC791に規定された方法で算出して設定する。
【0117】
また、経路選択部33Cは、送信元IPアドレスとして、選択したIP回線P(論理回線Lの上り方向)に対応するIPインターフェース30のIPアドレスを設定する。また、経路選択部33Cは、宛先IPアドレスとして、選択したIP回線P(論理回線Lの上り方向)において、下り方向の端に接続されたIPインターフェースのIPアドレスを設定する。言い換えるなら、宛先IPアドレスには、TCP分割転送装置5Cに備えられたIPインターフェース(不図示)のIPアドレスが設定される。
【0118】
また、経路選択部33Cは、送信元ポート番号および宛先ポート番号として、ユーザによって決定された値を設定する。また、経路選択部33Cは、UDPパケット長として、オリジナルIPパケットの長さに「16」を加算した値を設定する。また、経路選択部33Cは、チェックサムを、RFC768に規定された方法で算出して設定する。
【0119】
また、経路選択部33Cは、戻り回線送信元IPアドレスとして、選択したIP回線P(論理回線Lの下り方向)において、下り方向の端に接続されたIPインターフェースのIPアドレスを設定する。言い換えるなら、戻り回線送信元IPアドレスには、TCP分割転送装置5Cに備えられたIPインターフェースのIPアドレスが設定される。また、経路選択部33Cは、戻り回線宛先IPアドレスとして、選択したIP回線P(論理回線Lの下り方向)に対応するIPインターフェース30のIPアドレスを設定する。
【0120】
つまり、第3実施形態では、選択論理回線の情報として、例えば、送信元IPアドレスおよび宛先IPアドレスと、戻り回線送信元IPアドレスおよび戻り回線宛先IPアドレスの組とを用いることができる。ここで、送信元IPアドレスおよび宛先IPアドレスの組が論理回線Lの上り方向を示し、戻り回線送信元IPアドレスおよび戻り回線宛先IPアドレスの組が論理回線Lの下り方向(つまり、戻り回線情報)を示す。
【0121】
また、経路選択部33Cは、識別子、フラグ、フラグメントオフセットおよび生存期間を、オリジナルIPパケット内のIPヘッダに格納された値と同一に設定する。
以下、図6に戻り、経路選択部33Cの説明を続ける。
【0122】
また、経路選択部33Cは、TCP分割転送装置5Cに転送したオリジナルIPパケットのシーケンス番号と、選択したIP回線Pの情報とを含む転送情報を生成する。そして、経路選択部33Cは、生成した転送情報をACK制御部35Cに出力する。
【0123】
ACK制御部35Cは、経路選択部33Cからの転送情報に基づいて論理回線Lの上り方向および下り方向を判別する。そして、ACK制御部35Cは、図2のACK制御部35と同様にフィルタを設定し、このフィルタによって受信したACKパケットを破棄または通過させる。つまり、ACK制御部35Cは、ACKパケットの返送を待つことなく、フィルタを設定できる。
【0124】
以上のように、TCP分割転送装置3Cは、TCP分割転送装置3Bと同様、パケットロスが発生していないにも関わらず、TCPパケットの再送および輻輳ウィンドウの縮小が行われる事態を防止でき、TCP伝送のスループットを向上させることができる。また、TCP分割転送装置3Cは、UDPヘッダでTCPパケットをカプセル化するため、UDPで伝送する外部ネットワークNWを介して、TCPパケットをTCP伝送装置7に転送することができる。
【0125】
(変形例3)
第3実施形態では、経路選択部33Cが論理回線Lの下り方向を選択することとして説明したが、これに限定されない。例えば、TCP分割転送装置5Cは、TCP分割転送装置3Cと同様の手法で論理回線Lの下り方向を予め選択しておき、これを戻り回線情報としてTCP分割転送装置3Cに予め通知してもよい。
【0126】
この場合、ACK制御部35Cは、IPインターフェース30,30,・・・,30を介して、TCP分割転送装置5Cから、戻り回線情報が格納されたIPパケットを受信する。そして、ACK制御部35Cは、受信したIPパケットに含まれる戻り回線情報を抽出して、経路選択部33Cに出力する。
【0127】
経路選択部33Cは、前記した手法で、論理回線Lの上り方向に使用するIP回線Pを選択する。また、経路選択部33Cは、ACK制御部35Cからの戻り回線情報で指定されたIP回線Pを、論理回線Lの下り方向として使用する。
以上のように、TCP分割転送装置3Cは、TCP分割転送装置5Cから通知された戻り回線情報を使用して、TCP伝送を行うことができる。
【0128】
なお、各実施形態では、TCP分割転送装置が対向するように2台配置されているが、本発明に係るTCP分割転送装置は、ネットワーク上に1台だけ配置してもよい。
【0129】
なお、各実施形態では、本発明に係るTCP分割転送装置を独立した装置として説明したが、本発明では、一般的なコンピュータが備えるCPU、メモリ等のハードウェア資源を、前記した各手段として協調動作させるTCP分割転送プログラムによっても実現することもできる。このプログラムは、通信回線を介して配布しても良く、CD−ROMやフラッシュメモリ等の記録媒体に書き込んで配布しても良い。
また、本発明に係るTCP分割転送装置は、ルータなどのネットワーク転送装置に内蔵してもよい。
【符号の説明】
【0130】
1 TCP伝送装置(送信側端末装置)
3,3B,3C TCP分割転送装置(TCP転送装置)
30,30,30,30,・・・,30 IPインターフェース
31,31B TCPパケット受信部
33,33B 経路選択部
35,35B ACK制御部
36 遅延量設定部
37,37B TCPパケット送信部(ACKパケット送信部)
5,5B,5C TCP分割転送装置
7 TCP伝送装置(受信側端末装置)
100,100B,100C TCP分割転送システム
L,L,L,L,L,L 論理回線
P,P,P,P,P,P IP回線

【特許請求の範囲】
【請求項1】
シーケンス番号が含まれるTCPパケットを送信側端末装置から受信し、複数の論理回線の何れかを介して、受信した前記TCPパケットを、当該TCPパケットの宛先となる受信側端末装置に向けて転送するTCP転送装置であって、
前記TCPパケットを受信するTCPパケット受信部と、
前記複数の論理回線の中から、前記TCPパケット受信部によって受信されたTCPパケットが転送される論理回線を所定の規則によって選択し、選択した当該論理回線を介して、当該TCPパケットを前記受信側端末装置に向けて転送すると共に、転送した当該TCPパケットのシーケンス番号および前記選択した論理回線である選択論理回線の情報が含まれる転送情報を生成する経路選択部と、
前記経路選択部によって転送されたTCPパケットへの応答であるACKパケットを前記受信側端末装置から受信し、受信した当該ACKパケットをフィルタによって破棄または通過させるACK制御部と、
前記ACK制御部が通過させたACKパケットを前記送信側端末装置に送信するACKパケット送信部と、を備え、
前記ACK制御部は、
前記論理回線ごとに予め設定された論理回線遅延量に基づいて、前記経路選択部によって生成された転送情報に含まれる選択論理回線の遅延量を算出し、算出した当該選択論理回線の遅延量を前記TCPパケットが転送されてからの有効期間とし、かつ、当該転送情報に含まれるシーケンス番号を破棄対象ACK番号とした前記フィルタを設定することを特徴とするTCP転送装置。
【請求項2】
前記ACK制御部は、
前記論理回線ごとに往復遅延時間を予め計測して、計測した当該往復遅延時間を前記論理回線遅延量として設定する遅延量設定手段、
をさらに備えることを特徴とする請求項1に記載のTCP転送装置。
【請求項3】
前記ACK制御部は、前記フィルタの有効期間内に前記ACKパケットを受信し、かつ、受信した当該ACKパケットのACK番号が前記フィルタの破棄対象ACK番号と一致する場合、当該ACKパケットを破棄することを特徴とする請求項1または請求項2に記載のTCP転送装置。
【請求項4】
前記経路選択部は、前記TCPパケット受信部によって受信されたTCPパケットをTCP以外の他のプロトコルヘッダでカプセル化し、カプセル化した当該TCPパケットを前記受信側端末装置に向けて転送することを特徴とする請求項1から請求項3の何れか一項に記載のTCP転送装置。
【請求項5】
シーケンス番号が含まれるTCPパケットを送信側端末装置から受信し、複数の論理回線の何れかを介して、受信した前記TCPパケットを、当該TCPパケットの宛先となる受信側端末装置に向けて転送するために、コンピュータを、
前記TCPパケットを受信するTCPパケット受信部、
前記複数の論理回線の中から、前記TCPパケット受信部によって受信されたTCPパケットが転送される論理回線を所定の規則によって選択し、選択した当該論理回線を介して、当該TCPパケットを前記受信側端末装置に向けて転送すると共に、転送した当該TCPパケットのシーケンス番号および前記選択した論理回線である選択論理回線の情報が含まれる転送情報を生成する経路選択部、
前記経路選択部によって転送されたTCPパケットへの応答であるACKパケットを前記受信側端末装置から受信し、受信した当該ACKパケットをフィルタによって破棄または通過させるACK制御部、
前記ACK制御部が通過させたACKパケットを前記送信側端末装置に送信するACKパケット送信部、として機能させ、
前記ACK制御部は、
前記論理回線ごとに予め設定された論理回線遅延量に基づいて、前記経路選択部によって生成された転送情報に含まれる選択論理回線の遅延量を算出し、算出した当該選択論理回線の遅延量を前記TCPパケットが転送されてからの有効期間とし、かつ、当該転送情報に含まれるシーケンス番号を破棄対象ACK番号とした前記フィルタを設定することを特徴とするTCP転送プログラム。

【図1】
image rotate

【図2】
image rotate

【図3】
image rotate

【図4】
image rotate

【図5】
image rotate

【図6】
image rotate

【図7】
image rotate

【図8】
image rotate

【図9】
image rotate


【公開番号】特開2012−134907(P2012−134907A)
【公開日】平成24年7月12日(2012.7.12)
【国際特許分類】
【出願番号】特願2010−287136(P2010−287136)
【出願日】平成22年12月24日(2010.12.24)
【出願人】(000004352)日本放送協会 (2,206)
【Fターム(参考)】