Microsoft Teams 优化

注意:

此功能取决于未来的 Microsoft Teams 版本。我们将在版本和发布日期的相关信息发布时更新此说明。

Citrix 使用 Citrix Virtual Apps and Desktops 和 Citrix Workspace 应用程序为基于桌面的 Microsoft Teams 提供优化。默认情况下,我们将所有必要的组件绑定到 Citrix Workspace 应用程序和 Virtual Delivery Agent (VDA) 中。

我们针对 Microsoft Teams 的优化包含一个 VDA 端 HDX 服务和 API,用于与 Microsoft Teams 托管的应用程序进行交互以接收命令。这些组件将向 Citrix Workspace 应用程序端媒体引擎打开控制虚拟通道。端点将在本地解码并呈现多媒体。将本地 Citrix Workspace 应用程序窗口中的无缝管理单元反转回托管的 Microsoft Teams 应用程序。

身份验证和发出信号在本地发生在 Microsoft Teams 托管的应用程序上,就像其他 Microsoft Teams 服务(例如聊天或协作)一样。音频/视频重定向不会对其产生影响。

仅客户端提取/客户端呈现可用。

体系结构

Microsoft Teams 优化的工作原理

此视频演示让您了解 Microsoft Teams 如何在 Citrix 虚拟环境中工作。

Microsoft Teams 优化演示

通话建立和媒体流路径

如有可能,Citrix Workspace 应用程序 (HDXTeams.exe) 中的 HDX Media Engine 会尝试在对等通话中通过 UDP 建立直接网络 SRTP 连接。如果 UDP 端口被阻止,Media Engine 将回退到 TCP 443。

HDX Media Engine 支持 ICE、Session Traversal Utilities for NAT (STUN) 和 Traversal Using Relays around NAT (TURN) 进行候选发现和连接建立。如果对等方之间没有直接路径,或者如果用户正在加入多方通话或会议,HDXTeams.exe 在 Azure 中将使用 Microsoft Teams 传输中继服务器。用户的客户端计算机必须具有多个 Azure IP 地址范围的访问权限。有关详细信息,请参阅“体系结构”部分Office 365 URL 和 IP 地址范围 ID 11 中的示意图。

HdxTeams.exe 使用任意广播 IP 和端口 3478—3481 UDP(每个工作负载使用不同的 UDP 端口,尽管会发生多路复用)以及 443 TCP 联系 Microsoft Teams 传输中继云。通话质量取决于基础网络协议。由于始终推荐 UDP 而非 TCP,因此,我们建议将您的网络设计为适应 UDP 流量。 大多数通话设置失败都属于 ICE 失败。当通话无法完成时,请先检查该设置。有关 ICE 候选人收集过程的详细信息,请参阅支持部分中的“收集日志”。

注意:

如果端点无法访问 Internet,用户仍可能只进行对等通话(会议失败)。在这种情况下,通话设置开始之前有 30 秒的超时。

网络要求

Microsoft Teams 依赖 Azure 中的传输层中继服务器进行会议、多方通话以及点对点通话中的两个对等方没有直接连接的场景。因此,对等方与 Office 365 云之间的网络运行状况决定通话的性能。

我们建议您对环境进行评估,以确定可能会影响整个云语音和视频部署的任何风险和要求。 使用 Skype for Business 网络评估工具来测试您的网络是否已准备好使用 Microsoft Teams。有关支持信息,请参阅支持部分。

指标 端点到 Office 365
延迟(单向) < 50 毫秒
延迟 (RTT) < 100 毫秒
Packet Loss(数据包丢失) 在任何 15 秒时间间隔内 < 1%
数据包到达间抖动 在任何 15 秒时间间隔内 <30 毫秒

有关详细信息,请参阅为 Microsoft Teams 准备贵组织的网络

在带宽要求方面,Microsoft Teams 的优化可以使用对音频 (G.722/OPUS/PCM) 和视频 (H264/VP9) 使用各种编解码器。 在通话建立过程中,对等方使用会话描述协议 (SDP) 请求应答来协商这些编解码器。 Citrix 的最低建议如下:

类型 Bandwidth(带宽) 编解码器
音频(单向) 大约 90 kbps G.722
视频(单向) 大约 700 kbps H264 360p @ 30 fps 16:9
屏幕共享 大约 150 kbps H264 @ 15 fps

