JP4714572B2 - ウェブサービスのための信頼性のあるメッセージングプロトコルを使用したメッセージの効率的な転送 - Google Patents

ウェブサービスのための信頼性のあるメッセージングプロトコルを使用したメッセージの効率的な転送 Download PDF

Info

Publication number
JP4714572B2
JP4714572B2 JP2005344187A JP2005344187A JP4714572B2 JP 4714572 B2 JP4714572 B2 JP 4714572B2 JP 2005344187 A JP2005344187 A JP 2005344187A JP 2005344187 A JP2005344187 A JP 2005344187A JP 4714572 B2 JP4714572 B2 JP 4714572B2
Authority
JP
Japan
Prior art keywords
message
messages
window size
message window
acceptor
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
JP2005344187A
Other languages
English (en)
Other versions
JP2006166439A (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.)
Microsoft Corp
Original Assignee
Microsoft 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 Microsoft Corp filed Critical Microsoft Corp
Publication of JP2006166439A publication Critical patent/JP2006166439A/ja
Application granted granted Critical
Publication of JP4714572B2 publication Critical patent/JP4714572B2/ja
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06QINFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES; SYSTEMS OR METHODS SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES, NOT OTHERWISE PROVIDED FOR
    • G06Q50/00Information and communication technology [ICT] specially adapted for implementation of business processes of specific business sectors, e.g. utilities or tourism
    • G06Q50/40Business processes related to the transportation industry
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L47/00Traffic control in data switching networks
    • H04L47/10Flow control; Congestion control
    • 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/11Identifying congestion
    • 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/25Flow control; Congestion control with rate being modified by the source upon detecting a change of network conditions
    • 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/263Rate modification at the source after receiving feedback
    • 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/27Evaluation or update of window size, e.g. using information derived from acknowledged [ACK] packets
    • 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/30Flow control; Congestion control in combination with information about buffer occupancy at either end or at transit nodes
    • 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/30Definitions, standards or architectural aspects of layered protocol stacks
    • H04L69/32Architecture of open systems interconnection [OSI] 7-layer type protocol stacks, e.g. the interfaces between the data link level and the physical level
    • H04L69/322Intralayer communication protocols among peer entities or protocol data unit [PDU] definitions
    • H04L69/329Intralayer communication protocols among peer entities or protocol data unit [PDU] definitions in the application layer [OSI layer 7]
    • 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/02Protocols based on web technology, e.g. hypertext transfer protocol [HTTP]

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Computer Security & Cryptography (AREA)
  • Business, Economics & Management (AREA)
  • Health & Medical Sciences (AREA)
  • Economics (AREA)
  • General Health & Medical Sciences (AREA)
  • Human Resources & Organizations (AREA)
  • Marketing (AREA)
  • Primary Health Care (AREA)
  • Strategic Management (AREA)
  • Tourism & Hospitality (AREA)
  • Physics & Mathematics (AREA)
  • General Business, Economics & Management (AREA)
  • General Physics & Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • Data Exchanges In Wide-Area Networks (AREA)
  • Computer And Data Communications (AREA)
  • Communication Control (AREA)

Description

