IP Library Granted Patent US 11,625,280
Granted Patent B2
US 11,625,280 · App. 16/836,847 · Granted Apr 11, 2023

Cloud-native proxy gateway to cloud resources

Inventors: Eric Michael Anderson (Friendswood, TX); Brendan Farrell (Austin, TX); Saifuddin Fazlehusen Rangwala (Pune, IN); Ajoy Kumar (Santa Clara, CA)
Assignee: BMC Software, Inc.
G06F9/5072G06F9/45558G06F9/547H04L12/4633H04L12/66H04L63/029H04L63/0272G06F2009/45595H04L67/10
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,625,280
App. No.
16/836,847
Granted
Apr 11, 2023
Kind
B2
Abstract

A cloud-native proxy gateway is reachable from a central server and from an isolated cloud VM. A method allows legacy (non-cloud native) solutions to establish a secure connection to the isolated cloud VM, even when incoming port flows are not enabled. The method involves transforming a TCP/IP network connection request into a cloud API call, ignoring IP addresses, and instead using a unique cloud resource identifier as the primary network routing methodology. In response to a communication connection request by the central server, the isolated VM establishes a reverse tunnel to the cloud-native proxy gateway. Communication flow initiated by the central server proceeds through the reverse tunnel to the isolated VM, avoiding an issue of duplicate IP addresses in the cloud.

Claims (84)

1. A method for establishing connection to a virtual machine (VM) in a cloud, the method comprising:

initiating, at a central server, a request for connection to a target cloud VM, the target cloud VM being one of a plurality of target cloud VMs and the request specifying a unique resource identifier (ID) of the target cloud VM, wherein the unique resource ID of the target cloud VM is a string of characters not in an Internet Protocol (IP) address format;

determining whether the unique resource ID of the target cloud VM is registered in a cloud network domain in a local hosts file;

when the unique resource ID is registered in the local hosts file, connecting to a cloud-native proxy gateway;

directing the request for connection to the target cloud VM to the cloud-native proxy gateway, the cloud-native proxy gateway being reachable from each one of the plurality of target cloud VMs and the central server; and

establishing a reverse tunnel from the target cloud VM back to the cloud-native proxy gateway.

2. The method of claim 1 , further comprising:

at the cloud-native proxy gateway,

assigning a local port to the reverse tunnel.

3. The method of claim 2 , further comprising:

at the cloud-native proxy gateway,

sending incoming communication flow from the central server to the target cloud VM through the reverse tunnel by adjusting a port designated in the incoming communication flow to the local port assigned to the reverse tunnel.

4. The method of claim 3 , further comprising:

at the cloud-native proxy gateway,

for outgoing communication flow from the target cloud VM, adjusting the local port back to the port originally designated in the incoming communication flow and making a connection to a local host on the port originally designated in the incoming communication flow.

5. The method of claim 1 , further comprising:

keeping the connection from the central server to the cloud-native proxy gateway alive while establishing the reverse tunnel.

6. The method of claim 1 , wherein establishing the reverse tunnel from the target cloud VM back to the cloud-native proxy gateway includes looking up calling information for the target cloud VM in a cloud resources inventory, the calling information including information needed to issue an Application Programming Interface (API) call to establish a shell connection to the target cloud VM.

7. The method of claim 1 , wherein establishing the reverse tunnel from the target cloud VM back to the cloud-native proxy gateway includes issuing a command to an agent in the target cloud VM to establish the reverse tunnel from the target cloud VM back to the cloud-native proxy gateway.

8. The method of claim 1 , further comprising:

directing incoming communication flow to the target cloud VM through the reverse tunnel.

9. The method of claim 1 , further comprising:

when the unique resource ID of the target cloud VM is not registered in a cloud network domain in the local hosts file, forwarding the request to a local network.

10. A computer program product for establishing connection to virtual machine (VM) in a cloud, the computer program product including instructions recorded on a non-transitory computer-readable storage medium and configured to cause one or more processors to:

initiate, at a central server, a request for connection to a target cloud VM, the target cloud VM being one of a plurality of target cloud VMs and the request specifying a unique resource identifier (ID) of the target cloud VM, wherein the unique resource ID of the target cloud VM is a string of characters not in an Internet Protocol (IP) address format;

determine whether the unique resource ID of the target cloud VM is registered in a cloud network domain in a local hosts file;

when the unique resource ID of the target cloud VM is registered in the local hosts file, connect to a cloud-native proxy gateway;

direct the request for connection to the target cloud VM to the cloud-native proxy gateway, the cloud-native proxy gateway being reachable from each one of the plurality of target cloud VMs and the central server; and

establish a reverse tunnel from the target cloud VM back to the cloud-native proxy gateway.

11. The computer program product of claim 10 , wherein the instructions are configured to further cause the one or more processors to:

at the cloud-native proxy gateway,

