Advanced Networking Course, Fall 2004. (AKA ``Qos in the Internet''). CIS 786-103. Dr Ott Wed 6:00 - 9:05. First class session: Sept 01, 2004. It is recommended you review Forouzan Ch 1 - 13 and Keshav Ch 1 - 8 as early as possible. You ``should'' know most of that material already. If possible, read Forouzan Ch 20 (FTP) and pages 1 - 24 (sections 1 - 3) of IETF RFC 959 (FTP) before Sept 01. I try to assign homework at least a week in advance. Assignments can change up to about 5 days before the due date. Make sure to use reload or refresh. --- Assignment for Sept 08: Read Keshav Ch 1, 2, 3. (Should be mostly old hat). Read (Re-Read!) Forouzan Ch 1, 2, 3. (All old hat). Read Forouzan Ch 20 (FTP). (New). Read IETF RFC 959 pp 1 - 24 (sections 1, 2, 3). Labwork has been postponed, because the lab was not ready. --- Assignment for Sept 15: Read Keshav Ch 4 (ATM). (Some of this may be new to some of you). Read Forouzan Ch 4 and 5. (Must be old hat to all of you). Look at assignments for next few weeks and ask questions on 09/15 if later assignments are unclear, ambiguous, or worse. You have been given given the root password to many of the computers in the Internet Laboratory (GITC 4325). (All the same root password.) You have been assigned one of these (you will have to share) for your ``root-level'' work in this class. You will give yourself user accounts on the machines Mr Jain told you to. You need to be root on these machines to do that. Apart from that special job, you will become root only on the machine assigned to you! Warning: As much as possible, log in as yourself and ``su root'' only when necessary. Also log in as root as rarely as possible. The further homework for Sept 15 is the exercises 1 - 3 in the ``Starting on the class right now'' page. Also read that page. This is not as much work as it seems! (1) You will create a small file (say 100K to 150K Bytes) in your user directory on the machine where you are allowed to be root. Then you will ftp that file to another computer where you have a user account. You will observe the transfer using tcpdump, using ``tcpdump -w''. FTP: File Transfer Protocol. It is a protocol used to transfer files between hosts. It uses TCP. As such, it is the perfect vehicle to generate tcpdump traces. Also, FTP is a fairly simple protocol and a good example of a simple ``higher layer'' protocol to be studied. The control channel in FTP uses the Telnet protocol. I don't think you need to study the Telnet protocol in order to understand FTP. If you want to know more about Telnet, start with Forouzan Ch 19. Reading Forouzan Ch 19 will be assigned for Sept 22. Note: to use tcpdump, you have to log in as root. Logging in as yourself and then doing ``su root'' does not work. Note: look ahead to the Sept 22 assignment. You need another tcpdump option in addition to ``-w'' in order to do that assignment. What option is that? Save yourself some work! (2) Make a small change in the TCP/IP code in the Linux Kernel. The result must be that during ``slowstart'' the cwnd increases by TWO instead of ONE MSSs for every good acknowledgement. (See the file ``Starting on the class right now''). Keep the old kernel and add the new kernel. (3) FTP the same file over as you did in (1), now using the modified kernel. Observe the result using tcpdump. Check the behavior changed as expected. This need not be handed in. But make sure to do it, you will need it next week! --- Assignment for Sept 22: Read Keshav Ch 5, 6. (Some of this, but not much, may be new to some of you.) Read Forouzan Ch 6, 7. (Old hat.) Read Forouzan Ch 19 (Telnet). (New). Read as much more of RFC 959 as necessary to do the following: (Very little, if any, more reading of that RFC should be necessary.) Write a program, or a set of programs, that takes tcpdump output (for an FTP run) as input and reconstructs from it the file you ftp-ed over. (Now you can be a spy!). What options do you need to run tcpdump with to be able to reconstruct all data? I recommend to use the run for Sept 15. Unless there you used the wrong options, then you must make new runs. Hint: You have to concentrate on the packets for the flow that does not use port 21. The first time around you can pretend there are no re-transmitted packets. This time there probably are not any! Hint: Do this first for a file that is so small you can do it by hand. Hint: Always use ``tcpdump -w'' (with certain options) to create a permanent record. Then use ``tcpdump -r'' (with certain options) to analyze the permanent record. This is for two reasons: (1) If you force the computer to monitor and analyze simultaneously, it is MUCH more likely to drop packets. (2) You can change your mind on the second set of options without having to redo the measurements. Hand in: Options to be used with ``tcpdump -w''. Options to be used with ``tcpdump -r''. The perlscript (or whatever you used). It is OK if the user has to put in the IP adresses and portnumbers ``by hand''. Also hand in: A plot of ``likely cwnd after receiving ack'' vs ``number of ack'', for the original kernel and for your modified kernel. BRIEFLY explain the difference. Later we will do the same exercise, but Mr Jain and I will cause random loss in the router through which the packets flow. --- Assignment for Sept 29: Read Keshav Ch 7 (Some, but not much, of this may be new). Read Forouzan Ch 8, 9. (Old Hat). Read as much more of RFC 959 as necessary to do the following: (Very little, if any, more reading of that RFC should be necessary.) Study the ``port 21'' flows from your tcpdump output from Sept 08. (Or make new runs). Use the program(s) you wrote for last week. Make sure you recognize the ftp commands you gave and the dialog between the two ftp sides. Make sure you find your (user) password. (Now you really can be a spy!) Feel free to assume there are no re-transmitted packets. (If there are, re-interprete ``by hand''). Remark: While the ftp control channel uses telnet, I do not think you need to understand telnet to do this assignment. But it will not hurt, so do read Forouzan Ch 19. Actually, I think it will work the other way: Forouzan Ch 19 may start making more sense if you look at the tcpdump output. I will give you the tcpdump output taken while I do a simple ftp. (tcpdump -w -s 0). Tell me what my password is. Hand in my password. (NO colaboration!). --- Read Keshav Ch 7 (Some, but not much, of this may be new). Read Forouzan Ch 8, 9. (Old Hat). Soon: write programs that reconstruct the information from the tcpdump outputs even in case there are lost and re-transmitted packets. (This should be quite easy: reconstruct the data in hexadecimal, then use your old programs). Also soon: Download ns and get it to work. Do a few simple runs with ns. (Exact dates to be determined.) --- Assignment for Oct 06: Read Keshav Ch 8. Some of this may be new. Ask questions if you have problems. Read Forouzan Ch 10, 11. (Old Hat). Soon: write programs that reconstruct the information from the tcpdump outputs even in case there are lost and re-transmitted packets. (This should be quite easy: reconstruct the data in hexadecimal, then use your old programs). Also soon: Download ns and get it to work. Do a few simple runs with ns.