本発明は、一般にウェブサービスの信頼性のあるメッセージングに関する。詳細には、本発明は、2つのエンドポイント間のフロー制御、およびこのネットワーク配線(network wire)にわたる輻輳制御のためのウェブサービスについての信頼性のあるメッセージングプロトコルによるメッセージの効率的な転送を提供する。
コンピュータネットワークは、1台のコンピュータまたはデバイス(以降、「コンピューティングデバイス」または「コンピューティングシステム」と呼ぶ)が電子メッセージを使用して別のコンピューティングシステムとネットワークを介して通信できるようにすることにより、通信し、情報にアクセスする我々の能力を拡大した。コンピューティングシステム間で電子メッセージを転送するときに、この電子メッセージは、多くの場合、電子メッセージ内のデータに関するオペレーション(例えば、構文解析(parsing)、ルーティング、フロー制御など)を行うプロトコルスタックを通過することになる。このOSI(Open System Interconnect)モデルは、プロトコルスタックを実装するためのネットワークフレームワークの一例である。
このOSIモデルは、電子メッセージを転送するためのオペレーションを7つの異なる層へと分解し、各層がこのデータ転送プロセス中のある特定のオペレーションを実行するように指定されている。プロトコルスタックは、可能性としてこれらの層のそれぞれを実装することもできるが、多くのプロトコルスタックでは、ネットワークにわたってデータを転送する際の使用のために選択的な層のみを実装している。データが、コンピューティングシステムから送信されるときに、このデータは、アプリケーション層から出て、より低い中間層に渡され、次いでネットワーク上に伝えられる。データがネットワークから受信されるときには、このデータは、物理層に入力され、より高い中間層に渡され、次いで最終的にそのアプリケーション層で受信される。このアプリケーション層(最上位層)は、アプリケーションおよびエンドユーザの処理をサポートする役割を担う。さらに、アプリケーション層内には、いくつかの他の層(例えば、SOAP(Simple Open Access Protocol)層)が存在することもある。ほとんどのプロトコルスタックによって組み込まれる他の層は、トランスポート層である。トランスポート層の一例は、TCP(Transmission Control Protocol)である。
WS(Web Service)は、コンピューティングシステム間の通信を進歩させる際の原動力になっており、我々がソフトウェアを構築し使用するやり方をすっかり変えようとしている。ウェブサービスは、アプリケーションにデータを共有させ、さらに強力なこととして、他のアプリケーションの機能を呼び出させ、これらのアプリケーションがどのように構築されたか、これらのアプリケーションがどのようなオペレーティングシステムまたはプラットフォーム上で実行されるか、そしてどのようなデバイスを使用してこれらのアプリケーションにアクセスするかに関係なくこれを行う。ウェブサービスは、SOAP、XML(eXtensible Markup Language)、UDDI(Universal,Description,Discovery and Integration)、WSDL(Web Service Description Language)などを含む業界標準プロトコルを用いて、インターネットを介して呼び出される。ウェブサービスは、互いに独立したままであるが、これらのウェブサービスは、それら自体を特定のタスクを行う協調グループにゆるくリンクすることができる。
現在のWS技術は、イニシエータ(例えば、クライアント)とアクセプタ(例えば、サービス)の間の直接SOAP−メッセージ通信を提供している。一般的な双方向メッセージングの場合、SOAP要求メッセージが、イニシエータからアクセプタに送信され、SOAPリプレイメッセージが、それに応答して送信される。エンドポイント間の別の通信変形形態は、単方向メッセージであり、この場合には、イニシエータは、メッセージを応答なしでアクセプタに送信する。
新興のWSアーキテクチャの重要な利点は、統合された相互運用可能なソリューションを提供することができることである。しかし、ウェブサービスは、インターネットなど信頼性のない通信チャネルを経由して異なる企業、起点、および他のサービスプロバイダから様々なサービスを提供するので、WSの信頼性は、ますます重要なファクタになりつつある。WSの信頼性は、それだけには限定されないが、ウェブサービスエンドポイントの信頼性、ウェブサービスがアクセスされる通信チャネルの信頼性特性、性能特性およびフォールトトレランス特性、ならびにウェブサービスが同時クライアントアクセスを処理することができる程度を含むいくつかのファクタによって影響を受ける。
これらのメッセージ(例えば、SOAPメッセージ)をエンドポイント間で交換する、信頼性のあるトランスポートプロトコルを選ぶことにより、ウェブサービスの信頼性のあるメッセージングを実現しようとする試みが行われている。例えば、メッセージキューなどの信頼性のあるメッセージングトランスポートを使用して、イニシエータとアクセプタの間でメッセージを確実に配信することができる。メッセージキュー通信技術により、異なるシステム上のアプリケーションは、キューにメッセージを送信し、信頼性についての障害にわたって持続するキューからメッセージを読み取ることにより、互いに通信することができるようになる。
キューイングシステムは、SOAPメッセージを確実に伝えるために使用することができるトランスポートを提供するが、このようなシステムには、いくつかの欠点が存在する。例えば、これらのシステムは、要求(および場合によってはそれらの応答)が転送され、分離して処理される非同期オペレーションについてのソリューションを提供する。したがって、これらのシステムは、通常、リソースの点で重く、耐久性のあるトランザクション処理メッセージストアを有し、展開、プログラミングモデル、および管理がかなり複雑となる複数の仲介手段を伴う。すべては、信頼性のある直接通信には不必要であり、レイテンシを最小化する目標からはそれている。さらに、このプログラムモデルは、要求−応答スタイルのプログラミングまたはセッションを直接サポートしない。したがって、キュー通信モデルは、現行の「インタラクティブ」なウェブサービスモデルとは異なり、クリティカルな「接続」シナリオおよび「インタラクティブ」アプリケーションには対処していない。例えば、応答がタイムリに期待される場合や、分散したトランザクションコンテキストがイニシエータとアクセプタの間で共有される必要がある場合には、あまり適していない。
基本的に信頼性のないトランスポートプロトコルを介して信頼性のある転送層、例えば信頼性のあるHTTPまたはHTTPRを定義する試みも行われている。しかし、このソリューション(ならびにキューイングソリューション)を厄介なものにする共通の問題は、特定の信頼性のあるトランスポートプロトコルがイニシエータとアクセプタの間の通信のために使用される場合にしか、信頼性のあるメッセージングは達成できないことである。ウェブサービスの基本的な性質は、特定のベンダプラットフォーム、実装言語、および特定のトランスポートプロトコルからの独立を求める。一般的なケースでは、イニシエータが特定のプロトコルを使用してアクセプタに直接にメッセージを送信することができない(例えば、アクセプタがこのプロトコルをサポートしていない)こともあるし、あるいはメッセージが送信ノードを離れた後にその宛先ノードに到着するのに先立って、複数のホップを通過する必要がある場合もある。特定のホップに関与する2つのノード間の接続性の性質によっては、信頼性のあるメッセージング特性を提供しない適切なトランスポートプロトコルが選ばれざるを得ないこともある。
仲介手段はまた、プロトコルスタック中の様々なレベルに存在し、それゆえ完全なエンドツーエンドの信頼性を提供できないこともある。例えば、トランスポートプロトコルは、より低いレベルの仲介手段(例えば、IPレベルの仲介手段−例えば、IPルータ)にわたる信頼性を提供することができる。しかし、トランスポートプロトコルは、SOAP仲介手段、またはアプリケーション層で終了することもある。したがって、トランスポートプロトコルは、仲介手段にわたる信頼性、すなわちこのアプリケーション層にわたるエンドツーエンドの信頼性を提供することができないこともある。
さらに最近では、(以下で、「RM−WSプロトコル」と呼ぶ)ウェブサービスの様々な信頼性のあるメッセージングプロトコル、例えばWSReliableMessagingが、現行の信頼性のあるメッセージングシステムの上で特定した欠陥に対するソリューションを提供している。これらのプロトコルは、ソフトウェアコンポーネント障害、システム障害、またはネットワーク障害の存在下において、エンドポイントアプリケーション間をメッセージが確実に配信され得るようにするトランスポート不可知論的(transport agnostic)接続プロトコルである。したがって、RM−WSプロトコルは、イニシエータとアクセプタの間の信頼性のあるエンドツーエンドのセッション指向通信についてのソリューションを提供する。
これらのRM−WSプロトコルは、TCPが、IP(Internet Protocol)ルータおよび複数のネットワークにわたってTCP送信側からTCP受信側へのバイトのストリームの信頼性があり、正に一度だけの順序正しい配信を提供する点でTCPに類似している。WSについての信頼性のあるメッセージングプロトコルは、複数の仲介手段(SOAPレベル仲介手段を含む)、トランスポートおよび接続にわたるメッセージについて同等以上のものを提供する(注:転送の単位は、メッセージであり、バイトではない)。TCPプロトコルもRM−WSプロトコルも共に「信頼性のある」プロトコルであるが、RM−WSは、OSIモデルにおいてアプリケーション層またはSOAP層に存在するので、RM−WSプロトコルは、データを転送するのに使用されるトランスポートプロトコルに関係なく信頼性のあるメッセージングを提供する。したがって、RM−WSプロトコルは、エンドポイント間でメッセージングを転送するのに使用される特定のトランスポートプロトコルまたは他のプロトコルに縛られない。
ここしばらくの間、いくつかのRM−WSプロトコルが存在しているが、これらのプロトコル仕様については、依然としていくつかの欠点および欠陥がある。例えば、エンドポイント間のメッセージのフロー制御については、これらのプロトコルによって定義されるソリューションは現在ない。通常、信頼性のあるメッセージ交換におけるアクセプタは、受信されたメッセージが処理アプリケーションに配信するために格納されるバッファを有している。これにより、システムにおける柔軟性が可能になる。というのは、処理アプリケーションは、プロセスメッセージが受信されると、利用可能になる必要はないからである。しかし、どのようなシステムも、そのシステムにとって利用可能な有限なリソースを有するにすぎないので(ハードウェアおよび/またはソフトウェアによって制限される)、このバッファは、容量に制限がある。このように、受信アプリケーションが、メッセージが送信および/または受信される速度よりも遅い速度でメッセージを処理している場合には、ある問題が生じる可能性がある。このような場合には、アクセプタバッファは、満杯になり、これらの受信メッセージは、トランスポートから読み取られないだろうし、脱落する可能性があり(これは、トランスポートからメッセージを読み取るが、スペースの不足のためにこのバッファ中に捕捉しないというアクションである)、それ故に、このメッセージについての受信肯定応答を送信しない。
メッセージの脱落は、典型的なRM−WSプロトコルによって許可され、致命的な障害とは考えられない。アクセプタからの受信肯定応答がないので、イニシエータは転送を再試行するであろう。しかし、再試行は、ネットワークおよびシステムリソースを浪費し、それ故に、イニシエータが、メッセージを脱落させることなくアクセプタにどれだけ多くのメッセージを送信できるかを知るための効率的なメカニズムについての必要性が生ずる。
上述のフロー制御問題と同様に、ネットワーク配線上の輻輳制御もまた、関心事である。通常、ネットワーク上で送信されるメッセージは、様々なノード、例えばルータによってブリッジされるいくつかのトランスポート接続を介して転送される。異なるトランスポート接続は、異なる速度となるかもしれない(例えば、イニシエータからノードへの100mbpsのイーサネット(登録商標))接続、およびこのノードからアクセプタへの56kbpsのダイアルアップ接続)。このトランスポート接続の速度の違いに起因して、ノードからアクセプタへの接続は、渋滞する可能性があり、これは、ネットワークが配信のための何ら新しいコンテンツを取り込むことができないことを意味しており、これはこのコンテンツの一部をまず取り除く必要があるからである。これは、ノードがそのリレー伝送の速度を落とし、着信メッセージをその宛先に送信できる前にバッファさせるようにしなければならないことを意味する。他のコンピューティングリソースと同様に、ノードは、新しい着信メッセージを脱落し始める必要がある前に、どれだけかのメッセージをバッファすることしかできない。バッファリングは、過渡的なトラフィックスパイクを処理するために受け入れることができる技法であるが、レイテンシを最小化するために、システムは、これらの仲介手段中で生じるバッファリングの量を最小化することを目指すべきである。さらに、メッセージを脱落させる他の理由には、すべてが同じ発信リンクを求めて競うノードに対する着信リンクの数、要求を処理するのが遅い受信側、またはそのノードにおけるアクティビティのバーストが含まれる。
信頼性のあるメッセージングシステムにおいて、これらのネットワーク脱落メッセージの理由にかかわらず、前述のように、脱落メッセージは配信を確実にするために再試行する必要がある。順序正しい配信が必要な場合には、シーケンス番号が脱落メッセージよりも大きいメッセージの処理は、この脱落メッセージが受信されるまで遅らされ、その結果、アクセプタ側で処理が非効率となるであろう。さらに、脱落メッセージの再試行により、イニシエータからノードに至るリンク上にさらに多くのメッセージがもたらされ、究極的には、さらに多くの脱落メッセージ、すなわち輻輳、性能障害、およびリソースの浪費がもたらされる可能性があろう。
したがって、フロー制御について調整するだけでなく、ネットワーク配線上の輻輳についての変化に適合するようにもするソリューションについての必要性が生じている。理解することができるように、この問題は、複数のノード、例えばルータが、イニシエータからアクセプタに至るパス上で用いられるシナリオにも拡張される。このように、ルータ数がイニシエータに未知であり、実際に時間と共に変化し得るので、ソリューションはルータ数を考慮に入れるべきではない。さらに、ソリューションは、ネットワークの帯域幅、性能、およびトポロジの変化に適合できるようにもすべきである。
ウェブサービスについての現行の信頼性のあるメッセージングプロトコルの上で特定した欠陥および欠点は、本発明の例示の実施形態に従って克服される。例えば、本発明は、アクセプタの利用可能なバッファサイズに基づいて、メッセージを送信するためのメッセージウィンドウサイズを動的に決定することにより、WS(RM−WS)についての信頼性のあるメッセージングプロトコルに従ってエンドポイント間でメッセージを効率的に転送することを提供する。さらに、本発明は、ネットワークの帯域幅、性能、およびトポロジの変化などの状況に適合させるために、RM−WSプロトコルに従ってエンドポイントにメッセージを送信するための伝送ウィンドウを調整することにより、ネットワークの輻輳を制御することを提供する。
例えば、フロー制御を対象とした一実施形態は、RM−WSプロトコルに従ってイニシエータとアクセプタの間のシーケンスセッションをアプリケーション層で確立することを提供する。予期されるバッファサイズ情報を含むメッセージが、このシーケンスセッションを介して受信される(アクセプタバッファサイズ情報は、アプリケーションによって処理されるために待っているメッセージをバッファするための利用可能なメモリの量を示している)。さらに、いくつかの伝送中のメッセージ(in−flight message)が特定され、これらは、RM−WSプロトコルに従って、対応する肯定応答を受信することなく、アクセプタに送信されたメッセージである。このアクセプタバッファサイズ情報および伝送中のメッセージの数に基づいて、バッファオーバーランに起因したメッセージの再送信を防止するためにアクセプタに送信することができるメッセージの数の上限を表すメッセージウィンドウサイズが計算される。
輻輳制御についての別の例としての実施形態においては、本発明は、RM−WSプロトコルに従って、確立されたシーケンスセッションを介してアクセプタにメッセージウィンドウサイズに対応するいくつかのメッセージを送信することを提供する。このメッセージウィンドウサイズは、ネットワーク配線上でアクセプタに送信する伝送中のメッセージの数の上限を表している。メッセージウィンドウサイズに基づいて、これらいくつかのメッセージを送信してから、対応する肯定応答メッセージを受信するまでの予期される時間制限を定義する予期メッセージ転送時間が特定される。その後に、この予期メッセージ転送時間が満了する前に、対応する肯定応答メッセージが受信されたか否かについての指示が提供され、この指示は、ネットワーク輻輳に起因してメッセージを再送信することがないようにするためにメッセージウィンドウサイズおよび/または再試行期間を調整するのに使用される。
本発明の追加の特徴および利点については、以下に続く説明中で述べ、部分的にはこれらの説明から明らかになり、あるいは本発明を実施することにより確認することができよう。本発明の特徴および利点は、添付の特許請求の範囲において特に指摘した手段および組合せを用いて実現し、得ることができる。本発明のこれらおよび他の特徴については、以下の説明および添付の特許請求の範囲から、さらに十分に明らかとなり、あるいは以下で述べる本発明の実施により確認することができよう。
本発明の上で列挙した利点および特徴、ならびに他の利点および特徴を得ることができる態様について説明するために、上で簡単に説明した本発明のより詳細な説明を、添付図面中に例示されるその特定の実施形態を参照して表現することにする。これらの図面は、本発明の典型的な実施形態を示すにすぎず、それ故に本発明の範囲を限定するものと考えるべきではないことを理解して、本発明について、添付図面を使用することにより、さらに具体的にまた詳細に記述し説明することにする。
本発明は、ウェブサービス環境についての信頼性のあるメッセージングプロトコルにおけるフロー制御および輻輳制御のための方法、システムおよびコンピュータプログラム製品に拡張される。本発明の実施形態は、以下でさらに詳細に説明するように様々なコンピュータハードウェアを含む専用または汎用コンピュータを備えることができる。
本発明は、(以下で「RM−WS」プロトコルと呼ぶ)ウェブサービスについての信頼性のあるメッセージングプロトコルの拡張を対象としており、これは、ソフトウェアコンポーネント障害、システム障害、またはネットワーク障害の存在下において、分散されたアプリケーションの間でメッセージを確実に配信できるようにするプロトコルについて説明している。ウェブサービスについての信頼性のあるメッセージングプロトコルは、ソース(以下では「イニシエータ」)から、宛先、例えばサービス(以下では「アクセプタ」)へのメッセージの正常な伝送を容易にし、エラー状態が検出可能であるようにする。これらのプロトコルは、トランスポート不可知論的であり、それにより、これらのプロトコルは、異なるネットワーク転送技術を使用して実装することができるようにする。さらに、信頼性のあるメッセージングプロトコルの様々な実施形態は、そのアプリケーションから間欠的な通信障害を隠し、システム障害の場合における回復可能性を提供することができる。
例としての実施形態は、アクセプタの利用可能なバッファサイズに基づいて、メッセージを送信するためのメッセージウィンドウサイズを動的に決定することにより、RM−WSプロトコルを使用してこれらのメッセージの効率的な転送を提供する。より詳細には、本発明は、このアクセプタが、このアクセプタバッファ中にどれだけの余裕があるかをイニシエータに知らせるフロー制御メカニズムを提供する。このアクセプタバッファサイズ情報は、応答メッセージ中に、例えばインフラストラクチャ肯定応答メッセージ中に含まれ、次いでこの情報は、イニシエータによって使用されて、メッセージウィンドウサイズを計算する。次いで、この計算されたウィンドウサイズは、バッファオーバーランに起因したメッセージの再送信を防止するために、アクセプタに送信することができるメッセージの数の上限を定義する。
図1Aは、上述の例のフロー制御の実施形態を示している。図1Aは、イニシエータ105およびアクセプタ120を含む分散ネットワーク100を示している。イニシエータ105とアクセプタ120の間に、RM−WSプロトコルに従ってメッセージを交換するための接続が確立される。確立されると、アクセプタ120は、メッセージ(例えばインフラストラクチャメッセージ115)内のそのバッファサイズについての情報をイニシエータ105に定期的に送信することができる。アクセプタバッファサイズ情報は、アプリケーション135によって処理されるために待っているバッファされたメッセージ185のために利用可能なメモリ130の量を示すことになる。
通常、インフラストラクチャメッセージ115を使用して、アクセプタバッファサイズ情報をイニシエータ105に送信することになるが、アプリケーション層メッセージ(例えば、アクセプタからの出力として送信されるメッセージ)は、アクセプタ120についてのメモリの利用可能なサイズを特定する拡張を含むこともできることに留意されたい。さらに、インフラストラクチャメッセージ115は、通常、RM−WSプロトコルによる肯定応答メッセージになるであろう。しかし、本発明は、特定のどのようなタイプのインフラストラクチャメッセージ115にも限定されることはない。したがって、アクセプタバッファサイズ情報を配信する際に、インフラストラクチャメッセージ115(ならびに言及したどの特定のタイプのインフラストラクチャメッセージ)の使用については、例示の目的のためだけに使用され、明示的に主張しない限り、本発明の範囲を限定し、またはその他に狭めることを意味していない。
メッセージのタイプに関係なく、インフラストラクチャメッセージ115内のアクセプタバッファサイズの指示を受信すると、イニシエータ105は、バッファサイズ情報によって示されるメッセージの数まで送信することができる。換言すれば、アクセプタメモリ130は、アプリケーション135によって処理されるために待っているある数のバッファされたメッセージ185をすでに有している。したがって、メッセージが脱落させられる前にイニシエータ105がアクセプタ120に送信することができるメッセージの最大数は、メモリ130内の利用可能なバッファサイズによって決まる。
インフラストラクチャメッセージ115内のアクセプタバッファサイズ情報は、イニシエータ105がアクセプタ120に送信することになるメッセージ数の上限であることに留意されたい。しかし、この上限は、伝送中のメッセージの数、以前に受信した肯定応答の数、現在肯定応答されているメッセージの数などの状況に基づいて修正されることもある。例えば、イニシエータ105は、伝送中のメッセージ125の数を特定することができ、これは、RM−WSプロトコルに従って、対応する肯定応答を受信することなく、アクセプタに送信されたメッセージである。これらの伝送中のメッセージ125は、アクセプタ120によって脱落され、または配線上で失われたメッセージでもよい。伝送中のメッセージ125はまた、アクセプタ120によって受信されるが、これらのメッセージについての肯定応答が失われたか、または以下で説明する計算前のイニシエータ105への移動中のメッセージでもよい。別の可能性は、伝送中のメッセージ125が、このネットワーク中の仲介手段、例えばルータまたはSOAP仲介手段において遅延される場合もあることである。
いずれにしても、伝送中のメッセージ125の数を知ると、イニシエータ105は、ウィンドウサイズ計算モジュール110を利用して、メッセージウィンドウサイズ155を計算するときに、利用可能なアクセプタバッファサイズから伝送中のメッセージ125の数を差し引くことができる。前述のように、メッセージウィンドウサイズ155は、バッファオーバーランに起因したメッセージの再送信を防止するために、アクセプタ120に送信することができるメッセージの数の上限を表している。
インフラストラクチャメッセージ115内のバッファ情報サイズは、通常バイトではなく、メッセージの数に関することに留意されたい。同様に、メッセージウィンドウサイズ155もまた、特定のバイトサイズではなくメッセージの数に関することがある。さらに、イニシエータ105は、送信したメッセージ、例えば伝送中のメッセージ125の数と、アクセプタ120のメモリ130で利用可能なスペースの数を追跡するので、イニシエータは、アクセプタ120の側に利用可能な余裕がどれだけあるかを常に知っている。したがって、イニシエータ105は、処理アプリケーション135のメッセージ処理速度を推定しようせず、むしろアクセプタがどれだけの数のメッセージをバッファできるかをイニシエータに伝えるアクセプタ120に依存している。これにより、ウィンドウサイズ計算モジュール110は、コンスタントレート処理やランダムバースト処理など任意の処理レート下で機能する。
他の例としての実施形態は、インフラストラクチャメッセージ115、例えば肯定応答メッセージが信頼性のない(すなわち、アクセプタからイニシエータへの移動中に失われることがある)という事実から生ずる問題に対処する。このような実施形態においては以下でさらに詳細に説明するように、メッセージウィンドウサイズ155がゼロに等しいときに、イニシエータ105は、この特定のRM−WSプロトコルに従って、例えば肯定応答要求メッセージを送信することによって利用可能なスペースについて定期的にプローブすることができる。この肯定応答要求メッセージに応答して、対応する1つ(または複数)の肯定応答は、通常、現在のアクセプタバッファサイズ情報を含むことになる。
バッファサイズ情報および伝送中のメッセージ125の数以外の情報は、メッセージウィンドウサイズ155を計算する際にウィンドウサイズ計算モジュール110によって利用することができることに留意されたい。例えば、インフラストラクチャメッセージ115が肯定応答メッセージであるときに、肯定応答される現在のメッセージの数はまた、メッセージウィンドウサイズ155を低減する際に使用することもできる。さらに、バッチ肯定応答の場合には、以前に受信された肯定応答の数も、同様に使用される必要があるかもしれない。
以下は、例示の実施形態による、メッセージウィンドウサイズ155を計算するために使用することができるアルゴリズムの一例である。イニシエータ105とアクセプタ120の間の通信の開始時には、この受信されたウィンドウサイズは、1に等しいものと想定され、伝送中のメッセージの数はゼロに等しいものとする。さらに、以前に受信された肯定応答もまた、ゼロに設定される。イニシエータ105の側では、アルゴリズムは、以下のように見えるかもしれない。メッセージウィンドウサイズ155がゼロよりも大きい場合、イニシエータ105は、メッセージを送信し、伝送中のメッセージカウントを1だけ増加し、同様にメッセージウィンドウサイズ155を1だけ減少することができる。
他方、この受信されたウィンドウサイズがゼロに等しい場合には、例としての実施形態は、このウィンドウサイズの再計算結果がゼロよりも大きくなるまで、メッセージの送信をブロックする。このウィンドウサイズがゼロよりも大きいときには、前述のプロセスが繰り返される。
肯定応答またはインフラストラクチャメッセージ115を受信すると、この例としてのアルゴリズムは、以下を行う。最初に、メッセージ115からアクセプタバッファサイズ情報を抽出することになる。さらに、ウィンドウサイズ計算モジュール110は、現在肯定応答されているメッセージの数を計算する。このように、計算モジュール110は、新しい肯定応答の数を決定する必要があるかもしれず、これは、現在肯定応答されているメッセージから以前に受信された肯定応答を差し引いた数に等しい。この最後の計算は、RM−WSプロトコルが肯定応答をバッチ処理する場合についても必要とされ得ることに留意されたい。しかし、本発明は、必ずしもこのようなバッチ処理プロセスだけに限定されない。したがって、以前に受信された肯定応答と現在肯定応答されているメッセージの数の差を取ることによって、新しい肯定応答の数の計算は、例示の目的のためだけに使用され、明示的に主張しない限り、本発明の範囲を限定し、またはその他の点で狭めることを意味するものではない。
それにもかかわらず、新しい肯定応答の数が使用される場合には、伝送中のメッセージ125は、以前に送信されたメッセージの数から新しい肯定応答の数を差し引いたものを含む。さらに、以前に受信された肯定応答数は、今や現在肯定応答されている(先と同様に、バッチ肯定応答の場合の)メッセージに等しくなる。最終的に、メッセージウィンドウサイズ155は、ウィンドウサイズ計算モジュール110を使用して計算される、アクセプタバッファサイズ情報から伝送中のメッセージ125の数を差し引いたものに等しくなる。
以下の例は、上述のメッセージウィンドウサイズ追跡プロセスを示している。この例においては、イニシエータ105は、アクセプタ120に対して10個のメッセージを送信し、これらの10個のメッセージについての1つの肯定応答115をちょうど受信したところであり、これは、アクセプタ120が5個のメッセージをバッファできることを示すアクセプタバッファサイズ情報を含んでいる。イニシエータ105は、メッセージ11ないし15を送信し、それ以上のメッセージを送信するのを停止する。次に、イニシエータ105は、メッセージ1ないし13についての肯定応答115、および5個分のスペースがアクセプタ120の受信メモリ130で利用可能であることを示すアクセプタバッファサイズ情報を受信する。2個のメッセージが、アクセプタ120への伝送中のメッセージ125であることを知って、イニシエータ105は、このアクセプタに対してさらに3個のメッセージしか送信せず、次いでより多くのスペースが利用可能になるのを待つであろう。
別の例としての実施形態は、接続ごとに基づいて、動的に構成可能なメモリ130のバッファサイズを利点として提供する。この機能により、高い(または低い)バッファリングニーズを有するイニシエータ105のためにメモリ130を適切に割り振ることにより、このフローを、接続ごとに最適に達成することができるようにシステムリソースのバランス化を可能にする。受信側でメッセージをバッファするハードコード化されたメモリ割り振りを有するTCPと違って、例としての実施形態は、アクセプタ120のメモリ130の容量(すなわち、この接続のために割り振る総バッファサイズ)がイニシエータ105の処理速度、この要求の複雑さなどの状況に基づいて構成可能にすることができる。
例えば、定期的に1つのメッセージしか送信しないイニシエータ105に対する確立された接続は、バッファされたメッセージ185のために大きな容量のメモリ130を必要としないであろう。したがって、イニシエータ105とアクセプタ120の間のネゴシエーションが、イニシエータ105の特定のニーズ、およびメモリ130の対応する割り振りを決定するために行われ得る。さらに、このネゴシエーションプロセスは、様々な分散デバイス間でメモリ130のリソースを適切にバランス化させるために、確立された接続ごとに行うことができる。
他の例としての実施形態は、ネットワークの帯域幅、性能およびトポロジの変化などの状況に適合させるために、エンドポイントにメッセージを送信するための伝送ウィンドウおよび/または再試行期間を調整することにより、輻輳制御を提供する。このメカニズムは、メッセージが送信される時点から、対応する肯定応答が受信される時点までに経過するラウンドトリップタイムを測定することを伴う。以下は、どのようにこの輻輳制御プロセスが機能し得るかについての一例の簡単な説明である。
最初に、例示の実施形態は、所望のまたは最適なレートに近い近似レートを、積極的に求める。本発明は、例えば、障害ポイントが見つかるまで伝送中のメッセージの数を指数関数的に増大させることにより、それを行う。この障害ポイント以下の最後の正常レートは、最適ポイントに対する最も近い既知のポイントである。次いで、例としての実施形態は、リセットを行い、再び(例えば、指数関数的なレートの増大を使用して)このレートを最後の既知の良好なポイントまで上げて、最適レートに漸近させるアルゴリズムを使用してそこからの微調整を行う。
図1Bは、上で特定された実施形態の一部を行うためのネットワーク100を示している。図に示すように、イニシエータ105は、第1の数のメッセージ175をアクセプタ120に送信することができる。アクセプタ120が第1の数のメッセージ175を受信すると、第1の肯定応答165がイニシエータ105に送信される。第1の肯定応答165を受信すると、どのようにメッセージウィンドウサイズ155を調整すべきか、および/または再試行期間を(さらに速くまたはさらに遅く)調整すべきかを決定するために、メッセージ転送時間比較モジュール140を利用することができる。
例えば、メッセージ転送時間比較モジュール140は、予期メッセージ転送時間を決定し、これは、これらいくつかの第1のメッセージ175を送信してから、イニシエータ105において対応する第1の肯定応答165を受信するまでの予期されるタイムリミットを定義する。換言すれば、メッセージ175をアクセプタ120に送信してから、イニシエータ105において対応する肯定応答165を受信するまでの期待ラウンドトリップタイムによって定義される予期メッセージ転送時間が存在する。以下でさらに詳細に説明するように、通常この予期メッセージ転送時間は、メッセージウィンドウサイズ155に基づくことになり、これは、ネットワーク配線上でアクセプタに送信される伝送中のメッセージの数の上限を表す。
メッセージ転送時間比較モジュール140がこの予期メッセージ転送時間を決定すると、第1の数のメッセージ175をアクセプタ120に送信してから、第1の肯定応答165を受信するまでの実際の時間とこの予期メッセージ転送時間を比較する。第1の肯定応答165が、予期メッセージ転送時間が満了する前に受信される場合、メッセージ転送時間比較モジュール140は、メッセージウィンドウサイズ調整モジュール145に成功指示を与えることになる。したがって、メッセージウィンドウサイズ調整モジュール145は、メッセージウィンドウサイズ155を増大させ、この成功を最後の既知の良好な値180としてメモリ150に記録することになる。換言すれば、以前のメッセージウィンドウサイズ155は、最後の既知の良好な値180として記録され、以前のメッセージウィンドウサイズ155は、あるファクタだけ、通常は指数関数的な増大分だけ増大される。次いで、この増大されたメッセージウィンドウサイズ155に対応する第2の数のメッセージ170が、アクセプタ120に送信され、第2の1つ(または複数)の肯定応答160が、第2の数のメッセージ170について受信され、プロセスは、障害が起こるまで継続される。
他方、予期メッセージ転送時間が、第1の肯定応答165(または、170の場合には第2の肯定応答)を受信する前に経過する場合には、メッセージ転送時間比較モジュール140は、メッセージウィンドウサイズ調整モジュール145に対して失敗指示を与えることになる。このような場合には、失敗指示は、いくつかの出来事が発生したことを示唆し得ることに留意されたい。例えば、これらの送信されたメッセージ(第1の数のメッセージ175、または増大された第2の数のメッセージ170)が失われた可能性がある。あるいは、またはこれと関連して、これらの送信されたメッセージ175、170についての1つまたは複数の対応する肯定応答メッセージ165、160が失われるか、あるいは予期メッセージ転送時間が満了した後に受信されることもある。
いずれにしても、メッセージウィンドウサイズ調整モジュール145は、通常、メモリ150に格納された最後の既知の良好な値180よりも小さなある値までメッセージウィンドウサイズ155を減少させ、そして/または再試行期間を増大させる(すなわち、メッセージを再試行するために待つ持続期間を長くする)ことになる。例示の実施形態は、メッセージウィンドウサイズ155を最後の既知の良好な値180より小さなある値に減少させるが、本発明はこの特定の実施形態だけには限定されないことに留意されたい。例えば、メッセージウィンドウサイズ調整モジュール145は、成功が達成されるまで、メッセージウィンドウサイズ155を徐々に減少させることもでき、これは、最後の既知の良好な値180であっても、そうでなくてもよい。同様に成功指示を受信したときのメッセージウィンドウサイズ155の上述の増大については、必ずしも指数関数的増大である必要があるとは限らず、その小さな増分とすることもできる。実際に、以下でさらに詳細に説明するように、微調整および他の目的のために、メッセージウィンドウサイズ155を調整するための異なるアルゴリズムを使用することもできる。したがって、この成功指示または失敗指示に基づいた、ウィンドウサイズ155のどの特定の増大または減少も、例示の目的のためだけに使用され、明示的に主張しない限り、本発明の範囲を限定し、またはその他の点で狭めることを意味するものではない。
それにもかかわらず、失敗指示がメッセージウィンドウサイズ調整モジュール145において受信されるときに、例としての実施形態は、メッセージウィンドウサイズ155が1のサイズまで縮小することになることを提供する。その後に、メッセージ175、170を転送するための連続的な試みは、メッセージウィンドウサイズ155を最後の既知の良好な値180まで指数関数的に増大させることになる。メッセージウィンドウサイズ155の過激な減少は、伝送レートの低下を引き起こし、この指数関数的増大プロセスをその初期状態へと事実上リセットすることに留意されたい。しかし、イニシエータ105によってメッセージを送信するための実際のバッファサイズは、縮小せず、送信するためにすでにバッファされているメッセージは、バッファから取り除かれないかもしれないが、新しいメッセージは、インフラストラクチャによって受け入れられず(すなわち、送信オペレーションがブロックされ)、イニシエータ105を事実上減速させることになる。このバッファ中のメッセージ数が、有効なメッセージウィンドウサイズ155よりも小さくなると、新しいメッセージは、このインフラストラクチャによって受け入れることができる。
上述のリセットの後に、イニシエータ105のバッファ中の最も古いメッセージを再送信する試みが行われ、新しい予期メッセージ転送時間が設定される。この再送信されたメッセージについての対応する肯定応答を受信する前に、新しい予期メッセージ転送時間が満了する場合、例としての実施形態は、予期メッセージ転送時間を2倍にし、再試行することを提供する。このプロセスは、正常状態に達するまで、または構成可能な試行回数が行われるまで、繰り返して行うことができ、この場合には、この転送は、不成功と宣言することができ、イニシエータ105のアプリケーションにエラーを提起することができる。この実施形態は、効果的にメッセージバックオフ再試行メカニズムを実施し、これにより、ネットワーク100上の輻輳も正常化され、または定常状態に到達することができるようになる。
正常な転送を受信すると、メッセージウィンドウサイズ155およびメッセージについての転送レートの増大を上述のようにこの場合も試みることができる。前述のように、最後の試みの間に学習されたことを適用するために、例示の実施形態は、メッセージウィンドウサイズ155を最後の既知の良好な値180まで積極的に増大させることを提供する。このポイントにおいて、メッセージウィンドウサイズ調整モジュール145は、アルゴリズムを変更して、試み、最適なポイントを見出す。例えば、実施形態は、以下のような漸近アルゴリズム(およびメッセージウィンドウサイズ155の日和見主義的増大(opportunistic increase))を提供する。メッセージウィンドウサイズについての最後の既知の良好な値180に到達するときに、メッセージウィンドウサイズ調整モジュール145は、最後の失敗したメッセージウィンドウサイズ155と最後の既知の良好な値180の間のポイントについて、最適ポイントを推測しようと試みて、この差をあるファクタによって除算することにより、ピックすることができる。この値が高すぎる(すなわち、最適レートを超過しており、メッセージが失われるか、または過度に遅延される)場合には、メッセージウィンドウサイズ調整モジュール145は、このファクタをより低い値に再調整する。
もちろん、メッセージウィンドウサイズ155を微調整し、または調整するために使用することができる他の特定の実装形態またはアルゴリズムも存在する。例えば、最後の既知の良好な値180に到達した後に、メッセージウィンドウサイズ調整モジュール145は、最適サイズが達成されるまで、メッセージウィンドウサイズ155を単純に付加的に増大させることもできる。したがって、前述のように、特定の任意のアルゴリズムの使用により、最適なメッセージウィンドウサイズ155を積極的に近似したり、またはメッセージウィンドウサイズ155を微調整したりすることは、例示の目的のためだけに使用され、明示的に主張しない限り、本発明の範囲を限定し、またはその他の点で狭めることを意味するものではない。
最適なメッセージウィンドウサイズ155が決定されると、他の例としての実施形態はまた、帯域幅の増大に向けて調整するために、最適値を増大しようと定期的に試みることも提供する。さらなる例としての実施形態は、ネットワーク100にわたる帯域幅の減少を示す障害が起こるときを検出することを提供する。このような場合には、メッセージウィンドウサイズ155は、リセットすることができ、上述した増大プロセスは、最後の既知の良好な値180にまで増大させることができ、微調整プロセスをこの場合にも実施することができる。最後の既知の良好な値180が失敗する場合には、例としての実施形態は、以前の最後の既知の良好な値、すなわちこの最後の既知の良好な値の直前の値を決定することを提供することに留意されたい。次いで、この以前の値は、最後の既知の良好な値180に代えることができ、前述のプロセスを継続することができる。
障害を検出するために、以上で指摘したように、例示の実施形態は、転送時間、すなわちメッセージを送信してから、それについての肯定応答を受信するまでにかかる時間を測定する。この問題は、1つの肯定応答が、複数のメッセージの受信について肯定応答するように、RM−WSプロトコルにより、アクセプタ120が肯定応答を集約できるようにする場合には複雑になる。したがって、例としての実施形態は、対応するバッチ化された肯定応答が受信されるまで、メッセージウィンドウサイズ155に対応するこれらメッセージのそれぞれを転送するために経過した時間を追跡する。次いで、実際の転送時間が、このラウンドトリップタイムの集約分布の平均および/または分散を用いて計算される。
ラウンドトリップタイムの分散は、このバッチで肯定応答されるメッセージの数に依存することになるので、予期メッセージ転送時間は、メッセージウィンドウサイズ155に基づいて変化するはずである。換言すれば、予期メッセージ転送時間は、メッセージウィンドウサイズ155が増大するにつれて、通常、増大することになる。しかし、例えば、メッセージを送信することと、このメッセージについての肯定応答を受信することの間の1対1対応が実装される場合に、予期メッセージ転送時間は、必ずしもメッセージウィンドウサイズ155に基づく必要があるとは限らないことに留意されたい。したがって、予期メッセージ転送時間をメッセージウィンドウサイズ155に基づくことは、例示の目的のためだけに使用され、明示的に主張しない限り、本発明の範囲を限定し、またはその他の点で狭めることを意味するものではない。
以下の例は、上述の様々な実施形態を示している。この例においては、メッセージウィンドウサイズ155は、1のウィンドウサイズ、すなわち1つのメッセージのみがイニシエータ105からアクセプタ120への伝送中のメッセージであるウィンドウサイズで開始することができる。したがって、メッセージ番号1は、アクセプタ120によって受信することができ、対応する肯定応答メッセージ番号1は、イニシエータ105によって受信することができる。次いでメッセージ転送時間比較モジュール140は、このラウンドトリップタイムを測定し、この特定のメッセージウィンドウサイズ155について予期メッセージ転送時間に対して比較する。この比較について成功がもたらされるとすると、メッセージウィンドウサイズ調整モジュール145は、メッセージウィンドウサイズ155を2に増大し、ここで、メッセージ番号2および3が送信され、これらのメッセージについての肯定応答が、イニシエータ105によって受信される。この場合にも、正常な転送時間を仮定すると、メッセージウィンドウサイズ調整モジュール145は、メッセージウィンドウサイズ155を4に増大することになり、ここで、メッセージ番号4ないし7が送信され、対応する肯定応答が受信される。このプロセスは、障害が検出されるまで継続される。
8のメッセージウィンドウサイズ155の次の増大が障害を引き起こす場合、このアルゴリズムは再開され、最後の既知の良好な値180まで積極的に増大され、これは、この場合には4であった。次いでこの漸近アルゴリズムは、最後の既知の良好な値180に、あるデルタを、すなわち最後の既知の良好な値180(すなわち、4)と障害ポイント(すなわち、8)の間の変化をあるファクタで除算した値を加えたものに等しい初期値と共に使用される。例えば、このファクタが2である場合には、メッセージウィンドウサイズ155は、6(すなわち、4+(8−4)/2=6)になる。この6の値が失敗すると、次いで、このプロセスは、5というメッセージウィンドウサイズ155に従ってメッセージの送信を試み、ここで、もし成功なら、5が最適な選択であり、もし失敗なら、4が最適な選択となる。
本発明はまた、機能的ステップ(functional step)および/または非機能的アクト(non−functional act)を備える方法の点から説明することもできる。以下は、本発明を実施する際に行うことができるステップおよび/またはアクトの説明である。通常、機能的ステップは、達成される結果の点で本発明を説明するのに対して、非機能的アクトは、特定の結果を実現するためのさらに特定のアクションを説明する。この機能的ステップおよび/または非機能的アクトは、特定の順序で記述または主張することができるが、本発明は、必ずしもステップおよび/またはアクトのどの特定の順序または組合せにも限定されない。さらに、請求項の引用における(また図2および3についてのフローチャートの以下の説明における)ステップおよび/またはアクトの使用については、当該用語の所望の特定の使用を示すために使用される。
図2および3は、本発明の様々な例示の実施形態についてのフローチャートを示している。図2および3の以下の説明では、ときに図1Aおよび1Bからの対応するエレメントについて言及することになる。これらの図面からの特定のエレメントに対して参照を行うことができるが、このようなエレメントは、例示の目的のためだけに使用され、明示的に主張しない限り、本発明の範囲を限定し、またはその他の点で狭めることを意味するものではない。
図2は、アクセプタの利用可能なバッファサイズに基づいてメッセージを送信するためのメッセージウィンドウサイズを動的に決定することにより、RM−WSプロトコルに従って、エンドポイント間で効率的にメッセージを転送するための方法200のフローチャート例を示している。方法200は、シーケンスセッションを確立するアクト205を含んでいる。例えば、図1Aに示すように、アプリケーション層(例えば、SOAP層)におけるシーケンスセッションは、RM−WSプロトコル(例えば、WSReliableMessaging)に従ってイニシエータ105とアクセプタ120の間に確立することができる。方法200は、このシーケンスセッションを介してRM−WSメッセージを受信するアクト210も含んでいる。例えば、イニシエータ105は、アクセプタ120からアクセプタバッファサイズ情報を含むメッセージ115を受信することができ、この情報は、アプリケーション135によって処理されるために待っているメッセージ185をバッファするために利用可能なメモリ130の量を示す。通常、メッセージ115は、インフラストラクチャメッセージ、例えば肯定応答メッセージ115になるであろう。
その後に、方法200は、伝送中のメッセージの数を特定するアクト215をさらに含んでいる。すなわち、イニシエータ105は、RM−WSプロトコルに従って、対応する1つ(または複数)の肯定応答を受信することなくアクセプタに送信された伝送中のメッセージ125の数を決定することができる。このアクセプタバッファサイズ情報および伝送中のメッセージの数に基づいて、方法200は、メッセージウィンドウサイズを計算するアクト225をさらに含んでいる。例えば、ウィンドウサイズ計算モジュール110を使用して、インフラストラクチャメッセージ115内のアクセプタバッファサイズ情報、および伝送中のメッセージ125の数に基づいてメッセージウィンドウサイズ155を計算することができる。メッセージウィンドウサイズ155は、アクセプタ120上のバッファオーバーランに起因したメッセージの再送信を防止するために、アクセプタに送信することができるメッセージ数の上限を表している。
例示の実施形態は、このウィンドウサイズがゼロより大きい場合、この計算されたメッセージウィンドウサイズ155に対応するいくつかのメッセージをアクセプタ120に送信できることを提供する。他方、メッセージウィンドウサイズ155がゼロである場合には、例示の実施形態は、インフラストラクチャメッセージ(または他のメッセージ)が受信され、使用されてメッセージウィンドウサイズ155がゼロより大きいことが計算されるまで、メッセージが送信されないようにブロックすることを提供する。このインフラストラクチャメッセージが、RM−WSプロトコルによる肯定応答メッセージ115である場合には、他の例示の実施形態は、肯定応答要求メッセージをアクセプタ120に定期的に送信することを提供する。これに応答して、メッセージウィンドウサイズ155を再計算するためのアクセプタバッファサイズ情報を含む肯定応答メッセージ115を受信することができる。したがって、再計算されたメッセージウィンドウサイズ155がゼロより大きいときに、再計算されたメッセージウィンドウサイズ155に対応するいくつかのメッセージを送信することができる。
前述のように、このバッファ情報は、送信されるべきメッセージの数に関するものであり、メモリ中の利用可能なバイトの数に関するものとすることができる。さらに例としての実施形態は、アプリケーションによって処理されるために待っているメッセージをバッファするために割り振られたアクセプタの総メモリが接続ごとに動的に構成可能であることを提供する。さらに、このメッセージウィンドウサイズ155の計算は、さらにこの肯定応答メッセージ、および/または以前に送信されたメッセージについての以前に受信された肯定応答中で肯定応答されたメッセージの数に基づいてもよい。
図3は、ネットワークの帯域幅、性能およびトポロジの変化などの状況に適合させるために、RM−WSプロトコルに従ってエンドポイントにメッセージを送信するために伝送ウィンドウを調整することにより、ネットワークの輻輳を制御するための方法300のフローチャート例を示している。方法300は、第1の数のメッセージを送信するアクト305を含んでいる。例えば、図1Bに示すように、イニシエータ105は、RM−WSプロトコル(例えば、WSReliableMessaging)に従って確立されたシーケンスセッションを介して第1の数のメッセージ175をアクセプタ120に送信することができる。この第1の数のメッセージ175は、メッセージウィンドウサイズ155に対応しており、ここで、メッセージウィンドウサイズ155は、ネットワーク配線上でアクセプタ120に送信される伝送中のメッセージの数の上限を表している。
方法300はまた、メッセージウィンドウサイズを調整するステップ320を含んでいる。ステップ320は、予期メッセージ転送時間を特定するアクト310を含んでいる。例えば、メッセージ転送時間比較モジュール140を使用して、予期メッセージ転送時間を特定することができ、これは、いくつかのメッセージを送信してから、対応する肯定応答メッセージを受信するまでの予期されるタイムリミットを定義する。ステップ320はまた、対応する肯定応答メッセージが受信されたか否かについての指示を提供するアクト315も含んでいる。例えば、メッセージ転送時間比較モジュール140は、予期メッセージ転送時間が満了する前に、対応する肯定応答メッセージ165が受信されたか否かを示す指示をメッセージサイズ調整モジュール145に提供することができる。次いでメッセージウィンドウサイズ調整モジュール145は、ネットワーク輻輳に起因するメッセージの再送信を防止するために、メッセージウィンドウサイズ155および/または再試行期間を調整するためのこの指示を使用することができる。
他の例示の実施形態は、メッセージウィンドウサイズ155の調整が、予期メッセージ転送時間が満了する前に、対応する1つ(または複数)の肯定応答メッセージ165が受信されたことを示す、メッセージウィンドウサイズ155の増大であることを提供する。メッセージウィンドウサイズ155の増大後に、他の例示の実施形態は、この増大されたメッセージウィンドウサイズ155に対応する増大された数のメッセージを送信することを提供する。例えば、第2の数のメッセージ175をイニシエータ105からアクセプタ120に送信することができ、ここで、この増大されたメッセージウィンドウサイズ155に基づいてメッセージ転送時間比較モジュール140は、第2の予期メッセージ転送時間を特定することができる。この増大された予期メッセージ転送時間は、増大された数のメッセージ170を送信してから、1つまたは複数の対応する肯定応答メッセージ160を受信するまでの予期されるタイムリミットを定義している。
その後に、メッセージ転送時間比較モジュール140は、第2の予期メッセージ転送時間が満了する前に、この増大された数のメッセージ170についての1つまたは複数の対応する肯定応答メッセージ160が受信されたか否かについての指示を提供することができる(注:第2の予期メッセージ転送時間は、通常、送信されるメッセージの数の増大に起因して、以前の値から増大されることになる)。一実施形態において、このメッセージウィンドウサイズ調整モジュールは、増大されたメッセージウィンドウサイズを減少させるが、これは以下の、増大された数のメッセージ170の1つまたは複数のメッセージが失われたこと、増大された数のメッセージ170についての対応する肯定応答メッセージ160の1つまたは複数のメッセージが失われ、そして/または第2の予期メッセージ転送時間が満了した後に、受信されたことの少なくとも1つを示している。増大されたメッセージウィンドウサイズの減少により、メッセージウィンドウサイズと増大されたメッセージウィンドウサイズの間のサイズとすることができる。
他の例としての実施形態において、メッセージウィンドウサイズ155は、最後の既知の良好な値180と考えられ、メモリ150に記憶されており、ここで増大されたメッセージウィンドウサイズ155の減少については、メッセージウィンドウサイズ155よりも小さく、これが減少されたメッセージウィンドウサイズ155という結果になる。さらに他の例示の実施形態は、減少されたメッセージウィンドウサイズ155に対応する減少された数のメッセージを送信することを提供する。この減少されたメッセージウィンドウサイズ155に基づいて、第2の予期メッセージ転送時間が特定され(注:減少された数のメッセージが送信されているが、第2の予期メッセージ転送時間は、以前の予期されたメッセージ転送から増大したものとしてネットワーク輻輳を補償することもできる)、これは、減少された数のメッセージを送信してから、対応する肯定応答メッセージを受信するまでの予期されるタイムリミットを定義している。その後に、第2の予期メッセージ転送時間が満了する前に、減少された数のメッセージについての1つまたは複数の対応する肯定応答メッセージが受信されたことを示す指示を提供することができる。このように、メッセージウィンドウサイズ155のサイズ(すなわち、最後の既知の良好な値180)をメモリ150から取り出すことができ、次いで減少されたメッセージウィンドウサイズ155は、メッセージウィンドウサイズ155まで増大される。
その後に、例示の実施形態は、メッセージウィンドウサイズ155の単一調整(すなわち、付加的な増大および減少)により、メッセージウィンドウサイズ155を微調整することを提供する。他の例示の実施形態は、メッセージウィンドウサイズ155が最後の既知の良好な値であると考えられ、増大されたメッセージウィンドウサイズの減少により、メッセージウィンドウサイズ155になることを提供する。
他の例示の実施形態は、対応する肯定応答メッセージを単一のメッセージ中にバッチ化することができることを提供する。このような場合には、予期メッセージ転送時間は、このいくつかのメッセージを送信してから、単一のメッセージを受信するまでの予期メッセージ転送タイムリミットについての平均および/または分散に基づいている。
本発明の範囲内の実施形態はまた、コンピュータ実行可能命令を有するコンピュータ読取り可能媒体またはその媒体上に記憶されたデータ構造も含まれる。このようなコンピュータ読取り可能媒体は、汎用または専用コンピュータによってアクセスできる任意の利用可能な媒体とすることができる。限定ではなく一例として、このようなコンピュータ読取り可能媒体は、汎用または専用コンピュータによってアクセスすることができるコンピュータ実行可能命令またはデータ構造の形態で所望のプログラムコード手段を担持または記憶するために使用することができる、RAM、ROM、EEPROM、CD−ROMまたは他の光ディスクストレージ、磁気ディスクストレージまたは他の磁気ストレージデバイス、あるいは任意の他の媒体を含むことができる。情報が、(ハードワイヤ、ワイヤレス、あるいはハードワイヤまたはワイヤレスの組合せによる)ネットワークまたは他の通信接続を介してコンピュータに転送または提供されるときに、このコンピュータは、この接続をコンピュータ読取り可能媒体として見ることが適切である。このように、任意のこのような接続も、コンピュータ読取り可能媒体と称することが適切である。上記の組合せもまた、コンピュータ読取り可能媒体の範囲内に含められるべきである。コンピュータ実行可能命令は、例えば汎用コンピュータ、専用コンピュータ、または特定目的の処理デバイスに、ある種のファンクションまたはファンクションのグループを実行させる命令およびデータを備えている。
図4および以下の説明は、本発明を実施することができる適切なコンピューティング環境の簡潔で一般的な説明を提供することを意図したものである。必須ではないが、本発明は、ネットワーク環境中のコンピュータによって実行されるプログラムモジュールなどのコンピュータ実行可能命令の一般的な文脈で説明することにする。一般に、プログラムモジュールは、特定のタスクを実行し、または特定の抽象データ型を実装するルーチン、プログラム、オブジェクト、コンポーネント、データ構造などを含んでいる。コンピュータ実行可能命令、関連するデータ構造、およびプログラムモジュールは、本明細書中に開示された方法のステップを実行するためのプログラムコード手段の例を表している。このような実行可能命令の特定のシーケンス、または関連するデータ構造は、このようなステップで記述されるファンクションを実装するための対応するアクトの例を表している。
本発明は、パーソナルコンピュータ、ハンドヘルドデバイス、マルチプロセッサシステム、マイクロプロセッサベースのまたはプログラム可能な民生用電子機器、ネットワークPC、ミニコンピュータ、メインフレームコンピュータなどを含む、多くのタイプのコンピュータシステムコンフィギュレーションを有するネットワークコンピューティング環境中において実施できることが当業者には理解されよう。本発明はまた、タスクが通信ネットワークを介して(ハードワイヤリンク、ワイヤレスリンクあるいはハードワイヤリンクまたはワイヤレスリンクの組合せによって)リンクされるリモート処理デバイスによって実行される分散コンピューティング環境中で実施することもできる。分散コンピューティング環境においては、プログラムモジュールは、ローカルおよびリモートメモリストレージデバイス中に配置することができる。
図4を参照すると、本発明を実施するための例示のシステムは、処理ユニット421、システムメモリ422、およびシステムメモリ422を含む様々なシステムコンポーネントを処理ユニット421に結合するシステムバス423を含む従来のコンピュータ420の形態の汎用コンピューティングデバイスを含んでいる。システムバス423は、メモリバスまたはメモリコントローラ、ペリフェラルバス、および様々なバスアーキテクチャのうちのどれかを使用したバスを含め、いくつかのタイプのバス構造のいずれかとすることができる。このシステムメモリは、ROM(read only memory)424およびRAM(random access memory)425を含んでいる。起動中などにコンピュータ420内のエレメント間で情報を転送する助けをする基本ルーチンが入ったBIOS(basic input/output system)426は、ROM424に格納することができる。
コンピュータ420はまた、磁気ハードディスク439から情報を読み取り、それに情報を書き込む磁気ハードディスクドライブ427、リムーバブルな磁気ディスク429から情報を読み取り、それに情報を書き込む磁気ディスクドライブ428、およびCD−ROMや他の光媒体などリムーバブルな光ディスク431から情報を読み取り、またはそれに情報を書き込む光ディスクドライブ430も含んでいる。この磁気ハードディスクドライブ427、磁気ディスクドライブ428、および光ディスクドライブ430は、それぞれハードディスクドライブインターフェース432、磁気ディスクドライブインターフェース433、および光ドライブインターフェース434によってシステムバス423に接続される。これらのドライブおよびこれらに関連するコンピュータ読取り可能媒体は、コンピュータ420のためのコンピュータ実行可能命令、データ構造、プログラムモジュールおよび他のデータの不揮発性ストレージを提供する。本明細書中で説明している例示の環境は、磁気ハードディスク439、リムーバブルな磁気ディスク429およびリムーバブルな光ディスク431を使用しているが、磁気カセット、フラッシュメモリカード、デジタル多用途ディスク、ベルヌーイカートリッジ、RAM、ROMなどを含め、データを格納するための他のタイプのコンピュータ読取り可能媒体を使用することもできる。
オペレーティングシステム435、1つまたは複数のアプリケーションプログラム436、他のプログラムモジュール437、およびプログラムデータ438を含め、1つまたは複数のプログラムモジュールを含むプログラムコード手段は、ハードディスク439、磁気ディスク429、光ディスク431、ROM424またはRAM425に格納することができる。ユーザは、キーボード440、ポインティングデバイス442、またはマイクロフォン、ジョイスティック、ゲームパッド、サテライトディッシュ、スキャナなど他の入力デバイス(図示せず)を介して、コンピュータ420にコマンドおよび情報を入力することができる。これらおよび他の入力デバイスは、しばしば、システムバス423に結合されたシリアルポートインターフェース446を介して処理ユニット421に接続される。あるいは、これらの入力デバイスは、パラレルポート、ゲームポート、USB(universal serial bus)など他のインターフェースによって接続することもできる。モニタ447または他のディスプレイデバイスもまた、ビデオアダプタ448などのインターフェースを介してシステムバス423に接続される。このモニタに加えて、パーソナルコンピュータは、一般的にスピーカやプリンタなど他のペリフェラル出力デバイス(図示せず)を含んでいる。
コンピュータ420は、リモートコンピュータ449aや449bなど1つまたは複数のリモートコンピュータに対する論理接続を使用して、ネットワーク化された環境中で動作することができる。リモートコンピュータ449aおよび449bはそれぞれ、別のパーソナルコンピュータ、サーバ、ルータ、ネットワークPC、ピアデバイス、または他の共通ネットワークノードとすることができ、通常、コンピュータ420に関連して以上で説明したエレメントの多くまたはすべてを含むが、メモリストレージデバイス450aおよび450bとこれらの関連するアプリケーションプログラム436aおよび436bしか、図4には示していない。図4に示す論理接続は、限定ではなく例として、ここに提示されているLAN(local area network)451およびWAN(wide area network)452を含んでいる。このようなネットワーキング環境は、オフィス規模または企業規模のコンピュータネットワーク、イントラネットおよびインターネットにおいて、一般的である。
LANネットワーキング環境中で使用されるときには、コンピュータ420は、ネットワークインターフェースまたはアダプタ453を介して、ネットワーク451に接続される。WANネットワーキング環境中で使用されるときには、コンピュータ420は、インターネットなどのワイドエリアネットワーク452上で通信を確立するためのモデム454、無線リンク、または他の手段を含むことができる。モデム454は、内蔵または外付けとすることができ、シリアルポートインターフェース446を介してシステムバス423に接続される。ネットワーク環境においては、コンピュータ420に関連して示すプログラムモジュール、またはその一部分は、このリモートメモリストレージデバイスに格納することもできる。図に示すこれらのネットワーク接続は、例示的なものであり、ワイドエリアネットワーク452上で通信を確立する他の手段を使用することもできることが理解されよう。
本発明は、本発明の趣旨または必須の特徴を逸脱することなく、他の特定の形態で実施することができる。これら記載の実施形態は、すべての点で例示的にすぎず、限定的ではないと考えるべきである。それゆえ、本発明の範囲は、前述の説明によってではなく、添付の特許請求の範囲によって示される。請求項の意味および等価の範囲内に入るすべての変更が本発明の範囲内に包含される。
本発明の例示の実施形態による、2つのエンドポイント間のフロー制御変化について調整するように構成されたコンピューティングシステムを示す図である。 本発明の例示の実施形態による、ネットワーク配線上の輻輳変化に適合するように構成されたコンピューティングシステムを示す図である。 本発明の例示の実施形態による、エンドポイント間でメッセージを効率的に転送する方法の流れ図を示す図である。 本発明の例示の実施形態による、ネットワークの輻輳を制御する方法の流れ図を示す図である。 本発明についての適切な動作環境を提供するシステム例を示す図である。
符号の説明
100 ネットワーク
105 イニシエータ
110 ウィンドウサイズ計算モジュール
115 アクセプタバッファサイズ情報
120 アクセプタ
125 伝送中のメッセージ
130 メモリ
135 アプリケーション
140 メッセージ転送時刻比較モジュール
145 メッセージウィンドウサイズ調整モジュール
150 メモリ
155 メッセージウィンドウサイズ
160 第2の肯定応答
165 第1の肯定応答
170 第2の数のメッセージ
175 第1の数のメッセージ
185 バッファされたメッセージ
180 最後の既知の良好な値
420 コンピュータ
421 処理ユニット
422 システムメモリ
423 システムバス
427 磁気ハードディスクドライブ
428 磁気ディスクドライブ
429 磁気ディスク
430 光ディスクドライブ
431 光ディスク
432 ハードディスクドライブインターフェース
433 磁気ディスクドライブインターフェース
434 光ドライブインターフェース
435 オペレーティングシステム
436 アプリケーションプログラム
436a アプリケーションプログラム
436b アプリケーションプログラム
437 他のプログラムモジュール
438 プログラムデータ
439 磁気ハードディスク
440 キーボード
442 ポインティングデバイス
446 シリアルポートインターフェース
447 モニタ
448 ビデオアダプタ
449a リモートコンピュータ
449b リモートコンピュータ
450a メモリストレージデバイス
450b メモリストレージデバイス
451 ローカルエリアネットワーク
452 ワイドエリアネットワーク
453 ネットワークインターフェース
454 モデム

