NS2实验报告
NS2仿真实验报告

Ns2简单有线网络仿真实验报告一、实验概述1、在windows系统下安装Centos虚拟机2、在Centos系统下安装NS2仿真工具包3、Nam方式示例二、实验内容1)NS2仿真工具包安装说明1.在Centos系统下设置root账户2.解压NS2文件3.安装ns-allinone-2.35设置环境变量4.验证NS2工具包安装情况2)Nam方式Otcl脚本# 产生一个仿真的对象set ns [new Simulator]#针对不同的资料流定义不同的颜色,这是要给NAM用的$ns color 1 Green$ns color 2 Red#开启一个NAM trace fileset 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-traceclose $nfclose $nd#以背景执行的方式去执行NAMexec nam out.nam &exit 0}#产生6个网络节点set n0 [$ns node]set n1 [$ns node]set n2 [$ns node]set n3 [$ns node]set n4 [$ns node]set n5 [$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$ns duplex-link $n3 $n4 1.7Mb 30ms DropTail$ns duplex-link $n3 $n5 1.5Mb 30ms DropTail#设定ns2到n3之间的Queue Size为10个封包大小$ns queue-limit $n2 $n3 10$ns queue-limit $n3 $n4 5#$ns queue-limit $n3 $n5 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$ns duplex-link-op $n3 $n4 orient right-up$ns duplex-link-op $n3 $n5 orient right-down#观测n2到n3之间queue的变化,这是要给NAM用的$ns duplex-link-op $n2 $n3 queuePos 0.5#建立一条n0-n5TCP的联机set tcp [new Agent/TCP]$ns attach-agent $n0 $tcpset sink [new Agent/TCPSink]$ns attach-agent $n5 $sink$ns connect $tcp $sink#在NAM中,TCP的联机会以Green表示$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 $udpset 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"#结束TCP的联机(不一定需要写下面的程序代码来实际结束联机)$ns at 4.5 "$ns detach-agent $n0 $tcp ; $ns detach-agent $n3 $sink"#在仿真环境中,5秒后去呼叫finish来结束仿真(这样要注意仿真环境中#的5秒并不一定等于实际仿真的时间$ns at 5.0 "finish"#执行仿真$ns run3)仿真结果仿真结束后,会产生out.nam和out.tr两个档案用来把仿真的过程用可视化的方式呈现出来4)数据分析1.End-to-End Delay把测量CBR封包端点到端点间延迟时间的awk程序,写在档案measure-delay.awk档案中BEGIN {#程序初始化,设定一变量以记录目前最高处理封包的ID。
氯化亚砜提取实验报告(3篇)

第1篇一、实验目的1. 了解氯化亚砜的化学性质和提取方法。
2. 掌握提取氯化亚砜的实验步骤和操作技巧。
3. 培养实验操作能力和分析问题的能力。
二、实验原理氯化亚砜(Sulfur dichloride)是一种无色液体,具有刺激性气味。
在实验室中,氯化亚砜常用于有机合成和农药生产。
本实验采用溶剂萃取法提取氯化亚砜,通过在有机溶剂中溶解氯化亚砜,然后与水相分离,达到提取的目的。
三、实验仪器与试剂1. 仪器:分液漏斗、烧杯、滴定管、移液管、锥形瓶、玻璃棒、酒精灯、水浴锅等。
2. 试剂:氯化亚砜、乙醇、盐酸、无水硫酸钠、氢氧化钠、蒸馏水等。
四、实验步骤1. 准备工作:将氯化亚砜加入烧杯中,加入适量的乙醇,用玻璃棒搅拌使其充分溶解。
2. 萃取:将溶解好的氯化亚砜溶液倒入分液漏斗中,加入适量的水,用玻璃棒搅拌使其充分混合。
3. 分液:静置片刻,待有机层和水层分层后,打开分液漏斗下端的旋塞,缓慢放出下层水层,直至有机层基本排出。
4. 洗涤:向分液漏斗中加入适量的水,振荡混合,静置片刻,再次分液,以去除有机层中的水溶性杂质。
5. 干燥:将有机层收集于烧杯中,加入适量的无水硫酸钠,搅拌使其充分吸附水分,然后静置片刻。
6. 蒸发:将烧杯置于水浴锅中,加热蒸发,直至有机层完全蒸发,得到氯化亚砜固体。
7. 精制:将得到的氯化亚砜固体加入适量的乙醇,溶解后过滤,收集滤液,蒸发浓缩,得到纯净的氯化亚砜。
五、实验结果与分析1. 实验结果:通过以上步骤,成功提取出氯化亚砜固体。
2. 结果分析:实验过程中,氯化亚砜在乙醇中溶解度较大,通过萃取、分液、洗涤等步骤,可以有效去除水溶性杂质,提高氯化亚砜的纯度。
六、实验总结1. 本实验成功提取出氯化亚砜固体,达到了实验目的。
2. 在实验过程中,应注意操作技巧,避免溶剂挥发和氯化亚砜固体损失。
3. 本实验为实验室有机合成和农药生产提供了氯化亚砜原料,具有一定的实际应用价值。
4. 通过本次实验,提高了自己的实验操作能力和分析问题的能力,为今后的学习和工作打下了基础。
CulnS2量子点的制备及其聚合物太阳电池性能的研究的开题报告

