HDX 3D is a Citrix technology that allows 3D graphics applications to be virtualized by streaming graphics data instead of individual images. The document provides guidance on setting up NAT and WAN emulation
5. What it is …
Download/obtain HDX 3D V1.1 from this source:
https://www.citrix.com/English/ss/downloads/details.
asp?downloadId=1858483&productId=163057
HDX 3D consists of 2 download packages:
FFMpeg Open Source (not needed - the “source”)
HDX 3D Pro Graphics
The 12.0.33 online Plugin included in the package
has been super-seeded by:
Do use the actual available Plugins (12.1/Nitro [13])
The 12.1 plugin is considered as stable and has
indeed the HDX 3D GPU support built in.
5 HDX 3D in a NATshell
6. What it is …
The RTM_with_12.0.1_client_health_Check_Tool
package consists of:
CitrixOnlinePluginFull.exe 12.0.33 –
[-> Use the 12.1 Plugin - super-seed.]
Documentation (Administrator's Guide,
ReleaseNotes, User's Guide)
HDX 3D Pro Graphics – HealthCheck.exe
HDX3D_PROGFX_x64SERVERMSI.msi
HDX3D_PROGFX_x86SERVERMSI.msi
6 HDX 3D in a NATshell
7. What it is …
Recommendations/prerequisites for HDX 3D:
Actual plugins (12.1 and above on the client side)
Older Plugins (e.g. 11.2) will just work – No HDX
3D acceleration could be expected in here.
Actual Workstation Hardware/Graphic Cards
Up to date NVIDIA ™ Graphic Drivers (CUDA Drv.)
An existing up and running XenDesktop 4
infrastructure should be in place. (up to date).
7 HDX 3D in a NATshell
8. What it is …
The purpose of HDX 3D is to „stream“ graphical
intense data via special Codecs to the end-user.
HDX 3D runs on bare metal workstations in the
Datacenter with special GFX cards.
XenDesktop is used to broker the 3D workstation
to the user(s)
HDX 3D is limited to 1 user-session/workstation.
Actual HDX 3D is available for XenDesktop 3, 4.
XenDesktop 5 support is planned – AFAIK with a
SP, Feature Release (Codename “Alsace”)
8 HDX 3D in a NATshell
9. What it is …
The codec is based on the open source FFMpeg
http://www.ffmpeg.org/
No pictures or picture deltas are flying over
the wire – It is a pure media-stream. Think of
„movie-streaming“.
As GPUs are pretty today the GPU
does all the conversion parts
e.g. CUDA - actual we have no FERMI support
-> This is planned for the “Alsace” Release.
9 HDX 3D in a NATshell
10. What it is …
HDX 3D usage scenarios can be widely
seen in the CAD/CAM world.
Think of Solidworks
(http://www.solidworks.com/)
Think of CATIA (http://www.3ds.com/)
Think of the Autodesk product line
(http://usa.autodesk.com/)
Use 3D Apps as you might know it from
XenApp, XenDesktop
This is the brilliant idea behind HDX 3D.
10 HDX 3D in a NATshell
11. What it is …
A typical usage example for HDX 3D (CATIA)
11 HDX 3D in a NATshell
12. Why use HDX 3D NATed …
Think of security – external workers,
companies, customers, etc.
Think of WAN/MAN infrastructures
Think of branch offices
Think of … The CLOUD
12 HDX 3D in a NATshell
15. NAT configuration
Check the Web Interface Connection from ASC
Create a 2nd WI site (for internal/external access
purposes)
Register/check within DNS – DNS reverse lookup.
Check all routing entries – everywhere.
Look out for ARP anomalies.
Do watch for TCP latency.
BTW:
(http://oss.oetiker.ch/mrtg/ - nice one – OS !)
15 HDX 3D in a NATshell
19. NAT configuration
Type in all IP s of the HDX 3D boxes
Type in your corresponding NAT external IP
address.
19 HDX 3D in a NATshell
20. NAT configuration
Check out the firewall/router/NAT Settings
Taken from http://support.citrix.com/article/CTX118175:
You also must configure port forwarding three times:
on the firewall, router, and NAT. Here is an example with IPTABLES:
# iptables –t nat –A PREROUTING –I eth0 –p tcp - -dport 1491 –j DNAT - -
to-destination xxx.xxx.xxx.xxx:1494
Also, you must configure port forwarding for http to access the XenDesktop
Server Web Interface: Port 80 (or 8080) to port 80 (or 8080) on IIS.
# iptables –t nat –A PREROUTING –I eth0 –p tcp - -dport 80 –j DNAT - -to-
destination xxx.xxx.xxx.xxx:80 (8080)
Notice that the port number is always different on an External interface
(coming from the public IP – source port). The Internal port (destination port)
is the same because XenDesktop Agent is listening on the same port on each
computer.
For common used ports see: http://support.citrix.com/article/CTX101810
20 HDX 3D in a NATshell
21. NAT configuration
Add all internal HDX 3D Machines to the Web
Interface translated configuration.
Just to be sure ICMP ping the HDX 3D boxes from
within the Web Interface to ensure that the boxes
are reachable.
You may use XDPing
(http://support.citrix.com/article/CTX123278) to
verify the ICA/HDX connection.
What could strike:
http://support.citrix.com/article/CTX711855
Re-check your STA settings.
21 HDX 3D in a NATshell
22. NAT configuration
Review all your settings, Re-check everything with the
firewall/security gents.
This is “old school”.
Think of a new Workstation kicking in or an IP-Address
change.
You may have to touch every Firewall/Router/Routing
Tables, etc.
The “Way Out”:
Use a “transparent NAT”.
A Netscaler ™ redundant powered CAGEE. This
should be considered as the superior NAT related
system – Advantage - A single point of administration.
22 HDX 3D in a NATshell
24. WAN-Emulation
To simulate how Citrix HDX 3D performs in an WAN
environment use netem
http://www.linuxfoundation.org/collaborate/workgroups/
networking/netem
netem should be enabled in all actual Linux distros.
Use the distribution of your choice – Build a Lab
environment with a Linux box (at least 2 NICs) –
configure as router [ e.g.
https://help.ubuntu.com/community/Router] in between
the test frontend (Client) and the backend XenDesktop
with HDX 3D.
24 HDX 3D in a NATshell
25. WAN-Emulation - Linux
Open a shell.
switch to root e.g. sudo /bin/bash or su
-
[type in your root password]
We should be #root now, ma´am.
25 HDX 3D in a NATshell
26. WAN-Emulation - Linux
Type in (e.g.):
tc qdisc add dev eth0 root handle 1:0 netem
delay 100ms loss 0.2% corrupt 0.1% reorder 2%
[Return]
Use replace if a configuration has already been
applied
26 HDX 3D in a NATshell
27. WAN-Emulation - Linux
Verify your settings via
tc -s qdisc show dev eth0
Verify your settings with a ping –t from client side
27 HDX 3D in a NATshell
28. WAN-Emulation - Linux
To revert your settings to normal operation
(default settings):
Type in
tc qdisc del dev eth0 root
tc -s qdisc show dev eth0
28 HDX 3D in a NATshell
29. WAN-Emulation - SOLARIS
You can do WAN emulation with oracle SOLARIS ™ - If you dare ;-)
See
http://www.c0t0d0s0.org/archives/6625-Less-known-Solaris-features-hxbt-or-
WAN-emulation.html
And
http://shalaka.wordpress.com/2010/05/21/emulating-wan-on-lan-using-solaris-10-
ip-qos-and-dtrace/
29 HDX 3D in a NATshell
30. Test
We DO recommend a pre flight check.
Simulate, simulate, simulate.
Wireshark is your friend.
If there are some quirks coming up to
your attention the next chapter may be
for your interest.
30 HDX 3D in a NATshell
32. Optimize/Troubleshoot
You may disable CTX session reliability – as it could
have some negative performance impacts.
Check TCP Offloading – Try with or without. Disable
if you spot issues [it depends on the NIC hardware].
Windows 7
%SYSTEMROOT%SYSTEM32netsh.exe int tcp set global chimney=disabled
%SYSTEMROOT%SYSTEM32netsh.exe int tcp set global rss=disabled
Windows XP
"DisableTaskOffload"=dword:00000001
"EnableRSS"=dword:00000000
"EnableTCPChimney"=dword:00000000
"EnableTCPA"=dword:00000000
32 HDX 3D in a NATshell
33. Optimize/Troubleshoot
Optimize the TCP/IP Stack
Please test these settings in a LAB !!!
Windows 7
[HKEY_LOCAL_MACHINESYSTEMCurrentControlSetServicesTcpipParameters]
"EnablePMTUBHDetect"=dword:00000001
"KeepAliveTime"=dword:00007530
"KeepAliveInterval"=dword:00001388
"TcpMaxDataRetransmissions"=dword:00000005
"EnableBcastArpReply"=dword:00000001
"DisableTaskOffload"=dword:00000001
33 HDX 3D in a NATshell
34. Optimize/Troubleshoot
Optimize the TCP/IP Stack
Windows XP
[HKEY_LOCAL_MACHINESYSTEMCurrentControlSetServicesTcpipParameters]
"DeadGWDetectDefault"=dword:00000000
"DisableIPSourceRouting"=dword:00000002
"EnableDeadGWDetect"=dword:00000000
"EnableICMPRedirect"=dword:00000000
"EnableMulticastForwarding"=dword:00000000
"EnablePMTUDiscovery"=dword:00000001
"EnablePMTUBHDetect"=dword:00000001
"EnableAddrMaskReply"=dword:00000000
34 HDX 3D in a NATshell
35. Optimize/Troubleshoot
Optimize the TCP/IP Stack (cont.)
Windows XP
[HKEY_LOCAL_MACHINESYSTEMCurrentControlSetServicesTcpipParameters]
"IPEnableRouter"=dword:00000000
"KeepAliveTime"=dword:00300000
"PerformRouterDiscovery"=dword:00000000
"MaxHashTableSize"=dword:0000FFFF
"MaxUserPort"=dword:0000FFFF
"MaxFreeTcbs"=dword:00005000
"NumTCPTablePartitions"=dword:00000004
"SackOpts"=dword:00000001
"Tcp1323Opts"=dword:00000003
"TcpAckFrequency"=dword:0000000D
"TcpMaxSendFree"=dword:0000FFFF
"TcpTimedWaitDelay"=dword:0000001e
35 HDX 3D in a NATshell
36. Optimize/Troubleshoot
Follow
http://support.citrix.com/article/CTX125
027
Citing:
Number of Buffers = TCP Receive Window/TCP MSS
TCP MSS size used to round up should match OutBufLength under
the following registry (default is 1460):
[HKEY_LOCAL_MACHINESOFTWARECitrixICA
ClientEngineConfigurationAdvancedModulesTCP/IP]
"OutBufLength"="1460"
Once calculated, update the client side registry with these values:
HKEY_LOCAL_MACHINESOFTWARECitrixICA
ClientEngineConfigurationAdvancedModulesTCP/IP
"OutBufCountClient2"= Number of OutBufs (default is 44)
"OutBufCountHost2"= Number of OutBufs (default is 44)
36 HDX 3D in a NATshell
37. Optimize/Troubleshoot
Run C:Program Files (x86)CitrixICAService
HDX3DConfigCmdLineX64.exe or HDX3DConfigCmdLineX86.exe
DISPLAY Current_options
CODEC --> CPU
QUALITY MODE --> FIXED
MAX FRAME CAPTURE RATE --> 12
DEBUG LOGGING --> DISABLED
Set HDX3DConfigCmdLineX64.exe Switch_codec GPU
HDX3DConfigCmdLineX64.exe DISPLAY Current_options
CODEC --> GPU
QUALITY MODE --> FIXED
MAX FRAME CAPTURE RATE --> 12
DEBUG LOGGING --> DISABLED
37 HDX 3D in a NATshell
38. Optimize/Troubleshoot
Run:
The HDX 3D Health Check tool
A 100% pass should look like this:
38 HDX 3D in a NATshell
39. Optimize/Troubleshoot
Control if OpenGL is used - at the GFX Driver settings.
Control if your HDX 3D App is using the GFX Card
OGL
39 HDX 3D in a NATshell
40. Optimize/Troubleshoot
To Disable the shutdown option on the WS:
40 HDX 3D in a NATshell
41. Optimize/Troubleshoot
To Disable Disconnect - Create a new GPO:
Edit the policy and change the following to
"enabled"
Computer Configuration > Administrative
Templates > Windows Components >
Remote Desktop Services > Remote
Desktop Session Host > Remote Session
Environment > Remove Disconnect option
from Shut Down dialog.
41 HDX 3D in a NATshell
42. Optimize/Troubleshoot
Review the disconnection settings:
Follow:
http://support.citrix.com/article/CTX127516
You may have to alter/manipulate the default
settings.
Ensure that the latest available Virtual
Desktop Agent (VDA) is installed on the HDX
3D workstations –
http://support.citrix.com/product/xd/v4.0/
42 HDX 3D in a NATshell
43. Optimize/Troubleshoot
WAN optimization/Packet shaping/QOS
could help – HDX 3D does need at least 1,5
Mpbs (Better 2 and up) – Remember – This
does NOT accelerate HDX 3D in any way.
Citrix has an interesting offer:
New XenDesktop Platinum Now Includes
HDX WAN Optimization at No Additional
Charge !
See:
http://community.citrix.com/pages/viewpage.ac
tion?pageId=160366748
43 HDX 3D in a NATshell
44. Optimize/Troubleshoot
Use Quality of Service (QoS) e.g. on Port level.
To cross the borders of Jordan ;-)
WAN optimization can be done with Bluecoat ™
or the other usual suspects. (F5/Riverbed, etc.)
http://www.bluecoat.com/products/packetshaper
44 HDX 3D in a NATshell
45. Optimize/Troubleshoot
Follow the HDX 3D troubleshooting guide:
http://support.citrix.com/article/ctx123413
Have a look at:
http://community.citrix.com/blogs
Please contribute here. You are the voice !!!
https://community.citrix.com/kits/#/kit/1067009
http://support.citrix.com/article/CTX124443:
XenDesktop 4 HDX 3D for Professional
Graphics 1.1 - Administrator's Guide
45 HDX 3D in a NATshell