一种Wi-Fi分布式协调功能DCF的协议栈仿真方法转让专利

申请号 : CN202310088803.6

文献号 : CN115835268B

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : 田野刘兴立金永光李学波林秋实王斌

申请人 : 南京朗立微集成电路有限公司

摘要 :

本发明公开了一种Wi‑Fi分布式协调功能DCF的协议栈仿真方法,分布式协调功能DCF是一种Wi‑Fi信道随机接入的方法,基于共享内存和信号量,通过软件锁模拟信道竞争;利用Linux平台的进程间共享内存作为无线信道的数据承载,将信道上的传输数据过程转化成对于共享内存的写入操作,在信道上的数据接收过程转化成对共享内存的读取操作,进而模拟网元之间的DCF信道抢占及数据传输过程,实现了DCF的基本模式和请求发送/允许发送模式的仿真。本方法将软件运行环境与芯片硬件解耦,减少硬件仿真平台采购数量,节约了芯片研发成本;软件的调试、优化工作大幅提前进行,最终实现缩短芯片产品研发周期的目的。

权利要求 :

1.一种Wi‑Fi分布式协调功能DCF的协议栈仿真方法,其特征是,通过软件锁模拟信道竞争,基于Linux平台的进程间共享内存作为无线信道的数据承载,将信道上的传输数据过程转化成对于共享内存的写入操作,在信道上的数据接收过程转化成对共享内存的读取操作,模拟网元之间的DCF信道抢占及数据传输过程,实现DCF的基本模式和请求发送/允许发送模式的仿真;

采用有限状态机根据时间轴上发生的随机事件触发各节点的状态迁移,实现对Wi‑Fi无线信道DCF随机竞争机制的仿真;

仿真时,将参与Wi‑Fi无线信道竞争的网元抽象为一个节点,将每个节点随时间的推移以及发生的随机事件所产生的变化抽象为IDLE、Backoff、SEND、RECEIVE四种状态之间的迁移;

四种状态之间的迁移对应包括以下七种网元状态迁移:

11)网元状态迁移1,对应状态IDLE向Backoff迁移:信道锁空闲,读写锁空闲,启动随机退避,有待发送数据,表示信道空间状态下网元有数据需要发送;

12)网元状态迁移2,对应状态Backoff向IDLE迁移:信道锁忙,未启动随机退避,有待发送数据,表示信道被其他网元占用;

13)网元状态迁移3,对应状态Backoff向SEND迁移:信道锁由空闲转为占用,读写锁由空闲转为占用,未启动随机退避,有待发送数据,表示随机退避定时器超时且信道空闲,开始传输数据;

14)网元状态迁移4,对应状态IDLE向RECEIVE迁移:读写锁由空闲转为占用,未启动随机退避,无待发送数据,表示接收机收到数据;

15)网元状态迁移5,对应状态RECEIVE向IDLE迁移:在收到的是ACK帧时信道锁由占用转为空闲,读写锁由占用转为空闲,未启动随机退避,无待发送数据,表示数据接收完毕,收到的帧目的地址非当前网元或收到的是ACK帧,无需立即发送响应;

16)网元状态迁移6,对应状态RECEIVE向SEND迁移:读写锁由占用转为空闲再转为占用,未启动随机退避,有待发送数据,表示收到的帧目的地址为当前网元,数据接收完毕后需要立即传输响应数据;

17)网元状态迁移7,对应状态SEND向IDLE迁移:未启动随机退避,读写锁由占用转为空闲,表示当前数据发送完成并且无其他待发送数据;

仿真时,将Wi‑Fi无线信道自身随时间的推移以及发生的随机事件所产生的变化抽象为IDLE、BUSY两种状态;

两种状态之间的迁移对应包括以下两种信道状态迁移:

21)信道状态迁移1,对应状态BUSY向IDLE迁移:信道锁占用,表示网元占用信道准备发送帧数据;

22)信道状态迁移2,对应状态IDLE向BUSY迁移:信道锁空闲,表示网元释放信道供下次竞争。

2.根据权利要求1所述的一种Wi‑Fi分布式协调功能DCF的协议栈仿真方法,其特征是,DCF的基本模式时,当同一时刻网元一和网元二竞争无线信道并发送数据给网元三,最终网元二竞争成功时,采用有限状态机根据时间轴上发生的随机事件触发各节点的状态迁移,实现对Wi‑Fi无线信道DCF随机竞争机制的仿真过程,包括以下步骤:在等待一个DIFS时隙后,网元一设定对应随机退避定时器时长为第一设定值,网元二设定对应随机退避定时器时长为第二设定值,且第一设定值大于第二设定值;

