an implementation of tcp-illinois in ns-3congestion control algorithm called tcp illinois and...

1
Introduction The TCP congestion control algorithm has been contributing to the stability of the Internet. Given its crucial role, it is one of the popular research topics in networking, resulting in numerous TCP variants proposed over the years. Unfortunately, the current ns-3 standard release supports a very small subset of them. As part of our ongoing effort to extend ns-3 TCP functionalities, we implement an additional congestion control algorithm called TCP Illinois and validate the model by simulating the protocol under multiple network scenarios and comparing it with other TCP variants. TCP Illinois Algorithm TCP Illinois proposed to achieve high throughput in high-speed networks is a hybrid congestion control algorithm that uses both packet loss and delay information as congestion signals. The packet loss information is used to decide on whether to increase or decrease the congestion window, but the amount of change that is made to the congestion window depends on the delay measurements. Illinois makes the choice of the inflation factor, α, and deflation factor, β, based on the network’s congestion status. When the network is far from congestion (i.e. when the average queueing delay is small), Illinois sets α large and β small. As the network approaches congestion (i.e. when the average queueing delay is large), the value of α is decreased while the 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 during the congestion avoidance and fast recovery phases similar to the standard AIMD (additive increase multiplicative decrease) algorithm as shown in Equation 3 and Equation 4. = 1 ( a )= max if a 1 1 2 + a otherwise (1) = 2 ( a )=൞ min , if a 2 3 + 4 a , if d 2 < 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-3 Keerthi 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 comparison with 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-based congestion control algorithm for high-speed networks. Performance Evaluation, 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 congestion control algorithm in ns-3 as part of our effort to extend ns-3’s functionalities. We then show some results obtained from our verification and validation of the model. Illinois, with its ability to dynamically adapt its additive increase and multiplicative decrease factors to the network condition, performs better than HSTCP and the standard NewReno in the presence of random loss. However, Illinois fails to achieve TCP-friendliness and intra-fairness in our simulation scenario. For future work, we plan to extend the study of Illinois in a higher 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 TcpTxBuffer TcpRxBuffer TcpSocketFactoryImpl TcpSocket TcpSocketFactory TcpOptionWinScale TcpHybla TcpWestwood TcpHighSpeed TcpIllinois 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_timestamp m_scale SetScale() GetSerializedSize() GetInstanceTypeId() m_mss Seriialize() Deserialize() SetMSS() Fork() GetName() GetSsThresh() IncreaseWindow() GetTypeID() m_tcp SetTcp() DoDispose() CreateSocket()

Upload: others

Post on 07-Jul-2020

11 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: An Implementation of TCP-Illinois in ns-3congestion control algorithm called TCP Illinois and validate the model by simulating the protocol under multiple network scenarios and comparing

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()