IP Library Granted Patent US 8,681,813
Granted Patent B2
US 8,681,813 · App. 13/306,804 · Granted Mar 25, 2014

Bandwidth optimization for remote desktop protocol

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,681,813
App. No.
13/306,804
Granted
Mar 25, 2014
Kind
B2
Abstract

The processing of a first data stream to generate a second stream conforming to a remote desktop protocol (RDP) is described. Operations may include facilitating storage of first data from the first stream at a first index indicated in the first stream, facilitating retrieval of second data from a second index included in the first stream, and facilitating generation of the second stream conforming to the RDP and including the first and second data. Additionally, the processing of a third data stream conforming to the RDP to stream a fourth stream is described. Operations include facilitating processing of the third stream to identify a package data unit (PDU), facilitating storing of a hash value corresponding to the PDU, and facilitating generating an altered PDU for inclusion in the fourth stream and including an index identifying a location in memory storing the hash value.

Claims (77)

1. A method for processing a first data stream conforming to a remote desktop protocol (RDP) to stream a second data stream to a remote client device, the method comprising:

facilitating establishing a first streaming connection to the remote client device, in response to receiving a connection request from the remote client device,

wherein the connection request identifies an RDP server, and

wherein the identified RDP server is a local RDP server;

facilitating establishing a second streaming connection to the RDP server identified in the connection request, in response to receiving the connection request from the remote client;

facilitating processing of the first data stream conforming to the RDP to identify package data units (PDUs) including packet data and, for each PDU including packet data, to calculate a hash value from the packet data;

facilitating a search, in a memory cache storing hash values, for a stored hash value matching the hash value calculated from the packet data, for each PDU including packet data;

facilitating selectively storing in a location of the memory cache the hash value calculated from the packet data of a PDU, if the search fails to find a stored hash value matching the calculated hash value;

facilitating selectively compressing the packet data of the PDU, if the search fails to find a stored hash value matching the calculated hash value;

facilitating generating an altered PDU for each PDU of the first data stream including packet data,

wherein the altered PDU includes a header having an index value indicative of the location in the memory cache storing the hash value calculated from the packet data or of a location in the memory cache storing the hash value matching the hash value calculated from the packet data, and

wherein the altered PDU selectively includes the compressed packet data, if the search fails to find a stored hash value matching the calculated hash value; and

facilitating streaming to the remote client device the second data stream including the generated altered PDU for each PDU of the first data stream including packet data.

2. The method of claim 1 , wherein the second data stream does not conform to the RDP.

3. The method of claim 1 , wherein prior to facilitating streaming of the second data stream, the method comprises:

facilitating generating a data stream including the generated altered PDU for each PDU of the first data stream including packet data, and at least one PDU of the first data stream that does not include packet data;

facilitating bulk compression of the generated data stream; and

facilitating encryption of the bulk compressed generated data stream as the second data stream.

4. The method of claim 1 , wherein the facilitating selectively compressing the packet data comprises facilitating selectively compressing the packet data using a JPEG image compression algorithm having one of a visually lossy, visually lossless, and lossless compression mode.

5. A non-transitory machine-readable storage medium encoded with instructions executable by one or more processors for processing a first data stream conforming to a remote desktop protocol (RDP) to stream a second data stream to a remote client device, the instructions, when executed, for causing the one or more processors to perform:

facilitating establishing a first streaming connection to the remote client device, in response to receiving a connection request from the remote client device,

wherein the connection request identifies the RDP server, and

wherein the identified RDP server is a local RDP server;

facilitating establishing a second streaming connection to the RDP server identified in the connection request, in response to receiving the connection request from the remote client;

facilitating processing of the first data stream conforming to the RDP to identify package data units (PDUs) including packet data and, for each PDU including packet data, to calculate a hash value from the packet data;

facilitating a search, in a memory cache storing hash values, for a stored hash value matching the hash value calculated from the packet data, for each PDU including packet data;

facilitating selectively storing in a location of the memory cache the hash value calculated from the packet data of a PDU, ifthe search fails to find a stored hash value matching the calculated hash value;

