Product Documentation

CQA and Adaptive TCP Optimization

Note

If you are interested in using CQA Reporting and Adaptive TCP, please contact Citrix sales team.

Mobile networks have unique characteristics that might affect TCP performance. By leveraging Citrix ADC Connection Quality Analytics (CQA) and Adaptive TCP optimization techniques, mobile operators can analyze the overall network behavior to provide an improved user experience and increased levels of subscriber satisfaction.

Connection Quality Analytics (CQA)

When a client sends a TCP request, CQA monitors and extracts a large amount of detailed TCP layer data during an active connection. With the extracted data, CQA uses a heuristic learning algorithm to derive important characteristics of the connection, for example, network type (2G, 3G or 4G), congestion level (None, Low, Medium, or High), and signal quality (Excellent, Good, Fair or Poor) on a per-subscriber basis. Citrix ADC then stores the information in a subscriber store (so that it can be available for the next TCP connections from the same subscriber) and exports the data to the AppFlow collectors. The stored information is as raw values in a composite format that defines the network type, congestion level, and signal quality of the subscriber connection. The detected characteristics can be used for other applications, for example, to intelligently apply different TCP profiles for different network characteristics. For more information, see topic Adaptive TCP.

Benefit

Enable mobile operators to:

  1. Understand congestion level of a subscriber network.
  2. Analyzing overall network behavior of a subscriber.

Prerequisites

The CQA feature works on Telco platforms with the purchase of a basic CBM license and CBM Premium license and for otherCitrix ADC platforms, the feature works with the purchase of a CNS Platinum license. Before you configure the TCP optimization feature, your appliance must have a suitable license installed.

License support for Telco platforms:

  • CBM_TXXX_SERVER_Retail.lic
  • CBM_TPRE_SERVER_Retail.lic
  • CNS_WEBF_SSERVER_Retail.lic

Where XXX is the throughput, for example, Citrix ADC T1000.

License support for otherCitrix ADC platforms:

  • CNS_XXX_SERVER_PLT_Retail.lic

Where XXX is the throughput.

> show license

             License status:




                                           …

                                     Adaptive TCP: YES




             Connection Quality Analytics: YES

Configuring Connection Quality Analytics (CQA)

To optimize a TCP traffic using CQA technique, begin by enabling CQA and Appflow features on the appliance. When the appliance receives a client TCP connection request, it monitors the incoming traffic and uses the CQA configuration to derive CQA parameters from the raw TCP metrics.

Configure CQA by using the CLI

To configure CQA on a Citrix ADC appliance, you can perform the following tasks:

  1.  Enable CQA
  2.  Enable AppFlow Collector
  3.  Configure CQA Parameters
  4.  Verify CQA feature
  5.  Using CQA-based PI expressions

Enabling CQA

If you want the Citrix ADC appliance to extract TCP raw metric and derive CQA parameters, you must enable the CQA feature and set adaptive TCP to ON. You must also enable the Appflow feature so that the appliance can send the derived CQA data for network analysis.

To enable CQA:

At the command prompt, type the following command:

enable ns feature cqa

To enable Appflow collector:

You must have at least one Appflow collector to be running in your appliance. At the command prompt, type the following command:

enable ns feature appflow

Configuring CQA Parameters

For CQA to derive parameters such as network type, signal quality, and congestion level, you must configure CQA settings on the appliance.

To configure CQA:

At the command prompt, type the following command:

set ns cqaparam [-harqretxdelay <positive_integer>] [-net1label <string>] [-minRTTNet1 <positive_integer>][-lr1coeflist <string>] [-lr1probthresh <float>] [-net1cclscale <string>] [-net1csqscale <string>][-net1logcoef <string>] [-net2label <string>][-minRTTNet2 <positive_integer>] [-lr2coeflist <string>][-lr2probthresh <float>] [-net2cclscale <string>][-net2csqscale <string>] [-net2logcoef <string>] [-net3label <string>][-minRTTNet3 <positive_integer>] [-net3cclscale <string>][-net3csqscale <string>] [-net3logcoef <string>]

Example:

set ns cqaparam -net1label 2g -net1csqscale "25,50,75" -net1cclscale "25,50,75"

set ns cqaparam -net1label 3g -net1csqscale "25,50,75" -net1cclscale "25,50,75"

set ns cqaparam -net1label 4g -net1csqscale "25,50,75" -net1cclscale "25,50,75"

