Difference between revisions of "User FAQ"

From Nsnam
Jump to: navigation, search
(Will ns-2 scripts run on ns-3?)
(working with subsets of repositories)
Line 58: Line 58:
 
id because the id of the parent changes. If the hash id of a changeset
 
id because the id of the parent changes. If the hash id of a changeset
 
changes, it is a different changeset so, mercurial cannot really manage
 
changes, it is a different changeset so, mercurial cannot really manage
these individual changesets.
+
these individual changesets.  There is, however, the [http://www.selenic.com/mercurial/wiki/index.cgi/TransplantExtension transplant extension] that lets you do just that.
  
 
So, the idea is that merging happens from one repo to another, and
 
So, the idea is that merging happens from one repo to another, and
Line 67: Line 67:
 
represents a branch for the whole repository.  
 
represents a branch for the whole repository.  
  
2) the latest mercurial contains the 'forest' extension which is a way
+
2) the latest mercurial contains the [http://www.selenic.com/mercurial/wiki/index.cgi/ForestExtension forest extension] which is a way
 
to make mercurial manage a 'forest' of repos: each repo is independent
 
to make mercurial manage a 'forest' of repos: each repo is independent
 
but they also behave as a single big repo through the forest extension.
 
but they also behave as a single big repo through the forest extension.

Revision as of 14:06, 19 May 2007

Main Page - Current Development - Developer FAQ - Tools - Related Projects - Project Ideas - Summer Projects

Installation - Troubleshooting - User FAQ - HOWTOs - Samples - Models - Education - Contributed Code - Papers

The Network Simulator ns-3: Frequently Asked Questions (FAQ)

This wiki page is devoted to questions for users of the simulator. There is a similar Developer_FAQ page for ns-3 software developers and maintainers.

What is the difference between ns-2 and ns-3?

ns-2 is a popular discrete-event network simulator developed under several previous research grants and activities. It remains in active use and will continue to be maintained.

ns-3 is a new software development effort focused on improving upon the core architecture, software integration, models, and educational components of ns-2. The project commenced in July 2006 and there have not yet been any releases (pre-alpha stage).

If you are looking for a simulator to currently use for research, please use ns-2.

Will ns-2 scripts run on ns-3?

No. ns-2 uses OTcl as its scripting environment. ns-3 will use C++ programs or python scripts to define simulations.

I found a bug in ns-3. How do I report it?

Please consult this page. Also, please consider fixing the bug, not just reporting it :)

Mercurial

merging a separate repository with a main repository

Q. I want to incorporate some code from a mercurial branch (repository) that is off the main repository.

A. (from Mathieu Lacage)

You can create a local clone of the repository and pull into it from the main repository: you can push these yourself by creating a local clone of that repo and then pushing it back to the main repo. It will keep the original history; e.g.:

hg clone http://code.nsnam.org/mathieu/ns-3-ptr
cd ns-3-ptr
# merge from main ns-3 repository into this other repository
hg pull http://code.nsnam.org/ns-3
hg merge

Pushing this new merged repository into another repository will then keep the original change history:

# push back-- must have privileges to push to the repository
hg push ssh://code@code.nsnam.org/repos/ns-3

working with subsets of repositories

Q. Is there a way with mercurial to pull/merge/push subsets of the repositories? For instance, suppose I wanted only to grab the samples directory from a repo and merge that alone.

A. (from Mathieu Lacage) You cannot cherry-pick individual changesets other than by exporting them to patches first. The reason is that each Changeset contains a single hash which is, among others, based on the hash of the 'parent' changeset hash. So, if you 'reparent' a changeset, you change its hash id because the id of the parent changes. If the hash id of a changeset changes, it is a different changeset so, mercurial cannot really manage these individual changesets. There is, however, the transplant extension that lets you do just that.

So, the idea is that merging happens from one repo to another, and cannot be done on a sub-dir basis. The other alternatives are:

1) the latest mercurial has support for in-repo branches: you can maintain multiple branches within a single repository but each branch represents a branch for the whole repository.

2) the latest mercurial contains the forest extension which is a way to make mercurial manage a 'forest' of repos: each repo is independent but they also behave as a single big repo through the forest extension.

Scons (build process)

Library not loaded error

Question: On Apple osX, I built ns-3 successfully, but when I try to run a sample program I get something like:

> ./sample-packet
dyld: Library not loaded: build-dir/dbg-shared/lib/libcommon.dylib
  Referenced from: /tmp/ns-3/build-dir/dbg-shared/bin/./sample-packet
  Reason: image not found
Trace/BPT trap

Answer: This is because the library path variable of your environment does not include the location where the ns-3 modules (libraries) are located.

In OS X, you need to set the DYLD_LIBRARY_PATH variable to include the library directory. These need to include the lib/ directory where these ns-3 libraries are built. On Linux and Solaris systems, you should never warnings of this kind. If you do, please, report a bug.

In this example, setting DYLD_LIBRARY_PATH=/tmp/ns-3/build-dir/dbg-shared/lib/ will work.

How do I do the equivalent of a "make clean"?

scons -c