[发明专利]一种基于虚拟网卡的无线信道仿真方法无效
申请号: | 201010210848.9 | 申请日: | 2010-06-18 |
公开(公告)号: | CN101887379A | 公开(公告)日: | 2010-11-17 |
发明(设计)人: | 陈俊延;熊华钢;王海梁;陈优子;李少松 | 申请(专利权)人: | 北京航空航天大学 |
主分类号: | G06F9/455 | 分类号: | G06F9/455;H04W24/06;H04L29/06 |
代理公司: | 北京永创新实专利事务所 11121 | 代理人: | 赵文利 |
地址: | 100191*** | 国省代码: | 北京;11 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | 本发明公开了一种基于虚拟网卡的无线信道仿真方法,包括以下几个步骤,步骤一:搭建仿真模型的硬件环境;步骤二:构建仿真模型的仿真环境;步骤三:用户配置仿真成员的初始化参数;步骤四:仿真系统加载虚拟网卡驱动,完成内部初始化工作;步骤五:开始仿真,仿真成员进行数据收发;步骤六:结束仿真,评估无线信道的性能;本发明所述的仿真方法配置灵活,可扩展性好;对底层透明,可重用性高;本发明保证了仿真环境与真实环境的一致性,仿真结果更精确,提高了仿真可信度;降低仿真人员的工作量,很容易实现真实环境与仿真环境中应用的互相移植,避免了为仿真环境与真实环境各开发一套应用的重复劳动。 | ||
搜索关键词: | 一种 基于 虚拟 网卡 无线 信道 仿真 方法 | ||
【主权项】:
一种基于虚拟网卡的无线信道仿真方法,其特征在于,包括以下几个步骤:步骤一:搭建仿真模型的硬件环境;仿真模型包括n个仿真成员,仿真成员A1至仿真成员An之间通过以太网相连,每个仿真成员配备m块虚拟网卡和至少一块物理网卡,m≥1,仿真数据通过虚拟网卡进入虚拟信道,在虚拟信道中经过转换后通过物理网卡发送到以太网上,经以太网到达其它仿真成员;步骤二:构建仿真模型的仿真环境;虚拟网卡包括待发送处理模块、异常报告和接收缓冲队列;待发送处理模块包含发送缓冲队列和待发送事件;虚拟网卡的驱动为NDIS小端口驱动;NDIS为网络接口规范,发送缓冲队列用于暂存与上层交互的输入数据,然后将输入数据发送至虚拟信道,接收缓冲队列用于暂存与上层交互的输出数据,然后将输出数据发送至上层;虚拟网卡发送与接收的数据为以太网帧;虚拟网卡为上层的每次发送请求触发一次待发送事件;待发送事件用于通知虚拟信道中的服务进程此时发送缓冲队列中有数据待发送;在数据发送过程中,如果超时则取消数据发送,通过异常报告来通知服务进程;虚拟信道包括服务进程与通信进程;虚拟信道逻辑上是虚拟网卡驱动的下层;服务进程包括监视线程、发送线程和接收线程;监视线程负责与虚拟网卡驱动的交互,发送线程和接收线程负责与通信进程的交互;通信进程负责处理虚拟链路层与虚拟物理层的算法;通信进程包括发送数据格式转换模块、发送缓冲区、媒体接入控制协议、数据传输接口、接收数据预处理模块和接收数据格式转换模块;当虚拟网卡向虚拟信道发送数据时,数据经过服务进程中的发送线程到达通信进程,由发送数据格式转换模块转换为适应虚拟物理层的数据格式再送入发送缓冲区,发送缓冲区用于保存已由虚拟网卡送达,但未发送到虚拟物理层的数据;媒体接入控制协议负责媒体接入控制子层协议算法的仿真;当虚拟网卡从虚拟信道接收数据时,数据经过数据传输接口,经接收数据预处理模块处理并过滤后到达接收数据格式转换模块,接收数据格式转换模块将来自虚拟物理层的数据转换成以太网数据帧,并传给服务进程的接收线程;数据传输接口负责与物理网卡的通信;步骤三:用户配置仿真成员的初始化参数;具体为:1)初始化每个虚拟网卡的IP地址和MAC地址,MAC为媒体访问控制;每个虚拟网卡的MAC地址不重复,而且虚拟网卡的MAC地址与仿真系统中物理网卡的MAC地址不冲突;2)如果设备不支持地址解析协议或者省略地址解析协议报文的发送,则根据步骤1)中IP地址与MAC地址的对应关系配置静态地址解析协议列表;3)初始化每个虚拟网卡所在的子网;4)初始化每个虚拟网卡的通信范围;5)初始化每个仿真成员的虚拟地理位置,如果是移动节点配置移动方式;6)初始化每个虚拟网卡子网的性能参数:波特率、误码率、虚拟物理层的通信方式,所述的通信方式为广播或非广播;7)如果使用操作系统未集成的通信协议,则对其进行建模,并初始化;步骤四:仿真系统加载虚拟网卡驱动,完成内部初始化工作;仿真开始之前,仿真系统根据用户的配置加载虚拟网卡驱动,完成内部初始化,具体为:1)初始化虚拟网卡驱动,包括:a)分配每个虚拟网卡的发送缓冲队列和接收缓冲队列内存空间;b)保存用户为每个虚拟网卡设定MAC地址,虚拟网卡驱动通过NDIS函数库中MiniportQueryInformation回调函数对网卡硬件地址:OID_802_3_PERMANENT_ADDRESS或者网卡当前使用地址:OID_802_3_CURRENT_ADDRESS请求返回虚拟网卡的MAC地址;c)虚拟网卡驱动为每个虚拟网卡指定一个待发送事件指针,指针初始值为空,然后再通过服务进程进行初始化;d)虚拟网卡驱动为每个虚拟网卡指定一个用于异常报告的IRP指针,所述的IRP为I/O Requst Packet,即I/O请求包,指针初始值为空,然后再通过服务进程进行初始化;e)虚拟网卡驱动使用NDIS中名为NdisMRegisterDevice的API注册设备名和设备符号链接名,设备符号链接名会被服务进程所使用;NdisMRegisterDevice同时还注册了一组派遣函数,派遣函数用来处理来自服务进程的各种I/O操作;所述的API全称为Application Programming Interface,即为应用程序编程接口;2)启动并初始化服务进程,包括:a)启动监视线程、接收线程和发送线程;b)监视线程根据虚拟网卡驱动注册的设备符号链接名,通过名为CreateFile的API打开虚拟网卡,得到虚拟网卡的设备句柄;c)监视线程创建待发送事件,并通过I/O操作将待发送事件的句柄传给虚拟网卡驱动,虚拟网卡驱动根据此名柄初始化待发送事件的指针;d)监视线程创建异常报告对象,通过对异步I/O操作传给虚拟网卡驱动;在此过程中生成的IRP指针在虚拟网卡驱动的派遣函数中被虚拟网卡驱动捕获并保存,并在未来处理异常报告时所使用;3)启动并初始化通信进程,包括:a)为发送缓冲区分配内存空间;b)与服务进程的发送线程和接收线程建立数据通道;c)初始化数据传输接口,建立与虚拟信道中其它通信进程之间的数据通道;步骤五:开始仿真,仿真成员进行数据收发;(1)对数据发送过程进行仿真;具体为:①虚拟网卡驱动向服务进程提交数据;首先服务进程的监视线程在步骤四中已打开虚拟网卡,向虚拟网卡驱动注册待发送事件,并等待网卡驱动的通知;当虚拟网卡驱动收到上层的发送请求时,如果服务进程注册过待发送事件,则将数据放入发送缓冲队列并触发待发送事件,通知服务进程的监视线程;监视线程收到待发送事件后,从虚拟网卡中读出数据;如果服务进程没有注册过待发送事件,则将数据丢弃,通知上层发送结果,完成步骤①后虚拟网卡进入等待阶段;②服务进程向通信进程提交数据;服务进程从虚拟网卡中得到数据之后进行两步并行的操作:由发送线程将此条数据送给通信进程,同时监视虚拟网卡驱动的异常报告以随时获取取消发送的通知;完成此步骤②后服务进程的发送线程进入等待阶段;③通信进程向虚拟物理层发送数据;通信进程从服务进程收到数据后将数据通过发送数据格式转换模块,将数据格式转换为适合虚拟物理层的格式,然后放入发送缓冲区暂存,并等待媒体接入控制协议为通信进程分配发送时隙;通信进程分配到发送时隙后,将转换过的数据通过数据传输接口发送到虚拟物理层,然后依次发生通信进程成功发送通知、服务进程成功发送通知和虚拟网卡驱动成功发送通知三个成功发送通知,三个通知分别将成功发送通知给服务进程、虚拟网卡驱动和上层;成功发送后,通信进程和虚拟网卡驱动将发送缓冲区和发送缓冲队列中的数据删除;由于数据发送是异步的,当虚拟网卡驱动等待成功发送通知过程中由于超时或其它原因取消此条数据的发送,取消的过程由虚拟网卡驱动发起,产生三个取消发送通知:虚拟网卡驱动取消发送通知、虚拟网卡驱动取消发送通知和服务进程取消发送通知,分别通知上层、服务进程和通信进程数据发送取消;然后清除通信进程和虚拟网卡驱动将发送缓冲区和发送缓冲队列中的数据;发送数据结束;(2)对数据接收过程进行仿真;具体为:①通信进程从虚拟物理层收到数据;通信进程的接收数据预处理模块负责执行虚拟信道的部分仿真功能,包括两部分:i.对解析出的数据进行时延和误码处理;ii.判断本机符合接收本次数据条件的虚拟网卡;接收数据预处理模块根据每一条数据的附加信息判断得出符合数据接收条件的虚拟网卡,所述的数据附加信息包括:数据发送的时刻;信道所在的子网;子网是否具有广播能力;信道的时延和误码率参数;源地址与目的地址;数据发送时源节点的虚拟位置;所述数据附加信息由发送方填写,并伴随数据一起发送;通信进程根据这些信息判断本机符合接收条件的虚拟网卡;判断的条件分三步:1>通信进程根据此时本机的虚拟位置与附加信息中的源节点虚拟位置得到两个节点的相对距离,并与虚拟网卡的通信范围进行比较,本机超出了源节点传输范围的虚拟网卡不接收本次数据,对未超出传输范围的虚拟网卡进行步骤ii;2>比较虚拟网卡所在的子网与附加信息中本次数据传输的信道所在的子网,子网不一致的虚拟网卡不接收本次数据,其余虚拟网卡遵循步骤iii;3>虚拟物理层使用广播通信方式的子网,到达步骤iii的所有虚拟网卡都接收本次数据;虚拟物理层使用非广播通信方式的子网,只有与附加信息中的目的地址匹配的虚拟网卡才允许接收本次数据;如果接收数据预处理模块找到了符合接收条件的虚拟网卡,则将经过预处理后的数据发送给接收数据格式转换模块,按照标准以太网帧格式进行转换后发送给服务进程的接收线程,并告知服务进程应将本次数据送往指定虚拟网卡;如果所有虚拟网卡都不符合接收条件,则丢弃本次数据;②服务进程将接收线程收到的数据通过监视线程传给虚拟网卡驱动;③虚拟网卡驱动将从服务进程收到的数据存入接收缓冲队列,并通知上层处理;上层处理完毕后会调用虚拟网卡驱动在NDIS注册的回调接口,此时将数据从接收缓冲队列中清除以释放空间;接收数据结束;步骤六:结束仿真,评估无线信道的性能;所有仿真成员的数据收发完毕后,结束仿真,统计仿真结果,评估无线信道的性能。
下载完整专利技术内容需要扣除积分,VIP会员可以免费下载。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于北京航空航天大学,未经北京航空航天大学许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/patent/201010210848.9/,转载请声明来源钻瓜专利网。