facilitating selectively compressing the packet data of the PDU, if the search fails to find a stored hash value matching the calculated hash value;

facilitating generating an altered PDU for each PDU of the first data stream including packet data,

wherein the altered PDU includes a header having an index value indicative of the location in the memory cache storing the hash value calculated from the packet data or of a location in the memory cache storing the hash value matching the hash value calculated from the packet data, and

wherein the altered PDU selectively includes the compressed packet data, if the search fails to find a stored hash value matching the calculated hash value; and

facilitating streaming to the remote client device the second data stream including the generated altered PDU for each PDU of the first data stream including packet data.

6. The machine-readable storage medium of claim 5 , wherein the second data stream does not conform to the RDP.

7. The machine-readable storage medium of claim 5 , wherein prior to facilitating streaming of the second data stream, the instructions further cause the one or more processors to perform:

facilitating generating a data stream including the generated altered PDU for each PDU of the first data stream including packet data, and at least one PDU of the first data stream that does not include packet data;

facilitating bulk compression of the generated data stream; and

facilitating encryption of the bulk compressed generated data stream as the second data stream.

8. The machine-readable storage medium of claim 5 , wherein the facilitating selectively compressing the packet data comprises facilitating selectively compressing the packet data using a JPEG image compression algorithm having one of a visually lossy, visually lossless, and lossless compression mode.

9. A hardware apparatus for processing a first data stream conforming to a remote desktop protocol (RDP) to stream a second data stream to a remote client device, the hardware apparatus comprising:

a processing system configured to access a memory media, wherein the memory media stores instructions executable by the processing system, the instructions for:

facilitating establishing a first streaming connection to the remote client device, in response to receiving a connection request from the remote client device,

wherein the connection request identifies the RDP server, and

wherein the identified RDP server is a local RDP server;

facilitating establishing a second streaming connection to the RDP server identified in the connection request, in response to receiving the connection request from the remote client:

facilitating processing of the first data stream conforming to the RDP to identify package data units (PDUs) including packet data and, for each PDU including packet data, to calculate a hash value from the packet data;

facilitating a search, in a memory cache storing hash values, for a stored hash value matching the hash value calculated from the packet data, for each PDU including packet data;

facilitating selectively storing in a location of the memory cache the hash value calculated from the packet data of a PDU, ifthe search fails to find a stored hash value matching the calculated hash value;

facilitating selectively compressing the packet data of the PDU, if the search fails to find a stored hash value matching the calculated hash value;

facilitating generating an altered PDU for each PDU of the first data stream including packet data,

wherein the altered PDU includes a header having an index value indicative of the location in the memory cache storing the hash value calculated from the packet data or of a location in the memory cache storing the hash value matching the hash value calculated from the packet data, and

wherein the altered PDU selectively includes the compressed packet data, if the search fails to find a stored hash value matching the calculated hash value; and

facilitating streaming to the remote client device the second data stream including the generated altered PDU for each PDU of the first data stream including packet data.

10. The hardware apparatus of claim 9 , wherein the second data stream does not conform to the RDP.

11. The hardware apparatus of claim 9 , wherein prior to facilitating streaming of the second data stream, the instructions are for:

facilitating generating a data stream including the generated altered PDU for each PDU of the first data stream including packet data, and at least one PDU of the first data stream that does not include packet data;

facilitating bulk compression of the generated data stream; and

facilitating encryption of the bulk compressed generated data stream as the second data stream.

12. The hardware apparatus of claim 9 , wherein the facilitating selectively compressing the packet data comprises facilitating selectively compressing the packet data using a JPEG image compression algorithm having one of a visually lossy, visually lossless, and lossless compression mode.

13. An apparatus for processing a first data stream conforming to a remote desktop protocol (RDP) to stream a second data stream to a remote client device, the apparatus comprising:

first means for, prior to facilitating processing of the first data stream, facilitating establishing a first streaming connection to the remote client device, in response to receiving a connection request from the remote client device,

wherein the connection request identifies the RDP server, and

wherein the identified RDP server is a local RDP server;