当网元二随机退避定时器超时时,获取信道锁状态,若信道锁空闲,则占用信道锁,同时获取读写锁,向共享内存写入数据帧,目的地址是网元三,而后释放读写锁;同时,网元一经过一个单位时隙后获取读写锁,发现信道锁已被占用、共享内存中有数据,暂停随机退避定时器,同时获取读写锁,读取到共享内存中的数据帧后,释放读写锁;解析共享内存中的数据帧发现目的地址不是自身,解析duration字段,更新NAV定时器;同时,网元三经过一个单位时隙后获取读写锁,读取到共享内存中的数据帧后,释放读写锁;网元三解析读取到的数据帧,发现目的地址是自身,则等待一个短帧间隙后,网元三获取读写锁,向共享内存中写入ACK帧,目的地址是网元二,再释放读写锁;同时,网元一等待一个单位时隙后继续获取读写锁,读取到共享内存中的ACK帧,释放读写锁;解析共享内存中的ACK帧发现目的地址不是自身,解析duration字段,更新NAV定时器;同时,网元二经过一个单位时隙后获取读写锁,读取到共享内存中的ACK帧,释放读写锁;解析共享内存中的ACK帧发现目的地址是自身;如无其他数据需要发送则释放信道锁;

直至网元一的NAV定时器超时,再次等待DIFS时隙满后,恢复网元一对应的随机退避定时器。

3.根据权利要求1所述的一种Wi‑Fi分布式协调功能DCF的协议栈仿真方法,其特征是,请求发送/允许发送模式时,当同一时刻网元一和网元二竞争无线信道并发送数据给网元三,最终网元二竞争成功时,采用有限状态机根据时间轴上发生的随机事件触发各节点的状态迁移,实现对Wi‑Fi无线信道DCF随机竞争机制的仿真过程,包括以下步骤:在等待一个DIFS时隙后,网元一设定对应随机退避定时器时长为第一设定值,网元二设定对应随机退避定时器时长为第二设定值,且第一设定值大于第二设定值;

当网元二随机退避定时器超时时,获取信道锁状态,若信道锁空闲,则占用信道锁,同时获取读写锁,向共享内存写入RTS帧数据,目的地址是网元三,而后释放读写锁;同时,网元一经过一个单位时隙后获取读写锁,发现信道锁已被占用、共享内存中有数据,暂停随机退避定时器;同时,网元三经过一个单位时隙后获取读写锁,读取共享内存中的RTS帧数据,释放读写锁;解析共享内存中的RTS帧数据,发现目的地址是自身;

在等待一个单位时隙后,网元一获取读写锁,读取共享内存中的RTS帧数据,释放读写锁;解析共享内存中的RTS帧数据,目的地址不是自身,解析duration字段,更新NAV定时器;

在等待一个短帧间隙后,网元三获取读写锁,向共享内存中写入CTS帧数据,目的地址是网元二,释放读写锁;同时,网元一等待一个单位时隙后获取读写锁,读取到共享内存中的CTS帧数据,释放读写锁;解析共享内存中的CTS帧数据,目的地址不是自身,解析duration字段,更新NAV定时器;同时,网元二经过一个单位时隙后获取读写锁,读取到共享内存中的CTS帧数据,释放读写锁;解析共享内存中的CTS帧数据,目的地址是自身,释放读写锁;

在等待一个短帧间隙后,网元二获取读写锁,向共享内存中写入数据帧,目的地址是网元三,再释放读写锁;同时,网元一等待一个单位时隙后获取读写锁,读取到共享内存中的数据帧,释放读写锁;解析共享内存中的数据帧,目的地址不是自身,解析duration字段,更新NAV定时器;同时,网元三经过一个单位时隙后获取读写锁,读取到共享内存中的数据帧,释放读写锁;解析共享内存中的数据帧,目的地址是自身;在等待一个短帧间隙后,网元三获取读写锁,向共享内存中写入ACK帧,目的地址是网元二,再释放读写锁;同时,网元一等待一个单位时隙获取读写锁,读取到共享内存中的ACK帧,释放读写锁;解析共享内存中的ACK帧,目的地址不是自身,解析duration字段,更新NAV定时器;同时,网元二经过一个单位时隙后获取读写锁,读取到共享内存中的ACK帧,释放读写锁;解析共享内存中的ACK帧,目的地址是自身,如无其他数据需要发送释放信道锁;

直至网元一的NAV定时器超时,再次等待DIFS时隙满后,恢复网元一对应的随机退避定时器。

4.根据权利要求1所述的一种Wi‑Fi分布式协调功能DCF的协议栈仿真方法,其特征是,网元之间的DCF信道抢占及数据传输过程,包括以下步骤:步骤1.在每个分布式帧间间隙即DIFS时隙期满后,网元检查网络分配向量定时器即NAV定时器是否超时,并通过信道锁模拟空闲信道评估即CCA,进而使用信道锁检查信道状态;

