JP5908915B2 - 伝送制御プロトコルの通信方法およびサーバ - Google Patents

伝送制御プロトコルの通信方法およびサーバ Download PDF

Info

Publication number
JP5908915B2
JP5908915B2 JP2013534976A JP2013534976A JP5908915B2 JP 5908915 B2 JP5908915 B2 JP 5908915B2 JP 2013534976 A JP2013534976 A JP 2013534976A JP 2013534976 A JP2013534976 A JP 2013534976A JP 5908915 B2 JP5908915 B2 JP 5908915B2
Authority
JP
Japan
Prior art keywords
communication proxy
application
data packet
server
communication
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
JP2013534976A
Other languages
English (en)
Other versions
JP2013545375A (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.)
Alibaba Group Holding Ltd
Original Assignee
Alibaba Group Holding 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 Alibaba Group Holding Ltd filed Critical Alibaba Group Holding Ltd
Publication of JP2013545375A publication Critical patent/JP2013545375A/ja
Application granted granted Critical
Publication of JP5908915B2 publication Critical patent/JP5908915B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/54Interprogram communication
    • G06F9/546Message passing systems or structures, e.g. queues
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L69/00Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
    • H04L69/16Implementation or adaptation of Internet protocol [IP], of transmission control protocol [TCP] or of user datagram protocol [UDP]
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L69/00Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
    • H04L69/16Implementation or adaptation of Internet protocol [IP], of transmission control protocol [TCP] or of user datagram protocol [UDP]
    • H04L69/163In-band adaptation of TCP data exchange; In-band control procedures
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L47/00Traffic control in data switching networks
    • H04L47/10Flow control; Congestion control
    • H04L47/19Flow control; Congestion control at layers above the network layer
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L47/00Traffic control in data switching networks
    • H04L47/10Flow control; Congestion control
    • H04L47/26Flow control; Congestion control using explicit feedback to the source, e.g. choke packets
    • H04L47/266Stopping or restarting the source, e.g. X-on or X-off
    • 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
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/2866Architectures; Arrangements
    • H04L67/2876Pairs of inter-processing entities at each side of the network, e.g. split proxies
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/50Network services
    • H04L67/56Provisioning of proxy services
    • H04L67/563Data redirection of data network streams

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Data Exchanges In Wide-Area Networks (AREA)
  • Communication Control (AREA)
  • Computer And Data Communications (AREA)

Description

