IP Library Granted Patent US 11,057,340
Granted Patent B2
US 11,057,340 · App. 16/574,116 · Granted Jul 6, 2021

Per-application split-tunneled UDP proxy

Inventors: Puran Chand (Bangalore, IN); Craig Farley Newell (Atlanta, GA); Amit Kumar Yadav (Bangalore, IN)
Assignee: VMWARE, INC.
H04L61/1511H04L61/2592H04L63/166H04L69/164
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 11,057,340
App. No.
16/574,116
Granted
Jul 6, 2021
Kind
B2
Abstract

Disclosed are various embodiments for providing split-tunneled network connectivity on a per-application basis. A request to make a universal datagram protocol (UDP) connection to a remote host specified by an internet protocol (IP) address in the request is received from a network driver. A hostname lookup table is queried to determine a hostname associated with the IP address for the remote host. A policy is identified based on the hostname associated with the IP address for the remote host. Then, the UDP connection is routed based on the policy.

Claims (83)

1. A system for transparently proxying connections based on host names, comprising:

a computing device comprising a processor and a memory;

a network driver configured to provide network access to applications installed on the computing device, wherein the network driver is further configured to cause the computing device to at least:

obtain a request to make a universal datagram protocol (UDP) connection from an application executing on the computing device, the request to a remote host specified by a destination internet protocol (IP) address in the request;

determine an identifier for the application initiating the request;

determine whether the identifier is present in a list of managed applications;

in an instance in which the identifier is present in the list of managed applications, make a connection to:

a tunnel client stored in the memory that, when executed by the processor, causes the processor to at least:

receive from the network driver the request;

query a hostname lookup table to determine a hostname associated with the IP address for the remote host;

identify a policy based on the hostname associated with the destination IP address for the remote host, wherein the policy specifies that the UDP connection is to be routed through a tunneled connection maintained by the tunnel client;

route the UDP connection through the tunneled connection based on the policy;

identify a source IP address of a UDP response to the UDP connection;

replace the source IP address of the UDP response with the destination IP address specified in the UDP connection; and

provide the UDP response to the network driver.

2. The system of claim 1 , wherein the tunnel client further causes the computing device to utilize the tunnel client as a domain name service (DNS) server for resolving DNS queries of applications executing on the computing device.

3. The system of claim 1 , wherein the tunnel client, when executed to route the UDP connection based on the policy, further causes the processor to send a response to the request from the network driver, the response comprising a command to the network driver for how to establish the UDP connection with a remote host.

4. The system of claim 1 ,

wherein the hostname lookup table is queried in an instance in which the application is specifically configured to utilize the network driver.

5. The system of claim 1 , wherein the policy is a first policy and the tunnel client is further configured to cause the computing device to at least:

identify a type of network traffic of the UDP connection;

identify a second policy based on the type of network traffic, the second policy also specifying that the UDP connection is to be routed through a tunneled connection maintained by the tunnel client; and

wherein the UDP connection is routed through the tunneled connection based on the first policy and the second policy.

6. The system of claim 1 , wherein the tunnel client is further configured to cause the computing device to at least:

receive a domain name service (DNS) query from an application initiating the request to make the UDP connection;

resolve the DNS query; and

provide a DNS response to the application initiating the request to make the UDP connection.

7. The system of claim 6 , wherein resolution of the DNS query further comprises the tunnel client causing the computing device to at least:

relay the DNS query to a first DNS server reachable through the tunneled connection; and

relay the DNS query to a second DNS server reachable through an untunneled connection.

8. A method for transparently proxying connections based on host names, comprising:

obtaining, by a network driver, a request to make a universal datagram protocol (UDP) connection from an application, the request to a remote host specified by a destination internet protocol (IP) address in the request;

determining, by the network driver, an identifier for the application initiating the request;

determining, by the network driver, whether the identifier is present in a list of managed applications;

in an instance in which the identifier is present in the list of managed applications, making, by the network driver, a connection to a tunnel client configured to execute a method, comprising:

receiving the request;

querying a hostname lookup table to determine a hostname associated with the IP address for the remote host;

identifying a policy based on the hostname associated with the destination IP address for the remote host, wherein the policy specifies that the UDP connection is to be routed through a tunneled connection maintained by the tunnel client;

routing the UDP connection through the tunneled connection based on the policy;

identifying a source IP address of a UDP response to the UDP connection;