Where,

net1label is the name of the network label 1.  Maximum Length: 15

net1csqscale is the signal quality score limit, such as Excellent, Good, or Fair.  Maximum Length: 63

net1cclscale is the congestion level limit such as None, Low, or Medium.  Maximum Length: 63

Note

For proper configuration of CQA parameters, please contact Citrix Customer Support.

Verifying CQA

To verify if the CQA parameters are derived during an active TCP action, execute the following command. Note: You can execute the command only if the TCP connection is open and active.

T1300-10-2> show connectiontable connection.ip.eq(XXX) -detail fulL+

srcIP          : 192.168.134.3     dstIP          : 192.168.216.72    svcType        : TCP               C

srcPort        : 40073             dstPort        : 80                state          : ESTABLISHED

svcName        : vsrv-internet     idleTime       : 7                 mss            : 1460

Traffic Domain : 0                 priority       : Surge Priority    connid         : 30064847984

irs            : 1702584155        rcvNxt         : 1702584323        maxAck         : 1702584323

rcvWnd         : 0                 advWnd         : 8000000           maxRcvbuf      : 8000000

RxQinByte      : 168               iss            : 1998428965        sndNxt         : 2002733045

sndUnack       : 2002731585        maxSndbuf      : 8000000           sndBuf         : 2300

sndRecover     : 1998428965        congState      : open              peerconnid     : 30064847967

TxQinByte      : 7997700           nTcpwaitQpkt   : 5477              nRetxQpkt      : 1

tcpOpt         : sack ws           sackblocks     : 0                 ProfileName    : nstcp_default_profile

tcpMode        : ENDPOINT          nsWSvalue      : 7                 peerWSvalue    : 8

sndCwnd        : 595680            flavor         : BIC               bwEstimate     : 1056

retxRetryCnt   : 2                 outoforderPkts : 0                 rttMin         : 67

rttSmoothed    : 308               rttVariance    : 3525              rttReal(microsec) : 74427

BurstRateCntrl : DISABLED          CreditBytePrms : 0                 RateBytePerms  : 0

RateSchedulerQ : (null)            RttMin(ms)     : 66                RttAvg(ms)     : 402

BifAvg(Bytes)  : 474824            ThrptAvg(Kbps) : 9                 RcvwndAvg(Kbytes) : 544169

Iai1msPct      : 30                Iai2msPct      : 70                IaiSamples     : 2

CqaSamples     : 1166              NetClass       : 3g                CongLevel      : 0.000000

SigQuality     : 0.000000 IaiAvg(us)     : 2                 IsiAvg(us)     : 2

RcvwndMin      : 256               RetxCorr       : 0                 RetxCong       : 0

RetxPkts       : 0                 LoadDelayAvg(us) : 27                NoiseDelayAvg(us) : 400

RttMax(ms)     : 559

AdaptiveTCP    : N/A

Using CQA-based PI Expressions

The Citrix ADC policy infrastructure is enhanced to use the derived CQA parameters (stored in subscriber store) for string matching operations.

  • NETWORK_TYPE: String value that matches the detected network type configured through the cqaparam command interface.
  • SIGNAL_QUALITY: Integer value ranging from 0 to 100 and matching the CQA signal quality parameter stored in the subscriber store (lower values indicate better signal quality).
  • CONGESTION_LEVEL: Integer value ranging from 0 to 100 and matching CQA raw value of congestion level parameter stored in the subscriber store (lower values indicate lower congestion).

Below are sample PI expressions with CQA parameters such as network type, congestion level, and signal quality, evaluates an incoming traffic of network type 2G, exhibiting good or excellent signal quality with a high congestion level:

ANALYTICS.CONNECTION_QUALITY.NETWORK_TYPE.EQ("2G") && ANALYTICS.CONNECTION_QUALITY.SIGNAL_QUALITY.GT(60) && ANALYTICS.CONNECTION_QUALITY.CONGESTION_LEVEL.GT(80)

Configure CQA by using the GUI

To configure CQA, you must perform the following tasks:

  1. Enable CQA feature
  2. Configure CQA reporting parameters.

To enable CQA feature

  1.  Log on to Citrix ADC and navigate to Configuration> System> Settings.
  2. In the details pane, click Configure Advanced features link under Settings.
  3. In Configure Advanced Features page, select CQA and Appflow checkbox.

