一个简单的ns2实验全过程
实验名称:比较tcp和udp的丢包行为
试验目的:
1. 熟练用ns2做网络仿真试验的整个流程;
2. 练习写tcl脚本,了解怎么应用http和rtp;
3. 练习用awk处理trace数据,了解怎么计算丢包率;
4. 练习用gnuplot绘制曲线图,熟练gnuplot的使用。
实验步骤:
1。确定网络拓扑。
一个简单的三个节点的拓扑,两个运行cbr(const-bitrate)应用的发送结点,一个接收结点。一条链路使用tcp链接,一条链路使用udp连接。如图。
2。写tcl脚本。
|
# jiqing 2007-6-5 set ns [new Simulator] #open a nam trace file #open a trace file #finish procedure #create nodes #create links #set queue size #relayout nodes #set colors #set a tcp connection #set a cbr above tcp connection #set a rtp connection #set a cbr above tcp connection #schedule $ns run |
3。仿真。在命令提示符下输入ns http_vs_rtp.tcl,回车。仿真结束,会调用nam演示动画。
4。用awk处理trace数据。
awk的语法和c很像,不同的是awk中使用变量不用事先声明。一个awk程序的结构如下面所示:
BEGIN{
...
}
{
...
}
END{
...
}
可见,程序分为三块,BEGIN只在程序进入时执行一次,END只在程序退出前执行一次。而中间的程序块会在处理每行数据时都执行一次。
这里用awk计算tcp和udp连接的丢包率,具体程序如下:
|
BEGIN { { if(action == "+" && type == "tcp"){ if(action == "+" && type == "cbr"){ if(action=="r"){ if(type=="cbr"){ time_point[i] = time; END { for(j=0;j < i; i++){ |
awk程序写好后,在命令行下输入awk -f measure_loss.awk > http_rtp.txt,将把printf输出的结果写入http_rtp.txt。参见http_rtp.txt。
|
。。。。。。。 0.91 6.45 0.00 。。。。。。。 |
5。用gnuplot画图。
怎么进入和退出gnuplot?
开启xserver(运行startxwin.bat)后,输入gnuplot,将进入交互式的画图。如果要退出,输入quit。
http_rtp.txt中有三列数据,分别是时间、tcp丢包率、udp丢包率。
怎么控制gnuplot选择其中两列作为x,y轴的数据呢?
plot "filename" using 2将会把第二列作为y轴的数据,第一列默认是x轴的数据。
plot "filename" using 2:3将把第二列作为x轴的数据,第三列作为y轴的数据。
怎么在一张图中绘制多条线?
多个数据源之间用逗号隔开就可以了,如:
plot "filename1" using 2, "filename2" using 2:3, ...
怎么把图输出为图片?
set terminal gif //设置输出格式
set output "http_rtp.gif" //设置输出文件名
replot //输出
怎么为图片增加说明?
set title "title" //设置标题
set xlabel "xlabel" //设置x轴说明
set ylabel "ylabel" //设置y轴说明
实验中遇到的困难及解决办法:
1。问题:不知道怎么使用rtp agent。
解决:找不到关于这方面的资料,先用udp代替。
2。问题:不知道怎么使用http
解决:关于http的使用ns-2手册 39.7web cache一节,可供借鉴。但是建立一个http应用比较麻烦,需要http/server, http/client, http/cache。这里用cbr来代替。
实验结果:
1。当链路带宽设为1mb,tcp和udp速率都为1000时,tcp有丢包现象,udp没有丢包现象,这大概是因为tcp有确认报文,而udp没有的缘故。当把链路带宽都设定为0.9Mb,tcp和udp都有严重的丢包现象。可见虽然tcp有重传机制,但在带宽太低的情况下,仍然会丢包。
2。最终的曲线图说明,tcp的拥塞控制机制发挥了作用,丢包率逐步下降。而udp没有拥塞控制机制,当缓冲队列满后,丢包率迅速上升。
参考文献:
1. The ns Manual.
2. ja2 chung, mark claypool. ns by example.
3. 柯志亨的个人站点:http://140.116.72.80/~smallko/。
一个简单的ns2实验全过程的更多相关文章
- JBPM学习(一):实现一个简单的工作流例子全过程
test.png test.jpdl.xml <?xml version="1.0" encoding="UTF-8"?> <process ...
- 实验---反汇编一个简单的C程序(杨光)
反汇编一个简单的C程序 攥写人:杨光 学号:20135233 ( *原创作品转载请注明出处*) ( 学习课程:<Linux内核分析>MOOC课程http://mooc.study.163 ...
- 使用MongoDB和JSP实现一个简单的购物车系统
目录 1 问题描述 2 解决方案 2.1 实现功能 2.2 最终运行效果图 2.3 系统功能框架示意图 2.4 有关MongoDB简介及系统环境配置 2.5 核心功能代码讲解 ...
- 自己动手写一个简单的MVC框架(第一版)
一.MVC概念回顾 路由(Route).控制器(Controller).行为(Action).模型(Model).视图(View) 用一句简单地话来描述以上关键点: 路由(Route)就相当于一个公司 ...
- 用JS做一个简单的电商产品放大镜功能
使用js制作一个简单的产品放大图 购物网站的产品页经常会放有一个产品展示图区.该图区有一个功能就是产品图的放大功能,移动左侧的焦点区域,可以放大细节部分观看,详情如下图.实现该功能的方法也非常简单. ...
- Linux内核分析—完成一个简单的时间片轮转多道程序内核代码
---恢复内容开始--- 20135125陈智威 原创作品转载请注明出处 <Linux内核分析>MOOC课程http://mooc.study.163.com/course/USTC-10 ...
- [stm32] 一个简单的stm32vet6驱动2.4寸240X320的8位并口tft屏DEMO
书接上文: 最近在研究用低速.低RAM的单片机来驱动小LCD或TFT彩屏实现动画效果 首先我用一个16MHz晶振的m0内核的8位单片机nRF51822尝试驱动一个1.77寸的4线SPI屏(128X16 ...
- Linux内核设计第三周——构造一个简单的Linux系统
Linux内核设计第三周 ——构造一个简单的Linux系统 一.知识点总结 计算机三个法宝: 存储程序计算机 函数调用堆栈 中断 操作系统两把宝剑: 中断上下文的切换 进程上下文的切换 linux内核 ...
- Linux内核分析第三周学习总结:构造一个简单的Linux系统MenuOS
韩玉琪 + 原创作品转载请注明出处 + <Linux内核分析>MOOC课程http://mooc.study.163.com/course/USTC-1000029000 一.Linux内 ...
随机推荐
- FastReport 变量列表使用
使用报表变量时,引用“frxVariables”单元. 变量定义在“TfrxVariable” 类: TfrxVariable = class(TCollectionItem) published p ...
- nginx负载均衡和tomcat热部署简单了解
简单说下几个名词 nginx 它是一个反向代理,实际上就是一台负责转发的代理服务器,貌似充当了真正服务器的功能,但实际上并不是,代理服务器只是充当了转发的作用,并且从真正的服务器那里取得返回的 ...
- C++中的栈内存和堆内存的区别
数据结构中的堆与栈: 栈:是一种连续储存的数据结构,具有先进后出的性质.通常的操作有入栈(圧栈).出栈和栈顶元素.想要读取栈中的某个元素,就要将其之前的所有元素出栈才能完成.类比现实中的箱子一样. 堆 ...
- Python学习笔记day01--Python基础
1 python的应用 Python崇尚优美.清晰.简单,是一个优秀并广泛使用的语言. Python可以应用于众多领域,如:数据分析.组件集成.网络服务.图像处理.数值计算和科学计算等 ...
- 【转载】JSP生成静态Html页面
在网站项目中,为了访问速度加快,为了方便百度爬虫抓取网页的内容,需要把jsp的动态页面转为html静态页面.通常有2种常用的方式: 1.伪静态,使用URL Rewriter 2.纯静态,本文中代码实现 ...
- js浏览器缩放提示
data() { return { instance: null, isZoomOpen: false }; }, mounted() { const that = this; this.isZoom ...
- [BZOJ2244][SDOI2011]拦截导弹 CDQ分治
2244: [SDOI2011]拦截导弹 Time Limit: 30 Sec Memory Limit: 512 MB Special Judge Description 某国为了防御敌国的导弹 ...
- git 复位出现If no other git process is currently running, this probably means a git process crashed in this repo
复位到A节点的时候点了取消(终止),又去复位另外个节点,结果每次不管复位哪个都会报这个错误 fatal: Unable to create 'XXXXXXXXX' : File exists. If ...
- 【刷题】BZOJ 2301 [HAOI2011]Problem b
Description 对于给出的n个询问,每次求有多少个数对(x,y),满足a≤x≤b,c≤y≤d,且gcd(x,y) = k,gcd(x,y)函数为x和y的最大公约数. Input 第一行一个整数 ...
- 读取Maven项目下resources目录下的配置文件(properties为例)
配置文件:xxxxx.properties a.url=******************** b.url=---------------------------------- 读取配置文件: im ...