# US 8,572,605 B1 · Source switching of virtual machines

> Agents: this data is available as JSON from the patentgrep API and MCP server — see https://patentgrep.com/llms.txt

- Number: US 8,572,605 B1
- Document ID: US8572605B1
- Status: Granted
- Kind: B1
- Application number: 11/118,624
- Filed: 2005-04-28
- Granted: 2013-10-29
- Earliest claimed: 2005-04-28
- Assignees: Azul Systems, Inc.
- Applicants: Gil Tene; Shyam Prasad Pillalamarri
- Inventors: Gil Tene; Shyam Prasad Pillalamarri
- Web page: https://patentgrep.com/patent/US8572605B1

## CPC

- G06F 9/545: {where tasks reside in different layers, e.g. user- and kernel-space}
- G06F 9/5077: {Logical partitioning of resources; Management or configuration of virtualized resources (specific details on emulation or internal functioning of virtual machines G06F9/455)}
- G06F 9/544: {Buffers; Shared memory; Pipes}
- G06F: ELECTRIC DIGITAL DATA PROCESSING (computer systems based on specific computational models G06N)

## 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

### Claim 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.

### Claim 2 (depends on 1)

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

### Claim 3 (depends on 1)

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

### Claim 4 (depends on 1)

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.

### Claim 5 (depends on 1)

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

### Claim 6 (depends on 1)

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

### Claim 7 (depends on 1)

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

### Claim 8 (depends on 1)

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

### Claim 9 (depends on 1)

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.

### Claim 10 (depends on 1)

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.

### Claim 11 (depends on 1)

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

### Claim 12 (depends on 1)

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

### Claim 13 (depends on 1)

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

### Claim 14 (depends on 1)

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

### Claim 15 (depends on 1)

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.

### Claim 16 (depends on 1)

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.

### Claim 17 (depends on 1)

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.

### Claim 18 (depends on 1)

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

### Claim 19 (depends on 1)

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.

### Claim 20 (depends on 1)

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.

### Claim 21 (depends on 1)

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

### Claim 22 (depends on 1)

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

### Claim 23 (depends on 1)

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.

### Claim 24 (depends on 1)

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

### Claim 25 (depends on 1)

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

### Claim 26 (depends on 1)

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

### Claim 27 (depends on 1)

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.

### Claim 28 (depends on 1)

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

### Claim 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.

### Claim 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.
