JP2015091019A - 中継装置及びデータ転送方法 - Google Patents

中継装置及びデータ転送方法 Download PDF

Info

Publication number
JP2015091019A
JP2015091019A JP2013230067A JP2013230067A JP2015091019A JP 2015091019 A JP2015091019 A JP 2015091019A JP 2013230067 A JP2013230067 A JP 2013230067A JP 2013230067 A JP2013230067 A JP 2013230067A JP 2015091019 A JP2015091019 A JP 2015091019A
Authority
JP
Japan
Prior art keywords
packet
relay device
terminal
server
communication
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
JP2013230067A
Other languages
English (en)
Other versions
JP5913258B2 (ja
Inventor
真悟 原島
Shingo Harashima
真悟 原島
幸三 池上
Kozo Ikegami
幸三 池上
裕章 宮田
Hiroaki Miyata
裕章 宮田
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 JP2013230067A priority Critical patent/JP5913258B2/ja
Priority to US14/533,452 priority patent/US20150127837A1/en
Publication of JP2015091019A publication Critical patent/JP2015091019A/ja
Application granted granted Critical
Publication of JP5913258B2 publication Critical patent/JP5913258B2/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
    • 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
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/50Network services
    • H04L67/60Scheduling or organising the servicing of application requests, e.g. requests for application data transmissions using the analysis and optimisation of the required network resources
    • H04L67/63Routing a service request depending on the request content or context
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/02Protocols based on web technology, e.g. hypertext transfer protocol [HTTP]

Abstract

【課題】ユーザ端末に中継装置の存在及びサービス経路の切り替えを意識させることなく、また、ネットワークを大幅に変更することなく、通信経路の切り替えを実現する。
【解決手段】端末とサーバとの間のデータを転送する中継装置であって、中継装置は、第1のネットワークに確立されたTCPコネクションを用いて端末と通信し、第2のネットワークに含まれる一つの通信経路上に確立されたTCPコネクションを用いてサーバと通信し、中継装置は、TCPコネクションを用いて送受信されるパケットを管理するTCP管理部と、リクエストパケットの解析の結果に基づいて第2のネットワークの通信経路を切り替えるか否かを判定する判定部と、新たな通信経路上に新たなTCPコネクションを確立し、リクエストパケットをサーバに送信するリクエスト送信部と、新たなTCPコネクションを用いてパケットを端末に転送するデータ中継部と、を備える。
【選択図】図1

Description

本発明はパケットの中継装置及びデータ転送方法に関する。
現在、通信事業者は、ADSL、FTTH、及び無線網などのアクセス回線を介してユーザ端末をインターネットに接続するインターネット接続サービスを提供している。インターネットのコンテンツは、コンテンツ事業者によって提供されており、動画配信など広帯域なコンテンツが増加しているため、これらのトラフィックが通信事業者の通信機器の帯域を圧迫している。
通信事業者の提供するインターネット接続サービスはベストエフォートであるため、広帯域なコンテンツのトラフィックによって、他のユーザトラフィックの廃棄又は遅延などの影響を及ぼす可能性がある。このため、通信事業者はトラフィック増加に対応するために設備投資が必要である。しかし、コンテンツにより収益を得るコンテンツ事業と異なり、通信事業者のインターネット接続サービスは、主に定額制又は上限金額が設定される定額従量制で提供されているため、通信事業者の設備投資には限界がある。
従って、通信事業者は単純な回線の増強ではなく、動画などのデータを特定してオフロード用のサービス経路(通信経路)に振り分けることによって、他のユーザトラフィックに影響を与えないトラフィックオフロードの検討が進められるものと考えられる。また、アプリケーション又はデータの種類によって、通常経路、広帯域経路、及び低遅延経路など特徴の異なるサービス経路を切り替え、使用するサービス網ごとに異なる料金を徴収する新たな課金方法の検討も進められるものと考えられる。
従来、アプリケーション及びデータの種類を特定するために、レイヤ4の情報であるポート番号が用いられている。しかし、Webプログラミングの普及によって、動画を含む多くの通信がHTTP上で転送されおり、ポート番号ではアプリケーション及びデータの種類を十分に特定できなくなりつつある。そこで、HTTP(レイヤ7)上の情報を用いてアプリケーション及びデータの種類の識別し、通信経路切り替える技術が必要である。
HTTP上の情報に基づいてアプリケーション及びデータの種類の識別する技術として、プロキシサーバを用いる技術が知られている。プロキシサーバは、コンテンツフィルタリング、ユーザ端末のIPアドレスの隠ぺい、並びに、Webサーバ及び通信回線に対する負荷の低減を行う中継装置である。ユーザ端末は、ユーザ端末自身とプロキシサーバとの間にTCPコネクションを確立し、プロキシサーバに対してコンテンツを要求する。プロキシサーバは、プロキシサーバ自身とWebサーバとの間にTCPコネクションを確立し、ユーザ端末の代わりにWebサーバにコンテンツを要求する。
プロキシサーバを用いるものと類似した技術に透過プロキシサーバを用いる技術が知られている。透過プロキシサーバを用いた通信では、ユーザ端末は透過プロキシサーバ宛のパケットではなく、Webサーバ宛のパケットを送信する。透過プロキシサーバは、プロキシサーバと同様の機能を有し、ユーザ端末からWebサーバに対するHTTP通信(宛先ポート番号80)を監視し、HTTP通信のパケットを受信した場合、送信元IPアドレスを透過プロキシサーバのIPアドレスで置き換え、Webサーバに当該パケットを送信する。また、透過プロキシサーバは、Webサーバからのパケットを受信した場合、宛先IPアドレスをユーザ端末のIPアドレスに置き換え、ユーザ端末に当該パケットを送信する。
前述した動作によって、ユーザ端末とWebサーバとの間では直接通信は行われていないにも関わらず、ユーザ端末は、Webサーバとの間でコネクションを確立し、Webサーバからコンテンツを直接取得しているように認識する。
プロキシサーバ及び透過プロキシサーバは、HTTP上の通信を監視することによってアプリケーション及びデータの種類を識別する機能を有するが、サービス経路の切り替える機能は有さない。
HTTP上の通信に基づいてアプリケーション及びデータの種類を識別し、サービス経路を切り替える技術として特許文献1に記載の技術がある。特許文献1には、「送信元端末からのデータを中継装置で終端してコンテンツ内容をネットワークコントローラに渡し、ネットワークコントローラは中継に必要となるフロー情報を割り当てるとともに、スイッチに対してフロー転送指示を設定する。割り当てたフロー情報は中継装置に通知され、中継装置は指定されたフロー情報を用いて宛先端末までの通信フローを設定し、送信元端末から宛先端末までのデータを中継する」ことが記載されている。
国際公開第2011/037105号
特許文献1では、ユーザ端末は、Webサーバではなく中継装置との間にTCPコネクションを確立し、当該TCPコネクションを用いて中継装置にコンテンツを要求する。このため、ユーザは、予め、中継装置のIPアドレスを知っている必要があるという課題がある。また、ユーザ端末が中継装置と通信し、中継装置に対してコンテンツを要求するようにユーザ端末を変更する必要があるという課題がある。
また、特許文献1のネットワークは自律分散ではなく、コントローラによって集中管理されるネットワークであるため、ネットワークに対するコントローラ、及び当該コントローラと通信するスイッチの導入が必要であるという課題がある。通信事業者のインターネット接続サービスはIPネットワーク等の大規模なネットワークを用いて提供されるため、特許文献1を適用する場合には装置の大幅な変更が必要となる。
一方、ユーザ端末が直接Webサーバにコンテンツを要求し、通信の途中でサービス経路を切り替える方法として、複数のネットワークインタフェースを持つ透過プロキシサーバを用いる切替方法が考えられる。透過プロキシサーバが異なるIPアドレスを割り当てられる複数のネットワークインタフェースを持つ場合、ユーザ端末から受信したパケットの送信元IPアドレスを透過プロキシサーバのIPアドレスに変更することによって、Webサーバが透過プロキシサーバに送信するパケットの宛先IPアドレスを変更することができる。これによって、Webサーバから透過プロキシサーバへの通信経路を切り替えることができる。また、透過プロキシサーバがWebサーバへのパケットの送信に用いるネットワークインタフェースを変更することによって、透過プロキシサーバからWebサーバへのサービス経路を切り替えることができる。
しかし、前述した方法は透過プロキシサーバとWebサーバとの間でTCPコネクションが確立されるため、TCPコネクションの確立時に置き換えるIPアドレスを選択しなければならず、HTTP上のアプリケーション及びデータの種類の識別が可能となるHTTPリクエストの解析後に置き換えるIPアドレスを変更することができない。つまり、HTTP上のアプリケーション及びデータの種類に基づいて、サービス経路を切り替えることができないという課題がある。
従って、本発明は、ユーザ端末の構成及び設定を変更することなく、かつ、サービス経路の切り替えを意識させることなく、また、通信事業者のIPネットワークに大幅な変更をすることなく、HTTPリクエストの解析結果に基づいて、サービス経路を切り替える中継装置を提供することを目的とする。
本願において開示される発明の代表的な一例を示せば以下の通りである。すなわち、TCPを利用して通信するアプリケーションが稼働する端末と、前記アプリケーションが要求するデータを送信するサーバとの間で送受信するデータを転送する中継装置であって、前記中継装置は、プロセッサ、前記プロセッサに接続されるメモリ、及び前記プロセッサに接続され、他の装置と接続するための複数のネットワークインタフェースを備え、前記中継装置は、第1のネットワークを介して前記端末と接続し、第2のネットワークに含まれる複数の通信経路を介して前記サーバと接続し、前記中継装置は、前記第1のネットワーク及び前記第2のネットワークに含まれる一つの前記通信経路を介して前記端末と前記サーバとの間に確立されたTCPコネクションを用いて送受信されるパケットを監視するTCP管理部と、前記TCP管理部によって、前記端末上で稼働する前記アプリケーションが前記サーバにデータの送信を要求するリクエストパケットの受信が検知された場合、前記リクエストパケットを解析し、前記解析の結果に基づいて前記リクエストパケットを送信する前記第2のネットワークの通信経路を切り替えるか否かを判定する判定部と、前記判定部によって新たな前記第2のネットワークの通信経路に切り替えると判定された場合、新たな通信経路上に前記中継装置及び前記サーバが通信するための新たなTCPコネクションを確立し、前記新たなTCPコネクションを用いて前記リクエストパケットを前記サーバに送信するリクエスト送信部と、前記新たなTCPコネクションを用いて、前記アプリケーションが要求するデータを含むデータ格納パケットを前記端末に転送するデータ中継部と、を備えることを特徴とする。
本発明によれば、端末に中継装置の存在及び通信経路の切り替えを意識させることなく、また、通信事業者のネットワークに大幅な変更をすることなく、リクエストの解析結果に基づいて通信経路を切り替えることができる。
上記した以外の課題、構成及び効果は、以下の実施形態の説明により明らかにされる。
本発明の実施例における通信システムの構成例を示す説明図である。 本発明の実施例における中継装置のハードウェア構成及びソフトウェア構成を説明するブロック図である。 本発明の実施例のコネクション管理テーブルの構成例を示す説明図である。 本発明の実施例のルールテーブルの構成例を示す説明図である。 本発明の実施例の代理応答テーブルの構成例を示す説明図である。 本発明の実施例におけるACK受信通知又はFIN受信通知の通知内容の一例を示す説明図である。 本発明の実施例におけるHTTPメッセージの一例を示す説明図である。 本発明の実施例におけるHTTPメッセージの一例を示す説明図である。 本発明の実施例におけるHTTPメッセージの一例を示す説明図である。 本発明の実施例の監視部が実行する監視処理の詳細を説明するフローチャートである。 本発明の実施例の監視部が実行するユーザ側代理応答処理を説明するフローチャートである。 本発明の実施例のルール判定部が実行するルール判定処理を説明するフローチャートである。 本発明の実施例のHTTPリクエスト送信部が実行するHTTPリクエスト送信処理を説明するフローチャートである。 本発明の実施例のデータ中継部が実行するデータ中継処理を説明するフローチャートである。 本発明の実施例の応答部が実行する応答処理を説明するフローチャートである。 本発明の実施例の通信システムにおけるサービス経路が切り替えられない場合の通信の流れを示すシーケンス図である。 本発明の実施例の通信システムにおけるサービス経路が切り替えられない場合の通信の流れを示すシーケンス図である。 本発明の実施例の通信システムにおけるサービス経路が切り替えられる場合の通信の流れを示すシーケンス図である。 本発明の実施例の通信システムにおけるサービス経路が切り替えられる場合の通信の流れを示すシーケンス図である。 本発明の実施例の通信システムにおけるサービス経路が切り替えられない場合の通信の流れを示すシーケンス図である。 本発明の実施例の通信システムにおけるサービス経路が切り替えられる場合の通信の流れを示すシーケンス図である。
以下、実施例を図面を参照して詳細に説明する。
図1は、本発明の実施例における通信システムの構成例を示す説明図である。
本実施例の通信システムは、複数のユーザ端末1、複数のルータ2、中継装置3、複数のサービス経路4、インターネット5、及び複数のWebサーバ6から構成される。
中継装置3は、パケットの中継処理を実行する装置であり、ルータ2−1と、サービス経路4−1及びサービス経路4−2と接続される。中継装置3は、サービス経路4−1及びサービス経路4−2のそれぞれに接続するネットワークインタフェースを有し、また、後述するようにルールテーブル(T2)(図2参照)を保持する。ルールテーブル(T2)(図2参照)には、HTTP(HyperText Transfer Protocol)上の通信に基づいてアプリケーション及びデータを識別し、サービス経路4−1からサービス経路4−2に切り替えるための情報が格納される。
サービス経路4は、通信事業者によって提供される通信経路である。なお、サービス経路4は、同一の通信事業者によって提供されてもよいし、異なる通信事業者によって提供されてもよい。本実施例では、通常の通信はサービス経路4−1を介して行われ、後述するルールに一致する通信はサービス経路4−2を介して行われる。
なお、サービス経路4を切り替えるためのルールは、通信事業者が予め設定しておいてもよいし、ルールテーブルを保持するデータサーバに問い合わせてもよい。また、ユーザが、ユーザ端末1が使用するサービス経路4を選択するためルールを設定してもよい。
ユーザ端末1は、ルータ2−1を介して中継装置3と接続される。ユーザ端末1は、プロセッサ(図示省略)、メモリ(図示省略)、及びインタフェース(図示省略)等のハードウェアを備える。ユーザ端末1上では、TCPを用いて通信を行うアプリケーション(図示省略)が稼働する。本実施例では、ユーザ端末1−1からユーザ端末1−nのn個存在する。また、ユーザ端末1−nにはIPアドレス「10.0.0.n」が予め設定される。
なお、本発明は、ユーザ端末1と中継装置3との間の接続方式には限定されず、ユーザ端末1と中継装置3との間は有線又は無線のいずれで接続されてもよい。また、ユーザ端末1と中継装置3との間の少なくとも一部が無線で接続されてもよい。
ルータ2−2は、複数のサービス経路4とインターネット5とを接続し、ユーザ端末1宛てのパケットをサービス経路4−1を介して転送するように予め設定される。
Webサーバ6は、ユーザ端末1の要求に応じて様々なコンテンツを配信する計算機であり、インターネット5及びルータ2−2を介して中継装置3に接続される。Webサーバ6は、プロセッサ(図示省略)、メモリ(図示省略)、記憶装置(図示省略)、及びインタフェース(図示省略)等のハードウェアを備える。なお、Webサーバ6は、ストレージシステムと接続されてもよく、この場合、Webサーバ6は記憶装置(図示省略)を備えていなくてもよい。本実施例では、Webサーバ6−1からWebサーバ6−mのm個の存在し、それぞれが個別のドメインを持つ。例えば、Webサーバ6−mにはIPアドレスとして「10.0.1.m」、ドメインとして「serverm.com」が予め設定される。なお、Webサーバ6によって配信されるコンテンツには、テキスト情報、画像、及び動画などが含まれる。
ここで、本発明の概要について説明する。
本実施例の通信システムにおいて、ユーザ端末1がHTTPを用いてWebサーバ6の保持するコンテンツを要求する場合、ユーザ端末1はWebサーバ6との間で3ウェイハンドシェイクと呼ばれるTCPコネクションを確立するための通信を行う。
中継装置3は、ハンドシェイクの通信を監視し、後述するコネクション管理テーブル(T1)(図2参照)にコネクション情報を登録する。TCPコネクションの確立中、中継装置3は、ユーザ端末1から受信したパケットをサービス経路4−1経由でWebサーバ6に転送し、また、Webサーバ6から受信したパケットをユーザ端末1に転送する。このとき、中継装置3は、パケットの監視のみを行い、当該パケットの操作等の特別な処理は実行しない。
ユーザ端末1とWebサーバ6との間でTCPコネクションが確立されると、ユーザ端末1は、Webサーバ6にHTTPリクエストを含むパケットを送信する。以下の説明において、HTTPリクエストを含むパケットをHTTPリクエストパケットとも記載する。なお、ユーザ端末1とWebサーバ6との間の通信では、TCPコネクションの確立時に用いられるACK番号及びシーケンス番号が引き続き用いられる。
中継装置3は、HTTPリクエストパケットを受信すると、ルールテーブル(T2)(図2参照)に格納される条件を参照して、サービス経路4−1及びサービス経路4−2のどちらを介した通信を行うかを判定する。
HTTPリクエストが条件に該当しない場合、中継装置3は、サービス経路4−1を介した通信を行う。中継装置3は、コネクション管理テーブル(T1)からコネクション情報を削除し、サービス経路4−1を介してWebサーバ6にHTTPリクエストパケットを転送する。コネクション管理テーブル(T1)には、HTTPリクエストパケットの送信後に受信するパケットのコネクション情報が存在しないため、中継装置3はWebサーバ6から受信したパケットをユーザ端末1に転送し、ユーザ端末1から受信したパケットをサービス経路4−1を介してWebサーバ6に転送する。
一方、HTTPリクエストが条件に該当する場合、中継装置3は、サービス経路4−2を介した通信の対象として、代理応答テーブル(T3)(図2参照)に代理応答情報を登録する。その後、中継装置3は、HTTPリクエストパケットのヘッダ情報に基づいて、Webサーバ6宛てのRSTパケットを生成し、サービス経路4−1を介してWebサーバ6に当該RSTパケットを送信する。これによって、中継装置3とWebサーバ6との間のTCPコネクションが切断される。ただし、中継装置3は、ユーザ端末1に対してRSTパケットは送信しない。これによって、ユーザ端末1と中継装置3との間のTCPコネクションを維持させる。
そして、中継装置3は、中継装置3とWebサーバ6との間を接続するサービス経路4−2上に新たなTCPコネクションを確立する。中継装置3は、代理応答情報のWebサーバ側情報(T34)(図5参照)に基づいて、ユーザ端末1から受信したHTTPリクエストパケットの送信元IPアドレス、送信元ポート番号、シーケンス番号、及びACK番号を書き換えて、サービス経路4−2を介して当該HTTPリクエストパケットをWebサーバ6に転送する。また、中継装置3は、Webサーバ6からACKパケットを受信すると、代理応答情報のユーザ端末側情報(T33)(図5参照)に基づいて、当該ACKパケットの宛先IPアドレス、宛先ポート番号、シーケンス番号、及びACK番号を書き換えて、当該ACKパケットをユーザ端末1に転送する。
その後、Webサーバ6からのコンテンツの配信が完了し、ユーザ端末1によってTCPコネクションが切断されるまでの間、中継装置3は、サービス経路4−2を介したユーザ端末1とWebサーバ6との間の通信を制御する。
具体的には、中継装置3は、Webサーバ6からパケットを受信した場合、代理応答情報のユーザ端末側情報(T33)に基づいて、受信したパケットの宛先IPアドレス、宛先ポート番号、シーケンス番号、及びACK番号を書き換えて、ユーザ端末1に当該パケットを転送する。また、中継装置3は、ユーザ端末1からパケットを受信した場合、代理応答情報のWebサーバ側情報(T34)に基づいて受信したパケットの送信元IPアドレス、送信元ポート番号、シーケンス番号、及びACK番号を書き換えて、サービス経路4−2を介してWebサーバ6に当該パケットを転送する。
ユーザ端末1によってTCPコネクションが切断された後、中継装置3は、コネクション管理テーブル(T1)からコネクション情報を削除し、また、代理応答テーブル323から代理応答情報を削除する。
本実施例では、Webサーバ6と中継装置3との間の通信、中継装置3とユーザ端末1との間の通信において同期をとり、中継装置3は、ユーザ端末1からACKパケットを受信して後にWebサーバ6にACKパケットを送信する。ただし、本発明はこれに限定されず、中継装置3は、同期をとらず、Webサーバ6からコンテンツを受信し次第、Webサーバ6にACKパケットを送信してもよい。これによって、Webサーバ6へのACKパケットが早く到着するため、コンテンツの転送時間が短くなるという効果がある。この場合、中継装置3は、Webサーバ6から受信したパケットをユーザ端末1に送信するまでの間、当該パケットをパケット格納部33に格納してもよい。
また、本実施例では、中継装置3は、TCPコネクションの切断時におけるシーケンスでも同様に同期をとるが、本発明はこれに限定されない。中継装置3は、同期をとらず、Webサーバ6からFINパケットを受信し次第、Webサーバ6にACKパケット及びFINパケットを送信し、ユーザ端末1からFINパケットを受信し次第、ユーザ端末1にACKパケットを送信してもよい。これによって、Webサーバ6に対してはACKパケット及びFINパケットが早く到着し、また、ユーザ端末1に対してACKパケットが早く到着するため、TCPコネクションの確立時間が短くなり、TCPコネクションを維持するための資源を早く解放できるという効果がある。
図2は、本発明の実施例における中継装置3のハードウェア構成及びソフトウェア構成を説明するブロック図である。
中継装置3は、プロセッサ31、テーブル格納部32、パケット格納部33、インタフェース部34、及び命令格納部35を有する。
プロセッサ31は、命令格納部35に格納されているプログラムを読み出し、当該プログラムを実行する。これによって、中継装置3が備える機能を実現することができる。
テーブル格納部32は、処理に用いる各種情報を格納する。テーブル格納部32は、例えば、DRAM等のメモリを用いて実現できる。本実施例のテーブル格納部32は、コネクション管理テーブル(T1)、ルールテーブル(T2)、及び代理応答テーブル(T3)の三つのテーブルを格納する。
コネクション管理テーブル(T1)は、ユーザ端末1とWebサーバ6との間の接続状態に関する情報を格納する。コネクション管理テーブル(T1)の詳細は図3を用いて後述する。ルールテーブル(T2)は、サービス経路4−1からサービス経路4−2に切り替えるための情報を格納する。ルールテーブル(T2)の詳細は図4を用いて後述する。代理応答テーブル(T3)は、サービス経路4−2を介して通信が行われる場合における、パケットの転送に必要な情報を格納する。代理応答テーブル(T3)の詳細は図5を用いて後述する。
本実施例では、ルールテーブル(T2)は、テーブル格納部32に予め格納されているものとするが、本発明はこれに限定されない。例えば、外部のデータベースがルールテーブル(T2)を保持し、中継装置3が外部のデータベースから取得してもよい。
パケット格納部33は、HTTPリクエストが複数のパケットに分割される場合に、当該分割されたHTTPリクエストを含むHTTPリクエストパケットのコピーを格納する。パケット格納部33は、例えば、DRAM等のメモリを用いて実現できる。
インタフェース部34は、外部の装置又はネットワークと接続するインタフェースを複数有する。本実施例のインタフェース部34は、ユーザ側インタフェース341、サービス1側インタフェース342、及びサービス2側インタフェース343を有する。
ユーザ側インタフェース341は、ユーザ端末1が接続されるルータ2−1と接続するためのインタフェースである。サービス1側インタフェース342は、サービス経路4−1を介してWebサーバ6と接続するためのインタフェースである。本実施例では、サービス1側インタフェース342にはIPアドレス「10.0.2.1」が設定される。また、サービス2側インタフェース343は、サービス経路4−2を介してWebサーバ6と接続するためのインタフェースである。本実施例では、サービス2側インタフェース343にはIPアドレス「10.0.2.2」が設定される。
命令格納部35は、プロセッサ31によって実行されるプログラムを格納する。命令格納部35は、DRAM等のメモリを用いて実現できる。本実施例の命令格納部35は、TCP管理部351、ルール判定部354、HTTPリクエスト送信部355、及びデータ中継部356を実現するプログラムを格納する。なお、命令格納部35には、パケットの送受信を制御する制御部も格納されるが公知のものであるため省略している。
TCP管理部351は、TCPコネクションの監視、及びTCPコネクションを介したHTTP上のアプリケーション及びデータの種類等、TCP上のHTTPを用いた通信を管理する。TCP管理部351は、複数のプログラムモジュールから構成される。具体的には、TCP管理部351は、監視部352及び応答部353を含む。
監視部352は、ユーザ側インタフェース341から受信したパケットに対する処理を実行する。監視部352が実行する処理の詳細は、図8、図9を用いて後述する。応答部353は、サービス1側インタフェース342から受信したパケットに対する処理を実行する。応答部353が実行する処理の詳細は、図13を用いて後述する。
ルール判定部354は、サービス経路4−1からサービス経路4−2に切り替えるか否かを判定する。ルール判定部354が実行する処理の詳細は、図10を用いて後述する。HTTPリクエスト送信部355は、ルールに一致するHTTPリクエストを受信した場合、サービス経路4−2を介した通信を行うために、新たなTCPコネクションを確立する。HTTPリクエスト送信部355が実行する処理の詳細は、図11を用いて後述する。データ中継部356は、サービス経路4−2を介した通信時に、ユーザ端末1とWebサーバ6との間で送受信されるパケットのIPアドレス等を書き換えて、当該パケットを転送する。データ中継部356が実行する処理の詳細は、図12を用いて後述する。
図2に示す例では、テーブル格納部32及び命令格納部35を別々の構成として記載したが本発明はこれに限定されない。例えば、一つのメモリの領域を二つに分割し、一つの領域をテーブル格納部32、他方の領域を命令格納部35として実現することもできる。また、テーブル格納部32、パケット格納部33、及び命令格納部35は、メモリ以外に、HDD又はSSD等の他の記憶装置を用いても実現できる。
図3は、本発明の実施例のコネクション管理テーブル(T1)の構成例を示す説明図である。
コネクション管理テーブル(T1)は、ユーザ端末1とWebサーバ6との間に確立されるTCPコネクションの状態を示すコネクション情報を格納する。コネクション情報は、ユーザ端末1からWebサーバ6に対して送信されるSYNパケットを受信した場合に生成される。コネクション情報は、識別子(T11)、サーバIP(T12)、サーバPort(T13)、ユーザ端末IP(T14)、ユーザ端末Port(T15)、MSS(T16)、コネクション状態(T17)、及びパケットポインタ(T18)を含む。
識別子(T11)は、コネクション管理テーブル(T1)に格納されるコネクション情報を識別するための識別番号である。サーバIP(T12)は、Webサーバ6に割り当てられるIPアドレスである。サーバPort(T13)は、Webサーバ6のポート番号である。ユーザ端末IP(T14)は、ユーザ端末1に割り当てられるIPアドレスである。ユーザ端末Port(T15)は、ユーザ端末1のポート番号である。
サーバIP(T12)、サーバPort(T13)、ユーザ端末IP(T14)、及びユーザ端末Port(T15)は、HTTPを用いて通信を行うアプリケーションによって使用される情報である。
MSS(T16)は、TCPコネクションのMSS(Maximum Segment Size)である。中継装置3は、Webサーバ6からユーザ端末1へ送信されるSYN+ACKパケットを受信した場合に、当該パケットに含まれるMSS情報を取得し、取得されたMSS情報をMSS(T16)に格納する。
コネクション状態(T17)は、中継装置3とWebサーバ6との間に確立されるTCPコネクションの状態を示す。本実施例では、コネクション状態(T17)には、「SYN1」、「SYN2」、「確立」、「HTTPリクエスト一部受信」、及び「代理応答中」の五つの情報のいずれかが格納される。
「SYN1」はTCPコネクション確立時の初期状態を表し、「SYN2」はSYN+ACKパケットを受信したことを表す。「確立」はTCPコネクションが確立されたことを表す。「HTTPリクエスト一部受信」はHTTPリクエストが複数のパケットに分割されていることを表す。「代理応答中」はサービス経路4−2を介してパケットが転送されていることを表す。
パケットポインタ(T18)は、パケット格納部33に格納されるHTTPリクエストパケットの複製データの格納場所を示すポインタである。パケットポインタ(T18)は、コネクション状態(T17)が「HTTPリクエスト一部受信」である場合にポインタが格納される。
図4は、本発明の実施例のルールテーブル(T2)の構成例を示す説明図である。
ルールテーブル(T2)は、使用するサービス経路4を判定するためのルールを格納する。ルールは、識別子(T21)、サーバIP(T22)、サーバPort(T23)、ユーザ端末IP(T24)、ユーザ端末Port(T25)、及びHTTPリクエスト条件(T26)を含む。
識別子(T21)は、ルールテーブル(T2)に登録されるルールを識別するための識別番号である。サーバIP(T22)は、Webサーバ6に割り当てられるIPアドレスであり、サーバIP(T12)と同一のものである。サーバPort(T23)は、Webサーバ6のポート番号であり、サーバPort(T13)と同一のものである。ユーザ端末IP(T24)は、ユーザ端末1に割り当てられるIPアドレスであり、ユーザ端末IP(T14)と同一のものである。ユーザPort(T25)は、ユーザ端末1のポート番号であり、ユーザ端末Port(T15)と同一のものである。
HTTPリクエスト条件(T26)は、レイヤ7に相当するHTTPに関する条件を格納する。HTTPリクエスト条件(T26)には、例えば、URLに対する条件、Cookieの内容又はその他のフィールドに対する条件を設定してもよい。URLに対する条件は、ホスト名、並びにディレクトリ名及びファイル名を条件として設定してもよいし、さらに、ファイルの拡張子に対する条件を設定することによってコンテンツの種類を特定することも可能である。
HTTPリクエスト条件(T26)に格納される条件の記述構文は、PCRE(Perl Compatible Regular Expressions)でもよいし、ほかの記述構文でもよい。図4の「*」はワイルドカードを表し、任意の文字又は文字列に一致する記号である。
なお、HTTP以外の通信プロトコルに適用する場合、OSI参照モデルにおけるアプリケーション層の情報を条件としては設定すればよい。
図5は、本発明の実施例の代理応答テーブル(T3)の構成例を示す説明図である。
代理情報テーブル(T3)は、サービス経路4−2を介した通信時に、Webサーバ6又はユーザ端末1から受信したパケットを転送するために必要な代理応答情報を格納する。代理応答情報は、識別子(T31)、コネクションID(T32)、ユーザ端末側情報(T33)、及びWebサーバ側情報(T34)を含む。
識別子(T31)は、代理応答テーブル(T3)に登録される代理応答情報を識別するための識別番号である。コネクションID(T32)は、コネクション情報の識別番号であり、識別子(T11)に対応する。コネクションID(T32)は、コネクション情報に対応する代理応答情報を検索するための検索キーとして用いられる。
ユーザ端末側情報(T33)は、Webサーバ6から受信したパケットをユーザ端末1に転送する場合に用いられる情報である。ユーザ端末側情報(T33)は、ユーザ端末IP(T331)、ユーザ端末Port(T332)、シーケンス番号(T333)、及びACK番号(T334)を含む。
ユーザ端末IP(T331)は、ユーザ端末1に割り当てられるIPアドレスであり、ユーザ端末IP(T14)と同一のものである。ユーザ端末Port(T332)は、ユーザ端末1のポート番号であり、ユーザ端末Port(T15)と同一のものである。シーケンス番号(T333)及びACK番号(T334)は、中継装置3からユーザ端末1へのパケットの送信時に使用される番号である。
Webサーバ側情報(T34)は、ユーザ端末1から受信したパケットをWebサーバ6に転送する場合に用いられる情報である。Webサーバ側情報(T34)は、代理IP(T341)、代理Port(T342)、シーケンス番号(T343)、及びACK番号(T344)を含む。
代理IP(T341)は、中継装置3のIPアドレスである。代理Port(T342)は、中継装置3のポート番号である。シーケンス番号(T343)及びACK番号(T344)は、中継装置3からWebサーバ6へのパケットの送信時に使用される番号である。
図6は、本発明の実施例におけるACK受信通知又はFIN受信通知の通知内容の一例を示す説明図である。
通知内容7は、Type71、コネクションID72、及びパケット73を含む。Type71は、ACK又はFINのどちらの受信通知であるかを示す。コネクションID72は、コネクションの識別子である。パケット73は、ACKパケット又はFINパケットを格納する。
図7A、図7B、及び図7Cは、本発明の実施例におけるHTTPメッセージの一例を示す説明図である。
図7Aは、GETメソッドを用いたHTTPリクエスト(M1)の一例を示し、図7Bは、POSTメソッドを用いたHTTPリクエスト(M2)の一例を示し、図7Cは、HTTPレスポンス(M3)の一例を示す。
HTTPメッセージは、ユーザ端末1が要求するコンテンツへのURL(M11)、(M21)を含むHTTPメソッド、複数のヘッダフィールド、HTTPヘッダの終端を表す空行(M12)、(M23)、(M32)、及び空行に続くHTTPメッセージボディから構成される。
ヘッダフィールドの一つであるContent−Length(M22)、(M31)はHTTPメッセージボディの長さを表すフィールドである。
次に、中継装置3が実行する処理についてフローチャートを用いて説明する。
図8は、本発明の実施例の監視部352が実行する監視処理S100の詳細を説明するフローチャートである。
TCP管理部351は、ユーザ側インタフェース341を介してパケットを受信した場合、監視部352を呼び出し、処理の実行を指示する。
監視部352は、受信したパケットがSYNパケットであるか否かを判定する(S101)。
受信したパケットがSYNパケットでないと判定された場合、監視部352は、コネクション管理テーブル(T1)に当該パケットに関連するコネクション情報が存在するか否かを判定する(S102)。具体的には、以下のような処理が実行される。監視部352は、受信したパケットから送信元IPアドレス、送信元ポート番号、宛先IPアドレス、及び宛先ポート番号を取得する。監視部352は、サーバIP(T12)、サーバPort(T13)、ユーザ端末IP(T14)、及びユーザ端末Port(T15)が、取得された送信元IPアドレス、送信元ポート番号、宛先IPアドレス、及び宛先ポート番号と一致するエントリを検索する。
コネクション管理テーブル(T1)に受信したパケットに関連するコネクション情報が存在しないと判定された場合、監視部352は、S110に進む。コネクション管理テーブル(T1)に受信したパケットに関連するコネクション情報が存在すると判定された場合、監視部352は、当該コネクション情報を参照し、コネクション状態(T17)が「代理応答中」であるか否かを判定する(S103)。
コネクション状態(T17)が「代理応答中」であると判定された場合、監視部352は、ユーザ側代理応答処理S200を実行し(S104)、処理を終了する。ユーザ側代理応答処理S200の詳細は、図9を用いて後述する。
コネクション状態(T17)が「代理応答中」でないと判定された場合、監視部352は、受信したパケットがACKパケット、かつ、コネクション状態(T17)が「SYN2」であるか否かを判定する(S105)。S105の条件を満たす場合、受信したパケットは、HTTPのSYNパケット及びSYN+ACKパケットの受信後に受信するACKパケットに対応し、S105の条件を満たさない場合、受信したパケットは、HTTPリクエストパケットに対応する。
S105の判定条件を満たさないと判定された場合、監視部352は、ルール判定処理S300を実行し(S107)、処理を終了する。ルール判定処理S300の詳細は図10を用いて後述する。
S105の判定条件を満たすと判定された場合、監視部352は、コネクション状態(T17)を「確立」に更新し(S106)、その後、S110に進む。
S101において、受信したパケットがSYNパケットである判定された場合、監視部352は、当該SYNパケットがHTTP上で送信されるパケットであるか否かを判定する(S108)。具体的には、監視部352は、受信したパケットに含まれる宛先ポート番号を取得し、当該宛先ポート番号がHTTPに用いられるポート番号であるか否かを判定する。HTTPに用いられるポート番号としては、80、8080、8000等が考えられる。
受信したSYNパケットがHTTP上で送信されるパケットでないと判定された場合、監視部352は、S110に進む。受信したSYNパケットがHTTP上で送信されるパケットであると判定された場合、監視部352は、当該SYNパケットに含まれる情報を用いて、コネクション管理テーブル(T1)にコネクション情報を登録する(S109)。具体的には、以下のような処理が実行される。
監視部352は、コネクション管理テーブル(T1)に行を追加し、当該行の識別子(T11)に所定の識別番号を設定する。ここでは、識別子(T11)には、上の行の識別子(T11)に「1」加算した識別番号が設定される。監視部352は、受信したSYNパケットから送信元IPアドレス、送信元ポート番号、宛先IPアドレス、及び宛先ポート番号を取得する。
監視部352は、サーバIP(T12)に宛先IPアドレス、サーバPort(T13)に宛先ポート番号、ユーザ端末IP(T14)に送信元IPアドレス、さらに、ユーザ端末Port(T15)に送信元ポート番号を設定する。また、監視部352は、コネクション状態(T17)に「SYN1」を設定する。以上がS109の処理の説明である。
S102の判定結果がNO、S106の処理が実行された後、S108の判定結果がNO、又はS109の処理が実行された後、監視部352は、サービス1側インタフェース342を介して受信したパケットをWebサーバ6に送信し(S110)、処理を終了する。
図9は、本発明の実施例の監視部352が実行するユーザ側代理応答処理S200を説明するフローチャートである。
監視部352は、受信したパケットがACKパケットであるか否かを判定する(S201)。
受信したパケットがACKパケットであると判定された場合、監視部352は、データ中継部356にACK受信通知を出力し(S202)、処理を終了する。
受信したパケットがACKパケットでないと判定された場合、監視部352は、受信したパケットがFINパケットであるか否かを判定する(S203)。
受信したパケットがFINパケットでないと判定された場合、監視部352は処理を終了する。受信したパケットがFINパケットであると判定された場合、監視部352は、データ中継部356にFIN受信通知を出力し(S204)、処理を終了する。
なお、ACK受信通知及びFIN受信通知の出力方法としては、監視部352が、予め所定のレジスタにACK受信通知又はFIN受信通知を書き込む方法が考えられる。この場合、データ中継部356は、当該レジスタをポーリングすることによって、ACK受信通知及びFIN受信通知を受けつけることができる。また、監視部352が、データ中継部356に割り込みを通知することによって実現することもできる。
図10は、本発明の実施例のルール判定部354が実行するルール判定処理S300を説明するフローチャートである。
ルール判定部354は、監視部352から処理の実行が指示されると、ルール判定処理S300を開始する。
ルール判定部354は、HTTPリクエスト全体を受信したか否かを判定する(S301)。例えば、GETメソッドを用いたHTTPリクエストM1の場合、ルール判定部354は、空行(M12)が含まれるパケットを受信するとHTTPリクエスト全体を受信したと判定する。POSTメソッドを用いたHTTPリクエスト(M2)の場合、ルール判定部354は、空行(M22)からContent−Length(M22)に示すバイト分のパケットを受信するとHTTPリクエスト全体を受信したと判定する。
HTTPリクエスト全体を受信したと判定された場合、ルール判定部354は、コネクション管理テーブル(T1)を参照し、HTTPリクエストパケットに対応するコネクション情報のコネクション状態(T17)が「HTTPリクエスト一部受信」であるか否かを判定する(S302)。
コネクション状態(T17)が「HTTPリクエスト一部受信」でないと判定された場合、ルール判定部354は、S304に進む。コネクション状態(T17)が「HTTPリクエスト一部受信」であると判定された場合、ルール判定部354は、パケット格納部33からパケットを読み出す(S303)。具体的には、ルール判定部354は、コネクション情報のパケットポインタ(T18)に基づいて、パケット格納部33からパケットを読み出す。
ルール判定部354は、HTTPリクエストパケットに基づいてルールテーブル(T2)を参照し、HTTPリクエストに該当するルールが存在するか否かを判定する(S304)。例えば、以下のような処理が実行される。
ルール判定部354は、HTTPリクエストパケットから送信元IPアドレス、送信元ポート番号、宛先IPアドレス、及び宛先ポート番号を取得する。ルール判定部354は、取得された送信元IPアドレス、送信元ポート番号、宛先IPアドレス、及び宛先ポート番号と、ユーザ端末IP(T24)、ユーザ端末Port(T25)、サーバIP(T22)、及びサーバPort(T23)とを比較することによって、ルールを検索する。さらに、ルール判定部354は、検索されたルールのHTTPリクエスト条件(T26)を参照し、HTTPリクエストが当該条件を満たすか否かを判定する。以上がS304の処理の一例である。
HTTPリクエストに対応するルールが存在すると判定された場合、ルール判定部354は、コネクション情報のコネクション状態(T17)を「代理応答中」に更新し(S305)、HTTPリクエスト送信部355にHTTPリクエスト送信処理S400の実行を指示する(S306)。HTTPリクエスト送信処理S400の詳細は、図11を用いて後述する。
HTTPリクエストに対応するルールが存在しないと判定された場合、ルール判定部354は、コネクション管理テーブル(T1)からコネクション情報を削除し(S307)、その後、S311に進む。
S301において、HTTPリクエスト全体を受信していないと判定された場合、ルール判定部354は、パケット格納部33に受信したHTTPリクエストパケットをコピーする(S308)。ルール判定部354は、コネクション情報のパケットポインタ(T18)に、パケット格納部33に格納されたHTTPリクエストパケットの格納場所を示すポインタを登録する(S309)。また、ルール判定部354は、コネクション情報のコネクション状態(T17)を「HTTPリクエスト一部受信」に更新し、その後(S310)、S311に進む。
S307の処理の実行後又はS310の処理の実行後、ルール判定部354は、サービス1側インタフェース342を介して受信したHTTPリクエストパケットをWebサーバ6に送信し(S311)、処理を終了する。
図11は、本発明の実施例のHTTPリクエスト送信部355が実行するHTTPリクエスト送信処理S400を説明するフローチャートである。
HTTPリクエスト送信部355は、ルール判定部354から処理の実行が指示されると、HTTPリクエスト送信処理S400を開始する。
HTTPリクエスト送信部355は、代理応答テーブル(T3)に、受信したHTTPリクエストパケットに対応する代理応答情報を登録する(S401)。具体的には、以下のような処理が実行される。
HTTPリクエスト送信部355は、代理応答テーブル(T3)に行を追加する。HTTPリクエスト送信部355は、S102において検索されたコネクション情報の識別子(T11)を取得し、また、HTTPリクエストパケットからユーザ端末1のIPアドレス及びポート番号、並びにシーケンス番号及びACK番号を取得する。
HTTPリクエスト送信部355は、追加された行の識別子(T31)に所定の識別番号を設定し、コネクションID(T32)にコネクション情報の識別子(T11)から取得された識別番号を設定する。また、HTTPリクエスト送信部355は、追加された行のユーザ端末側情報(T33)のユーザ端末IP(T331)及びユーザ端末Port(T332)に、ユーザ端末1のIPアドレス及びポート番号を設定する。
HTTPリクエスト送信部355は、追加された行のユーザ端末側情報(T33)のシーケンス番号(T333)に取得されたシーケンス番号を設定する。さらに、HTTPリクエスト送信部355は、追加された行のユーザ端末側情報(T33)のACK番号(T334)に取得されたACK番号を設定する。以上がS401の処理の説明である。
HTTPリクエスト送信部355は、HTTPリクエストパケットのヘッダ情報に基づいてWebサーバ6宛のRSTパケットを生成し、サービス1側インタフェース342を介してWebサーバ6に当該RSTパケットを送信する(S402)。これは、サービス経路4−1上のTCPコネクションを切断するためである。
HTTPリクエスト送信部355は、サービス2側インタフェース343を用いてサービス経路4−2上に新たなTCPコネクションを確立し、確立されたTCPコネクションの情報に基づいて代理応答情報を更新する(S403)。具体的には、以下のような処理が実行される。
HTTPリクエスト送信部355は、サービス2側インタフェース343を用いて、Webサーバ6との間で3ウェイハンドシェイク通信を行う。これによって、中継装置3とWebサーバ6とを接続するサービス経路4−2上に、新たなTCPコネクションが確立される。このとき、中継装置3とWebサーバ6との間の通信では、新たなTCPコネクションの確立時に用いられるACK番号及びシーケンス番号が引き続き用いられる。
HTTPリクエスト送信部355は、S401において追加された行のWebサーバ側情報(T34)の代理IP(T341)及び代理Port(T342)に中継装置3のIPアドレス及びポート番号を設定する。また、HTTPリクエスト送信部355は、追加された行のWebサーバ側情報(T34)のシーケンス番号(T343)及びACK番号(T344)のそれぞれに、中継装置3がWebサーバ6にパケットを送信する場合に使用するシーケンス番号及びACK番号を設定する。以上がS403の処理の説明である。
HTTPリクエスト送信部355は、代理応答情報のWebサーバ側情報(T34)に基づいてHTTPリクエストパケットのヘッダを書き換え、サービス2側インタフェース343を介してWebサーバ6に書き換えられたHTTPリクエストパケットを送信する(S404)。具体的には、以下のような処理が実行される。
HTTPリクエスト送信部355は、HTTPリクエストの送信元IPアドレス、及び送信元ポート番号を、代理応答情報のWebサーバ側情報(T13)の代理IP(T341)、及び代理Port(T342)に書き換える。
また、HTTPリクエスト送信部355は、代理応答情報のWebサーバ側情報(T34)のシーケンス番号(T343)及びACK番号(T344)に基づいて、Webサーバ6へのパケット送信に用いるシーケンス番号及びACK番号を決定する。HTTPリクエスト送信部355は、HTTPリクエストのシーケンス番号及びACK番号を、決定されたシーケンス番号及びACK番号に書き換える。以上がS404の処理の説明である。
なお、シーケンス番号及びACK番号の決定方法は公知のものであるため詳細な説明を省略する。
なお、HTTPリクエスト送信部355は、書き換えられたHTTPリクエストパケットの送信後、当該HTTPリクエストパケットに対するACKパケットを受信するまで待ち状態となる。
HTTPリクエスト送信部355は、Webサーバ6から中継装置3宛てのACKパケットを受信すると、代理応答情報のユーザ端末側情報(T33)に基づいてACKパケットのヘッダを書き換え、ユーザ側インタフェース341を介してユーザ端末1に書き換えられたACKパケットを送信する(S405)。具体的には、以下のような処理が実行される。
HTTPリクエスト送信部355は、代理応答テーブル(T3)を参照し、代理IP(T341)及び代理Port(T342)がACKパケットの宛先IPアドレス及び宛先ポート番号と一致する代理応答情報を検索する。
HTTPリクエスト送信部355は、ACKパケットのシーケンス番号及びACK番号に検索された代理応答情報のWebサーバ側情報(T34)のシーケンス番号(T343)及びACK番号(T344)を設定し、ACKパケットの宛先IPアドレス、及び宛先ポート番号を、検索された代理応答情報のユーザ端末側情報(T33)のユーザ端末IP(T331)、及びユーザ端末Port(T332)に書き換える。
また、HTTPリクエスト送信部355は、検索された代理応答情報のユーザ端末側情報(T33)のシーケンス番号(T333)及びACK番号(T334)に基づいて、ユーザ端末1へのパケットの送信に用いるシーケンス番号及びACK番号を決定する。HTTPリクエスト送信部355は、ACKパケットのシーケンス番号及びACK番号を、決定されたシーケンス番号及びACK番号に書き換える。以上がS405の処理の説明である。
HTTPリクエスト送信部355は、書き換えられたACKパケットの送信後、データ中継部356に処理の実行を指示する(S406)。
なお、HTTPリクエスト送信部355は、ユーザ端末1から受信したパケットのシーケンス番号及びACK番号に基づいて、ユーザ端末1にパケットを送信する場合に用いるシーケンス番号及びACK番号を予め算出し、算出されたシーケンス番号及びACK番号をシーケンス番号(T333)及びACK番号(T334)に格納してもよい。この場合、HTTPリクエスト送信部355は、ACKパケットのシーケンス番号及びACK番号を、シーケンス番号(T333)及びACK番号(T334)に書き換える。Webサーバ側情報(T34)のシーケンス番号(T343)及びACK番号(T344)も同様の制御が可能である。
図12は、本発明の実施例のデータ中継部356が実行するデータ中継処理S500を説明するフローチャートである。
データ中継部356は、HTTPリクエスト送信部355から処理の実行が指示されると、データ中継処理S500を開始する。
データ中継部356は、処理を開始した後、Webサーバ6から中継装置3宛のパケットを受信するまで待機する(S501)。データ中継部356は、Webサーバ6からパケットを受信すると、当該パケットがFINパケットであるか否かを判定する(S502)。
受信したパケットがFINパケットでない、すなわち、コンテンツを含むパケットであると判定された場合、データ中継部356は、当該パケットに対応する代理応答情報に基づいてパケットのヘッダを書き換えて、ユーザ側インタフェース341を介してユーザ端末1に書き換えられたパケットを送信する(S503)。その後、データ中継部356は、ACK受信通知を受けつけるまで待機する。具体的には、以下のような処理が実行される。
データ中継部356は、代理応答テーブル(T3)を参照し、代理IP(T341)及び代理Port(T342)が受信したパケットの宛先IPアドレス及び宛先ポート番号と一致する代理応答情報を検索する。データ中継部356は、パケットのシーケンス番号及びACK番号に検索された代理応答情報のWebサーバ側情報(T34)のシーケンス番号(T343)及びACK番号(T344)を設定し、ACKパケットの宛先IPアドレス、及び宛先ポート番号を、検索された代理応答情報のユーザ端末側情報(T33)のユーザ端末IP(T331)、及びユーザ端末Port(T332)に書き換える。
また、データ中継部356は、検索された代理応答情報のユーザ端末側情報(T33)のシーケンス番号(T333)及びACK番号(T334)に基づいて、ユーザ端末1へのパケットの送信に用いるシーケンス番号及びACK番号を決定する。データ中継部356は、ACKパケットのシーケンス番号及びACK番号を、決定されたシーケンス番号及びACK番号に書き換える。以上がS503の処理の説明である。
データ中継部356は、監視部352からACK受信通知を受けつけると、ACK受信通知に含まれるACKパケットに対応する代理応答情報に基づいてACKパケットのヘッダを書き換えて、サービス2側インタフェース343を介してWebサーバ6に書き換えられたACKパケットを送信する(S504)。その後、データ中継部356は、S501に戻る。具体的には、以下のような処理が実行される。
データ中継部356は、代理応答テーブル(T3)を参照し、コネクションID(T32)がACK受信通知に含まれるコネクションID72と一致する代理応答情報を検索する。
データ中継部356は、ACKパケットのシーケンス番号及びACK番号に検索された代理応答情報のユーザ端末側情報(T33)のシーケンス番号(T333)及びACK番号(T334)を設定し、ACKパケットの送信元IPアドレス及び送信元ポート番号を、検索された代理応答情報のWebサーバ側情報(T34)の代理IP(T341)及び代理Port(T342)に書き換える。
また、データ中継部356は、検索された代理応答情報のWebサーバ側情報(T34)のシーケンス番号(T343)及びACK番号(T344)に基づいて、Webサーバ6へのパケット送信に用いるシーケンス番号及びACK番号を決定する。データ中継部356は、ACKパケットのシーケンス番号及びACK番号を、決定されたシーケンス番号及びACK番号に書き換える。以上がS504の処理の説明である。
S502において受信したパケットがFINパケットであると判定された場合、データ中継部356は、当該FINパケットに対応する代理応答情報に基づいてFINパケットのヘッダを書き換えて、ユーザ側インタフェース341を介してユーザ端末1に書き換えられたFINパケットを送信する(S505)。その後、データ中継部356は、監視部352からACK受信通知を受けつけるまで待機する。
具体的には、データ中継部356は、S503と同様の処理を実行することによって、代理応答テーブル(T3)からFINパケットに対応する代理応答情報を検索する。データ中継部356は、FINパケットのシーケンス番号及びACK番号に検索された代理応答情報のWebサーバ側情報(T34)のシーケンス番号(T343)及びACK番号(T344)を設定し、ユーザ端末側情報(T33)に基づいて、FINパケットの宛先IPアドレス、宛先ポート番号、シーケンス番号、及びACK番号を書き換える。
データ中継部356は、監視部352からACK受信通知を受けつけると、ACK受信通知に含まれるACKパケットに対応する代理応答情報に基づいてACKパケットのヘッダを書き換えて、サービス2側インタフェース343を介してWebサーバ6に書き換えられたACKパケットを送信する(S506)。その後、データ中継部356は、監視部352からFIN受信通知を受けつけるまで待機する。
具体的には、データ中継部356は、S504と同様の処理を実行することによって、代理応答テーブル(T3)からACKパケットに対応する代理応答情報を検索する。データ中継部356は、ACKパケットのシーケンス番号及びACK番号に検索された代理応答情報のユーザ端末側情報(T33)のシーケンス番号(T333)及びACK番号(T334)を設定し、Webサーバ側情報(T34)に基づいて、ACKパケットの宛先IPアドレス、宛先ポート番号、シーケンス番号、及びACK番号を書き換える。
データ中継部356は、監視部352からFIN受信通知を受け付けると、FIN受信通知に含まれるFINパケットに対応する代理応答情報に基づいてFINパケットのヘッダを書き換えて、サービス2側インタフェース343を介してWebサーバ6に送信する(S507)。その後、データ中継部356は、Webサーバ6から中継装置3宛のACKパケットを受信するまで待機する。
具体的には、データ中継部356は、S504と同様の処理を実行することによって、代理応答テーブル(T3)からFINパケットに対応する代理応答情報を検索する。データ中継部356は、FINパケットのシーケンス番号及びACK番号に検索された代理応答情報のユーザ端末側情報(T33)のシーケンス番号(T333)及びACK番号(T334)を設定し、Webサーバ側情報(T34)に基づいて、ACKパケットの宛先IPアドレス、宛先ポート番号、シーケンス番号、及びACK番号を書き換える。
データ中継部356は、Webサーバ6から中継装置3宛のACKパケットを受信すると、ACKパケットに対応する代理応答情報のユーザ端末側情報(T33)に基づいてACKパケットのヘッダを書き換えて、ユーザ側インタフェース341を介してユーザ端末1に書き換えられたACKパケットを送信する(S508)。
具体的には、データ中継部356は、S503と同様の処理を実行することによって、代理応答テーブル(T3)からACKパケットに対応する代理応答情報を検索する。データ中継部356は、ACKパケットのシーケンス番号及びACK番号に検索された代理応答情報のWebサーバ側情報(T34)のシーケンス番号(T343)及びACK番号(T344)を設定し、ユーザ端末側情報(T33)に基づいて、ACKパケットの宛先IPアドレス、宛先ポート番号、シーケンス番号、及びACK番号を書き換える。
データ中継部356は、コネクション管理テーブル(T1)及び代理応答テーブル(T3)から、切断されたTCPコネクションに対応するコネクション情報及び代理応答情報を削除し(S509)、処理を終了する。
図13は、本発明の実施例の応答部353が実行する応答処理S600を説明するフローチャートである。
TCP管理部351は、サービス1側インタフェース342を介してパケットを受信した場合、応答部353を呼び出し、処理の実行を指示する。
応答部353は、受信したパケットがHTTPのSYN+ACKパケットであるか否かを判定する(S601)。すなわち、受信したパケットが、SYNパケットの受信後に受信するSYN+ACKパケットであるか否かが判定される。
受信したパケットがHTTPのSYN+ACKパケットでないと判定された場合、応答部353はS606に進む。受信したパケットがHTTPのSYN+ACKパケットであると判定された場合、応答部353は、コネクション管理テーブル(T1)に、受信したSYN+ACKパケットに関連するコネクション情報が存在するか否かを判定する(S602)。S602の判定方法は、S102と同一の判定方法を用いればよい。
なお、コネクション情報が存在しない場合、不正な通信又は障害の発生等に該当するが、中継装置3は、特にパケットに対する処理をすることなくユーザ端末1に送信する。この場合、ユーザ端末1が不正な通信又は障害の発生等を判定することとなる。
コネクション管理テーブル(T1)に、受信したSYN+ACKパケットに関連するコネクション情報が存在しないと判定された場合、応答部353は、S606に進む。受信したSYN+ACKパケットに関連するコネクション情報が存在すると判定された場合、応答部353は、当該コネクション情報のコネクション状態(T17)が「SYN1」であるか否かを判定する(S603)。
コネクション情報のコネクション状態(T17)が「SYN1」でないと判定された場合、応答部353は、S606に進む。コネクション情報のコネクション状態(T17)が「SYN1」であると判定された場合、応答部353は、コネクション状態(T17)を「SYN2」に更新する(S604)。
応答部353は、受信したSYN+ACKパケットからMSSの情報を取得し、取得されたMSSの情報をコネクション情報のMSS(T16)に格納する(S605)。
応答部353は、ユーザ側インタフェース341を介して受信したパケットをユーザ端末1に送信し(S606)、処理を終了する。
次に、通信システムにおける通信の流れについてシーケンス図を用いて説明する。なお、シーケンス図において、ユーザ端末1と中継装置3との間を接続するルータ2−1は、ユーザ端末1と中継装置3との間のパケット転送のみを行うため省略する。
(動作例1)
図14A及び図14Bは、本発明の実施例の通信システムにおけるサービス経路4が切り替えられない場合の通信の流れを示すシーケンス図である。
動作例1では、IPアドレスが「10.0.0.1」であるユーザ端末1−1がIPアドレスが「10.0.1.1」であるWebサーバ6−1が保持するコンテンツ(HTTP://server2.com/index.html)を要求する。動作例1では、HTTPリクエストがルールテーブル(T2)のいずれのルールにも該当しないため、サービス経路4−1を用いて通信が行われる。
なお、動作例1ではHTTPリクエストが一つのパケットに格納されているものとする。HTTPリクエストが複数のパケットに分割されて送信される場合の動作については、動作例3(図16参照)において説明する。
ユーザ端末1−1は、Webサーバ6−1宛てのSYNパケットを送信する(SQ101)。中継装置3は、SYNパケットを受信すると監視処理S100を開始する。
監視処理S100では、監視部352は、受信したSYNパケットがHTTP上のパケットであるか否かを判定する(S108)。ここでは、HTTP上のパケットであると判定されるため、監視部352は、コネクション管理テーブル(T1)にコネクション情報を登録する(S109)。また、監視部352は、サービス1側インタフェース342を介してWebサーバ6−1に受信したSYNを送信する(S110、SQ102)。
中継装置3は、Webサーバ6−1からユーザ端末1−1宛てのSYN+ACKパケットを受信すると(SQ103)、応答処理S600を開始する。
応答処理S600では、応答部353は、コネクション状態(T17)が「SYN1」であるか否かを判定する(S603)。ここでは、コネクション状態(T17)が「SYN1」であるため、応答部353は、コネクション状態(T17)を「SYN2」に更新し(S604)、受信したSYN+ACKパケットから取得されたMSS情報をMSS(T16)に登録する(S605)。応答部353は、ユーザ側インタフェース341を介してユーザ端末1−1に受信したSYN+ACKパケットを送信する(S606、SQ104)。
中継装置3は、ユーザ端末1−1からWebサーバ6−1宛てのACKパケットを受信すると(SQ105)、監視処理S100を開始する。
監視処理S100では、監視部352は、コネクション管理テーブル(T1)に存在するコネクション情報のコネクション状態(T17)が「代理応答中」であるか否かを判定する(S103)。コネクション状態(T17)は「代理応答中」ではないため、監視部352は、受信したパケットがACKパケット、かつ、コネクション状態(T17)が「SYN2」であるか否かを判定する(S105)。ここでは、S105の条件を満たすため、監視部352は、コネクション状態(T17)を「確立」に更新する(F108)。監視部352は、サービス1側インタフェースを介してWebサーバ6−1に受信したACKパケットを送信する(S606、SQ106)。
中継装置3は、ユーザ端末1−1からWebサーバ6−1宛てのHTTPリクエストパケットを受信すると(SQ107)、監視処理S100を開始する。
監視処理S100では、監視部352は、S105の条件を満たすか否かを判定する。ここでは、S105の条件を満たさないため、監視部352は、ルール判定部354に処理の実行を指示する(S104)。
ルール判定処理S300では、ルール判定部354は、一つのパケットにHTTPリクエスト全体が含まれるため、コネクション状態(T17)が「HTTPリクエスト一部受信」であるか否かを判定する(S302)。コネクション状態(T17)は「HTTPリクエスト一部受信」ではないため、ルール判定部354は、HTTPリクエストに該当するルールが存在するか否かを判定する(S304)。ここでは、該当するルールが存在しないものと判定される。そのため、ルール判定部354は、コネクション管理テーブル(T1)からコネクション情報を削除し(S307)、サービス1側インタフェース342を介してWebサーバ6−1に受信したHTTPリクエストパケットを送信する(S311、SQ108)。
中継装置3は、Webサーバ6−1からユーザ端末1−1宛てのACKパケットを受信すると(SQ109)、応答処理S600開始する。
応答処理S600では、応答部353は、受信したパケットがSYN+ACKパケットであるか否かを判定する(S601)。受信したパケットはSYN+ACKパケットではないため、応答部353は、ユーザ側インタフェース341を介してユーザ端末1−1に受信したACKパケットを送信する(S606、SQ110)。
中継装置3は、Webサーバ6−1からユーザ端末1−1宛てのコンテンツを格納するパケットを受信すると(SQ111)、応答処理S600を開始する。応答処理S600では、SQ110と同様に、ユーザ側インタフェース341を介してユーザ端末1−1に受信したパケットが送信される(S606、SQ112)。
中継装置3は、ユーザ端末1−1からWebサーバ6−1宛てのACKパケットを受信すると(SQ113)、監視処理S100を開始する。
監視処理S100では、監視部352は、コネクション管理テーブル(T1)にコネクション情報が存在するか否かを判定する(S102)。SQ107の後に実行されるルール判定処理S300においてコネクション情報が削除されているため(S307)、監視部352は、サービス1側インタフェース342を介してWebサーバ6−1に受信したACKパケットを送信する(S110、SQ114)。
中継装置3は、全てのコンテンツが送信されるまでSQ103〜SQ114までの処理を繰り返し実行することとなる。
中継装置3は、Webサーバ6−1からユーザ端末1−1宛てのFINパケットを受信した後(SQ115)、又は、ユーザ端末1−1宛のACKパケットを受信した後(SQ121)、応答処理S600を開始する。当該応答処理S600は、SQ109の後に実行される応答処理S600のフローと同様のフローとなる。すなわち、受信したFINパケット又はACKパケットがユーザ側インタフェース341を介してユーザ端末1−1に送信される(SQ116、SQ122)。
また、中継装置3は、ユーザ端末1−1からWebサーバ6−1宛てのACKパケットを受信した後(SQ117)、又はFINパケットを受信した後(SQ119)、監視処理S100を開始する。当該監視処理S100は、SQ113の後に実行される監視処理S100と同様のフローとなる。すなわち、受信したACKパケット又はFINパケットがサービス1側インタフェース342を介してWebサーバ6−1に送信される(SQ118、SQ120)。
(動作例2)
図15A及び図15Bは、本発明の実施例の通信システムにおけるサービス経路4が切り替えられる場合の通信の流れを示すシーケンス図である。
動作例2では、IPアドレスが「10.0.0.3」であるユーザ端末1−1がIPアドレスが「10.0.1.3」であるWebサーバ6−1が保持するコンテンツ(HTTP://server3.com/IMAGE.JPG)を要求する。動作例2では、HTTPリクエストがルールテーブル(T2)のいずれかのルールに該当するため、サービス経路4−2を用いて通信が行われる。
なお、動作例2ではHTTPリクエストが一つのパケットに格納されているものとする。HTTPリクエストが複数のパケットに分割されて送信される場合の動作については、動作例4(図17参照)において説明する。
SQ201からSQ206までのTCPコネクションの確立処理は、SQ101からSQ106までの処理と同一であるため説明を省略する。
中継装置3は、ユーザ端末1−1からWebサーバ6−1宛てのHTTPリクエストパケットを受信すると(SQ207)、監視処理S100を開始する。
監視処理S100では、監視部352は、S105の条件を満たさないため、監視部352は、ルール判定部354に処理の実行を指示する(S104)。
ルール判定処理S300では、ルール判定部354は、HTTPリクエストに該当するルールが存在すると判定するため、コネクション状態(T13)を「代理応答中」に更新し(S305)、HTTPリクエスト送信部355に処理の実行を指示する(S306)。
HTTPリクエスト送信処理S400では、HTTPリクエスト送信部355は、代理応答テーブル(T3)に代理応答情報を登録する(S401)。HTTPリクエスト送信部355は、サービス経路4−1経由でWebサーバ6−1にRSTパケットを送信する(S402、SQ208)。HTTPリクエスト送信部355は、サービス経路4−2上に新たなTCPコネクションを確立し、新たなTCPコネクションの情報に基づいて代理応答情報を更新する(S403、SQ209)。HTTPリクエスト送信部355は、ユーザ端末1−1から受信したHTTPリクエストパケットのヘッダを書き換えて、サービス2側インタフェースを介してWebサーバ6−1に送信する(S404、SQ210)。
HTTPリクエスト送信部355は、Webサーバ6−1から中継装置3宛てのACKパケットを受信すると(SQ211)、代理応答情報に基づいてACKパケットのヘッダを書き換えて、ユーザ側インタフェース341を介してユーザ端末1−1に書き換えられたACKパケットを送信する(S405、SQ212)。その後、HTTPリクエスト送信部355は、データ中継部356に処理の実行を指示する(S406)。
ユーザ端末1−1に送信されるACKパケットのACK番号及びシーケンス番号は、ユーザ端末1−1とWebサーバ6−1との間のTCPコネクションの確立時に用いられたACK番号及びシーケンス番号が引き続き用いられる。したがって、ユーザ端末1−1は、最初のTCPコネクションを介した通信であるように認識される。すなわち、ユーザ端末1−1には通信経路の切り替え等が認識されない。
データ中継処理S500では、データ中継部356が、Webサーバ6−1から中継装置3宛てのコンテンツを含むパケットを受信すると(SQ213)、代理応答情報のユーザ端末側情報(T33)に基づいてコンテンツを格納するパケットのヘッダを書き換え、ユーザ側インタフェース341を介してユーザ端末1−1に書き換えられたパケットを送信する(S503、SQ214)。
ユーザ端末1−1に送信されるコンテンツを含むパケットのACK番号及びシーケンス番号も、SQ212の場合と同様に、ユーザ端末1−1とWebサーバ6−1との間のTCPコネクションの確立時に用いられたACK番号及びシーケンス番号が引き続き用いられる。
また、中継装置3は、ユーザ端末1−1からWebサーバ6−1宛てのACKパケットを受信すると(SQ215)、監視処理S100を開始する。
監視処理S100では、コネクション状態(T13)が「代理応答中」であるため、監視部352は、ユーザ側代理応答処理S200を開始する。ユーザ側代理応答処理S200では、監視部352は、受信したパケットがACKパケットであるため、データ中継部356にACK受信通知を出力する(S202)。
このとき、データ中継処理S500では、データ中継部356が、代理応答情報のWebサーバ側情報(T34)に基づいてACKパケットのヘッダを書き換え、サービス2側インタフェース343を介してWebサーバ6−1に書き換えられたACKパケットを送信する(S504、SQ216)。
Webサーバ6−1に送信されるACKパケットのACK番号及びシーケンス番号は、中継装置3とWebサーバ6−1との間の新たなTCPコネクションの確立時に用いられたACK番号及びシーケンス番号が引き続き用いられる。
全てのコンテンツが送信されるまで、SQ213からSQ216までの処理が実行されることとなる。
中継装置3がWebサーバ6−1から中継装置3宛てのFINパケットを受信すると(SQ217)、データ中継部356は、代理応答情報のユーザ端末側情報(T33)に基づいてFINパケットのヘッダを書き換え、ユーザ側インタフェース341からユーザ端末1−1に書き換えられたFINパケットを送信する(S505、SQ218)。
ユーザ端末1−1に送信されるコンテンツを含むパケットのACK番号及びシーケンス番号も、SQ212の場合と同様に、ユーザ端末1−1とWebサーバ6−1との間のTCPコネクションの確立時に用いられたACK番号及びシーケンス番号が引き続き用いられる。
中継装置3は、ユーザ端末1−1からWebサーバ6−1宛てのACKパケットを受信すると(SQ219)、監視処理S100を開始する。
当該監視処理S100は、SQ215の後に実行される監視処理S100と同様のフローとなる。すなわち、データ中継部356にACK受信通知が出力される(S202)。
このとき、データ中継処理S500では、データ中継部356が、代理応答情報のWebサーバ側情報(T34)に基づいてACKパケットのヘッダを書き換え、サービス2側インタフェース343を介してWebサーバ6−1に書き換えられたACKパケットを送信する(S506、SQ220)。
Webサーバ6−1に送信されるACKパケットのACK番号及びシーケンス番号は、中継装置3とWebサーバ6−1との間の新たなTCPコネクションの確立時に用いられたACK番号及びシーケンス番号が引き続き用いられる。
中継装置3は、ユーザ端末1−1からWebサーバ6−1宛てのFINパケットを受信すると(SQ221)、監視処理S100を開始する。
監視処理S100では、監視部352は、コネクション状態(T13)が「代理応答中」デあるため、ユーザ側代理応答処理S200を開始する。ユーザ側代理応答処理S200では、監視部352は、受信したパケットがFINパケットであるか否かを判定する(S203)。ここでは、受信したパケットはFINパケットであるため、監視部352は、データ中継部356にFIN受信通知を出力する(S204)。
このとき、データ中継処理S500では、データ中継部356が、代理応答情報のWebサーバ側情報(T34)に基づいてFINパケットのヘッダを書き換え、サービス2側インタフェース343を介してWebサーバ6−1に書き換えられたFINパケットを送信する(S507、SQ222)。
Webサーバ6−1に送信されるFINパケットのACK番号及びシーケンス番号は、中継装置3とWebサーバ6−1との間の新たなTCPコネクションの確立時に用いられたACK番号及びシーケンス番号が引き続き用いられる。
中継装置3がWebサーバ6−1から中継装置3宛てのACKパケットを受信すると(SQ223)、データ中継部356は、代理応答情報のユーザ端末側情報(T33)に基づいてACKパケットのヘッダを書き換え、ユーザ側インタフェース341を介してユーザ端末1−1に書き換えられたACKパケットを送信する(S508、SQ224)。その後、データ中継部356は、コネクション管理テーブル(T1)からコネクション情報を削除し、代理応答テーブル(T3)から代理応答情報を削除する(S509)。
ユーザ端末1−1に送信されるコンテンツを含むパケットのACK番号及びシーケンス番号も、SQ212の場合と同様に、ユーザ端末1−1とWebサーバ6−1との間のTCPコネクションの確立時に用いられたACK番号及びシーケンス番号が引き続き用いられる。
動作例2では、ユーザ端末1−1は、Webサーバ6−1との間で確立されたTCPコネクションの情報(ACK番号及びシーケンス番号)を用いてWebサーバ6−1宛にパケットを送信すればよく、サービス経路4の切り替えが意識する必要はない。また、サービス経路4の切り替え時には、ユーザ端末1−1と中継装置3との間のTCPコネクションは維持されるため、ユーザ端末1−1からは、サービス経路4の切り替え時におけるTCPコネクションの切断は認識されない。すなわち、中継装置3は、ユーザ端末1−1には特に変更を行うことなく、サービス経路4を切り替えることができる。
(動作例3)
図16は、本発明の実施例の通信システムにおけるサービス経路4が切り替えられない場合の通信の流れを示すシーケンス図である。
動作例3は、動作例1とほぼ同一の動作であるが、HTTPリクエストが複数のパケットに分割されて送信される点が異なる。以下、動作例1との差異を中心に、動作例3について説明する。
TCPコネクションを確立するまでの処理は動作例1と同一であるため省略する。
中継装置3は、ユーザ端末1−1からWebサーバ6−1宛てのHTTPリクエスト1/2を受信すると(SQ301)、監視処理S100を開始する。監視処理S100では、監視部352は、S105の条件を満たさないためルール判定部354に処理の実行を指示する。
ルール判定処理S300では、ルール判定部は、HTTPリクエスト全体を受信したか否かを判定する(S301)。ここでは、HTTPリクエスト全体を受信していないため、ルール判定部354は、パケット格納部33に受信したHTTPリクエストパケットをコピーし(S308)、コネクション情報のパケットポインタ(T18)に当該パケットが格納される一を示すポインタを設定する(S309)。さらに、ルール判定部354は、コネクション状態(T17)を「HTTPリクエスト一部受信」に更新する(S310)。その後、ルール判定部354は、サービス1側インタフェース342を介してWebサーバ6−1に受信したHTTPリクエストパケットを送信する(S311、SQ302)。
中継装置3は、Webサーバ6−1からユーザ端末1−1宛てのACKパケットを受信すると(SQ303)、応答処理S600を開始する。
当該応答処理S600は、SQ109の後に実行される応答処理S600と同様のフローとなる。すなわち、応答部353は、ユーザ側インタフェース341を介してユーザ端末1−1に受信したACKパケットを送信する(S606、SQ304)。
中継装置3は、ユーザ端末1−1からWebサーバ6−1宛てのHTTPリクエスト2/2を受信すると(SQ305)、監視処理S100を開始する。
監視処理S100では、監視部352は、S105の条件を満たさないためルール判定部354に処理の実行を指示する。
ルール判定処理S300では、ルール判定部354は、HTTPリクエスト全体を受信したと判定されるため、コネクション状態(T17)が「HTTPリクエスト一部受信」であるか否かを判定する(S302)。ここでは、コネクション状態(T17)が「HTTPリクエスト一部受信」であるため、ルール判定部354は、パケットポインタ(T18)に基づいてパケット格納部33からHTTPリクエストパケットを読み出す(S303)。ルール判定部354は、HTTPリクエストがルールテーブル(T2)のいずれかのルールに該当するか否かを判定する(S304)。ここでは、該当するルールが存在しないため、ルール判定部354は、コネクション管理テーブル(T1)からコネクション情報を削除し(S307)、サービス1側インタフェース342を介してWebサーバ6−1に受信したHTTPリクエストパケット2/2を送信する(S311、SQ306)。
中継装置3は、Webサーバ6−1からユーザ端末1−1宛てのACKパケットを受信すると(SQ307)、応答処理S600を開始する。
当該応答処理S600は、SQ109の後に実行される応答処理S600と同様のフローとなる。すなわち、応答部353は、ユーザ側インタフェース341を介してユーザ端末1−1に受信したACKパケットを送信する(S606、SQ308)。
図16では、HTTPリクエストが二つのパケットに分割された例を示したが本発明はこれに限定されない。HTTPリクエストは三つ以上に分割されていてもよい。この場合、HTTPリクエスト全体を受信するまではSQ301からSQ304までの処理が実行され、HTTPリクエスト全体を受信するとSQ305からSQ308までの処理が実行される。
(動作例4)
図17は、本発明の実施例の通信システムにおけるサービス経路4が切り替えられる場合の通信の流れを示すシーケンス図である。
動作例4は、動作例2とほぼ同一の動作であるが、HTTPリクエストが複数のパケットに分割されて送信される点が異なる。以下、動作例2との差異を中心に、動作例4について説明する。
SQ401からSQ404の処理は、SQ301からSQ304までの処理と同一の処理であるため説明を省略する。
中継装置3は、ユーザ端末1−1からWebサーバ6−1宛のHTTPリクエストパケット2/2を受信すると(SQ405)、監視処理S100を開始する。当該監視処理S100は、SQ305の後に実行される監視処理S100と同様のフローとなる。すなわち、監視部352は、ルール判定部354に処理の実行を指示する。
ルール判定処理S300では、ルール判定部354は、HTTPリクエストに該当するルールが存在するため、コネクション状態(T17)を「代理応答中」に更新し(S305)、HTTPリクエスト送信部355に処理の実行を指示する(S306)。
HTTPリクエスト送信処理S400では、HTTPリクエスト送信部355は、代理応答テーブル(T3)に代理応答情報を登録し(S401)、RSTパケットを送信する(S402、SQ406)。HTTPリクエスト送信部355は、新たなTCPコネクションの確立し、代理応答情報の更新する(S403、SQ407)。HTTPリクエスト送信部355は、代理応答情報のWebサーバ側情報(T34)に基づいてHTTPリクエストパケット1/2及びHTTPリクエストパケット2/2のそれぞれのヘッダを書き換え、サービス2側インタフェース343を介してWebサーバ6−1に書き換えられたHTTPリクエストパケット1/2及びHTTPリクエストパケット2/2を送信する(S404、SQ408、SQ409)。
中継装置3がWebサーバ6−1から中継装置3宛てのACKパケットを受信すると(SQ410、SQ411)、HTTPリクエスト送信部355は、代理応答情報のユーザ端末側情報(T33)に基づいてACKパケットのヘッダを書き換え、ユーザ側インタフェース341を介してユーザ端末1−1に書き換えられたACKパケットを送信する(S405、SQ412)。
図17では、HTTPリクエストが二つのパケットに分割された例を示したが本発明はこれに限定されない。HTTPリクエストは三つ以上に分割されていてもよい。この場合、HTTPリクエスト全体を受信するまではSQ301からSQ304までの処理が実行され、HTTPリクエスト全体を受信するとSQ405からSQ408までの処理が実行される。
以上で説明したように、本発明によれば、ユーザ端末1及びWebサーバ6等の既存のネットワーク構成を大幅に変更することなく、かつ、ユーザ端末1及びWebサーバ6に特別な操作をさせることなく、中継装置3は、HTTP上のアプリケーション及びデータの種類等のHTTPリクエストの解析結果に基づいて、サービス経路4を切り替えることができる。また、中継装置3は、ユーザ端末1からは経路の切り替えを意識させることなく、サービス経路4を切り替えることができる。
これによって、オフロード用の通信経路に振り分けることが可能となり、他のユーザトラフィックへ影響させないトラフィックオフロードが可能となる。また、アプリケーション及びデータの種類によって特徴の異なるサービス経路を切り替え、使用するサービス網ごとに異なる料金を徴収する新たな課金が可能となる。
本実施例では、サービス経路4が二つある場合を例に説明したが、サービス経路4は三つ以上あってもよい。この場合、ルールテーブル(T2)のルールに新たにサービス経路のカラムを対応付ければよい。これによって、中継装置3は、HTTPリクエスト条件(T26)に該当するHTTPリクエストパケットを受信した場合、ルールに対応付けられるサービス経路4を特定し、当該サービス経路4との間で新たなTCPコネクションを確立する。
また、本実施例では、HTTPを用いた通信を例に説明したが、SIPなど、TCPが上位階層のプロトコルとなる通信プロトコルを利用するアプリケーションであれば同様の取り扱いをすることができる。
なお、本実施例では、ソフトウェアによる制御を用いた例について説明したが、その一部をハードウェアによって実現することも可能である。
以上、本発明を添付の図面を参照して詳細に説明したが、本発明はこのような具体的構成に限定されるものではなく、添付した請求の範囲の趣旨内における様々な変更及び同等の構成を含むものである。
1 ユーザ端末
2 ルータ
3 中継装置
4 サービス経路
5 インターネット
6 Webサーバ
31 プロセッサ
32 テーブル格納部
33 パケット格納部
34 インタフェース部
35 命令格納部
321 コネクション管理テーブル
323 代理応答テーブル
341 ユーザ側インタフェース
342 サービス1側インタフェース
343 サービス2側インタフェース
351 TCP管理部
352 監視部
353 応答部
354 ルール判定部
355 HTTPリクエスト送信部
356 データ中継部

Claims (10)

  1. TCPを利用して通信するアプリケーションが稼働する端末と、前記アプリケーションが要求するデータを送信するサーバとの間で送受信するデータを転送する中継装置であって、
    前記中継装置は、プロセッサ、前記プロセッサに接続されるメモリ、及び前記プロセッサに接続され、他の装置と接続するための複数のネットワークインタフェースを備え、
    前記中継装置は、第1のネットワークを介して前記端末と接続し、第2のネットワークに含まれる複数の通信経路を介して前記サーバと接続し、
    前記中継装置は、
    前記第1のネットワーク及び前記第2のネットワークに含まれる一つの前記通信経路を介して前記端末と前記サーバとの間に確立されたTCPコネクションを用いて送受信されるパケットを監視するTCP管理部と、
    前記TCP管理部によって、前記端末上で稼働する前記アプリケーションが前記サーバにデータの送信を要求するリクエストパケットの受信が検知された場合、前記リクエストパケットを解析し、前記解析の結果に基づいて前記リクエストパケットを送信する前記第2のネットワークの通信経路を切り替えるか否かを判定する判定部と、
    前記判定部によって新たな前記第2のネットワークの通信経路に切り替えると判定された場合、新たな通信経路上に前記中継装置及び前記サーバが通信するための新たなTCPコネクションを確立し、前記新たなTCPコネクションを用いて前記リクエストパケットを前記サーバに送信するリクエスト送信部と、
    前記新たなTCPコネクションを用いて、前記アプリケーションが要求するデータを含むデータ格納パケットを前記端末に転送するデータ中継部と、を備えることを特徴とする中継装置。
  2. 請求項1に記載の中継装置であって、
    前記TCPコネクションを用いて通信する場合に用いられる端末側情報、及び、前記新たなTCPコネクションを介して通信する場合に用いられるサーバ側情報が対応付けられた変換情報を保持し、
    前記端末側情報は、前記端末のアドレス、前記端末のポート番号、前記端末が通信に用いるシーケンス番号、及び前記端末が通信に用いるACK番号を含み、
    前記サーバ側情報は、前記中継装置のアドレス、前記中継装置のポート番号、前記中継装置が通信に用いるシーケンス番号、及び前記中継装置が通信に用いるACK番号を含み、
    前記端末と前記サーバとの間で送受信されるパケットは、送信元アドレス、送信元ポート番号、宛先アドレス、宛先ポート番号、シーケンス番号、及びACK番号を含み、
    前記リクエスト送信部は、
    前記変換情報の前記サーバ側情報に基づいて、前記リクエストパケットの前記送信元アドレス、前記送信元ポート番号、前記シーケンス番号、及び前記ACK番号を書き換えて、
    書き換えられた前記リクエストパケットを前記サーバに送信し、
    前記データ中継部は、
    前記サーバから前記データ格納パケットを受信した場合、前記変換情報の前記端末側情報に基づいて、前記データ格納パケットの前記宛先アドレス、前記宛先ポート番号、前記シーケンス番号、及び前記ACK番号を書き換えて、
    書き換えられた前記データ格納パケットを前記端末に送信することを特徴とする中継装置。
  3. 請求項2に記載の中継装置であって、
    前記リクエスト送信部は、
    前記リクエストパケットから取得された前記端末のアドレス、前記端末のポート番号、前記端末が通信に用いるシーケンス番号、及び前記端末が通信に用いるACK番号を前記端末側情報として設定し、
    前記新たなTCPコネクションの確立時に決定された前記中継装置のアドレス、前記中継装置のポート番号、前記中継装置が通信に用いるシーケンス番号、及び前記中継装置が通信に用いるACK番号を前記サーバ側情報として設定することを特徴とする中継装置。
  4. 請求項2に記載の中継装置であって、
    前記アプリケーションが前記サーバとの通信に用いる通信プロトコルに関する条件を含むルールを複数格納するルール情報を保持し、
    前記判定部は、
    前記解析の結果に基づいて前記ルール情報を参照し、前記リクエストパケットに該当する前記ルールが存在するか否かを判定し、
    前記リクエストパケットに該当する前記ルールが存在すると判定された場合、前記リクエストパケットを送信する通信経路を切り替えると判定することを特徴とする中継装置。
  5. 請求項2に記載の中継装置であって、
    前記リクエスト送信部は、前記リクエストパケットを送信する通信経路を切り替えると判定された場合、現在使用している通信経路上の前記TCPコネクションを切断するための初期化パケットを当該通信経路上の前記TCPコネクションを用いて前記サーバに送信することを特徴とする中継装置。
  6. TCPを利用して通信するアプリケーションが稼働する端末と、前記アプリケーションが要求するデータを送信するサーバとの間で送受信するデータを転送する中継装置におけるデータ転送方法であって、
    前記中継装置は、プロセッサ、前記プロセッサに接続されるメモリ、及び前記プロセッサに接続され、他の装置と接続するための複数のネットワークインタフェースを備え、
    前記中継装置は、第1のネットワークを介して前記端末と接続し、第2のネットワークに含まれる複数の通信経路を介して前記サーバと接続し、
    前記データ転送方法は、
    前記中継装置が、前記第1のネットワーク及び前記第2のネットワークに含まれる一つの前記通信経路を介して前記端末と前記サーバとの間に確立されたTCPコネクションを用いて送受信されるパケットを監視する第1のステップと、
    前記中継装置が、前記端末上で稼働する前記アプリケーションが前記サーバにデータの送信を要求するリクエストパケットの受信が検知された場合、前記リクエストパケットを解析し、前記解析の結果に基づいて前記リクエストパケットを送信する前記第2のネットワークの通信経路を切り替えるか否かを判定する第2のステップと、
    前記中継装置が、新たな前記第2のネットワークの通信経路に切り替えると判定した場合、新たな通信経路上に前記中継装置及び前記サーバが通信するための新たなTCPコネクションを確立し、前記新たなTCPコネクションを用いて前記リクエストパケットを前記サーバに送信する第3のステップと、
    前記中継装置が、前記新たなTCPコネクションを用いて、前記アプリケーションが要求するデータを含むデータ格納パケットを前記端末に転送する第4のステップと、を含むことを特徴とするデータ転送方法。
  7. 請求項6に記載のデータ転送方法であって、
    前記TCPコネクションを用いて通信する場合に用いられる端末側情報、及び、前記新たなTCPコネクションを介して通信する場合に用いられるサーバ側情報が対応付けられた変換情報を保持し、
    前記端末側情報は、前記端末のアドレス、前記端末のポート番号、前記端末が通信に用いるシーケンス番号、及び前記端末が通信に用いるACK番号を含み、
    前記サーバ側情報は、前記中継装置のアドレス、前記中継装置のポート番号、前記中継装置が通信に用いるシーケンス番号、及び前記中継装置が通信に用いるACK番号を含み、
    前記端末と前記サーバとの間で送受信されるパケットは、送信元アドレス、送信元ポート番号、宛先アドレス、宛先ポート番号、シーケンス番号、及びACK番号を含み、
    前記第3のステップは、
    前記変換情報の前記サーバ側情報に基づいて、前記リクエストパケットの前記送信元アドレス、前記送信元ポート番号、前記シーケンス番号、及び前記ACK番号を書き換えるステップと、
    書き換えられた前記リクエストパケットを前記サーバに送信するステップと、を含み、
    前記第4のステップは、
    前記サーバから前記データ格納パケットを受信した場合、前記変換情報の前記端末側情報に基づいて、前記データ格納パケットの前記宛先アドレス、前記宛先ポート番号、前記シーケンス番号、及び前記ACK番号を書き換えるステップと、
    書き換えられた前記データ格納パケットを前記端末に送信するステップと、を含むことを特徴とするデータ転送方法。
  8. 請求項7に記載のデータ転送方法であって、
    前記第3のステップは、
    前記リクエストパケットから取得された前記端末のアドレス、前記端末のポート番号、前記端末が通信に用いるシーケンス番号、及び前記端末が通信に用いるACK番号を前記端末側情報として設定するステップと、
    前記新たなTCPコネクションの確立時に決定された前記中継装置のアドレス、前記中継装置のポート番号、前記中継装置が通信に用いるシーケンス番号、及び前記中継装置が通信に用いるACK番号を前記サーバ側情報として設定するステップと、を含むことを特徴とするデータ転送方法。
  9. 請求項7に記載のデータ転送方法であって、
    前記アプリケーションが前記サーバとの通信に用いる通信プロトコルに関する条件を含むルールを複数格納するルール情報を保持し、
    前記第2のステップは、
    前記解析の結果に基づいて前記ルール情報を参照し、前記リクエストパケットに該当する前記ルールが存在するか否かを判定するステップと、
    前記リクエストパケットに該当する前記ルールが存在すると判定された場合、前記リクエストパケットを送信する通信経路を切り替えると判定するステップと、を含むことを特徴とするデータ転送方法。
  10. 請求項7に記載のデータ転送方法であって、
    前記第3のステップは、前記リクエストパケットを送信する通信経路を切り替えると判定された場合、現在使用している通信経路上の前記TCPコネクションを切断するための初期化パケットを当該通信経路上の前記TCPコネクションを用いて前記サーバに送信するステップを含むことを特徴とするデータ転送方法。
JP2013230067A 2013-11-06 2013-11-06 中継装置及びデータ転送方法 Expired - Fee Related JP5913258B2 (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP2013230067A JP5913258B2 (ja) 2013-11-06 2013-11-06 中継装置及びデータ転送方法
US14/533,452 US20150127837A1 (en) 2013-11-06 2014-11-05 Relay apparatus and data transfer method

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2013230067A JP5913258B2 (ja) 2013-11-06 2013-11-06 中継装置及びデータ転送方法

Publications (2)

Publication Number Publication Date
JP2015091019A true JP2015091019A (ja) 2015-05-11
JP5913258B2 JP5913258B2 (ja) 2016-04-27

Family

ID=53007926

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2013230067A Expired - Fee Related JP5913258B2 (ja) 2013-11-06 2013-11-06 中継装置及びデータ転送方法

Country Status (2)

Country Link
US (1) US20150127837A1 (ja)
JP (1) JP5913258B2 (ja)

Families Citing this family (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP6236933B2 (ja) * 2013-07-02 2017-11-29 富士通株式会社 中継装置
US11038922B2 (en) 2013-12-06 2021-06-15 Fastly, Inc. Secure traffic optimization in an edge network
US9906618B2 (en) * 2013-12-06 2018-02-27 Fastly Inc. Return path selection for content delivery
CN105187509A (zh) * 2015-08-13 2015-12-23 深圳市广和通无线股份有限公司 一种支持续传的无线通讯模块数据上传方法
US10397978B2 (en) * 2015-11-06 2019-08-27 Flash Networks, Ltd Method and system for signaling optimization of IP connection over a mobile-radio network
EP3404886A1 (en) * 2017-05-15 2018-11-21 IMEC vzw Network stack for a plurality of physical communication interfaces
CN113961311A (zh) * 2021-10-27 2022-01-21 阿波罗智联(北京)科技有限公司 业务数据处理方法、装置、电子设备和介质

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2001160825A (ja) * 1999-12-03 2001-06-12 Fujitsu Ltd パケット中継装置

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2001160825A (ja) * 1999-12-03 2001-06-12 Fujitsu Ltd パケット中継装置

Also Published As

Publication number Publication date
US20150127837A1 (en) 2015-05-07
JP5913258B2 (ja) 2016-04-27

Similar Documents

Publication Publication Date Title
JP5913258B2 (ja) 中継装置及びデータ転送方法
US20070233844A1 (en) Relay device and communication system
CN109818905B (zh) 一种传输层协议适配的方法、网元设备及系统
JP6752141B2 (ja) パケットを処理するための方法およびフォワーダ
JP2008167317A (ja) モニタ制御システム、モニタ装置、モニタ制御方法およびモニタ制御プログラム
JP6118122B2 (ja) 通信装置及びその制御方法、プログラム
JP6291085B2 (ja) 負荷分散装置、負荷分散方法及びプログラム
WO2015126219A1 (ko) 피투피 기반 파일 전송 제어 방법 및 이를 위한 피투피 통신 제어 장치
JP2008225644A (ja) ゲートウェイ装置、ゲートウェイ装置の負荷分散方法及びゲートウェイ装置の負荷分散プログラム
JP5816960B2 (ja) 通信システム
US7564848B2 (en) Method for the establishing of connections in a communication system
JP2005109539A (ja) コンテンツの検索と配信を行うシステムと方法、及びプログラム
JP5941887B2 (ja) エッジルータ切替方法及びシステム及びエッジルータ及び冗長管理装置
JP2017027499A (ja) 中継システム、中継方法、及びプログラム
Takasugi et al. Seamless service platform for following a user's movement in a dynamic network environment
CN110381007B (zh) Tcp加速方法及装置
CN105991629B (zh) Tcp连接建立方法及装置
JP3642305B2 (ja) 通信システムとそのパケット交換方法、及び交換プログラムを記録した記録媒体
JP5889122B2 (ja) 制御ノード及び通信制御方法
JP2003143236A (ja) ゲートウェイ装置
JP5723808B2 (ja) 通信装置、通信方法、及びプログラム
JP2005011267A (ja) リアルタイムデータ通信システム、リアルタイムデータ通信装置およびリアルタイムデータ通信方法
JP2005286681A (ja) 中継機器
KR101535085B1 (ko) 피투피 통신 제어 방법 및 장치
CN112543191B (zh) 一种负载均衡方法及装置

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20151030

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20160129

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20160209

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20160308

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: 20160329

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20160401

R150 Certificate of patent or registration of utility model

Ref document number: 5913258

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

LAPS Cancellation because of no payment of annual fees