IP Library Granted Patent US 8,341,291
Granted Patent B2
US 8,341,291 · App. 13/241,687 · Granted Dec 25, 2012

Network communications of application running on device utilizing virtual network connection and routing protocol based on application connection criteria

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 8,341,291
App. No.
13/241,687
Granted
Dec 25, 2012
Kind
B2
Abstract

A method of providing network communications using virtualization includes steps of creating a virtual machine instance that runs on a device and that virtualizes network capabilities of the device such that a virtual network connection is provided, detecting a request for a network connection from an application running on the device, determining application-specific information associated with the application, using the application-specific information associated with the application, selecting a routing protocol from among a plurality of available routing protocols for communicating data from the application over a network using the virtual network connection, and, using the selected routing protocol, communicating data from the application over the network to a device using the virtual network connection of the virtual machine instance.

Claims (52)

1. A method of providing network communications using virtualization, 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 instance 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) querying an application interface to determine application-specific connection criteria associated with the application;

(d) using the application-specific connection criteria associated with the application, 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

(e) using the selected routing protocol of said step (d), communicating data from the application over the network in a plurality of packets to a destination device, the method involving, for each packet,

(i) transmitting, from the first device using the first virtual network connection and the selected routing protocol, the packet for communication to the destination device,

(ii) receiving, at networking hardware of a second device, the packet,

(iii) intercepting, by a second virtual machine instance that runs on the second device and that virtualizes network capabilities of the second device such that a second virtual network connection is provided, the packet as it is passed from the networking hardware of the second device,

(iv) selecting, at the second device based on the selected routing protocol, a next node to transmit the packet to,

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

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

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

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

3. The method of claim 1 , wherein the first virtual machine instance is created before the application-specific connection criteria associated with the application is determined.

4. The method of claim 1 , wherein the first virtual machine instance is created after the application-specific connection criteria associated with the application is determined.

5. The method of claim 1 , wherein the first virtual machine instance is created in response to the request for a network connection from the application running on the first device.

6. The method of claim 1 , wherein the method further includes

(a) spawning another virtual machine instance that runs on the first device and virtualizes network capabilities of the first device such that another virtual network connection is provided;

(b) selecting another routing protocol from among the plurality of available routing protocols for communicating data from the application using the another virtual network connection; and

(c) using the selected another routing protocol, communicating data from the application to another device using the another virtual network connection.

7. The method of claim 1 , wherein the method further includes

(a) spawning another virtual machine instance that runs on the first device and virtualizes network capabilities of the first device such that another virtual network connection is provided;

(b) determining application-specific connection criteria associated with a second application;

(c) using the application-specific connection criteria associated with the second application, selecting another routing protocol from among a plurality of available routing protocols for communicating data from the second application over a network using the another virtual network connection; and

(d) using the selected another routing protocol, communicating data from the second application over the network to another device using the another virtual network connection.

8. The method of claim 1 , further comprising the steps of:

(a) creating another virtual machine instance that runs on the first device and that virtualizes network capabilities of the first device such that another virtual network connection of the second virtual machine is provided;

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

(c) determining application-specific connection criteria associated with the second application;

(d) using the application-specific connection criteria associated with the second application, selecting a routing protocol from among the plurality of available routing protocols for communicating data using the another virtual network connection of the another virtual machine instance; and

(e) using the selected routing protocol for the another virtual network connection, communicating data from the second application to another device using the another virtual network connection of the another virtual machine instance.

9. The method of claim 1 , wherein the first virtual machine instance encapsulates a single hardware network interface of the first device.

10. The method of claim 1 , wherein the first virtual machine instance encapsulates a plurality of hardware network interfaces of the first device.

11. The method of claim 1 , wherein the plurality of available routing protocols includes 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.

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

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

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

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

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

(a) intercepting, by a controller loaded on a first device, a message for the network adapter that originated on the first device, the message being associated with an application running on the first device;

(b) spawning, at the first device in response to the intercepting of the message for the network adapter, a first virtual machine instance 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) querying an application interface to determine application-specific connection criteria associated with the application;

(d) using the application-specific connection criteria associated with the application, 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

(e) using the selected routing protocol of said step (d), communicating data from the application over the network in a plurality of packets to a destination device, the method involving, for each packet,

(i) transmitting, from the first device using the first virtual network connection and the selected routing protocol, the packet for communication to the destination device,

(ii) receiving, at networking hardware of a second device, the packet,

(iii) intercepting, by a second virtual machine instance that runs on the second device and that virtualizes network capabilities of the second device such that a second virtual network connection is provided, the packet as it is passed from the networking hardware of the second device,

(iv) selecting, at the second device based on the selected routing protocol, a next node to transmit the packet to,

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

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

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

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 →