当NAV定时器未超时状态下,根据定时时间,以一个单位时隙长度为幅度逐次递减NAV定时器,等待一个单位时隙后再次检查NAV定时器是否超时;

当信道状态为忙时,则等待一个单位时隙后再次检查信道状态;

仅当NAV定时器超时且信道状态为空闲时,执行下一步骤;

步骤2.选择一个随机退避值n,并根据随机退避值计算退避时间长度启动随机退避定时器;

步骤3.判断随机退避定时器是否超时,若超时则获取信道锁,随后立即获取读写锁,若获取成功则开始传输数据,若信道锁获取失败,则暂停随机退避定时器,获取读写锁,取得当前传输的帧数据,根据当前传输的帧数据中的duration字段更新NAV定时器,回到步骤1;

若读写锁获取失败,则持续等待直到获取成功;读写锁获取成功后写入数据;如果随机退避定时器未超时则进入步骤4;

步骤4.判断NAV定时器是否超时及信道状态;

当NAV定时器未超时或信道锁状态为忙,则返回执行步骤1;

当NAV定时器已超时且信道锁状态为空闲,则以一个单位时隙长度为幅度递减随机退避值,并根据新的随机退避值更新随机退避定时器;同时,每隔一个单位时隙重复执行步骤

3。

5.根据权利要求1所述的一种Wi‑Fi分布式协调功能DCF的协议栈仿真方法,其特征是,采用一个Linux命名信号量作为信道锁,用于保护当前信道不会被其他网元强行闯入;

采用另一个Linux命名信号量作为读写锁,用于保护共享内存不被其他网元同时写入或在写入的过程中读取。

说明书 :

一种Wi‑Fi分布式协调功能DCF的协议栈仿真方法

技术领域

[0001] 本发明涉及一种Wi‑Fi分布式协调功能DCF的仿真方法,尤其涉及使用软件方式模拟Wi‑Fi无线协议栈与无线随机接入机制的结合,属于通信技术领域。

背景技术

[0002] 当前Wi‑Fi分布式协调功能DCF的模拟仿真,通常包含两种方式。一种是单纯模拟软件协议栈,其必须需要结合硬件才可以工作,另外一种只能够模拟仿真DCF的随机接入机制,比如开源软件NS3等,其无法和协议栈做综合模拟。NS3是一种离散事件随机模拟器,可以用于模拟网络中各种各样场景下的随机事件,比如信道的随机接入,多用户的随机漫游等,可以仿真Wi‑Fi,Wi‑Max,LTE等网络协议,已经被大量的研究和教学场景所采用。
[0003] NS3的仿真目标是评估网络性能,而不是综合无线协议栈,仿真验证程序的可行性。在NS3仿真中,所有的网元是运行在一个虚拟的网络环境中。用户在使用NS3仿真网络协议时,根据NS3的事件模板定义Wi‑Fi网络中各种各样的基本事件,比如DIFS事件,随机倒数事件,发送事件,ACK事件等,并通过状态机来定义这些事件的转移关系。其后,在设置初始的随机数的种子后,通过随机事件引擎来运行这些事件,并进行统计,将仿真的运行过程进行记录。在仿真结束后,用户可以对仿真过程的记录文件进行数据分析,进而获得相应仿真协议运行的性能,从而辅助我们对无线协议性能进行评估。
[0004] 然而,NS3的仿真只能运行在虚拟的网络环境中,即无法和真实的网络环境互通运行,更无法和软件协议栈进行对接。本发明提供了一种新型的基于共享内容和软件锁的仿真机制,其底层就是直接搭载在Wi‑Fi分布式协调功能DCF的协议栈上,并利用协议栈能够开发的功能,来构造一种新型的无线网络仿真方式,因此可以直接对接真实的无线网络环境,大大扩展无线仿真的真实性和使用场景。

发明内容

