微前端架构如何改变企业的开发模式与效率提升
1257
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小时内删除侵权内容。
发表评论
暂时没有评论,来抢沙发吧~