assign a local port to the reverse tunnel.

12. The computer program product of claim 11 , wherein the instructions are configured to further cause the one or more processors to:

at the cloud-native proxy gateway,

send incoming communication flow directed to the target cloud VM through the reverse tunnel by adjusting a port designated in the incoming communication flow to the local port assigned to the reverse tunnel.

13. The computer program product of claim 12 , wherein the instructions are configured to further cause the one or more processors to:

at the cloud-native proxy gateway,

for outgoing communication flow from the target cloud VM, adjust the local port back to the port originally designated in the incoming communication flow and make a connection to a local host on the port originally designated in the incoming communication flow.

14. The computer program product of claim 10 , wherein the instructions are configured to further cause the one or more processors to:

keep the connection from the central server to the cloud-native proxy gateway alive while establishing the reverse tunnel.

15. The computer program product of claim 10 , wherein establishing the reverse tunnel from the target cloud VM back to the cloud-native proxy gateway includes looking up calling information for the target cloud VM in a cloud resources inventory, the calling information including information needed to issue an Application Programming Interface (API) call to establish a shell connection to the target cloud VM.

16. The computer program product of claim 10 , wherein establishing the reverse tunnel from the target cloud VM back to the cloud-native proxy gateway includes issuing a command to an agent in the target cloud VM to establish the reverse tunnel from the target cloud VM back to the cloud-native proxy gateway.

17. The computer program product of claim 10 , wherein the instructions are configured to further cause the one or more processors to:

direct incoming communication flow to the target cloud VM through the reverse tunnel.

18. The computer program product of claim 10 , wherein the instructions are configured to further cause the one or more processors to:

when the unique resource ID of the target cloud VM is not registered in the cloud network domain in the local hosts file, forward the request to a local network.

19. A system for establishing connection to a virtual machine (VM) in a cloud, the system comprising:

one or more processors;

a memory;

a central server;

a cloud-native proxy gateway; and

a cloud resources inventory,

the one or more processors in conjunction with the memory configured to:

at the central server, initiate a request for connection to a target cloud VM, the target cloud VM being one of a plurality of target cloud VMs and the request specifying a unique resource identifier (ID) of the target cloud VM, wherein the unique resource ID of the target cloud VM is a string of characters not in an Internet Protocol (IP) address format;

determine whether the unique resource ID of the target cloud VM is registered in a cloud network domain in a local hosts file;

when the unique resource ID is registered in the local hosts file, connect to the cloud-native proxy gateway;

direct the request for connection to the target cloud VM to the cloud-native proxy gateway, the cloud-native proxy gateway being reachable from each one of the plurality of target cloud VMs and the central server; and

establish a reverse tunnel from the target cloud VM back to the cloud-native proxy gateway.

20. The system of claim 19 , wherein the one or more processors in conjunction with the memory are further configured to:

at the cloud-native proxy gateway,

assign a local port to the reverse tunnel.

21. The system of claim 20 , wherein the one or more processors in conjunction with the memory are further configured to:

at the cloud-native proxy gateway,

send incoming communication flow from the central server to the target cloud VM through the reverse tunnel by adjusting a port designated in the incoming communication flow to the local port assigned to the reverse tunnel.

22. The system of claim 21 , wherein the one or more processors in conjunction with the memory are further configured to:

at the cloud-native proxy gateway,

for outgoing communication flow from the target cloud VM, adjust the local port back to the port originally designated in the incoming communication flow and make a connection to a local host on the port originally designated in the incoming communication flow.

23. The system of claim 19 , wherein the one or more processors in conjunction with the memory are further configured to:

keep the connection from the central server to the cloud-native proxy gateway alive while establishing the reverse tunnel.

24. The system of claim 19 , wherein establishing the reverse tunnel from the target cloud VM back to the cloud-native proxy gateway includes looking up calling information for the target cloud VM in a cloud resources inventory, the calling information including information needed to issue an Application Programming Interface (API) call to establish a shell connection to the target cloud VM.

25. The system of claim 19 , wherein establishing the reverse tunnel from the target cloud VM back to the cloud-native proxy gateway includes issuing a command to an agent in the target cloud VM to establish the reverse tunnel from the target cloud VM back to the cloud-native proxy gateway.

26. The system of claim 19 , wherein the one or more processors in conjunction with the memory are further configured to:

direct incoming communication flow to the target cloud VM through the reverse tunnel.

27. The system of claim 19 , wherein the one or more processors in conjunction with the memory are further configured to:

when the unique resource ID of the target cloud VM is not registered in a cloud network domain in the local hosts file, forward the request to a local network.

28. A method for establishing connections to virtual machines (VMs) in a cloud environment, the method comprising:

initiating, at a central server, requests for connections to a plurality of target cloud VMs using a unique resource identifier (ID) for each of the plurality of target cloud VMs without using Internet Protocol (IP) addresses to request the connections to the plurality of target cloud VMs;

