
qualnet开发
文章平均质量分 80
详细记录开发过程中的学习心得,半学半用,不成体系。
zhang1806618
小白上线
展开
-
EXata代码移植糗事之动态数组初始化
先说点题外话。把代码从QualNet移植到EXata的过程中,需要逐个函数、逐个数据结构的核对,因为两个软件有些位置会有细微的差别。如获取节点的网络层数据,在QualNet中是:NetworkDataIp* ip = node->networkData.networkVar; 在EXata中是:NetworkDataIp* ip = node->m_networkData->get_networkVar(); 因为在Node数据结构中,EXata把网络层数据m_n.原创 2021-03-25 20:30:40 · 419 阅读 · 0 评论 -
EXata自定义应用层协议
一、新建协议库1.新建头文件和源文件app_myprotocol.h和源文件app_myprotocol.cpp,新协议命名"myprotocol",在头文件中声明并在源文件中写出空函数初始化函数AppMyprotocol_Init()、事件处理函数AppMyprotocol_Layer()、定型函数AppMyprotocol_Finalize。2.将协议包括在应用层协议和跟踪协议列表中,在application.h的enum AppType中倒数第二个位置添加新协议名称“APP_MYPROTOCO原创 2021-03-18 15:31:49 · 1084 阅读 · 0 评论 -
EXata仿真(emulation)模式配置
在场景设计模式,可以在GUI中选择exata运行模式是simulation(模拟)还是emulation(仿真)。本文介绍emulation模式下的配置。一、外部节点映射外部节点映射,是在EXata某个节点上的网络接口与外部物理操作节点之间创建一个映射。映射到操作主机的EXata节点称为外部节点。来自操作主机的任何流量都被插入EXata外部节点,同样,在EXata外部节点接收到的任何流量都被转发到操作主机。外部节点映射可以使用连接管理器创建(参见博文https://blog.youkuaiyun.com/zha原创 2021-03-17 21:37:49 · 4373 阅读 · 3 评论 -
EXata通过连接管理器实现半实物仿真
若要连接循环中的硬件(hardware-in-the-loop)并在仿真节点上运行应用程序,包括基于互联网的应用程序和SNMP管理器,就需要将操作主机与仿真服务器上运行的EXata连接起来。本节介绍使用连接管理器在操作主机和仿真服务器之间建立这种连接所涉及的步骤。连接管理器应用程序在操作主机上运行,并负责管理操作主机的网络配置,是客户端;仿真服务器指运行EXata仿真的主机,是服务端。连接管理器用于建立操作主机和仿真服务器之间的连接。建立连接时,注意:连接管理器必须从根用户中运行,连接管理器将显示仿真网络节原创 2021-03-17 19:50:38 · 1527 阅读 · 4 评论 -
EXata编译出现fatal error C1001: 编译器中发生内部错误
根据上篇博客https://blog.youkuaiyun.com/zhang1806618/article/details/114890061?spm=1001.2014.3001.5501的步骤,不更改任何代码,试编译一次,结果出现多个错误。都是fatal error C1001: 编译器中发生内部错误,且都指向同一个位置:propagation_qualnet.h的第146行。class PropProfile_qualnet {public: ... D_Float64 propM原创 2021-03-17 17:34:58 · 412 阅读 · 0 评论 -
exata的特性与结构
EXata是一个网络仿真器,可以比其他模拟器更快、更真实地评估移动通信网络。它使用一个软件虚拟网络(SVN)来数字地表示整个网络、各种协议层、天线和设备。EXata可以在一个或多个协议层上与真实的无线电和设备互操作,以提供环路中的硬件(hardware-in-the-loop)功能。EXata还可以连接到具有真实应用程序的系统,这些应用程序可以在SVN上运行,就像它们可以在真实网络上运行一样。一、仿真与模拟(Emulation and Simulation)网络仿真器(emulator)模仿真实网络原创 2021-03-16 21:01:31 · 3103 阅读 · 2 评论 -
在Windows上编译EXata
重新编译EXata需要C/C编译器和一些第三方实用程序(包括CMake)和库(1)编译EXata6.2的C++编译器为vs2013(vc12)。(2)第三方工具和库:见https://blog.youkuaiyun.com/zhang1806618/article/details/114887026?spm=1001.2014.3001.5501一、编译EXata本节介绍如何使用Microsoft Visual Studio 2013编译EXata。(1)使用CMake生成Visual Studio原创 2021-03-16 17:55:33 · 1932 阅读 · 6 评论 -
由QualNet转战exata
因为要在仿真中添加实际网络设备,qualnet已不适用,需转战exata。两个产品是同一家公司的,可以理解为exata是高级型号。本人获取到的文件有:(1)安装包exata-6.2-windows-installer-64bit.exe;(2)源码包exata-6.2-source.zip;(3)证书文件exata-6.2-crk.zip;(4)第三方软件anchorage-windows.zip;使用步骤:(1)安装exata-6.2;(2)拷贝证书文件至指定位置;(3原创 2021-03-16 16:44:36 · 1927 阅读 · 3 评论 -
QualNet移植Exata的DOS攻击代码
D:\3网络评估项目\exata-7.0-source\libraries\cyber\advanced\srcvoidAPP_InitializeDosApplication( Node* firstNode, const char* cyberInput){ char appStr[MAX_STRING_LENGTH]; Node* node; IdToNodePtrMap* nodeHash; int numValues;.原创 2021-03-11 15:06:29 · 329 阅读 · 0 评论 -
QualNet路由协议配置
在场景.config文件中,有多处显示ROUTING-PROTOCOL字样。在可视化配置中,也有多处可以设置路由协议。到底哪个配置起作用,只能在代码中才能见分晓。一、路由协议显示位置在场景.config文件中有四处显示ROUTING-PROTOCOL位置1位置2位置3位置4二、路由协议设置位置1.Nodes/Groups->Node Configuration->Routing Protocol2.Nodes/Interfaces->原创 2021-03-05 12:39:45 · 616 阅读 · 3 评论 -
添加MAC帧首部的过程
因为要用到MAC帧首部,细细研究了仿真中帧首部的添加及使用环节。只写出结果,找到这个结果耗费了很长时间,过程就不写了。一、添加环节1.https://blog.youkuaiyun.com/zhang1806618/article/details/107753611中写到了调用QueueUpIpFragmentForMacLayer发送数据。在该函数中调用NetworkIpOutputQueueInsert()函数,将一个消息插入输出队列,然后调用MAC_NetworkLayerHasPacketToSend.原创 2021-02-24 20:54:03 · 875 阅读 · 0 评论 -
QualNet自定义移动模型
上一篇博客https://blog.youkuaiyun.com/zhang1806618/article/details/108033074已经就节点放置与移动模型进行了介绍。因为项目需要,qualnet自带模型并不能很好的实现目的,此篇博客将进一步研究移动模型的完整运行过程。一、节点放置与移动模型简要回顾1.MOBILITY_AllocateNodePositions()------>MOBILITY_PreInitialize(),初始化NodePositions和MobilityData数据结构。原创 2021-02-13 14:01:26 · 343 阅读 · 1 评论 -
QualNet编译
近三四个月都是用命令行形式调用QualNet,今天想看看节点的运动轨迹,打开GUI形式居然运行报错。一个莫名其妙的错误!!!网上的QualNet内容很少,搜不到原因。我以为是我自己动了什么源码的缘故,备份改动的源码后,重装了QualNet,再运行居然还是报错。没办法,只好按照记忆中的各种设置场景,一一试验。终于找到了原因:点击下图运行设置,进入下一图可以看到本地运行和远程运行设置。不知何故,我的运行设置是选择了远程运行,改回本地运行就不报错。因为重装了软件,我都忘了该怎么进入编译环境了。原创 2021-02-06 20:59:33 · 853 阅读 · 0 评论 -
QualNet外部接口
当需要QualNet与外部程序通信时,可以使用外部接口。QualNet自带的GUI接口用于可视化仿真,SOCKET接口用于传输数据,还提供了interfacetutorial接口演示接口的设计与实现。1 接口注册1.1 注册函数~/main/external.cpp中定义函数EXTERNAL_UserFunctionRegistration,由内核在仿真开始时调用。此函数用于注册外部接口(通过调用EXTERNAL_RegisterExternalInterface函数)和由接口实现的回调函数(.原创 2020-11-17 10:38:40 · 646 阅读 · 0 评论 -
QualNet常用函数
1. mapping.h中关于节点指针、节点ID、节点接口地址的转换。每个节点有一个指针、一个ID,多个接口索引及多个接口地址。1.1 已知节点指针和节点接口地址,获取节点IDNodeAddressMAPPING_GetNodeIdFromInterfaceAddress( Node *node, NodeAddress interfaceAddress);NodeAddressMAPPING_GetNodeIdFromInterfaceAddress( Node原创 2020-10-23 17:06:46 · 375 阅读 · 1 评论 -
节点协议栈初始化概述
PARTITION_InitializeNodes:1.NETWORK_PreInit-->NetworkIpPreInit(网络层预先初始化)//初始化数据结构ip = (NetworkDataIp *) MEM_malloc(sizeof(NetworkDataIp));memset(ip, 0, sizeof(NetworkDataIp));node->networkData.networkVar = ip;//初始化转发表、多播转发表NetworkInitForwa原创 2020-10-15 17:19:45 · 293 阅读 · 0 评论 -
QualNet节点放置与移动
1 初始化节点位置struct NodePositions { NodeAddress nodeId; int partitionId; NodePlacementType nodePlacementType; MobilityData* mobilityData;};节点位置数据结构包含节点id、节点所在分区id、节点放置类型、节点移动数据。在main函数中调用MOBILITY_AllocateNodePosit.原创 2020-08-17 00:20:26 · 687 阅读 · 0 评论 -
QualNet收发包过程分析(五)
接上文https://blog.youkuaiyun.com/zhang1806618/article/details/1078567362.3 网络层NETWORK_ReceivePacketFromMacLayer函数区分网络层协议调用相应协议处理。对IPv4协议,调用NetworkIpReceivePacketFromMacLayer()函数,该函数又直接调用NetworkIpReceivePacket()函数。在NetworkIpReceivePacket()函数中,判断是否是发送给本节点的包,如果不是原创 2020-08-07 15:15:05 · 345 阅读 · 0 评论 -
QualNet收发包过程分析(四)
2. 接收端2.1 物理层发送断物理层有两个信号,一个是开始发送,一个是结束发送,两个信号成对出现,表示一个数据帧发送完成。接收端类似,一个开始接收,一个结束接收,两个信号成对出现,表示一个数据帧接收完成。在物理层分别由两个函数处理信号,PHY_SignalArrivalFromChannel()和PHY_SignalEndFromChannel()。前一个函数判断物理层当前状态,空闲或侦听中,则锁定信号,更改状态为接收中,开始接收;若当前状态为接收中,则丢弃准备接收的信号。第二个函数结束接收,将接原创 2020-08-07 14:16:20 · 494 阅读 · 0 评论 -
QualNet发包过程简要回顾
前几篇文章已经将发包过程进行了详细解读,此处进行概要回顾,浓缩都是精华。1.应用层APP_UdpSendNewHeaderData()函数分配消息,添加应用层数据、应用层首部(另有不添加应用层首部的接口函数如APP_UdpSendNewData),添加辅助信息AppToUdpSend,调度传输层UDP协议事件MSG_TRANSPORT_FromAppSend。msg = MESSAGE_Alloc( node, TRANSPORT_LAY原创 2020-08-04 12:53:57 · 362 阅读 · 0 评论 -
QualNet收发包过程分析(三)
接上文https://blog.youkuaiyun.com/zhang1806618/article/details/107753611MacDot11StationTransmitFrame()函数区分链路当前状态,或调用MacDot11StationTransmitDataFrame()发送数据帧,或调用MacDot11StationTransmitRTSFrame()发送RTS帧。以发送数据帧为例,由目的地址判断是广播还是单播,广播将不使用RTS-CTS机制,更改链路状态后调用MacDot11Station原创 2020-08-04 12:08:54 · 465 阅读 · 0 评论 -
QualNet收发包过程分析(二)
接上文:https://blog.youkuaiyun.com/zhang1806618/article/details/1072685981.3 网络层(续)在RoutePacketAndSendToMac函数对单播、广播、组播进行了分别处理。上文分析以单播为例,通过获取单播路由,然后调用NetworkIpSendPacketToMacLayer函数,再调用NetworkIpSendPacketOnInterface函数发送数据包。而广播、组播是直接调用NetworkIpSendPacketOnInterfa原创 2020-08-03 00:11:06 · 661 阅读 · 0 评论 -
QualNet6.1调用python
QualNet6.1在windows环境下,只能使用vs2008或vs2010编译。vs2008版本太低,与python联合编程缺少几个关键的头文件(排坑见https://blog.youkuaiyun.com/zhang1806618/article/details/104559414),只能用vs2010。以下为本人开发QualNet在线机器学习算法时所遇到的问题及解决办法,供参考。一、新建项目打开vs2010,新建->从现有代码创建项目,选择QualNet所在目录。报错1:未能正确加载“VSTS原创 2020-07-14 22:21:17 · 548 阅读 · 1 评论 -
QualNet收发包过程分析(一)
因项目需要,对QualNet仿真中节点间收发包行为进行了仔细研究,并不断添加一些输出以验证思路。应该说,大致是正确的,可能有些细节研究还不够透彻。对一般的应用协议开发已经够用了,如果想制作一个完整的组件添加进去,还需进一步深入。以下以发送端节点向接收端节点发送应用层消息为例,介绍QualNet收发包过程。1. 发送端1.1 应用层创建传输层UDP协议消息MSG_TRANSPORT_FromAppSend,添加了信息字段AppToUdpSend,发送(即调度传输层处理该消息)。函数见~/mai原创 2020-07-10 23:32:56 · 972 阅读 · 0 评论 -
QualNet事件和消息
本篇描述QualNet中离散事件仿真的实现细节:事件类型、实现事件的数据结构和类以及用于事件操作的API函数。1. 事件和消息在QualNet中,用于表示事件的类称为消息。消息保存有关事件的信息,例如事件的类型和相关的数据。在QualNet的文本中,术语事件和消息经常被交替使用。QualNet中有两种类型的事件:数据包事件和定时器事件。数据包事件被用来仿真层间或节点之间数据包的交换,也用于对同一层不同实体之间的通信进行建模。定时器事件用于发起或取消某项工作,使整个过程在时间线上完美呈现。在本节...原创 2020-07-10 21:10:26 · 847 阅读 · 0 评论 -
Qualnet完整初始化过程
Qualnet的GUI运行很简单,新建打开已有场景,添加节点,设置各层协议参数,保存运行即可。如果只是用作仿真工具,这样就足够了,但若想自己开发一个协议,或者想深入了解Qualnet底层是如何运行的,那就一定要研究源代码。以下是我在开发过程中,遇到困惑时,耐下心来一步一步学习的结果。在现在看来,这些东西好像很简单,顺理成章,但学习的过程还是很费时费脑的。我是从自己开发用到的几个常用函数,往回倒推,看哪个函数调用它,那个函数还有什么其他作用,找出整个运行过程的。我在此介绍的主要是与我的研究相关的内容,没有将所原创 2020-07-09 16:59:22 · 1224 阅读 · 0 评论 -
QualNet统计信息
一、统计信息概述在仿真结束时,QualNet生成一个统计文件,其中包含用于分析协议行为、网络性能等的信息。统计文件是一个纯文本文件,可以使用任何文本编辑器打开,也可以用QualNet分析器图形化地查看。通常,仿真按配置的仿真时间(参数SIMULATION-TIME)运行。同时也可以在配置的仿真时间之前终止(例如通过键入Ctrl+C)。两种情况都会生成统计文件。统计文件的前两行表示配置的仿真...原创 2020-03-31 20:47:59 · 582 阅读 · 2 评论 -
QualNet仿真实现
目录一、协议栈二、离散事件仿真三、QualNet协议模型四、QualNet仿真器架构(一)初始化的层次结构(二)事件调度层次结构(三)终结的层次结构本文简要介绍QualNet仿真器的实现机制。一、协议栈QualNet使用与TCP/IP网络协议栈类似的分层体系结构。在该体系结构中,数据在相邻层之间移动。QualNet的协议栈自上而下为应用层、传输层...原创 2020-03-31 18:09:53 · 2099 阅读 · 1 评论 -
QualNet外部接口调试
QualNet-6.1-Programmer'sGuide文档中第6章节讲述了外部接口的使用。在根据教程说明测试时,出现很多问题,为更好地了解外部接口的工作过程及使用方法,特意对相关源码进行了研究。现将研究成果及问题排查过程整理如下。一、外部接口API外部接口API允许QualNet与其他程序或物理设备等外部实体交互。图1说明了接口开发人员的职责以及外部接口API如何与QualNet一起运...原创 2020-03-16 20:20:17 · 1195 阅读 · 0 评论 -
QualNet简介
QualNet简介QualNet是美国SNT(Scalable Network Technologies)公司开发的网络仿真系统,采用并行设计,可以仿真上千个节点的大型无线网络,仿真速度比传统仿真软件快百倍;采用模块化架构,可扩展性强,可以很方便的屏蔽、增加、删除某些协议模块;支持与真实网络中的人、设备、软件进行实时通信(将真实网络通过软件转变成数字化的模型),其仿真精度几乎与真实网络媲美。原创 2020-03-14 15:42:55 · 5234 阅读 · 4 评论