The mobilenodes described so far mainly supports simulation of multi-hop ad-hoc networks or wireless LANs. But what if we need to simulate a topology of multiple wireless LANs connected through wired nodes, or may need to run mobileIP on top of these wireless nodes? The extensions made to the CMU wireless model allows us to do that.
The main problem facing the wired-cum-wireless scenario was the issue of routing. In ns, routing information is generated based on the connectivity of the topology, i.e how nodes are connected to one another through Links. Mobilenodes on the other hand have no concept of links. They route packets among themselves, within the wireless topology, using their routing protocol. so how would packets be exchanged between these two types of nodes?
So a node called BaseStationNode is created which plays the role of a gateway for the wired and wireless domains. The BaseStationNode is essentially a hybrid between a Hierarchical node17.1(HierNode) and a MobileNode. The basestation node is responsible for delivering packets into and out of the wireless domain. In order to achieve this we need Hierarchical routing.
Each wireless domain along with its base-station would have an unique domain address assigned to them. All packets destined to a wireless node would reach the base-station attached to the domain of that wireless node, who would eventually hand the packet over to the destination (mobilenode). And mobilenodes route packets, destined to outside their (wireless) domain, to their base-station node. The base-station knows how to forward these packets towards the (wired) destination.
The schematic of a BaseStationNode is shown in Figure .The mobilenodes in wired-cum-wireless scenario are required to support hierarchical addressing/routing. Thus the MobileNode looks exactly like the BaseStationNode. The SRNode, however, simply needs to have its own hier-address since it does not require any address demuxes and thus is not required to support hier routing17.2.
The DSDV agent on having to forward a packet checks to see if the destination is outside its (wireless) subnet. If so, it tries to forward the packet to its base-station node. In case no route to base-station is found the packet is dropped. Otherwise the packet is forwarded to the next_hop towards the base-station. Which is then routed towards the wired network by base-station's classifiers.
The DSR agent, on receiving a pkt destined outside its subnet, sends out a route-query for its base-station in case the route to base-station is not known. The data pkt is temporarily cached while it waits to hear route replies from base-station. On getting a reply the packet is provided with routing information in its header and send away towards the base-station. The base-station address demuxes routes it correctly toward the wired network.
The example script for a wired-cum-wireless simulation can be found at ~ns/tcl/ex/wired-cum-wireless-sim.tcl. The methods for wired-cum-wireless implementations are defined in ~ns/tcl/lib/ns-bsnode.tcl, ~ns/tcl/mobility/{com.tcl,dsr.tcl, dsdv.tcl}, ~ns/dsdv/dsdv.{cc,h} and ~ns/dsr/dsragent.{cc,h}.
Tom Henderson 2014-12-17