Claims (42)

  1. ウェブサービス(WS)環境内のコンピューティングシステムにおいて、アクセプタの利用可能なバッファサイズに基づいて、メッセージを送信するためのメッセージウィンドウサイズを動的に決定することにより、WSの信頼性のあるメッセージング(RM−WS)プロトコルに従って、エンドポイント間で前記メッセージを効率的に転送する方法であって、
    アプリケーション層において、RM−WSプロトコルに従って、イニシエータとアクセプタの間のシーケンスセッションを確立するアクトと、
    アプリケーションによる処理を待っているメッセージをバッファするために利用可能なメモリの量を示すアクセプタバッファサイズ情報を含むメッセージを前記シーケンスセッションを介して受信するアクトと、
    前記RM−WSプロトコルに従って、対応する肯定応答を受信することなく前記アクセプタに送信された伝送中のメッセージの数を特定するアクトと、
    前記アクセプタバッファサイズ情報および前記伝送中のメッセージの数を使用して、バッファオーバーランに起因したメッセージの再送信を防止するために、前記アクセプタに送信することができるメッセージの数の上限を表すメッセージウィンドウサイズを計算するアクトと
    を備えることを特徴とする方法。
  2. 前記アクセプタバッファサイズ情報を含む前記メッセージは、RM−WSプロトコルインフラストラクチャメッセージであることを特徴とする請求項1に記載の方法。
  3. 前記アプリケーションによる処理を待つメッセージをバッファするために割り振られる前記アクセプタの総メモリは、接続ごとのベースで動的に構成可能であることを特徴とする請求項2に記載の方法。
  4. ゼロよりも大きい前記メッセージウィンドウサイズに基づいて、
    前記計算されたメッセージウィンドウサイズに対応するいくつかのメッセージを送信するアクトを
    さらに備えることを特徴とする請求項2に記載の方法。
  5. ゼロである前記メッセージウィンドウサイズに基づいて、
    インフラストラクチャメッセージを使用して、前記メッセージウィンドウサイズがゼロよりも大きくなることを計算するまで、メッセージが送信されないようにブロックするアクトを
    さらに備えることを特徴とする請求項2に記載の方法。
  6. 前記インフラストラクチャメッセージは、前記RM−WSプロトコルによる肯定応答メッセージであり、前記方法は、
    肯定応答要求メッセージを前記アクセプタに定期的に送信するアクトと、
    前記メッセージウィンドウサイズを再計算するためのアクセプタバッファサイズ情報を含む1つまたは複数の肯定応答メッセージを受信するアクトと、
    前記再計算されたメッセージウィンドウサイズがゼロより大きいときに、前記再計算されたメッセージウィンドウサイズに対応するいくつかのメッセージを送信するアクトと
    をさらに備えることを特徴とする請求項5に記載の方法。
  7. 前記アクセプタバッファサイズ情報は、送信することができるメッセージの数に関するものであることを特徴とする請求項2に記載の方法。
  8. 前記RM−WSプロトコルは、WSReliableMessagingであることを特徴とする請求項2に記載の方法。
  9. 前記インフラストラクチャメッセージは、以前に送信された1つまたは複数のメッセージの受信を肯定応答する肯定応答メッセージであることを特徴とする請求項2に記載の方法。
  10. 前記メッセージウィンドウサイズの前記計算は、前記肯定応答メッセージ中の肯定応答されるメッセージの数にさらに基づくことを特徴とする請求項9に記載の方法。
  11. 前記メッセージウィンドウサイズの前記計算は、1つまたは複数の以前に送信されたメッセージについての以前に受信された肯定応答数にさらに基づくことを特徴とする請求項10に記載の方法。
  12. ウェブサービス(WS)環境中のコンピューティングシステムにおいて、WSの信頼性のあるメッセージング(RM−WS)プロトコルに従って、エンドポイントにメッセージを送信するための伝送ウィンドウを調整することにより、ネットワーク輻輳を制御する方法であって、
    RM−WSプロトコルに従って、確立されたシーケンスセッションを介してアクセプタに対して、ネットワーク配線上で前記アクセプタに送信する伝送中のメッセージの数の上限を表すメッセージウィンドウサイズに対応するいくつかのメッセージを送信するアクトと、
    前記メッセージウィンドウサイズに基づいて、前記いくつかのメッセージを送信してから、1つまたは複数の対応する肯定応答メッセージを受信するまでの予期されるタイムリミットを定義する予期メッセージ転送時間を特定するアクトと、
    前記予期メッセージ転送時間が満了する前に、前記1つまたは複数の対応する肯定応答メッセージが受信されたか否かについての指示を提供するアクトであって、前記指示は、ネットワーク輻輳に起因するメッセージの再送信を防止するために、前記メッセージウィンドウサイズまたはメッセージ再試行期間の少なくとも1つを調整する際に使用されるアクトと
    を備えることを特徴とする方法。
  13. 前記調整は、前記予期メッセージ転送時間が満了する前に前記1つまたは複数の対応する肯定応答メッセージが受信されたことを示す前記メッセージウィンドウサイズの増大であることを特徴とする請求項12に記載の方法。
  14. 前記メッセージウィンドウサイズの前記増大の後に、前記方法は、
    前記増大されたメッセージウィンドウサイズに対応する増大された数のメッセージを送信するアクトと、
    前記増大されたメッセージウィンドウサイズに基づいて、前記増大された数のメッセージを送信してから、1つまたは複数の対応する肯定応答メッセージを受信するまでの予期されるタイムリミットを定義する第2の予期メッセージ転送時間を特定するアクトと、
    前記第2の予期メッセージ転送時間が満了する前に、前記増大された数のメッセージについての前記1つまたは複数の対応する肯定応答メッセージが受信されたか否かについての指示を提供するアクトと、
    増大された数のメッセージの1つまたは複数のメッセージが失われたこと、あるいは前記増大された数のメッセージについての前記1つまたは複数の対応する肯定応答メッセージの1つまたは複数の肯定応答メッセージが失われるか、または前記第2の予期メッセージ転送時間が満了した後に受信されたことの少なくとも1つを示して前記増大されたメッセージウィンドウサイズを減少させるアクトと
    をさらに備えることを特徴とする請求項13に記載の方法。
  15. 前記メッセージウィンドウサイズは、最後の既知の良好な値と考えられ、メモリに記憶され、前記増大されたメッセージウィンドウサイズの前記減少は、減少されたメッセージウィンドウサイズという結果になる前記メッセージウィンドウサイズよりも小さいことを特徴とする請求項14に記載の方法。
  16. 前記減少されたメッセージウィンドウサイズに対応する減少された数のメッセージを送信するアクトと、
    前記減少されたメッセージウィンドウサイズに基づいて、前記減少された数のメッセージを送信してから、1つまたは複数の対応する肯定応答メッセージを受信するまでの予期されるタイムリミットを定義する第2の予期メッセージ転送時間を特定するアクトと、
    前記第2の予期メッセージ転送時間が満了する前に前記減少された数のメッセージについての前記1つまたは複数の対応する肯定応答メッセージが受信されたことを示す指示を提供するアクトと、
    メモリから前記メッセージウィンドウサイズのサイズを取り出すアクトと、
    前記減少されたメッセージウィンドウサイズを前記メッセージウィンドウサイズまで増大させるアクトと
    をさらに備えることを特徴とする請求項15に記載の方法。
  17. 前記メッセージウィンドウサイズは、メッセージウィンドウサイズ調整における単一の増大および減少により微調整されることを特徴とする請求項16に記載の方法。
  18. 前記メッセージウィンドウサイズは、最後の既知の良好な値と考えられ、前記増大されたメッセージウィンドウサイズの前記減少により、前記メッセージウィンドウサイズになることを特徴とする請求項14に記載の方法。
  19. 前記増大されたメッセージウィンドウサイズの前記減少により、前記メッセージウィンドウサイズと前記増大されたメッセージウィンドウサイズとの間のサイズになることを特徴とする請求項14に記載の方法。
  20. 前記1つまたは複数の対応する肯定応答メッセージは、単一メッセージ中にバッチ化されることを特徴とする請求項12に記載の方法。
  21. 前記予期メッセージ転送時間は、前記数のメッセージを送信してから、前記単一メッセージを受信するまでの前記予期されるタイムリミットについての平均または分散時間に基づくことを特徴とする請求項20に記載の方法。
  22. ウェブサービス(WS)環境内のコンピューティングシステムにおいて、WSの信頼性のあるメッセージング(RM−WS)プロトコルに従って、エンドポイントにメッセージを送信するための伝送ウィンドウを調整することにより、ネットワーク輻輳を制御する方法であって、
    RM−WSプロトコルに従って、確立されたシーケンスセッションを介してアクセプタに対して、ネットワーク配線上で前記アクセプタに送信する伝送中のメッセージ数の上限を表す第1のメッセージウィンドウサイズに対応する第1の数のメッセージを送信するアクトと、
    ネットワーク輻輳に起因するメッセージの再送信を防止するために、前記第1のメッセージウィンドウサイズを第2のメッセージウィンドウサイズまで調整するステップであって、前記調整は、前記第1の数のメッセージを送信してから、1つまたは複数の対応する第1の肯定応答メッセージを受信するまでの予期されるタイムリミットを定義する第1の予期メッセージ転送時間の満了の前に、前記第1の数のメッセージについての1つまたは複数の肯定応答メッセージが受信されるか否かに基づくステップと
    を備えることを特徴とする方法。
  23. 前記第1の予期メッセージ転送時間は、前記メッセージウィンドウサイズに基づくことを特徴とする請求項22に記載の方法。
  24. 記調整は、前記第1の予期メッセージ転送時間が満了する前に前記1つまたは複数の対応する肯定応答メッセージが受信されたことを示す前記メッセージウィンドウサイズの増大であることを特徴とする請求項22に記載の方法。
  25. ウェブサービス(WS)環境内のコンピューティングシステムにおいて、アクセプタの利用可能なバッファサイズに基づいて、メッセージを送信するためのメッセージウィンドウサイズを動的に決定することにより、WSの信頼性のあるメッセージング(RM−WS)プロトコルに従って、エンドポイント間で前記メッセージを効率的に転送する方法を実施するためのコンピュータプログラムであって、前記コンピュータプログラムは、プロセッサによって実行されるときに、前記メッセージングシステムに、
    アプリケーション層において、RM−WSプロトコルに従って、イニシエータとアクセプタの間のシーケンスセッションを確立することと、
    アプリケーションによる処理を待っているメッセージをバッファするための利用可能なメモリの量を示すアクセプタバッファサイズ情報を含むメッセージを前記シーケンスセッションを介して受信することと、
    前記RM−WSプロトコルに従って、対応する肯定応答を受信することなく前記アクセプタに送信された伝送中のメッセージの数を特定することと、
    前記アクセプタバッファサイズ情報および前記伝送中のメッセージの数を使用して、バッファオーバーランに起因したメッセージの再送信を防止するために、前記アクセプタに送信することができるメッセージの数の上限を表すメッセージウィンドウサイズを計算することと
    を実行させることができるコンピュータ実行可能命令を備えたことを特徴とするコンピュータプログラム。
  26. 前記アクセプタバッファサイズ情報を含む前記メッセージは、RM−WSプロトコルインフラストラクチャメッセージであることを特徴とする請求項25に記載のコンピュータプログラム。
  27. 前記アプリケーションによる処理を待つメッセージをバッファするために割り振られる前記アクセプタの総メモリは、接続ごとのベースで動的に構成可能であることを特徴とする請求項26に記載のコンピュータプログラム。
  28. ゼロよりも大きな前記メッセージウィンドウサイズに基づいて、前記メッセージングシステムに、
    前記計算されたメッセージウィンドウサイズに対応するいくつかのメッセージを送信することを実行させることができるコンピュータ実行可能命令をさらに備えたことを特徴とする請求項26に記載のコンピュータプログラム。
  29. ゼロである前記メッセージウィンドウサイズに基づいて、前記メッセージングシステムに、
    インフラストラクチャメッセージを使用して、前記メッセージウィンドウサイズがゼロよりも大きくなることを計算するまで、メッセージが送信されないようにブロックすることを実行させることができるコンピュータ実行可能命令をさらに備えたことを特徴とする請求項26に記載のコンピュータプログラム。
  30. 前記インフラストラクチャメッセージは、前記RM−WSプロトコルによる肯定応答メッセージであり、前記コンピュータプログラムは、前記メッセージングシステムに、
    肯定応答要求メッセージを前記アクセプタに定期的に送信することと、
    前記メッセージウィンドウサイズを再計算するためのアクセプタバッファサイズ情報を含む1つまたは複数の肯定応答メッセージを受信することと、
    前記再計算されたメッセージウィンドウサイズがゼロより大きいときに、前記再計算されたメッセージウィンドウサイズに対応するいくつかのメッセージを送信することと
    を実行させることができるコンピュータ実行可能命令をさらに備えたことを特徴とする請求項29に記載のコンピュータプログラム。
  31. 前記アクセプタバッファサイズ情報は、送信することができるメッセージの数に関するものであることを特徴とする請求項26に記載のコンピュータプログラム。
  32. 前記RM−WSプロトコルは、WSReliableMessagingであることを特徴とする請求項26に記載のコンピュータプログラム。
  33. 前記インフラストラクチャメッセージは、以前に送信された1つまたは複数のメッセージの受信を肯定応答する肯定応答メッセージであることを特徴とする請求項26に記載のコンピュータプログラム。
  34. 前記メッセージウィンドウサイズの前記計算は、前記肯定応答メッセージ中の肯定応答されるメッセージの数にさらに基づいていることを特徴とする請求項33に記載のコンピュータプログラム。
  35. 前記メッセージウィンドウサイズの前記計算は、1つまたは複数の以前に送信されたメッセージについての以前に受信された肯定応答の数にさらに基づいていることを特徴とする請求項34に記載のコンピュータプログラム。
  36. ウェブサービス(WS)環境内のコンピューティングシステムにおいて、WSの信頼性のあるメッセージング(RM−WS)プロトコルに従って、エンドポイントにメッセージを送信するための伝送ウィンドウを調整することにより、ネットワーク輻輳を制御する方法を実施するためのコンピュータプログラムであって、プロセッサによって実行されるときに、前記メッセージングシステムに、
    RM−WSプロトコルに従って、確立されたシーケンスセッションを介してアクセプタに対して、ネットワーク配線上で前記アクセプタに送信する伝送中のメッセージの数の上限を表すメッセージウィンドウサイズに対応するいくつかのメッセージを送信することと、
    前記メッセージウィンドウサイズに基づいて、前記いくつかのメッセージを送信してから、1つまたは複数の対応する肯定応答メッセージを受信するまでの予期されるタイムリミットを定義する予期メッセージ転送時間を特定することと、
    前記予期メッセージ転送時間が満了する前に、前記1つまたは複数の対応する肯定応答メッセージが受信されたか否かについての指示を提供することであって、前記指示は、ネットワーク輻輳に起因するメッセージの再送信を防止するために、前記メッセージウィンドウサイズまたは再試行期間の少なくとも1つを調整する際に使用されることと
    を実行させることができるコンピュータ実行可能命令を備えたことを特徴とするコンピュータプログラム。
  37. 前記調整は、前記予期メッセージ転送時間が満了する前に前記1つまたは複数の対応する肯定応答メッセージが受信されたことを示す前記メッセージウィンドウサイズの増大であることを特徴とする請求項36に記載のコンピュータプログラム。
  38. 前記メッセージウィンドウサイズの前記増大の後に、前記メッセージングシステムに、
    前記増大されたメッセージウィンドウサイズに対応する増大された数のメッセージを送信することと、
    前記増大されたメッセージウィンドウサイズに基づいて、前記増大された数のメッセージを送信してから、1つまたは複数の対応する肯定応答メッセージを受信するまでの予期されるタイムリミットを定義する第2の予期メッセージ転送時間を特定することと、
    前記第2の予期メッセージ転送時間が満了する前に、前記増大された数のメッセージについての前記1つまたは複数の対応する肯定応答メッセージが受信されたか否かについての指示を提供することと、
    増大された数のメッセージの1つまたは複数のメッセージが失われたこと、あるいは前記増大された数のメッセージについての前記1つまたは複数の対応する肯定応答メッセージの1つまたは複数の肯定応答メッセージが失われるか、または前記第2の予期メッセージ転送時間が満了した後に受信されたことの少なくとも1つを示す前記増大されたウィンドウサイズを減少させることと
    を実行させることができるコンピュータ実行可能命令をさらに備えたことを特徴とする請求項37に記載のコンピュータプログラム。
  39. 前記メッセージウィンドウサイズは、最後の既知の良好な値と考えられ、メモリに記憶され、前記増大されたメッセージウィンドウサイズの前記減少は、減少されたメッセージウィンドウサイズをもたらす前記メッセージウィンドウサイズよりも小さいことを特徴とする請求項38に記載のコンピュータプログラム。
  40. 前記メッセージングシステムに、
    前記減少されたメッセージウィンドウサイズに対応する減少された数のメッセージを送信することと、
    前記減少されたメッセージウィンドウサイズに基づいて、前記減少された数のメッセージを送信してから、1つまたは複数の対応する肯定応答メッセージを受信するまでの予期されるタイムリミットを定義する第2の予期メッセージ転送時間を特定することと、
    前記第2の予期メッセージ転送時間が満了する前に前記減少された数のメッセージについての前記1つまたは複数の対応する肯定応答メッセージが受信されたことを示す指示を提供することと、
    メモリから前記メッセージウィンドウサイズのサイズを取り出すことと、
    前記減少されたメッセージウィンドウサイズを前記メッセージウィンドウサイズまで増大させることと
    を実行させることができるコンピュータ実行可能命令をさらに備えたことを特徴とする請求項39に記載のコンピュータプログラム。
  41. 前記メッセージウィンドウサイズは、メッセージウィンドウサイズ調整における単一の増大および減少により微調整されることを特徴とする請求項40に記載のコンピュータプログラム。
  42. 前記メッセージウィンドウサイズは、最後の既知の良好な値と考えられ、前記増大されたメッセージウィンドウサイズの前記減少により、前記メッセージウィンドウサイズになることを特徴とする請求項38に記載のコンピュータプログラム。
