Add new tutorial section on ns-3 attribute values
authorCraig Dowell <craigdo@ee.washington.edu>
Sat, 10 Apr 2010 13:47:55 -0700
changeset 6185 371ccf65ecdc
parent 6184 3bb39c179947
child 6186 5bbe3ca8ccb4
Add new tutorial section on ns-3 attribute values
doc/tutorial/building-topologies.texi
--- a/doc/tutorial/building-topologies.texi	Sat Apr 10 13:47:05 2010 -0700
+++ b/doc/tutorial/building-topologies.texi	Sat Apr 10 13:47:55 2010 -0700
@@ -694,6 +694,99 @@
 @end verbatim
 
 @c ========================================================================
+@c Models, Attributes and Reality
+@c ========================================================================
+@node Models, Attributes and Reality
+@section Models, Attributes and Reality
+
+This is a convenient place to make a small excursion and make an important
+point.  It may or may not be obvious to you, but whenever one is using a 
+simulation, it is important to understand exactly what is being modeled and
+what is not.  It is tempting, for example, to think of the CSMA devices 
+and channels used in the previous section as if they were real Ethernet 
+devices; and to expect a simulation result to directly reflect what will 
+happen in a real Ethernet.  This is not the case.  
+
+A model is, by definition, an abstraction of reality.  It is ultimately the 
+responsibility of the simulation script author to determine the so-called
+``range of accuracy'' and ``domain of applicability'' of the simulation as
+a whole, and therefore its consitiuent parts.
+
+In some cases, like @code{Csma}, it can be fairly easy to determine what is 
+@emph{not} modeled.  By reading the model description (@code{csma.h}) you 
+can find that there is no collision detection in the CSMA model and decide
+on how applicable its use will be in your simulation or what caveats you 
+may want to include with your results.  In other cases, it can be quite easy
+to configure behaviors that might not agree with any reality you can go out
+and buy.  It will prove worthwhile to spend some time investigating a few
+such instances, and how easily you can swerve outside the bounds of reality
+in your simulations.
+
+As you have seen, @command{ns-3} provides @code{Attributes} which a user
+can easily set to change model behavior.  Consider two of the @code{Attributes}
+of the @code{CsmaNetDevice}:  @code{Mtu} and @code{EncapsulationMode}.  
+The @code{Mtu} attribute indicates the Maximum Transmission Unit to the 
+device.  This is the size of the largest Protocol Data Unit (PDU) that the
+device can send.  
+
+The MTU defaults to 1500 bytes in the @code{CsmaNetDevice}.  This default
+corresponds to a number found in RFC 894, ``A Standard for the Transmission
+of IP Datagrams over Ethernet Networks.''  The number is actually derived 
+from the maximum packet size for 10Base5 (full-spec Ethernet) networks -- 
+1518 bytes.  If you subtract the DIX encapsulation overhead for Ethernet 
+packets (18 bytes) you will end up with a maximum possible data size (MTU) 
+of 1500 bytes.  One can also find that the @code{MTU} for IEEE 802.3 networks
+is 1492 bytes.  This is because LLC/SNAP encapsulation adds an extra eight 
+bytes of overhead to the packet.  In both cases, the underlying hardware can
+only send 1518 bytes, but the data size is different.
+
+In order to set the encapsulation mode, the @code{CsmaNetDevice} provides
+an @code{Attribute} called @code{EncapsulationMode} which can take on the 
+values @code{Dix} or @code{Llc}.  These correspond to Ethernet and LLC/SNAP
+framing respectively.
+
+If one leaves the @code{Mtu} at 1500 bytes and changes the encapsulation mode
+to @code{Llc}, the result will be a network that encapsulates 1500 byte PDUs
+with LLC/SNAP framing resulting in packets of 1526 bytes, which would be 
+illegal in many networks, since they can transmit a maximum of 1518 bytes per
+packet.  This would most likely result in a simulation that quite subtly does
+not reflect the reality you might be expecting.
+
+Just to complicate the picture, there exist jumbo frames (1500 < MTU <= 9000 bytes)
+and super-jumbo (MTU > 9000 bytes) frames that are not officially sanctioned
+by IEEE but are avialable in some high-speed (Gigabit) networks and NICs.  One
+could leave the encapsulation mode set to @code{Dix}, and set the @code{Mtu}
+@code{Attribute} on a @code{CsmaNetDevice} to 64000 bytes -- even though an 
+associated @code{CsmaChannel DataRate} was set at 10 megabits per second.  
+This would essentially model an Ethernet switch made out of vampire-tapped
+1980s-style 10Base5 networks that support super-jumbo datagrams.  This is
+certainly not something that was ever made, nor is likely to ever be made,
+but it is quite easy for you to configure.
+
+In the previous example, you used the command line to create a simulation that
+had 100 @code{Csma} nodes.  You could have just as easily created a simulation
+with 500 nodes.  If you were actually modeling that 10Base5 vampire-tap network,
+the maximum length of a full-spec Ethernet cable is 500 meters, with a minimum 
+tap spacing of 2.5 meters.  That means there could only be 200 taps on a 
+real network.  You could have quite easily built an illegal network in that
+way as well.  This may or may not result in a meaningful simulation depending
+on what you are trying to model.
+
+Similar situations can occur in many places in @command{ns-3} and in any
+simulator.  For example, you may be able to position nodes in such a way that
+they occupy the same space at the same time, or you may be able to configure
+amplifiers or noise levels that violate the basic laws of physics.
+
+@command{ns-3} generally favors flexibility, and many models will allow freely
+setting @code{Attributes} without trying to enforce any arbitrary consistency
+or particular underlying spec.
+
+The thing to take home from this is that @command{ns-3} is going to provide a
+super-flexible base for you to experiment with.  It is up to you to understand
+what you are asking the system to do and to  make sure that the simulations you
+create have some meaning and some connection with a reality defined by you.
+
+@c ========================================================================
 @c Building a Wireless Network Topology
 @c ========================================================================
 @node Building a Wireless Network Topology