系统要求

最低版本 - 适用于 Windows 桌面操作系统的 Virtual Delivery Agent (VDA) 1906:

支持的操作系统:

  • Windows 10 64 位,最低版本 1607,最高版本 1903。

要求:

  • 如果尚未安装 .NET Framework 4.7.1 或更高版本,该框架将自动安装。
  • Microsoft Visual C++ 2013 和 2015 Runtimes,32 位和 64 位。
  • BCR_x64.msi - 包含 Microsoft Teams 优化代码并从 GUI 自动启动的 MSI。如果使用命令行界面进行 VDA 安装,请不要将其排除。

最低版本 - 适用于服务器操作系统的 Virtual Delivery Agent (VDA) 1906:

支持的操作系统:

  • Windows Server 2019、2016 和 2012 R2(Standard Edition 和 Datacenter Edition)。

安装程序将自动安装以下项目,这些组件可以在 Citrix 安装介质上的 Support 文件夹中找到:

  • 如果尚未安装 .NET Framework 4.7.1 或更高版本,该框架将自动安装。
  • Microsoft Visual C++ 2013 和 2015 Runtimes,32 位和 64 位。
  • BCR_x64.msi - 包含 Microsoft Teams 优化代码并从 GUI 自动启动的 MSI。如果使用命令行界面进行 VDA 安装,请不要将其排除。

如果尚未安装并启用远程桌面服务角色,安装程序会自动安装并启用这些角色。

最低版本 - 适用于 Windows 的 Citrix Workspace 应用程序 1905:

  • Windows 7、8 和 10(32 位和 64 位版本,包括 Embedded Edition)
  • 端点要求:大约 1.8 到 2.0 GHz 双核 CPU,可在点对点视频会议通话期间支持 360p VGA 分辨率。
  • Citrix Workspace 应用程序至少需要 600 MB 可用磁盘空间和 1 GB RAM。
  • Microsoft .NET Framework 最低要求为版本 4.6.2。如果系统中不存在,Citrix Workspace 应用程序会自动下载并安装 .NET Framework。
  • 此版本的 Citrix Workspace 应用程序支持音频和视频重定向(对等或会议)以及传入屏幕共享。适用于 Windows 的 Citrix Workspace 应用程序 1905 不支持传出屏幕共享。版本 1907 及更高版本支持传出屏幕共享。

启用 Microsoft Teams 优化

要为 Microsoft Teams 启用优化,请使用 Microsoft Teams 重定向策略中介绍的 Studio 策略。除启用此策略外,HDX 还会进行检查,以验证 Citrix Workspace 应用程序的版本等于还是高于所需的最低版本。如果启用了此策略并且支持 Citrix Workspace 应用程序的版本,HKEY_CURRENT_USER\Software\Citrix\HDXMediaStream\MSTeamsRedirSupport 注册表项将在 VDA 上自动设置为 1。Microsoft Teams 应用程序读取要在 VDI 模式下加载的密钥。

Microsoft Teams 中的外围设备

当 Microsoft Teams 的优化处于活动状态时,Citrix Workspace 应用程序将访问外围设备(耳机、麦克风、相机、扬声器等)。然后在 Microsoft Teams UI(设置 > 设备)中正确枚举外围设备。

Microsoft Teams 的优化模式

Microsoft Teams 不直接访问这些设备。相反,它依赖 HDXTeams.exe 来获取、捕获和处理媒体。Microsoft Teams 列出了供用户选择的设备。

注意:

我们建议使用 Microsoft Teams 认证的耳机进行内置回声消除。在具有多个外围设备的设置中,麦克风和扬声器位于不同的设备上(例如,带内置麦克风的网络摄像头和带扬声器的显示器)可能会出现回声。使用外部扬声器时,请尽可能远离麦克风和可能将声音折射到麦克风的任何表面。

