opnet针对aloha和CSMA的仿真报告.docx
《opnet针对aloha和CSMA的仿真报告.docx》由会员分享,可在线阅读,更多相关《opnet针对aloha和CSMA的仿真报告.docx(14页珍藏版)》请在冰豆网上搜索。
opnet针对aloha和CSMA的仿真报告
OPNET仿真报告
一、实验目的
1.掌握OPNET最基础的入门方法
2.验证不同条件下网络的特性
3.利用OPNET提供的网络设备,信道组件等构造期望的网络拓扑结构,最终达到灵活组合运用OPNET的目的。
二、实验步骤
1>首先,仿真一个星形网络,因为星形网络是最基本的几种网络结构之一,从最基本的入手,由简到难,可以深入了解OPNET。
下面介绍一下我仿真星形网络的步骤。
打开OPNET,新建一个工程,给工程和场景分别命名。
设置向导。
设置一个office的Networkscale,再选择Technologies,使Sm_Int_Model_List后面的include变为yes。
设置拓扑结构。
选择星形网络,确定此拓扑的中心节点,节点数目,位置等参数。
添加服务器。
添加完服务器,用传输线连接。
选择要测量的参数。
例如星形网络是测整体的延迟。
运行,仿真,查看结果。
再利用同样的方法建立一个15个节点的网络,同样测量延迟和负载情况。
下图为最后得出的仿真图形
比较仿真结果,得出结论。
结论为:
当节点数增加时延迟变大,负载量变小。
2>然后再来仿真一个Aloha和CSMA模型。
首先,仿真Aloha模型。
创建Aloha发射机进程模型
创建一个通用发射机节点模型
创建一个通用接收机进程模型
创建一个通用接收机节点模型
构建网络模型
下面分别描述各个模型的仿真步骤。
A创建发射机进程模型:
新建processmodel,在工作区添加三个状态,给每个状态命名,并改变状态。
3个状态之间用传输线连接,从idle到tx_pkt之间的连接可以通过改变condition来实现,如图所示
打开HeaderBlock输入代码并保存。
打开StateVariableBlock改变Type,Name和Comments。
双击init上部打开EnterExecutives输入代码并保存,同样对tx_pkt操作,只是程序段不同。
定义globalattribute。
选择Interfaces >Global Attributes,作如下处理
选择Interfaces >Process Interfaces,把begsimintrpt的初值变为enabled,把所有的状态都改为hidden,也可以添加comment。
7.编译这个进程模型,并以initials_aloha_tx这个名称保存。
B.创建一个通用发射机节点模型:
1.新建节点模型,在工作区创建2个进程模型和1个总线发射机模型,给每个模型重命名,并用传输线连接。
2.确认src stream被设置为src stream [0],dest stream被置为dest stream [0]
3.打开gen,设置相应的参数。
4.新增1个进程模型和节点模型,并用传输线连接,如图:
5.打开statisticwire的对话框,把上升沿河下降沿触发器改为disabled。
6.查看tx_proc的connectivity。
7.选择Interfaces>Node Interfaces,将mobile和satellite的supported值改为no,除了promoted其他的状态都改为hidden,保存此model并命名initials_cct_tx。
C.创建通用接收机节点模型
1.创建节点模型,在工作区添加1个进程模型和1个总线接收模型,重命名,并用传输线连接.
2.选择Interfaces >Node Interfaces,在节点类型中将mobile和satellite的类型改为no,所有状态改为hidden。
3.打开HeaderBlock,输入程序代码,保存。
4.打开状态变量,定义变量
5.打开功能模块,输入程序代码,保存
6.双击init上部,输入程序段,保存
7.选择Interfaces >Process Interface,将begsimintrpt和endsimintrpt
的初值改为enabled,所有状态改为hidden。
8编译此进程模型,保存为initials_cct_rx。
D.创建通用接收机节点模型
1.新建一个进程模型,在工作区添加两个状态,分别命名,改变状态,并用传输线连接,如图所示
2..选择Interfaces>Node Interfaces,将mobile和satellite的supported值改为no,所有状态改为hidden,保存为initials_cct_rx。
E.创建一个新的链路模型
1.创建一个新的链路模型,在Supportedlinktypes中将ptsimp和ptdup的类型修改为no。
如图
2保存为initials_cct_link,并关闭链路模型编辑器。
3.创建网络模型
4新建一个工程,分别用initials_cct_network和aloha为工程和场景命名,然后按下图设置参数
5.弹出对话框,选择
,Configure Palette...,然后Clear
按linkmodels添加initials_cct_link;按nodemodels添加initials_cct_rx和initials_cct_tx。
6.按Save As...键保存文件,命名为initials_cct,按ok关闭ConfigurePalette对话框。
7.选择Topology >Rapid Configuration,选择Bus,并进行配置,如下图所示
8.点击ok,出现network如图所示
9.点击并拖动接收节点initials_cct_rx到工作区左边,点击initials_cct_link,确定使用这个
10.画一个从总线到接收节点的tap,如图
11将此模型保存为initials_cct_network,执行aloha仿真
12.选择Scenarios >Scenario Components >Import...;SimulationSequence然后选择cct_network-CSMA,并确定,保存此工程。
13.选择DES >Configure/Run Discrete EventSimulation (Advanced)有12个序列如图
14.右击scenario中选择Edit Attributes,扩展Executiontreenode,扩展Advancedtreenode,选择Application,点击Application节点。
15.确认网络模型被设置为initials_cct_network-aloha.点击Outputs和StatisticsCollection,设置Probefile为NONE,用op_stat_scalar_write()代替probefile,确认Vectorfile被置为initials_cct_network-aloha.
16.点击Inputs,然后GlobalAttributes,确认最大包得书目为1000,点击ObjectAttributes,点ok保存这些变化,关闭SimulationSequence对话框,选择File >Save.
17.运行,并确认。
结果如图
18仿真完成关闭DESExecutionManager对话框。
19.点击ViewResults,选择DESParametricStudies,扩展ScalarStatistics,右击ChannelThroughputS,选择SetasY-Series,结果如下:
右击ChannelTrafficG,选择SetasX-Series,点击show,如图;
F.AddingDeference
1.选择File >Recent Files >Process Model,选择initials_aloha_tx,选择File >Save As...,把进程模型重命名为initials_csma_tx,然后新建一个状态,命名为wt_free,用传输线将各个状态之间连线,并改变condition,如图所示:
2.在HB中添加程序,并保存,编译其,然后关闭进程编辑器。
3.选择File >Recent Files >Node Model>initials_cct_tx,选择File >Save As...,重命名节点模型为initials_cct_csma_tx,右击statisticwire,选择EditAttributes,将fallingedgetrigger设置为enabled,点ok。
4.打开tx_proc进程模型的Attributes,将processmodel命名为initials_csma_tx,点ok关闭对话框。
5.在工程编辑器中选择Scenarios >Duplicate Scenario...,重命名为CSMA,右击其中一个发射节点选择SelectSimilarNodes。
右击选中的节点,选择Edit Attributes (Advanced),选择Apply,重命名为initials_cct_csma_tx,点Yes,保存此工程。
6.选择DES >Configure/Run Discrete Event Simulation,将Seed变为11,运行此工程。
点击查看结果。
在结果浏览器中选择DESParametricStudies。
扩展ScalarStatistics,右击ChannelThroughputS,选择SetasY-Series;选择ChannelTrafficG,选择SetasX-Series,点show。
在ResultsBrowser中,选择CurrentProject,选择aloha场景,右击Series,选择Add Scenario Name as Parameter。
点击show。
G.增加拥塞检测和补偿
1.选择File >Open,选择project,在install_dir目录下选择release>models>std>tutorial_req>modeler,打开ethcoax_net,选择File >Save As…,保存为initials_ethcoax_net。
选择DES >Run Discrete Event Simulation。
2.在工程编辑器中选择DES >Results >View Results...,
选择Object Statistics >ethcoax_net >bus_0 [0] >utilization,将As Is改为average,点击show,在Results Browser,选择bit_thruput,点击show,现实活动窗口如图所示:
选择Show StatisticData,如图所示:
在utilization中选择average,如图所示;
三、结果分析
理论上,ALOHA系统的信道吞吐量S和信道流量G之间的关系是:
S=Ge-2G,当G=1/2是,S大约是0.18。
低流量时冲突很少发生,高流量时信道发生拥塞,大量冲突使得数据包丢失难以被成功接收。
由仿真图可以看出在G=0.5左右,S=0.18左右,在误差允许的范围内理论结果与实际结果相符合。
由上图红线知道CSMA协议能到达的最大吞吐量大约是S=0.53在G=1左右发生。
四、实验中遇到的问题及解决办法
第一次在编译CSMA的时候通过,但是在run的时候出错,如图所示
查看错误报告,如图:
仔细观察发现Multipledefaulttransitionsfromstate,错误可能是由于进程模型中某状态之间传输线连接错误,认真检查发现
,从idle到tx_pkt的condition为改变,重新改变为
之后,成功仿真。
所以,我们在仿真的时候必须严格按照步骤,仔细读懂每一句话,否则,可能一步错,满盘皆输!