Reading Notes on NS2(10)
2009-11-18 16:36
387 查看
数据的记录与动画演示
在模拟过程中,数据跟踪和采集的方法有多种,大体可以分为两大类:
(1)模拟的执行过程中直接显示跟踪数据
(2)将采集到的数据直接存放到一个文件中,以便后期的处理和分析(常用)
在NS2中有两种主要不同的数据监视器对象
(1)Trace
该对象详细地记录了模拟的整个过程,包括每一个数据分组到达、离开链路或队列,以及分组被丢弃等信息,并存储于Trace文件中。
(2)Monitor
用来记录各种有用的数值,比如到达、离开链路或队列的数据分组数、字节数等。
[1] Trace的使用
Trace的功能是能够详细地记录模拟过程,同时,用户也可以根据自己的需要记录模拟过程中的任何一个细节。
注意:
(1)NS2提供了各种不同的Trace类型,且都继承于OTcl的Trace类,实现不同的功能。
(2)可以通过Tcl代码查看NS2支持的各种Trace类(P.66)
在Tcl中使用Trace,分为两种情况:
(1)记录整个模拟过程的事件,将所有模拟细节都记录下来。
(2)根据需要记录模拟过程中的某些细节,记录一部分事件。
NS2的Simulator类内部定义了各种过程来支持Trace的使用,具体如下:
(1) $ns trace-all <tracefile>
记录整个模拟过程,将模拟过程的所有数据写入Trace文件中,<tracefile>为Trace文件的文件句柄。
(2) $ns trace-queue <n1> <n2> <optional:file>
记录节点n1和n2间链路的事件,并将相关数据写入名为<file>的Trace文件中,其中<file>为可选项。
(3) $ns flush-trace
清空模拟过程中所有Trace对象的缓冲区。
[2] Trace文件格式
在模拟有线网络时,得到默认的Trace文件的每条记录包含了以下12项:
Event|Time|From node|To node|Pkt Type|Pkt size|Flags|Fid|Src addr|Dst addr|Seq num|Pkt id
(1)Event:发生事件的类型(四种)
+ :分组enqueue事件
- :分组dequeue事件
r :目的节点receive事件
d :队列drop事件
(2)Time:事件发生的时间
(3)From node:发送分组节点的id
(4)To node:接收分组节点的id
(5)Pkt Type:分组类型
(6)Pkt size:分组大小
(7)Flags:标志项
(8)Fid:流标识符
(9)Src addr:源地址,格式为node.port
(10)Dst addr:目的地址,格式为node.port
(11)Seq num:分组的序列号
(12)Pkt id:分组的唯一标识符
[3] Monitor的使用
在NS2中,监测有两种:
(1)队列监测(Queue Monitoring)
(2)流监测(Per-Flow Monitoring)
详见P.69
[4] 动画演示
NS2可以使用Nam工具对整个模拟过程进行动画演示。Nam是基于Tcl/TK的动画演示工具,用来把模拟的过程用可视化的方式呈现出来,从而可以让使用者用“看”的方式去了解封包传送是如何从源端送到接收端。
注意:
(1)使用Nam的第一步是产生一个Nam跟踪文件。
(2)Nam提供3种通用的布局方法
方法1:
在有线网络中,用户可以通过链路的方位确定布局,链路的方位一般用链路和水平线之间的夹角来表示。
这种布局方式适用于小型和手工生成的拓扑。
方法2:
自动布局的方法。
这种方法适用于网络节点较多的情况。
方法3:
x、y坐标方式布局。
这种方式用来进行无线环境的拓扑构造。
(3)设置与节点相关的显示属性
(4)设置与链路相关的显示属性
(5)设置数据流的颜色
(6)在脚本中运行Nam的方法
[5] 相关命令总结
在模拟过程中,数据跟踪和采集的方法有多种,大体可以分为两大类:
(1)模拟的执行过程中直接显示跟踪数据
(2)将采集到的数据直接存放到一个文件中,以便后期的处理和分析(常用)
在NS2中有两种主要不同的数据监视器对象
(1)Trace
该对象详细地记录了模拟的整个过程,包括每一个数据分组到达、离开链路或队列,以及分组被丢弃等信息,并存储于Trace文件中。
(2)Monitor
用来记录各种有用的数值,比如到达、离开链路或队列的数据分组数、字节数等。
[1] Trace的使用
Trace的功能是能够详细地记录模拟过程,同时,用户也可以根据自己的需要记录模拟过程中的任何一个细节。
注意:
(1)NS2提供了各种不同的Trace类型,且都继承于OTcl的Trace类,实现不同的功能。
(2)可以通过Tcl代码查看NS2支持的各种Trace类(P.66)
在Tcl中使用Trace,分为两种情况:
(1)记录整个模拟过程的事件,将所有模拟细节都记录下来。
(2)根据需要记录模拟过程中的某些细节,记录一部分事件。
NS2的Simulator类内部定义了各种过程来支持Trace的使用,具体如下:
(1) $ns trace-all <tracefile>
记录整个模拟过程,将模拟过程的所有数据写入Trace文件中,<tracefile>为Trace文件的文件句柄。
(2) $ns trace-queue <n1> <n2> <optional:file>
记录节点n1和n2间链路的事件,并将相关数据写入名为<file>的Trace文件中,其中<file>为可选项。
(3) $ns flush-trace
清空模拟过程中所有Trace对象的缓冲区。
[2] Trace文件格式
在模拟有线网络时,得到默认的Trace文件的每条记录包含了以下12项:
Event|Time|From node|To node|Pkt Type|Pkt size|Flags|Fid|Src addr|Dst addr|Seq num|Pkt id
(1)Event:发生事件的类型(四种)
+ :分组enqueue事件
- :分组dequeue事件
r :目的节点receive事件
d :队列drop事件
(2)Time:事件发生的时间
(3)From node:发送分组节点的id
(4)To node:接收分组节点的id
(5)Pkt Type:分组类型
(6)Pkt size:分组大小
(7)Flags:标志项
(8)Fid:流标识符
(9)Src addr:源地址,格式为node.port
(10)Dst addr:目的地址,格式为node.port
(11)Seq num:分组的序列号
(12)Pkt id:分组的唯一标识符
[3] Monitor的使用
在NS2中,监测有两种:
(1)队列监测(Queue Monitoring)
(2)流监测(Per-Flow Monitoring)
详见P.69
[4] 动画演示
NS2可以使用Nam工具对整个模拟过程进行动画演示。Nam是基于Tcl/TK的动画演示工具,用来把模拟的过程用可视化的方式呈现出来,从而可以让使用者用“看”的方式去了解封包传送是如何从源端送到接收端。
注意:
(1)使用Nam的第一步是产生一个Nam跟踪文件。
#打开一个Nam跟踪文件(如果不存在,则自动创建),并将该文件的句柄赋给变量 #Open the NAM trace file set nf [open out.nam w] $ns namtrace-all $nf ;#将所有与动画演示相关的数据存入跟踪文件中
(2)Nam提供3种通用的布局方法
方法1:
在有线网络中,用户可以通过链路的方位确定布局,链路的方位一般用链路和水平线之间的夹角来表示。
这种布局方式适用于小型和手工生成的拓扑。
#Give node position (for NAM) #总共有8个方向 $ns duplex-link-op $n0 $n2 orient right-down $ns duplex-link-op $n1 $n2 orient right-up $ns duplex-link-op $n2 $n3 orient right
方法2:
自动布局的方法。
这种方法适用于网络节点较多的情况。
方法3:
x、y坐标方式布局。
这种方式用来进行无线环境的拓扑构造。
(3)设置与节点相关的显示属性
$node <attribute> <value> 例如: $node color red ;#设定该节点的颜色为红色 $node shape hexagon ;#设定该节点的形状为六边形 $node label "my text" ;#设定节点标签 $node label-color blue ;#设定标签字体颜色 $node label-at up ;#设定标签的位置
(4)设置与链路相关的显示属性
$ns duplex-link-op <attribute> <value> 例如: $ns duplex-link-op $n1 $n2 color green ;#设定节点n1和n2之间链路的显示颜色 $ns duplex-link-op queuePos right ;#设定监控队列的显示位置 $ns duplex-link-op $n1 $n2 label "my text" ;#设定链路标签 $ns duplex-link-op $n1 $n2 label-color blue ;#设定链路标签颜色 $ns duplex-link-op $n1 $n2 label-at down ;#设定链路标签位置
(5)设置数据流的颜色
$ns color $n blue ;#变量$n为颜色的标识 $agent set fid_ $n ;#相应的流标记设定为$n 例如: #Define different colors for data flows (for NAM) $ns color 1 Blue $ns color 2 Red $tcp set fid_ 1 $udp set fid_ 2
(6)在脚本中运行Nam的方法
exec nam $namfile 例如: #Execute NAM on the trace file exec nam out.nam &
[5] 相关命令总结
$ns trace-all <tracefile> $ns flush-trace $ns trace-queue <n1> <n2> <optional:file> $ns namtrace-all $namfile $node <attribute> <value> $ns duplex-link-op <attribute> <value>
相关文章推荐
- Reading Notes on NS2(3)
- Reading Notes on NS2(5)
- Reading Notes on NS2(1)
- Reading Notes on NS2(4)
- Reading Notes on NS2(6)
- Reading Notes on NS2(7)
- Reading Notes on NS2(8)
- Reading Notes on NS2(11)
- Reading Notes on NS2(2)
- Reading Notes on NS2(9)
- Reading Notes on NS2(12)
- Reading Notes on NS2(8)
- Reading Notes on NS2(13)
- General issues in using variables -- Code complete reading notes(10)
- Reading notes about Generic Time Subsystem implementation on linux
- Reading notes on <The Art of Unix Programming>(1)
- Reading Notes on《Code Complete 2nd》
- mdss 8x26/8x74 display debug and reading notes(vsync, interface and so on)
- Reading Notes on "Dive Into Python"
- Reading Notes on Linkers & Loaders