To configure CQA reporting parameter

  1. Log on to Citrix ADC and navigate to Configuration > System > Appflow.
  2. In the details pane, click Change Appflow Setting under Settings.
  3. In the Configure Appflow Settings page, select CQA Reporting checkbox.
  4. Click OK and Close.

Adaptive TCP Optimization

As subscribers in a telco network increase in an unprecedented rate, it is important to provide a quality user experience to each subscriber. To achieve this, Citrix ADC uses an advanced optimization technique called Adaptive TCP. The technique optimizes traffic by independently adapting different TCP profiles for each subscriber based on the information stored in a subscriber (UX) store. The UX store contains subscriber’s details (such as network type, signal quality, and congestion level) in a composite format. When a client sends a TCP request, the appliance queries the store for the subscriber information and applies a suitable TCP optimization based on subscriber’s network conditions. The appliance does this by enabling Adaptive TCP feature on a Citrix ADC TCP profile.

Benefit

Using Adaptive TCP optimization technique, a mobile operator can:

  • Extract advanced and detailed insight of network conditions experienced by a mobile subscriber.
  • Automatically adapt traffic management actions of Citrix ADC based on the current network conditions.

Prerequisites

The Adaptive TCP feature works only on telco traffic management platforms (such as Citrix ADC T1000 series and VPX-T platforms) with a Premium license.  The VPX-T software and T1000 hardware appliances are designed to meet the needs of telco mobile operators and service providers. Before you configure the TCP optimization feature, your appliance must have the following license files installed:

  1. Adaptive TCP
  2. Connection Quality Metrics

For example, CBM_T1_SERVER_Retail.lic or CBM_TPRE_SERVER_Retail.lic

> show license

             License status:

                                           …

             Adaptive TCP: YES

             Connection Quality Analytics: YES

Configuring Adaptive TCP

The configuration begins by enabling CQA, Appflow, and Adaptive TCP features. Once you enable, you can configure a normal TCP profile with ‘applyAdaptiveTcp’ option enabled and scrutinizing TCP parameters such as TCP favor, TCP Max congestion window, Burst Rate Control (pacing), TCP Rate, and TCP Rate Maximum Queue. When the appliance receives a TCP request, it applies a TCP profile and Adaptive TCP logic is triggered. The logic queries the subscriber store for the subscriber’s CQA information. Based on the derived metrics, the appliance independently adapts the TPC profile to optimize the subscriber traffic.  

Configuring Adaptive TCP by using the CLI

To configure Adaptive TCP, you must perform the following tasks:

  1. Enable CQA, AppFlow, and Adaptive TCP features
  2. Add load balancing virtual server for TCP traffic
  3. Add load balancing virtual server for HTTP traffic
  4. Set TCP profile parameters
  5. Apply TCP Profile either by:
    1. Associating the TCP profile to load balancing virtual server.
    2. Using policy-based TCP optimization.
      1. Adding an AppQoE action
      2. Adding an AppQoE policy
      3. Binding AppQoE policy to a TCP loading balancing virtual server

Enabling Adaptive TCP

If you want the appliance to optimize TCP traffic, you must enable CQA, AppFlow, and Adaptive TCP features.

To enable Adaptive TCP feature:

At the command prompt, type the following command

enable ns feature adaptiveTCP cqa appflow LB

Adding a Virtual Server for TCP Traffic

A Citrix ADC appliance uses a TCP load balancing virtual servers for optimizing an adaptive TCP traffic.

Note: Adaptive TCP optimization technique works for HTTP traffic also.

To add a load balancing virtual server for TCP traffic:

At the command prompt, type the following:

add lbvserver <name> TCP <ip> <port>

Example:

add lbvserver tcplb TCP 10.102.29.200 80

Adding a Virtual Server for HTTP Traffic

A Citrix ADC appliance uses a HTTP load balancing virtual servers for optimizing HTTP traffic.

To add a load balancing virtual server for HTTP traffic:

At the command prompt, type the following:

add lbvserver <name> HTTP <port> -persistenceType <persistenceType> -tcpProfileName <string>

Example:

add lb vserver httplb HTTP * 80 -persistenceType NONE -tcpProfileName nstcp_default_profile_with_adtcp

Configuring TCP Profile for Adaptive TCP optimization

You can configure a normal TCP profile to apply Adaptive TCP optimization. This can done by either adding a new profile or modifying an existing one.

