# TACK: Improving Wireless Transport Performance by Taming Acknowledgements

* Wireless local area network (WLAN) demands high throughput&#x20;
  * Far from satisfactory&#x20;
* TCP ACKs cause internal interference&#x20;
  * External interference: between wireless devices on the same channel
  * **Internal interference**: between data packets and ACKs in the same connection&#x20;
  * ![](/files/tUitBxj7ypEWJXDRRHfw)
* ACKs cause similar medium access overhead&#x20;
  * Extra overhead for sending each packet independent with packet size&#x20;
* Reducing ACK frequency improves throughput&#x20;
  * Emulations over wireless links
* &#x20;But, simply reducing ACK frequency hurts TCP performance&#x20;
  * Negative impact: TCP's transport control depends on frequency ACKs&#x20;
* Goal: seek the optimal ACK frequency with corresponding improvements in transport mechanism to avoid the "negative effect" &#x20;
* Takeaways
  * **TCP's delayed ACK is far from optimal**&#x20;
    * Because: TCP adopts a max function other than a min function&#x20;
      * "MIN" is also able to achieve good transport performance
      * Key: avoid TACK's negative effect&#x20;
      * TACK adopts a "min" instead of a "mx" to assure the minimized ACK frequency in the context of network dynamics&#x20;
    * data throughput high / low&#x20;
    * The frequency of TCP's delayed ACK is not bounded&#x20;
    * Tame ACK (TACK)
      * A new ack whose frequency is decided by the bandwidth and the delayed product (bdp)&#x20;
      * TACK applies periodic ACK when bdp is large, and falls back to byte-counting ACK is small&#x20;
        * Throughput is high --> ACK frequency is bounded
        * Low --> ACK frequency reduced proportionally&#x20;
  * **Our way of avoiding "negative effective" is a TACK-based acknowledgement mechanism**
    * ![](/files/laqvxGLY9H52SORzWKbW)
    * ![](/files/bgvODiwxaJ83JBihaTta)
    * ![](/files/dgqKpturYzyebzgY02OT)
      * Advancements in loss recovery&#x20;
      * Advancements in round-trip timing&#x20;
      * Advancements in send rate control&#x20;
    * With more types of ACKs and more necessary information carried in ACKs, less number of ACKs are required&#x20;
  * **An approximately minimized ACK frequency works better than expected** &#x20;
    * Wired / wireless links&#x20;
    * TACK-based protocol provides a good replacement of legacy TCP in WLAN, and also works well in WAN scenarios&#x20;
    * TACK and its corresponding improvements in transport mechanism can also be adopted into other stacks (e.g., QUIC) to compensate for scenarios where the ack overhead is non-negligible&#x20;
* Evaluation
  * TCP-TACK implementation&#x20;
  * Experimental setup&#x20;
* Questions&#x20;
  * WiFi (cellular) networks: scheduling to enter WiFi, more stable, TACK is needed?&#x20;
    * Contention is less than WLAN&#x20;
    * Cellular: uplinks (bandwidth) is usually limited, asymmetric bandwidth, maybe reducing the ACK frequency when the ACK path is congestion&#x20;
    * WiFi 6: contention is less, but always exist
  * Multi-hop wireless network&#x20;
    * Contention bigger&#x20;
    * TACK works?&#x20;
      * In theory, the benefits may increase&#x20;
  * Harder to figure out performance issue?&#x20;
    * Reduce 90% of the number of ACKs&#x20;
    * According to the connection states, more difficult&#x20;
    * TACK carries more necessary information, the size of the ACK is larger than the traditional one. The end-point can also get most of the information needed for the connections&#x20;
  * Protocol based on the rate?&#x20;
    * Rate-based CC&#x20;
      * TACK: less number of acks, the sender will have less information to do CC, also will result in burst in window-based CC&#x20;
    * TACK is more suitable for rate-based CC
      * BBR: pacing as the basic mechanism for the sender, can avoid the large burst for sending less number of ACKs &#x20;


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://sliu583.gitbook.io/blog/specific-work/wisr-group/cache/index/tack-improving-wireless-transport-performance-by-taming-acknowledgements.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