second means for facilitating establishing a second streaming connection to the RDP server identified in the connection request, in response to receiving the connection request from the remote client;

third means for facilitating processing of the first data stream conforming to the RDP to identify package data units (PDUs) including packet data and, for each PDU including packet data, to calculate a hash value from the packet data;

fourth means for facilitating a search, in a memory cache storing hash values, for a stored hash value matching the hash value calculated from the packet data, for each PDU including packet data;

fifth means for facilitating selectively storing in a location of the memory cache the hash value calculated from the packet data of a PDU, if the search fails to find a stored hash value matching the calculated hash value;

sixth means for facilitating selectively compressing the packet data of the PDU, if the search fails to find a stored hash value matching the calculated hash value;

seventh means for facilitating generating an altered PDU for each PDU of the first data stream including packet data,

wherein the altered PDU includes a header having an index value indicative of the location in the memory cache storing the hash value calculated from the packet data or of a location in the memory cache storing the hash value matching the hash value calculated from the packet data, and

wherein the altered PDU selectively includes the compressed packet data, if the search fails to find a stored hash value matching the calculated hash value; and

eighth means for facilitating streaming to the remote client device the second data stream including the generated altered PDU for each PDU of the first data stream including packet data.

14. The apparatus of claim 13 , wherein the second data stream does not conform to the RDP.

15. The apparatus of claim 13 , further comprising:

ninth means for, prior to facilitating streaming of the second data stream, facilitating generating a data stream including the generated altered PDU for each PDU of the first data stream including packet data, and at least one PDU of the first data stream that does not include packet data;

tenth means for facilitating bulk compression of the generated data stream; and

eleventh means for facilitating encryption of the bulk compressed generated data stream as the second data stream.

16. The apparatus of claim 13 , wherein the sixth means for facilitating selectively compressing the packet data comprise twelvth means for facilitating selectively compressing the packet data using a JPEG image compression algorithm having one of a visually lossy, visually lossless, and lossless compression mode.