JP2005344187A 2004-12-03 2005-11-29 ウェブサービスのための信頼性のあるメッセージングプロトコルを使用したメッセージの効率的な転送 Expired - Fee Related JP4714572B2 (ja)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US11/003,848 US7730196B2 (en) 2004-12-03 2004-12-03 Efficient transfer of messages using reliable messaging protocols for web services
US11/003,848 2004-12-03

Publications (2)

Publication Number Publication Date
JP2006166439A JP2006166439A (ja) 2006-06-22
JP4714572B2 true JP4714572B2 (ja) 2011-06-29

Family

ID=36061546

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2005344187A Expired - Fee Related JP4714572B2 (ja) 2004-12-03 2005-11-29 ウェブサービスのための信頼性のあるメッセージングプロトコルを使用したメッセージの効率的な転送

Country Status (7)

Country Link
US (1) US7730196B2 (ja)
EP (1) EP1667017B1 (ja)
JP (1) JP4714572B2 (ja)
KR (1) KR101143172B1 (ja)
CN (1) CN1783852B (ja)
AT (1) ATE428972T1 (ja)
DE (1) DE602005013894D1 (ja)

Families Citing this family (29)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7657609B2 (en) * 2005-07-05 2010-02-02 Sap Ag Data transfer in a multi-environment document management system access
CN101253745B (zh) * 2005-07-18 2011-06-22 博通以色列研发公司 用于透明tcp卸载的方法和系统
CN100446586C (zh) * 2006-09-30 2008-12-24 江苏天泽信息产业有限公司 短信费用超限预警管理方法
US7773616B2 (en) * 2006-11-08 2010-08-10 Sicortex, Inc. System and method for communicating on a richly connected multi-processor computer system using a pool of buffers for dynamic association with a virtual channel
US7971209B2 (en) * 2007-05-18 2011-06-28 Sap Ag Shortcut in reliable communication
US7644129B2 (en) * 2007-06-01 2010-01-05 Sap Ag Persistence of common reliable messaging data
EP2195969A2 (en) * 2007-09-14 2010-06-16 Softkvm, Llc Software method and system for controlling and observing computer networking devices
JP4516594B2 (ja) * 2007-12-27 2010-08-04 株式会社日立製作所 メッセージ送信制御方法、メッセージ送信制御装置、及びメッセージ送信制御プログラム
US7912975B2 (en) 2008-03-03 2011-03-22 Alcatel Lucent System and method for application layer resource traffic control
US8499119B2 (en) * 2008-04-07 2013-07-30 Qualcomm Incorporated Method and apparatus for delivering and caching multiple pieces of content
WO2010023890A1 (ja) * 2008-08-28 2010-03-04 パナソニック株式会社 無線伝送装置、無線伝送方法、プログラム、及び集積回路
US20120147840A1 (en) * 2008-12-31 2012-06-14 Mediatek Inc. Method for boosting downlink transmission to mobile station and system utilizing the same
US8325601B2 (en) * 2009-05-08 2012-12-04 Canon Kabushiki Kaisha Reliable network streaming of a single data stream over multiple physical interfaces
US20110113134A1 (en) * 2009-11-09 2011-05-12 International Business Machines Corporation Server Access Processing System
US9071465B1 (en) * 2010-05-18 2015-06-30 Cellco Partnership Method and system for SMS services and bind scaling
WO2012005609A1 (en) * 2010-07-08 2012-01-12 Blade Limited File transfer system
US8452888B2 (en) * 2010-07-22 2013-05-28 International Business Machines Corporation Flow control for reliable message passing
CN107181573A (zh) * 2012-12-21 2017-09-19 唐华艺 渐进式数据编码传输系统
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
KR101476748B1 (ko) * 2013-08-07 2014-12-26 삼성에스디에스 주식회사 메시지 송수신 장치 및 방법
JP6039522B2 (ja) * 2013-09-06 2016-12-07 株式会社東芝 外部入出力装置および調停設定結果格納方法
JP6404911B2 (ja) * 2013-09-20 2018-10-17 オラクル・インターナショナル・コーポレイション ネットワーク通信環境における仲介主体のための信頼できるメッセージングのための手法
CN106063205B (zh) * 2013-11-06 2018-06-29 卡尔加里科技股份有限公司 远程访问环境中客户端流量控制的装置和方法
WO2017008830A1 (en) * 2015-07-10 2017-01-19 Telefonaktiebolaget Lm Ericsson (Publ) Technique for processing messages in a message-based communication scenario
US11416852B1 (en) * 2017-12-15 2022-08-16 Worldpay, Llc Systems and methods for generating and transmitting electronic transaction account information messages
CN110830182B (zh) 2018-08-09 2023-08-01 北京三星通信技术研究有限公司 数据重传的方法和装置
US11936638B2 (en) * 2019-06-28 2024-03-19 Salesforce Inc. Link protocol agents for inter-application communications
CN111600927B (zh) * 2020-04-03 2022-12-20 浙江工业大学 一种复杂网络环境下服务自适应调用的方法

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH09214547A (ja) * 1996-01-30 1997-08-15 Nec Eng Ltd パケット通信方式及びそのウィンドウサイズ変更方式
JP2000156706A (ja) * 1998-11-19 2000-06-06 Nippon Telegr & Teleph Corp <Ntt> データ送受信方法並びにデータ送信プログラムを記憶した媒体及びデータ受信プログラムを記憶した媒体
JP2006120080A (ja) * 2004-10-25 2006-05-11 Nec Corp Webサービス要求中継システム、Webサービス要求中継方法、中継サーバ、及びそのプログラム

