JP4201550B2 - 負荷分散装置 - Google Patents

負荷分散装置 Download PDF

Info

Publication number
JP4201550B2
JP4201550B2 JP2002254233A JP2002254233A JP4201550B2 JP 4201550 B2 JP4201550 B2 JP 4201550B2 JP 2002254233 A JP2002254233 A JP 2002254233A JP 2002254233 A JP2002254233 A JP 2002254233A JP 4201550 B2 JP4201550 B2 JP 4201550B2
Authority
JP
Japan
Prior art keywords
packet
client
data
server
request
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
JP2002254233A
Other languages
English (en)
Other versions
JP2004094555A (ja
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.)
Fujitsu Ltd
Original Assignee
Fujitsu Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Fujitsu Ltd filed Critical Fujitsu Ltd
Priority to JP2002254233A priority Critical patent/JP4201550B2/ja
Priority to US10/640,144 priority patent/US20040054796A1/en
Publication of JP2004094555A publication Critical patent/JP2004094555A/ja
Application granted granted Critical
Publication of JP4201550B2 publication Critical patent/JP4201550B2/ja
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/10Protocols in which an application is distributed across nodes in the network
    • H04L67/1001Protocols in which an application is distributed across nodes in the network for accessing one among a plurality of replicated servers
    • H04L67/1004Server selection for load balancing
    • H04L67/1014Server selection for load balancing based on the content of a request
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/10Protocols in which an application is distributed across nodes in the network
    • H04L67/1001Protocols in which an application is distributed across nodes in the network for accessing one among a plurality of replicated servers

Description

