`

NS by Example 笔记(6)Trace Analysis Example

阅读更多

Trace Analysis Example

 

 

#Create a simulator object
set ns [new Simulator]

#Define different colors for data flows (for NAM)
$ns color 1 Blue
$ns color 2 Red

#Open the NAM trace file
set nf [open out.nam w]
$ns namtrace-all $nf

#Open the Trace file
set tf [open out.tr w]
$ns trace-all $tf

#Define a 'finish' procedure
proc finish {} {
        global ns nf tf
        $ns flush-trace
        #Close the NAM trace file
        close $nf
        #Close the Trace file
        close $tf
        #Execute NAM on the trace file
        exec nam out.nam &
        exit 0
}

#Create four nodes
set n0 [$ns node]
set n1 [$ns node]
set n2 [$ns node]
set n3 [$ns node]

#Create links between the nodes
$ns duplex-link $n0 $n2 2Mb 10ms DropTail
$ns duplex-link $n1 $n2 2Mb 10ms DropTail
$ns duplex-link $n2 $n3 1.7Mb 20ms DropTail

#Set Queue Size of link (n2-n3) to 10
$ns queue-limit $n2 $n3 10

#Give node position (for NAM)
$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

#Monitor the queue for link (n2-n3). (for NAM)
$ns duplex-link-op $n2 $n3 queuePos 0.5


#Setup a TCP connection
set tcp [new Agent/TCP]
$tcp set class_ 2
$ns attach-agent $n0 $tcp
set sink [new Agent/TCPSink]
$ns attach-agent $n3 $sink
$ns connect $tcp $sink
$tcp set fid_ 1

#Setup a FTP over TCP connection
set ftp [new Application/FTP]
$ftp attach-agent $tcp
$ftp set type_ FTP


#Setup a UDP connection
set udp [new Agent/UDP]
$ns attach-agent $n1 $udp
set null [new Agent/Null]
$ns attach-agent $n3 $null
$ns connect $udp $null
$udp set fid_ 2

#Setup a CBR over UDP connection
set cbr [new Application/Traffic/CBR]
$cbr attach-agent $udp
$cbr set type_ CBR
$cbr set packet_size_ 1000
$cbr set rate_ 1mb
$cbr set random_ false


#Schedule events for the CBR and FTP agents
$ns at 0.1 "$cbr start"
$ns at 1.0 "$ftp start"
$ns at 4.0 "$ftp stop"
$ns at 4.5 "$cbr stop"

#Detach tcp and sink agents (not really necessary)
$ns at 4.5 "$ns detach-agent $n0 $tcp ; $ns detach-agent $n3 $sink"

#Call the finish procedure after 5 seconds of simulation time
$ns at 5.0 "finish"

#Print CBR packet size and interval
puts "CBR packet size = [$cbr set packet_size_]"
puts "CBR interval = [$cbr set interval_]"

#Run the simulation
$ns run

 

 

代码演示了如何打开一个追踪文件并写入追踪信息。 代码建立的模拟场景可以参考Figure 4在"Simple Simulation Example"小节中。



 

Example 4. Trace Enabled Simple NS Simulation Script (modified from Example 3)

 

运行上面的脚本会生成一个NAM trace文件被NAM工具用来输入信息和一个名叫"out.tr"的trace 文件用于模拟分析。 Figure 13 说明了trace信息的格式和"out.tr"中trace数据的样例。




 
Figure 13. Trace Format Example

 

每行trace信息以事件描述符(+, -, d, r)开头、 紧接着是事件的模拟时间(秒为单位)、和起始与目的节点,这些用来标明事件是在那个连接上发生的。 "Network Components"小节中的Figure 9说明了在一个连接的哪个地方每个类型的事件被追踪。 flags项之前 (表示为"------")是数据包类型和大小(in Bytes)。 目前, NS只执行Explicit Congestion Notification (ECN 明显拥挤通告位) bit, 并没用到其余的位(remaining bits are not used)。 IPv6的flow id (fid) 可以设置给每个流flow在输入OTcl脚本。即使fid field在模拟中没有用到, 也可以把它用作分析。fid field还在为NAM的显示图像指定stream color时使用。source和destination地址项形式上是"node.port". 下一项表示网络层协议的数据包的序列号。即使UDP不使用seq, NS也保持了对UDP packet sequence number的追踪作为分析目的。最后一项表示数据包unique id。

 

有了模拟追踪的数据后,需要做的就剩下转换感兴趣的数据为容易理解的信息并对他进行分析。 下面是一个数据转换的例子。它使用一个用perl编写的命令叫"column",这个命令把几列数据从输入数据中选出来。 运行这个例子需要下载"column"并使它可执行(i.e. "chmod 755 column")。 然后是tunneled shell command加上awk, 它将计算CBR traffic jitter在接收节点(n3) 使用"out.tr"中的数据, 然后保存结果到"jitter.txt".

 

 

cat out.tr | grep " 2 3 cbr " | grep ^r | column 1 10 | awk '{dif = $2 - old2; if(dif==0) dif = 1; if(dif > 0) {printf("%d\t%f\n", $2, ($1 - old1) / dif); old1 = $1; old2 = $2}}' > jitter.txt

 

 

($1带入了Figure 13 format中的time field的值,$2带入seq field的值,$1带指前面的column 1,$2带指前面的column 10。根据Figure 13的格式从0-11个项,则每行中第1个列column 1是time field,第10个列是seq field)

这个shell command 选中"CBR packet receive"类型为CBR的包在节点n3上, 选中次数(column 1)和sequence number序号 (column 10), 然后为每个序号计算和上一个数据包在接收时间的不同,然后除以2个包在seq上的不同。 下面是相应的振动波图(jitter graph)用 gnuplot 生成。X 轴表示数据包的sequence number,Y 轴表示模拟时间(in seconds.)。




 
Figure 14. CBR Jitter at The Receiving Node (n3)

 

Example Utilities小节将介绍更多的工具。

 

本节演示了在NS中如何生成追踪数据、如何解析数据、并如何得到可用的信息从追踪数据中。这个例子中, 在模拟后post simulation处理在命令行中进行。 下一节将会讲到如何将这些处理也可以被写在OTcl脚本中input。 

 

 

 

 

 

 

 

  • 大小: 3.3 KB
  • 大小: 5.2 KB
  • 大小: 8.8 KB
分享到:
评论

相关推荐

    Trace_analysis.rar_ns2_ns2 trace analysis_trace_trace analysis_t

    这个名为"Trace_analysis.rar_ns2_ns2 trace analysis_trace_trace analysis_t"的压缩包文件显然是针对NS2中的追踪(trace)分析提供的一份资源。追踪分析在NS2中扮演着至关重要的角色,因为它允许研究人员和工程师...

    NS by Example 笔记(12)Add New Queue

    在本篇“NS by Example 笔记(12)Add New Queue”中,我们将探讨如何在计算机网络模拟软件NS-2(Network Simulator 2)中添加新的队列管理器。NS-2是一款广泛用于研究和教学的开源网络模拟工具,它允许用户模拟各种...

    NS by Example 笔记(11)Add New Application and Agent

    标题 "NS by Example 笔记(11)Add New Application and Agent" 提及的是网络模拟器 NS-2(Network Simulator 2)中的一个教程或笔记,重点在于如何添加新的应用程序和代理。在这个过程中,我们将深入理解NS-2的...

    NS by Example

    《NS by Example》是一本专为初学者设计的IT技术图书,主要聚焦于"NS"相关的编程概念和技术。"NS"通常指的是Objective-C中的“Foundation框架”中的“NS”(Namespace)前缀,它代表“Next Step”,是Apple macOS和...

    ns_by_example.rar_ns_ns by example

    《NS by Example》是针对网络仿真工具NS(Network Simulator)的一份详细教程,旨在帮助初学者快速掌握NS的使用方法和技巧。NS是一款强大的开源软件,广泛用于研究计算机网络、移动通信网络以及无线网络的性能分析和...

    ns_example.zip_trace

    在IT行业中,网络模拟是研究和优化网络性能的重要手段,而`ns_example.zip_trace`的标题和描述揭示了我们将在这一话题中探讨如何利用特定工具分析和可视化模拟结果,特别是关注端到端延迟的测量。这里的核心技术是...

    ns_by_example.rar_ns2_ns2 by example_ns2 tcl_ns_by_example_tcl

    《NS2 by Example》是NS2(网络模拟器2)学习者的重要参考资料,尤其适合初学者。这本书通过实例教学的方式,让读者深入理解和掌握NS2的使用,即使对于英语不太熟练的学习者,也能通过实例的详细讲解和分析,逐步...

    NS2下的无线Trace文件分析

    ### NS2下的无线Trace文件分析 #### 一、概述 NS2(Network Simulator 2)是一种广泛应用于网络研究与教学中的开源离散事件驱动的网络模拟器。它可以帮助研究人员及教育工作者通过模拟来评估和测试各种网络协议的...

    ns by Example

    《ns by Example》是一个以实例为主的教程,旨在帮助读者深入理解和掌握ns的相关知识。"ns"通常指的是网络模拟器(Network Simulator),它是一个强大的工具,用于模拟和分析网络行为。在这个教程中,我们将通过一系列...

    NS by example

    ### NS2基础知识与实践指南 ...通过上述介绍,我们不仅了解了NS2的基本结构和使用方法,还学会了如何利用《NS by Example》这一宝贵资源来提升自己的NS2技能。希望每位读者都能从中受益,快速成为NS2的专家级用户。

    Ns_by_example.rar_ns2 by example

    《Ns2 by Example》是一本非常适合初学者的网络模拟软件Ns2的学习指南。Ns2(Network Simulator 2)是一款广泛使用的开源网络模拟器,它允许研究人员和学生在虚拟环境中模拟和分析各种网络协议和拓扑结构。这本书...

    ns2 by example 经典的ns2学习资料

    ns2 by example 经典的ns2学习资料

    NS-2.rar_ns2_trace_trace文件

    6. **NS-2中的类和函数**:NS-2库包含了大量预定义的网络组件,如节点类、链路类、协议类等。学习文档会讲解如何使用和自定义这些类,以及如何调用相关的函数来实现特定的网络功能。 7. **模拟与分析**:除了基本的...

    ns by example

    ### ns2学习:从《ns by example》理解网络模拟器 #### 概览与基础知识 《ns by example》是一份详尽的指南,专为希望深入理解ns2(一种事件驱动的网络模拟器)的初学者设计。不同于繁杂的技术手册,这份资料以...

    ns_by_example.rar_There There_ns2_ns_by_example

    "There There_ns2_ns_by_example"这个压缩包,正如其名,提供了通过实例学习NS2的方法,旨在帮助新手快速上手。 NS2的核心在于它的事件驱动模型,这种模型使得模拟网络中的各种事件(如数据包发送、接收、路由等)...

    NS无线trace分析模板

    关于NS2下的无线trace的分析模板,延时抖动,传输率带宽计算模板

    NS2中Trace命令定义

    NS2 中 Trace 命令的定义和解释 NS2 是一个网络仿真平台,提供了强大的网络仿真功能,Trace 命令是 NS2 中一个重要的跟踪命令,用于记录和跟踪网络仿真过程中的各种事件和信息。本文将详细介绍 NS2 中 Trace 命令的...

Global site tag (gtag.js) - Google Analytics