NS2 TCPLinux David Wei and Pei Cao Outline

  • Slides: 26
Download presentation
NS-2 TCP-Linux David Wei and Pei Cao

NS-2 TCP-Linux David Wei and Pei Cao

Outline Motivation n Code structure of NS-2 TCP-Linux agent n Design of Scoreboard 1,

Outline Motivation n Code structure of NS-2 TCP-Linux agent n Design of Scoreboard 1, a new module for SACK processing n Validation Results n

Why one more TCP agent in NS-2?

Why one more TCP agent in NS-2?

TCP Implementations in NS-2 Low simulation accuracy n Low simulation performance n n n

TCP Implementations in NS-2 Low simulation accuracy n Low simulation performance n n n up to 20 hours to run a simulation of 200 -second traffic on gigabit links Poor extensibility n Much fewer number of congestion control algorithms than Linux 2. 6

TCP Implementations in Linux 2. 6 n Standard interface for congestion control algorithms: void

TCP Implementations in Linux 2. 6 n Standard interface for congestion control algorithms: void start(struct tcp_sock *tp): init the algorithm n u 32 ssthresh(struct tcp_sock *tp): called after packet loss n u 32 min_cwnd(struct tcp_sock *tp): called after loss n void cong_avoid(struct tcp_sock *tp, u 32 ack, u 32 rtt, u 32 in_flight, int good): called after ack received n void rtt_sample(struct tcp_sock *tp, u 32 rtt): called after rtt calculation n set_state(…), cwnd_event(…), undo_cwnd(…), get_info(…) n n Better SACK processing than NS-2 implementation

Narrow the gap between NS-2 and Linux 2. 6 NS-2 TCP-Linux Design goals of

Narrow the gap between NS-2 and Linux 2. 6 NS-2 TCP-Linux Design goals of NS-2 TCP-Linux: n Accuracy: Use congestion control algorithm code *as-is* from Linux 2. 6 source trees n Improve SACK processing n n Extensibility: n n Import the concept of interfaces for loss detection algorithms Speed: n Improve event queue scheduler

Code structure

Code structure

An example of congestion control algorithm in NS-2 TCP-Linux

An example of congestion control algorithm in NS-2 TCP-Linux

Status of NS-2 TCP-Linux n Imported all 9 congestion control algorithms from Linux 2.

Status of NS-2 TCP-Linux n Imported all 9 congestion control algorithms from Linux 2. 6. 16 -3 n n Imported 3 experimental congestion control algorithms in testing for future Linux versions n n Reno (FACK), Vegas, HS-TCP, Scalable-TCP, BIC, Cubic, Westwood, H-TCP, Hybla Veno, TCP-LP, TCP Compound (MS Windows Vista) 3 bugs were found with Linux 2. 6 High. Speed TCP, 1 performance problem is found with Linux 2. 6 Vegas

Using Linux. TCPAgent in NS-2 Simulations n Easy usage for all users to migrate

Using Linux. TCPAgent in NS-2 Simulations n Easy usage for all users to migrate TCL scripts: … #set tcp [new Agent/TCP/Sack 1] set tcp [new Agent/TCP/Linux] … #everything else is the same … ns at 0 “tcp select_ca reno” … #everything else is the same …

Better SACK Processing n Scoreboard 1: n Combines NS-2 Sack 1 design and Linux

Better SACK Processing n Scoreboard 1: n Combines NS-2 Sack 1 design and Linux scoreboard design n Enable correct implementation of FACK n Simulation speed similar to NS-2 Sack 1

SACK Processing in NS-2 Sack 1 n Reassembly queue Pro: scans the SACK list

SACK Processing in NS-2 Sack 1 n Reassembly queue Pro: scans the SACK list very fast n Con: difficult to implement FACK correct, can’t identify retransmitted packets, etc. n

SACK processing in Linux 2. 6 n Per-packet state machine n Con: slower processing

SACK processing in Linux 2. 6 n Per-packet state machine n Con: slower processing of SACK lists

Score. Board 1 n Combine the Linux design (state diagram for each packet) and

Score. Board 1 n Combine the Linux design (state diagram for each packet) and Sack 1 design (Reassembly Queue)

Validation Results Accuracy: Comparable to Linux results in the level of congestion window trajectories

Validation Results Accuracy: Comparable to Linux results in the level of congestion window trajectories n Simulation speed: n Best case: 50 times faster than NS-2 SACK 1 n Worst case: as fast as NS-2 SACK 1 n n Memory consumption: very similar memory usage as NS-2 SACK 1

Evaluation Setup n Comparing NS-2 TCP-Linux Results with Dummynet Results.

Evaluation Setup n Comparing NS-2 TCP-Linux Results with Dummynet Results.

Accuracy: window trajectory

Accuracy: window trajectory

Extensibility

Extensibility

Accuracy: throughput in lossy link

Accuracy: throughput in lossy link

Why use NS-2 TCP-Linux NS-2 Analysis community: n Able to analyze new algorithms without

Why use NS-2 TCP-Linux NS-2 Analysis community: n Able to analyze new algorithms without waiting for the availability of the NS-2 versions n Higher accuracy and faster simulation Linux Implementation community: n Able to run repeatable simulation to test new algorithms n A larger user pool to find bugs

TCP-Linux: a better TCP for NS-2 Future works: n D-SACK processing and window reduction

TCP-Linux: a better TCP for NS-2 Future works: n D-SACK processing and window reduction undo n Support for non-SACK receivers n A tutorial for the public: “Tuning TCP in NS-2” n A TCP benchmark suite in NS-2

Thank you Questions ?

Thank you Questions ?

Example 1: variable overflow in Linux HS-TCP

Example 1: variable overflow in Linux HS-TCP

Example 2: AI bugs in Linux HS-TCP RTT: 64 ms cwnd Flow #: 32

Example 2: AI bugs in Linux HS-TCP RTT: 64 ms cwnd Flow #: 32 (4 flows are presented) Capacity: 100 Mbps Buffer size: 220 pkt Acker: Sack 1/Del. Ack rate

Performance: Speed

Performance: Speed

Performance: Memory

Performance: Memory