JP3642305B2 - COMMUNICATION SYSTEM, PACKET EXCHANGE METHOD THEREOF, AND RECORDING MEDIUM CONTAINING EXCHANGE PROGRAM - Google Patents

COMMUNICATION SYSTEM, PACKET EXCHANGE METHOD THEREOF, AND RECORDING MEDIUM CONTAINING EXCHANGE PROGRAM Download PDF

Info

Publication number
JP3642305B2
JP3642305B2 JP2001246139A JP2001246139A JP3642305B2 JP 3642305 B2 JP3642305 B2 JP 3642305B2 JP 2001246139 A JP2001246139 A JP 2001246139A JP 2001246139 A JP2001246139 A JP 2001246139A JP 3642305 B2 JP3642305 B2 JP 3642305B2
Authority
JP
Japan
Prior art keywords
client
server
packet
connection
unit
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.)
Expired - Fee Related
Application number
JP2001246139A
Other languages
Japanese (ja)
Other versions
JP2002261792A (en
Inventor
正好 小林
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.)
NEC Corp
Original Assignee
NEC Corp
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 NEC Corp filed Critical NEC Corp
Priority to JP2001246139A priority Critical patent/JP3642305B2/en
Publication of JP2002261792A publication Critical patent/JP2002261792A/en
Application granted granted Critical
Publication of JP3642305B2 publication Critical patent/JP3642305B2/en
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Images

Description

