IP Library Granted Patent US 9,634,931
Granted Patent B2
US 9,634,931 · App. 15/162,546 · Granted Apr 25, 2017

Providing network communications using virtualization based on protocol information in packet

Inventor: Robert W. Twitchell, Jr. (Cumming, GA)
Assignee: DISPERSIVE NETWORKS, INC.
H04L45/586H04L47/17H04L51/06H04L67/06H04L69/22H04L69/28H04L69/32H04L69/14H04L69/18
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,634,931
App. No.
15/162,546
Granted
Apr 25, 2017
Kind
B2
Abstract

A method of providing network communications includes spawning a virtual machine that virtualizes network capabilities of the device such that a virtual network connection is provided; using the virtual network connection, transmitting a packet to a first node using a first routing protocol for communication to a destination device; setting a timer, the timer having a value corresponding to an amount of time greater than an average response time of the destination device; and, upon expiration of the timer, transmitting the packet to a second node using a second routing protocol for communication to the destination device.

Claims (65)

1. A method of providing network communications, comprising the steps of:

(a) detecting, at a first device, a request for a network connection from an application running on the first device;

(b) spawning, at the first device in response to the request for a network connection, a first virtual machine that runs on the first device and that virtualizes network capabilities of the first device such that a first virtual network connection is provided;

(c) programmatically selecting, at the first device, a routing protocol from among a plurality of available routing protocols for communicating data from the application over a network using the first virtual network connection; and

(d) determining, at the first device, a first intermediate node to transmit a packet to, the determination being based on

(i) the selected routing protocol, and

(ii) a routing table maintained at the first device;

(e) transmitting, from the first device using the first virtual network connection, the packet to a second device corresponding to the first intermediate node for communication to a destination node, the packet including

(i) an indication of the destination node, and

(ii) protocol information corresponding to the selected routing protocol;

(f) spawning, at the second device, a second virtual machine that runs on the second device and that virtualizes network capabilities of the second device such that a second virtual network connection is provided;

(g) receiving, at the second device via the second virtual network connection that virtualizes network capabilities of the second device, the packet transmitted by the first device;

(h) determining, at the second device, a third device to which to transmit the packet, said determination being informed by the protocol information contained in the packet; and

(i) transmitting the packet to the third device using the second virtual network connection;

(j) wherein the application runs outside of the first virtual machine.

2. The method of claim 1 , wherein the plurality of available routing protocols include the Interior Gateway Routing Protocol (IGRP), the Enhanced Interior Gateway Routing Protocol (EIGRP), the Border Gateway Protocol (BGP), and the Constrained Shortest Path First (CSPF) protocol.

3. The method of claim 1 , wherein the second device comprises a computer.

4. The method of claim 3 , wherein the computer includes a plurality of processing cores.

5. The method of claim 1 , wherein the second device is a mobile phone.

6. The method of claim 1 , wherein, in said step of determining a third device to transmit the packet to, the determination is further informed by network information stored at the second device.

7. The method of claim 6 , wherein the method further includes the steps of

(a) receiving, at the second device, a second packet, the second packet including network data contained therein; and

(b) updating, based on the network data, the network information stored at the device.

8. The method of claim 1 , further comprising a step of querying, by the first device, the network for network information.

9. The method of claim 8 , wherein the network information comprises backbone information.

10. A method, comprising the steps of:

(a) detecting, at a first device, a request for a network connection from an application running on the first device;

(b) spawning, at the first device in response to the request for a network connection, a first virtual machine that runs on the first device and that virtualizes network capabilities of the first device such that a first virtual network connection is provided;

(c) programmatically selecting, at the first device, a routing protocol from among a plurality of available routing protocols for communicating data from the application over a network using the first virtual network connection; and

(d) determining, at the first device, a first intermediate node to transmit a packet to, the determination being based on

(i) the selected routing protocol, and

(ii) a routing table maintained at the first device;

(e) transmitting, from the first device using the first virtual network connection, the packet to a client device corresponding to the first intermediate node for communication to a destination node, the packet including

(i) an indication of the destination node, and

(ii) protocol information;

(f) spawning, at the client device, a second virtual machine that runs on the second device and that virtualizes network capabilities of the second device such that a second virtual network connection is provided;

(g) receiving, at the client device via the second virtual network connection that virtualizes network capabilities of the client device, the packet;

(h) analyzing, at the client device, the packet;

(i) based at least partially on information from the analyzed packet, selecting, at the client device, a routing protocol from among a plurality of available routing protocols; and

(j) transmitting, from the client device via the second virtual network connection that virtualizes network capabilities of the client device, utilizing the routing protocol selected at the client device, the packet over the network;

(k) wherein the application runs outside of the first virtual machine.

11. The method of claim 10 , wherein the method further includes a step of appending additional information, including information associated with the client device, to the payload of the packet prior to transmitting the packet, from the client device, over the network.

