IP Library Granted Patent US 8,848,704
Granted Patent B2
US 8,848,704 · App. 13/241,746 · Granted Sep 30, 2014

Facilitating network routing using virtualization

Inventor: Robert W. Twitchell (Cumming, GA)
Assignee: Dispersive Networks Inc.
H04L67/06H04L69/14H04L45/586H04L69/32H04L69/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 8,848,704
App. No.
13/241,746
Granted
Sep 30, 2014
Kind
B2
Abstract

A method of facilitating network routing using virtualization includes receiving, at a second device via a virtual machine for a network connection that virtualizes network capabilities of the second device, a packet transmitted by a first device, the packet including a header and a payload, the virtual machine being spawned and managed by virtual dispersive routing (VDR) software; loading, by the VDR software, information from the packet into memory of the second device; appending, by the VDR software, to the payload of the packet, information associated with the second device; and transmitting the packet to a third device using the virtualized network capabilities of the virtual machine.

Claims (94)

1. A method of facilitating network routing 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 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) determining application-specific information associated with the application;

d) using the application-specific information 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) determining, at the first device, a first intermediate node to transmit a plurality of packets to, the determination being based on

(i) the selected routing protocol, and

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

(f) transmitting, from the first device using the first virtual network connection, the plurality of packets to a second device corresponding to the first intermediate node for communication to a destination node, the packets including

(i) an indication of the destination node, and

(ii) an indication of the selected routing protocol;

(g) 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;

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

(i) loading, at the second device, information from the packet into memory of the second device;

(j) appending, at the second device, to a payload of the packet, information associated with the second device;

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

(i) the indication of the destination node contained in the packet,

(ii) the indication of the routing protocol contained in the packet, and

(iii) a routing table maintained at the second device; and

(l) transmitting, from the second device using the second virtual network connection, the packet to a third device corresponding to the second intermediate node for communication to the destination node;

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

2. The method of claim 1 , wherein the indication of the routing protocol contained in the packet is contained in the payload of the packet.

3. The method of claim 1 , wherein said step of appending, to the payload of the packet, information associated with the second device comprises utilizing application specific knowledge to select information for appending tailored to the needs of a specific application.

4. The method of claim 1 , wherein the method further comprises a step of determining, based on application information in the payload of the packet received at the second device via the virtual machine, an originating application associated with the packet.

5. 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.

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

7. The method of claim 1 , wherein the second device comprises a mobile phone.

8. The method of claim 1 , wherein the method further comprises storing, at the second device, network information from the packet in a computer readable medium.

9. The method of claim 1 , wherein the method further comprises updating, at the second device, the routing table maintained at the second device based on network data from the packet.

10. A method of facilitating network routing 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 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) determining application-specific information associated with the application;

d) using the application-specific information 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) determining, at the first device, a first intermediate node to transmit a plurality of packets to, the determination being based on

(i) the selected routing protocol, and

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

(f) transmitting, from the first device using the first virtual network connection, the plurality of packets to a second device corresponding to the first intermediate node for communication to a destination node, the packets including

(i) an indication of the destination node, and

(ii) an indication of the selected routing protocol;

(g) 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;

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

(i) loading, at the second device, information from the packet into memory of the second device;

(j) appending, at the second device, to a payload of the packet, information associated with the second device;

(k) selecting, at the second device based on the indication of the application contained in the packet, a second routing protocol from among a plurality of available routing protocols for communicating data over the network using the second virtual network connection;

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

(i) the indication of the destination node contained in the packet,

(ii) the selected second routing protocol, and

(iii) a routing table maintained at the second device; and

(m) transmitting, from the second device using the second virtual network connection, the packet to a third device corresponding to the second intermediate node for communication to the destination node;

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

11. The method of claim 10 , wherein the first routing protocol is the same routing protocol as the second routing protocol.

12. The method of claim 10 , wherein the first routing protocol is a different routing protocol than the second routing protocol.

13. The method of claim 10 , wherein said step of appending, to the payload of the packet, information associated with the second device comprises utilizing the indication of the application contained in the packet to select information for appending tailored to the needs of a specific application.

14. The method of claim 10 , 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.

15. The method of claim 10 , wherein the second device comprises a computer.

16. The method of claim 15 , wherein the computer includes a plurality of processing cores.

17. The method of claim 10 , wherein the second device comprises a mobile phone.

18. The method of claim 10 , wherein the method further comprises storing, at the second device, network information from the packet in a computer readable medium.

19. The method of claim 1 , wherein the method further comprises updating, at the second device, the routing table maintained at the second device based on network data from the packet.

20. A method of facilitating network routing 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 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) determining application-specific information associated with the application;

(d) using the application-specific information associated with the application, selecting, at the first device, a first 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) determining, at the first device, a first intermediate node to transmit a plurality of packets to, the determination being based on

(i) the selected first routing protocol, and

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

(f) transmitting, from the first device using the first virtual network connection, the plurality of packets to a second device corresponding to the first intermediate node for communication to a first destination node, the packets including

(i) an indication of the first destination node, and

(ii) an indication of the selected first routing protocol;

(g) 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;

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

(i) an indication of a second destination, and

(ii) an indication of a second routing protocol;

(i) loading, at the first device, information from the first packet into memory of the first device;

(j) appending, at the first device, to a payload of the first packet, information associated with the first device;

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

(i) the indication of the second destination node contained in the first packet,

(ii) the indication of the second routing protocol contained in the first packet, and

(iii) the routing table maintained at the first device;

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

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

(n) receiving, at the first device via the third virtual network connection that virtualizes network capabilities of the first device, a second packet transmitted by a fourth device, the first packet containing

(i) an indication of a third destination node, and

(ii) an indication of a third routing protocol;

(o) loading, at the first device, information from the second packet into memory of the first device;

(p) appending, at the first device, to a payload of the second packet, information associated with the first device;

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

(i) the indication of the third destination node contained in the second packet,

(ii) the indication of the third routing protocol contained in the second packet, and

(iii) the routing table maintained at the first device; and

(r) transmitting, from the first device using the third virtual network connection, the packet to a fifth device corresponding to the third intermediate node for communication to the third destination node;

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

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 20120020352A1 · Jan 26, 2012