# Zeta-TCP

Zeta-TCP refers to a set of proprietary Transmission Control Protocol (TCP) algorithms aiming at improving the end-to-end performance of TCP, regardless of whether the peer is Zeta-TCP or any other TCP protocol stack, in other words, to be compatible with the existing TCP algorithms. It was designed and implemented by AppEx Networks Corporation.
Zeta-TCP primarily provides the following improvements:
* Congestion avoidance based on both latency and loss measures.
* Improved loss-detection algorithm.
* Reverse control.

## Congestion avoidance

Most TCP stack implementations use TCP New Reno or its variations (such as TCP SACK RFC3517) as the congestion avoidance algorithm. The New Reno-based algorithms are loss-based. Loss-based algorithms treat the packet losses as the sole indication of the congestions in the network. As the Internet has since evolved, this assumption is often an overkill today. The congestion loss is constantly descending with the advancement of technologies, while, relatively, random loss due to the properties of the media (e.g., wireless/Fading channels), wireline noises/cross-talk, connectivity flaws, software bugs, etc., is increasing. Once "congestion" is detected (or false-alarmed), New Reno shrinks the Congestion Window (CWND) sharply, causing a plunge of the sending rate. This is one of the major reasons that TCP based applications are often barely able to use a fraction of the subscribed bandwidth, especially when the round-trip delay time (RTT) is large.
TCP Vegas and its variations, most notably FAST TCP, base their congestion predications on the RTT measurement only. Such latency-based algorithms overcome the problems of the loss-based ones, and are usually a more realistic reflection of congestion in the network. However the latency-based algorithms have their own limitations.
Zeta-TCP addresses the problem by combining the strength of latency-based and loss-based algorithms. It constantly measures the RTT variation and loss rate variation, and calculates the likelihood of congestion. CWND backoff schemes are applied based on the likelihood. With the highest likelihood, it applies the backoff scheme of New Reno, which has already been proven to be effective and stable with many years of massive deployment.

## Loss detection

The packet losses in the real network environment rarely spread evenly; rather they tend to happen close to each other. The TCP related RFCs (New Reno and SACK, etc.) explicitly defined how the first loss can be detected with high confidence. However, the detection of the losses after TCP enters the Fast Recovery mode with SACK permitted is not efficient in RFC3517. Some popular Operating Systems have their own implementations that are equally suboptimal.
Zeta-TCP provides a simple algorithm to calculate the loss probability on every unACK'd/unSACK'd packet. A packet is retransmitted only when its loss probability has surpassed a certain threshold. The same rule applies to the retransmission decision of every packet. Therefore, Zeta-TCP minimizes the number of retransmitted packets, further improving the bandwidth utilization. Lab tests have confirmed that Zeta-TCP retransmitted much fewer packets than the other TCP implementations under the same loss rate.
Zeta-TCP has developed a mechanism to accurately detect the packet loss at the earliest time once it suspects a loss is likely to happen. Early-detection usually can save one RTT or two on retransmission.

## Reverse control

While the other algorithms focus on accelerating the outgoing traffic, Reverse Control attempts to address the incoming issues. Reverse Control monitors the quality of the connections with inbound data, and executes the algorithm to hint the peer to transmit as fast as it can when the connection quality is good. The algorithm also tends to more accurately identify the real packet losses from other abnormal situations in order to avoid triggering unnecessary fast recoveries.
The Reverse-controlled inbound acceleration is heuristic in that the inbound speed is controlled by the sender, i.e., the peer. It can only hint to the peer to send faster. Some TCP stacks take the hint and others do not. Often the sender side (e.g. content server) has a rate limiting mechanism that caps acceleration.
In addition to acceleration, Reverse Control can also limit the inbound rate. Unlike acceleration, slowing the inbound traffic is effective and accurate with the TCP flow control mechanism. The inbound rate limiting of Zeta-TCP lays the foundation of the inbound flow control of AppEx IPEQ.

## Implementation

At the time of writing, Zeta-TCP has been implemented as software modules for Linux (Netfilter Kernel Module), Microsoft Windows 10 down to XP and related Windows Server versions (NDIS IM Filter/NDIS LWF), and WinCE. AppEx does not modify the protocol stack, but intercepts the TCP flows and apply its algorithms on-the-fly. This nonintrusive way to implement the algorithms is intended for wider acceptance. The drawback is the added overhead of processing but the overhead is negligible in comparison with the performance gains.