一种用于网络协议栈测试的物理层通道模拟方法

文档序号:7556017阅读:325来源:国知局
专利名称:一种用于网络协议栈测试的物理层通道模拟方法
技术领域
本发明涉及无线通信技术领域,尤其涉及一种用于网络软件协议栈测试的物理层通道模拟方法。
背景技术
在网络协议栈中,MAC层与PHY层通过原语消息交互信息,完成数据调度与信号处理。MAC层在初始化的时候就决定了物理层(PHY)的功能,并通过MAC/PHY接口在每一帧里提供信道控制信息。协议栈作为一种分层软件集合体,各层之间相对独立。在设备研制过程中,协议栈与硬件平台可能同时开发,或者协议栈先于硬件平台完成基础功能开发,此时,由于没有物理平台,无法对协议功能和性能进行深入检测。当前已有的仿真软件往往基于理想情况建模,对协议细节的检测功能还不够深入,另外,仿真软件普遍存在模型移植困难、对复杂协议支持不够等不足。

发明内容
本发明的目的是为了实现脱离物理层平台的协议栈功能和性能测试,从而降低开发风险,减少开发成本,并通过接口转换定义解决一般仿真软件无法检测协议细节的不足。本发明提出的软件协议栈物理层及信道空间的模拟系统及方法包括虚拟收发通道、中断模拟器和消息解析转发器。可以在同一平台上模拟多个虚拟节点间通信,通过对协议栈底层的模拟,检验协议栈上层的功能实现。虚拟收发通道:虚拟收发通道模拟物理层对MAC的数据收发接口,MAC数据发送到本节点对应的发通道,物理层通道模拟系统通过解析和决策,将数据发送到对应的收通道。中断模拟器:在实际系统中,物理层产生中断,控制上层数据收发时机,在本物理层模拟系统中,通过定时器模拟中断发生,定时器重置周期为帧长。消息解析转发器:消息解析器通过解析MAC层发送的控制或数据消息,确认消息类型,如果是控制消息,将消息转换为接收消息结构,并根据拓扑信息,将数据转发给对应的一跳邻居节点;如果是数据消息,则根据网络的路由信息,将数据发送给路由表对应的下一跳节点。本发明的物理层通道模拟系统工作步骤包括:
步骤A:物理层通道模拟系统启动,读取拓扑场景配置文件,设置虚拟节点拓扑规则,准备后续解析消息和转发消息;
步骤B:初始化接收消息队列,对于每一个虚拟节点,根据节点号,分配消息队列并初始化 used_f lag 为 O ;
步骤C:初始化发送消息队列,对于每一个虚拟节点,根据节点号,分配消息队列并初始化 used_f lag 为 O ;
步骤D:启动消息处理进程,等待从虚拟节点发送消息队列接收并处理其发送来的消息,从发送消息队列收到消息后,生成相应的响应消息发送至对应虚拟节点接收消息队列。对于所述步骤D的处理进程,包括以下步骤:
步骤Dl:数据接收处理进程启动;
步骤D2:等待信号量,获取信号量后,遍历各虚拟节点发送消息队列;
步骤D3:消息队列不为空,进入步骤D4;否则,若未遍历完,回到步骤D2,若遍历完,进入步骤D16 ;
步骤D4:从虚拟节点发送消息队列接收消息;
步骤D5:若接收成功,进入步骤D6,否则回到步骤D2 ;
步骤D6:解析消息头,根据消息类型(MSG_TYPE)判断消息是控制消息还是数据消息,若是控制消息,进入步骤D7,否则进入步骤Dll ;
步骤D7:开始处理控制消息;
步骤D8:根据消息队列号获取消息来源节点;
步骤D9:将虚拟节点发送的控制消息MACPDU.req进行分析处理,转换生成MACPDU.1nd消息;
步骤D10:根据消息来源节点号和拓扑场景定义,确定消息需要转发的邻居节点,发送生成的MACPDU.1nd消息至对应的邻居虚拟节点接收消息队列,进入步骤D15 ;
步骤Dll:开始处理数据消息;
步骤D12:根据消息队列号获取消息来源节点;
步骤D13:将虚拟节点发送的数据消息MACPDU.req进行分析处理,转换生成MACPDU.1nd消息;
步骤D14:根据消息目的节点号,查看本地路由表,根据路由表决定消息的下一跳节点,发送生成的MACPDU.1nd消息至对应的下一跳虚拟节点接收消息队列,进入步骤D15 ;步骤D15:处理完毕,释放对应虚拟节点发送消息队列中刚刚处理的消息所占内存,清空此队列,回到步骤D2 ;
步骤D16:如果队列已遍历完,进入事件等待,等待新的消息到来,如果事件阻塞被触发,回到步骤D2重新遍历发送消息队列。对于所述的步骤D9或D13中接收消息过程,包括以下步骤:
步骤D91:准备解析转换rou.req消息;
步骤D92:获取PUD.req中PDU的数量;
步骤D93:获取PDU.req中PDU总大小;
步骤D94:根据PDU总大小及PDU数量,以及物理消息头、PDU.1nd头和H)U.1nd子头,计算需要生成的F1DU.1nd大小;
步骤D95:分配内存给H)U.1nd,准备填充;
步骤D96:填充物理头,包括配置ID (config_id)、物理ID (phy_id)、消息类型(msg_type)、消息长度(msg_len)信息;
步骤D97:填充PDU.1nd头,包括 错误码(err_code)和巾贞号(frame_num)、突发号(burst_num)、区域号(zone_num)、PDU数量(pdu_num)以及信道状况信息;
步骤D98:判断PDU是否填充完毕,若是,进入步骤D911,否则进入步骤D99 ;
步骤D99:填充PDU.1nd子头;步骤D910:从PDU.req中拷贝PDU到PDU.1nd中,然后回到步骤D98 ;
步骤D911:返回PDU.1nd消息;
步骤D912:消息分析转换结束。对于所述的步骤DlO或D14中接收消息过程,包括以下步骤:
步骤DlOl:准备开始发送消息处理;
步骤 D102:生成 MagqNode ;
步骤D103:将MagqNode的msg域指向步骤D911生成的PDU.1nd ;
步骤D104:将MagqNode加入对应虚拟节点的接收消息队列供虚拟节点读取使用; 步骤D105:发送消息结束。本发明的有益技术效果是:可实现单机平台上的多点通信模拟,也可实现多平台多点模拟,可在脱离物理层平台情况下对协议栈功能和性能进行大规模组网验证,从而降低开发成本,提高产品开发效率。


