云桌面音频经验分享

网友投稿 1209 2022-09-11

云桌面音频经验分享

云桌面音频经验分享

一、背景知识

1、RTP协议

有些Citrix的技术文章提到了RTP协议,引用网上对RTP的解释:“RTP只是一个协议框架,它只包含了实时应用的一些共用功能,RTP自己并不对多媒体数据块做任何处理,而只是向应用层提供一些附加信息,让应用层知道应当如何进行处理”。

在Citrix技术文章中我们会看到Audio over RTP和Audio over UDP这样的术语,可以认为这两个术语是等同的关系。如果Citrix云桌面通过UDP传输音频 (并非EDT),RTP协议会被使用。有时我们需要调节RTP的音频数据缓冲区(Jitter Buffer)来适应网络抖动情况。

2、云桌面的音频传输协议

在CVAD 2203 LTSR发布之前,Citrix云桌面与客户端之间传输音频数据,有三种传输协议:Audio over UDP/Audio over RTP、EDT和ICA TCP。在容忍网络拥塞和丢包、提供更好音频质量的角度,Citrix研发建议优先启用Audio over UDP,然后才是EDT,最后是ICA TCP:

Audio over UDP 》》EDT 》》ICA TCP

3、音频质量

配置过Citrix Studio音频相关策略的你,应该知道1912 LTSR的音频质量分为以下几档:

高质量:比特率约100kbps,采样频率44100 Hz

中质量:比特率约16kbps,采样频率16000Hz

低质量:比特率约11kbps,采样频率8000Hz

当我们把音频质量设为“中”,云桌面使用的音频编码器是speex;当我们把音频质量设为“高”,云桌面使用的音频编码器是Vorbis。我们可以通过修改VDA的注册表,手工调节speex和Vorbis两种编码的音频质量。

二、CWA客户端版本的选择

无论从功能、性能还是售后支持的角度,我们都建议客户端安装最新的LTSR或CR版本。尤其考虑到售后支持的因素:假如在生产部署中我们发现了Citrix Workspace App客户端的产品缺陷,Citrix产品组只会在CWA最新的LTSR或CR版本上修复缺陷。

因此,如果在生产部署中我们怀疑问题和CWA版本有关,可以在最新的LTSR或CR版本上测试问题是否发生。年初有家用户偶发遇到云桌面无声音、声音质量不佳、插拔耳麦会话无响应等问题,自从把CWA版本从1912 LTSR CU3升级到当时最新的CU7,Helpdesk接到的音频问题大大减少。

截止到写文章时,Windows客户端最新的CR版本是2205,LTSR版本是2203.1

(注:由于CWA 2203 LTSR已发布,CWA 1912 LTSR在今年3月23日开始EOM,即不再发布补丁)

若客户端是Linux CWA,并且通过Citrix Gateway连接云桌面,如果希望启用Audio over UDP,需要Linux CWA 2202或更高版本。

三、音频效果优化(Audio over UDP)

对于没有基于Citrix做过VoIP流量优化的一般软件而言,Citrix官方建议是Audio over UDP的效果要优于EDT和ICA TCP。在网络延迟和抖动情况不理想的客户端网络环境中,Audio over UDP协议能提供更稳定的音频效果。

Audio over UDP如果启用,音频流会从常规的ICA TCP流量中剥离出来,通过UDP/RTP单独承载。Audio over UDP的成功运行,依赖以下环节都配置到位:

VDA、HDX策略、客户端、Citrix Gateway、防火墙端口策略

1)VDA的UDP支持

安装VDA时切记勾上实时音频传输的选项,并配置Windows防火墙自动创建规则放行UDP端口:

2)HDX策略

Citrix Studio中确认以下四条策略的设置:

“通过UDP协议的音频实时传输”:启用

“音频质量”:中 - 语音优化

“通过UDP协议的音频”:允许 (仅限于多会话VDA)

“音频UDP端口范围”:保持默认值不变

其中第二条策略的缺省值是“高-高清晰度音频”,而音频质量为高时,使用的是Vorbis编码,与音频质量为中时使用的Speex编码不同。目前Audio over UDP只支持Speex编码和音频质量设为中。这个设置往往会被用户忽略。

