本例将介绍如何使用一些工具来分析和呈现模拟结果,主要是测量端到端的延迟,而采用的方法一是去分析Trace文件,方法二是去修改NS核心,把所需要测量的数据直接记录下来,限于篇幅我们不在此进一步介绍方法二。模拟场景如图4所示,包含四个节点(n0,n1,n2,n3),假设n0,n2和n1,n2之间链路带宽2Mbps,延迟为10ms;n2和n3之间链路带宽1.7Mbps,延迟为20ms;每个链路用DropTail策略;n2和n3之间链路最大队列长度为10;n0,n3之间有一条建立在TCP上的FTP连接,n1,n3之间有一条建立在UDP上CBR连接;CBR是在0.1秒开始发送,在4.5秒结束,FTP是在1.0秒开始发送,在4.0秒结束。
图4 模拟场景

3.1 建立Otcl模拟代码文件

#创建一个模拟对象
set ns [new Simulator]
#为数据流定义不同的颜色,供NAM用
$ns color 1 Blue
$ns color 2 Red
#打开一个 NAM trace file
set nf [open out.nam w]
$ns namtrace-all $nf
#打开一个 trace file 记录数据包的传送过程
set nd [open out.tr w]
$ns trace-all $nd
#定义一个结束程序
proc finish {} {
global ns nf nd
$ns flush-trace
#关闭 NAM trace file
close $nf
close $nd
#以后台方式执行 NAM
exec nam out.nam &
exit 0
}
#创建四个节点
set n0 [$ns node]
set n1 [$ns node]
set n2 [$ns node]
set n3 [$ns node]
#把节点连接起来
$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
#设定n2和n3之间最大队列长度为10
$ns queue-limit $n2 $n3 10
#设定节点的位置,供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
#设定n2-n3间的队列位置,供NAM用
$ns duplex-link-op $n2 $n3 queuePos 0.5
#建立一条TCP连接
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
#在NAM中,TCP的连接以蓝色表示
$tcp set fid_ 1
#在TCP连接之上建立FTP应用
set ftp [new Application/FTP]
$ftp attach-agent $tcp
$ftp set type_ FTP
#建立一条UDP连接
set udp [new Agent/UDP]
$ns attach-agent $n1 $udp
set null [new Agent/Null]
$ns attach-agent $n3 $null
$ns connect $udp $null
#在NAM中,UDP的连接以红色表示
$udp set fid_ 2
#在UDP连接之上建立CBR应用
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
# 设定FTP和CBR的开始和结束时间
$ns at 0.1 "$cbr start"
$ns at 1.0 "$ftp start"
$ns at 4.0 "$ftp stop"
$ns at 4.5 "$cbr stop"
#在5.0秒调用finish过程结束模拟
$ns at 5.0 "finish"
#执行模拟
$ns run
本例子在FedoraCore4,ns-2.29下测试通过,模拟结束后,产生两个文件,一个是out.nam,这是供NAM用的,用来可视化整个模拟过程;另一个是out.tr,记录了模拟过程中数据包传送中的所有事件,这是我们分析的重点。

3.2 利用awk提取out.tr文件中的数据

awk是一种程序语言,可以使用很短的代码轻易地完成对文本档案做修改、分析、提取和比较等处理。根据Trace文件格式,我们很容易写出测量CBR数据包端到端延迟时间的awk程序delay.awk:
#测量CBR数据包端到端延迟时间
BEGIN {
highest_packet_id = 0;
}
{
action = $1;
time = $2;
from = $3;
to = $4;
type = $5;
pktsize = $6;
flow_id = $8;
src = $9;
dst = $10;
seq_no = $11;
packet_id = $12;
if ( packet_id > highest_packet_id )
highest_packet_id = packet_id;
if ( start_time[packet_id] == 0 )
start_time[packet_id] = time;
if ( flow_id == 2 && action != "d" ) {
if ( action == "r" ) {
end_time[packet_id] = time;
}
} else {
end_time[packet_id] = -1;
}
}                                                              
END {
for ( packet_id = 0; packet_id <= highest_packet_id; packet_id++ ) {
start = start_time[packet_id];
end = end_time[packet_id];
packet_duration = end - start;
if ( start < end ) printf("%f %f\n", start, packet_duration);
}
}
本例执行并把结果重定向到cbr_delay文件中:$awk –f delay.awk out.tr>cbr_delay

3.3 利用Xgraph绘出图形

Xgraph是ns-allinone包中自带的一个小巧的绘图工具,它可以根据数据文件里的数据绘制出相应的图形。本例执行:$xgraph cbr_delay,结果如图5所示:
图5 cbr_delay图
由图可以看出:在一刚开始的时候,由于只有CBR的数据包,所以端到端的延迟是固定的,但在1.0秒后,FTP数据包参与争夺网络资源,因此,端到端的延迟变得不固定,但等到FTP传输结束后,CBR数据包的端到端的延迟又变得固定了。

4 结论

网络模拟日益成为分析、研究、设计和改善网络性能的强大工具,NS-2便是其中功能强大且可以免费得到的一种。本文详细讨论了NS-2的结构、功能及其使用方法,并给出一个实例具体解释 NS-2的使用及使用相关工具对输出结果进行处理。总的来说,NS-2结构复杂,有一个相对陡峭的学习曲线,希望本文对学习NS-2能有所裨益。
参考文献
[1] http://www.isi.edu/nsnam/NS DB.
[2] http://nile.wpi.edu/NS DB.
[3] 刘俊,徐昌彪,隆克平. 基于NS的网络仿真探讨J.计算机应用研究,2002
[4] http://140.116.72.80/~smallko/ns2/ns2.htm DB

