Many researchers around the world are developing 
modified versions of ns2 in order to introduce new features such as 
agents, protocols, algorithms, etc. The standard practice adopted in 
doing this is to get an official version of the ns2 source distribution, 
make the needed modifications on the source code, add new files 
somewhere in the existing code tree, and finally build everything 
into the ns2 executable.
The introduction of dynamically loadable libraries provides a new way
to extend ns-2, with the following features:
- People can develop add-ons for ns2 (e.g. introducing new agents, 
packet types, protocols) without having to modify the core simulator.
- New packet headers and types, as well as packet tracers, could 
be defined to assist debugging, collection of statistics and inter-module 
communication. These can also be loaded on demand according to user's needs.
- Dynamic libraries can be loaded at simulation time, with no 
need to recompile the whole ns2 distribution or to keep different ns2 
binaries.
- The installation of third-party ns2 extensions is made easier, 
thereby facilitating their dissemination.
- Dynamic libraries will make life easier for lab technicians and 
students. In fact, an official ns2 version can be installed by the 
administrator and students can just build and use their preferred 
extensions independently.
- Besides, these modifications will make ns2 more modular and 
scalable. Adding new features to the simulator will be easier and 
backward compatibility will be preserved.
The below sections briefly summarize the more complete documentation
that can be found at:
http://www.dei.unipd.it/%7Ebaldo/ns_dl_patch/ns_dl_patch.html
Tom Henderson
2011-11-05