IP Library › Granted Patent US 7,730,196
Granted Patent B2
US 7,730,196 · App. 11/003,848 · Granted Jun 1, 2010

Efficient transfer of messages using reliable messaging protocols for web services

Assignee: Microsoft Corporation
View Patent ↗
Loading inventors, assignments & file history…
Monitor This Case
Get email alerts when status or documents change.
Order Certified Copies
Most orders are placed with the USPTO same day — all within 24 business hours.
Order via The Patent Place →
Pre-filled with this patent's details
Quick Facts
Patent No.
US 7,730,196
App. No.
11/003,848
Granted
Jun 1, 2010
Kind
B2
Abstract

The present invention provides for flow and congestion control mechanisms in accordance with a Reliable Message protocol for Web Services (RM-WS). For flow control, one endpoint informs another endpoint of its available buffer size by including buffer size information in response messages. The response messages, typically RM-WS infrastructure messages, are then used to determine an upper limit on the number of messages that can be sent to the acceptor in order to prevent resending messages due to buffer overrun. In the case of congestion control, embodiments provide for increasing the number of in-flight messages until a failure point is found. The last successful rate below the failure point is the closest known point to the optimum point. Example embodiments then reset and try again raising the rate back to the last known good point and fine tuning from there using an algorithm that asymptotes the optimum rate.

Claims (47)

1. At a computing system within a Web Services (WS) environment, a method of efficiently transferring messages between endpoints in accordance with a Reliable Messaging of WS (RM-WS) protocol by dynamically determining a message window size for sending the messages based on an acceptor's available buffer size, the method comprising acts of:

establishing, at an application layer, a sequence session between an initiator and an acceptor in accordance with a RM-WS protocol;

receiving over the sequence session a message that includes acceptor buffer size information, which indicates an amount of available memory for buffering messages that are awaiting processing by an application, wherein the acceptor's total amount of memory allocated for buffering messages is dynamically configurable on a per connection basis, wherein the allocated amount of memory is based on at least one of a plurality of factors;

identifying a number of in flight messages that have been sent to the acceptor without receiving corresponding acknowledgements in accordance with the RM-WS protocol; and

using the acceptor buffer size information and the number of in flight messages to calculate a message window size, which represents an upper limit on a number of messages that can be sent to the acceptor in order to prevent resending messages due to buffer overrun.

2. The method of claim 1 , wherein the message that includes the acceptor buffer size information is a RM-WS protocol infrastructure message.

3. The method of claim 2 , wherein the acceptor's total memory allocated for buffering messages awaiting processing by the application is dynamically configurable on a per connection basis.

4. The method of claim 2 , wherein based on the message window size being larger than zero the method further comprises an act of:

sending a number of messages corresponding to the calculated message window size.

5. The method of claim 2 , wherein based on the message window size being zero the method further comprises an act of:

blocking messages from being sent until an infrastructure message is used to calculate that the message window size is greater than zero.

6. The method of claim 5 , wherein the infrastructure message is an acknowledgment response message in accordance with the RM-WS protocol, the method further comprises an act of:

periodically sending acknowledgment request messages to the acceptor; and

receiving one or more acknowledgment response messages that include acceptor buffer size information for recalculating the message window size; and

when the recalculated message window size is greater than zero, sending a number of messages corresponding to the recalculated message window size.

7. The method of claim 2 , wherein the buffer information is in terms of the number of messages that can be sent, not the number of bytes available in memory.

8. The method of claim 2 , wherein the RM-WS protocol is WSReliableMessaging.

9. The method of claim 2 , wherein the infrastructure message is an acknowledgment message, which acknowledges receipt of one or more messages previously sent.

10. The method of claim 9 , wherein the calculation of the message window size is further based on a number of messages acknowledged in the acknowledgment message.

11. The method of claim 10 , wherein the calculation of the message window size is further based on a number of previously received acknowledgments for one or more previously sent messages.