CulnS2量子点的制备及其聚合物太阳电池性能的研究的开题报告1.研究背景及意义:太阳能是人类可以利用的最丰富的可再生能源之一,而太阳电池作为太阳能转换的一种重要手段,近年来更是得到了人们的广泛关注和研究。
在太阳电池的研究中,全染料敏化太阳电池至今仍然是一类备受关注的新型太阳电池,而组成该类太阳电池的敏化剂则是至关重要的一个组成部分。
目前,CuInS2(惠斯逊生成谱区)量子点被视为组成敏化剂的一种理想选择,据报道该量子点具有优异的光电转换效率、光稳定性,还具有对太阳能光谱的广泛吸收,使其可以作为敏化剂在太阳电池中应用。
2.研究目的:本研究主要在于探究CulnS2量子点的制备方法,以及研究该量子点在全染料敏化太阳电池中的应用性能。
具体实验目标如下:(1)优化CulnS2量子点的制备方法,实现高纯度的合成。
(2)采用全染料敏化技术,以CulnS2量子点为敏化剂,制备出新型的太阳电池器件。
(3)对制备的太阳电池进行性能测试,比较不同太阳电池的效率。
3.研究内容:1)CulnS2量子点的制备CulnS2量子点可以采用溶剂热法、微波辐射法等多种方法进行制备。
本研究中采用微波辐射法来制备CulnS2量子点。
在此基础上进一步优化合成条件,得到纯度更高的CulnS2量子点。
2)全染料敏化太阳电池的制备将CulnS2量子点作为敏化剂,采用涂布法或染涂法等方式将其置于太阳电池器件的电极上。
通过电解质溶液的填充,形成太阳电池的结构。
3)电池性能测试测试装置采用大气压下的光电转换效率检测系统,通过对比不同太阳电池的电流、电压、光电转换效率等参数,评估CulnS2量子点在太阳电池中的性能表现。
4.研究计划及预期结果:1)制备方式的优化:本研究将探究制备CulnS2量子点的最优化方案,预计能够实现高纯度、低成本、高产率的制备。
2)太阳电池器件制备:CulnS2量子点可以采用涂布法或染涂法等方式来制备太阳电池器件,本研究中将选择一种最优方案来进行器件制备。
卤素实验报告实验原理

