Patent ID: 8352636

Claim:
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 device; (b) spawning, at the first device, a first virtual machine for a network connection that virtualizes network capabilities of the first device such that a first virtual network connection is provided; (c) spawning, at the first device, a second virtual machine for a network connection that virtualizes network capabilities of the first device such that a second virtual network connection is provided; (d) spawning, at a second device, a third virtual machine for a network connection that virtualizes network capabilities of the second device such that a third virtual network connection is provided; (e) spawning, at the second device, a fourth virtual machine for a network connection that virtualizes network capabilities of the second device such that a fourth virtual network connection is provided; (f) spawning, at a third device, a fifth virtual machine for a network connection that virtualizes network capabilities of the third device such that a fifth virtual network connection is provided; (g) establishing a first connection between the first device, via the first virtual network connection, and the second device, via the third virtual network connection, over a first network path; (h) establishing a second connection between the first device, via the second virtual network connection, and the second device, via the fourth virtual network connection, over a second network path, the second network path including the third device; (i) determining that the second network path represents a trusted path; (j) determining that a first packet does not need to be routed via a trusted connection; (k) transmitting the first packet from the first device using the first virtual network connection for communication via the first network path; (l) determining that a second packet needs to be routed via a trusted connection; (m) transmitting the second packet from the first device using the second virtual network connection for communication via the second network path; (n) receiving, at the third device using the fifth virtual network connection, the second packet; (o) transmitting, using the fifth virtual network connection, the second packet onward along the second network path; and (p) receiving, at the second device using the fourth virtual network connection, the second packet; (q) wherein the first network path and the second network path are different.