【0001】
【発明の属する技術分野】
本発明は、複数のサーバを仮想的に一台のサーバのように見せて動作させる負荷分散装置に関する。
【0002】
【従来の技術】
任意の端末間におけるデータの送受信では、データ到着の保証を図るため、再送管理が行われている。再送管理を行う送信元端末は、送信バッファを有し、送信先端末へ送信したデータを、送信バッファに記憶しておく。そして、データの異常や消失が検出された場合に、送信元端末は送信先端末へ、送信バッファに記憶しておいたデータを再送する。送信先端末は、送信元端末から送信されたデータを正しく受信した場合に、確認応答データを送信元端末に送信する。送信元端末は、送信先端末から確認応答データを受信した場合に、送信バッファに記憶しておいたデータを消去し、送信バッファを解放する。このような再送管理を行うプロトコルの例として、TCP(Transport Control Protocol)がある。
【0003】
このような再送管理は、負荷分散装置でも行われる。負荷分散装置とは、複数のサーバに対して、クライアントからのリクエストを振り分ける装置である。負荷分散装置を用いることにより、クライアントからのリクエストが一定のサーバに集中することが回避される。
【0004】
このような負荷分散装置にとって、送信バッファを構成するメモリ領域は、有限のリソースである。一つのセッションにおける送信バッファの使用時間(保留時間)を減少させることにより、リソースの有効利用を図ることが可能となる。リソースの有効利用の結果として、例えばセッションの多重度の向上や、消費電力の減少などを図ることが可能となる。
【0005】
従来、TCPに対応する負荷分散装置において、再送管理を省略することにより送信バッファから早期にデータを消去し送信バッファの使用時間を減少させる技術がある。この技術では、負荷分散装置は、再送管理を省略する場合には、本来行う必要がある再送管理を、サーバ又はクライアントに任せる。この場合、負荷分散装置は、サーバからレスポンスを受信した際に、サーバに対しAck(確認応答)の送信を行わない。負荷分散装置は、サーバから受信したレスポンスをクライアントへ転送し、送信バッファに記憶しているレスポンスを消去する。
【0006】
図1は、従来技術における負荷分散装置P3が、再送管理を省略した場合の、クライアントP2,負荷分散装置P3,及びサーバP4の動作シーケンスを示す図である。図1を用いて、負荷分散装置P3が再送管理を省略する場合の、クライアントP2,負荷分散装置P3,及びサーバP4の動作について説明する。
【0007】
データが、サーバP4からクライアントP2に、正常に転送された場合(図1(a)参照)について説明する。まず、サーバP4は、負荷分散装置P3にレスポンスを送信する。負荷分散装置P3は、クライアントP2にレスポンスを転送する。クライアントP2は、レスポンスを受信し、負荷分散装置P3にAckを送信する。負荷分散装置P3は、サーバP4にAckを転送する。そして、サーバP4はAckを含むパケット(Ackパケット)を、負荷分散装置P3から受信する。このような動作によって、サーバP4は、データがクライアントP2に正常に受信されたことを確認する。
【0008】
次に、データがサーバP4−負荷分散装置P3間で消失した場合(図1(b)参照)について説明する。まず、サーバP4は、負荷分散装置P3にレスポンスを送信する。このとき、データが消失したと仮定する。この場合、負荷分散装置P3は何も受信せず、何の処理も行わない。そして、サーバP4は、タイムアウト秒が経過するまで待機しても、負荷分散装置P3からAckを受信できないため、レスポンスを再送する。
【0009】
次に、パケットが、負荷分散装置P3−クライアントP2間で消失した場合(図1(c)参照)について説明する。まず、サーバP4は、負荷分散装置P3にレスポンスを送信する。負荷分散装置P3は、受信したレスポンスをクライアントP2に転送する。このとき、データが消失したと仮定する。この場合、クライアントP2は何も受信せず、何の処理も行わない。そして、サーバP4はタイムアウト秒が経過するまで待機しても、負荷分散装置P3からAckを受信できないため、負荷分散装置P3へレスポンスを再送する。
【0010】
【発明が解決しようとする課題】
上記技術では、負荷分散装置は、サーバから受信するレスポンスについての再送管理を省略している。ここで、負荷分散装置は、クライアントから受信するリクエストについても、再送管理を省略することにより、送信バッファの使用時間をさらに減少させることができる。
【0011】
しかし、クライアントがデータ送信においてスロースタートメカニズムを用いている場合、負荷分散装置は、クライアントから受信するリクエストについての再送管理を省略することができない。
【0012】
図2は、スロースタートメカニズムを示す図である。図2を用いて、スロースタートメカニズムについて説明する。スロースタートメカニズムを用いた送信端末(クライアント)が受信端末(負荷分散装置)にデータを送信する場合、送信端末は、同時に送信するデータ数(同時送信データ数)を、1から指数関数的に増加させる(図2(a)参照)。このとき、送信端末は、受信端末から前のデータのAckを受信するまで、次のデータの送信を待機する。
【0013】
クライアントP2が、スロースタートメカニズムを用いて、負荷分散装置P3に対し、データを送信すると仮定する。このとき、リクエストが単独のデータで構成されている場合、負荷分散装置P3は受信したデータについて、URLを抽出し、振り分け先を決定し、決定したサーバP4に対して転送処理を行うことが可能である。従って、最終的に、クライアントP2はサーバP4から、負荷分散装置P3を経由してレスポンスを受信できる。
【0014】
一方、リクエストが複数のデータに分割されて構成されている場合、クライアントP2は、リクエストを構成する1以上のデータを負荷分散装置P3に送信する毎に、そのデータに対するAckの受信を待機する状態となる(図2(b)参照)。図2(b)では、一つのリクエストが、データDcとデータDdとに分割されている。そして、クライアントP2は、データDcに対するAckを、負荷分散装置P3から受信するまで、データDdを送信しない。
【0015】
ここで、負荷分散装置P3がクライアントP2から受信するリクエストについての再送管理を省略している場合、クライアントP2は、送信したデータDcに対するAckを負荷分散装置P3から受信できない。このため、クライアントP2は、負荷分散装置P3へ、データDcの再送を繰り返す。再送が繰り返されても、負荷分散装置P3は、クライアントP2にAckを送信しない。この結果、負荷分散装置P3は、データDdを受信できず、リクエストを完全に受信することができない。このため、負荷分散装置P3は、リクエストについて、URLの抽出や、振り分け先の決定などを実行できない。従って、負荷分散装置P3は、クライアントP2から受信したリクエストを、サーバP4に転送できず、全体としてデータの送受信が滞ってしまう。
【0016】
負荷分散装置P3は、上記したようなリクエストを受信できなくなることを避けるため、クライアントP2から受信するリクエストについては、そのリクエストの内容に関わらず、クライアントP2にAckを送信する。この場合、負荷分散装置P3は、クライアントP2から受信したリクエストについて再送管理を行う必要がある。即ち、負荷分散装置P3は、サーバP4から、リクエストに対するAckを受信するまで、クライアントP2から受信したリクエストを送信バッファに記憶しておく必要がある。
【0017】
図3は、従来技術の負荷分散装置を用いた負荷分散システムの動作シーケンスを示す図である。図3を用いて、負荷分散装置P3がクライアントP2から受信したリクエストに対してAckを送信するにも関わらずこのリクエストを送信バッファに記憶しない場合に発生する問題について説明する。負荷分散装置P3からサーバP4に転送されたリクエストが、正常にサーバP4で受信された場合(図3(a)参照)には、問題は生じない。
【0018】
一方、負荷分散装置P3からサーバP4に転送されたリクエストがサーバP4に受信される前に消失した場合(図3(b)参照)には、次のような問題が発生する。即ち、負荷分散装置P3は、送信バッファにリクエストを記憶していないため、サーバP4にリクエストを再送できない。一方、クライアントP2は、負荷分散装置P3からAckを受信した時点で、リクエストを送信バッファから消去する。このため、クライアントP2は、負荷分散装置P3にリクエストを再送できない。
【0019】
従って、負荷分散装置P3は、リクエストの消失に備え、サーバP4からAckを受信するまで、リクエストを送信バッファから消去せずに記憶しておかなければならない。このように、従来技術における負荷分散装置P3は、クライアントP2から受信するリクエストに対する再送管理を省略できない。このため、従来技術における負荷分散装置P3は、送信バッファの使用時間を減少できない。
【0020】
本発明は、このような問題を解決し、クライアントから受信するリクエストに対する再送管理を省略することにより、送信バッファの使用時間を減少することが可能な負荷分散装置を提供することを目的とする。
【0021】
【課題を解決するための手段】
上記問題を解決するため、本発明は以下のような構成をとる。本発明の第一の態様は、負荷分散装置であって、クライアントから受信したデータの内容に応じて、クライアントへ当該データの確認応答を送信するか否かを判断する判断手段と、前記判断手段の判断結果に応じて、クライアントへ確認応答を送信する確認応答手段と、前記クライアントから受信したデータを複数のサーバのいずれかへ転送する転送手段と、前記サーバへ転送されたデータのうち、このデータについてクライアントへ確認応答が送信されたデータのみを、前記サーバへの再送に備えて記憶する再送データ記憶手段と、を備える。
【0022】
本発明の第一の態様によれば、判断手段は、クライアントから受信したデータの内容を解析し、このデータの内容に応じてクライアントへ確認応答を送信するか否かを判断する。この確認応答は、クライアントから受信したデータに対する確認応答である。判断手段が上記判断を実行すると、確認応答手段は、この判断結果に基づいて、クライアントへ確認応答を送信する。転送手段はクライアントから受信したデータを複数のサーバのいずれかへ転送する。再送データ記憶手段は、サーバへ転送されたデータを、このサーバへのデータ再送に備えて記憶する。
【0023】
このため、再送データ記憶手段は、確認応答がクライアントに送信されないデータを記憶しない。従って、再送データ記憶手段は、サーバに転送されるデータ全てを記憶するわけではなく、使用される記憶領域が削減される。
【0024】
また、本発明の第一の態様における前記判断手段は、クライアントから受信したデータがデリミタを含まない場合にクライアントへ確認応答を送信すると判断し、前記データがデリミタを含む場合にクライアントへ確認応答を送信しないと判断するように構成されても良い。
【0025】
このように構成された本発明の第一の態様によれば、判断手段は、クライアントから受信したデータがデリミタを含むか否かに応じて、クライアントへこのデータの確認応答を送信するか否かを判断する。そして、確認応答手段は、デリミタを含まないデータが受信された場合、このデータに対する確認応答をクライアントへ送信する。
【0026】
このため、クライアントがスロースタートメカニズムを採用している場合であっても、負荷分散装置はクライアントからデリミタを含まないデータの次のデータを受信することが可能となる。
【0027】
また、本発明の第一の態様は、連続する複数のデータをサーバへ転送する場合に、最後にサーバに転送されたデータに対する確認応答をサーバから受信したときに、次のデータをサーバへ転送することを許可する確認応答判断手段をさらに備えるように構成されても良い。
【0028】
また、本発明の第一の態様は、サーバから受信されたデータを、クライアントへ転送すべきか否かを判断する転送判断手段をさらに備えるように構成されても良い。
【0029】
また、本発明の第一の態様における前記転送判断手段は、前記サーバから受信されたデータが、確認応答のためのデータのみからなる場合に転送すべきでないと判断するように構成されても良い。
【0030】
【発明の実施の形態】
次に、図を用いて本発明の実施形態における負荷分散装置を用いた負荷分散システムについて説明する。なお、本実施形態の説明は例示であり、本発明は以下の説明する構成に限定されない。
【0031】
〔第一実施形態〕
〈システム構成〉
図4は、負荷分散システム1の概略を示す図である。第一実施形態における負荷分散装置3を用いた負荷分散システム1は、複数のクライアント2,負荷分散装置3,複数のサーバ4,及び複数のクライアント2と負荷分散装置3とを通信可能に接続するネットワーク5を用いて構成される。本実施形態における負荷分散装置3は、例として、TCP/IP(Transport Control Protocol / Internet Protocol)を用いてHTTPを取り扱う。これに従い、クライアント2とサーバ4とは、少なくとも、TCP/IPを用いてHTTPを取り扱う。負荷分散装置3は、確認応答を行うプロトコルを扱う装置であれば良く、TCP/IPを取り扱う装置に限定されない。以下、負荷分散システム1の各構成について説明する。
【0032】
〈〈クライアント〉〉
クライアント2は、パーソナルコンピュータやワークステーション等の情報処理装置を用いて構成される。クライアント2は、ネットワークカード等の通信装置を用いて、ネットワーク5を介して負荷分散装置3と通信可能に構成される。クライアント2は、ブラウザソフトがインストールされており、負荷分散装置3に対し、HTTPリクエストを含むパケットを送信する。そして、クライアント2は、負荷分散装置3から、このHTTPリクエストに対するHTTPレスポンスを含むパケットを受信する。クライアント2は、受信したHTTPレスポンスの内容を、ブラウザソフトを用いて表示する。また、クライアント2は、スロースタートメカニズムを用いてパケットを送信する。
【0033】
〈〈負荷分散装置〉〉
負荷分散装置3は、パーソナルコンピュータやワークステーション等の情報処理装置や、負荷分散処理を行うことを前提とした専用ハードウェア等によって構成される。図5は、負荷分散装置3のブロック図である。図5を用いて負荷分散装置3について説明する。負荷分散装置3は、ハードウェア的には、バスを介して接続されたCPU,主記憶(RAM),補助記憶装置(ハードディスク),通信制御装置(ネットワークカード等)等を備えている。あるいは、専用のパケット処理プロセッサ,パケット処理のための記憶装置(RAM),通信制御装置(ネットワークカード等)等から構成される場合もある。負荷分散装置3は、補助記憶装置に記憶された各種のプログラム(OS,アプリケーション等)が主記憶にロードされCPUにより実行されることによって、あるいはパケット処理プロセッサがあらかじめ組み込まれた処理に従って動作することによって、ネットワークインタフェース6,7,パケットバッファ8,9,Ack番号抽出部10,18,再送管理タイマ11,19,シーケンス番号・データ長抽出部12,13,Ack応答生成部14,15,HTTPデリミタ検出部16,及び振り分け先決定部17等を含む装置として機能する。
【0034】
ネットワークインタフェース6,7は、ネットワークカード等を用いて構成される。ネットワークインタフェース6は、クライアント2から送信されたパケットを、ネットワーク5を介して受信し、パケットバッファ8に書き込む。また、ネットワークインタフェース6は、パケットバッファ9から受信するパケットを、ネットワーク5を介してクライアント2に送信する。ネットワークインタフェース7は、サーバ4から送信されたパケットを受信し、パケットバッファ9に書き込む。また、ネットワークインタフェース7は、パケットバッファ8から受信するパケットを、サーバ4に送信する。
【0035】
パケットバッファ8,9は、CPUやRAM等、あるいは専用パケット処理プロセッサ等を用いて構成される。パケットバッファ8は、再送管理タイマ11から再送信号を受信すると、この再送信号に含まれる識別子に対応するパケットを、ネットワークインタフェース7へ送信する。パケットバッファ8は、クライアント2から送信されたパケット、あるいは負荷分散装置3によって生成されたパケットをバッファリングする。そして、パケットバッファ8は、バッファリングしているパケットをネットワークインタフェース7へ送信する。また、パケットバッファ8は、Ack応答生成部15によってパケットをバッファリングされると、このパケットをネットワークインタフェース7へ送信する。また、パケットバッファ8は、振り分け先決定部17から消去信号を受信すると、この消去信号に含まれる識別子に対応するパケットが転送されたことを確認し、このパケットを消去する。
【0036】
パケットバッファ9は、再送管理タイマ19から再送信号を受信すると、この再送信号に含まれる識別子に対応するパケットを、ネットワークインタフェース6へ送信する。パケットバッファ9は、サーバ4から送信されたパケット、あるいは負荷分散装置3によって生成されたパケットをバッファリングする。そして、パケットバッファ9は、バッファリングしているパケットをネットワークインタフェース6へ送信する。また、パケットバッファ9は、Ack応答生成部14によってパケットをバッファリングされると、このパケットをネットワークインタフェース6へ送信する。
【0037】
Ack番号抽出部10,18は、CPUやRAM等、あるいは専用パケット処理プロセッサ等を用いて構成される。Ack番号抽出部10は、パケットバッファ8にバッファリングされたパケットのAck番号を抽出する。また、Ack番号抽出部10は、シーケンス番号・データ長抽出部13から、シーケンス番号及びデータ長を受信する。即ち、Ack番号抽出部10は、パケットバッファ9にバッファリングされたパケットのシーケンス番号及びデータ長を受信する。そして、Ack番号抽出部10は、Ack番号の値と、シーケンス番号及びデータ長の和とを比較する。Ack番号抽出部10は、Ack番号の方が大きい値又は同じ値である場合、パケットバッファ9に、このシーケンス番号及びデータ長の値を含むパケットの識別子を含む消去信号を送信する。消去信号は、消去すべきパケットの識別子を含む。
【0038】
Ack番号抽出部18は、パケットバッファ9にバッファリングされたパケットのAck番号を抽出する。また、Ack番号抽出部18は、シーケンス番号・データ長抽出部12から、シーケンス番号及びデータ長を受信する。即ち、Ack番号抽出部18は、パケットバッファ8にバッファリングされたパケットのシーケンス番号及びデータ長を受信する。そして、Ack番号抽出部18は、Ack番号の値と、シーケンス番号とデータ長とを加算した値とを比較する。Ack番号抽出部18は、Ack番号の方が大きい値又は同じ値である場合、パケットバッファ8に消去信号を送信する。消去信号は、消去すべきパケットの識別子を含む。
【0039】
再送管理タイマ11,19は、クロックやCPU等、あるいは専用パケット処理プロセッサ等を用いて構成される。再送管理タイマ11は、パケットバッファ8にバッファリングされたパケットが、ネットワークインタフェース7によって送信されてからの経過時間を計時する。再送管理タイマ11は、送信されてから一定時間以上経過した(タイムアウトの)パケットがある場合、このパケットの識別子を含む再送信号を、パケットバッファ8へ送信する。
【0040】
再送管理タイマ19は、パケットバッファ9にバッファリングされたパケットが、ネットワークインタフェース6によって送信されてからの経過時間を計時する。再送管理タイマ19は、送信されてから一定時間以上経過したパケットがある場合、このパケットの識別子を含む再送信号を、パケットバッファ9へ送信する。
【0041】
シーケンス番号・データ長抽出部12,13は、CPUやRAM等、あるいは専用パケット処理プロセッサ等を用いて構成される。シーケンス番号・データ長抽出部12は、パケットバッファ8にバッファリングされているパケットのシーケンス番号及びデータ長を抽出する。そして、シーケンス番号・データ長抽出部12は、シーケンス番号及びデータ長を、Ack応答生成部14及びAck番号抽出部18に送信する。
【0042】
シーケンス番号・データ長抽出部13は、パケットバッファ9にバッファリングされているパケットのシーケンス番号及びデータ長を抽出する。そして、シーケンス番号・データ長抽出部13は、シーケンス番号及びデータ長を、Ack応答生成部15及びAck番号抽出部10に送信する。
【0043】
Ack応答生成部14,15は、CPUやRAM等、あるいは専用パケット処理プロセッサ等を用いて構成される。Ack応答生成部14は、シーケンス番号・データ長抽出部12から受信した二つの値の和をAck番号として持つパケットを生成する。そして、Ack応答生成部14は、生成したパケットをパケットバッファ9にバッファリングする。
【0044】
Ack応答生成部15は、シーケンス番号・データ長抽出部13から受信した二つの値の和をAck番号として持つパケットを生成する。そして、Ack応答生成部15は、生成したパケットをパケットバッファ8にバッファリングする。
【0045】
HTTPデリミタ検出部16は、CPUやRAM等、あるいは専用パケット処理プロセッサ等を用いて構成される。HTTPデリミタ検出部16は、パケットバッファ8にバッファリングされるHTTPリクエストを含むパケット(リクエストパケット)のペイロードに、HTTPのデリミタ(Delimiter:例えば空行)が存在するか否かを判断する。HTTPデリミタ検出部16は、デリミタが存在する場合、振り分け先決定部17へ、転送信号を送信する。この転送信号は、HTTPデリミタ検出部16がデリミタを検出したリクエストパケットの識別子を含む。
【0046】
また、HTTPデリミタ検出部16は、リクエストパケットにデリミタが存在しない場合、シーケンス番号・データ長抽出部12へ指示を出し、クライアント2に対し、Ackを含むパケット(Ackパケット)を送信する処理を実行させる。
【0047】
振り分け先決定部17は、CPUやRAM等、あるいは専用パケット処理プロセッサ等を用いて構成される。振り分け先決定部17は、HTTPデリミタ検出部16から転送信号を受信すると、転送信号に含まれる識別子に対応するリクエストパケットに含まれるURLを抽出し、このURLが示すコンテンツを保有する最適なサーバ4を選択する。その上でそのリクエストパケットを、選択したサーバ4へ転送する。即ち、振り分け先決定部17は、転送対象となるリクエストパケットの送信先アドレスや送信元アドレス等の情報を書き換えることにより、このリクエストパケットをサーバ4へ転送する。また、振り分け先決定部17は、転送対象となるリクエストパケットのうち、デリミタを有するリクエストパケットの識別子を含む消去信号をパケットバッファ8へ送信する。
【0048】
なお、Ack番号抽出部10,18,シーケンス番号・データ長抽出部12,13,HTTPデリミタ検出部16,振り分け先決定部17,及びAck応答生成部14,15は、各々独立に動作するのではなく、パケットの到着に伴い順に動作する。また、パケット受信、送信に伴う上記記載以外に必要となる処理については、従来行われている処理であるため、説明を省略する。
【0049】
〈〈サーバ〉〉
図4に戻って、サーバ4は、パーソナルコンピュータやワークステーション等の情報処理装置を用いて構成される。サーバ4は、ネットワークカード等の通信装置を用いて、負荷分散装置3と通信可能に構成される。サーバ4では、HTTPD(HTTP Daemon)が実行される。サーバ4は、負荷分散装置3から受信するリクエストパケットに対し、HTTPレスポンスを含むパケット(レスポンスパケット)を返信する。
【0050】
〈動作例〉
図6〜8は、負荷分散装置3の動作例を示すフローチャートである。図5,図6〜8を用いて、負荷分散装置3の動作例について説明する。ここでは、負荷分散装置3は、クライアント2からリクエストパケットを受信し、サーバ4からレスポンスパケットを受信するものとして説明する。
【0051】
負荷分散装置3のネットワークインタフェース6は、クライアント2からリクエストパケットを受信する(図6参照:S01)。パケットバッファ8は、受信したリクエストパケットをバッファリングする(S02)。Ack番号抽出部10は、このリクエストパケットからAck番号を抽出する(S03)。また、シーケンス番号・データ長抽出部13は、パケットバッファ9にバッファリングされたパケットのシーケンス番号及びデータ長を抽出し、Ack番号抽出部10へ送信する(S04)。Ack番号抽出部10は、抽出したAck番号と、シーケンス番号及びデータ長の和とを比較する(S05)。Ack番号よりもシーケンス番号及びデータ長の和が小さな値となるパケットがパケットバッファ9にバッファリングされている場合(S05−YES)、パケットバッファ9は、そのパケットを消去する(S06)。
【0052】
次に、HTTPデリミタ検出部16は、パケットバッファ8にバッファリングされたリクエストパケットがデリミタを含むか否かを判断する(S07)。HTTPデリミタ検出部16がデリミタを検出しない場合(S07−NO)、シーケンス番号・データ長抽出部12は、Ack応答生成部14へ、抽出したシーケンス番号及びデータ長を送信する。Ack番号応答生成部14は、受信したシーケンス番号及びデータ長を加算する。そして、Ack番号応答生成部14は、この値をAck番号として持つパケットを生成し、パケットバッファ9にこのパケットをバッファリングする(S08)。パケットバッファ9は、バッファリングされたパケットを、ネットワークインタフェース6を介して、クライアント2へ送信する(S09)。この後、負荷分散装置3は、新たなリクエストパケットをクライアント2から受信すると、改めてS01〜S07の処理を実行する。
【0053】
一方、HTTPデリミタ検出部16は、デリミタを検出した場合(S07−Yes)、振り分け先決定部17へ転送信号を送信する。振り分け先決定部17は、パケットバッファ8からリクエストパケットのペイロード部を読み込み、そこに示されているURLをコンテンツとして持つ適当なサーバ4を決定する(S10)。振り分け先決定部17は、決定されたサーバ4に対するTCPコネクションがオープンされると、サーバ4に対し、リクエストパケット全てを転送する(S11)。このとき、振り分け先決定部17は、転送対象となるリクエストパケットのうち、デリミタを有するリクエストパケットの識別子を含む消去信号をパケットバッファ8へ送信する。そして、パケットバッファ8はこのリクエストパケットを消去する。
【0054】
再送管理タイマ11は、タイムアウトのリクエストパケットがある場合(図7参照:S12−Yes)、このリクエストパケットの識別子を含む再送信号を、パケットバッファ8へ送信する。そして、パケットバッファ8は、この再送信号に含まれる識別子が示すリクエストパケットを、サーバ4へ再送する(S13)。
【0055】
一方、タイムアウトのリクエストパケットが無い場合(S12−No)、ネットワークインタフェース7がサーバ4からパケットを受信したか否かを判断する(S14)。ネットワークインタフェース7がパケットを受信していない場合(S14−No)、再びタイムアウトの判断に戻る。一方、ネットワークインタフェース7がサーバ4からパケットを受信した場合(S14−Yes)、パケットバッファ9は、このパケットをバッファリングする(S15)。
【0056】
パケットバッファ9がパケットをバッファリングした後、Ack番号抽出部18は、バッファリングされたパケットのAck番号を抽出する(図8参照:S16)。また、シーケンス番号・データ長抽出部12は、パケットバッファ8にバッファリングされたパケットのシーケンス番号及びデータ長を抽出し、Ack番号抽出部18へ送信する(S17)。Ack番号抽出部18は、シーケンス番号及びデータ長の和が、抽出されたAck番号と同じ又は小さい値であるパケットの存在を判断する(S18)。このようなパケットがパケットバッファ8にバッファリングされている場合(S18−Yes)、パケットバッファ8は、そのパケットを消去する(S19)。
【0057】
パケットバッファ9は、バッファリングしたパケット(サーバ4から受信されたパケット)を、クライアント2に転送する(S20)。そして、パケットバッファ9は、転送したパケットを消去する(S21)。
【0058】
〈動作シーケンス〉
次に、第一実施形態における負荷分散システム1の動作シーケンスについて説明する。図9(a),(b)は、HTTPリクエストが一つのリクエストパケットで構成される場合の、負荷分散システム1の動作シーケンスを示す図である。第一に、図9(a)を用いて、HTTPリクエストが一つのリクエストパケットで構成され、リクエストパケットが消失しない場合の動作シーケンスについて説明する。
【0059】
まず、クライアント2と負荷分散装置3とは、TCPのコネクションをオープンする(オープンフェーズ:図9(a)参照)。クライアント2は、コネクションをオープンした後、データ転送フェーズの処理として、負荷分散装置3にリクエストパケット(HTTPリクエストを含むパケット)を送信する。
【0060】
負荷分散装置3は、クライアント2からリクエストパケットを受信する。負荷分散装置3は、受信したリクエストパケットがデリミタを含むか否かを判断する。この場合、リクエストパケットは一つのパケットで構成されるため、リクエストパケットはデリミタを含む。このため、負荷分散装置3は、リクエストパケットに示されているURLをコンテンツとして持つ適当なサーバ4を決定する。そして、負荷分散装置3は、決定されたサーバ4に対するTCPコネクションをオープンし、サーバ4に対し、リクエストパケットを転送する。このとき、負荷分散装置3は、このリクエストパケットを、パケットバッファ8から消去する。
【0061】
サーバ4は、負荷分散装置3からリクエストパケットを受信する。サーバ4は、受信したリクエストパケットに対するレスポンスパケット(HTTPレスポンスを含むパケット)を生成する。そして、サーバ4は、負荷分散装置3に対し、レスポンスパケットを送信する。
【0062】
負荷分散装置3は、レスポンスパケットを受信する。負荷分散装置3は、受信したレスポンスパケットを、クライアント2に転送する。このとき、負荷分散装置3は、このレスポンスパケットをパケットバッファ9から消去する。そして、クライアント2は、クローズフェーズの処理を実行する。
【0063】
第二に、図9(b)を用いて、HTTPリクエストが一つのリクエストパケットで構成され、リクエストパケットが消失する場合の動作シーケンスについて説明する。ただし、負荷分散システム1の動作シーケンスにおけるオープンフェーズとクローズフェーズとは、どのような場合であっても同じであるため、以後、オープンフェーズとクローズフェーズとについての説明を省略する。
【0064】
まず、クライアント2はリクエストパケットを負荷分散装置3へ送信する。負荷分散装置3は、リクエストパケットのペイロードを解析し、振り分け先サーバ4を決定し、サーバ4に対してTCPコネクションをオープンする。負荷分散装置3はリクエストパケットを、決定されたサーバ4に転送する。このとき、転送されたリクエストパケットが消失したとする。この場合、サーバ4は、負荷分散装置3から、転送されたリクエストパケットを受信しない。従って、サーバ4は、リクエストパケットに対するAckパケットを、負荷分散装置3へ送信しない。このため、この場合、クライアント2は、リクエストパケットに対するAckパケットを、負荷分散装置3から受信できない。クライアント2は、タイムアウトとなると(タイムアウト秒待つと)、リクエストパケットを、負荷分散装置3へ再送する。そして、負荷分散装置3は、再送されたリクエストパケットを受信し、サーバ4へ転送する。クライアント2は、送信したリクエストパケットに対するAckを受信するまでこの動作を繰り返す。そして、最終的に、クライアント2は、負荷分散装置3から、レスポンスパケットを受信する。
【0065】
図10,11(a),11(b)は、HTTPリクエストが複数のリクエストパケットで構成される場合の、負荷分散システム1の動作シーケンスを示す図である。第三に、図10を用いて、HTTPリクエストが複数のリクエストパケットで構成され、リクエストパケットが消失しない場合の動作シーケンスについて説明する。
【0066】
ここではデリミタを含まないリクエストパケットをリクエストパケットa(HTTPリクエストaを含むリクエストパケット)、デリミタを含むリクエストパケットをリクエストパケットb(HTTPリクエストbを含むリクエストパケット)とする。即ち、一つのHTTPリクエストが、HTTPリクエストaとHTTPリクエストbとに分かれて構成される。HTTPリクエストが、三つ以上のリクエストパケットで構成されている場合、最後のリクエストパケットをリクエストパケットb、その直前までのリクエストパケットをリクエストパケットaとみなせばよい。
【0067】
クライアント2は、リクエストパケットaを、負荷分散装置3へ送信する。負荷分散装置3はリクエストパケットaのペイロードを解析し、リクエストパケットaにデリミタが含まれていないと判断する。このため、負荷分散装置3は、クライアント2に対しAckを含むパケット(Ackパケット)を送信する。
【0068】
クライアント2は、負荷分散装置3から、Ackパケットを受信する。そして、クライアント2は、負荷分散装備3へ、リクエストパケットbを送信する。負荷分散装置3は、リクエストパケットbのペイロードを解析し、デリミタが含まれていると判断する。このため、負荷分散装置3は、先に受信したリクエストパケットaとリクエストパケットbとを用いて、振り分け先サーバ4を決定する。そして、負荷分散装置3は、決定したサーバ4に対してTCPコネクションをオープンし、リクエストパケットa,bをサーバ4に転送する。
【0069】
サーバ4は、リクエストパケットa,bを、負荷分散装置3から受信する。サーバ4は、受信したリクエストパケットに対するレスポンスパケットを生成する。そして、サーバ4は、生成したレスポンスパケットを、負荷分散装置3へ送信する。
【0070】
負荷分散装置3は、レスポンスパケットに含まれるAck番号を用いて、リクエストパケットaに対する受信確認をする。負荷分散装置3は、レスポンスパケットをクライアント2に転送する。
【0071】
クライアント2は、レスポンスパケットを受信する。そして、クライアント2は、受信したレスポンスパケットにより、受信確認をする。
【0072】
第四に、図11(a)を用いて、HTTPリクエストが複数のリクエストパケットで構成され、リクエストパケットaが消失する場合の動作シーケンスについて説明する。ただし、負荷分散装置3がリクエストパケットa,bをサーバ4に転送するまでの動作シーケンスは、第三の場合と同じであるため、その説明を省略する。
【0073】
負荷分散装置3がリクエストパケットa,bをサーバ4に転送した後に、リクエストパケットaが消失したものとする。この場合、サーバ4は、リクエストパケットbを受信するが、リクエストパケットaを受信しない。このため、サーバ4は、リクエストパケットaに対するAckを含むパケットを送信しない。
【0074】
負荷分散装置3は、サーバ4から、リクエストパケットaに対するAckを含むパケットを受信できないため、タイムアウト秒経過後、リクエストパケットaをサーバ4に再送する。負荷分散装置3は、サーバ4から、リクエストパケットaに対するAckを含むパケットを受信するまでこの処理を繰り返す。最終的に、負荷分散装置3は、サーバ4からレスポンスパケットを受信し、受信したレスポンスパケットをクライアント2へ転送する。このとき、このレスポンスパケットは、リクエストパケットaに対するAckを含む。このため、負荷分散装置3は、サーバ4から、リクエストパケットaに対するAckを含むパケットを受信したこととなる。
【0075】
第五に、図11(b)を用いて、HTTPリクエストが複数のリクエストパケットで構成され、リクエストパケットbが消失する場合の動作シーケンスについて説明する。ただし、負荷分散装置3がリクエストパケットa,bをサーバ4に転送するまでの動作シーケンスは、第三の場合と同じであるため省略する。
【0076】
負荷分散装置3がリクエストパケットa,bをサーバ4に転送した後に、リクエストパケットbが消失したものとする。この場合、サーバ4は、リクエストパケットaのみを受信する。このため、サーバ4はリクエストパケットaのみに対するAckを含むパケットを、負荷分散装置3へ送信する。
【0077】
負荷分散装置3は、リクエストパケットaに対するAckを含むパケットを受信する。その後、負荷分散装置3は、このAckを含むパケットをクライアント2へ転送する。
【0078】
クライアント2は、リクエストパケットaに対するAckを含むパケットを受信する。しかし、クライアント2は、リクエストパケットaに対するAckを含むパケットは既に受信済みであるため、何も実行しない。即ち、クライアント2は、既に負荷分散装置3から、リクエストパケットaに対するAckを含むパケットを受信しているため、何の処理も実行しない。ただし、クライアント2は、リクエストパケットbに対するAckを含むパケットを受信できない。このため、クライアント2は、タイムアウト秒経過後、リクエストパケットbを、負荷分散装置3へ再送する。
【0079】
クライアント2は、負荷分散装置3からレスポンスパケットを受信するまでこの処理を繰り返す。このとき、レスポンスパケットは、リクエストパケットbに対するAckを含む。このため、クライアント2は、負荷分散装置3からAckパケットを受信したこととなる。
【0080】
〈作用〉
本発明の第一実施形態における負荷分散装置3は、HTTPリクエストが一つのリクエストパケットにより構成される場合、リクエストパケットに対するAckをクライアント2に送信しない。従って、負荷分散装置3は、リクエストパケットについて再送管理を実行する必要が無い。このため、このリクエストパケットを、パケットバッファ8から早期に消去することが可能となる。即ち、負荷分散装置3は、パケットバッファ8の記憶領域を、早期に解放することが可能となる。
【0081】
図12(a)は、HTTPリクエストが一つのリクエストパケットにより構成される場合に、パケットバッファ8の記憶領域が解放されるタイミングを示す図である。従来の負荷分散装置は、リクエストパケットに対するAckをサーバから受信した時点(レスポンスパケットを受信した時点)で、リクエストパケットをパケットバッファから消去する。一方、負荷分散装置3は、リクエストパケットをサーバ4に転送した時点で、リクエストパケットをパケットバッファ8から消去する。このタイミングの差分を、図12(a)に太線として示す。このように、本発明による負荷分散装置3によれば、パケットバッファ8の記憶領域を早期に解放することが可能となる。
【0082】
また、HTTPリクエストが複数のリクエストパケットにより構成される場合、負荷分散装置3は、最後のリクエストパケット(デリミタを含むリクエストパケット)に対するAckをクライアント2に送信しない。このため、負荷分散装置3は、最後のリクエストパケットについて再送管理を実行する必要が無い。従って、最後のリクエストパケットをパケットバッファ8から早期に消去することが可能となる。即ち、負荷分散装置3は、パケットバッファ8の記憶領域を早期に解放することが可能となる。
【0083】
図12(b)は、HTTPリクエストが複数のリクエストパケットにより構成される場合に、パケットバッファ8の記憶領域が解放されるタイミングを示す図である。従来の負荷分散装置は、最後のリクエストパケットに対するAckをサーバから受信した時点(レスポンスパケットを受信した時点)で、パケットバッファから最後のリクエストパケットを消去する。しかし、負荷分散装置3は、最後のリクエストパケットをサーバ4に転送した時点で、パケットバッファ8から最後のリクエストパケットを消去する。このタイミングの差分を、図12(b)に太線として示す。
【0084】
このように、第一実施形態の負荷分散装置3は、パケットバッファ8の記憶領域を早期に開放する。このため、負荷分散装置3におけるセッションの多重率の向上、それに伴う負荷分散装置3におけるレイテンシの向上、発熱量、消費電力、実装面積の縮小などが実現される。
【0085】
〈変形例〉
本発明の第一実施形態による負荷分散装置3は、パケットバッファ8,9がそれぞれ別に構成されているが、一つの記憶装置を用いて構成されても良い。
【0086】
〔第二実施形態〕
〈システム構成〉
第二実施形態における負荷分散装置3aを用いた負荷分散システム1aについて説明する。負荷分散システム1aのシステム構成は、基本的に、第一実施形態における負荷分散装置3を用いた負荷分散システム1と同じである。即ち、負荷分散システム1aは、複数のクライアント2,負荷分散装置3a,複数のサーバ4,及び複数のクライアント2と負荷分散装置3aとを通信可能に接続するネットワーク5とを用いて構成される。クライアント2とサーバ4とは、上記した第一実施形態においてすでに説明したため、以下では負荷分散装置3aの構成について説明する。
【0087】
〈〈負荷分散装置〉〉
図13は、本発明による第二実施形態の負荷分散装置3aのブロック図である。
図13を用いて、負荷分散装置3aの構成について説明する。ただし、負荷分散装置3aについて、負荷分散装置3と異なる構成についてのみ説明する。負荷分散装置3aは、パケット送信許可部20をさらに備える。
【0088】
パケット送信許可部20は、CPUやRAM等、あるいは専用パケット処理プロセッサ等を用いて構成される。パケット送信許可部20は、サーバ4に転送されたリクエストパケットのシーケンス番号とデータ長とを記憶する。また、パケット送信許可部20は、サーバ4から受信したパケットのAck番号と、シーケンス番号及びデータ長の和とを比較する。パケット送信許可部20は、二つの値が一致した場合、パケットバッファ8に対し、後続のリクエストパケットをサーバ4に転送することを許可する。
【0089】
〈動作例〉
図14は、第二実施形態における負荷分散装置3aの動作例のうち、負荷分散装置3と異なる部分のみを示したフローチャートである。図14を用いて、負荷分散装置3aの動作例について説明する。ただし、負荷分散装置3の動作と異なる動作についてのみ説明する。
【0090】
振り分け先決定部17は、振り分け先となるサーバ4を決定すると(S10)、決定されたサーバ4に対し、最初のリクエストパケットを一つ転送する(S22)。このとき、パケット送信許可部20は、転送されたリクエストパケットにおけるシーケンス番号及びデータ長を記憶する。
【0091】
パケットバッファ9にAckを含むパケットがバッファリングされると、パケット送信許可部20は、このパケットのAck番号と、自身が記憶するシーケンス番号及びデータ長の和とを比較する。この値が一致した場合、パケット送信許可部20は、転送されたリクエストパケットに対するAckを含むパケットを受信したと判断する(S23)。
【0092】
パケット送信許可部20が、転送されたリクエストパケットに対するAckを含むパケットを受信していないと判断した場合、又はパケットバッファ9にAckを含むパケットがバッファリングされていない場合(S23−No)、再送管理タイマ11は、転送されたリクエストパケットについてタイムアウトか否かを判断する(S24)。タイムアウトである場合(S24−Yes)、パケットバッファ8は、タイムアウトと判断されたリクエストパケットを、サーバ4へ再送する(S22)。一方、タイムアウトでない場合(S24−No)、負荷分散装置3aは、転送されたリクエストパケットに対するAckが受信されるまで待機する。
【0093】
パケット送信許可部20が、転送されたリクエストパケットに対するAckを含むパケットを受信したと判断した場合(S23−Yes)、パケット送信許可部20は、全てのリクエストパケットが転送されたか否かを判断する(S25)。転送されていないリクエストパケットがある場合(S25−No)、パケット送信許可部20は、後続のリクエストパケットが転送されることを許可する。一方、全てのリクエストパケットが転送された場合(S25−Yes)、S12以降の処理が実行される(図6参照)。
【0094】
〈動作シーケンス〉
図15は、第二実施形態における負荷分散装置3aを用いた負荷分散システム1aの動作シーケンスを示す図である。図15を用いて、負荷分散システム1aの動作シーケンスについて説明する。ただし、負荷分散システム1の動作シーケンスと異なる動作シーケンスについてのみ説明する。
【0095】
負荷分散装置3aは、リクエストパケットの転送先となるサーバ4を決定した後、決定したサーバ4に対し、リクエストパケットaを転送する。サーバ4は、負荷分散装置3aからリクエストパケットaを受信する。そして、サーバ4は、受信したリクエストパケットaに対するAckを含むパケットを、負荷分散装置3aに送信する。
【0096】
負荷分散装置3aは、サーバ4から、リクエストパケットaに対するAckを含むパケットを受信すると、このパケットをクライアント2へ転送する。そして、負荷分散装置3aは、後続のリクエストパケット、即ちリクエストパケットbをサーバ4へ転送する。
【0097】
〈作用〉
図16は、従来技術における負荷分散装置P3と本発明の第二実施形態における負荷分散装置3aとの動作の差異を示す図である。図16を用いて、本発明の第二実施形態における負荷分散装置3aの作用について説明する。従来技術における負荷分散装置P3は、複数のリクエストパケットで構成されるHTTPリクエストをサーバP4へ転送する場合、リクエストパケットを連続して転送する。このため、負荷分散装置P3とサーバP4との間で輻輳が発生し、リクエストパケットが消失することがあった。
【0098】
一方、本発明の第二実施形態における負荷分散装置3aは、複数のリクエストパケットで構成されるHTTPリクエストをサーバ4に転送する場合、先に転送されたリクエストパケットに対するAckを含むパケットを受信した後、後続のリクエストパケットを転送する。このため、負荷分散装置3aとサーバ4との間において、輻輳の発生が防止される。従って、輻輳発生によるリクエストパケットの消失が防止される。
【0099】
〈変形例〉
パケット送信許可部20は、送信を許可するリクエストパケットの数を指数関数的に増加させても良い。即ち、パケット送信許可部20は、送信を許可するリクエストパケットの数を、スロースタートメカニズムに従って決定しても良い。
【0100】
〔第三実施形態〕
〈システム構成〉
第三実施形態における負荷分散装置3bを用いた負荷分散システム1bについて説明する。負荷分散システム1bのシステム構成は、基本的に、第一実施形態における負荷分散装置3を用いた負荷分散システム1と同じである。即ち、負荷分散システム1bは、複数のクライアント2,負荷分散装置3b,複数のサーバ4,及び複数のクライアント2と負荷分散装置3bとを通信可能に接続するネットワーク5とを用いて構成される。クライアント2とサーバ4とは、上記した第一実施形態の欄ですでに説明したため、以下では負荷分散装置3bの構成について説明する。
【0101】
〈〈負荷分散装置〉〉
図17は、本発明による第三実施形態の負荷分散装置3bのブロック図である。
図17を用いて、負荷分散装置3bの構成について説明する。ただし、負荷分散装置3bについて、負荷分散装置3と異なる構成についてのみ説明する。負荷分散装置3bは、ペイロード有無確認部21をさらに備える。
【0102】
ペイロード有無確認部21は、CPUやRAM等、あるいは専用パケット処理プロセッサ等を用いて構成される。ペイロード有無確認部21は、パケットバッファ9に記憶されているパケットがペイロードを含むか否かを確認する。このパケットにペイロードが含まれていない場合、ペイロード有無確認部21は、このパケットを消去するように、パケットバッファ9に指示を出す。一方、このパケットにペイロードが含まれている場合、ペイロード有無確認部21は、このパケットをクライアント2へ転送するようにパケットバッファ9に指示を出す。
【0103】
〈動作例〉
図18は、第三実施形態における負荷分散装置3bの動作例のうち、負荷分散装置3と異なる部分のみを示した図である。図18を用いて、負荷分散装置3bの動作例について説明する。ただし、負荷分散装置3の動作と異なる動作についてのみ説明する。
【0104】
サーバ4から新たなパケットが受信されると、Ack番号抽出部18は、パケットバッファ8において、このパケットのAck番号よりもシーケンス番号及びデータ長の和が小さな値となるパケットの有無を確認する(S18)。このようなパケットがパケットバッファ8にバッファリングされている場合(S18−Yes)、パケットバッファ8は、そのパケットを消去する(S19)。
【0105】
次に、ペイロード有無確認部21は、このパケットがペイロードを含むか否かを判断する(S26)。このパケットがペイロードを含まない場合(S26−No)、ペイロード有無確認部21は、パケットバッファ9に、このパケットをクライアント2に転送せずに消去するように指示を出す。一方、このパケットがペイロードを含む場合(S26−Yes)、ペイロード有無確認部21は、このパケットをクライアント2へ転送するようにパケットバッファ9に指示を出す。
【0106】
〈動作シーケンス〉
図19は、第三実施形態における負荷分散装置3bを用いた負荷分散システム1bの動作シーケンスを示す図である。図19を用いて、負荷分散システム1bの動作シーケンスについて説明する。ただし、負荷分散システム1の動作シーケンスと異なる動作シーケンスについてのみ説明する。
【0107】
負荷分散装置3bは、サーバ4に対し、リクエストパケットa,bを転送する。サーバ4は、リクエストパケットaに対するAckを含むパケットや、リクエストパケットbに対するAckを含むパケット(この場合はレスポンスパケット)を、負荷分散装置3bに対し送信する。負荷分散装置3bは、リクエストパケットaに対するAckを含むパケットを受信した場合、このAckパケットをクライアント2に転送せずに消去する。即ち、負荷分散装置3bは、HTTPレスポンスを含まないパケットを受信した場合、このパケットをクライアント2に転送せずに消去する。一方、負荷分散装置3bは、レスポンスパケットを受信した場合、このレスポンスパケットをクライアント2に転送する。
【0108】
〈作用〉
図20は、従来技術における負荷分散装置P3と本発明の第三実施形態における負荷分散装置3bとの動作の差異を示す図である。図20を用いて、本発明の第三実施形態における負荷分散装置3bの作用について説明する。従来技術における負荷分散装置P3は、サーバP4から受信する全てのパケットをクライアントP2へ転送する。よって、従来技術における負荷分散装置P3は、HTTPレスポンスを含まないパケット(この場合、Ackのためのパケット)、即ちクライアントP2に転送される必要のないパケットをクライアントP2に転送する。このため、クライアントP2と負荷分散装置P3とを接続するネットワークの帯域が不必要に消費されていた。
【0109】
一方、本発明の第三実施形態における負荷分散装置3bは、HTTPレスポンスを含まないパケット、即ちペイロードを含まないパケットを、クライアント2に転送せずに消去する。このため、ネットワーク5において、帯域が無駄に消費されない。
【0110】
〈変形例〉
ペイロード有無確認部21は、本発明の第二実施形態における負荷分散装置3aに適用されても良い。本発明の第二実施形態における負荷分散装置3aでは、リクエストパケットaの転送とリクエストパケットbの転送との間に、必ずサーバ4からAckを含むパケット(ペイロードを含まないパケット)を受信する。このとき、ペイロード有無確認部21が適用されることにより、このパケットをクライアント2に送信することがなくなる。このため、ネットワーク5において、帯域を節約することが可能となる。
【0111】
〔その他〕
本発明は、以下のように特定することができる。
(付記1) クライアントから受信したデータの内容に応じて、クライアントへ当該データの確認応答を送信するか否かを判断する判断手段と、
前記判断手段の判断結果に応じて、クライアントへ確認応答を送信する確認応答手段と、
前記クライアントから受信したデータを複数のサーバのいずれかへ転送する転送手段と、
前記サーバへ転送されたデータのうち、このデータについてクライアントへ確認応答が送信されたデータのみを、前記サーバへの再送に備えて記憶する再送デ一夕記憶手段と、
を備える負荷分散装置。
(付記2)前記判断手段は、クライアントから受信したデータがデリミタを含まない場合にクライアントへ確認応答を送信すると判断し、前記データがデリミタを含む場合にクライアントへ確認応答を送信しないと判断する付記1に記載の負荷分散装置。
(付記3)連続する複数のデータをサーバへ転送する場合に、最後にサーバに転送されたデータに対する確認応答をサーバから受信したときに、次のデータをサーバヘ転送することを許可する確認応答判断手段をさらに備える付記1又は2に記載の負荷分散装置。
(付記4)サーバから受信されたデータを、クライアントへ転送すべきか否かを判断する転送判断手段をさらに備える付記1〜3のいずれかに記載の負荷分散装置。
(付記5)前記転送判断手段は、前記サーバから受信されたデータが、確認応答のためのデータのみからなる場合に転送すべきでないと判断する付記4に記載の負荷分散装置。
(付記6)前記判断手段は、前記クライアントから受信したデータが一つのパケットからなるHTTPリクエストである場合に確認応答を送信しないと判断する付記1に記載の負荷分散装置。
(付記7)前記判断手段は、前記クライアントから受信したデニタが複数のパケットからなるHTTPリクエストである場合に、このHTTPリクエストを構成する最後のパケットを受信した際に確認応答を送信しないと判断する付記1又は2に記載の負荷分散装置。
【0112】
【発明の効果】
本発明によれば、クライアントからサーバへ転送するデータを、早期に送信バッファから消去することにより、送信バッファの使用時間を減少させることが可能となる。
【図面の簡単な説明】
【図1】 従来技術における再送管理省略の動作シーケンスを示す図である。
【図2】 スロースタートメカニズムを示す図である。
【図3】 従来技術の負荷分散装置を用いた負荷分散システムの動作シーケンスを示す図である。
【図4】 負荷分散システムの概略を示す図である。
【図5】 第一実施形態の負荷分散装置のブロック図である。
【図6】 第一実施形態の負荷分散装置の動作例を示すフローチャートである。
【図7】 第一実施形態の負荷分散装置の動作例を示すフローチャートである。
【図8】 第一実施形態の負荷分散装置の動作例を示すフローチャートである。
【図9】 第一実施形態の負荷分散装置を用いた負荷分散システムの動作シーケンスを示す図である。
【図10】 第一実施形態の負荷分散装置を用いた負荷分散システムの動作シーケンスを示す図である。
【図11】 第一実施形態の負荷分散装置を用いた負荷分散システムの動作シーケンスを示す図である。
【図12】 負荷分散装置の記憶領域が解放されるタイミングを示す図である。
【図13】 第二実施形態の負荷分散装置のブロック図である。
【図14】 第二実施形態の負荷分散装置の動作例を示すフローチャートである。
【図15】 第二実施形態の負荷分散装置を用いた負荷分散システムの動作シーケンスを示す図である。
【図16】 従来技術における負荷分散装置と本発明の第二実施形態における負荷分散装置との動作の差異を示す図である。
【図17】 第三実施形態の負荷分散装置のブロック図である。
【図18】 第三実施形態の負荷分散装置の動作例を示すフローチャートである。
【図19】 第三実施形態の負荷分散装置を用いた負荷分散システムの動作シーケンスを示す図である。
【図20】 従来技術における負荷分散装置と本発明の第三実施形態における負荷分散装置との動作の差異を示す図である。
【符号の説明】
1 負荷分散システム
2 クライアント
3,3a,3b 負荷分散装置
4 サーバ
5 ネットワーク
6,7 ネットワークインタフェース
8,9 パケットバッファ
10,18 Ack番号抽出部
11,19 再送管理タイマ
12,13 シーケンス番号・データ長抽出部
14,15 Ack応答生成部
16 HTTPデリミタ検出部
17 振り分け先決定部
20 パケット送信許可部
21 ペイロード有無確認部

