Controlling the transfer of terminal server data
First Claim
1. At a computer system, a method for determining how to allocate bandwidth for transferring terminal server data, the method comprising:
- an act of receiving a first request to transfer terminal server data for a first application layer module, the first application layer module associated with a first priority;
an act of determining that current bandwidth pressure has caused any buffers configured for transferring terminal server data to be in use;
an act of receiving a second request to transfer terminal server data for a second application layer module, the second application layer module associated with a second priority;
an act of determining that the first request and the second request are in contention for the next buffer that is freed up;
an act of calculating the number of bytes charged for application layer modules having the first priority during at least the current bandwidth pressure;
an act of calculating the number of bytes charged for application layer modules having the second priority during at least the current bandwidth pressure;
an act of detecting that a buffer has been freed up;
an act of comparing the number of bytes charged for application layer modules having the first priority to the number of bytes charged for application layer modules having the second priority; and
an act of appropriately allocating the buffer to transfer terminal server data based on the results of the comparison.
2 Assignments
0 Petitions
Accused Products
Abstract
The present invention extends to methods, systems, and computer program products for controlling the transfer of terminal server data. In some embodiments, contending request to send terminal server data are resolved by a flow control module situated between a terminal server protocol and a transport/network protocol. The flow control module utilizes channel priorities along with amounts of previously sent data per channel to determine how to distribute bandwidth in a relatively controlled manner between contending channels. The flow control module can be configured to intercept communication between terminal server protocol and a transport/network protocol to facilitate bandwidth distribution. In other embodiments, data is simultaneously sent over multiple channels of terminal server connection. A first write operation obtains a lock on a corresponding channel but the channel lock does not prevent write operations on other channels.
34 Citations
20 Claims
-
1. At a computer system, a method for determining how to allocate bandwidth for transferring terminal server data, the method comprising:
-
an act of receiving a first request to transfer terminal server data for a first application layer module, the first application layer module associated with a first priority;
an act of determining that current bandwidth pressure has caused any buffers configured for transferring terminal server data to be in use;
an act of receiving a second request to transfer terminal server data for a second application layer module, the second application layer module associated with a second priority;
an act of determining that the first request and the second request are in contention for the next buffer that is freed up;
an act of calculating the number of bytes charged for application layer modules having the first priority during at least the current bandwidth pressure;
an act of calculating the number of bytes charged for application layer modules having the second priority during at least the current bandwidth pressure;
an act of detecting that a buffer has been freed up;
an act of comparing the number of bytes charged for application layer modules having the first priority to the number of bytes charged for application layer modules having the second priority; and
an act of appropriately allocating the buffer to transfer terminal server data based on the results of the comparison. - View Dependent Claims (2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13)
-
-
14. A computer system, comprising:
-
one or more processors;
system memory; and
one or more computer-readable media having stored thereon a terminal server flow control module, the terminal server flow control module being including in a communication stack situated between a terminal server protocol and a transport/network protocol, the terminal server flow control module configured to intercept communication between the terminal server protocol and a transport/network protocol to perform the following;
receive a first request to transfer terminal server data for a first application layer module, the first application layer module associated with a first priority;
determine that current bandwidth pressure has caused any buffers configured for transferring terminal server data to be in use;
receive a second request to transfer terminal server data for a second application layer module, the second application layer module associated with a second priority;
determine that the first request and the second request are in contention for the next buffer that is freed up;
calculate the number of bytes charged for application layer modules having the first priority during at least the current bandwidth pressure;
calculate the number of bytes charged for application layer modules having the second priority during at least the current bandwidth pressure;
detect that a buffer has been freed up;
compare the number of bytes charged for application layer modules having the first priority to the number of bytes charged for application layer modules having the second priority; and
appropriately allocating the buffer to transfer terminal server data based on the results of the comparison. - View Dependent Claims (15)
-
-
16. At a computer system, a method for simultaneously performing a plurality of channel writes on a terminal server connection, the method comprising:
-
an act of receiving first terminal server data corresponding to a write operation on a first channel of a terminal server connection that includes a plurality of channels;
an act of locking a write resource associated with the first channel to prevent other write operations on the first channel without locking write operations on other channels of the terminal server connection;
an act of receiving second terminal server data corresponding to a write operation on a second channel of the terminal server connection;
an act of determining that a write resource associated with the second channel is not locked; and
an act of simultaneously writing at least a portion of the first terminal server data on the first channel of the terminal server connection and at least a portion of the second terminal server data on the second channel of the terminal server connection while the write resource associated with the first channel is locked. - View Dependent Claims (17, 18, 19, 20)
-
Specification