Assignments (16)
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 →
RELEASE OF SECURITY INTEREST IN PATENTS PREVIOUSLY RECORDED AT REEL/FRAME (045455/0001) Recorded May 20, 2022
From: THE BANK OF NEW YORK MELLON TRUST COMPANY, N.A., AS NOTES COLLATERAL AGENT
To: DELL MARKETING CORPORATION (SUCCESSOR-IN-INTEREST TO ASAP SOFTWARE EXPRESS, INC.); DELL MARKETING L.P. (ON BEHALF OF ITSELF AND AS SUCCESSOR-IN-INTEREST TO CREDANT TECHNOLOGIES, INC.); DELL USA L.P.; DELL INTERNATIONAL L.L.C.; DELL PRODUCTS L.P.; DELL MARKETING CORPORATION (SUCCESSOR-IN-INTEREST TO FORCE10 NETWORKS, INC. AND WYSE TECHNOLOGY L.L.C.); EMC CORPORATION (ON BEHALF OF ITSELF AND AS SUCCESSOR-IN-INTEREST TO MAGINATICS LLC); EMC IP HOLDING COMPANY LLC (ON BEHALF OF ITSELF AND AS SUCCESSOR-IN-INTEREST TO MOZY, INC.); SCALEIO LLC
Reel/Frame 061753/0001 →
MERGER Recorded May 13, 2022
From: WYSE TECHNOLOGY L.L.C.
To: DELL MARKETING CORPORATION
Reel/Frame 060064/0586 →
RELEASE OF SECURITY INTEREST IN PATENTS PREVIOUSLY RECORDED AT REEL/FRAME (040136/0001) Recorded Apr 26, 2022
From: THE BANK OF NEW YORK MELLON TRUST COMPANY, N.A., AS NOTES COLLATERAL AGENT
To: DELL MARKETING CORPORATION (SUCCESSOR-IN-INTEREST TO ASAP SOFTWARE EXPRESS, INC.); DELL MARKETING L.P. (ON BEHALF OF ITSELF AND AS SUCCESSOR-IN-INTEREST TO CREDANT TECHNOLOGIES, INC.); DELL USA L.P.; DELL INTERNATIONAL L.L.C.; DELL PRODUCTS L.P.; DELL MARKETING CORPORATION (SUCCESSOR-IN-INTEREST TO FORCE10 NETWORKS, INC. AND WYSE TECHNOLOGY L.L.C.); EMC CORPORATION (ON BEHALF OF ITSELF AND AS SUCCESSOR-IN-INTEREST TO MAGINATICS LLC); EMC IP HOLDING COMPANY LLC (ON BEHALF OF ITSELF AND AS SUCCESSOR-IN-INTEREST TO MOZY, INC.); SCALEIO LLC
Reel/Frame 061324/0001 →
RELEASE OF SECURITY INTEREST Recorded Nov 3, 2021
From: CREDIT SUISSE AG, CAYMAN ISLANDS BRANCH
To: ASAP SOFTWARE EXPRESS, INC.; AVENTAIL LLC; CREDANT TECHNOLOGIES, INC.; DELL USA L.P.; DELL INTERNATIONAL, L.L.C.; DELL MARKETING L.P.; DELL PRODUCTS L.P.; DELL SOFTWARE INC.; DELL SYSTEMS CORPORATION; EMC CORPORATION; EMC IP HOLDING COMPANY LLC; FORCE10 NETWORKS, INC.; MAGINATICS LLC; MOZY, INC.; SCALEIO LLC; WYSE TECHNOLOGY L.L.C.
Reel/Frame 058216/0001 →
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 →
SECURITY AGREEMENT Recorded Sep 21, 2016
From: ASAP SOFTWARE EXPRESS, INC.; AVENTAIL LLC; CREDANT TECHNOLOGIES, INC.; DELL USA L.P.; DELL INTERNATIONAL L.L.C.; DELL MARKETING L.P.; DELL PRODUCTS L.P.; DELL SOFTWARE INC.; DELL SYSTEMS CORPORATION; EMC CORPORATION; EMC IP HOLDING COMPANY LLC; FORCE10 NETWORKS, INC.; MAGINATICS LLC; MOZY, INC.; SCALEIO LLC; SPANNING CLOUD APPS LLC; WYSE TECHNOLOGY L.L.C.
To: CREDIT SUISSE AG, CAYMAN ISLANDS BRANCH, AS COLLATERAL AGENT
Reel/Frame 040134/0001 →
SECURITY AGREEMENT Recorded Sep 21, 2016
From: ASAP SOFTWARE EXPRESS, INC.; AVENTAIL LLC; CREDANT TECHNOLOGIES, INC.; DELL USA L.P.; DELL INTERNATIONAL L.L.C.; DELL MARKETING L.P.; DELL PRODUCTS L.P.; DELL SOFTWARE INC.; DELL SYSTEMS CORPORATION; EMC CORPORATION; EMC IP HOLDING COMPANY LLC; FORCE10 NETWORKS, INC.; MAGINATICS LLC; MOZY, INC.; SCALEIO LLC; SPANNING CLOUD APPS LLC; WYSE TECHNOLOGY L.L.C.
To: THE BANK OF NEW YORK MELLON TRUST COMPANY, N.A., AS NOTES COLLATERAL AGENT
Reel/Frame 040136/0001 →
RELEASE OF SECURITY INTEREST Recorded Sep 14, 2016
From: BANK OF NEW YORK MELLON TRUST COMPANY, N.A., AS COLLATERAL AGENT
To: DELL MARKETING L.P.; ASAP SOFTWARE EXPRESS, INC.; APPASSURE SOFTWARE, INC.; COMPELLENT TECHNOLOGIES, INC.; CREDANT TECHNOLOGIES, INC.; DELL INC.; DELL PRODUCTS L.P.; DELL USA L.P.; DELL SOFTWARE INC.; FORCE10 NETWORKS, INC.; PEROT SYSTEMS CORPORATION; SECUREWORKS, INC.; WYSE TECHNOLOGY L.L.C.
Reel/Frame 040065/0618 →
RELEASE OF SECURITY INTEREST Recorded Sep 14, 2016
From: BANK OF AMERICA, N.A., AS COLLATERAL AGENT
To: DELL SOFTWARE INC.; FORCE10 NETWORKS, INC.; DELL MARKETING L.P.; ASAP SOFTWARE EXPRESS, INC.; APPASSURE SOFTWARE, INC.; COMPELLENT TECHNOLOGIES, INC.; CREDANT TECHNOLOGIES, INC.; DELL INC.; DELL PRODUCTS L.P.; DELL USA L.P.; PEROT SYSTEMS CORPORATION; SECUREWORKS, INC.; WYSE TECHNOLOGY L.L.C.
Reel/Frame 040040/0001 →
RELEASE OF SECURITY INTEREST Recorded Sep 13, 2016
From: BANK OF AMERICA, N.A., AS ADMINISTRATIVE AGENT
To: DELL MARKETING L.P.; ASAP SOFTWARE EXPRESS, INC.; APPASSURE SOFTWARE, INC.; COMPELLANT TECHNOLOGIES, INC.; CREDANT TECHNOLOGIES, INC.; DELL INC.; DELL PRODUCTS L.P.; DELL USA L.P.; DELL SOFTWARE INC.; FORCE10 NETWORKS, INC.; PEROT SYSTEMS CORPORATION; SECUREWORKS, INC.; WYSE TECHNOLOGY L.L.C.
Reel/Frame 040065/0216 →
PATENT SECURITY AGREEMENT (NOTES) Recorded Jan 2, 2014
From: APPASSURE SOFTWARE, INC.; ASAP SOFTWARE EXPRESS, INC.; BOOMI, INC.; COMPELLENT TECHNOLOGIES, INC.; CREDANT TECHNOLOGIES, INC.; DELL INC.; DELL MARKETING L.P.; DELL PRODUCTS L.P.; DELL SOFTWARE INC.; DELL USA L.P.; FORCE10 NETWORKS, INC.; GALE TECHNOLOGIES, INC.; PEROT SYSTEMS CORPORATION; SECUREWORKS, INC.; WYSE TECHNOLOGY L.L.C.
To: BANK OF NEW YORK MELLON TRUST COMPANY, N.A., AS FIRST LIEN COLLATERAL AGENT
Reel/Frame 031897/0348 →
PATENT SECURITY AGREEMENT (ABL) Recorded Jan 2, 2014
From: DELL INC.; APPASSURE SOFTWARE, INC.; ASAP SOFTWARE EXPRESS, INC.; BOOMI, INC.; COMPELLENT TECHNOLOGIES, INC.; CREDANT TECHNOLOGIES, INC.; DELL MARKETING L.P.; DELL PRODUCTS L.P.; DELL SOFTWARE INC.; DELL USA L.P.; FORCE10 NETWORKS, INC.; GALE TECHNOLOGIES, INC.; PEROT SYSTEMS CORPORATION; SECUREWORKS, INC.; WYSE TECHNOLOGY L.L.C.
To: BANK OF AMERICA, N.A., AS ADMINISTRATIVE AGENT
Reel/Frame 031898/0001 →
PATENT SECURITY AGREEMENT (TERM LOAN) Recorded Jan 2, 2014
From: DELL INC.; APPASSURE SOFTWARE, INC.; ASAP SOFTWARE EXPRESS, INC.; BOOMI, INC.; COMPELLENT TECHNOLOGIES, INC.; CREDANT TECHNOLOGIES, INC.; DELL MARKETING L.P.; DELL PRODUCTS L.P.; DELL SOFTWARE INC.; DELL USA L.P.; FORCE10 NETWORKS, INC.; GALE TECHNOLOGIES, INC.; PEROT SYSTEMS CORPORATION; SECUREWORKS, INC.; WYSE TECHNOLOGY L.L.C.
To: BANK OF AMERICA, N.A., AS COLLATERAL AGENT
Reel/Frame 031899/0261 →
CHANGE OF NAME Recorded Nov 15, 2013
From: WYSE TECHNOLOGY INC.
To: WYSE TECHNOLOGY L.L.C.
Reel/Frame 031645/0051 →