An Implementation of TCP-Illinois in ns-3congestion control algorithm called TCP Illinois and...

Post on 07-Jul-2020

11 views 0 download

Transcript of An Implementation of TCP-Illinois in ns-3congestion control algorithm called TCP Illinois and...

II. TOPOLOGY GENERATION

•Introduction

The TCP congestion control algorithm has beencontributing to the stability of the Internet.Given its crucial role, it is one of the popularresearch topics in networking, resulting innumerous TCP variants proposed over the years.Unfortunately, the current ns-3 standard releasesupports a very small subset of them. As part ofour ongoing effort to extend ns-3 TCPfunctionalities, we implement an additionalcongestion control algorithm called TCP Illinoisand validate the model by simulating theprotocol under multiple network scenarios andcomparing it with other TCP variants.

•TCP Illinois Algorithm

TCP Illinois proposed to achieve high throughputin high-speed networks is a hybrid congestioncontrol algorithm that uses both packet loss anddelay information as congestion signals. Thepacket loss information is used to decide onwhether to increase or decrease the congestionwindow, but the amount of change that is madeto the congestion window depends on the delaymeasurements. Illinois makes the choice of theinflation factor, α, and deflation factor, β, based

on the network’s congestion status. When thenetwork is far from congestion (i.e. when theaverage queueing delay is small), Illinois sets αlarge and β small. As the network approaches

congestion (i.e. when the average queueingdelay is large), the value of α is decreased whilethe value of β is increased. Thus, in Illinois, αand β are functions of the queueing delay as

calculated in Equation 1 and Equation 2,respectively. These values of α and β are then

used to update the congestion window duringthe congestion avoidance and fast recoveryphases similar to the standard AIMD (additiveincrease multiplicative decrease) algorithm asshown in Equation 3 and Equation 4.

𝛼 = 𝑓1(𝑑a) =𝛼max if 𝑑a ≤ 𝑑1

𝜅1

𝜅2+𝑑aotherwise (1)

𝛽 = 𝑓2(𝑑a) = ൞

𝛽min, if 𝑑a ≤ 𝑑2𝜅3 + 𝜅4𝑑a, if d2< 𝑑a < 𝑑3

𝛽max, otherwise

(2)

cwnd = cwnd + 𝛼cwnd (3)

cwnd = cwnd − (𝛽cwnd) (4)

I. Introduction

•Class Interaction

•Main Functions in TcpIllinois Class

CalculateAvgDelay()

Compute average queueing delay every RTT

CalculateMaxDelay()

Compute maximum (average) queuing delay every RTT

CalculateAlpha()

Calculate additive increase factor every RTT

CalculateBeta()

Calculate multiplicative decrease factor every RTT

PktsAcked()

Filter RTT measurements for baseRtt and maxRtt

IncreaseWindow()

Adjust cWnd following Illinois congestion avoidance algorithm

GetSsThresh()

Compute ssThresh after congestion event

III. IMPLEMENTATION V. SIMULATION RESULTS

An Implementation of TCP-Illinois in ns-3Keerthi Ganta*, Isha Khadka*, Md Moshfequr Rahman *, Truc Anh N. Nguyen* and James P.G. Sterbenz*†‡

*EECS and ITTC, The University of Kansas – http://www.ittc.ku.edu/resilinets

†SCC and InfoLab21, Lancaster University; ‡Department of Computing, The Hong Kong Polytechnic University

June 2016

IV. SIMULATION STUDY

•We measure the robustness of Illinois to random loss in comparisonwith the standard NewReno and HSTCP.

•Illinois performs better than both HSTCP and NewReno.

VI. CONCLUSION

VII. REFERENCES

•S. Liu, T. Basar, and R. Srikant. TCP-Illinois: A loss- and delay-basedcongestion control algorithm for high-speed networks. PerformanceEvaluation, 65:417-440, 2008.

•S. Floyd. HighSpeed TCP for Large Congestion Windows. RFC 3649(Experimental), Dec. 2003.

•The ns-3 Network Simulator. http://www.nsnam.org, Feb 2016.

•An Implementation of TCP-Illinois in ns-3 (tech report).https://wiki.ittc.ku.edu/resilinets/reports/Ganta-Khadka-Rahman-Nguyen-Sterbenz-2016.pdf

•In this poster, we present our implementation of TCP Illinois congestioncontrol algorithm in ns-3 as part of our effort to extend ns-3’sfunctionalities. We then show some results obtained from ourverification and validation of the model. Illinois, with its ability todynamically adapt its additive increase and multiplicative decreasefactors to the network condition, performs better than HSTCP and thestandard NewReno in the presence of random loss. However, Illinoisfails to achieve TCP-friendliness and intra-fairness in our simulationscenario. For future work, we plan to extend the study of Illinois in ahigher BDP network environments.•We use dumbbell topology to evaluate the performance of the algorithm.

•The Table shows the shared parameters among all the simulation experiments.

Simulation Parameters Values

Access link bandwidth 10 Mb/s

Bottleneck link bandwidth 6-10 Mb/s

Access link propagation delay 0.1 ms

B. link propagation delay 100 ms

Packet MTU size 1500 B

Error model Uniform error model

Application type Bulk send application

Simulation time 200 s-400 s

Queue size BDP

•We study the TCP-friendliness (left plot) and intra-fairness of Illinois(right plot).

cwnd = cwnd ( cwnd) −

TcpL4Protocol

TcpOption

TcpOptionRFC793 TcpNewReno

TcpCongestionOps

TcpOptionTS

TcpHeader TcpTxBufferTcpRxBuffer

TcpSocketFactoryImpl

TcpSocket TcpSocketFactory

TcpOptionWinScale

TcpHybla TcpWestwoodTcpHighSpeedTcpIllinois

TcpSocketBase

*

m_sockets

m_cWnd

m_alpha

m_beta

IncreaseWindow()

GetSsThresh()CalculateAlpha()CalculateBeta()

NewAck()DupAck()Retransmit()

m_retxThresh

m_inFastRec

m_limitedTx

m_source

m_sequenceNumber

m_protocol

Serialize()

Deserialize()

GetSerializedSize()

SetSndBufSize() = 0

SetSSThresh() = 0

SetInitialSSThresh() = 0

m_size

m_nextRxSeq

m_size

m_firstByteSeq

Add()

Available()

Add()

Available()

m_rWnd

m_state

m_nextTxSequence

ForwardUp()

SendPendingData()

SendEmptyPacket()

m_node

m_endPoints

m_sockets

Allocate()

SendPacket()

Receive()

m_currentBW

m_lastBW

m_minRtt

CountAck()

CalculateBW()

EstimateRtt()

m_cWndCnt

m_minRtt

m_rho

GetName()

GetTypeId()

RecalcParam()

m_ackCnt

GetName()GetSsThresh()TableLookupA()TableLookupB()

CreateOption()

Deserialize()

GetInstanceTypeID()

m_kind

m_size

m_content

GetKind()

SetTimestamp()

NowToTsValue()

m_echo

m_timestampm_scale

SetScale()

GetSerializedSize()

GetInstanceTypeId()

m_mss

Seriialize()

Deserialize()

SetMSS()

Fork()GetName()GetSsThresh()IncreaseWindow()

GetTypeID()

m_tcp

SetTcp()

DoDispose()

CreateSocket()