17.2.9 Integration with wired and wireless code

Recently (November 2001), support has been added to connect traditional OTcl-based wired nodes with the satellite nodes. This section describes the capabilities and limitations of that code.

The satellite code (and the wireless code) normally performs all routing in C++, while the traditional ns code uses a mix of OTcl and C++ code. For backward compatibility reasons, it is difficult to fully integrate both the wired and wireless code. The strategy for integrating wireless and wired code has been to define a special gateway node (called a "basestation"), to use hierarchial routing, and to locate a single basestation node in the wireless network with a network stack located in both the wireless and the wired subnet. Because routing is not fully integrated, the topology of the simulation is limited to only one gateway node per wireless subnet (i.e., a packet cannot enter the wireless network from one wired gateway and leave via another).

The satellite/wired code integration takes a different strategy. By selecting the node configuration $ns node-config -wiredRouting ON option, the C++ routing in the satellite code is turned off, and instead, all satellite topology changes lead to upcalls into the OTcl code. As a result, the link_ array in OTcl is manipulated according to all topology changes, and OTcl-based routing can occur. The penalty for doing this is a much longer execution time for larger simulations (such as Teledesic), but for smaller simulations, the difference is not as noticeable.

An example script detailing the use of this new option is shown in ~ns/tcl/ex/sat-wired.tcl, and a similar test in the satellite test suite exercises this code. Additionally, all of the satellite example scripts in ~ns/tcl/ex directory can be converted to OTcl routing by using the $ns node-config -wiredRouting ON option. However, there are a few caveats:

Tom Henderson 2011-11-05