图7 增强型通用发信机节点模型
(3)创建通用收信机节点进程模型
收信机节点进程由初始和空闲两个状态组成。仿真开始为初始状态,数据包的到达触发中断事件(PKT_RCVD) 的发生,然后执行数据包的处理过程(proc_pkt())并转移至空闲状态;而中断仿真事件(END_SIM)发生时进行状态记录修改过程(record_stats())的执行来修改系统状态参数,然后转移至空闲状态。空闲状态下,当数据包到达的事件发生时,执行数据包处理的过程同时转移至其自身状态;当中断仿真的事件发生时,执行状态记录修改的过程同时转移至其自身;当其它的事件(default)发生时,直接转移至自身状态。收信机节点进程唯一目的就是对数据包计数并记录状态,其进程模型如图8所示:
图8 通用收信机节点进程模型
(4)创建通用收信机节点模型
通用收信机节点模型由总线收信机模块和收信处理机模块组成,总线收信机负责从总线接收数据包,收信处理机模块负责处理对接收的数据进行处理。其收信机节点如图9所示。类型中移动通信支持与卫星通信支持的支持属性值设置为no。属性表中所有属性的状态值设为隐藏。保存为通用收信机节点模型。
图9 通用收信机节点模型
(5)创建新的链路模型
将链接类型表中点到点的单工(ptsimp)和双工(ptdup)的支持属性(support)的值均设置为no,总线与总线的接头属性设置为yes,保存作为通用的链路类型。
(6)创建网络模型
本模型由有限数目的节点组成,这些节点缓冲数据包直到前面的未完成事务结束。为了接近理论模型的假设,在网络中必须设定相当数目的发信机节点,并且网络模型要建立在子网中。子网参数值设定如表1所示:
表1 网络模型中子网参数的设定
对话框名称 值
Initial Topology Default value: Create empty scenario
Choose Network Scale Office(“Use metric units” selected)
Specify Size 700×700 Meters
Select Technologies None
Review Check values, then click Finish
本网络模型图如图10所示:
图10 网络模型图
4.2.2执行ALOHA模型的仿真及结果分析
本模型为了观测协议在不同负载下的性能。因此需要设定一系列不同的Interracial time 值来产生不同等级的负载量与信道利用率。将从12个不同的Interracial time 值中得到12组仿真结果。
ALOHA信道的性能可以通过成功接收的数据包数与提交的数据包数之间的函数关系来得到,无论是原始数据包,还是重复提交的数据包。仿真参数如表2所述。
表2 ALOHA和CSMA仿真参数
Duration 20000 second(s)Seed 531
仿真结果如图11所示:
图11 ALOHA协议吞吐量与负载的关系
理论分析说明纯ALOHA系统的信道吞吐量S与信道负载量G的函数关系为 ,这个关系使得最大信道利用率为0.19。在低负载的情况下,冲突很少发生。在高负载的情况下,冲突急剧增加,信道的利用率飞速下滑。这种现象充分说明仿真结果的正确性。在信道负载量为G=0.5时,信道利用率达到最大值0.18。
ALOHA随机访问接入协议的性能可以通过加入载波监听以得到提高,这就是经典的CSMA协议。该协议需要一源节点来监听信道,并控制提交传输数据包的行为。下面就以ALOHA模型为基础来构造CSMA协议模型。
4.3 CSMA协议模型的构造
4.3.1创建CSMA进程模型与节点模型
(1)进程模型的改变
较之ALOHA,CSMA新增一个状态站点等待。代码段中增添的内容需要完成以下的操作:在数据发送前必须对信道检测,看其是否空闲。在数据发送前先调用OPNET内核函数op_stat_local_read()读取信道的忙闲状态。如果信道忙碌,进程进入等待状态一直到信道空闲的中断到来。节点域中潜在的状态线由busy状态量变到0.0时由下降沿触发。 基于OPNET的CSMACD协议研究与仿真(7):http://www.youerw.com/tongxin/lunwen_330.html