IP Library Granted Patent US 9,253,293
Granted Patent B2
US 9,253,293 · App. 14/586,919 · Granted Feb 2, 2016

Fault-tolerant communications in routed networks

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,253,293
App. No.
14/586,919
Granted
Feb 2, 2016
Kind
B2
Abstract

A method for providing fault-tolerant network communications between a plurality of nodes for an application, including providing a plurality of initial communications pathways over a plurality of networks coupled between the plurality of nodes, receiving a data packet on a sending node from the application, the sending node being one of the plurality of nodes, the data packet being addressed by the application to an address on one of the plurality of nodes, and selecting a first selected pathway for the data packet from among the plurality of initial communications pathways where the first selected pathway is a preferred pathway.

Claims (44)

1. A system comprising a computing device and at least one program module that are together configured for performing actions, where the computing device includes a processor and memory, the actions for providing fault tolerant communications, via a fault tolerant driver operating on a first device that is the computing device, between the first device and a second device, the first device comprising an application coupled to a first protocol driver that is coupled to the fault tolerant driver that is coupled to a first network adapter and to a second protocol driver that is paired with a second network adapter, the first device coupled to the second device through a first pathway via the first network adapter, and the first device further coupled to the second device through a second pathway via the second network adapter, the actions comprising sending actions and receiving actions,

the sending actions comprising:

receiving, by the fault tolerant driver, out-going data from the application via the first protocol driver;

selecting, by the fault tolerant driver based on a condition, the first pathway or the second pathway;

routing, by the fault tolerant driver in response to selecting the first pathway, the out-going data received from the application via the first protocol driver through the first pathway via the first network adapter to the second device; and

routing, by the fault tolerant driver in response to selecting the second pathway, the out-going data received from the application via the first protocol driver through the second pathway via the second protocol driver and the second network adapter to the second device; and

the receiving actions comprising:

forwarding, by the fault tolerant driver in response to receiving in-coming data from the second device through the first pathway via the first network adapter, at least a portion of the received in-coming data via the first protocol driver to the application; and

forwarding, by the fault tolerant driver in response to receiving in-coming data from the second device through the second pathway via the second network adapter and the second protocol driver, at least the portion of the received in-coming data via the first protocol driver to the application.

2. The system of claim 1 where the condition indicates a failure of a pathway.

3. The system of claim 2 where the failure is detected based on one or more heartbeat packets.

4. The system of claim 1 where the condition indicates a preferred pathway.

5. The system of claim 4 further comprising calculating, by the fault tolerant driver, the preferred pathway.

6. The system of claim 1 where the first device is further coupled to the second device through a plurality of other pathways via corresponding network adapters.

7. The system of claim 6 where at least one of the routings comprises load-balancing the out-going data received from the application via the first protocol driver across a plurality of pathways.

8. A method performed on a computing device that includes a processor and memory, the method for providing fault tolerant communications, via a fault tolerant driver operating on a first device that is the computing device, between the first device and a second device, the first device comprising an application coupled to a first protocol driver that is coupled to the fault tolerant driver that is coupled to a first network adapter and to a second protocol driver that is paired with a second network adapter, the first device coupled to the second device through a first pathway via the first network adapter, and the first device further coupled to the second device through a second pathway via the second network adapter, the method for performing sending actions and receiving actions,

the sending actions comprising:

receiving, by the fault tolerant driver, out-going data from the application via the first protocol driver;

selecting, by the fault tolerant driver based on a condition, the first pathway or the second pathway;

routing, by the fault tolerant driver in response to selecting the first pathway, the out-going data received from the application via the first protocol driver through the first pathway via the first network adapter to the second device; and

routing, by the fault tolerant driver in response to selecting the second pathway, the out-going data received from the application via the first protocol driver through the second pathway via the second protocol driver and the second network adapter to the second device; and

the receiving actions comprising:

forwarding, by the fault tolerant driver in response to receiving in-coming data from the second device through the first pathway via the first network adapter, at least a portion of the received in-coming data via the first protocol driver to the application; and

forwarding, by the fault tolerant driver in response to receiving in-coming data from the second device through the second pathway via the second network adapter and the second protocol driver, at least the portion of the received in-coming data via the first protocol driver to the application.

9. The method of claim 8 where the condition indicates a failure of a pathway.

10. The method of claim 9 where the failure is detected based on one or more heartbeat packets.

11. The method of claim 8 where the condition indicates a preferred pathway.

12. The method of claim 11 further comprising calculating, by the fault tolerant driver, the preferred pathway.

13. The method of claim 8 where the first device is further coupled to the second device through a plurality of other pathways via corresponding network adapters.

14. The method of claim 13 where at least one of the routings comprises load-balancing the out-going data received from the application via the first protocol driver across a plurality of pathways.

15. At least one computer storage device storing computer-executable instructions that, when executed by a processor of a computing device that includes and memory, cause the computing device to perform actions for providing fault tolerant communications, via a fault tolerant driver operating on a first device that is the computing device, between the first device and a second device, the first device comprising an application coupled to a first protocol driver that is coupled to the fault tolerant driver that is coupled to a first network adapter and to a second protocol driver that is paired with a second network adapter, the first device coupled to the second device through a first pathway via the first network adapter, and the first device further coupled to the second device through a second pathway via the second network adapter, the actions comprising sending actions and receiving actions,

the sending actions comprising:

receiving, by the fault tolerant driver, out-going data from the application via the first protocol driver;

selecting, by the fault tolerant driver based on a condition, the first pathway or the second pathway;

routing, by the fault tolerant driver in response to selecting the first pathway, the out-going data received from the application via the first protocol driver through the first pathway via the first network adapter to the second device; and

routing, by the fault tolerant driver in response to selecting the second pathway, the out-going data received from the application via the first protocol driver through the second pathway via the second protocol driver and the second network adapter to the second device; and

the receiving actions comprising:

forwarding, by the fault tolerant driver in response to receiving in-coming data from the second device through the first pathway via the first network adapter, at least a portion of the received in-coming data via the first protocol driver to the application; and

forwarding, by the fault tolerant driver in response to receiving in-coming data from the second device through the second pathway via the second network adapter and the second protocol driver, at least the portion of the received in-coming data via the first protocol driver to the application.

16. The at least one computer storage device of claim 15 where the condition indicates a failure of a pathway, or where the condition indicates a preferred pathway.

17. The at least one computer storage device of claim 16 where the failure is detected based on one or more heartbeat packets.

18. The at least one computer storage device of claim 16 further comprising calculating, by the fault tolerant driver, the preferred pathway.

19. The at least one computer storage device of claim 15 where the first device is further coupled to the second device through a plurality of other pathways via corresponding network adapters.

20. The at least one computer storage device of claim 19 where at least one of the routings comprises load-balancing the out-going data received from the application via the first protocol driver across a plurality of pathways.

Assignments (2)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Dec 7, 2015
From: MASSA, MICHAEL T.; OPAVSKY, RUDOLF; DION, DAVID A.
To: MICROSOFT CORPORATION
Reel/Frame 037225/0044 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jan 27, 2015
From: MICROSOFT CORPORATION
To: MICROSOFT TECHNOLOGY LICENSING, LLC
Reel/Frame 034819/0001 →