Family Cites Families (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6438603B1 (en) * 1999-04-30 2002-08-20 Microsoft Corporation Methods and protocol for simultaneous tuning of reliable and non-reliable channels of a single network communication link
EP1428357A1 (en) * 2001-09-21 2004-06-16 British Telecommunications Public Limited Company Data communications method and system using receiving buffer size to calculate transmission rate for congestion control
KR100411447B1 (ko) * 2001-12-26 2003-12-18 엘지전자 주식회사 티씨피 혼잡 제어 방법
US7181531B2 (en) * 2002-04-30 2007-02-20 Microsoft Corporation Method to synchronize and upload an offloaded network stack connection with a network stack
KR100474302B1 (ko) * 2002-09-07 2005-03-10 엘지전자 주식회사 무선 링크 콘트롤(rlc) 계층의 버퍼제어 방법
US7693952B2 (en) 2003-03-27 2010-04-06 Microsoft Corporation Availability and scalability in a messaging system in a manner transparent to the application
US7676580B2 (en) 2003-03-27 2010-03-09 Microsoft Corporation Message delivery with configurable assurances and features between two endpoints
DE602004030487D1 (de) * 2004-01-30 2011-01-20 Ericsson Telefon Ab L M Paketablaufsteuerung zur Datenstromübertragung
US7839858B2 (en) * 2004-08-31 2010-11-23 Telefonaktiebolaget Lm Ericsson Data unit sender and data unit relay device

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH09214547A (ja) * 1996-01-30 1997-08-15 Nec Eng Ltd パケット通信方式及びそのウィンドウサイズ変更方式
JP2000156706A (ja) * 1998-11-19 2000-06-06 Nippon Telegr & Teleph Corp <Ntt> データ送受信方法並びにデータ送信プログラムを記憶した媒体及びデータ受信プログラムを記憶した媒体
JP2006120080A (ja) * 2004-10-25 2006-05-11 Nec Corp Webサービス要求中継システム、Webサービス要求中継方法、中継サーバ、及びそのプログラム

Also Published As

Publication number Publication date
JP2006166439A (ja) 2006-06-22
US20060133278A1 (en) 2006-06-22
US7730196B2 (en) 2010-06-01
EP1667017A1 (en) 2006-06-07
CN1783852B (zh) 2012-05-16
KR101143172B1 (ko) 2012-05-11
ATE428972T1 (de) 2009-05-15
KR20060063652A (ko) 2006-06-12
CN1783852A (zh) 2006-06-07
EP1667017B1 (en) 2009-04-15
DE602005013894D1 (de) 2009-05-28

Similar Documents

Publication Publication Date Title
JP4714572B2 (ja) ウェブサービスのための信頼性のあるメッセージングプロトコルを使用したメッセージの効率的な転送
US7369498B1 (en) Congestion control method for a packet-switched network
JP4972304B2 (ja) ウェブサービス環境用の信頼できるメッセージング内の接続生存性の検証および維持
JP5816718B2 (ja) 通信装置、通信システム、およびデータ通信の中継方法
US6741555B1 (en) Enhancement of explicit congestion notification (ECN) for wireless network applications
US6625118B1 (en) Receiver based congestion control
US6757248B1 (en) Performance enhancement of transmission control protocol (TCP) for wireless network applications
US7978599B2 (en) Method and system to identify and alleviate remote overload
US7016971B1 (en) Congestion management in a distributed computer system multiplying current variable injection rate with a constant to set new variable injection rate at source node
US20180004705A1 (en) Selective acknowledgment of RDMA packets
US20080317017A1 (en) Data Unit Sender and Data Unit Relay Device
US20050213507A1 (en) Dynamically provisioning computer system resources
EP1670214A1 (en) Reliable one-way messaging over request-response transport protocols
CA2237208A1 (en) Congestion notification from router
US20030128672A1 (en) Transmission and flow control
WO2018155406A1 (ja) 通信システム、通信装置、方法およびプログラム
CN116566920A (zh) 一种数据传输控制方法及相关装置
EP2311226B1 (en) Controlling data flow through a data communications link
US8418017B2 (en) Adaptive acknowledgment mechanism for network communication
JP2005509370A (ja) 信頼性の低い通信環境における通信効率および性能の改良
WO2000065782A1 (en) Overload control method for a packet-switched network
JP2006087010A (ja) 通信路制御装置およびそれを用いたネットワークシステム
KR20010113124A (ko) 패킷 전송을 위한 메시지 처리방법

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20081113

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20101117

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20101126

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20110221

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

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20110311

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20110328

LAPS Cancellation because of no payment of annual fees