finish off csma tutorial example words
authorCraig Dowell <craigdo@ee.washington.edu>
Sun, 29 Jun 2008 10:44:24 -0700
changeset 3337 6b297a1f231b
parent 3336 1bb6f018fc42
child 3338 7c645e1799b1
finish off csma tutorial example words
doc/tutorial/building-topologies.texi
--- a/doc/tutorial/building-topologies.texi	Sat Jun 28 22:39:06 2008 -0700
+++ b/doc/tutorial/building-topologies.texi	Sun Jun 29 10:44:24 2008 -0700
@@ -435,8 +435,8 @@
 the client (we have already dumped the traces and you can find them in those
 tcpdumps above.
 
-Finally, let's take a look at one of the CSMA nodes that wasn't involved in
-the packet exchange:
+Let's take a look at one of the CSMA nodes that wasn't involved in the packet 
+exchange:
 
 @verbatim
   ~/repos/ns-3-dev > tcpdump -r second-2-0.pcap -nn -tt
@@ -450,3 +450,94 @@
 devices see the ARP requests involved in the packet exchange.  The remaining
 pcap trace will be identical to this one.
 
+Finally, recall that we added the ability to control the number of CSMA devices
+in the simulation by command line argument.  You can change this argument in
+the same way as when we looked at changing the number of packets echoed in the
+@code{first.cc} example.  Try setting the number of ``extra'' devices to four:
+
+@verbatim
+  ~/repos/ns-3-dev > ./waf --run "scratch/second --nCsma=4"
+  Entering directory `/home/craigdo/repos/ns-3-dev/build'
+  Compilation finished successfully
+  Sent 1024 bytes to 10.1.2.5
+  Received 1024 bytes from 10.1.1.1
+  Received 1024 bytes from 10.1.2.5
+  ~/repos/ns-3-dev >
+@end verbatim
+
+Notice that the echo server has now been relocated to the last of the CSMA
+nodes, which is 10.1.2.5 instead of the default case, 10.1.2.4.  You can 
+increase the number to your hearts content, but remember that you will get a
+pcap trace file for every node in the simulation.  One thing you can do to
+keep from getting all of those pcap traces with nothing but ARP exchanges in 
+them is to be more specific about which nodes and devices you want to trace.
+
+Let's take a look at @code{scratch/second.cc} and be more specific about which
+nodes and devices we want to trace.  The file we provide uses the 
+@code{EnablePcapAll} methods of the helpers to enable pcap on all devices.  
+We want to use the more specific method, @code{EnablePcap}, which takes
+a node number and device number as parameters.  Go ahead and replace the 
+@code{EnablePcapAll} calls with the calls below.
+
+@verbatim
+  PointToPointHelper::EnablePcap ("second", p2pNodes.Get (0)->GetId (), 0);
+  CsmaHelper::EnablePcap ("second", csmaNodes.Get (nCsma)->GetId (), 0);
+@end verbatim
+
+We know that we want to create a pcap file with the base name "second" and
+we also know that the device of interest in both cases is going to be zero,
+so those parameters are not really interesting.  In order to get the node
+number, you have two choices:  first, nodes are numbered in a monotonically
+increasing fashion starting from zero in the order in which you created them.
+One way to get a node number to pass to the helper is to figure this number
+out ``manually.''  If you take a look at the network topology illustration at
+the beginning of the file, you can see that the last CSMA node is going to be
+node number code{nCsma + 1}.  This can become annoyingly difficult in larger
+simulations.  An alternate way, which we use here, is to realize that the
+@code{NodeContainer}s contain pointers to ns-3 @code{Node} Objects.  The
+@code{Node} Object has a method called @code{GetId} which will return that
+node's ID.  Let's go take a look at the Doxygen for the @code{Node} and locate
+that method, which is further down in the code than we've seen so far.
+
+Go to the Doxygen documentation for your release (recall that you can find it
+on the project web site).  You can get to the @code{Node} documentation by
+looking through at the ``Classes'' tab in and scrolling down to 
+@code{ns3::Node} in the list.  Select @code{ns3::Node} and you will be taken
+to the documentation for the @code{Node} class.  If you now scroll down to the
+@code{GetId} method and select it, you will be taken to the detailed 
+documentation for the method.  Using the @code{GetId} method can make 
+determining node numbers much easier in complex topologies.
+
+Now that we have got some trace filtering in place, it is reasonable to start
+increasing the number of CSMA devices in our simulation.  If you run the 
+simulation setting @code{nCsma} to 100, you will see the following:
+
+@verbatim
+  ~/repos/ns-3-dev > ./waf --run "scratch/second --nCsma=100"
+  Entering directory `/home/craigdo/repos/ns-3-dev/build'
+  Compilation finished successfully
+  Sent 1024 bytes to 10.1.2.101
+  Received 1024 bytes from 10.1.1.1
+  Received 1024 bytes from 10.1.2.101
+  ~/repos/ns-3-dev >
+@end verbatim
+
+Note that the echo server is now located at 10.1.2.101 which corresponds to
+100 ``extra'' CSMA nodes with the echo server on the last one.  If you list
+the pcap files in the top level directory,
+
+@verbatim
+  ~/repos/ns-3-dev > ls *.pcap
+  second-0-0.pcap  second-101-0.pcap
+  ~/repos/ns-3-dev >
+@end verbatim
+
+you will see that we have, in fact, only created two trace files.  The trace
+file @code{second-0-0.pcap} is the ``leftmost'' point-to-point device which is
+the echo packet source.  The file @code{second-101-0.pcap} corresponds to the
+rightmost CSMA device which is where the echo server resides.
+
+
+
+
+