Note

Before you configure TCP profiles to apply Adaptive TCP optimization, please contact Citrix Customer Support.

To configure a TCP profile:

At the command prompt, type the following:

add ns tcpProfile <name> -tcpmode (TRANSPARENT | ENPOINT) –applyAdaptiveTcp (ENABLED | DISABLE)

Example:

add ns tcpProfile nstcp_profile_with_adtcp -tcpmode ENDPOINT -applyAdaptiveTcp ENABLED

Applying TCP Profile

You can apply a TCP profile for Adaptive TCP optimization by either of the two ways:

  • Associating adaptive TCP profile to a load balancing virtual server.
  • Configuring policy-based Adaptive TCP optimization.

To apply adaptive TCP profile to a load balancing virtual server:

At the command prompt, type the following:

set lb vserver <name> -tcpProfileName <string>

Example:

set lb vserver tcplb -tcpProfileName nstcp_profile_with_adtcp

set lb vserver httplb -tcpProfileName nstcp_profile_with_adtcp

Configuring policy-based Adaptive TCP optimization

To configuring AppQoE policy-based optimization, you must complete the following tasks:

  1. Add AppQoE action
  2. Add AppQoE policy
  3. Bind AppQoE policy to load balancing virtual server for TCP and HTTP traffic

To add an AppQoE action:

At the command prompt, type the following:

add appqoe action <name> -priority <priority> –tcpprofile <string>

Example:

add appqoe action appqoeact-adtcp -priority HIGH -tcpprofile nstcp_profile_with_adtcp

To add an AppQoE policy:

At the command prompt, type the following:

add appqoe policy <name> -rule <expression> -action <string>

Example:

add appqoe policy appqoepol-adtcp -rule "CLIENT.VLAN.ID.EQ(401)" -action appqoeact-adtcp

To bind an AppQoE policy to a load balancing virtual server of HTTP and TCP traffic:

At the command prompt, type the following:

bind lb vserver <name> -policyName <string> -priority <positive_integer> -gotoPriorityExpression <expression> -type (REQUEST | RESPONSE)

Example:

bind lb vserver tcplb -policyName appqoepol-adtcp -priority 1 -gotoPriorityExpression END -type REQUEST

bind lb vserver httplb -policyName appqoepol-adtcp -priority 1 -gotoPriorityExpression END -type REQUEST

Configuring Adaptive TCP by using the GUI

The GUI enables you to:

  • Enable CQA and Adaptive TCP features.
  • Create load balancing virtual server for TCP traffic.
  • Create load balancing virtual server for HTTP traffic.
  • Configure TCP profile parameters for Adaptive TCP optimization.
  • Apply adaptive TCP profile to load balancing virtual server.
  • Create AppQoE action for policy-based Adaptive TCP optimization.
  • Create AppQoE policy for policy-based Adaptive TCP optimization.
  • Bind AppQoE policy to load balancing virtual server for policy-based Adaptive TCP optimization.

To enable Adaptive TCP feature

  1. In the navigation pane, expand System, and then click Settings.
  2. On the Settings page, click the Configure Advanced Features link.
  3. On the Configure Advanced Features page, select the CQA and Adaptive TCP check box.
  4. Click OK, and then click Close.

To create a load balancing virtual server for TCP traffic

  1. Sign in to the Citrix ADC appliance and navigate to the Traffic Management > Load Balancing > Virtual Servers page.
  2. In the details pane, click Add.
  3. On the Load Balancing Virtual Server screen, set the following parameters:
    1. Name. Name of the load balancing virtual server.
    2. Protocol. Select protocol type as TCP.
    3. IP Address Type. IP address type: IPv4 or IPv6.
    4. IP Address. IPv4 or IPv6 address assigned to the virtual server.
    5. Port. Port number of the virtual server.
  4. Click OK to continue with configuration of other, optional, parameters. For more information, see Creating a Virtual Server.
  5. Click Create and Close.

To create a load balancing virtual server for HTTP traffic

  1. Sign in to the Citrix ADC appliance and navigate to the Traffic Management > Load Balancing > Virtual Servers page.
  2. In the details pane, click Add.
  3. On the Load Balancing Virtual Server screen, set the following parameters:
    1. Name. Name of the load balancing virtual server.
    2. Protocol. Select protocol type as HTTP.
    3. IP Address Type. IP address type: IPv4 or IPv6.
    4. IP Address. IPv4 or IPv6 address assigned to the virtual server.
    5. Port. Port number of the virtual server.
  4. Click OK to continue with configuration of other, optional, parameters. For more information, see Creating a Virtual Server.
  5. Click Create and Close.

