Use Case:
Banking.com wants to improve their network traffic performance by optimizing TCP Profile eventually leading to improvement in customer experience
A TCP Profile is a collection of TCP parameters like TCP Flavor, TCP timers, Window parameters, Buffer parameters, Multipath TCP and other related parameters which offers flexibility and ease of configuration.
NetScaler provides the luxury of building our own custom profile based on different requirements. It is to be noted that using appropriate TCP parameters suited for the congestion algorithm used, is important for the profile to work successfully. This leads to the process of tuning the TCP profile by changing the parameters leading to optimized performance.
NetScaler has built-in TCP profiles with appropriate TCP Flavor, TCP parameters for a variety of use cases. These profiles can be bound to vserver or services for usage.
In order to view/edit these built-in profiles, navigate to System -> Profiles -> TCP Profiles
To create a new profile, click “Add”
TCP Flavor mentioned in TCP Profile will contain various TCP congestion control algorithms in the dropdown box. The supported TCP congestion control algorithms are New-Reno(default), BIC, CUBIC,
Nile and Westwood+. Other TCP parameters has to be selected in the window based on the requirements.
For more information on the TCP parameters, refer : https://www.citrix.com/blogs/2012/03/29/create- your-own-tcp-optimization-profile-on-netscaler/
To apply the created TCP Profile to a service,
Step1: Navigate to Traffic Management -> Load Balancing -> Services
Step2: Click “Edit”
Under profiles, select the custom TCP Profile that was created earlier. This will bind the TCP profile to the service.
To bind TCP profile to service using CLI,
> set service <servicename> -tcpProfileName <profilename>
To apply the created TCP Profile to a vserver,
Step1: Navigate to Traffic Management -> Load Balancing -> Virtual Servers
Step2: Click “Edit”
Under profiles, select the custom TCP Profile that was created earlier. This will bind the TCP profile to the vserver.
> set lb vserver <lbvservername> -tcpProfileName <profilename>