IP Library Granted Patent US 9,167,025
Granted Patent B2
US 9,167,025 · App. 13/241,733 · Granted Oct 20, 2015

Network communications of application running on device utilizing routing of data packets using virtual network connection

Inventor: Robert W. Twitchell (Cumming, GA)
Assignee: DISPERSIVE NETWORKS INC.
H04L67/06H04L45/586H04L69/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,167,025
App. No.
13/241,733
Granted
Oct 20, 2015
Kind
B2
Abstract

A method of routing a data packet using a virtual network connection includes steps of detecting a request for a network connection from an application running on a device, spawning a virtual machine that virtualizes network capabilities of the device such that a virtual network connection is provided, selecting a routing protocol from among a plurality of available routing protocols for communicating data using the virtual network connection, determining a first node to which to communicate data from the application using the virtual network connection and the selected routing protocol, said determination being based on network information stored at the device, and communicating data from the application to the first node using the virtual network connection and the selected routing protocol.

Claims (55)

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

(a) detecting, at a first device, a plurality of requests for network connections and, for each respective request, spawning, in response thereto, a respective virtual machine that virtualizes network capabilities of the first device such that a respective virtual network connection is provided;

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

(c) spawning, at the first device, a first virtual machine that virtualizes network capabilities of the first device such that a first virtual network connection is provided to the application, the application running external to the first virtual machine;

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

(e) determining, at the first device, a first node for a path to a destination device over which to communicate data from the application using the first virtual network connection, said determination being based on the selected routing protocol and network information stored at the first device;

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

(g) determining, at the second device, a second node for the path to the destination device over which to communicate data from the application using the first virtual network connection, said determination being based on the selected routing protocol and network information stored at the second device;

(h) using the selected routing protocol, communicating data from the application in a plurality of packets to the destination device, the method involving, for each packet,

(i) transmitting, from the first device using the first virtual network connection, the packet to the second device for communication to the destination device,

(ii) receiving, at the second virtual machine that runs on the second device representing the first node and that virtualizes network capabilities of the second device such that a second virtual network connection is provided, the packet,

(iii) transmitting, from the second device, the packet to a third device representing the second node for communication to the destination device, and

(iv) receiving, at a third virtual machine that runs on the third device representing the second node and that virtualizes network capabilities of the third device such that a third virtual network connection is provided, the packet,

(v) transmitting, from the third device, the packet for communication to the destination device, and

(vi) receiving, at a fourth virtual machine that runs on the destination device and that virtualizes network capabilities of the destination device, the packet.

2. The method of claim 1 , wherein the first virtual machine is created by a monitor.

3. The method of claim 1 , wherein the first virtual machine is created by a monitor in response to a controller that is configured to intercept messages sent to a network adapter.

4. The method of claim 1 , wherein the first device includes a plurality of processing cores.

5. The method of claim 1 , wherein the application is a video game.

6. The method of claim 1 , wherein the first device is a personal computer.

7. The method of claim 1 , wherein the first device is a handheld mobile device.

8. The method of claim 1 , wherein the method further comprises the steps of determining application-specific information associated with the application.

9. The method of claim 1 , wherein the first virtual machine is spawned in response to detecting the request for the network connection from the application.

10. A method of providing network communications using virtualization, comprising the steps of:

(a) detecting, at a first device, a plurality of requests for network connections and, for each respective request, spawning, in response thereto, a respective virtual machine that virtualizes network capabilities of the first device such that a respective virtual network connection is provided;

(b) spawning, at the first device, a first virtual machine that virtualizes network capabilities of the first device such that a first virtual network connection is provided to an application, the application running external to the first virtual machine;

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

(d) determining, at the first device, a first node for a path to a destination device over which to communicate data from the application using the first virtual network connection, said determination being based on the selected routing protocol and network information stored at the first device;

(e) spawning, at the second device representing the first node, a second virtual machine that virtualizes network capabilities of the second device such that a second virtual network connection is provided;

(f) determining, at the second device, a second node for the path to the destination device over which to communicate data from the application using the first virtual network connection, said determination being based on the selected routing protocol and network information stored at the second device;

(g) using the selected routing protocol, communicating data from the application in a plurality of packets to the destination device, the method involving, for each packet,

(i) transmitting, from the first device using the first virtual network connection, the packet to the second device for communication to the destination device,

(ii) receiving, at the second virtual machine that runs on the second device representing the first node and that virtualizes network capabilities of the second device such that a second virtual network connection is provided, the packet,

(iii) transmitting, from the second device, the packet to a third device representing the second node for communication to the destination device, and

(iv) receiving, at a third virtual machine that runs on the third device representing the second node and that virtualizes network capabilities of the third device such that a third virtual network connection is provided, the packet,

(v) transmitting, from the third device, the packet for communication to the destination device, and

(vi) receiving, at a fourth virtual machine that runs on the destination device and that virtualizes network capabilities of the destination device, the packet.

11. The method of claim 10 , wherein the device includes a plurality of processing cores.

12. The method of claim 10 , wherein the application is a video game.

13. The method of claim 10 , wherein the first device is a personal computer.

14. The method of claim 10 , wherein the first device is a handheld mobile device.

15. A method of providing network communications using virtualization, comprising the steps of:

(a) detecting, at a first device, a plurality of requests for network connections and, for each respective request, spawning, in response thereto, a respective virtual machine that virtualizes network capabilities of the first device such that a respective virtual network connection is provided;

(b) spawning, at the first device, a first virtual machine that virtualizes network capabilities of the first device such that a first virtual network connection is provided to an application, the application running external to the first virtual machine;

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

(d) determining, at the first device, a first node for a path to a destination device over which to communicate data from the application using the first virtual network connection, said determination being based on the selected routing protocol and network information stored at the first device;

(e) spawning, at the second device representing the first node, a second virtual machine that virtualizes network capabilities of the second device such that a second virtual network connection is provided;

(f) determining, at the second device, a second node for the path to the destination device over which to communicate data from the application using the first virtual network connection, said determination being based on the selected routing protocol and network information stored at the second device;

(g) using the selected routing protocol, communicating data from the application in a plurality of packets to the destination device, the method involving, for each packet,

(i) transmitting, from the first device using the first virtual network connection, the packet to the second device for communication to the destination device,

(ii) receiving, at the second virtual machine that runs on the second device representing the first node and that virtualizes network capabilities of the second device such that a second virtual network connection is provided, the packet,

(iii) transmitting, from the second device, the packet to a third device representing the second node for communication to the destination device, and

(iv) receiving, at a third virtual machine that runs on the third device representing the second node and that virtualizes network capabilities of the third device such that a third virtual network connection is provided, the packet,

(v) transmitting, from the third device, the packet for communication to the destination device, and

(vi) receiving, at the destination device, the packet.

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 Jan 13, 2016
From: DISPERSIVE NETWORKS INC.
To: DISPERSIVE NETWORKS, INC.
Reel/Frame 037515/0042 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Sep 8, 2015
From: TWITCHELL, ROBERT W., JR
To: DISPERSIVE NETWORKS INC.
Reel/Frame 036514/0114 →
Continuity (5)
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 20120017212A1 · Jan 19, 2012