Product Documentation

Optimizing TCP Performance using TCP NILE

Aug 17, 2015

The Transmission Control Protocol (TCP) has long been used to establish and manage Internet connections, handle transmission errors, and smoothly connect web applications with client devices. But network traffic has become more difficult to control, because packet loss does not depend only on the congestion in the network, and congestion does not necessarily cause packet loss. Therefore, to measure congestion, a TCP algorithm should focus on both packet loss and bandwidth.

Citrix Systems has developed a new congestion-control algorithm, NILE, a TCP optimization algorithm designed for high-speed networks such as LTE, LTE advanced and 3G. Nile addresses unique challenges caused by fading, random or congestive losses, link layer retransmissions and carrier aggregation.

The NILE algorithm:

  • Bases queue-latency estimates on round-trip time measurements.
  • Uses a congestion-window-increase function that is inversely proportional to the measured queue latency. This method results in approaching the network congestion point more slowly than does the standard TCP method, and reduces the packet losses during congestion.
  • Can distinguish between random loss and congestion based loss on the network by using the estimated queue latency.
The telecom service providers can use the NILE algorithm in their TCP infrastructure to:
  • Optimize mobile and long-distance networks— The NILE algorithm achieves higher throughput compared to standard TCP. This feature is especially important for mobile and long-distance networks.
  • Decrease application perceived latency and enhance subscriber experience— The Nile algorithm uses packet loss information to determine whether the transmission-window size should be increased or decreased, and uses queuing delay information to determine the size of the increment or decrement. This dynamic setting of transmission-window size decreases the application latency on the network.

To configure NILE support using the command line interface

At the command prompt, type the following:

set ns tcpProfile <name> [-flavor NILE]

Configuring NILE support using the configuration utility

  1. Navigate to System > Profiles > TCP Profiles and click TCP profiles.
  2. From the TCP Flavor drop-down list, select NILE.


set ns tcpProfile tcpprofile1 -flavor NILE