本開示は、ネットワーク通信技術に関するものである。より具体的には、本開示は、伝送制御プロトコル(TCP)通信の方法とTCP通信のためのサーバに関するものである。
伝送制御プロトコル(TCP)を使用する二者間の通信の間、TCP接続が、データを双方向的に伝送するためにこれらの二者(例えば、クライアントアプリケーションとサーバアプリケーション)間に確立される。TCPに従って、IPアドレスおよびポートIDは、通信相手を識別するために使用され、ポートIDは、1から65535までの符号なしの16桁の整数である。
TCP接続をサーバアプリケーションとクライアントアプリケーションとの間に確立するために、サーバアプリケーションはまずポートを開放し、そのポートで待ち受ける。クライアントアプリケーションもまた、ポートを開放し、そのポートを経由してサーバアプリケーションの待ち受けポートと接続する。したがって、TCP接続を確立することは、サーバアプリケーションとクライアントアプリケーションとの間に少なくとも3回のハンドシェイクを必要とする。しかしながら、従来の技術に基づいて確立される大量のTCP接続に問題が生じる場合がある。結果として、過剰なシステムリソースが伝送の間に消費されることがある。
この発明の概要は、発明を実施するための形態において以下に更に記載される概念の選択を簡易化された形式で紹介するために提供される。この発明の概要は、特許請求された対象の重要な特徴または不可欠な特徴を明らかにすることを意図するものではなく、また、特許請求された対象の範囲を限定するために使用されることを意図するものでもない。
本開示は、例えば伝送制御プロトコル(TCP)接続を経由してデータパケットを伝送するための方法およびサーバを提供する。
いくつかの態様では、データパケットを伝送することは、データパケットを第1のサーバ上の第1のアプリケーションから受信することを含む。データパケットは、次いで、データパケットを受信するための第2のアプリケーションを含む第2のサーバに関連付けられた宛先アドレスを判断するために、第1のサーバ上の第1の通信プロキシによって解析される。アドレスの判断の後、データパケットは、第1の通信プロキシと第2のサーバ上の第2の通信プロキシとの間のキュー内に配置され、第2の通信プロキシに送信される。
いくつかの態様では、データパケットを伝送することは、データパケットを第2のサーバ上の第2のアプリケーションから受信することを含む。データパケットは、次いで、データパケットを受信し、かつ第1のサーバ上に位置する第1のアプリケーションに関連付けられた宛先アドレスを判断するために、第1のサーバ上の第1の通信によって解析される。アドレスの判断の後、データパケットは、第1の通信プロキシと第1のアプリケーションとの間のキュー内に配置され、第1のアプリケーションに送信される。いくつかの態様では、データパケットを伝送することは、データ伝送を制御するためのフロー制御機構を含む。
サーバ間の例示的なTCP接続を示す概略図である。 サーバ間の例示的なTCP接続を示す概略図である。 データパケットを第1のサーバ上の第1のアプリケーションから第2のサーバ上の第2の通信プロキシに伝送する例示的なプロセスを示すフローチャートである。 説明的なデータパケット形式の概略的なブロック図である。 データパケットを第1のサーバの第1の通信プロキシから第2のサーバの第2の通信プロキシに送信する例示的なプロセスを示す概略図である。 キューのいくつかのデータパケットを送信し、かつ制御信号を送信する例示的なプロセスを示す概略図である。 データパケットを第1のサーバ上で第1の通信プロキシから第1のアプリケーションに伝送する例示的なプロセスを示すフローチャートである。 データパケットを第1のサーバ上の第1の通信プロキシから第1のサーバ上の第1のアプリケーションに送信する例示的なプロセスを示す概略図である。 例示的なTCP通信サーバの詳細を示す概略的なブロック図である。 TCP通信サーバの例示的なプログラムユニットの詳細を示す概略的なブロック図である。
TCPの方法およびTCPのためのサーバの発明を実施するための形態は、添付の図面を参照にして説明される。
図1は、サーバ間の例示的なTCP接続を示す概略図である。2つのサーバ上のアプリケーション(例えば、クライアントアプリケーションとサーバアプリケーション)間でTCP通信を行うために、TCP接続は、通常、2つのサーバ上のアプリケーション間に確立される。図1に示されるように、サーバ1内のアプリケーションA〜Dのそれぞれは、サーバ2内のアプリケーションE〜H)のそれぞれとTCP接続を確立する。
アプリケーションA〜DがアプリケーションE〜Hと通信する限り、TCP接続は、2つのサーバ間に確立される必要がある。2つのサーバがあり、各サーバが100個のアプリケーションを実行することを仮定する。TCP接続は2つのサーバの2つの個々のアプリケーション間に確立される必要があるので、2つのサーバ間で合計10,000個のTCP接続があることになる。オペレーティングシステムとプロトコルスタックの観点からすれば、これほど多くのTCP接続を維持することは、大量のシステムリソースを消費することになる。この状況を避けるために、提案された1つの解決法は、アプリケーションがTCP接続の使用を終了した後にTCP接続を直ちに終了させて、アプリケーションが接続を再度必要とする場合にTCP接続を再度確立することである。接続を再度確立するプロセスは、少なくとも3回のハンドシェイクを必要とし、したがって、アプリケーションの実行に遅延を生じさせることがある。
このことは、大規模のサーバクラスタに対してより大きな問題を生じさせる可能性さえある。クラスタが5000個のサーバを有し、各サーバが、平均して、100個のアプリケーションを実行することを仮定する。結果として、クラスタは合計で500,000個のTCP接続を確立するかもしれない。これほど多くのTCP接続を維持することは、大量のシステムリソースを消費することになる。更に、たとえこれらのTCP接続の全てが同時に維持されるわけではないとしても、これらのアプリケーションの実行は、これらのTCP接続の終了および/または開始のプロセスによって遅延されることになる。
上記のように、従来の技術は、異なるサーバ間で別のアプリケーションと通信するアプリケーションごとにTCP接続を確立し、これらのアプリケーションの実行に遅延を生じさせる場合がある。本開示は、TCP通信を改善し、かつ上記の問題を避ける様々な例示的方法を記載する。
図2は、サーバ間の例示的なTCP接続を示す概略図である。図示されるように、第1の通信プロキシおよび第2の通信プロキシは、2つの通信相手(すなわち、第1のアプリケーションA〜Dおよび第2のアプリケーションE〜H)が位置する第1のサーバおよび第2のサーバにそれぞれインストールされる。第1の通信プロキシおよび第2の通信プロキシは、特定の機能を実行するソフトウェアモジュールである。
第1のサーバ上の第1のアプリケーションA〜Dは、プロセス間通信接続を経由して第1の通信プロキシと接続する。同様に、第2のサーバ上の第2のアプリケーションE〜Hは、プロセス間通信接続を経由して第2の通信プロキシと接続する。これらのプロセス間通信接続は、サーバのオペレーティングシステムによって提供されるいくつかのプロセス間通信方法のうちの1つを使用してもよい。限定ではない一例として、その通信方法は、ユニックスドメインソケット(Unix(登録商標) Domain Socket)、ローカルTCP、共用メモリおよびメッセージキュー、ならびにパイプ(Pipe)を含んでもよい。
第1のサーバ内の第1の通信プロキシおよび第2のサーバ内の第2の通信プロキシは、2つのアプリケーション間にTCP接続を確立する従来のTCP技術とは異なり事前に確立されたデータ接続を使用する。本開示によって提供されるデータ接続は、固定した、かつ非常に安定した接続である。その接続を通じて、第1のサーバ内の全てのアプリケーションは、第1の通信プロキシと第2の通信プロキシとの間に確立されたTCP接続を経由して第2のサーバ内のアプリケーションに接続してもよい。そしてまた、第2のサーバ内の全てのアプリケーションは、そのTCPを経由して第1のサーバ内のアプリケーションに接続してもよい。図2に示されるように、第1の通信プロキシと第2の通信プロキシとの間のデータ接続は、第1のサーバ内の第1のアプリケーションと第2のサーバ内の第2のアプリケーションとの間にデータ通信チャネルを提供する。データ接続は、従来の技術に従って多数のTCP通信相手間に確立されることになるいくつかのTCP接続に実際に取って代わる。いくつかの実施形態では、確立された単一のデータ接続は、第1のサーバ内の第1のアプリケーションと第2のサーバ内の第2のアプリケーションとの間のデータ転送を実施してもよい。第1のアプリケーションと第2のアプリケーションとの間に直接的な接続がないので、実際の接続量は、従来の技術に従う接続量よりもはるかに少なく、したがって、システムリソースを大幅に節約することができる。
いくつかの実施形態では、大規模のクラスタ化アプリケーションのために、図2に示される第1のサーバおよび第2のサーバに類似した多くのサーバがある場合がある。サーバクラスタの各サーバ内の通信プロキシは、データ接続を経由してサーバクラスタの別のサーバ内の通信プロキシと個別に接続してもよい。
いくつかの実施形態では、第1のサーバ内のアプリケーション(以下、「第1のアプリケーション」)は、データパケットを第1のサーバ内の第1の通信プロキシに送信する。この第1の通信プロキシは、データパケットを第2のサーバ内の第2の通信プロキシに送信する。その後、第2の通信プロキシは、データパケットを第2のサーバ内の別のアプリケーション(以下、「第2のアプリケーション」)に送信する。
いくつかの実施形態では、第2のアプリケーションは、データパケットを第2のサーバ内の第2の通信プロキシに送信する。この第2の通信プロキシは、データパケットを第1のサーバ内の第1の通信プロキシに送信する。その後、第1の通信プロキシは、データパケットを第1のアプリケーションに送信する。
いくつかの実施形態では、第1のサーバ内の第1の通信プロキシと第2のサーバ内の第2の通信プロキシは、TCP接続における反対端(opposite end)であり、したがって、これらのネットワーク状況は対称的である。第1のアプリケーションは、データパケットを第1の通信プロキシに送信し、次いで、第1の通信プロキシは、データパケットを第2の通信プロキシに送信する。このプロセスは、第2のアプリケーションがデータパケットを第2の通信プロキシに送信し、次いで、第2の通信プロキシがデータパケットを第1の通信プロキシに送信するプロセスに類似する。同様に、第2の通信プロキシは、受信したデータパケットを第2のアプリケーションに送信する。このプロセスもまた、第1の通信プロキシが受信したデータパケットを第1のアプリケーションに送信するプロセスに類似する。
いくつかの実施形態では、第1の通信プロキシは、第1のアプリケーションから受信したデータパケットを第2の通信プロキシに伝送する。第1の通信プロキシは、第2のアプリケーションによって送信されたデータパケットを第2の通信プロキシから受信する。次いで、第1の通信プロキシは、そのデータパケットを第1のアプリケーションに送信する。双方向的なTCP通信を本開示に基づいて実施することができることが理解される。双方向的なTCP通信は、第1の通信プロキシから第2の通信プロキシにあるいは第2の通信プロキシから第1の通信プロキシに確立されてもよい。
図3は、第1のサーバ上の第1のアプリケーションから第2のサーバ内の第2の通信プロキシにデータパケットを伝送する例示的なプロセスを示すフローチャートである。
ブロック301では、第1のサーバの第1の通信プロキシは、第1の通信プロキシと第1のアプリケーションとの間の事前に確立されたプロセス間通信接続を経由して、第1のサーバ上の第1のアプリケーションによって送信されたデータパケットを受信する。ブロック302では、第1の通信プロキシは、データパケットを受信する第2のアプリケーションが位置する第2のサーバの宛先アドレスを判断するためにデータパケットを解析する。ブロック303では、第1の通信プロキシは、第1のサーバのキュー内にデータパケットを配置する。キューは、第2のサーバ上の第2のアプリケーションに対応する。ブロック304では、第1の通信プロキシは、キューからデータパケットを取り出し、次いで、第1の通信プロキシと第2の通信プロキシとの間の事前に確立されたデータ接続を経由してデータパケットを第2の通信プロキシに送信する。
図4は、説明的なデータパケット形式の概略図である。第1のサーバのアプリケーションは、データパケットを第1のサーバ内で送信するために第1のサーバのアプリケーションのプロセス間通信接続を使用する一方で、それらは、データ接続を経由してデータパケットを第2のサーバ上の第2の通信プロキシに送信する。また、第2の通信プロキシは、各データパケットに対応するプロセス間通信接続をそのデータパケットの宛先アドレスに基づいて区別し、したがって、データパケットを第2のサーバ上の対応する第2のアプリケーションに正確に伝送することができる。いくつかの実施形態では、サーバ内の様々なアプリケーションは、対応する固有のアプリケーションID(以下、「AppID」)(例えば、16ビットの整数)に基づいて区別されてもよい。例えば、第1のサーバ上および第2のサーバ上の各アプリケーションは、AppIDを割り当てられる。いくつかの実施形態では、IPアドレスとAppIDを組み合わせることを、アプリケーションを位置させるために使用することができる。すなわち、2個組(two−tuple)(すなわち、IP、AppID)は、サーバ上のアプリケーションのアドレスを表わすことができる。
図4に図示されるように、いくつかの実施形態では、データパケットは、SRCフィールド(すなわち、ソースアドレス)、DSTフィールド(すなわち、宛先アドレス)、およびペイロードフィールドを含んでもよい。これらの実施形態では、SRCフィールドは、データパケットを送信する第1のアプリケーションの(IP、AppID)を含むソースアドレスを表わす。DSTフィールドは、データパケットを受信する第2のアプリケーションの(IP、AppID)を含む宛先アドレスを表わす。データパケットは、例えば、データパケット番号フィールドおよびデータパケットフラグフィールドを含んでもよい。データパケットフラグフィールドは、例えば、データパケット優先度およびデータパケットの種類(例えば、データニュース)を含んでもよい。したがって、第1の通信プロキシはデータパケット内の宛先アドレスを解析すると、この通信プロキシは、データパケットを受信する第2のアプリケーションの対応する第2の通信プロキシを判断することができる。第1の通信プロキシは、次いで、データパケットを第2の通信プロキシに送信する。第2の通信プロキシはデータパケットを一旦受信すると、第2の通信プロキシは、データパケット内に含まれる宛先アドレスに基づいて、対応する第2のアプリケーションにデータパケットを送信することができる。
図5は、第1のサーバの第1の通信プロキシから第2のサーバの第2の通信プロキシにデータパケットを送信する例示的なプロセス(例えば、図3のブロック303および304)を示す概略図である。図5に図示されるように、第1の通信プロキシは、第1のサーバの第1のアプリケーションによって送信されたデータパケットを一旦受信すると、第1の通信プロキシは、キューが第1の通信プロキシと第2の通信プロキシとの間に確立されているかどうかを判断する場合がある。キューは、データパケットを受信する第2のアプリケーションに対応しており、データパケットを第2の通信プロキシに送信するために使用される。いくつかの実施形態では、第1の通信プロキシは、キューが確立されていないことを判断する。次いで、キューは確立されて、データパケットがキュー内に配置される。限定ではない一例として、データパケットは、キュー内の配置のタイムスタンプ順またはデータパケットの優先度に基づいてキュー内に配置されてもよい。キューは、データパケットを受信する第2のアプリケーションに対応するので、第1の通信プロキシは、データパケット内に含まれる宛先アドレスを用いて第2のアプリケーションを判断し、データパケットが配置されるべきキューを判断してもよい。
いくつかの実施形態では、第1の通信プロキシは、データ接続が帯域幅要件内に入る場合、データパケットをキューから取り出してもよい。限定ではない一例として、データパケットは、先入れ先出し技術またはデータパケットの優先度に基づいて取り出されてもよい。取り出されたデータパケットは、第1の通信プロキシと第2の通信プロキシとの間のデータ接続を経由して第2の通信プロキシに伝送されてもよい。
いくつかの実施形態では、データパケットの一定の受信側(例えば、第2の通信プロキシおよび第2のアプリケーション)が、その受信側の受信するデータ速度を落とす一方で、他方側は他方側の受信するデータ速度を落とさないので、データ接続は、全体として、速度を落とされない。第1のサーバ内の第1のアプリケーションが大量のデータパケットを生成する場合、そのことは、キューが完全に埋められ、その結果、データパケットがオーバーフローするという状況を作るかもしれない。そのような状況が生じる場合、キュー内の後続のデータパケットを、正常に伝送することができない。同様の状況を避けるために、フロー制御機構が、本開示に提供される。
いくつかの実施形態では、フロー制御機構は、第1のサーバ内の第1の通信プロキシと第2のサーバ内の第2の通信プロキシとの間に確立された制御接続を含んでもよい。この制御接続は、固定し、かつ安定した接続である上記データ接続に類似する。この状況において、データ接続がデータ伝送を制御する一方で、制御接続はフロー制御信号を制御する。この制御接続は、従来のTCP技術に従って両者間に確立されるTCP接続とは異なる。本開示によって提供されるこのデータ接続は、フロー制御に関して2つのデータ接続と比較して少々効果が低い一方で、TCP接続の数を更に減らす。
図5に図示されるように、データパケットを第2の通信プロキシに伝送するとき、第1の通信プロキシは、キュー内のデータパケットの量を監視する。いくつかの実施形態では、キュー内のデータのオーバーフローを避けるために、第1の通信プロキシが、キュー内のデータパケットの量が事前に設定された閾値よりも多いことを判断した後に、制御信号(すなわち、第1の制御信号)が、データパケットの伝送を停止するために第1のアプリケーションに送信される。
いくつかの実施形態では、第1のアプリケーションが第1の制御信号を受信した後に、第1のアプリケーションは、データパケットを第1の通信プロキシに伝送することを停止する。第1の通信プロキシは、キュー内にあるデータパケットを伝送し続けて、その後、キュー内のデータパケットの量は徐々に減少する。第1の制御信号を第1のアプリケーションに送信した後、第1の通信プロキシは、キュー内のデータパケットの量を監視する。第1の通信が、キュー内のデータパケットの量が事前に設定された閾値の範囲内にあることを判断した後に、第2の制御信号(すなわち、第2の制御信号)が、データパケットの伝送を再開するために第1のアプリケーションに送信される。
例えば、第1の通信プロキシが、キュー内のデータパケットがキューの長さ(すなわち、受信することができるデータパケットの合計数)の2/3以上であることを監視すると、第1の通信プロキシは、データパケットの伝送を停止する信号メッセージXOFF(すなわち、第1の制御信号)を送信する。第1の通信プロキシが、キュー内のデータパケットの量がキューの長さの1/3以下であることを監視すると、第1の通信プロキシは、データパケットの伝送を再開する信号メッセージXON(すなわち、第2の制御信号)を送信する。
いくつかの実施形態では、第1の通信プロキシがデータパケットを第2の通信プロキシに伝送すると、第1の通信プロキシは、第3の制御信号が、データパケットの伝送を停止するために第2の通信プロキシから、第1の通信プロキシと第2の通信プロキシとの間の事前に確立された制御接続を経由して受信されたかどうかを判断する。第3の制御信号を受信すると、第1の通信プロキシは、例えばキュー内の全てのデータパケットを、伝送することを一時的に停止する。第1の通信プロキシは、キュー内の全てのデータパケットを伝送することを一時的に停止した後に、第2の通信プロキシからの第4の制御信号が、データパケットの伝送を再開するかどうかの判断を、事前に確立された制御接続で受信することによって、継続する。第4の制御信号を受信すると、第1の通信プロキシは、例えばキュー内の全てのデータパケットを、伝送することを再開する。
限定ではない一例として、第1の、第2の、第3の、および第4の制御信号は、データを伝送する際に使用されるデータパケットの形式に類似のデータ形式または他の形式を使用してもよい。例えば、制御信号は、データパケットが制御信号であることを示すデータパケットの種類フィールドを含んでもよい。
いくつかの実施形態では、2つの接続が確立されるとき、制御信号キュー方法が、制御接続で制御信号を伝送するために使用されてもよい。制御信号キューは、制御信号がデータ伝送よりも高い伝送優先度を有することを確実にするように制御信号を伝送するためだけに使用される。第1の通信プロキシまたは第2の通信プロキシは、制御信号キュー内に制御信号を配置することができる。伝送基準(例えば、帯域幅要件)が満たされる場合、第1の通信プロキシまたは第2の通信プロキシは、制御キューが制御信号を含むかどうかを判断する。制御キューが制御信号を含む場合、制御キューは、伝送されるための優先権を与えられる。この制御信号キューは、制御信号がそれらの宛先に時間通りに届くことが可能であることを確実にする。
図6は、キューのいくつかのデータパケットを送信すること、および制御信号キューの制御信号を送信することの例示的なプロセスを示す概略図である。図6に図示されるように、キューおよび第2のキュー内の量は、受信側の第2のアプリケーション内の量に基づいて判断される。第2の通信プロキシが3つの第2のアプリケーション(すなわち、図6におけるApp1、App2およびApp3)に接続することを仮定する。更に、第1の通信プロキシが2つの第1のアプリケーション(すなわち、クライアントApp1およびクライアントApp1)に接続することを仮定する。結果として、第1の通信プロキシは、クライアントApp1およびクライアントApp2によって送信されたデータパケットを受信する。第1の通信プロキシは、データパケットの宛先アドレスに基づいて、App1、App2およびApp3にそれぞれ対応する3つの第1のキュー(すなわち、図6におけるApp1_Q、App2_QおよびApp3_Q)内にこれらのデータパケットを個別に配置する。次いで、第1の通信プロキシは、3つの第1のキュー内のデータパケットを第2の通信プロキシに伝送する。第2の通信プロキシがデータパケットを一旦受信すると、第2の通信プロキシは、App1、App2およびApp3にそれぞれ対応する3つの第2のキュー(App1_Q、App2_QおよびApp3_Q)内にそれらのデータパケットを配置する。これらの3つの第2のアプリケーションは、それら自体のデータパケットを3つの第2のキューからそれぞれ取り出す。
いくつかの実施形態では、上記ブロック301から304までを実行する際に、第1の通信プロキシが、第1のサーバ内の第1のアプリケーションが判断されたことを検出する場合、第1の通信プロキシは、第1のアプリケーションが決定されたことを示すブロードキャストメッセージを第1の通信プロキシとの確立されたデータ接続を有する第2の通信プロキシの全てに送信してもよい。それに対応して、ブロードキャストメッセージを受信する第2の通信プロキシのそれぞれは、メッセージを第2のアプリケーションの全てに伝送する。したがって、第1の通信プロキシは、第1のアプリケーションのそれぞれの状態を記録する必要はない。いくつかの実施形態では、ブロードキャストメッセージのデータ量を減らすために、第1の通信は、ブロードキャストメッセージを定期的に(例えば、毎週)送信してもよい。それに対応して、第1のアプリケーションが判断されるとき、第1のアプリケーションの対応するキューによってデータ接続内に占められたスペースもまた、リソースの無駄使いを避けるように開放されることができる。
図7は、第1のサーバ内で第1の通信プロキシから第1のアプリケーションにデータパケットを伝送する例示的なプロセスを示すフローチャートである。ブロック701では、第1のサーバ内の第1の通信プロキシは、第2のサーバ内の第2のアプリケーションによって送信された第2の通信プロキシの伝送したデータパケットを、第1の通信プロキシと第2のサーバ内の第2の通信プロキシとの間の事前に確立されたデータ接続を経由して受信する。
ブロック702では、第1の通信プロキシは、データパケットの宛先アドレスを解析する。その宛先アドレスに基づいて、第1の通信プロキシは、データパケットを受信する第1のサーバ上の第1のアプリケーションを判断する。いくつかの実施形態では、データパケットは、図4に上記したように2個組(すなわち、IP、AppID)を含んでもよい。例えば、第1の通信プロキシは、データパケットに含まれる第1のアプリケーションのAppIDに基づいて第1のアプリケーションのアドレスを判断してもよい。
ブロック703では、第1の通信プロキシは、受信したデータパケットを第1の通信プロキシと第1のアプリケーションとの間の第2のキュー内に配置する。ブロック704では、第1の通信プロキシは、第1の通信プロキシと第1のアプリケーションとの間の事前に確立されたプロセス間通信接続を経由してデータパケットを第1のアプリケーションに送信する。いくつかの実施形態では、第1の通信プロキシは、第1のアプリケーションに送信されたデータパケットを第1の通信プロキシと第1のアプリケーションとの間の事前に確立されたプロセス間通信接続を経由して伝送してもよい。
図8は、データパケットを第1のサーバ上の第1の通信プロキシから第2のサーバ上の第1のアプリケーションに送信する例示的なプロセス(例えば、図7のブロック703および704)を示す概略図である。図8に図示されるように、第1の通信プロキシがデータパケットを一旦受信すると、第1の通信プロキシは、プロセス間通信接続が、データパケットを受信する第1のアプリケーションと第1の通信プロキシとの間に確立されたかどうかを判断してもよい。いくつかの実施形態では、第1の通信プロキシは接続が確立したことを判断する。次いで、第1の通信プロキシは、第1の通信プロキシと第1のアプリケーションとの間の第2のキュー内にデータパケットを配置してもよい。いくつかの実施形態では、第1の通信は、接続が確立していないことを判断する。次いで、第2のキューが、データパケットを受信する第1のアプリケーションと第1の通信プロキシとの間にまず確立される。第1の通信プロキシは、その後、第2のキュー内にデータパケットを配置する。限定ではない一例として、データパケットは、キュー内の配置のタイムスタンプ順またはデータパケットの優先度に基づいてキュー内に配置されてもよい。いくつかの実施形態では、第2のキューは、データパケットを受信する実際の第1のアプリケーションのみに対応してもよい。
いくつかの実施形態では、第1の通信プロキシは、データ接続の帯域幅要件内に入る場合、データパケットをキューから取り出してもよい。限定ではない一例として、データパケットは、先入れ先出し技術またはデータパケットの優先度に基づいて取り出されてもよい。取り出されたデータパケットは、第1の通信プロキシと第1のアプリケーションとの間のプロセス間通信接続を経由して第1のアプリケーションに伝送されてもよい。
図8に図示されるように、データパケットを第1のアプリケーションに伝送する際(例えば、図7のブロック703および704)、第1の通信プロキシは、第2のキュー内のデータパケットの量を監視する。いくつかの実施形態では、第1の通信プロキシが、第2のキュー内のデータパケットの量が事前に設定された閾値よりも多いことを判断した後に、フロー信号(すなわち、図8の第1の制御信号)が、データパケットの伝送を停止するために第2の通信プロキシに送信される。
いくつかの実施形態では、第2の通信プロキシが第1の制御信号を受信した後に、第2の通信プロキシは、データパケットを第1の通信プロキシに伝送することを停止する。第1の通信プロキシは、第1のキュー内にあるデータパケットを伝送し続けて、その後、第2のキュー内のデータパケットの量は徐々に減少する。第1の制御信号を第2の通信プロキシに送信した後、第1の通信プロキシは、第2のキュー内のデータパケットの量を監視する。第1の通信が、第2のキュー内のデータパケットの量が事前に設定された閾値内にあることを判断した後に、第2の制御信号(すなわち、図8の第2の制御信号)は、データパケットの伝送を再開するために第2の通信プロキシに送信される。
いくつかの実施形態では、第1のサーバ内の第1のアプリケーションは、データ受信速度を落とすために、対応するフロー制御信号を第1の通信プロキシに送信してもよい。第2のキュー内のデータパケットの量を先を見越して監視することに加えて、第1の通信プロキシは、フロー制御信号が、第1の通信プロキシと第1のアプリケーションとの間の事前に確立されたプロセス間通信接続を経由して第1のアプリケーションによって送信されたかどうかを判断してもよい。第1の通信プロキシが、データパケットの伝送を停止することを示すフロー制御を一旦判断すると、第1の通信プロキシは、例えば第2のキュー内の全てのデータパケットを、伝送することを一時的に停止する。
いくつかの実施形態では、第1の通信プロキシが第2のキュー内のデータパケットの伝送を停止した後に、第1の通信プロキシは、第1の通信プロキシと第1のアプリケーションとの間の事前に確立されたプロセス間通信接続を経由して、データパケットを伝送することを再開するフロー制御信号を受信する。フロー制御信号を受信すると、第1の通信プロキシは、例えば第2のキュー内の全てのデータパケットを、伝送することを再開する。
いくつかの実施形態では、ブロック701〜704を実行するプロセスにおいて、第1の通信プロキシは、第2の通信プロキシが位置する第2のサーバからブロードキャストメッセージを受信してもよい。ブロードキャストメッセージは、第2のサーバ内の第2のアプリケーションが終了したことを示す。第1の通信プロキシは、受信したブロードキャストメッセージを第1のサーバ内のアプリケーションに送信してもよい。したがって、第2のアプリケーションが判断された場合、第2のアプリケーションの対応する第2のキューによってデータ接続内に占められたスペースもまた、リソースの無駄使いを避けるように開放することができる。
図9および図10は、TCP通信のための例示的なサーバを示すブロック図である。説明のために、サーバは、図3、図5および図6〜図8に示されたプロセス、図4におけるデータパケット形式、ならびに図2におけるTCP接続を参照して記載される。しかしながら、サーバは、異なるデータパケット形式および接続を含む異なるプロセスを実行してもよい。
いくつかの実施形態では、サーバは、組み込み型の双方向通信機能を有する。結果として、データパケットは、第1のサーバ内の第1のアプリケーションによって第2の通信プロキシに伝送されてもよいし、データパケットはまた、第2の通信プロキシによって第1のサーバ内の第1のアプリケーションにも伝送されてもよい。また説明のために、以下の段落では、第1のアプリケーションから第2の通信プロキシにデータパケットを伝送する機能モジュール、および第2の通信から第1のアプリケーションにデータパケットを伝送する機能モジュールを有するサーバをまず記載する。
図9は、例示的なTCP通信サーバ900の詳細を示す概略的なブロック図である。通信サーバ900は、任意の適切なシステムとして構成されてもよい。1つの例示的な構成において、通信サーバ900は、1つ以上のプロセッサ901、ネットワークインタフェース902、入出力インタフェース904、およびメモリ903を含む。
メモリ903は、ランダムアクセスメモリ(RAM)などの揮発性メモリおよび/または読み出し専用メモリ(ROM)もしくはフラッシュRAMなどの不揮発性メモリの形式のコンピュータ可読媒体を含んでもよい。メモリ903は、コンピュータ可読媒体の一例である。
コンピュータ可読媒体は、コンピュータ可読命令、データ構造、プログラムモジュール、もしくは他のデータなどの情報の記憶のために任意の方法または技術で実装された、揮発性および不揮発性の、取り外し可能および取り外し不可能な媒体を含む。コンピュータ記憶媒体の例としては、相変化メモリ(PRAM)、スタティックランダムアクセスメモリ(SRAM)、ダイナミックランダムアクセスメモリ(DRAM)、他の種類のランダムアクセスメモリ(RAM)、読み出し専用メモリ(ROM)、電気的消去可能でプログラム可能な読み出し専用メモリ(EEPROM)、フラッシュメモリもしくは他のメモリ技術、コンパクトディスク読み出し専用メモリ(CD−ROM)、デジタル多用途ディスク(DVD)もしくは他の光学式ストレージ、磁気カセット、磁気テープ、磁気ディスクストレージもしくは他の磁気ストレージデバイス、またはコンピューティングデバイスによるアクセスのための情報を記憶するために使用することができる任意の他の非伝送媒体が挙げられるが、これらに限定されない。本明細書中で定義されるように、コンピュータ可読媒体は、変調されたデータ信号および搬送波などの一時的な媒体を含まない。
メモリ903は、プログラムユニット905およびプログラムデータ911を含んでもよい。いくつかの実施形態では、プログラムユニット905は、受信ユニット906、アドレス解析ユニット907、伝送ユニット908、監視ユニット909および評価ユニット910を含んでもよい。
いくつかの実施形態では、受信ユニット90は、データパケットを第1のサーバ内の第1のアプリケーションから受信する。例えば、受信ユニット90は、第1の通信プロキシと第1のアプリケーションとの間の事前に確立されたプロセス間通信接続を経由して第1のアプリケーションによって伝送されたデータパケットを受信する。
アドレス解析ユニット90は、データパケット内の宛先アドレスを解析し、データパケットを受信する第2のアプリケーションが位置する第2のサーバのアドレスを判断してもよい。
伝送ユニット90は、第1の通信プロキシと第2の通信プロキシとの間の対応するキュー内にデータパケットを配置し、第1の通信プロキシと第2の通信プロキシとの間の事前に確立されたデータ接続を経由してデータパケットを第2の通信プロキシに伝送してもよい。例えば、データ接続が帯域幅要件内に入る場合、データパケットは、先入れ先出し技術を用いてキューから取り出されてもよい。次いで、データパケットはデータ接続を経由して第2の通信プロキシに伝送される。
いくつかの実施形態では、伝送ユニット90がデータパケットを伝送するとき、監視ユニット904はキュー内のデータパケットの量を監視してもよい。その量が、事前に規定された第1の閾値以上の場合、監視ユニット90は、データパケットの伝送を停止するために第1の制御信号を第1のアプリケーションに送信する。監視ユニット90が、データパケットの量が事前に規定された第2の閾値内にあることを判断すると、データパケットを伝送することを再開するために第2の制御信号を第1のアプリケーションに送信する。
いくつかの実施形態では、評価ユニット910は、第1の通信プロキシと第2の通信プロキシとの間の事前に確立された制御接続を経由してデータパケットを伝送することを停止するために、第3の制御信号が第2の通信プロキシから送信されたかどうかを判断してもよい。評価ユニット910が、そのような第3の制御信号が出ることを判断する場合、例えばデータパケットの全てをキューから伝送することを一時的に停止する。データパケットの伝送を再開することを示す第4の制御信号を第1の通信プロキシと第2の通信プロキシとの間の制御接続から受信すると、評価ユニット910は、例えばデータパケットの全てを、伝送することを再開する。
いくつかの実施形態では、第1のアプリケーションが終了したことを判断すると、伝送ユニット90は、第1の通信プロキシとの確立されたデータ接続を有する第2の通信プロキシを示すブロードキャストメッセージを送信してもよい。
図10は、TCP通信サーバの例示的なプログラムユニット1000の詳細を示す概略的なブロック図である。プログラムユニット1000は、受信ユニット1001、アドレス解析ユニット1002、伝送ユニット1003、監視ユニット1004および評価ユニット1005を含んでもよい。
受信ユニット1001は、第2のサーバ内の第2のアプリケーションからの、第2の通信プロキシの伝送したデータパケットを第1の通信プロキシと第2の通信プロキシとの間の事前に確立されたデータ接続を経由して受信する。
アドレス解析ユニット1002は、受信ユニット901から受信されたデータパケット内の宛先アドレスを解析し、第1のアプリケーションのそのアドレスを判断してもよい。
伝送ユニット1003は、受信されたデータパケットを第1の通信プロキシと第1のアプリケーションとの間の第2のキュー内に配置し、第1の通信プロキシと第1のアプリケーションとの間の事前に確立されたプロセス間通信接続を経由してデータパケットを第1のアプリケーションに送信してもよい。
いくつかの実施形態では、伝送ユニット1003は、第1の通信プロキシと第1のアプリケーションとの間のプロセス間通信接続が帯域幅要件を満たす場合、先入れ先出し技術を用いてデータパケットを第2のキューから取り出してもよい。伝送ユニット1003は、第1の通信プロキシと第1のアプリケーションとの間のプロセス間通信接続を用いてデータパケットを第1のアプリケーションに送信してもよい。
いくつかの実施形態では、伝送ユニット1003が、第1の通信プロキシと第1のアプリケーションとの間のプロセス間通信接続を経由してデータパケットを第1のアプリケーションに伝送する場合、監視ユニット1004は、第2の値(value)内のデータパケットの量を監視する。データパケットの量が第1の規定された閾値以上の場合、監視ユニット1004は、第1の通信プロキシと第2の通信プロキシとの間の事前に確立された制御接続を経由してデータパケットを伝送することを停止するために、第1の制御信号を第2の通信プロキシに送信する。データパケットの量が第2の事前に規定された閾値内にある場合、監視ユニット1004は、第1の通信プロキシと第2の通信プロキシとの間の事前に確立された制御接続を経由してデータパケットを伝送することを再開するために、第2の制御信号を第2の通信プロキシに送信する。
いくつかの実施形態では、伝送ユニット1003が、第1の通信プロキシと第1のアプリケーションとの間の事前に確立されたプロセス間通信接続を経由してデータパケットを第1のアプリケーションに送信する場合、評価ユニット1005は、事前に確立されたプロセス間通信接続を経由するデータパケットの伝送を停止することを示す第3の制御信号を判断する。評価ユニット1005が、第3の制御信号が受信されたことを判断する場合、伝送ユニット1003は、例えば第2のキューからのデータパケットの全てを、伝送することを一時的に停止する。
いくつかの実施形態では、評価ユニット1005は、事前に確立されたプロセス間通信プロセスを経由する全てのデータパケットの伝送の再開を示す第4の制御信号を判断する。第8の制御信号が受信された後、伝送ユニット103は、例えば第2のキュー内の全てのデータパケットを、伝送することを再開する。
いくつかの実施形態では、受信ユニット1001は、第2のアプリケーションが終了したというブロードキャストメッセージを第2のサーバから受信してもよい。受信ユニット1001によって、ブロードキャストメッセージを受信すると、伝送ユニット1003は、受信されたブロードキャストメッセージをサーバ内の第1のアプリケーション(例えば、図2内のA〜D)に送信してもよい。
説明のために、図9および図10において記載されたブロックの任意の番号は、上記プロセスを実施するために任意の順で、および/または並行して組み合わされることができる。例えば、機能モジュールは、90および1001を含む受信ユニット、90および1002を含むアドレス解析ユニット、90および1003を含む伝送ユニット、90および1004を含む監視ユニットならびに910および1005を含む評価ユニットを含むことができる。
本開示は、第1のサーバ内の全てのアプリケーションおよび第2のサーバ内の全てのアプリケーションが、第1の通信プロキシと第2の通信プロキシとの間のデータ接続を経由してデータを交換することが可能な、伝送制御プロトコルおよびサーバを提供する。
本開示はまた、第1の通信プロキシと第2の通信との間の確立されたデータ接続を経由する、第1のサーバ内の第1のアプリケーションと第2のサーバ内の第2のアプリケーションとの間のデータ通信チャネルも提供する。多くのTCP接続がTCP通信相手間に確立されることが必要である従来の技術と比較して、本開示によって提供されたTCP通信プロトコルおよびサーバは、第1のアプリケーションと第2のアプリケーションとの間の接続の実際の数を大幅に減らして、TCP接続を維持するシステムリソースを効果的に節約する。更に、データ接続が安定しているので、従来の技術の下で生じる2つのアプリケーション間の頻繁な接続および切断によってもたらされる遅延を阻止する。したがって、本開示によって提供されたTCP通信プロトコルおよびサーバは、通信効率も高める。
更に、本開示によって提供されたTCP通信プロトコルおよびサーバは、第1の通信プロキシと第2の通信プロキシとの間の制御接続を同時に確立することを可能にする。制御接続において、フロー制御信号は、データ伝送フローが許容範囲を超えないこと、および、データパケットの伝送が第1のアプリケーションと第2のアプリケーションとの間で信頼性の高いことを確実にするために伝送される。
当業者は、本開示に提供された実施形態に変更および改変を行うことが可能であろう。当業者が理解するであろういかなる変更および改変も、本開示の範囲内にある。