【0001】
【発明の属する技術分野】
本発明は、パケット交換による通信システムに関し、特に、サーバとクライアント間の通信を効率的に交換する通信システムとその交換方法に関する。
【0002】
【従来の技術】
OSI参照モデルのネットワークプロトコルでは、データ通信ネットワークの機能を7つの階層(Layer)に大別しており、下位の階層から順に物理層、デタリンク層、ネットワーク層、トランスポート層、セッション層、プレゼンテーション層、アプリケーション層がある。それぞれ順に第1層(Layer 1)、
第2層(Layer 2)、・・・と呼ばれることもある。
【0003】
また、通信ネットワーク上のノードには、その通信の交換において参照するデータの階層に対応して、レイヤ2スイッチ(Layer 2 Switch)、レイヤ3スイッチ(Layer 3 Switch)、レイヤ4スイッチ(Layer 4 Switch)と呼ばれるもの等がある。また最近では、更に上位のアプリケーション層の情報に基づいて緻密にフローやトラフィックを制御するレイヤ7スイッチ(又、4−7層スイッチ)がある。
【0004】
図18は、レイヤ7スイッチである交換機100bを備える従来の通信システムの構成を示すブロック図である。
【0005】
図18の従来の通信システムでは、複数のサーバ70を備えるサーバ群71及びクライアント60は、パケット交換網のネットワーク50で互いに接続している。パケット交換網としては、IP(Internet Protocol)ネットワーク等がある。
【0006】
各クライアント60は、ネットワーク50を介してサーバ群71内のサーバ70からサービスを受ける。このサービスでは、まず、クライアント60がサーバ70へと双方向通信のできるトランスポート層のコネクションを確立(例えば、TCPプロトコル)し、クライアント60からサーバ70に取得したいデータの識別子が送られることにより、その指定されたデータがサーバ70からクライアント60に送られる。また、1つのコネクションで複数のデータの取得要求を出すことも可能であり、サーバ70はその要求を受けたデータを順次クライアント60に送る。
【0007】
クライアント60は、あるサーバ70から取得したいデータを全て取得し終えた場合には、クローズ要求をサーバ70へ送り、サーバ側にコネクションの切断を指示することができる。
【0008】
このサービスに使われている、双方向通信を行なうトランスポート層のコネクションは、パケット内に、パケットに含まれているトランスポート層でのデータの位置を示すシーケンス番号、パケット中のデータのトランスポート層でのデータ長、通信相手に対して今までに確実に受信を終えているトランスポート層でのデータ位置を示すAck番号が含まれている。通信両端のトランスポート層プロトコル終端部(終端部)は、このシーケンス番号とAck番号を用いて通信途中で失われたパケットの再送制御を行なう。
【0009】
また、通信両端でフロー制御を行なうため、通信相手に受信バッファの残り容量を示すためのフィールド(ウィンドウフィールド)を備える場合もある。以下この値を、Win値と呼ぶこととする。
【0010】
また、通信の両端において、シーケンス番号の初期値をハンドシェイクを行なって互いに通知し合う。更に、コネクションの終わりは、互いにパケットにコネクション終了を示すフラグ(終了フラグ)の立ったパケットと、その受信確認を含むパケットをやりとりすることで、コネクションの切断を行なう。このようなプロトコルの例としては、インターネットで用いられているTCPプロトコルがある。
【0011】
次に、図18の従来の交換機100bの役割と動作をより詳細に説明する。
【0012】
図18の交換機100bは、クライアント60に、サーバ群71内の複数のサーバ70を仮想的に1台のサーバとして認識させ、クライアント60からのデータ取得要求を適切なサーバ70へと転送し、そのサーバ70からの応答のデータを当該クライアント60へと転送する機能を有している。
【0013】
クライアント60からは、サーバ群71は同一のネットワーク50アドレスを備える仮想的な1台のサーバ70(仮想サーバ)として認識されている。クライアント60が、当該アドレスの仮想サーバと接続しようとすると、まず、クライアント60と交換機100bの間にコネクションが張られる。
【0014】
クライアント60は、このコネクション上にデータ取得要求(取得したいデータの識別子)を渡す。交換機100bは、このコネクションを流れてきたデータ取得要求の識別子を基に適切な接続先のサーバ70を選択する。
【0015】
次に、交換機100bは、選択したサーバ70へコネクションを張り、コネクション上にデータ取得要求を転送する。サーバ70は、取得要求のあったデータをこのコネクション上へ流し、交換機100bはこのデータをクライアント60へ転送する。
【0016】
この時点で、クライアント60と交換機100b間のコネクションと、交換機100bとサーバ70間のコネクションの2つのコネクションがあることになるが、交換機100bはこのコネクションを1つにつなぎ合わせる。
【0017】
すなわち、クライアント60と交換機100b間、及び、交換機100bとサーバ70間の2つのトランスポート層のコネクションを1つに接続することにより、サーバ70とクライアント60とのそれぞれにトランスポート層の再送及びフロー制御を行なわせ、交換機100bは、当該コネクションに関する再送制御やフロー制御を行なう必要がなくなる。
【0018】
この動作を、スプライシングと呼ぶ。
【0019】
以下、従来のレイヤ7スイッチである交換機100bのスプライシングの処理を図面を参照して詳細に説明する。図19は、従来の交換機100bの構成を示すブロック図である。
【0020】
図19の交換機100bでは、クライアント側との通信を処理するクライアント側処理部10b、サーバ側との通信を処理するサーバ側処理部20b、各クライアントの接続先を判定する解析部30b、クライアントからの個々のデータ取得要求に対応する接続先のサーバを示すフォワーディングテーブル等を記録した記憶部40bを備えている。
【0021】
また、クライアント側処理部10bは、クライアント側の通信の終端を行なうクライアント側終端部11b、データの通信経路を切り替えるクライアント側切替部13b、各クライアントとのパケットの送受を行なうクライアント側通信部14bを備えている。またサーバ側処理部20bは、サーバ側の通信の終端を行なうサーバ側終端部21b、パケットのヘッダ情報を書き換えて更新するサーバ側更新部22b、データの通信経路を切り替えるサーバ側切替部23b、各サーバ70とのパケットの送受を行なうサーバ側通信部14bを備えている。
【0022】
クライアント60から交換機100bへのパケットは、図19の矢印Aからクライアント側切替部13bに届き、交換機100bからクライアント60へのパケットは図19の矢印B、Cに従ってクライアント側終端部11bやサーバ側更新部22bからクライアント60へと届けられる。
【0023】
また、サーバ側から交換機100bへのパケットは、図19の矢印Eから切替部23bに届き、交換機100bからサーバ70へのパケットは図19の矢印D等に従ってサーバ側終端部21bやサーバ側更新部22bからサーバ70へと届けられる。
【0024】
なお、クライアント側の切替部13bは、サーバ側更新部22bの指示に従って矢印Aから到着するパケットをクライアント側終端部11bかサーバ側更新部22bへと渡す。また、サーバ側の切替部23bはサーバ側終端部21bの指示に従って、矢印Eから到着するパケットをサーバ側更新部22b又は、サーバ側終端部21bへと渡す。
【0025】
まず、クライアント60が仮想サーバと接続しようとすると、コネクション確立のハンドシェイクが行われるが、この時のパケットは、サーバ側更新部22bがクライアント側切替部13bに指示して、クライアント60と、クライアント側終端部11bの間でやりとりされ、クライアント60とクライアント側終端部11bの間にコネクションが張られる。以下この時のコネクションの、クライアント60の初期シーケンス番号を“SC”、クライアント側処理部10bの初期シーケンス番号を“SU”とし、これを記録しておく。
【0026】
クライアント60は、このコネクション上にデータ取得要求(取得したいデータの識別子)を渡す。クライアント側終端部11bでは、トランスポート層プロトコルを処理して、このコネクション上の流れるデータを取り出して、解析部30bへとこのデータ取得要求を渡す。
【0027】
解析部30bは、例えばこのデータ取得要求を基に記憶部40bに記憶されたフォワーディングテーブルを参照する等の方法により、適切なサーバ70を選択することができる。そして、解析部30bは、サーバ側終端部21bに対してこの選択されたサーバ70へのコネクションを張るように指示し、サーバ側終端部21bは、指示されたサーバ70へとコネクションを張る。
【0028】
この時、サーバ側終端部21bとサーバ70との間で、コネクション確立のためのハンドシェイクが行われる。ここで、サーバ側終端部21bは、ハンドシェイクに関するパケットをサーバ側終端部21bとサーバ70との間でやりとりできるように、サーバ側切替部23bに対し適正な通信の経路を指示しておく。この時のコネクションのサーバ70の初期シーケンス番号を“SS”、サーバ側終端部21bの初期シーケンス番号を“SV”とし、これを記録しておく。
【0029】
次に、解析部30bがサーバ側終端部21bへと、データ取得要求を受け渡し、データ取得要求が確立されたコネクションを使ってサーバ70へと、データ取得要求を転送する。ここで、サーバ側終端部21bは、切替部23bに対して以降の当該サーバ70からの送られるパケットをサーバ側更新部22bへと渡すように切り換えを指示する。
【0030】
次に、サーバ70から、データ取得要求に対応するデータを乗せたパケットが交換機100bに到着する。このサーバ70から送られるパケットは、切替部23bによってサーバ側更新部22bへと受け渡される。
【0031】
サーバ側更新部22bは、このパケットの中継時においてヘッダ情報の更新を行なう。つまり、パケットのシーケンス番号とAck番号を書き換えて、必要があればトランスポート層プロトコルのチェックサムも正しく更新して、クライアント60へと送出する。
【0032】
また、これ以降の、サーバ70から送られたパケットのシーケンス番号とAck番号の更新は、そのパケットがクライアント側処理部10から(つまり、この交換機100bから)発信された場合のデータと同等になるように書き換えて更新する。
【0033】
例えば、上記で述べた以外のパケットがクライアント60から送信されていない場合には、次のように更新することができる。
【0034】
まず、シーケンス番号については、クライアント側終端部11bから受け取った、クライアント側終端部11bの初期シーケンス番号“SU”とサーバ側終端部21から受け取ったサーバ70の初期シーケンス番号“SS”の差を加える。すなわち、“更新するシーケンス番号=現在のシーケンス番号+SU−SS”である。この時、シーケンス番号の最大値を超える場合の処理については、トランスポート層プロトコルにおけるシーケンス番号の加算、減算の方法に準拠する。
【0035】
またAck番号については、クライアント側終端部11bから受け取った、クライアント60の初期シーケンス番号“SC”とサーバ側終端部21bから受け取ったサーバ側終端部21bの初期シーケンス番号“SV”の差を加える。すなわち、“更新するAck番号=現在のAck番号+SC−SV”とする。
【0036】
こうすることで、クライアント60のトランスポート層プロトコルは、このサーバ70からパケットをクライアント側処理部10bから(つまり、この交換機100bから)からやってきたパケットと見なして処理することができる。
【0037】
同様に、これ以降クライアント60からサーバ70に送られるパケットは、クライアント側切替部13bによってサーバ側更新部22へと渡され、当該パケットのシーケンス番号とAck番号を、当該パケットがサーバ側処理部20bから(つまり、交換機100bから)発せられたパケットと同等の値に書き換えて、送られる。すなわち、“更新するシーケンス番号=現在のシーケンス番号+SV−SC”、“更新するAck番号=現在のAck番号+SS−SU”と書き換えるのである。
【0038】
このようにして、以降のサーバ70とクライアント60の間データの授受は、トランスポート層プロトコルを終端するクライアント側終端部11bとサーバ側終端部21bを経由せずに、パケット毎にシーケンス番号を書き換えるのみ処理でやりとりすることができる。
【0039】
これが前述のコネクションスプライシングである。
【0040】
一般に、クライアント60からサーバ70にはデータ取得要求のような小さなデータ量しか流れないが、サーバ70からクライアント60には大量にデータが流れる。例えば、ウェブサーバに対してクライアントのウェブブラウザからアクセスする場合には、サーバ70からクライアント60には画像データ等の大量のデータが送信されることとなる。
【0041】
このコネクションスプライシングを行なうことによって、大量のデータを複雑なトランスポート層の終端処理(再送及びフロー制御等)をすることなく中継することが可能となり、スループットを向上することができる。
【0042】
【発明が解決しようとする課題】
しかし、上述した従来の交換機100bでは、スプライシング時においては、クライアント60から送られるデータ取得要求を交換機100bが参照することができないという問題があった。
【0043】
また、従来の交換機100bでは、最初にクライアント60から送られてきたデータ取得要求のみに基づいて、その要求に対応するサーバ70を決定しコネクションをスプライシングするため、コネクションスプライシング後にクライアント60から到着するデータ取得要求を、その要求に基づいて適切なサーバ70へと転送することができないという問題があった。
【0044】
また、最初に送られてきたデータ取得要求に基づく、選択されたサーバ70からクライアント60へのデータの転送が終了した場合には、同じサーバ70に対する他のデータ取得要求が残っている場合にも、前述のクローズ要求をサーバ70へ送りコネクションを切断している。
【0045】
クライアント60は、コネクションが切断されてしまうため、サーバ70が処理しなかった取得要求については、再びコネクション確立(Handshake:ハンドシェイク)からやり直して取得する必要があり、必要なデータを取得するまでの遅延が大きくなってしまうという問題があった。
【0046】
本発明の第1の目的は、上記従来技術の欠点を解決し、スプライシング中においても、クライアントからサーバへと送信されるデータ取得要求等のパケットを監視し、対応する終端処理を実行することのできる通信システムとそのパケット交換方法、及び交換プログラムを記録した記録媒体を提供することである。
【0047】
本発明の第2の目的は、上記従来技術の欠点を解決し、スプライシング中においても、クライアントからサーバへと送信されるデータ取得要求等のパケットを参照し、常に適切なサーバ70へのデータ取得要求の転送を実現し、かつサーバからクライアント側へ送信される大量のデータについては、パケット毎にシーケンス番号とAck番号等のヘッダ情報を書き換えるのみのスプライシングによる簡素化された終端処理により、従来の交換機と同等のスループットを同時に実現する通信システムとそのパケット交換方法、及び交換プログラムを記録した記録媒体を提供することである。
【0048】
本発明の第3の目的は、上記従来技術の欠点を解決し、クライアントからのデータ取得要求に応答して送信される全てのデータをクライアントが受け取るまで、クライアントと交換機の間で確立されたコネクションを切断せずに維持することにより、必要なデータを取得するまでの遅延を小さく保つことのできる通信システムとそのパケット交換方法、及び交換プログラムを記録した記録媒体を提供することである。
【0049】
【課題を解決するための手段】
上記目的を達成するため本発明の通信システムは、交換機を介してサーバとクライアントとの間でパケット通信を行なうパケット交換による通信システムにおいて、前記交換機が、前記サーバから前記クライアントに対して送信されるパケットの中継時に、当該パケットのヘッダ情報を、当該パケットが前記交換機から発信された場合に設定される内容に書き換えて、前記パケットを前記クライアントに対して発信し、前記クライアントからのデータ取得要求の中継時から、前記サーバから前記クライアントに対し送信される応答のパケットの送信が終了するまでの間、当該サーバから当該クライアントへの方向に対し片方向のスプライシングの処理を行ない、かつ前記クライアントから前記サーバへの方向の通信に対して再送制御及びフロー制御を行なうことを特徴とする。
【0050】
請求項2の本発明の通信システムは、前記交換機は、各前記クライアントからの接続を受け付け、当該クライアントとの間におけるコネクションを管理しパケットを送受するクライアント側処理部と、各前記サーバに対しアクセスし、当該サーバとの間におけるコネクションを管理しパケットを送受するサーバ側処理部と、前記サーバから前記クライアントに対して送信されるパケットの中継時に、前記パケットのヘッダ情報の書換えを行なって、前記パケットを前記クライアントに対し発信する手段と、前記サーバから当該クライアントへの方向に対し片方向のスプライシングの処理を行ない、かつ前記クライアントから前記クライアント側処理部への方向の通信及び前記サーバ側処理部から前記サーバへの方向の通信に対しては、確立したコネクションを切断することなく再送制御及びフロー制御を行なう手段を備えることを特徴とする。
【0051】
請求項3の本発明の通信システムは、前記クライアント側処理部は、各前記クライアントとの間のコネクションを制御し、各前記クライアントからの接続や要求を受け付けるクライアント側終端部と、前記サーバから前記クライアントに対し送信されるパケットを、ヘッダ情報を書き換えて中継するクライアント側更新部を備え、前記サーバ側処理部は、各前記サーバとの間のコネクションを管理し、前記クライアント側終端部から送られる各前記サーバに対する命令やデータを中継するサーバ側終端部と、各前記サーバから各前記クライアントに対し送信されるパケットを受け付けて、前記クライアント側更新部に送るサーバ側更新部を備えることを特徴とする。
【0052】
請求項4の本発明の通信システムは、前記パケットのヘッダ情報には、個々のパケットに分割された送信データにおける、当該パケット中のデータの順番を示すシーケンス番号と、当該パケットのデータ長と、通信相手が既に受信済みであるデータのシーケンス番号を示すAck番号を含むことを特徴とする。
【0053】
請求項5の本発明の通信システムは、前記パケットのヘッダ情報には、通信相手がまだ受信していない受信バッファの残り容量を示すWin値を含むことを特徴とする。
【0054】
請求項6の本発明の通信システムは、前記クライアント側終端部は、各前記クライアントから受け付けたパケットのヘッダ情報を、前記クライアント側更新部及び前記サーバ側終端部に通知する手段を備え、前記サーバ側更新部は、各前記サーバから各前記クライアントに対し送信されるパケットのヘッダ情報を前記サーバ側終端部に通知する手段を備え、前記クライアント側更新部及び前記サーバ側終端部は、前記通知されたヘッダ情報を記録し参照して、パケットのヘッダ情報を適正に書き換えることを特徴とする。
【0055】
請求項7の本発明の通信システムは、前記片方向のスプライシング処理が設定された状態において、前記クライアント側終端部は、各前記クライアントから受け付けたパケットに対する応答処理を前記クライアント側更新部に指示し、記クライアント側更新部は、前記応答処理の指示を受け付けて、当該クライアントに対する応答のパケットを生成して発信する手段を備えることを特徴とする。
【0056】
請求項8の本発明の通信システムは、前記サーバ側更新部は、1つの前記クライアントに対する複数の前記サーバからのパケットの送信を中継し、中継するパケットのヘッダ情報から、個々の前記サーバにおけるパケットの送信の終了の旨を示すフラグを除去する手段を備え、前記クライアントとの間のコネクションを切断することなく、前記複数のサーバを切り換えて発信されるパケットを前記クライアントに中継することを特徴とする。
【0057】
請求項9の本発明の通信システムは、前記クライアント側終端部及び前記サーバ側終端部は、前記クライアントから前記サーバに対して個々のパケットに分割されて送信される送信データを、元の分割する前の状態に復元し、各パケットを、サーバを選択して送信する手段を備えることを特徴とする。
【0058】
請求項10の本発明の通信システムは、各前記クライアントが接続する接続先のサーバを決定する解析部を備え、前記解析部は、前記クライアント側終端部から、前記クライアントが各前記サーバに対し発信する要求の情報を取得する手段と、前記要求に基づいて、当該クライアントが接続すべき接続先のサーバを判定する手段と、前記サーバ側終端部に対して、当該クライアントの前記判定された接続先のサーバへの接続を指示する手段を備えることを特徴とする。
【0059】
請求項11の本発明の通信システムは、前記クライアント側終端部及び前記サーバ側終端部は、前記クライアントから前記サーバに対して、個々のパケットに分割されて送信される送信データを元の分割する前の状態に復元した後に、当該サーバに対し送信する手段を備え、前記解析部は、前記元の分割する前の状態に復元された送信データに基づいて、前記接続先のサーバを判定する手段を備えることを特徴とする。
【0060】
請求項12の本発明の通信システムは、前記解析部は、前記クライアントにより発信された未処理のデータ取得要求を、その接続先のサーバ毎に順次グループに分類する手段と、前記サーバ側終端部に対して、分類された各前記グループ毎に、対応するサーバへの接続と当該グループに分類された前記データ取得要求の実行を指示する手段を備えることを特徴とする。
【0061】
請求項13の本発明の交換機は、複数のサーバとクライアントとの通信ネットワークを介したパケット通信を中継する交換機において、前記サーバから前記クライアントに対して送信されるパケットの中継時に、当該パケットのヘッダ情報を、当該パケットが交換機から発信された場合に設定される内容に書き換えて、前記パケットを前記クライアントに対して発信し、前記クライアントからのデータ取得要求の中継時から、前記サーバから前記クライアントに対し送信される応答のパケットの送信が終了するまでの間、当該サーバから当該クライアントへの方向に対し片方向のスプライシングの処理を行ない、かつ前記クライアントから前記サーバへの方向の通信に対して再送制御及びフロー制御を行なうことを特徴とする。
【0062】
請求項14の本発明の交換機は、各前記クライアントからの接続を受け付け、当該クライアントとの間におけるコネクションを管理しパケットを送受するクライアント側処理部と、各前記サーバに対しアクセスし、当該サーバとの間におけるコネクションを管理しパケットを送受するサーバ側処理部と、前記サーバから前記クライアントに対して送信されるパケットの中継時に、前記パケットのヘッダ情報の書換えを行なって、前記パケットを前記クライアントに対し発信する手段と、前記サーバから当該クライアントへの方向に対し片方向のスプライシングの処理を行ない、かつ前記クライアントから前記クライアント側処理部への方向の通信及び前記サーバ側処理部から前記サーバへの方向の通信に対しては、確立したコネクションを切断することなく再送制御及びフロー制御を行なう手段を備えることを特徴とする。
【0063】
請求項15の本発明の交換機は、前記クライアント側処理部は、各前記クライアントとの間のコネクションを管理し、各前記クライアントからの接続や要求を受け付けるクライアント側終端部と、前記サーバから前記クライアントに対し送信されるパケットを、ヘッダ情報を書き換えて中継するクライアント側更新部を備え、前記サーバ側処理部は、各前記サーバとの間のコネクションを管理し、前記クライアント側終端部から送られる各前記サーバに対する命令やデータを中継するサーバ側終端部と、各前記サーバから各前記クライアントに対し送信されるパケットを受け付けて、前記クライアント側更新部に送るサーバ側更新部を備えることを特徴とする。
【0064】
請求項16の本発明の交換機は、前記パケットのヘッダ情報には、個々のパケットに分割された送信データにおける、当該パケット中のデータの順番を示すシーケンス番号と、当該パケットのデータ長と、通信相手が既に受信済みであるデータのシーケンス番号を示すAck番号を含むことを特徴とする。
【0065】
請求項17の本発明の交換機は、前記パケットのヘッダ情報には、通信相手がまだ受信していない受信バッファの残り容量を示すWin値を含むことを特徴とする。
【0066】
請求項18の本発明の交換機は、前記クライアント側終端部は、各前記クライアントから受け付けたパケットのヘッダ情報を、前記クライアント側更新部及び前記サーバ側終端部に通知する手段を備え、前記サーバ側更新部は、各前記サーバから各前記クライアントに対し送信されるパケットのヘッダ情報を前記サーバ側終端部に通知する手段を備え、前記クライアント側更新部及び前記サーバ側終端部は、前記通知されたヘッダ情報を記録し参照して、パケットのヘッダ情報を適正に書き換えることを特徴とする。
【0067】
請求項19の本発明の交換機は、前記片方向のスプライシング処理が設定された状態において、前記クライアント側終端部は、各前記クライアントから受け付けたパケットに対する応答処理を前記クライアント側更新部に指示し、記クライアント側更新部は、前記応答処理の指示を受け付けて、当該クライアントに対する応答のパケットを生成して発信する手段を備えることを特徴とする。
【0068】
請求項20の本発明の交換機は、前記サーバ側更新部は、1つの前記クライアントに対する複数の前記サーバからのパケットの送信を中継し、中継するパケットのヘッダ情報から、個々の前記サーバにおけるパケットの送信の終了の旨を示すフラグを除去する手段を備え、前記クライアントとの間のコネクションを切断することなく、前記複数のサーバを切り換えて発信されるパケットを前記クライアントに中継することを特徴とする。
【0069】
請求項21の本発明の交換機は、前記クライアント側終端部及び前記サーバ側終端部は、前記クライアントから前記サーバに対して個々のパケットに分割されて送信される送信データを、元の分割する前の状態に復元し、各パケットを、サーバを選択して送信する手段を備えることを特徴とする。
【0070】
請求項22の本発明の交換機は、各前記クライアントが接続する接続先のサーバを決定する解析部を備え、前記解析部は、前記クライアント側終端部から、前記クライアントが各前記サーバに対し発信する要求の情報を取得する手段と、前記要求に基づいて、当該クライアントが接続すべき接続先のサーバを判定する手段と、前記サーバ側終端部に対して、当該クライアントの前記判定された接続先のサーバへの接続を指示する手段を備えることを特徴とする。
【0071】
請求項23の本発明の交換機は、前記クライアント側終端部及び前記サーバ側終端部は、前記クライアントから前記サーバに対して、個々のパケットに分割されて送信される送信データを元の分割する前の状態に復元した後に、当該サーバに対し送信する手段を備え、前記解析部は、前記元の分割する前の状態に復元された送信データに基づいて、前記接続先のサーバを判定する手段を備えることを特徴とする。
【0072】
請求項24の本発明の交換機は、前記解析部は、前記クライアントにより発信された未処理のデータ取得要求を、その接続先のサーバ毎に順次グループに分類する手段と、前記サーバ側終端部に対して、分類された各前記グループ毎に、対応するサーバへの接続と当該グループに分類された前記データ取得要求の実行を指示する手段を備えることを特徴とする。
【0073】
請求項25の本発明のパケット交換方法は、複数のサーバとクライアントとの間の、通信ネットワークを介したパケット通信を中継する交換機のパケット交換方法において、前記サーバから前記クライアントに対して送信されるパケットの中継時に、当該パケットのヘッダ情報を、当該パケットが交換機から発信された場合に設定される内容に書き換えて、前記パケットを前記クライアントに対して発信し、前記クライアントからのデータ取得要求の中継時から、前記サーバから前記クライアントに対し送信される応答のパケットの送信が終了するまでの間、当該サーバから当該クライアントへの方向に対し片方向のスプライシングの処理を行ない、かつ前記クライアントから前記サーバへの方向の通信に対して再送制御及びフロー制御を行なうことを特徴とする。
【0074】
請求項26の本発明のパケット交換方法は、各前記クライアントとの間のコネクションを管理し、各前記クライアントからの接続や要求を受け付けるステップと、前記サーバから前記クライアントに対し送信されるパケットを、ヘッダ情報を書き換えて中継するステップと、各前記サーバとの間のコネクションを管理し、前記クライアントから送られる各前記サーバに対する命令やデータを中継するステップを備え、前記パケットのヘッダ情報には、個々のパケットに分割された送信データにおける、当該パケット中のデータの順番を示すシーケンス番号と、当該パケットのトランスポート層以下のデータ長と、通信相手が既に受信済みであるデータのシーケンス番号を示すAck番号と、通信相手がまだ受信していない受信バッファの残り容量を示すWin値を含むことを特徴とする。
【0075】
請求項27の本発明のパケット交換方法は、1つの前記クライアントに対する複数の前記サーバからのパケットの送信を中継し、中継するパケットのヘッダ情報から、個々の前記サーバにおけるパケットの送信の終了の旨を示すフラグを除去するステップを備え、前記クライアントとの間のコネクションを切断することなく、前記複数のサーバを切り換えて発信されるパケットを前記クライアントに中継することを特徴とする。
【0076】
請求項28の本発明のパケット交換方法は、前記クライアントから前記サーバに対して個々のパケットに分割されて送信される送信データを、元の分割する前の状態に復元し、各パケットを、サーバを選択して送信するステップを備えることを特徴とする。
【0077】
請求項29の本発明のパケット交換方法は、前記クライアントが各前記サーバに対し発信する要求の情報を取得するステップと、前記要求に基づいて、当該クライアントが接続すべき接続先のサーバを判定するステップと、当該クライアントの前記判定された接続先のサーバへの接続を指示するステップを備えることにより、各前記クライアントが接続する接続先のサーバを決定することを特徴とする。
【0078】
請求項30の本発明のパケット交換方法は、前記クライアントにより発信された未処理のデータ取得要求を、その接続先のサーバ毎に順次グループに分類するステップと、分類された各前記グループ毎に、対応するサーバへの接続と当該グループに分類された前記データ取得要求の実行を指示するステップを備えることを特徴とする。
【0079】
請求項31の本発明の交換プログラムを記録した記録媒体は、コンピュータを制御することにより、複数のサーバとクライアントとの間の、通信ネットワークを介したパケット通信を中継する交換プログラムをコンピュータにより読み取り可能に記録した記録媒体において、前記交換プログラムは、前記サーバから前記クライアントに対して送信されるパケットの中継時に、当該パケットのヘッダ情報を、当該パケットが前記交換機から発信された場合に設定される内容に書き換えて、前記パケットを前記クライアントに対して発信し、前記クライアントからのデータ取得要求の中継時から、前記サーバから前記クライアントに対し送信される応答のパケットの送信が終了するまでの間、当該サーバから当該クライアントへの方向に対し片方向のスプライシングの処理を行ない、かつ前記クライアントから前記サーバへの方向の通信に対して再送制御及びフロー制御を行なうことを特徴とする。
【0080】
請求項37の本発明のサーバは、交換機を介してサーバとクライアントとの間でパケット通信を行なう通信システムにおけるサーバであって、前記交換機における前記クライアントからのデータ取得要求の中継時から、前記クライアントに対し送信される応答のパケットの送信を終了するまでの間、片方向のスプライシングによって当該クライアントへに対し前記パケットを送信することを特徴とする。
【0081】
請求項45の本発明のクライアントは、交換機を介してサーバとクライアントとの間でパケット通信を行なう通信システムにおけるクライアントであって、前記交換機における前記サーバへのデータ取得要求の中継時から、前記サーバから受信される応答のパケットの送信を終了するまでの間、片方向のスプライシングによって当該サーバから前記パケットを受信することを特徴とする。
【0082】
請求項55の本発明の通信システムは、前記解析部は、前記クライアントにより発信された未処理のデータ取得要求を、その接続先のサーバ毎に順次グループに分類する手段と、前記サーバ側終端部に対して、分類された各前記グループ毎に、対応するサーバへの接続と当該グループに分類された前記データ取得要求の実行及び取得要求の送信後にサーバとのコネクションを切断する事を指示する手段を備えることを特徴とする。
【0083】
【発明の実施の形態】
以下、本発明の実施の形態について図面を参照して詳細に説明する。
【0084】
まず、通信ネットワークを介しサーバとクライアントとの間でパケット通信を行なう本実施の形態による通信システムの概念について、図1を参照して説明する。図1において、100は複数のサーバの通信ネットワークへの接続を中継する本発明による片方向終端交換機、60はクライアント、70はサーバである。
【0085】
本発明においては、大量のデータが転送されることの多い、サーバ70からクライアント60への方向の通信のみ対してスプライシングを行ない、同時にクライアント60からサーバ70への方向の通信に対しては、再送制御やフロー制御等の終端処理を実行する。
【0086】
従来では、クライアント60と交換機100b間及び交換機100bとサーバ70間のコネクションの2つのコネクションを、クライアント60サーバ70間の1つのコネクションにスプライシングを行ない、交換機100bでは、再送やフロー制御等の終端処理を行なうことができなかったのに対して、本本発明の片方向終端交換機100では、クライアント60とサーバ70との間を両方向共に単一のTCPコネクションにするのではなく、サーバ70からクライアント60方向に流れるデータに対してのみ、スプライシング処理によるパケットのシーケンス番号やAck番号の書き換えのみを行なって、サーバ70やクライアント60自身にその再送制御及びフロー制御を行なわせるものである。
【0087】
ここで、クライアント60から片方向終端交換機100へのトランスポート層のコネクションにおいては、片方向終端交換機100は、クライアント60に対して、クライアント60から片方向終端交換機100方向へ流れるデータの再送制御及びフロー制御を行なって終端する。更に、交換機100とサーバ70間のコネクションも、片方向終端交換機100は、サーバ70に対して、片方向終端交換機100からサーバ70方向へ流れるデータの再送制御及びフロー制御を行なって終端する。
【0088】
図2は、本発明の第1の実施の形態の片方向終端交換機100を用いたネットワーク構成の一例を示すブロック図である。
【0089】
本実施の形態では、図18の例に示される従来技術と比べて、従来の交換機100bの代わりに、片方向のみのスプライシングを行なう片方向終端交換機100を備える点がその特徴である。
【0090】
従来の交換機100bではクライアント60とサーバ70との間の両方向の通信のそれぞれに、通信の終端を行なう状態とスプライシングの状態とを同時に同一の状態を設定することしかできなかったが、本実施の形態の片方向終端交換機100では、大量のデータが転送されることの多い、サーバ70からクライアント60への方向の通信のみ対してスプライシングを行ない、同時にクライアント60からサーバ70への方向の通信に対しては、再送制御やフロー制御等の終端処理を実行するのである。
【0091】
図2のサーバ群71内の各サーバ70及びクライアント60の役割は、図18を用いて説明した従来技術のものと同様である。またこれらが、パケット交換網のネットワーク50で互いに接続されている点も同様である。更に、図2のサーバ群71の各サーバ70が提供するサービスも、従来技術と同じくトランスポート層プロトコルのコネクションを用いて接続され、パケット内には、パケットに含まれているトランスポート層でのデータの位置を示すシーケンス番号、パケット中のデータのトランスポート層でのデータ長、また、通信相手に対して、今までの中で確実に受信を終えたているトランスポート層でのデータ位置を示すAck番号をヘッダ情報として含むものとする。また、コネクション確立や終了の方法も全く同様とする。
【0092】
本実施の形態の片方向終端交換機100の機能は、従来の交換機100bとスプライシングの方法において相違する。
【0093】
従来は、クライアント60と交換機100b間及び交換機100bとサーバ70間のコネクションの2つのコネクションを、クライアント60サーバ70間の1つのコネクションにスプライシングするのであり、この場合交換機100bでは、再送やフロー制御等の終端処理を行なうことができない。
【0094】
しかし、本実施の形態の片方向終端交換機100においては、クライアント60とサーバ70との間を両方向共に単一のTCPコネクションにするのではなく、サーバ70からクライアント60方向に流れるデータに対してのみ、従来のスプライシングのようにパケットのシーケンス番号やAck番号の書き換えのみを行なって、サーバ70やクライアント60自身にその再送制御及びフロー制御を行わせる。
【0095】
ここで、クライアント60から片方向終端交換機100へのトランスポート層のコネクションにおいては、片方向終端交換機100は、クライアント60に対して、クライアント60から片方向終端交換機100方向へ流れるデータの再送制御及びフロー制御を行なって終端する。更に、交換機100とサーバ70間のコネクションも、片方向終端交換機100は、サーバ70に対して、片方向終端交換機100からサーバ70方向へ流れるデータの再送制御及びフロー制御を行なって終端することが従来と異なる。
【0096】
以下この本発明のスプライシングの方法を、片方向スプライシングと呼ぶ。
【0097】
図3は、本発明の第1の実施の形態の片方向終端交換機100の構成を示すブロック図である。
【0098】
図3を参照すると、本実施の形態の片方向終端交換機100は、クライアント側との通信を処理するクライアント側処理部10、サーバ側との通信を処理するサーバ側処理部20、アプリケーション層の通信データを解析し又各クライアントの接続先を判定する解析部30、クライアントからの個々のデータ取得要求に対応する接続先のサーバを示すフォワーディングテーブル等を記録した記憶部40を備えている。
【0099】
また、クライアント側処理部10は、クライアント側の通信の終端を行なう終端部11、パケットのヘッダ情報の書き換えて更新する更新部12、各クライアントとのパケットの送受を行なう通信部14を備えている。またサーバ側処理部20は、サーバ側の通信の終端を行なう終端部21、パケットのヘッダ情報を書き換えて更新する更新部22、データの通信経路を切り替える切替部23、各サーバ70とのパケットの送受を行なう通信部24を備えている。
【0100】
まず、本実施の形態の交換機100の各構成要素の機能を概説する。
【0101】
クライアント側終端部11
クライアント側終端部11は、クライアント60とのトランスポート層でのコネクションの確立を行ない、クライアント60との間でトランスポート層での再送制御やフロー制御を含むデータの受け取りを行なう。
【0102】
コネクションが確立した場合には、そのクライアント60のWin値(受信バッファの残り容量)をサーバ側終端部21へ通知する。
【0103】
片方向スプライシング状態では、クライアント60からのパケットの受け取り確認の応答(肯定応答、Acknowledge:Ack)については、クライアント側終端部11が行なうのではなく、クライアント側更新部12に対して、Ack番号及びフロー制御用のWin値を通知して応答の送信を依頼する。また、片方向スプライシング状態では、クライアント60からデータを受け取ると、クライアント60からのパケットのAck番号、Win値をサーバ側終端部21に受け渡して、サーバ70に対する応答(Ack)の送信依頼を行なう。また、クライアント側更新部12から、現在のAck番号及びWin値の問い合わせにも回答する
【0104】
片方向スプライシング状態への移行は、サーバ側更新部22から通知される。
【0105】
更に、クライアント60からコネクション切断要求を示す終了フラグ付きパケットが到着すれば、クライアント60とクライアント側処理部10との間の双方向のコネクションの内で、クライアント60からクライアント側処理部10へ向かう側のコネクションについてのトランスポート層の切断処理を行なう。更にこの場合には、サーバ側終端部21へ、クライアント60からクライアント側処理部10へ向かう側のコネクションが切断されたことを通知する。
【0106】
クライアント側処理部10からクライアント60に向かう方向のコネクションについては、サーバ70から到着する終了フラグ付きパケットの中のデータの最終シーケンス番号をサーバ側更新部22が通知するので、この最終シーケンス番号“F”を“更新F=F−SS+SU”のように更新する。そして以後これと同じAck番号が到着した場合には、これによりコネクションが切断されたことを認識し(つまり、終了フラグ付きパケットの送信と、それに対する肯定応答のパケットが到着したとして)、クライアント側処理部10からクライアント60へ向かうコネクションのトランスポート層の切断処理を行なう。ここで、“SS”は、サーバ70の初期シーケンス番号であり、“SU”は、クライアント側処理部10の初期シーケンス番号であり、詳細は後述する。
【0107】
クライアント側更新部12
サーバ70からクライアント60へ送信されるパケットを、サーバ側更新部22から受け取り、そのパケットのシーケンス番号やAck番号、Win値等のヘッダ情報を書き換えて、その更新したパケットをクライアント60に送信する。
【0108】
シーケンス番号は、“シーケンス番号:=パケットのシーケンス番号−SS+SU”により書き換えることができる。ここで、“SS”は、サーバ側処理部20とサーバ70とのコネクションの(サーバ70の)初期シーケンス番号。“SU”は、クライアント側処理部10とクライアント60とのコネクションの(クライアント側処理部10の)初期シーケンス番号である。これらの値は、それぞれクライアント側終端部11及びサーバ側終端部21から得る。
【0109】
また、シーケンス番号の加減算については、シーケンス番号の最大値を超えたり最小値を下回る場合の処理は、当該トランスポートプロトコルのシーケンス番号の加減算の扱いに準拠するものとする。
【0110】
Ack番号とWin値においては、それぞれクライアント側処理部10からクライアント60に対して現時点で新規のパケットが送信された場合に返される最新のAck番号とWin値に書き換える。これら最新のAck番号とWin値は、クライアント側終端部11から取得することができる。
【0111】
また、必要であれば、トランスポート層プロトコルのチェックサムも正しく更新する。
【0112】
また、クライアント側終端部11から、クライアント60に対する応答(Ack)の送信依頼を受け取った時にも、Ack番号、Win値は上記の通りに、シーケンス番号については、一番最近に使用したシーケンス番号を使って応答パケットを生成し送信する。
【0113】
クライアント側更新部12には、クライアント60にサーバ70から送られるパケットが順次サーバ側更新部22から送られるのであり、その送られたパケットのシーケンス番号の書き換え後の値を順次記録する。上記の一番最近に使用したシーケンス番号とは、この書き換え後のシーケンス番号の最新のものを指す。また、シーケンス番号の初期値とは、片方向スプライシング状態になると同時にサーバ側更新部22からパケットが到着するので、このパケット対する書き換えたシーケンス番号を初期値とする。
【0114】
また、クライアント側終端部11から送信依頼されるクライアント60への応答(Ack)のパケットは、送信を少し待たせて、サーバ側更新部22からのパケットと併せて1つのパケットとして送信する方法も可能である。
【0115】
解析部30
クライアント60から発信されたデータ取得要求(複数でもよい)の情報をクライアント側終端部11から取得し、アプリケーション層の終端を行ないその情報を解析し、適切な接続先のサーバ70を決定する。接続先の決定の方法としては、例えば、クライアント60から要求される個々のデータに対応して、当該データを提供するサーバ70名を記録したテーブル(以下、このテーブルをフォワーディングテーブルと呼ぶこととする)を予め備え、このフォワーディングテーブルを検索する等の方法により決定することができる。
【0116】
また、この接続先のサーバ70を決定すると、そのデータ取得要求と接続先のサーバ70名をサーバ側終端部21に受け渡し、接続を指示する。
【0117】
記憶部40
解析部30が適切なサーバ70を選択するための情報を記憶する。例えば、記憶部40には、上記のフォワーディングテーブルを記録することにより、解析部30からの検索要求に応答して適切なサーバ70名を返すことができる。
【0118】
サーバ側終端部21
解析部30から指示される接続先のサーバ70名に従い、その接続先のサーバ70にトランスポート層のコネクションを確立する。
【0119】
このコネクションの確立時には、クライアント側終端部11から通知されたWin値(受信バッファの残り)を、サーバ側処理部20のWin値の初期値として登録し使用する。
【0120】
このサーバ70とのコネクションの確立時には、サーバ70から送られるパケットをサーバ側終端部21が受け取るように、切替部23に接続の切り換えを予め指示する。
【0121】
サーバ側終端部21は、このコネクションが確立すると、データ取得要求を確立したトランスポート層コネクションを用いてサーバ70に送る。続いて切替部23へ指示して、サーバ70から送られるこのコネクションに関するパケットを、以後はサーバ側更新部22が受け取るように切り換えを行なう。これ以降は、片方向スプライシング状態となる。
【0122】
またこれ以降は、サーバ70から送られたパケットのAck番号とWin値が順次サーバ側更新部22から通知されるようになり、これらの値を使って、サーバ70へ送るトランスポート層のデータ(データ取得要求等)についての、再送制御及び、フロー制御を行なう。
【0123】
またこれ以降は、クライアント60が当該パケットの受信確認の応答(Ack)のパケットを順次発信し、クライアント側終端部11がこれを受信してその各パケットのAck番号及びWin値が順次サーバ側終端部21に通知される。サーバ側終端部21では、通知されたAck番号を“Ack番号:=クライアント側終端部11から通知されたAck番号−SU+SS”として更新し、またWin値は通知された値をそのまま用いて、サーバ70に対する当該パケットの受信確認の応答(Ack)のパケットを生成し、これをサーバ70に送信する。
【0124】
ここで“SU”は、クライアント60とクライアント側処理部10の間のコネクションの、クライアント側処理部10の初期シーケンス番号であり、“SS”は、サーバ側処理部20とサーバ70とのコネクションの、サーバ70側の初期シーケンス番号である。この“SU”の値は、クライアント側終端部11から通知される。
【0125】
また、シーケンス番号の加減算においては、シーケンス番号の最大値を超えたり最小値を下回る場合の処理は、当該トランスポートプロトコルのシーケンス番号の加減算の扱いに準拠するものとする。
【0126】
更に、クライアント60からコネクションの切断要求が発信されると、クライアント側終端部11がこれを受信して、サーバ側終端部21に通知される。サーバ側終端部21では、クライアント60とサーバ70間の双方向のコネクションの内で、サーバ側処理部20からサーバ70へ向かうコネクションが切断されたものとして(終了フラグ付きパケットをサーバ70へ送ったものとして)、切断処理を行なう。またこの場合に、クライアント60からクライアント側処理部10へ向かうコネクションの切断処理は、クライアント側終端部11により行われる。
【0127】
更に、サーバ70からクライアント60に向かうコネクションについては、サーバ側終端部21は、サーバ側更新部22から、サーバ70から到着する終了フラグ付きパケットの中のデータの最終シーケンス番号の通知を受けて、この最終シーケンス番号“F”を、“更新F=F−SS+SU”として更新して記録しておく。もし、この更新された最終シーケンス番号と同じAck番号が到着した場合には、コネクションは切断されたものとして(終了フラグ付きパケット及び、それに対するAckパケットが到着したものとして)、サーバ70から交換機100を介してクライアント60へ向かうコネクションのトランスポート層の切断処理をする。
【0128】
サーバ側更新部22
サーバ側更新部22は、サーバ70からクライアント60に送信されるパケットを、サーバ70から受け付けてクライアント側更新部12に送る。また、サーバ側更新部22は、サーバ70からパケットを受信する度に、そのパケットのAck番号及びWin値をサーバ側終端部21へ通知する。
【0129】
受信したパケットのトランスポート層データの長さが“0”の場合には、クライアント側更新部12へ送らずにそのパケットを破棄する。また、“0”でない場合には、パケットをクライアント側更新部12へと受け渡す。
【0130】
また、当該コネクションの確立後における“0”でないパケットの初めての受信時には、そのパケットをクライアント側更新部12へ受け渡すと同時に、クライアント側終端部11に対して片方向スプライシングの開始の指示を出す。
【0131】
また、サーバ70から終了フラグ付きのパケットを受信した場合には、そのパケット内のデータの最終シーケンス番号“F”を、サーバ側終端部21及びクライアント側終端部11へ渡す。
【0132】
次に、本実施の形態の交換機100の各構成要素の動作を説明する。
【0133】
図4は、本実施の形態のクライアント側終端部11の動作を説明するためのフローチャートである。
【0134】
図4を参照すると、本実施の形態のクライアント側終端部11は、まずクライアント60からパケットを受信し(ステップ301)、もしそれがコネクション確立に関する一連のパケットの場合には(ステップ302)、クライアント60とのトランスポート層でのコネクションの確立を行ない(ステップ303)、クライアント60の初期シーケンス番号“SC”及び、クライアント側処理部10の初期シーケンス番号“SU”を記憶し(ステップ304)、クライアント60に応答(Ack)を返して、クライアント60との間でトランスポート層での再送制御やフロー制御を含むデータの受け取りを行なう(ステップ305)。
【0135】
コネクション確立後、後に述べる、片方向スプライシング状態になるまでは(ステップ306)、クライアント60に応答(Ack)を返して、クライアント60との間でトランスポート層での再送制御やフロー制御を含むデータの受け取りを行なう(ステップ307)。またサーバ側終端部21には、この時のクライアント60の側のWin値を渡しておく。
【0136】
片方向スプライシング状態になれば(ステップ306)、以後データの受け取り確認の応答(Ack)は、クライアント側終端部11が行なうのではなく、クライアント側更新部12にAck番号及びフロー制御用のWin値を通知して応答の送信を依頼する(ステップ308)。また、片方向スプライシング状態では、クライアント60からデータを受け取ると、クライアント60からのパケットのAck番号、Win値をサーバ側終端部21に受け渡して、サーバ70に対する応答の送信依頼を行なう(ステップ309)。また、クライアント側更新部12からの、現在のAck番号及びWin値の問い合わせにも回答する。この片方向スプライシング状態への移行は、サーバ側更新部22から通知される。
【0137】
クライアント60からコネクション切断要求を示す終了フラグ付きパケットが到着した場合には(ステップ310)、クライアント60とクライアント側処理部10の双方向のコネクションの内、クライアント60からクライアント側処理部10へ向かう側のコネクションが切断されたものとしてトランスポート層の切断処理を行なう(ステップ311)。更に、サーバ側終端部21に対して、クライアント60からクライアント側処理部10へ向かう側のコネクションが切断されたことを通知する(ステップ312)。
【0138】
クライアント側処理部10からクライアント60へ向かうコネクションについては、サーバ70から到着する終了フラグ付きパケットの中のデータの最終シーケンス番号がサーバ側更新部22から通知されるため、この最終シーケンス番号“F”を“更新F=F−SS+SU”のように更新して記録しておく。
【0139】
もし、この最終シーケンス番号と同じAck番号が到着した場合には、コネクションは切断されたものとして(終了フラグ付きパケットの送信とそれに対するAckパケットが到着したとして)、トランスポート層の切断処理を行なう(ステップ313、314)。
【0140】
図5は、本実施の形態のクライアント側更新部12の動作を説明するためのフローチャートである。
【0141】
図5を参照すると、本実施の形態のクライアント側更新部12は、まずクライアント側終端部11からの命令や、サーバ側更新部からのパケットを受け付ける(ステップ401)。もし、サーバ側更新部22からクライアント60に送信するパケットを受け取ると(ステップ402)、そのパケットのシーケンス番号、Ack番号、Win値等を書き換えて(ステップ403)、クライアント60へ更新されたパケットを送信する(ステップ404)。ここでの、シーケンス番号、Ack番号、Win値の書き換え方法は、前述の通りである。
【0142】
また、クライアント側終端部11からクライアントへの応答(Ack)の送信依頼を受け取った場合には(ステップ405)、Ack番号、Win値は前述の通りに、シーケンス番号は一番最近に使用したシーケンス番号を用いて応答(Ack)のパケットを生成し(ステップ406)、クライアント60に送信する(ステップ404)。この応答のパケットの生成の方法も、前述の通りである。
【0143】
また、クライアント側終端部11から依頼されるクライアント60への肯定応答(Ack)の送信は、少し待たせて、サーバ70がクライアント60に送るパケットをサーバ側更新部22から受けて、これと併せて1つのパケットとして送信する方法も可能である。
【0144】
図6は、本実施の形態のサーバ側終端部21の動作を説明するためのフローチャートである。
【0145】
図6を参照すると、本実施の形態のサーバ側終端部21は、まず解析部30からの命令や、サーバ側更新部22やクライアント側終端部11からのAck番号、Win値の送信を受け付ける(ステップ501)。
【0146】
もし、解析部30から、コネクション確立の依頼があれば(ステップ502)、その解析部30が指定する接続先のサーバ70に対して、トランスポート層のコネクションを確立し(ステップ503)、初期シーケンス番号SV、SSを記録する(ステップ504)。このコネクション確立時には、サーバ70から到着するパケットをサーバ側終端部21が受け取るように、予め切替部23に指示しておく。
【0147】
コネクションが確立済みの時に、クライアント60から送られたパケットがサーバ70へ送るデータ取得依頼である場合には(ステップ505)、確立済みのトランスポート層コネクションを用いてデータ取得要求をサーバ70へと送るのであるが、もしこれがコネクション確立後にサーバ70へ送る最初のデータ取得要求である場合には(ステップ506)、切替部23へ指示して、これ以降のサーバ70からの該当するコネクションに関するパケットをサーバ側更新部22が受け取るように指示する(ステップ507)。そして、確立したトランスポート層コネクションを用いてデータ取得要求をサーバ70へと送る(ステップ508)。
【0148】
ステップ501において、サーバ側更新部22から、サーバ70から受け取ったパケットのAck番号とWin値が通知された場合は(ステップ509)、この各値を登録し、サーバ70へ送るトランスポート層のデータ(データ取得要求等)についての、再送制御やフロー制御等に用いる(ステップ510)。
【0149】
ステップ501において、クライアント側終端部11から、Ack番号及びWin値が知らされた場合は(ステップ511)、この値を前述の説明のように更新して、サーバ70へ送るトランスポート層のデータのAck番号及びWin値を決定してパケットを生成し(ステップ512)、そして、サーバ70へと応答(Ack)のパケットを送信し(ステップ513)、また、サーバ70へ送るトランスポート層のデータのAck番号及びWin値もこの値に更新する。
【0150】
更に、クライアント側終端部11から当該コネクションが切断されたことが通知されれば(ステップ514)、サーバ側処理部20とサーバ70間の双方向コネクションの内、サーバ側処理部20からサーバ70へ向かうコネクションが切断されたものとして(終了フラグ付きパケットをサーバ70へ送ったものとして)、トランスポート層の切断処理を行なう(ステップ515)。
【0151】
サーバ側処理部20からクライアント60へ向かうコネクションについては、サーバ70から到着する終了フラグ付きパケットの中のデータの最終シーケンス番号をサーバ側更新部22が通知するので、この最終シーケンス番号“F”を、前述の方法により更新して、もし更新された最終シーケンス番号と同じAck番号が到着した場合には(ステップ516)、コネクションは切断されたものとして(終了フラグ付きパケット及び、それに対するAckパケットが到着したものとして)、サーバ側処理部20からクライアント60へ向かうコネクションのトランスポート層の切断処理を行なう(ステップ517)。また、切替部23へこれ以降の当該コネクションのパケットをサーバ側終端部21に送るように指示する(ステップ514)。
【0152】
図7は、本実施の形態のサーバ側更新部22の動作を説明するためのフローチャートである。
【0153】
サーバ側更新部22は、まずサーバ70からクライアント60に送られるパケットを順次サーバ70から受信し(ステップ601)、そのパケットに書かれているAck番号及び、Win値を、サーバ側終端部21へ通知する(ステップ602)。
【0154】
サーバ70から終了フラグ付きパケットが到着した場合には(ステップ603)、そのパケット内のデータの最終シーケンス番号“F”を、サーバ側終端部21及びクライアント側終端部11へと受け渡し(ステップ604)、パケットをそのままクライアント側更新部12へと受け渡す(ステップ609)。
【0155】
ステップ603において、終了フラグ付きでないパケットを受信した時は、そのパケットのトランスポート層データの長さが“0”の場合には(ステップ605)パケットを破棄する(ステップ606)。
【0156】
また、データ長が“0”でない時は(ステップ605)、そのパケットをクライアント側更新部12へ受け渡す(ステップ609)のであるが、ただし、もし当該コネクションの“0”でない初めてのパケットをクライアント側更新部12へ受け渡す場合には(ステップ607)、同時にクライアント側終端部11へ片方向スプライシング開始の指示を出す(ステップ608)。
【0157】
図8は、本実施の形態の片方向終端交換機100内のデータの流れを説明するための図であり、片方向スプライシング動作が行われている時に、シーケンス番号、Ack番号、Win値、送信データ等がどのようにクライアント60、サーバ70、クライアント側終端部11、サーバ側終端部21、クライアント側更新部12、サーバ側更新部22等でやりとりされるのかを示している。
【0158】
クライアント60からクライアント側終端部11へのデータ送信とその応答、サーバ側終端部21からサーバ70へのデータ送信とその応答、サーバ70からクライアント60へのデータ送信とその応答の流れ、及び、受信バッファの残りを示すWin値が正しく処理されていることを以下に順に示す。
【0159】
クライアント60からクライアント側終端部11
クライアント60からのデータのシーケンス番号は、クライアント側終端部11でのトランスポート層プロトコル処理を経て、フローチャートの図4におけるステップ308で示したように(図8のY001に相当)、クライアント側更新部12からクライアント60へ送信される応答パケットのAck番号として反映される。
【0160】
また、クライアント側終端部11の受信バッファの残りも同様に、フローチャートの図4におけるステップ309で示したように(図8のY004に相当)、クライアント側更新部12からクライアント60へ送信されるパケットのWin値として反映され、適切な再送制御やフロー制御のために用いられる。
【0161】
サーバ側終端部21からサーバ70
サーバ側終端部21からサーバ70へのデータについては、シーケンス番号がサーバ70内のトランスポート層プロトコル終端部での処理を経て、Y008のように、サーバ側更新部22へのパケットのAck番号として反映される。これをフローチャートの図7のステップ602及び、フローチャートの図6のステップ510で示したように(図8のY005に相当)、クライアント側更新部12からクライアント60へ送信されるパケットのAck番号として反映される。
【0162】
また、サーバ70の受信バッファの残りも同様に、図8のY009が示すようにサーバ側更新部22へのパケットのAck番号として反映されるはずで、これを、これをフローチャートの図7のステップ602で示したように(図8のY006に相当)、クライアント側更新部12からクライアント60へ送信されるパケットのWin値として反映される。このようにして、正しく再送制御及び、フロー制御が行われる。
【0163】
サーバ70からクライアント60
サーバ70からクライアント60へのデータについては、サーバ70から受け取ったシーケンス番号をクライアント側に対して、クライアント側更新部12の動作フローチャートの図5のステップ403で示すように(図8のY007に相当)クライアント側終端部11から送信したデータであるかのようにシーケンス番号を書き換えて渡している。
【0164】
また、これに対してクライアント60から返るAck番号、Win値についても(図8のY010、Y011に相当)、Ack番号については、フローチャートの図6のステップ512で示したように、あたかもサーバ側終端部21が生成したAck番号であるかのように番号を更新してサーバ70へと返しており(図8のY002に相当)、また、Win値についても、フローチャートの図6のステップ512で示したようにサーバ70へと返しているので(図8のY003に相当)、正しくサーバ70とクライアント60の間での再送制御及び、フロー制御が行われる。
【0165】
また、本実施の形態のクライアント側終端部11及びサーバ側終端部21では、クライアント60からサーバ70に対して個々のパケットに分割されて送信される送信データを、元の分割する前の状態に復元した後に当該サーバに対し送信する方式も可能である。
【0166】
以上説明したように、本実施の形態の交換機100は、クライアント60から片方向終端交換機100方向、及び片方向終端交換機100からサーバ70方向へ流れるトランスポート層のデータに対し、それぞれクライアント60やサーバ70にに対して再送制御及びフロー制御を行ないトランスポート層を終端することができ、かつこれと同時に、サーバ70からクライアント60方向に流れるデータに対して、再送制御及びフロー制御を行なわずに従来のスプライシングの様にパケットのシーケンス番号やAck番号の書き換えのみによりパケットを高速に中継することができる。また、この片方向スプライシングの状態においては、サーバ70からクライアント60への方向のデータは、サーバ70やクライアント60自身が再送制御やフロー制御等を行なう。
【0167】
本実施の形態の交換機100は、以上のようにして片方向スプライシングの通信を実現することができる。
【0168】
次いで、上記のように構成される第1の実施の形態による通信システムにおける具体的な動作例を、図9のタイミングチャートを参照して説明する。図9は、第1の実施の形態におけるシーケンス番号とAck番号の時系列を示す。
【0169】
クライアント60、クライアント側処理部10の間でハンドシェイクが行なわれる。ここで、クライアント60側のデータの初期シーケンス番号は「1000」、クライアント側処理部10の初期シーケンスは「2000」とする(901)。
【0170】
クライアント60から、データ取得要求の載ったデータがクライアント側処理部10へ送信される。この時、データ取得要求はシーケンス番号「1001」から「1100」であったとする(902)。
【0171】
クライアント側処理部10は、このデータ取得要求に対するAck番号である「1101」をクライアント60へと返す(903)。
【0172】
解析部30では、受け取ったデータ取得要求(複数の取得要求が含まれる)の内、最初のいくつかが、サーバ70へと送信するのが正しいと判断し、サーバ70とコネクションを確立する。サーバ側処理部20の初期シーケンス番号は「3000」番、サーバ70の初期シーケンス番号は「4000」番であったとする(904)。
【0173】
サーバ70へ送信すべきデータ取得要求を送る(905)。
【0174】
要求に対するデータの一部(シーケンス番号「4001」〜「4200」)がクライアント60に返信される(906)。
【0175】
シーケンス番号、Ack番号が書き換えられ、クライアント60へ要求したデータが届けられる。番号変換によって、シーケンス番号は「2001」〜「2200」となり、Ack番号も「1101」に書き換わる(907)。
【0176】
クライアント60から、シーケンス番号「2200」までのデータが受領された事を示すAck番号のついたパケットが送られる(908)。
【0177】
このAck番号情報は、番号変換されて、サーバ側処理部20へ届けられる(909)。
【0178】
サーバ側処理部20では、番号変換されたAck番号を載せたパケットがサーバ70へと送信される(910)。
【0179】
サーバ70から要求に対する最後のデータ(シーケンス番号「4201」〜「4500」)がクライアント60に送られる。このパケットにはFINフラグが立てられている(911)。
【0180】
このパケットの最後のシーケンス番号に対するAck番号「4501」をサーバ側処理部20で記憶しておく(912)。
【0181】
クライアント側処理部10では、このパケットの最後のシーケンス番号に対するAck番号を番号変換した番号「2501」を記憶しておく(913)。
【0182】
シーケンス番号、Ack番号が書き換えられ、クライアント60へ要求したデータが届けられる。番号変換によって、シーケンス番号は「2201」〜「2500」となり、Ack番号も「1101」に書き換わる。クライアント60ではこのパケットを受けて、終了処理が始まる(914)。
【0183】
クライアント60から、Ack番号「2501」が返される(915)。
【0184】
クライアント側処理部10では、このAck番号を確認して、記憶している番号「2501」と一致するので、クライアント60がサーバ70からの要求に対する最後のデータを受け取ったことを知り、終了処理を行なう(916)。
【0185】
サーバ70側では、このパケットのAck番号を変換した番号「4501」が記憶している番号と一致するので、クライアント60がサーバ70からの要求に対する最後のデータを受け取ったことを知り、終了処理を行なう(917)。
【0186】
サーバ70に番号変換されたAck番号の載ったパケットが返される(918)。
【0187】
次に、本発明の第2の実施の形態を説明する。
【0188】
図10は、本発明の第2の実施の形態の片方向終端交換機100aを用いたネットワーク構成の一例を示すブロック図であり、図11は、本実施の形態の片方向終端交換機100aの構成を示すブロック図である。
【0189】
これらは、先の図2、図3に示される第1の実施の形態と同様であるが、クライアント側終端部11a、クライアント側更新部12a、解析部30a、サーバ側終端部21a、サーバ側更新部22aのそれぞれの動作が第1の実施の形態と異なる。
【0190】
まず、これらの構成要素について説明する。
【0191】
クライアント側終端部11a
第1の実施の形態のクライアント側終端部11との違いは、解析部30の指示でクライアント60とクライアント側終端部11aとの間のトランスポート層コネクションを切断(終了フラグつきパケットを送る)することができる点や、サーバ側更新部22aから最終シーケンス番号“F”の値を受け取らない点である。また、その他の動作は第1の実施の形態と同様である。
【0192】
すなわち、本実施の形態のクライアント側終端部11aは、クライアント60とのトランスポート層でのコネクションの確立を行ない、クライアント60との間でトランスポート層での再送制御やフロー制御を含むデータの受け取りを行なう。
【0193】
後に述べる、片方向スプライシング状態では、データの受け取り確認の応答については、クライアント側終端部11aが行なうのではなく、クライアント側更新部12aにAck番号及びフロー制御用のWin値を通知し応答(Ack)の送信を依頼する。
【0194】
また、片方向スプライシング状態では、クライアント60からデータを受け取ると、クライアント60からのパケットのAck番号、Win値をサーバ側終端部21に受け渡してサーバ70に対する応答の送信依頼を行なう。また、クライアント側更新部12aから、現在のAck番号及びWin値の問い合わせにも回答する。片方向スプライシング状態への移行は、サーバ側更新部22aから通知される。
【0195】
更に、クライアント60からコネクション切断要求を示す終了フラグ付きパケットが到着すれば、クライアント60からクライアント側処理部10aへ向かう側のコネクションについてのトランスポート層の切断処理を行なう。また、サーバ側終端部21aへ、クライアント60からクライアント側処理部10aへ向かう側のコネクションが切断されたことを通知する。
【0196】
クライアント側処理部10aからクライアント60へ向かうコネクションについては、解析部30aからの指示に従って、そのコネクションのトランスポート層の切断処理を行なう。
【0197】
クライアント側更新部12a
第1の実施の形態の片方向終端交換機100の、クライアント側更新部12の動作との違いは、シーケンス番号の書き換えに用いるサーバ70のコネクションの初期シーケンス番号は、サーバ側終端部21が対象とするサーバ70を変更する毎に変化するのであり、このため現在のコネクションの値を用いてシーケンス番号を“シーケンス番号:=パケットのシーケンス番号−SS+SU”と書き換える点である。
【0198】
ここで、“SS”は、サーバ側終端部21のサーバ70との現在のコネクションの初期シーケンス番号であり、その値はサーバ側終端部21から得る。
【0199】
本実施の形態の“SU”は、クライアント側処理部10aの、クライアント60とのコネクションの初期シーケンス番号又は、直前のサーバ70からの終了フラグを含むパケットの最終シーケンス番号+1である。この“SU”の値は、SUが初期シーケンス番号の時は、クライアント側終端部11aから、直前のサーバ70からの終了フラグを含むパケットの最終シーケンス番号+1の場合には、サーバ側更新部22aから受け取る。
【0200】
また、シーケンス番号の加減算においては、シーケンス番号の最大値を超えたり最小値を下回る場合の処理は、当該トランスポートプロトコルのシーケンス番号の加減算の扱いに準拠するものとする。
【0201】
解析部30a
解析部30aは、クライアント側終端部11aからのデータを取得して、アプリケーション層の終端を行ない、クライアント60からのデータ取得要求(一度に複数個の要求も可)を解析して適切なサーバ70を決定する。
【0202】
複数のデータ取得要求に対して、それぞれに対応するサーバ70が異なる場合には、複数のデータ取得要求を、順に前から対応するサーバ70毎にグループ分けをする。
【0203】
例えば、10個の取得要求R1〜R10があり、順にR1〜R2は第1サーバ、R3〜R5は第2サーバ、R6〜R10は第1サーバが対応する場合には、前から順にR1〜R2を第1グループ、R3〜R5を第2グループ、R6〜R10を第3グループとして、グループ分けをすることができる。
【0204】
このグループ分けの例においては、第1グループと第3グループに対応するサーバ70は同一の第1サーバであるが、ここでは取得要求を前から順にグループ分けすることにより、異なるグループに分けている。
【0205】
解析部30aは、このグループ毎にサーバ側終端部21へ、そのサーバ70名と取得要求を受け渡す。
【0206】
また、解析部30aは、1つのグループの最後の取得要求については、サーバ70に対して、当該データの送信が完了したらサーバ側からコネクションを切断するクローズ要求を付与する。しかし、ここでグループが最後である場合(他に未処理のグループが残っていない場合)においては、その処理中にクライアント60から更に追加のデータ取得要求があるかもしれないため、クローズ要求は追加しないものとする方式も効果的である。
【0207】
また、クライアント60からの追加のデータ取得要求に応じることにより、サーバ70を切り替える必要が発生した場合には、データ取得要求にクローズ要求を付与してサーバ側終端部21aへ渡すか,そのまま,データ取得要求をサーバ側終端部21aへ渡す.更にここで、その最初の追加リクエストでサーバ70を切り替える場合には、サーバ側終端部21aへコネクション切断要求をする。ある1つのグループに対する処理が完了すれば、サーバ側終端部21aから通知され、そして解析部30aは次のグループへと処理を指示する。
【0208】
解析部30aは、クライアント側終端部11aからのデータを取得する度に、この処理を繰り返す。
【0209】
解析部30aがクライアント60から受け取るデータ取得要求について、最後にクローズ要求が付与されている場合があるが、この場合には、当該データ取得要求のグループを切断対象グループとして記憶しておき、当該グループの処理を処理し終えた後に、クライアント60へのコネクション切断をクライアント側終端部11aに指示する。
【0210】
サーバ側終端部21a
第1の実施の形態のサーバ側終端部21との違いは、本実施の形態では解析部30aから受け渡されるデータ取得要求がグループ毎に分かれているので、それぞれのグループを順番に処理し、グループ毎にサーバ70とのコネクションを切断する点(これは、解析部30aからコネクション切断要求と同時に受け渡される、各グループの最後の取得要求に、クローズ要求が追加されている場合には、それを、サーバ側終端部21aがサーバ70へと転送することによって実現され,前記クローズ要求が追加されていない場合には,サーバ側終端部21aからサーバ70へ各グループの最後の取得要求を送信後明示的にコネクション切断要求を出す事によって実現される)や、新しいグループに対しては、そのグループについて指示されたサーバ70へとコネクションを確立し直して、そのデータ取得要求のグループをサーバ70へと転送する点や、サーバ70へ送るトランスポート層のデータのAck番号の決定に、確立し直す毎に異なるサーバ側の初期シーケンス番号を使う点が異なる。また、更新された最終シーケンス番号“F”に対応するAckパケットを受け取った場合に、解析部30aに通知する点も異なる。また、これ以外の処理は第1の実施の形態と同様である。
【0211】
すなわち、以下の通りである。
【0212】
サーバ側終端部21aは、解析部30aのからデータ取得要求の1つのグループとサーバ70名を受け取る。そして、そのサーバ70名に従って、サーバ70へとトランスポート層のコネクションを確立する。
【0213】
Win値の初期値は、初めてのコネクション確立時には、クライアント側終端部11aから通知されるWin値を使い、以降は前のコネクションの終了時(以下に述べる更新された最終シーケンス番号“F”と同じAck番号を持つ応答パケットを受け取った時)に記憶したWin値を初期値として使う。
【0214】
このコネクション確立時には、切替部23へ指示して、このデータ取得要求に応答してサーバ70から送信されるパケットを、サーバ側終端部21が受け取れるように指示する。
【0215】
コネクションが確立すると、確立したトランスポート層コネクションを用いてデータ取得要求のグループをサーバ70へと送る。なお、最後の取得要求には、クローズ要求が付与されている。
【0216】
同時に切替部23へ指示して、これ以降のサーバ70からの該当するコネクションに関するパケットを、サーバ側更新部22aへ到着させるように指示する。
【0217】
また、これ以降、サーバ側更新部22aから、サーバ70から受け取ったパケットのAck番号とWin値が通知されるようになり、この値を用いてサーバ70へ送るトランスポート層のデータ(データ取得要求等)についての、再送制御及び、フロー制御を行なう。
【0218】
また、これ以降、クライアント側終端部11aから、Ack番号及びWin値が通信され、Ack番号を“Ack番号:=クライアント側終端部11aから通知されたAck番号−SU+SS”と書き換えて更新し、Win値は通知された値をそのまま用いて、応答のパケットを生成しサーバ70へ送信する。
【0219】
ここで、“SU”は、クライアント60とクライアント側処理部10aとの間のコネクションのクライアント側処理部10aの初期シーケンス番号であり、“SS”は、サーバ側処理部20aと現在のサーバ70とのコネクションのサーバ側の初期シーケンス番号、又は、直前のサーバ70からの終了フラグ付きパケットの最終シーケンス番号+1である。“SU”の、クライアント側終端部11aの初期シーケンス番号は、クライアント側終端部11aから通知される。
【0220】
また、シーケンス番号の加減算においては、シーケンス番号の最大値を超えたり最小値を下回る場合の処理は、当該トランスポートプロトコルのシーケンス番号の加減算の扱いに準拠するものとする。
【0221】
更に、クライアント側終端部11aから当該コネクションが切断されたことを通知されれば、サーバ側処理部20aとサーバ70間の双方向コネクションの内で、サーバ側処理部20aからサーバ70へ向かうコネクションが切断されたものとして(終了フラグ付きパケットをサーバ70へ送ったものとして)、切断処理を行なう。
【0222】
サーバ側処理部20aからクライアント60へ向かうコネクションについては、サーバ70から到着する終了フラグ付きパケットの中のデータの最終シーケンス番号をサーバ側更新部22aが通知するので、この最終シーケンス番号“F”を“更新F=F−SS+SU”のように更新し、もしこの更新された最終シーケンス番号と同じAck番号が到着したら、コネクションは切断されたものとして(終了フラグ付きパケット及び、それに対するAckパケットが到着したものとして)、サーバ70から交換機100aを介してクライアント60へ向かうコネクションのトランスポート層の切断処理する。そして、解析部30に当該グループの処理が終了したことを通知する。また、この時のWin値を記憶する。
【0223】
解析部30aからコネクション切断要求を受け取った時には、切替部23へ、以降の当該コネクションのパケットはサーバ側終端部21へ送信するよう指示して、コネクションを切断し、切断が完了したらこれを解析部30へ通知する。
【0224】
サーバ側更新部22a
第1の実施の形態のサーバ側更新部22aとの違いは、サーバ70側からやってくるパケットに終了フラグが立っている場合に終了フラグを倒す処理が含まれ、最終シーケンス番号“F”の値をクライアント側終端部11aに渡す処理が不要となる点である。
【0225】
すなわち、以下の通りである。
【0226】
サーバ側更新部22aは、サーバ70から受け取ったパケットについて、そのパケットに書かれているAck番号及び、Win値を、サーバ側終端部21aへ通知する。また、パケットのトランスポート層データの長さが“0”の場合には、そのパケットを破棄する。
【0227】
また、データ長が“0”でない場合には、そのパケットをクライアント側更新部12aへと受け渡す。また、これが当該コネクションの“0”でない初めてのパケットをクライアント側更新部12aへ受け渡す場合には、同時にクライアント側終端部11aへ片方向スプライシング開始の指示を出す。
【0228】
また、サーバ70から終了フラグ付きパケットが到着したら、その終了フラグを落として、そのパケット内のデータの最終シーケンス番号“F”を、サーバ側終端部21へと受け渡す。
【0229】
次に、本実施の形態の各部の処理を説明する。
【0230】
図12は、本実施の形態のクライアント側終端部11aの動作を説明するためのフローチャートである。
【0231】
本実施の形態のクライアント側終端部11aの動作は、図4に示される第1の実施の形態のステップ301〜ステップ312が同様である。
【0232】
本実施の形態のクライアント側終端部11aの動作の第1の実施の形態との違いは、解析部30aからのコネクション切断要求を受け付けることができる点であり、解析部30aからコネクション切断要求を受け付けると(ステップ1001)、クライアント側終端部11aは、クライアント側処理部10aからクライアント60へ向かうコネクションを切断する(ステップ1002)。
【0233】
本実施の形態のクライアント側更新部12aの動作のフローチャートは、図5の第1の実施の形態と同様である。
【0234】
図13は、本実施の形態の解析部30aの動作を説明するためのフローチャートである。
【0235】
図13を参照すると、本実施の形態の解析部30aは、まずクライアント側終端部11aやサーバ側終端部21aのそれぞれから命令等を受け付ける。
【0236】
クライアント側終端部11aからデータ取得要求を受け付けた場合には(ステップ1102)、アプリケーション層の終端を行ない、クライアント60からのデータ取得要求(複数でもよい)を解析して、適切な接続先のサーバ70を決定する(ステップ1103)。そして、サーバ側終端部21へ、データ取得要求とサーバ70名を受け渡す。
【0237】
また、複数のデータ取得要求のそれぞれに対して対応するサーバ70が異なる場合には、サーバ毎にデータ取得要求をグループ分けする(ステップ1104)。グループ分けの方法としては、複数のデータ取得要求を、順に前から対応するサーバ70毎に分ける等の方法が可能である。
【0238】
つまりこの方法では、例えば、10個の取得要求R1〜R10があり、R1〜R2は第1サーバ、R3〜R5は第2サーバ、R6〜R10は第1サーバが対応する場合には、前から順にR1〜R2を第1グループ、R3〜R5を第2グループ、R6〜R10を第3グループとグループ分けをすることができる。この例では、第1グループと第3グループに対するサーバ70は、同じ第1サーバであるが、取得要求を前から順にグループ分けすることにより、異なるグループとしてグループ分けしている。
【0239】
またもし、そのクライアント60から到着したデータ取得要求にクローズ要求がついている場合には(ステップ1105)、クローズ要求付きであったグループを切断対象グループとして記憶しておく(ステップ1106)。
【0240】
そして、現在処理中のグループの処理が完了していれば(ステップ1107)、先頭のグループを取り出して(ステップ1108)、最後のグループでない場合には(ステップ1109)、グループの最後の取得要求にクローズ要求を付与する(ステップ1110)。これにより、サーバ70は、当該データの受信が完了すると、サーバ70の側からコネクションを切断する。そして、サーバ側終端部21へ適切なサーバ70名と取得要求を受け渡す(ステップ1111)。
【0241】
また、最後のグループの場合では、更に追加のデータ取得要求があるかもしれないので、クローズ要求を追加せずに、サーバ側終端部21へ適切なサーバ70名と取得要求を受け渡す(ステップ1111)。
【0242】
ステップ1107において、現在処理中のグループの処理が完了していない場合は、、現在処理中のグループが最終グループでなければ、分類したグループとサーバ70名を記憶して終了する(ステップ1112、1113)。
【0243】
もし最終グループであれば(ステップ1112)、新たに到着した取得要求の最初のグループ以外があれば対応するサーバ70名と共に記憶し(ステップ1114)、現在処理中のグループと新たに到着した取得要求の最初のグループが同じサーバ70行きの場合には(ステップ1115)、サーバ側処理部へ、新たに到着した取得要求の最初のグループを追加する(ステップ1116)。
【0244】
異なるサーバ70行きの場合、サーバ側終端部21へコネクション切断要求を出し、切断が完了してからサーバ側終端部21へと新たに到着した取得要求の最初のグループを受け渡す(ステップ1117)。
【0245】
また、ステップ1101において、サーバ70から、現在処理中のグループの処理完了通知がきた場合(ステップ1118)、もしグループが切断対象グループであれば、クライアント側終端部11aにクライアント60とのコネクションの切断を指示する(ステップ1119、1120)。
【0246】
そうでない場合においては、もし未処理グループが残っていれば、そのグループに対して前述のステップ1108以下と同様の処理を進める(ステップ1119、1121)。
【0247】
図14は、本実施の形態のサーバ側終端部21aの動作を説明するためのフローチャートである。
【0248】
図14を参照すると、本実施の形態のサーバ側終端部21aの動作の、図6の第1の実施の形態の動作との違いは、解析部30aからの命令を受信した場合の動作(ステップ1201〜ステップ1210)と、ステップ517とステップ518の間に解析部30aに対してコネクションの切断完了を通知する処理を含むことである。
【0249】
このため、ここでは解析部30aからの命令を受信した場合の動作(ステップ1201〜ステップ1210)を説明する。
【0250】
まず、解析部30aから、新しいデータ取得要求のグループを受け付けた場合には(ステップ1201)、同時に受け取った接続先のサーバ70名の指定に従い、そのサーバ70へトランスポート層のコネクションを確立する(ステップ1202)。このコネクション確立時には、予め切替部23へ指示して、サーバ70から到着するパケットをサーバ側終端部21が受け取るようにする。
【0251】
コネクションが確立すると、サーバ70へデータ取得依頼のグループを、確立したトランスポート層コネクションを用いて送るのであるが、同時に切替部23へ指示して、これ以降のサーバ70からの該当するコネクションに関するパケットは、サーバ側更新部22aへ到着させるように指示する。そして、確立したトランスポート層コネクションを用いてデータ取得要求をサーバ70へと送る(ステップ1203〜1205)。
【0252】
また、ステップ1201において、新しいグループの指定ではない場合は、もしそれがコネクション切断要求である場合には(ステップ1206)、サーバ終端部へのパケットの送信を切替部23aに指示して(ステップ1207)、コネクションを切断し(ステップ1208)、解析部30aにその切断完了を通知する(ステップ1209)。また、ステップ1206においてコネクション切断要求でない場合には、受け付けたデータ取得要求を対応するサーバ70に送信する(ステップ1210)。
【0253】
図15は、本実施の形態のサーバ側更新部22aの動作を説明するためのフローチャートである。
【0254】
図15を参照すると、本実施の形態のサーバ側更新部22aの動作の、図7に示される第1の実施の形態との違いは、ステップ603において終了フラグ付きのパケットをサーバ70から受信した場合の処理である(ステップ1301、1302)。
【0255】
本実施の形態のサーバ側更新部22aは、サーバ70から終了フラグ付きパケットが到着したら、そのパケット内のデータの最終シーケンス番号“F”を、サーバ側終端部21及びクライアント側終端部11aへと受け渡し(ステップ1301)、そのパケットの終了フラグを“ON”にして(倒して)変更し(ステップ1302)、その変更されたパケットをクライアント側更新部12aへと受け渡す(ステップ609)。
【0256】
図16は、本実施の形態の片方向終端交換機内のデータの流れを説明するための図であり、片方向スプライシング動作が行われている時に、シーケンス番号、Ack番号、Win値がどのようにクライアント60、サーバ70、クライアント側終端部11a、サーバ側終端部21、クライアント側更新部12a、サーバ側更新部22a等の間でやりとりされるのかを示している。
【0257】
本実施の形態においても、クライアント60からクライアント側終端部11aへのデータとその応答、サーバ側終端部21からサーバ70へのデータとその応答、サーバ70からクライアント60へのデータとその応答の流れ、及び、受信バッファの残りを示すWin値は、本発明の第1の実施の形態の図8において説明したものと同様にして正しく処理される。
【0258】
また、先の第1の実施の形態における説明と同様に、本実施の形態のクライアント側終端部11a及びサーバ側終端部21aが、クライアント60からサーバ70に対して個々のパケットに分割されて送信される送信データを、元の分割する前の状態に復元した後に当該サーバに対し送信する方式も可能であり、また個の方式を採用する場合においては、本実施の形態の解析部30aは、その分割前の状態に復元された送信データを参照して、その接続先のサーバの決定等の処理を行なうことも可能である。
【0259】
以上説明した、本実施の形態の交換機100aにおいては、第1の実施の形態の効果に加えて、解析部30aにより、クライアント60からのデータ取得要求を適切なサーバ70にグループ分けして振り分けることができる。
【0260】
また、各データ取得要求のグループに対するサーバ70からクライアント60へのデータ転送が完了したことを、サーバ70にクローズ要求を出して、サーバ70から到着する終了フラグの立っているパケットのシーケンス番号の終わりにより検知することができ、正しいタイミングでサーバ70を切り替えることができる。
【0261】
また、サーバ70からクライアント60へ送信されるパケットの終了フラグを倒すことにより、クライアント60が、全てのデータ取得要求に対するデータを受け取り終わるまで、クライアント60と片方向終端交換機100間のコネクションを切断することなく維持することができる。
【0262】
次いで、上記のように構成される第2の実施の形態による通信システムにおける具体的な動作例を、図17のタイミングチャートを参照して説明する。図17は、第2の実施の形態におけるシーケンス番号とAck番号の時系列を示す。ここでは、第1のサーバ70(1)と第2のサーバ70(2)がグループ分けされているとして説明する。
【0263】
クライアント60、クライアント側処理部10の間でハンドシェイクが行われる。ここで、クライアント60側のデータの初期シーケンス番号は「1000」、クライアント側処理部10の初期シーケンス番号は「2000」とする(1701)。
【0264】
クライアント60から、データ取得要求の載ったデータがクライアント側処理部10へ送信される。この時、データ取得要求はシーケンス番号「1001」から「1100」であったとする(1702)。
【0265】
クライアント側処理部10は、このデータ取得要求に対するAck番号である「1101」をクライアント60へと返す(1703)。
【0266】
解析部30では、受け取ったデータ取得要求(複数の取得要求が含まれる)の内、最初のいくつかが、サーバ70(1)へと送信するのが正しいと判断し、サーバ70(1)とコネクションを確立する。サーバ側処理部20の初期シーケンス番号は「3000」番、サーバ70(1)の初期シーケンス番号は「4000」番であったとする(1704)。
【0267】
サーバ70(1)へ送信すべきデータ取得要求を送る(1705)。
【0268】
要求に対するデータの一部(シーケンス番号「4001」〜「4200」)がクライアント60に返信される(1706)。
【0269】
シーケンス番号、Ack番号が書き換えられ、クライアント60へ要求したデータが届けられる。番号変換によって、シーケンス番号は「2001」〜「2200」となり、Ack番号も「1101」に書き換わる(1707)。
【0270】
クライアント60から、シーケンス番号「2200」までのデータが受領されたことを示すAck番号のついたパケットが送られる(1708)。
【0271】
このAck番号情報は、番号変換されて、サーバ側処理部20へ届けられる(1709)。
【0272】
サーバ側処理部20では、番号変換されたAck番号を載せたパケットがサーバ70(1)へと送信される(1710)。
【0273】
サーバ70(1)から要求に対する最後のデータ(シーケンス番号「4201」〜「4500」)がクライアント60に送られる。このパケットにはFINフラグが立てられている(1711)。
【0274】
このパケットの最後のシーケンス番号に対するAck番号「4501」をサーバ側処理部20で記憶しておく。また、FINフラグを倒す(1712)。
【0275】
クライアント側処理部10では、このパケットの最後のシーケンス番号に対するAck番号を番号変換した番号「2501」を記憶しておく(1713)。
【0276】
シーケンス番号、Ack番号が書き換えられ、クライアント60へ要求したデータが届けられる。番号変換によって、シーケンス番号は「2201」〜「2500」となり、Ack番号も「1101」に書き換わる。ここで、クライアント60はFINフラグが倒れたパケットであるのでコネクションの終了処理はしない(1714)。
【0277】
クライアント60から、Ack番号「2501」が返される(1715)。
【0278】
クライアント側処理部10では、このAck番号を見て、記憶している番号「2501」と一致するので、クライアント60がサーバ70(1)からの要求に対する最後のデータを受け取ったことを知る(1716)。
【0279】
サーバ70(1)側では、このパケットのAck番号を変換した番号「4501」が記憶している番号と一致するので、クライアント60がサーバ70(1)からの要求に対する最後のデータを受け取ったことを知り、終了処理を行なう(1717)。
【0280】
サーバ70(1)に番号変換されたAck番号の載ったパケットが返される(1718)。
【0281】
解析部30では、クライアント60から受け取ったデータ取得要求の次のいくつか(クライアント側処理部10でシーケンス番号「1051」〜「1100」だったもの)はサーバ70(2)へと送信するのが適切であると判断し、サーバ70(2)とコネクションを確立する。ここで、サーバ側処理部20の初期シーケンス番号は「5000」番、サーバ70(2)の初期シーケンス番号は「6000」番であったとする(1719)。
【0282】
サーバ70(2)へ送信すべきデータ取得要求を送る(1720)。
【0283】
要求に対するデータの一部(シーケンス番号「6001」〜「6200」)がクライアント60に送信される(1721)。
【0284】
シーケンス番号、Ack番号が書き換えられ、クライアント60へ要求したデータが届けられる。番号変換によって、シーケンス番号は「2501」〜「2700」となり、Ack番号も「1101」に書き換わる(1722)。
【0285】
クライアント60から、シーケンス番号「2700」までのデータが受領された事を示すAck番号のついたパケットが送られる(1723)。
【0286】
このAck番号情報は、番号変換されて、サーバ側処理部20へ届けられる(1724)。
【0287】
サーバ側処理部20では、番号変換されたAck番号を載せたパケットがサーバ70(2)へと送信される(1725)。
【0288】
上記のように、サーバ70(1)からクライアント60へ送信されるパケットの終了フラグを倒すことにより、クライアント60が、全てのデータ取得要求に対するデータを受け取り終わるまで、クライアント60と片方向終端交換機100間のコネクションを切断することなく維持する。
【0289】
なお、上記各実施の形態の交換機100、100aは、クライアント側処理部10、サーバ側処理部20や、解析部30等の機能や、その他の機能をハードウェア的に実現することは勿論として、各機能を備えるコンピュータプログラムを、コンピュータ処理装置のメモリにロードされることで実現することができる。このコンピュータプログラムは、磁気ディスク、半導体メモリその他の記録媒体90、90aに格納される。そして、その記録媒体からコンピュータ処理装置にロードされ、コンピュータ処理装置の動作を制御することにより、上述した各機能を実現する。
【0290】
また、サーバ70上のコンピュータを制御することにより、交換機を介してサーバとクライアントとの間でパケット通信を行なう交換プログラムを、サーバ70上で動作させることにより、本発明を実現することも可能である。この交換プログラムは、サーバ70の記録媒体に上記と同様に格納される。すなわち、交換プログラムは、交換機100におけるクライアント60からのデータ取得要求の中継時から、クライアント60に対し送信される応答のパケットの送信を終了するまでの間、片方向のスプライシングによって当該クライアント60へに対しパケットを送信するように動作する。
【0291】
また、クライアント60上のコンピュータを制御することにより、交換機100を介してサーバ70とクライアント60との間でパケット通信を行なう交換プログラムを、クライアント60上で動作させることにより、本発明を実現することも可能である。この交換プログラムは、クライアント60の記録媒体に上記と同様に格納される。すなわち、交換プログラムは、交換機100におけるサーバ70へのデータ取得要求の中継時から、サーバ70から受信される応答のパケットの送信を終了するまでの間、片方向のスプライシングによって当該サーバ70からパケットを受信するように動作する。
【0292】
以上好ましい実施の形態及び実施例をあげて本発明を説明したが、本発明は必ずしも上記実施の形態及び実施例に限定されるものではなく、その技術的思想の範囲内において様々に変形して実施することができる。
【0293】
【発明の効果】
以上説明したように本発明の片方向終端交換機によれば、以下のような効果が達成される。
【0294】
まず、本発明の片方向終端交換機では、片方向スプライシング中に、サーバからクライアントへのデータを、トランスポート層を終端せずにパケット毎にシーケンス番号、Ack番号、Win値を書き換えるのみで、クライアントへパケットを転送することによって高速なパケット転送を実現し、かつ同時にクライアントからサーバへ送られるデータ取得要求を参照し終端する片方向スプライシングを実現することができる。
【0295】
片方向スプライシングによって、クライアントからサーバへと送信されるデータ取得要求を参照することによって、常に適切なサーバへとデータ取得要求を転送することができ、かつ同時に、サーバからクライアント側へ到着する大量のデータについては、パケット毎にシーケンス番号とAck番号を書き換えるのみの簡素化された終端処理により、従来の交換機100と同等のスループットを実現する。
【0296】
更に、クライアントからのデータ取得要求に対する全てのデータをクライアントが受け取るまで、クライアントと片方向終端交換機の間で確立されたコネクションを切断せずに維持することができ、これによいクライアントと片方向交換機との間のコネクションの再セットアップが不要となり、必要なデータを取得するまでの遅延を小さく保つことができる。
【図面の簡単な説明】
【図1】 本発明の片方向終端交換機を用いた通信システムの概念を説明する図である。
【図2】 本発明の第1の実施の形態の片方向終端交換機を用いたネットワーク構成の一例を示すブロック図である。
【図3】 本発明の第1の実施の形態の片方向終端交換機の構成を示すブロック図である。
【図4】 本発明の第1の実施の形態のクライアント側終端部の動作を説明するためのフローチャートである。
【図5】 本発明の第1の実施の形態のクライアント側更新部の動作を説明するためのフローチャートである。
【図6】 本発明の第1の実施の形態のサーバ側終端部の動作を説明するためのフローチャートである。
【図7】 本発明の第1の実施の形態のサーバ側更新部の動作を説明するためのフローチャートである。
【図8】 本発明の第1の実施の形態の片方向終端交換機内のデータの流れを説明するための図である。
【図9】 本発明の第1の実施の形態の具体的な動作例を説明するタイミングチャートである。
【図10】 本発明の第2の実施の形態の片方向終端交換機を用いたネットワーク構成の一例を示すブロック図である。
【図11】 本発明の第2の実施の形態の片方向終端交換機の構成を示すブロック図である。
【図12】 本発明の第2の実施の形態のクライアント側終端部の動作を説明するためのフローチャートである。
【図13】 本発明の第2の実施の形態の解析部の動作を説明するためのフローチャートである。
【図14】 本発明の第2の実施の形態のサーバ側終端部の動作を説明するためのフローチャートである。
【図15】 本発明の第2の実施の形態のサーバ側更新部の動作を説明するためのフローチャートである。
【図16】 本発明の第2の実施の形態の片方向終端交換機内のデータの流れを説明するための図である。
【図17】 本発明の第2の実施の形態の具体的な動作例を説明するタイミングチャートである。
【図18】 従来の通信ネットワークの構成を示すブロック図である。
【図19】 従来のレイヤ7スイッチの構成を示すブロック図である。
【符号の説明】
100、100a 片方向終端交換機
100b 従来の交換機
10、10a クライアント側処理部
11、11a クライアント側終端部
12、12a クライアント側更新部
13b 切替部
20、20a サーバ側処理部
21、21a サーバ側終端部
22、22a サーバ側更新部
23、23a 切替部
30、30a 解析部
40、40a 記憶部
50 ネットワーク
60 クライアント
70 サーバ
71 サーバ群
90、90a 記録媒体
[0001]
BACKGROUND OF THE INVENTION
The present invention relates to a communication system using packet switching, and more particularly, to a communication system for efficiently exchanging communication between a server and a client and an exchange method thereof.
[0002]
[Prior art]
In the network protocol of the OSI reference model, the function of the data communication network is roughly divided into seven layers (Layer), and the physical layer, data link layer, network layer, transport layer, session layer, presentation layer, application in order from the lower layer. There are layers. The first layer (Layer 1),
Sometimes called the second layer (Layer 2),...
[0003]
The nodes on the communication network correspond to the layer of data to be referred to in the exchange of the communication, and include a layer 2 switch (Layer 2 Switch), a layer 3 switch (Layer 3 Switch), and a layer 4 switch (Layer 4 Switch). ) And so on. Recently, there is a layer 7 switch (also a 4-7 layer switch) that precisely controls flow and traffic based on information of a higher application layer.
[0004]
FIG. 18 is a block diagram showing a configuration of a conventional communication system including an exchange 100b that is a layer 7 switch.
[0005]
In the conventional communication system of FIG. 18, a server group 71 including a plurality of servers 70 and a client 60 are connected to each other via a network 50 of a packet switching network. Examples of the packet switching network include an IP (Internet Protocol) network.
[0006]
Each client 60 receives a service from the server 70 in the server group 71 via the network 50. In this service, first, the client 60 establishes a transport layer connection capable of bidirectional communication with the server 70 (for example, TCP protocol), and an identifier of data to be acquired is sent from the client 60 to the server 70. The designated data is sent from the server 70 to the client 60. It is also possible to issue a plurality of data acquisition requests with one connection, and the server 70 sequentially sends the received data to the client 60.
[0007]
When the client 60 has obtained all the data desired to be obtained from a certain server 70, the client 60 can send a close request to the server 70 and instruct the server to disconnect the connection.
[0008]
The transport layer connection used for this service for two-way communication includes the sequence number indicating the position of data in the transport layer included in the packet, and the transport of the data in the packet. The data length in the layer and the Ack number indicating the data position in the transport layer that has been reliably received by the communication partner so far are included. Transport layer protocol termination units (termination units) at both ends of the communication control retransmission of packets lost during communication using the sequence number and the Ack number.
[0009]
Further, since flow control is performed at both ends of the communication, a field (window field) for indicating the remaining capacity of the reception buffer may be provided to the communication partner. Hereinafter, this value is referred to as a Win value.
[0010]
At both ends of the communication, the initial value of the sequence number is handshaked and notified to each other. Further, at the end of the connection, the packet is disconnected by exchanging a packet having a flag (end flag) indicating the end of the connection with the packet and a packet including the reception confirmation. An example of such a protocol is the TCP protocol used on the Internet.
[0011]
Next, the role and operation of the conventional exchange 100b of FIG. 18 will be described in more detail.
[0012]
The exchange 100b in FIG. 18 causes the client 60 to virtually recognize the plurality of servers 70 in the server group 71 as one server, and transfers the data acquisition request from the client 60 to the appropriate server 70. It has a function of transferring response data from the server 70 to the client 60.
[0013]
From the client 60, the server group 71 is recognized as one virtual server 70 (virtual server) having the same network 50 address. When the client 60 tries to connect to the virtual server at the address, first, a connection is established between the client 60 and the exchange 100b.
[0014]
The client 60 passes a data acquisition request (identifier of data to be acquired) on this connection. The exchange 100b selects an appropriate connection destination server 70 based on the identifier of the data acquisition request that has flowed through this connection.
[0015]
Next, the exchange 100b opens a connection to the selected server 70 and transfers a data acquisition request over the connection. The server 70 flows the data requested for acquisition onto this connection, and the exchange 100 b transfers this data to the client 60.
[0016]
At this point, there are two connections, that is, a connection between the client 60 and the exchange 100b and a connection between the exchange 100b and the server 70. The exchange 100b connects these connections into one.
[0017]
That is, by connecting two transport layer connections between the client 60 and the exchange 100b and between the exchange 100b and the server 70 into one, the transport layer retransmission and the flow are sent to the server 70 and the client 60, respectively. Since the control is performed, the exchange 100b does not need to perform retransmission control and flow control regarding the connection.
[0018]
This operation is called splicing.
[0019]
Hereinafter, the splicing process of the exchange 100b which is a conventional layer 7 switch will be described in detail with reference to the drawings. FIG. 19 is a block diagram showing a configuration of a conventional exchange 100b.
[0020]
In the exchange 100b of FIG. 19, a client side processing unit 10b that processes communication with the client side, a server side processing unit 20b that processes communication with the server side, an analysis unit 30b that determines a connection destination of each client, A storage unit 40b that stores a forwarding table or the like indicating a connection destination server corresponding to each data acquisition request is provided.
[0021]
The client-side processing unit 10b includes a client-side termination unit 11b that terminates communication on the client side, a client-side switching unit 13b that switches a data communication path, and a client-side communication unit 14b that transmits and receives packets with each client. I have. The server-side processing unit 20b includes a server-side termination unit 21b that terminates communication on the server side, a server-side update unit 22b that rewrites and updates packet header information, a server-side switching unit 23b that switches data communication paths, The server side communication part 14b which transmits / receives the packet with the server 70 is provided.
[0022]
A packet from the client 60 to the exchange 100b arrives at the client side switching unit 13b from the arrow A in FIG. 19, and a packet from the exchange 100b to the client 60 is updated at the client side termination unit 11b or the server side according to the arrows B and C in FIG. It is delivered from the unit 22b to the client 60.
[0023]
Further, a packet from the server side to the exchange 100b arrives at the switching unit 23b from the arrow E in FIG. 19, and a packet from the exchange 100b to the server 70 follows the arrow D in FIG. 22b to the server 70.
[0024]
The client-side switching unit 13b passes the packet arriving from the arrow A to the client-side termination unit 11b or the server-side updating unit 22b according to the instruction from the server-side updating unit 22b. Further, the server-side switching unit 23b passes the packet arriving from the arrow E to the server-side update unit 22b or the server-side termination unit 21b in accordance with the instruction from the server-side termination unit 21b.
[0025]
First, when the client 60 tries to connect to the virtual server, a connection establishment handshake is performed. At this time, the server side update unit 22b instructs the client side switching unit 13b to send the client 60, the client Exchanges are made between the side termination unit 11b, and a connection is established between the client 60 and the client side termination unit 11b. Hereinafter, the initial sequence number of the client 60 of the connection at this time is “SC”, and the initial sequence number of the client side processing unit 10b is “SU”, which are recorded.
[0026]
The client 60 passes a data acquisition request (identifier of data to be acquired) on this connection. The client side termination unit 11b processes the transport layer protocol, extracts the data flowing on this connection, and passes this data acquisition request to the analysis unit 30b.
[0027]
The analysis unit 30b can select an appropriate server 70 by, for example, referring to the forwarding table stored in the storage unit 40b based on the data acquisition request. Then, the analysis unit 30b instructs the server-side termination unit 21b to establish a connection to the selected server 70, and the server-side termination unit 21b establishes a connection to the designated server 70.
[0028]
At this time, a handshake for establishing a connection is performed between the server-side termination unit 21b and the server 70. Here, the server-side termination unit 21b instructs the server-side switching unit 23b on an appropriate communication path so that packets relating to handshaking can be exchanged between the server-side termination unit 21b and the server 70. The initial sequence number of the server 70 of the connection at this time is “SS”, and the initial sequence number of the server side termination unit 21b is “SV”, which are recorded.
[0029]
Next, the analysis unit 30b passes the data acquisition request to the server-side termination unit 21b, and transfers the data acquisition request to the server 70 using the connection in which the data acquisition request is established. Here, the server-side termination unit 21b instructs the switching unit 23b to switch so that subsequent packets sent from the server 70 are passed to the server-side updating unit 22b.
[0030]
Next, a packet carrying data corresponding to the data acquisition request arrives at the exchange 100b from the server 70. The packet sent from the server 70 is transferred to the server side update unit 22b by the switching unit 23b.
[0031]
The server side update unit 22b updates the header information when the packet is relayed. That is, the sequence number and Ack number of the packet are rewritten, and if necessary, the checksum of the transport layer protocol is correctly updated and sent to the client 60.
[0032]
Further, the subsequent update of the sequence number and Ack number of the packet sent from the server 70 is equivalent to the data when the packet is transmitted from the client side processing unit 10 (that is, from the exchange 100b). Rewrite and update as follows.
[0033]
For example, when a packet other than those described above is not transmitted from the client 60, it can be updated as follows.
[0034]
First, for the sequence number, the difference between the initial sequence number “SU” of the client side termination unit 11 b received from the client side termination unit 11 b and the initial sequence number “SS” of the server 70 received from the server side termination unit 21 is added. . That is, “update sequence number = current sequence number + SU−SS”. At this time, the processing when the maximum sequence number is exceeded conforms to the method of adding and subtracting sequence numbers in the transport layer protocol.
[0035]
For the Ack number, the difference between the initial sequence number “SC” of the client 60 received from the client side termination unit 11b and the initial sequence number “SV” of the server side termination unit 21b received from the server side termination unit 21b is added. That is, “Ack number to be updated = current Ack number + SC-SV”.
[0036]
By doing so, the transport layer protocol of the client 60 can process the packet from the server 70 by regarding the packet as coming from the client side processing unit 10b (that is, from the exchange 100b).
[0037]
Similarly, a packet sent from the client 60 to the server 70 thereafter is transferred to the server-side update unit 22 by the client-side switching unit 13b, and the sequence number and Ack number of the packet are displayed, and the packet is transmitted to the server-side processing unit 20b. (Ie, from the exchange 100b) is rewritten to a value equivalent to that of the packet and sent. In other words, “update sequence number = current sequence number + SV−SC” and “update Ack number = current Ack number + SS−SU” are rewritten.
[0038]
In this way, the subsequent exchange of data between the server 70 and the client 60 rewrites the sequence number for each packet without going through the client-side termination unit 11b and the server-side termination unit 21b that terminate the transport layer protocol. Can only communicate in the process.
[0039]
This is the aforementioned connection splicing.
[0040]
Generally, only a small amount of data such as a data acquisition request flows from the client 60 to the server 70, but a large amount of data flows from the server 70 to the client 60. For example, when accessing the web server from a client web browser, a large amount of data such as image data is transmitted from the server 70 to the client 60.
[0041]
By performing this connection splicing, a large amount of data can be relayed without performing complicated transport layer termination processing (retransmission and flow control), and throughput can be improved.
[0042]
[Problems to be solved by the invention]
However, the conventional exchange 100b described above has a problem that the exchange 100b cannot refer to a data acquisition request sent from the client 60 during splicing.
[0043]
Further, in the conventional exchange 100b, since the server 70 corresponding to the request is determined based on only the data acquisition request first sent from the client 60 and the connection is spliced, the data arriving from the client 60 after connection splicing is determined. There has been a problem that an acquisition request cannot be transferred to an appropriate server 70 based on the request.
[0044]
In addition, when the data transfer from the selected server 70 to the client 60 based on the data acquisition request sent first is completed, other data acquisition requests for the same server 70 remain. The close request is sent to the server 70 to disconnect the connection.
[0045]
Since the client 60 is disconnected, the acquisition request that has not been processed by the server 70 needs to be acquired again from the connection establishment (handshake) until the necessary data is acquired. There was a problem that the delay became large.
[0046]
The first object of the present invention is to solve the above-mentioned drawbacks of the prior art, monitor packets such as data acquisition requests transmitted from the client to the server even during splicing, and execute corresponding termination processing. It is to provide a communication system, a packet switching method thereof, and a recording medium recording the switching program.
[0047]
The second object of the present invention is to solve the above-mentioned drawbacks of the prior art and refer to a packet such as a data acquisition request transmitted from the client to the server even during splicing, and always acquire data to the appropriate server 70. For a large amount of data to be transmitted to the client side from the server, the conventional termination processing by splicing that only rewrites the header information such as the sequence number and the Ack number for each packet is realized by conventional termination processing. A communication system that simultaneously realizes a throughput equivalent to that of an exchange, a packet exchange method thereof, and a recording medium on which an exchange program is recorded.
[0048]
A third object of the present invention is to solve the above-mentioned drawbacks of the prior art and establish a connection established between the client and the exchange until the client receives all data transmitted in response to a data acquisition request from the client. The communication system, the packet switching method thereof, and the recording medium recording the switching program can be provided in which the delay until the necessary data is acquired can be kept small.
[0049]
[Means for Solving the Problems]
In order to achieve the above object, the communication system of the present invention is a packet exchange communication system in which packet communication is performed between a server and a client via an exchange, and the exchange is transmitted from the server to the client. When the packet is relayed, the header information of the packet is rewritten to the contents set when the packet is transmitted from the switch, the packet is transmitted to the client, and the data acquisition request from the client is transmitted. From the time of relay until the end of transmission of the response packet transmitted from the server to the client, one-way splicing processing is performed in the direction from the server to the client, and from the client For communication in the direction to the server Retransmission control And flow control.
[0050]
In the communication system of the present invention according to claim 2, the exchange receives a connection from each of the clients, manages a connection with the client and transmits / receives a packet, and accesses each of the servers. A server-side processing unit that manages a connection with the server and transmits / receives a packet, and rewrites the header information of the packet when relaying a packet transmitted from the server to the client, Means for transmitting packets to the client; and one-way splicing processing in the direction from the server to the client; and communication in the direction from the client to the client-side processing unit and the server-side processing unit Established for communication in the direction from the server to the server To cut the connection Retransmission control without And means for performing flow control.
[0051]
In the communication system according to the third aspect of the present invention, the client-side processing unit controls a connection with each of the clients, and receives a connection or request from each of the clients. A client-side update unit that rewrites and relays packets sent to the client by rewriting header information, and the server-side processing unit manages a connection with each of the servers and is sent from the client-side termination unit A server-side termination unit that relays instructions and data for each server, and a server-side update unit that receives a packet transmitted from each server to each client and sends the packet to the client-side update unit. To do.
[0052]
In the communication system of the present invention according to claim 4, the header information of the packet includes, in transmission data divided into individual packets, a sequence number indicating the order of data in the packet, a data length of the packet, It includes an Ack number indicating a sequence number of data that has already been received by the communication partner.
[0053]
The communication system of the present invention according to claim 5 is characterized in that the header information of the packet includes a Win value indicating a remaining capacity of a reception buffer that has not yet been received by a communication partner.
[0054]
6. The communication system according to claim 6, wherein the client-side termination unit includes means for notifying the client-side update unit and the server-side termination unit of header information of a packet received from each of the clients. The side update unit includes means for notifying the server side termination unit of header information of a packet transmitted from each server to each client, and the client side update unit and the server side termination unit are notified. The header information of the packet is appropriately rewritten by referring to the recorded header information.
[0055]
In the communication system according to the seventh aspect of the present invention, in the state where the one-way splicing process is set, the client-side termination unit instructs the client-side update unit to perform a response process for a packet received from each of the clients. The client-side update unit includes means for receiving an instruction for the response process, generating a response packet for the client, and transmitting the response packet.
[0056]
In the communication system of the present invention according to claim 8, the server-side update unit relays transmission of packets from a plurality of the servers to one client, and the packet information in each server is determined from the header information of the relayed packets. Means for removing a flag indicating the end of transmission of the packet, and relaying a packet transmitted by switching the plurality of servers to the client without disconnecting the connection with the client. To do.
[0057]
In the communication system according to the ninth aspect of the present invention, the client-side termination unit and the server-side termination unit divide transmission data that is divided into individual packets and transmitted from the client to the server. It is characterized by comprising means for restoring to the previous state and selecting each packet by selecting a server.
[0058]
The communication system of the present invention according to claim 10 includes an analysis unit that determines a connection destination server to which each of the clients is connected, and the analysis unit transmits the client to each of the servers from the client-side termination unit. Means for obtaining information of a request to be made, means for determining a connection destination server to which the client is to be connected based on the request, and the determined connection destination of the client with respect to the server-side termination unit Means for instructing connection to the server.
[0059]
In the communication system of the present invention according to claim 11, the client-side termination unit and the server-side termination unit divide transmission data that is divided into individual packets and transmitted from the client to the server. Means for transmitting to the server after restoring to the previous state, wherein the analysis unit determines the connection destination server based on the transmission data restored to the original state before the division It is characterized by providing.
[0060]
The communication system of the present invention according to claim 12 is characterized in that the analysis unit sequentially classifies unprocessed data acquisition requests transmitted by the client into groups for each connection destination server, and the server-side termination unit. On the other hand, each classified group includes means for instructing connection to a corresponding server and execution of the data acquisition request classified into the group.
[0061]
The exchange according to the thirteenth aspect of the present invention is an exchange that relays packet communication between a plurality of servers and clients via a communication network, and when a packet transmitted from the server to the client is relayed, a header of the packet The information is rewritten to the contents set when the packet is transmitted from the exchange, the packet is transmitted to the client, and from the relay of the data acquisition request from the client, the server to the client Until the transmission of the response packet to be transmitted is completed, splicing processing is performed in one direction in the direction from the server to the client, and communication in the direction from the client to the server is performed. Retransmission control And flow control.
[0062]
The exchange of the present invention according to claim 14 receives a connection from each of the clients, manages a connection with the client and transmits / receives a packet, accesses each of the servers, A server-side processing unit that manages connections between the server and a packet, and rewrites the header information of the packet when relaying a packet transmitted from the server to the client, and sends the packet to the client. A means for sending to the server, and a one-way splicing process for the direction from the server to the client, and communication in the direction from the client to the client side processing unit and from the server side processing unit to the server. For direction communication, disconnect the established connection. Make Retransmission control without And means for performing flow control.
[0063]
In the exchange of the present invention according to claim 15, the client side processing unit manages a connection with each of the clients, and receives a connection or request from each of the clients; A client-side update unit that rewrites and relays a packet transmitted to the server, and the server-side processing unit manages a connection with each server, and is sent from the client-side termination unit. A server-side termination unit that relays instructions and data to the server, and a server-side update unit that receives a packet transmitted from each server to each client and sends the packet to the client-side update unit. .
[0064]
In the exchange of the present invention according to claim 16, the header information of the packet includes, in the transmission data divided into individual packets, a sequence number indicating the order of data in the packet, a data length of the packet, a communication It includes an Ack number indicating a sequence number of data already received by the other party.
[0065]
The exchange of the present invention according to claim 17 is characterized in that the header information of the packet includes a Win value indicating a remaining capacity of a reception buffer that has not yet been received by a communication partner.
[0066]
The exchange of the present invention according to claim 18, wherein the client-side termination unit includes means for notifying the client-side update unit and the server-side termination unit of header information of a packet received from each of the clients. The update unit includes means for notifying the server side termination unit of header information of a packet transmitted from each server to each of the clients, and the client side update unit and the server side termination unit are notified The header information is recorded and referred to, and the header information of the packet is appropriately rewritten.
[0067]
In the exchange of the present invention according to claim 19, in the state where the one-way splicing process is set, the client-side termination unit instructs the client-side update unit to perform a response process for a packet received from each of the clients, The client-side updating unit includes means for receiving a response processing instruction, generating a response packet for the client, and transmitting the response packet.
[0068]
In the exchange according to the twentieth aspect of the present invention, the server-side updating unit relays transmission of packets from the plurality of servers to one client, and from the header information of the packets to be relayed, A means for removing a flag indicating the end of transmission is provided, and packets transmitted by switching the plurality of servers are relayed to the client without disconnecting the connection with the client. .
[0069]
The exchange of the present invention according to claim 21, wherein the client-side termination unit and the server-side termination unit are configured to divide transmission data transmitted from the client into the individual packets to the server before dividing the original transmission data. And a means for selecting each server and transmitting each packet.
[0070]
The exchange according to the twenty-second aspect of the present invention includes an analysis unit that determines a connection destination server to which each client is connected, and the analysis unit transmits the client to each server from the client-side termination unit. Means for obtaining request information; means for determining a server to which the client is to be connected based on the request; and determining the connection destination of the client to the server-side termination unit. A means for instructing connection to the server is provided.
[0071]
In the exchange of the present invention according to claim 23, the client-side termination unit and the server-side termination unit are configured to divide transmission data transmitted from the client to the server in an individual packet before the original division. Means for transmitting to the server after being restored to the state, and the analysis unit comprises means for determining the connection destination server based on the transmission data restored to the original state before the division. It is characterized by providing.
[0072]
In the exchange of the present invention according to claim 24, the analysis unit includes means for sequentially classifying unprocessed data acquisition requests transmitted by the client into groups for each server to which the connection is made, and the server-side termination unit. On the other hand, each classified group includes means for instructing connection to a corresponding server and execution of the data acquisition request classified into the group.
[0073]
The packet switching method of the present invention according to claim 25 is a packet switching method of an exchange that relays packet communication between a plurality of servers and clients via a communication network, and is transmitted from the server to the client. When the packet is relayed, the header information of the packet is rewritten to the contents set when the packet is transmitted from the exchange, the packet is transmitted to the client, and the data acquisition request from the client is relayed. From the time until the transmission of the response packet transmitted from the server to the client is completed, the one-way splicing processing is performed in the direction from the server to the client, and the client performs the server processing. In the direction of communication Retransmission control And flow control.
[0074]
The packet switching method of the present invention of claim 26 manages a connection between each of the clients, accepts a connection or request from each of the clients, and transmits a packet transmitted from the server to the client. A step of rewriting and relaying the header information, and a step of managing a connection between each of the servers and relaying a command and data to each of the servers sent from the client. Sequence number indicating the order of data in the packet, the data length below the transport layer of the packet, and the Ack indicating the sequence number of the data already received by the communication partner Number and the rest of the receive buffer that the communication partner has not yet received Characterized in that it comprises a Win value indicating the amount.
[0075]
The packet switching method of the present invention according to claim 27 relays packet transmission from a plurality of servers to one client, and indicates the end of packet transmission at each server from the header information of the relayed packets. And a packet transmitted by switching the plurality of servers is relayed to the client without disconnecting the connection with the client.
[0076]
The packet switching method of the present invention according to claim 28, wherein transmission data divided into individual packets and transmitted from the client to the server is restored to the original state before division, and each packet is restored to the server The step of selecting and transmitting is provided.
[0077]
The packet switching method of the present invention according to claim 29 is a step of acquiring information of a request that the client sends to each of the servers, and determining a connection destination server to which the client should connect based on the request. And a step of instructing connection of the client to the determined connection destination server to determine a connection destination server to which each of the clients is connected.
[0078]
The packet switching method of the present invention according to claim 30 is the step of sequentially classifying the unprocessed data acquisition request transmitted by the client into groups for each server to which it is connected, and for each of the classified groups, A step of instructing connection to a corresponding server and execution of the data acquisition request classified into the group is provided.
[0079]
The recording medium on which the exchange program of the present invention according to claim 31 is recorded allows the computer to read the exchange program for relaying packet communication between a plurality of servers and clients via a communication network by controlling the computer. In the recording medium recorded in the above, the exchange program sets the header information of the packet when the packet transmitted from the server is relayed to the client, and the contents set when the packet is transmitted from the exchange The packet is transmitted to the client, and from when the data acquisition request from the client is relayed until the transmission of the response packet transmitted from the server to the client ends. One direction from server to client Performs processing for splicing, and the direction of communication from the client to the server Retransmission control And flow control.
[0080]
The server of the present invention according to claim 37 is a server in a communication system that performs packet communication between a server and a client via an exchange, and the client from the time of relaying a data acquisition request from the client in the exchange The packet is transmitted to the client by one-way splicing until the transmission of the response packet transmitted to the client is completed.
[0081]
The client of the present invention according to claim 45 is a client in a communication system that performs packet communication between a server and a client via an exchange, and the server from the time of relaying a data acquisition request to the server in the exchange The packet is received from the server by one-way splicing until the transmission of the response packet received from the server is completed.
[0082]
55. The communication system of the present invention according to claim 55, wherein the analysis unit sequentially classifies unprocessed data acquisition requests transmitted by the client into groups for each connection destination server, and the server-side termination unit. For each of the classified groups, means for instructing to disconnect the connection to the server after connection to the corresponding server, execution of the data acquisition request classified into the group, and transmission of the acquisition request It is characterized by providing.
[0083]
DETAILED DESCRIPTION OF THE INVENTION
Hereinafter, embodiments of the present invention will be described in detail with reference to the drawings.
[0084]
First, the concept of a communication system according to the present embodiment that performs packet communication between a server and a client via a communication network will be described with reference to FIG. In FIG. 1, 100 is a one-way terminal switch according to the present invention that relays connections of a plurality of servers to a communication network, 60 is a client, and 70 is a server.
[0085]
In the present invention, splicing is performed only for communication in the direction from the server 70 to the client 60 where a large amount of data is often transferred, and at the same time, retransmission is performed for communication in the direction from the client 60 to the server 70. Termination processing such as control and flow control is executed.
[0086]
Conventionally, the connection between the client 60 and the exchange 100b and the connection between the exchange 100b and the server 70 are spliced into one connection between the client 60 and the server 70. In the exchange 100b, termination processing such as retransmission and flow control is performed. On the other hand, in the one-way terminal switch 100 of the present invention, the client 60 and the server 70 are not connected to each other in a single TCP connection in both directions, but from the server 70 to the client 60. Only the packet sequence number and the Ack number by the splicing process are rewritten only for the data that flows to the server 70, and the server 70 and the client 60 themselves perform the retransmission control and the flow control.
[0087]
Here, in the transport layer connection from the client 60 to the one-way terminal switch 100, the one-way terminal switch 100 controls the retransmission of data flowing from the client 60 to the one-way terminal switch 100 and the client 60. Terminate with flow control. Further, the connection between the exchange 100 and the server 70 also terminates the one-way termination exchange 100 by performing retransmission control and flow control of data flowing from the one-way termination exchange 100 toward the server 70 with respect to the server 70.
[0088]
FIG. 2 is a block diagram illustrating an example of a network configuration using the one-way terminal switch 100 according to the first embodiment of this invention.
[0089]
Compared with the conventional technique shown in the example of FIG. 18, the present embodiment is characterized in that it includes a one-way terminal switch 100 that performs splicing in only one direction instead of the conventional switch 100b.
[0090]
In the conventional exchange 100b, in both directions of communication between the client 60 and the server 70, it is only possible to set the same state for the communication termination and the splicing state at the same time. In the one-way terminal switch 100 of the configuration, splicing is performed only for the communication in the direction from the server 70 to the client 60 where a large amount of data is often transferred, and at the same time the communication in the direction from the client 60 to the server 70 is performed. Thus, termination processing such as retransmission control and flow control is executed.
[0091]
The roles of each server 70 and client 60 in the server group 71 of FIG. 2 are the same as those of the prior art described with reference to FIG. The same is true in that they are connected to each other by a network 50 of a packet switching network. Further, the service provided by each server 70 of the server group 71 of FIG. 2 is also connected using the connection of the transport layer protocol as in the prior art, and in the packet, in the transport layer included in the packet The sequence number indicating the data position, the data length in the transport layer of the data in the packet, and the data position in the transport layer that has been reliably received so far for the communication partner It is assumed that the Ack number shown is included as header information. The connection establishment and termination methods are exactly the same.
[0092]
The function of the one-way terminal switch 100 of the present embodiment is different from the conventional switch 100b in the splicing method.
[0093]
Conventionally, two connections of the connection between the client 60 and the exchange 100b and the connection between the exchange 100b and the server 70 are spliced into one connection between the client 60 and the server 70. In this case, the exchange 100b performs retransmission, flow control, etc. Cannot be terminated.
[0094]
However, in the one-way terminal switch 100 according to the present embodiment, a single TCP connection is not made between the client 60 and the server 70 in both directions, but only for data flowing from the server 70 in the client 60 direction. As in conventional splicing, only rewriting of the packet sequence number and Ack number is performed, and the server 70 and the client 60 themselves perform retransmission control and flow control.
[0095]
Here, in the transport layer connection from the client 60 to the one-way terminal switch 100, the one-way terminal switch 100 controls the retransmission of data flowing from the client 60 to the one-way terminal switch 100 and the client 60. Terminate with flow control. Further, the connection between the exchange 100 and the server 70 can be terminated by the retransmission control and flow control of data flowing from the one-way termination exchange 100 to the server 70. Different from conventional ones.
[0096]
Hereinafter, this splicing method of the present invention is referred to as one-way splicing.
[0097]
FIG. 3 is a block diagram illustrating a configuration of the one-way terminal switch 100 according to the first embodiment of this invention.
[0098]
Referring to FIG. 3, a one-way terminal switch 100 according to the present embodiment includes a client-side processing unit 10 that processes communication with a client side, a server-side processing unit 20 that processes communication with a server side, and communication in an application layer. An analysis unit 30 that analyzes data and determines a connection destination of each client, and a storage unit 40 that records a forwarding table indicating a connection destination server corresponding to each data acquisition request from the client are provided.
[0099]
The client-side processing unit 10 includes a termination unit 11 that terminates communication on the client side, an update unit 12 that rewrites and updates packet header information, and a communication unit 14 that transmits and receives packets with each client. . The server-side processing unit 20 also includes a termination unit 21 that terminates communication on the server side, an update unit 22 that rewrites and updates packet header information, a switching unit 23 that switches a data communication path, and packet packets with each server 70. A communication unit 24 for sending and receiving is provided.
[0100]
First, the function of each component of the exchange 100 according to the present embodiment will be outlined.
[0101]
Client end unit 11
The client-side terminal unit 11 establishes a connection with the client 60 in the transport layer, and receives data including retransmission control and flow control with the client 60 from the transport layer.
[0102]
When the connection is established, the Win value (remaining capacity of the reception buffer) of the client 60 is notified to the server side termination unit 21.
[0103]
In the one-way splicing state, the client side termination unit 11 does not perform a packet reception confirmation response (acknowledgment, Acknowledge: Ack) from the client 60, but the client side update unit 12 receives the Ack number and A flow control Win value is notified and a response is requested to be transmitted. In the one-way splicing state, when data is received from the client 60, the Ack number and Win value of the packet from the client 60 are transferred to the server-side termination unit 21, and a response (Ack) transmission request to the server 70 is made. The client side update unit 12 also answers the inquiry about the current Ack number and Win value.
[0104]
The server side update unit 22 is notified of the transition to the one-way splicing state.
[0105]
Further, when a packet with an end flag indicating a connection disconnection request arrives from the client 60, the side heading from the client 60 to the client side processing unit 10 in the bidirectional connection between the client 60 and the client side processing unit 10 Disconnect the transport layer for the connection. Further, in this case, the server-side termination unit 21 is notified that the connection on the side from the client 60 toward the client-side processing unit 10 has been disconnected.
[0106]
For the connection in the direction from the client side processing unit 10 to the client 60, the server side update unit 22 notifies the final sequence number of the data in the packet with the end flag arriving from the server 70. "Is updated to" Update F = F-SS + SU ". When the same Ack number arrives thereafter, it is recognized that the connection has been disconnected (that is, the transmission of a packet with an end flag and the arrival of a positive response packet), and the client side A disconnection process of the transport layer of the connection from the processing unit 10 to the client 60 is performed. Here, “SS” is an initial sequence number of the server 70, and “SU” is an initial sequence number of the client side processing unit 10, and details will be described later.
[0107]
Client side update unit 12
A packet transmitted from the server 70 to the client 60 is received from the server-side update unit 22, header information such as the sequence number, Ack number, and Win value of the packet is rewritten, and the updated packet is transmitted to the client 60.
[0108]
The sequence number can be rewritten by “sequence number: = sequence number of packet−SS + SU”. Here, “SS” is an initial sequence number (of the server 70) of the connection between the server side processing unit 20 and the server 70. “SU” is an initial sequence number (of the client side processing unit 10) of the connection between the client side processing unit 10 and the client 60. These values are obtained from the client-side terminal unit 11 and the server-side terminal unit 21, respectively.
[0109]
As for addition / subtraction of sequence numbers, processing when the maximum value of sequence numbers is exceeded or below the minimum value shall conform to the handling of addition / subtraction of sequence numbers in the transport protocol.
[0110]
The Ack number and Win value are rewritten to the latest Ack number and Win value returned when a new packet is currently transmitted from the client side processing unit 10 to the client 60, respectively. These latest Ack numbers and Win values can be acquired from the client-side terminal unit 11.
[0111]
If necessary, the transport layer protocol checksum is also updated correctly.
[0112]
Also, when a response (Ack) transmission request to the client 60 is received from the client-side terminal unit 11, the Ack number and the Win value are as described above, and the sequence number used most recently is the same as the sequence number. To generate and send a response packet.
[0113]
Packets sent from the server 70 to the client 60 are sequentially sent from the server-side update unit 22 to the client-side update unit 12, and the rewritten values of the sequence numbers of the sent packets are sequentially recorded. The most recently used sequence number refers to the latest sequence number after rewriting. The initial value of the sequence number is that the packet arrives from the server-side update unit 22 at the same time as the one-way splicing state is entered, and the rewritten sequence number for this packet is used as the initial value.
[0114]
A response (Ack) packet to the client 60 requested to be transmitted from the client-side termination unit 11 may be transmitted as a single packet together with the packet from the server-side update unit 22 after a little waiting for transmission. Is possible.
[0115]
Analysis unit 30
Information on a data acquisition request (or a plurality of data) transmitted from the client 60 is acquired from the client-side terminal unit 11, the application layer is terminated, the information is analyzed, and an appropriate connection destination server 70 is determined. As a method of determining the connection destination, for example, a table in which the name of the server 70 that provides the data corresponding to each data requested from the client 60 is recorded (hereinafter, this table is referred to as a forwarding table). ) In advance, and can be determined by a method such as searching this forwarding table.
[0116]
When the connection destination server 70 is determined, the data acquisition request and the connection destination server 70 name are transferred to the server-side terminal unit 21 to instruct connection.
[0117]
Storage unit 40
Information for the analysis unit 30 to select an appropriate server 70 is stored. For example, by recording the above forwarding table in the storage unit 40, an appropriate server 70 name can be returned in response to a search request from the analysis unit 30.
[0118]
Server-side termination 21
In accordance with the name of the connection destination server 70 instructed from the analysis unit 30, a transport layer connection is established with the connection destination server 70.
[0119]
When this connection is established, the Win value (remaining reception buffer) notified from the client-side termination unit 11 is registered and used as the initial value of the Win value of the server-side processing unit 20.
[0120]
When establishing a connection with the server 70, the switching unit 23 is instructed in advance so that the server-side terminal unit 21 receives a packet sent from the server 70.
[0121]
When this connection is established, the server-side termination unit 21 sends the data acquisition request to the server 70 using the established transport layer connection. Subsequently, the switching unit 23 is instructed to perform switching so that the server-side updating unit 22 subsequently receives a packet related to this connection sent from the server 70. Thereafter, the unidirectional splicing state is established.
[0122]
Thereafter, the Ack number and Win value of the packet sent from the server 70 are sequentially notified from the server-side update unit 22, and using these values, transport layer data ( Retransmission control and flow control for data acquisition requests and the like.
[0123]
From this point onward, the client 60 sequentially transmits a packet (Ack) for confirming the receipt of the packet, and the client-side termination unit 11 receives the packet, and the Ack number and Win value of each packet are sequentially transmitted to the server-side termination. The unit 21 is notified. The server-side terminal unit 21 updates the notified Ack number as “Ack number: = Ack number notified from the client-side terminal unit 11−SU + SS”, and the Win value is used as it is. A packet (Ack) for confirming reception of the packet with respect to 70 is generated and transmitted to the server 70.
[0124]
Here, “SU” is an initial sequence number of the client-side processing unit 10 of the connection between the client 60 and the client-side processing unit 10, and “SS” is a connection of the server-side processing unit 20 and the server 70. , The initial sequence number on the server 70 side. The value of “SU” is notified from the client end unit 11.
[0125]
In addition, in addition / subtraction of sequence numbers, processing when the maximum value of sequence numbers is exceeded or below the minimum value shall conform to the handling of addition / subtraction of sequence numbers of the transport protocol.
[0126]
Further, when a connection disconnection request is transmitted from the client 60, the client side termination unit 11 receives this and notifies the server side termination unit 21. The server-side terminal unit 21 sends a packet with an end flag to the server 70 on the assumption that the connection from the server-side processing unit 20 to the server 70 is disconnected in the bidirectional connection between the client 60 and the server 70. Cutting). In this case, the connection disconnection process from the client 60 to the client-side processing unit 10 is performed by the client-side termination unit 11.
[0127]
Further, for the connection from the server 70 to the client 60, the server-side termination unit 21 receives a notification of the final sequence number of the data in the packet with the end flag arriving from the server 70 from the server-side update unit 22, This final sequence number “F” is updated and recorded as “update F = F−SS + SU”. If the same Ack number as the updated last sequence number arrives, it is assumed that the connection is disconnected (a packet with an end flag and an Ack packet corresponding thereto have arrived) from the server 70 to the exchange 100. Disconnect the transport layer of the connection going to the client 60 via
[0128]
Server side update unit 22
The server side update unit 22 receives a packet transmitted from the server 70 to the client 60 from the server 70 and sends the packet to the client side update unit 12. Each time the server side update unit 22 receives a packet from the server 70, the server side update unit 22 notifies the server side termination unit 21 of the Ack number and Win value of the packet.
[0129]
If the length of the transport layer data of the received packet is “0”, the packet is discarded without being sent to the client side update unit 12. If it is not “0”, the packet is transferred to the client side update unit 12.
[0130]
Further, when a packet that is not “0” is received for the first time after the connection is established, the packet is transferred to the client side update unit 12 and at the same time, an instruction to start unidirectional splicing is issued to the client side termination unit 11. .
[0131]
Further, when a packet with an end flag is received from the server 70, the final sequence number “F” of the data in the packet is passed to the server-side terminal unit 21 and the client-side terminal unit 11.
[0132]
Next, the operation of each component of the exchange 100 according to the present embodiment will be described.
[0133]
FIG. 4 is a flowchart for explaining the operation of the client side termination unit 11 of the present embodiment.
[0134]
Referring to FIG. 4, the client-side termination unit 11 of the present embodiment first receives a packet from the client 60 (step 301). If it is a series of packets related to connection establishment (step 302), the client-side termination unit 11 60 establishes a connection in the transport layer (step 303), and stores the initial sequence number “SC” of the client 60 and the initial sequence number “SU” of the client side processing unit 10 (step 304). A response (Ack) is returned to 60, and data including retransmission control and flow control in the transport layer is received with the client 60 (step 305).
[0135]
After the connection is established, until a one-way splicing state described later (step 306), a response (Ack) is returned to the client 60 and data including retransmission control and flow control at the transport layer with the client 60 is returned. Is received (step 307). Further, the Win value on the client 60 side at this time is passed to the server-side termination unit 21.
[0136]
If the one-way splicing state is reached (step 306), the data reception confirmation response (Ack) is not sent by the client side termination unit 11, but the client side update unit 12 receives the Ack number and the flow control Win value. To request transmission of a response (step 308). In the one-way splicing state, when data is received from the client 60, the Ack number and the Win value of the packet from the client 60 are transferred to the server-side terminal unit 21, and a response transmission request to the server 70 is made (step 309). . It also answers an inquiry about the current Ack number and Win value from the client side update unit 12. The server side update unit 22 is notified of the transition to the one-way splicing state.
[0137]
When a packet with an end flag indicating a connection disconnection request has arrived from the client 60 (step 310), the side from the client 60 toward the client-side processing unit 10 in the bidirectional connection between the client 60 and the client-side processing unit 10 As a result, the transport layer is disconnected (step 311). Further, it notifies the server-side termination unit 21 that the connection on the side from the client 60 toward the client-side processing unit 10 has been disconnected (step 312).
[0138]
For the connection from the client side processing unit 10 to the client 60, the final sequence number of the data in the packet with the end flag arriving from the server 70 is notified from the server side update unit 22. Is updated and recorded as “update F = F−SS + SU”.
[0139]
If the same Ack number as the final sequence number arrives, the connection is disconnected (assuming that a packet with an end flag is transmitted and an Ack packet corresponding thereto arrives), and the transport layer is disconnected. (Steps 313 and 314).
[0140]
FIG. 5 is a flowchart for explaining the operation of the client side updating unit 12 of the present embodiment.
[0141]
Referring to FIG. 5, the client side update unit 12 of the present embodiment first receives a command from the client side termination unit 11 and a packet from the server side update unit (step 401). If a packet to be transmitted to the client 60 is received from the server side update unit 22 (step 402), the sequence number, Ack number, Win value, etc. of the packet are rewritten (step 403), and the packet updated to the client 60 is sent. Transmit (step 404). The method for rewriting the sequence number, Ack number, and Win value here is as described above.
[0142]
When the client side termination unit 11 receives a response (Ack) transmission request to the client (step 405), the Ack number and Win value are as described above, and the sequence number is the most recently used sequence. A response (Ack) packet is generated using the number (step 406) and transmitted to the client 60 (step 404). The method of generating the response packet is also as described above.
[0143]
Further, the transmission of the acknowledgment (Ack) to the client 60 requested from the client side termination unit 11 is a little waited, and the server 70 receives the packet sent from the server 60 to the client 60 from the server side update unit 22. It is also possible to transmit as a single packet.
[0144]
FIG. 6 is a flowchart for explaining the operation of the server-side termination unit 21 of the present embodiment.
[0145]
Referring to FIG. 6, the server-side termination unit 21 according to the present embodiment first receives an instruction from the analysis unit 30, and transmission of an Ack number and a Win value from the server-side update unit 22 and the client-side termination unit 11 ( Step 501).
[0146]
If there is a connection establishment request from the analysis unit 30 (step 502), a transport layer connection is established to the connection destination server 70 designated by the analysis unit 30 (step 503), and an initial sequence is established. The numbers SV and SS are recorded (step 504). When this connection is established, the switching unit 23 is instructed in advance so that the server-side termination unit 21 receives a packet arriving from the server 70.
[0147]
If the packet sent from the client 60 is a data acquisition request to be sent to the server 70 when the connection has been established (step 505), the data acquisition request is sent to the server 70 using the established transport layer connection. If this is the first data acquisition request to be sent to the server 70 after the connection is established (step 506), the switching unit 23 is instructed to send a packet related to the corresponding connection from the server 70 thereafter. The server side update unit 22 is instructed to receive (step 507). Then, a data acquisition request is sent to the server 70 using the established transport layer connection (step 508).
[0148]
In step 501, when the server side update unit 22 notifies the Ack number and the Win value of the packet received from the server 70 (step 509), the transport layer data is registered and sent to the server 70. This is used for retransmission control, flow control, etc. (step 510).
[0149]
In step 501, if the Ack number and the Win value are notified from the client end unit 11 (step 511), the values are updated as described above, and the transport layer data to be sent to the server 70 is updated. Ack number and Win value are determined to generate a packet (step 512), and a response (Ack) packet is transmitted to the server 70 (step 513). Also, the transport layer data to be sent to the server 70 The Ack number and Win value are also updated to this value.
[0150]
Further, when the client-side termination unit 11 notifies that the connection has been disconnected (step 514), the server-side processing unit 20 to the server 70 in the bidirectional connection between the server-side processing unit 20 and the server 70. Assuming that the incoming connection has been disconnected (assuming that a packet with an end flag has been sent to the server 70), the transport layer is disconnected (step 515).
[0151]
For the connection from the server side processing unit 20 to the client 60, the server side update unit 22 notifies the final sequence number of the data in the packet with the end flag arriving from the server 70. If the same Ack number as the updated last sequence number arrives (step 516), it is assumed that the connection is disconnected (the packet with the end flag and the Ack packet corresponding thereto are updated). Assuming that it has arrived, disconnection processing of the transport layer of the connection from the server side processing unit 20 to the client 60 is performed (step 517). In addition, the switching unit 23 is instructed to send the packet of the subsequent connection to the server-side termination unit 21 (step 514).
[0152]
FIG. 7 is a flowchart for explaining the operation of the server-side update unit 22 of the present embodiment.
[0153]
First, the server side update unit 22 sequentially receives packets sent from the server 70 to the client 60 from the server 70 (step 601), and sends the Ack number and Win value written in the packet to the server side termination unit 21. Notification is made (step 602).
[0154]
When a packet with an end flag arrives from the server 70 (step 603), the final sequence number “F” of the data in the packet is transferred to the server-side terminal unit 21 and the client-side terminal unit 11 (step 604). The packet is transferred to the client side update unit 12 as it is (step 609).
[0155]
In step 603, when a packet without an end flag is received, if the length of the transport layer data of the packet is “0” (step 605), the packet is discarded (step 606).
[0156]
If the data length is not "0" (step 605), the packet is transferred to the client side update unit 12 (step 609). However, the first packet that is not "0" of the connection is sent to the client. In the case of delivery to the side updating unit 12 (step 607), an instruction to start one-way splicing is simultaneously issued to the client side termination unit 11 (step 608).
[0157]
FIG. 8 is a diagram for explaining the flow of data in the one-way terminal switch 100 according to the present embodiment. When a one-way splicing operation is performed, the sequence number, Ack number, Win value, and transmission data are shown. Etc. show how data are exchanged by the client 60, the server 70, the client side termination unit 11, the server side termination unit 21, the client side update unit 12, the server side update unit 22, and the like.
[0158]
Data transmission from the client 60 to the client-side terminal unit 11 and its response, data transmission from the server-side terminal unit 21 to the server 70 and its response, data transmission from the server 70 to the client 60 and its response flow, and reception The Win values indicating the rest of the buffer are correctly processed in the following order.
[0159]
From the client 60 to the client end unit 11
The sequence number of the data from the client 60 is subjected to the transport layer protocol processing in the client side termination unit 11, and as shown in step 308 in FIG. 4 of the flowchart (corresponding to Y001 in FIG. 8), the client side update unit 12 is reflected as the Ack number of the response packet transmitted from the client 12 to the client 60.
[0160]
Similarly, the rest of the reception buffer of the client-side termination unit 11 is a packet transmitted from the client-side update unit 12 to the client 60 as shown in step 309 in FIG. 4 of the flowchart (corresponding to Y004 in FIG. 8). And is used for appropriate retransmission control and flow control.
[0161]
Server-side terminal unit 21 to server 70
For the data from the server-side termination unit 21 to the server 70, the sequence number is processed by the transport layer protocol termination unit in the server 70, and as an Ack number of the packet to the server-side update unit 22 as Y008. Reflected. This is reflected as the Ack number of the packet transmitted from the client side update unit 12 to the client 60 as shown in step 602 of the flowchart in FIG. 7 and step 510 in the flowchart of FIG. 6 (corresponding to Y005 in FIG. 8). Is done.
[0162]
Similarly, the rest of the reception buffer of the server 70 should be reflected as the Ack number of the packet to the server side update unit 22 as indicated by Y009 of FIG. 8, and this is reflected in the step of FIG. 7 of the flowchart. As indicated by 602 (corresponding to Y006 in FIG. 8), it is reflected as the Win value of the packet transmitted from the client side update unit 12 to the client 60. In this way, correct retransmission control and flow control are performed.
[0163]
Server 70 to client 60
As for data from the server 70 to the client 60, the sequence number received from the server 70 is indicated to the client side as shown in step 403 of FIG. 5 in the operation flowchart of the client side update unit 12 (corresponding to Y007 in FIG. 8). ) The sequence number is rewritten and passed as if it were data transmitted from the client-side terminal unit 11.
[0164]
On the other hand, the Ack number and the Win value returned from the client 60 (corresponding to Y010 and Y011 in FIG. 8), the Ack number is as if the end on the server side as shown in step 512 in FIG. The number is updated and returned to the server 70 as if it were the Ack number generated by the unit 21 (corresponding to Y002 in FIG. 8), and the Win value is also indicated by step 512 in FIG. As described above, since it is returned to the server 70 (corresponding to Y003 in FIG. 8), the retransmission control and the flow control are correctly performed between the server 70 and the client 60.
[0165]
Further, in the client-side termination unit 11 and the server-side termination unit 21 of the present embodiment, the transmission data that is divided and transmitted from the client 60 to the server 70 is sent to the state before the original division. A method of transmitting to the server after restoration is also possible.
[0166]
As described above, the exchange 100 according to the present embodiment is configured so that the client 60 and the server respectively handle the transport layer data flowing from the client 60 in the direction of the unidirectional termination exchange 100 and from the unidirectional termination exchange 100 to the server 70. 70, the retransmission layer and the flow control can be performed to terminate the transport layer, and at the same time, the data flowing from the server 70 toward the client 60 is not subjected to the retransmission control and the flow control. The packet can be relayed at high speed only by rewriting the packet sequence number or Ack number as in the case of splicing. In this one-way splicing state, data in the direction from the server 70 to the client 60 is subjected to retransmission control, flow control, and the like by the server 70 and the client 60 themselves.
[0167]
Exchange 100 according to the present embodiment can realize one-way splicing communication as described above.
[0168]
Next, a specific operation example of the communication system according to the first embodiment configured as described above will be described with reference to the timing chart of FIG. FIG. 9 shows a time sequence of the sequence number and the Ack number in the first embodiment.
[0169]
A handshake is performed between the client 60 and the client side processing unit 10. Here, the initial sequence number of the data on the client 60 side is “1000”, and the initial sequence of the client side processing unit 10 is “2000” (901).
[0170]
Data with a data acquisition request is transmitted from the client 60 to the client side processing unit 10. At this time, it is assumed that the data acquisition request is from the sequence number “1001” to “1100” (902).
[0171]
The client-side processing unit 10 returns “1101”, which is the Ack number for this data acquisition request, to the client 60 (903).
[0172]
The analysis unit 30 determines that the first several of the received data acquisition requests (including a plurality of acquisition requests) are correct to be transmitted to the server 70 and establishes a connection with the server 70. Assume that the initial sequence number of the server-side processing unit 20 is “3000” and the initial sequence number of the server 70 is “4000” (904).
[0173]
A data acquisition request to be transmitted is sent to the server 70 (905).
[0174]
A part of data corresponding to the request (sequence numbers “4001” to “4200”) is returned to the client 60 (906).
[0175]
The sequence number and Ack number are rewritten, and the requested data is delivered to the client 60. By the number conversion, the sequence numbers become “2001” to “2200”, and the Ack number is also rewritten to “1101” (907).
[0176]
A packet with an Ack number indicating that data up to sequence number “2200” has been received is sent from the client 60 (908).
[0177]
The Ack number information is number-converted and delivered to the server side processing unit 20 (909).
[0178]
The server-side processing unit 20 transmits a packet with the number-converted Ack number to the server 70 (910).
[0179]
The last data (sequence number “4201” to “4500”) for the request is sent from the server 70 to the client 60. The FIN flag is set in this packet (911).
[0180]
The server side processing unit 20 stores the Ack number “4501” for the last sequence number of this packet (912).
[0181]
The client-side processing unit 10 stores a number “2501” obtained by converting the Ack number for the last sequence number of this packet (913).
[0182]
The sequence number and Ack number are rewritten, and the requested data is delivered to the client 60. By the number conversion, the sequence numbers are changed from “2201” to “2500”, and the Ack number is also rewritten to “1101”. Upon receiving this packet, the client 60 starts the end process (914).
[0183]
The Ack number “2501” is returned from the client 60 (915).
[0184]
The client-side processing unit 10 confirms this Ack number and matches the stored number “2501”. Therefore, the client-side processing unit 10 knows that the client 60 has received the last data for the request from the server 70, and performs the end processing. Perform (916).
[0185]
On the server 70 side, the number “4501” obtained by converting the Ack number of this packet matches the stored number. Therefore, the server 60 knows that the last data for the request from the server 70 has been received, and terminates the processing. Perform (917).
[0186]
A packet with the Ack number converted in number is returned to the server 70 (918).
[0187]
Next, a second embodiment of the present invention will be described.
[0188]
FIG. 10 is a block diagram showing an example of a network configuration using the one-way terminal switch 100a according to the second embodiment of the present invention, and FIG. 11 shows the configuration of the one-way terminal switch 100a according to the present embodiment. FIG.
[0189]
These are the same as those of the first embodiment shown in FIGS. 2 and 3, but the client side termination unit 11a, the client side update unit 12a, the analysis unit 30a, the server side termination unit 21a, and the server side update. Each operation of the unit 22a is different from that of the first embodiment.
[0190]
First, these components will be described.
[0191]
Client end unit 11a
The difference from the client-side terminal unit 11 of the first embodiment is that the transport layer connection between the client 60 and the client-side terminal unit 11a is disconnected (a packet with an end flag is sent) according to an instruction from the analyzing unit 30. And the point that the value of the final sequence number “F” is not received from the server side update unit 22a. Other operations are the same as those in the first embodiment.
[0192]
That is, the client-side termination unit 11a of the present embodiment establishes a connection with the client 60 at the transport layer, and receives data including retransmission control and flow control with the client 60 at the transport layer. To do.
[0193]
In the one-way splicing state, which will be described later, the data reception confirmation response is not performed by the client side termination unit 11a, but the Ack number and the flow control Win value are notified to the client side update unit 12a. ).
[0194]
In the one-way splicing state, when data is received from the client 60, the Ack number and Win value of the packet from the client 60 are transferred to the server-side terminal unit 21 and a response transmission request to the server 70 is made. The client side update unit 12a also answers an inquiry about the current Ack number and Win value. The server side update unit 22a is notified of the transition to the one-way splicing state.
[0195]
Further, when a packet with an end flag indicating a connection disconnection request arrives from the client 60, a transport layer disconnection process is performed for the connection from the client 60 toward the client-side processing unit 10a. In addition, the server-side termination unit 21a is notified that the connection from the client 60 toward the client-side processing unit 10a has been disconnected.
[0196]
For the connection from the client side processing unit 10a to the client 60, the transport layer of the connection is disconnected in accordance with an instruction from the analysis unit 30a.
[0197]
Client side update unit 12a
The difference from the operation of the client-side update unit 12 in the one-way terminal switch 100 of the first embodiment is that the server-side terminal unit 21 targets the initial sequence number of the connection of the server 70 used for rewriting the sequence number. Therefore, the sequence number is rewritten as “sequence number: = sequence number of packet−SS + SU” using the value of the current connection.
[0198]
Here, “SS” is the initial sequence number of the current connection with the server 70 of the server side termination unit 21, and the value is obtained from the server side termination unit 21.
[0199]
“SU” in the present embodiment is the initial sequence number of the connection with the client 60 of the client side processing unit 10a or the final sequence number of the packet including the end flag from the immediately preceding server 70 + 1. The value of “SU” is from the client-side terminal unit 11a when SU is the initial sequence number, or the server-side update unit 22a when the last sequence number of the packet including the end flag from the immediately preceding server 70 is +1. Receive from.
[0200]
In addition, in addition / subtraction of sequence numbers, processing when the maximum value of sequence numbers is exceeded or below the minimum value shall conform to the handling of addition / subtraction of sequence numbers of the transport protocol.
[0201]
Analysis unit 30a
The analysis unit 30a acquires data from the client-side terminal unit 11a, terminates the application layer, analyzes a data acquisition request from the client 60 (a plurality of requests can be performed at once), and generates an appropriate server 70. To decide.
[0202]
When the servers 70 corresponding to a plurality of data acquisition requests are different, the plurality of data acquisition requests are grouped in order for the corresponding servers 70 from the front.
[0203]
For example, when there are ten acquisition requests R1 to R10, R1 to R2 are the first server, R3 to R5 are the second server, and R6 to R10 are the first server. The first group, R3 to R5 as the second group, and R6 to R10 as the third group can be grouped.
[0204]
In this example of grouping, the servers 70 corresponding to the first group and the third group are the same first server, but here, the acquisition requests are grouped in order from the front to divide them into different groups. .
[0205]
The analysis unit 30a passes the server 70 name and the acquisition request to the server-side termination unit 21 for each group.
[0206]
In addition, for the last acquisition request of one group, the analysis unit 30a gives the server 70 a close request for disconnecting the connection when the transmission of the data is completed. However, if the group is the last one (no other unprocessed group remains), there may be an additional data acquisition request from the client 60 during the processing, so the close request is added. It is also effective to use a method that does not.
[0207]
Further, when it becomes necessary to switch the server 70 by responding to an additional data acquisition request from the client 60, a close request is given to the data acquisition request and passed to the server-side termination unit 21a, or the data is left as it is. The acquisition request is passed to the server-side termination unit 21a. Further, here, when switching the server 70 with the first addition request, a connection disconnection request is made to the server-side termination unit 21a. When processing for one group is completed, the server-side termination unit 21a notifies the group, and the analysis unit 30a instructs the next group to perform processing.
[0208]
The analysis unit 30a repeats this process every time data is acquired from the client side termination unit 11a.
[0209]
The data acquisition request received from the client 60 by the analysis unit 30a may be given a close request last. In this case, the group of the data acquisition request is stored as a group to be disconnected, and the group After the above process is completed, the client side termination unit 11a is instructed to disconnect the connection to the client 60.
[0210]
Server-side termination 21a
The difference from the server-side termination unit 21 of the first embodiment is that, in this embodiment, the data acquisition requests delivered from the analysis unit 30a are divided for each group, so that each group is processed in turn, The point of disconnecting the connection with the server 70 for each group (this is the case where a close request is added to the last acquisition request of each group delivered simultaneously with the connection disconnection request from the analysis unit 30a. Is transmitted to the server 70 by the server-side terminal unit 21a, and if the close request is not added, the server-side terminal unit 21a transmits the last acquisition request for each group to the server 70. This is achieved by explicitly issuing a connection disconnection request) or for a new group, the server indicated for that group The server side that is different each time it is reestablished to reestablish the connection to the server 70 and transfer the data acquisition request group to the server 70 or to determine the Ack number of the transport layer data to be sent to the server 70 The initial sequence number is different. Another difference is that when the Ack packet corresponding to the updated final sequence number “F” is received, the analysis unit 30a is notified. Other processes are the same as those in the first embodiment.
[0211]
That is, it is as follows.
[0212]
The server-side termination unit 21a receives one group of data acquisition requests and the name of the server 70 from the analysis unit 30a. Then, a transport layer connection is established with the server 70 in accordance with the name of the server 70.
[0213]
As the initial value of the Win value, the Win value notified from the client-side terminal unit 11a is used when the connection is established for the first time, and after that, when the previous connection ends (the same as the updated final sequence number “F” described below) The Win value stored when the response packet having the Ack number is received is used as the initial value.
[0214]
When this connection is established, the switching unit 23 is instructed so that the server-side termination unit 21 can receive a packet transmitted from the server 70 in response to the data acquisition request.
[0215]
When the connection is established, a group of data acquisition requests is sent to the server 70 using the established transport layer connection. A close request is given to the last acquisition request.
[0216]
At the same time, the switching unit 23 is instructed to instruct the server side updating unit 22a to receive packets related to the corresponding connection from the server 70 thereafter.
[0217]
Thereafter, the server side updating unit 22a notifies the Ack number and Win value of the packet received from the server 70, and transport layer data (data acquisition request) to be sent to the server 70 using this value. Etc.), retransmission control and flow control are performed.
[0218]
Thereafter, the Ack number and the Win value are communicated from the client-side terminal unit 11a, and the Ack number is rewritten and updated as “Ack number: = Ack number notified from the client-side terminal unit 11a−SU + SS”. As the value, the notified value is used as it is, and a response packet is generated and transmitted to the server 70.
[0219]
Here, “SU” is an initial sequence number of the client side processing unit 10a of the connection between the client 60 and the client side processing unit 10a, and “SS” is the server side processing unit 20a and the current server 70. It is the initial sequence number on the server side of the connection or the last sequence number +1 of the packet with the end flag from the immediately preceding server 70. The initial sequence number of the client-side termination unit 11a of “SU” is notified from the client-side termination unit 11a.
[0220]
In addition, in addition / subtraction of sequence numbers, processing when the maximum value of sequence numbers is exceeded or below the minimum value shall conform to the handling of addition / subtraction of sequence numbers of the transport protocol.
[0221]
Furthermore, if the client-side termination unit 11a notifies that the connection has been disconnected, the connection from the server-side processing unit 20a to the server 70 is a bidirectional connection between the server-side processing unit 20a and the server 70. As a result of disconnection (assuming that a packet with an end flag has been sent to the server 70), disconnection processing is performed.
[0222]
For the connection from the server side processing unit 20a to the client 60, the server side update unit 22a notifies the final sequence number of the data in the packet with the end flag arriving from the server 70. Update as “Update F = F−SS + SU”. If the same Ack number as the updated last sequence number arrives, it is assumed that the connection is disconnected (the packet with the end flag and the Ack packet corresponding thereto arrives) As a result, the transport layer of the connection from the server 70 to the client 60 via the exchange 100a is disconnected. Then, the analysis unit 30 is notified that the processing of the group has been completed. In addition, the Win value at this time is stored.
[0223]
When a connection disconnection request is received from the analysis unit 30a, the switching unit 23 is instructed to transmit a packet of the subsequent connection to the server-side termination unit 21, and the connection is disconnected. 30 is notified.
[0224]
Server side update unit 22a
The difference from the server side update unit 22a of the first embodiment is that a process for defeating the end flag when the end flag is set in the packet coming from the server 70 side is included, and the value of the final sequence number “F” is set. The process of passing to the client side termination | terminus part 11a becomes unnecessary.
[0225]
That is, it is as follows.
[0226]
For the packet received from the server 70, the server-side update unit 22a notifies the server-side termination unit 21a of the Ack number and Win value written in the packet. When the length of the transport layer data of the packet is “0”, the packet is discarded.
[0227]
If the data length is not “0”, the packet is transferred to the client side update unit 12a. In addition, when this is the first packet that is not “0” of the connection to be transferred to the client-side updating unit 12a, an instruction to start one-way splicing is simultaneously issued to the client-side termination unit 11a.
[0228]
When a packet with an end flag arrives from the server 70, the end flag is cleared and the final sequence number “F” of the data in the packet is transferred to the server-side terminal unit 21.
[0229]
Next, the process of each part of this Embodiment is demonstrated.
[0230]
FIG. 12 is a flowchart for explaining the operation of the client side termination unit 11a of the present embodiment.
[0231]
The operation of the client-side termination unit 11a in the present embodiment is the same as in steps 301 to 312 in the first embodiment shown in FIG.
[0232]
The difference between the operation of the client-side termination unit 11a of the present embodiment and the first embodiment is that a connection disconnection request from the analysis unit 30a can be received, and a connection disconnection request is received from the analysis unit 30a. (Step 1001), the client-side termination unit 11a disconnects the connection from the client-side processing unit 10a to the client 60 (Step 1002).
[0233]
The flowchart of the operation of the client side updating unit 12a of this embodiment is the same as that of the first embodiment of FIG.
[0234]
FIG. 13 is a flowchart for explaining the operation of the analysis unit 30a of the present embodiment.
[0235]
Referring to FIG. 13, the analysis unit 30a according to the present embodiment first receives an instruction or the like from each of the client-side termination unit 11a and the server-side termination unit 21a.
[0236]
When a data acquisition request is received from the client-side terminal unit 11a (step 1102), the application layer is terminated, and the data acquisition request (a plurality of data) from the client 60 is analyzed, and an appropriate connection destination server 70 is determined (step 1103). Then, the data acquisition request and the name of the server 70 are delivered to the server-side termination unit 21.
[0237]
If the corresponding server 70 is different for each of the plurality of data acquisition requests, the data acquisition requests are grouped for each server (step 1104). As a grouping method, a method of dividing a plurality of data acquisition requests for each corresponding server 70 in order from the front is possible.
[0238]
That is, in this method, for example, when there are ten acquisition requests R1 to R10, R1 to R2 are the first server, R3 to R5 are the second server, and R6 to R10 are the first server, R1 to R2 can be grouped in order with the first group, R3 to R5 can be grouped with the second group, and R6 to R10 can be grouped with the third group. In this example, the servers 70 for the first group and the third group are the same first server, but are grouped as different groups by grouping the acquisition requests in order from the front.
[0239]
If the data acquisition request arrived from the client 60 has a close request (step 1105), the group with the close request is stored as a group to be disconnected (step 1106).
[0240]
If the processing of the group currently being processed has been completed (step 1107), the first group is extracted (step 1108). If it is not the last group (step 1109), the last group acquisition request is made. A close request is given (step 1110). As a result, when the reception of the data is completed, the server 70 disconnects the connection from the server 70 side. Then, an appropriate server name and an acquisition request are transferred to the server-side terminal unit 21 (step 1111).
[0241]
In the case of the last group, since there may be additional data acquisition requests, an appropriate server 70 name and acquisition request are transferred to the server-side terminal unit 21 without adding a close request (step 1111). ).
[0242]
If it is determined in step 1107 that the group currently being processed has not been completed, if the group currently being processed is not the final group, the classified group and the name of the server 70 are stored and the process ends (steps 1112 and 1113). ).
[0243]
If it is the last group (step 1112), if there is a group other than the first group of the newly arrived acquisition request, it is stored together with the corresponding server 70 name (step 1114), and the currently processed group and the newly arrived acquisition request If the first group is for the same server 70 (step 1115), the first group of the newly arrived acquisition request is added to the server side processing unit (step 1116).
[0244]
In the case of going to a different server 70, a connection disconnection request is issued to the server-side termination unit 21, and the first group of acquisition requests newly arrived at the server-side termination unit 21 after the disconnection is completed is delivered (step 1117).
[0245]
In step 1101, if the server 70 receives a processing completion notification for the group currently being processed (step 1118), if the group is a group to be disconnected, the client-side termination unit 11a disconnects the connection with the client 60. (Steps 1119 and 1120).
[0246]
Otherwise, if an unprocessed group remains, the same processing as in step 1108 and subsequent steps is performed for that group (steps 1119 and 1121).
[0247]
FIG. 14 is a flowchart for explaining the operation of the server-side termination unit 21a of the present embodiment.
[0248]
Referring to FIG. 14, the difference between the operation of the server-side termination unit 21 a of the present embodiment and the operation of the first embodiment of FIG. 6 is the operation when the instruction from the analysis unit 30 a is received (step 1201 to step 1210) and between step 517 and step 518 includes a process of notifying the analysis unit 30a of the completion of disconnection of the connection.
[0249]
For this reason, the operation (step 1201 to step 1210) when receiving a command from the analysis unit 30a will be described here.
[0250]
First, when a new data acquisition request group is received from the analysis unit 30a (step 1201), a transport layer connection is established to the server 70 in accordance with the designation of the connection destination server 70 received at the same time (step 1201). Step 1202). When this connection is established, the switching unit 23 is instructed in advance so that the server-side termination unit 21 receives a packet arriving from the server 70.
[0251]
When the connection is established, a group of data acquisition requests is sent to the server 70 using the established transport layer connection. At the same time, the switching unit 23 is instructed to send a packet related to the corresponding connection from the server 70 thereafter. Instructs to arrive at the server-side update unit 22a. Then, a data acquisition request is sent to the server 70 using the established transport layer connection (steps 1203 to 1205).
[0252]
If it is not a new group designation in step 1201, if it is a connection disconnection request (step 1206), the switching unit 23a is instructed to transmit a packet to the server termination unit (step 1207). The connection is disconnected (step 1208), and the analysis unit 30a is notified of the completion of the disconnection (step 1209). If it is not a connection disconnection request in step 1206, the received data acquisition request is transmitted to the corresponding server 70 (step 1210).
[0253]
FIG. 15 is a flowchart for explaining the operation of the server side update unit 22a of the present embodiment.
[0254]
Referring to FIG. 15, the operation of the server-side update unit 22 a of this embodiment is different from the first embodiment shown in FIG. 7 in that a packet with an end flag is received from the server 70 in step 603. (Steps 1301 and 1302).
[0255]
When a packet with an end flag arrives from the server 70, the server-side update unit 22a of the present embodiment sends the final sequence number “F” of the data in the packet to the server-side termination unit 21 and the client-side termination unit 11a. The packet is transferred (step 1301), the end flag of the packet is changed to “ON” (turned down) and changed (step 1302), and the changed packet is transferred to the client side update unit 12a (step 609).
[0256]
FIG. 16 is a diagram for explaining the flow of data in the one-way terminal switch according to the present embodiment. When the one-way splicing operation is performed, how the sequence number, Ack number, and Win value are determined. It shows whether data is exchanged among the client 60, the server 70, the client-side termination unit 11a, the server-side termination unit 21, the client-side update unit 12a, the server-side update unit 22a, and the like.
[0257]
Also in the present embodiment, data from the client 60 to the client-side terminal unit 11a and its response, data from the server-side terminal unit 21 to the server 70 and its response, and data from the server 70 to the client 60 and its response flow And the Win value indicating the rest of the reception buffer is correctly processed in the same manner as described in FIG. 8 of the first embodiment of the present invention.
[0258]
Similarly to the description in the first embodiment, the client-side termination unit 11a and the server-side termination unit 21a of the present embodiment are divided into individual packets from the client 60 and transmitted to the server 70. It is also possible to transmit the transmission data to the server after restoring to the original state before dividing, and when adopting a single method, the analysis unit 30a of the present embodiment With reference to the transmission data restored to the state before the division, it is also possible to perform processing such as determination of the connection destination server.
[0259]
In the exchange 100a of the present embodiment described above, in addition to the effects of the first embodiment, the data acquisition requests from the clients 60 are grouped and distributed to the appropriate server 70 by the analysis unit 30a. Can do.
[0260]
In addition, the end of the sequence number of the packet that has arrived from the server 70 and that has an end flag set is sent to the server 70 indicating that the data transfer from the server 70 to the client 60 for each data acquisition request group has been completed. The server 70 can be switched at the correct timing.
[0261]
Further, by defeating the end flag of the packet transmitted from the server 70 to the client 60, the connection between the client 60 and the one-way terminal switch 100 is disconnected until the client 60 finishes receiving data for all data acquisition requests. Can be maintained without.
[0262]
Next, a specific operation example in the communication system according to the second embodiment configured as described above will be described with reference to the timing chart of FIG. FIG. 17 shows a time series of the sequence number and the Ack number in the second embodiment. Here, the first server 70 (1) and the second server 70 (2) will be described as being grouped.
[0263]
A handshake is performed between the client 60 and the client side processing unit 10. Here, the initial sequence number of the data on the client 60 side is “1000”, and the initial sequence number of the client side processing unit 10 is “2000” (1701).
[0264]
Data with a data acquisition request is transmitted from the client 60 to the client side processing unit 10. At this time, it is assumed that the data acquisition request is from the sequence number “1001” to “1100” (1702).
[0265]
The client-side processing unit 10 returns “1101”, which is the Ack number for this data acquisition request, to the client 60 (1703).
[0266]
The analysis unit 30 determines that the first few of the received data acquisition requests (including a plurality of acquisition requests) are correct to be transmitted to the server 70 (1), and the server 70 (1) Establish a connection. It is assumed that the initial sequence number of the server-side processing unit 20 is “3000” and the initial sequence number of the server 70 (1) is “4000” (1704).
[0267]
A data acquisition request to be transmitted is sent to the server 70 (1) (1705).
[0268]
A part of the data corresponding to the request (sequence numbers “4001” to “4200”) is returned to the client 60 (1706).
[0269]
The sequence number and Ack number are rewritten, and the requested data is delivered to the client 60. By the number conversion, the sequence numbers become “2001” to “2200”, and the Ack number is also rewritten to “1101” (1707).
[0270]
A packet with an Ack number indicating that data up to sequence number “2200” has been received is sent from the client 60 (1708).
[0271]
The Ack number information is number-converted and delivered to the server-side processing unit 20 (1709).
[0272]
The server-side processing unit 20 transmits a packet with the number-converted Ack number to the server 70 (1) (1710).
[0273]
The server 70 (1) sends the last data (sequence number “4201” to “4500”) for the request to the client 60. The FIN flag is set in this packet (1711).
[0274]
The server side processing unit 20 stores the Ack number “4501” corresponding to the last sequence number of this packet. Further, the FIN flag is defeated (1712).
[0275]
The client-side processing unit 10 stores a number “2501” obtained by converting the Ack number for the last sequence number of this packet (1713).
[0276]
The sequence number and Ack number are rewritten, and the requested data is delivered to the client 60. By the number conversion, the sequence numbers are changed from “2201” to “2500”, and the Ack number is also rewritten to “1101”. Here, since the client 60 is a packet in which the FIN flag has fallen, connection termination processing is not performed (1714).
[0277]
The Ack number “2501” is returned from the client 60 (1715).
[0278]
The client-side processing unit 10 looks at this Ack number and matches the stored number “2501”, so it knows that the client 60 has received the last data for the request from the server 70 (1) (1716). ).
[0279]
On the server 70 (1) side, the number “4501” obtained by converting the Ack number of this packet matches the stored number, so that the client 60 has received the last data for the request from the server 70 (1). The process is terminated (1717).
[0280]
A packet with the Ack number converted in number is returned to the server 70 (1) (1718).
[0281]
The analysis unit 30 transmits some of the data acquisition requests received from the client 60 (sequence numbers “1051” to “1100” in the client-side processing unit 10) to the server 70 (2). It determines that it is appropriate, and establishes a connection with the server 70 (2). Here, it is assumed that the initial sequence number of the server-side processing unit 20 is “5000” and the initial sequence number of the server 70 (2) is “6000” (1719).
[0282]
A data acquisition request to be transmitted is sent to the server 70 (2) (1720).
[0283]
A part of data corresponding to the request (sequence numbers “6001” to “6200”) is transmitted to the client 60 (1721).
[0284]
The sequence number and Ack number are rewritten, and the requested data is delivered to the client 60. By the number conversion, the sequence numbers become “2501” to “2700”, and the Ack number is also rewritten to “1101” (1722).
[0285]
A packet with an Ack number indicating that data up to sequence number “2700” has been received is sent from the client 60 (1723).
[0286]
The Ack number information is number-converted and delivered to the server-side processing unit 20 (1724).
[0287]
The server-side processing unit 20 transmits a packet with the number-converted Ack number to the server 70 (2) (1725).
[0288]
As described above, by defeating the end flag of the packet transmitted from the server 70 (1) to the client 60, the client 60 and the one-way terminal switch 100 until the client 60 finishes receiving data for all data acquisition requests. Maintain the connection between them without breaking.
[0289]
It should be noted that the exchanges 100 and 100a according to each of the above embodiments realize the functions of the client side processing unit 10, the server side processing unit 20, the analysis unit 30, and the like as well as other functions in hardware. The computer program having each function can be realized by being loaded into the memory of the computer processing apparatus. This computer program is stored in a magnetic disk, semiconductor memory, or other recording medium 90, 90a. Each function described above is realized by being loaded from the recording medium into the computer processing apparatus and controlling the operation of the computer processing apparatus.
[0290]
Further, by controlling the computer on the server 70 and operating an exchange program on the server 70 for performing packet communication between the server and the client via the exchange, the present invention can be realized. is there. This exchange program is stored in the recording medium of the server 70 in the same manner as described above. In other words, the exchange program sends the response packet sent to the client 60 to the client 60 by one-way splicing from when the data acquisition request is relayed from the client 60 to the client 60 in the exchange 100. It operates to send packets to it.
[0291]
Further, by controlling a computer on the client 60, an exchange program for performing packet communication between the server 70 and the client 60 via the exchange 100 is operated on the client 60, thereby realizing the present invention. Is also possible. This exchange program is stored in the recording medium of the client 60 in the same manner as described above. That is, the exchange program sends a packet from the server 70 by one-way splicing from the time of relaying the data acquisition request to the server 70 in the exchange 100 until the transmission of the response packet received from the server 70 is completed. Operates to receive.
[0292]
Although the present invention has been described with reference to the preferred embodiments and examples, the present invention is not necessarily limited to the above-described embodiments and examples, and various modifications can be made within the scope of the technical idea. Can be implemented.
[0293]
【The invention's effect】
As described above, according to the one-way terminal switch of the present invention, the following effects are achieved.
[0294]
First, in the one-way termination switch according to the present invention, during one-way splicing, the data from the server to the client is simply rewritten for each packet without terminating the transport layer. High-speed packet transfer can be realized by transferring the packet to the server, and at the same time, one-way splicing can be realized that refers to and terminates a data acquisition request sent from the client to the server.
[0295]
With one-way splicing, it is possible to always forward the data acquisition request to the appropriate server by referring to the data acquisition request sent from the client to the server, and at the same time, a large amount of data arriving from the server to the client side. With respect to data, a throughput equivalent to that of the conventional exchange 100 is realized by a simplified termination process in which only the sequence number and the Ack number are rewritten for each packet.
[0296]
Furthermore, until the client receives all data in response to a data acquisition request from the client, the connection established between the client and the one-way terminal switch can be maintained without disconnection. It is not necessary to set up the connection with the server again, and the delay until the necessary data is acquired can be kept small.
[Brief description of the drawings]
FIG. 1 is a diagram for explaining the concept of a communication system using a one-way terminal switch according to the present invention.
FIG. 2 is a block diagram illustrating an example of a network configuration using the one-way terminal switch according to the first embodiment of this invention.
FIG. 3 is a block diagram showing a configuration of a one-way terminal switch according to the first embodiment of this invention.
FIG. 4 is a flowchart for explaining an operation of a client side termination unit according to the first embodiment of this invention;
FIG. 5 is a flowchart for explaining the operation of the client side update unit according to the first embodiment of this invention;
FIG. 6 is a flowchart for explaining the operation of the server side termination unit according to the first embodiment of this invention;
FIG. 7 is a flowchart for explaining the operation of the server side update unit according to the first embodiment of this invention;
FIG. 8 is a diagram for explaining a data flow in the one-way terminal switch according to the first embodiment of this invention;
FIG. 9 is a timing chart illustrating a specific operation example of the first exemplary embodiment of the present invention.
FIG. 10 is a block diagram illustrating an example of a network configuration using a one-way terminal switch according to a second embodiment of this invention.
FIG. 11 is a block diagram showing a configuration of a one-way terminal switch according to a second embodiment of this invention.
FIG. 12 is a flowchart for explaining an operation of a client side termination unit according to the second embodiment of this invention;
FIG. 13 is a flowchart for explaining an operation of an analysis unit according to the second embodiment of this invention;
FIG. 14 is a flowchart for explaining the operation of the server-side termination unit according to the second embodiment of this invention;
FIG. 15 is a flowchart for explaining the operation of the server side update unit according to the second embodiment of this invention;
FIG. 16 is a diagram for explaining a data flow in the one-way terminal switch according to the second embodiment of this invention;
FIG. 17 is a timing chart illustrating a specific operation example of the second exemplary embodiment of the present invention.
FIG. 18 is a block diagram showing a configuration of a conventional communication network.
FIG. 19 is a block diagram showing a configuration of a conventional layer 7 switch.
[Explanation of symbols]
100, 100a One-way terminal switch
100b Conventional switch
10, 10a Client side processing unit
11, 11a Client side termination
12, 12a Client-side update unit
13b switching part
20, 20a Server side processing unit
21, 21a Server side termination
22, 22a Server side update unit
23, 23a switching unit
30, 30a Analysis unit
40, 40a storage unit
50 network
60 clients
70 servers
71 servers
90, 90a recording medium

