図1は、本発明の実施形態(第1の実施形態)に係る中継システムの構成および中継装置の機能ブロックの一例を示す。なお、中継システム1は、通信中継システムの一例であり、中継装置2は、通信中継装置の一例である。
中継システム1は、図1に示す例では、1組の中継装置2(2a、2b)を備える。中継装置2(2a)は、ネットワーク4を介して他の中継装置2(2b)と接続されている。ネットワーク4は、例えば、WANである。また、各中継装置2には、通信装置3が接続されている。通信装置3(3a、3b)は、例えば、イントラネット等のネットワークを介して対応する中継装置2(2a、2b)に接続される。そして、通信装置3(3a)は、1組の中継装置2を介して他の通信装置3(3b)と通信することができる。なお、以下の記載において、一方の通信装置を第1通信装置と呼び、他方の通信装置を第2通信装置と呼ぶことがある。また、一方の中継装置を第1中継装置と呼び、他方の中継装置を第2中継装置と呼ぶことがある。
中継装置2および通信装置3は、この実施例では、パケットを送信および受信する。ただし、本発明の中継システムは、パケットを伝送する構成に限定されるものではない。
中継装置2は、第1通信処理部20、監視部21、管理部22、識別子変更部23、高速化処理部24、および第2通信処理部25を備える。なお、中継装置2は、図1に示していない他の機能または回路を備えていてもよい。
以下の記載では、第1通信装置3aから第2通信装置3bにデータを送信する通信が行われるものとする。この通信では、第1通信装置3aから送信されるパケットは、第1中継装置2aおよび第2中継装置2bにより中継される。
第1中継装置2aにおいて、第1通信処理部20は、第2通信装置3bに転送すべきパケットを第1通信装置3aから受信する。このとき、第1通信処理部20は、第1通信装置3aからSYNパケット(Synchronize packet)を受信する。SYNパケットは、他の通信装置3への接続を要求するための要求パケットの一例である。また、第1通信処理部20は、SYNパケットに続いて、第1通信装置3から、このSYNパケットに後続する、コンテンツデータを含む1以上のパケットを受信する。なお、以下の記載では、SYNパケットに後続するパケットを「後続パケット」と呼ぶことがある。
監視部21は、第1通信処理部20が受信したパケットを取得する。監視部21は、このパケットが高速化処理の対象であるか否かを判定する。
受信パケットに対して高速化処理を実行するか否かを判定するための判定情報は、たとえば、予めユーザにより決められて高速化処理部24に設定されているものとする。この場合、この判定情報は、高速化処理部24から管理部22を介して監視部21に設定される。ただし、判定情報は、管理部22により生成されてもよい。なお、判定情報は、例えば、ポート番号により表される。この場合、指定された宛先ポート番号が設定されているパケットに対して高速化処理が実行される。
監視部21は、第1通信装置3aから受信したパケットが高速化の対象ではないと判定した場合には、このパケットが第2通信装置3bに転送されるように、第2通信処理部25に指示を与える。
監視部21は、第1通信装置3aから受信したパケットがSYNパケットであり、且つ高速化の対象である場合には、そのSYNパケットのヘッダ情報を管理部22に通知する。また、監視部21は、第1通信装置3aから受信したパケットが高速化の対象である場合、その受信パケットのアドレスを変更するよう識別子変更部23に指示を与える。
なお、以下の記載において「アドレス」は、特に断りがない限り、IPアドレスを表すものとする。IPアドレスは、各通信装置や各中継装置を一意的に識別する識別情報または識別子の一例である。第1中継装置2aにSYNパケットおよび後続パケットを送信する第1通信装置3aを識別するためのアドレスは、第1の識別子の一例である。また、第1通信装置3aから送信されるパケットを、第2中継装置2bを介して受信する第2通信装置3bを識別するためのアドレスは、第2の識別子の一例である。
管理部22は、中継装置2内の各機能を管理する。また、管理部22は、パケットを宛先の通信装置3へ転送するための処理およびパケットの送信元を特定するための処理を実行してもよい。
管理部22は、監視部21から通知されたパケットのヘッダ情報から、送信元アドレスおよび宛先アドレスを取得する。管理部22は、監視部21から通知されたヘッダ情報に基づいて、パケットの送信元アドレスおよび宛先アドレスを含む設定情報を生成する。管理部22は、生成した設定情報を第2中継装置2bへ送信するよう第2通信処理部25に指示を与える。このとき、設定情報は、高速化処理の対象を識別するポート番号と共に第2中継装置2bに送信されるようにしてもよい。
管理部22は、高速化処理の対象パケットを高速化処理部24に導くための第1対応情報を生成する。この第1対応情報は、高速化処理の対象パケットに対する応答のためのACK(Acknowledgement)パケットの送信元アドレスを変更するための情報を含む。本実施形態においては、このACKパケットは、高速化処理部24により生成される。このとき、第1通信装置3aから受信したパケットに応答するために高速化処理部24により生成されるACKパケットの送信元アドレスは、第1中継装置2aのアドレスである。第1対応情報は、ACKパケットの送信元アドレスを、SYNパケットおよび後続パケットの宛先である第2通信装置3bのアドレスへ書き換えるために用いられる。なお、これらアドレスの変更は、後述する識別子変更部23により行われる。
第1対応情報においては、SYNパケットおよび後続パケットについて、変更前の宛先アドレスとしての第2通信装置3bのアドレスと、変更後の宛先アドレスとしての高速化処理部24を含む第1中継装置2aのアドレスとが、互いに関係付けられている。また、第1対応情報では、ACKパケットについて、変更後の送信元アドレスとしての第2通信装置3bのアドレスが、SYNパケットおよび後続パケットの送信元であってACKパケットの宛先である第1通信装置3aのアドレスに関係付けられている。なお、第1対応情報において、ACKパケットの変更後の送信元アドレスとしての第2通信装置3bのアドレスと、変更前の送信元アドレスとしての第1中継装置2aのアドレスとが互いに関係付けられていてもよい。また、第1対応情報において、ACKパケットの変更後の送信元アドレスとしての第2通信装置3bのアドレスと、SYNパケットおよび後続パケットの変更前の宛先アドレスとが関係付けられていてもよい。
なお、この実施例では、第1中継装置2aが第1通信装置3aからSYNパケットを受信したときに、管理部22により、第2通信処理部25への設定情報の送信指示および第1対応情報の生成が行われるが、本発明はこの手順に限定されるものではない。
識別子変更部23は、管理部22から第1対応情報を取得する。識別子変更部23は、第1対応情報に基づき、高速化対象のSYNパケットおよび後続パケットの各宛先アドレスを、これらのパケットの高速化処理を行う高速化処理部24を含む第1中継装置2aのアドレスへ書き換える。また、識別子変更部23は、第1対応情報に基づき、ACKパケットの送信元アドレスを、第2通信装置3bのアドレスへ書き換える。
識別子変更部23は、第1対応情報を一時的に記憶する。この実施例では、第1対応情報は、管理部22により生成され、識別子変更部23に通知されるものとする。ただし、本発明はこの方式に限定されず、第1対応情報は、管理部22から設定情報を取得した識別子変更部23により生成されるようにしてもよい。
高速化処理部24は、高速化処理の対象パケットに対し、データ圧縮、重複除去等の高速化処理を行う。この高速化処理は、既知の技術であるため、ここでは説明を省略する。
高速化処理部24は、高速化処理の対象となるSYNパケットおよび後続パケットに対してそれぞれACKパケットを生成することができる。
第2通信処理部25は、指定されたポート番号と中継装置2(又は、通信装置3)のアドレスとを予め対応付けて記憶する。これにより、中継装置2は、通信装置3から受信したパケットを、指定されたポート番号に対応付けられたアドレスに転送できる。なお、この実施例では、高速化処理部24は、ポート番号「80」でパケットを待ち受ける。また、ポート番号「80」に対して第2中継装置2bのアドレスが対応付けられている。よって、高速化処理部24により処理されたパケットは、第2通信処理部25により第2中継装置2bに転送される。また、第2通信処理部25は、管理部22からの指示に基づいて、第2中継装置2bへ設定情報を送信することができる。
次に、ネットワーク4を介してパケットを受信した中継装置2の動作について説明する。ここでは、第2中継装置2bが第1中継装置2aからネットワーク4を介してパケットを受信するものとする。
第2中継装置2bにおいて、第2通信処理部25は、受信パケットの宛先アドレスに応じてそのパケットを処理する。ここで、第1中継装置2aにおいて高速化処理が行われていないパケットの宛先アドレスは第2通信装置3bである。よって、第2通信処理部25は、高速化処理が行われていないパケットを受信した場合には、第1通信処理部20に対し、パケットの宛先アドレスに示される通信装置3に対し、当該パケットを送信するよう指示する。
第2通信処理部25は、設定情報を受信した場合に、この設定情報を、管理部22へ通知する。以下では、第2中継装置2bが第1中継装置2aから受信する設定情報における宛先アドレスおよび送信元アドレスは、それぞれ第2通信装置3bのアドレスおよび第1通信装置3aのアドレスであるものとする。
第1中継装置2aにおいて高速化処理が行われたパケットの宛先アドレスは第2中継装置2bである。よって、第2通信処理部25は、高速化処理が行われたパケットを受信した場合には、これらのパケットを高速化処理部24に転送する。そうすると、高速化処理部24は、高速化処理に対応する高速化後処理を実行する。例えば、高速化処理においてデータが圧縮されたときは、高速化後処理においてデータが復元される。
なお、この実施例では、第2中継装置2bは、SYNパケットに先立ち、設定情報を受信する。ただし、本発明はこの手順に限定されるものではない。例えば、第2中継装置2bは、設定情報およびSYNパケットと同時に受信してもよい。
管理部22は、第2通信処理部25を介して取得した、第1中継装置2aから受信した設定情報を参照し、第2対応情報を生成する。この第2対応情報は、第1中継装置2aから受信したパケットにおける送信元アドレスを第1通信装置3aのアドレスに書き換えるために用いられる。また、第2対応情報は、第1通信装置3aから受信するSYNパケット等に応答するためのACKパケットの宛先アドレスを書き換えるためにも用いられる。
第2対応情報においては、第1中継装置2aから受信するパケットのポート番号と、第2通信装置2bのアドレスとが、互いに関係付けられている。また、第2対応情報においては、SYNパケットおよび後続パケットについて、識別子変更部23による変更後の送信元としての第1通信装置3aのアドレスが、宛先である第2通信装置3bのアドレスに関係付けられている。また、この第2対応情報において、ACKパケットについて、識別子変更部23による変更前の宛先アドレスである第1通信装置3aのアドレスと、変更後の宛先アドレスとしての第2中継装置2bのアドレスが、互いに関係付けられている。
第2対応情報は、この実施例では、管理部22により生成されるものとする。ただし、本発明はこの方式に限定されるものではない。すなわち、第2対応情報は、管理部22から設定情報を取得した識別子変更部23により生成されてもよい。
識別子変更部23は、管理部22から第2対応情報を取得し、この第2対応情報に基づいて、ネットワーク4を介して第2中継装置2bが受信したパケットのアドレスの書き換えを行う。また、識別子変更部23は、第2対応情報に基づいて、第2通信装置3bから受信したACKパケットの宛先アドレスを書き換える。なお、識別子変更部23は、第2対応情報を一時的に保持する。
高速化処理部24は、ネットワーク4を介し受信したパケットに対して高速化処理が行われていた場合、このパケットの高速化後処理を実行する。また、高速化処理部24は、識別子変更部23に対し、高速化後処理の実行後のパケットのアドレスを書き換えるよう指示する。
第1通信処理部20は、宛先アドレスに従ってパケットを送信する。この実施例では、第1通信処理部20は、第2通信装置3bにパケットを送信する。
図2は、中継システム1において、2つの通信装置の間で接続が確立するまでのシーケンスを例示する。以下、図2を参照し、第1中継装置2aおよび第2中継装置2bが、この順番で、第1通信装置3aから第2通信装置3bへのSYNパケットを中継する場合について説明する。
パケットの送受信に先立ち、高速化処理部24は、高速化対象となるパケットの判定基準を管理部22に通知する(ステップS100)。管理部22は、監視部21にこの判定基準を通知する(ステップS101)。判定基準は、例えば、ポート番号で表される。
第1中継装置2aの第1通信処理部20が第1通信装置3aからSYNパケットを受信すると(ステップS102)、監視部21は、このSYNパケットを読み込む(ステップS103)。監視部21は、このSYNパケットにより要求される接続が高速化処理の対象か否かを判定する(ステップS104)。
ステップS104において、SYNパケットにより要求される接続が高速化処理の対象ではないときは、第2通信処理部25は、このSYNパケットを第2通信装置3bへ送信する(ステップS105)。この場合、SYNパケットに対する高速化処理は行われない。
なお、第1中継装置2aにおいて第1通信装置3aから受信するパケットに対して高速化処理が行われなければ、そのパケットの送信元アドレスは第1通信装置3aのアドレスのままである。この場合、第2通信装置3bは、このパケットの送信元を特定できる。これに対して、第1中継装置2aにおいて第1通信装置3aから受信するパケットに対して高速化処理が行われると、そのパケットの送信元アドレスは、第1中継装置2aのアドレスに変換されてしまう。この場合、第2通信装置3bは、このパケットの送信元を特定できない。従って、高速化処理が行われるケースでは、ステップS106以降の処理が実行される。
ステップS104においてSYNパケットにより要求される接続が高速化処理の対象であると判定された場合、監視部21は、管理部22にこのSYNパケットのヘッダ情報を通知する(ステップS106)。管理部22は、通知されたヘッダ情報を用いて、このSYNパケットの送信元である第1通信装置3aのアドレスと、宛先である第2通信装置3bのアドレスとを含む設定情報を生成する。管理部22は、設定情報を第2中継装置2bへ送信するよう第2通信処理部25に指示する(ステップS107)。第2通信処理部25は、第2中継装置2bへ設定情報を送信する。
第2中継装置2bの第2通信処理部25は、第1中継装置2aから受信した設定情報を管理部22へ通知する(ステップS108)。管理部22は、受信した設定情報に基づいて第2対応情報を生成する。管理部22は、生成した第2対応情報を識別子変更部23に通知する(ステップS109)。
第2対応情報では、第1中継装置2aから受信するパケットのポート番号と第2通信装置2bのアドレスとが互いに関係付けられている。また、第2対応情報では、SYNパケットおよび後続パケットについて、変更後の送信元としての第1通信装置3aのアドレスが、宛先である第2通信装置3bのアドレスに関係付けられている。さらに、第2対応情報では、ACKパケットについて、変更前の宛先アドレスである第1通信装置3aのアドレスと、変更後の宛先アドレスとしての第2中継装置2bのアドレスが、互いに関係付けられている。
識別子変更部23は、この第2対応情報を、最後の後続パケットとこれに応答するためのACKパケットについての各処理を終えるまで保持する。
第1中継装置2aの管理部22は、SYNパケットのヘッダ情報に基づいて、第1対応情報を生成する。第1対応情報では、SYNパケットおよび後続パケットについて、変更前の宛先アドレスである第2通信装置3bのアドレスと、変更後の宛先アドレスとしての高速化処理部24を含む第1中継装置2aのアドレスとが、互いに関係付けられている。また、上述したように、第1対応情報では、ACKパケットについて、変更後の送信元アドレスとしての第2通信装置3bのアドレスが、宛先である第1通信装置3aのアドレスに関係付けられている。
第1通信装置3aにおいて、管理部22は、第1対応情報を識別子変更部23に通知する(ステップS110)。識別子変更部23は、第1対応情報を、最後の後続パケットとこれに応答するためのACKについての各処理の終了まで保持する。
なお、ステップS110の処理は、ステップS107~S109のいずれかと同時、又はこれらのうちの少なくとも1つの処理に先んじて行われてもよい。
第1中継装置2aにおいて、監視部21は、識別子変更部23に対し、ステップS102、S103で取得したSYNパケットのアドレスの変更を行うよう指示する(ステップS111)。そうすると、識別子変更部23は、第1対応情報に基づいて、SYNパケットの宛先アドレスを書き換える(ステップS112)。具体的には、第1通信装置3aから受信したSYNパケットの宛先が第2通信装置3bであることから、識別子変更部23は、SYNパケットの宛先アドレスを第2通信装置3bのアドレスから第1中継装置2aのアドレス(ここでは、高速化処理部24を識別するアドレス)に書き換える。
識別子変更部23は、高速化処理部24にSYNパケットの高速化処理を指示する(ステップS113)。
高速化処理部24は、ステップS103における識別子変更部23からの指示に応じて、SYNパケットに対し高速化処理を行い、またSYNパケットに対するACKパケットを生成する(ステップS114)。
高速化処理部24は、高速化処理後のSYNパケットを送信するよう第2通信処理部25に指示を行う。第2通信処理部25は、この指示に従い、ポート番号に基づいて、SYNパケットを第2中継装置2bへ送信する(ステップS115)。
高速化処理部24は、識別子変更部23にACKパケットの送信元アドレスの変更を指示する(ステップS116)。なお、ステップS116の処理は、ステップS115の処理と同時に、またはステップS115の処理の前に実行されてもよい。
識別子変更部23は、高速化処理部24からの指示に従って、第1対応情報に基づき、ACKパケットの送信元アドレスを書き換える(ステップS117)。具体的には、高速化処理部24により生成されたACKパケットの送信元アドレスが第1中継装置2aのアドレスであることから、識別子変更部23は、その送信元アドレスを第2通信装置3bのアドレスに書き換える。
送信元アドレスが書き換えられたACKパケットは、第1通信処理部20により第1通信装置3aに送信される(ステップS118~S119)。そうすると、第1通信装置3aは、ACKパケットの受信処理を実行する(ステップS120)。このとき、第1通信装置3aは、ACKパケットの送信元アドレスに基づいて、SYNパケットが第2通信装置3bにより受信されたと判定する。
一方、第2中継装置2bにおいて、第2通信処理部25は、第1中継装置2aから送信されたSYNパケットを受信する。第2通信処理部25は、SYNパケットに対し高速化処理が行われているか否かを判定する。ここでは、SNYパケットに対して高速化処理が行われているものとする。この場合、第2通信処理部25は、高速化処理部24に高速化後処理を指示する(ステップS121)。なお、ステップS121の処理は、ステップS116~S120のいずれかと同時に、又はこれらの処理のうちの少なくとも1つの処理に先んじて実行されてもよい。
高速化処理部24は、ステップS121における第2通信処理部25からの指示に応じ、SYNパケットに対して高速化後処理を実行する(ステップS122)。そして、高速化処理部24は、高速化後処理後のSYNパケットのアドレスを変更するよう識別子変更部23へ指示する(ステップS123)。
識別子変更部23は、SYNパケットの送信元アドレスを第2対応情報に基づいて書き換える(ステップS124)。この例では、高速化後処理後のSYNパケットの送信元アドレスは、第2中継装置2bのアドレスである。このため、識別子変更部23は、SYNパケットの送信元アドレスを、ポート番号等に基づいて第1通信装置3aのアドレスに書き換える。
識別子変更部23は、アドレス変更後のSYNパケットを第2通信装置3へ送信するよう第1通信処理部20へ指示を行う(ステップS125)。第1通信処理部20は、このSYNパケットを第2通信装置3bに転送する(ステップS126)。
第2通信装置3は、SYNパケットを受信する(ステップS127)。このとき、SYNパケットの送信元アドレスは、識別子変更部23により第1通信装置3aのアドレスに書き換えられている。よって、第2通信装置3bは、SYNパケットの送信元が第1通信装置3aであると認識する。
第2通信装置3bは、このSYNパケットに応じて、第1通信装置3aを宛先とするACKパケットを第2中継装置2bに送信する(ステップS128)。第2中継装置2bの第1通信処理部20は、第2通信装置3bから受信したACKパケットを監視部21に導く(ステップS129)。
監視部21は、第1通信処理部20から取得したACKパケットが、高速化の対象であるか否か判定する(ステップS130)。このACKパケットは、高速化の対象のACKパケットであるものとする。この場合、監視部21は、識別子変更部23に対し、ACKパケットのアドレス変更の指示を行う(ステップS131)。
識別子変更部23は、第2対応情報に基づいて、ACKパケットのアドレスを書き換える(ステップS132)。この例では、第2通信装置3bから受信したACKパケットの宛先アドレスは、第1通信装置3aのアドレスであるので、識別子変更部23は、ACKパケットの宛先アドレスを、第1通信装置3aのアドレスから第2中継装置3bのアドレスへと書き換える。この結果、このACKパケットは、第2中継装置2の高速化処理部24に導かれる(ステップS133)。高速化処理部24は、ACKパケットの受信処理を行う(ステップS134)。
このように、第1中継装置2aは、第1通信装置3aから第2通信装置3bへの接続を要求するSYNパケットのヘッダ情報に基づいて第1対応情報を生成する。また、第2中継装置2bは、第1中継装置2aにおいてSYNパケットのヘッダ情報から生成される設定情報を受信し、その設定情報に基づいて第2対応情報を生成する。そして、高速化処理の対象のパケットは、第1対応情報および第2対応情報に基づいて、その送信元アドレスおよび宛先アドレスが書き換えられる。従って、中継装置2(2a、2b)により高速化処理が実行される中継システム1において、通信装置3は、受信パケットの送信元を認識できる。また、中継装置2は、適切な通信装置3に対し、パケットを転送できる。
図3は、本実施形態に係る中継システム1におけるアドレスの一例を示す。ここでは、図1に示す第1通信装置3a、第1中継装置2a、第2中継装置2b、第2通信装置3bに加えて第3通信装置3cが実装されている。以下の記載では、図2に示すシーケンスを実行することにより、受信側の通信装置3がパケットの送信元を認識できることについて説明する。
この実施例では、図3に示すように、FQDN「xyz.com」に対してIPアドレス「192.168.3.2」および「192.168.3.3」が割り当てられているものとする。
また、この実施例では、第1通信装置3a、第2通信装置3b、第2通信装置3cのIPアドレスは、それぞれ「192.168.1.1」、「192.168.3.2」、「192.168.3.3」である。また、第1中継装置2a、第2中継装置2bのIPアドレスは、それぞれ「192.168.1.2」、「192.168.3.1」である。
さらに、この実施例では、第1中継装置2aにおいて、予め下記の初期設定が行われるものとする。
(1)高速化処理部24は、80番ポートでパケットを待ち受ける。
(2)高速化処理が実行されたパケットは、第2中継装置2b「192.168.3.1:80」に導かれる。
図4は、第1中継装置2aにおけるアドレスの設定方法を例示する図である。
第1通信装置3aを送信元とするSYNパケットの宛先FQDNは「xyz.com」である。FQDNに対応するIPアドレスは、不図示のDNS(Domain Name System)サーバにより解決される。この実施例では、「xyz.com」に対応するIPアドレスは「192.168.3.2」である。
第1中継装置2aに実装される高速化処理部24は、宛先ポート番号が80であるパケットを待ち受ける。また、高速化処理が行われたパケットの転送先として、第2中継装置2bのIPアドレス「192.168.3.1」が予め設定されている。
第1中継装置2aは、SYNパケットの送信元IPアドレス「192.168.1.1」と宛先IPアドレス「192.168.3.2」とを対応付けた設定情報を生成し、第2中継装置2bへ送信する。
図4に示す第1対応情報は、下記の2つの対応関係を表す。
(1)受信パケットの宛先アドレスが「192.168.3.2:80」であるときに、その宛先アドレスを「192.168.1.2:80」に書き換えるための対応関係
(2)受信パケットの宛先アドレスが「192.168.1.1:1234」であるときに、その送信元アドレスを「192.168.3.2:80」に書き換えるための対応関係
上述の第1対応情報が設定されると、図4に示すSYNパケットの宛先アドレス「192.168.3.2」は、識別子変更部23により「192.168.1.2」に書き換えられる。また、図4に示すACKパケットの送信元アドレス「192.168.1.2」は、識別子変更部23により「192.168.3.2」と書き換えられる。
図5は、第2中継装置2bにおけるアドレスの設定方法を例示する図である。
第2中継装置2bは、第1中継装置2aから受信した設定情報に基づいて、第1中継装置2aから受信するパケットの転送先のアドレスを設定する。この実施例では、ポート番号80に対応づけて「192.168.3.2」が設定される。この場合、第2中継装置2bは、宛先ポート番号が80であるパケットをアドレス「192.168.3.2」に転送する。また、第2中継装置2bは、第1中継装置2aから受信した設定情報に基づいて、第2対応情報を生成する。
図5に示す第2対応情報は、下記の2つの対応関係を表す。
(1)受信パケットの宛先アドレスが「192.168.3.2:80」であるときに、その送信元アドレスを「192.168.1.1:1234」に書き換えるための対応関係
(2)受信パケットの宛先アドレスが「192.168.1.1:1234」であるときに、その宛先アドレスを「192.168.3.1:1234」に書き換えるための対応関係
上述の第2対応情報が設定されると、図5に示すSYNパケットの送信元アドレス「192.168.3.1」は、識別子変更部23により「192.168.1.1」と書き換えられる。また、図5に示すACKパケットの宛先アドレス「192.168.1.1」は、識別子変更部23により「192.168.3.1」と書き換えられる。
このように、第1中継装置2aおよび第2中継装置2bは、SYNパケットを利用して、第1対応情報および第2対応情報を生成する。そして、第1中継装置2aおよび第2中継装置2bは、第1対応情報および第2対応情報に基づいて、パケットの送信元アドレスおよび宛先アドレスを書き換える。第1対応情報および第2対応情報は、最後の後続パケットと、これに応答するためのACKパケットの各処理を終えるまで保持される。
図6は、本実施形態に係る中継システム1において、2つの通信装置の間で接続が確立されてからのシーケンスを例示する。
図6においては、後続パケットを「CONTENT」とも記載する。また、図2を参照して説明した手順により第1通信装置3aと第2通信装置3bとが接続された後、第1通信装置3aから第2通信装置3bに後続パケットが送信されるものとする。なお、第1通信装置3aから第2通信装置3bへ送信される各後続パケットには、送信元として第1通信装置3aのアドレスが設定され、宛先として第2通信装置3bのアドレスが設定されている。
第1中継装置2aの第1通信処理部20が第1通信装置3aから後続パケットを受信すると(ステップS200)、監視部21は、この後続パケットを読み込み(ステップS201)、この後続パケットが高速化の対象か否かを判定する(ステップS202)。一例としては、受信パケットのポート番号に基づいて、各パケットが高速化処理の対象か否かが判定される。
監視部21は、後続パケットが高速化の対象ではないと判定した場合、第2通信処理部25へ、この後続パケットを第2通信装置3bへと送信するよう指示する(ステップS203)。この場合、後続パケットに対する高速化処理は行われない。
後続パケットが高速化の対象であると判定された場合、監視部21は、識別子変更部23に対し、後続パケットのアドレスの変更を行うよう指示する(ステップS204)。
識別子変更部23は、第1対応情報に基づいて、後続パケットの宛先アドレスを、第2通信装置3bのアドレスから第1中継装置2aのアドレスへと書き換える(ステップS205)。この例では、後続パケットの宛先アドレスが第2通信装置3bのアドレスであるので、識別子変更部23は、その宛先を第1中継装置2a内の高速化処理部24にするため、宛先アドレスを第1中継装置2aのアドレスに書き換える。この結果、後続パケットは、高速化処理部24に導かれる(ステップS206)。
高速化処理部24は、識別子変更部23からの指示に応じて、後続パケットに対し高速化処理を行う。また、高速化処理部24は、後続パケットに対するACKパケットを生成する(ステップS207)。
高速化処理部24は、高速化処理後の後続パケットを送信するよう第2通信処理部25に指示を行う。第2通信処理部25は、この指示に従い、この後続パケットを第2中継装置2bへ送信する(ステップS208)。
高速化処理部24は、識別子変更部23にACKパケットの送信元アドレスの変更を指示する(ステップS209)。なお、ステップS209の処理は、ステップS208の処理と同時又はこれに先んじて行われてもよい。
識別子変更部23は、高速化処理部24からの指示に従って、第1対応情報に基づき、ACKパケットの送信元アドレスを書き換える(ステップS210)。この例では、ACKパケットの宛先アドレスが第1通信装置3aを表しているので、識別子変更部23は、このACKパケットの送信元アドレスを第2通信装置3bのアドレスに書き換える。
識別子変更部23は、第1通信処理部20に対し、ACKパケットを第1通信装置3に送信するよう指示する(ステップS211)。
第1通信処理部20は、第1通信装置3aにACKパケットを送信する(ステップS212)。第1通信装置3aは、ACKパケットの受信処理を実行する(ステップS213)。このとき、このACKパケットの送信元アドレスは、識別子変更部23により第2通信装置3bに書き換えられている。よって、第1通信装置3aは、後続パケットの送信先である第2通信装置3からACKパケットを受信したと認識する。
第2中継装置2bの第2通信処理部25は、ステップS208で送信された後続パケットを受信する。第2通信処理部25は、後続パケットに対し高速化処理が行われたものと判定し、高速化処理部24に高速化後処理を指示する(ステップS214)。このステップS214の処理は、ステップS209~S212のいずれかと同時、又はこれらの処理のうちの少なくとも1つの処理に先んじて行われてもよい。
高速化処理部24は、ステップS214における第2通信処理部25からの指示に応じ、後続パケットの高速化後処理を実行する(ステップS215)。高速化処理部24は、高速化後処理後の後続パケットのアドレスを変更するよう識別子変更部23へ指示する(ステップS216)。
識別子変更部23は、後続パケットの送信元アドレスを第2対応情報に基づいて書き換える(ステップS217)。この例では、高速化後処理後の後続パケットの送信元アドレスは第2中継装置2bを表している。そして、識別子変更部23は、後続パケットの送信元アドレスを、第2対応情報に基づいて、第1通信装置3aのアドレスへと変更する。
識別子変更部23は、アドレス変更後の後続パケットを第2通信装置3bへ送信するよう第1通信処理部20へ指示を行う(ステップS218)。
第1通信処理部20は、第2通信装置3bへ後続パケットを転送する(ステップS219)。第2通信装置3bは、後続パケットの受信処理を行う(ステップS220)。このとき、この後続パケットの送信元アドレスは、識別子変更部23により第1通信装置3aに書き換えられている。よって、第2通信装置3bは、後続パケットの送信元が第1通信装置3aであると認識する。そして、第2通信装置3bは、第1通信装置3aを宛先とするACKパケットを第2中継装置2bに送信する(ステップS221)。
第2中継装置2bの第1通信処理部20は、第2通信装置3bからACKパケットを受信し、監視部21にACKパケットを導く(ステップS222)。
監視部21は、第1通信処理部20から取得したACKパケットが、高速化の対象であるか否か判定する(ステップS223)。このACKパケットは、高速化の対象であることから、監視部21は、識別子変更部23に対し、ACKパケットのアドレス変更の指示を行う(ステップS224)。
識別子変更部23は、監視部21からの指示に基づいて、ACKパケットのアドレスを書き換える(ステップS225)。この例では、ACKパケットの宛先アドレスが第1通信装置3aを表しているので、識別子変更部23は、このACKパケットの宛先アドレスを、第2中継装置3bのアドレスへと書き換える。この結果、このACKパケットは、高速化処理部24に導かれる(ステップS226)。そして、高速化処理部24は、ACKパケットの受信処理を行う(ステップS227)。
図7は、本実施形態に係る中継装置2のハードウェア構成を例示する。ここでは、中継装置2は、一般的なコンピュータとしてハードウェアを有し、中継装置2による処理は、以下に示すハードウェア5を利用することにより実行される。
ハードウェア5は、互いにバス54によって接続されたプロセッサ50、メモリ51、第1通信インターフェース回路52、および第2通信インターフェース回路53等を備える。
プロセッサ50は、例えばシングルコア、デュアルコア、またはマルチコアのプロセッサである。
メモリ51は、例えばROM(Read Only Memory)、RAM(Random Access Memory)、若しくは半導体メモリ等、又はこれらの組み合わせである。
プロセッサ50が、メモリ51に記憶されたプログラム(通信中継制御プログラムを含む)を実行することにより、監視部21、管理部22、識別子変更部23、および高速化処理部24の各機能が実現され得る。
第1通信インターフェース回路52および第2通信インターフェース回路53は、インターネット、イントラネット、又は専用線等を介し、中継装置2が、他の中継装置2や通信装置3との間で、情報の授受を行うための回路である。プロセッサ50がメモリ51に記憶された情報を用いて処理を行い、第1、2通信インターフェース回路52、53を用いて通信を行うことにより、第1通信処理部20、第2通信処理部25の各機能が実現される。また、図3~図5に示すNICは、第1通信インターフェース回路52および第2通信インターフェース回路53の組み合わせの一例である。
なお、上述した場合以外にも、図1に示す中継装置2の機能ブロックの全て、又はその一部の機能は、適宜、専用のハードウェアにより実現されてもよい。
図8は、従来の中継装置を用いた場合と、本実施形態に係る中継装置2を用いた場合の各通信について説明するための図である。
図8におけるサーバA、Bは、それぞれ通信装置3の一例である。プロキシサーバP、Qは、それぞれ従来の中継装置の一例である。またプロキシサーバS、Tは、それぞれ本実施形態に係る中継装置2の一例である。なお、図8における「プロキシ」とは、プロキシサーバを意味する。
図8(a)に示すように、従来の中継装置を用いた場合であって、サーバAから宛先をサーバBとするパケットが送信され、プロキシサーバP、Qがこのパケットを中継する場合について説明する。
サーバAにおいては、パケットの最終宛先となるサーバBではなく、このパケットを最初に中継するプロキシサーバPが、パケットの送信先として設定されなければならない。また、サーバAからのパケットを最初に受信するプロキシサーバPにおいては、このパケットの次の転送先であるプロキシサーバQが、パケットの送信先として設定されなければならない。
ここで、プロキシサーバPから送信されるパケットの送信元アドレスは、プロキシサーバPのアドレスに置き換えられてしまう。そして、プロキシサーバPからパケットを受信したプロキシサーバQは、サーバBにこのパケットを送信する。この際、プロキシサーバQから送信されるパケットの送信元アドレスは、プロキシサーバQのアドレスに置き換えられる。この結果、サーバBは、受信したパケットの送信元サーバを特定できない。
本実施形態に係る中継装置2が使用されるケースでは、図8(b)に示すように、サーバAから宛先をサーバBとするパケットが送信され、プロキシサーバS、Tがこのパケットを中継する。
プロキシサーバSにおいては、予め、サーバAからのパケットを受信するために使用するポート番号に対応付け、このパケットの次の転送先としてプロキシサーバTのアドレスが設定されている。このため、サーバAにおいては、上述した従来技術の場合のように、送信するパケットの宛先をサーバBではなくプロキシサーバSとするような設定は不要である。なお、高速化処理を行うか否かの判定は、プロキシサーバSにおいて行われ、その判定結果により自動的に高速化処理部24へパケットが導かれる。
プロキシサーバSは、サーバAからの接続要求に係るパケット(SYNパケット)を受信し、このパケットのヘッダ情報から送信元アドレスおよび宛先アドレスを取得し、これらを含む設定情報を生成する。プロキシサーバSは、パケットの送信に先立って、サーバAからのパケットの次の転送先となるプロキシサーバTに対して設定情報を通知する。プロキシサーバSは、サーバAから、SYNパケットと後続パケットを受信し、これらをプロキシサーバTへ転送する。
なお、プロキシサーバSからプロキシサーバTへのパケットを転送するための設定は、ここでは不要である。上述したように、プロキシサーバSにおいて、サーバAからのパケットのポート番号に対応付け、このパケットの次の送信先としてのプロキシサーバTのアドレスが設定されているからである。
プロキシサーバTは、受信パケットに対して高速化後処理を実行する。このとき、このパケットの送信元アドレスは、プロキシサーバTのアドレスに変換される。続いて、プロキシサーバTは、このパケットの送信元アドレスを、第2対応情報に基づいて、本来の送信元であるサーバAのアドレスへと書き換える。そして、プロキシサーバTは、パケットをサーバBへ送信する。なお、パケットの宛先を表す情報は、上述したように、プロキシサーバSから通知される設定情報に基づいてプロキシサーバTに設定されている。
サーバBでは、プロキシサーバTによる送信元アドレスの変更により、パケットの送信元アドレスがサーバAを表している。これにより、サーバBは、パケットの発信元を特定することができる。
以上説明したように、本実施形態に係る中継装置2によれば、データを受信する通信装置がその送信元を特定でき、また簡便な設定で高速通信を実現できる。
<第2の実施形態>
本発明の第2の実施形態は、図1~図6に示す実施形態を前提とする。よって、第2の実施形態を説明する前に、図1~図6に示す実施形態に係わるアドレス変換のための設定について簡単に記載する。
図9は、アドレス変換のための設定の概要を示す。この実施例では、中継装置2aに通信装置3aが接続され、中継装置2bに通信装置3bが接続されている。中継装置2a、2b間は、例えば、WANにより接続されている。そして、通信装置3aに実装されるクライアントから通信装置3bに実装されるサーバにデータが送信されるものとする。このとき、中継装置2a、2bにより高速化処理が行われる。
中継装置2aにおいて以下の初期設定が行われているものとする。
(1)ポート番号80が付与されたパケットに対して高速化処理を実行する
(2)高速化処理が行われたパケットは、中継装置2bに転送する
この初期設定は、例えば、ユーザにより行われる。
通信装置3aは、通信装置3bとの接続を要求するSYNパケットを生成する。SYNパケットのヘッダ情報は、送信元情報および宛先情報を含んでいる。送信元情報は通信装置3a(ポート番号は、1234)を表し、宛先情報は通信装置3b(ポート番号は、80)を表す。このSYNパケットは、中継装置2aにより受信される。
中継装置2aは、受信したSYNパケットのヘッダから上述した送信元情報および宛先情報を抽出する。SYNパケットのヘッダから抽出された送信元情報および宛先情報は、中継装置2a、2bにおいて対応情報を生成するために使用される。
中継装置2aは、設定情報に基づいて、下記の対応情報A1~A2を生成する。
対応情報A1:宛先が通信装置3bであるパケットを受信したときは、そのパケットの宛先を中継装置2aに書き換える。
対応情報A2:宛先が通信装置3aであるパケットを受信したときは、そのパケットの送信元を通信装置3bに書き換える。
ここで、図9に示す「対象宛先」は、アドレスを書き換えるべきパケットを抽出する条件を表す。また、「新宛先」は、書換え後の宛先アドレスを表し、「新送信元」は、書換え後の送信元アドレスを表す。
なお、対応情報A1の対象宛先は、SYNパケットの宛先情報から得られる。対応情報A1の新宛先は、中継装置2a自身のアドレスを表す。対応情報A2の対象宛先は、SYNパケットの送信元情報から得られる。対応情報A1の新送信元は、SYNパケットの宛先情報から得られる。
中継装置2bは、設定情報に基づいて、下記の中継情報B1および対応情報B2~B3を生成する。
中継情報B1:高速化後処理が行われたパケットは、通信装置3bに転送する。
対応情報B2:宛先が通信装置3aであるパケットを受信したときは、そのパケットの宛先を中継装置2bに書き換える。
対応情報B3:宛先が通信装置3bであるパケットを受信したときは、そのパケットの送信元を通信装置3aに書き換える。
なお、中継情報B1は、SYNパケットの宛先情報から得られる。対応情報B2の対象宛先は、SYNパケットの送信元情報から得られる。対応情報B2の新宛先は、中継装置2b自身のアドレスを表す。対応情報B3の対象宛先は、SYNパケットの宛先情報から得られる。対応情報B3の新送信元は、SYNパケットの送信元情報から得られる。
図10は、図9に示す手順で対応情報が生成された後に実行されるパケット転送の一例を示す。この例では、通信装置3aから通信装置3bにデータパケットが送信される。この実施例では、通信装置3aから送信されるデータパケットD1の送信元情報および宛先情報は、それぞれ「3a(1234)」および「3b(80)」である。なお、括弧内の数字は、ポート番号を表す。そして、このデータパケットは、中継装置2aにより受信される。
中継装置2aにおいて、通信装置3aから受信したデータパケットD1の宛先情報は、対応情報A1の対象宛先と一致する。この場合、中継装置2aは、対応情報A1に基づいて、データパケットD1の宛先情報を「3b(80)」から「2a(80)」に書き換える。このアドレス変換により、データパケットD2が生成される。ここで、データパケットD2の宛先情報は、中継装置2aの高速化処理部を表す。よって、中継装置2aは、高速化処理部を用いてデータパケットD2に対して高速化処理を行い、データパケットD3を生成する。なお、高速化処理部から出力されるデータパケットD3の送信元情報は、中継装置2aを表す。また、データパケットD3の宛先情報には、初期設定に従って、「2b(80)」が設定される。よって、データパケットD3は、中継装置2aから中継装置2bに送信される。
中継装置2bにおいて、受信したデータパケットD3の宛先情報は、中継装置2bを表している。よって、中継装置2bは、高速化処理部を用いてデータパケットD3に対して高速化後処理を行い、データパケットD4を生成する。なお、高速化処理部から出力されるデータパケットD4の送信元情報は、中継装置2bを表す。また、データパケットD4の宛先情報には、中継情報B1に従って、「3b(80)」が設定される。
更に、データパケットD4の宛先情報は、対応情報B3の対象宛先と一致する。この場合、中継装置2bは、対応情報B3に基づいて、データパケットD4の送信元情報を「2b(1234)」から「3a(1234)」に書き換える。このアドレス変換により、データパケットD5が生成される。この後、データパケットD5は、宛先情報に従って通信装置3aに送信される。
通信装置3aは、中継装置3bからデータパケットD5を受信する。ここで、データパケットD5の送信元情報は、中継装置2bにおいて「3a(1234)」に書き換えられている。したがって、通信装置3aは、受信したデータパケットの送信元が通信装置3aであることを認識できる。
なお、図9~図10に示す高速化処理部は、図1に示す高速化処理部24に相当する。また、図9~図10に示す「監視/書換え」は、図1に示す監視部21および識別子変更部23に相当する。図9~図10に示す「書換え」は、図1に示す識別子変更部23に相当する。
第2の実施形態では、図9~図10に示す通信システムにおいて、ポート番号が動的に決定されるアプリケーションによりデータ伝送が行われる。例えば、ファイル転送プロトコルとして広く普及しているFTP(File Transfer Protocol)においては、TCPポート番号が動的に決定され得る。
図11は、FTPのセッションの一例を示す。FTPにおいては、制御コネクションおよびデータコネクションが確立される。また、FTPでは、通常、20番ポートおよび21番ポートが使用される。よって、この実施例では、サーバは、20番ポートを使用して制御コネクションを確立し、21番ポートを使用してデータコネクションを確立するものとする。なお、クライアントのポートは、未使用ポートの中から動的に割り当てられるものとする。図11に示す例では、制御コネクションに対して3001番ポートが割り当てられ、データコネクションに対して3002番ポートが割り当てられる。
FTPにおいては、まず、クライアントとサーバとの間で認証手順が実行される。例えば、クライアントは、サーバに接続開始コマンドを送信する。サーバは、接続開始コマンドを受け付けると、クライアントにservice readyメッセージを送信する。クライアントは、サーバにユーザ名を送信する。サーバは、ユーザ名を受け付けると、クライアントに対してパスワードを要求する。クライアントは、サーバにパスワードを送信する。サーバは、受信したパスワードがユーザ名に対応していれば、ログインを許可する。
続いて、クライアントとサーバとの間で接続準備手順が実行される。例えば、クライアントは、サーバにTYPEコマンドを送信する。サーバは、TYPEコマンドを受け付けると、クライアントにtype setメッセージを送信する。クライアントは、サーバにポートコマンド(PORT)を送信する。ここで、ポートコマンドは、データコネクションに対して割り当てられたポート番号をサーバに通知するために使用される。よって、図11に示す実施例では、ポートコマンドは「ポート番号:3002」を含む。サーバは、ポートコマンドを受け付けると、クライアントにPORT command OKメッセージを送信する。
上述の接続準備手順により、サーバは、クライアントのポート番号を認識する。したがって、以降のデータ転送手順では、サーバは、通知されたポート番号を指定してクライアントにデータを送信する。例えば、図11に示す例では、サーバは、クライアントの3002番ポートに「data connection接続開始」および「directory list send」を送信する。
ところが、ポート番号が動的に決定されるアプリケーションに図1~図6に示す高速化を適用することは困難である。例えば、図11に示すFTPセッションにおいては、サーバからクライアントにデータを伝送するデータコネクションに図9~図10に示す高速化を適用することは困難である。
図12~図13は、ポート番号が動的に決定されるケースの課題の一例を示す。なお、図12~図13に示すクライアントおよびサーバは、図1~図6または図9~図10に示す例では、それぞれ通信装置3aおよび通信装置3bに実装される。図12~図13に示す送受信部(Tx/Rx)20a、監視部21a、識別子変更部23a、管理部22a、高速化処理部24a、送受信部(Tx/Rx)25aは、図1~図6または図9~図10に示す例では、それぞれ中継装置2aに実装される通信処理部20、監視部21、識別子変更部23、管理部22、高速化処理部24、通信処理部25に相当する。図12~図13に示す送受信部(Tx/Rx)20b、監視部21b、識別子変更部23b、管理部22b、高速化処理部24b、送受信部(Tx/Rx)25bは、図1~図6または図9~図10に示す例では、それぞれ中継装置2bに実装される通信処理部20、監視部21、識別子変更部23、管理部22、高速化処理部24、通信処理部25に相当する。
上記構成の通信システムにおいて、サーバは、上述したように、21番ポートを使用して制御コネクションを確立する。したがって、中継装置2aにおいて、高速化処理部24aは、21番ポートでパケットを待ち受ける。また、高速化処理部24aは、監視情報を生成する。監視情報は、監視対象のポート番号が「21」であることを表す。そして、監視情報は、管理部22aを介して監視部21aに与えられる。なお、図12に示す監視情報は、図1~図6に示す実施例においては、判定基準に相当する。
クライアントは、サーバにデータパケットを送信する。ここで、クライアントは、高速化処理を要求するものとする。この場合、データパケットの宛先ポート番号は「21」である。また、データパケットは、例えば、図11に示すポートコマンドに相当する。したがって、このデータパケットのペイロードには、クライアントにおけるデータコネクションの待受けポート番号を表す待受けポート番号情報が格納されている。この実施例では、待受けポート番号情報は「3002」を表す。
このデータパケットの宛先ポート番号は「21」である。すなわち、このデータパケットは、高速化処理の対象である。したがって、識別子変更部23aは、このデータパケットが高速化処理部24aに導かれるように宛先アドレスを書き換える。また、高速化処理部24aは、このデータパケットに対して高速化処理を実行する。そして、送受信部25aは、このデータパケットを中継装置2bに送信する。
中継装置2bにおいて、高速化処理部24bにより高速化後処理が実行される。また、識別子変更部23bは、受信したデータパケットの送信元アドレスを通信装置3aのアドレスに変更する。そして、サーバは、このデータパケットを受信する。
サーバは、受信したデータパケットから待受けポート番号情報を抽出することにより、クライアントにおけるデータコネクションの待受けポート番号が「3002」であることを認識する。この後、サーバは、受信したデータパケットに対応するACKパケットを生成する。このACKパケットは、中継装置2bにおいて高速化処理部24bにより終端される。
また、中継装置2aにおいて、高速化処理部24aもデータパケットに対応するACKパケットを生成する。このACKパケットは、通信装置3aに転送され、クライアントにより終端される。
この後、サーバは、データコネクションを介して、クライアントにデータを送信するものとする。したがって、サーバは、クライアントに送信するデータパケットの宛先ポート番号に「3002」を設定する。
ところが、図12に示す手順では、中継装置2bにおいて、クライアントにおけるデータコネクションの待受けポート番号をモニタするための監視情報が設定されていない。具体的には、図13に示すように、宛先ポート番号が「3002」であるデータパケットを識別子変更部23bに導くための監視情報が監視部21bに設定されていない。また、高速化処理部24bには、3002番ポートでデータパケットを待ち受けるための監視情報が設定されていない。
このため、サーバからクライアントに向けて送信されたデータパケットは、識別子変更部23bおよび高速化処理部24bを経由することなく、監視部21bから送受信部25bに導かれる。送受信部25bは、このデータパケットを中継装置2aに送信する。そして、中継装置2aは、このデータパケットをクライアントに導く。すなわち、サーバからクライアントに送信されるデータパケットに対して高速化処理が行われない。
このように、ポート番号が動的に決定される通信システムでは、データパケットに対して高速化処理を実行できないことがある。そこで、本発明の第2の実施形態に係わる中継装置2は、ポート番号が動的に決定される通信システムであっても、データパケットに対して高速化処理を実行できるようにするための機能を備える。具体的には、以下の手順が実行される。
手順1:クライアントは、空きポートの中から、データコネクションを介してパケットを受信するためのポート番号を決定する。
手順2:クライアントは、待受けポート番号情報をサーバに送信する。待受けポート番号情報は、図11に示すFTPセッションでは、例えば、ポートコマンド(PORT)を使用して送信される。待受けポート番号情報「X,X,X,X,A,B」において、「X,X,X,X」はIPアドレスを表す。また、ポート番号Mは、1セットの整数Aおよび整数Bを用いて表わされる。一例としては、M=256*A+Bである。この場合、例えば、3002番ポートは、「A=11」および「B=186」により表される。
手順3:サーバ側の中継装置2bは、受信パケットから待受けポート番号情報を抽出する。そして、中継装置2bにおいて、待受けポート番号情報により指定されるポート番号を有するパケットが識別子変更部に導かれるように監視部に監視情報が設定される。加えて、待受けポート番号情報により指定されるポート番号を有するパケットに対して高速化処理を実行するための設定が行われる。
手順4:中継装置2bは、受信パケットをサーバに転送する。
手順5:データ転送が終了したときは、手順3による設定が削除される。
図14~図15は、第2の実施形態においてデータコネクションを確立するシーケンスの一例を示す。ここで、通信装置3aに実装されるクライアントから通信装置3bに実装されるサーバに待受けポート番号情報を含むデータパケットを転送する手順は、図12および図14において実質的に同じである。したがって、図14に示すシーケンスにおいても、中継装置2bの送受信部(Tx/Rx)25bは、待受けポート番号情報を含むデータパケットを受信する。
中継装置2bにおいて、送受信部25bは、受信したデータパケットを高速化処理部24bに導く。そうすると、高速化処理部24bは、このデータパケットに対して高速化後処理を実行する。続いて、高速化処理部24bは、このデータパケットから待受けポート番号情報を取得する。そして、高速化処理部24bは、待受けポート番号情報により指定されるポート番号を有するパケットに対して高速化処理を実行するための設定を行う。具体的には、高速化処理部24bは、待受けポート番号情報により指定されるポート番号を有するパケットの待受けを開始する。この実施例では、待受けポート番号情報は3002番ポートを指定するので、高速化処理部24bは、宛先ポート番号が「3002」であるパケットの待受けを開始する。
高速化処理部24bにより取得された待受けポート番号情報は、監視情報として、管理部22bを介して監視部21bに設定される。そうすると、監視部21bは、監視情報に基づく監視を開始する。すなわち、監視部21bは、待受けポート番号情報により指定されるポート番号(この実施例では、3002)を有するパケットの監視を開始する。
さらに、監視情報は、中継装置2aにも送信される。中継装置2aにおいて、監視情報は、管理部22aにより識別子変更部23aに設定される。そうすると、識別子変更部23aは、監視情報に基づく待受けを開始する。すなわち、識別子変更部23aは、待受けポート番号情報により指定されるポート番号(この実施例では、3002)を有するパケットの待受けを開始する。
高速化処理部24bにおいて高速化後処理が実行されたデータパケットは、識別子変更部23bおよび送受信部20bを介してサーバに転送される。この転送手順は、図12および図14において実質的に同じなので、説明を省略する。また、図14では、サーバがACKパケットを生成して返送する手順は省略されている。
このように、クライアント側の中継装置からサーバ側の中継装置に、データコネクションを介してパケットを受信するためのポート番号が通知されると、サーバ側の中継装置はそのポート番号を取得する。そして、サーバ側の中継装置において、このポート番号を有するパケットの監視および待受けが開始される。
この後、サーバは、データコネクションを介して、クライアントにデータを送信するものとする。したがって、サーバは、クライアントに送信するデータパケットの宛先ポート番号に「3002」を設定する。
このデータパケットは、図15に示すように、送受信部20bから監視部21bに導かれる。このとき、監視部21bは、図14に示す設定により、宛先ポート番号が「3002」であるパケットを監視している。したがって、サーバから送信されたデータパケットは、識別子変更部23bに導かれる。識別子変更部23bは、図1~図6に示す実施形態において設定される対応情報に基づいて、受信したデータパケットの宛先アドレスを通信装置3aから中継装置2bに書き換える。この場合、このデータパケットは、高速化処理部24bに導かれる。
高速化処理部24bは、図14に示す設定により、宛先ポート番号が「3002」であるパケットを待ち受けている。したがって、高速化処理部24bは、受信したデータパケットに対して高速化処理を実行する。このとき、送信元が中継装置2bを表し、宛先が中継装置2aを表すように、データパケットのヘッダが更新される。そして、高速化処理が行われたデータパケットは、送受信部25bにより中継装置2aに送信される。
中継装置2aにおいて、受信データパケットは高速化処理部24aに導かれる。そうすると、このデータパケットは、高速化処理部24aにより高速化後処理が実行された後、識別子変更部23aに導かれる。識別子変更部23aは、このデータパケットの送信元を中継装置2bから通信装置3b(すなわち、サーバ)に書き換える。そして、このデータパケットは、送受信部20aにより通信装置2a(すなわち、クライアント)に転送される。
このように、パケットを受信するためのポート番号が動的に決定されたときは、各中継装置において、新たに決定されたポート番号を有するパケットの監視および待受けが開始される。したがって、データコネクションを介してパケットを受信するためのポート番号が動的に決定されたときであっても、そのデータコネクションに対して高速化処理を適用できる。
本発明は、本発明の広義の精神と範囲を逸脱することなく、様々な実施形態および変形が可能とされるものである。また、上述した実施形態は、本発明を説明するためのものであり、本発明の範囲を限定するものではない。特許請求の範囲内およびそれと同等の発明の意義の範囲内で施される様々な変形も、本発明の範囲内とみなされる。