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 如何在 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 优化的工作原理

  1. 启动 Microsoft Teams。
  2. Teams 将对 O365 进行身份验证。租户策略被向下推送到 Teams 客户端,并将相关 TURN 和信号通道信息中继到应用程序。
  3. Teams 检测到其正在 VDA 中运行,并对嵌入在 Teams 中的 Citrix JavaScript API 进行 API 调用。
  4. Teams 中的 Citrix JavaScript 将打开一个与在 VDA (127.0.0.1:9002) 上运行的 WebSocketService.exe 的安全 WebSocket 连接。WebSocketService.exe 作为本地系统帐户在会话 0 中运行。WebSocketService.exe 执行 TLS 终止和用户会话映射,并生成 WebSocketAgent.exe(现在在用户会话内运行)。
  5. WebSocketAgent.exe 通过调用到 Citrix HDX Browser Redirection Service (CtxSvcHost.exe) 来实例化通用虚拟通道。
  6. Citrix Workspace 应用程序的 wfica32.exe (HDX Engine) 产生一个名为 HdxTeams.exe 的新进程,这是用于 Teams 优化的新 WebRTC 引擎。
  7. HdxTeams.exe 和 Teams.exe 有一个双向虚拟通道路径,可以开始处理多媒体请求。

    —–用户呼叫——

  8. 对等方 A 单击呼叫按钮。Teams.exe 与 Azure 中的 Teams 服务通信,通过对等方 B 建立端到端信号路径。Teams 向 HdxTeams 询问一系列受支持的呼叫参数(编解码器、分辨率等,称为会话描述协议 (SDP) 提议)。然后使用指向 Azure 中的 Teams 服务的信令路径中继这些呼叫参数,并从该位置传输到另一个对等方。
  9. SDP 提议/应答(单通协商)和互动式连接建立 (ICE) 连接性检查(NAT 和使用 Session Traversal Utilities for NAT (STUN) 绑定请求的防火墙遍历)完成。然后,安全实时传输协议 (SRTP) 媒体直接在 HdxTeams.exe 与其他对等方(或 O365 会议服务器,如果是会议)之间流动。

网络要求

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
视频(单向) 大约 2500 kbps H264 720p @ 30 fps 16:9
屏幕共享 大约 300 kbps H264 1080p @ 15 fps

系统要求

最低版本 - Virtual Delivery Agent (VDA) 1906:

支持的操作系统:

  • Windows 10 64 位,最低版本 1607,最高版本 1903。
  • 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 Server,如果尚未安装并启用远程桌面服务角色,安装程序会自动安装并启用这些角色。

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

  • Windows 7、8 和 10(32 位和 64 位版本,包括 Embedded Edition)
  • 端点要求:大约 1.8–2.0 GHz 四核 CPU,可在点对点视频会议通话期间支持 360p nHD 分辨率。
  • 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 列出了供用户选择的设备。

注意:

我们建议:

HdxTeams.exe 无法利用 CPU 卸载与执行板载 H.264 编码 -UVC 1.1 和 1.5 的网络摄像机。

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(Internet 选项 > 连接 > 局域网设置 > 代理服务器)中配置显式代理时,可能会通过已分配的代理服务器进行连接。确认使用手动和显式代理设置时是否选中对于本地地址不使用代理服务器

服务位置和说明

服务 可执行文件夹路径 登录身份 说明
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 应用程序

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

  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. 重新启动客户端端点。

Microsoft Teams 安装

虽然我们不控制 Microsoft Teams 安装,但我们建议您遵循 Microsoft Teams 安装指南。请按照其指南进行操作,避免在 Appdata 下安装 Teams。请改为使用 ALLUSER=1 标志在 C:\Program Files 中安装。有关详细信息,请参阅使用 MSI 安装 Microsoft Teams

支持

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 跟踪