IP Library Granted Patent US 8,572,605
Granted Patent B1
US 8,572,605 · App. 11/118,624 · Granted Oct 29, 2013

Source switching of virtual machines

Inventors: Gil Tene (San Carlos, CA); Shyam Prasad Pillalamarri (Los Altos Hills, CA)
Assignee: Azul Systems, Inc.
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 8,572,605
App. No.
11/118,624
Granted
Oct 29, 2013
Kind
B1
Abstract

Stitching a proxied connection between a first core virtual machine (VM) and a second core VM is disclosed. Stitching includes determining that a stitched connection should be generated between the first core VM and the second core VM and generating the stitched connection between the first core VM and the second core VM.

Claims (47)

1. A method of stitching a proxied connection between a first core virtual machine (VM) and a second core VM, including:

establishing the proxied connection between the first core VM and the second core VM, the proxied connection connecting the first core VM and the second core VM via a first shell VM and a second shell VM;

determining that a stitched connection should be generated between the first core VM and the second core VM, including:

publishing a first connection description from the first core VM and a second connection description from the second core VM; and

determining that a source associated with the first connection description corresponds to a destination associated with the second connection description, and a destination associated with the first connection description corresponds to a source associated with the second connection description; and

generating the stitched connection between the first core VM and the second core VM for replacing the proxied connection, wherein information is transferred over the stitched connection instead of the proxied connection, thereby bypassing the first shell VM and the second shell VM.

2. A method as recited in claim 1 , further including receiving a second connection description from the second core VM.

3. A method as recited in claim 1 , wherein a server receives a first connection description from the first core VM.

4. A method as recited in claim 1 , wherein a server receives a first connection description from the first core VM and a second connection description from the second core VM and determines that there is a match.

5. A method as recited in claim 1 , wherein determining includes receiving an indication of a match from a server.

6. A method as recited in claim 1 , wherein the first core VM includes a conduit that terminates a TCP connection.

7. A method as recited in claim 1 , wherein the first core VM includes a portion of a VM that communicates through a proxy.

8. A method as recited in claim 1 , further including broadcasting or multicasting a first connection description from the first core VM.

9. A method as recited in claim 1 , further including publishing a first connection description from the first core VM, wherein publishing includes sending a message to a subscriber.

10. A method as recited in claim 1 , further including publishing a first connection description from the first core VM, wherein publishing includes sending a Java Messaging System (JMS) message.

11. A method as recited in claim 1 , wherein the first and second core VMs reside on a core device.

12. A method as recited in claim 1 , wherein the first and second core VMs communicate through a shared memory interface.

13. A method as recited in claim 1 , wherein the first or second core VM is associated with a long-lived connection.

14. A method as recited in claim 1 , further including draining a connection associated with the first or second core VM.

15. A method as recited in claim 1 , further including draining a connection associated with the first core VM, wherein draining includes receiving an indication that a final message has been received by the second core VM.

16. A method as recited in claim 1 , further including draining a connection associated with the first core VM, wherein draining includes waiting for a stand-off period to expire.

17. A method as recited in claim 1 , further including draining a connection associated with the first core VM, wherein draining includes dropping a message with a sequence number less than a designated sequence number.

18. A method as recited in claim 1 , wherein a connection description includes a 4-tuple or 5-tuple.

19. A method as recited in claim 1 , further including sending a message at designated times to detect whether a connection associated with the first or second core VM is alive.

20. A method as recited in claim 1 , wherein the stitched connection is terminated in the event that a connection associated with the first or second core VM is terminated.

21. A method as recited in claim 1 , wherein the stitched connection is transparent to an application running on the first or second core VM.

22. A method as recited in claim 1 , wherein the first and second core VM's are within the same matching scope.

23. A method as recited in claim 1 , wherein the first and second core VM's are within the same matching scope and wherein the matching scope is defined by a policy.

