Zum Hauptinhalt springen

In-Network Middlebox Compositor For Distributed Virtualized Applications

Baird, Randall B. ; Friedl, Stephan E. ; et al.
2013
Online Patent

Titel:
In-Network Middlebox Compositor For Distributed Virtualized Applications
Autor/in / Beteiligte Person: Baird, Randall B. ; Friedl, Stephan E. ; Wesselman, Thomas M.
Link:
Veröffentlichung: 2013
Medientyp: Patent
Sonstiges:
  • Nachgewiesen in: USPTO Patent Applications
  • Sprachen: English
  • Document Number: 20130013664
  • Publication Date: January 10, 2013
  • Appl. No: 13/176086
  • Application Filed: July 05, 2011
  • Assignees: CISCO TECHNOLOGY, INC. (San Jose, CA, US)
  • Claim: 1. A method comprising: receiving at a network device, via one or more Hosted Virtual Application (HVA) Virtual Desktop Interface (VDI) sessions between the network device and a first HVA host device, one or more first sets of HVA display frames, each first set of HVA display frames from a different HVA resident on the first HVA host device; generating first desktop display data; executing a display context cycle for a first display context to generate a first set of Hosted Virtual Desktop (HVD) display frames from the first sets of HVA display frames and the first desktop display data, wherein the first set of HVD display frames comprises zero or more HVD display frames; and sending the first set of HVD display frames to a first client endpoint device via a first HVD VDI session between the network device and the first client endpoint device.
  • Claim: 2. The method of claim 1, wherein the generation of the first set of HVD display frames comprises performing one or more tasks selected from the group consisting of: decoding the one or more first sets of HVA display frames, rendering at least one of the HVA display frames from each first set of HVA display frames, rendering the first desktop display data, compositing the rendered HVA display frames and the rendered first desktop display data, and encoding the first set of HVD display frames.
  • Claim: 3. The method of claim 1, further comprising: receiving at the network device, via one or more Hosted Virtual Application (HVA) Virtual Desktop Interface (VDI) sessions between the network device and a second HVA host device, one or more first sets of HVA display frames, each first set of HVA display frames from a different HVA resident on the second HVA host device.
  • Claim: 4. The method of claim 1, further comprising: receiving at the network device one or more second sets of HVA display frames, each second set of HVA display frames from a different HVA resident on either the first HVA host device or a second HVA host device; generating second desktop display data; executing a display context cycle for a second display context to generate a second set of Hosted Virtual Desktop (HVD) display frames from the one or more second sets of HVA display frames and the second desktop display data; and sending the second set of HVD display frames to a second client endpoint device via a second HVD VDI session between the network device and the first client endpoint device if the second set of HVD display frames comprises at least one HVD display frame.
  • Claim: 5. The method of claim 4, wherein the first and second display contexts are executed in a Graphics Processing Unit (GPU) in the network device.
  • Claim: 6. The method of claim 5, wherein the GPU comprises an address space, and further comprising: allocating the first and second display contexts from first and second portions of a physical memory in the network device, wherein the physical memory is larger than the GPU address space; and mapping the first and second portions of the physical memory into an overlay address space so that the GPU is able to access the first and second portions of the physical memory.
  • Claim: 7. The method of claim 1, wherein said generation of first desktop display data is performed by a first desktop process on the network device.
  • Claim: 8. The method of claim 7, further comprising: receiving user input from an input device associated with the first client endpoint device via the first HVD VDI session; determining which one of either the first desktop process or one of the one or more HVAs is associated with the user input; and sending the user input from the network device to the determined HVA or desktop process.
  • Claim: 9. The method of claim 1, further comprising: receiving an HVD setup request, wherein the HVD setup request comprises identifying the first client endpoint device; allocating resources to support the first client endpoint device; instantiating a desktop process for the first client endpoint device, wherein the desktop process performs said generating of the first desktop display data; and establishing the first HVD VDI session in response to the receipt of the HVD setup request.
  • Claim: 10. The method of claim 9, wherein allocating resources further comprises: selecting a graphics processing unit (GPU) to support the first client endpoint device from a set of GPUs on the network device.
  • Claim: 11. The method of claim 10, wherein the desktop process comprises a virtual machine executing on the network device.
  • Claim: 12. A method comprising: establishing a plurality of HVD VDI sessions between a network device and one or more client endpoint devices, wherein each HVD VDI session is associated with a single display context in the network device and a single client endpoint device; and for each HVD VDI session: receiving at the network device a plurality of sets of Hosted Virtual Application (HVA) display frames via one or more HVA VDI sessions between the network device and one or more HVA host devices, wherein each set of HVA display frames is generated by an HVA resident on one of the one or more HVA host devices; generating desktop display data; executing a display context cycle for the associated display context to generate a set of HVD display frames from received sets of HVA display frames and the desktop display data, wherein the set of HVD display frames comprises zero or more HVD display frames; sending the set of HVD display frames to the associated client endpoint device via the HVD VDI session; and repeating said receiving, generation, executing and sending steps until the HVD VDI session is terminated.
  • Claim: 13. The method of claim 12, further comprising: establishing a periodic measurement interval.
  • Claim: 14. The method of claim 13, further comprising: for each display context cycle, measuring an elapsed interval between the receipt of the first HVA display frame from the received sets of HVA display frames for that display context cycle and the completion of execution of the display context cycle; setting a congestion trigger if the elapsed interval for any display context cycle is greater than a predetermined target frame relay interval; and clearing the congestion trigger if the elapsed interval for every display context cycle executed within the measurement interval is less than or equal to a predetermined target frame relay interval.
  • Claim: 15. The method of claim 14, further comprising: measuring, over the measurement interval, the sum of the elapsed intervals for every display context cycle executed during the measurement interval; determining a target cycle interval; for each display context, determining an expected cycle interval for the display context; for each display context, applying a throttle to the display context if the expected cycle interval is greater than the target cycle interval, wherein the throttle specifies a reduction time by which the display context must reduce the expected cycle interval in subsequent display context cycles.
  • Claim: 16. The method of claim 15, wherein one or more of the display contexts are resident in a Graphics Processing Unit (GPU) in the network device, and wherein determining the target cycle interval comprises: dividing a compute load for the GPU by the number of display contexts in the GPU that executed a display context cycle during the measurement interval, wherein the compute load and the number of display contexts are smoothed over multiple instances of the measurement interval.
  • Claim: 17. The method of claim 15, further comprising: detecting that the congestion trigger is cleared; for each display context to which a throttle was applied, incrementally reducing the throttle by a fixed amount over subsequent display context cycles.
  • Claim: 18. The method of claim 14, further comprising: detecting that the congestion trigger is set; and reducing computation congestion by reducing the amount of computation during the repeated display context cycle.
  • Claim: 19. The method of claim 18, wherein, for each display context, said execution of the display context cycle comprises performing one or more display context tasks selected from the group consisting of rendering at least one HVA display frame from each of the plurality of sets of HVA display frames, compositing at least one HVA display frame from each of the plurality of sets of HVA display frames, and encoding the set of HVD display frames.
  • Claim: 20. The method of claim 18, wherein, for at least one display context, each of the plurality of sets of HVA display frames comprises at least two standalone HVA display frames and at least one difference HVA display frame, and wherein said reducing the amount of computation further comprises skipping rendering of one or more of the difference HVA display frames from one or more of the sets of HVA display frames.
  • Claim: 21. The method of claim 18, further comprising, for at least one display context: sending a signal to one of the HVA host devices requesting that the signaled HVA host device reduce the frame rate for subsequent sets of HVA display frames from one or more HVAs resident on the signaled HVA host device to a requested reduced frame rate; and receiving subsequent sets of HVA display frames from the signaled HVA host device, wherein the subsequent sets have a frame rate equal to or less than the requested reduced frame rate.
  • Claim: 22. An apparatus comprising: a control processor configured to: establish a plurality of Hosted Virtual Application (HVA) Virtual Desktop Interface (VDI) sessions with one or more HVA host devices; establish a plurality of Hosted Virtual Desktop (HVD) VDI sessions with a plurality of client endpoint devices, wherein each HVD VDI session in the plurality is associated with a single client endpoint device; and generate a plurality of sets of desktop display data, one set for each established HVD VDI session; a plurality of graphics processors, and, for each graphics processor a corresponding graphics memory communicably connected to the graphics processor and to the control processor, wherein each graphics memory is configured to: receive and store a plurality of sets of HVA display data, each set of HVA display data from a single HVA via one of the plurality of HVA VDI sessions; and receive and store the plurality of sets of desktop display data; and wherein each graphics processor processes one or more of the plurality of sets of desktop display data, wherein for each set of desktop display data processed by an individual graphics processor, the graphics processor is configured to: fetch the stored set of desktop display data and the stored one or more sets of HVA display data from the corresponding graphics memory; generate a set of HVD display data by performing one or more tasks selected from the group consisting of decoding the received one or more sets of HVA display data, rendering the decoded sets of HVA display data with the set of desktop display data, compositing the rendered sets of HVA display data with the desktop display data, and encoding rendered and composited display data into HVD display data; and send the generated set of HVD display data from the corresponding graphics memory for transfer to a client endpoint device via the HVD VDI session associated with the client endpoint device.
  • Claim: 23. The apparatus of claim 22, further comprising a network interface controller configured to: receive the plurality of sets of HVA display data from the one or more HVA host devices via the plurality of HVA VDI sessions; transfer the received plurality of sets of HVA display data to the plurality of graphics memories; and transfer each of the generated sets of HVD display data from the plurality of graphics memories to one of the plurality of client endpoint devices, wherein each generated set of HVD display data is transferred to a different client endpoint device via the HVD VDI session associated with the client endpoint device.
  • Claim: 24. The apparatus of claim 22, wherein the control processor is further configured to, for each client endpoint device in the plurality of client endpoint devices: receive an HVD setup request, wherein the HVD setup request comprises an identifier for an HVD VDI session associated with an individual client endpoint device; and instantiate a desktop process for the identified client endpoint device, wherein the desktop process performs said generation of a set of desktop display data for the identified client endpoint device; wherein said establishment of an HVD VDI session with the identified client endpoint device is in response to the receipt of the endpoint setup request.
  • Claim: 25. The apparatus of claim 24, wherein each desktop process comprises a virtual machine.
  • Claim: 26. The apparatus of claim 24, wherein the control processor is further configured to: receive user input from an input device associated with one of the client endpoint devices via the HVD VDI session associated with the client endpoint device; determine which of the plurality of HVAs or desktop processes is associated with the user input; and send the user input from the apparatus to the determined HVA or desktop processes via the HVA VDI session associated with the determined HVA.
  • Claim: 27. The apparatus of claim 22, wherein each graphics processor comprises at least two display contexts and hardware support for context switching between the display contexts, and wherein each display context is configured to process a single set of desktop display data, each set of desktop display data associated with an individual client endpoint device.
  • Claim: 28. The apparatus of claim 27, wherein each graphics processor comprises an address space and is further configured to: allocate each display context of the at least two display contexts from a portion of a physical memory in the corresponding graphics memory, wherein the physical memory is larger than the address space; and map each portion of the physical memory into an overlay address space so that the graphics processor is able to access each portion of the physical memory that has been allocated as a display context.
  • Claim: 29. A system comprising the apparatus of claim 22, wherein one of the HVA VDI sessions is a high-bandwidth session, and the apparatus is co-located in an edge network with the HVA associated with the high-bandwidth HVA VDI session.
  • Claim: 30. A system comprising the apparatus of claim 22, wherein at least one client endpoint device in the plurality of client endpoint devices is a zero client endpoint.
  • Claim: 31. The apparatus of claim 22, wherein each graphics memory in the plurality of graphics memories is selected from the group consisting of dual-port memory and multi-port memory.
  • Claim: 32. One or more computer readable storage media encoded with instructions that, when executed by a processor, cause the processor to: establish a plurality of HVD VDI sessions between a network device and one or more client endpoint devices, wherein each HVD VDI session is associated with a single display context in the network device and a single client endpoint device; and for each HVD VDI session: receive at the network device a plurality of sets of Hosted Virtual Application (HVA) display frames via one or more HVA VDI sessions between the network device and one or more HVA host devices, wherein each set of HVA display frames is generated by an HVA resident on one of the one or more HVA host devices; generate desktop display data; execute a display context cycle for the associated display context to generate a set of HVD display frames from received sets of HVA display frames and the desktop display data, wherein the set of HVD display frames comprises zero or more HVD display frames; send the set of HVD display frames to the associated client endpoint device via the HVD VDI session if the set of HVD display frames comprises at least one HVD display frame; and repeat said receiving, generation, executing and sending steps until the HVD VDI session is terminated.
  • Current U.S. Class: 709/203
  • Current International Class: 06

Klicken Sie ein Format an und speichern Sie dann die Daten oder geben Sie eine Empfänger-Adresse ein und lassen Sie sich per Email zusenden.

oder
oder

Wählen Sie das für Sie passende Zitationsformat und kopieren Sie es dann in die Zwischenablage, lassen es sich per Mail zusenden oder speichern es als PDF-Datei.

oder
oder

Bitte prüfen Sie, ob die Zitation formal korrekt ist, bevor Sie sie in einer Arbeit verwenden. Benutzen Sie gegebenenfalls den "Exportieren"-Dialog, wenn Sie ein Literaturverwaltungsprogramm verwenden und die Zitat-Angaben selbst formatieren wollen.

xs 0 - 576
sm 576 - 768
md 768 - 992
lg 992 - 1200
xl 1200 - 1366
xxl 1366 -