HDX 技术可以使用以下任一方法映射外围设备:

  • Microsoft Teams 的优化(推荐模式)。
  • 如果 Microsoft Teams 无法在优化的 VDI 模式下加载,VDA 将使用旧版 HDX 技术,例如网络摄像机重定向和客户端音频和麦克风重定向。在未优化模式下,外围设备将映射到 VDA。外围设备在 Microsoft Teams 应用程序中显示,就像它们在本地连接到虚拟桌面一样。

    最显著的区别是摄像机名称。如果 Microsoft Teams 以未优化模式加载,则会启动旧版 HDX 技术,并且网络摄像机名称具有 Citrix HDX 后缀,如下图所示。与优化模式相比,扬声器和麦克风设备名称可能略有不同。

Microsoft Teams 的未优化模式

使用旧版 HDX 技术时,Microsoft Teams 不会将音频、视频和屏幕共享处理卸载到端点的 Citrix Workspace 应用程序 WebRTC 媒体引擎。相反,HDX 技术使用服务器端呈现。打开视频时,预计 VDA 上的 CPU 消耗很高。实时音频性能可能不是最佳的。

故障排除

本部分内容提供故障排除提示,解决您在使用 Microsoft Teams 优化时可能遇到的问题。 更多信息可以在 CTX253754 中找到。

在 Virtual Delivery Agent 上

BCR_x64.msi 安装四个服务。只有两个服务负责 VDA 中的 Microsoft Teams 重定向。

浏览器内容重定向安装四个服务

  • Citrix HDX Teams 重定向服务建立 Microsoft Teams 中使用的虚拟通道。该服务依赖于 CtxSvcHost.exe。

  • Citrix HDX HTML5 视频重定向服务作为 WebSocketService.exe 在 127.0.0.1:9002 TCP 上侦听。WebSocketService.exe 执行两项主要功能:

    i.安全 WebSocket 的 TLS 终止接收来自 vdiCitrixPeerConnection.js 的安全 WebSocket 连接,这是 Microsoft Teams 应用程序中的一个组件。您可以使用进程监视器对其进行跟踪。有关证书的详细信息,请参阅 Controller 与 VDA 之间的通信下的“TLS 和 HTML5 视频重定向以及浏览器内容重定向”部分。

    进程监视器

    ii.用户会话映射。当 Microsoft Teams 应用程序启动时,WebSocketService.exe 将在 VDA 中的用户会话中启动 WebSocketAgent.exe 进程。WebSocketService.exe 作为 LocalSystem 帐户在会话 0 中运行。

    WebSocketAgent.exe 服务

    可以使用 netstat 来检查 VDA 中的 WebSocketService.exe 服务是否处于主动侦听状态。

    从提升的命令提示符窗口运行 netstat -anob -p tcp

    运行 netstat 示例

    在成功连接时,状态将更改为“已建立”:

    成功的 netstat 示例

重要:

WebSocketService.exe 在两个 TCP 套接字中侦听,即 127.0.0.1:9001 和 127.0.0.1:9002。端口 9001 用于浏览器内容重定向和 HTML5 视频重定向。端口 9002 用于 Microsoft Teams 重定向。确保 VDA 的 Windows 操作系统中没有任何可能会阻止 Teams.exe 和 WebSocketService.exe 之间直接进行通信的代理配置。有时,当您在 Internet Explorer 11 中配置显式代理时,可能会通过已分配的代理服务器进行连接。即使您打开了绕过本地地址的代理服务器,也可能会出现这种情况。要绕过 localhost,请在代理服务器例外列表中指定 127.0.0.1 地址。例外列表位于 Internet Explorer 11 > 工具 > Internet 选项 > 连接 > LAN 设置 > 高级 > 例外

服务位置和说明

服务 可执行文件夹路径 登录身份 说明
Citrix HTML5 视频重定向服务 “C:\Program Files (x86)\Citrix\System32\WebSocketService.exe” /service 本地系统帐户 通过在虚拟桌面与端点设备之间执行媒体重定向所需的初始框架提供了多个 HDX 多媒体服务。
Citrix HDX 浏览器重定向服务 “C:\Program Files (x86)\Citrix\System32\CtxSvcHost.exe” -g BrowserRedirSvcs 此帐户(本地服务) 在端点设备与虚拟桌面之间提供浏览器内容重定向。
Citrix 端口转发服务 “C:\Program Files (x86)\Citrix\System32\CtxSvcHost.exe” -g PortFwdSvcs 此帐户(本地服务) 在端点设备与虚拟桌面之间为浏览器内容重定向提供端口转发。
Citrix HDX Teams 重定向服务 “C:\Program Files (x86)\Citrix\System32\CtxSvcHost.exe” -g TeamsSvcs 本地系统帐户 在端点设备与虚拟桌面之间提供 Microsoft Teams 重定向。