[0005] 本发明所要解决的技术问题是克服现有技术的缺陷,提供一种在没有Wi‑Fi硬件参与的情况下,单纯使用软件方式模拟Wi‑Fi无线信道的抢占、定时和传输的方法。这种方法可以为Wi‑Fi的协议层、应用层软件开发提供一个无硬件参与的、便于调试和跟踪的、便于快速构建软件原型的方法。
[0006] 为解决上述技术问题,本发明采用的技术方案如下:
[0007] 基于共享内存和信号量仿真Wi‑Fi无线信道竞争的方法,通过软件锁模拟信道竞争,基于Linux平台的进程间共享内存作为无线信道的数据承载,将信道上的传输数据过程转化成对于共享内存的写入操作,在信道上的数据接收过程转化成对共享内存的读取操作,模拟网元之间的DCF信道抢占及数据传输过程,实现DCF的基本模式和请求发送/允许发送模式的仿真。
[0008] 进一步地,采用有限状态机根据时间轴上发生的随机事件触发各节点的状态迁移,实现对Wi‑Fi无线信道DCF随机竞争机制的仿真。
[0009] 进一步地,仿真时,将参与Wi‑Fi无线信道竞争的网元抽象为一个节点,将每个节点随时间的推移以及发生的随机事件所产生的变化抽象为IDLE、Backoff、SEND、RECEIVE四种状态之间的迁移。
[0010] 进一步地,四种状态之间的迁移对应包括以下七种网元状态迁移:
[0011] 11)网元状态迁移1,对应状态IDLE向Backoff迁移:信道锁空闲,读写锁空闲,启动随机退避,有待发送数据,表示信道空间状态下网元有数据需要发送;
[0012] 12)网元状态迁移2,对应状态Backoff向IDLE迁移:信道锁忙,未启动随机退避,有待发送数据,表示信道被其他网元占用;
[0013] 13)网元状态迁移3,对应状态Backoff向SEND迁移:信道锁由空闲转为占用,读写锁由空闲转为占用,未启动随机退避,有待发送数据,表示随机退避定时器超时且信道空闲,开始传输数据;
[0014] 14)网元状态迁移4,对应状态IDLE向RECEIVE迁移:读写锁由空闲转为占用,未启动随机退避,无待发送数据,表示接收机收到数据;
[0015] 15)网元状态迁移5,对应状态RECEIVE向IDLE迁移:在收到的是ACK帧时信道锁由占用转为空闲,读写锁由占用转为空闲,未启动随机退避,无待发送数据,表示数据接收完毕,收到的帧目的地址非当前网元或收到的是ACK帧,无需立即发送响应;
[0016] 16)网元状态迁移6,对应状态RECEIVE向SEND迁移:读写锁由占用转为空闲再转为占用,未启动随机退避,有待发送数据,表示收到的帧目的地址为当前网元,数据接收完毕后需要立即传输响应数据;
[0017] 17)网元状态迁移7,对应状态SEND向IDLE迁移:未启动随机退避,读写锁由占用转为空闲,表示当前数据发送完成并且无其他待发送数据。
[0018] 进一步地,仿真时,将Wi‑Fi无线信道自身随时间的推移以及发生的随机事件所产生的变化抽象为IDLE、BUSY两种状态。
[0019] 进一步地,两种状态之间的迁移对应包括以下两种信道状态迁移:
[0020] 21)信道状态迁移1,对应状态BUSY向IDLE迁移:信道锁占用,表示网元占用信道准备发送帧数据;
[0021] 22)信道状态迁移2,对应状态IDLE向BUSY迁移:信道锁空闲,表示网元释放信道供下次竞争。
[0022] 进一步地,DCF的基本模式即Basic模式时,当同一时刻网元一和网元二竞争无线信道并发送数据给网元三,最终网元二竞争成功时,采用有限状态机根据时间轴上发生的随机事件触发各节点的状态迁移,实现对Wi‑Fi无线信道DCF随机竞争机制的仿真过程,包括以下步骤:
[0023] 在等待一个DIFS时隙后,网元一设定对应随机退避定时器时长为第一设定值,网元二设定对应随机退避定时器时长为第二设定值,且第一设定值大于第二设定值;
[0024] 当网元二随机退避定时器超时时,获取信道锁状态,若信道锁空闲,则占用信道锁,同时获取读写锁,向共享内存写入数据帧,目的地址是网元三,而后释放读写锁;同时,网元一经过一个单位时隙后获取读写锁,发现信道锁已被占用、共享内存中有数据,暂停随机退避定时器同时获取读写锁,读取到共享内存中的数据帧后,释放读写锁;解析共享内存中的数据帧发现目的地址不是自身,解析duration字段,更新NAV定时器;同时,网元三经过一个单位时隙后获取读写锁,读取到共享内存中的数据帧后,释放读写锁;
[0025] 网元三解析读取到的数据帧,发现目的地址是自身,则在等待一个短帧间间隙后,网元三获取读写锁,向共享内存中写入ACK帧,目的地址是网元二,再释放读写锁;同时,网元一等待一个单位时隙后继续获取读写锁,读取到共享内存中的ACK帧,释放读写锁。解析共享内存中的ACK帧发现目的地址不是自身,解析duration字段,更新NAV定时器;同时,网元二经过一个单位时隙后获取读写锁,读取到共享内存中的ACK帧,释放读写锁。解析共享内存中的ACK帧发现目的地址是自身。如无其他数据需要发送则释放信道锁。
[0026] 直至网元一的NAV定时器超时,再次等待DIFS时隙满后,恢复网元一对应的随机退避定时器。
[0027] 进一步地,请求发送/允许发送模式即RTS/CTS模式时,当同一时刻网元一和网元二竞争无线信道并发送数据给网元三,最终网元二竞争成功时,采用有限状态机根据时间轴上发生的随机事件触发各节点的状态迁移,实现对Wi‑Fi无线信道DCF随机竞争机制的仿真过程,包括以下步骤:
[0028] 在等待一个DIFS时隙后,网元一设定对应随机退避定时器时长为第一设定值,网元二设定对应随机退避定时器时长为第二设定值,且第一设定值大于第二设定值;
[0029] 当网元二随机退避定时器超时时,获取信道锁状态,若信道锁空闲,则占用信道锁,同时获取读写锁,向共享内存写入RTS帧数据,目的地址是网元三,而后释放读写锁;同时,网元一经过一个单位时隙后获取读写锁,发现信道锁已被占用、共享内存中有数据,暂停随机退避定时器;同时,网元三经过一个单位时隙后获取读写锁,读取共享内存中的RTS帧数据,释放读写锁。解析共享内存中的RTS帧数据,发现目的地址是自身。
[0030] 在等待一个单位时隙后,网元一获取读写锁,读取共享内存中的RTS帧数据,释放读写锁。解析共享内存中的RTS帧数据,目的地址不是自身,解析duration字段,更新NAV定时器。
[0031] 在等待一个短帧间隙后,网元三获取读写锁,向共享内存中写入CTS帧数据,目的地址是网元二,释放读写锁;同时,网元一等待一个单位时隙后获取读写锁,读取到共享内存中的CTS帧数据,释放读写锁。解析共享内存中的CTS帧数据,目的地址不是自身,解析duration字段,更新NAV定时器;同时,网元二经过一个单位时隙后获取读写锁,读取到共享内存中的CTS帧数据,释放读写锁。解析共享内存中的CTS帧数据,目的地址是自身,释放读写锁。
[0032] 在等待一个短帧间隙后,网元二获取读写锁,向共享内存中写入数据帧,目的地址是网元三,再释放读写锁;同时,网元一等待一个单位时隙后获取读写锁,读取到共享内存中的数据帧,释放读写锁。解析共享内存中的数据帧,目的地址不是自身,解析duration字段,更新NAV定时器;同时,网元三经过一个单位时隙后获取读写锁,读取到共享内存中的数据帧,释放读写锁,解析共享内存中的数据帧,目的地址是自身。
[0033] 在等待一个短帧间隙后,网元三获取读写锁,向共享内存中写入ACK帧,目的地址是网元二,再释放读写锁;同时,网元一等待一个单位时隙获取读写锁,读取到共享内存中的ACK帧,释放读写锁。解析共享内存中的ACK帧,目的地址不是自身,解析duration字段,更新NAV定时器;同时,网元二经过一个单位时隙后获取读写锁,读取到共享内存中的ACK帧,释放读写锁。解析共享内存中的ACK帧,目的地址是自身,如无其他数据需要发送释放信道锁。
[0034] 直至网元一的NAV定时器超时,再次等待DIFS时隙满后,恢复网元一对应的随机退避定时器。
[0035] 进一步地,网元之间的DCF信道抢占及数据传输过程,包括以下步骤:
[0036] 步骤1.在每个DIFS时隙期满后,网元检查NAV定时器是否超时,使用CCA检查信道状态;
[0037] 当NAV定时器未超时时,则递减NAV定时器,等待一个单位时隙后再次检查NAV定时器是否超时;
[0038] 当信道状态为忙时,则等待一个单位时隙后再次检查信道状态;
[0039] 仅当NAV定时器超时且信道状态为空闲时,执行下一步骤;
[0040] 步骤2.选择一个随机退避值n,并根据随机退避值计算退避时间长度启动随机退避定时器;
[0041] 步骤3.判断随机退避定时器是否超时,若超时则获取信道锁,随后立即获取读写锁,若获取成功则开始传输数据,若信道锁获取失败,则暂停随机退避定时器,获取读写锁,取得当前传输的帧数据,根据当前传输的帧数据中的duration字段更新NAV定时器,回到步骤1;若读写锁获取失败,则持续等待直到获取成功;读写锁获取成功后写入数据;若随机退避定时器未超时则进入步骤4;
[0042] 步骤4.判断NAV定时器是否超时及信道状态;
[0043] 当NAV定时器未超时或信道状态为忙,则返回执行步骤1;
[0044] 当NAV定时器已超时且信道状态为空闲,则递减随机退避值,并根据新的随机退避值更新随机退避定时器;同时,每隔一个单位时隙重复执行步骤3。
[0045] 进一步地,采用一个Linux命名信号量作为信道锁,用于保护当前信道不会被其他网元强行闯入;
[0046] 采用另一个Linux命名信号量作为读写锁,用于保护共享内存不被其他网元同时写入或在写入的过程中读取。
[0047] 本发明所达到的有益效果:
[0048] 本发明公开了一种Wi‑Fi分布式协调功能DCF的协议栈仿真方法,分布式协调功能DCF是一种Wi‑Fi信道随机接入的方法。本发明中,分别实现了,1)DCF的基本模式(即Basic模式)仿真,2)请求发送/允许发送模式(即RTS/CTS模式)的仿真。本发明基于共享内存和信号量,通过软件锁模拟信道竞争。本发明利用Linux平台的进程间共享内存作为无线信道的数据承载,将信道上的传输数据过程转化成对于共享内存的写入操作,在信道上的数据接收过程转化成对共享内存的读取操作,进而模拟网元之间的DCF信道抢占及数据传输过程。
[0049] 本发明提供了一种在没有Wi‑Fi硬件参与的情况下,单纯使用软件方式模拟Wi‑Fi无线信道的抢占、定时和传输的方法。这种方法可以为Wi‑Fi的协议层、应用层软件开发提供一个无硬件参与的、便于调试和跟踪的、便于快速构建软件原型的方法。可以有效解决Wi‑Fi芯片产品研发工程早期出现的“软件必须在芯片原型设计及测试完成后才可以开始调试”的进度矛盾,软件的调试、优化工作可以大幅提前进行,从而最终实现缩短芯片产品研发周期的目的。
[0050] 通过采用本发明的方法,可以有效地将软件运行环境与芯片硬件解耦,一定程度地减少硬件仿真平台采购数量,从而实现节约芯片研发成本的目的。
[0051] 本方法通过软件锁模拟信道竞争,同时使用共享内存实现无线信道上的数据传递,从而相对真实准确地模拟网元之间的DCF信道抢占及数据传输过程。

