- ...\@title0.1
-
The VINT project is a joint effort by people from
UC Berkeley, USC/ISI, LBL, and Xerox PARC.
The project is supported by the Defense Advanced Research Projects
Agency (DARPA)
at LBL under DARPA grant DABT63-96-C-0105,
at USC/ISI under DARPA grant ABT63-96-C-0054,
at Xerox PARC under DARPA grant DABT63-96-C-0105.
Any opinions, findings, and conclusions or recommendations expressed
in this material are those of the author(s) and do not necessarily
reflect the views of the DARPA.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
- ... topology,1.1
- with apologies to Rodgers and Hammerstein
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
- ... TclObject3.1
- In the latest release of ns and nsTcl,
this object has been renamed to SplitObjefct,
which more accurately reflects its nature of existence.
However, for the moment,
we will continue to use the term TclObject
to refer to these objects and this class.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
- ...3.2
- As an example, the classes Simulator, Node, Link, or rtObject,
are classes that are not derived from the class TclObject.
Objects in these classes are not, therefore, TclObjects.
However, a Simulator, Node, Link, or route Object is also instantiated
using the new procedure in ns.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
- ... ASRMAgent3.3
- Note that this constructor is embellished to illustrate
the features of the variable binding mechanism.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
- ... cases3.4
- The few places where this might not work
are when certain variables might have to be defined or undefined,
or otherwise the script contains code
other than procedure and variable definitions and
executes actions directly that might not be reversible.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
- ... array5.1
- , an instance variable of a class that is also an array variable
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
- ... delay6.1
- The current
version also includes an object to examine the
network layer ``ttl'' field and discard packets if the
field reaches zero.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
- ... exists7.1
- For instance,
if the sum of the service
rates needed is greater than the output link capacity.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
- ... packets11.1
- This is perhaps unrealistically simple.
An ICMP ECHO REQUEST agent would likely wish to process
ECHO REPLY messages.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
- ...
OTcl13.1
- It is not intended to be updated after configuration
time. Doing so should be possible, but is currently untested.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
- ...packet.h) 13.2
- Note: PT_NTYPE should remain the last element of this
enumeration.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
- ... produced.13.3
- In
some processer architectures, including the
Sparc and HP-PA, double-word access must be performed on a double-word
boundary (i.e. addresses ending in 0 mod 8). Attempting to perform
unaligned accesses result in an abnormal program termination.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
- ...
node17.1
- Refer to Chapter
for details on
hierarchical routing and internals of HierNode.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
- ...
routing17.2
- In order to do away with all these different
variations of the definition of a node, we are planning to revise
the node architecture that would allow a more flexible
and modularised construction of a node without the necessity of having
to define and be limited to certain Class definitions only.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
- ... Iridium18.1
- Aside
from the link bandwidths (Iridium is a narrowband system only), these
parameters are very close to what a broadband version of the Iridium system
might look like.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
- ... Teledesic18.2
- These Teledesic constellation
parameters are subject to change;
thanks to Marie-Jose Montpetit of Teledesic for providing
tentative parameters as of January 1999. The link bandwidths are not
necessarily accurate.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
- ... north.18.3
- Traditionally, the ``right ascension'' of the ascending
node is specified for satellite orbits- the right ascension corresponds to the
celestial longitude. In our case, we do not care about the
orientation in a celestial coordinate system, so we specify the earth-centric
longitude instead.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
- ... stacks.18.4
- In the author's opinion, all network stacks in ns should
eventually have a LinkHead object at the front- the class SatLinkHead
would then disappear.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
- ... model19.1
- Based on the code contributed to ns from the CMU Monarch
project.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
- ... model19.2
- Contributed to ns from the
CMU Monarch project.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
- ... model19.3
- Implemented in ns by
Wei Ye at USC/ISI
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
- ... 6.27.1
- In ns v1, each packet included a class
field, which was used by CBQ to classify packets.
It then found additional use to differentiate between
``flows'' at one trace point. In ns v2, the flow ID field is available
for this purpose, but any additional information (which was commonly overloaded
into the class field in ns v1) should be placed in its own separate field,
possibly in some other header
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
- ... number.27.2
- In ns v1,
all packets contained a sequence number, whereas in ns v2 only those
Agents interested in providing sequencing will generate sequence numbers.
Thus, this field may not be useful in ns v2 for packets generated by
agents that have not filled in a sequence number. It is used here
to remain backward compatible with ns v1.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
- ... protocols31.1
- The consideration is that static and session routing
strategies/protocols are implemented as agents derived from
the Agent/rtProto,
similar to how the different dynamic routing protocols are implemented;
hence the blurred distinctions.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
- ... chosen31.2
-
This really is undesirable, and may be fixed at some point.
The fix will probably be to favor the agents in class preference order.
A user level simulation relying on this behavior,
or getting into this situation in specific topologies is
not recommended.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
- ... configured31.3
- Link costs can also be used to favour or disregard
specific links in order to achieve particular topology configurations.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
- ... data38.1
- Note that the trace data can also be used
to gather certain kinds of trace data.
We will illustrate this later.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
- ...Agent/SRM::recv-data38.2
- Technically,
[]recv_data invokes the instance procedure
recv data sender msgid,
that then invokes []recv-data.
The indirection allows individual simulation scripts to override the
[]recv as needed.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
- ... agent38.3
- Note that this implementation of session message handling
is subtly different from that used in wb or described in
[11].
In principle, an agent disseminates a list of the data it has
actually received.
Our implementation, on the other hand, only disseminates
a count of the last message sequence number per source that the
agent knows that that the source has sent.
This is a constraint when studying aspects of loss recovery
during partition and healing.
It is reasonable to expect that the maintainer of this code will fix
this problem during one of his numerous intervals of copious spare time.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
- ... SimpleTcp.42.1
- A SimpleTcp agent is used solely for web caching simulations. It
is actually an UDP agent. It has neither error recovery nor flow/congestion
control. It doesn't do packet segmentation. Assuming a loss-free network
and in-order packet delivery,
SimpleTcp agent simplifies the trace files
and hence aids the debugging of application protocols, which, in our case,
is the web cache consistency protocol.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
- ... requests:42.2
- Some PagePool,
e.g., PagePool/Math, has only one page and therefore it always returns the
same page. Some other PagePool, e.g. PagePool/Trace, has multiple pages
and needs a random variable to pick out a random page.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.