Claims (18)

  1. コンピュータ実行方法であって、
    第1のサーバ上の第1のアプリケーションから送信され、第2のサーバ上の第2のアプリケーションに指定されたデータパケットを受信することと、
    前記第2のサーバに関連付けられた宛先アドレスを判断するために前記データパケットを解析することと、
    前記宛先アドレスに基づいて、前記第1のサーバ上の第1の通信プロキシと前記第2のサーバ上の第2の通信プロキシとの間に位置し、前記第2のアプリケーションに対応するキュー内に、前記データパケットを配置することと、
    前記第1の通信プロキシと前記第2の通信プロキシとの間の事前に確立されたデータ接続を経由して前記データパケットを前記第2の通信プロキシに伝送することと、
    前記第1のアプリケーションが終了したことを判断することと、
    前記第1のアプリケーションが終了したことを示すブロードキャストメッセージを前記第1の通信プロキシに接続された1つ以上の通信プロキシに送信することと
    を含む、コンピュータ実行方法。
  2. 前記データパケットは、ソースフィールド、宛先フィールドおよびデータパケット優先度を含み、前記キュー内に前記データパケットを配置することは、前記データパケット優先度に基づいて前記キュー内に前記データパケットを配置することを含む、請求項1のコンピュータ実行方法。
  3. 前記データパケットは、前記第1のアプリケーションを示す2個組を含むソースフィールドと、前記第2のアプリケーションを示す別の2個組を含む宛先フィールドとを含む、請求項1のコンピュータ実行方法。
  4. 前記データパケットは、ソースフィールドと宛先フィールドとを含み、前記ソースフィールドは、インターネットプロトコル(IP)アドレスと前記第1のアプリケーションに関連付けられた固有のアプリケーションIDとを含む2個組を含み、前記宛先フィールドは、別のIPアドレスと前記第2のアプリケーションに関連付けられた別の固有のアプリケーションIDとを含む別の2個組を含む、請求項1のコンピュータ実行方法。
  5. 前記データパケットを受信することは、前記第1の通信プロキシと前記第1のアプリケーションとの間の事前に確立されたプロセス間通信接続を経由して前記データパケットを受信することを含む、請求項1のコンピュータ実行方法。
  6. 前記事前に確立されたデータ接続が帯域幅要件を満たすことを判断することと、
    先入れ先出し技術に基づいて前記キューから前記データパケットを取り出すことと、
    を更に含む、請求項1のコンピュータ実行方法。
  7. 前記キュー内のデータパケットの量が、第1の事前に設定された閾値を超えることを判断することと、
    前記キュー内のデータパケットの量が第1の事前に設定された閾値を超えるという判断に応じて、前記データパケットの前記伝送を終了するために、第1の制御信号を前記第1のアプリケーションに送信することと、
    を更に含む、請求項1のコンピュータ実行方法。
  8. 前記キュー内の前記データパケットの前記量が、前記第1の事前に設定された閾値よりも少ない第2の事前に設定された閾値内にあることを判断することと、
    前記キュー内の前記データパケットの前記量が前記第2の事前に設定された閾値内にあるという判断に応じて、前記データパケットの前記伝送を再開するために、第2の制御信号を前記第1のアプリケーションに送信することと、
    を更に含む、請求項7のコンピュータ実行方法。
  9. 前記第1の通信プロキシが、前記第1の通信プロキシと前記第2の通信プロキシとの間の事前に確立された制御接続を経由して、データパケットの伝送の終了を示す第1の制御信号を受信することを判断することと、
    前記第1の通信プロキシが前記第1の制御信号を受信するという判断に応じて、前記キュー内の前記データパケットの前記伝送を終了することと、
    を更に含む、請求項1のコンピュータ実行方法。
  10. 前記第1の通信プロキシが、前記第1の通信プロキシと前記第2の通信プロキシとの間の前記事前に確立された制御接続を経由して、前記データパケットの前記伝送の再開を示す第2の制御信号を受信することを判断することと、
    前記第1の通信プロキシが第2の制御信号を受信するという判断に応じて、前記キュー内の前記データパケットの前記伝送を再開することと、
    を更に含む、請求項9のコンピュータ実行方法。
  11. コンピュータ実行方法であって、
    第1のサーバ上の第1の通信プロキシによって、前記第1の通信プロキシと第2のサーバ上の第2の通信プロキシとの間の事前に確立されたデータ接続を経由して、前記第1のサーバ上の第1のアプリケーションに関連付けられた宛先アドレスを含むデータパケットを前記第2のサーバ上の第2のアプリケーションから受信することと、
    前記第1の通信プロキシによって、前記宛先アドレスを判断することと、
    前記第1の通信プロキシによって、前記宛先アドレスに基づいて前記第1の通信プロキシと前記第1のアプリケーションとの間のキュー内に前記データパケットを配置することと、
    前記第1の通信プロキシによって、前記第1の通信プロキシと前記第1のアプリケーションとの間の事前に確立されたプロセス間通信接続を経由して、前記データパケットを前記第1のアプリケーションに伝送することと、
    前記第1の通信プロキシによって、前記第2のアプリケーションが終了したことを判断することと、
    前記第1の通信プロキシによって、前記第2のアプリケーションが終了したことを示すブロードキャストメッセージを、前記第1の通信プロキシに接続され、かつ前記第1のサーバ上にある前記第1のアプリケーションに送信することと、
    を含む、コンピュータ実行方法。
  12. 前記事前に確立されたデータ接続が帯域幅要件を満たすことを判断することと、
    先入れ先出し技術に基づいて前記キューから前記データパケットを取り出すことと、
    を更に含む、請求項11のコンピュータ実行方法。
  13. 前記第1の通信プロキシによって、前記キュー内のデータパケットの量が第1の事前に設定された閾値を超えることを判断することと、
    前記キュー内のデータパケットの量が第1の事前に設定された閾値を超えるという判断に応じて、前記データパケットの前記伝送を終了するために、前記事前に確立されたデータ接続を経由して第1の制御信号を前記第2の通信プロキシに送信することと、
    を更に含む、請求項11のコンピュータ実行方法。
  14. 前記キュー内の前記データパケットの前記量が、前記第1の事前に設定された閾値よりも少ない第2の事前に設定された閾値内にあることを判断することと、
    前記キュー内の前記データパケットの前記量が前記第2の事前に設定された閾値内にあるという判断に応じて、前記データパケットの前記伝送を再開するために、第2の制御信号を第2の通信プロキシに送信することと、を更に含む、請求項13のコンピュータ実行方法。
  15. 前記第1の通信プロキシが、前記事前に確立されたプロセス間通信接続を経由して、データパケットの伝送の終了を示す第1の制御信号を受信することを判断することと、
    前記第1の通信プロキシが前記第1の制御信号を受信するという判断に応じて、前記キュー内の前記データパケットの前記伝送を一時的に終了することと、
    を更に含む、請求項11のコンピュータ実行方法。
  16. 前記第1の通信プロキシが、前記事前に確立されたプロセス間通信接続を経由して、前記データパケットの前記伝送の再開を示す第2の制御信号を受信することを判断することと、
    前記第1の通信プロキシが第2の制御信号を受信するという判断に応じて、前記キュー内の前記データパケットの前記伝送を一時的に再開することと、
    を更に含む、請求項15のコンピュータ実行方法。
  17. システムであって、
    メモリと、
    1つ以上のプロセッサと、
    前記メモリ内に記憶され、かつ前記1つ以上のプロセッサによって実行可能な、第1のサーバ上の第1のアプリケーションからデータパケットを受信するための受信ユニットであって、前記データパケットが、前記データパケットが指定される第2のアプリケーションを含む第2のサーバに関連付けられた宛先アドレスを含む、受信ユニットと、
    前記メモリ内に記憶され、かつ前記1つ以上のプロセッサによって実行可能な、前記宛先アドレスを判断するためのアドレス解析ユニットと、
    前記メモリ内に記憶され、かつ前記1つ以上のプロセッサによって実行可能な、伝送ユニットであって、
    前記宛先アドレスに基づいて、前記第1のサーバ上の第1の通信プロキシと、前記第2のサーバ上にある第2の通信プロキシとの間に位置し、前記第2のアプリケーションに対応するキュー内に前記データパケットを配置し、かつ
    前記第1の通信プロキシと前記第2の通信プロキシとの間の事前に確立されたデータ接続を経由して前記データパケットを前記第2の通信プロキシに伝送する、伝送ユニットと、を備え、
    前記伝送ユニットは、前記第1のアプリケーションが終了したという判断に応答して、前記第1のアプリケーションが終了したことを示すブロードキャストメッセージを前記第1の通信プロキシに接続された1つ以上の通信プロキシに送信するようにさらに構成される、システム。
  18. システムであって、
    メモリと、
    1つ以上のプロセッサと、
    前記メモリ内に記憶され、かつ前記1つ以上のプロセッサによって実行可能な、第1のサーバ上の第1の通信プロキシと第2のサーバ上の第2の通信プロキシとの間の事前に確立されたデータ接続を経由して前記第2のサーバ上の第2のアプリケーションからデータパケットを受信するための受信ユニットであって、前記データパケットが前記第1のサーバ上の第1のアプリケーションに指定される、受信ユニットと、
    前記メモリ内に記憶され、かつ前記1つ以上のプロセッサによって実行可能な、前記第1のアプリケーションに関連付けられた宛先アドレスを判断するように前記データパケットを解析するためのアドレス解析ユニットと、
    前記メモリ内に記憶され、かつ前記1つ以上のプロセッサによって実行可能な、伝送ユニットであって、
    前記宛先アドレスに基づいて、前記第1の通信プロキシと前記第1のサーバ上の前記第1のアプリケーションとの間のキュー内に前記データパケットを配置し、かつ
    前記第1の通信プロキシと前記第1のアプリケーションとの間の事前に確立されたプロセス間通信接続を経由して前記データパケットを前記第1のアプリケーションに伝送する、伝送ユニットと、を備え、
    前記伝送ユニットは、前記第2のアプリケーションが終了したという判断に応答して、前記第2のアプリケーションが終了したことを示すブロードキャストメッセージを、前記第1のサーバ上の前記第1のアプリケーションに送信するようにさらに構成される、システム。