附图说明

[0052] 图1是根据NAV进行正确信道抢占的示意图;
[0053] 图2是DCF抢占过程流程图;
[0054] 图3是时间轴上发生的随机事件触发各节点的状态迁移示意图;
[0055] 图4是参与信道竞争的网元状态之间的迁移示意图;
[0056] 图5是无线信道的变化迁移示意图;
[0057] 图6是Basic模式场景信道抢占示意图;
[0058] 图7是Basic模式场景下,本方法的具体流程图;
[0059] 图8是RTS/CTS模式场景信道抢占示意图;
[0060] 图9是RTS/CTS模式场景下,本方法的具体流程图。

具体实施方式

[0061] 下面结合附图对本发明作进一步描述。以下实施例仅用于更加清楚地说明本发明的技术方案,而不能以此来限制本发明的保护范围。
[0062] 本方法通过软件锁模拟信道竞争,同时使用共享内存实现无线信道上的数据传递,从而相对真实准确地模拟网元之间的DCF信道抢占及数据传输过程。结合图2,DCF抢占过程如下:
[0063] 步骤1.在每个DIFS时隙期满后,网元检查NAV定时器是否超时,如未超时则以一个单位时隙长度为幅度递减NAV定时器,等待一个单位时隙后再次检查NAV定时器是否超时。如超时则等待下述步骤2的结果。
[0064] 步骤2.使用信道锁检查信道状态,如信道忙,则等待一个单位时隙后再次检查。如信道空闲,且判断上述步骤1的状态为“NAV定时器超时”则进入下述步骤3。
[0065] 步骤3.选择一个随机退避值n,并根据随机退避值计算退避时间长度启动随机退避定时器。
[0066] 步骤4.判断随机退避定时器是否超时,如超时则获取信道锁,随后立即获取读写锁,若获取成功则开始传输数据,若信道锁获取失败,则暂停随机退避定时器,获取读写锁,取得当前传输的帧数据,根据当前传输的帧数据中的duration字段更新NAV定时器,回到步骤1。若读写锁获取失败,则持续等待直到获取成功;读写锁获取成功后写入数据;若随机退避定时器未超时则进入步骤5。
[0067] 步骤5.判断NAV定时器超时状态及信道状态。如NAV定时器已超时并且信道空闲,则以一个单位时隙长度为幅度递减随机退避值,并根据新的随机退避值更新随机退避定时器,回到步骤4。如NAV定时器未超时或信道忙,则回到步骤1。
[0068] 步骤3中,随机退避值n为按照IEEE Std 802.11™‐2020协议规定的竞争窗口最小值和竞争窗口最大值之间随机选择的一个整数。
[0069] 步骤3中,退避时间长度=n*单位时隙。
[0070] 在其他实施例中,步骤1和步骤2中的NAV定时器是否超时的判断和信道状态的判断可以顺序互换,或不分先后,并列执行两个判断步骤,当信道空闲且NAV定时器超时时,仍进入下一步骤。
[0071] 基于上述DCF信道抢占的基本过程,本发明的方法主要设计思路涉及到三个主要逻辑关系:
[0072] 1.使用基于Linux平台的进程间共享内存作为无线信道的数据承载手段,将信道上的数据传输行为(既上述DCF抢占过程的步骤4所述的“传输”)转化成对于共享内存的写入操作,将信道上的数据接收行为转化成对共享内存的读取操作。共享内存采用如表1结构:
[0073] 表1 共享内存中的数据结构
[0074]
[0075] 2.使用一个Linux命名信号量作为信道锁,用于保护当前信道不会被其他网元强行闯入,从而以模仿CCA行为。
[0076] 3.使用一个Linux命名信号量作为读写锁,用于保护共享内存不被其他网元同时写入或在写入的过程中读取。
[0077] 利用上述三个主要逻辑关系,本方法采用有限状态机FSM(Finite State Machine)根据时间轴上发生的随机事件触发各节点的状态迁移,从而实现对Wi‑Fi信道DCF随机竞争机制的仿真。
[0078] 如图3和图4所示,将参与信道竞争的网元抽象为一个节点node,将每个节点随时间的推移以及发生的随机事件所产生的变化(如有数据需要发送、等待接收ACK、定期接收数据)抽象为IDLE、Backoff、SEND、RECEIVE四种状态之间的迁移。状态机的迁移过程说明如下表2:
[0079] 表2 网元状态迁移说明
[0080]
[0081] 如图5所示,将无线信道自身随时间的推移以及发生的随机事件(如数据发送)所产生的变化抽象为IDLE2、BUSY两种状态。网元状态迁移说明如下表3所示。
[0082] 表3 信道状态迁移说明
[0083]
[0084] 利用上述基于随时间变化以随机事件触发有限状态机迁移的仿真方法,可以高度还原无线信道的DCF随机竞争机制。DCF随机竞争机制主要有两种场景,分别是Basic模式场景和RTS/CTS模式场景。
[0085] 1)Basic模式场景
[0086] 假设同一时刻两个网元(网元1和网元2)竞争无线信道并发送数据给第三个网元(网元3),最终网元2竞争成功,如图6所示。针对上述Basic模式场景,结合图7详细说明采用本方法的具体实现步骤。图7中,所有读取到各帧的过程,均省略了“获取读写锁→读取共享内存→释放读写锁”的过程。
[0087] Basic模式场景时,当同一时刻网元1和网元2竞争无线信道并发送数据给网元3,最终网元2竞争成功时,采用有限状态机根据时间轴上发生的随机事件触发各节点的状态迁移,实现对Wi‑Fi无线信道DCF随机竞争机制的仿真过程,包括以下步骤:
[0088] 在等待一个DIFS时隙后,网元1设定对应随机退避定时器时长为第一设定值(本实施例中时长为7),网元2设定对应随机退避定时器时长为第二设定值(本实施例中时长为4),且第一设定值大于第二设定值;
[0089] 当网元2随机退避定时器超时时,获取信道锁状态,若信道锁空闲,则占用信道锁,同时获取读写锁,向共享内存写入数据帧,目的地址是网元3,而后释放读写锁;同时,网元1经过一个单位时隙后获取读写锁,发现信道锁已被占用、共享内存中有数据,暂停随机退避定时器,同时获取读写锁,读取到共享内存中的数据帧后,释放读写锁;解析共享内存中的数据帧发现目的地址不是自身,解析duration字段,更新NAV定时器;同时,网元3经过一个单位时隙后获取读写锁,读取到共享内存中的数据帧后,释放读写锁;
[0090] 网元三解析读取到的数据帧,发现目的地址是自身,则在等待一个短帧间隙后,网元3获取读写锁,向共享内存中写入ACK帧,目的地址是网元2,再释放读写锁;同时,网元1等待一个单位时隙后继续获取读写锁,读取到共享内存中的ACK帧,释放读写锁。解析共享内存中的ACK帧发现目的地址不是自身,解析duration字段,更新NAV定时器;同时,网元2经过一个单位间隙后获取读写锁,读取到共享内存中的ACK帧,释放读写锁。解析共享内存中的ACK帧发现目的地址是自身。如无其他数据需要发送则释放信道锁。
[0091] 直至网元1的NAV定时器超时,再次等待DIFS时隙满后,恢复网元1对应的随机退避定时器。
[0092] 为清楚地说明图7中的步骤,按照时间顺序对每一步骤各网元、共享内存、信道锁、读写锁的状态迁移过程具体说明如下表4,其中每个网元每隔一个单位时隙都会执行获取读写锁、读取帧数据、释放读写锁的行为,对应在表2网元状态迁移说明中已详细说明,对应网元状态迁移编号具体含义在表2中已详细说明,信道状态迁移编号具体含义在表3中已详细说明,表4中不再赘述。
[0093] 表4 Basic模式场景过程状态说明
[0094]
[0095] 2)RTS/CTS模式场景
[0096] 假设同一时刻两个网元(网元1和网元2)竞争无线信道并发送数据给第三个网元(网元3),最终网元2竞争成功,如图8所示。
[0097] 针对RTS/CTS模式场景,结合图9详细说明采用本方法的具体实现步骤。图9中,所有读取到各帧的过程,均省略了“获取读写锁→读取共享内存→释放读写锁”的过程。
[0098] RTS/CTS模式场景时,当同一时刻网元1和网元2竞争无线信道并发送数据给网元3,最终网元2竞争成功时,采用有限状态机根据时间轴上发生的随机事件触发各节点的状态迁移,实现对Wi‑Fi无线信道DCF随机竞争机制的仿真过程,包括以下步骤:
[0099] 在等待一个DIFS时隙后,网元1设定对应随机退避定时器时长为第一设定值(本实施例中时长设为7),网元2设定对应随机退避定时器时长为第二设定值(本实施例中时长设为4),且第一设定值大于第二设定值;
[0100] 当网元2随机退避定时器超时时,获取信道锁状态,若信道锁空闲,则占用信道锁,同时获取读写锁,向共享内存写入RTS帧数据,目的地址是网元3,而后释放读写锁;同时,网元1经过一个单位时隙后获取读写锁,发现信道锁已被占用、共享内存中有数据,暂停随机退避定时器;同时,网元3经过一个单位时隙后获取读写锁,读取共享内存中的RTS帧数据,释放读写锁。解析共享内存中的RTS帧数据,发现目的地址是自身。
[0101] 在等待一个单位时隙后,当网元1获取读写锁,读取共享内存中的RTS帧数据,释放读写锁。解析共享内存中的RTS帧数据,目的地址不是自身解析duration字段,更新NAV定时器。
[0102] 在等待一个短帧间隙后,网元3获取读写锁,向共享内存中写入CTS帧数据,目的地址是网元2,释放读写锁;同时,网元1等待一个单位时隙后获取读写锁,读取到共享内存中的CTS帧数据,释放读写锁。解析共享内存中的CTS帧数据,目的地址不是自身,解析duration字段,更新NAV定时器;同时,网元2经过一个单位时隙后获取读写锁,读取到共享内存中的CTS帧数据,释放读写锁。解析共享内存中的CTS帧数据,目的地址是自身,释放读写锁和信道锁;
[0103] 在等待一个短帧间隙后,网元2获取读写锁,向共享内存中写入数据帧,目的地址是网元3,再释放读写锁;同时,网元1等待一个单位时隙后获取读写锁,读取到共享内存中的数据帧,释放读写锁。解析共享内存中的数据帧,目的地址不是自身,解析duration字段,更新NAV定时器;同时,网元3经过一个单位时隙后获取读写锁,读取到共享内存中的数据帧,释放读写锁。解析共享内存中的数据帧,目的地址是自身。
[0104] 在等待一个短帧间隙后,网元3获取读写锁,向共享内存中写入ACK帧,目的地址是网元2,再释放读写锁;同时,网元1等待一个单位时隙获取读写锁,读取到共享内存中的ACK帧,释放读写锁。解析共享内存中的ACK帧,目的地址不是自身,解析duration字段,更新NAV定时器;同时,网元2经过一个单位时隙后获取读写锁,读取到共享内存中的ACK帧,释放读写锁。解析共享内存中的ACK帧,目的地址是自身,如无其他数据需要发送释放信道锁。
[0105] 直至网元1的NAV定时器超时,再次等待DIFS时隙满后,恢复网元1对应的随机退避定时器。
[0106] 为清楚地说明图9中的步骤,按照时间顺序对每一步骤各网元、共享内存、信道锁、读写锁的状态迁移过程具体说明如下表5,其中每个网元每隔一个单位时隙都会执行获取读写锁、读取帧数据、释放读写锁的行为,对应在表2网元状态迁移说明中已详细说明,对应网元状态迁移编号具体含义在表2中已详细说明,信道状态迁移编号具体含义在表3中已详细说明,表5中不再赘述。
[0107] 针对上述步骤,按照时间顺序具体说明如下表5。
[0108] 表5RTS/CTS模式场景过程状态说明
[0109]
[0110] 本发明相比与传统仿真器的实现方案相比,其创新型在于利用了共享内存和信号量的方式。而传统仿真器一般采用随机触发机制+状态机来构筑离散事件仿真器,因此本发明的实现机理、实现方案与传统仿真器是完全不同的。
[0111] 以上所述仅是本发明的优选实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明技术原理的前提下,还可以做出若干改进和变形,这些改进和变形也应视为本发明的保护范围。