IP Library Granted Patent US 10,152,402
Granted Patent B2
US 10,152,402 · App. 15/433,377 · Granted Dec 11, 2018

Supporting multiple streams for a redirected USB device

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 10,152,402
App. No.
15/433,377
Granted
Dec 11, 2018
Kind
B2
Abstract

When a USB device that supports multiple streams is redirected, a multi-channel environment can be established in which each USB stream is associated with a separate network connection. As a result, each USB stream will be transferred over the network in its own connection and therefore the data transfer can be carried out in an out-of-order fashion and with speeds that better approximate those provided by the USB SuperSpeed feature. To handle the routing of URBs to the appropriate network connection, the virtual desktop infrastructure can implement a lookup table to associate a stream's handle with a particular network connection.

Claims (58)

1. A method, performed in a virtual desktop infrastructure environment, for redirecting a USB device, the method comprising:

detecting, at a client-side proxy, a successful request to open streams to a single bulk endpoint of a USB device;

identifying, by the client-side proxy and from the request, a number of streams to be opened to the single bulk endpoint of the USB device, the number of streams comprising at least two streams;

creating, by the client-side proxy and for each of the number of streams, a network connection; and

creating, by the client-side proxy, a lookup table that associates each stream with a particular network connection such that a separate network connection is created for and associated with each of the number of streams to the single bulk endpoint of the USB device.

2. The method of claim 1 , further comprising:

sending the lookup table to a server-side agent.

3. The method of claim 1 , wherein detecting a successful request to open streams to the single bulk endpoint of the USB device comprises detecting a USB request block that defines the URB_FUNCTION_OPEN_STATIC_STREAMS function.

4. The method of claim 1 , wherein identifying the number of streams to be opened comprises identifying a value of a Streams member in a _URB_OPEN_STATIC_STREAMS structure.

5. The method of claim 1 , wherein the networks connections comprise TCP or UDP connections.

6. The method of claim 1 , further comprising:

identifying, from the request and for each of the number of streams, a handle to the stream.

7. The method of claim 2 , further comprising:

receiving, at the agent, a URB that is sent to a particular stream;

accessing the lookup table to identify the network connection that is associated with the particular stream; and

sending the URB over the identified network connection.

8. The method of claim 2 , further comprising;

detecting, at the proxy, a successful request to close streams to the single bulk endpoint of the USB device; and

deleting the network connections that were created for the number of streams.

9. The method of claim 6 , wherein the lookup table associates each stream with the particular network connection by associating the handle to each stream with an identifier of the particular network connection.

10. The method of claim 6 , wherein the handles are obtained from an array of USBD_STREAM_INFORMATION structures.

11. The method of claim 7 , further comprising:

receiving, at the proxy, a response to the URB;

accessing the lookup table to identify the network connection that is associated with the particular stream; and

sending the response to the URB over the identified network to the agent.

12. The method of claim 8 , further comprising;

deleting, by the proxy, the lookup table;

notifying the agent that the lookup table has been deleted; and

deleting, by the agent, the lookup table.

13. The method of claim 8 , wherein detecting a successful request to close streams to the single bulk endpoint of the USB device comprises detecting a USB request block that defines the URB_FUNCTION_CLOSE_STATIC_STREAMS function.

14. One or more computer storage media storing computer executable instructions which when executed by one or processors implement a virtual desktop infrastructure comprising:

a client-side proxy; and

a server-side agent;

wherein the proxy is configured to communicate over a network with the agent for the purpose of redirecting a USB device to the server including:

detecting a successful request to open streams to a single bulk endpoint of the USB device;

identifying, from the request, a number of streams to be opened to the single bulk endpoint of the USB device, the number of streams comprising at least two streams;

creating, for each of the number of streams, a network connection;

creating a lookup table that associates each stream with a particular network connection such that a separate network connection is created for and associated with each of the number of streams to the single bulk endpoint of the USB device; and

sending the lookup table to the agent.

15. The computer storage media of claim 14 , wherein the proxy is further configured to:

detect a successful request to close streams to the single bulk endpoint of the USB device;

delete the network connections created for the number of streams; and

notify the agent of the deletion.

16. The computer storage media of claim 14 , wherein the agent is configured to:

receive a URB that is sent to a particular stream;

identify, from the lookup table, the particular network connection that is associated with the particular stream; and

send the URB over the particular network connection.

17. The computer storage media of claim 16 , wherein the lookup table associates a handle of each stream with an identifier of the particular network connection.

18. One or more computer storage media storing computer executable instructions which when executed by one or processors implement a virtual desktop infrastructure comprising:

a client-side proxy; and

a server-side agent;

wherein the agent is configured to communicate over a network with the proxy for the purpose of redirecting a USB device to the server including:

receiving, from the proxy, a lookup table that associates each of a plurality of network connections with a particular stream of a plurality of streams that are opened for a single bulk endpoint of the USB device;