Claims (55)

交換機を介してサーバとクライアントとの間でパケット通信を行なうパケット交換による通信システムにおいて、
前記交換機が、
前記サーバから前記クライアントに対して送信されるパケットの中継時に、当該パケットのヘッダ情報を、当該パケットが前記交換機から発信された場合に設定される内容に書き換えて、前記パケットを前記クライアントに対して発信し、
前記クライアントからのデータ取得要求の中継時から、前記サーバから前記クライアントに対し送信される応答のパケットの送信が終了するまでの間、当該サーバから当該クライアントへの方向に対し片方向のスプライシングの処理を行ない、かつ前記クライアントから前記サーバへの方向の通信に対して再送制御及びフロー制御を行なうことを特徴とする通信システム。
In a communication system using packet switching for performing packet communication between a server and a client via an exchange,
The exchange is
When a packet transmitted from the server to the client is relayed, the header information of the packet is rewritten to the contents set when the packet is transmitted from the exchange, and the packet is transmitted to the client. Outgoing,
One-way splicing processing from the server to the client from the time when the data acquisition request from the client is relayed until the transmission of the response packet transmitted from the server to the client is completed the performed, and a communication system, characterized by performing the retransmission control and flow control for the direction of communication to the server from the client.
前記交換機は、
各前記クライアントからの接続を受け付け、当該クライアントとの間におけるコネクションを管理しパケットを送受するクライアント側処理部と、
各前記サーバに対しアクセスし、当該サーバとの間におけるコネクションを管理しパケットを送受するサーバ側処理部と、
前記サーバから前記クライアントに対して送信されるパケットの中継時に、前記パケットのヘッダ情報の書換えを行なって、前記パケットを前記クライアントに対し発信する手段と、
前記サーバから当該クライアントへの方向に対し片方向のスプライシングの処理を行ない、かつ前記クライアントから前記クライアント側処理部への方向の通信及び前記サーバ側処理部から前記サーバへの方向の通信に対しては、確立したコネクションを切断することなく再送制御及びフロー制御を行なう手段を備えることを特徴とする請求項1に記載の通信システム。
The exchange is
A client-side processing unit that accepts a connection from each of the clients, manages a connection with the client, and transmits and receives packets;
A server-side processing unit that accesses each of the servers, manages a connection with the server, and transmits and receives packets;
Means for rewriting the header information of the packet at the time of relaying the packet transmitted from the server to the client, and transmitting the packet to the client;
One-way splicing processing is performed in the direction from the server to the client, and communication in the direction from the client to the client side processing unit and communication in the direction from the server side processing unit to the server are performed. The communication system according to claim 1, further comprising means for performing retransmission control and flow control without disconnecting the established connection.
前記クライアント側処理部は、
各前記クライアントとの間のコネクションを制御し、各前記クライアントからの接続や要求を受け付けるクライアント側終端部と、
前記サーバから前記クライアントに対し送信されるパケットを、ヘッダ情報を書き換えて中継するクライアント側更新部を備え、
前記サーバ側処理部は、
各前記サーバとの間のコネクションを管理し、前記クライアント側終端部から送られる各前記サーバに対する命令やデータを中継するサーバ側終端部と、
各前記サーバから各前記クライアントに対し送信されるパケットを受け付けて、前記クライアント側更新部に送るサーバ側更新部を備えることを特徴とする請求項2に記載の通信システム。
The client side processing unit
A client-side terminator that controls connections between the clients and accepts connections and requests from the clients;
A client side update unit that relays a packet transmitted from the server to the client by rewriting header information,
The server side processing unit
A server-side termination unit that manages a connection between each of the servers and relays instructions and data for each of the servers sent from the client-side termination unit;
The communication system according to claim 2, further comprising a server-side update unit that receives a packet transmitted from each server to each client and sends the packet to the client-side update unit.
前記パケットのヘッダ情報には、
個々のパケットに分割された送信データにおける、当該パケット中のデータの順番を示すシーケンス番号と、
当該パケットのデータ長と、
通信相手が既に受信済みであるデータのシーケンス番号を示すAck番号を含むことを特徴とする請求項3に記載の通信システム。
In the header information of the packet,
In the transmission data divided into individual packets, a sequence number indicating the order of data in the packet,
The data length of the packet,
The communication system according to claim 3, further comprising an Ack number indicating a sequence number of data that has already been received by the communication partner.
前記パケットのヘッダ情報には、
通信相手がまだ受信していない受信バッファの残り容量を示すWin値を含むことを特徴とする請求項4に記載の通信システム。
In the header information of the packet,
The communication system according to claim 4, further comprising a Win value indicating a remaining capacity of a reception buffer that has not yet been received by the communication partner.
前記クライアント側終端部は、
各前記クライアントから受け付けたパケットのヘッダ情報を、前記クライアント側更新部及び前記サーバ側終端部に通知する手段を備え、
前記サーバ側更新部は、
各前記サーバから各前記クライアントに対し送信されるパケットのヘッダ情報を前記サーバ側終端部に通知する手段を備え、
前記クライアント側更新部及び前記サーバ側終端部は、
前記通知されたヘッダ情報を記録し参照して、パケットのヘッダ情報を適正に書き換えることを特徴とする請求項2又は請求項3に記載の通信システム。
The client side termination is
Means for notifying the header information of the packet received from each of the clients to the client side update unit and the server side termination unit;
The server side update unit
Means for notifying the server-side termination unit of header information of a packet transmitted from each server to each client;
The client side update unit and the server side termination unit are:
The communication system according to claim 2 or 3, wherein the notified header information is recorded and referred to, and the header information of the packet is appropriately rewritten.
前記片方向のスプライシング処理が設定された状態において、前記クライアント側終端部は、
各前記クライアントから受け付けたパケットに対する応答処理を前記クライアント側更新部に指示し、
記クライアント側更新部は、
前記応答処理の指示を受け付けて、当該クライアントに対する応答のパケットを生成して発信する手段を備えることを特徴とする請求項6に記載の通信システム。
In the state where the one-way splicing process is set, the client-side termination unit is
Instructing the client side update unit to perform response processing for packets received from each of the clients,
The client-side update unit
The communication system according to claim 6, further comprising means for receiving a response processing instruction and generating and transmitting a response packet to the client.
前記サーバ側更新部は、
1つの前記クライアントに対する複数の前記サーバからのパケットの送信を中継し、
中継するパケットのヘッダ情報から、個々の前記サーバにおけるパケットの送信の終了の旨を示すフラグを除去する手段を備え、
前記クライアントとの間のコネクションを切断することなく、前記複数のサーバを切り換えて発信されるパケットを前記クライアントに中継することを特徴とする請求項2から請求項7のいずれか一つに記載の通信システム。
The server side update unit
Relay transmission of packets from a plurality of the servers to one client;
Means for removing from the header information of the packet to be relayed a flag indicating the end of packet transmission in each of the servers,
8. The packet transmitted by switching the plurality of servers is relayed to the client without disconnecting the connection with the client. 8. Communications system.
前記クライアント側終端部及び前記サーバ側終端部は、
前記クライアントから前記サーバに対して個々のパケットに分割されて送信される送信データを、元の分割する前の状態に復元し、各パケットを、サーバを選択して送信する手段を備えることを特徴とする請求項2から請求項8のいずれか一つに記載の通信システム。
The client side termination unit and the server side termination unit are:
It comprises means for restoring transmission data divided and transmitted to individual packets from the client to the server to a state before the original division, and transmitting each packet by selecting a server. The communication system according to any one of claims 2 to 8.
各前記クライアントが接続する接続先のサーバを決定する解析部を備え、
前記解析部は、
前記クライアント側終端部から、前記クライアントが各前記サーバに対し発信する要求の情報を取得する手段と、
前記要求に基づいて、当該クライアントが接続すべき接続先のサーバを判定する手段と、
前記サーバ側終端部に対して、当該クライアントの前記判定された接続先のサーバへの接続を指示する手段を備えることを特徴とする請求項2から請求項8のいずれか一つに記載の通信システム。
An analysis unit for determining a connection destination server to which each of the clients connects;
The analysis unit
Means for acquiring information of a request that the client sends to each of the servers from the client-side termination unit;
Means for determining a connection destination server to which the client should connect based on the request;
The communication according to any one of claims 2 to 8, further comprising means for instructing the server-side termination unit to connect the client to the determined connection destination server. system.
前記クライアント側終端部及び前記サーバ側終端部は、
前記クライアントから前記サーバに対して、個々のパケットに分割されて送信される送信データを元の分割する前の状態に復元した後に、当該サーバに対し送信する手段を備え、
前記解析部は、
前記元の分割する前の状態に復元された送信データに基づいて、前記接続先のサーバを判定する手段を備えることを特徴とする請求項10に記載の通信システム。
The client side termination unit and the server side termination unit are:
A means for transmitting to the server after restoring the transmission data divided into individual packets and transmitted to the server from the client to the original state before the division,
The analysis unit
11. The communication system according to claim 10, further comprising means for determining the connection destination server based on the transmission data restored to the original state before the division.
前記解析部は、
前記クライアントにより発信された未処理のデータ取得要求を、その接続先のサーバ毎に順次グループに分類する手段と、
前記サーバ側終端部に対して、分類された各前記グループ毎に、対応するサーバへの接続と当該グループに分類された前記データ取得要求の実行を指示する手段を備えることを特徴とする請求項10又は請求項11に記載の通信システム。
The analysis unit
Means for sequentially classifying unprocessed data acquisition requests sent by the client into groups for each server to which the connection is made;
The server-side termination unit is provided with means for instructing connection to a corresponding server and execution of the data acquisition request classified into the group for each of the classified groups. The communication system according to claim 10 or claim 11.
複数のサーバとクライアントとの通信ネットワークを介したパケット通信を中継する交換機において、
前記サーバから前記クライアントに対して送信されるパケットの中継時に、当該パケットのヘッダ情報を、当該パケットが交換機から発信された場合に設定される内容に書き換えて、前記パケットを前記クライアントに対して発信し、
前記クライアントからのデータ取得要求の中継時から、前記サーバから前記クライアントに対し送信される応答のパケットの送信が終了するまでの間、当該サーバから当該クライアントへの方向に対し片方向のスプライシングの処理を行ない、かつ前記クライアントから前記サーバへの方向の通信に対して再送制御及びフロー制御を行なうことを特徴とする交換機。
In an exchange that relays packet communication via a communication network between multiple servers and clients,
When the packet transmitted from the server to the client is relayed, the header information of the packet is rewritten to the contents set when the packet is transmitted from the exchange, and the packet is transmitted to the client. And
One-way splicing processing from the server to the client from the time when the data acquisition request from the client is relayed until the transmission of the response packet transmitted from the server to the client is completed the performed, and exchange and performing retransmission control and flow control for from the client in the direction of communication to the server.
各前記クライアントからの接続を受け付け、当該クライアントとの間におけるコネクションを管理しパケットを送受するクライアント側処理部と、
各前記サーバに対しアクセスし、当該サーバとの間におけるコネクションを管理しパケットを送受するサーバ側処理部と、
前記サーバから前記クライアントに対して送信されるパケットの中継時に、前記パケットのヘッダ情報の書換えを行なって、前記パケットを前記クライアントに対し発信する手段と、
前記サーバから当該クライアントへの方向に対し片方向のスプライシングの処理を行ない、かつ前記クライアントから前記クライアント側処理部への方向の通信及び前記サーバ側処理部から前記サーバへの方向の通信に対しては、確立したコネクションを切断することなく再送制御及びフロー制御を行なう手段を備えることを特徴とする請求項13に記載の交換機。
A client-side processing unit that accepts a connection from each of the clients, manages a connection with the client, and transmits and receives packets;
A server-side processing unit that accesses each of the servers, manages a connection with the server, and transmits and receives packets;
Means for rewriting the header information of the packet at the time of relaying the packet transmitted from the server to the client, and transmitting the packet to the client;
One-way splicing processing is performed in the direction from the server to the client, and communication in the direction from the client to the client side processing unit and communication in the direction from the server side processing unit to the server are performed. 14. The exchange according to claim 13, further comprising means for performing retransmission control and flow control without disconnecting the established connection.
前記クライアント側処理部は、
各前記クライアントとの間のコネクションを管理し、各前記クライアントからの接続や要求を受け付けるクライアント側終端部と、
前記サーバから前記クライアントに対し送信されるパケットを、ヘッダ情報を書き換えて中継するクライアント側更新部を備え、
前記サーバ側処理部は、
各前記サーバとの間のコネクションを管理し、前記クライアント側終端部から送られる各前記サーバに対する命令やデータを中継するサーバ側終端部と、
各前記サーバから各前記クライアントに対し送信されるパケットを受け付けて、前記クライアント側更新部に送るサーバ側更新部を備えることを特徴とする請求項14に記載の交換機。
The client side processing unit
Managing a connection between each of the clients, and a client-side termination unit that accepts connections and requests from each of the clients;
A client side update unit that relays a packet transmitted from the server to the client by rewriting header information,
The server side processing unit
A server-side termination unit that manages a connection between each of the servers and relays instructions and data for each of the servers sent from the client-side termination unit;
15. The exchange according to claim 14, further comprising a server-side update unit that receives a packet transmitted from each server to each client and sends the packet to the client-side update unit.
前記パケットのヘッダ情報には、
個々のパケットに分割された送信データにおける、当該パケット中のデータの順番を示すシーケンス番号と、
当該パケットのデータ長と、
通信相手が既に受信済みであるデータのシーケンス番号を示すAck番号を含むことを特徴とする請求項15に記載の交換機。
In the header information of the packet,
In the transmission data divided into individual packets, a sequence number indicating the order of data in the packet,
The data length of the packet,
The exchange according to claim 15, further comprising an Ack number indicating a sequence number of data that has already been received by a communication partner.
前記パケットのヘッダ情報には、
通信相手がまだ受信していない受信バッファの残り容量を示すWin値を含むことを特徴とする請求項16に記載の交換機。
In the header information of the packet,
The exchange according to claim 16, further comprising a Win value indicating a remaining capacity of a reception buffer that has not yet been received by a communication partner.
前記クライアント側終端部は、
各前記クライアントから受け付けたパケットのヘッダ情報を、前記クライアント側更新部及び前記サーバ側終端部に通知する手段を備え、
前記サーバ側更新部は、
各前記サーバから各前記クライアントに対し送信されるパケットのヘッダ情報を前記サーバ側終端部に通知する手段を備え、
前記クライアント側更新部及び前記サーバ側終端部は、
前記通知されたヘッダ情報を記録し参照して、パケットのヘッダ情報を適正に書き換えることを特徴とする請求項14又は請求項15に記載の交換機。
The client side termination is
Means for notifying the header information of the packet received from each of the clients to the client side update unit and the server side termination unit;
The server side update unit
Means for notifying the server-side termination unit of header information of a packet transmitted from each server to each client;
The client side update unit and the server side termination unit are:
16. The exchange according to claim 14 or 15, wherein the header information of the packet is appropriately rewritten by recording and referring to the notified header information.
前記片方向のスプライシング処理が設定された状態において、前記クライアント側終端部は、
各前記クライアントから受け付けたパケットに対する応答処理を前記クライアント側更新部に指示し、
記クライアント側更新部は、
前記応答処理の指示を受け付けて、当該クライアントに対する応答のパケットを生成して発信する手段を備えることを特徴とする請求項18に記載の交換機。
In the state where the one-way splicing process is set, the client-side termination unit is
Instructing the client side update unit to perform response processing for packets received from each of the clients,
The client-side update unit
19. The exchange according to claim 18, further comprising means for receiving a response processing instruction and generating and transmitting a response packet to the client.
前記サーバ側更新部は、
1つの前記クライアントに対する複数の前記サーバからのパケットの送信を中継し、
中継するパケットのヘッダ情報から、個々の前記サーバにおけるパケットの送信の終了の旨を示すフラグを除去する手段を備え、
前記クライアントとの間のコネクションを切断することなく、前記複数のサーバを切り換えて発信されるパケットを前記クライアントに中継することを特徴とする請求項14から請求項19のいずれか一つに記載の交換機。
The server side update unit
Relay transmission of packets from a plurality of the servers to one client;
Means for removing from the header information of the packet to be relayed a flag indicating the end of packet transmission in each of the servers,
20. The packet transmitted by switching the plurality of servers is relayed to the client without disconnecting the connection with the client. 20. switch.
前記クライアント側終端部及び前記サーバ側終端部は、
前記クライアントから前記サーバに対して個々のパケットに分割されて送信される送信データを、元の分割する前の状態に復元し、各パケットを、サーバを選択して送信する手段を備えることを特徴とする請求項14から請求項20のいずれか一つに記載の交換機。
The client side termination unit and the server side termination unit are:
It comprises means for restoring transmission data divided into individual packets to be transmitted from the client to the server to the state before the original division, and transmitting each packet by selecting the server. The exchange according to any one of claims 14 to 20.
各前記クライアントが接続する接続先のサーバを決定する解析部を備え、
前記解析部は、
前記クライアント側終端部から、前記クライアントが各前記サーバに対し発信する要求の情報を取得する手段と、
前記要求に基づいて、当該クライアントが接続すべき接続先のサーバを判定する手段と、
前記サーバ側終端部に対して、当該クライアントの前記判定された接続先のサーバへの接続を指示する手段を備えることを特徴とする請求項14から請求項21のいずれか一つに記載の交換機。
An analysis unit for determining a connection destination server to which each of the clients connects;
The analysis unit
Means for acquiring information of a request that the client sends to each of the servers from the client-side termination unit;
Means for determining a connection destination server to which the client should connect based on the request;
The exchange according to any one of claims 14 to 21, further comprising means for instructing the server-side termination unit to connect to the determined connection destination server of the client. .
前記クライアント側終端部及び前記サーバ側終端部は、
前記クライアントから前記サーバに対して、個々のパケットに分割されて送信される送信データを元の分割する前の状態に復元した後に、当該サーバに対し送信する手段を備え、
前記解析部は、
前記元の分割する前の状態に復元された送信データに基づいて、前記接続先のサーバを判定する手段を備えることを特徴とする請求項22に記載の交換機。
The client side termination unit and the server side termination unit are:
A means for transmitting to the server after restoring the transmission data divided into individual packets and transmitted to the server from the client to the original state before the division,
The analysis unit
23. The exchange according to claim 22, further comprising means for determining the connection destination server based on the transmission data restored to the original state before the division.
前記解析部は、
前記クライアントにより発信された未処理のデータ取得要求を、その接続先のサーバ毎に順次グループに分類する手段と、
前記サーバ側終端部に対して、分類された各前記グループ毎に、対応するサーバへの接続と当該グループに分類された前記データ取得要求の実行を指示する手段を備えることを特徴とする請求項22又は請求項23に記載の交換機。
The analysis unit
Means for sequentially classifying unprocessed data acquisition requests sent by the client into groups for each server to which the connection is made;
The server-side termination unit is provided with means for instructing connection to a corresponding server and execution of the data acquisition request classified into the group for each of the classified groups. The switch according to claim 22 or 23.
複数のサーバとクライアントとの間の、通信ネットワークを介したパケット通信を中継する交換機のパケット交換方法において、
前記サーバから前記クライアントに対して送信されるパケットの中継時に、当該パケットのヘッダ情報を、当該パケットが交換機から発信された場合に設定される内容に書き換えて、前記パケットを前記クライアントに対して発信し、
前記クライアントからのデータ取得要求の中継時から、前記サーバから前記クライアントに対し送信される応答のパケットの送信が終了するまでの間、当該サーバから当該クライアントへの方向に対し片方向のスプライシングの処理を行ない、かつ前記クライアントから前記サーバへの方向の通信に対して再送制御及びフロー制御を行なうことを特徴とするパケット交換方法。
In a packet switching method of an exchange that relays packet communication between a plurality of servers and clients via a communication network,
When the packet transmitted from the server to the client is relayed, the header information of the packet is rewritten to the contents set when the packet is transmitted from the exchange, and the packet is transmitted to the client. And
One-way splicing processing from the server to the client from when the data acquisition request from the client is relayed until the response packet transmitted from the server to the client is completed the performed, and packet switching method, wherein from said client to perform the direction of retransmission control and flow control for the communication to the server.
各前記クライアントとの間のコネクションを管理し、各前記クライアントからの接続や要求を受け付けるステップと、
前記サーバから前記クライアントに対し送信されるパケットを、ヘッダ情報を書き換えて中継するステップと、
各前記サーバとの間のコネクションを管理し、前記クライアントから送られる各前記サーバに対する命令やデータを中継するステップを備え、
前記パケットのヘッダ情報には、
個々のパケットに分割された送信データにおける、当該パケット中のデータの順番を示すシーケンス番号と、
当該パケットのトランスポート層以下のデータ長と、
通信相手が既に受信済みであるデータのシーケンス番号を示すAck番号と、通信相手がまだ受信していない受信バッファの残り容量を示すWin値を含むことを特徴とする請求項25に記載のパケット交換方法。
Managing a connection between each of the clients and receiving a connection or request from each of the clients;
A packet transmitted from the server to the client, rewriting the header information, and relaying;
Managing a connection with each of the servers, and comprising relaying instructions and data for each of the servers sent from the client;
In the header information of the packet,
In the transmission data divided into individual packets, a sequence number indicating the order of data in the packet,
The data length below the transport layer of the packet,
26. The packet exchange according to claim 25, comprising an Ack number indicating a sequence number of data that has already been received by a communication partner, and a Win value indicating a remaining capacity of a reception buffer that has not yet been received by the communication partner. Method.
1つの前記クライアントに対する複数の前記サーバからのパケットの送信を中継し、
中継するパケットのヘッダ情報から、個々の前記サーバにおけるパケットの送信の終了の旨を示すフラグを除去するステップを備え、
前記クライアントとの間のコネクションを切断することなく、前記複数のサーバを切り換えて発信されるパケットを前記クライアントに中継することを特徴とする請求項26に記載のパケット交換方法。
Relay transmission of packets from a plurality of the servers to one client;
A step of removing a flag indicating the end of packet transmission in each of the servers from the header information of the packet to be relayed,
27. The packet switching method according to claim 26, wherein a packet transmitted by switching the plurality of servers is relayed to the client without disconnecting a connection with the client.
前記クライアントから前記サーバに対して個々のパケットに分割されて送信される送信データを、元の分割する前の状態に復元し、各パケットを、サーバを選択して送信するステップを備えることを特徴とする請求項26又は請求項27に記載のパケット交換方法。The transmission data divided into individual packets sent from the client to the server is restored to the state before the original division, and each packet is selected and transmitted to the server. The packet switching method according to claim 26 or 27. 前記クライアントが各前記サーバに対し発信する要求の情報を取得するステップと、
前記要求に基づいて、当該クライアントが接続すべき接続先のサーバを判定するステップと、
当該クライアントの前記判定された接続先のサーバへの接続を指示するステップを備えることにより、各前記クライアントが接続する接続先のサーバを決定することを特徴とする請求項26から請求項28のいずれか一つに記載のパケット交換方法。
Obtaining information of a request that the client sends to each of the servers;
Determining a connection destination server to which the client should connect based on the request;
29. The server according to claim 26, further comprising a step of instructing connection of the client to the determined connection destination server, thereby determining a connection destination server to which each of the clients is connected. Or the packet switching method according to claim 1.
前記クライアントにより発信された未処理のデータ取得要求を、その接続先のサーバ毎に順次グループに分類するステップと、
分類された各前記グループ毎に、対応するサーバへの接続と当該グループに分類された前記データ取得要求の実行を指示するステップを備えることを特徴とする請求項29に記載のパケット交換方法。
Sequentially classifying the raw data acquisition requests sent by the client into groups for each server to which it is connected;
30. The packet switching method according to claim 29, further comprising a step of instructing, for each of the classified groups, connection to a corresponding server and execution of the data acquisition request classified into the group.
コンピュータを制御することにより、複数のサーバとクライアントとの間の、通信ネットワークを介したパケット通信を中継する交換プログラムをコンピュータにより読み取り可能に記録した記録媒体において、
前記交換プログラムは、
前記サーバから前記クライアントに対して送信されるパケットの中継時に、当該パケットのヘッダ情報を、当該パケットが前記交換機から発信された場合に設定される内容に書き換えて、前記パケットを前記クライアントに対して発信し、
前記クライアントからのデータ取得要求の中継時から、前記サーバから前記クライアントに対し送信される応答のパケットの送信が終了するまでの間、当該サーバから当該クライアントへの方向に対し片方向のスプライシングの処理を行ない、かつ前記クライアントから前記サーバへの方向の通信に対して再送制御及びフロー制御を行なうことを特徴とする交換プログラムを記録した記録媒体。
In a recording medium in which an exchange program that relays packet communication between a plurality of servers and clients via a communication network by controlling the computer is recorded so as to be readable by the computer,
The exchange program is
When a packet transmitted from the server to the client is relayed, the header information of the packet is rewritten to the contents set when the packet is transmitted from the exchange, and the packet is transmitted to the client. Outgoing,
One-way splicing processing from the server to the client from the time when the data acquisition request from the client is relayed until the transmission of the response packet transmitted from the server to the client is completed the conducted, and a recording medium recording a replacement program and performs retransmission control and flow control for the direction of communication to the server from the client.
前記交換プログラムは、
各前記クライアントとの間のコネクションを管理し、各前記クライアントからの接続や要求を受け付けるステップと、
前記サーバから前記クライアントに対し送信されるパケットを、ヘッダ情報を書き換えて中継するステップと、
各前記サーバとの間のコネクションを管理し、前記クライアントから送られる各前記サーバに対する命令やデータを中継するステップを備え、
前記パケットのヘッダ情報には、
個々のパケットに分割された送信データにおける、当該パケット中のデータの順番を示すシーケンス番号と、
当該パケットのトランスポート層以下のデータ長と、
通信相手が既に受信済みであるデータのシーケンス番号を示すAck番号と、
通信相手がまだ受信していない受信バッファの残り容量を示すWin値を含むことを特徴とする請求項31に記載の交換プログラムを記録した記録媒体。
The exchange program is
Managing a connection between each of the clients and receiving a connection or request from each of the clients;
A packet transmitted from the server to the client, rewriting the header information, and relaying;
Managing a connection with each of the servers, and comprising relaying instructions and data for each of the servers sent from the client;
In the header information of the packet,
In the transmission data divided into individual packets, a sequence number indicating the order of data in the packet,
The data length below the transport layer of the packet,
An Ack number indicating the sequence number of data that the communication partner has already received;
32. The recording medium on which the exchange program according to claim 31 is recorded, comprising a Win value indicating a remaining capacity of a reception buffer that has not yet been received by a communication partner.
前記交換プログラムは、
1つの前記クライアントに対する複数の前記サーバからのパケットの送信を中継し、
中継するパケットのヘッダ情報から、個々の前記サーバにおけるパケットの送信の終了の旨を示すフラグを除去するステップを備え、
前記クライアントとの間のコネクションを切断することなく、前記複数のサーバを切り換えて発信されるパケットを前記クライアントに中継することを特徴とする請求項32に記載の交換プログラムを記録した記録媒体。
The exchange program is
Relay transmission of packets from a plurality of the servers to one client;
A step of removing a flag indicating the end of packet transmission in each of the servers from the header information of the packet to be relayed,
The recording medium recording the exchange program according to claim 32, wherein a packet transmitted by switching the plurality of servers is relayed to the client without disconnecting the connection with the client.
前記交換プログラムは、
前記クライアントから前記サーバに対して個々のパケットに分割されて送信される送信データを、元の分割する前の状態に復元し、各パケットを、サーバを選択して送信するステップを備えることを特徴とする請求項32又は請求項33に記載の交換プログラムを記録した記録媒体。
The exchange program is
The transmission data divided into individual packets transmitted from the client to the server is restored to the state before the original division, and each packet is selected and transmitted to the server. A recording medium on which the exchange program according to claim 32 or 33 is recorded.
前記交換プログラムは、
前記クライアントが各前記サーバに対し発信する要求の情報を取得するステップと、
前記要求に基づいて、当該クライアントが接続すべき接続先のサーバを判定するステップと、
当該クライアントの前記判定された接続先のサーバへの接続を指示するステップを備えることにより、各前記クライアントが接続する接続先のサーバを決定することを特徴とする請求項32から請求項34のいずれか一つに記載の交換プログラムを記録した記録媒体。
The exchange program is
Obtaining information of a request that the client sends to each of the servers;
Determining a connection destination server to which the client should connect based on the request;
35. The server according to claim 32, further comprising a step of instructing connection of the client to the determined connection destination server to determine a connection destination server to which each of the clients is connected. A recording medium on which the exchange program according to claim 1 is recorded.
前記交換プログラムは、
前記クライアントにより発信された未処理のデータ取得要求を、その接続先のサーバ毎に順次グループに分類するステップと、
分類された各前記グループ毎に、対応するサーバへの接続と当該グループに分類された前記データ取得要求の実行を指示するステップを備えることを特徴とする請求項35に記載の交換プログラムを記録した記録媒体。
The exchange program is
Sequentially classifying the raw data acquisition requests sent by the client into groups for each server to which it is connected;
36. The exchange program according to claim 35, further comprising a step of instructing, for each of the classified groups, connection to a corresponding server and execution of the data acquisition request classified into the group. recoding media.
サーバ上のコンピュータを制御することにより、交換機を介してサーバとクライアントとの間でパケット通信を行なう通信システムにおけるサーバ上で動作する交換プログラムをコンピュータにより読み取り可能に記録した記録媒体において、
前記交換プログラムは、
前記交換機における前記クライアントからのデータ取得要求の中継時から、前記クライアントに対し送信される応答のパケットの送信を終了するまでの間、片方向のスプライシングによって当該クライアントへに対し前記パケットを送信することを特徴とするサーバ上で動作する交換プログラムをコンピュータにより読み取り可能に記録した記録媒体。
In a recording medium in which an exchange program operating on a server in a communication system that performs packet communication between a server and a client via an exchange is recorded by controlling the computer on the server so that the computer can read it,
The exchange program is
Transmitting the packet to the client by one-way splicing from the time of relaying the data acquisition request from the client in the exchange until the end of transmission of the response packet transmitted to the client The recording medium which recorded the exchange program which operate | moves on the server characterized by these so that reading by a computer was possible.
クライアント上のコンピュータを制御することにより、交換機を介してサーバとクライアントとの間でパケット通信を行なう通信システムにおけるクライアント上で動作する交換プログラムをコンピュータにより読み取り可能に記録した記録媒体において、
前記交換機における前記サーバへのデータ取得要求の中継時から、前記サーバから受信される応答のパケットの送信を終了するまでの間、片方向のスプライシングによって当該サーバから前記パケットを受信することを特徴とするクライアント上で動作する交換プログラムをコンピュータにより読み取り可能に記録した記録媒体。
In a recording medium in which an exchange program that operates on a client in a communication system that performs packet communication between a server and a client via a switch by controlling the computer on the client is readable by the computer,
From the time of relaying a data acquisition request to the server in the exchange until the end of transmission of a response packet received from the server, the packet is received from the server by one-way splicing. The recording medium which recorded the exchange program which operate | moves on the client to be readable by a computer.
交換機を介してサーバとクライアントとの間でパケット通信を行なう通信システムにおけるサーバであって、
前記交換機における前記クライアントからのデータ取得要求の中継時から、前記クライアントに対し送信される応答のパケットの送信を終了するまでの間、片方向のスプライシングによって当該クライアントへに対し前記パケットを送信することを特徴とするサーバ。
A server in a communication system that performs packet communication between a server and a client via an exchange,
Transmitting the packet to the client by one-way splicing from the time of relaying the data acquisition request from the client in the exchange until the end of transmission of the response packet transmitted to the client Server characterized by.
当該パケットのヘッダ情報が、当該パケットが前記交換機から発信された場合に設定される内容に書き換えられた前記パケットを前記クライアントに対して発信することを特徴とする請求項39に記載のサーバ。40. The server according to claim 39, wherein the packet is transmitted to the client in which the header information of the packet is rewritten to the contents set when the packet is transmitted from the exchange. 前記パケットのヘッダ情報には、
個々のパケットに分割された送信データにおける、当該パケット中のデータの順番を示すシーケンス番号と、
当該パケットのデータ長と、
通信相手が既に受信済みであるデータのシーケンス番号を示すAck番号を含むことを特徴とする請求項40に記載のサーバ。
In the header information of the packet,
In the transmission data divided into individual packets, a sequence number indicating the order of data in the packet,
The data length of the packet,
41. The server according to claim 40, further comprising an Ack number indicating a sequence number of data that has already been received by a communication partner.
前記パケットのヘッダ情報には、
通信相手がまだ受信していない受信バッファの残り容量を示すWin値を含むことを特徴とする請求項41に記載のサーバ。
In the header information of the packet,
42. The server according to claim 41, comprising a Win value indicating a remaining capacity of a reception buffer that has not yet been received by a communication partner.
前記交換機が、1つの前記クライアントに対する複数の前記サーバからのパケットの送信を中継し、
中継するパケットのヘッダ情報から、個々の前記サーバにおけるパケットの送信の終了の旨を示すフラグが除去され、
前記クライアントとの間のコネクションを切断することなく、前記複数のサーバを切り換えて発信されるパケットを前記クライアントに中継することを特徴とする請求項40から請求項42のいずれか一つに記載のサーバ。
The switch relays transmission of packets from the plurality of servers to one client;
A flag indicating the end of packet transmission in each of the servers is removed from the header information of the packet to be relayed,
43. The packet transmitted by switching the plurality of servers is relayed to the client without disconnecting the connection with the client, according to any one of claims 40 to 42. server.
前記クライアントから個々のパケットに分割されて送信される送信データが、元の分割する前の状態に復元され、各パケットを、選択されたサーバが受信することを特徴とする請求項40から請求項43のいずれか一つに記載のサーバ。41. The transmission data transmitted by being divided into individual packets from the client is restored to the original state before the division, and each packet is received by the selected server. 44. The server according to any one of 43. 各前記クライアントが接続する接続先のサーバが前記交換機により決定され、
前記クライアントが各前記サーバに対し発信する要求の情報を前記交換機で取得し、
前記要求に基づいて、当該クライアントが接続すべき接続先のサーバが判定され、
当該クライアントの前記判定された接続先のサーバへの接続が指示されることを特徴とする請求項40から請求項44のいずれか一つに記載のサーバ。
A server to which each client connects is determined by the exchange,
Obtain information of the request that the client sends to each of the servers with the exchange,
Based on the request, a connection destination server to which the client should connect is determined,
45. The server according to claim 40, wherein the client is instructed to connect to the determined connection destination server.
前記クライアントにより発信された未処理のデータ取得要求を、その接続先のサーバ毎に順次グループに分類され、
分類された各前記グループ毎に、対応するサーバへの接続と当該グループに分類された前記データ取得要求の実行が指示されることを特徴とする請求項45に記載のサーバ。
Unprocessed data acquisition requests sent by the client are sequentially grouped into groups for each connected server,
46. The server according to claim 45, wherein each of the classified groups is instructed to connect to a corresponding server and execute the data acquisition request classified into the group.
交換機を介してサーバとクライアントとの間でパケット通信を行なう通信システムにおけるクライアントであって、
前記交換機における前記サーバへのデータ取得要求の中継時から、前記サーバから受信される応答のパケットの送信を終了するまでの間、片方向のスプライシングによって当該サーバから前記パケットを受信することを特徴とするクライアント。
A client in a communication system that performs packet communication between a server and a client via an exchange,
From the time of relaying a data acquisition request to the server in the exchange until the end of transmission of a response packet received from the server, the packet is received from the server by one-way splicing. Client.
当該パケットのヘッダ情報が、当該パケットが前記交換機から発信された場合に設定される内容に書き換えられた前記パケットを前記サーバから受信することを特徴とする請求項47に記載のクライアント。48. The client according to claim 47, wherein the packet is received from the server in which the header information of the packet is rewritten to the contents set when the packet is transmitted from the exchange. 前記パケットのヘッダ情報には、
個々のパケットに分割された送信データにおける、当該パケット中のデータの順番を示すシーケンス番号と、
当該パケットのデータ長と、
通信相手が既に受信済みであるデータのシーケンス番号を示すAck番号を含むことを特徴とする請求項48に記載のクライアント。
In the header information of the packet,
In the transmission data divided into individual packets, a sequence number indicating the order of data in the packet,
The data length of the packet,
49. The client according to claim 48, further comprising an Ack number indicating a sequence number of data that has already been received by a communication partner.
前記パケットのヘッダ情報には、
通信相手がまだ受信していない受信バッファの残り容量を示すWin値を含むことを特徴とする請求項49に記載のクライアント。
In the header information of the packet,
The client according to claim 49, further comprising a Win value indicating a remaining capacity of a reception buffer that has not yet been received by a communication partner.
前記交換機が、1つの前記クライアントに対する複数の前記サーバからのパケットの送信を中継し、
中継するパケットのヘッダ情報から、個々の前記サーバにおけるパケットの送信の終了の旨を示すフラグが除去され、
前記クライアントとの間のコネクションを切断することなく、前記複数のサーバを切り換えて発信されるパケットを前記クライアントに中継することを特徴とする請求項48から請求項50のいずれか一つに記載のクライアント。
The switch relays transmission of packets from the plurality of servers to one client;
A flag indicating the end of packet transmission in each of the servers is removed from the header information of the packet to be relayed,
51. The packet transmitted by switching the plurality of servers is relayed to the client without disconnecting the connection with the client, according to any one of claims 48 to 50. client.
前記クライアントから個々のパケットに分割されて送信される送信データが、元の分割する前の状態に復元され、各パケットを、選択されたサーバに送信することを特徴とする請求項48から請求項51のいずれか一つに記載のクライアント。49. The transmission data transmitted by being divided into individual packets from the client is restored to the state before the original division, and each packet is transmitted to a selected server. 51. The client according to any one of 51. 各前記クライアントが接続する接続先のサーバが前記交換機により決定され、
前記クライアントが各前記サーバに対し発信する要求の情報を前記交換機で取得し、
前記要求に基づいて、当該クライアントが接続すべき接続先のサーバが判定され、
当該クライアントの前記判定された接続先のサーバへの接続が指示されることを特徴とする請求項48から請求項52のいずれか一つに記載のクライアント。
A server to which each client connects is determined by the exchange,
Obtain information of the request that the client sends to each of the servers with the exchange,
Based on the request, a connection destination server to which the client should connect is determined,
53. The client according to claim 48, wherein the client is instructed to connect to the determined connection destination server.
前記クライアントが発信した未処理のデータ取得要求を、その接続先のサーバ毎に順次グループに分類され、
分類された各前記グループ毎に、対応するサーバへの接続と当該グループに分類された前記データ取得要求の実行が指示されることを特徴とする請求項53に記載のクライアント。
Unprocessed data acquisition requests sent by the client are sequentially grouped into groups for each server to which they are connected,
The client according to claim 53, wherein for each of the classified groups, connection to a corresponding server and execution of the data acquisition request classified into the group are instructed.
請求項12において,前記解析部は、
前記クライアントにより発信された未処理のデータ取得要求を、その接続先のサーバ毎に順次グループに分類する手段と、
前記サーバ側終端部に対して、分類された各前記グループ毎に、対応するサーバへの接続と当該グループに分類された前記データ取得要求の実行及び取得要求の送信後にサーバとのコネクションを切断する事を指示する手段を備えることを特徴とする請求項10又は請求項11に記載の通信システム。
In Claim 12, the analysis unit comprises:
Means for sequentially classifying unprocessed data acquisition requests sent by the client into groups for each server to which the connection is made;
For each group that has been classified to the server-side termination unit, connection to the corresponding server, execution of the data acquisition request classified into the group, and disconnection of the server after transmission of the acquisition request are disconnected 12. The communication system according to claim 10, further comprising means for instructing a thing.
JP2001246139A 2000-12-28 2001-08-14 COMMUNICATION SYSTEM, PACKET EXCHANGE METHOD THEREOF, AND RECORDING MEDIUM CONTAINING EXCHANGE PROGRAM Expired - Fee Related JP3642305B2 (en)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2001246139A JP3642305B2 (en) 2000-12-28 2001-08-14 COMMUNICATION SYSTEM, PACKET EXCHANGE METHOD THEREOF, AND RECORDING MEDIUM CONTAINING EXCHANGE PROGRAM

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
JP2000401060 2000-12-28
JP2000-401060 2000-12-28
JP2001246139A JP3642305B2 (en) 2000-12-28 2001-08-14 COMMUNICATION SYSTEM, PACKET EXCHANGE METHOD THEREOF, AND RECORDING MEDIUM CONTAINING EXCHANGE PROGRAM

