From tomh@tomh.org Wed Aug 14 06:15:56 2002 From: tomh@tomh.org (Tom Henderson) Date: Wed Aug 14 05:15:56 2002 Subject: [Ns-edu] experience with ns in class Message-ID: This note is intended to describe my experience in using ns as part of teaching an undergraduate (EE/CS Intro to Networking, Peterson/Davie) course at the University of Washington. I used ns for essentially three assignments: i) ARQ protocols (link layer) ii) Distance-vector routing iii) experimenting with TCP variants plus a fourth introductory assignment for getting used to the simulator. My objective was to avoid having students write any code that required recompilation. This was because i) the administrator of the departmental machines agreed to install ns and all of its dependencies in a file share that could be mounted on all the rest of the machines (and hence, students wouldn't have privileges to recompile), and ii) I didn't want to take students down the path of having to understanding the split object model. Therefore, I decided to base all of the protocol work on OTcl-based agents using the Agent/Message class (it was the closest analog to what I had in mind). Plusses of ns ----------- - nam received positive feedback-- the animations were helpful in visualizing the operation of the protocols - students rated the TCP assignment the most interesting, because it made liberal use of xgraph and understanding the impact of different TCP loss algorithms graphically (Tahoe vs. Reno vs. NewReno) Minuses of ns ----------- - Students struggled with Tcl syntax, especially undergraduate EE students. For example, the list manipulation commands (lreplace, lindex) proved vexing for some. - It was probably more difficult than it should have been for me to write protocols that did not involve changing any C++ code. In the end, I decided to base both the ARQ and routing protocols on the Agent/Message class. This was kind of clumsy but it allowed me to overlay my protocols on a statically configured network. This type of solution has limitations (e.g., making sure that messages don't exceed 64 characters because of the base class definition, treating PDUs as character based strings rather than binary, interworking with other pieces of ns), but can be used satisfactorily if the goals of the assignment are modest. Thoughts on if I were to do it again ------------ A straightforward message-passing protocol framework, for educational use, would be helpful. For protocols at IP layer or above, something akin to a raw sockets interface would be useful. Because of the abstraction in the ns simple links, it is difficult to experiment with link layer protocols. My scripts are available at http://www.tomh.org/class/ if anyone is interested. Tom