In this post, we will explore what is Blast Extreme Network Intelligent Transport or BENIT in Horizon 7.5 & later and Horizon Client 4.8 & Later. However, before we discuss that, it is essential to understand previous technology, i.e, BEAT or Blast Extreme Adaptive Transport.
In earlier versions of Horizon Clients, i.e, prior to Horizon client 4.8, users were required to choose from three different options to describe their network conditions, namely Excellent, Typical, And Poor. With Typical being default selection in case user did not select the network options.
Based on the selection of the network option, transport protocols were selected. In case you select Excellent network, which is ideal for the corporate LAN environment, where network is excellent and has very less network latency as well as packet loss. In such networks, TCP Only is used as transport protocol.
If You select Poor network option, which generally represents, unstable networking conditions such as in mobile data networks where data loss percentage is high generally due to travel like conditions. In such conditions, UDP is used as transport protocol.
This is for a simple reason that TCP is a connection oriented protocol whereas UDP is a connection less protocol.
What about Typical setting?
With network setting set to Typical, Blast Extreme uses BEAT as part of this network condition. BEAT uses UDP networking for protocol traffic and TCP networking for control and broker communication.
BEAT is designed to allow the switching between TCP and UDP based on the connected client network conditions. If UDP cannot be used due to ports being blocked or other issues, Blast Extreme falls back to TCP networking. It dynamically adjusts to varying bandwidth, latency and packet loss.
For example, let’s assume that a client is connected over a public Wi-Fi and established to connection using TCP protocol, at times connectivity may become unstable resulting in packet loss and high latency. As mentioned earlier, BEAT has been designed to adapt to these types of connections. It can detect if packets are being lost and will adjust the protocol from TCP to UDP automatically to allow the dropped packets to be lost and continue transmission. BEAT also has the ability to switch from UDP to TCP depending on the clients connectivity.
Below are some the reasons why new solution such as BENIT instead of using only BEAT.
- BEAT consumes slightly more CPU when compared to TCP only in Excellent Network option to provide LAN like performance.
- Also new innovations in TCP stack such as new congestion algorithms on different OS platforms can make it tricky for BEAT.
- Selecting correct network options each time while connecting is another inconvenience from end users perspective.
What is BENIT?
With Horizon Client 4.8 and later, three network options (Excellent, Typical and Poor) have been removed from all native clients except Horizon Client for Windows 10 UWP.
The Blast Extreme networking stack now dynamically chooses the right mode of connection. This built-in intelligence is called Blast Extreme Network Intelligent Transport (BENIT) that can withstand temporary network losses without disrupting higher-level applications.
BENIT is a layer 5 or session layer protocol on top of TCP and BEAT as add-on. It plugs into the session protocols run by the Multiplexer. This provides,
- BENIT Reliability: Guaranteed delivery of data across transports, or temporary network failures by doing message sequencing. It does not require error recovery or detection.
- Transport Switching: Use the right combination of transport based on application and network feedbacks.
- Load balancing: Can optionally use both transports at the same time to balance the load across transports.
Blast Extreme with BENIT can withstand temporary network losses (up to maximum of configurable time window) without disrupting higher level applications. Default time window is set to 120 seconds. For Example, File transfer over Client Drive Redirection (CDR) automatically resumes from where it left off once the network is restored.
Transport Switching in BENIT
Decision on the right combination of the transports to use is based on feedback from network related sensors and application sensors. This decision can be based on static policy or auto-learned policies. These Policies act like a trigger to switch the transport.
Static policies can be configured with thresholds such as switch from TCP to BEAT transport if packet loss is greater than X%, latency is greater than X milliseconds and bandwidth is less than X Mbps. BENIT periodically senses the network conditions and switch transports if needed.
Auto-learned policies are based on the feedback from application sensors such as FPS, A/V quality. Goodness index is computed using a scoring function and an appropriate transport can be dynamically learned based on this goodness index.
Irrespective of static policy-based or auto-learned policy based transport switching, the switching is done independently on the client and on the virtual desktop. So it is possible that, Client is using TCP and Agent is using UDP.
How do you check if TCP or UDP is being used?
You can use VMware Horizon Performance Tracker (PerfTracker), a monitoring tool, to determine which transport is being used. Performance Tracker can be selected as an option and installed as part of the Horizon Agent installation. A shortcut to the Performance Tracker executable appears on the desktop. Read more about Horizon Performance Tracker in my other post.
BENIT provides the best of TCP and Adaptive Transport (BEAT) and eliminates the need for the end user to correctly choose the right transport to use.
That is all in this post.