ns-2 tcp-linux david wei and pei cao. outline motivation motivation code structure of ns-2 tcp-linux...
Post on 18-Dec-2015
219 Views
Preview:
TRANSCRIPT
NS-2 TCP-NS-2 TCP-LinuxLinux
David Wei and David Wei and Pei CaoPei Cao
OutlineOutline
MotivationMotivation Code structure of NS-2 TCP-Linux Code structure of NS-2 TCP-Linux
agentagent Design of Design of Scoreboard1Scoreboard1, a new , a new
module for SACK processingmodule for SACK processing Validation ResultsValidation Results
Why one more TCP agent in Why one more TCP agent in NS-2?NS-2?
TCP Implementations in TCP Implementations in NS-2NS-2
Low simulation accuracyLow simulation accuracy Low simulation performanceLow simulation performance
up to 20 hours to run a simulation of up to 20 hours to run a simulation of 200-second traffic on gigabit links200-second traffic on gigabit links
Poor extensibilityPoor extensibility Much fewer number of congestion Much fewer number of congestion
control algorithms than Linux 2.6control algorithms than Linux 2.6
TCP Implementations in TCP Implementations in Linux 2.6Linux 2.6
Standard interface for congestion control Standard interface for congestion control algorithms: algorithms: void start(struct tcp_sock *tp):void start(struct tcp_sock *tp): init the algorithm init the algorithm u32 ssthresh(struct tcp_sock *tp):u32 ssthresh(struct tcp_sock *tp): called after packet called after packet
lossloss u32 min_cwnd(struct tcp_sock *tp):u32 min_cwnd(struct tcp_sock *tp): called after loss called after loss void cong_avoid(struct tcp_sock *tp, u32 ack, u32 rtt, void cong_avoid(struct tcp_sock *tp, u32 ack, u32 rtt,
u32 in_flight, int good):u32 in_flight, int good): called after ack received called after ack received void rtt_sample(struct tcp_sock *tp, u32 rtt):void rtt_sample(struct tcp_sock *tp, u32 rtt): called called
after rtt calculationafter rtt calculation set_state(…)set_state(…), , cwnd_event(…)cwnd_event(…), , undo_cwnd(…)undo_cwnd(…), ,
get_info(…)get_info(…) Better SACK processing than NS-2 Better SACK processing than NS-2
implementationimplementation
Narrow the gap between Narrow the gap between NS-2 and Linux 2.6 NS-2 and Linux 2.6 NS-2 NS-2
TCP-LinuxTCP-LinuxDesign goals of Design goals of NS-2 TCP-LinuxNS-2 TCP-Linux:: Accuracy: Accuracy:
Use congestion control algorithm code Use congestion control algorithm code **as-is*as-is* from Linux 2.6 source trees from Linux 2.6 source trees
Improve SACK processingImprove SACK processing Extensibility: Extensibility:
Import the concept of interfaces for loss Import the concept of interfaces for loss detection algorithms detection algorithms
Speed: Speed: Improve event queue schedulerImprove event queue scheduler
Code structureCode structure
An example of congestion An example of congestion control algorithm in control algorithm in NS-2 NS-2
TCP-LinuxTCP-Linux
Status of Status of NS-2 TCP-LinuxNS-2 TCP-Linux
Imported all 9 congestion control algorithms Imported all 9 congestion control algorithms from Linux 2.6.16-3from Linux 2.6.16-3 Reno (FACK), Vegas, HS-TCP, Scalable-TCP, BIC, Reno (FACK), Vegas, HS-TCP, Scalable-TCP, BIC,
Cubic, Westwood, H-TCP, HyblaCubic, Westwood, H-TCP, Hybla Imported 3 experimental congestion control Imported 3 experimental congestion control
algorithms in testing for future Linux versionsalgorithms in testing for future Linux versions Veno, TCP-LP, TCP Compound (MS Windows Vista)Veno, TCP-LP, TCP Compound (MS Windows Vista)
3 bugs were found with Linux 2.6 HighSpeed 3 bugs were found with Linux 2.6 HighSpeed TCP, 1 performance problem is found with TCP, 1 performance problem is found with Linux 2.6 VegasLinux 2.6 Vegas
Using Using LinuxTCPAgentLinuxTCPAgent in in NS-2 SimulationsNS-2 Simulations
Easy usage for all users to migrate TCL Easy usage for all users to migrate TCL scripts:scripts:
……#set tcp [new Agent/TCP/Sack1]#set tcp [new Agent/TCP/Sack1]set tcp [new Agent/TCP/Linux]set tcp [new Agent/TCP/Linux]……#everything else is the same#everything else is the same……ns at 0 “tcp select_ca reno”ns at 0 “tcp select_ca reno”……#everything else is the same#everything else is the same……
Better SACK ProcessingBetter SACK Processing
Scoreboard1: Scoreboard1: Combines Combines NS-2 Sack1 NS-2 Sack1 design and design and
Linux Linux scoreboardscoreboard design design Enable correct implementation of Enable correct implementation of
FACKFACK Simulation speed similar to Simulation speed similar to NS-2 NS-2
Sack1Sack1
SACK Processing in NS-2 SACK Processing in NS-2 Sack1Sack1
Reassembly queueReassembly queue Pro: scans the SACK list very fastPro: scans the SACK list very fast Con: difficult to implement FACK correct, Con: difficult to implement FACK correct,
can’t identify retransmitted packets, etc.can’t identify retransmitted packets, etc.
SACK processing in SACK processing in Linux 2.6Linux 2.6
Per-packet state machinePer-packet state machine Con: slower processing of SACK listsCon: slower processing of SACK lists
ScoreBoard1ScoreBoard1 Combine the Linux design (state Combine the Linux design (state
diagram for each packet) and Sack1 diagram for each packet) and Sack1 design (Reassembly Queue)design (Reassembly Queue)
Validation ResultsValidation Results
Accuracy: Comparable to Linux Accuracy: Comparable to Linux results in the level of congestion results in the level of congestion window trajectorieswindow trajectories
Simulation speed:Simulation speed: Best case: 50 times faster than NS-2 Best case: 50 times faster than NS-2
SACK1 SACK1 Worst case: as fast as NS-2 SACK1 Worst case: as fast as NS-2 SACK1
Memory consumption: very similar Memory consumption: very similar memory usage as NS-2 SACK1memory usage as NS-2 SACK1
Evaluation SetupEvaluation Setup Comparing NS-2 TCP-Linux Results with Comparing NS-2 TCP-Linux Results with
Dummynet Results.Dummynet Results.
Accuracy: Accuracy: window window
trajectorytrajectory
ExtensibilityExtensibility
Accuracy: throughput in Accuracy: throughput in lossy linklossy link
Why use Why use NS-2 TCP-LinuxNS-2 TCP-Linux
NS-2 Analysis community: NS-2 Analysis community: Able to analyze new algorithms without Able to analyze new algorithms without
waiting for the availability of the NS-2 waiting for the availability of the NS-2 versionsversions
Higher accuracy and faster simulationHigher accuracy and faster simulation
Linux Implementation community:Linux Implementation community: Able to run repeatable simulation to test Able to run repeatable simulation to test
new algorithmsnew algorithms A larger user pool to find bugsA larger user pool to find bugs
TCP-LinuxTCP-Linux: a better TCP for : a better TCP for NS-2NS-2
Future works:Future works: D-SACK processing and window D-SACK processing and window
reduction undoreduction undo Support for non-SACK receiversSupport for non-SACK receivers A tutorial for the public: “Tuning A tutorial for the public: “Tuning
TCP in NS-2”TCP in NS-2” A TCP benchmark suite in NS-2A TCP benchmark suite in NS-2
Thank youThank you
Questions ?Questions ?
Example 1: variable overflowExample 1: variable overflowin Linux HS-TCPin Linux HS-TCP
cwnd
rate
Example 2: AI bugs in Linux Example 2: AI bugs in Linux HS-TCPHS-TCP
RTT: 64ms
Flow #: 32
(4 flows are presented)
Capacity: 100Mbps
Buffer size: 220pkt
Acker: Sack1/DelAck
Performance: SpeedPerformance: Speed
Performance: MemoryPerformance: Memory
top related