connecting to a cloud-native proxy gateway;

directing the requests for the connections to the plurality of target cloud VMs to the cloud-native proxy gateway, the cloud-native proxy gateway being reachable from the plurality of target cloud VMs and the central server; and

establishing a reverse tunnel from each of the plurality of target cloud VMs to the cloud-native proxy gateway including looking up calling information for each of the plurality of target cloud VMs in a cloud resources inventory, the calling information including information to issue an Application Programming Interface (API) call to establish a shell connection to each of the plurality of target cloud VMs.

29. The method of claim 28 , further comprising:

directing communication flow to and from the plurality of target cloud VMs through the reverse tunnel for each of the plurality of target cloud VMs.

30. The method of claim 28 , further comprising:

discovering and registering a plurality of new target cloud VMs using a unique resource ID for each of the plurality of new target cloud VMs.

Assignments (12)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Mar 7, 2025
From: BMC SOFTWARE, INC.
To: BMC HELIX, INC.
Reel/Frame 070442/0197 →
GRANT OF SECOND LIEN SECURITY INTEREST IN PATENT RIGHTS Recorded Nov 13, 2024
From: BMC SOFTWARE, INC.; BLADELOGIC, INC.
To: GOLDMAN SACHS BANK USA, AS COLLATERAL AGENT
Reel/Frame 069352/0568 →
GRANT OF FIRST LIEN SECURITY INTEREST IN PATENT RIGHTS Recorded Nov 13, 2024
From: BMC SOFTWARE, INC.; BLADELOGIC, INC.
To: GOLDMAN SACHS BANK USA, AS COLLATERAL AGENT
Reel/Frame 069352/0628 →
RELEASE OF SECURITY INTEREST IN PATENTS PREVIOUSLY RECORDED AT REEL/FRAME (052854/0139) Recorded Aug 6, 2024
From: THE BANK OF NEW YORK MELLON TRUST COMPANY, N.A., AS COLLATERAL AGENT
To: BMC SOFTWARE, INC.; BLADELOGIC, INC.
Reel/Frame 068339/0617 →
RELEASE OF SECURITY INTEREST IN PATENTS PREVIOUSLY RECORDED AT REEL/FRAME (052844/0646) Recorded Aug 6, 2024
From: THE BANK OF NEW YORK MELLON TRUST COMPANY, N.A., AS COLLATERAL AGENT
To: BMC SOFTWARE, INC.; BLADELOGIC, INC.
Reel/Frame 068339/0408 →
OMNIBUS ASSIGNMENT OF SECURITY INTERESTS IN PATENT COLLATERAL Recorded Mar 4, 2024
From: CREDIT SUISSE AG, CAYMAN ISLANDS BRANCH, AS RESIGNING COLLATERAL AGENT
To: GOLDMAN SACHS BANK USA, AS SUCCESSOR COLLATERAL AGENT
Reel/Frame 066729/0889 →
TERMINATION AND RELEASE OF SECURITY INTEREST IN PATENTS Recorded Feb 1, 2024
From: ALTER DOMUS (US) LLC
To: BMC SOFTWARE, INC.; BLADELOGIC, INC.
Reel/Frame 066567/0283 →
GRANT OF SECOND LIEN SECURITY INTEREST IN PATENT RIGHTS Recorded Sep 30, 2021
From: BMC SOFTWARE, INC.; BLADELOGIC, INC.
To: ALTER DOMUS (US) LLC
Reel/Frame 057683/0582 →
SECURITY INTEREST Recorded Jun 4, 2020
From: BMC SOFTWARE, INC.; BLADELOGIC, INC.
To: THE BANK OF NEW YORK MELLON TRUST COMPANY, N.A., AS COLLATERAL AGENT
Reel/Frame 052844/0646 →
SECURITY INTEREST Recorded Jun 4, 2020
From: BMC SOFTWARE, INC.; BLADELOGIC, INC.
To: THE BANK OF NEW YORK MELLON TRUST COMPANY, N.A., AS COLLATERAL AGENT
Reel/Frame 052854/0139 →
SECURITY INTEREST Recorded Jun 4, 2020
From: COMPUWARE CORPORATION; BMC SOFTWARE, INC.; BLADELOGIC, INC.
To: CREDIT SUISSE, AG, CAYMAN ISLANDS BRANCH, AS COLLATERAL AGENT
Reel/Frame 053467/0434 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Apr 14, 2020
From: ANDERSON, ERIC MICHAEL; FARRELL, BRENDAN; RANGWALA, SAIFUDDIN FAZLEHUSEN; KUMAR, AJOY
To: BMC SOFTWARE, INC.
Reel/Frame 052389/0979 →
Continuity (1)
Related Publication 20210303366A1 · Sep 30, 2021
Cited By (1)
US 12,683,933