微软RDP远程桌面优化
微软RDP远程桌面优化
介绍
以下来自了解远程桌面协议 (RDP)
RDP 基于 T-120 系列协议标准,并且是后者的扩展。 支持多通道的协议允许单独的虚拟通道来传送以下信息:
- 演示数据
- 串行设备通信
- 许可信息
- 高度加密的数据,如键盘、鼠标活动
RDP 是 T.Share 核心协议的扩展。 若干其他功能作为 RDP 的一部分保留,例如多点支持(多方会话)所需的体系结构功能。 多点数据传递允许应用程序中的数据实时传递到多方,例如虚拟白板。 不需要单独向每个会话发送相同的数据。
在 Windows 终端服务器的第一个版本中,我们专注于提供可靠且快速的点对点(单会话)通信。 终端服务器 4.0 的初始版本中仅使用一个数据信道。 但是,RDP 的灵活性为将来的产品提供了足够的功能空间。
Microsoft 决定在 Windows NT 终端服务器内实施 RDP 进行连接的一个原因是,它提供了一个可扩展的基础来构建更多功能。 RDP 提供 64,000 个单独的数据传输信道。 然而,当前的传输活动仅使用单个信道(用于键盘、鼠标和演示数据)。
RDP 旨在支持许多不同类型的网络拓扑,例如 ISDN、POTS。 RDP 还旨在支持多种 LAN 协议,例如 IPX、NetBIOS、TCP/IP。 当前版本的 RDP 将仅采用 TCP/IP。 根据客户反馈,将来的版本中可能会添加其他协议支持。
通过 RDP 栈发送和接收数据所涉及的活动基本上与目前一般 LAN 网络的七层 OSI 模型标准相同。 要传输的应用程序或服务中的数据将通过协议栈向下传递。 它经过分割、信道定向(通过 MCS)、加密、打包、制帧并封装到网络协议中,最后进行寻址并通过网络发送到客户端。 数据返回时原理相同,但步骤相反。 数据包会被剥离地址,然后解包、解密等。 最后,数据将提供给应用程序以供使用。 协议栈修改主要位于第四层和第七层之间,在此数据经过以下处理:
- 加密
- 打包
- 制帧
- 信道定向
- 优先排序
对于应用程序开发人员,其中一个好处是 Microsoft 降低了 RDP 使用过程中处理协议栈的复杂性。 这使他们能够编写出简练、设计合理、行为良好的 32 位应用程序。 然后,终端服务器及其客户端连接实施的 RDP 栈负责处理其余操作。
有关应用程序如何在终端服务器上交互的详细信息,以及针对 Windows 终端服务器基础结构开发应用程序时要了解的内容,请参阅以下白皮书:
针对终端服务器版 Windows NT Server 4.0 优化应用程序
RDP 栈实例中值得讨论的四个组件包括:
- 多点通信服务 (MCSMUX)
- 通用会议控制 (GCC)
- Wdtshare.sys
- Tdtcp.sys
MCSmux 和 GCC 是国际电信联盟 (ITU) T.120 系列的一部分。 MCS 由两个标准组成:
- T.122:定义多点服务
- T.125:指定数据传输协议
MCSMux 控制:
- 通过将数据多路复用到协议中的预定义虚信道进行信道分配
- 优先级
- 分割正在发送的数据
这实质上从 GCC 的角度将多个 RDP 栈抽象为单个实体。 GCC 负责管理这些多信道。 GCC 可以创建和删除会话连接并控制 MCS 提供的资源。 每个终端服务器协议(目前仅支持 RDP 和 Citrix 的 ICA)都会加载协议栈实例(等待连接请求的侦听栈) 终端服务器设备驱动程序协调和管理 RDP 协议活动。 它由较小的组件组成:
- 用于 UI 传输、压缩、加密、组帧等的 RDP 驱动程序 (Wdtshare.sys)。
- 将协议封装到基础网络协议 TCP/IP 中的传输驱动程序 (Tdtcp.sys)。
RDP 完全独立于其基础传输堆栈,在本例中为 TCP/IP。 这意味着,随着客户对其他网络协议的需求增长,我们可以为这些网络协议添加其他传输驱动程序,对协议的基础部分几乎没有重大更改。 它们是网络上 RDP 性能和可扩展性的要素。
优化
开启硬件加速
- 打开 被控主机 上的 组策略 ,
win + R
打开运行,输入gpedit.msc
- 打开 计算机配置 -> 管理模板 -> Windows组件 -> 远程桌面服务 -> 远程桌面会话主机 -> 远程会话环境
- 点击 将硬件图形适配器应用于所有远程桌面服务会话,点击
已启用
- 点击 为远程桌面连接设置 H.264/AVC 444 图形模式的优先级,点击
已启用
(不是必要) - 点击 配置远程桌面连接的 H.264/AVC 硬件编码,点击
已启用
- 点击 为 RemoteApp 使用高级 RemoteFX 图形,点击
已启用
- 重启电脑(可以修改完下面的再重启)
修改默认帧率
- 打开 被控主机 上的 注册表编辑器,
win + R
打开运行,输入regedit
- 找到 HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Terminal Server\WinStations (直接复制粘贴)
- 在 空白处右键 -> 新建 -> DWORD(32位)值,命名为
DWMFRAMEINTERVAL
- 双击刚添加的这一项,基数 选择为
十进制
, 数值数据 填写15
15
对应60
帧
30
对应30
帧
8
对应120
帧
不要问我为什么和微软官网不同 UFO Motion Tests 实测 - 重启电脑