Publications (2)

Publication Number Publication Date
JP2002261792A JP2002261792A (en) 2002-09-13
JP3642305B2 true JP3642305B2 (en) 2005-04-27

Family

ID=26607080

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2001246139A Expired - Fee Related JP3642305B2 (en) 2000-12-28 2001-08-14 COMMUNICATION SYSTEM, PACKET EXCHANGE METHOD THEREOF, AND RECORDING MEDIUM CONTAINING EXCHANGE PROGRAM

Country Status (1)

Country Link
JP (1) JP3642305B2 (en)

Families Citing this family (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP4516439B2 (en) * 2005-02-01 2010-08-04 富士通株式会社 Relay program, relay method, and relay device
WO2007102209A1 (en) * 2006-03-08 2007-09-13 Yamatake Corporation Communication relaying device and communication relaying method
JP4702151B2 (en) * 2006-04-10 2011-06-15 パナソニック株式会社 Network relay device and network communication system
JP2009152953A (en) 2007-12-21 2009-07-09 Nec Corp Gateway apparatus, packet forwarding method
JP5498102B2 (en) * 2009-09-02 2014-05-21 アラクサラネットワークス株式会社 Network system, network relay device, and control method thereof
JP5858147B2 (en) * 2012-03-28 2016-02-10 日本電気株式会社 COMMUNICATION SYSTEM, UPPER LAYER SWITCH, CONTROL DEVICE, SWITCH CONTROL METHOD, AND PROGRAM

Also Published As

Publication number Publication date
JP2002261792A (en) 2002-09-13

Similar Documents

Publication Publication Date Title
US7519048B2 (en) Communication system and packet switching method thereof
JP3811057B2 (en) Relay connection management program and relay connection management method
US7542476B2 (en) Method and system for manipulating IP packets in virtual private networks
JP3448481B2 (en) TCP communication speed-up device for asymmetric line
JP5097620B2 (en) Multipath communication system
US20040156393A1 (en) Architecture and API for of transport and upper layer protocol processing acceleration
JP2005516478A (en) System and method for providing a fault tolerant routing database
JP3822054B2 (en) Communication method and system
US20050120140A1 (en) Method of and system for multi-patch communication
EP2206320A1 (en) Method and apparatus for peer to peer link establishment over a network
CN106576108B (en) Communication method, equipment and system in communication system
JP2001045094A (en) Recipient initiation recovery algorithm(rira) for layer 2 tunneling protocol(l2tp)
JP5913258B2 (en) Relay device and data transfer method
CN109922144A (en) Method and apparatus for handling data
US7564848B2 (en) Method for the establishing of connections in a communication system
JP3642305B2 (en) COMMUNICATION SYSTEM, PACKET EXCHANGE METHOD THEREOF, AND RECORDING MEDIUM CONTAINING EXCHANGE PROGRAM
US7984164B2 (en) Server, and packet transferring method and program therefor
JP5941887B2 (en) Edge router switching method and system, edge router and redundancy management device
JP4555345B2 (en) Communication network system having bus type network structure and data transmission / reception method using the same
JP4229807B2 (en) Data transfer method, TCP proxy device, and network system using the same
US5835728A (en) System for routing computer network
JP4568846B2 (en) Gateway device, transmission method, reception method, and information recording medium
JP2004254039A (en) Mail communication relay system, mail communication relay apparatus, mail communication relay method, and mail communication relay program
JP4505575B2 (en) COMMUNICATION SYSTEM, GATEWAY TRANSMISSION DEVICE, GATEWAY RECEPTION DEVICE, TRANSMISSION METHOD, RECEPTION METHOD, AND INFORMATION RECORDING MEDIUM
US20050180465A1 (en) Automatic resynchronization of physically relocated links in a multi-link frame relay system

Legal Events

Date Code Title Description
A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20040810

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20040823

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20041022

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20050118

R150 Certificate of patent or registration of utility model

Free format text: JAPANESE INTERMEDIATE CODE: R150

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20080204

Year of fee payment: 3

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20090204

Year of fee payment: 4

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20100204

Year of fee payment: 5

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20100204

Year of fee payment: 5

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20110204

Year of fee payment: 6

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20110204

Year of fee payment: 6

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20120204

Year of fee payment: 7

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20120204

Year of fee payment: 7

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20130204

Year of fee payment: 8

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20130204

Year of fee payment: 8

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20140204

Year of fee payment: 9

LAPS Cancellation because of no payment of annual fees