图1是实际MESH节点协议栈与模拟系统对比图。图2是虚拟 节点与模拟系统交互及模拟系统的处理流程图。图3是模拟系统初始化过程图。图4是模拟系统接收虚拟节点消息并做处理转换的过程图。图5是模拟系统对消息的转换流程图。图6是模拟系统发送消息给虚拟节点的过程图。图7是某种拓扑下模拟系统转发虚拟节点信息的过程。图8是某种拓扑下路由控制消息转发过程。
具体实施例方式为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本发明的一种MESH协议栈的PHY层和信道空间的模拟系统及方法进行详细说明。请参照图1,图1 (a)为实际节点协议栈结构,图1 (b)为模拟系统下节点协议栈结构,模拟系统主要模拟PHY层功能,以及将虚拟节点在信道空间形成某种预定的拓扑。模拟系统与协议栈上层的MAC交互,完成虚拟节点之间的信息交流。请参照图2,此图描述了虚拟节点与模拟系统的交互以及模拟系统对消息的处理流程。虚拟节点通过发送消息队列和接收消息队列模拟数据发送和接收,模拟系统通过读取对应虚拟节点的发送消息队列取得虚拟节点的MACPDU.req消息,再依据PHY对MAC的响应生成MACPDU.1nd消息,并根据MACPDU.req消息的内容、拓扑设定或路由信息,将此MACPDU.1nd消息放入对应虚拟节点的接收消息队列。通过这些操作,虚拟节点之间就可以像真实节点一样组成拓扑并交互信息,形成MESH网络。步骤S2.0:初始化模拟系统,等待和虚拟节点交互;
步骤S2.1:虚拟节点生成MACPDU.req发送至对应的发送消息队列;
步骤S2.2:物理层通道模拟系统接收MACPDU.req消息;步骤S2.3:物理层通道模拟系统对接收到的消息进行处理;
步骤S2.4:物理层通道模拟系统根据MACPDU.req的分析处理生成H)U.1nd消息,并根据消息内容判断此消息该转发给哪个虚拟节点;
步骤S2.5:对MACPDU.1nd消息做干扰处理并根据拓扑转发;
步骤S2.6:物理层通道模拟系统将MACPDU.1nd消息放入接收消息队列,供虚拟节点获
取;
步骤S2.7:虚拟节点从接收消息队列读取MACPDU.1nd消息,完成虚拟节点和模拟系统的交互。请参照图3,此为本发明的MESH协议栈的PHY层和信道空间的模拟系统及方法的模拟系统初始化过程图。包括以下步骤:
步骤S3.1:模拟系统启动,读取拓扑定义配置文件,设置虚拟节点拓扑规则,准备后续解析消息和转发消息;
步骤S3.2:初始化接收消息队列,对于每一个虚拟节点,根据节点号,分配消息队列并初始化used_f lag为O ;
步骤S3.3:初始化发送消息队列,对于每一个虚拟节点,根据节点号,分配消息队列并初始化used_f lag为O ;
步骤S3.4:启动处理进程,等待从虚拟节点发送消息队列接收发送来的消息并处理,生成响应消息发送至对应目标虚拟节点的接收消息队列。
·
请参照图4,本图描述了模拟系统接收虚拟节点发送的消息并做处理转换的过程,包括以下步骤:
步骤S4.1:数据接收处理开始;
步骤S4.2:等待信号量,此信号量通过中断模拟定时器产生,用于模拟物理层中断,虚拟节点获得该中断后,将数据发送到发送队列;物理层模拟系统获得该中断后,进入下一
ι K
少;
步骤S4.3:遍历各虚拟节点发送消息队列,若未遍历完,进入步骤S4.4,否则回到步骤S4.2 ;
步骤S4.4:从虚拟节点发送消息队列接收消息;
步骤S4.5:若接收成功,进入步骤S4.6,否则回到步骤S4.3 ;
步骤S4.6:判断消息是控制消息还是数据消息,若是控制消息,进入步骤S4.7,否则进入步骤S4.11 ;
步骤S4.7:开始处理控制消息;
步骤S4.8:根据消息队列号获取消息来源节点;
步骤S4.9:将虚拟节点发送的控制消息MACPDU.req进行分析处理,转换生成MACPDU.1nd消息;
步骤S4.10:根据消息来源节点号和拓扑定义,发送生成的MACPDU.1nd消息至对应目标虚拟节点接收消息队列,进入步骤S4.16 ;
步骤S4.11:开始处理数据消息;
步骤S4.12:根据消息队列号获取消息来源节点;
步骤S4.13:将虚拟节点发送的数据消息MACPDU.req进行分析处理,转换生成MACPDU.ind消息;
步骤S4.14:根据消息来源节点号和消息头获取目标节点,通过路由查询获得下一跳地址,成功进入步骤S4.15,否则转到步骤S4.16 ;
步骤S4.15:发送生成的MACPDU.1nd消息至对应的下一跳节点接收消息队列,进入步骤 S4.16 ;
步骤S4.16:处理完毕,释放对应虚拟节点发送消息队列中刚刚处理的消息所占内存,清空此队列;回到步骤S4.2继续遍历其他虚拟节点的发送消息队列。请参照图5,此图详细描述了模拟系统对消息的转换流程即图4中步骤S4.9或步骤S4.13,包括以下步骤:
步骤S5.1:准备解析转换MACPDU.req消息;
步骤S5.2:获取MACPUD.req中PDU的数量;
步骤S5.3:获取MACPDU.req中PDU总大小;
步骤S5.4:根据PDU总大小及PDU数量,以及物理消息头、MACPDU.1nd头和MACPDU.1nd子头,计算需要生成的MACPDU.1nd大小;
步骤S5.5:分配内存给MACPDU.1nd,准备填充;
步骤S5.6:填充物理头,包括配置ID config_id、物理ID phy_id、消息类型msg_type、消息长度msg_len信息;
步骤S5.7:填充MACPDU.1nd头,包括错误码err_code和巾贞号frame_num、突发号burst_num、区域号 zo ne_num、PDU 数量 pdu_num 以及 rss1、cinr、snr 信息;
步骤S5.8:判断MACPDU是否填充完毕,若是,进入步骤S5.11,否则进入步骤S5.9 ; 步骤S5.9:填充MACPDU.1nd子头;
步骤S5.10:从MACPDU.req中拷贝PDU到MACPDU.1nd中,然后回到步骤S5.8 ;
步骤S5.11:返回MACPDU.1nd消息;
步骤S5.12:消息分析转换结束。请参考图6:此图描述了模拟系统转换完消息之后发送消息给虚拟节点的过程,即图4中步骤S4.10和步骤S4.14,包括以下步骤:
步骤S6.1:准备开始发送消息处理;
步骤 S6.2:生成 MagqNode ;
步骤S6.3:将MagqNode的msg域指向步骤S5.11生成的MACPDU.1nd ;
步骤S6.4:将MagqNode加入对应虚拟节点的接收消息队列供虚拟节点读取使用; 步骤S6.5:发送消息结束。参照图7,对于图7 (a)所示拓扑,若虚拟节点A要向虚拟节点C通信,数据消息在模拟系统的流动过程如图7 (b):
步骤S7.1:虚拟节点A根据本地路由信息获得下一跳节点为B,则将目标节点C和下一跳节点B的信息封装在路由头部;
步骤S7.2:将带有路由头的数据信息发往模拟系统;
步骤S7.3:模拟系统根据路由头部解析,获得到达节点C的下一跳路由为节点B,则转发此信息给虚拟节点B ;
步骤S7.4:虚拟节点B收到后分析信息,更新路由信息,并将此消息再次发往模拟系统,模拟系统根据消息头部解析,转发此信息给虚拟节点C ;
步骤S7.5:虚拟节点C接收到信息后,如果需要回复信息给源节点A,则其生成回复消息并发送至模拟系统;模拟系统消息处理过程与源节点A发送数据到C的过程相同;数据流从 C->B->A。对于控制消息,模拟系统根据拓扑场景定义转发,根据该控制消息转发的需要,将其转发给一个、多个或全部一跳邻居节点。参照图8,例如,在图8 (a)所示拓扑下,虚拟节点C要全网广播一条路由消息,处理步骤如图8 (b)所示。步骤S8.1:虚拟节点C将路由信息发送到物理层模拟系统中本节点对应的发送消息队列;
步骤S8.2:物理层模拟系统接收到该消息;
步骤S8.3:物理层模拟系统根据拓扑场景定义,该路由信息转发给节点C的一跳邻居B和D ;
步骤S8.4:虚拟节点B和虚拟节点D收到此消息后,根据路由消息处理规程,决定是否继续转发该消息,如需转发,则进入步骤S8.5,否则进入步骤S8.6 ;
步骤S8.5:模拟系统收到B转发的路由消息后,根据拓扑定义将此消息转发给节点B的一跳邻居A、C、D ;同样,模拟系统收到D转发的路由消息后,根据拓扑定义将此信息转发给虚拟节点B、C。直至扩展到全网;
步骤S8.6:路由控制消息发送结束。需要指出的是,MAC层必须能够将重复收到的信息过滤,以避免消息在网络内泛洪。根据网络层次划分,该功能不在物理层模拟系统中实现。
权利要求
1.一种用于网络协议栈测试的物理层通道模拟方法,其特征在于,通过软件形式实现对物理层通道的模拟,对缺少可用物理层硬件平台或需要大规模组网测试的软件协议栈,本模拟系统能够与多个虚拟节点进行消息交互,实现虚拟节点间的通信模拟,检验软件协议栈功能; 所述虚拟节点,包括媒体接入控制层及路由子系统,媒体接入控制层和路由子系统;既可在单机上模拟出多个虚拟节点,也可在多机多平台上模拟多个虚拟节点; 所述物理层模拟系统,包括网络拓扑场景设置、数据收发通道、中断模拟和消息解析转发四部分;虚拟节点产生媒体接入和路由控制消息,发送到模拟物理层通道系统后,模拟物理层通道系统完成消息解析,根据拓扑场景设置完成数据转发,从而达到和其他虚拟节点交互控制消息的目的;数据消息通过虚拟节点到达模拟物理层系统后,模拟物理层系统通过消息解析转换及路由信息确定消息流向,并转发到对应虚拟节点的接收通道,从而完成虚拟节点间的数据通信。
2.根据权利要求1所述物理层通道模拟,其特征在于,物理层通道模拟系统可以模拟不同拓扑场景下的通信,网络场景设置通过读取参数表的形式完成,参数表描述网络规模和拓扑定义,拓扑定义用于约束虚拟节点之间直接通信的范围,决定转发器对控制消息的转发行为;物理层通道模拟系统初始化时,首先读取该参数表,获得整个网络的拓扑设置。
3.根据权利要求1所述物理层通道模拟,其特征在于,物理层通道模拟系统通过一系列消息队列实现数据收发通道的模拟,物理层通道模拟系统维护MAX_NODE_NUM对发送消息队列和接收消息队列,系统为每一个加载的虚拟节点维护一个“下行发送”和“上行接收”消息队列,MAX_NODE_NUM为网络最大节点数,根据网络规模设置指定。
4.根据权利要求1所述虚拟节点,其特征在于,实际的物理层平台能够产生中断,节点可根据物理层中断完成数据收发,对于物理层通道模拟系统,物理层中断通过定时器模拟实现,将定时器超时时长设置为系统帧长,定时器超时即产生中断信号,虚拟节点根据该中断信号进行数据收发,定时器在产生中断信号后立即重置,以模拟下一中断。
5.根据权利要求1所述的物理层通道模拟系统消息解析转发功能,其特征在于,系统周期性的从消息队列中读取数据消息,并对消息进行解析处理,如果消息需要转发,则根据协议要求,将虚拟节点发送的PDU发送请求MACPDU.req原语转换为PDU指示MACPDU.1nd原语应答消息,并在所定义的拓扑约束下,通过控制转发器发送给对应的虚拟节点。
6.权利要求1所述物理层通道模拟方法,其工作流程如下: 步骤A:模拟系统启动,读取拓扑定义配置文件,据配置文件构建网络拓扑信息表; 步骤B:初始化接收和发送消息队列,对于每一个虚拟节点,根据节点号,分配发送和接收消息队列并初始化; 步骤C:启动消息处理转发进程,轮询虚拟节点发送消息队列,如果所有发送消息队列为空,则进入事件等待状态,等待发送队列不为空或中断到来,以再次启动轮询过程,如果发送消息队列不为空,处理该发送消息队列中的消息,并生成响应消息,如果是控制消息,根据拓扑结构发送到对应虚拟节点的接收消息队列;如果是数据消息,根据路由查找下一跳,并发送至对应下一跳虚拟节点的接收消息队列。
7.对于权利要求6所述步骤C的处理进程,其特征在于,包括以下步骤: 步骤Cl:等待接收模拟中断的信号量;步骤C2:收到模拟中断的信号量; 步骤C3:遍历各虚拟节点发送消息队列; 步骤C4:发送消息队列不为空,进入步骤C5 ;否则,若未遍历完,进入步骤C3,如队列已遍历完,回到步骤Cl ; 步骤C5:判断消息是控制消息还是数据消息,若是控制消息,进入步骤C6,否则进入步骤C9 ; 步骤C6:根据消息队列号获取消息来源节点; 步骤C7:将虚拟节点发送的控制消息MACPDU.req进行分析处理,转换生成MACPDU.1nd消息; 步骤CS:根据消息来源节点号和拓扑信息,将生成的MACPDU.1nd消息发送至对应的虚拟节点接收消息队列,进入步骤C13 ; 步骤C9:根据消息队列号获取消息来源节点; 步骤ClO:将虚拟节点发送的数据消息MACPDU.req进行分析处理,转换生成MACPDU.1nd消息; 步骤Cll:根据消息来源节点号和目的节点号,查看路由信息,找到对应的下一跳节点,发送生成的MACPDU.1nd消息至对应的下一跳虚拟节点接收消息队列,进入步骤C12 ;步骤C12:释放刚刚处理的消息所占内存,清空此队列;回到步骤C3。
8.对于权利要求7所述的步骤C7或ClO中消息转换过程,包括以下步骤: 步骤C71:解析MACPDU.req消息头部; 步骤C72:获取PUD.req中PDU的数量; 步骤C73:获取MACPDU.req中PDU总大小; 步骤C74:根据MACPDU总大小及MACPDU数量,以及物理消息头、MACPDU.1nd头和MACPDU.1nd子头,计算需要生成的MACPDU.1nd的大小; 步骤C75:分配内存给MACPDU.1ndication,准备填充; 步骤C76:填充物理头,包括配置ID config_id、物理ID phy_id、消息类型msg_type、消息长度msg_len ; 步骤C77:填充MACPDU.1nd头,包括错误码err_code、巾贞号frame_num、突发号burst_num、区域号zone_num、PDU数量pdu_num以及信道状态信息; 步骤C78:判断MACPDU是否填充完毕,若是,进入步骤C711,否则进入步骤C79 ; 步骤C79:填充MACPDU.1nd子头,包括偏移量pdu_offset、子pdu长度sub_pdu_len、pdu 指不 pdu_f lag ; 步骤C710:从MACPDU.req中拷贝PDU到MACPDU.1nd中,然后回到步骤C78 ; 步骤C711:返回MACPDU.1nd消息; 步骤C712:消息转换结束。
9.对于权利要求7所述的步骤CS或Cll中消息转发过程,包括以下步骤: 步骤C81:生成消息节点MagqNode ; 步骤C82:将MagqNode的消息指针域指向步骤C711生成的MACPDU.1nd ; 步骤C83:查找该MACPDU.1nd消息发送的目标节点; 步骤C84:将Mag qNode放入对应虚拟节点的接收消息队列,等待该虚拟节点读取;步骤C85: 消息转发过程结束。
全文摘要
本发明属于移动通信技术领域,尤其涉及一种用于网络协议栈测试的物理层通道模拟方法。通过建立多对收发消息队列、模拟系统中断、模拟MAC与PHY间接口和消息转换机制,可在脱离实际应用的PHY层软件实体时,支持多个对等软件协议栈同时运行,并实现多个虚拟节点的空间拓扑分布。通过模拟物理层对上层软件协议栈消息的响应实现虚拟节点间信息的转发,完成虚拟节点间信息的交互,可对协议栈的性能评价和功能调整提供参考依据。本发明的有益技术效果是可实现单机平台上的多点通信模拟,也可实现多平台多点模拟,可在脱离物理层平台情况下对协议栈功能和性能进行大规模组网验证,从而降低开发成本,提高产品开发效率。
文档编号H04W24/06GK103237321SQ20131016664
公开日2013年8月7日 申请日期2013年5月8日 优先权日2013年5月8日
发明者周继华, 赵涛, 宋莉, 黄华, 于进强 申请人:重庆金美通信有限责任公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1