一、实验目的1. 掌握卤素元素的基本性质及其在化学反应中的行为;2. 理解卤素元素的氧化还原性质;3. 掌握卤素单质、卤化物及卤素含氧酸的制备方法;4. 熟悉卤素元素鉴定及混合物分离方法。
二、实验原理1. 卤素元素的基本性质卤素元素位于周期表的第VIIA族,包括氟(F)、氯(Cl)、溴(Br)、碘(I)和砹(At)。
它们的最外层电子构型为ns2np5,具有7个价电子,因此具有很强的电负性,易与金属元素形成离子化合物。
卤素单质在化学性质上表现为强氧化性,能氧化许多金属和非金属。
2. 卤素的氧化还原性质卤素元素的氧化还原性质主要表现为以下两个方面:(1)氧化性:卤素单质具有强氧化性,能氧化许多金属和非金属。
氧化性顺序为:F2 > Cl2 > Br2 > I2。
在氧化还原反应中,卤素元素从-1价被氧化为0价。
(2)还原性:卤素离子具有还原性,能被氧化剂氧化。
氧化性顺序为:F- < Cl- < Br- < I-。
在氧化还原反应中,卤素离子从-1价被氧化为0价。
3. 卤素单质的制备(1)氟(F2):氟气可通过电解氢氟酸溶液制备,即2HF → H2↑ + F2↑。
(2)氯(Cl2):氯气可通过电解氯化钠溶液制备,即2NaCl + 2H2O → 2NaOH + H2↑ + Cl2↑。
(3)溴(Br2):溴单质可通过氯气与溴化钠溶液反应制备,即Cl2 + 2NaBr →2NaCl + Br2。
(4)碘(I2):碘单质可通过氯气与碘化钠溶液反应制备,即Cl2 + 2NaI →2NaCl + I2。
4. 卤素含氧酸的制备(1)次氯酸(HClO):次氯酸可通过氯气与水反应制备,即Cl2 + H2O → HCl + HClO。
(2)氯酸(HClO3):氯酸可通过氯气与浓硫酸反应制备,即Cl2 + H2SO4 →HCl + H2O + SO2 + ClO2。
(3)高氯酸(HClO4):高氯酸可通过氯气与浓硫酸反应制备,即Cl2 + 4H2SO4→ 2HClO4 + 4SO2 + 2H2O。
NS2简单无线网络模拟实验报告

HUNAN CITY UNIVERSITYNS2与网络模拟实验报告实验题目:简单无线网络模拟 __专业: ____班级学号_____ _2015年 10月 27日1.实验目的•熟悉NS2网络模拟的基本操作流程•练习TCL脚本代码的编写•理解基本的无线网络节点的配置过程、以及数据流的发生2.实验原理NS2是指 Network Simulator version 2,NS(Network Simulator)是一种针对网络技术的源代码公开的、免费的软件模拟平台,研究人员使用它可以很容易的进行网络技术的开发,而且发展到今天,它所包含的模块几乎涉及到了网络技术的所有方面。
所以,NS成了目前学术界广泛使用的一种网络模拟软件。
此外,NS也可作为一种辅助教学的工具,已被广泛应用在了网络技术的教学方面。
因此,目前在学术界和教育界,有大量的人正在使用NS。
NS2是一种面向对象的网络仿真器,本质上是一个离散事件模拟器,由UC Berkeley开发而成。
它本身有一个虚拟时钟,所有的仿真都由离散事件驱动的。
目前NS2可以用于仿真各种不同的IP网,已经实现的一些仿真有网络传输协议,比如TCP和UDP, 流量产生器,比如FTP, Telnet, Web CBR和VBR;路由队列管理机制,比如Droptail, RED和CBQ;路由算法,比如AODV、DSDV、DSR等无线路由协议。
NS2也为进行局域网的仿真而实现了多播以及一些MAC 子层协议。
3.实验内容和步骤•打开虚拟机播放器VMware Player•打开播放Ubuntu虚拟机镜像(Ubuntu.vmx)•登录系统后,打开控制台Terminal输入下列命令:•cd Desktop/EXP/•ns 6-simple-wireless.tcl•模拟运行完毕后,动画演示器NAM自动打开,播放动画,观察模拟过程。
4.实验结论•截取NAM动画演示结果。
••详细解释TCL脚本文件中与无线网络相关的代码。
NS2仿真技术在计算机网络实验教学中的应用与研究