此外,由于EDT协议也会用到UDP传输,为了避免对Audio over UDP产生干扰,或抢占Citrix ADC的DTLS通道,Citrix Studio中将HDX自适应传输关闭:

3)客户端

a)加入AD域的终端

通过AD组策略推送如下设置 (需要先导入icaclient.adm管理模板):

b)未加入AD域的终端

如果是Windows终端:

将icaclient.adm导入本地策略,再做a) 的设置;

-或者-

修改StoreFront的ICA文件模板 (C:\inetpub\Name>\App_Data\default.ica)

注:如果修改了default.ica模板,那么连接这个store的所有用户的音频设置都会受影响。

如果是Linux终端,同时不希望修改storefront的default.ica,可以在终端本地的module.ini中修改:

[ClientAudio]

EnableUDPAudio=true

UDPAudioPortLow=16500

UDPAudioPortHigh=16509

[WFClient]

EnableUDPThroughGateway=True

注1:default.ica的设置优先级比终端本地module.ini更高,即会覆盖module.ini的设置。

注2:上面提到的EnableUDPThroughGateway开关,需要Linux CWA 2202或更高版本,因为通过Citrix Gateway的DTLS封装Audio over UDP,是从Linux CWA 2202开始支持的。详见 UDP Audio”一节。

4)Citrix Gateway

如果用户终端是通过Citrix Gateway连接云桌面,音频流量需要封装进DTLS协议传输,因此在Citrix Gateway的VPN Virtual Server上需要将DTLS选项启用:

如果使用的Citrix ADC还是老版本,如10.5e,勾选DTLS选项后需要先把VPN Virtual Server上的SSL证书解绑,再重新绑定证书:

​​ADC不需要解绑和重新绑定证书的操作。

从Citrix Gateway 13.0 build 64.x开始,还可以配置专门的DTLS VPN Virtual Service,实现更高的安全性,如高级的DTLS加密算法:

​​studio将会话可靠性策略启用:

5)防火墙端口策略

除了客户端和Citrix Gateway连接VDA的常规网络端口外,Audio over UDP需要放行以下的额外端口:

a)客户端直连Storefront

目标

传输协议

端口

用途

终端设备

VDA

UDP

16500~16509

实时音频

b)客户端通过Citrix Gateway连接

目标

传输协议

端口

用途

Gateway SNIP

VDA

UDP

16500~16509

实时音频

终端设备

Gateway VIP

UDP

443

DTLS

6)确认Audio over UDP正常工作

1)网络抖动缓冲

通过注册表,启用RTP协议数据包传输的缓冲(Jitter buffer),降低网络抖动对于RTP数据包传输稳定性的影响。

VDA

HKEY_LOCAL_MACHINE\(Wow6432Node)\SOFTWARE\Citrix\Audio

RTPJitterBuffer (REG_DWORD) = 1

客户端

HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Citrix\ICA  Client\Engine\Configuration\Advanced\Modules\ClientAudio

RTPJitterBuffer  (REG_DWORD) = 1

2)降噪处理

通过注册表,启用speex音频编码的降噪处理 (speex是音频质量设为中的编码方式):

VDA

HKEY_LOCAL_MACHINE\(Wow6432Node)\SOFTWARE\Citrix\Audio

EnableDenoise (REG_DWORD) = 2

客户端

HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Citrix\ICA  Client\Engine\Configuration\Advanced\Modules\ClientAudio

EnableDenoise  (REG_DWORD) = 2

注:很多使用VoIP的即时通讯和在线会议软件,都自带了降噪功能,如Teams的噪声抑制选项等等。

3)回声抑制

通过注册表,启用客户端的回声抑制功能:

客户端

HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Citrix\ICA  Client\Engine\Configuration\Advanced\Modules\ClientAudio

EchoCancellation  (REG_SZ) = True

注1:如果使用1912 CU3之前的CWA版本,在音频质量策略设为中的情况下,EchoCancellation注册表会造成wfica32.exe进程异常退出,导致会话断开。此Bug在CWA 1912 CU3得到修复 [CVADHELP-14568]