Claims (8)

  1. クライアントから受信したデータの内容に応じて、クライアントへ当該データの確認応答を送信するか否かを判断する判断手段と、
    前記判断手段の判断結果に応じて、クライアントへ確認応答を送信する確認応答手段と、
    前記クライアントから受信したデータを複数のサーバのいずれかへ転送する転送手段と、
    前記サーバへ転送されたデータのうち、前記転送されたデータについてクライアントへ確認応答が送信されたデータのみを、前記サーバへの再送に備えて記憶する再送データ記憶手段と、
    を備える負荷分散装置。
  2. 前記判断手段は、クライアントから受信したデータがデリミタを含まない場合にクライアントへ確認応答を送信すると判断し、前記データがデリミタを含む場合にクライアントへ確認応答を送信しないと判断する請求項1に記載の負荷分散装置。
  3. 連続する複数のデータをサーバへ転送する場合に、最後にサーバに転送されたデータに対する確認応答をサーバから受信したときに、次のデータをサーバへ転送することを許可する確認応答判断手段をさらに備える請求項1又は2に記載の負荷分散装置。
  4. サーバから受信されたデータを、クライアントへ転送すべきか否かを判断する転送判断手段をさらに備える請求項1〜3のいずれかに記載の負荷分散装置。
  5. 前記転送判断手段は、前記サーバから受信されたデータが、確認応答のためのデータのみからなる場合に転送すべきでないと判断する請求項4に記載の負荷分散装置。
  6. クライアントと複数のサーバとの間に設けられる負荷分散装置において、
    クライアントから受信したデータを記憶する記憶手段と、
    前記クライアントから受信したデータが、前記クライアントに対する確認応答を要するデータか否かを判断する判断手段と、を備え、
    前記判断手段により、前記クライアントから受信したデータが前記確認応答を要しないデータであると判断された場合、前記記憶手段に記憶されたデータをサーバに転送した時点で消去することを特徴とする、負荷分散装置。
  7. 前記判断手段は、前記クライアントから受信したデータにデリミタが含まれているか否かを判別し、前記データにデリミタが含まれる場合に、当該データが前記確認応答を要しないデータであると判断することを特徴とする、請求項6に記載の負荷分散装置。
  8. クライアントから受信したデータを記憶する記憶手段と、
    前記クライアントから受信したデータが、複数のパケットから構成されるか否かを判断する判断手段と、
    前記判断手段により、受信したデータが複数のパケットから構成され、且つ受信したパケットが最後のパケットではないと判断された場合、当該データに対する確認応答を前記クライアントに送信するとともに、受信したデータが一つのパケットから構成されると判断された場合、あるいは受信したデータが複数のパケットから構成され、且つ受信したパケットが最後のパケットであると判断された場合、前記クライアントに対する確認応答を送信しない確認応答手段と、を備え、
    前記確認応答手段から前記クライアントに対する確認応答が送信されない場合、パケットをサーバに転送した時点で前記記憶手段に記憶されたデータを消去することを特徴とす る負荷分散装置。
