Patent ID: 8429293

Claim:
A method of facilitating network communications, comprising the steps of: (a) first, (i) communicating by a first end-user device, to a server, network contact information of the first end-user device, and (ii) communicating by a second end-user device, to the server, network contact information of the second end-user device; and (b) thereafter, communicating data from an application running on the first end-user device to the second end-user device by, (i) communicating, by the first end-user device, a request to the server to engage in communications with the second end-user device, (ii) communicating, by the server, the request received from the first end-user device, (iii) communicating, by the second end-user device, acceptance to the server of the request to engage in communications with the first end-user device, (iv) communicating connection information, by the server, to one or more of the first and second end-user devices for enabling an open network connection between the first and second end-user devices, (v) spawning, at the first end-user 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 to the application, the application running external to the first virtual machine, (vi) spawning, at the second end-user device, a second virtual machine for a network connection that virtualizes network capabilities of the second device such that a second virtual network connection is provided, (vii) spawning, at a third end-user device, a third virtual machine for a network connection that virtualizes network capabilities of the third device such that a third virtual network connection is provided, (viii) establishing a network connection between the first device, via the first virtual network connection, and the second device, via the second virtual network connection, over a network path using the connection information, the network path including the third device, (ix) transmitting a packet from the first device using the first virtual network connection for communication via the network path, (x) receiving, at the third device using the third virtual network connection, the packet, and communicating the packet onward along the network path, and (xi) receiving, at the second device using the second virtual network connection, the packet.