注2:除了通过注册表激活软件的回声抑制,Citrix也建议用户选择自带硬件回声抑制(AEC)功能的耳麦。硬件的回声抑制效果,通常要比软件的抑制效果更彻底。

4)提高Citrix Audio Redirection Service的资源优先级

VDA中的Citrix Audio Redirection Service负责管理音频虚拟通道(CTXCAM)。对于独享桌面,可以通过Windows任务管理器、WEM或第三方桌面管理软件将Citrix Audio Redirection Service的资源优先级设为高。在一些项目中,这个调整可以消除语音断断续续的现象:

注:如果是基于多会话的共享桌面或虚拟应用,Citrix Audio Redirection Service与其余多个服务共享使用通用的虚拟通道服务CtxSvcHost.exe,而不是单独的进程名。可以先找到对应的CtxSvcHost.exe进程,再手动提升资源优先级。

5)调节UDP读取频率

通过注册表,调节客户端发送UDP读请求之前等待的时长,根据环境中不同的效果可以分别把值改为10/15/20/25/30进行测试:

客户端

HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Citrix\ICA  Client\Engine\Configuration\Advanced\Modules\ClientAudio

UDPCapturePeriod  (REG_SZ) = 10 ~ 30

6)调节音频的最大比特率

比特率(BitRate)即每秒传送的比特(bit)数。比特率越高,每秒传输的音频数据就越多,音质就越清晰。前面提到音频质量设为中或高时,音频编码分别为speex和vorbis,可以通过修改VDA的注册表,调节这两种编码的最大比特率:

音频质量:中

HKLM\SOFTWARE\Citrix\Audio

MaxSpeexQuality (REG_DWORD)

Value: 0 to 10  (default is 5)

音频质量:高

HKLM\SOFTWARE\Citrix\Audio

MaxVorbisQuality  (REG_DWORD)

Value: 0 to 10  (default is 2)

不同键值的比特率如下:

注:比特率越大,消耗的流量带宽越高。

五、常见问题处理

c)Windows终端的麦克风隐私设置

麦克风隐私设置可能不允许Citrix HDX Engine应用访问麦克风。在控制面板中检查。

2)插拔耳机 或耳麦导致云桌面窗口无响应

有用户发现拔掉耳机并重连,云桌面仍保留着之前的耳机设备;有用户发现从第一个终端断开会话再用另一终端重连会话后,云桌面内音频设备的排列顺序不正确了。这其实是从XenDesktop 5.x时代遗留下来的问题 [LC9440],可以通过修改VDA的注册表,在会话断开时强制清除音频设备映射:

VDA

HKLM\SOFTWARE\Citrix\Audio

CleanMappingWhenDisconnect  (REG_DWORD) = 1

3)Remote PC的音频设备自动被禁用

可能原因1

给物理机通过命令行安装VDA时,少加了/remotepc参数。解决办法是用命令行重装VDA并加上/remotepc参数,例如:

VDAWorkstationSetup.exe /controllers "xxxxxxx.lab" /quiet /components VDA /disableexperiencemetrics /enable_hdx_ports /enable_hdx_udp_ports /enable_real_time_transport /enable_remote_assistance /remotepc /exclude "Machine Identity Service","Citrix Personalization for App-V - VDA","Citrix Supportability Tools","Citrix Files for Windows","Citrix Files for Outlook","User personalization layer","Citrix WEM Agent","Citrix MCS IODriver","Citrix VDA Upgrade Agent","Citrix Rendezvous V2" /includeadditional "Citrix Profile Management","Citrix Profile Management WMI Plugin"

可能原因2

如果更换其他的VDA版本(如VDA 1912)后,音频设备不会被自动禁用,那很可能是VDA 2203的一个已知问题(CVADHELP-20164)。此问题目前已有临时补丁,可联系Citrix原厂SE或给Citrix Tech Support开CASE获取此临时补丁验证问题。

版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:一、从零开始搭建自己的静态博客 -- 基础篇
下一篇:Python字符串格式化输出(python字符串格式化输出方法)
相关文章

 发表评论

暂时没有评论,来抢沙发吧~