Changes between Version 7 and Version 8 of GENIEducation/SampleAssignments/TcpAssignment/ExerciseLayout/Execute


Ignore:
Timestamp:
05/10/13 13:32:45 (11 years ago)
Author:
shuang@bbn.com
Comment:

--

Legend:

Unmodified
Added
Removed
Modified
  • GENIEducation/SampleAssignments/TcpAssignment/ExerciseLayout/Execute

    v7 v8  
    2222Recall that the nodes reserved are pc73, pc81, pc55, pc47, pc84.[[BR]]
    2323pc47 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]]
    24 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]]
    25 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]]
    26 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]]
    27 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 :-))
     24As mentioned earlier, we can use "readyToLogin.py" to show the topology as well as the log in commands. [[BR]]
     25Or, if you are a GENI Portal user, use the "details" button to check details of your slice.
    2826
    2927 '''Useful commands:''' [[BR]]
     
    6866
    6967'''1. compare cubic and reno under no loss/delay introduced:[[BR]]'''
    70  use default TCP congestion control (cubic) on left and right, run iperf between them: [[BR]]
     68 use default TCP congestion control (cubic) on left and right, run iperf between them (TCP flow comes from right to left): [[BR]]
    7169 On left, run:
    7270{{{
     
    104102
    105103'''2. add 300ms delay and see how it goes: [[BR]]'''
     104We can introduce the delay by configuring the interface on center that is connected with left, using sudo /sbin/tc qdisc [[BR]]
    106105 With Cubic, here is the result:
    107106{{{
     
    371370  a slow start exponential factor of 3 instead of 2 in Reno; [[BR]]
    372371  ssthresh x 3 / 4 when entering loss recovery instead of ssthresh/2 as in Reno [[BR]]
     372
     373 The source code for the congestion control is in the tar ball we previously downloaded. [[BR]]
     374 Note: You Do need to change the source code in order to make it happen. [[BR]]
     375 You can check out [http://www.cs.fsu.edu/~baker/devices/lxr/http/source/linux/net/ipv4/tcp_cong.c Reno Source Code] for reference [[BR]]
     376 Steps to compile the kernel code: [[BR]]
     377 1. Comment out the line: [[BR]]
     378   ''exclude=mkinitrd* kernel*''[[BR]]
     379   in the file ''/etc/yum.conf'', to allow yum to install kernel headers. [[BR]]
     380 2. Install the required packages with this command: [[BR]]
     381   ''sudo yum install kernel-devel kernel-headers'' [[BR]]
     382 3. Fix up the kernel version in the installed headers to match the running kernel; this can be tricky, but these steps should handle it:[[BR]]
     383   * a). Find your kernel sources. They are in ''/usr/src/kernel'', in a directory that depends on the installed version. As of the time this page was created, [[BR]]
     384   the directory is ''2.6.27.41-170.2.117.fc10.i686''. We call this directory ''$KERNELSRC''.[[BR]]
     385   * b). identify your running kernel version by running ''uname -r''. It will be something like ''2.6.27.5-117.emulab1.fc10.i686''. The first three dotted components [[BR]]
     386   (''2.6.27'', in this case) are the major, minor, and micro versions, respectively, and the remainder of the version string (''.5-117.emulab.fc10.i686'') is the extraversion. [[BR]]
     387   Note the extraversion of your kernel.[[BR]]
     388   * c). In''$KERNELSRC/Makefile'',find the line beginning with ''EXTRAVERSION''. Replace its value with the extraversion of your kernel.[[BR]]
     389   * d). Update the kernel header tree to this new version by running the command:
     390   {{{
     391   sudo make include/linux/utsrelease.h
     392   }}}
     393 After you compile the source code, you will find a kernel model named ''''tcp_exp.ko'''' being created. [[BR}}
     394 Use "''sudo insmod tcp_exp.ko''" to insert the module into the kernel. [[BR]]
     395 You can use "''sudo rmmod tcp_exp''" to remove the module later on [[BR]]
     396 Once the module is complete and loaded into the kernel, the algorithm implemented by the module can be selected in the same manner that reno and cubic were [[BR]]
     397 selected in previous sections, by placing the keyword ''exp'' in ''/proc/sys/net/ipv4/tcp_congestion_control.''
    373398
    374399 '''Comparison: '''Apparently this will increase the sending rate of TCP during slow start time compared with Reno; [[BR]]