以下の実施例2では、クライアントの要求に応じてコンテンツを配信する変換サーバを複数有するコンテンツ変換システムを説明する。
[コンテンツ変換システム]
まず、図2を用いて、コンテンツ変換システムの構成について説明する。図2は、実施例2に係るコンテンツ変換システムを説明するための図である。図2に示す例では、コンテンツ変換システムは、レイヤ4スイッチ21、複数の変換サーバ22〜24、複数のコンテンツサーバ25〜27を有する。
クライアント15〜17は、レイヤ4スイッチ21および変換サーバを介して、各コンテンツサーバ25〜27に記憶されたコンテンツを要求する端末である。例えば、図2に示す例では、クライアント15は、端末種別が「CL_A」の端末であり、クライアント16は、端末種別が「CL_B」の端末であり、クライアント17は、端末種別が「CL_C」の端末である。また、クライアント15〜17は、コンテンツサーバ25〜27に記憶されたコンテンツの送信要求であるリクエストメッセージを、レイヤ4スイッチ21へ送信する。
コンテンツサーバ25〜27は、コンテンツを記憶するサーバである。例えば、図2に示す例では、コンテンツサーバ25は、コンテンツ「A1」を記憶し、コンテンツサーバ26は、コンテンツ「B1」を記憶し、コンテンツサーバ27は、コンテンツ「C1」を記憶する。
レイヤ4スイッチ21は、クライアント15〜17から送信されたリクエストメッセージを変換サーバ22〜24のいずれかに振り分けるスイッチである。具体的には、レイヤ4スイッチ21は、クライアント15〜17から送信されたリクエストメッセージを受信した場合には、リクエストメッセージの振分先となる変換サーバをランダムに選択する。そして、レイヤ4スイッチ21は、クライアントから受信されたリクエストメッセージを選択された変換サーバへ送信する。
変換サーバ22は、コンテンツの形式をクライアントが利用可能な形式に変換する変換サーバである。具体的には、変換サーバ22は、あらかじめ、コンテンツを示す情報と端末種別を示す情報との組に変換サーバを示す情報とを対応付けて記憶する。例えば、変換サーバ22は、コンテンツ「B1」とクライアント15の端末種別「CL_A」との組に自装置のIPアドレスを対応付けて記憶する。また、変換サーバ22は、を端末種別が「CL_A」である端末15が利用可能な形式にコンテンツ「B1」の形式を変更する。
次に、変換サーバが実行する処理の流れについて説明する。例えば、図2に示す例では、変換サーバ23は、クライアント15からコンテンツ「B1」の送信を要求するリクエストメッセージを受信した場合には、リクエストメッセージを解析する。そして、変換サーバ23は、クライアント15の端末種別を示すクライアント情報「CL_A」と送信を要求されたコンテンツを示すコンテンツ情報「B1」とを判別する。また、変換サーバ23は、クライアント情報「CL_A」とコンテンツ情報「B1」とに対応付けられた変換サーバ22を特定する。そして、変換サーバ23は、コンテンツ情報「B1」が示すコンテンツをクライアント15が利用可能な形式に変換する処理とクライアント15へ変換済みのコンテンツを送信する処理とを特定された変換サーバ22に委任する。
また、変換サーバ22は、変換サーバ23から各処理を委任された場合には、変換済みのコンテンツがキャッシュに記憶されているか否かを判定する。そして、変換サーバ22は、変換済みのコンテンツがキャッシュに記憶されていると判定した場合には、キャッシュに記憶された変換済みのコンテンツをクライアント15へ送信する。
また、変換サーバ22は、変換済みのコンテンツがキャッシュに記憶されていないと判別した場合には、コンテンツ「B1」をコンテンツサーバ26から取得する。そして、変換サーバ22は、取得されたコンテンツ「B1」を端末種別「CL_A」のクライアント15が利用可能な形式に変換し、変換済みのコンテンツをクライアント15へ送信する。また、変換サーバ22は、変換済みのコンテンツをキャッシュに記憶する。
つまり、各変換サーバ22〜24は、クライアントからリクエストメッセージを受信した場合には、リクエストメッセージの送信元であるクライアントの種別と送信を要求したコンテンツとの組に対応付けられた変換サーバへ処理を委任する。例えば、変換サーバ22〜24は、端末種別が「CL_A」であるクライアント15からコンテンツ「B1」の送信を要求するリクエストメッセージを受信した場合には、処理を変換サーバ22のみに委任する。
このため、変換サーバ22〜24は、端末種別「CL_A」のクライアントからコンテンツ「B1」の送信を要求する送信要求を再度受信した場合には、変換サーバ22に記憶された変換済みのコンテンツを利用することができる。つまり、変換サーバ22〜24は、変換サーバ22〜24のいずれかにキャッシュが存在する場合には、キャッシュヒットを保証することができる。
このように、変換サーバ22〜24は、クライアントの種別と送信を要求したコンテンツとの組に対応付けられた変換サーバへ処理を委任するので、各変換サーバのキャッシュの同期を行わずとも、キャッシュヒットを保証する。結果として、変換サーバ22〜24は、キャッシュヒットを保証しつつ、各変換サーバのキャッシュの同期を不用とし、変換サーバの数に応じた処理能力を発揮することができる。
次に、図面を用いて、コンテンツ変換システムが有する各部について説明する。以下の説明では、まず、レイヤ4スイッチ21の処理、続いてレイヤ4スイッチ21が有する各部について説明する。その後、各変換サーバ22〜24が有する各部について具体的に説明し、変換サーバが有する各部の処理例を説明する。
まず、図3を用いて、レイヤ4スイッチ21の処理について説明する。図3は、レイヤ4スイッチを説明するための図である。図3に示す例では、レイヤ4スイッチ21は、NAPT(Network Address Port Translation)を用いて、クライアント15と変換サーバ23とを接続する。
例えば、レイヤ4スイッチ21は、クライアント15からレイヤ4スイッチ21に対する3 Way HandshakeのSYNパケットを受信した場合には、振分け先の変換サーバとして変換サーバ23を選択する。そして、レイヤ4スイッチ21は、SYNパケットに宛先として格納されたレイヤ4スイッチ21のIPアドレスを選択された変換サーバ23のIPアドレスに変換する。その後、レイヤ4スイッチ21は、SYNパケットを変換サーバ23へ送信する。
また、レイヤ4スイッチ21は、SYNパケットを送信した変換サーバ23からACKパケットを受信した場合には、受信されたACKパケットの送信元をレイヤ4スイッチ21のIPアドレスに変換し、ACKパケットをクライアント15へ送信する。そして、レイヤ4スイッチ21は、クライアント15から送信されたACKパケットの宛先を変換サーバ23のIPアドレスに変換し、ACKパケットを変換サーバ23へ送信する。
その後、レイヤ4スイッチ21は、クライアント15から送信されたリクエストの宛先を変換サーバ23のIPアドレスに変換し、リクエストを変換サーバ23へ送信する。つまり、レイヤ4スイッチ21は、クライアント15と選択された変換サーバ23との間のコネクションを論理的に一つに保ちつつ、アドレスの変換を実行する。
次に、図4を用いて、レイヤ4スイッチ21が有する各部について説明する。図4は、実施例2に係るレイヤ4スイッチを説明するための図である。図4に示す例では、レイヤ4スイッチ21は、変換テーブル管理部30、アドレス変換テーブル記憶部31、変換処理部32、振分先サーバ情報記憶部33を有する。
なお、以下の説明では、レイヤ4スイッチ21は、クライアント15と変換サーバ22とを論理的に一つのコネクションで接続するものとする。また、クライアント15は、コンテンツサーバ26に記憶されたコンテンツのリクエストを送信するものとする。
アドレス変換テーブル記憶部31は、アドレス変換テーブルを記憶する。ここで、アドレス変換テーブルとは、クライアント側のIPアドレス、クライアント側のポート番号、サーバ側の変換元IPアドレス、サーバ側の変換元ポート番号、サーバ側の変換後IPアドレス、サーバ側の変換後ポート番号を対応付けて格納するテーブルである。
例えば、図5に示す例では、アドレス変換テーブルには、クライアント側のIPアドレス「192.0.2.254」、クライアント側のポート番号「10000」、サーバ側の変換前IPアドレス「192.0.2.1」が対応付けて格納される。また、アドレス変換テーブルには、サーバ側の変換前ポート番号「80」、サーバ側の変換後IPアドレス「10.10.10.22」、サーバ側の変換後ポート番号「80」が対応付けて格納される。図5は、アドレス変換テーブルの一例を説明するための図である。
図4に戻って、振分先サーバ情報記憶部33は、振分先サーバとなる変換サーバの情報を記憶する。具体的には、振分先サーバ情報記憶部33は、振分先サーバを示す符号と各サーバのIPアドレスとポート番号とを対応付けて記憶する。例えば、図6に示す例では、振分先サーバ情報記憶部33は、振分先サーバを示す符号「#1」とIPアドレス「10.10.10.22」とポート番号「80」とを対応づけて記憶する。図39は、振分先サーバ情報の一例を説明するための図である。
図4に戻って、変換テーブル管理部30は、アドレス変換テーブル記憶部31を管理する。具体的には、変換テーブル管理部30は、各変換サーバ22〜24からコネクション制御メッセージを取得する。また、変換テーブル管理部30は、各変換サーバ22〜24からコネクション制御メッセージを取得した場合には、取得されたコネクション制御メッセージに応じて、アドレス変換テーブル記憶部31に記憶されたアドレス変換テーブルを変更する。
ここで、コネクション制御メッセージについて説明する。例えば、図7に示す例では、コネクション制御メッセージには、レイヤ4スイッチを示すIPヘッダ、レイヤ4スイッチを示すTCPヘッダ、サーバ側変換後IPアドレス(変更前)、クライアント側IPアドレスが格納される。また、コネクション制御メッセージには、サーバ側変換後ポート番号(変更前)、クライアント側ポート番号、サーバ側変換後IPアドレス(変更後)、サーバ側変更後ポート番号(変更後)が格納される。図7は、レイヤ4スイッチが受信するコネクション制御メッセージの一例を説明するための図である。
次に、変換テーブル管理部30が、コネクション制御メッセージに応じてアドレス変換テーブルを変更する処理について説明する。例えば、変換テーブル管理部30は、コネクション制御メッセージを受信した場合には、コネクション制御メッセージに格納されたサーバ側変更後IPアドレス(変更前)とクライアント側IPアドレスとが一致するエントリをアドレス変換テーブルから検索する。あわせて、変換テーブル管理部30は、コネクション制御メッセージに格納されたサーバ側変更後ポート番号(変更前)とクライアント側ポート番号が一致するエントリをアドレス変換テーブルから検索する。
そして、変換テーブル管理部30は、アドレス変換テーブルのうち、検索されたエントリのサーバ側変換後IPアドレスを受信されたコネクション制御メッセージのサーバ側変更後IPアドレス(変更後)に書き換える。また、変換テーブル管理部30は、アドレス変換テーブルのうち、検索されたエントリのサーバ側変換後ポート番号を受信されたコネクション制御メッセージのサーバ側変更後ポート番号(変更後)に書き換える。
図4に戻って、変換処理部32は、クライアント15〜17からパケットを受信した場合には、アドレス変換テーブル記憶部31に記憶されたアドレス変換テーブルに応じて、受信されたパケットに格納されたアドレスを変換する。また、変換処理部32は、変換サーバ22〜24からパケットを受信した場合には、アドレス変換テーブル記憶部31に記憶されたアドレス変換テーブルに応じて、受信されたパケットに格納されたアドレスを変換する。
例えば、変換処理部32は、図8に例示するパケットをクライアント15から受信する。図8に示す例では、変換処理部32は、IPヘッダとTCPヘッダとデータが格納されたパケットを受信する。また、IPヘッダには、バージョン、ヘッダ長、サービスタイプ、パケットの全長、識別子、フラグ、フラグメントオフセット、生存期間、プロトコル、ヘッダチェックサム、送信元IPアドレス、宛先IPアドレスを示す情報が格納される。また、TCPヘッダには、送信元ポート番号、宛先ポート番号、シーケンス番号、確認応答番号等が格納される。またデータには、リクエストメッセージが格納される。図8は、レイヤ4スイッチが受信するパケットの一例を説明するための図である。
変換処理部32は、クライアント15からパケットを受信した場合には、受信したパケットに格納された送信元IPアドレス、パケットの送信元ポート番号、パケットの宛先IPアドレス、パケットのポート番号を識別する。そして、変換処理部32は、識別されたIPアドレス及びポート番号をキーとして、アドレス変換テーブルのクライアント側IPアドレス及びポート番号とパケットの宛先IPアドレス及びポート番号とを検索する。その後、変換処理部32は、キーと一致するエントリがヒットした場合には、ヒットしたエントリのサーバ側変換後IPアドレスとサーバ側変換後ポート番号とを取得する。
また、変換処理部32は、受信されたパケットの宛先IPアドレス及びポート番号を取得されたサーバ側変換後IPアドレスとサーバ側変換後ポート番号に変換する。そして、変換処理部32は、宛先IPアドレス及びポート番号を変換したパケットを送信する。
一方、変換処理部32は、各IPアドレス及び各ポート番号が一致するエントリがヒットしなかった場合には、振分先サーバ情報記憶部33に記憶された振分先サーバ情報を参照する。そして、変換処理部32は、振分先サーバ情報に記憶された変換サーバの中から、パケットの振分先となる変換サーバをランダムに選択する。なお、この例では、パケットの振分先となる変換サーバをランダムに選択することとしたが、変換サーバの選択の仕方は任意であり、他の方法を用いて変換サーバを選択しても良い。
また、変換処理部32は、パケットの振分先となる変換サーバを選択した場合には、選択された変換サーバのIPアドレス及びポート番号を振分先サーバ情報記憶部33に記憶された振分先サーバ情報より取得する。そして、変換処理部32は、受信されたパケットの送信元IPアドレス及びポート番号をクライアント側IPアドレス及びポート番号とするエントリを生成する。
また、変換処理部32は、受信されたパケットに格納されていた宛先IPアドレスをサーバ側変換前IPアドレスとして、生成されたエントリに格納する。また、変換処理部32は、受信されたパケットに格納されていた宛先ポート番号をサーバ側変換前ポート番号として、生成されたエントリに格納する。また、変換処理部32は、振分先サーバとして選択された変換サーバのIPアドレスをサーバ側変換後IPアドレスとして、生成されたエントリに格納する。また、変換処理部32は、受信されたパケットに格納されていた変換サーバのポート番号をサーバ側変換後ポート番号として、生成されたエントリに格納する。その後、変換処理部32は、生成されたエントリをアドレス変換テーブルに格納する。
一方、変換処理部32は、変換サーバ22から送信されたパケットを受信した場合には、受信したパケットの送信元IPアドレス及びポート番号とパケットの宛先IPアドレス及びポート番号を識別する。そして、変換処理部32は、識別された各IPアドレス及びポート番号をキーとして、アドレス変換テーブルのサーバ側変換後IPアドレス及びポート番号とクライアント側IPアドレス及びポート番号を検索する。
その後、変換処理部32は、キーと一致するエントリがヒットした場合には、ヒットしたエントリのサーバ側変換前IPアドレスとサーバ側変換前ポート番号とを取得する。また、変換処理部32は、受信されたパケットの送信元IPアドレス及びポート番号を取得されたサーバ側変換前IPアドレスとサーバ側変換前ポート番号に変換する。そして、変換処理部32は、変換前IPアドレス及びポート番号を変換したパケットを送信する。
このように、レイヤ4スイッチは、クライアント側から送信されたパケットの宛先IPアドレス及び宛先ポート番号を振分先となる変換サーバのIPアドレス及びポート番号に変換する。また、レイヤ4スイッチは、変換前の宛先IPアドレス及び宛先ポート番号を記憶し、変換サーバ側から送信されたパケットの送信元アドレス及び送信元ポート番号を記憶された変換前の宛先IPアドレス及び宛先ポート番号に変換する。
つまり、レイヤ4スイッチは、クライアントと変換サーバとの間のコネクションを論理的に一つに保ったままで、クライアントと変換サーバとの間で送受信されるパケットを中継する。
次に、図9を用いて、実施例2に係る変換サーバを説明する。図9は、実施例2に係る変換サーバを説明するための図である。以下の説明では、変換サーバ22が有する各部について説明するものとし、変換サーバ22と同様の各部を有する変換サーバ23、及び変換サーバ24については、説明を省略するものとする。
また、以下の説明では、コンテンツサーバ25に記憶されたコンテンツを要求するリクエストメッセージをクライアント15が送信したものとする。また、クライアント15によって送信されたメッセージが変換サーバ22に振り分けられたものとする。また、コンテンツサーバ26に記憶されたコンテンツを要求するリクエストメッセージをクライアント16が送信し、クライアント16によって送信されたメッセージが変換サーバ24に振り分けられたものとする。また、変換サーバ22は、後述する委任要求メッセージを変換サーバ24から取得し、コンテンツサーバ26に記憶されたコンテンツを変換するものとする。
図9に示すように、変換サーバ22は、宛先決定テーブル部34、担当サーバ管理テーブル部35、レイヤ4スイッチ制御用アドレス情報記憶部36、キャッシュ管理テーブル部37、コンテンツ変換テーブル部38、キャッシュ記憶部47を有する。また、変換サーバ22は、TCP管理部39、宛先決定部40、担当サーバ管理部41、委任制御部42、委任受け付け部43、キャッシュ管理部44、コンテンツ変換処理部45、TCP管理部46を有する。
宛先決定テーブル部34は、宛先決定テーブルを記憶する記憶部である。例えば、宛先決定テーブル部34は、図10に示すように、Request−URI(Uniform Resource Identifier)とコンテンツを記憶するコンテンツサーバのIPアドレス及びポート番号とを対応付けた宛先決定テーブルを記憶する。図10は、宛先決定テーブル部に記憶された情報の一例を説明するための図である。
ここで、Request−URIとは、各クライント15〜17から送信を要求されるコンテンツを一意に示す情報である。例えば、宛先決定テーブル部34は、Request−URI「/contents/A1」とIPアドレス「10.10.100.25」とポート番号「80」とを対応付けた宛先決定テーブルを記憶する。
図9に戻って、担当サーバ管理テーブル部35は、クライアントの種別を示す種別情報とコンテンツを示すコンテンツ情報との組を記憶する。また、担当サーバ管理テーブル部35は、種別情報とコンテンツ情報との組に、種別情報が示す種別のクライアントが利用可能な形式にコンテンツ情報が示すコンテンツの形式を変換する変換サーバを一意に示すサーバ情報を対応付けて記憶する。
具体的には、担当サーバ管理テーブル部35は、Request−URI、User−Agent、キャッシュID、担当サーバIPアドレス、担当サーバ受信ポート番号、及び担当サーバ制御用ポート番号を対応付けた担当サーバ管理テーブルを記憶する。
ここで、User−Agentとは、クライアントの種別を示す情報であり、例えば、クライアントが使用するブラウザを示す情報である。キャッシュIDとは、クライアントが利用可能な形式に変換したコンテンツのキャッシュを一意に示す番号である。
例えば、図11に示す例では、担当サーバ管理テーブル部35は、Request−URI「/contents/A1」、User−Agent「XXX/1.0/xxx」、及びキャッシュID「1」を対応付けた担当サーバ管理テーブルを記憶する。また、担当サーバ管理テーブル部35は、キャッシュID「1」に、担当サーバIPアドレス「10.10.10.23」、担当サーバ受信ポート番号「80」、及び担当サーバ制御用ポート番号「1111」を対応付けた担当サーバ管理テーブルを記憶する。なお、図40は、担当サーバ管理テーブルの一例を説明するための図である。
ここで、キャッシュIDについて詳しく説明する。キャッシュIDは、変換済みコンテンツを一意に示す番号であり、Request−URIとUser−Agentから一意に決まる番号である。例えば、図11の例では、IPアドレス「10.10.100.25」の「/contents/A1」に格納されたコンテンツを「XXX/1.0/xxx」が利用できる形式に変換した変換済みコンテンツをキャッシュID「1」として記憶する。
つまり、変換済みコンテンツは、クライアントの種別と変換元のコンテンツとの組ごとに記憶するキャッシュが異なるので、コンテンツのリクエストを送信したクライアントの種別と変換元のコンテンツとの組ごとにキャッシュIDが予め定められる。
図9に戻って、レイヤ4スイッチ制御用アドレス情報記憶部36は、レイヤ4スイッチのIPアドレスとレイヤ4スイッチの制御用ポート番号とを記憶する。例えば、図12に示す例では、レイヤ4スイッチ制御用アドレス情報記憶部36は、レイヤ4スイッチのIPアドレス「10.10.10.254」とレイヤ4スイッチ制御用ポート番号「1111」とを対応付けて記憶する。図12は、レイヤ4スイッチ制御用アドレス情報の一例を説明するための図である。
図9に戻って、キャッシュ管理テーブル部37は、コンテンツをクライアントの種別に応じて変換したキャッシュを記憶する。例えば、図13に示す例では、キャッシュ管理テーブル部37は、キャッシュID「1」、キャッシュの有無「1」、及びキャッシュの格納領域「/cache/1」を対応付けて記憶する。図41は、キャッシュ管理テーブルの一例を説明するための図である。
ここで、キャッシュの有無には、変換サーバ22のキャッシュに変換後のコンテンツが記憶されている場合には、「1」が格納され、変換サーバ22のキャッシュに変換後のコンテンツが記憶されていない場合には、「0」が格納される。例えば、図13の例では、キャッシュ管理テーブル部37は、キャッシュID「1」で示される変換後のコンテンツが変換サーバ22が有するキャッシュ記憶部47の格納領域「/cache/1」に記憶されていることを記憶する。
図9に戻って、コンテンツ変換テーブル部38は、コンテンツ変換テーブルを記憶する記憶部である。具体的には、コンテンツ変換テーブル部38は、キャッシュIDと変換前のコンテンツの種別と変換後のコンテンツの種別とを対応付けて記憶する。例えば、図14に示す例では、コンテンツ変換テーブル部38は、キャッシュID「1」と変換元コンテンツの種別「HTML(HyperText Markup Language)」と変換後コンテンツの種別「CHTML(Compact HTML)」とを対応付けて記憶する。図42は、コンテンツ変換テーブルの一例を説明するための図である。
図9に戻って、キャッシュ記憶部47は、変換後のコンテンツを記憶するキャッシュである。例えば、キャッシュ記憶部47、クライアント15が実行可能な形式に変換されたコンテンツを記憶する。
図9に戻ってTCP管理部39は、後述する委任制御部42、及び後述する委任受付部43、及びキャッシュ管理部44による制御に従って、TCP通信を行う終端装置である。具体的には、TCP管理部39は、レイヤ4スイッチを介して、クライアント15から送信されたパケットを受信する。そして、TCP管理部39は、受信されたパケットの終端処理を行い、パケットに格納されたデータを宛先決定部40へ送信する。また、TCP管理部39は、受信されたパケットの送信元であるクライアント15のIPアドレス及びポート番号と受信されたパケットに格納されたシーケンス番号と確認応答番号とを委任制御部42へ通知する。
また、TCP管理部39は、後述する委任制御部42、委任受付部43及びキャッシュ管理部44からデータを受信する。そして、TCP管理部39は、取得したデータをレイヤ4スイッチ21を介して、クライアント15〜17へ送信する。
例えば、TCP管理部39は、レイヤ4スイッチ21を介して、図15に例示するリクエストメッセージをクライアント15から受信する。図43は、リクエストメッセージの一例を説明するための図である。ここで、図15に示す例では、リクエストメッセージには、IPヘッダ、TCPヘッダ、及びレイヤ7プロトコルヘッダが格納される。TCP管理部39は、IPヘッダとTCPヘッダの終端処理を実行し、レイヤ7プロトコルヘッダを宛先決定部40へ送信する。
図9に戻って、宛先決定部40は、クライアント15からコンテンツの送信を要求するリクエストメッセージを受信した場合には、受信されたリクエストメッセージを解析する。そして、宛先決定部40は、クライアント15の種別を示すUser−Agentとクライアント15が送信を要求したコンテンツを示すRequest−URIとを判別する。具体的には、宛先決定部40は、レイヤ7プロトコルヘッダをTCP管理部39から受信する。また、宛先決定部40は、受信したレイヤ7プロトコルヘッダを解析し、レイヤ7プロトコルヘッダに含まれるUser−AgentとRequest−URIとを判別する。
また、宛先決定部40は、判別されたRequest−URIと対応づけて記憶されたコンテンツサーバ25のIPアドレスとポート番号とを宛先決定テーブルから取得する。そして、宛先決定部40は、判別されたUser−Agent、Request−URI、及び取得されたコンテンツサーバ25のIPアドレスとポート番号とを担当サーバ管理部41に送信する。
例えば、宛先決定部40は、図15に例示するレイヤ7プロトコルヘッダを受信した場合には、受信したレイヤ7プロトコルヘッダからUser−Agent「XXX/1.0/xxx/12345」を判別する。また、宛先決定部40は、受信したレイヤ7プロトコルヘッダからRequest−URI「/contents/A1」を判別する。
また、宛先決定部40は、図10に例示する宛先決定テーブルから「/contents/A1」と対応付けられたコンテンツサーバ25のIPアドレス「10.10.100.25」とポート番号「80」とを取得する。そして、宛先決定部40は、User−Agent「XXX/1.0/xxx/12345」、Request−URI「/contents/A1」を担当サーバ管理部41へ送信する。また、宛先決定部40は、コンテンツサーバ25のIPアドレス「10.10.100.25」、ポート番号「80」を担当サーバ管理部41へ送信する。
図9に戻って、担当サーバ管理部41は、宛先決定部40は、宛先決定部40によって判別されたUser−AgentとRequest−URIとの組に対応付けて記憶された変換サーバのIPアドレスを担当サーバ管理テーブルから特定する。具体的には、担当サーバ管理部41は、宛先決定部40から、User−AgentとRequest−URIと、コンテンツサーバ25のIPアドレス及びポート番号とを受信する。
そして、担当サーバ管理部41は、受信されたUser−AgentとRequest−URIとに対応付けて記憶された変換サーバのIPアドレスと受信ポート番号と制御用ポート番号とを担当サーバ管理テーブル部35から特定する。また、担当サーバ管理部41は、User−AgentとRequest−URIとに対応付けられたキャッシュIDを担当サーバ管理テーブル部35から取得する。
また、担当サーバ管理部41は、特定された変換サーバのIPアドレスが自装置のIPアドレスであるか否かを判別する。そして、担当サーバ管理部41は、特定されたIPアドレスが自装置のIPアドレスであると判別した場合には、取得されたキャッシュIDをキャッシュ管理部44に送信する。
一方、担当サーバ管理部41は、特定されたIPアドレスが自装置のIPアドレスではないと判別した場合には、特定されたIPアドレス、受信ポート番号、制御用ポート番号、及び取得されたキャッシュIDを委任制御部42へ通知する。また、担当サーバ管理部41は、特定されたIPアドレスが自装置のIPアドレスではないと判別した場合には、コンテンツサーバ25のIPアドレス及びポート番号とを委任制御部42へ通知する。
以下に、変換サーバ22が有する担当サーバ管理部41が実行する処理の具体例を説明する。以下の説明では、変換サーバ22のIPアドレスは、「10.10.10.22」であり、変換サーバ23のIPアドレスは、「10.10.10.23」であるものとする。
例えば、担当サーバ管理部41は、宛先決定部40からUser−Agent「XXX/1.0/xxx/12345」とRequest−URI「/contents/A1」とを受信する。また、担当サーバ管理部41は、宛先決定部40からコンテンツサーバ25のIPアドレス「10.10.100.25」とポート番号「80」とを受信する。
そして、担当サーバ管理部41は、User−Agent「XXX/1.0/xxx/12345」とRequest−URI「/contents/A1」との組に対応付けられた変換サーバのIPアドレス、受信ポート番号、制御用ポート番号を特定する。図11に示す例では、「XXX/1.0/xxx/12345」と「/contents/A1」との組が、担当サーバ管理テーブルの初めに格納されている。
この例では、担当サーバ管理部41は、検索された組と対応付けられた担当サーバである変換サーバ23のIPアドレス「10.10.10.23」、担当サーバの受信ポート番号「80」、及び担当サーバの制御用ポート番号「1111」を取得する。
また、担当サーバ管理部41は、取得されたIPアドレス「10.10.10.23」が自装置のIPアドレスであるか否かを判別する。ここで、担当サーバ管理部41は、変換サーバ22のIPアドレスが「10.10.10.22」であるので、取得された担当サーバのIPアドレスが自装置のIPアドレスではないと判別する。
このため、担当サーバ管理部41は、取得されたキャッシュID「1」、担当サーバのIPアドレス「10.10.10.23」、担当サーバの受信ポート番号「80」、及び担当サーバの制御用ポート番号「1111」を委任制御部42へ通知する。
図9に戻って、委任制御部42は、担当サーバ管理部41によって特定されたIPアドレスが示す変換サーバに対して、担当サーバ管理部41によって特定されたキャッシュIDを通知する。また、委任制御部42は、担当サーバ管理部41によって特定されたIPアドレスが示す変換サーバに対して、クライアントとの間に確立したコネクションを示すコネクション情報を送信する。
また、委任制御部42は、担当サーバ管理部41によって特定されたIPアドレスが示す変換サーバからコネクション情報を受信した場合には、受信された情報を用いて、クライアント15から受信したリクエストメッセージをコンテンツサーバ25へ送信する。
具体的には、委任制御部42は、変換サーバ23のIPアドレス、受信ポート番号、制御用ポート番号、及び担当サーバ管理部41によって取得されたキャッシュIDを示す通知を担当サーバ管理部41から取得する。また、委任制御部42は、コンテンツサーバ25のIPアドレス及びポート番号とを示す通知を担当サーバ管理部41から取得する。また、委任制御部42は、リクエストメッセージの送信元であるクライアント15のIPアドレス及びポート番号を示す通知をTCP管理部39から取得する。そして、委任制御部42は、取得した各種情報を格納した委任要求メッセージを生成する。
ここで、図16は、委任要求メッセージの一例を説明するための図である。図16に示す例では、委任制御部42は、変換サーバ23のIPアドレスを委任要求メッセージのIPヘッダに格納し、変換サーバ23の受信ポート番号を委任要求メッセージのTCPヘッダに格納する。また、委任制御部42は、コンテンツサーバ25のIPアドレスを委任要求メッセージの宛先コンテンツサーバIPアドレスに格納し、コンテンツサーバ25のポート番号を委任要求メッセージの宛先コンテンツサーバポート番号に格納する。
また、委任制御部42は、クライアント15のIPアドレスを委任要求メッセージのクライアント側IPアドレスに格納し、クライアント15のポート番号を委任要求メッセージのクライアント側ポート番号に格納する。また、委任制御部42は、シーケンス番号、確認応答番号、キャッシュIDおよびリクエストメッセージ長を委任要求メッセージに格納する。
また、委任制御部42は、委任要求メッセージを生成した場合には、委任要求メッセージを、担当サーバへ送信する。つまり、委任制御部42は、クライアント15の種別とクライアント15が送信を要求したコンテンツとの組に対応付けられた変換サーバ23へ委任要求メッセージを送信する。
また、委任制御部42は、委任要求メッセージを送信した変換サーバ23から、委任要求メッセージに対する応答である委任応答メッセージを受信する。そして、委任制御部42は、委任応答メッセージを受信した場合には、受信された委任応答メッセージからサーバ側コネクション情報を取得する。
ここで、委任応答メッセージとは、委任要求メッセージに対する応答として、委任要求メッセージを送信した変換サーバ23から送信されるメッセージである。また、委任応答メッセージは、変換サーバ23とコンテンツサーバ25との間に確立されたコネクションの情報であるサーバ側コネクション情報を含む。例えば、図17に示す例では、委任応答メッセージは、変換サーバ22のIPアドレス及びポート番号が格納されたIPヘッダ及びTCPヘッダを含む。また、委任応答メッセージは、サーバ側コネクション情報として、送信元IPアドレス、宛先IPアドレス、送信元ポート番号、宛先ポート番号、シーケンス番号、及び確認応答番号を含む。図17は、委任応答メッセージの一例を説明するための図である。
ここで、サーバ側コネクション情報のうち、送信元IPアドレス、及び送信元ポート番号とは、委任応答メッセージを送信した変換サーバ23のIPアドレス、及びポート番号である。また、宛先IPアドレス、及びポート番号とは、送信要求の対象であるコンテンツを記憶するコンテンツサーバのアドレス、及びポート番号である。また、シーケンス番号とは、変換サーバ23とコンテンツサーバ25との間で確立されたコネクションでのシーケンス番号である。確認応答番号とは、変換サーバ23とコンテンツサーバ25との間で確立されたコネクションでの確認応答番号である。
また、委任制御部42は、取得されたサーバ側コネクション情報を用いて、コネクション制御メッセージを生成する。また、委任制御部42は、レイヤ4スイッチ制御用アドレス情報記憶部36よりレイヤ4スイッチ制御用アドレスを取得する。そして、委任制御部42は、取得されたレイヤ4スイッチ制御用アドレスを用いて、生成したコネクション制御メッセージを送信する。
また、委任制御部42は、取得されたサーバ側コネクション情報をTCP管理部46に設定する。また、委任制御部42は、クライアント15から受信されたリクエストメッセージをパケットに分割して、TCP管理部46に送信する。つまり、委任制御部42は、TCP管理部46を介して、クライアント15から受信されたリクエストメッセージをコンテンツサーバ25へ送信する。
また、委任制御部42は、委任要求メッセージを送信した変換サーバ23を介して、コンテンツサーバ25へ送信したリクエストメッセージに対する応答であるAck(Acknowledgement)を受信する。委任制御部42は、Ackを受信した場合には、リクエストメッセージを全て変換サーバ25へ送信したか否かを判別し、全て送信したと判別した場合には、Ackの転送を解除させる通知であるACK解除通知を変換サーバ23へ送信する。
また、委任制御部42は、変換サーバ23とコンテンツサーバ25との間に確立されたコネクションを利用して、リクエストメッセージをコンテンツサーバ25へ送信する。このため、コンテンツサーバ25は、Ackを変換サーバ23へ送信する。そこで、変換サーバ22は、変換サーバ23を介して、コンテンツサーバ25から送信されたAckを受信する。
ここで、委任制御部42がリクエストメッセージに対する応答として受信するAckの一例を図18に示す。図18に示す例では、Ackは、変換サーバ22のIPアドレス及びポート番号が格納されたIPヘッダ及びTCPヘッダを含む。また、Ackは、変換サーバ23とコンテンツサーバ25との間に確立されたコネクションの確認応答番号を含む。また、Ackは、コンテンツサーバ25側のウィンドウサイズであるコンテンツサーバ側ウインドウサイズ、及び変換サーバ23のウインドウサイズである委任先変換サーバ側ウインドウサイズを含む。図18は、委任先変換サーバから委任元変換サーバへ送信されるAckの一例を説明するための図である。
次に、委任制御部42が実行する処理の具体例について説明する。まず、委任制御部42が実行する処理のうち、委任要求メッセージを送信する処理についての具体例を説明する。例えば、委任制御部42は、担当サーバ管理部41から、キャッシュID「1」、担当サーバのIPアドレス「10.10.10.23」、担当サーバの受信ポート番号「80」、及び担当サーバの制御用ポート番号「1111」を示す通知を受信する。
また、委任制御部42は、担当サーバ管理部41から、クライアント15のIPアドレス「192.0.2.254」とポート番号「10000」とを示す通知を受信する。また、委任制御部42は、TCP管理部39から、クライアント15とのコネクションに用いられるシーケンス番号「1001」と確認応答番号「0002」とを取得する。
そして、委任制御部42は、宛先コンテンツサーバIPアドレス「10.10.100.25」、クライアント側IPアドレス「192.0.2.254」、及び宛先コンテンツサーバポート番号「80」を格納した委任要求メッセージを生成する。また、委任制御部42は、クライアント側ポート番号「10000」、クライアント側IPアドレス「192.0.2.254」、シーケンス番号「2001」、確認応答番号「5001」を委任要求メッセージに格納する。また、委任制御部42は、キャッシュID「1」、リクエストメッセージ長「50byte」を格納する。
その後、委任制御部42は、担当サーバである変換サーバ23のIPアドレス「10.10.10.23」と担当サーバの受信ポート番号「80」とを委任要求メッセージのTCP/IPヘッダに格納し、委任情報を変換サーバ23へ送信する。
また、委任制御部42は、委任要求メッセージを送信した変換サーバ23から、委任応答メッセージとして、送信元IPアドレス「10.10.10.23」、宛先IPアドレス「10.10.100.25」が格納された委任応答メッセージを受信する。また、委任制御部42は、委任応答メッセージとして、送信元ポート番号「80」、宛先ポート番号「80」、シーケンス番号「5001」、及び確認応答番号「2002」が格納された委任応答メッセージを受信する。
そして、委任制御部42は、サーバ側変換後IPアドレス(変更前)に自装置のIPアドレス「10.10.10.22」を格納したコネクション制御メッセージを生成する。また、委任制御部42は、コネクション制御メッセージのクライアント側IPアドレスにクライアント15のアドレス「192.0.2.254」を格納し、サーバ側変換後ポート番号(変更前)に自装置のポート番号「80」を格納する。
また、委任制御部42は、コネクション制御メッセージのクライアント側ポート番号に「10000」を格納し、サーバ側変換後IPアドレス(変更後)に「10.10.10.23」を格納する。また、委任制御部42は、サーバ側変換後ポート番号(変換後)に「80」を格納する。その後、委任制御部42は、各情報を格納したコネクション制御メッセージをレイヤ4スイッチ21の変換テーブル管理部30へ送信する。
次に、委任制御部42が実行する処理のうち、コンテンツサーバにコンテンツを要求する処理についての具体例を説明する。まず、委任制御部42は、委任応答メッセージを変換サーバ23から受信する。そして、委任制御部42は、受信された委任応答メッセージのうち、サーバ側コネクション情報である宛先IPアドレス「10.10.100.25」、及び宛先ポート番号「80」をTCP管理部46に設定する。
また、委任制御部42は、シーケンス番号「5001」、及び確認応答番号「2002」をTCP管理部46に設定する。そして、委任制御部42は、クライアント15から受信されたリクエストメッセージをパケットに分割して、TCP管理部46に送信する。
後述するように、TCP管理部46は、設定されたサーバ側コネクション情報を用いて、リクエストメッセージを送信する。つまり、TCP管理部46は、変換サーバ23が有するTCP管理部としてリクエストメッセージをコンテンツサーバ25へ送信する。このため、変換サーバ22は、変換サーバ23とコンテンツサーバ25との間に確立されたコネクションを利用して、コンテンツサーバにリクエストを送信することができる。
続いて、委任制御部42は、変換サーバ23を介してコンテンツサーバ25から送信されたAckを受信する。その後、委任制御部42は、リクエストメッセージの全てのパケットの送信が終了した場合には、ACK解除通知を変換サーバ23へ送信する。
図9に戻って、委任受付部43は、変換サーバ24から委任要求メッセージを受信した場合には、受信された委任要求メッセージに格納された宛先コンテンツサーバIPアドレス、宛先コンテンツサーバポート番号とを取得する。また委任受付部43は、委任要求メッセージに格納されたクライアント側コネクション情報、キャッシュID、リクエストメッセージ長を取得する。
そして、委任受付部43は、取得されたキャッシュIDとクライアント側コネクション情報とをキャッシュ管理部44へ送信する。また、委任受付部43は、取得された宛先コンテンツサーバIPアドレスと宛先コンテンツサーバポート番号とをTCP管理部46へ送信する。
また、委任受付部43は、後述するTCP管理部46がコンテンツサーバとの間で確立したコネクションについてのコネクション情報をTCP管理部46から受信する。また、委任受付部43は、委任応答メッセージを生成する。そして、委任受付部43は、委任要求メッセージの送信元である変換サーバ24へ生成した委任応答メッセージを送信する。また、委任受付部43は、ACK転送解除通知を変換サーバ24から受信していない場合には、Ackを変換サーバ24へ送信する。
キャッシュ管理部44は、委任受付部43からキャッシュIDの通知を受ける。また、キャッシュ管理部44は、通知されたキャッシュIDに対応する変換済みコンテンツがキャッシュ管理テーブル部37に記憶されているか否かを判定する。
また、キャッシュ管理部44は、変換済みコンテンツが記憶されていると判定した場合には、変換済みコンテンツをクライアント16へ送信する。また、キャッシュ管理部44は、変換済みコンテンツが記憶されていないと判定した場合には、後述するコンテンツ変換処理部45によって形式を変換されたコンテンツをクライアント16に送信する。また、キャッシュ管理部44は、変換サーバ24とクライアント16との間に確立されたコネクションを示す情報を用いて、変換済みコンテンツをクライアント16へ送信する。
また、キャッシュ管理部44は、後述するコンテンツ変換処理部43がコンテンツの形式を変換した場合には、形式を変換されたコンテンツを変換済みコンテンツとして変換サーバ22のキャッシュ記憶部47に格納する。
具体的には、キャッシュ管理部44は、キャッシュIDを委任受付部43から受信する。そして、キャッシュ管理部44は、キャッシュ管理テーブル部37に記憶されたキャッシュ管理テーブルから、受信されたキャッシュIDを検索する。その後、キャッシュ管理部44は、検索されたキャッシュIDによって示されるキャッシュが、記憶されているか否かを判別する。
また、キャッシュ管理部44は、検索されたキャッシュIDによって示されるキャッシュが記憶されていると判別した場合には、検索されたキャッシュIDによって示されるキャッシュを取得する。そして、キャッシュ管理部44は、取得されたキャッシュを格納したレスポンスメッセージを作成する。
ここで、図19は、レスポンスメッセージの一例を説明するための図である。図19に示す例では、キャッシュ管理部44は、取得されたキャッシュであるHTML文章を格納したレスポンスメッセージを作成する。その後、キャッシュ管理部44は、生成したレスポンスメッセージのデータをTCP管理部39を介して、クライアント16へ送信する。
また、キャッシュ管理部44は、キャッシュIDによって示されるキャッシュが記憶されていないと判別した場合には、コンテンツのリクエストメッセージを生成し、生成されたリクエストメッセージをコンテンツサーバ26へ送信する。つまり、キャッシュ管理部44は、コンテンツサーバ26との間にサーバ側コネクションを確立させる。そして、キャッシュ管理部44は、確立されたサーバ側コネクションの情報を委任受付部43に送信する。
また、キャッシュ管理部44は、変換サーバ24からコンテンツサーバ26へ送信されたリクエストメッセージの応答として、コンテンツサーバ26に記憶されたコンテンツを取得する。そして、キャッシュ管理部44は、後述するコンテンツ変換処理部45によって、取得されたコンテンツの形式が変換された場合には、変換済みのコンテンツをコンテンツ変換処理部45から取得する。そして、キャッシュ管理部44は、取得された変換済みのコンテンツを変換サーバ22のキャッシュ記憶部47に格納する。
また、キャッシュ管理部44は、キャッシュIDと対応付けて格納されたキャッシュの有無を「1」に変換する。その後、キャッシュ管理部44は、変換された変換済みのコンテンツをクライアント16へ送信する。
コンテンツ変換処理部45は、キャッシュ管理部44によって変換済みコンテンツが変換サーバ22のキャッシュに記憶されていないと判定された場合には、コンテンツサーバ26に記憶されたコンテンツをクライアント16が利用可能な形式に変換する。具体的には、コンテンツ変換処理部45は、キャッシュ管理部44によって変換済みコンテンツが記憶されていないと判定された場合には、コンテンツサーバ26に記憶されたコンテンツを取得する。また、コンテンツ変換処理部45は、変換サーバ24から送信されたキャッシュIDを取得する。
そして、コンテンツ変換処理部45は、取得されたキャッシュIDをキーとしてコンテンツ変換テーブル部38を検索し、変換元のコンテンツの形式と変換後のコンテンツの形式とを判別する。その後、コンテンツ変換処理部45は、コンテンツサーバ26から取得されたコンテンツを判別された変換後のコンテンツの形式に変換する。そして、コンテンツ変換処理部45は、変換後のコンテンツをキャッシュ管理部44へ送信する。
TCP管理部46は、委任制御部42から受信したサーバ側コネクション情報に従って、リクエストメッセージをコンテンツサーバ25へ送信する。また、TCP管理部46は、委任受付部43が受信したクライアント側コネクション情報を利用して、コンテンツサーバ26との間にコネクションを確立する。また、TCP管理部46は、コンテンツサーバ26からコンテンツを受信した場合には、受信されたコンテンツをキャッシュ管理部44を介して、コンテンツ変換処理部45に転送する。
次に、図20を用いて、コンテンツ変換システムの処理の流れについて説明する。図20は、コンテンツ変換システムの処理の流れを説明するための図である。図20に示す例では、変換サーバ23は、クライアント15の端末種別を示す種別情報「CL_A」とコンテンツサーバ25に記憶されたコンテンツを示すコンテンツ情報「A1」との組に対応付けられた変換サーバであるものとする。
まず、クライアント15は、リクエストメッセージをレイヤ4スイッチ21へ送信する。レイヤ4スイッチ21は、リクエストメッセージを受信した場合には、ランダムに選択された変換サーバである変換サーバ22へリクエストメッセージを送信する。変換サーバ22は、リクエストメッセージを解析し、宛先コンテンツサーバを判別する。また、変換サーバ22は、種別情報「CL_A」とコンテンツ情報「A1」との組に対応付けられた変換サーバ23のIPアドレスを特定する。
そして、変換サーバ22は、特定された変換サーバ23に委任要求メッセージを送信する。変換サーバ23は、委任要求メッセージを受信した場合には、コンテンツサーバ26との間にコネクションを確立する。そして、変換サーバ23は、確立したコネクションのコネクション情報を含む委任応答メッセージを生成し、生成された委任応答メッセージを変換サーバ22へ送信する。
変換サーバ22は、変換サーバ23から委任応答メッセージを受信した場合には、受信された委任応答メッセージから変換サーバ23とコンテンツサーバ26との間に確立されたコネクションのコネクション情報を解析する。そして、変換サーバ22は、解析されたコネクション情報を用いて、クライアント15から送信されたリクエストメッセージをコンテンツサーバ25へ送信する。つまり、変換サーバ22は、変換サーバ23としてコンテンツサーバ25へリクエストメッセージを送信する。
また、変換サーバ22は、コネクション制御メッセージを用いて、レイヤ4スイッチ21のアドレス変換テーブルを変更する。つまり、変換サーバ22は、変換サーバ23から送信される情報をクライアント15へ送信するようにレイヤ4スイッチ21を設定する。
次に、コンテンツサーバ25は、コンテンツ情報「A1」が示すコンテンツを変換サーバ23へ送信する。変換サーバ23は、コンテンツ情報「A1」が示すコンテンツを受信した場合には、コンテンツ情報「A1」が示すコンテンツの形式をクライアント15が利用可能な形式に変換したコンテンツをキャッシュに記憶しているか否かを判別する。
そして、変換サーバ23は、変換済みのコンテンツをキャッシュに記憶していると判別した場合には、レイヤ4スイッチ21を介して、クライアント15にキャッシュに記憶されていた変換済みのコンテンツを送信する。また、変換サーバ23は、変換済みのコンテンツをキャッシュに記憶していないと判別した場合には、コンテンツサーバ25から受信されたコンテンツの形式をクライアント15が利用可能な形式に変換する。そして、変換サーバ23は、変換済みのコンテンツをレイヤ4スイッチ21を介して、クライアント15へ送信する。
このように、変換サーバ22〜24は、クライアントの端末種別と送信を要求されたコンテンツとに対応付けられた変換サーバに処理の委任を要求する。例えば、図21に示す例では、変換サーバ23には、端末種別「CL_A」とコンテンツサーバ25に記憶されたコンテンツとの組に対応付けられている。図21は、データの流れを説明するための図である。このような例では、変換サーバ22は、端末種別「CL_A」のクライアント15からコンテンツサーバ25に記憶されたコンテンツの送信を要求するリクエストを受信した場合には、処理を変換サーバ23に委任する。
つまり、変換サーバ22〜24は、端末種別「CL_A」の端末からコンテンツサーバ25に記憶されたコンテンツを要求するリクエストを受信した場合には、変換サーバ23に処理を必ず委任することとなる。このため、変換サーバ22〜24は、いずれかの変換サーバがキャッシュを有する場合には、キャッシュを有する変換サーバに処理を委任することとなる。
結果として、変換サーバ22〜24は、キャッシュヒットを保証しつつ、各変換サーバ22〜24のキャッシュの同期を不用とし、変換サーバの数に応じた処理能力を発揮することができる。
また、変換サーバ22は、リクエストメッセージを変換サーバ23に送信するのではなく、変換サーバ23がコンテンツを取得するために必要な情報のみを変換サーバ23に送信する。つまり、変換サーバ22〜24は、2台の変換サーバの間で少ないデータをやり取りするだけで、キャッシュヒットを保証する。
例えば、変換テーブル管理部30、変換処理部32、TCP管理部39、宛先決定部40、担当サーバ管理部41、委任制御部42、委任受付部43、キャッシュ管理部44、コンテンツ変換処理部45、TCP管理部46は、電子回路である。ここで、電子回路の例として、ASIC(Application Specific Integrated Circuit)やFPGA (Field Programmable Gate Array)などの集積回路、またはCPU(Central Processing Unit)やMPU(Micro Processing Unit)などを適用する。
また、アドレス変換テーブル記憶部31、振分先サーバ情報記憶部33、宛先決定テーブル部34、担当サーバ管理テーブル部35、レイヤ4スイッチ制御用アドレス情報記憶部36、キャッシュ管理テーブル部37、キャッシュ記憶部47は、記憶装置である。また、コンテンツ変換テーブル部38は、記憶装置である。ここで、記憶装置の例として、RAM(Random Access Memory)、ROM(Read Only Memory)、フラッシュメモリ (flash memory)などの半導体メモリ素子、または、ハードディスク、光ディスクなどを適用する。
[レイヤ4スイッチの処理の流れ]
次に、図22及び図23を用いて、レイヤ4スイッチ21の処理の流れについて説明する。図22は、レイヤ4スイッチの処理の流れを説明するためのフローチャートである。図23は、制御メッセージを受信したレイヤ4スイッチの処理の流れを説明するためのフローチャートである。
レイヤ4スイッチ21は、パケットを受信すると(ステップS101)、受信されたパケットのTCP/IPヘッダを変更するためのエントリが変換テーブルに記憶されているか否かを判定する(ステップS102)。レイヤ4スイッチは、エントリが変換テーブルに記憶されていると判別された場合には(ステップS102肯定)、変換テーブルに記憶された変換テーブルのエントリに従って、受信されたレイヤのTCP/IPヘッダの書換を行う(ステップS104)。
一方、レイヤ4スイッチ21は、エントリが変換テーブルに記憶されていないと判別された場合には(ステップS102否定)、新たなエントリを生成する(ステップS103)。次に、レイヤ4スイッチ21は、変換テーブルに記憶された変換テーブルのエントリに従って、受信されたレイヤのTCP/IPヘッダの書換を行う(ステップS104)。その後、レイヤ4スイッチ21は、TCP/IPヘッダの書換を行ったパケットを送信する(ステップS105)。
次に、図23を用いて、制御メッセージを受信したレイヤ4スイッチ21の処理の流れについて説明する。レイヤ4スイッチ21は、変換サーバ23より制御メッセージを受信すると(ステップS201)、変換テーブルのエントリを制御メッセージに従って変更する(ステップS202)。次に、レイヤ4スイッチ21は、エントリ制御メッセージの送信元である変換サーバにAckを送信する(ステップS203)。その後、レイヤ4スイッチ21は、処理を終了する。
次に、複数の図を用いて、コンテンツ変換システムが有する各装置が実行する処理の流れについて説明する。まず、図24を用いて、クライアント15からリクエストメッセージを取得した変換サーバ22の処理について説明する。図24は、リクエストメッセージを受信した変換サーバの処理の流れを説明するためのフローチャートである。
まず、変換サーバ22は、クライアント15からリクエストメッセージを受信すると(ステップS301)、受信されたリクエストメッセージから、要求対象となるコンテンツを記憶する宛先コンテンツサーバ25を決定する(ステップS302)。また、変換サーバ22は、担当サーバとして、クライアント15の端末種別「CL_A」とクライアント15が要求したコンテンツとに対応付けられた担当サーバである変換サーバ23を特定する(ステップS303)。
次に、変換サーバ22は、特定された担当サーバが自装置であるか否かを判別する(ステップS304)。そして、変換サーバ22は、担当サーバが自装置ではないと判別した場合には(ステップS304否定)、担当サーバへ委任要求メッセージを送信する(ステップS305)。つまり、変換サーバ22は、変換サーバ23へ委任要求メッセージを送信する。次に、変換サーバ22は、変換サーバ23から委任応答メッセージを受信する(ステップS306)。また、変換サーバ22は、コネクション制御メッセージをレイヤ4スイッチ21へ送信し、レイヤ4スイッチ21に記憶されたアドレス変換テーブルを制御する(ステップS307)。
次に、変換サーバ22は、ステップS301にて受信されたリクエストメッセージを分割し、分割されたリクエストメッセージを宛先コンテンツサーバ25へ送信する(ステップS308)。次に、変換サーバ22は、分割されたリクエストメッセージを送信するたびに、返答として宛先コンテンツサーバ25より送信されるAckを、変換サーバ23を介して受信する(ステップS309)。また、変換サーバ22は、Ackを受信した場合には、分割されたリクエストメッセージをすべて送信したか否かを判別する(ステップS310)。
そして、変換サーバ22は、分割されたリクエストメッセージを全て送信していないと判別した場合には(ステップS310否定)、まだ送信されていないリクエストメッセージをコンテンツサーバ25へ送信する(ステップS308)。一方、変換サーバ22は、分割されたリクエストメッセージを全て送信したと判別した場合には(ステップS310肯定)、Ack転送解除通知を変換サーバ23へ送信する(ステップS311)。その後、変換サーバ22は、処理を終了する。
また、変換サーバ22は、ステップS304にて、担当サーバが自装置であると判別した場合には(ステップS304肯定)、自装置にキャッシュが記憶されているか否かを判別する(ステップS312)。つまり、変換サーバ22は、クライアント15の端末種別に応じて、リクエスト対象のコンテンツを変換した変換済みコンテンツのキャッシュが自装置に記憶されているか否かを判別する。
変換サーバ22は、自装置にキャッシュが記憶されていないと判別した場合には(ステップS312否定)、コンテンツサーバ25へリクエストを送信する(ステップS313)。次に、変換サーバ22は、コンテンツサーバ25からレスポンスを受信する(ステップS314)。つまり、変換サーバ22は、リクエスト対象のコンテンツを受信する。次に、変換サーバ22は、リクエストメッセージの送信元であるクライアント15の端末種別に応じて、受信されたコンテンツを変換する(ステップS315)。
次に、変換サーバ22は、変換済みコンテンツをキャッシュに記憶する(ステップS316)。また、変換サーバ22は、コンテンツサーバ25から受信したレスポンスメッセージのコンテンツを変換済みコンテンツに置き換える(ステップS317)。そして、変換サーバ22は、レスポンスメッセージをリクエストメッセージの送信元であるクライアント15へ送信する(ステップS319)。その後、変換サーバ22は、処理を終了する。
一方、変換サーバ22は、自装置にキャッシュが記憶されていると判別した場合には(ステップS312肯定)、キャッシュを用いて、レスポンスメッセージを作成する(ステップS318)。その後、変換サーバ22は、作成したレスポンスメッセージをリクエストメッセージの送信元であるクライアント15へ送信する(ステップS319)。その後、変換サーバ22は、処理を終了する。
次に、図25を用いて、委任要求メッセージを変換サーバ24から受信した変換サーバ22が実行する処理の流れについて説明する。図25は、委任要求メッセージを受信した変換サーバの処理を説明するためのフローチャートである。図25に示す例では、変換サーバ22は、変換サーバ24から送信された委任要求メッセージを受信するものとする。
まず、変換サーバ22は、委任元である変換サーバ24から委任要求メッセージを受信すると(ステップS401)、委任要求メッセージに格納されたキャッシュIDを用いて、自装置にキャッシュが記憶されているか否かを確認する(ステップS402)。次に、変換サーバ22は、宛先コンテンツサーバとのコネクションを確立する(ステップS403)。また、変換サーバ22は、委任応答メッセージを作成し、作成した委任応答メッセージを委任元である変換サーバ24へ送信する(ステップS404)。
次に、変換サーバ22は、ステップS403にて確立したコネクションからパケットを受信する(ステップS405)。つまり、変換サーバ22は、宛先コンテンツサーバからレスポンスメッセージのパケットを受信する。次に、変換サーバ22は、宛先コンテンツサーバからパケットを受信した場合には、Ack転送解除通知を変換サーバ24から受信済みであるか否かを判別する(ステップS406)。
変換サーバ22は、Ack転送解除通知を変換サーバ24から受信していないと判別した場合には(ステップS406否定)、宛先コンテンツサーバから受信されたAckを委任元である変換サーバ24へ送信する(ステップS407)。また、変換サーバ22は、Ack転送解除通知を変換サーバから受信したと判別した場合には(ステップS406肯定)、Ackの送信を行わずに、次の処理を実行する。
次に、変換サーバ22は、レスポンスメッセージの受信が完了したか否かを判別する(ステップS408)。変換サーバ22は、レスポンスメッセージの受信が完了していないと判別した場合には(ステップS408否定)、レスポンスメッセージの受信を継続する(ステップS405)。また、変換サーバ22は、レスポンスメッセージの受信が完了したと判別した場合には(ステップS408肯定)、ステップS402にて確認されたキャッシュが自装置に記憶されているか否かを判別する(ステップS409)。
変換サーバ22は、自装置にキャッシュが記憶されていないと判別した場合には(ステップS409否定)、レスポンスメッセージに格納されたコンテンツをクライアントの種別に応じて変換する(ステップS410)。次に、変換サーバ22は、変換結果をキャッシュに記憶する(ステップS411)。また、変換サーバ22は、レスポンスメッセージのコンテンツを変換結果に置き換える(ステップS412)。そして、変換サーバ22は、委任要求メッセージにて通知されたクライアント側コネクション情報に従って、レスポンスメッセージをクライアントへ送信する(ステップS414)。
一方、変換サーバ22は、自装置にキャッシュが記憶されていると判別した場合には(ステップS409肯定)、宛先コンテンツサーバから受信したレスポンスメッセージのコンテンツをキャッシュに置き換える(ステップS413)。その後、変換サーバ22は、委任要求メッセージにて通知されたクライアント側コネクション情報に従って、レスポンスメッセージをクライアントへ送信する(ステップS414)。
次に、図26を用いて、各装置間の処理の流れについて説明する。図26は、各装置の処理の流れを説明するためのシーケンス図(1)である。まず、クライアント15と変換サーバ22とは、レイヤ4スイッチ21を介して、3Way Handshakeを実行し、コネクションを確立する(ステップS501)。次に、クライアント15は、確立したコネクションを用いて、リクエストメッセージを変換サーバ22へ送信する(ステップS502)。変換サーバ22は、リクエスト対象のコンテンツを記憶する宛先コンテンツサーバのIPアドレス、ポート番号、及びクライアント側コネクション情報を変換サーバ23へ送信する(ステップS503)。
次に、変換サーバ23は、通知された宛先コンテンツサーバのIPアドレス、及びポート番号を用いて、コンテンツサーバ26との間にコネクションを確立する(ステップS504)。そして、変換サーバ23は、コンテンツサーバ26との間に確立したコネクション情報を変換サーバ22へ通知する(ステップS505)。
変換サーバ22は、レイヤ4スイッチに対して、コネクション制御メッセージを送信し、TCP/IPヘッダの変換ルールを設定する(ステップS506)。また、変換サーバ22は、変換サーバ23とコンテンツサーバ26との間に確立されたコネクションを利用して、リクエストメッセージをコンテンツサーバ26へ送信する(ステップS507)。コンテンツサーバ26は、リクエストメッセージを受信した場合には(ステップS508)、レスポンスを変換サーバ23へ送信する(ステップS509)。
変換サーバ23は、レスポンスの受信後、自装置にキャッシュが記憶されているか否かを判別し、キャッシュがある場合には、レスポンスに格納されたコンテンツをキャッシュに置き換える。また、変換サーバ23は、自装置にキャッシュが記憶されていないと判別した場合には、レスポンスに格納されたコンテンツを変換する。その後、変換サーバ23は、レスポンスをクライアント15へ送信する。つまり、変換サーバ23は、クライアント15の端末種別に応じて変換されたコンテンツが格納されたレスポンスをクライアント15へ送信する。
ここで、委任元の変換サーバ22と委任先の変換サーバ23とは、コネクション情報にシーケンス番号と確認応答番号とを含め、相互に通知する。このため、図27に示すように、各変換サーバは、シーケンス番号及び確認応答番号に矛盾を生じさせることなく、コンテンツの変換処理を行う事ができる。結果として、変換サーバ22及び変換サーバ23は、クライアント15とコンテンツサーバ26に対して、新たな手段を付加せずとも、キャッシュヒットを保証しつつ変換サーバの台数に応じた処理能力を提供することができる。図27は、各装置の処理の流れを説明するためのシーケンス図(2)である。
また、図28は、従来の処理の流れを説明するためのシーケンス図である。図28に示す例では、変換サーバ#1は、クライアントからリクエストメッセージを受信した場合には、コンテンツサーバに対してコンテンツのリクエストを行う。そして、変換サーバ#1は、取得されたコンテンツを変換し、変換済みコンテンツをクライアントへ送信する。
このような処理の後、同一のリクエストメッセージが変換サーバ#2へ割当てられた場合には、変換サーバ#1にキャッシュがあるにもかかわらず、変換サーバ#2は、コンテンツのリクエストを行い、変換処理を実行する。つまり、変換サーバ#1及び変換サーバ#2は、キャッシュを適切に用いることができなかった。
一方、本実施例の各変換サーバ22〜24は、コンテンツと端末の種別との組に予め対応付けられている。そして、各変換サーバ22〜24は、リクエストメッセージを受信した場合には、リクエストメッセージの送信元であるクライアントの端末種別と送信を要求されたコンテンツとの組に対応付けられた変換サーバへ処理を委任する。このため、各変換サーバは、各変換サーバ22〜24のキャッシュを同期させずとも、キャッシュヒットを保証することができる。結果として、各変換サーバ22〜24は、変換サーバの台数に応じた処理能力を提供することができる。
[実施例2の効果]
上述したように、変換サーバ22は、コンテンツを示す情報と端末の種別を示す情報との組と変換サーバを一意に示すサーバ情報とを対応付けて記憶する。そして、変換サーバ22は、リクエストメッセージを受信した場合には、受信されたリクエストメッセージを解析し、リクエストメッセージを送信したクライアントの種別を示す種別情報と送信を要求されたコンテンツを示すコンテンツ情報を判別する。そして、変換サーバ22は、判別された種別情報とコンテンツ情報との組に対応付けられたサーバ情報を特定する。つまり、変換サーバ22は、変換処理を実行する変換サーバを特定する。そして、変換サーバ22は、特定されたサーバ情報が示す変換サーバに対して、委任要求メッセージを送信する。
つまり、変換サーバ22は、変換処理を振り分ける際に、変換処理の実行結果となるキャッシュがいずれかの変換サーバに記憶されている場合には、実行結果となるキャッシュを有する変換サーバに対して、変換処理を振り分ける。このため、変換サーバ22は、同一のリクエストメッセージを受信した場合には、同一の変換サーバに変換処理を実行させることができる。この結果、変換サーバ22は、各変換サーバ22〜24に記憶されたキャッシュを適切に利用することができる。
また、変換サーバ22は、他の変換サーバ23〜24とキャッシュを同期させずとも、各変換サーバ22〜24のいずれかにキャッシュが存在する場合には、必ずキャッシュヒットさせることができる。この結果、変換サーバ22は、処理負荷を増大させることなく、各変換サーバ22〜24に記憶されたキャッシュを適切に利用することができる。
また、変換サーバ22は、クライアント15からコンテンツの送信を要求するリクエストメッセージを受信した場合には、受信されたリクエストメッセージに含まれるUser−AgentとRequest−URIとを判別する。このため、変換サーバ22は、クライアント15に新たな処理を実行させずとも、クライアント15の端末種別と、クライアント15が送信を要求したコンテンツとを判別することができる。
また、変換サーバ22は、コンテンツサーバ26との間にコネクションを確立させ、確立させたコネクションの情報であるサーバ側コネクション情報を変換サーバ24へ送信する。また、変換サーバ22は、サーバ側コネクション情報を変換サーバ23から受信した場合には、受信されたサーバ側コネクション情報を用いて、リクエストメッセージをコンテンツサーバ25へ送信する。
このため変換サーバ22は、変換サーバ23とコンテンツサーバ25との間のコネクションを保持したままで、コンテンツサーバ25にリクエストメッセージを送信することができる。また、変換サーバ22は、コンテンツサーバ26との間のコネクションを保持したままで、変換サーバ24からリクエストメッセージをコンテンツサーバ26に送信させることが出来る。このため、変換サーバ22は、各クライアント15〜17、及び、各コンテンツサーバ25〜27に新たな処理を実行させる必要がないという効果を奏する。
また、変換サーバ22は、クライアント15との間に確立したコネクションを示すクライアント側コネクション情報を変換サーバ23に通知する。また、変換サーバ22は、クライアント16と変換サーバ24との間に確立したコネクションを示すクライアント側コネクション情報を変換サーバ24から通知される。
このため、変換サーバ22は、変換サーバ23に対して、変換サーバ22とクライアント15との間に確立したコネクションを用いて、変換済みコンテンツをクライアント15に送信させることができる。また、変換サーバ22は、変換サーバ24とクライアント16との間に確立したコネクションを用いて、変換済みコンテンツをクライアント16へ送信することができる。結果として、変換サーバ22は、各クライアント15〜17に新たな処理を実行させる必要がないという効果を奏する。