# Presentation: 501070

**TCP and WANs**
- Jason R. Lee
- 10.3.03

**C    O    M    P    U    T    A    T    I    O    N    A    L        R    E    S    E    A    R    C    H        D    I    V    I    S    I    O    N**

## Overview

**TCP 101**
**Experiments**
**Alternatives**
**Conclusion**

## TCP 101

**TCP (Transmission Control Protocol)**
**Greedy: ****try to obtain the best utilization**
**Fair****: Allow everyone to get their fair share of the network**
**Two important states: slow-start, congestion-control **
**Slow Start**
**For every good ACK (pkt that got through) add one more pkt to the congestion window**

## TCP 101

**Congestion Control**
**   ****if congestion: cwd = cwd x 0.5**
**   ****otherwise cwd = cwd + 1 (MTU)**
**TCP is AIMD**
**AI = 1**
**MD = 0.5**

## TCP 101

## TCP Problems

| Throughput | Window | Recovery |
| --- | --- | --- |
| 1 Mbps | 17 pkts | 1.7 s |
| 10 Mbps | 170 pkts | 17 s |
| 100 Mbps | 1700 pkts | 2 min 50 s |
| 1 Gbps | 17000 pkts |  28 min |
| 10 Gbps | 170000 pkts | 4 hrs 42 min |

- 1500 Byte MTU (pkt), 200 ms RTT

## Other TCP

**Virtual Jumbo Fames (large AI)**
**Grid DT**
**HSTCP (Floyd) (Table based)**
**Scalable TCP (Kelly) (cwnd *= 1.05)**

## IFQ Problem

**IFQ – Interface Queue**
**Default is 100 pkts!**
**Too small for WAN**

## IFQ, AIMD, HSTCP

## Experiments

**1 MSS/RTT response function is too slow**
**HSTCP is better for Gbps, RTT 100 msc**
**Questions:**
**Is it possible to do better?**
**Is it fair to other streams?**

## Setup over SURFnet Lambda

- Host B

- GigE

- Host A

- ONS1545
- Amsterdam

- ONS1545
- Chicago

- 6509

**Setup over SURFnet Lambda**

## HSTCP && AI  32  MSS (1Gbps)

## HSTCP && AI 256 MSS (1Gbps)

## HSTCP && AI 32 MSS(622Mbps)

## HSTCP && AI 256MSS(622mbps)

## Big Burst

## Scalable TCP

## Scalable

| Throughput | Window | TCP | Scalable |
| --- | --- | --- | --- |
| 10 Mbps | 170 pkts | 17 s | 2.7 sec |
| 100 Mbps |  1700 pkts | 2 m 40 s | 2.7 sec |
| 1 Gbps | 17000 pkts |  28 mins | 2.7 sec |
| 10 Gbps | 170000 pkts | 4 hrs 42 m | 2.7 sec |

## LBL -> ORNL

- TCP,  HSTCP, Scalable

- Done by Tom Dunigan

## LBNL –> ORNL

- by Tom Dunigan ORNL

## Faster

- 10 Gigabits

## TCP Single Stream 5.22 Gbps, 32 MByte Socket

**Itanium**
**UvA**

**Itanium**
**CERN**

**RTT **
**17 msec**

## UDPish

**U****DP ****D****ata ****T****ransfer ****UDT**** **
**part of SABUL and Dataspace **
**S****tream ****C****ontrol ****T****ransmission ****P****rotocol (****SCTP)**
**In linux now!!**
**D****atagram ****C****ongestion ****C****ontrol ****P****rotocol (****DCCP****)**
**P****erformance ****T****ransparency ****P****rotocol (****PTP****)**

## UDT

- Using UDP Datagrams and TCP for retransmission
- Memory to Memory, also support transfer of files(not tested)
- http://sourceforge.net/projects/dataspace/
- Authors claim both intra-protocol fairness (it uses AIMD-like congestion control mechanism), as well as inter-protocol fairness
**FC = Bandwidth * ( RTT  +  0.01 ) / MTU**

## UDT Multi-stream

## References

**RFC 793**
**RFC 1122**
**RFC 2001**
_**[http://www-lce.eng.cam.ac.uk/~ctk21/scalable/](http://www-lce.eng.cam.ac.uk/~ctk21/scalable/)**_
**http://www.ietf.org/internet-drafts/draft-ietf-tsvwg-highspeed-01.txt**