receiving a URB that is sent to a particular stream;

accessing the lookup table to identify the network connection that is associated with the particular stream; and

sending the URB over the identified network connection.

19. The computer storage media of claim 18 , wherein the proxy is configured to create the lookup table using stream information obtained from a successful request to open streams to the single bulk endpoint of the USB device.

20. The computer storage media of claim 18 , wherein the proxy is configured to delete the network connections identified in the lookup table in response to a successful request to close streams to the single bulk endpoint of the USB device.

Assignments (9)
RELEASE OF SECURITY INTEREST IN PATENTS PREVIOUSLY RECORDED AT REEL/FRAME (053546/0001) Recorded Jun 23, 2022
From: THE BANK OF NEW YORK MELLON TRUST COMPANY, N.A., AS NOTES COLLATERAL AGENT
To: DELL MARKETING L.P. (ON BEHALF OF ITSELF AND AS SUCCESSOR-IN-INTEREST TO CREDANT TECHNOLOGIES, INC.); DELL INTERNATIONAL L.L.C.; DELL PRODUCTS L.P.; DELL USA L.P.; EMC CORPORATION; DELL MARKETING CORPORATION (SUCCESSOR-IN-INTEREST TO FORCE10 NETWORKS, INC. AND WYSE TECHNOLOGY L.L.C.); EMC IP HOLDING COMPANY LLC
Reel/Frame 071642/0001 →
MERGER Recorded May 9, 2022
From: WYSE TECHNOLOGY L.L.C.
To: DELL MARKETING CORPORATION
Reel/Frame 059912/0109 →
RELEASE OF SECURITY INTEREST IN PATENTS PREVIOUSLY RECORDED AT REEL/FRAME (042769/0001) Recorded Apr 26, 2022
From: THE BANK OF NEW YORK MELLON TRUST COMPANY, N.A., AS NOTES COLLATERAL AGENT
To: DELL PRODUCTS L.P.; EMC CORPORATION; EMC IP HOLDING COMPANY LLC (ON BEHALF OF ITSELF AND AS SUCCESSOR-IN-INTEREST TO MOZY, INC.); DELL MARKETING CORPORATION (SUCCESSOR-IN-INTEREST TO WYSE TECHNOLOGY L.L.C.)
Reel/Frame 059803/0802 →
RELEASE OF SECURITY INTEREST AT REEL 042768 FRAME 0585 Recorded Nov 2, 2021
From: CREDIT SUISSE AG, CAYMAN ISLANDS BRANCH
To: DELL PRODUCTS L.P.; EMC CORPORATION; EMC IP HOLDING COMPANY LLC; MOZY, INC.; WYSE TECHNOLOGY L.L.C.
Reel/Frame 058297/0536 →
SECURITY AGREEMENT Recorded Apr 22, 2020
From: CREDANT TECHNOLOGIES INC.; DELL INTERNATIONAL L.L.C.; DELL MARKETING L.P.; DELL PRODUCTS L.P.; DELL USA L.P.; EMC CORPORATION; FORCE10 NETWORKS, INC.; WYSE TECHNOLOGY L.L.C.; EMC IP HOLDING COMPANY LLC
To: THE BANK OF NEW YORK MELLON TRUST COMPANY, N.A.
Reel/Frame 053546/0001 →
SECURITY AGREEMENT Recorded Mar 21, 2019
From: CREDANT TECHNOLOGIES, INC.; DELL INTERNATIONAL L.L.C.; DELL MARKETING L.P.; DELL PRODUCTS L.P.; DELL USA L.P.; EMC CORPORATION; FORCE10 NETWORKS, INC.; WYSE TECHNOLOGY L.L.C.; EMC IP HOLDING COMPANY LLC
To: THE BANK OF NEW YORK MELLON TRUST COMPANY, N.A.
Reel/Frame 049452/0223 →
PATENT SECURITY INTEREST (CREDIT) Recorded Jun 12, 2017
From: DELL PRODUCTS L.P.; EMC CORPORATION; EMC IP HOLDING COMPANY LLC; MOZY, INC.; WYSE TECHNOLOGY L.L.C.
To: CREDIT SUISSE AG, CAYMAN ISLANDS BRANCH, AS COLLATERAL AGENT
Reel/Frame 042768/0585 →
PATENT SECURITY INTEREST (NOTES) Recorded Jun 12, 2017
From: DELL PRODUCTS L.P.; EMC CORPORATION; EMC IP HOLDING COMPANY LLC; MOZY, INC.; WYSE TECHNOLOGY L.L.C.
To: THE BANK OF NEW YORK MELLON TRUST COMPANY, N.A., AS COLLATERAL AGENT
Reel/Frame 042769/0001 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Feb 15, 2017
From: VAJRAVEL, GOKUL THIRUCHENGODE; PETRICK, CHRISTOPHER STEPHEN
To: WYSE TECHNOLOGY L.L.C.
Reel/Frame 041265/0292 →