newnode.tex
上传用户:rrhhcc
上传日期:2015-12-11
资源大小:54129k
文件大小:10k
源码类别:

通讯编程

开发平台:

Visual C++

  1. chapter{Restructuring ns node and new node APIs}
  2. label{chap:newnode}
  3. There has been recent changes made to structure of 
  4. clsref{Node}{../ns-2/node.h} in ns. This revised node architecture would
  5. allow more flexible and modularised construction of different node
  6. definitions like a MobileNode capable of wireless communication or a
  7. HierNode that supports hierarchical routing or just a simple Node or a 
  8. completely new node type. In this chapter we will introduce the new node
  9. APIs, discuss the differences between the old and new
  10. OTcl interfaces and compare the advantages of this new structure over the
  11. old one. The functions and procedures relevant to the new node APIs may be
  12. found in ns/tcl/lib/ns-lib.tcl.
  13. section{New Node API}
  14. label{sec:newnode-API}
  15. The new node API consists of two parts. The first part consists of
  16. node-configuration and second part consists of node-creation. So in order
  17. to create a particular type of nodes, we first have to configure for the 
  18. node type and then create the required number of nodes.
  19. subsection{Node configuration}
  20. label{sec:nodeconfig}
  21. Node configuration essentially consists of defining the different node
  22. characteristics before creating them. They may consist of the type of
  23. addressing structure used in the simulation, defining the network
  24. components for mobilenodes, turning on or off the trace options at
  25. Agent/Router/MAC levels, selecting the type of adhoc routing protocol for
  26. wirelessnodes or defining their energy model.
  27. The node configuration API in its entirety looks as the following:
  28. begin{program}
  29.                    OPTION_TYPE    AVAILABLE OPTION_VALUES
  30.                   -------------   --------------------------
  31.  $ns_ node-config -addressingType flat or hierarchical or expanded
  32.                   -adhocRouting   DSDV or DSR or TORA or AODV
  33.                   -llType         LL
  34.                   -macType        Mac/802_11
  35.                   -propType       Propagation/TwoRayGround
  36.                   -ifqType        Queue/DropTail/PriQueue
  37.                   -ifqLen         50
  38.                   -phyType        Phy/WirelessPhy
  39.                   -antType        Antenna/OmniAntenna
  40.                   -channelType    Channel/WirelessChannel
  41.                   -topoInstance   $topo_instance
  42.                   -wiredRouting   ON or OFF
  43.                   -mobileIP       ON or OFF
  44.                   -energyModel    EnergyModel
  45.                   -initialEnergy  (in Joules)
  46.                   -rxPower        (in W)
  47.                   -txPower        (in W)
  48.                   -agentTrace     ON or OFF
  49.                   -routerTrace    ON or OFF
  50.                   -macTrace       ON or OFF
  51.                   -movementTrace  ON or OFF
  52.                   -reset
  53. end{program}
  54. The default values for all the above options are NULL except -addressingType
  55. whose default value is flat. The option -reset can be used to reset all
  56. node-config parameters to their default value.
  57. Thus node-configuration for a wireless, mobile node that runs AODV as its
  58. adhoc routing protocol in a hierarchical topology would be as shown below.
  59. We decide to turn tracing on at the agent and router level only. Also we 
  60. assume a topology has been instantiated with "set topo [new Topography]". 
  61. The node-config command would look like the following:
  62. begin{program}
  63.   $ns_ node-config -addressingType hierarchical
  64.                    -adhocRouting AODV
  65.                    -llType LL
  66.                    -macType Mac/802_11
  67.                    -ifqType Queue/DropTail/PriQueue
  68.                    -ifqLen 50
  69.                    -antType Antenna/OmniAntenna
  70.                    -propType Propagation/TwoRayGround
  71.                    -phyType Phy/WirelessPhy
  72.                    -topoInstance $topo
  73.                    -channelType Channel/WirelessChannel
  74.                    -agentTrace ON
  75.                    -routerTrace ON
  76.                    -macTrace OFF
  77.                    -movementTrace OFF
  78. end{program}
  79. Note that the config command can be broken down into separate lines like
  80. begin{program}
  81.   $ns_ node-config -addressingType hier
  82.   $ns_ node-config -macTrace ON
  83. end{program}
  84. The options that need to be changed may only be called. For example after
  85. configuring for AODV mobilenodes as shown above (and after creating AODV
  86. mobilenodes), we may configure for AODV base-station nodes in the
  87. following way: 
  88. begin{program}
  89.   $ns_ node-config -wiredRouting ON
  90. end{program}
  91. While all other features for base-station nodes and mobilenodes are same,
  92. the base-station nodes are capable of wired routing, while mobilenodes are
  93. not. In this way we can change node-configuration only when it is required.
  94. All node instances created after a given node-configuration command will
  95. have the same property unless a part or all of the node-config command is
  96. executed with different parameter values. And all parameter values remain
  97. unchanged unless they are expicitly changed. So after creation of the AODV
  98. base-station and mobilenodes, if we want to create simple nodes, we will
  99. use the following node-configuration command:
  100. begin{program}
  101.                 $ns_ node-config -reset
  102. end{program}
  103. This will set all parameter values to their default setting which
  104. basically defines configuration of a simple node.
  105. subsection{Node Creation}
  106. label{sec:node-creation}
  107. Once the node of the given type has been configured as shown in the
  108. href{previous subsection}{subsection}{sec:nodeconfig}, the next step is
  109. to create the nodes. The node-creation API basically looks very similar
  110. to the old node creation API. Incase of hierarchical addressing the node 
  111. address has to be passed as an argument as shown below:
  112. begin{program}
  113.         set node [$ns_ node] 
  114. ## or
  115.         set node [$ns_ node $node_address]  ;# incase of hierarchical
  116.                                             ;# addressing.
  117. end{program}
  118. Thus after having configured for AODV mobilenodes as shown in the example
  119. in the href{previous subsection}{subsection}{sec:nodeconfig}, we create
  120. "n=4" AODV mobilenodes as follows:
  121. begin{program}
  122.         set temp {1.0.0 1.0.1 1.0.2 1.0.3}   ;# list of node addresses
  123.         for {set i 0} {$i < $n) } {incr i} {
  124.                 set node_($i) [$ns_ node [lindex $temp $i]]
  125.                 $node_($i) random-motion 0       ;# disable random motion
  126.         }    
  127. end{program}
  128. Thus 4 mobilenodes are created in cluster 0 of domain 1 (1.0.*) .
  129. clearpage
  130. section{Comparison of new API vs old API}
  131. label{sec:new-vs-old-api}
  132. The new node API differs considerably from the old method of creating
  133. nodes in ns. Following is a list of differences between the two:
  134. begin{table}[h]
  135. begin{center}
  136. begin{tabular}{|c|c|}hline
  137. {bf New API} & {bf Old API}\hline
  138. ns_ node-config & ns_ dsdv/dsr/tora-create-mobile-node \
  139. ns_ node & \ hline
  140. No global variable dependency & Strong global dependency\hline
  141. Nam support exists (namtrace-all-wireless) & No nam support\hline
  142. Energy model support & No energy model\hline
  143. Global instance for channel and topology removed & Global instances of
  144. channel and topology\hline
  145. end{tabular}
  146. end{center}
  147. end{table}
  148. clearpage
  149. section{Advantages of the new node structure}
  150. label{sec:advan-newnode}
  151. The revision of the node structure was mainly made to break up the node
  152. srtucture into different modules that would allow much easier and
  153. efficient reconstruction of a new node type and give a cleaner and easily
  154. extensible node creation interface.
  155. The several advantages of the new node structure over the old model is
  156. listed as follows:
  157. begin{enumerate}
  158. item
  159. The new modularised node architecture allows much more flexibility.
  160. The API can now be easily extended to include other features/options in the
  161. node structure. 
  162. item
  163. The node structure has been broken up into different modules like the
  164. basic node module (default) , the network stack, the wired routing
  165. agent, the adhoc routing agent, the energy model etc. And this allows
  166. sharing of common modules within the node structure between different
  167. types of node.
  168. item
  169. Now we can create a new node type by simply plumbing - donot need to
  170. recreate the whole node. Also there is no need to create node classes
  171. obeying the Node class-hierarchy. 
  172. item
  173. The more flexible, modular, efficient and easily extensible node model
  174. thus promotes easier and faster future development compared to the older,
  175. more rigid version.
  176. end{enumerate}
  177. section{Compatibility}
  178. label{sec:compat}
  179. The new node API doesnot interfere with any of the older codes including
  180. the OTcl interface for old node construction, i.e it is fully backward
  181. compatible.
  182. section{Example scripts}
  183. label{sec:ex}
  184. Example scripts that demonstrates use of new node API can be found in
  185. ns/tcl/ex/wireless-demo-csci694.tcl. In this example the new node API is
  186. used to create mobilenodes for a  wireless simulation. You can also see
  187. examples (wireless1.tcl, wireless2.tcl and wireless3.tcl) used in wireless
  188. chapters (chap IX and X) in the ns-tutorial available from 
  189. http://www-mash.cs.berkeley.edu/ns/tutorial/index.html .
  190. section{Validation tests for new node API}
  191. label{sec:valid-test}
  192. Validation test script for new node API can be found in
  193. ns/tcl/test/test-suite-wireless-lan-newnode.tcl 
  194. section{Commands at a glance}
  195. label{sec:newnodecommand}
  196. Following is a list of new node APIs that are commonly used in simulation
  197. scripts:
  198. begin{flushleft}
  199. code{$ns_ node-config -<config-parameter> <optional-val>}\
  200. This command is used to configure nodes. The different config-parameters
  201. are addressingType, different type of the network stack components,
  202. whether tracing will be turned on or not, mobileIP flag is truned or not,
  203. energy model is being used or not etc. An option -reset maybe used to set
  204. the node configuration to its default state. The default setting of 
  205. node-config, i.e if no values are specified, creates a simple node (base
  206. class Node) with flat addressing/routing. For the syntax details see
  207. section ref{sec:nodeconfig} of this chapter.  
  208. code{$ns_ node <optional:node-address>}\
  209. This command creates a node of the type configured by the command
  210. code{$ns_ node-configure} described above. This returns a handle to the
  211. node thus created. The optional argument <node-address> is passed only
  212. incase of creating hierarchical nodes. A node-address is normally a
  213. string denoting the hierarchical address of the node, viz."3.1.1".
  214. end{flushleft}