Presentation by Joe SzymanskiFor Upper Layer Protocols
April 18, 2023
7654321
What is a big fat pipe?High bandwidth-delay product
What is the unit of measure? Bits per seconds times seconds results in bits?
Bandwidth-delay product is max bits “in flight”
Data1 bps
Delay = 6 seconds
Why are big fat pipes special?Two parts to bandwidth-delay
Bandwidth high speedDelay
Each requires special considerations with regards to congestion control
The effects of high speedDuring steady data transfer:
What error rate is needed to reach a given throughput?
For packet size = 1500 bytes and RTT = 100 ms:
To reach a throughput of 10 Gbps:
pprrateerrorpacket
ThroughputMax__
5.1_
bpss
byteperbitsbytesppr 5102.1
1.0
__815001
10
510
102
102.15.1
10
p
p
Other difficulties for high speedPacket loss rate creates a limit to max window
sizeHow long to reach max throughput in slow
start?For a 10Gbps link, it takes a windows size of
83,333 packets and 17 RTTsRecovery from consecutive timeouts
Two consecutive timeouts ? First timeout Second timeout
To reach 10Gbps again, it takes 83,332 RTTs
ssthresh = cwnd/2, cwnd = 1 MSS
ssthresh = 2 MSS, cwnd = 1 MSS
What about high delay?High delay means lots of bits are in flight at
onceA single loss takes just over 1 RTT to be
detected2 × bandwidth-delay product bits are sent
between loss and detection of lossAll of these bits potentially need to be
retransmittedWhat can fix this?
SACK with selective repeat
Proposed SolutionsHigh Speed TCP
Proposed by Sally Floyd The ICSI Center for Internet Research
Once the congestion window reaches a threshold, a new function is used for window increases and decreases
H-TCPProposed by D. Leith and R. Shorten
Hamilton Institute, NUI MaynoothChanges the values for additive increase and
multiplicative decrease based on congestion
High Speed TCP (Floyd)While packet drop rate p < 0.0015 (or while
congestion window < 31), use standard TCP rules
Otherwise, increase/decrease the congestion window by a function of the current congestion windowIf Wi is the current congestion window, let Wi+1
f(Wi)Different functions are used for increase and
decrease of the congestion window
High Speed TCP (Floyd) (cont’d)
Through a lot of math based on the chosen packet drop rate and the required throughput, the following are given for a (the function for increasing the cwnd) and b (the function for decreasing the cwnd) w is the current congestion window (in packets)W is the threshold to use the new equationsW1 is the required final throughput
B = b(W1)
)(0.2
)()(0.2)(
2
wb
wpwbwwa
5.0)log()log(
)log()log()5.0()(
1
WW
WwBwb
HTCP (Leith, Shorten)Using an analysis of drop-tail networks, it is
shown that a TCP friendly congestion control scheme must have the following:Let α be the additive increase factorLet β be the multiplicative decrease factorα = 2(1 - β)
Highest throughput can be achieved by settingα must be calculated
as in the above equationmax
min
RTT
RTT
HTCP (Leith, Shorten) (cont’d)
For each ACK, set α as a factor of the time since the last congestion eventIf the last event was recently, set δ = 1
This corresponds to standard TCP congestion controlOtherwise, set δ = f(t), where f is a function of t,
the time since the last congestion eventSet α = 2(1 – β)δ to maintain TCP friendliness
For each congestion event, set β = RTTmin / RTTmax
There are functions that can be used that avoid direct calculations on RTTmin and RTTmax
ImplementationChange SCTP stack to allow for congestion
control modulesImplement and test an HTCP moduleStandard test cases:
Loss rates of 0%, 5%, and 10%For more details, contact me later
Results, 0% loss
Standard
HTCP
Results, 5% loss
Standard
HTCP
Results, 10% loss
Standard
HTCP
What happened?HTCP performed worse than standard
congestion control in high loss casesWhy?
HTCP only performed slightly better than standard congestion control otherwise
What changes can be made to increase performance?Remove some of the multiplicative decrease
Results, 0% loss
Standard
HTCP
HTCP (Modified)
Results, 5% loss
Standard
HTCP
HTCP (Modified)
Results, all cases
Don’t panic!I’ll show you what each line means.
What’s wrong with the modification?Is the modified HTCP algorithm TCP friendly?Will the modified HTCP algorithm work well
on a link that is used by multiple TCP streams?