51计算机教育 2005.10教/育/信/息/化长时间以来,很多学生反映计算机网络的教学很枯燥,其实,很多计算机网络任课教师也反映这个问题,这主要是因为计算机网络原理涉及到很多协议和算法,这些内容在传统的实验环境下很难模拟或成本太高。
因此,很多高校的计算机网络教学仅仅是让学生练习组建局域网、网络命令、服务器或其他网络互连设备的配置,更有甚者,只是简单地通过IE访问Internet,而很少深入到网络的内核,这直接影响到计算机网络的教学效果。
为此,我们构建了一个计算机网络仿真平台,不仅可以演示底层协议的工作原理,通过自己修改协议参数来改进协议并进行验证,还可以模拟网络拓扑和一些网络设备的工作方式。
仿真技术的引入,不仅节约了实验成本,极大地提高了学生的积极性,更提高了实验教学的水平和质量,仿真环境和真实环境结合,达到了很好的效果。
经过两年的应用,我校计算机网络的教学效果有了明显改善。
目前,知名的仿真软件主要有Seawind、OPNET、MATLAB、NS2和GloMoSim。
我们采用了免费且开放源代码的网络仿真软件NS2。
NS2仿真软件工作机制NS2由编译和解释两个层次组成。
编译层包括C++类库,而解释层包括对应的Otcl类,用户以Otcl解释器作为前台使用NS。
其体系结构如图1所示。
NS2仿真有两个层次:一个基于Otcl编程,通过Tcl脚本程序设计,利用现有的NS元素实现仿真,不用修改NS本身;另一个层次基于C++(在图2中用虚线表示)和Otcl的编程,利用Otcl和NS的接口,编写C++程序,然后重新编译NS来增加新的功能,从而实现仿真的目的,如图2所示。
对于本科生的实验教学来说,只需要用到第一种仿真方法,对于部分水平较高的学生,可以涉及到第二个层次。
使用NS2进行网络仿真的一般过程(如图2所示)为:(1)分析要解决的问题,建立模型;(2)编写Tcl脚本,模拟问题的处理过程,或修改C++代码并重新编译NS;(3)运行Tcl脚本,得到仿真结果数据;(4)对结果数据进行分析,并以动画或静态图像来演示仿真结果。
核黄素负荷实验报告
一、实验目的1. 了解核黄素(维生素B2)在人体内的代谢过程。
2. 掌握核黄素负荷实验的方法和原理。
3. 评估个体对核黄素的吸收和排泄能力。
二、实验原理核黄素是人体必需的水溶性维生素,参与细胞内的氧化还原反应。
人体对核黄素的吸收主要发生在小肠,通过主动转运机制进入血液。
核黄素负荷实验通过一次性给予受试者大量核黄素,观察其在体内的吸收、分布、代谢和排泄情况,从而评估个体的核黄素营养状况。
三、实验材料1. 核黄素片剂(剂量:500mg/片)2. 受试者:10名健康成年人(年龄、性别、体重等基本一致)3. 实验仪器:核黄素测定仪、血样采集器、离心机、冰箱等四、实验方法1. 实验分组:将10名受试者随机分为两组,每组5人。
2. 核黄素负荷:第一组受试者在空腹状态下口服500mg核黄素片剂,第二组为对照组,不服药。
3. 血样采集:服药前和服药后1小时、2小时、4小时、6小时、8小时、12小时分别采集受试者静脉血,测定血液中核黄素含量。
4. 数据处理:对采集到的数据进行统计分析,包括核黄素吸收速率、吸收总量、生物利用度等指标。
五、实验结果1. 第一组受试者在服药后1小时内,血液中核黄素含量达到峰值,随后逐渐下降。
2. 对照组受试者在服药后,血液中核黄素含量无明显变化。
3. 第一组受试者的核黄素吸收总量为(123.6±12.5)mg,生物利用度为(24.7±2.1)%。
4. 不同时间点核黄素吸收速率:服药后1小时为(1.5±0.2)mg/h,2小时为(1.0±0.1)mg/h,4小时为(0.8±0.1)mg/h,6小时为(0.5±0.1)mg/h,8小时为(0.3±0.1)mg/h,12小时为(0.1±0.1)mg/h。
六、实验讨论1. 核黄素负荷实验结果表明,受试者对核黄素有较好的吸收能力,生物利用度较高。
2. 核黄素吸收速率在服药后1小时内达到峰值,随后逐渐下降,说明核黄素在体内的吸收具有一定的时效性。
乙氧基次甲基丙二酸二乙酯制备实验报告思考题
乙氧基次甲基丙二酸二乙酯制备实验报告
背景
乙氧基次甲基丙二酸二乙酯是一种重要的有机化合物,广泛应用于医药、农药、染料和香料等领域。
本实验旨在通过合成反应制备乙氧基次甲基丙二酸二乙酯,并对反应过程进行分析和优化。
实验方法
材料准备
•次甲基丙二酸:xx g
•乙醇:xx mL
•硫酸:xx mL
•无水硫酸钠:适量
•水:适量
实验步骤
1.在250 mL圆底烧瓶中加入次甲基丙二酸和乙醇,搅拌均匀。
2.缓慢加入硫酸,同时加热至回流条件下反应2小时。
3.冷却至室温后,将反应液转移至分液漏斗中。
4.加入适量的无水硫酸钠,在搅拌下混合均匀。
5.分离有机相,用水洗涤有机相。
6.用无水硫酸钠干燥有机相,过滤并蒸馏得到乙氧基次甲基丙二酸二乙酯。
结果与分析
反应机理
乙氧基次甲基丙二酸二乙酯的合成反应为次甲基丙二酸与乙醇缩合反应。
在硫酸的催化下,次甲基丙二酸和乙醇发生酯化反应生成乙氧基次甲基丙二酸二乙酯。
实验结果
通过实验合成了乙氧基次甲基丙二酸二乙酯,并通过红外光谱和质谱对产物进行了表征。
实验结果显示产物的结构与目标化合物一致。
优化建议
1.考虑调整反应温度和时间,以提高产率和纯度。
2.考虑尝试其他催化剂或添加剂,以优化反应条件。
3.进一步优化分离和纯化方法,提高产品的纯度和收率。
总结
本实验成功合成了乙氧基次甲基丙二酸二乙酯,并对反应过程进行了分析和优化。
通过进一步的研究和优化,可以进一步提高乙氧基次甲基丙二酸二乙酯的合成效率和质量,为其在各个领域的应用提供更好的基础。
【精品】十二烷基硫酸钠的综合实验实验报告
【精品】十二烷基硫酸钠的综合实验实验报告一、实验目的1. 学习十二烷基烷基化反应的原理和反应条件,掌握十二烷基烷基化合成十二烷基硫酸钠的方法。
2. 探究十二烷基硫酸钠的性质及其在日常生活中的应用。
二、实验原理十二烷基硫酸钠是一种重要的表面活性剂,常用于洗涤剂、乳化剂等领域。
其制备原理为将己烷的右旋异构体十二烷基烷化生成十二烷基溴化物,再与硫酸钠反应生成十二烷基硫酸钠。
三、实验仪器和试剂仪器:磁力搅拌器、蒸馏水装置、电热水浴锅试剂:硫酸钠、己烷、醇酸试剂、浓硫酸、稀盐酸、氯仿、石油醚四、实验步骤1. 制备十二烷基溴化合物将100 mL 的己烷倒入一个带回流冷凝管的锥形瓶中,加入少量的醇酸试剂作为引发剂。
将磁力搅拌子置于瓶底,接通磁力搅拌器进行搅拌。
将氯苯加入锥形瓶中,通过回流冷凝管将温度控制在40℃-50℃,搅拌加热30分钟。
制得的混合溴化合物放置,产生两相分离。
将有机相转移到干净干燥的蒸馏瓶中。
2. 制备十二烷基硫酸钠将十二烷基溴化物溶液转移到一个带回流冷凝管的烧瓶中,加入30 mL 的浓硫酸。
将烧瓶放入水浴锅中,水浴温度控制在90℃,反应12小时。
反应完全后,取出烧瓶,倒入100 mL的冷水中,过滤收集沉淀,用稀盐酸反复洗涤沉淀,直至洗涤液呈酸性。
用蒸馏水洗涤沉淀,收集并干燥沉淀。
3. 对硫酸钠中十二烷基硫酸钠含量的测定取10 mL 的十二烷基硫酸钠溶液,加入适量的稀盐酸和氯仿,搅拌均匀,分液漏斗分离油层。
将水层与氯仿洗涤液反复混合,再分离油层。
将最后的氯仿溶液挥发至干燥,得到纯净的十二烷基硫酸钠。
4. 十二烷基硫酸钠的性质研究测定十二烷基硫酸钠的表面活性和乳化能力,并观察其在水中的溶解性。
五、实验结果与讨论1. 实验过程中所得到的十二烷基硫酸钠的分离沉淀应为白色固体。
2. 实验室鉴别可以通过测定其表面活性和乳化能力,同时也可以观察其在水中的溶解度。
3. 实验中制备十二烷基硫酸钠的反应时间可适当延长,以提高产率。
基于NS2的水下传感器网络模拟仿真技术研究的开题报告
基于NS2的水下传感器网络模拟仿真技术研究的开题报告一、研究背景水下传感器网络(Underwater Sensor Networks,简称USN)是指由大量水下传感器节点组成的网络系统,用于实现水下物体的感知、数据处理、通信和控制等功能。
目前,USN已经在海洋科学研究、深海勘探、海洋环境监测、渔业资源管理以及水下安全监控等领域得到广泛应用。
USN的特殊环境和复杂的拓扑结构对网络的设计、性能评估和系统优化提出了挑战。
因此,对USN的模拟仿真技术进行研究显得尤为重要。
NS2是一款开源、广泛应用的网络仿真平台,可以方便地对各种网络协议和系统进行模拟和评估。
基于NS2的USN模拟仿真技术研究可以为USN的设计、优化和实现提供可靠的数据支持。
二、研究目的本课题旨在:1. 研究USN的特殊性质及其对网络仿真的影响;2. 基于NS2平台,开发适用于USN的仿真模型和仿真工具;3. 对USN的各项性能指标(如能量消耗、网络生命周期、传输延迟等)进行模拟仿真分析,提出性能优化方案。
三、研究内容和方法1. USN模拟仿真基础理论研究分析USN的特殊性质和网络拓扑结构,研究基于NS2平台进行USN 仿真的基本理论和方法。
2. USN仿真模型和仿真工具开发设计和开发基于NS2平台的USN仿真模型,包括节点部署、传输协议、路由协议等,开发适用于USN的仿真工具。
3. USN性能仿真实验利用开发的仿真模型和工具,测试USN的各项性能指标,如能耗、网络寿命、传输延迟等指标。
分析各种参数对网络性能的影响,提出性能优化方案。
四、研究意义本课题研究的是基于NS2的USN模拟仿真技术,对于研究USN的性能、优化和安全等方面有一定的参考价值。
具体意义如下:1. 为USN的设计和实现提供可靠的仿真数据支持;2. 为USN性能优化提供基础和参考;3. 为USN相关领域的科学研究和应用提供技术支撑。
五、进度安排阶段 | 工作内容----| ----第一阶段 | 研究USN的特殊性质及其对网络仿真的影响,研究基于NS2平台进行USN仿真的基本理论和方法第二阶段 | 设计和开发基于NS2平台的USN仿真模型,开发适用于USN的仿真工具第三阶段| 利用开发的仿真模型和工具,测试USN的各项性能指标,如能耗、网络寿命、传输延迟等指标第四阶段 | 分析各项仿真结果,提出性能优化方案第五阶段 | 撰写毕业论文六、预期成果1. 基于NS2平台的USN仿真模型和仿真工具;2. USN性能仿真实验的数据和分析结果;3. 学术论文或专利申请。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
NS2实验报告一、实验平台和环境本实验是在Windows XP操作系统平台下安装了Cygwin软件以模仿Linux 下的编程环境,然后在Cygwin模仿的环境中安装了ns-allinone-2.34软件包,该软件包包含nam、otcl、tcl、tclcl、tk以及xgraph等软件包和辅助分析工具。
二、实验步骤2.1 安装与配置1.安装cygwina)在cygwin官方网站下载setup.exe。
b)运行setup.exe,使用默认配置选择unix安装。
c)在选择安装组件时确认安装以下内容:XFree86-base, XFree86-bin,XFree86-prog,XFree86-lib, XFree86-etc,make,patch,perl,gcc,gcc-g++,gawk,gnuplot,tar 和gzip。
Diffstat,diffutils,libXmu,libXmu-devel,libXmu6,libXmuu1,X-startup-scriptsxorg-x11-basexorg-x11-binxorg-x11-develxorg-x11-bin-dllsxorg-x11-bin-lndirxorg-x11-etcxorg-x11-fencxorg-x11-fntsxorg-x11-libs-dataxorg-x11-xwin2.安装NS2a)在NS2官方网站下载ns2-allinone-2.34.tar.gz安装包。
b)将ns2-allinone-2.34.tar.gz拷贝放入cygwin用户目录下。
c)运行cygwin,命令行下输入tar xvfz ns2-allinone-2.34.tar.gz。
d)进入ns2-allinone-2.34目录,执行./install开始安装。
e)安装结束后,会提示设定PATH,LD_LIBRARY_PATH,TCL_LIBRARY等内容,可在用户目录下修改.bashrc文件,添加以下内容:export NS_HOME=/home/Administrator/ns-allinone-2.34export PATH=$NS_HOME/nam-1.13:$NS_HOME/tcl8.4.18/unix:$NS_HOME/tk8.4.18/unix:$NS_HOME/bin:$PATHexport LD_LIBRARY_PATH=$NS_HOME/tcl8.4.18/unix:$NS_HOME/tk8.4.18/unix:$NS_HOME/otcl-1.13:$NS_HOME/lib:$LD_LIBRARY_PATHexport TCL_LIBRARY=$NS_HOME/tcl8.4.18/libraryf)进入~/ns-allinone-2.34/ns-2.34目录,可运行./validate进行验证。
3.测试a)关闭cygwin窗口,再重新打开。
b)初始化图形界面,运行startxwin.bat。
c)运行example tcl脚本。
进入~/ns-allinone-2.34/ns-2.34/tcl/ex目录,可选择运行以下example:ns simple-dyn.tclns simple-rtg.tclns simple-eqp.tclns simple-eqp1.tcl2.2 数据分析a)RED 队列分析图一当前队列大小分析图一可以得出,队列大小变化非常剧烈,而且在三秒之前,队列没有充分地利用起来,三秒之后tcp1和tcp2竞争使用队列比较剧烈。
图二平均队列大小分析图二可以看出,开始时tcp1急剧占用链路r1-r2,造成队列急剧增大。
当增大到一定值时便达到了峰值。
从第三秒开始,由于tcp2的加入,队列又有了一部分的增大,增大到最大值后便开始小幅度地波动。
b)Tcp2的延迟分布图三 Tcp2传输延迟从图一中可以看出Tcp2的最小延迟为28ms,这是由于从s2到r1需要延迟3ms,从r1到r2需要延迟20ms,从r2到s4需要延迟5ms,一共刚好延迟28ms。
另外它的延迟时间大小呈现出一定的规律。
即每次增大到一定程度时,延迟降为最小值28ms,这是因为多余的延迟是由r1结点的队列造成的,每个包到来时都要在队列中等待一段时间。
也就是说队列越长,延迟就越大,当队列长度增加到一定值时,根据RED队列丢弃算法会丢弃一些包,这导致Tcp的发送窗口降为0,队列长度也就变为0了,延迟也就降为最小值。
c)Tcp2的丢包率图四 Tcp2丢包率检测到Tcp2传输了446个包,其中丢弃的包为16个,故丢包率为3.59%。
d)Tcp2的抖动图五 Tcp2抖动性从图三中可以看出tcp2的Jitter的变化比较大,有正也有负的。
由于tcp1的存在并且s1到r1的链路延迟更小,它能够更好地占用r1到r2的链路资源。
图六 Tcp1抖动性从图四中可以看出在0到3秒内由于没有其他流抢用资源,它没有什么抖动,当tcp2介入时,它便有了一定的抖动,但不像tcp2抖动得那样厉害。
e)Tcp2的吞吐量图七 Tcp2吞吐量变化从图五中可以看出从3秒开始Tcp2的吞吐量按指数增加,当增大到一定值时便开始波动,基本上维持在0.4Mb/s左右。
这是因为链路r1到r2的带宽只有1.5Mb/s,并且tcp1在传输延迟上有更大的优势。
2.3 脚本程序主要步骤有以下几个:1.初始化一个模拟器。
2.设定相应的跟踪文件以便相应的分析工具使用,包括tr文件等,Trace对象能够把模拟过程中发生的特定类型的事件记录在tr文件中。
3.定义网络的拓扑结构,包括结点位置,链路信息等等。
4.设定传输层及应用层代理,并将传输层代理绑定在相应的结点上,将应用层的代理绑定在相应的传输层代理上。
5.建立传输层链接。
6.设定模拟的开始和结束时间。
7.运行该tcl文件,观察模拟的结果。
;#新的模拟器对象set ns [new Simulator]$ns color 1 Red$ns color 2 Blueset tn [open homework.nam w] ;#用于保存nam跟踪文件$ns namtrace-all $tnset ta [open homework.tr w] ;#保存trace文件$ns trace-all $taset homeWorkWinFile [open homeWorkWinFile w] ;#保存tcp发送窗口大小;#定义一个finish过程,包括关闭两个trace文件,以及一个nam模拟proc finish {} {global ns tn ta$ns flush-traceclose $tnclose $taexec nam homework.nam &exit 0};#定义结点set s1 [$ns node]set s2 [$ns node]set r1 [$ns node]set r2 [$ns node]set s3 [$ns node]set s4 [$ns node];#定义链路,包括起点,终点,带宽,延迟,队列处理方式$ns duplex-link $s1 $r1 10Mb 2ms DropTail$ns duplex-link $s2 $r1 10Mb 3ms DropTail$ns simplex-link $r1 $r2 1.5Mb 20ms RED$ns simplex-link $r2 $r1 1.5Mb 20ms DropTail$ns duplex-link $r2 $s3 10Mb 4ms DropTail$ns duplex-link $r2 $s4 10Mb 5ms DropTail;#定义链路的位置$ns duplex-link-op $s1 $r1 orient right-down$ns duplex-link-op $s2 $r1 orient right-up$ns simplex-link-op $r1 $r2 orient right$ns simplex-link-op $r2 $r1 orient left$ns duplex-link-op $r2 $s3 orient right-up$ns duplex-link-op $r2 $s4 orient right-down$ns queue-limit $r1 $r2 25 ;#定义队列的大小,这是要给NAM用的$ns simplex-link-op $r1 $r2 queuePos 0.5 ;#观测n2到n3之间queue的变化,这是要给NAM用的;#采用RED的队列处理方式set redq [[$ns link $r1 $r2] queue]set traceq [open homeWorkRedTrace.tr w] $redq trace curq_$redq trace ave_$redq attach $traceq;#绑定代理set tcp1 [new Agent/TCP]$ns attach-agent $s1 $tcp1set tcp2 [new Agent/TCP]$ns attach-agent $s2 $tcp2$tcp1 set fid_ 1$tcp2 set fid_ 2set sinktcp1 [new Agent/TCPSink]$ns attach-agent $s3 $sinktcp1set sinktcp2 [new Agent/TCPSink]$ns attach-agent $s4 $sinktcp2;#建立链接$ns connect $tcp1 $sinktcp1$ns connect $tcp2 $sinktcp2;#绑定应用层代理set ftp1 [new Application/FTP]$ftp1 attach-agent $tcp1set ftp2 [new Application/FTP]$ftp2 attach-agent $tcp2$ftp1 set type_ FTP$ftp2 set type_ FTP;#启动或停止应用层代理$ns at 0 "$ftp1 start" ;#ftp1在0秒位置启动$ns at 3 "$ftp2 start" ;#ftp2在3秒位置启动$ns at 10 "$ftp2 stop"$ns at 10 "$ftp1 stop";#每隔0.1秒记录窗口大小proc plotWindow {tcpSource file} {global nsset time 0.1set now [$ns now]set cwnd [$tcpSource set cwnd_]puts $file "$now $cwnd"$ns at [expr $now+$time] "plotWindow $tcpSource $file"}$ns at 0.1 "plotWindow $tcp2 $homeWorkWinFile" ;#从0.1秒开始记录tcp1的窗口大小$ns at 40 "finish" ;#在40秒位置结束$ns run三、实验结果在nam辅助分析工具中发现ftp1在零秒开始启动,ftp2在第三秒时刻开始启动,都在第十秒停止,这符合设计目标。