JP2002254233A 2002-08-30 2002-08-30 負荷分散装置 Expired - Fee Related JP4201550B2 (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP2002254233A JP4201550B2 (ja) 2002-08-30 2002-08-30 負荷分散装置
US10/640,144 US20040054796A1 (en) 2002-08-30 2003-08-13 Load balancer

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2002254233A JP4201550B2 (ja) 2002-08-30 2002-08-30 負荷分散装置

Publications (2)

Publication Number Publication Date
JP2004094555A JP2004094555A (ja) 2004-03-25
JP4201550B2 true JP4201550B2 (ja) 2008-12-24

Family

ID=31986291

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2002254233A Expired - Fee Related JP4201550B2 (ja) 2002-08-30 2002-08-30 負荷分散装置

Country Status (2)

Country Link
US (1) US20040054796A1 (ja)
JP (1) JP4201550B2 (ja)

Families Citing this family (25)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
BR0315624A (pt) 2002-10-22 2005-08-23 Jason A Sullivan Sistema de processamento em computador personalizável robusto
CN1729734B (zh) 2002-10-22 2011-01-05 贾森·A·沙利文 用于提供动态模块处理单元的系统及方法
EP1557075A4 (en) 2002-10-22 2010-01-13 Sullivan Jason CONTROL MODULE NOT ASSOCIATED WITH PERIPHERALS HAVING IMPROVED HEAT DISSIPATION PROPERTIES
US20140250267A1 (en) * 2002-10-22 2014-09-04 Jason A. Sullivan Systems and methods for providing dynamic hybrid storage
JP4335090B2 (ja) 2004-05-14 2009-09-30 シャープ株式会社 移動端末装置
JP4597583B2 (ja) 2004-05-31 2010-12-15 シャープ株式会社 データ送信装置、データ受信装置、通信システム、データ送信装置の制御プログラム、データ受信装置の制御プログラム、および、コンピュータ読み取り可能な記録媒体
US8036244B2 (en) * 2004-08-06 2011-10-11 Sharp Kabushiki Kaisha Transmitter, receiver, communication system, communication method, non-transitory computer readable medium
JP2006086611A (ja) * 2004-09-14 2006-03-30 Sony Corp 情報処理装置、情報処理システム、情報処理方法及びそのプログラム
US7752670B2 (en) * 2004-09-23 2010-07-06 Xiangrong Cai Detecting an attack of a network connection
US8051182B2 (en) * 2005-01-28 2011-11-01 Sharp Kabushiki Kaisha Communication device, communication system, communication method, communication program, and communication circuit
JP4198741B2 (ja) * 2005-01-28 2008-12-17 シャープ株式会社 通信機器、通信システム、通信方法、通信プログラム、通信回路
KR100902341B1 (ko) * 2005-01-28 2009-06-12 샤프 가부시키가이샤 통신기기, 통신시스템, 통신방법, 통신 프로그램을 기록한 컴퓨터독취가능한 기록매체, 통신회로
US7787391B2 (en) * 2005-01-28 2010-08-31 Sharp Kabushiki Kaisha Communication device, communication system, communication method, communication program, and communication circuit
JP2006324973A (ja) * 2005-05-19 2006-11-30 Murata Mach Ltd ルータ装置および通信システム
US20090262661A1 (en) * 2005-11-10 2009-10-22 Sharp Kabushiki Kaisha Data transmission device and method of controlling same, data receiving device and method of controlling same, data transfer system, data transmission device control program, data receiving device control program, and storage medium containing the programs
CN101026617B (zh) * 2006-02-18 2010-09-15 华为技术有限公司 一种ims网络中媒体资源调度方法
US8576712B2 (en) * 2006-05-31 2013-11-05 At&T Intellectual Property Ii, L.P. Method and apparatus for providing a reliable voice extensible markup language service
JP4664243B2 (ja) * 2006-06-29 2011-04-06 富士通株式会社 通信装置
JP4219950B2 (ja) * 2006-10-16 2009-02-04 シャープ株式会社 通信機器、通信方法、通信回路、携帯電話機、プログラム、およびプログラムを記録したコンピュータ読み取り可能な記録媒体
CN101335603B (zh) * 2008-07-17 2011-03-30 华为技术有限公司 数据传输方法和装置
US9025475B1 (en) * 2012-01-16 2015-05-05 Amazon Technologies, Inc. Proactively retransmitting data packets in a low latency packet data network
WO2014172896A1 (zh) * 2013-04-26 2014-10-30 华为技术有限公司 一种数据传输的方法、基站和无线通信设备
JP6038326B2 (ja) * 2013-07-30 2016-12-07 三菱電機株式会社 データ処理装置及びデータ通信装置及び通信システム及びデータ処理方法及びデータ通信方法及びプログラム
US10069727B2 (en) * 2015-04-17 2018-09-04 International Business Machines Corporation Data packet retransmission processing
CN110971535B (zh) * 2020-03-03 2020-07-14 友刻(北京)通讯技术有限公司 一种通信拥塞控制方法及装置、设备和存储介质

Family Cites Families (30)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN86101893A (zh) * 1985-02-28 1986-11-05 佳能株式会社 数据通信设备
US5163054A (en) * 1990-12-31 1992-11-10 International Business Machines Corp. Method for data transmission using a modified high level data link control protocal
US5819045A (en) * 1995-12-29 1998-10-06 Intel Corporation Method for determining a networking capability index for each of a plurality of networked computers and load balancing the computer network using the networking capability indices
JP3715991B2 (ja) * 1996-02-09 2005-11-16 株式会社日立製作所 並列プロセッサ
US6003064A (en) * 1996-02-22 1999-12-14 Fujitsu Limited System and method for controlling data transmission between network elements
US5774660A (en) * 1996-08-05 1998-06-30 Resonate, Inc. World-wide-web server with delayed resource-binding for resource-based load balancing on a distributed resource multi-node network
US5918002A (en) * 1997-03-14 1999-06-29 Microsoft Corporation Selective retransmission for efficient and reliable streaming of multimedia packets in a computer network
US6775692B1 (en) * 1997-07-31 2004-08-10 Cisco Technology, Inc. Proxying and unproxying a connection using a forwarding agent
US6128279A (en) * 1997-10-06 2000-10-03 Web Balance, Inc. System for balancing loads among network servers
US6018516A (en) * 1997-11-14 2000-01-25 Packeteer, Inc. Method for minimizing unneeded retransmission of packets in a packet communication environment supporting a plurality of data link rates
US6327622B1 (en) * 1998-09-03 2001-12-04 Sun Microsystems, Inc. Load balancing in a network environment
US6671259B1 (en) * 1999-03-30 2003-12-30 Fujitsu Limited Method and system for wide area network load balancing
US6700871B1 (en) * 1999-05-04 2004-03-02 3Com Corporation Increased throughput across data network interface by dropping redundant packets
US6628654B1 (en) * 1999-07-01 2003-09-30 Cisco Technology, Inc. Dispatching packets from a forwarding agent using tag switching
US6742045B1 (en) * 1999-07-02 2004-05-25 Cisco Technology, Inc. Handling packet fragments in a distributed network service environment
US6735169B1 (en) * 1999-07-02 2004-05-11 Cisco Technology, Inc. Cascading multiple services on a forwarding agent
US6687222B1 (en) * 1999-07-02 2004-02-03 Cisco Technology, Inc. Backup service managers for providing reliable network services in a distributed environment
US6633560B1 (en) * 1999-07-02 2003-10-14 Cisco Technology, Inc. Distribution of network services among multiple service managers without client involvement
US6650641B1 (en) * 1999-07-02 2003-11-18 Cisco Technology, Inc. Network address translation using a forwarding agent
US6606315B1 (en) * 1999-07-02 2003-08-12 Cisco Technology, Inc. Synchronizing service instructions among forwarding agents using a service manager
US6549516B1 (en) * 1999-07-02 2003-04-15 Cisco Technology, Inc. Sending instructions from a service manager to forwarding agents on a need to know basis
IL142969A (en) * 2000-05-04 2007-02-11 Comverse Ltd Load balancing
US6836462B1 (en) * 2000-08-30 2004-12-28 Cisco Technology, Inc. Distributed, rule based packet redirection
US20030046394A1 (en) * 2000-11-03 2003-03-06 Steve Goddard System and method for an application space server cluster
US7984147B2 (en) * 2000-12-29 2011-07-19 Hewlett-Packard Development Company, L.P. Apparatus and method for identifying a requested level of service for a transaction
US7523454B2 (en) * 2001-03-06 2009-04-21 Hewlett-Packard Development Company, L.P. Apparatus and method for routing a transaction to a partitioned server
US20030014524A1 (en) * 2001-07-11 2003-01-16 Alexander Tormasov Balancing shared servers in virtual environments
US7321926B1 (en) * 2002-02-11 2008-01-22 Extreme Networks Method of and system for allocating resources to resource requests
US7194621B1 (en) * 2002-02-28 2007-03-20 Cisco Technology, Inc. Method and apparatus for encrypting data communicated between a client and a server that use an unencrypted data transfer protocol
US7058717B2 (en) * 2002-07-25 2006-06-06 International Business Machines Corporation Method and system for providing highly available services based on a load balancing policy and a reusable connection context object

Also Published As

Publication number Publication date
US20040054796A1 (en) 2004-03-18
JP2004094555A (ja) 2004-03-25

Similar Documents

Publication Publication Date Title
JP4201550B2 (ja) 負荷分散装置
JP3833847B2 (ja) パケットベースの通信ネットワークにおけるメッセージ受信の肯定応答システム及び方法
JP4575435B2 (ja) ネットワーク・リンク上でのhttpの加速
US7720063B2 (en) Method apparatus and system for accelerated communication
US7197571B2 (en) System and method for improving backup performance of media and dynamic ready to transfer control mechanism
US20030208600A1 (en) System and method for managing persistent connections in HTTP
US7970925B2 (en) Method and apparatus for an improved bulk read socket call
US7624184B1 (en) Methods and apparatus for managing access to data through a network device
US20060031520A1 (en) Allocation of common persistent connections through proxies
US20030033520A1 (en) HTTP multiplexor/demultiplexor system for use in secure transactions
KR20080015422A (ko) 긴 지연 링크를 통한 http의 성능을 향상시키는 방법및 장치
US20090080332A1 (en) Method and System for a Fast Drop Recovery for a TCP Connection
KR20060085241A (ko) 차동 확인 응답 프로세싱 버퍼 관리자 및 이를 위한 방법
Savage et al. The case for informed transport protocols
US7979526B2 (en) Connection management system and method for a transport offload engine
US7388836B2 (en) System and method for communicating data in a network environment
CN109067506A (zh) 一种基于多滑动窗口并发的轻量级异步消息实现方法
US7672239B1 (en) System and method for conducting fast offloading of a connection onto a network interface card
JP3648211B2 (ja) パケット中継プログラム、パケット中継装置および記録媒体
Iyengar et al. Dealing with short TCP flows: A survey of mice in elephant shoes
JPWO2018142866A1 (ja) 転送装置、転送方法及びプログラム
Kruse et al. HTTP page transfer rates over geo-stationary satellite links
Rhee et al. Heuristic connection management for improving server-side performance on the Web
JP2002290442A (ja) 通信装置、プログラム、情報記憶媒体および通信制御方法
Pandey et al. Intermediate processing protocol for processing within IP-routed networks

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20050816

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20071129

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20071211

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20080212

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

A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20081007

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

Year of fee payment: 3

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

Free format text: PAYMENT UNTIL: 20111017

Year of fee payment: 3

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

Free format text: PAYMENT UNTIL: 20121017

Year of fee payment: 4

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

Free format text: PAYMENT UNTIL: 20121017

Year of fee payment: 4

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

Free format text: PAYMENT UNTIL: 20131017

Year of fee payment: 5

LAPS Cancellation because of no payment of annual fees