转载于:https://blog.51cto.com/lovefly/273236

网络模拟器NS-2及其应用分析相关推荐

  1. ns-3-model-library wifi 浅析_ns-3wifi部分解析_ns-3网络模拟器wifi部分文档分析_Part2

    ns(来源于"network simulator")是一系列离散事件网络模拟器,包括ns-1.ns-2和ns-3.他们主要应用于研究和教学.ns-3是自由软件,以GNU GPLv2 ...

  2. ns-3-model-library wifi 浅析_ns-3wifi部分解析_ns-3网络模拟器wifi部分文档分析_Part1

    ​ns(来源于"network simulator")是一系列离散事件网络模拟器,包括ns-1.ns-2和ns-3.他们主要应用于研究和教学.ns-3是自由软件,以GNU GPLv ...

  3. Fedora 10下应用网络模拟器NS心得

    本文转自 李晨光 51CTO博客,原文链接:http://blog.51cto.com/chenguang/288854,如需转载请自行联系原作者

  4. 使用网络模拟器 Packet Tracer和交换机的端口配置与管理及Telnet远程登陆配置

    实验一 实验名称 使用网络模拟器Packet Tracer 实验目的 1. 掌握安装和配置网络模拟器PacketTracer的方法: 2. 掌握使用PacketTracer模拟网络场景的基本方法,加深 ...

  5. 开源网络模拟器资源统计列表

    这是在Linux或BSD上运行的开源网络模拟器和网络仿真器的列表.请在这个页面发表评论,让我知道我没有包括在这个列表中的任何其他开源网络仿真工具.本文来自http://www.brianlinklet ...

  6. 实验02 使用网络模拟器packet Tracer实验报告

    这个格式可能有点问题,文档下载地址:https://download.csdn.net/download/mariodf/20203327?spm=1001.2014.3001.5503 一.实验名称 ...

  7. 使用网络模拟器packetTracer

    一.实验名称   使用网络模拟器packetTracer 二.实验目的: 1. 掌握安装和配置网络模拟器PacketTracer的方法: 2. 掌握使用PacketTracer模拟网络场景的基本方法, ...

  8. 20145236《网络攻防》Exp4 恶意代码分析

    20145236<网络攻防>Exp4 恶意代码分析 一.基础问题回答 如果在工作中怀疑一台主机上有恶意代码,但只是猜想,所有想监控下系统一天天的到底在干些什么.请设计下你想监控的操作有哪些 ...

  9. 20145328 《网络对抗技术》恶意代码分析

    20145328 <网络对抗技术>恶意代码分析 ------看到这句话说明还没写完-------- 实践内容: 使用schtasks指令监控系统运行 使用sysmon工具监控系统运行 使用 ...

  10. 20155317《网络对抗》Exp4 恶意代码分析

    20155317<网络对抗>Exp4 恶意代码分析 基础问题回答 如果在工作中怀疑一台主机上有恶意代码,但只是猜想,所有想监控下系统一天天的到底在干些什么.请设计下你想监控的操作有哪些,用 ...

最新文章

  1. java程序中日志jar包的使用_java – 如何使用jar文件中的Liquibase changelog
  2. 哈佛大学 NLP 组开源神经机器翻译系统 OpenNMT
  3. react 执行 yarn build 页面无法显示
  4. AK-47 制造商 Kalashnikov 已成功研发 AI 武器 以 AK-47 闻名世界的俄罗斯军火商 Kalashnikov 近日宣布,其已成功研发全自动武器模块,能够利用人工智能技术识别目
  5. uart——51程序
  6. c语言编程实现二叉树的镜像,C/C++知识点之C++实现利用(前序和中序生成二叉树)以及(二叉树的镜像)...
  7. python动态图形_利用matplotlib实现根据实时数据动态更新图形
  8. 云服务器的规格配置该怎么选?
  9. 壳浏览器 android,QQ浏览器2020安卓版
  10. 糊涂图决定开始写博客了
  11. 举个栗子~ Minitab 技巧(1):快速安装和激活 Minitab 统计软件
  12. 腾讯互娱开源分布式开发框架Pebble
  13. Win10 win11 同一个Wifi网络(其实不是) 网络共享找不到对方主机办法
  14. SSH登录 解决 REMOTE HOST IDENTIFICATION HAS CHANGED问题
  15. 苹果考虑推迟发布5G iPhone
  16. 物联网开发笔记(50)- 使用Micropython开发ESP32开发板之控制HC-SR501人体红外感应传感器
  17. java 数字翻译成英文_AcWing 59. 把数字翻译成字符串--Java代码
  18. html单元格分割,html – 拆分td在两个
  19. TexStudio 英文拼写检查 语法检查
  20. 单点登录(一)| LDAP 协议

热门文章

  1. php 字符编码转换
  2. BUAA_OO_第一次作业总结
  3. 关于点击button按钮自动刷新页面导致ajax来不及执行的原因
  4. 2017.10.26-构建之法:现代软件工程-阅读笔记
  5. 【2030】排队打水问题
  6. HTML 标签的 target 属性
  7. VS 2012 No exports were found that match the constraint 解决办法
  8. android---gettag()与settag()的妙用
  9. Linux部署之批量自动安装系统之测试篇
  10. [转]刚成为程序员的你需要什么技能