replacing the source IP address of the UDP response with the destination IP address specified in the UDP connection; and

providing the UDP response to the network driver.

9. The method of claim 8 ,

wherein querying the hostname lookup table occurs in an instance in which the application is specifically configured to utilize the network driver.

10. The method of claim 8 , further comprising:

receiving a domain name service (DNS) query from an application initiating the request to make the UDP connection;

resolving the DNS query; and

providing a DNS response to the application initiating the request to make the UDP connection.

11. The method of claim 10 , wherein resolving the DNS query further comprises:

relaying the DNS query to a first DNS server reachable through the tunneled connection; and

relaying the DNS query to a second DNS server reachable through an untunneled connection.

12. The method of claim 8 , wherein routing the UDP connection based on the policy further comprises sending a response to the request from the network driver, the response comprising a command to the network driver for how to establish the UDP connection with a remote host.

13. The method of claim 8 , wherein the policy is a first policy and the method further comprises

identifying a type of network traffic of the UDP connection;

identifying a second policy based on the type of network traffic, the second policy also specifying that the UDP connection is to be routed through the tunneled connection; and

wherein the UDP connection is routed through the tunneled connection based on the first policy and the second policy.

14. The method of claim 8 , wherein the type of network traffic comprises network traffic encrypted according to a version of the secure sockets layer (SSL) protocol or transport layer security (TLS) protocol.

15. A non-transitory computer-readable medium comprising machine-readable instructions for transparently proxying connections based on host names that, when executed by a processor of a computing device, cause the computing device to at least:

obtain, by a network driver, a request to make a universal datagram protocol (UDP) connection from an application executing on the computing device, the request to a remote host specified by a destination internet protocol (IP) address in the request;

determine, by the network driver, an identifier for the application initiating the request;

determine, by the network driver, whether the identifier is present in a list of managed applications;

in an instance in which the identifier is present in the list of managed applications, make, by the network driver, a connection to:

a tunnel client that, when executed, cause the computing device to at least:

receive a request to make a universal datagram protocol (UDP) connection to a remote host specified by a destination internet protocol (IP) address in the request;

query a hostname lookup table to determine a hostname associated with the IP address for the remote host;

identify a policy based on the hostname associated with the destination IP address for the remote host, wherein the policy specifies that the UDP connection is to be routed through a tunneled connection;

route the UDP connection through the tunneled connection based on the policy;

identify a source IP address of a UDP response to the UDP connection;

replace the source IP address of the UDP response with the destination IP address specified in the UDP connection; and

provide the UDP response to the network driver.

16. The non-transitory computer-readable medium of claim 15 ,

wherein the hostname lookup table is queried in an instance in which the application is specifically configured to utilize the network driver.

17. The non-transitory computer-readable medium of claim 15 , wherein the machine-readable instructions, when executed, further cause the computing device to at least:

receive a domain name service (DNS) query from an application initiating the request to make the UDP connection;

resolve the DNS query; and

provide a DNS response to the application initiating the request to make the UDP connection.

18. The non-transitory computer-readable medium of claim 17 , wherein the machine-readable instructions that cause the computing device to resolve the DNS query further cause the computing device to at least:

relay the DNS query to a first DNS server reachable through the tunneled connection; and

relay the DNS query to a second DNS server reachable through an untunneled connection.

19. The non-transitory computer-readable medium of claim 15 , wherein the policy is a first policy and machine-readable instructions, when executed, further cause the computing device to at least:

identify a type of network traffic of the UDP connection;

identify a second policy based on the type of network traffic, the second policy also specifying that the UDP connection is to be routed through the tunneled connection; and

wherein the UDP connection is routed through the tunneled connection based on the first policy and the second policy.

Assignments (4)
PATENT ASSIGNMENT Recorded Aug 5, 2024
From: VMWARE LLC
To: OMNISSA, LLC
Reel/Frame 068327/0365 →
SECURITY INTEREST Recorded Jul 3, 2024
From: OMNISSA, LLC
To: UBS AG, STAMFORD BRANCH
Reel/Frame 068118/0004 →
CHANGE OF NAME Recorded Apr 15, 2024
From: VMWARE, INC.
To: VMWARE LLC
Reel/Frame 067102/0314 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Sep 18, 2019
From: CHAND, PURAN; NEWELL, CRAIG FARLEY; YADAV, AMIT KUMAR
To: VMWARE, INC.
Reel/Frame 050409/0965 →