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

通讯编程

开发平台:

Visual C++

  1. chapter{Network Dynamics}
  2. label{chap:net-dynamics}
  3. This chapter describes the capabilities in ns
  4. to make the simulation topologies dynamic.
  5. We start with the instance procedures to the class Simulator
  6. that are href{useful to a simulation script}{Section}{sec:userAPI}.
  7. The next section describes
  8. href{the internal architecture}{Section}{sec:nd-internal-arch},
  9. including the different classes and instance variables and procedures;
  10. the following section describes
  11. href{the interaction with unicast routing}{Section}{sec:unicast-int}.
  12. This aspect of network dynamics is still somewhat experimental in ns.
  13. The last section of this chapter outlines some of
  14. href{the deficiencies in the current realization}{Section}{sec:deficiencies}
  15. of network dynamics, some one or which
  16. may be fixed in the future.
  17. The procedures and functions described in this chapter can be found in
  18. nsf{tcl/rtglib/dynamics.tcl} and nsf{tcl/lib/route-proto.tcl}.
  19. section{The user level API}
  20. label{sec:userAPI}
  21. The user level interface to network dynamics is a collection 
  22. of instance procedures in the class Simulator,
  23. and one procedure to trace and log the dynamics activity.
  24. Reflecting a rather poor choice of names,
  25. these procedures are
  26. code{rtmodel}, code{rtmodel-delete}, and code{rtmodel-at}.
  27. There is one other procedure, code{rtmodel-configure},
  28. that is used internally by the class Simulator to configure
  29. the rtmodels just prior to simulation start.
  30. We describe this method href{later}{Section}{sec:nd-internal-arch}.
  31. begin{list}{---}{}
  32. item The instance procedure
  33. fcnref{proc[]{rtmodel}}{../ns-2/dynamics.tcl}{Simulator::rtmodel}
  34. defines a model to be applied to the nodes and links in the topology.
  35. Some examples of this command as it would be used in a simulation script are:
  36. begin{program}
  37.         $ns rtmodel Exponential {0.8 1.0 1.0} $n1
  38.         $ns rtmodel Trace dynamics.trc  $n2 $n3
  39.         $ns rtmodel Deterministic {20.0 20.0} $node(1) $node(5)
  40. end{program}
  41. The procedure requires at least three arguments:
  42. begin{itemize}
  43. item % the model definition
  44. The first two arguments define the model that will be used, and the
  45. parameters to configure the model.
  46. The currently implemented models in ns are
  47. Exponential (On/Off), Deterministic (On/Off), Trace (driven), or
  48. Manual (one-shot) models.
  49. item % the parameters
  50. The number, format, and interpretation of the configuration parameters
  51. is specific to the particular model.
  52. begin{enumerate}itemsep0pt
  53. item The exponential on/off model takes four parameters:
  54. tup{[start time], up interval, down interval, [finish time]}.
  55. tup{start time} defaults to $0.5s.$ from the start of the simulation,
  56. tup{finish time} defaults to the end of the simulation.
  57. tup{up interval} and tup{down interval} specify
  58. the mean of the exponential distribution defining the time
  59. that the node or link will be up and down respectively.
  60. The default up and down interval values are $10s.$ and $1s.$ respectively.
  61. Any of these values can be specified as ``$-$'' to default to the
  62. original value.
  63. The following are example specifications of parameters to this model:
  64. begin{program}
  65.       0.8 1.0 1.0       ; start at (0.8s.), up/down = (1.0s.), finish is default;
  66.       5.0 0.5           ; start is default, up/down = (5.0s, 0.5s.), finish is default;
  67.       - 0.7             ; start, up interval are default, down = (0.7s.), finish is default;
  68.       - - - 10          ; start, up, down are default, finish at (10s.);
  69. end{program}
  70. item The deterministic on/off model
  71. is similar to the exponential model above, and  takes four parameters:
  72. tup{[start time], up interval, down interval, [finish time]}.
  73. tup{start time} defaults to the start of the simulation,
  74. tup{finish time} defaults to the end of the simulation.
  75. Only the interpretation of the up and down interval is different;
  76. tup{up interval} and tup{down interval} specify the exact duration
  77. that the node or link will be up and down respectively.
  78. The default values for these parameters are:
  79. tup{start time} is $0.5s.$ from start of simulation,
  80. tup{up interval} is $2.0s.$,
  81. tup{down interval} is $1.0s.$, and
  82. tup{finish time} is the duration of the simulation.
  83. item The trace driven model takes one parameter:
  84. the name of the trace file.
  85. The format of the input trace file is identical to that 
  86. output by the dynamics trace modules, viz,
  87. code{v tup{time} link-tup{operation} tup{node1} tup{node2}}.
  88. Lines that do not correspond to the node or link specified are ignored.
  89. {small
  90. begin{verbatim}
  91.         v 0.8123 link-up 3 5
  92.         v 3.5124 link-down 3 5
  93. end{verbatim}
  94. }
  95. item The manual one-shot model takes two parameters:
  96. the operation to be performed, and the time that it is to be
  97. performed.
  98. end{enumerate}
  99. item % the elements
  100. The rest of the arguments to the proc[]{rtmodel} procedure
  101. define the node or link that the model will be applied to.
  102. If only one node is specified,
  103. it is assumed that the node will fail.
  104. This is modeled by making the links incident on the node fail.
  105. If two nodes are specified, then the command assumes that
  106. the two are adjacent to each other, and the model is applied to the
  107. link incident on the two nodes.
  108. If more than two nodes are specified, only the first is considered,
  109. the subsequent arguments are ignored.
  110. item % proc[]{rtmodel} will also enable tracing if the Simulator
  111.   instance variable, code{traceAllFile_} is set.
  112. end{itemize}
  113. The command returns the handle to the model that was created in this call.
  114. Internally, proc[]{rtmodel} stores the list of route models created
  115. in the class Simulator instance variable, code{rtModel_}.
  116. item The instance procedure
  117. fcnref{proc[]{rtmodel-delete}}{../ns-2/dynamics.tcl}{Simulator::rtmodel-delete}
  118. takes the handle of a route model as argument, removes it from the
  119. code{rtModel_} list, and deletes the route model.
  120. item The instance procedure
  121. fcnref{proc[]{rtmodel-at}}{../ns-2/dynamics.tcl}{Simulator::rtmodel-at}
  122. is a special interface to the Manual model of network dynamics.
  123. The command takes the time, operation, and node or link as arguments,
  124. and applies the operation to the node or link at the specified time.
  125. Example uses of this command are:
  126. begin{program}
  127.         $ns rtmodel-at 3.5 up $n0
  128.         $ns rtmodel-at 3.9 up $n(3) $n(5)
  129.         $ns rtmodel-at 40  down  $n4
  130. end{program}
  131. end{list}
  132. Finally, the instance procedure proc[]{trace-dynamics} of the class rtModel
  133. enables tracing of the dynamics effected by this model.
  134. It is used as:
  135. begin{program}
  136.         set fh [open "dyn.tr" w]
  137.         $rtmodel1 trace-dynamics $fh
  138.         $rtmodel2 trace-dynamics $fh
  139.         $rtmodel1 trace-dynamics stdout
  140. end{program}
  141. In this example, code{$rtmodel1} writes out trace entries to both
  142. dyn.tr and stdout; code{$rtmodel2} only writes out trace entries to dyn.tr.
  143. A typical sequence of trace entries written out by either model might be:
  144. {small
  145. begin{verbatim}
  146.         v 0.8123 link-up 3 5
  147.         v 0.8123 link-up 5 3
  148.         v 3.5124 link-down 3 5
  149.         v 3.5124 link-down 5 3
  150. end{verbatim}
  151. }
  152. These lines above indicate that Link~tup{3, 5} failed at $0.8123s.$,
  153. and recovered at time $3.5124s.$
  154. section{The Internal Architecture}
  155. label{sec:nd-internal-arch}
  156. Each model of network dynamics is implemented as a separate class,
  157. derived from the base clsref{rtModel}{../ns-2/dynamics.tcl}.
  158. We begin by describing
  159. href{the base class rtModel and the derived classes}{Section}{sec:rtmodel}.
  160. The network dynamics models use an internal queuing structure
  161. to ensure that simultaneous events are correctly handled,
  162. the clsref{rtQueue}{../ns-2/dynamics.tcl}.
  163. href{The next subsection}{Section}{sec:rtqueue}
  164. describes the internals of this structure.
  165. Finally, we describe
  166. href{the extensions to the existing classes}{Section}{sec:nd-extensions}:
  167. the Node, Link, and others.
  168. subsection{The class rtModel}
  169. label{sec:rtmodel}
  170. To use a new route model, the routine proc[]{rtmodel}
  171. creates an instance of the appropriate type,
  172. defines the node or link that the model will operate upon,
  173. configures the model,
  174. and possibly enables tracing;
  175. The individual instance procedures that accomplish this in pieces are:
  176. begin{list}{}{}
  177. item The 
  178.   fcnref{constructor for the base class}{../ns-2/dynamics.tcl}{rtModel::init}
  179.   stores a reference to the Simulator in its instance variable, code{ns_}.
  180.   It also initializes the code{startTime_} and code{finishTime_}
  181.   from the class variables of the same name.
  182. item The instance procedure 
  183.   fcnref{set-elements}{../ns-2/dynamics.tcl}{rtModel::set-elements}
  184.   identifies the node or link that the model will operate upon.
  185.   The command stores two arrays: code{links_}, of the links that the
  186.   model will act upon; code{nodes_}, of the incident nodes
  187.   that will be affected by the link failure or recovery caused by the model.
  188. item The default procedure in the base class
  189.    to set the model configuration parameters is
  190.   fcnref{set-parms}{../ns-2/dynamics.tcl}{rtModel::set-parms}.
  191.   It assumes a well defined
  192.   start time, up interval, down interval, and a finish time,
  193.   and sets up configuration parameters for some class of models.
  194.   It stores these values in the instance variables:
  195.   code{startTime_}, code{upInterval_}, code{downInterval_},
  196.   code{finishTime_}.
  197.     The exponential and deterministic models use this default routine,
  198.   the trace based and manual models define their own procedures.
  199. item % trace
  200.   The instance procedure
  201.   fcnref{proc[]{trace}}{../ns-2/dynamics.tcl}{rtModel::trace}
  202.   enables proc[]{trace-dynamics} on each of the links that it affects.
  203.   Additional details on proc[]{trace-dynamics} is discussed in the
  204.   href{section on extensions to the class Link}{Section}{sec:nd-extensions}.
  205. end{list}
  206. The next sequence of configuration steps are taken just prior to
  207. the start of the simulator.
  208. ns invokes 
  209. fcnref{proc[]{rtmodel-configure}}{../ns-2/dynamics.tcl}{Simulator::rtmodel-configure}
  210. just before starting the simulation.
  211. This instance procedure first acquires an instance of the class rtQueue,
  212. and then invokes proc[]{configure} for each route model in its list,
  213. code{rtModel_}.
  214. begin{list}{}{}
  215. item The instance procedure
  216.   fcnref{proc[]{configure}}{../ns-2/dynamics.tcl}{rtModel::configure}
  217.   makes each link that is is applied to dynamic;
  218.   this is the set of links stored in its instance variable array,
  219.   code{links_}.
  220.   Then the procedure schedules its first event.
  221. item The default instance procedure
  222.   fcnref{proc[]{set-first-event}}{../ns-w/dynamics.tcl}{rtModel::set-first-event}
  223.   schedules the first event to take all the links ``down'' at \
  224.   code{$startTime_} + code{upInterval_}.
  225.   Individual types of route models derived from this base class should
  226.   redefine tihs function.
  227. item Two instance procedures in the base class ,
  228.   fcnref{proc[]{set-event}}{../ns-2/dynamics.tcl}{rtModel::set-event} and
  229.   fcnref{proc[]{set-event-exact}}{../ns-2/dynamics.tcl}{rtModel::set-event-exact},
  230.   can be used to schedule events in the route queue.
  231.   proc[interval, operation]{set-event} schedules code{operation}
  232.   after code{interval} seconds from the current time; it uses the
  233.   procedure proc[]{set-event-exact} below.
  234.   proc[fireTime, operation]{set-event-exact} schedules code{operation}
  235.   to execute at code{fireTime}.
  236.   If the time for execution is greater than the code{finishTime_},
  237.   then the only possible action is to take a failed link ``up''.
  238. item  Finally, the base class provides the methods to take the links
  239.   fcnref{proc[]{up}}{../ns-2/dynamics.tcl}{rtModel::up} or
  240.   fcnref{proc[]{down}}{../ns-2/dynamics.tcl}{rtModel::down}.
  241.   Each method invokes the appropriate procedure on each of the links
  242.   in the instance variable, code{links_}.
  243. end{list}
  244. paragraph{Exponential}
  245. The model schedules its first event to take the links down
  246. at code{startTime_} + E(code{upInterval_});
  247. It also defines the procedures, proc[]{up} and proc[]{down};
  248. each procedure invokes the base class procedure to perform the actual operation.
  249. This routine then reschedules the next event at
  250. E(code{upInterval}) or E(code{downInterval_}) respectively.
  251. paragraph{Deterministic}
  252. The model defines the procedures, proc[]{up} and proc[]{down};
  253. each procedure invokes the base class procedure to perform the actual operation.
  254. This routine then reschedules the next event at
  255. code{upInterval} or code{downInterval_} respectively.
  256. paragraph{Trace}
  257. The model redefines the instance procedure
  258. fcnref{proc[]{set-parms}}{../ns-2/dynamics.tcl}{rtModel/Trace::set-parms}
  259. to operan a trace file, and set events based on that input.
  260. The instance procedure
  261. fcnref{proc[]{get-next-event}}{../ns-2/dynamics.tcl}{rtModel/Trace::get-next-event}
  262. returns the next valid event from the trace file.
  263. A valid event is an event that is applicable to one of the links 
  264. in this object's code{links_} variable.
  265. The instance procedure
  266. fcnref{proc[]{set-trace-events}}{../ns-2/dynamics.tcl}{rtModel/Trace::set-trace-events}
  267. uses proc[]{get-next-event}
  268. to schedule the next valid event.
  269. The model redefines
  270. fcnref{proc[]{set-first-event}}{../ns-2/dynamics.tcl}{rtModel/Trace::set-first-event},
  271. fcnref{proc[]{up}}{../ns-2/dynamics.tcl}{rtModel/Trace::up}, and
  272. fcnref{proc[]{down}}{../ns-2/dynamics.tcl}{rtModel/Trace::down}
  273. to use proc[]{set-trace-events}.
  274. paragraph{Manual}
  275. The model is designed to fire exactly once.
  276. The instance procedure
  277. fcnref{proc[]{set-parms}}{../ns-2/dynamics.tcl}{rtModel/Manual::set-parms}
  278. takes an operation and the time to execute that operation as arguments.
  279. fcnref{proc[]{set-first-event}}{../ns-2/dynamics.tcl}{rtModel/Manual::set-first-event}
  280. will schedule the event at the appropriate moment.
  281. This routine also redefines
  282. fcnref{proc[]{notify}}{../ns-2/dynamics.tcl}{rtModel/Manual::notify}
  283. to delete the object instance when the operation is completed.
  284. This notion of the object deleting itself is fragile code.
  285. Since the object only fires once and does nto have to be rescheduled,
  286. it does not overload the procedures proc[]{up} or proc[]{down}.
  287. subsection{protectclsref{rtQueue}{../ns-2/dynamics.tcl}}
  288. label{sec:rtqueue}
  289. The simulator needs to co-ordinate multiple simultaneous network
  290. dynamics events, especially to ensure the right coherent behaviour.
  291. Hence, the network dynamics models use their own internal 
  292. route queue to schedule dynamics events.
  293. There is one instance of this object in the simulator, in the
  294. class Simulator instance variable code{rtq_}.
  295. The queue object stores an array of queued operations
  296. in its instance variable, code{rtq_}.
  297. The index is the time at which the event will execute.
  298. Each element is the list of operations that will execute at that time.
  299. The instance procedures
  300. fcnref{proc[]{insq}}{../ns-2/dynamics.tcl}{rtQueue::insq} and
  301. fcnref{proc[]{insq-i}}{../ns-2/dynamics.tcl}{rtQueue::insq-i}
  302. can insert an element into the queue.
  303. begin{list}{}{}
  304. item The first argument is the time at which this operation will execute.
  305.   proc[]{insq} takes the exact time as argument;
  306.   proc[]{insq-i} takes the interval as argument, and schedules the
  307.   operation code{interval} seconds after the current time.
  308. item The following arguments specify the object, code{$obj},
  309.   the instance procedure of that object, code{$iproc},
  310.   and the arguments to that procedure, code{$args}.
  311.   These arguments are placed into the route queue
  312.   for execution at the appropriate time.
  313. end{list}
  314. The instance procedure
  315. fcnref{proc[]{runq}}{../ns-2/dynamics.tcl}{rtQueue::runq}
  316. executes code{eval $obj $iproc $args} at the appropriate instant.
  317. After all the events for that instance are executed,
  318. proc[]{runq} will proc[]{notify} each object about the execution.
  319. Finally, the instance procedure
  320. fcnref{proc[]{delq}}{../ns-2/dynamics.tcl}{rtQueue::delq}
  321. can remove a queued action with the time and the name of the object.
  322. section{Interaction with Unicast Routing}
  323. label{sec:unicast-int}
  324. In an earlier section,
  325. we had described how
  326. href{unicast routing reacts}{Section}{sec:rtglibAPI}
  327. to changes to the topology.
  328. This section details the steps by which 
  329. the network dynamics code will notify the nodes and routing
  330. about the changes to the topology.
  331. begin{enumerate}
  332. item proc[]{rtQueue::runq} will invoke the procedures
  333.   specified by each of the route model instances.
  334.   After all of the actions are completed,
  335.   proc[]{runq} will notify each of the models.
  336. item
  337.   fcnref{proc[]{notify}}{../ns-2/dynamics.tcl}{rtModel::notify}
  338.   will then invoke instance procedures at all of the nodes
  339.   that were incident to the affected links.
  340.   Each route model stores the list of nodes in its instance variable
  341.   array, code{nodes_}.
  342.   It will then notify the RouteLogic instance of topology changes.
  343. item
  344.   The rtModel object invokes the class Node instance procedure
  345.   fcnref{proc[]{intf-changed}}{../ns-2/dynamics.tcl}{Node::intf-changed}
  346.   for each of the affected nodes.
  347. item
  348.   proc[]{Node::intf-changed} will notify any code{rtObject}
  349.   at the node of the possible changes to the topology.
  350.   Recall that these route objects are created when the simulation uses
  351.   detailed dynamic unicast routing.
  352. end{enumerate}
  353. subsection{Extensions to Other Classes}
  354. label{sec:nd-extensions}
  355. The existing classes assume that the topology is static by default.
  356. In this section, we document the necessary changes to these
  357. classes to support dynamic topologies.
  358. We have already described the instance procedures
  359. in the clsref{Simulator}{../ns-2/ns-lib.tcl} to create or manipulate
  360. route models, ie,
  361. proc[]{rtmodel}, proc[]{rtmodel-at}, proc[]{rtmodel-delete}, and
  362. proc[]{rtmodel-configure} href{in earlier sections}{Section}{sec:rtmodel}.
  363. Similarly, the clsref{Node}{../ns-2/ns-node.tcl}
  364. contains the instance procedure proc[]{intf-changed}
  365. that we described in href{the previous section}{Section}{sec:unicast-int}.
  366. The network dynamics code operates on individual links.
  367. Each model currently translates its specification into
  368. operations on the appropriate links.
  369. The following paragraphs describe the class Link and related classes.
  370. paragraph{protectclsref{DynamicLink}{../ns-2/dynalink.cc.tcl}}
  371. This class is the only TclObject in the network dynamics code.
  372. The shadow class is called clsref{DynaLink}{../ns-2/dynalink.h}.
  373. The class supports one bound variable, code{status_}.
  374. code{status_} is 1 when the link is up, and 0 when the link is down.
  375. The shadow object's fcnref{fcn[]{recv}}{../ns-2/dynalink.cc}{DynaLink::recv}
  376. method checks the code{status_} variable, to decide whether or not
  377. a packet should be forwarded.
  378. paragraph{protectclsref{Link}{../ns-2/ns-link.tcl}}
  379. This class supports the primitives:
  380. up and down, and up? to set and query code{status_}.
  381. These primitives are instance procedures of the class.
  382. begin{list}{}{}
  383. item  The instance procedures
  384.   fcnref{proc[]{up}}{../ns-2/dynamics.tcl}{Link::up} and
  385.   fcnref{proc[]{down}}{../ns-2/dynamics.tcl}{Link::down}
  386.   set code{status_} to 1 and 0 respectively.
  387.   In addition, when the link fails, proc[]{down}
  388.   will reset all connectors that make up the link.
  389.   Each connector, including all queues and the delay object
  390.   will flush and drop any packets that it currently stores.
  391.   This emulates the packet drop due to link failure.
  392.   Both procedures then write trace entries to each file handle
  393.   in the list, code{dynT_}.
  394. item The instance procedure
  395.   fcnref{proc[]{up?}}{../ns-2/dynamics.tcl}{Link::up?}
  396.   returns the current value of code{status_}.
  397. end{list}
  398. In addition, the class contains the instance procedure
  399. fcnref{proc[]{all-connectors}}{../ns-2/dynamics.tcl}{Link::all-connectors}.
  400. This procedure takes an operation as argument, and applies
  401. the operation uniformly to all of the class instance variables
  402. that are handles for TclObjects.
  403. paragraph{protectclsref{SimpleLink}{../ns-2/ns-link.tcl}}
  404. The class supports two instance procedures
  405. fcnref{proc[]{dynamic}}{../ns-2/dynamics.tcl}{SimpleLink::dynamic} and
  406. fcnref{proc[]{trace-dynamics}}{../ns-2/dynamics.tcl}{SimpleLink::trace-dynamics}.
  407. We have already described the latter procedure when describing the
  408. proc[]{trace} procedure in the class rtModel.
  409. The instance procedure proc[]{dynamic} inserts a 
  410. href{DynamicLink object}{Section}{sec:links:connectors}
  411. at the head of the queue.
  412. It points the down-target of the object to the 
  413. drop target of the link, code{drpT_}, if the object is defined,
  414. or to the code{nullAgent_} in the simulator.
  415. It also signals each connector in the link that the link is now
  416. dynamic.
  417. Most connectors ignore this signal to be become dynamic;
  418. the exception is code{DelayLink} object.
  419. This object will normally schedule each packet it receives
  420. for reception by the destination node at the appropriate time.
  421. When the link is dynamic, the object will queue each packet 
  422. internally; it schedules only one event for the next packet
  423. that will be delivered, instead of one event per packet normally.
  424. If the link fails, the route model will signal a code{reset},
  425. at which point, the shadow object will execute its
  426. fcnref{reset instproc-like}{../ns-2/dynalink.cc}{DynaLink::command},
  427. and flush all packets in its internal queue.
  428. Additional details about the DelayLink can be found
  429. href{in another chapter}{Chapter}{chap:delays}.
  430. section{Deficencies in the Current Network Dynamics API}
  431. label{sec:deficiencies}
  432. There are a number of deficencies in the current API that should be
  433. changed in the next iteration:
  434. begin{enumerate}
  435. item  There is no way to specify a cluster of nodes or links that
  436. behave in lock-step dynamic synchrony.
  437. item  Node failure should be dealt with as its own mechanism,
  438. rather than a second grade citizen of link failure.
  439. This shows up in a number of situations, such as:
  440. begin{enumerate}
  441. item  The method of emulating node failure as the failure of the
  442. incident links is broken.  Ideally, node failure should cause all
  443. agents incident on the node to be reset.
  444. item  There is no tracing associated with node failure.
  445. end{enumerate}
  446. item  If two distinct route models are applied to two separate links
  447. incident on a common node, and the two links experience a topology change
  448. at the same instant, then the node will be notified more than once.
  449. end{enumerate}
  450. section{Commands at a glance}
  451. label{sec:dynamicscommand}
  452. Following is a list of commands used to simulate dynamic scenarios in ns:
  453. begin{flushleft}
  454. code{$ns_ rtmodel <model> <model-params> <args>}\
  455. This command defines the dynamic model (currently implemented models are:
  456. Deterministic, Exponential, Manual or Trace) to be applied to nodes and
  457. links in the topology. The first two arguments consists of the rtmodel and
  458. the parameter to configure the model. <args> stands for different type of
  459. arguments expected with different dynamic model types. This returns a
  460. handle to a model object corresponding to the specified model. 
  461. begin{itemize}
  462. item In the Deterministic model <model-params> is <start-time>, 
  463. <up-interval>, <down-interval>, <finish-time>. Starting from start-time
  464. the link is made up for up-interval and down for down-interval till
  465. finish-time is reached. The default values for start-time, up-interval,
  466. downinterval are 0.5s, 2.0s, 1.0s respectively. finishtime defaults to the
  467. end of the simulation. The start-time defaults to 0.5s in order to let the
  468. routing protocol computation quiesce. 
  469. item If the Exponential model is used model-params is of the form
  470. <up-interval>, <down-interval> where the link up-time is an exponential
  471. distribution around the mean upinterval and the link down-time is an
  472. exponential distribution around the mean down-interval. Default values for
  473. up-interval and down-interval are 10s and 1s respectively. 
  474. item If the Manual distribution is used model-params is <at> <op> where
  475. at
  476. specifies the time at which the operation op should occur. op is one of
  477. up, down. The Manual distribution could be specified alternately using the
  478. rtmodel-at method described later in the section. 
  479. item If Trace is specified as the model the link/node dynamics is read
  480. from a
  481. Tracefile. The model-params argument would in this case be the file-handle
  482. of the Tracefile that has the dynamics information. The tracefile format
  483. is identical to the trace output generated by the trace-dynamics link
  484. method (see TRACE AND MONITORING METHODS SECTION). 
  485. end{itemize}
  486. code{$ns_ rtmodel-delete <model>}\
  487. This command takes the handle of the routemodel <model> as an argument,
  488. removes  it from the list of rtmodels maintained by simulator and deletes
  489. the model.
  490. code{$ns_ rtmodel-at  <at> <op> <args>}\
  491. This command is a special interface to the Manual model of network dynamics.
  492. It takes the time <at>, type of operation <op> and node or link on which
  493. to apply the operation <args> as the arguments. At time <at>, the operation <op>
  494. which maybe up or down is applied to a node or link.
  495. code{$rtmodel trace <ns> <f> <optional:op>}\
  496. This enables tracing of dynamics effected by this model in the links. <ns>
  497. is an instance of the simulator, <f> the output file to write the traces to
  498. and <op> is an optional argument that may be used to define a type of
  499. operation (like nam). This is a wrapper for the class Link procedure
  500. code{trace-dynamics}.
  501. code{$link trace-dynamics <ns> <f> <optional:op>}\
  502. This is a class link instance procedure that is used to setup tracing of
  503. dynamics in that particular link. The arguments are same as that of class
  504. rtModel's procedure code{trace} described above.
  505. code{$link dynamic}\
  506. This command inserts a DynamicLink object at the head of the queue and signals
  507. to all connectors in the link that the link is now dynamic.
  508. Internal procedures:\
  509. code{$ns_ rtmodel-configure}\
  510. This is an internal procedure that configures all dynamic models that are
  511. present in the list of models maintained by the simulator.
  512. end{flushleft}
  513. endinput
  514. ### Local Variables:
  515. ### mode: latex
  516. ### comment-column: 60
  517. ### backup-by-copying-when-linked: t
  518. ### file-precious-flag: nil
  519. ### End: