= [wiki:GENIEducation/SampleAssignments/TcpAssignment/ExerciseLayout ] = {{{ #!html
Hello GENI index Hello GENI index Hello GENI index
}}} = STEPS FOR EXECUTING EXERCISE = Now that we have reserved the nodes. Let's log on to each nodes and do experiment. [[BR]] Recall that the nodes reserved are pc73, pc81, pc55, pc47, pc84.[[BR]] pc47 is top; pc84 is bottom; pc81 is left; pc55 is right; pc73 is center. We can figure this out from the output of "createsliver" step. [[BR]] I typically draw a topology, naming the nodes correctly for quick reference; but again we can use the GENI Portal to see a graphical representation of the topology, with named nodes. [[BR]] However, the flack interface (we can launch it via GENI Portal) still does not show the interface numbers of each nodes (we might need those interface numbers when we debug our experiment). [[BR]] For example, we might want to see the traffic sent from center to top, then we need to do "tcpdump" on the interface that center uses to connect to top. [[BR]] Right now we can not do this via the flack interface. But we can see it from the output of "createsliver" step (another reason I prefer to use command line omni :-)) '''Useful commands:''' [[BR]] Change the use of congestion control algorithm: {{{ echo reno | sudo tee /proc/sys/net/ipv4/tcp_congestion_control echo cubic | sudo tee /proc/sys/net/ipv4/tcp_congestion_control }}} Change the delay/loss of a particular interface: {{{ sudo /sbin/tc qdisc add dev eth1 root handle 1:0 netem delay 200ms loss 5% }}} Restore network delay/loss on nic card: {{{ sudo /sbin/tc qdisc del dev eth1 root }}} '''1. compare cubic and reno under no loss/delay introduced:[[BR]]''' use default TCP congestion control (cubic) on left and right, run iperf between them: [[BR]] On left, run: {{{ /usr/local/etc/emulab/emulab-iperf -s }}} On right, run (10.10.1.1 is the ip address for left): {{{ /usr/local/etc/emulab/emulab-iperf -c 10.10.1.1 -t 60 }}} Results: 94.2 Mbps for Cubic when there is no delay introduced {{{ ------------------------------------------------------------ Client connecting to 10.10.1.1, TCP port 5001 TCP window size: 16.0 KByte (default) ------------------------------------------------------------ [ 3] local 10.10.2.1 port 53755 connected with 10.10.1.1 port 5001 [ 3] 0.0-60.0 sec 674 MBytes 94.2 Mbits/sec }}} Let both left and right use reno as the TCP congestion control mechanism, repeat the experiments: {{{ echo reno | sudo tee /proc/sys/net/ipv4/tcp_congestion_control }}} Results: 94.2 Mbps for reno when there is no delay introduced {{{ ------------------------------------------------------------ Client connecting to 10.10.1.1, TCP port 5001 TCP window size: 16.0 KByte (default) ------------------------------------------------------------ [ 3] local 10.10.2.1 port 53073 connected with 10.10.1.1 port 5001 [ 3] 0.0-60.0 sec 674 MBytes 94.2 Mbits/sec }}} '''Answer:''' they are the same under no loss/delay '''2. add 300ms delay and see how it goes: [[BR]]''' With Cubic, here is the result: {{{ [ 3] 0.0-1800.2 sec 6.57 GBytes 31.3 Mbits/sec [ 3] 0.0-60.2 sec 213 MBytes 29.7 Mbits/sec }}} With Reno, here is the result: {{{ [ 3] 0.0-1800.1 sec 6.57 GBytes 31.3 Mbits/sec [ 3] 0.0-60.2 sec 214 MBytes 29.8 Mbits/sec }}} '''Answer:''' I was hoping to see Cubic out-performs Reno but it seems that they are the same in this case. '''3. repeat the experiments with 30 parallel connections (-P 30 option in iperf) and see how it goes: [[BR]]''' With Cubic, here is the result: {{{ [ 12] 0.0-57.0 sec 13.1 MBytes 1.93 Mbits/sec [ 16] 0.0-57.0 sec 13.8 MBytes 2.03 Mbits/sec [ 14] 0.0-57.3 sec 20.2 MBytes 2.96 Mbits/sec [ 18] 0.0-57.4 sec 18.4 MBytes 2.69 Mbits/sec [ 8] 0.0-57.4 sec 20.3 MBytes 2.97 Mbits/sec [ 7] 0.0-57.3 sec 23.7 MBytes 3.48 Mbits/sec [ 6] 0.0-57.3 sec 23.3 MBytes 3.41 Mbits/sec [ 5] 0.0-57.3 sec 29.4 MBytes 4.30 Mbits/sec [ 4] 0.0-57.3 sec 21.0 MBytes 3.07 Mbits/sec [ 3] 0.0-57.5 sec 23.3 MBytes 3.41 Mbits/sec [ 11] 0.0-57.5 sec 18.5 MBytes 2.70 Mbits/sec [ 15] 0.0-57.5 sec 23.7 MBytes 3.46 Mbits/sec [ 13] 0.0-57.6 sec 26.4 MBytes 3.85 Mbits/sec [ 17] 0.0-57.6 sec 19.3 MBytes 2.81 Mbits/sec [ 9] 0.0-57.8 sec 15.3 MBytes 2.22 Mbits/sec [ 10] 0.0-57.9 sec 20.5 MBytes 2.97 Mbits/sec [ 28] 0.0-60.0 sec 23.8 MBytes 3.32 Mbits/sec [ 30] 0.0-60.0 sec 15.9 MBytes 2.22 Mbits/sec [ 29] 0.0-60.1 sec 14.7 MBytes 2.05 Mbits/sec [ 32] 0.0-60.1 sec 27.3 MBytes 3.81 Mbits/sec [ 19] 0.0-60.1 sec 20.5 MBytes 2.86 Mbits/sec [ 23] 0.0-60.1 sec 16.2 MBytes 2.25 Mbits/sec [ 20] 0.0-60.1 sec 30.0 MBytes 4.19 Mbits/sec [ 26] 0.0-60.1 sec 14.6 MBytes 2.04 Mbits/sec [ 21] 0.0-60.2 sec 22.1 MBytes 3.07 Mbits/sec [ 27] 0.0-60.3 sec 19.9 MBytes 2.77 Mbits/sec [ 22] 0.0-60.4 sec 24.7 MBytes 3.44 Mbits/sec [ 24] 0.0-60.4 sec 26.1 MBytes 3.62 Mbits/sec [ 25] 0.0-60.5 sec 28.0 MBytes 3.88 Mbits/sec [ 31] 0.0-60.5 sec 34.2 MBytes 4.74 Mbits/sec [SUM] 0.0-60.5 sec 648 MBytes 89.8 Mbits/sec }}} With Reno, here is the result: {{{ [ 17] 0.0-57.1 sec 7.38 MBytes 1.08 Mbits/sec [ 15] 0.0-57.0 sec 7.33 MBytes 1.08 Mbits/sec [ 14] 0.0-57.0 sec 7.35 MBytes 1.08 Mbits/sec [ 18] 0.0-57.0 sec 7.16 MBytes 1.05 Mbits/sec [ 13] 0.0-57.1 sec 7.31 MBytes 1.08 Mbits/sec [ 3] 0.0-57.2 sec 25.7 MBytes 3.77 Mbits/sec [ 12] 0.0-57.2 sec 7.33 MBytes 1.08 Mbits/sec [ 5] 0.0-57.2 sec 87.5 MBytes 12.8 Mbits/sec [ 4] 0.0-57.2 sec 26.5 MBytes 3.88 Mbits/sec [ 11] 0.0-57.2 sec 7.32 MBytes 1.07 Mbits/sec [ 10] 0.0-57.3 sec 7.38 MBytes 1.08 Mbits/sec [ 16] 0.0-57.3 sec 7.41 MBytes 1.09 Mbits/sec [ 8] 0.0-57.4 sec 29.6 MBytes 4.33 Mbits/sec [ 7] 0.0-57.7 sec 23.7 MBytes 3.45 Mbits/sec [ 9] 0.0-57.7 sec 23.3 MBytes 3.38 Mbits/sec [ 6] 0.0-58.1 sec 64.6 MBytes 9.33 Mbits/sec [ 25] 0.0-60.0 sec 43.4 MBytes 6.06 Mbits/sec [ 21] 0.0-60.0 sec 36.2 MBytes 5.05 Mbits/sec [ 20] 0.0-60.2 sec 27.3 MBytes 3.81 Mbits/sec [ 24] 0.0-60.1 sec 28.2 MBytes 3.94 Mbits/sec [ 23] 0.0-60.1 sec 30.3 MBytes 4.23 Mbits/sec [ 27] 0.0-60.0 sec 7.80 MBytes 1.09 Mbits/sec [ 26] 0.0-60.1 sec 7.84 MBytes 1.09 Mbits/sec [ 30] 0.0-60.1 sec 7.84 MBytes 1.09 Mbits/sec [ 29] 0.0-60.1 sec 7.74 MBytes 1.08 Mbits/sec [ 31] 0.0-60.1 sec 7.82 MBytes 1.09 Mbits/sec [ 19] 0.0-60.3 sec 29.1 MBytes 4.04 Mbits/sec [ 22] 0.0-60.2 sec 30.9 MBytes 4.31 Mbits/sec [ 32] 0.0-60.1 sec 32.8 MBytes 4.58 Mbits/sec [ 28] 0.0-60.1 sec 7.82 MBytes 1.09 Mbits/sec [SUM] 0.0-60.3 sec 652 MBytes 90.7 Mbits/sec }}} The above results show that the total performance is about the same for Cubic and Reno. [[BR]] Apparently when u use multiple TCP connections the bandwidth utilization will be higher. [[BR]] But the single throughput for each TCP connection varies. [[BR]] = [wiki:GENIEducation/SampleAssignments/TcpAssignment/ExerciseLayout/Finish Next: Teardown Experiment] =