JP2013534976A 2010-10-19 2011-10-14 伝送制御プロトコルの通信方法およびサーバ Active JP5908915B2 (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
CN201010515928.5A CN102457537B (zh) 2010-10-19 2010-10-19 一种传输控制协议的通信方法及服务器
CN201010515928.5 2010-10-19
PCT/US2011/056430 WO2012054347A1 (en) 2010-10-19 2011-10-14 Communication method and server of transmission control protocol

Related Child Applications (1)

Application Number Title Priority Date Filing Date
JP2016060268A Division JP6240248B2 (ja) 2010-10-19 2016-03-24 伝送制御プロトコルの通信方法およびサーバ

Publications (2)

Publication Number Publication Date
JP2013545375A JP2013545375A (ja) 2013-12-19
JP5908915B2 true JP5908915B2 (ja) 2016-04-26

Family

ID=45975573

Family Applications (2)

Application Number Title Priority Date Filing Date
JP2013534976A Active JP5908915B2 (ja) 2010-10-19 2011-10-14 伝送制御プロトコルの通信方法およびサーバ
JP2016060268A Active JP6240248B2 (ja) 2010-10-19 2016-03-24 伝送制御プロトコルの通信方法およびサーバ

Family Applications After (1)

Application Number Title Priority Date Filing Date
JP2016060268A Active JP6240248B2 (ja) 2010-10-19 2016-03-24 伝送制御プロトコルの通信方法およびサーバ

Country Status (7)

Country Link
US (1) US8750308B2 (ja)
EP (1) EP2630586B1 (ja)
JP (2) JP5908915B2 (ja)
CN (1) CN102457537B (ja)
HK (1) HK1166564A1 (ja)
TW (1) TWI555363B (ja)
WO (1) WO2012054347A1 (ja)

Families Citing this family (16)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP5772380B2 (ja) * 2011-08-11 2015-09-02 富士通株式会社 通信装置、通信方法、および通信プログラム
CN102780764B (zh) * 2012-06-28 2015-12-16 北京奇虎科技有限公司 一种代理通信系统及方法
US9253262B2 (en) * 2013-01-24 2016-02-02 Rovi Guides, Inc. Systems and methods for connecting media devices through web sockets
US9590885B1 (en) 2013-03-13 2017-03-07 Sprint Communications Company L.P. System and method of calculating and reporting of messages expiring from a queue
US9432445B1 (en) * 2013-05-17 2016-08-30 Sprint Communications Company L.P. System and method of maintaining an enqueue rate of data messages into a set of queues
JP6105163B2 (ja) * 2013-06-27 2017-03-29 徐 正 煥SEO, Jeong Hoan インターネットプロトコルを利用したサービスのための多重連結システム及びその方法
US10885583B2 (en) * 2013-12-19 2021-01-05 Chicago Mercantile Exchange Inc. Deterministic and efficient message packet management
WO2016049919A1 (zh) * 2014-09-30 2016-04-07 华为技术有限公司 一种终端、基站、系统及传输应用数据的方法
CN104410675A (zh) * 2014-11-12 2015-03-11 北京奇虎科技有限公司 数据传输方法、数据系统及相关装置
CN107656817A (zh) * 2016-07-25 2018-02-02 阿里巴巴集团控股有限公司 程序间进行数据传输的方法以及装置
TWI588665B (zh) * 2016-12-14 2017-06-21 英業達股份有限公司 伺服器
US10749913B2 (en) * 2018-09-27 2020-08-18 Intel Corporation Techniques for multiply-connected messaging endpoints
CN110891032B (zh) * 2019-11-27 2023-06-30 佛山市蠢材科技有限公司 一种人脸数据并行下发方法、装置及电子设备
CN112165430B (zh) * 2020-09-24 2024-02-13 阿波罗智联(北京)科技有限公司 数据路由方法、装置、设备以及存储介质
CN112996321B (zh) * 2021-03-05 2022-08-02 马乐志 一种基于正则表达式匹配的智能终端的多表数据集抄方法
US11576056B1 (en) * 2021-05-10 2023-02-07 T-Mobile Innovations Llc Unified data repository (UDR) messaging in a wireless communication network

Family Cites Families (27)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH07287678A (ja) * 1994-04-18 1995-10-31 Nec Corp 動的通信管理方式
US5784559A (en) * 1995-11-06 1998-07-21 Sun Microsystems, Inc. Full duplex flow control for ethernet networks
EP0885507B1 (de) 1996-03-08 2004-05-19 Siemens Aktiengesellschaft Verfahren zur übertragung von datenpaketen vorgebbarer prioritätsklassen im ethernet von einer ersten anordnung zu mindestens einer zweiten anordnung
US6757277B1 (en) * 1999-01-26 2004-06-29 Siemens Information And Communication Networks, Inc. System and method for coding algorithm policy adjustment in telephony-over-LAN networks
JP2001197126A (ja) * 2000-01-11 2001-07-19 Toshiba Corp 通信システム及び網間接続装置のパケット送出量制御方法
US20020078135A1 (en) 2001-03-15 2002-06-20 Ibm Corporation Method and apparatus for improving the operation of an application layer proxy
US7480707B2 (en) 2001-05-16 2009-01-20 International Business Machines Corporation Network communications management system and method
JP4087408B2 (ja) * 2003-07-18 2008-05-21 富士通株式会社 パケット転送方法及び装置
IES20040347A2 (en) 2004-05-18 2005-11-30 Flightman Res Ltd A method for bi-directional exchange of data based on user-defined policies for the selection of a preferred datalink
JP2005332085A (ja) 2004-05-18 2005-12-02 Fujitsu Ltd コンピュータネットワークシステムにおける通信経路制御プログラム及び装置
JP4606984B2 (ja) * 2005-09-29 2011-01-05 三菱電機株式会社 フロー制御方法、および中継装置
US20070127513A1 (en) 2005-12-06 2007-06-07 Ramesh Sudini Starvation reduction in TCP/IP applications
US7660321B2 (en) * 2006-03-01 2010-02-09 Alcatel-Lucent Usa Inc. System and method for prioritizing session initiation protocol messages
JP4705863B2 (ja) 2006-03-07 2011-06-22 ソフトバンクBb株式会社 セッション制御システム、セッション制御方法及び移動端末装置
KR20090083339A (ko) * 2006-09-13 2009-08-03 아산키아 네트웍스 인코포레이티드 다중경로 환경에서 전송 프로토콜의 성능을 향상시키기 위한 시스템 및 방법
US20080075096A1 (en) 2006-09-22 2008-03-27 Enthenergy, Llc Remote access to secure network devices
CN101569145A (zh) * 2006-12-20 2009-10-28 日本电气株式会社 通信终端、终端、通信系统、通信方法和程序
US20080175232A1 (en) * 2007-01-18 2008-07-24 Tsai Wei K System and method for multi-service virtual networks by integration, convergence, zero opportunity cost, and distributed user control
CN101035037B (zh) * 2007-04-17 2011-07-06 华为技术有限公司 检测网络通信质量的方法、系统及相关装置
CN101547134B (zh) * 2008-03-27 2011-12-28 北京铭万互联科技有限公司 一种udp连接和tcp连接相互转化的方法、系统及中转服务器
JP5178539B2 (ja) * 2008-04-04 2013-04-10 キヤノン株式会社 情報処理装置、情報処理装置の制御方法、セッション管理システム並びにプログラム
JP5074290B2 (ja) * 2008-05-13 2012-11-14 株式会社日立国際電気 冗長切替システム、冗長管理装置およびアプリケーション処理装置
US8739179B2 (en) 2008-06-30 2014-05-27 Oracle America Inc. Method and system for low-overhead data transfer
JPWO2010032533A1 (ja) 2008-09-19 2012-02-09 日本電気株式会社 ネットワークプロトコル処理システム、及びネットワークプロトコル処理方法
US7873060B2 (en) * 2008-10-18 2011-01-18 Fortinet, Inc. Accelerating data communication using tunnels
CN101789895B (zh) * 2009-01-24 2012-12-12 华为技术有限公司 一种发送/接收数据报文的方法及装置
US8122140B2 (en) * 2009-03-27 2012-02-21 Wyse Technology Inc. Apparatus and method for accelerating streams through use of transparent proxy architecture

Also Published As

Publication number Publication date
HK1166564A1 (zh) 2012-11-02
JP2013545375A (ja) 2013-12-19
WO2012054347A1 (en) 2012-04-26
EP2630586B1 (en) 2024-08-28
CN102457537B (zh) 2015-11-25
EP2630586A1 (en) 2013-08-28
US20130195108A1 (en) 2013-08-01
JP6240248B2 (ja) 2017-11-29
TWI555363B (zh) 2016-10-21
EP2630586A4 (en) 2017-12-27
CN102457537A (zh) 2012-05-16
JP2016146658A (ja) 2016-08-12
TW201225606A (en) 2012-06-16
US8750308B2 (en) 2014-06-10

Similar Documents

Publication Publication Date Title
JP6240248B2 (ja) 伝送制御プロトコルの通信方法およびサーバ
US8392555B2 (en) Push-back mechanism for pub/sub brokers
US8806030B2 (en) Multichannel connections in file system sessions
EP1784735B1 (en) Apparatus and method for supporting memory management in an offload of network protocol processing
CA2573162C (en) Apparatus and method for supporting connection establishment in an offload of network protocol processing
US20040024861A1 (en) Network load balancing
KR101169086B1 (ko) 웹 서비스 환경에서 신뢰성 있는 메시지 전달시 연결지속성을 검증 및 유지하는 방법
CN109088829B (zh) 一种数据调度方法、装置、存储介质及设备
US20120054362A1 (en) Mechanism for autotuning mass data transfer from a sender to a receiver over parallel connections
WO2022001175A1 (zh) 数据包发送的方法、装置
WO2022148363A1 (zh) 数据传输方法及数据传输服务器
US10812606B2 (en) Supporting communications in a stream processing platform
US7725556B1 (en) Computer system with concurrent direct memory access
US9823951B2 (en) Link optimization for callout request messages
CN116319569A (zh) 网络参数更新方法、网络参数更新装置、介质及电子设备
JP2016515361A (ja) アプリケーションにより提供される送信メタデータに基づくネットワーク送信調整
EP1744495B1 (en) Round trip time estimation
JP2009171305A (ja) 通信装置およびプログラム
US11882049B2 (en) Managing network latency using buffer fill control
CN114095129B (zh) 一种移动端游戏网络传输的通信方法及系统
CN116567105A (zh) 一种基于数据平面开发套件的数据包处理方法和系统
CN118233517A (zh) 业务多活的数据访问方法、客户端、代理服务设备及网络通信系统
KR20210073034A (ko) 효율적 메시지 유실 감지 및 재전송을 처리하는 dds 미들웨어 시스템

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20140919

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20150409

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20150421

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20150716

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20151104

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20160126

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20160324

R150 Certificate of patent or registration of utility model

Ref document number: 5908915

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250