US 7,483,943 B2
Reliable messaging using clocks with synchronized rates
Gopala Krishna R. Kakivaya, Sammamish, Wash. (US); and David E. Langworthy, Kirkland, Wash. (US)
Assigned to Microsoft Corporation, Redmond, Wash. (US)
Filed on Sep. 21, 2004, as Appl. No. 10/946,386.
Prior Publication US 2006/0064464 A1, Mar. 23, 2006
Int. Cl. G06F 15/16 (2006.01); G06F 7/04 (2006.01); G06F 7/58 (2006.01); H04L 9/00 (2006.01); H04L 9/32 (2006.01); G06K 9/00 (2006.01); G06K 19/00 (2006.01)
U.S. Cl. 709—203  [709/206; 713/171; 726/9] 10 Claims
OG exemplary drawing
 
1. At a destination computer system that is network connectable along with one or more other computer systems, including a source computer system, to a network, the destination computer system and at least the source computer system having synchronized clock rates, the synchronized clock rates between the source computer system and the destination computing system causing the source computer system and the destination computer system to perceive the movement of time at virtually the same rate, a method for reliably processing a message, the method comprising:
an act of receiving a first copy of a message from the source computer system, the first copy of the message having a message ID and a TTL value, the message ID identifying the position of the message in an interaction between a message source and the destination computer system, the TTL value indicating the length of time before a source side countdown timer, set prior to sending the first copy of the message, expires, expiration of the source side countdown time indicating when the source computer system is to terminate retransmissions of the message, the TTL value set to a plurality of the roundtrip latency between the source computer system and the destination computer system, the TTL value set to support a corresponding plurality of retransmissions of the message;
an act of setting a destination side countdown timer to expire at the destination computer system after the length of time indicated in the TTL value, the destination computer system configured to retain the message ID until the countdown timer expires or a corresponding ACKACK is received, the destination computer system knows from expiration of the destination side countdown timer that the source computer system all ready considers the message to be lost based on the source computer system and the destination computer system having synchronized clock rates;
an act of detecting expiration of the countdown timer;
in response to detecting expiration of the countdown timer:
an act of determining that retransmission of the message has already been terminated at the sending computer system due to prior expiration of the sending side countdown timer and based on the computer system and the destination computer system having synchronized clock rates; and
an act of updating an interaction cache to indicate that the message has been processed;
an act of receiving a second copy of the message subsequent to processing the first copy of the message, the second copy of the message having the message ID; and
an act of discarding the second copy of the message based on the interaction cache indicating that a message having the message ID was previously processed.