12.07.2015 Views

The ns Manual (formerly ns Notes and Documentation)1 - NM Lab at ...

The ns Manual (formerly ns Notes and Documentation)1 - NM Lab at ...

The ns Manual (formerly ns Notes and Documentation)1 - NM Lab at ...

SHOW MORE
SHOW LESS
  • No tags were found...

You also want an ePaper? Increase the reach of your titles

YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.

<strong>The</strong> multi-st<strong>at</strong>e error model implements time-based error st<strong>at</strong>e tra<strong>ns</strong>itio<strong>ns</strong>. Tra<strong>ns</strong>itio<strong>ns</strong> to the next error st<strong>at</strong>e occur <strong>at</strong> the endof the dur<strong>at</strong>ion of the current st<strong>at</strong>e. <strong>The</strong> next error st<strong>at</strong>e is then selected using the tra<strong>ns</strong>ition st<strong>at</strong>e m<strong>at</strong>rix.To cre<strong>at</strong>e a multi-st<strong>at</strong>e error model, the following parameters should be supplied (as defined in <strong>ns</strong>/tcl/lib/<strong>ns</strong>-errmodel.tcl):• st<strong>at</strong>es: an array of st<strong>at</strong>es (error models).• periods: an array of st<strong>at</strong>e dur<strong>at</strong>io<strong>ns</strong>.• tra<strong>ns</strong>: the tra<strong>ns</strong>ition st<strong>at</strong>e model m<strong>at</strong>rix.• tra<strong>ns</strong>unit: one of [pkt|byte|time].• sttype: type of st<strong>at</strong>e tra<strong>ns</strong>itio<strong>ns</strong> to use: either time or pkt.• <strong>ns</strong>t<strong>at</strong>es: number of st<strong>at</strong>es.• start: the start st<strong>at</strong>e.Here is a simple example script to cre<strong>at</strong>e a multi-st<strong>at</strong>e error model:set tmp [new ErrorModel/Uniform 0 pkt]set tmp1 [new ErrorModel/Uniform .9 pkt]set tmp2 [new ErrorModel/Uniform .5 pkt]# Array of st<strong>at</strong>es (error models)set m_st<strong>at</strong>es [list $tmp $tmp1 $tmp2]# Dur<strong>at</strong>io<strong>ns</strong> for each of the st<strong>at</strong>es, tmp, tmp1 <strong>and</strong> tmp2, respectivelyset m_periods [list 0 .0075 .00375]# Tra<strong>ns</strong>ition st<strong>at</strong>e model m<strong>at</strong>rixset m_tra<strong>ns</strong>mx { {0.95 0.05 0}{0 0 1}{1 0 0} }set m_trunit pkt# Use time-based tra<strong>ns</strong>itio<strong>ns</strong>et m_sttype timeset m_<strong>ns</strong>t<strong>at</strong>es 3set m_<strong>ns</strong>tart [lindex $m_st<strong>at</strong>es 0]set em [new ErrorModel/MultiSt<strong>at</strong>e $m_st<strong>at</strong>es $m_periods $m_tra<strong>ns</strong>mx$m_trunit $m_sttype $m_<strong>ns</strong>t<strong>at</strong>es $m_<strong>ns</strong>tart]13.4 Comm<strong>and</strong>s <strong>at</strong> a glance<strong>The</strong> following is a list of error-model rel<strong>at</strong>ed comm<strong>and</strong>s commonly used in simul<strong>at</strong>ion scripts:set em [new ErrorModel]$em unit pkt$em set r<strong>at</strong>e_ 0.02$em ranvar [new R<strong>and</strong>omVariable/Uniform]$em drop-target [new Agent/Null]129

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!