24. A method as recited in claim 1 , wherein the first core VM or the second core VM is associated with a reliable connection.

25. A method as recited in claim 1 , wherein the first core VM or the second core VM is associated with an in-order connection.

26. A method as recited in claim 1 , further including instructing the first core VM to generate the stitched connection.

27. A method as recited in claim 1 , wherein an Application Programming Interface (API) exposed to an application running on the first or second core VM generates the stitched connection.

28. A method as recited in claim 1 , wherein the stitched connection is generated based on a predetermined configuration.

29. A computer program product for stitching a proxied connection between a first core virtual machine (VM) and a second core VM, the computer program product being embodied in a computer-readable medium and comprising computer instructions for:

establishing the proxied connection between the first core VM and the second core VM, the proxied connection connecting the first core VM and the second core VM via a first shell VM and a second shell VM;

determining that a stitched connection should be generated between the first core VM and the second core VM, including:

publishing a first connection description from the first core VM and a second connection description from the second core VM; and

determining that a source associated with the first connection description corresponds to a destination associated with the second connection description, and a destination associated with the first connection description corresponds to a source associated with the second connection description; and

generating the stitched connection between the first core VM and the second core VM for replacing the proxied connection, wherein information is transferred over the stitched connection instead of the proxied connection, thereby bypassing the first shell VM and the second shell VM.

30. A system for stitching a proxied connection between a first core virtual machine (VM) and a second core VM, including:

one or more processors configured to:

establish the proxied connection between the first core VM and the second core VM, the proxied connection connecting the first core VM and the second core VM via a first shell VM and a second shell VM;

determine that a stitched connection should be generated between the first core VM and the second core VM, including:

publishing a first connection description from the first core VM and a second connection description from the second core VM; and

determining that a source associated with the first connection description corresponds to a destination associated with the second connection description, and a destination associated with the first connection description corresponds to a source associated with the second connection description; and

generate the stitched connection between the first core VM and the second core VM for replacing the proxied connection, wherein information is transferred over the stitched connection instead of the proxied connection, thereby bypassing the first shell VM and the second shell VM; and

a memory coupled with the processor, wherein the memory provides the processor with instructions.

Assignments (8)
RELEASE OF SECURITY INTERESTS IN PATENTS RECORDED AT REEL/FRAME 052293/0121 Recorded Dec 3, 2025
From: GOLUB CAPITAL LLC, AS COLLATERAL AGENT
To: AZUL SYSTEMS, INC.
Reel/Frame 073466/0064 →
SECURITY INTEREST Recorded Dec 3, 2025
From: AZUL SYSTEMS, INC.
To: ARES CAPITAL CORPORATION, AS COLLATERAL AGENT
Reel/Frame 073828/0083 →
SECURITY INTEREST Recorded Apr 2, 2020
From: AZUL SYSTEMS, INC.
To: GOLUB CAPITAL LLC, AS COLLATERAL AGENT
Reel/Frame 052293/0121 →
RELEASE OF SECURITY INTEREST Recorded Apr 2, 2020
From: SILICON VALLEY BANK
To: AZUL SYSTEMS, INC.
Reel/Frame 052293/0869 →
RELEASE OF SECURITY INTEREST Recorded Feb 21, 2019
From: PARTNERS FOR GROWTH IV, L.P.
To: AZUL SYSTEMS, INC.
Reel/Frame 048411/0138 →
SECURITY INTEREST Recorded Mar 1, 2016
From: AZUL SYSTEMS, INC.
To: PARTNERS FOR GROWTH IV, L.P.
Reel/Frame 037959/0694 →
SECURITY INTEREST Recorded Feb 2, 2016
From: AZUL SYSTEMS, INC.
To: SILICON VALLEY BANK
Reel/Frame 037641/0665 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jun 2, 2005
From: TENE, GIL; PILLALAMARRI, SHYAM PRASAD
To: AZUL SYSTEMS, INC.
Reel/Frame 016300/0761 →