IP Library Granted Patent US 9,219,673
Granted Patent B2
US 9,219,673 · App. 14/690,350 · Granted Dec 22, 2015

Crisscross cancellation protocol

Inventors: Atul Adya (Redmond, WA); Alastair Wolman (Seattle, WA); John D Dunagan (Bellevue, WA)
Assignee: MICROSOFT TECHNOLOGY LICENSING, LLC
H04L43/10H04L65/1003H04L67/14H04L67/142
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 9,219,673
App. No.
14/690,350
Granted
Dec 22, 2015
Kind
B2
Abstract

Technologies, systems, and methods for ordered message delivery that avoid message races or crisscrosses between communicating nodes. For example, if Node A sends message 3 towards Node B and, shortly thereafter, Node B sends message X to Node A, Node A would like to know whether or not message X reflects Node B's state after receiving message 3 . If Node B received message 3 prior to sending message X, then proper state may be maintained between the nodes. But if messages 3 and X crisscrossed, or if message 3 was never properly received by Node B, then the state between the nodes may be corrupt. Technologies, systems, and methods are provided to avoid such corruption.

Claims (38)

1. A method performed on a computing device that includes at least one processor, memory, and a communications component, the method comprising:

receiving, by the computing device via the communications component, a message that comprises a set of variables configured for use in detecting a message race condition in a communications session between the computing device and a remote computing device, the set of variables including:

a nonce state variable that comprises a value that identifies the communications session according to the computing device,

a counter state variable that comprises a value that indicates a last message sent by the computing device to the remote computing device,

a remote nonce state variable that comprises a value that identifies the communications session according to the remote computing device as known by the computing device, and

a remote counter state variable that comprises a value that indicates a last valid message received by the computing device from the remote computing device.

2. The method of claim 1 where the value of the nonce state variable uniquely identifies the communications session.

3. The method of claim 1 where the value of the counter state variable is a monotonically increasing value that corresponds to the last message sent by the computing device to the remote computing device.

4. The method of claim 1 where the value of the remote nonce state variable is initialized to a value different than that of a previous nonce.

5. The method of claim 1 where the value of the remote counter state variable is initialized to an initialization value.

6. The method of claim 1 where the received message comprises a header that includes the nonce state variable, the counter state variable, the remote nonce state variable, and the remote counter state variable.

7. The method of claim 1 where the last valid message received by the computing device from the remote computing device comprises a header that includes another nonce state variable, another counter state variable, another remote nonce state variable, and another the remote counter state variable.

8. A computing device comprising:

at least one processor;

memory coupled to the at least one processor;

a communications component implemented at least in part by the at least one processor and configured to receive a message into the memory that comprises a set of variables configured for use in detecting a message race condition in a communications session between the computing device and a remote computing device, the set of variables including:

a nonce state variable comprises a value that identifies a communications session according to the computing device,

a counter state variable comprises a value that indicates a last message sent by the computing device to a remote computing device,

a remote nonce state variable comprises a value that identifies a current communications session according to the remote computing device as known by the computing device, and

a remote counter state variable comprises a value that indicates a last valid message received by the computing device from the remote computing device.

9. The computing device of claim 8 where the value of the nonce state variable uniquely identifies the communications session.

10. The computing device of claim 8 where the value of the counter state variable is a monotonically increasing value that corresponds to the last message sent by the computing device to the remote computing device.

11. The computing device of claim 8 where the value of the remote nonce state variable is initialized to a value different than that of a previous nonce.

12. The computing device of claim 8 where the value of the remote counter state variable is initialized to an initialization value.

13. The computing device of claim 8 where the received message comprises a header that includes the nonce state variable, the counter state variable, the remote nonce state variable, and the remote counter state variable.

14. The computing device of claim 8 where the last valid message received by the computing device from the remote computing device comprises a header that includes another nonce state variable, another counter state variable, another remote nonce state variable, and another the remote counter state variable.

15. At least one computer storage device comprising:

memory that comprises computer-executable instructions that, based on execution by a computing device that includes a communications component, configure the computing device to:

receive a message that comprises a set of variables configured for use in detecting a message race condition in a communications session between the computing device and a remote computing device, the set of variables including:

a nonce state variable comprises a value that identifies a communications session according to the computing device,

a counter state variable comprises a value that indicates a last message sent by the computing device to a remote computing device,

a remote nonce state variable comprises a value that identifies a current communications session according to the remote computing device as known by the computing device, and

a remote counter state variable comprises a value that indicates a last valid message received by the computing device from the remote computing device.

16. The at least one computer storage device of claim 15 where the value of the nonce state variable uniquely identifies the communications session.

17. The at least one computer storage device of claim 15 where the value of the counter state variable is a monotonically increasing value that corresponds to the last message sent by the computing device to the remote computing device.

18. The at least one computer storage device of claim 15 where the value of the remote nonce state variable is initialized to a value different than that of a previous nonce, or where the value of the remote counter state variable is initialized to an initialization value.

19. The at least one computer storage device of claim 15 where the received message comprises a header that includes the nonce state variable, the counter state variable, the remote nonce state variable, and the remote counter state variable.

20. The at least one computer storage device of claim 15 where the last valid message received by the computing device from the remote computing device comprises a header that includes another nonce state variable, another counter state variable, another remote nonce state variable, and another the remote counter state variable.

Assignments (2)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Oct 27, 2015
From: ADYA, ATUL; WOLMAN, ALASTAIR; DUNAGAN, JOHN D.
To: MICROSOFT CORPORATION
Reel/Frame 036895/0659 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Oct 27, 2015
From: MICROSOFT CORPORATION
To: MICROSOFT TECHNOLOGY LICENSING, LLC
Reel/Frame 036895/0734 →
Continuity (4)
Continuation 13684156 · Nov 22, 2012
Continuation 12824092 · Jun 25, 2010
Continuation 11858140 · Sep 20, 2007
Related Publication 20150222518A1 · Aug 6, 2015