Low-latency hole punching
First Claim
1. A method for establishing a network connection between electronic devices in a network, the method comprising:
- at a first electronic device that includes a processing subsystem,wherein the processing system is configured to execute an operating system for the first electronic device that comprises a kernel and an application space, andwherein the processing subsystem is further configured to execute a virtual interface daemon in the application space in the operating system, wherein the virtual interface daemon appears as a network interface to the operating system,the processing subsystem performing operations for the virtual interface daemon, the operations comprising;
determining that a relay server is being used to send packets to and receive packets from a second electronic device;
in parallel with continuing to send packets to and receive packets from the second electronic device using the relay server, performing operations to establish a peer to peer network connection with the second electronic device; and
when the peer to peer network connection has been established, stopping using the relay server to send packets to and receive packets from the second electronic device, and instead using the peer to peer network connection with the second electronic device to send packets to and receive packets from the second electronic device;
wherein sending packets using the relay server or the peer to peer network connection comprises, in the virtual interface daemon;
receiving the packets from the kernel of the operating system, adding corresponding information to the packets to configure the packets to be sent using either the relay server or the peer to peer network connection, and returning the updated packets to the kernel of the operating system to be sent therefrom.
1 Assignment
0 Petitions
Accused Products
Abstract
Described is a system for establishing a network connection between electronic devices in a network. In the described embodiments, a first electronic device is configured to determine that a relay server is being used to send packets to and receive packets from a second electronic device. In parallel with continuing to send packets to and receive packets from the second electronic device using the relay server, the first electronic device is configured to perform operations to establish a peer to peer network connection with the second electronic device. When the peer to peer network connection has been established, the first electronic device is configured to stop using the relay server to send packets to and receive packets from the second electronic device, and instead use the peer to peer network connection with the second electronic device to send packets to and receive packets from the second electronic device.
-
Citations
30 Claims
-
1. A method for establishing a network connection between electronic devices in a network, the method comprising:
at a first electronic device that includes a processing subsystem, wherein the processing system is configured to execute an operating system for the first electronic device that comprises a kernel and an application space, and wherein the processing subsystem is further configured to execute a virtual interface daemon in the application space in the operating system, wherein the virtual interface daemon appears as a network interface to the operating system, the processing subsystem performing operations for the virtual interface daemon, the operations comprising; determining that a relay server is being used to send packets to and receive packets from a second electronic device; in parallel with continuing to send packets to and receive packets from the second electronic device using the relay server, performing operations to establish a peer to peer network connection with the second electronic device; and when the peer to peer network connection has been established, stopping using the relay server to send packets to and receive packets from the second electronic device, and instead using the peer to peer network connection with the second electronic device to send packets to and receive packets from the second electronic device; wherein sending packets using the relay server or the peer to peer network connection comprises, in the virtual interface daemon;
receiving the packets from the kernel of the operating system, adding corresponding information to the packets to configure the packets to be sent using either the relay server or the peer to peer network connection, and returning the updated packets to the kernel of the operating system to be sent therefrom.- View Dependent Claims (2, 3, 4, 5, 6, 7, 8, 9, 10)
-
11. A non-transitory computer-readable storage medium containing instructions that, when executed by a processing subsystem in a first electronic device, cause the first electronic device to perform a method for establishing a network connection between the first electronic device and a second electronic device in a network, the method comprising:
-
in the processing subsystem in the first electronic device, wherein the processing system is configured to execute an operating system for the first electronic device that comprises a kernel and an application space, and wherein the processing subsystem is further configured to execute a virtual interface daemon in the application space in the operating system, wherein the virtual interface daemon appears as a network interface to the operating system, performing operations for the virtual interface daemon, the operations comprising; determining that a relay server is being used to send packets to and receive packets from a second electronic device; in parallel with continuing to send packets to and receive packets from the second electronic device using the relay server, performing operations to establish a peer to peer network connection with the second electronic device; and when the peer to peer network connection has been established, stopping using the relay server to send packets to and receive packets from the second electronic device, and instead using the peer to peer network connection with the second electronic device to send packets to and receive packets from the second electronic device; wherein sending packets using the relay server or the peer to peer network connection comprises, in the virtual interface daemon;
receiving the packets from the kernel of the operating system, adding corresponding information to the packets to configure the packets to be sent using either the relay server or the peer to peer network connection, and returning the updated packets to the kernel of the operating system to be sent therefrom. - View Dependent Claims (12, 13, 14, 15, 16, 17, 18, 19, 20)
-
-
21. A first electronic device, comprising:
-
a processing subsystem, wherein the processing system is configured to execute an operating system for the first electronic device that comprises a kernel and an application space, and wherein the processing subsystem is further configured to execute a virtual interface daemon in the application space in the operating system, wherein the virtual interface daemon appears as a network interface to the operating system, wherein the processing subsystem is further configured to perform operations for the virtual interface daemon, the operations comprising; determining that a relay server is being used to send packets to and receive packets from a second electronic device; in parallel with continuing to send packets to and receive packets from the second electronic device using the relay server, performing operations to establish a peer to peer network connection with the second electronic device; and when the peer to peer network connection has been established, stopping using the relay server to send packets to and receive packets from the second electronic device, and instead using the peer to peer network connection with the second electronic device to send packets to and receive packets from the second electronic device; wherein sending packets using the relay server or the peer to peer network connection comprises, in the virtual interface daemon;
receiving the packets from the kernel of the operating system, adding corresponding information to the packets to configure the packets to be sent using either the relay server or the peer to peer network connection, and returning the updated packets to the kernel of the operating system to be sent therefrom. - View Dependent Claims (22, 23, 24, 25, 26, 27, 28, 29, 30)
-
Specification