12. The method of claim 10 , wherein the payload of the packet includes an indication of a protocol to be utilized, and wherein said step of analyzing, at the client device, the packet comprises identifying this indication, and said step of selecting, at the client device, a routing protocol comprises selecting the routing protocol indicated in the payload of the packet.

13. The method of claim 10 , wherein the packet includes an indication of a protocol to be utilized, and wherein said step of analyzing, at the client device, the packet comprises identifying this indication, and said step of selecting, at the client device, a routing protocol comprises selecting the routing protocol indicated in the packet.

14. The method of claim 10 , wherein the client device comprises a computer.

15. The method of claim 10 , wherein the client device comprises a mobile phone.

16. The method of claim 10 , wherein the plurality of available routing protocols include the Interior Gateway Routing Protocol (IGRP), the Enhanced Interior Gateway Routing Protocol (EIGRP), the Border Gateway Protocol (BGP), and the Constrained Shortest Path First (CSPF) protocol.

17. A method of providing network communications, comprising the steps of:

(a) detecting, at a first device, a request for a network connection from an application running on the first device;

(b) spawning, at the first device in response to the request for a network connection, a first virtual machine that runs on the first device and that virtualizes network capabilities of the first device such that a first virtual network connection is provided;

(c) programmatically selecting, at the first device, a routing protocol from among a plurality of available routing protocols for communicating data from the application over a network using the first virtual network connection; and

(d) determining, at the first device, a first intermediate node to transmit a first packet to, the determination being based on

(i) the selected routing protocol, and

(ii) a routing table maintained at the first device;

(e) transmitting, from the first device using the first virtual network connection, the first packet to a second device corresponding to the first intermediate node for communication to a destination node, the packet including

(i) an indication of the destination node, and

(ii) protocol information corresponding to the selected routing protocol;

(f) spawning, at the first device, a second virtual machine that runs on the first device and that virtualizes network capabilities of the first device such that a second virtual network connection is provided;

(g) receiving, at the first device via the second virtual network connection that virtualizes network capabilities of the first device, a second packet;

(h) determining, at the first device, a third device to which to transmit the second packet, said determination being informed by protocol information contained in the second packet; and

(i) transmitting the second packet to the third device using the second virtual network connection;

(j) wherein the application runs outside of the first virtual machine.

18. The method of claim 17 , wherein the first device comprises a computer.

19. The method of claim 17 , wherein the first device comprises a mobile phone.

20. The method of claim 17 , wherein the plurality of available routing protocols include the Interior Gateway Routing Protocol (IGRP), the Enhanced Interior Gateway Routing Protocol (EIGRP), the Border Gateway Protocol (BGP), and the Constrained Shortest Path First (CSPF) protocol.

Assignments (7)
CORRECTIVE ASSIGNMENT TO CORRECT THE PATENT NUMBER 10/333,972 PREVIOUSLY RECORDED AT REEL: 56729 FRAME: 001. ASSIGNOR(S) HEREBY CONFIRMS THE ASSIGNMENT. Recorded Mar 14, 2024
From: DISPERSIVE NETWORKS, INC.
To: ASSET RECOVERY ASSOCIATES, LLC
Reel/Frame 066797/0207 →
CORRECTIVE ASSIGNMENT TO CORRECT THE IN PROPERTY NUMBERS, PATENT NUMBER 10333972 IS INCORRECT PREVIOUSLY RECORDED AT REEL: 056422 FRAME: 0951. ASSIGNOR(S) HEREBY CONFIRMS THE ASSIGNMENT. Recorded Jun 9, 2023
From: DISPERSIVE NETWORKS, INC.
To: DISPERSIVE HOLDINGS, INC.
Reel/Frame 066946/0776 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jun 30, 2021
From: DISPERSIVE NETWORKS, INC.
To: ASSET RECOVERY ASSOCIATES, LLC
Reel/Frame 056729/0001 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded May 28, 2021
From: DISPERSIVE NETWORKS, INC.
To: DISPERSIVE HOLDINGS, INC.
Reel/Frame 056422/0951 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded May 24, 2021
From: DISPERSIVE NETWORKS, INC.
To: DISPERSIVE HOLDINGS, INC.
Reel/Frame 056333/0687 →
CHANGE OF NAME Recorded May 23, 2016
From: DISPERSIVE NETWORKS INC.
To: DISPERSIVE NETWORKS, INC.
Reel/Frame 038794/0947 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded May 23, 2016
From: TWITCHELL, ROBERT W., JR
To: DISPERSIVE NETWORKS INC.
Reel/Frame 038794/0971 →
Continuity (6)
Continuation 13242173 · Sep 23, 2011
Continuation 12499075 · Jul 7, 2009
Continuation In Part 12253926 · Oct 17, 2008
Provisional Application 60999603 · Oct 17, 2007
Provisional Application 61133935 · Jul 7, 2008
Related Publication 20160294687A1 · Oct 6, 2016