12. At computing system within a Web Services (WS) environment, a computer program product for implementing a method of efficiently transferring messages between endpoints in accordance with a Reliable Messaging of WS (RM-WS) protocol by dynamically determining a message window size for sending the messages based on an acceptor's available buffer size, the computer program product comprising one or more computer readable storage media having stored thereon computer executable instructions that, when executed by a processor, can cause the messaging system to perform the following:

establish, at an application layer, a sequence session between an initiator and an acceptor in accordance with a RM-WS protocol;

receive over the sequence session a message that includes acceptor buffer size information, which indicates an amount of available memory for buffering messages that are awaiting processing by an application, wherein the acceptor's total amount of memory allocated for buffering messages is dynamically configurable on a per connection basis, wherein the allocated amount of memory is based on at least one of a plurality of factors;

identify a number of in flight messages that have been sent to the acceptor without receiving corresponding acknowledgements in accordance with the RM-WS protocol; and

use the acceptor buffer size information and the number of in flight messages to calculate a message window size, which represents an upper limit on a number of messages that can be sent to the acceptor in order to prevent resending messages due to buffer overrun.

13. The computer program product of claim 12 , wherein the message that includes the acceptor buffer size information is a RM-WS protocol infrastructure message.

14. The computer program product of claim 13 , wherein the acceptor's total memory allocated for buffering messages awaiting processing by the application is dynamically configurable on a per connection basis.

15. The computer program product of claim 13 , wherein based on the message window size being larger than zero, the computer program product further comprising computer executable instructions that can cause the messaging system to perform the following:

send a number of messages corresponding to the calculated message window size.

16. The computer program product of claim 13 , wherein based on the message window size being zero, the computer program product further comprising computer executable instructions that can cause the messaging system to perform the following:

block messages from being sent until an infrastructure message is used to calculate that the message window size is greater than zero.

17. The computer program product of claim 16 , wherein the infrastructure message is an acknowledgment response message in accordance with the RM-WS protocol, the computer program product further comprising computer executable instructions that can cause the messaging system to perform the following:

periodically send acknowledgment request messages to the acceptor; and

receive one or more acknowledgment response messages that include acceptor buffer size information for recalculating the message window size; and

when the recalculated message window size is greater than zero, send a number of messages corresponding to the recalculated message window size.

18. The computer program product of claim 13 , wherein the buffer information is in terms of the number of messages that can be sent, not the number of bytes available in memory.

19. The computer program product of claim 13 , wherein the RM-WS protocol is WSReliableMessaging.

20. The computer program product of claim 13 , wherein the infrastructure message is an acknowledgment message, which acknowledges receipt of one or more messages previously sent.

21. The computer program product of claim 20 , wherein the calculation of the message window size is further based on a number of messages acknowledged in the acknowledgment message.

22. The computer program product of claim 21 , wherein the calculation of the message window size is further based on a number of previously received acknowledgments for one or more previously sent messages.

23. A computer system comprising the following:

a processor;

system memory;

an establishing module for establishing, at an application layer, a sequence session between an initiator and an acceptor in accordance with a RM-WS protocol;

a receiving module for receiving over the sequence session a message that includes acceptor buffer size information, which indicates an amount of available memory for buffering messages that are awaiting processing by an application, wherein the acceptor's total amount of memory allocated for buffering messages is dynamically configurable on a per session basis, wherein the allocated amount of memory is based on the results of a negotiation between the initiator and the acceptor;

an identifying module for identifying a number of in flight messages that have been sent to the acceptor without receiving corresponding acknowledgements in accordance with the RM-WS protocol; and

a calculation module for using the acceptor buffer size information and the number of in flight messages to calculate a message window size, which represents an upper limit on a number of messages that can be sent to the acceptor in order to prevent resending messages due to buffer overrun.

Assignments (2)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Dec 9, 2014
From: MICROSOFT CORPORATION
To: MICROSOFT TECHNOLOGY LICENSING, LLC
Reel/Frame 034543/0001 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jan 3, 2005
From: HILL, RICHARD D.; BATRES, STEFAN R.
To: MICROSOFT CORPORATION
Reel/Frame 015507/0215 →
Continuity (1)
Related Publication 20060133278A1 · Jun 22, 2006