Citrix Workspace 应用程序

在用户的端点上,当 Microsoft Teams 在 VDA 中启动,并且用户尝试在自主预览模式下拨打电话或访问此外围设备时,适用于 Windows 的 Citrix Workspace 应用程序将实例化名为 HdxTeams.exe 的新服务。如果您没有看到此服务,请检查以下内容:

  1. 确保您至少安装了适用于 Windows 的 Workspace 应用程序版本 1905。您是否在 Workspace 应用程序安装路径中看到 HdxTeams.exe 和 webrpc.dll 二进制文件?
  2. 如果验证了步骤 1,请执行以下操作以检查 HdxTeams.exe 是否正在启动。
    1. 在 VDA 上退出 Microsoft Teams。
    2. 在 VDA 上启动 services.msc。
    3. 停止 Citrix HDX Teams 重定向服务。
    4. 断开 ICA 会话的连接。
    5. 连接 ICA 会话。
    6. 启动 Citrix HDX Teams 重定向服务。
    7. 重新启动 Citrix HDX HTML5 视频重定向服务。
    8. 在 VDA 启动 Microsoft Teams。
  3. 如果您仍然没有看到正在客户端端点上启动的 HdxTeams.exe,请执行以下操作:
    1. 重新启动 VDA。
    2. 重新启动客户端端点。

支持

Citrix 和 Microsoft 联合支持使用 Microsoft Teams 优化从 Citrix Virtual Apps and Desktops 交付 Microsoft Teams。这种联合支持是两家公司密切合作的结果。如果您有有效的支持合同,并且遇到此解决方案的问题,请与您怀疑其代码导致该问题的供应商打开支持票证。也就是说,Teams 有关的问题请联系 Microsoft,优化组件有关的问题请联系 Citrix。

Citrix 或 Microsoft 会收到票证、对问题进行分级并根据需要上报。您无需联系每个公司的支持团队。

收集日志

可以在用户的计算机上的 HDXTeams 文件夹 (AppData/Local/Temp/HDXTeams) 内部的 %TEMP% 下找到 HDXTeams.exe 日志。查找名为 webrpc_Day_Month_timestamp_Year.txt 的 .txt 文件。

在 HdxTeams.exe 日志中,以下条目是为成功设置通话而必须存在的相关互动式连接建立 (ICE) 条目(请参阅此示例片段):

RPCStubs Info: -> device id = \\?\display#int3470#4&1835d135&0&uid13424#{65e8773d-8f56-11d0-a3b9-00a0c9223196}{bf89b5a5-61f7-4127-a279-e187013d7caf} label = Microsoft Camera Front groupId =

RTCPeerConnection::createOffer. audio = 1 video = 1
RTCPeerConnection::OnSignalingChange. signaling state = HaveLocalOffer
video_element::connectTo
RTCPeerConnection::OnIceGatheringChange. state = Gathering

[…]
candidate:840548147 1 udp 2122194687 10.108.124.215 56927 typ host generation 0 ufrag oVk6 network-id 1
[…]
candidate:4271145120 1 udp 1685987071 66.165.176.60 55839 typ srflx raddr 10.108.124.215 rport 55839 generation 0 ufrag uAVH network-id 1
[…]

RTCPeerConnection::OnIceGatheringChange. state = Complete
RTCPeerConnection::setRemoteDescription

RTCPeerConnection::OnSignalingChange. signaling state = HaveRemoteOffer

如果您遇到问题并且可以持续重现,我们建议您在联系技术支持之前捕获 CDF 跟踪信息。有关详细信息,请参阅知识中心文章 CDFcontrol

有关收集 CDF 跟踪信息的建议,请参阅知识中心文章 收集 CDF 跟踪信息的建议

VDA 端 CDF 跟踪 - 启用以下 CDF 跟踪提供程序:

VDA 端 CDF 跟踪信息

Workspace 应用程序端 CDF 跟踪 - 启用以下 CDF 跟踪提供程序:

Workspace 应用程序端 CDF 跟踪