To set TCP profile for Adaptive TCP optimization

  1. Log on to Citrix ADC appliance and navigate to the Configuration > System > Profiles page
  2. In the Details pane, click TCP Profiles tab.
  3. In the Configure TCP Profiles page, select Apply Adaptive TCP checkbox.
  4. Click OK and Close.

To apply adaptive TCP profile to load balancing virtual server for TCP traffic

  1. Log on to Citrix ADC appliance and navigate to the Configuration > Traffic Management > Virtual Servers.
  2. In the details page, select a virtual server profile for TCP traffic and click Edit.
  3. In the Load Balancing Virtual Server page, go to Profiles section and click pencil icon.
  4. Apply the adaptive TCP profile to the virtual server.
  5. Click OK and Done.

To apply adaptive TCP profile to load balancing virtual server for HTTP traffic

  1. Log on to Citrix ADC appliance and navigate to the Configuration > Traffic Management > Virtual Servers.
  2. In the details page, select a virtual server profile for HTTP traffic and click Edit.
  3. In the Load Balancing Virtual Server page, go to Profiles section and click pencil icon.
  4. Apply the adaptive TCP profile to the HTTP virtual server.
  5. Click OK and Done.

To add AppQoE action for policy-based Adaptive TCP optimization

  1. Log on to Citrix ADC appliance and navigate to the Configuration > AppExpert > AppQoE > Actions.
  2. In the details pane, click Add to create an action.
  3. In the Create AppQoE Action screen, type or select values for the parameters. The contents of the dialog box correspond to the parameters described in “Parameters for configuring the AppQoE Action” as follows (asterisk indicates a required parameter):
    1. Name—name
    2. Action type—PRIORITY_QUEUING
    3. TCP Profile—Apply a TCP profile by adding a new one or selecting an existing one.
    4. Priority—HIGH
    5. Policy Queue Depth—0
    6. Queue Depth—0
    7. Click Create and OK.

To add AppQoE policy for policy-based Adaptive TCP optimization

  1. Log on to Citrix ADC appliance and navigate to the Configuration > AppExpert > AppQoE > Policy.
  2. In the details pane, click Add to create a policy.
  3. In the Create AppQoE Policy screen, type or select values for the parameters. The contents of the dialog box correspond to the parameters described in “Parameters for configuring the AppQoE Policy” as follows (asterisk indicates a required parameter):
    1. Name—name
    2. Action—Associate an action to perform when the policy rule matches the TCP connection. You can associate by adding a new action or selecting an existing one.
    3. Expression—In the Rule text box, either enter the policy expression with CQA parameters or use the expression editor to create a rule.
  4. Click OK and Close.

To bind AppQoE policy to load balancing virtual server for policy-based Adaptive TCP optimization

  1. Log on to Citrix ADC appliance and navigate to the Configuration > Traffic Management > Load Balancing > Virtual Servers.
  2. In the details pane, select a load balancing virtual server of type HTTP or TCP and click Edit.
  3. In the Load Balancing Virtual Server page, go to Policies section and click the + icon.
  4. In the Policies slider page, do the following:
    1. Choose policy. Policy name.
    2. Choose type. Policy type as request or response.
  5. Click Continue to close the slider page and go to the main page.
  6. Click Done.

Analytics and Reporting

The TCP Speed Reporting is a Citrix ADC feature which extracts a rich set of TCP-level statistics, as a measure of TCP download and upload performance, and is utilized in TCP Insight reports of the Citrix Application Delivery Management (ADM) . To achieve this, Citrix ADC monitors each TCP connection, locates packet bursts on an idle time-out basis and reports key metrics (such as byte count, retransmitted byte count, an duration) for the identified maximum burst. In addition to this, the TCP raw metrics such as RTT, BIF, receive window and so forth are also measured based on the optimization type (endpoint or transparent) that you configure. The TCP Speed Reporting feature is enabled by default, supports both TCP and HTTP vServers and depends on Appflow/ULFD reporting infrastructure. For more information, see Analytics and Reporting.

CQA and Adaptive TCP Optimization