IP Library Granted Patent US 9,952,889
Granted Patent B2
US 9,952,889 · App. 14/938,726 · Granted Apr 24, 2018

Connection management

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 9,952,889
App. No.
14/938,726
Filed
Nov 11, 2015
Granted
Apr 24, 2018
Kind
B2
Examiner
DO, STEVEN M
Art Unit
2196
USPC
718/1
Abstract

In one embodiment, a system for managing communication connections in a virtualization environment, comprises a plurality of host machines implementing a virtualization environment, wherein each of the host machines comprises a hypervisor, at least one user virtual machine (UVM), a connection agent, and an I/O controller; and a virtual disk comprising a plurality of storage devices, the virtual disk being accessible by all of the I/O controllers, wherein the I/O controllers conduct I/O transactions with the virtual disk based on I/O requests received from the UVMs, and wherein, for each of the host machines: each of the UVMs on the host machine sends its respective I/O requests to a selected one of the I/O controllers, and for each of the UVMs on the host machine, the connection agent on the host machine selected one of the I/O controllers for the UVM based on a list of the available I/O controllers.

Claims (37)

1. A system for managing communication connections in a virtualization environment, comprising:

a plurality of host machines implementing a virtualization environment, wherein each of the plurality of host machines comprises a hypervisor, at least one user virtual machine (UVM), a connection agent, and an I/O controller; and

a virtual disk comprising a plurality of storage devices, the virtual disk being accessible by the I/O controllers of each of the plurality of host machines to conduct I/O transactions with the virtual disk, wherein:

the connection agent of each of the plurality of host machines is configured to maintain a list of all of the I/O controllers that are available from the plurality of host machines; and

the connection agent is configured to select one of the I/O controllers on the list in response to receiving an I/O request from the at least one UVM and direct the I/O request to the selected one of the I/O controllers.

2. The system of claim 1 , wherein the connection agent of each of the plurality of host machines monitors and tracks a status of the I/O controllers and updates the list as availability of each of the I/O controllers changes.

3. The system of claim 2 , wherein the connection agent monitors the status of the I/O controllers by periodically sending an echo-request to each of the I/O controllers, and wherein the connection agent tracks the status of the I/O controllers based on whether each of the I/O controllers sends back an echo-response within a maximum threshold duration of time.

4. The system of claim 1 , wherein, in response to receiving an indication that the selected one of the I/O controllers is unavailable from the at least one UVM sending the I/O request to the selected one of the I/O controllers, the connection agent updates the list to indicate that the selected one of the I/O controllers is unavailable.

5. The system of claim 4 , wherein, prior to updating the list, the connection agent verifies unavailability of the selected one of the I/O controllers by pinging the selected one of the I/O controllers.

6. The system of claim 4 , wherein the connection agent selects a different one of the I/O controllers from the list and directs the I/O request to the different one of the I/O controllers.

7. The system of claim 1 , wherein the connection agent is configured to select a designated default I/O controller whenever the designated default I/O controller is indicated as available on the list.

8. The system of claim 7 , wherein the designated default I/O controller is the I/O controller running on a host machine on which the connection agent and the at least one UVM sending the I/O request are also running.

9. The system of claim 7 , wherein, if the selected one of the I/O controllers is not the designated default I/O controller, upon determining that the designated default I/O controller is available, the connection agent terminates any connections to the selected one of the I/O controllers and establishes a connection with the designated default I/O controller.

10. One or more computer-readable non-transitory storage media embodying software for managing communication connections in a virtualization environment, the media comprising instructions operable when executed to:

provide a virtualization environment for a plurality of host machines, wherein each of the plurality of host machines comprises a hypervisor, at least one user virtual machine (UVM), a connection agent, and an I/O controller;

provide a virtual disk comprising a plurality of storage devices, the virtual disk being accessible by the I/O controllers of each of the plurality of host machines to conduct I/O transactions with the virtual disk,

maintain a list by the connection agent of all of the I/O controllers that are available from the plurality of host machines; and

select one of the I/O controllers on the list in response to receiving an I/O request from the at least one UVM and direct the I/O request to the selected one of the I/O controllers.

11. The media of claim 10 , further comprising instructions operable when executed to:

by the connection agent, monitor and track a status of the I/O controllers across all of the plurality of host machines and update the list as availability of each of the I/O controllers changes.

12. The media of claim 11 , wherein the connection agent monitors the status of the I/O controllers by periodically sending an echo-request to each of the I/O controllers, and wherein the connection agent tracks the status of the I/O controllers based on whether each of the I/O controllers sends back an echo-response within a maximum threshold duration of time.

13. The media of claim 10 , wherein, in response to receiving an indication that the selected one of the I/O controllers is unavailable from the at least one UVM sending the I/O request to the selected one of the I/O controllers, further comprising instructions operable when executed to:

by the connection agent, update the list to indicate that the selected one of the I/O controllers is unavailable.

14. The media of claim 13 , further comprising instructions operable when executed to:

by the connection agent, prior to updating the list, verify unavailability of the selected one of the I/O controllers by pinging the selected one of the I/O controllers.

15. The media of claim 13 , further comprising instructions operable when executed to:

by the connection agent, select a different one of the I/O controllers from the list and direct the I/O request to the different one of the I/O controllers.

16. The media of claim 10 , wherein the connection agent is biased to selecting a designated default I/O controller whenever that designated default I/O controller is indicated as available on the list.

17. The media of claim 16 , wherein the designated default I/O controller is the I/O controller running on a host machine on which the connection agent and the at least one UVM sending the I/O request are also running.

18. The media of claim 16 , wherein, if the selected one of the I/O controllers is not the designated default I/O controller, further comprising instructions operable when executed to:

by the connection agent, terminate any connections to the selected one of the I/O controllers and establish a connection with the designated default I/O controller.

19. A method comprising:

compiling, by a connection agent, a list of all available I/O controllers from a plurality of host machines, wherein the connection agent resides on a host machine of the plurality of host machines implemented in a virtualization environment, and wherein each of the plurality of plurality of host machines comprises a hypervisor, at least one user virtual machine (UVM), the connection agent, and an I/O controller;

receiving, by the connection agent, an I/O request from one of the at least one UVM that resides on the host machine with the connection agent;

selecting, by the connection agent, a selected I/O controller from the list of available I/O controllers for directing the I/O request to the selected I/O controller; and

updating, by the connection agent, the list of available I/O controllers as availability of each of the I/O controller on each of the plurality of host machines changes.

20. The method of claim 19 , further comprising selecting a designated default I/O controller as the selected I/O controller, wherein the designated default I/O controller is the I/O controller on the host machine on which the connection agent resides.

Assignments (4)
SECURITY INTEREST Recorded Feb 13, 2025
From: NUTANIX, INC.
To: BANK OF AMERICA, N.A., AS COLLATERAL AGENT
Reel/Frame 070206/0463 →
RELEASE OF SECURITY INTEREST Recorded Sep 28, 2016
From: GOLDMAN SACHS SPECIALTY LENDING GROUP, L.P., AS AGENT
To: NUTANIX, INC.
Reel/Frame 040168/0586 →
SECURITY INTEREST Recorded Apr 15, 2016
From: NUTANIX, INC.
To: GOLDMAN SACHS SPECIALTY LENDING GROUP, L.P., AS AGENT
Reel/Frame 038440/0712 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jan 22, 2016
From: CUI, MIAO; SMITH, GREGORY A.; SCHWENZ, ROBERT
To: NUTANIX, INC.
Reel/Frame 037559/0465 →